LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogLmN2c2lnbm9yZSwgTWFrZWZpbGUuaW46CglDbGVhbiBhdXRvbTR0ZS5jYWNoZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnUmVzdG9yZXIucGwsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9SRUFETUUsIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9hZnRlci5yZWcsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9iZWZvcmUucmVnLCBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvb3JpZy5yZWcsCgkgIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5zcGVjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUNyZWF0ZWQgcmVnZWRpdCByZXBsYWNlbWVudC4gRml4ZWQgc29tZSBidWdzLgoKCSogcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9wcm9nbWFuL0NoYW5nZUxvZywKCSAgcHJvZ3JhbXMvcmVndGVzdC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLAoJICBwcm9ncmFtcy93aW5oZWxwL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2ludmVyL0NoYW5nZUxvZzoKCVJlbW92ZWQgY2hhbmdlbG9nIGVudHJpZXMgdGhhdCBhcmUgaW4gdGhlIG1haW4gY2hhbmdlbG9nLCBhbmQgYWRkZWQKCW5vdGljZSB0byBub3QgZWRpdCB0aGUgc2Vjb25kYXJ5IGNoYW5nZWxvZ3MgYW55bW9yZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCUNocmlzdG9waCBGcmljayA8ZnJpY2tAU0MtTmV0d29ya3MuZGU+CglSZXVzZSB2aXN1YWxzIHRvIGF2b2lkIE1BWF9QSVhFTEZPUk1BVFMgbGltaXQuCglBY3RpdmF0ZWQgdGhlIGNvZGUgdG8gc3VwcG9ydCB0aGUgc3RlbmNpbCBidWZmZXIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgaGFyZC1jb2RlZCBmb250IG5hbWUgYmluZGluZ3Mgb25seSB3aXRoIHRoZSBBTlNJX0NIQVJTRVQgKG5vbi1VUwoJY2hhcnNldHMgd2l0aCBubyBmb250IG5hbWUgc2hvdWxkbid0IGJlIGJvdW5kIHRvIFVTIGNoYXJzZXQpLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJldHVybiBlcnJvciBjb2RlcyBpbiBzb21lIDE2Yml0IG9sZSBzdHVicywgcmV0dXJuaW5nIHN1Y2Nlc3MgY2F1c2VzCgljcmFzaGVzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9vcHRpb25zLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBNYWtlZmlsZS5pbiwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglVcGRhdGVkIGNvbmZpZ3VyZSB0byB0YWtlIGFkdmFudGFnZSBvZiBuZXcgYXV0b2NvbmYgMi41MyBmZWF0dXJlcy4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2ludDEwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MjkuYywgaW5jbHVkZS9jb25zb2xlLmg6CglSZW1vdmVkIG9ic29sZXRlIGNvbnNvbGUgZHJpdmVyLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCB0ZXN0IGZvciBHZXRGdWxsUGF0aE5hbWVzQSwgR2V0TG9uZ1BhdGhOYW1lc0EsCglHZXRTaG9ydFBhdGhOYW1lc0EsIEdldEN1cnJlbnREaXJlY3RvcnlBLCBTZXRDdXJyZW50RGlyZWN0b3J5QS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNJQ19HZXRJY29uSW5kZXg6IHN0YXJ0IERQQV9TZWFyY2ggZnJvbSBpbmRleCAwLgoKCSogdW5pY29kZS93Y3RvbWIuYzoKCSd1c2VkJyBzaG91bGQgYmUgc2V0IGV2ZW4gaWYgd2UgYXJlIG9ubHkgY29tcHV0aW5nIHRoZSBuZWNlc3NhcnkKCWJ1ZmZlciBzaXplLgoKCSogZGxscy9jcnlwdDMyL21haW4uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNvbXBpbGUgZml4ZXMgZm9yIGdjYyAyLjcuMi4zLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgTFBTVFJfVEVYVENBTExCQUNLCgktIGZpeCBtYW55IG1lbW9yeS1tYW5hZ2VtZW50IGJ1Z3MKCS0gbWFueSBVbmljb2RlIGZpeGVzCgktIGZpeCBpbmRlbnRhdGlvbiBpbiBhIGZldyBwbGFjZXMKCS0gYml0cyBvZiBjb2RlIGNsZWFudXAKCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZWQgb2Jzb2xldGUgdGV4dCBtb2RlIGNvbG9yIGFuZCBhdHRyaWJ1dGUgY29kZS4KCU1hZGUgcm91dGluZXMgZm9yIHRleHQgbW9kZSBzY29sbGluZywgY2xlYXJpbmcgYW5kIGdldHRpbmcgY2hhcmFjdGVyCglhdCBjdXJzb3IgdXNlIFdpbmRvd3MgY29uc29sZSBhbmQgVkdBIGJ1ZmZlci4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUltcGxlbWVudGVkIFByaW50RGxnVyBhbmQgUGFnZVNldHVwRGxnVy4KCgkqIHNlcnZlci93aW5kb3cuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWdldF93aW5kb3dfY2hpbGRyZW46IG9ubHkgZGVjcmVtZW50IGF2YWlsYWJsZSBzaXplIGlmIGVsZW1lbnQgd2FzCgl3cml0dGVuLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTElTVFZJRVdfR2V0Q29sdW1uVDogY2FyZSBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nLgoJTElTVFZJRVdfQ3JlYXRlOiBzZW5kIEhETV9TRVRVTklDT0RFRk9STUFUIG1lc3NhZ2UuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNQ0lXbmRDcmVhdGVBOiBjaGVjayBmb3IgTlVMTCBmaWxlbmFtZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVJpenNhbnlpIFpzb2x0IDxyaXpzYW55aUBteXJlYWxib3guY29tPgoJU2VuZGluZyBFTl9VUERBVEUgbm90aWZpY2F0aW9uIGluIHRoZSBFRElUX1dNX1NldFRleHQgLSB0aGUgY29tbWVudAoJYWxyZWFkeSBzYXlzLCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlbnQsIGJ1dCBpdCBpcyBub3QuLi4KCjIwMDItMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBuZXcgY29uc29sZSBvbmx5IGlmIHRoZSBwcm9jZXNzIGlzIGEgY29uc29sZSBhcHBsaWNhdGlvbi4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcHJvYmxlbSB3aXRoIG1vdXNlIGN1cnNvcnMgaW4gV29yZC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBlcmFzZSBiYWNrZ3JvdW5kLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV2UgZG9uJ3QgaGFuZGxlIFNUUkVUQ0hfSEFMRlRPTkUgbW9kZSB5ZXQ7IG1ha2UgdGhpcyBkbyB0aGUgc2FtZSBhcwoJU1RSRVRDSF9ERUxFVEVTQ0FOUyBmb3Igbm93LgoKMjAwMi0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6CglOZWVkIHRvIGNoZWNrIGZvciBmb2N1cyBhbmQgY2FwdHVyZSBhbHNvIG9uIHRoZSBjaGlsZHJlbiBvZiB0aGUgd2luZG93CgliZWluZyBkaXNhYmxlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zaXN5cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwgZGxscy9tc2lzeXMvbXNpc3lzLmMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglDcmVhdGVkIGEgc3R1YmJlZCB2ZXJzaW9uIG9mIE1TSVNZUy5PQ1guCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVNvbWUgYWRkaXRpb25hbCB0cmFjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHdlIGNhbid0IGV4dHJhY3QgdGhlIGljb24sIGRlZmVyIGxpbmsgY3JlYXRpb24gdG8gcnVub25jZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCUZpeGVkIGNvbXBpbGUgd2hlbiBIQVZFX09QRU5HTCBpcyBub3QgZGVmaW5lZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDU19QQVJFTlREQyBzdHlsZS4KCgkqIGluY2x1ZGUvdXJsbW9uLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9jb21pbXBsLmMsCgkgIGRsbHMvdXJsbW9uL2NvbWltcGwuaCwgZGxscy91cmxtb24vbW9uaWtlci5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gZ2V0IHJpZCBvZiBwYXJlbnQgaGFuZGxlIGZyb20gaW5mbyBzdHJ1Y3QKCS0gc3RvcmUgaHduZCBpbiBpbmZvIHN0cnVjdCwgZG8gbm90IHBhc3MgaXQgYXJvdW5kCgktIHVzZSB1bmljb2RlIGZ1bmN0aW9ucyB3aGVyZXZlciBwb3NzaWJsZQoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgktIGJ1Z3MgaW4gVW5pY29kZSBoYW5kbGluZyBmaXhlZAoJLSBmaXggaGFuZGxpbmcgb2YgZXJyb3IgY29uZGl0aW9ucwoJLSBmaXggaW5pdGlhbGl6YXRpb24gYnVncywgZXRjLgoJLSBjb21wbGV0ZSB0b29sdGlwIHN1cHBvcnQKCS0gdHlwZXNhZmV0eQoJLSB1cGRhdGUgdGhlIEZJWE1FIGxpc3QgdG8gdGhlIGxhdGVzdCBzcGVjcwoKCSogaW5jbHVkZS94MTFkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJTWljaGFlbCBLYXJjaGVyIDxtaWNoYWVsLmthcmNoZXJAZHBrLmJlcmxpbi5maWRvLmRlPgoJRml4ZWQgT3BlbkdMIHJvdXRpbmVzIGJyb2tlbiBieSB0aGUgREMgLT4gUEhZU0RFViBjaGFuZ2UuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX2N5Z3dpbl9tYWtlZmlsZXM6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQWRkZWQgY29tbWVudHMgZXhwbGFpbmcgaG93IHRvIHVzZSBjeWd3aW4vbWluZ3cvd2luZSBoZWFkZXJzLgoJQWRkZWQgJ2NsZWFuJyBhbmQgJ2Rpc3RjbGVhbicKCUFkZGVkIG5ldyBvcHRpb25zIC1zIGFuZCAtaS4KCUFyY2hpdmVzIHdpbGwgbm93IGluY2x1ZGUgdGhlIGVudGlyZSAnLi9pbmNsdWRlJyBkaXJlY3RvcnkgaW5zdGVhZCBvZgoJanVzdCAnLi9pbmNsdWRlL3dpbmUnLgoJUmVuYW1lZCBtYWtlZmlsZSBmcm9tIE1ha2VmaWxlLmN5ZyB0byBNYWtlZmlsZS53aW4uCglUaGUgbWFrZWZpbGUgaXMgbm93IG1pbmd3IGNvbXBhdGlibGUgYXMgd2VsbCAoYWx0aG91Z2ggaXQncyBiZSBiZXR0ZXIKCWlmIHdlIGNvdWxkIGRldGVjdCB0aGUgY29ycmVjdCBsb2NhdGlvbiBvZiB0aGUgd2luZG93cy5oIGhlYWRlcnMpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBmaXggaW5kZW50YXRpb24KCS0gaGFuZGxlIGFsbCBvdXQtb2YtbWVtb3J5IGNhc2VzCgktIGJldHRlciBkcmF3aW5nIGNvZGUKCS0gZml4IENCRVNfRVhfTk9FRElUSU1BR0UgaGFuZGxpbmcKCS0gaW1wbGVtZW50IENCRVNfRVhfTk9FRElUSU1BR0VJTkRFTlQKCS0gaW1wbGVtZW50IElfe0lOREVOVCxJTUFHRX1DQUxMQkFDSwoJLSBmaXggbm90aWZpY2F0aW9uIGNvZGUgZm9yIEFOU0kvVW5pY29kZQoJLSBtYWtlIHVzZSBvZiBpT3ZlcmxheSBpbWFnZQoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbmMucnIuY29tPgoJQWRkZWQga2V5bWFwIHRhYmxlcyBmb3IgVVMgZHZvcmFrIGxheW91dC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWxzbyAjaW5jbHVkZSA8c3lzL3Vpby5oPi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy93aW4uaW5pOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgc2FtcGxlIHdpbi5pbmkuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGFkZWMuYywKCSAgZGxscy9xdWFydHovbXB2ZGVjLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvd2lubW0vd2lubW1fSmEucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHJlc291cmNlcyBmb3IgSmFwYW5lc2UuCgoJKiBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgY3Jhc2hpbmcgaW4gc3RvcHBpbmcgcGFyc2VyLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgZGVmYXVsdCBHVUkgZm9udCBpbnN0ZWFkIG9mIGhhcmQtY29kZWQgJ01TIFNhbnMgU2VyaWYnLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDb252ZXJ0ZWQgInJlYWQgc3RhbmRhcmQgaW5wdXQgd2l0aCBlY2hvIiBpbnRlcnJ1cHQgc2VydmljZSB0byB1c2UKCWNvbW1vbiBET1NWTSBjb25zb2xlIGlucHV0IHJvdXRpbmUgYW5kIG1hZGUgdGhlIHNlcnZpY2UgcmVhbGx5IGVjaG8uCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXcml0ZXMgdG8gc3Rkb3V0IGFuZCBWR0FfV3JpdGVDaGFycyByb3V0aW5lIG5vdyB1cGRhdGUgYm90aCBWR0EKCWJ1ZmZlcnMgYW5kIFdpbmRvd3MgY29uc29sZS4KCUFkZGVkIHJvdXRpbmUgZm9yIGNoYW5naW5nIGN1cnJlbnQgY29uc29sZSBhdHRyaWJ1dGVzLgoJTW92ZWQgdGV4dCBtb2RlIGhhbmRsaW5nIGZyb20gVkdBX1BvbGwgaW50byBuZXcgcm91dGluZSBhbmQgY2hhbmdlZAoJbG9ja2luZyBwcmltaXRpdmUgaW50byBjcml0aWNhbCBzZWN0aW9uLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBhbiBvdmVyZmxvdyBpbiBjYWxjdWxhdGluZyB0aW1lcy4KCjIwMDItMDQtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5lZGVmYXVsdC5yZWc6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgcmVnaXN0cnkgZW50cmllcyByZXF1aXJlZCBmb3IgSUUgaW5zdGFsbGVyLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBoYW5nIGFyb3VuZCBmb3IgYSBtaW51dGUgaWYgd2UgY2FuJ3QgZXhlYyB0aGUgY2xpcGJvYXJkIHNlcnZlci4KCgkqIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy93aW5wb3MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHNvbWUgU2VuZE1lc3NhZ2Ugd2l0aCBTZW5kTm90aWZ5TWVzc2FnZSBpbiBjYXNlIHRoZSB0YXJnZXQKCXdpbmRvdyBiZWxvbmdzIHRvIGFub3RoZXIgdGhyZWFkLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgZXhpdCBzdGF0dXMgaW4gc29tZSBjYXNlcy4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3BvdXQgYSBGSVhNRSBpZiB3ZSB0cnkgdG8gY2FsbCBFeHRUZXh0T3V0IG9uIGFuIG9wZW4gcGF0aC4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFJlc2V0REMgYW5kIFBIWVNJQ0FMT0ZGU0VUW1h8WV0gZGV2Y2Fwcy4KCUZpeGVzIHRvIE1lcmdlRGV2bW9kZXMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIGRlZmF1bHQgcGFwZXIgc2l6ZSB0byBsZXR0ZXIuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOgoJQXZvaWQgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gYXR0YWNoIHRvIGEgdGVybWluYXRpbmcgcHJvY2Vzcy4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBSZXNldERDLgoKMjAwMi0wNC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBFeHREZXZpY2VNb2RlIGRpYWxvZyB1c2UgdW5pY29kZSBwcm9wZXJ0eSBzaGVldCBmdW5jdGlvbnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJSEtFWV9MT0NBTF9VU0VSIHNob3VsZCBiZSBIS0VZX0NVUlJFTlRfVVNFUi4KCgkqIHNlcnZlci9hc3luYy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9hc3luYy5oLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBzZXJ2ZXIvYXN5bmMuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CgktIHNlcGFyYXRlIGNsZWFubHkgYmV0d2VlbiBhc3luYyBzY2hlZHVsaW5nIGFuZCBmaWxlIElPIHJlbGF0ZWQgaXNzdWVzLgoJLSBtYWtlIHRoZSBBUEkgY29tcGF0aWJsZSB3aXRoIG90aGVyIHR5cGVzIG9mIGFzeW5jIHJlcXVlc3RzIChlLmcuIGZvcgoJICBzb2NrZXRzKS4KCS0gcmVtb3ZlIGV4cG9ydHMgb2YgYXN5bmMgSU8gcmVsYXRlZCBmdW5jdGlvbnMgZm9yIERMTCBzZXBhcmF0aW9uLgoKCSogb2JqZWN0cy9mb250LmM6CglGaXhlZCBHZXRUZXh0RXh0ZW50UG9pbnRJIGRyaXZlciB1c2FnZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1ha2UgdGhlIHJlY3YoKSBhbmQgc2VuZCgpIGZhbWlseSBvZiBmdW5jdGlvbnMgdXNlIFdTQVJlY3ZGcm9tKCkgYW5kCglXU0FTZW5kVG8oKS4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVkIG1pbmd3MzIgd2FybmluZyBhYm91dCBzdGRjYWxsIGFuZCBmYXN0Y2FsbCBiZWluZyByZWRlZmluZWQuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglDaGVjayBmb3IgTlVMTCBwb2ludGVyIGluIERyYXdUZXh0RXhBLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBmaXggZWRpdCBib3ggcGxhY2VtZW50CgktIHJlb3JnYW5pemUgZHJhd2luZyBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIGVkaXQgYm94CgktIHR5cGVzYWZldHkgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzCgktIHN1YmNsYXNzIGVkaXQgdG8gaGFuZGxlIHVwL2Rvd24gYXJyb3dzCgktIG1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIGZhaWx1cmUgY2FzZXMKCS0gbnVtZXJvdXMgYnVncyBmaXhlZAoJLSBjb21wbGV0ZSB1bmljb2RpZmljYXRpb24KCS0gbW9yZSBzcGVjaWZpYyBkZWJ1ZyBtZXNzYWdlcwoJLSByZW1vdmUgY3ZzIGxvZyBpbmZvIGZyb20gZmlsZQoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgZGVmaW5lcyBmb3IgdGhlIE5NVEJIT1RJVEVNIGZsYWcgd29yZC4KCS0gQWRkIGRlZmluZXMgZm9yIHRoZSBOTV9DVVNUT01EUkFXIHJldHVybiBmbGFncyBmb3IgdG9vbGJhci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gVXNlIHRoZSBuZXcgY29tY3RsMzIgY29sb3IgYXJyYXkgZm9yIHRoZSBjb2xvcnMuIFByb3ZpZGVzIGJldHRlcgoJICBzdXBwb3J0IGZvciB0aGUgVEJfU0VUQ09MT1JTQ0hFTUUuCgktIERvIHNvbWUgb3B0aW1pemF0aW9ucy4KCS0gQ29ycmVjdCBjb21wdXRhdGlvbiBvZiBuSGVpZ2h0IGFuZCBQR05fQ0FMQ1NJWkUuCgktIEltcGxlbWVudCB0aGUgdW5kb2N1bWVudGVkIDA0NUUgbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gS2VlcCB0cmFjayBvZiBhbGwgc3lzdGVtIGNvbG9ycyB1c2VkIGJ5IGNvbWN0bDMyLmRsbC4KCS0gUHJvdmlkZSByb3V0aW5lIHRvIHN1cHBvcnQgdGhlIFdNX1NZU0NPTE9SQ0hBTkdFIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRqdXN0IHRoZSBjaGlsZCBvZmZzZXQgeCB2YWx1ZSBiYXNlZCBvbiBiYW5kIHN0eWxlIFJCQlNfQ0hJTERFREdFLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gVHJ5IHRvIG1hdGNoIHRoZSBuYXRpdmUgY29udHJvbCBmb3IgdGhlIFNldEJrQ29sb3IgbWVzc2FnZS4KCS0gQ29ycmVjdCBwcm9jZXNzaW5nIGluIE5DQ2FsY1NpemUgbWVzc2FnZSBwcm9jZXNzaW5nLgoKMjAwMi0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglGaXhlZCBjb21waWxlIHdpdGhvdXQgZnJlZXR5cGUuCgoyMDAyLTA0LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgZm9yIGhpZGluZyBmaWxlIGV4dGVuc2lvbnMgaW4gSVNoZWxsRm9sZGVyX0dldERpc3BsYXlOYW1lT2YuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIGZhaWx1cmUgb2YgSVNoZWxsRm9sZGVyX0dldERpc3BsYXlOYW1lT2YuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9zZWxlY3QuYzoKCUFkZGVkIHRpbWVyIG9uIHNlcnZlciBleGl0IHRvIHdhaXQgYSBiaXQgZm9yIG5ldyBjbGllbnRzLgoJRG9uJ3QgcmVtb3ZlIHRoZSBzb2NrZXQgdW50aWwgdGhlIHJlZ2lzdHJ5IGlzIGNsb3NlZCB0byBhdm9pZCBhIHJhY2UuCgoJKiBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZvcndhcmQgQysrIGZ1bmN0aW9ucyB0byB0aGUgbXN2Y3J0IGxpYnJhcnkuCgoJKiBkbGxzL2dkaS9tZmRydi90ZXh0LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHJlY3Qgb25seSBpZiB0aGVyZSBhcmUgZmxhZ3MuCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB3cml0aW5nIE1FVEFfRVNDQVBFIHJlY29yZHMuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZW51bWVyYXRlIHRoZSBNRVRBX0VPRiByZWNvcmQuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBvbGQgRkZfIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gSEVBREVSX0luc2VydEl0ZW1XLgoKCSogbGlicmFyeS9sb2FkZXIuYzoKCU1ha2UgZGxvcGVuX2RsbCByZXR1cm4gYW4gZXJyb3IgaW1tZWRpYXRlbHkgaWYgdGhlIGxpYnJhcnkgZXhpc3RzIGJ1dAoJZGxvcGVuKCkgZmFpbHMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGxmRmFjZU5hbWUgPT0gIiIsIHRoZW4gd2UgcGF0Y2ggdXAgdGhlIG5hbWVzIGFjY29yZGluZyB0bwoJbGZQaXRjaEFuZEZhbWlseS4gIFRoaXMgaXMgbm90IHZlcnkgcHJldHR5IEknbSBhZnJhaWQuLi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldFRleHRFeHRlbnRQb2ludEkgYW5kIGFkZCBzdXBwb3J0IGZvciBFVE9fR0xZUEhfSU5ERVguCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNhbGN1bGF0ZSBjYWNoZWQgbWV0cmljcyBvciBlbnVtZXJhdGUgWDExIGZvbnRzIGlmIHdlJ3JlIHVzaW5nCgljbGllbnQgc2lkZSBmb250cy4KCgkqIG9iamVjdHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgZm9udCBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgaW5jbHVkZS9mb250LmgsCgkgIG9iamVjdHMvZ2Rpb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgZm9udCBwcm9ibGVtcyB3aXRoIHJvdGF0ZWQgdGV4dCBhbmQgbm9uIE1NX1RFWFQgbWFwcGluZwoJbW9kZXMuIERvIHNsaWdodGx5IGJldHRlciB3aXRoIHRoZSBGRl8gZmxhZ3MgaW4gV2luZUVuZ0dldFRleHRNZXRyaWNzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgd2luZWRlZmF1bHQucmVnOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGZvbnQgc3Vic3RpdHV0aW9uIGxvb2t1cCBpbiB0aGUgcmVnaXN0cnkuICBXZSBsb29rIHVuZGVyIHRoZSBrZXkKCUhLTE1cU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgTlRcQ3VycmVudFZlcnNpb25cRm9udFN1YnN0aXR1dGVzIGZvcgoJImZyb21OYW1lWyxjcF0iPSJ0b05hbWVbLGNwXSIgd2hlcmUgY3AgY2FuIGJlIGFuIG9wdGlvbmFsIGNvZGVwYWdlLgoJU3Vic3RpdHV0aW9uIG9jY3VycyBiZWZvcmUgc2Nhbm5pbmcgdGhlIGF2YWlsYWJsZSBmb250IGxpc3QsIGFzIGlzIHRoZQoJY2FzZSB3aXRoIFdpbmRvd3MuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL2ZvbnQuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldEdseXBoSW5kaWNlcy4gVHdlYWsgR2V0Q2hhcmFjdGVyUGxhY2VtZW50IHRvIHVzZSBpdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQmV0dGVyIGNoZWNrIGZvciAtbHJlc29sdi4gUmVtb3ZlZCBGUkVFVFlQRUxJQlMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZnJlZXR5cGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgbGliZnJlZXR5cGUuc28gb24gdGhlIGZseSB3aXRoIGRsb3BlbiBhbmQgZnJpZW5kcy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglUaGUgaG9yaXpvbnRhbCBkaWFsb2cgYmFzZSB1bml0IGlzIGNhbGN1bGF0ZWQgYXMgdGhlIHN0cmFpZ2h0IGF2ZXJhZ2UKCW9mIGEteixBLVogKHRtQXZlQ2hhcldpZHRoIGlzIHN1cHBvc2VkIHRvIGJlIGEgd2VpZ2h0ZWQgYXZlcmFnZQoJYWNjb3JkaW5nIHRvIGNoYXJhY3RlciB1c2FnZSwgc28gd2Ugc2hvdWxkbid0IHVzZSB0aGlzKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZCBzdHViIGZvciBXU0FFbnVtUHJvdG9jb2xzKEEvVykgZnVuY3Rpb25zLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb2FkIGxpYmZyZWV0eXBlLnNvIG9uIHRoZSBmbHkgd2l0aCBkbG9wZW4gYW5kIGZyaWVuZHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbmFibGUgU2hlbGxFeGVjdXRlRXggdG8gYWN0dWFsbHkgb3BlbiB0aGluZ3Mgd2l0aCB0aGVpciBoZWxwZXIKCWFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEltcGVyc29uYXRlTG9nZ2VkT25Vc2VyIHN0dWIuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLCBkbGxzL3NobHdhcGkvcGF0aC5jOgoJQXZvaWQgbG9jYWwgV0lOQVBJIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHdvcmsgYXJvdW5kIGdjYyBidWcuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGRsbHMvc2V0dXBhcGkvZGlyaWQuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsCgkgIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wZW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbWFhZHAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGUgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDI5LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWRpcmVjdCBET1Mgd3JpdGVzIHRvIHN0ZG91dC9jb25zb2xlIHRvIERPU1ZNX1B1dENoYXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglDbGVhbmVkIHVwIGEgYml0LCByZW1vdmVkIHRvZG9zIGZvciBPcGVuVGhyZWFkLCBhdm9pZCBUZXJtaW5hdGVUaHJlYWQKCXJhY2UuCgoyMDAyLTA0LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU3BlbGxpbmcvZXJyb3IgbWVzc2FnZXMgZml4ZXMuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBNb3JlIHBvcnRhYmxlIHNpZ25hdHVyZSBjaGVjay4KCgkqIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9jcHUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZCByZXR1cm4gdHJhY2VzIHRvIEdsb2JhbE1lbW9yeVN0YXR1cywgR2V0U3lzdGVtSW5mbyBhbmQgZml4bWUgaW4KCUdldFN5c3RlbUluZm8uCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCB0ZXN0IGZvciB0aHJlYWQgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jeWd3aW5fbWFrZWZpbGVzOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUFkZGVkIHBlcmwgc2NyaXB0IHdoaWNoIHdpbGwgYnVpbGQgYSBNYWtlZmlsZSBmb3IgcnVubmluZyBDIHRlc3RzIG9uCglXaW5kb3dzIHRocm91Z2ggQ3lnd2luL2djYy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ29tcGlsZXMgbm93IGV2ZW4gb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgRE9TIFZNLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVc2UgRU5PTUVESVVNIGVycm5vIGNvZGUgb25seSB3aGVuIGRlZmluZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gY29ycmVjdCBub3RpZmljYXRpb25zCgktIGJlaGF2aW91ciBjbG9zZXIgdG8gbmF0aXZlCgktIGJldHRlciBkcmF3aW5nCgktIG11bHRpcGxlIGJ1Z3MgZml4ZWQKCS0gZmFzdGVyICYgY2xlYW5lciBjb2RlCgktIGNvbnNpc3RlbnQgaW5kZW50YXRpb24KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHR3byBjb21waWxhdGlvbiB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvbnRkZGsuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWNsYXJlIHN3cHJpbnRmLgoKCSogZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCUZpeGVkIGNyYXNoIGluIEJpdEJsdCB3aGVuIHNvdXJjZSBEQyBpcyBOVUxMLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbjoKCVZhcmlvdXMgbWFrZWZpbGUgZml4ZXMgZm9yIHRoZSB0ZXN0IGVudmlyb25tZW50LgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kaXJpZC5jLAoJICBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLAoJICBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywKCSAgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGluY2x1ZGUvc2V0dXBhcGkuaCwKCSAgaW5jbHVkZS93aW5udC5oOgoJSW1wbGVtZW50ZWQgYSBsYXJnZSBudW1iZXIgb2YgdGhlIDMyLWJpdCBzZXR1cGFwaSBmdW5jdGlvbnMuCglGaXhlZCBhIG51bWJlciBvZiBzZXR1cHggZnVuY3Rpb25zIGJ5IG1ha2luZyB0aGVtIGNhbGwgdGhlIHNldHVwYXBpCgllcXVpdmFsZW50cy4KCgkqIHNlcnZlci90aHJlYWQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzdXNwZW5kIGEgdGVybWluYXRlZCB0aHJlYWQuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggc2lnbiBleHRlbnNpb24gaW4gbWVzc2FnZSBtYXBwaW5nIHJvdXRpbmVzLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglBdm9pZCBjcmFzaCB3aGVuIHRyeWluZyB0byBhdHRhY2ggdG8gYSB0ZXJtaW5hdGluZyBwcm9jZXNzLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGhhbmRsaW5nIG9mIGEgZGxsIGJlaW5nIGxvYWRlZCBhdCB0aGUgc2FtZSBhZGRyZXNzIGFzIGEgcHJldmlvdXMKCW9uZS4KCgkqIG9iamVjdHMvZGMuYzogQXZvaWQgcmVjdXJzaXZlIERlbGV0ZURDIGNhbGxzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglNYWtlIEdldEZ1bGxQYXRoTmFtZSBmYWlsIGlmIGlucHV0IHBhdGggbmFtZSBpcyBlbXB0eS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGNhbGwgTG9hZExpYnJhcnkuCglXb3JrYXJvdW5kIGEgYnJva2VuIGJlaGF2aW91ciBvZiB0aGUgMTYtYml0IGxvYWRlci4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglGaXhlZCBsZW5ndGggaGFuZGxpbmcgaW4gUnRsVW5pY29kZVN0cmluZ1RvQW5zaS9PZW1TdHJpbmcuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIF9tYnNuYmljbXAuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSBzZWN1cml0eSBkZXNjcmlwdG9yIGlzIGluaXRpYWxpemVkIGluIFJlZ0dldEtleVNlY3VyaXR5LgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUNoZWNrIEVMRiBzaWduYXR1cmUgYmVmb3JlIHByb2Nlc3NpbmcgZmlsZS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IE5VTEwgbWVudSBpdGVtcyB0byBzZXBhcmF0b3JzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUltcGxlbWVudCBPcGVuVGhyZWFkKCkgd2luYXBpIGNhbGwuCglJbXBsZW1lbnQgYSBmZXcgcHRocmVhZHMgZnVuY3Rpb25zLgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB1c2Ugb2YgTVNBQ00gZHJpdmVyIGRlZmluaXRpb25zLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgd2luZS90ZXN0LmggYmVmb3JlIHdpbmRvd3MgaGVhZGVycy4KCUFkZCBkZWZpbml0aW9ucyBmb3IgSURJX0FQUExJQ0FUSU9OQSBhbmQgSURDX0FSUk9XQSBmb3IgV2luZG93cy4KCUZpeCBhIGNoZWNrIGluIHRoZSBTUElfe0dFVCxTRVR9Qk9SREVSIHRlc3QuCglGaXggYmFkIGNvcHkvcGFzdGUgaW4gdGhlIFNQSV97R0VULFNFVH1CT1JERVIgdGVzdC4KCVVzZSBlcSBtYWNybyB0byBwcmludCB2YWx1ZXMgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIHRocmVhZCBzYWZlLgoKMjAwMi0wNC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBsaWJyYXJ5L3BvcnQuYywKCSAgc2VydmVyL3JlcXVlc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgZm9yIExpbnV4LCBGcmVlQlNEIGFuZCBTb2xhcmlzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJR290IHJpZCBvZiAjaWZkZWYgVVNFX1NUQUJTLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT24gU29sYXJpcyBpbmV0X2F0b24gaXMgZXhwb3J0ZWQgYnkgbGlicmVzb2x2LnNvLgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgRlBfUE5PUk0gY2FzZS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBub3cgb2Jzb2xldGUgRklYTUVzLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIGluIGZpcnN0IGNoYW5jZSBleGNlcHRpb24gaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW9yZSByb2J1c3QgYW5kIGxlc3MgdGltZSBjb25zdW1pbmcgcGxheWJhY2suCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzaXplIG9mIGJ1ZmZlcnMgaW4gY29udmVyc2lvbi4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd3JpdGluZyBtdWx0aWxpbmUgYmxvY2sgd2hpbGUgd3JhcHBpbmcgZW5hYmxlZC4KCUZpeGVkIHN0YXJ0dXAgaW5mb3JtYXRpb24gcmVhZGluZyAoY29uc29sZSBzaXplKS4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtb2R1bGUgbWFwcGluZyBmb3IgZGVidWcgaW5mbyB3aGVuIFBFIHNlY3Rpb24gaXMgY29tcHJlc3NlZC4KCgkqIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywKCSAgaW5jbHVkZS93aW5zb2NrLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciB0aGUgdW5pc3RkLmggdnMuIHdpbnNvY2suaCBwcm9ibGVtIGluIFdpbmVsaWIgYXBwbGljYXRpb25zLgoJUmVmaW5lIHRoZSBXU19ERUZJTkVfSFRPTkwgZGVmaW5pdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20ucGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgYm90aGVyIHdpdGggZGVjbGFyZSwganVzdCAndXNlIGtlcm5lbDMyJy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgaGVhZGVycyBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIHdpbmUvdGVzdC5oLgoKCSogZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9hY213cmFwLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHoveGZvcm0uaCwgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUltcGxlbWVudGVkIHNvbWUgbWV0aG9kcyBvZiBDTFNJRF9BQ01XcmFwcGVyLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9kaXNwc3RkLmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcHR5cGUuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIENyZWF0ZVN0ZERpc3BhdGNoIGFuZCBDcmVhdGVEaXNwVHlwZUluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IFVEU19IT1RUUkFDSwoJLSBpbXBsZW1lbnQgTk1fUkVMRUFTRURDQVBUVVJFCgktIGltcGxlbWVudCBVRE1fW0dTXUVUVU5JQ09ERUZPUk1BVAoJLSBnZXQgcmlkIG9mIFdNX05DQ1JFQVRFIHByb2Nlc3NpbmcKCS0gdXNlIEludmFsaWRhdGVSZWN0IGluc3RlYWQgb2YgYSBzeW5jaCByZWZyZXNoCgktIGltcGxlbWVudCBhdXRvIGF1dG8gYXJyb3cgcHJlc3Mgb24ga2V5IHByZXNzZXMKCS0gbW9yZSBjb2RlIGNsZWFudXBzCgktIGJldHRlciBkcmF3aW5nLCBjbG9zZXIgdG8gbmF0aXZlCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCB0aGUgREZDU197SE9ULFRSQU5TUEFSRU5UfSBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVByZXZlbnQgdGhlIHVzZXIgZnJvbSBydW5uaW5nIHdpbmVpbnN0YWxsIGFzIHJvb3QsIGFkZCBzY3JpcHQgY29tbWFuZHMKCXNvIHdlICdzdSByb290JyBmb3IgaW5zdGFsbGluZyBhbmQgb3RoZXIgY29tbWFuZHMgdGhhdCByZXF1aXJlIHJvb3QKCWFjY2Vzcy4gIEZpeCBtb2RpZmljYXRpb24gdGltZSBjb21wYXJpc29uIG9mIHdyb25nIGZpbGUuICBBZGRlZAoJbWlzc2luZyBzZWQgbGluZS4gQWx3YXlzICdtYWtlJyBiZWZvcmUgd2UgcnVuIG1ha2UgaW5zdGFsbCBzbyBubyBidWlsZAoJZmlsZXMgYmVjb21lIG93bmVkIGJ5IHJvb3QuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJvdXRpbmUgRE9TVk1fV2FpdCBub3cgd2FrZXMgdXAgaWYgbmV3IGV2ZW50cyBhcmUgcXVldWVkIGFuZCBpdAoJcmV0dXJucyBpZiBpdCBwcm9jZXNzZWQgYW55IHF1ZXVlZCBldmVudHMuCgoyMDAyLTAzLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNb3JlIHJvYnVzdCBsaWJzYW5lIGNoZWNrLgoKCSogd2luMzIvY29uc29sZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSGFjayB0byBtYWtlIHdpbmVjb25zb2xlIHdvcmsgYWdhaW4uCgoyMDAyLTAzLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2Lmg6CglGaXhlZCBjb21waWxlIHdpdGhvdXQgY3Vyc2VzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJVHJhbnNmZXIgdGhlIGZ1bGwgcHJvY2VzcyBzdGFydHVwIGluZm8gYXMgd2VsbCBhcyB0aGUgY29tbWFuZC1saW5lCgl0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IExvYWQgY2xhc3Nlcy5kYXQgdG9vLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCU1ha2Ugc3VyZSB0aGUgaW1wb3J0IGRpcmVjdG9yeSBpcyBub3QgaW4gc2hhcmVkIG1lbW9yeS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsCgkgIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IFNldEZpbGVBdHRyaWJ1dGVzIHRvIGhvbm9yIHRoZSB1bWFzayAocmF0aGVyIHRoYW4gbWFraW5nIGZpbGVzCgl3b3JsZC13cml0YWJsZSkuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRml4ZWQgd2luZWxhdW5jaGVyIGZvciBuZXcgZGxsIGZpbGVzIGxheW91dC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJVXNlIEV4aXRQcm9jZXNzIHRvIHRlcm1pbmF0ZSB0aGUgYXBwbGljYXRpb24uCgoJKiBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWNoYWwgUGFzdGVybmFrIDxtcGFzdGVybmFrQGx1Ymxpbi50MS5wbD4KCUZpeGVkIHBhY2svdW5wYWNrIHJvdXRpbmVzIGZvciBXTV9EREVfRVhFQ1VURS4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOgoJRml4ZWQgcGFjay91bnBhY2sgcm91dGluZXMgZm9yIFdNX0RERV9FWEVDVVRFLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVwZGF0ZWQgZm9yIG5ldyBkbGwgbmFtZXMuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBtYXBwaW5nIGZvciBlcnJubyBFTk9NRURJVU0gdG8gU1RBVFVTX05PX01FRElBX0lOX0RFVklDRS4KCjIwMDItMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCVJlbW92ZWQgY2FsbCB0byBESUJfR2V0RElCV2lkdGhCeXRlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvYml0bWFwLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsCgkgIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3RleHQuYywKCSAgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL21mZHJ2L2RjLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvYnJ1c2guYywgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L29iamVjdHMuYywgZGxscy9nZGkvd2luMTZkcnYvcGVuLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3RleHQuYywgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaCwKCSAgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvd2luZXBzL2JpdGJsdC5jLAoJICBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywKCSAgZGxscy93aW5lcHMvY29sb3IuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywKCSAgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsCgkgIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZXNjYXBlLmMsCgkgIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglDaGFuZ2VkIHRoZSBHREkgZHJpdmVyIGludGVyZmFjZSB0byBwYXNzIGFuIG9wYXF1ZSBQSFlTREVWIHBvaW50ZXIKCWluc3RlYWQgb2YgYSBEQyBzdHJ1Y3R1cmUuCglSZW1vdmVkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBEQyBzdHJ1Y3R1cmUgZnJvbSB0aGUgZHJpdmVycy4KCUdvdCByaWQgdGhlIGJpdG1hcCBkcml2ZXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglEb24ndCBzdHJpcCBvdXQgLmV4ZSBleHRlbnNpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgZGVjbGFyYXRpb24gb2YgdGhlIERpc2Nvbm5lY3ROYW1lZFBpcGUgY2FsbC4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmM6CglNYXJjbyBQaWV0cm9ib25vIDxwaWV0cm9ib0BwaWV0cm9iby5jb20+CglBZGRlZCBzdXBwb3J0IGZvciAxNmJpdCBtb3VzZSBjdXJzb3IgYml0bWFwcyBpbiBSR0IgNTY1IGZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSB1cGRvd24gdW5pY29kaWZpY2F0aW9uCgktIGJldHRlci9jbGVhbmVyIGJ1ZGR5IGhhbmRsaW5nCgktIGZldyBidWdzIGZpeGVkCgktIG1vcmUgdGVzdGluZwoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgoJKiBjb250cm9scy9tZW51LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNZW51SXRlbUZyb21Qb2ludDogcm91Z2ggaW1wbGVtZW50YXRpb24uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0OgoJTmVlZCB0byBzZXQgV0lORURMTFBBVEggdG9vLgoKMjAwMi0wMy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmU6IEFkZGVkIGFsbG9jLm9rLgoKCSogcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9EYS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRGUucmMsIHByb2dyYW1zL2Nsb2NrL0VuLnJjLCBwcm9ncmFtcy9jbG9jay9Fcy5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLCBwcm9ncmFtcy9jbG9jay9QdC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL1N3LnJjLCBwcm9ncmFtcy9jbG9jay9UT0RPLAoJICBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvY2xvY2svY2xvY2sucmMsCgkgIHByb2dyYW1zL2Nsb2NrL2Nsb2NrX3Jlcy5oLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5oLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQ29udmVydGVkIHRvIHVzZSBvZiBOTFMuCgoJKiBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL21mZHJ2L2RjLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvLmN2c2lnbm9yZSwgZGxscy9nZGkvd2luMTZkcnYvYnJ1c2guYywKCSAgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLCBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvcGVuLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi90ZXh0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2Lmg6CglNb3ZlZCBtZXRhZmlsZXMgYW5kIHdpbjE2IGRyaXZlcnMgdG8gZGxscy9nZGkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYzoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCBtZW1vcnkgYWxsb2NhdGlvbiB0ZXN0LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+Cglmd3JpdGU6IGZpeGVkIGhhbmRsaW5nIG9mIGFscmVhZHkgYnVmZmVyZWQgZGF0YS4KCjIwMDItMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsIGRsbHMvZ2RpL2dkaS5zcGVjLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsCgkgIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJUmVuYW1lZCBzb21lIDE2LWJpdCBzcGVjIGZpbGVzIHRvIG1hdGNoIHRoZSBkbGwgbmFtZS4KCgkqIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLAoJICBpbmNsdWRlL21zYWNtLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CgktIENvbnZlcnRlZCBIQUNNT0JKIHRvIHZvaWQqCgktIGFjbU1ldHJpY3MxNiBjYWxscyBhY21NZXRyaWNzIG9ubHkgaWYgaGFvIGlzIE5VTEwKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglGaXggZGVmYXVsdCBleHRlbnNpb24gYmVoYXZpb3Igd2l0aCBHZXRPcGVuRmlsZU5hbWUuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJSWdub3JlIGltcG9ydHMgYW5kIHJlc291cmNlcyB3aGVuIGJ1aWxkaW5nIGEgLmRlZiBmaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVhdXQzMl90ZXN0LnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92YXJ0ZXN0LVdpbjMyLmxvZywgbGlidGVzdC92YXJ0ZXN0LmMsCgkgIGxpYnRlc3QvdmFydGVzdC5yZWFkbWUsIGxpYnRlc3QvdmFydGVzdC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQb3J0ZWQgdmFyaWFudCB0ZXN0cyB0byB0aGUgbmV3IHRlc3RpbmcgZnJhbWV3b3JrLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2xjb252LmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIHN0dWIgZm9yIF9fbGNvbnZfaW5pdCgpLgoKMjAwMi0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9fW3h8XWdldG1haW5hcmdzOiBBY2NlcHQgTlVMTCBuZXdfbW9kZSBhcmd1bWVudC4KCgkqIGluY2x1ZGUvbXNhY20uaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvbnZlcnRlZCBIQUNNU1RSRUFNLCBIQUNNRFJJVkVSSUQgYW5kIEhBQ01EUklWRVIgdG8gdm9pZCouCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2VzIHNvbWUgaGFuZGxlIGRlZmluaXRpb25zIHRvIHRoZSBwcm9wZXIgdHlwZS4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXJ0cy5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuaCwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCXdvZE9wZW4oKSBzaG91bGQgcmV0dXJuIE1NU1lTRVJSX0FMTE9DQVRFRCBpZiB0aGUgZGV2aWNlIGlzIGFscmVhZHkKCWFsbG9jYXRlZC4gIEFsbG93IGZvciBtdWx0aXBsZSBhdWRpbyBkZXZpY2VzLiBGaXggd29kUGxheWVyX3Jlc2V0IGFzCgl3aXRoIGFSdHMgd2UgY2Fubm90IGNhbmNlbCBhdWRpbyBkYXRhIGFscmVhZHkgd3JpdHRlbiB0byB0aGUgc2VydmVyLgoJUmVuYW1lIHNvbWUgZnVuY3Rpb25zLiBDbGVhbnVwIHVudXNlZCBjb2RlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglEc291bmQgd2lsbCBub3cgdHJ5IGFzIG1hbnkgZGV2aWNlcyBhcyBhcmUgYXZhaWxhYmxlIHdoZW4gdHJ5aW5nIHRvCglvcGVuIGEgd2F2ZU91dCBkZXZpY2UgaW4gRGlyZWN0U291bmRDcmVhdGUoKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBoZWFkZXIuCgoyMDAyLTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIGRyaXZlci1zcGVjaWZpYyBlc2NhcGVzIGluIHRoZSB4MTFkcnYgdG8gcmV0cmlldmUKCVgxMSBpbmZvcm1hdGlvbi4gRmluaXNoZWQgZGxsIHNlcGFyYXRpb24gb2Ygb3BlbmdsMzIuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmljYXAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2c3MTEuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpbWczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGRvY3Z3LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHdhaW5fMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVhcnRzLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZSB1cGRhdGUuCgktIE1pc3NpbmcgQVBJIGZpbGUgZW50cmllcyBub3cgb25seSByZXBvcnRlZCBvbmNlLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVJlbW92ZWQgc2VydmljZSB0aHJlYWQgc3VwcG9ydC4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2luc29jay5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzoKCVNlbmQgbWVzc2FnZSBmb3IgV1NBQXN5bmNTZWxlY3Qgc29ja2V0cyBkaXJlY3RseSBmcm9tIHRoZSBzZXJ2ZXIsCglpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzZXJ2aWNlIHRocmVhZC4gRmluaXNoZWQgc2VwYXJhdGlvbiBvZiB3czJfMzIuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vaW1hYWRwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIGFuIElNQSBkcml2ZXIuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3VzZXIuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJV2luZWNvbnNvbGUgaXMgbm93IGFibGUgdG8gaGFuZGxlIG5vbiByYXN0ZXIgZm9udHMgKHZlY3RvciwgdHJ1ZQoJdHlwZSkuCgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgdGltZXIgY2FsbGJhY2sgcm91dGluZXMgd2hlbiB0aGUgdGhyZWFkIG93bmluZyB0aGUKCWNhbGxiYWNrIHRlcm1pbmF0ZXMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaCwgbWlzYy9zeXN0ZW0uYzoKCUNyZWF0ZSB0aHJlYWRzIHRvIG1hbmFnZSB0aW1lcnMgaW5zdGVhZCBvZiB1c2luZyB0aGUgc2VydmljZSB0aHJlYWQuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBmaWxlcy9maWxlLmM6CglFeHBvcnQgdGhlIEZJTEVfR2V0VW5peEhhbmRsZSBmdW5jdGlvbmFsaXR5IGZyb20gbnRkbGwuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGltcGxlbWVudGluZyBldmVudCByZWR1Y3Rpb24uCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgaXNzdWVzIGluIHJlc291cmNlcyBkZWZpbml0aW9uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBmaXhlZCBmb250cyBmYW1pbHkgbmFtZS4KCgkqIHRvb2xzL2V4YW1pbmUtcmVsYXk6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFZ4RCBjYWxsIHRyYWNpbmcuCgoJKiBkZWJ1Z2dlci9kYmcueToKCVRpanMgdmFuIEJha2VsIDx0aWpzQGNvbm5lY3R1eC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBDKysgaWRlbnRpZmllciBzeW50YXguCgoyMDAyLTAzLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9hdWRldmNvZC5oLCBpbmNsdWRlL2Rtby5oLCBpbmNsdWRlL2Rtb3JlZy5oLAoJICBpbmNsdWRlL2Rtb3J0LmgsIGluY2x1ZGUvZHNob3cuaCwgaW5jbHVkZS9tZWRpYWVyci5oLAoJICBpbmNsdWRlL21lZGlhb2JqLmg6CglSZXdyb3RlIHNvbWUgaGVhZGVycyBmcm9tIHNjcmF0Y2ggYmFzZWQgb24gcHVibGljbHkgYXZhaWxhYmxlCglpbmZvcm1hdGlvbiB0byBhdm9pZCBFVUxBIGNvbmNlcm5zLgoKCSogZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc2Rtby9kbW9ydC5jLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsCgkgIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovY2FwZ3JhcGguYywgZGxscy9xdWFydHovY2FwZ3JhcGguaCwKCSAgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZncmFwaC5oLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21wZ3BhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5oLCBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovdmlkcmVuLmgsCgkgIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL2V2Y29kZS5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJUmVtb3ZlZCBzb21lIGNvZGUgYmVjYXVzZSBvZiBjb25jZXJucyBvdmVyIHRoZSBNaWNyb3NvZnQgRGlyZWN0WCBTREsKCWxpY2Vuc2UgYWdyZWVtZW50LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmksIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL21zZzcxMS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5kcnYuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBHNzExIGNvZGVjIGRyaXZlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IENDTV97R0VUfFNFVH1DT0xPUlNDSEVNRS4KCS0gSW1wbGVtZW50IFdNX05PVElGWUZPUk1BVCBhbmQgY29ycmVjdCBwYXNzaW5nIFdNX05PVElGWSB3aXRoIGNvcnJlY3QKCSAgbWVzc2FnZSBjYWxsLgoJLSBJZ25vcmUgUEdNX0ZPUldBUkRNT1VTRSBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZWFuYWx5emUgYnV0dG9uIHN0YXR1cyBkdXJpbmcgTkNDYWxjU2l6ZSBwcm9jZXNzaW5nIGJlY2F1c2Ugc2l6ZSBvZgoJd2luZG93IG1heSBoYXZlIGNoYW5nZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJV2UgY2Fubm90IGlnbm9yZSBOb3RpZnlOb25saW5lYXIgZm9jdXMgZXZlbnRzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJUHJvcGVybHkgaGFuZGxlIGxvYWRvcmRlciBzcGVjaWZpY2F0aW9ucyBjb250YWluaW5nIGEgLmRsbCBleHRlbnNpb24uCgoJKiBNYWtlLnJ1bGVzLmluOiBGaXhlZCBydWxlIGZvciB0ZXN0IHByb2dyYW0uCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2tlcm5lbDMyX3Rlc3Quc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0ZXN0cyBmb3IgR2V0U3lzdGVtRGlyZWN0b3J5QS9XIGFuZCBHZXRXaW5kb3dzRGlyZWN0b3J5QS9XLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmMsIGluY2x1ZGUvd2luZS90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRyYWNlIGZ1bmN0aW9uIChzYW1lIGFzIGluIHRoZSBwZXJsIGZyYW1ld29yaykuCglBZGQgc3VwcG9ydCBmb3IgdG9kbyB0ZXN0cy4KCU1ha2UgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIHByaW50Zi1zdHlsZSBtZXNzYWdlIGluIG9rLgoJSW5jbHVkZSB3aW5kZWYuaCBpbiB0ZXN0LmggZm9yIGNvbXBpbGluZyB0ZXN0cyBvbiBXaW5kb3dzLgoKCSogZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgRW51bVByb2Nlc3NlcyBhbmQgRW51bVByb2Nlc3NNb2R1bGVzLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NuYXBzaG90LmMsCgkgIHNlcnZlci90cmFjZS5jOgoJQ29ycmVjdGx5IGZpbGwgcGFyZW50IHBpZCwgbW9kdWxlIHNpemUgYW5kIG1vZHVsZSBuYW1lIGluIHByb2Nlc3MgYW5kCgltb2R1bGUgc25hcHNob3RzLiBCYXNlZCBvbiBwYXRjaGVzIGJ5IEVyaWMgUG91ZWNoIGFuZCBBbmRyZWFzIE1vaHIuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJRml4IHJhbmdlIGluIGFSdHMgOGJpdCB2b2x1bWUgY29kZS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUluaXRpYWxpc2UgYSBzdGFjayB2YXJpYWJsZS4KCjIwMDItMDMtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbjogRml4ZWQgbGlua2luZyBvZiB3aW5lIHRhcmdldC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3R3YWluLy5jdnNpZ25vcmUsCgkgIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vUkVBRE1FLCBkbGxzL3R3YWluL1RXQUlOLAoJICBkbGxzL3R3YWluL2NhcGFiaWxpdHkuYywgZGxscy90d2Fpbi9kc19hdWRpby5jLAoJICBkbGxzL3R3YWluL2RzX2N0cmwuYywgZGxscy90d2Fpbi9kc19pbWFnZS5jLCBkbGxzL3R3YWluL2RzbV9jdHJsLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW4uaCwgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywKCSAgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLCBkbGxzL3R3YWluL3R3YWluX2kuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVNoaSBRdWFuIEhlIDxzaGlxdWFuQGN5YmVyZHVkZS5jb20+IChmb3IgQ29yZWwpCglTdGFydGVkIFRXQUlOIGltcGxlbWVudGF0aW9uLgoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIGludG8gV2luZUhRLCBtYWRlIHN1cmUgaXQgd29ya3Mgd2l0aG91dCBTQU5FLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJTWFrZSB3YXJuaW5ncyBxdWlldCBieSBkZWZhdWx0IGFuZCBhZGRlZCAtdyBvcHRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBERVZFTE9QRVJTLUhJTlRTLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5tbS93aW5lYXJ0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hcnRzLmgsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGRlZCBhUnRzIGRyaXZlci4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbC5jYXJkZW5hc0BsaW5kb3dzLmNvbT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsLmNhcmRlbmFzQGxpbmRvd3MuY29tPgoJQ2hhbmdlZCByZWdpc3RyeSBoYW5kbGluZyBpbiBSZWdPcGVuS2V5RXhBIHRvIGJlaGF2ZSBsaWtlIHdpbmRvd3M5NQoJd2hlbiB3aW52ZXI9PXdpbjk1LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBjaGVjayB0byBmd3JpdGUgZm9yIHNpemUgPT0gMC4KCUZpeGVkIG9yZGVyIGFuZCBmb3JtYXQgb2YgInNpemUiIGFuZCAibm1lbWIiIHBhcmFtZXRlcnMgaW4gY2FsbHMgdG8KCWZ3cml0ZS4KCjIwMDItMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglGaXhlZCBydWxlcyBmb3IgbWFpbiBtb2R1bGUgc3BlYyBmaWxlLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FjbXdyYXAuYywKCSAgZGxscy9xdWFydHovYXZpcGFyc2UuYywgZGxscy9xdWFydHovYmFzZWZpbHQuYywKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuaCwgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCglTdGFydGVkIGltcGxlbWVudGluZyBNUEVHIHBhcnNlci4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHZkbWVkaWEuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIG1pc3NpbmcgaGVhZGVyLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvRGEucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRGUucmMsIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvRmkucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRnIucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUkVBRE1FLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWRfcmVzLmgsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJTWFkZSBub3RlcGFkIHVzZXMgTkxTIHByb3Blcmx5LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL2xvY2tpbmcuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ubmVjdCB0aGUgbXN2Y3J0IGZpbGUgYnl0ZSBsb2NraW5nIHVwIHRvIG50ZGxsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU5vIG5lZWQgZm9yIHRoZSBmaXhtZSBvbiBhIHNpbXBsZSBUQlNUWUxFX1NFUC4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgR1VJRHMuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sCgkgIGxpYnJhcnkvbG9hZGVyLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3N0aS9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3VybC9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsCgkgIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUNoYW5nZWQgYnVpbHRpbiBkbGxzIGZpbGUgbmFtZXMgdG8gbWFrZSBpdCBjbGVhciB0aGV5IGFyZSBub3Qgbm9ybWFsCglVbml4IGxpYnJhcmllcywgYW5kIGluc3RhbGwgdGhlbSBpbiAkbGliZGlyL3dpbmUgaW5zdGVhZCBvZiAkbGliZGlyIHRvCglhdm9pZCBuYW1lIGNvbmZsaWN0cyBpbiAvdXNyL2xpYi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUgc2hlbGwgeHh4QVcgd3JhcHBlciBwcm90b3R5cGVzIGZvciBmaXhlZCBTSExXQVBJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50LCBpbXBsZW1lbnQvZml4IGFuZCB0ZXN0IDExMCsgUGF0aCBmdW5jdGlvbnMuCglTaGFyZSB0aGUgR0VUX0ZVTkMgbWFjcm8sIG90aGVyIHBsYWNlcyB0aGFuIG9yZGluYWwuYyBuZWVkIGl0LgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglPbiBXTV9HRVRURVhULCB0ZXJtaW5hdGUgdGhlIGxwYXJhbSBidWZmZXIgZXZlbiBpZiBzdHJpbmcgaXMgZW1wdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBUVlNfTk9TQ1JPTEwgYW5kIFRWU19OT0hTQ1JPTEwKCS0gSW1wbGVtZW50IEEgYW5kIFcgdmVyc2lvbnMgb2YgV01fTk9USUZZIGJhc2VkIG9uIHJlc3BvbnNlIHRvCgkgIFdNX05PVElGWUZPUk1BVC4gTm90ZSB0aGF0IHRoZSBFRElUTEFCRUwgbm90aWZpZXMgYXJlIG5vdCBkb25lLgoJLSBJbXBsZW1lbnQgV01fTk9USUZZRk9STUFULgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU1hdHRoaWFzIEZlY2huZXIgPGlkZWZpeEBmZWNobmVyLm5ldD4KCUFkZGVkIEdlcm1hbiAxMDUga2V5cyBrZXlib2FyZC4KCgkqIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L2FwaS5jLAoJICBkbGxzL3NoZG9jdncvYnJvd3Nlci5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9jb21pbXBsLmMsIGRsbHMvc2hkb2N2dy9jb21pbXBsLmgsCgkgIGRsbHMvc2hkb2N2dy9jb25uZWN0LmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywKCSAgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIG9sZS91dWlkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgdGhlIGJhc2ljIENPTSBmcmFtZXdvcmsuCglGaXhlZCBhbGwgSVVua25vd24gb2Ygc2hkb2N2dy5kbGwuCgoJKiBSRUFETUU6CglNYXJ0aW4gR2FydG9uIDxtYXJ0aW5Ad3Jhc3NlLmRlbW9uLmNvLnVrPgoJRml4ZWQgbGljZW5zZSB0ZXh0LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglDaGFybGVzIFZhdWdobiA8Y2hhcmxlc3ZAbWZvcy5vcmc+CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzdXBwb3J0IGZvciBnbE1UZXhDb29yZDJmU0dJUwoJLSB1cGRhdGVkIHRvIGxhdGVzdCBPcGVuR0wgZXh0ZW5zaW9ucwoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglCZXJuaGFyZCBSb3NlbmtyYWVuemVyIDxiZXJvQHJlZGhhdC5kZT4KCUFkZGVkIEludGVybmV0T3BlblVSTEEgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSG9vayBiYWNrIGludG8gdGhlIGNvcnJlY3QgTVNWQ1JUX190b2xvd2VyL3VwcGVyLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJQWRtaXJhbCBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglCZWdpbm5pbmdzIG9mIHRoZSBjb2RlIHRoYXQgc2hvdWxkIGFsbG93IERPUyBwcm9ncmFtcyB0byBzZXQgdGhlaXIKCWNvbG9yIHBhbGV0dGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIExWU19OT1NPUlRIRUFERVIgc3VwcG9ydC4KCVNvcnQgY29sdW1uIG9uIEhETl9JVEVNQ0xJQ0tBIHRvby4KCURvIG5vdCBlZGl0IGxhYmVscyBpZiBpY29uIHdhcyBjbGlja2VkLgoJRml4IHRoZSBpbmNvcnJlY3QgaWNvbiB3aWR0aCBpbiBteSBlYXJsaWVyIHBhdGNoLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBkZWZhdWx0IHN0b2NrIG9iamVjdHMgZm9yIGtub3duIG5vbi1VUyBjaGFyc2V0cy4KCgkqIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNkbW8vZG1vcnQuYywKCSAgZGxscy9tc2Rtby9tc2Rtby5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgQVBJcy4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgRmlsdGVyRGF0YSBvZiBEaXJlY3RTaG93IGZpbHRlcnMgKEZpbHRlckRhdGEgc2hvdWxkIGJlCglyZWdpc3RlcmVkIGZvciByZW5kZXJpbmcgbWVkaWEgZmlsZXMpLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlaW1wbGVtZW50IGZ1bmN0aW9ucyAzNTAsIDM1MSwgMzUyIHRvIHVzZSBhcHByb3ByaWF0ZSBXIGZ1bmN0aW9ucwoJICAodGhhbmtzIEr8cmdlbiEpCgktIEFkZCBhZGRpdGlvbmFsIGNvbW1lbnRzIHRvIGZ1bmN0aW9ucyAyNjYsIDI2NywgMjc2IGFuZCBhZGp1c3QgdGhlCgkgIHN0dWJiZWQgcmV0dXJuIHZhbHVlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgUkJOX0NISUxEU0laRSByZWN0IHZhbHVlIGZvciBDQ1NfVkVSVCByZWJhci4KCS0gRG8gVXBkYXRlV2luZG93IG9ubHkgaWYgZG9pbmcgcmVkcmF3cyB3aGVuIGRvaW5nIGxheW91dC4KCjIwMDItMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3F1YXJ0ei9hbXVuZG9jLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywKCSAgZGxscy9xdWFydHovY2FwZ3JhcGguYywgZGxscy9xdWFydHovY2FwZ3JhcGguaCwKCSAgZGxscy9xdWFydHovY3Njb252LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmdyYXBoLmgsIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmgsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovaWZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsCgkgIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5jLAoJICBkbGxzL3F1YXJ0ei94Zm9ybS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUZpeGVkIGF1ZGlvIHJlbmRlcmVyLgoJSW1wbGVtZW50ZWQgc2Vla2luZy4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglMZW8gdmFuIGRlbiBCZXJnIDxsZW9AY29ubmVjdHV4LmNvbT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBtaXNzaW5nIENMU0lELgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVNlcmdlaSBUdXJjaGFub3YgPHBsdW1iZXJAcHJpbnQudmxhZC5ydT4KCU9yZGluYWwgMzQyIGlzIHJlYWxseSBuYW1lZCBTSEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVE9PTEJBUl9MQnV0dG9uVXAgc2hvdWxkIHdvcmsgZXZlbiBpZiBSZWxlYXNlQ2FwdHVyZSB3YXMgYWxyZWFkeQoJY2FsbGVkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86CglKZXJlbXkgTmV3bWFuIDxqbmV3bWFuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFdBUlJBTlRZIGluY2x1c2lvbi4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIGVudW1zLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicy4KCgkqIGZpbGVzL3NtYi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZXMgZm9yIEZyZWVCU0QgYW5kIFNvbGFyaXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNvbnNvbGUgbW9kZSBET1MgcHJvZ3JhbXMgbm93IHJlY2VpdmUgbW91c2UgZXZlbnRzLgoJUmVwbGFjZWQgR2V0TWVzc2FnZSB3aXRoIFBlZWtNZXNzYWdlLCBzaW5jZSBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzCglpcyBhbGxvd2VkIHRvIHJldHVybiBzcG9udGFuZW91c2x5LgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBmaXggY29tcGxldGUgbGlzdGJveCBtZXNzdXAgYnkgb25seSB1cGRhdGluZyBpbiBjYXNlIGl0IG5lZWRzCgkgIHVwZGF0aW5nCgktIGZpeCBsaXN0Ym94IHNlbGVjdGlvbiBicmVha2FnZSBjYXVzaW5nIG11bHRpcGxlIHByb2dyYW1zIHRvIGdldAoJICB1bmluc3RhbGxlZAoJLSBpbXBsZW1lbnRlZCBzb3J0aW5nIG9mIGVudHJpZXMKCS0gbXVjaCBiZXR0ZXIgZGVidWcgc3RyaW5ncwoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHNob3cgdGhlIHdpbmRvdy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgZml4ZXMuCgoyMDAyLTAzLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL2ZpbGUuYywgZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NtYi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglCZWdpbiB0byBtYWtlIHdpbmUgYW4gU01CIGNsaWVudC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZG1vLmgsIGluY2x1ZGUvZG1vcmVnLmgsCgkgIGluY2x1ZGUvZG1vcnQuaCwgaW5jbHVkZS9tZWRpYWVyci5oLCBpbmNsdWRlL21lZGlhb2JqLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIGhlYWRlcnMuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRmluaXNoIGFueSBwZW5kaW5nIFdhaXRDb21tRXZlbnRzIGlmIHRoZSBldmVudCBtYXNrIGlzIHNldCB0byAwLgoKCSogZGxscy9tc3JsZTMyL21zcmxlMzIuYzoKCU1pY2hhZWwgS2FyY2hlciA8bWljaGFlbC5rYXJjaGVyQGRway5iZXJsaW4uZmlkby5kZT4KCXBEc3Qgd2FzIGFkdmFuY2VkIHRvbyBtdWNoIHdoZW4gZGVjb2RpbmcgREVMVEEgYmxvY2tzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgb3B0aW9uIFNXX0ZPUkNFTUlOSU1JWkUgdG8gU2hvd1dpbmRvdy4KCjIwMDItMDMtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB3aW5lYnVpbGQgKGFsbW9zdCkgY29tcGlsZSBhbmQgd29yayBvbiBXaW5kb3dzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBCZXR0ZXIgaGFuZGxpbmcgd2hlbiBzZXR0aW1lb2ZkYXkgaXMgbm90IGF2YWlsYWJsZS4KCS0gQWRkaW5nIG5hbWUgdHJhbnNsYXRpb25zIGZvciBwe2Nsb3NlLG9wZW59IGFuZCBzdHJ7LG59Y2FzZWNtcCBpZgoJICB0aGV5IGV4aXN0cyB1bmRlciBvdGhlciBuYW1lcy4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIG9wdGlvbmFsIGhlYWRlcnMgYW5kIGZ1bmN0aW9ucyBmb3IgY29tcGlsaW5nIG9uIFdpbmRvd3MKCXdpdGggTVNWQy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglGaXhlZCBpbnRlci1wcm9jZXNzIHBhY2tpbmcgb2YgQ0IvTEJfRklORFNUUklORywgQ0IvTEJfRklORFNUUklOR0VYQUNUCglhbmQgQ0IvTEJfU0VMRUNUU1RSSU5HLgoKCSogd2luZG93cy93aW5wcm9jLmM6IE1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglGaXhlZCBVbmljb2RlIGNvbnZlcnNpb24gZm9yIENCL0xCX0ZJTkRTVFJJTkcsIENCL0xCX0ZJTkRTVFJJTkdFWEFDVAoJYW5kIENCL0xCX1NFTEVDVFNUUklORy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglXYWxkZWsgSGViaXNjaCA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoJSW1wbGVtZW50ZWQgc3RkaW8gYnVmZmVyaW5nIGFuZCB1bmdldGMuIE1pc2Mgc3RkaW8gZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHJlcG9ydCBtb2RlIHRleHQganVzdGlmaWNhdGlvbi4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL2ZpbGUuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTZXQgYW4gb3ZlcmxhcHBlZCBoRXZlbnQgYmVmb3JlIGNhbGxpbmcgYW55IEFQQ3MuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovY2FwZ3JhcGguYywKCSAgZGxscy9xdWFydHovY2FwZ3JhcGguaCwgZGxscy9xdWFydHovZmlsZXNpbmsuYywKCSAgZGxscy9xdWFydHovZmlsZXNpbmsuaCwgZGxscy9xdWFydHovbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBDTFNJRHMuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGFuZCBmaXhlZCBzb21lIEphcGFuZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgc3VwcG9ydCBmb3IgV01fV0lORE9XUE9TQ0hBTkdFRCB0byBzYXZlIG5ldyBvcmlnaW4gb2Ygd2luZG93LgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUGFzcyBpbmZvcm1hdGlvbiB0aHJvdWdoIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHN0YXRpYyB2YXJpYWJsZXMuCglBZGQgcHJvdGVjdGlvbiB0byBwcmV2ZW50IHJlYWRpbmcgb3V0c2lkZSB0aGUgYnVmZmVyLgoJQmV0dGVyIGhhbmRsaW5nIG9mIGRlZ2VuZXJhdGUgY2FzZXMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJUHJldmVudCBzZXR1cCBmcm9tIGNyYXNoaW5nIGlmIGEgc2VjdGlvbiBpbiB0aGUgSU5GIGlzIGVtcHR5IChubwoJZW50cmllcykgKHRoaXMgaGFwcGVucyB3aGVuIGluc3RhbGxpbmcgSUU1KS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglUdXJjaGFub3YgU2VyZ2VpIDxwbHVtYmVyQHByaW50LnZsYWQucnU+CglJbXBsZW1lbnQgb3JkaW5hbCAzNDIuCgoJKiB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJSmFzb24gUGhpbGxpcHMgPGphc29ucDFAY294Lm5ldD4KCU1ha2Ugd2luZWNsaXBzcnYgcnVuIGFzIGEgZGFlbW9uIChjbG9zZSBzdGRvdXQvc3RkZXJyLCBubyBjb250cm9sbGluZwoJdGVybWluYWwsIHNlc3Npb24gZ3JvdXAgbGVhZGVyKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBeGVsIFNjaG1pZHQgPGJhYmVAYXhlbC1zY2htaWR0LW5ldC5kZT4KCUFkZGVkIGtleWJvYXJkIGxheW91dCBmb3IgTG9naXRlY2ggQ29yZGxlc3MgRGVza3RvcCBQcm8uCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBGSVhNRXMgZm9yIGFjdGlvbnMgd2l0aCBpZD49MTE1LiBUaGVzZSBhY3Rpb25zIHdlcmUgbm90Cglwcm9jZXNzZWQgYmVmb3JlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc2NhZmZvbGRpbmcgZm9yIFRCX3tHRVR8U0VUfVBBRERJTkcuCgktIFJlcGxhY2Ugd3JvbmcgdGVzdCBmb3IgQ0NTX1ZFUlQgd2l0aCBjb3JyZWN0IHRlc3QgZm9yIHVuZG9jdW1lbnRlZAoJICBUQlNUWUxFX0VYXyBzdHlsZSAweDA0LgoJLSBBZGQgc3VwcG9ydCBmb3IgdW5kb2N1bWVudGVkIFRCX1NFVEJVVFRPTlNJWkUgd2hlcmUgdGhlIHNpemUgaXMKCSAgemVybywgc2V0cyB0byBkZWZhdWx0IHZhbHVlLgoJLSBJc3N1ZSBGSVhNRXMgZm9yIHVuc3VwcG9ydGVkIGV4dGVuZGVkIHN0eWxlcy4KCS0gSW1wbGVtZW50IGZpcnN0IHRyeSBhdCB1bmRvY3VtZW50ZWQgdG9vbGJhciBtZXNzYWdlIDB4MDQ2My4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVHJhY2UgdW5kb2N1bWVudGVkIHRvb2xiYXIgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgQlROXy4uLiBkZWZpbml0aW9ucyAocmVwbGFjZW1lbnQgZm9yIFRCU1RZTEVfLi4uKS4KCS0gQWRkIGRlZmluaXRpb25zIG9mIGFkZGl0aW9uYWwgVEJTVFlMRV9FWF8gc3R5bGVzLiBJbmNsdWRpbmcKCSAgdW5kb2N1bWVudGVkIG9uZSB1c2VkIGJ5IElFNS4KCS0gQWRkIGFkZGl0aW9uYWwgdG9vbGJhciBtZXNzYWdlIGRlZmluaXRpb25zIGluY2x1ZGluZwoJICB1bmRvY3VtZW50ZWQgb25lcyB1c2VkIGJ5IGF0IGxlYXN0IElFNS4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNvbWUgc21hbGwgY2xlYW51cHMgdG8gZGlucHV0IG1vdXNlIGNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQ3JlYXRlZCBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBJbnRlcm5ldFNldE9wdGlvbiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVGVzdCBiVW5pY29kZSBhbmQgY2FsbCBhcHByb3ByaWF0ZSBEcmF3VGV4dCByb3V0aW5lLgoKMjAwMi0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZToKCVJlbGVhc2UgMjAwMjAzMTAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBMSUNFTlNFLk9MRDogS2VlcCBvbGQgbGljZW5zZSBhcm91bmQuCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaCwgdG9vbHMvYXBpdy5pbmRleCwgdG9vbHMvaXBjbCwKCSAgdG9vbHMvbWFrZV9vczIuY21kLCB0b29scy9tYWtlaHRtbC5wbCwgdG9vbHMvdW5pbWFwLnBsLAoJICB0b29scy93bWMvbGFuZ3VhZ2UuYzoKCVJlbW92ZWQgc29tZSBvYnNvbGV0ZSBmaWxlcy4KCgkqICovKjoKCUFkZGVkIExHUEwgc3RhbmRhcmQgY29tbWVudCwgYW5kIGNvcHlyaWdodCBub3RpY2VzIHdoZXJlIG5lY2Vzc2FyeS4KCUdsb2JhbCByZXBsYWNlbWVudCBvZiBkZWJ1Z3Rvb2xzLmggYnkgd2luZS9kZWJ1Zy5oLgoKCSogQ09QWUlORy5MSUIsIExJQ0VOU0UsIFdBUlJBTlRZOgoJQ2hhbmdlZCBsaWNlbnNlIHRvIExHUEwuCgoyMDAyLTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAyMDIyOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wMi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9hdXRob3JzLmgsIEFVVEhPUlM6CglVcGRhdGVkIGF1dGhvcnMgbGlzdCBmcm9tIHRoZSBDaGFuZ2Vsb2cuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKCWhhdmUgYmVlbiBsZWZ0IG91dC4KCgkqIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlOgoJQWRkZWQgdGVzdHMgZXh0cmEgZGlyZWN0b3JpZXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL1JFQURNRSwKCSAgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL2FmdGVyLnJlZywgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL2JlZm9yZS5yZWcsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9vcmlnLnJlZywgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL3JlZ2FwaS5wbCwKCSAgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FLAoJICBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdSZXN0b3Jlci5wbCwKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ1NldC5zaCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglNYWRlIHJlZ2FwaSBzY3JpcHRzIGFibGUgdG8gcHJvY2VzcyAucmVnIGZpbGVzIGluIHJlZ2VkaXQKCWZvcm1hdC4gSW1wbGVtZW50ZWQgdW5pdCB0ZXN0cyBmb3IgcmVnIGRpZmYgZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMvbWFrZV9kbGxzLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCUFkZGVkIG1ha2UgY2hlY2sgdGFyZ2V0IHRvIHJ1biB1bml0IHRlc3RzIHRvbyBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlCglzdGFuZGFyZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXhlZCB3aW5wcm9jIG1lbW9yeSBsZWFrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFzayBmb3IgY29ycmVjdCBudW1iZXIgb2YgY2hhcnMgaW4gRWRpdExibFduZFByb2NULgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxjQGxpbmRvd3MuY29tPgoJTW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTSExXQVBJXzM1Ni4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRml4ZWQgbWVyZ2UgZXJyb3IuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJTElTVFZJRVdfSW5zZXJ0Q29sdW1uVCBjYW4gYmUgY2FsbGVkIHdpdGggYSB3aWR0aCBvZgoJTFZTQ1dfQVVUT1NJWkVfVVNFSEVBREVSLgoJVXNlIHRoZSBjb3JyZWN0IHN0cmluZ3Mgd2hlbiBjb2x1bW4gYXV0b3NpemluZyBvbiBjb2x1bW5zIG90aGVyIHRoYW4KCWNvbHVtbiAwLgoJTFZTQ1dfQVVUT1NJWkVfVVNFSEVBREVSIHVzZXMgYm90aCBpdGVtIGFuZCBoZWFkZXIgc3RyaW5ncy4KCjIwMDItMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbm50Lmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIGRlZmluZXMgYW5kIG9mZnNldHMuCgoJKiBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvc3RyaW5nLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglWYXJpb3VzIGNvc21ldGljIGNoYW5nZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy91c2VyMzJfdGVzdC5zcGVjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyB1bml0IHRlc3QuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbjoKCUNvc21ldGljIGZpeGVzLgoKCSogcHJvZ3JhbXMvY29udHJvbC9sY2NtYWtlLmJhdCwgcHJvZ3JhbXMvbm90ZXBhZC9sY2NtYWtlLAoJICBwcm9ncmFtcy92aWV3L2xjY21ha2VmaWxlLCBwcm9ncmFtcy93Y21kL21ha2VmaWxlLmJjYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUmVtb3ZlZCBhbHRlcm5hdGl2ZSBtYWtlIHNjcmlwdHMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUltcGxlbWVudGVkICJBcHAgUGF0aHMiIHJlZ2lzdHJ5IGtleSBzdXBwb3J0IGZvciBTZWFyY2hQYXRoKCkuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCBvdmVyZmxvdyBhbmQgc2lnbmVkL3Vuc2lnbmVkIGJlaGF2aW91ci4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oOgoJUmVpbXBsZW1lbnRlZCBEZWJ1Z0JyZWFrUHJvY2Vzcy4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dpbmVkdW1wL21pc2MuYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBtc2Rvcy92eGQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5lZG9zL2RldmljZXMuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNwZWxsaW5nL2FsaWdubWVudCBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIHRvb2xzL3dpbmVjaGVjaywKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBSRUFETUU6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIHN0cmVzcyB0aGUgZmFjdCB0aGF0IHdpbmVpbnN0YWxsIGlzIGluIFdpbmUgc291cmNlCgktIGFkZCBtaXNzaW5nIHR0eWRydi94MTFkcnYgc2VjdGlvbiB0byB3aW5lLmNvbmYubWFuCgktIG1ha2Ugc3VyZSB0aGF0IHdlIGFsc28gbG9hZCBzaGRvY3Z3IGFzIGJ1aWx0aW4gaW4gc2FtcGxlIGNvbmZpZyBmaWxlCgktIGFkZCBzYW1wbGUgQXBwRGVmYXVsdHMgc2VjdGlvbiB0byBzYW1wbGUgY29uZmlnIGZpbGUKCS0gd2luZWNoZWNrIHVwZGF0ZQoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwKCSAgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgZGV0YWNoIGNvbW1hbmQgdG8gdGhlIGRlYnVnZ2VyLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOZXcgWFAgZGVidWdnaW5nIEFQSXM6IGltcGxlbWVudGVkIERlYnVnQWN0aXZlUHJvY2Vzc1N0b3AsCglEZWJ1Z1NldFByb2Nlc3NLaWxsT25FeGl0LCBEZWJ1Z0JyZWFrUHJvY2Vzcy4KCgkqIEJVR1M6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSZXdyb3RlIEJVR1MgZmlsZS4gTGlzdGVkIGRpcmVjdGlvbnMgZm9yIHRob3NlIHdobyB3YW50IHRvIGNvbnRyaWJ1dGUKCXRvIHRoZSBwcm9qZWN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDZW50cmUgdGV4dCBjb3JyZWN0bHkgZm9yIHRoZSBzZWxlY3RlZCBpdGVtLgoJRHJhdyBjb21wbGV0ZSBiYWNrZ3JvdW5kIGZvciB0aGUgc2VsZWN0ZWQgaXRlbS4KCUNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBhIGxhcmdlIGljb24gbW9yZSBjb3JyZWN0bHkgKGluY2x1ZGluZyBtdWx0aWxpbmUKCWxhYmVscykuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFN1cHBvcnQgQ0NTX1ZFUlQgYXMgYWx0ZXJuYXRpdmUgZm9yIFRCU1RZTEVfV1JBUEFCTEUuCgktIFRCX0lOU0VSVEJVVFRPTlcgd2FzIG5vdCBhcyBmdW5jdGlvbmFsIGFzIHRoZSAnQScgdmVyc2lvbi4gVGhleSBub3cKCSAgbWF0Y2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgU2hlbGxFeGVjdXRlIGZ1bmN0aW9ucyB3aGVuIGRkZWV4ZWMgd2FzIHByZXNlbnQgaW4gcmVnaXN0cnkuCgoJKiB3aW5kb3dzL3dpbi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCB0aGUgc3RyYW5nZSBjYXNlIGluIFdJTl9GaXhDb29yZGluYXRlcyB3aGVyZSB4IGFuZCBjeCBhcmUgbm90CglkZWZhdWx0IGJ1dCBjeSBpcyBDV19VU0VERUZBVUxULgoKMjAwMi0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IEZpeGVkIG1ha2UgdW5pbnN0YWxsLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjdXQmcGFzdGUgcHJvYmxlbSBpbiBTRVRSVFMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IFdvcmQgYnJlYWtpbmcgaW4gY2VudHJlZC9yaWdodCBqdXN0aWZpZWQgbW9kZTsgaXQgd2FzIGxlYXZpbmcgYQoJdHJhaWxpbmcgc3BhY2Ugd2hpY2ggaXQgc2hvdWxkIG9ubHkgZG8gZm9yIGxlZnQtanVzdGlmaWVkIHRleHQuCglBbHNvIHRpZ2h0ZW4gdXAgc29tZSBjb21tZW50cy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIGFkZGl0aW9uYWwgQ0NNXyBtZXNzYWdlIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBFTV9GTVRMSU5FUyBtZXNzYWdlIGJhc2VkIG9uIHJlbGF5IHRyYWNlIG9mIG5hdGl2ZS4KCgkqIGluY2x1ZGUvbW1yZWcuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbG90cyBvZiBtaXNzaW5nIGRlZmluZXMuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgRGRlR2V0RGF0YSB3aGVuIGNhbGxlZCBmb3IgZ2V0dGluZyBzaXplLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFdNX1NFVEZPTlQgaGFuZGxpbmcgKG5vIHJlZHJhdyBtYWRlIGluIHNvbWUgY2FzZXMpLgoKCSogZGVidWdnZXIvaW5mby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpYyBmaXhlcyB0byAnd2FsayBwcm9jJyBjb21tYW5kLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywgZGxscy94MTFkcnYveDExZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggY3Jhc2ggaW4gdGhlIFgxMSBIQUwgd2hlbiBzZXR0aW5nIGEgTlVMTCBwYWxldHRlIHRvIGEgc3VyZmFjZS4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHE6CglQaGlsaXBwIFdvbGxlcm1hbm4gPHBoaWxfd29AZ214Lm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBDcnV4IExpbnV4IGRpc3RyaWJ1dGlvbiAod2l0aCBvcGVuamFkZSkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IGFub3RoZXIgYmFkIHRlc3QuIENhdXNlZCByZWdyZXNzaW9uIGluIElFIDQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNoYXJsZXMgRHVmZnkgPGNkdWZmeUBiaWdmb290LmNvbT4KCVN0b3AgVE9PTEJBUl9NZWFzdXJlU3RyaW5nIGZyb20gZHlpbmcgb24gZW1wdHkgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVBhcnRpYWxseSByZXBhaXIgaG90c3BvdCBoYW5kbGluZy4KCjIwMDItMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9jb25zb2xlLmMsCgkgIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9pbml0LmMsIGluY2x1ZGUvbXN2Y3J0L2V4Y3B0LmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZG93cy5oLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy91c2VyL2xzdHIuYywgZGVidWdnZXIvZGJnLnksCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCU5ldyBmaWxlIG1zdmNydC9leGNwdC5oLiBNb3ZlIHNvbWUgc3R1ZmYgb3V0IG9mIHdpbm50LmggaW50byBpdC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVByZXZlbnQgbG9jay11cCB3aXRoIGEgZm9jdXMgbG9vcCBiZXR3ZWVuIHR3byB0b3AgbGV2ZWwgdW5tYW5hZ2VkCgl3aW5kb3dzLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIFhWaXN1YWxJREZyb21WaXN1YWwgdG8gdHN4MTEgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUxWTV9HZXRJdGVtUmVjdCBzaG91bGQgbm90IHRha2UgdGV4dCBzaXplIGluIGFjY291bnQgZm9yIExWSVJfTEFCRUwgaW4KCXJlcG9ydCBtb2RlLgoKMjAwMi0wMi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2ZpbGUuYzoKCUdlcmhhcmQgVy4gR3J1YmVyIDxzcGFyaGF3a0BnbXguYXQ+CglNb3ZlRmlsZUV4IG5vdyBlbnRlcnMgdGhlIGZpbGVzIGluIHRoZSByZWdpc3RyeSB3aGVuIHRoZSBib290IGRlbGF5CglmbGFnIGlzIHNldC4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJRml4IHJldHVybiB0eXBlIG9mIEdldEFzeW5jS2V5U3RhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUltcGxlbWVudCBtdWx0aWxpbmUgbGFiZWxzIGluIHRoZSBMYXJnZSBJdGVtIHZpZXcgYnkgdXNpbmcgRHJhd1RleHQKCU5vdGUgdGhhdCB0aGlzIG5vdyBoaWdobGlnaHRzIHdlYWtuZXNzZXMgaW4gdGhlIGxhYmVsIG1lYXN1cmluZyBjb2RlCglldGMuIHdoaWNoIGNhbm5vdCBjb3JyZWN0bHkgaGFuZGxlIG11bHRpbGluZSBsYWJlbHMuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ29tcGlsZSBmaXggZm9yIEdDQyAyLjcueC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJQWRkIHNwZWMgc3R1YiBmb3IgUnRsR2V0TnRWZXJzaW9uTnVtYmVycy4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJQ2hhbmdlIHVzZWxlc3Mgd2FybmluZyBpbnRvIGEgVFJBQ0UuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgZGxscy9tc3ZjcnQvZXhpdC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglhdGV4aXQgZG9lc24ndCB0YWtlIGEgX29uZXhpdF90IHBhcmFtZXRlci4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVJlbWVtYmVyIHRoZSBjdXJyZW50bHkgYWN0aXZlIGluZGV4IGJlZm9yZSByZWZyZXNoaW5nLgoKMjAwMi0wMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9sb2NrLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9tdGRsbC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglBZGQgX2xvY2ssX3VubG9jayBhbmQgaGVhZGVyIGZpbGUgZm9yIHRoZW0uCglDb252ZXJ0IGFsbCBtc3ZjcnQgbG9ja3Mgb3ZlciB0byB1c2UgX2xvY2sgYW5kIF91bmxvY2suCglFeHBsaWNpdGx5IG1ha2UgbXN2Y3J0IGNvbXBpbGUgd2l0aCBtdWx0aXRocmVhZGVkIG9wdGlvbi4KCUZpeCBmbGFnIGhhbmRsaW5nIGluIF9zb3Blbi4gQWRkIFctPkEgY2FsbCBmb3IgbmV3IF9zd29wZW4uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglBdm9pZCBhc3NlcnQgZm9yIHZlcnkgbGFyZ2UgQysrIC5zbyBmaWxlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglGaXggSUNPTV9ERUZJTkUgZm9yIEMrKy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZvcndhcmQgb3JkaW5hbHMgNDAsIDQxLCAxNDMsIDM2MiB0byBhcHByb3ByaWF0ZSByb3V0aW5lcy4KCS0gSW1wbGVtZW50IG9yZGluYWxzIDE1NSwgMzUwLCAzNTEsIDM1MiwgNDE4LCA0MzYuCgktIEZha2UgaW1wbGVtZW50YXRpb24gb2YgU0hHZXRJbnZlcnNlQ01BUC4KCS0gU3R1YiBvcmRpbmFsIDIwOS4KCS0gRml4IGRlZmluaXRpb24gb2Ygb3JkaW5hbCA3LgoJLSBJbXBsZW1lbnQgU0hHZXRUaHJlYWRSZWYgYW5kIFNIU2V0VGhyZWFkUmVmLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggcHJvYmxlbXMgaW4gRFBBX01lcmdlIGV4cG9zZWQgYnkgcHJldmlvdXMgY29kZSBjbGVhbnVwLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEFkYW0gRC4gTW9zcyA8YWRhbUBnaW1wLm9yZz4KCVBhcnRpYWxseSByZXZlcnQgcHJldmlvdXMgY2hhbmdlcywgZm9yY2UgY29uZmlndXJlIHRvIHdyaXRlIGFuCglvbGQtc3R5bGUgY29uZmlnLmNhY2hlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRHJhd1RleHQgZWxsaXBzaWZpY2F0aW9uIG9uIGFsbCBsaW5lcywgbm90IGp1c3Qgc2luZ2xlLWxpbmUuCgoyMDAyLTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jdGVzdHMsIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jLCBpbmNsdWRlL3dpbmUvdGVzdC5oLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIE1ha2UucnVsZXMuaW46CglQcmVsaW1pbmFyeSB2ZXJzaW9uIG9mIHRoZSBDIHVuaXQgdGVzdHMgcnVuLXRpbWUgZW52aXJvbm1lbnQuCglBZGRlZCBtYWtlIHJ1bGVzIGZvciBidWlsZGluZyBhbmQgcnVubmluZyBDIHVuaXQgdGVzdHMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xjYy5oLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCS0gbWFkZSBub3RlcGFkIGNvbXBpbGUgd2l0aCBDeWd3aW4KCS0gbWFkZSBjaGFuZ2VzIHRvIHRoZSBwcmVjb21waWxlciBkaXJlY3RpdmVzIHRvIGNoZWNrIGZvciBzcGVjaWZpYwoJICBmZWF0dXJlcyBpbnN0ZWFkIG9mIGNoZWNraW5nIGZvciB0aGUgZW52aXJvbm1lbnQgdmVyc2lvbi4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURyYXd0ZXh0IHRpZHlpbmcgdXAgcmVhZHkgZm9yIHRoZSBuZXh0IGJpZyBjaGFuZ2U6CgktIEZpeCBicmFpbmZhZGUgaW4gcHJldmlvdXMgZGVsdGEKCS0gTW92ZSBlbGxpcHNpZmljYXRpb24gcmVzdWx0cyB0byBzdGF0aWMgbWVtb3J5OyB0aGV5IGFyZSBnb2luZyB0bwoJICBoYXZlIHRvIGJlIHJlZmVyZW5jZWQgaW5zaWRlIE5leHRMaW5lVyBhbmQgdGhlIGFyZyBsaXN0IGlzIHRvbyBiaWcKCSAgYWxyZWFkeS4KCS0gQWRkIHRoZSBtaXNzaW5nIGVsbGlwc2lmaWNhdGlvbiByZXN1bHQgKGxlbl91bmRlcikgdG8gc2ltcGxpZnkgY29kaW5nLgoJLSBTbGlnaHQgY29ycmVjdGlvbiB0byBwcmVmaXggdHJhY2tpbmcgZm9yIHdoZW4gdGhlcmUgYXJlIHNldmVyYWwKCSAgdW5kZXJsaW5lZCBjaGFyYWN0ZXJzIG9uIGEgc2luZ2xlIGxpbmUgKERUX0VYUEFORFRBQlMgb25seSkuCgktIEFsbG9jYXRlIGFuZCBmcmVlIHRoZSB0ZW1wb3JhcnkgY29weSByZXF1aXJlZCBmb3IgRFRfTU9ESUZZU1RSSU5HCgkgIHJhdGhlciB0aGFuIHVzaW5nIGEgZml4ZWQgc2l6ZSBzdGFjayBhcnJheS4KCS0gSW50cm9kdWNlIGxhc3RsaW5lIGludG8gdGhlIG1haW4gbG9vcDsgaXQgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgd2UKCSAgYXJlIGdvaW5nIHRvIG5lZWQgaXQuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBQYXRoSXNVTkNTZXJ2ZXJTaGFyZSBmcm9tIG51bGwgbHBzelBhdGguCgoyMDAyLTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy9rZXJuZWwvY29tbS5jLCBjb25maWd1cmUuYWMsIGNvbmZpZ3VyZToKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLi5jb20+CglTdXBwb3J0IGZvciBub25zdGFuZGFyZCBiYXVkIHJhdGUgaW4gU2V0Q29tbVN0YXRlLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQucmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHBhcnNpbmcgb2YgZmlsZSBuYW1lLCBwYXNzZWQgaW4gY29tbWFuZCBsaW5lLCBsb2FkaW5nIG5ldwoJZmlsZSBvbiBzdGFydHVwLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHR3byBtaXNzaW5nIGV4cG9ydHMuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCVBoaWxsaXAgRXpvbHQgPGV6b2x0QHBlcmYuemtvLmRlYy5jb20+CglGaXhlZCB0aGUgc2Nyb2xsYmFyIHBvc2l0aW9uIG92ZXJmbG93cyB1c2luZyBNdWxEaXYuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglPbmRyZWogTWFjZWsgPHhtYWNla0BpbmZvcm1hdGljcy5tdW5pLmN6PgoJRml4IG9mIExpc3RWaWV3IGludmFsaWRhdGlvbiBpbiBMSVNUVklFV19TZXRCa0NvbG9yLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUhDUl9HZXREZWZhdWx0SWNvbiBzaG91bGQgc2V0IGljb24gbnVtYmVyIHRvIDAgaWYgaXQncyBtaXNzaW5nIGZyb20KCXRoZSByZWcgZW50cnkuCgoJKiB0b29scy93aW5laW5zdGFsbDogQWRhbSBELiBNb3NzIDxhZGFtQGdpbXAub3JnPgoJTWFrZSB3aW5laW5zdGFsbCB3b3JrIGluIHRoZSBuZXctYXV0b2NvbmYtdmVyc2lvbiB3b3JsZC4KCgkqIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwgZGxscy9xdWFydHovYmFzZWZpbHQuaCwKCSAgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5oLCBkbGxzL3F1YXJ0ei94Zm9ybS5jLAoJICBkbGxzL3F1YXJ0ei94Zm9ybS5oLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgZGVhZGxvY2tzLgoKCSogZGxscy9hdmlmaWwzMi9pYXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2lnZnJhbWUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlcyBmb3IgY29tcGF0aWJpbGl0eS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIG1zcmxlMzIuZGxsIChkZWNvbXByZXNzb3Igb2YgTVJMRSkuCgoJKiBkbGxzL21zcmxlMzIvbXNybGUzMi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGJ1Z3MgaW4gcHJvY2Vzc2luZyBERUxUQS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNoYW5nZSB0aGUgd2F5IHRoYXQgRHJhd1RleHQgcGFyc2VzIHRoZSBuZXh0IGxpbmUgdG8gZGlzcGxheSwgcmVhZHkgdG8KCXN1cHBvcnQgbXVsdGlsaW5lIGVsbGlwc2lmaWNhdGlvbiBldGMuICBSYXRoZXIgdGhhbiBtZWFzdXJpbmcgdGhlIHRleHQKCWVhY2ggdGltZSB3ZSBhZGQgYSBjaGFyYWN0ZXIgYW5kIGJyZWFraW5nIG9uY2UgaXQgaXMgdG9vIGxvbmcgYW5kCglXT1JEQlJFQUsgaXMgZW5hYmxlZCwgd2UgY29weSBhIHdob2xlIHRleHQgc2VnbWVudCBhbmQgdGhlbiBtZWFzdXJlCglpdDsgR2V0VGV4dEV4dGVudFBvaW50RXggaXMgZGVzaWduZWQgdG8gdGVsbCB1cyBob3cgbXVjaCBmaXR0ZWQuICBUaGlzCgltYXkgcmVzdWx0IGluIGEgbGl0dGxlIHJlc2Nhbm5pbmcgaWYgd29yZGJyZWFrIGlzIGVuYWJsZWQgYnV0IHdpbGwgYmUKCXdlbGwgd29ydGggd2hpbGUgd2hlbiBtdWx0aWxpbmUgcGF0aCBlbGxpcHNpZmljYXRpb24gaXMgYnJvdWdodCBkb3duCglpbnRvIHRoZSBOZXh0TGluZSBmdW5jdGlvbi4gIE5vdGUgYWxzbyB0aGF0IHRoZSB3b3JkYnJlYWsgY2FsY3VsYXRpb24KCWlzIGEgbGl0dGxlIG1vcmUgY29tcGxldGUgKGUuZy4gIGluY2x1ZGluZyBicmVhay13aXRoaW4td29yZCBmb3IKCURUX0VESVRDT05UUk9MKS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJUGF0cmljayBIYWxsZXIgPHBhdHJpY2suaGFsbGVyQGlubm90ZWsuZGU+CglGaXggY3Jhc2ggaW4gVmFyaWFudFRpbWVUb0Rvc0RhdGVUaW1lLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJTXVzdCBtYWtlIGEgY29weSBvZiBnbG9iYWwgaGFuZGxlIHJldHVybmVkIGJ5IEdldENsaXBib2FyZERhdGE7IGl0IGlzCglub3QgdmFsaWQgYWZ0ZXIgd2UgY2FsbCBDbG9zZUNsaXBib2FyZC4gQXBwbGljYXRpb24gaXMgcmVzcG9uc2libGUgZm9yCglmcmVlaW5nIHRoZSBtZW1vcnkgKGZpeGVzIGNvcHkvcGFzdGUgaW4gbWFpbCBib2R5IGluIEZvcnRlIEFnZW50KS4KCjIwMDItMDItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9tYWtlZGVwLmM6CglNb2RpZmllZCBtYWtlZGVwIHRvIGhhbmRsZSAjaW5jbHVkZSA8PiBjb3JyZWN0bHkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCVBhdHJpayBTdHJpZHZhbGwpLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5kb3dzIGhlYWRlcnMuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDb252ZXJ0IHNvbWUgaW52YWxpZCBvZmZzZXRzIGluIEdldFdpbmRvd0xvbmcxNiBpbnRvIHZhbGlkIG9mZnNldHMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNZWFzdXJlIHRoZSB0ZXh0IG1vcmUgcmVhc29uYWJseS4gVGhpcyBoYW5kbGVzIGludGVyY2hhcmFjdGVyIHNwYWNpbmcKCWFuZCBzaG91bGQgaGFuZGxlIGFueSBrZXJuaW5nIGV0Yy4gdGhhdCBtaWdodCBoYXBwZW4uIEFsc28gZW5zdXJlIG5vCgl3b3JkYnJlYWtpbmcgb24gc2luZ2xlbGluZSB0ZXh0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQWRkZWQgYSBrZXlib2FyZCBtYXRjaGVkIHRvIFZOQy4KCgkqIGluY2x1ZGUvbnRkZGsuaDogUm9uIEdhZ2UgPHJvbkByb25nYWdlLm9yZz4KCUFkZGVkIHNldmVyYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFNIRmlsZU9wZXJhdGlvbigpIHdoZW4gcmVxdWVzdGVkIHRvIGNvcHkgZmlsZXMsIGZpZ3VyZSBvdXQgd2hlbiB0aGUKCWRlc3RpbmF0aW9uIGlzIHRvIGJlIHRyZWF0ZWQgYXMgYSBkaXJlY3RvcnkgYW5kIGhhbmRsZSB0aG9zZSBjYXNlcy4KCgkqIGNvbmZpZ3VyZS5hYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUZpeGVkIGluc3RhbGxhdGlvbiBpc3N1ZXMgY2F1c2VkIGJ5IG5ldyBjb25maWd1cmUgc2NyaXB0LgoKMjAwMi0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBtaXNjL29wdGlvbnMuYzoKCXZlcnNpb24uaCBpcyBub3cgaW4gaW5jbHVkZS93aW5lIGRpcmVjdG9yeS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2luZWxhdW5jaGVyLmluLAoJICBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLAoJICBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS92ZXJzaW9uLmgsIGluY2x1ZGUvd2luZS8uY3ZzaWdub3JlLAoJICBjb25maWd1cmUuYWMsIGNvbmZpZ3VyZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIFZFUlNJT04sCgkgIGNvbmZpZ3VyZToKCVVwZ3JhZGVkIGNvbmZpZ3VyZSBzY3JpcHQgdG8gdXNlIGF1dG9jb25mIDIuNTAgZmVhdHVyZXMsIGFuZCByZW5hbWVkCgl0byBjb25maWd1cmUuYWMuCglDaGFuZ2VkIGEgZmV3IHRoaW5ncyB0byBiZXR0ZXIgZm9sbG93IHRoZSBhdXRvY29uZiBndWlkZWxpbmVzLgoKCSogdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy9jb25maWcuc3ViOgoJVXBkYXRlZCB0byBuZXdlciB2ZXJzaW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJTWFydGluIERhbGVja2kgPGRhbGVja2lAZXZpc2lvbi12ZW50dXJlcy5jb20+CglTb21lIGFydHdvcmsgb24gdGhlIGRlZmF1bHQgaWNvbnMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEcmF3VGV4dCBzaG91bGQgbm90IHNwbGl0IHdvcmRzIGp1c3QgYmVjYXVzZSBvZiBjbGlwcGluZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gU2hlbGxFeGVjdXRlMTYsIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNwYWNlIGJldHdlZW4gY29tbWFuZCBhbmQKCXBhcmFtZXRlcnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IGFnYWluc3QgTlVMTCB3c2FkZHJsZW4gaW4gd3Nfc29ja2FkZHJfYWxsb2MuCgoyMDAyLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBHREIgbmVlZCB0byBoYXZlIHRoZSBmaWxlbmFtZSBkYXRhIGF2YWlsYWJsZQoJZm9yIGVhY2ggc2VjdGlvbiwgc28gd2UgbmVlZCB0byBvdXRwdXQgaXQgYWdhaW4gZm9yIHRoZSBkYXRhIHNlY3Rpb24uCgoJKiB3aW4zMi9lZGl0bGluZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgSG9tZSwgRW5kIGFuZCBFbnRlciBvbiB0aGUga2V5cGFkIHdvcmsgaW4gdGhlIGRlYnVnZ2VyLgoKCSogd2luMzIvZmlsZS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglTZXRGaWxlQXR0cmlidXRlcyByZXR1cm5zIG5vdyBhbiBlcnJvciBpZiB0YXJnZXQgZmlsZSBpcyBvbiBDRFJPTS4KCgkqIGZpbGVzL2RyaXZlLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIG1pc3NpbmcgYnJlYWsgc3RhdGVtZW50LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgU0hSZWdXcml0ZVVTVmFsdWV7QXxXfS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVdoZW4gdGhlIGNvbW1hbmRJRCB3YXMgYmVpbmcgdHJlYXRlZCBhcyB0aGUgaW5kZXgsIG5vIGNoZWNrIGZvciBpbmRleAoJZ3JlYXRlciB0aGFuIG51bWJlciBvZiBidXR0b25zIHdhcyBkb25lLiBOb3cgZml4ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHJlZ3Jlc3Npb24gaW4gc29tZSBwcm9ncmFtcyBkdWUgdG8gQ0xSX0RFRkFVTFQgZml4LiBOb3RpY2VkIGluCgljb250cm9sLXNweSByZWJhci5leGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IFRvQXNjaWkvVG9Vbmljb2RlIHRvIHdvcmsgd2l0aCBzY2FuQ29kZSA9IDAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCB0ZXN0cyBpbnZvbHZlZCB3aXRoIHByb2Nlc3NpbmcgdGhlIExWSUZfRElfU0VUSVRFTSBmbGFnLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW5pdGlhbGl6ZSBwc3pUZXh0IHRvIDAgZm9yIGludGVybmFsIC0+Y2VJdGVtIHRvIGVsaW1pbmF0ZSBtb3ZlcyB0bwoJZ2FyYmFnZSBsb2NhdGlvbnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGRlZmF1bHQgZnVuY3Rpb24gbWFyc2hhbGxlciByZWdpc3RyeSBlbnRyeS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVB1dCBpbiBwbGFjZSBhIHByb3BlciB0YWIgbW9kZWwgd2l0aGluIERyYXdUZXh0IChhbHNvIGluY2x1ZGVzCglzaW1wbGlmeWluZyBURVhUX05leHRMaW5lVyB0byByZW1vdmUgZHVwbGljYXRlIGNvZGUpLgoKMjAwMi0wMi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvZmlsZS5jOgoJQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AbGVzc2VyLW1hZ29vLmxjcy5taXQuZWR1PgoJRmlsbGVkIG91dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgZnNjYW5mIGFuZCBfY3NjYW5mLgoKCSogZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgaW4gY2FjaGUgaW5pdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgc3VwcGxpZWQgYnVmZmVyIHdoZW4gY29weWluZyBpdGVtIHRleHQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IFBBTl9GQU1JTFlTVFlMRV9JTkRFWCBuYW1lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIGZ0dHJpZ29uLmgsIHNvIGRvbid0IGRlZmluZSBIQVZFX0ZSRUVUWVBFIGlmIHdlIGRvbid0IGhhdmUgaXQuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gcGxhY2luZyB0cmFpbGluZyBcMC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCU9yaSBQZXNzYWNoIDxvcmlfcGVzc2FjaF9ibGFoQHlhaG9vLmNvbT4KCVNldCBXU19FWF9UT09MV0lORE9XIGluIGEgdG9vbHRpcCdzIGR3RXhTdHlsZS4KCjIwMDItMDItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmV0dXJuIG92ZXJmbG93IGlmIG5vIGNsYXNzIGJ1ZmZlciB3YXMgc3BlY2lmaWVkLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJR2VyaGFyZCBHcnViZXIgPHNwYXJoYXdrQGdteC5hdD4KCVdyaXRlUHJpdmF0ZVByb2ZpbGVTZWN0aW9uIHNob3VsZCBhbGxvdyB0byBjcmVhdGUgZHVwbGljYXRlIGtleXMKCWJlY2F1c2UgaXQgdGFrZXMgdGhlIGJ1ZmZlciBhcyBpdCBpcyB3aXRob3V0IGFueSBtb2RpZmljYXRpb25zLgoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBYMTFEUlZfU2Nyb2xsREMgb25seSBtb3ZlIHBpeGVscyB0aGF0IGFyZSB3aXRoaW4gdGhlIGNsaXAKCXJlY3RhbmdsZSwgYmVmb3JlIGFuZCBhZnRlciB0aGV5IGFyZSBzY3JvbGxlZC4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXggZm9yIEdldE5lYXJlc3RDb2xvciBzbyBpdCByZXR1cm5zIHRoZSB0cnVlIGNvbG9yIHJhdGhlciB0aGFuIHRoZQoJc3lzdGVtIHBhbGV0dGUgaWYgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGEgcGFsZXR0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1pc2MgZml4ZXM6CgktIGNhY2hlIHRleHQgbWV0cmljcyBmb3IgdGhlIGZvbnQgd2UncmUgdXNpbmcKCS0gaW1wcm92ZWQgaXRlbSBoaXQgZGV0ZWN0aW9uCgktIG1vcmUgZGVidWdnaW5nIG91dHB1dAoJLSBpbXBsZW1lbnQgTFZNX1NFVElDT05TUEFDSU5HCgktIGxvdHMgb2YgYnVncyBzcXVhc2hlZAoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgTG9jYWwgU2VydmVyIENPTS4KCUltcGxlbWVudGVkIHRoZSBUeXBlbGliIGJhc2VkIE1hcnNoYWxlci4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL250ZGRrLmgsCgkgIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3BvcHBhY2suaCwgaW5jbHVkZS9wc2hwYWNrMS5oLAoJICBpbmNsdWRlL3BzaHBhY2syLmgsIGluY2x1ZGUvcHNocGFjazQuaCwgaW5jbHVkZS9wc2hwYWNrOC5oLAoJICBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY25kci5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGNvbXBpbGUgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIFBST0dSRVNTX1JlZnJlc2gsIGFsd2F5cyBkbyBJbnZhbGlkYXRlUmVjdCgpIHRvIHJlcGFpbnQuCglBZGQgV01fRVJBU0VCS0dORCBoYW5kbGVyIGFzIGluIFdpbmRvd3MuCglCZSBzbGlnaHRseSBzbWFydGVyIHdoZXRoZXIgaW52YWxpZGF0ZSBiYWNrZ3JvdW5kIG9yIG5vdC4KCUFsd2F5cyB0cmVhdCB3UGFyYW0gYXMgSU5UIHRvIG5vdCBsb3NlIHNpZ25lZCB2YWx1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVZhcmlvdXMgY2xlYW51cHM6CgktIGdldCByaWQgb2YgdGhlIHN0YXRpYyBkYXRhIG1lbWJlcgoJLSBwYXNzIHRoZSBpbmZvUHRyIGFyb3VuZCBpbnN0ZWFkIG9mIHRoZSBod25kCgktIGZpeCBpbmRlbnRhdGluL3N0eWxlIGEgYml0IHRvIG1ha2UgaXQgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mCgkgIHRoZSBmaWxlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJU3BsaXQgdGhlIHBhdGggYW5kIHdvcmQvZW5kIGVsbGlwc2lmaWNhdGlvbiBvdXQgb2YgdGhlIG1haW4gZnVuY3Rpb24KCWFuZCBkbyB0aGVtIHRob3JvdWdobHkuIFRoZSBleGlzdGluZyBtZXRob2Qgd291bGQgYmUgaW5jb3JyZWN0IHdoZXJlCgl0YWJzIHdlcmUgaW52b2x2ZWQgYW5kIGluIHNvbWUga2VybmluZyBzaXR1YXRpb25zLgoKMjAwMi0wMi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBmb3IgZ2VuZXJhdGlvbiBvZiAuZGVmIGZpbGVzIGZyb20gLnNwZWMgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQ29tcGxldGUgTGlzdHZpZXcgVW5pY29kaWZpY2F0aW9uLgoJU2ltcGxpZnkgdGhlIHNldHRpbmcgb2YgKHN1YilpdGVtIHRleHQgYnkgdXNpbmcgY29tbW9uIGNvZGUuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl91c2VyLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gd2luZWNvbnNvbGUgbm93IGV4aXRzIGlmIHRoZSBzdGFydGVkIHByb2dyYW0gaW5zaWRlIGl0IHRlcm1pbmF0ZXMKCSAgYmVmb3JlIHRoZSBjb25zb2xlIGFjdHVhbGx5IHN0YXJ0cyB1cC4KCS0gUmVtb3ZlZCB0aGUgbGFzdCBBbnNpIGltcG9ydGVkIEFQSXMgc2luY2Ugbm93IFByb3BzaGVldCBoYXMgYSBkZWNlbnQKCSAgVW5pY29kZSBpbnRlcmZhY2UuCgktIEZpeGVkIGEgY291cGxlIG9mIG1lbnUgcmVsYXRlZCBidWdzIChzdGF0ZXMgd2VyZSB3cm9uZykuCgktIEZpbmlzaGVkIGlucHV0IHNlbGVjdGlvbiBjb2RlIChtYXJrIGFuZCBrZXkgZm9yIHNlbGVjdGlvbiBtb3ZpbmcgYXJlCgkgIG9wZXJhdGlvbmFsLCBnZW5lcmF0aW5nIG1vdXNlIGV2ZW50cyB0byBwcm9ncmFtcyBhdHRhY2hlZCB0byB0aGUKCSAgY29uc29sZSkuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9zb3VyY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBiYWQgYmVoYXZpb3Igd2hlbiBtYW55IHN5bWJvbHMgd2l0aCBzYW1lIG5hbWVzIHdoZXJlIGZvdW5kLgoJUmVtb3ZlZCBleHRlcm5hbCByZWFkbGluZSBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIFNldEl0ZW1XLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTdG9yaW5nIGFuIElQIGFkZHJlc3MgaW4gYSBzaWduZWQgaW50IHJlc3VsdHMgaW4gYnVncyBpZiBpdCBzdGFydHMKCXdpdGggPj0xMjguCgoJKiBtZW1vcnkvY29kZXBhZ2UuYywgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZWltcGxlbWVudCBHZXRTdHJpbmdUeXBlQSBhbmQgR2V0U3RyaW5nVHlwZUV4QS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJRG8gbm90IGRlc3Ryb3kgSVR5cGVMaWIgaGVsZCBieSBJVHlwZUluZm8gYmVmb3JlIHRoZSBsYXR0ZXIgaXMgZnJlZWQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVlRfRU1QVFkgY2FuIGJlIGNvZXJjZWQgdG8gVlRfSTQsIHZhbHVlIDAuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgc3R5bGUgY29ycmVjdGluZyBjb2RlIHRvIHRoZSBXTV9DUkVBVEUgaGFuZGxlciBhbmQgYWRkZWQKCWNsZWFyaW5nIG9mIFdTX0VYX0NMSUVOVEVER0UgYW5kIFdTX0VYX1dJTkRPV0VER0UgYXMgaW4gV2luZG93cy4KCUFkZGVkIFNldFdpbmRvd1BvcyhTV1BfRlJBTUVDSEFOR0VEKSB0byBtYWtlIGNoYW5nZXMgdGFrZSBlZmZlY3QuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdldFN5c3RlbU1ldHJpY3MoKSB0byBmb3IgY2FwdGlvbiBtZXRyaWNzIGluIE5PTkNMSUVOVE1FVFJJQ1MKCXN0cnVjdC4gSW5pdGlhbGl6ZSBpU2Nyb2xsV2lkdGggYW5kIGlTY3JvbGxIZWlnaHQgZW50cmllcyBmb3IKCVNQSV9HRVROT05DTElFTlRNRVRSSUNTLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBwcm9ibGVtIGV4cG9zZWQgYnkgdGhlIGltcHJvdmVtZW50cyBpbiB2ZXJzaW9uIDhiLiBEZW1vbnN0cmF0ZWQgYnkKCU9FIDQuCgoyMDAyLTAyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYywgb2JqZWN0cy9wYWxldHRlLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIGxpYnRlc3QvaGVsbG81LmMsCgkgIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMva2VybmVsL3N0cmluZy5jLAoJICBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywKCSAgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlIF9fc3RkY2FsbC9fX2NkZWNsIHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIE1ha2UucnVsZXMuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBydW50ZXN0ICJ1c2Ugc3RyaWN0Ii4KCS0gQWRkZWQgbmV3IG9wdGlvbiAtTSB0byBzcGVjaWZ5IHdoaWNoIG1vZHVsZXMgc2hvdWxkIGJlIHRlc3RlZCBhcwoJICBidWlsdGluLgoKCSogbGlidGVzdC92YXJ0ZXN0LmMsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLCBkbGxzL3dpbmVwcy9ta2FnbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgltYWxsb2MuaCBpcyBvYnNvbGV0ZSBhbmQgc3RkbGliLmggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOgoJV2UgY2FuIHVzZSBub3JtYWwgaW1wb3J0cyBmb3Igc2hlbGwzMiBub3cuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglFbnN1cmUgdGhhdCB0aGUgd2hvbGUgbW9kaWZpZWQgdGV4dCBpcyByZXR1cm5lZCBmcm9tIERyYXdUZXh0RXhBLgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIGRsbHMvZ2RpL2RyaXZlci5jOgoJRG8gbm90IHVzZSB0aGUgUEVCIGxvY2sgYXMgbG9hZGVyIGxvY2ssIHVzZSBhIHNlcGFyYXRlIGNyaXRpY2FsCglzZWN0aW9uIGZvciB0aGF0IChhbmQgZm9yIHRoZSBncmFwaGljcyBkcml2ZXJzKS4KCgkqIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIHNvbWUgbW9yZSBtaXNzaW5nIHBhcmVudGhlc2lzIGlzc3Vlcy4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gYWRkIGRvY3VtZW50YXRpb24gc2VjdGlvbiB0byBSRUFETUUKCS0gdXBkYXRlZCBIT1dUTy13aW5lbGliCgktIGFkZGVkIG5hdGl2ZSBETEwgY29uZmlnIGluZm8gdG8gY29uZmlndXJpbmcuc2dtbAoJLSBncmVhdGx5IGltcHJvdmUgZGlyZWN0b3J5IGRlc2NyaXB0aW9uIG9mIHdpbmUuY29uZiBtYW4gcGFnZQoJLSBhZGQgLS1kZWJ1Z21zZyArYWxsIHdhcm5pbmcgdG8gd2luZSBtYW4gcGFnZQoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRmxpcCBBPC0+VyBjb252ZXJzaW9uIGluIGRpc3BpbmZvX25vdGlmeVQuCgoyMDAyLTAyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0byBHZXRJdGVtVyB0byBzdG9wIHdoaXBpbmcgb3V0IHRoZSBpdGVtcyB0ZXh0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54czoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJY29uZmlnLmggc2hvdWxkIGJlIGluY2x1ZGVkIGZpcnN0IChpZiBhdCBhbGwpLgoJRml4IHJldHVybiBvZiBjb252ZXJ0X3ZhbHVlLgoKCSogZGxscy90YXBpMzIvbGluZS5jLCBpbmNsdWRlL3RhcGkuaDoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEb24ndCB0cnkgdG8gc2V0IGZpZWxkcyBpbiBub25leGlzdGFudCBscExpbmVDb3VudHJ5TGlzdC4KCVN1cHBseSB2YWxpZCB0YXBpIGNvZGVzLgoKMjAwMi0wMS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9hdG9tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFsbG93IGludGVnZXIgYXRvbXMgaW4gc2V0X3Byb3BlcnR5IGFuZCByZW1vdmVfcHJvcGVydHkuIE5lZWRlZCBieQoJRmluZFRleHQgY29tbW9uIGRpYWxvZy4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIG1vZHVsZXMgbXVzdCBiZSBtYXBwZWQgbGlrZSBub3JtYWwgZmlsZXMsIG5vdAoJbGlrZSBQRSBpbWFnZXMuIEZpeGVkIHJlc291cmNlIGxvYWRpbmcgdG8gaGFuZGxlIHRoYXQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwKCSAgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLAoJICBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsCgkgIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS9uZXRzcGkuaCwgaW5jbHVkZS9vbGUuaCwKCSAgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvcHJzaHQuaCwKCSAgaW5jbHVkZS9yaWNoZWRpdC5oLCBpbmNsdWRlL3NldHVwYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3RhcGkuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdmZ3LmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oLAoJICBpbmNsdWRlL3dpbmluZXQuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5zdmMuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3Myc3BpLmgsIGluY2x1ZGUvY2FsbGJhY2suaCwKCSAgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kM2RjYXBzLmgsCgkgIGluY2x1ZGUvZDNkaGFsLmgsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kZGVtbC5oLAoJICBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGRyYXdpLmgsIGluY2x1ZGUvZGlucHV0LmgsCgkgIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9taXNjZW11LmgsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlIF9fc3RkY2FsbC9fX2NkZWNsIHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHaXZlIHVzZXJzIGEgaGludCB0byBjbGVhbiB0aGVpciBjb25maWcgZnJvbSBjb21tZW50cyBhbmQgZW1wdHkgbGluZXMKCWZvciBhIGJ1ZyByZXBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglBZGRlZCBtaXNzaW5nIHBhcmVudGhlc2lzIGluIFNoR2V0RmlsZUluZm9BLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglGaXhlZCBmdW5jdGlvbiAweGIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaW5jbHVkZS9ycGNkY2UuaCwgd2luMzIvaW5pdC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaW1nMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSB1cGRhdGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJQ29kZVdlYXZlcnMKCU1pbm9yIGZpeGVzLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhaW50IGNvbnRyb2wgaW1tZWRpYXRlbHkgb24gV01fU0VUVEVYVC4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJQ29kZVdlYXZlcnMKCVNtYWxsIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYmV0dGVyIHRyYWNlIG91dHB1dAoJLSBzdXBwb3J0IHN0cmluZyBzZW50IGluIGJ5IGFkZHJlc3MsIHJhdGhlciB0aGVuIGluZGV4CgktIGFkZCBGSVhNRXMgZm9yIG11bHRpcGxlIGltYWdlIGxpc3RzCgktIHByb3RlY3QgYWdhaW5zIGluZXhpc3RlbnQgYnV0dG9ucwoJLSBjYWxsIHVwIHRvIHRoZSBEZWZXaW5kb3dQcm9jIHdoZW4gZXJhc2luZyBia2duZCB3aGVuIGFwcHJvcHJpYXRlCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUltcGxlbWVudCBmdW5jdGlvbiAweGIgKFJlYWQgbW91c2UgbW90aW9uIGNvdW50ZXJzKSBhbmQgMHhmIChTZXQKCW1pY2tleS9waXhlbCByYXRpbykuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CgktIEludHJvZHVjZSBhIHNpZ25pZmljYW50IGRlc2lnbiBkZWNpc2lvbi4KCS0gUmVjYWxjdWxhdGUgdGhlIHByZWZpeCBsb2NhdGlvbiBpZiBlbGxpcHNpZmljYXRpb24gYWx0ZXJzIGl0LiAgVGhpcwoJICBjYXJlZnVsbHkgZG9lcyBOT1QgZW11bGF0ZSBhIE1pY3Jvc29mdCBidWcgaW4gd2hpY2ggcmVwcmVmaXhpbmcgaXMKCSAgd3Jvbmcgd2hlbiB0aGUgZmlyc3QgY2hhcmFjdGVyIHJlbW92ZWQgYnkgZWxsaXBzaWZpY2F0aW9uIGlzIHRoZSBvbmUKCSAgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdW5kZXJsaW5lZCAodW5kZXIgV2luOTggYXQgbGVhc3QpLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBDaGVja1Rva2VuTWVtYmVyc2hpcCBhbmQgR2V0QWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRG9uJ3QgcmVwYWludCBoZWFkZXIgd2hlbiBzY3JvbGxpbmcgYSBsaXN0dmlldyB2ZXJ0aWNhbGx5LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBmaXggb3JkZXIgb2YgcGFyYW1ldGVycyBpcyBTZW5kTm90aWZ5CgktIGFsd2F5cyB1c2UgdGhlIGRsZyBjbnRybCBJRCBvZiB0aGUgc2VuZGVyCgoJKiB3aW5kb3dzL3JlY3QuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBOVUxMIGNoZWNrcyBvbiBhbGwgcmVjdGFuZ2xlIHBvaW50ZXJzLgoKMjAwMi0wMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBMZHJEaXNhYmxlVGhyZWFkQ2FsbG91dHNGb3JEbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENoZWNrRXNjYXBlc1tBV10gYW5kIEV4dHJhY3RBc3NvY2lhdGVkSWNvbkV4Vy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbG9jYXRpb24gb2YgbG9jYWwgYXBwbGljYXRpb24gZGF0YS4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgUnRsQWRkQWNjZXNzQWxsb3dlZEFjZSByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBzdHVicyBmb3IgTmRyRGxsQ2FuVW5sb2FkTm93IGFuZCBOZHJEbGxHZXRDbGFzc09iamVjdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCB3aW4zMi9pbml0LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2V0Q29tcHV0ZXJOYW1lRXhbQVddIHNlbWktc3R1Yi4KCgkqIGluY2x1ZGUvd2luaW5ldC5oLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBGaW5kRmlyc3RVcmxDYWNoZUVudHJ5W0FXXSBzdHVicy4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21hcGkuaCwgaW5jbHVkZS9tYXBpY29kZS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgTUFQSSBzdHVicy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9kdW1teS5jLAoJICBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcGFzcy10aHJvdWdoIG1zdmNydDIwLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRXh0cmFjdCBzdHViLgoKCSogaW5jbHVkZS9pbW0uaCwgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBJbW1EaXNhYmxlSU1FIHN0dWIuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX3dtYWtlcGF0aC4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50NjcuYywgZmlsZXMvZG9zX2ZzLmMsIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbjoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIHN1cHBvcnQgZm9yIERPUyBFTVMgbWVtb3J5LgoKCSogdG9vbHMvd2luZW1ha2VyLCBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxLAoJICBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJJ3Rlc3QgLWUnIGlzIG5vdCBzdXBwb3J0ZWQgb24gU29sYXJpcywgcmVwbGFjZSB3aXRoICctZicgb3IgJy1kJy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBwcm9ibGVtcyB3aXRoIGxpc3R2aWV3IG5vdGlmaWNhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3Qgd3JpdGUgYmV5b25kIGVuZCBvZiBjb2xvciB0YWJsZSBpbiBYMTFEUlZfRElCX1NldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJLSBhZGQgbmV3IFNldFJhbmdlIGZ1bmN0aW9ucyAoaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgY29kZSkKCS0gcGFzcyB0aGUgaW5mb1B0ciBhcm91bmQgaW5zdGVhZCBvZiB0aGUgaHduZAoJLSB1c2UgVy1mdW5jdGlvbnMgaW5zdGVhZCBvZiBBLWZ1bmN0aW9ucwoJLSBtb3JlIGNoZWNrcyBpbiBjYXNlIG9mIGZhaWx1cmVzCgktIG1ha2UgaW5kZW50YXRpb24gYW5kIHN0eWxlIGNvbnNpc3RlbnQgdGhyb3VnaG91dCB0aGUgZmlsZQoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9wcnNodC5oOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUHJvcGVydHkgc2hlZXQgVW5pY29kaWZpY2F0aW9uLgoJU3VwcG9ydCBhZGRpdGlvbmFsIHdpemFyZCBmbGFncy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW1hZ2VMaXN0X1dyaXRlLgoKCSogZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSBzb21lIHVzZWxlc3MgZXJyb3IgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRlZmluZSBIQVZFX0ZSRUVUWVBFIHVubGVzcyB3ZSBoYXZlIGZyZWV0eXBlLmguCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0IG9wdGxlbiB3aGVuIFdTX3NldHNvY2tvcHQgaXMgY2FsbGVkIHdpdGggU09fTElOR0VSLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXZWlyZCB0aGluZyB3aXRoIGxjaWQgb2YgbGlicmFyeSBpcyB0aGF0IGlmIHN1YmxhbmcgaXMgbmV1dHJhbCB0aGVuIHdlCglyZXR1cm4gdGhlIHByaW1hcnkgbGFuZyBlbHNlIHdlIHJldHVybiAwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBmaWxsIGNvbG9ybWFwIGJleW9uZCBlbmQgb2Ygc2NyZWVuIGRlcHRoLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGZpbGUgZXh0ZW5zaW9uIHByb2JsZW0gaW4gdGhlIGZpbGUgZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIElzQmFkU3RyaW5nUHRyQSBjYWxsIHRoYXQgY2F1c2VkIHRyb3VibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBlcnJvcnMgcmVzdWx0aW5nIGZyb20gbWlzc2luZyBwYXJlbnRoZXNpcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJVGV4dC9Ca2duZCBjb2xvciBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTaW1wbGlmeSBhbmQgZml4IGxpc3R2aWV3IGVsbGlwc2lmaWNhdGlvbiBvZiBsYXJnZSB0ZXh0IGxhYmVscy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWEZPTlRfR2V0QXZnQ2hhcldpZHRoOiBBbHdheXMgcm91bmQgdXAuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0OiBGaXhlZCBjb3B5L3Bhc3RlIGJ1Zy4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgbXNkb3MvZG9zbWVtLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZWRpdC5jLAoJICBjb250cm9scy9tZW51LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSBGSVhNRXMgbW9yZSBncmVwLWFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglBdm9pZCBjb252ZXJ0aW5nIG5vbmV4aXN0ZW50IHRleHQgZnJvbSBBLT5XLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZXMgWHJlbmRlciBleHRlbnNpb24gdG8gYWxsb3cgY2xpZW50IHNpZGUgZm9udCByZW5kZXJpbmcuCglBZGRzIG5pY2UgdGhpbmdzIGxpa2UgYW50aS1hbGlhc2VkIHRleHQuCgoJKiBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vbWNpc2VxLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpd2F2ZS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhdmkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9tY2ljZGEvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwKCSAgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwKCSAgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS8uY3ZzaWdub3JlLAoJICBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy8uY3ZzaWdub3JlLAoJICBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwKCSAgZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsCgkgIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQXZvaWQgd2lsZGNhcmRzIGluIC5jdnNpZ25vcmUuCgoJKiBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgZGxscy9nZGkvZnJlZXR5cGUuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJVmFyaW91cyBmaXhlcyBmb3IgZ2RpIGZvbnQgaGFuZGxpbmcgY29kZSBpbmNsdWRpbmc6CgktIFVzaW5nIFRUcyBWRE1YIHRhYmxlIHRvIGVuc3VyZSB0aGF0IHdlIGdldCBleGFjdGx5IHRoYXQgc2FtZSBzaXplCgkgIGZvbnQgdGhhdCBXaW5kb3dzIHVzZXMuCgktIEZpeGVzIHRvIG1hbnkgbWVtYmVycyBvZiB0aGUgbWV0cmljcyBzdHJ1Y3R1cmVzLgoJLSBGb250IGNhY2hlLgoJLSBSb3RhdGVkIHRleHQgc3VwcG9ydC4KCS0gU3VwcG9ydCBmb3IgR0dPX0dSQVk/X0JJVE1BUCAocmVhZHkgZm9yIGFudGktYWxpYXNlZCB0ZXh0KS4KCS0gU3VwcG9ydCBmb3IgR0dPX05BVElWRS4KCgkqIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLmMsCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsCgkgIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglDaGFuZ2VzIHdpbmVfbWFpbiB0byBtYWluIHRvIHByb3Blcmx5IGJ1aWxkIG9uIGFsbCBwbGF0Zm9ybXMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglDbGVtZW5zIDx0aGVyYXB5QGVuZG9ycGhpbi5vcmc+CglTaG91bGQgcHJvY2VzcyB0aGUgLmR5bnN5bSBvZiBzaGFyZWQgbGlicmFyaWVzIGluc3RlYWQgb2YgdGhlIC5zdGFiLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCA9PS8hPSBtaXNtYXRjaC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGJlIHRvbyBzbWFydCBhbmQgYWRkIFdTX0NBUFRJT04gaW4gQWRqdXN0V2luZG93UmVjdEV4LgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUF2b2lkIGNvbmZsaWN0IHdpdGggaHRvbmwgJiBmcmllbmRzIGluIFdpbmVsaWIgb24gRnJlZUJTRC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lIHNfYWRkciB0byBzcmNfYWRkciB0byBhdm9pZCBhIGNvbmZsaWN0IG9uIFNvbGFyaXMuCglSZW5hbWUgZF9hZGRyIHRvIGRzdF9hZGRyIGZvciBzeW1tZXRyeS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3NldGptcC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmVmaXggX0pCTEVOIHRvIGF2b2lkIGNvbmZsaWN0IG9uIEZyZWVCU0QuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRmxlc2hlZCBvdXQgc29tZSBtZXRhZmlsZSBjb252ZXJzaW9ucy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBjb3JyZWN0IGhhbGZ0b25lIHBhbGV0dGUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUltcGxlbWVudCBmdW5jdGlvbiBudW1iZXIgMHg1IChSZXR1cm4gbW91c2UgYnV0dG9uIHByZXNzIGluZm9ybWF0aW9uKS4KCgkqIHNlcnZlci9maWxlLmM6CglXb3JrIGFyb3VuZCBmdHJ1bmNhdGUgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBleHRlbmRpbmcKCWZpbGVzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggUGF0aENyZWF0ZUZyb21Vcmx7QXxXfSB0byByZXR1cm4gdGhlIGNvcnJyZWN0IGVycm9yIGNvZGUgaW4gYWxsCgljYXNlcy4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggU0hSZWdPcGVuVVNLZXl7QXxXfSBhbmQgU0hSZWdRdWVyeVVTVmFsdWV7QXxXfSB0byBhY3R1YWxseSB1c2UKCXByZXZpb3VzbHkgb3BlbiBrZXlzLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglMb3ctcmVzb2x1dGlvbiBhbmQgbG93LWNvbG9yIFZHQSBtb2RlcyBhcmUgbm93IG1hcHBlZCBpbnRvIG1vZGUKCTY0MHg0ODB4OC4gQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgZm91ciBiaXQgbW9kZXMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQdXQgdGhlIHByZWZpeC11bmRlcmxpbmUtZHJhd2luZyBhd2F5IGludG8gaXQncyBvd24gZnVuY3Rpb24gc28gd2UgY2FuCglzZWUgd2hhdCBpcyBoYXBwZW5pbmcuCgoJKiBmaWxlcy9kcml2ZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldERpc2tGcmVlU3BhY2UgbmVlZHMgdG8gc2V0IHRoZSBsYXN0IGVycm9yIG9uIGZhaWx1cmUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBIGNvdXBsZSBvZiBhZGRpdGlvbnMuCgoyMDAyLTAxLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDIwMTIyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTAxLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgYXZlcmFnZSB3aWR0aCBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUaGUgXFw8bnI+IG1hZ2ljIGluIExvYWRUeXBlTGliRXggZm91bmQgZGlyZWN0b3JpZXMsIHdoaWNoIHdhcyBub3QKCWludGVuZGVkLiBSZXR1cm4gZXJyb3IgaW4gdGhhdCBjYXNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFib3J0IGlmIHdlIGRvIG5vdCBmaW5kIHlhY2Mgb3IgYmlzb24uCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS91dWlkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmVkIGd1aWRzIG5lZWRlZCBmb3IgUHJveHkvU3R1YiBmYWN0b3JpZXMgdG8gcmVzcGVjdGl2ZSAuaCBmaWxlcywKCWFkZCB0byBsaWJ3aW5lX3V1aWQuCgoJKiBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jdHlwZS5jLAoJICBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsCgkgIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYywKCSAgZGxscy9tc3ZjcnQvd2NzLmM6CglEb24ndCBpbmNsdWRlIGRlYnVndG9vbHMuaCBpbiB0aGUgaGVhZGVyIGZpbGUsIG1vdmVkIGl0IHRvIHRoZSBDIGZpbGVzCgl0aGF0IG5lZWQgaXQgKGFuZCB1c2VkIHRoZSBuZXcgd2luZS9kZWJ1Zy5oIHdoaWxlIHdlIGFyZSBhdCBpdCkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS93aW5lL2RlYnVnLmgsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOgoJTW92ZWQgZGVidWcgZGVmaW5pdGlvbnMgdG8gaW5jbHVkZS93aW5lL2RlYnVnLmguCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJlbW92ZWQgdXNlIG9mIFNFVF9ERUJVR0dJTkcsIGl0J3MgYnJva2VuIGFueXdheS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ29uc2lzdGVudCB1c2FnZSBvZiBpc3RyaW5nLCB1c2UgU1RSX1tHZXR8U2V0XVB0ciB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIHdpbmRvd3Mvd2luLmM6CglUb21teSBTY2h1bHR6IExhc3NlbiA8dGxhc3NlbkB0bGFzc2VuLmRrPgoJTWFrZSBFbnVtV2luZG93cyByZXR1cm4gVFJVRSBpZiBubyB3aW5kb3dzIGV4aXN0cy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBpbmNsdWRlL3dpbnNwb29sLmg6CglNYXJrIEcuIEFkYW1zIDxtZ2FkYW1zQHN5bXBhdGljby5jYT4KCUFkZCBHZXREZWZhdWx0UHJpbnRlcigpIGZ1bmN0aW9ucy4KCjIwMDItMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL29wdGlvbnMuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB0aGUgV2luZSB0cmFjZSBmYWNpbGl0aWVzIGFjY2Vzc2libGUgZnJvbSBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvbW1lbnQgb3V0L2lmZGVmIG91dCB1bnVzZWQgY29kZSBhbmQgdmFyaWFibGVzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgc2VjdGlvbj09TlVMTCAoZXJyb3IpIGluIFdyaXRlUHJpdmF0ZVByb2ZpbGVTdHJpbmdBLgoKCSogZGxscy94MTFkcnYvbXdtLmgsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBNV00gaGludHMuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDaGVjayBmb3IgY29tbW9uIGJyb2tlbiBuVmlkaWErTWVzYSBPcGVuR0wgbGlicmFyeSBzZXR1cHMuCglBZGQgc29tZSBxdW90aW5nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByaW50IHRoZSBzdHJlcnJvciBpbnN0ZWFkIG9mIGp1c3QgdGhlIGVycm5vLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIGNhc3QuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGludmFsaWQgQyBjb2RlICh1bmRlZmluZWQgYmVoYXZpb3IpLgoKCSogaW5jbHVkZS9jb25zb2xlLmgsIHdpbmRvd3MvZGVmZGxnLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGEgY291cGxlIG9mIHdhcm5pbmdzIGFuZCBhIHR5cG8uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmUucG0sIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGwsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHM6CglEb24ndCBjb252ZXJ0ICJwdHIiIHJldHVybiB0eXBlIHRvIGEgUGVybCBzdHJpbmcuCglDYWxsIEdldFByb2NBZGRyZXNzIG9ubHkgd2hlbiBhIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCwgbm90IGF0CglkZWNsYXJhdGlvbiB0aW1lLgoKCSogZmlsZXMvZmlsZS5jOgoJRml4ZWQgZnVuY3Rpb24gcHJvdG90eXBlIHRoYXQgY29uZnVzZWQgd2luYXBpX2V4dHJhY3QuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2FkdmFwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2F2aWZpbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2NvbWN0bDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2NvbWRsZzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RjaW1hbjMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RkcmF3LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RpbnB1dC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kcGxheXgucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZHNvdW5kLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2dkaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2dsdTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2ljbXAucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaW1hZ2VobHAucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaW1tMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvam95c3RpY2tfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2tlcm5lbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2x6MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpYW5pbV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpYXZpX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tY2ljZGFfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21jaXNlcV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpd2F2ZV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWlkaW1hcF9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXByLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zYWNtMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXNhY21fZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zdmNydC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc3ZmdzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL250ZGxsLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29kYmMzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGUzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVhdXQzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVjbGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVkbGcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlcHJvMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlc3ZyMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb3BlbmdsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcHNhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcXVhcnR6LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3Jhc2FwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JpY2hlZDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JwY3J0NC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXJpYWx1aS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXR1cGFwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGRvY3Z3LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZWxsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hsd2FwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS90YXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXJsbW9uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VzZXIzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS92ZXJzaW9uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3czMnNrcm5sLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVkb3MucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZW9zc19kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luaW5ldC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5tbS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zcG9vbF9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludHJ1c3QucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd3MyXzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dzb2NrMzIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUdlbmVyYXRlIFBlcmwgbW9kdWxlcyBkZWZpbmluZyBwcm90b3R5cGVzIGZvciBleHBvcnRlZCBmdW5jdGlvbnMuCgoyMDAyLTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW5pdGlhbGlzYXRpb24gbWVzc2FnZXMgZm9yIHJhdyBEREUuCglGaXhlZCBEZGVDcmVhdGVEYXRhSGFuZGxlIGZvciBub24gTlVMTCBvciBDRl9URVhUIGZvcm1hdHMuCglWYXJpb3VzIGZpeGVzIChjb3NtZXRpY3MsIGJldHRlciBlcnJvciBjaGVja2luZykuCgoJKiBzZXJ2ZXIvcXVldWUuYywgZGxscy91c2VyL21lc3NhZ2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgaW50ZXJwcm9jZXNzIERERSBtZXNzYWdlIHBvc3RpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgd2luZG93cy9zcHkuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CgktIE1ha2UgdGhlIExpc3RWaWV3IGNvbnRyb2wgVW5pY29kZSByZWFkeS4KCS0gU3VwcG9ydCBib3RoIEFOU0kgJiBVbmljb2RlIExpc3RWaWV3IG5vdGlmaWNhdGlvbnMuCgktIEZpeGVkIGEgZmV3IGJ1Z3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIHN0cmVhbURhdGEgYW5kIGNoZWNrIG9uIGZhaWx1cmUgdG8gcmVhZCBkZXNpcmVkIGRhdGEgZnJvbQoJc3RyZWFtLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQcmV2ZW50IHRyeWluZyB0byBoYW5kbGUgdW5pbml0aWFsaXNlZCBtZW1vcnkgYXMgYSBzdHJpbmcuCgoJKiB3aW4zMi9jb25zb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggcmV0dXJuIHZhbHVlIG9mIEdldFdpbmRvd3NEaXJlY3RvcnlBL1cgYW5kIEdldFN5c3RlbURpcmVjdG9yeUEvVy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCUJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglGaXggTmV0QlNEIGNvbXBpbGUgZXJyb3JzOyBDRElPQ1JFQURBVURJTyBpcyBub3QgYXZhaWxhYmxlIG9uIE5ldEJTRC4KCgkqIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIEdyYWRpZW50RmlsbCBzdHViLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJU3lzdGVtUGFyYW1ldGVyc0luZm86IGZpeGVkIHJldHVybiB2YWx1ZSBmb3IgU1BJX1NFVEZBU1RUQVNLU1dJVENILgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglCaWxsIE1lZGxhbmQgKG1lZGJpMDFAYWNjcGFjLmNvbSkKCUNvR2V0Q2xhc3NPYmplY3Q6IGZvciBDTFNDVFhfTE9DQUxfU0VSVkVSIGF0IGxlYXN0IGxvb2sgdXAgdGhlIHNlcnZlcgoJaW4gdGhlIHJlZ2lzdHJ5LCBldmVuIHRob3VnaCB3ZSBkb24ndCB5ZXQgZXhlY3V0ZSBpdC4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCS0gRG9uJ3Qgc3RyaW5nIGNvcHkgZnJvbSB1bmluaXRpYWxpc2VkIHN0YWNrIG1lbW9yeS4gIEluIGZhY3QgZG9uJ3QKCSAgbW9kaWZ5IHRoZSBpbnB1dCBzdHJpbmcgaWYgaXQgZGlkbid0IGNoYW5nZS4KCS0gQ29ycmVjdCBhcnJheSBzaXplLgoJLSBMb2dpY2FsbHkgc2VwYXJhdGUgdGhlIGNlbnRyaW5nIGZyb20gdGhlIGVsbGlwc2lmaWNhdGlvbi4KCS0gQ29tbWVudCBvbiBwcmVmaXggZXJyb3IuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlcyBjaGFyIGFycmF5IGluIHN0cnVjdHVyZSBkdW1waW5nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yIGNvbWN0bDMyLjQxOQoKMjAwMi0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL2F0b20ucGwsIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgYXRvbSB0ZXN0IHNjcmlwdC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGw6CglBZGRlZCBzb21lIHByb3RvdHlwZXMgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5iYXNlLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmNvbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5kZWYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZXJyb3IucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZ2RpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm5scy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5udC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5yZWcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc29jazIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc3Bvb2wucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludXNlci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW52ZXIucG0sIHByb2dyYW1zL3dpbmV0ZXN0L21ha2Vfc3ltYm9sczoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHRoZSBQZXJsIG1vZHVsZSBnZW5lcmF0ZWQgYnkgbWFrZV9zeW1ib2xzIGEgcmVhbCBleHBvcnRpbmcKCSAgbW9kdWxlLgoJLSBVc2UgY29uc3RhbnRzIGluc3RlYWQgb2YgdmFyaWFibGVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0aGUgcG9zc2liaWxpdHkgKGl0IGlzIG9wdGlvbmFsIGZvciBiYWNrd2FyZCBjb21wYWJpbGl0eSkgdG8KCXNwZWNpZnkgYXJndW1lbnQgdHlwZXMgaW4gb3JkZXIgdG8gZml4IGEgImJ1ZyIgY29uY2VybmluZwoJaW50ZWdlci9zdHJpbmcgc2NhbGFycy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3Npbmcgb2YgYWN0aW9ucyBTUElfU0VUS0VZQk9BUkRQUkVGLAoJU1BJX1NFVFNDUkVFTlJFQURFUi4KCVNhdmUgdG8gcmVnaXN0cnkgdmFsdWUgb2YgU1BJX1NFVFNDUkVFTlNBVkVBQ1RJVkUgYWN0aW9uLgoJQ2hhbmdlZCBwcm9jZXNzaW5nIG9mIGFjdGlvbiBTUElfU0VURkFTVFRBU0tTV0lUQ0ggdG8gY29uZm9ybSB0bwoJV2luZG93cyBiZWhhdmlvdXIgb24gYW5kIGFmdGVyIFdpbk5UIDQuMCwgV2luZG93cyA5NS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhdGNoIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIGFuZCByZXR1cm4gb3V0IG9mIG1lbW9yeSBlcnJvci4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU21hbGwgdHlwbyBmaXguCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU1vdmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNvbWN0bDMyLl9UcmFja01vdXNlRXZlbnQgdG8KCXVzZXIzMi5UcmFja01vdXNlRXZlbnQgYW5kIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCglzcGVjcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpcnN0IHN0YWdlIG9mIERyYXdUZXh0IHVwZ3JhZGUuCgktIFJlYXJyYW5nZSBjb2RlIGludG8gdGhyZWUgZGlzdGluY3QgYXJlYXM7IERyYXdUZXh0LCBHcmF5U3RyaW5nLAoJICBUYWJiZWRUZXh0LgoJLSBSZW1vdmUgdW51c2VkIG1hY3Jvcy4KCS0gTW9kaWZ5IHRyZWF0bWVudCBvZiBUYWIgYXJndW1lbnRzIHRvIGZpdCB3aXRoIG9ic2VydmVkIGJlaGF2aW91ci4KCSAgZS5nLiBEcmF3VGV4dEV4IHdpdGggRFRfVEFCU1RPUCBidXQgbnVsbCBkdHAgd2lsbCBub3QgdGFrZSB0aGUKCSAgc2V0dGluZyBmcm9tIHRoZSBmbGFncy4gIEFsc28gb25seSB1c2VzIGJpdHMgMTUgdG8gOCwgbm90IHRoZQoJICBoaWdoZXIgYml0cy4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCURvbid0IGNoZWNrIHRoZSBjaGVja3N1bSBvZiB0aGUgb3JpZ2luYWwgZWNobyByZXF1ZXN0IHBhY2tldCBpbiB0aGUKCXJlY2VpdmVkIHJlcGx5IHBhY2tldC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBJbWFnZUxpc3RfW1N8R11ldEZsYWdzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglEb24ndCBjaGFuZ2UgYnV0dG9uIHN0YXRlIG9uIFdNX01PVVNFTU9WRSBtZXNzYWdlcyB1bmxlc3MgbGVmdCBtb3VzZQoJYnV0dG9uIGlzIHByZXNzZWQuCgoJKiBjb250cm9scy9jb21iby5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gQ0JQYWludFRleHQgdXNlIHRoZSB0ZXh0IHNpemUgYXMgcmV0dXJuZWQgYnkgTEJfR0VUVEVYVC4gVGhlIHNpemUKCXJldHVybmVkIGJ5IExCX0dFVFRFWFRMRU4gbWF5IGJlIHRvbyBsYXJnZS4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglNYWtlIERNX1NFVERFRklEIG1lc3NhZ2Ugd29yayBmb3Igb3duZXIgZHJhd24gYnV0dG9ucyBhcyB3ZWxsLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWljaGFlbCBDLiBNYWdnaW8gPHZveWFnZXJAdm95ZC5uZXQ+CglDb2RlIHVzZWQgQUZfSVBYIGluIHNvbWUgcGxhY2VzIHdoZXJlIGl0IHNob3VsZCBoYXZlIHVzZWQgV1NfQUZfSVBYLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGb3JjZSBvcmRpbmFsIGFsbG9jYXRpb24gc3RhcnQgZnJvbSAxMDAgYXMgaW4gV2luZG93cy4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHE6CglGcmFuZ29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaW5jb3JyZWN0IHVzZSBvZiAndGVzdCAtYScgKGZvciBGcmVlQlNEKS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglMZWF2ZSBJSUQgY2hlY2sgdG8gdGhlIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdCwgc28gdGhhdCBTRkNGIHdpbGwgaGFuZGxlCglhbGwgdGhlIGludGVyZmFjZXMgdGhhdCBPbGVDcmVhdGUuLiB3aWxsLgoKMjAwMi0wMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGwsCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC90ZXN0LnBsOgoJSW50ZWdyYXRlZCB0ZXN0IHNjcmlwdCBmb3Igd2luZXRlc3QgaW50byB0aGUgbWFrZSB0ZXN0CglpbmZyYXN0cnVjdHVyZS4KCUFkZGVkIGEgZmV3IHRlc3RzIGZvciB0aGUgbmV3IHdpbmUucG0gZnVuY3Rpb25zLgoKCSogZGxscy9tYWtlX2RsbHMsIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIE1ha2UucnVsZXMuaW46CglSZXdyb3RlIHJ1bnRlc3QgaW4gUGVybCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIG9uIHRoZSBXaW5kb3dzIHNpZGUuCglBZGRlZCBvcHRpb25zIGZvciBpbmNsdWRlIGRpcmVjdG9yaWVzLCBkZWJ1ZyBsZXZlbCBhbmQgdGFyZ2V0IHBsYXRmb3JtLgoJc2VsZWN0aW9uLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOgoJQWRkZWQgb2soKSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3Qgc3RvcCB0aGUgdGVzdCBvbiB0aGUgZmlyc3QgZXJyb3IuCglBZGRlZCB0cmFjZSgpIGZ1bmN0aW9uIGZvciBkZWJ1Z2dpbmcgdGVzdHMuCglBZGRlZCBzdXBwb3J0IGZvciB0b2RvIGZ1bmN0aW9uYWxpdHkuCglNb3ZlZCB3aW5lLnBtIHRvIGluY2x1ZGUgZGlyZWN0b3J5LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5iYXNlLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmNvbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5kZWYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZXJyb3IucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZ2RpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm5scy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5udC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5yZWcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc29jazIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc3Bvb2wucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludXNlci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW52ZXIucG0sIHByb2dyYW1zL3dpbmV0ZXN0L21ha2Vfc3ltYm9sczoKCUFkZGVkIFBlcmwgbW9kdWxlcyBjb250YWluaW5nIHRoZSAjZGVmaW5lcyB2YWx1ZXMgZm9yIHRoZQoJY29ycmVzcG9uZGluZyBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQsIHVwZGF0ZSBpbmZvcm1hdGlvbiBhYm91dCBBcHBEZWZhdWx0LgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsCgkgIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jOgoJRGFuaWVsIFdhbGtlciA8ZGl3YWxrZXJAZWFydGhsaW5rLm5ldD4KCS0gQWRkZWQgZGVidWdnaW5nLgoJLSBUcmFuc2ZlciBhbGwgcmVsZXZhbnQgbWVzc2FnZXMgdG8gdGhlIHVuZGVybHlpbmcgZWRpdCBjb250cm9sLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJubHMuYywKCSAgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc29tZSB1c2VsZXNzIHdpbmdkaS5oIGluY2x1ZGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgTVJVTGlzdHMgdG8gVW5pY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUlTaGVsbEZvbGRlcl9CaW5kVG9PYmplY3Qgc2hvdWxkIHJlc3BlY3QgcmlpZC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9zdGF0OiBCZXR0ZXIgdGVzdCBmb3IgZHJpdmUgbGV0dGVyLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIEZyZWVCU0QuCgoJKiBsaWJ0ZXN0L2hlbGxvNS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglMb2FkTGlicmFyeSByZXR1cm5zIDAgb24gZmFpbHVyZSwgbm90IDwgMzIuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglVc2UgLUROT05BTUVMRVNTVU5JT04gLUROT05BTUVMRVNTU1RSVUNUIHdoZW4gY29tcGlsaW5nLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CglJbXBsZW1lbnRlZCBXU0FBY2NlcHQoKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIGFkZGl0aW9uYWwgVE9PTEJBUl9DYWxjVG9vbGJhciBpbiBhIGRpZmZlcmVudCBwYXRoIG9mIEF1dG9zaXplLgoJLSBSZW1lbWJlciBhbmQgcHJvY2VzcyBXTV9TRVRSRURSQVcgbWVzc2FnZXMuCgktIFByb2Nlc3Mgc3RyaW5ncyBzcGVjaWZpY2llZCBpbiBJbnNlcnRCdXR0b257QXxXfS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggYSBncmlwcGVyIGlzc3VlIGFuZCB0aGUgYWRqdXN0bWVudCBvZiBiYW5kcyB3aGVuIFJCQlNfRklYRURTSVpFCglzcGVjaWZpZWQuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQcmVwZW5kICItLSIgdG8gYXJndW1lbnRzLgoKMjAwMi0wMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgbXNkb3MvaW50MmYuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIHRoZSBOVCBDRCBpbnRlcmZhY2UuCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2Nkcm9tLmMsIHdpbjMyL2RldmljZS5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGZpbGVzL2RyaXZlLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9udGRkY2RybS5oLAoJICBpbmNsdWRlL250ZGRzdG9yLmgsIGluY2x1ZGUvd2luaW9jdGwuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB0aGUgV2luZSBpbnRlcm5hbCBjZHJvbSBpbnRlcmZhY2UgdG8gdGhlIE5UIG1vZGVsLgoKMjAwMi0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2ludmVyLmg6CglSZW1vdmVkIG9ic29sZXRlIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbm50Lmg6CglGaXhlZCB0eXBvcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJVXBkYXRlZCBkZWJ1ZyBjaGFubmVscy4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUNoZWNrIHVuaXhfcGlkIGFnYWluIGFmdGVyIGF0dGFjaC4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCByZWZjb3VudGluZyB0byB0aGUgdGhyZWFkIG1lbWJlciBvZiB0aGUgcGlwZSB1c2VyLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglIb3cgdG8gc3BlY2lmeSBhIERMTCBpbiBhIGRlYnVnZ2VyIGJyZWFrIGNvbW1hbmQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdGhlIHdvZFJlc2V0IGltcGxlbWVudGF0aW9uLCBpbnRlcm5hbCBtZXNzYWdlcyBwcmlvcml0eSwgZnVsbAoJZHVwbGV4IGNvZGUsIHdhaXQgYWxnb3JpdGhtIGZvciBmZWVkaW5nIHRoZSBPU1MgYnVmZmVyLgoKCSogZGVidWdnZXIvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlIGRpc3BsYXkgZm9yIHN5bWJvbCBwaWNraW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBUT09MQkFSX0FkZFN0cmluZ1cuCgoyMDAyLTAxLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW46CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUFkZGVkIGNyeXB0MzIuZGxsIHN0dWIuCgoJKiBpbmNsdWRlL3dpbmNyeXB0LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuaDoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJSW1wbGVtZW50IGFkdmFwaTMyIHBvcnRpb24gb2YgdGhlIENyeXB0b0FQSS4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlLgoKCSogd2luMzIvZWRpdGxpbmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IHNvbWUgYmFkIGJlaGF2aW9yIHdoZW4gc29tZSBsb2NrIHN0YXRlcyAoY2Fwc2xvY2ssIG51bWxvY2suLi4pCgl3ZXJlIHR1cm5lZCBvbi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29tbWVudCBvbmx5OyBlcnJvciBpbiBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbi4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJd2hpY2ggaXMgbW9yZSBwb3J0YWJsZSB0aGFuIHR5cGUgKEZyZWVCU0QpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggcHJldmlvdXMgcGF0Y2g6IHRoZSB3c19zb2NrYWRkcl91MndzIHJldHVybiB2YWx1ZSB3YXMgd3JvbmcuCglNYWtlIHdzX3NvY2thZGRyX3t3czJ1LHUyd3N9IHN0YXRpYy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJQWRkZWQgcnVsZXMgZm9yIHJ1bm5pbmcgdGVzdHMuCgoyMDAyLTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1vdmVkIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFdTX3NvY2tldCgpIHRvIFdTQVNvY2tldEEoKS4KCU1hZGUgV1NBU29ja2V0QSgpIGFjY291bnQgZm9yIFdTQV9GTEFHX09WRVJMQVBQRUQuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zb2NrLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHNvY2tldCBmbGFncy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RldmljZS5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1vcmUgZ2VuZXJhbCBhcHByb2FjaCB0byBmaWxlIGRlc2NyaXB0b3IgdHlwZXMgYW5kIGZsYWdzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglSZXR1cm4gbGVuZ3RoIG9mIFdTX3NvY2thZGRyIHN0cnVjdHVyZSBpbiB3c19zb2NrYWRkcl91MndzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpeGVkIEdldERvY3VtZW50YXRpb24gYSBsaXR0bGUuICBXaGVuIGNhbGxlZCBmcm9tIFJlZ2lzdGVyVHlwZUxpYiBpdAoJd2FzIGxlYXZpbmcgdGhlIERvYyBlbnRyeSB1bmluaXRpYWxpc2VkLCBsZWFkaW5nIHRvIHBhZ2UgZmF1bHQgd2hlbgoJbWVhc3VyaW5nIGl0LiBBbHNvIGVuc3VyZSBjb3JyZWN0IGZyZWVpbmcgb2YgcmVzb3VyY2VzIG9uIGZhaWx1cmUuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgQVBDcyB0byBiZSAiZm9yZ290dGVuIi4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU1vdmUgY2FsbGluZyBvZiBDQlQgaG9va3MgZnJvbSBXSU5fQ3JlYXRlV2luZG93RXgoKSB0byB0aGUgZHJpdmVyLgoKMjAwMi0wMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZ2RpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogc2VydmVyL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUFkZCBzZXJ2ZXIgc2lkZSBzdXBwb3J0IGZvciBhc3luYyBJTyBvbiBmaWxlcy4KCVVzZSBwcmVhZC9wd3JpdGUgdG8gcmVhZC93cml0ZSBmcm9tIHRoZSBvZmZzZXQgc3BlY2lmaWVkIGluIHRoZQoJb3ZlcmxhcHBlZCBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwKCSAgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBwcmVhZC9wd3JpdGUuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJLSBBdHRlbXB0IHdyaXRlIGJlZm9yZSBnb2luZyBvdmVybGFwcGVkIGluIFdyaXRlZmlsZS4KCS0gRml4IHJldHVybiBjb2RlcyBpbiBXcml0ZUZpbGVFeC4KCgkqIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IENhbmNlbElvIHByb3Blcmx5LgoKCSogZGxscy91c2VyL2NvbW0xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCS0gRG9uJ3QgdXNlIGV2ZW50IGZsYWdzIHdpdGggUmVhZEZpbGVFeCBhbmQgV3JpdGVGaWxlRXguCgktIFVzZSBvdmVybGFwcGVkIHN0cnVjdHVyZSB3aXRoIFdyaXRlRmlsZSwgc2luY2UgRklMRV9GTEFHX09WRVJMQVBQRUQKCSAgaXMgc3BlY2lmaWVkLgoJLSBDYW5jZWwgb3ZlcmxhcHBlZCBvcGVyYXRpb25zIGluIENsb3NlQ29tbS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUFkZGVkIHN1cHBvcnQgZm9yIGNsZWFuaW5nIHVwIHRoZSBURUIgZnJvbSBpbnNpZGUgdGhlIGV4aXRpbmcgdGhyZWFkLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUFsbG9jYXRlIGRlYnVnX2luZm8gc3RydWN0dXJlIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIFRFQi4KCVJlbW92ZWQgdGhlIFRFQiBjbGVhbnVwIHNlcnZpY2UuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglBZGRlZCBTSUdOQUxfUmVzZXQgZnVuY3Rpb24uCgoyMDAyLTAxLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgcmVzb3VyY2VzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglNYXJrIEcuIEFkYW1zIDxtZ2FkYW1zQHN5bXBhdGljby5jYT4KCUZpeCBVdWlkQ3JlYXRlKCkgdG8gbm90IGZvcmdldCBNQUMgYWRkcmVzcy4KCVJlbW92ZSB7fSdzIGZyb20gVXVpZFRvU3RyaW5nQSgpIG91dHB1dC4KCUFkZCBVdWlkQ3JlYXRlU2VxdWVudGlhbCgpIGZ1bmN0aW9uIGZyb20gV2luZG93cyAyMDAwLgoKCSogY29uZmlndXJlLmluOgoJQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CglBZGRlZCBtaXNzaW5nIGJyYWNrZXRzIGluIG5jdXJzZXMgY2hlY2suCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglSZW1vdmVkIG9ic29sZXRlIGRvc21vZC4KCgkqIGRsbHMva2VybmVsL25scy9kZWEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVsLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2RldS5ubHMsIGRsbHMva2VybmVsL25scy9lbmkubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZXNuLm5scywgZGxscy9rZXJuZWwvbmxzL2VzcC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9maW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJhLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2ZyYi5ubHMsIGRsbHMva2VybmVsL25scy9mcmwubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZ2FlLm5scywgZGxscy9rZXJuZWwvbmxzL2dyYy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9pdGEubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL25sZC5ubHMsIGRsbHMva2VybmVsL25scy9wdGcubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvd2FsLm5sczoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlIGN1cnJlbmN5IG9mIHRoZSBldXJvcGVhbiBFdXJvIHVzaW5nIGNvdW50cmllcyB0byBFdXJvLgoKCSogTElDRU5TRTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjb3B5cmlnaHQgZGF0ZS4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uaCwgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglET1Mgc3VwcG9ydCByZXN0cnVjdHVyZS4gVGhlIERPUyB2aXJ0dWFsIG1hY2hpbmUgaXMgbm93IGEgc2V0IG9mCgl0aHJlYWRzIHJ1bm5pbmcgd2l0aGluIFdpbmUncyBvd24gYWRkcmVzcyBzcGFjZSwgb2Jzb2xldGluZyB0aGUgb2xkCglkb3Ntb2QgbW9kdWxlLgoKMjAwMi0wMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS90aHJlYWQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgdm04Nl9lbnRlciByYWNlIGNvbmRpdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJTmV2ZXIgZGVsZXRlIHRoZSBmb250IG9iamVjdCByZWNlaXZlZCBieSBXTV9TRVRGT05ULgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglGaXhlZCBjYWxscyB3aXRoIHdyb25nIHBvaW50ZXI6IENPTUNUTDMyX0ZyZWUoJmxwdHRzaSkgc2hvdWxkIGJlCglDT01DVEwzMl9GcmVlKGxwdHRzaSkuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglGaXhlZCBEQyBsZWFrLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUNoZWNrLCBSYWRpbyAmIDNTdGF0ZSBidXR0b25zIHNlbmQgV01fQ1RMQ09MT1JTVEFUSUMgaW5zdGVhZCBvZgoJV01fQ1RMQ09MT1JCVE4uCgoJKiBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLCBSRUFETUU6CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8geHBtIHBhY2thZ2VzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZWluc3RhbGwsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgbGliWHBtLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHBtLmMsCgkgIGluY2x1ZGUvdHNfeHBtLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglXZSBubyBsb25nZXIgbmVlZCB0aGUgeHBtIHdyYXBwZXJzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZCBkZWZpbmUgZm9yIHVuZG9jdW1lbnRlZCBzdGF0dXMgYmFyIG1lc3NhZ2UgU0JfU0VUQk9SREVSUy4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRGVmaW5lIExQU1RBQ0tGUkFNRSB0b28uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zcHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBuZXcgbWVzc2FnZXMgdG8gdGhlIHNweSBhbmQgd2ludXNlci5oLgoKCSogaW5jbHVkZS9iaXRtYXBzL29ibV9jbG9zZSwgaW5jbHVkZS9iaXRtYXBzL29ibV9jbG9zZV85NSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9jbG9zZWRfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVkdWNlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3JlZHVjZV85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZWR1Y2VkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3JlZHVjZWRfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVzdG9yZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9yZXN0b3JlXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3Jlc3RvcmVkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3Jlc3RvcmVkXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3pvb20sCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fem9vbV85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV96b29tZCwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV96b29tZF85NSwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jOgoJUmVtb3ZlZCBMb2FkT0VNUmVzb3VyY2UgZnJvbSBVU0VSIGRyaXZlci4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IEZJWE1FKCkgZm9yIG5vdCBpbXBsZW1lbnRlZCBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJRG8gbm90IHNhdmUgZW1wdHkgc2VjdGlvbnMgbmFtZXMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmUgYSBjYWxsIHRvIEhFQVBfc3RyZHVwQXRvVyBpbiB0aGUgQ29sb3IgZGlhbG9nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCVNwZWVkIHVwIHRoZSBHZXRJbWFnZUJpdHMgY2FzZSB3aGVyZSB3ZSBoYXZlIGFuIFhTaG0gaW1hZ2UuCgoyMDAyLTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYml0bWFwcy5yYzoKCVVzZSBEcmF3RnJhbWVDb250cm9sIGluc3RlYWQgb2YgYml0bWFwcyBpbiBjZXJ0YWluIGNhc2VzLgoJTW92ZWQgcmVtYWluaW5nIE9FTSBiaXRtYXBzIHRvIHVzZXIzMiByZXNvdXJjZXMuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgQ29UcmVhdEFzQ2xhc3MsIHNpbXBsaWZpZWQgT2xlU2V0QXV0b0NvbnZlcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIHRoZSBscERpcmVjdG9yeSBmaWVsZCBvZiB0aGUgTFBTSEVMTEVYRUNVVEVJTkZPLgoKMjAwMi0wMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJRml4ZWQgY2hlY2tfYXN5bmNfbGlzdCBjYWxsaW5nIGNvbnZlbnRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vYm1fYnRuY29ybmVycywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9idHNpemUsIGluY2x1ZGUvYml0bWFwcy9vYm1fY2hlY2ssCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fY2hlY2tib3hlcywgaW5jbHVkZS9iaXRtYXBzL29ibV9jb21ibywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9kbmFycm93LCBpbmNsdWRlL2JpdG1hcHMvb2JtX2RuYXJyb3dkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2RuYXJyb3dpLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2xmYXJyb3csCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fbGZhcnJvd2QsIGluY2x1ZGUvYml0bWFwcy9vYm1fbGZhcnJvd2ksCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fbW5hcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfY2xvc2UsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX2RuYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX2xmYXJyb3csCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX3JlZHVjZSwgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfcmVzdG9yZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfcmdhcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfdXBhcnJvdywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfem9vbSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZ2Fycm93LAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3JnYXJyb3dkLCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JnYXJyb3dpLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3NpemUsIGluY2x1ZGUvYml0bWFwcy9vYm1fdHJ0eXBlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3VwYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fdXBhcnJvd2QsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fdXBhcnJvd2ksIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYml0bWFwcy5yYzoKCU1vdmVkIHRoZSBPRU0gYml0bWFwcyB0aGF0IGRvbid0IGRlcGVuZCBvbiB0aGUgV2luZSBsb29rIGludG8gdGhlCgl1c2VyMzIgcmVzb3VyY2VzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRnVydGhlciB1bmlmaWVkIEhBTCBhbmQgSEVMIG1peGluZywgYW5kIGFkZGVkIHNvbWUgbW9yZSBpbnRlbGxpZ2VuY2UKCXRvIHByZWJ1ZmZlcmluZywgd2l0aCBzb21lIGJhc2ljIHByZWJ1ZmZlciBjYW5jZWxpbmcgc3VwcG9ydCwgdG8gZ2V0CglyaWQgb2YgbWl4aW5nIGRlbGF5cyBpbiBIYWxmLUxpZmUuIFVzZWQgYSB2ZXJ5IHNtYWxsIHdhdmVvdXQgYnVmZmVyCglxdWV1ZSBpbiBIRUwgbW9kZSwgdXNpbmcgYSBjYWxsYmFjayB0byBxdWV1ZSBhZGRpdGlvbmFsIGJ1ZmZlcnMsIHRvCglnZXQgcmlkIG9mIHBsYXliYWNrIGRlbGF5cyBpbiBIYWxmLUxpZmUuIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBzZXJ2ZXIvY29uc29sZS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjb2xvciBkZWZpbml0aW9uIChiZyBhbmQgZmcgd2VyZSBzd2FwcGVkKS4KCUZpeGVkIHNvbWUgaW5pdGlhbGlzYXRpb24gaXNzdWVzLgoJRml4ZWQgZXhpdCBjb25kaXRpb24gd2hlbiBub3RoaW5nIHdhcyBhbGxvY2F0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJZiBTYWZlQXJyYXlHZXRFbGVtZW50IGlzIGNhbGxlZCBvbiBhIHZhcmlhbnQgYXJyYXksIGluaXRpYWxpemUKCWRlc3RpbmF0aW9uIHZhcmlhbnQgYmVmb3JlIGNvcHlpbmcgdGhlIGFycmF5IGVsZW1lbnQgdG8gaXQsIHNvbWUgYmFkbHkKCWJlaGF2ZWQgYXBwcyBkb24ndCBzZWVtIHRvIGRvIGl0IHRoZW1zZWx2ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSBsb29rcy1saWtlLW5vYm9keS1ldmVyLXRlc3RlZC10aGlzLWZ1bmN0aW9uIGtpbmQgb2YgYnVnIGluCglWYXJpYW50Q29weUluZC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1hZGUgdGhlIG91dHB1dCBvZiAtLWRlYnVnbXNnICtzZWggYSBiaXQgbW9yZSB2ZXJib3NlLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1ha2UgRHJhd1N0YXR1c1RleHQgVW5pY29kZSByZWFkeS4gR2V0IHJpZCBvZiBhIEhFQVBfc3RyZHVwIGNhbGwuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBiZXR0ZXIgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucyBmdW5jdGlvbnMgdGhhdCBkbyBub3QgaGF2ZSB0aGUgc2FtZQoJICBuYW1lIGluIHdpbmRvd3MgYW5kIGluIFVuaXguCgktIHN1cHBvcnQgdGhlIE5WX3ZlcnRleF9hcnJheV9yYW5nZSBleHRlbnNpb24uCgoyMDAyLTAxLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uc29sZS94dGVybS5jLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpbmsgd2l0aCBsaWJ1dGlsIG9ubHkgd2hlcmUgbmVlZGVkLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYywgZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT5SCglTZXQgYW4gb3ZlcmxhcHBlZCdzIGhFdmVudCBmb3IgUmVhZEZpbGUvV3JpdGVGaWxlIGluIGFuIG92ZXJsYXBwZWQKCWNvbXBsZXRpb24gZnVuY3Rpb24sIG5vdCBpbiBSZWFkRmlsZUV4IG9yIFdyaXRlRmlsZUV4LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywKCSAgb2JqZWN0cy9tZXRhZmlsZS5jLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL25ld2Zucy5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGZpbGVzL2NoYW5nZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZWF1dDMyL2hhc2guYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9tcHIvd25ldC5jOgoJUmVtb3ZlZCBzb21lIG9mIHRoZSBjYWxscyB0byBIRUFQX3N0cmR1cCogZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJSW5jbHVkZSA8c3RkbGliLmg+IHRvIGdldCBwcm90b3R5cGUgZm9yIGFicygpIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglOYW1lIG9mIHRoZSBzdHJ1Y3R1cmVkIHN0b3JhZ2UgZmlsZSByb290IG5vZGUgaXMgcGF0aCBvZiB0aGUgZmlsZSwgbm90Cgl0aGUgbmFtZSBvZiB0aGUgcm9vdCBub2RlIHN0b3JlZCBpbiB0aGUgZmlsZS4KCVdoZW4gcmVhZGluZyBzdHJlYW1zIHN0b3JlZCBpbnRvIHN0cnVjdHVyZWQgc3RvcmFnZSBmaWxlcywgRU9GIGlzIG5vdAoJc3VwcG9zZWQgdG8gY2F1c2UgYW4gZXJyb3IgaWYgYXQgbGVhc3Qgb25lIGJ5dGUgY2FuIGJlIHJldHVybmVkLgoKMjAwMS0xMi0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTGluayB3aXRoIGxpYmRsIG9ubHkgd2hlcmUgbmVlZGVkLgoKCSogc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaDoKCUZpeGVkIHN0cmluZyB0eXBlIGluIG5hbWVkIHBpcGUgcmVxdWVzdHMuCgoJKiBtaXNjL2Nkcm9tLmM6CglDaHJpcyBHcmVlbiA8Y2hyaXNfZV9ncmVlbkB5YWhvby5jb20+CglHZXQgdGhlIGNvcnJlY3QgbGFiZWwgb24gaXNvOTY2MCBtaXhlZC1tb2RlIGNkcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4ZWQgbWVtb3J5IGxlYWsuCglSZW1vdmVkIHJlZHVuZGFudCBJbWFnZUxpc3RfRHJhZ1Nob3dOb2xvY2soRkFMU0UpIGNhbGwuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN3YXAgZmcvYmcgY29sb3IgdG8gYmUgY29ycmVjdC4KCjIwMDEtMTItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTEyMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMTItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgYmFzaWMgaGFuZGxpbmcgb2YgYXNzZXNzaWJpbGl0eSBhY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSWYgdGhlIGZjY0hhbmRsZXIgaXMgbW1pb0ZPVVJDQygwLCAwLCAwLCAwKSB0aGUgQVZJIGlzIGFsc28KCXVuY29tcHJlc3NlZC4KCWluZm9QdHItPmhXbmQgd2Fzbid0IHVwZGF0ZWQgaW4gQU5JTUFURV9PcGVuQS4KCgkqIHNlcnZlci9zZWxlY3QuYzoKCVNhdmUgdGhlIHJlZ2lzdHJ5IGJlZm9yZSBleGl0aW5nIG9uIGEgU0lHVEVSTS4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzoKCU1ha2Ugc3VyZSB0aGUgREMgdmlzaWJsZSByZWdpb24gaXMgdXBkYXRlZCBpbiBHZXRDbGlwQm94LgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtc2Rvcy9pbnQyMS5jLAoJICBjb25maWd1cmUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBjb25maWd1cmU6CglMaW5rIHRvIHRoZSBjdXJzZXMgbGlicmFyeSBvbmx5IGZvciB0aGUgZGxscyB0aGF0IG5lZWQgaXQuCgoJKiBpbmNsdWRlL2hlYXAuaCwgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5oOgoJUmVtb3ZlZCB0aGUgU0VHUFRSXyogbWFjcm9zLgoKCSogdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiBtZW1vcnkvaGVhcC5jOgoJRml4ZWQgYnVnIGluIHN5c3RlbSBoZWFwIGNyZWF0aW9uIHdoZW4gaXQgYWxyZWFkeSBleGlzdHMuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVwZGF0ZWQgdG8gbm90IHJlbHkgb24gcnVuZGxsMzIuZXhlIGFueSBtb3JlLgoKCSogd2luZG93cy9zeXNjb2xvci5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkLCBhZGRlZCBvciBpbXBsZW1lbnRlZCBzdHViczoKCS0gRHJhd01lbnVCYXJUZW1wKCk6IGNvcnJlY3RlZCBwYXJhbWV0ZXIgY291bnQuCgktIENhbGxDUExFbnRyeTE2KCk6IHN0dWIuCgktIFNldFN5c0NvbG9yc1RlbXAoKTogZnVsbHkgaW1wbGVtZW50ZWQgKGhvcGVmdWxseSkgdGhpcyB1bmRvY3VtZW50ZWQKCSAgZnVuY3Rpb24uCgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZGVkIGNvbG9yIGN1cnNvciBzdXBwb3J0LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJRGVzdHJveWluZyBjdXJzb3IgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglVc2UgTWFwTFMvVW5NYXBMUyBpbnN0ZWFkIG9mIFNFR1BUUl8qIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL2hvb2suYzoKCVJlc3RydWN0dXJlZCBob29rIG1hcHBpbmcgZnVuY3Rpb25zIHRvIGF2b2lkIG1vc3QgbWVtb3J5CglhbGxvY2F0aW9ucy4gR290IHJpZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL21zdmNydC9maWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlZmluaXRpb24gb2YgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gc3RydWN0dXJlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfU3YucmM6CglKb2hhbiBEYWhsaW4gPGpkYWhsaW5AdGVsaWEuY29tPgoJVXBkYXRlZCBTd2VkaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy91c2VyL2xzdHIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgd2luMzIvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiAqc25wcmludGYgZm9yIEM5OSBzdHlsZSBvdmVyZmxvdyByZXBvcnRpbmcuCgoJKiBpbmNsdWRlL3VzZXIuaCwgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvbXNnMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgYWxlcnRhYmxlIHdhaXRzIGluIFBlZWtNZXNzYWdlMTYgYW5kIEdldE1lc3NhZ2UxNiBzbyB3ZSBjYW4KCXByb2Nlc3MgQVBDcyBmb3IgMTZiaXQgY29tbXMuCgoJKiBpbmNsdWRlL21zZG9zLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglHb3QgcmlkIG9mIFdJTkVfUEFDS0VELgoKMjAwMS0xMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50L2RvY3VtZW50IG9yZGluYWxzIDctMTEuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIGZ0c25hbWVzLmggb3IgZnRuYW1lcy5oLCBub3QgYm90aC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLAoJICBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJVXNlIE1hcExTL1VuTWFwTFMgaW5zdGVhZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRm9yd2FyZCB0YWIgbm90aWZpY2F0aW9ucyB0byB0aGUgcGFyZW50LgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVRyaXZpYWwgZml4ZXMgZm9yIHNobHdhcGkgYW5kIEludGVybmV0IHJvdXRpbmVzLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXhlZCB2c25wcmludGYgcmV0dXJuIHZhbHVlIGNoZWNrLgoKMjAwMS0xMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc3lzbWV0cmljcy5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBmb3IgYWN0aW9ucyBTUElfU0VUTU9VU0VCVVRUT05TV0FQLAoJU1BJX1NFVEZBU1RUQVNLU1dJVENILCBTUElfU0VURFJBR0ZVTExXSU5ET1dTLCBTUElfU0VUV09SS0FSRUEuCgoJKiBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsCgkgIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsCgkgIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc3RhYnMgcGFyc2luZyBmb3IgR0NDIDMuMCAoZGVmYXVsdCB0eXBlcykuCglBZGRlZCBib29sZWFuIHR5cGUgc3VwcG9ydC4KCVNpbXBsaWZpZWQgaW50ZXJuYWwgdHlwZXMgaGFuZGxpbmcuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2VkaXRsaW5lLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZmZlciBsZW5ndGggaW4gaGlzdG9yeSBtYW5pcHVsYXRpb24uCglXcml0aW5nIG5ldyBjaGFycyBtdXN0IGJlIGRvbmUgd2l0aCBkZWZhdWx0IGF0dHJpYnV0ZSAobm90IGNlbGwKCWN1cnJlbnQgYXR0cmlidXRlKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBmdWxsLWR1cGxleCBjYXBhYmlsaXR5LgoJQWRkZWQgbWlzc2luZyBpbml0IGZvciB3YXZlLWluLgoJRml4ZWQgcGF1c2UgYmVoYXZpb3IgaW4gd2F2ZS1vdXQuCglBZGRlZCBtZXNzYWdlLXJpbmcgZGVsZXRpb24uCglBZGRlZCBleHBlcmltZW50YWwgZnVsbC1kdXBsZXggY2FwYWJpbGl0eS4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbm90aGVyIGJ1bmNoIG9mIGJ1Z3MgKG1haW5seSBsaW5rZWQgdG8gb3BlcmF0aW9ucyB3aGVyZSBmaWxlCglwb2ludGVyIHdhcyBwYXN0IHRoZSBlbmQgb2YgZmlsZSkuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIFJUVEkgc3VwcG9ydC4KCUZpeCB3aGF0X2V4Y2VwdGlvbiBwcm90b3R5cGUuCglGaXggbmV3X2hhbmRsZXJfZnVuYyBwcm90b3R5cGUuCglBZGQgc2V0X25ld19oYW5kbGVyLCBfY2FsbG5ld2gsIF9oZWFwYWRkLgoJQWRkIHN0dWJzIGZvciBfX3VuRE5hbWUgYW5kIF9fdW5ETmFtZUV4LgoJQWRkZWQgYSBzZW1pLXN0dWIgZm9yIF9fQ3h4RnJhbWVIYW5kbGVyLgoKCSogaW5jbHVkZS9tc3ZjcnQvc2V0am1wLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9leGNlcHQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc2V0am1wL3NldGptcDMgYW5kIGxvbmdqbXAuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBtb3JlIHRoYW4gOCBiaXRzIHBlciBjb2xvciBjb21wb25lbnQuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWVyZ2VkIHRoZSBoYW5kbGluZyBvZiAxNSBhbmQgMTYgYml0cyBYIHNlcnZlciBkZXB0aHMuCglVc2UgdGhlIG1hc2tzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gMTUgYW5kIDE2IGJpdHMuCglDaGVjayB0aGUgbWFza3MgYmV0dGVyIGFuZCBjYWxsIGdlbmVyaWMgY29kZSBpZiB0aGV5IGFyZSBub3QKCXN1cHBvcnRlZCBkaXJlY3RseS4KCUNoYW5nZWQgdGhlICdub3RzdXBwb3J0ZWQnIHRyYWNlcyBmcm9tIEZJWE1FcyB0byBXQVJOcy4KCgkqIHNlcnZlci9zZXJpYWwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglIYW5kbGUgUmVhZEludGVydmFsVGltZW91dD1NQVhEV09SRCBzcGVjaWFsIGNhc2UgYSBiaXQgYmV0dGVyLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCURvbid0IHJldHVybiBmcm9tIG92ZXJsYXBwZWQgUmVhZEZpbGUgb24gRUFHQUlOIGFuZCBvdGhlciBub24tZmF0YWwKCWVycm9ycy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3NoYXJlLmg6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFuZCBpbiBhZGRpdGlvbiB0byBNaW5ndzMyIHdlIHdpbGwgd2FudCB0aGUgXyB2ZXJzaW9ucy4KCjIwMDEtMTItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJVXNlIE1hcExTL1VuTWFwTFMgaW5zdGVhZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9hc3luYy5oLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLAoJICBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBmaWxlcy9maWxlLmMsIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CgktIG1vdmUgYXN5bmMgYWN0aXZhdGlvbiBpbnRvIHRoZSBzZXJ2ZXIKCS0gaW1wbGVtZW50IGFzeW5jIHF1ZXVlcwoKCSogbWVtb3J5L2dsb2JhbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2xvYmFsUmVBbGxvYzE2OiBJZiBoZWFwIGhhcyBHbG9iYWxQYWdlTG9jayBzZXQsIHRyeSBvbmx5IHdpdGgKCUhFQVBfUkVBTExPQ19JTl9QTEFDRV9PTkxZIGZsYWcgc2V0LgoKMjAwMS0xMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgR2xvYmFsUGFnZUxvY2sgZm9yIEdldFZETVBvaW50ZXIzMlcxNiBwb2ludGVycy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCUZpeGVkIHN0YWNrIG9mZnNldCBpbiByZWxheSBkZWJ1Z2dpbmcgb2YgY2RlY2wgcmVnaXN0ZXIgZnVuY3Rpb25zLgoKCSogbWVtb3J5L2hlYXAuYywgbWVtb3J5L3NlbGVjdG9yLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvcnRsLmM6CglNb3ZlZCBoZWFwIGZ1bmN0aW9ucyB0byBudGRsbC4KCUdvdCByaWQgb2YgaW50ZXJuYWwgaGVhcCBmbGFncy4KCVJlaW1wbGVtZW50ZWQgTWFwTFMgdG8gbm90IGRlcGVuZCBvbiB0aGUgc2VncHRyIGhlYXAuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9zaGFyZS5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGRlZCBzaGFyZS5oIGZyb20gTWluZ3czMi4KCgkqIFJFQURNRTogQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCVdpbmUgaXMgbm93IHdvcmtpbmcgb24gTmV0QlNELCBzbyBhZGQgTmV0QlNEIHRvIHRoZSBzdXBwb3J0ZWQgT1MnZXMKCWxpc3QgKGFuZCBhZGQgc29tZSBub3RlcyBhcyB3ZWxsKS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCB0aW1lZC1vdXQgbm9uLW92ZXJsYXBwZWQgUmVhZEZpbGUuCgoJKiB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy93cmMuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJUmVwbGFjZWQgTUFYIHdpdGggbWF4IGFuZCBkZWxldGVkIGRlZmluaXRpb24gb2YgTUFYLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJRml4ZWQvaW1wbGVtZW50ZWQgdGhlIEltYWdlTGlzdF8qRHJhZyogZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUlmIHRoZXJlIGlzIG5vIHBzSW5mbywgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAuCgoyMDAxLTEyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL3RodW5rLmMsCgkgIGluY2x1ZGUvY2FsbGJhY2suaDoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgdGh1bmtpbmcgYW5kIGNhbGxvdXQgZnVuY3Rpb25zLgoKCSogbWlzYy9zeXN0ZW0uYzoKCVN0b3JlIHRoZSAxNi1iaXQgY2FsbGJhY2sgaW4gdGhlIHRpbWVyIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHVzaW5nIGEKCXRodW5rLgoKCSogd2luZG93cy91c2VyLmMsIG1zZG9zL2RwbWkuYywgb2JqZWN0cy9kaWIuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9sb2NhbC5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNhbGwgdGhlIDMyLWJpdCBVU0VSIHNpZ25hbCBwcm9jIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgYSBjYWxsb3V0LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglQYXVsIFJ1cGUgPHBydXBlQG5jLnJyLmNvbT4KCVByZXZlbnQgIndpbmRvdyBiZWxvbmdzIHRvIGFub3RoZXIgcHJvY2VzcyIgZXJyb3JzIHdoZW4gcnVubmluZwoJbXVsdGlwbGUgcHJvZ3JhbXMgc2ltdWx0YW5lb3VzbHkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jOgoJRG8gbm90IGNhbGwgVEhVTktfSW5pdCBhdCBzdGFydHVwLCBvbmx5IGRvIGl0IHdoZW4gdGhlIGFwcCBhY3R1YWxseQoJcmVxdWlyZXMgdGh1bmtzLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIGxvYWRlci9yZXNvdXJjZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXhwb3J0IERlc3Ryb3lJY29uMzIgZnJvbSB1c2VyMzIgYW5kIHVzZSBHZXRQcm9jQWRkcmVzcyB0byBjYWxsIGl0Cglmcm9tIEZyZWVSZXNvdXJjZTE2LgoKCSogd2luZG93cy8uY3ZzaWdub3JlLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdGh1bmsuYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3duZDE2LmM6CglDaGFuZ2VkIDE2LWJpdCBVU0VSIEVudW0qIGZ1bmN0aW9ucyB0byBub3QgdXNlIHRodW5rcywgbm93IHRoYXQgMTYtYml0CglXaW5lbGliIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCgoJKiB3aW5kb3dzL2hvb2suYywgd2luZG93cy9rZXlib2FyZC5jLCBkbGxzL3VzZXIvbW91c2UuYzoKCUdvdCByaWQgb2YgZHluYW1pYyB0aHVuayBhbGxvY2F0aW9uIGluIG1vdXNlL2tleWJvYXJkIGV2ZW50IHByb2NzIGFuZAoJd2luZG93IGhvb2tzLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCwgZG9jdW1lbnRlZCBvciBmaXhlZCBTSERlbGV0ZU9ycGhhbktleUEvVywgU0hFbnVtS2V5RXhBL1csCglTSEVudW1WYWx1ZUEvVywgU0hRdWVyeUluZm9LZXlBL1cuIFNIUmVnR2V0UGF0aEEvVywgU0hSZWdTZXRQYXRoQS9XLAoJU0hHZXRWYWx1ZUEvVywgU0hTZXRWYWx1ZUEvVywgU0hRdWVyeVZhbHVlRXhBL1csIFNIRGVsZXRlS2V5QS9XLAoJU0hEZWxldGVFbXB0eUtleUEvVywgU0hEZWxldGVWYWx1ZUEvVywgb3JkaW5hbHMgMzIwLTMyMy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBlcnJvciBtZXNzYWdlIGluIExPQ0FMX0dldEJsb2NrKCkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBbHRlcmVkIHRoZSBhbGdvcml0aG0gZm9yIHNlbGVjdGluZyBhIG5ldyBmb2N1cyBhZnRlciBhIHdpbmRvdyBpcwoJZGVzdHJveWVkIHRoYXQgY3VycmVudGx5IGhhcyB0aGUgZm9jdXMuCgoJKiBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMvZ2RpL3RodW5rLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJQ2hhbmdlZCAxNi1iaXQgR0RJIEVudW0qIGZ1bmN0aW9ucyB0byBub3QgdXNlIHRodW5rcywgbm93IHRoYXQgMTYtYml0CglXaW5lbGliIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCgoJKiBvYmplY3RzLy5jdnNpZ25vcmUsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvZGMuYywKCSAgd2luZG93cy9kY2UuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9wcmludGRydi5jOgoJQ2hhbmdlZCBEQyBob29rIGFuZCBhYm9ydCBwcm9jIGhhbmRsaW5nIHRvIGF2b2lkIGhhdmluZyB0byBhbGxvY2F0ZQoJdGh1bmtzIGR5bmFtaWNhbGx5LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCVBhc3Mgb24gYWxsIHVuaGFuZGVsZWQgbWVzc2FnZXMgdG8gdGhlIG93bmVyLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGhJc1VSTChBfFcpOiBDaGVjayBmb3IgTlVMTCBzdHJpbmdzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUpvaGFuIERhaGxpbiA8amRhaGxpbkB0ZWxpYS5jb20+CglBZGQgYSBmZXcgZXh0cmEgZmllbGRzIHRvIEhUVFBfR2V0U3RkSGVhZGVySW5kZXguCgoyMDAxLTEyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgd2luZG93cy93aW5wcm9jLmM6CglDaGFuZ2VkIDE2LT4zMiB3aW5kb3cgcHJvY2VkdXJlIHRodW5rcyB0byB1c2Ugd2luZWJ1aWxkLWdlbmVyYXRlZAoJZW50cnkgY29kZSBkaXJlY3RseS4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgaW5jbHVkZS9idWlsdGluMTYuaCwgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLAoJICBpZjE2MzIvcmVsYXkuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd2luODdlbS5zcGVjLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5zcGVjLAoJICBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgTWFrZS5ydWxlcy5pbiwgZGxscy9rZXJuZWwva2VybmVsLnNwZWM6CglNYWRlIHJlZ2lzdGVyIGFuZCBpbnRlcnJ1cHQgZmxhZ3MgaW5zdGVhZCBvZiBlbnRyeSBwb2ludCB0eXBlcywgc28KCXRoYXQgd2UgY2FuIGhhdmUgYm90aCBzdGRjYWxsIGFuZCBjZGVjbCByZWdpc3RlciBmdW5jdGlvbnMuCglDaGFuZ2VkIDE2LWJpdCAuc3BlYy5jIGZpbGUgZ2VuZXJhdGlvbiB0byBhdm9pZCBpbmNsdWRpbmcgYnVpbHRpbjE2LmguCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglWZXJ5IHNpbXBsZSBzdXBwb3J0IGZvciBTT19PUEVOVFlQRSBpbiBnZXRzb2Nrb3B0IGFuZCBzZXRzb2Nrb3B0LgoKCSogbGlicmFyeS9wb3J0LmM6CglCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJTWFrZSB1c2Ugb2Ygc29sYXJpc190cnlfbW1hcCgpIGZvciBOZXRCU0QuIFJlbmFtZSBpdCB0bwoJdHJ5X21tYXBfZml4ZWQoKSBzaW5jZSBpdCdzIG5vIGxvbmdlciBTb2xhcmlzLXNwZWNpZmljLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJQWRkZWQgY2hlY2sgZm9yIHN0ZGludC5oIChuZWVkZWQgb24gTmV0QlNEKS4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCUZpeCBOZXRCU0QgY29tcGlsYXRpb24gZXJyb3JzLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCVNpbW9uIFdhbHRvbiA8c2ltb253MkBwYWNiZWxsLm5ldD4KCUZpeGVkIGEgYmFzaGlzbS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglUaGF3ZWQgc29tZSBmcmVlemVzLgoJQ2xlYW5lZCB1cCB0aW1lIGFuZCBub3RpZmljYXRpb24gaGFuZGxpbmcuCglUeXBvcyBmaXhlcyAoR2VyYXJkKS4KCUFkZGVkIGJyZWFrbG9vcCBzdXBwb3J0LgoKMjAwMS0xMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci93bmQxNi5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmM6CglTdGFydGVkIHJld3JpdGUgb2YgcGFpbnRpbmcgZnVuY3Rpb25zIGZvciBtdWx0aXBsZSBwcm9jZXNzZXMuIE1vdmVkCglCZWdpblBhaW50IHRvIGRsbHMvdXNlci4gRml4ZWQgYnVnIGluIHBhaW50IGNvdW50IGhhbmRsaW5nLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBwbGFjZXMgd2hlcmUgd2hpdGVzcGFjZSB3YXMgbm90IGhhbmRsZWQgY29ycmVjdGx5LgoJRG8gbm90IHVzZSBgY21kYHMgd2l0aGluIGNhdCA8PEVPRiBzaW5jZSBiYXNoMSBzb21ldGltZXMgZ2V0cyBjb25mdXNlZAoJYnkgaXQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglPbmx5IFJUU19DT05UUk9MX0hBTkRTSEFLRSBzaG91bGQgc2V0IENSVFNDVFMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmM6CglFcmljIExhZm9yZXN0IDxlY2xAcGV0LmRocy5vcmc+CglBZGQgdGhlIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBpbiB0aGUgdHR5IGRyaXZlci4KCjIwMDEtMTItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBpbmNsdWRlL3dpbm50LmgsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgcmVsYXkzMi9zbm9vcC5jLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbjoKCUV4cG9ydGVkIENBTEwzMl9SZWdzIGZyb20gbnRkbGwsIHJlbmFtZWQgdG8gX193aW5lX2NhbGxfZnJvbV8zMl9yZWdzCgl0byBmb2xsb3cgdGhlIG5hbWluZyBjb252ZW50aW9uIGZvciB0aGlzIHR5cGUgb2YgZnVuY3Rpb25zLgoJU3BsaXQgMTYgYW5kIDMyLWJpdCByZWxheSBmdW5jdGlvbnMgaW50byBzZXBhcmF0ZSBmaWxlcywgYW5kIG1vdmVkIHRoZQoJMzItYml0IG9uZXMgdG8gZGxscy9udGRsbC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIG5ldyBzdHViIE1MTG9hZExpYnJhcnkuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgaW5jbHVkZS9zaGx3YXBpLmgsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGV4Y2x1c2lvbiBkZWZzICYgcmVtYWluaW5nIGZ1bmNzLCByZW1vdmUgaW50ZXJuYWwgdHlwZXMgJgoJb2JqX2Jhc2UuaCAoc3luYyB3aXRoIHdpbiB2ZXJzaW9uKSwgZml4ZWQgYSBudW1iZXIgb2YgZnVuY3Rpb24KCXByb3RvdHlwZXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW1wbGVtZW50ZWQgcHRocmVhZF9yd2xvY2sgc3R1YnMuCgoJKiBjb250cm9scy9idXR0b24uYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRm9yIGEgcmFkaW8gYnV0dG9uIGV2ZW4gaWYgdGhlIGluaXRpYWwgc3R5bGUgaW5jbHVkZXMgV1NfVEFCU1RPUCB0aGUKCWZpcnN0IEJNX1NFVENIRUNLIDAgd2lsbCBjbGVhciBpdCAoZXZlbiBpZiB0aGUgc3RhdGUgd2FzIGNsZWFyKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQSB0cmVldmlldyBpdGVtIG1heSBiZSBUVklfUk9PVC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoQGNhZGxpbmsuY29tPgoJRml4IGZvciB0b29sYmFyIHBvdGVudGlhbGx5IHVzaW5nIGEgTlVMTCBwb2ludGVyLgoKMjAwMS0xMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBZGRlZCBXSU5fR2V0UmVjdGFuZ2xlcyBmdW5jdGlvbi4KCUZpeGVkIFdpbmRvd0Zyb21Qb2ludCB0byB3b3JrIGFjY3Jvc3MgcHJvY2Vzc2VzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvc3lzbWV0cmljcy5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIGZvciBhY3Rpb25zOiBTUElfR0VUL1NFVEdSSURHUkFOVUxBUklUWSwKCVNQSV9HRVQvU0VUSUNPTlRJVExFV1JBUCwgU1BJX0dFVC9TRVRNRU5VRFJPUEFMSUdOTUVOVCwKCVNQSV9HRVQvU0VURE9VQkxFQ0xLV0lEVEgsIFNQSV9HRVQvU0VURE9VQkxFQ0xLSEVJR0hULAoJU1BJX0dFVC9TRVRET1VCTEVDTElDS1RJTUUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNoYW5nZSB0aGUgbWVzc2FnZSB0cmFjZSBpbmRlbnRhdGlvbiB0byBiZSBjb25zaXN0ZW50IGJ5IHRocmVhZC4KCgkqIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXggZm9yIHNvbWUgdHlwZXMgb2YgQysrIGRlYnVnIGluZm8gdGhhdCBjYW4gY2F1c2Ugd2luZWRiZyB0byBjcmFzaC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCURJQUxPR19DcmVhdGVJbmRpcmVjdCBjYW4gaW5jb3JyZWN0bHkga2lsbCB0aGUgY3VycmVudCBpbnB1dCBmb2N1cy4KCjIwMDEtMTItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jOgoJUmVtb3ZlZCBjYWxscyB0byBIRUFQX0dldFNlZ3B0ci4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUZpeGVkIGNvbXBpbGUgZm9yICFNWl9TVVBQT1JURUQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIG1lbW9yeS9yZWdpc3RyeS5jOgoJVXNlIG50ZGxsIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIE11bHRpQnl0ZVRvV2lkZUNoYXIvV2lkZUNoYXJUb011bHRpQnl0ZQoJdG8gYXZvaWQgY29ycnVwdGluZyB0aGUgbGFzdCBlcnJvciBjb2RlLgoKCSogaW5jbHVkZS9udGRkay5oLCBtZW1vcnkvY29kZXBhZ2UuYywgZGxscy9udGRsbC9taXNjLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCVJlbW92ZWQgbnRkbGwgZGVwZW5kZW5jeSBvbiBNdWx0aUJ5dGVUb1dpZGVDaGFyL1dpZGVDaGFyVG9NdWx0aUJ5dGUKCWtlcm5lbDMyIGZ1bmN0aW9ucywgcGx1cyBhIGZldyBzbWFsbCBjbGVhbnVwcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L21iY3R5cGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWJzdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsCgkgIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBhbmQgaW1wcm92ZSB0aGUgbWJjcyBzdXBwb3J0LgoJQWRkIG1iY3R5cGUuaCBhbmQgbWJzdHJpbmcuaC4KCUltcGxlbWVudCBwdXR3YyBhbmQgcHV0d2NoYXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJVGhlIHRvb2xiYXIgY29tbWFuZHMgd2VyZSBub3Qgc2VudCB0byB0aGUgY29ycmVjdCBub3RpZmljYXRpb24KCXdpbmRvdy4KCgkqIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLAoJICBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeGVkIGluY29ycmVjdCBwYWNraW5nLgoKCSogZGxscy9tc3ZjcnQvZW52aXJvbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWdldGVudiBpcyBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCW1rdGltZSBtdXN0IG5vcm1hbGl6ZSB0aGUgc3RydWN0IHRtIGZpZWxkcy4KCjIwMDEtMTItMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fdXNlci5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5zcGVjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGFsbG93IHRvIHNhdmUvcmVzdG9yZSBzb21lIHByb3BlcnRpZXMgaW50byB0aGUgcmVnaXN0cnkgKGxpa2UgZm9udCwKCSAgY3Vyc29yIHNpemUuLi4pCgktIGltcGxlbWVudCB0aGUgdHdvIHNldHMgb2YgcHJvcGVydGllcyAoZGVmYXVsdCAmIGN1cnJlbnQpCgktIGZpeGVkIHNvbWUgYnVncyBtYWlubHkgaW4gZGlhbG9nCgktIGVuaGFuY2VkIGZvbnQgc2VsZWN0aW9uIG1lY2hhbmlzbXMsCgktIGFkZGVkIGFuZCBwcm90ZWN0ZWQgc3ViLW1lbnUgZm9yIGFsbCBvcGVyYXRpb25zIChzeXNtZW51IGlzIG5vdAoJICBhdmFpbCBpbiBtYW5hZ2VkIG1vZGUpCgktIGJldHRlciBkYXRhIHNlcGFyYXRpb24gZm9yIHRoZSBiYWNrZW5kKHMpCgoJKiBzZXJ2ZXIvY29uc29sZS5oLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglMZXQgdGhlIGNvbnNvbGUgcmVuZGVyZXIgYmUgZGVmaW5lZCBhcyBhIHRocmVhZC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uaDoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJT25seSBpbmNsdWRlIHRoZSBuZWNlc3NhcnkgZmlsZXMgdG8gYXZvaWQgY29uZmxpY3RzIGluIGdldGhvc3RuYW1lCglwcm90b3R5cGVzIGJldHdlZW4gd2luc29jay5oIGFuZCB1bmlzdGQuaAoKCSogb2JqZWN0cy9iaXRtYXAuYzoKCUVyaWsgSW5nZSBCb2xz+CA8a25hbkBtby5oaW1vbGRlLm5vPgoJQ3JlYXRlQml0bWFwIGNhbiB0YWtlIG5IZWlnaHQgb3IgbldpZHRoID0gemVybywgYW5kIHRoZW4gcmV0dXJucyBhCglwb2ludGVyIHRvIGEgMXgxIG1vbm9jaHJvbWUgYml0bWFwLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgXzE2OSAoY2FsbCBvZiBSZWxlYXNlKS4gVGhpcyBmaXhlcyBjcmFzaGVzCgkgIHdoZW4gYWN0dWFsbHkgYXR0ZW1wdGluZyB0byBjYWxsIFJlbGVhc2UuCgktIENvcnJlY3Qgc29tZSB0cmFjZXMuCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3Nhc3BpLmMsIG1zZG9zL2Rvc21lbS5jLAoJICBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDE3LmMsCgkgIG1zZG9zL2ludDE5LmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI5LmMsCgkgIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvaW9wb3J0cy5jLAoJICBtc2Rvcy92Z2EuYywgbXNkb3MveG1zLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaCwKCSAgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvdmdhLmgsIG1pc2NlbXUvbWFpbi5jLAoJICBncmFwaGljcy9kaXNwZGliLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTcuYywgZGxscy93aW5lZG9zL2ludDE5LmMsIGRsbHMvd2luZWRvcy9pbnQyMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDI5LmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL2lvcG9ydHMuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaCwgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywKCSAgZGxscy93aW5lZG9zL3htcy5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYzoKCU1vdmVkIG1vc3Qgb2YgdGhlIHJlYWwtbW9kZSBzdHVmZiB0byBkbGxzL3dpbmVkb3MuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgU1lOQ0hST05JWkUgYWNjZXNzIHRvIHN0ZGlvIGhhbmRsZXMuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcHkgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGJ5dGVzIGluIFdyaXRlQ29uc29sZUlucHV0QS4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3MgaW4gb3V0cHV0IGZ1bmN0aW9ucyAod3JpdGUpLgoJUmV3cm90ZSBzb21lIHBhcnRzIGZvciBiZXR0ZXIgRExMIHNlcGFyYXRpb24uCglGaXhlZCBzb21lIHByb3RvdHlwZXMuCglGaXhlZCBtbWlvQWR2YW5jZSBpbiB3cml0ZSBtb2RlLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYWNtRm9ybWF0Q2hvb3NlIHJldHVybmVkIGZpZWxkcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUluaXRpYWxpemUgZGlhbG9nIGRhdGEgY29ycmVjdGx5IGluIENyZWF0ZVRlbXBsYXRlRGlhbG9nLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJTWlzYyBmaXhlcyB0byBEQ0IgYnVpbGRpbmcgZnJvbSBjb21tYW5kIGxpbmUuCgoJKiB0b29scy93aW5lY29uZjoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUJldHRlciBoYW5kbGluZyBvZiBjb25maWd1cmF0aW9uIHdpdGggc2V2ZXJhbCBXaW5kb3dzIGluc3RhbGxhdGlvbnMuCgoyMDAxLTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVW5kb2N1bWVudGVkIGZlYXR1cmUgb2YgVEJfe0dFVHxTRVR9QlVUVE9OSU5GT3tBfFd9OiBpZiBtYXNrIGhhcwoJMHg4MDAwMDAwMCBzZXQgdGhlbiB0aGUgY29tbWFuZCBpZCBpcyByZWFsbHkgdGhlIGluZGV4LgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXhlZCBQYXRoSXNVUkx7QXxXfS4KCS0gSW1wbGVtZW50ZWQgUGF0aFJlbmFtZUV4dGVuc2lvbntBfFd9LCBTSFJlZ0R1cGxpY2F0ZUhLZXksCgkgIENockNtcEl7QXxXfS4KCS0gQWRkZWQgZm9yd2FyZHMgdG8gRHJhd1RleHRXLCBDcmVhdGVEaWFsb2dQYXJhbUEsIENyZWF0ZUZvbnRXLAoJICBUcmFjZVBvcHVwTWVudUV4LgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFN0dWIgcm91dGluZXMgZm9yIF8xNjQsIF8yMDgsIF8yMTAsIF8yMTEsIF8yMzksIF8zNTYsIF80MTMsIF80MzcsCgkgIENvbG9yUkdCVG9ITFMKCS0gSW1wbGVtZW50IHJvdXRpbmVzIGZvciBfMTcyLCBfMTc0LCBfMTc2LCBfMTk5LCBfMjE1LCBfMjE5LCBfMjM2LCBfMzc3LAoJICBfMzc4LCBVcmxDb21wYXJle0F8V30sIFVybEFwcGx5U2NoZW1le0F8V30uCgktIEZpeCByb3V0aW5lcyBfMjE3LCBfMTY5LCBfMjQwLCBfMjc2LCBfMzQyLCBfMzc2LgoKMjAwMS0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdXNlci5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSZW1vdmVkIEdldC9TZXRTY3JlZW5TYXZlVGltZW91dCB1c2VyIGRyaXZlciBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5CglhcmUgbm90IHVzZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUltcGxlbWVudGVkIEltYWdlTGlzdF9HZXREcmFnSW1hZ2UuCglGaXhlZCBJbWFnZUxpc3RfU2V0RHJhZ0N1cnNvckltYWdlIGFuZCBJbWFnZUxpc3RfTWVyZ2UuCglObyBuZWVkIGZvciBTdHJldGNoQmx0IGluIEltYWdlTGlzdF9CZWdpbkRyYWcuCglBZGRlZCBzb21lIHRyYWNlcy4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYzoKCUdsZW5uIFNjaHJhZGVyIDxnZXNjaHJhZGVyQG1lZGlhb25lLm5ldD4KCVVzZSBnZGlfZGlzcGxheSBldmVyeXdoZXJlIHRvIGF2b2lkIEJhZENvbG9yIGVycm9ycy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVJlbW92ZSBzb21lIHBvc3NpYmxlIGludGVybG9ja2luZyBwcm9ibGVtcyB3aXRoIHBlYiBsb2NrLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglGaXhlZCBXU19nZXRwZWVybmFtZSBwYXJhbWV0ZXIgaW4gV1NfYWNjZXB0LgoJQ2hhbmdlZCBvcmRlciBvZiBldmVudCBwcm9jZXNzaW5nIGluIFdJTlNPQ0tfRG9Bc3luY0V2ZW50LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJbWFwX2ltYWdlOiBtYXAgdGhlIFBFIGhlYWRlciByZWFkb25seS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+Cglkb19yZWxvY2F0aW9uczogcHJvY2VzcyByZWxvY2F0aW9uIGJsb2NrcyB3aXRoIGEgVmlydHVhbEFkZHJlc3Mgb2YgMCwKCXN0b3Agb25jZSBTaXplT2ZCbG9jayA9PSAwLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJUmVuYW1lIGRlYnVnLmggdG8gZGVidWd0b29scy5oLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLAoJICB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsCgkgIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsCgkgIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywKCSAgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYywKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIG1zZG9zL3ZnYS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywKCSAgbWVtb3J5L2F0b20uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2NoYW5nZS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJlZGVzaWduIG9mIHRoZSBzZXJ2ZXIgY29tbXVuaWNhdGlvbiBwcm90b2NvbCB0byBhbGxvdyBhcmJpdHJhcnkgc2l6ZWQKCWRhdGEgdG8gYmUgZXhjaGFuZ2VkLgoJU3BsaXQgcmVxdWVzdCBhbmQgcmVwbHkgc3RydWN0dXJlcyB0byBtYWtlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CgllYXNpZXIuCglNb3ZlZCBtYW55IGNvbnNvbGUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLCBhZGRlZCBjb2RlIHBhZ2Ugc3VwcG9ydCwKCWNoYW5nZWQgYSBmZXcgcmVxdWVzdHMgdG8gYmVoYXZlIHByb3Blcmx5IHdpdGggdGhlIG5ldyBwcm90b2NvbC4KCjIwMDEtMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9mb250X2NvbnZlcnQuc2gsIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHEsCgkgIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHE6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBdm9pZCBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCBmaWxlbmFtZXMgY29udGFpbmluZyBzcGFjZXMuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBwYXNzaW5nIGV2ZW50IHdpdGggLS11c2UtZXZlbnQgdG8gbGV0IHByb2dyYW1zIHN0YXJ0aW5nIHdpdGgKCWRpZ2l0cyBiZWluZyBydW4uCgoJKiBtaXNjZW11L21haW4uYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CgltbXN5c3RlbS5kbGwgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkIGZvciAxNi1iaXQgYXBwcy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIElPIHdoZW4gbm90IHJ1biB3aXRoIHdpbmVjb25zb2xlLgoKMjAwMS0xMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQ29tcGlsZSBhbGwgcHJvZ3JhbXMgd2l0aCAtRFNUUklDVCAtRE5PTkFNRUxFU1NVTklPTiAtRE5PTkFNRUxFU1NTVFJVQ1QuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglTa2lwIHF1ZXVlIGNsZWFudXBzIGlmIHF1ZXVlIGhhcyBiZWVuIGRlc3Ryb3llZCBhbHJlYWR5LgoKCSogZGxscy9udGRsbC9yZWcuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUZpeGVkIHJlZ2lzdHJ5IHJvdXRpbmVzIGJyb2tlbiBieSB0aGUgc3RydWN0dXJlIHNpemVzIGZpeC4KCjIwMDEtMTEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9zb3VyY2UuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZXZpc2l0ZWQgY29uc29sZSBzdXBwb3J0IChnb3QgcmlkIG9mIG9sZCBoYWNrcyBhbmQgcHJpdmF0ZSBlZGl0bGluZQoJc2luY2Ugd2Ugbm93IGhhdmUgYSBicmFuZCBuZXcgY29uc29sZSksIHJlbW92ZWQgcHJpdmF0ZSBkZWJ1ZyBoZWFwLgoKCSogd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZWRpdGxpbmUuYywKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0cywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwKCSAgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuc3BlYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmNvbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBmaWxlcy9maWxlLmMsCgkgIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IGNvbnNvbGUgY29kZSBiYXNlZCBvbiBXaW4zMiB3aW5kb3dzLgoKCSogbXNkb3MvdnhkLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYywKCSAgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLAoJICBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbmIzMC5oLCBpbmNsdWRlL250ZGRrLmgsCgkgIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmgsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwYWNraW5nIGFuZCBsYXlvdXQgb2YgbWFueSBzeXN0ZW0gc3RydWN0dXJlcy4KCgkqIGRsbHMvbXN2Y3J0L2Vudmlyb24uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TVkNSVF9nZXRlbnY6IGNvbXBhcmUgZm9yIHRoZSBsZW5ndGggb2YgdGhlIGtleSBhbmQgcmV0dXJuIE5VTEwgaW4KCWNhc2Ugb2YgZmFpbHVyZS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUFkZCBtaXNzaW5nIDwvcGFyYT4uCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQ2hlY2sgZm9yIGNvbXBsZXRlZCBvdmVybGFwcGVkcyBpbiBSZWFkQ29tbTE2IHRvIHNvbHZlIHByb2JsZW1zIHdpdGgKCXByb2dyYW1zIHRoYXQgbG9vcCBvbiBpdCBidXQgZG9uJ3QgZ2V0IGRhdGEuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9kZXZfdCBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLgoKMjAwMS0xMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3NpbmcgZm9yIGFjdGlvbnMgU1BJX0dFVC9TRVRTQ1JFRU5TQVZFVElNRU9VVCwKCVNQSV9HRVQvU0VUU0NSRUVOU0FWRUFDVElWRSwgU1BJX0dFVC9TRVRTQ1JFRU5TQVZFUlJVTk5JTkcuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglHZXRVc2VyTmFtZSBzaG91bGQgaW5jbHVkZSB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIgd2hlbgoJcmV0dXJuaW5nIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcmV0dXJuZWQuIENvcnJlY3RseSBoYW5kbGUgdGhlCglFUlJPUl9NT1JFX0RBVEEgY2FzZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVzZSBleGNlcHRpb24gaGFuZGxlciBmb3IgR2xvYmFsVW5sb2NrLCBHbG9iYWxGcmVlLgoKCSogZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbnNvY2suYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpY2FwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaW1nMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNybGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9uZXRhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3N0aS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVRPT0xCQVJfR2V0UmVjdCBkaWQgbm90IGNvcnJlY3RseSB0cmFuc2xhdGUgdGhlIGNvbW1hbmQgSUQgdG8gdGhlCglidXR0b24gaW5kZXguCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglBZGQgRGViaWFuL01hbmRyYWtlIG1lbnUgc3lzdGVtIHN1cHBvcnQuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJSXQgaXMgbGVnYWwgdG8gY2FsbCBVbnJlZ2lzdGVyQ2xhc3Mgd2l0aCBhbiBoSW5zdGFuY2Ugb2YgemVyby4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT25seSBpbmNsdWRlICdzeXMvdXNlci5oJyBmb3IgTGludXguIEZpeGVzIGEgY29tcGlsYXRpb24gZXJyb3Igb24KCUZyZWVCU0QgNS4wLgoKCSogaW5jbHVkZS93aW5udC5oLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9udGRsbC9udC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggTFVJRCBkZWZpbml0aW9uLgoKCSogd2luZG93cy9zcHkuYywgaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBtZXNzYWdlIHNweSB0byB1bmljb2RlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRml4IGxvY2sgdXAgaW4gR2V0S2V5TmFtZVRleHQgZHVlIHRvIGFuIGluY3JlbWVudCB3cmFwIHdoZW4gS2V5Q29kZSBpcwoJYSBjaGFyIHR5cGUgYW5kIG1heF9rZXljb2RlIGlzIDI1NS4KCjIwMDEtMTEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYywgd2luMzIvdGltZS5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHRvb2xzL3dpbmVpbnN0YWxsLCBtc2Rvcy9pbnQyMS5jLCBtaXNjL2Nkcm9tLmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgZGxscy94MTFkcnYvZGdhMi5jLAoJICBkbGxzL3dpbmVwcy93cHNfRGUucmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgY29udHJvbHMvRURJVC5UT0RPLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGZpeCB3cm9uZyBoZXhhZGVjaW1hbCBHZXRMYXN0RXJyb3IoKSBvdXRwdXQKCS0gbWlzYyBmaXhlcwoJLSBjaGFuZ2VkIG15IGVtYWlsIGFkZHJlc3MKCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJUHJldmVudCB3YXJuaW5ncyBhYm91dCBsYWJlbHMgYXQgZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnRzIHdoZW4KCWNvbXBpbGluZyB3aXRoIGdjYy0zLnguCgoJKiBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFNvbGFyaXMgYW5kIEZyZWVCU0QgY29tcGlsYXRpb24gZXJyb3JzIGludHJvZHVjZWQgYnkgdGhlCglyZWNlbnQgd2luc29jayB1cGRhdGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVNpbW9uIEJyaXRuZWxsIDx1Z2hiYXNoQHlhaG9vLmNvbT4KCUZpeCBhIGxvb3AgcGxheWluZyBmYWlsdXJlIGFuZCBhIHByb2JsZW0gd2l0aCBjaG9wcHkgc291bmQuCgoJKiBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsCgkgIGRsbHMvc2hsd2FwaS91cmwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQSBmZXcgdHlwb3MuCgoJKiBpbmNsdWRlL3JwY25kci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNSURMX1NUVUJfTUVTU0FHRSBuZWVkcyBhIHBhY2s0IGZvciB0aGUgTWF4Q291bnQgZmllbGQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglCZXR0ZXIgcmVsYXlpbmcgZm9yIF9sY3JlYXQuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIHR5cG8gaW4gYXZpY2FwMzIuc3BlYyBmaXhlZC4KCgkqIHdpbmRvd3Mvd2luLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggZXhjaGFuZ2VkIGxpbmVzIGluIFdJTl9HZXRXaW5kb3dMb25nLgoKMjAwMS0xMS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglUcnVuY2F0ZSB0aGUgd2luZG93IHRleHQgaWYgaXQgaXMgdG9vIGxhcmdlIGZvciB0aGUgcmVxdWVzdCBidWZmZXIuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJTG9jYWwgY2xhc3NlcyByZWdpc3RlcmVkIHdpdGggVVNFUiBpbnN0YW5jZSBoYW5kbGUgbm93IGFyZSBub3cgZm91bmQKCWluIENMQVNTX0ZpbmRDbGFzc0J5QXRvbS4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOgoJSnVzc2kgSnVtcHBhbmVuIDxqdXNzaWpAemV1c2VkaXQuY29tPgoJQWRkZWQgbWlzc2luZyBSaWNoRWRpdCBkZWZpbmVzLgoKMjAwMS0xMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luLmgsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmM6CglNb3ZlZCBXSU5fRmluZFdpblRvUmVwYWludCBmdW5jdGlvbmFsaXR5IHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvc29jay5jLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oLAoJICBpbmNsdWRlL3dzMnRjcGlwLmgsIGluY2x1ZGUvd3NpcHguaCwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsCgkgIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugd2luc29jay5oIGFuZCB3aW5zb2NrMi5oIGluZGVwZW5kZW50IGZyb20gdGhlIFVuaXggaGVhZGVycy4KCU1ha2UgdGhlbSBjb21wYXRpYmxlIHdpdGggYm90aCB0aGUgVW5peCBDIGhlYWRlcnMgYW5kIHRoZSBNU1ZDUlQKCWhlYWRlcnMuCglFbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBVbml4IGhlYWRlcnMgdmlhIHRoZSBVU0VfV1NfUFJFRklYCgltYWNyby4KCUFkZCBXSU5FX05PV0lOU09DSzogcHJldmVudHMgd2luc29jay5oIGZyb20gYmVpbmcgaW5jbHVkZWQgZnJvbQoJd2luZG93cy5oIHdoZW4gZGVmaW5lZC4KCUFkZCB3czJ0Y3BpcC5oLCBtb3ZlIGRlZmluaXRpb25zIHRvIHRoZSByaWdodCBoZWFkZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0cnVjdHVyZSBORVdURVhUTUVUUklDIHVzZXMgcGFja2luZyA0LgoKCSogaW5jbHVkZS9tYXBpZGVmcy5oOgoJSnVzc2kgSnVtcHBhbmVuIDxqdXNzaWpAemV1c2VkaXQuY29tPgoJQWRkZWQgbWlzc2luZyBNQVBJIGRlZmluZXMuCgoyMDAxLTExLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuaCwgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbmRvdy5jOgoJU3RvcmUgdGhlIHdpbmRvdyBjYXB0aW9uIHRleHQgaW4gdGhlIHNlcnZlci4KCU1haW50YWluIGEgcGFpbnQgY291bnQgc2VwYXJhdGVseSBmb3IgZWFjaCB3aW5kb3cuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCB0aGUgc2VydmVyIHBhaW50IGNvdW50IGluIFNldFdpbmRvd1Bvcy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd2F2ZShJbnxPdXQpT3BlbiB3aGVuIGNhbGxlZCB3aXRoIFdBVkVfTUFQUEVEIGZsYWc7IHNvbWUgbWlub3IKCTE2LzMyIEFQSSBjYWxsIG9yZGVyaW5nLgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIGZvciBTUElfR0VUL1NFVE1PVVNFLCBTUElfR0VUL1NFVEtFWUJPQVJEREVMQVksCglTUElfR0VUL1NFVEtFWUJPQVJEU1BFRUQgYWN0aW9ucy4gSW1wbGVtZW50ZWQgdXNlIG9mIG1vdXNlCglhY2NlbGVyYXRpb24vdGhyZXNob2xkIGZvciByZWxhdGl2ZSBtb3VzZSBtb3ZlbWVudHMuCgoJKiBjb250cm9scy9lZGl0LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglFRElUX0VNX0xpbmVMZW5ndGggY2FsbGVkIGZyb20gd2l0aGluIEVESVRfRU1fTGluZUxlbmd0aCBuZWVkcwoJc3RhcnRpbmcgbGluZSBjaGFyIGluZGV4LCBub3QgbGluZSBpbmRleCAoPT0gbGluZSBudW1iZXIpLgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IG9yZGluYWxzIDcsIDgsIDksIDEzLCAxNCwgMTksIDM2LgoJLSBJbXBsZW1lbnQgU0hSZWdXcml0ZVVTVmFsdWV7QXxXfSwgVXJsR2V0UGFydHtBfFd9LCBVcmxJcy4uLntBfFd9CgoyMDAxLTExLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcmFjZSBjb25kaXRpb25zIGluIG5vdGlmaWNhdGlvbiB2cy4gb3BlcmF0aW9uCglzeW5jaHJvbml6YXRpb24gdXNpbmcgdGhlIHNhbWUgaW4gcHJvY2VzcyBtZXNzYWdlIHJpbmcgaW4gd2F2ZUluIGFzIGluCgl3YXZlT3V0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXhlcyBzdHVwaWQgYnVnIHdpdGggdHlwZWxpYiBmaWxlbmFtZXMuCgoJKiBkbGxzL3VzZXIvd25kMTYuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUNhc3QgaWQgdG8gdW5zaWduZWQgaW4gR2V0RGxnSXRlbTE2LgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJR2Vyc29uIEt1cnogPEdlcnNvbi5LdXJ6QHBlcmdhbW9uLXNvZnR3YXJlLmRlPgoJUGFyaXR5IHNldHRpbmdzIHdlcmUgbm90IHNldCBwcm9wZXJseSBpbiBCdWlsZENvbW1EQ0JBbmRUaW1lb3V0cygpCgliZWNhdXNlIG9mIGFuIG9mZi1ieS1vbmUgZXJyb3IuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4ZWQgaGFuZGxpbmcgb2YgLTEgaXRlbWlkIGluIFdNX0RSQVdJVEVNLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGltZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJLSBpbXBsZW1lbnQgbWJzY3NwbiBtb3N0bHkgYXMgYSBzdHViCgktIHJlaW1wbGVtZW50IG1rdGltZQoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gZG9uJ3QgZm9yZ2V0IHRvIGluaXRpYWxpemUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIDAKCS0gYWRkICJSQVMgZG9lc24ndCB3b3JrIiB3YXJuaW5nCgoyMDAxLTExLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglTaW1vbiBCcml0bmVsbCA8dWdoYmFzaEB5YWhvby5jb20+CglDbGVhbmVkIHVwIHRoZSB3b2RQbGF5ZXIgZnVuY3Rpb25hbGl0eSB0byBtYWtlIGl0IGVhc2llciB0byBmb2xsb3cuCglDaGFuZ2VkIG5vdGlmaWNhdGlvbiB0byBiZSBjYWxjdWxhdGVkIGZyb20gYnl0ZXMgcGxheWVkIHJhdGhlciB0aGFuCgl0aW1lIGVsYXBzZWQuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglUZXN0IGJpdHMgd2l0aCAnJicgaW5zdGVhZCBvZiAnJiYnLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFNQSV9JQ09OSE9SSVpPTlRBTFNQQUNJTkcsIFNQSV9JQ09OVkVSVElDQUxTUEFDSU5HIHN5c3RlbQoJcGFyYW1ldGVycyBwcm9jZXNzaW5nLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgaGFuZGxpbmcgb2Ygc3RyaW5ncyBpbiBzZXRWYWx1ZS4KCUJldHRlciBoYW5kbGluZyBvZiBzdHIoeCkgYW5kIGhleCh4KSBpbiBzZXRWYWx1ZS4KCU1pc2MgdHlwb3MuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+bwoJRG9jdW1lbnQgdGhlIG5ldyAtd2ludmVyIHZlcnNpb25zLgoKCSogZGxscy91c2VyL3duZDE2LmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJQ2hhbmdlZCBCTV8gbWVzc2FnZXMgU0VUQ0hFQ0sgYW5kIEdFVENIRUNLIHRvIFNFVENIRUNLMTYgYW5kCglHRVRDSEVDSzE2IGluIENoZWNrRGxnSXRlbTE2IGFuZCBJc0RsZ0l0ZW1DaGVja2VkMTYuCglDYXN0IFVJTlQxNiB2YWx1ZSB0byBVSU5UIG9yIElOVCBkZXBlbmRpbmcgb24gc2lnbiBpbiBTZXREbGdJdGVtSW50MTYuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY29nbml6ZSB0aGUgRnJlZUJTRCBkbG9wZW4gZXF1aXZhbGVudCBvZiAiY2Fubm90IG9wZW4iLgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVVzZSBwcm9wZXIgdW5pY29kZSByb3V0aW5lLgoKCSogTWFrZS5ydWxlcy5pbjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIG91dC1vZi1zb3VyY2UtdHJlZSBidWlsZHMgd29yayB3aXRoIFNvbGFyaXMgbWFrZS4KCjIwMDEtMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTExMDguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC93Y3MuYywgZGxscy9zaGx3YXBpL3VybC5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJSW1wbGVtZW50ZWQgaW5saW5lIHZlcnNpb24gb2YgdGhlIGlzd3h4eCBmdW5jdGlvbnMuCgoJKiBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2lvcG9ydHMuYywKCSAgbXNkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCB0aGUgaW50IDkgKGtleWJvYXJkKSBoYW5kbGVyIHRvIGRsbHMvd2luZWRvcy4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglGaW5kIG91dCBob3cgbXVjaCBkYXRhIGlzIGF2YWlsYWJsZSB3aGVuIGNhbGxpbmcgUmVhZEZpbGVFeC4KCjIwMDEtMTEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVJlcGFpcmVkIGNoaWxkIHdpbmRvdyBhY3RpdmF0aW9uIGJyb2tlbiBieSBwcmV2aW91cyBjaGFuZ2UuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkdW1waW5nIG9mIHdpbmRvdyBzdHlsZXMgYXQgdGhlIHdpbmRvdyBjcmVhdGlvbiB0aW1lLgoKCSogbXNkb3MvdmdhLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBmZXcgZGVmYXVsdCBwYWxldHRlIGVudHJpZXMgZm9yIHRoZSBWR0EvTUNHQSAyNTYtY29sb3IgbW9kZS4KCU1hZGUgdGhlIFZHQSBtb2RlIHNldCBnbyB0aHJvdWdoIFJ1bkluVGhyZWFkLCBzbyB0aGF0IHRoZSBWR0EgZ3JhcGhpY3MKCXdpbmRvdyBnZXRzIG93bmVkIGJ5IHRoZSByaWdodCB0aHJlYWQuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglBdm9pZCBmdHJ1bmNhdGUgdG8gd29yayBhcm91bmQgYnJva2VuIFVNU0RPUyBmaWxlIHN5c3RlbS4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglDcmVhdGVkIG5ldyBpbmZyYXN0cnVjdHVyZSBmb3IgU3lzdGVtUGFyYW1ldGVyc0luZm8gZnVuY3Rpb24uIFVzZWQgaXQKCXRvIGltcGxlbWVudCBwcm9jZXNzaW5nIGZvciBTUElfR0VUL1NFVEJFRVAsIFNQSV9HRVQvU0VUQk9SREVSLAoJU1BJX0dFVC9TRVRTSE9XU09VTkRTIHN5c3RlbSBwYXJhbWV0ZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTWlub3IgZ3JhbW1hdGljYWwgY29ycmVjdGlvbnMuCgoJKiBtc2Rvcy9kcG1pLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywKCSAgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBSdW5JblRocmVhZCBjYWxsb3V0IHRvIHdpbmVkb3MuCgoJKiBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJTWFrZSBDb25uZWN0TmFtZWRQaXBlIHdvcmsgaW4gb3ZlcmxhcHBlZCBtb2RlLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUlnbm9yZSBEU1IvRFRSIGZsb3cgY29udHJvbCBpbiBEQ0IuIHRlcm1pb3MgZG9lc24ndCBzdXBwb3J0IGl0LgoKMjAwMS0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRGVmaW5lIHJlc3Qgb2YgVVJMX0VTQ0FQRS4uLiBhbmQgb3RoZXIgZmxhZ3MuCgktIERlZmluZSBpbXBsZW1lbnRlZCBpbnRlcmZhY2VzIGZvciByZWcuYyBhbmQgdXJsLmMuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgVVJMX0VTQ0FQRV9TRUdFTUVOVF9PTkxZLCBVUkxfRVNDQVBFX1BFUkNFTlQsCgkgIGFuZCBVUkxfRE9OVF9FU0NBUEVfRVhUUkFfSU5GTyBpbiB0aGUgVXJsRXNjYXBle0F8V30gcm91dGluZXMuCgktIE1ha2UgVXJsQ2Fub25pY2FsaXplQSB1c2UgVXJsQ2Fub25pY2FsaXplVy4KCS0gSW1wbGVtZW50IGZ1bGwgZnVuY3Rpb25hbGl0eSBpbiBVcmxDYW5vbmljYWxpemVXLgoJLSBJbXBsZW1lbnQgVXJsQ29tYmluZXtBfFd9LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaDoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBTSExXQVBJXzEgKEFTQ0lJIHZlcnNpb24gb2YgU0hMV0FQSV8yKS4KCS0gRml4IGVycm9yIGluIFNITFdBUElfMTgKCS0gTmV3IGZpbGUgKG9yZGluYWwuaCkgd2l0aCBkb2N1bWVudGF0aW9uIGZvciBfMSwgJl8yLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbnBvcy5oLCBkbGxzL3R0eWRydi93bmQuYzoKCVdpbmRvdyBhY3RpdmF0aW9uIGNsZWFudXBzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVJldHVybiBzdWNjZXNzIGluIENyZWF0ZVByb2Nlc3Mgd2hlbiB3ZSBzdGFydGVkIGEgbm9uLVdpbmVsaWIgVW5peAoJcHJvY2Vzcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAkWF9MSUJTIHBhdGggd2hpbGUgc2VhcmNoaW5nIGZvciBsaWJmcmVldHlwZS4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOgoJPGxhcnN0aXFAbGFyc3RpcS5keW5kbnMub3JnPgoJRGV2aWNlcyBuZXZlciBuZWVkIHRvIGJlIHBvbGxlZCwgc28gcmV0dXJuIERJX05PRUZGRUNUIGluIFBvbGwuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVByZXZlbnQgZGFuZ2VyIG9mIGFjY2Vzc2luZyBmcmVlZCBtZW1vcnkgKHRoZW9yZXRpY2FsIGJ1dCB1bmxpa2VseQoJYnVnKS4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglzdHJzZXAgaXMgbm90IGltcGxlbWVudGVkIG9uIFNvbGFyaXMsIHJlcGxhY2UgaXQgd2l0aCBvdXIgb3duIHBvcnRhYmxlCglpbXBsZW1lbnRhdGlvbi4KCgkqIGxpYnJhcnkvZGVidWcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVuYW1lZCBzdHJ1Y3Qgb3B0aW9uIHRvIHN0cnVjdCBkZWJ1Z19vcHRpb24gdG8gYXZvaWQgY29tcGlsZSBwcm9ibGVtcwoJd2hlcmUgc3RydWN0IG9wdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQuCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGEgYnVmZmVyIG92ZXJmbG93IGluIHdyaXRlX25hbWVfc3RyLCBidWcgZm91bmQgYnkKCWpvbmF0aGFuQGNvcnZ1LmNvbS5hdS4KCgkqIHRvb2xzL3dpbmVjaGVjazogPGdodXRjaGlzQGNpc2NvLmNvbT4KCUF2b2lkIHBhcnNpbmcgdGhlIHdob2xlIHRyZWUgdG8gZmluZCBsaWJ3aW5lLnNvLgoKCSogbG9hZGVyL21vZHVsZS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHByZWZpeCAlcCB3aXRoIDB4LgoJVmFyaW91cyBFbmdsaXNoIGZpeGVzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kaWFsb2cuYywKCSAgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcHBsLmwsIHdpbjMyL2RldmljZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgbXNkb3MvZG9zbWVtLmMsCgkgIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTAuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbGlicmFyeS9wb3J0LmMsIGxvYWRlci9lbGYuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvdHNfc2hhcGUuaCwKCSAgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwKCSAgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlbmRlci5oLAoJICBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLAoJICBpbmNsdWRlL3RzX3h2aWRlby5oLCBpbmNsdWRlL3dpbmVfZ2wuaCwgaW5jbHVkZS94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYvZGdhMi5oLCBkbGxzL3gxMWRydi94MTFkZHJhdy5oLCBkbGxzL3gxMWRydi94dmlkbW9kZS5oLAoJICBmaWxlcy9kcml2ZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmgsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsCgkgIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBjb250cm9scy9tZW51LmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBjb25maWd1cmUuaW4sIGNvbnNvbGUveHRlcm0uYywgY29uZmlndXJlOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgI2luY2x1ZGUgb3JkZXIgZm9yIGNvbmZpZy5oLgoJQWRkICNpbmNsdWRlICJjb25maWcuaCIgZGlyZWN0aXZlcyB3aGVyZSBuZWVkZWQuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGVidWd0b29scy5oLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIGRlYnVndG9vbHMuaCBpbmRlcGVuZGVudCBmcm9tIGNvbmZpZy5oLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJQWxsb3cgb3duZXIgdG8gYmUgdGhlIGRlc2t0b3Agd2luZG93LgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVRoZSAnZHdvcmQnIHZhbHVlcyBzaG91bGQgYmUgc3RvcmVkIGFzIGJpZyBlbmRpYW4gdmFsdWVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9uYjMwLmgsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgY29uZmlndXJlOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIG5ldGFwaTMyLmRsbCBhbmQgdGhlIE5ldGJpb3MoKSBjYWxsLgoKCSogd2luZG93cy9jYXJldC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGb3IgZHJhd2luZyBhIGNhcmV0LCBpbnRlcm5hbGx5IHJlcGxhY2VkIHRoZSBicnVzaCBieSBhIGJpdG1hcCAodGhpcwoJYWxsb3dzIGNhcmV0IG9mIHNpemUgPiA4eDgpLAoKCSogbWlzYy9vcHRpb25zLmMsIG1pc2MvdmVyc2lvbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdmVyc2lvbnMgZm9yIFdpbk1FIGFuZCBXaW5YUC4KCUZpeCB0aGUgMTZiaXQgdmVyc2lvbiByZXR1cm4gZm9yIFdpbjIwMDAuCglNb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIFdpbjk1Lzk4IENTRFZlcnNpb24gZmllbGRzLgoJRW5oYW5jZSBkb2N1bWVudGF0aW9uIG9mIFdpbjk1IHZlcnNpb24gbnVtYmVycy4KCUNvbmZpcm0gdGhlIGV4aXN0aW5nIGRhdGEgZm9yIFdpbjIwMDAuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBpbmNvcnJlY3QgdXNlIG9mIGEgVW5pY29kZSBzdHJpbmcgbGl0ZXJhbC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdHJhY2VzIHRvIGhlbHAgZGlhZ25vc2Ugc3lzdGVtYXRpYyBjYWNoZWQtbWV0cmljcyByZWdlbmVyYXRpb24KCXByb2JsZW1zLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWUgU0lDX0NvbXBhcmVFbnRyeXMgdG8gU0lDX0NvbXBhcmVFbnRyaWVzLCBhbmQgbWFrZSBpdCBzdGF0aWMuCgoJKiBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWNhcDMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBtc3JsZTMyLmRsbCBhbmQgaW1wbGVtZW50ZWQgUkxFOCBkZWNvZGVyLgoJQWRkZWQgc3R1YiBmb3IgYXZpY2FwMzIuCgoyMDAxLTExLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9mb250LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgR2V0Q2hhcldpZHRoIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCU1vdmUgU1BZX0VudGVyTWVzc2FnZSBjYWxsIGFmdGVyIGFsbCBwb3NzaWJsZSBleGl0cyBzbyB0aGF0IHRoZXJlIHdpbGwKCWJlIGEgbWF0Y2hpbmcgU1BZX0V4aXRNZXNzYWdlLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEluZGljYXRlIHRoYXQgU3RyUmV0VG9TdHJOe0F8V30gYW5kIFN0clJldFRvQnVme0F8V30gYXJlIGlkZW50aWNhbAoJICBjb2RlIGJ1dCBkdXBsaWNhdGVkIGRlbGliZXJhdGVseS4KCS0gSW1wbGVtZW50IFN0clJDaHJJe0F8V30uCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBXaW5lIGludGVybmFsIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLAoJICB0b29scy93aW5lZHVtcC9vdXRwdXQuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5kIGdsb2JhbGl6ZWQgc29tZSBwYXRoIGFuZCBtb2R1bGUgbmFtZSBoYW5kbGluZy4KCVR3ZWFrZWQgdGhlIGRlbWFuZ2xpbmcgb2YgZnVuY3Rpb24gcG9pbnRlcnMgYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBkc3QgLyBzcmMgbGluZXMgaW1wbGVtZW50YXRpb24uCglBZGRlZCBtdXgvbWl4ZXIgY29udHJvbCBmb3IgbWFzdGVyIHJlYy4KCUFkZGVkIGZyYW1ld29yayBmb3IgbXVsdGlwbGUgbWl4ZXJzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJVGVzdCBmb3Igd3NfdGltZW91dD1OVUxMIGluIHdpbnNvY2sgc2VsZWN0KCkuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZWxsIFNvbGFyaXMgdXNlcnMgd2hlcmUgdG8gZ2V0IFhQTS4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZBTFNFIGlzIG5vdCBkZWZpbmVkIG9uIFNvbGFyaXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGxpbmUgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIFgxMURSVl9ESUJfQ29udmVydF9hbnlfYXNpcy4KCUNvcnJlY3RseSBpbml0aWFsaXplIHRoZSBjb2xvciBtYXNrcyBvZiAyNGJwcCBESUJzLgoKCSogd2luZG93cy9jbGFzcy5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCUZvciBnbG9iYWwgY2xhc3NlcywgR2V0Q2xhc3NJbmZvIG5vdyByZXR1cm5zIGEgaGFuZGxlIHRvIFVTRVIuCgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhIGR5bmFtaWMgdGFibGUgb2YgRE9TIGludGVycnVwdCBoYW5kbGVycy4KCjIwMDEtMTAtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBSZWdTZXRWYWx1ZUV4IGNhbGxzIGFuZCBjcmFzaCB3aGVuIERyaXZlck5hbWU9IiIgaW4gcmVnaXN0cnkuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVByb3RlY3QgYWdhaW5zdCBhbiBpbnRlcnJ1cHQtcGVuZGluZyBzaWduYWwgcmVjdXJzaW9uLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYXN5bmNzcmMuYywKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovZGV2ZW51bS5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmgsIGRsbHMvcXVhcnR6L2Rldm1vbi5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uaCwKCSAgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovaWZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywgZGxscy9xdWFydHovcmVnc3ZyLmgsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLAoJICBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJSW1wbGVtZW50ZWQgSVByb3BlcnR5QmFnLgoJSW1wbGVtZW50ZWQgc29tZSBGaWx0ZXJNYXBwZXIyIG1ldGhvZHMuCglJbXBsZW1lbnRlZCBBZGRTb3VyY2VGaWx0ZXIuCglJbXBsZW1lbnRlZCBSZW5kZXIgcGFydGlhbGx5LgoJSW1wbGVtZW50ZWQgQ29ubmVjdCBwYXJ0aWFsbHkuCgoJKiBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGRlZmluaXRpb25zIG9mIE1FUklUcy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHViIGZvciBJQ0ltYWdlQ29tcHJlc3MuCglJbXBsZW1lbnRlZCBJQ0ltYWdlRGVjb21wcmVzcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGRlZCBzdHVicyBmb3IgXzE4LF8yMSxfMjIgd2hpY2ggc2VlbSB0byBiZSB1c2VkIG9ubHkgYnkgbmF0aXZlCgkgIHNoZG9jdncuZGxsCgktIEltcGxlbWVudGVkIF8yNiwgXzI3LCBfMjgsIF8zMiwgYW5kIF8zNCAobW9yZSBpc3cuLi4gZnVuY3Rpb25zKS4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglTdHViIFVybENvbWJpbmVBIGFuZCBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIFVybENvbWJpbmVXLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBTSFJlZ0dldEJvb2xVU1ZhbHVle0F8V30uCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYzoKCUplcmVteSBOZXdtYW4gPGpuZXdtYW5AY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZWQgTWFydGluaSBnbGFzcy4KCjIwMDEtMTAtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYzoKCURvbid0IGtlZXAgbWFpbiBleGUgYW5kIGRsbHMgaGFuZGxlcyBvcGVuIHdoZW4gdGhlIGZpbGUgaXMgb24KCXJlbW92YWJsZSBtZWRpYS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGhhbmRsaW5nIGZvciBMVk5fR0VURElTUElORk9XLgoKMjAwMS0xMC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgSFVTS0VZIGludGVybmFscywgaW5jbHVkaW5nIGZ1bmN0aW9uczoKCSAgU0hSZWdPcGVuVVNLZXl7QXxXfSwgU0hSZWdDbG9zZVVTS2V5LCBTSFJlZ0dldFVTVmFsdWV7QXxXfSwKCSAgU0hSZWdRdWVyeUluZm9VU0tleXtBfFd9CgktIEltcGxlbWVudCBTSFJlZ1F1ZXJ5VVNWYWx1ZXtBfFd9CgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gIEltcGxlbWVudDoKCSAgICAgIFNITFdBUElfMiAgLSBJZGVudGlmeSBpbnRlcm5ldCBwcm90b2NvbHMuCgkgICAgICBTSExXQVBJXzI1ICAtICBpc3dhbHBoYQoJICAgICAgU0hMV0FQSV8zMyAgLSAgaXN3ZGlnaXQKCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJU3dpdGNoIGZvY3VzIHRvIGFjdGl2YXRlZCB3aW5kb3cgZXZlbiBpZiBubyB3aW5kb3cgcHJldmlvdXNseSBoYWQgdGhlCglmb2N1cy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglUcnkgdG8gdXNlIHJlYWQgaW5zdGVhZCBvZiBtbWFwIGZvciBmaWxlcyBvbiByZW1vdmFibGUgbWVkaWEsIHNvIHRoYXQKCXdlIGRvbid0IG5lZWQgdG8ga2VlcCB0aGUgbWFwcGluZyBoYW5kbGUgb3Blbi4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIG1pc2MvcmVnaXN0cnkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU2F2ZSBhIGRpc2sgZmlsZSdzIGRyaXZlIHR5cGUgaW4gdGhlIHNlcnZlciBvYmplY3QuCgoyMDAxLTEwLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogQ29zbWV0aWMgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtLy5jdnNpZ25vcmUsCgkgIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLCBkbGxzL21zZG1vLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywKCSAgZGxscy9tc2Rtby9tc2Rtb19tYWluLmMsIGRsbHMvcWNhcC8uY3ZzaWdub3JlLAoJICBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9xY2FwLnNwZWMsIGRsbHMvcWNhcC9xY2FwX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgbXNkbW8uZGxsLCBxY2FwLmRsbCBhbmQgZGV2ZW51bS5kbGwuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvZm9udC5oLCBvYmplY3RzL2ZvbnQuYywgY29uZmlndXJlOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldEZvbnREYXRhLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3Byb3BlcnR5ZnJhbWUuYywKCSAgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIE9sZUNyZWF0ZVByb3BlcnR5RnJhbWUgYW5kCglPbGVDcmVhdGVQcm9wZXJ0eUZyYW1lSW5kaXJlY3QuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQvYWRkZWQgc29tZSBjb25zb2xlIGRlZmluaXRpb25zLgoKCSogbWlzYy92ZXJzaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldmVydCAxNmJpdCB3aW45NSB2ZXJzaW9uIGJhY2sgdG8gb3JpZ2luYWwgdmFsdWUuIEZpeGVzIEluc3RhbGxTaGllbGQKCWluc3RhbGxlciB2ZXJzaW9uIGNoZWNrLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBpbmNsdWRlL3gxMWZvbnQuaCwgb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglFeHRUZXh0T3V0VyB3aXRoIHN5bWJvbCBmb250cyB3b3JrcyB3aXRoIGNoYXJzIGluIHRoZSByYW5nZXMKCTB4MDAwMCAtLSAweDAwZmYgYW5kIDB4ZjAwMCAtLSAweGYwZmYgYW5kIG5vdCwgZm9yIGV4YW1wbGUsIHdpdGgKCWNoYXJzIGluIHRoZSBVbmljb2RlIEdyZWVrIHJhbmdlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZmFpbHVyZSBtZXNzYWdlcyBmb3IgQ29DcmVhdGVJbnN0YW5jZS4KCgkqIHdpbmRvd3MvZGNlLmM6CglGaXhlZCB3aW5kb3cgaGFuZGxlIGNoZWNrIGluIEdldERDRXguCgoJKiB3aW5kb3dzL3dpbi5jOiBBIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zLgoKCSogd2luMzIvZXhjZXB0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRXhwYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiAiRGVidWdnZXIiIHNldHRpbmcuCglSZXBsYWNlIGZpeGVkLXNpemUgYnVmZmVycyB3aXRoIGR5bmFtaWMgb25lcy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgYmVoYXZpb3IgZm9yIFNIR2V0RmlsZUluZm8gd2hlbiB0aGUgU0hHRklfVVNFRklMRUFUVFJJQlVURVMKCWZsYWcgaXMgc2V0LiBDb3JyZWN0cyB0aGUgZ2l2ZW4gdHlwZSBhbmQgaWNvbi4KCjIwMDEtMTAtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBjb250cm9scy9zY3JvbGwuYzoKCVN0b3JlIGluIHRoZSBzZXJ2ZXIgYWxsIHRoZSB3aW5kb3cgaW5mb3JtYXRpb24gYWNjZXNzaWJsZSB3aXRoCglHZXQvU2V0V2luZG93TG9uZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGZpbGVzL2ZpbGUuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZywgZ3JhbW1hciBhbmQgYSBiaXQgb2YgY29tbWVudCBmb3JtYXR0aW5nIGZpeGVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsCgkgIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmgsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovY3Njb252LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsCgkgIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsIGRsbHMvcXVhcnR6L3BhcnNlci5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3NhbXBsZS5jLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5oLAoJICBkbGxzL3F1YXJ0ei92aWRlb2JsdC5jLCBkbGxzL3F1YXJ0ei92aWRlb2JsdC5oLAoJICBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovdmlkcmVuLmgsIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L3hmb3JtLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJSW1wbGVtZW50ZWQgQVZJIERlY29tcHJlc3Nvci4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIENvbG9yIFNwYWNlIENvbnZlcnRlci4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIHNlZWtpbmcuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEFkZGVkICItLWF1dG8iIG9wdGlvbi4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBwcmludGVyIHNldHRpbmdzLgoJUmVtb3ZlIHRoZSBmaXhlZC1zaXplIGJ1ZmZlcnMuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL21zdmNydC9jb25pby5oLCBpbmNsdWRlL21zdmNydC9jcnRkYmcuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9laC5oLCBpbmNsdWRlL21zdmNydC9mY250bC5oLAoJICBpbmNsdWRlL21zdmNydC9pby5oLCBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIF9fV0lORV9VU0VfTVNWQ1JULgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAdGd3YmQub3JnPgoJSW1wbGVtZW50ZWQgdGhlIHdjc3RvdWwgZnVuY3Rpb24uCgoyMDAxLTEwLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsCgkgIG1lbW9yeS9pbnN0ci5jLCB0b29scy93aW5lY2hlY2ssIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsCgkgIHdpbmRvd3Mvd2luLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDb3NtZXRpY3MuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHN0dWJzIGZvciBfMjUsIF8zMywgXzM1CgktIEFkZC9jb3JyZWN0IGNvZGUgZm9yOiBfMTUsIF8yOSwgXzMwLCBfMzEsIF8xNTEsIF8xNTIsIF8xNTMsIF8xNTQsCgkgIF8xNTguCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IEhVU0tFWSBkZXNpZ24uCgktIEltcGxlbWVudCBmdW5jdGlvbnM6IFNIUmVnT3BlblVTS2V5e0F8V30sIFNIUmVnQ2xvc2VVU0tleSwKCSAgU0hSZWdHZXRVU1ZhbHVle0F8V30sIFNIUmVnUXVlcnlJbmZvVVNLZXl7QXxXfQoKCSogZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IFVybENhbm9uaWNhbGl6ZVcsIFVybEVzY2FwZVcsIFVybFVuZXNjYXBlVy4KCS0gU3R1YiBVcmxHZXRMb2NhdGlvbntBfFd9LgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglBdm9pZCBjcmFzaGluZyBvbiBub24taW5pdGlhbGl6ZWQgZGVidWcgaW5mby4KCgkqIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBhIHR5cG8uCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnRlZCBHZXRDaGFyYWN0ZXJQbGFjZW1lbnRXLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJWEZyZWU4NiA0LjEgZ2FtbWEgcmFtcCBzdXBwb3J0LgoKCSogaW5jbHVkZS9kc291bmQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSB0eXBvLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmV0dXJuIFRSVUUgb24gc3VjY2VzcyBpbiBDT01NX0J1aWxkT2xkQ29tbURDQi4KCURDQjE2LkJhdWRSYXRlID4gNTc2MDAgbWVhbnMgMTE1MjAwLgoJT3BlbkNvbW0xNiBzaG91bGQgdXNlIG92ZXJsYXBwZWQgSS9PLgoKMjAwMS0xMC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUNoYW5nZWQgWDExIG1vdXNlIGRyaXZlciB0byB1c2UgU2VuZElucHV0LCBhbmQgcmVtb3ZlZCBXSU5FX01PVVNFRVZFTlQKCWhhY2suIE1vdmVkIG1vdXNlLmMgdG8gZGxscy94MTFkcnYuCglBZGRlZCBLZXltYXBOb3RpZnkgZXZlbnQgaGFuZGxlciwgYW5kIGZpeGVkIGhhbmRsaW5nIHdpdGggbXVsdGlwbGUKCWFsdC9zaGlmdC9jb250cm9sIGtleXMuCglSZW1vdmVkIGRpbnB1dCBmdW5jdGlvbnMgZnJvbSBVU0VSIGRyaXZlci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBBZGRlZCBhIGZldyBYQlVUVE9OIGRlZmluZXMuCgoJKiB3aW5kb3dzL21kaS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVVzZSBXSU5fUmVsZWFzZVB0ciBub3QgV0lOX1JlbGVhc2VXbmRQdHIgd2l0aCBXSU5fR2V0UHRyLgoKCSogZGxscy9kaW5wdXQvTWFrZWZpbGUuaW46CglNYWtlIGRpbnB1dCBhIHByb3Blcmx5IHNlcGFyYXRlZCBkbGwuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglVc2UgV0hfTU9VU0VfTEwgaG9vayBpbnN0ZWFkIG9mIHJlZGlyZWN0aW5nIHRoZSBtb3VzZSBldmVudCBoYW5kbGVyLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJRml4ZWQgR2V0RGV2aWNlU3RhdGUgYW5kIEdldERldmljZURhdGEgdG8gdXNlIG9ubHkgZXhwb3J0ZWQgQVBJcy4KCjIwMDEtMTAtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRvbnMgb2YgY29sb3IgY29udmVyc2lvbiBidWdzLgoJUmVvcmdhbml6ZSB0aGluZ3MgbW9yZSByYXRpb25hbGx5IGFuZCBzbyB0aGF0IG1vcmUgY29kZSBpcyBzaGFyZWQuCgoJKiB3aW5kb3dzL2lucHV0LmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUZpeGVkIG1vdXNlX2V2ZW50IGJ1ZyAtIGN1cnNvciB3YXMgbW92ZWQgYmVmb3JlIG5ldyBwb3NpdGlvbiB3YXMKCWNhbGN1bGF0ZWQuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCVJlbGF5IHRyYWNpbmcgd291bGQgY3Jhc2ggaWYgaXQgY2FtZSB1cG9uIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGFuCglpbnZhbGlkIHBvaW50ZXIgYXMgYSBwYXJhbWV0ZXIuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbGVhc2luZyBhIG1vdXNlIGJ1dHRvbiBub3cgY2xlYXJzIGFuIGVudHJ5IGluIHRhYmxlCglJbnB1dEtleVN0YXRlVGFibGUgaW5zdGVhZCBvZiBBc3luY0tleVN0YXRlVGFibGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglPbmx5IG1vZGlmeSB0aGUgYW5jZXN0b3IgaWYgeW91IGZpbmQgaXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oLCB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvaG9vay5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zeXNwYXJhbXMuYywKCSAgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywgZGxscy91c2VyL2xzdHIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvdy1sZXZlbCBtb3VzZSBhbmQga2V5Ym9hcmQgaG9va3MuCglNaXNjIGtleWJvYXJkIGhhbmRsaW5nIGNsZWFudXBzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvbWVzc2FnZS5oLAoJICBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaDoKCU1ha2Ugc3VyZSB0aGF0IEdldE1lc3NhZ2VQb3MgYW5kIEdldE1lc3NhZ2VUaW1lIHJldHVybiBzYW5lIHZhbHVlcwoJZm9yIGFsbCBtZXNzYWdlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBhIHN1cmZhY2UgYmVjb21lcyBwcmltYXJ5IHN1cmZhY2UsIG1hcmsgdGhlIHdob2xlIHN1cmZhY2UgZGFtYWdlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBzYW1lIGNvbG9yIGNvbnZlcnNpb24gYWxnb3JpdGhtIGFzIHRoZSBESUIgY29kZSAoYW5kIFdpbmRvd3MpLAoJaS5lLiBzaGlmdHMsIG5vdCBNdWxEaXZzLgoJRml4IHRoZSBncmF5c2NhbGUgZm9ybXVsYS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTZXBhcmF0ZSBjb2RlIHRvIG92ZXJsYXBwZWQgdGltZW91dHMgaW50byBGSUxFX0dldFRpbWVvdXQuCgoyMDAxLTEwLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBjb250cm9scy9pY29udGl0bGUuYywgZGxscy90dHlkcnYvd25kLmM6CglBZGRlZCBpbnRlcm5hbCBXaW5lIG1lc3NhZ2VzIHRvIHBlcmZvcm0gU2V0V2luZG93UG9zLCBTaG93V2luZG93IGFuZAoJU2V0UGFyZW50IGluIHRoZSBjb3JyZWN0IHRocmVhZC4KCVJlcGxhY2UgUVVFVUVfSXNFeGl0aW5nUXVldWUgYnkgVVNFUl9Jc0V4aXRpbmdUaHJlYWQuCglTdG9yZSB3aW5kb3cgcmVjdGFuZ2xlcyBpbiB0aGUgc2VydmVyLgoJUHJldmVudCBEZXN0cm95V2luZG93IG9uIHdpbmRvd3Mgbm90IGJlbG9uZ2luZyB0byB0aGUgY3VycmVudCB0aHJlYWQuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLAoJICB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWY6CglBZGRlZCByZXF1ZXN0cyB0byBzdG9yZSB3aW5kb3cgcmVjdGFuZ2xlcyBpbiB0aGUgc2VydmVyLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsCgkgIGluY2x1ZGUvbm9uY2xpZW50LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglNb3ZlZCBzY3JvbGxiYXIgdHJhY2tpbmcgY29kZSB0byBzY3JvbGwuYy4KCUF2b2lkIHVubmVjZXNzYXJ5IGNvb3JkaW5hdGVzIGNvbnZlcnNpb24gaW4gTkNfSGFuZGxlU3lzQ29tbWFuZC4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbDoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCU1pc2MgZG9jIHVwZGF0ZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlZ2lzdHJ5IGVudHJpZXMgZm9yIHN0ZG9sZTMyLnRsYi4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBlbGltaW5hdGUgZGlmZmVyZW50IHNlZ21lbnRhdGlvbiBmYXVsdHMuCgktIHdoZW4gYXR0ZW1wdGluZyB0byBvcGVuIGEgZGxsLCBhcHBlbmQgIi5kbGwiIHRvIGZpbmQgaXQgKHdhcwoJICBzdHJpcHBlZCBwcmV2aW91c2x5KS4KCS0gaWRlbnRpZnkgbmFtZWQgZXhwb3J0cyBzbyB0aGF0IHRoZSBvcmRpbmFsIG51bWJlciBpcyAiQCIgaW4gLnNwZWMKCSAgZmlsZS4KCS0gc2V0dXAgb3V0cHV0IGRsbCBuYW1lIHByaW9yIHRvIGNyZWF0aW5nIG9yZGluYWwgc3ltYm9scy4KCS0gZG9uJ3Qgb3ZlcmxheSB0aGUgbmFtZWQgZXhwb3J0cyB3aXRoIHRoZSBvcmRpbmFsIGV4cG9ydHMuCgktIGNvcnJlY3QgdGVzdCBmb3IgbGFzdCBzeW1ib2wuCgktIGZpeCBnZW5lcmF0ZWQgaW5zdGFsbCBzY3JpcHQgdG8gbWF0Y2ggY3VycmVudCBtYWtlIGZpbGVzLgoKMjAwMS0xMC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWRpLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggdGhlIGNhc2Ugd2hlcmUgY2hpbGQ9MCAobGFzdCBjaGlsZCkgaW4gTURJX0NoaWxkQWN0aXZhdGUuCgoJKiBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9zcHkuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jOgoJUmVuYW1lZCBXSU5fR2V0V25kUHRyIGludG8gV0lOX0dldFB0ciBhbmQgYWRkZWQgY29ycmVzcG9uZGluZwoJV0lOX1JlbGVhc2VQdHIuIFN0YXJ0ZWQgdXNpbmcgaXQgaW5zdGVhZCBvZiBXSU5fRmluZFduZFB0ciB3aGVyZSB3ZQoJZG9uJ3QgbmVlZCB0byBhY2Nlc3Mgd2luZG93cyBvZiBvdGhlciBwcm9jZXNzZXMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIEdVSURzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBfSU9YWFggbWFjcm9zIGNvbmZsaWN0IHdpdGggc3lzdGVtIGhlYWRlcnMgb24gU29sYXJpcy4gUHJlZml4Cgl0aGVtLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglLYWkgTW9yaWNoIDxtYWlsQGthaS1tb3JpY2guZGU+CglJbnRlcm5hbEV4dHJhY3RJY29uMTYgZm9yZ290IHRvIGNsb3NlIGZpbGUgaGFuZGxlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9hdG9tLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBJTlZBTElEX0FUT00gYW5kIE1BWElOVEFUT00gdG8gd2luYmFzZS5oLgoJUmVwbGFjZSBNSU5fU1RSX0FUT00gd2l0aCBNQVhJTlRBVE9NLgoKMjAwMS0xMC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kaWFsb2cuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsCgkgIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbjMyL2RldmljZS5jLCBjb250cm9scy9tZW51LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGxpYnJhcnkvcG9ydC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gaW5jbHVkaW5nICd3aW5lL3BvcnQuaCcsIGluY2x1ZGUgaXQgZmlyc3QuCglSZW1vdmUgcmVkdW5kYW50ICdjb25maWcuaCcgaW5jbHVkZXMuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93bWMvbWNsLmMsCgkgIHRvb2xzL3dtYy9tY3kueSwgdG9vbHMvd21jL3dtYy5jLCB3aW5kb3dzL3dpbnByb2MuYywKCSAgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL3BhdGguYywKCSAgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDE2LmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci90cmFjZS5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsCgkgIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gaW5jbHVkaW5nIGNvbmZpZy5oLCBpbmNsdWRlIGl0IGZpcnN0LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNuZHIuaCwKCSAgaW5jbHVkZS9ycGNwcm94eS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzb21lIFJQQyBkZWZpbml0aW9ucy4KCgkqIG9iamVjdHMvZm9udC5jLCB3aW5kb3dzL2RyaXZlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgbG9hZGVyL21vZHVsZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHByaW50IE5VTEwgc3RyaW5ncyAoY3Jhc2hlcyBvbiBTb2xhcmlzKS4KCVNtYWxsIGNvZGUgbWFpbnRhaW5hYmlsaXR5IHR3ZWFrIGluIFNoZWxsRXhlY3V0ZUV4QS4KCVR3byB0eXBvIGZpeGVzIGluIHdpbm1tLgoKCSogaW5jbHVkZS9hbXZpZGVvLmgsIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXN5bmNzcmMuYywKCSAgZGxscy9xdWFydHovYXN5bmNzcmMuaCwgZGxscy9xdWFydHovYXVkaW91dGwuYywKCSAgZGxscy9xdWFydHovYXVkaW91dGwuaCwgZGxscy9xdWFydHovYXVkcmVuLmMsCgkgIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovY29tcGxpc3QuYywKCSAgZGxscy9xdWFydHovY29tcGxpc3QuaCwgZGxscy9xdWFydHovZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uYywKCSAgZGxscy9xdWFydHovZW51bXVuay5jLCBkbGxzL3F1YXJ0ei9mZ2V2ZW50LmMsIGRsbHMvcXVhcnR6L2ZnaWRpc3AuYywKCSAgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmgsIGRsbHMvcXVhcnR6L2ZtYXAyLmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAyLmgsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWdjb25maWcuYywKCSAgZGxscy9xdWFydHovaWdydmVyLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLAoJICBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmgsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgZGxscy9xdWFydHovdmlkcmVuLmMsCgkgIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgQVZJIHNwbGl0dGVyLgoJSW1wbGVtZW50ZWQgQXN5bmNTb3VyY2UuCglNZXJnZWQgc29tZSBDIHNvdXJjZXMuCglGaXhlZCBzb21lIGJ1Z3MuCgoJKiBpbmNsdWRlL21tcmVnLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgTVBFRzFXQVZFRk9STUFUIGFuZCBNUEVHTEFZRVIzV0FWRUZPUk1BVC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglQYXNzIHNlY3VyaXR5IGF0dHJpYnV0ZXMgZm9yIERPU0ZTIGNyZWF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGJ1Z3Mgd2l0aCBwcm9wZ2V0IG1ldGhvZHMgd2l0aCBpbnB1dCBhcmd1bWVudHMuCglJbXByb3ZlZCB2YXJpYW50IGRlYnVnIGR1bXBzLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYnVncyBpbiBzYWZlIGFycmF5cy4KCS0gZW5sYXJnaW5nIGEgc2FmZSBhcnJheSBkaWRuJ3QgY2xlYXIgdGhlIG5ldyBlbnRyaWVzCgktIGVsZW1lbnQgYWNjZXNzIG9ubHkgdmFsaWRhdGVkIHRoZSBmaXJzdCBkaW1lbnNpb24KCS0gdGhlIHZhbGlkYXRpb24gYWx3YXlzIGZhaWxlZCB3aGVuIHRoZSBhcnJheSBjb250YWluZWQgMSBlbGVtZW50CgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGEgVUlOVDE2IHJlZGVmaW5pdGlvbiBwcm9ibGVtLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZWNvZ25pemUgdGhlIFNvbGFyaXMgZGxvcGVuIGVxdWl2YWxlbnQgb2YgImNhbm5vdCBvcGVuIi4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGhhbmRsaW5nIG9mIGVtcHR5IGxpc3RzIGluIGluc3RhbGwgYW5kIHVuaW5zdGFsbCB0YXJnZXRzLgoJSW5zdGFsbCB0aGUgZXhlY3V0YWJsZXMgLnNvIGxpYnJhcmllcyBpbiAkYmluZGlyIChub3QgJGxpYmRpciEpLgoKMjAwMS0xMC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy93aW4uYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcHJvcGVydHkuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJU3RvcmUgd2luZG93IHByb3BlcnRpZXMgaW4gdGhlIHNlcnZlci4gTW92ZWQgcHJvcGVydHkuYyB0byBkbGxzL3VzZXIuCgoJKiBtZW1vcnkvYXRvbS5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmg6CglBZGRlZCBhdG9tX3QgdHlwZSBmb3IgYXRvbXMgdG8gbWFrZSBzdXJlIHdlIHVzZSB0aGUgc2FtZSB0eXBlCglldmVyeXdoZXJlLiBIYW5kbGUgTUlOX1NUUl9BVE9NIG9mZnNldCBpbiB0aGUgc2VydmVyLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIE1BS0VJTlRBVE9NIHRvIHdpbmJhc2UuaCBhbmQgYWRkZWQgVW5pY29kZSB2ZXJzaW9uLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBiYWQgcG9pbnRlciBhcmd1bWVudHMgdG8gTG9hZEltYWdlQSgpIChhbmQgZnVuY3Rpb25zCgljYWxsaW5nTG9hZEltYWdlQSkgd2l0aCBhbiBleGNlcHRpb24gaGFuZGxlci4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckB0LW9ubGluZS5kZT4KCVdvcmthcm91bmQgWDExIEJhZFdpbmRvdyBlcnJvciBpZiBubyBwYXJlbnQgd2luZG93IGlzIGZvdW5kLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFdpbmUgdG9vbHMgc2VhcmNoIHBhdGguCglBZGQgL3Vzci9sb2NhbC9saWIgdG8gdGhlIGRlZmF1bHQgbnRkbGwgc2VhcmNoIHBhdGguCgoyMDAxLTEwLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9xdWV1ZS5jOgoJUmVtb3ZlZCB0aGUgY2xlYW51cF93aW5kb3dfcXVldWUgcmVxdWVzdC4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVJlbW92ZWQgbmV4dCBhbmQgY2hpbGQgZmllbGRzIGluIHRoZSB3aW5kb3cgc3RydWN0dXJlIGFuZCB1c2UKCVdJTl9MaXN0Q2hpbGRyZW4gaW5zdGVhZC4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgR1VJRHMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSAuc3BlYy5jIHJ1bGUuCgoyMDAxLTEwLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVN0b3JlIHdpbmRvdyBwYXJlbnQgYXMgYW4gSFdORCBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglEbyBvdmVybGFwcGVkIHJlYWRzIGlmIGFuZCBvbmx5IGlmIHRoZSBmaWxlIHdhcyBvcGVuZWQgd2l0aAoJRklMRV9GTEFHX09WRVJMQVBQRUQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbG9jYXRlIHRoZSBhcnJheSBhbmQgc3RyaW5ncyBpbiBvbmUgbHVtcCAoYnVnIGZvdW5kIGJ5IE1hbHRlCglTdGFyb3N0aWspLgoJU2FtZSB0aGluZyBmb3IgdGhlIGxwQ21kbGluZT0iIiBjYXNlLgoJVGhlcmUgaXMgbm8gTlVMTCBwb2ludGVyIGF0IHRoZSBlbmQgb2YgdGhlIGFyZ3YgbGlzdC4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJR2V0VGV4dENoYXJzZXRJbmZvIHNob3VsZCByZXR1cm4gdGhlIGNoYXJzZXQgdGhhdCB0aGUgZHJpdmVyIGlzCglhY3R1YWxseSB1c2luZywgcmF0aGVyIHRoYW4gdGhhdCBzcGVjaWZpZWQgaW4gdGhlIExPR0ZPTlQuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IFhGcmVlODYgV2luZG93cyBzZXJ2ZXIuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIHRoZSBSVF9YWFggbWFjcm9zIHRvIHdpbnVzZXIuaC4KCXdpbnVzZXIuaDogQWRkIHN1cHBvcnQgZm9yIE5PR0RJLgoJd2ludXNlci5oOiBNb2RpZnkgdG8gYWxsb3cgY29tcGlsYXRpb24gd2l0aG91dCB3aW5nZGkuaC4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUNocmlzIEdyZWVuIDxjaHJpc19lX2dyZWVuQHlhaG9vLmNvbT4KCUFkZGVkIG5hbWVzIG9mIHRoZSAibWlzc2luZyIgcGF0aHMgZm9yIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBLgoKMjAwMS0xMC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYzogRml4ZWQgbG9ja2luZyBvZiBjbGFzcyBsaXN0LgoJUHJpbnQgRVJSIHdoZW4gYWNjZXNzaW5nIGNsYXNzZXMgb2Ygb3RoZXIgcHJvY2Vzc2VzLgoKCSogaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJU3RvcmUgd2luZG93IGNsYXNzIGF0b20gaW4gdGhlIHNlcnZlci4KCUtlZXAgdW5saW5rZWQgd2luZG93cyBvbiBhIHNlcGFyYXRlIGxpc3QuCglJbXBsZW1lbnRlZCBpbnRlci1wcm9jZXNzIEZpbmRXaW5kb3coKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBub24gd2luZG93cyBtYWNyb3MuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJU2lsZW5jZSB0aGUgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgRklYTUUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4IE1hcFZpZXdPZkZpbGUgdG8gYWx3YXlzIHJldHVybiBhIDY0Sy1hbGlnbmVkIGFkZHJlc3MuCglBdm9pZCBjb252ZXJ0aW5nIHBvaW50ZXJzIHRvIFVJTlQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9rZXJuZWwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tYXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpbWczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zdGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dzMnNwaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBuZXcgaW5jbHVkZSBmaWxlIHdzMnNwaS5oIGZvciBhZGRpbmcgbmVlZGVkIHR5cGVzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglGaXhlZCBwYXJhbWV0ZXJzIG9mIFNldHVwT3BlbkluZkZpbGVBLgoKMjAwMS0xMC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMgY2FsbCBvbiBSRFdfVVBEQVRFTk9XIG91dCBvZiB0aGUKCVJEV19QYWludCByZWN1cnNpb24uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN1cHBvcnQgZm9yIE5PQ09MT1IuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBtaXNjL3ZlcnNpb24uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSBXSU5ERUJVR0lORk8gZnJvbSB3aW5iYXNlLmggdG8gd2luYmFzZTE2LmggYW5kIHJlbmFtZSB0bwoJV0lOREVCVUdJTkZPMTYuCglNb3ZlIHRoZSByZWxhdGVkIG1hY3JvcyB0byB2ZXJzaW9uLmMgYW5kIGlmZGVmIHRoZW0gb3V0IChrZXB0IGZvcgoJZG9jdW1lbnRhdGlvbiBvbmx5LCB0aGV5IGFyZSBub3QgdXNlZCkuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdJTkVMSUIgYXBwbGljYXRpb25zIChsaWtlIHJlYWt0aXZhdGUpIG1pZ2h0IGhhdmUgdmVyeSBsb25nIChDKyspCglzeW1ib2xzLiBVc2UgYSBsYXJnZXIgYnVmZmVyLgoKCSogZmlsZXMvZHJpdmUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUdldERpc2tGcmVlU3BhY2VFeCBzaG91bGQgYWNjZXB0IGFuIGlucHV0IGxpa2UgIkM6Ii4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBjb3B5JnBhc3RlIGJ1ZyAoR0VORVJJQ19XUklURSBpbnN0ZWFkIG9mIEdFTkVSSUNfUkVBRCkKCS0gd2hlbiBnZXR0aW5nIHRoZSB0eXBlIG9mIGEgaGFuZGxlLCBpdCBoYXMgdG8gYmUgZG9uZSBldmVuIGlmIG5vIGZkCgkgIGlzIGF0dGFjaGVkIHRvIGl0IChjb25zb2xlIGZvciBleGFtcGxlKQoKCSogZGxscy9xdWFydHovYXN5bmNzcmMuYywgZGxscy9xdWFydHovYXN5bmNzcmMuaCwKCSAgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywKCSAgZGxscy9xdWFydHovaWdjb25maWcuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLAoJICBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9zYW1wbGUuYywKCSAgZGxscy9xdWFydHovc2FtcGxlLmgsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uaCwKCSAgZGxscy9xdWFydHovd2F2cGFyc2UuYywgaW5jbHVkZS9hbXZpZGVvLmgsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU3RhcnRlZCBJbXBsZW1lbnRpbmcgVmlkZW8gUmVuZGVyZXIuCglTdGFydGVkIEltcGxlbWVudGluZyBXQVZFL0FVL0FJRkYgUGFyc2VyLgoJU3RhcnRlZCBJbXBsZW1lbnRpbmcgZmlsZSBzb3VyY2UuCglGaXhlZCBzb21lIGJ1Z3MuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCVJlbmFtZWQgVVNFUl9Jbml0IGludG8gVXNlckNsaWVudERsbEluaXRpYWxpemUuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCU1ha2Ugc2VyaWFsIGZkIGJsb2NraW5nIG1vZGUgZGVwZW5kIG9uIEZJTEVfRkxBR19PVkVSTEFQUEVELgoKCSogb2JqZWN0cy90ZXh0LmMsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTbWFsbCB0eXBvIGZpeGVzL3VwZGF0ZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9lcnJvci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIHRoZSBFUlJfWFhYIG1hY3JvcyBmcm9tIHdpbmJhc2UuaCB0byBlcnJvci5jLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93c2lweC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFNPQ0tBRERSX0lQWCBkZWNsYXJhdGlvbi4KCUNlbnRyYWxpemUgYWxsIHNvY2thZGRyX3h4eCBjb252ZXJzaW9ucyBpbiB3c19zb2NrYWRkcl93czJ1IGFuZAoJd3Nfc29ja2FkZHJfdTJ3cy4KCVJlbW92ZSB1Z2x5IGNhc3RzIGluIFRSQUNFcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEZWZlciBlZGl0IHN0eWxlIGNvcnJlY3Rpb24gdW50aWwgRURJVFNUQVRFIGlzIGZ1bGx5IGluaXRpYWxpemVkLgoKCSogZGxscy9tc3ZjcnQvdGhyZWFkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJX2JlZ2ludGhyZWFkOiBEb24ndCBzdG9yZSB0aGUgdHJhbXBvbGluZSBvbiB0aGUgc3RhY2suCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIENPTE9SUkVGIGZyb20gd2luZ2RpLmggdG8gd2luZGVmLmguCglBZGQgYSBwcm90b3R5cGUgZm9yIEdkaUZsdXNoLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXcmFwcGVycyBtdXN0IGFsd2F5cyBiZSBjb21waWxlZCBpbiBTVFJJQ1QgbW9kZS4KCgkqIGRlYnVnZ2VyL2RlYnVnLmw6CglQcm92aWRlIGhlbHAgZXZlbiB3aGVuIGluIHRoZSBOT1BST0NFU1Mgc3RhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggaW5maW5pdGUgbG9vcCBwcm9ibGVtIGluIHdpbmVjbGlwc3J2IHN0YXJ0dXAuCglMYXVuY2hTZXJ2ZXI6IERvbid0IGdpdmUgdXAgb24gdGhlIGZpcnN0IG1lc3NhZ2UuCglBZGRlZCBHZXRTZWxlY3Rpb25FdmVudDogTGltaXQgQ1BVIHVzZSBhbmQgaW50cm9kdWNlIHRpbWVvdXQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2YgdGhlIHRpbWVvdXQgaW4gV2FpdEZvcklucHV0SWRsZS4KCVVzZSBXQUlUX0ZBSUxFRCByYXRoZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBsaXRlcmFsLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJQ3JlYXRlVVJMTW9uaWtlciB0YWtlcyBhIExQQ1dTVFIsIG5vdCBhIExQV1NUUi4KCjIwMDEtMTAtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglQcm9jZXNzIHBlbmRpbmcgZXZlbnRzIGJlZm9yZSBzZW5kaW5nIFdNX1BBSU5UIG9uIFJEV19VUERBVEVOT1cuCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvc29jay5jOgoJQWRkZWQgZ2V0X2ZpbGVfaW5mbyBzdXBwb3J0IHRvIG5hbWVkIHBpcGVzIGFuZCBzb2NrZXRzIHRvIGF2b2lkCglicmVha2luZyB0aGUgZ2V0X2hhbmRsZV9mZCByZXF1ZXN0LgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgZGVmaW5lcyBmb3IgcmVzb3VyY2UgdHlwZXMgUlRfTUVTU0FHRVRBQkxFLCBSVF9WRVJTSU9OLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBzaWduIGV4dGVuc2lvbiBwcm9ibGVtIGluIG1hcF93cGFyYW1fV3RvQS4KCgkqIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaDoKCU1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUFkZGVkIElQZXJzaXN0UHJvcGVydHlCYWcyIGFuZCBJUHJvcGVydHlCYWcyIGRlZmluaXRpb25zLCBhZGRlZAoJbWlzc2luZyAgQklORElORk8gbWVtYmVyLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglUaGUgTFJfIGRlZmluZXMgZG8gbm90IHJlc2lkZSBpbiB3aW5kb3dzLmggYW55bW9yZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgQWRkUmVmJ3MuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBYS19Nb2RlX3N3aXRjaCB0byB0aGUgbGlzdCBvZiBpZ25vcmVkIGtleXN5bXMuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglEYW5pZWwgU2FibyA8ZGFuaWVsc2Fib0Bob3RtYWlsLmNvbT4KCUEgJ2ZpJyB3YXMgbmVlZGVkIGluIHRoZSBsYXN0IGlmIHN0YXRlbWVudC4KCjIwMDEtMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTEwMDQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglJZ25vcmUgUkxFIGRhdGEgdGhhdCBnb2VzIHBhc3QgdGhlIGxpbmUgZW5kIChmb3VuZCBieSBVd2UgQm9ubmVzKS4KCUdlbmVyYWwgY2xlYW51cCBvZiB0aGUgUkxFIHJvdXRpbmVzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCU5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgoJU2tpcCBwb3J0IG51bWJlciBiZWZvcmUgY2FsbGluZyBnZXRob3N0YnluYW1lLgoJRml4IG5vbi1hYnNvbHV0ZSB1cmxzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVRoZSBESVNQUEFSQU1TIHBhcmFtZXRlciBhcnJheSBpcyBhIHJldmVyc2Utb3JkZXIgYXJyYXkuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NvbnNvbGUuYywKCSAgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmMsCgkgIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRmV0Y2ggYSBoYW5kbGUgdHlwZSBpbiBGSUxFX0dldFVuaXhIYW5kbGUuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglEb24ndCBpZ25vcmUgZmlyc3QgY2hhbmNlIGRlYnVnIGV4Y2VwdGlvbnMgc2luY2UgaXQgbWF5IGJlIGEKCWJyZWFrcG9pbnQgdGhhdCB3ZSBzZXQgb3Vyc2VsdmVzLgoKCSogZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBIGNvdXBsZSBvZiBtaW5vciBwb2ludHMgYWJvdXQgY29udmVydGluZyBXaW5kb3dzIGZvbnRzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudCBjb2VyY2lvbiB0byBWVF9VTktOT1dOIGZyb20gVlRfRElTUEFUQ0guCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSVR5cGVJbmZvOjpJbnZva2Ugc2hvdWxkIGFsc28gc2VhcmNoIGluaGVyaXRlZCBpbnRlcmZhY2VzIGZvciB0aGUKCW1ldGhvZCB0byBpbnZva2UuCglJVHlwZUluZm86OkdldElEc09mTmFtZXMgbmVlZHMgdG8gZG8gY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmcKCWNvbXBhcmVzLgoKMjAwMS0xMC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCVNraXAgQml0Qmx0IERJQiBvcHRpbWl6YXRpb24gaWYgc291cmNlIGFuZCBkZXN0IERDcyBoYXZlIGRpZmZlcmVudAoJZGVwdGhzLgoKCSogd2luZG93cy93aW4uYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2RlZnduZC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJTWFwIGEgd2luZG93IGlmIGl0IGlzIHNob3duIGJ5IGEgZGlyZWN0IHN0eWxlIGNoYW5nZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEb24ndCBpZ25vcmUgRElTUEFUQ0hfTUVUSE9EIGluIElUeXBlSW5mbzo6SW52b2tlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggU0hBZGRUb1JlY2VudERvY3MgY29kZSB0byBwcm9wZXJseSBoYW5kbGUgbmF0aXZlIENvbWN0bDMyIGFuZAoJbWlzc2luZyBwb2xpY2llcyBsb2NhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9va3MgbGlrZSB0aGUgU0xUR19JbXBsSW5mbyBzdHJ1Y3QgaXNuJ3QgYSBmaXhlZCBzaXplLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ29ycmVjdGVkIElOVk9LRUtJTkQgZW51bWVyYXRpb24gdmFsdWVzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCBuZXdseSBhbGxvY2F0ZWQgVExTIGluZGV4ZXMgYXJlIGNsZWFyZWQuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglCZXR0ZXIgZmFrZSBpbXBsZW1lbnRhdGlvbiBvZiBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZS4KCjIwMDEtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmM6CglGcmVlIGNhY2hlIERDRXMgaWYgdGhlIERDIGdldHMgZGVsZXRlZC4KCgkqIHdpbmRvd3MvaW5wdXQuYzogRml4ZWQgdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBdm9pZCBpbmNsdWRpbmcgd2luYmFzZS5oIGluIGdlbmVyYXRlZCAuc3BlYy5jIGZpbGVzLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBbGxvdyB0d28gY29ubmVjdGlvbnMgYnkgbm90IHJlbGVhc2luZyB0aGUgd3JhcHBlZCBsaWJyYXJ5IHRvbyBlYXJseS4KCUFsc28gaGVhdmlseSBwcm90ZWN0ZWQgYW5kIGFkZGVkIGFkZGl0aW9uYWwgdHJhY2UgaW5mb3JtYXRpb24uCglNYWtlIHRoZSBMb2FkIGZ1bmN0aW9ucyBzdGF0aWMgdG8gcmVkdWNlIHZpc2libGl0eSAoZW5oYW5jZQoJc2ltcGxpY2l0eSkuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBpbmNsdWRlL2lucHV0Lmg6CglNZXJnZWQgbW91c2UgYnV0dG9ucyBzdGF0ZXMgaW50byB0aGUga2V5IHN0YXRlIGFycmF5LgoJRml4ZWQgY29uZnVzaW9uIGJldHdlZW4gcXVldWUgc3RhdGUgYW5kIGFzeW5jIHN0YXRlLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzL2RlZmluaXRpb25zLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglJbHlhIEtvbnN0YW50aW5vdiA8d2luZS1wYXRjaGVzQGZ1dHVyZS5zaGlueS5jby5pbD4KCUFkZGVkIGEgX05FVF9XTV9OQU1FKFVURjhfU1RSSU5HKSBwcm9wZXJ0eSB0byBldmVyeSB3aW5kb3cuCgoJKiBpbmNsdWRlL3N5c21ldHJpY3MuaCwgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIFNZU01FVFJJQ1NfU2V0LgoJSW1wbGVtZW50ZWQgU1BJX1NFVFNIT1dTT1VORFMgYWN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIE9hQnVpbGRWZXJzaW9uKCkgcmV0dXJuIHRoZSBoaWdoZXN0IHZlcnNpb24gdmFsdWUgcG9zc2libGUuCglTb21lIGNsZWFudXBzLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluLCB3aW4zMi9kZXZpY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCgkgIGZpbGVzL2RyaXZlLmMsIGZpbGVzL3Byb2ZpbGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgbWVtb3J5L2Vudmlyb24uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVlldCBhbm90aGVyIGRvY3VtZW50YXRpb24vbWVzc2FnZSB0ZXh0IHBhdGNoLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGRpdGlvbnMgdG8gaG93IHRvIHVzZSBEb2Nib29rIHVuZGVyIFJlZEhhdCAodG8gaGVscCBiZWdpbm5lcnMgbGlrZQoJbWUpLgoJQWRkZWQgY29udGVudCB0byB0aGUgYmluZGxscyBzZWN0aW9uIG9mIFdpbmVsaWIgKGJhc2VkIG9uCglleHBlcmllbmNlKS4KCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJVXBncmFkZSB3aW5lbWFrZXIgbWFuIHBhZ2UgZm9yIHRoZSB0d28gb3B0aW9ucyBhZGRlZCBhdCB2ZXJzaW9uCgkwLjUuOC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBXU0MqSW5zdGFsbFByb3ZpZGVyIHN0dWJzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sOgoJR3JhY2phbiBQb2xhayA8Z3JhY2phbkBhY2Noc2guY29tPgoJQWRkZWQgc29tZSBNRkMgZG9jdW1lbnRhdGlvbiAod2l0aCB0aGUgaGVscCBvZiBGcmFuY29pcyBHb3VnZXQpLgoKCSogZmlsZXMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgZm9yIE5VTEwgcGF0aCBhcmd1bWVudCBpbiBEZWxldGVGaWxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb25nIG5hbWVsZXNzIGFyZ3MgaW4gU0xURyBhcHBhcmVudGx5IGdldCBkZW5vdGVkIGJ5IDB4ZmZmZS4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50ZWQgZHVtbXkgc3R1YiBmb3IgU0hDaGFuZ2VOb3RpZnlVcGRhdGVFbnRyeUxpc3QgYW5kCglmdW5jdGlvbmFsIENJRExEYXRhX0NyZWF0ZUZyb21JREFycmF5LgoKCSogbGlicmFyeS9wb3J0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBpbXBsaWNpdCB0eXBlIGRlY2xhcmF0aW9ucy4gQWRkIHJlcXVpcmVkIGNhc3QuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIGhhY2sgZm9yIGtleWJvYXJkIGdyb3VwIHN3aXRjaGluZy4KCUFsd2F5cyBzYXZlL3Jlc3RvcmUgY29ycmVjdCBrZXlib2FyZCBncm91cCBpbmRleC4KCUV4cGxpY2l0bHkgaWdub3JlIHRoZSBrZXlib2FyZCBncm91cCBzd2l0Y2hpbmcgZXZlbnRzLgoKMjAwMS0xMC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYXVkcmVuLmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgaW5jbHVkZS9zdHJtaWYuaCwgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIENMU0lEX0F1ZGlvUmVuZGVyLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBEaXNwR2V0UGFyYW0uCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4L2RvY3VtZW50IFNITFdBUEkgb3JkaW5hbHMgMjE3IGFuZCAyMTguCgoJKiBtaXNjL3ZlcnNpb24uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlZWQgb3B0aW1pemF0aW9uLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dWIgZm9yIFdTQXBTZXRQb3N0Um91dGluZS4KCgkqIGZpbGVzL2ZpbGUuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWtlIE1vdmVGaWxlRXggZmFpbCB3aXRoIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSIChiZXR0ZXIgdGhhbgoJY3Jhc2hpbmcpIHdoZW4gdGhlIHNvdXJjZSBmaWxlIG9wZXJhbmQgaXMgTlVMTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTaG91bGQgaW5pdGlhbGl6ZSBDT00gYmVmb3JlIGNhbGxpbmcgaXQuCgoyMDAxLTA5LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzoKCUZpeGVkIHNpemUgY2hlY2sgaW4gSEVBUF9GaW5kRnJlZUJsb2NrIHRvIG1ha2Ugc3VyZSB3ZSBhbHNvIGZpbmQKCWJsb2NrcyB0aGF0IGhhdmUgdGhlIGV4YWN0IHNpemUgbmVlZGVkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCXdpbmVtYWtlciBkb2N1bWVudGF0aW9uIGZpeC4KCgkqIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvbnRkZGsuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiB0eXBlbGlicyBsb2FkZWQgd2l0aCBhIHRyYWlsaW5nIHJlc291cmNlIG51bWJlci4KCVRoZSBsb2dpYyBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBhbiBTTFRHIHR5cGVsaWIgaGFzIGEgZnVuY3Rpb24gcGFyYW0KCWFzIGEgJ3Nob3J0JyBvciAnbG9uZycgdHlwZSBoYXMgYmVlbiAncmVmaW5lZCcuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQcmV2ZW50IGNhbGxpbmcgbnVsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lZCBXX09LIHRvIE1TVkNSVF9XX09LLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwgZG9jdW1lbnRhdGlvbi9wcmludC5kc2wsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVocS5kc2w6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBmb3JtYXR0aW5nIGZvciBQREYgb3V0cHV0LgoKMjAwMS0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIGNvdXBsZSBvZiB0eXBvcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBJQ09NX1tDXVRISVNfTVVMVEkgbWFjcm9zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGltcGxlbWVudCBvYmplY3RzCgl0aGF0IGV4cG9zZSBtdWx0aXBsZSBpbnRlcmZhY2VzLiBBZGRlZCBwcm90b3R5cGVzIGZvciBDb0dldFBTQ2xzaWQgYW5kCglJVW5rbm93bl8qX1Byb3h5LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgbmFtZWQgcGlwZSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvb2xlMi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBwcm90b3R5cGUgZm9yIEdldEhHbG9iYWxGcm9tU3RyZWFtLgoKCSogZmlsZXMvZmlsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUEgZmFpbHVyZSB0byBvcGVuIGEgcGlwZSBzaG91bGQgcmV0dXJuIElOVkFMSURfSEFORExFX1ZBTFVFLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYW1lcnJvci5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLAoJICBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L2RldmVudW0uYywgZGxscy9xdWFydHovZGV2bW9uLmMsCgkgIGRsbHMvcXVhcnR6L2Rldm1vbi5oLCBkbGxzL3F1YXJ0ei9lbnVtdW5rLmMsIGRsbHMvcXVhcnR6L2ZnY2xzaWQuYywKCSAgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZncmFwaC5oLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAyLmMsCgkgIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLAoJICBkbGxzL3F1YXJ0ei9pZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lmbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2lmbWFwMy5jLCBkbGxzL3F1YXJ0ei9pZ2NvbmZpZy5jLCBkbGxzL3F1YXJ0ei9pbWVtLmMsCgkgIGRsbHMvcXVhcnR6L2ltZXNpbmsuYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovaXJjbG9jay5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tb25wcm9wLmMsCgkgIGRsbHMvcXVhcnR6L21vbnByb3AuaCwgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovbXR5cGUuaCwKCSAgZGxscy9xdWFydHovcHRpbXBsLmMsIGRsbHMvcXVhcnR6L3B0aW1wbC5oLCBkbGxzL3F1YXJ0ei9wdG1wb3MuYywKCSAgZGxscy9xdWFydHovcHRtc2Vlay5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuaCwgZGxscy9xdWFydHovc3lzY2xvY2suYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglNZXJnZWQgc29tZSBDIHNvdXJjZXMuCglGaXhlZCBzb21lIGJ1Z3MuCglTdGFydGVkIGltcGxlbWVudGluZyBzb21lIHBhc3MtdGhyb3VnaCBpbnRlcmZhY2VzLgoKMjAwMS0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci91c2VyLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJQSBjb3VwbGUgb2Ygb3B0aW1pemF0aW9ucyB0byBhdm9pZCBzb21lIHNlcnZlciBjYWxscyBpbiBXSU5fRmluZFduZFB0cgoJYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJQXZvaWQgbGlzdCBjb3JydXB0aW9uIHdoZW4gbGlua2luZyB3aW5kb3cgd2l0aCBIV05EX0JPVFRPTSAodGhhbmtzIHRvCglHZXJhcmQgUGF0ZWwpLgoKCSogb2JqZWN0cy9mb250LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJR2V0VGV4dEV4dGVudEV4UG9pbnRXOiBkdW1wIHRoZSBzdHJpbmcgYmVmb3JlIG1vZGlmeWluZyB0aGUgcG9pbnRlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG1ha2luZyBhIGJ1aWxkIGVudmlyb25tZW50IHdpdGhvdXQgZWRpdGluZyB0aGUgc291cmNlCglhbmQgc3BlYyBmaWxlcy4KCjIwMDEtMDktMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBtZXNzYWdlIGxvb3Agb24gdGhlIGNsaWVudCBzaWRlIG9mIHRoZSBzY3JvbGwgY29udHJvbC4KCS0gTW92ZSB0aGUgbW91c2UgY2FwdHVyZSB0byBhZnRlciB0aGUgU2V0Rm9jdXMgc28gdGhhdCBpdCBzdGF5cwoJICBjYXB0dXJlZC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCURhdmlkIEhhbW1lcnRvbiA8Y3Jhem5leUBjcmF6bmV5Lm5ldD4KCUZpeGVkIHR5cG9zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IGluaXRpYWwgdmVyc2lvbiBvZiBTSEFkZFRvUmVjZW50RG9jcy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgcHJvcGVyIHN1cHBvcnQgZm9yIHN0b3Jpbmcgd2luZG93IHBhcmVudHMgaW4gdGhlIHNlcnZlci4KCUFkZGVkIGEgZmV3IHJlcXVlc3RzIHRvIHF1ZXJ5IHRoZSB3aW5kb3cgaGllcmFyY2h5LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglJZ25vcmUgQ29uZmlndWVOb3RpZnkgc2l6ZSBjaGFuZ2VzIHdoaWxlIHRoZSB3aW5kb3cgaXMgaWNvbmljLgoKCSogdG9vbHMvd2luZWR1bXAvZGVidWcuYywgdG9vbHMvd2luZWR1bXAvbWFpbi5jLAoJICB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTb21lIGR1bWIgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglEZWNsYXJlIERldmljZUlvQ29udHJvbC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFNQSV9HRVRTSE9XU09VTkRTLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVZhcmlhbnRzIGFuZCBzYWZlIGFycmF5cyBpcyBub3cgYWJsZSB0byBjb3B5IEJTVFIgc3dpdGggZW1iZWRkZWQgbnVsbAoJY2hhcmFjdGVycy4gU2FmZSBhcnJheXMgbm93IGhhbmRsZSBCU1RScyBhbmQgdmFyaWFudHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZWdpc3RlciB0eXBlbGliIG1hcnNoYWxpbmcgZm9yIE9MRSBBdXRvbWF0aW9uLWNvbXBhdGlibGUgaW50ZXJmYWNlcy4KCjIwMDEtMDktMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gX2V4Y2VwdF9oYW5kbGVyMy4KCgkqIGRsbHMvZ2RpL2dkaS5zcGVjLCBvYmplY3RzL2dkaW9iai5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1YiBmb3IgR2RpSW5pdDIoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUdldCBtb3JlIGVudHJ5IHBvaW50cyBmcm9tIENvbWN0bDMyIGFuZCBzYXZlIHRoZSBhZGRyZXNzZXMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEZWZpbmUgdGhlIFNIUXVlcnlWYWx1ZUV4e0F8V30gZW50cnkgcG9pbnRzLgoKCSogZGxscy91c2VyL3dzcHJpbnRmLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGhlIGJlaGF2aW9yIGZvciB3c3ByaW50ZkEgaXMgZGlmZmVyZW50IHRoYXQgZm9yIHdzcHJpbnRmMTYgaW4gaG93IGl0CgloYW5kbGVzIE5VTExzIGJlaW5nIHBhc3NlZCBhcyBjaGFyYWN0ZXIgcGFyYW1ldGVycy4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBjb252ZXJzaW9ucyBvZiBhIGNvbW1hbmQgbGluZSB0by9mcm9tIGFuIGFyZ3YgYXJyYXkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgbW9zdCBvZiB0aGUgTVJVIHJlbGF0ZWQgZnVuY3Rpb25zLgoKCSogdG9vbHMvZXhhbWluZS1yZWxheToKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlICtzbm9vcCBzdHlsZSBvdXRwdXQuCgoJKiBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtYXBwaW5nIG9mIERFRkFVTFRfQ0hBUlNFVC4KCjIwMDEtMDktMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglCcmFkIENhbXBiZWxsIDxicmFkQHNlbWUuY29tLmF1PgoJRml4ZWQgbW91c2UgcG9zaXRpb24gcHJvY2Vzc2luZyBmb3IgdXNlIHdpdGggYSB0b3VjaHNjcmVlbi4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9wdGltcGwuYywgZGxscy9xdWFydHovcHRpbXBsLmgsCgkgIGRsbHMvcXVhcnR6L3B0bXBvcy5jLCBkbGxzL3F1YXJ0ei9wdG1zZWVrLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgSVNlZWtpbmdQYXNzVGhydS4KCgkqIHRvb2xzL3dpbmVjaGVjaywgREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLAoJICBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBmaWxlcy9kb3NfZnMuYywgbGlidGVzdC92b2xpbmZvLmMsCgkgIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVVwZGF0ZXMgYW5kIGVycm9yIG1lc3NhZ2UgaW1wcm92ZW1lbnRzLgoKCSogd2luZG93cy9tZGkuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglDaGFuZ2VkIE1ESUNyZWF0ZUNoaWxkIHRvIHN1cHBvcnQgQ1dfVVNFREVGQVVMVCBmb3IgMTYtYml0IE1ESQoJd2luZG93cy4KCgkqIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIFdJTl9TZXRXaW5kb3dMb25nIGNhdXNlZCBieSBwcmV2aW91cwoJY2hhbmdlLgoKCSogZGxscy9pbW0zMi9pbWVrbC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5ubHMuaCwKCSAgb2xlL29sZTJubHMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdHMgTlVNQkVSRk1UKiBhbmQgQ1VSUkVOQ1lGTVQqLgoJQWRkLCBmaXggYW5kIG1vdmUgcHJvdG90eXBlcyBmcm9tIHdpbmJhc2UuaCB0byB3aW5ubHMuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJRml4IHByb2JsZW0gY29tcGFyaW5nIHBpZGxzIGFuZCByZXR1cm4gY29ycmVjdCBjb2RlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgcnVzc2lhbiBsYXlvdXQgd2l0aCBwaGFudG9tIGtleS4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3NweS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgbWFjcm9zIHRoYXQgc2hvdWxkIG5vdCBiZSB0aGVyZSAoY2F1c2UgY29uZmxpY3RzIGluIFdpbmVMaWIpLgoJQWRkIGNvcnJlc3BvbmRpbmcgY29tbWVudHMgaW4gc3B5LmMuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiBfdG1haW4uCglBZGQgZGVmaW5pdGlvbnMgZm9yIF9fdGFyZ3YgYW5kIF90ZW52aXJvbi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jb250cm9scy5oLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3RodW5rLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5wcm9jLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2NhcmV0LmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvaWNvbnRpdGxlLmMsCgkgIGNvbnRyb2xzL21lbnUuYzoKCU1hZGUgYWxsIDE2PC0+MzIgSFdORCBjb252ZXJzaW9ucyB1c2UgZXhwbGljaXQgZnVuY3Rpb25zIGluc3RlYWQgb2YKCWltcGxpY2l0IHR5cGUgY2FzdHMuCglNb3ZlZCBhIGxvdCBvZiAxNi1iaXQgZnVuY3Rpb25zIHRvIHRoZSBuZXcgd25kMTYuYyBmaWxlLgoJQ2hhbmdlZCBESUFMT0dJTkZPIHN0cnVjdHVyZSBoYW5kbGluZyB0byBzdXBwb3J0IDMyLWJpdCBoYW5kbGVzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgSFdORCB0eXBlIG1pc21hdGNoZXMuCgoJKiBpbmNsdWRlL2ZvbnQuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBmb250IGNoYXJzZXQgdG8gb2J0YWluIGEgY29kZXBhZ2UgZm9yIEEtPlcgY29udmVyc2lvbiBpbiB0aGUKCXRleHQgZnVuY3Rpb25zLgoKCSogZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlbmFtZSAiU3lzdGVtVGltZSIgdG8gInQiICh0aGlzIGlzICpub3QqIFNZU1RFTVRJTUUgLSBhdm9pZAoJY29uZnVzaW9uKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CglGaXhlcyBmb3IgYXV0b2NvbmYgMi41MiBvciBoaWdoZXIuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1zdmNydC9sb2NhbGUuaC4KCUFkZCBtaXNzaW5nIGluY2x1ZGUgZGlyZWN0aXZlcyBpbiBtc3ZjcnQvd2NoYXIuaC4KCUZpeCBwcm90b3R5cGUgb2YgX3dzdGF0aTY0IGluIG1zdmNydC9zeXMvc3RhdC5oLgoKMjAwMS0wOS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RyaXZlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSByZWxhdGl2ZSBwYXRocyBvZiBbRHJpdmVdIHNlY3Rpb25zIHJlbGF0aXZlIHRvIFdJTkVQUkVGSVguCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTG90cyBvZiBycGNydDQuZGxsIHN0dWJzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLAoJICB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9zeW1ib2wuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZGVtYW5nbGluZyBpbnZvY2F0aW9uLgoJQmUgYSBiaXQgbW9yZSB2ZXJib3NlIG9uIGltcGxlbWVudGVkIGZlYXR1cmVzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJZ25vcmUgbmVnYXRpdmUgd2lkdGhzIGluIEhFQURFUl9TZXRJdGVtQm91bmRzLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ29zbWV0aWMgY2hhbmdlcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUltcHJvdmVkIG1ha2VfZGxscyBzY3JpcHQuIE1vdmVkIGRsbCBsaXN0IG91dCBvZgoJTWFrZS5ydWxlcy5pbi4gUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZCBydWxlcy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2VudW11bmsuYywgZGxscy9xdWFydHovZmdjbHNpZC5jLAoJICBkbGxzL3F1YXJ0ei9mZ2lkaXNwLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAyLmMsIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lmbWFwLmMsIGRsbHMvcXVhcnR6L2lmbWFwMy5jLAoJICBkbGxzL3F1YXJ0ei9pZ3J2ZXIuYywgZGxscy9xdWFydHovaW1jbnRsLmMsIGRsbHMvcXVhcnR6L2ltZW0uYywKCSAgZGxscy9xdWFydHovaW1lc2luay5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLAoJICBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2FtcGxlLmgsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvd2luZS9vYmpfa3Nwcm9wZXJ0eS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIElNZW1BbGxvY2F0b3IuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbiwKCSAgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRml4ZWQgcmVmZXJlbmNlcyB0byBvbGQgZG9jdW1lbnRhdGlvbiBsb2NhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX21ic3Vwci4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJQm9iYnkgQmluZ2hhbSA8dWhtbW1tQGFtZXJpdGVjaC5uZXQ+CglXaGVuIHlvdSBob2xkIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiBpbnNpZGUgdGhlIHNjcm9sbGJhciwgdGhlbiBtb3ZlCgl0aGUgbW91c2Ugb2ZmIHNvIGl0IHN0b3BzIHNjcm9sbGluZywgYW5kIHJldHVybiB0aGUgbW91c2UsIGl0IHNob3VsZAoJY29udGludWUgc2Nyb2xsaW5nLgoKMjAwMS0wOS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3N0aS8uY3ZzaWdub3JlLCBkbGxzL3N0aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGkvc3RpLnNwZWMsIGRsbHMvc3RpL3N0aV9tYWluLmMsIGRsbHMvdXJsLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsL01ha2VmaWxlLmluLCBkbGxzL3VybC91cmwuc3BlYywgZGxscy91cmwvdXJsX21haW4uYywKCSAgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywKCSAgZGxscy9tc2ltZzMyLy5jdnNpZ25vcmUsIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBtYXBpMzIsIG1zaW1nMzIsIHN0aSBhbmQgdXJsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUZpeGVkIEhXTkQgY29tcGFyZSBpbiBOQ19IYW5kbGVTZXRDdXJzb3IuCgoJKiBncmFwaGljcy9wYXRoLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBdm9pZCBjYWxsaW5nIFJlc3RvcmVEQyB3aXRoIGdkaSBsb2NrLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHJlbmRlci5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194cmVuZGVyLmgsCgkgIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgY29uZmlnIGNoZWNrIGFuZCB0aHJlYWQgc2FmZSB3cmFwcGVycyBmb3IgdGhlIFhSZW5kZXIgbGlicmFyeS4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBob2xkIHRoZSBHREkgbG9jayB3aGlsZSAxNi1iaXQgRXh0RGV2aWNlTW9kZSBpcyBjYWxsZWQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1pc3NpbmcgQ0FMTEJBQ0sgbW9kaWZpZXIuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCByZWN2IHByb3RvdHlwZSBmb3IgV1NBUmVjdkV4LgoKCSogZmlsZXMvZG9zX2ZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBlcnJvciByZXR1cm5lZCBieSBHZXRMb25nUGF0aE5hbWVBLgoKCSogZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy9jYXJldC5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglNYWtlIHN1cmUgdGhhdCBIV05EIGNvbXBhcmlzb25zIGFyZSBhbHdheXMgZG9uZSB3aXRoIGZ1bGwgMzItYml0CgloYW5kbGVzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBXU0FTdGFydHVwIHByb3RvdHlwZS4KCUZpeCBoYW5kbGluZyBvZiB0aW1lb3V0IHBhcmFtZXRlciBpbiBzZWxlY3QuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOgoJRml4ZWQgZHVtcGluZyBvZiBkbGwgZXhwb3J0IHRhYmxlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9oYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIHRoZSBGT1VSQ0MgY29kZXMgc2V0IGJ5IHRoZSBIQUwgZHJpdmVyLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVsZWFzZSBnZGkgbG9jayBiZWZvcmUgY2FsbGluZyBEZWxldGVEQy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUGxhY2UgdGhlIGxvZyBpbiAkVE1QIGlmIHNldCBhbmQgL3RtcCBvdGhlcndpc2UuCgoJKiBpbmNsdWRlL3dpbmNvbi5oLCB3aW4zMi9jb25zb2xlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhBTkRMRVJfUk9VVElORSBpcyBpbiBmYWN0IFBIQU5ETEVSX1JPVVRJTkUuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciBodG90YWw9dnRvdGFsPTAgKGZvciB4ZnJlZSA0IHZlc2EgZHJpdmVyKS4KCjIwMDEtMDktMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2ZvbnQuaCwKCSAgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMYXkgZG93biB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9yIGdkaSBmb250IHJlbmRlcmluZy4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0R3lscGhPdXRsaW5lIGFuZCBHZXRPdXRsaW5lVGV4dE1ldHJpY3MKCWZvciBnZGkgZm9udHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW4uYzoKCU1ha2Ugc3VyZSB0aGF0IGZ1bmN0aW9ucyByZXR1cm5pbmcgYW4gSFdORCBhbHdheXMgcmV0dXJuIGEgZnVsbCAzMi1iaXQKCWhhbmRsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglDcmVhdGVkIHN0dWJzIGZvciBhbGwgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbnMuCgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3VzZXIuYywgc2VydmVyL3VzZXIuaDoKCUNvbnZlcnQgdXNlciBoYW5kbGVzIHJlY2VpdmVkIGZyb20gY2xpZW50IHRvIGZ1bGwgaGFuZGxlcy4KCjIwMDEtMDktMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgbm90IHVzZWQgaW5jbHVkZS9wcm9jZXNzLmguCgoJKiBvYmplY3RzL2NsaXBwaW5nLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIG1zZG9zL2ludDEwLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9xdWFydHovYW1lcnJvci5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNsZWFudXAgY29kZSB0aGF0IGlzIHN0cmFuZ2Ugb3IgZGlmZmljdWx0IHRvIHBhcnNlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBzZXBhcmF0ZSBzb21lIHN5c3RlbSBzcGVjaWZpYyBjb2RlLgoKCSogaW5jbHVkZS9kc2hvdy5oLCBpbmNsdWRlL3N0cm1pZi5oLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovYW11bmRvYy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2lmbWFwLmMsIGRsbHMvcXVhcnR6L2lmbWFwMy5jLCBkbGxzL3F1YXJ0ei9pbWNudGwuYywKCSAgZGxscy9xdWFydHovaW1lbS5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmgsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJyb2tlbiBtYWNyb3MuCglBZGRlZCBzb21lIHN0dWJzLgoJSW1wbGVtZXRlZCB1bmRvY3VtZW50ZWQgQVBJcy4KCUltcGxlbWVudGVkIG1hbnkgbWV0aG9kcyBpbiBJTWVkaWFGaWx0ZXIsIElNZWRpYUNvbnRyb2wgYW5kCglJUmVmZXJlbmNlQ2xvY2suCglTdGFydGVkIEltcGxlbWVudGluZyBJTWVtb3J5QWxsb2NhdG9yLgoKCSogd2luMzIvbmV3Zm5zLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAY29kZXdlYXZlcnMuY29tPgoJUXVpZXQgRmx1c2hJbnN0cnVjdGlvbkNhY2hlIGZvciBub24tTlQgc3lzdGVtcyB3aGVyZSBpdCBkb2VzIG5vdGhpbmcKCXBlciBNU0ROLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglTeW5jaHJvbml6ZSBhY2Nlc3MgdG8gdGhlIHNfQ09NTG9ja0NvdW50LCBmaXJzdFJlZ2lzdGVyZWRDbGFzcywKCW9wZW5EbGxMaXN0IGluIGNvbXBvYmouCgoyMDAxLTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglJZ25vcmUgc2l6ZSBjaGFuZ2Ugb24gQ29uZmlndXJlTm90aWZ5IGlmIHdpbmRvdyByZWN0IGlzIGVtcHR5IGFuZCBuZXcKCXNpemUgaXMgMXgxLgoKCSogd2luZG93cy93aW4uYzoKCU1ha2Ugc3VyZSB0aGF0IHJldHVybmVkIHdpbmRvdyBiZWxvbmdzIHRvIGNvcnJlY3QgdGhyZWFkIHdoZW4gY2hlY2tpbmcKCXNpYmxpbmdzIG9mIHRyYW5zcGFyZW50IHdpbmRvd3MgaW4gV0lOX0ZpbmRXaW5Ub1JlcGFpbnQuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglUaGUgW3dpbmRvd3NdIHNlY3Rpb24gaXMgaW4gd2luLmluaSBub3QgaW4gfi8ud2luZS9jb25maWcuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL291dHB1dC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9zdGF0ZW1lbnRzLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX21vZHVsZV91c2VyLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGcmVlQlNEIG5vdyBzdXBwb3J0ZWQuCgktIE11Y2ggbW9yZSB3b3JrIG9uIHRoZSBuZXcgQyBwYXJzZXIuCgktIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5keSBSeXNpbiA8YXJ5c2luQHlhaG9vLmNvbT4KCUFkZGVkIFVrcmFpbmlhbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBJU3RyZWFtOkNsb25lLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJTW9yZSBncmFjZWZ1bCBleGl0IG9uIGZhaWx1cmUuCgoJKiBsaWJ0ZXN0L3ZhcnRlc3QuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBWXyogbWFjcm9zLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBvLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBzb21lIHVzZWZ1bCBUWVBFQVRUUiBlbGVtZW50cyBmcm9tIHYxIHR5cGVsaWJzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgZGVidWcgb3V0cHV0IGZvciBJbnRlcm5ldEdldENvb2tpZSwgYWRkZWQgc3R1YiBmb3IgSW50ZXJuZXRTZXRDb29raWUuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmgsIGluY2x1ZGUvZGRyYXdpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGR3RmxhZ3MgdG8gbG9ja191cGRhdGUgcHJpdmF0ZSBmdW5jdGlvbnMgc28gd2UgY2FuIHBhc3MKCVdSSVRFT05MWS9SRUFET05MWS4KCUFkZGVkIHRob3NlIGZsYWdzIHRvIHRoZSBpbnRlcm5hbCBMb2NrKCkgY2FsbHMuCglPbmx5IGNvcHkgdGhlIHN1cmZhY2UgZnJvbSBzY3JlZW4gdG8gc3VyZmFjZSBpZiBub3Qgd3JpdGVvbmx5LgoJUmVzdHJpY3QgYmxpdHRpbmcgYmV0d2VlbiBkaXNwbGF5IHdpbmRvdyBhbmQgc3VyZmFjZSB0byB0aGUKCWxvY2tlZC91bmxvY2tlZCByZWN0YW5nbGUgYW5kIHRoZSBjbGlwd2luZG93IHNlY3Rpb24uCglBZGRlZCBkZWZpbmVzIGZvciBEREhBTF9VTkxPQ0tEQVRBL0RESEFMX0xPQ0tEQVRBLCBhZGRlZCBjYWxscyB0byBIQUwKCWltcGxlbWVudGF0aW9uLgoKCSogd2luZG93cy93aW4uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUaGUgbWVzc2FnZSBoYW5kbGVyIG9mIFdNX1NUWUxFQ0hBTkdJTkcgaXMgc3VwcG9zZWQgdG8gYmUgYWJsZSB0bwoJbW9kaWZ5IHRoZSBwcm9wb3NlZCBzdHlsZSBpZiBpdCB3aXNoZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVc2UgdGhlIG1pbi9tYXggaW4gd2luZGVmLmggaW5zdGVhZC4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgaW5jbHVkZS93aW5ubHMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQHdpbmUubHN0LmRlPgoJRW5oYW5jZWQgR2V0Q2FsZW5kYXJJbmZvIHN0dWIsIGFkZGVkIGtub3duIENBTF8qIGRlZmluZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggYnVmZmVyaW5nIHByb2JsZW1zIGluIEhFTCBtb2RlLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNELgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXdyaXRlIG1zdmNydF97YXJndnRvcyx2YWxpc3R0b3N9IHRvIGJlIG1vcmUgZWZmaWNpZW50LgoJV2FybiBhYm91dCB0aGUgJyAnIGFuZCAnIicgaGFuZGxpbmcgb2YgdGhlIGV4ZWMgYW5kIHNwYXduIGZ1bmN0aW9ucy4KCUNvcHkgdGhlIGNvbW1hbmQgbGluZSBpbiBNU1ZDUlRfc3lzdGVtIHRvIG1ha2UgaXQgd3JpdGFibGUuCgoJKiB0c3gxMS9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMaW5rIHRzeDExIHdpdGggdGhlIFgvR0wgbGlicmFyaWVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSBYVmlkTW9kZSBzdXBwb3J0LgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRXJpYyBMYW1tZXJ0cyA8ZXJpY0BsYW1tZXJ0cy5vcmc+CglQcmVzZXJ2ZSB3aW5lIHJldHVybiBzdGF0dXMuCgoyMDAxLTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd21jL3dyaXRlLmM6CglKdXN0aW4gU2FudGEgQmFyYmFyYSA8anVzdGluc2JAaG90bWFpbC5jb20+CglGaXhlZCBwcm9ibGVtIHdpdGggY2hlY2sgZm9yIHNwZWNpYWwgY2hhcmFjdGVycy4KCgkqIGRsbHMvbnRkbGwvc3RyaW5nLmM6CglKb2hhbm4gTWVzc25lciA8am9oYW5uLm1lc3NuZXJAemlkLnVuaS1saW56LmFjLmF0PgoJRml4ZWQgYnVnIGluIF91bHRvYS4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5pdGlhbGl6ZSBhcmdjL2FyZ3Yvd2FyZ3YgYnkgY2FsbGluZyBudGRsbC5fX3dpbmVfZ2V0X3t3fW1haW5fYXJncy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNoYW5naW5nIERJQiBjb2xvciB0YWJsZSBub3cgdXBkYXRlcyB0aGUgRElCIHZpc2libGUgc3RhdGUuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovY29tcGxpc3QuYywKCSAgZGxscy9xdWFydHovY29tcGxpc3QuaCwgZGxscy9xdWFydHovZGV2ZW51bS5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmgsIGRsbHMvcXVhcnR6L2Rldm1vbi5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uaCwKCSAgZGxscy9xdWFydHovZW51bXVuay5jLCBkbGxzL3F1YXJ0ei9lbnVtdW5rLmgsIGRsbHMvcXVhcnR6L2ZnY2xzaWQuYywKCSAgZGxscy9xdWFydHovZmdpZGlzcC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcC5oLCBkbGxzL3F1YXJ0ei9mbWFwMi5jLAoJICBkbGxzL3F1YXJ0ei9mbWFwMi5oLCBkbGxzL3F1YXJ0ei9pYmFzYXVkLmMsIGRsbHMvcXVhcnR6L2liYXN2aWQuYywKCSAgZGxscy9xdWFydHovaWRldmVudW0uYywgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pZm1hcC5jLAoJICBkbGxzL3F1YXJ0ei9pZm1hcDMuYywgZGxscy9xdWFydHovaWdydmVyLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLAoJICBkbGxzL3F1YXJ0ei9pbWVtLmMsIGRsbHMvcXVhcnR6L2ltZXNpbmsuYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywKCSAgZGxscy9xdWFydHovaXJjbG9jay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLAoJICBkbGxzL3F1YXJ0ei9tb25wcm9wLmMsIGRsbHMvcXVhcnR6L21vbnByb3AuaCwKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuaCwKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgZGxscy9xdWFydHovc3lzY2xvY2suaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgc29tZSBpbnRlcmZhY2VzIGluIEZpbHRlckdyYXBoLgoKCSogbGlicmFyeS9wb3J0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUVtdWxhdGUgdGhlIGJlaGF2aW91ciBvZiBMaW51eCBtbWFwKCkgb24gU29sYXJpcy4gQmFzZWQgb24gaWRlYXMgYW5kCglzYW1wbGUgY29kZSBkdWUgdG8gRXJpayBCb2Fzc29uIDxlYm9hc3NvbkBzaWduYWFsLm5sPiBhbmQgSm9obiBXZWhsZQoJPGpvaG5AZmVpdGguY29tPi4KCgkqIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBjb250cm9scy9jb21iby5jLAoJICBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvc3B5LmgsCgkgIHdpbmRvd3MvbWVzc2FnZS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUVuaGFuY2UgU1BZX0dldE1zZ05hbWUgdG8gdHJhbnNsYXRlIGNvbW1vbiBjb250cm9sIG1lc3NhZ2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTSEdldFNwZWNpYWxGb2xkZXJQYXRoVyB0byBzcGVjIGZpbGUuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CgktIEZpbmlzaCBQYXRoUGFyc2VJY29uTG9jYXRpb257QXxXfS4KCS0gSW1wbGVtZW50IFBhdGhJc1VOQ1NlcnZlcntBfFd8U2hhcmVBfFNoYXJlV30uCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHN0dWJzIGZvciBTSFJlZ0VudW1VU0tleXtBfFd9IGFuZCByZXR1cm4gZW5kLW9mLWxpc3QgZXJyb3IKCWFzIHJlc3VsdC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBhIGRlZmF1bHQgRGV2TW9kZSBpZiBubyBEZXZNb2RlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbgoJcmVnaXN0cnkuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBtYnNuYmNudCwgYWRkZWQgc3R1YnMgZm9yIF9HZXR0bmFtZXMgYW5kIF9fbGNfY29sbGF0ZV9jcC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEhhbmRsZSBDQ1NfTk9ESVZJREVSIGJvdGggd2hlbiBwcmVzZW50IGFuZCB3aGVuIG5vdC4KCS0gSGFuZGxlIHNvbWUgY2FzZXMgb2YgQ0NTX1RPUCwgQ0NTX0JPVFRPTSwgYW5kIENDU19OT1BBUkVOVEFMSUdOLgoJLSBIYW5kbGUgdmFsdWVzIHJldHVybmVkIGZyb20gdGhlIFJCTl9DSElMRFNJWkUgbm90aWZpY2F0aW9uLgoJLSBJbXBsZW1lbnQgUkJCU19DSElMREVER0UuCgktIEZpeCBzb21lIGxvZ2ljIGVycm9ycyBpbiBSRUJBUl9BZGp1c3RCYW5kcywgYW5kIHByb2JsZW1zIHdpdGggQ0NTX1ZFUlQuCgoJKiBjb25maWd1cmUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC8uY3ZzaWdub3JlLAoJICB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvUkVBRE1FLAoJICB0b29scy93aW5lZHVtcC9jdmluY2x1ZGUuaCwgdG9vbHMvd2luZWR1bXAvZGVidWcuYywKCSAgdG9vbHMvd2luZWR1bXAvZnVuY3Rpb25fZ3JlcC5wbCwgdG9vbHMvd2luZWR1bXAvbWFpbi5jLAoJICB0b29scy93aW5lZHVtcC9taXNjLmMsIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9wZS5oLAoJICB0b29scy93aW5lZHVtcC9zZWFyY2guYywgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmgsIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgUEUgZHVtcCBjYXBhYmlsaXRpZXMgdG8gc3BlY21ha2VyIGFuZCByZW5hbWVkIHNwZWNtYWtlciBpbnRvCgl3aW5lZHVtcC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4IHBvc2l0aW9uaW5nIG9mIHRleHQgaW4gYnV0dG9ucy4KCS0gRml4IG5CdXR0b25IZWlnaHQgc28gdGhhdCBpdCBpcyBub3QgemVybyBpbiBzb21lIGNhc2VzCgktIFN1cHBvcnQgVEJTVFlMRV9UUkFOU1BBUkVOVC4KCS0gRml4IGhhbmRsaW5nIGluIFdNX0VSQVNFQktHTkQgc28gdGhhdCB0aGUgZGVmYXVsdCBlcmFzZSBvY2N1cnMKCSAgYmV0d2VlbiBub3RpZmllcy4KCS0gRml4IFdNX05DQ1JFQVRFIHByb2Nlc3NpbmcgdG8gaXNzdWUgcHJvcGVyIFdNX1NUWUxFQ0hBTkdJTkcgKHZpYQoJICBTZXRXaW5kb3dMb25nKSBhbmQgZG9jdW1lbnQgdGhlIGlzc3Vlcy4KCgkqIG9iamVjdHMvZm9udC5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglGaXhlZCBiZWhhdmlvciBvZiBHZXRUZXh0RXh0ZW50RXhQb2ludFcuICBJdCBtdXN0IGFsd2F5cyByZXR1cm4gdGhlCglleHRlbnRzIG9mIHRoZSBlbnRpcmUgc3RyaW5nIGluIHNpemUuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgYm9tYiB3aGVuIEdESV9PYmpQdHIgcmV0dXJucyBudWxsIG9iamVjdC4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgR0RJX0VSUk9SIGRlZmluaXRpb24gdG8gd2luZ2RpLmguCglBZGQgSEdESV9FUlJPUi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCByZWFkZXIgZm9yIHYxIChTTFRHKSB0eXBlbGlicy4KCUZpeCBhIGZldyBwcm9ibGVtcyB3aXRoIHYyIChNU0ZUKSB0eXBlbGlicy4KCUxvYWRUeXBlTGliRXggc2hvdWxkIGRvIGEgU2VhcmNoUGF0aCB0byBsb2NhdGUgdHlwZWxpYi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJT3BlblByaW50ZXIgc2hvdWxkIGZhaWwgaWYgcFByaW50ZXJOYW1lIGlzICIiLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBGVU5DRkxBR1MgYW5kIGNoYW5nZSBUWVBFRkxBR1NfKiB0byBhbiBlbnVtLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb252ZXJ0IHRoZSBzb2NrZXQgdHlwZSAobmVjZXNzYXJ5IG9uIFNvbGFyaXMpLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGluY2x1ZGUvcnBjZGNlLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBVdWlkSGFzaCgpLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IC5zcGVjIGZpbGUgcGFyYW1ldGVycyBmb3IgbXN2Y3J0Ll9mdWxscGF0aCBhbmQgbnRkbGwuX3NwbGl0cGF0aC4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBEaXJlY3RTaG93IGZpbHRlciBjYXRlZ29yaWVzLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBHVUlEcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIGNhbGxzIHRvIFN0clJldFRvQnVme0F8V30gd2l0aCBkdXBsaWNhdGUgY29kZSB0byBlbGltaW5hdGUKCXByb2JsZW1zIGJldHdlZW4gbmF0aXZlIGFuZCBidWlsdC1pbiBETExzLgoKMjAwMS0wOC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJTWFrZSB3aW5kb3cgaGFuZGxlcyAzMi1iaXQgYmVmb3JlIGNhbGxpbmcgd2luZG93IHByb2NlZHVyZS4KCURvbid0IGNsZWFyIHdpbmRvdyBwYXJlbnQgZmllbGQgd2hlbiB1bmxpbmtpbmcgaXQuCgoyMDAxLTA4LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5jLCBzZXJ2ZXIvdXNlci5oLAoJICBzZXJ2ZXIvd2luZG93LmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy93aW4uYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJQWRkZWQgZ2xvYmFsIG1hbmFnZW1lbnQgb2YgdXNlciBoYW5kbGVzIGluIHRoZSBzZXJ2ZXIuCglWZXJ5IHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHNoYXJlZCB3aW5kb3cgaGFuZGxlcy4KCgkqIEFOTk9VTkNFOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglVc2UgdGhlIG5ldyBkZXZlbG9wbWVudCBwYWdlIFVSTCBpbiB0aGUgYW5ub3VuY2VtZW50LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZWltcGxlbWVudCBQUk9GSUxFX0dldFNlY3Rpb25OYW1lcyB0byBtYXRjaCB0aGUgTlQgJiBNU0ROIGJlaGF2aW9yLgoJVGhlIDMyQSB2ZXJzaW9uIGlzIG5vdyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIChpbnN0ZWFkIG9mIHRoZQoJMTZiaXQgdmVyc2lvbikuCgoJKiBsb2FkZXIvdGFzay5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbmx5IHVzZSB3aW5zb2NrMi5oIGluIFdpbmUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIFdNX01PVVNFSE9WRVIgYW5kIFdNX01PVVNFTEVBVkUgdG8gZm9ybWF0dGluZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJT3V0cHV0IGNvcnJlY3QgYXNzZW1ibHkgZnVuY3Rpb24gaGVhZGVycyBmb3IgYWxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsCgkgIGRsbHMvcXVhcnR6L2RldmVudW0uaCwgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwgZGxscy9xdWFydHovZm1hcDIuYywKCSAgZGxscy9xdWFydHovZm1hcDIuaCwgZGxscy9xdWFydHovaWJhc2F1ZC5jLCBkbGxzL3F1YXJ0ei9pYmFzdmlkLmMsCgkgIGRsbHMvcXVhcnR6L2lkZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWZtYXAuYywKCSAgZGxscy9xdWFydHovaWZtYXAzLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuaCwgZGxscy9xdWFydHovaXZpZHdpbi5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywgZGxscy9xdWFydHovcmVnc3ZyLmgsCgkgIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKMjAwMS0wOC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglDaGVjayBmb3IgdmFsaWQgb2JqZWN0IGluIEdESV9HZXRPYmpQdHIgZXZlbiBmb3IgTUFHSUNfRE9OVENBUkUuCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJR3JhYlBvaW50ZXIgdXNlcyBub3cgU2V0V2luZG93TG9uZyB0byBjaGFuZ2Ugd2luZG93IHByb2NlZHVyZSBpbnN0ZWFkCglvZiBhY2Nlc3NpbmcgZGlyZWN0bHkgV05EIHN0cnVjdHVyZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBHZXROYW1lZFBpcGVJbmZvLgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgaW50ZXJmYWNlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIElDT01fTUVUSE9EMTItMjYsIElDT01fVk1FVEhPRDEyLTI2LCBJQ09NX0NBTEwxMi0yNi4KCjIwMDEtMDgtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTA4MjQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDgtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgV1NBU1RBUlRVUDE2IGEgMSBieXRlIGFsaWdubWVudCB2ZXJzaW9uIG9mIFdTQVNUQVJUVVAgZm9yIHdpbjE2LgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBDTFNJRHMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX2ltYWdlLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZGVkIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIIHN1cHBvcnQgdG8gTG9hZExpYnJhcnlFeC4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBZGRlZCBXSU5fTGlzdFBhcmVudHMgZnVuY3Rpb24gYW5kIHJlbmFtZWQgV0lOX0J1aWxkV2luQXJyYXkgaW50bwoJV0lOX0xpc3RDaGlsZHJlbi4gTWFkZSBvd25lciBmaWVsZCBpbiBXTkQgc3RydWN0dXJlIGFuIEhXTkQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglSZW1vdmVkIGluY2x1c2lvbiBvZiB3aW4uaC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGQgc3R1YnMgZm9yIHNldmVyYWwgbmFtZWQgcGlwZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oLCBzZXJ2ZXIvc29jay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWUgdGhlIHJlZ3VsYXIgV1NfRkRfWFhYIG1hY3JvcyB0byBGRF9YWFguCglSZW5hbWUgdGhlIFdpbmUgc3BlY2lmaWMgV1NfRkRfWFhYIG1hY3JvcyB0byBGRF9XSU5FX1hYWC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWRlIGluZGVwZW5kZW50IGZyb20gd2luc29jay4KCUluY2x1ZGUgdGhlIG5lZWRlZCBoZWFkZXJzIGRpcmVjdGx5IGluIGludGVybmV0LmguCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTWlub3IgZml4ZXMgaW52b2x2aW5nIGhhbmRsaW5nIE5VTEwgcG9pbnRlcnMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLAoJICB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2ZvY3VzLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglJbXBsZW1lbnRlZCBHZXRBbmNlc3RvciBhbmQgcmVtb3ZlZCBXSU5fR2V0VG9wUGFyZW50LgoJUmVtb3ZlZCBhIGZldyBtb3JlIGFjY2Vzc2VzIHRvIHRoZSBXTkQgc3RydWN0dXJlLgoKMjAwMS0wOC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJRG9uJ3QgaG9sZCB0aGUgR0RJIGxvY2sgZHVyaW5nIGFjY2Vzc2VzIHRvIHRoZSBtZXRhZmlsZSBkYXRhLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBXYWl0TmFtZWRQaXBlIGFuZCBEaXNjb25uZWN0TmFtZWRQaXBlLgoJQWRkIGEgc3RhdGUgZm9yIGVhY2ggcGlwZSBoYW5kbGUgaW4gdGhlIHNlcnZlci4KCUNyZWF0ZSBhIHNvY2tldCBvbiB3aGVuIHRoZSBwaXBlIGlzIG9wZW5lZCwgbm90IGJlZm9yZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgc2VydmVyL3NvY2suYzoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CgktIEZpeCBmb3Igbm9uYmxvY2tpbmcgc29ja2V0cyB1c2luZyBXU0FFdmVudFNlbGVjdCgpIChwYXRjaCBmcm9tIE92ZQoJICBLYWF2ZW4pLgoJLSBDaGFuZ2VkIFdTQUVudW1OZXR3b3JrRXZlbnRzKCkgc28gaXQgb25seSByZXR1cm5zIGV2ZW50cyB0aGF0IHRoZQoJICBhcHBsaWNhdGlvbiBpcyBsb29raW5nIGZvci4KCS0gQ2hhbmdlZCBzb2NrX3BvbGxfZXZlbnQoKSB0byBpbnRlcnByZXQgYSBQT0xMSU4gZXZlbnQgd2l0aCB6ZXJvCgkgIGJ5dGVzIHdhaXRpbmcgdG8gYmUgcmVhZCBhcyBhIFBPTExIVVAuCgoyMDAxLTA4LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FtZXJyb3IuYywKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZXJyb3JzLmgsCgkgIGluY2x1ZGUvdmZ3bXNncy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHR3byBtaXNzaW5nIGhlYWRlcnMuCglJbXBsZW1lbnRlZCBBTUdldEVycm9yVGV4dC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwgdG9vbHMvd2luYXBpL2NfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZWRpdG9yLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfc3RhdGVtZW50cy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9tb2R1bGVfdXNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQ29udGludWVkIG9uIHRoZSBuZXcgQyBwYXJzZXIuCgktIE1vcmUgcmVvcmdhbml6YXRpb25zIGFuZCBmaXhlcy4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLAoJICBkbGxzL3F1YXJ0ei9jb21wbGlzdC5oLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWVtLmMsIGRsbHMvcXVhcnR6L2ltZXZlbnQuYywKCSAgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsIGRsbHMvcXVhcnR6L2lyY2xvY2suYywKCSAgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIENMU0lEX0ZpbHRlckdyYXBoLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYW4gaW5jb3JyZWN0IChoYXJtbGVzcykgbWVtb3J5IGFsbG9jYXRpb24uCgoJKiBpbmNsdWRlL2NvbnRyb2wuaCwgb2xlL3V1aWQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBtaXNzaW5nIElJRHMuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZWQgUFJPRklMRV8gZnVuY3Rpb25zIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIHN0dWIgZm9yIENhbmNlbElvLgoKCSogTWFrZS5ydWxlcy5pbjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCBtYW4gYW5kIGRvYy1odG1sIHJ1bGVzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUV1Z2VuZSBNYXlldnNraSA8bWF5ZXZza2lAZWxkb3Mub3JnPgoJRml4ZWQgRFRfUlRMUkVBRElORyBmbGFnIGludGVycHJldGF0aW9uLgoKMjAwMS0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmg6CglSZW1vdmVkIFdJTl9HZXREZXNrdG9wKCkuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL21zYy5jLAoJICBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIG1zZG9zL2ludDJmLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvY3VtZW50YXRpb24gdXBkYXRlcyAobWFpbmx5IHRocnUgdnMuIHRocm91Z2gpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJUmVjdCByZXR1cm5lZCBieSBMSVNUVklFV19HZXRJdGVtUmVjdCBzaG91bGQgYmUgdG90YWwgc2l6ZSBpbiByZXBvcnQKCW1vZGUuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglEZWZhdWx0IGJpdG1hcCBpcyBub3Qgc3ViamVjdCB0byByZWZlcmVuY2UgY291bnRpbmcuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRoZSBkZWNWYWwgZmllbGQgdG8gVkFSSUFOVC4KCUZpeCB0aGUgVkFSSUFOVCBDIGxheW91dCwgaS5lLiB0aGUgdW5pb24vc3RydWN0IG5hbWVzL25lc3RpbmcuCglFbmNhcHN1bGF0ZSBhbGwgYWNjZXNzZXMgdG8gVkFSSUFOVCB0eXBlcyB3aXRoIHRoZSBWX1ZUIGFuZCBWX1VOSU9OCgltYWNyb3MuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJVW5jb25kaXRpb25hbGx5IHNldCBPX05PTkJMT0NLIHdoZW4gb3BlbmluZy4KCjIwMDEtMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglSZWZ1c2UgdG8gc2VsZWN0IGEgYml0bWFwIHRoYXQgaXMgYWxyZWFkeSBzZWxlY3RlZCBpbiBhbm90aGVyIERDLgoKCSogb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBkZWxheWVkIGRlc3RydWN0aW9uIG9mIEdESSBvYmplY3RzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUZpeGVkIEdldENsYXNzTG9uZyB0byByZXR1cm4gZnVsbCAzMiBiaXRzIGZvciBhbGwgaXRlbXMuCglSZW1vdmVkIEdDV18qIGRlZmluaXRpb25zIHRoYXQgZG9uJ3QgZXhpc3QgaW4gV2luMzIuCgoJKiBvYmplY3RzL2RpYi5jOgoJQ3JlYXRlIGEgY29sb3IgYml0bWFwIGluIENyZWF0ZURJQml0bWFwIGV2ZW4gd2l0aCBhIGJsYWNrJndoaXRlIERDLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KCVJlbW92ZWQgc3RydWN0IFVEQVRFIGZvcndhcmQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU3RvcmUgdGhlIGNvbW0gZXJyb3IgdmFsdWUgaW4gdGhlIHdpbmVzZXJ2ZXIsIG5vdCBhIGdsb2JhbC4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZWFkIGRhdGEgaW1tZWRpYXRlbHkgaW4gb3ZlcmxhcHBlZCBSZWFkRmlsZSBpZiBwb3NzaWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCURvIG5vdCBrZWVwIHRoZSBoYW5kbGUgb2YgYSBkZWxldGVkIGl0ZW0gYXMgdGhlIHNlbGVjdGVkSXRlbS4uCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIEdldERDKDApIGluc3RlYWQgb2YgQ3JlYXRlQ29tcGF0aWJsZURDKDApLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdlIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGZvbnRuYW1lIGFuZCB0aGUgSEZPTlQgaGFuZGxlIGluCglJRm9udF9DbG9uZSwgb3RoZXJ3aXNlIHdlIGdldCBtZW1vcnkgY29ycnVwdGlvbiBhbmQgYmFkIEdESSBoYW5kbGVzLgoKMjAwMS0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBwcm9wZXIgc3VwcG9ydCBmb3IgMzItYml0IFdNX05FWFRNRU5VLgoKCSogZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3VzZXIuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjOgoJUmVtb3ZlZCBhIG51bWJlciBvZiBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIHdpbmRvdyBzdHJ1Y3R1cmUuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tY2l3bmQuYywKCSAgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGltcGxlbWVudGluZyB0aGUgTUNJV25kKiBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHBhc3MgdGhlIGhpZ2ggbGV2ZWwgd0ZsYWdzIGZyb20gVmFyaWFudENoYW5nZVR5cGUqIGRvd24gdG8gbG93CglsZXZlbCBWYXJpYW50IGNvbnZlcnNpb24gZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oOgoJRml4ZWQgaW50ZXJuYWwgaW5saW5lIGZ1bmN0aW9uIHRoYXQgd2FzIGRlY2xhcmVkIGV4dGVybi4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglFeHBsaWNpdGx5IGNoZWNrIGZvciBDU19QQVJFTlREQyBpbiBXTV9FUkFTRUJLR05EIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIG1lbXNldCBieSBoYW5kIG1hZGUgZXF1aXZhbGVudCB0byB3b3JrIGFyb3VuZCBzb21lIGJ1Z2d5CgltZW1zZXQgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQmVjYXVzZSBvZiBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBjb21jdGwzMiBhbmQgbXN2ZnczMiwgcmVwbGFjZQoJaW4gY29tY3RsMzIgZGVsYXkgbG9hZGluZyBvZiBtc3ZmdzMyIGJ5IG1hbnVhbCBsb2FkaW5nLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVRlc3QgZm9yIGludmFsaWQgbGFyZ2UgaGFuZGxlcyBpbiBHRElfR2V0T2JqUHRyIGFuZCBHRElfRnJlZU9iamVjdC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBGaWxsUmVjdCBjYWxscyBpbiBGSUxFRExHOTVfTE9PS0lOX0RyYXdJdGVtLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGhvbGQgdGhlIEdESSBsb2NrIHdoZW4gdGhlIEFCT1JURE9DIHByb2NlZHVyZSBpcyBjYWxsZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIG9sZWF1dDMyLlZhckJzdHJDYXQuCgoyMDAxLTA4LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJTWFkZSB0aGUgSW50ZXJsb2NrZWQqUG9pbnRlciBmdW5jdGlvbnMgc3RhdGljIGlubGluZSBzaW5jZSB0aGV5IGFyZW4ndAoJZXhwb3J0ZWQgYnkgdGhlIFdpbmRvd3MgQVBJLgoKCSogb2JqZWN0cy9kaWIuYzoKCVVzZSB0aGUgcGFzc2VkIGhkYyBpbiBDcmVhdGVESUJpdG1hcCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KCgkqIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9zeXNjb2xvci5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmg6CglDcmVhdGUgR0RJIHN0b2NrIG9iamVjdHMgYXMgbm9ybWFsIG9iamVjdHMgaW5zdGVhZCBvZiB1c2luZyBtYWdpYwoJaGFuZGxlIHZhbHVlcy4KCjIwMDEtMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZ2Rpb2JqLmM6CglTcGVjaWZ5IHNpemVzIGZvciBzdG9jayBmb250cyBhZ2FpbjsgcmVtb3ZlZCB0aGUgRml4U3RvY2tGb250U2l6ZQoJaGFjay4gSWdub3JlIG1hcHBpbmcgbW9kZXMgd2hlbiBzZWxlY3Rpbmcgc3RvY2sgZm9udHMgaW50byBhIERDLgoJUmVtb3ZlZCBhIGZldyBkaXJlY3QgYWNjZXNzZXMgdG8gR0RJIHN0cnVjdHVyZXMgZnJvbSB4MTFkcnYuCgoJKiBvYmplY3RzL2RjLmM6CglSZWxlYXNlIEdESSBsb2NrIGJlZm9yZSBjYWxsaW5nIERlbGV0ZURDIGZyb20gUmVzdG9yZURDLgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS9zaGVsbDE2LmgsCgkgIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOgoJTW92ZWQgdW5kb2NzaGVsbC5oIHRvIGRsbHMvc2hlbGwzMi4gUmVtb3ZlZCBzaGVsbDE2LmguCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmg6CglNb3ZlZCB1c2VyIGxvY2sgdG8gdXNlci5jLiBBZGRlZCBVU0VSX0NoZWNrTm90TG9jayBmdW5jdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L3ZpcnR1YWwuYywKCSAgb2JqZWN0cy9nZGlvYmouYywgc2NoZWR1bGVyL3B0aHJlYWQuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3RpbWVyLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9ydGwuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBmaWxlcy9wcm9maWxlLmM6CglBZGRlZCBuYW1lcyB0byBzdGFuZGFyZCBjcml0aWNhbCBzZWN0aW9ucyAoc3VnZ2VzdGVkIGJ5IEFuZHJlYXMKCU1vaHIpLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglQYXJ0aWFsbHkgaW1wbGVtZW50IG9sZWF1dDMyLlZhckJzdHJDbXAuCgoyMDAxLTA4LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jOgoJTWFrZSBzdXJlIHdlIGRvbid0IGhvbGQgdGhlIEdESSBsb2NrIHdoZW4gbG9hZGluZyBkcml2ZXJzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9zeXNsZXZlbC5jOgoJSW1wbGVtZW50ZWQgX0NoZWNrTm90U3lzTGV2ZWwuCgoJKiBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGRsbHMvZ2RpL2RyaXZlci5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmM6CglGaXhlZCB3aW4xNmRydiBpbml0aWFsaXNhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGhHZXRFeHRlbnNpb25BVyBoYXMgdGhyZWUgYXJndW1lbnRzLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgY2FsbCBEb3N2bSBmdW5jdGlvbnMgd2hlbiBEb3N2bSBpc24ndCBpbml0aWFsaXplZC4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaW1lbS5jLCBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5oLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicyBmb3IgcXVhcnR6IGRsbC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTm9ybWFsaXplIHRoZSBkaXNwbGF5IG5hbWUgdXNlZCB0byBidWlsZCB0aGUgY2FjaGVkIG1ldHJpYyBmaWxlbmFtZSBzbwoJdGhhdCAnOjAnLCAnOjAuMCcsIGFuZCAndW5peDowLjAnIGFsbCByZXNvbHZlIHRvIHRoZSBzYW1lIGZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgVmFyUGFyc2VOdW1Gcm9tU3RyLCBWYXJOdW1Gcm9tUGFyc2VOdW0uCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWZtMmMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ09QWVJJR0hUUywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRWxpbWluYXRlIGdseXBoIGJvdW5kaW5nIGJveGVzICYgb3RoZXIgdW51c2VkIGZvbnQgbWV0cmljcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbW9kdWxlLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0aGUgcGFyc2luZyBvZiBpZDEuaWQyIHdoaWNoIGNvdWxkIGJlIGVpdGhlciBhY2Nlc3MgdG8gZmllbGQgaWQyCglvZiBzdHJ1Y3QgaWQxLCBvciB0aGUgaWRlbnRpZmllciBpZDIgaW4gZGxsIGlkMS4KCUVuaGFuY2VkIHNvbWUgZXJyb3IgcmVwb3J0aW5nIGFzIHdlbGwgYXMgJ2luZm8gbG9jYWwnIGRpc3BsYXkgbGF5b3V0LgoJTWlub3IgY29zbWV0aWMgY2hhbmdlcy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiB2YWx1ZSBpbiBjYXNlIG9mIGJvZ3VzICdvcGVuIGFsbCcgbWNpCglzdHJpbmcgY29tbWFuZC4gTWlub3IgMzIvMTYgb3B0aW1pemF0aW9ucyBhbmQgY29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGF0ZVRpbWVTdHJpbmdUb1RtIGFuZCBEYXRlVG9UbSBtdXN0IHVzZSBkd0ZsYWdzIGluc3RlYWQgb2YgbGNpZC4KCgkqIG9sZS91dWlkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW5jbHVkZSBHVUlEcyBpbiBzdHJtaWYuaCBhbmQgdXVpZHMuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYXVkZXZjb2QuaCwgaW5jbHVkZS9kc2hvdy5oLAoJICBpbmNsdWRlL2V2Y29kZS5oLCBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBkc2hvdyBoZWFkZXJzLgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBJR3JhcGhCdWlsZGVyLCBJRmlsdGVyR3JhcGgyLCBJTWVkaWFTZWVraW5nIGludGVyZmFjZXMuCgoJKiB3aW4zMi9leGNlcHQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW9kaWZpZWQgdGhlIGRlYnVnZ2VyIGxhdW5jaGluZyBjb2RlIHNvIHRoYXQgb25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlCglkZWJ1Z2dlciBpcyBjcmVhdGVkIHBlciBwcm9jZXNzLgoKMjAwMS0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIG1hcHBpbmdzIGZvciBhIGZldyBtZXNzYWdlcy4KCUFkZGVkIHVuaWNvZGUgbWVzc2FnZXMgYml0IHNldCB0byBzaG9ydGN1dCBtZXNzYWdlIG1hcHBpbmcgd2hlbgoJcG9zc2libGUuCgoJKiB3aW5kb3dzL3NweS5jOiBGaXhlZCBzb21lIG1lc3NhZ2UgbmFtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnRlZCBSQl9NQVhJTUlaRUJBTkQgZm9yIHRoZSAiaWRlYWw9VFJVRSIgY2FzZS4KCS0gSW1wbGVtZW50ZWQgTk1fQ1VTVE9NRFJBVyBub3RpZmljYXRpb25zIGZvciB0aGUgSVRFTVBSRVBBSU5UIGFuZAoJICBJVEVNUE9TVFBBSU5UIG9ubHkuIChVc2VkIGJ5IElFNCAtIGdvIGZpZ3VyZS4pCgktIEludmFsaWRhdGUgd2luZG93IHJlY3RhbmdsZXMgYWZ0ZXIgY2VydGFpbiBSQl8gbWVzc2FnZXMgbGlrZSB0aGUKCSAgbmF0aXZlLiBGaXhlZCBzb21lIHBhaW50aW5nIHByb2JsZW1zLgoJLSBBZGRlZCBVcGRhdGVXaW5kb3cgY2FsbCBpbiBfTW92ZUNoaWxkV2luZG93cyB0byBmaXggb3RoZXIgcGFpbnRpbmcKCSAgcHJvYmxlbXMuCgktIFNldCB0aGUgQ2FwdGlvbiBGb250IGFzIHRoZSBkZWZhdWx0IGZvbnQgZm9yIGFsbCBiYW5kcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IFRCU1RZTEVfRkxBVCBhcyAidHJhbnNwYXJlbnQiIHRvb2xiYXIgYW5kIGJ1dHRvbnMuIChTa2lwCgkgIEZpbGxSZWN0IGFuZCBCRl9NSURETEUgb24gX0ZMQVQgdG9vbGJhcnMuKQoJLSBJc3N1ZSBGSVhNRXMgZm9yIHVuc3VwcG9ydGVkIHN0eWxlcy4KCS0gSWYgdGhlICJoaWRkZW4iIHN0YXRlIGhhcyBjaGFuZ2VkIHRoZW4gcmVjYWxjIHRoZSBidXR0b25zLgoJLSBTdXBwb3J0IFRCU1RZTEVfQ1VTVE9NRVJBU0UgKHVzZWQgYnkgSUU0KSBhbnMgaXNzdWUgc29tZSBvZiB0aGUKCSAgbmVjZXNzYXJ5IE5NX0NVU1RPTURSQVcgbm90aWZpZXMuCgktIFBhc3MgdGhlIFdNX0VSQVNFQktHTkQgdG8gcGFyZW50IGlmIHRoZSB0b29sYmFyIGlzICJ0cmFuc3BhcmVudCIuCgktIEludmFsaWRhdGUgdGhlIGFyZWEgMSBiaWdnZXIgdGhhbiB0aGUgYnV0dG9uIHJlY3Qgb24gYSBXTV9NT1VTRUxFQVZFCgkgIHNvIHRoYXQgdGhlIGVkZ2UgaXMgImVyYXNlZCIgYnkgdGhlIHBhcmVudC4KCS0gU3VwcG9ydCB0aGUgUEdOX0NBTENTSVpFIG5vdGlmeSBzaW5jZSBhIHRvb2xiYXIgY2FuIGJlIGEgY2hpbGQgb2YgdGhlCgkgIFBhZ2VyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIHN1cHBvcnQgdG8gcmVzcG9uZCB0byB0aGUgUEdOX0NBTENTSVpFIHZlcnNpb24gb2YgdGhlIFdNX05PVElGWQoJbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIE1ha2UgYWxsIFdNX05PVElGWSBtZXNzYWdlcyBnbyB0byB0aGUgcGFyZW50LgoJLSBBbGxvdyBXTV9XSU5ET1dQT1NDSEFOR0lORyB3aGVuIHRoZSBjb250cm9sIGlzIHNpemUgMCB0byBzZXQgaW5pdGlhbAoJICBzaXplLgoJLSBDb21iaW5lIG11bHRpcGxlIFNldFdpbmRvd1BvcyBjYWxscyBpbiBzYW1lIHByb2Nlc3NpbmcgbGluZSBhbmQgbWFrZQoJICB0aGUgZmxhZ3MgbGlrZSBuYXRpdmUuCgktIFJlZG8gV01fTkNDQUxDU0laRSB0byBtYXRjaCBuYXRpdmUuCgktIFNpbmNlIFBhZ2VyIGlzIGEgInRyYW5zcGFyZW50IiBjb250cm9sIChleGNlcHQgZm9yIGl0cyBvd24gYnV0dG9ucyksCgkgIHRoZSBXTV9FUkFTRUJLR05EIG5lZWRzIHRvIGJlIHBhc3NlZCB0byB0aGUgcGFyZW50LiBBbHNvIGRvIHRoZSB3aW5kb3cKCSAgb2Zmc2V0IGxpa2UgdGhlIG5hdGl2ZSBjb250cm9sIGRvZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBpbmNsdWRlL29sZWF1dG8uaDoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CgktIGltcGxlbWVudGVkIFN5c3RlbVRpbWV0b1ZhcmlhbnRUaW1lL1ZhcmlhbnRUaW1ldG9TeXN0ZW1UaW1lCgkgICAgVGhlcmUgd2FzIGFub3RoZXIgaW1wbGVtZW50YXRpb24gb2YgU3lzdGVtVGltZXRvVmFyaWFudFRpbWUKCSAgICBzdWJtaXR0ZWQgdGhhdCBkaWRuJ3Qgd29yayBmb3IgZGF0ZXMgcHJpb3IgdG8gMTkwMC4KCS0gaW1wbGVtZW50ZWQgVmFyRGF0ZUZyb21VRGF0ZS9WYXJVZGF0ZUZyb21EYXRlCgktIGltcGxlbWVudGVkIFZhcmlhbnRUaW1lVG9Eb3NEYXRlVGltZQoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXhlZCBfY29udHJvbDg3IHJldHVybiB2YWx1ZSwgdXNlIG9mIHdyb25nIGFzc2VtYmxlciBjb21tYW5kIHRvIGdldAoJZnAgY29udHJvbCB3b3JkIGFuZCBhIGJ1ZyB0aGF0IGludmVydGVkIF9JQ19BRkZJTkUgZmxhZy4KCU1hZGUgX2NvbnRyb2xmcCB3b3JrIGFzIHNwZWNpZmllZCBpbiBNU0ROLgoKMjAwMS0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6CglKb3NoIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCVdyb25nIGhhbmRsZSB3YXMgYmVpbmcgY2xvc2VkLgoKCSogZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlbW92ZSB1bnVzZWQgY2hhcmFjdGVyIHdpZHRoIGFycmF5LgoKCSogZGxscy93aW5lcHMvZm9udC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBFbnVtRm9udHMgYW5kIFNlbGVjdE9iamVjdCB1c2UgY29tbW9uIGZvbnQgc2NhbGluZy4KCjIwMDEtMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvbm9uY2xpZW50LmgsCgkgIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsCgkgIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywKCSAgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmM6CglSZW1vdmVkIGEgbnVtYmVyIG9mIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgV05EIHN0cnVjdHVyZSwgcmVwbGFjaW5nCgl0aGVtIGJ5IEFQSSBjYWxscy4KCgkqIGdyYXBoaWNzL2Rpc3BkaWIuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9udGRsbC9zeW5jLmM6CglK9nJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRml4ZWQgYSBmZXcgc2lnbmVkL3Vuc2lnbmVkIGFuZCAidW5zaWduZWQgPCAwIGFsd2F5cyB0cnVlIiB3YXJuaW5ncy4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdGV4dC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlZCBBTlNJIGVuY29kaW5nIHN0dWZmLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglGaXggRXh0cmFjdEZyb21FWEVETEwgZm9yIG5JbmRleCAhPSAwLgoJUHJlZmVyIDhiaXQgaWNvbnMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAoJICBkZWJ1Z2dlci9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlcyBmb3IgU29sYXJpcyBYODYuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIG1zdmNydC5fbWJzcGJyay4KCjIwMDEtMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kZGUvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL2RkZW1sLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgY29ycmVjdGx5IHRoZSBIU1ogYXMgbG9jYWwgYXRvbXMgYW5kIGFkZGVkIHRoZSBuZWVkZWQKCSAgY29udmVyc2lvbnMgdG8gZ2xvYmFsIGF0b21zCgktIGVuaGFuY2VkIGludGVybmFsIGhhbmRsZSA8PT4gcG9pbnRlciBjb252ZXJzaW9ucywgYXMgd2VsbCBhcwoJICB2YWxpZGl0eSBvZiBzdWNoIG9iamVjdHMgKGxpZmUgdGltZSwgZGVzdHJ1Y3Rpb24sIG11dHVhbCBhY2Nlc3MuLi4pCgktIGZpeGVkIGEgZmV3IEFOU0kvVW5pY29kZSBpc3N1ZXMsIHN0b3JlcyBtb3N0IG9mIHRoZSBkYXRhIGFzIFVuaWNvZGUKCS0gc3RhcnRlZCBoYXZpbmcgYm90aCBBbnNpL1VuaWNvZGUgRERFIHdpbmRvdyBwcm9jcyBmb3IgbWVzc2FnZSBBL1cKCSAgdHJhbnNmb3JtYXRpb24KCS0gZml4ZWQgYSBmZXcgc2VnbWVudGVkIHBvaW50ZXIgaXNzdWVzIChtYWlubHkgaW4gRGRlSW5pdGlhbGl6ZSAmCgkgIERkZUdldERhdGEpCgktIGFkZGVkIG1vc3Qgb2YgdGhlIENCRl8gZmxhZ3MgaGFuZGxpbmcKCS0gaW1wbGVtZW50ZWQgdGhlIGNvbnZlcnNhdGlvbiBhbm5vdW5jZW1lbnQgKFhUWVBfQ09OTkVDVF9DT05GSVJNKSBvbgoJICBzZXJ2ZXIgc2lkZQoJLSBlbmhhbmNlZCBEZGVRdWVyeUNvbmZpZyBhbmQgaW1wbGVtZW50ZWQgRGRlUmVjb25uZWN0CgktIGltcGxlbWVudGVkIGNvbnZlcnNhdGlvbiB0ZXJtaW5hdGlvbiAoaW5jbHVkaW5nIFhUWVBfVU5SRUdJU1RFUikKCS0gc2V2ZXJhbCBvdGhlcnMgY29kZSBjbGVhbiB1cAoJLSBhZGRlZCB0cmFuc2FjdGlvbiBzdXBwb3J0IG9uIHNlcnZlciBzaWRlIHRvbwoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBtdWx0aWJ5dGUgc3RyaW5nIHJldmVyc2UuCgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmUgcHJldmlvdXNseSBkaXNhYmxlZCBjb2RlLgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlciwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZWRpdG9yLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfc3RhdGVtZW50cy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEJlZ3VuIGltcGxlbWVudGF0aW9uIG9mIGEgQyBzdGF0ZW1lbnRzIHBhcnNlci4KCS0gTW9yZSByZW9yZ2FuaXphdGlvbnMgYW5kIGZpeGVzLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJRG9uJ3QgY3JlYXRlIHRoZSBXSU5FUFJFRklYIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9wdGhyZWFkLmM6CglBZGRlZCBJbnRlcmxvY2tlZCpQb2ludGVyIGZ1bmN0aW9ucy4KCUZpeGVkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlIHByb3RvdHlwZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy92ZXJzaW9uLmMsIG9sZS9vbGUybmxzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVjaGVjazogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU21hbGwgd2luZWNoZWNrIHVwZGF0ZSAoREdBIGNoZWNrIGlzIGJvZ3VzKS4KCgkqIGluY2x1ZGUvd2lubnQuaDogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgbW9yZSBTVEFUVVNfIGNvZGVzLgoKMjAwMS0wOC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbm9uY2xpZW50LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmZGxnLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvdXNlci5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJUmVwbGFjZSBTZW5kTWVzc2FnZTE2IGJ5IFNlbmRNZXNzYWdlVyB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvdXNlci90aHVuay5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGaXhlZCBEcmF3U3RhdGUxNiBjYWxsYmFjayBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJRml4ZWQgbG9vcCB0ZXJtaW5hdGlvbiBjaGVjayBpbiBQYXRoSXNFeGVXLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6CglGaXhlZCBpbl9kYXRhL291dF9kYXRhIG1peHVwIGluIEVzY2FwZTE2ICh0aGFua3MgdG8gTGFkaXNsYXYgU2xhZGVjZWspLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmV3cml0ZSBhbmQgc2VwYXJhdGUgQUZNIHBhcnNpbmcgY29kZSAobm8gbW9yZSBbYWZtZmlsZXNdKS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgbGliR0xVIGNoZWNrIHRvIGxvb2sgZm9yIGdsdUxvb2tBdCBpbnN0ZWFkIG9mIGdsQmVnaW4uCgoyMDAxLTA4LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdHJpZXMgdG8gcHJpbnQgdGhlIHN5bWJvbCBuYW1lIG9mIGEgY3JzdCB3aGVuIGl0IHRpbWVzIG91dC4KCgkqIHNlcnZlci90aHJlYWQuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9uJ3QgY3Jhc2ggaWYgc2VuZF90aHJlYWRfd2FrZXVwKCkgZmFpbHMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgcmVnaXN0cnkgZW50cmllcyByZWxhdGVkIHRvIENPTSBpbnRlcmZhY2UgbWFyc2hhbGluZy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbXNnMTYuYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVJld3JvdGUgbW9zdCBvZiBTZW5kTWVzc2FnZS9QZWVrTWVzc2FnZS4KCUltcGxlbWVudGVkIGludGVyLXByb2Nlc3MgbWVzc2FnaW5nLgoJTW92ZWQgbW9zdCBtZXNzYWdlIHJvdXRpbmVzIHRvIGRsbHMvdXNlciwgYW5kIHNwbGl0IG9mZiAxNi1iaXQKCXJvdXRpbmVzIHRvIGEgc2VwYXJhdGUgZmlsZS4KCjIwMDEtMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVMb2FkUGljdHVyZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgSlBFRywgQml0bWFwIGFuZCBJY29ucyBmcm9tIHBlcnNpc3RhbnQKCXN0cmVhbXMuCglJbXBsZW1lbnRlZCBKUEVHIHN1cHBvcnQgdXNpbmcgbGlianBlZywgYWRkZWQgbmVjZXNzYXJ5IGNvbmZpZ3VyZS5pbgoJb3B0aW9ucy4KCUFkZGVkIElDb25uZWN0aW9uUG9pbnQgc3R5bGUgbm90aWZpY2F0aW9ucyB0byB0aGUgSVBpY3R1cmUgaWZhY2UuCglJbXBsZW1lbnRlZCBzZXZlcmFsIG9mIHRoZSBzdHVicyBhbHJlYWR5IHRoZXJlLCBhZGRlZCBzb21lIG1vcmUuCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJWEdyYWJQb2ludGVyIGlzIG5vdyBjYWxsZWQgZnJvbSB0aGUgY29ycmVjdCB0aHJlYWQgY29udGV4dCBhbmQgaXQgaXMKCW1hZGUgc3VyZSB0aGF0IHdlIGhhdmUga2V5Ym9hcmQgZm9jdXMgd2hlbiB1c2luZyBEaXJlY3RYLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIGNvbnRyb2xzL21lbnUuYzoKCVJlcGxhY2VkIE1TR19JbnRlcm5hbEdldE1lc3NhZ2UgY2FsbHMgYnkgZXF1aXZhbGVudCBleHBvcnRlZCBBUElzLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCByZXR1cm4gdmFsdWUgZm9yIFdNX05PVElGWSBhbmQgV01fQUNUSVZBVEVBUFAgbWFwcGluZ3MuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogQWRkZWQgU01UT18qIGRlZmluZXMuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZGVidWdnZXIvZGJnLnksCgkgIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvc3RhY2suYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRXh0ZW5kZWQgYnQgY29tbWFuZCB0byBkaXNwbGF5IGJhY2t0cmFjZSBvZiBhbm90aGVyIHRocmVhZC4KCUVuaGFuY2VkIHByb2Nlc3MgJiB0aHJlYWQgZGlzcGxheSB3aXRoIHByb2Nlc3MgbmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB0YWIgY29udHJvbCBpbmRleCBoYW5kbGluZy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU2V0Q29tbUNvbmZpZyBoYXMgMyBhcmd1bWVudHMsIG5vdCAyLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUmVjb25jaWxlZCB0aGUgd2luZSBtYW4gcGFnZXMgdG8gdGhlIGFic2VuY2Ugb2Ygd2luZS5jb25mLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW1hZ2UgbmFtZSB2YWx1ZSBzZW50IHRvIHNlcnZlciB1cG9uIHByb2Nlc3MgY3JlYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRmlyc3QgKHBhcnRpYWwpIGltcGxlbWVudGF0aW9uIG9mIElUeXBlSW5mbzo6SW52b2tlLgoJRml4ZWQgYnVmZmVyIGxlbiBwYXNzaW5nIHRvIHNucHJpbnRmKCkuCgoyMDAxLTA4LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jOgoJTWFyY28gQml6emFycmkgPG0uYml6emFycmlAaWN1YmUuaXQ+CglHZXRDb250cm9sQnJ1c2gxNjogYXZvaWQgcG90ZW50aWFsbHkgcmVsZWFzaW5nIHRoZSBzYW1lIHBvaW50ZXIKCXR3aWNlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglJbXBsZW1lbnRlZCBSZWdpc3RlclR5cGVMaWIuCgoJKiBsaWJyYXJ5L2xkdC5jOgoJUGllcnJlIEJleXNzYWMgPHBiQGZhc3Rlcml4LmZyZWVuaXgub3JnPgoJRm9yY2UgRFBMIDMgd2hlbiBzZXR0aW5nIGVudHJpZXMgb24gQlNELgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJT25seSBhZGQgIi4iIHNlcGFyYXRvciBpbiBjYXNlIGEgZGVmYXVsdCBmaWxlIG5hbWUgZXh0ZW5zaW9uIGRvZXMKCWV4aXN0LgoKCSogb2JqZWN0cy9kaWIuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRElCX0dldEJpdG1hcEluZm8gZGlkbid0IHJlY29nbml6ZSBCSVRNQVBWNC81SEVBREVSLgoKCSogZGVidWdnZXIvbXNjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciAtMSBhcyB0aGUgdW5kZWZpbmVkIHZhbHVlIGZvciBoYW5kbGVzIGJlZm9yZSBDbG9zZUhhbmRsZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIGRlYnVnZ2luZyBkdW1wcyBvZiBiYXIgYW5kIGJ1dHRvbnMsIGFuZCB0cmFjZSBlbnRyeSBmb3IgZWFjaAoJICBtZXNzYWdlLgoJLSBPcmdhbml6ZSBXTV9OT1RJRlkgcHJvY2Vzc2luZyBpbiBwcmVwYXJhdGlvbiBmb3IgVW5pY29kZQoJLSBJbXBsZW1lbnQgVEJOX0dFVERJU1BJTkZPIGFuZCBJX0lNQUdFQ0FMTEJBQ0sgZm9yIGJpdG1hcHMuCgktIEltcGxlbWVudCBkcmF3aW5nIG9mIHNlcGFyYXRvciBmb3IgVEJTVFlMRV9EUk9QRE9XTiBzaW1pbGFyIHRvIG5hdGl2ZS4KCS0gQ2hhbmdlIGRyYXdpbmcgb2YgYnV0dG9ucyB0byBzdXBwb3J0IFRCU1RZTEVfTElTVCBhbmQgbWFrZSBtYXRjaAoJICBuYXRpdmUgcGl4ZWwgbGF5b3V0ICh3aXRoIGFuZCB3aXRob3V0IGJpdG1hcHMpLgoJLSBDaGFuZ2UgVE9PTEJBUl9NZWFzdXJlU3RyaW5nIHRvIG1lYXN1cmUgd2l0aCBEcmF3VGV4dCBsaWtlIG5hdGl2ZS4KCSAgVGhpcyBlbGltaW5hdGVzIGV4dHJhIHNwYWNlIGR1ZSB0byBwcmVmaXggY2hhciAoIiYiKS4KCS0gU3BlZWQgdXAgVE9PTEJBUl9DYWxjU3RyaW5ncyBieSBkb2luZyB0aGUgSERDIGFuZCBGT05UIHNlbGVjdGlvbiBvbmNlLgoJLSBDaGFuZ2UgY2FsYyBvZiBidXR0b25zIHRvIG1hdGNoIGRyYXdpbmcgZm9yIFRCU1RZTEVfTElTVCBhbmQKCSAgc2VwYXJhdG9ycy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc3VwcG9ydCB0byBkdW1wIG1lbW9yeSBhdCBsUGFyYW0gbG9jYXRpb24gb24gY29tbW9uIGNvbnRyb2wKCSAgbWVzc2FnZXMuCgktIEZpeGVkIHJlbWFpbmluZyBUb29sYmFyIGFuZCBQYWdlciBub3RpZnkgZHVtcCBhbW91bnRzLgoJLSBTZXBhcmF0ZSBtZW1vcnkgZHVtcCBjb2RlIGZvciBlYXN5IHVzZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgVEJORl8qIGZsYWdzIGZvciB0aGUgTk1UQkRJU1BJTkZPIHN0cnVjdHVyZS4KCjIwMDEtMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTA3MzEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9kcml2ZXIuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW5jbHVkZSBkZXZpY2UgbmFtZSBpbiBjYWxsIHRvIENyZWF0ZUlDLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglGaXhlZCBkZXNrdG9wIHdpbmRvdyBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgd2luZG93cy9kY2UuYzoKCUZpeGVkIGEgZmV3IHByb2JsZW1zIHdpdGggRENYXyogZmxhZ3MgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglEb24ndCBlbmFibGUgdGhlICdob3QnIHN0YXRlIG9mIGEgdG9vbGJhciBidXR0b24gd2hlbiBpdCdzIG5vdAoJZW5hYmxlZC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIFNHSVMgbXVsdGl0ZXh0dXJlIGV4dGVuc2lvbi4KCS0gbWlzYy4gb3RoZXIgZml4ZXMKCgkqIHdpbmRvd3MvZGVmd25kLmM6CglFcmFzZSBvbmx5IGNsaWVudCBhcmVhIG9uIFdNX0VSQVNFQktHTkQuCgoyMDAxLTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luYXBpLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luYXBpL3RyYW1wb2xpbmUsIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2ssIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIGl0IHBvc3NpYmxlIHRvIGluc3RhbGwgdGhlIHdpbmFwaSB0b29scy4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRm9yY2UgU1RSSUNUIGNoZWNraW5nIG9mIGNhbGxiYWNrIGZ1bmN0aW9uIHR5cGVzIHdoZW4gY29tcGlsaW5nIFdpbmUuCgoJKiB3aW5kb3dzL3Byb3BlcnR5LmM6CglJbXBsZW1lbnQgRW51bVByb3BzIG9uIHRvcCBvZiBFbnVtUHJvcHNFeCB0byBhdm9pZCBmdW5jdGlvbiBwb2ludGVyCgl0eXBlIG1pc21hdGNoZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGluY2x1ZGUvdGFzay5oOgoJRml4ZWQgSFRBU0svSFRBU0sxNiBoYW5kbGUgbWlzbWF0Y2guCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS93aW5kZWYuaDoKCU1vdmVkIHNvbWUgaGFuZGxlIGRlY2xhcmF0aW9ucyB0byB0aGUgcmlnaHQgaGVhZGVycy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBIGZldyBidWcgZml4ZXMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIHRoZSAnLS13aXRoLXdpbmUteHh4JyBvcHRpb25zOiBvbmx5IGxvb2sgaW4gdGhlCglzcGVjaWZpZWQgcGF0aC4KCUxpYnJhcmllcyBhbmQgd2luZSBkbGxzIGFyZSBzZXBhcmF0ZSBub3Rpb25zIHRoYXQgbmVlZCBzZXBhcmF0ZSBwYXRocwoJLT4gYWRkIFdJTkVfRExMX3tST09ULFBBVEh9LCAtLXdpdGgtd2luZS1kbGxzIGFuZCBhICctUCcgb3B0aW9uLgoJU21hbGwgZml4ZXMgdG8gdGhlIHNlYXJjaCBvcmRlci4KCjIwMDEtMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lc2NhcGUuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jOgoJUmV3cm90ZSBFc2NhcGUgdG8gYXZvaWQgY2FsbGluZyBkb3duIHRvIEVzY2FwZTE2LgoJUmVwbGFjZWQgRXNjYXBlIGJ5IEV4dEVzY2FwZSBpbiB0aGUgREMgZnVuY3Rpb24gdGFibGUuCgoJKiBNYWtlLnJ1bGVzLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGEgZmlsdGVyIHJ1bGUgZm9yIGZpbHRlcmluZyBtYWtlIG91dHB1dCB3aXRoCgl0b29scy93aW5hcGkvbWFrZV9maWx0ZXIuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL29sZTIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlciwKCSAgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS9zZXR1cC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQSBmZXcgYnVnIGZpeGVzLgoKCSogaW5jbHVkZS9kcGxheS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDbGVhbnVwL3JlbW92YWwgb2YgdW5uZXNzYXJ5IHRoaW5ncyB0aGF0IHdvdWxkIGhhdmUgbWFkZSB3aW5hcGlfKgoJcGFyc2luZyBtb3JlIGNvbXBsaWNhdGVkLgoKMjAwMS0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLAoJICBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLAoJICBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jOgoJQWRkZWQgR2V0RGV2aWNlQ2FwcyB0byB0aGUgREMgZHJpdmVyIGludGVyZmFjZS4gUmVtb3ZlZCBkZXZDYXBzCglwb2ludGVyIGluIHRoZSBnZW5lcmljIERDIHN0cnVjdHVyZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJUmVtb3ZlZCB1bnVzZWQgRENfRlVOQ1MgcG9pbnRlcnMuCgoyMDAxLTA3LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy92ZXJzaW9uLmM6CglCb2IgR29vZHdpbiA8Z29vZGllMUBwYWNiZWxsLm5ldD4KCUZpeCB0aGUgMTZiaXQgd2luOTUgdmVyc2lvbi4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQdXQgdGhlIHBlciBwcm9qZWN0IHBhdGhzIGJlZm9yZSB0aGUgd2luZSBwYXRocy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBsaWJyYXJpZXMgZnJvbSB0aGUgd2luZSBsaW5rIHRlc3QuCglNb3ZlIERMTF9MSU5LIGZyb20gY29uZmlndXJlLmluIHRvIHRoZSBNYWtlLnJ1bGVzIGZpbGUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvbid0IGNyYXNoIGlmIERldmljZUNhcGFiaWxpdGllcyhEQ19QQVBFUk5BTUVTKSBmYWlscy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjOgoJQWRkZWQgbWlzc2luZyBudGRsbCBpbXBvcnRzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kcml2ZXIuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLAoJICBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCUJ1aWxkIHRoZSBEQyBmdW5jdGlvbiB0YWJsZSBieSB1c2luZyBHZXRQcm9jQWRkcmVzcyBvbiB0aGUgZ3JhcGhpY3MKCWRyaXZlciBtb2R1bGUuIE1vdmVkIGRyaXZlciBzdXBwb3J0IHRvIGRsbHMvZ2RpLgoKMjAwMS0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYzoKCVJlbW92ZWQgaW1wb3J0IG9mIHgxMWRydiBmcm9tIGRkcmF3LgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgbG9hZGVyL2Rvcy9kb3Ntb2QuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNsZWFudXAvcmVtb3ZhbCBvZiB1bm5lc3NhcnkgdGhpbmdzIHRoYXQgd291bGQgaGF2ZSBtYWRlIHdpbmFwaV8qCglwYXJzaW5nIG1vcmUgY29tcGxpY2F0ZWQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNb3ZlZCBjb21tIHJlbGF0ZWQgcHJvdG95cGVzIHRvIHRoZSBjb3JyZWN0IC5oIGZpbGUuCgktIENsZWFuZWQgdXAgdGhlIGluY2x1ZGUgc2VjdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgaW5jbHVzaW9uIG9mIHdpbm50LmggYmVjYXVzZSB0aGUgcG9ydGluZyBsYXllciBzaG91bGRuJ3QKCWluY2x1ZGUgV2luZG93cyBzcGVjaWZpYyBzdHVmZi4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZXdyaXRlIFRydWVUeXBlIGZvbnQgbWV0cmljIHBhcnNpbmcgY29kZS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwKCSAgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyLCB0b29scy93aW5hcGkvbWFrZV9maWx0ZXJfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBIGZldyBtb3JlIGJ1ZyBmaXhlcwoJLSBSZW9yZ2FuaXphdGlvbiBjb250aW51ZXMKCS0gTmV3IHRvb2wgKG1ha2VfZmlsdGVyKSBmb3IgZmlsdGVyaW5nIG1ha2Ugb3V0cHV0IGFkZGVkCgoJKiBkbGxzL250ZGxsL21pc2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSB0eXBvLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEb24ndCBpbmxpbmUgcGVyZmVjdF9ncmFwaGljcygpLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2hvb2suaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGlmMTYzMi90aHVuay5jOgoJUmVtb3ZlZCBhIGZldyB1bm5lY2Vzc2FyeSBDYWxsb3V0cy4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYzoKCUF2b2lkIHVzaW5nIEdldEZhc3RRdWV1ZTE2IGZyb20gVVNFUi4KCgkqIGRsbHMvdXNlci90ZXh0LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglGdWxseSBpbXBsZW1lbnQgRHJhd1RleHRFeCogZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmUgYSBiaXQgbW9yZSBncmFjZWZ1bCBvbiBOVUxMIHByb3BlcnR5IHNoZWV0IHRpdGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gT24gVEJfU0VUSU1BR0VMSVNUIHJldHJpZXZlIG5ldyB2YWx1ZXMgb2YgdGhlIGJpdG1hcCB3aWR0aCBhbmQKCSAgaGVpZ2h0IChmaXhlcyBvdmVybGFwIG9mIGltYWdlIGFuZCB0ZXh0IGluIElFNCkuCgktIEhhbmRsZSByZXR1cm4gY29kZXMgZnJvbSBUQk5fRFJPUERPV04gKGFsbG93cyBhICJkcm9wZG93biIgdG8gYmUKCSAgdHJlYXRlZCBsaWtlIGEgcmVndWxhciBidXR0b24pLgoJLSBJbXBsZW1lbnQgVEJOX0JFR0lORFJBRyBhbmQgVEJOX0VORERSQUcgaW4gV01fTEJVVFRPTntET1dOfFVQfSAobm90CgkgIG5lY2Vzc2FyeSBidXQgZG9uZSBieSBuYXRpdmUpLgoJLSBJbXBsZW1lbnQgTk1fUkVMRUFTRURDQVBUVVJFIGFuZCBOTV9DTElDSy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgdmFsdWVzIHRvIGRlc2NyaWJlIHJldHVybiB2YWx1ZXMgZnJvbSBXTV9OT1RJRlkgb2YgVEJOX0RST1BET1dOLgoKCSogTWFrZS5ydWxlcy5pbjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglDb3JyZWN0IG1hbiBwYWdlIHNwZWMgZGlyZWN0b3J5LgoKMjAwMS0wNy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsCgkgIG1zZG9zL2Rvc2FzcGkuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9yZWdpb24uYywKCSAgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL2RyaXZlci5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9wYWludGluZy5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsCgkgIGlmMTYzMi90aHVuay5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93c29jazMyL3Byb3RvY29sLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywKCSAgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBjb250cm9scy9jb21iby5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdXNpb24gb2YgaGVhcC5oLgoKMjAwMS0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZS5oLAoJICBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglSZW1vdmVkIGVuaG1ldGFmaWxlLmguIFNpbXBsaWZpZWQgRU5ITUVUQUZJTEVPQkogc3RydWN0dXJlIGEgYml0LgoKCSogaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIG1zZG9zL2ludDIxLmMsIHJlbGF5MzIvc25vb3AuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy93aW5lcHMvYWZtLmMsCgkgIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2RyaXZlci5jLAoJICBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpZjE2MzIvc25vb3AuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJUmVtb3ZlZCBIRUFQX3N0cmR1cEEuCgoJKiBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLCBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvYWdsLmgsIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLCBkbGxzL3dpbmVwcy9ta2FnbC5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBidWlsdC1pbiBmb250IGRhdGEgcmVhZC1vbmx5LgoKCSogb2JqZWN0cy9kY3ZhbHVlcy5jOgoJR290IHJpZCBvZiBhbGwgdGhlIHVnbHkgbWFjcm9zLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1vZGlmeSBpbml0IGNvZGUgdG8gaGFuZGxlIGNvbnN0IGRhdGEgdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJTW92ZSAxNi1iaXQgQ09NTSBjb2RlIHRvIFVTRVIgZGxsLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGNvbnRyb2xzL3N0YXRpYy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV05EUFJPQyBoYW5kbGVycyBub3cgY2hlY2sgd2hldGhlciBIV05EIGFyZ3VtZW50IGlzIHZhbGlkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT0xFQVVUMzIuRGxsR2V0Q2xhc3NPYmplY3QgYW5kIHN1cHBvcnQgZm9yIHRoZSBPbGUgU3RkRm9udCBhZGRlZCAoanVzdAoJZ2l2aW5nIGJhY2sgYSA4IHBvaW50IFN5c3RlbSBmb250IGZvciBub3cpLgoKCSogb2JqZWN0cy9kY3ZhbHVlcy5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKMjAwMS0wNy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvb2xlLmgsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZjcnQvZXhpdC5jLCBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgc3VyZSB0aGF0IHRoZSBmaWxlcyB0aGF0IGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMKCSAgb2YgdGhlIGltcGxlbWVudGF0ZWQgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZC4KCS0gQ29ycmVjdGVkIG1pc21hdGNoaW5nIHByb3RvdHlwZXMuCgktIENsZWFuZWQgdXAgdGhlIGluY2x1ZGUgc2VjdGlvbi4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVzZSBXaW5kb3dzIG1ldHJpY3MgZm9yIGZvbnQgc2NhbGluZy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJWWV0IGFub3RoZXIgbWFqb3IgcmVvcmdhbml6YXRpb24gYW5kIGEgZmV3IG5ldyBmZWF0dXJlcy4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYzoKCUJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AcmVkaGF0LmRlPgoJU2V0IGV4ZWN1dGFibGUgcGVybWlzc2lvbnMgd2hlbiBjcmVhdGluZyAuZXhlLy5jb20gZmlsZXMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhc3MgaGFuZGxlIHRvIEdldEZpbGVUeXBlLCBub3QgTVNWQ1JUIGZkLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgQnVpbGRDb21tRENCMTYgdG8gZGVwZW5kIG9uIEJ1aWxkQ29tbURDQiwgbm90IHZpY2UtdmVyc2EuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsIGRsbHMvd2luZXBzL21rYWdsLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglPbmx5IGluZGV4IGdseXBoIG5hbWVzIHdoZW4gbmVjZXNzYXJ5LgoKCSogaW5jbHVkZS9sb2Fkb3JkZXIuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21vZHVsZS5oLAoJICBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9vcHRpb25zLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywKCSAgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoyMDAxLTA3LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmgsCgkgIGRsbHMvd2luZXBzL21rYWdsLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglFbGltaW5hdGUgVU5JQ09ERVZFQ1RPUiBkYXRhIHR5cGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZV9nbC5oOgoJQ29tbWVudGVkIG91dCByZWZlcmVuY2VzIHRvIHgxMWRydiBpbnRlcm5hbHMgZnJvbSBNRVNBIGNvZGUuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvYnJ1c2guYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLAoJICBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLAoJICBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy93aW5lcHMvYnJ1c2guYywKCSAgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3Blbi5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byBHREkgaW50ZXJuYWwgcGVuL2JydXNoL2ZvbnQKCXN0cnVjdHVyZXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSWYgdGhlIGNsYXNzIG9mIHRoZSB3aW5kb3cgaXMgYSBrbm93biBzdGFuZGFyZCwgdGhlbiBmb3JtYXQgdGhlIG5hbWUKCSAgb2YgdGhlIFdNX1VTRVIrbm5uIG1lc3NhZ2VzIGlmIHBvc3NpYmxlLgoJLSBGaXggY2FzZSB3aGVyZSB0aGUgY2xhc3NuYW1lIHJldHVybmVkIHdhcyB0cnVuY2F0ZWQgYW5kIG5vdCBwcmludGVkCgkgIGF0IGFsbC4KCS0gSXNzdWUgZXJyb3JzIGlmIGVpdGhlciB0aGUgTm90aWZ5IG9yIGNvbW1vbiBjb250cm9sIG1lc3Nhc2dlIGxpc3RzCgkgIGFyZSBvdXQgb2Ygb3JkZXIuCgktIFByZXBhcmUgdG8gZHVtcCBvdXQgY29udHJvbCBibG9jayBzdHJ1Y3R1cmVzIHBvaW50ZWQgdG8gYnkgbHBhcmFtCgkgIGZvciBtZXNzYWdlcy4KCgkqIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvYml0bWFwLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmMsCgkgIGRsbHMvZ2RpL3dpbmcuYzoKCU1vdmVkIHRoZSAxNi1iaXQgcG9pbnRlciB0byB0aGUgRElCIGJpdHMgb3V0IG9mIHRoZSBkcml2ZXItc3BlY2lmaWMKCXN0cnVjdHVyZSBhbmQgaW50byB0aGUgbWFpbiBiaXRtYXAgc3RydWN0dXJlLiBSZW1vdmVkCglDcmVhdGVESUJTZWN0aW9uMTYgZnJvbSB0aGUgZHJpdmVyIGludGVyZmFjZS4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL2hlYXAuaCwgd2luZG93cy9tZGkuYzoKCUdvdCByaWQgb2YgSEVBUF9zdHJkdXBXLgoKCSogZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmUgcmVkdW5kYW50IGRhdGEgc3RydWN0dXJlIGZyb20gZm9udCBtZXRyaWNzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZUZvbnQ6OklEaXNwYXRjaDo6SW52b2tlIHN0dWIgY2FuIGp1c3QgcmV0dXJuIFNfT0suCgoyMDAxLTA3LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglVc2UgQWRqdXN0V2luZG93UmVjdCB0byB0cmFuc2xhdGUgWCB0byB3aW5kb3cgcmVjdGFuZ2xlIGluc3RlYWQgb2YKCWR1cGxpY2F0aW5nIHdoYXQncyBkb25lIGluIG5vbmNsaWVudC5jLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdGlvbnMgdG8gdGhlIFdpbjk1IGFuZCBsYXRlciBmcmFtZSBkcmF3aW5nIGNvZGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZGl0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byB0aGUgd2luZG93IHN0eWxlcyBkdXJpbmcgd2luZG93IGNyZWF0aW9uLgoKCSogaW5jbHVkZS93aW5lL3NoZWxsMTYuaCwgbWVtb3J5L2F0b20uYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL21zdmlkZW8vdmZ3MTYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHN1cmUgdGhhdCB0aGUgZmlsZXMgdGhhdCBjb250YWlucyB0aGUgZGVjbGFyYXRpb25zCgkgIG9mIHRoZSBpbXBsZW1lbnRhdGVkIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQuCgktIENvcnJlY3RlZCBtaXNtYXRjaGluZyBwcm90b3R5cGVzLgoJLSBDbGVhbmVkIHVwIHRoZSBpbmNsdWRlIHNlY3Rpb24uCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJQWRkZWQgYSBmZXcgbW9yZSBmaWxlcyB0byB0aGUgaW5zdGFsbCBsaXN0LgoKCSogd2luZG93cy93aW5wb3MuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglUcmFjZSByZWN0YW5nbGVzIHJldHVybmVkIGJ5IEdldENsaWVudFJlY3QgYW5kIEdldFdpbmRvd1JlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlY2FsYyB0aGUgdG9vbGJhciBzaXplIG9uIFRCX1NFVEJVVFRPTlNJWkUgaW4gY2VydGFpbiBjb25kaXRpb25zLgoJLSBBZGQgdHJhY2UgdG8gc2hvdyB0aGUgcGFpbnQgcmVjdGFuZ2xlIHByaW9yIHRvIHJlZnJlc2hpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXggaGFuZGxpbmcgb2YgdGV4dCBjb2xvci4KCS0gQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBXTV9TRVRSRURSQVcgdG8gYmUgY2xvc2VyIHRvIG5hdGl2ZS4KCS0gRG8gbW9yZSBpbXBsZW1lbnRhdGlvbiBvZiBSQlNfQVVUT1NJWkUgaW4gdGhlIFdNX1NJWkUgcHJvY2Vzc29yLgoJLSBJbXBsZW1lbnQgUkJCU19WQVJJQUJMRUhFSUdIVC4gVXNlZCBieSBJRTQuCgktIERvIG1vcmUgdGVzdGluZyBpbiBXTV9TSVpFIHRvIGhhbmRsZSBzdHJhbmdlIGNhc2VzIGxpa2UgbmF0aXZlLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEaXNwbGF5IHJlY3RhbmdsZSBmcm9tIFdNX05DQ0FMQ1NJWkUgb24gZW50cnkgYW5kIGV4aXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggY29udmVyc2lvbiBvZiBXIHN0cnVjdHVyZSB0byBBIHN0cnVjdHVyZSBkdXJpbmcgbm90aWZ5LgoKCSogUkVBRE1FOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVcGRhdGUgaW5mb3JtYXRpb24gY29uY2VybmluZyBGcmVlQlNELgoJUmVmZXIgdG8gV2luZSBpbnN0ZWFkIG9mIHdpbmUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXBsYWNlIHNlcnZpY2UgdGhyZWFkIHdpdGggUmVhZEZpbGVFeC9Xcml0ZUZpbGVFeC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggJ3VuZG9jdW1lbnRlZCcgYmVoYXZpb3VyIG9mIEdldFByaXZhdGVQcm9maWxlU3RyaW5nLgoKMjAwMS0wNy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIHVudXNlZCBmaWxlLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciByZW9yZ2FuaXNhdGlvbiBhbmQgYSBmZXcgYnVnIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IG91dCBvZiB0aGUgc291cmNlIHRyZWUgYnVpbGQgKGFnYWluKS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgc2NoZWR1bGVyL3RpbWVyLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmM6CglNb3ZlZCBzZXJ2ZXIuaCB0byBpbmNsdWRlL3dpbmUuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci91bmljb2RlLmgsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHM6CglVc2UgdGhlIG5ldyBwcm90b2NvbC5kZWYgZmlsZSB0byBidWlsZCB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmVzLgoJRGVmaW5lIHByb3RvY29sIHN0cnVjdHVyZXMgaW4gYSBzZXBhcmF0ZSBzZXJ2ZXJfcHJvdG9jb2wuaCBmaWxlLgoJUmVtb3ZlZCBfX1dJTkVfU0VSVkVSX18gY2hlY2tzIG5vdyB0aGF0IGFsbCBpbmNsdWRlcyBhcmUgaW4gdGhlIHJpZ2h0CglkaXJlY3RvcnkuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVhZC9jYWxjdWxhdGUgYXZlcmFnZSBjaGFyYWN0ZXIgd2lkdGggZm9yIGFsbCBmb250cy4KCVdvcmsgZGlyZWN0bHkgd2l0aCAxNi1iaXQgV0NIQVJzOyBkb24ndCBjb252ZXJ0IHRvIENQMTI1Mi4KCgkqIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgSGVsdmV0aWNhIE5hcnJvdyBhIHNlcGFyYXRlIGZvbnQgZmFtaWx5LgoKMjAwMS0wNy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQyOS5jLAoJICBtc2Rvcy9wcGRldi5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wZW4uYywKCSAgd2luMzIvZmlsZS5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5tbS9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3RpbWUuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsCgkgIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci90YXNrLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgc3VyZSB0aGF0IHRoZSBmaWxlcyB0aGF0IGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMKCSAgb2YgaW1wbGVtZW50YXRlZCBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkLgoJLSBDb3JyZWN0ZWQgbWlzbWF0Y2hpbmcgcHJvdG90eXBlcy4KCS0gQ2xlYW5lZCB1cCB0aGUgaW5jbHVkZSBzZWN0aW9uLgoKCSogbWVtb3J5L2F0b20uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY29uZmlnLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvc2V0dXAucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBhZGRpdGlvbnMgYW5kIGJ1ZyBmaXhlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJlamVjdCBwb2ludGVyIG1lc3NhZ2VzIGluIFNlbmROb3RpZnlNZXNzYWdlW0FXXSBhbmQKCVNlbmRNZXNzYWdlQ2FsbGJhY2tbQVddLiBGaXhlZCBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9vYWlkbC5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvcnBjLmgsCgkgIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91cmxtb24uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSBycGMqLmgvd2luZG93cy5oL29sZTIuaCBqdXN0IGxpa2Ugd2luZG93cy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgR2V0Q29tbVN0YXRlMTYgdG8gc2F2ZSBzdGF0ZSBpbiBPcGVuQ29tbTE2LgoJTWVyZ2UgY29tbTE2IGdsb2JhbHMgaW50byBvbmUgc3RydWN0dXJlLgoKCSogdG9vbHMvZm50MmJkZi5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNYWtlIHRoZSBmb250IG5hbWUgYW5kIHNpemUgc2V0dGluZ3MgcmVmbGVjdCB0aGUgZGF0YSBpbiB0aGUgZm9udCBmaWxlCglyYXRoZXIgdGhhbiBhcmJpdHJhcnkgdmFsdWVzLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfRG9SZXR1cm46IHJlbW92ZSByZWR1bmRhbnQgcHJpbnRpbmcgb2YgdGlkLgoKMjAwMS0wNy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IFVwZGF0ZWQgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgU2V0Q29tbVN0YXRlMTYgdG8gdXNlIFNldENvbW1TdGF0ZS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTW9yZSBkZXNjcmlwdGl2ZSBlcnJvciBvbiBidWZmZXIgb3ZlcmZsb3cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFzIGZvciB0aGUgZWRpdCBjb250cm9sLCB0aGUgc3R5bGUgb2YgdGhlIGJvcmRlcnMgb24gdGhlIGxpc3QgY29udHJvbAoJaXMgbW9kaWZpZWQgaW4gdGhlIGRpYWxvZyBsb2FkaW5nIGNvZGUsIG5vdCBpbiB0aGUgY29udHJvbCBpdHNlbGYuCgoJKiBvbGUvb2xlMm5scy5jLCBkbGxzL3VzZXIvdGV4dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgc29tZSBtb3JlIG92ZXJmbG93aW5nIHN0cmluZyB0cmFjZXMuCgoJKiBjb250cm9scy9tZW51LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglEcmF3IE1lbnVCYXIgaW4gcHJvcGVyIHBsYWNlIChzb21lIGNhc2VzKS4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglNYWtlIHN1cmUgdXNlcjMyIGlzIGFsd2F5cyBsb2FkZWQgYmVmb3JlIHgxMWRydi4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSGFuZGxlIHNwYWNlcyBwcm9wZXJseSB3aGVuIHJlc3RhcnRpbmcgd2luZWxhdW5jaGVyIGZvciBkZWJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU29tZSAnY2FsZW5kYXInIHR5cG9zLi4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBDb21tYW5kTGluZVRvQXJndlcgcHJvdG90eXBlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglSZWZyZXNoIGJpdG1hcCBjb3VudCB0byB0YWtlIGluIGFjY291bnQgaW1hZ2VsaXN0IGNoYW5nZXMgYWZ0ZXIKCVRCX1NFVElNQUdFTElTVC4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4ZWQgdW5pY29kZSB3YXJuaW5nLgoKCSogaW5jbHVkZS93aW5udC5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBTVEFUVVNfKiBjb25zdGFudCBmb3IgbmFtZWQgcGlwZXMuIFJldHVybiBTVEFUVVNfUElQRV9OT1RfQVZBSUxBQkxFCgl3aGVuIG9wZW5pbmcgYSBuYW1lZCBwaXBlIGlmIHRoZSBwaXBlIGV4aXN0cyBidXQgbm8gaW5zdGFuY2VzIG9mIGl0IGFyZQoJY3VycmVudGx5IHdhaXRpbmcgZm9yIGEgY29ubmVjdGlvbi4KCjIwMDEtMDctMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jOgoJQmFja2VkIG91dCB0aGUgc3VzcGVuZF9wcm9jZXNzX2Zvcl9wdHJhY2UgY2hhbmdlLgoJRml4ZWQgYSBjb3VwbGUgb2YgcmFjZXMgaW4gcHRyYWNlIGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgLXJwYXRoIG9wdGlvbiBmcm9tIHRoZSBsaW5rIGNvbW1hbmQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL291dHB1dC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGFkZGl0aW9ucyBhbmQgYnVnIGZpeGVzLgoKCSogd2luZG93cy9kY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmV0dGVyIExvY2tXaW5kb3dVcGRhdGUgZGVidWcuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHNvbWUgRklYTUUoKXMgcHJpbnQgdGhlIHJlc3BlY3RpdmUgc3RyaW5ncyBwYXNzZWQuCglDaGFuZ2VkIFN0Z1NldFRpbWVzKCkgdG8gY29ycmVjdCB0eXBlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFF1YWxpdHkgQm94IChyZWFkb25seSBjdXJyZW50bHkpIGZvciAxNmJpdCB0ZW1wbGF0ZWQgZGlhbG9ncy4KCUFkZGVkIFtQcmludGVyXSBidXR0b24gc3VwcG9ydCBpbiAxNmJpdCB0ZW1wbGF0ZWQgZGlhbG9ncy4KCVRyeSBzZW5kaW5nIG9yaWVudGF0aW9uIGljb24gdG8gc3RjMTAgdG9vLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBtb3N0IG9mIHRoZSBudW1iZXJzIHdpdGggdGhlIHN5bWJvbGljIGNvbnN0YW50cyBvZiB0aGUgZGlhbG9nCglpdGVtcy4KCgkqIG1zZG9zL3BwZGV2LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCBjbGFpbSB0aGUgcGFycG9ydCBmb3IgZXhjbHVzaXZlIGFjY2VzcyBhbmQgcmVsZWFzZSB0aGUgcG9ydAoJYWZ0ZXIgZXZlcnkgYWNjZXNzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgR2V0Q29tbVN0YXRlMTYgdXNpbmcgR2V0Q29tbVN0YXRlLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfR2V0UHJvY0FkZHJlc3M6IGRvbid0IHRvdWNoIGFscmVhZHkgaW5pdGlhbGl6ZWQgZnVuLWVudHJpZXMuCgoyMDAxLTA3LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglSZW1vdmVkIHVudXNlZCBmdW5jdGlvbnMgc3VzcGVuZC9yZW1vdmVfYWxsX3RocmVhZHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9mb250ZW5naW5lLmMsCgkgIG1lbW9yeS9zdHJpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3Blbi5jLAoJICBvYmplY3RzL3JlZ2lvbi5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywKCSAgZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBvdmVybGFwcGVkIGNvbXBsZXRpb24gcm91dGluZXMuCglEb24ndCB1c2UgbHBPdmVybGFwcGVkLT5PZmZzZXRIaWdoIHRvIHN0b3JlIGJ5dGVzIHRvIHRyYW5zZmVyLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IFggY3Jhc2ggd2hlbiBydW5uaW5nIGluIG1hbmFnZWQgbW9kZS4KCgkqIHVuaWNvZGUvY2FzZW1hcC5jLCB1bmljb2RlL3djdHlwZS5jLCB1bmljb2RlL2NfMDQyLmMsCgkgIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMjg1OTcuYywKCSAgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLAoJICB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY5LmMsCgkgIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywKCSAgdW5pY29kZS9jXzk1MC5jOgoJUmVnZW5lcmF0ZWQgY29kZXBhZ2UgZmlsZXMgd2l0aCBVbmljb2RlIDMuMSBkYXRhLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3Jhc2FwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGFkZGl0aW9ucyBhbmQgYnVnIGZpeGVzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglHZXQgd2luZW1ha2VyIHRvIGRyb3AgdGhlIHRyYWlsaW5nIEN0cmxaIHRoYXQgaXMgc3RpbGwgdG8gYmUgZm91bmQgb24KCXF1aXRlIGEgbG90IG9mIERPUyBmaWxlcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJRml4ZWQgYSBmZXcgaXNzdWVzIHdpdGggdHN4MTEgbG9ja2luZy4KCUFsd2F5cyBtYXAgdGhlIGNsaWVudCB3aW5kb3cgd2hlbiBtb3Zpbmcgb3V0IG9mIGljb25pYyBzdGF0ZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRG9uJ3QgY2FsbCBTTk9PUF9SZWdpc3RlckRMTCBvbiBidWlsdGlucy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmVkIHVudXNlZCBPU01lc2EgbGlua2luZwoJLSByZW1vdmVkIE9TTWVzYSBjb2RlCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IENPTU1fTVNSVXBkYXRlIHdpdGggR2V0Q29tbU1vZGVtU3RhdHVzLgoKMjAwMS0wNy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oLAoJICBpbmNsdWRlL3JwY250ZXJyLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJQWRkZWQgYSBidW5jaCBvZiBlbnRyeSBwb2ludHMuCglBZGRlZCBzb21lIHN0dWJzIGFuZCBoZWFkZXIgaW5mb3JtYXRpb24uCglGaXhlZCBzb21lIHJldHVybiBjb2Rlcy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNb2RpZnkgc29tZSBzeXN0ZW0gbWV0cmljcyB0byBhZ3JlZSB3aXRoIFdpbjk1IGFuZCByZWZsZWN0IHRoZSBkZXNrdG9wCglyZWdpc3RyeSBlbnRyaWVzLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNlbWlzdHVicyBmb3IgX2lzbWJjZGlnaXQsX2lzbWJjc3BhY2UsX21ic2x3cixfbWJzbmJjbXAsX21ic3Nwbi4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDVjLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywKCSAgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLAoJICBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy9tZGkuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywKCSAgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9jb2RlcGFnZS5jLAoJICBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9iaXRibHQuYywgZGxscy93aW5tbS9kcml2ZXIuYywKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsCgkgIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvb2xlZGxnL29sZWRsZ19tYWluLmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsCgkgIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zdmNydC9tYWluLmMsCgkgIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9kcGxheXgvZHBsYXkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJQWRkZWQgZGlzYXNzZW1ibHkgZm9yIDB4MGYgMHg1eCBvcGNvZGVzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUJldHRlciBlcnJvciByZXBvcnRpbmcgb24gRGVidWdBY3RpdmVQcm9jZXNzIGZhaWx1cmUuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oOgoJU21hbGwgZml4ZXMgdG8gdGhlIGRlYnVnZ2VyIHN1cHBvcnQuCgoJKiBzZXJ2ZXIvcXVldWUuYzogTWVyZ2UgV01fTU9VU0VNT1ZFIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dvdzMyLmFwaSwgdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwKCSAgdG9vbHMvd2luYXBpL2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3V0aWwucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWpvciByZW9yZ2FuaXphdGlvbiBhbmQgY2xlYW51cC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgRmx1c2hDb21tMTYgd2l0aCBQdXJnZUNvbW0uCgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgdGhlIGxvY2F0aW9uIG9mIHRoZSBzdHlsZSBwYXRjaGluZyBmb3IgdGhlIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdHViIHNvbWUgcmFzYXBpIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYXZlIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGUgYWx3YXlzIHJldHVybiAnTEFOIGNvbm5lY3Rpb24nLgoKMjAwMS0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdGFydCBpbXBsZW1lbnRpbmcgbmFtZWQgcGlwZXMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglBZGQgc2hsd2FwaS53dm5zcHJpbnRmW0FXXSwgaGVhZGVyIGluZm8gYW5kIGNvbW1lbnRzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGluY2x1ZGUvd2luc29jazIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBhIHN0dWIgZm9yIFdTQVJlY3ZGcm9tLgoKCSogY29udHJvbHMvbWVudS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUdldE1lbnVJdGVtSUQ6IHJldHVybiAtMSBmb3IgaW52YWxpZCBtZW51IGl0ZW1zLCBub3QgemVyby4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXdyaXRlIEVzY2FwZUNvbW1GdW5jdGlvbjE2IHRvIHVzZSBFc2NhcGVDb21tRnVuY3Rpb24uCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJQ3JlYXRlRmlsZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggc2VjdXJpdHkgYXR0cmlidXRlcyBpbiBfb3Blbi4KCgkqIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIChHfFMpZXRDbGlwTGlzdCBub3QgYWJvcnQsIGJ1dCByZXR1cm4gRERFUlJfTk9DTElQTElTVC4KCURvIG5vdCBzY3JvbGwgRklYTUUoKXMgdG9vIG11Y2guCgoyMDAxLTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2w6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBjb21tZW50IHRoYXQgY29kZSBpcyBicm9rZW4uCgktIFNpbGVuY2VkIGFubm95aW5nIGxvbmcgdGVybSB3aW5hcGlfY2hlY2sgbWVzc2FnZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgcHJvcGVyIGNoZWNrIGZvciBleGlzdGFuY2Ugb2Ygc3RydWN0IHNvY2thZGRyIG1lbWJlciBzYV9sZW4uCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglVcGRhdGVkIHByaW50aW5nIGRvY3VtZW50YXRpb24gYSBiaXQuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2dkaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVkbGcuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbm1tLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJRml4IHNvbWUgb3JkaW5hbCBmb3J3YXJkaW5nLgoKCSogY29udHJvbHMvbWVudS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZCBzb21lIGFyZ3VtZW50IHZhbGlkYXRpb24gdG8gU2V0TWVudUl0ZW1JbmZvQSwgc28gUVQ1IGRvZXMgbm90Cgljb3JydXB0IGl0cyBtZW51cy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIE1vdmUgY3JlYXRpb24gcHJvY2VzcyB0byB0aGUgV01fTkNDUkVBVEUgbWVzc2FnZSBsaWtlIG5hdGl2ZSBhbmQgZm9yY2UKCSAgc3R5bGVzIFdTX1ZJU0lCTEUgYW5kIENDU19UT1AuCgktIEltcGxlbWVudCBtZXNzYWdlcyBXTV9OQ0hJVFRFU1QsIFdNX1NUWUxFQ0hBTkdFRCwgUkJfTU9WRUJBTkQsCgkgIFJCX01JTklNSVpFQkFORC4KCS0gSW1wcm92ZSBwcmVmb3JtYW5jZSBieSByZW1vdmluZyBjYWxscyB0byBHZXRXaW5kb3dMb25nIGZvciBHV0xfU1RZTEUKCSAgKGJ5IHNhdmluZyBzdGF0ZSBhbmQgaGFuZGxpbmcgV01fU1RZTEVDSEFOR0VEKS4KCS0gQ2xlYW51cCBhbmQgcmVtb3ZlIGRlYWQgYW5kIHRlc3QgY29kZS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCBhbW91bnQgb2YgaW5mbyBkaXNwbGF5ZWQgZm9yIE5NX05DSElUVEVTVCBhbmQgYWxsIHRoZSBMVk5fKi4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCBtb3JlIGNvbG91cnMgc28gdGhhdCBEcmF3RWRnZSB3b3JrcyBmb3IgbW9yZSBjYXNlcy4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgbWlzc2luZyBJSURzLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBSZWFkRmlsZUV4IGFuZCBXcml0ZUZpbGVFeCAobHBPdmVybGFwcGVkQ29tcGxldGlvbiByb3V0aW5lCglpcyBub3Qgc3VwcG9ydGVkIHlldC4uLikKCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgSEFORExFcyBpbnN0ZWFkIG9mIHVuaXggZmRzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkIC0tbGlzdCBmYWNpbGl0eSB0byBsaXN0IGluc3RhbGxlZCBwcm9ncmFtcy4KCUFkZCAtLXJlbW92ZSB4eHggZmFjaWxpdHkgdG8gcmVtb3ZlIGEgc3BlY2lmaWMgcHJvZ3JhbS4KCjIwMDEtMDctMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2dsb2JhbC5jLAoJICBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywKCSAgbWlzYy9lcnJvci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvc3lzdGVtLmMsIG1pc2MvdmVyc2lvbi5jLAoJICBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9mb250ZW5naW5lLmMsIGdyYXBoaWNzL21hcHBpbmcuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBsb2FkZXIvdGFzay5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3ZlcnNpb24vdmVyMTYuYywKCSAgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywKCSAgZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfbWFpbi5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywKCSAgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS9zb3VuZDE2LmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3VzZXIvYmlkaTE2LmMsCgkgIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvbHN0ci5jLAoJICBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL25ldHdvcmsuYywKCSAgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci90aHVuay5jLAoJICBkbGxzL3VzZXIvd3NwcmludGYuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9nZGkvYmlkaTE2LmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3RodW5rLmMsIGRsbHMvZ2RpL3dpbmcuYywKCSAgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zdHJpbmcuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsCgkgIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmNydC9oZWFwLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6Ly5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBxdWFydHouZGxsLgoKCSogd2luMzIvZmlsZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCURlY2xhcmUgc3R1YnMgZm9yIFJlYWRGaWxlRXgsIFdyaXRlRmlsZUV4LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hbWF1ZGlvLmgsIGluY2x1ZGUvYW12aWRlby5oLAoJICBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIGRzaG93IGhlYWRlcnMuCgoJKiBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvTWFrZWZpbGUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgaW50ZXIgZGxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdGRjYWxsLT5jZGVjbCB0aHVua3MgZm9yIGluZXRfbmV0d29yayBhbmQgZ2V0bmV0YnluYW1lLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIFBST0ZJTEVfKiBmdW5jdGlvbnMgYnkgUmVnKi4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSQkJTX0ZJWEVEU0laRSBzaG91bGQgbm90IGFmZmVjdCBfQWRqdXN0QmFuZHMgKGZvdW5kIGJ5IE1pa2UgTWNDb3JtYWNrCglpbiBXaW5aaXApLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRml4IGJ1dHRvbiB0ZXh0IHBsYWNlbWVudCBmb3IgZGlzYWJsZWQgYnV0dG9ucyAoc2VlIFdpbnppcCA4LjApLgoKCSogaW5jbHVkZS91cmxtb24uaDoKCU5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgoJQWRkZWQgSUJpbmRIb3N0LCBJV2luSW5ldEluZm8sIElXaW5JbmV0SHR0cEluZm8gY2xhc3MgZGVmaW5pdGlvbnMsCglCSU5ERiwgQklORFNUQVRVUyBzdHJ1Y3RzLgoKCSogZGxscy9nZGkvZGlzcGRpYi5zcGVjLCBkbGxzL2dkaS93aW5nLnNwZWMsIGRsbHMva2VybmVsL3N0cmVzcy5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBzb21lIDE2LWJpdCBjYWxscyBieSB0aGVpciAzMi1iaXQgZXF1aXZhbGVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmVtZW1iZXIgcmVzcG9uc2UgZnJvbSBMVk5fR0VURElTUElORk8gaWYgdXNlciBzZXRzIExWSUZfRElfU0VUSVRFTS4KCgkqIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRmluaXNoIHdpbjMycyBzZXBhcmF0aW9uLgoKMjAwMS0wNi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDYyOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9taXNjLmMsCglkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBjb25maWd1cmU6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ICdtYWtlIGRlcGVuZCcgZm9yIG91dCBvZiB0aGUgc291cmNlIHRyZWUgYnVpbGQuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWlzc2luZyBjb25maWcuaCBpbmNsdWRlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IFNldFdpbmRvd1BvcyBjYWxsIGluIFNldFdpbmRvd1Jnbi4KCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvd25kLmMsCglkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywKCWRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCglpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy93aW4uYywKCXdpbmRvd3Mvd2lucG9zLmM6CglNb3ZlZCBGb3JjZVdpbmRvd1JhaXNlIHRvIHRoZSBVU0VSIGRyaXZlciBhbmQgcmVtb3ZlZCB0aGUgV05EIGRyaXZlci4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglGaXhlZCBoYW5kbGluZyBvZiBXTV9NT1VTRVdIRUVMIG1lc3NhZ2VzIGluIG5vbi1jbGllbnQgc3BhY2UuCgoyMDAxLTA2LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIGNvbnRyb2xzL21lbnUuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9ydGwuYywgbXNkb3MvaW9wb3J0cy5jLCBvYmplY3RzL2JpdG1hcC5jLAoJICBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLAoJICBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBuYW1lIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHN1YnRsZSBjb25maWd1cmUgYnVnIGNvbmNlcm5pbmcgT3BlbkdMLgoJRm91bmQgb24gRnJlZUJTRCAod2hpY2ggaGFzIE9wZW5HTCBpbiAvdXNyL1gxMVI2L2xpYikuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSW1wcm92ZWQgaGFuZGxpbmcgb2Ygc3R5bGVzIGluIHRoZSBlZGl0IGNvbnRyb2wsIGluY2x1ZGluZyBkZXRlY3RpbmcKCWNoYW5nZXMgb2Ygc3R5bGUgYW5kIGNvcnJlY3RpbmcgaGFuZGxpbmcgb2YgaW5jb25zaXN0YW50IHN0eWxlcy4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywKCSAgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbmlzaCBvbGUzMiBzZXBhcmF0aW9uLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvcXVldWUuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJLSBSZW1vdmUgY29va2VkIGhhcmR3YXJlIG1lc3NhZ2VzIHdoZW4gdGhleSBhcmUgZHJvcHBlZCAocmVwb3J0ZWQgYnkKCSAgR2VyYXJkIFBhdGVsKS4KCS0gQ29udmVydCBhbGwgcG9zdGVkIDMyLWJpdCBtZXNzYWdlcyB0byBVbmljb2RlIGJlZm9yZSBzdG9yaW5nIHRoZW0gaW4KCSAgdGhlIHF1ZXVlLgoJLSBGYXN0ZXIgaW1wbGVtZW50YXRpb24gb2YgTVNHX0lzUG9pbnRlck1lc3NhZ2UuCgktIE1vdmVkIGEgY291cGxlIG9mIGZ1bmN0aW9ucyBmcm9tIHF1ZXVlLmMgdG8gbWVzc2FnZS5jLgoKMjAwMS0wNi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicmFyeS9wb3J0LmMsIGxvYWRlci9lbGYuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluOgoJUHV0IEFDX0RFRklORSBzeW1ib2xzIGRlZmluaXRpb25zIGRpcmVjdGx5IGluIHRoZSBjb25maWd1cmUgc2NyaXB0IHNvCgl0aGF0IHdlIG5vIGxvbmdlciBuZWVkIGFuIGFjY29uZmlnLmguIENsZWFuZWQgdXAgZGxvcGVuKCkgdGVzdHMgYSBiaXQuCgoJKiBtaXNjL2NwdS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXggbWlzbGVhZGluZyBQNCB3YXJuaW5nIG1lc3NhZ2UgYXBwZWFyaW5nIGV2ZW4gaW4gY2FzZSBvZiBtYXRjaC4KCjIwMDEtMDYtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIHdpbmRvdyBwcm9wZXJ0aWVzIHRvIG1ha2Ugc29tZSB4MTFkcnYtc3BlY2lmaWMgaW5mb3JtYXRpb24KCWF2YWlsYWJsZSB0byBoaWdoZXIgbGV2ZWwgY29kZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW9wb3J0cy5jLAoJICBtc2Rvcy9wcGRldi5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIC9kZXYvcGFycG9ydCBzdXBwb3J0IGZvciBkaXJlY3QgcG9ydCBhY2Nlc3MuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1ha2UgdGhlIHZpc2libGUgcmVnaW9uIGVtcHR5IGZvciBub24tdmlzaWJsZSB3aW5kb3dzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIG9uZSBtb3JlIFBST0ZJTEVfIGZ1bmN0aW9uIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugc29tZSAxNi1iaXQgY2FsbHMgYnkgdGhlaXIgMzItYml0IGVxdWl2YWxlbnRzLgoKMjAwMS0wNi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCURvbid0IGNvbXBpbGUgdm04Ni1zcGVjaWZpYyBjb2RlIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsCgkgIGRsbHMva2VybmVsL25scy9jaHQubmxzLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9aaC5yYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSmF1LUhvcm5nIENoZW4gPGI2NTAyMDAyQGVlLm50dS5lZHUudHc+CglBZGRlZCBUcmFkaXRpb25hbCBDaGluZXNlIFN1cHBvcnQKCUZpeGVkIHN1YmxhbmcgZm9udCBzaXplIGVycm9yIHdoZW4gbm90IHVzaW5nIGZpeGVkLXNpemUgZm9udC4KCgkqIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLAoJICBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHNvbWUgMTYtYml0IGNhbGxzIGJ5IHRoZWlyIDMyLWJpdCBlcXVpdmFsZW50cy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUltcGxlbWVudGVkIFNlbmRJbnB1dCgpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBzZXBhcmF0ZSB0aGUgWFNobSB1c2luZyBjb2RlLgoKMjAwMS0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueToKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQWRkIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gYnlhY2MgKGFnYWluKS4KCgkqIHRvb2xzL2V4YW1pbmUtcmVsYXk6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZvciBuZXcgcmVsYXkgZm9ybWF0LiBhZGRlZCB0aHJlYWQga25vd2xlZGdlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHN1cHBvcnQgZm9yIFdNX05PVElGWUZPUk1BVCBhbmQgc3VwcG9ydCBib3RoIEFOU0kgYW5kIFVOSUNPREUKCSAgbm90aWZ5IGZvcm1hdHMuCgktIE1vdmUgdGhlIGRyYXdpbmcgb2YgdGhlIGJhbmQgYmFja2dyb3VuZHMgYW5kIGJhbmQgc2VwYXJhdG9ycyB0byB0aGUKCSAgV01fRVJBU0VCS0dORCBwcm9jZXNzaW5nIGp1c3QgdGhlIHdheSB0aGUgbmF0aXZlIGNvbnRyb2xzIGRvLgoJLSBJbXBsZW1lbnQgV01fU0VUUkVEUkFXLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXggbWVtb3J5IGxlYWtzLgoJLSBBZGQgc3VwcG9ydCBmb3IgV01fTk9USUZZRk9STUFUIGFuZCBzdXBwb3J0IGJvdGggQU5TSSBhbmQgVU5JQ09ERQoJICBub3RpZnkgZm9ybWF0cy4KCS0gRml4IHNvbWUgZHJhd2luZyBpc3N1ZXMgd2l0aCBDT01CT0VYX0RyYXdJdGVtLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgdGVzdCBzbyAweGZmZmZmZmZmIGlzIHByb3Blcmx5IHJlY29nbml6ZWQuCgoyMDAxLTA2LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZWRlZmF1bHQucmVnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIFJlZ2lzdGVyZWRPd25lciBhbmQgUmVnaXN0ZXJlZE9yZ2FuaXphdGlvbi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIHByb2Nlc3Mgc2VjdXJpdHkgdG9rZW5zLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIG1pc2MvY3B1LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldFN5c3RlbUluZm8oKSBQZW50aXVtIDQgc3VwcG9ydC4KCgkqIHNlcnZlci9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmVtb3ZlIHRydW5jYXRlIGRlYnVnIG1lc3NhZ2UgcHJpbnRlZCBvbiBzdWNjZXNzZnVsIHRydW5jYXRlcy4KCgkqIGluY2x1ZGUvZGRlLmgsIGluY2x1ZGUvZGRlbWwuaCwgZGxscy91c2VyL2RkZS9jbGllbnQuYywKCSAgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9kZGVtbDE2LmgsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWVyZ2UgZnJvbSBDb3JlbCB0cmVlLiBDb250cmlidXRvcnMgYXJlOgoJLSBDb3JlbCAoU2VhbiBMYW5nbGV5LCBNaWNoYWVsIEFiZC1FbC1NYWxlaywgUmljayBNdXR6a2UsIEJpbGwgWGluZykKCS0gTWFjYWRhbWlhbiBvbiBiZWhhbGYgb2YgQ29yZWwgKExvdWlzLVBoaWxpcHBlIEdhZ25vbiwgSmVhbi1DbGF1ZGUgQmF0aXN0YSkKCUFsc28gYWRkZWQgYSBmZXcgYml0czoKCS0gQ29tcGxldGUgd2luZG93IG1vZGVsIGZvciBzZXZlcmFsIGluc3RhbmNlcyBhbmQgY29udmVyc2F0aW9ucy4KCS0gU3VwcG9ydCBmb3IgYXN5bmNocm9ub3VzIHRyYW5zYWN0aW9ucy4KCS0gRml4ZWQgc29tZSBjb2RlIChXTV9EREVfUkVRVUVTVCwgV01fRERFX0FEVklTRSwgV01fRERFX1JFUVVFU1QpIGhhbmRsaW5nLgoJLSBTdXBwb3J0IGZvciB3aWxkIGNvbm5lY3Rpb25zLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglEb24ndCByZWx5IG9uIFggdG8gZXhwb3NlIHdpbmRvd3MgY292ZXJlZCBieSBhIHNpYmxpbmcsIGRvIGl0CgltYW51YWxseS4KCjIwMDEtMDYtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy94MTFkcnYvbW91c2UuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFrZSBHZXRDdXJzb3JQb3MgY2FsbCBYUXVlcnlQb2ludGVyLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3RocmVhZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglFeHRlbmRlZCBfX3dpbmVfZW50ZXJfdm04NiB0byBoYW5kbGUgcGVuZGluZyBpbnRlcnJ1cHRzLgoKMjAwMS0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5wb3MuaCwgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUF2b2lkIHJldHVybmluZyBhbiB1bmxvY2tlZCB3aW5kb3cgcG9pbnRlciBmcm9tIFdJTlBPU19XaW5kb3dGcm9tUG9pbnQuCglSZW1vdmVkIGEgZmV3IG5vIGxvbmdlciB1c2VkIHJvdXRpbmVzLgoKCSogbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxMi5jLAoJICBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMC5jLAoJICBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQyZi5jLAoJICBtc2Rvcy9pbnQzZC5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsCgkgIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9yZWdpb24uYywKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIG1lbW9yeS9jb2RlcGFnZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtaXNjL29wdGlvbnMuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3N0cmluZy5jLAoJICBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBjb250cm9scy9tZW51LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW4uaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgcXVldWUgcGFpbnQgY291bnQgdG8gdGhlIHNlcnZlci4gUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZAoJcm91dGluZXMuCgoJKiBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2lubW0uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CgktIEZpeCB1bmluaXRpYWxpc2VkIHZhcmlhYmxlIHByb2JsZW0gaW4gRElSIGNvbW1hbmQuCgktIENvcnJlY3Qgc29tZSBjb21tZW50cy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJQ2xpcCBwYXJlbnQgY2xpZW50IGFyZWEgd2hlbiB1c2luZyB0aGUgZHJhd2FibGUgZnJvbSBhIGhpZ2hlciBsZXZlbAoJcGFyZW50LgoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmM6IEZpeGVkIHJlZ2lvbiBsZWFrLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmM6CglTdWJ0cmFjdCBEQyBvcmlnaW4gZnJvbSBncmFwaGljcyBleHBvc3VyZSBldmVudCBjb29yZGluYXRlcy4KCjIwMDEtMDYtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgaW5jbHVkZS9xdWV1ZS5oLAoJICBpbmNsdWRlL3NlcnZlci5oOgoJTW92ZWQgaGFyZHdhcmUgbWVzc2FnZSBxdWV1ZSBoYW5kbGluZyB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL3JlcXVlc3QuYzoKCUlnbm9yZSBFQUdBSU4gZXJyb3JzIGluIHJlYWRfcmVxdWVzdC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsCgkgIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvd2luMzJzMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9zb3VuZDE2LmMsIGRsbHMvd2lubW0vdGltZS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL2hhc2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXByL2F1dGguYywKCSAgZGxscy9tcHIvbXVsdGluZXQuYywgZGxscy9tcHIvbnBzLmMsIGRsbHMvbXByL3B3Y2FjaGUuYywKCSAgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZhaWxzIG1hcHBlciBvcGVuaW5nIHdoZW4gbm8gbWlkaSBvdXQgZGV2aWNlcyBhcmUgcHJlc2VudC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIGluIG91dHB1dCBmdW5jdGlvbnMgKGFzY2VuZCwgY3JlYXRlQ2h1bmspLgoJQ2xlYW5lZCB1cCB0cmFjZSBtZXNzYWdlcy4KCUZpeGVkIHNvbWUgbW1pb09wZW4gZmlsZSBuYW1lIHBhcnNpbmcuCgoJKiBpbmNsdWRlL3VybG1vbi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCU0NGIGVudW0gZGVmaW5lcyBmbGFncywgbm90IGFuIGVudW1lcmF0aW9uLgoKCSogbXNkb3MvdmdhLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgRE9TIFZHQSBkaXNwbGF5IGFnYWluIHdpdGggbGFzdCBtb250aHMgRERSQVcgdXBkYXRlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTeXN0ZW0gZm9udCB0byB0aGUgc2V0IG9mIGRlZmF1bHQgc2FucyBzZXJpZiBmb250cy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRml4ZWQgb25lIG1vcmUgYnVnIGluIGNsaXBfY2hpbGRyZW4uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCwgY2xlYW5lZCB1cCBhbmQvb3IgZG9jdW1lbnRhdGVkIF97YmVnaW4sZW5kfXRocmVhZHssZXh9LgoJLSBfbGZpbmQgYW5kIF9sdG93IGFyZSBpbXBsZW1lbnRlZCAobm90IHN0dWJzKS4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGltcGxlbWVudGF0aW9uIG9mIF91bHRvdyBzaW5jZSBpdCBpcyBmb3J3YXJkZWQgdG8gTlRETEwgaW4gdGhlCgkuc3BlYyBmaWxlLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgR2V0Q29tbUNvbmZpZyBudW1iZXIgb2YgYXJndW1lbnRzLgoKCSogTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJd2luZSBuZWVkcyB0byBiZSBidWlsdCBiZWZvcmUgd2luZWRiZy4KCgkqIGlmMTYzMi9yZWxheS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svcHJlcHJvY2Vzc29yLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpZmlsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3czMnNrcm5sLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dvdzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFNsaWdodGx5IGJldHRlciBoYW5kbGluZyBvZiBleHRlcm5hbC9pbnRlcm5hbCBuYW1lcy4KCS0gTWlub3IgYnVnIGZpeGVzLgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIFBST0ZJTEVfIGZ1bmN0aW9ucyBieSBSZWdRdWVyeVZhbHVlRXhBIGluIHgxMWRydi4KCgkqIHNlcnZlci9maWxlLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJU2V0RmlsZVBvaW50ZXIgY29ycmVjdGlvbjsgcmV0dXJuIEVSUk9SX05FR0FUSVZFX1NFRUsgKGJyb2tlbiBieSB0aGUKCTY0IGJpdCBmaWxlIGFjY2VzcyBlbmhhbmNlbWVudCkuCgoJKiBjb25maWd1cmUuaW4sIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlnLnN1YiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBhdXRvY29uZiAyLjUwLgoKMjAwMS0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJY2xpcF9jaGlsZHJlbjogZG9uJ3QgY3Jhc2ggaWYgY2hpbGQgaXMgbm90IGluIGxpc3QgKGNhbiBoYXBwZW4gb24KCVdNX05DQ1JFQVRFKS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCVVzZSBjbG9uZSgpIGlmIEhBVkVfQ0xPTkUgaXMgZGVmaW5lZC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQmxvY2sgU0lHSU5UIGFuZCBTSUdBTFJNIGluIHNpZ25hbCBoYW5kbGVycy4KCjIwMDEtMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgZGlyZWN0IHN5c3RlbSBjYWxsIGZvciB1bmFsaWduZWQgbW1hcCBzdXBwb3J0IG9uIExpbnV4LgoJU3VwcG9ydCA2NC1iaXQgZmlsZSBvZmZzZXRzIGluIE1hcFZpZXdPZkZpbGVFeC4KCgkqIG9sZS9vbGUybmxzLmMsIG1pc2MvbHN0ci5jLCBtaXNjL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbHN0ci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgSXNDaGFyQWxwaGFBIGFuZCBJc0NoYXJBbHBoYU51bWVyaWNBIHRvIHVzZXIzMi4KCUJldHRlciBpbXBsZW1lbnQgc29tZSBvZiB1c2VyMzIgKkNoYXIqIGZ1bmN0aW9ucyByZWdhcmRpbmcgbG9jYWxlLgoJUmVtb3ZlIGtlcm5lbDMyIGRlcGVuZGVuY3kgb24gdXNlcjMyLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglTdHViIGZvciBJbnRlcm5ldEdldENvb2tpZUEuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIG1vcmUgUFJPRklMRV8gZnVuY3Rpb25zIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBvYmplY3RzL2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNdWx0aXBsZSAqcHRyKysgY29uc3RydWN0cyBpbiBvbmUgZXhwcmVzc2lvbiBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvdXIsCgltb3ZlZCB0aGVtIG91dCBvZiB0aGUgZXhwcmVzc2lvbi4KCjIwMDEtMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9kZXZpY2UuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsCgkgIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCB3aW4zMi9jb25zb2xlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9hdG9tLmMsCgkgIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtaXNjL2xzdHIuYywKCSAgbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy92ZXJzaW9uLmMsIG9sZS9vbGUybmxzLmMsCgkgIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGZpbGVzL3RhcGUuYywKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIGxvYWRlci90YXNrLmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL3N0cmluZy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9rZXJuZWwvdXR0aHVuay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMgKHVzaW5nIHdpbmFwaV9maXh1cCkuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVVzZSB0aGUgdG9wbW9zdCBwYXJlbnQgdGhhdCBpc24ndCBjbGlwcGluZyBjaGlsZHJlbiBhcyBkcmF3YWJsZSwKCXRvIG1ha2Ugc3VyZSBwYXJlbnQgc2libGluZ3MgYXJlIG5vdCBjbGlwcGVkLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgQ2hvb3NlRm9udFcgdXNlIENob29zZUZvbnRBLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUZvcmNlIGludmFsaWRhdGluZyBvZiBzaWJsaW5ncyBjaGlsZHJlbiBvbiBleHBvc2UgZXZlbnQuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3NldHVwLnBtLAoJICB0b29scy93aW5hcGkvdXRpbC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE5ldyBjb21tb24gY29kZSBmb3IgdGhlIHdpbmFwaSB0b29scy4KCS0gTmV3IHRvb2wgZm9yIGV4dHJhY3Rpbmcgc291cmNlIGNvZGUgaW5mb3JtYXRpb24uCgktIE5ldyB0b29sIGZvciBhdXRvbWF0aWNhbGx5IG1vZGlmeWluZyAoZml4aW5nKSB0aGUgc291cmNlIGNvZGUuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgUFJPRklMRV9HZXRXaW5lSW5pU3RyaW5nIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL3dpbmVycm9yLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGRlZmluaXRpb25zIGZvciBJS3NQcm9wZXJ0eVNldCwgc21hbGwgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IKCUlEaXJlY3RTb3VuZDNEQnVmZmVyLiBGaXhlZCBvbmUgcG9pbnRlciByZWZlcmVuY2UuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX3R6c2V0IGp1c3QgZm9yd2FyZHMgdG8gbGliYyB0enNldCgpLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IGFnYWluc3QgYSBkcml2ZXIgbWlzY29uZmlndXJhdGlvbi4KCjIwMDEtMDYtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIHplcm8tc2l6ZWQgY2xpZW50IHdpbmRvdy4KCUNyZWF0ZSB0aGUgWCB3aW5kb3dzIGJlZm9yZSBzZW5kaW5nIFdNX05DQ1JFQVRFLgoKMjAwMS0wNi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBZGRlZCBjb3VudGVyIGZvciBvcGVyYXRpb25zIGdlbmVyYXRpbmcgZ3JhcGhpY3MgZXhwb3N1cmVzIHRvIHRoZSBEQwoJc3RydWN0LCB0byBhdm9pZCB3YWl0aW5nIGZvciBleHBvc2UgZXZlbnRzIHdoZW4gbm9uZSB3ZXJlIGdlbmVyYXRlZC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBncmFwaGljcy9kcml2ZXIuYywgbWlzYy9jcHUuYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy9nbHUzMi9nbHUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMgKHVzaW5nIHdpbmFwaV9maXh1cCkuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBXYXJuaW5nIGZpeC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2F2aWZpbGUuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpZmlsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2x1MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWlkaW1hcC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3duYXNwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsaWFzIGFuZCBEZXZpY2UgVHlwZSBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGNvcnJlY3QgcmViYXIgd2luZG93IGJvcmRlcnMgYW5kIGhhbmRsaW5nIG9mIFJCU19CT1JERVJTLCBub3cKCSAgbWF0Y2hlcyBuYXRpdmUuCgktIG1ham9yIHJlZGVzaWduIG9mIGJhbmQgbGF5b3V0LCBub3cgY29tZXMgYSBsb3QgY2xvc2VyIHRvIG5hdGl2ZSBmb3IKCSAgdGhlIHRlc3QgcHJvZ3JhbXMuCgktIHN1cHBvcnQgUkJTX1ZBUkhFSUdIVCBmb3IgYm90aCBvbiBhbmQgb2ZmLgoJLSBiZXR0ZXIgZGVidWcgaW5mbywgYW5kIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50CgoyMDAxLTA2LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglCb2IgR29vZHdpbiA8Z29vZGllMUBwYWNiZWxsLm5ldD4KCU1hc2sgb3V0IGdhcmJhZ2UgaW4gdGhlIHVwcGVyIGhhbGYgb2Ygc3RhY2sgcG9pbnRlci4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL3VzZXIvdGV4dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTGltaXQgb3V0cHV0IGZvciBjZXJ0YWluIHRleHQgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgY2hlY2sgZm9yIGJyb2tlbiBtbWFwNjQuCgoJKiBkbGxzL21ha2VfZGxsczoKCUFkZGVkIHNjcmlwdCB0byB1cGRhdGUgZGxscyBkZXBlbmRlbmNpZXMuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9nbHUzMi9NYWtlZmlsZS5pbiwgZGxscy9nbHUzMi9nbHUuYywgZGxscy9nbHUzMi9nbHUzMi5zcGVjLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBnbHUzMi5kbGwgYXMgbGliR0xVLnNvIGZvcndhcmRlci4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJUmVtb3ZlZCBXSU5fTkFUSVZFIGZsYWcuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVTEFSR0VfSU5URUdFUiBtYXkgaGF2ZSBhIGR1bW15IHN0cnVjdCBuYW1lLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBncmFkZSBPcGVuR0wgdGh1bmtzIHdpdGggbGF0ZXN0IGluZm9ybWF0aW9ucyBmcm9tIE9wZW5HTCBzcGVjIGZpbGUuCgoyMDAxLTA2LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3Rhc2suYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYzoKCVJlbW92ZWQgdW5uZWVkZWQgaW5jbHVzaW9uIG9mIHF1ZXVlLmguCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglTdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHN0YWNrIHNpemUgb2YgV2luZWxpYiBhcHBzLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9jb21lbnRyeS5jLAoJICBkbGxzL2F2aWZpbDMyL2lhZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2lhc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWdmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL21haW4uYywKCSAgZGxscy9hdmlmaWwzMi9zdHJpbmcuYywgaW5jbHVkZS92ZncuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBzb21lIHBhcnQgb2YgQVZJRklMMzIuCgoJKiB0b29scy93aW5lY29uZjoKCURvbm4gTWlsbGVyIDxkbW1pbGxlckBjdnpvb20ubmV0PgoJQ2FzZSBpbnNlbnNpdGl2ZSBzZWFyY2ggZm9yIHdpbi5pbmkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgR2V0UXVldWVkQ29tcGxldGlvblN0YXR1cy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4ZXMgdG8gRnJlbmNoIHRyYW5zbGF0aW9uIG9mIGNvbW1vbiBkaWFsb2cgbWVzc2FnZXMuCgoyMDAxLTA2LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvdWl0b29scy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIHRoZSBvdXRlciBjb2xvciBvZiBhIHB1c2ggYnV0dG9uIGZyYW1lIGZyb20gZ3JheSB0byB3aGl0ZSwKCW1hdGNoaW5nIHRoZSBXaW5kb3dzIGxvb2s7IG1vZGlmaWVkIHRoZSBwYWludCByb3V0aW5lIGZvciB0aGUKCWNsb3NlIGJ1dHRvbiBvZiBhIHRvb2wgd2luZG93IHRvIGltcHJvdmUgc2NhbGFiaWxpdHkuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsCgkgIHdpbmRvd3Mvd2luLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglVc2UgYSBmbGFnIHRvIHRlc3QgaWYgY3JlYXRlIHN0cnVjdHVyZSBpcyB1bmljb2RlLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCVJlcGxhY2UgIkxpbnV4IGRsbCIgd2l0aCAiR05VIHN0eWxlIEVMRiBkbGwiLgoJUmVtb3ZlIHN1cHBvcnQgZm9yIE5ldEJTRCBhLm91dCBkbGwuCgoJKiBCVUdTLCBpbmNsdWRlL3dpbm50LmgsIG9iamVjdHMvcmVnaW9uLmMsCgkgIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgd2luMzIvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlbW92ZSB1bm5lZWRlZCBXSU5BUEkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVzZSBhdXRvY29uZiBjaGVja3MgdG8gY2hlY2sgZm9yIHZhcmlvdXMgRnJlZVR5cGUgaGVhZGVycy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3ByZXByb2MuYywgdG9vbHMvd3JjL3BhcnNlci5oLAoJICB0b29scy93cmMvcGFyc2VyLmw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdyYyBubyBsb25nZXIgbmVlZHMgdG8gcGFyc2UgQyBjb2RlLiBSZW1vdmUgYy1qdW5rIGhhbmRsaW5nIGNvZGUuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBlbm91Z2ggYnVmZmVyIHNwYWNlIGluIFBST0ZJTEVfR2V0U2VjdGlvbigpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgcGFnZSBza2lwcGluZyBvbiBQU05fU0VUQUNUSVZFIC0xIHJldHVybi4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglTZXQgbG93LW9yZGVyIGJpdCBvZiBtb2R1bGUgaGFuZGxlIGZvciBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUuCglDbGVhbmVkIHVwIGEgZmV3IEhNT0RVTEUvSE1PRFVMRTE2IG1pc21hdGNoZXMuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGRPYmwuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLCBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVcGRhdGVkIGJ1aWx0LWluIG1ldHJpY3MgZm9yIGNvcmUgUG9zdFNjcmlwdCBmb250cy4KCgkqIGluY2x1ZGUvZ2RpLmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglGaXhlZCB0eXBvIGluIElOVEVSTkFMX1lXU1RPRFMuCgoJKiBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlZCBpbmNvcnJlY3Qgc3RyaW5nIGxlbmd0aCBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvd2lucG9zLmM6CglCb2JieSBCaW5naGFtIDx1aG1tbW1AYW1lcml0ZWNoLm5ldD4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgQW5pbWF0ZVdpbmRvdygpLgoKCSogaW5jbHVkZS93bmFzcGkzMi5oLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgQVNQSSBmaXhlcywgU0NfR0VUX0RJU0tfSU5GTyBzdHViYmVkLCBidXQgcmV0dXJuaW5nIHN1Y2VzcywgQVNQSQoJYnVmZmVyIGFsbG9jYXRpb24vZnJlZSBpbXBsZW1lbnRlZC4KCjIwMDEtMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQ3JlYXRlIGFuIFggd2luZG93IGZvciBldmVyeSB3aW5kb3csIGluY2x1ZGluZyBjaGlsZHJlbi4KCUZpeGVkIG5vbi1jbGllbnQgcmVjdGFuZ2xlIGNhbGN1bGF0aW9ucyBpbiBtYW5hZ2VkIG1vZGUuCglBZGRlZCBzdXBwb3J0IGZvciBpY29uIHdpbmRvdyBpbiBtYW5hZ2VkIG1vZGUuCgoJKiB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueToKCU1hY2llayBLYWxpc3pld3NraSA8a2Vub25AZ28yLnBsPgoJQWRkZWQgc3VwcG9ydCBmb3IgUkNJTkNMVURFIGRpcmVjdGl2ZS4gTm93IHdyYyBpZ25vcmVzIGV2ZXJ5dGhpbmcKCWV4Y2VwdCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBmcm9tIGluY2x1ZGVkICouaCAqLmMgZmlsZXMuCgoJKiB0b29scy93cmMvcHB5Lnk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgY29udmVyc2lvbiBvZiBNUyBzdHlsZSAnI2xpbmUnIGRpcmVjdGl2ZXMgdG8gZ2NjIHN0eWxlLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLAoJICBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCS0gUmVwb3J0IGZpbGUgYW5kIGRpcmVjdG9yeSBzaXplcyB1c2luZyA2NC1iaXQgYXJpdGhtZXRpYyAobGlrZSBOVCkuCgktIEhhbmRsZSBwaXBlcyBpbiBjb21tYW5kcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJTlNUQUxMX0xJQlJBUlkgZG9lcyBub3QgZXhpc3QsIHVzZSBJTlNUQUxMX1BST0dSQU0uIEZpeCBoYW5kbGluZyBvZgoJdGhlIElOU1RBTEwqIHZhcmlhYmxlcy4KCVdpbmVsaWIgYXBwbGljYXRpb25zIGRvbid0IG5lZWQgdG8gbGluayB3aXRoIFgsIGkzODYsIG9zc2F1ZGlvLCB4cGc0LAoJbW1hcCwgdXRpbCwgZGwgb3IgY3Vyc2VzLiBPbmx5IHdpbmUgZG9lcyAobm9ybWFsbHkpLgoJUmVtb3ZlIFlBQ0MgJiBMRVggdmFyaWFibGVzIChNYWtlLnJ1bGVzLmluKS4KCVdpbmVtYWtlcidzIG1ha2VmaWxlcyBkb24ndCB1c2UgbGRjb25maWcuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBvcHRpbWl6YXRpb24gaW4gTkNfSGFuZGxlTkNBY3RpdmF0ZS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRGlzcGxheSBleHRyYSBkYXRhIGZvciBXTV9OT1RJRlkgdGhhdCB1c2UgTk1DT01CT0VYe0F8V30uCgoyMDAxLTA1LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJRGlzYWJsZSB0aGUgZWRpdCBib3ggd2hlbiBjcmVhdGVkIHdpdGggV1NfRElTQUJMRUQuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBpbmNsdWRlL3VybG1vbi5oOgoJTWFsdGUgU3Rhcm9zdGlrIDxNYWx0ZS5TdGFyb3N0aWtAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnRlZCBzb21lIHZlcnkgYmFzaWMgZnVuY3Rpb25hbGl0eS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpc3QgMTYtYml0IHJlc291cmNlcyBzZXBhcmF0ZWx5IGFzIFJDX1NSQ1MxNi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUlmIHlvdSBoYXZlIGZyZWV0eXBlMSBhbmQgZnJlZXR5cGUyIGNvZXhpc3RpbmcsIGZyZWV0eXBlLWNvbmZpZyBzaG91bGQKCWJlIGZyZWV0eXBlMi1jb25maWcuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUZpeGVkIGZvbnQgbWV0cmljIHJvdW5kaW5nIGVycm9yLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRPT0xCQVJfSW5zZXJ0QnV0dG9uQTogSWYgaVN0cmluZz09LTEgdGhlbiBkb24ndCB1c2UgaXQgYXMgYSBwb2ludGVyLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglmY2xvc2Ugc2hvdWxkIHJldHVybiBFT0YgKC0xKSBpZiBhbiBlcnJvciBjb25kaXRpb24gZXhpc3RzLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDYWxsIEZyZWVFbnZpcm9ubWVudFN0cmluZ3Mgd2hlbiBtc3ZjcnQgaXMgdW5sb2FkZWQuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvbXN2Y3J0L2VoLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbXN2Y3J0L2VoLmguCglJbXBsZW1lbnRlZCB1bmV4cGVjdGVkLCB0ZXJtaW5hdGUgYW5kIHNldF91bmV4cGVjdGVkL3Rlcm1pbmF0ZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFZhclh4eEZyb21DeSBjb252ZXJzaW9ucy4KCVJlbW92ZSAoY29tbWVudGVkLW91dCkgcmVmZXJlbmNlcyB0byBpbmV4aXN0ZW50IFZhclh4eEZyb20zMiBmdW5jdGlvbnMuCglSZW1vdmUgb2Jzb2xldGUgJzMyJyBzdWZmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJSmFzb24gTWNNdWxsYW4gPGptY211bGxhbkBsaW51eGNhcmUuY29tPgoJTW9yZSBhY2N1cmF0ZSBzdHViIG9mIEREUkFXOkdldEZvdXJDQ0NvZGVzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglCb2JieSBCaW5naGFtIDx1aG1tbW1AYW1lcml0ZWNoLm5ldD4KCUZpeGVkIHNjcm9sbGJhcnMgcmV0dXJuIHZhbHVlIHRvIHRoZSBTQk1fU0VUUkFOR0UgYW5kCglTQk1fU0VUUkFOR0VSRURSQVcgbWVzc2FnZXMuCgoyMDAxLTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYywKCSAgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9hZm0yYy5jLAoJICBkbGxzL3dpbmVwcy9hZ2wuYywgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGRPYmwuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL21rYWdsLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJQnVpbGQgQUZNIGRhdGEgZm9yIGNvcmUgUG9zdFNjcmlwdCBmb250cyBpbnRvIFdJTkVQUy4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicmFyeS9wb3J0LmMsIHNlcnZlci9maWxlLmMsIHdpbjMyL2ZpbGUuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW4sIGZpbGVzL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBhbnkgZmlsZTY0IGZ1bmN0aW9ucywgdHJ5IHRvIHVzZSBzeXN0ZW0gc3VwcGxpZWQgNjQtYml0IG1vZGUgYnkKCXVzaW5nIHByb3BlciBkZWZpbmVzLgoKCSogb2xlL29sZTJubHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gcmVhZGluZyByZXNvdXJjZXMgaW4gTkxTX0xvYWRTdHJpbmdFeFcgd2Ugc2hvdWxkIG1hcAoJU1VCTEFOR19ORVVUUkFMIHRvIFNVQkxBTkdfREVGQVVMVC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQXR0ZW1wdCB0byB3cml0ZSBmcmFnbWVudHMgYW5kIGNoZWNrIHdoZXRoZXIgd2UgY2FuIG5vdGlmeSB0aGUgY2xpZW50CglhZnRlciBldmVyeSBtZXNzYWdlLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgaW5jbHVkZS9zaGx3YXBpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpcnN0IHRyeSBhdCBpbXBsZW1lbnRpbmcgUGF0aEdldENoYXJUeXBlKCkuCgoJKiB0b29scy93cmMvcHB5Lnk6CglNYWNpZWsgS2FsaXN6ZXdza2kgPGtlbm9uQGdvMi5wbD4KCUFkZGVkIGJldHRlciBHQ0Mtc3R5bGUgI2xpbmUgZGlyZWN0aXZlIGhhbmRsaW5nLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWNvbmZpZ3VyZS5pbjogUmVtb3ZlIHVubmVjZXNzYXJ5IEFDX1BST0dfUkFOTElCIGNoZWNrCglNYWtlLnJ1bGVzLmluOiBBZGQgbWlzc2luZyBDWFggdmFyaWFibGUKCUNvc21ldGljIGNoYW5nZXMKCgkqIGxpYnJhcnkvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTGluayBsaWJ3aW5lLnNvIHdpdGggJChMSUJTKS4KCgkqIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVc2UgbWFjcm9zIGZvciBGcmVlVHlwZSBpbmNsdWRlcy4KCjIwMDEtMDUtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QganVzdCBhc3N1bWUgZXZlcnl0aGluZyBpcyBhIERvcyBEZXZpY2UsIG9yIG1pcmMgd2lsbCBub3QgZ2V0IGFueQoJRENDIHNlbmRzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSW1wbGVtZW50ZWQgRFRNX0dFVC9TRVRSQU5HRS4KCjIwMDEtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3RyaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGtlcm5lbDMyIGRlcGVuZGVuY3kgb24gdXNlcjMyIGJ5IGltcGxlbWVudGluZyBmYW1pbHkgb2YgazMyCglmdW5jdGlvbnMgYXMgY2FsbG91dHMgdG8gdXNlcjMyLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYW4gdW5rbm93biBWeEQgZXJyb3IgY29kZS4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbjoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVVwZGF0ZWQgR2VybWFuIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vdGltZS5jLCBsb2FkZXIvdGFzay5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldCByaWQgb2YgR2V0Q3VycmVudFRpbWUxNigpLgoKCSogaW5jbHVkZS9zbm9vcC5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL3Nub29wLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHNub29wIGNvZGUgdGFrZSBvcmRpbmFsIGJhc2UgaW50byBhY2NvdW50LgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIEJ1aWxkQ29tbURDQjE2KCkgdXNlcyBpbnQgaW5zdGVhZCBvZiBCT09MCgktIE9wZW5Db21tMTYoKSBzaG91bGQgcmV0dXJuIElFX0JBRElEIGZvciAqYWxsKiBpbnZhbGlkIHN0cmluZ3MKCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3NobHdhcGkvdXJsLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGFkZCBzdHVicyBTSExXQVBJXzI5NCwgVXJsQXBwbHlTY2hlbWVXCgktIGNvcnJlY3QgU0hMV0FQSV8xNTEgcGFyYW1ldGVycwoJLSBpbXBsZW1lbnRlZCBTdHJUcmltQQoKCSogZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVmNwUXVldWVEZWxldGUoKSBkb2VzIG5vdCBoYXZlIGEgTFBFWFBBTkRWVEJMIHBhcmFtZXRlci4KCgkqIHdpbjMyL2RldmljZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGFkZCBoYW5kbGVyIGZvciBWQ0QgVnhEICgidmlydHVhbCBjb21tIGRldmljZSIgPykKCS0gU2V0TGFzdEVycm9yKCBFUlJPUl9JTlZBTElEX0ZVTkNUSU9OICk7IGZvciB1bmltcGxlbWVudGVkIGZ1bmN0aW9ucwoJLSBzcGVsbGluZyBmaXhlcwoKCSogZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUFkZGVkIEF2Z0NoYXJXaWR0aCBtZW1iZXIgdG8gZm9udCBtZXRyaWNzLgoKCSogZGxscy93aW5lcHMvYWdsLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVcGRhdGVkIFBvc3RTY3JpcHQgZ2x5cGggbmFtZSBkYXRhLgoKCSogbWlzYy92ZXJzaW9uLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCU9ubHkgZmFpbCB3aXRoIEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIgaWYgdGhlIHN0cnVjdHVyZSBzaXplIGlzCglhY3R1YWxseSB0b28gc21hbGwuCgoyMDAxLTA1LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIGlzc3Vlcy4KCgkqIGluY2x1ZGUvd2lucG9zLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTWFrZSBXSU5fV2luZG93RnJvbVBvaW50IHRha2UgYSBQT0lOVCBpbnN0ZWFkIG9mIGEgUE9JTlQxNi4KCVNtYWxsIGJ1ZyBmaXggaW4gc2NvcGUgd2luZG93IGhhbmRsaW5nLgoJQWx3YXlzIGNoZWNrIGZvciBtZXNzYWdlIHdoZW4gUVNfU0VORE1FU1NBR0UgaXMgc2V0LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYSwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIG11bHRpbWVkaWEgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsCgkgIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9tc2FjbS93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1pbWljIG1vcmUgY2xvc2VseSBXaW5kb3dzJyBiZWhhdmlvciAoYSBNU0FDTSBkcml2ZXIgaXMgYWx3YXlzIG9wZW5lZAoJdHdpY2U6IGZpcnN0IHRpbWUgZm9yIGluZm8gZ2F0aGVyaW5nLCBzdWJzZXF1ZW50IG9wZW5pbmdzIGZvcgoJY29udmVyc2lvbnMpLgoJQWRkZWQgZm9ybWF0IHN1Z2dlc3Rpb24gZm9yIFBDTS4KCUNsZWFuZWQgdXAgaW50ZXJuYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLCB3aW5lZGVmYXVsdC5yZWc6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgbWlkaSBtYXBwZXIgbW9yZSByb2J1c3QuCglBZGRlZCBjaGFubmVsIHRvIGRldmljZS9jaGFubmVsIG1hcHBpbmcuCglSZW1vdmVkIG1pZGlJbiBtYXBwaW5nIChpdCBkb2Vzbid0IGV4aXN0IG9uIFdpbmRvd3MpLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgbG9hZGluZyB0aGUgZGVmYXVsdCBzZXR0aW5nIGZvciBsb3cgbGV2ZWwgZHJpdmVycyBmcm9tIHJlZ2lzdHJ5LgoKCSogbWlzYy9jZHJvbS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBtZW1zZXQgcmF0aGVyIHRoYW4gYnplcm8uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJTWlrZSBCb25kIDxtYm9uZEBjb3gucnIuY29tPgoJRml4ZWQgc3Bhd25scCBhbmQgYWRkZWQgZXhlYyB2YXJpYW50cy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBjbGVhbiB1cC4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgZGxsIHNlcGFyYXRpb24gaXNzdWVzLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDb3JyZWN0bHkgZ2VuZXJhdGUgdGhlIGVudmlyb25tZW50IGdsb2JhbCB2YXJpYWJsZXMuCgoyMDAxLTA1LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglUYWtlIG1lc3NhZ2UgZmlsdGVycyBpbnRvIGFjY291bnQgZm9yIFdNX1BBSU5UIHRvby4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywKCSAgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgbm90aW9uIG9mIGRlbGF5ZWQgYnJlYWtwb2ludCAod2hlbiBhIGZ1bmN0aW9uIGlzIG5vdCBsb2FkZWQKCXlldCwgdGhlIG5hbWUgd2lsbCBiZSB0cmllZCBhZ2FpbiBmb3IgZWFjaCBuZXcgbG9hZGVkIG1vZHVsZSkuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBGcmVuY2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb3BlbiByZXF1ZXN0cyBpbiBjYXNlIG9mIGVycm9yIChpZiB0aGUgcGh5c2ljYWwgZGV2aWNlIGZhaWxlZCB0bwoJb3BlbiwgdGhlIEFDTSBzdHJlYW0gd2FzIGxlZnQgb3BlbmVkKS4KCUFkZGVkIG1hcHBpbmcgc2VhcmNoIGZvciB3YXZlSW4gZGV2aWNlcy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIFNQSV9HRVRTQ1JFRU5SRUFERVIuCgoyMDAxLTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlcGx5X21lc3NhZ2Ugd2hlbiB0aGVyZSBpcyBubyByZWNlaXZlZCBtZXNzYWdlLgoKCSogd2luZG93cy90aW1lci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4ZWQgU2V0VGltZXIgZm9yIGh3bmQgPT0gMC4KCgkqIGRlYnVnZ2VyL2hhc2guYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWNjZXB0IHJlc3BvbnNlcyBmcm9tIDEuLm4gd2hlbiBjaG9vc2luZyBmcm9tIG11bHRpcGxlIHN5bWJvbHMgdG8KCW1hdGNoIHRoZSBpbnB1dCBsYWJlbHMuCgoyMDAxLTA1LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglGaXhlZCB0eXBvIGluIG1lc3NhZ2UgZmlsdGVyIGNoZWNrLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUmVtb3ZlZCBUSFJFQURfSXNXaW4xNi4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW51IGJlaGF2aW91ciB3aGVuIGVzY2FwZSBpcyBwcmVzc2VkLgoKCSogd2luMzIvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCURvIG5vdCByZXR1cm4gRkFMU0Ugb24gU2V0RmlsZUF0dHJpYnV0ZXMoKSBmYWlsdXJlIChpbiByZWFkb25seQoJZGlyZWN0b3J5IHNldHVwcykuCgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2VydmVyLmgsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIHRoZSBtYWpvciBwYXJ0IG9mIG1lc3NhZ2UgcXVldWUgYW5kIHdpbmRvdyB0aW1lciBoYW5kbGluZyBpbnRvCgl0aGUgc2VydmVyLgoJSW1wbGVtZW50ZWQgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4LgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcgdHlwb3MuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjb21waWxlIGlmIHdlIGRvIG5vdCBoYXZlIHRoZSB4Zjg2dmlkbW9kZSBleHRlbnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVGhlIHNoZWxsIHNwZWNpYWwgZm9sZGVyIHBhdGggY3JlYXRpb24gZGlkIG5vdCBta2RpciB0aGUgbGFzdAoJY29tcG9uZW50IG9mIHRoZSBwYXRoIGlmIGl0IGRpZCBub3QgZW5kIHdpdGggXC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgaW5jbHVkZS93aW5udC5oOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUVuaGFuY2VkIFNldFRocmVhZEV4ZWN1dGlvblN0YXRlIHN0dWIuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJTWlrZSBCb25kIDxtYm9uZEBjb3gucnIuY29tPgoJSW1wbGVtZW50YXRpb24gb2Ygc3Bhd25sIGFuZCBzcGF3bmxwLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBvbGRlciBjdXBzR2V0UHJpbnRlcnMoKSBBUEkgc28gd2Ugc3VwcG9ydCBDVVBTIDEuMC54IHRvbyAoYXMgZm91bmQKCWluIERlYmlhbiBQb3RhdG8pLgoJT25seSBzZXQgdGhlIGRlZmF1bHQgcHJpbnRlciBpZiB0aGVyZSBpcyBubyBlbnRyeSB5ZXQgb3IgaXQgaXMgbm90CglXSU5FUFMgZHJpdmVuLgoKCSogd2luZG93cy9pbnB1dC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglLZXlib2FyZCBldmVudHMgZGlkIG5vdCB1cGRhdGUgQXN5bmNLZXlTdGF0ZVRhYmxlLCBub3cgdGhleSBkby4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9pbW0zMi9pbW0uYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJTWFrZSBzdXJlIHdlIHNldCBkd09TVmVyc2lvbkluZm9TaXplIGJlZm9yZSBjYWxsaW5nIEdldFZlcnNpb25JbmZvKCkuCgoyMDAxLTA1LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZGdhMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZG9wdGVkIHRvIG5ldyB0aHJlYWRlZCBkaXNwbGF5cy4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlYWQgbWV0cmljcyBmcm9tIFRydWVUeXBlIGZvbnRzLgoKCSogd2luZG93cy9tZGkuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglPbmx5IG1lYXN1cmUgY2hpbGQgcmVjdGFuZ2xlcyBvZiB2aXNpYmxlIGNoaWxkcmVuIHdoZW4gZGVjaWRpbmcgYWJvdXQKCXNjcm9sbCBiYXJzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglEaXNhYmxlIC9ldGMvcHJpbnRjYXAgcGFyc2luZyBpZiBubyBQUEQgZmlsZSBzcGVjaWZpZWQuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUd1ZXNzdGltYXRlIFdpbmRvd3MgZm9udCBtZXRyaWNzIGZvciBUeXBlIDEgZm9udHMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywKCSAgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywKCSAgd2luZG93cy94MTFkcnYvd25kLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYzoKCUNyZWF0ZSBhbiBYIGNvbm5lY3Rpb24gZm9yIGVhY2ggdGhyZWFkLCBhbmQgcHJvY2VzcyBYIGV2ZW50cyBpbiB0aGUKCXRocmVhZCB0aGF0IGNyZWF0ZWQgdGhlIGNvcnJlc3BvbmRpbmcgWCB3aW5kb3cuCglTcGF3biBhIHNlcGFyYXRlIHRocmVhZCB0byBydW4gdGhlIGRlc2t0b3AgbWVzc2FnZSBsb29wIGluIGRlc2t0b3AKCW1vZGUuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYzoKCVdhcm5pbmdzIGZpeGVzLgoKMjAwMS0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywKCSAgbG9hZGVyL25lL3NlZ21lbnQuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MjEuYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc29jay5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCBkbGxzL3dpbmFzcGkvYXNwaS5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvYWNjb25maWcuaCwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9sb2FkZXIuYywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgNjRiaXQgZmlsZSBzaXplIGhhbmRsaW5nLgoJUmVtb3ZlZCBzZXZlcmFsIHVubmVlZGVkIHN5cy9zdGF0LmggaW5jbHVkZXMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6CglDbGVhciBvd25lciBvZiBzeXN0ZW0gbWVzc2FnZSBxdWV1ZSB0byBhdm9pZCBmcmVlaW5nIGl0IHdoZW4gdGhlIGZpcnN0Cgl0YXNrIGV4aXRzLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJQWRkIGNsb3NpbmcgdGFncy4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglEZWZpbmUgSEFWRV9TWVNfU09DS0VUX0ggb24gTmV0QlNEIGFuZCBGcmVlQlNELgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVGVzdCBpZiB0aGUgbWVudSBpcyBkZXN0cm95ZWQgYmVmb3JlIGRpc3BsYXlpbmcgYSBtZW51IGl0ZW0uCgoyMDAxLTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmM6CglDcmVhdGUgYSBuZXcgd2luZG93IGZvciB0aGUgdG9wIHBvcHVwIG1lbnUgb24gZXZlcnkgbmV3IG1lbnUgdHJhY2tpbmcsCglzbyB0aGF0IHRoZSB3aW5kb3cgYmVsb25ncyB0byB0aGUgcmlnaHQgdGhyZWFkLgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBmaWxlcy9kcml2ZS5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jLCBjb250cm9scy9saXN0Ym94LmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL21zdmNydC9kYXRhLmMsCgkgIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBzaW5nbGUgcXVvdGluZyBvZiBkZWJ1Z3N0cl94eHggc3RyaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhIHdhcm5pbmcgc2F5aW5nIHRoYXQgdGhlIHgxMWRydiBzZWN0aW9uIGlzIGdldHRpbmcgb3V0ZGF0ZWQuCglBZGQgdGVtcGxhdGVzIGZvciBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgeDExZHJ2IHNlY3Rpb24uCglSZW1vdmUgb2Jzb2xldGUgY29tbWFuZC1saW5lIG9wdGlvbnMuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHNvbWUgbW9yZSBvYnNvbGV0ZSAzMiBzdWZmaXhlcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRWxpbWluYXRlIF9fY29tcGFyX2ZuX3QuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFkcnYuaCwKCSAgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJUmVuYW1lZCBkaXNwbGF5IHRvIGdkaV9kaXNwbGF5IHdoZXJlIGl0IGlzIHVzZWQgZm9yIEdESSBvcGVyYXRpb25zLCB0bwoJYWxsb3cgc3VwcG9ydGluZyBtdWx0aXBsZSBYIGNvbm5lY3Rpb25zLgoKMjAwMS0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDUxMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgcmVwYXJlbnRpbmcgdG8gZGVza3RvcCAoZm91bmQgYnkgR2VyYXJkIFBhdGVsKS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVJlYWxseSBmcmVlIHRoZSBtZW1vcnkgb24gZGxsIHVubG9hZC4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJTW92ZWQgU2Nyb2xsV2luZG93RXggaW1wbGVtZW50YXRpb24gdG8gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzdGFydCBhcHBsaWNhdGlvbnMgaW4gdGhlIGJhY2tncm91bmQgdG8gYXZvaWQgYnJlYWtpbmcgY29uc29sZQoJYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIGRlY2xhcmF0aW9uIG9mIERFQ0lNQUwgaW4gVkFSSUFOVCBoYXBwZW5zIGluIHRoZSB3cm9uZyBwbGFjZS4KCUNvbW1lbnQgb3V0IGZvciBub3cuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgdGhlIHByaW50aW5nIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSBDVVBTIGFuZCBMUFIgc3VwcG9ydCwKCWFsc28gZ2l2ZSBzb21lIGhpbnRzIG9uIEFGTSBmaWxlcyBpbiBzeXN0ZW0gYW5kIGdlbmVyaWMucHBkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2dlbmVyaWMucHBkOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBhIGdlbmVyaWMgbGV2ZWwgMyBjb2xvciBwb3N0c2NyaXB0IFBQRCAoZm9yIC9ldGMvcHJpbnRjYXAgYmFzZWQKCXByaW50ZXJzKS4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgdmVyc2lvbiBlbnRyeSBmb3IgRGlyZWN0WCA3LjBhLgoKMjAwMS0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglSZW1vdmVkIFhTaG1Db21wbGV0aW9uIGV2ZW50IHN1cHBvcnQgKG5vIGxvbmdlciB1c2VkKS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLlBMLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54czoKCUdvdCByaWQgb2YgTWFrZU1ha2VyIHNvIHdlIGNhbiBidWlsZCBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUFsbG93IFdJTkVTRVJWRVIgdG8gc3BlY2lmeSBhIHJlbGF0aXZlIHBhdGguCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCU9uIE5ldEJTRCBpZl90eXBlIGlzIGRlZmluZWQgYXMgYSBtYWNybyBpbiAvdXNyL2luY2x1ZGUvbmV0L2lmLmguCglVbmRlZmluZSBpdCB0byBhdm9pZCBhIGNvbmZsaWN0LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglEbyBub3QgdXNlIGludGVybmFsIGV4Y2VwdGlvbiBjb2RlcyBkZWZpbmVkIGJ5IFdpbmUgd2l0aCBOZXRCU0QsCglyYXRoZXIgdXNlIG5hdGl2ZSBvbmVzIGZyb20gL3Vzci9pbmNsdWRlL2kzODYvdHJhcC5oLiBOb3RlIHRoYXQgVF9NQ0hLCglpcyBub3Qgc3VwcG9ydGVkIGJ5IE5ldEJTRC4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQWRkZWQgc3VwcG9ydCBmb3IgTmV0QlNELgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCB0aGUgSURpcmVjdERyYXdTdXJmYWNlNCBpbnRlcmZhY2UgZGVjbGFyYXRpb24gdG8gY29uZm9ybSBhIGJpdAoJbW9yZSB3aXRoIHRoZSBEaXJlY3RYIFNESyBoZWFkZXJzJyBpZGVhIG9mIHdoYXQgdGhlIGludGVyZmFjZSBsb29rcwoJbGlrZS4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgdGVzdHMgZm9yIHRoZSBmbGFnIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLCBhbmQgYWN0CglhY2NvcmRpbmdseS4KCgkqIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglVc2UgMzItYml0IGhvb2sgZnVuY3Rpb25zIHdoZXJlIHBvc3NpYmxlLiBDbGVhbmVkIHVwIGEgY291cGxlIG9mCgkxNi1iaXQgdHlwZSB1c2VzLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9zY3JvbGwuYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9pbnQxMC5jLAoJICBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywKCSAgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9pbW0zMi9pbWMuYywgZGxscy9pbW0zMi9pbWV3bmQuYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9pbW0zMi9tZW1vcnkuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCAnXG4nIGF0IHRoZSBlbmQgb2YgdHJhY2VzLgoKCSogaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJTW92ZWQgd2luZG93IG1vdmUvcmVzaXplIHN5c2NvbW1hbmQgaGFuZGxpbmcgdG8gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCU9ubHkgZHJhdyB0aGUgcGFkZGluZyBhcmVhIG9mIHRoZSBjb21ibyBib3gsIGRvbid0IGVyYXNlIHRoZSBjb21ibwoJc2VsZWN0aW9uIHRleHQuCgoJKiB0b29scy9zcGVjbWFrZXIvbXNtYW5nbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lZCAnb3BlcmF0b3JfY29tcGxpbWVudCcgdG8gJ29wZXJhdG9yX2NvbXBsZW1lbnQnLgoKCSogY29udHJvbHMvZWRpdC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglGaXhlZCBhIHBhaW50IHByb2JsZW0gcmVwb3J0ZWQgYnkgTWlrZSBNY0Nvcm1hY2suCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWdsLmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVW5pY29kZSBlbmNvZGluZ3MgZm9yIFBvc3RTY3JpcHQgZm9udHMuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCAvZXRjL3ByaW50Y2FwIGJhc2VkIHByaW50aW5nIHN1cHBvcnQuCglDaGFuZ2VkICdDVVBTOnByaW50ZXJuYW1lJyB0byAnTFBSOnByaW50ZXJuYW1lJy4KCVNvbWUgZml4ZXMgaW4gQWRkUHJpbnRlclcoKS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGQgbWlzc2luZyBuZXdsaW5lIHRvIFdBUk4gbWVzc2FnZXMuCgoyMDAxLTA1LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpZjE2MzIvcmVsYXkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJpbnQgdGhlIHRpZCBpbiB0aGUgZmlyc3QgY29sdW1uIHdoZW4gK3RpZCBpcyBzcGVjaWZpZWQuCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBTIHBhc3N0aHJvdWdoIHdhcyBzZW5kaW5nIDIgYnl0ZXMgdG9vIG1hbnkuCglBZGRlZCBHRVRTRVRQUklOVE9SSUVOVCBzdHViLgoJSW1wbGVtZW50ZWQgRVBTUFJJTlRJTkcgbW9kZSBjaGFuZ2VyLgoKMjAwMS0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBQU0RSVl9Fc2NhcGUoR0VUUEhZU1BBR0VTSVpFKSByZXR1cm4gcGh5c2ljYWwgc2l6ZS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUZpeGVkIHJvdW5kaW5nIGVycm9yIGluIHBhZ2Ugc2l6ZSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVN3YXAgcG9ydHJhaXQvbGFuZHNjYXBlIGljb24gd2hlbiBidXR0b24gY2xpY2tlZC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkZWQgZW50cnkgZm9yIHByaW50aW5nIHRvIGEgZmlsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL21pbm1heC5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBtaW5tYXguaCBoZWFkZXIgKFZDNikuCglBZGRlZCBzdXBwb3J0IGZvciBOT01JTk1BWC4KCVJlbW92ZSBfX21pbi9fX21heCBmcm9tIHdpbmRlZi5oLCB0aGV5IGJlbG9uZyB0byAobXN2Y3J0LylzdGRsaWIuaC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2FuaXR5IGNoZWNrIGZvciBNYWtlZGxsLnJ1bGVzLmluIC0+IE1ha2VkbGwucnVsZXMgb24gd2hldGhlciB0byByZXJ1bgoJY29uZmlndXJlLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUFkZCB0aGUgTmV0QlNEIHN0eWxlIGVycm5vIGxvY2F0aW9uLgoJTW9kaWZ5IGEgbWVzc2FnZSB0byBnaXZlIGEgYml0IG1vcmUgaW5mbyB3aGVuIGJ1aWxkaW5nIFdpbmUgb24gTmV0QlNELgoKCSogaW5jbHVkZS9ndWlkZGVmLmgsIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGUgZGlyZWN0aXZlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBhbm9ueW1vdXMgZnVuY3Rpb24gcGFyYW1ldGVyIGZyb20gZ2VuZXJhdGVfbGlzdCBjYWxscyB3aGVuCglpdCBpcyB1bm5lY2Vzc2FyeS4KCU1vZGlmeSB0aGUgLnNwZWMuYyBydWxlIHRvIGFsbG93IGNvbXBpbGF0aW9uIG91dCBvZiAkKFRPUFNSQ0RJUikuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUkNfSU5WT0tFRCAoJk5PV0lOUkVTKSBzcGVjaWFsIGNhc2VzLgoKCSogdG9vbHMvd3JjL3dyYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgktbC8tTCB3ZXJlIG5vdCByZW5hbWVkIHRvIC10Ly1UIGluIHRoZSB1c2FnZSBtZXNzYWdlcy4KCgkqIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4IGR1cGxpY2F0ZSBkaXJlY3RvcmllcyBiZWluZyBjb25jYXRlbmF0ZWQgdG8gYnVmZmVyIGluCglWY3BFeHBsYWluMTYoKS4gIEFkZGVkIGEgZmV3IHVzZWZ1bCBUUkFDRSBsaW5lcy4gIEVuYWJsZWQgYSBpZmRlZidlZAoJb3V0IGNhbGwgdG8gQ29weUZpbGUoKSBpbnNpZGUgb2YgVkNQX0NvcHlGaWxlcygpIHNvIGZpbGVzIGFyZSBjb3BpZWQKCXRvIGEgdXNlcnMgZGlyZWN0b3JpZXMgZHVyaW5nIGFuIGluc3RhbGwuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUNhbGwgT1NTX01pZGlJbml0KCkgb25seSBpZiBIQVZFX09TU19NSURJIGlzIGRlZmluZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJSW5jbHVkZSBtaXNzaW5nIGVycm5vLmguCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIGZsYWdzIGR1cmluZyBmb250IGVudW1lcmF0aW9uIGZvciBmb250IGNob29zZXIgaWYgd2UgZ2V0IG5vCgltYXRjaGVzLgoKCSogZGxscy9nZGkvZ2RpLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgc29tZSBwdHIgaW50byBzdHIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIERFQ0lNQUwgdHlwZS4KCU5hbWVzIGFyZSBubyBsb25nZXIgc3VmZml4ZWQgd2l0aCAzMiEgUmVtb3ZlZCBpdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBpbmNvcnJlY3QgY2FzdCBpbiBXU09DSzMyX3NlbmQgYW5kIFdTT0NLMzJfcmVjdmZyb20uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgSVNfRVJST1IuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcG9ydCB0aGF0IHdlIGhhdmUgMl4xNiBjb2xvcnMsIHNvIFBvd2VyUG9pbnQ5NyBwcmludHMgY29sb3JlZAoJc2xpZGVzLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGb3IgdW5kZXJsaW5pbmcgYW5kIHN0cmlraW5nIG91dCB0ZXh0IHdlIG5lZWQgdG8gc2VuZCBhICduZXdwYXRoJyBvcgoJaGF2ZSB0aGUgd2hvbGUgcGFnZSBmaWxsZWQgd2l0aCBibGFjay4KCgkqIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFwZXIgZGlhbG9nIHRyYW5zbGF0ZWQgdG8gR2VybWFuLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gUFJPRklMRV9Db3B5RW50cnkuCgoyMDAxLTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJUmVtb3ZlIEdldC9TZXRCZWVwQWN0aXZlIGZyb20gVVNFUiBkcml2ZXIgYW5kIG1hbmFnZSBpdCBsb2NhbGx5IGluc2lkZQoJU3lzdGVtUGFyYW1ldGVyc0luZm8uCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgV01fQ09NTUFORCBub3RpZmljYXRpb24gY29kZXMgZm9yIDE2IGJpdCBQcmludERsZy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRGVsYXkgaW1wb3J0IG9mIHVzZXIzMiB0byBhbGxvdyBkZWJ1Z2dpbmcgY3Jhc2hlcyBpbiB1c2VyIGluaXQgY29kZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGxhcmdlIHBhcnRzIG9mIFBhZ2VTZXR1cERsZ0EuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWJ1ZyBvdXRwdXQgZm9yIGZsYWdzLCBzZWxlY3QgZmlyc3QgYXZhaWxhYmxlIGhlaWdodCBhbmQgd2VpZ2h0IHdoZW4KCXNlbGVjdGluZyBhIGZvbnQuCgoyMDAxLTA1LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kY2UuYzoKCU1ha2Ugc3VyZSB3ZSByZWNvbXB1dGUgdGhlIHZpc2libGUgcmVnaW9uIGluIERDIGhvb2suCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWlzYy4gZXJyb3IgY2hlY2tpbmcgaW4gUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhdXRvcmVwZWF0IHNjcm9sbGluZyB3aGVuIGJ1dHRvbiBpcyBoZWxkIGRvd24uCglJbXByb3ZlbWVudHMgdG8gc2l6ZSBhbmQgYXBwZWFyYW5jZSBvZiBidXR0b25zLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDbGVhbiBzaG91bGQgYWxzbyBkZWxldGUgdGhlIHBkZiwgcHMgYW5kIC5vdXQoPykgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgd3d3LndpbmVocS5jb20gZGlyZWN0b3J5IGhhbmRsaW5nLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBoYW5kbGluZyBvZiBzZXZlcmFsIHN5bWJvbHMgd2l0aCB0aGUgc2FtZSBuYW1lLgoJRml4ZWQgdHJhbXBvbGluZSBpZGVudGlmaWNhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBzbWFsbCBzZWN0aW9uIGFib3V0IGV4cHJlc3Npb25zIGluIHdpbmVkYmcuCgoyMDAxLTA1LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVW5jb21tZW50ZWQgdGhlIFZpcnR1YWxGcmVlIGNhbGwgb24gZGxsIHVubG9hZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCB0aGUgT1NNZXNhIGNvbmZpZ3VyZSBjaGVjayBzbyB0aGF0IE9TTWVzYSB3b24ndCBiZSBsaW5rZWQgaW4gaWYgaXQncwoJaW5jb21wYXRpYmxlIHdpdGggdGhlIEdMWCBpbXBsZW1lbnRhdGlvbiAoZS5nLiBudmlkaWEpLgoJUmVtb3ZlZCB0aGUgb2xkICJPU01lc2Egbm90IGZvdW5kIiB3YXJuaW5nLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFByaW50RGxnIHNvIHRoZSBkZXZuYW1lcyBzdHJ1Y3QgY29udGFpbnMgdGhlIGNvcnJlY3QgZHJpdmVyCglwcmludGVyIGFuZCBwb3J0IG5hbWVzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCVNpbWVvbiBQaWxncmltIDxzaW1lb24ucGlsZ3JpbUBhbGxpZWR0ZWxlc3luLmNvLm56PgoJVHlwbyBpbiBzdHViLXJlcG9ydGluZyBzdHlsZSBkZXNjcmlwdGlvbgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCW50ZGxsLl9pc3djdHlwZSBzaG91bGQgYmUgbnRkbGwuaXN3Y3R5cGUuCgoJKiBjb250cm9scy9jb21iby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgSGVhcEZyZWUoKSBtZW1vcnkgbm90IGFsbG9jYXRlZCBieSB1cyBpbiBDT01CT19HZXRUZXh0LgoJQ29udmVydCByZXR1cm4gdmFsdWUgZnJvbSBMQl9HRVRURVhUIGludG8gQ09NQk9fR2V0VGV4dC4KCjIwMDEtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgY2hlY2sgZm9yIGN1cHMvY3Vwcy5oIGhlYWRlciBmaWxlIGFuZCBhIHdhcm5pbmcgaWYgd2UgZmluZCBvbmx5CglydW50aW1lIGxpYnJhcmllcywgYnV0IG5vIGhlYWRlcnMuCgoJKiBjb250cm9scy9jb21iby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglEcmF3IHRoZSBwYWRkaW5nIGFyZWEgb2YgYSBjb21ibyBib3guCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglDaGVjayBmb3IgZXJyb3JzIGluIFBTRFJWX0luaXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIGNoZWNrcyBpbiBfZ2V0X2NvbW1vbl9hbmNlc3RvciBhIGJpdCBzdHJpY3RlciB0byBhdm9pZCBYUXVlcnlUcmVlCglYRXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50IENPTUNUTDMyX1N0clRvSW50VygpIHVzaW5nIE5URExMJ3MgX3d0b2kuCgoyMDAxLTA0LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvcHRyYWNlLmMsCgkgIHNlcnZlci90aHJlYWQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJlc2VydmUgdGhlIFRGIChUcmFwIEZsYWcpIHdoZW4gY29udGludWluZyBmcm9tIGEgcHRyYWNlZCBzdXNwZW5kLgoKCSogY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywKCSAgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsCgkgIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW4zMi9maWxlLmMsIHdpbmRvd3MvbWRpLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gbmFtZSBmaXhlcy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgQ1VQUyBwcmludGluZyBzdXBwb3J0LgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUREUkFXX3tYRjg2REdBMixYVmlkTW9kZX1fSW5pdCB3YXMgbW92ZWQgdG8gZGxscy94MTFkcnYuCgoJKiBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlaW1wbGVtZW50ZWQgRFhHcmFiIHdpdGggaW1wcm92ZW1lbnRzOyBpdCBubyBsb25nZXIgZGVwZW5kcyBvbgoJWFZpZE1vZGUsIGFuZCBpdCByZWxlYXNlcyB0aGUgZ3JhYiBpZiB0aGUgYXBwIGV4aXRzIGZ1bGwtc2NyZWVuCglEaXJlY3REcmF3LiAgQWxzbyBtYWRlIHRoZSBVc2VER0Egb3B0aW9uIGF2YWlsYWJsZSBmb3IgQXBwRGVmYXVsdHMKCWNvbmZpZ3VyYXRpb24uCgoyMDAxLTA0LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUF2b2lkIGNyYXNoIG9uIGRlbGV0ZWQgd2luZG93cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3ZlcnNpb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2ludHJ1c3QuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglHYWVsIGRlIENoYWxlbmRhciA8R2FlbC5kZS5DaGFsZW5kYXJAbGltc2kuZnI+CglDb3JyZWN0ZWQgYSB0eXBvIGluIHNwZWMgZmlsZSBhbmQgYWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVBsYXlTb3VuZEEgc2hvdWxkIHJldHVybiBUUlVFIHdoZW4gaXQgc3RvcHMgcGxheWluZyBzb3VuZC4KCjIwMDEtMDQtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL21lc3NhZ2UuaCwKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9mb2N1cy5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTW92ZWQgbW9zdCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgU2V0V2luZG93UG9zIGFuZCBTZXREcmF3YWJsZSBpbnRvCgl0aGUgdXNlciBkcml2ZXIsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBjb2RlIGludG8gdGhlIGRsbHMveDExZHJ2CglkaXJlY3RvcnkuIE1vdmVkIGEgZmV3IGZ1bmN0aW9ucyBvdXQgb2YgdGhlIHdpbmRvdyBkcml2ZXIgaW50byB0aGUKCXVzZXIgZHJpdmVyLiBQbHVzIGEgZmV3IHJlbGF0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCVNtYWxsIGNsZWFudXBzLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIFNZU0xFVkVMIGNoZWNrcyBmcm9tIHJlbGF5IGRlYnVnZ2luZywgc2luY2UgdGhleSBicmVhayBkZWJ1Z2dpbmcKCWJ1aWx0aW4gR0RJIGRsbHMuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgdXNlIFdpbmRvd3MgdHlwZXMgbGlrZSBMT05HTE9ORyBpbiBtc3ZjcnQgaGVhZGVycy4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIG1vcmUgZGlzYXNzZW1ibHkgaW5zdHJ1Y3Rpb25zIChub3RhYmx5IHJkdHNjLCB3aGljaCBpcyB1c2VkCglieSBzZXZlcmFsIHByb2dyYW1zKSBhbmQgbW9yZSBNTVguCgoyMDAxLTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBzbnByaW50ZiB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvd3MgaW4gZm9ybWF0X2V4Y2VwdGlvbl9tc2cuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCB1c2UgYnkgV2luZSdzIHNvdXJjZS4KCUFkZGVkIG1pc3NpbmcgJ2Z1bmN0aW9uJyBkZWZpbml0aW9ucyAobWFjcm9zIHJlYWxseSkuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBub3QgZnJlZSB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBsb2NhbHRpbWUgKGVzcGVjaWFsbHkgbm90Cgl3aXRoIE1TVkNSVF9mcmVlISkuCglXZSBubyBsb25nZXIgbmVlZCB0byBpbmNsdWRlIHN0ZGxpYi5oLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgb2Zmc2V0b2YgKGZvciB0aGUgTUZDKS4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywKCSAgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgbXN2Y3J0L21hbGxvYy5oIChmb3IgdGhlIE1GQykuCglBZGQgbXN2Y3J0L3NlYXJjaC5oLgoJTW92ZSBkdXBsaWNhdGVkIGRlZmluaXRpb25zIHRvIHRoZSBuZXcgaGVhZGVycy4KCVVzZSBtYWxsb2MuaCBpbnN0ZWFkIG9mIHN0ZGxpYi5oIHdoZW4gc2Vuc2libGUuCgoJKiBpbmNsdWRlL21zdmNydC9jcnRkYmcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQcm92aWRlIGxpbWl0ZWQgc3VwcG9ydCBmb3IgdGhlIG1zdmNydCBkZWJ1ZyBBUEkuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRmlsZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgbWF5IG5vdCBoYXZlIGJlZW4gcmVuYW1lZC4gVHJ5IHRvIG1hdGNoCglib3RoIGZvcm1zLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLAoJICBkbGxzL21zYWNtL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY2FjaGUgZm9yIGRyaXZlcnMgaW5mb3JtYXRpb24uCglGaXhlZCBhIGZldyBidWdzIChtZW1vcnkgaGFuZGxpbmcsIHZlcnNpb24gaW5mby4uLikKCUVuaGFuY2VkIHZhbGlkaXR5IGNoZWNrcy4KCgkqIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXNlIHR5cGVjYXN0cyB0byBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5ncy4KCgkqIG9iamVjdHMvZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBHZXRDaGFyQUJDV2lkdGhzIHdpdGggR2V0Q2hhcldpZHRoLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRXh0cmFjdGVkIE1FTUNIRUNLIGludG8gYW4gZXh0cmEgZnVuY3Rpb24gdG8gYXZvaWQgYSBnY2MtMi45NS4yCgljb21waWxlciBidWcuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBNTVggZGlzYXNzZW1ibHkgdG8gdGhlIGRlYnVnZ2VyLgoKCSogZGVidWdnZXIvZXhwci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBnZXR0aW5nIGEgdmFyaWFibGUgYWRkcmVzcy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZsb2F0IHZhcmlhYmxlcyBkaXNwbGF5LgoKMjAwMS0wNC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckBtY2hwLnNpZW1lbnMuZGU+CglBbGxvdyBpbGxlZ2FsIGhhbmRsZXMgaW4gRmluZENsb3NlLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZmlsZXMvZHJpdmUuYywgb2JqZWN0cy9kaWIuYywgdG9vbHMvd2luZWNvbmYsCgkgIGRlYnVnZ2VyL2V4dF9kZWJ1Z2dlci5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiB3aW5kb3dzL3Byb3BlcnR5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIG1ha2Ugc3VyZSB0aGF0IHdlIHJlYWxseSB1c2UgdGhlIGNvcnJlY3QgYW1vdW50IG9mIHBhcmFtZXRlcnMgZWFjaAoJICB0aW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KCS0gYWx3YXlzIHBhc3Mgc3RyaW5ncyBpbnN0ZWFkIG9mIGF0b21zIHRvIFdpbjMyIGVudW0gcHJvYwoJLSBmaXggdHJhY2UgY3Jhc2ggZHVlIHRvIHN0cmluZyBmb3JtYXQgZGlzcGxheWluZyBvZiBhdG9tIChMT1dPUkQKCSAgb25seSkgaGFuZGxlCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2FnbC5jLAoJICBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVN0b3JlIGVhY2ggZ2x5cGggbmFtZSBvbmx5IG9uY2UgaW4gUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiBvYmplY3RzL2JydXNoLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVRha2UgYSBzdGFiIGF0IGltcGxlbWVudGluZyBTZXRTb2xpZEJydXNoMTYuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciBpbiBJbWFnZUxpc3RfRHJhd0luZGlyZWN0KCkuCglGaXhlZCBzb21lIG1pc3NpbmcgTlVMTCBISU1BR0VMSVNUIGNoZWNrIChmaXhlcyBNaWNyb3NvZnQgV29ya3MKCXN0YXJ0dXApLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdG8gcmV0dXJuIG91ciB2YXJpYWJsZSB3aXRoIHRoZSBjb3JyZWN0IHJldHVybiB2YWx1ZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVmlydHVhbFByb3RlY3Qgc2hvdWxkIHJldHVybiBjb3JyZWN0IG9sZCBwcm90ZWN0aW9uIGZsYWdzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gTm90aWZ5IHBhcmVudCBvZiBjaGlsZCBzaXplIGNoYW5nZXMgd2hlbiBjaGFuZ2VzIGFyZSBmcm9tIFdNX1NJWkUKCSAgbWVzc2FnZXMuCgktIElmIG1vcmUgdGhhbiBvbmUgYmFuZCBleGlzdHMsIHRoZW4gZmlyc3QgYmFuZCBtYXkgaGF2ZSBhIGdyaXBwZXIuCgktIEZpeCB0aGUgYmFuZCBsYXlvdXQgYWxnb3JpdGhtIHRvIGhhbmRsZSBzb21lIGlzc3VlcyBmcm9tIFdpbkFSQS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IENCX3tHRVR8U0VUfUlURU1EQVRBIGZvciBDb21iQm94RXguCgktIEltcGxlbWVudCBXTV9OQ0NSRUFURSB0byByZW1vdmUgdW53YW50ZWQgd2luZG93IHN0eWxlcyAoYXMgbmF0aXZlIGRvZXMpLgoJLSBDbGVhbiB1cCBzb21lIHRyYWNlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGZpbGUgbG9zc2FnZSBpbiBzdWJkaXJlY3RvcmllcyBvZiBhbiAnaW5jbHVkZScgZGlyZWN0b3J5IChjbG9zZXMgIzE2MykuCglXaGVuIGNhc2UgZml4aW5nICNpbmNsdWRlcywgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgZmlsZSBtYXkgaGF2ZQoJYmVlbiByZW5hbWVkIChjbG9zZXMgIzE2MSkuCglCZXR0ZXIgc3VwcG9ydCBvZiAkKFNSQ0RJUikgaW4gLUkgZGlyZWN0aXZlcy4KCVJURiB3YXMgbm90IHJlY29nbmlzZWQgaW4gcmMgZmlsZXMgYmVjYXVzZSBpdCB3YXMgaW4gdGhlIHdyb25nIHBsYWNlLgoJRXNjYXBlIHdlaXJkIGNoYXJhY3RlcnMgd2hlbiBwdXR0aW5nIHRoZSByYyBmaWxlbmFtZSBpbiB0aGUgc3BlYyBmaWxlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUFkZGVkIFdJTkVQUkVMT0FEIHRvIG1hbiB3aW5lLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckB0LW9ubGluZS5kZT4KCURvbid0IHVzZSBSVFNDVFMgaWYgU3RyIGhhbmRzaGFrZSBpcyBlbmFibGVkLgoJVXNlIGFwcHJvcHJpYXRlIFVuaXggdGltZW91dCB2YWx1ZXMgaW4gU2V0Q29tbVRpbWVvdXRzLgoKMjAwMS0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAxMDQxOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEZpeGVkIHNldHVwYXBpIGRlcGVuZGVuY2llcy4KCgkqIHdpbmRvd3MvaW5wdXQuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJR2V0QXN5bmNLZXlTdGF0ZSBub3cgY2xlYXJzICJoYXMgYmVlbiBwcmVzc2VkIiBpbmZvcm1hdGlvbiBvZiBvbmx5IHRoZQoJcmVxdWVzdGVkIGtleSBpbnN0ZWFkIG9mIGFsbCBrZXlzLgoKCSogd2luZG93cy9kY2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJTm8gbmVlZCB0byBwcmVhbGxvY2F0ZSBEQ0VzIHNpbmNlIHRoZXkgYXJlIGFsbG9jYXRlZCBvbiBkZW1hbmQKCWFueXdheS4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL2RjZS5oOgoJTW92ZWQgRENYXyogY29uc3RhbnRzIHRvIHdpbnVzZXIuaC4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuaCwgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuaDoKCVJlbW92ZWQgYSBmZXcgb2Jzb2xldGUgZmlsZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggREdBIHNvIGl0IHdvcmtzIHByb3Blcmx5IGFnYWluLgoKCSogZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZCBcbiB0byBGSVhNRSBjYWxsIGluIGFjbUdldFZlcnNpb24gdG8gcHJldmVudCBvdmVyZmxvd2luZyBidWZmZXIgaW4KCXdpbmVfZGJnX3ZwcmludGYuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglFbGltaW5hdGUgdW5pdGlhbGl6ZWQgZ2FyYmFnZSBiZWluZyByZXR1cm5lZCBmcm9tIExJU1RWSUVXX0dldEl0ZW1BLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUVuaGFuY2VkIHRoZSBwcmFnbWEgcGFjayBoYW5kbGluZy4KCUVuaGFuY2VkIHRoZSAnYWZ4cmVzLmgnIGhhbmRsaW5nICh0aGUgaW5kZW50YXRpb24pLgoJU3RhcnQgaXNzdWluZyB3aW5lbWFrZXIncyB3YXJuaW5ncyBpbiB0aGUgc291cmNlIGZpbGVzIHRoZW1zZWx2ZXMuCgoyMDAxLTA0LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvIG5vdCBzZW5kIFdNX01PVVNFQUNUSVZBVEUgZm9yIGNoaWxkcmVuIG9mIGRlc2t0b3AuCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L2hhbC5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5oLCBkbGxzL2RkcmF3L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgRGlyZWN0RHJhdydzIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIChIQUwpIGludGVyZmFjZS4KCURpc2FibGVkIERpcmVjdERyYXcncyBvbGQgWFZpZE1vZGUgYW5kIERHQTIgZHJpdmVycywgaXQgbm93IGRlcGVuZHMgb24gdGhlCglkaXNwbGF5IGRyaXZlciAoeDExZHJ2KSBIQUwgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIGZlYXR1cmVzLgoKCSogZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gaW1wbGVtZW50IHNvbWUgbW9yZSB2aXJ0Y29weSAoVkNQKSBzdHVmZgoJLSBhZGQgc29tZSBzZXR1cHggcmVzb3VyY2VzCgktIGltcGxlbWVudCBWSFNUUiBmdW5jdGlvbmFsaXR5CgktIGxhcmdlIHBhcnRzIG9mIFZDUCBjYWxsYmFjayBoYW5kbGluZwoJLSBtZXJnZSBzZXR1cGFwaSBhbmQgc2V0dXB4IHN0dWZmLCBlc3BlY2lhbGx5IHJlc291cmNlIGhhbmRsaW5nCgkgIGdldHMgcmlkIG9mIHNldHVweCBkZWJ1ZyBjaGFubmVsOyBzZXR1cGFwaSBpcyB0aGUgb25seSBvbmUgdGhhdCByZW1haW5zCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWJ0ZXh0dXJlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZWQgdGhlIG9ic29sZXRlIERJQlRleHR1cmUgc3VyZmFjZSBjbGFzcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaWxsIGluIHNvbWUgbW9yZSBIQUwgZmllbGRzLiBGbGlwIHNvbWUgb2YgdGhlbSB3aGVuIGFwcHJvcHJpYXRlLgoJQWxsb3cgU2V0U3VyZmFjZURlc2MgdG8gY2hhbmdlIGNsaWVudCBtZW1vcnkgc3VyZmFjZSBhZGRyZXNzLgoJUHJvcGFnYXRlIERJQiBjb2xvciB0YWJsZSB1cGRhdGVzIHRvIGJhY2tidWZmZXJzIHRvbyAodGhhbmtzIHRvCglTdGVwaGVuIENsb3VzZSkuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpbGwgaW4gc29tZSBEaXJlY3REcmF3UGFsZXR0ZSBIQUwgZmllbGRzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5oLAoJICBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmgsCgkgIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmVkIFVzZXJfRGlyZWN0RHJhd19HZXRDYXBzLiBVc2luZyBNYWluX0RpcmVjdERyYXdfR2V0Q2FwcyBpbnN0ZWFkLAoJYW5kIHRoZSBVc2VyIGNvbnN0cnVjdG9yIGZpbGxpbmcgaW4gdGhlIG1haW4gY2FwYWJpbGl0eSBiaXRzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaWxsIGluIHNvbWUgb2YgdGhlIGRkcmF3IEhBTCBmaWVsZHMuCglDYWxsIHRoZSBzZXRfZXhjbHVzaXZlX21vZGUgY2FsbGJhY2sgd2hlbiBuZWNlc3NhcnkuCglBZGRlZCBhIE1haW5fRGlyZWN0RHJhd19HZXRDYXBzIG1ldGhvZC4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBESUJUZXh0dXJlIHN1cmZhY2UgY2xhc3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIGdhbW1hIGNvbnRyb2wgb24gdGhlIERpcmVjdERyYXcgcHJpbWFyeSB3aW5kb3cuCglFbnN1cmVkIHRoYXQgdGhlIHByaW1hcnkgd2luZG93IGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBjb25zdHJ1Y3RvciByZXR1cm5zLgoJRmxhZyB0aGUgcHJpbWFyeSB3aW5kb3cgYXMgdHJhbnNwYXJlbnQgc28gbW91c2UgY2xpY2tzIHBhc3MgdGhyb3VnaCBpdC4KCVB1dCB0aGUgcHJpbWFyeSB3aW5kb3cgaGFuZGxlIGludG8gYSByZXNlcnZlZCBmaWVsZCBmb3IgeDExZHJ2IEhBTCB1c2UuCgoJKiBkbGxzL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdHlwbyBzbyB0aGF0IHdpbnRydXN0IGlzIGJ1aWx0LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglBZGQgYSBtaXNzaW5nIDwvc2VjdDM+LgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglVc2Ugb2YgcHJvcGVyIHRlc3QgZ2V0cyByaWQgb2YgYSBzaWduZWQvdW5zaWduZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBkZHJhdyBIQUwgYWNjZXNzIGVzY2FwZSAoRENJQ09NTUFORCkgaW4geDExZHJ2LgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IHNlbmRpbmcgb2YgV01fRFJBV0lURU0gbWVzc2FnZSB0byBvd25lcmRyYXduCgljb21ib2JveC4KCjIwMDEtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbHN0ci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXggc29tZSBjcmFzaCBvbiBiYWQgcGFyYW1ldGVyIGNvbmRpdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgX3d0b2kgYW5kIF93dG9sLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvZGdhMi5oLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgWEY4NkRHQTIgZHJpdmVyIGZvciB0aGUgZGRyYXcgSEFMLgoJRW50ZXJlZCBzb21lIGJhc2ljIEhBTCBkZXZpY2UgY2FwYWJpbGl0aWVzIGRhdGEuCglBZGRlZCBhIEdldERyaXZlckluZm8gaGFuZGxlci4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnRydXN0Ly5jdnNpZ25vcmUsIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBuZXcgZGxsIHdpbnRydXN0LmRsbCB3aXRoIGEgc3R1YiBmb3IgV2luVmVyaWZ5VHJ1c3QoKS4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZHN1cmZhY2UvZ2FtbWEuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgSURpcmVjdERyYXdHYW1tYUNvbnRyb2wgaW50ZXJmYWNlLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcGQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgcGFwZXIgc2l6ZSBhbmQgYmluIHR5cGUgaGFuZGxpbmcgbW9yZSBsaWtlIFdpbmRvd3MgZHJpdmVycy4KCgkqIG9iamVjdHMvZm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBOVUxMIGNoZWNrIGZvciBscG5GaXQgaW4gR2V0VGV4dEV4dGVudEV4UG9pbnRXLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywKCSAgdHN4MTEvdHNfeGxpYi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUNvcHkgdGhlIGZpcnN0IDEyOCBjb2xvcnMgZnJvbSB0aGUgZGVmYXVsdCBjb2xvcm1hcCB0byBXaW5lJ3MgcHJpdmF0ZQoJY29sb3JtYXAgd2hlbiB1c2luZyAnc2hhcmVkJyBjb2xvcnMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUxldCBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgbG9hZCB0aGUgYnVpbHRpbiBkbGwgaWYgbG9hZGluZyBhIG5hdGl2ZQoJRExMIGZhaWxlZCwgc28gdGhhdCB3aW5lc2V0dXB0aydzIGZha2Utd2luZG93cyBpbnN0YWxsYXRpb24gd29yay4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTbGlnaHRseSBpbXByb3ZlIGtleWJvYXJkIHRyYWNraW5nIGluIGNvbWJvYm94LgoKCSogY29udHJvbHMvZWRpdC5jOgoJRGFuIEVuZ2VsIDxkZW5nZWxAc291cmNlaGFydmVzdC5jb20+CglTZXQgdGhlIGJhY2tnb3VuZCBtb2RlIHRvIG9wYXF1ZSB0byBwYWludCBoaWdobGlnaHRlZCB0ZXh0LgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGRkcmF3IEhBTCBhbmQgZ2FtbWEgcmFtcCBzdHVmZiB0byBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzLgoJQWRkZWQgYSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSB0byBmbGlwX2RhdGEgYW5kIGZsaXBfdXBkYXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBDb2VyY2VESUJTZWN0aW9uJ3MgQXV4TW9kIGhhbmRsaW5nLiBBZGRlZCBDb2VyY2VESUJTZWN0aW9uMi4KCgkqIG9sZS91dWlkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW5jbHVkZSB0aGUgR1VJRHMgaW4gZGRyYXdpLmggaW4gdGhlIGxpYndpbmVfdXVpZC5hIGxpYnJhcnkuCgoJKiBpbmNsdWRlL2RkcmF3aS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglZZXQgbW9yZSBzdHVmZiBmb3IgZGRyYXdpLmgsIGluY2x1ZGluZyBzb21lIEdldERyaXZlckluZm8gR1VJRHMuCgoJKiBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy92ZXJzaW9uLnJjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgdmVyc2lvbiByZXNvdXJjZSB0byBkZHJhdy5kbGwsIHZlcnNpb25lZCB0byBEaXJlY3RYIDcuMC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJR2V0SXRlbVNwYWNpbmcodHJ1ZSk6IFJldHVybiB0aGUgZGVmYXVsdCBpdGVtIHNwYWNpbmcgaWYgdGhlIHZpZXcgaXMKCUxWU19JQ09OLCBhbmQgdGhlIGN1cnJlbnQgJ2l0ZW0gc2l6ZScgb3RoZXJ3aXNlLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgdGhyZWFkIGlkIGluc3RlYWQgb2YgJWZzIGluIHNub29wIHRyYWNlLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEb24ndCByZXN0b3JlIHRoZSBzYXZlZCBrZXlib2FyZCBhdXRvcmVwZWF0IGNvbmZpZywgc2luY2UgdGhlIGNvbmZpZwoJc2F2ZSBjb2RlIGl0c2VsZiB3YXMgZGlzYWJsZWQgYSB3aGlsZSBhZ28uLi4KCgkqIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kM2R2ZWMuaW5sLCBpbmNsdWRlL2QzZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEaXJlY3QzRCBoZWFkZXIgdXBkYXRlLgoKCSogaW5jbHVkZS9kM2RoYWwuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTmV3IGhlYWRlciBkM2RoYWwuaCwgdGhlIERpcmVjdDNEIEhBTCBkZXZpY2UgZHJpdmVyIGludGVyZmFjZS4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUhhbmRsZSB0aGUgJWYgY2FzZSBpbiB3c3ByaW50Zi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDaGFuZ2VkIHRoZSBzcGVjIGRlZmluaXRpb24gb2YgKnMqcHJpbnRmIGZyb20gKnN0ciB0byBwdHIsIHNpbmNlIHRoYXQKCXBhcmFtZXRlciBpcyBhIGRlc3RpbmF0aW9uIGJ1ZmZlciB0aGF0IG1heSBvbmx5IGNvbnRhaW4gZ2FyYmFnZSBvbiBlbnRyeS4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kcGxheXgvdmVyc2lvbi5yYywgZGxscy9kcGxheXgvLmN2c2lnbm9yZToKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkIHZlcnNpb24gcmVzb3VyY2UgdG8gZHBsYXl4LmRsbCwgdmVyc2lvbmVkIHRvIERpcmVjdFggNy4wLgoKCSogaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR2VuZXJhbGl6ZSB0aGUgV2luZSB2ZXJzaW9uIHJlc291cmNlIHRlbXBsYXRlIGEgYml0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VvLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Lby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgIlN5c3RlbSIgZm9udCBieSAiSGVsdiIgaW4gc2hlbGwzMiAiQWJvdXQiIGRpYWxvZy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgT0xFMzIuSXNBY2NlbGVyYXRvci4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIFNUR19FX0ZJTEVBTFJFQURZRVhJU1RTIGluIG9sZTMyLlN0Z09wZW5TdG9yYWdlIGlmIHRoZSBmaWxlIGlzCglub3QgYSBzdG9yYWdlIG9iamVjdC4KCgkqIG9iamVjdHMvZGMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGltcGxlbWVudGF0aW9uIG9mIENyZWF0ZURDMTYgdG8gQ3JlYXRlRENBLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglBbGxvY2F0ZSBiaXRtYXAgb2JqZWN0cyBpbiB0aGUgbGFyZ2UgaGVhcCBhcmVhLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgMCBjb3VudCBoYW5kbGluZyBpbiBQU0RSVl9UZXh0LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIE1TIFNoZWxsIERsZyBmb250IHRvIHRoZSBzZXQgb2YgZGVmYXVsdCBzYW5zIHNlcmlmIGZvbnRzLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBNU1ZDUlRfY2xvY2sgcmV0dXJuIHR5cGUuCgoyMDAxLTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJQWRkZWQgbWlzc2luZyA8bGlzdGl0ZW0+LgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oOgoJUmVwYWlyZWQgc2hhcmVkIFBFIGRhdGEgc2VjdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG5vdGUgb24gdXNpbmcgc2hlbGwgc2NyaXB0cyBhcyBBZURlYnVnIHNldHVwLCBhZGRlZAoJQnJlYWtPbkRsbExvYWQgdmFyaWFibGUuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBIGZldyBmaXhlcy4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9wZW5pbmcgb2Ygc29tZSBkcml2ZXJzLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY2FsbGJhY2sgcGFyYW1ldGVycyAoYm9ndXMgaFdhdmUpOyBhZGRlZCBhY20gY29udmVyc2lvbiBmb3IKCXdhdmVJbi4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IE1DSV9TRVQgdG8gY2hhbmdlIHdhdmVGb3JtYXQgZm9yIHJlY29yZGluZy4KCUZpeGVkIGJ1ZmZlciBoYW5kbGluZyBvbiByZWNvcmRpbmcgZW5kLgoJRml4ZWQgc2l6ZSBvZiByZWNvcmRlZCBkYXRhIGluIG1taW8gZmlsZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1ZmZlcnMgaXNzdWUgaW4gcmVjb3JkaW5nLgoJWmVyb2VkIHVubmVjZXNzYXJ5IHNlY29uZCBwYXJhbWV0ZXIgZm9yIFdJTV9EQVRBIG5vdGlmaWNhdGlvbi4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgcm9idXN0bmVzcyBhdCBzdGFydHVwLgoKCSogd2luZG93cy9tc2dib3guYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIE1CXypNT0RBTCBzdHlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSAqZG9uJ3QqIE1vdmVXaW5kb3coKSB0aGUgc3RhdHVzIGJhciBpZiBDQ1NfTk9SRVNJWkUgaXMgc3BlY2lmaWVkLAoJICBhbmQgdXNlIFNldFdpbmRvd1BvcyBpbnN0ZWFkIGZvciBvbmUgb2YgdGhlIE1vdmVXaW5kb3coKXMKCS0gY2FsbCBTVEFUVVNCQVJfR2V0SW5mb1B0ciAqb25jZSogbGlrZSBXaW5kb3dzIGRvZXMsIG5vdCB0d2ljZSAodXNlZCB0byBiZQoJICBpbiBldmVyeSBzdWIgZnVuY3Rpb24sIHRvbykKCS0gcmVtZW1iZXIgaHduZFBhcmVudCBmcm9tIGNyZWF0ZSBzdHJ1Y3QgdG8gdXNlIGluIGF0IGxlYXN0IFdNX0NSRUFURSBhbmQKCSAgV01fU0laRSBpbnN0ZWFkIG9mIEdldFBhcmVudCgpIGxpa2UgaW4gV2luZG93cwoJLSBhZGRlZCBEZWZXaW5kb3dQcm9jIGNhbGwgdG8gV01fU0laRSBsaWtlIGluIFdpbmRvd3MKCS0gYWRkZWQgSW52YWxpZGF0ZVJlY3QsIFVwZGF0ZVdpbmRvdyB0byBXTV9DUkVBVEUgbGlrZSBpbiBXaW5kb3dzCgktIG11Y2ggbW9yZSB2ZXJib3NlICtzdGF0dXNiYXIgb3V0cHV0CgktIHJlbmFtZSBwYXJ0X251bSB0byBuUGFydCBmb3IgY29uc2lzdGVuY3kKCS0gYWRkZWQgbmNsbS5jYlNpemUgdG8gU3lzdGVtUGFyYW1ldGVyc0luZm9BIGNhbGwKCS0gYWRkZWQgRklYTUUgdG8gU1RBVFVTQkFSX1NldFBhcnRzCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZXQgdGhlIGN1c3RvbSBkaWFsb2cgYm94IHRvIHRoZSBib3R0b20gb2YgdGhlIFotb3JkZXIuCgoyMDAxLTA0LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwaW5pdC5oLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsCgkgIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL3V1aWQuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFByb3ZpZGUgbG9iYnkgcHJvdmlkZXIgQ09NIG9iamVjdCBoZWFkZXIgZmlsZSBhbmQgc3R1YiBpbXBsZW1lbnRhdGlvbgoJLSBCcmVhayBvdXQgZHBsIGFuZCBkcCBzZXJ2aWNlIHByb3ZpZGVyIGludGlhbGl6YXRpb24KCS0gQWRkIG1pc3NpbmcgZGVmaW5pdGlvbiBvZiBFX1BFTkRJTkcKCS0gUmVzb2x2ZSBhIGZldyBmaXhtZXMKCS0gRml4IGluY2x1ZGVzIGZvciBkcGxheS5oCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFkZGVkIGZpcnN0L2xhc3QgbWVzc2FnZSBmaWx0ZXJzIHRvIE1TR19JbnRlcm5hbEdldE1lc3NhZ2UgdG8gYXZvaWQKCWJ1c3kgd2FpdHMuCgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmNvbi5oLAoJICB3aW4zMi9jb25zb2xlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBhZGRlZCBzdHVicyBmb3IgdGhyZWUgY29uc29sZSBmdW5jdGlvbnMKCS0gdXBkYXRlZCB3aW5jb24uaAoKCSogb2xlL29sZTJubHMuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNtYWxsIHR5cG8gZml4LgoKCSogd2luZG93cy93aW5wb3MuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNldFdpbmRvd1JnbiBzaG91bGRuJ3QgYWN0aXZhdGUgdGhlIHdpbmRvdy4KCjIwMDEtMDQtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIHNpZ25hdHVyZSBvZiBfX0dldE1haW5BcmdzIGFuZCBfX2dldG1haW5hcmdzIChmcm9tIG1zdmNydCkuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZjcnQvY3R5cGUuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywKCSAgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLAoJICBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIHRoZSBtc3ZjcnQgaGVhZGVycywgcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucy4KCUZpeGVkIHRoZSBzaWduYXR1cmUgb2YgYSBmZXcgZnVuY3Rpb25zLgoJRG9uJ3QgdXNlIHdjcyogZnVuY3Rpb25zLCB1c2UgKlcgKGZyb20gdW5pY29kZS5oKSBpbnN0ZWFkLgoKCSogaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByZXZlbnQgbXVsdGlwbGUgZGVmaW5pdGlvbnMgY2F1c2VkIGJ5IE1TVkNSVCBoZWFkZXJzLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvdyB0aGUgTWFrZWZpbGUuaW4gdG8gZGVmaW5lIEVYVFJBREVGUyBhbmQgYWRkIGl0IHRvIERFRlMuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9jb25pby5oLAoJICBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2ZjbnRsLmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLAoJICBpbmNsdWRlL21zdmNydC93Y2hhci5oLCBpbmNsdWRlL21zdmNydC93Y3R5cGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgaGVhZGVycyBmb3IgdGhlIG1zdmNydCBsaWJyYXJ5LgoKCSogY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIG1hcHBpbmdzIGZvciBXTV9DSEFSVE9JVEVNIGFuZCBXTV9NRU5VQ0hBUiBtZXNzYWdlcy4KCVJlbW92ZWQgbWFwcGluZyBvZiAxNi1iaXQgZWRpdCBtZXNzYWdlcyBpbiB0aGUgZ2VuZXJpYyByb3V0aW5lcy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCVBhc3MgdGhlIGNvcnJlY3Qgc3RyaW5nIGxlbmd0aCB0byBSZWdTZXRWYWx1ZUV4QS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJlZ1NldFZhbHVlRXhBL1c6IGZpeGVkIFJFR19TWiBzdHJpbmcgbGVuZ3RoIGhhbmRsaW5nIGZvciBXaW45NS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgc3R1YiBmb3IgV1NBU2VuZC4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgXFxSZWdpc3RyeSBwcmVmaXguCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU3R1YiBmb3IgT2xlTG9hZFBpY3R1cmVFeC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBmb3Igc21hbGwgdHlwby4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsCgkgIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywKCSAgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkanVzdCB0aGUgJ01TVkNSVF8nIHByZWZpeCB0byBtYXRjaCB0aGUgbXN2Y3J0IGhlYWRlcnMKCVByZWZpeCBpbnRlcm5hbCBtZXRob2RzIHdpdGggJ21zdmNydF8nIGluc3RlYWQgb2YgJ01TVkNSVF8nLCAnX19NU1ZDUlRfJywgZXRjLgoJUmVtb3ZlICdfY2RlY2wnLCBpdCdzIHVubmVjZXNzYXJ5CgoyMDAxLTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvdGVzdC5wbCwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54cywgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYzoKCVN0b3JlIHRoZSBmdW5jdGlvbiBwb2ludGVyIGluIHRoZSAlcHJvdG90eXBlcyBoYXNoIGluc3RlYWQgb2YgdGhlCglmdW5jdGlvbiBuYW1lIHRvIGF2b2lkIGxvb2tpbmcgaXQgdXAgb24gZXZlcnkgY2FsbC4KCUZpeGVkIGNhbGxiYWNrIHRodW5rcyB0byB1c2Ugc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24uCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEaXNwbGF5IHRocmVhZCBpZCBpbnN0ZWFkIG9mICVmcyBpbiByZWxheSB0cmFjZS4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpbGwgaW4gU3RhbmRhcmROYW1lIGZpZWxkIGluIHN0cnVjdCByZXR1cm5lZCBmcm9tIEdldFRpbWVab25lSW5mb3JtYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIHN0dWJzIGZvciBmdW5jdGlvbnMgdXNlZCBieSBuZXdlciBycGNydDQgZGxscy4KCgkqIG9iamVjdHMvZGMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZXREZXZpY2VDYXBzOiBtYWtlIHN1cmUgdGhlIGRldkNhcHMgZmllbGQgaXMgbm90IE5VTEwgYmVmb3JlCglkZXJlZmVyZW5jaW5nIGl0LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBcmcgMyBvZiBDb0dldENsYXNzT2JqZWN0IGlzIENPU0VSVkVSSU5GTyosIGFkZGVkIHNvbWUgbW9yZSBkZWJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcmFuc2xhdGlvbnMgZm9yIEdlcm1hbiBsYW5ndWFnZS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR2V0Q29udmVydFN0ZyBzdHViLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbGx5IHByaW50IHRoZSBndWlkcyBpbiBEbGxHZXRDbGFzc09iamVjdCgpLgoKCSogUkVBRE1FLCB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHVuaW5zdGFsbCBoaW50cy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU1vZGlmeSBkZWJ1Z2dlciB0byB1bmRlcnN0YW5kIHNwZWNpYWwgdW5kb2N1bWVudGVkICJOYW1lIFRocmVhZCIKCWV4Y2VwdGlvbiBmcm9tIE1TIFZDNi4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZWFsbHkgZG8gbm90IHJvbGwgdXAgaWYgc2VsZWN0aW9uIGlzIGJlaW5nIHRyYWNrZWQgYnkgYXJyb3cga2V5cyBpbgoJdGhlIGRyb3Bkb3duIGxpc3Rib3guCgoJKiBkbGxzL3VzZXIvZGRlbWwuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVdoZW4gY2FsbGluZyBDcmVhdGVNdXRleCgpIGhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBtdXRleCBpcyBhbHJlYWR5CgljcmVhdGVkIGluIGFub3RoZXIgcHJvY2Vzcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFmdGVyIGFuIGl0ZW0gdGV4dCBjaGFuZ2VzLCB0aGUgcmVjdGFuZ2xlIHdpZHRoIHNob3VsZCBiZQoJcmVjYWxjdWxhdGVkLgoKMjAwMS0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6CglEb24ndCB1c2UgVEhSRUFEX0lkVG9URUIgaW4gRW51bVRocmVhZFdpbmRvd3MuCgoJKiB1bmljb2RlL3djdG9tYi5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlICd1c2VkJyBpcyBzZXQgdG8gMCBpZiBubyBjb252ZXJzaW9ucyB0YWtlIHBsYWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIHNjcm9sbGluZyBvZiBsaXN0dmlldyB3aXRoIGEgbW91c2Ugd2hlZWwuCgoJKiBvbGUvb2xlMm5scy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW1wbGVtZW50IFRJTUVfRk9SQ0UyNEhPVVJGT1JNQVQgYW5kIFRJTUVfTk9USU1FTUFSS0VSIGZsYWdzIGluCglPTEVfR2V0Rm9ybWF0QS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBjb250cm9scy9tZW51LmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZmlsZXMvZHJpdmUuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglBZGRlZCBUQVNLX0dldFB0ci9UQVNLX0dldEN1cnJlbnQgZnVuY3Rpb25zIHRvIGdldCB0aGUgVERCIGZvciBhIHRhc2sKCWhhbmRsZS4KCgkqIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVW5pZmllZCAxNi1iaXQgYW5kIDMyLWJpdCBzY2hlZHVsaW5nIGEgYml0IG1vcmUuCgoJKiBtc2Rvcy9kb3Njb25mLmM6CglEb24ndCBjYWxsIHN0cnRvayB0d2ljZSBpZiBpdCBmYWlsZWQgdGhlIGZpcnN0IHRpbWUuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFrZSBzdXJlIHRoZSBwcm9jZXNzIHNvY2tldCBpcyBub24tYmxvY2tpbmcuCglEb24ndCBmYWlsIGlmIG5vdGhpbmcgcmVhZHkgb24gcmVjdm1zZyBmb3IgYSBmaWxlIGRlc2NyaXB0b3IuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgb2JqZWN0cy9mb250LmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggbWVtYmVyIG5hbWVzIGluIE5FV1RFWFRNRVRSSUNFWCBzdHJ1Y3RzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRXJhc2UgdGhlIGluLW1lbW9yeSBEQyBmb3IgdHJlZXZpZXcgYW5kIGZpeGVzIHRoZSByZWN0YW5nbGUgY2FsY3VsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU2V0IGJhY2tncm91bmQgbW9kZSB0byB0cmFuc3BhcmVudCBiZWZvcmUgY2FsbGluZyBvd25lci1kcmF3biB1c2VyCgloYW5kbGluZy4KCjIwMDEtMDQtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZm9udC5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3BzZHJ2LnJlZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVmFyaW91cyByZWdpc3RyeS1yZWxhdGVkIFBvc3RTY3JpcHQgZHJpdmVyIGVuaGFuY2VtZW50cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEbyBub3Qgc2VuZCB0aGUgRU5fQ0hBTkdFIG5vdGlmaWNhdGlvbiBtZXNzYWdlIHVudGlsIHRoZSBzZWxlY3Rpb24KCXN0YXJ0IGFuZCBlbmQgdmFsdWVzIGFyZSBmaWxsZWQgaW4uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJR3VzdGF2byBOb3JvbmhhIFNpbHZhIChLb1YpIDxrb3ZAZGViaWFuLm9yZz4KCUFkZGVkIFVTIGludGVybmF0aW9uYWwga2V5Ym9hcmQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zeXNwYXJhbXMuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkIHZhbHVlIDEwNiB0byBTeXN0ZW1QYXJhbWV0ZXJzSW5mby4KCjIwMDEtMDMtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5QTCwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLndpbjMyLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOgoJSm9obiBGIFN0dXJ0eiA8anN0dXJ0ekBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBjYWxsYmFjayBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBmaWxlIHR3aWNlIGluIHRoZSBOVUxMIGZpbGVuYW1lIGNhc2UgZm9yCglTdGdDcmVhdGVEb2NGaWxlLgoKCSogY29udHJvbHMvZWRpdC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGZvcm1hdCBlbmdpbmUgdG8gcmVkdWNlIGZsaWNrZXIuCgoyMDAxLTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgZmV3IG9wdGlvbnMKCShEZXNrdG9wLCBNYW5hZ2VkLCBTY3JlZW5EZXB0aCBhbmQgU3luY2hyb25vdXMpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB1bmRlZmluZWQgQyBjb25zdHJ1Y3RzICh2YWwgYXNzaWdubWVudCBpbiBleHByZXNzaW9ucyB1c2luZyBpdCwKCXBvc3RpbmMgb3BlcmF0b3JzIGluIG1hY3JvcykuCgoJKiBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCURvbid0IGxvYWQgdXNlcjMyIHRvbyBlYXJseSBvbiBmb3IgMTYtYml0IGFwcHMsIHNvIHRoYXQgYXBwLXNwZWNpZmljCgljb25maWcgY2FuIGJlIGF2YWlsYWJsZSB3aGlsZSBsb2FkaW5nIGl0LgoKCSogd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHZXQgYW5kIHByaW50IGNsYXNzIG5hbWUgZm9yIHJpZ2h0IHdpbmRvdyBpbiBXSU5fV2Fsa1dpbmRvd3MuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLAoJICBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oOgoJQWx3YXlzIGxvYWQgdGhlIDMyLWJpdCBkbGwgY29udGFpbmluZyBhIGdpdmVuIDE2LWJpdCBidWlsdGluLgoJQ2hlY2sgdGhlIG1vZHVsZSBuYW1lIGluIGFkZGl0aW9uIHRvIHRoZSBmaWxlIG5hbWUgd2hlbiBsb2FkaW5nIGEKCTE2LWJpdCBidWlsdGluIGRsbC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsCgkgIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCS0gQWx3YXlzIHVzZSBhIGRvdWJsZS1idWZmZXJlZCB2aXN1YWwgaWYgb25lIGlzIGF2YWlsYWJsZS4KCS0gRW5zdXJlIHRoYXQgYWxsIGNvbG9ybWFwcyBjcmVhdGVkIHVzZSB0aGUgZG91YmxlLWJ1ZmZlcmVkIHZpc3VhbCBpZgoJICBpdCBleGlzdHMuIFRoaXMgcHJldmVudHMgcHJvYmxlbXMgd2hlcmUgRFJJIEdMIGltcGxlbWVudGF0aW9ucyBmYWlsCgkgIHRvIHdvcmsgdW5sZXNzIHRoZSBjb2xvcm1hcCB2aXN1YWwgbWF0Y2hlcyB0aGUgd2luZG93IHZpc3VhbCBtYXRjaGVzIHRoZQoJICBnbFggdmlzdWFsLgoJLSBHZXQgYXJvdW5kIHNpbWlsYXIgdmlzdWFsIGlzc3VlIHdpdGggdGhlIGRlZmF1bHQgR0wgY29udGV4dCBjcmVhdGVkIGZvcgoJICBhcHBzIHRoYXQgZG9uJ3QgY3JlYXRlIHRoZWlyIG93biBjb250ZXh0cyBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBHTCBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRml4ZWQgY29tbWFuZC1saW5lIGV4YW1wbGUuCgoyMDAxLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0U6CglSZWxlYXNlIDIwMDEwMzI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGFkZGl0aW9uYWwgZGVmYXVsdHMgYW5kIHNhbXBsZXMgdG8gW2ZvbnRzXSBzZWN0aW9uLgoKMjAwMS0wMy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2Mvb3B0aW9ucy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJQ2xlYW51cCBwcm9wZXJseSBvbiB4MTFkcnYgdW5sb2FkaW5nLgoJTW92ZWQgLS1zeW5jaHJvbm91cyBvcHRpb24gaW50byBjb25maWcgZmlsZS4KCVJlbW92ZWQgLS1kZXNrdG9wLCAtLWRpc3BsYXkgYW5kIC0tbGFuZ3VhZ2UgY29tbWFuZC1saW5lIG9wdGlvbnMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJLSBNQ0lfU0FWRSBzaG91bGQgb3ZlcndyaXRlIGl0cyBkZXN0aW5hdGlvbiBmaWxlLgoJLSB3aWRDbG9zZSgpIGlzIHNvbWV0aW1lcyBmYWlsaW5nLi4uIE1DSSAoaW4gV0FWRV9tY2lSZWNvcmRDYWxsYmFjaykKCSAgc2hvdWxkbid0IHF1ZXVlIHVwIGJ1ZmZlcnMgaWYgaXQga25vd3Mgd2UgYXJlIG5vIGxvbmdlciByZWNvcmRpbmcuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGZpbGVzL3Byb2ZpbGUuYywgbWVtb3J5L2xvY2FsLmMsCgkgIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgd2luZG93cy91c2VyLmM6CglTbWFsbCBkbGwgc2VwYXJhdGlvbiBmaXhlcy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVVzZSBURUIgc3RhdGljIGJ1ZmZlciBmb3IgVW5pY29kZSBjb252ZXJzaW9uLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIG9mIC5ocHAgZmlsZXMgKGFub3RoZXIgZXh0ZW5zaW9uIGZvciBDKysgaGVhZGVycykuCglUaGUgd3JhcHBlciBjb2RlIG5lZWRzIHRvIGltcG9ydCBkbGxzIHRvby4KCUFsbCB0aGUgZ2VuZXJhdGVkIHdyYXBwZXIgZmlsZXMgd2VyZSBpZGVudGljYWwsIHRoZSAndmFyaWFibGUnCglzdWJzaXR1dGlvbiB3YXMgZG9uZSBvbiB0aGUgdGVtcGxhdGUgaXRzZWxmLiBPdXBzIQoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0VmVyc2lvbkluZm8zMlRvMTY6IHRoZSBlbmQgb2YgdGhlIGNoaWxkIGxpc3QgbWF5IGFsc28gYmUgbWFya2VkCglieSBhIDAtYnl0ZSBjaGlsZC4KCjIwMDEtMDMtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9hc3luYy5jLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJVXNlIHBvbGwoKSBvbiB0aGUgY2xpZW50LXNpZGUgZHVyaW5nIHNlcnZlciB3YWl0cyB0byBpbXBsZW1lbnQKCW92ZXJsYXBwZWQgSS9PLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NvbnNvbGUuYywKCSAgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVVzZSB0aGUgbmV3IHNlbmRfZmQgbWVjaGFuaXNtIGZvciB0aGUgc2V0X2NvbnNvbGVfZmQgc2VydmVyIHJlcXVlc3QuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAbWFuZHJha2Vzb2Z0LmNvbT4KCUFkZGVkIG5lZWRlZCBzdHJpbmcuaCBpbmNsdWRlcy4KCjIwMDEtMDMtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUNsZWFuZWQgdXAgYXNzdW1wdGlvbnMgYWJvdXQgV1NfQ0hJTEQgZmxhZyBzbyB0aGF0IHdlIGNhbiBhbGxvdyBpdCB0bwoJYmUgY2hhbmdlZCBpbiBTZXRXaW5kb3dMb25nLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5jcmVhc2UgZGVidWcgYnVmZmVyIHNpemUgdXAgdG8gMTAyNCBieXRlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuUEwsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS53aW4zMiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvdGVzdC5wbCwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54cywgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3Quc3BlYzoKCUFkZGVkIGZpcnN0IHZlcnNpb24gb2YgdGhlIFBlcmwgcmVncmVzc2lvbiB0ZXN0aW5nIGZyYW1ld29yay4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwKCSAgbG9hZGVyL2xvYWRvcmRlci5jOgoJQWRkZWQgIioiIHdpbGRjYXJkIGVudHJ5IHRvIERsbE92ZXJyaWRlcyB0byByZXBsYWNlIERsbERlZmF1bHRzCglzZWN0aW9uOyB0aGlzIHdheSBpdCBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgb24gYSBwZXItYXBwIGJhc2lzLgoJUmVtb3ZlZCBjb21waWxlZC1pbiBkZWZhdWx0cyBmb3IgZGxscyBtZW50aW9uZWQgaW4gdGhlIHNhbXBsZSBjb25maWcuCglVcGRhdGUgbWFuIHBhZ2UuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGluY2x1ZGUvbmV0c3BpLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci90cmFjZS5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAbWFuZHJha2Vzb2Z0LmNvbT4KCVdhcm5pbmcgZml4ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dtYy9tY2wuYywgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL2F0b20uYzoKCUplZmYgR2FyemlrIDxqZ2FyemlrQG1hbmRyYWtlc29mdC5jb20+CglBZGRlZCBzb21lIGluY2x1c2lvbnMgb2Ygc3RyaW5nLmggd2hlcmUgbmVjZXNzYXJ5LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEaXNhYmxlIERPTlRfUkVTT0xWRV9ETExfUkVGRVJFTkNFUyBmb3IgYnVpbHRpbiBkbGxzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGxvYWRpbmcgb2YgYnVpbHQtaW4gZGxscyB3aXRoIExPQURfTElCUkFSWV9BU19EQVRBRklMRSBmbGFnIHNldC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTaG93IGFuIGVycm9yIGlmIHNtYWxsIGVub3VnaCBmcmFnbWVudCBzaXplcyBjb3VsZG4ndCBiZSBzZXQuCglGb3JjZSBhIGNvbXBsZXRlIGNsb3NlL3Jlb3BlbiBvZiB0aGUgc291bmQgZGV2aWNlIGlmIHBhdXNlIGlzCglyZXF1ZXN0ZWQgaW4gRGlyZWN0U291bmQgbW9kZSAobWFueSBkcml2ZXJzIHJlcXVpcmUgdGhpcykuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlIG9ic29sZXRlIGFuZCBtaXNsZWFkaW5nIEZJWE1FLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldERldmljZUdhbW1hUmFtcC4KCjIwMDEtMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBpbmNsdWRlL2xvYWRvcmRlci5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2xvYWRvcmRlci5jLAoJICBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9vcHRpb25zLmM6CgktIEFkZGVkIHN1cHBvcnQgZm9yIGFwcC1zcGVjaWZpYyBkbGwgb3ZlcnJpZGVzIHVzaW5nCgkgIEFwcERlZmF1bHRzXDxhcHBuYW1lPlxEbGxPdmVycmlkZXMgY29uZmlndXJhdGlvbiBzZWN0aW9uLgoJLSBCZXR0ZXIgc3VwcG9ydCBmb3IgbXVsdGlwbGUgLS1kbGwgb3B0aW9ucy4KCS0gQWRkZWQgd2FybmluZyBtZXNzYWdlIHRvIGRpc2NvdXJhZ2UgcHV0dGluZyBtdWx0aXBsZSBkbGxzIGluIGEKCSAgc2luZ2xlIG92ZXJyaWRlIGVudHJ5LgoKCSogd2luMzIvZXhjZXB0LmM6CglUZXJtaW5hdGUgcHJvY2VzcyBvbiB1bmhhbmRsZWQgXkMgZXhjZXB0aW9uIGluc3RlYWQgb2YgbGF1bmNoaW5nIHRoZQoJZGVidWdnZXIuCgoJKiBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLAoJICBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldERldmljZUdhbW1hUmFtcC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy93aW4uYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIEdldFdpbmRvd3NNb2R1bGVGaWxlTmFtZVtBL1ddLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglOYXRpdmUgdmVyc2lvbiBzZWVtcyB0byBhbHdheXMgcmUtZHJhdyB0aGUgc2VsZWN0ZWQgdGV4dCBhdCB0aGUgZW5kIG9mCglhIHJvbGx1cC4KCgkqIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmgsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGdhbW1hIHJhbXAgY29kZSB0byB0aGUgWFZpZE1vZGUgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9kZHJhd2kuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW9yZSBEaXJlY3REcmF3IEhBTCB0eXBlIGRlY2xhcmF0aW9ucy4KCjIwMDEtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVNhdHN1a2kgRnVqaXNoaW1hIDxzZkBmcmVlYnNkLm9yZz4KCUZpeGVkIEZyZWVCRFMgeHBnNCBjaGVjay4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9zcGVjbWFrZXIvTWFrZWZpbGUuaW46CglTYXRzdWtpIEZ1amlzaGltYSA8c2ZAZnJlZWJzZC5vcmc+CglVc2UgSU5TVEFMTF9TQ1JJUFQgaW5zdGVhZCBvZiBJTlNUQUxMX1BST0dSQU0gZm9yIHNjcmlwdHMuCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjLCBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi92ZXJzaW9uLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB2ZXJzaW9uIGluZm8gZm9yIGJ1aWx0LWluIG9sZWF1dDMyLmRsbC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeCBzeXN0ZW0gbWVudSBjcmFzaCBieSBlbnN1cmluZyB0aGF0IGl0ZW0tPnRleHQgaXMgbm90IG51bGwgd2hlbgoJTUZfVEVYVCBzZXQuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIElEaXJlY3REcmF3R2FtbWFDb250cm9sIGludGVyZmFjZSBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVHJ1bmNhdGUgdmVyc2lvbiBkYXRhIGlmIHByb3ZpZGVkIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgc291bmQgZGlzYXBwZWFyaW5nIGFmdGVyIG9uLXRoZS1mbHkgc2FtcGxlIHJhdGUgY2hhbmdlcyBhbmQKCWFmdGVyIGNlcnRhaW4gdW5kZXJydW4gY29uZGl0aW9ucy4KCUNvbXBpbGF0aW9uIGZpeGVzIGZvciB3aGVuIFVTRV9EU09VTkQzRCBpcyBkZWZpbmVkLgoKCSogd2luZG93cy93aW5wb3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW4yMDAwOiBJZiBib3RoIFdTX0VYX0xBWUVSRUQgYW5kIFdTX0VYX1RSQU5TUEFSRU5UIHN0eWxlcyBhcmUgc2V0LAoJbW91c2UgY2xpY2tzIHNob3VsZCBnbyBzdHJhaWdodCB0aHJvdWdoIHRoZSB3aW5kb3cuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVNIR2V0U3BlY2lhbEZvbGRlclBhdGhBIG11c3QgYmUgYWJsZSB0byBjcmVhdGUgYSBmdWxsIHBhdGggaWYgaXQKCWRvZXNuJ3QgZXhpc3QuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBmb3IgX3NldGptcDMoKS4KCUltcGxlbWVudGVkIF9zb3BlbigpLgoKMjAwMS0wMy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBZGRlZCB2ZXJzaW9uIGluZm8uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW4xNmRydi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2ZvbnQuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgR2V0VGV4dE1ldHJpY3MgdG8gdW5pY29kZS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvd2ludmVyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcHJvdG90eXBlIG9mIEdldEZpbGVWZXJzaW9uSW5mb0EvVy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRG9jdW1lbnRlZCB0aGluZ3Mga25vd24gdG8gYmUgdW5pbXBsZW1lbnRlZC4KCS0gSW1wbGVtZW50ZWQgQ0JOX1NFTENIQU5HRSwgQ0JOX0tJTExGT0NVUywgYW5kIENCTl9TRUxFTkRPSy4KCS0gQ29ycmVjdGVkIENCRU5fRU5ERURJVCBub3RpZmllcyB0byBhbHdheXMgaGF2ZSBlZGl0IGNvbnRyb2wgdGV4dC4KCS0gTG9ja2VkICJzZWxlY3RlZCIgc3RhdGUgb2YgaWNvbiB0byBmb2N1cyBzdGF0ZSBvZiBlZGl0IGNvbnRyb2wgKGlmCgkgIGl0IGV4aXN0cykganVzdCBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgUkJOX0NISUxEU0laRSBiYW5kIHJlY3RhbmdsZSB0byBtYXRjaCBuYXRpdmUuCgktIENvcnJlY3QgZmxhZ3MgaW4gRGVmZXJXaW5kb3dQb3MgdG8gU1dQX05PWk9SREVSIHRvIG1hdGNoIG5hdGl2ZS4KCS0gTWFrZSBoYW5kbGluZyBDb21ib0JveCBhbmQgQ29tYm9Cb3hFeCB0aGUgc2FtZSB3aGVuIG1vdmluZyBjaGlsZAoJICB3aW5kb3dzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglMYWJlbCB0aGUgd2lkdGggYW5kIGhlaWdodCBjb3JyZWN0bHkgaW4gdGhlIFdJTkRPV1BPUyBkaXNwbGF5LgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIFdpbjIwMDAgV1NfRVhfTEFZRVJFRCB3aW5kb3cgc3R5bGUuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxhY2VkIG9uZSAua2RlIHdpdGggLmtkZTIgaW4gS0RFMiBtZW51IGNvZGUuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBwYXRoIGZyb20gZHBsYXl4IHJlZ2lzdHJ5IGVudHJ5LCBzbyB0aGF0IHRoZSBidWlsdGluIGRwbGF5eAoJY2FuIGJlIGxvYWRlZC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTZXQgTERfTElCUkFSWV9QQVRIIGlmIG5lY2Vzc2FyeSBiZWZvcmUgY2FsbGluZyB3cmMgJiB3aW5lYnVpbGQuCgoyMDAxLTAzLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gZnJvbSBHZXRGaWxlVmVyc2lvbkluZm8oU2l6ZSkgaWYgc3BlY2lmaWVkIGZpbGUgZm91bmQsIGJ1dAoJVlNfVkVSU0lPTl9JTkZPIHJlc291cmNlIG5vdC4KCgkqIHNlcnZlci9zZXJpYWwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmVtb3ZlZCBicm9rZW4gc3VwcG9ydCBmb3IgRVZfVFhFTVBUWSBiZWNhdXNlIGl0IGNhdXNlcyBidXN5IGxvb3BzLgoKCSogc2VydmVyL2FzeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZCBtaXNzaW5nIHJlbGVhc2Ugb2JqZWN0IHNvIHNlcnZlciBleGl0cyBjbGVhbmx5LgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJUmVjYWxjdWxhdGUgbWVudSBzaXplcyBpZiBXTV9JTklUTUVOVSBoYXMgcmVjcmVhdGVkL2NoYW5nZWQgc29tZXRoaW5nLgoKMjAwMS0wMy0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL25scy9jaHQubmxzOgoJSGFubi1odWVpIENoaW91IDxrb2FsYUBtYW5hLmVlLm50dS5lZHUudHc+CglVcGRhdGVkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGRlZCBzdHViIGZvciBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSAobmV3IGZ1bmN0aW9uIGluIFdpbjk4LzIwMDApLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IFVuaWNvZGUvQW5zaSBtZXNzYWdlIHRyYW5zbGF0aW9uIGZvciBzb21lIGxpc3Rib3gvY29tYm9ib3gKCW1lc3NhZ2VzIHdpdGggYSB6ZXJvIHZhbHVlZCBscGFyYW0uIE91dHB1dCBhbiBlcnJvciB3aGVuIHRoZQoJdHJhbnNsYXRpb24gZmFpbHMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBvIGluIE9VVExJTkVURVhUTUVUUklDIGRlZmluaXRpb24uCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJWWV0IGFub3RoZXIgYXR0ZW1wdCBvbiBmaXhpbmcgbm90aWZpY2F0aW9ucyBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIHNvbWUgc3BlY2lmaWMgYWZtZGlycyBhcyBleGFtcGxlcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglEb24ndCBsb2FkIEFGTSBmaWxlcyBmcm9tIHByZWRlZmluZWQgZGlyZWN0b3JpZXM7IHVzZSBbYWZtZGlyc10KCXNlY3Rpb24gaW4gV2luZSBjb25maWcgZmlsZSBpbnN0ZWFkLgoKMjAwMS0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBub3RpZmljYXRpb25zIG9mIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNhbGwgRGVmV2luZG93UHJvYyBmb3IgV01fQ1RMQ09MT1JTVEFUSUMgbWVzc2FnZSB3aGVuIHRoZSBhcHBzIGRvZXMKCW5vdC4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzcGVsbGluZy90eXBvcyBpbiBjb21tZW50cy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIGV4dGVuc2lvbiBmb3IgJ29sZTMyLmRsbCcuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDcmVhdGVSZW1vdGVUaHJlYWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUltcGxlbWVudCBTSEdldEZpbGVJbmZvVyBieSBjYWxsaW5nIFNIR2V0RmlsZUluZm9BLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglIYW5kbGUgZW1wdHkgc3RyaW5ncyBhbmQgaW52YWxpZCB2YWx1ZXMgaW4gbHBzdHJJbml0aWFsRGlyIGZvciAzMiBiaXRzCglvcGVuIGZpbGUgZGlhbG9ncy4KCjIwMDEtMDMtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIHZlcnNpb24xNi5yYyBpbiBSQ19TUkNTIGxpc3QuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIG5lc3RlZCBzZXJ2ZXIgd2FpdHMgKHRvIGFsbG93IHdhaXRpbmcgaW4gc2lnbmFsCgloYW5kbGVycykuCgoJKiBSRUFETUUsIHRvb2xzL3dpbmVjaGVjazoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGEgcGVybCBzY3JpcHQgdG8gY2hlY2sgbWFueSBhc3BlY3RzIG9mIFdpbmUgY29uZmlndXJhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUxQQVJBTSBpbiBmaW5kIGRpYWxvZyB3bV9pbml0ZGlhbG9nIGlzIHRoZSBmaW5kL3JlcGxhY2Ugc3RydWN0dXJlLCBub3QKCWN1c3RkYXRhLgoKCSogZGxscy9rZXJuZWwvbmxzL2x2aS5ubHM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCVVwZGF0ZWQgTGF0dmlhbiBkYXRlIGZvcm1hdC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgU0hFTEwgbGlua2luZyBvZiBLREUyIGRlc2t0b3AvbWVudSBlbnRyaWVzLgoKMjAwMS0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDMwNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgblNlbGVjdGlvbk1hcmsgYW5kIG5Gb2N1c2VkSXRlbSB3aGVuIGluc2VydGluZy9kZWxldGluZy9zb3J0aW5nCglpdGVtcy4KCVNvcnRJdGVtczogSWYgc29ydGluZyBsZXNzIHRoYW4gMiBpdGVtcywgZG8gbm90aGluZy4KCgkqIHdpbjMyL2ZpbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTZXRGaWxlQXBpc1RvT0VNLCBTZXRGaWxlQXBpc1RvQU5TSSBhbmQgQXJlRmlsZUFwaXNBTlNJLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CgktIEJhY2tncm91bmQgb2YgdGhlIGNoaWxkIHduZCBzaG91bGQgYmUgZXJhc2VkIHdpdGggdGhlIHNhbWUgY29sb3IgYXMKCSAgdGhlIGNvbnRyb2wuCgktIERlZmF1bHQgc2Nyb2xsIGFtb3VudCBzaG91bGQgYmUgdGhlIG1pbmltdW0gY2xpZW50IGFyZWEuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVW5ibG9jayB0aGUgZGlhbG9nIG1lc3NhZ2UgbG9vcCB3aXRoIGEgV01fTlVMTCBtZXNzYWdlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVmVkcmFuIFJvZGljIDx2ZWRyYW5AcmVuYXRhLmlyYi5ocj4KCU1hZGUgOCBicHAgdG8gMjQgYml0IGRlcHRoIGNvbnZlcnNpb24gaW4gWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfOAoJZmFzdGVyIGJ5IHVzaW5nIGlubGluZSBhc20uCgoJKiB0b29scy9zcGVjbWFrZXIvbWlzYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGRsbHMvd2lubW0vbW1pby5jOgoJQ2hhbmdlZCBpc29sYXRlZCBmb3IgbG9vcHMgdG8gd2hpbGUgbG9vcHMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5kcmVhcwoJTW9ocikuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVRoZSBmb3IgbG9vcCBpbiBJVHlwZUxpYjJfZm5GaW5kTmFtZSB3YXMgd3JvbmcgKGV4dHJhICc7JykuCgoJKiBmaWxlcy9maWxlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgZmFpbHMgZm9yIHBpcGUgaGFuZGxlcyBhY2NvcmRpbmcgdG8KCU1TRE4sIGFuZCBhbHNvIGZvciBzZXJpYWwgaGFuZGxlcyAoRklMRV9UWVBFX0NIQVIgaW4gZ2VuZXJhbCA/KS4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGdyYXBoaWNzL2RyaXZlci5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglEb24ndCBsb2FkIHRoZSBXSU5FUFMgZHJpdmVyIHVudGlsIGl0J3MgbmVlZGVkLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgRURJVF9VbmxvY2tCdWZmZXIgY29wZSB3aXRoIGRlc3Ryb3llZCB3aW5kb3dzLgoKMjAwMS0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIG1lbW9yeS9oZWFwLmM6CglXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgc3lzdGVtIGhlYXAgYXQgc3RhcnR1cCBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2UKCWl0LCBzaW5jZSBzb21lIFdpbjk1IG5hdGl2ZSBkbGxzIGRlcGVuZCBvbiB0aGF0LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIGFkZCB0cmFjaW5nIHRvIE9wZW5HTCB0aHVua3MKCSAtIHVwZGF0ZSB0byBsYXRlc3QgZ2wuc3BlYyBmaWxlCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBEQ1hfQ0xJUFNJQkxJTkdTIHRvIGZsYWdzIGZvciBEQ0VfR2V0VmlzUmduIG9ubHkgaWYgd2luZG93IGhhcwoJV1NfQ0xJUFNJQkxJTkdTIGJpdCBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gTElTVFZJRVdfQWRkR3JvdXBTZWxlY3Rpb24gYW5kIExJU1RWSUVXX1NldEdyb3VwU2VsZWN0aW9uLCBpZiBubwoJc2VsZWN0aW9uIG1hcmsgaGFzIGJlZW4gc2V0LCBqdXN0IHNlbGVjdCB0aGUgY3VycmVudCBpdGVtLgoJSW4gTElTVFZJRVdfU2V0R3JvdXBTZWxlY3Rpb24gd2UgbXVzdCBhbHNvIHNldCB0aGUgc2VsZWN0aW9uIG1hcmsgaW4KCXRoYXQgY2FzZSAoYW5kIG9ubHkgaW4gdGhhdCBjYXNlKS4KCVJlbW92ZWQgYSBuYXVnaHR5ICc7JyAoc3BvdHRlZCBieSBFcmljIFBvdWVjaCkuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgYSB0YXJnZXQgaGFzIEMrKyBzb3VyY2VzLCB0aGVuIHVzZSBnKysgdG8gbGluayBpdCAoZml4ZXMgIzE2MikuCglSZW1vdmVkIFNPTkFNRSwgaXQncyBub3QgcmVsZXZhbnQgZm9yIGRsbHMgYW5kIHdhcyB1bnVzZWQgYW55d2F5LgoKMjAwMS0wMy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogRml4ZWQgZmlsZSBkZXNjcmlwdG9yIGxlYWsuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBmaWxlcy9kaXJlY3RvcnkuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNvbWUgbW9yZSBtZXNzYWdlIGNsZWFudXBzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogQ2hyaXMgSmFjb2Jzb24KCVNtYWxsIGJ1ZyBmaXguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIGVycm9yIGNvZGUgdG8gMCBmb3IgY29tbW9uIGRpYWxvZyBmaWxlCglmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIGZpbGVzIGZvdW5kIGluIGFuICdpbmNsdWRlJyBkaXJlY3RvcnksIHRvIHRoZSAnbWlzYyBzb3VyY2VzJyBsaXN0LgoKMjAwMS0wMy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUNyZWF0ZSB0aGUgc2VydmVyIHBpcGVzIG9uIHRoZSBjbGllbnQgc2lkZSBhbmQgdHJhbnNmZXIgdGhlbSB0byB0aGUKCXNlcnZlciBvbiB0aHJlYWQgY3JlYXRpb24uCglVc2UgYSBzaW5nbGUgcGVyLXByb2Nlc3Mgc29ja2V0IGluc3RlYWQgb2Ygb25lIHBlciB0aHJlYWQgZm9yCgl0cmFuc2ZlcnJpbmcgZmlsZSBoYW5kbGVzIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVlbmFibGUgdGhlIHdyYXBwZXIgc3VwcG9ydC4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglTcXVhc2ggYW5vdGhlciBBRk0gY2hhcmFjdGVyIG1ldHJpY3MgcGFyc2luZyBidWcuCgoyMDAxLTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCU5ldyBtZWNoYW5pc20gdG8gdHJhbnNmZXIgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGNsaWVudCB0byBzZXJ2ZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGUKCVNvbWUgbWlub3IgY2hhbmdlcyB0byB0aGUgR2VybWFuIGtleWJvYXJkIGxheW91dC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQG1jaHAuc2llbWVucy5kZT4KCUF2b2lkIGNyYXNoIGF0IGVuZCBvZiBsaXN0LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUZpeCBidWcgaW4gQUZNIGNoYXJhY3RlciB3aWR0aCBwYXJzaW5nLgoKCSogd2luMzIvZGV2aWNlLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2V4dGljb24uYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGRyYXcuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgZGVidWdnZXIvdHlwZXMuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNtYWxsICd0eXBvcyBpbiBjb21tZW50cycgZml4ZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglVc2UgdGhlIHN0YW5kYXJkIENyZWF0ZVRocmVhZCByb3V0aW5lIHRvIGNyZWF0ZSAxNi1iaXQgdGFza3MgaW5zdGVhZAoJb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUuCgoJKiBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVJlbW92ZWQgZGVwZW5kZW5jeSBvbiBjb21jdGwzMi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXSU5FX1VOSUNPREVfVEVYVCB3YXMgaW5jb3JyZWN0LgoJRHJvcHBlZCBzdXBwb3J0IGZvciBXSU5FX1VOSUNPREVfVEVYVCgnYycpIGluIEMuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbXBsZW1lbnRlZCBXc0NvbnRyb2wgY29tbWFuZCB3aXRoIGlkIDB4MTAxLgoKCSogZGxscy9rZXJuZWwvbmxzL2Fmay5ubHMsIGRsbHMva2VybmVsL25scy9iZWwubmxzLCBkbGxzL2tlcm5lbC9ubHMvYmdyLm5scywgZGxscy9rZXJuZWwvbmxzL2NhdC5ubHMsIGRsbHMva2VybmVsL25scy9jemUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVhLm5scywgZGxscy9rZXJuZWwvbmxzL2RlYy5ubHMsIGRsbHMva2VybmVsL25scy9kZWwubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVzLm5scywgZGxscy9rZXJuZWwvbmxzL2VzbS5ubHMsIGRsbHMva2VybmVsL25scy9lc24ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNwLm5scywgZGxscy9rZXJuZWwvbmxzL2V1cS5ubHMsIGRsbHMva2VybmVsL25scy9maW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJhLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYi5ubHMsIGRsbHMva2VybmVsL25scy9mcmMubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJsLm5scywgZGxscy9rZXJuZWwvbmxzL2Zycy5ubHMsIGRsbHMva2VybmVsL25scy9ncmMubmxzLCBkbGxzL2tlcm5lbC9ubHMvaHVuLm5scywgZGxscy9rZXJuZWwvbmxzL2luZC5ubHMsIGRsbHMva2VybmVsL25scy9pc2wubmxzLCBkbGxzL2tlcm5lbC9ubHMvaXRhLm5scywgZGxscy9rZXJuZWwvbmxzL2l0cy5ubHMsIGRsbHMva2VybmVsL25scy9qcG4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywgZGxscy9rZXJuZWwvbmxzL25sZC5ubHMsIGRsbHMva2VybmVsL25scy9ub24ubmxzLCBkbGxzL2tlcm5lbC9ubHMvbm9yLm5scywgZGxscy9rZXJuZWwvbmxzL3Bsay5ubHMsIGRsbHMva2VybmVsL25scy9wdGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvcHRnLm5scywgZGxscy9rZXJuZWwvbmxzL3JvbS5ubHMsIGRsbHMva2VybmVsL25scy9za3kubmxzLCBkbGxzL2tlcm5lbC9ubHMvc2x2Lm5scywgZGxscy9rZXJuZWwvbmxzL3N2ZS5ubHMsIGRsbHMva2VybmVsL25scy90cmsubmxzOgoJUHJ6ZW15c2xhdyBCcnVza2kgPGY2NjMzNnBiQGFzay5ldGkucGcuZ2RhLnBsPgoJQWRkZWQgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgZGVmaW5pdGlvbiBpbiBtb3N0IG5scyBmaWxlcy4KCjIwMDEtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJTmV3IHNldCBvZiBtYWNyb3MgZm9yIHNlcnZlciBjYWxsczsgbWFrZXMgcmVxdWVzdHMgd2l0aG91dCB2YXJpYWJsZQoJcGFydCBzb21ld2hhdCBmYXN0ZXIuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJTW92ZWQgUFRIUkVBRF9pbml0X2RvbmUgb3V0IG9mIHRoZSAjaWZkZWYuCgoyMDAxLTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3VzZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBzdHVicyB0byBLRVJORUwzMiBhbmQgVVNFUjMyLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgZmlsZW5hbWVzIHdpdGggc3BhY2VzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglNYXAgMzIgYml0cyByZXNvdXJjZSBmb3IgMTYgYml0cyBwcmludCBkaWFsb2cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdldFN5c0NvbG9yQnJ1c2goQ09MT1JfV0lORE9XKSB3aGVuIHRoZXJlIGlzIG5vIGJydXNoIGZvciBkcmF3aW5nCgliYWNrZ3JvdW5kIGluIGxpc3Rib3guCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglEYXZpZCBHcmFudCA8ZGF2ZUByZWFjaC5uZXQ+CglBZGRlZCAocGFydGlhbCkgc3VwcG9ydCBmb3IgRk9fQ09QWSBhbmQgRk9fREVMRVRFLgoKMjAwMS0wMi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdmVyc2lvbi5yYywgZGxscy91c2VyL3Jlc291cmNlcy92ZXJzaW9uMTYucmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwucmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC92ZXJzaW9uLnJjLCBkbGxzL2tlcm5lbC92ZXJzaW9uMTYucmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS92ZXJzaW9uLnJjLCBkbGxzL2dkaS92ZXJzaW9uMTYucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHZlcnNpb24gaW5mb3JtYXRpb24gKDE2IGFuZCAzMiBiaXQpIHRvIGNvcmUgYnVpbHQtaW4gZGxsczoKCWtybmwzODYuZXhlL2tlcm5lbDMyLmRsbCwgdXNlci5leGUvdXNlcjMyLmRsbCwgZ2RpLmV4ZS9nZGkzMi5kbGwuCglQcm92aWRlIGEgd2F5IGZvciByZWFkaW5nIHZlcnNpb24gaW5mb3JtYXRpb24gdXNpbmcgc3RhbmRhcmQgQVBJOgoJR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSAtPiBHZXRGaWxlVmVyc2lvbkluZm8gLT4gVmVyUXVlcnlWYWx1ZS4KCgkqIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJT25seSBjcmVhdGUgdGhlIHN5c3RlbSBoZWFwIHdoZW4gd2UgYWN0dWFsbHkgbmVlZCBpdC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBtZW1vcnkvZ2xvYmFsLmM6CglBbGxvY2F0aW9ucyBkbyBub3QgbmVlZCB0byBiZSBvbiB0aGUgc3lzdGVtIGhlYXAuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUhvcml6L1ZlcnQgZGV0ZXJtaW5hdGlvbiBtdXN0IGJlIGR5bmFtaWMsIGFzIHRoZSBzdHlsZSBtYXkgbm90IGJlIHNldAoJdXBvbiBjcmVhdGlvbjsgaW1wcm92ZWQgcG9zaXRpb25pbmcgYW5kIHNjcm9sbGluZy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYWxpZ25tZW50IHByb2JsZW1zIHdpdGggTk1QR1NDUk9MTCBzdHJ1Y3QuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgZml4bWUgZm9yIFNQSV9HRVRXSEVFTFNDUk9MTExJTkVTIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2YgMy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXBhcmUgYmFja2dyb3VuZCB3aGlsZSBkcmF3aW5nIHJhZGlvIGJ1dHRvbnMgYW5kIGNoZWNrYm94ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHBheSBhdHRlbnRpb24gdG8gaWYgb3VyIGNhbGwgdG8KCSAgU2V0Q2xpcGJvYXJkRGF0YSBmcm9tIHRoZSBYMTFEUlYgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24gd29ya3MuIElmIG5vdAoJICB3ZSBuZWVkIHRvIGRlbGV0ZSB0aGUgZ2xvYmFsIGJsb2NrIHdlIGFsbG9jYXRlZC4gVGhpcyBpcyBhIHNldmVyIG1lbW9yeQoJICBsZWFrIHdpdGggbGFyZ2UgY2xpcGJvYXJkIGl0ZW1zLgoJLSBJZiBhbiBYIHNlbGVjdGlvbiBpdCB0b28gbGFyZ2UgdGhlbiBYIG1heSBnaXZlIGl0IHRvIHVzIGluIGNodW5rcywKCSAgd2Ugd2VyZSBub3QgaGFuZGxpbmcgdGhpcyB3ZWxsLgoKCSogZGxscy9rZXJuZWwvbmxzL3Vrci5ubHM6CglWYWxlcnkgS2FydGVsIDxrdm5AaWdrLmtpZXYudWE+CglVcGRhdGVkIGFsbCBmaWVsZHMgd2l0aCBVa3JhaW5pYW4gdmFsdWVzLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy90dHlkcnYvd25kLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJRG8gbm90IGFsbG9jYXRlIGFueSBVU0VSIGRhdGEgb24gdGhlIHN5c3RlbSBoZWFwLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jcGwuaCwgaW5jbHVkZS93aW51c2VyLmgsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBIGZpcnN0IHN0YWIgYXQgaW1wbGVtZW50aW5nIHRoZSBSdW5EbGwgZmVhdHVyZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglCdWlsZENvbW1EQ0IxNiBoYWQgYSByYXRoZXIgYnJva2VuIGJhdWQgcmF0ZSBoYW5kbGluZy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSB0aGUgd2luZWxhdW5jaGVyIHN1cHBvcnQgd2luZWxpYiBhcHAgaW52b2NhdGlvbnMuIEZpeGVkIGEgZmV3CglmaWxlIHBhdGggaXNzdWVzLgoKMjAwMS0wMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc2VwYXJhdGUgc2VydmVyIHBpcGUgdG8gd2FpdCBvbiBibG9ja2luZyBzZXJ2ZXIgY2FsbHMuCglTZW5kIHRoZSBjb21wbGV0ZSByZXF1ZXN0L3JlcGx5IHRocm91Z2ggdGhlIHJlcXVlc3QgZmlmbyBpbnN0ZWFkIG9mCglqdXN0IGEgZHVtbXkgYnl0ZS4KCUNvbnZlcnQgZXJyb3Igc3RhdHVzIHRvIHRleHQgaW4gc2VydmVyIHJlcGx5IHRyYWNpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglDb25maXJtIGZpbGUgZGVsZXRlcy4gIE1ha2UgZGVsZXRlIGNvbmZpcm1hdGlvbiBtZXNzYWdlcyBtb3JlCgljb25zaXN0ZW50LiBJbXByb3ZlIHRyYWNlIG1lc3NhZ2VzIG9uIGRlbGV0ZSBmYWlsdXJlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzaGVsbCBzdXBwb3J0IGZvciBkZWxldGluZyBmaWxlcyB1c2luZyB0aGUgRGVsZXRlIGtleS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBpbmNsdWRlL3dpbnNwb29sLmg6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUltcGxlbWVudCBFbnVtUHJpbnRlckRhdGFFeHtBfFd9LgoKCSogZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IG9yZGluYWxzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCV9fZ2V0bWFpbmFyZ3MgbGFzdCBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gbmV3X21vZGUuCgoyMDAxLTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCVNtYWxsIHNlcnZlciBwcm90b2NvbCBjbGVhbnVwcy4KCgkqIGRsbHMvb2xlY2xpL29sZWNsaS5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU3R1YiBmb3IgT2xlU2F2ZWRDbGllbnREb2MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW5zZXJ0IHRoZSBpdGVtIGJlZm9yZSBjYWxsaW5nIGEgU2V0Rmlyc3RWaXNpYmxlIHdoaWNoIGNhbiBnZW5lcmF0ZSBhCglXTV9QQUlOVCBtZXNzYWdlLgoKCSogbGlicmFyeS9wb3J0LmM6CglDbGVhciAlZWJwIGJlZm9yZSBlbnRlcmluZyB0aGUgbmV3IHRocmVhZC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdvdCByaWQgb2YgdGhlIFdTSU5GTyBzdHJ1Y3R1cmUuIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUZpeGVkIF9fR2V0TWFpbkFyZ3MuCgoJKiBBTk5PVU5DRSwgUkVBRE1FLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglBZGQgaW5mb3JtYXRpb24gYWJvdXQgcHJlYnVpbHQgZG9jdW1lbnRhdGlvbiBwYWNrYWdlcyBpbgoJb3RoZXItdGhhbi1zZ21sIGZvcm0uCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gZ2l2ZSByb29tIGZvciB0aGUgbnVsbCB0ZXJtaW5hdGlvbiB3aGVuIHRyYW5zbGF0aW5nIHRoZQoJY2xpcGJvYXJkIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBDQl9TRVRDVVJTRUwsIENCRU1fREVMRVRFSVRFTSwgQ0JFTV9HRVRJVEVNLAoJICBDQkVNX3tHRVR8U0VUfVVOSUNPREVGT1JNQVQsIENCX0ZJTkRTVFJJTkdFWEFDVCwgV01fQ09NTUFORCwKCSAgV01fREVMRVRFSVRFTS4KCS0gSW1wbGVtZW50IGV4dGVuZGVkIHN0eWxlIENCRVNfRVhfTk9FRElUSU1BR0UsIGFuZCB3YXJuIG90aGVycyBhcmUKCSAgbm90IHlldCBpbXBsZW1lbnRlZC4KCS0gUmVzdHJ1Y3R1cmUgRHJhd0l0ZW0gY29kZSB0byBkbyB0aGluZ3MgbW9yZSByYXRpb25hbGx5LgoKCSogY29udHJvbHMvY29tYm8uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlc3RydWN0dXJlIFBhaW50VGV4dCBjb2RlIHRvIHJlbW92ZSBGaWxsUmVjdCBmcm9tIG93bmVyLWRyYXduIHBhdGguCgktIENoYW5nZSBTZXRGb2N1cyB0byBpbmRpY2F0ZSBmb2N1cyBzZXQgb25seSBhZnRlciBOb3RpZnkgaXMgc2VudCB0byBvd25lci4KCS0gR2V0IG1vcmUgaW5mbyBpbiBhIHRyYWNlLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBET1NGU19PcGVuRGV2aWNlKCkgZmFpbHMgb24gYSBDT014CglkZXZpY2UuCgoJKiBtaXNjZW11L21haW4uYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL3Rhc2suYzoKCVJlbW92ZWQgYSBmZXcgQ2FsbG91dCBmdW5jdGlvbnMgYnkgZG9pbmcgYSBHZXRQcm9jQWRkcmVzcyBhdCB0aGUgdGltZQoJd2UgYWN0dWFsbHkgbmVlZCB0aGUgZnVuY3Rpb24uCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgTUVNX1NZU1RFTSBoYW5kbGluZyB0byBhdm9pZCB1bm1hcHBpbmcgYXJlYXMgdGhhdCB3ZSBkaWRuJ3QgbW1hcC4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHByb3RvdHlwZXMgb2YgTVNWQ1JUX19fZ2V0bWFpbmFyZ3MgYW5kIE1TVkNSVF9fX3dnZXRtYWluYXJncy4KCVByb3RlY3QgTVNWQ1JUX19hY21kbG4gZ2xvYmFsIHZhcmlhYmxlIGZyb20gY29ycnVwdGlvbi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHR5cGVkZWYgb2YgQ1JJVElDQUxfU0VDVElPTiBvdXQgb2YgI3ByYWdtYSBwYWNrKDEpIGJsb2NrLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJlaGF2aW91ciBvZiBkcm9wZG93biBidXR0b25zLiBXaGVuIGEgZHJvcGRvd24gYnV0dG9uIGlzCgljbGlja2VkLCBpdCBkb2VzIG5vdCBjaGFuZ2UgaW50byBwcmVzc2VkIHN0YXRlLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBFTUYgcmVjb3JkIEVNUl9FWFRTRUxFQ1RDTElQUkdOLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyYW5zbGF0ZWQgbmV3IGNvbW1vbiBkaWFsb2cgcmVzb3VyY2VzIGludG8gR2VybWFuLgoJUmVzaXplZCBmaWxlIGRpYWxvZyBhIGJpdCB0byBtYWtlIHRvb2xiYXIgY29tcGxldGVseSB2aXNpYmxlIGFnYWluLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEdlcm1hbiB0cmFuc2xhdGlvbiwgY2hhbmdlZCBkaWFsb2cgZm9udCB0byBIZWx2ZXRpY2EuCgoyMDAxLTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDEwMjE2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFzc2VydCBvbiBvdXRwdXQgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlIHNlbGVjdGlvbiBhZnRlciBzb3J0aW5nIChpbiBMSVNUVklFV19Tb3J0SXRlbXMpIGJ5IG1ha2luZyBzdXJlCglzZWxlY3Rpb24gbGlzdCBtYXRjaGVzIHN0YXRlcyBvZiBpbmRpdmlkdWFsIGl0ZW1zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRElCL3BpeG1hcCBzeW5jaHJvbml6YXRpb24gZm9yIHtHZXQsU2V0fVBpeGVsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVEJfU0VUQlVUVE9OU0laRSBtZXNzYWdlcyBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCBldmVuIGFmdGVyCglidXR0b25zIGhhdmUgYmVlbiBhZGRlZC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9jb25zb2xlLmM6CglQYXNzIHRoZSBzdGRpbi9zdGRvdXQgaGFuZGxlcyBvbiBzdGFydHVwIHRvIHVzZSBhcyBjb25zb2xlIChiYXNlZCBvbiBhCglwYXRjaCBieSBFcmljIFBvdWVjaCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdGhlIGNvZGVwYWdlIGZvciB0aGUgVHVya2lzaCBrZXlib2FyZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldHRpbmcgdGhlIEhvdEl0ZW0gdG8gLTEgY2FuIGJlIGRpc2FzdHJvdXMgYXQgdGltZXMgaWYgaXQgZXF1YWxzCglvbGRoaXQuCgoJKiB0b29scy9zcGVjbWFrZXIvZGxsLmMsIHRvb2xzL3NwZWNtYWtlci9tYWluLmMsIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIHRvb2xzL3NwZWNtYWtlci9zZWFyY2guYywgdG9vbHMvc3BlY21ha2VyL3NwZWNtYWtlci5oLCB0b29scy9zcGVjbWFrZXIvc3ltYm9sLmMsIHRvb2xzL3NwZWNtYWtlci9SRUFETUU6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBDcmVhdGUgZW50cmllcyBmb3Igb3JkaW5hbCBvbmx5IGV4cG9ydHMsIHVzZSBvcmRpbmFscyBpZiBub24tc3RhbmRhcmQuCgktIEltcHJvdmUgQysrIGRlbWFuZ2xlciwgcmVjb2duaXNlIGRhdGEgdHlwZXMsIGZpeCBzb21lIGJ1Z3MuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUdpdmVzIGJhY2sgdGhlIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIHRvIEdldEZpbGVBdHRyaWJ1dGVzLgoKMjAwMS0wMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGJhY2tzbGFzaCBlc2NhcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJSWYgVmVyUXVlcnlWYWx1ZUEgaXMgY2FsbGVkIHdpdGggYSBQRSByZXNvdXJjZSwgdHJhbnNsYXRlIHRoZSBjYWxsIHRvCglWZXJRdWVyeVZhbHVlVy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnRpbnVlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgU2V0IEhvdCBJdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU2VuZCBMVk5fREVMRVRFSVRFTSBub3RpZmljYXRpb24gZmlyc3QsIHRvIGF2b2lkIGNyYXNoZXMgaWYgdGhlIGFwcAoJcmVxdWVzdHMgTFZJRl9QQVJBTSB3aXRoIExJU1RWSUVXX0dldEl0ZW0oKSBkdXJpbmcgaXRzIExWTl9ERUxFVEVJVEVNCgltZXNzYWdlIGhhbmRsZXIuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpbmNsdWRlcyBmb3IgPHRpbWUuaD4uCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCU1vcnRlbiBXZWxpbmRlciA8dGVycmEtd2luZUBkaWt1LmRrPgoJKFBTRFJWX0FGTUdldENoYXJNZXRyaWNzKTogVXNlIHVuc2lnbmVkIGNoYXJzIChzaW5jZSBpc3NwYWNlIGlzIHVzZWQpLgoJKFBTRFJWX0FGTVBhcnNlKTogRG9uJ3QgY3Jhc2ggb24gbWlzc2luZyBmb250IG5hbWUuICBVc2UgdW5zaWduZWQKCWNoYXJzLiAgRml4IHBlY3VsaWFyIGluY29uc2lzdGVudCBpbmRlbnRhdGlvbi4gIERvbid0IGxlYWsgYSBGSUxFLgoJQ2F0Y2ggcHJvYmxlbWF0aWMgZmlsZXMgd2l0aCBubyBsaW5lIGZlZWQgaW4gdGhlbS4gIERvbid0IG1peAoJY2hhcmFjdGVycyBhbmQgaW50ZWdlcnMuICBEb24ndCBvdmVycnVuIHRoZSBidWZmZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdHVya2lzaCBrZXlib2FyZCBsYXlvdXQuCgoyMDAxLTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCVJlbW92ZWQgb3JkaW5hbCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvbid0IG5lZWQgYSBzcGVjaWZpYyB2YWx1ZS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvaW5pdC5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvdGltZS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgRk9OVE9CSiB0byB1c2UgTE9HRk9OVFcgcmF0aGVyIHRoYW4gTE9HRk9OVDE2LgoJVXBkYXRlZCBwYXJhbWV0ZXJzIG9mIERFVklDRUZPTlRFTlVNUFJPQy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglGaXhlZCBXTV9HRVRURVhUTEVOR1RIIGhhbmRsaW5nLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpX3Jlcy5yYywgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWNpYXZpLmgsIGluY2x1ZGUvdmZ3Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgbWNpYXZpLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQWx3YXlzIHJldHVybiBzdWNjZXNzIGluc3RlYWQgb2Ygb3ZlcmZsb3cgaWYgY2FsbGVyIGRpZG4ndCBzcGVjaWZ5IGEKCWJ1ZmZlci4KCgkqIHRvb2xzL3dpbmVjb25mOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+CglPdXRwdXQgdGhlIHJpZ2h0IG51bWJlciBvZiBiYWNrc2xhc2hlcyBpbiB2YWx1ZXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJlIHNtYXJ0ZXIgYWJvdXQgdGhlIGVsbGlwc2lzIGluIFNQWV9HZXRXbmROYW1lLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBtZW1vcnkvaGVhcC5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1pc2MgdHlwb3MgaW4gY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTGlzdFZpZXdfR2V0SXRlbVJlY3QgYWxyZWFkeSBzZXRzIHJjLmxlZnQuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBvbGUvb2xlMm5scy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWRlYnVnc3RyX3h4eCBhbHJlYWR5IGRvZXMgdGhlIHF1b3RpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgdGhlIGNhbGxiYWNrIGRlY2xhcmF0aW9ucyB0byBhIHNhZmVyIGZvcm1hdC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglUdW5lIHRoZSBkb2NvIHRvIHRoZSBjb2RlIGZvciByZWxheS9zbm9vcCBzcGVjaWZpYy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogd2luMzIvZGV2aWNlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUdpdmUgYm90aCAtLXdpbnZlciBudDQwIGFuZCB3aW4zMSBmb3IgVnhEIHdhcm5pbmcsIGFzIHNvbWUgcHJvZ3JhbXMKCXdvcmsgd2l0aCB3aW4zMS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3N0cnVjdF9jb252ZXJ0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gY29ycmVjdCBERFJBV19Db252ZXJ0X0REREVWSUNFSURFTlRJRklFUl8yX1RvXzEgY29uZnVzaW9uCgktIGZpeCBHZXRBdmFpbGFibGVWaWRNZW0gZGRyYXcgaWZhY2UgY29weSZwYXN0ZSBidWcgKGRvaCAhKQoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZGxscy94MTFkcnYveHZpZG1vZGUuaCwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUd1dHMgb2YgYSBzaW1wbGUgWFZpZE1vZGUtc3VwcG9ydGluZyBEaXJlY3REcmF3IEhBTCBpbiB4MTFkcnYuCgoJKiBmaWxlcy9maWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU2V0TGFzdEVycm9yKCkgZm9yIEdldEZpbGVBdHRyaWJ1dGVzQS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4Y2VwdGlvbiBmb3IgYWxsb3dpbmcgdGhlIHBhcmVudCB0byBzZXQgdGhlIGN1cnNvciBmb3IgYSBjaGlsZCB3bmQgaXMKCXdoZW4gdGhlIGN1cnNvciBpcyBvbiB0aGUgYm9yZGVyIG9mIGEgcmVzaXphYmxlIHduZC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IG1lbnUgaXRlbSB0byBzZXBlcmF0b3Igb25seSB3aGVuIHN0cmluZyBpcyBOVUxMLgoKMjAwMS0wMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGNpZGRpLmgsIGluY2x1ZGUvZGRyYXdpLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWUgaW1wb3J0YW50IHN0dWZmIGZyb20gdGhlIERpcmVjdERyYXcgRERLIGhlYWRlcnMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xvYWRlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzIHdoZW4gYXBwbGljYXRpb24gbG9hZCBmYWlscy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9jcHUuYywgd2luMzIvbmV3Zm5zLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBQZW50aXVtJ3MgcmR0c2MgaW5zdHJ1Y3Rpb24gKGlmIGF2YWlsYWJsZSkgdG8gaW1wbGVtZW50CglRdWVyeVBlcmZvcm1hbmNlQ291bnRlci4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5ubHMuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZGNpbWFuMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL3dpbm5scy93aW5ubHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglQZXRlciBILiBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CgktIG9ubHkgcGFyc2UgQUZNLWZpbGVzLCB3aGljaCBzdGFydCB3aXRoICJCZWdpbkZvbnRNZXRyaWNzIgoJLSB1c2UgZmdldGMgaW5zdGVhZCBvZiBmZ2V0cyB0byBjb3BlIHdpdGggQUZNLUZpbGVzIHdpdGgKCSAgTWFjaW50b3NoLVN0eWxlIGxpbmUtYnJlYWtzICgnXHInKSBpbiB0aGUgcGFyc2VyLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhIGJ1bmNoIG9mIHNobHdhcGkgZnVuY3Rpb25zLCBhZGQgc29tZSBuZXcgc3R1YnMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgUkdCIDU2NSA9PiBSR0IgMDg4OCBjb252ZXJzaW9uLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQga2V5Ym9hcmQgc2hvcnRjdXQgRjIgdG8gcmVuYW1lIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUKCXNoZWxsdmlldyAoYW5kIGluIGNvbW1vbiBkaWFsb2dzKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgcG9ydGFibGUgLmFsaWduIGRpcmVjdGl2ZS4KCUlnbm9yZSAtZGVsYXkgZGlyZWN0aXZlIG9uIHBwYyBvbmx5LgoJQWRkZWQgY29kZSB0byBjYWxsIHRoZSBkbGwgY29uc3RydWN0b3JzLgoKCSogaW5jbHVkZS93aW5udC5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjcm9zIGZvciBwcGMuCgoJKiBjb250cm9scy9tZW51LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IGNyYXNoIG9uIGNsb3NlIGZyb20gd2luZG93IG1hbmFnZXIuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUG9zdE1lc3NhZ2VBL1cgaWdub3JlcyBtZXNzYWdlcyBjb250YWluaW5nIHBvaW50ZXJzIGFuZCByZXR1cm5zCglGQUxTRS9MYXN0RXJyb3IgRVJST1JfSU5WQUxJRF9QQVJFTUVURVIuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVJY29uIG11c3QgcGVyZm9ybSBjb2xvciBkZXB0aCBjb252ZXJzaW9uIGlmIHRoZSBwcm92aWRlZCBiaXRtYXAKCWlzIG5vdCBvZiB0aGUgc2FtZSBkZXB0aCBhcyB0aGUgc2NyZWVuLgoJQWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgoKMjAwMS0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCS0gbWFrZSB0aGUgTGFuZHNjYXBlL1BvcnRyYWl0IGJ1dHRvbnMgZG8gc29tZXRoaW5nLgoJLSBmaXggdGhlc2UgcHJvYmxlbXMgaW4gdGhlIFBhcGVyIFNpemUgYW5kIFNvdXJjZSBjb21ibyBib3hlczoKCSAgMSkgRXZlcnkgdGltZSB0aGUgcHJpbnRlciBzZXR1cCBkaWFsb2cgaXMgb3BlbmVkLCB0aGUgc2V0dGluZ3MKCSAgYXJlIHNldCBiYWNrIHRvIGdhcmJhZ2Ugc2V0dGluZ3MuCgkgIDIpIElmIHRoZSBwYXBlciBzaXplIG9yIHNvdXJjZSBpcyBjaGFuZ2VkLCBhbmQgdGhlbiB0aGUgcHJpbnRlciBpcwoJICBjaGFuZ2VkLCB0aGUgbmV3IHByaW50ZXIgZG9lcyBub3QgZ2V0IHRoZSBuZXcgc2l6ZSBhbmQgc291cmNlCgkgIHNldHRpbmdzIGV2ZW4gdGhvdWdoIGl0IGFwcGVhcnMgdG8gZnJvbSB0aGUgZGlhbG9nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBvYmplY3RzL2RpYi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIENyZWF0ZURJQlNlY3Rpb24sIHRoZSBvZmZzZXQgaW50byB0aGUgZmlsZSBtYXBwaW5nIGRvZXMgbm90IGhhdmUgdG8KCWJlIGEgbXVsdGlwbGUgb2YgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGdyYW51bGFyaXR5LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbWlzc2luZyBkZWZpbml0aW9ucyByZXF1aXJlZCBieSB0aGUgQ29udHJvbCBTcHkgZXhhbXBsZXMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHBsYXlpbmcgb2YgRU1SX0JJVEJMVCwgRU1SX1NUUkVUQ0hCTFQsIEVNUl9NQVNLQkxULAoJRU1SX1BMR0JMVCwgRU1SX1NFVERJQklUU1RPREVWSUNFLCBFTVJfUE9MWVRFWFRPVVRBLCBFTVJfUE9MWVRFWFRPVVRXLAoJRU1SX0ZJTExSR04sIEVNUl9GUkFNRVJHTiwgRU1SX0lOVkVSVFJHTiwgRU1SX1BBSU5UUkdOIGVuaGFuY2VkCgltZXRhZmlsZSByZWNvcmQgdHlwZXMgYWNjb3JkaW5nIHRvIHNwZWNzLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvaGFzaC5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IExIYXNoVmFsT2ZOYW1lU3lzQSBmb3IgNCBMQ0lEcywgZml4IHByb3RvdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBUT09MQkFSX0lEIGFuZCBXTV9TRVRUSU5HQ0hBTkdFLCB0aGV5IGFyZSBub3QgdXNlZC4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVjbGFyZSBSSUNIRURJVF9DTEFTUzIwVyB1c2luZyBhIFdDSEFSIGFycmF5LgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiBhbiBhcHBsaWNhdGlvbiBkaXJlY3RseSBjYWxscyBTZXRDbGlwYm9hcmREYXRhIHdpdGggQ0ZfVEVYVCBhbmQKCXRoZW4gbGF0ZXIgY2FsbGVkIEdldENsaXBib2FyZERhdGEgd2l0aCBDRl9URVhUIHdlIGdhdmUgdGhlbSBhIE5VTEwKCWJlY2F1c2Ugd2Ugd2hlcmUgbm90IGhhbmRsaW5nIHRoaXMgY2FzZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGJlaGF2aW91ciBvZiBFTV9HRVRMSU5FIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgTVNHX1BlZWtNZXNzYWdlIHVzZXMgYW4gaW50ZXJuYWwgdmFyaWFibGUgdG8gYXZvaWQKCWNvcnJ1cHRpb24uCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBmaWxlcy9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvcmVnYXBpL1JFQURNRSwgdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVFJBQ0Ugb3BlbmVkIHJlZ2lzdHJ5IGhhbmRsZXMKCS0gYWRkIHByb3BlciBxdW90ZXMgdG8gd2luZWluc3RhbGwKCS0gc3BlbGxpbmcKCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIG1vdmUgVFNYR3JhYlNlcnZlciBhZnRlciBhIHBvc3NpYmxlIHJldHVybiBGQUxTRTsKCS0gbW92ZSBtaXNwbGFjZWQgY29tbWVudAoJLSBvcHRpbWl6ZSBUU1hHcmFiU2VydmVyIHVzZQoKCSogd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlcnMgZnJvbSBNRElDcmVhdGVDaGlsZCBhbmQgTURJRGVzdHJveUNoaWxkLgoJTWFrZSB0aGUgcGFyYW1ldGVyIG5hbWVzIHNsaWdodGx5IG1vcmUgZGVzY3JpcHRpdmUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYW4gdXBkb3duIGNvbnRyb2wgdG8gdGhlIGNvcHkgY291bnQgZW50cnkuCglEaXNhYmxlIHRoZSBjb2xsYXRlIGJ1dHRvbiBpZiBuby4gb2YgY29waWVzIGlzIDEuCglBZGQgTGFuZHNjYXBlL1BvcnRyYWl0IGljb25zLgoJR2V0IHJpZCBvZiB0aGUgIkR1bW15IENvbW1lbnQiIGxpbmUuCglGaXggdGhlIEVuZ2xpc2ggb2Ygc29tZSBvZiB0aGUgZXJyb3IgbWVzc2FnZXMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW51c2VkIG91dFhmb3JtLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWxsb3cgYW4gYXBwbGljYXRpb24gdG8gcmUtYXNrIGZvciBFWENMVVNJVkUgRGlyZWN0RHJhdyBhY2Nlc3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGVjayBQUk9QU0hFRVRQQUdFQS5wZm5DYWxsYmFjayBmb3IgTlVMTCBwb2ludGVyIGlmIFBTUF9VU0VDQUxMQkFDSwoJaXMgZ2l2ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIFdNX0NIQVJzIGFuZCBwYXNzIHRoZW0gdG8gVFJFRVZJRVdfUHJvY2Vzc0xldHRlcktleXMuIFNlZSBhbHNvCglMSVNUVklFV19Qcm9jZXNzTGV0dGVyS2V5cyBpbiBsaXN0dmlldy5jLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAocmV3cml0ZSksIGFuZCBhZGQgZG9jdW1lbnRhdGlvbiB0byBMSVNUVklFV19Qcm9jZXNzTGV0dGVyS2V5cy4KCUxvd2VyZWQgdGhlIGtleSByZXBldGl0aW9uIGRlbGF5IChBcmljKS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmVxdWlyZSB3cml0ZSBhY2Nlc3Mgb24gdGhlIGZpbGUgaGFuZGxlIHRvIGNyZWF0ZSBhCgljb3B5LW9uLXdyaXRlIG1hcHBpbmcuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBsaWJ0ZXN0L2hlbGxvNS5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgd2luZG93cy9kZWZ3bmQuYywgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvd2luZXBzL2RyaXZlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2UgdGhlIGNhbGxiYWNrIGRlY2xhcmF0aW9ucyB0byBhIHNhZmVyIGZvcm1hdC4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZmlsZXMvZmlsZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBhcmd1bWVudCBmaXhlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gbmFtZSBmaXhlcyAoYWx3YXlzIHVzZSBleHRlcm5hbCBuYW1lKS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGxpYnRlc3QvdmFydGVzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdHlwb3MgaW4gY29tbWVudHMuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbXNsLm5scywgbWlzYy9vcHRpb25zLmMsIHRvb2xzL3dtYy9sYW5nLmMsIHRvb2xzL3dtYy9sYW5ndWFnZS5jLCB0b29scy93cmMvdXRpbHMuYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBNYWxheWFuIGxhbmd1YWdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4IExpc3RWaWV3X0dldEl0ZW1SZWN0KCkgbWFjcm8uCglGaXggdXNlIG9mIExpc3RWaWV3X0dldEl0ZW1SZWN0KCkgbWFjcm8gaW4gbGlzdHZpZXcgY29udHJvbC4KCUFkZCBzb21lIGRvY3VtZW50YXRpb24gdG8gTElTVFZJRVdfR2V0SXRlbVJlY3QoKS4KCgkqIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21hdGguYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21zdmlkZW8uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZGVkIHN1cHBvcnQgZm9yIEFQSTpzIGltcGxlbWVudGVkIHdpdGggX19BU01fR0xPQkFMX0ZVTkMKCS0gUmVvcmdhbml6ZWQgZG9jdW1lbnRhdGlvbiBjaGVja2luZy4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGRpZmZlcmVudGx5IHNpemVkIHN0cnVjdHMgYnkgdXNpbmcgdGhlaXIgZHdTaXplIHBhcmFtZXRlcnMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgd2luZG93cy93aW5wcm9jLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmV3IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBhbGxvdyBjb21jdGwzMiBjb250cm9scyB0byBhY2Nlc3MgdGhlaXIgaW5mb1B0ciBiZWZvcmUgaXQgaGFzCgliZWVuICBhbGxvY2F0ZWQgb3IgYWZ0ZXIgaXQgaGFzIGJlZW4gZnJlZWQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBNTUlPX09wZW4gd29yayB3aXRoIE5VTEwgZmlsZW5hbWUgYWdhaW4uCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvY29udHJvbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIE1ESSBjbGllbnQgd2luZG93IHByb2MuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBjaGFyIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBzaWduZWQuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgZXh0ZXJuICJDIiBmb3IgV2luZWxpYiBDKysgYXBwcy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBMb2FkSW1hZ2UgdG8gbG9hZCB0aGUgbm9uLXN0YW5kYXJkIHNpemVkIGNvbGxhdGUgaWNvbnMuCgoJKiBkbGxzL3dpbmVwcy9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNYXAgJ0NvdXJpZXIgTmV3JyB0byAnQ291cmllcicuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggRU1GIHBvc2l0aW9uaW5nIHdoZW4gcmNsRnJhbWUgaGFzIGEgbm9uLXplcm8gb3JpZ2luLgoKCSogaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2V0dXBhcGkuaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2luc3ZjLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSB0aGUgY2FsbGJhY2sgZGVjbGFyYXRpb25zIHRvIGEgc2FmZXIgZm9ybWF0LgoKCSogZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCWFjbURyaXZlckVudW1XIHNob3VsZG4ndCByZXR1cm4gTU1TWVNFUlJfRVJST1IgaWYKCWFjbURyaXZlckVudW1DYWxsYmFjayByZXR1cm5zIFRSVUUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNldC9HZXRQcmludGVyRGF0YVtFeF0uCglSZW1vdmUgb3JkaW5hbHMgZnJvbSB3aW5zcG9vbC5kcnYuc3BlYyAuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBhIHN0YWIgYXQgaW1wbGVtZW50aW5nIE9sZVNldEF1dG9Db252ZXJ0LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGEgTlVMTCBwdHIgcHJvYmxlbS4KCUFkZGVkIGxvYWRpbmcgb2YgLmFmbSBmaWxlcyBmcm9tIHNldmVyYWwgY29tbW9uIGxvY2F0aW9ucwoJKGdob3N0c2NyaXB0LCBhMnBzLCBlbnNjcmlwdCwgKHRlVGVYKSwgWDExKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb24ndCB0b3VjaCBXQVZFSERScyBkd0xvb3BzIHZhcmlhYmxlLgoKCSogZGxscy93aW5lcHMvcHBkLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTcGFjZXMgZG8gbm90IGhhdmUgdG8gY29tZSBhZnRlciB0aGUgJzonIHRoYXQgZW5kcyBhIGtleXdvcmQuCglNYXAgYmluIG5hbWUgTWFudWFsRW52IHRvIERNQklOX0VOVk1BTlVBTC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgYWxsIGZpbGVzIGFyZSB0ZXJtaW5hdGVkIHdpdGggYSAnXG4nLgoJUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgYWJvdXQgJ2FmeHJlcy5oJyBjb21pbmcgYmFjayBhZnRlciBlZGl0aW5nIGluIFZDLgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFJURiBxdWFsaWZpZXIgaW4gUkMgZmlsZXMuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0aGUgaW50MjEgTEZOIHJlbmFtZSBmaWxlIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggUmVsZWFzZVN0Z01lZGl1bSBmb3IgTWV0YUZpbGVQaWN0IHR5cGVzLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciByb3RhdGVkIHRleHQgd2hlbiBscER4IGlzIHNwZWNpZmllZC4KCUJldHRlciBoYW5kbGluZyBvZiBjdW11bGF0aXZlIHJvdW5kaW5nIGVycm9ycy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBDQ1NfTk9SRVNJWkUgc3R5bGUuCglDaGFuZ2UgdGhlIHNjcm9sbCBkZWx0YSBvbmx5IHdoZW4gdGhlIGFwcCByZXNwb25kcyB0byB0aGUgUEdOX05PVElGWSBtc2cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUluIENvcHlESUJTZWN0aW9uLCB1c2Ugc291cmNlIERJQiBjb2xvcm1hcCBpbnN0ZWFkIGlmIG5vIHBhbGV0dGUgaGFzCgliZWVuIHNlbGVjdGVkIGludG8gdGhlIHNvdXJjZSBEQywgdG8gd29yayBhcm91bmQgc29tZSBYMTEtaW1wb3NlZAoJRElCc2VjdGlvbiBpbXBsZW1lbnRhdGlvbiBkZWZpY2llbmNpZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IERHQTIgbW9kZSBzZXR0aW5nIHRvIHVzZSB0aGUgY29ycmVjdCBjb2xvciBkZXB0aC4KCgkqIHRvb2xzL3dpbmVjb25mOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZpeCB3aW5lY29uZiB0byBnZW5lcmF0ZSBuZXcgY29uZmlnIGZpbGUgZm9ybWF0CgktIGZpeCBzb21lIHZhcmlhYmxlIGNoZWNrcwoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBFTVJfRVhUVEVYVE9VVEEgYW5kIEVNUl9DUkVBVEVNT05PQlJVU0ggZW5oYW5jZWQKCW1ldGFmaWxlIHJlY29yZHMuIEJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBFTVJfU1RSRVRDSERJQklUUyBhbmQKCUVNUl9FWFRURVhUT1VUVy4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1ha2Ugc25vb3Agc3BlY2lmaWMgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBEQ0lDbG9zZVByb3ZpZGVyIHN0dWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElTaGVsbExpbms8QXxXPl9mbkdldFdvcmtpbmdEaXJlY3RvcnksCglJU2hlbGxMaW5rPEF8Vz5fZm5HZXRBcmd1bWVudHMsIElTaGVsbExpbms8QXxXPl9mbkdldEljb25Mb2NhdGlvbi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJT3duZXJkcmF3biBjb21ibyBib3hlcyBzaG91bGQgdXNlIE9EU19DT01CT0JPWEVESVQgaW4gdGhlIGl0ZW1TdGF0ZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZS4KCS0gQWRkIHN0cnVjdHVyZXMgZm9yIENCRU5fSU5TRVJUSVRFTSBub3RpZnkgbWVzc2FnZS4KCgkqIHRvb2xzL3dyYy91dGlscy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB4bWFsbG9jL3hyZWFsbG9jIGxpbWl0cyBmb3IgbGFyZ2UgYmluYXJ5IHJlc291cmNlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRleHQgc2l6ZSBjYWxjdWxhdGlvbiBidWcgaW4gR2V0VGV4dEV4dGVudFBvaW50KCkgZm9yIHdpbmRvdyBkYydzLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglOZXcgc2VjdGlvbiBhYm91dCB3cml0aW5nIGRvY3MgaW4gRG9jQm9vayBhbmQgZGVhbGluZyB3aXRoIHRoZSBXaW5lCglTR01MIGJ1aWxkIHN5c3RlbTsgaGFsZiBkb25lLCBidXQgYSBnb29kIHN0YXJ0LgoKCSogZGxscy93aW5ubHMvd2lubmxzLmMsIGRsbHMvd2lubmxzL3dpbm5scy5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBIGNvdXBsZSBvZiBzdHVicyBmb3IgVGVybWluYWwgU2VydmVyIENsaWVudCAxNiBiaXQuCgoyMDAxLTAxLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglNYXR0aGV3IENsYXJrZSA8TWF0dGhld19DbGFya2VAbWluZGxpbmsuYmMuY2E+CglEb24ndCBhc3N1bWUgLnNwZWMgZmlsZXMgYXJlIGZvdW5kIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgYXMgdGhpcwoJaXMgbm90IHRoZSBjYXNlIHdoZW4gYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN5bmNocm9uaXplIGFjY2VzcyB0byBNRVNTQUdFUVVFVUUgbWVtYmVycy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBtb3JlIDE2LT4zMiBtYXBwaW5ncyBmb3IgSUNNKiBtZXNzYWdlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkdmlkZW8uZGxsIGZvcmdldHMgdG8gc2V0IHRoZSBERFNEX0NBUFMgZmxhZywganVzdCBhc3N1bWUgaXQgc2V0LgoJT3V0cHV0IG1vcmUgZGVidWcgaW5mbyBvbiBmYWlsdXJlLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglEaXNhYmxlZCBzZXR0aW5nIG9mIHdpbmRvdyBvcmlnaW4gZnJvbSBhbiBFTUYuCgoyMDAxLTAxLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBWaWRlb0NhcERyaXZlckRlc2NBbmRWZXIuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy91c2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgZXhwb3J0cy4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRG9uJ3QgZGlzYWJsZSBrZXlib2FyZCBhdXRvcmVwZWF0LCBzaW5jZSBhdXRvcmVwZWF0IGlzIG5vdyBkZXRlY3RhYmxlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJLSBTaWVkbGVyMyBhcHBlYXJzIHRvIGhhdmUgcmF0aGVyIGxpbWl0ZWQgYnVmZmVycyBmb3IgZGV2aWNlL2Rlc2NyaXB0aW9uCgkgIHN0cmluZ3MgYW5kIGNyYXNoZXMgd2l0aCB0aG9zZSBsb25nIHN0cmluZ3MuIFNob3J0ZW5lZCB0aG9zZSBzdHJpbmdzLgoJLSBBbHNvIGRyaXZlciBuZWVkcyB0byBiZSAiZGlzcGxheSIgZm9yIGRpc3BsYXkgZGV2aWNlcyAoc29tZSBvdGhlcgoJICBwcm9ncmFtcyByZWx5IG9uIHRoYXQgaW5mbyBJIHNlZW0gdG8gcmVtZW1iZXIpLgoJLSBGaXhlZCBEU3VyZmFjZTo6R2V0U3VyZmFjZURlc2MgdG8gbm90IGp1c3QgYmxpbmRseSBjb3B5IGEKCSAgRERTVVJGQUNFREVTQzIgc3RydWN0IG92ZXIgYSBzbWFsbGVyIEREU1VSRkFDRURFU0Mgb25lLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBjaXJjdWxhciBidWZmZXJpbmcgZm9yIHRoZSBkaW5wdXQgbW91c2UgZGV2aWNlLgoJTWFwcGVkIHRoZSBtb3VzZSB3YXJwIG9uIHRoZSBjZW50ZXIgb2YgdGhlIGNvb3BlcmF0aXZlIHdpbmRvdywgd2hpY2gKCXNob3VsZCBtYWtlIHdpbmRvd2VkIGdhbWVzIHdvcmsgYmV0dGVyIGluIG1hbmFnZWQgbW9kZS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgaW50byBhY2NvdW50IHVucHJpbnRhYmxlIG1hcmdpbnMgaW4gcHNkcnYuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+Cglwc2RydidzIERldmljZUNhcGFiaWxpdGllcyBzaG91bGQgbGlzdCBETUJJTl9BVVRPIGFzIGFuIGF2YWlsYWJsZQoJYmluLgoKCSogZGxscy93aW5lcHMvcHBkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkICJPbmx5T25lIiBwYXBlciBzb3VyY2UsIHVzZWQgYnkgdGhlIEFjcm9iYXQgRGlzdGlsbGVyIFBQRC4KCgkqIGRsbHMvbXN2Y3J0L21hdGguYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIG1jaSBzdHJpbmcgcGFyc2luZyBpc3N1ZXMuCglBZGRlZCBtb3JlIG1hcHBpbmdzIDMyQVRvMTYuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNpbXBsaWZpZWQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGFzeW5jaHJvbm91cyBNQ0kgbWVzc2FnZSBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRGVsYXkgaW1wb3J0aW5nIHVzZXIzMiAob25seSB1c2VkIGZvciBjb25maWd1cmF0aW9uKS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgb2RkaXRpZXMuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGJpdCBtb3JlIG9mIGZsYWdzIGhhbmRsaW5nIGluIGRyYXdkaWIgZnVuY3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVB1dCBhICdcbicgYXQgdGhlIGVuZCBvZiB0aGUgRklYTUUgdG8gcHJldmVudCB2ZXJ5IG9kZCBhbmQgZGlmZmljdWx0Cgl0byBkZWJ1ZyBjcmFzaGVzIGR1ZSB0byBvdmVyZmxvd2luZyBvZiB0aGUgZGVidWcgaW5mbydzIG91dHB1dCBidWZmZXIuCgoJKiB0b29scy9zcGVjbWFrZXIvUkVBRE1FLCB0b29scy9zcGVjbWFrZXIvbWFpbi5jLCB0b29scy9zcGVjbWFrZXIvbXNtYW5nbGUuYywgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jLCB0b29scy9zcGVjbWFrZXIvc3BlY21ha2VyLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wcm92ZSBuYW1lIGRlbWFuZ2xpbmcsIGFkZCAnZGVtYW5nbGUgc3ltYm9sJyBvcHRpb24uCgoyMDAxLTAxLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSBrZXl3b3JkICdmdW5jdGlvbicsIGFzIHJlcXVlc3RlZCBieSBSb2JlcnQgTHViZXJkYS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHR5cG8gd2hpY2ggY2F1c2VkIHRoZSBXcml0ZXRvSG9tZVJlZ2lzdHJ5RmlsZXMgb3B0aW9uIHRvIGJlCglpZ25vcmVkLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZXdyaXRlIFdNX0NSRUFURSB0byBtYXRjaCBuYXRpdmUgKGFsbG9jYXRpbmcgb3duIEVkaXQgY29udHJvbCwgZXRjKS4KCS0gSW1wbGVtZW50IGFkZGl0aW9uYWwgV05EUFJPQ3MgZm9yIHRoZSBDb21ibyBhbmQgRWRpdCBjb250cm9scyB0bwoJICBoYW5kbGUgZGlmZmVyZW50IGZ1bmN0aW9ucy4KCS0gSW1wbGVtZW50IENCRU1fU0VUQ1VSU0VMIGFuZCBDQkVNX0hBU0VESVRDSEFOR0VELgoKCSogY29udHJvbHMvY29tYm8uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFdoZW4gcGFpbnRpbmcgdGhlIHRleHQsIGlmIHRoZSBjb250cm9sIGlzIE9XTkVSRFJBV04gdGhlIGlzc3VlIHRoZQoJICBXTV9EUkFXSVRFTSBtZXNzYWdlLgoJLSBTZXQgdGhlIGZvY3VzZWQgc3RhdHVzIGF0IHRoZSBlbmQgb2YgdGhlIGVuZCBvZiB0aGUgU2V0Zm9jdXMgcm91dGluZS4KCS0gRmxpcCB0aGUgb3JkZXIgb2YgdXBkYXRpbmcgdGhlIGxpc3QgYm94IGFuZCBpc3N1aW5nIHRoZSBXTV9OT1RJRlkKCSAgZm9yIENCTl9FRElUVVBEQVRFIHRvIG1hdGNoIG5hdGl2ZS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglNYWRlIGV4Y2VwdGlvbl9ldmVudF9yZXF1ZXN0IG5vbi1ibG9ja2luZywgYW5kIGFkZGVkCglnZXRfZXhjZXB0aW9uX3N0YXR1cyB0byByZXRyaWV2ZSB0aGUgZXhjZXB0aW9uIHJlc3VsdCByZXR1cm5lZCBieSB0aGUKCWRlYnVnZ2VyLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9wYWludGluZy5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2NvZGVwYWdlLmMsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgb2JqZWN0cy9kaWIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZCA8c3RyaW5nLmg+IHRvIGZpbGVzIHRoYXQgbmVlZGVkIGl0LgoKCSogZmlsZXMvZmlsZS5jLCBtZW1vcnkvYXRvbS5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgbW9yZSBjbGVhbnVwcy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ2hlY2sgdGhhdCB0aGUgbGludXggMi40IGV2ZW50IGludGVyZmFjZSBpcyBhdmFpbGFibGUgYmVmb3JlIGNyZWF0aW5nCglhIGRpbnB1dCBkZXZpY2UgYmFzZWQgb24gaXQuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIGxwRHggYXJyYXkgcHJvcGVybHkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgU1dfUkVTVE9SRSBoYW5kbGluZy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3Qgbm90aWZ5IHBhcmVudCBvZiB0aGUgRWRpdCBjb250cm9sIG9uIFdNX1NFVFRFWFQgd2hlbiBFZGl0IGlzCglwYXJ0IG9mIHRoZSBDb21ib0JveC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIG1ha2UgaGlkZGVuIGJhbmRzIGhhdmUgdmFsaWQgKDAgd2lkdGgpIGNoaWxkIHdpbmRvdyBhcmVhcwoJLSB3aGVuIGhpZGluZyBhIGJhbmQsIGRvbid0IHNob3cgdGhlIHdpbmRvdywgaGlkZSBpdC4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUNoYW5nZWQgd2FpdF9wcm9jZXNzIGFuZCB3YWl0X2RlYnVnX2V2ZW50IHJlcXVlc3RzIHRvIG5ldmVyIGJsb2NrOwoJd2FpdGluZyBpcyBhbHdheXMgZG9uZSB0aHJvdWdoIFdhaXRGb3JTaW5nbGVPYmplY3QoKS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgb3BlbiB0aGUgY29tbSBoYW5kbGUgd2l0aCBHRU5FUklDX1dSSVRFIHZpYSBGSUxFX0dldFVuaXhIYW5kbGUuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCBpbmNsdWRlL3dpbi5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgMTYtYml0IGNhbGxzIGluIERlZldpbmRvd1Byb2MgYnkgMzItYml0LCBwcmVmZXJyaW5nIHVuaWNvZGUKCUFQSSBjYWxscy4KCjIwMDEtMDEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvd3NwcmludGYuYzoKCUdvdCByaWQgb2YgV1BSSU5URl9FeHRyYWN0VkFQdHIuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvZGRyYXcvc3RydWN0X2NvbnZlcnQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWRvcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGJ1Z2ZpeGVzLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3RleHQuYywgbG9hZGVyL3Rhc2suYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJRml4ZWQgdHlwbyBpbiBIS0VZX1VTRVJTLy5EZWZhdWx0IGNyZWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvbid0IHNlbmQgbm90aWZpY2F0aW9ucyBmb3IgdGhlIGluaXRpYWwgZGlzcGxheSBvZiB0aGUgZmlyc3QgdGFiIG9mCgl0aGUgY29udHJvbC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBZGRlZCBhIGZldyBtZXNzYWdlcyBhbmQgbm90aWZpY2F0aW9ucy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRGlzYWJsZWQgc2V0dGluZyBvZiB2aWV3cG9ydCBvcmlnaW4gZnJvbSBhbiBFTUYuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVzdG9yZSB0aGUgYml0X2dyYXZpdHkgdG8gQkdGb3JnZXQgYWZ0ZXIgdXNpbmcgQkdOb3J0aHdlc3QgdG8KCWNvcHkgYml0cyBkdXJpbmcgU2V0V2luZG93UG9zLgoKCSogd2luZWRlZmF1bHQucmVnOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG5lY2Vzc2FyeSByZWdpc3RyeSBlbnRyaWVzIGZvciB0aGUgTW96aWxsYSBBY3RpdmVYIGNvbnRyb2wuCgoyMDAxLTAxLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJT25seSBzZXQgd2luZG93IHRleHQgZm9yIFdNX05DQ1JFQVRFIGluIERlZldpbmRvd1Byb2MqKCkgaW4gY2FzZQoJbHBzek5hbWUgaXMgYSBzdHJpbmcgKGkuZS4gY2hlY2sgSElXT1JEKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL29ibV9yYWRpb2NoZWNrLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJlbW92ZWQgbm9uLXN0YW5kYXJkIE9CTV9SQURJT0NIRUNLIGJpdG1hcC4KCgkqIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvdWl0b29scy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCVVzZSBEcmF3RnJhbWVDb250cm9sKCkgaW5zdGVhZCBvZiBPRU0gYml0bWFwcyB0byBwYWludCBjYXB0aW9uIGJ1dHRvbnMKCWFuZCBtZW51IGNoZWNrIG1hcmtzLgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvdGV4dC5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHdvcmxkIHRyYW5zZm9ybSBzdXBwb3J0LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglTZXZlcmFsIGZpeGVzIGZvciBwbGF5aW5nIGVuaGFuY2VkIG1ldGFmaWxlcyBpbiBhIGdpdmVuIHJlY3RhbmdsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHdvcmxkIHRyYW5zZm9ybSBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgb2JqZWN0cy9mb250LmMsIFJFQURNRSwgZGVidWdnZXIvUkVBRE1FOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcGtnLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CgktIFNwbGl0IFdpbmVsaWIgVXNlciBHdWlkZSBpbnRvIHNtYWxsZXIgZmlsZXMgZm9yIGVhc2llciBtYWludGVuYW5jZQoJICBhbmQgYmV0dGVyIGludGVncmF0aW9uIHdpdGggbWFrZV93aW5laHEuCgktIEFkZCBzb21lIFdpbmVsaWIgZG9jcyBmcm9tIEpvbiBHcmlmZml0aHMuCgktIEZpeCBhIDxzZWN0Mj4gcHJvYmxlbSBpbiBydW5uaW5nLnNnbWwuCgoyMDAxLTAxLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgcmVhZC1vbmx5IGVkaXQgY29udHJvbCBmcm9tIG1vZGlmaWNhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2V4aXQuYzoKCUpvbiBHcmlmZml0aHMgPHRudGpwZ3JpZmZAdHNueHQuY28udWs+CglJbXBsZW1lbnRlZCBfX2RsbG9uZXhpdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCU1pc2MgZml4ZXMgaW4gTElTVFZJRVdfU2V0SW1hZ2VMaXN0LCBMSVNUVklFV19TZXRJdGVtQ291bnQsCglMSVNUVklFV19VcGRhdGVTaXplLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRGlzcGxheSB0aGUgY29uZmlnIGZpbGUgbG9jYXRpb24gaW4gdGhlIGluY29ycmVjdCBjb25maWcgZmlsZSBlcnJvcgoJbWVzc2FnZS4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCVVzZSBpbnQgaW5zdGVhZCBvZiBXQ0hBUiBpbiB2YV9hcmcoKSAoZml4ZXMgZ2NjLWN1cnJlbnQgY29tcGlsYXRpb24KCXByb2JsZW0pLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCB2YXJpb3VzIGRlZmluaXRpb25zIChtb3N0bHkgbWFjcm9zKS4KCUZpeGVkIHR5cG8gaW4gdGhlIEhETl97QkVHSU4sRU5EfURSQUcgbWFjcm9zLgoJQWRkZWQgYSBwb2ludGVyIHR5cGUgZm9yIElNQUdFSU5GTy4KCUZpeGVkIHRoZSByZXR1cm4gdHlwZSBvZiBUcmVlVmlld197U2V0VG9vbFRpcHMsR2V0VG9vbFRpcHN9LgoJRXZlbiBtYWNyb3MgbXVzdCBjb21lIGluIEEvVyBhbmQgbmV1dHJhbCBmb3JtIChzZWUgdGhlIExpc3RWaWV3XyBzZXJpZXMpLgoJRml4ZWQgdHlwbyBpbiBNb250aENhbF9TZXRDb2xvci4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgQ0hBUlJBTkdFLgoKCSogaW5jbHVkZS9wcnNodC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBQU05fR0VUT0JKRUNULgoKCSogZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSAnb3B0aW9ucy5oJyBmb3IgYSBuZWVkZWQgcHJvdG90eXBlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBWYXJDeUZyb21JMSB0byB0YWtlIGEgc2lnbmVkIGNoYXIuCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL21zdmNydC9tYmNzLmMsIG9iamVjdHMvYml0bWFwLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHlwbyBmaXhlcyBpbiBjb21tZW50cy4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLCBkbGxzL21zdmNydC93Y3MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIE5ldyBtc3ZjcnQgdW5pY29kZSBmdW5jdGlvbnMsIHdpbmFwaV9jaGVjay8tV2FsbC8tVyBjbGVhbi4KCS0gRm9yd2FyZCB0byBudGRsbCB3aGVyZSBwb3NzaWJsZS4KCS0gRml4IHNvbWUgLnNwZWMgZW50cmllcyB3aXRoIGluY29ycmVjdCBwYXJhbWV0ZXJzLgoKCSogaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeGVkIFVuaWNvZGUgc3RyaW5ncy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWRlIFNwaW5Db3VudCBGSVhNRSBpbnRvIGEgVFJBQ0UuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUluY3JlYXNlZCBkZWJ1Z2dlciBpbmNsdWRlIGxpbWl0IHRvIDUxMi4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9wZV9pbWFnZS5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIFJlbW92ZSA8c3RyaW5nLmg+IGZyb20gd2lubnQuaC4KCS0gbnRkbGw6IGNvbXBsZXRlIGNydCBmdW5jdGlvbnMsIHByZXZlbnQgbGliYyBpbXBvcnRzLCBmaXggc3NjYW5mLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3Byc2h0Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBGaXggYSB0eXBvIGluIFRCU0FWRVBBUkFNUyBBL1cgZGVjbGFyYXRpb24uCgktIFVzZSAxNiBiaXQgVW5pY29kZSBjb25zdGFudHMgZm9yIHdjIHN0cmluZ3MuCgktIE1ha2Ugc29tZSBzdHJpbmcgY29uc3RhbnRzIGF2YWlsYWJsZSBhcyBVbmljb2RlLgoKMjAwMS0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJRml4ZWQgdGhlIHNpemUgb2YgdGhlIGZpbGUgZGlhbG9nIGljb25zLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZGVkIE5NQ0JFRU5ERURJVCBzdHJ1Y3R1cmUgZm9yIE5PVElGWSBkdW1wLgoJLSBBZGRlZCBkdW1wIG9mIHBvc2l0aW9uaW5nIHN0cnVjdHVyZSBmb3IgV01fV0lORE9XUE9TQ0hBTkd7RUR8SU5HfS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBOTUNCRUVOREVESVR7V3xBfSBzdHJ1Y3R1cmVzIGFuZCBmbGFncy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeCB0aGUgY21kbGluZSBhcmd1bWVudCBwYXNzZWQgdG8gTkVfQ3JlYXRlVGhyZWFkIHRvIGluY2x1ZGUgc3RyaW5nCglsZW5ndGguCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBwb2ludGVyIHR5cGUgZGVjbGFyYXRpb25zICh1c3VhbGx5IFB4eHgpLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUVzY2FwZSBhbnkgc3BhY2VzIGluIGxwc3pPYmplY3ROYW1lIHBhc3NlZCB0byBIdHRwT3BlblJlcXVlc3QuCgoyMDAxLTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogV2FybmluZyBmaXguCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURpc3BsYXkgdGhlIGltcG9ydGluZyBkbGwgaW4gdGhlIDB4ZGVhZGJlZWYgbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfY3Vyc29ycy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfaWNvbnMucmMsIGluY2x1ZGUvd2ludXNlci5oLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbGNjLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5oLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglGaXhlZCBhIG51bWJlciBvZiBpbmNvbXBhdGliaWxpdGllcyBpbiBPRU0gaWNvbnMvY3Vyc29ycyBoYW5kbGluZy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiBURVhUX05leHRMaW5lVy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21zYWNtLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmFzYXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hkb2N2dy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWRvcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93c29jazMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgktIE1pbm9yIGRvY3VtZW50YXRpb24gY2hlY2sgaW1wcm92ZW1lbnRzLgoKMjAwMS0wMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBvbGQgbGludXgvaW5wdXQuaC4KCgkqIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtcGtnLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBjb252ZW5pZW5jZSBzY3JpcHQgZm9yIGdlbmVyYXRpbmcgb25saW5lIGRvY3MgZm9yIHdpbmVocS5jb20uCgoJKiBjb250cm9scy91aXRvb2xzLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglTcGVjaWZpZWQgJ3NpZ25lZCcgb24gY2hhcnMgY29tcGFyZWQgdG8gLTEuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBTR01MIElEIGF0dHJpYnV0ZXMgaW4gcGFja2FnaW5nLnNnbWwgbW9yZSB1bmlxdWUgdG8gYXZvaWQKCWNvbmZsaWN0cyB3aGVuIHdlIGJ1bmRsZSBhbGwgZm91ciBndWlkZXMgaW50byBhIHNpbmdsZSBzZXQuCgoJKiBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbHZlIHJlbWFpbmluZyBwcm9ibGVtcyB3aXRoIHNjcm9sbCBiYXJzIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoyMDAxLTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocToKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIGRiMmh0bWwtd2luZWhxIEhUTUwgZ2VuZXJhdGlvbiBzY3JpcHQuICBXb3JrcyBpbiBEZWJpYW4sIGFuZAoJbWF5IGFjdHVhbGx5IHdvcmsgaW4gUmVkaGF0IG5vdywgdG9vLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTSEVMTDMyLklzTmV0RHJpdmUgYW5kIFNIRUxMMzIuSUxTYXZlVG9TdHJlYW0gbmVlZGVkIGZvcgoJSUUgNS4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLCBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCBmb3IgY2hhbmdlIGluIGNvbmZpZyBmaWxlIG5hbWUuICBSZW1vdmVkIHJlZmVyZW5jZXMgdG8KCW9ic29sZXRlIGdsb2JhbCB3aW5lIGNvbmZpZ3VyYXRpb24gZmlsZSB3aGVyZSBhcHByb3ByaWF0ZS4gIFVwZGF0ZWQKCWNvbmZpZyBvcHRpb24gZm9ybWF0IHRvIG1hdGNoIHRoZSBuZXcgc3ludGF4LiAgTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9jdXJzb3JzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2FwcHN0YXJ0aW5nLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2J1bW1lciwgaW5jbHVkZS9iaXRtYXBzL29jcl9jcm9zcywgaW5jbHVkZS9iaXRtYXBzL29jcl9kcmFnb2JqZWN0LCBpbmNsdWRlL2JpdG1hcHMvb2NyX2hhbmQsIGluY2x1ZGUvYml0bWFwcy9vY3JfaGVscCwgaW5jbHVkZS9iaXRtYXBzL29jcl9pYmVhbSwgaW5jbHVkZS9iaXRtYXBzL29jcl9pY29uLCBpbmNsdWRlL2JpdG1hcHMvb2NyX25vLCBpbmNsdWRlL2JpdG1hcHMvb2NyX25vcm1hbCwgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXplLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemVuZXN3LCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemVucywgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXplbndzZSwgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXpld2UsIGluY2x1ZGUvYml0bWFwcy9vY3JfdXAsIGluY2x1ZGUvYml0bWFwcy9vY3Jfd2FpdCwgaW5jbHVkZS9iaXRtYXBzL29pY19iYW5nLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2JhbmdfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfY2Ryb20sIGluY2x1ZGUvYml0bWFwcy9vaWNfZmxvcHB5LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hhbmQsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGFuZF85NSwgaW5jbHVkZS9iaXRtYXBzL29pY19oZGlzaywgaW5jbHVkZS9iaXRtYXBzL29pY19sYW5kc2NhcGUsIGluY2x1ZGUvYml0bWFwcy9vaWNfbmV0d29yaywgaW5jbHVkZS9iaXRtYXBzL29pY19ub3RlLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25vdGVfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfcG9ydHJhaXQsIGluY2x1ZGUvYml0bWFwcy9vaWNfcXVlcywgaW5jbHVkZS9iaXRtYXBzL29pY19xdWVzXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2ljX3NhbXBsZSwgaW5jbHVkZS9iaXRtYXBzL29pY193aW5laWNvbiwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJU3RvcmUgVVNFUiBpY29ucyBhbmQgY3Vyc29ycyBhcyByZXNvdXJjZXMgaW5zdGVhZCBvZiB4cG0gYml0bWFwcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gYnVmZmVyIGxlbmd0aCBjaGVjay4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVN3aXRjaGVkIGZyb20gd2luZS5jb25maWcgYmFjayB0byB3aW5lLmNvbmYsIG5vIG5lZWQgdG8gdXNlIHNvbWV0aGluZwoJbm90IGxpbnV4IHN0YW5kYXJkLiAgUmVtb3ZlZCB1c2Ugb2Ygb2Jzb2xldGUgIi0tY29uZmlnIiBvcHRpb24gd2hlbgoJY2FsbGluZyByZWdhcGkuICBMb3RzIG9mIGNsZWFudXAgYW5kIHJlb3JnYW5pemF0aW9uLiAgQ2hlY2sgdG8gc2VlIGlmCgl3aW5lIGlzIGluc3RhbGxlZCB3aGVuIHdpbmVpbnN0YWxsIGlzIG5vdCBydW4gYXMgcm9vdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCAzIG1pc3NpbmcgRlNfeHh4IG1hY3Jvcy4KCjIwMDEtMDEtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglSZXBsYWNlZCBzb21lIEdldFByb2NBZGRyZXNzKCkgaW1wb3J0cyBieSB0aGUgc3RhbmRhcmQgZGxsIGltcG9ydAoJbWVjaGFuaXNtLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvaW1tMzIvbWFpbi5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jOgoJQ2xlYW5lZCB1cCBkbGwgc3RhcnR1cCByb3V0aW5lcyBub3cgdGhhdCB3ZSBoYXZlIHNlcGFyYXRlIGFkZHJlc3MKCXNwYWNlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy93aW5tbS9kcml2ZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc29tZSBub2lzZSBpbiBhIGZldyBjYXNlcyB3aGVyZSB0aGUgWDExZHJ2IGRvZXNuJ3QgbG9hZCwgYnV0IHVzZWQKCXRvIGZhaWwgc2lsZW50bHkuCgoJKiBzY2hlZHVsZXIvc2VydmljZXMuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCVNFUlZJQ0VfQ3JlYXRlU2VydmljZVRhYmxlIHN0aWxsIHJldHVybmVkIFRSVUUgaWYgQ3JlYXRlVGhyZWFkIGZhaWxlZC4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvZXJybm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUveDExZHJ2LmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQ2xlYW5lZCB1cCB0aGUgdmFyaW91cyBlcnJubyBsb2NhdGlvbiB0ZXN0cyBpbiBjb25maWd1cmUuCglBZGRlZCAoaF8pZXJybm9fbG9jYXRpb24gcG9pbnRlcnMgaW4gdGhlIGxpYnJhcnkgdGhhdCBhbGxvdyByZW1hcHBpbmcKCXRoZSBjYWxscyBpbiBoaWdoZXIgbGV2ZWwgZGxscy4KCU1vdmVkIFgxMURSVl9Dcml0U2VjdGlvbiBvdXQgb2Ygc3lzZGVwcy5jIGFuZCBpbnRvIHgxMWRydi5kbGwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUluIFdzQ29udHJvbCwgZG9uJ3QgbWl4IExpbnV4IGFuZCBXaW5lIHNvY2tldCBjYWxscy4gQWx3YXlzIHVzZSBXaW5lIGNhbGxzLgoJQWRkZWQgaGFjayBmb3IgbWlzc2luZyBXSU5BUEkgaW4gVW5peCBzb2NrZXQoKSBkZWZpbml0aW9uLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkZWQgc29tZSBzdHVicyBuZWVkZWQgZm9yIElFIDUuNSBzZXR1cC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZpc2VkIHdpbmVzaGVsbGxpbmsgdG8gd2FrZSB1cCBLREUgMS54IHNvIHRoYXQgYXBwbGljYXRpb25zIHRoYXQgZ2V0CglpbnN0YWxsZWQgc2hvdyB1cCB3aXRob3V0IGEgbWFudWFsIEtERSBtZW51IHJlZnJlc2ggcmVxdWlyZWQuCglBZGRlZCBhIGZldyB1c2FnZSBjaGVja3MgdG8gbWFrZSBtYW51YWwgaW52b2NhdGlvbiBhIGxpdHRsZSBsZXNzCglwYWluZnVsLgoKCSogdG9vbHMvYmluMnJlcy5jOiBGaXhlZCB0bXBmaWxlIGJ1ZmZlciBzaXplLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglGaXhlZCB0eXBvIGluIHdpbmVfZ2V0X3VuaXhfZmlsZV9uYW1lKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZpc2VkIHNoZWxsIGxpbmsgcHJvY2VzcyB0byB0cmVhdCBlbXB0eSAoZS5nLiAiIikgc3RyaW5ncwoJaWRlbnRpY2FsbHkgdG8gTlVMTCBzdHJpbmdzLiBNYWtlcyBtYW55IG1vcmUgaW5zdGFsbGVycyB0YWtlIHVzZWZ1bAoJYWN0aW9uLiBBZGRlZCBtYW55IHRyYWNlIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJT25seSBhZGp1c3QgaXRlbSByZWN0IGJ5IGhvcml6b250YWwgc2Nyb2xsYmFyIG9mZnNldCBpbiByZXBvcnQgdmlldy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNoYW5nZSBXU0FDbGVhbnVwIC0gd3NpbmZvIGlzIGEgc3RhdGljIHN0cnVjdHVyZSBub3cuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHdpbmVsYXVuY2hlciB0ZXN0IGZvciB4bWVzc2FnZSBhbmQgd2FybiB0aGUgdXNlciBpZiB0aGV5IGRvbid0CgloYXZlIGl0LgoKMjAwMS0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBpbmNsdWRlL3dpbmVfZ2wuaCwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglSZXBsYWNlZCBYMTFEUlZfQ3JpdFNlY3Rpb24gcmVmZXJlbmNlcyBieSB3aW5lX3RzeDExXyh1bilsb2NrLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3gxMWRydi5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJUmVtb3ZlZCBDQUxMX0xBUkdFX1NUQUNLIHN1cHBvcnQuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjYWxsIGEgTkUgRExMJ3MgRGxsRW50cnlQb2ludCB0d2ljZSBkdXJpbmcgb25lIHNpbmdsZQoJTG9hZE1vZHVsZSgpIGNhbGwuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFwVmlld09mRmlsZUV4OiBtYWtlIHRoZSByZXR1cm5lZCBlcnJvciBkZXBlbmRlbnQgb24gdGhlIFdpbmRvd3MKCXZlcnNpb24gdXNlZC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVVwZGF0ZWQgZGVidWcgY2hhbm5lbHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgd2luZG93cy93aW5wcm9jLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgaGVhZGVycy4KCgkqIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBNRU5VSVRFTUlORk8gc3RydWN0dXJlIGJlZm9yZSBjYWxsaW5nIEdldE1lbnVJdGVtSW5mby4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFuIGludGVyZmFjZSBjYXN0IGluIEREMi0+REQ3IHRodW5rLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBvbmUgbWlzc2luZyBidWZmZXIgc2l6ZSByb3VuZGluZyBpbiB0aGUgZWRpdCBjb250cm9sLgoJTWFrZSByb3VuZGluZyBjb2RlIHNsaWdodGx5IG1vcmUgcmVhZGFibGUuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBpZjE2MzIvYnVpbHRpbi5jOgoJUmVwbGFjZWQgR0xPQkFMX0FsbG9jIGJ5IEdsb2JhbEFsbG9jMTYgd2hlcmUgcG9zc2libGUuCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3R3ZWFrLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3VzZXIvY2FjaGUuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2NhY2hlLmgsIGluY2x1ZGUvdHdlYWsuaCwgaW5jbHVkZS91c2VyLmg6CglNb3ZlZCB0d2VhayBzdXBwb3J0IHRvIFVTRVIgZGxsLiBSZW1vdmVkIHR3ZWFrLmggYW5kIGNhY2hlLmguCgoJKiBtZW1vcnkvbG9jYWwuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MmYuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvaW5pdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4cHIuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jLCBpZjE2MzIvcmVsYXkuYzoKCVJlbW92ZWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIDE2LWJpdCB0YXNrIHN0cnVjdHVyZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZpeGVkIHRvdXBwZXIvX3RvdXBwZXIgbWl4dXAuCgoyMDAxLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDEwMTEyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jOgoJQWRkZWQgbWlzc2luZyBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCXdpbm1tLmRsbCBjYW4gbm93IGJlIHByb3Blcmx5IHNlcGFyYXRlZC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2FybmluZyBmaXguCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlcyBmb3IgdmFyaW91cyB1bmRlcnJ1bi1yZWxhdGVkIHByb2JsZW1zLiBBbHNvIGFkZGVkIGEgbWVjaGFuaXNtCglmb3IgdGhlIHNvdW5kIGRyaXZlciB0byByZXF1ZXN0IHRoYXQgYSBTdG9wIHNob3VsZCBjbG9zZSBhbmQgcmVvcGVuCgl0aGUgZGV2aWNlLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlIG11bHRpbWVkaWEgdGltZXJzIGZyb20gdGhlIHNlcnZpY2UgdGhyZWFkLCB1c2UgYSBzZXBhcmF0ZSB0aHJlYWQKCWluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIFNUQVRVU0JBUl9HZXRUaXBUZXh0e2EsVywgYWx3YXlzIHB1dCBhIHRlcm1pbmF0aW5nICdcMCcgaW4gdGhlCglidWZmZXIuCglQYXNzIGEgYnVmZmVyIG9mIHN1ZmZpY2llbnQgc2l6ZSB0byBUVE1fR0VUVEVYVEEuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhMl9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywgZGxscy9kZHJhdy9tYWluLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJV2FybmluZyBmaXhlcy4KCgkqIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbnNwYXBpLmgsIGluY2x1ZGUvd3NoaXNvdHAuaCwgaW5jbHVkZS93c2lweC5oLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglJbXBsZW1lbnRlZCBFbnVtUHJvdG9jb2xBL1cuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmU6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldEJTRCAxLjUgaXMgbGFja2luZyBlY3Z0LCBmY3Z0LCBnY3Z0IGZvciBjcnRkbGwuCgoJKiBzZXJ2ZXIvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglXb3JrYXJvdW5kIGZvciBTdVNFIDcgMi4yLjE2IGtlcm5lbCBidWcuCgoJKiBjb250cm9scy9lZGl0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglHdWFyZCBhZ2FpbnN0IGluY29taW5nIHN0cmluZyBvZiBOVUxMIGluIFdNX1NFVFRFWFQuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY29uc29sZS5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL21lbW9yeS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVR1cm4gY3J0ZGxsIGludG8gZm9yd2FyZHMgdG8gbXN2Y3J0LgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgc29tZSBleGNlcHRpb24gaGFuZGxpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBtaXN0eXBlZCB2YXJpYWJsZSBuYW1lIGluIE1TVkNSVF9fZnBjbGFzcygpLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIGZsYWcgdG8gZGlmZmVyZW50aWF0ZSBmaWxlIG1hcHBpbmdzIGFuZCBWaXJ0dWFsQWxsb2MoKSBibG9ja3MsCglhbmQgcmVqZWN0IFZpcnR1YWxGcmVlKCkgY2FsbHMgb24gZmlsZSBtYXBwaW5ncy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCVJlbW92ZWQgb2Jzb2xldGUgZ2V0X3JlcV9idWZmZXIoKSBmdW5jdGlvbi4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJU3dhcCBscE92ZXJsYXBwZWQgcGFyYW1ldGVycyBpbiBSZWFkRmlsZSBhbmQgV3JpdGVGaWxlLgoJVGhlIEludGVybmFsSGlnaCBtZW1iZXIgc2hvdWxkIGNvbnRhaW4gdGhlIG51bWJlciBvZgoJYnl0ZXMgdHJhbnNmZXJyZWQuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4ZXMgYXMgYSByZXN1bHQgb2YgdGVzdGluZyBidWlsdGluIGNydGRsbCBhZ2FpbnN0IGJ1aWx0aW4gbXN2Y3J0LgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCBtZXNzYWdlcyB3aXRoIG5ldyBjb25maWcgZmlsZXMgaW4gbWluZCB0byBrZWVwIGZyb20gY29uZnVzaW5nCgl1c2Vycy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgbW9zdCBmdW5jdGlvbmFsaXR5LiAgVE9ETyBsaXN0cyB3aGF0cyBsZWZ0LgoKMjAwMS0wMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oLCB3aW5lZGVmYXVsdC5yZWc6CglKb2huIFIuIFNoZWV0cyA8ZHVza0ByYXZlbmR1c2sub3JnPgoJSW1wbGVtZW50ZWQgc3R1YnMgZm9yIElXZWJCcm93c2VyIGluIHNoZG9jdncuZGxsLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCU5hdGhhbiBOZXVsaW5nZXIgPG5uZXVsQHVtci5lZHU+CglSZW5hbWVkIHN0cnVjdCBvcHRpb24gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggZ2V0b3B0LmguCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgYmluYXJ5IGNvbXBhdGlibGUgX19FSF9wcm9sb2cuCgoJKiBzZXJ2ZXIvbWFpbi5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBzaW1wbGUgdXNhZ2UoKSBmdW5jdGlvbi4KCgkqIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jOgoJTm8gbG9uZ2VyIHVzZWQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaDoKCUpvaG4gUi4gU2hlZXRzIDxkdXNrQHJhdmVuZHVzay5vcmc+CglDb3JyZWN0IHNvbWUgY3V0ICYgcGFzdGUgdHlwb3MuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgZm9yIHRoZSBuZXcgY29uZmlnIGZvcm1hdCBhbmQgbG9jYXRpb24gb2YgdGhlIGRlZmF1bHQgY29uZmlnCglmaWxlLiAgQWRkIGEgY29uZl9xdWVzaW9uIHRvIGNvbnZlcnQgYW4gb2xkIHVzZXIgY29uZmlnIGZpbGUsIG9yIHVzZQoJdGhlIGRlZmF1bHQgV2luZSBjb25maWcgZmlsZS4gIFJlbW92ZWQgdGhlIHNldHRpbmcgb2Ygb2Jzb2xldGUKCUVYVFJBX0xEX0xJQlJBUllfUEFUSC4gIEFkZGVkIGEgY29uZl9xdWVzdGlvbiB0byBnaXZlIHRoZSB1c2VyIHRoZQoJb3B0aW9uIHRvIGluc3RhbGwgbG9jYWwgY29uZmlnIGFuZCByZWdpc3RyeSBmaWxlcyB3aGVuIHRoZSBzY3JpcHQgaXMKCWJlaW5nIHJ1biBieSByb290LgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSB0aGUgbWFpbl90YXJnZXQgaW4gc2luZ2xlLXRhcmdldCBtb2RlLgoJVGhlIGRlZmluZWQoQGFycmF5KSBjb25zdHJ1Y3QgaXMgc2FpZCB0byBiZSBkZXByZWNhdGVkLCBhdm9pZCBpdC4KCVNpbXBsaWZ5IHRoZSB1c2FnZSByZXBvcnRpbmcuCglBZGQgYSB3b3JkIG9mIGNhdXRpb24gdG8gdGhlIHVzYWdlIG1lc3NhZ2UuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgV01fR0VUVEVYVCBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglWYXJpb3VzIGNvbWJvYm94IGZpeGVzLgoKCSogZmlsZXMvTWFrZWZpbGUuaW46CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGRlZmluZXMgYWZ0ZXIgcHJvZmlsZS5jIGNsZWFudXAuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHVubmFtZWQgdW5pb24gZHVtbXkgbmFtZXMuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgaW5jbHVkZS93aW5udC5oLCBjb25maWd1cmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlcGxhY2VkIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgY29uZmlndXJlIGNoZWNrcyBieSBoYXJkY29kZWQKCWRlZmluaXRpb25zIGluIHdpbm50LmggKHRvIGF2b2lkIGNvbmZpZy5oIGRlcGVuZGVuY3kpLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGVzIHRvIGF2b2lkIGNvbXBpbGUgd2FybmluZ3Mgb24gU29sYXJpcy4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXb3JrIGFyb3VuZCBwcm9ibGVtcyBvbiBTb2xhcmlzIGlmIGNvbmZpZy5oIGlzIG5vdCBpbmNsdWRlZC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBieXRlb3JkZXIgcHJvYmxlbXMgY2F1c2VkIGJ5IG5vbi1wb3J0YWJsZSBjb2RlLgoKMjAwMS0wMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9leGl0LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc19lcnJuby5oLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLCBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbXN2Y3J0L3djcy5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBsb2FkZXIvbG9hZG9yZGVyLmMsIERFVkVMT1BFUlMtSElOVFMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gTWlncmF0ZSBDUlRETEwgdG8gTVNWQ1JULgoJLSBNYW55IGZpeGVzIGFuZCBhIGxvYWQgb2YgbmV3IGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL29wdGlvbnMuYzoKCVJlbW92ZWQgYWxsIHRyYWNlcyBvZiB0aGUgLS1jb25maWcgb3B0aW9uLgoKCSogZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCVJlZW5hYmxlZCBEWEdyYWIgb3B0aW9uLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN5bmNocm9uaXplIHRoZSBzaXplcyBvZiB0aGUgZXh0ZXJuYWwgYW5kIGludGVybmFsIGJ1ZmZlcnMgYXQgc3RhcnQKCWFuZCBlbmQgb2YgbWVzc2FnZSBwcm9jZXNzaW5nIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCByZXR1cm5lZCBsZW5ndGggZm9yIExCX0dFVFRFWFQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIG5scyB0byBFWFRSQVNVQkRJUlMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB1c2Ugb2Ygb3V0ZGF0ZWQgV0lORV9JTkkgZW52aXJvbm1lbnQgdmFyaWFibGUuICBSZW1vdmVkCglvYnNvbGV0ZSAtLWNvbmZpZyBvcHRpb24uICBSZW1vdmVkIGxvYWRpbmcgb2YgZ2xvYmFsIHdpbmUgY29uZmlnIGZpbGUuCglDbGVhbmVkIHVwIHNvbWUgbWVzc2FnZXMuCgoJKiBjb250cm9scy9lZGl0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+Cgllcy0+YnVmZmVyX3NpemUgaXMgbm90IGFsd2F5cyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGN1cnJlbnRseSBpbiB0aGUKCWVkaXRib3gsIHNvIHVzZSAtMSBpbnN0ZWFkLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFkZGVkIGEgc3BlY2lmaWMgZGVidWcgY2hhbm5lbCBmb3IgZGxsIGxvYWRpbmcgKGJ1aWx0aW4vbmF0aXZlKS4KCgkqIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUZpeGVkIHNvbWUgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBhc3luY2hyb25vdXMgUmVhZEZpbGUgYW5kIFdyaXRlRmlsZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXF1aXJlIHRoYXQgdGhlIHVzZXIgc3BlY2lmeSBhIHdvcmsgZGlyZWN0b3J5LiBUaGlzIHByb3ZpZGVzIGEKCXNhZmVndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWwgaW52b2NhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY29weSB0aGUgZHdTaXplIGJ5dGVzIHJlYWxseSBvY2N1cGllZCBieSBscFByb3BTaGVldFBhZ2UuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZvciB0aGUgR2xvYmFsKlB0ciogc2V0IG9mIG1hY3JvcywgcmVwbGFjZSB0aGUgMTZiaXQgdmVyc2lvbiB3aXRoCgl0aGVpciAzMiBiaXQgZXF1aXYuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY2FsbCBUT09MQkFSX0NhbGNUb29sYmFyIHdoZW4gcGFyYW1ldGVycyBjaGFuZ2UuCgoyMDAxLTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIHdpbmRvdyBwcm9jIGZvciB0aGUgbGlzdGJveCBjb250cm9sLgoJUmVwbGFjZWQgYWxsIGFuc2kgY2FsbHMgYnkgdGhlaXIgdW5pY29kZSBlcXVpdmFsZW50cy4KCVJlbW92ZWQgdXNlIG9mIHRoZSBjdXN0b20gbG9jYWwgaGVhcC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0IGZvciBOVUxMIGFuZCBMUFNUUl9URVhUQ0FMTEJBQ0sgYmVmb3JlIHVzaW5nIGxwQ29sdW1uLT5wc3pUZXh0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHNvbWUgaW5jb3JyZWN0IGZvcm1hdCBzdHJpbmdzLgoKCSogZGVidWdnZXIvZGJnbWFpbi5jOiBSZW1vdmVkIG9ic29sZXRlIGZpbGUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy91c2VyLmMsIGRsbHMvdXNlci9taXNjLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBIRFdQIHRvIHdpbnVzZXIuaC4KCUNvbnZlcnQgSFdJTlNUQSB0byBTVFJJQ1QuCgoJKiBmaWxlcy9kcml2ZS5jLCBtaXNjL2Nkcm9tLmM6CglSeWFuIEN1bW1pbmcgPGJvZG5hcjQyQGJvZG5hcjQyLmRocy5vcmc+CglNYWtlIENEUk9NX0dldExhYmVsIHJldHVybiAwIGluIHRoZSBldmVudCBvZiBmYWlsdXJlLCBhbmQgbWFrZSB0aGUKCWRlZmF1bHQgbGFiZWwgZm9yIGRyaXZlcyBhIHN0cmluZyBvZiAxMSBzcGFjZXMuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCUZpeGVkIHVzYWdlIG9mIFJlZ0VudW1WYWx1ZUEuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgRW51bVByaW50ZXJzKCkgZmxhZyBQUklOVEVSX0VOVU1fREVGQVVMVCBpbiB0aGUgc2FtZSB3YXkKCXRoYXQgTlQgZG9lcyAtIHRoYXQgaXMgaWdub3JlIGl0IGFuZCByZXR1cm4gVFJVRS4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWN0dWFsbHkgY2FsbCBDRFJPTV9BdWRpb19HZXRUcmFja3NJbmZvIHdoZW4gcmV0cmlldmluZwoJTUNJX0NEQV9TVEFUVVNfVFJBQ0tfVFlQRS4KCVdJTkVfQ0RBX09QRU4gbWFwcyB0byBNQ0lFUlJfSEFSRFdBUkUuCgoJKiBzY2hlZHVsZXIvc2VydmljZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTRVJWSUNFX0FkZE9iamVjdCBjaGVjayBmb3IgTlVMTCBoYW5kbGVzIGluIGFkZGl0aW9uIHRvCglJTlZBTElEX0hBTkRMRV9WQUxVRS4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgbGFzdCBwYXJhbWV0ZXIgb2YgQ3JlYXRlRmlsZSBzaG91bGQgYmUgMCAoYWthIE5VTEwpLCBub3QgLTEuCglDcmVhdGVGaWxlIHJldHVybnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUgd2hlbiBpdCBmYWlscywgbm90CglIRklMRV9FUlJPUi4KCUFkZGVkIGNvbW1lbnRzLgoKCSogd2luMzIvY29uc29sZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXB0eV9oYW5kbGUgaXMgYSBIQU5ETEUsIG5vdCBhbiBpbnQuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJKGNvbmZpZ3VyZSkgTG9vayBmb3IgdGhlIGhlYWRlcnMgaW4gJFdJTkVfUk9PVC9pbmNsdWRlL3dpbmUgYW5kCgkvb3B0L3dpbmUvaW5jbHVkZS93aW5lLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU2VuZCB0aGUgY3JlYXRpb24gbm90aWZpY2F0aW9uIHRvIHRoZSB0cnVlIG93bmVyIG9mIHRoZSB0b29sdGlwLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuc3VyZSB0aGVyZSBpcyBhbiBlZGl0IGNvbnRyb2wgd2hlbiB3ZSByZXNldCBjb250ZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkanVzdCBpdGVtIHJlY3RzIGJ5IGhvcml6b250YWwgc2Nyb2xsYmFyIG9mZnNldC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCBUQ01fR2V0Um93Q291bnQuCgoyMDAxLTAxLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWM6CglOZWVkIHRvIGltcG9ydCB1c2VyMzIgZXZlbiB0aG91Z2ggd2UgZG9uJ3QgdXNlIHN5bWJvbHMgZnJvbSBpdCB5ZXQuCgoJKiB0b29scy9zcGVjbWFrZXIvTWFrZWZpbGUuaW46CglMZW9uYXJkIE5vcnJn5XJkIDx2aW5zY2lAbmljLmZ1bmV0LmZpPgoJUmVmZXJlbmNlICQoU1JDRElSKSB3aGVuIGluc3RhbGxpbmcgdGhlIHBlcmwgc2NyaXB0IChpdCBkb2Vzbid0IGV4aXN0CglpbiB0aGUgYnVpbGQgZGlyZWN0b3J5KS4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNoYW5nZWQgc3RyaW5nIHBvaW50ZXIgY2FsY3VsYXRpb24uCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgYWxsIHRoZSBkb2N1bWVudGVkIHNobHdhcGkgZnVuY3Rpb25zIG91dCBvZiB1bmRvY3NoZWxsLmggaW50bwoJc2hsd2FwaS5oLiAgTm90aGluZyBidXQgZmlsZXMgaW4gZGxscy9zaGVsbDMyIHdpbGwgbm93IGluY2x1ZGUKCXVuZG9jc2hlbGwuaC4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIG9uZSAmLCBub3cgQ29DcmVhdGVJbnN0YW5jZSgpIG9mIGRkcmF3IG9iamVjdHMgd29ya3MgYWdhaW4uCgoJKiBzZXJ2ZXIvYXN5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQ2FsY3VsYXRlIHRoZSB0aW1lb3V0IHRpbWUgb25jZSB3aGVuIHRoZSBhc3luYyBpcyBjcmVhdGVkLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIEhhc092ZXJsYXBwZWRDb21wbGV0ZWQgbWFjcm8uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWlzc2luZyBtYXBwaW5nIGZvciBMQl9GSU5EU1RSSU5HRVhBQ1QgbWVzc2FnZSAodGhhbmtzIHRvIEdlcmFyZAoJUGF0ZWwgZm9yIHJlcG9ydGluZyB0aGUgYnVnKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29tYm9ib3ggc2hvdWxkIGNsZWFyIGl0cyBjdXJyZW50IHNlbGVjdGlvbiBvbiByZXNwb25zZSB0bwoJQ0JfU0VUQ1VSU0VMKC0xKSBtZXNzYWdlLgoKMjAwMS0wMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVXNlIHRoZSBleGUgbmFtZSBhbmQgZmlsZSBoYW5kbGUgd2UgZ290IGZyb20gdGhlIHNlcnZlciBhbHNvIHdoZW4KCXN0YXJ0aW5nIFdpbjE2IG9yIERPUyBwcm9ncmFtcywgdG8gYXZvaWQgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50cyBvZgoJdGhlIGNvbW1hbmQtbGluZS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9kZWJ1Z2dlci5jOgoJQWRkZWQgc2VwYXJhdGUgcXVldWUgZm9yICJzeXN0ZW0iIEFQQ3MgdGhhdCBnZXQgY2FsbGVkIGV2ZW4gd2hlbiB0aGUKCXRocmVhZCBpcyBub3QgaW4gYW4gYWxlcnRhYmxlIHN0YXRlLgoJU3BlY2lmeSB0aGUgc2VsZWN0X3JlcXVlc3QgdGltZW91dCBhcyBhYnNvbHV0ZSB2YWx1ZSBzbyB0aGF0IHdlIGNhbgoJcmVzdGFydCB0aGUgcmVxdWVzdCB3aGVuIGludGVycnVwdGVkLgoKCSogd2luZS5pbmk6IFJlbW92ZWQgb2xkIGZvcm1hdCBjb25maWcgZmlsZS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb2RpZnkgdGhlIGxvb2sgb2YgYml0bWFwIG1lbnUgaXRlbXMgdG8gbWF0Y2ggV2luOTUgYW5kIFdpbjk4CglGaXggdGhlIHN1bmtlbiBlZGdlL2JpdG1hcCBvdmVybGFwIGluIHRoZSBXaW45OCBsb29rCglJbnRyb2R1Y2UgYW4gSVNfTUFHSUNfSVRFTSBtYWNybyB0byB0ZXN0IGlmIHRoZSBpdGVtIGlzICdtYWdpYycKCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIEhGSUxFIHZzLiBIQU5ETEUgbWlzbWF0Y2hlcy4KCUlmIG5vdCB1c2VkIHRoZSBsYXN0IHBhcmFtZXRlciBvZiBDcmVhdGVGaWxlIG11c3QgYmUgMCwgbm90IC0xLgoKCSogZGxscy9tc2FjbS9tc2FjbS5zcGVjLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgbG9hZGVyL2xvYWRvcmRlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGb3JjZWQgbG9hZGluZyBvZiBtc2FjbTMyIHdoZW4gbXNhY20gaXMgbG9hZGVkLgoJQWRkZWQgbXNhY20gRExMIHBhaXIgaW4gY29uZmlnIGZpbGVzLgoJQWRkZWQgc29tZSBkdW1iIGNhbGxzIGZyb20gMTYgdG8gMzIuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJbnRlcm5ldENhbm9uaWNhbGl6ZVVybC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglBZGRlZCBhIG1vcmUgdHJ1dGhmdWwgbWVzc2FnZSBhYm91dCB3aGF0IHJlYWxseSBpcyB3cm9uZy4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBjYWxsIFF1ZXJ5QWJvcnQxNigpIGluIFdyaXRlU3Bvb2wxNigpLCBzaW5jZSBpdCBtaWdodCBiZSBjYWxsZWQKCXdpdGggbG9ja3MgaGVsZCAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgaXQgaGVyZSkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVRvb2sgYSBzdGFiIGF0IGltcGxlbWVudGluZyBMQlNfTk9TRUwuCgoyMDAxLTAxLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmM6CglTZW5kIHRoZSBleGUgZmlsZSBoYW5kbGUgaW4gaW5pdF9wcm9jZXNzX2RvbmUgcmVxdWVzdC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUF2b2lkIGNyYXNoaW5nIG9uIGludmFsaWQgbGluZXMgZHVyaW5nIGNvbmZpZyBmaWxlIGNvbnZlcnNpb24uCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBhIGZldyBVcmwqIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pY29kZSB3aW5kb3cgcHJvYyBmb3IgY29tYm9ib3ggY29udHJvbC4KCVJlcGxhY2VkIGFuc2kgY2FsbHMgYnkgdGhlaXIgdW5pY29kZSBlcXVpdmFsZW50cy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgd2luZG93IHByb2MgZm9yIHRoZSBzdGF0aWMgY29udHJvbC4KCVJlcGxhY2VkIGFuc2kgY2FsbHMgYnkgdGhlaXIgdW5pY29kZSBlcXVpdmFsZW50cy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmV0dXJuaW5nIHN1Y2Nlc3MgZm9yIHVua25vd24gV1NDTlRMX1RDUElQX1FVRVJZX0lORk8gY29kZSBtYWtlcyB3aW45OAoJd2luaXBjZmcgd29yay4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTW91c2UgZXZlbnRzIGZpeC4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3MvcXVldWUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBZGRlZCBoYW5kbGVfdCB0eXBlIHRvIHNlcnZlciBpbnRlcmZhY2Ugc28gdGhhdCB3ZSBjYW4gbWFrZSBoYW5kbGVzCglwb2ludGVycyBsYXRlciBvbi4KCUFsd2F5cyB1c2UgMCB0byBzaWduYWwgaW52YWxpZCBoYW5kbGUgaW4gc2VydmVyIHJlcXVlc3RzLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSSB0cmlwbGUgY2hlY2tlZCBidXQgeWVzLCBDSE9PU0VDT0xPUi5oSW5zdGFuY2UgaXMgYW4gSFdORC4uLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgbXNkb3MvdmdhLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBjYXN0IHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0UHJvY0FkZHJlc3MuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgV25kUHJvYyBmdW5jdGlvbiB3YXMgbWlzc2luZyB0aGUgQ0FMTEJBQ0sgbW9kaWZpZXIuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGZpcnN0IDIgcGFyYW1ldGVycyBvZiBXaW5NYWluIGFyZSBISU5TVEFOQ0VzLCBub3QgSEFORExFcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIHByb2JsZW1zIHdpdGggc2Nyb2xsaW5nIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoyMDAxLTAxLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCB0aGUgJ2ZuJyBwcmVmaXggKGkuZS4gSUNPTV9GTikuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGRyYXcuaCwgbXNkb3MvdmdhLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5oLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmgsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uaCwgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5oLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWJ0ZXh0dXJlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkb2N1bWVudGF0aW9uL2RkcmF3LnR4dCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkY29taW1wbC5oLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9zdHJ1Y3RfY29udmVydC5jLCBkbGxzL2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1ham9yIERpcmVjdERyYXcgcmVzdHJ1Y3R1cmUvcmVpbXBsZW1lbnRhdGlvbiwgdXNpbmcgYW4gaW1wcm92ZWQgY29tcG9uZW50CglvYmplY3QgbW9kZWwgaGllcmFyY2h5LiBUaGUgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IHN1cHBvcnRzOgoJLSBEaXJlY3REcmF3IG92ZXIgR0RJL1VTRVIgaW4gYSB3aW5kb3cgKHVzaW5nIERJQnNlY3Rpb25zIGFuZAoJICBhc3luY2hyb25vdXMgdXBkYXRlcykKCS0gWFZpZE1vZGUKCS0gWEY4NkRHQTIKCS0gQWxsIERpcmVjdERyYXcgaW50ZXJmYWNlcyBmcm9tIHZlcnNpb25zIDEgdG8gNyAoYXQgbGVhc3QgaW4gdGhlb3J5KQoJLSBIb29rcyBmb3IgRGlyZWN0M0QgaW50ZXJmYWNlcwoKCSogZGxscy9tc2FjbS93aW5lYWNtLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZGxnLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgcGFydHMuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHRoZSBhbGlnbm1lbnQgb2YgdGhlIE1GX1JJR0hUSlVTVElGWSBtZW51IGl0ZW1zLgoKCSogbWlzYy9tYWluLmM6IFJlbW92ZWQgb2Jzb2xldGUgY29kZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEZpeGVkIGRsbCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBpbmNsdWRlL21tZGRrLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBtYW5pZmVzdCBjb25zdGFudCBpbnN0ZWFkIG9mIHJhdyB2YWx1ZXMgZm9yIGFsbCB0aGUKCURSVl9RVUVSWT8/PyB2YWx1ZXMuCgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBVbHJpY2ggV2VpZ2FuZCdzIGRlc2NyaXB0aW9uIG9mIEtFUk5FTDMyXzk5LgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJU29tZSBib3JrZW4gbWVtb3J5IG1vbml0b3JpbmcgcHJvZ3JhbXMgZGl2aWRlIGJ5IGR3VG90YWxQYWdlRmlsZSwKCXdoaWNoIHByb2JhYmx5IGlzbid0IHplcm8gb24gd2luZG93cy4KCgkqIGNvbmZpZ3VyZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3NwZWNtYWtlci8uY3ZzaWdub3JlLCB0b29scy9zcGVjbWFrZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3NwZWNtYWtlci9SRUFETUUsIHRvb2xzL3NwZWNtYWtlci9kbGwuYywgdG9vbHMvc3BlY21ha2VyL2Z1bmN0aW9uX2dyZXAucGwsIHRvb2xzL3NwZWNtYWtlci9tYWluLmMsIHRvb2xzL3NwZWNtYWtlci9taXNjLmMsIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIHRvb2xzL3NwZWNtYWtlci9zZWFyY2guYywgdG9vbHMvc3BlY21ha2VyL3NwZWNtYWtlci5oLCB0b29scy9zcGVjbWFrZXIvc3ltYm9sLmMsIGNvbmZpZ3VyZToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzcGVjIGdlbmVyYXRpb24gdG9vbCBzcGVjbWFrZXIuCgoJKiBtaXNjL29wdGlvbnMuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZWltcGxlbWVudGVkICJyZWxheT0iIGFuZCAic25vb3A9IiBzdWJvcHRpb25zLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZXMgdG8gdGhlaXIgcmlnaHRmdWwgaGVhZGVycy4KCVRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBwb2ludGVyIHR5cGVzIG11c3QgYmUgYmFzZWQgb24gU1RSSUNULgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTdGFyY3JhZnQgd2FzIGNvbmZ1c2VkIGJ5IGEgd3JvbmcgRkFMU0UgQml0Qmx0IHJldHVybi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgZnJhZ21lbnRzIGZvciB3YXZlIGlucHV0IHRvIDcgeCAxMDI0IGJ5dGUuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgb2YgMTYgYml0IGRyaXZlcnMuCglCZXR0ZXIgc3VwcG9ydCBmb3IgbmF0aXZlIG1hcHBlcnMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZXJlIHdoZW4gZGVsZXRpbmcgYW4gaXRlbSB1c2luZyBpbmRleCAtMSBvbiBhbiBlbXB0eQoJbGlzdGJveCB3ZSB3b3VsZCBwYXNzIHRocm91Z2ggYW4gaWxsZWdhbCBuZWdhdGl2ZSBpbmRleCBhbmQgY2F1c2UKCXByb2JsZW1zLgoKMjAwMS0wMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXNzIHRoZSBhcHBsaWNhdGlvbiBuYW1lIGFsc28gd2hlbiBzdGFydGluZyBhIFVuaXggYXBwLCBhbmQgdXNlIGl0IHRvCglsb2FkIHRoZSBtYWluIGV4ZSAuc28gZmlsZS4KCUZpeGVkIGJ1ZyBpbiBkaXJlY3RvcnkgaGFuZGxpbmcgaW4gUFJPQ0VTU19DcmVhdGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUpvbiBHcmlmZml0aHMgPHRudGpwZ3JpZmZAdHNueHQuY28udWs+CglBZGRlZCBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uQW5kU3BpbkNvdW50IHByb3RvdHlwZS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIHdpbmRvd3MvdXNlci5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgSERFU0sgdG8gU1RSSUNULgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBkdXBsaWNhdGUgZmllbGQgaW4gaW50ZXJuYWwgc3RydWN0dXJlLgoJU2lsZW5jZWQgd2FybmluZyBmb3IgTUNJX0NPTkZJR1VSRSBtZXNzYWdlLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgRFJWTV9NQVBQRVJfU1RBVFVTIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIHBvaW50ZXJzIHRvIGV4dGVybmFsIGZ1bmN0aW9ucyBieSBhIERMTCBpbXBvcnQuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBiaXRtYXAgc2l6ZSBoYW5kbGluZy4KCjIwMDEtMDEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgY29uZmlndXJlOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglUdXJuIG9uIGRldGVjdGFibGUgYXV0b3JlcGVhdCBpZiB0aGUgWCBLZXlib2FyZCBFeHRlbnNpb24gaXMKCWRldGVjdGVkLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBITUVUQUZJTEVQSUNUIHRvIHd0eXBlcy5oLiBOb3RlLCBITUVUQUZJTEVQSUNUIGlzIGFsd2F5cyBhCgkndm9pZConIHVubGlrZSByZWd1bGFyIGhhbmRsZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50IFByaW50RGxnMTYgYmV0dGVyIChhZGRpbmcgUHJpbnREbGdQcm9jMTYgYW5kIHNldmVyYWwgb3RoZXIKCTE2Yml0IGRlcGVuZGVudCBmdW5jdGlvbnMpCglJZiB3ZSBhcmUgdXNpbmcgYSB0ZW1wbGF0ZSB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVmYXVsdCBjb21ib2JveCBmb3IKCXByaW50ZXJzLCB1c2UgdGhlIGRlZmF1bHQgcHJpbnRlciBpbiB0aG9zZSBjYXNlcy4KCU1vcmUgZXJyb3IgbWVzc2FnZXMgYW5kIGNoZWNrcy4KCUFkZGVkIEdsb2JhbEZsYWdzMTYgYW5kIEdsb2JhbFJlQWxsb2MxNiB0byBrZXJuZWwzMi5zcGVjLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZWxheWVkIGltcG9ydCB0aHVua3MgZm9yIFNwYXJjLgoKCSogZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBhbiAnI2lmZGVmIFNUUklDVCcuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglCdWdmaXggZm9yIHNvdW5kIGRyb3BwaW5nIG91dCwgYW5kIHdvcmthcm91bmQgZm9yIEhhbGYtTGlmZSdzCglicmFpbmRlYWQgc2Vjb25kYXJ5IHNvdW5kIGJ1ZmZlciBtYW5hZ2VtZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS93aW5kZWYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBIRFJPUCB0byBzaGVsbGFwaS5oLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU2hvdWxkIGluY2x1ZGUgY2d1aWQuaC4KCgkqIGluY2x1ZGUvb2xlMi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHR3byBlcnJvciBjb2RlczogRV9EUkFXIGFuZCBEQVRBX0VfRk9STUFURVRDLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIDguMyBmaWxlIG5hbWVzLgoJRml4ZWQgc2l6ZW9mKFdDSEFSKSBidWdzLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIEZpeGVkIGEgYnl0ZW9yZGVyIGNvbnZlcnNpb24gcHJvYmxlbSB3aXRoIG1lc3NhZ2UgdGFibGVzLgoJLSBDYXJlZnVsbHkgcmVhZCBhbmQgd3JpdGUgKHBvc3NpYmx5KSBtaXNhbGlnbmVkIGRhdGEgZWxlbWVudHMKCSAgdG8gYXZvaWQgY3Jhc2hlcyBvbiBhcmNoaXRlY3R1cmVzIHdoZXJlIHRoaXMgaXMgbm90IGFsbG93ZWQuCgoJKiBwcm9ncmFtcy92aWV3L3ZpZXcuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZWQgY2FsbHMgdG8gT3BlbkZpbGUgd2l0aCB0aGUgZXF1aXZhbGVudCBjYWxsIHRvCglDcmVhdGVGaWxlLiBSZW1vdmVzIHRoZSBuZWVkIHRvIGNhc3QgdGhlIHJlc3VsdCB0byBIQU5ETEUuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBsYXN0IHBhcmFtZXRlciBvZiBDcmVhdGVGaWxlIGlzIGEgSEFORExFIGFuZCBzaG91bGQgdGh1cyBiZSBOVUxMLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBIHNvY2tldCBiZWNvbWVzIHJlYWRhYmxlIGFmdGVyIGNvbm5lY3QgaW4gTGludXggMi40IChldmVuIGZvcgoJY29ubmVjdGlvbiByZWZ1c2VkKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkIDQgYnl0ZXMgdG8gd2FrZSB1cCBHRVRJU1BBQ0UuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgb25lIHNhZmV0eSBjaGVjayB0byBBRk0gcGFyc2luZy4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTE2Yml0IHVzZXIgR2V0UHJvcC9TZXRQcm9wIGdldCBzdHJpbmdzIG9yIGF0b21zLCBzbyB3ZSBjYW4gdXNlICdzdHInLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSAwIHZzLiBGQUxTRSBtaXNtYXRjaGVzLgoJRml4ZWQgYSAnJXgnIHZzLiAnJWx4JyBtaXNtYXRjaC4KCUZpeGVkIHNvbWUgRFdPUkQgdnMuIFNDX0hBTkRMRSBtaXNtYXRjaGVzLgoKCSogaW5jbHVkZS93aW5zdmMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTQ19IQU5ETEUgaXMgYSBIQU5ETEUsIG5vdCBhICdERUNMQVJFX0hBTkRMRScKCVNFUlZJQ0VfU1RBVFVTX0hBTkRMRSBpcyBhIERXT1JECgoJKiBtZW1vcnkvbG9jYWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxpZ24gbW92ZWFibGUgYmxvY2tzIGlmIHRoZSBhcmNoaXRlY3R1cmUgcmVxdWlyZXMgaXQuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVvcmRlcmVkIHRoZSBkZWZpbml0aW9ucyBhY2NvcmRpbmcgdG8gdGhlaXIgdmFsdWUuCglJbnNlcnRlZCB0aGUgKl9TXyogbWFjcm9zIHJpZ2h0IGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAqX0VfKiBibG9jawoJUmVpbmRlbnRlZCB0aGUgdmFsdWVzLgoJUmVtb3ZlZCB0aGUgZHVwbGljYXRlIHNldCBvZiBFX3h4eCBtYWNyb3Mgc2luY2UgdGhleSBhcmUgb25seSB1c2VkIG9uCglub24gV0lOMzIgcGxhdGZvcm1zLgoJVW5jb21tZW50ZWQgdGhlIENPX0VfSU5JVF8gc2V0IG9mIG1hY3Jvcy4KCVJlbW92ZWQgc29tZSBkdXBsaWNhdGUgbWFjcm8gZGVmaW5pdGlvbnMgYW5kIGZpeGVkIHZhcmlvdXMgdHlwb3MuCglBZGRlZCB0aGUgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IHRoZSBNRkMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUmVzZXJ2ZWQ1IC0+IGxzdHJjbXAxNi4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb2RlIHdhcyBjaGVja2luZyBmb3IgMCBvciBIRklMRV9FUlJPUiBpbnN0ZWFkIG9mIG5lZ2F0aXZlIGVycm9yCgl2YWx1ZXMuCgoyMDAwLTEyLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJIkltcGxlbWVudCIgR2V0S0JDb2RlUGFnZSBhbmQgR2V0S0JDb2RlUGFnZTE2LgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBHZXRPdmVybGFwcGVkUmVzdWx0LgoKCSogb2JqZWN0cy9mb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZUZvbnRJbmRpcmVjdCgpIGNhbiBnZXQgTlVMTCBwb2ludGVycy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wcm92ZSBhc3luYyBpL28gY29tcGF0YWJpbGl0eS4gbHBPdmVybGFwcGVkLT5JbnRlcm5hbCBzaG91bGQgaG9sZAoJdGhlIG92ZXJsYXBwZWQgdHJhbnNmZXIgc3RhdHVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBidWlsdGluIGltcG9ydHMgYnJva2VuIGJ5IGxhdGVzdCBjaGFuZ2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB1bmFsaWduZWQgYWNjZXNzIHRlc3QgZWZmZWN0aXZlLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXZpbGlzaCBjdXQgYW5kIHBhc3RlLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBpbGUgdGhlIGRlYnVnZ2VyIHdpdGggU1RSSUNUIG9uLgoKCSogZGxscy93aW5lcHMvZm9udC5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglVc2UgYSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdG8gbWF0Y2ggUG9zdFNjcmlwdCBmb250IG5hbWVzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gSUNPTV9GTiB0aGF0IGdlbmVyYXRlcyBlaXRoZXIgZm4jI3hmbiBvciBzZm4gYXMgYXBwcm9wcmlhdGUuCglVc2UgSUNPTV9GTiB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgJ0lDT01fVj9NRVRIT0QuKicgZGVmaW5pdGlvbnMuCglSZW1vdmUgdGhlIG9ic29sZXRlIElDT01fQ1ZNRVRIT0QgbWFjcm9zLgoJVXNlIHRoZSBJQ09NX1ZUQkwgbWFjcm8gdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlICdJQ09NX0NBTEwuKicKCWRlZmluaXRpb25zLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnRlZCBwYXNzaXZlIEZUUCB0cmFuc2ZlcnMgKFBBU1YsIG5lZWRlZCBmb3IgZmlyZXdhbGxzKQoJLSBmaXhlZCBsc3RuU29ja2V0IGNsb3NpbmcKCgkqIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvd2lubnQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB3aW5lYnVpbGQgdG8gd29yayBvbiBub24tSW50ZWwgYXJjaGl0ZWN0dXJlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUHJldmVudCB1bmFsaWduZWQgYWNjZXNzIHRvIE5FIGluLW1lbW9yeSBtb2R1bGUgZGF0YS4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NvbXBvc2UuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGNvbXBvc2l0ZSBVbmljb2RlIGNoYXJhY3RlcnMgaW4gTXVsdGlCeXRlVG9XaWRlQ2hhcgoJYW5kIFdpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcHJvdG90eXBlIGZvciBHZXRMb2dDb2xvclNwYWNlLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IEhDT0xPUlNQQUNFIHRvIFNUUklDVCBtb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJVXBkYXRlZCBmaXJzdCBleGFtcGxlIHVzaW5nIGxhdGVzdCB3aW5lYnVpbGQgZGxsL3NvIHByb2NlZHVyZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgc21hbGwgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB2bTg2X2VudGVyKCkgYW5kIHNpZ25hbCBoYW5kbGluZy4KCU1hZGUgc2VwYXJhdGUgc2F2ZV92bTg2X2NvbnRleHQgYW5kIHJlc3RvcmVfdm04Nl9jb250ZXh0IGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbGxvdyBzdHVicyBmb3IgZXhwb3J0cyB0aGF0IGFyZSBub3QgbGVnYWwgQyBpZGVudGlmaWVycy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglUZXN0IHBvaW50ZXIgYmVmb3JlIGl0IGlzIGRlcmVmZXJlbmNlZCBpbiBDcmVhdGVFdmVudFcoKS4KCjIwMDAtMTItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVtYWtlciwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglSZW5hbWVkIGxpYnV1aWQuYSB0byBsaWJ3aW5lX3V1aWQuYQoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGxpbmsgd2l0aCBsaWJ3IGlmIGxpYmMgYWxyZWFkeSBjb250YWlucyB3KiByb3V0aW5lcy4KCUxpbmsgZXZlcnkgbGlicmFyeSB3aXRoIGxpYm5zbCBpZiByZXF1aXJlZC4KCUluY2x1ZGUgaWVlZWZwLmggd2hlcmUgbmVjZXNzYXJ5LgoKCSogZGxscy93aW5tbS93aW5lb3NzL29zcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb21waWxlIGZpeCBpZiBIQVZFX09TUyBpcyBub3QgZGVmaW5lZC4KCgkqIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBicm9rZW4gcHJvdG90eXBlcy4KCgkqIGlmMTYzMi9zbm9vcC5jLCByZWxheTMyL3Nub29wLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNpbGVuY2Ugc2lsbHkgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBvcnQga2VybmVsMzIgKGZvciBTZXRMYXN0RXJyb3IoKSkuCgoJKiBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2hlYXAuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RpYWxvZy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy91c2VyL2V4dGljb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgY2hlY2sgd2hldGhlciB1bmFsaWduZWQgbWVtb3J5IGFjY2VzcyBpcyBhbGxvd2VkLgoJQWRkZWQgbWFjcm9zIHRvIGFjY2VzcyB1bmFsaWduZWQgV09SRHMgLyBEV09SRHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvZmlsZS5jLCBSRUFETUUsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBjbGFyaWZ5IG1hbnkgZXJyb3IgbWVzc2FnZXMKCS0gYWRkIGRhdGEgY29ycnVwdGlvbiB3YXJuaW5nIHRvIFJFQURNRSBmaWxlCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgdGhlIFggc3RhdGUgaW5zdGVhZCBvZiB0aGUgVksga2V5IHN0YXRlIHRvIGNoZWNrIGZvciBlYXRhYmxlCgljaGFyYWN0ZXJzLCBzaW5jZSB0aGUgVksga2V5IHN0YXRlIGlzbid0IGEgZmFuIG9mIEFsdEdyLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglBbGxvdyBhbiBhcHBsaWNhdGlvbiB0byBvcGVuIGEgZG9zIGRldmljZSBlbmRpbmcgd2l0aCAnOicuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbGVhc2UgdGhlIFdpbjE2IGxvY2sgYmVmb3JlIHN0YXJ0aW5nIHRoZSBET1MgcHJvY2Vzcywgc2luY2UgaXQncyBub3QKCXJlYWxseSBhIFdpbjE2IGFwcC4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW5jZSBET1NWTV9XYWl0KCkgYmxvY2tzIHRoZSBub3JtYWwgZXZlbnQgcHJvY2Vzc2luZywgaXQgc2hvdWxkCglkaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBpdHNlbGYuCgoyMDAwLTEyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUZpeCB0aGUgdHJpdmlhbCBjb21waWxlciB3YXJuaW5ncyBpbiBkZWJ1Z2dlci8gd2hlbiBjb21waWxpbmcgd2l0aCAtVwoJLSBtb3ZlZCBpbmxpbmUgc3RhdGVtZW50cyB0byBmcm9udAoJLSBmaXhlZCB0aGUgdHJpdmlhbCBjYXNlcyBvZiBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbnMKCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBmdW5jdGlvbiBwb2ludGVycyB0byB3aW5tbSBhbmQgbXN2ZnczMiwgYnV0IGRlbGF5Cglsb2FkaW5nIGluc3RlYWQuCgoJKiB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gZGVsYXkgbG9hZGluZyBvZiBhbiBpbXBvcnRlZCBETEwgdW50aWwgaXQncyBuZWVkZWQKCShuZXcgLWRlbGF5IG9wdGlvbiBmb3IgaW1wb3J0IGRpcmVjdGl2ZSBpbiBzcGVjIGZpbGUpLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jOgoJRml4ZWQgZXJyb3IgcmVjb3ZlcnkgZHVyaW5nIHRocmVhZCBjcmVhdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbG9hZGVyL2Rvcy9NYWtlZmlsZS5pbiwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2lvcG9ydHMuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTZXBhcmF0ZWQgdGhlIE1aIGxvYWRlciBhbmQgY29yZSBET1MgVk0gaW50byBkbGxzL3dpbmVkb3MuCgoJKiBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zdmMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIGFsbCBoYW5kbGVzIHdpdGggREVDTEFSRV9PTERfSEFORExFIHRvIGVhc2UgY29udmVyc2lvbiB0bwoJU1RSSUNULgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgR2V0RENCcnVzaENvbG9yIGFuZCBHZXREQ1BlbkNvbG9yLgoKMjAwMC0xMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglSZW1vdmVkIC0tY29uZmlnIGZyb20gbWFuIHdpbmUuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUmVtb3ZlZCB0cmFpbGluZyBnYXJiYWdlIGFmdGVyIFtzZXJpYWxwb3J0c10gZGV2aWNlIG5hbWUuCgoyMDAwLTEyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9yYXMuaCwgaW5jbHVkZS93aW5kZWYuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBIUkFTQ09OTiBmcm9tIHdpbmRlZi5oLgoJQWRkZWQgbWlzc2luZyBVbmljb2RlIHR5cGUgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zLgoJQWRkZWQgYSBmZXcgbWlzc2luZyBtYWNybyBkZWZpbml0aW9ucy4KCUVuY2xvc2UgaW4gYW4gZXh0ZXJuICJDIiBmb3IgQysrIFdpbmVsaWIgYXBwbGljYXRpb25zLgoJQWRkZWQgdGhlIHN0cnVjdHVyZSBwYWNraW5nIHNwZWNpZmljYXRpb24uCgoJKiBmaWxlcy9jaGFuZ2UuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBzY2hlZHVsZXIvaGFuZGxlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBmZXcgdHlwZSBjbGFzaGVzIGluIHByZXBhcmF0aW9uIGZvciB0aGUgc3dpdGNoIHRvIFNUUklDVC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgd2luZG93cy9wYWludGluZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGVkIHRoZSBsb29rIG9mIGRvdHMgYW5kIGRhc2hlcyB0byBtYXRjaCB0aGUgV2luMzIgbG9vay4KCUlzc3VlIGEgRklYTUUgYWJvdXQgUFNfVVNFUlNUWUxFLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIGVudmlyb25tZW50IHZhcmlhYmxlIFRNUCBhcyBhbiBhbGlhcyBmb3IgVEVNUC4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJPG1hbGxvYy5oPiBpcyBub3QgSVNPIEMsIDxzdGRsaWIuaD4gaXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIGxvb3AgdGVzdCBmb3IgbmVnYXRpdmUgdmFsdWUuCgoyMDAwLTEyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAxMjIyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglDYW5jZWwgYSBmZXcgY2hhbmdlcyB0byBnZXQgYmFjayBiYXNpYyB0ZXh0IGNsaXBib2FyZCBmdW5jdGlvbmFsaXR5LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBjYWxscyB0byBLRVJORUwuWWllbGQxNiBieSBjYWxscyB0byBLRVJORUwzMi5LMzJXT1dZaWVsZCBmcm9tCglvdXRzaWRlIGxpYmtlcm5lbC5zby4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCU5vIGxvbmdlciB0cnkgdG8gbG9hZCBidWlsdGluIGxpYnJhcnkgd2hlbiBsb2Fkb3JkZXIgaXMgJ3NvJy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sIHRzeDExL01ha2VmaWxlLmluLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL3dpbmVfdW5pY29kZS5kZWY6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGRsbHdyYXAgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMgaW4gY3lnd2luLgoKCSogc2VydmVyL2FzeW5jLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jOgoJQXZvaWQgZHVwJ2luZyBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gbm90IG5lY2Vzc2FyeS4KCURvIG5vdCBzZW5kIGZkIHRvIHRoZSBjbGllbnQgaWYgb3BzLT5nZXRfZmQoKSBmYWlscy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUZpeGVkIGNvcHkvcGFzdGUgYnVnICh0aGFua3MgdG8gR2VyYXJkIFBhdGVsKS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vcmUgaW50ZWxsaWdlbnQgRGlyZWN0U291bmQgcHJlYnVmZmVyaW5nLiBCeSB0cmFja2luZyB0aGUKCWxhc3Qtd3JpdHRlbiBwb3NpdGlvbiBvZiBzdHJlYW1pbmcgYnVmZmVycywgaXQgYXR0ZW1wdHMgdG8gYXZvaWQKCXByZWJ1ZmZlcmluZyBwYXN0IHRoaXMgcG9zaXRpb24gdW5sZXNzIG5lY2Vzc2FyeTsgdGhpcyBtYXkgYXZvaWQgYQoJbnVtYmVyIG9mIHNvdW5kIHByb2JsZW1zIGluIHZhcmlvdXMgc2l0dWF0aW9ucy4gTWVyZ2VkIEhFTCBhbmQgSEFMCgltaXhpbmcgY29kZSwgd2hpY2ggc2hvdWxkIHJlZHVjZSB0aGUgSEVMIG1vZGUncyBDUFUgdXNhZ2Ugc2xpZ2h0bHkuCgoJKiB3aW5kb3dzL3dpbi5jOiBKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCVdhcm4gd2hlbiBGaW5kV2luZG93IG5lZWRzIHRvIGNoZWNrIG90aGVyIHByb2Nlc3NlcyB3aW5kb3dzLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRG9uJ3Qgc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUFkZCAlZnMgaW5mbyB0byB0aGUgY3JpdGljYWwgc2VjdGlvbiB0aW1lb3V0IG1lc3NhZ2UuCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50ICc7JyBhdCB0aGUgZW5kIG9mIGxpbmUuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlbWFpbmluZyBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2hlcy4KCgkqIGRsbHMvbnRkbGwvb20uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglVc2UgYSBzZXBhcmF0ZSBGSUZPIHBhaXIgZm9yIHNlcnZlciByZXF1ZXN0cyB0aGF0IGRvbid0IG5lZWQgdG8gcGFzcyBhCglmaWxlIGRlc2NyaXB0b3IuCglBc3NvY2lhdGUgZmlsZSBkZXNjcmlwdG9ycyB3aXRoIGhhbmRsZXMgb24gdGhlIHNlcnZlciBzaWRlIHNvIHRoYXQgd2UKCWRvbid0IG5lZWQgdG8gcGFzcyB0aGUgZmQgZXZlcnkgdGltZSB0aGUgY2xpZW50IHdhbnRzIHRvIHVzZSBpdC4KCgkqIHdpbmUuaW5pOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCU5hdGl2ZSBJTU0zMi5ETEwgY3Jhc2hlcyB3aW5lIC0gdXNlIGJ1aWx0aW4gRExMLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgYWxsIHByb2JsZW1zIGFzIEVSUigpIGV4Y2VwdCBmb3IgImNvdWxkIG5vdCBvcGVuIiBsaWJyYXJ5LCB3aGljaAoJaXMgV0FSTigpLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlEaXJlY3REcmF3U3VyZmFjZTo6Qmx0OjpTUkNDT1BZIGlzIHRoZSBkZWZhdWx0IFJPUCBvcGVyYXRpb24sIGRvIG5vdAoJdGhyb3cgZXJyb3IuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVmFyaW91cyBkb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVJlbW92ZWQgdGhlIGR1bW15IG1vdXNlIGV2ZW50IGluIFNldFdpbmRvd1Bvcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSAxNiBiaXQgZW50cnkgcG9pbnRzIG5lZWRlZCBieSBtdWx0aW1lZGlhIERMTHMuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvd2lubW0vbW1pby5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYzoKCVJlcGxhY2VkIFdJTjE2X0dsb2JhbExvY2sxNiBieSAib2ZmaWNpYWwiIGZ1bmN0aW9uIEszMldPV0dsb2JhbExvY2sxNi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJTW9yZSBESUIgc2VjdGlvbiBjb3B5LWJsaXR0aW5nIGltcHJvdmVtZW50czogSGFuZGxlIDhicHAgRElCcywgREMKCW1hcHBpbmcgbW9kZXMsIGFuZCBjbGlwcGluZy4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIERJQnNlY3Rpb24ncwoJWFNobUltYWdlIG1lY2hhbmlzbSB0byBnZXQgYSByZWFsbHkgZmFzdCBibGl0IHRvIHRoZSBkaXNwbGF5LgoKMjAwMC0xMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGUgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgktIEFkZGVkIG5ldyBvcHRpb24gb24gLS1kb2N1bWVudGF0aW9uLW9yZGluYWwgKG9mZiBieSBkZWZhdWx0KS4KCS0gQWRkZWQgbmV3IG9wdGlvbiBvbiAtLWRvY3VtZW50YXRpb24tcGVkYW50aWMgKG9mZiBieSBkZWZhdWx0KS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgZXJyb3JzIGZvciBJRHNEcml2ZXJfR2V0UG9zaXRpb24uCglSZXBvcnQgRFNFUlJfVU5JTklUSUFMSVpFRCBvbiBub24tb3BlbmVkIFdpbmVPU1MgYXVkaW8gZGV2aWNlLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9kcml2ZXIuYywgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW5lZCB1cCB0aGUgY29kZSBhIGJpdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglFbmFibGUgdGhlIERpcmVjdFNvdW5kIEhBTCBmb3Igc291bmQgZHJpdmVycyB0aGF0IGRvIG5vdCByZXBvcnQKCURTUF9DQVBfUkVBTFRJTUUuIFNldCBwcmVjaXNpb24gb2YgdGhlc2UgdG8gMjU2IGJ5dGVzIChhYm91dCAzbXMpLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIFRMQl9Eb0Z1bmNzOiBjb2RlIGNsZWFudXAgYW5kIGVsZW1kZXNjRnVuYyByZWFkIGNvcnJlY3RseSBmcm9tIFRMQi4KCS0gVExCX0xvYWRUeXBlTGliOiByZWYgY291bnQgcHJvYmxlbS4KCS0gSVR5cGVMaWI6OkdldFR5cGVJbmZvT2ZHdWlkOiBzYWZlciBpbXBsZW1lbnRhdGlvbiAocG9pbnRlciB0ZXN0aW5nKS4KCS0gSVR5cGVJbmZvOjpHZXRSZWZUeXBlT2ZJbXBsVHlwZTogc2FmZXIgaW1wbGVtZW50YXRpb24gKHBvaW50ZXIgdGVzdGluZykuCgktIElUeXBlSW5mbzI6OkdldERvY3VtZW50YXRpb25MIHJldHVybiBlcnJvcnMgaWYgU3lzQWxsb2NTdHJpbmcgZmFpbGVkLgoJLSBUTEIgbG9hZGVyIGZ1bmN0aW9ucyBub3cgdHJhY2UgaW4gInR5cGVsaWIiIGNoYW5uZWwuCgktIEltcHJvdmVkIHRyYWNlcyBpbiBBZGRSZWYvUmVsZWFzZSBhbmQgaW1wcm92ZWQgZHVtcF8qIGZ1bmN0aW9ucyBmb3IKCSAgZGVidWdnaW5nLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHdyaXRlIHRvIGJ1ZmZlciB3aXRoIHplcm8gbGVuZ3RoLgoJUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbiBwYXJhbWV0ZXJzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZnJlZSB0aGUgbm90IG93bmVkIGVycm9yIHN0cmluZy4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIFNhZmVBcnJheUdldFVCb3VuZCBhbmQgU2FmZUFycmF5R2V0TEJvdW5kIHdpdGggbW9yZSBzYW5pdHkKCWNoZWNrczogYW4gYXJyYXkgaGFzIGF0IGxlYXN0IG9uZSBkaW1lbnNpb24uCglVcGRhdGVkIHZhbGlkQ29vcmRpbmF0ZXMsIHdoZXJlIFNhZmVBcnJheUdldExCb3VuZCB3YXMgY2FsbGVkIG9uCglkaW1lbnNpb24gMC4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmV3cm90ZSB0aGUgYWxsb2NhdGlvbiBvZiBNTSBkcml2ZXIgZGVzY3JpcHRvcnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBoYW5kbGUgdG8gcGFsZXR0ZSBpbnN0ZWFkIG9mIGluZGV4IGZvciBFTVJfU0VMRUNUUEFMRVRURS4KCUltcGxlbWVudGVkIHNpbXBsZSBjYXNlIGZvciBFTVJfRVhUU0VMRUNUQ0xJUFJHTi4KCjIwMDAtMTItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUZpeGVkIGRlYnVnIHJvdXRpbmVzIHRvIHdvcmsgYmVmb3JlIHRoZSBwcm9jZXNzIGhlYXAgaXMgY3JlYXRlZC4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCURvIG5vdCBjYWxsIHRocmVhZCBhdHRhY2gvZGV0YWNoIHJvdXRpbmVzIGR1cmluZyBwcm9jZXNzIGV4aXQgdG8gYXZvaWQKCXBvdGVudGlhbCBkZWFkbG9ja3MuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZXQgdGhlIGNvbG9yIG1hc2sgd2l0aCBCSV9CSVRGSUVMRCBkaWJzLCBkb24ndCB1c2UgdGhlCglhcHBsaWNhdGlvbi1wcm92aWRlZCB2YWx1ZS4KCgkqIG1lbW9yeS9nbG9iYWwuYywgY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbmV3IGVkaXQgY29udHJvbCBhbGxvY2F0ZSBpdHMgYnVmZmVycyB3aXRoIGdyYW51bGFyaXR5IDMyIGJ5dGUuCglFbnN1cmUgdGhhdCBhbGwgY29waWVkIHN0cmluZ3MgYXJlIDAgdGVybWluYXRlZC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBwcmludCBvdXQgV01fTk9USUZZIG1lc3NhZ2UgY29kZSBpZiB3ZSBrbm93IGl0LgoJLSBwcmludCBvdXQgbWVtb3J5IHBhc3QgZW5kIG9mIE5NSERSIHN0cnVjdHVyZSBmb3IgdGhlIHNpemUgb2YKCSAgdGhlIG5vcm1hbCBOTXh4eHh4IHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgY29kZS4KCS0gc2V0dXAgbm90aWZ5IGNvZGUgdGFibGUgZm9yIGNvbW1vbiwgUkVCQVIsIFRPT0xCQVIsIGFuZCBDT01CT0VYIChhdAoJICBsZWFzdCBwYXJ0aWFsbHkpLgoKMjAwMC0xMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzogU2V0IGxhc3QgZXJyb3IgaW4gR2xvYmFsVW5sb2NrLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglBbmRyZXcgSm9obnN0b24gPGFqb2huc3RvbkBzd2l0Y2guY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEVU1NWVNUUlVDVE5BTUUyIGNyZWF0ZXMgYSBjb25mbGljdCB3aGVuIHVzaW5nIGFub255bW91cyB1bmlvbiBuYW1lcy4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgZGVzY3JpcHRpb24gb2YgcHJpbnRlcnBvcnRzIHNlY3Rpb24gb2YgdGhlIHdpbi5pbmkgZmlsZSBmb3Igd2luZXBzLmRydi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRml4IElDb25uZWN0aW9uUG9pbnRDb250YWluZXIgaW50ZXJmYWNlIG1hY3Jvcy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgRGlzcGF0Y2ggQVBJLgoKCSogZGxscy9jcnRkbGwvY29uc29sZS5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gQWRkIHNldmVyYWwgbWJjcyBhbmQgQ1AgOTMyIGZ1bmN0aW9ucywgZml4IHNvbWUgZXhpc3RpbmcgY2FsbHMKCS0gQnVnIGZpeGVzLCAtVyB3YXJuaW5ncyBhbmQgd2luYXBpX2NoZWNrIHVwZGF0ZXMuCgktIERvbid0IGJlIHNvIHN0cmljdCBzZXR0aW5nIGRlZmF1bHQgbG9jYWxlLCBzdG9yZSBjb2RlcGFnZQoKCSogbGlicmFyeS9wb3J0LmM6CglJbmNsdWRlIHN0ZGxpYi5oIGluc3RlYWQgb2Ygd2NoYXIuaC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXNobHdhcGkgZm9yd2FyZGVycyBmb3IgU2V0V2luZG93TG9uZ1cgYW5kIENhbGxXaW5kb3dQcm9jVy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglOZXcgdW5pY29kZSBlZGl0IGNvbnRyb2wuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBhZ2FpbnN0IE5VTEwgYnVmZmVyIGluIHRoZSBwcm9maWxlIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglOZXcgdW5pY29kZSBlZGl0IGNvbnRyb2wuCgoJKiBvbGUvb2xlMm5scy5jLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIG1pc2MvdHdlYWsuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MzMuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL3RpbWUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgl3aW51c2VyLmggbm93IHJlcXVpcmVzIHRoYXQgd2UgaW5jbHVkZSB3aW5iYXNlLmggZmlyc3QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDcmVhdGVXaW5kb3dTdGF0aW9uLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgJ2V4dGVybiAiQyIgeyAuLi4gfScgc3RhdGVtZW50LiBJdCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUKCXRoZXJlLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBhIG1pc3BsYWNlZCAnZXh0ZXJuICJDIiB7IC4uLiB9JyBzdGF0ZW1lbnQuCgoJKiBsaWJyYXJ5L3BvcnQuYywgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYmV0dGVyIHN1cHBvcnQgZm9yIFVuaWNvZGU6CglBZGRlZCBzdXBwb3J0IGZvciAxNi1iaXQgd2NoYXJfdAoJQWRkZWQgc3VwcG9ydCBmb3IgcmV3cml0aW5nIDQtYnl0ZSBVbmljb2RlIGxpdGVyYWxzIHRvIDE2Yml0IFVuaWNvZGUKCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBJTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUllfRU5UUlkgb24gYmlnLWVuZGlhbiBtYWNoaW5lcy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTdHViIGZvciBEbGxEZWJ1Z09iamVjdFJQQ0hvb2suCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCU1pc2MgZml4ZXMgZm9yIFF1ZXJ5UGF0aE9mUmVnVHlwZUxpYiwgVExCX1JlYWRUeXBlTGliLAoJSVR5cGVJbmZvX2ZuR2V0Q29udGFpbmluZ1R5cGVMaWIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEbyBub3Qgc2VuZCBhIFdNX05PVElGWUZPUk1BVCB0byBhIG5vbi1leGlzdGVudCBvd25lci4KCgkqIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2FzeW5jLmM6CglNZXJnZWQgdGhlIGdldF9yZWFkX2ZkIGFuZCBnZXRfd3JpdGVfZmQgcmVxdWVzdHMuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERJR0REX1BFRUsgZm9yIFN5c01vdXNlQTo6R2V0RGV2aWNlRGF0YS4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cglfc3Rye2RlYyxpbmN9OiBDYXN0IHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSBwcm9wZXIgdHlwZSBmaXJzdAoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIF90ZmluZGRhdGEqCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHNvbWUgb2YgdGhlIFNURE1FVEhPRC9TVERBUEkgdG8gd2lubnQuaC4KCU1vdmVkIHRoZSBFWFRFUk5fQyBtYWNybyB0byB3aW5udC5oLgoJQWRkZWQgYSAnI2lmbmRlZiBfX1dJTkVfXycgYXJvdW5kIHRoZSByZW1haW5pbmcgbWFjcm9zLgoKCSogaW5jbHVkZS93dHlwZXMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHNvbWUgb2YgdGhlIFNFQ1VSSVRZX3h4eCB0eXBlcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFNldFVzZXJPYmplY3RTZWN1cml0eS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgbm90aWZ5IHN0cnVjdHVyZXMgTk1NT1VTRSwgTk1PQkpFQ1ROT1RJRlksIE5NS0VZLCBhbmQgTk1DSEFSLgoKMjAwMC0xMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1jLmMsIGRsbHMvaW1tMzIvaW1la2wuYywgZGxscy9pbW0zMi9pbWV3bmQuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIGtleWJvYXJkIGxheW91dCBhbmQgY29udGV4dCAgLSBmYXIgZnJvbSBjb21wbGV0ZS4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+Cgkoc3RyY2FzZWNtcCk6IENvbmZvcm0gdG8gQU5TSSBzcGVjcyBmb3IgdG91cHBlci4KCShzdHJuY2FzZWNtcCk6IERpdHRvLiAgQWxzbyBkbyBub3QgdXNlIHNpZGUtZWZmZWN0cyBpbiBtYWNybyBhcmdzLgoJKHdpbmVfb3BlbnB0eSk6IFBsdWcgZGVzY3JpcHRvciBsZWFrLiAgQWx3YXlzIHNldCBlcnJubyBvbiBmYWlsdXJlLgoJKHdpbmVfYW5vbl9tbWFwKTogRml4IGNvbW1lbnQgbG9jYXRpb24uCgoJKiBtaXNjL29wdGlvbnMuYzoKCU1vcnRlbiBXZWxpbmRlciA8dGVycmEtd2luZUBkaWt1LmRrPgoJKHBhcnNlX29wdGlvbnMpOiBBbGxvdyBHTlUtbGlrZSBvcHRpb24gYXJndW1lbnRzIGxpa2UKCSItLWRlc2t0b3A9ODAweDYwMCIuICAoTm90IHBlcmZlY3QgLS0gd2UgZG9uJ3QgYWxsb3cgc2hvcnRoYW5kcy4pCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IGRyYWcgZm9yIHZlcnRpY2FsIHJlYmFycyAoZHJhZyB1cCBhbmQgZG93bikuCgktIEJldHRlciBhbGdvcml0aGltcyBmb3IgaW5zZXJ0aW5nIG5ldyBiYW5kcyAtIG1hdGNoZXMgbmF0aXZlIHZlcnNpb24KCSAgY2xvc2VyLgoJLSBNYWtlIGRyYXdpbmcgb2YgcmViYXIgYXR0ZW1wdCB0byBtYXRjaCBuYXRpdmUgcGl4ZWwgYnkgcGl4ZWwgKG5vdGUKCSAgdGhpcyBkb2VzIG5vdCBmaXggdGhlIGVtYmVkZGVkIGNvbnRyb2xzIGluIGVhY2ggYmFuZCAtIHRoZXkgc3RpbGwgYXJlCgkgIGFzIGdvb2Qgb3IgYmFkIGFzIGJlZm9yZS4pCgktIEltcGxlbWVudCBzb21lIG9mIHRoZSBub3RpZmljYXRpb25zIChSQk5fSEVJR0hUQ0hBTkdFLCBfQ0hJTERTSVpFLAoJICBfREVMRVRJTkdCQU5ELCBfREVMRVRFREJBTkQpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUGFzcyBXTV9DT01NQU5EIGFuZCBXTV9OT1RJRlkgdG8gcGFyZW50IGFzIHJlY2VpdmVkLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNoYW5nZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXMgdGhlIHVzZXIgYnJvd3NlcyB0aGUgZGlyZWN0b3J5IHRyZWUuCgoJKiBkbGxzL2NydGRsbC9maWxlLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJQ2hhbmdlZCB0eXBvIHZhX2xpc3QgdG8gdmFsaXN0LgoKCSogd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFsbG93IGZvciB0aGUgZGlhbG9nIGZvbnQgc2l6ZSB0byBiZSBzZXQgZGlyZWN0bHkgaW4gcGl4ZWxzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVdNX0dFVE1JTk1BWElORk8gdHJhY2sgbWluIHNpemUgc2hvdWxkIGJlIHVzZWQgaW4gU2V0V2luZG93UG9zIGFsc28KCWZvciAzMiBiaXRzIGFwcHMuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hcHBpbmcgZm9yIElDTV9TRVRTVEFURSAocHRyIGluIGxQYXJhbTEgdG8gcHJpdmF0ZSBkYXRhKS4KCjIwMDAtMTItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIG1lbW9yeS9lbnZpcm9uLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltbTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvb2xlY2xpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlIHVwZGF0ZS4KCS0gVHVybmVkIG9uIC0tZG9jdW1lbnRhdGlvbi1hcmd1bWVudHMgYnkgZGVmYXVsdC4KCgkqIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL2xvY2FsZS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEZpeCBfZnVsbHBhdGggJiBzcGxpdHBhdGgsIHdpbmFwaV9jaGVjayBmaXhlcwoJLSBBZGQgY3ByaW50Zixjc2NhbmYsX2ZnZXR3Y2hhcixfZmdldHdjLF9mcHV0d2NoYXIsX2ZwdXR3YywKCSAgX3d0b2kgJiBfd3RvbCAoZndkKSxzY2FuZixfdGltZXpvbmVfZGxsCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvaW5wdXQuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW5wb3MuYzoKCUF2b2lkIGEgY291cGxlIG9mIGRlcGVuZGVuY2llcyBvbiBpbnB1dC5jIGludGVybmFsIHZhcmlhYmxlcy4KCgkqIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCUZpeGVkIGluZmluaXRlIGxvb3AgaW4gQ1JURExMX19mY2xvc2VhbGwuCgoJKiBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltZXduZC5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgQVBJcyBhbmQgSU1FIGNsYXNzIC0gZmFyIGZyb20gY29tcGxldGUuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgYmVmb3JlIGRvaW5nIElzRXF1YWxHVUlEKCkuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkaW5nIG9mIDE2IGJpdCBNQ0kgZHJpdmVycyAoZm9yIGNvbW1hbmQgdGFibGVzKS4KCUZpeGVkIGFsaWFzIGhhbmRsaW5nIGluIG1jaVNlbmRTdHJpbmcuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZG9uJ3QgaW5pdGlhbGl6ZSB3aXRoIHBGaXJzdExERCBpZiBwRmlyc3RMREQgaXNuJ3QgaW5pdGlhbGl6ZWQgeWV0IGVpdGhlcgoJLSBjb3JyZWN0ZWQgVmNwQ2xvc2UgLnNwZWMKCjIwMDAtMTItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWxsb2NhdGUgZW50cnkgcG9pbnRzIGR5bmFtaWNhbGx5IHRvIGFsbG93IGZvciBhIGxhcmdlciBudW1iZXIgb2YKCW9yZGluYWxzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvaW1tZGRrLmgsIGRsbHMvaW1tMzIvbWFpbi5jLCBkbGxzL2ltbTMyL21lbW9yeS5jLCBkbGxzL2ltbTMyL3N0cmluZy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgRERLIEFQSXMgLSBmYXIgZnJvbSBjb21wbGV0ZS4KCgkqIE1ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgdG8gb2xlL2xpYnV1aWQuYS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgbGluayB3aXRoIHV1aWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29kZXdlYXZlcnMuY29tPgoJT25seSBjYXB0dXJlIG1vdXNlIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZC4KCgkqIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHNvbWUgbWFjcm9zIGxpa2UgTlVMTCwgRkFMU0UgdG8gd2lubnQuaAoJTW92ZWQgdGhlIGFub255bW91cyBzdHJ1Y3QvdW5pb25zIHRvIHdpbm50LmgKCU1vdmVkIGNhbGxpbmcgY29udmVudGlvbiBtYWNyb3MgdG8gd2lubnQuaAoJTW92ZWQgc29tZSBiYXNpYyB0eXBlcyBsaWtlIEJPT0wsIElOVCwgTE9ORywgZXRjLiB0byB3aW5udC5oCglNb3ZlZCBIQU5ETEUgYW5kIERFQ0xBUkVfSEFORExFIHRvIHdpbm50LmgKCU1vdmVkIHN0cnVjdHVyZSBwYWNraW5nIG1hY3JvcyB0byB3aW5udC5oCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzZXJ2ZXIvc25hcHNob3QuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglOZWVkcyB0byBpbmNsdWRlIHdpbmRlZi5oLgoKCSogaW5jbHVkZS9vbGUyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgT2xlSXNDdXJyZW50Q2xpcGJvYXJkIGFuZCBPbGVTZXRDbGlwYm9hcmQuCgoJKiBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgcHJvdG90eXBlIG9mIEdldENsYXNzRmlsZS4KCgkqIHdpbmRvd3Mvd2luLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEb24ndCByZXR1cm4gbGFzdCBhY3RpdmUgcG9wdXAgaWYgaXQgaXMgcG9pbnRpbmcgdG8gYSBkZWxldGVkIHdpbmRvdy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2Mvb3B0aW9ucy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlZCB1c2FnZSBtZXNzYWdlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQ29udmVydGVkIGVudW1fa2V5X3ZhbHVlIHJlcXVlc3QgdG8gdGhlIG5ldyByZXF1ZXN0IG1lY2hhbmlzbS4KCgkqIG1pc2MvY2Ryb20uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXR1cyBvZiBDRFJPTV9BVURJT19JTlZBTElEIHNlZW1zIHRvIG1lYW4gdGhlIGRpc2sgaXMgc3RvcHBlZC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBkaWZmaWN1bHRpZXMgd2l0aCB0aGUgZm9udCBvbiB2ZXJ0aWNhbCB0YWJzLiBBbHNvIHBsdWdnZWQgYQoJcmVzb3VyY2UgbGVhay4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29kZXdlYXZlcnMuY29tPgoJTWFyayB3aWR0aCBhcyB2YWxpZCB3aGVuIHdlIHNlbmQgSEROX0VORFRSQUNLQS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZ3ZXJzLmNvbT4KCUNoZWNrIHRvIHNlZSB3aGV0aGVyIGFueSBhbmNlc3RvciB3aW5kb3dzIGFyZSBkcm9wIHRhcmdldHMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNwZWxsaW5nIGZpeC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCB0aGUgdHlwZSBvZiBGdW5jdGlvbiB0byBQRFdPUkQgYXMgb24gV2luZG93cy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5c3AuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBkZWNsc3BlYyBzcGVjaWZpZXIuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjZW11L21haW4uYywgbWlzY2VtdS93aW5lLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgVW5pY29kZSBhcHBsaWNhdGlvbnMgaW4gd2luZWJ1aWxkLgoJUmVtb3ZlZCBjdWlleGVfbm9fbWFpbiBoYWNrLgoJQXZvaWQgc3RkY2FsbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zaWRlIGZ1bmN0aW9ucyBiZWNhdXNlIG9mIGdjYyBidWcuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CgktIHJlZ2lzdHJ5IGxvYWRpbmcgc3BlZWQgdXAgKHJlZHVjZWQgY2xpZW50IDwtPiBzZXJ2ZXIgY29tbXVuaWNhdGlvbikKCS0gbWFrZSB0aGUgY29kZSBhIGJpdCBtb3JlIHVuZGVyc3RhbmRhYmxlCgoyMDAwLTEyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkICJpZ25vcmUiIGRpcmVjdGl2ZSBmb3Igc2tpcHBpbmcgaW5kaXZpZHVhbCBzeW1ib2wgcmVzb2x1dGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjOgoJVmFzaWx5IEkuIFZvbGNoZW5rbyA8VmFzaWx5LlZvbGNoZW5rb0Btc3R1LmVkdS5ydT4KCUFkZGVkIG1vcmUgUnVzc2lhbiBzdXBwb3J0LgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tLnNwZWMsIGRsbHMvd2lubmxzLy5jdnNpZ25vcmUsIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm5scy93aW5ubHMuYywgZGxscy93aW5ubHMvd2lubmxzLnNwZWMsIGRsbHMvd2lubmxzL3dpbm5sczMyLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBzcGVjIGZpbGUgZm9yIDE2Yml0IGltbS4KCUFkZGVkIHNwZWMgZmlsZXMgZm9yIHdpbm5scyBhbmQgd2lubmxzMzIuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglBZGRlZCBpbmxpbmUgZGVmaW5pdGlvbiBmb3IgTWFwU0wuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhbiB1bnF1b3RlZCBzdHJpbmcuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUFkZCBzdHJlcnJvcigpIHRvIHRoZSAiQ291bGQgbm90IHN0YXQiIGFuZCAiSW52YWxpZCBwYXRoIiBzdGFydHVwCgllcnJvciBtZXNzYWdlcy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglDb21tZW50ZWQgb3V0IGxhcmdlIHN0YWNrIGluaXQgbm93IHRoYXQgdGhyZWFkIHN0YWNrcyBhcmUgYXQgbGVhc3QgMU1iLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIERpcmVjdERyYXdDcmVhdGUgZ2V0cyBwYXNzZWQgYSBJRGlyZWN0RHJhd3syLDQsN30gaW50ZXJmYWNlLCBnZXQKCXRoaXMgaW50ZXJmYWNlIGFuZCBkbyBub3QgdXNlIElEaXJlY3REcmF3LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlIG5hbWUgb2YgQVBJcyBleHBvcnRlZCBieSBvcmRpbmFsLgoKCSogZGxscy9rZXJuZWwvbmxzL2h1bi5ubHM6CglOZW1ldGggUGV0ZXIgPHFnZW5wZXRlQGdvbGQudW5pLW1pc2tvbGMuaHU+CglTb21lIE5MUyB1cGRhdGVzLgoKMjAwMC0xMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwsIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHEsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWZhdWx0LmRzbCwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vdG9vbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVocS5kc2wsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L2xvYWRlci5jLCBsaWJyYXJ5L3BvcnQuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJV29yayBhcm91bmQgZ2xpYmMgMi4xLnggZGxvcGVuIGJ1ZyAoYWdhaW4pLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X3ByaXZhdGUuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnRlZCBwcm9wZXIgTEREL0xESUQgaGFuZGxpbmcKCS0gaW1wbGVtZW50IEN0bCpMZGQoKSwgQ3RsW0dTXWV0TGRkUGF0aCwgR2VuSW5zdGFsbCAobm8gcmVhbCBvcGVyYXRpb25zCgkgIHlldCwgSSB3YW50IGhlbHApLCBJbnN0YWxsSGluZlNlY3Rpb24KCS0gU3R1YmJlZCBvdXQgRGlHZXRDbGFzc0RldnMxNiAobmVlZGVkIGZvciBlLmcuIE1vbmtleSBJc2xhbmQgMyA7KQoJLSBtYW55IG5ldyAuc3BlYyBzdHVicwoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTSEdldE1hbGxvYyBtdXN0IHVzZSBNRU1DVFhfVEFTSywgb3RoZXJ3aXNlIENvR2V0TWFsbG9jIHdpbGwKCWJhZGx5IGZhaWwgd2l0aCBFX0lOVkFMSURBUkcgaW4gY2FzZSBuYXRpdmUgT0xFMzIgaXMgdXNlZC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWFwaS5oLCBpbmNsdWRlL21hcGlkZWZzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFwaS5oIHdpdGggdGhlIGRlZmluaXRpb25zIG5lZWRlZCBieSB0aGUgTUZDLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX3VsdG93KCkgYW5kIGV4cG9ydCBbTnQvWnddUXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUoKS4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcGF0aCByZXNvbHV0aW9uIGZvciBhL2IuYyBzb3VyY2UgZmlsZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglJbnZhbGlkYXRlIHRoZSBmb2N1cyByZWN0IHdoZW4gYSBsaXN0Ym94IGlzIHJlc2l6ZWQuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ub25jbGllbnQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zZWxlY3RvcnMuaCwgbWlzYy9sc3RyLmMsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCUdvdCByaWQgb2YgbGR0LmguCgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtc2Rvcy94bXMuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgd2luMzIvZGV2aWNlLmM6CglVc2UgZ2V0cGFnZXNpemUoKSBpbnN0ZWFkIG9mIFZJUlRVQUxfR2V0UGFnZVNpemUoKS4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnByb2MuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvdnhkLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIG1pc2MvZXJyb3IuYywgbXNkb3MvZGV2aWNlcy5jLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2RpZ2l0YWx2LmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm50LmgsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci93c3ByaW50Zi5jLCBkbGxzL3ZlcnNpb24vdmVyMTYuYywgZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlY2xpL29sZWNsaS5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL2NvbWJvLmM6CglSZXBsYWNlZCBQVFJfU0VHX1RPX0xJTiBtYWNybyBieSBleHBvcnRlZCBNYXBTTCBmdW5jdGlvbi4KCUZpeGVkIGEgZmV3IHB0ci9zZWdwdHIgbWlzbWF0Y2hlcy4KCU1vdmVkIENPTlZfUkVDVC9QT0lOVCBtYWNyb3MgdG8gd2luZ2RpMTYuaC4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgd2luZG93cy93aW5wb3MuYzoKCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTcGxpdCBkcml2ZXIgZnVuY3Rpb25zIGludG8gVVNFUiAoMTYgYml0IHBhcnQpIGFuZCBXSU5NTSAoMzIgYml0IHBhcnQpLgoJRml4ZWQgc29tZSBidWdzIGluIDE2IGJpdCBwYXJ0IGFzIHdlbGwuCglOb3cgY29ycmVjdGx5IHBhcnNpbmcgdGhlIHN5c3RlbS5pbmkgZXh0cmEgcGFyYW1ldGVycy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGNydGRsbCBjb21waWxlIHByb2JsZW0gcmVnYXJkaW5nIGZwb3NfdCBpbiBnbGliYzIuMi4KCgkqIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gSW1wbGVtZW50IGNvbnNvbGUgSS9PCgktIFN1cHBvcnQgdGVtcG9yYXJ5IGZpbGVzLCBhZGQgdG1wZmlsZSwgcm10bXAKCS0gc3Bhd24qIGZ1bmN0aW9uczogZml4IGFyZ3MsIGFkZCBjd2FpdCwgc2VhcmNoZW52CgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgYSBjcmFzaCBpbiBwcm9ncmFtL2Nsb2NrLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJRml4ZWQgY3Jhc2ggb2YgV2luWmlwIDguMCBkdWUgdG8gaW52YWxpZCBpbWFnZSBsaXN0IGhhbmRsZS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIE5VTEwgYXMgaW4gV2luMzIuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJldHVybiB2YWx1ZXMgZnJvbSBEUlZfRU5BQkxFIHNob3VsZCBub3QgYmUgY2hlY2tlZC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRm9ybWF0TWVzc2FnZUEgd2Fzbid0IHByb3Blcmx5IGhhbmRsaW5nIHRoZSAlbHMgbW9kaWZpZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW52YWxpZCBidXR0b25zIGFyZSAiaGlkZGVuIi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhbGwgdmFsdWVzIG9mIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBIGludG8gYW4gYXJyYXksIGFkZCBzb21lCglvdGhlciByZWdpc3RyeSBsb2NhdGlvbnMgYW5kIGltcHJvdmUgdGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgQ1NJRExzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglDaGFuZ2VkIEZJTEVETEc5NV9Pbk9wZW4gdG8gImRvdWJsZSB0ZXJtaW5hdGUiIHRoZSByZXR1cm5lZCBzdHJpbmcgaWYKCU9GTl9BTExPV01VTFRJU0VMRUNUIGlzIHNldC4KCjIwMDAtMTItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9idWlsdGluMzIuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUdvdCByaWQgb2YgbWFpbi5oLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglVc2UgX19BU01fR0xPQkFMX0ZVTkMgZGlyZWN0bHkgaW4gaTM4Ni1vbmx5IGNvZGUuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglDaGFuZ2VkIExvYWRJbWFnZTE2IHRvIHRha2UgYW4gTFBDU1RSIGluc3RlYWQgb2YgYSBTRUdQVFIuCgoJKiBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE3LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIGZpbGVzL2RyaXZlLmM6CglVc2UgdGhlIERSSVZFXyogQVBJIGNvbnN0YW50cyBpbnN0ZWFkIG9mIHRoZSBEUklWRVRZUEUgZW51bS4KCUNoYW5nZWQgRFJJVkVfQ0FOTk9UREVURVJNSU5FIGFuZCBEUklWRV9ET0VTTk9URVhJU1QgdG8gdXNlIHRoZQoJY29ycmVjdCBuYW1lcy4KCUNsZWFuZWQgdXAgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIGludGVybmFsIGRyaXZlLmMgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RpbnB1dC5oOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHByZWZlcmVuY2VzIHRvIGRpbnB1dCBkcml2ZXJzIChzbyB3ZSBjYW4gaGF2ZSB0d28gam95c3RpY2sKCWRyaXZlcnMpLiBJbXBsZW1lbnRlZCBhIGpveXN0aWNrIGRyaXZlciBmb3IgdGhlIExpbnV4IDIuNAoJZGV2L2lucHV0L2V2ZW50IEFQSS4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2xvY2FsZS5jLCBkbGxzL2NydGRsbC90aW1lLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBJbXBsZW1lbnRlZCBzZXRsb2NhbGUgcGFyc2luZyBhbmQgTENfVFlQRSBiZWhhdmlvci4KCS0gSW1wbGVtZW50ZWQgaXNsZWFkYnl0ZSwgc25wcmludGYuCgktIEFkZGVkIE5MUyBJc1ZhbGlkQ29kZVBhZ2UgcHJvdG90eXBlLCBtaXNjIENSVERMTCBmaXhlcy4KCgkqIGluY2x1ZGUvc2hlbGxhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHByb3RvdHlwZSBmb3IgU0hBcHBCYXJNZXNzYWdlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCBpbmRlbnRhdGlvbiBwcm9ibGVtcyByZXN1bHRpbmcgZnJvbSBhdXRvbWF0aWMgcmVuYW1pbmcsIG90aGVyCglhZXN0aGV0aWMgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVXNlIERyYXdUZXh0IHRvIGRpc3BsYXkgdGV4dCBpbiBob3Jpem9udGFsIHRhYnMuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgdGhlIGNvbmRpdGlvbiBzbyBpdCBhbHNvIHdvcmtzIGluIGNhc2Ugd2hlbiBzc2NhbmYgcmV0dXJucyBFT0YuCgoyMDAwLTEyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy91c2VyLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3ZlcnNpb24uYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvdnhkLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9maWxlLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvc3Bhd24uYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYzoKCU1vdmVkIGFsbCBXaW5lIGludGVybmFsIGRlZmluaXRpb25zIG91dCBvZiBwcm9jZXNzLmguCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglPdXRwdXQgdGhlIGV4cG9ydHMgdGFibGUgaW4gYXNzZW1ibHkgY29kZSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvCglleHBvcnQgQysrIG1hbmdsZWQgbmFtZXMuCgoJKiBkbGxzL250ZGxsL3J0bC5jOgoJSW1wbGVtZW50ZWQgUnRsQWNxdWlyZVBlYkxvY2sgYW5kIFJ0bFJlbGVhc2VQZWJMb2NrLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUltcGxlbWVudGVkIERyYXdUZXh0VyBhcyBVbmljb2RlIGFuZCBEcmF3VGV4dEEgYXMgY2FsbCB0byBEcmF3VGV4dFcuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgQ0ZfVU5JQ09ERVRFWFQgYXMgcHJpbWFyeSB0ZXh0IGNsaXBib2FyZCBmb3JtYXQuCglVc2UgW3gxMWRydl0uVGV4dENQIGZvciBpbnRlcmNoYW5nZSB3aXRoIFguCgoyMDAwLTEyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglEZW5uaXMgQmpvcmtsdW5kIDxkYkB6aWdvLmRocy5vcmc+CglSZW1vdmUgb2xkIGxpbmsgYmVmb3JlIGNyZWF0aW5nIHRoZSBuZXcgb25lLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvY29tYm8uaCwgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUvZGlhbG9nLmgsIGluY2x1ZGUvbWRpLmgsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL3Njcm9sbC5oLCBpbmNsdWRlL3N0YXRpYy5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIE1ha2UucnVsZXMuaW4sIGNvbnRyb2xzL01ha2VmaWxlLmluLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy93aWRnZXRzLmM6CglNb3ZlZCBtb3N0IGJ1aWx0aW4gY29udHJvbHMgc3RydWN0dXJlcyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgQyBmaWxlLgoJQ3JlYXRlZCBuZXcgY29udHJvbHMuaCBmaWxlIHByaXZhdGUgdG8gdXNlcjMyLmRsbCBhbmQgbW92ZWQgcmVtYWluaW5nCglidWlsdGluIGNvbnRyb2xzIGRlZmluaXRpb25zIHRoZXJlLgoKMjAwMC0xMi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBlbGZkbGwgbG9hZGVyLgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBtaXNjL21haW4uYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBSRUFETUU6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUkVBRE1FIHVwZGF0ZQoJLSBhZGQgb2Zmc2V0cyB0byBBU1BJIHN0cnVjdCBkZWZpbmVzCgktIHNwZWxsaW5nCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb24ndCBmYWlsIG9uIHBvaW50ZXIgYWRkcmVzcyBjaGVja2luZyB3aGVuIGZvcmVpZ24gaGVhcC4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGR1cGxpY2F0ZSBkZWZpbmVzLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgTWVzc2FnZUJveCgpIHVzYWdlLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglQcmludCBDREIgYXJlYS4KCjIwMDAtMTItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGhhbmRsZXJzIGZvciBzb21lIElNRSBtZXNzYWdlcyBpbiBEZWZXaW5kb3dQcm9jLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRmlsZW9rc3RyaW5nIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2VudCB0byB0aGUgY3VzdG9tIGNoaWxkIGRpYWxvZywKCW5vdCB0byB0aGUgbWFpbiBkaWFsb2cuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRGUtc3R1YiBzaW4oKSBhbmQgY29zKCkuCglBZGQgbm9pbXBvcnQgZmxhZyB0byBzaW4oKSwgY29zKCksIGFuZCBwb3coKS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvY2xhc3MuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy93aWRnZXRzLmM6CglSZW1vdmVkIGRlcGVuZGVuY2llcyBvbiB0aGUgaW50ZXJuYWxzIG9mIHRoZSBDTEFTUyBzdHJ1Y3R1cmUuCglBZGRlZCBzdXBwb3J0IGZvciBoYXZpbmcgYm90aCBBU0NJSSBhbmQgVW5pY29kZSB3aW5kb3cgcHJvY2VkdXJlcyBmb3IKCWJ1aWx0aW4gY2xhc3Nlcy4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVtb3ZlZCBjYWxscyB0byBXSURHRVRTX0lzQ29udHJvbC4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuY29tbWVudCBHT1BIRVJfQVRUUklCVVRFX1RZUEUgYW5kIEdvcGhlckdldEF0dHJpYnV0ZS4KCUNyZWF0ZSBBL1cgdmVyc2lvbnMgb2YgR09QSEVSX0FUVFJJQlVURV9UWVBFIGFuZAoJR09QSEVSX0FUVFJJQlVURV9FTlVNRVJBVE9SLgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHByb3RvdHlwZSBmb3IgY2xvc2Vzb2NrZXQuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgaGFuZGxpbmcgb2YgRGlhbG9nQm94SW5kaXJlY3RQYXJhbUEgcmV0dXJuIHZhbHVlLgoKMjAwMC0xMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZmlsZXMvcHJvZmlsZS5jLCBSRUFETUUsIHdpbmUuaW5pOgoJQWRkZWQgYXV0b21hdGljIHRyYW5zbGF0aW9uIG9mIHRoZSBjb25maWcgZmlsZSB0byB0aGUgbmV3Cglmb3JtYXQuIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglBZGRlZCBkZWZpbmUgZm9yIFNfSVNMTksgaWYgbWlzc2luZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG9uJ3QgbWFrZSB0aGUgc3BlYyBmaWxlIGNvbnN0cnVjdG9ycyBzdGF0aWMgc28gdGhhdCB0aGV5IGRvbid0IGdldAoJb3B0aW1pemVkIG91dC4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglESUIgc2VjdGlvbiBpbXByb3ZlbWVudHM7IFVwZGF0ZURJQlNlY3Rpb24gaGFzIGJlZW4gcmVwbGFjZWQgd2l0aAoJTG9ja0RJQlNlY3Rpb24gYW5kIFVubG9ja0RJQlNlY3Rpb24sIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LgoJRElCX1N0YXR1c18qIGlzIG5vdyBkcml2ZXItaW5kZXBlbmRlbnQsIGFuZCB0aGVyZSdzIGEgbmV3CglESUJfU3RhdHVzX0F1eE1vZC4gQmV0dGVyIGhhbmRsaW5nIG9mIERJQiBzdXJmYWNlcyB3aXRoIG5vbnN0YW5kYXJkCglwaXRjaC4gU2xpZ2h0IG9wdGltaXphdGlvbiBvZiBESUJzZWN0aW9uLT5kaXNwbGF5IEJpdEJsdC4KCgkqIGRsbHMva2VybmVsL25scy9oZWIubmxzLCBtaXNjL29wdGlvbnMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGQgYmFzaWMgTkxTIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgSGVicmV3LgoKCSogZGxscy9rZXJuZWwvbmxzL2N5bS5ubHM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglXZWxzaCBuZWVkcyBpc284ODU5LTE0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIFNlbmROb3RpZnlNZXNzYWdlKCkgZm9yIFdNX1NZTkNQQUlOVC4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJUmV0dXJuIGEgbWF4aW11bSByZWdpc3RyeSBzaXplIG9mIDMyIE1CIGluIE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglBZGRlZCBzYW1wbGUgY29uZmlnIGZpbGUgaW4gdGhlIG5ldyBmb3JtYXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVNldCAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0yIGZsYWcgaWYgc3VwcG9ydGVkIHRvIGF2b2lkIHdhc3RlZnVsCglzdGFjayBhbGlnbm1lbnRzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcHJpbnRzIGxpbmUgbnVtYmVyIGZvciAneC5kbGwgaW1wb3J0ZWQgYnV0IG5vIHN5bWJvbHMgdXNlZCcgd2FybmluZy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglVcGRhdGUgaW50ZXJuYWwgY29udHJvbHMgb24gV01fV0lORE9XUE9TQ0hBTkdFRC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9leHRfZGVidWdnZXIuYywgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9leHRfZGVidWdnZXIuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJQnVpbGQgdGhlIGRlYnVnZ2VyIGFzIGEgLnNvLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGluY2x1ZGUvZHBsYXkuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvdXVpZC5jLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJQ3JlYXRlZCBhIHNtYWxsIHN0YXRpYyBsaWJyYXJ5IGluIG9sZS9saWJ1dWlkLmEgdGhhdCBjb250YWlucyBhbGwgdGhlCglVVUlEIGRlZmluaXRpb25zICh3aXRoIHRoZSBoZWxwIG9mIEZyYW5jb2lzIEdvdWdldCkuCgoJKiB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGlmMTYzMi9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluOgoJVXNlIGxpYndpbmUgYW5kIGxpYndpbmVfdW5pY29kZSBkaXJlY3RseSBmcm9tIHRoZWlyIGJ1aWxkIGRpcmVjdG9yeQoJaW5zdGVhZCBvZiB1c2luZyBzeW1saW5rcy4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3RzX3NoYXBlLmgsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLCBpbmNsdWRlL3RzX3h2aWRlby5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS8uY3ZzaWdub3JlLCB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvbG9ja2luZy5jLCB0c3gxMS90c19zaGFwZS5jLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZkZ2EyLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jLCB0c3gxMS90c194dmlkZW8uYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQnVpbGQgdHN4MTEgbGF5ZXIgYXMgYSBzZXBhcmF0ZSBzaGFyZWQgbGlicmFyeS4KCjIwMDAtMTItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgaWYxNjMyL2J1aWx0aW4uYywgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL2VsZi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJQWx3YXlzIHBhc3MgbG93ZXItY2FzZSBmaWxlbmFtZXMgdG8gd2luZV9kbGxfbG9hZCgpLgoJQ2xlYXIgZGxlcnJvcigpIGJlZm9yZSBhbmQgYWZ0ZXIgY2FsbHMgdG8gZGxvcGVuL2Rsc3ltIHRvIHdvcmsgYXJvdW5kCglhIGdsaWJjIGJ1ZyAodGhhbmtzIHRvIEphbWVzIEFiYmF0aWVsbG8gZm9yIHRyYWNraW5nIHRoZSBidWcpLgoKCSogZGxscy9rZXJuZWwvbmxzL3NyYi5ubHMsIHRvb2xzL3dyYy91dGlscy5jOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglGaXhlZCBTZXJiaWFuIGxhbmd1YWdlIGNvZGUgcGFnZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZXJlIHRoZSBzdHJpbmcgaW4gYSBjb21ibyBib3ggZmxpY2tlcnMgaWYgeW91CglyYXBpZGx5IHJlc2V0IHRoZSBjb250ZW50IGFuZCB0aGVuIHJlcGxhY2UgdGhlIGNvbnRlbnQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIGZvcndhcmRzLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1poLnJjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENoaW5lc2UgcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9pbW0uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglDb21waWxlIGZpeCBmb3IgZ2NjIDIuNy4yLjMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgdGhlIGFwcHJvcmlhdGUgY29tbWFuZCBmb3IgY29tYmluaW5nIC5vIGZpbGVzLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgY29kZSBkdXBsaWNhdGlvbi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvbid0IGZvcmdldCB0byBtYXAgdGhlIG1lc3NhZ2UgaW4gV0lOUFJPQ19NYXBNc2cxNlRvMzJXKCkuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBkbGVycm9yKCkgY2hlY2sgdG8gdXNlIHN0cnN0cigpLgoKCSogZGxscy9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgQExJQkVYVEAgaW5zdGVhZCBvZiAuc28gZm9yIHRoZSBpbnRlci1kbGxzIGRlcGVuZGVuY2llcy4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CgktIG92ZXJ3cml0ZSAocmF0aGVyIHRoYW4gYXBwZW5kKSB0aGUgb3V0cHV0IGZpbGUgaWYgd2UgaGF2ZSBubyBzZXBhcmF0b3IKCS0gYXZvaWQgb3V0cHV0IGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCUtlbiBDb2xlbWFuIDxrZW5fY29sZW1hbkBpbmFtZS5jb20+CglBZGRlZCBhIGZpcnN0LWN1dCB2ZXJzaW9uIG9mIE1hcFZpcnR1YWxLZXlFeFcoKSB0aGF0IGhhcyB0aGUgc2FtZQoJZnVuY3Rpb25hbGl0eSAoYW5kIGxpbWl0YXRpb25zKSBhcyB0aGUgQU5TSSB2ZXJzaW9uLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCXdpbmVpbnN0YWxsIGRpZG4ndCBjcmVhdGUgdGhlIGRlZmF1bHQgbm8td2luZG93cyBkaXJlY3RvcnkgL2MKCXdoZW4ganVzdCBwcmVzc2luZyBlbnRlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGNvcnJlY3QgbnVtYmVyIG9mIGNvbG9ybWFwIGVudHJpZXMgbG9va2VkIGF0IGluIEdldERJQkNvbG9yVGFibGUuCgktIGNvcnJlY3QgbnVtYmVyIG9mIGNvbG9ybWFwIGVudHJpZXMgcHJvY2Vzc2VkIGluIFNldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywgZGxscy9rZXJuZWwvbmxzL25sZC5ubHM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU29tZXMgZml4ZXMgZm9yIER1dGNoIGxvY2FsZXMuCgoJKiBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCjIwMDAtMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDEyMDIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvbWFwcGluZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGUgYXR0cmlidXRlcyBvZiB0aGUgKmN1cnJlbnQqIHNlY3Rpb24sIG5vdCBvbmx5IHRoZSBhdHRyaWJ1dGVzCglvZiB0aGUgKmZpcnN0KiBzZWN0aW9uLi4uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIFdJTlBST0NfR2V0UHRyKCkgdG8gYWx3YXlzIHBhc3MgdGhlIHN0YXJ0IG9mIHRoZSBibG9jayB0bwoJSGVhcFZhbGlkYXRlKCkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIGlmIGxvYWRpbmcgYSBXaW5lbGliIGFwcCBmYWlsZWQgKHN1Z2dlc3RlZCBieQoJRnJhbmNvaXMgR291Z2V0KS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIHRoZSBEVU1NWVVOSU9OTkFNRSBtYWNyb3Mgc28gdGhhdCB0aGUgaGVhZGVycyBjYW4gYmUgdXNlZCBpbgoJV2luZWxpYi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQVNDSUktb25seSB2ZXJzaW9uIG9mIHRvdXBwZXIsIHRvbG93ZXIsIHN0cmNhc2VjbXAgYW5kIHRoZSBsaWtlCglmb3IgZmlsZSBhbmQgbW9kdWxlIEkvTy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJVXNlIGlvY3Rsc29ja2V0KCkgaW5zdGVhZCBvZiBpb2N0bCgpIHNvIHRoYXQgd2UgY2FuIGltcG9ydCB3czJfMzIuZGxsCglhZ2FpbiAodW50ZXN0ZWQpLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBsb2FkZXIvcmVzb3VyY2UuYywgd2luMzIvY29uc29sZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9tb2RpZmllZCBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9rZXJuZWwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93cHJvY3MuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbGVPcGVuRGxnUHJvYzk1OiBub3RpZnkgYXBwbGljYXRpb24gb2YgY2hhbmdlZCBzZWxlY3Rpb24gYWZ0ZXIKCWZpbGxpbmcgdGVtcGxhdGUuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgbWlzYy9jZHJvbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIHdoZW4gdHJheSB3YXMgb3Blbi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNldmVyYWwgYWRkaXRpb25hbCB0by9mcm9tIHVuaWNvZGUgbWVzc2FnZSBtYXBwaW5ncy4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJQWx3YXlzIHB1dCB0aGUgZGxsIGNvbnN0cnVjdG9yIGluIHRoZSAuaW5pdCBzZWN0aW9uLCBhbmQgbGlrZSB0aGUKCS5zcGVjLm8gZmlsZSBmaXJzdCB0byBlbnN1cmUgY29ycmVjdCBjYWxsaW5nIG9yZGVyIG9mIHRoZSBjb25zdHJ1Y3RvcnMuCgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNS5jLCBvYmplY3RzL2JydXNoLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgbWlzY2VsbGFuZW91cyB0eXBvcywgc3ludGFjdGljIGFuZCBncmFtbWF0aWNhbCBlcnJvcnMuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbm5scy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBjYXNlIG9mICJXaW5lbGliIi4KCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFdpbmVsaWIgY2FzZS4KCVRoZSBsaW5raW5nIGFzcGVjdHMgaGF2ZSBiZWVuIHNvbHZlZCBieSB0aGUgbGFzdCB3aW5lYnVpbGQgdXBkYXRlIC0+CglyZW1vdmVkIGZyb20gdGhlIHRvZG8gbGlzdC4KCVRoZSBjb25maWd1cmUgc2NyaXB0IGhhcyBiZWVuIHVwZGF0ZWQgLT4gcmVtb3ZlZCBmcm9tIHRoZSB0b2RvIGxpc3QuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlcmUgaXMgYSBzaW5nbGUgdGFyZ2V0LCBpdCBzaG91bGQgYWxzbyBnZXQgdGhlICdwcm9qZWN0X3NldHRpbmdzCglzb3VyY2VzJy4KCUlmIGEgc3ViZGlyZWN0b3J5IGlzIGNhbGxlZCAnaW5jbHVkZScgdGhlbiBhZGQgaXQgdG8gdGhlIGluY2x1ZGUgcGF0aC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUluY2x1ZGUgY29uZmlnLmguCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzZXZlcmFsIGNsaXBib2FyZCBmb3JtYXRzLgoKCSogTWFrZS5ydWxlcy5pbjoKCURlbm5pcyBCavZya2x1bmQgPGRiQHppZ28uZGhzLm9yZz4KCUNvbXBpbGUgZml4IGZvciBidWlsZGluZyB3aW5lIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybmV0Q2xvc2VIYW5kbGUgZGlkbid0IHJldHVybiBUUlVFIGluIGFsbCBhcHByb3ByaWF0ZSBjYXNlcy4KCgkqIHdpbjMyL2RldmljZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIC0td2ludmVyIG50NDAgaGludCB0byBWeEQgZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYTxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJLSBUYWtlIHRoZSBtb3VzZSBjYXB0dXJlIG9uIGEgV01fTkNSQlVUVE9ORE9XTiBvbiB0aGUgY2FwdGlvbiBiYXIsCgkgIHJlbGVhc2UgaXQgb24gYSBXTV9SQlVUVE9OVVAKCS0gRG9uJ3Qgc2VuZCBXTV9DT05URVhUTUVOVSBvbiBhIFdNX05DUkJVVFRPTlVQCgktIFVzZSBwYXJlbnQtcmVsYXRpdmUgY29vcmRpbmF0ZXMgd2hlbiBjYWxsaW5nIE5DX0hhbmRsZU5DSGl0VGVzdAoKMjAwMC0xMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvaW50MTAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9kcml2ZS5jLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9sc3RyLmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9rZXJuZWwvY29tbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9tb2RpZmllZCBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgbG9hZGVyL25lL21vZHVsZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBXaW4xNiBkb2N1bWVudGF0aW9uIG5vdCBmaXhlZCBiZWNhdXNlIG9mIGEgYnVnIGluIHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvd2luaW5ldC9mdHAuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dkaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9jb21wb2JqLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCBhIGJ1ZyBjb25jZXJuaW5nIFdpbjE2IGRvY3VtZW50YXRpb24uCgktIEZpeGVkIHNvbWUgYnVncyBjb25jZXJuaW5nIGFyZ3VtZW50IGRvY3VtZW50YXRpb24KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZQoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5oLCB0b29scy9mbnQyYmRmLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnBvcy5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvdnhkLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGVidWdnZXIvbXNjLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglNb3ZlZCB1c2VmdWwgTkUgZm9ybWF0IGRlZmluaXRpb25zIHRvIHdpbmJhc2UxNi5oLgoKCSogaW5jbHVkZS93aW5udC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW9kaWZpZWQgd2luZWJ1aWxkIHRvIHVzZSB0aGUgX19BU01fRlVOQyBtYWNybyBmb3IgZ3JlYXRlciBwb3J0YWJpbGl0eS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCU1vdmVkIHRoZSBmZXcgcmVtYWluaW5nIGZ1bmN0aW9ucyBpbiB3cHJvY3MuZGxsIHRvIGtlcm5lbC5kbGwuCglObyBsb25nZXIgbG9hZCB3cHJvY3MuZGxsIHVuY29uZGl0aW9uYWxseS4KCVJlc3RvcmVkIGRlZmF1bHQgaW50ZXJydXB0IGhhbmRsZXIgYmVoYXZpb3IgKHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYzoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2Ygc2hlbGwzMiBhbmQgd3NvY2szMi4KCgkqIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTdXBwbHkgZHVtbXkgZ2V0cmxpbWl0IGlmIGFic2VudC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWdzdHIgdG8gc3RyIHByb3RvLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW5lZCB1cCBpbnRlcm5hbCB0eXBlcyBkZWZpbml0aW9uLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgc3RhYnMgbG9hZGluZyAobm93IHVzaW5nIHJlY3Vyc2l2ZSBwYXJzaW5nLCByZXF1aXJlZCBieSBzdGFicwoJZ2VuZXJhdGVkIGJ5IGxhdGVzdCBnY2MgdmVyc2lvbnMpLgoKCSogZGVidWdnZXIvZXhwci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXb3JrIGFyb3VuZCBmb3IgZGVyZWYgaXNzdWVzIChsZWFzdCBpbXBhY3Qgc29sdXRpb24gdGFrZW4sIGV2ZW4gaWYgaXNzdWVzIHJlbWFpbikuCgoJKiBkbGxzL2tlcm5lbC9ubHMvY2h0Lm5scywgZGxscy9rZXJuZWwvbmxzL2N6ZS5ubHMsIGRsbHMva2VybmVsL25scy9kYW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZmluLm5scywgZGxscy9rZXJuZWwvbmxzL3Ryay5ubHMsIGRsbHMva2VybmVsL25scy96aGkubmxzOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgbnVtYmVyIG9mIGFkZGl0aW9ucyB0byB0aGUgbmxzIGZpbGVzLiBBbHNvIG9uZSBjb3JyZWN0aW9uLCB3ZSBoYWQKCTg5NSBmb3IgdGhlIEN6ZWNoIGRlZmF1bHQgY29kZXBhZ2UgYnV0IGFjY29yZGluZyB0byBtaWNyb3NvZnQgaXQKCXNob3VsZCBiZSA4NTIuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHdpbmVsYXVuY2hlciB3b3JrIGJldHRlciBmb3Igc291cmNlIHRyZWUgYnVpbGRzLgoJTWFrZSB3aW5lbGF1bmNoZXIgZGV0ZWN0IHRoZSBsYWNrIG9mIGEgfi8ud2luZXJjIGZpbGUgYW5kIHByb21wdCB0aGUKCXVzZXIgYWJvdXQgaXQuCglQYXNzIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIGEgYml0IG1vcmUgZ3JhY2lvdXNseTsgaW1wcm92ZXMKCWludGVyYWN0aW9uIHdpdGggZ21jIGFuZCBrZm0uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgdGhlIEtERSAyIGJldGEgYW5kIGZpbmFsIG1ldGhvZCBvZiBzcGVjaWZ5aW5nIHN5c3RyYXkgd2luZG93cy4KCjIwMDAtMTEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglEb24ndCB1cGRhdGUgc2Nyb2xsYmFycyB3aGVuIHByb2Nlc3NpbmcgV01fREVTVFJPWS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJQ2hlY2sgZm9yIE5VTEwgaGFuZGxlIGJlZm9yZSBjYWxsaW5nIEhlYXBWYWxpZGF0ZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCcmluZyB0aGUgbWFuIHBhZ2UgaW4gbGluZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB3aW5lbWFrZXIuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJLSBJbiBpbnRlcmFjdGl2ZSBtb2RlLCBkb24ndCBpZ25vcmUgaW52YWxpZCBvcHRpb25zLCBhc2sgdGhlIHVzZXIgYWdhaW4KCS0gVXBwZXJjYXNlIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYWZ0ZXIgYWxsIChoaW50OiAkKFNSQzouYz0ubykpCgktIFBhc3MgdGhlIGdsb2JhbCBkZWZpbmVzIGFuZCBpbmNsdWRlIHBhdGggdG8gV1JDCgktIEJhc2UgdGhlIGNsZWFudXAgb24gdGhlIE9CSlMgdmFyaWFibGUgc28gdGhhdCBpdCB3b3JrcyBldmVuIGlmIHRoZQoJICBzb3VyY2VzIGFyZSBpbiBhIHN1YmRpcmVjdG9yeQoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHRoZSBoYW5kbGluZyBvZiByZWxhdGl2ZSBpbmNsdWRlL2xpYnJhcnkgcGF0aHMKCS0gSW4gaW50ZXJhY3RpdmUgbW9kZSwgcHJpbnQgIi4vIiBmb3IgdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgcmF0aGVyCgkgIHRoYW4gYW4gZW1wdHkgc3RyaW5nCgktIFdlIGRvbid0IG5lZWQgdG8gZm9yY2UgYSBzcGFjZSBiZWZvcmUgYXNzaWdubWVudHMKCS0gQWxpZ24gVE9QU1JDRElSICYgY28gbGlrZSBhbGwgdGhlIG90aGVyIGFzc2lnbmVtZW50cwoJLSBDb21waWxlIERsbHMgZmlyc3QgKGRlcGVuZGVuY2llcyB3b3VsZCBkbyBpdCBtb3JlIG9yIGxlc3MgYW55d2F5KQoJLSBXb3JkaW5nIGNoYW5nZSBpbiB0aGUgdXNhZ2UKCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIG1pc2MvcmVnaXN0cnkuYywgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2dkaS9NYWtlZmlsZS5pbjoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2YgYWR2YXBpMzIuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWM6CglGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIG9sZTMyLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IGJldHRlciB2ZXJzaW9uIG9mIERQQV9NZXJnZS4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4gdG8gZ2V0IHN0cnVjdCBpbl9hZGRyIG9uIGFsbCBwbGF0Zm9ybXMuCgoJKiBtZW1vcnkvaGVhcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBjcmFzaCBpbiBVbk1hcExTIGZvciBwb2ludGVycyBub3QgYmVsb25naW5nIHRvIHRoZSBzZWdwdHIgaGVhcC4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYW5pbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWNkYS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaXNlcS8uY3ZzaWdub3JlLCBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy91cmxtb24vLmN2c2lnbm9yZSwgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCVJlbW92ZSBsaWJYWFhYLnNvLjEuMCBsaW5lcyBmcm9tIC5jdnNpZ25vcmUgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBjb21jbHQzMiBhbmQgY29tZGxnMzIuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmM6CglGaXhlZCBwcm9nbWFuIGludGVybmFsIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgaXQgbGlrZSB0aGUgb3RoZXIKCXByb2dyYW1zLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXhwb3J0IGEgZmV3IDE2LWJpdCBmdW5jdGlvbnMgbmVlZGVkIGJ5IGhpZ2hlci1sZXZlbCBkbGxzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglFeHBvcnQgdGhlIHdpbmUgc2VydmVyIGZ1bmN0aW9ucyBmcm9tIG50ZGxsLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3Rvb2xoZWxwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgbmV3IG9wdGlvbiAtLWRvY3VtZW50YXRpb24tYXJndW1lbnRzCgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUKCgkqIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1zZG9zL2ludDExLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9uJ3QgaW5jbHVkZSB3aW5kb3dzLmggaW50ZXJuYWxseS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbGlhcyBjYXBhYmlsaXR5IHRvIC0td2ludmVyLgoJd2luMjAwMCBpcyB0aGUgb2ZmaWNpYWwgdmFsdWUuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbjoKCVVzZSB0aGUgSEVBUF9XSU5FX1NFR1BUUiBmbGFnIHRvIHNwZWNpZnkgYWxsb2NhdGlvbnMgb24gdGhlIHNlZ3B0ciBoZWFwLgoJQWRkZWQgYSBoYWNrIGluIE1hcExTIHRvIHJlY29nbml6ZSBzdWNoIGFsbG9jYXRpb25zIGFuZCB1c2UgdGhlIGhlYXAKCXNlbGVjdG9yIGluIHRoaXMgY2FzZS4KCgkqIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJUmVtb3ZlZCBkZXBlbmRlbmNpZXMgb24gV2luZSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUFsd2F5cyBpbml0aWFsaXplIG1zZzE2IGFuZCB3cGFyYW0xNiBpbiBXSU5QUk9DX01hcE1zZzMyV1RvMTYuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmUuaW5pOgoJUmVtb3ZlZCAiZWxmZGxsIiBsb2FkIG9yZGVyIG9wdGlvbiBhbmQgdXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKMjAwMC0xMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2RldmljZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglEbyBub3QgaW5jbHVkZSBzeXMvcHRyYWNlLmggYW5kIHN5cy91c2VyLmggdW5jb25kaXRpb25hbGx5LgoJT3RoZXIgcG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCUJyaWFuIFRlYWd1ZSA8YnRlYWd1ZUByaWNlLmVkdT4KCUFkZCBhIHN0dWIgZm9yIHRoZSBDQVBTMSBjYXBhYmlsaXR5IGluIEdldERldmljZUNhcHMuCglEZWZpbmUgdGhlIENBUFMxIGJpdCBmbGFncyBpbiB3aW5nZGkuaAoJTWFrZSB2YXJpb3VzIGNhbGxzIHRvIEdldERldmljZUNhcHMgaW4gRExMUyB1c2UgI2RlZmluZWQgdmFsdWVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3VzZXIvbW91c2UuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9kcG1pLmMsIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglSZW5hbWVkIENhbGxUbzE2KiBmdW5jdGlvbnMgdG8gd2luZV9jYWxsX3RvXzE2KiBhbmQgZXhwb3J0IHRoZW0gZnJvbQoJa2VybmVsMzIuc3BlYy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCByZXR1cm5lZCBsZW5ndGggb2YgZmlsZXMuCgoJKiBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL3N0YWJzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglEbyBub3QgdXNlIGEub3V0LmguCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvd25ldC5jLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglDbGVhbmVkIHVwIHNvbWUgbW9yZSBkZXBlbmRlbmNpZXMgb24gV2luZSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgbHN0YXQgdG8gcG9ydC5jLgoKCSogd2luMzIvZGV2aWNlLmM6CglLZWVzIFNjaG9lbm1ha2VycyA8a2Vlc3NAbWlsbHRyb25pY3MuY29tPgoJQWRkZWQgSEFTUCBkZXZpY2Ugc3R1Yi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIHNpemUgb2YgdGhlIGxhcmdlX2hhbmRsZXMgYXJyYXkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvc3RhdGljLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1NFVFRFWFQgc2hvdWxkIHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglWaXJ0dWFsUXVlcnkgc2hvdWxkIHJldHVybiAwIGZvciBhbGwgYWRkcmVzc2VzID49IDB4YzAwMDAwMDAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJT3duZXJkYXRhIGxpc3R2aWV3cyB3ZXJlIG5vdCBjbGVhcmluZyBwcmV2aW91c2x5IHNlbGVjdGVkIGl0ZW1zIHdoZW4gYQoJbmV3IGl0ZW0gaXMgc2V0IGFzIHNlbGVjdGVkIHVzaW5nIFNldEl0ZW0gYW5kIHRoZSBsaXN0dmlldyBoYXMKCUxWSVNfU0lOR0xFU0VMLgoKMjAwMC0xMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2Ugd2VyZSByZXR1cm5pbmcgY2hhcmFjdGVycyBmb3IgdmFyaW91cyBDVFJMICsgU3ltYm9sIGtleXN0cm9rZXMKCXdoaWNoIHNob3VsZCBub3QgcmV0dXJuIGNoYXJhY3RlcnMuCgoJKiBtaXNjL2NwdS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCWxpbnV4LTIuNC4wLXRlc3QxMCBub3cgY2FsbHMgJ2ZsYWdzJyBhcyAnZmVhdHVyZXMnLgoKCSogd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJU2xpZ2h0bHkgcmVhcnJhbmdlIFdJTjE2L1dJTjMyQS9XSU4zMiB3aW5kb3cgY3JlYXRpb24uCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvd2lkZ2V0cy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglNYWRlIGJ1dHRvbiBjb250cm9sIGZ1bGx5IHVuaWNvZGUgYXdhcmUuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggY3Jhc2ggaW4gU0VUVVBYX1RyYW5zbGF0ZUxESUQoKQoJLSBpbXBsZW1lbnQgY3VzdG9tIExESUQgbG9va3VwCgoJKiBtaXNjL2Nkcm9tLmMsIG1pc2MvY3B1LmMsIG1pc2MvdmVyc2lvbi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2luaXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wcm9jLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zdHJpbmcuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglHb3QgcmlkIG9mIHRoZSBXaW5lIGludGVybmFsIGxzdHJjcHkqIGZ1bmN0aW9ucyBhbmQgb2Ygd2luZXN0cmluZy5oLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCBtYW4gcGFnZS4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvaGVhcC5oOgoJTWFkZSBIRUFQX3N0cmR1cCogZnVuY3Rpb25zIGlubGluZSAodGVtcG9yYXJ5KS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCB3aW4zMi9uZXdmbnMuYzoKCU1vdmVkIEVudW1Qb3J0c0EgdG8gZGxscy93aW5zcG9vbC4KCjIwMDAtMTEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyouYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZXF1aXJlIHtERUNMQVJFLERFRkFVTFR9X0RFQlVHX0NIQU5ORUwgc3RhdGVtZW50cyB0byBlbmQgaW4gYSA7CgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVNldCBkZWJ1Z2dpbmcgb3B0aW9uIGJhc2VkIG9uIE5PX1RSQUNFX01TR1MgZGVmaW5lLiBPbmx5IG91dHB1dCAzMi1iaXQKCXJlbGF5IHN0dWJzIGlmIGRlYnVnZ2luZyBpcyBvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2lubnQuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglUZXN0IGlmIHdlIG5lZWQgdG8gcHV0IHRoZSAudHlwZSBkaXJlY3RpdmUgaW5zaWRlIGEgLmRlZiBkaXJlY3RpdmUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ1bmNhdGUgZGVzdCBibGl0IHJlY3RhbmdsZSBkb3duIHRvIHN1cmZhY2Ugc2l6ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdBUk4oKSBhYm91dCBtaXNzaW5nIC9kZXYvc2VxdWVuY2VyLCBpdCdzIHRvbyBjb25mdXNpbmcgZm9yIG5ld2JpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsc28gbWVudGlvbiB4cG0tZGV2ZWwgaW4gdGhlIGVycm9yIG1zZy4KCgkqIG1pc2MvY3B1LmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkIEZsb2F0aW5nUG9pbnRQcm9jZXNzb3IgZW1wdHkgZW50cnkgdG8gdGhlIHJlZ2lzdHJ5LgoKCSogY29udHJvbHMvbWVudS5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBwcm9jZXNzaW5nIG1vdXNlIG1lc3NhZ2VzIGluIE1FTlVfVHJhY2tNZW51LCB1c2UgdGhlIGNvb3JkaW5hdGVzCglpbiBsUGFyYW0gaW5zdGVhZCBvZiB0aG9zZSBpbiBNU0c6OnB0LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB3aGVuIGltcG9ydCBmYWlsZWQuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy91c2VyL25ldHdvcmsuYywgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL21wci93bmV0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmM6CglGaXhlZCBhIGZldyBkZXBlbmRlbmNpZXMgb24gMTYtYml0IG9yIGludGVybmFsIGZ1bmN0aW9ucy4gRml4ZWQgYSBmZXcKCXdhcm5pbmdzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbm1tL21taW8uYzoKCUZpeGVkIFNFR1BUUl9HRVQgdXNhZ2UuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglBZGRlZCBlbnRyeSBmb3IgUHJpdmF0ZUV4dHJhY3RJY29uc0EuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJSW1wbGVtZW50ZWQgRG9zRmlsZUhhbmRsZVRvV2luMzJIYW5kbGUsIFdpbjMySGFuZGxlVG9Eb3NGaWxlSGFuZGxlIGFuZAoJRGlzcG9zZUxaMzJIYW5kbGUgYW5kIHVzZSB0aGVtIHRvIHJlcGxhY2UgZmlsZS5jIGludGVybmFsIGZ1bmN0aW9ucy4KCVJlbmFtZWQgV09XKiBmdW5jdGlvbnMgaW50byBLMzJXT1cqLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYzoKCUFkZGVkIGVudHJ5IGZvciBUZXJtaW5hdGVBcHAxNi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZmlsZXMvZGlyZWN0b3J5LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Jlc291cmNlLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJQ2hhbmdlZCBHZXRQcm9jQWRkcmVzczE2IGFuZCAxNi1iaXQgcmVzb3VyY2UgZnVuY3Rpb25zIHRvIHRha2Ugbm9ybWFsCglwb2ludGVycyBpbnN0ZWFkIG9mIFNFR1BUUnMuCglSZW1vdmVkIFdJTjE2X0dldFRlbXBEcml2ZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3ZlcnNpb24uYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYWRkZWQgd2ludmVyIHNldHRpbmdzIG50MmssIHdpbjMwIGFuZCB3aW4yMCAoeWVzLCBzb21lIHJhcmUgcHJvZ3JhbXMgbmVlZCB0aGlzKQoJICBhbmQgKmRvY3VtZW50KiBpdCAod2luOTggd2FzIG5vdCBkb2N1bWVudGVkIHByZXZpb3VzbHkpCgktIE9hQnVpbGRWZXJzaW9uOiBhZGQgdmFsdWUgZm9yIE5UNCBTUDYKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gY29uZmlndXJlIHRlc3RzIGZvciBmaW5pdGUoKS9mcGNsYXNzKCksIGZpeGVzIEJTRCBjb21waWxlCgktIHdpbmFwaV9jaGVjayB1cGRhdGVzLCBmaXggZXJybm8gaW4gbW9yZSBtYXRoIGNhbGxzCgoJKiB3aW4zMi9leGNlcHQuYywgaW5jbHVkZS90b29saGVscC5oLCBsb2FkZXIvdGFzay5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBUZXJtaW5hdGVBcHAgbmVlZGVkIGZvciBEQmFzZSA1LjAuCglNYWRlIEZhdGFsQXBwRXhpdDE2IGhvbm9yIHRoZSBTRU1fTk9HUEZBVUxURVJST1JCT1ggZXJyb3JfbW9kZSBmbGFnLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglHZW5lcmFsIGNsZWFuIHVwIG9mIHRoZSBlZGl0IGNvbnRyb2w6IHJlbW92ZWQgdHJhbnNmZXIgb2YgdW51c2VkCgl2YXJpYWJsZXMsIGZpeGVkIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBpbml0IGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbWFpbi4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJR2xvYmFsQWxsb2MgYXMgR2xvYmFsQWxsb2MxNiBzaG91bGQgcm91bmQgc2l6ZSB0byAzMi4KCUNhbGwgU2V0TGFzdEVycm9yIGluIEdsb2JhbExvY2suCgoyMDAwLTExLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW4zMnMvd2luMzJzMTYuYywgbWVtb3J5L3NlbGVjdG9yLmM6CglNb3ZlZCBVVFNlbGVjdG9yT2Zmc2V0VG9MaW5lYXIgYW5kIFVUTGluZWFyVG9TZWxlY3Rvck9mZnNldCB0bwoJZGxscy93aW4zMnMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaDoKCVJlbW92ZWQgZGVwZW5kZW5jeSBvbiAxNi1iaXQgZmlsZSBJL08gZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3dzcHJpbnRmLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvd3NwcmludGYuYywgbXNkb3MvaW50MTEuYywgb2xlL29sZTJubHMuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jOgoJTW92ZWQgd3NwcmludGYgZnVuY3Rpb25zIHRvIGRsbHMvdXNlci4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRyYXcgc2Nyb2xsYmFycyBpZiB0aGVpciBjbGllbnQgcmVjdGFuZ2xlIGlzIGVtcHR5LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZ25vcmUgU09MX1NPQ0tFVC9TT19ERUJVRyBzZXRzb2Nrb3B0KCkgY2FsbHMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc3RyYW5nZSBjaGVja2ogZm9yICFmaWxlbmFtZSwgc28gd2UgZG9uJ3QgZ2V0IHNlY3Rpb24gTlVMTAoJYWNjZXNzZXMgbGF0ZXIuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglSZXBsYWNlZCB1X2NoYXIvdV9zaG9ydC91X2xvbmcgYnkgQllURS9XT1JEL0RXT1JEIGZvciBpbmNyZWFzZWQgcG9ydGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUNvcnJlY3RlZCBkZWZhdWx0IHZhbHVlcyB3aXRoIGhlbHAgZnJvbSBVbHJpY2ggQ3pla2FsbGEuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBlbnRyeSBwb2ludCBmbGFncyAtbm9pbXBvcnQsIC1ub3JlbGF5LCAtcmV0NjQgYW5kIC1pMzg2LgoJUmVwbGFjZWQgJ2J5dGUnLCAnd29yZCcgYW5kICdsb25nJyBieSAndmFyaWFibGUnIGFuZCBtYWRlIGl0IHdvcmsgZm9yCglXaW4zMiB0b28uCglNYWRlIHBhcnNlciBtb3JlIHJvYnVzdCBhZ2FpbnN0IHRydW5jYXRlZCBmaWxlcy4KCgkqIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9lbGZkbGwuaCwgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSBzdXJlIGFsbCBmaWxlcyB1c2luZyBjb25maWcuaCBjb25zdGFudHMgYWN0dWFsbHkgI2luY2x1ZGUgImNvbmZpZy5oIgoKCSogZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2F2aWZpbGUuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZGNpbWFuMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUaGUgX193aW5lX2NhbGxfZnJvbV8xNl8gY2FsbHMgaW4gdGhlIGltcG9ydCB0YWJsZSBzaG91bGQgdXNlIGEgdmFsaWQKCXNlZ21lbnQgZm9yIGRlcmVmZXJlbmNpbmcgdGhlaXIgcG9pbnRlciAodXNpbmcgQ1MpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY2hlY2tpbmcgZm9yIG5ldGRiLmguCglEb24ndCBpbmNsdWRlIGFycGEvaW5ldC5oIGFuZCBzeXMvc29ja2V0LmggaWYgc3lzdGVtIGRvZXNuJ3QgaGF2ZSB0aGVzZSBoZWFkZXJzLgoKCSogaW5jbHVkZS94MTFkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCURvIG5vdCBjb21waWxlIGNvZGUgdGhhdCBtYWtlcyB1c2Ugb2YgdGhlIFggU2htIGV4dGVuc2lvbi4KCjIwMDAtMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbm50Lmg6CglNb3ZlZCBHRVRfSVAgb3V0IG9mIHdpbm50LmguCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0NoYW5nZUxvZywgcHJvZ3JhbXMvcHJvZ21hbi9SdS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjOgoJVmFzaWx5IEkuIFZvbGNoZW5rbyA8Rm9vZFRlY2hub2xvZ2lzdEBwaXNlbS5uZXQ+CglBZGRlZCBSdXNzaWFuIGxhbmd1YWdlIHN1cHBvcnQuCglGaXhlZCBidWcgb2YgZmlsZSBicm93c2luZyBvcGVyYXRpb24gKGZpbGVwYXRoIGxlbmd0aCBjb3JyZWN0ZWQpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNoZWNraW5nIGZvciBtbWFwLgoKCSogdG9vbHMvd3JjL3V0aWxzLmM6CglBZGRlZCBhIGZldyBtaXNzaW5nIGxhbmd1YWdlcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYywgZGxscy9rZXJuZWwvbmxzL2hrZy5ubHMsIGRsbHMva2VybmVsL25scy9wcmMubmxzLCBkbGxzL2tlcm5lbC9ubHMvc2dwLm5sczoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQWRkZWQgbWlzc2luZyBsb2NhbGVzIHRvIGxvY2FsZV9yYy5yYy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFkZSBYMTFEUlZfRElCX0dldEltYWdlQml0c18xNiBhd2FyZSBvZiA1NjUgRElCcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBzdXBwb3J0IGZvciBhcmd1bWVudHMgd2l0aCByZWZlcmVuY2VkIHR5cGVzCgktIGltcG9ydGVkIHR5cGUgbGlicmFyaWVzCgktIGRpc3BpbnRlcmZhY2VzCgktIGR1YWwgaW50ZXJmYWNlcwoJLSByZWYgY291bnQgcHJvYmxlbXMKCS0gbWVtb3J5IGxlYWtzIGZpeGVkCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglnbGliYzIuMiBuZWVkcyBfX1VTRV9JU09DOTkgZm9yIEZQX05BTiBhbmQgaXNmaW5pdGUoKS4KCgkqIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS93aW5jb24uaCwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZpeGVkIEdldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZSByZXR1cm4gdHlwZSBmb3IgV2luZWxpYiBhcHBzLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWM6CglBZGRlZCBhIGZldyBmb3J3YXJkcy4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUZpeGVkIHR5cG9zLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIEdldC9TZXRESUJDb2xvclRhYmxlLgoKCSogZGxscy9rZXJuZWwvbmxzL2x0aC5ubHMsIGRsbHMva2VybmVsL25scy9sdmkubmxzOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglDb21wbGV0ZWQgbHZpLm5scyBhbmQgbHRoLm5scy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGVjayB3aGV0aGVyIHNlbmRlclEgaXMgTlVMTCBiZWZvcmUgdHJ5aW5nIHRvIGxvY2sgaXQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBGaXggY3R5cGUoKSwgbWFrZSBpcyogZnVuY3Rpb25zIGJpbmFyeSBjb21wYXRpYmxlCgktIEFkZCAxMyBmdW5jdGlvbnMsIHNldCBlcnJubyBpbiBtYXRoIGNhbGxzCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGlmMTYzMi9yZWxheS5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvcnBjLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSB0aGUgc2FtZSBoZWFkZXJzIGFzIG9uIFdpbmRvd3MuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgaW5jbHVkZS9jb21wb2JqLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJY29tcG9iai5oIGlzIGEgc3lub255bSBmb3Igb2JqYmFzZS5oCglNb3ZlZCBhbGwgdGhlIG90aGVyIGNvbnRlbnRzIHRvIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgKCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG5vdGlmaWNhdGlvbiBmb3JtYXQgaGFuZGxpbmcuCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgV2luMTYgYmVoYXZpb3VyIG9mIERETF9EUklWRVMgaW4gRGxnRGlyTGlzdC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFRvVW5pY29kZSBUUkFDRSBtZXNzYWdlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBBZGQgbWF0aCBjYWxsczogc2NhbGIsIGZwY2xhc3MsIG5leHRhZnRlciwgbG9nYiwgX0NJKgoJLSBBZGQgZnV0aW1lLCB1dGltZSwgcHVyZWNhbGwsIGdldHBpZAoKCSogZGxscy9udGRsbC9taXNjLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTlRETExfX0NJcG93IHJldHVybnMgZG91YmxlLCBub3QgTE9ORy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIFJlYWQgYWxsIHRoZSBmcmFnbWVudHMgYXZhaWxhYmxlLCBub3Qgb25seSBvbmUgZnJhZ21lbnQgYmVmb3JlCgkgIGdvaW5nIGJhY2sgdG8gc2xlZXAuCgktIFVzZSBTTkRDVExfRFNQX1NFVFRSSUdHRVIgaW9jdGwgY29tbWFuZCB0byB0cmlnZ2VyIHRoZSBzdGFydCB0aGUKCSAgcmVjb3JkaW5nLiBJZiB0aGlzIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlLCByZWFkIDQKCSAgYnl0ZXMgaW4gdGhlIHNvdW5kIGRldmljZSBpbnN0ZWFkLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG5hdGlvbmFsIGNoYXJhY3RlcnMgYXMgYWNjZWxlcmF0b3JzIGluIGRpYWxvZ3MuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGdlbmVyYXRlIHVuaWNvZGUgQ0hBUiBtZXNzYWdlcy4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYzoKCUZpeGVkIHdhcm5pbmdzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZHJpdmVyLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9vbGUzMi9pZnMuYywgbXNkb3MvZG9zbWVtLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljcy4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZGlTZWVHZGlEbzE2LgoKCSogaW5jbHVkZS93aW5udC5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGRvdWJsZSBBTllTSVpFX0FSUkFZIGRlZmluZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaGVuIGF1dG9kZXRlY3RlZCB0aGUgTUZDIHdlcmUgc3RpbGwgZ2VuZXJhdGluZyB3cmFwcGVycy4KCUZpeGVkIGluY29uc2lzdGVuY2llcyBpbiB0aGUgdXNlIG9mICdubycgaW4gdGhlIG9wdGlvbiBuYW1lcy4KCVVwZGF0ZWQgdGhlIE1GQyBsaW5rLWxpc3QgKGNvbmZpZ3VyZS5pbikuCglNYWRlIHRoZSBNYWtlZmlsZS5pbiBsYXlvdXQgbW9yZSByZWFkYWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXBkYXRlIGNvbW1lbnRzLCBjbGVhbnVwIHdhcm5pbmcgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDExLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUluY2x1ZGUgY29uZmlnLmggaW4gZmlsZXMgdGhhdCB0ZXN0IGZvciBjb25zdGFudHMgZGVmaW5lZCBpbiBpdC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBdm9pZCB1c2luZyBUSU9DTV8qIGNvbnN0YW50cyBpZiBub3QgYXZhaWxhYmxlLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgdHlwbyBpbiBtYWNybyBJQ09NX01FVEhPRDExIHBhcmFtZXRlciBsaXN0LgoKCSogZGxscy9pbWFnZWhscC9tb2RpZnkuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUEUgZmlsZSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBjYWxscyB0byBpbnRlcm5hbCAobm9uLWV4cG9ydGVkKSB3aW5lIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgdHVya2lzaCBsb2NhbGUuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGZvciB6ZXJvLWxlbmd0aCBzdHJpbmcgc2VsZWN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglTZW5kIEhETl9JVEVNQ0hBTkdJTkcgYW5kIEhETl9JVEVNQ0hBTkdFRCB3aGVuIHJlc2l6aW5nLgoKCSogb2xlL29sZTJubHMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29tcGFyZVN0cmluZ1cgcmV0dXJuZWQgd3JvbmcgcmVzdWx0cyBzb21ldGltZXMuCgoJKiBvbGUvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJV2Ugbm8gbG9uZ2VyIGhhdmUgYW4gb2xlL25scyBkaXJlY3RvcnkuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgb3JkaW5hbCBzdHVicywgaW1wbGVtZW50ZWQgU0hEZWxldGVWYWx1ZSosIFNIU2V0VmFsdWUqLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIFNlbmROb3RpZnlNZXNzYWdlKCkuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWFkZSB3aW5laW5zdGFsbCBhIGJpdCBtb3JlIHZlcmJvc2UuCgoJKiBkbGxzL2dkaS93aW5nLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luRyB3YXMgd3JpdHRlbiBmb3IgOGJwcCBESUJzLCBzbyBzb21lIGFwcHMgYXNzdW1lIHRoYXQsIHNvIGFsd2F5cwoJcmVjb21tZW5kIDhicHAsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdHVhbCBkaXNwbGF5IGRlcHRoLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0UGl4ZWwgbmVlZHMgdG8gcmV0dXJuIENMUl9JTlZBTElEIGlmIG5vdCBpbnNpZGUgY2xpcHBpbmcgcmVnaW9uLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgT0xFMzIuRGxsUmVnaXN0ZXJTZXJ2ZXIgc3R1Yi4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSb3V0ZWQgYSBjb3VwbGUgb2YgMTYtYml0IGF2aWZpbGUuZGxsIGhhbmRsZXJzIHRvIHRoZSAzMi1iaXQKCWhhbmRsZXJzLi4uIHdlbGwsIHdvcmtzIGZvciBDaXZpbGl6YXRpb24gSUkuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBvdygpIGZvcndhcmQuCgoJKiByZWxheTMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IHRlc3QgIUhJV09SRCB2YWx1ZXMgZm9yIHBvaW50ZXJuZXNzLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nIG9uIEN5Z3dpbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNdWx0aUJ5dGVUb1dpZGVDaGFyKCkgcmV0dXJucyBjaGFyYWN0ZXJzLCBub3QgYnl0ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFZUX0VNUFRZIHRvIFZUX0JTVFIgdHlwZSBjb2VyY2lvbi4KCgkqIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgT2xle0csU31ldEF1dG9Db252ZXJ0LCBMSGFzaFZhbE9mTmFtZVN5c3ssQX0uCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSAlbHMgc2FtZSBhcyAlcy4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYywgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBEQ0lPcGVuUHJvdmlkZXIuCgoyMDAwLTExLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW46CglBdm9pZCBsaW5raW5nIHdpdGggbnRkbGwgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvc3Bhd24uYzoKCVJlbW92ZWQgY2FsbHMgdG8gV2luZSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVJlcGxhY2VkIEhFQVBfc3RyZHVwKiBhbmQgbHN0cmNweW5BdG9XIGNhbGxzIGJ5IGV4cG9ydGVkIGZ1bmN0aW9ucy4KCjIwMDAtMTEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2dkaW9iai5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvc3lzbGV2ZWwuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luc29jay5oOgoJTW92ZWQgc3RhbmRhcmQgc3lzbGV2ZWwgQVBJcyBkZWNsYXJhdGlvbiB0byB3aW5iYXNlLmguCglVc2UgZXhwb3J0ZWQgc3lzbGV2ZWwgZnVuY3Rpb24gd2hlcmV2ZXIgcG9zc2libGUuCglNb3ZlZCBTRUdQVFIgZGVjbGFyYXRpb24gdG8gd2luZGVmMTYuaC4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1hcHBpbmcgdG8vZnJvbSB1bmljb2RlIGZvciBXTV9DSEFSLCBXTV9ERUFEQ0hBUiwgV01fU1lTQ0hBUiwKCVdNX1NZU0RFQURDSEFSIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsb3cgdGhlIHVzZXIgdG8gc3RpY2sgdGhlIG9wdGlvbiBhbmQgaXRzIGFyZ3VtZW50IHRvZ2V0aGVyLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL21lbW9yeS5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBDb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGVhcCBmdW5jdGlvbnMKCS0gRm9yd2FyZCBqMCxqMSxqbix5MCx5MSx5biBtYXRoIGNhbGxzIHRvIGxpYmMKCS0gQWRkIHN0cm5leHRjLCBwYXNzIHRleHQgZmxhZyBpbiBjcmVhdCwgd2luYXBpX2NoZWNrIGZpeGVzCgoJKiBjb250cm9scy93aWRnZXRzLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXBhcmUgc3dpdGNoaW5nIHRvIHVuaWNvZGUgb2YgYnVpbHRpbiB3aWRnZXRzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglJbmNyZWFzZSBudW1iZXIgb2YgcGFyYW1ldGVycyBwb3NzaWJsZSBmb3IgSUNPTV8qIG1hY3JvcyB0byAxMS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVNraXAgZGlyZWN0b3JpZXMgd2hlbiBsb2FkaW5nIGRlYnVnIHN5bWJvbHMuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBpbnRlcm5hbCBtb2R1bGUgaGFuZGxpbmcgKG1vZHVsZSBub3cgaGF2ZSBhIHNpemUsIG1hcCBvZgoJbG9hZGVkIG1vZHVsZSBpcyBjbGVhcmVyLCBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLCBzZXBlcmF0ZWQgbW9kdWxlCglsb2FkaW5nIGNvZGUgZnJvbSBzeW1ib2wgZXh0cmFjdGlvbikuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGVzLgoJRWxpbWluYXRlIHVzZSBvZiBVU0VSIGludGVybmFsIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglVc2UgaW50ZXJuYWwgdW5pY29kZSBzdHJpbmdzLgoJQWRkZWQgdW5pY29kZSBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyB1bmljb2RlIHN1cHBvcnQgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUluY2x1ZGUgY29uZmlnLmguCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2ltcGxpZmllZCByZWcgaGFuZGxpbmcgaW4gQ29HZXRDbGFzc09iamVjdCwgZG8gbm90IHVzZSBSZWdRdWVyeVZhbHVlVy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVnU2V0VmFsdWVFeDE2IG1pZ2h0IGdldCBwYXNzZWQgMCBhcyBjb3VudCBvZiBkYXRhYnl0ZXMsIGRldGVybWluZQoJc3RyaW5nIGxlbmd0aCBmb3Igb3Vyc2VsdmVzIGluIHRoaXMgY2FzZS4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3Vua253bi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hdGNoIHRoZSBXaW5kb3dzIGhlYWRlciBkZXBlbmRlbmNpZXMuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTTV9BUlJBTkdFIGlzIEFSV19ISURFLCBpLmUuIDgKCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEaXN0aW5ndWlzaCBiZXR3ZWVuIElNUE9SVFMgYW5kIExJQlJBUklFUy4KCVJlbmFtZWQgTElCUkFSSUVTIHRvIERMTFMgdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggdGhlIGFib3ZlLCByZW5hbWVkCglQUk9HUkFNUyB0byBFWEVTIHRvIG1hdGNoLgoJQWRkZWQgYSAnLWknIG9wdGlvbiBmb3IgaW1wb3J0aW5nIGEgV2luZWxpYiBsaWJyYXJ5LiAnLWwnIGlzIHN0aWxsCgl0aGVyZSBidXQgaXMgb25seSB1c2VkIGZvciBsaW5raW5nIGluIHRoZSBVbml4IHNlbnNlLgoJRGlzYWJsZWQgdGhlICd3cmFwcGVyJyBvcHRpb25zLiBJdCB3aWxsIGJlIHJlbW92ZWQgYXMgYSBzZXBhcmF0ZQoJcGF0Y2guCglObyBsb25nZXIgbGluayB3aXRoIGFsbCBvZiBXaW5lJ3MgbGlicmFyaWVzLgoJSW1wb3J0IHRoZSBzYW1lIGRlZmF1bHQgc2V0IG9mIGRsbHMgYXMgVmlzdWFsIFN0dWRpby4KCUF2b2lkIGR1cGxpY2F0ZSBpbXBvcnRzIHdoZW4gZ2VuZXJhdGluZyB0aGUgLnNwZWMgZmlsZS4KCVVwZGF0ZWQgdGhlIHdheSB3aW5lYnVpbGQgaXMgdXNlZC4KCUxpbmsgYXBwbGljYXRpb25zIGFzIGxpYnJhcmllcyBhbmQgY3JlYXRlIGEgc3ltYm9saWMgbGluayB0byB3aW5lLgoJRGV0ZWN0IHdoZXJlICd3aW5lJyBpcyBsb2NhdGVkIGluIHRoZSBjb25maWd1cmUgc2NyaXB0LgoJUmVtb3ZlZCB1bnVzZWQvbm8gbG9uZ2VyIHVzZWQgdmFyaWFibGVzOiBETExGTEFHUywgWExJQiwgWF9ETExTLAoJWEZJTEVTLCBETExTIChjb25maWd1cmUuaW4pCglVcGRhdGVkIExEU0hBUkVEIEFORCBMRERMTEZMQUdTIGRldGVjdGlvbiAoY29uZmlndXJlLmluKS4KCVJlbW92ZWQgdGhlIHJ1bGVzIHBlcnRhaW5pbmcgdG8gc3BlYyBmaWxlcyBmcm9tIHRoZSBNYWtlLnJ1bGVzLgoJVXBkYXRlZCB0aGUgY2xlYW4gY29tbWFuZCB0byByZW1vdmUgdGhlIHN5bWJvbGljIGxpbmtzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgcnBjcnQ0IHN0dWJzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGRlc2t0b3A9TiBpbiB0aGUgW3gxMWRydl0gc2VjdGlvbiBvZiAud2luZXJjLCBpbnN0ZWFkIG9mCglkZWZhdWx0aW5nIHRvIGRlc2t0b3A9NjQweDQ4MC4KCjIwMDAtMTEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9sZHQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9zZWxlY3RvcnMuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9sZHQuYywgbG9hZGVyL3Rhc2suYzoKCU1vdmVkIExEVCBoYW5kbGluZyB0byBsaWJ3aW5lLnNvLiBDaGFuZ2VkIHRoZSBpbnRlcmZhY2UgdG8gdXNlIHRoZQoJZXhwb3J0ZWQgTERUX0VOVFJZIHN0cnVjdHVyZS4KCjIwMDAtMTEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjOgoJVGVtcCBoYWNrOiBkbyBub3QgaW1wb3J0IGRsbHMgdGhhdCB3ZSBsaW5rIHdpdGggYXQgdGhlIEVMRiBsZXZlbC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGaXhlZCBjb3B5L3Bhc3RlIHR5cG8gc3BvdHRlZCBieSBEaW1pdHJpZSBPLiBQYXVuLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBkcmFnZ2luZyBvbiBncmlwcGVyIHRvIGV4cGFuZCBhbmQgY29tcHJlc3MgYmFuZHMuIEFjdHVhbAoJbW92aW5nIGJhbmRzIHRvIGRpZmZlcmVudCByb3dzIHdpbGwgYmUgbGF0ZXIuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJLSBjcmVhdGVkIHNlcnZlciBvYmplY3QgZm9yIGhhbmRsaW5nIGFzeW5jIGkvbwoJLSBpbXBsZW1lbnRlZCBXYWl0Q29tbUV2ZW50IHdpdGggdGhlIEVWX1JYQ0hBUiBmbGFnCgktIGltcGxlbWVudGVkIEdldE92ZXJsYXBwZWRSZXN1bHQKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RodW5rLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy93aW5wcm9jLmM6CglFeHBvcnQgdGhlIENhbGxGcm9tMTZ4eHggZnVuY3Rpb25zIGZyb20ga2VybmVsMzIuIFJlbmFtZWQgdGhlbQoJX193aW5lX2NhbGxfZnJvbV8xNiB0byBmb2xsb3cgdGhlIG5hbWluZyBjb252ZW50aW9uLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG8gbm90IHdhcm4gZm9yIHVudXNlZCBpbXBvcnRlZCBkbGxzIHdoZW4gZm9yd2FyZHMgdG8gdGhlIHNhbWUgZGxscwoJYXJlIHByZXNlbnQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEb24ndCBpbmNsdWRlIHdpbmUgaW50ZXJuYWwgZnVuY3Rpb25zIGluIHRoZSByZWxheSBkZWJ1Z2dpbmcgdGFibGUuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRG8gYSBzdHJpcCAtLXN0cmlwLXVubmVlZGVkIG9uIHRoZSAudG1wLm8gZmlsZSB0byByZWR1Y2UgZGlzayB1c2FnZS4KCgkqIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBtZW1vcnkvZ2xvYmFsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYzoKCVJlcGxhY2VkIGEgZmV3IGludGVybmFsIGZ1bmN0aW9ucyBieSBleHBvcnRlZCBvbmVzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVW5peDk4IHB0aHJlYWRfcndsb2NrKiBzdHVicyBmb3IgZ2xpYmMyLjIgY29tcGF0aWJpbGl0eS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaW5jZSB3ZSBjYW4gbm8gbG9uZ2VyIGJ1aWx0IC5hIGZpbGVzOgoJLSByZW1vdmUgLWRpc2FibGUvLWVuYWJsZS1kbGwgb3B0aW9uCgktIGVycm9yIGFuZCBhYm9ydCBpZiBubyBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBsaW5raW5nIGlzIHBvc3NpYmxlCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIGRldGVjdGlvbiBvZiB0aGUgbGluayBmbGFncyBmb3IgTmV0QlNEL0N5Z3dpbiAoY29uZmlndXJlLmluKQoJQWRkZWQgQUNfUEFUSF9IRUFERVIgYW5kIEFDX1BBVEhfTElCUkFSWQoJQmV0dGVyIGhlYWRlci9saWJyYXJ5IGRldGVjdGlvbi4gTm93IHdvcmtzIGlmIHRoaW5ncyBhcmUgYWxyZWFkeSBpbgoJdGhlIGluY2x1ZGUvbGlicmFyeSBwYXRoCglMb29rIGZvciB0aGUgd2luZS9NRkMgaGVhZGVycyBhbmQgbGlicmFyaWVzIGluIG1vcmUgcGxhY2VzIHNvIHRoYXQgaXQKCXdvcmtzIG91dCBvZiB0aGUgYm94IGlmIFdpbmUvTUZDIGlzIGluc3RhbGxlZCBpbiBhIHN0YW5kYXJkIHBsYWNlCgkoYWx0aG91Z2ggdGhlcmUgaXMgbm90IHJlYWxseSBhIHN0YW5kYXJkIHBsYWNlIHlldCBmb3IgdGhlIE1GQykKCVJlbmFtZWQgdGhlICctLXdpdGgteHh4JyBvcHRpb25zIHRvIGhhdmUgc2ltcGxlciBtb3JlIG5hdHVyYWwgbmFtZXMKCVJlbmFtZWQgdGhlIGNvcnJlc3BvbmRpbmcgJ1dJTkVMSUJfeHh4JyB2YXJpYWJsZXMgdG8gJ1dJTkVfeHh4JwoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdoZW4gYSBXaW4xNiBhcHAgc2V0cyBhIHNlbGVjdG9yIGJhc2UgdG8gbG93IERPUyBtZW1vcnksIG1ha2Ugc3VyZSBsb3cKCURPUyBtZW1vcnkgaXMgbWFwcGVkIGZpcnN0LgoKCSogbXNkb3MvaW50ZXJydXB0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgdGhlIHZpcnR1YWwgcmVhbC1tb2RlIGludGVycnVwdCB0YWJsZSBpZiBsb3cgRE9TIG1lbW9yeSBpc24ndAoJbWFwcGVkLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW9yZ2FuaXplZCBET1MgbWVtb3J5IHJlbWFwcGluZyBzbGlnaHRseSwgc28gdGhhdCB0aGUgcmVhbC1tb2RlCglpbnRlcnJ1cHQgdGFibGUgY2FuIGV4aXN0IGV2ZW4gd2hlbiBsb3cgRE9TIG1lbW9yeSBpc24ndCBtYXBwZWQsCglhbmQgaXMgY29waWVkIGRvd24gYWxvbmcgd2l0aCB0aGUgQklPUyBhcmVhIHdoZW5ldmVyIGl0IGlzIG1hcHBlZC4KCUFkZGVkIERPU01FTV9TeXN0ZW1CYXNlKCkgd2hpY2ggcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZpcnR1YWwKCXJlYWwtbW9kZSBpbnRlcnJ1cHQgdGFibGUgYW5kIEJJT1MgZGF0YSBzZWdtZW50LgoJQWxsb3dlZCBET1NNRU1fSW5pdChUUlVFKSB0byBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCgoyMDAwLTExLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluOgoJU3RhcnQgdXNpbmcgaW1wb3J0IHRhYmxlcyBmb3IgZGxscyB0aGF0IGNhbiBhbHJlYWR5IHN1cHBvcnQgaXQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL3Rhc2suYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglSYWlzZSBhbiBleGNlcHRpb24gZm9yIHVuaW1wbGVtZW50ZWQgMTYtYml0IGVudHJ5IHBvaW50cyB0b28uCglBZGRlZCBjaGVjayBmb3IgZHVwbGljYXRlIG5hbWVzIGluIDE2LWJpdCBzcGVjIGZpbGVzLgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCVRoZSBkZWJ1Z2dlciAiQXV0byIgcmVnaXN0cnkgdmFsdWUgc2hvdWxkIGJlIGEgc3RyaW5nLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgd2luZS5pbmk6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBEZXNrdG9wPVhYWHhZWVkgc2V0dGluZyBpbiB0aGUgW3gxMWRydl0gc2VjdGlvbiBvZiB0aGUKCWNvbmZpZyBmaWxlLgoKCSogZGVidWdnZXIvbXNjLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgdXNlIG9mIFdpbmRvd3Mgc3RydWN0dXJlIGZvciBDT0ZGIGluZm8uCglGaXhlZCBhIGZldyBpc3N1ZXMgaW4gQ09GRiBsb2FkaW5nLgoJQ2xlYW5lZCB1cCB0aGUgY29kZS4KCgkqIHRvb2xzL2MybWFuLnBsOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgQVBJcyB0aGF0IGRvbid0IGhhdmUgYW55IG9yZGluYWwgKG9yZGluYWw9QCkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJTWFkZSBXSU5TUE9PTF9HZXRQcmludGVyRHJpdmVyIHdvcmsgYWdhaW4uCgoyMDAwLTExLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uc29sZS9nZW5lcmljLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUdldCByaWQgb2Ygc29tZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgdmFyaWFibGVzLCBzaWduZWQvdW5zaWduZWQKCWNvbXBhcmlzb25zIGFuZCBpbmNvbXBsZXRlIGluaXRpYWxpemF0aW9ucy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmdkaS5oLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzI4NjAwLmMsIHVuaWNvZGUvY18yODYwMy5jLCB1bmljb2RlL2NfMjg2MDQuYywgdW5pY29kZS9jXzI4NjA1LmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglBZGQgbmV3IGVuY29kaW5ncyBJU08gODg1OS0xMCAoY3AyODYwMCksIDg4NTktMTMgKGNwMjg2MDMpLCA4ODU5LTE0IChjcDI4NjA0KSwKCTg4NTktMTUgKGNwMjg2MDUpLiBBZGQgTGl0aHVhbmlhbiAoQmFsdGljKSBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgV01fUEFJTlQgaW4gQU5JTUFURV9XaW5kb3dQcm9jOyBjYWxsIERlZldpbmRvd1Byb2NBIGZvciBkZWZhdWx0IGhhbmRsaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFub3RoZXIgZGV0ZWN0aW9uIG9mIHN0cmVuZ3RoLXJlZHVjZSBidWcgaW4gR0NDLgoKMjAwMC0xMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5zcGVjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbjoKCUJ1aWxkIG1vc3QgcHJvZ3JhbXMgYXMgLnNvIGZpbGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zLy5jdnNpZ25vcmUsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUFkZGVkIE1ha2Vwcm9nLnJ1bGVzLmluIGNvbnRhaW5pbmcgcnVsZXMgZm9yIGJ1aWxkaW5nIFdpbmVsaWIKCXByb2dyYW1zLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgdmFyaWFibGUgYXJndW1lbnQgbWFjcm9zIHdoZW4gY29tcGlsaW5nIHdpdGggZ2NjLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB3aW5lbGF1bmNoZXIgc21hcnRlciBhYm91dCBmaW5kaW5nIHRoZSBXaW5lIGxpYnJhcmllcyBhbmQKCWJpbmFyaWVzLiAgQ2hhbmdlIHRoZSBjb2xvciBzY2hlbWUuICBIYW5kbGUgbGF1bmNoZXMgd2l0aCBubwoJYXJndW1lbnRzLCBjb3JyZWN0bHkgaGFuZGxlIGludm9jYXRpb24gYXMgYSBtaW1lLXR5cGUgaGFuZGxlciBmcm9tCglLREUuCgoJKiBtZW1vcnkvaGVhcC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9zcWxleHQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIERVTU1ZeHh4TkFNRSBmb3IgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgcG9pbnRlciB0eXBlczogUHh4eCBvciBMUHh4eAoJRml4ZWQgdGhlIGRlZmluaXRpb24gb2YgRk9OVEVOVU1QUk9DCglGaXhlZCB0eXBvOiBUQV9SVExFQURJTkcgaXMgaW4gZmFjdCBUQV9SVExSRUFESU5HIChyaWdodCB0byBsZWZ0CglyZWFkaW5nIEkgYmVsaWV2ZSkKCUFkZGVkIG1pc3NpbmcgZGVmaW5pdGlvbnM6IFBDX1RSQVBFWk9JRAoJVXNlIERVTU1ZeHh4TkFNRSBmb3IgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMgaW4gREVWTU9ERQoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBTVE5feHh4IG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSElDT04gYW5kIEhDVVJTT1Igc2hvdWxkIGJlIGludGVyY2hhbmdlYWJsZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBMUFVEQUNDRUwgYW5kIEhERl9SVExSRUFESU5HLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgaW5jbHVkZSBzdGF0ZW1lbnRzIG9mIG5vdC1mb3VuZCBmaWxlcyB0byBsb3dlciBjYXNlIGJ5CglkZWZhdWx0CglBZGRlZCAtLW5vLWxvd2VyLWluY2x1ZGUgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSBhYm92ZQoJQmVhdXRpZmllZCB0aGUgaW50ZXJhY3RpdmUgbW9kZSBvdXRwdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93CglJbnRlcmFjdGl2ZSBtb2RlOiBzdXBwb3J0IHRoZSAtLW1mYyBhbmQgLS13cmFwIG9wdGlvbnMgZm9yIGJvdGgKCXByb2plY3RzIGFuZCB0YXJnZXRzCglGaXhlZCB0aGUgbWZjL3dyYXAgcHJvcGFnYXRpb24gYmV0d2VlbiBwcm9qZWN0IGFuZCB0YXJnZXRzIChnb2VzIGJvdGgKCXdheXMpCglBdXRvZGV0ZWN0IE1GQyBiYXNlZCBwcm9qZWN0cyBieSBsb29raW5nIGZvciBhbiAnc3RkYWZ4LihjcHB8aCknIGZpbGUKCURvbid0IHB1dCB0aGUgc3RkYWZ4LmNwcCBmaWxlIGluIHRoZSBsaXN0IG9mIGZpbGVzIHRvIGNvbXBpbGUgKGl0J3MKCWp1c3QgdGhlcmUgZm9yIHByZS1jb21waWxlZCBoZWFkZXJzLCB5dWspCglGaXhlZCBMRF9MSUJSQVJZX1BBVEggd2hlbiBsaW5raW5nIGFuIGFwcGxpY2F0aW9uIHdpdGggYSBsaWJyYXJ5IGZyb20KCXRoZSBzYW1lIG1ha2VmaWxlCglEb24ndCBmb3JnZXQgJ2V4dHJhJyBzb3VyY2VzIHdoZW4gbG9va2luZyBmb3IgYSBmaWxlIGZvciBjb25maWd1cmUuaW4KCVJlbmFtZWQgdGhlICctLW5vLW1ha2VmaWxlJyBvcHRpb24gdG8gJy1uby1nZW5lcmF0ZWQtZmlsZScKCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudCB0aGUgLS1sb3dlci1pbmNsdWRlIG9wdGlvbnMuCglEb2N1bWVudCB0aGUgLS1uby1nZW5lcmF0ZWQtZmlsZXMgb3B0aW9ucy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IFJlcGFpcmVkIHJlbGF5IGRlYnVnZ2luZy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCVdlIGRvIG5vdCBuZWVkIHRvIHNldCBTT1ZFUlNJT04gZm9yIGRsbHMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2V4cGFuZC5zcGVjLCBsaWJ0ZXN0L2hlbGxvLnNwZWMsIGxpYnRlc3QvaGVsbG8yLnNwZWMsIGxpYnRlc3QvaGVsbG8zLnNwZWMsIGxpYnRlc3QvaGVsbG80LmMsIGxpYnRlc3QvaGVsbG80LnNwZWMsIGxpYnRlc3QvaGVsbG81LnNwZWMsIGxpYnRlc3QvbmV3LnNwZWMsIGxpYnRlc3Qvcm9sZXguc3BlYywgbGlidGVzdC92YXJ0ZXN0LmMsIGxpYnRlc3QvdmFydGVzdC5zcGVjLCBsaWJ0ZXN0L3ZvbGluZm8uc3BlYzoKCUJ1aWxkIHRlc3QgcHJvZ3JhbXMgYXMgLnNvIGZpbGVzLiBBZGRlZCBtaXNzaW5nIGltcG9ydHMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xvYWRlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBhIFdpbmVsaWIgYXBwIGxpbmtlZCBhcyBhIC5zbyBmcm9tIHRoZSB3aW5lCglsYXVuY2hlciwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGFyZ3ZbMF0uCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluOgoJRG9uJ3QgbGluayBsaWJ3aW5lX3VuaWNvZGUgaW50byBhbGwgZGxscy4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmgsIHByb2dyYW1zL2Nsb2NrL2xpY2Vuc2UuYywgcHJvZ3JhbXMvY2xvY2svbGljZW5zZS5oLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmgsIHByb2dyYW1zL25vdGVwYWQvbGljZW5zZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xpY2Vuc2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUZpeGVkIGxhbmd1YWdlIGhhbmRsaW5nLiBSZW1vdmVkIHNvbWUgZGVwZW5kZW5jaWVzIG9uIFdpbmUgaW50ZXJuYWxzLgoKCSogd2luZS5pbmk6IEFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gZXhwbGFuYXRpb24gZm9yIHRoZSBkaXJlY3Rvcnkgc3ltbGluayBzdHVmZi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglDb3JyZWN0ZWQgdXNlZCByZWdpc3RyeSBrZXkuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBuU29ja2V0RkQgdG8gSU5WQUxJRF9TT0NLRVQuCgoyMDAwLTExLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYywgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWMsIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuc3BlYywgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LnNwZWM6CglBZGRlZCBzb21lIG1pc3NpbmcgaW1wb3J0cy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBzdXBwb3J0IGluIHdpbmVidWlsZCBmb3IgcmVzb2x2aW5nIGZ1bmN0aW9uIGltcG9ydHMgKC1zeW0gb3B0aW9uKS4KCUFkZGVkIC1MIG9wdGlvbiBmb3IgbG9jYXRpbmcgaW1wb3J0ZWQgZGxscy4KCUNoYW5nZWQgZ2VuZXJhdGVkIGV4ZSBpbml0IGNvZGUgdG8gdXNlIF9fd2luZV9nZXRfbWFpbl9hcmdzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBtaXNjL29wdGlvbnMuYzoKCUFkZGVkIF9fd2luZV9nZXRfbWFpbl9hcmdzIHRvIHJldHJpZXZlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRoZQoJYXBwbGljYXRpb24uCgoJKiBsb2FkZXIvZWxmZGxsLmM6CglEb24ndCBzdHJpcCB0aGUgbGlicmFyeSBleHRlbnNpb24gaWYgaXQncyBub3QgIi5kbGwiLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglGaXhlZCBOZXRCU0QgZGxsIGNoZWNrLgoJQWRkZWQgY2hlY2sgZm9yIC1Cc3ltYm9saWMuCglGaXhlZCBMRFNIQVJFRCBkZWZpbml0aW9uIHRvIHN1cHBvcnQgdW5kZWZpbmVkIFNPTkFNRS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoZWFkZXIgY29udHJvbCBjdXJzb3JzIGFuZCBkcmFnIGxpc3QgYXJyb3cgaWNvbi4KCgkqIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19Fbi5yYywgZGxscy93aW5lcHMvd3BzX1J1LnJjLCBkbGxzL3dpbmVwcy93cHNfU2sucmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFJ1c3NpYW4gcmVzb3VyY2VzIHRvIHRoZSBQb3N0c2NyaXB0IGRyaXZlci4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYSBjb3B5IG9mIHRoZSBkaWFsb2cgcmVzb3VyY2UgYmVmb3JlIGNvcnJlY3Rpbmcgc3R5bGVzLgoKMjAwMC0xMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglEbyBidWlsdGluIG1vZHVsZXMgZml4dXBzIGluIGxpYnJhcnkvbG9hZGVyLmMgYmVmb3JlIGNhbGxpbmcgdGhlCglsb2FkX2RsbCBjYWxsYmFjay4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9jb21tLmM6CglDaGVjayBhbGwgQ2FsbG91dHMgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIE5VTEwgYmVmb3JlIHVzaW5nIHRoZW0uCglEb24ndCBsb2FkIFVTRVIgZGxsIGlmIG5vdCBuZWVkZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL21lbW9yeS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW46CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBJbXBsZW1lbnRlZCA3MyBDUlQgZnVuY3Rpb25zCgktIFJlaW1wbGVtZW50ZWQgZmlsZSBJL08gdXNpbmcgV2luMzIgY2FsbHMKCS0gU2V0IGVycm5vL2Rvc2Vycm5vIGluIG1vc3QgY2FsbHMKCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4gYW5kICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJQWRkZWQgbWlkZGxlIG1vdXNlIGJ1dHRvbiBoYW5kbGluZy4KCgkqIGRsbHMvdXNlci8uY3ZzaWdub3JlOiBSZW1vdmVkIC5zIGZpbGVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNkY2VwLmgsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgdGhpbmdzIHRvIHRoZSBwcm9wZXIgcnBjeHh4LmggaGVhZGVyLgoJQWRkZWQgc29tZSB0eXBlIGRlZmluaXRpb25zIHVzZWQgYnkgdGhlIE1GQy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBpbmNsdWRlIHdpbmRlZi5oIGJlZm9yZSB3dHlwZXMuaCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBETV9SRVBPU0lUSU9OLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBpbmNsdWRlIHN0ZGFyZy5oLgoJQWRkZWQgYSBmZXcgbWlzc2luZyBleGNlcHRpb24gcmVsYXRlZCB0eXBlcy4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGluY2x1ZGUgY3R5cGUuaCBzbyB0aGF0IGFwcGxpY2F0aW9ucyBnZXQgaXNhbG51bSAmIGNvLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ0NfU09MSURDT0xPUiBhbmQgQ0NfQU5ZQ09MT1IuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2RlYnVnLmMsIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNb3ZlZCBidWlsdGluIGRsbCByZWdpc3RyYXRpb24gdG8gbGlid2luZS4KCUNoYW5nZWQgcHJvY2VzcyBpbml0aWFsaXphdGlvbiB0byBub3QgbG9hZCBpbXBvcnRlZCBkbGxzIHRvbyBlYXJseS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBWS19QUklPUiBhbmQgVktfTkVYVCBwcm9jZXNzaW5nIChtZXJnZWQgZnJvbSBDb3JlbCB0cmVlKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVG9Vbmljb2RlOiBpZ25vcmUgQ1RSTCtudW1iZXIga2V5c3Ryb2tlcy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL29wdGlvbnMuYzoKCUFkZGVkIG5ldyBsaWJyYXJ5LmggaGVhZGVyIGZvciBsaWJ3aW5lIGRlZmluaXRpb25zLgoJQWRkZWQgZ2V0cGFnZXNpemUoKSBhbmQgd2luZV9hbm9uX21tYXAoKSBwb3J0YWJpbGl0eSBmdW5jdGlvbnMuCgoyMDAwLTExLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCXB0aHJlYWRfYXRmb3JrOiBkb24ndCBjYWxsIGNyaXRpY2FsIHNlY3Rpb24gZnVuY3Rpb25zIGJlZm9yZQoJaW5pdGlhbGl6YXRpb24gaXMgZG9uZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCAwLy0xIG1peHVwIGZvciBpbmRpY2F0aW5nIG5vIG1hcHBpbmcgaGFuZGxlLgoKCSogY29udHJvbHMvdWl0b29scy5jLCBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHR5cG9zIGluIGNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0b29sYmFyIGN1c3RvbWl6YXRpb24gZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgbmV3IG1lc3NhZ2VzLgoKCSogZGVidWdnZXIvbXNjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gVGFrZSBPTUFQIHJlY29yZHMgaW50byBhY2NvdW50IHRvIGNvcnJlY3Qgc3ltYm9sIGFkZHJlc3Nlcy4KCS0gVW5kZXJzdGFuZCBDb2RlVmlldyBkYXRhIGVtYmVkZGVkIGluIHRoZSBQRSBmaWxlIGl0c2VsZi4KCS0gVW5kZXJzdGFuZCBOQjExIHNpZ25hdHVyZSBDb2RlVmlldyBkYXRhLgoJLSBObyBtb3JlIGJvZ3VzICd0aW1lc3RhbXAgbWlzbWF0Y2gnIGVycm9ycy4KCS0gR2VuZXJhbCBjbGVhbnVwIC8gcmVtb3ZhbCBvZiBkdXBsaWNhdGUgY29kZS4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBJTUFHRV9ERUJVR19NSVNDIGRlZmluaXRpb24uCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTZW5kIHRoZSBsb2NhbCBpcCBhZGRyZXNzIHdpdGggdGhlIFBPUlQgY29tbWFuZCBhbmQgbm90IHRoYXQgb2YgdGhlCglzZXJ2ZXIuCglGaXggaGFuZGxpbmcgb2YgbXVsdGktbGluZSByZXNwb25zZXMuCglSZWFkIGEgcmVzcG9uc2UgYWZ0ZXIgdGhlIFNUT1IgY29tbWFuZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0aGUgUmVkcmF3SXRlbXMgbWVzc2FnZSBmb3IgYSBsaXN0dmlldy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglOZXcgcGF0aCBmb3IgQUZNIGRvY3VtZW50YXRpb24gb24gdGhlIG5ldC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGluY2x1ZGUgcGF0aCBoYW5kbGluZyBpbiBnZXRfcmVhbF9pbmNsdWRlX25hbWUKCU1vZGlmaWVkIGdldF9yZWFsX2luY2x1ZGVfbmFtZSBzbyB0aGF0IGl0IGNhbiBmb2xsb3cgYW4gaW5jbHVkZSBwYXRoCglzdGFydGluZyB3aXRoICQoVE9QU1JDRElSKQoJSW5kZW50IHRoZSBkZWJ1ZyBtZXNzYWdlcyBhIGJpdCBtb3JlIHNvIHRoYXQgd2luZW1ha2VyJ3MgaXMgc3RpbGwKCXJlYWRhYmxlIHdoZW4gdGhleSBhcmUgb24KCVRoZSBBVExfSU5DTFVERV9ST09UIHZhcmlhYmxlIHdhcyBzZXQgd3JvbmcgKGNvbmZpZ3VyZS5pbikKCVRoZSBNRkMgaW5jbHVkZSBwYXRoIG11c3QgY29udGFpbiB0aGUgcGF0aCB0byB0aGUgQVRMIGhlYWRlcnMKCShjb25maWd1cmUuaW4pCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgRHJhd0ZvY3VzUmVjdCB0byBkcmF3IHRoZSBmb2N1cyByZWN0YW5nbGUuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZvcnRpZnkgQVNQSSAvcHJvYyBmaWxlIHBhcnNpbmcgKFNDU0lfZ2V0cHJvY2VudHJ5KCkpIGFnYWluc3QKCSAgQ0QtUk9NIGRyaXZlcyB0aGF0IGFyZSBkb2luZyBtYWQgdGhpbmdzIHdpdGggc3BhY2VzCgktIGFkZCBFUlIoKXMgaW4gY2FzZSBvZiBwYXJzaW5nIHByb2JsZW1zCgoJKiBpbmNsdWRlL2JpdG1hcHMvd2luZV9zbWFsbC54cG06CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgMTZ4MTYgd2luZSBsb2dvLgoKMjAwMC0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYzoKCVJlbW92ZWQgU1VCRElSUyBpbiB3aW5tbSBNYWtlZmlsZS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NldHVwYXBpLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdHVicyBhbmQgc2V0dXBhcGkuaC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDQkVNX1NFVElURU1XIGRvbmUgYnkgZXhhbXBsZSBmcm9tIFNFVElURU1BLCBjb252ZXJ0ZWQgU0VUSVRFTUEgdG8gdXNlCglpdC4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaW5lbWFrZXIncyBtYW4gcGFnZSBpbml0aWFsIHJlbGVhc2UuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbjoKCUJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gYW4gaW5jbHVkZSBmaWxlIGlzIG5vdCBmb3VuZCBieSBtYWtlZGVwLgoJQWRkZWQgc3VwcG9ydCBmb3IgLm1jIGV4dGVuc2lvbi4KCURvIG5vdCB0cnkgdG8gb3BlbiAqLnRhYi5oIGFuZCAqLm1jLnJjIGluY2x1ZGUgZmlsZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglBZGRlZCBtaXNzaW5nIGRlcGVuZGVuY3kgZm9yIDE2LWJpdCByZXNvdXJjZSBmaWxlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwucmMsIGRsbHMva2VybmVsL21lc3NhZ2VzLy5jdnNpZ25vcmU6CglVc2UgLm1jLnJjIGV4dGVuc2lvbiBmb3IgcmMgZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBtZXNzYWdlIGNvbXBpbGVyLgoKCSogbG9hZGVyL2VsZi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglHZXQgRUxGX0xvYWRMaWJyYXJ5RXhBIGJhY2sgaW50byBhIHdvcmtpbmcgc3RhdGUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJRW5hYmxlIHRoZSBmdW5jdGlvbnMgQWRkUHJpbnRlclcsIFdJTlNQT09MX0dldFByaW50ZXJEcml2ZXIsCglBZGRQcmludGVyRHJpdmVyQSwgV0lOU1BPT0xfRW51bVByaW50ZXJEcml2ZXJzIHRvIGRpc3Rpbmd1aXNoIHRoZQoJcmVnaXN0cnkgZW50cnlzIG9mIFdpbjlbNThdIGFuZCBXaW5OVCBwcmludGVyIGRyaXZlcnMuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRha2UgaW50byBhY2NvdW50IHRoZSBzdW5rZW4gYm9yZGVyIGZvciBXaW45OCBsb29rLgoJTGVhdmUgYSAxIHBpeGVsIGdhcCB0byB0aGUgbGVmdCBvZiBtZW51IGJpdG1hcCBpdGVtcyBmb3Igc3ltZXRyeSAoYW5kCgliZWNhdXNlIFdpbjl4IGRvZXMgaXQpLgoJTGVhdmUgYSAxIHBpeGVsIGdhcCBhYm92ZSBtZW51IGJhciBpdGVtcyBmb3Igc3ltZXRyeSAoYW5kIGJlY2F1c2UKCVdpbjl4IGRvZXMgaXQpLgoKMjAwMC0xMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvZGlucHV0LmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVvcmdhbml6ZWQgRElucHV0IERMTAoJLSBhZGRlZCBzdHViYmluZyBmb3IgRElucHV0IDdhCgktICdmaXhlZCcgdGhlIG1vdXNlIHByb2JsZW0gaW4gRmFsbG91dAoKCSogZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmgsIGRsbHMvb2xlMzIvb2xlMzJyZXMucmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBEbkQgY3Vyc29ycyBhcyBvbGUzMiByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL3NweS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zcHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2VlIG5hbWVzIG9mIHRoZSB2aXJ0dWFsIGtleSBjb2Rlcy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgd2luZWxhdW5jaGVyIHNoZWxsIHNjcmlwdCB3aGljaCBtYWtlcyB0aGUgcHJvY2VzcyBvZiBydW5uaW5nCglXaW5lIGEgbGl0dGxlIG5pY2VyIGZvciBhbiBlbmQgdXNlci4gIFRoZSBpbnRlbnQgb2Ygd2luZWxhdW5jaGVyIGlzIHRvCgliZSB1c2VkIGluc2lkZSBvZiBhIGRpc3RyaWJ1dGlvbiBwYWNrYWdlLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglOZXcgc2NyaXB0IGZvciBwb3J0aW5nIFdpbmRvd3Mgc291cmNlIGNvZGUgdG8gV2luZUxpYi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5kcnYuc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJRGVjbGFyZSBkZWJ1ZyBjaGFubmVscyBpbiBhbGwgZGxscyB0aGF0IG5lZWQgdGhlbTsgYWRkZWQgaW1wb3J0cyBvZgoJbnRkbGwgd2hlcmUgbmVjZXNzYXJ5LgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvbWFpbi5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2RlYnVnLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZGVidWdzdHIuYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9maW5kX2RlYnVnX2NoYW5uZWxzLCB0b29scy9tYWtlX2RlYnVnOgoJTmV3IGRlYnVnIGNoYW5uZWwgbWVjaGFuaXNtIGFsbG93aW5nIGRlY2VudHJhbGl6ZWQgY2hhbm5lbAoJZGVjbGFyYXRpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgZGVidWdfY2hhbm5lbHMgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21ldGFmaWxlZHJ2LmgsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU9wdGltaXplZCB7LHB9TW92ZVRveyxFeH17LDE2fS4KCgkqIHdpbmRvd3MvZGNlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgY29tbWVudCBleHBsYWluaW5nIHdoeSB3ZSBoYXZlIGFuIEVSUiByYXRoZXIgdGhhbiBhIFdBUk4uCgoJKiBtc2Rvcy9kb3NtZW0uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgbWlzc2luZyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZvcndhcmQgQ0JFTV9TRVRFWFNUWUxFIHRvIENCRU1fU0VURVhURU5ERURTVFlMRSwgcGFzcyBXTV9TRVRURVhUIGFuZAoJV01fR0VUVEVYVCBkb3duIHRvIGNvbWJvIGJveC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBTeXN0ZW1QYXJhbWV0ZXJzSW5mbzwxNnxBfFc+LgoKCSogY29udHJvbHMvbWVudS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJlc2V0IE1GX1BPUFVQIGZsYWcgaW4gU2V0TWVudSgpLgoKCSogd2luZG93cy9xdWV1ZS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0ZXN0IGZvciBwZW5kaW5nIG1lc3NhZ2UgaW4gUVVFVUVfUmVjZWl2ZU1lc3NhZ2UoKS4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvY29sb3IuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvdGV4dC5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmM6CglBbGxvY2F0ZSBEQyBvYmplY3RzIG9uIHRoZSBwcm9jZXNzIGhlYXAsIGFuZCByZW1vdmVkIFdJTl9EQ19JTkZPCglzdHJ1Y3R1cmUgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgS2VuIENvbGVtYW4pLgoKMjAwMC0xMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCVJlbW92ZWQgbGVmdG92ZXIgZGVidWcgb3V0cHV0LgoKCSogZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggaW5mIGZpbGUgb3Blbi9jbG9zZQoJICAtIGRvIE5PVCByZXR1cm4gaGFuZGxlcyBiYXNlZCBvbiBsaXN0IG9mZnNldAoJICAtIHdlIG1pZ2h0IHdhbnQgdG8gdXNlIEhFQVBfc3RyZHVwQSBpbnN0ZWFkIG9mIGFzc2lnbmluZyBzdHJpbmcgcG9pbnRlcnMuLi4KCS0gaW1wbGVtZW50IChtb3JlIG9yIGxlc3MpIEdlbkZvcm1TdHJXaXRob3V0UGxhY2Vob2xkZXJzCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCB0aGUgYmFja3NsYXNoZXMgd2UgbWVhbiB0byBoYXZlIHNob3cgZnJvbSBncm9mZi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBvZmYgYnkgb25lIGVycm9yIGluIERQQSBoYW5kbGluZywgYWRkZWQgc29tZSB3YXJuaW5ncy4KCgkqIGZpbGVzL2ZpbGUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgZGVidWdnaW5nIEFQSSBpbnN0ZWFkIG9mIG91dHB1dGluZyB0byBzdGRlcnIgZGlyZWN0bHkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgZGl2aXNpb24gYnkgemVyby4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFzcyB1cCBXTV9EUkFXSVRFTSBtZXNzYWdlcyB0byBwYXJlbnQuCgoyMDAwLTExLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBpbmNsdWRlL2JpdG1hcHMvd2luZS54cG0sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lc2hlbGxsaW5rLCB3aW5lLmluaToKCUNyZWF0ZSBHbm9tZS9LREUgZGVza3RvcCBhbmQgbWVudSBlbnRyaWVzIGZyb20gSVNoZWxsTGluawoJaW50ZXJmYWNlLiBCYXNlZCBvbiB0aGUgd29yayBvZiBKYW1lcyBUaG9tc29uIGFuZCBEdXNhbiBMYWNrby4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUcmVldmlldyBpdGVtIHNvcnRpbmcgY291bGQgbWVzcyB1cCB0aGUgdmlzaWJsZU9yZGVyIG9mIHRoZSBpdGVtcy4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIGZvY3VzIHJlY2FsY3VsYXRpb24gb3V0IG9mIHRoZSB3aW5kb3cgZGVzdHJveSByZWN1cnNpb24KCXNvIHdlIGRvIG5vdCBzZW5kIFdNX1NFVEZPQ1VTIHRvIGFscmVhZHkgZGVzdHJveWVkIHdpbmRvd3MuCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBpbnZlcnQgIm1hZ2ljIiBiaXRtYXAgbWVudSBpdGVtcy4KCgkqIHRvb2xzL2ZpbmRfZGVidWdfY2hhbm5lbHM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugc3VyZSB0byBjYXJlZnVsbHkgcXVvdGUgZmlsZSBuYW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTd2FwIENhbGNUb29sYmFyIGFuZCBwYWludCByZWN0YW5nbGUgY29tcHV0YXRpb24gdG8gdGhlIGNvcnJlY3Qgb3JkZXIuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglQYXVzZSBjb21tYW5kIGludGVycHJldGVyIHdoaWxlIGV4ZWN1dGluZyBhIGNvbnNvbGUtbW9kZSBhcHAuCgoyMDAwLTExLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglGaXhlZCBTZWFyY2hQYXRoIHRvIGhhbmRsZSBhICc7Jy1zZXBhcmF0ZWQgcGF0aCBhcyBmaXJzdCBhcmd1bWVudC4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbigpIHRvIGZpbGwgb3V0IGEgdmFsaWQgVE9LRU5fR1JPVVAgd2l0aAoJYWRtaW4gcHJpdmlsZWdlcy4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcmF3SWNvbkV4OiB3aGVuIGZsYWdzPTAgdXNlIGZsYWdzPURJX05PUk1BTCBpbnN0ZWFkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUV4cG9ydCBTSEdldFNldHRpbmdzIGJ5IG5hbWUuIE5ldyBzdHViIGZvciBzaGVsbC42OC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGF2ZSBJbnRlcm5ldCBFeHBsb3JlciAzIHNob3cgaXRzIHRvb2xiYXJzIGJ5IHBhc3NpbmcgUkJfR0VUQkFORElORk8KCXRvIFJCX0dFVEJBTkRJTkZPQS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdESVNlbGVjdFBhbGV0dGUxNiBpbnN0ZWFkIG9mIFNlbGVjdFBhbGV0dGUgYW5kCglHRElSZWFsaXplUGFsZXR0ZTE2IGluc3RlYWQgb2YgUmVhbGl6ZVBhbGV0dGUgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZgoJcG9zc2libGUgZGVhZGxvY2tzLgoKCSogcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL2F0b20uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5oLCB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9jcHUuYywgbWlzYy9lcnJvci5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL3ZnYS5jLCBtc2Rvcy92eGQuYywgb2JqZWN0cy9kaWIuYywgY29udHJvbHMvZWRpdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVZhcmlvdXMgd2FybmluZyBmaXhlcy4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgaW5jbHVkZS9wYXRoLmg6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJTWFrZSB0aGUgZnVuY3Rpb25zIFBpZSwgQ2hvcmQsIFJvdW5kUmVjdCwgQW5nbGVBcmMsIFBvbHlEcmF3IGFuZAoJRWxsaXBzZSB3b3JrIHdpdGggYW4gb3BlbiBwYXRoLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIGJpdG1hcCBtZW51IGl0ZW1zIGxvb2sgbGlrZSBpbiB3aW5kb3dzIHdoZW4gc2VsZWN0ZWQsCglpLmUuIGludmVydGVkIGFuZCBoaWxpdGVkIChpbiBXaW45OCBsb29rKS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGVjayBmb3IgU0JfQ1RMIGJlZm9yZSBkaXNwbGF5aW5nIGEgY2FyZXQuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglEbyBub3QgdHJ1bmNhdGUgaGlnaCB3b3JkIG9mIG1lc3NhZ2UgaWQuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciBoYW5kbGluZyBvZiBjdXN0b20gdGVtcGxhdGVzIGFuZCBob29rcy4KCUJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGxzIG9mIFRPT0xCQVJfQ2FsY1Rvb2xiYXIoKSAod2hpY2ggd291bGQgYmUKCXJlY2FsY3VsYXRlZCBkdWUgdG8gSW52YWxpZGF0ZVJlY3QoKS0+V01fUEFJTlQgYW55d2F5KS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUdhYnJpZWwgR2FyY2lhIDxHYXJjaWFHQG9yaWdlbmVzLmNvbS5hcj4KCUFkZGVkIExhdGluIEFtZXJpY2FuIGxheW91dC4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJU3R1YnMgZm9yIFVybE1rU2V0U2Vzc2lvbk9wdGlvbiwgU0hMV0FQSV8xMzIsIFNIR2V0SW52ZXJzZUNNQVAuCglSZWRpcmVjdGVkIGZvcndhcmQgb2Ygc2hsd2FwaS41NCB0byBnZGkzMi5DcmVhdGVJQ1cuCgoyMDAwLTEwLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIFBTX0FMVEVSTkFURSByYXRoZXIgdGhhbiBQU19ET1QuCglVc2UgUmVjdGFuZ2xlIHRvIGRyYXcgZm9jdXMgcmVjdGFuZ2xlcy4KCgkqIG9iamVjdHMvcGVuLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsb3cgcGVucyB3aXRoIHN0eWxlcyBncmVhdGVyIHRoYW4gUFNfSU5TSURFRlJBTUUgdG8gYmUgY3JlYXRlZCB3aXRoCglDcmVhdGVQZW5JbmRpcmVjdCBhbmQgRXh0Q3JlYXRlUGVuLgoKCSogZ3JhcGhpY3MveDExZHJ2L3Blbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2Ugc2l6ZW9mIGZvciBtYWludGFpbmFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSWdub3JlIFJCQlNfQlJFQUsgc3R5bGUgb24gZmlyc3QgYmFuZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIGEgZmV3IGRldmljZSBjYXBzIHZhbHVlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglfbnRfcGFyc2VfbmsoKSBzaG91bGQgbm90IGNsb3NlIGtleXMgdGhhdCBpdCBkb2VzIG5vdCBvcGVuLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2V0IHRoZSB0aGlja25lc3Mgb2Ygc3RvY2sgcGVucyB0byAwIHNvIHRoYXQgdGhleSBhcmUgbm90IHNjYWxlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBjYW5jZWxzIGVkaXRpbmcgb2YgYSBsaXN0dmlldyBsYWJlbCBpZiB0aGUgbGlzdHZpZXcgaXMKCXNjcm9sbGVkLgoKCSogd2luZG93cy9zeXNjb2xvci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0aGUgdmFsdWUgb2Ygc29tZSBzeXN0ZW0gY29sb3JzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgYXZvaWRpbmcgc3VidHJhY3Rpb24gZnJvbSB1bnNpZ25lZCB6ZXJvLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX1NrLnJjLCBkbGxzL3dpbm1tL3dpbm1tX1NrLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsIHByb2dyYW1zL2Nsb2NrL1NrLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vU2sucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9Tay5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NrLnJjOgoJUGV0ZXIgSXZhbnlpIDxpdmFueWlAaW50ZXJuZXQuc2s+CglBZGRlZC91cGdyYWRlZCBTbG92YWsgbWVzc2FnZXMsIGFuZCBTbG92YWsgYW5kIEN6ZWNoIGtleWJvYXJkIGxheW91dC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIaWRlIHRoZSBjYXJldCBvbmx5IG9uIHRoZSBmaXJzdCBXTV9LRVlET1dOLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBtb3VzZSBVbkFjcXVpcmUgdG8gTk9UIHVuYWNxdWlyZSBpdCBvbiBtdWx0aXBsZSB1bmFjcXVpcmVzLgoJSW1wbGVtZW50ZWQgRElQUk9QX0FYSVNNT0RFIGZvciBTeXNNb3VzZUFJbXBsX1NldFByb3BlcnR5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglVbmRlciBzb21lIGNvbmRpdGlvbnMgaXRzIG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IHNob3cgdGhlCglzY3JvbGxiYXJzLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRGlzcGxheSBhbiBFUlIgb24gZXJyb3JzIHdoaWxlIGluaXRpYWxpemluZyBVU0VSLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVJldHVybiBUSU1FX1pPTkVfSURfU1RBTkRBUkQgaW4gR2V0VGltZVpvbmVJbmZvcm1hdGlvbigpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBpdGVtSUQgPSAtMSAoc3BlY2lhbCBmb2N1cyByZWN0IGRyYXcpLgoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXggaW5zdWZmaWNpZW50IHJlY3Qgd2lkdGggdmFsdWUgaW4gcmVzb3VyY2UgZmlsZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglOZWVkIHRvIGdldCBhbnkgb3V0c3RhbmRpbmcgaW5wdXQgcHJpb3IgdG8gcmV0dXJuaW5nIG51bWJlci4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTb21lIGJ1Z2ZpeGVzLCBhbm90aGVyIGZ1bmN0aW9uIGZvciBwYWNrYWdpbmcsIGFuZCBzb21lIHRleHQKCXJlZm9ybWF0dGluZyBmcm9tIEVyaWMgTWFyeW5pYWsuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglSZW1vdmVkIG9ic29sZXRlIFRPT0xTVUJESVJTIGRlcGVuZGVuY3kuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIG1pc2NlbXUvd2luZS5zcGVjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYzoKCUFkZGVkIGltcG9ydCBvZiBudGRsbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHVuaWNvZGUvTWFrZWZpbGUuaW4sIC5jdnNpZ25vcmUsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbGlicmFyeS8uY3ZzaWdub3JlLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L3BvcnQuYywgbGlicmFyeS93aW5lc3R1Yi5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3BvcnQuYzoKCUJ1aWxkIG50ZGxsIGFzIGEgcmVhbCBkbGwsIGluY2x1ZGluZyBldmVyeXRoaW5nIHRoYXQgd2FzIHByZXZpb3VzbHkgaW4KCWxpYndpbmUuc28uIENyZWF0ZWQgYSBuZXcgKG1vc3RseSBlbXB0eSkgbGlid2luZS5zbyBpbiBsaWJyYXJ5LyBzdWJkaXIuCgoyMDAwLTEwLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglERUJVR19Qcm9jZXNzREJHRmlsZTogdXNlIGEgc3RhY2sgdmFyaWFibGUgZm9yIHRoZSBleHRyYV9pbmZvLgoKCSogcmVsYXkzMi9zbm9vcC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaCwgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvdGFzay5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oLCBzZXJ2ZXIvaGFuZGxlLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCU1vdmUgaW5saW5lIGFuZCBzdGF0aWMgdG8gdGhlIGJlZ2lubmluZyBvZiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNPTUJPRVhfRHJhd0l0ZW06IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBTZW5kTWVzc2FnZUEoLi4uLENCX0dFVElURU1EQVRBLC4uLikKCgkqIHRvb2xzL3dpbmVjb25mOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGEgJy1pbmlmaWxlJyBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIHdpbmUuaW5pIGZpbGUKCXVzZWQgaW4gdGhlIGJ1aWxkaW5nIG9mIHRoZSBuZXcgd2luZS5pbmkgZmlsZS4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGVuYWJsZSBsb2FkaW5nIG9mIHBkYiBmaWxlcyBuYW1lZCBpbiBOQjEwIHJlY29yZHMgb2YgYSBkYmcgZmlsZQoJLSBkaXNhYmxlIHRpbWVzdGFtcCBjaGVjayBmb3IgcGRiIGZpbGVzCgoJKiB3aW4zMi9kZXZpY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUXVpZXRlbiBWeERDYWxsX1ZNTSBvdXRwdXQuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJd2luZWluc3RhbGwgaW1wcm92ZW1lbnRzLCBtb3N0bHkgZm9yIHVzYWdlIGluIHBhY2thZ2UgcG9zdGluc3RhbGwKCXNjcmlwdHMuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglQYXRjaCBmbGF0IGNzIG9mIDE2LWJpdCBlbnRyeSBwb2ludHMgaWYgY3VycmVudCAlY3MgaXMgZGlmZmVyZW50IGZyb20KCWNvbXBpbGVkIHZhbHVlLCBhbmQgcmV0cmlldmUgZmxhdCBkcyBmcm9tIGEgZ2xvYmFsIHZhcmlhYmxlLiBUaGlzCglzaG91bGQgYXZvaWQgcHJvYmxlbXMgd2l0aCB3aW40bGluIGtlcm5lbHMuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvbnRkZGsuaCwgbWVtb3J5L3JlZ2lzdHJ5LmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJQWRkZWQgYmFzaWMgd29ya2luZyBzdHVicyBvZiBuZXcgV2luZG93cyAyMDAwIEFQSSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2xvY2FsLmgsIG1lbW9yeS9sb2NhbC5jOgoJUmVtb3ZlZCB1bnVzZWQgTE9DQUxfTG9ja1NlZ3B0ci4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVVzZSBHZXRTdG9ja09iamVjdCgpIGluc3RlYWQgb2YgdGhlIG1hZ2ljIFNUT0NLXyogaGFuZGxlcy4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJREVCVUdfUHJvY2Vzc0RCR0ZpbGU6IGFsbG9jYXRlIE1TQ19EQkdfSU5GTyBiZWZvcmUgd3JpdGluZyB0byBtZW1iZXJzCglvZiB0aGF0IHN0cnVjdHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJSW1wbGVtZW50IFNIR0ZJX0VYRVRZUEUgZnVuY3Rpb24gb2YgU0hHZXRGaWxlSW5mby4KCgkqIHdpbmRvd3Mvd2luaGVscC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBvcnQgZXJyb3JzIG9uIFdpbkhlbHAoKSBmYWlsdXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gaW1wcm92ZWQgdHJhY2UgaW5mb3JtYXRpb24KCS0gaW1wbGVtZW50ZWQgQ0JfU0VUSVRFTUhFSUdIVCwgV01fV0lORE9XUE9TQ0hBTkdJTkcsCgkgIFdNX01FQVNVUkVJVEVNLCBXTV9EUkFXSVRFTQoJLSBjaGFuZ2VkIENCRU1fSU5TRVJUSVRFTUEsIENCRU1fU0VUSU1BR0VMSVNULAoJICBXTV9DUkVBVEUsIFdNX0RFU1RST1kKCS0gYWJvdmUgY2hhbmdlcyBjb3JyZWN0IHdpbmRvdyByZWN0YW5nbGUsIGRyYXdzIGl0ZW1zLCBhbmQgY3JlYXRlcwoJICBjb250cm9sIGNvcnJlY3RseS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGNvcnJlY3QgcHJvY2Vzc2luZyBvZiBSQkJTX0JSRUFLIHN0eWxlLgoJLSBoYW5kbGUgY2FzZXMgd2hlcmUgY3lDaGlsZCB3YXMgc2V0IHRvIC0xIGJ5IGFwcGwuIC0gdW5kb2N1bWVudGVkLgoJLSByZW1vdmUgc3BlY2lhbCBjb2RlIGZvciBDb21ib2JveGV4IHByb2JsZW0gKG5vdyBzb2x2ZWQpLgoJLSBmaXggc29tZSBwYWludGluZyBwcm9ibGVtcwoKMjAwMC0xMC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBkd1RvdGFsVmlydHVhbC4KCVJldHVybiBhIG1vcmUgcGxhdXNpYmxlIHZhbHVlIGZvciBkd0F2YWlsVmlydHVhbC4KCgkqIG1pc2MvY3B1LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV0dXJuIGEgbW9yZSBwbGF1c2libGUgdmFsdWUgZm9yIE1pbmltdW1BcHBsaWNhdGlvbkFkZHJlc3MuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglGZWRlcmljbyBTY2h3aW5kdCA8ZmdzY2hAY29yZS1zZGkuY29tPgoJRml4ZXMgZm9yIE9wZW5CU0QuCgoJKiBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZUl0ZW1Nb25pa2VyIG1heSBnZXQgTlVMTCBhcyBzekRlbGltLCBzb21lIGNsZWFudXBzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgT2xlTG9hZEZyb21TdHJlYW06IERlcmVmZXJlbmNlIHBwdk9iaiBhbmQgZ2V0IElQZXJzaXN0U3RyZWFtCglpbnN0ZWFkIG9mIGFjY2Vzc2luZyBJVW5rbm93bi4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yIEh0dHBTZW5kUmVxdWVzdEV4QS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBzZXQgdGhlIGl0ZW0gaGVpZ2h0IG5vdCBvbmx5IGZvciB0aGUgbGlzdGJveCwgYnV0IGFsc28gZm9yIHRoZSB0ZXh0IGZpZWxkCgktIGNlbnRlciB0ZXh0IHZlcnRpY2FsbHkKCS0gYmVhdXRpZnkgY29tbWVudHMKCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCU1hdHRoZXcgQ2xhcmtlIDxNYXR0aGV3X0NsYXJrZUBtaW5kbGluay5iYy5jYT4KCURvbid0IGFzc3VtZSB3ZSBhcmUgYnVpbGRpbmcgaW4gdGhlIHNvdXJjZSB0cmVlLCBidXQgYWxsb3cgbWFrZSB0bwoJbG9jYXRlIHJlc291cmNlcy9kaXNwbGF5LnJjIGFuZCByZXNvdXJjZXMvbW91c2UucmMgdmlhIFZQQVRILgoKMjAwMC0xMC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHdpbjMyL2V4Y2VwdC5jOgoJUmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gYSBzdHViIGVudHJ5IHBvaW50IGlzIGNhbGxlZC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3N0cnVjdDMyLmg6CglSZW1vdmVkIHVudXNlZCBTVFJVQ1QzMl9OQ0NBTENTSVpFIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBc2sgYXBwbGljYXRpb24gdG8gcmVpbml0aWFsaXplIGl0cyBtZW51IGJlZm9yZSBwcm9jZXNzaW5nIGFuCglhY2NlbGVyYXRvciBrZXkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CgkiU3RhcnRNZW51IiAtLT4gIlN0YXJ0IE1lbnUiLCAiU3RhcnR1cCIgLS0+ICJTdGFydFVwIi4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUZpeGVkIHR5cG8gZHVlIHRvIG1lcmdlIGVycm9yLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIHRoZSBsb2FkIHByb2Nlc3Mgc28gdGhhdCBhbGwgdHlwZWxpYnMgKGFuZCBub3QganVzdCB0aGUgZmlyc3QKCW9uZSwgYXMgaXQgdXNlZCB0bykgc3RvcmVkIGluIGEgRExMIGNhbiBiZSBsb2FkZWQuCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJTWFyayBEdWZvdXIgPG0uZHVmb3VyQHN0dWRlbnQudHVkZWxmdC5ubD4KCUltcGxlbWVudGVkIFBvbHlEcmF3KCkgYW5kIEFuZ2xlQXJjKCkuCgoyMDAwLTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAxMDI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgd2luMzIvZXhjZXB0LmM6CglSYWlzZSBhbiBleGNlcHRpb24gd2hlbiBhIHN0dWIgZW50cnkgcG9pbnQgaXMgY2FsbGVkLgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvc3RydWN0MzIuaDoKCVJlbW92ZWQgdW51c2VkIFNUUlVDVDMyX05DQ0FMQ1NJWkUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9pbnB1dC5jLCBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFzayBhcHBsaWNhdGlvbiB0byByZWluaXRpYWxpemUgaXRzIG1lbnUgYmVmb3JlIHByb2Nlc3NpbmcgYW4KCWFjY2VsZXJhdG9yIGtleS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCSJTdGFydE1lbnUiIC0tPiAiU3RhcnQgTWVudSIsICJTdGFydHVwIiAtLT4gIlN0YXJ0VXAiLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRml4ZWQgdHlwbyBkdWUgdG8gbWVyZ2UgZXJyb3IuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgdGhlIGxvYWQgcHJvY2VzcyBzbyB0aGF0IGFsbCB0eXBlbGlicyAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdAoJb25lLCBhcyBpdCB1c2VkIHRvKSBzdG9yZWQgaW4gYSBETEwgY2FuIGJlIGxvYWRlZC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJSW1wbGVtZW50ZWQgUG9seURyYXcoKSBhbmQgQW5nbGVBcmMoKS4KCjIwMDAtMTAtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBhbiBhbm90aGVyIHNwZWNpYWwgY2FzZSBoYW5kbGluZyBmb3IgU2hpZnQrW051bVBhZF1ERUwuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJS3Jpc3RvZmZlciBHbGVkaXRzY2ggPHRvZmZlckBwaW5nLnVpby5ubz4KCUFkZGVkIExERkxBR1MgdG8gbGlua2luZyBvZiB3aW5lLXJlbGF0ZWQgYmluYXJpZXMuCgoJKiBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlcGxhY2VkIFRvQXNjaWkgYnkgVG9Vbmljb2RlIGluIHRoZSBVc2VyIGRyaXZlciBpbnRlcmZhY2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJV2lsbGlhbSBXYWdob3JuIDx3d2FnaG9ybkBsaXRhbnkuZGVtb24uY28udWs+Cgl4Zjg2dm1vZGVfc2V0ZGlzcGxheW1vZGUoKSB3YXNuJ3QgcHJvcGVybHkgc2F2aW5nIHRoZSAncHJpdmF0ZScgZmllbGQKCW9mIHRoZSBYRjg2VmlkTW9kZU1vZGVMaW5lIHN0cnVjdHVyZS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IG9mIGJsaW5raW5nIHRodW1iIGFzIGZvdW5kIGluIFdpbmRvd3Mgc2Nyb2xsYmFyLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIHR5cGVsaWIgbG9hZGVyLiBUeXBlbGliIGNvbnRlbnRzIGNhbiBiZSBzdG9yZWQgYXMgbXVsdGlieXRlCglzdHJpbmdzLiBIb3dldmVyLCB0aGV5IGFyZSBhbHdheXMgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGFzIEJTVFIsCgllLmcuIFVOSUNPREUgc3RyaW5ncy4gQWxsIHN0cmluZ3MgYXJlIG5vdyBzdG9yZWQgYXMgQlNUUiBpbnN0ZWFkIG9mCglBU0NJSSBzdHJpbmdzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRnJlZSB0aGUgV2luMTYgZHVtbXkgbW9kdWxlIGFuZCB3bS0+ZGVwcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJTWFyayBEdWZvdXIgPG0uZHVmb3VyQHN0dWRlbnQudHVkZWxmdC5ubD4KCVgxMURSVl9EcmF3QXJjOiBzd2FwIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyB3aGVuIGRyYXdpbmcgaW4KCWNsb2Nrd2lzZSBkaXJlY3Rpb24uCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJQXZpYWQgUGluZWxlcyA8cGF2aWFkQG5ldHZpc2lvbi5uZXQuaWw+CglBdm9pZCBpbmZpbml0ZSBsb29wIGluIENyZWF0ZVJvdW5kUmVjdFJnbigpLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvcmVzb3VyY2VzL2Rpc3BsYXkucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYzE2LCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjMTYsIGlmMTYzMi9idWlsdGluLmMsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyAucmVzIGZpbGVzIGZvciAxNi1iaXQgcmVzb3VyY2VzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgc3RydWN0dXJlIGRlZmluaXRpb24uCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzoKCTE2LWJpdCByZXNvdXJjZSBzaXplIG11c3QgYmUgc2NhbGVkIGJ5IGFsaWdubWVudC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFRDU19WRVJUSUNBTCBzdHlsZS4gIEZpeCB0YWIgYm9yZGVycyB0byBoYXZlIHNoYWRpbmcgdGhhdAoJbWF0Y2hlcyBXaW5kb3dzLiAgQ2VudGVyIGltYWdlIGFuZCB0ZXh0IGluIHRhYnMuICBTaXplIHRhYnMgdG8KCWNvbXBsZXRlbHkgZmlsbCBlYWNoIHJvdyB3aXRoIG11bHRpbGluZSBzdHlsZS4gIEZpeCBwb3NpdGlvbmluZyBvZgoJdGFicyBmb3IgVENTX0JPVFRPTSBzdHlsZS4gIEZpeCB2YXJpb3VzIGRyYXdpbmcgaXNzdWVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CgktIFdoZW4gaW5zZXJ0aW5nIGFuIGl0ZW0sIGRvIG5vdCBpbnZhbGlkYXRlIHRoZSBhcmVhIGFib3ZlIHRoZSBuZXcKCSAgaXRlbS4KCS0gVGhlIGRlYnVnIGZ1bmN0aW9uIHRoYXQgdmVyaWZpZXMgdGhlIHRyZWUgYWZ0ZXIgZWFjaCBpbnNlcnRpb24KCSAgc2hvdWxkIGJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZWltcGxlbWVudCBwYXRjaCBieSBNYXJjdXMgTWVpc3NuZXIgKCc5OCkgdG8gImZpeCIgcHJvYmxlbXMgd2l0aAoJRFNDQVBTX0VNVUxEUklWRVIgZmxhZyBmb3IgZ2FtZXMgbGlrZSBRdWFrZSAyIGFuZCBVbnJlYWwgVG91cm5hbWVudC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglUcmFuc2Zvcm0gZGV2aWNlIG9wZW4gZXJyb3IgVFJBQ0UoKXMgaW50byBXQVJOKCk7IGJldHRlciBlcnJvciBtc2dzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbiBTV1BfRG9OQ0NhbGNTaXplKCkgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBjbGllbnQgYXJlYSBoYXMKCW1vdmVkLCB1c2UgdGhlIGNsaWVudCBjb29yZGluYXRlcyBhcyB0aGV5IGFyZTogbm90IHJlbGF0aXZlIHRvIGl0cwoJd2luZG93IGNvb3JkaW5hdGVzLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU1BJX0dFVFdJTkRPV1NFWFRFTlNJT04uCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgYSBXSU5FTE9BREVSIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoIGFsbG93cyB0aGUKCXNwZWNpZmljYXRpb24gb2YgYSBkaWZmZXJlbnQgYmluYXJ5IGxvYWRlci4KCjIwMDAtMTAtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVJlbW92ZWQgR2V0UmVzRGlyRW50cnlBL1cuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJSW1wbGVtZW50IEludGVybmFsRXh0cmFjdEljb24gYnkgY2FsbGluZyBQcml2YXRlRXh0cmFjdEljb25zIGluc3RlYWQKCW9mIGR1cGxpY2F0aW5nIGFsbCB0aGUgY29kZS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQWRkZWQgY29kZXBhZ2UgdHJhbnNsYXRpb24gYmFzZWQgb24gdGhlIGxhbmd1YWdlIGlkIChiYXNlZCBvbiBhIHBhdGNoCglieSBKdW5pY2hpIEt1Y2hpbmlzaGkgPGprdWNoaUBtYWhvcm9iYS5uZS5qcD4pLgoKCSogY29udHJvbHMvbWVudS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnRlZCBtZW51IHN0cmluZyBoYW5kbGluZyB0byBVbmljb2RlLgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGZvcndhcmQgZm9yIFdTQVJlc2V0RXZlbnQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29udmVydCB0aGUgdmFsdWUgb2YgbGV2ZWwgd2hlbiBzZXRzb2Nrb3B0IGlzIGNhbGxlZCB3aXRoCglXU19TT19ET05UTElOR0VSLgoKCSogbWlzYy9vcHRpb25zLmMsIHNlcnZlci9yZXF1ZXN0LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvdGFzay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglFeHBsaWNpdGx5IGluaXRpYWxpemUgc3RydWN0dXJlcy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzLgoJLSBGaXhlZCBzdHJhbmdlIGNvZGUgcHJvYmFibHkgY2F1c2VkIGJ5IGEgbWVyZ2UgY29uZmxpY3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gQWxsIGF1ZGlvIGRldmljZSBoYW5kbGVzIGFyZSBpbml0aWFsaXplZCB0byAtMSBhbmQgc2V0IHRvIC0xIHdoZW4gY2xvc2VkLgoJLSBXSU5FX1dNX0hFQURFUiBldmVudCBzaG91bGQgKk5PVCogbWFrZSB0aGUgcmVjb3JkaW5nIHRocmVhZCBzdGFydC4gVGhlCgkgIHRocmVhZCBzaG91bGQgb25seSBzdGFydCB0aHJvdWdoIHdhdmVJblN0YXJ0LiBUaGUgYXBwbGljYXRpb24gY2FsbGluZwoJICB3YXZlSW5BZGRCdWZmZXIgbWlnaHQgbm90IGJlIGluIGEgc3RhdGUgdG8gcHJvdmlkZSBhbm90aGVyIGJ1ZmZlciBpbgoJICBhIHBlcmlvZCBvZiB0aW1lIHNob3J0IGVub3VnaCB0byBhdm9pZCBidWZmZXIgdW5kZXJydW4gaW4gd2lkUmVjb3JkZXIKCSAgdGhyZWFkLgoJLSB3aWRSZWNvcmRlciAtIGltcHJvdmVkIHJvYnVzdG5lc3Mgb2Ygd2lkUmVjb3JkZXIgdG8gYXZvaWQgc29tZSBkYXRhCgkgIGxvc3MgdGhhdCBvY2N1cmVkIHdoZW4gbm90IHJlYWRpbmcgb25lIGZ1bGwgZnJhZ21lbnQgZnJvbSB0aGUgT1NTCgkgIGF1ZGlvIGRyaXZlci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2Nkcm9tLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzIGZvciBub24tTGludXguCgoJKiB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglGaXhlZCBPRkZTRVRPRiBtYWNybyBkZWZpbml0aW9uIGZvciBnY2MgMi45Ni4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3R1YnMgZm9yIENyeXB0R2VuUmFuZG9tKCksIENyeXB0UmVsZWFzZUNvbnRleHQoKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBibG9jayBDQk5fRURJVENIQU5HRSBmb3IgV01fUEFTVEUgb3IgV01fQ1VUIHdpdGggdGhlCglOT0VESVROT1RJRlkgZmxhZywgYXMgdGhlc2UgbXNncyBjYW4gY29tZSBkaXJlY3RseSBmcm9tIHRoZSBhcHAgdG8gdGhlCgljb21ibyB3bmRwcm9jLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIEVudW1FbmhNZXRhRmlsZSB3b3JrLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUnBjU3RyaW5nRnJlZUEgYW5kIFV1aWRUb1N0cmluZ0EuCgoyMDAwLTEwLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWMsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9tYWtlZGVwLmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvaGVsbG8zLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsIE1ha2UucnVsZXMuaW4sIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglCdWlsZCBXaW4zMiByZXNvdXJjZXMgYXMgLnJlcyBmaWxlcyBhbmQgZHVtcCB0aGVtIGludG8gdGhlIC5zcGVjLmMgZmlsZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIFdpbjMyIC5yZXMgZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy91c2VyL2Rpc3AucmMsIGRsbHMvdXNlci9tb3VzZXJjLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL1RPRE8sIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYzE2LCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjMTYsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9DYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQ3MucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EZS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW4ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VvLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fcy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRmkucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9IdS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSXQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Lby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTmwucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05vLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QbC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUHQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1J1LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tay5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU3YucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1dhLnJjOgoJTW92ZWQgYWxsIFVTRVIgcmVzb3VyY2VzIHRvIG5ldyBkbGxzL3VzZXIvcmVzb3VyY2VzIGRpcmVjdG9yeS4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW52ZXIuaCwgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvdmVyc2lvbi92ZXIuc3BlYywgZGxscy92ZXJzaW9uL3ZlcjE2LmM6CglEdXBsaWNhdGUgcmVzb3VyY2UgZGlyZWN0b3J5IHNlYXJjaGluZyByb3V0aW5lcyBpbnN0ZWFkIG9mIGNhbGxpbmcKCXBlX3Jlc291cmNlLmMgaW50ZXJuYWwgZnVuY3Rpb25zLgoJTWFkZSBHZXRGaWxlUmVzb3VyY2UxNiBhbmQgR2V0RmlsZVJlc291cmNlU2l6ZTE2IGNhbGxhYmxlIGRpcmVjdGx5CglpbnN0ZWFkIG9mIGRlZmluaW5nIGV4dHJhIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6CglEdXBsaWNhdGUgcmVzb3VyY2UgZGlyZWN0b3J5IHNlYXJjaGluZyByb3V0aW5lcyBpbnN0ZWFkIG9mIGNhbGxpbmcKCXBlX3Jlc291cmNlLmMgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglGaXhlZCBkdXBsaWNhdGlvbiBvZiB0eXBlbmFtZSBpbiAxNi1iaXQgYXNzZW1ibHkgb3V0cHV0LgoKCSogbWVtb3J5L2hlYXAuYzoKCUZpeGVkIG11bHRpYnl0ZSBoYW5kbGluZyBpbiBIRUFQX3N0cmR1cEF0b1cuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgaW5jbHVkZS9jZHJvbS5oLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBvcGVuL2Nsb3NlIHRoZSBDRC1ST00gZGV2aWNlIGZvciBldmVyeSBXaW5kb3dzIEFQSSBDRC1ST00KCWFjY2Vzcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG8gbm90IHNlbmQgRU5fVVBEQVRFIHRvIG11bHRpLWxpbmUgZWRpdCBjb250cm9scy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdGhlIHRleHQgY29sb3Igb2YgaGlnbGlnaHRlZCBtZW51IGJhciBpdGVtIGZvciB0aGUgV2luOTggbG9vay4KCUNsaWNraW5nIG9uIGEgc2VwYXJhdG9yIHNob3VsZCBub3QgY2xvc2UgdGhlIG1lbnUuCglEbyBub3QgcmlnaHQgYWxpZ24gJ2JpdG1hcCcgaXRlbXMgYW5kIHRoZSBoZWxwIG1lbnUgZm9yIHRoZSBXaW45eCBsb29rCglhbmQgZmVlbHMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgaGF2ZSBhIGRyaXZlIHBvaW50aW5nIHRvIC8sIHdlIG11c3Qgbm90IHJlbW92ZSB0aGUgZmluYWwgLyBvciB3ZQoJZ2V0IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBkb3VibGVkLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBiYXNpYyBJRGlyZWN0RHJhdzcgaW50ZXJmYWNlIHN1cHBvcnQsIGZpeGVkIGFyZ3VtZW50IGNvdW50CglvZiBJRGlyZWN0RHJhd3s0LDd9X1NldERpc3BsYXlNb2RlIGRlZmluZXMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJLSBDYWxjdWxhdGUgY2hhbmdlcyBpbiB0aGUgY2xpZW50IGFyZWEgcmVsYXRpdmUgdG8gdGhlIHdpbmRvdwoJICBpbnN0ZWFkIG9mIGl0cyBwYXJlbnQgd2hlbiB1c2luZyBTV1BfRVhfUEFJTlRTRUxGLgoJLSBXaXRoIFNXUF9FWF9QQUlOVFNFTEYsIGNvcHkgb25seSBpZiBjbGllbnQgYXJlYSBjaGFuZ2VkLCBzaW5jZSBhCgkgIHdpbmRvdyBjYW4ndCBtb3ZlIHJlbGF0aXZlIHRvIGl0c2VsZi4KCS0gSW4gU1dQX0RvTkNDYWxjU2l6ZSwgd2hlbiBkZXRlcm1pbmluZyBpZiB0aGUgY2xpZW50IGFyZWEKCSAgY2hhbmdlZCwgdXNlIHZhbHVlcyByZWxhdGl2ZSB0byB0aGUgd2luZG93IGl0c2VsZiwgbm90IGl0cyBwYXJlbnQuCgoJKiBvYmplY3RzL3JlZ2lvbi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHBhaW50aW5nIHByb2JsZW1zIGluIG5vbi1NTV9URVhUIG1vZGVzLgoKMjAwMC0xMC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jLCBtc2Rvcy9kb3Njb25mLmMsIHNlcnZlci9yZWdpc3RyeS5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCVJlZHVjZSB0aGUgbnVtYmVyIG9mIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgaW5pdGlhbGl6ZXJzLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHb3QgcmlkIG9mIG1pc2xlYWRpbmcgIk5vIFRscyBTcGFjZSIgZXJyb3IgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXNlIGludGVybWVkaWF0ZSB0eXBlZGVmLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvb2xlMmRpc3AuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdHlwZWxpYi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2FjbTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zcHkuYywgaW5jbHVkZS9zcHkuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCB3UGFyYW0gYW5kIGxQYXJhbSBhcyBwYXJhbWV0ZXJzIGluIFNQWV9FeGl0TWVzc2FnZQoJQWRkZWQgZHVtcCBmb3IgdGhlIFNUWUxFQ0hBTkdbSU5HfEVEXSBtZXNzYWdlcy4KCUR1bXAgc3RydWN0dXJlcyBvbiBleGl0IG9ubHkgaWYgbWVzc2FnZSBhbGxvd3MgY2hhbmdlcy4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIFByaW50IENTIHJlZyBhdCBjcmFzaCBNZXNzYWdlQm94IChuZWVkZWQgZm9yIFdpbjE2IHByb2dyYW1zKS4KCS0gQWRkICJoaW50IiBmb3IgZGVidWdnZXIgc2V0dXAuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhZHZhcGkzMiB0byBpbXBvcnRlZCBETExzIGxpc3QuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtb3JlIGNvbnZlcnNpb24gcm91dGluZXMgKHJhdGUgY29udmVyc2lvbiBpcyBpbXBsZW1lbnRlZCkuCglDbGVhbmVkIHVwIHRoZSBjb2RlLgoKCSogZGVidWdnZXIvbXNjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBEQiBzeW1ib2wgaGVhZGVyIGZvcm1hdCBkZXBlbmRzIG9ubHkgb24gdmVyc2lvbiBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3Qgc2V0IHRoZSBpU3ViSXRlbSBwYXJ0IG9mIHRoZSBzdHJ1Y3QgZm9yIExWTV9ISVRURVNULAoJYXBwbGljYXRpb25zIG9ubHkgbmVlZCB0byBwYXNzIG1lbW9yeSBzcGFjZSB1cCB0byBpSXRlbS4KCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNZW50aW9uIHRoYXQgeW91IG5lZWQgdGhlIFgxMSBkZXZlbCBmaWxlcy4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXJlY3REcmF3Q3JlYXRlRXgoKSBzaG91bGQgYWxyZWFkeSByZXR1cm4gdGhlIGludGVyZmFjZSBmb3IgdGhlCglwYXNzZWQgcmVmaWlkLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlIHRoZSB3aWR0aCAvIGhlaWdodCBwYXJhbWV0ZXIgb24gYSBTZXREaXNwbGF5TW9kZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyB3aGVuIGNoYW5naW5nIGRyaXZlcyBpbiAxNiBiaXQgc3R5bGUgZGlhbG9nIGZvciBhIDMyIGJpdCBhcHAKCSsgbWlzY2VsbGFuZW91cyBmaXhlcy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHR3byBjaGVja3MgZm9yIG91dCBvZiByYW5nZSBwb2ludGVyIGFjY2Vzc2VzLgoKCSogZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmxvYXRpbmcgcG9pbnQgZGF0YSBwcmludGluZyBhbmQgbWFkZSBiYXNpYyB0eXBlcyByZWFkaW5nIG1vcmUKCXJvYnVzdC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglKYXNvbiBNYXdkc2xleSA8amFzb25AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIGZsaWNrZXJpbmcgdGhhdCB3YXMgb2NjdXJyaW5nIGluIHRoZSBpbWFnZSBsaXN0IGNvbnRyb2wKCXdoZW4gaXQgcmVwYWludGVkLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNsZWVwIHRpbWUgY2FsY3VsYXRpb24gZm9yIHRoZSB3b2RQbGF5ZXIgdGhyZWFkLgoJQ2hhbmdlZCB0aGUgd29kUGxheWVyIHRocmVhZCBtZXNzYWdpbmcgdG8gdXNlIGl0cyBvd24gZmFzdCAzMCBlbnRyaWVzCglyaW5nIGJ1ZmZlciBsaXN0LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgcmVkdW5kYW50IHRocmVhZCBwcmlvcml0eSBkZWZpbmVzLgoKMjAwMC0xMC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIGNydC9tc3ZjcnQgdGhyZWFkIHByb3RvdHlwZXMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYXN5bmNocm9ub3VzIHJlY29yZGluZyBpbiBNQ0kgbGF5ZXIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgQVpFUlRZIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlcXVlbmNlciBlcnJvciBtZXNzYWdlIGZpeC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpeCBtZXNzYWdlcyBzZW50IHdoZW4gcmlnaHQtY2xpY2tpbmcgaW4gYSBibGFuayAobm9uLWl0ZW0pIGFyZWEgb2YgYQoJbGlzdHZpZXcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhc3MgdGhlIGNvcnJlY3QgaEZpbGUgdG8gUEVfQ3JlYXRlTW9kdWxlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURyYXcgdGV4dCBhbmQgaWNvbnMsIGltcGxlbWVudCBvcmRlcmluZyBmdW5jdGlvbnMsIGFsbG93IHJlb3JkZXJpbmcKCXdpdGggbW91c2UgYW5kIGZpeCB0aGUgV01fTk9USUZZIHRhcmdldC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIEFaRVJUWSBrZXlib2FyZCBsYXlvdXQuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uaCwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmM6Cgk8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglDaGFuZ2VkIEdST1VQIHRvIFBST0dHUk9VUC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2lubnQuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU2tpcCBkaXJlY3Rvcnkgc3ltbGlua3MgaW4gRE9TRlNfRmluZE5leHRFeC4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jOiBCcmlhbiBQaXJpZQoJQWRkZWQgc3VwcG9ydCBmb3IgUEFTU1RIUk9VR0ggYW5kIFBPU1RTQ1JJUFRfUEFTU1RIUk9VR0ggZXNjYXBlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkL2ZpeGVkIG1pc3NpbmcgZXh0ZXJuICJDIi4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBjaGFyL05VTEwgY29tcGFyaXNvbi4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUge0hSRVNVTFQsU0NPREV9X1NFVkVSSVRZIG1hY3Jvcy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglVc2UgYSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgZW50cmllcyBpbiByZXNvdXJjZSBkaXJlY3Rvcmllcy4KCUZpeGVkIEdldFJlc0RpckVudHJ5QS9XIHByb3RvdHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJQ2FsbCBQcml2YXRlRXh0cmFjdEljb24gaW4gdXNlcjMyIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVNob3VsZCB0ZXN0IHVuaXhkZXYgYWdhaW5zdCAtMSAoc2VlIHdvZE9wZW4vd2lkT3BlbikuCgl3aWRSZWNvcmRlcjogYnl0ZXNSZWFkIGlzIG5vdyB0ZXN0ZWQgYWdhaW5zdCAoRFdPUkQpIC0xLgoKCSogbG9hZGVyL2VsZmRsbC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglCYWNrIG91dCBteSBFTEZETExfZGxvcGVuIHBhdGNoIGFuZCBhZGQgYSB3YXJuaW5nIGZvciBmdXR1cmUgbWlzZ3VpZGVkCgloYWNrZXJzLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBmcmVlaW5nIGxvY2tlZCBnbG9iYWwgbWVtb3J5IGhhbmRsZXMuCgoJKiB3aW5kb3dzL21kaS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXYXRjaCBvdXQgZm9yIERlZk1ESUNoaWxkUHJvYyBjYWxscyBvbiBub24tTURJLWNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGhvbGQgdGhlIFgxMSBsb2NrIHdoaWxlIGNhbGxpbmcgR0RJIG9iamVjdCByb3V0aW5lcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IGRvIGFueSBHTFggY2FsbHMgb24gYSBkaXNwbGF5IHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBHTFguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVjYWxjdWxhdGUgbkl0ZW1IZWlnaHQgd2hlbiBMVlNfU0VUSU1BR0VMSVNUIGlzIGNhbGxlZC4gIEZpeGVzIGljb25zCgliZWluZyBjaG9wcGVkIG9mZiBpbiB0aGUgZmlsZSBkaWFsb2cgd2luZG93LiAgQWxpZ24gaXRlbXMgdG8gdG9wIGFuZAoJcmVmcmVzaCBhZnRlciBzb3J0aW5nLCBhcyB3aW5kb3dzIGRvZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3Auc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgQ3JlYXRlRGlzcFR5cGVJbmZvLCBDcmVhdGVTdGREaXNwYXRjaDE2IGFuZCBDcmVhdGVTdGREaXNwYXRjaC4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkIHByb3BlciBtZXNzYWdlIHJlcGx5IG1lY2hhbmlzbSBhbmQgc3AgcGxheWVyIGRhdGEgc3RvcmFnZQoJLSBNb3JlIGltcGxlbWVudGF0aW9uIGFuZCBmaXhlcwoKCSogaW5jbHVkZS9wb3BwYWNrLmgsIGluY2x1ZGUvcHNocGFjazEuaCwgaW5jbHVkZS9wc2hwYWNrMi5oLCBpbmNsdWRlL3BzaHBhY2s0LmgsIGluY2x1ZGUvcHNocGFjazguaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aHJlZSBsZXZlbHMgb2YgbmVzdGluZyBvZiB0aGUgJ3ByYWdtYSBwYWNrJwoJZGlyZWN0aXZlcy4KCjIwMDAtMTAtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyMS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRE9TIElOVDIxIEFIPTRCIChFWEVDKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBrZXlib2FyZCBpbnB1dCBpbiB2YXJpb3VzIGxvY2FsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IExWTV9TRVRJVEVNUE9TSVRJT04zMi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbWVtYmVyIG93bmVyIEhXTkQgd2hlbiBjcmVhdGluZyBhbmQgdXNlIHRoaXMgaHduZCBmb3IgdGhlIFdNX05PVElGWQoJbWVzc2FnZSB0YXJnZXQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgZmxhZyBhbmQgbm90aWZpY2F0aW9uIGRlZmluaXRpb25zIGZvciBDb21ib0JveEV4LgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIG9sZCBXaW4gMi54IHN0cmluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVdhcm5pbmcgZml4LgoKCSogc2VydmVyL3B0cmFjZS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgYXBwcm9wcmlhdGUgY2FzdHMgdG8gY2FkZHJfdCBmb3IgdGhlIHRoaXJkIHBhcmFtZXRlciBvZiBwdHJhY2UoKS4KCjIwMDAtMTAtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIHJlY2VudCBidWdzLCBhbmQgYWRkZWQgc29tZSBtb3JlIHNhZmVndWFyZHMgKGNvdWxkCgliZSBoYW5keSBmb3IgcG9ydGFiaWxpdHkgYW55d2F5KSBhbmQgdHJhY2Ugc3RhdGVtZW50cy4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBpbmNsdWRlL3NlcnZlci5oLCBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2Rvc19mcy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglDb252ZXJ0ZWQgYSBmZXcgbW9yZSBzZXJ2ZXIgcmVxdWVzdHMgdG8gdGhlIG5ldyBtZWNoYW5pc20uCgoJKiBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvbnRkZGsuaDoKCUZpeGVkIGEgZmV3IHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglTZXQgc2VsZWN0b3IgMDAwMEggYmFzZSB0byAweGYwMDAwIHVudGlsIHRoZSBmaXJzdCA2NEsgYXJlCgl1bnByb3RlY3RlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFNoZWxsTWVzc2FnZUJveFtBV10gYnVmZmVycyB1c2FnZSAoaW4gc29tZSBjYXNlcywgd3JvbmcgYnVmZmVycwoJd2VyZSB1c2VkIDsgZGVzdGluYXRpb24gYnVmZmVyIGRvZXNuJ3QgaGF2ZSBhIGZpeGVkIHNpemUpLgoJRml4ZWQgRm9ybWF0TWVzc2FnZSBwYXJhbWV0ZXIgd2FybmluZ3MgKGl0J3Mgbm93IGEgdmFfbGlzdCopLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBvcmlnX21vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRHJhdyB0aGUgc2Nyb2xsYmFyIGJlc2lkZSB0aGUgYnVkZHkgd2hlbiBuZWl0aGVyIFVEU19BTElHTltSSUdIVHxMRUZUXQoJaXMgZ2l2ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMb2NhbGl6YXRpb24gYW5kIGV4cGVjdCBsZWFwZGF5cyB3aGVuIGxvb2tpbmcgZm9yIHRoZSBsZW5ndGggb2YgYQoJbW9udGguCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMb2NhbGl6YXRpb24gYW5kIG1hbnkgY2hhbmdlcyB0byBiZWhhdmlvdXIgYW5kIG91dGxvb2suCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNwbGl0IG91dCByZXNvdXJjZXMgdGhhdCBtaWdodCBiZSBsb2NhbGl6ZWQuCglBZGRlZCBHZXJtYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYWRkaXRpb25hbCByZXNvdXJjZSBJRHMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YmJlZCBMb29rdXBBY2NvdW50TmFtZUEuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuICJkZWZhdWx0IiBEaXJlY3REcmF3IGRyaXZlciBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBkcml2ZXIKCXJlZ2lzdGVyZWQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglGaXhlZCBiZWhhdmlvdXIgb2Ygd2luZG93J3Mgc3lzdGVtIGJ1dHRvbnMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglMb2FkU3RyaW5nQSBpbnNlcnRzIHRlcm1pbmF0aW5nIG51bGwgaW4gdGhlIGJ1ZmZlciB3aGVuIHRoZSBzdHJpbmcKCXJlc291cmNlIGlzIGFuIGVtcHR5IHN0cmluZyBvciB3aGVuIGl0IGNhbiBub3QgYmUgZm91bmQuCgoyMDAwLTEwLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2hhbmQsIGluY2x1ZGUvd2ludXNlci5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJRENfSEFORCBjdXJzb3IuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBzaWduYXR1cmUgb2YgdGhlIEZvcm1hdE1lc3NhZ2UgQVBJcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWN4LmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBNT0RFTSBzdHVmZiBoYXMgYmVlbiBzcHVuIG9mZiB0byBpdHMgcmlnaHRmdWwgcGxhY2U6IG1jeC5oLgoKCSogaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5kb3dzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29tcGxldGVkL2NvcnJlY3RlZCB0aGUgbGlzdCBvZiBpbmNsdWRlIGZpbGVzLgoJSGFuZGxlIFdJTjMyX0xFQU5fQU5EX01FQU4gYW5kIHRoZSBOT3h4eCBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgTk9HREkgcHJvdGVjdGlvbi4KCVJlcGxhY2VkIF9NQVhfUEFUSCB3aXRoIE1BWF9QQVRILgoJI3VuZGVmIGNhbiBiZSB1c2VkIGRpcmVjdGx5IG9uIFRSQU5TUEFSRU5ULgoKCSogaW5jbHVkZS9vbGUyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTXVzdCBpbmNsdWRlIG9iamJhc2UuaC4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBpbmNsdWRlL3dpbmRlZi5oLCBkbGxzL2tlcm5lbC9jb21tLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSEZJTEUgaXMgYW4gaW50LCBub3QgYSByZWd1bGFyIEhBTkRMRS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgTVNHRl9EREVNR1IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBpbmNvcnJlY3QgZm9ybWF0IHN0cmluZy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBjaGFuZ2luZyBtb3VzZSBjdXJzb3Igd2hlbiBvdmVyIGEgaGVscCB0b3BpYyBsaW5rLgoKCSogZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERpcmVjdElucHV0Q3JlYXRlRXguCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglEbyBub3Qgc2VuZCBhIFdNX0NPTlRFWFRNRU5VIG1lc3NhZ2Ugd2hlbiBhIFRyZWVWaWV3IHJlY2VpdmVzIGEKCVdNX1JCVVRUT05VUC4KCgkqIGlmMTYzMi9maW5kZnVuYywgdG9vbHMvZmluZGZ1bmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNYWtlIGZpbmRmdW5jIGxvb2sgZm9yIC5zcGVjIGZpbGVzLCBhbmQgcHV0IGl0IHdpdGggdGhlIG90aGVyIHRvb2xzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglWYWxpZGF0ZSBhY2Nlc3MgZXZlbiBpZiB3cmFwIHBhc3QgYWRkcmVzcyAwIGZvciBJc0JhZFN0cmluZ1B0cltBfFddCglhbmQgSXNCYWRbUmVhZHxXcml0ZV1QdHIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIG1lbW9yeS9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIHN0dXBpZCBzcGVsbGluZyBmaXhlcwoJLSBzb21lIG1vcmUgbG9hZG9yZGVyIGFycmF5IHdvcmsKCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvbnRkZGsuaCwgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFkZGVkIGEgZmV3IG1vcmUgbGFyZ2UgaW50ZWdlciBmdW5jdGlvbnMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL2RjLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU3R1YmJlZCBHZXREZXZpY2VHYW1tYVJhbXAuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJUGV0ZXIgSGF3a2lucyA8cGV0ZXJAaGF3a2lucy5lbXUuaWQuYXU+CglBZGRlZCBET1MgaW50IDIxaCBmdW5jdGlvbiA0NDUyaCBzdXBwb3J0IChEUi1ET1MgdmVyc2lvbiBjaGVjaykuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpbGwgaW4gdGhlIGRzQm1paC5iaVNpemVJbWFnZSBmaWVsZCBvZiBESUJTZWN0aW9ucyB3aXRoIHRoZQoJY2FsY3VsYXRlZCBiaXRtYXAgc2l6ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUluZGljYXRlIHRoYXQgdGhlIE1JREkgZXJyb3IgbWVzc2FnZSBvbmx5IGFmZmVjdHMgcHJvZ3JhbXMgdGhhdCBuZWVkIE1JREkuCgoJKiBtZW1vcnkvaGVhcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglHZXQgcmlkIG9mIHNoYXJlZCBoZWFwIGZpeG1lIG1lc3NhZ2VzLgoJU2xpZ2h0bHkgY29ycmVjdGVkIG15IGhlYXAgY29tbWl0IHBhdGNoIChYaWxpbngpLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNZXJnZWQgRE9TVk1fSW50IHdpdGggRE9TVk1fU2ltdWxhdGVJbnQsIGFuZCBtYWRlIGl0IGhhbmRsZSBhcHBzIHRoYXQKCXB1cnBvc2VmdWxseSBzaHVmZmxlIHRoZSBpbnRlcnJ1cHQgdmVjdG9ycyBhcm91bmQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJVG8gaW1wcm92ZSBjdXN0b20tZHJhd24gaXRlbXMsIGFkZCBmb2N1cyBib3JkZXIgdG8gaXRlbVJlY3RzIGFuZCBkbwoJbm90IG92ZXJsYXAgdGhlbS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2NvbW0uaCwgaW5jbHVkZS9tc2Rvcy5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2NvbW0uYywgbXNkb3MvaW50MTEuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJTW92ZWQgY29tbS5jIGludG8ga2VybmVsMzIuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsYWltIHRoYXQgb3VyIGhlYWRlcnMgY29uZm9ybSB0byB0aGUgdmVyc2lvbiA1LjAuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIHN0cmluZyBmaWVsZHMgaW4gUFJPUFNIRUVUUEFHRUEgc2hvdWxkIGJlIEFOU0kgc3RyaW5ncy4KCgkqIGluY2x1ZGUvb2xlY3RsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgRFVNTVlfVU5JT05fTkFNRSBpbiBmYXZvciBvZiBEVU1NWVVOSU9OTkFNRS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbWlzc2luZyBUVklOU0VSVFNUUlVDVCBzeW5vbnltcy4KCUFkZGVkIG1pc3NpbmcgQ0JFSUZfeHh4IGRlZmluaXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgc2lnbmF0dXJlIG9mIFN5c0FsbG9jU3RyaW5nQnl0ZUxlbi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTdGF0dXMgYmFycyBvbiBtYW5hZ2VkIHdpbmRvd3Mgc2hvdWxkIG5vdCBoYXZlIFNJWkVHUklQIHN0eWxlLgoKCSogZGxscy9udGRsbC9yZWcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgcmVnIHRoZSBkZWZhdWx0IG91dHB1dCBjaGFuZWwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSWdub3JlIHNldHNvY2tvcHQgY2FsbHMgdGhhdCBtYWtlIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlIGJ1ZmZlciB0b28KCXNtYWxsLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTdWJpdGVtcyBvZiBsaXN0dmlld3Mgd2VyZSBub3QgcGFpbnRlZCB3aXRoIHRoZSByaWdodCBiYWNrZ3JvdW5kIHdoZW46CgktTFZTX0VYX0ZVTExST1dTRUxFQ1Qgc3R5bGUgaXMgZGVmaW5lZAoJLWl0ZW0gaXMgc2VsZWN0ZWQKCS1MaXN0dmlldyBkb2Vzbid0IGhhdmUgdGhlIGZvY3VzLgoKCSogc2VydmVyL3NvY2suYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQWZ0ZXIgYWNjZXB0IGlzIGNhbGxlZCBvbiB0aGUgc29ja2V0LCB0aGUgbGlzdGVuaW5nIHNvY2tldCBuZWVkcyB0byBiZQoJcmVzZWxlY3RlZC4KCgkqIG1lbW9yeS9yZWdpc3RyeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cyBvbiBkYXRhIHJldHVybnMgZnJvbSBSZWdRdWVyeVZhbHVlRXhBLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDogS29ucmFkIFJpZWNrIDxrckByMHEuY3g+CglDaGFuZ2VkIHJlcG5lIHRvIHJlcG56IGZvciBTb2xhcmlzIGFzc2VtYmxlci4KCjIwMDAtMTAtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgTENUWVBFLCBHZXRMb2NhbGVJbmZvLCBOVU1CRVJGTVQsIENVUlJFTkNZRk1UIGFuZCB0aGUgcmVsYXRlZAoJQVBJIHRvIHdpbm5scy5oLgoJTW92ZWQgTEFOR194eHgsIFNVQkxBTkdfeHh4LCBTT1JUX3h4eCBhbmQgSVNfVEVYVF9VTklDT0RFX3h4eCB0bwoJd2lubnQuaC4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1hbnkgbWlzc2luZyAqUHh4eCB0eXBlcy4KCVJlbW92ZWQgYSBmZXcgKkxQeHh4IHR5cGVzIHRoYXQgYXJlIG5vdCBzdXBwb3NlZCB0byBiZSB0aGVyZSAoaW4KCXBhcnRpY3VsYXIgTFBJQ09OSU5GTykuCglBZGRlZCBhIGZldyBtaXNzaW5nICpMUEN4eHggdHlwZXMgKE1FTlVJVEVNSU5GTywgU0NST0xMSU5GTywKCURMR0lURU1URU1QTEFURSkuCglXSU5IRUxQIGFuZCBQRV9BQ0NFTCBhcmUgaW50ZXJuYWwgdHlwZXMuCglNVUxUSUtFWUhFTFAgYW5kIEhFTFBXSU5JTkZPIGJvdGggaGF2ZSBhbiBBIGFuZCBXIHZhcmlhbnQuCglOVU1CRVJGTVQsIENVUlJFTkNZRk1UIGFuZCB0aGUgcmVsYXRlZCBBUEkgYmVsb25nIHRvIHdpbm5scy5oLgoJQWRkZWQgbWlzc2luZyBBUldfeHh4IGRlZmluZXMgKGZvciBzeXNtZXRyaWNzKS4KCgkqIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUk9URkxBR1MgaGF2ZSB0aGVpciBvd24gaWZkZWYgcHJvdGVjdGlvbiwgdGFrZSB0aGVtIG91dCBvZiB0aGUKCV9TRUNVUklUWV9ERUZJTkVEIGlmZGVmIGJsb2NrLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGRlY2xhcmF0aW9uIGZvciBHZXRFbmhNZXRhRmlsZURlc2NyaXB0aW9uLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBGb250cyByZWdpc3RyeSBrZXkuCgoJKiB3aW4zMi9leGNlcHQuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBmb3IgZGVidWdnZXIgc3RhcnR1cCBldmVudCBjcmVhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZXByZXNzZWQgc3RhdGUgd2l0aCBmbGF0IHRvb2xiYXJzIHNvIHByZXNzaW5nIHRoZSBidXR0b25zIGRyYXdzCgl0aGUgYnV0dG9uIGluIGEgZGVwcmVzc2VkIHN0YXRlLiAgRml4IGJpdG1hcCBvZmZzZXRzLCBmaXhlcyBiaXRtYXAKCW9mZnNldCBwcm9ibGVtcyBpbiBmaWxlIGNvbW1vbiBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJT24gSW5zZXJ0SXRlbSB3aXRoIFRWSV9GSVJTVCwgdGhlIGNoZWNrIGZvciByZXNldHRpbmcgZmlyc3RWaXNpYmxlCgltdXN0IGJlIGRvbmUgKmJlZm9yZSogdGhlIHBhcmVudCdzIGZpcnN0Q2hpbGQgY2hhbmdlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCBub24tYnVmZmVyZWQgb3ZlcmxheXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmV3cml0ZSB0byBzdXBwb3J0IHJvd3Mgb2YgYmFuZHMuCglEcmF3IHNlcGFyYXRvcnMgYmV0d2VlbiBiYW5kcyBpbiByb3dzIGFuZCBiZXR3ZWVuIHJvd3MuCglTdXBwb3J0IHRleHQgYW5kIGJhY2tncm91bmQgY29sb3IgYW5kIGNvbG9yIHByb3BhZ2F0aW9uLgoJSW1wcm92ZSBsYXlvdXQgY29kZS4KCU1ha2UgZk1hc2sgaW4gaW50ZXJuYWwgc3RydWN0dXJlIHRoZSBpbmRpY2F0b3Igb2YgdmFsaWQgaW5mb3JtYXRpb24uCglGaXggc2l6ZSBvZiBncmlwcGVycy4KCUFkZCBkZWJ1Z2dpbmcgdHJhY2VzIGZvciBmdXR1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJU2ltcGxlIE5VTEwgY2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gQmFja2dyb3VuZCBzaG91bGQgbm90IGJlIGRyYXduIGlmIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIENMUl9OT05FLgoJLSBEb24ndCBjaGFuZ2UgdGhlIHNpemUgdG8gMCBmb3IgdGhlIGhlYWRlciBjb250cm9sIG9mIGxpc3R2aWV3IHdpdGgKCSAgTFZTX05PQ09MVU1OSEVBREVSIHN0eWxlLiBJbiBmYWN0IGp1c3Qgc2V0dGluZyBIRFNfSElEREVOIHRvIHRoZQoJICBoZWFkZXIgY29udHJvbCBpcyBlbm91Z2guCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9jb252ZXJ0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIDE2ICg1NjUpIC0+IDE1ICg1NTUpIGJpdCBkZXB0aCBjb252ZXJ0ZXIuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdXBwb3J0IGZvciBjcDkzNi4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogV29yay1hcm91bmQgZm9yIGdjYyBidWcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVtbnRlZCBHZXRGb3VyQ0NDb2Rlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmFibGUgWEY4NnZtb2RlIHN3aXRjaGluZyBwb3NzaWJsZSBmb3IgWDExIHRvby4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBQQ00gY29udmVydGVyIGludGVybmFsIGRyaXZlci4KCUEgZmV3IGRyaXZlciBoYW5kbGluZyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRoZSBPcGVuR0wgZGV0ZWN0aW9uIGNvZGUuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBsb2FkaW5nIG9mIHN5bWJvbHMgZnJvbSBsaWJyYXJpZXMuCgoJKiB3aW4zMi9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglQcmV2ZW50IFNldEZpbGVBdHRyaWJ1dGVBIGZyb20gbWFraW5nIGRpcmVjdG9yeSByZWFkLW9ubHkuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglFbmFibGUgYW5vbnltb3VzIHN0cnVjdC91bmlvbiBzdXBwb3J0IGJ5IGRlZmF1bHQgaW4gYm90aCBDIGFuZCBDKysuCglEaXNhYmxlIHRoZW0gZm9yIGNvbXBpbGVycyBrbm93biBub3QgdG8gc3VwcG9ydCB0aGVtLgoJRGlzYWJsZSB0aGVtIGZvciB0aGUgV0lORSBjb2RlLgoKCSogaW5jbHVkZS9kZGUuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZm91ciBEREVsUGFyYW0gZnVuY3Rpb25zLgoJTm93IG5lZWRzIGFuICdleHRlcm4gIkMiJyBwcm90ZWN0aW9uIGZvciBDKysuCgoJKiBkbGxzL3VzZXIvZGRlbWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHBhcmFtZXRlciB0eXBlcyBhbmQgY29tbWVudHMgb2YgdGhlIERERWxQYXJhbSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZWQgc3RyYXkgQS9XIGZyb20gaW52b2NhdGlvbnMgb2YgV0lORUxJQl9OQU1FX0FXLgoKCSogbXNkb3MvaW50MTEuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIGdsb2JhbHMgTFBUW10gYW5kIENPTXt9LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgc29tZSBvZiB0aGUgQVBJcyBpbnRyb2R1Y2VkIGluIFdpbjk4LCBtb3N0bHkgdGhlIFZhclh4eCBtYXRocyBBUElzLgoKCSogbXNkb3MvdmdhLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlcGxhY2UgbnVsbCBieXRlcyBieSBzcGFjZXMgaW4gV3JpdGVDb25zb2xlT3V0cHV0QSBjYWxsLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNQ0lDREEgZGlkbid0IG9wZW4vY2xvc2UgdGhlIGRvb3Igd2hlbiBjYWxsaW5nIHRoZSBjb21tYW5kIHdpdGhvdXQKCXZhbGlkIHBhcmFtZXRlciBibG9jayAoaS5lLiA9PSBOVUxMKS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBPbGVMb2NrUnVubmluZyBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ZWQgc29tZSBzZWd2cyB0aGF0IG9jY3VyIHdpdGggb3duZXJkYXRhIGxpc3R2aWV3cy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiB2YWx1ZXMgYXJlIHJldmVyc2VkIGluIGZhaWx1cmUvcmdkYXRhID09IE5VTEwgY2FzZSBpbgoJR2V0UmVnaW9uRGF0YSAod2FzIG1lcmdlIGVycm9yIGJ5IG1lKS4KCgkqIHdpbjMyL2V4Y2VwdC5jLCB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglDaGFuZ2VkIGRlYnVnZ2VyIGxhdW5jaGluZyB0byBhdXRvIHBlciBkZWZhdWx0LgoKCSogZGxscy9rZXJuZWwvbmxzL2Rhbi5ubHM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCURlZmluZSBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSBmb3IgRGFuaXNoIGxvY2FsZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwcmVzcyBqdW5rIG5vaXNlIGF0IHN0YXJ0dXAgb2YgRGlyZWN0U291bmQgb24gU0IgTGl2ZSEgYW5kIEVTIDEzNzEuCgoyMDAwLTEwLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kcml2ZS5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBmaWxlcy9kcml2ZS5jOgoJVXNlIHNwZWNpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRyYW5zbWl0IHRoZSBjd2Qgb2YgdGhlIHZhcmlvdXMKCWRyaXZlcyB0byBjaGlsZCBwcm9jZXNzZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmluZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSAnOycgZW5kaW5nIG9uIGxpbmVzIHVzaW5nIHRoZSBERUNMX1dJTkVMSUJfVFlQRV9BVyBhbmQKCVdJTkVMSUJfTkFNRV9BVyBtYWNyb3MuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIG1pc3NpbmcgJ1N5c0FsbG9jU3RyaW5nJyBwcm90b3R5cGVzLgoJQWRkZWQgc29tZSBtaXNzaW5nICdUeXBlTGliJyBwcm90b3R5cGVzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS9iaXRtYXBzL29jcl9pYmVhbToKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHdoaXRlIGJvcmRlciBhcm91bmQgdGhlIEktYmVhbSBjdXJzb3IuCgoyMDAwLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBHbG9iYWxIYW5kbGUoKSBhZ2FpbnN0IGJhZCBwYXJhbWV0ZXJzLgoKCSogZGVidWdnZXIvc3RhY2suYzoKCUZpeGVkIGJhY2t0cmFjZSBmb3IgYXBwcyB0aGF0IG5ldmVyIGNhbGxlZCBkb3duIHRvIDE2LWJpdCBjb2RlLgpuCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc3VyZSB0aGF0IHdlIHNraXAgdGFza3Mgd2l0aCBtaXNzaW5nIGhJbnN0YW5jZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW50cm9kdWNlZCBhIG5ldyBhcmVuYSBmbGFnIGNhbGxlZCBHQV9ET1NNRU0gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJRE9TTUVNIGFuZCBub3JtYWwgIndpbmRvd3MiIGdsb2JhbCBtZW0uCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXhlcyBpbiBtbWlvLCByZWxhdGVkIHRvIGJ1ZmZlcmluZyBpbiByZWNvcmQgbW9kZS4KCjIwMDAtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRToKCVJlbGVhc2UgMjAwMDEwMDIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IEdsb2JhbEhhbmRsZSgpIGFnYWluc3QgYmFkIHBhcmFtZXRlcnMuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOgoJRml4ZWQgYmFja3RyYWNlIGZvciBhcHBzIHRoYXQgbmV2ZXIgY2FsbGVkIGRvd24gdG8gMTYtYml0IGNvZGUuCgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHN1cmUgdGhhdCB3ZSBza2lwIHRhc2tzIHdpdGggbWlzc2luZyBoSW5zdGFuY2UuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUludHJvZHVjZWQgYSBuZXcgYXJlbmEgZmxhZyBjYWxsZWQgR0FfRE9TTUVNIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KCURPU01FTSBhbmQgbm9ybWFsICJ3aW5kb3dzIiBnbG9iYWwgbWVtLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4ZXMgaW4gbW1pbywgcmVsYXRlZCB0byBidWZmZXJpbmcgaW4gcmVjb3JkIG1vZGUuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvc2VydmVyLmgsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUNvbnZlcnQgTnRRdWVyeUtleSBhbmQgTnRFbnVtZXJhdGVLZXkgdG8gdGhlIG5ldyByZXF1ZXN0IG1lY2hhbmlzbS4KCUZpeGVkIGEgZmV3IGJ1Z3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRm9yd2FyZCBhbGwgbGFyZ2UgaW50ZWdlciBmdW5jdGlvbnMgdG8gbnRkbGwuCgoJKiBvbGUvb2xlMm5scy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RGF0ZUZvcm1hdEE6IENoZWNrIHJhbmdlIGFuZCByZWNhbGN1bGF0ZSB3RGF5T2ZXZWVrLgoJT0xFX0dldEZvcm1hdEF8VzogRml4IHRyYW5zZm9ybWF0aW9uIG9mIHdEYXlPZldlZWsgdG8KCUxPQ0FMRV9TKEFCQlJFVilEQVlOQU1FeC4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaCwgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd25hc3BpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbW1zeXN0ZW0uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gU3VwcG9ydCBmb3Igc3RkY2FsbDY0CgktIE1pbm9yIEFQSSB1cGRhdGVzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQmVhdXRpZmllZCB0aGUgbG9hZG9yZGVyIGFycmF5IChncm91cCBETExzIGFjY29yZGluZyB0byBmdW5jdGlvbmFsaXR5LAoJYWRkIGdyb3VwIGhlYWRlciBjb21tZW50cywgLi4uKSwgYWRkZWQgYnVpbHRpbiB4MTFkcnYgYW5kIHdpbmFzcGkuCgoJKiBkbGxzL21zYWNtL2ludGVybmFsLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTaWxlbmNlIHVubmVlZGVkIGV4Y2VwdGlvbiB0byBhbGxvdyBlYXNpZXIgQUNNIGRlYnVnZ2luZy4KCjIwMDAtMTAtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmM6CglDb252ZXJ0ZWQgc29tZSBvZiB0aGUgcmVnaXN0cnkgc2VydmVyIHJlcXVlc3RzIHRvIHRoZSBuZXcgcmVxdWVzdAoJbWVjaGFuaXNtLgoKCSogd2luMzIvdGltZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3RpbWVyLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCUltcGxlbWVudGVkIGEgYnVuY2ggb2YgbGFyZ2UgaW50ZWdlciBmdW5jdGlvbnMgaW4gbnRkbGwuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYzoKCUFkZGVkIHN0ZGNhbGw2NCBlbnRyeSBwb2ludCB0eXBlIHRvIGFsbG93IGNvcnJlY3QgcmVsYXkgZGVidWdnaW5nCglzdXBwb3J0IGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gNjQtYml0IHZhbHVlcy4KCjIwMDAtMDktMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHN1cmUgd2UgY29tbWl0IGVub3VnaCBtZW1vcnkgaW4gYSBuZXcgc3ViaGVhcC4KCgkqIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CgktIG1vdmVkIHNvbWUgY29kZSBmcm9tIFdJTlNQT09MX0dldFByaW50ZXJEcml2ZXIgaW50byBuZXcgZnVuY3Rpb24KCSAgV0lOU1BPT0xfR2V0RHJpdmVySW5mb0Zyb21SZWcKCS0gYnVnIGZpeCBpbiBmdW5jdGlvbiBHZXRQcmludGVyRGlyZWN0b3J5VzogZnJlZSBsb2NhbCB2YXJpYWJsZSBub3QKCSAgdGhlIG9uZSBmcm9tIGZ1bmN0aW9uIGludGVyZmFjZQoJLSBpbXBsZW1lbnRlZCBFbnVtUHJpbnRlckRyaXZlcnNBfFcKCgkqIGZpbGVzL3Byb2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdGhlIGRlZmF1bHQgdmFsdWUgaGFuZGxpbmcgKHRyYWlsaW5nIHNwYWNlcyBvZiB0aGUgZGVmYXVsdCB2YWx1ZQoJYXJlIGNsaXBwZWQpLgoJc2VjdGlvbiA9PSBOVUxMLCBrZXlfbmFtZSA9PSBOVUxMIHVuZG9jLiBmZWF0dXJlIGlzIG9ubHkgdmFsaWQgaW4gV2luMzIuCgoJKiBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS9udGRkay5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi9wcm9jZXNzLmMsIHdpbjMyL3RpbWUuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJTW92ZWQgYSBidW5jaCBvZiByb3V0aW5lcyB0byBrZXJuZWwzMi5kbGwgKHdpdGggdGhlIGhlbHAgb2YKCURpbWl0cmllIE8uIFBhdW4pLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHRElTZWxlY3RQYWxldHRlMTYgY2hlY2tlZCBHZXRPYmplY3RUeXBlKCkgcmV0dXJuIHZhbHVlIGZvcgoJUEFMRVRURV9NQUdJQyBpbnN0ZWFkIG9mIE9CSl9QQUwuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgRExMVkVSU0lPTklORk8gdG8gc2hsd2FwaS5oLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglMZXQgSW50ZXJuYWxFeHRyYWN0SWNvbjE2IGxvYWQgaWNvbnMgZnJvbSBidWlsdGluIERMTHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb2RpZmllZCB0aGUgYml0bWFwIGNlbnRlcmluZyBhbGdvcml0aG0gdG8gdGFrZSB0aGUgYnV0dG9uJ3MgYm9yZGVyCglpbnRvIGFjY291bnQuCgoJKiB3aW5kb3dzL3RpbWVyLmMsIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQmVmb3JlIGNhbGxpbmcgdGhlIHRpbWVyIHdpbmRvdyBwcm9jLCBtYWtlIHN1cmUgaXQgaXMgdmFsaWQuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2VjLmM6CglSZW1vdmVkIGEgZmV3IGRlcGVuZGVuY2llcyBvbiBrZXJuZWwzMiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglNb3ZlZCBjcml0aWNhbCBzZWN0aW9uIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsLgoKCSogd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbjMyL01ha2VmaWxlLmluLCB3aW5kb3dzL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHRzeDExL01ha2VmaWxlLmluLCByZWxheTMyL01ha2VmaWxlLmluLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9sZS9NYWtlZmlsZS5pbiwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbXNkb3MvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbWVtb3J5L01ha2VmaWxlLmluLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9kb3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgaWYxNjMyL01ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL21ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBmaWxlcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGNvbnNvbGUvTWFrZWZpbGUuaW4sIGNvbnRyb2xzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJTW92ZWQgJChNT0RVTEUpLm8gcnVsZSBvdXQgb2YgTWFrZS5ydWxlcyBpbnRvIHRoZSBpbmRpdmlkdWFsCglNYWtlZmlsZXMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL3JlZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBTSERlbGV0ZUVtcHR5S2V5QSwgU0hEZWxldGVLZXlBLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCVNlcmdlaSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglGaXhlZCByZXR1cm4gdmFsdWVzIG9mIEdldFJlZ2lvbkRhdGEuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglDYWxsIFJlbGVhc2VDYXB0dXJlICh3aGljaCB0cmlnZ2VycyBXTV9DQVBUVVJFQ0hBTkdFRCkgYWZ0ZXIgdGhlCglXTV9DT01NQU5EIGZvciB0aGUgYnV0dG9uIGhhcyBiZWVuIHNlbnQsIHJhdGhlciB0aGFuIGJlZm9yZS4KCgkqIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXNlIHdhdmVhdWRpbywgbm90IHdhdmVmb3JtLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBjb3VwbGUgb2YgVFJBQ0UgbWVzc2FnZXMuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCBtaXNzaW5nIGNhc3QuCgoJKiBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gdHlwZSBvZiBtaXhlck1lc3NhZ2UxNi4KCgkqIGluY2x1ZGUvd2ludmVyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lZCBWU19VU0VSX0lORk8gdG8gVlNfVVNFUl9ERUZJTkVELgoKMjAwMC0wOS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYnVpbHRpbjMyLmgsIG1pc2NlbXUvLmN2c2lnbm9yZSwgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIG1pc2NlbXUvd2luZS5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgTWFrZS5ydWxlcy5pbjoKCUNoYW5nZWQgdGhlIFdpbjMyIGRsbCBkZXNjcmlwdG9yIHRvIGJlIGluIElNQUdFX05UX0hFQURFUlMgZm9ybWF0LgoJR2VuZXJhdGUgdGhlIGltcG9ydCB0YWJsZSBkaXJlY3RseSBpbiBQRSBmb3JtYXQuCglBZGRlZCBndWkvY3VpZXhlX25vX21haW4gbW9kZXMgaW4gRVhFIHNwZWMgZmlsZXMsIGFuZCB1c2UgdGhpcyBmb3IgdGhlCgltYWluIHdpbmUgYmluYXJ5LgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWM6CglBZGRlZCBhIGZldyBtaXNzaW5nIGltcG9ydHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB2YXJpb3VzIHR5cGUgYW5kIG1hY3JvIGRlZmluaXRpb25zIHRoYXQgYXJlIG5lZWRlZCB0byBjb21waWxlCgl0aGUgbGF0ZXN0IE1GQy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0b3JlIGEgY29weSBvZiBNSURJT1BFTkRFU0MgaW5mb3JtYXRpb24gaW5zdGVhZCBvZiBwb2ludGVyLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVbmxvY2sgd2luMTYgY3JzdCB3aGlsZSB0aHVua2luZyB1cCB0byAzMiBiaXQgZGxsLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUluY2x1ZGUgPHVuaXN0ZC5oPiBmb3IgcHJvdG90eXBlIG9mIHNlbGVjdCgpLgoKCSogc2VydmVyL3NvY2suYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU29ja2V0IHJldHVybmVkIGJ5IGFjY2VwdCBmdW5jdGlvbiBvZiBNaWNyb3NvZnQgQVBJIHNob3VsZCBrZWVwIHRoZQoJcHJvcGVydGllcyBvZiB0aGUgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhbHNvIHRydWUgZm9yIG5vbi1ibG9ja2luZwoJcHJvcGVydHkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglJZiB3aW5kb3cgd2FzIG5vdCByZXNpemVkIGFuZCBub3QgbW92ZWQsIHJlcGFpbnQgb25seSBpdHNlbGYgZXhjbHVkaW5nCglwYXJlbnQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJR2VuZXJhdGUgV2luMzIgZGxsIGRlc2NyaXB0b3Igc3RydWN0dXJlIGluIHRoZSAuc3BlYy5jIGZpbGUgc28gdGhhdCB3ZQoJZG9uJ3QgbmVlZCB0byBkZXBlbmQgb24gYnVpbHRpbjMyLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvem1vdXNlLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVkIHptb3VzZS5oLCBtb3ZlZCB3aGVlbCBjb2RlIGZyb20gbW91c2UuaCBpbnRvIGl0LgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU1DSV9TVEFUVVNfTEVOR1RIIG9uIFdpbmRvd3MgcmV0dXJucyBvbmUgZnJhbWUgbGVzcyB0aGFuIHRoZSB0b3RhbAoJdHJhY2sgbGVuZ3RoIGZvciB0aGUgbGFzdCB0cmFjayBvbiBhIENELiAgVGhpcyBhbHNvIGFmZmVjdHMgcXVlcmllcwoJZm9yIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIENELgoKCSogbXNkb3MvZG9zYXNwaS5jLCBpbmNsdWRlL3dpbmUvd2luYXNwaS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglGaXhlZCBhIGZldyBub24gcG9ydGFibGUgemVyby1zaXplIGFycmF5IGRlY2xhcmF0aW9ucy4KCgkqIGZpbGVzL2RyaXZlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhdmUgdGhlIFVOSVggY3dkIGZvbGxvdyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb24gdGhlIGN1cnJlbnQgZHJpdmUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglPbiByZWNlcHRpb24gb2YgYSBGb2N1c091dCBldmVudCwgZG9uJ3QgZGVhY3RpdmF0ZSB0aGUgYXBwbGljYXRpb24gaWYgdGhlCgluZXh0IHdpbmRvdyB0byBnZXQgdGhlIGZvY3VzIGlzIGEgV2luZSB3aW5kb3cuCgoyMDAwLTA5LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gUmVtb3ZlIHdpbm1tIGhhY2sgaW4gZHBsYXkgY29kZQoJLSBGaXggdXAgc29tZSBtaXNzaW5nIGhvbGVzIGluIHRoZSBjb2RlCgktIE1vcmUgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbgoJLSBTdGF0dXMgZG9jdW1lbnRhdGlvbiB1cGRhdGUKCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1pZ3JhdGUgJExERkxBR1MgZnJvbSBjb25maWd1cmUgdG8gTWFrZWZpbGUgYW5kIGludG8gbWFpbiB3aW5lCglleGVjdXRhYmxlLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURpc3BsYXkgYW4gRVJSKCkgaW4gY2FzZSBvZiB1bmRlZmluZWQgc3ltYm9scy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTdGFydGVkIHNvbWUgYmFzaWMgd29yayBvbiB0aGUgbW9yZSBvciBsZXNzIHVuZG9jdW1lbnRlZCBTRVRVUFgKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgZm9yIFRCU1RZTEVfRVhfRFJBV0REQVJST1dTIHN0eWxlOyByZXNldCBjYXB0dXJlIGFuZCBidXR0b24KCXByZXNzZWQgZmxhZ3Mgb24gV01fQ0FQVFVSRUNIQU5HRUQuCgoJKiBvYmplY3RzL2RjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdPUkQgaXMgdW5zaWduZWQsIHNvIHdlIG5lZWQgdG8gdHJhbnNhbHRlIDB4ZmZmZiBpbnRvIC0xLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luMzIvY29uc29sZS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MveG1zLmMsIG9sZS9vbGUybmxzLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaCwgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5hc3BpLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5wcm9jLmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dpbnZlci5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIGluY2x1ZGUvd293bnQzMi5oLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvbm9uY2xpZW50LmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luYXNwaS5oLCBpbmNsdWRlL2FzcGkuaCwgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvZ2xvYmFsLmgsIGluY2x1ZGUvbG9jYWwuaCwgaW5jbHVkZS9semV4cGFuZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGlmMTYzMi9zbm9vcC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvZmlsZS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9zb3VuZDE2LmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2luYXNwaS9hc3BpLmgsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2RkZW1sMTYuaCwgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL21zdmlkZW8vdmZ3MTYuaCwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20vbXNhY21kcnYuaCwgZGxscy9tc2FjbS93aW5lYWNtLmgsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvZ2RpL2JpZGkxNi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9zdHJlc3MuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglNb3ZlZCBhbGwgV2luMTYgZGVmaW5pdGlvbnMgb3V0IG9mIHRoZSBzdGFuZGFyZCBXaW5kb3dzIGhlYWRlcnMuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXZvaWQgY3Jhc2hlcyBpZiAxNi1iaXQgbW9kdWxlIGhhbmRsZSB3YXMgcGFzc2VkIHRvIHRoZSAzMi1iaXQKCXJlc291cmNlIGVudW1lcmF0b3IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBpbmNsdWRlL2RkcmF3LmgsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIHdpbmUuaW5pOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIERpcmVjdERyYXcgb3ZlcmxheXMgdXNpbmcgdGhlIFhWaWRlbyBleHRlbnNpb24uCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglDb2RlIGNsZWFudXAuCglBZGQgY2hlY2tpbmcgZm9yIGludmFsaWQgREJDUyB0cmFpbGVyIGJ5dGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIGNvbW1jdGwgaGVhZGVyIGlzc3VlcyByZXBvcnRlZCBpbiBuZXdzZ3JvdXAuCgoJKiBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS93MzJza3JubC5oLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjOgoJQSBmZXcgaW5jbHVkZXMgY2xlYW51cC4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBsb2FkZXIvbWFpbi5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfcXVlcnlhc3NvY2lhdGlvbnMuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgaW5jbHVkZS9kbGdzLmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jOgoJUmVtb3ZlZCBzaGVsbC5oLiBDbGVhbmVkIHVwIHRoZSBuZXN0ZWQgaW5jbHVkZXMgbWVzcyBpbiB3aW5lL29ial8qLmguCgoyMDAwLTA5LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVc2UgZG9jdW1lbnRlZCBEUk9QRklMRVMgc3RydWN0dXJlIGluc3RlYWQgb2YgaW50ZXJuYWwgRFJPUEZJTEVTVFJVQ1QuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy93aW5wcm9jLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvdnhkLmMsIG1zZG9zL3htcy5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9lcnJvci5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc2FzcGkuYywgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jOgoJUmVtb3ZlZCBzb21lIG9mIHRoZSBYWFhfcmVnIG1hY3JvcyBub3cgdGhhdCB3ZSBhcmUgdXNpbmcgdGhlIHN0YW5kYXJkCglDT05URVhUODYgc3RydWN0dXJlIGV2ZXJ5d2hlcmUuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvdGltZXIuYywgd2luMzIvY29uc29sZS5jLCBtaXNjL2NvbW0uYywgbWlzYy9jcHUuYywgbWlzYy9tYWluLmMsIG1pc2MvdmVyc2lvbi5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvZXZlbnQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY2Ryb20uYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYzoKCVJlbW92ZWQgaW5jbHVzaW9uIG9mIHdpbmUvd2luZXN0cmluZy5oIGZyb20gd2luYmFzZS5oIGFuZCBhZGRlZCBpdCB0bwoJdGhlIEMgZmlsZXMgdGhhdCBuZWVkIGl0LgoKMjAwMC0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbWVtb3J5L2luc3RyLmMsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS9kb3NleGUuaDoKCU1vdmVkIG1vc3QgZ2xvYmFsIGRhdGEgb3V0IG9mIHRoZSBMUERPU1RBU0sgc3RydWN0dXJlLgoJQWxsb2NhdGUgRFBNSSByZWFsLW1vZGUgc2VnbWVudHMgZ2xvYmFsbHkgYXQgc3RhcnR1cC4KCVRyeSB0byBhbGxvY2F0ZSBET1MgbWVtb3J5IGF0IGFkZHJlc3MgMC4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGRsbHMvdXNlci91c2VyLnNwZWM6CglDYWxsIFdIX0dFVE1FU1NBR0UgaG9vayBpbiBQZWVrTWVzc2FnZSB0b28gKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iCglGYXJudW0pLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTG9ja3MgdGhlIHZpcnR1YWwgdmlld3MgbGlua2VkIGxpc3QuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ha2UgY2FsbHMgdG8gZ2V0aG9zdGJ5bmFtZSwgZ2V0aG9zdGJ5YWRkciwgZ2V0c2VydmJ5bmFtZSwKCWdldHNlcnZieXBvcnQsIGdldHByb3RvYnluYW1lIGFuZCBnZXRwcm90b2J5bnVtYmVyIHRocmVhZC1zYWZlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGFwcHJvcHJpYXRlIGNoYXJzZXQgaWYgZmFjZW5hbWVzIG9mIGZvbnQgaXMga25vd24uCglVc2UgQ1BfQUNQIGlmIERFRkFVTFRfQ0hBUlNFVCBpcyByZXF1ZXN0ZWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUluIFdNX0RSQVdJVEVNLCBhbHdheXMgY2FsbHMgdGhlIGFwcCB3aXRoIGEgdmFsaWQgY3VycmVudCBmb2N1c19pdGVtLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2JyZWFrLmM6CglJbXByb3ZlZCBzdXBwb3J0IGZvciB2bTg2IG1vZGUuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyB3aGlsZSBpbiB2bTg2IG1vZGUuCglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIHZtODYgc3VwcG9ydC4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIG9iamVjdHMvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGZvcm1hdCBzdHJpbmdzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBzZXQgV1NfQ0hJTEQgYW5kIENDU19UT1AgdG8gdGhlIHRvb2xiYXIncyBzdHlsZS4KCVRPT0xCQVJfQ2FsY1Rvb2xiYXIoKTogaWYgdGhlIGJpdG1hcCBzaXplIGlzIDAsIHVzZSB0aGUgYnVpbHRpbgoJZGVmYXVsdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIHNpemUgb2YgdGhlIGNvbWN0bDMyIGludGVybmFsIGJpdG1hcHMgaXMgMjR4MjQgbm90IDI2eDI2LgoJRml4ZWQgbWlub3IgdHlwb3MuCgoJKiB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9SRUFETUUud3JjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaWxlbmFtZXMgbWF5IGNvbnRhaW4gJy8nIGFuZCAnXCcuCglTbWFsbCB0eXBvIGZpeGVzLgoKMjAwMC0wOS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglQYWludCBiYWNrZ3JvdW5kIGJlZm9yZSBkcmF3aW5nIGl0ZW0gYW5kIHN1Yml0ZW1zLiAgUGFpbnQgYW55IGFyZWEgb2YKCXRoZSBjb250cm9sIG5vdCBvY2N1cGllZCBieSBpdGVtcy4gIEVhcmx5IG91dCBvZiBMSVNUVklFV19SZWZyZXNoWFhYCglpZiBubyBpdGVtcyBleGlzdC4gSW52YWxpZGF0ZVJlY3QoKSBvbiBMQlVUVE9ORE9XTiBvbmx5IGlmIHRoZSBjb250cm9sCgloYXMgaXRlbXMgdG8gZHJhdy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIG1pc2MvbWFpbi5jLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2UgR2V0VGlja0NvdW50IG5vdCB1c2UgdGhlIHdob2xlIFVuaXggZXBvY2ggKHNpbmNlIDE5NzApIGFueSBtb3JlLAoJc2luY2UgdGhhdCBjcmFzaGVkIHNldmVyYWwgZ2FtZXMgb3IgY2F1c2VkIHByb2JsZW1zIHdpdGggdGhlbSBhcyB0aGV5CglhcmVuJ3QgdXNlZCB0byBhIGhpZ2ggV2luZG93cyB1cHRpbWUgb2YgbW9yZSB0aGFuIDI0LjkgZGF5cy4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCVJvYmVydG8gQXVndXN0byBQdW5nYXJ0bmlrIDxwdW5nQGthcmluYS5ldGNvbS51ZnJncy5icj4KCUFkZGVkIFNfSVNGSUZPIGNoZWNrIGZvciBTb2xhcmlzLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIG1hY3JvIGZvciBfZGVjbHNwZWMgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc3lub255bSBvZgoJX19kZWNsc3BlYykuCglSZW1vdmVkIHRoZSBkbGxpbXBvcnQgYW5kIGRsbGV4cG9ydCBtYWNyb3MuCgoJKiBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNdXN0IGluY2x1ZGUgJ3N0ZGxpYi5oJy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBIQU5ETEVfV01fTk9USUZZIGFuZCBGT1JXQVJEX1dNX05PVElGWS4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvcHNkbGcuaCwgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luZXBzL3dwc19Fbi5yYywgZGxscy93aW5lcHMvd3BzX3h4LnJjLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL01ha2VmaWxlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUGFwZXIgc2l6ZSBhbmQgb3JpZW50YXRpb24gcHJvcCBzaGVldCBmb3Igd2luZXBzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IERUX1BBVEhfRUxMSVBTSVMsIERUX0VORF9FTExJUFNJUywgYW5kIERUX1dPUkRfRUxMSVBTSVMKCWZsYWdzIGluIERyYXdUZXh0LgoKCSogbG9hZGVyL21vZHVsZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBXaW5FeGVjMTYgdG8gaGFuZGxlIHF1b3RlZCBmaWxlbmFtZXMgY29ycmVjdGx5LgoKCSogaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgZGxscy9vbGUzMi9lcnJvcmluZm8uYzoKCURhbXlhbiBPZ255YW5vZmYgPERhbXlhbkByb2NrZXRtYWlsLmNvbT4KCUlFcnJvckluZm8gaXMgbm93IGRlcml2ZWQgZnJvbSBJVW5rbm93bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHNvbWUgc2l0dWF0aW9ucyB3aXRoIGxpc3R2aWV3IHNlbGVjdGlvbnMuIFNwZWNpZmljYWxseSBmaXhlZAoJc2l0dWF0aW9ucyB3aGVyZSBpbiBhbiBPV05FUkRBVEEgbGlzdHZpZXcgdGhlIHNlbGVjdGlvbiByYW5nZXMgYmVjb21lCglpbnZhbGlkIGlmIHRoZSBudW1iZXIgb2YgaXRlbXMgaXMgY2hhbmdlZC4gQWRkaXRpb25hbCBmaXhlcyBhIGZldwoJcHJvYmxlbXMgcmVzdWx0aW5nIGluIGxvb3BzIGluIFJlbW92ZUFsbFNlbGVjdGlvbnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIG1hY3JvcywgdHlwZXMgYW5kIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL3dpbnJlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglOZXcgZmlsZS4gQWxsIFJDIGZpbGVzIGdlbmVyYXRlZCBieSBWQzYgaW5jbHVkZSBhZnhyZXMuaCB3aGljaCBpbiB0dXJuCglpbmNsdWRlcyB0aGlzIGZpbGUuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcsIHRyYWNlIGZpeGVzLgoKCSogbWVtb3J5L2Vudmlyb24uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFNldExhc3RFcnJvcigpIGluIEdldEVudmlyb25tZW50VmFyaWFibGVBLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCURhbXlhbiBPZ255YW5vZmYgPERhbXlhbkByb2NrZXRtYWlsLmNvbT4KCUFkZGVkIGVycm9yIGNvcnJlY3Rpb24gd2hlbiB1c2luZyBzeW1ib2wgb2Zmc2V0cy4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB2b2lsYS5mcj4KCUZpeGVkIHJlZW50cmFuY3kgaXNzdWVzIGluIHBsYXkvc3RvcCBvcGVyYXRpb25zLgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggUHJpbnREbGcgY29sbGF0ZSBpY29ucy4gIEFkZCBvcmllbnRhdGlvbiBpY29ucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHVicyBmb3Igc2hsd2FwaS4xNTEgYW5kIHNobHdhcGkuMTUzLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBmb3IgQ29Jc09sZTFDbGFzcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU2V0IGNsb3NlIG9uIGV4ZWMoKSBmbGFnIGF0IHRpbWVzIHdoZW4gd2UgbGVhdmUgL2Rldi9kc3AgYW5kCgkvZGV2L3NlcXVlbmNlciBvcGVuLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBGTEFUQlVUVE9OIHN0eWxlIHRhYnMuCglNYWRlIHdpZHRoIG9mIEJVVFRPTiBzdHlsZSB0YWJzIG5vIGxlc3MgdGhhbiAyeCB0aGVpciBoZWlnaHQuCglFeHBhbmRlZCBmb2N1cyByZWN0IHRvIGJlIGp1c3QgaW5zaWRlIHRoZSBib3JkZXIuCgoJKiBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkIEZJWE1FcyBmb3IgYWxsIHRoZXNlIG5pY2UgY29tcGxldGVseSB1bmltcGxlbWVudGVkIFRPT0xIRUxQCglmdW5jdGlvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCWZpeGVkIHRoZSB3aW45NSByZWdpc3RyeSBsb2FkZXIgdG8gaGF2ZSBzb21ld2hhdCBzdHJpY3RlciBjaGVja2luZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJ1dHRvbiBpbWFnZSB0byBiZSBvZmZzZXQgdG8gdGhlIGNlbnRlciBvZiB0aGUgYnV0dG9uIGhvcml6b250YWxseSwKCXZpc2libGUgd2l0aCBXaW5aaXAgYW5kIEN1dGVGVFAgNC4wLiAgRml4ZWQgY29tcGlsZSB3YXJuaW5ncyBmcm9tIGZvcm1hdCB0eXBlCglzcGVjaWZpZXJzIGluIHR3byBUUkFDRSdzLiAgUmVtb3ZlZCBUUkFDRSBpbiBUT09MQkFSX0dldEl0ZW1SZWN0KCkuICBBZGRlZAoJYnV0dG9uIHdpZHRoIHRvIFRSQUNFIGluIFRPT0xCQVJfQ2FsY1Rvb2xiYXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgUmVkcmF3V2luZG93KCkncyB0byBJbnZhbGlkYXRlUmVjdCgpJ3MuICBSZWRyYXdXaW5kb3coKSB3YXMKCWJlaW5nIGNhbGxlZCB3aXRoIFJEV19VUERBVEVOT1csIGZvcmNpbmcgaW1tZWRpYXRlIHBhaW50aW5nLiAgQWRkZWQKCXJlZHJhd2luZyBsb2dpYyB0byBTVEFUVVNCQVJfU2V0VGV4dFcoKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXggYmVoYXZpb3Igb2YgVFZTX1NJTkdMRUVYUEFORCBzdHlsZSBicm9rZW4gaW4gQ29yZWwgbWVyZ2UuICBPcHRpbWl6ZQoJcmVkcmF3aW5nIGluIFRSRUVWSUVXX1NldEl0ZW1BKCkgdG8gcmVkcmF3IG9ubHkgaWYgdGhlIGl0ZW0gY2hhbmdlcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJhaXNlZCBNQVhfRExMUyB0byAxMDAuCgoyMDAwLTA5LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93dHlwZXMuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBzb21lIG1pc3NpbmcgV0lORUxJQl9OQU1FX0FXIGRlZmluaXRpb25zLCB0eXBlcyBhbmQgbWVzc2FnZXMKCS0gU21hbGwgcHJvdG90eXBlIGZpeGVzCgoJKiByZWxheTMyL3Nub29wLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2F0Y2ggRVhDRVBUSU9OX1BSSVZfSU5TVFJVQ1RJT04gZXhjZXB0aW9uIHRvby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTm90aWZpY2F0aW9uIE5NX0NMSUNLLCBOTV9SQ0xJQ0sgYW5kIE5NX0RCTENMSyBzZW50IGJ5IHRoZSBsaXN0dmlldwoJc2hvdWxkIHNldCBsUGFyYW0gdG8gYSBOTUxJU1RWSUVXIGluc3RlYWQgb2YgYSBOTUhEUi4gQWNjb3JkaW5nIHRvCglNU0ROIGRvYywgaXQgaXMgbGlrZSB0aGF0IHNpbmNlIHZlcnNpb24gNC43MSwgV2luZSBpcyByZXR1cm5pbmcgNS4wIGFzCgl0aGUgRExMIHZlcnNpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHdpbmRvdyBsb2NrIHByb2JsZW0gaW4gU2V0TWVudSgpLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIZW5uaW5nIEhvZmZtYW5uCglBdm9pZCBkZWFkbG9ja3MgaW4gRW51bU1ldGFGaWxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkIGluZmluaXRlIGxvb3AgaWYgUXVlcnlQYXRoT2ZSZWdUeXBlTGliIGlzIGNhbGxlZCB3aXRoIGxjaWQ9MC4KCjIwMDAtMDktMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbW9kdWxlLmMsIG1lbW9yeS9pbnN0ci5jOgoJTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc3dpdGNoaW5nIHRvIHZtODYgbW9kZSB3aXRoIHByb3BlcgoJZXhjZXB0aW9uIGhhbmRsaW5nLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU1vdmVkIEZJTEVfZG9tbWFwKCkgdG8gbWVtb3J5L3ZpcnR1YWwuYyAoYW5kIHJlbmFtZWQgaXQgVklSVFVBTF9tbWFwKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglDaGFuZ2UgRklYTUUoIkJ1dHRvbiBzaXplIHNldCBhZnRlciBidXR0b24gaW4gdG9vbGJhclxuIikgaW4KCVNldEJ1dHRvblNpemUoKSB0byBXQVJOIGFzIHF1aXRlIGEgZmV3IGFwcGxpY2F0aW9ucyBhcmUgZG9pbmcgdGhpcwoJYWZ0ZXIgYWRkaW5nIGVhY2ggYnV0dG9uIHRvIHRoZSB0b29sYmFyIGFuZCB0aGVyZSBpcyBubyB3YXkgd2UgY2FuCglzdG9wIHRoZW0uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglSZW1vdmUgdW51c2VkIGxvY2FsIHZhcmlhYmxlIGluIERHQV9JRGlyZWN0RHJhd1N1cmZhY2U0SW1wbF9TZXRQYWxldHRlKCkuCgoJKiBtaXNjL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJLSByZW1vdmVkIHJlZHVuZGFudCBmdW5jdGlvbnMgQ09NTV9HZXQoUmVhZC9Xcml0ZSlGZAoJLSBjb3JyZWN0ZWQgdGhlIG5hbWUgb2YgMTZiaXQgZnVuY3Rpb25zIGluIGNvbW1lbnRzCgktIHJlbW92ZWQgdW51c2VkIHN0YXRpYyB2YXJpYWJsZQoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIHByZWZlciB3aW5laW5zdGFsbAoJLSBtZW50aW9uIGRlYnVnZ2VyIHNldHVwICh0ZW1wb3JhcnkpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGxvYmouaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJRml4ZWQgaW5jb3JyZWN0IGFyZyBjb3VudCBpbiBTSEdldFNldHRpbmdzIHRoYXQgY2F1c2VzIHdpbnppcDMyLmV4ZSB0bwoJcmVwb3J0IGFuIGVycm9yLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTb3J0aW5nIGl0ZW1zIGluIGEgbGlzdHZpZXcgdXNpbmcgTFZXX1NPUlRJVEVNUyBpcyBvbmx5IHNvcnRpbmcgdGhlIGl0ZW1zCglhbmQgbm90IHRoZSBzdWJpdGVtcy4gVGhpcyBwYXRjaCBmaXggdGhpcyBpc3N1ZS4gSSd2ZSByZW1vdmUgdGhlIHRlbXBvcmFyeQoJU29ydGxpc3QsIGl0IHdhcyBub3QgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhbm90aGVyIGxpc3QsIGFuZCBpdCB3YXMgYnVnZ3kuCgoyMDAwLTA5LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpZjE2MzIvdGh1bmsuYzoKCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW51c2VkIGZ1bmN0aW9ucyBpbiB0aGUgQ2FsbG91dCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIFNlbGVjdC9SZWFsaXplUGFsZXR0ZSBpbXBsZW1lbnRhdGlvbiB0byBVU0VSIGFuZCB1c2UKCXBmblNlbGVjdC9SZWFsaXplUGFsZXR0ZSBmdW5jdGlvbiBwb2ludGVycyBpbiBHREkuCglNYWtlIHN1cmUgdGhlIHBhbGV0dGUgaGFuZGxlIGlzIHZhbGlkIGluIEdESVNlbGVjdFBhbGV0dGUxNiAodGhhbmtzIHRvCglVd2UgQm9ubmVzKS4KCgkqIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBTZXRDb21tTWFzaywgU2V0Q29tbVRpbWVvdXRzLCBHZXRDb21tTWFzaywgR2V0Q29tbVRpbWVvdXRzLgoKCSogZGxscy93aW5lcHMvb2JqZWN0cy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3Igbm9uLWRlbGV0YWJsZSBzeXN0ZW0gYnJ1c2hlcyBhbmQgcGVucyBjcmVhdGVkIGJ5CglVU0VSLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJSm9obiBHaWxtb3JlIDxnbnVAdG9hZC5jb20+CglDbGVhbmVkIGl0IHVwIHNvIHRoYXQgY29kZSBwYXRocyB3aGljaCBoYXZlIHVuc3VwcG9ydGVkIFdTX1NPIHZhbHVlcwoJbmV2ZXIgYWN0dWFsbHkgcGFzcyB0aGVtIHRvIFVuaXggc3lzdGVtIGNhbGxzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFZpcnR1YWxBbGxvY0V4LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgR2V0VGltZVpvbmVJbmZvcm1hdGlvbiBhbmQgVElNRV9aT05FX0lEX0lOVkFMSUQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdGFiIGNvbnRyb2wgdG8gdXNlIEhUVFJBTlNQQVJFTlQgd2hlbiBtb3VzZSBoaXRzIGNsaWVudCBhcmVhLAoJYnV0IG5vdCB0YWIgY29udHJvbCBidXR0b25zLgoKCSogbWlzYy9jZHJvbS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTaWxlbmNlIHNvbWUgYm9ndXMgZXJyb3IgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRqdXN0ZWQgdG8gYWxsb3cgTUZDIGNvbXBpbGF0aW9uOyBwcmV2ZW50IGRlZmluaXRpb24gb2Ygc3RydWN0IGZkX3NldAoJd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlIGZkX3NldCB0eXBlZGVmLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBQV05EQ0xBU1MgZGVmaW5pdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQWxsb3cgaGF2aW5nIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCB0ZXh0IGNvbG9yIGZvciB0aGUgbGlzdHZpZXcuCgoJKiBvbGUvb2xlMm5scy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSB0aGUgc3lzdGVtIGxvY2FsIHRpbWUgaWYgbHBUaW1lPU5VTEwuCgoyMDAwLTA5LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXBkYXRlIEVTUCBjb3JyZWN0bHkgb24gcmV0dXJuIGZyb20gZmxhdCB0aHVuayByb3V0aW5lcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgQ2FsbFRvMTZSZWdpc3RlciByb3V0aW5lcyB0byB1cGRhdGUgcmVnaXN0ZXIgY29udGV4dCBhZnRlcgoJY2FsbCByZXR1cm5zLiBDYWxsZXJzIGFkYXB0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIFN0ciogcHJvdG90eXBlcyB0byBzaGx3YXBpLmguCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglNZXJnZWQgbWFpbiBXaW5lIGNoYW5nZXMgaW50byBDb3JlbCdzIHRyZWV2aWV3IGNvbnRyb2wgcmV3cml0dGVuIGJ5CglTZXJnZSBJdmFub3YgYW5kIEFuZHJldyBMZXd5Y2t5LiAgRml4ZWQgaXRlbSBmb2N1cyBiZWhhdmlvciB0byBtYXRjaAoJV2luZG93cy4gIEZpeGVkIGl0ZW0gc2VsZWN0aW9uIHdoZW4gdW4vZXhwYW5kaW5nIGl0ZW1zLiAgSW1wbGVtZW50ZWQKCVdNX1NFVFJFRFJBVy4gIEFkZGVkIENvcmVsJ3MgQ09NQ1RMMzJfQ3JlYXRlVG9vbFRpcCgpIGhlbHBlciBmdW5jdGlvbgoJdG8gY29tbWN0cmwuYy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgY29udHJvbHMvYnV0dG9uLmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCShNZXJnZWQgYnkgTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+KQoJRml4ZWQgcHJvYmxlbSB3aXRoIG9yaWdpbiBmb3IgRFNUX0NPTVBMRVggc3R5bGUuCglGaXhlZCBoYW5kbGluZyBvZiBEU1NfRElTQUJMRUQgYW5kIERTU19ERUZBVUxUIHN0eWxlcy4KCglBZGRlZCBoYW5kbGluZyBvZiBCU19NVUxUSUxJTkUgc3R5bGUsIGxhYmVsIGFsaWdubWVudAoJc3R5bGVzIChCU19SSUdIVCwgZXRjLikgYW5kIHNvbWUgZXhvdGljIHN0eWxlcyBCU19GTEFUIChvbmx5CglwdXNoYnV0dG9ucyBmb3Igbm93KSwgYW5kIEJTX1BVU0hMSUtFLgoKCU1vZGlmaWVkIGxhYmVsIGRyYXdpbmcgcHJvY2VkdXJlOiBub3cgYWxsIGtpbmRzIG9mIGJ1dHRvbnMKCXVzZSBjb21tb24gQlVUVE9OX0RyYXdMYWJlbCBmdW5jdGlvbi4gQWN0dWFsIGxhYmVsIGRyYXdpbmcgaXMKCXBlcmZvcm1lZCBieSBEcmF3U3RhdGVXIGZ1bmN0aW9uLgoKCUdyb3VwQm94IG11c3QgdXNlIFdNX0NUTENPTE9SU1RBVElDIGluc3RlYWQgb2YgV01fQ1RMQ09MT1JCVE4gbWVzc2FnZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZ3JhZGUgYWxzbyAxNWJwcCB0byAxNmJwcCBzdXJmYWNlcy4KCjIwMDAtMDktMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJS0RFIDEueCBoYXMgcHJvYmxlbXMgd2l0aCB1c2luZyBYU2hhcGVDb21iaW5lTWFzayB3aGVuIHRoZXJlIHdhcyBubwoJcHJldmlvdXMgcmVnaW9uLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldFNjcm9sbEluZm8gOiBkb24ndCBzaG93L2hpZGUgc2Nyb2xsYmFyIGlmIG5vIHBhcmFtZXRlciAobWludmFsLAoJbWF4dmFsKSBjaGFuZ2UuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJQWRkZWQgbWlzc2luZyBfX3ZvbGF0aWxlX18uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2dkaS9nZGkuc3BlYywgZmlsZXMvZmlsZS5jLCBtaXNjL21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90YWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gZml4ZXMgZGVidWdnZXIgb3V0cHV0CgktIGdldCByaWQgb2Ygd3JvbmcgY29tbWVudHMKCS0gZml4IGNvbW1lbnRzCgktIC5zcGVjIHNwZWxsaW5nIGZpeAoJLSBpbXByb3ZlIHdhcm5pbmcgbWVzc2FnZQoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvdGltZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJImltcGxlbWVudGVkIiBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudC4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyeSB0byBkZWxldGUgYSB3bmRjbGFzcyBiYWNrZ3JvdW5kIGJydXNoIGlmIGl0J3MgYSBDT0xPUl8qCgljb25zdGFudC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCU1ha2Ugc3VyZSBOQ19IYW5kbGVOQ0NhbGNTaXplIHJldHVybnMgYSB2YWxpZCByZWN0YW5nbGUuCglQYWludGluZyBmYWlscyBpZiB0aGUgcmVjdGFuZ2xlIGlzIGludmFsaWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUhpZGUgdGhlIHZlcnRpY2FsIHNjcm9sbGJhciB3aGVuIGxpc3R2aWV3IHN0eWxlIGlzIExWU19MSVNULgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGQgV01fVVNFUkNIQU5HRUQuCgoJKiBkZWJ1Z2dlci9pbmZvLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGluY2x1ZGUvdGxoZWxwMzIuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSB0cFhYWCBpbnN0ZWFkIG9mIHRiWFhYIGluIHRhZ1RIUkVBREVOVFJZMzIuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCBER0EgLyBER0EgMiBwYWxldHRlIGNyZWF0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IGEgbWVtb3J5IGxlYWsgaW4gWDExRFJWX0dldFRleHRFeHRlbnRQb2ludC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wOS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUFkZGVkIFdJTkVTRVJWRVIgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYWxsb3cgb3ZlcnJpZGluZyB0aGUgbm9ybWFsCglzZXJ2ZXIgc2VhcmNoIHNlcXVlbmNlLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglSZW1vdmVkIGNoZGlyKCIvIikgdW50aWwgd2UgaGF2ZSBwcm9wZXIgVW5peCBjd2QgbWFuYWdlbWVudC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglJbXBsZW1lbnRlZCBSdGxwV2FpdEZvckNyaXRpY2FsU2VjdGlvbiBhbmQgUnRscFVuV2FpdENyaXRpY2FsU2VjdGlvbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIE5FX0xvYWRFeGVIZWFkZXIgZXJyb3IgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRlciAtIGJyb2tlbiBzZWFyY2ggZm9yIGFscmVhZHkgbG9hZGVkIG1vZHVsZXMuCgoJKiBvYmplY3RzL2RpYi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmYWxsYmFjayBjb2RlIGZvciBTdHJldGNoQmx0IG9uIFJMRSBESUJzIHdpdGggZ2Fwcy4KCjIwMDAtMDktMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWw6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGJkZnRvcGNmIGNvbW1hbmQuCgoJKiBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3N0cmVhbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAqRmlsdGVyKiBmdW5jdGlvbnMuCglNaXNjIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFRDTV9HRVRST1dDT1VOVC4KCgkqIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBtaXNzaW5nIGxpYnJhcnkgZGVwZW5kZW5jaWVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jZ3VpZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIGNndWlkLmguCgoJKiBkbGxzL2RkcmF3L2RnYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCBzdXBwb3J0IERHQSB3aGVuIERpcmVjdFZpZGVvIG5vdCBwcmVzZW50LgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJVW5pZnkgV01fU0VUVEVYVCBoYW5kbGluZyBhbW9uZyBEZWZXaW5kb3dQcm9jMTYvRGVmV2luZG93UHJvY0EvRGVmV2luZG93UHJvY1cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUF2b2lkIGRpdmlkZSBieSB6ZXJvIHdoZW4gbGlzdGJveCBzZXQgdG8gemVybyBoZWlnaHQuCgoJKiB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglTaW1wbGlmeSBhIGJpdCBNREkgY2hpbGQgd2luZG93IGNyZWF0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglHZXRNZW51IG1pZ2h0IGJlIHVzZWQgdG8gZ2V0IGNoaWxkIHdpbmRvdyBpZC4KCjIwMDAtMDktMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJR2lvdmFubmkgUGFuY290dGkgPGdpb3Zhbm5pLnBhbmNvdHRpQGNlZGVjcmEuaXQ+CglJdGFsaWFuIGtleWJvYXJkIGZpeGVzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURPU0ZTX01hdGNoTG9uZyBpZ25vcmVkIHNldmVyYWwgdGhpbmdzIGFib3V0IGZpbGUgbWFzayBtYXRjaGluZyBmb3IKCWxvbmcgZmlsZSBuYW1lcy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglFcmlrIEhvZm1hbiA8ZXJpay5ob2ZtYW5AYTEubmw+CglBZGRlZCBtaXNzaW5nIGNvbnN0IHRvIGV4dGVybmFsIHRhYmxlcyBkZWZpbml0aW9ucy4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2NvbW0uaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9jb21tLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkZWQgc2VyaWFsIHBvcnQgb2JqZWN0IHRvIHRoZSBzZXJ2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIE1ha2Ugc3VyZSB0b29sdGlwcyBhcmUgaGlkZGVuIGJlZm9yZSBkZWxldGluZyB0aGVtLgoJLSBHbGl0Y2ggaGFwcGVuZWQgd2hpbGUgbW92aW5nIGZyb20gYSB0b29sdGlwIHRvIGFub3RoZXIgKGZpeGVkKS4KCgkqIG9iamVjdHMvZGMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIEdldERldmljZUNhcHMxNiAoaGRjLCBOVU1DT0xPUlMpIG5vdCByZXR1cm4gLTEgZm9yIDE2IGJpdHMgcHJvZ3JhbXMuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdXBwb3J0IGZvciBjcDk0OS4KCjIwMDAtMDktMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvYXRvbS5jOiBGaXhlZCBjdXQmcGFzdGUgdHlwby4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3h2aWRlby5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3h2aWRlby5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIHVzZSBYVmlkZW8uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBib3RoIGN1c3RvbWRyYXcgbWVzc2FnZSBzZW5kaW5nIGFuZCBoYW5kbGluZyAoYmFzZWQgb2ZmCgl0aGUgdHJlZXZpZXcgbWV0aG9kKSBhcyB3ZWxsIGFzIExWU19PV05FUkRSQVdGSVhFRC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglGaXhlZCBhIGJ1ZyAoaW5jb3JyZWN0IHNpemUgaW4gbWVtbW92ZSkgdGhhdCBJIGludHJvZHVjZWQgd2l0aCBhbgoJZWFybGllciBwYXRjaC4gVGVzdGVkIHdpdGggd29yZHZpZXcuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCVBoaWwgQ29sZSA8dWtwZ2NAcC5jb2xlLmVhc3luZXQuY28udWs+CglBZGRlZCB0d28gZGlyZWN0b3JpZXMgdG8gZGVmYXVsdCBub24td2luZG93cyBpbnN0YWxsLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIG5ld2VyIChBU1BJIDMuMCA/KSBmdW5jdGlvbiBzdHVicyB0byBXTkFTUEkzMi4KCUJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTeXN0cmF5IHNob3VsZCBrZWVwIGEgY29weSBvZiBpdHMgaWNvbnMuCgoJKiBzZXJ2ZXIvc29jay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkYXB0ZWQgV2luc29jayB0byBMaW51eCAyLjQgVENQIHNvY2tldCBwb2xsKCkgYmVoYXZpb3VyCgkodGhhbmtzIHRvIEJlcmVuZCBPemNlcmkgZm9yIGZpbmRpbmcgdGhlIHByb2JsZW0pLgoKCSogd2luZG93cy9tZGkuYzogU2VyZ2UgSXZhbm92CglEZWxheSBkZXN0cm95aW5nIG1lbnUgZW50cnkgdW50aWwgYWxsIG1lc3NhZ2VzIGFyZSBzZW50LgoKMjAwMC0wOS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9hdG9tLmM6CglGaXhlZCBVbmljb2RlIGNvbnZlcnNpb24gaW4gR2V0QXRvbU5hbWVBICh0aGFua3MgdG8gR2VyYXJkIFBhdGVsKS4KCgkqIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZCBqaXN4MDIxMiBlbmNvZGluZy4KCVJlbW92ZSBGSVhNRXMgZm9yIGltcGxlbWVudGVkIERCQ1MgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBtaXNzaW5nIGNvbW1hLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVJld3JvdGUgcXVpY2tzb3J0IHRvIHNvbHZlIGluZmluaXRlIHJlY3Vyc2lvbnMgV2luOTggZXhwbG9yZXIuZXhlLgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlIHh0ZXJtIG1vdXNlIHRyYWNraW5nIG1vZGUgdG8gQlROX0VWRU5UX01PVVNFICh0cmFjayBpZiBwcmVzc2VkKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBdm9pZCBjcmFzaCBvbiBlbXB0eSBjb21tYW5kLWxpbmUuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCB0d28gbWlzc2luZyBjYXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJVXNlIFNldERJQml0cyBpbnN0ZWFkIG9mIFN0cmV0Y2hESUJpdHMgKGluIEFOSU1BVEVfUGFpbnRGcmFtZSkuCgoyMDAwLTA5LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2J1aWx0aW4uYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUF2b2lkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYnVpbHRpbiBkbGwgbG9hZGluZyAod2l0aCB0aGUgaGVscCBvZiBEbWl0cnkKCVRpbW9zaGtvdikuCgoJKiB3aW5kb3dzL21kaS5jOiBIZW5uaW5nIEhvZmZtYW5uCglBdWdtZW50IG1lbnUgd2hlbiBhIG1kaSB3aW5kb3cgc3RhcnRzIG1heGltaXplZC4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jaXMgQmVhdWRldAoJTURJIFBhdGNoIHdoaWNoIGZpeGVzIHByb2JsZW1zIGluIFBSLCBRUCwgV1AgYW5kIFBhcmFkb3guCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEb24ndCB1c2UgY29waWVzIG9mIGNyaXRpY2FsIHNlY3Rpb25zIG1hZGUgYnkgbWVtY3B5KCkKCUFkZGVkIG1pc3NpbmcgV0lOQVBJcwoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvd2luZWRiZy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXggZm9yIGRlYnVnZ2VyIGRpc2Fzc2VtYmx5IGJlaW5nIG9mZiBieSBvbmUgYnl0ZSBhZnRlciB1c2luZyBuZXh0aQoJb24gYSAiY2FsbCIgaW5zdHJ1Y3Rpb24uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gY2hlY2tpbmcgdGhlIHNvY2tldCByZXR1cm4gYnkgdGhlIHNlcnZlciByZXF1ZXN0LCB3ZSBzaG91bGQgZG8gYQoJInNpZ25lZCIgY2hlY2suCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgQ29HZXRQU0Nsc2lkKCkuCgoyMDAwLTA4LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWNvbmY6CglQaGlsIENvbGUgPHVrcGdjQHAuY29sZS5lYXN5bmV0LmNvLnVrPgoJVGhlIFBhdGggdmFyaWFibGUgaW4gdGhlIGNyZWF0ZWQgLndpbmVyYyBtdXN0IGJlIGluIGRvcyBmb3JtYXQuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCVBoaWwgQ29sZSA8dWtwZ2NAcC5jb2xlLmVhc3luZXQuY28udWs+CglTbWFsbCBmaXguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIHN0cmluZyBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCS0gaW1wcm92ZWQgQUNTX1RSQU5TUEFSRU5UIGFuZCBBQ1NfQ0VOVEVSIHN1cHBvcnQKCS0gYWRkZWQgUkxFOCBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uCgktIGVhY2ggYW5pbWF0aW9uIGlzIG5vdyBjb250cm9sbGVkIGJ5IGl0cyBvd24gV2luZG93cyB0aHJlYWQKCS0gYWRkZWQgdXNlIG9mIENyaXRpY2FsIFNlY3Rpb25zIGluIHRoZSBXTV9QQUlOVCBoYW5kbGVyLgoKCSogd2luMzIvY29uc29sZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxhY2VkIFVTRVIzMi5ETEwgdXNlIGJ5IGhhcmRjb2RlZCB0YWJsZXMgZm9yIFZrS2V5U2NhbkEgYW5kCglNYXBWaXJ0dWFsS2V5QS4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY29tbS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDb252ZXJ0ZWQgYSBsb3Qgb2Ygc2VydmVyIHJlcXVlc3RzIHRvIHRoZSBuZXcgZXhjZXB0aW9uIGhhbmRsaW5nCgltZWNoYW5pc20uCgoyMDAwLTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUZpeGVkIG5vbi1PcGVuR0wgY29tcGlsZS4KCgkqIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9yZWdpc3RyeS5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL2F0b20uYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3N5bmMuYzoKCUFkZGVkIGV4Y2VwdGlvbiBoYW5kbGluZyB3cmFwcGVyIHRvIGEgbnVtYmVyIG9mIHNlcnZlciByZXF1ZXN0cy4KCUNoYW5nZWQgYSBmZXcgcmVxdWVzdHMgdG8gdXNlIHRoZSBuZXcgdmFyYXJnIG1lY2hhbmlzbS4KCjIwMDAtMDgtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgbWlzYy9jZHJvbS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdmVyYm9zZSBDRC1ST00gc2VyaWFsIG51bWJlciB3YXJuaW5ncyBhbmQgc29tZSBzcGVsbGluZyBlcnJvcnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCU5ld2JpZSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGZvciAzRCBjcmVhdGlvbiBmYWlsdXJlLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNb3JlIGltcGxlbWVudGF0aW9uCgktIFNob3VsZCBiZSBhYmxlIHRvIGVudW1lcmF0ZSBzZXNzaW9ucyBhbnl3aGVyZSB3aXRoIGF0IGxlYXN0IHRjcC9pcAoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIG1hY3JvcyB0aGF0IHdpbGwgYmUgbmVlZGVkIHRvIHN1cHBvcnQKCXJlZW50cmFudCBzZXJ2ZXIgcmVxdWVzdHMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL2lucHV0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGZpeCBvbmUgbG9ja2luZyBpZ25vcmFudCByZXR1cm4gMDsgaW4gTVNHX1NlbmRNZXNzYWdlSW50ZXJUaHJlYWQoKQoJLSBmaXggYSBjcmFzaCBpbiBRVUVVRV9SZW1vdmVTTVNHKCkKCS0gY29udmVydCBzb21lIHF1ZXVlIFdBUk4oKSB0byBFUlIoKQoJLSBzcGFpbGVuZyBmaWtzZXMKCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWx3YXlzIGNhbGwgTElTVFZJRVdfU2V0U2VsZWN0aW9uKCkgZm9yIGFuIGl0ZW0sIGV2ZW4gaWYgdGhhdCBpdGVtCgloYXMgYmVlbiBzZWxlY3RlZCBiZWZvcmUsIGluIG9yZGVyIHRvIGxldCBvdGhlciBpdGVtcyBnZXQgZXJhc2VkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglDb252ZXJ0IHRoZSBVbmljb2RlIENoYXJhY3RlciBpZCB0byBhIGdseXBoIGlkIGluCglYMTFEUlZfR2V0VGV4dEV4dGVudFBvaW50LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJLSBlbmhhbmNlZCByZXBvcnRpbmcgb2YgdW5zdXBwb3J0ZWQgWCBmb250IGVuY29kaW5ncwoJLSBhZGRlZCAtY3AtKi0gZGF0YSB0byBmb250IGVuY29kaW5nIGxvb2t1cCBzdHJ1Y3R1cmVzCgoyMDAwLTA4LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9vcHRpb25zLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CgktIEFsd2F5cyBzdG9yZSB0aGUgZnVsbCBwYXRoIG5hbWUgb2YgMzJiaXQgbW9kdWxlcyBpbiBXSU5FX01PRFJFRgoJLSBBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSBwYXRoIG5hbWVzIHdpdGggdGhlIC0tZGxsIGNvbW1hbmQgbGluZQoJICBvcHRpb24KCS0gQWRkIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgdGhlIC0tZGxsIGNvbW1hbmQgbGluZSBvcHRpb24gc2V2ZXJhbAoJICB0aW1lcy4KCS0gTm90ZTogVGhlIGNvbG9uLXNpZ24gaXMgbm93IGV4Y2hhbmdlZCB3aXRoIHRoZSBwbHVzLXNpZ24sIGFzIGl0IGlzCgkgIHBhcnQgb2YgZG9zIHBhdGggbmFtZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGEgd2luZSBycG0gdW5pbnN0YWxsIHNlY3Rpb24gdG8gd2luZWluc3RhbGwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglEbyBub3QgY2hlY2sgZm9yIHN5c3RlbSBtZW51IGlmIHRoZSB3aW5kb3cgaGFzIHN0eWxlIFdTX0VYX1RPT0xfV0lORE9XLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBBUkdCIDE1NTUgZm9ybWF0CgktIGZpeGVkIHJlZmNvdW50IHByb2JsZW0gZm9yIEFkZC9EZWxldGVBdHRhY2hlZFN1cmZhY2UKCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCUZpeGVkIHR5cG8gaW4gSEtFWV9DVVJSRU5UX0NPTkZJRyBuYW1lLgoKCSogZGxscy9rZXJuZWwvbWVzc2FnZXMvd2luZXJyX2VudS5tYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIG1pc3NpbmcgbWVzc2FnZSB0byB3aW5lcnJfZW51Lm1jLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW5jcmVhc2UgbnVtYmVyIG9mIHN1cHBvcnRlZCBhcmdzIGZvciBXT1dfQ2FsbFByb2MzMlcxNiBmcm9tIDExIHRvIDEzCgkoZm9yIENyZWF0ZVNlcnZpY2UpLgoKCSogZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIG1zZG9zL3Z4ZC5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglTdHViIHN1cHBvcnQgZm9yIGludDJmL2F4PTE2ODQvYng9MDAyNyAoVlhETERSKS4KCjIwMDAtMDgtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGxvYWRlci90YXNrLmM6CglSZW1vdmVkIGNhbGxzIHRvIENvbnZlcnRUb0dsb2JhbEhhbmRsZSBhbmQgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbC4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvbnRkZGsuaDoKCVNpbXBsaWZpZWQgcm9vdCBrZXkgaGFuZGxpbmcgbm93IHRoYXQgdGhlIHNlcnZlciBzdXBwb3J0cyBhIHJlYWwgcm9vdAoJa2V5LiBGaXhlZCBhIGZldyBwcm90b3R5cGVzLiBJbXBsZW1lbnRlZCBOdERlbGV0ZUtleS9OdERlbGV0ZVZhbHVlS2V5LgoKCSogZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oOgoJRml4ZWQgZGVidWdzdHJfYXMvdXMgcHJvdG90eXBlcy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9jb21tLmMsIG1pc2MvZXh0X2RlYnVnZ2VyLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCBjb25zb2xlL3h0ZXJtLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgZGxscy93aW5pbmV0L2Z0cC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBtYWRlIHRoZSBNSURJIHNlcXVlbmNlciBlcnJvciBtZXNzYWdlIG11Y2ggYmV0dGVyIGZvciBjb25mdXNlZCB1c2VycwoJICB0byBiZSBmb3VuZCBvbiAjV2luZUhRCgktIHVzZSBzdHJlcnJvciBpbnN0ZWFkIG9mIGVycm5vIGF0IGltcG9ydGFudCBwbGFjZXMKCS0gZ290IHJpZCBvZiBIQVZFX1NUUkVSUk9SIG1hY3JvCgktIHJlbW92ZWQgc29tZSAjaW5jbHVkZTpzIChob3BlZnVsbHkgSSBkaWRuJ3QgYnJlYWsgYW55dGhpbmcpCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUmVwbGFjZWQgY0N1ckltYWdlIGJ5IGNNYXhJbWFnZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgkiRml4ZWQiIGhvcnJpYmx5IG1pc2FsaWduZWQgcGFnZXMgaW4gcHJvcGVydHkgc2hlZXRzIG9mIGFwcGFyZW50bHkKCW5ld2VyIEluc3RhbGxTaGllbGRzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZWdpc3RlciBXaW5lIFBvc3RzY3JpcHQgRHJpdmVyIGFzICJXSU5FUFMiLCAiV0lORVBTLkRMTCIgYW5kCgkiV0lORVBTLkRSViIgdG8gYWxsb3cgYW4gZWFzeSBjb25maWd1cmluZyBmb3IgdXNlcnMuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CgkgIGltcGxlbWVudHMgRHJhd1RleHQgZm9yIGNwOTMyLgoKCSogZGxscy91c2VyL2RkZW1sLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb24ndCBtYWtlIERERU1MIG11dGV4ZXMgZ2xvYmFsIGFueSBtb3JlLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuaDoKCUFkZGVkIGEgcmVhbCByb290IGtleSBhbmQgc2ltcGxpZmllZCBjcmVhdGlvbiBvZiB0aGUgSEtFWV8qIHNwZWNpYWwgcm9vdCBrZXlzLgoJRG8gbm90IHByZWZpeCBhbGwga2V5cyB3aXRoIHRoZSBuYW1lIG9mIHRoZSB0b3Aga2V5IHdoZW4gc2F2aW5nIHRvIGEgZmlsZS4KCVRyeSB0byBsb2FkICRXSU5FUFJFRklYL2NvbmZpZyBpbnRvIHRoZSBXaW5lIGNvbmZpZyBicmFuY2ggYXQgc3RhcnR1cC4KCgkqIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc2FjbS93aW5lYWNtLmgsIGluY2x1ZGUvbXNhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgbW9zdCBvZiAnKkZvcm1hdConIEFQSS4KCUltcHJvdmVkIGludGVybmFsIG9iamVjdCBhbmQgbWVzc2FnZXMgaGFuZGxpbmcuCglTdGFydGVkIHNvbWUgJypGaWx0ZXIqJyBmdW5jdGlvbnMuCglGaXhlZCBzdGFuZGFyZCBoZWFkZXJzIGZvciBXaW5lbGliLgoJRml4ZWQgYWNtTWV0cmljcy4KCjIwMDAtMDgtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvbnRkZGsuaDoKCUZpeGVkIFJ0bCogc3RyaW5nIGZ1bmN0aW9ucyBmb3IgcHJvcGVyIE1CQ1MvY29kZXBhZ2Ugc3VwcG9ydC4gQWRkZWQgYQoJZmV3IG1vcmUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIFRBU0tfQ3JlYXRlIGNhbGwgdG8gS0VSTkVMIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUuCglDbGVhciBsYXN0IGVycm9yIGNvZGUgYmVmb3JlIGNhbGxpbmcgbWFpbiBlbnRyeSBwb2ludCAocmVwb3J0ZWQgYnkKCUphbWVzIEp1cmFuKS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBtZW1vcnkvc3RyaW5nLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBXSU5BUEkgaXNzdWVzIHdpdGggMTYtYml0IHNwZWMgZmlsZXMgKHRoYW5rcyB0bwoJTWFyY3VzIE1laXNzbmVyKS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaCwgaW5jbHVkZS9kcGxheS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9ndWlkLmMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGluaXQuaCwgZGxscy9kcGxheXgvZHBsYXkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEltcGxlbWVudGVkIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIG9mIHNlcnZpY2UgcHJvdmlkZXJzCgktIENyZWF0ZWQgc2VydmljZSBwcm92aWRlciBDT00gb2JqZWN0CgktIExvdHMgb2YgZHBsYXkvZHBsb2JieSBpbXBsZW1lbnRhdGlvbi9maXhlcwoJLSBDbGVhbiB1cCBvZiBvbGUvZ3VpZC5jCgoJKiBvYmplY3RzL2RjLmM6IEJhY2tlZCBvdXQgZm9udCBjb2RlcGFnZSBjaGFuZ2UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbWlzYy9jb21tLmMsIG1pc2MvdmVyc2lvbi5jLCBtc2Rvcy9pbnQyZi5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1pbm9yIGNvc21ldGljIGNoYW5nZXMuCgoJKiBtaXNjL3R3ZWFrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNsZWFudXAgYW5kIHNwZWVkdXAgb2YgaW5pdCBjb2RlLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVzdG9yZWQgdGhlIGhQc2V1ZG9CaXRtYXAgaGFjayBmb3IgcHJvZ3JhbXMgZGVsZXRpbmcgdGhlIDF4MSBiaXRtYXAKCWluIG1lbW9yeSBEQ3MuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJQmFja2VkIG91dCBmb250IGNvZGVwYWdlIGNoYW5nZS4KCgkqIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIGRpc3BsYXlpbmcgb2YgdGhlIEZPVVJDQyBjb2RlcyBpbiBfZHVtcF9waXhlbGZvcm1hdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWNvcmRpbmcgZm9ybWF0IHNldHRpbmdzICgxNiBiaXQgd2FzIGJyb2tlbikgYW5kIHJlZW50cmFuY3kKCWlzc3Vlcy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgYSBiaXQgdGhlIGZvbGRlciBicm93c2luZyBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJTWF0dGhldyBMYWtlIDxNYXN0ZXJSX0xAeWFob28uY29tPgoJQWRkZWQgTEhORC4KCgkqIHRvb2xzL3dyYy8uY3ZzaWdub3JlLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CglGaXhlZCBhIExBTFIoMikgcHJvYmxlbSB3aGlsZSBzY2FubmluZyB1c2VydHlwZSByZXNvdXJjZXMgd2hpY2ggaGFkCglpZGVudGlmaWVycyBmb3IgYm90aCBuYW1lIGFuZCB0eXBlLgoKCSogbWlzYy93c3ByaW50Zi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVVzZSBpbnQgaW5zdGVhZCBvZiBDSEFSL1dDSEFSIGluIHZhX2FyZygpIChmaXhlcyBnY2MtY3VycmVudCBjb21waWxlCglwcm9ibGVtKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoYW5nZSBwaXhlbCBmb3JtYXQgZm9yIDI0IEJQUCBzdXJmYWNlcyB3aGVuIHRoZSBERHJhdyBCUFAgaXMgMzIuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR2V0T2JqZWN0QTogdW5sb2NrIHRoZSBvYmplY3QgYWdhaW4gZXZlbiBpbiBjYXNlIG9mIGZhaWx1cmUuCgoyMDAwLTA4LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJRml4ZWQgZmluYWxseSBoYW5kbGVyIG5hbWUuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglGaXhlZCBSZWdpc3RlckNsYXNzIGxhc3QgZXJyb3IgY29kZSBvbiBhdG9tIGNyZWF0aW9uIGZhaWx1cmUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUNsZWFuZWQgdXAgbWFqb3IgdWdsaW5lc3MgaW4gX19sZkNoZWNrU3VtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxhcmdlIGNhcHRpb24gaWNvbnMgc2hvdWxkIGVuZCBpbiAnLi4uJyB3aGVuIHRoZXkgYXJlIGFiYnJldmlhdGVkLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCUZvciB0aGUgdHJhbnNwYXJlbmN5IGlzc3VlLCBpbXBsZW1lbnRlZCBhIHN3aXRjaC1jYXNlIGZvciB0aGUgYml0Y291bnQKCShiaXQgcGVyIHBpeGVsKSBvZiB0aGUgYW5pbWF0aW9uIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmUgd2FzIG5vdCBkcmF3aW5nIHRyYWNrYmFycyB3aXRoIG1pbmltdW0gcmFuZ2VzIG9mIG1vcmUgdGhhbiAwCgljb3JyZWN0bHkuCgoyMDAwLTA4LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIHJlbW92ZWQgdW5uZWNlc3NhcnkgcmVjdXJzaW9uCgktIHVwb24gcXVlcnkgZmFpbHVyZSBvbiBtYWluIHByaW1hcnkgbGNpZCBhbmQgc2Vjb25kYXJ5IGxjaWQsCgkgIGF0dGVtcHRzIGEgcXVlcnkgb24gc3lzdGVtIGxjaWQgKDApCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgaWYxNjMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVzIGZvciByZWFkaW5nIGxhdGNoZWQgdmFsdWVzIHdpdGggcG9ydHMgMHg0MC0weDQzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURvbid0IGNyYXNoIHdoZW4gY2FsbGluZyBEaXJlY3REcmF3U3VyZmFjZTo6RW51bUF0dGFjaGVkU3VyZmFjZXMgb24gYQoJc3VyZmFjZSB3aXRoIG5vIGF0dGFjaGVkIHN1cmZhY2VzLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBbGxvdyBGb3JtYXRNZXNzYWdlIHRvIGxvYWQgVW5pY29kZSBzdHJpbmcgcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgQVBDIHN1cHBvcnQgaW4gd2FpdGFibGUgdGltZXJzLgoKCSogZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbHMgdG8gQ0xJUFBJTkdfVXBkYXRlR0NSZWdpb24uIEZpeGVkIFBhdEJsdCB0bwoJdXNlIERDX0dldERDVXBkYXRlLgoKMjAwMC0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMDgyMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBkb24ndCByZXR1cm4gRkFMU0UgZm9yIHN5c3RlbSBwcm9jZXNzIGNoYW5nZXMKCS0gU0hVVERPV05fTk9SRVRSWSBpcyAxIGFuZCBoYXMgdG8gYmUgaW4gd2luYmFzZS5oCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmVnaW5uaW5nIG9mIHNvbWUgc2ltcGxlIG9wdGltaXphdGlvbiBvZiB0aGUgbGlzdHZpZXcKCWRyYXdpbmcuIFNwZWNpZmljYWxseSBpdCByZWR1Y2VzIGZsaWNrZXIgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcy4KCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVRyYW5zZm9ybSBldmVyeSBFUlIoKSB0byBXQVJOKCkgaW4gTWFrZVByb2NJbnN0YW5jZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDYWxsIFdyaXRlT3V0UHJvZmlsZXMxNiB0byBtYWtlIHN1cmUgdGhhdCBsYXN0IHByb2ZpbGUgZ2V0cyB3cml0dGVuLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9kaWFsb2cuaCwgd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRGlzYWJsZSB0aGUgb3duZXIgb2YgYSBtb2RhbCBkaWFsb2cgYm94IGp1c3QgYmVmb3JlIGNyZWF0aW5nIHRoZQoJZGlhbG9nIHdpbmRvdy4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKGZyb20gSUJNIFRvcFBhZ2UgcGF0Y2gpIHJldHVybiBjb3JyZWN0IGVycm9yIGZvciBhbHJlYWR5IGV4aXN0aW5nCglmaWxlLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUhhbmRsZSB0aGUgTEJfR0VUVEVYVCBhbmQgQ0JfR0VUTEJURVhUIGNhc2VzIGZvciAzMlcgdG8gMTYgbWFwcGluZy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUVuYWJsZXMgc2hvd2luZyBvZiBoaWRkZW4gd2luZG93cyB3aGVuIHRoZSBhcHAgYXNrICpvbmx5KiB0byBtYXhpbWl6ZSBpdC4KCjIwMDAtMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSGFuZGxlIHRoZSBjb2RlcGFnZSBvZiBmb250cyBpZiBzdXBwb3J0ZWQgYnkgdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaW50ZXJuYWwgY2hhcnNldHMgZm9yIHN1cHBvcnRpbmcgREJDUyBjaGFyc2V0cy4KCgkqIG9iamVjdHMvZGMuYzoKCUZpeGVkIEdESSBsb2NraW5nIGluIEdldERldmljZUNhcHMuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJS2FpIE1vcmljaCA8bWFpbEBrYWktbW9yaWNoLmRlPgoJRml4ZWQgYnVnIGluIHJlcGVhdGVkbHkgaWNvbmlzYXRpb24sIGNvZGUgY2xlYW51cC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBYMTFEUlZfRGV2aWNlQ2Fwcy5udW1Db2xvcnMgYWNjb3JkaW5nIHRvIGRvYyAoZml4ZXMgQ3ViYXNlIFZTVDI0CglzdGFydHVwIHByb2JsZW0pLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBEdXBsaWNhdGVJY29uKCkuCgoJKiBtc2Rvcy9pbnQxNS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVN0dWJiZWQgSU5UIDE1IGZ1bmN0aW9uIDg0aC4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CgktIFNlcGFyYXRlIGFwcGxpY2F0aW9uIGNhbGxzIHRvIFNob3dPd25lZFBvcHVwcyBmcm9tIFdpbmUgY2FsbHMgKGluCgkgIEVWRU5UX01hcE5vdGlmeSkgYnkgaW50cm9kdWNpbmcgYW4gaW50ZXJuYWwgZnVuY3Rpb24uCgktIEZpeCBTaG93T3duZWRQb3B1cHMgc28gaXQgc2VuZHMgbWVzc2FnZXMgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzCgkgIGluIFdpbmRvd3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlbW92ZWQgZGlyZWN0IGNhbGxzIHRvIFRSRUVWSUVXX1JlZnJlc2goKS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIHBsYXliYWNrIG9mIEVNUl9QT0xZQkVaSUVSe1RPfTE2LCBFTVJfUE9MWUxJTkUxNiBhbmQKCUVNUl9QT0xZUE9MWUxJTkUuCgoJKiBpbmNsdWRlL21haW4uaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIG5ldyBsYW5ndWFnZSBkZXRlY3Rpb24gc2NoZW1lIHRoYXQgdXNlcyBOTFMgZGF0YSBiYXNlIGluc3RlYWQgb2YKCWhhcmQgY29kZWQgdmFsdWVzLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6CglEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgdGhlIHR5cGUvbmFtZSBhcyBhIEMgc3RyaW5nIGluc3RlYWQgb2YgYW4KCUlNQUdFX1JFU09VUkNFX0RJUl9TVFJJTkdfVSBzdHJ1Y3R1cmUgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLgoKMjAwMC0wOC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWVtb3J5L2xvY2FsLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL2dkaS5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJQWRkZWQgc3lzbGV2ZWwgbG9ja2luZyBmb3IgR0RJIG9wZXJhdGlvbnMuCglQcm9wYWdhdGUgdGhlIGNoYW5nZXMgdGhyb3VnaCB0aGUgZ3JhcGhpY3MgY29kZS4KCgkqIG1pc2MvY2Ryb20uYzoKCUVkIFNub3cgPGVkX3Nub3dAdHRtZW5naW5lZXJpbmcuY29tPgoJQ29ycmVjdGVkIHNlcmlhbCBudW1iZXIgZ2VuZXJhdGlvbiBmb3IgQ0QncyB3aXRoIDEgb3IgMiB0cmFja3MuCgoyMDAwLTA4LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jZHJvbS5jLCBmaWxlcy9kb3NfZnMuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJRml4ZWQgcmV0dXJuIHZhbHVlIG9mIENEUk9NX0dldExhYmVsIGlmIENEUk9NX09wZW4gZmFpbGVkIChlLmcuIG5vCglEZXZpY2UgZW50cnkgZm9yIGRyaXZlIGluIHdpbmUuY29uZikuCgoJKiBpbmNsdWRlL3gxMWZvbnQuaCwgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVNlcGFyYXRlIEdldFRleHRNZXRyaWNzIGFuZCBpbXBsZW1lbnQgaXQgZm9yIFNCQ1MvVW5pY29kZS9jcDkzMi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRml4ZWQgU1RBVFVTX0dldFRleHRXIGluIHJlZ2FyZCB0byBOVUxMIHBvaW50ZXJzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFwcGVuZCAuRFJWIHRvIG5hbWUgb25seSBpZiBubyBleHRlbnNpb24gcHJlc2VudC4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBjcmFzaCBpZiBwYXRoIGlzIE5VTEwgaW4gREVCVUdfUHJvY2Vzc0VsZkZpbGVGcm9tUGF0aC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRWQgU25vdyA8ZWRfc25vd0B0dG1lbmdpbmVlcmluZy5jb20+CglDbGVhbiBvdXQgdGhlIGhhY2sgb24gQkFTUy9UUkVCTEUgYW5kIHN1cHByZXNzIHRoZW0gaW4gdGhlIG1hc2sgYXMgd2FzCglyZWNvbW1lbmRlZCBvaCBzbyBsb25nIGFnby4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CgktIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIFRPT0xCQVJfR2V0VGV4dCgpIGFuZCBtYWNybyBUT09MQkFSX0hhc1RleHQoKSB0bwoJICBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIGNhbGwgSW52YWxpZGF0ZVJlY3QoKSB3aXRoIGJFcmFzZSBvZiBUUlVFIG9yCgkgIEZBTFNFLiAgUmVkdWNlcyBiYWNrZ3JvdW5kIGVyYXNlcyBpbiBub24tdGV4dCB0b29sYmFycyBieSA4MC04NSUuCgktIEZpeGVkIGJ1dHRvbiBzdGF0ZSBub3QgYmVpbmcgdXBkYXRlZCBwcm9wZXJseSB3aGVuIExCVVRUT05ET1dOIGFuZCBjdXJzb3IKCSAgbGVhdmVzIHRoZSB0b29sYmFyLgoJLSBSZW1vdmVkIEZJWE1FKCkgaW4gVE9PTEJBUl9EcmF3U3RyaW5nIGZvciBidG5QdHItPmlTdHJpbmcgPT0gLTEsIHJlcGxhY2VkCgkgIHdpdGggYSBzb3VyY2UgY29kZSBjb21tZW50LgoJLSBSZW1vdmVkIHVuZWNlc3NhcnkgY2FsbCB0byBUT09MQkFSX0NhbGNUb29sYmFyKCkgaW4KCSAgVE9PTEJBUl9HZXRJdGVtUmVjdCgpLiAgT3B0aW1pemVkIFRPT0xCQVJfQ2FsY1N0cmluZ3MoKS4gRml4ZXMgdmVyeQoJICBzbG93IHJlc3BvbmRpbmcgdG9vbGJhcnMgaW4gVWx0cmFlZGl0IGR1ZSB0byBwcm9jZXNzaW5nIFRCX0dFVElURU1SRUNUCgkgIG1lc3NhZ2VzLgoJLSBPcHRpbWl6ZWQgVE9PTEJBUl9TZXRJbnRlbnQoKSwgU2V0Um93cygpIGFuZCBTZXRTdHlsZSgpLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYzoKCU1pa2UgTWNDb3JtYWNrICA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVNhdmUgR0VUX0FQQ1MgZGF0YSBiZWZvcmUgY2FsbGluZyBhbnkgYXN5bmNocm9ub3VzIHByb2NlZHVyZSBjYWxscywgaW4KCWNhc2UgdGhlIHNlcnZlciBpcyBjYWxsZWQgZHVyaW5nIHRoZSBBUEMuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglUdXJucyB0aGUgaGFuZGxpbmcgdG8gcHVyZSAxNiBiaXRzLCByZW1vdmUgcmVmZXJlbmNlcyB0byBkaWFsb2cuaC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCVJlbW92ZSB1bnVzZWQgY3JpdGljYWwgc2VjdGlvbiBnbG9iYWwgdmFyaWFibGUgUFJJTlQzMl9SZWdpc3RyeUJsb2NrZXIuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZHMgY2hhbmdpbmcgMiBsZXZlbHMgd2hlbiBjbGlja2luZyAuLiBpbiB0aGUgZGlyZWN0b3J5IGxpc3QuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVN0dWJiZWQgU2V0Q29uc29sZUlucHV0RXhlTmFtZUEvVy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVdNX0dFVEZPTlQgc2hvdWxkIHJldHVybiBhIHJlYWwgZm9udCBoYW5kbGUgaW5zdGVhZCBvZiBOVUxMLgoKMjAwMC0wOC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJTmljbGFzIEthcmxzc29uIE1BVEUgPG5rYXJsc3NvQHJhLmFiby5maT4KCVdBVENPTSBjb21waWxlZCBwcm9ncmFtcyBsZWF2ZSBWaXJ0dWFsU2l6ZSB0byB6ZXJvIHdoaWNoIHRyaWdnZXJzIHRoZQoJdmlydXMgY2hlY2suIFVzZSBTaXplT2ZSYXdEYXRhIGluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCU5pY2xhcyBLYXJsc3NvbiBNQVRFIDxua2FybHNzb0ByYS5hYm8uZmk+CglJbXBsZW1lbnRlZCBBQ1NfQ0VOVEVSIGZvciBhbmltYXRpb24gY29udHJvbHMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUF2b2lkIGdvaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVsb2NhdGlvbiBzZWN0aW9uLiBTa2lwIHNhbml0eSBjaGVja3MKCWZvciBlbXB0eSByZWxvY2F0aW9uIGJsb2Nrcy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBiYWNrZ3JvdW5kIHRyYW5zcGFyZW5jeSBvbiBhbmltYXRpb24gY29udHJvbCBmb3IgYXZpCgljb21wb3NlZCBvZiA4IGJwcChvciBsZXNzKSBpbWFnZS4gSSBhZGRlZCBzdXBwb3J0IGZvciA4IGJwcCBvciBtb3JlLAoJYnV0IGl0IGhhcyBub3QgYmVlbiB0ZXN0ZWQuCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVdoaWxlIGRyYWdnaW5nLCBjYXRjaCBrZXlib2FyZCBtZXNzYWdlcyBiZXR3ZWVuIFdNX0tFWUZJUlNUIGFuZAoJV01fS0VZTEFTVCwgbm90IGp1c3QgV01fS0VZRklSU1QuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJSWYgYSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIGluIExvYWRMaWJyYXJ5RXgzMlcxNiwgY2FsbCBMb2FkTGlicmFyeUV4Cglhbnl3YXksIHNpbmNlIGl0IG1pZ2h0IGJlIGEgYnVpbHRpbiBtb2R1bGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NlZCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGV2ZXJ5IGFyZ3VtZW50IGluIENvbW1hbmRMaW5lVG9Bcmd2LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZCBhbiBlcnJvciBtZXNzYWdlIGlmIGRldm1vZGUgc3RydWN0dXJlIGluIHJlZ2lzdHJ5IGlzIGludmFsaWQ7CglhdHRlbXB0IHRvIHByb3ZpZGUgcGxhdXNpYmxlIHZhbHVlcy4KCjIwMDAtMDgtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgZm9yIERCQ1MoY3A5MzIvY3A5NDkpIGNvZGVwYWdlIGNvbnZlcnNpb24uCglJbXBsZW1lbnRlZCBjcDkzMiBoYW5kbGluZyBwYXJ0bHkoYnV0IHN0aWxsIGluY29tcGxldGUpLgoJQWRkZWQgc3VwcG9ydGluZyBtdWx0aXBsZSBmb250cyBmb3IgREJDUyBoYW5kbGluZy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3N0YWJzLmMsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgRUxGIGZpbGVzIGxvb2t1cCBmb3Igc3ltYm9saWMgaW5mby4KCgkqIGRlYnVnZ2VyL2JyZWFrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gaW4gYnJlYWsgY29tbWFuZC4KCjIwMDAtMDgtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggcmV0dXJuIHZhbHVlIHRvIDE2IGJpdHMgZm9yIDE2IGJpdCBob29rOyByZW1vdmUgbGVhZGluZyBzcGFjZSBmb3IKCWZpbGUgc3BlY2lmaWNhdGlvbi4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJVGhyZWFkcyB3aXRob3V0IGFjdGl2ZSBvciBmb2N1cyB3aW5kb3cgc2hvdWxkIG5vdCByZWNlaXZlIGtleWJvYXJkCgltZXNzYWdlcy4KCgkqIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUltcGxlbWVudGVkIFNFQ19JTUFHRSBtYXBwaW5ncyBhbmQgc2hhcmVkIFBFIHNlY3Rpb25zICh3aXRoIHRoZSBoZWxwCglvZiBQZXRlciBHYW50ZW4pLgoKCSogaW5jbHVkZS9udGRkay5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvbHN0ci5jLCBtaXNjL21haW4uYywgbXNkb3MvaW50MjEuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmM6CglNb3ZlZCBDaGFyVXBwZXIqIGFuZCBDaGFyTG93ZXIqIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIuCgoJKiBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lhbCB0cmVhdG1lbnRzICh1c2UgMiBvciBtb3JlIGZvbnRzLCBjb2RlcGFnZQoJY29udmVyc2lvbiwgZXRjLi4uKSBmb3IgREJDUyB0ZXh0LgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZWRlZmF1bHQucmVnOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgIkZ1bGxXaW5kb3dEcmFnIiBmZWF0dXJlIGZvciBub3QgbWFuYWdlZCB3aW5kb3dzLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgdGhlIGVkaXQgYm94IGJlZm9yZSByb2xsaW5nIHVwIHRoZSBsaXN0Ym94LCBzbyB0aGUKCXNlbGVjdGlvbiBpc24ndCBsb3N0LgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyByZWZlcmVuY2VkIGRsbHMgZm9yIGxpYnRlc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglOaWNsYXMgS2FybHNzb24gTUFURSA8bmthcmxzc29AcmEuYWJvLmZpPgoJTFBTVFJfVEVYVENBTExCQUNLIHdvdWxkbid0IHdvcmsgaWYgdGhlIGFwcGxpY2F0aW9uIHN1cHBsaWVkIHRoZSBpdGVtCgl0ZXh0IGluIGl0cyBvd24gYnVmZmVyLgoKCSogd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2Vycm9yLmMsIHdpbjMyL2ZpbGUuYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglDbGVhbmVkIHVwIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuIEFkZGVkIGEgZmV3IGltcG9ydHMuCgoJKiBvbGUvb2xlMm5scy5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3NweS5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbG9hZGVyL25lL2NvbnZlcnQuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCVJlcGxhY2VkIGFsbCBsc3RyKiBjYWxscyBmcm9tIGluc2lkZSBXaW5lIGNvZGUgYnkgdGhlaXIgc3RyKiBlcXVpdmFsZW50LgoKCSogbXNkb3MvZHBtaS5jOgoJUmVwbGFjZWQgZ2xvYmFsIENhbGxiYWNrcyBzdHJ1Y3R1cmUgYnkgYXBwcm9wcmlhdGUgZ2x1ZSBjb2RlCglnZW5lcmF0aW9uLiBSZW1vdmVkIGEgZmV3IHVudXNlZCBlbnRyaWVzIGluIHRoZSBDYWxsb3V0IHN0cnVjdHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBtaXNjL3ZlcnNpb24uYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3Mvd2luaGVscC5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYzoKCVJlcGxhY2VkIFZFUlNJT05fKiBjYWxscyBieSBleHBvcnRlZCBBUEkgZXF1aXZhbGVudHMuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci9uZS8uY3ZzaWdub3JlLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS8uY3ZzaWdub3JlLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9sb2NhbC5jLCBtaXNjL2NvbW0uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCBjb250cm9scy8uY3ZzaWdub3JlLCBjb250cm9scy9NYWtlZmlsZS5pbiwgY29udHJvbHMvZWRpdC5jLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9idWlsdGluMTYuaDoKCVJlcGxhY2VkIGdsb2JhbCBDYWxsYmFja3Mgc3RydWN0dXJlIGJ5IGFwcHJvcHJpYXRlIGdsdWUgY29kZQoJZ2VuZXJhdGlvbi4gUmVtb3ZlZCBhIGZldyB1bnVzZWQgZW50cmllcyBpbiB0aGUgQ2FsbG91dCBzdHJ1Y3R1cmUuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZGVkIGxvYWQgYWRkcmVzcyBmb3IgdGhlIHNoYXJlZCBtZW1vcnkgb2YgQkRFIChCb3JsYW5kIGRhdGFiYXNlCgltYW5hZ2VyKS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBmb3Igc3RhcnRpbmcgc2VydmVyIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY2hlY2tpbmcgZm9yIGJyb2tlbiBmb250IGNhY2hlLgoJQWRkZWQgc3VwcG9ydGluZyBmb3IgaXNvMTA2NDYgZW5jb2RpbmcuCgoyMDAwLTA4LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFkZSBzZXJ2ZXIgc3RhcnR1cCBtb3JlIHJvYnVzdCBhZ2FpbnN0IHJhY2VzIGNhdXNlZCBieSBhIHByZXZpb3VzCglzZXJ2ZXIgdGVybWluYXRpbmcgYXQgdGhlIHNhbWUgdGltZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB0b29scy9jMm1hbi5wbDoKCU1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUNyZWF0ZWQgZGVmYXVsdCBjMm1hbiBjb21wYXRpYmxlIHBlcmwgc2NyaXB0IGZvciBnZW5lcmF0aW5nCglkb2N1bWVudGF0aW9uLCBpbiBjYXNlIGMybWFuIGlzbid0IGluc3RhbGxlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzZW5kaW5nIG9mIExWTl9JVEVNQ0hBTkdJTkcgYW5kIExWTl9JVEVNQ0hBTkdFRCBtZXNzYWdlcywKCWNsZWFuZWQgdXAgc29tZSBvZiB0aGUgZHJhd2luZywgaW1wbGVtZW50ZWQgdGhlIGlJbmRlbnQgZm9yIExWU19SRVBPUlQKCWFuZCBmaXhlZCBhIHByb2JsZW0gd2hlcmUgc3ViIGl0ZW1zIHdoZXJlIG5vdCBiZWluZyBwcm9wZXJseQoJYXNzb2NpYXRlZCB3aXRoIHRoZWlyIGl0ZW0gZm9yIHZpcnR1YWwgbGlzdCB2aWV3cy4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jLCBtaXNjL2xzdHIuYywgb2xlL29sZTJubHMuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS93Y3R5cGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy91c2VyL2xzdHIuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglBZGRlZCBVbmljb2RlIGN0eXBlIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglNb3ZlZCBOTV9VUERPV04gZGVmaW5pdGlvbiB0byBjb21tY3RybC5oLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJVGhlIHVzZXIgZHJpdmVyIGZ1bmN0aW9ucyBtaWdodCBiZSBjYWxsZWQgd2l0aCB0aGUgd2luZG93IGxvY2sgaGVsZC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBGaW5kUmVzb3VyY2UgYW5kIEZpbmRSZXNvdXJjZUV4IGZ1bGx5IHdpbmRvd3MgY29tcGF0aWJsZS4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCURhbXlhbiBPZ255YW5vZmYgPERhbXlhbkByb2NrZXRtYWlsLmNvbT4KCVJlbW92ZSBzb21lIG9ic29sZXRlICNkZWZpbmUncyAtIHN0cmx3ciBhbmQgc3RydXByIGFyZSBpbiBOVERMTCBub3cuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBtZW1vcnkvY29kZXBhZ2UuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS91dGY4LmM6CglBZGRlZCBVVEYtOCBjb252ZXJzaW9uIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW5zdGVhZCBvZiBub3QgZG9pbmcgdGhlIFogb3JkZXJpbmcgd2hlbiB0aGUgYXBwbGljYXRpb24gYXNrcyB0byBwbGFjZQoJdGhlIHdpbmRvdyB1bmRlciBhIHplcm8tc2l6ZWQgd2luZG93LCBub3cgdGhlIHdpbmRvdyBhYm92ZSB0aGUKCXplcm8tc2l6ZWQgd2luZG93LCBpcyB1c2VkIHRvIGRvIHRoZSBaIG9yZGVyaW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglJbml0aWFsaXplIGxwc3RySW5pdGlhbERpciB0byByZWFsbHkgYm9ndXMgdmFsdWUgdG8gcmVzdG9yZSBvcmlnaW5hbAoJdmFsdWUgbGF0ZXIuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBhIGZldyBtb3JlIGFub255bW91cyB1bmlvbiBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBDKysgb3BlcmF0b3JzIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGZvcGVuKCkgYXBwZW5kIG1vZGUsIGFuZCBhIHJlYWxseSBjaGVlc3kgZnNjYW5mKCkKCWltcGxlbWVudGF0aW9uLi4uCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCTEuIE1ha2UgYnVmZmVyIGZvciBtZXNzYWdlIGxhcmdlIGVub3VnaCB0byBob2xkIHZlcnkgbG9uZyBmaWxlIG5hbWVzLgoJMi4gUGFzcyBGT1JNQVRfTUVTU0FHRV9BUkdVTUVOVF9BUlJBWSBmb3IgRm9ybWF0TWVzc2FnZUEgdG8gbm90IGFzc3VtZQoJICAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgYmVoYXZpb3VyLgoJMy4gU2hvdyBhY3R1YWwgbWVzc2FnZSB0byB1c2VyLCBub3Qgbm9uLWZvcm1hdHRlZCBvbmUuCgoyMDAwLTA4LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCU1lcmdlZCBjbGlwYm9hcmQgZHJpdmVyIGludG8gVVNFUiBkcml2ZXIuCglNb3ZlZCBhbGwgdHR5ZHJ2IHNvdXJjZSBmaWxlcyB0byBkbGxzL3R0eWRydi4KCUxvYWQgZnVuY3Rpb25zIHBvaW50ZXIgZm9yIHRoZSBVU0VSIGRyaXZlciBmcm9tIHRoZSBncmFwaGljcyBkcml2ZXIKCWRsbCB3aXRoIEdldFByb2NBZGRyZXNzLgoKMjAwMC0wOC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmMsIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS9tc2FjbWRydi5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBtaXNjL2NvbW0uYywgbWlzYy9tYWluLmMsIG1zZG9zL2ludDA5LmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9tc2FjbS9tc2FjbWRydi5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZXMgYW5kIGRsbCBkZXBlbmRlbmNpZXMuCgoJKiBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2luaXQuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jOgoJTWFrZSBQREIsIEVOVkRCIGFuZCBTVEFSVFVQSU5GTyBnbG9iYWwgdmFyaWFibGVzLgoJQWRkZWQgJ21vZHVsZScgZmllbGQgaW4gUERCLCBhbmQgcmVtb3ZlZCBXaW5lLXNwZWNpZmljIGZpZWxkcy4KCgkqIG1pc2MvdmVyc2lvbi5jLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVJlbW92ZWQgd2ludmVyIGFuZCBzZXJ2aWNlX3RhYmxlIGZyb20gdGhlIFBEQiBhbmQgbWFkZSB0aGVtIHN0YXRpYwoJdmFyaWFibGVzLgoKCSogaW5jbHVkZS9maWxlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgZmlsZXMvZmlsZS5jOgoJUmVtb3ZlZCB0aGUgRE9TIGhhbmRsZXMgdGFibGUgZnJvbSB0aGUgUERCIGFuZCBtYWRlIGl0IGEgc3RhdGljCgl2YXJpYWJsZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS9nbG9iYWwuYywgbXNkb3MvZG9zbWVtLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCVJlbW92ZWQgb2Jzb2xldGUgU0hNREFUQSBwYXJhbWV0ZXIgaW4gR0xPQkFMX0NyZWF0ZUJsb2NrLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIEF2b2lkIG51bGwtcG9pbnRlciBleGNlcHRpb25zIGJ5IHRlc3RpbmcgbGlzdG5vZGVzIHZhbGlkaXR5IGJlZm9yZSBkb2luZwoJICBhbnkgd29yayB3aXRoIHRob3NlLgoJLSBUTEJfUmVhZFR5cGVMaWIgbm93IHJldHJpZXZlcyB0aGUgbGVuZ3RoIG9mIHRoZSBUTEIgYW5kIHBhc3NlcyBpdCB0bwoJICB0aGUgVExCIGNvbnN0cnVjdG9yIHdoaWNoIGluaXRpYWxpemVzIFRMQkNvbnRleHQ6Omxlbmd0aCB0byB0aGF0CgkgIHZhbHVlLgoJLSBGb3Igbm9uLXN0YW5kYXJkIHBvaW50ZWQgdHlwZXMsIHRkWzNdIGlzIGFsd2F5cyAwLiBJIG9ic2VydmVkIHRoYXQKCSAgdGhlIHR5cGUgaXMgc3RvcmVkIGF0IHRkWzJdLzggYW5kIG5vdCB0ZFszXS84LgoJLSBOdWxsLXBvaW50ZXIgZXhjZXB0aW9uIG9jY3VycyB3aGVuIEdldFJlZlR5cGVPZkltcGxUeXBlIGlzIGNhbGxlZCBvbiBhCgkgIHR5cGUgd2l0aCBubyBpbmhlcml0ZWQgaW50ZXJmYWNlcy4gSWYgdGhlIGltcGxlbWVudGVkIHR5cGVzIGxpbmtlZCBsaXN0CgkgIGlzIGVtcHR5LCBzZXQgcFJlZlR5cGUgYXMgMCBhbmQgcmV0dXJuIFNfT0suCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdHlwbyBpbiB0aGUgSURpc3BhdGNoX0dldFR5cGVJbmZvIG1hY3JvLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgcmVtYWluaW5nIHByb2JsZW1zIHdpdGggdG9vbHRpcHMuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgT3BlbkdMIGNvbmZpZ3VyZTogbW92ZSBIQVZFX09QRU5HTCBkZWZpbmUgdG8gd2hlcmUgaXQgYmVsb25ncywKCWZpeGVkIGdsZXh0LmggcHJlc2VuY2UgaW4gY29uZmlndXJlIGNoZWNrIGZvciBQRk5HTENPTE9SVEFCTEVFWFRQUk9DLgoKCSogaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvY3J0ZGxsLmgsIGluY2x1ZGUvZGV2aWNlLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvdzMyc3lzLmgsIHRvb2xzL21ha2VfYXV0aG9ycywgd2luMzIvZmlsZS5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9zaGVsbDMyL2F1dGhvcnMuaCwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWV0YWZpbGVkcnYuaCwgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglNb3ZlZCBhIGZldyBub24tc3RhbmRhcmQgaGVhZGVycyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxscy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46CglJbnN0YWxsIGFsbCBzdGFuZGFyZCBXaW5kb3dzIGluY2x1ZGVzLCBwbHVzIHNvbWUgZnJvbSB0aGUgd2luZSBzdWJkaXIuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvYW5pbWF0ZS5oLCBpbmNsdWRlL2NvbWJvZXguaCwgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvZmxhdHNiLmgsIGluY2x1ZGUvaGVhZGVyLmgsIGluY2x1ZGUvaG90a2V5LmgsIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgaW5jbHVkZS9tb250aGNhbC5oLCBpbmNsdWRlL25hdGl2ZWZvbnQuaCwgaW5jbHVkZS9wYWdlci5oLCBpbmNsdWRlL3Byb2dyZXNzLmgsIGluY2x1ZGUvcmViYXIuaCwgaW5jbHVkZS9zdGF0dXMuaCwgaW5jbHVkZS90YWIuaCwgaW5jbHVkZS90b29sYmFyLmgsIGluY2x1ZGUvdG9vbHRpcHMuaCwgaW5jbHVkZS90cmFja2Jhci5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGluY2x1ZGUvdXBkb3duLmgsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUmVtb3ZlZCBhbGwgbm9uLXN0YW5kYXJkIGNvbW1vbiBjb250cm9sIGhlYWRlcnMgZnJvbSB0aGUgaW5jbHVkZQoJZGlyZWN0b3J5LgoKCSogd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3N0cnVjdDMyLmgsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL3N0cnVjdDMyLmgsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9zdHJ1Y3QzMi5jOgoJTW92ZWQgc3RydWN0MzIuYyB0byB3aW5kb3dzIGRpcmVjdG9yeS4KCjIwMDAtMDgtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFrZSBzdXJlIGJ1aWx0aW4gZGxscyBhcmUgbmV2ZXIgZnJlZWQgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBkbGNsb3NlCglwcm9wZXJseSB5ZXQuCgoJKiBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglTbWFsbCBkbGwgaW50ZXJmYWNlcyBjbGVhbnVwcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRWFzZWQgcmVzdHJpY3Rpb25zIG9uIE9wZW5HTC9NRVNBIHVzYWdlIGEgYml0LiBJdCBjb21waWxlcyBqdXN0IGZpbmUKCXVzaW5nIG1lc2EtMy4yIGV2ZW4gd2l0aG91dCBnbGV4dC5oLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrZWQgaG93IHNlbGVjdGlvbnMgYXJlIGtlcHQgdHJhY2sgb2YgaW4gdGhlIGxpc3Qgdmlldy4gU2VsZWN0aW9ucwoJYXJlIG5vdyBsaXN0ZWQgYXMgYSBzb3J0ZWQgcmFuZ2Ugb2YgcGFpcmVkIGludGVnZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJV2hlbiB1bnN1YmNsYXNzaW5nIHRvb2xzLCB1c2UgdG9vbFB0ci0+aHduZCBpbnN0ZWFkIG9mIHRvb2xQdHItPnVJZCBpZgoJdG9vbFB0ci0+ZmxhZ3MgZG9lcyBub3QgY29udGFpbiBUVEZfSURJU0hXTkQgKG1lYW5pbmcgdUlkIGlzIG5vdCBhCgl2YWxpZCB3aW5kb3cgaGFuZGxlKS4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCUFkZGVkIGRlc2NyaXB0aW9uIG9mIHVzaW5nIERMTHMgd2l0aCBXaW5lTGliLgoKCSogZG9jdW1lbnRhdGlvbi8qOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydGVkIFdpbmUgZG9jdW1lbnRhdGlvbiB0byBTR01MIGZvcm1hdC4KCjIwMDAtMDgtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9pY29udGl0bGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5pdGlhbGl6ZSAnc3RyJyBpbiBJQ09OVElUTEVfR2V0VGl0bGVQb3MuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJRml4ZWQgcmVzb3VyY2UgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCAzMi1iaXQgbW9kdWxlcyB0aGF0IGRvbid0IGhhdmUgYQoJMTYtYml0IGNvdW50ZXJwYXJ0IChuZWNlc3NhcnkgZm9yIExPQURfTElCUkFSWV9BU19EQVRBRklMRSBzdXBwb3J0KS4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkIGFuIGVkaXQgY29udHJvbCBzaG93aW5nIHRoZSBjb21tYW5kIGxpbmUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZAoJZGVpbnN0YWxsIGl0ZW0uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV0lOUE9TX1dpbmRvd0Zyb21Qb2ludCBzaG91bGQgcmVzcGVjdCBocmduV25kLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglTZXQgdXAgZXhlX21vZHJlZiBiZWZvcmUgbG9hZGluZyBpbXBsaWNpdGx5IGxpbmtlZCBkbGxzLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglQcmV2ZW50IGVuZGxlc3MgbG9vcGluZyBpbiBsaW5lYnJlYWsgaGFuZGxpbmcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBhcmUgbG9va2luZyBmb3IgYW4gZXhpc3RpbmcgcGl4bWFwIGZvcm1hdCwgd2UgZG8gbm90IG5lZWQgdGhlCglzYW1lIGJpdHNwZXJwaXhlbCAoZml4ZXMgZGVwdGggMTUvYml0c3BpeGVsIDE2IG1vZGUpLgoKCSogaW5jbHVkZS9kaW5wdXQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgYSBmZXcgRGlyZWN0SW5wdXQgNyBkZWZpbml0aW9ucyBhbmQgQysrIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUxvYWRMaWJyYXJ5RXgzMlcxNiBzaG91bGQgdXNlIHRoZSBzZWFyY2ggYWxnb3JpdGhtIG9mIDE2LWJpdCBsaWJyYXJpZXMuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGxvY2FsIHZhcmlhYmxlIHNoYWRvd3Mgd2FybmluZ3MuCgoJKiB3aW4zMi9wcm9jZXNzLmMsIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL3ZlcnNpb24uYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvdHlwZXMuYzoKCS0gRml4ZWQgcmVzb3VyY2UgZnVuY3Rpb25zIHRvIHdvcmsgZGlyZWN0bHkgZnJvbSB0aGUgSE1PRFVMRSBpbnN0ZWFkIG9mCgkgIHJlcXVpcmluZyBhIG1vZHJlZi4KCS0gQXR0ZW1wdGVkIHRvIGdldCBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgcmlnaHQgKGJhc2VkIG9uIHBhdGNoZXMgYnkKCSAgRXJpYyBQb3VlY2ggYW5kIER1c2FuIExhY2tvKS4KCS0gU2ltcGxpZmllZCBtb2RyZWYgc3RydWN0dXJlIGFuZCBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcm90ZWN0IHRoZSBwcm90b3R5cGVzIGluIGhlcmUgZnJvbSBDKysgbmFtZSBtYW5nbGluZy4uLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJVklGX09VVE9GU1BBQ0UgYW5kIFZJRl9PVVRPRk1FTSB3ZXJlIHJldmVyc2VkLgoKCSogaW5jbHVkZS92ZncuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJaW5saW5lIG11c3QgYmUgZmlyc3QgYXR0cmlidXRlIGluIGZ1bmN0aW9uIGRlZmluaXRpb24uCgoJKiBkbGxzL3VzZXIvbHN0ci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBDaGFyTmV4dFcuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYMTFEUlZfRElCX1NldEltYWdlQml0c19STEU4OiBicmVhayBpbWFnZSBsaW5lcy4KCjIwMDAtMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUFkZGVkIGltcG9ydHMgb2Yga2VybmVsMzIuZGxsIHdoZXJlIG5lY2Vzc2FyeS4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglMaW5rIFVTRVIgcmVzb3VyY2VzIGludG8gbGlidXNlci5zby4KCgkqIG9sZS9vbGUybmxzLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBjYWxsaW5nIGN0eXBlIGZ1bmN0aW9ucyB3aXRoIFVuaWNvZGUgY2hhcmFjdGVycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglDb252ZXJ0ZWQgYWxsIGNhbGxzIHRvIFJlZHJhd1dpbmRvdyB0byBJbnZhbGlkYXRlUmVjdC4gIFByZXZpb3VzbHkKCVJlZHJhd1dpbmRvdyB3YXMgYmVpbmcgdXNlZCBmb3IgdGhlIFJEV19VUERBVEVOT1cgZmxhZyB3aGljaCBmb3JjZWQgYW4KCWltbWVkaWF0ZSBXTV9QQUlOVCBtZXNzYWdlLiAgTW92aW5nIHRvIEludmFsaWRhdGVSZWN0IHNob3VsZCBsZXQKCVdNX1BBSU5UcyBvY2N1ciBub3JtYWxseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCByZXNldHRpbmcgdGhlIGJhY2tncm91bmQgY29sb3Igd2hlbiBjbGVhcmluZyBvdXQgYmxhbmsgYXJlYXMsIGFzCglpdCBtYXkgaGF2ZSBiZWVuIHNldCB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBDT0xPUl9XSU5ET1cgYnkgdGhlCglhcHBsaWNhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglUb3AgbGV2ZWwgd2luZG93cyB3aXRoIDAgd2lkdGggb3IgaGVpZ2h0IGFyZSBjcmVhdGVkIHdpdGggYSBzaXplIG9mIDF4MSBpbgoJdGhlIFgxMSBkcml2ZXIuIEkndmUgYWRkZWQgc29tZSBjb2RlIHRvIG1ha2Ugc3VyZSB0aG9zZSB3aW5kb3dzIGFyZSBuZXZlcgoJbWFwcGVkIHdoaWxlIHRoZSBzaXplIDw9IDAuCgoJKiBtaXNjL2xzdHIuYywgbWlzYy9tYWluLmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9kdW1teS5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG1lbW9yeS9zdHJpbmcuYywgY29uc29sZS9pbnRlcmZhY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglNb3ZlZCBtb3N0IFVTRVIgc3RyaW5nIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIuCglDbGVhbmVkIHVwIGEgZmV3IG1vcmUgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2luaXQuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy91c2VyL3RleHQuYzoKCVJlcGxhY2VkIGxzdHJsZW4vbHN0cmNtcCBieSBsaWJjIGVxdWl2YWxlbnRzIGV2ZXJ5d2hlcmUgd2UgZG9uJ3QgbmVlZAoJdG8gdHJhcCBleGNlcHRpb25zLgoKMjAwMC0wOC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFdhcm4gYWJvdXQgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGluIG1vZHVsZXMuZGF0IHRoYXQgYXJlIG5vdCB1c2VkLgoJLSBFbGltaW5hdGVkIHRoZSB3YXJuaW5ncyBjYXVzZWQgYnkgdGhlIGNoYW5nZSBhYm92ZS4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRlYnVnZ2VyL3N0YWNrLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgaW1wb3J0cy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3RleHQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zY3JvbGwuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY2FjaGUuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXh0LmMsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9jYWNoZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9sc3RyLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglNb3ZlZCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBvdXQgb2YgbGlid2luZS9rZXJuZWwvZ2RpIGludG8gVVNFUi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvbWV0YWZpbGUuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJUmVtb3ZlZCBhIGZldyBkZXBlbmRlbmNpZXMgb24gR0RJIGludGVybmFscyBmcm9tIFVTRVIgZGxsLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBpbXBvcnRzLgoKMjAwMC0wOC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYywgTWFrZWZpbGUuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcHJpbnRkcnYuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTYuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJTWFrZSBVU0VSIGFuZCBHREkgc2VwYXJhdGUgZGxscy4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luc29jazIuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgdGhlIFdpbjE2L1dpbjMyIHN0cnVjdHVyZSBzaXplL2FsaWdubWVudCBkaWZmZXJlbmNlcyBvZgoJd3NfaG9zdGVudCwgd3NfcHJvdG9lbnQsIHdzX3NlcnZlbnQsIHdzX25ldGVudC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgaW5jbHVkZS90b29sdGlwcy5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZG8gdGhlIHNob3cvaGlkZSBsb2dpYyBhbmQgYWRkIGEgY29tbWVudCB0byBleHBsYWluIHdoYXQncyBnb2luZyBvbi4KCUZpeCBUVE1fe1N8R31FVERFTEFZVElNRSB0byB1c2UgdGhlIGRvdWJsZSBjbGljayB0aW1lIGFzIGRlZmF1bHQuCglGaXggaGFuZGxpbmcgb2YgVFREVF9BVVRPTUFUSUMuCglSZWxheWVkIG1vdXNlIG1lc3NhZ2VzIHNob3VsZCBleHRyYWN0IHRoZSBwb3NpdGlvbiBmcm9tIGxQYXJhbSBub3QKCW1zZy5wdAoJU3ViY2xhc3NQcm9jIG5vdyB1bmlmaWVkIHdpdGggVFRNX1JFTEFZRVZFTlQuCglDaGFuZ2UgYWxsIGxzdHJjcHl4dG94IHRvIHVzZSB3aW4zMiBBUElzLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNoYW5nZWQgdGhlIEFGTSBtZXRyaWNzIHN0cnVjdHVyZSB0byB1c2UgYW4gYXJyYXkgaW5zdGVhZCBvZiBhIGxpbmtlZAoJbGlzdC4gVGhpcyBhdm9pZHMgZG9pbmcgdHdvIGhlYXAgYWxsb2NhdGlvbnMgZm9yIGV2ZXJ5IGNoYXJhY3RlciwgYW5kCglyZWR1Y2VzIHRoZSBtZXRyaWNzIHBhcnNpbmcgdGltZSBieSBhcHByb3ggMjUlLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkICJNaW1lLVZlcnNpb24iIHRvIHN0YW5kYXJkIE1JTUUgaGVhZGVycyBwYXJzZWQgaW4KCUhUVFBfR2V0U3RkSGVhZGVySW5kZXgoKS4KCgkqIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCB0aGUgRXJyb3JJbmZvIGludGVyZmFjZXMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gbWVzc2FnZSBmaWxlcyBmb3IgcGVvcGxlIHdobyBkb24ndCBydW4KCW1ha2UgZGVwZW5kLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIG9sZS9ndWlkLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYzoKCU1vdmVkIEdVSUQgZGVmaW5pdGlvbnMgdG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmg6CglGaXhlZCBJU2hlbGxMaW5rQS9XIGRlZmluaXRpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBpbmNsdWRlL2d1aWRkZWYuaCwgaW5jbHVkZS9pbml0Z3VpZC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglBZGRlZCBndWlkZGVmLmggYW5kIG1vdmVkIGEgZmV3IEdVSUQgZGVmaW5pdGlvbnMgdG8gdGhlIGNvcnJlY3QgZmlsZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglGaXhlZCBJc0VxdWFsR1VJRCBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTE9DQUxFX05PVVNFUk9WRVJSSURFIG1lYW5zOiBkbyBub3QgZ2V0IHVzZXIgcmVkZWZpbmVkIHNldHRpbmdzIGZyb20KCXRoZSByZWdpc3RyeS4gSW5zdGVhZCwgdXNlIHN5c3RlbSBkZWZhdWx0IHZhbHVlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIEZpeGVkIGJ1ZyB3aGVyZSBJbml0U3ViSXRlbSB3YXMgZG9pbmcgYSBaZXJvTWVtb3J5IG9uIHRoZSBpdGVtLgoJLSBDbGVhbmVkIHVwIGEgc2l0IG9mIGV4dHJhIGJsdWUgYXQgdGhlIGVuZCBvZiBhIEZVTExST1dTRUxFQ1QgbGlzdCB2aWV3CgkgIGlmIHRoZXJlIGlzIG9ubHkgb25lIGNvbHVtbi4KCS0gQ29ycmVjdGVkIGEgYnVnIEkgaW50cm9kdWNlZCB3aXRoIGFuIGVhcmxpZXIgcGF0Y2ggd2hpY2ggY2F1c2VkCgkgIHByb2JsZW1zIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbmUgb2YgdGhlIDI0LzMyIGNvbnZlcnQgY29sb3IgbWFza3Mgd2FzIHdyb25nLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRQcm9wQS9XIGhhdmUgc3RyaW5nIGFyZ3MuCgoJKiBpZjE2MzIvdGh1bmsuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy8qL01ha2VmaWxlLmluLCBkbGxzLyovKi5zcGVjOgoJQWRkZWQgaW1wb3J0cyBvZiB1c2VyMzIvZ2RpMzIva2VybmVsMzIgd2hlcmV2ZXIgbmVjZXNzYXJ5LgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMDgwMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wOC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBXTV9UQ0FSRCBhbmQgRFdPUkRMT05HLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCB0b29scy93bWMvd3JpdGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUEVfTUVTU0FHRV9IRUFERVIuTGVuZ3RoIGNvbnRhaW5zIHRoZSBoZWFkZXIgaXRzZWxmIHRvby4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUNvbW1pdHRpbmcgYSBwYWdlIG9mIGEgc2hhcmVkIG1hcHBpbmcgaW4gb25lIHByb2Nlc3MgbGV0cyBpdCBhcHBlYXIKCWNvbW1pdHRlZCBpbiBvdGhlciBwcm9jZXNzZXMsIHRvby4gVG8gZmFrZSB0aGlzLCB3ZSBjb21taXQgdGhlbSBhcwoJc29vbiBhcyB0aGV5IGFyZSBtYXBwZWQuCgoJKiBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9oZWFwLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglNb3ZlZCBXaW5lIHByaXZhdGUgaGVhcCBjcmVhdGlvbiBmbGFncyB0byBvdGhlciB2YWx1ZXMuCglSZXR1cm4gc3lzdGVtIGhlYXAgd2hlbiBhIHNoYXJlZCBoZWFwIGlzIHJlcXVlc3RlZC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJT25seSBzZXQgQ09NU1BFQyBpZiBub3QgZGVmaW5lZCBhbHJlYWR5LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB0aGUgd2luMzEgc3R5bGUgZmlsZSBkaWFsb2cgdG8gMzIgYml0cyBzdHJ1Y3R1cmVzIGFuZAoJbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFNlcmdlIEl2YW5vdgoJQW5kcmV3IExld3lja3kKCUltcHJvdmVkIGRyYXdpbmcgb2YgaXRlbSB0ZXh0LCBhZGRlZCBTSE9XU0VMQUxXQVlTIGNhcGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXR0aGV3IExha2UgPE1hc3RlclJfTEB5YWhvby5jb20+CglGaXhlZCBhIHNlZ2ZhdWx0IHByb2JsZW0gdXNpbmcgdGhlIHN0YW5kYXJkIGZpbGUgb3BlbiBkaWFsb2cgYm94LgoKCSogZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy92Z2EuYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL3ZnYS5jLCBvYmplY3RzL2dkaW9iai5jOgoJTW92ZWQgTXVsRGl2KCkgYW5kIFZHQSByb3V0aW5lcyBvdXQgb2YgR0RJLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgRVJST1JMRVZFTC4KCU1vc3QgZXJyb3JzIHJlcG9ydGVkIHZpYSBGb3JtYXRNZXNzYWdlKCkuCglDT1BZIGNvbW1hbmQgbm93IHdvcmtzIGNvcnJlY3RseSBpZiBvdXRwdXQgc3BlY2lmaWVyIGlzIGEgZGlyZWN0b3J5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgY29uc2lzdGVudCBjYWxjdWxhdGlvbiBvZiBsaW5lIGhlaWdodCwgc2Nyb2xscyBhIGZ1bGwgaXRlbSBvbgoJbGluZSB1cC9kb3duLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBmZXcgYnVncyBpbmNsdWRpbmcgb25lIHdpdGggc2V0dGluZyBleHRlbmRlZCBzdHlsZXMgYW5kCgllZGl0aW5nIGxhYmVscy4KCUltcGxlbWVudGVkIHRoZSBMVlNfRVhfRlVMTFJPV1NFTEVDVCBleHRlbmRlZCBzdHlsZS4KCUJlZ2luIGFuIGltcGxlbWVudGF0aW9uIG9mIHZpcnR1YWwgbGlzdCB2aWV3cyAoTFZTX09XTkVSREFUQSBzdHlsZQoJc2V0KS4KCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBYMTEgaW5jbHVkZXMgZnJvbSBkZHJhdy5oLgoKCSogbG9hZGVyL21vZHVsZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglXaW5FeGVjMTYgc2hvdWxkIG5vdCBzcGxpdCBxdW90ZWQgZmlsZW5hbWVzIHdpdGggc3BhY2VzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW50ZXJuZXRDaGVja0Nvbm5lY3Rpb25BLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhbm90aGVyIG5vbi1MaW51eCBidWlsZCBmYWlsdXJlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIDIgZm9yd2FyZCBlbnRyaWVzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzb21lIGZsaWNrZXIgYnkgZGV0ZWN0aW5nIGlmIHdlIHNldCB0aGUgc2FtZSB2YWx1ZSBhZ2Fpbi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2UgbG9naWMgb2YgbGlzdGJveCByZXNpemluZyBmb3IgMTYgYml0cyBhcHBzIGZvciBsaXN0cyB3aXRob3V0CglMQlNfTk9JTlRFR1JBTEhFSUdIVCBzdHlsZS4KCgkqIG9iamVjdHMvZGMuYzogUGhpbGxpcCBFem9sdCA8ZXpvbHRAcGVyZi56a28uZGVjLmNvbT4KCUZpeGVkIENyZWF0ZURDIHRvIHdvcmsgcHJvcGVybHkgd2hlbiBpdCBpcyBjYWxsZWQgd2l0aCBhIGRldmljZS4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJSmFzb24gRWRtZWFkZXMgPGphc29uQHRoZS1lZG1lYWRlcy5mc25ldC5jby51az4KCS0gU3VwcG9ydCB3aGl0ZXNwYWNlIGFyb3VuZCBjb21tYW5kcyBiZXR0ZXIsIGFuZCBzdXBwb3J0IHRoZSBACgkgIHByZWZpeCBiZXR0ZXIKCS0gRW5oYW5jZSB0aGUgc2V0IHN1cHBvcnQgdG8gdW5zZXQsIGRpc3BsYXkgdmFsdWUgZXJyb3IgY29ycmVjdGx5CgktIEVuaGFuY2UgdGhlIGNvbW1hbmQgbGluZSBzdXBwb3J0IGZvciBwYXJtcywgYW5kIGVudiB2YXIgZXhwYW5zaW9uCgktIEVuaGFuY2UgdGhlIGVjaG8gY29tbWFuZCB0byBub3QgbG9vc2Ugd2hpdGVzcGFjZSwgYW5kIGRpc3BsYXkKCSAgb3V0cHV0IHdpdGggJSBzaWducyBiZXR0ZXIKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3JlZ3N0ci5oLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL1JFQURNRSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmgsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGFuIHVuaW5zdGFsbGVyIGZvciBJbnN0YWxsU2hpZWxkLCBXSVNFIGV0Yy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJUHJvdmlkZSBwb3NpdGlvbiBoaW50cyBmb3Igd2luZG93IG1hbmFnZXJzLgoKMjAwMC0wNy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvbW9uaXRvci5oLCBpbmNsdWRlL3N5c21ldHJpY3MuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcveDExLmM6CglDbGVhbmVkIHVwIHNvbWUgbW9yZSBVU0VSIGRlcGVuZGVuY2llcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgc3lzdGVtIG1ldHJpY3MgZGVmaW5pdGlvbnMgdG8gd2ludXNlci5oLgoKCSogZGVidWdnZXIvc3RhY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUaWR5ZWQgdXAgc3RhY2sgYmFja3RyYWNlIGNvZGUgYSBiaXQsIGFuZCBhZGRlZCBhIHNpbXBsZSBzcGVjaWFsCgljYXNlIGZvciBiYWNrdHJhY2luZyBmcm9tIGEgbnVsbCBFSVAuCgoJKiBmaWxlcy9maWxlLmMsIHNlcnZlci9maWxlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciA2NC1iaXQgbmVnYXRpdmUgc2VlayB2YWx1ZS4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgRE9TIHRhc2sgZmllbGRzIGZyb20gdGhlIE5FX01PRFVMRSBzdHJ1Y3R1cmUuCgoJKiBsb2FkZXIvdGFzay5jOgoJU2tpcCBxdW90ZWQgcHJvZ3JhbSBuYW1lIHdoZW4gYnVpbGRpbmcgY29tbWFuZCBsaW5lLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglET1MgYmluYXJ5IHN1cHBvcnQgaGFzIGJlZW4gcmVzdG9yZWQuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvdG9vbGhlbHAuYywgd2luZG93cy91c2VyLmM6CglNb3ZlZCB0b29saGVscCBpbXBsZW1lbnRhdGlvbiBpbnRvIGtlcm5lbDMyIGRsbC4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJQmFja2VkIG91dCBGaW5kUmVzb3VyY2UgbGFuZ3VhZ2UgcGF0Y2guCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1zZG9zL2ludDA5LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgZmV3IHByb2JsZW1zLgoKCSogZGxscy9rZXJuZWwvbWVzc2FnZXMvd2luZXJyX2VudS5tYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJQWRkZWQgdGV4dCBmb3IgYWxsIG1lc3NhZ2VzIGluY2x1ZGVkIGluIHdpbjk1IGFuZCB3aW5OVC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgeyB9IGFyb3VuZCBzdHVmZiBpbiBBRERfVE9fVCBtYWNyb3MuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDb252ZXJ0IERPUyAoTVopIGJpbmFyeSBsb2FkZXIgdG8gdGhlIG5ldyBET1MgcHJvY2VzcyBtb2RlbC4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgTVpfQ3VycmVudCgpIGluc3RlYWQgb2YgcE1vZHVsZS0+bHBEb3NUYXNrLiBDbGVhbmVkIHVwIHRoZSBSTUNCMzIKCWFzc2VtYmx5IGNvZGUgYSBiaXQsIGFuZCB3cmFwcGVkIGl0IGluICNpZmRlZiBfX2kzODZfXy4KCjIwMDAtMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzYy9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglDbGVhbmVkIHVwIGEgZmV3IFVTRVIgZGVwZW5kZW5jaWVzLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIGhNb2R1bGUgcGFyYW1ldGVyIGZyb20gTVpfQWxsb2NEUE1JVGFzaygpLCBhbmQgcmVuYW1lZAoJTVpfS2lsbE1vZHVsZSgpIHRvIE1aX0tpbGxUYXNrKCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUNyZWF0ZSBkbGwva2VybmVsL21lc3NhZ2VzIGRpcmVjdG9yeS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBET1NNRU1fSW5pdCgpIHRha2UgYSBCT09MIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgSE1PRFVMRTE2LCBhbmQKCWluaXRpYWxpemUgRE9TIG1lbW9yeSBwcm9wZXJseSBpbiB0aGUgbmV3IHByb2Nlc3MgbW9kZWwuIE1hZGUKCURPU01FTV9NZW1vcnlCYXNlKCkgdXNlIE1aX0N1cnJlbnQoKS0+aW1nIGluc3RlYWQgb2YgcE1vZHVsZS0+ZG9zX2ltYWdlLgoKCSogbG9hZGVyL3Rhc2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIHVzYWdlIG9mIG9ic29sZXRlIHBNb2R1bGUtPmxwRG9zVGFzay4KCjIwMDAtMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL2NvbW0uYywgbWlzYy9sc3RyLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGlmMTYzMi9zbm9vcC5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1c2lvbnMgb2Ygd2luZ2RpLmggYW5kIHdpbnVzZXIuaAoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL250ZGRrLmgsIGxvYWRlci9tb2R1bGUuYzoKCVJlbW92ZWQgYSBmZXcgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGZyb20gbnRkbGwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIENyZWF0ZVR5cGVMaWIsTEhhc2hWYWxPZk5hbWVTeXMgc3R1YnMuCglDaGVjayBmb3IgY29ycmVjdCBzdHJ1Y3QgbWFnaWMgYmVmb3JlIHJlYWRpbmcgb3V0IG9mIGl0LgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBTbW9vdGhTY3JvbGxXaW5kb3cuCgoJKiBtc2Rvcy9kb3NtZW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaWxsIEJJT1Mgc2VnbWVudHMgdXNpbmcgcG9pbnRlcnMgZnJvbSBET1NNRU1fQmlvcyogZnVuY3Rpb25zLCBpbnN0ZWFkCglvZiBwb2ludGVycyBmcm9tIGdsb2JhbCBoZWFwIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0IHJpZCBvZiBVU0VSMzIgZnVuY3Rpb25zIGluIEtFUk5FTDMyLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgV2luMzIgQ29uc29sZSBpbnRlcmZhY2UgdG8gdGhlIG1haW4gRE9TVk0gZXZlbnQKCWxvb3AuIENsZWFuZWQgdXAgZXZlbnQgZGlzcGF0Y2hpbmcgY29kZSBhIGJpdC4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSBkaXJlY3QgY29uc29sZSBpbnB1dCByb3V0aW5lcyBnbyB0aHJvdWdoIGludDE2LCByYXRoZXIgdGhhbgoJcmVhZGluZyBkaXJlY3RseSBmcm9tIHRoZSBjb25zb2xlIGRyaXZlci4KCgkqIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglvbGUzMiBub3cgcmVxdWlyZXMgbGlua2luZyB3aXRoIGtlcm5lbDMyCglzaGVsbDMyIG5vdyByZXF1aXJlcyBsaW5raW5nIHdpdGgga2VybmVsMzIgYW5kIHNobHdhcGkKCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV2UgYWx3YXlzIGhhdmUgc3RyZXJyb3IsIHNvIG5vIG5lZWQgdG8gaWZkZWYgSEFWRV9TVFJFUlJPUi4KCgkqIHdpbmRvd3Mvd2luLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGhyZ25XbmQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIEdMRVhUIGZ1bmN0aW9uIHByb3RvdHlwZSB0eXBlZGVmcyBkZXRlY3Rpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2lvcG9ydHMuYywgaW5jbHVkZS9taXNjZW11Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUxldCBJbnQwOSByb3V0aW5lcyByZW1lbWJlciBhIGtleXN0cm9rZSdzIEFTQ0lJIGNvZGUsIGlmIGF2YWlsYWJsZS4KCgkqIG1zZG9zL2ludDMzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBpbnQzMyBmdW5jdGlvbiBzdHVicy4KCgkqIG1zZG9zL2ludDEwLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlZCBhIGZldyBjb3JlIGludDEwIHJvdXRpbmVzIHRvIHVzZSB0aGUgQklPUyBkYXRhIHNlZ21lbnQgY3Vyc29yCglwb3NpdGlvbnMgYW5kIHRoZSBWR0Egcm91dGluZXMsIGluc3RlYWQgb2YgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZQoJY29uc29sZSBkcml2ZXIuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVHZXRBdXRvQ29udmVydC4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRmluZFJlc291cmNlRXhBL1cgc2hvdWxkIHNlYXJjaCBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZSByZXNvdXJjZSBvbmx5LgoJRmluZFJlc291cmNlQS9XIHNob3VsZCBzZWFyY2ggZm9yIGFueSBsYW5ndWFnZSByZXNvdXJjZS4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTm8gbG9uZ2VyIGNyYXNoIHdoZW4gcnVubmluZyB3aXRoIERpcmVjdERyYXcgd2l0aCBhIEREQ2xpcHBlciBpbgoJLWRlc2t0b3AgbW9kZS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglOQ19Eb05DSGl0VGVzdCBub3cgcmV0dXJucyBIVE5PV0hFUkUgbGlrZSBXaW5kb3dzIGlzIGRvaW5nIHdoZW4KCWNsaWNraW5nIG9uIGEgd2luZG93IGhhdmluZyBhIGN1c3RvbWl6ZSBub24gY2xpZW50IGFyZWEuCgoyMDAwLTA3LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgWDExRFJWX0RJQl9VcGRhdGVESUJTZWN0aW9uMiB0aGF0IHRha2VzIGEgSEJJVE1BUCBwYXJhbWV0ZXIuCgoJKiBtZW1vcnkvY29kZXBhZ2UuYzoKCVdvbGZnYW5nIFNjaHdvdHplciA8d29zY2h3b3RAZ214Lm5ldD4KCUFkZGVkIE5VTEwgcG9pbnRlciBjaGVja3MuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfc2hhcGUuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfc2hhcGUuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIGltcGxlbWVudGF0aW9uIG9mIFNldFdpbmRvd3NSZ24gYW5kIEdldFdpbmRvd1JnbgoJLSBYMTFEUlYgYW5kIFRUWURSViB1cGRhdGVkIHdpdGggbmV3IEFQSSBTZXRXaW5kb3dSZ24KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1lbW9yeS9nbG9iYWwuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIHRoZSBoTW9kdWxlIHBhcmFtZXRlciBmcm9tIHZhcmlvdXMgRE9TTUVNIHJvdXRpbmVzLCB0aGUgRE9TTUVNCglyb3V0aW5lcyBub3cgYWx3YXlzIHVzZSB0aGUgY3VycmVudCBtZW1vcnkgc3BhY2UuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93bWMvbWN5Lnk6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBzcGVjaWZpYyBmaXhlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MvZGVmd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU5vdyB0aGUgc2VydmljZSB0aHJlYWQgaXMgbm8gbW9yZSBpbiBjaGFyZ2Ugb2YgZXJhc2luZyB0aGUgYmFja2dyb3VuZAoJb2YgdGhlIFdpbmRvdy4gU2VydmljZSB0aHJlYWQgaXMgZG9pbmcgdGhlIGludmFsaWRhdGlvbiBwYXJ0LCBhbmQgdGhlCglhcHBsaWNhdGlvbiB0aHJlYWQgaXMgZG9pbmcgdGhlIGVyYXNpbmcgcGFydC4gQWxsIHRoaXMgaGFzIGJlZW4KCWltcGxlbWVudGVkIHVzaW5nIFdNX1NZTkNQQUlOVCBtZXNzYWdlLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdHViIGZvciBPTEUzMi5PbGVTZXRBdXRvQ29udmVydCBuZWVkZWQgYnkgQWRvYmUgUGhvdG9zaG9wIDQuMC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBjcmFzaCBpZiB3aW5kb3cgd2FzIG5vdCBmb3VuZC4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBVcGRhdGVXaW5kb3cgc2hvdWxkIHJlZnJlc2ggYWxsIGNoaWxkcmVuIHRoYXQgaGF2ZSBhbiB1cGRhdGUgcmVnaW9uLgoJLSBJbiBESUFMT0dfQ3JlYXRlSW5kaXJlY3QgVXBkYXRlV2luZG93IHNob3VsZG4ndCBiZSBjYWxsZWQuIFdpbmUgd2lsbCBnZW5lcmF0ZQoJICBhIFdNX1BBSU5UIGV2ZW50dWFsbHkgZm9yIHRoZSBkaWFsb2csIG5vIG5lZWQgdG8gZm9yY2UgYSBwYWludCByaWdodCBhd2F5LgoJKGJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBKYW1lcyBIYXRoZXdheSBpbiB0aGUgQ29yZWwgdHJlZSkKCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUp1c3QgZ2V0IERPUyB0YXNrIHN0cnVjdHVyZSBmcm9tIE1aX0N1cnJlbnQoKSwgaW5zdGVhZCBvZiAoY2x1bXNpbHkpCgl0cnlpbmcgdG8gZmluZCBhbmQgcmVhZCBmcm9tIHRoZSBjdXJyZW50IHRhc2sncyBtb2R1bGUgc3RydWN0dXJlcy4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIGEgZ2xvYmFsIGFzbSBoZWxwZXIgZnVuY3Rpb24gdG8gaGFuZGxlIDMyLWJpdCBSTUNCIGNhbGxzLCBzbyB3ZQoJZG9uJ3QgbmVlZCB0aG9zZSBjb21wbGV4IGNvbnN0cmFpbnRzIGVpdGhlci4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFsd2F5cyBnZXQgYSBoYXJkd2FyZSBtZXNzYWdlIGZyb20gdGhlIHN5c3RlbSBxdWV1ZSBpbiBQZWVrTWVzc2FnZSwKCWV2ZW4gaWYgbm8gc3VjaCB3YWtlIGJpdHMgYXJlIHNldCwgYmVjYXVzZSBpbiBhIFBlZWtNZXNzYWdlIGxvb3AsCgl0aGVyZSdzIG5vIHNsZWVwaW5nLCBzbyB0aGUgbmVjZXNzYXJ5IHdha2UgYml0cyBhcmUgbmV2ZXIgc2V0Li4uCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgaW5jbHVkZS9vbGVjdGwuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBDb25uZWN0aW9uIFBvaW50IHN1cHBvcnQgdG8gT0xFIGZvbnQgb2JqZWN0cy4KCUFkZCBzb21lIG1vcmUgVFJBQ0UoKXMuCgoJKiBkbGxzLyovKi5zcGVjOgoJQWRkZWQgJ293bmVyJyBmaWVsZCB0byAxNi1iaXQgc3BlYyBmaWxlcyB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZQoJMzItYml0IGRsbCB0aGF0IGNvbnRhaW5zIGl0LgoKMjAwMC0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vc291bmQuc3BlYywgZGxscy93aW5tbS9zb3VuZDE2LmMsIGluY2x1ZGUvc3RyZXNzLmgsIGluY2x1ZGUvd2luZS93aW5lc291bmQuaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9zdHJlc3MuYywgZGxscy9rZXJuZWwvc3RyZXNzLnNwZWMsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJTWVyZ2VkIHNldHVweC5kbGwgaW50byBzZXR1cGFwaS5kbGwuCglNZXJnZWQgc291bmQuZGxsIGludG8gd2lubW0uZGxsLgoJTWVyZ2VkIHN0cmVzcy5kbGwgaW50byBrZXJuZWwzMi5kbGwuCgoJKiBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmMsIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvZHBsYXlfbWFpbi5jLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9tc25ldF9tYWluLmMsIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGZvbGRlci9zaGZvbGRlcl9tYWluLmMsIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd293MzIvd293X21haW4uYzoKCUFkZGVkIGEgZmV3IGVtcHR5IHNvdXJjZSBmaWxlcyBzbyB0aGF0IGVhY2ggZGxsIGhhcyBhdCBsZWFzdCBvbmUgQwoJZmlsZS4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBpbmNsdWRlL2RyaXZlci5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS92ZncuaCwgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHdpbmRvd3MvZHJpdmVyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIHJlbW92ZWQgKG5vdyBvYnNvbGV0ZSkgZHJpdmVyLmggZmlsZSAoaXQncyBjb250ZW50IGlzIG5vdyBpbiBtbXN5c3RlbS5oKQoJLSB1cGdyYWRlZCB2ZncuaCBjb250ZW50CgoJKiBtc2Rvcy9kcG1pLmM6IEF2b2lkIGNsb2JiZXJpbmcgJWVieC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVJldHVybiB0aGUgcHJvcGVyIGVycm9yIGNvZGUgd2hlbiBhIDE2LWJpdCB0YXNrIGZhaWxlZCB0byBzdGFydAoJKHRoYW5rcyB0byBQZXRlciBHYW50ZW4pLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGFwdGVkIHRvIHRoZSByZWNlbnQgd2luZWJ1aWxkIHJlbmFtZS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgZGV0ZWN0aW9uIGNvZGUgZm9yIHZlcnkgb2xkIFdpbmRvd3MgKDEuMSwgMi4wLCAuLi4pIGJpbmFyaWVzIHRvCglNT0RVTEVfR2V0QmluYXJ5VHlwZSgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1vdmVkIHNobHdhcGkgcm91dGluZXMgZnJvbSBzaGVsbDMyLmRsbCB0byBzaGx3YXBpLmRsbC4KCjIwMDAtMDctMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3VuaWNvZGUuYywgc2VydmVyL3VuaWNvZGUuaCwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB1bmljb2RlLy5jdnNpZ25vcmUsIHVuaWNvZGUvTWFrZWZpbGUuaW46CglNYWtlIHVuaWNvZGUubyBpbnRvIGEgc2VwYXJhdGUgRUxGIGxpYnJhcnkgc28gdGhhdCB3ZSBjYW4gdXNlIGl0IGZyb20KCXRoZSB3aW5lc2VydmVyIHRvby4KCgkqIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY2Ryb20uaCwgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGZpeGVkIGEgZ3Jvc3MgYnVnIGluIFNldEN1cnJlbnREaXJlY3RvcnlBICh3aGVyZSBjaGFuZ2luZyB0byBhIG5ldwoJICBub24tZXhpc3RlbnQgZGlyZWN0b3J5IHdvdWxkIGxlYXZlIHRoZSBuZXcgZHJpdmUgZW5hYmxlZCB1cG9uIGFib3J0aW5nCgkgIChmaXhlcyBDdXRlRlRQIGluc3RhbGwgYW5kIHNob3VsZCBmaXggTUFOWSBhcHBzKQoJICBUaGlzIGhhcyBwcm9iYWJseSBiZWVuIGNhdXNlZCBieSBteXNlbGYuICpicm93bnBhcGVyYmFnKgoJLSBhZGRlZCBHZXRWb2x1bWVJbmZvcm1hdGlvbiBzZXJpYWwgbnVtYmVyIGJ1Zy1mb3ItYnVnIGNvbXBhdGliaWxpdHkKCS0gY29ycmVjdGVkIFVuaWNvZGUgbGFiZWxzIChiZXR0ZXIgQ0QtUk9NIGhhbmRsaW5nIGluIGdlbmVyYWwpCgktIG1vdmVkIENELVJPTSBsYWJlbCBkZXRlY3Rpb24gY29kZSB0byBtaXNjL2Nkcm9tLmMKCS0gcG9zc2libGUgdG8gdXNlIGxvb3BiYWNrIG1vdW50ZWQgSVNPOTY2MCBmaWxlcwoJLSBpbml0IHNvbWUgdW5pbml0aWFsaXNlZCBkcml2ZSBmaWVsZHMKCS0gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgaGVhZGVyIGluY2x1ZGVzCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRlc3Ryb3kgdGhlIGNhcmV0IG9uIFNXUF9ISURFV0lORE9XLgoKCSogZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwva2VybmVsLnJjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy93aW5lcnJfZW51Lm1jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9sc3RyLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUltcHJvdmVkIEZvcm1hdE1lc3NhZ2U6CgktIEFkZGVkIGZ1bGwgc3VwcG9ydCBmb3IgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0KCS0gSW1wbGVtZW50ZWQgbGFuZ3VhZ2Ugc2VhcmNoIGFzIGRvY3VtZW50ZWQKCS0gSWxsZWdhbCBjb21iaW5hdGlvbnMgb2Ygb3B0aW9ucyB0cmFwcGVkLgoJLSBNZXNzYWdlIHRhYmxlIGZvciBzeXN0ZW0gbWVzc2FnZXMgYWRkZWQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBGT1JNQVRfTUVTU0FHRSBmbGFncyBkZWZpbml0aW9uIHRvIHdpbmJhc2UuaC4KCgkqIE1ha2UucnVsZXMuaW46CglBZGRlZCBydWxlcyBmb3IgbWVzc2FnZSBjb21waWxlciAubWMgZmlsZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIG1pc2MvY29tbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3Jhc2FwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXJpYWx1aS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBhIGJ1Zy13b3JrLWFyb3VuZCBmb3IgQmVya2VsZXkgeWFjYyAoYnlhY2MpIHdoaWNoCgkgIGRvZXMgbm90IGdlbmVyYXRlIHByb3BlciBkZWZhdWx0IHRyYW5zaXRpb24gcnVsZXMgZm9yIG5vbi10ZXJtaW5hbHMuCgkgIFNlZSBjb21tZW50cyBpbiBwYXJzZXIueSBob3cgdGhlIGZpeCB3b3Jrcy4KCS0gQ2hhbmdlZCB0aGUgZXJyb3ItbGluZS9jaGFyIHBvc2l0aW9uIHRvIG1ha2UgZW1hY3MgaGFwcHkgcGFyc2luZwoJICB0aGUgcG9zaXRpb24gb2YgdGhlIGVycm9yLgoJLSBBZGRlZCBjb21tZW50cyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBpbiB3aGljaCBvcmRlciB0aGUgbGluZS1udW1lcgoJICBhbmQgY2hhcmFjdGVyLXBvc2l0aW9uIG9mIHRoZSBlcnJvciBpcyB3cml0dGVuLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBsY2FsbCBvcGNvZGVzLCBzbyBhbGwgZ2FzLWVzIHVuZGVyc3RhbmQgaXQuLi4KCgkqIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZmxhdHRodW5rLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvdzMyc2NvbWIuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi91dHRodW5rLmMsIHJlbGF5MzIvd293dGh1bmsuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2ZsYXR0aHVuay5oLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1vdmVkIHRodW5raW5nIGZ1bmN0aW9ucyBvZmYgdG8ga2VybmVsMzIuZGxsLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zZWMuYywgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvcmVnaXN0cnkuYzoKCVRlbXBvcmFyaWx5IG1vdmVkIGFkdmFwaTMyIHJlZ2lzdHJ5IHN1cHBvcnQgYmFjayBpbnRvIGxpYndpbmUuc28sIGFuZAoJbWFkZSBhZHZhcGkzMiBhIHNlcGFyYXRlIGRsbC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWZpeGVkIGEgbnVtYmVyIG9mIGxvbmcgc3RhbmRpbmcgYnVnczoKCSAgICAtIHNlZ21lbnRlZCBleHByZXNzaW9ucyBkaWRuJ3QgZGlzcGxheSBjb3JyZWN0bHkKCSAgICAtIHVzaW5nIGR5bmFtaWMgc2l6ZSBhcnJheSBmb3IgbmVzdGVkIHR5cGVzIHBhcnNpbmcKCSAgICAtIGNvcnJlY3QgZGlzcGxheSBvZiBzb3VyY2UgY29kZSBhZnRlciBhIGNyYXNoCglmYWN0b3JpemVkIHNvbWUgY29kZQoKCSogZGxscy9nZGkvd2luZy5jLCBkbGxzL2dkaS93aW5nLnNwZWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbjoKCU1lcmdlZCB3aW5nLmRsbCBpbnRvIGdkaTMyLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IHRoZSBhdHRlbXB0IHRvIGRyYXcgaW52YWxpZCBpbWFnZSBpbmRleGVzLgoJUHJvdmlkZSB0aGUgdHdvIHBpeGVsIGJ1ZmZlciBiZXR3ZWVuIHRoZSBpbWFnZSBhbmQgdGhlIGxhYmVsLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgZ2VuZXJpYyBpbXBsZW1lbnRpb24gb2YgSUNvbm5lY3Rpb25Qb2ludC9JRW51bUNvbm5lY3Rpb25zLgoKCSogdG9vbHMvZm50MmJkZi5jLCB0b29scy9mbnQyYmRmLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIGZudDJiZGYgcHJvZHVjZSBjb3JyZWN0IGZvbnRzLgoKCSogbXNkb3MvaW50MTYuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIGludDE2IHJlYWQgZnJvbSB0aGUgQklPUyBrZXlib2FyZCBidWZmZXIsIG5vdCBkaXJlY3RseSBmcm9tIHRoZQoJY29uc29sZSBkcml2ZXIuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYnJva2VuIGFzc2VtYmxlci4gUmVtb3ZlZCBzdXBwb3J0IGZvciBvbGQgcHJvdGVjdGVkLW1vZGUgaGFjawoJZm9yIHJ1bm5pbmcgcmVhbC1tb2RlIGNvZGUgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB2bTg2OyB0aGUKCWN1cnJlbnQgQ2FsbFJNLT5STUNCIHNob3J0Y3V0IGNvZGUgc2hvdWxkIHRha2UgY2FyZSBvZiBhbGwKCVdpbmUtc3VwcGxpZWQgUk0gQVBJcyAoc3VjaCBhcyBET1NBU1BJKSBhbnl3YXkuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCVBlcmZvcm0gTkVfSW5pdFByb2Nlc3MgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5ldyB0YXNrLgoKMjAwMC0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc2FjbS93aW5lYWNtLmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL2tlcm5lbC93aW44N2VtLnNwZWMsIGRsbHMva2VybmVsL3dpbmRlYnVnLmMsIGRsbHMva2VybmVsL3dpbmRlYnVnLnNwZWM6CglNZXJnZWQgbXNhY20gYW5kIG1zYWNtMzIgZGxscy4KCU1lcmdlZCB3aW44N2VtIGFuZCB3aW5kZWJ1ZyBpbnRvIGtlcm5lbDMyLmRsbC4KCjIwMDAtMDctMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBpbnQvSEFORExFIG1pc21hdGNoZXMgcmV2ZWFsZWQgYnkgLURTVFJJQ1QuCglSZXBsYWNlZCB0aGUgV2luMTYgaG1lbWNweTE2IChvYnNvbGV0ZSkgd2l0aCBtZW1jcHkuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgV2luTWFpbidzIHNpZ25hdHVyZS4KCVJlcGxhY2VkIHRoZSBXaW4xNiBobWVtY3B5MTYgKG9ic29sZXRlKSB3aXRoIG1lbWNweS4KCVJlbW92ZWQgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byB0aGUgTGFuZ3VhZ2VzIGFycmF5LgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9wcm9nbWFuL3N0cmluZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gdGhlIExhbmd1YWdlcyBhcnJheS4KCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgV2luTWFpbidzIHNpZ25hdHVyZS4KCUZpeGVkIHBhcmFtZXRlciBvcmRlciBmb3IgdGhlIGNhbGwgdG8gQ3JlYXRlV2luZG93LgoKCSogbGlidGVzdC9oZWxsby5jLCBsaWJ0ZXN0L2hlbGxvMi5jLCBsaWJ0ZXN0L2hlbGxvMy5jLCBsaWJ0ZXN0L2hlbGxvNC5jLCBsaWJ0ZXN0L2hlbGxvNS5jLCBsaWJ0ZXN0L25ldy5jLCBsaWJ0ZXN0L3JvbGV4LmMsIGxpYnRlc3QvdmFydGVzdC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBXaW5NYWluJ3Mgc2lnbmF0dXJlLgoKCSogcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCAtRFNUUklDVC4KCUFkZGVkIG1pc3NpbmcgbGlicmFyaWVzIGNvbWN0bDMyIGFuZCBycGNydDQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRzIGFuIGluaXRpYWwgV1NBSW9jdGwgZnVuY3Rpb24gd2l0aCBzdXBwb3J0IGZvciBvbmx5IHRoZQoJU0lPX0dFVF9JTlRFUkZBQ0VfTElTVCBjb21tYW5kLiAgQWRkcyBpbml0aWFsIGNvZGUgdG8gV3NDb250cm9sCglmdW5jdGlvbiB0byBzdXBwb3J0IHRoZSBXU0NOVExfVENQSVBfUVVFUllfSU5GTyBjb21tYW5kLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29tcGlsYXRpb24gZml4ZXMgZm9yIE9wZW5HTC4KCgkqIE1ha2UucnVsZXMuaW46IE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUNvcnJlY3RlZCBjMm1hbiBmbGFncy4gSXQgc3RpbGwgY3Jhc2hlcyBhbnlob3cgOi0vCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRGV0ZWN0IGJyb2tlbiBnbGV4dC5oIGhlYWRlcnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmg6CglNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglBZGRlZCBzb21lIGJhc2ljIHRleHQgZGlzcGxheSBhbmQgZWRpdGluZyBjYXBhYmlsaXRpZXMsIGN1cnNvcgoJcG9zaXRpb25pbmcsIGEgYml0IG9mIHNjcm9sbGluZyBhbmQgYSB0ZXh0IGZpbGUgbG9hZGVyLgoKCSogaW5jbHVkZS90YXBpLmg6IE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUltcGxlbWVudGVkIGxpbmVHZXRDb3VudHJ5LiAod29ya3Mgd2l0aCBIeXBlclRybS5leGUpCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRm9jdXMgaGFuZGxpbmcsIHZpc3VhbCBjaGFuZ2VzICsgbWlzYyBmaXhlcy4KCgkqIGRsbHMvdGFwaTMyL2xpbmUuYzogTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJSW1wbGVtZW50ZWQgbGluZUdldENvdW50cnkuICh3b3JrcyB3aXRoIEh5cGVyVHJtLmV4ZSkKCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgZHVwbGljYXRlIGRlY2xhcmF0aW9uIG9mIEFkZEFjY2Vzc0FsbG93ZWRBY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBmdW5jdGlvbiBTZXRJdGVtIGlzIGNhbGxlZCB0byBzZWxlY3QgYW4gaXRlbQoJb3Igc2V0IGl0cyBmb2N1cy4KCgkqIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2QzZHZlYy5pbmw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGEgZmV3IEMrKyBvcGVyYXRvcnMgdG8gRGlyZWN0M0Qgc3RydWN0dXJlcywgYW5kIG1hZGUgc29tZSB1bmlvbnMKCSduYW1lbGVzcycuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW5zdXJlZCB0aGF0IGFsbCBwYXJhbWV0ZXJzIG9mIGFzeW5jIGZ1bmN0aW9ucyBhcmUgY29waWVkIGJlZm9yZQoJcmV0dXJuaWcgZnJvbSByZXF1ZXN0LgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzLCBkb2N1bWVudGF0aW9uL3gxMWRydiwgdG9vbHMvd2luZWNvbmY6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBhIGZldyB0eXBvcyBhbmQgc3VjaC4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc29tZSBEaXJlY3REcmF3Ny1yZWxhdGVkIGRlZmluaXRpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2Ugbm9uLWV4aXN0ZW5jZSBvZiAoZilsZXggYW4gZXJyb3IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJRGlyZWN0RHJhdyxJRGlyZWN0RHJhdzIsSURpcmVjdERyYXc0IGZpeGVkIHVwIGluIHJlZ2FyZCB0byBDT00gdXNhZ2UuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGZldyBXaW4zMiBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWR1Y2Ugc2NvcGUgb2YgIlN0YXR1cyIgI2lmZGVmIGhhY2suCgoJKiBpZjE2MzIvcmVsYXkuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2F5IHRoYXQgIk5vIGhhbmRsZXIiIG1lc3NhZ2VzIGFzIGZhdGFsLgoKCSogd2luZWRlZmF1bHQucmVnOiBGaXhlZCBTaGFyZWREaXIgbG9jYXRpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1zZG9zL2RwbWkuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3dpbm50Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZSB0aGUgVjg2QkFTRSBtYWNybyB0byBjYWxsIERPU01FTV9NZW1vcnlCYXNlKCkgaW5zdGVhZCBvZiB1c2luZwoJdGhlIHVnbHkgRHI3IGhhY2suCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZpcnN0IHNlZWsgb24gTUVNIG1taW8gZmlsZXMuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgY2FsbHMgdG8gRElBTE9HX0RvRGlhbG9nQm94IGFuZCBESUFMT0dfQ3JlYXRlSW5kaXJlY3QuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgZmV3IG1vcmUgZmllbGRzIHRvIEhUVFBfR2V0U3RkSGVhZGVySW5kZXgoKSBhbmQgZml4IHNvbWUgdHlwb3MuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCVB1dCB0aGUgVVJMIHBhcmFtZXRlciBsaXN0IGluIHdpdGggdGhlIFVSTCBwYXRoIGlmIHRoZSBFeHRyYUluZm8KCWJ1ZmZlciBpc24ndCBzcGVjaWZpZWQuCgoJKiBjb250cm9scy9pY29udGl0bGUuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgY2FsY3VsYXRpb24gb2YgYnVmZmVyIGxlbmd0aCBhZnRlciBzd2l0Y2ggb2Ygd2luZG93IHRleHQgdG8KCXVuaWNvZGUuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDb21tZW50IG91dCBhIG5vbmZ1bmN0aW9uYWwgRE9TIHBhcnQgb2YgZGVidWdnZXIuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHN0dWIgZm9yIFJhc0hhbmdVcEEoKS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmV2luZG93UHJvYyBzaG91bGQgcGFzcyB1bmhhbmRsZWQgV01fTU9VU0VXSEVFTCB0byBwYXJlbnQsIGFjY29yZGluZwoJdG8gZG9jdW1lbnRhdGlvbi4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgZmV3IHByb2JsZW1zLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJLSBDaGFuZ2VkIHRoZSB0ZW1wb3JhcnkgYnVmZmVyIGZvciBsb2FkaW5nIHJlc291cmNlcyBmcm9tIDI1NiB0byA1MTIKCS0gRGVmaW5lIE1BWF9SRVNPVVJDRV9TVFJJTkdfTEVOR1RIIGluc3RlYWQgb2YgdXNpbmcgaXQgbWFnaWNhbGx5IHRocm91Z2hvdXQKCSAgdGhlIGZ1bmN0aW9uCgktIFVzZSBsc3RyY3B5blcgaW5zdGVhZCBvZiBsc3RyY3B5VwoKMjAwMC0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMDcxNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgYXNzZW1ibHkgd3JhcHBlciBmb3IgY2FsbGluZyB3aW5kb3cgcHJvY2VkdXJlcy4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglHZXQgZnVsbCBwYXRoIG9mIGFyZ3ZbMF0gYmVmb3JlIHdlIGNoYW5nZSBkaXJlY3Rvcmllcy4KCU1ha2Ugc3VyZSBwcm9jZXNzIG5hbWVzIGFyZSBsb25nIHBhdGggbmFtZXMuCglDbGVhbmVkIHVwIGluaXRpYWxpc2F0aW9uIGEgYml0LgoKCSogc2VydmVyL3NvY2suYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW4gc2V0X3NvY2tldF9ldmVudCwgdGhlIGV2ZW50IHNob3VsZCBiZSBzaWduYWxlZCBpZiB0aGVyZSdzIGEgcGVuZGluZwoJbmV0d29yayBldmVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBldmVudHMgdGhlIGFwcGxpY2F0aW9uIHdhbnRlZCB0byBiZQoJbm90aWZpZWQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbG9hZGVyL3Rhc2suYywgd2luZG93cy9jbGFzcy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgdG9vbHMvd2luZWluc3RhbGwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvd2ludXNlci5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEb2MgYW5kIHRyYWNlIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcmFuc21pdCBjdXJyZW50IGRpcmVjdG9yeSBzZXR0aW5ncyB0byBuZXdseSBjcmVhdGVkIHByb2Nlc3Nlcy4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbjoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUFkZGVkIEdlcm1hbiBpbnN0YWxsYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gbWFudWFsLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVJhdWwgRmVybmFuZGVzIDxyZ2ZAaWVnLmNvbS5icj4KCUFkZGVkIEJyYXppbGlhbiBrZXlib2FyZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGNsaWVudCB3aW5kb3cgYmVmb3JlIG93bmVyLWRyYXduIHBhaW50aW5nLgoKCSogd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCB0aGUgIlNoYXJlZERpciIgcmVnaXN0cnkga2V5LgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IERpcmVjdDNEIHN1cHBvcnQgYW5kIGEgbG90IG9mIHdhcm5pbmdzCgktIGFkZCBzdXBwb3J0IGZvciBERHJhdyBpbiBhIHdpbmRvdyAobm90IG9wdGltaXplZCB5ZXQpCgktIGNsZWFucyB1cCBPcGVuR0wgZXh0ZW5zaW9ucyBoYW5kbGluZyBmb3IgRDNECgoJKiBjb250cm9scy9zdGF0aWMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglCYWNrZ3JvdW5kIG9mIFNTX1NJTVBMRSBzdGF0aWMgY29udHJvbCBpcyBub3QgZmlsbGVkICh1bmxlc3MgaXQgaGFzCglTU19OT1BSRUZJWCB0b28pLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgVU5JWCBjd2QgdG8gLyBhZnRlciBjYWxjdWxhdGluZyBXSU5FIGN1cnJlbnQgZGlyZWN0b3J5ICh0byBhbGxvdwoJQ0QgdW5tb3VudHMpLgoKMjAwMC0wNy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTmV3IHZlcnNpb24gb2YgdGhlIHBhdGNoIGZyb20gRnJhbmNvaXMgSmFjcXVlcyB3aXRoIGEgbW9kaWZpY2F0aW9uIG9mCglteSBvd24gdGhhdCBtYWtlcyBldmVyeWJvZHkgaGFwcHkgOi0pCgoJKiBtaXNjL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSG9vayBzZXJpYWx1aSBkbGwgaW50byBleGlzdGluZyBjb21tIGZ1bmN0aW9ucy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLmgsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgc2VyaWFsdWkgZGxsIGNvbnRhaW5pbmcgQ29tbUNvbmZpZ0RpYWxvZywKCUdldERlZmF1bHRDb21tQ29uZmlnIGFuZCBTZXREZWZhdWx0Q29tbUNvbmZpZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzLgoJLSBNaW5vciBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUFsbCBzdGFuZGFyZCB3aW5kb3cgY29udHJvbHMgc2hvdWxkIGhhdmUgQ1NfUEFSRU5UREMsIGJ1dCBzaG91bGQgc3RpbGwKCWNsaXAgdG8gdGhlIGNvbnRyb2wgd2luZG93LgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglKb2huIFIgLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJV2UgYWxzbyBoYXZlIHRvIHZhbGlkYXRlIHRoZSBmcmFtZSB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZW4gdGhlCglhcHAgZG9lc24ndCBjYWxsIEJlZ2luUGFpbnQuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUV4dGVuZCB0aGUgV1NPQ0szMiB3YXJuaW5nIGluIGNlcnRhaW4gZnVuY3Rpb25zIHRvIG1lbnRpb24gV1MyXzMyIHRvby4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRWQgU25vdyA8ZWRfc25vd0B0dG1lbmdpbmVlcmluZy5jb20+CglGaXhlcyB1bm11dGluZyB3aGVuIHVubXV0ZWQuCglVbmlmaWVzIHNjYWxlIHJlcG9ydGVkIHdpdGggc2NhbGUgdXNlZCBmb3Igdm9sdW1lIGNvbnRyb2wuCglIYWNrIGZvciBCYXNzL1RyZWJsZSB1bnRpbCBiZXR0ZXIgZml4IGlzIGNvbXBsZXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgREJDUy91bmljb2RlIGVuY29kaW5nIHRlbXBsYXRlcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2xlYXIgc2VsZWN0aW9uIHdoZW4gaW5pdGlhbCBlbnRyeSBpcyBub3QgaW4gdGhlIGxpc3QuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBvbGUvb2xlMm5scy5jOgoJTWFkZSAtLWxhbmd1YWdlIGJlaGF2ZSB0aGUgc2FtZSBhcyBzZXR0aW5nIHRoZSBMQU5HVUFHRSBlbnZpcm9ubWVudAoJdmFyaWFibGUuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3d0eXBlcy5oLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgcnBjcnQ0LmRsbC4KCUltcGxlbWVudCBVdWlkQ3JlYXRlICh1c2luZyBleGlzdGluZyBjb2RlIGZyb20gQ29DcmVhdGVHdWlkKS4KCUNvQ3JlYXRlR3VpZCBjYWxscyBVdWlkQ3JlYXRlLgoKCSogbWVtb3J5L2hlYXAuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIHN1cHBvcnRpbmcgREJDUy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJUm9iIEZhcm51bSA8cmZhcm51bUBtaW5kc3ByaW5nLmNvbT4KCUlnbm9yZSBpQml0bWFwIHdpZHRoIHdoZW4gZHJhd2luZyBmbGF0IHRvb2xiYXIuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRml4ZWQgYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiB0aGUgUEUgbG9hZGVyLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCUVuc3VyZSB0aGUgdmFsaWRpdHkgb2YgaE9sZEZvY3VzIGJlZm9yZSBjYWxsaW5nIFdJTl9HZXRUb3BQYXJlbnQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCURyZXcgUm9ubmViZXJnIDxkcmV3QGNvZG9uLnByaW5jZXRvbi5lZHU+CglJZ25vcmUgYnJva2VuIGZvbnRzIHdoZW4gYnVpbGRpbmcgY2FjaGUgZmlsZS4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWxsb3cgU2V0V2luZG93TG9uZyguLi4gR1dMX1NUWUxFKSB0byBjaGFuZ2UgdmlzaWJsZSBiaXQuCgoJKiBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5OgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+RAoJVGV4dCBvZiBXV04gYXJ0aWNsZSAiVGhlIFJlZ2lzdHJ5Ii4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJLSBOZXcgZnVuY3Rpb24gaW4gYXNwaS5jIFNDU0lfRml4X0NNRF9MRU4gd2hpY2ggZGV0ZXJtaW5lcyBpZiBMaW51eCBpcwoJICBndWVzc2luZyB0aGUgY29tbWFuZCBsZW5ndGggY29ycmVjdGx5LCBhbmQgaWYgbm90LCB0ZWxsJ3MgaXQgd2hhdCdzIHVwLgoJLSBDaGFuZ2VkIHN0cmNhdCB0byBzdHJjcHkgaW4gU2VuZEFTUEkzMkNvbW1hbmQgdG8gYXZvaWQgcmVxdWlyaW5nIHRoZQoJICBjYWxsZXIgdG8gY2xlYXIgdGhlIGZpZWxkcy4KCS0gQWRkZWQgYSBuZXcgZmllbGQgdG8gSEFfVW5pcXVlIGNvbnRlbnQgdG8gZml4IHNvbWUgYXBwbGljYXRpb25zLiAgV2lsbAoJICBmaXggdGhpcyBmb3IgZ29vZCBhdCBhIGxhdGVyIGRhdGUuCgktIEFkZGVkIFRSQUNFIHRvIEdldEFTUEkzMkRMTFZlcnNpb24gKGFuZCBGSVhNRSB3aGVuIG5vdCBydW5uaW5nIHVuZGVyCgkgIExpbnV4KQoJLSBBZGRlZCBzb21lIGNvbnN0YW50cyB0byB3aW5lc2NzaS5oCgkod2l0aCB0aGUgaGVscCBvZiBCZXJuZCBCZXJuaWUgTWV5ZXIgPGJtZXllckBjcy5tb25hc2guZWR1LmF1PikKCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglTdHVicyBmb3IgQ3JlYXRlRGVza3RvcEEgYW5kIEVudW1EZXNrdG9wV2luZG93cy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgd3MyXzMyIGxvYWRvcmRlci4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglUcnkgdG8gdW5saW5rIG91dHB1dCBmaWxlIGJlZm9yZSBvcGVuaW5nIGl0LgoKCSogY29udHJvbHMvZWRpdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCAlcyBieSAlcCBpbiBFRElUX1dNX1NldFRleHQuCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFdTQVdhaXRGb3JNdWx0aXBsZUV2ZW50cyAoYWxpYXMgdG8gV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZCBhIHdhcm5pbmcgd2hlbiB0aGUgbm9ybWFsIGxvYWQgYWRkcmVzcyBmb3IgYSB3aW4zMiBwcm9ncmFtIGlzIG5vdAoJYXZhaWxhYmxlLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU9MRSBwaWN0dXJlIG9iamVjdCBpbXBsZW1lbnRhdGlvbi4KCgkqIG1pc2MvY29tbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBhbiBpbmNvcnJlY3QgZm9ybWF0IHN0cmluZy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgbG9hZG9yZGVyIGVudHJ5IGZvciB0aGUgTGludXggZ2xpZGUzeCBsaWJyYXJ5LgoKCSogd2luZWRlZmF1bHQucmVnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgIkNvbW1vbkZpbGVzRGlyIj0iQzpcUHJvZ3JhbSBGaWxlc1xDb21tb24gRmlsZXMiLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIFBlbnRpdW0gUHJvLzIvMy80IGNvbmRpdGlvbmFsIG1vdmUgaW5zdHJ1Y3Rpb25zLgoKMjAwMC0wNy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJU2V0IGFuc2kvb2VtL21hYyBjb2RlIHBhZ2VzIGZyb20gY3VycmVudCBsb2NhbGUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlIGZvciByZWFsbHkgY2x1ZWxlc3MgbmV3Ymllcy4KCgkqIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVN0dWIgZm9yIHRoZSBBQ01fTUVUUklDX01BWF9TSVpFX0ZPUk1BVCBjb21tYW5kIG9mIGFjbU1ldHJpY3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgZmxpcGNoYWluIGFuZCBqdXN0IHJldHVybiB0aGUgY3VycmVudCBzdXJmYWNlIGlmIGl0CgloYXBwZW5zLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIF92c25wcmludGYgYnkgY2FsbGluZyB3dnNucHJpbnRmQS4KCgkqIG9iamVjdHMvZGliLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluIENyZWF0ZURJQlNlY3Rpb24gZnVuY3Rpb24sIGlmIGhkYyBpcyBOVUxMIGl0IG5vdyB1c2VzIHRoZSBkZXNrdG9wIERDCglpbnN0ZWFkIG9mIGZhaWxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgVE9PTEJBUl9EcmF3U3RyaW5nKCkgdG8gb2Zmc2V0IGJ1dHRvbiB0ZXh0IGlmIGluZm9QdHItPmhpbWxEZWYKCWlzIG5vbi16ZXJvLiAgQmV0dGVyIGZpeCB0aGFuIG15IHByZXZpb3VzIHBhdGNoLgoKMjAwMC0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUxhenkgaW5pdGlhbGlzYXRpb24gb2YgdGhyZWFkIGxvY2FsZS4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBpbmNsdWRlL2RwbG9iYnkuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1ha2UgcmVmIGNvdW50aW5nIGEgbGl0dGxlIG1vcmUgZWZmaWNpZW50CgktIENvcnJlY3Qgc3VzcGVuZGVkIHByb2Nlc3MgcmVzdW1wdGlvbgoJLSBEb24ndCB1c2Ugc3lzL3F1ZXVlLmggYW55bW9yZQoJLSBQcm9wZXJseSBpbml0aWFsaXplIHRoZSBnbG9iYWwgc2VtYXBob3JlIGFjcm9zcyBwcm9jZXNzZXMKCS0gQ3JlYXRlIGEgbWFwcGVkIGZpbGUgZm9yIHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMKCS0gQ2hhbmdlIHNvbWUgdHJhY2UgbWVzc2FnZXMKCS0gQWxsb2NhdGUgZHluYW1pYyBzaGFyZWQgZGF0YSBmcm9tIHRoZSBtYXBwZWQgZmlsZQoJLSBSZXdvcmsgc2V0dGluZyBhbmQgcmV0cmlldmluZyBsb2JieSBzZXR0aW5ncyBmcm9tIHNoYXJlZCBtZW1vcnkKCS0gQWRkIGluZnJhc3RydWN0dXJlIGZvciBzeW5jcm9uaXphdGlvbiBhZnRlciBhcHAgbGF1bmNoCgktIFNtYWxsIGRvY3VtZW50YXRpb24gdXBkYXRlCgktIEluY2x1ZGUgc29tZSBzdHVmZiBtaXNzaW5nIGZyb20gaGVhZGVyCgktIFN0YXJ0IG9uIGRwIGFuZCBkcGwgbWVzc2FnZSBpbmZyYXN0cnVjdHVyZQoJLSBVbmljb2RlIHZlcnNpb25zIG9mIHBsYXllci9ncm91cCBjb21tYW5kcyBhZGRlZAoJLSBDb21iaW5lZCBDb25uZWN0L0Nvbm5lY3RFeCBhbmQgT3Blbi9TZWN1cmVPcGVuCgktIE1vcmUgaW1wbGVtZW50YXRpb24KCgkqIGRsbHMva2VybmVsL25scy8qLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNb3ZlZCBhbGwgTkxTIGRlcGVuZGVudCBkYXRhIHRvIHRoZSBLRVJORUwgcmVzb3VyY2VzLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3ZlZCBzZXR0aW5nIHRoZSBsb2NhbGUgdmFsdWUgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uLgoKCSogbWlzYy9sc3RyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgRm9ybWF0TWVzc2FnZVtBfDE2XSBhZ2FpbnN0IHNvbWUgYnVmZmVyIG92ZXJmbG93IGNhc2VzLgoKCSogZGVidWdnZXIvaW5mby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZXh0cmFuZW91cyB0cmFjZSBtZXNzYWdlLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVbmNvbmRpdGlvbm5hbGx5IHByaW50IG1lc3NhZ2VzIG9uIERMTCBsb2FkIGJyZWFrcG9pbnQuCgoJKiBkZWJ1Z2dlci9icmVhay5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCB3aW5lZGJnIHdhdGNocG9pbnRzLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJUHJldmVudCBTeXNBbGxvY1N0cmluZyBhbmQgU3lzQWxsb2NTdHJpbmcxNiB0byBwZXJmb3JtIGFueSBwcm9jZXNzaW5nCglvbiBOVUxMIHN0cmluZ3MuCgoJKiB0b29scy9mbnQyYmRmLmM6CglTdGFzIFNlcmdlZXYgPHN0YXMub3JlbEBtYWlsY2l0eS5jb20+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgZW5jb2Rpbmcgb2YgZm9udHMgZnJvbSB0aGUgY29tbWFuZAoJbGluZSwgZXZlbiBpZiBhdXRvZGV0ZWN0ZWQuCgoJKiB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmMsIGluY2x1ZGUvbWRpLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmUuaW5pOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglDb252ZXJ0IFdORC50ZXh0IGZpZWxkIHRvIFVuaWNvZGUuCglBZGQgbmV3IGtleSB0byB3aW5lLmluaSBpbiB0aGUgc2VjdGlvbiBbeDExZHJ2XSAtIFRleHRDUCwgd2hpY2ggbWVhbnMKCWNvZGUgcGFnZSB1c2VkIGZvciB0ZXh0cyBwYXNzZWQgdG8gWC4KCUFjY29yZGluZ2x5IGZpeCBoYW5kbGVycyBvZiBXTV9TRVRURVhUL1dNX0dFVFRFWFQuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEJhY2tlZCBvdXQgcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3VzZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgUmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb25BLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGYWtlcyBhIG5lZ290aWF0aW9uIG9mIHRoZSB3aW5zb2NrIHZlcnNpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBiZXR0ZXIgbG9hZGluZyBvZiAqLnRsYiBmaWxlcwoJLSBzZXBlcmF0ZWQgY29kZSBmb3IgbG9hZGluZyB0bGIgcmVzb3VyY2UgaW50byBtZW1vcnkgZnJvbSBjb2RlIGZvcgoJICBwYXJzaW5nIHRoZSB0bGIgcmVzb3VyY2UuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCBPbGVDcmVhdGUuCgoyMDAwLTA3LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGFzcy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUdldENsYXNzSW5mbyBzaG91bGQgcmV0dXJuIGdsb2JhbCBjbGFzc2VzIGV2ZW4gaWYgdGhlIGhJbnN0YW5jZQoJcGFyYW1ldGVyIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBSZWdpc3RlckNsYXNzCglmdW5jdGlvbi4KCgkqIG1pc2MvY29tbS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUZpeGVzIHRoZSBCdWlsZENvbW1EQ0JBIGZ1bmN0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvcG9ydC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgbGlidXRpbC5oLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgdGhlIGZvY3VzIGZvbGxvdyB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtIGZvciBtdWx0aXNlbGVjdCBsaXN0Ym94ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBMSGFzaFZhbE9mTmFtZVN5c0EuCglEb24ndCBjcmFzaCBpZiB3ZSBlbmNvdW50ZXIgYSBCU1RSIHdpdGggbGVuZ3RoIDw9IDAuCglGaXggdHlwb3MgaW4gSVR5cGVMaWI6OkdldERvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJV2l0aCBzb21lIGFwcHMgYSBmYXVsdCB3YXMgcG9zc2libGUgaW4gRXh0cmFjdEFzc29jaWF0ZWRJY29uLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUdldEljb25JbmZvIGRpZCBubyBjb3JyZWN0bHkgaWRlbnRpZnkgaWNvbnMgZnJvbSBjdXJzb3JzLgoKCSogd2luZG93cy9tc2dib3guYzoKCUhhaXRoZW0gSG1pZGEgPGhhaXRoZW1AbWFjYWRhbWlhbi5jb20+CglVbmRlciBXaW5kb3dzIDk1Lzk4L05ULCBtZXNzYWdlIGJveGVzIGRvIG5vdCBoYXZlIGEgZGVmYXVsdCBpY29uLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJRml4ZWQgbHN0cmNweW5BdG9XIHVzYWdlIChyZXBvcnRlZCBieSBTdGFzIFNlcmdlZXYpLgoJU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL3dzb2NrMzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9kcGxheS5zcGVjLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuc3BlYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3dvdzMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc29jay93c29jazMyLnNwZWMsIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93b3czMi93b3czMi5zcGVjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCUNyZWF0ZWQgc2VwYXJhdGUgbGlicmFyaWVzIGZvciBkcGxheSwgc2hmb2xkZXIsIHNobHdhcGksIHdvdzMyIGFuZAoJd3NvY2szMiBzbyB0aGF0IHdlIGhhdmUgYXQgbW9zdCBvbmUgV2luMzIgZGxsIGluIGVhY2ggLnNvIGxpYnJhcnkuCgoyMDAwLTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCBYMTFEUlZfRElCX0dldERJQml0cyB0byBwcm9wZXJseSBoYW5kbGUgYm90dG9tLXVwIERJQnMKCW1hbmlwdWxhdGlvbi4KCUNvcnJlY3RlZCBYR2V0U3ViSW1hZ2UgYXJndW1lbnRzIG9yZGVyLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNYXR0aGV3IExha2UgPE1MYWtlQHN1bmJlbHQtcGxiLmNvbT4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFNhZmVBcnJheUdldFZhclR5cGUuCglBZGRlZCBhIFZUX1JFQ09SRCB2YXJpYW50IHR5cGUgZGVmaW5pdGlvbi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIG1pc2MvY29tbS5jOgoJU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbnMgR2V0RGVmYXVsdENvbW1Db25maWdBL1cuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglDb3JyZWN0ZWQgMjQtPjMyIGNvbnZlcnNpb24uIFN0aWxsIG9ubHkgY29ycmVjdCBmb3IgbGl0dGxlIGVuZGlhbi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIFdTX0RJU0FCTEVEIHBhcmVudCBpbiBXaW5kb3dGcm9tUG9pbnQgZm9yIHVuLW1hbmFnZWQgd2luZG93cy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUmVuYW1lIE1PRFVMRV9Jbml0RGxsIHRvIE1PRFVMRV9Jbml0RExMIGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBUT09MQkFSX0RyYXdTdHJpbmcoKSB0byBvZmZzZXQgYnV0dG9uIHRleHQgaWYgdGhlIGhpbWwgcGFyYW1ldGVyCglpcyBub24temVybyBvciB0aGUgZGVmYXVsdCBoaW1sLCBoaW1sRGVmLCBpcyBub24temVyby4gIEZpeGVzIGEgYnVnIGluCglXaW5aaXAgOC4wIHdoZXJlIHRleHQgaXMgbm90IHNoaWZ0ZWQgZG93biBieSB0aGUgaGVpZ2h0IG9mIHRoZSBidXR0b24KCWltYWdlLgoKCSogd2luZG93cy9kaWFsb2cuYzogU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUNoZWNrIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBESUFMT0dfR2V0Q2hhclNpemUuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNldHVwYXBpIHNoYXJlZCBsaWJyYXJ5IGFuZCBTZXR1cEl0ZXJhdGVDYWJpbmV0IHN0dWIuCgoJKiBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvdmZ3LmgsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9tc3ZpZGVvLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLCB3aW5kb3dzL2RyaXZlci5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglJbXBsZW1lbnRlZCBhIGxhcmdlIG51bWJlciBvZiB0aGUgbXN2aWRlbyBkbGwgcm91dGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWxsb3cgdGhlIHNpemUgb2YgYml0bWFwcyB0byBiZSBjaGFuZ2VkIGFmdGVyIHRvb2xiYXIgYnV0dG9ucyBoYXZlCgliZWVuIGFkZGVkLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglPbiBXaW5kb3dzIHByb3BlcnR5IHNoZWV0IGhhcyBEV0xfVVNFUiBkd29yZCBwb2ludGluZyB0byBhIHN0cnVjdHVyZQoJdGhhdCBzdGFydHMgd2l0aCBIV05EIGFuZCBQUk9QU0hFRVRIRUFERVIgZmllbGRzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBHZXQvU2V0VGhyZWFkUHJpb3JpdHlCb29zdC4KCgkqIGRvY3VtZW50YXRpb24vcHNkcml2ZXI6CglTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUFkZGVkIGRvY3VtZW50YXRpb24gb24gaG93IHRvIHNldHVwIHdpbmUncyBCdWlsZGluIFBvc3RzY3JpcHQgRHJpdmVyCgl3b3JraW5nIHdpdGggZ2hvc3RzY3JpcHQgKGFmbWZpbGVzLCBwcGRmaWxlKS4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvdHlwZXMuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEV4cGxpY2l0IGluaXQgb2YgcnRuLmNvb2tpZSBpbiBERUJVR19FdmFsRXhwciB0byBiYWQgdmFsdWUgdG8KCSAgZXhwb3NlIGZ1cnRoZXIgYmFkIGNvZGUKCS0gUHJpbnQgb2YgcG9pbnRlciB1c2VkIGFzIGFycmF5IG5vdyB3b3JrcwoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJT25seSB1c2UgdGhlIGNvbHVtbiBoZWFkZXJzIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgYQoJTERTX1JFUE9SVC10eXBlIGxpc3Rib3ggaWYgaXQgYWN0dWFsbHkgaGFzIGNvbHVtbiBoZWFkZXJzLgoJKGllLiBMVlNfTk9DT0xVTU5IRUFERVIgYml0IGlzIG5vdCBzZXQuKQoKCSogd2luZG93cy93aW5wb3MuYzogU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUJlZ2luRGVmZXJXaW5kb3dQb3Mgc2hvdWxkIGFsbG93IHplcm8gY291bnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNlbWktc3R1Yi4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUhhbmRsZSBtY2lTZW5kU3RyaW5nKCJvcGVuIDxtY2l0eXBlPiIsLi4uKQoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CgktIEJ1Z2ZpeDogTWFjcm8gZXhwYW5zaW9uIG9mIHN0cmluZ3Mgd291bGQgYXNzZXJ0IGFuIGludGVybmFsIGVycm9yCgkgIG9yIGEgc2VnZmF1bHQgZHVlIHRvIGEgbGFja2luZyAnXDAnIGluIHRoZSBleHBhbnNpb24uCgktIEJ1Z2ZpeDogUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgaW4gcmVhbGxvY2F0aW9uIG9mIG1hY3JvIGV4cGFuc2lvbgoJICBidWZmZXJzLgoJLSBCdWdmaXg6IFdyYydzIHZlcnNpb24gaW5mb3JtYXRpb24gd2FzIG5vdCBwYXNzZWQgYXMgbnVtZXJpY2FsIHRvIHRoZQoJICBwcmVwcm9jZXNzb3IgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtYWNyby4KCS0gUmVsYXhlZCB0aGUgbmV3bGluZSBjb25zdHJhaW50IGluIGdsb2JhbCBMQU5HVUFHRSBzdGF0ZW1lbnRzLCB3aGljaAoJICB3YXMgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDEuMS4zLCBzbyB0aGF0IHNvbWUgZmFuY3kgcHJlcHJvY2Vzc29yCgkgIGNvbnN0cnVjdHMgY2FuIHdvcmsuCgktIFJlbW92ZWQgdGhlIGdjYy1zdHlsZSAjbGluZSBoYW5kbGluZyBmcm9tIHRoZSByZXNvdXJjZS1wYXJzZXIgdG8gdGhlCgkgIHJlc291cmNlLXNjYW5uZXIgc28gdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBpbmNsdWRlIGZpbGVzIGF0IGFueSBzdGFnZQoJICBvZiB0aGUgc291cmNlLCBpbmRlcGVuZGVudCBvZiB0aGUgcGFyc2VyLXN0YXRlLgoJLSBCdWdmaXg6IFN0cmluZ3RhYmxlcyB3ZXJlIG5vdCBjb3JyZWN0bHkgc2VhcmNoZWQgZm9yIGR1cGxpY2F0ZXMKCSAgYmVjYXVzZSB0aGUgbGFuZ3VhZ2UgY29tcGFyaXNvbiBkaXNyZWdhcmRlZCB0aGUgc3VibGFuZ3VhZ2UuCgktIEVsaW1pbmF0ZWQgYSByZXBldGl0aXZlIHdhcm5pbmcgd2hlbiB3cml0aW5nIHN0cmluZ3RhYmxlcyB3aXRoIHplcm8KCSAgbGVuZ3RoIHN0cmluZyBlbnRyaWVzLiBUaGVzZSBhcmUgcGVyZmVjdGx5IHZhbGlkIChidXQgbWFrZSBubyBzZW5zZTotKS4KCSAgV2FybmluZ3MgYXJlIG5vdyBvbmx5IGdlbmVyYXRlZCBkdXJpbmcgcGFyc2UgaW4gcGVkYW50aWMgbW9kZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBTeXNTdHJpbmdCeXRlTGVuIHRvIHJlYWxseSByZXR1cm4gdGhlIGxlbmd0aCBpbiBieXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglDaGFuZ2VkIHRoZSBzaXplIG9mIHByb3BlcnR5IHNoZWV0IHRlbXBsYXRlIHRvIGJlIHRoZSBzYW1lIGFzIHRoZQoJb3JpZ2luYWwgb25lICh3YXMgMjkyeDE1OSwgbm93IDIyMHgxNDApLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgSURhdGFBZHZpc2VIb2xkZXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCB0eXBvIGluIElUeXBlTGliOjpJc05hbWUuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNyZWF0ZVN0cmVhbU9uSEdsb2JhbCBzaG91bGQgYWxsb2MgYSBzaGFyZWQgbWVtb3J5IGJsb2NrIGlmIHN1cHBsaWVkCgloYW5kbGUgaXMgMC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGNyYXNoIGlmIHRoZXJlIHdhcyBubyBmaWxlcyBzZWxlY3RlZCBhbmQgT0sgYnV0dG9uIHdhcyBwcmVzc2VkLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IGEgY291cGxlIG9mIHByb2JsZW1zIHdpdGggdW5kZXJydW5zIGFuZCBzdG9wcGluZy9yZXN0YXJ0aW5nLgoKCSogbWlzYy9tYWluLmM6CglKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglGaXhlZCB0aGUgZGVidWdtc2cgaGVscC4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCU1hcCBlYWNoIGNoYW5uZWwgb24gZXZlcnkgaG9zdCB0byBhbiBBU1BJIGNvbnRyb2xsZXIgbnVtYmVyLgoJU3RvcmUgbWFwIGluIEhLRVlfRFlOX0RBVEEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRFNBX0luc2VydEl0ZW0gcmV0dXJucyBuSW5kZXgsIG5vdCBuSXRlbUNvdW50LgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBiYWNrZ3JvdW5kIHJlZHJhd2luZyB3aGVuIGNvbnRyb2wgaXMgY292ZXJlZC4gIEZpeGVkIGEgcmVhbGx5CglkdW1iIG1pc3Rha2UgSSBtYWRlIHdpdGggYm9yZGVyIGRyYXdpbmcgbWFueSBwYXRjaGVzIGFnby4gIEZpeGVkCglvZmZzZXQgYnkgMSBhbGlnbm1lbnQgaXNzdWVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVtb3ZlZCBhbm90aGVyIGJhZCBhc3NlcnQgYW5kIHR3byBubyBsb25nZXIgbmVlZGVkIG9uZXMuCgoyMDAwLTA2LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmFkIGV4Y2VwdGlvbiBoYW5kbGVyIGNoYWluIHRlcm1pbmF0aW9uLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIHdpbmRvd3Mvd2luLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNb3ZlZCB6ZXJvLXNpemVkIHdpbmRvdyBoYWNrIHRvIHgxMWRydi4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuICJubyBkZWJ1Z2dlciBhdHRhY2hlZCIgaW4gTnRRdWVyeUluZm9ybWF0aW9uUHJvY2VzcyB0byBzYXRpc2Z5Cglzb21lIGNvcHkgcHJvdGVjdGlvbiBtZWNoYW5pc21zLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gbHBUZW1wbGF0ZU5hbWUgaXMgZ290dGVuIGZyb20gTUFLRUlOVFJFU09VUkNFLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHR3byBhc3NlcnRzIGluIEJsdCgpLgoKCSogZGxscy9kZHJhdy9oZWxwZXIuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUHJvcGVybHkgY2FzdCBhcmd1bWVudHMgdG8gcHJpbnRmIHRvIG1hdGNoIHRoZSBpbnRlbmRlZCBvdXRwdXQuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTZXZlcmFsIGZpeGVzIHNwb3R0ZWQgYnkgQ29yZWwgKEplYW4tQ2xhdWRlIEJhdGlzdGEgJiBTZWFuIExhbmdsZXkpLgoJU2Vla2luZyBmcm9tIFNFRUtfRU5EIHdhcyB3cm9uZy4KCVNlZWtpbmcgb24gZW1wdHkgYnVmZmVyIHdhcyB3cm9uZy4KCVNvbWUgaW5zdGFsbGVkIGlvUHJvY3MgaGFkIHVuaW5pdGlhbGl6ZWQgZmllbGRzLgoJQSBmZXcgbW9yZSBiaXRzIGZvciByZW5hbWUgZnVuY3Rpb25zLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRvY3VtZW50YXRpb24vd2luZWRiZzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgQnJlYWtPbkRsbExvYWQgaW50ZXJuYWwgdmFyLCBjbGVhbmVkIHVwIHJlZ2lzdGVyIHZhbGlkYXRpb24gb24KCWV4Y2VwdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWlrZSBNY0Nvcm1hY2sgPE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGQgd29ya2Fyb3VuZHMgZm9yIG51bGwgc3RyaW5ncyBpbiBUT09MQkFSX0luc2VydEJ1dHRvbkEgYW5kIGNhbGxpbmcKCVRPT0xCQVJfU2V0QnV0dG9uU2l6ZSBhZnRlciBidXR0b24gYWRkZWQgdG8gdGhlIHRvb2xiYXIgKGxhdHRlciBmb3IKCVdJTlpJUDMyLkVYRSkKCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBtaW5pbXVtIGRyb3BwZWQgaGVpZ2h0IHRvIHRoZSBjb21ibyBsaXN0IGhlaWdodCBpZiBhbnkgaW4KCUNCRHJvcERvd24uCgoJKiBmaWxlcy9kb3NfZnMuYzogRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglJZiB3aGl0ZXNwYWNlIG9yIGRvdHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgYW55IGNvbXBvbmVudCBpbiBhCglwYXRoIHRoZW4gaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgoyMDAwLTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCU1ha2Ugc3VyZSB0aGUgY21kbGluZSBwYXNzZWQgdG8gQ3JlYXRlUHJvY2Vzc0EgaXMgd3JpdGVhYmxlICh0aGFua3MgdG8KCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4pLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbmVkIHVwIGxvYWRpbmcvaW5pdCBjb2RlIGluIE9TUy4KCUNsZWFuZWQgdXAgZ2V0RGV2Q2FwcyBpbiBtaWRpIHBhcnQuCglJbXBsZW1lbnRlZCBhc3luY2hyb25vdXMgd2F2ZUluIHJlY29yZGluZyB1c2luZyBhIHRocmVhZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQSBmZXcgbWlzc2luZyBjb25zb2xlIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFuaW1hdGlvbiBsb2FkaW5nIGZvciBSTEUgZW5jb2RpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSByZW1vdmVkIGhhY2sgdG8gZmluZCB0aGUgcmlnaHQgcmVzb3VyY2UKCS0gdXBkYXRlZCB0byB1c2UgdGhlIElDT00gbWFjcm9zCgktIGNsZWFuZWQgdXAgdXNlIHR5cGVsaWIgYW5kIHR5cGVsaWIyICh3YXMgbWl4ZWQgdXApCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBmaXhlZCByZXBvcnRlZCBidWdzCgktIGZpeGVkIGRlZmF1bHQgZXh0ZW5zaW9ucwoJLSBpbXBsZW1lbnRlZCAiYnJvd3NlIHRvIGRlc2t0b3AiIGJ1dHRvbgoKCSogbWVtb3J5L2Vudmlyb24uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglHZXRDb21tYW5kTGluZSBzaG91bGQgcmV0dXJuIG5vbi1jb25zdCBzdHJpbmdzLgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUNhbGxQcm9jRXgzMlcgc2hvdWxkIGJlIG5hbWVkIF9DYWxsUHJvY0V4MzJXLgoKCSogZmlsZXMvY2hhbmdlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNvbWUgc3R1ZmYgc2F5aW5nIHRoYXQgdGhpcyBpcyBOT1Qgc3VwcG9ydGVkLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBdm9pZCBjYWxsaW5nIHRoZSBleGNlcHRpb24gaGFuZGxlciBpbiBzb21lIGNhc2VzLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBtYW55IG5ldyBQYXRoKiBzdHVicwoJLSBtYW55IGJ1Z2ZpeGVzCgktIGNsYXNzIGZ1bmN0aW9ucyBleHBhbmRpbmcgZW52aXJvbm1lbnRzIHZhcmlhYmxlcyBub3cKCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIERpcmVjdFNvdW5kIEhBTCBpbiB3aW5tbSdzIHdpbmVvc3MgKE9wZW4gU291bmQgU3lzdGVtKQoJZHJpdmVyLCBhbmQgd2lubW0ncyBpbnRlcmZhY2UgZm9yIERpcmVjdFNvdW5kIHRvIGFjY2VzcyBpdC4gSXQKCXJlcXVpcmVzIHRoZSBhYmlsaXR5IHRvIG1tYXAgL2Rldi9kc3AsIHRvIHRyaWdnZXIgcGxheWJhY2ssIGFuZAoJc2FtcGxlLWFjY3VyYXRlIHBvc2l0aW9uIHJlYWRvdXRzLiAoSWYgdGhlIHNvdW5kY2FyZCdzIGRldmljZSBkcml2ZXIKCWRvZXMgbm90IHJlcG9ydCB0aGVzZSBjYXBhYmlsaXRpZXMsIHdpbmVvc3Mgd2lsbCByZXBvcnQgdGhlIEhBTCBhcwoJdW5hdmFpbGFibGUgYW5kIGZvcmNlIERpcmVjdFNvdW5kIHRvIHVzZSBpdHMgSEVMIGluc3RlYWQuKQoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgRGlyZWN0U291bmQgSEFMIG1vZGUgZm9yIERNQSBwcmltYXJ5IGJ1ZmZlcnMsIHdpdGggYQoJMTBtcyBsYXRlbmN5IChub3Qgbm90aWNlYWJsZSksIGFuZCBhYm91dCAzMDBtcyBvZiBwcmVidWZmZXJpbmcuIEZpeGVkCglhIGZldyBidWdzLiBBZGRlZCBhIFdpbmUtb25seSBXSU5NTSBmbGFnIGZvciB3YXZlT3V0T3BlbiBmb3IKCURpcmVjdFNvdW5kIHRvIHVzZSAoc28gZHJpdmVycyBsaWtlIHdpbmVvc3MgaGF2ZSBzb21lIHdheSBvZiBrbm93aW5nCgl3aGF0IHRvIHByZXBhcmUgaXRzZWxmIGZvcikuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZC9zdHViYmVkIEljb25TaXplKCkgYW5kIENvbnRyb2xQYW5lbEluZm8oKSBuZWVkZWQgZm9yIFdpbgoJMi4wIGNvbnRyb2wuZXhlIGFuZCBwYWludC5leGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBJRElfV0lOTE9HTy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRG9uJ3QgYmxvY2sgZW5kbGVzc2x5IGFmdGVyIGxhc3QgZGVidWdnZWQgcHJvY2VzcyBoYXMgZXhpdGVkLgoKCSogbWVtb3J5L3N0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIChiYWNrKSBjb3JyZWN0IGJlaGF2aW9yIGZvciBOVUxMIHB0cnMgaW4gQ2hhclRvT2VtIGZ1bmNzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgT09NIGNvbmRpdGlvbnMgaW4gR2xvYmFsQWxsb2MuCgoJKiBkbGxzL250ZGxsL21pc2MuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgbWlzc2luZyAjaW5jbHVkZSA8bWF0aC5oPi4KCgkqIGluY2x1ZGUvd2lucmVzcmMuaDogUmVtb3ZlZCBNSU1FIGdhcmJhZ2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgeGxpYiBkZHN1cmZhY2VzIHdpdGggY29ycmVjdCByZWZlcmVuY2UgY291bnRzLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2JpZGkxNi5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy91c2VyL25ldHdvcmsuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9iaWRpMTYuYywgbWlzYy9uZXR3b3JrLmM6CglTcGxpdCBiaWRpMTYuYyBhbmQgbmV0d29yay5jIG91dCBvZiBtaXNjLyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxscy4KCjIwMDAtMDYtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIHRvb2xzL3dpbmVidWlsZC8uY3ZzaWdub3JlLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW46CglTcGxpdCB0aGUgYnVpbGQgcHJvZ3JhbSBpbiBzZXZlcmFsIGZpbGVzLgoJUmVuYW1lZCBpdCAnd2luZWJ1aWxkJyB0byBhdm9pZCBwb3NzaWJsZSBjb25mbGljdHMuCglDbGVhbmVkIHVwIGNvbW1hbmQtbGluZSBwYXJzaW5nLgoJTWFrZSBpdCB1bmRlcnN0YW5kIC1mUElDIGluc3RlYWQgb2YgLXBpYy4KCU1lcmdlZCBjYWxsMTYucyBhbmQgY2FsbDMyLnMgZ2VuZXJhdGVkIGZpbGVzLgoKCSogZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9zeXN0ZW0uc3BlYywgZGxscy9zb3VuZC9zb3VuZC5zcGVjLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBtb3JlIG9yZGluYWxzIHRvIEtFUk5FTCwgR0RJLCBVU0VSIGFuZCBzeXN0ZW0gZHJpdmVycwoJKFdpbmRvd3MgMS4xLCAyLjApLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCV9jb21tb25fZGVwdGhfdG9fcGl4ZWxmb3JtYXQoKSByZXR1cm5zIC0xIGFuZCBub3QgemVybywgaWYgYSBtb2RlIGlzCglzdXBwb3J0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQXZvaWQgZ3JhdHVpdG91c2x5IGNoYW5naW5nIHRoZSBaT1JERVIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGNvcnJlY3QgYnBwIGZvciB0aGUgWCBzaWRlIG9mIHRoZSBzdXJmYWNlIFhJbWFnZXMuCglDbGVhbmVkIHVwIFhsaWJfU3VyZmFjZV9SZWxlYXNlIHNvIGl0IGlzIGEgYml0IG1vcmUgcmVhZGFibGUuCgl1c2UgVmlydHVhbEFsbG9jIGZvciBjb252ZXJzaW9uLXByb2dyYW1zaWRlIGJ1ZmZlciB0byBzaW1wbGlmeQoJaGFuZGxpbmcuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJR2xvYmFsRnJlZTE2IHJldHVybnMgTlVMTCBvbiBzdWNjZXNzLCBidXQgRGVzdHJveUFjY2VsZXJhdG9yVGFibGUKCXNob3VsZCByZXR1cm4gVFJVRSBvbiBzdWNjZXNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUR1bXAgRm91ckNDIGNvcnJlY3RseSwgcHJpbnQgY29udmVyc2lvbiBtZXNzYWdlcywgYWRkIHJlZmVyZW5jZSB0bwoJZGRyYXcgaW4gRERTdXJmYWNlOjpHZXREREludGVyZmFjZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlc3RyaWN0IG5UaW1lb3V0IHRvIDAtMzI3NjcsIHNpbmNlIGl0IGlzIGEgMTZiaXQgdmFsdWUgaW4gWC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRXhjZXB0aW9uIGhhbmRsaW5nIGZvciBTSUdGUEUgbXVzdCBhbHdheXMgY2xlYXIgdGhlIEZQVSBpbnRlcnJ1cHQKCXN0YXR1cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGluY2x1ZGUvY3J0ZGxsLmgsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJTW92ZWQgc2hhcmVkIGNydGRsbC9udGRsbCBmdW5jdGlvbnMgaW50byBudGRsbC4KCU1hZGUgY3J0ZGxsIGEgc2VwYXJhdGUgZGxsLgoKCSogZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgbWlzYy9sc3RyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglDbGVhbmVkIHVwIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVjbGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vcGVuZ2wzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogaW5jbHVkZS9kc2RyaXZlci5oLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlc3RydWN0dXJlIERpcmVjdFNvdW5kLiBSZW1vdmUgZHNvdW5kIHRocmVhZCwgdXNlIE1NIHRpbWVycwoJaW5zdGVhZC4gSW1wbGVtZW50ZWQgdGhlIERpcmVjdFNvdW5kIEhFTCwgd2l0aCB0aGUgYWJpbGl0eSB0bwoJcHJlYnVmZmVyIDMwMG1zIG9mIHNvdW5kLCB3aGlsZSBtYWludGFpbmluZyBwbGF5IGxhdGVuY3kgb2YgNDBtcywgYW5kCgl0aGUgZXhhY3QgcGxheXBvc2l0aW9uIChTdGFyY3JhZnQgY2luZW1hdGljcyBhcmUgbGlwLXN5bmNoZWQpLiAgU29tZQoJaW5pdGlhbCBIQUwgc3VwcG9ydC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZXBsYWNlZCB0aGUgQlVJTFRJTjMyX2Rsb3BlbigpIEVSUigpIGJ5IGEgV0FSTigpLgoKCSogaW5jbHVkZS93aW5yZXNyYy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGluY2x1ZGUvd2lucmVzcmMuaCBmb3IgcG9ydGluZyB3aXRoIHdpbmVsaWIuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWVyZ2VkIERldmljZUNhcGFiaWxpdGllcyBhbmQgRGV2aWNlQ2FwYWJpbGl0aWVzQS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS92ZncuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWVyZ2VkIE1DSVduZENyZWF0ZSBhbmQgTUNJV25kQ3JlYXRlQS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ0xTSURGcm9tU3RyaW5nIGFwcGFyZW50bHkgYWxzbyBhY2NlcHRzIFByb2dJRHMgYXMgYW4gaW5wdXQgc3RyaW5nLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgU0NfSUNPTi9TQ19aT09NIChvYnNvbGV0ZSBtYWNyb3MpLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIG5ldyBJbnRlcm5ldENoZWNrQ29ubmVjdGlvbiouCgoyMDAwLTA2LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJQ2xlYW5lZCB1cCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUZpeGVkIHByb2JsZW1zIHdpdGggY29tcGlsYXRpb24vaW5zdGFsbCBvdXQgb2Ygc291cmNlIHRyZWUuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglPbGVDb252ZXJ0T0xFU1RSRUFNVG9JU3RvcmFnZSBmYWlscyAocmV0dXJucyBSRUdEQl9FX0NMQVNTTk9UUkVHKSB3aGVuCgl0aGUgQ0xTSUQgb2YgdGhlIE9MRSBvYmplY3QgaXMgbm90IGZvdW5kIGluIHRoZSByZWdpc3RyeS4gRml4ZWQuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIFdyaXRlUHJpdmF0ZVByb2ZpbGVTZWN0aW9uQSBjYXJlIGZvciAiIiBhbmQgTlVMTCBhcyB0aGUKCXN0cmluZyBhcmd1bWVudC4gTmV3IGZ1bmN0aW9uIFBST0ZJTEVfRGVsZXRlQWxsS2V5cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGZvcm1hdCBzdHJpbmdzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IGEgY3Jhc2ggaW4gd2luaGVscCBjYXVzZWQgYnkgaG1lbWNweTE2IHdpdGhvdXQgcHJvdG90eXBlLgoJRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzLyovTWFrZWZpbGUuaW46CglGb3IgZGxscywgZGVyaXZlIFNQRUNfU1JDUyBmcm9tIE1PRFVMRSBhbmQgQUxUTkFNRVMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgV0hEUl9ET05FIHJhY2UgY29uZGl0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBTdHJDYXRCdWZmLgoKCSogaW5jbHVkZS9zaGxvYmouaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCB0eXBlZGVmIG9mIERST1BGSUxFUy4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBSZXN1bHRGcm9tU2NvZGUvR2V0U2NvZGUgKG9ic29sZXRlIG1hY3JvcykuCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglNb3ZlVG9FeDogcmV0dXJuIFRSVUUgZXZlbiBpZiB0aGVyZSBpcyBubyBkcml2ZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglQcm90ZWN0IGFnYWluc3QgcHJvZ3JhbXMgY3JlYXRpbmcgcGFydHMgd2l0aCBuZWdhdGl2ZSB3aWR0aC4KCjIwMDAtMDYtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcmVzb3VyY2UuYywgbXNkb3MvaW50MjEuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJVXNlIEdldFN5c3RlbURlZmF1bHRMYW5nSUQoKSBpbnN0ZWFkIG9mIFdJTkVfTGFuZ3VhZ2VJZC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRiZywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gY2xlYW5lZC11cCBicmVhayBoYW5kbGluZwoJLSBiZXR0ZXIgaW50ZWdyYXRpb24gb2YgZGVidWdnZXIgaW5uZXIgbG9vcHMgKHBhcnNlciAmIGV2ZW50cykKCS0gYWRkZWQgYXR0YWNoIGNvbW1hbmQKCS0gaW1wcm92ZWQgcGFyc2VyIHNvIHRoYXQgaXQgY2FuIGJlIGVudGVyZWQgd2l0aG91dCBhbnkgcHJvY2VzcyBsb2FkZWQKCS0gYWRkZWQgQnJlYWtPbkZpcnN0Q2hhbmNlIGludGVybmFsIHZhcmlhYmxlCgktIGRpc2FibGVkIE5FIG1vZHVsZSBzeW1ib2wgbW9kdWxlICh3aGljaCBpcyBicm9rZW4gd2l0aCBBU1MpCgktIG1pc2MgcG9ydGFiaWxpdHkgY2xlYW51cHMKCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gRml4ZWQgYSBtZW1vcnkgY29ycnVwdGlvbiBpbiBzYWZlIGFycmF5cyB3aGVuIHVzaW5nIFNhZmVBcnJheUNvcHkoKQoJICBmdW5jdGlvbiB3aXRoIGEgU2FmZUFycmF5IGNyZWF0ZWQgd2l0aCBGQURGX0ZJWEVEU0laRS4KCS0gQWRkZWQgbW9yZSBGQURGIGZsYWdzIGluIHRoZSAuaCBmaWxlLgoJLSBGQURGIGZsYWdzIHdlcmUgZGVmaW5lZCB0d2ljZSwgY29ycmVjdGVkIHRoZSBzaXR1YXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgYXNzdW1lIHRoYXQgZG91YmxlIGJ5dGUgZm9udCA9PSB1bmljb2RlIGZvbnQuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB3aW5kb3dzL3VzZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMuCglEZWZpbmUgdGhlIEhEUkFXRElCIGhhbmRsZSB0eXBlLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCWhtZW1jcHkxNiBpcyBhIFdpbjE2IEFQSSwgdGhlIG1hY3JvIGlzIGhtZW1jcHkuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVkIGFuIGluaXRpYWwgV2luc29jayAyICh3czJfMzIpIERMTC4gTWFrZXMgdXNlIG9mIHRoZSBXaW5zb2NrIDEKCWZ1bmN0aW9ucyBhbHJlYWR5IGltcGxlbWVudGVkLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwb3J0IHN0YXR1cyBxdWVyeS4KCgkqIGluY2x1ZGUvZHNkcml2ZXIuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBEaXJlY3RTb3VuZCBkZXZpY2UgZHJpdmVyIGhlYWRlciBmaWxlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSB0aGUgYmFzZSByZWxvY2F0aW9uIG1lc3NhZ2UgYSBXQVJOLCBub3QgYSBGSVhNRS4KCgkqIHRvb2xzL01ha2VmaWxlLmluOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEaXN0aW5ndWlzaCBiZXR3ZWVuIFNVQkRJUlMgYW5kIElOU1RBTExTVUJESVJTLgoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDQl9TRVRDVVJTRUwgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbm90aGVyIGxpc3Rib3ggZXZlbnQgYWZ0ZXIgdXBkYXRpbmcKCXRoZSBlZGl0IGJveC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJV01fUEFJTlQgc2hvdWxkIGJlIHByb2Nlc3NlZCBvbmx5IGJ5IHRoZSBUUkVFVklFV19QYWludCBmdW5jdGlvbiwgc28KCXdlIGRvbid0IG5lZWQgdG8gY2FsbCBEZWZXaW5kb3dQcm9jQSBmdW5jdGlvbiB3aXRoaW4gVFJFRVZJRVdfUGFpbnQuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglXZSBtdXN0IHJldHVybiB0aGUgYXRvbSBvZiB0aGUgY2xhc3MgaW4gR2V0Q2xhc3NJbmZvRXggaW5zdGVhZCBvZiBqdXN0CglUUlVFLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgc3R1YiBmb3IgQ29DcmVhdGVGcmVlVGhyZWFkZWRNYXJzaGFsZXIoKS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZWltcGxlbWVudCBDaGFyVG9PZW1BL1csIENoYXJUb09lbUJ1ZmZBL1csIE9lbVRvQ2hhckEvVywKCU9lbVRvQ2hhckJ1ZmZBL1cgdXNpbmcgTXVsdGlCeXRlVG9XaWRlQ2hhci9XaWRlQ2hhclRvTXVsdGlCeXRlLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJR2V0U3lzdGVtTWVudSBjYWxsZWQgd2l0aCBiUmV2ZXJ0IGFyZ3VtZW50IHNldCB0byBUUlVFIG5vdyByZXR1cm5zCglOVUxMIGFzIHNwZWNpZmllZCBpbiBQbGF0Zm9ybSBTREsuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIG1lbW9yeSBhY2Nlc3Mgb3V0c2lkZSBvZiB0aGUgcmFuZ2UgZm9yIHNvdXJjZSBiaXRzIGluIDI0LWJpdCBiaXRtYXBzLgoKMjAwMC0wNi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCU1ha2UgSUlERnJvbVN0cmluZyBwb2ludCB0byBDTFNJREZyb21TdHJpbmcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYmV0dGVyIGVycm9yIGNoZWNrIHdoZW4gaW1wb3J0aW5nIGZ1bmN0aW9ucyB2aWEgR2V0UHJvY0FkcmVzcwoJLSByZXBsYWNlZCBTSEdldFNwZWNpYWxGb2xkZXJQYXRoIChub3QgYXZpYWJsZSBpbiBhbGwgc2hlbGwzMiB2ZXJzaW9ucykKCS0gY2hhbmdlZCBjYWxsIG9yZGVyIHdoZW4gYnJvd3NpbmcgdG8gZGlmZmVyZW50IGZvbGRlciAoY3Jhc2ggd2l0aCBuYXRpdmUgc2hlbGwpCgktIHJlbW92ZWQgTW92ZSBjYWxsIHNpbmNlIElTaGVsbHZpZXdfQ3JlYXRlVmlld1dpbmRvdyBjcmVhdGVzIGl0IGFscmVhZHkgaW4KCSAgdGhlIHJpZ2h0IHJlY3QKCgkqIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBmaXhlZCBudWxsLXBpZGwgZnJvbSBfSUxDcmVhdGVDb250cm9sCgktIHNvbWUgbW9yZSBuby1uYW1lIGZ1bmN0aW9ucyBpbiBzaGx3YXBpCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJS2VlcCBhbiBpbnRlcm5hbCBjb3B5IG9mIHRoZSBpY29uLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVvcmRlciB0aGUgX19hdHRyaWJ1dGVfXyBkaXJlY3RpdmUgaW4gdGhlIGxlZ2FjeSBtYWNyb3MgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggb2xkIGcrKyBjb21waWxlcnMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglLZW4gQ29sZW1hbiA8a2VuX2NvbGVtYW5AaW5hbWUuY29tPgoJRml4ZXMgdG8gQ3JlYXRlRElCU2VjdGlvbiBhbmQgb3RoZXIgYXJlYXMgd2hlcmUgYmlTaXplSW1hZ2UgaXMKCWluY29ycmVjdGx5IGFzc3VtZWQgdG8gYmUgY29ycmVjdCBpZiBpdCBub24temVyby4gIFRoaXMgZml4ZXMgYQoJY3Jhc2hpbmcgcHJvYmxlbSBpbiBTaWQgTWVpZXIncyBBbHBoYSBDZW50YXVyaS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWRpLmMsIGluY2x1ZGUvbWRpLmgsIHJlc291cmNlcy9zeXNyZXNfRW4ucmMsIHJlc291cmNlcy91c2VyMzIucmM6CglEYXZpZCBMYXNzb25kZSA8ZGF2aWRsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE1vcmUgV2luZG93cy4uLiBtZW51IGl0ZW0gZm9yIE1ESS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGFnYWluIGZvciBHZXROZXh0RGxnVGFiSXRlbSBhZnRlciByZXR1cm4gZnJvbSBXTV9JTklURElBTE9HCgltZXNzYWdlIGluIGRpYWxvZyBjcmVhdGlvbi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGNsaWVudCB3aW5kb3cgaW4gTElTVEJPWF9QYWludC4KCgkqIHNlcnZlci9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1vcmUgdmVyYm9zZSBlcnJvciBtZXNzYWdlLgoKCSogdW5pY29kZS9tYnRvd2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWNwX21ic3Rvd2NzOiBjaGVjayBmdW5jdGlvbnMgcmV0dXJuIHplcm8gb24gc3VjY2Vzcy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RnVsbFBhdGhOYW1lOiBnZXQgImRyaXZlIiB2YWx1ZSB0b28gZm9yIGFic29sdXRlIHBhdGhzLgoKCSogbWlzYy9wcmludGRydi5jOgoJRnJlZGVyaWMgQm91bGFuZ2VyIDxmcmVkZXJpY0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZVNwb29sRmlsZSBpcyBjYWxsZWQgd2l0aCBhIGRvcyBuYW1lLCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0Cgl3aGVuIHdlIGNyZWF0ZSB0aGUgc3Bvb2xmaWxlIHdlIHVzZSB0aGUgdW5peCBuYW1lIGFzc29jaWF0ZWQgdG8gdGhlCglkb3MgZmlsZSBuYW1lLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CgktIGFkZCBwcm90b3R5cGVzIGZvciBzZXJpYWwgQVBJIGZ1bmN0aW9ucwoJLSBjb3JyZWN0IGV4aXN0aW5nIHNlcmlhbCBBUEkgcHJvdG90eXBlcyBpbmNvcnJlY3RseSB1c2luZyBEV09SRAoJICBpbnN0ZWFkIG9mIEhBTkRMRQoJLSBkZWZpbmUgbW9yZSBzdHJ1Y3R1cmVzIGFuZCB2YWx1ZXMgaW4gc2VyaWFsIEFQSQoKCSogd2luZG93cy9kY2UuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIE5VTEwgcG9pbnRlciBjaGVjayB3aXRoaW4gRENFX0FkZENsaXBSZWN0cyBmdW5jdGlvbi4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglPcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgTG9hZFN0cmluZ0EuCgoJKiBkb2N1bWVudGF0aW9uL3gxMWRydjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUZXh0IG9mIFdXTiBhcnRpY2xlICJUaGUgWDExIGRyaXZlciIuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglXaW5lTGliIGRvZXMgbm90IHN1cHBvcnQgV2luMTYuIFJlbW92ZWQgcmVmZXJlbmNlcyB0byBXaW4xNiBhbmQgV2luCgkzLnggaW4gdGhlIGludHJvZHVjdGlvbi4gU3RhbmRhcmRpemVkIGNhcGl0YWxpemF0aW9uIG9mIFdpbmUgYW5kCglXaW5lTGliLiBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBjb21waWxpbmcgYSBzaW1wbGUgIkhlbGxvIFdvcmxkIgoJV2luZUxpYiBwcm9ncmFtLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNldHRpbmcgb2YgY3Vyc29yIHBvc3RpdGlvbiB0byBNU0dfUG9zdFRvUXVldWUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJV01fU0VUUkVEUkFXIHNob3VsZCByZXBhaW50IHRoZSBsaXN0Ym94IHdoZW4gc2V0IHRvIG9uIGlmIHNvbWV0aGluZwoJaGFzIGJlZW4gY2hhbmdlZC4KCjIwMDAtMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9jdmR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJUmVtb3ZlZCBAUFJPR0VYVEAgKGl0IHdhcyBicm9rZW4gYW55d2F5KS4KCUltcHJvdmVkICdtYWtlIGluc3RhbGwnLgoJQ2xlYW5lZCB1cCB0aGUgbWFpbiBNYWtlZmlsZS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ29udmVydFRvR2xvYmFsSGFuZGxlOiBmaXhlZCBoYW5kbGUgbGVhay4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oOgoJRml4ZWQgb3B0aW9ucyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU1hZGUgU2V0V2luZG93UG9zIGhhbmRsZSB0aGUgY2FzZSB3aGVuIGluc2VydGluZyBhIHdpbmRvdyBhZnRlciBpdHNlbGYKCShkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgWm9yZGVyKS4KCgkqIGRvY3VtZW50YXRpb24vb3BlbmdsOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZGF0ZWQgT3BlbkdMIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCB0aGUgYmFzZSBmb3IgdGhlIG9yZGluYWxzIG9mIG9sZXBybzMyIHRvIDI0OC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1hdHRoZXcgSi4gRnJhbmNpcyA8bWZyYW5jaXNAcGx1cy5uZXQudWs+CglBbGlhcyBOTVVQRE9XTiB0byBiZSBOTV9VUERPV04sIHJhdGhlciB0aGFuIG92ZXJ3cml0ZSBOTV9VUERPV04gd2l0aAoJTk1VUERPV04uCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCWppbXJlZ2FuQGxpdHN1LmllCglBZGRlZCBkaWZmdGltZSBmdW5jdGlvbi4KCjIwMDAtMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd21jLy5jdnNpZ25vcmUsIHRvb2xzL3dtYy9DSEFOR0VTLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9sYW5nLmMsIHRvb2xzL3dtYy9sYW5nLmgsIHRvb2xzL3dtYy9sYW5ndWFnZS5jLCB0b29scy93bWMvbWNsLmMsIHRvb2xzL3dtYy9tY3kueSwgdG9vbHMvd21jL3V0aWxzLmMsIHRvb2xzL3dtYy91dGlscy5oLCB0b29scy93bWMvd21jLmMsIHRvb2xzL3dtYy93bWMuaCwgdG9vbHMvd21jL3dtYy5tYW4sIHRvb2xzL3dtYy93bWN0eXBlcy5oLCB0b29scy93bWMvd3JpdGUuYywgdG9vbHMvd21jL3dyaXRlLmgsIHVuaWNvZGUvd2N0b21iLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUluaXRpYWwgcmVsZWFzZSBvZiB0aGUgbWVzc2FnZSBjb21waWxlci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGRsbCBzaGZvbGRlci5kbGwKCS0gc21hbGwgZml4ZXMKCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvcHB5LnksIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEJ1Z2ZpeDogQ29ycmVjdGVkICJvZmYgYnkgb25lIiBlcnJvciBpbiB0aGUgbGluZW51bWJlciB3aGlsZSBwYXJzaW5nCgkgIHJlc291cmNlLgoJLSBCdWdmaXg6IEEgc2VnZmF1bHQgd291bGQgb2NjdXIgaWYgbWVzc2FnZXRhYmxlcyB3ZXJlIHBhcnNlZCB3aXRob3V0CgkgIG1lbW9yeSBvcHRpb25zIGF0dGFjaGVkLiBBbHNvIGFkZGVkIGJ1ZmZlci1vdmVyZmxvdyBzYWZlZ3VhcmQgd2hpbGUKCSAgY29udmVydGluZyBiZXR3ZWVuIGJ5dGVvcmRlcnMuCgktIEZpbmlzaGVkIHJlbWFwcGluZyB1c2VydHlwZSByZXNvdXJjZXMgb250byBzdGFuZGFycyB0eXBlcyBieSB0cmlja2luZwoJICB0aGUgcGFyc2VyIGludG8gYWNjZXB0aW5nIGEgZGlmZmVyZW50IHRva2VuLiBUaGUgcmVtYXBwaW5nIGNhbiBiZQoJICBkaXNhYmxlZCB3aXRoIGEgbmV3IGNvbW1hbmRsaW5lIG9wdGlvbiAnLW0nLgoJLSBSZXNvbHZlZCBzb21lIHdhcm5pbmcgYWJvdXQgY2hhcnMgdXNlZCBhcyBpbmRleCBvbiBTR0kgTzIgbWFjaGluZQoJICAodGhlIGN0eXBlIGlzWFhYKCkgcm91dGluZXMgYXJlIG1hY3JvcyB0aGVyZSkuCgoJKiBvbGUvb2xlMm5scy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNvbW1lbnRlZCBvdXQgSXNCYWRXcml0ZVB0ciBjaGVjay4gTWFrZXMgd2luaGxwMzIuZXhlIGhhcHB5IGluCglleHRlbmRlZCBzZWFyY2guCgoJKiBkb2N1bWVudGF0aW9uL29wZW5nbDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglPcGVuR0wgZG9jdW1lbnRhdGlvbi4KCgkqIGZpbGVzL2RyaXZlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURSSVZFX0dldEZyZWVTcGFjZSgpIGlzIHN1cHBvc2VkIHRvICphbHdheXMqIHJldHVybiAwIGZvciAiYXZhaWwiCglvbiBDRC1ST01zLCBldmVuIGlmIENELVJPTSBpcyAqbm90KiBtb3VudGVkIGFuZCB0aHVzIHRoZSBtb3VudCBwb2ludAoJbm9ybWFsbHkgcmV0dXJucyB0aGUgImF2YWlsIiBvZiB0aGUgY29ycmVzcG9uZGluZyBwYXJ0aXRpb24uCglDbGVhbmVkIHVwIEdldERpc2tGcmVlU3BhY2VBLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvIG5vdCBjaGFuZ2UgdGhlIFdTX0NISUxEIHN0eWxlIGluIFNldFBhcmVudC4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBvbGUvb2xlMm5scy5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy92ZXJzaW9uL2luZm8uYzoKCVVzZSB0aGUgVW5pY29kZSBzdHJpbmcgZnVuY3Rpb25zIGZyb20gd2luZS91bmljb2RlLmggaW5zdGVhZCBvZiB0aGUKCWNydGRsbCBvbmVzLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9zdHJpbmcuYzoKCUFkZGVkIGEgY291cGxlIG9mIFVuaWNvZGUgc3RyaW5nIHJvdXRpbmVzLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAyNC0+MzIgcGFja2VkIHBpeGVsIG1hcHBpbmcgc3VwcG9ydCB0byBjb252ZXJ0LgoJU2xpZ2h0bHkgcmV3cm90ZSB0aGUgY29udmVyc2lvbiBpbml0aWFsaXNhdGlvbi4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3RyaXAgd2hpdGVzcGFjZSBmcm9tIGZyb250IG9mIHByb2ZpbGUgdmFsdWVzLgoKMjAwMC0wNi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2V4dGljb24uYywgd2luMzIvb3JkaW5hbHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50YXRpb24gZm9yIFByaXZhdGVFeHRyYWN0SWNvbnMsIFByaXZhdGVFeHRyYWN0SWNvbkV4LgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGltcGxlbWVudGVkIEdldC9TZXRUaHJlYWRMb2NhbGUKCS0gYWRkZWQgY29tbWVudCBhYm91dCBPbGVFcnJvckluZm8gZmllbGQgaW4gVEVCCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0cnVjdCBvZmZzZXRzIHNvIHVuZGVyc3RhbmRpbmcgZ2FtZSBkaXNhc3NlbWJseSBpcyBlYXNpZXIuCgoJKiBkbGxzL3dpbmVwcy9icnVzaC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSWYgcHJpbnRlciBvbmx5IHN1cHBvcnRzIGxldmVsIDEgUG9zdFNjcmlwdCB0aGVuIGNvbXBsYWluIHJhdGhlciB0aGFuCgl0cnlpbmcgdG8gdXNlIGEgcGF0dGVybiBjb2xvciBzcGFjZS4gIFRoYW5rcyB0byBEYXZpZCBHb29kZW5vdWdoLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBJc0VxdWFsR1VJRCBwcm90b3R5cGUuCgoJKiBkbGxzL2RkcmF3L2RnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglyZXBsYWNlZCBhIERQUklOVEYgYnkgYSBUUkFDRQoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gbW92ZWQgdGhlICdjb25zdHJ1Y3RvcicgaW50byBhIHJlYWwgRExMIGluaXQgZnVuY3Rpb24KCS0gbWFrZSBPcGVuR0wzMiBkZXBlbmRhbnQgb24gdGhlIFgxMSBkcml2ZXIKCgkqIG9iamVjdHMvZGMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+Cglob29rVGh1bmsgd2FzIG5vdCBpbml0aWFsaXplZCBpbiBHZXREY1N0YXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCVVzZSB0aGUgZm9udCBkZWZhdWx0IGNoYXIgZm9yIHVuZGVmaW5lZCBjaGFyYWN0ZXJzIHdoZW4gbWFwcGluZyBmcm9tCglVbmljb2RlLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9leHQsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfbm9ybSwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTmV3IE9wZW5HTCB0aHVuayBnZW5lcmF0aW9uIHNjcmlwdC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlZCB0aGUgUmVsZWFzZSBpbiBjYXNlIG9mIGVycm9yIGFzIHdlIGRvIG5vdCBBZGRSZWYgYW55bW9yZS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNYWRlIHRoZSBETEwgdmVyc2lvbiBjbGFzaCBlcnJvciBtZXNzYWdlIG1vcmUgdmVyYm9zZS4KCgkqIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jYXNlbWFwLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmMsIHVuaWNvZGUvY18wNDIuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmMsIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLCB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLCB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvY2FzZW1hcC5oLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBtZW1vcnkvc3RyaW5nLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wMzcuYzoKCVJlaW1wbGVtZW50ZWQgVW5pY29kZSBjYXNlIG1hcHBpbmcgaW4gYSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB3YXkuCglNb3ZlZCBjYXNlIG1hcHBpbmcgc3VwcG9ydCB0byB0aGUgdW5pY29kZSBkaXJlY3RvcnkuCglTb21lIGNsZWFudXBzIGluIGNwbWFwLnBsLCB1c2UgV0NIQVIgaW5zdGVhZCBvZiB1bnNpZ25lZCBzaG9ydC4KCjIwMDAtMDYtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIHdlcmUgbm90IHByb3Blcmx5IG1hc2tpbmcgdGhlIGl0ZW0gdGhhdCB3YXMgc2VudCB3aXRoIHRoZSBtZXNzYWdlCglhbmQgYWxzbyB3ZSB3aGVyZSBub3Qgc2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIGF0IHRoZSBwcm9wZXIgdGltZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglKYXNvbiBNYXdkc2xleSA8amFzb25AbWFjYWRhbWlhbi5jb20+CglUYWtlIGZvY3VzIGJlZm9yZSBzZXR0aW5nIHRoZSBjYXJldCBwb3NpdGlvbiBhbmQgc2VsZWN0aW9ucy4KCgkqIHJlbGF5MzIvc25vb3AuYzogSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXggZm9yIGNvbXBpbGVyIHdhcm5pbmcgKGR1ZSB0byBzZXRqbXAvbG9uZ2ptcCBiZWluZyB1c2VkIGZvcgoJZXhjZXB0aW9uIGhhbmRsaW5nKS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzYXZlIGFuZCByZXNldCBvZiBTZXRCS01vZGUgdmFsdWVzIGluIFdNX1BBSU5ULgoJQWRkZWQgaGFuZGxpbmcgb2YgbFBhcmFtIHZhbHVlIGluIEJNX1NFVFNUWUxFLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbmV0c3BpLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvcmljaGVkaXQuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS90YXBpLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luaW5ldC5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvYW5pbWF0ZS5oLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvY3J0ZGxsLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkY2Fwcy5oLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZGRlbWwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVvcmRlcmVkIHRoZSBDQUxMQkFDSyBhbmQgV0lOQVBJIGRpcmVjdGl2ZXMgc28gdGhhdCBpdCBjb21waWxlcyB3aXRoCglvbGQgZysrIHZlcnNpb25zLgoKCSogaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBEZWZpbmUgSElDIGluIHRoaXMgaGVhZGVyIHJhdGhlciB0aGFuIGluIHdpbmRlZi5oICh0aGlzIGlzIHRoZQoJICBjb3JyZWN0IHRoaW5nIHRvIGRvIGFsdGhvdWdoIGl0IGlzIHVucmVsYXRlZCB0byB0aGUgQysrIGlzc3VlcykuCgktIFdJTkVfSElDIGlzIGFuIGludGVybmFsIHN0cnVjdHVyZSBhbmQgaXQgd29uJ3QgY29tcGlsZSBpbiBDKysgYmVjYXVzZQoJICBpdCBjb250YWlucyBhIGZpZWxkIGNhbGxlZCAncHJpdmF0ZScuIEVuY2xvc2VkIGluIGEgX19XSU5FX18gaWZkZWYuCgktIFJlb3JkZXJlZCB0aGUgQ0FMTEJBQ0sgYW5kIFdJTkFQSSBkaXJlY3RpdmVzIHNvIHRoYXQgaXQgY29tcGlsZXMgd2l0aAoJICBvbGQgZysrIHZlcnNpb25zLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgdHlwbyBpbiB0aGUgbmFtZSBvZiBGcmVlUHJpbnRlck5vdGlmeUluZm8uCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSFRUUCBwcm90b2NvbCBub3cgc3VwcG9ydGVkLCBJbnRlcm5ldENyYWNrVXJsIGZpeGVkLCBsb3RzIG9mIG90aGVyCglmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIHRvb2xzL2J1aWxkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMKCS0gVXNlIG91dHB1dCBwcmVmaXggaW5zdGVhZCBvZiBoaWdoIG9yZGVyIGZ1bmN0aW9ucyB0aGF0LCBmb3Igc29tZQoJICByZWFzb24sIGxlYWtzIG1lbW9yeS4gVGhlIG1lbW9yeSB1c2FnZSBvZiB3aW5hcGlfY2hlY2sgaXMgbm93IGdyZWF0bHkKCSAgcmVkdWNlZC4gOi0pCgktIFR1cm5lZCBvbiBhcmd1bWVudCBraW5kIGNoZWNraW5nIG9mIGRvdWJsZXMgYnkgZGVmYXVsdAoKCSogZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgc2Vjb25kIGltcG9ydCBvZiB3aW5zcG9vbC5kcnYuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBzdXBwb3J0IGZvciBpY29ucyBzZXQgYnkgU1RNX1NFVElNQUdFLgoKCSogZGxscy93aW5lcHMvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglUZXJtaW5hdGUgaW1hZ2UgZGF0YSB3aXRoIGEgJz4nIFtUaGUgUFNMUk0gaXMgcmF0aGVyIHZhZ3VlIGFib3V0IHRoaXNdLgoJVGhhbmtzIHRvIEJlcm5kIEhlcmQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUpvaG4gRWxsaW90IDxqY2VAc2Vhc2lwLmRlbW9uLmNvLnVrPgoJU29tZSBmb250cyBtYXkgaGF2ZSBubyBjaGFyYWN0ZXJzIGF0IGFsbCBmb3Igc29tZSByZWFzb24sIGF2b2lkIGNyYXNoZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGQgYSBmZXcgbW9yZSBmbGFncyB0byB0aG9zZSByZWNvZ25pemVkIHdoZW4gZG9pbmcgdHJhY2UrZHNvdW5kLgoKCSogb2JqZWN0cy90ZXh0LmM6IEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRG9uJ3QgcHJpbnQgdWlMZW5ndGhEcmF3biBpbiB0aGUgRklYTUUgaW4gRHJhd1RleHRFeEEuICBJdHMgYW4gb3V0cHV0Cgl2YXJpYWJsZSwgbm90IGFuIGlucHV0IHZhcmlhYmxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglVc2UgWENyZWF0ZUltYWdlL1hHZXRTdWJJbWFnZSBpbnN0ZWFkIG9mIFhHZXRJbWFnZSBmb3IKCVgxMURSVl9ESUJfR2V0SW1hZ2VCaXRzLgoKMjAwMC0wNi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wNDIuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY184NTYuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgbWVtb3J5L2NvZGVwYWdlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBzeW1ib2wgY29kZXBhZ2UuCglJbXByb3ZlZCBoYW5kbGluZyBvZiB1bmRlZmluZWQgY29kZXBhZ2UgY2hhcmFjdGVycy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCU1ha2Ugc3VyZSBHZXRNb2R1bGVGaWxlTmFtZTE2IGRvZXMgbm90IHJldHVybiBnYXJiYWdlIGV2ZW4gaWYgdGhlIHBhdGgKCWlzIG5vdCB2YWxpZCAodGhhbmtzIHRvIEFuZHJlYXMgTW9ocikuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFzc2lnbiBjb2RlcGFnZSBmb3IgZXZlcnkgWDExIGZvbnQgc3VmZml4LCBhbmQgdXNlIGl0IGZvciBjb252ZXJ0aW5nCgl0ZXh0IHRvIGRpc3BsYXkuCgoJKiB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvY29kZV9wYWdlLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9jb2RlcGFnZS5jLCBtZW1vcnkvc3RyaW5nLmM6CglSZXdyb3RlIGNvZGVwYWdlIHN1cHBvcnQgdG8gdXNlIHRoZSBuZXcgY29kZXBhZ2UgdGFibGVzLgoKCSogdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgdW5pY29kZS9jXzk1MC5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBpbmNsdWRlL3dpbm5scy5oLCB1bmljb2RlL2NfMDM3LmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jLCB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgV0NfTk9fQkVTVF9GSVRfQ0hBUiBhbmQgZGVmYXVsdCBjaGFyIHBhcmFtZXRlcnMgaW4KCWNwX3djc3RvbWJzLgoJTWlub3IgY29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDYWxsIFRTWEZsdXNoIGFmdGVyIHNldHRpbmcgREdBIHBhbGV0dGUsIHNvIGl0IHVwZGF0ZXMgaW1tZWRpYXRlbHkuCgoyMDAwLTA2LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL2NwdGFibGUuYywgdW5pY29kZS9kZWZhdWx0cywgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCB1bmljb2RlLy5jdnNpZ25vcmUsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wMzcuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmM6CglBZGRlZCBhIGJ1bmNoIG9mIGNvZGUgcGFnZSB0YWJsZXMgZm9yIG11bHRpYnl0ZTwtPndpZGUgY2hhcgoJY29udmVyc2lvbnMgKHdpdGggdGhlIGhlbHAgb2YgRG1pdHJ5IFRpbW9zaGtvdikuCgoyMDAwLTA2LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWVtb3J5L3N0cmluZy5jLCBtaXNjL2xzdHIuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUltcGxlbWVudCBOVERMTC50b3d1cHBlciBhbmQgTlRETEwudG93bG93ZXIgdXNpbmcgYWxyZWFkeSBleGlzdGluZwoJY2FzZSBjb252ZXJzaW9uIHRhYmxlcy4gUmVwbGFjZSBhbGwgZGlyZWN0IGNhbGxzIHRvIHRvd3VwcGVyL3Rvd2xvd2VyCgllaXRoZXIgdG8gTlRETEwgZm9yIGNvcmUgb3IgdG8gQ1JURExMIGlmIGxhdHRlciBhbHJlYWR5IHVzZWQgaW4gdGhlCglub24gY29yZSBkbGwuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IFNoaSBRdWFuIEhlIChvZiBDb3JlbCkKCVRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTdHJldGNoQmx0IGluIFdJTkUgZG9lcyBub3QgdXNlIHRoZSBmb3JlZ3JvdW5kIGFuZAoJYmFja2dyb3VuZCBjb2xvciB3aGVuIGEgYml0bWFwIGlzIGNvcGllZCBmcm9tIG1vbm8gdG8gbW9uby4gIFRoaXMgaXMKCW5vdCB0aGUgY2FzZSBpbiB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIHVuZGVyIFdpbmRvd3MgYnV0IE1TRE4gZGlkCglub3QgZG9jdW1lbnQgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgbXVzdCB1cGRhdGUgdGhlIHJpZ2h0IGVkZ2UgKC0xKSBvZiB0aGUgbGFzdCBwYW5lbCB1cG9uIGRyYXdpbmcKCWluc3RlYWQgb2YgcmVseWluZyBvbiBXTV9TSVpFLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3Blcmx5IGhhbmRsZSBJbnNlcnRJdGVtIHdpdGggYW4gaW52YWxpZCBIVFJFRUlURU0uIFdpbmRvd3MgaGFuZGxlcwoJdGhlc2UgbGlrZSBhIFRWSV9MQVNULgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVR1cmNoYW5vdiBTZXJnZWkgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PgoJREdBIGNvbXBpbGUgZml4LgoKCSogZGxscy9NYWtlZmlsZS5pbjogQWRkZWQgbWlzc2luZyBkZXBlbmRlbmN5LgoKCSogZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCVJlbW92ZWQgdGhlIC54Y25sbmsgc2VjdGlvbiBoYWNrLCBhbmQgcmVwbGFjZWQgaXQgYnkgYW5vdGhlciBoYWNrIGluCgl0aGUgZGVidWdnZXIgQ1JFQVRFX1BST0NFU1MgZXZlbnQgaGFuZGxpbmcuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBNZXJnZWQgbW91c2UgZGxsIGludG8gVVNFUi4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzogQ29tcGlsZSBmaXguCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvdGh1bmsuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJUmVtb3ZlZCBhIGZldyB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL21vdXNlcmMucmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWM6CglNZXJnZWQgbW91c2UgZGxsIGludG8gVVNFUi4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglTaW1wbGlmaWVkIHdyYyBmbGFncyBoYW5kbGluZy4KCgkqIHdpbmRvd3Mvd2luLmM6CglZZXQgYW5vdGhlciBhdHRlbXB0IGF0IGZpeGluZyBDV19VU0VERUZBVUxUIGhhbmRsaW5nLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVXNlIEZJTEVfU0hBUkVfUkVBRCB0byBvcGVuIHRoZSBmaWxlIGluIEdldEJpbmFyeVR5cGVBLgoKCSogZGVidWdnZXIvbW9kdWxlLmM6CglTdHJpcCBwYXRoIG5hbWUgZnJvbSBkbGwgd2hlbiBhZGRpbmcgc3ltYm9scy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJU2VuZCBmdWxsIHBhdGggbmFtZSBhbmQgZGVidWcgaW5mb3JtYXRpb24gaW4gbG9hZF9kbGwgZXZlbnQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglQYXNzIHRoZSBtYWluIGV4ZSBuYW1lIGluIHRoZSBDUkVBVEVfUFJPQ0VTUyBkZWJ1ZyBldmVudC4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1ha2UgYSBiZXR0ZXIgZ3Vlc3MgdG8gZmluZCB0aGUgdG9wIG9mIHRoZSBpbml0aWFsIHN0YWNrLgoJRml4ZWQgRnJlZUJTRCBjb21waWxlIHByb2JsZW0gKHRoYW5rcyB0byBHZXJhbGQgUGZlaWZmZXIpLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglMb3Vpcy1QaGlsaXBwZSBHYWdub24gKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJU2VhcmNoIGZvciBhbHJlYWR5IGxvYWRlZCBDdXJzb3JJY29uIHdhcyBkb25lIHdpdGggdGhlIHdyb25nIGhhbmRsZSwKCXNvIGl0IHdhcyBsZWFraW5nIGljb25zLiBGaXhlZC4KCgkqIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIE1FU1NBR0VUQUJMRSByZXNvdXJjZSB0eXBlLgoJLSBVc2VydHlwZSByZXNvdXJjZXMgdGhhdCBjYXVzZSBhIHR5cGUtY2xhc2ggd2l0aCBkZWZpbmVkIHJlc291cmNlcwoJICBhcmUgbm93IGRldGVjdGVkIGFuZCBhIHdhcm5pbmcgaXMgZ2VuZXJhdGVkLiBTb21lIHR5cGVzIHNob3VsZCBiZQoJICByZXJvdXRlZCB0aHJvdWdoIG90aGVyIGNvZGUgc28gdGhhdCB0aGV5IHdpbGwgYmUgKHJlLSlpbnRlcnByZXRlZC4KCS0gQnVnZml4OiBMaW5lLWNvbnRpbnVhdGlvbiBpbiBzdHJpbmdzIGluIHJlc291cmNlcyBpbmNsdWRlIGEgbmV3bGluZS4KCSAgVGhpcyBgZmVhdHVyZScgZ290IGRlbGV0ZWQgd2l0aCB0aGUgYnVpbHRpbiBwcmVwcm9jZXNzb3IsIGJ1dCBoYXMgYmVlbgoJICBwdXQgYmFjayBpbnRvIHBsYWNlIChzZWUgbGFzdCBjaGFuZ2VzIGNvbW1lbnQgZnJvbSB2ZXJzaW9uIDEuMS4wKS4KCS0gQnVnZml4OiBUaGUgcHJlcHJvY2Vzc29yIG5vdyBjb3JyZWN0bHkgd2lsbCBzZWUgIlxcXHJcbiIgYXMgYSBsaW5lLQoJICBjb250aW51YXRpb24uCgktIEJ1Z2ZpeDogQXNzZW1ibGVycyBvbiBzb21lIHBsYXRmb3JtcyBkbyBub3QgdXNlIDE2Yml0IHF1YW50aXRpZXMKCSAgZm9yIGAud29yZCcuIFRoaXMgZGlyZWN0aXZlIGlzIG5vdyBjaGFuZ2VkIGludG8gYC5zaG9ydCcuCgktIEFsbCB0eXBlcyB0aGF0IGFjY2VwdCBpbmxpbmUgZGF0YSBkZWZpbml0aW9ucyAoYSBsYSBSQ0RBVEEpIG5vdwoJICBhbHNvIGFjY2VwdCBhIGZpbGUgc3BlY2lmaWNhdGlvbi4gVGhpcyB1bmlmaWVzIHRoZSBzdHJ1Y3R1cmUgYSBiaXQuCgoyMDAwLTA2LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kbGwtb3ZlcnJpZGVzOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUZXh0IG9mIFdXTiBhcnRpY2xlICJETEwgb3ZlcnJpZGVzIi4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCUFkZGVkIHRvIHByb2plY3QuIEN1cnJlbnRseSBpbmNvbXBsZXRlIGJ1dCB3aWxsIHVwZGF0ZSB3ZWVrbHkuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCVNldHVwIHNpZ25hbCBoYW5kbGluZyBhbmQgZXhjZXB0aW9ucyBvbmx5IGFmdGVyIFJFUV9JTklUX1BST0NFU1NfRE9ORQoJaGFzIGJlZW4gc2VudCwgdG8gYXZvaWQgZGVhZGxvY2tpbmcgdGhlIGRlYnVnZ2VyLgoKCSogY29udHJvbHMvY29tYm8uYywgaW5jbHVkZS9jb21iby5oOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgktIENvbWJvTEJveCBpcyBhbHdheXMgY3JlYXRlZCBhcyBjaGlsZCBvZiBDb21ib0JveC4gSWYgQ29tYm9Cb3ggaGFzIHN0eWxlCgkgIG90aGVyIHRoYW4gQ0JTX1NJTVBMRSwgcGFyZW50IG9mIGxpc3Rib3ggaXMgc2V0IHRvIGRlc2t0b3AuCgktIEluIENCRHJvcERvd24uIENvbWJvQm94IHVzZXMgb25seSBmaXJzdCBpdGVtIHRvIGNhbGN1bGF0ZSBoZWlnaHQgb2YKCSAgZHJvcHBlZCBsaXN0Ym94LiBBbHNvIGlmIGxpc3Rib3ggaXMgZW1wdHkgaXRzIGhlaWdodCBpcyB1bm1vZGlmaWVkCgkgIChwcmV2aW91c2x5IGl0IHdhcyBzZXQgdG8gMCkuCgktIEFkZGVkIGNvcnJlY3QgaGFuZGxpbmcgb2YgV01fR0VURExHQ09ERSBhbmQgV01fKFNZUylLRVlET1dOIG1lc3NhZ2VzLgoJLSBHZW5lcmFsIGNsZWFuLXVwLiBNZXNzYWdlIG9yZGVyIGlzIG5vdyBtb3JlIHByZWNpc2UgKGF0IGxlYXN0CgkgIG5vdGlmaWNhdGlvbnMgdG8gY2xpZW50KTsgbGlzdGJveCAtIGNvbWJvYm94IGludGVyYWN0aW9uIGhhcyBzbGlnaHQKCSAgZGlmZmVyZW5jZXMgY29tcGFyaW5nIHRvIFdpbmRvd3MuCgoJKiBjb250cm9scy9lZGl0LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJLSBSZW1vdmVkIGRlcGVuZGVuY3kgb2YgZWRpdCBjb250cm9sIGZyb20gY29tYm9ib3ggaW1wbGVtZW50YXRpb24uCgktIEVkaXQgY29udHJvbCB1c2VzIHVuZG9jdW1lbnRlZCB3aW5kb3cgc3R5bGUgMHgwMjAwIHRvIGRldGVjdCBpcyBpdCBhIHBhcnQKCSAgb2YgY29tYm9ib3guIElmIHNvIGl0IGNhbGxzIEdldERsZ0l0ZW0oaHduZENvbWJvLCAxMDAwKSB0byBnZXQgQ29tYm9MQm94CgkgIHdpbmRvdyBoYW5kbGUgKHNlZSBjb21tZW50cyBmb3IgY29tYm8uYyBiZWxvdykuCgktIEVESVRfQ2hlY2tDb21ibyAtIG1vZGlmaWVkIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIGtleWJvYXJkIG1lc3NhZ2VzLgoJLSBQcm9jZXNzaW5nIG9mIFdNX0dFVERMR0NPREUgYW5kIFdNX0NIQVIgZm9yIFZLX1JFVFVSTiBhbmQgVktfRVNDQVBFCgkgIGRlcGVuZHMgb24gd2hldGhlciBsaXN0Ym94IGlzIGRyb3BwZWQgZG93bi4gVGhpcyBwcmV2ZW50cyBjbG9zaW5nIG9mIGRpYWxvZwoJICBpZiBsaXN0Ym94IGlzIGRyb3BwZWQgZG93biBhbmQgYWxsb3dzIGNvbWJvYm94IHRvIHByb2Nlc3MgdGhlc2Uga2V5Ym9hcmQKCSAgbWVzc2FnZXMgcHJvcGVybHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJLSBXZSBjYW4gdXNlIHduZC0+d0lEbWVudSBmb3IgQ29tYm9MQm94IChpdCBpcyBub3QgcmVzZXQgYW55bW9yZSBpbiBTZXRQYXJlbnQpCgktIFdoZW4gdXNlciBjbGlja3Mgb3V0c2lkZSBvZiBkcm9wcGVkIGxpc3Rib3gsIG9yaWdpbmFsIHNlbGVjdGlvbiBtdXN0IGJlCgkgIHJlc3RvcmVkLgoJLSBDb21ib0xCb3ggaGFzIGNhcmV0X29uID0gRkFMU0Ugb24gY3JlYXRpb24sIHRoYXQncyB3aHkgY29tYm9ib3ggc2VuZHMKCSAgTEJfQ0FSRVRPTiBtZXNzYWdlIGJlZm9yZSBkcm9wcGluZyBsaXN0Ym94IGRvd24gKGJ1dCBvbmx5IGZvcgoJICBDQlNfRFJPUERPV05MSVNUIC0gSSBkb24ndCBub3cgd2h5KS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCVdlbGwsIFNldFBhcmVudCBkb2Vzbid0IHdvcmsgcHJvcGVybHkgYXQgYWxsLCBidXQgYXQgbGVhc3QgaXQgbXVzdCBwcmVzZXJ2ZQoJd2luZG93IElELiAgSW4gZmFjdCBpdCBhbHNvIG11c3QgcHJlc2VydmUgd2luZG93IHN0eWxlcywgZGVzdHJveSBYCgljb3VudGVycGFydCBpZiBwYXJlbnQgb2YgcG9wdXAgb3Igb3ZlcmxhcHBlZCB3aW5kb3cgaXMgc2V0IHRvIHNvbWV0aW5nCglkaWZmZXJlbnQgZnJvbSBEZXNrdG9wLCBhbmQgbG90IG9mIG90aGVyIHN0dWZmIHRoYXQgaXQgbXVzdCBhbmQgbXVzdG4ndCBkby4KCUJ1dCBwcmVzZXJ2aW5nIElEIGlzIGdvb2QgZW5vdWdoIGZvciBub3cuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglBZGRlZCB1bmRvY3VtZW50ZWQgd2luZG93IHN0eWxlLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBTbWFsbCB1cGRhdGUgdG8gZG9jdW1lbnRhdGlvbgoJLSBNb3JlIHBsYXllci9ncm91cCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gKG5vdCB0ZXN0ZWQpCgoJKiB3aW4zMi9leGNlcHQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2FsbCBNZXNzYWdlQm94QSBiZWZvcmUgVVNFUiBpcyBpbml0aWFsaXplZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU3RlcGhhbmUgTHVzc2llcgoJU2hlcmkgU3RlZXZlcwoJSGFpdGhlbSBIbWlkYQoJLSBIZWlnaHQgb2YgdGhlIGxpc3Rib3ggc2hvdWxkIGJlIGFkanVzdCB3aGVuIExCU19PV05FUkRSQVdGSVhFRCBpcyBzZXQKCSAgYW5kIG5vdCBpZiBMQlNfT1dORVJEUkFXVkFSSUFCTEUgaXMgc2V0LCBwcmV2aW91c2x5IGl0IHdhcyBub3QgYWRqdXN0aW5nCgkgIHRoZSBzaXplIGluIGJvdGggY2FzZXMuCgktIFdoZW4gdGhlIGNhcmV0IGluZGV4IGNoYW5nZSwgaXRlbXMgcmVwYWludGluZyBuZWVkIHRwIGJlIGluIHRoaXMKCSAgb3JkZXIKCSAgYSkgUGFpbnQgb2xkIGNhcmV0IGl0ZW0gd2l0aG91dCB0aGUgZm9jdXMKCSAgYikgUGFpbnQgb2xkIGNhcmV0IGl0ZW0gd2l0aG91dCB0aGUgc2VsZWN0aW9uCgkgIGMpIFBhaW50IG5ldyBjYXJldCBpdGVtIHdpdGggdGhlIHNlbGVjdGlvbgoJICBkKSBQYWludCBuZXcgY2FyZXQgaXRlbSB3aXRoIHRoZSBmb2N1cy4KCS0gV2hlbiByZXBhaW50aW5nIHRoZSBsaXN0Ym94LCB3ZSBzaG91bGQgcGFpbnQgYWxsIGl0ZW1zIHJlZ2FyZGluZyBpZgoJICB0aGV5IGFyZSBzbGVjdGVkIG9yIG5vdCBhbmQgdGhlbiBwYWludCBhZnRlciB0aGUgZm9jdXMgaXRlbS4gU28gZm9jdXMKCSAgaXRlbSB3aWxsIGVuZCBvdXQgYmVpbmcgcGFpbnRlZCB0d2ljZS4gKFRoYXQncyB3aGF0IFdpbmRvd3MgZG9lcykuCgoJKiBmaWxlcy9maWxlLmM6IFN0YXMgU2VyZ2VldiA8c3Rhcy5vcmVsQG1haWxjaXR5LmNvbT4KCW1tYXAoKSBmYWlscyB3aXRoIEVOT0RFViBvbiBOVEZTIHVuZGVyIExpbnV4LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQYXRoRmluZE5leHRDb21wb25lbnQ6IHJldHVybiBwb2ludGVyIHRvIE5VTEwgYW5kIG5vdCBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgb2YgVEJTVFlMRV9BVVRPU0laRS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvY3J0ZGxsLmgsIG1zZG9zL2lvcG9ydHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tZGxnMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2RiYzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCS0gVHVybmVkIG9uIGNhbGxpbmcgY29udmVudGlvbiBjaGVja2luZyBmb3IgV2luMzIgZnVuY3Rpb25zIGJ5CgkgIGRlZmF1bHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRPT0xCQVJfRHJhd1N0cmluZzogY2F0Y2ggaW5kZXg9PSAtMSAoYnV0IG5vdCB5ZXQgaGFuZGxlZCkuCgoJKiBtaXNjL29wdGlvbnMuYzoKCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IgaW4gc3RyaW5nIGFsbG9jYXRpb24uCgoJKiB3aW5kb3dzL3dpbi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IGZvciBDb3JlbAoJVGhlIHdpbmRvdyBkaW1lbnNpb25zIGhhdmUgdG8gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHNlbmRpbmcgdGhlCglXTV9HRVRNSU5NQVhJTkZPIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIG1pcy1hbGlnbmVkIGFjY2Vzc2VzIGR1cmluZyBCSU9TL0RPUyBkYXRhIGluaXRpYWxpemF0aW9uLgoKCSogdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc2l6ZSBvZiBwZV9oZWFkZXIgb24gbWFjaGluZXMgd2l0aCBub24tNEsgcGFnZXMuCgoJKiBpZjE2MzIvc25vb3AuYywgcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlICJDQUxMIiBhbmQgIlJFVCIgaW4gY2FwaXRhbCBsZXR0ZXJzIGZvciBkaXN0aW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVRoZSBhY3RpdmUgcGFnZSBzaG91bGQgYmUgdW5jaGFuZ2VkIHdoZW4gcmVtb3ZpbmcgYW4gYWN0aXZlIGZpcnN0IHBhZ2UKCWZyb20gYSBwcm9wZXJ0eSBzaGVldHMuCgoyMDAwLTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X3NwYXJjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVwZGF0ZWQgc3VwcG9ydCBmb3IgU29sYXJpcy9TcGFyYyBhcmNoaXRlY3R1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxfY2FyZGVuYXNAZGVuZWJhLmNvbT4KCUNvcnJlY3RlZCBhIHBvdGVudGlhbCBjcmFzaC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgc3RhY2sgc3dpdGNoIGhhbmRsaW5nIChsYXJnZSBzdGFjaykgdG8gc3lzZGVwcy5jCglFbmFibGUgZXhjZXB0aW9uIGRpc3BhdGNoIHdoaWxlIG9uIGxhcmdlIHN0YWNrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaW5pc2hlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTElTVFZJRVdfU2V0Q29sdW1uV2lkdGguICBUZXN0ZWQKCWFnYWluc3Qgd2luZG93cyB0aG9yb3VnaGx5LiAgRml4ZWQgYnVnIHJlc3VsdGluZyBpbiB1bnNpZ25lZCB2YWx1ZXMKCWJlaW5nIHBhc3NlZCBpbnRvIExJU1RWSUVXX1NldENvbHVtbldpZHRoIGZyb20gdGhlIGxpc3R2aWV3IHdpbmRvdwoJcHJvY2VkdXJlLiAgRml4ZWQgTElTVFZJRVdfR2V0SXRlbUhlaWdodCB0byBkaXNyZWdhcmQgdGhlIGhlaWdodCBvZgoJaWNvbnMgaWYgbm8gaWNvbnMgZXhpc3QuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQWRkZWQgZGVmaW5lcyBmb3IgTFZTQ1dfQVVUT1NJWkUvX1VTRUhFQURFUi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlcGxhY2VkIGNhbGxzIHRvIEhFQURFUl9SZWZyZXNoIHdpdGggSW52YWxpZGF0ZVJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJU3RhcnRlZCBzdXBwb3J0IGZvciBtZW51YmFyLWxpa2UgdG9vbGJhcnMuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvd2luZWRiZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb21waWxlIGZpeGVzIGZvciBub24taTM4NiBhcmNocy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy91aXRvb2xzLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQXR0ZW1wdCB0byBwYWludCB0aGUgY2hlY2tib3ggYW5kIHJhZGlvIGJ1dHRvbnMgYmV0dGVyLgoKMjAwMC0wNi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmM6IEZpeGVkIHdhcm5pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJVXBkYXRlZCB0byBkbGwgdmVyc2lvbiA1LjgxIChJRSA1LjAxKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJSW1wbGVtZW50ZWQgVFZNX0dFVElURU1XLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglKYXNvbiBNYXdkc2xleSA8amFzb25AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0eXBpbmcgdGhlIGZpbGVuYW1lIGluIHRoZSBsaXN0dmlldyBjb250cm9sIGFuZAoJaGF2aW5nIHRoZSBjb250cm9sIHNlbGVjdCBpdC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgbWlzYy9tYWluLmM6CglSZW1vdmVkIE1TR19XaW5lU3RhcnRUaWNrcyAoZG9lcyBub3Qgd29yayBmb3IgbXVsdGlwbGUgYWRkcmVzcyBzcGFjZXMKCWFueXdheSkuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglSZXBsYWNlZCBHZXREQyBieSBDcmVhdGVEQy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvZGliLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTW92ZWQgRElCX0ZpeENvbG9yc1RvTG9hZGZsYWdzIHRvIGN1cnNvcmljb24uYy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglEb2N1bWVudGVkIHRoZSBuZXcgd2luZSBjb21tYW5kIGxpbmUgYW5kIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQoJV0lORVBSRUZJWC4KCgkqIG1zZG9zL2RwbWkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5lcHMxNi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21kbGczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kc291bmQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbmVwcy5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBtZW1vcnkvaW5zdHIuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMTYuaDoKCURlbGF5IGxvYWRpbmcgb2YgaW50ZXJydXB0IHRhYmxlIGZ1bmN0aW9ucyB1bnRpbCB0aGV5IGFyZSBuZWVkZWQuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW9wb3J0cy5jOgoJRGVsYXkgaW5pdGlhbGl6YXRpb24gb2YgSS9PIHBlcm1pc3Npb25zIHVudGlsIHRoZXkgYXJlIGZpcnN0IHVzZWQuCgoJKiBsb2FkZXIvbWFpbi5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaWYxNjMyL3JlbGF5LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBrZXJuZWwgaW5pdGlhbGl6YXRpb24gdG8ga2VybmVsX21haW4uYwoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3AucmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9kaXNwbGF5LmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTWVyZ2VkIGRpc3BsYXkuZGxsIGludG8gVVNFUi4KCgkqIG1pc2Mvd3NwcmludGYuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgY3Jhc2guCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi93b3czMi5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbW0uc3BlYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5c3RlbS5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjLCBkbGxzL2tlcm5lbC93b3czMi5zcGVjLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2NvbW0uc3BlYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvc3lzdGVtLnNwZWMsIGlmMTYzMi90b29saGVscC5zcGVjLCBpZjE2MzIvd3Byb2NzLnNwZWMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVN0YXJ0IHRvIHNlcGFyYXRlIEtFUk5FTCBvdXQgb2YgbGlid2luZS4KCjIwMDAtMDYtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RzX3h1dGlsLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHV0aWwuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJUHJlc2VydmUgV00gaGludHMgdGhhdCB3ZXJlIHNldCBkdXJpbmcgd2luZG93IGNyZWF0aW9uIGJ5IGNhbGxpbmcKCVhHZXRXTUhpbnRzIHByaW9yIHRvIFhTZXRXTUhpbnRzLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsX2NhcmRlbmFzQGRlbmViYS5jb20+CglBZGRlZCBhIGZldyBtZXNzYWdlIGNyYWNrZXJzLgoKCSogdG9vbHMvd2luZWNvbmY6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkICJVbml4IGRyaXZlcyIgL3RtcCBhbmQgJHtIT01FfSwgYW5kIERldmljZSBhbmQgRmlsZXN5c3RlbQoJc3RhdGVtZW50cywgdG8gYXV0b2dlbmVyYXRlZCB3aW5lLmNvbmYuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIFJld3JpdGUgb2YgdGhlIHNoZWxsIHJlbGF0ZWQgcGFydHMgb2YgdGhlIGRpYWxvZyB0byB1c2UgdGhlIGFscmVhZHkKCSAgaW4gc2hlbGwzMmltcGxlbWVudGVkIGZ1bmN0aW9ucyAoU2hlbGxGb2xkZXIvUGF0aCopLiBFbGltaW5hdGVkIGRpcmVjdAoJICBmaWxlIGFjY2Vzcy4KCS0gUmVwbGFjZWQgTG9hZExpYnJhcnlBIHdpdGggR2V0TW9kdWxlSGFuZGxlQSBzaW5jZSBjb21kbGczMiBpcyBpbXBvcnRzCgkgIHNvbWUgZGxscyBwZXIgKi5zcGVjIGZpbGUKCS0gTW9zdCBPcGVuRmlsZSBGbGFncyAoT0ZOXyopIHNob3VsZCB3b3JrIHByb3Blcmx5IG5vdwoJLSBUaGUgZWRpdCBib3ggc2hvdWxkIHdvcmsgcmlnaHQgd2l0aCBhbGwgc3R1ZmYgZW50ZXJlZCBpbiBpdCBsaWtlCgkgIC4uXHRlbXBcZmlsZS50eHQgb3IganVzdCBjOiB0byBjaGFuZ2UgYSBkcml2ZQoJLSBPcHRpbWl6ZWQgRGF0YU9iamVjdCBoYW5kbGluZwoJLSBTb21lIGJ1Z3MgZml4ZWQsIHNob3VsZCB3b3JrIHdpdGggbmF0aXZlIHNoZWxsMzIgYWdhaW4uCgktIFN0dWJzIGZvciBQcmludERsZ0V4CgoyMDAwLTA2LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRvY3VtZW50YXRpb24vY29uZmlnLCBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9ycywgZG9jdW1lbnRhdGlvbi9mb250cywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglMb3RzIG9mIHNwZWxsaW5nIGZpeGVzIHRoYXQgYWNjdW11bGF0ZWQgaW4gbXkgdHJlZSBhZ2FpbiwgbWFkZSBzZXZlcmFsCgllcnJvciBtc2dzIG1vcmUgdmVyYm9zZSwgZG9jIHVwZGF0ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3NoZWxsMzIsIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBOZXcgKHNvbWUgc3R1YnMpOiBTSEdldEZvbGRlckxvY2F0aW9uLCBQYXRoQWRkRXh0ZW5zaW9uLAoJICBQYXRoSXNVTkNTZXJ2ZXIsIFBhdGhJc1VOQ1NlcnZlclNoYXJlLCBQYXRoTWFrZVByZXR0eSwKCSAgU0hDcmVhdGVTaGVsbFBhbGV0dGUsIFNIT3BlblJlZ1N0cmVhbSwgU0hPcGVuUmVnU3RyZWFtMgoJLSBNYW55IHN0cmluZyBmdW5jdGlvbnMgaW1wbGVtZW50ZWQKCS0gU29tZSBzdHVicyBmb3IgZXhwb3J0cyBieSBvcmRpbmFsCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJR2l2ZSBhIGVycm9yIG1lc3NhZ2UgaWYgYSBmb3J3YXJkZWQgZXhwb3J0IGlzIG5vdCByZXNvbHZlZC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCBGaW5kRmlyc3RGaWxlRXgsIGNsZWFuZWQgb2xkIGltcGxlbWVudGF0aW9uIHVwLgoKCSogY29udHJvbHMvd2lkZ2V0cy5jOgoJTG91aXMtUGhpbGlwcGUgR2Fnbm9uIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCVN0YXRpYyBjb250cm9scyB3ZXJlbid0IHJlY2VpdmluZyBXTV9MQlVUVE9OREJMQ0xLIG1lc3NhZ2VzIGJlY2F1c2UgdGhlCglTdGF0aWMgd2luZG93IGNsYXNzIHdhcyByZWdpc3RlcmVkIHdpdGhvdXQgdGhlIENTX0RCTENMS1Mgc3R5bGUgKHdoaWNoIGl0CgloYXMgaW4gV2luZG93cykuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFrZSBzdXJlIG1haW5fZXhlX25hbWUgaXMgYSBET1MgZmlsZW5hbWUgKHRoYW5rcyB0byBVd2UgQm9ubmVzKS4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHBsYXkuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIERpcmVjdFNvdW5kQ2FwdHVyZSBhbmQgRGlyZWN0U291bmRDYXB0dXJlQnVmZmVyIGludGVyZmFjZXMKCS0gQWRkZWQgc29tZSBTb3VuZENhcHR1cmUgc3R1YnMKCS0gQ2hhbmdlZCBSRUZJSUQgdG8gTFBDR1VJRCBpbiBhIGZldyBwbGFjZXMgYXMgcGVyIE1TIGhlYWRlciBmaWxlCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWIgZm9yIFJ0bENvbnZlcnRTaWRUb1VuaWNvZGVTdHJpbmcuCgoJKiBjb250cm9scy9zdGF0aWMuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglNU0ROOiAiV01fTkNISVRURVNUIC0gUmV0dXJucyBIVENMSUVOVCBpZiB0aGUgY29udHJvbCBzdHlsZSBpcwoJU1NfTk9USUZZOyBvdGhlcndpc2UsIHJldHVybnMgSFRUUkFOU1BBUkVOVC4gIgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB3YXJuaW5nLgoKMjAwMC0wNS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IGEgZGVmYXVsdCBzaXplIGZvciB3aW5kb3dzIHdoZW4gQ1dfVVNFREVGQVVMVCBpcyB1c2VkLgoKMjAwMC0wNS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9ubHMvaHJ2Lm5scywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCVpvcmFuIER6ZWxhamxpamEgPGplbGx5QHNyay5mZXIuaHI+CglCYXNpYyBDcm9hdGlhbiBsYW5ndWFnZSBzdXBwb3J0LgoKCSogY29udHJvbHMvZWRpdC5jOiBTZXJnZSBJdmFub3YKCVJldHVybmluZyBETEdDX1dBTlRBTExLRVlTIGZvciBtdWx0aWxpbmUgZWRpdCBjb250cm9sIHdhcyBub3QgZ29vZCBiZWNhdXNlCglpdCBicmVha3MgbmF2aWdhdGlvbiBpbiBkaWFsb2dzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEZpeGVkIHNvbWUgaW5pdGlhbGl6YXRpb24vZGVzdHJ1Y3Rpb24gYW5kIHJlZmVyZW5jZSBjb3VudGluZwoJLSBBZGRlZCBhIGxpdHRsZSBtb3JlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgoKCSogdG9vbHMvZm9udF9jb252ZXJ0LnNoOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQWRkZWQgYSBzaGVsbC1zY3JpcHQgZm9yIGVhc2llciBmb250LWluc3RhbGxhdGlvbi4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9jb2xvci5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5lcHMvd2luZXBzMTYuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL3dpbmVwcy5zcGVjLCBpbmNsdWRlL3BzZHJ2LmgsIGxvYWRlci9tYWluLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9iaXRibHQuYywgTWFrZS5ydWxlcy5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTZXBhcmF0ZSB3aW5lcHMgb3V0IG9mIFdpbmUncyBjb3JlLgoKCSogZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvZHBsYXkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGEgbGl0dGxlIG1vcmUgZGxsIGxldmVsIGRlYnVnZ2luZyBhbmQgc21hbGwgY2hhbmdlcwoJLSBTdGFydCBvbiBncm91cCBhbmQgcGxheWVyIGludGVyZmFjZXMKCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkIGFub3RoZXIgd2F5IHRvIGNyZWF0ZSBhIDNkIGxpc3RlbmVyIGludGVyZmFjZS4KCS0gRml4IHVwIHNvbWUgcmVmZXJlbmNlIGNvdW50aW5nIGJ1Z3MgYW5kIGludGVyZmFjZSBjcmVhdGlvbiBidWdzCgktIEFkZCBEaXJlY3RTb3VuZEVudW1lcmF0ZVcgc3R1YgoJLSBBZGQgRGlyZWN0U291bmRDYXB0dXJlRW51bWVyYXRle0EsV30gc3R1YnMKCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgaW5jbHVkZS9kYXRldGltZS5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBZGRlZCAzRCBib3JkZXIgYXJvdW5kIGNvbnRyb2wuICBGaXhlZCBtb250aGNhbCBjb250cm9sIHBvcHVwLiAgQWRkZWQKCVdNX1NJWkUgc3VwcG9ydC4gIE9wdGltaXplZCBkcmF3aW5nLiAgQWRkZWQgV01fTEJVVFRPTlVQIGhhbmRsaW5nLgoJSGFuZGxlIERUU19SSUdIVEFMSUdOIHN0eWxlLiAgRml4ZWQgaGFuZGxpbmcgb2YgZm9ybWF0dGluZyBzdHlsZXMsCglkYXRlIGlzIG5vdyBkaXNwbGF5ZWQgcHJvcGVybHkgZm9yIERUU19TSE9SVERBVEVGT1JNQVQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlbW92ZWQgYWxsIGRpcmVjdCBjYWxscyB0byBNT05USENBTF9SZWZyZXNoKCkgYW5kIHJlcGxhY2VkIHdpdGgKCWVpdGhlciBSZWRyYXdXaW5kb3cgb3IgSW52YWxpZGF0ZVJlY3QuIE9wdGltaXplZCBkcmF3aW5nIHVzaW5nCglSZWRyYVdpbmRvdyBhbmQgdXBkYXRlIHJlZ2lvbnMuICBGaXhlZCAiVG9kYXkiIGRhdGUgYnVnIHdoZXJlIHllYXIgd2FzCglvbmx5IG9uZSBkaWdpdC4gIEZpeGVkIGRyYXdpbmcgb2YgY2lyY2xlIGRyYXduIG5leHQgdG8gIlRvZGF5Ii4gIEZpeGVkCgltb3ZpbmcgdG8gcHJldmlvdXMgb3IgbmV4dCBtb250aCBieSBjbGlja2luZyBvbiBkYXlzIGJlbG9uZ2luZyB0bwoJcHJldmlvdXMgb3IgbmV4dCBtb250aHMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglBZGQgc3R1YiBmb3IgU2V0Q29uc29sZU91dHB1dENQLgoKCSogdG9vbHMvd3JjL3BweS55OgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgYSA7IG5lZWRlZCBieSBzb21lIFlBQ0NzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbnN0YWxsIHRoZSBjb2xvcm1hcCBvbmx5IGlmIGl0IHdhcyBjcmVhdGVkLgoKCSogbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgaW50IDB4MjEgbG9uZyBmaWxlIG5hbWUgZnVuY3Rpb24gMHg3MWEwOiBHZXQgVm9sdW1lIEluZm8uCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGVkIHdnbFNoYXJlTGlzdHMgYW5kIHdnbEdldEN1cnJlbnREQy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIGlkbGUgZXZlbnQgaGFuZGxpbmcgdG8gdGhlIHNlcnZlci4KCgkqIHdpbmRvd3Mvd2luLmM6CglVc2UgR2V0U3RhcnR1cEluZm9BKCkgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgcHJvY2VzcyBzdHJ1Y3R1cmUKCWRpcmVjdGx5LgoKCSogbG9hZGVyL3Rhc2suYzoKCU1ha2Ugc3VyZSBpbml0aWFsIHRhc2sgaXMgbm90IG1hcmtlZCBhcyAzMi1iaXQuCgoJKiBtaXNjL29wdGlvbnMuYzoKCU1ha2UgY2hpbGQgcHJvY2Vzc2VzIGluaGVyaXQgY29tbWFuZC1saW5lIG9wdGlvbnMgdGhyb3VnaCB0aGUKCVdJTkVPUFRJT05TIGVudmlyb25tZW50IHZhcmlhYmxlLgoKCSogd2luZG93cy93aW4uYzogU2VyZ2UgSXZhbm92CglTZXRQYXJlbnQ6IGNhbGwgU2V0V2luZG93UG9zIHdpdGggU1dQX05PQUNUSVZBVEUgZmxhZyBzZXQuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZGlzcGRpYi5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9kaXNwZGliLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW92ZWQgRElTUERJQiBvdXQgb2YgdGhlIGtlcm5lbCBpbnRvIEdESS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGluY2x1ZGUvY29tYm8uaDoKCURhdmlkIEdyYW50IDxkYXZpZGdyYUBjb3JlbC5jYT4KCS0gQ3JlYXRpbmcgY29tYm9ib3ggd2l0aCBDQlNfU0lNUExFIHN0eWxlIHNoYWxsIHNldCBpbnRlcm5hbCBmbGFnIENCRl9FRElULgoJLSBFZGl0IHRleHQgbXVzdCBiZSBzZWxlY3RlZCBvbmx5IGlmIENCIGlzIGluIGZvY3VzLgoJLSBJZiBDQiBoYXMgZWRpdCBjb250cm9sIHdlIGhhdmUgdG8gY2FsbCBDQlVwZGF0ZUVkaXQgdG8gdXBkYXRlIGl0cwoJICBjb250ZW50cy4gSW52YWxpZGF0aW5nIHRleHRSZWN0IHdpbGwgbm90IGZvcmNlIHVwZGF0aW5nIG9mIGNoaWxkCgkgIGVkaXQgY29udHJvbCwgb2J2aW91c2x5LgoJLSBXZSBoYXZlIHRvIHByb3RlY3Qgb3Vyc2VsdmVzIGZyb20gY2hhbmdpbmcgc2VsZWN0aW9uIGluIGxpc3Rib3ggd2hlbgoJICB3ZSByZWNlaXZlIGxpc3Rib3ggbm90aWZpY2F0aW9uLiBTbyBMQk5fU0VMQ0hBTkdFIC0+IENCVXBkYXRlRWRpdCAtPgoJICBFTl9DSEFOR0Ugd2lsbCBub3QgcmVzZWxlY3QgaXRlbSBpbiB0aGUgbGlzYm94LgoKCSogZGxscy9nZGkvZ2RpX21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBZGQgaW5jbHVkZSBmb3IgTG9hZExpYnJhcnkuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvYXRvbS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJVHVyY2hhbm92IFNlcmdlaSA8dHVyY2hhbm92QG90dnByaW0ucnU+CglJbXBsZW1lbnRlZCBsb2NhbCBhdG9tcyBpbiB0aGUgc2VydmVyLgoKCSogaWYxNjMyL2J1aWx0aW4uYzogRG8gbm90IGxvYWQgd2luZXBzIG9uIHN0YXJ0dXAuCgoJKiBtaXNjL2NvbW0uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgd2FybmluZy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IE93ZW4gV2FuZwoJV2hlbiB5b3UgY2xpY2sgb24gYW4gaWNvbiB0byBvcGVuIGEgY29tYm8gYm94LCB5b3Ugd291bGQgZXhwZWN0IGl0IHRvCgliZSBlbmFibGVkIHNvIHlvdSBjYW4gY2hvb3NlIHNvbWV0aGluZyBpbiBpdC4gSW4gV2luZSB0aGlzIHdhcyBub3QKCWd1YXJhbnRlZWQgc2luY2UgeW91ciBkZWZhdWx0IGZsYWdzIGNvdWxkIGdldCBsb3N0IGluIHRoZSBwcm9jZXNzLWhlYXAKCW9mIHRoZSBhcHBsaWNhdGlvbi4KCjIwMDAtMDUtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2ludDIwLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglFeGVjIGEgc2VwYXJhdGUgd2luZSBiaW5hcnkgZm9yIGV2ZXJ5IHdpbjMyIHByb2Nlc3Mgc28gdGhhdCB0aGV5IHJ1bgoJaW4gc2VwYXJhdGUgYWRkcmVzcyBzcGFjZXMuCglSdW4gMTYtYml0IHRhc2tzIGFzIFdpbjMyIHRocmVhZHMsIG5vdCBwcm9jZXNzZXMuCgoyMDAwLTA1LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAwNTI2LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YKCS0gQWRkZWQgaGFuZGxpbmcgb2YgV01fTU9VU0VBQ1RJVkFURSBtZXNzYWdlCgktIEFkZGVkIGluX2ZvY3VzIGZpZWxkIHRvIGludGVybmFsIGxpc3Rib3gncyBzdHJ1Y3R1cmUuIFRoaXMgZmxhZyBpcyBzZXQgb24KCSAgcmVjZWl2aW5nIFdNX1NFVEZPQ1VTIG1lc3NhZ2UgYW5kIGlzIHJlc2V0ZWQgb24gV01fS0lMTEZPQ1VTLiBBbGwgY2FsbHMgdG8KCSAgR2V0Rm9jdXMgZnVuY3Rpb24gd2VyZSByZXBsYWNlZCB3aXRoIGNoZWNrcyBvZiB0aGlzIGZsYWcuCgktIEluIExJU1RCT1hfSGFuZGxlTEJ1dHRvbkRvd246IGZvY3VzIGlzIHNldCBvbmx5IGlmICdpbl9mb2N1cycgZmxhZyBpcwoJICBjbGVhcgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJU3RhcnRlZCBsb2NhbCBuYW1lIHNlcnZlciBmcmFtZXdvcmsuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBQcmludFNldHVwIGRpYWxvZyBhbmQgc3VwcG9ydCBmb3IgaG9va3MgYW5kIHRlbXBsYXRlcy4KCU1vdmUgMTYgYml0IGFwaSBkZWZpbml0aW9ucyBvdXQgb2YgY29tbWRsZy5oIHRvIGNkbGcuaAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA1LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YKCS0gQWRkZWQgaGFuZGxpbmcgb2YgV01fTU9VU0VBQ1RJVkFURSBtZXNzYWdlCgktIEFkZGVkIGluX2ZvY3VzIGZpZWxkIHRvIGludGVybmFsIGxpc3Rib3gncyBzdHJ1Y3R1cmUuIFRoaXMgZmxhZyBpcyBzZXQgb24KCSAgcmVjZWl2aW5nIFdNX1NFVEZPQ1VTIG1lc3NhZ2UgYW5kIGlzIHJlc2V0ZWQgb24gV01fS0lMTEZPQ1VTLiBBbGwgY2FsbHMgdG8KCSAgR2V0Rm9jdXMgZnVuY3Rpb24gd2VyZSByZXBsYWNlZCB3aXRoIGNoZWNrcyBvZiB0aGlzIGZsYWcuCgktIEluIExJU1RCT1hfSGFuZGxlTEJ1dHRvbkRvd246IGZvY3VzIGlzIHNldCBvbmx5IGlmICdpbl9mb2N1cycgZmxhZyBpcwoJICBjbGVhcgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJU3RhcnRlZCBsb2NhbCBuYW1lIHNlcnZlciBmcmFtZXdvcmsuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBQcmludFNldHVwIGRpYWxvZyBhbmQgc3VwcG9ydCBmb3IgaG9va3MgYW5kIHRlbXBsYXRlcy4KCU1vdmUgMTYgYml0IGFwaSBkZWZpbml0aW9ucyBvdXQgb2YgY29tbWRsZy5oIHRvIGNkbGcuaAoKCSogY29udHJvbHMvZWRpdC5jOiBIZW5uaW5nIEhvZmZtYW5uCglEb24ndCBzZW5kIEVOX0NIQU5HRSBhZnRlciBwYWludGluZyB0aGUgZWRpdC4KCVNlbmQgaXQgd2hlcmV2ZXIgdGV4dCBpcyBjaGFuZ2VkLgoKCSogY29udHJvbHMvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJTW92ZWQgdGhlIEVOX1VQREFURSBub3RpZmljYXRpb24gb3V0IG9mIHRoZSBwYWludCBoYW5kbGVyLiBJbnN0ZWFkLAoJdGhlIG5vdGlmaWNhdGlvbiBpcyBzZW50IHdoZW4gYW4gSW52YWxpZGF0ZVJlY3QgaXMgbWFkZSBhZnRlcgoJbW9kaWZ5aW5nIHRoZSB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRnJhbmNvaXMgTWV0aG90IChNYWNhZGFtaWFuKQoJRml4ZWQgdGhlIGJsYW5rIGNvbG9yIHBhbGV0dGUgdG9vbHRpcCBidWcgYnkgdHJpZ2dlcmluZyBhIHJlZnJlc2ggb2YKCXRoZSB0b29sdGlwIHdpdGggVXBkYXRlV2luZG93IGZ1bmN0aW9uIGluc3RlYWQgb2YgY2FsbGluZyBkaXJlY3RseSB0aGUKCXJlZnJlc2ggZnVuY3Rpb24uCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZXh0ZXJuYWwuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9leHRfZGVidWdnZXIuYzoKCUphbWVzIEp1cmFuIDxqdXJhbkBjc2UucHN1LmVkdT4KCURFQlVHX0V4dGVybmFsRGVidWdnZXIoKSBuZWVkcyB0byBiZSBhIHBhcnQgb2Ygd2luZSwgbm90IHdpbmVkYmcuCgoyMDAwLTA1LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbjoKCURvIG5vdCBjbGVhciBzdWZmaXhlcyBsaXN0IChicmVha3MgQlNEIG1ha2UpLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgd2luc3Bvb2wgdG8gdW5pY29kZS4KCU1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmtlZCB0aGUgdGh1bWIgZHJhd2luZyBjb2RlLCB0aHVtYiBjYWxjdWxhdGlvbiBjb2RlLCBjaGFubmVsCgljYWxjdWxhdGlvbiBjb2RlLCBhbmQgY29ycmVjdGVkIHNvbWUgYnVncyBpbiBob3cgdGljcyBhcmUgZHJhd24gYW5kCglob3cgY2xpY2tzIGFyZSBoYW5kbGVkLgoKCSogY29udHJvbHMvZWRpdC5jOgoJTG91aXMtUGhpbGlwcGUgR2Fnbm9uIChvZiBNYWNhZGFtaWFuIFRlY2hub2xvZ2llcyBmb3IgQ29yZWwpCglBZGRlZCBldmVudCBoYW5kbGVyIGZvciBXTV9NQlVUVE9ORE9XTiAoc2VuZHMgV01fUEFTVEUgbWVzc2FnZSkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJVXNlIGNsaXBwaW5nIHJlZ2lvbnMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgcHJvY2Vzc2luZyBwZXJmb3JtZWQgd2hlbiB0aGUKCXRvb2xiYXIgaXMgcmVwYWludGluZy4gIFJlZHVjZXMgcHJvY2Vzc2luZyBieSBhcHByb3hpbWF0ZWx5IDg1LTk1JSBpbiBtb3N0CgljYXNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZXMgY3Jhc2ggd2hlbiBjYWxsaW5nIFRyZWV2aWV3X0VuZEVkaXRMYWJlbE5vdyBhbmQgbm8gbm9kZSBpcwoJY3VycmVudGx5IGVkaXRlZC4KCjIwMDAtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmVyIHRvIHN0YW5kYXJkIHNjcm9sbGluZyBBUElzIGZvciBub24tZmxhdFNCIHNwZWNpZmljIGZ1bmN0aW9ucyBzbwoJdGhhdCBmbGF0U0JzIHNob3cgdXAgYW5kIGJlaGF2ZSBwcm9wZXJseSwganVzdCBub3Qgd2l0aCBmbGF0IHByb3BlcnRpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglSb2IgRmFybnVtIDxyb2JmQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlcGFyYXRlIG91dCB0aGUgMzJiaXQgY2FzZSBmcm9tIHRoZSAyNGJpdCBjYXNlLCBhbmQgY29weSAzYnl0ZXMgb2YKCXNvdXJjZSBmb3IgZXZlcnkgNGJ5dGVzIG9mIGlucHV0LCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIDI0Yml0CgljYXNlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTb3J0ZWQgb3V0IGEgZmV3IG1pc3BsYWNlZCBkZWZpbml0aW9ucy4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGZpbGUgaGFuZGxpbmcgYW5kIHZpcnR1YWwKCW1lbW9yeSBtYW5pcHVsYXRpb24uCglBZGRlZCBJc1RleHRVbmljb2RlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIGZvciBUVlNfU0lOR0xFRVhQQU5ELgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ZWQgdGhlIHByb2JsZW0gd2hlcmUgYSB0YWIgY29udHJvbCBtYXJrZWQgbXVsdGlsaW5lIGJ1dCBoYXMKCW9ubHkgb25lIHRhYiB3YXMgYmVpbmcganVzdGlmaWVkIHRvIGZpbGwgdGhlIHdob2xlIHRhYiBzcGFjZS4KCgkqIG1zZG9zL2RwbWkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb21tZW50ZWQgb3V0IGJyb2tlbiBfX2FzbV9fLCBhZGRlZCBjb21tZW50cyB3aGVyZSBpdCBpcyBicm9rZW4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW5zZXJ0ZWQgYSBtaXNzaW5nIGNhbGwgdG8gU2V0V2luZG93UG9zKCkuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIGhlYWRlcgoJY29udHJvbCBpcyB2aXNpYmxlIGFnYWluIGluIGxpc3Qgdmlld3Mgd2l0aCByZXBvcnQgc3R5bGUuCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglSZXZpdmVkIHRoZSBHRU5fQ19TUkNTIHZhcmlhYmxlIHRvIHN1cHBvcnQgd3JjIGxleC95YWNjIHNvdXJjZXMuCgoyMDAwLTA1LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCVNlbmQgYSBub3JtYWwgbW91c2UgbWVzc2FnZSBjb2RlIGluIFdNX1BBUkVOVE5PVElGWSwgZXZlbiBpZiB0aGUKCWFjdHVhbCBtZXNzYWdlIHdhcyBhIG5vbi1jbGllbnQgb25lLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vcGVuZ2wzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIEFQSSBmaWxlcwoJLSBCZXR0ZXIgaGVhZGVycyBhbmQgcHJvdG90eXBlIGNoZWNraW5nCgktIFByb3RvdHlwZSBjaGVja2luZyBub3cgY2FsbGVkIC0tcHJvdG90eXBlIGluc3RlYWQgb2YgLS1oZWFkZXJzCgktIE5ldyBvcHRpb25zIC0taGVhZGVycy17ZHVwbGljYXRlZCxtaXNwbGFjZWR9IGZvcgoJICBkdXBsaWNhdGVkL21pc3BsYWNlZCBmdW5jdGlvbnMgY2hlY2tpbmcgb2YgdGhlIGhlYWRlcnMuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUlmIHN5c3RlbSBkb2Vzbid0IGhhdmUgT3BlbkdMLCBkb24ndCByZWZlciB0byBsaWJvcGVuZ2wzMi5zby4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzoKCUFiZXkgR2VvcmdlIChvZiBNYWNhZGFtaWFuL0NvcmVsKQoJV2hlbiB5b3Ugb3BlbiBmaWxlcyB3aXRoIEVtYmVkZGVkIG9iamVjdHMsIHRoZXkgd2VyZSBub3QgZ2V0dGluZyBkcmF3bgoJY29ycmVjdGx5LiAgV2hlbiB5b3UgcGFzdGUgT0xFIG9iamVjdHMgd2l0aCBwcmVzZW50YXRpb24gZGF0YSwgdGhleQoJd2VyZSBub3QgZ2V0dGluZyBkcmF3biBjb3JyZWN0bHkuCgoJKiBjb250cm9scy9tZW51LmM6IFJvYiBGYXJudW0gPHJvYmZAY29kZXdlYXZlcnMuY29tPgoJUG9zdCBhIFdNX0NBTkNFTE1PREUgbWVzc2FnZSB0byB3YWtlIHVwIHRoZSBpbnRlcm5hbCBtZW51IGhhbmRsaW5nCgljb2RlLiBUaGlzIGZpeGVzIHRoZSBwcm9ibGVtIG9mIGEgbWVudSBiZWluZyBvcnBoYW5lZCB3aGVuIHRoZSBwYXJlbnQKCXdpbmRvdyBkaXNhcHBlYXJzLCBvciBpZiB0aGUgcGFyZW50IGxvc2VzIGZvY3VzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggYSBtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzdHJpbmcgYW5kIHBhcmFtZXRlci4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU2V0QnVkZHkgbm8gbG9uZ2VyIG92ZXJ3cml0ZXMgaXRzIHN1cGVyY2xhc3MnIFduZFByb2MgcHJvcGVydHkgd2hlbgoJdGhlIGJ1ZGR5IGhhcyBhbHJlYWR5IGJlZW4gc3ViY2xhc3NlZCwgZWxpbWluYXRpbmcgdGhlIGluZmluaXRlIGxvb3AKCXRoYXQgcmVzdWx0ZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuZWQgdXAgWDExIGV4dGVuc2lvbiB0ZXN0cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCUNhcHR1cmUgXlYsXlgsXkMgYW5kIHRyYW5zbGF0ZSBpdCB0byB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIGZvcgoJcGFzdGUsIGN1dCwgY29weS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ZWQgdGhlIE9wZW5HTDMyIHNwZWMgZmlsZSAoYW5kIHRoZSBtYWtlX29wZW5nbF9zcGVjIHRvb2wpCgktIHByZXZlbnQgSGFsZkxpZmUgZnJvbSBjcmFzaGluZyB3aGVuIGl0IGZyZWVzIHRocmVlIHRpbWVzIHRoZSBzYW1lCgkgIHJlbmRlcmluZyBjb250ZXh0CgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgRGlyZWN0RHJhd1BhbGV0dGUgaGFuZGxpbmcgKHNldCBpdCBvbiBpbml0LCBub3QgZXZlcnkgdGltZSBpdAoJY2hhbmdlcykuIEFkZGVkIFZHQV9Xcml0ZUNoYXJzKCkgZnVuY3Rpb24uCgoJKiBtc2Rvcy9pbnQzMy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNjYWxlIG1vdXNlIGNvb3JkaW5hdGVzIHRvIGRlZmF1bHQgd2lkdGggNjQwLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgV0lORV9EaXJlY3REcmF3IGEgZGVjb3JhdGlvbmxlc3MgcG9wdXAgd2luZG93LiBGaXhlcyBtb3VzZQoJY29vcmRpbmF0ZXMgcHJldmlvdXNseSBvZmZzZXQgYnkgdGhlIGludmlzaWJsZSBkZWNvcmF0aW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI3VuZGVmIERFTEVURSBiZWZvcmUgKHJlKWRlZmluaW5nIGl0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCB0b29sdGlwcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZWR1Y2UgdG9vbGJhciByZWRyYXdpbmcgYW5kIGZsaWNrZXIgYnkgY2FsbGluZyBSZWRyYXdXaW5kb3coKSBpbgoJVE9PTEJBUl9Nb3VzZU1vdmUoKSBvbmx5IGlmIGhvdCBlZmZlY3QgYXBwbGllcyB0byB0aGUgY3VycmVudCBob3QKCWJ1dHRvbi4gIFJlc3RvcmUgYkhvdCBmbGFnIG9mIGhvdCBidXR0b24gaW4gVE9PTEJBUl9MQnV0dG9uVXAoKSB0bwoJcmVzdG9yZSBob3QgZWZmZWN0IHByb3Blcmx5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YKCUZpeGVkIFdNX0xCVVRUT05EQkxDTEsgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTZXQgYW5kIHJldHJpZXZlIHRoZSB3aW5kb3cgaWNvbiB0aGF0IGlzIGRyYXduIHVuZGVyIG1hbmFnZWQgbW9kZQoJKGJhc2VkIG9uIHRoZSB3b3JrIG9mIEFuZHJldyBMZXd5Y2t5IGZvciBDb3JlbCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ZWQgYSBwcm9ibGVtIG9mIHdoZW4gb2xkSGl0IGlzIG5lZ2F0aXZlIGFuZCB3ZSB0cnkgdG8gdXNlIGl0IGFzCglhbiBpbmRleCBpbnRvIHRoZSBidXR0b25zIGFycmF5LgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU2hvdWxkIGluY2x1ZGUgY29tbWRsZy5oLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglEZWZpbmUgdGhlIF9YODZfIG1hY3JvIG9uIEludGVsIHByb2Nlc3NvcnMuCgoJKiBjb250cm9scy9lZGl0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNvbWUgcGFydCBvZiBFRElUX0VNX0xpbmVMZW5ndGggY29kZSB3YXMgY29tbWVudGVkIChicm9rZW4pLiBSZXN0b3JlZAoJdGhlIGNhcGFiaWxpdHkgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5pbmcgbm9uLXNlbGVjdGVkIGNoYXJzIG9mIGEKCXNlbGVjdGlvbiBhcmVhLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmUgdGhlIFBSSU1BUllTVVJGQUNFIGF0dHJpYnV0ZSBmcm9tIGJhY2sgYnVmZmVycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiBhIGxpc3R2aWV3IGlzIGNyZWF0ZWQgd2l0aCBMVlNfTk9DT0xVTU5FSEVBREVSIHRoZW4gd2luZSBjcmVhdGVzIHRoZQoJaGVhZGVyIGxpa2Ugbm9ybWFsIGJ1dCBqdXN0IHNldHMgaXQgbm90IHZpc2libGUuIFRoaXMgZml4IGxheXMgb3V0Cgl0aG9zZSBzdXBwb3NlZGx5IG5vbmV4aXN0ZW50IGhlYWRlcnMgdG8gc2l6ZSAwLDAuIFNvIHRoYXQgZXZlbiBpZiB0aGV5CgliZWNvbWUgdmlzaWJsZSB0aGV5IGFyZSBub3QgZHJhd24uCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgdGhlIGRpcmVjdCBjYWxsIGludG8gY29yZSAoRElBTE9HX0RvRGlhbG9nQm94KS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW5pdGlhbGl6ZSB0aGUgYmFjay1idWZmZXIgd2l0aCB0aGUgY29ycmVjdCBWVGFibGUuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgd2luZS5pbmk6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBvcHRpb24gdG8gZ2V0IGRvdWJsZS1idWZmZXJlZCBkZXNrdG9wCgktIGltcGxlbWVudGVkIHdnbFVzZUZvbnRCaXRtYXBzQSBhbmQgd2dsRGVsZXRlQ29udGV4dAoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZHVtcHJlcy5oLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBhbmltYXRlZCBjdXJzb3JzIGFuZCBpY29ucyByZXNvdXJjZSB0eXBlcy4KCS0gQWRkZWQgcGFydGlhbCBzdXBwb3J0IGZvciBmb250IHJlc291cmNlcyAodXNlciBzdXBwbGllZCBmb250ZGlyIGlzCgkgIHJlcXVpcmVkKS4KCS0gQWxsIHJlc291cmNlcyB3aXRoIGlubGluZSBkYXRhIChhIGxhIFJDREFUQSkgbm93IHN1cHBvcnQgbGFuZ3VhZ2UsCgkgIHZlcnNpb24gYW5kIGNoYXJhY3RlcmlzdGljcyBkYXRhLgoJLSBJbXBsZW1lbnRlZCByZXNvdXJjZSBuYW1lIGR1cGxpY2F0ZSBjaGVja3MuIEl0IGlzIG5vdyBhbiBlcnJvciBpZgoJICB0d28gcmVzb3VyY2VzIG9mIHRoZSBzYW1lIHR5cGUgaGF2ZSB0aGUgc2FtZSBuYW1lLgoJLSBCdWdmaXg6IExhbmd1YWdlIHByb3BhZ2F0aW9uIHdhcyBub3QgY29ycmVjdCB3aGVuIC5yZXMgZmlsZXMgd2VyZQoJICBnZW5lcmF0ZWQuCgktIEJ1Z2ZpeDogVkVSU0lPTklORk8gbm93IGhhbmRsZXMgbWVtb3J5IG9wdGlvbnMuCgktIEJ1Z2ZpeDogcmVzb3VyY2UgbmFtZXMgYW5kIHRoZSByZXNvdXJjZSB0eXBlIG1heSBiZSBlcXVhbCAoZS5nLiBNRU5VCgkgIE1FTlUgey4uLn0pLiBUaGlzIHN1cHBvcnQgd2FzIG1pc3Rha2luZ2x5IGRlbGV0ZWQgaW4gdGhlIHVwZ3JhZGUgdG8KCSAgdGhlIGJ1aWx0aW4gcHJlcHJvY2Vzc29yLgoJICBUaGUgc3RhbmRhbG9uZSBMQU5HVUFHRSBzZXR0aW5nIGJlY2FtZSBjb250ZXh0IHNlbnNpdGl2ZSBhcyBhIGNvbnNlcXVlbmNlCgkgIG9mIHRoaXMuIE5vdyBpdCAqbXVzdCogZW5kIHdpdGggYSBuZXdsaW5lICphZnRlciogYm90aCBleHByZXNzaW9ucyBhbmQKCSAgbm8gbmV3bGluZXMgYXJlIGFsbG93ZWQgd2l0aGluIHRoZSBsaW5lICh0aGUgc3RhdGVtZW50IG11c3QgZml0IG9uIG9uZQoJICBsaW5lKS4gVGhpcyBpcyBubyBwcmFjdGljYWwgcHJvYmxlbSB0aG91Z2guCgoJKiB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTZW5kIHJlZ3VsYXIgbWVzc2FnZXMgdG8gc3Rkb3V0IHNvIHRoYXQgdGhleSBhcmUgc2VwYXJhdGUgZnJvbQoJcHJvZ3Jlc3MgbWVzc2FnZXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlZ3Jlc3Npb24gdGVzdGluZyB1c2luZyBDVlMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBTbWFsbCBmaXhlcy91cGRhdGVzCgktIEFkZCBzdXBwb3J0IGZvciB0aGUgRFBDT05ORUNUSU9OX0RJUkVDVFBMQVlMT0JCWSBmbGFnCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkYmc6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUEgYml0IG9mIGRvY3VtZW50YXRpb24gb24gbmV3IGRlYnVnZ2luZyBmZWF0dXJlcy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBKYW1lcyBKdXJhbiA8anVyYW5AY3NlLnBzdS5lZHU+CglTZWFyY2hQYXRoQSBuZWVkcyB0byBzZXQgdGhlIGxhc3QgZXJyb3IgdG8gRVJST1JfRklMRV9OT1RfRk9VTkQgd2hlbgoJaXQgZG9lcyBub3QgZmluZCB0aGUgZmlsZS4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglVc2UgV0FSTigpIGluc3RlYWQgb2YgVFJBQ0UoKSBpbiBEZWJ1Z091dHB1dEEoKS4KCgkqIG1lbW9yeS9oZWFwLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglIZWFwRnJlZSBvbiBhIE5VTEwgcHRyIHNob3VsZCByZXR1cm4gVFJVRS4KCjIwMDAtMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVVwZGF0ZSBuSXRlbVdpZHRoIGluIExJU1RWSUVXX1NldEl0ZW0oKSBpZiBMVlNfTElTVCBvciBMVlNfU01BTExJQ09OCgltb2RlIGFuZCBpdGVtIHRleHQgaXMgd2lkZXIgdGhhbiB0aGUgY3VycmVudCBuSXRlbVdpZHRoLgoKCSogbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPlUKCUZpeGVkIGluaXRpYWxpemF0aW9uIG9mIElOU1RBTkNFREFUQSBpbiBJbml0VGFzaygpLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTdGdPcGVuU3RvcmFnZTE2OiBjb3JyZWN0IGFyZ3VtZW50cyB0byB0aGUgQ3JlYXRlRmlsZSBjYWxsLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglET1NGU19Eb0dldEZ1bGxQYXRoTmFtZTogdGVybWluYXRlIHN0cmluZyB3ZWggY2FsbGVkIGxpa2UgLlxcZmlsZQoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZXBsYWNlIHRoZSBjYWxscyB0byBtYWxsb2MgYnkgY2FsbHMgdG8gSGVhcEFsbG9jIGFuZCBmcmllbmRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgdGhlIGxpbmUgb2YgZ2FyYmFnZSBhdCB0aGUgYm90dG9tIG9mIGltYWdlcyBhbmQgdGhlIGZhY3QgdGhhdAoJdGhlIGJ1dHRvbnMgaW4gdGhlIG9wZW4gZGlhbG9nIGJveCB3aGVyZSB0b28gdGFsbC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMmNvbnYuc3BlYywgZGxscy9vbGUzMi9vbGUycHJveC5zcGVjLCBkbGxzL29sZTMyL29sZTJ0aGsuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL29sZTJjb252LnNwZWMsIGlmMTYzMi9vbGUycHJveC5zcGVjLCBpZjE2MzIvb2xlMnRoay5zcGVjLCBkbGxzL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vdmVkIGlmMTYzMi9vbGUye2NvbnYscHJveCx0aGt9LnNwZWMgaW50byBkbGxzL29sZTMyLgoKMjAwMC0wNS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkY2Fwcy5oLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZHNvdW5kLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCByZW1haW5pbmcgRGlyZWN0WCAzRDMgNiY3IDNEIGludGVyZmFjZXMuCgktIEFkZGVkIGQzZGNhcHMuaCwgZDNkdHlwZXMuaCBhbmQgcmVhcnJhbmdlZCBjb250ZW50cyBhY2NvcmRpbmcgdG8KCSAgRGlyZWN0WCA3IGhlYWRlcnMuCgktIEZpeGVkIGRzb3VuZC5oIGluY2x1ZGUgbGlzdCAoZDNkLmgtPmQzZHR5cGVzLmgpLgoKCSogcHJvZ3JhbXMvcmVnYXBpL1JFQURNRToKCUp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCU1pbm9yIHVwZGF0ZS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX3Rlc3QuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJR2V0UmVsQWJzIGZvciBzb21lIHJlYXNvbiB0YWtlcyAyIHBhcmFtZXRlcnMsIGV2ZW4gdGhvdWdoIHRoZSBzZWNvbmQKCW9uZSBpcyBpZ25vcmVkIGF0IGxlYXN0IG9uIFdpbmRvd3MgTlQgMy41MSBhY2NvcmRpbmcgdG8gTWFyY3VzIE1laXNzbmVyLgoKCSogY29udHJvbHMvZWRpdC5jOiBTaGVyaSBTdGVldmVzCglUaGUgZWRpdCBpcyBub3cgZGV0ZWN0ZWQgY29ycmVjdGx5IGlmIHRoZSBwYXJlbnQgaXMgYSBjb21ibyBib3guIEl0Cgl3YXNuJ3Qgd29ya2luZyB3aGVuIHRoZSBjb21ib2JveCB3YXMgc3VwZXJjbGFzc2VkLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRnJhbmNvaXMgQm9pc3ZlcnQKCVN5c3RlbSBpY29ucyBpbiB0aGUgc21hbGwgY2FwdGlvbiBiYXJzIGFyZSBkaXNwbGF5ZWQgd2l0aCB0aGUgcmlnaHQgc2l6ZS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfbm9ybSwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb3BlbmdsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDb252ZXJ0IEMrKyBjb21tZW50cyB0byByZWd1bGFyIEMgY29tbWVudHMuCgoJKiBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgSURpcmVjdERyYXdTdXJmYWNlOjpTZXRQYWxldHRlIHNldCB0aGUgc3VyZmFjZSdzIERJQlNlY3Rpb24gY29sb3IKCW1hcCB0byBwb2ludCB0byB0aGUgSURpcmVjdERyYXdQYWxldHRlJ3Mgb3duIGRlcHRoIGNvbnZlcnNpb24gY29sb3IgbWFwLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbml0aWFsaXplIGFuIGlkZW50aXR5IG1hcHBpbmcgaW4gQ3JlYXRlUGFsZXR0ZSBpZiBubyBkZXB0aCBjb252ZXJzaW9uCglpcyBuZWNlc3NhcnkuIEFsc28gZml4ZWQgYSB3YXJuaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgWDExRFJWX0RJQl9NYXBDb2xvciBtYXAgYmFjayB0byB0aGUgb3JpZ2luYWwgY29sb3IgaW5kZXggaWYgdGhlCglYSW1hZ2UgcGl4ZWwncyBwaHlzaWNhbCBjb2xvciBpcyBzdGlsbCB0aGUgc2FtZS4KCjIwMDAtMDUtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVVzZSB0aGUgY29ycmVjdCBkaXNwbGF5IGZvciBjYWNoZWQgbWV0cmljcyBmaWxlIG5hbWUuCglTdG9yZSBtZXRyaWNzIGluIHNwZWNpZmllZCBjb25maWcgZGlyLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9vcHRpb25zLmgsIHdpbmUuaW5pOgoJTWFrZSBzdXJlIGFsbCBXaW5lIHByb2Nlc3NlcyBzaGFyZSB0aGUgc2FtZSBYIGRpc3BsYXkuCglJbmhlcml0IC0tbWFuYWdlZCBvcHRpb24gYWNyb3NzIHByb2Nlc3Nlcy4KCUFkZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGRpc3BsYXkgYW5kIG1hbmFnZWQgbW9kZSBpbiBjb25maWcgZmlsZS4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSB1bnNpZ25lZCBpbnQgaW5zdGVhZCBvZiB1bnNpZ25lZCBzaG9ydCBpbiBEaXJlY3REcmF3CglkZXB0aC1jb252ZXJzaW9uIGNvbG9yIG1hcC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBjYWxscyB0byBTZXRGb2N1cyB3aGVuIHRoZXkgYXJlIHVubmVjZXNzYXJ5LgoKMjAwMC0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCURhdmlkIEJsYWNrIDxkYmxhY2tAYnRpbnRlcm5ldC5jb20+CglJbXBsZW1lbnRlZCBUVk1fRURJVExBQkVMQSwgcGx1cyBzb21lIGltcHJvdmVtZW50cyB0byBFbmRMYWJlbEVkaXROb3cuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNb3JlIHZlcmJvc2UgZXJyb3JzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBib3JkZXJzIG9mIHdpbmRvd3Mgd2hpbGUgZHJhZ2dpbmcgb3Igc2l6aW5nIHRvIG1hdGNoCglUV0VBS19XaW5lTG9vayBzZXR0aW5nLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2luY2x1ZGUgPHN5cy90eXBlcy5oPiBiZWZvcmUgPHN5cy9tbWFuLmg+LgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9kZGVtbC5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZGRlbWwuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2RkZW1sLnNwZWMsIGlmMTYzMi9vbGUybmxzLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW92ZWQgRERFTUwgaW50byBkbGxzL3VzZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVnaXN0cnkgdmFsdWVzIGxhcmdlciB0aGFuIHRoZSBzZXJ2ZXIgYnVmZmVyLgoJV2hlbiBsb2FkaW5nIGEgcmVnaXN0cnkgZmlsZSwgYXV0b21hdGljYWxseSBkZXRlcm1pbmUgb3ZlcmxhcCBiZXR3ZWVuCglrZXkgbmFtZSBhbmQgZmlsZSBjb250ZW50cyBiYXNlZCBvbiB0aGUgZmlyc3Qga2V5IG5hbWUuCglSZW1vdmVkIHYxIHNhdmluZyBjb2RlLgoJU2F2ZSBVU0VSXC5EZWZhdWx0IHNlcGFyYXRlbHkgaW50byB+Ly53aW5lL3VzZXJkZWYucmVnLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIERJQlNlY3Rpb24gc3VwcG9ydCBmb3IgSURpcmVjdERyYXdTdXJmYWNlOjpHZXREQy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNldCBkZWJ1ZyBtZXNzYWdlcyBhZnRlciBhIFRSQUNFX09OIHRlc3QKCS0gcHJldmVudCBjcmFzaCB3aGVuIG1ha2luZyB0aGUgTlVMTCBjb250ZXh0IGN1cnJlbnQKCgkqIGNvbnRyb2xzL21lbnUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglXaGVuIG5ldyBtZW51IElkIGlzIG5vdCBmb3VuZCBvciBpbmRleCA+IG5pdGVtcywgaW5zZXJ0IHRoZSBuZXcgbWVudQoJYXQgZW5kIG9mIGN1cnJlbnQgbWVudS4KCjIwMDAtMDUtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBpbmNsdWRlL2RkcmF3Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBhYmlsaXR5IHRvIGNyZWF0ZSAzRDMgaW50ZXJmYWNlcyBmb3IgWGxpYgoJLSBDaGFuZ2VkIEREX09LIHRvIEQzRF9PSyBpbiBzb21lIHBsYWNlcyBmb3IgY29uc2lzdGVuY3kKCS0gQ2xlYW5lZCB1cCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzIHByZXNlbnQgd2l0aG91dCBER0EyCgktIENoYW5nZWQgb3JkZXIgZm9yIERpcmVjdERyYXdFbnVtZXJhdGVFeEEgdG8gZW51bWVyYXRlIGF0IGxlYXN0CgkgIHdoYXQgYWJpbGl0aWVzIGFyZSBrbm93biByYXRoZXIgdGhhbiBiYWlsaW5nIG9uIHVuc3VwcG9ydGVkIGZsYWdzCgktIEFkZGVkIERpcmVjdERyYXdDcmVhdGVFeCBzdHViCgoyMDAwLTA1LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3Rpbmd1aXNoIFJBRElPQ0hFQ0sgc3R5bGUgbWVudSBpdGVtcyBmcm9tIHN0YW5kYXJkIGNoZWNrbWFyayBtZW51CglpdGVtcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpa2UgdGhlIEFVVE9SQURJT0JVVFRPTiwgdGhlIHBhcmVudCBvZiBhIFJBRElPQlVUVE9OIHN0eWxlIGJ1dHRvbgoJc2hvdWxkIGJlIHNlbnQgYSBCTl9DTElDS0VEIHdoZW4gaXQgcmVjZWl2ZXMgdGhlIGZvY3VzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRGdWxsUGF0aG5hbWU6IGFkZCBtaXNzaW5nIHRlcm1pbmF0aW9uIHRvIHRoZSBzdHJpbmcuCgoJKiB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgYnl0ZSBvcmRlciBvbiBTb2xhcmlzIGFuZCBGcmVlQlNELgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5lX2dsLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfZXh0LCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX25vcm0sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuaCwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBPcGVuR0wuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFic29sdXRlIHBhdGggdG8gcGlkbCBnZW5lcmF0aW9uLgoKMjAwMC0wNS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJRml4ZWQgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCB3aW5kb3dzL2RyaXZlci5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGRlYnVnIG1lc3NhZ2VzLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBpbmNsdWRlL3JpY2hlZGl0LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L29sZTJkaXNwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbWFnZWhscC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yaWNoZWQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQ2hlY2sgZm9yIG1pc3NpbmcgbW9kdWxlcyBpbiBtb2R1bGVzLmRhdC4KCS0gTmV3IG9wdGlvbnMgLS1kZWJ1Zy1tZXNzYWdlcyBmb3IgZGVidWcgbWVzc2FnZSBjaGVja2luZyAodHVybmVkIG9mZgoJICBieSBkZWZhdWx0KQoJLSBEbyBub3QgZGlzY2FyZCB0aGUgYXJndW1lbnQgbmFtZSAodXNlIGluIGRlYnVnIG1lc3NhZ2UgY2hlY2tpbmcpCgktIEltcHJvdmVkIHBhcnNpbmcKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRml4ZWQgYXNtKCkgY29uc3RyYWludHMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCAlcCBpbiBwcmludGYgKG5vdyB1c2luZyB3c3ByaW50ZiB3aGljaCBkb2Vzbid0IHN1cHBvcnQgaXQpLgoJQWRkZWQgVGhyZWFkSWQgYW5kIFByb2Nlc3NJZCBpbnRlcm5hbCB2YXJzLgoJQWxsb3cgYXQgc3RhcnR1cCB0byBwaWNrIHVwIGEgcHJvY2VzcyB0byBkZWJ1Zy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBkaXZpc2lvbiBieSB6ZXJvLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHF1aXJrcyAocmFuZ2UgaXMgMzIgYml0LCBwYWdlIHVwL2RuIG1pc21hdGNoIG9uIEhaIHRyYWNrYmFycykuCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNjcm9sbCBvZmYtc2NyZWVuIGNvbnRyb2xzIHdoZW4gc2Nyb2xsIHJlY3RhbmdsZSBpcyBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDoKCUtlbiBUaG9tYXNlcyA8a2VuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRhYiBjb250cm9sIHN0eWxlIFRDU19IT1RUUkFDSyAodGFicyBhcmUgaGlnaGxpZ2h0ZWQgb24KCW1vdXNlLW92ZXIpLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIGJhY2tncm91bmQgZnJvbSB0aGUgbmV3IGltYWdlIHdoZW4gaXQgaXMgYmVpbmcgcmVwbGFjZWQKCXdpdGggYSBSZXBsYWNlSW1hZ2UuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmM6CglCZXJuZCBIZXJkIDxpbmZvQGhlcmRzb2Z0LmNvbT4KCU1ha2Ugc3VyZSBoSW5zdGFuY2UgaXMgYSBwcm9wZXIgZ2xvYmFsIGhhbmRsZSBhbmQgbm90IGEgc2VsZWN0b3IKCXZhbHVlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEplYW4tQ2xhdWRlIEJhdGlzdGEKCVByaW50RGlhbG9nIG5vdyBjcmVhdGVzIGEgREMgd2hlbiByZWNlaXZpbmcgYSBQRF9SRVRVUk5EQyBmbGFnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIHRoZSBkcmF3aW5nIGNvZGUgYWZ0ZXIgYSBsYWJlbCB1cGRhdGUuIFRoZXJlIHdlcmUgcHJvYmxlbXMgaWYKCXRoZSBuZXcgbGFiZWwgaXMgc2hvcnRlciB0aGF0IHRoZSBvbGQgbGFiZWwgZnJhZ21lbnRzIG9mIHRoZSBvbGQgbGFiZWwKCXdlcmUgbGVmdCBkcmF3bi4KCgkqIHdpbmRvd3Mvd2luLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDbGVhciBtZW51IGhhbmRsZSBhZnRlciBkZXN0cm95aW5nIG1lbnUuCgoJKiBjb250cm9scy9tZW51LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmV2YWxpZGF0ZSBtZW51IGhhbmRsZSBpbiBtdC5oVG9wTWVudSBhZnRlciBEaXNwYXRjaE1lc3NhZ2UuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBCZXJuZCBIZXJkIDxpbmZvQGhlcmRzb2Z0LmNvbT4KCVBhc3MgQ1RMREFUQSBhcyBTRUdQVFIgZm9yIDE2LWJpdCBwcm9ncmFtcy4KCgkqIGRsbHMvdmVyc2lvbi92ZXIxNi5jOgoJQWxleGFuZGVyIEZyaW5rIDxBbGV4YW5kZXIuRnJpbmtAVW5pLU1haW56LkRFPgoJUHJldmVudCBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgYWNjZXNzLgoKMjAwMC0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2luZSB3YXMgcGFzc2luZyB0aGUgd3JvbmcgaHduZCBhcyB0aGUgb3duZXIgd2hlbiBwcm9jZXNzaW5nIG93bmVyCgkgIGRyYXduIG1lbnViYXJzLgoJLSBXaGVuIGRvaW5nIE1FTlVfQ2FsY0l0ZW1TaXplIGZvciB0aGUgbWVudSBiYXIgd2Ugd2VyZSBub3QgcHJvcGVybHkKCSAgcGFkZGluZyB0aGUgcmV0dXJuZWQgcmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBbGxvdyB0aGUgdXNlciB0byBjYW5jZWwgbGFiZWwgZWRpdGluZyB3aXRoIGVzYyBhbmQgY29uZmlybSB3aXRoIHJldHVybi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglLZW4gVGhvbWFzZXMgPGtlbkBjb2Rld2VhdmVycy5jb20+CglSZXN0b3JlIGFjY2lkZW50YWxseSB1bmRvbmUgY2hhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFdpbmUgd2FzIG5vdCBwcm9wZXJseSByZXBvcnRpbmcgYmFjayB0aGUgZWRpdGVkIGxhYmVsIHRvIHRoZQoJICBhcHBsaWNhdGlvbiBpbiBhIHRyZWV2aWV3IHdoZW4gdGhlIGxhYmVsIGlzIGEgY2FsbGJhY2suCgktIEJlY2F1c2Ugd2luZG93cyBhcHBsaWNhdGlvbnMgYXNzdW1lIHRoZXkgZ2V0IGEgbmV3IGVkaXQgY29udHJvbAoJICBldmVyeSB0aW1lIHRoZXkgb2Z0ZW4gc3ViY2xhc3MgdGhhdCBlZGl0IGJveCB3aWxseS1uaWxseSBhbmQgZG8gbm90CgkgIGNsZWFuIHVwLiBTbyBpdCBpcyBuZWNlc3NhcnkgdG8gYWN0dWFsbHkgZ2l2ZSB0aGVtIGEgbmV3IGVkaXQgY29udHJvbAoJICBlYWNoIHRpbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIENsZWFuZWQgdXAgc29tZSBvZiB0aGUgZHJhd2luZyBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoCgkgIGF2b2lkaW5nIHRyeWluZyB0byBkcmF3IGludmFsaWQgYml0bWFwcy4KCS0gQXZvaWQgZGlyZWN0bHkgY2FsbGluZyBkcmF3aW5nIGZ1bmN0aW9ucyBpbnN0ZWFkIGludmFsaWRhdGluZyByZWN0cwoJICBhbmQgcmVseWluZyBvbiBXTV9QQUlOVC4KCS0gRm9yIHRoZSBkcm9wZG93biBldmVudCBjaGVjayB0aGUgYnV0dG9uIHN0eWxlIGFzIG9wcG9zZWQgdG8gdGhlCgkgIHRvb2xiYXIgc3R5bGUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIGludGVybmFsIGJ1ZmZlcnMgc2l6ZSBtdWx0aXBsZSBvZiA0LgoKCSogd2luZG93cy9tZGkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglWZXJpZnkgdGhlIG1lbnUgaGFuZGxlIGlzIG5vbi16ZXJvIHByaW9yIHRvIHVzZS4KCgkqIGNvbnRyb2xzL21lbnUuYzogS2VuIFRob21hc2VzIDxrZW5AY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdG8gZGlzcGxheSBwb3B1cC1tZW51IGFycm93IG9uIG93bmVyLWRyYXduIHBvcHVwIG1lbnVzLgoJRml4ZWQgcG9zaXRpb25pbmcgb2Ygc3VibWVudXMgcmVsYXRpdmUgdG8gcGFyZW50IG1lbnVzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvd2lubW0vdGltZS5jLCBncmFwaGljcy92Z2EuYywgbWlzYy9zeXN0ZW0uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmMsIHdpbmRvd3MvdGltZXIuYzoKCVNwZWNpZnkgdGhlIHNlcnZpY2UgdGhyZWFkIHRpbWVycyBpbiBtcyBpbnN0ZWFkIG9mIHVzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvbWFpbi5jOgoJUmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIFBFIGhlYWRlciBhdCB0aGUgc3RhcnQgb2YgdGhlIC5zbyBmaWxlLgoJU3RvcmUgdGhlIGV4cG9ydCB0YWJsZSBpbnNpZGUgdGhlIGRhdGEgc2VjdGlvbiBzbyB0aGF0IHNlY3Rpb25zIGNhbiBiZQoJcHJvcGVybHkgYWxpZ25lZC4KCUJ1aWxkIHRoZSByZWxheSBmdW5jdGlvbiB0YWJsZSBkaXJlY3RseSBpbiB0aGUgLnNwZWMuYyBmaWxlLgoJTW92ZWQgcmVsYXkgZGVidWdnaW5nIGZ1bmN0aW9ucyB0byByZWxheTM4Ni5jLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVByb3RlY3QgYWdhaW5zdCB1c2Ugb2YgY29tY3RsMzIgcHJpdmF0ZSBjb250cm9sIG1lbW9yeSBhZnRlciBpdCBoYXMKCWJlZW4gZnJlZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgcHJvZ3JhbXMgc3dpdGNoIHRoZWlyIHN0YXR1cyBiYXIgYmFjayBhbmQgZm9ydGggZnJvbSBzaW1wbGUgbW9kZQoJd2hpbGUgcnVubmluZy4gVGhpcyBmaXggY29ycmVjdHMgZHJhd2luZyBhbmQgdGV4dCBzZXR0aW5nIHByb2JsZW1zIHRoYXQKCXJlc3VsdCBmcm9tIHRoaXMgYmVoYXZpb3IuCgoyMDAwLTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJRml4ZWQgSGVhcEFsbG9jKEhFQVBfWkVST19NRU1PUlkpIHRvIGNsZWFyIHRoZSB3aG9sZSBhbGxvY2F0ZWQgYmxvY2suCglWYXJpb3VzIG9wdGltaXphdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBXQVZFSERSIG5vdGlmaWNhdGlvbiBoZXVyaXN0aWMuCglBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBsb29wcyBpbiBXQVZFSERScy4KCUZpeGVkIGlzc3VlcyB3aGVuIG1peGluZyBvcGVuIGFuZCBnZXRDYXBzIGNhbGxzLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gQnVnZml4OiBDb3JyZWN0ZWQgYSBTRUdWIGluIHRoZSByYXdkYXRhIGhhbmRsaW5nLiBNaXN0YWtpbmdseSB0b29rIHRoZQoJICBhZGRyZXNzIG9mIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGl0cyB2YWx1ZS4gVGhpcyBwcm9iYWJseSBzbGlwcGVkIGluCgkgIGR1cmluZyB0aGUgbWVyZ2Ugb2YgbXkgdHJlZSBpbnRvIHRoZSB3aW5ldHJlZS4KCSAgTGVzc29uIGxlYXJuZWQ6IGFsd2F5cyBkb3VibGUgY2hlY2suCgktIFZlcmlmaWVkIG1vc3QgcmVzb3VyY2VzIHNvIHRoYXQgd2luMTYgY29tcGlsZSBhbHNvIGdlbmVyYXRlcyBjb3JyZWN0CgkgIG91dHB1dCBmb3IgcmV2ZXJzZWQgZW5kaWFuLgoJLSBJbXBsZW1lbnRlZCBieXRlLW9yZGVyaW5nIGZvciByZXNvdXJjZXMuIEFsbCByZXNvdXJjZXMgY2FuIGJlIGZvcmNlZAoJICB0byBiZSBsaXR0bGUtLCBiaWctIG9yIG5hdGl2ZSBlbmRpYW4gd2l0aCBjb21tYW5kLWxpbmUgb3B0aW9uIC1CLgoJLSBSZWFkaW5nIHJlc291cmNlcyBmcm9tIC5yZXMtZmlsZXMgYXJlIG9ubHkgYWNjZXB0ZWQgaW4gbmF0aXZlIGJ5dGUtCgkgIG9yZGVyaW5nIHNvIHRoYXQgbm8gYWRkaXRpb25hbCBzZW1hbnRpYyBhbmFseXNpcyBpcyByZXF1aXJlZC4KCS0gUmVzb3VyY2UgZGlyZWN0b3J5IGlzIHN0aWxsIHdyaXR0ZW4gaW4gbmF0aXZlLW9ubHkgZm9ybWF0LCBpbmNsdWRpbmcKCSAgdGhlIHN0cmluZ3MuCgktIFdyYyBpcyBub3cgaW5zdGFsbGVkIHRocm91Z2ggdGhlIG1ha2VmaWxlIHdpdGggJ21ha2UgaW5zdGFsbCcgYW5kIGFsc28KCSAgdW5pbnN0YWxsZWQgd2l0aCAnbWFrZSB1bmluc3RhbGwnLgoJLSBXcm90ZSBhIG1hbi1wYWdlIGZvciBiZXR0ZXIgcmVmZXJlbmNlLiBUaGUgbWFucGFnZSBhbHNvIGdldHMgaW5zdGFsbGVkCgkgIGFuZCB1bmluc3RhbGxlZC4KCS0gQ2xlYW5lZCB1cCB0aGUgbmFtZXNwYWNlIGEgYml0IGJ5IG1vcmUgYWdyZXNzaXZlIHVzZSBvZiBzdGF0aWMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIHVzZSBtdWx0aWxpbmUgdGFiIGNvbnRyb2xzIHRvIHdpbmUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTnVtYmVyIG9mIHN1cmZhY2UgTG9jay9VbmxvY2tzIG11c3QgTk9UIG1hdGNoLCBzbyBkbyBOT1QgdXNlIGl0IGZvcgoJcmVmZXJlbmNlIGNvdW50aW5nLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXBkYXRlIGZvciBuZXcgV2luZSBmZWF0dXJlczsgdXNlIHR0eWRydiBpbnN0ZWFkIG9mIHgxMWRydiB3aGVuCglydW5uaW5nIHJlZ2FwaSwgYW5kIHNldCBjb3JyZWN0IHdpbmVkYmcgcGF0aCBpbiB0aGUgcmVnaXN0cnkuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGp1bXBfYWxpYXMgZm9yIG5vbi1QSUMsIGFuZCBkaXNhYmxlZCBpdCBmb3IgUElDLCBzaW5jZSBpdAoJZG9lc24ndCB3b3JrIGZvciBQSUMgcmlnaHQgbm93LiBUaGlzIGZpeGVzIGN1cnJlbnQgY3Jhc2hpbmcgc2lnYWN0aW9uCgljYWxscy4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB4IC9zIGNvbW1hbmQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNvbWUgcmVnIHRlbXAgZmlsZSBjbHV0dGVyIGNoZWNrIChtb3JlIHRoYW4gMTAwIHRlbXAgZmlsZXMgaW4KCX4vLndpbmUpLgoKMjAwMC0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0SW1hZ2VCaXRzXzg6IGFkZGVkIC0+MTUgY29udmVyc2lvbiBpbiBvcHRpbWl6ZWQgYXNzZW1ibGVyLgoKCSogZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9hbnNpX2dlbi5oLCBkbGxzL3JpY2hlZGl0L2Fuc2lfc3ltLmgsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLmgsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMl9tYWluLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy9yaWNoZWRpdC9ydGYydGV4dC5oLCBkbGxzL3JpY2hlZGl0L3N0ZGNoYXJuYW1lcy5oLCBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmMsIGRsbHMvcmljaGVkaXQvdGV4dF9tYXAuaCwgaW5jbHVkZS9yaWNoZWRpdC5oOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YQoJV3JhcHMgc29tZSBSaWNoRWRpdCBjb250cm9sIGZ1bmN0aW9uYWxpdHkgb24gYW4gRWRpdCBjb250cm9sLiBJdCB1c2VzCglhIGZyZWUgaW1wbGVtZW50YXRpb24gb2YgYW4gUlRGIHBhcnNlciB3cml0dGVuIGJ5IFBhdWwgRHVCb2lzCglodHRwOi8vd3d3LnByaW1hdGUud2lzYy5lZHUvc29mdHdhcmUvUlRGLyB3aGljaCBJIG1vZGlmaWVkIGEgYml0IHRvCgl3b3JrIHdpdGggdGhlIGNvbnRyb2wuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURvIG5vdCBzZW5kIFdNX1NJWklORyB0byAxNi1iaXQgd2luZG93cy4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUNsZWFuZWQgdXAgbG9jYWwgaGVhcCBpbml0aWFsaXNhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5kb3dzL2RyaXZlci5jOgoJTW92ZWQgTG9hZC9GcmVlTGlicmFyeTE2IGRlZmluaXRpb24gdG8gd2luYmFzZTE2LmguCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9vbGUybmxzLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgb2xlL29sZTJubHMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTZXBhcmF0ZSBPTEUyTkxTIG91dCBvZiBLRVJORUwuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIENoZWNrIGZvciBtaXNzaW5nIG1vZHVsZXMgaW4gbW9kdWxlcy5kYXQuCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSAoTWFjYWRhbWlhbi9Db3JlbCkKCVRvcC1kb3duIGltYWdlcyBoYXZlIGEgbmVnYXRpdmUgYmlIZWlnaHQsIHRoZSBzY2FubGluZXMgb2YgdGhlc2VzCglpbWFnZXMgd2VyZSBpbnZlcnRlZCBpbiBYMTFEUlZfRElCX0dldEltYWdlQml0c194eC4gVG8gcHJldmVudCB0aGlzIEkKCXNpbXBseSBjaGFuZ2VkIHRoZSBzaWduIG9mIGxpbmVzLCB0aGUgc2NhbmxpbmVzIHdlcmUgY29ycmVjdGx5IGhhbmRsZWQKCWFmdGVyd2FyZHMKCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZCB2ZXJzaW9ucyBvZiBnbGliYyBtaWdodCBub3QgaGF2ZSBTVE5fVU5ERUYgZGVmaW5lZC4KCgkqIGZpbGVzL2ZpbGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXZlcnQgdGhlIHRlc3QgZm9yIFZpcnR1YWxfSGFuZGxlRmF1bHQgaW4gUmVhZEZpbGUvV3JpdGVGaWxlLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBpdGVtSUQgbWVtYmVyIG9mIHRoZSBEUkFXSVRFTVNUUlVDVCB0byB0aGUgbnVtYmVyIG9mIHRoZQoJc3RhdHVzIHBhcnQgcGFpbnRlZC4KCgkqIHdpbmRvd3MvbWRpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWx3YXlzIGNhbGxzIFNldE1lbnUgaW4gTURJU2V0TWVudS4KCgkqIGRsbHMvdGFwaTMyL2xpbmUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTbWFsbCBkZWJ1ZyBjaGFubmVsIGNsZWFudXAuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgc2Nyb2xsaW5nIGJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBMaXN0Vmlld19TZXRIb3ZlclRpbWUoKSwgTGlzdFZpZXdfR2V0SG92ZXJUaW1lKCksIGluaXRpYWwKCXN1cHBvcnQgZm9yIHRoZSBMVlNfRVhfVFJBQ0tTRUxFQ1QgZmxhZy4gIEFkZGVkIGNvZGUgdG8gZGVsZXRlIGl0ZW1zCglpbiBMSVNUVklFV19TZXRJdGVtQ291bnQoKS4KCjIwMDAtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBXTV9TSVpJTkcgbWVzc2FnZSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvcGF0aC5jOiBSb2IgRmFybnVtIDxyb2JmQHR3aW51eC5jb20+CglSZW1vdmVkIHdhcm5pbmdzIGZyb20gZnJlZWluZyBwYXRoIGluIERlbGV0ZURDLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGJ1ZyB3aXRoIHRoZSBwcm9jZXNzaW5nIG9mIEhpdFRlc3QuCgoJKiBjb250cm9scy9lZGl0LmM6IFN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIF5DLCBeViBhbmQgXlggaW4gYW4gZWRpdCBjb250cm9sIHByb3Blcmx5LgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RyaXAgdGhlICQkJFBST1RPLkhJViBiaXQgZnJvbSB3aW4yayBTWVNURU0gYW5kIFNPRlRXQVJFIGhpdmVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgREMgbGVhay4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJZiB3ZSBkbyBub3QgZmluZCBhIHJlc291cmNlIGZvciBib3RoIChwcmltYXJ5IGxhbmd8c3ViIGxhbmcpLCB3ZSB0cnkKCWp1c3QgKHByaW1hcnkgbGFuZykgYmVmb3JlIHVzaW5nIHRoZSBkZWZhdWx0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglXb3JrZWQgYXJvdW5kIHNvbWUgdG9vbHRpcHMgaGlkZSBwcm9ibGVtcyBieSBjaGVja2luZyB0aGUgY3VycmVudCB0b29sdGlwLgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIGNvbmZpZ3VyYXRpb24gaGludCBmb3IgdGhlIENELVJPTSAidW5oaWRlIiBvcHRpb24uCgoJKiBvbGUvb2xlMm5scy5jOgoJSGVubmluZyBIb2ZmbWFubiAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglJbXBsZW1lbnRlZCBTZXRMb2NhbGVJbmZvKCkuIEl0IHJlcXVpcmVkIGEgY2hhbmdlIHRvIEdldExvY2FsZUluZm8oKQoJYXMgd2VsbCwgYmVjYXVzZSBHZXRMb2NhbGVJbmZvKCkgaGFzIHRvIGdldCBhbnkgdmFsdWVzIHNhdmVkIGJ5CglTZXRMb2NhbGVJbmZvKCkgaW4gdGhlIHJlZ2lzdHJ5LgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1ZmZlciBvdmVyZmxvd3MuCglNYWRlIHN0YWIgcGFyc2luZyBtb3JlIHJvYnVzdCAobm93IGlnbm9yZXMgQysrIHN0YWJzKS4KCURpc3BsYXkgY29ycmVjdCBiYWNrdHJhY2UgYXQgZmlyc3Qgd2hlbiBpbnZva2VkIG9uIHVuaGFuZGxlZCBleGNlcHRpb24uCglMb2FkcyBzdGFicyBmcm9tIC5zbyBmaWxlcyB3aGVuIHRob3NlIGFyZSBsb2FkZWQuCgoyMDAwLTA1LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaDogR2VuZXJhdGVkIGFnYWluLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBFX0xvYWRJbWFnZTogcmVtb3ZlZCB2ZXJzaW9uIHBhcmFtZXRlciwgc2V0IGxhc3QgZXJyb3IgY29ycmVjdGx5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oOgoJU3RvcmUgcHJvY2VzcyBmaWxlIG5hbWUgaW4gc3RhcnR1cCBpbmZvLgoJRml4ZWQgZXhlX2ZpbGUgaGFuZGxpbmcuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBGaXhlZCB0eXBvLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgcmljaGVkMzIuZGxsLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDYWxsIFhPcGVuSU0gb24gdGhlIGxhcmdlIHN0YWNrLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglCYW5nIEp1bi1Zb3VuZyA8YmFuZ2p5QGRyZWFtd2l6LmNvbT4KCUZyZWVCU0QgMy40IGNvbXBpbGUgZml4LgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvd2luZWRiZy5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2VydmVyL2NvbnNvbGUuYywgd2luMzIvY29uc29sZS5jOgoJRml4ZWQgQ09PUkQgc3RydWN0dXJlIGRlZmluaXRpb24uCglGaXhlZCBHZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemUgdG8gbm90IHJldHVybiBhIHN0cnVjdHVyZSB3aGVuCgljYWxsZWQgZnJvbSB0aGUgV2luZG93IGJpbmFyeS4KCgkqIHNlcnZlci9vYmplY3QuYzogU21hbGwgb3B0aW1pemF0aW9uLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOiBGaXhlZCBkZWZhdWx0IHRocmVhZCBzdGFjayBzaXplLgoKCSogb2JqZWN0cy90ZXh0LmM6IEZpeGVkIERyYXdUZXh0VyBsZW5ndGggaGFuZGxpbmcuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmUgdGhlIGFzc2VydGlvbiB3aGVuIHRoZXJlIGlzIG5vIHNvdXJjZSBzdXJmYWNlLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgRG9zRGF0ZVRpbWVUb1ZhcmlhbnRUaW1lIHByb3RvdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNYXAgU3RyQ2hyQSB0byBzdHJjaHIuICBGaXggU3RyQ2hyVyBhcmcgbGlzdC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgSFdORF9NRVNTQUdFLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBbGxvdyBJU2VxdWVudGlhbFN0cmVhbV9Xcml0ZSB0byB3b3JrIGlmIGFjY2VzcyBtb2RlIGlzIFNUR01fUkVBRFdSSVRFLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU1tYXAgZG9lcyBub3QgZmFpbCBvbiB6ZXJvLWxlbmd0aCBmaWxlcy4KCjIwMDAtMDUtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVXNlIGV4Y2VwdGlvbiBoYW5kbGluZyB0byBpbXBsZW1lbnQgdGhlIElzQmFkKiBmdW5jdGlvbnMuCglSZW1vdmVkIC9wcm9jL3NlbGYvbWFwcyBwYXJzaW5nIGFzIGl0IGlzIG5vdCB2ZXJ5IHVzZWZ1bCB3aXRoIC5zbyBsaWJzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTZXR1cCB0aGUgaW5pdGlhbCB0aHJlYWQgJWZzIGZyb20gYSBjb25zdHJ1Y3Rvci4KCgkqIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L3gxMS5jLCBpbmNsdWRlL3dpbm50Lmg6CglBZGRlZCBERUNMX0dMT0JBTF9DT05TVFJVQ1RPUiBtYWNyby4KCgkqIHJlc291cmNlcy91c2VyMzIucmMsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93cmMvLmN2c2lnbm9yZSwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueSwgdG9vbHMvd3JjL3ByZXByb2MuYywgdG9vbHMvd3JjL3ByZXByb2MuaCwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL2Rpc3BsYXkvZGlzcC5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIGEgbmV3IHByZXByb2Nlc3NvciB0aGF0IGlzIChuZWFybHkpIEFOU0ktQyBjb21wbGlhbnQuIFRoZQoJICBvbGQgcGFyc2VyIGhhcyBiZWVuIHN0cmlwcGVkIGZyb20gdGhlIG9sZCBwcmVwcm9jZXNzb3ItY29kZSB3aGljaAoJICBjbGVhbmVkIHVwIGJvdGggcmVzb3VyY2Utc2Nhbm5lciBhbmQgLXBhcnNlci4KCS0gU3RhbmRhcmQgZGVmaW5lcyBoYXZlIGJlZW4gaW50cm9kdWNlZCAoc2VlIFJFQURNRS53cmMpCgktIEJvdGggcHJlcHJvY2Vzc29yLSBhbmQgcmVzb3VyY2Utc2Nhbm5lciBoYXZlIGJlZW4gb3B0aW1pemVkIHNsaWdodGx5CgkgIHNvIHRoYXQgbm8gYmFja2luZyB1cCBpcyByZXF1aXJlZCAob25lIGNoYXIgbG9va2FoZWFkIGlzIGVub3VnaCkuCgktIEZpbGVuYW1lLXNjYW5uaW5nIGhhcyBiZWVuIGNsZWFuZWQgdXAsIHRob3VnaCBub3QgcGVyZmVjdCB5ZXQuCgktIFVzZXItdHlwZSByZXNvdXJjZXMgYXJlIGNvbXBhdGlibGUgbm93LgoJLSBMaW5lLWNvbnRpbnVhdGlvbiBpbiBzdHJpbmdzIGlzIGNvcnJlY3RlZCBzbyB0aGF0IGl0IGRvZXMgbm90CgkgIGludHJvZHVjZSBhIG5ld2xpbmUgaW4gdGhlIG91dHB1dC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGxvYWRlci9tb2R1bGUuYywgbWVtb3J5L2Vudmlyb24uYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbWFpbi5jOgoJUmV3cm90ZSBVbml4IHByb2Nlc3MgbGF1bmNoaW5nIHRvIGFsbG93IHBhc3Npbmcgc3RhcnR1cCBpbmZvcm1hdGlvbiB0bwoJV2luZWxpYiBhcHBzLiBJbXByb3ZlZCBoYW5kbGluZyBvZiBleGVjdmUoKSBmYWlsdXJlcy4KCgkqIGZpbGVzL2ZpbGUuYzogQWRkZWQgRU5PRVhFQyBlcnJvciBjb2RlLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogQWRkZWQgYXRmb3JrIHN1cHBvcnQuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2EyX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgY29uZmlndXJlOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIERHQTIgZHJpdmVyIHRvIERpcmVjdERyYXcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDT01ETEczMl9EbGxFbnRyeVBvaW50LENPTURMRzMyX1NldENvbW1EbGdFeHRlbmRlZEVycm9yOiBkZWxheQoJYWxsb2NhdGlvbiBvZiBUbHMgZm9yIENvbW1EbGdFeHRlbmRlZEVycm9yIHVudGlsIGl0IGlzIG5lZWRlZC4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2VndiB3aGVuIGRlYnVnZ2VyIHJlZ2lzdHJ5IGtleSBkb2Vzbid0IGV4aXN0LgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVc2UgPHN0ZGxpYi5oPiBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkIGFuZCBub24tcG9ydGFibGUgPG1hbGxvYy5oPi4KCjIwMDAtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDA0MzAuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJWDExRFJWX1NldEZvY3VzOiByZWFsbHkgZG9uJ3QgbWVzcyB3aXRoIGZvY3VzIGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIEhFQVBfeGFsbG9jLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBFbmhhbmNlZCBpbnRlcm5hbCB2YXJpYWJsZXMgZnJhbWV3b3JrIChpbmNsdWRpbmcgcmVhZC9zYXZlIHRvCgkgIHJlZ2lzdHJ5IGFuZCB0eXBpbmcpCgktIEZpbmFsaXplZCB1c2Ugb2YgV2luZG93cycgQ29uc29sZSBJL08gaW50ZXJmYWNlIChpbnN0ZWFkIG9mIFVuaXggc3RkCgkgIHN0cmVhbXMpCgktIE5vdyBoYW5kbGluZyByZWdpc3RlcnMgYXMgaW50ZXJuYWwgdmFyaWFibGVzICh0aGV5IGFyZSBubyBsb25nZXIKCSAgc2VlbiBhcyBhIHNwZWNpZmljIHR5cGUpCgoJKiB3aW4zMi9leGNlcHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnN1cmUgd2UgYWx3YXlzIHRyeSB0byBsYXVuY2ggYSBkZWJ1Z2dlci4KCgkqIHJlbGF5MzIvd293dGh1bmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBUaHJlYWQgcHNldWRvIGhhbmRsZSBhbmQgbm90IFRocmVhZCBJZCBhcyBhcmd1bWVudCBmb3IgdGhlIGNhbGwgdG8KCUdldFRocmVhZFNlbGVjdG9yRW50cnkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJWDExRFJWX1NldEZvY3VzOiByZWFsbHkgZG9uJ3QgbWVzcyB3aXRoIGZvY3VzIGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIEhFQVBfeGFsbG9jLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBFbmhhbmNlZCBpbnRlcm5hbCB2YXJpYWJsZXMgZnJhbWV3b3JrIChpbmNsdWRpbmcgcmVhZC9zYXZlIHRvCgkgIHJlZ2lzdHJ5IGFuZCB0eXBpbmcpCgktIEZpbmFsaXplZCB1c2Ugb2YgV2luZG93cycgQ29uc29sZSBJL08gaW50ZXJmYWNlIChpbnN0ZWFkIG9mIFVuaXggc3RkCgkgIHN0cmVhbXMpCgktIE5vdyBoYW5kbGluZyByZWdpc3RlcnMgYXMgaW50ZXJuYWwgdmFyaWFibGVzICh0aGV5IGFyZSBubyBsb25nZXIKCSAgc2VlbiBhcyBhIHNwZWNpZmljIHR5cGUpCgoJKiB3aW4zMi9leGNlcHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnN1cmUgd2UgYWx3YXlzIHRyeSB0byBsYXVuY2ggYSBkZWJ1Z2dlci4KCgkqIHJlbGF5MzIvd293dGh1bmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBUaHJlYWQgcHNldWRvIGhhbmRsZSBhbmQgbm90IFRocmVhZCBJZCBhcyBhcmd1bWVudCBmb3IgdGhlIGNhbGwgdG8KCUdldFRocmVhZFNlbGVjdG9yRW50cnkuCgoyMDAwLTA0LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglDbGVhciB0aGUgcmVtYWluZGVyIG9mIHRoZSBwYWdlIHdoZW4gbWFwcGluZyBhIHNlY3Rpb24gd2hvc2Ugc2l6ZSBvbgoJZGlzayBpcyBub3QgYSBmdWxsIHBhZ2UgbXVsdGlwbGUuCglUZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0IHRoZSBWaXJ0dWFsRnJlZSBjYWxsIGluIFBFX1VubG9hZExpYnJhcnkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCB0aHJlYWQtc2FmZXR5IHByb3RlY3Rpb24gdG8gWExpc3RQaXhtYXBGb3JtYXRzCgktIG1vdmVkIHBpeG1hcCAvIGltYWdlIGZvcm1hdCBtYXRjaGluZyBFUlJzIHRvIFdBUk5zCgoJKiB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBHZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemUgcHJvdG90eXBlLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGcmVlQlNEIGNvbXBpbGUgZml4LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBESUJfQ3JlYXRlRElCU2VjdGlvbiB3aXRoIGV4dHJhIHBhcmFtZXRlciBvdnJfcGl0Y2gsIGFkZGVkCglvdnJfcGl0Y2ggdG8gcENyZWF0ZURJQlNlY3Rpb24gaW4gRENfRlVOQ1MuIElmIG92cl9waXRjaCBpcyBub256ZXJvLAoJaXQgaXMgYSBwaXRjaCBvdmVycmlkZSAoc3BlY2lmaWVzIGJ5dGVzIHBlciBsaW5lKSwgYW5kIHRlbGxzIHRvIHRyZWF0Cgl0aGUgb2Zmc2V0IHBhcmFtZXRlciBhcyBhbiBhbHJlYWR5LW1hcHBlZCB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIChpZgoJdGhlIHNlY3Rpb24gcGFyYW1ldGVyIGlzIHplcm8pLiBGaXhlZCBhIERJQiBzdGF0dXMgaW5pdCBidWcgaW4KCWNyZWF0aW5nIERJQiBzZWN0aW9ucyBmcm9tIGZpbGUgbWFwcGluZ3MgKGlmIGNyZWF0ZWQgZnJvbSBtYXBwaW5nLCB0aGUKCURJQiBpcyAqbm90KiByZWFsbHkgSW5TeW5jKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvdmlydHVhbC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGQgV2luZS1pbnRlcm5hbCBhbGxvY2F0aW9uIHR5cGUgTUVNX1NZU1RFTSBmb3IgVmlydHVhbEFsbG9jIHRvCglyZWdpc3RlciBleHRlcm5hbCBtYXBwaW5ncyAobGlrZSB2aWRlbyBmcmFtZSBidWZmZXJzKS4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL3B0aHJlYWQuYywgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBsaWJjJ3MgcHRocmVhZCBjb25maWd1cmF0aW9uIGRldGVjdGlvbi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgbXNkb3MvZG9zYXNwaS5jLCB3aW5kb3dzL211bHRpbW9uLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIG1pc2MvY29tbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZQoJLSBNaW5vciBidWcgZml4ZXMuCgktIEFkZGVkIG5ldyBvcHRpb24gLS1jcm9zcy1jYWxsLXVuaWNvZGUtYXNjaWkgZm9yIGNoZWNraW5nIGlsbGVnYWwKCSAgVW5pY29kZSB0byBBU0NJSSBjYWxscy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkICctLWVuYWJsZS1vcGVuZ2wnIGZsYWcgdG8gYnlwYXNzIHRoZSB0aHJlYWQtc2FmZXR5IGNoZWNrLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBzb21lIEhFQVBfeGFsbG9jIGNhbGxzLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIHdoZW4gZmlsZSBkb2Vzbid0IGV4aXN0IGluIE1DSV9PUEVOIGhhbmRsaW5nLgoJUmVkdWNlZCB0aW1lIHNwZW50IHdpdGggY3JpdCBzZWN0IGxvY2tlZC4KCgkqIHRvb2xzL2J1aWxkLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYXJndiBoYW5kbGluZyBmb3IgY3VpZXhlIHdpbmVsaWIgcHJvZ3JhbXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgYW5kIHB0aHJlYWRfYXRmb3JrIGZpeG1lcyBsZXNzCglvYnRydXNpdmUuCgoJKiB3aW5kb3dzL3dpbmhlbHAuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVdpbkhlbHAgbXVzdCBhY2NlcHQgYSBOVUxMIHBvaW50ZXIgdG8gdGhlIGhlbHAga2V5IHN0cmluZy4KCjIwMDAtMDQtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IGNoZWNrIGZvciBtaW5pbXVtIGJ1ZmZlciBsZW5ndGguCgktIENvcnJlY3QgY2FzZXMgd2hlcmUgU2hvd1dpbmRvdyBpcyBkb25lL25vdCBkb25lLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+LCBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIFRNRV9RVUVSWSBhbmQgVE1FX0hPVkVSIGZsYWdzIGluIF9UcmFja01vdXNlRXZlbnQgYW5kCglUcmFja01vdXNlRXZlbnRQcm9jLiAgQWRkZWQgY29kZSB0byBhbGxvdyBhZGRpdGlvbi9jYW5jZWxhdGlvbiBvZgoJdHJhY2tpbmcgZmxhZ3Mgb24gZXhpc3RpbmcgZW50cmllcyByYXRoZXIgdGhhbiBjcmVhdGUgZXh0cmEgZW50cmllcy4KCUZpeGVkIHRpbWVyLiAgQWRkZWQgY2hlY2sgdG8gX1RyYWNrTW91c2VFdmVudCB0byBzdG9wIHRpbWVyIGlmIHRoZQoJdHJhY2tpbmcgbGlzdCBpcyBlbXB0eS4gIEZpeGVkIFRNRV9DQU5DRUwuICBGaXhlZCBUTUVfTEVBVkUvVE1FX0hPVkVSCgl3aGVuIGh3bmRUcmFjayBpc24ndCB0aGUgY3VycmVudCBod25kLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglET1NGU19Eb0dldEZ1bGxQYXRoTmFtZTogcmV3cml0ZSB0byByZXR1cm4gcmVzdWx0cyBsaWtlIE9TUjIuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvdmlydHVhbC5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPiwgVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIG1lbW9yeSBtYXBwaW5nIG9mIDRrIGFsaWduZWQgUEUgYmluYXJpZXMuICBUaGlzIGNhbgoJc3BlZWQgdXAgbG9hZCB0aW1lcyBzaWduaWZpY2FudGx5IGZvciBzb21lIGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvbXBsZXRlIGNsZWFudXAsIGJ1Z2ZpeGVzLgoJTmV3OiBQYXRoU3RyaXBQYXRoLCBQYXRoTWFrZVVuaXF1ZU5hbWUsIFBhdGhTdHJpcFRvUm9vdCwKCVBhdGhHZXRTaG9ydFBhdGgsIFBhdGhQYXJzZUljb25Mb2NhdGlvbiwgUGF0aFJlbW92ZUV4dGVuc2lvbiwKCVBhdGhSZW1vdmVBcmdzLCBQYXRoQXBwZW5kLCBQYXRoQnVpbGRSb290LCBQYXRoQ2Fub25pY2FsaXplLAoJUGF0aEZpbmROZXh0Q29tcG9uZW50LCBQYXRoUmVtb3ZlRmlsZVNwZWMuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBpbmNsdWRlL3dpbmUvb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWJzIGZvciBJUXVlcnlBc3NvY2lhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW92ZWQgcG9saWN5IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHNocG9saWN5LmMKCU1vdmVkIGRpYWxvZyByZWxhdGVkIGZ1bmN0aW9ucyB0byBkaWFsb2dzLmMKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUV4cGxpY2l0IGltcG9ydCB1c2VyMzIuZGxsLgoJTWFueSBjb3JyZWN0aW9ucywgZXhwb3J0ZWQgc29tZSBmdW5jdGlvbnMgYnkgbmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU2VwYXJhdGVkIDMyIGJpdCBmdW5jdGlvbnMgdG8gc2hlbGxvbGUuYy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZDogZXh0cmFjdCB0aGUgaWNvbiBieSByZXNvdXJjZSBpZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVzLgoJVXNlIEdldE1vZHVsZUhhbmRsZUEgaW5zdGVhZCBvZiBMb2FkTGlicmFyeSBmb3IgZGxscyBpbXBvcnRlZCBieQoJdGhlIHNwZWMgZmlsZS4KCgkqIHdpbmUuaW5pOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgV2luZUxvb2s9V2luOTUgdGhlIGRlZmF1bHQgc2V0dGluZy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgbGVhdmluZyBvZiBjcml0aWNhbCBzZWN0aW9uIG9uIGFsbCByZXR1cm4gY2FzZXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgaW5pdF9zZWN0LiBVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbnN0ZWFkLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcywgcmVtb3ZlZCBhc3NlcnRzLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluOgoJQ2hhbmdlZCBpbXBvcnRzIG9mIHdpbnNwb29sIHRvIHdpbnNwb29sLmRydi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUFkZGVkIGxpYmtleWJvYXJkLnNvIGNyZWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgaW5jbHVkZS9oZWFkZXIuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIFJldHVybiBtb2RpZmllZCByZWN0YW5nbGUgYWZ0ZXIgbGF5b3V0aW5nIGhlYWRlciBjb250cm9sCgktIE91dHB1dCB0ZXh0IGluIGhlYWRlciBjb250cm9sIHdoZW4gbm8gb3RoZXIgRmxhZyBzcGVjaWZpZWQKCS0gRGVsYXkgYm91bmRpbmcgcmVjdGFuZ2xlIGNhbGN1bGF0aW9uIGZvciBoZWFkZXIgY29udHJvbCBpdGVtcwoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudGVkIFRPT0xCQVJfTW91c2VMZWF2ZSB0byBoYW5kbGUgV01fTU9VU0VMRUFWRSBtZXNzYWdlcy4KCUFkZGVkIFRyYWNrTW91c2VFdmVudCBjYWxscyB0byBUT09MQkFSX01vdXNlTW92ZS4gIEhvdCBidXR0b25zIG5vdwoJbG9vay9iZWhhdmUgYWxtb3N0IGV4YWN0bHkgdGhlIHNhbWUgYXMgbmF0aXZlIHdpbmRvd3MuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFkZGVkIGRlZmF1bHQgdmFsdWVzIGZvciBTUElfR0VUTU9VU0VIT1ZFUkhFSUdIVCwgU1BJX0dFVE1PVVNFSE9WRVJXSURUSCBhbmQKCVNQSV9HRVRNT1VTRUhPVkVSVElNRSB0byBTeXN0ZW1QYXJhbWV0ZXJzSW5mbzE2KCkuCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUltcGxlbWVudCBtYXJrIGFuZCBzcGFjZSBwYXJpdHkgZ2VuZXJhdGlvbi4gQWNjZXB0IG9uZS1hbmQtIGEtaGFsZgoJc3RvcGJpdHM6IHRoZSBtb3N0IGNvbW1vbiB1YXJ0cyB3aWxsIGdlbmVyYXRlIHRoaXMgYXV0b21hdGljYWxseSB3aGVuCgl0aGVyZSBhcmUgNSBkYXRhYml0cy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJT3ZlcnJpZGUgZm9yaygpLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJR2V0IHJpZCBvZiBIRUFQX3hyZWFsbG9jLgoKMjAwMC0wNC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3IgLS13aXRob3V0LXguCgoJKiBsb2FkZXIvbWFpbi5jLCB3aW5lLmluaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb24gZm9yIHNlbGVjdGluZyBncmFwaGljcyBkcml2ZXIuCgoJKiBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTGluayB0aGUgVFRZIGRyaXZlciB3aXRoIHRoZSBzdGFuZGFyZCBsaWJzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHdpbnNwb29sKC5kcnYpIGxvYWRpbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3RzX3hmODZkZ2EuaCwgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cG0uaCwgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgaW5jbHVkZS94MTFkcnYuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2ZGdhMi5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBYX0RJU1BMQVlfTUlTU0lORy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL21zYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXByb3ZlZCBDb2RlVmlldyB0eXBlIGluZm9ybWF0aW9uIGxvYWRlci4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEb24ndCB1c2UgdGhlIHRlbXBsYXRlIG1lbWJlciB1bmxlc3MgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZyBpcyBzZXQuCgoyMDAwLTA0LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTElDRU5TRSwgV0FSUkFOVFk6CglTd2l0Y2hlZCB0byB0aGUgWDExIGxpY2Vuc2UuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgaWYxNjMyL3JlbGF5LmMsIG1pc2MvZGRlbWwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5pbmV0L3dpbmluZXRfbWFpbi5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93cHJvY3MuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZGlucHV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgQVBJIGZpbGVzLgoJLSBJbXByb3ZlZCBtaXNwbGFjZWQgZnVuY3Rpb24gY2hlY2tpbmcuCgktIEZpeGVkIG1pbm9yIGJ1Z3MuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSW5jbHVkZSBzdHJpbmcuaCB0byBtYWtlIHdpbm50Lmggc2VsZi1zdWZmaWNpZW50LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBQYXRyaWNrIFlhbmcgKENvcmVsKQoJaW5mb1B0ciBzb21ldGltZXMgY2FuIGJlIE5VTEwuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCTMyIGJpdHMgbWVzc2FnZSBwcm9jZXNzaW5nIGZvciBjb2xvciBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIHRvb2xiYXIgYml0bWFwIHNpemUgaGFuZGxpbmcuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHRlc3QgZm9yIGxpbnV4IDIuMiBqb3lzdGljayBBUEksIHdoaWNoIHJldHVybmVkIHRydWUgaW4gZXZlcnkKCWNhc2UuCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUveG1hbGxvYy5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3htYWxsb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIHRoZSBsYXN0IHhtYWxsb2MgY2FsbHMuCgoJKiBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tb2R1bGUuaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9oZWxsbzNyZXMucmMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgY29uZmlndXJlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCB3aW5lLmluaSwgLmN2c2lnbm9yZSwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUltcGxlbWVudGVkIG9uLWRlbWFuZCBsb2FkaW5nIG9mIGJ1aWx0aW4gZGxscyB1c2luZyBkbG9wZW4oKS4KCjIwMDAtMDQtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglCdWlsZCB3aW5lY2xpcHNydiBhcyBwYXJ0IG9mIHRoZSB4MTFkcnYgZGxsLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglSZW1vdmVkIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWtlIFJEV19WYWxpZGF0ZVBhcmVudCgpIG1vZGlmeSB0aGUgdXBkYXRlIHJlZ2lvbiBvZiBhbGwgcGFyZW50cywgbm90CglqdXN0IHRoZSBkaXJlY3QgcGFyZW50LgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfUHJpbnRBcmc6IHJlcGxhY2VkIElzQmFkKiBmdW5jdGlvbnMgYnkgZXhjZXB0aW9uIGhhbmRsZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgLS13aXRob3V0LWN1cnNlcyBjb21waWxlIG9wdGlvbi4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBtb3JlIHB0aHJlYWQgb3ZlcnJpZGVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGRlYnVnZ2VyIHJlZ2lzdHJ5IGtleSBsb2NhdGlvbi4KCgkqIGluY2x1ZGUvZGRlbWwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgREVDTEFSRV9IQU5ETEUgdG8gZGVjbGFyZSBoYW5kbGVzLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglERUNMQVJFX0hBTkRMRSBzaG91bGQgbm90IGJlIHVuZGVmJ2VkIGFmdGVyIHVzZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggZWRpdCBjb250cm9sJ3MgV01fR0VUVEVYVCBiZWhhdmlvdXIuCgoJKiBtaXNjL2NvbW0uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEbyBub3QgaW5pdGlhbGl6ZSBkY2IgaW4gQnVpbGRDb21tRENCW0FuZFRpbWVvdXRzXS4KCgkqIGluY2x1ZGUvY2FzZW1hcC5oLCB0b29scy91bmltYXAucGw6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkYXB0ZWQgdW5pbWFwLnBsIHNjcmlwdCBhbmQgZ2VuZXJhdGVkIGJ5IGl0IGNhc2VtYXAuaCB0byB0aGUgVW5pY29kZQoJU3RhbmRhcmQsIFZlcnNpb24gMy4wLgoKCSogd2luZG93cy9kaWFsb2cuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGVjayBpZiBkaWFsb2cgaXMgdmlzaWJsZSBiZWZvcmUgc2V0dGluZyB0aGUgZm9jdXMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZW1vdmVkIHRoZSBsb25nc3RhbmRpbmcgaGFjayBpbiByZXNwb25zZSB0byBXTV9BQ1RJVkFURSBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgR2V0TnVtYmVyRm9ybWF0IGRlY2xhcmF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJUmVkcmF3IHRvb2xiYXIgYnV0dG9uIGluc2lkZSBUT09MQkFSX0VuYWJsZUJ1dHRvbigpIG9ubHkgaWYgdGhlIHN0YXRlCglvZiB0aGUgYnV0dG9uIGNoYW5nZXMuICBTdG9wcyBmbGlja2VyaW5nIGluIHRvb2xiYXJzIGNhdXNlZCBieQoJZXhjZXNzaXZlIHJlZHJhd2luZy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTdHViIGZvciBJbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgR2V0UHJvY2Vzc0hlYXAoKSBmb3IgdGhlIFNUUklDVCBtb2RlLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsc28gY2hlY2sgZm9yIGVtcHR5IEdVSUQgaW4gRGlyZWN0RHJhd0NyZWF0ZS4KCjIwMDAtMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLnNwZWMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5zcGVjLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuc3BlYywgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLnNwZWMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLnNwZWMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5zcGVjLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJQWRkZWQgc29tZSBtaXNzaW5nIGltcG9ydCBkaXJlY3RpdmVzLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW46CglSZW1vdmVkIHdpbm1tIGZyb20gaW1wb3J0IGxpc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgaW5jbHVkZS9hbmltYXRlLmg6CglVc2UgR2V0UHJvY0FkZHJlc3MgZm9yIG1taW8qIGZ1bmN0aW9ucyB0byBhdm9pZCBpbXBvcnRpbmcgd2lubW0uZGxsLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYzoKCUZpeGVkIHJlc291cmNlIGxvYWRpbmcuCgoJKiB0b29scy9jdmR1bXAvY3ZjcnVuY2guYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5jLCB0b29scy9jdmR1bXAvY3ZpbmNsdWRlLmgsIHRvb2xzL2N2ZHVtcC9jdmxvYWQuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pbm9yIGNsZWFudXBzLCBwbHVzIGZpeGVkIGEgY291cGxlIGJ1Z3MgaW4gLkRCRyBwYXJzaW5nIGNvZGUuCglBZGRlZCBkdW1wIGZvciBNSVNDIHNlY3Rpb24uCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIERpcmVjdFBsYXkgcmVnaXN0cnkga2V5cyB0byB3aW5lZGVmYXVsdC5yZWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU1vdXNld2hlZWwgc3VwcG9ydC4KCjIwMDAtMDQtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9jdmR1bXAvY3ZjcnVuY2guYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5oLCB0b29scy9mbnQyYmRmLmMsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvdHlwZXMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglNb3ZlZCBQRSBoZWFkZXIgZGVmaW5pdGlvbnMgdG8gd2lubnQuaCB3aGVyZSB0aGV5IGJlbG9uZy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9zcHkuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgTW91c2V3aGVlbCBzdXBwb3J0LgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29udmVydCBzZXJ2aWNlIGFuZCBwcm90b2NvbCBuYW1lcyB0byBsb3dlcmNhc2UgYmVmb3JlIGNhbGxpbmcKCWdldHNlcnZieXtuYW1lfHBvcnR9IGFuZCBnZXRwcm90b2J5e25hbWV8cG9ydH0uCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHJldHVybiB2YWx1ZSBmb3IgT2Zmc2V0UmduIGlmIHggYW5kIHkgYXJlIDAuCgoJKiBncmFwaGljcy9wYXRoLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU3Ryb2tlQW5kRmlsbFBhdGguCglDYWxsIERlbGV0ZU9iamVjdCB3aGVuIGZpbmlzaGVkIHdpdGggaHJnbiBpbiBQQVRIX0ZpbGxQYXRoLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCB0eXBvLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglFTVJfU0VMRUNUT0JKRUNUIHJlY29yZHMgc3RvY2sgb2JqZWN0cyB3aXRoIHRoZWlyIGlkIGFzIHRoZSBvYmplY3QKCWhhbmRsZSBhbmQgdGhlIGhpZ2ggYml0IHNldC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVRpZHkgdXAgb2YgUGxheUVuaE1ldGFGaWxlUmVjb3JkIC0gZml4ZXMgUG9seVBvbHkqIGZ1bmN0aW9ucy4KCjIwMDAtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCVJlbW92ZWQgcGVybWlzc2lvbiBjaGVja3MgaW4gY3JlYXRlX2tleSBhbmQgZGVsZXRlX2tleS4gSXQgc2VlbXMKCVdpbmRvd3MgZG9lc24ndCBjaGVjayBhbnl0aGluZy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglXcmFwIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGFyb3VuZCBGaW5kUmVzb3VyY2UuCgoJKiBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNvcnJlY3RlZCBXaW5NYWluLgoJQWRkZWQgdGVzdCBjYXNlIGZvciBSZWdDcmVhdGVLZXlFeCBzaG93aW5nIHdpbjk1IGJlaGF2aW91ci4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmM6CglJbXBsZW1lbnRlZCAnd2FsayBwcm9jZXNzJyBhbmQgJ3dhbGsgdGhyZWFkcycgY29tbWFuZHMgdXNpbmcgdG9vbGhlbHAKCXNuYXBzaG90cy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGxoZWxwMzIuaCwgaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCB0aHJlYWQgYW5kIChwYXJ0aWFsKSBtb2R1bGUgc25hcHNob3RzLCBiYXNlZCBvbiB0aGUgd29yawoJb2YgQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+LgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2hlbGwuaCwgbG9hZGVyL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCVNhdmUgdGhlIHJlZ2lzdHJ5IG9uIHNlcnZlciBleGl0IHdpdGhvdXQgY2xpZW50IGludGVydmVudGlvbi4KCVJlbW92ZWQgImFsdCIgcmVnaXN0cnkgZmlsZXMgc2luY2Ugd2Ugbm93IGhhdmUgc3ltbGlua3MgYW5kCglXSU5FUFJFRklYIHRvIHJlcGxhY2UgdGhlbS4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU3VwcG9ydCBzd2l0Y2hpbmcgdGhlIGtleWJvYXJkIGxheW91dCB3aXRoIFdJTkUgcnVubmluZy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglmZ2V0czogRG9uJ3Qgc3dhbGxvdyBcbiwgdHJlYXQgRU9GCglmZW9mOiBDcnVkZSBpbXBsZW1lbnRhdGlvbgoJc2lnbmFsOiBSZXR1cm4gZXJyb3IKCgkqIHdpbmVkZWZhdWx0LnJlZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBtaXNzaW5nIGJhY2tzbGFzaCBpbiB0aGUgZGVidWdnZXIgZGVmaW5pdGlvbi4KCgkqIHdpbjMyL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNldExvY2FsVGltZSgpIGFuZCBTZXRTeXN0ZW1UaW1lKCkgYnVnZml4ZXMuIEFkZGVkIGEgbWF4aW11bSBjbG9jawoJYWRqdXN0bWVudCBvZiAyIG1pbnV0ZXMganVzdCBpbiBjYXNlLi4uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEU09VTkRfTWl4ZXJOb3JtOiBkbyBub3QgY29tcGFyZSB1bnJlbGF0ZWQgcG9pbnRlcnMuCgoyMDAwLTA0LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOgoJUmV3cm90ZSBjb21tYW5kLWxpbmUgcGFyc2luZyBvZiBDcmVhdGVQcm9jZXNzQSB0byBiZSBtb3JlIGNvbXBhdGlibGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvYnVpbGQuYywgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5jLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS90aHJlYWQuaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9vcHRpb25zLmMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCUltcHJvdmVkIFdpbmVsaWIgYXBwcyBpbml0aWFsaXNhdGlvbiBjb2RlLiBObyBsb25nZXIgbmVlZCB0byBsaW5rCgl3aW5lc3R1Yi5vIHdpdGggV2luZWxpYiBhcHBzLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCByZWxheTMyL3V0dGh1bmsuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy94MTEuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gQWRkIG5ldyBvcHRpb25zIC0tYWxsIGFuZCAtLW5vbmUgdGhhdCBlbmFibGUvZGlzYWJsZXMgYWxsIGNoZWNrCgkgIHJlc3BlY3RpdmVseS4KCS0gRml4ZWQgYW5kIGltcHJvdmVkIHN0dWIgc3RhdGlzdGljcy4KCS0gRml4ZWQgYnVnIHRoYXQgcHJldmVudGVkIGNoZWNraW5nIG9mIHRoZSBmaXJzdCBmdW5jdGlvbiBpbiB0aGUgLnNwZWMgZmlsZXMuCgktIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgYSBtb3JlIGFkdmFuY2VkIG1pc3BsYWNlZCBmdW5jdGlvbiBjaGVja2luZy4KCS0gTWlub3IgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgQ0NTX05PTU9WRVkgZm9yIHRvb2wgYmFycy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVN5bWxpbmsgcm9vdCdzIHJlZ2lzdHJ5IHRvIGdsb2JhbCByZWdpc3RyeS4gTWlub3IgY2xlYW51cHMuCgoJKiBvbGUvb2xlMm5scy5jOiBPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJQWRkZWQgZnVydGhlciBpbXBsZW1lbnRhdGlvbiBvZiBXSU5BUEkgRW51bURhdGVGb3JtYXRzKCkgdG8gc3VwcG9ydAoJdGhyZWUgbW9yZSBsb2NhbGVzOiBHZXJtYW4oc3RhbmRhcmQpLCBGcmVuY2goc3RhbmRhcmQpIGFuZCBGcmVuY2gKCShjYW5hZGlhbikuIEFsbCBkYXRlIGZvcm1hdHMgZm9sbG93IGNvbnZlbnRpb25zIGZyb20gV2luZG93cyBOVCA0LjAKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJQWRkZWQgcHJvcGVyIGhhbmRsaW5nIFRWSVNfT1ZFUkxBWU1BU0sgZmxhZyBhbmQgYWxsb3dzIHRvIGRpc3BsYXkKCW92ZXJsYXkgaW1hZ2VzLiBGaXhlZCBvZmYgYnkgb25lIGVycm9yIHdpdGggbGlzdGl0ZW0gaW4KCVRSRUVWSUVXX0luc2VydEl0ZW1BICh1TnVtSXRlbXMgaXMgMCBiYXNlZCwgY0NoaWxkcmVuIGlzIGEgY291bnQpLgoKMjAwMC0wNC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUE9TSVggdGhyZWFkcyBlbXVsYXRpb24sIHRyaWNrcyBnbGliYyBpbnRvIGJlaW5nIHRocmVhZHNhZmUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9yZXF1ZXN0LmM6CglNYWRlIHNlcnZlciBsYXVuY2hpbmcgc29tZXdoYXQgY2xlYW5lciBhbmQgZmFzdGVyLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EuYywgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglEZXR5cG9lZCBYMTFEUlZfRVZFTlRfU2V0SW5wdXRNZXRob2QuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglXaGVuIGRlYWxpbmcgd2l0aCBYS0IgZXh0ZW5zaW9ucywgZm9yY2UgdGhlIEFsdEdyIGtleSBtYXNrIHRvIHVzZSB0aGUKCWdyb3VwIGluZGV4IGluc3RlYWQgb2YgdGhlIG1vZGlmaWVyLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURlZmluZSBfX2Zhc3RjYWxsLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgYSBmZXcgdG9vbGJhciBkZWZpbmVzLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQSBmZXcgY29ycmVjdGlvbnMgdG8gYm91bmRpbmcgYm94ZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURvbid0IGNsb3NlIGdyb3VwcyBvZiBwb2x5bGluZXMuCgoJKiBtaXNjL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZGVyZWZlcmVuY2UgYSBwdHIgd2UganVzdCBjaGVja2VkIGJlaW5nIE5VTEwuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ2hhbmdlZCB0aGUgcGxhY2VtZW50IG9mIFdJTkVfVU5VU0VEIHRvIG1ha2UgZ2NjIDIuNy4yIGhhcHB5LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZvbGxvdyBzeW1saW5rcyB3aGVuIHNhdmluZyByZWdpc3RyeS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluOgoJQWRkZWQgbWlzc2luZyB3aW5lc3R1YiBkZXBlbmRlbmN5LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUxvYWQgZG9uZSBldmVudCBub3cgY3JlYXRlZCBieSB0aGUgc2VydmVyLgoKMjAwMC0wNC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyLy5jdnNpZ25vcmUsIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBNYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB0aGUgd2luZWRiZyBhbiBleHRlcm5hbCBhbmQgV2luZUxpYiBwcm9ncmFtLgoJQ2VudHJhbGl6ZWQgb3V0cHV0IGhhbmRsaW5nIChwcmVwYXJhdGlvbiBmb3IgY29uc29sZSB1c2FnZSkuCglGaXhlZCBhIGZldyBkZWJ1ZyBpbmZvcm1hdGlvbiByZWFkaW5nIG9wdGlvbnMgKHN0YWJzIGFuZCBzeW0pLgoJU3RhcnRlZCBhIGZyYW1ld29yayB0byBob2xkIGRlYnVnZ2VyJ3MgaW50ZXJuYWwgdmFyaWFibGVzLgoKCSogbWlzY2VtdS9tYWluLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgLWRlYnVnIHdpbmUncyBvcHRpb24gKHdpbmUgbm93IHJlcXVpcmVzIGFuIGV4dGVybmFsIGRlYnVnZ2VyKS4KCgkqIHdpbjMyL2V4Y2VwdC5jLCB3aW5lZGVmYXVsdC5yZWc6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGxhdW5jaGluZyBvZiBhIGRlYnVnZ2VyIHdoZW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiBvY2N1cnMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIC54Y25sbmsgc2VjdGlvbiB0byBidWlsdGluIEtFUk5FTDMyIFBFIGhlYWRlci4KCgkqIGxvYWRlci9tb2R1bGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglMZXQgQ3JlYXRlUHJvY2VzcyBsYXVuY2ggdW5peCBleGVjdXRhYmxlIHdpdGhvdXQgYSAuZXhlIGV4dGVuc2lvbi4KCUZpeGVkIGFyZ3VtZW50cyBwYXNzZWQgd2hlbiBjcmVhdGluZyBhIHVuaXggcHJvY2Vzcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZpeGVkIHNpZ25hbCBzdGFjayBoYW5kbGluZyBvbiBMaW51eCB3aGVuIHNpZ2FsdHN0YWNrIGlzIGF2YWlsYWJsZS4KCUFkZGVkIGEgZGlyZWN0IHNpZ2FsdHN0YWNrIHN5c2NhbGwgdG8gd29yay1hcm91bmQgdGhlIGdsaWJjIGJ1Zy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCUltcGxlbWVudGVkIGd1YXJkIHBhZ2VzIGFuZCBzdGFjayBvdmVyZmxvdyBleGNlcHRpb25zLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQ2xlYW51cCB0aHJlYWQgc3RhY2sgYWxsb2NhdGlvbi4gVXNlIGEgc2luZ2xlIFZpcnR1YWxBbGxvYyBmb3IgVEVCIGFuZAoJdGhlIHZhcmlvdXMgc3RhY2tzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFrZSBzdXJlIEhLTE1cU29mdHdhcmVcV2luZVxXaW5lIGlzIGEgbm9uLXZvbGF0aWxlIGtleS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIEFsdEdyIGtleSBoYW5kbGluZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNYWtlIERpcmVjdERyYXcgY29tcGlsZSB3aXRoIERHQTIgcHJlc2VudC4KCgkqIGZpbGVzL2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRklMRV9DcmVhdGVGaWxlKCkncyByZWFkL3dyaXRlLWNoZWNrIHdhcyBicm9rZW4gZHVlIHRvIGNoZWNraW5nIG9mCglFUlJPUl94eHggaW5zdGVhZCBvZiBTVEFUVVNfeHh4LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYW5kIGNsZWFucyB1cCBzb21lIG9mIHRoZSBHZXRFbmhNZXRhRmlsZSogZnVuY3Rpb25zLgoJRml4ZXMgc2NhbGluZyBvZiBFTUZzIGluIHBsYXliYWNrLiAgV2lsbCBwcm9iYWJseSBiZSByaWdodAoJd2hlbiBXb3JsZCBUcmFuc2Zvcm1zIHdvcmsgcHJvcGVybHkuLi4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUdsb2JhbFJlQWxsb2MgcmV0dXJucyAwIG9uIGZhaWx1cmUuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU3R1YiBmb3IgTnRBbGxvY2F0ZVV1aWRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2xlYXIgVG9wUm9vdEl0ZW0gd2hlbiB3aG9sZSB0cmVlIGlzIGRlbGV0ZWQuCglGaXggb2ZmIGJ5IG9uZSBsc3RyY3B5bi4KCUNsZWFuIHVwIGFuZCBmaXggR2V0TmV4dEl0ZW0uCgoyMDAwLTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlOiBJZ25vcmUgYWxsIG91dHB1dCBmaWxlcy4KCgkqIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3dpbmluZXQuaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJTWVyZ2VkIHVybG1vbi5kbGwgYW5kIHdpbmluZXQuZGxsIGZyb20gdGhlIENvcmVsIHRyZWUgKGltcGxlbWVudGF0aW9uCglieSBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+KQoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9xdWV1ZS5jOgoJTWFkZSBHZXRQcm9jZXNzSGVhcCgpLCBHZXRDdXJyZW50UHJvY2Vzc0lkKCksIEdldEN1cnJlbnRUaHJlYWQoKSBhbmQKCUdldEN1cnJlbnRQcm9jZXNzKCkgaW5saW5lLgoKCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lcmdlZCBpbiBDb3JlbCdzIEFVVEhPUnMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9ubHkgY29weSBkc3R3aWR0aCozIGJ5dGVzIGluIHRoZSAyNGJpdCBjYXNlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnJlZSBwcml2YXRlIHN0cnVjdHVyZSBpbiBYbGliX0REU19SZWxlYXNlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCU1TR19Qcm9jZXNzS2JkTXNnIGNhbiBiZSBjYWxsZWQgZnJvbSBwZWVrLCBzbyBvbmx5IHByb2Nlc3Mgd2hlbiByZW1vdmUgaXMgc2V0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglUcmVlVmlldyAtIG1pbm9yIGJ1Z2ZpeCBhbmQgb3B0aW1pemF0aW9uOgoJICAgLSBHZXREQyBjYWxsIG1vdmVkIGRvd24gdG8gYXZvaWQgcG9zc2libGUgcmVzb3VyY2UgbGVhay4KCSAgIC0gSW52YXJpYW50IGNvZGUgaXMgbW92ZWQgb3V0IG9mIGxvb3AuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJX0lMR2V0RmlsZURhdGUgc2hvdWxkIGNvbnZlcnQgdGhlIGRhdGUgdG8gbG9jYWwgdGltZSBiZWZvcmUgZ2VuZXJhdGluZwoJdGhlIHN0cmluZyAoX0lMR2V0RmlsZURhdGVUaW1lIGRvZXMgbm90KS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBvdGhlciBidWdzIHdpdGhpbiBNTUlPIGltcGxlbWVudGF0aW9uLiBOb3csIGl0J3MgcG9zc2libGUgdG8KCWNvcHkvY3V0IGZyb20gUGhvdG9QYWludCBhbmQgcGFzdGUgdG8gQ29yZWxEcmF3LgoKMjAwMC0wNC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVVzZSBkM2RleGVjdXRlYnVmZmVyX2NyZWF0ZSBvbmx5IHdoZW4gY29tcGlsaW5nIHdpdGggTUVTQS4KCjIwMDAtMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVwbGFjZWQgeG1hbGxvYyBjYWxscyB3aXRoIG1hbGxvYy9IZWFwQWxsb2MgY2FsbHMuCgoJKiBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUveHRlcm0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWNzLgoKCSogbWVtb3J5L2hlYXAuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgSGVhcFdhbGsoKS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBsZWZ0IG92ZXIgSGVhcFZhbGlkYXRlIGFzc2VydGlvbnMgcmVtb3ZlZC4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhciBzdGF0dXMgZm9yIHNlbmRpbmcgZXhjZXB0aW9uIGV2ZW50LgoKCSogdG9vbHMvZ2VucGF0Y2g6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byBwdXQgbmV3LWxpbmVzIGluIGNoYW5nZWxvZyBlbnRyeS4KCUFkZGVkIC1wIHRvIGxvY2F0ZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCUdldEl0ZW0gd2FzIHJldHVybmluZyB0aGUgaXRlbSBpbnN0ZWFkIG9mIHN1Yml0ZW0gaW5mby4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJUmVnaXN0cnkga2V5IHVzZWQgaW4gTG9hZEJvYXJkKCkgd2FzIG5vdCB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaW4KCVNhdmVCb2FyZCgpLiBBbHNvIGZpeGVkIGEgdHlwbyBpbiB0aGUgcG9zaXRpb24gc2F2aW5nIGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUNyZWF0ZSBkaXJlY3RvcmllcyB0aGF0IGRvbid0IGNvbnRhaW4gYSBNYWtlZmlsZS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCBvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluOgoJSW1wcm92ZWQgc3VwcG9ydCBmb3IgTWFrZWZpbGVzIHRoYXQgbmVlZCB0byByZWN1cnNlIGluIHN1YmRpcmVjdG9yaWVzLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlcy5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVzdHJ1Y3R1cmVkIERpcmVjdERyYXcuIFNwbGl0IGludG8gWDExIGFuZCBER0EgZHJpdmVyLCBhbmQgbXVsdGlwbGUKCWZpbGVzL2RpcnMgZm9yIGVhc2llciBtYWludGVuYW5jZS4gQ2xlYW5lZCB1cCBzdHJ1Y3RzIGFuZCBpbmNsdWRlCglmaWxlcy4gUmVpbmRlbnRlZCB0aGUgY29kZS4gU3RhcnRlZCB0aGUgc2FtZSBmb3IgRGlyZWN0M0QuICBEcml2ZXIKCWluY2x1c2lvbiBub3cgZG9uZSBieSB1c2luZyBjb25maWd1cmUvTWFrZWZpbGUvRUxGIGNvbnN0cnVjdG9yIHRyaWNrcy4KCjIwMDAtMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L2hlYXAuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3RpbWVyLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglSZW1vdmVkIGEgbnVtYmVyIG9mIGdsb2JhbCBoYW5kbGUgYWxsb2NhdGlvbnMgYW5kIGNyaXRpY2FsIHNlY3Rpb24KCWluaXRpYWxpemF0aW9ucy4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglUZW1wb3JhcnkgaGFjayB0byBzaGFyZSBoYW5kbGVzIGJldHdlZW4gcHJvY2Vzc2VzIHNoYXJpbmcgdGhlIHNhbWUKCWFkZHJlc3Mgc3BhY2UuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglBZGRlZCBsYXp5IGluaXRpYWxpemF0aW9uIG9mIGNyaXRpY2FsIHNlY3Rpb25zLCBiYXNlZCBvbiBhIHBhdGNoIGJ5CglBbmRyZXcgTGV3eWNreS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFl1eGkgWmhhbmcgPHl1eGlAY29yZWwuY2E+CglTdGVwaGVuIE1lcmV1CglUYWJDdHJsIGxlZnRtb3N0VmlzaWJsZSBpcyBub3QgdXBkYXRlZCBwcm9wZXJseS4gSXQgY2F1c2VkIHRoZSBRUAoJYXBwbGljYXRpb24gYmFyIG9uIHRoZSBib3R0b20gZmFpbCB0byBicmluZyBiYWNrIHRoZSBpdGVtcyB3aGVuIHRoZXJlCglpcyBubyBuZWVkIHRvIHNjcm9sbGluZy4gQWxzbyBmaXhlZCBhIGJ1ZyB0aGF0IHdoZW4gYW4gaXRlbSBpcyBpbnNlcnRlZCwKCXNldEl0ZW1Cb3VuZHMgc2hvdWxkIGJlIGNhbGxlZCBmaXJzdCwgdGhlbiBpdCdzIHRpbWUgdG8gaW52YWxpZGF0ZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFBlZWtOYW1lZFBpcGUgc3R1Yi4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIHBpeG1hcCBsZWFrIHdpdGggdGhlIDF4MSBiaXRtYXAgaW4gbWVtb3J5IERDcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCXdpbmVpbnN0YWxsIG5vdyBwcm9wZXJseSBjb25maWd1cmVzIG5vLXdpbmRvd3MgaW5zdGFsbHMsIGFuZCBzaG91bGQgbm93CgliZSBlYXNpZXIgdG8gYWRhcHQgZm9yIGJpbmFyeSBwYWNrYWdlcyB0b28uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmYXVsdCBzeXN0ZW0uaW5pIChmcm9tIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWEpLgoKMjAwMC0wNC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCURvIG5vdCBzZW5kIGEgZGVidWcgZXZlbnQgZm9yIGEgdGhyZWFkIHVudGlsIHRoZSBwcmV2aW91cyBldmVudCBmb3IKCXRoZSBzYW1lIHRocmVhZCBoYXMgYmVlbiBjb250aW51ZWQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJTW92ZWQgU2F2ZU9ubHlVcGRhdGVkS2V5cyB0byB3aW5lLmluaS4KCVVzZSBnZXRfY29uZmlnX2RpcigpIGluc3RlYWQgb2YgaGFyZGNvZGluZyB+Ly53aW5lCglTaW1wbGlmaWVkIGxvYWRpbmcgYW5kIHNhdmluZyByb3V0aW5lcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFdJTkVQUkVGSVggZW52aXJvbm1lbnQgdmFyaWFibGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2xzdHIuYywgbWlzYy9uZXR3b3JrLmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZm9udC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGxvYWRlci9tb2R1bGUuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglJbXBsZW1lbnRlZCBBUEkgRW51bVRpbWVGb3JtYXRzQSgpLiBJdCBzdXBwb3J0cyBub3cgYWxsIGRpZmZlcmVudAoJRW5nbGlzaCBsb2NhbGVzLCBhcyB3ZWxsIGFzIEdlcm1hbihzdGFuZGFyZCksIEZyZW5jaChzdGFuZGFyZCkgYW5kCglGcmVuY2goQ2FuYWRpYW4pLiAgQWxsIHRpbWUgZm9ybWF0cyBmb2xsb3cgY29udmVudGlvbnMgaW4gV2luZG93cyBOVCA0LjAKCglIYWl0aGVtIEhtaWRhIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCUltcGxlbWVudGVkIEdldEN1cnJlbmN5Rm9ybWF0QSgpIEFQSToKCS0gR2V0Q3VycmVuY3lGb3JtYXRBKCkgY2FsbHMgR2V0TnVtYmVyRm9ybWF0QSgpIHRvIGZvcm1hdCB0aGUgbnVtYmVyCgkgIChhcyBhIHBvc2l0aXZlIG9uZSksIHRoZW4gZm9ybWF0cyB0aGUgbnVtYmVyIGRlcGVuZGluZyBvbgoJICBOZWdhdGl2ZU9yZGVyL1Bvc2l0aXZlT3JkZXIgZmllbGRzLgoJLSBHZXROdW1iZXJGb3JtYXRBKCkgaGFzIGJlZW4gc2xpZ2h0bHkgbW9kaWZpZWQuCgoJKiBvYmplY3RzL3RleHQuYzoKCUp1bmljaGkgS3VjaGluaXNoaSA8amt1Y2hpQG1haG9yb2JhLm5lLmpwPgoJQWRkZWQgY29udmVyc2lvbiBmcm9tIERCQ1MgbHBEeCB0byBXQ0hBUiBscER4LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gSW1wbGVtZW50ZWQgc3R1YiBzdGF0aXN0aWNzLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQuIChSZXF1ZXN0ZWQgYnkgRnJhbmNvaXMKCUdvdWdldCkuCgktIEltcGxlbWVudGVkIG1pc3NpbmcgcHJvdG90eXBlIGNoZWNraW5nLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQgKFJlcXVlc3RlZAoJYnkgRGltaXRyeSBUaW1vc2hrb3YpLgoJLSBJbXBsZW1lbnRlZCAuc3BlYyBmaWxlIG5hbWUgc2FuaXR5IGNoZWNraW5nLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQuCgktIEltcGxlbWVudGVkIGRvY3VtZW50YXRpb24gd2lkdGggY2hlY2tpbmcuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdC4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jYT4KCUZpeCBTdHJpbmdGcm9tR1VJMiByZXR1cm4gdmFsdWUgYXMgcGVyIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1ha2UgYXVkaW9kZXZpY2UgYmxvY2tpbmcgZGlyZWN0bHkgYWZ0ZXIgdGhlIG5vbi1ibG9ja2luZyBvcGVuLCBzaW5jZQoJd2UgdXNlIHRoZSB3cml0ZSgyKSBhbHNvIGZvciBzeW5jaHJvbml6YXRpb24uCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBlcnJvciBoYW5kbGluZyBmb3Igd3NfZ2V0cHJvdG9ieW5hbWUvbnVtYmVyLgoJTWFkZSB0aGUgQXN5bmMgZXJyb3IgcmV0dXJucyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0U2hvcnRQYXRoTmFtZTogYWx3YXlzIGVyYXNlIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiB0aGUgbmV3CglzdHJpbmcsIGFuZCByZXR1cm4gb25seSBzaW5nbGUgYmFja3NsYXNoZXMuCgoyMDAwLTA0LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglBZGRlZCBhIHBlci1kcml2ZSBGYWlsUmVhZE9ubHkgZmxhZywgYW5kIHJlbW92ZWQgdGhlIGdsb2JhbAoJLS1mYWlscmVhZG9ubHkgb3B0aW9uLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZmlsZXMvZmlsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglGaXhlZCBmaWxlIGRlc2NyaXB0b3IgbGVha3MuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglDYWxsIFBST0ZJTEVfR2V0V2luZUluaUJvb2wgYmVmb3JlIHN0YXJ0aW5nIHRvIGZpbGwgdGhlIHJlcXVlc3QKCWJ1ZmZlci4gTWFkZSBuZXcgcmVnaXN0cnkgZm9ybWF0IHRoZSBkZWZhdWx0LgoKCSogc2VydmVyL3B0cmFjZS5jOgoJSW5jcmVtZW50IHN1c3BlbmQgY291bnQgYmVmb3JlIGF0dGVtcHRpbmcgYXR0YWNoIGluIHN1c3BlbmRfZm9yX3B0cmFjZS4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9ldmVudC5jOgoJTWFkZSByZXF1ZXN0IHRyYWNpbmcgbW9yZSByb2J1c3QgYWdhaW5zdCBib2d1cyBsZW5ndGhzLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQWRhcHRlZCB0aGUgbWFudWFsIHBhZ2VzIHRvIHRoZSBuZXcgbG9uZyBvcHRpb25zLCB1cGRhdGVkIHRoZQoJLWRlYnVnbXNnIGNoYW5uZWxzIGFuZCBhZGRlZCBhIHNtYWxsIGhhY2sgdG8gZ2V0IHRoZSBAc3lzY29uZmRpckAKCXN0dWZmIGluIHRoZSBtYW51YWwgcGFnZXMgcmlnaHQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdHdvIHNtYWxsIGJ1Z3Mgd2l0aGluIE1NSU9fSW5zdGFsbElPUHJvYyBhbmQgTU1JT19EZXN0cm95LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmg6CglKb3NodWEgVGhpZWxlbiA8Zm96ZXlAbmV0emVyby5jb20+CglBZGRlZCBEZXN0cm95Qm9hcmQgZnVuY3Rpb24gdG8gZGVsZXRlIGJpdG1hcCBoYW5kbGVzLgoJTW92ZWQgU2VsZWN0T2JqZWN0IG91dHNpZGUgb2YgRHJhd01pbmUuCglTZWxlY3RlZCBvbGQgb2JqZWN0J3MgYmFjayBpbnRvIGhNZW1EQy4KCgkqIG1zZG9zL2ludDIxLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50ZWQgRkFUMzIgZnVuY3Rpb24gNzMwMiAoR2V0IEV4dGVuZGVkIERQQikuCgoJKiB3aW4zMi9kZXZpY2UuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRlZCBEZXZpY2VJb0NvbnRyb2wgVldJTjMyX0RJT0NfRE9TX0RSSVZFSU5GTywgbmVlZGVkIGJ5CglJbnRlcm5ldCBFeHBsb3Jlci4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNhPgoJVGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IGZvciByZWdhcGkgdG8gY2FsbCB0aGUgRGxsUmVnaXN0ZXJTZXJ2ZXIgb3IKCURsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGEgbGlzdCBvZiBETExzLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNhPgoJT2xlUmVnR2V0VXNlclR5cGUgZGlkIHJldHVybiBhbiB1bnRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nIGluc3RlYWQgb2YgYW4KCU9MRVNUUiAod2lkZSBjaGFyYWN0ZXJzKS4KCgkqIG1pc2MvbWFpbi5jLCBvbGUvbmxzL2VuYS5ubHMsIG9sZS9ubHMvZW5iLm5scywgb2xlL25scy9lbmMubmxzLCBvbGUvbmxzL2VuZy5ubHMsIG9sZS9ubHMvZW5pLm5scywgb2xlL25scy9lbmoubmxzLCBvbGUvbmxzL2VubC5ubHMsIG9sZS9ubHMvZW5zLm5scywgb2xlL25scy9lbnQubmxzLCBvbGUvbmxzL2VudS5ubHMsIG9sZS9ubHMvZW56Lm5scywgb2xlL25scy9pcmwubmxzLCBvbGUvb2xlMm5scy5jOgoJTWljaGFlbCBBYmQtRWwtTWFsZWsgKENvcmVsKQoJQ2hhbmdlZCBpcmwubmxzIHRvIGVuaS5ubHMuIFJldmlld2VkIGFuZCBmaXhlZCBhIGxvdCBvZiB0aGUgTkxTIGZpbGVzCgl0byBiZSBtb3JlIGNvbXBhdGlibGUgdG8gV2luZG93cy4KCUFkZGVkIGVuX0dCICh1c2VkIGJ5IENvcmVsIExpbnV4IDEuMCwxLjEpIGFzIGFsaWFzIGZvciBlbl9VSy4KCglKZWZmIFRyYW50ZXIgPGplZmZ0QGNvcmVsLmNhPgoJVGhlIG1lYXN1cmVtZW50IHVuaXQgZm9yIENhbmFkaWFuIEVuZ2xpc2ggc2hvdWxkIGJlIG1ldHJpYy4KCUxBTkdfU1VCX0VOVFJZIGRpZCBhbHdheXMgcmV0dXJuIHRoZSBmaXJzdCBsYW5ndWFnZSBkdWUgdG8gbWlzc2luZyB7fS4KCjIwMDAtMDMtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9ycyBpbiByZWdhcmRzIHRvIHNoYXJlZCBsaWJyYXJpZXMgYW5kCglzb21lIG1vcmUgd2luZG93cyBzcGVjaWZpYyBkaXJzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUkVBRE1FLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEZpeCBwYWludGluZyBidWcgd2l0aCBtaWRkbGUgYnV0dG9uIGRvd24gd2hlbiBkcmFnZ2luZyBtb3VzZQoJLSBTcGVlZCB1cCBkcmF3aW5nIGFuZCBoZW5jZSBvdmVyYWxsIHNwZWVkCgktIEZpeCBjb21waWxlciB3YXJuaW5ncwoJLSBBZGRlZCBzb21lIG9wdGlvbmFsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgoJLSBBZGRlZCBhIG5ldyBrbm93biBidWcgdG8gdGhlIGxpc3QKCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgQ1RTLCBEU1IgYW5kIFJpbmdJbmRpY2F0b3Igc3RhdGVzIHRvIFdpbmRvdydzIHNlbWktZG9jdW1lbnRlZAoJbW9kZW0gbGluZSBzdGF0dXMgcmVnaXN0ZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEZWxldGUgb2JqZWN0cyBhZnRlciB1c2UgaW4gRW51bUVuaE1ldGFGaWxlLgoJTWFrZSBQbGF5RW5oTWV0YUZpbGUgY2FsbCBFbnVtRW5oTWV0YUZpbGUuCglNb3ZlIEVudW1FbmhNZXRhRmlsZSBwcm90b3R5cGUgdG8gd2luZ2RpLmguCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglvcGVuKCkgdGhlIE9TUyBzb3VuZGRldmljZSBub24tYmxvY2tpbmcgaW4gY2FzZSBhbm90aGVyIHByb2Nlc3MgaGFzIGl0CglvcGVuIGFscmVhZHkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ29tbWVudGVkIG91dCBleGl0KCkgY2FsbCBvbiBFeGl0UHJvY2VzcyBmb3Igbm93LgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCVNldCB0aHJlYWQgc3RhcnQgYWRkcmVzcyB0byAwIG9uIGV2ZW50cyBnZW5lcmF0ZWQgYnkKCURlYnVnQWN0aXZlUHJvY2Vzcy4KCVJldHVybiBhIGNvcnJlY3QgYWRkcmVzcyBpbiB0aGUgc2ltdWxhdGVkIGV4Y2VwdGlvbiBldmVudC4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvd25kLmM6CglGaXhlZCB0dHlkcnYgY29tcGlsZSB3aGVuIHVzaW5nIGN1cnNlcy4gQ2xlYW5lZCB1cCBhIGZldyAjaWZkZWZzLgoKMjAwMC0wMy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZ3JhcGhpY3MvcGF0aC5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLnlhY2MueToKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJLSBGaXggc29tZSBjb21waWxlciB3YXJuaW5ncy4KCS0gUmVtb3ZlIHN1cGVyZmx1b3VzICNpbmNsdWRlIHN0YXRlbWVudC4KCgkqIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBtaXNjL25ldHdvcmsuYzoKCVJvbiBHYWdlIDxyb25nYWdlQGF0dC5uZXQ+CglGaXhlZCBidWcgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogKi8qLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL2ZpeGVkIHNvbWUgZG9jdW1lbnRhdGlvbiByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUZpeGVkIG1lbW9yeSBhbGxvY2F0aW9ucy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQvZml4ZWQgc29tZSBkb2N1bWVudGF0aW9uIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjawoJLSBSZW5hbWVkIE1hcFZpcnR1YWxLZXlFeDMyQSB0byBNYXBWaXJ0dWFsS2V5RXhBCgktIFJlbmFtZWQgQ1JURExMX19kbGxvbmV4aXQgdG8gQ1JURExMX19fZGxsaW5pdAoKCSogZGxscy9vbGUzMi9pZnMuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgbWlzYy9wcmludGRydi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgdGhlIEFQSSBmaWxlcy4KCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRG8gYSBMb2FkTGlicmFyeUEgb2YgV0lOTU0gdXBvbiBBTklNQVRFX0NyZWF0ZSBhbmQgYSBGcmVlTGlicmFyeSB1cG9uCglBTklNQVRFX0Rlc3Ryb3kuCgoJKiB0b29scy93cmMvcGFyc2VyLmw6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4IGluIHdyYyB0byBzdXBwb3J0IHRoZSBTb2xhcmlzIHByZXByb2Nlc3Nvci4KCgkqIGRlYnVnZ2VyL21zYy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3M6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZCBzdGFydCBtZW51IGRpcmVjdG9yaWVzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUHV0IENMT05FX0ZJTEVTIGJhY2sgaW4sIGl0IGlzIHN0aWxsIGJyZWFraW5nIHRvbyBtYW55IHRoaW5ncy4KCgkqIG9iamVjdHMvYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglNZXJnZWQgRERCaXRtYXAgYW5kIHBoeXNCaXRtYXAgaW50byB0aGUgZ2VuZXJpYyBiaXRtYXAgc3RydWN0dXJlCgkoc3VnZ2VzdGVkIGJ5IEFuZHJldyBMZXd5Y2t5KS4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJSWdub3JlIHRyYWlsaW5nIHNwYWNlcyBpbiBET1NGU19Ub0Rvc0ZDQkZvcm1hdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZpeGVkIHNtYWxsIGJ1ZyBpbiBXU09DSzMyX2FjY2VwdAoKMjAwMC0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMDMyNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCURPU0ZTX1RvRG9zRkNCRm9ybWF0OiBmYWlsIGlmIGV4dGVuc2lvbiBsb25nZXIgdGhhbiAzIGNoYXJhY3RlcnMuCgoJKiB0b29scy9jdmR1bXAvLmN2c2lnbm9yZSwgdG9vbHMvY3ZkdW1wL01ha2VmaWxlLmluLCB0b29scy9jdmR1bXAvY3ZjcnVuY2guYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmgsIHRvb2xzL2N2ZHVtcC9jdmluY2x1ZGUuaCwgdG9vbHMvY3ZkdW1wL2N2bG9hZC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBjdmR1bXAgdG9vbCB0byBkdW1wIENvZGVWaWV3IHN5bWJvbCBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBQT0xMSFVQIGJldHRlciAoZGVsYXkgRkRfQ0xPU0Ugbm90aWZpY2F0aW9uIHVudGlsIGFsbCBkYXRhIGhhcwoJYmVlbiByZWFkKS4gTWFkZSBXU0FFbnVtTmV0d29ya0V2ZW50cyBhdG9taWMuIENvbnZlcnQgc29ja2V0IGV2ZW50CgllcnJvciBjb2RlcyBwcm9wZXJseS4gTWFkZSBhY2NlcHQoKS1lZCBzb2NrZXRzIGluaGVyaXQgdGhlIGxpc3RlbmluZwoJc29ja2V0J3MgV1NBQXN5bmNTZWxlY3QoKS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGRlYnVnIGZvcm1hdHRpbmcuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEZpeGVkIGVycm9yIGNoZWNraW5nIGluIHJlZ2lzdHJ5IHNhdmluZy4KCgkqIG1pc2MvY2Ryb20uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIHN0cmVycm9yIGluIGRlYnVnIG91dHB1dC4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNIQ2hhbmdlTm90aWZ5W0F8V106IGZyZWUgb25seSBpdGVtcyB3ZSBhbGxvY2F0ZWQuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmMsIHdpbjMyL2NvbnNvbGUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlcyBmb3IgaTE4bi4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHJlYWQgLnNvIGxpc3QgZnJvbSBkZWJ1Z2dlZSdzIGFkZHJlc3Mgc3BhY2UuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgbWlzc2luZyBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIHNlcnZlci9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNb3ZlZCBzb21lIHJlZ2lzdHJ5IGRlZmluaXRpb25zIHRvIHdpbm50LmguCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGltcG9ydCBvZiBjb21kbGczMi5kbGwgaW4gc3BlYyBmaWxlLgoKCSogd2luZG93cy93aW5wb3MuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBY3RpdmF0ZSBhIGhpZGRlbiB3aW5kb3cgb25seSB3aGVuIGV4cGxpY2l0ZWx5IGFza2VkIGJ5IHRoZQoJYXBwbGljYXRpb24uCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW1wcm92ZWQgZXhjZXB0aW9uIGhhbmRsaW5nCgltZXJnZWQgYWxsIG1vZHVsZSBoYW5kbGluZyBjb2RlIGluIG5ldyBtb2R1bGUuYyBmaWxlCglyZWVuYWJsZWQgJ3dhbGsgbW9kdWxlJyBhbmQgJ2luZm8gbW9kdWxlJyBjb21tYW5kcwoJYWRkZWQgYWJpbGl0eSB0byBkcml2ZSBicmVhayBvbiB0aHJlYWQgc3RhcnR1cAoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHVicyBmb3IgRGxsUmVnaXN0ZXJTZXJ2ZXIvRGxsVW5yZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCByZXR1cm4gdmFsdWUgZm9yIFNDX0dFVF9ERVZfVFlQRS4KCjIwMDAtMDMtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL2J1aWxkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xvY2FsLmMsIG1pc2MvdmVyc2lvbi5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmRlZi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBtaW4vbWF4IGluc3RlYWQgb2YgTUlOL01BWC4KCgkqIHNlcnZlci9zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWhrQHBpbmcudWlvLm5vPgoJSGFuZGxlIHNvY2tldCBQT0xMRVJSL1BPTExIVVAgY29uZGl0aW9ucyBwcm9wZXJseS4KCUNsZWFyIGVycm9yIGZpZWxkIGZvciBPT0Igbm90aWZpY2F0aW9ucy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU2VuZCB0aGUgY29ycmVjdCBPREFfIGNvZGUgd2hlbiBkZXNlbGVjdGluZyBhbiBpdGVtLgoKCSogd2luZG93cy91c2VyLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZpeGVkIGEgY291cGxlIG9mIGZpbGUgZGVzY3JpcHRvciBsZWFrcy4KCUFsd2F5cyBjYWxsIFVTRVIgc2lnbmFsIHByb2MgaW4gdGhlIHJpZ2h0IGNvbnRleHQuCglDbGVhbmVkIHVwIFRIUkVBRF9DcmVhdGUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJRG8gbm90IGVyYXNlIGxvY2FsIGZpbGVzIG9uIHVuaW5zdGFsbCBpZiBpbnN0YWxsIGRpciBkb2VzIG5vdCBleGlzdC4KCgkqIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9tb25pdG9yLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgd2luZG93cy9kY2UuYzoKCVN0b3JlIG1vbml0b3Igc2l6ZSBhbmQgZGVwdGggaW4gdGhlIGdlbmVyaWMgc3RydWN0dXJlLgoJTWVyZ2VkIG1vbml0b3IgZHJpdmVyIGludG8gVVNFUiBkcml2ZXIuCgoJKiB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBIGZldyBzaW1wbGlmaWNhdGlvbnMgYW5kIG9wdGltaXphdGlvbnMgaW4gdGhlIHgxMSBkcml2ZXIuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJTGluayB0dHlkcnYgYW5kIHgxMWRydiBvYmplY3RzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGwuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46IEFkZGVkIG1pc3Npbmcga2V5Ym9hcmQuc3BlYy4KCjIwMDAtMDMtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21zZ2JveC5jLCBtaXNjL2NvbW0uYywgbWlzYy9wcmludGRydi5jLCB3aW4zMi9leGNlcHQuYzoKCU1vdmVkIEZhdGFsQXBwRXhpdCBmdW5jdGlvbnMgdG8gd2luMzIvZXhjZXB0LmMuCglBZGRlZCBhIGZldyB1c2VzIG9mIENhbGxvdXQgaW5zdGVhZCBvZiByZWZlcmVuY2luZyBVU0VSIGZ1bmN0aW9ucwoJZGlyZWN0bHkuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCU1vdmVkIExvYWRJbWFnZSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdG8gY3Vyc29yaWNvbi5jLgoKCSogZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS90aHVuay5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywgZGxscy91c2VyL3RodW5rLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBvYmplY3RzL2xpbmVkZGEuYywgd2luZG93cy93aW4uYzoKCU1vdmVkIGdkaS91c2VyIHRodW5raW5nIGZ1bmN0aW9ucyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxscy4KCU1vdmVkIGtleWJvYXJkLnNwZWMgaW50byB1c2VyIGRsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRGlzYWJsZSBPcGVuR0wgc3VwcG9ydCBpZiB0aGUgbGF0dGVyIGlzIHRocmVhZCBzYWZlLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL21lbW9yeS5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGdyYXBoaWNzL2Rpc3BkaWIuYywgaW5jbHVkZS9hbmltYXRlLmgsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvY3J0ZGxsLmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZGlzcGRpYi5oLCBpbmNsdWRlL2VuaG1ldGFmaWxlLmgsIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9yZWdpb24uaCwgaW5jbHVkZS9zcWx0eXBlcy5oLCBpbmNsdWRlL3dpbmUvaWNtcGFwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2lucG9zLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgdGhlIGluY2x1ZGUgZmlsZXMgc2VsZiBzdWZmaWNpZW50LgoKCSogZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzb2NrMzIuc3BlYywgbWlzYy9kZGVtbC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQvZml4ZWQgc29tZSBkb2N1bWVudGF0aW9uIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS93aW5nZGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS93aW5udC5oLCBvbGUvb2xlMm5scy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgQyByZWxhdGVkIGNvbXBpbGUgcHJvYmxlbXMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbm1tLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2RkZW1sLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIEFQSSBmaWxlcwoJLSBEb24ndCBjaGVjayB0aGUgKi5zcGVjLmMgZmlsZXMKCS0gQmV0dGVyIHBhcnNpbmcgb2Ygc3RyaW5ncwoJLSBCZXR0ZXIgZG9jdW1lbnRhdGlvbiBjaGVja2luZwoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHNvbWUgZGVidWcgY29kZSBhbmQgY2xlYW5lZC11cCB0aGUgbW91c2Ugd2FycGluZyBjb2RlCgktIGJlIHJlYWR5IG9uY2UgbW91c2Ugd2lsbCBiZSByZXBvcnRlZCByZWxhdGl2ZWx5CgoJKiB3aW5kb3dzL21kaS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBjb3B5aW5nIG9mIHRoZSBNREkgJ1dpbmRvd3MnIG1lbnUgaXRlbXMgaWYgdGhlIGl0ZW1zIGFyZSBub3Qgb2YKCXR5cGUgTUZUX1NUUklORy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU2V0IHRoZSBjb3JyZWN0IHZhbHVlIGZvciB0aGUgY2NoIGVsZW1lbnQgb2YgTUVOVUlURU1JTkZPIGluCglHZXRNZW51SXRlbUluZm8uCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggc3BlYyBmaWxlIGVudHJpZXMgZm9yIEVudW1Gb250RmFtaWxpZXNFeCouCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZ1cnRoZXIgY29kZSBzaW1wbGlmaWNhdGlvbnMgYW5kIGludGVyZmFjZSAoY29uc2lzdGVuY3kpIGltcHJvdmVtZW50cy4KCUZpeCBzZWxlY3Rpb24gb2YgdGhlIFdpbmUgYmluYXJ5IHdoaWNoIHdhcyBicm9rZW4gYnkgYSByZWNlbnQgY2hhbmdlLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBwcm9wZXIgdGVybWluYXRpb24gdXBvbiBmYWlsdXJlLgoKCSogZGVidWdnZXIvdHlwZXMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiYXNpYyB0eXBlIGV2YWx1YXRpb24uCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRW5zdXJlIHRoYXQgbm9uLU5VTEwgdGVybWluYXRlZCBzdGluZ3MgYXJlIHNhdmVkIGNvcnJlY3RseS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgdGhlIE5vdGlmeUNvZGUgaW4gdGhlIFdNX0NPTU1BTkQgbWVzc2FnZSBzZW50IGJ5CglLQkRfdHJhbnNsYXRlX2FjY2VsZXJhdG9yKCkuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2xpZ2h0bHkgYmV0dGVyIFJFUVVFU1QgU0VOU0UgZHVtcGluZywgZml4ZWQgR0VUX0RFVl9UWVBFIHJldHVybnMsCgl3b3JrIGFyb3VuZCBFWEVDIFNDU0kgY29tbWFuZHMgd2hpY2ggZG8gbm90IHNldCB0aGUgaG9zdDwtPnRhcmdldCBkYXRhCglmbGFncywgaWdub3JlIGVycm9ycyBvbiBEVkQgUkVQT1JUIEtFWS9EVkQgU0VORCBLRVkuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglDaGFuZ2VkIFBUUkFDRV9QRUVLVVNFUiB0byBQVFJBQ0VfUEVFS1VTUiBhbmQgUFRSQUNFX1BPS0VVU0VSIHRvCglQVFJBQ0VfUE9LRVVTUiBmb3IgbGliYzUoPykgY29tcGlsZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0b3AgYSBXTV9TRVRURVhUIG1lc3NhZ2UgKGFuZCBmcmllbmRzKSB0byBhIGNvbWJvIHNlbmRpbmcgQ0JOX0VESVQqCgltZXNzYWdlcyB0byB0aGUgcGFyZW50LgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9oZWFwLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgKGNvcnJlY3QpIHByb3RvdHlwZSBmb3IgSGVhcFdhbGsuCgoJKiBkbGxzL29sZTMyL2lmcy5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBUaGUgSUNPTV9DTUVUSE9EeHh4IGNhdXNlIHByb2JsZW1zIGJlY2F1c2UgdGhlICdjb25zdCcgY2hhbmdlcyB0aGUKCSAgc2lnbmF0dXJlLiBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgb24gV2luZG93cyBhbnl3YXkgKGl0J3MgYSBzaGFtZSkgc28KCSAganVzdCByZW1vdmUgdGhlbSBhbHRvZ2V0aGVyLgoJLSBIZWFwTWluaW1pemUgcmV0dXJucyBhIHZvaWQsIG5vdCBhICd2b2lkKicKCjIwMDAtMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy93aW4uYywgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2Rpc3BsYXkvZGlzcGxheV9tYWluLmMsIGRsbHMvbW91c2UvbW91c2VfbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21vbml0b3IuaCwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU1vdmVkIGdyYXBoaWNzIGluaXRpYWxpc2F0aW9uIHRvIHRoZSB4MTFkcnYvdHR5ZHJ2IGRsbCBpbml0IGNvZGUuCglNZXJnZWQgZXZlbnQsIGtleWJvYXJkIGFuZCBtb3VzZSBkcml2ZXJzIGludG8gVVNFUiBkcml2ZXIuCgoyMDAwLTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJSW1wcm92ZWQgQ29tcGFyZVN0cmluZ0EgcGVyZm9ybWFuY2UuCgoJKiBsaWJyYXJ5L3dpbmVzdHViLmM6IEFkZGVkIG1pc3NpbmcgZGVidWd0b29scy5oIGluY2x1ZGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYywgcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmMsIHByb2dyYW1zL3ZpZXcvaW5pdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJRml4ZWQgc29tZSBjb21waWxlciBlcnJvcnMgYW5kIHdhcm5pbmdzLgoKCSogb2xlL29sZTJubHMuYzogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJVGVtcG9yYXJpbHkgaW1wbGVtZW50ZWQgdGhlIExDTUFQX1NPUlRLRVkgZmxhZyBpbiB0aGUgTENNYXBTdHJpbmdXKCkKCWZ1bmN0aW9uIHBlbmRpbmcgYSBtb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIGxvY2FsZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglIYWNrOiBhbHdheXMgdHJ5IGJ1aWx0aW4gbW9kdWxlIGJlZm9yZSBlbGYgb3IgZWxmZGxsIHRvIGF2b2lkIGxvYWRpbmcKCWEgYnVpbHRpbiBkbGwgLnNvIGZpbGUgaW4gdGhlIHdyb25nIG1vZGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmM6CglNb3ZlZCBmb250IHJlc291cmNlIGZ1bmN0aW9ucyBvdXQgb2YgdGhlIFgxMSBkcml2ZXIuCgoJKiB0b29scy9tYWtlZGVwLmM6CglBZGRlZCBzdXBwb3J0IGZvciBzb3VyY2UgZmlsZXMgc3RvcmVkIGluIHN1YmRpcmVjdG9yaWVzLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jOgoJQWRkZWQgR2V0RENPcmdFeCBpbiBncmFwaGljcyBkZXZpY2UgaW50ZXJmYWNlIGFuZCByZW1vdmVkIFgxMSBjb2RlCglmcm9tIGRjLmMuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2VnbWVudGVkL2xpbmVhciBidWZmZXJzIG1hbmlwdWxhdGlvbi4KCUJldHRlciBJTyBidWZmZXJpbmcuCglBZGRlZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglFeHBsaWNpdGx5IHVzZSB0aGUgVFZOX3h4eEEgdmVyc2lvbiBvZiB0aGUgbWFjcm9zLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gQWRkZWQgdGhlIFRWTl94eHhBIG1hY3JvcwoJLSBBZGRlZCBtaXNzaW5nIFRCTk9USUZZIG1hY3JvcyBhbmQgdHlwZXMKCS0gQWRkZWQgU05ETVNHCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBXTV9BUFAuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUveDExZHJ2LmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9tYWluLmMsIG1pc2MvcHJpbnRkcnYuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3htYWxsb2MuYywgb2JqZWN0cy9wYWxldHRlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgbW9zdCBjYWxscyB0byB4bWFsbG9jL3hyZWFsbG9jLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIEFkZGVkIG1pc3NpbmcgZGVmaW5pdGlvbiBmb3IgR0xPQkFMSEFORExFIGFuZCBMT0NBTEhBTkRMRQoJLSBGaXhlZCB0aGUgcHJvdG90eXBlIG9mIFdOREVOVU1QUk9DCgoJKiBpbmNsdWRlL2RkZW1sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglQcm9wYWdhdGUgSXNEaWFsb2dNZXNzYWdlIHRvIHRoZSBwYXJlbnQgaWYgdGhlIGRpYWxvZyBoYXMgdGhlCglEU19DT05UUk9MIGZsYWcuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgYW4gZXhjZXB0aW9uIGZyYW1lIGZvciBsc3RyY3B5MTYuCgoJKiBsb2FkZXIvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBhdHRhY2hpbmcgaW1wb3J0ZWQgRExMcyBvZiBhIHdpbmVsaWIgZXhlY3V0YWJsZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlPbGVJdGVtQ29udGFpbmVyIGhhcyBPTEVHVUlEKDB4MTFjKSwgbm90IDB4MTFhLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBDb1Rhc2tNZW1SZWFsbG9jLgoKCSogdG9vbHMvZ2VucGF0Y2g6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCU1hZGUgdmFyaW91cyBjaGFuZ2VzIHRvIHRvb2xzL2dlbnBhdGNoIGluY2x1ZGluZyBzdWdnZXN0aW9ucyBmcm9tIE92ZQoJS2FhdmVuIChQbGFjZSBhZGRlZCBmaWxlcyBsYXN0IGluIHRoZSBwYXRjaC4gIEFkZCBhIHN3aXRjaCB0aGF0CglzcGVjaWZpZXMgbW9kaWZpZWQgZmlsZXMuKQoKCSogaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbm50Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgUFRTVFIgYW5kIExQVFNUUiBmcm9tIHRjaGFyLmggdG8gd2lubnQuaC4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNob3VsZCBpbmNsdWRlICd3aW5zcG9vbC5oJy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIEFuIGV4dGVybiBzdGF0ZW1lbnQgZmluaXNoZXMgd2l0aCB0aGUgZmlyc3QgY2xvc2luZyAnfScgb3IgdGhlIGZpcnN0CgkgIG91dGVyICc7JwoJLSBIYW5kbGUgJyNlcnJvcicsICcjbGluZScgYW5kICcjcHJhZ21hJyBldmVuIHdoZW4gaW4gdGhlICdwcF9zdHJpcHMnLAoJICAncHBfc3RyaXBlJywgJ3BwX3N0cmlwcCcgb3IgJ3BwX2ZhbHNlJyBjb250ZXh0cyAoanVzdCBsaWtlICcjaWYnIGFuZAoJICBjbykuICBCdXQgc3RpbGwgZG9uJ3QgaXNzdWUgYW4gZXJyb3IgaWYgJyNlcnJvcicgaXMgZm91bmQgd2hlbiBpbiB0aGUKCSAgJ3BwX2ZhbHNlJyBzdGF0ZS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNYWtlIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgY29udHJvbCdzIGRlZmluaXRpb24gb3B0aW9uYWwuCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglTdXBwb3J0IGxvYWRpbmcgYW55IHByZXNlbnRhdGlvbiBhc3BlY3QuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkIGEgbGluayBlcnJvciBmcm9tIGFub3RoZXIgRExMIG9uIEZyZWVCU0QuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgam95c3RpY2sgSUQvZGV2aWNlSUQvZHJpdmVyIGhhbmRsZS9pbnN0YW5jZSBJRCBtaXh1cC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJRGVsZXRlIHRoZSBzaG0gc2VnbWVudCBhcyBzb29uIGFzIHdpbmUgYW5kIFggaGF2ZSBhdHRhY2hlZCBpdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogTGFycyBIZWV0ZSA8aGVsQGFkbWluLmRlPgoJQ29ycmVjdGVkIGhhbmRsaW5nIG9mIHByb3RvPT1OVUxMIGluIFdJTlNPQ0tfZ2V0c2VydmJ5bmFtZSBhbmQKCVdJTlNPQ0tfZ2V0c2VydmJ5cG9ydC4KCgkqIHdpbmRvd3MvZXZlbnQuYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJQ3JlYXRlZCBzZXBhcmF0ZSBkbGxzIGZvciB1c2VyLGdkaSx0dHlkcnYseDExZHJ2LgoJRml4ZWQgV2luZWxpYiBhcmdjIGhhbmRsaW5nICh0aGFua3MgdG8gRXJpYyBQb3VlY2gpLgoKMjAwMC0wMy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdHdlYWsuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9tYWluLmMsIG1pc2MvdHdlYWsuYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jOgoJTWlzYyBzbWFsbCBjbGVhbnVwcy4KCgkqIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL21haW4uYywgbWlzYy9zcHkuYywgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUF2b2lkIGNhbGxpbmcgdGhlICpSZWN0IFVTRVIgZnVuY3Rpb25zIGZyb20gaW5zaWRlIEdESS4KCU1vdmVkIGEgZmV3IFVTRVIgZnVuY3Rpb25zIHRvIGEgbW9yZSBhcHByb3ByaWF0ZSBsb2NhdGlvbi4KCgkqIGxvYWRlci9tYWluLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3ZlcnNpb24uYywgbWlzY2VtdS9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvc2hlbGwuaCwgd2luZS5pbmk6CglNb3ZlZCBjb21tYW5kLWxpbmUgb3B0aW9uIGhhbmRsaW5nIG91dCBvZiB0aGUgWDExIGRyaXZlci4KCUFkZGVkIHN1cHBvcnQgZm9yICItLSIgcHJlZml4IG9uIG9wdGlvbnMuCglSZXBsYWNlZCBhIGZldyBYMTEgY29tbWFuZC1saW5lIG9wdGlvbnMgYnkgd2luZS5jb25mIHBhcmFtZXRlcnMuCgoyMDAwLTAzLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL3ZnYS5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2RkcmF3LnNwZWMsIHJlbGF5MzIvZGlucHV0LnNwZWMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvZGlucHV0LmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywgZGxscy9kZHJhdy9kM2RkZXZpY2VzLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCU1hZGUgZGRyYXcgYW5kIGRpbnB1dCBzZXBhcmF0ZSBkbGxzLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJSGF2ZSB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgZXhpdCBtb3JlIGNsZWFubHkgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJSW5jbHVkZSBzcGFjZSBmb3IgcmVzb3VyY2VzIGluIHRoZSBtb2R1bGUgaGVhZGVyIGluc3RlYWQgb2YgZG9pbmcgYQoJc2VwYXJhdGUgYWxsb2NhdGlvbi4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgbWlzYy9uZXR3b3JrLmM6CglNYWRlIE1QUiBhIHNlcGFyYXRlIGRsbC4KCgkqIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJUmV3cml0ZSB0aGUgQklHQkxPQ0tGSUxFIGltcGxlbWVudGF0aW9uIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZ1cnRoZXIgc2ltcGxpZnkgdGhlIGNvZGUgYW5kIHJlbW92ZSBzb21lIHJlZHVuZGFudCBjb2RlLgoJTWFrZSB0aGUgdXNlciBpbnRlcmZhY2UgbW9yZSBjb25zaXN0ZW50IGFuZCBhcHBlYWxpbmcuCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCUF2b2lkIGEgcmVmY291bnQgbGVhayBpbiBRdWVyeUludGVyZmFjZSB3aGVuIGRlbGVnYXRpbmcuCglBbmQgYSBjb3VwbGUgb2YgbWlub3IgYnVncy4KCjIwMDAtMDMtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUludHJvZHVjZWQgREJHX1ZBTFVFIHN0cnVjdCB0byBtYW5pcHVsYXRlIGRlYnVnZ2VyL2RlYnVnZ2VlIGFkZHJlc3Mgc3BhY2UuCglBZGRlZCB3YXRjaCAoaGFyZHdhcmUgYXNzaXN0ZWQgZGVidWdnaW5nKSBhbmQgd2hhdGlzICh0eXBlIG9mIGV4cHIpIGNvbW1hbmRzLgoJRml4ZWQgc29tZSBpc3N1ZXMgaW4gbG9jYWwgdmFycyBoYW5kbGluZyAoc3RhYnMgcGFyc2luZyAmIHJlZ2lzdGVycyBvcHRpbWl6YXRpb24pLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNhPgoJVXBkYXRlIERJQiBzZWN0aW9ucyBpbiB0ZXh0IG91dHB1dCBhbmQgZm9yIGdyYXBoaWNzIHByaW1pdGl2ZXMuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTWljaGFlbCBBYmQtRWwtTWFsZWsgKG9uIGJlaGFsZiBvZiBDb3JlbCkKCVdoZW4gd2Ugd2VyZSBzd2l0Y2hpbmcgdG8gYW5vdGhlciBkZXNrdG9wLCB0aGUgcG9wdXAgd2luZG93cyBsb3N0Cgl0aGVpciBXU19WSVNJQkxFIGZsYWcuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglBdm9pZCBTSUdTVE9QL1NJR0NPTlQgcmFjZSB3aGVuIHB0cmFjZSBpcyBkaXNhYmxlZC4KCUZpeGVkIGNvbnRleHQgZmxhZ3MgaGFuZGxpbmcgKHRoYW5rcyB0byBFcmljIFBvdWVjaCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQXZvaWQgU0lHU1RPUC9TSUdDT05UIHJhY2Ugd2hlbiBwdHJhY2UgaXMgZGlzYWJsZWQuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzogRml4ZWQgYnVnIGluIGdlbmVyYXRlX3N0YXJ0dXBfZGVidWdfZXZlbnRzKCkuCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL1JFQURNRSwgcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5oLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaCwgcHJvZ3JhbXMvd2luZW1pbmUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvd2luZW1pbmUuc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb3NodWEgVGhpZWxlbiA8Zm96ZXlAbmV0emVyby5jb20+CglBZGRlZCB3aW5lbWluZSBhcHAuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUltcHJvdmVkIHRoZSB2aXN1YWwgYXBwZWFyZW5jZSBvZiB0aGUgdXNlciBpbnRlcmZhY2UuIE1hZGUgdGhlIGNvZGUKCXNvbWV3aGF0IHNpbXBsZXIuCgoyMDAwLTAzLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWM6CglXYWxkZWsgSGViaXNjaCA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoJSW1wbGVtZW50ZWQgX3JlYWQgYW5kIF9sc2Vlay4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgY29udmVyc2lvbiBvZiBsZXZlbCBwYXJhbWV0ZXIgaWYgV0lOU09DS19zZXRzb2Nrb3B0IGlzIGNhbGxlZAoJZm9yIG9wdGlvbiBXU19TT19ET05UTElOR0VSLgoKCSogb2JqZWN0cy9nZGlvYmouYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3Qgcm91bmRpbmcgb2YgdGhlIHJlc3VsdCBpbiBNdWxEaXYxNigpLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIEZyZWVCU0QgY29tcGlsYXRpb24uCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTWFrZSByZWdpc3RyeSB1c2FnZSBhIGxpdHRsZSBtb3JlIGNvcnJlY3QgYW5kIG1vZGVybgoJLSBDcmVhdGUgaG9tZSBmb3IgYWxsIGRwbGF5IG5hbWUgc2VydmVyIGZ1bmN0aW9uYWxpdHkKCS0gQWRkIHRoZSBmcmFtZXdvcmsgZm9yIEVudW1TZXNzaW9ucwoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZQoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCURpbWl0cmllIFBhdW4gPGRpbWlAYmlnZm9vdC5jb20+CglDbGVhbmVkIHVwIGRlYnVnIGNoYW5uZWxzIGEgYml0LgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUltcGxlbWVudGVkIHN0cmV0Y2hlZCBibHRzIGZvciBkZXB0aCAyNCAodW5vcHRpbWl6ZWQpLgoKMjAwMC0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzogRml4ZWQgT1VUUFVUX0RFQlVHX1NUUklORyBwb2ludGVyIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglSZW1vdmVkIFBST0NFU1NfSXNDdXJyZW50KCkuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJQWRkZWQgc3BlY2lmaWMgcm91dGluZXMgZm9yIE9VVFBVVF9ERUJVR19TVFJJTkcgYW5kIEVYQ0VQVElPTiBkZWJ1ZyBldmVudHMuCglHZW5lcmF0ZSBhIGJyZWFrcG9pbnQgZXZlbnQgb24gcHJvY2VzcyBhdHRhY2guCglNaXNjIGNsZWFudXBzIGluIHJlcXVlc3QgaGFuZGxpbmcuCgoyMDAwLTAzLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyByZWx5aW5nIG9uIGV4Y2VwdGlvbiBjb2RlcyB0byBrbm93IHdoZW4gZGVidWdnZXIgaXMgZW50ZXJlZCBmb3IgYQoJc2luZ2xlIHN0ZXAgdHJhcC4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgbWlzY2VtdS9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHByb2MgdG8gc3RhcnQgZGVidWdnaW5nIHByb2Nlc3MgZnJvbSBpdHMgY29tbWFuZCBsaW5lIChieSBsYXVuY2hpbmcgaXQpLgoKCSogZGVidWdnZXIvZXhwci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFudXAuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIEJsYWNrIGFzIGEgdmFsaWQgZm9udCB3ZWlnaHQuCglDb3BlIHdpdGggYWZtIGZpbGVzIHRoYXQgZG8gbm90IGNvbnRhaW4ge0ZhbWlseXxGdWxsfU5hbWUgZW50cmllcy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzogRGF2aWQgRWxsaW90dCA8ZGZlQG5ldG5pdGNvLm5ldD4KCS0gR290IHJpZCBvZiBQUk9GSUxFIGZ1bmN0aW9ucy4KCS0gVXNlIGZ1bmN0aW9uYWxpdHkgb2YgYXNwaS5jLgoJLSBBdXRvbWFnaWNhbGx5IHJlYWQgL3Byb2Mvc2NzaS9zY3NpIChwYXJ0IG9mIGFzcGkuYyB3aGljaCBpcyBhbHJlYWR5CgkgIGluIHRyZWUpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglIYW5kbGUgMjQgYml0IERJQnMgPC0+IDI0IGJpdCBkZWVwLzI0IGJpdHMgcGVyIHBpeGVsIFhJbWFnZXMuCgoJKiBwcm9ncmFtcy92aWV3L2dsb2JhbHMuaDogTWlrZSBDYXN0bGUgPGRhbGdvZGFAaXgubmV0Y29tLm5ldD4KCUFkZGVkIHJlc291cmNlLmggaW5jbHVkZS4KCgkqIHdpbmRvd3MvcmVjdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlzUmVjdEVtcHR5IGFsc28gcmV0dXJucyB0cnVlIGZvciBuZWdhdGl2ZSB3aWR0aC9oZWlnaHRzICh2ZXJpZmllZAoJYWdhaW5zdCBXaW5kb3dzKSwgZm91bmQgYnkgQnJhZCBPbGl2ZXIgPGJyYWRtYW5AcG9ib3guY29tPi4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglUYWtlIHR5cGUgZnJvbSByZWZlcmVuY2VkIHZhcmlhbnQgZm9yIFZUX0JZUkVGICYmIFZUX1ZBUklBTlQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJU3RvcmUgdGhlIGxpc3Qgb2YgbG9hZGVkIGRsbHMgaW4gdGhlIHNlcnZlciwgYW5kIGdlbmVyYXRlIGRlYnVnIGV2ZW50cwoJaW50ZXJuYWxseS4KCjIwMDAtMDMtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglBZGRlZCBzZXJ2ZXIgcHJvdG9jb2wgdmVyc2lvbiBjaGVjay4KCgkqIGluY2x1ZGUvYXNwaS5oLCBpbmNsdWRlL3dpbmFzcGkuaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZG9zYXNwaS5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaCwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWM6CglEYXZpZCBFbGxpb3R0IDxkZmVAbmV0bml0Y28ubmV0PgoJLSBTbGlnaHRseSByZXdvcmtlZCBpbmNsdWRlIGZpbGVzIChsZXNzIG1lc3N5LCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCkuCgktIE1vdmVkIERPUyBBU1BJIGZ1bmN0aW9uYWxpdHkgdG8gbXNkb3MvZG9zYXNwaS5jLgoJLSBHb3QgcmlkIHVzaW5nIFBST0ZJTEUgdG8gZ2V0IFNDU0kgaW5mbyBmcm9tIHdpbmUuY29uZi4KCS0gUmVhZCBzY3NpIGluZm8gZnJvbSAvcHJvYy9zY3NpL3Njc2kuCgktIEFkZGVkIHNldHRpbmcgb2YgYSByZWFzb25hYmxlIHRpbWVvdXQgd2hlbiBvcGVuaW5nIGEgU0NTSSBkZXZpY2UgKDUKCSAgbWludXRlcywgZGVmaW5lZCBpbiB3aW5lc2NzaS5oKS4KCS0gRXhlY1Njc2lDb21tYW5kIG5vdyBBTFdBWVMgcG9zdHMsIGV2ZW4gb24gZXJyb3IgKHdoaWNoIGlzIHRoZSBjb3JyZWN0CgkgIGJlaGF2aW9yKS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCByZXNvdXJjZXMvc3lzcmVzX1NrLnJjLCByZXNvdXJjZXMvdXNlcjMyLnJjOgoJU2ltZW4gWmFtZWNuaWsgPHNpbWVuQG5leHRyYS5zaz4KCUFkZGVkIFNsb3ZhayBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCByZXNvdXJjZXMvLmN2c2lnbm9yZSwgcmVzb3VyY2VzL3N5c3Jlc19KYS5yYywgcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjOgoJSnVuaWNoaSBLdWNoaW5pc2hpIDxqa3VjaGlAbWFob3JvYmEubmUuanA+CglBZGRlZCBzb21lIEphcGFuZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGVzdGQuaCwgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZXJyb3IuaDoKCUFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgT0xFIGNsaXBib2FyZCBmdW5jdGlvbmFsaXR5IGZvciBFbWJlZCBTb3VyY2UgZm9ybWF0LgoJSXQgaGVscHMgeW91IGN1dCBhbmQgcGFzdGUgZGF0YSB3aXRoIEVtYmVkIFNvdXJjZSBmb3JtYXQgYmV0d2VlbgoJYXBwbGljYXRpb25zLiAgSXQgYWxzbyBpbXBsZW1lbnRzIE9sZUNyZWF0ZUZyb21EYXRhIGFuZAoJT2xlUXVlcnlDcmVhdGVGcm9tRGF0YSBhbmQgZml4ZXMgc29tZSBidWdzIGluIGRhdGFjYWNoZS5jLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+Cgl3bS0+bW9kbmFtZSBtaWdodCBiZSBpbnZhbGlkIGF0IHRoZSBlbmQgb2YgRnJlZUxpYnJhcnkuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvZGVidWdzdHIuYywgbWlzYy9lcnJvci5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS9zdHJ1Y3QzMi5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBsb2FkZXIvbW9kdWxlLmMsIGNvbnRyb2xzL2J1dHRvbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGEgbG90IG9mIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGFuZCBmaXhlZCB0aGUgY29tcGlsZSBlcnJvcnMuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvc2hlbGwuaCwgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvd3NwcmludGYuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQ29ycmVjdGVkIHZhbHVlIGZvciBEQVlTX0lOX09ORV9ZRUFSLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ2xlYW5lZCB1cCBDUlRETExfX3VubGluay4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglUaGUgc3RhdGljIGNvbnRyb2wgb25seSBuZWVkcyB0byBpbnZhbGlkYXRlIGl0cyByZWN0IHdoZW4gd2UgU2V0VGV4dC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL3NweS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgZmV3IG1lc3NhZ2VzIGZvciBJTUUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z2dlci5oLCBtaXNjZW11L21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGRpcmVjdGx5IGFjY2Vzc2luZyBkZWJ1Z2dlZSBtZW1vcnkuCglFeGVjdXRpb24gY29udGV4dCAobW9kZSwgc3RlcHMuLi4pIGFyZSBub3cgbGlua2VkIHRvIGEgdGhyZWFkLgoJUmVtb3ZlZCBzb21lIFgxMSBjcnN0IGhhY2tzLgoJUmV3cm90ZSBpbmZvL3dhbGsgY29tbWFuZHMuCglSZW1vdmVkIGRpcmVjdCBkZWJ1Z2dlciBpbnZvY2F0aW9uIGNvZGUgKGFuZCBtb3ZlZCB0aGUgcmVzdCB0byB0aGUgbmV3Cgl3aW5lZGJnLmMgZmlsZSkuCgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9uZXdmbnMuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL21vZHVsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJUmVtb3ZlZCBQREIzMl9ERUJVR0dFRCBmbGFnIGFuZCBzZW5kIGFsbCBkZWJ1ZyBldmVudHMgdW5jb25kaXRpb25hbGx5LgoJSW1wbGVtZW50ZWQgSXNEZWJ1Z2dlclByZXNlbnQoKS4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUdlbmVyYXRlIENSRUFURV9QUk9DRVNTL1RIUkVBRCBkZWJ1ZyBldmVudHMgaW50ZXJuYWxseSBpbiB0aGUgc2VydmVyLgoKMjAwMC0wMy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgaW5saW5lIGZ1bmN0aW9ucyBTZXRMYXN0RXJyb3IgYW5kCglHZXRDdXJyZW50VGhyZWFkSWQuICBBZGRlZCBhc20gaW5saW5lcyBmb3IgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9udGRkay5oLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBZGRlZCBEYmdCcmVha1BvaW50LiBGaXhlZCBleGNlcHRpb24gcmVjb3JkIGNvbnRlbnRzIG9uIFNJR1RSQVAuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHNlY29uZCBpbnN0YW5jZSBER1JPVVAgbG9hZGluZy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL21haW4uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTUElfR0VUSUNPTk1FVFJJQ1MuCglDaGFuZ2UgV0FSTiAtPiBGSVhNRSBmb3IgdW5pbXBsZW1lbnRlZCBTUElfcyBhbmQgc2V0IGFwcHJvcHJpYXRlIGVycm9yLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbCB3cml0ZSB0aGUgY2FjaGVkIHN0cnVjdCBpbiBHbG9iYWxNZW1vcnlTdGF0dXMuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbmNsdWRlIGluIHRoZSBBZGRGb250UmVzb3VyY2VBL1cgZml4bWUgbWVzc2FnZSBhIHBvaW50ZXIgdG8gdGhlIGZvbnRzCglkb2N1bWVudC4gSW4gdGhpcyBkb2N1bWVudCB0ZWxsIHRoZSB1c2VyIGhvdyB0byBmaW5kIHRoZSBuZWVkZWQgdG9vbHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGQgYSBtZXNzYWdlIGFuZCBmaXggZXJyb3IgY29kZSBpZiBfX3dzX2dldHNlcnZieW5hbWUoKSBhbmQKCV9fd3NfZ2V0c2VydmJ5cG9ydCgpIGNhbm5vdCBmaW5kIHRoZSByZXF1ZXN0ZWQgc2VydmljZS4KCUZpeCBXSU5TT0NLX3NldHNvY2tvcHQoKSB3aGVuIGNhbGxlZCB3aXRoIG9wdHZhbCBwb2ludGluZyB0byAxNiBiaXQgaW50LgoKCSogZGxscy93aW5tbS9tbWlvLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUNoZWNrIGZvciBleGlzdGVuY2UgaWYgTU1JT19FWElTVCBpcyBwYXNzZWQgdG8gTU1JT19PcGVuLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jOiBKZWZmIFRyYW50ZXIgPGplZmZ0QGNvcmVsLmNhPgoJVGhlIHBhdGhuYW1lIHdhcyBzdG9yZWQgaW4gYSBzdHJpbmcgb2Ygc2l6ZSAxMDAsIHdoaWNoIHdhcyBub3QgYWx3YXlzCglsYXJnZSBlbm91Z2guIEl0IHNob3VsZCBiZSBzZXQgdG8gTUFYX1BBVEggKDI1NSkuCgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNldmVyYWwgZml4ZXMgdG8gTWFrZVByb2NJbnN0YW5jZS4KCjIwMDAtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGV4dHJhIHN5bWxpbmtzIGZvciAuc28gZmlsZXMgdGhhdCBjb250YWluCgltdWx0aXBsZSBkbGxzLgoKMjAwMC0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy8uY3ZzaWdub3JlLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglNb3ZlZCBkbGwtc3BlY2lmaWMgbWFrZSBydWxlcyB0byBhIHNlcGFyYXRlIE1ha2VkbGwucnVsZXMgZmlsZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRml4ZWQgZXJyb3IgY2hlY2tpbmcgaW4gcmVnaXN0cnkgc2F2aW5nLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdTQUNsZWFudXAgc2hvdWxkIHNldCBsYXN0IGVycm9yIHRvIFdTQU5PVElOSVRJQUxJU0VEIGlmIGZhaWxpbmcKCWJlY2F1c2UgV2luc29jayB3YXMgbm90IGluaXRpYWxpemVkLi4uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvTG9hZExpYnJhcnkgZ2V0cyBVTklDT0RFLCBub3QgQVNDSUkgc3RyaW5ncy4gKHNwb3R0ZWQgYnkgTGF3c29uCglXaGl0bmV5KSwgcmVtb3ZlZCB0aGUgZGxsTmFtZSBjb21wb25lbnQgb2YgdGhlIG9wZW5EbGxzLiAgQWRkZWQgc29tZQoJZGVidWdzdHJfZ3VpZCgpLgoKCSogZGxscy9udGRsbC9udC5jOiBEYW4gU2NvdHQgPGRhbi5zY290dEBob21lLmNvbT4KCUZpeGVkIHR5cG9zIGluIF9hbGxkaXYoKSBhbmQgX2FsbG11bCgpLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWVzc2FnZSBmb3IgbWlzc2luZyB4cG0gZGV2ZWwgbGlicyBmb3IgZGViaWFuL2NvcmVsLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCU9sZVJlZ0dldFVzZXJUeXBlIGRpZCBxdWVyeSB3cm9uZyByZWdpc3RyeSBrZXkuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBhcHBsaWNhdGlvbnMgY2FsbCBHbG9iYWxNZW1vcnlTdGF0dXMoKSB2ZXJ5IG9mdGVuLiBDYWNoZSB0aGUKCXJlc3VsdHMgb2YgdGhlIGNhbGwgZm9yIDEgc2Vjb25kIChzcG90dGVkIGJ5IENvcmVsKS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0Q2xpcGJvYXJkRGF0YTE2IG1pZ2h0IHJldHVybiBhbiBpbnZhbGlkIGdsb2JhbCBoYW5kbGUgKHNwb3R0ZWQgYnkKCUNvcmVsKS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogTGlsaWEgUm91bWlhbnRzZXZhCgljYkNvdW50U2l6ZU9mRW5oTWV0YWZpbGUgY2FsbGJhY2sgZnVuY3Rpb24gaW5zdGVhZCBvZiBpbmNyZWFzaW5nIGEKCWNvbnRlbnRzIG9mIHRoZSBwb2ludGVyIHRvIHRoZSBzaXplIGluY3JlYXNlZCB0aGUgcG9pbnRlciBpdHNlbGYuCgoJKiBkb2N1bWVudGF0aW9uL3BzZHJpdmVyOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggZG9jcyB0byByZWZsZWN0IGNoYW5nZSB0byAud2luZXJjIHByb2Nlc3NpbmcuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBjb25maWcuY2FjaGUgcHJvYmxlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IFZhaGlkIFBvdXJsb3RmYWxpCglUcmFja2JhciBjb250b2wgZGlkIG5vdCBoYXZlIHByb3BlciBwb3NpdGlvbiB2YWx1ZSBpbiBjYXNlIG9mCglTQl9USFVNQlRSQUNLIG5vdGlmaWNhdGlvbiBtZXNzYWdlOiBpdCB3YXMgYWx3YXlzIHNlbmRpbmcgMC4KCglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglNYWRlIHRoZSBzbGlkZXIgY29udHJvbCBhIHJlY3QuICBJdCBoYWQgYmVlbiB0cnlpbmcgdG8gZHJhdyBhIG5vdGNoZWQKCXNsaWRlciwgYnV0IHRoZSByZXN1bHQgZGlkbid0IGxvb2sgcmlnaHQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWRlIFdJTlNPQ0tfc2V0c29ja29wdCBoYW5kbGUgb3B0aW9uIFNPX0RPTlRMSU5HRVIgY29ycmVjdGx5LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJQ1VSU09SSUNPTl9JY29uVG9DdXJzb3I6IGluY29uc2lzdGVudCBMb2NrL1VubG9jawoKCSogZmlsZXMvcHJvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQUk9GSUxFX0dldFN0cmluZzogb25seSBhY2NlcHQgTlVMTCBmb3Iga2V5bmFtZSB0byByZXR1cm4gdGhlIGxpc3Qgb2YKCWtleXMgYXMgV2luOTUgZG9lcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJRml4IGEgc2lnbiBidWcgd2hlcmUgbWVtY3B5IHdhcyBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBsZW5ndGguCgoyMDAwLTAyLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvcHJvZmlsZS5jOiBNYWtlIHByb2ZpbGUga2V5IGEgZ2xvYmFsIGhhbmRsZS4KCgkqIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3czMnNrcm5sLmMsIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglSZW5hbWVkIGxpYndpbjMycyB0byB1c2UgdGhlIHByb3BlciBkbGwgbmFtZSAobGlidzMyc2tybmwpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIG1zZG9zL2ludDIxLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglSZW1vdmVkIHN1cGVyZmx1b3VzICNpbmNsdWRlIHN0YXRlbWVudHMgZm9yIGhlYWRlciBmaWxlcyBpbmNsdWRlZCB0d2ljZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJTWFrZSB1cGRvd24gY29udHJvbCB3b3JrLiBVcERvd24gY29udHJvbCBhbHdheXMgc2VuZHMgV01fKlNDUk9MTAoJbWVzc2FnZSBhbmQgdXNlcyBTQl9USFVNQlBPU0lUSU9OIGNvZGUgKG5vdCBTQl9MSU5FW1VQfERPV05dKS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgYmVoYXZpb3Igb2Ygc2VuZGluZyBXTV9DT05URVhUTUVOVSB3aGVuIHJlY2VpdmluZyBhCglXTV9SQlVUVE9OVVAuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBNdXJhbGkgUGF0dGF0aGUKCglUaGlzIGlzIHRoZSBwYXRjaCBmb3IgdGhlIE9sZUNvbnZlcnRPTEVTVFJFQU1Ub0lTdG9yYWdlIHdpbmUgQVBJLgoJVGhpcyBBUEkgY2FsbHMgYW5vdGhlciBmdW5jdGlvbiBjYWxsZWQgT0xFQ09OVkVSVF9Mb2FkT0xFMTAgd2hpY2gKCWJhc2ljYWxseSByZWFkIHRoZSBPTEUgc3RyZWFtIGZyb20gdGhlIGZpbGUgdGhyb3VnaCB0aGUgY2FsbGJhY2sKCWZ1bmN0aW9uICh0aGlzIGlzIHBhc3NlZCBieSB0aGUgYXBwbGljYXRpb24pLgoKCVRoZSByZWFkaW5nIGZvcm1hdCB3YXMgd3JvbmcuIFN0aWxsIEkgYW0gbm90IHZlcnkgc3VyZSB0aGlzIGlzIDEwMCAlCgljb3JyZWN0IGZvcm1hdC4gSSBkaWQgc29tZSByZXZlcnNlIGVuZ2luZWVyaW5nIGFuZCBmb3VuZCB0aGUgZm9ybWF0LiBJCgloYXZlIHRyaWVkIHdpdGggZGlmZmVyZW50IE9MRSBvYmplY3QgYW5kIGl0cyB3b3JrZWQgaW4gcGFyYWRveC4gSQoJaGF2ZW4ndCB0ZXN0ZWQgd2l0aCBhbnkgb3RoZXIgYXBwcy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIHN0dWJzIGFuZCBhZGRlZCBmb3J3YXJkcyBpbiBvcmRlciB0byBtYWtlIGJvdGggd2luYXBpX2NoZWNrCglhbmQgY2hlY2tsaW5rIGhhcHB5LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHRoZSByZXN0IG9mIHRoZSBBUEkgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBnbG9iYWwgZmlsZSB0byB0aGUKCWxvY2FsIGZpbGVzLgoKMjAwMC0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOiBSZWxlYXNlIDIwMDAwMjI3LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvaW5pdC5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRDb21wdXRlck5hbWVBKCk6IGFkZGVkIHBhcmFtZXRlciBjaGVjayBsaWtlIFdpbjk1IGRvZXMuCgoJKiB0b29scy9idWlsZC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgc29tZSBTb2xhcmlzIHNwZWNpZmljIGFzc2VtYmxlciBwcm9ibGVtcwoJLSBGaXhlZCBzb21lIG1pc3NpbmcgLnR5cGUgQGZ1bmN0aW9uIChoZWxwcyBkZWJ1Z2dpbmcgd2l0aCBkYngpCgktIEZpeGVkIGNvZGUgbmVlZGluZyBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpX18gZm9yIG5vbi1HQ0MgRUxGIGNvbXBpbGVycwoJLSBGaXhlZCB1c2Ugb2YgemVybyB3aWR0aCBhcnJheXMgKEFOU0kgQyB2aW9sYXRpb24pCgktIEBHT1RPRkYgb24gU29sYXJpcyBkb2Vzbid0IHdvcmsgLSB1c2UgQEdPVCBhbmQgcmVkaXJlY3Rpb24gaW5zdGVhZAoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIGluY2x1ZGUvc2VsZWN0b3JzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgU29sYXJpcyBzcGVjaWZpYyBhc3NlbWJsZXIgcHJvYmxlbXMuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvZ2VucGF0Y2g6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCUFkZGVkIHV0aWxpdHkgdGhhdCBnZW5lcmF0ZXMgcGF0Y2hlcyBmb3Igc3VibWlzc2lvbiB0bwoJd2luZS1wYXRjaGVzQHdpbmVocS5jb20uCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglvbGVhdXQzMiBzaG91bGQgbm90IGltcG9ydCBmdW5jdGlvbnMgZnJvbSBvbGVwcm8zMi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRG9uJ3QgZGlzcGxheSB0aGUgY29udGV4dCBtZW51IG9uIGEgZG91YmxlIGNsaWNrLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVNldCB0aGUgZm9udCBvbiB0aGUgZWRpdCBsYWJlbCBjb250cm9sIHRvIHRoYXQgdXNlZCBieSB0aGUgbGlzdHZpZXcKCWNvbnRyb2wuIEl0IGFsc28gdXNlcyB0ZXh0IG1ldHJpY3MgdG8gc2V0IGEgbW9yZSByZWFzb25hYmxlIGluaXRpYWwKCWVkaXQgY29udHJvbCBzaXplLgoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUhhbmRsZSBNX1NFVFJFRFJBVyBpbiBMaXN0Vmlldy4KCUZpeCB0byBFbnN1cmVWaXNpYmxlIHRvIGhhbmRsZSBzbWFsbCBhbmQgbGFyZ2UgaWNvbiBjb3JyZWN0bHkuCglBZGQgZWRpdCBsYWJlbCBmdW5jdGlvbm5hbGl0eSB0byB0aGUgbGlzdHZpZXcgYW5kIHRoZSBmaWxlIG9wZW4gZGlhbG9nLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVJlbGFzZURDIGluIENyZWF0ZUVkaXRMYWJlbC4KCglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglBZGQgZnVuY3Rpb25uYWxpdHkgdG8gY3JlYXRlIG5ldyBmb2xkZXIgaW4gdGhlIG9wZW4gZGlhbG9nLgoJQWRkIHN1cHBvcnQgZm9yIHJpZ2h0IGNsaWNrIG1lbnUgaW4gY29tbW9uIGZpbGUgZGlhbG9nLgoJTElTVFZJRVdfRW5kRWRpdGxhYmVsIGlzIG5vdyBoYW5kbGluZyBOT05MUFNUUl9URVhUQ0FMTEJBQ0sgbGlzdHZpZXcgaXRlbXMuCgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglMSVNUVklFV19HZXRDb2x1bW5BIGZpeCAoZG8gbm90IGNvcHkgc3RyaW5nLCBwYXNzIHBvaW50ZXJzKS4KCglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUHJldmVudGluZyBhIGRpdmlkZSBieSB6ZXJvIHdoZW4gaGFuZGxpbmcgTFZXX0VOU1VSRVZJU0lCTEUgbWVzc2FnZS4KCglEb24gS2VsbHkKCS1JbXBsZW1lbnRlZCB0aGUgc29ydGluZyBvbiBpbnNlcnQgb2YgaXRlbXMgaW50byBhIExpc3RWaWV3IGNvbnRyb2wKCSB3aXRoIGVpdGhlciBMVlNfU09SVEFTQ0VORElORyBvciBMVlNfU09SVERFU0NFTkRJTkcgc2V0LgoJLShoZWxwaW5nIGV2aWwgYXBwbGljYXRpb25zKTogc29tZXRpbWVzIG5vdCBzbyB3ZWxsIHN0cnVjdHVyZWQgYXBwcwoJIChQRlBJOTAsIGluIHRoaXMgY2FzZSkgd2lsbCBub3QgZnVsbHkgaW5pdGlhbGl6ZSBzdHJ1Y3RzLiAgSW4gdGhlIGNhc2UKCSBvZiB0aGUgTFZNX0dFVElURU0gbWVzc2FnZSB0aGUgYXBwIG1heSBoYXZlIG9ubHkgaW5pdGlhbGl6ZWQgdGhlIG1hc2sKCSBhbmQgaUl0ZW0gbWVtYmVycyBvZiB0aGUgc3RydWN0LiAgQWRkZWQgcHJvY2Vzc2luZyBvZiB0aGUgTFZJRl9QQVJBTQoJIG1hc2sgaW4gdGhlIGNhc2UgdGhhdCBpU3ViSXRlbSB3YXMgc2V0IGJ1dCBpcyBpbnZhbGlkL3VuaW5pdGlhbGl6ZWQuCgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4IGZvciBoYW5kbGluZyBjb3JyZWN0bHkgdGhlIGNhbmNlbGxpbmcgbW9kZSBvZiB0aGUgRWRpdCBsYWJlbC4KCUZpeCB3aWR0aCBjYWxjdWxhdGlvbiBvZiB0aGUgZWRpdCBsYWJlbC4KCglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGJlaGF2aW9yIG9mIHNlbmRpbmcgV01fQ09OVEVYVE1FTlUgd2hlbiByZWNlaXZpbmcgYQoJV01fUkJVVFRPTlVQLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIGEgcGFpbnRpbmcgcHJvYmxlbSB3aXRoIGxpc3R2aWV3IHdoZW4gdGhlIHZpZXcgY2hhbmdlcyBhbmQgYW4KCWVkaXQgbGFiZWwgaXMgYWN0aXZlLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIGEgbm90aWZpY2F0aW9uIHByb2JsZW0gd2l0aCBsaXN0dmlldy4gT24gY3JlYXRpb24gaWYgdGhlIHVzZXIKCXNwZWNpZmllcyBhbiBpdGVtIHdpdGggZm9jdXMgYW5kL29yIHNlbGVjdGlvbiB3ZSBzaG91bGQgc2VuZCB0aGUKCXByb3BlciBub3RpZmljYXRpb24uIEluc2VydCB3YXMgcHJldmVudGluZyBMSVNUVklFV19TZXRJdGVtIGZyb20KCXNlZWluZyB0aGUgY2hhbmdlcyBhbmQgc2VuZGluZyB0aGUgbm90aWZpY2F0aW9uLgoKCU1ha2UgdGhlIGRyYXcgaXRlbSByZWN0YW5nbGUgY29uc2lzdGVudCB3aXRoIHRoZSBzZWxlY3Rpb24KCXJlY3RhbmdsZS4gVGhpcyBhbGxvd3MgdXMgdG8gY2xpY2sgb24gdGhlIGZvbGRlcnMgYW5kIGljb25zIGluIHRoZQoJZmlsZSBvcGVuIGRpYWxvZyBib3ggYW5kIHRoZSBpdGVtIGFjdHVhbGx5IGdldHMgc2VsZWN0ZWQuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXRyIFRvbWFzZWsgPHRvbWFzZWtAZXRmLmN1bmkuY3o+CgktIFdyaXRlIHNlcmlhbCBudW1iZXJzIHRvIHRoZSBkZXZpY2UgKEZBVCkKCS0gRFJJVkVfUmVhZFN1cGVyYmxvY2s6IGJldHRlciBjaGVja2luZyBmb3IgdGhlIEZBVCBmcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRGdWxsUGF0aE5hbWUgZml4ZXMuCgoyMDAwLTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L3N0cmluZy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGRlZmluaXRpb24gb2YgdGhlIFJ0bE1lbW9yeSBmdW5jdGlvbnMuIFVzZSBtYWNyb3MgaW50ZXJuYWxseSBhbmQKCWZvciBXaW5lbGliLCB1c2UgcmVhbCBmdW5jdGlvbnMgZm9yIGV4cG9ydHMgZnJvbSBudGRsbC4KCgkqIGluY2x1ZGUvb2xlMi5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVByb3RvdHlwZXMgT2xlSW5pdGlhbGl6ZSwgT2xlVW5pbml0aWFsaXplLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFycmFuZ2VDdHJsUG9zaXRpb25zOiBmaXggZm9yIHVzZXItZGVmaW5lZCB0ZW1wbGF0ZSB3aXRoIG5vIHN0YzMyLgoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaCwgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJU2VuZCBXTV9IRUxQIG1lc3NhZ2Ugd2hlbiBGMSBpcyBwcmVzc2VkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBZdXhpIFpoYW5nIDx5dXhpQGNvcmVsLmNhPgoJSW4gdGhlIGxpc3Rib3gsIHdoZW4gdGhlIGxhc3QgaXRlbSBpcyBzZWxlY3RlZCBhbmQgZGVsZXRlZCwgaXQgc3RpbGwKCWFwcGVhcmVkIGluIHRoZSB3aW5kb3cuCgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglJbiBMSVNUQk9YX1VwZGF0ZVNjcm9sbCgpLCBpZiB0aGUgbGlzdGJveCBkaWQgbm90IGhhdmUgdGhlIFdTX1NDUk9MTAoJc3R5bGUgaXQgd291bGQganVzdCByZXR1cm4uICBUaGlzIGxlZnQgdGhlIGhvcml6b250YWwgc2Nyb2xsIGJhcgoJdW5pbml0aWFsaXplZCBhbmQgaXQgd2FzIGFwcGVhcmluZyBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0Ym94IHdoZW4KCWl0IGRpZCBub3QgaGF2ZSB0by4KCglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglMSVNUQk9YX1NldENvbHVtbldpZHRoIGFkZHMgZXh0cmEgMiBwaXhlbHMgdG8gdGhlIHBhc3NlZCBjb2x1bW4gd2lkdGgKCShpdCBzYXlzIGl0IGlzIGZvciBjb2x1bW4gbWFyZ2lucykuIE9idmlvdXNseSBpdCBpcyB3cm9uZywgYmVjYXVzZQoJbWFyZ2lucyBtdXN0IGJlIGludGVybmFsLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9lcnJvcmluZm8uYzoKCUVycm9ySW5mbyBmdW5jdGlvbnMgbmVlZCB0byBiZSBpbiBvbGUzMiwgbm90IG9sZWF1dDMyLgoKCSogZGxscy9jcnRkbGwvd2NzdHJpbmcuYzogTW9yZSBwb3J0YWJsZSBDUlRETExfaXN3Y3R5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW92ZWQgZmlsZSBmdW5jdGlvbnMgdG8gc2hsZmlsZW9wLmMKCU5ldyBTSEVMTF9EZWxldGVEaXJlY3RvcnlBCglVc2Ugc2hlbGwgbm90aWZpY2F0aW9ucy4KCUVuYWJsZWQgZmlsZSBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXggZm9yIE9wZW5JY29uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHViIFBhdGhJc0RpcmVjdG9yeS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlcyBmb3IgU2hlbGxFeGVjdXRlRXguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBzaGVsbCBub3RpZmljYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9zaGVsbDMyOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVVwZGF0ZWQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBXaW5lbGliIHR5cGVzLgoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIGljb24gbm8gNCAob3BlbiBmb2xkZXIpLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Vycm9yaW5mby5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvb2xlYXV0by5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdHVicyBmb3Ige0NyZWF0ZSxHZXQsU2V0fUVycm9ySW5mby4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGFuIGVycm9yIGluc3RlYWQgb2YgYSBzdWNjZXNzIGNvZGUgaW4gT2xlQ3JlYXRlIHN0dWIgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOiBEb24gS2VsbHkKCUluIFdpbmRvd3MgUHJvcGVydHkgU2hlZXQgY2FuIGhhdmUgYW55IG1peCBvZiBpY29uLWxlc3MgdGFicyBhbmQgdGFicwoJd2l0aCBpY29ucy4gIEFkZHMgYSBjaGVjayB0byBzZWUgaWYgdGhlIGljb24gd2UncmUgYWRkaW5nIGlzIG5vbi1OVUxMCgkob3RoZXJ3aXNlIHJhbmRvbSBqdW5rIGZyb20gbWVtb3J5IGNhbiBiZSByZW5kZXJlZCkgd2hlbiB0aGUgYXBwbGljYXRpb24KCWhhcyBzcGVjaWZpZWQgdGhlIFBTUF9VU0VJQ09OSUQgZmxhZyBpcyBzZXQuICBDaGFuZ2VzIHRvIHRoZSBUYWIgY29udHJvbAoJdG8gb25seSByZW5kZXIgaWNvbnMgZm9yIHRhYnMgdGhhdCBoYXZlIHRoZSBUQ0lGX0lNQUdFIGZsYWcgc2V0CgkocHJldmlvdXNseSwgaWYgdGhlIGZsYWcgd2FzIHNldCB0aGUgZW50aXJlIGltYWdlIGxpc3Qgb2YgaWNvbnMgd2FzCglyZW5kZXJlZCkuCgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlcyBmb3Igc29tZSB0YWIgY29udHJvbCBidWdzCgoJSGVubmluZyBIb2ZmbWFubgoJRml4ZWQgc29tZSB3aWR0aCBwcm9ibGVtIHdpdGggT1dORVJEUkFXIHRhYi4KCglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJVENNX0FESlVTVFJFQ1QgaXMgbm93IHJldHVybmluZyBjb25zaXN0YW50IGNvbXBhcmUgdG8gV2luZG93cy4KCglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUZpeGVkIHByb2JsZW0gd2l0aCB0YWIgc2VsZWN0aW9uLiBXaGVuIHlvdSBzZWxlY3QgdGFiIGl0IGJlY2FtZXMgZmlyc3QKCXZpc2libGUgdGFiLiBOb3cgbGVmdG1vc3QgdmlzaWJsZSB0YWIgaXMgY2FsY3VsYXRlZCBwcm9wZXJseS4KCS0gQWRkZWQgY29kZSBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB1cGRvd24gY29udHJvbC4KCS0gRm9yY2VkIHJlY2FsY3VsYXRpb24gb2YgdGFicycgY29vcmRpbmF0ZXMgd2hlbjoKCWEpIGFsbCBpdGVtcyBhcmUgZGVsZXRlZCwKCWIpIHdpbmRvdyBzdHlsZSBpcyBjYW5nZWQKCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBuZWNlc3NhcnkgZGVmaW5lcyBhbmQgc3RydWN0dXJlcyB0byBjb21waWxlIFdpbmVMaWIgYXBwcyB1c2luZwoJTUZDIDYuMCBoZWFkZXJzLgoJRml4ZWQgdHlwbyBpbiBUQ01fU0VUTUlOVEFCV0lEVEggY29uc3RhbnQuCgoJKiBjb250cm9scy9idXR0b24uYzogQmlsbCBKaW4gPGJpbGxqQGNvcmVsLmNhPgoJQml0bWFwIGJ1dHRvbnMgd2VyZSBub3QgcmVmcmVzaGVkIGNvcnJlY3RseS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVRoaXMgcmV2ZXJ0cyBNYXR0cyBwYXRjaC4gIFRoZSBtZXNzYWdpbmcgbmVlZHMgZG91YmxlIGNoZWNraW5nLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy93MzJzY29tYi5jLCBtc2Rvcy9kcG1pLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvc2VsZWN0b3JzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL21haW4uYzoKCUltcHJvdmVkIHRoZSBzZWxlY3RvciBnZXQvc2V0IGZ1bmN0aW9ucy4KCVN1cHBvcnQgQU5TSS1jb21wYXRpYmxlIGlubGluZSBhc20gKHdpdGggdGhlIGhlbHAgb2YgUGF0cmlrIFN0cmlkdmFsbCkuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJTWFkZSB3aW5tbSBhIHNlcGFyYXRlIHNoYXJlZCBsaWJyYXJ5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgdG9vbHMvYmluMnJlcy5jLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9kaWIuYywgb2xlL29sZTJubHMuYywgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS93aW5nZGkuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBTb2xhcmlzIHNwZWNpZmljIGNvbXBpbGVyIGlzc3VlLgoKCSogZmlsZXMvZG9zX2ZzLmMsIHdpbjMyL2luaXQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGRlYnVnIG1lc3NhZ2UgY3Jhc2hlcy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBpbXBsZW1lbnQgRW51bU9iamVjdHMgYW5kIEdldFByb3BlcnR5IGZvciBNb3VzZSBhbmQgSm95c3RpY2sgZHJpdmVycwoJLSBpbXBsZW1lbnQgU2V0RGF0YUZvcm1hdCBmb3IgdGhlIE1vdXNlIGRyaXZlcgoKCSogZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbW1kZGsuaCwgd2luZG93cy9tZXNzYWdlLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIGhhcmR3YXJlIHJlbGF0ZWQgaGFuZGxpbmcgdG8gZGxscy93aW5tbS9qb3lzdGljayBkcml2ZXIuCglHb3QgcmlkIG9mIGpveVNlbmRNZXNzYWdlcygpIGhhY2sgKG5vdyBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgdGltZXIpLgoKMjAwMC0wMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvZGVidWdzdHIuYzoKCVJlbGVhc2UgdW51c2VkIHNwYWNlIGluIGRlYnVnIHN0cmluZ3MgdG8gYXZvaWQgdG9vIGZyZXF1ZW50Cgl3cmFwLWFyb3VuZHMgaW4gdGhlIGNpcmN1bGFyIGJ1ZmZlci4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW46IEFkZGVkIGltcG9ydCBvZiBvbGVwcm8zMi4KCgkqIHdpbmVkZWZhdWx0LnJlZzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBPTEUgZW50cmllcyBhbmQgY29tbWVudHMuCgoJKiBvbGUvbmxzL2pwbi5ubHM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglKYXBhbmVzZSBzdXBwb3J0IGltcGxlbWVudGVkLgoKCSogb2xlL29sZTJubHMuYzogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJU3R1YmJlZCBvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIExDTUFQX1NPUlRLRVkgaW4gTENNYXBTdHJpbmdXKCkgaW4KCW9yZGVyIHRvIGFsbG93IFdpbmRvd3MgOXggUGVybCB0byBzdGFydC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglUaGlzIHBhdGNoIGluaXRpYWxpemVzIHRoZSByZXR1cm4gYnVmZmVyIHVzZWQgaW4gR2V0UHJpbnRlckRyaXZlckEgdG8KCXplcm9zLiBUaGlzIHByZXZlbnRzIGJ1ZmZlciBvdmVycnVucyBjYXVzZWQgYnkgYWNjZXNzaW5nIGdhcmJhZ2UgZGF0YS4KCVNvbWUgaW1wcm92ZW1lbnRzIHRvIHRoZSBOVUxMIGNoZWNrIHBhdGNoLgoKCUdhdXRhbSBKYWluCglFbnVtUHJpbnRlcnMgaXMgbm90IHJldHVybmluZyB0aGUgbnVtYmVyIG9mIHByaW50ZXJzIGZvdW5kIGluIGNhc2UgdGhlCglwYXJhbWV0ZXIgZHdMZXZlbCBpcyAxLgoKCSogZGxscy9udGRsbC9yZWcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3Qgb3ZlcndyaXRlIHRoZSB2YWxpZCBPYmplY3RBdHRyaWJ1dGVzLT5Sb290RGlyZWN0b3J5LgoJUGVyZm9ybSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gZm9yIHRoZSByZWdpc3RyeSBwYXRocy4KCgkqIGluY2x1ZGUvbnRkZGsuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBwcm90b3R5cGVzIGZvciByZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5ubHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTW92ZSBkZWZpbml0aW9uIG9mIENQSU5GTyBzdHJ1Y3R1cmUgZnJvbSB3aW5iYXNlLmggdG8gd2lubmxzLmgKCUFkZCBkZWZpbml0aW9uIG9mIENQSU5GT0VYIHN0cnVjdHVyZSB0byB3aW5ubHMuaAoKCSogaW5jbHVkZS9jcnRkbGwuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgcHJvdG90eXBlIGZvciBDUlRETExfd2NzdG9sLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIHRvb2xiYXIgYnV0dG9uIHNpemUuCgoJKiBtaXNjL2xzdHIuYzogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIENoYXJOZXh0QS9DaGFyTmV4dEV4QSBmb3IgREJDUy4KCgkqIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIG1pc2MvY29tbS5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL3Nub29wLmMsIHRvb2xzL2J1aWxkLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGdyYXBoaWNzL2RkcmF3LmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAV1BJLkVEVT4KCU1pc2MuIGZpeGVzIGZvciBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZXJyb3IuaDoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIE9sZUNvbnZlcnQgcm91dGluZXMuCgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglEb24ndCBhbGxvdyB0byByZXNpemUgc3RyZWFtIG9wZW4gaW4gcmVhZCBvbmx5IG1vZGUKCUFsbG93IHdyaXRlIGFjY2VzcyBmb3Igc3RyZWFtL3N0b3JhZ2Ugb3BlbiB3aXRoIFNUR01fUkVBRFdSSVRFLgoJU3RnT3BlblN0b3JhZ2UgcmV0dXJuIHZhbHVlcyBhcmUgbm93IG1vcmUgZGV0YWlsZWQuCglEb24ndCByZWx5IG9uIFNUR01fQ1JFQVRFIGZsYWcgaW4gdGhlIFN0b3JhZ2UgY29uc3RydWN0b3IuCglQcmV2ZW50aW5nIHRvIHdyaXRlIG91dCBvZiBkYXRlIHByb3BlcnR5LgoKCU93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglBbGxvdyBib3RoIHBvc2l0aXZlICYgbmVnYXRpdmUgMzItYml0IGludGVnZXJzIGFzIHdpdGggTUZDIGFzc3VtcHRpb24uCglUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSAzMmJpdCBsaW1pdCBvbiBJU3RyZWFtOjoqX1NlZWsgb3BlcmF0aW9ucy4KCglKb2huIExpIDxqb2hubEBjb3JlbC5jYT4KCVdoZW4gV1Agb3BlbnMgYSBsaW5rZWQgZmlsZSwgdGhlIG1hbGxvYyBmdW5jdGlvbiBpbgoJT0xFQ09OVkVSVF9Mb2FkT0xFMTAoLi4uKSByZXR1cm5zIGEgTlVMTC4gVGhpcyBjYXVzZXMgYSBsYXRlciBXaW5lCgljcmFzaC4gVGhlIGFjdHVhbCBwcm9ibGVtIGlzIHRoZSBmdW5jdGlvbiByZWFkaW5nIGEgbGFyZ2UgZGF0YSBsZW5ndGguCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgc29tZSBsb2NhbCBmdW5jdGlvbnMgc3RhdGljLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIG9mIHRoZSBBUEkgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBnbG9iYWwgZmlsZSB0byB0aGUgbG9jYWwKCWZpbGVzLgoKCSogZGxscy9tb3VzZS9tb3VzZV9tYWluLmMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akBXUEkuRURVPgoJQmV0dGVyIHRocmVhZCBzYWZldHkgZm9yIFdhcnBQb2ludGVyIGhhY2suCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgQWRkQWNjZXNzQWxsb3dlZEFjZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTb21lIG1vcmUgTGlzdFZpZXdfIG1hY3Jvcywgd2luZWxpYiBmaXhlcy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGFsbG9jYXRpb24gb2YgMTZ4MTYgaWNvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZvciB1bmljb2RlOiBnaXZlIHRoZSBzZWxlY3RlZCBmaWxlbmFtZSBiYWNrLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hlY2sgZm9yIFhwbSBoZWFkZXJzIGFuZCBhZGQgL3Vzci9sb2NhbC9saWIgdG8gL2V0Yy9sZC5zby5jb25mIGlmCgluZWNlc3NhcnkuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJV2UgZG9uJ3QgbmVlZCB0byBjYWxsIExQdG9EUCBpbiBoZXJlIGFzIGZhciBhcyBQYXRCbHQgZG9lcyBpdCBpbnRlcm5hbGx5LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglJbiBXaW5kb3dzLCBpZiBQcm9wZXJ0eVNoZWV0IGNhbid0IGNyZWF0ZSBzb21lIHBhZ2UgaXQganVzdCBza2lwcyBpdC4gVGhpcwoJcGF0Y2ggYWRkcyBzaW1pbGFyIGJlaGF2aW91ciB0byBXaW5lLiBJdCBhbHNvIGFkZHMgc29tZSBOVUxMIGNoZWNrcy4KCgk8eXV4aUBjb3JlbC5jb20+CglGaXggcHJvcGVydHkgc2hlZXQgaW5pdGlhbGl6YXRpb24gYnVncy4KCglNYXR0aGV3IFJvYmVydHNvbgoJVGhlIHRlbXBsYXRlIHdhcyBjYWxsaW5nIEdldEFjdGl2ZUluZGV4IHdoaWNoIHdhcyBub3QgYmVpbmcgc2V0IGluIHRoZQoJcHJvcHNoZWV0IGNvZGUsIGFuZCB0aGUgY2FsbCB3YXMgbW92ZWQgYmVmb3JlIHdlIGNhbGwgU2V0QWN0aXZlIC0KCWJlY2F1c2UgdGhhdCdzIHdoZXJlIHdlIHF1ZXJ5IGZvciB0aGUgQWN0aXZlIEluZGV4LgoKCU5vb21lbiBIYW16YQoJUmVzaXplIHByb3BlcnR5IHNoZWV0IHRvIHRoZSBsYXJnZXN0IGRpYWxvZyBzaXplLgoKCURvbiBLZWxseQoJSW4gdGhlIFdNX0lOSVRESUFMT0cgaGFuZGxlciBmb3IgdGhlIHByb3Agc2hlZXQsIHRoZXJlIGlzIGEgY2FsbCB0bwoJUFJPUFNIRUVUX0lzVG9vU21hbGwoKSB3aGljaCwgaWYgaXQgcmV0dXJucyBUUlVFLCBjYWxscwoJUFJPUFNIRUVUX0FkanVzdFNpemUoKS4gIENvbnRyYXJ5IHRvIGl0cyBjb21tZW50LCAuLl9BZGp1c3RTaXplKCkgYWN0dWFsbHkKCWFsaWducyB0aGUgc2l6ZXMgb2YgdGhlICJsYXJnZXN0IiBwcm9wLiBzaGVldCBkaWFsb2cgdGVtcGxhdGUgYW5kIHRoZSB0YWIKCWNvbnRyb2wuICBUaGUgSXNUb29TbWFsbCgpIGNhbGwgZG9lc24ndCBwcm9wZXJseSBjYXRjaCB0aGlzIG1pc21hdGNoLgoJTW9kaWZpZWQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBUUlVFIGlmIHRoZSBzaXplcyBtaXNtYXRjaCBhbmQgcmVuYW1lZCBpdCB0bwoJUFJPUFNIRUVUX1NpemVNaXNtYXRjaCgpIHRvIHJlZmxlY3QgaXRzIHByb3BlciB1c2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdlIGRlZmluZSBQYXRoSVNVUkxBLCBzbyB1c2UgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUluIGZ1bmN0aW9uIElNQUdFTElTVF9JbnRlcm5hbERyYXdNYXNrIHdlIGhhdmUgdG8gbWFzayBvdXQgb3ZlcmxheSBtYXNrIGluCglmU3R5bGUuIE90aGVyd2lzZSBjb21wYXJpc29uIGZTdHlsZSA9PSBJTERfTk9STUFMIHdpbGwgbm90IHdvcmssIHdoaWNoIGxlYWRzCgl0byBpbXByb3BlciBkaXNwbGF5IG9mIG92ZXJsYXkgaW1hZ2VzLgoKCSogd2luZG93cy93aW4uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQVRPTXMgYXJlIGNvbnNpZGVyZWQgdW5pcXVlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGNsYXNzCglwb2ludGVycyBpbiBGaW5kV2luZG93LgoKCSogb2JqZWN0cy9yZWdpb24uYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJTm90IGFsbCByZWdpb24gZnVuY3Rpb25zIHVwZGF0ZWQgJ3R5cGUnIGZpZWxkIHRvIHJlZmxlY3QgY3VycmVudAoJcmVnaW9uIHN0YXRlLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJRXJpYyBXaWxsaWFtcyA8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglNaW5vciBmaXh1cHMgYW5kIHR3ZWFraW5nLCBhbmQgYSBkdW1teSBob29rLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBoYW5kbGluZyBvZiBmaWxlZGxnIGZsYWdzLgoKMjAwMC0wMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgRklYTUUgY29tbWVudCBmb3IgZW50cnkgcG9pbnQgcGFyYW1ldGVyLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBzdHViIGZvciBPTEUzMi5Na1BhcnNlRGlzcGxheU5hbWUKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvd2luLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gZml4ZWQgbXkgc2xpZ2h0bHkgaW5jb3JyZWN0IEVuZERpYWxvZyBwYXRjaAoJLSBjbGVhbmVkIHVwIHdpbi5jCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9jb21jdGwzMi90YWIuYywgd2luZG93cy93aW5wcm9jLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHRoZSBidWZmZXIgbGlzdCBpbiB0aGUgZGlyZWN0c291bmQgb2JqZWN0IHRocmVhZC1zYWZlLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUl0IHNlZW1zIHRvIGJlIEdldE1vZHVsZUZpbGVOYW1lMTYgdGhhdCBjaGVja3MgZXhlIHZlcnNpb24gb24gd2hldGhlcgoJdG8gcmV0dXJuIGxvbmcgb3Igc2hvcnQgcGF0aHMsIG5vdCBHZXRNb2R1bGVGaWxlTmFtZUEuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkIHRvbyBtdWNoIHJlZnJlc2hpbmcgd2hlbiBjaGFuZ2luZyB0aGUgZHJpdmUgaW4gdGhlIDE2IGJpdHMgZmlsZQoJZGlhbG9nLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldHIgVG9tYXNlayA8dG9tYXNla0BldGYuY3VuaS5jej4KCUdldExvbmdQYXRoTmFtZSByZXdyaXRlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmM6CglDb3JlbCBtZXJnZToKCglQaWVycmUgTWFnZWF1CglEb24ndCB1cGRhdGUgdGhlIGNvbWJvIGJveCBzZWxlY3Rpb24gd2hlbiBjbG9zaW5nIHRoZSBkaWFsb2cgb25seSB3aGVuCgljbGlja2luZyBvbiBPSyBidXR0b24uICBBZGp1c3QgZmlsZSBkaWFsb2cgc2l6ZSB3aGVuIGhlbHAgYnV0dG9uIGlzbid0CglwcmVzZW50LgoKCURvbiBLZWxseS4KCUZpeGVzIHByb2JsZW1zIHdpdGggb3BlbiBkaWFsb2cgYm94IGZpbHRlcnMuCgoJVWxyaWNoIEN6ZWthbGxhCglQcmV2ZW50cyB0aGUgaGVscCBidXR0b24gZnJvbSBkaXNwbGF5aW5nIG9uIE9wZW5GaWxlIGRpYWxvZ3MgdW5sZXNzCgl0aGUgcHJvcGVyIGZsYWcgaXMgc2V0IGluIHRoZSBPUEVORklMRU5BTUUgc3RydWN0LgoKCVl1eGkgWmhhbmcKCUZpeGVkIG1lbW9yeSBsZWFrLgoKCUplYW4tQ2xhdWRlIEJhdGlzdGEKCUFkZCB0b29sdGlwcyB0byB0aGUgZmlsZSBEaWFsb2cgdG9vbGJhci4KCglTeWx2YWluIEJvdWNoYXJkLCBCaWxsIEppbgoJVGhyZWUgbmV3IGZ1bmN0aW9ucwoJRW51bVNlbGVjdGVkUGlkbHMsIEdldE51bVNlbGVjdGVkLCBGSUxFRExHOTVfT25PcGVuVXNpbmdWaWV3OiBjb3JyZWN0aW9ucwoJSW5zdGVhZCBvZiBwYXNzaW5nIGluIGEgY29weSBvZiBvZm4sIHBhc3NpbmcgaW4gdGhlIHBvaW50ZXIgb2Ygb2ZuLgoKCURhdmlkIEdvbGRpbmcKCUEgIiEiIHdhcyBtaXNzaW5nIGluIGEgY2hlY2sgYWdhaW5zdCBscHN0ckluaXRpYWxEaXIuCgoJUmljayBNdXR6a2UKCUZpeGVkIGNyYXNoOiBpZiBkaWFsb2cgaGFzIG5vIGZpbGV0eXBlcyBhcHBlYXJpbmcgaW4gdGhlIGRyb3Bkb3duIGxpc3QuCgoJTWF0dCBSb2JlcnRzb24sIFVscmljaCBDemVrYWxsYQoJRml4ZWQgcHJvYmxlbXMgb2NjdXJyaW5nIHdpdGggc2VsZWN0aW9uIG9mIGZpbGVzIGluc2lkZSBvcGVuZmlsZWRsZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBhY3RpdmF0ZWQgdXNlIG9mIHRlbXBsYXRlcwoJLSBtb3ZlZCB0aGUgY3JlYXRpbmcgb2YgbmV3IGZvbGRlcnMgdG8gdGhlIHNoZWxsdmlldwoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0YXJ0ZWQgd2l0aCBzaGVsbC1jbGlwYm9hcmQgaGFuZGxpbmcgKGNvbnRleHQgbWVudSBjdXQmcGFzdGUsCglkcmFnJmRyb3ApLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUmVtb3ZlZCBJdGVtSURMaXN0TGlzdCwgcmVvcmdhbmlzYXRpb24sIG1vcmUgZm9ybWF0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbXBsZW1lbnRlZCByZW5hbWUsIGNvcHkgYW5kIGRlbGV0ZSBmaWxlCgktICJuZXcgZmlsZSIgaXMgYWN0aXZhdGluZyBsYWJlbCBlZGl0IGZvciByZW5hbWUKCS0gaW1wbGVtZW50ZWQgSVNoZWxsVmlld19TZWxlY3RJdGVtCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciBjb250ZXh0IG1lbnVzLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBmaWxlcyByZWxhdGVkIHRvIGNvbnRleHQgbWVudSBhbmQgZHJhZyBkcm9wIGZpbGUgb3BlcmF0aW9ucwoJLSByZW5kZXIgZnVuY3Rpb25zIGZvciBjbGlwYm9hcmRmb3JtYXRzCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBTdGVwaGFuZSBMdXNzaWVyCglJbXBsZW1lbnRlZCBQYXRoSXNVUkxBIGFuZCBtb2RpZmllZCBTaGVsbEV4ZWN1dGUxNiB0byBiZSBhYmxlIHRvIGxvYWQgVVJMCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBzaGVsbCBub3RpZmljYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgZmlsZSAoU0hGaWxlT3BlcmF0aW9uKS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBpbnRlcm5hbCBpbnRlcmZhY2UgZm9yIGl0ZW0gbWFuaXB1bGF0aW9uIChjdXQvcGFzdGUvbmV3IGZvbGRlci9kZWxldGUvcmVuYW1lKQoJLSBpbXBsZW1lbnRlZCBJUGVyc2lzdEZvbGRlcjIgaW50ZXJmYWNlCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgYVBpZGwgaGFuZGxpbmcgZnVuY3Rpb25zLgoKCSogbWlzYy9tYWluLmM6IEF2b2lkIGNyYXNoIG9uIHVzYWdlIG1lc3NhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEF2b2lkIGNyYXNoIG9uIE5VTEwgZGF0YSBwb2ludGVyLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzdHViIGZvciBSdGxBc3NlcnQoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgSmFwYW5lc2UganAxMDYgYW5kIHBjOTh4MSBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgUFJPRklMRV8gZnVuY3Rpb25zLCBub3cgYWNjZXNzaW5nIFdpbmUgY29uZmlnIG9wdGlvbnMKCXRocm91Z2ggdGhlIHJlZ2lzdHJ5LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdoaWxlIGNyZWF0aW5nIHRoZSB3aW5lIGNvbmZpZyBrZXksIG1ha2Ugc3VyZSB0aGF0IG9ubHkgV2luZSdzIHN1YmtleXMKCWFyZSB2b2xhdGlsZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIHB0ciBpbiBQU0RSVl9HZXREZXZpY2VDYXBhYmlsaXRpZXMuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYSBiaXQgbWFnaWMgdG8gQ09OU09MRV9nZXRfaW5wdXQgc28gd2UgZG9uJ3QgZ2V0IHNpbmdsZSBFc2NhcGVzCglmcm9tIGZ1bmN0aW9uIGtleSBlc2NhcGUgc2VxdWVuY2VzLgoKMjAwMC0wMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9hdG9tLmM6IEJ1ZyBmaXggZm9yIG5hdGl2ZSBVU0VSLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCB3aW5lLmluaToKCUhhcmQtY29kZWQgRGxsUGFpcnMgY29uZmlndXJhdGlvbjsgdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlIHVzZXIgdG8KCWNoYW5nZSBpdC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2MvdmVyc2lvbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBmaWxlcy9wcm9maWxlLmM6CglTdG9yZSBjb25maWcgZmlsZSBjb250ZW50cyBpbiB0aGUgcmVnaXN0cnkgc28gd2Ugb25seSBoYXZlIHRvIGxvYWQgaXQKCW9uY2UgcGVyIHNlc3Npb24uCglSZXBsYWNlZCBQUk9GSUxFX0VudW1lcmF0ZVdpbmVJbmlTZWN0aW9uIGJ5IFBST0ZJTEVfRW51bVdpbmVJbmlTdHJpbmcuCglSZW1vdmVkIGEgZmV3IHVubmVjZXNzYXJ5L3VudXNlZCBjb21tYW5kLWxpbmUgb3B0aW9ucy4KCjIwMDAtMDItMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmg6CglTdG9yZSB0aGUgaGFuZGxlIG9mIHRoZSBwcm9jZXNzIGV4ZSBmaWxlIGluIHRoZSBzZXJ2ZXIuCglSZW1vdmVkIFBST0NFU1NfSW5pdGlhbCgpLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE93ZW4gV2FuZyA8b3dlbndAY29yZWwuY29tPgoJU2V0IHRoZSB0eXBlIG9mIFZhckJzdHJGcm9tRGF0ZSB0byBkd0ZsYWdzLCBpbnN0ZWFkIG9mIGxjaWQuCgoJVWxyaWNoIEN6ZWthbGxhICA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIHRoZSBwcm9ibGVtIHdpdGggdGhlIGRhdGUgYmVpbmcgb2ZmIGJ5IG9uZS4KCglQZXRhciBEanVraWMKCVZhcmlhbnRDb3B5IHdhcyBpZ25vcmluZyBWVF9ESVNQQVRDSCxWVF9VTktOT1dOLCBhbmQgVlRfVkFSSUFOVC4gU2FtZQoJd2l0aCBWYXJpYW50Q2xlYXIuCglDb2VyY2UgZnVuY3Rpb24gZG9lc24ndCBpbXBsZW1lbnQgY29lcmNpb24gZm9yIFZUX0RJU1BBVENIIHR5cGUuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3VzZXIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQvY29ycmVjdGVkIG9yZGluYWxzIG9mIGtlcm5lbCwgZ2RpLCB1c2VyLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglQb3B1cCB3aW5kb3dzIHdpbGwgYmUgaGlkZGVuIHdoZW4gbWluaW1pemluZyB0aGUgbWFpbiBmcmFtZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ2hhbmdlZCB0aGUgbG9hZGluZyBvZiB0eXBlbGliIGZpbGVzIHRvIHVzZSBhIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQKCW9mIHJlYWRpbmcgdGhlIGZpbGUgYml0IGJ5IGJpdC4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRFJJVkVfRmluZERyaXZlUm9vdCgpIGFsd2F5cyBjaGVja2VkIGZyb20gZHJpdmUgQTogdG8gWjogZm9yIGVhY2gKCXBhdGggY29tcG9uZW50IGV2ZW4gaWYgYSBtYXRjaCBhbHJlYWR5IG9jY3VycmVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHByb3RvdHlwZSBmb3IgT2xlVHJhbnNsYXRlQ29sb3IuCgoJKiBmaWxlcy9maWxlLmM6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQWRkZWQgV0FSTiBtZXNzYWdlcyBvbiBvcGVuIGVycm9ycy4KCgkqIG1pc2Mvd3NwcmludGYuYzogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGJ1ZmZlciBpcyAxMDI0IGJ5dGVzIGluIFdpbjMyLgoKMjAwMC0wMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc25vb3AuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvcmVnaW9uLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2RkZW1sLmMsIG1pc2MvdG9vbGhlbHAuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9kcml2ZXIuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZmlsZXMvZG9zX2ZzLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1vdmVkIFN5c3RlbUhlYXAgYWxsb2NhdGlvbnMgdG8gdGhlIHByb2Nlc3MgaGVhcC4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG8gbm90IHVzZSBHbG9iYWxGaW5kQXRvbSB3aXRoIGF0b20gaGFuZGxlcyBpbiBDcmVhdGVXaW5kb3cqIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVNlbmQgV01fSEVMUCBtZXNzYWdlIHdoZW4gRjEgaXMgcHJlc3NlZC4KCgkqIG9sZS9ubHMvYnJmLm5scywgb2xlL25scy9jb3IubmxzLCBvbGUvbmxzL2N5bS5ubHMsIG9sZS9ubHMvZ2FlLm5scywgb2xlL25scy9nZGgubmxzLCBvbGUvbmxzL2dkdi5ubHMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3dpbm5scy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUFsYXN0YWlyIE1jS2luc3RyeSA8QWxhc3RhaXIuTWNLaW5zdHJ5QGRpZ2l0YWwuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBjZWx0aWMgbGFuZ3VhZ2VzOiBJcmlzaCBHYWVsaWMsIFNjb3RzCglHYWVsaWMsIE1hbnggR2FlbGljLCBCcmV0b24sIFdlbHNoLCBDb3JuaXNoLgoKMjAwMC0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIHN0dWIgZm9yIENvUmVzdW1lQ2xhc3NPYmplY3RzLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgYXJndW1lbnQgcHJpbnRpbmcgdG8gc3R1YnMKCS0gcmVwbGFjZWQgbWVtY21wIGJ5IElzRXF1YWxHVUlECgktIGltcGxlbWVudGVkIEdldENhcGFiaWxpdGllcyBmb3IgTW91c2UgYW5kIEtleWJvYXJkCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJaW9jdGxzb2NrZXQoKSBub3cgcmV0dXJucyBzdWNjZXNzIGlmIHRoZSBhcHAgc2V0cyBub25ibG9ja2luZyBtb2RlIGZvcgoJV1NBQXN5bmNTZWxlY3QoKS1lZCBzb2NrZXRzLgoKCSogZGxscy9jcnRkbGwvd2NzdHJpbmcuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBGcmVlQlNEIGNvbXBpbGUuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gZml4ZWQgY3Jhc2ggb24gbWNpIGNoYW5uZWwgdHJhY2luZwoJLSBmaXhlZCAxNiB0byAzMiBiaXQgdHJhbnNsYXRpb24gZm9yIE1DSV9CUkVBSyBhbmQgTUNJX1NZU0lORk8gbWVzc2FnZXMKCjIwMDAtMDItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTW92ZWQgQ0xJUFBJTkdfVXBkYXRlR0NDbGlwcGluZyBjYWxsIG91dHNpZGUgb2YgdGhlIFgxMSBzZWN0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglBZGRlZCBkZWZpbml0aW9uIGZvciBTVElMTF9BQ1RJVkUuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL2NsaWVudC5jOgoJSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciB0aGUgdW5peCBkb21haW4gc29ja2FkZHIgbGVuZ3RoLgoKCSogbWlzYy9jZHJvbS5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXhlZCBDRFJPTV9BdWRpb19TZWVrIGZvciBub24tbGludXggc3lzdGVtcy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmMsIGluY2x1ZGUvZ2RpLmg6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJR2V0T2JqZWN0QSgpIG5vdyByZWplY3RzIEdESSBoYW5kbGVzIHdoaWNoIGFyZSBpbnZhbGlkLgoKCSogbWlzYy92ZXJzaW9uLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCVZFUlNJT05fR2V0U3lzdGVtRExMVmVyc2lvbiBjcmFzaGVkIHdoZW4gYmVpbmcgY2FsbGVkIG9uIGEgLnNvLgoKCSogd2luZG93cy9kZWZ3bmQuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURpc3BsYXkgdGhlIHN5c3RlbSBwb3B1cCBtZW51IHdoZW4gY2xpY2tpbmcgd2l0aCB0aGUgcmlnaHQgbW91c2UKCWJ1dHRvbiBpbiB0aGUgd2luZG93IGNhcHRpb24uCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jOiBSZW1vdmVkIGNoZWNrIGZvciBjbGFzcyBleGlzdGVuY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgc3VwZXJmbHVvdXMgR2xvYmFsRmluZEF0b20gY2FsbHMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUmVhZGluZyBvZiByaSBibG9ja3MuCglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL21kaS5jOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUNoZWNrIHRoYXQgY2ktPmhXaW5kb3dNZW51IGlzIG5vdCB6ZXJvIGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglEYXZpZCBIb3dlbGxzIDxEYXZpZC5Ib3dlbGxzQG5leG9yLmNvLnVrPgoJSW1wbGVtZW50ZWQgaXN3KigpIHdjdHlwZS5oIGZ1bmN0aW9ucy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IuCgoJKiBtZW1vcnkvYXRvbS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hdG9tLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglNb3ZlZCBnbG9iYWwgYXRvbXMgdG8gdGhlIHNlcnZlciAoYmFzZWQgb24gdGhlIHdvcmsgb2YgU2VyZ2VpCglUdXJjaGFub3YgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PikuCgoyMDAwLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5nZGkuaDogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglBZGRlZCBhIFBURVhUTUVUUklDW0F8V10gZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQWRkZWQgdHlwZWRlZnMgZm9yIFBTSE9SVCBhbmQgUFVTSE9SVC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUHJvdGVjdCBFbmREaWFsb2coKSBmcm9tIGludmFsaWQgd2luZG93IGhhbmRsZXMuCgoJKiBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVwbGFjZWQgZnByaW50ZnMgYnkgcHJvcGVyIGRlYnVnIG1hY3JvcyBhbmQgZml4ZWQgc29tZSBjb21waWxhdGlvbiB3YXJuaW5ncy4KCjIwMDAtMDItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RkcmF3Lmg6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgR1VJRHMsIGRlZmluZXMsIGFuZCBzdHJ1Y3R1cmVzIGZvciBEaXJlY3RYNy4KCgkqIGRsbHMvd2lubW0vd2lubW1fUnUucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJT2xlZyBLb3JkYSA8b2xlZ0Bpc3AubnNjLnJ1PgoJQWRkZWQgUnVzc2lhbiB0cmFuc2xhdGlvbi4KCgkqIHdpbmRvd3MvY2xhc3MuYzogUGhpbGxpcCBFem9sdCA8ZXpvbHRAcGVyZi56a28uZGVjLmNvbT4KCUFkZGVkIG1pc3NpbmcgZ290byBpbiBzd2l0Y2ggc3RhdGVtZW50LgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5pdGlhbGl6ZSB0aGUgTk9OQ0xJRU5UTUVUUklDUyB3aXRoIDAgKGhlbHBzIG1vb3JodWhuLmV4ZSkuCgoJKiB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2FmbS5jLCBncmFwaGljcy9wc2Rydi9wcGQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sZHQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbWlzYy9kZWJ1Z3N0ci5jLCBtaXNjL2Vycm9yLmMsIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50M2QuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvaW50NGIuYywgbXNkb3MvaW9wb3J0cy5jLCByZWxheTMyL3Nub29wLmMsIHRvb2xzL21ha2VfZGVidWcsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9kZHJhdy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCU9wdGltaXplZCBkZWJ1Z2dpbmcgQVBJIHRvIHJlZHVjZSBjb2RlIHNpemUuCgoJKiBsaWJyYXJ5L3dpbmVzdHViLmMsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgb2JqZWN0cy9saW5lZGRhLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBncmFwaGljcy9jYWNoZS5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCVJlbW92ZWQgZXh0cmEgaW5jbHVkZXMgZnJvbSBvbGUuaCBhbmQgd2luZ2RpLmguCgoJKiAqLyo6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkICNpbmNsdWRlIG9mIHdpbmdkaS5oIGFuZCB3aW5kZWYuaCBmcm9tIHdpbnVzZXIuaCAoYW5kIHJlc29sdmVkCgl0aGUgcmVzdWx0aW5nIGNvbXBpbGF0aW9uIGZhaWx1cmVzKS4KCjIwMDAtMDItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCU1ha2UgQ0xTSURGcm9tU3RyaW5nIHJldHVybiBhIENMU0lEIG9mIHplcm9zIGluc3RlYWQgb2YgY3Jhc2hpbmcgd2hlbgoJcGFzc2VkIGEgbnVsbCBwb2ludGVyLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHVuY29uZGl0aW9uYWwgdXNlIG9mIEpPWURFVi4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmRvd3N4LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbF9jYXJkZW5hc0BkZW5lYmEuY29tPgoJQWRkZWQgYSBidW5jaCBvZiBtYWNyb3MgbmVlZGVkIGZvciBjb21waWxpbmcgV2luZWxpYiBhcHBzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIExpc3RWaWV3X0VkaXRMYWJlbCBtYWNyb3MuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ2hhbmdlZCBpbXBvcnQgdG8gb3JkaW5hbC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgSVBlcnNpc3RGb2xkZXIyIGludGVyZmFjZS4KCgkqIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5zcGVjLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gaW1wbGVtZW50ZWQgc2VyaWFsIG51bWJlcnMgZm9yIGF1ZGlvIENEcyBhbmQgZGF0YSBDRHMKCS0gYmlnIGNsZWFuIHVwIG9mIG1pc2MvY2Ryb20uYyBhbmQgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMgZnVuY3Rpb24KCSAgbmFtaW5nIGFuZCBzdWNoCgktIHNwbGl0IGRlYnVnIGNoYW5uZWwgY2RhdWRpbyBpbnRvIGNkcm9tIGFuZCBtY2ljZGEKCS0gZml4ZWQgc29tZSB0eXBvcwoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGluY2x1ZGUvb2xlY3RsLmg6CglTZWFuIExhbmdsZXkgPHNlYW5sQGNvcmVsLmNhPgoJTWFkZSBPbGVDcmVhdGVGb250SW5kaXJlY3QgaGF2ZSB0aGUgc2FtZSBzaWduYXR1cmUgKGV4YWN0bHkpIGFzIHRoZQoJaGVhZGVyIGZpbGUuIEFkZGVkIG9sZXBybzMyIGRsbCBzdHVicy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvUkVBRE1FLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jOgoJU2VhbiBMYW5nbGV5IDxzZWFubEBjb3JlbC5jYT4KCU9MRVBSTzMyIHN0dWJzLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBDRl9IRFJPUC4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYzogV29sZmdhbmcgU2Nod290emVyIDx3b3NjaHdvdEBnbXgubmV0PgoJRXh0ZW5kZWQgdGhlIHdpbm1tIGpveXN0aWNrIEFQSSBjYWxscyB0byBzdXBwb3J0IHRoZSBuZXcgTGludXgKCWpveXN0aWNrIGRyaXZlci4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJQWRkZWQgY29udGV4dCBmdW5jdGlvbnMgZm9yIEZyZWVCU0QuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOiBTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBmb3IgdGhlIHN5c3RlbSB0cmF5LCBJY29uIGFuZCBwb3B1cCBtZW51J3Mgbm93IHdvcmsuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSB3aW5kb3cgcHJvcGVydGllcyBpbnN0ZWFkIG9mIHdpbmRvdyBsb25nLCBhbHNvIHVzZSB0aGVtIHRvCglkZXRlcm1pbmUgaWYgd2UgcmVhbGx5IG93biBhIHdpbmRvdyBhbmQgY2FuIGRlc3Ryb3kgaXQuCglUaGUgcGl4ZWxmb3JtYXQgZm9yIDI1NiBjb2xvcnMgaGFzIFBBTEVUVEV8UkdCIGZsYWdzIChUb21iIFJhaWRlciAyKQoJU2V0IHBhaW50YWJsZSBmbGFnIGZvciBhcHBsaWNhdGlvbiBwYXNzZWQgY29vcGVyYXRpdmUvZHJhd2luZyB3aW5kb3cuCglHZXREaXNwbGF5TW9kZTogV2UgbWlnaHQgaGF2ZSBhbmQgZG8gc3VwcG9ydCAyIGJhY2tidWZmZXJzLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUnVubmluZyBvYmplY3QgdGFibGUgYXJlIG5vdCB1c2luZyAwIGFzIGEgdmFsaWQgaW5kZXggYW55bW9yZS4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgU3RhdGljIE93bmVyRHJhdy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGVpZ2h0IGNhbGN1bGF0aW9uIHdhcyAxIG9mZiBpbiBJbWFnZUxpc3RfUmVhZC4KCjIwMDAtMDItMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy92aWV3L2luaXQuYywgcHJvZ3JhbXMvdmlldy92aWV3LmMsIHRvb2xzL3dyYy93cmMuYywgd2luZG93cy9tZGkuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJUmVtb3ZlZCByZXNvdXJjZS5oLgoKCSogcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LnNwZWMsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHByb2dyYW1zL3dpbnZlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci93aW52ZXIuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uc3BlYywgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9jb250cm9sLy5jdnNpZ25vcmUsIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywgcHJvZ3JhbXMvcmVnYXBpLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5zcGVjLCBwcm9ncmFtcy9yZWd0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9leHBhbmQuc3BlYywgbGlidGVzdC9oZWxsby5zcGVjLCBsaWJ0ZXN0L2hlbGxvMi5zcGVjLCBsaWJ0ZXN0L2hlbGxvMy5zcGVjLCBsaWJ0ZXN0L2hlbGxvNC5zcGVjLCBsaWJ0ZXN0L2hlbGxvNS5zcGVjLCBsaWJ0ZXN0L25ldy5zcGVjLCBsaWJ0ZXN0L3JvbGV4LnNwZWMsIGxpYnRlc3QvdmFydGVzdC5zcGVjLCBsaWJ0ZXN0L3ZvbGluZm8uc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgLnNwZWMgZmlsZXMgZm9yIGFsbCBsaWJ0ZXN0LyBhbmQgcHJvZ3JhbXMvIFdpbmVMaWIgYXBwcy4KCVVwZGF0ZWQgYWxsIE1ha2VmaWxlcyB0byB1c2UgLnNwZWMgZmlsZXMgYW5kIG5ldyByZXNvdXJjZSBoYW5kbGluZy4KCgkqIGxvYWRlci9saWJyZXMuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZXNvdXJjZXMvc3lzcmVzLmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGluY2x1ZGUvbGlicmVzLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9yZXNvdXJjZS5oLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgLnNwZWMga2V5d29yZCAnbW9kZScgdG8gYWxsb3cgY3JlYXRpbmcgYnVpbHQtaW4gRVhFIG1vZHVsZXMuCglVc2UgYnVpbHQtaW4gRVhFIG1vZHVsZXMgZm9yIFdpbmVMaWIgYXBwcyAoaW5zdGVhZCBvZiBFTEYgbW9kdWxlcykuCglSZW1vdmVkIGR1bW15IEVMRiBtb2R1bGUgY3JlYXRpb24uCglSZW1vdmVkIExJQlJFUyBoYW5kbGluZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBtZW1vcnkgb3ZlcndyaXRlIGJ1Zy4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgZGVmaW5pdGlvbnMgc3VjaCBhcyBCT09MMTYgYW5kIElOVDE2IGZyb20gd2luZGVmLmggaW50bwoJd2luZS93aW5kZWYxNi5oLgoKCSogb2xlL29sZTJubHMuYzogSnVsaW8gQ+lzYXIgR+F6cXVleiA8amdhenF1ZXpAZGxkLm5ldD4KCUdldE51bWJlckZvcm1hdEEgaW1wbGVtZW50YXRpb24gYWRkZWQuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTYXZlIGFuZCByZXN0b3JlIGN1cnNvciBpbiBXcml0ZUNvbnNvbGVPdXRwdXRBLgoKCSogaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmgsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gSW1wbGVtZW50YXRpb24gb2YgV01fU0VURk9STUFUCgktIFJld29ya2VkIGRyYXdpbmcvc2VsZWN0aW9uCgktIEltcGxlbWVudGF0aW9uIG9mIFdNX0tFWURPV04KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxNi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBJTlRfSW50MTZSZWFkQ2hhciBhbmQgbWFkZSBpbnQwOSBoYW5kbGUgc3BlY2lhbCBrZXlzLgoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYWxwaGFudW1lcmljIG1vZGUgdG8gdGhlIFZHQSBlbXVsYXRpb24uCglVc2Ugc2VydmljZSB0aHJlYWQgZm9yIHRoZSBwZXJpb2RpYyByZWZyZXNoLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhbnVwIFZHQSByZWZyZXNoIHdoZW4gdGVybWluYXRpbmcuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIGJhY2tzcGFjZSBjb3JyZWN0bHkuCgoyMDAwLTAxLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBNYWtlLnJ1bGVzLmluLCAqL01ha2VmaWxlLmluOgoJQnVpbGQgbW9zdCBkbGxzIGFzIHNlcGFyYXRlIHNoYXJlZCBsaWJyYXJpZXMuCgoyMDAwLTAxLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIGNvbmZpZ3VyZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzeXMvcmVnLmguCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2ltYWdlbGlzdC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPdmVybGF5IGluZGljZXMgYXJlIHNpZ25lZCBzaG9ydHMgKC0xIG1lYW5zIG5vIG92ZXJsYXkpCgkoSW1hZ2VMaXN0X1NldE92ZXJsYXlJbmRleCkgc2hvdWxkIGFjY2VwdCAtMSBhcyBvdmVybGF5aW5kZXguCgkoSW1hZ2VMaXN0X1JlYWQpIFdlIGNhbiByZWFkIGEgTnhNIGJpdG1hcCBmcm9tIHRoZSBzdHJlYW0gYW5kIGhhdmUKCXRvIGNvbnZlcnQgaXQgaW50byBhIDF4KE0qTikgYml0bWFwLCBzZXQgY0N1ckltYWdlLGNNYXhJbWFnZS4gQWRkZWQKCWRvY3VtZW50YXRpb24uCgkob3RoZXJzKSByZW1vdmVkIHNvbWUgcG90ZW50aWFsIG9wZXJhdG9yIHByZWNlbmRlbmNlIHByb2JsZW1zLgoKCSogb2JqZWN0cy9kYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldERldmljZUNhcHM6IHNwb3QgeWV0IHVuc3VwcG9ydGVkIGFjY2Vzc2VzIHRvIHRoZSBEZXZpY2VDYXBzIHN0cnVjdC4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbWlzY2VtdS9tYWluLmMsIHdpbjMyL2V4Y2VwdC5jLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4dGVybmFsLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS90aHJlYWQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgZGVidWdnZXIgdG8gbGlid2luZSB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byBXaW5lTGliIGFwcHMuCglUcnkgdG8gaW52b2tlIGV4dGVybmFsIGRlYnVnZ2VyIGlmIGludGVybmFsIGRlYnVnZ2VyIGNyYXNoZXMuCglUcnkgdG8gaGFuZGxlIGVhcmx5IGludm9jYXRpb24gb2YgZGVidWdnZXIgbW9yZSBncmFjZWZ1bGx5LgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYXJrIGluaXRpYWwgcHJvY2VzcyBhcyAzMi1iaXQgZm9yIFdpbmVMaWIgYXBwcy4KCVVzZSB0ZWItPnRpYmZsYWdzIGluc3RlYWQgb2YgdGViLT5mbGFncyAoZm9yIFdpbjk1IFVTRVIzMiBjb21wYXRpYmlsaXR5KS4KCVJlbW92ZWQgdW51c2VkIHRocmVhZCBldmVudC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIFdpbmRvd3Mgc2tpcHMgdGhlICdcdCcgYW5kICcgJyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2Ygc2VjdGlvbgoJICBrZXkgbmFtZXMgb2YgLklOSSBmaWxlcy4KCS0gRml4ZWQgR2V0L1dyaXRlUHJpdmF0ZVByb2ZpbGVTdHJ1Y3RBKCk6CgkgIC0gKHJlLSl0cmFuc2xhdGUgdGhlIGJpbmFyeSBkYXRhIGludG8gQVNDSUkgaGV4IGNoYXJzCgkgIC0gYWRkIGNoZWNrc3VtIC8gY2hlY2tpbmcgb2YgaXQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBjb25maWd1cmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3lzL3JlZy5oLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9pbWFnZWxpc3QuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3ZlcmxheSBpbmRpY2VzIGFyZSBzaWduZWQgc2hvcnRzICgtMSBtZWFucyBubyBvdmVybGF5KQoJKEltYWdlTGlzdF9TZXRPdmVybGF5SW5kZXgpIHNob3VsZCBhY2NlcHQgLTEgYXMgb3ZlcmxheWluZGV4LgoJKEltYWdlTGlzdF9SZWFkKSBXZSBjYW4gcmVhZCBhIE54TSBiaXRtYXAgZnJvbSB0aGUgc3RyZWFtIGFuZCBoYXZlCgl0byBjb252ZXJ0IGl0IGludG8gYSAxeChNKk4pIGJpdG1hcCwgc2V0IGNDdXJJbWFnZSxjTWF4SW1hZ2UuIEFkZGVkCglkb2N1bWVudGF0aW9uLgoJKG90aGVycykgcmVtb3ZlZCBzb21lIHBvdGVudGlhbCBvcGVyYXRvciBwcmVjZW5kZW5jZSBwcm9ibGVtcy4KCgkqIG9iamVjdHMvZGMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXREZXZpY2VDYXBzOiBzcG90IHlldCB1bnN1cHBvcnRlZCBhY2Nlc3NlcyB0byB0aGUgRGV2aWNlQ2FwcyBzdHJ1Y3QuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIG1pc2NlbXUvbWFpbi5jLCB3aW4zMi9leGNlcHQuYywgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHRlcm5hbC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGRlYnVnZ2VyIHRvIGxpYndpbmUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gV2luZUxpYiBhcHBzLgoJVHJ5IHRvIGludm9rZSBleHRlcm5hbCBkZWJ1Z2dlciBpZiBpbnRlcm5hbCBkZWJ1Z2dlciBjcmFzaGVzLgoJVHJ5IHRvIGhhbmRsZSBlYXJseSBpbnZvY2F0aW9uIG9mIGRlYnVnZ2VyIG1vcmUgZ3JhY2VmdWxseS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFyayBpbml0aWFsIHByb2Nlc3MgYXMgMzItYml0IGZvciBXaW5lTGliIGFwcHMuCglVc2UgdGViLT50aWJmbGFncyBpbnN0ZWFkIG9mIHRlYi0+ZmxhZ3MgKGZvciBXaW45NSBVU0VSMzIgY29tcGF0aWJpbGl0eSkuCglSZW1vdmVkIHVudXNlZCB0aHJlYWQgZXZlbnQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBXaW5kb3dzIHNraXBzIHRoZSAnXHQnIGFuZCAnICcgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHNlY3Rpb24KCSAga2V5IG5hbWVzIG9mIC5JTkkgZmlsZXMuCgktIEZpeGVkIEdldC9Xcml0ZVByaXZhdGVQcm9maWxlU3RydWN0QSgpOgoJICAtIChyZS0pdHJhbnNsYXRlIHRoZSBiaW5hcnkgZGF0YSBpbnRvIEFTQ0lJIGhleCBjaGFycwoJICAtIGFkZCBjaGVja3N1bSAvIGNoZWNraW5nIG9mIGl0CgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgbWlzYy9yZWdpc3RyeS5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIHdpbmUuaW5pOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGZpeGVzLCBsb2FkaW5nIG9mIHNldHRpbmdzIHBlciB1c2VyCgktIGF1dG9kZXRlY3Rpbmcgb2Ygd2luZG93cyByZWdpc3RyeSB2ZXJzaW9uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglUaGUgQ09NIHZpcnR1YWwgdGFibGVzIG11c3QgdXNlIHRoZQoJJ0lDT01fTVNWVEFCTEVfQ09NUEFUX0R1bW15UlRUSVZBTFVFJyBtYWNybyB0byBwcm92aWRlIHBhZGRpbmcgaW4gQysrLgoKCSogbXNkb3MvaW50MDkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGludDkgaGFuZGxlciBhZGQga2V5c3Ryb2tlIHRvIEJJT1Mga2V5Ym9hcmQgYnVmZmVyLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJZG9zbW9kIHByb3RvY29sIHJldmlzaW9uIDMsIGZlYXR1cmluZyBNUFJPVEVDVCBhbmQgRU5URVJJRExFLgoKCSogaW5jbHVkZS93aW5jb24uaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGNvdXBsZSBvZiBwcm90b3R5cGVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBpbmZvcm1hdGlvbiBhYm91dCBjb2RlIHBhZ2VzIHRvIGRlZmF1bHQgcmVnaXN0cnkuCgoJKiBjb25maWd1cmUuaW4sIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVbml4d2FyZSAoU29sYXJpcykgbGlua2VyIHR5cG8gZml4ZWQKCS0gU29sYXJpcyAoYW5kIHBvc3NpYmx5IFVuaXh3YXJlKSBzcGVjaWZpYyBsaW5rZXIgc3VwcG9ydCBmb3IgdGhlCgkgIEdOVTppc20gLS1bbm8tXXdob2xlLWFyY2hpdmUKCS0gU29sYXJpcyBtYWtlIHNwZWNpZmljIG1ha2VmaWxlIGZpeAoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgc3VwcG9ydCBmb3Ige3NldCxnZXR9X3RocmVhZF9jb250ZXh0IGFkZGVkLgoKMjAwMC0wMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUFkZGVkIG91ciBvd24gdXNlcl9yZWdzX3N0cnVjdCBkZWZpbml0aW9uIGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglDb3JyZWN0IHRoZSBiZWhhdmlvdXIgb2YgdGhlIGFjY2VsZXJhdG9yIGtleXMgaW4gZGlhbG9ncyBhY2NvcmRpbmcgdG8KCXRoZSBXaW5kb3dzJyBvbmUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9YeC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9hY2NlbC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwL1h4LnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svY2xvY2sucmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTGluayBvbmx5IGEgc2luZ2xlIC5yYyBmaWxlIHdpdGggYXBwbGljYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgaWYxNjMyL3Nub29wLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgQlVHUywgUkVBRE1FLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gYWRkIHNvbWUgZG9jdW1lbnRhdGlvbiBpdGVtcwoJLSBmaXggc29tZSBzcGVsbGluZwoJLSBmaXggc29tZSB3YXJuaW5ncwoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZHJpdmUuaCwgbGlidGVzdC92b2xpbmZvLmMsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgd2luZS5pbmk6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gc3VwcG9ydCBmb3IgcmVhZGluZyBsYWJlbHMgYW5kIHNlcmlhbCBudW1zIGZyb20gZGV2aWNlCgktICJyZWFzb25hYmxlIiBtaXNjL2Nkcm9tLmMgZGV2aWNlIGhhbmRsaW5nCgktIG11Y2ggaW1wcm92ZWQgYXVkaW8gQ0Qgc3VwcG9ydAoJLSBzZXJpYWwgbnVtYmVyIG92ZXJ3cml0ZSBidWcgZml4CgktIHNwZWxsaW5nIGZpeGVzCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXB4Ly5jdnNpZ25vcmUsIGRsbHMvc2V0dXB4L01ha2VmaWxlLmluLCBkbGxzL3NldHVweC9zZXR1cHguc3BlYywgZGxscy9zZXR1cHgvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgU0VUVVBYIGRsbC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaW5vciBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgZml4ZXMuCgktIE1vdmVkIHNvbWUgb2YgdGhlIEFQSSBzcGVjaWZpY2F0aW9ucyBmcm9tIHRoZSBnbG9iYWwgZmlsZSB0byB0aGUKCSAgbG9jYWwgZmlsZXMuCgoJKiBpbmNsdWRlL2ltYWdlbGlzdC5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBJbWFnZUxpc3RfUmVhZCAobm90IDEwMCUgY29ycmVjdCBpbiByZWdhcmRpbmcgdG8gc2V0dGluZwoJdGhlIGJpdG1hcCkuCglGaWxsZWQgb3V0IHVua25vd24gbWVtYmVycyBvZiBJTEhFQUQuCglTdGFydGVkIHJlb3JkZXJpbmcgSU1BR0VMSVNUIHRvIG1ha2UgaXQgV2luZG93cyBiaW5hcnkgY29tcGF0aWJsZS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgluSWNvbkluZGV4ID09IC0xIHNob3VsZCByZXR1cm4gbnIgb2YgYXZhaWxhYmxlIGljb25zLCBub3QgMC4KCgkqIE1ha2VmaWxlLmluOiBGaXhlZCBidWlsZGluZyBvZiBkb3Ntb2QgYW5kIHdpbmVjbGlwc3J2LgoKCSogbWlzYy9kZWJ1Z3N0ci5jOgoJQnVnIGZpeDogYWRkZWQgdGVtcCBzdHJ1Y3R1cmUgdG8gY29wZSB3aXRoIGRlYnVnIHRyYWNlcyBkdXJpbmcgdGhyZWFkCglzdGFydHVwLgoKCSogd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MvbXNnYm94LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvZGVidWdzdHIuaCwgbGlidGVzdC92YXJ0ZXN0LmMsIGxvYWRlci9yZXNvdXJjZS5jLCBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHJlbGF5MzIvdXR0aHVuay5jOgoJUmVtb3ZlZCBkZWJ1Z3N0ci5oLgoKCSogbWlzYy9kZWJ1Z3N0ci5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS90aHJlYWQuaDoKCVVzZSBhIHBlci10aHJlYWQgYnVmZmVyIGFuZCB3cml0ZSgyKSBmb3IgZGVidWcgdHJhY2VzLgoJUmVtb3ZlZCBkZWJ1Z19kdW1wc3RyLgoKMjAwMC0wMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4LgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJR2V0IEhDVSBuYW1lIGZyb20gdW5peCB1c2VyIG5hbWUuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvc2VsZWN0b3IuYzoKCUltcGxlbWVudGVkIEdldFRocmVhZFNlbGVjdG9yRW50cnkgdGhyb3VnaCB0aGUgc2VydmVyLgoKMjAwMC0wMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUR5bmFtaWNhbGx5IGxvYWQgdmVyc2lvbi5kbGwgaW4gTU1EUlZfR2V0RGVzY3JpcHRpb24zMi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJVXNlIGEgbGlua2VkIGxpc3QgaW5zdGVhZCBvZiBhIERQQSBmb3IgdGhlIGhvb2sgbGlzdC4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJVXNlIGEgbGlua2VkIGxpc3QgaW5zdGVhZCBvZiBhIERQQSB0byBtYW5hZ2UgcGl4bWFwcy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXR1cm5zIGFuIGVycm9yIGlmIHRyeWluZyB0byB3cml0ZSB0byBhIHN0cmVhbSBvcGVuZWQgZm9yIHJlYWQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGQgYSBuZXdiaWUgd2FybmluZyBmb3Igc2xhc2hlcyBpbiB0aGUgc2VhcmNoIFBhdGg9IG9mIHdpbmUuY29uZi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2FpdCBmb3IgU2htQ29tcGxldGlvbiBkdXJpbmcgRmxpcC4KCgkqIGNvbmZpZ3VyZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCU1hZGUgLS1lbmFibGUtZGxsIHRoZSBkZWZhdWx0LgoJVXNlICQoTUFLRSkgaW5zdGVhZCBvZiAkKFNVQk1BS0UpIGZvciByZWN1cnNpdmUgbWFrZXMuCglDbGVhbmVkIHVwIGluc3RhbGwgdGFyZ2V0cyBpbiBtYWluIE1ha2VmaWxlLgoKCSogZGxscy9udGRsbC9zeW5jLmM6IERvbid0IGNyYXNoIHdoZW4gT2JqZWN0QXR0cmlidXRlcyBpcyBOVUxMLgoKMjAwMC0wMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglVc2UgYXJndlswXSB0byBsb2NhdGUgdGhlIHNlcnZlciBleGVjdXRhYmxlLgoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJU2hhcmUgdGhlIHN5c3RlbSBoZWFwIGJldHdlZW4gZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzLiBNYWRlIHByb2Nlc3MKCWhlYXAgcGVyLWFkZHJlc3Mgc3BhY2UgaW5zdGVhZCBvZiBwZXItcHJvY2Vzcy4KCgkqIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIE1ha2VmaWxlLmluLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci90aHJlYWQuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJTWFkZSB0aGUgc2VydmVyIGxpc3RlbiBmb3IgbmV3IGNsaWVudHMgb24gYSBVbml4IHNvY2tldCBpbgoJJEhPTUUvLndpbmUuIE5ld2x5IHN0YXJ0ZWQgd2luZSBwcm9jZXNzZXMgbm93IGF0dGFjaCB0byBhbiBleGlzdGluZwoJc2VydmVyIGlmIG9uZSBpcyBydW5uaW5nLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL29wdGlvbnMuaDoKCUFkZGVkIFBST0ZJTEVfR2V0Q29uZmlnRGlyIGZ1bmN0aW9uLgoKMjAwMC0wMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvKi5jOgoJQ2hhbmdlZCB0aGUgc2VydmVyIHRvIHJldHVybiBTVEFUVVNfKiBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9ydGwuYzoKCUJ1aWx0IGEgY29tcGxldGUgdHJhbnNsYXRpb24gdGFibGUgZm9yIFJ0bE50U3RhdHVzVG9Eb3NFcnJvci4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5udC5oOiBBZGRlZCBzb21lIGVycm9yIGNvZGVzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCVVzZSBHZXRQcm9jQWRkcmVzcyBpbnN0ZWFkIG9mIGNhbGxpbmcgU2hlbGxBYm91dEEgZGlyZWN0bHkuCgoyMDAwLTAxLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi92ZXIuc3BlYywgZGxscy92ZXJzaW9uL3ZlcjE2LmM6CglNZXJnZWQgZGxscy92ZXIgaW50byBkbGxzL3ZlcnNpb24uCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGltcGxlbWVudGF0aW9uIG9mIFJ0bFJlZyogKHJlYWQgYWNjZXNzKSwgUnRsRXZlbnQqLCBSdGxTZW1hcGhvcmUqLAoJICBOdEFsbG9jYXRlTG9jYWxseVVuaXF1ZUlkCgktIGltcGxlbWVudGF0aW9uIG9yIHN0dWJzIGZvciBOdEFjY2Vzc0NoZWNrLCBOdFNldFNlY3VyaXR5T2JqZWN0LAoJICBSdGxDbGVhckJpdHMsIFJ0bEVxdWFsUHJlZml4U2lkLCBSdGxGaW5kQ2xlYXJCaXRzLAoJICBSdGxGb3JtYXRDdXJyZW50VXNlcktleVBhdGgsIFJ0bEdldENvbnRyb2xTZWN1cml0eURlc2NyaXB0b3IsCgkgIFJ0bElkZW50aWZpZXJBdXRob3JpdHlTaWQsIFJ0bEltcGVyc29uYXRlU2VsZiwgUnRsSW5pdGlhbGl6ZUJpdE1hcCwKCSAgUnRsSW5pdGlhbGl6ZUdlbmVyaWNUYWJsZSwgUnRsTWFrZVNlbGZSZWxhdGl2ZVNELAoJICBSdGxQcmVmaXhVbmljb2RlU3RyaW5nLCBSdGxTZXRCaXRzLCBSdGxVbmljb2RlVG9NdWx0aUJ5dGVOLAoJICBSdGxVcGNhc2VVbmljb2RlU3RyaW5nVG9PZW1TdHJpbmcsIFJ0bFVwY2FzZVVuaWNvZGVUb09lbU4sCgkgIFJ0bFZhbGlkU2lkLCBSdGx4VW5pY29kZVN0cmluZ1RvT2VtU2l6ZQoJLSBjb3JyZWN0ZWQgbW9zdCBSdGxTdHJpbmcqIGZ1bmN0aW9ucywgYWRkZWQgZG9jdW1lbnRhdGlvbgoJLSBtb3JlIGZpeGVzIGFuZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9ucwoKCSogbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9vcHRpb25zLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIC1keGdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbiwgd2hpY2ggY29uZmluZXMgY3Vyc29yIG1vdGlvbiB0byB0aGUKCURpcmVjdFggcHJpbWFyeSBzdXJmYWNlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIHNvbWUgd2VpcmQgQyBjb25zdHJ1Y3RzIChjaGFyW109IiIgKSB3aXRoIG1vcmUgY29tcGF0aWJsZSBvbmVzLgoJQWRkZWQgYW5vdGhlciBOVUxMIHB0ciBjaGVjayBpbiBfT25PcGVuLgoKCSogbWlzYy93aW5zb2NrX2FzeW5jLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvd3NvY2szMi5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWMsIGRsbHMvd2luc29jay93c29jazMyLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL3dpbnNvY2suc3BlYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93aW5zb2NrLmM6CglNb3ZlZCB3aW5zb2NrIGltcGxlbWVudGF0aW9uIHRvIGRsbHMvd2luc29jay4KCgkqIGRsbHMvKi8uY3ZzaWdub3JlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAqLnNwZWMuYywgKi5zcGVjLmdsdWUucywgKi5nbHVlLmMgdG8gLmN2c2lnbm9yZSB0aGF0IG5lZWQgdGhlbS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgYXJndW1lbnRzIHRvIFZpcnR1YWxGcmVlKCkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG1lbW9yeS9zdHJpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVwbGFjZWQgTG9jYWxUb1dpZGVDaGFyKCkgYnkgbHN0cmNweW5BdG9XKCksIFdpZGVDaGFyVG9Mb2NhbCgpIGJ5Cglsc3RyY3B5bld0b0EoKS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1hcCBXTV9NRU5VU0VMRUNUIDMyLT4xNiBiaXRzIGZvciBjbG9zaW5nIG1lbnUuCgoJKiB3aW5kb3dzL21kaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBwYXJhbWV0ZXJzIGZvciBNRElfUmVzdG9yZUZyYW1lTWVudSBpbiBXTV9ERVNUUk9ZIG1zZy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgKFJlZ2lzdGVyfEdldHxSZXZva2UpQWN0aXZlT2JqZWN0IGZyb20gdGhlIGRvY3MuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTdXBlcmNoYXJnZWQgWFNobSBpbXBsZW1lbnRhdGlvbiBmb3IgRGlyZWN0RHJhdy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWlzc2luZyBOVUxMIHBvaW50ZXIgY2hlY2tzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGVjayBmb3IgTVogaGVhZGVyIGJlZm9yZSB0cnlpbmcgdG8gZGVjaXBoZXIgdGhlIFBFIGhlYWRlci4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUV4cG9ydCBHZXRMb25nUGF0aE5hbWVbQXxXXS4KCgkqIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggcHJvYmxlbXMgd2l0aCBHbG9iYWxIYW5kbGUgYW5kIEdsb2JhbEZyZWUgc28gcmVzdWx0cyBtYXRjaCBXaW45OC4KCVJlc3RydWN0dXJlIEhFQVBfVmFsaWRhdGVJblVzZUFyZW5hLCBIZWFwVmFsaWRhdGUsIGFuZCBhZGQKCUhFQVBfSXNSZWFsQXJlbmEgdG8gZWxpbWluYXRlICpib2d1cyogZXJyb3IgbWVzc2FnZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWN0dWFsbHkgcHJpbnQgcmV0dXJuIHZhbHVlIG9mIG1lc3NhZ2UuCgoJKiBvYmplY3RzL2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBhcmd1bWVudHMgaW4gRElCX0RlbGV0ZURJQlNlY3Rpb24uCgoJKiBmaWxlcy9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFxcLlw8ZG9zZGV2aWNlPiBsaWtlIDxkb3NkZXZpY2U+IGluIENyZWF0ZUZpbGUuIFRlc3RlZCB3aXRoCgloZWxwIG9mIEphbWVzIEZlZW5leSA8amFtZXNAbnVyZWFsbS5uZXQ+LgoKMjAwMC0wMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2V0L1NldFRocmVhZENvbnRleHQgc3VwcG9ydCB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoyMDAwLTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaW5wdXQuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZWJ1Z3N0ci5oLCBtaXNjL2RlYnVnc3RyLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglBZGRlZCBkZWJ1Z3N0cl9ndWlkIGZ1bmN0aW9uIGFuZCB1c2VkIGl0IHRvIHJlcGxhY2UKCVdJTkVfU3RyaW5nRnJvbUNMU0lEIGluIGFsbCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsd2F5cyBpbml0aWFsaXplIGxwV2F2ZUhkci0+bHBOZXh0IHRvIE5VTEwuCglEb24ndCBmYWlsIG9uIHN0cmFuZ2UgZnJhZ21lbnQgc2l6ZXMuCgoyMDAwLTAxLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5ubHMuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgc29tZSBkZWZpbmVzIG5lZWRlZCBmb3IgVW5pY29kZSB0byBBc2NpaSBjb252ZXJzaW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcsIGxlc3Mga2V5cyBoZWxkIG9wZW4uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1EaXNwbGF5TW9kZXMgbXVzdCBwYXNzIGxQaXRjaC4KCgkqIGNvbnRyb2xzL21lbnUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglWYWxpZGF0ZSB0aGUgbWVudSBoYW5kbGVzLgoKCSogZGxscy93aW44N2VtL2VtdWxhdGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSb3VuZHMgdG8gdGhlIGxvd2VzdCBpbnRlZ2VyLCBub3QgdGhlIG5lYXJlc3QuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHJhY2UgYmV0d2VlbiBXaW4xNiBwYXJlbnQgYW5kIGNoaWxkIGZvciBmaXJzdCByZXNjaGVkdWxpbmcKCW9mIGNoaWxkIHByb2Nlc3MuIFRoaXMgZml4ZXMgV2luRXhlYyByZXR1cm5pbmcgdG9vIGVhcmx5LgoKMjAwMC0wMS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVzZSAtLXdob2xlLWFyY2hpdmUgdG8gZm9yY2UgbGlua2luZyBhbGwgb2YgbGlid2luZS5hLiBpbnRvIHdpbmUuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC5jOgoJQWRkZWQgYXV0b21hdGljIHJlZ2lzdHJhdGlvbiBvZiBidWlsdC1pbiBETExzLgoKMjAwMC0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOiBBYXJvbiBIb3BlIDxlZGhAbWFpbC5icmlvZm9yZ2UuY29tPgoJRml4ZWQgSVBYIGRldGVjdGlvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIHdpbjk1IHJlZ2lzdHJ5IGxvYWRlci4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSWYgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGluIHRoZSBidWZmZXIgYW5kIHRoZSB0eXBlIGlzIFJFR19TWiBhbmQgdGhlCglzdHJpbmcgaXMgbm90IDAtdGVybWluYXRlZCBSZWdRdWVyeVZhbHVlIGFuZCBSZWdFbnVtVmFsdWUgYXJlIGFwcGVuZGluZyBhIDAuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRGlzcGxheSB0aGUgZXh0ZXJuYWwgbW9kdWxlcyBhZnRlciB0aGUgaW50ZXJuYWwgbW9kdWxlcyBpbiBjcmFzaCByZXBvcnQuCgoJKiBmaWxlcy9kcml2ZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgU2V0Vm9sdW1lTGFiZWwgcmVwb3J0IGZhaWx1cmUgb24gQ0QtUk9NIGRyaXZlcy4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBpbmNsdWRlL2RyaXZlci5oLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBXaW5lIHNwZWNpZmljIERSSVZFUl9HZXRUeXBlIGJ5IGEgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZgoJR2V0RHJpdmVyRmxhZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktICh1Z2x5KSBmaXggZm9yIHRoZSAnWG1kLmgnIHByb2JsZW0KCS0gZml4IHRoZSBkZXRlY3Rpb24gb2YgREdBIDIgaW4gY29uZmlndXJlIHNjcmlwdAoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGFkZGVkIE5UIGZpZWxkcyB0byBURUIKCS0gbW92ZWQgdGxzLWZpZWxkcyBhbmQgc29tZSB3aW5lIHNwZWNpZmljIGZpZWxkcyB0byBhIGhpZ2hlciBvZmZzZXQKCS0gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uCgktIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBVbmljb2RlU3RyaW5nCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBUb2RkIFQuIEZyaWVzIDx0b2RkQGZyaWVzLm5ldD4KCUFkZCBIQVZFX1NPVU5EQ0FSRF9IIHRvIHN1cHBvcnQgT3BlbkJTRC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgc29tZSBtaXNzaW5nIEVNUiByZWNvcmQgdHlwZXMgYW5kIHVwZGF0ZWQgYW5kIGZpeGVkIG90aGVycwoJLSBBZGRlZCBzdHVicyBhbmQgaGVhZGVycyBmb3IgQ3JlYXRlQ29sb3JTcGFjZSxEZWxldGVDb2xvclNwYWNlIGFuZCBTZXRDb2xvclNwYWNlCgktIEFkZGVkIGhlYWRlciBmb3IgU2V0SUNNTW9kZQoJLSBBZGRlZCBhYmlsaXR5IHRvIHBsYXkgbW9yZSBlbmhhbmNlZCBtZXRhZmlsZSByZWNvcmRzCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJU3RvcmUgcmVmZXJlbmNlIGhkYyBzaXplIGludG8gZW5oYW5jZWQgbWV0YWZpbGUgaGVhZGVyIHdoZW4gY3JlYXRpbmcuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgT2xlUnVuLgoKCSogb2JqZWN0cy9kYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZWQgRGVsZXRlT2JqZWN0IGNhbGwgbGVmdCBvdmVyIGZyb20gcHJldmlvdXMgcGF0Y2guCgoJKiB3aW4zMi90aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBiYWQgcmVnaXN0ZXIgY29uc3RyYWludCBpbiBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIHRoZSBOVCBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb25zCglJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSBhbmQgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZC4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBhY2Nlc3MgJ3dtLT5tb2RuYW1lJyBhZnRlciB0aGUgbW9kcmVmIGhhcyBiZWVuIGZsdXNoZWQuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBudWxsIGNoZWNrIGluIEdsb2JhbEhhbmRsZS4KCjIwMDAtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCVJlbW92ZWQgYSBkZXBlbmRlbmN5IGJldHdlZW4gb2xlYXV0MzIgYW5kIGNvbWN0bDMyLgoKCSogaW5jbHVkZS93aW5udC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vcmUgU1RBVFVTXyBjb2Rlcy4KCgkqIGluY2x1ZGUvZGRyYXcuaDogU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglGaXhlZCBtYWNybyBkZWZpbml0aW9uIG9mIElEaXJlY3REcmF3U3VyZmFjZV9SZXN0b3JlLgoJQWRkZWQgZGVmaW5lcyBmb3IgRGRyYXcncyBXYWl0Rm9yVmVydGljYWxEaXNwbGF5KCkuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBTdGV2ZSBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUZpeGVkIHR5cG9zIGluIG1hY3JvIGRlZmluaXRpb25zIGZvciBJRGlyZWN0U291bmRCdWZmZXJfR2V0U3RhdHVzLAoJSURpcmVjdFNvdW5kQnVmZmVyX1VubG9jay4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglNaXNzaW5nIFdpbmVsaWIgZGVjbGFyYXRpb25zIGZvciBBVVhDQVBTLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggKGhhcm1sZXNzKSBhc3NlbWJsZXIgd2FybmluZ3MuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJRml4IHByb2JsZW0gd2l0aCBpbml0aWFsaXphdGlvbiAocmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUluZm9QdHIgY2hlY2tpbmcgbWl4ZWQgdXAgV01fREVTVFJPWSBhbmQgV01fQ1JFQVRFLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuICA5IDIxOjQyOjQyIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5vbi1MaW51eCBjb21waWxlIGZpeC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURPU0ZTX0RvR2V0RnVsbFBhdGhOYW1lIHdvdWxkIHVuZGVyZmxvdyAocCB3b3VsZCBnZXQgcGFzdCB0aGUKCWJlZ2lubmluZyBvZiBidWZmZXIpIGlmIGdpdmVuIHRoZSBuYW1lICIvLy4uIi4KCVJlZ3JvdXBlZCB0aGUgaGFuZGxpbmcgb2YgdGhlIGRpcmVjdG9yeSBzZXBhcmF0b3JzLgoJRGlyZWN0b3J5IHNlcGFyYXRvcnMgaW4gdGhlIHJldHVybmVkIHBhdGggYXJlIG5vdyBhbHdheSBhIHNpbmdsZSAiXCIKCXdoaWNoIHNpbXBsaWZpZXMgdGhlIGhhbmRsaW5nIG9mICIuLiIgaW4gdGhlIG5hbWUuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvcnJlY3RlZCBiZWhhdmlvdXIgb2YgUmVnT3BlbktleSBpbiBjYXNlIG9mIGZhaWx1cmUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSByZW1vdmVkIGNvcHlpbmcgb2YgSEtFWV9VU0VSUyB0byBIS0VZX0NVUlJFTlRfVVNFUgoJLSBIS0VZX0NVUlJFTlRfVVNFUiBpcyBub3cgc3Via2V5IG9mIEhLRVlfVVNFUlMKCS0gY2hhbmdlZCBxdWVyeV9rZXlfaW5mb19yZXF1ZXN0IHRvIHJldHVybiB0aGUga2V5IG5hbWUgdG9vIChOdFF1ZXJ5S2V5IG5lZWRzIHRoaXMpCgktIHRoZSByb290a2V5cyAoTUFDSElORSBhbmQgVVNFUikgZG8gaGF2ZSBuYW1lcwoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZCBkZWxldGluZyBvZiB0aGUgZGVmYXVsdCAxeDEgYml0bWFwIGZvciBtZW1vcnkgRENzLgoKCSogaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9idWlsdGluMzIuaCwgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCB0b29scy9idWlsZC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2Rpc3BsYXkvZGlzcGxheS5zcGVjLCBkbGxzL21vdXNlL21vdXNlLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaWYxNjMyL2J1aWx0aW4uYzoKCUJ1aWx0LWluIERMTHMgcmVzb3VyY2VzIGFyZSBub3cgc3BlY2lmaWVkIGluIHNwZWMgZmlsZS4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgZmxhZ3MgaW4gYnVpbHQtaW4gRExMcyB0YWJsZXMuCgoJKiBpZjE2MzIvZHVtbXkuYywgaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2JpZGkxNi5jOgoJRXJleiBWb2xrIDxlcmV6QGdteC5uZXQ+CglBZGRlZCBzdHVicyBmb3Igc29tZSBCaURpIEFQSSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglGaXhlZCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIGFwcCBhbmQgd2luZSBpbiBXQVZFX21jaVBsYXkuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglTdG9wIG1lbnUgdHJhY2tpbmcgd2hlbiBjbGlja2luZyBvbiB0aGUgbWVudSBiYXIgd2hlcmUgdGhlcmUgaXMgbm8KCW1lbnUgaXRlbS4KCgkqIHdpbjMyL25ld2Zucy5jOiBFcmV6IFZvbGsgPGVyZXpAZ214Lm5ldD4KCUJldHRlciBlcnJvciByZXBvcnRpbmcuCgpTYXQgSmFuICA4IDIyOjI3OjMxIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUJhY2tlZCBvdXQgc2NhbGFibGUgYml0bWFwIGNoYW5nZSAoZ2l2ZXMgdWdseSByZXN1bHRzKS4KCgkqIGNvbnRyb2xzL21lbnUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRNZW51U3RyaW5nIHNob3VsZCByZXR1cm4gaXRlbWxlbmd0aCBvbiAwIG5NYXggb3IgTlVMTCBzdHIKCUluc2VydEl0ZW0gcG9zPS0xLCBmbGFncyA9IDAgc2hvdWxkIGFwcGVuZCBpdGVtCgkodGhhbmtzIHRvIFNhbmRlciB2YW4gTGVldXdlbikKCgkqIGluY2x1ZGUvYXNwaS5oLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBkbGxzL3duYXNwaTMyL3duYXNwaTMyLnNwZWM6CglEYXZpZCBFbGxpb3R0IDxkZmVAbmV0bml0Y28ubmV0PgoJUmVtb3ZlZCBtYWxsb2MvZnJlZSBoYWNrIGFuZCByZXBsYWNlZCB3aXRoIEhlYXBBbGxvYy9IZWFwRnJlZSB0aHJvdWdob3V0IGNvZGUuCglBZGRlZCBjcml0aWNhbCBzZWN0aW9uIGFyb3VuZCBjb2RlIGRlYWxpbmcgd2l0aCBnbG9iYWwgdmFyaWFibGVzLgoJQWRkZWQgYSBmZXcgY29tbWVudHMgYWJvdXQgaG93IEFTUEkgaXMgc3VwcG9zZWQgdG8gd29yay4KCUNvcHkgc2Vuc2UgaW5mbyBpbnRvIHRoZSBjb3JyZWN0IHBsYWNlIChyaWdodCBhZnRlciB0aGUgZml4ZWQgMTYtYnl0ZSBDREIpLgoJTm93IHJldHVybnMgdGFyZ2V0IHN0YXR1cyAobWFueSBXaW5kb3dzIGFwcHMgd29uJ3QgZXZlbiBsb29rIGF0IHRoZQoJc2Vuc2UgYXJlIHVubGVzcyB0aGV5IGdldCBhbiBlcnJvciBjb2RlKS4KCUFkZGVkIFNDX0FCT1JUX1NSQiBGSVhNRS4KCUFkZGVkIFNDX0dFVF9ESVNLX0lORk8gcGxhY2UgaG9sZGVyIGZvciBjbGFyaXR5LgoJVXBkYXRlZCBMaW51eCBTRyBpbnRlcmZhY2Ugc3RydWN0dXJlIHRvIGluY2x1ZGUgbmV3IGtlcm5lbCAyLjIKCXN0YXR1cyBmaWVsZHMuCgoJKiBNYWtlLnJ1bGVzLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvb2sgZm9yIG91ciBoZWFkZXIgZmlsZXMgZmlyc3QsIHRoZW4gZm9yIHN5c3RlbXMgaGVhZGVycy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGhlIG5ldyBmaWxlZGlhbG9nIHN0dWZmIGRvZXMgbm90IGhhbmRsZSB0ZW1wbGF0ZS4gU28gZG8gbm90IGNhbGwgaWYKCXRoZXJlIGFyZSBhbnkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQXZvaWQgcHJvYmxlbXMgZHVyaW5nIGNoYW5naW5nIHRoZSBaLW9yZGVyIGlmIHRoZSB3aW5kb3cgYW5kIHRoZQoJd2luZG93IHRvIGluc2VydCBhZnRlciBhcmUgdGhlIHNhbWUuCgoJKiBsaWJ0ZXN0L2V4cGFuZC5jLCBsaWJ0ZXN0L2hlbGxvNS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlbW92ZWQgR1VJIGp1bmsgZnJvbSBleHBhbmQuYywgc28geW91IGNhbiB1c2UgaXQgaW4gY29tbWFuZGxpbmUgbW9kZS4KCUZpeGVkIGhlbGxvNS5jLgoKCSogZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBhdXRvIGFsbG9jYXRlZCBvcmRpbmFscwoJLSBGaXhlZCB2YXJhcmdzICgxNiBiaXQpIGJ1ZwoJLSBNaW5vciBmaXhlcwoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYWxpZ25tZW50IHByb2JsZW0gd2l0aCBWRVJTSU9OX0lORk8gbWVtYmVycy4KCldlZCBKYW4gIDUgMDM6MjQ6NTIgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCAkWF9FWFRSQV9MSUJTIHRvIGFueSBYIGRlcGVuZGVuZCBjaGVja3Mgb3IgdGhleSB3aWxsIGZhaWwgaWYgc29tZQoJb2YgdGhlICRYX0VYVFJBX0xJQlMgYXJlIHJlcXVpcmVkLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9wYWludGluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgRmlsbFJlY3QgYmVoYXZlIGxpa2UgaXQgZG9lcyBvbiBXaW5kb3dzCgktIENsZWFuZWQgdXAgV01feyxJQ09OfUVSQVNFQkFDS0dST1VORCBkZWZhdWx0IGhhbmRsaW5nCgktIEFkZGVkIHNvbWUgY29tbWVudHMgb24gaG93IFdpbmRvd3MgYmVoYXZlcwoKCSogd2luZG93cy93aW5oZWxwLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUNoZWNrIGlmIHdpbmhlbHAgaXMgYWxyZWFkeSBydW5uaW5nOyB1c2Ugd2luaGxwMzIuZXhlIG9yIHdpbmhlbHAuZXhlCglkZXBlbmRpbmcgb24gdGhlIGVtdWxhdGVkIHZlcnNpb24sIHJlbGFzZSB3aW4xNmxvY2sgYmVmb3JlIGNhbGxpbmcKCVdpbkhlbHBBLgoKCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6CglVcGRhdGVkIGF1dGhvcnMgbGlzdCBmcm9tIHRoZSBDaGFuZ2Vsb2cuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKCWhhdmUgYmVlbiBsZWZ0IG91dC4KCgkqIGRvY3VtZW50YXRpb24vZm9udHM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ1ZVR5cGUgY2xhcmlmaWNhdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZGV0ZWN0IGlmIHRoZSBPcGVuR0wgaW1wbGVtZW50YXRpb24gZGVmaW5lcyB0aGUgcGFsZXR0ZWQgdGV4dHVyZSBhbmQKCSAgY29sb3IgdGFibGUgZXh0ZW5zaW9ucwoJLSBzbWFsbCB3YXJuaW5nIGZpeGVzCgktIGZpeCB0aGUgZG91YmxlICctbFh4Zjg2ZGdhJyB3aGVuIGhhdmluZyBER0EgMi4wCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGNvbW0gY2xlYW4gdXAsIG11Y2ggbW9yZSBlcnJvciBtZXNzYWdlcywgb25seSB1c2UgVElPQ09VVFEgaWYKCWRlZmluZWQgW3dpbmUtYnVncy8xMDRdLCB0cmllZCBpbXBsZW1lbnRpbmcgU2V0Q29tbVRpbWVvdXRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBXaGVuIHByb2Nlc3NpbmcgV01fUEFJTlQgbWVzc2FnZXMsIHRoZSB0cmVldmlldyBtaWdodCBzb21ldGltZXMgdXNlCgkgIHRoZSB3cm9uZyBoZGMuIEZpeGVkLgoJLSBCZXR0ZXIgY2hlY2tpbmcgZm9yIFRSRUVWSUVXX0lORk8gKmluZm9QdHI9TlVMTC4KCSAgU2ltaWxhciB0byBjb2RlIGluIHRvb2xiYXIuYwoJLSBPdGhlciBzbWFsbCBmaXhlcyAoc3ViY2xhc3NlZCBlZGl0IGNvbnRyb2wpLgoKCSogZGVidWdnZXIvbXNjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiB1bmluaXRpYWxpemVkIHBvaW50ZXIgY2F1c2VkIGNyYXNoZXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHZpcnVzIHdhcm5pbmcgYSBiaXQgbW9yZSBkcmFzdGljLCBzaW5jZSBzb21lIHBlb3BsZSBkb24ndCBiZWxpZXZlIHVzLgoKCSogbWlzYy9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBjb21tIGNsZWFuIHVwLCBtdWNoIG1vcmUgZXJyb3IgbWVzc2FnZXMsIG9ubHkgdXNlIFRJT0NPVVRRIGlmCglkZWZpbmVkIFt3aW5lLWJ1Z3MvMTA0XSwgdHJpZWQgaW1wbGVtZW50aW5nIFNldENvbW1UaW1lb3V0cy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUltcGxlbWVudCBXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvbkEoKS4KCgkqIGRsbHMvbnRkbGwvcnRsLmM6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglGaXggZm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgJ2xvbmcgbG9uZycgKEZyb20gT3ZlIEthYXZlbikuCgpUdWUgSmFuICA0IDAyOjQwOjIyIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuYzoKCU1vdmVkIGFsbG9jYXRpb24gb2YgdGhlIHNvY2tldCBwYWlyIGZvciBhIG5ldyB0aHJlYWQgdG8gdGhlIHNlcnZlci4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOiBNYWRlIGRlYnVnIGV2ZW50cyBhbmQgY29udGV4dHMgc3RhbmRhcmQgb2JqZWN0cy4KCVVzZSBzbGVlcF9vbiB0byB3YWl0IG9uIGRlYnVnIGV2ZW50cy4KCgkqIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1hZGUgc2xlZXBfb24gdXNhYmxlIGZyb20gYWxsIHJlcXVlc3RzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbW9yZSBNSURJIG1lc3NhZ2VzIDE2PD0+MzIgbWFwcGluZy4KCUZpeGVzIHNvbWUgYnVncyBpbiBidWZmZXJzIGhhbmRsaW5nIGFuZCBpbmRleCBmb3IgTUFQUEVSLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpZjE2MzIvdGh1bmsuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB0aGUgb2Jzb2xldGVkIENhbGxUaW1lRnVuY1Byb2MsIENhbGxEcml2ZXJQcm9jLAoJQ2FsbERyaXZlckNhbGxiYWNrLgoKCSogZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3RpbWUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHV0IGJhY2sgdmlzaWJsZSBtaW5pbXVtIHRpbWVyIHJlc29sdXRpb24gdG8gMSBtcy4KCURlY29ycmVsYXRlIHRoZSBzZXJ2aWNlIHRocmVhZCByZXNvbHV0aW9uIGZyb20gdGhlIHVzZXIgcmVxdWlyZWQgdGltZXIKCSYgdmlzaWJsZSBtaW5pbXVtIHJlc29sdXRpb25zLgoJUmVtb3ZlZCB0aGUgQ2FsbGJhY2suVGltZUZ1bmNQcm9jIGVudHJ5LgoKCSogd2luZG93cy94MTFkcnYvbW9uaXRvci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJR2l2ZSArMCswIGFzIGEgZGVmYXVsdCBwb3NpdGlvbiBmb3IgdGhlIGRlc2t0b3Agd2luZG93LgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJQ29udmVydCBtbWlvIHRvIGFsbG93IHRoZSB1c2Ugb2YgMzIgYml0IG1taW8gcHJvY2VkdXJlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWN0bDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29kYmMzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgd2luYXBpX2NoZWNrIHRvIGhhbmRsZSB0aGUgbmV3IGFkZGl0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIFdNX1NJWkUgbWVzc2FnZSBzdXBwb3J0LiBPcHRpbWl6ZWQgZHJhd2luZyB0byB1c2UKCXByZWNhbGN1bGF0ZWQgc2l6ZSB2YWx1ZXMgcmF0aGVyIHRoYW4gcmVjYWxjdWxhdGluZyBkdXJpbmcgZWFjaCBjYWxsCglvZiBNT05USENBTF9SZWZyZXNoLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9kaWFsb2cuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29ycmVjdGVkIHBhcmFtZXRlciBjb3VudCBmb3IgRGlhbG9nQm94SW5kaXJlY3RQYXJhbUFvclcuCgoJKiBjb250cm9scy9zY3JvbGwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvbid0IHNob3cgdGhlIHNjcm9sbGJhciBpZiBTZXRTY3JvbGxpbmZvKCkgaXMgY2FsbGVkIHdpdGggb25seSB0aGUKCVNJRl9ESVNBQkxFTk9TQ1JPTEwgZmxhZy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgZXh0cmEgVVMga2V5bWFwIHdpdGggdGhlIGluZmFtb3VzIHBoYW50b20ga2V5LgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXNlIGEgdW5pZm9ybSBuYW1pbmcgc2NoZW1lIGZvciBkcml2ZXIgbW9kdWxlcy4KCgkqIGluY2x1ZGUvZHJpdmVyLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5jYXBzdWxhdGVkIFdpbmUgaW50ZXJuYWwgZGF0YSBpbnRvIGFuIGlmZGVmIF9fV0lORV9fLgoKCSogd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy8uY3ZzaWdub3JlOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCB0aGUgMTYgYml0IGRyaXZlciBmdW5jdGlvbnMgY2FsbG91dCBpbnRvIHRoZSBkaXIuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFdPRE1fQlJFQUtMT09QIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGV4dHJhbmVvdXMgRVJSIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJX0lORk9fQ09QWVJJR0hUIGFuZCBNQ0lfSU5GT19OQU1FLgoKCSogZGVidWdnZXIvaGFzaC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVzZSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gd2hpbGUgc2VhcmNoaW5nIGZvciBuZXcgbW9kdWxlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc3BlYyBlbnRyeSBmb3IgX2l0b2EuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglHZW5lcmF0ZWQgbGFiZWxzIG9mIHJlc291cmNlIG5hbWVzIG11c3QgYmUgdW5pcXVlIHRocm91Z2hvdXQgdGhlCglnZW5lcmF0ZWQgY29kZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCSJyZXN1bHRwIiBjYW4gYmUgTlVMTCBpbiBTZW5kTWVzc2FnZVRpbWVvdXQqKCkuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBwcmV2ZW50IG1lbSBsZWFrIG9mIENSVERMTF9hY21kbG5fZGxsCgktIGJldHRlciBhcmd1bWVudCBwYXJzaW5nCgktIGxhc3QgeGFyZ3YgZW50cnkgaGFzIHRvIGJlIE5VTEwKCS0gcmV0dXJuIHZhbHVlIGlzIGVudmlyb25tZW50IHBvaW50ZXIgaW5zdGVhZCBvZiBOVUxMCgktIGFkZGVkIGEgc3BlYyBlbnRyeSBmb3IgYnNlYXJjaCgpCgpTYXQgSmFuICAxIDIyOjM4OjIxIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUltcGxlbWVudGVkIFdhaXRGb3JJbnB1dElkbGUuCgoJKiBtaXNjL2RkZW1sLmMsIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyAoc3BvdHRlZCBieSBGcmFuY29pcyBHb3VnZXQpLgoKCSogcmVsYXkzMi93b3czMi5zcGVjLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgcmVsYXkzMi9kZHJhdy5zcGVjLCByZWxheTMyL2RpbnB1dC5zcGVjLCByZWxheTMyL2dkaTMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kcGxheXgvZHBsYXkuc3BlYywgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNYWtlIHVzZSBvZiBhdXRvbWF0aWMgb3JkaW5hbCBhbGxvY2F0aW9uLgoKCSogc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmM6CglNb3ZlZCBwb2xsIGhhbmRsaW5nIHRvIHRoZSBnZW5lcmljIHBhcnQgb2YgdGhlIHNlcnZlciBvYmplY3RzLgoJRml4ZWQgYnVzeSB3YWl0aW5nIG9uIFBPTExFUlIgZXZlbnRzLgoJTWVyZ2VkIHN0cnVjdCBjbGllbnQgaW50byBzdHJ1Y3QgdGhyZWFkLgoKTW9uIERlYyAyNyAwNToyNjowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvcHJvY2Vzcy5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBtaXNjL2RkZW1sLmMsIG1pc2MvdmVyc2lvbi5jOgoJQ29zbWV0aWNzLgoKCSogbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWlzYy9sc3RyLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy93aW5zb2NrLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tZGkuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQnVmZmVyIG92ZXJmbG93cyBhbmQgc3RybmNweSBmaXhlcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJUEVfRmluZEV4cG9ydGVkRnVuY3Rpb246IHVzZSBhIGJpbmFyeSBzZWFyY2ggZm9yIGZ1bmN0aW9uIG5hbWVzLgoKU3VuIERlYyAyNiAyMzoxMjozOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYzoKCUZpeGVkL2NvbW1lbnRlZCBvdXQgZHVwbGljYXRlIGVudHJ5IHBvaW50IG5hbWVzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmM6CglBZGRlZCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgb3JkaW5hbCBhbGxvY2F0aW9uLgoJT3V0cHV0IGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgaW4gc29ydGVkIG9yZGVyLgoJQWRkZWQgc3VwcG9ydCBmb3IgbmFtZWxlc3MgKG9yZGluYWwtb25seSkgZW50cnkgcG9pbnRzLgoJQ2xlYW5lZCB1cCBlcnJvciBoYW5kbGluZy4KCgkqIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBncmFwaGljcy90dHlkcnYvZm9udC5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIERDRnVuY3MgRXh0VGV4dE91dCBhbmQgR2V0VGV4dEV4dGVudFBvaW50IHRvIFVuaWNvZGUuCglNYXAgYSBmZXcgVW5pY29kZSBjaGFycyB0byB0aGUgZmlyc3QgMHhmZiBpbiBwc2Rydi4KCURvbid0IGV4cGVjdCB4MTFkcnYgdG8gZGlzcGxheSBVbmljb2RlIGNoYXJzIHlldC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBtZW1vcnkvc3RyaW5nLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglXcmFwcGVkIHNvbWUgc3RyaW5ncyBpbiBhIGRlYnVnc3RyXyogY2FsbC4KCVJlcGxhY2VkIHNvbWUgY2FsbHMgdG8gZGVidWdzdHJfe2Esd30gYnkgZGVidWdzdHJfe2Esd31uLgoJUmVtb3ZlZCByZWR1bmRhbnQgJ0wncyBmb3IgVW5pY29kZSBzdHJpbmdzLgoJVHJpZWQgdG8gaGFybW9uaXplIHRoZSB0cmFjZXMgYSBsaXR0bGUgYml0LgoKCSogbWlzYy9kZWJ1Z3N0ci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCWRlYnVnc3RyX3cgbm93IHJldHVybnMgc29tZXRoaW5nIGxvb2tpbmcgbGlrZSAnTCJ4eHh4Ii4uLicKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGSUxFRExHOTVfSGFuZGxlQ3VzdG9tRGlhbG9nTWVzc2FnZXM6CgktIGZvciB0aGUgdGhyZWUgaGFuZGxlZCBtZXNzYWdlcyB3ZSBtdXN0IHJldHVybiB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUKCS0gZm9yIENETV9HRVRGSUxFUEFUSCBwYXRocyBsaWtlICJkaXJcZmlsZSIgd2VyZSBoYW5kbGVkIGluY29ycmVjdGx5CgktIGZpeGVkIG11bHRpcGxlIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLgoJRklMRURMRzk1X09uT3BlbjogZml4ZWQgYSB1c2Ugb2Ygc3RybmNweSB3aXRob3V0ICdcMCcuCglGSUxFRExHOTVfU0hFTExfTmV3Rm9sZGVyOiB0aGUgc2l6ZSBvZiBscHN0ckNhcHRpb24gd2FzIGluY29ycmVjdAoJbGVhZGluZyB0byBhIGJ1ZmZlciBvdmVyZmxvdy4KClNhdCBEZWMgMjUgMjI6NTg6NTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHBsYXlpbmcgbW9yZSByZWNvcmQgdHlwZXMgKHN0aWxsIG1vcmUgdG8gY29tZSkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQmV0dGVyIHN1cHBvcnQgdmVyeSBsb25nIHN0cmluZ3MgYnkgYXZvaWRpbmcgdG8gY29weSB0aGVtIGluIGEgZml4ZWQKCXNpemUgYnVmZmVyIChvbmUgZXhjZXB0aW9uIHBhcnRseSByZW1haW5zOiBjYWxsYmFjayBzdHJpbmdzKS4KCVJhaXNlIHRoZSBidWZmZXIgc2l6ZSB0byA1MTIgY2hhcmFjdGVycy4KCU1lcmdlIHRoZSBoYW5kbGluZyBvZiBpdGVtIDAgYW5kIG90aGVyIGl0ZW1zIHRvZ2V0aGVyIGluIEdldEl0ZW1BIHRvCglyZWR1Y2UgY29kZSBkdXBsaWNhdGlvbi4KCgkqIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggUFNEUlZfU3RyZXRjaERJQml0cyBmb3Igbm9uLWludGVnZXIgYnl0ZSBzcmMgd2lkdGhzICgxICYgNGJwcCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDYXN0IHRoZSB1bnNpZ25lZCBpbnQgdG8gc2lnbmVkLCBvciBORUFSX01BVENIIHdpbGwgbm90IHdvcmsuCgoJKiBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIGluY2x1ZGUvY2Ryb20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmlyc3QvbGFzdCBwbGF5YWJsZSBmcmFtZSByZWZlcmVuY2luZy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYm9ndXMgdmFsdWVzIGluIE1DSV9TVEFUVVMgaGFuZGxpbmcgKHBvc2l0aW9uICYgbGVuZ3RoIG9mIHRyYWNrcykuCglBZGRlZCBzdXBwb3J0IGZvciBNQ0lfSU5GTyBvbiBNRURJQV9VUEMgJiBNRURJQV9JREVOVElUWSBjb21tYW5kcy4KCgkqIHdpbmRvd3MvcmVjdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRlc3QgcG9pbnRlcnMgcGFzc2VkIHRvIGNvcHlyZWN0IGZvciBOVUxMLgoKCSogd2luZG93cy9kaWFsb2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZXN0b3JlIGVycm9uZW91c2x5IGRlbGV0ZWQgbGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURQQV9EZWxldGVQdHIgd2FzIHJlc2l6aW5nIHRoZSBhcnJheSB0byBhIHRvbyBzbWFsbCBzaXplLgoKCSogd2luZG93cy93aW5wb3MuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQXZvaWQgaW5maW5pdGUgbG9vcCBpbiBXSU5QT1NfRmluZEljb25Qb3MgaWYgdGhlIHdpZHRoIG9mIHRoZSBwYXJlbnQKCWNsaWVudCBhcmVhIGlzIGxlc3MgdGhhbiB0aGUgaWNvbiBzcGFjaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9saW51eC1mYXQtcGVybWlzc2lvbnM6CglTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglBZGRlZCBhIGRvY3VtZW50IHRoYXQgZGVzY3JpYmVzIGNvbmZpZ3VyaW5nIEZBVCBmaWxlc3lzdGVtIHBlcm1pc3Npb25zCglmb3IgV2luZS4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOVCBhbGxvY2F0ZXMgb25lIHBhZ2UgYXMgVEVCLiBTb21lIG5hdGl2ZSBOVC1kbGxzIGFyZSB1c2luZyB0aGlzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG9uJ3Qgc2tpcCB1c2FibGUgWCBmb250cy4gQWRkIHN1cHBvcnQgZm9yIGtvaTggZm9udHMuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW9kaWZpZWQgSWNtcENsb3NlSGFuZGxlIGFuZCBJY21wU2VuZEVjaG9SZXF1ZXN0IHNvIHRoYXQgd2UgZG9uJ3QKCWNyYXNoIGlmIHRoZSBoYW5kbGUgaXMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglDaGFuZ2VkIHRoZSAidGhpc19pc19hX3N5bnRheF9lcnJvciIgZXJyb3IgbWVzc2FnZSB0byBhIG1vcmUgc3BlY2lmaWMKCWVycm9yIG1lc3NhZ2UuCgpNb24gRGVjIDIwIDA0OjE0OjQ4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSBCZXppZXIgY29kZSBvdXQgb2YgeDExZHJ2IGludG8gY29tbW1vbiBHREkgY29kZTsgaWYgYW55IGRyaXZlcgoJZG9lcyBub3QgaW1wbGVtZW50IFBvbHlCZXppZXJbVG9dIHRoZSBjdXJ2ZSBpcyBhcHByb3hpbWF0ZWQgdG8gbGluZXMKCWFuZCBkcmF3biB3aXRoIFBvbHlsaW5lLgoJSW1wbGVtZW50IG1hbnkgR0RJLVBhdGggcmVjb3JkaW5nIGZ1bmN0aW9ucyAoYXQgbGVhc3QgdGhlIHdpbjl4IHN1YnNldCkuCglJbXBsZW1lbnQgRmxhdHRlblBhdGggYW5kIEZpbGxQYXRoLgoKCSogZGxscy9kcGxheXgvZHBsYXl4LnNwZWM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglGaXhlZCBvcmRpbmFsIG51bWJlcmluZyBhbmQgYWRkZWQgbmV3IHNwZWMgc3R1Yi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWRkZWQgWHBtIGF1dG9jb25mIGNoZWNrcy4KCgkqIG9sZS9vbGUybmxzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFbnVtU3lzdGVtTG9jYWxlc0Egc2hvdWxkIGxvb2sgZm9yIHJlZ2lzdHJ5IHZhbHVlcywgbm90IHN1YmtleXMuCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGZpeCB0byBnZXQgR0VUX0RFVklDRV9UWVBFIHdvcmtpbmcgKHZlcmlmaWVkIGJ5IERhbiBLZWdlbCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQ29ycmVjdGVkIGJhY2tncm91bmQgY29sb3IgYW5kIGZpeGVkIGxlYWtpbmcgR0RJIGJydXNoLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5UIGxvYWRlcjogZG9uJ3Qgc3RvcCBsb2FkaW5nIGEgaGl2ZSB3aGVuIGFuIGVycm9yIG9jY3Vycy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUGxheU1ldGFGaWxlIGFuZCBFbnVtTWV0YUZpbGUgc2hvdWxkIHdvcmsgaWYgdGhlIGhkYyBpcyBhCgkoZW5oKW1ldGFmaWxlIERDLgoKCSogUkVBRE1FOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglVcGRhdGVkIHRoZSBGcmVlQlNEIG5vdGVzLCB0aGUgTERUIHBhdGNoIGZpbmFsbHkgbWFkZSBpdCBpbnRvIC1jdXJyZW50LgoKCSogZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUlmIGxwVGl0bGU9PU5VTEwgYW5kIGNiQnVmPT0wIHRoZW4gd2UgbXVzdCByZXR1cm4gdGhlIHJlcXVpcmVkIGJ1ZmZlcgoJc2l6ZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglTaGF1biBNb3JyaXMgPHNoYXVuQGJsdWVuZXB0dW5lLmNvbT4KCUltcGxlbWVudGVkIF9UcmFja01vdXNlRXZlbnQgZm9yIHRoZSBUTUVfTEVBVkUgZmxhZy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRzIHJlc29sdXRpb24gLyBkZXB0aCBzd2l0Y2hpbmcgd2l0aCBER0EgMi4wLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gRGVjIDEyIDIxOjI4OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgaGFuZGxpbmcgb2YgREdBMi4wIGtleWJvYXJkIGV2ZW50cy4KCgkqIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gb3BlbiBzZXZlcmFsIHN0cmVhbXMgb24gdGhlIHNhbWUgZHJpdmVyLgoJQWRkZWQgYSBmZXcgYWNtTWV0cmljcyBvcHRpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN5c1N0cmluZ0xlbiBjYW4gZ2V0IGEgTlVMTCBwb2ludGVyIChhbmQgc2hhbGwgcmV0dXJuIDApLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBub3RpZmljYXRpb24gZm9yIGRldGVjdGluZyB3aGVuIGEgV0FWRUhEUiBoYXMgYmVlbiBwbGF5ZWQKCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcGxheWJhY2sgdGhyZWFkIGFuZCBzdG9wL2Nsb3NlIGNvbW1hbmRzCglOb3cgdXNpbmcgbm90aWZpY2F0aW9uIGZvciBkZXRlY3Rpbmcgd2hlbiBhIFdBVkVIRFIgaGFzIGJlZW4gcGxheWVkCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUNvbWJvQm94IHNob3VsZCBub3Qgc2VuZCBib2d1cyBtZXNzYWdlcyB0byBlZGl0IGJ1ZGR5IGFuZCB0byBpdHNlbGYuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRml4ZWQgR2V0U2hvcnRQYXRoTmFtZUEuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNb3NlcyBEZUpvbmcgPGRlam9uZ0Bjcy51bW4uZWR1PgoJRml4ZWQgbWlzc2luZyBsaWJ3aW5lLnNvIHN5bWxpbmsgZHVyaW5nIGluc3RhbGwuIFNldCB0aGUgcnVudGltZQoJbGlua2VyIHBhdGguCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBNdXJhbGkgUGF0dGF0aGUKCUdldE5leHREbGdHcm91cEl0ZW06IG5lZWRzIHRvIGNoZWNrIHRoZSBjb250cm9sIHBhcmVudCBpcyB0aGUgbWFpbiBkaWFsb2cuCglHZXROZXh0VGFiSXRlbTogbWFrZSBzdXJlIHRoaXMgY29udHJvbCBpcyB2aXNpYmxlIGFuZCBub3QgZGlzYWJsZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBjbWQgbGluZSBsZW5ndGggY2FsY3VsYXRpb24uCgoJKiBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc3VwcG9ydCBvZiBER0EtMi4wIGV2ZW50cwoJLSBmaXhlZCB0aGUgbGVhdmluZyBvZiBER0EtMi4wIG1vZGUKCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51LmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUluIHdpbjMyIGEgV01fTUVOVVNFTEVDVCBtZXNzYWdlIHNob3VsZCBjb250YWluIHRoZSBwb3NpdGlvbiB3aGVuIHRoZQoJaXRlbSByZWZlcnMgdG8gYSBzdWJtZW51LCBub3QgdGhlIHN1Ym1lbnUncyBoYW5kbGUgYXMgaW4gd2luMTYuCgoJKiBmaWxlcy90YXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGFyZyB0eXBlcyBvZiBGSVhNRXMuCgoJKiB3aW5kb3dzL21kaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBwYXNzZWQgaW52YWxpZCB3aW5kb3cgaGFuZGxlIGluIERlZk1ESUNoaWxkUHJvYyouCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBuby4gb2YgYXJndW1lbnRzIGluIGEgV0FSTiBzdGF0ZW1lbnQuCgoJKiBvYmplY3RzL3RleHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGxvd3MgRHJhd1RleHQoMTZ8QXxXKSB0byBnZXQgYSBOVUxMIHN0cmluZyBhcyBwYXJhbWV0ZXIuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBncmFwaGljcy90dHlkcnYvb2JqZWN0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBjb250cm9scy9saXN0Ym94LmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy92ZXJzaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgMiB1c2VsZXNzIGluY2x1ZGUgd2ludmVyc2lvbi5oCglEbyBub3QgbWFrZSBhdXRvZGV0ZWN0ZWQgdmVyc2lvbiBmaXggb24gZmlyc3QgY2FsbHMgaWYgaXQgaXMgV2luMzEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBTdHJOQ3B5QSwgU3RyTkNweVcuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNZXNzYWdlIHRyYW5zbGF0aW9uIFdNX0NSRUFURSBmaXhlZC4KClNhdCBEZWMgMTEgMjM6NTY6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvc3FsLmgsIGluY2x1ZGUvc3FsZXh0LmgsIGluY2x1ZGUvc3FsdHlwZXMuaCwgbG9hZGVyL2xvYWRvcmRlci5jOgoJWGlhbmcgTGkKCUltcGxlbWVudGF0aW9uIG9mIGEgcHJveHkgT0RCQzMyIGRsbC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGJpZ2Zvb3QuZGU+CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN5c3RyYXkgc3VwcG9ydC4KCVN3YWxsb3cgdGhlIHdpbmRvd3Mgc3lzdHJheSBpY29ucyBpbnRvIGtwYW5lbCBzeXN0cmF5IGlmIEtERS9LV00gaXMKCXJ1bm5pbmcuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIGxvYWRlciBmb3IgTlQgcmVnaXN0cnkgZmlsZXMuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5udC5oLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YnMgZm9yIExzYUZyZWVNZW1vcnksIExzYVF1ZXJ5SW5mb3JtYXRpb25Qb2xpY3ksIExzYUNsb3NlLgoJU21hbGwgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEltcGxlbWVudGVkIEdldEVuaE1ldGFGaWxlUGFsZXR0ZUVudHJpZXMKCS0gQWRkZWQgZml4bWUgc3R1YnMgZm9yIFNldE1ldGFSZ24gYW5kIEdldE1ldGFSZ24KCS0gQWRkZWQgc3VwcG9ydCBmb3IgcGxheWluZyBzZXZlcmFsIGVuaGFuY2VkIG1ldGFmaWxlIHJlY29yZHMKCS0gQWRkZWQgYmVnaW5uaW5ncyBvZiBpbXBsZW1lbnRhdGlvbiBmb3IgcGxheWluZyB0aGUgcmVzdCBvZiB0aGUKCSAgZW5oYW5jZWQgbWV0YWZpbGUgcmVjb3JkcwoKCSogZ3JhcGhpY3MvdHR5ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9icnVzaC5jLCBncmFwaGljcy90dHlkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGdyYXBoaWNzL3R0eWRydi9kaWIuYywgZ3JhcGhpY3MvdHR5ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3R0eWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3Blbi5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcHJvdmVkIHRoZSBUVFkgZHJpdmVyLgoKCSogZmlsZXMvZmlsZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglSZXR1cm4gYW4gZXJyb3IgaWYgbHBPdmVybGFwcGVkIGlzIHByb3ZpZGVkIHRvIFJlYWRGaWxlIC8gV3JpdGVGaWxlLgoKCSogbWlzYy93c3ByaW50Zi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjb25mdXNlIHRoZSAwIGZpbGwgbWFnaWMgb2Ygd3NwcmludGYgd2l0aCB0aGUgIjB4IiBoZXggcHJlZml4LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglUaGUgd2F2ZW1hcCBkcml2ZXIgd2Fzbid0IHBhc3NpbmcgdGhlIGNhbGxiYWNrIHR5cGUgdG8gdGhlCglEcml2ZXJDYWxsYmFjayByb3V0aW5lIGNvcnJlY3RseS4KCgkqIGZpbGVzL3RhcGUuYzogQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHdlIGhhdmUgcmVnaXN0cnkgZW50cmllcywgdXNlIHRoZW0uIE5ldmVyIG1pbmQgd2hpY2ggdmVyc2lvbiB3ZQoJYXV0b2RldGVjdGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBtaXNjL3BvcnQuYywgdG9vbHMvYmluMnJlcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZGlzcGxheS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogbG9hZGVyL25lL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQWRkZWQgbWlzc2luZyAncmV0dXJuJyBzdGF0ZW1lbnQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKRnJpIERlYyAxMCAwMzo0NzoxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVzc2FnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQZXJmb3JtIDE2LzMyQS8zMlcgbWVzc2FnZSBtYXBwaW5nIGZvciBwb3N0ZWQgbWVzc2FnZXMuCgoJKiBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvdGFwZS5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkZWQgc3R1YnMgZm9yIHRoZSBXaW5OVCB0YXBlIGJhY2t1cCBmdW5jdGlvbnMuCgoJKiBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBhcnNlIENvZGVWaWV3IHR5cGUvc3ltYm9sIGluZm8gd2l0aCAzMi1iaXQgdHlwZSBpbmRpY2VzLgoJQWRkZWQgKHBhcnRpYWwpIHN1cHBvcnQgZm9yIFZDIDUvNiAuUERCIGZpbGVzLgoJRml4ZWQgdHJlYXRtZW50IG9mIHNvdXJjZSBmaWxlIG5hbWVzIGNvbnRhaW5pbmcgcGF0aC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBvZmYtYnktb25lIGVycm9yLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTaG93IG1haW4gd2luZG93IGlmIENyZWF0ZVByb2Nlc3Mgd2FzIGNhbGxlZCB3aXRob3V0IHRoZQoJU1RBUlRGX1VTRVNIT1dXSU5ET1cgZmxhZy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBQRV9VbmxvYWRMaWJyYXJ5KCkuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IGxvb3NlIGluaXRpYWwgYXV0by1yZXBlYXQgc3RhdHVzIHdoZW4gYWNxdWlyaW5nIHRoZSBrZXlib2FyZCBtb3JlCgkgIHRoYW4gb25lIHRpbWUKCS0gc3VwcG9ydCBvZiBEaXJlY3RYIDcncyBESU1PVVNFU1RBVEUyIHN0cnVjdHVyZQoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglBZGRlZCBOdFBvd2VySW5mb3JtYXRpb24gc3R1Yi4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVRyYW5zZmVyIG9ubHkgY2JTdHJ1Y3Qgc2l6ZSBpbiBCaW5kQ3R4SW1wbF9TKEcpZXRPcHRpb25zLgoKV2VkIERlYyAgOCAwMzo1NjozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy9rZXlib2FyZC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL25ld2Zucy5jLCBtc2Rvcy9kb3NtZW0uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2ZvbnQuYywgb2xlL29sZTJubHMuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9sb2NhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaWYxNjMyL3RodW5rLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBjb250cm9scy9lZGl0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSB1c2Ugb2YgdGhlIERFRkFVTFRfREVCVUdfQ0hBTk5FTCB3aGVyZSBhcHByb3ByaWF0ZS4KCVVzZSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIEZJWE1FLCBFUlIsIFdBUk4sIFRSQUNFIGZvciB0aGUgZGVmYXVsdAoJY2hhbm5lbC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVsYXkgc2VuZGluZyBkZWJ1ZyBldmVudHMgdW50aWwgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCwgYWRkZWQgY2hhcHRlciBvbiBjb25maWd1cmF0aW9uIGFuZCBhcmNoaXRlY3R1cmUuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CgktIEZpeCBNTUlPX3tPcGVuLFJlbmFtZX0gdG8gY2hlY2sgdGhlIGZpbGVuYW1lIChvZiB0aGUgZm9ybQoJICBmaWxlLmV4dCtBQkMpIGZvciB0aGUgY29ycmVjdCBtbWlvIHByb2NlZHVyZSB0byB1c2UuCgktIG1taW9TdHJpbmdUb0ZPVVJDQyBub3cgY29udmVydHMgdG8gdXBwZXJjYXNlIGlmIGFza2VkIHRvLCBhbmQgaGFuZGxlcwoJICBzdHJpbmdzIG9mIGxlbmd0aCA8IDQuCgoJKiBjb250cm9scy9lZGl0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRml4IHByb2JsZW0gd2l0aCBFTl9VUERBVEUgbm90aWZpY2F0aW9uIHNlbnQgYnkgZWRpdCBjb250cm9sLgoKTW9uIERlYyAgNiAwMToyMDowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tb3VzZS8uY3ZzaWdub3JlLCBkbGxzL21vdXNlL01ha2VmaWxlLmluLCBkbGxzL21vdXNlL21vdXNlLnNwZWMsIGRsbHMvbW91c2UvbW91c2VfbWFpbi5jLCBkbGxzL21vdXNlL21vdXNlcmMucmMsIGRvY3VtZW50YXRpb24vcmVzb3VyY2VzLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL2Rpc3BsYXkuc3BlYywgaWYxNjMyL21vdXNlLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kaXNwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZGlzcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kaXNwbGF5L2Rpc3AucmMsIGRsbHMvZGlzcGxheS9kaXNwbGF5LnNwZWMsIGRsbHMvZGlzcGxheS9kaXNwbGF5X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgLnJjIGZpbGUgc3VwcG9ydCBmb3IgV2luMTYgTkUgbW9kdWxlcy4KCU1vdmVkIGRpc3BsYXkuYyBhbmQgbW91c2UuYyB0byBzZXBhcmF0ZSBkbGwgZGlyZWN0b3JpZXMuCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFsbG93IHRvIGRlc2VsZWN0IGFsbCBpdGVtcyBieSBzZW5kaW5nIENCX1NFVENVUlNFTCgtMSkgdG8gdGhlIGNvbWJvLgoKU3VuIERlYyAgNSAyMzo1NDowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIHNldmVyYWwgYnVncyBpbiBnZGkgcGF0aCBoYW5kbGluZy4KCUFkZHMgKlBhdGggZnVuY3Rpb25zIHRvIGRjIGZ1bmNzIHRhYmxlICsgYWRkIEVuaE1ldGFGaWxlIHJlY29yZGluZy4KCVNlcGFyYXRlIG91dCBQb2x5bG5lL1BvbHlsaW5lVG8gYW5kIFBvbHlCZXppZXIvUG9seUJlemllclRvIGluIGRjCglmdW5jcyB0YWJsZSB0byBlbmFibGUgcHJvcGVyIGVuaG1ldGFmaWxlIHJlY29yZGluZy4KCVRoZSBjdXJyZW50IHBvc2l0aW9uIHVwZGF0ZSBpbiAqVG8gZnVuY3Rpb25zIGlzIG5vdyBoYW5kbGVkIGJ5IHRoZQoJbWFpbiBmdW5jdGlvbiBhbmQgbm90IGluIHRoZSBkcml2ZXJzLgoJTW92ZSBVU0VSIGZ1bmN0aW9ucyBmcm9tIGdyYXBoaWNzL3BhaW50aW5nLmMgLT4gd2luZG93cy9wYWludGluZy5jCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuc3BlYywgaW5jbHVkZS9vbGUydmVyLmgsIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHRoZSBPTEUgdmVyc2lvbiByZXR1cm5lZCB3YXMgdG9vIGxvdwoJLSByZW5hbWVkIE9BQnVpbGRWZXJzaW9uMTYgdG8gT2FCdWlsZFZlcnNpb24xNgoJLSBzcGVsbGluZyBmaXhlcwoKCSogZmlsZXMvZHJpdmUuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRml4IEdldEN1cnJlbnREaXJlY3RvcnlBIGFuZCBXIHRvIHJldHVybiB0aGUgbmVlZGVkIHNwYWNlIGZvciB0aGUgQ1dELAoJaWYgdGhlIGJ1ZmZlciBzaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guCgoJKiBjb250cm9scy9idXR0b24uYywgd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVtb3ZlIGhhY2sgZm9yIGtleWJvYXJkIG1lc3NhZ2VzIGluIGRpYWxvZ3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglTdHVicyBmb3IgVk1NIEdldERlbWFuZFBhZ2VJbmZvIGZ1bmN0aW9uIGFuZCBWV2luMzIgIkdldCBWTUNQRCBWZXJzaW9uIi4KCUltcGxlbWVudGF0aW9uIGZvciBWV2luMzIgSW50MzEvRFBNSSBkaXNwYXRjaCBjYWxsLgoJRml4ZWQgImRhbmdsaW5nIGVsc2UiIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJV2hlbmV2ZXIgd2UgZG8gYW4gc3RybmNweSB3ZSBzaG91bGQgbWFrZSBzdXJlIHdlIHB1dCBhICdcMCcgYXQgdGhlIGVuZAoJb2YgdGhlIGJ1ZmZlci4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWlzYy90b29saGVscC5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFRocmVhZDMyRmlyc3QvTmV4dCBzdHVicy4KCgkqIGluY2x1ZGUvdGhyZWFkLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgd2luZXNlcnZlcidzIGJ1ZmZlciAmIGJ1ZmZlcl9zaXplIGF0IHRoZSBlbmQgb2YgVEVCIHNvIHRoYXQgSUUKCWRvZXNuJ3Qgb3ZlcndyaXRlIHRoZW0uCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1jaUluZm8uCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFdBVkVfRk9STUFUX1FVRVJZIGZsYWcgaW4gd29kT3Blbi4KCgkqIGRsbHMvbXNhY20zMi9zdHJlYW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3JyZWN0bHkgaW1wbGVtZW50IEFDTV9TVFJFQU1PUEVORl9RVUVSWSBmbGFnIGluIGFjbU9wZW5TdHJlYW0uCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIE1DSV9PUEVOIGNvbW1hbmQgZm9yIHR5cGVzIGxpa2UgIkNEQVVESU8hSDoiLgoKCSogZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhdy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXJnZWQgX2FsbF8gbHBDbGlwcGVyIGludG8gY29tbW9uX3N1cmZhY2UuCglBZGQgTlVMTCBwdHIgY2hlY2sgdG8gU2V0Q2xpcHBlci4KCVNvbWUgbW9yZSBkZWJ1ZyBvdXRwdXQuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSB0aGUgcmVhbCBnbGliYyBvcGVucHR5IGlmIHByZXNlbnQuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHR5cGVkZWYgdG8gaW5zdXJlIGNvbXBpbGF0aW9uIG9uIGFsbCBnY2MmZWdjcyB2ZXJzaW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBfY29weV9yZWdpc3RyeSgpLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy9lc2EubmxzLCBvbGUvbmxzL2VzYy5ubHMsIG9sZS9ubHMvZXNkLm5scywgb2xlL25scy9lc2cubmxzLCBvbGUvbmxzL2VzbS5ubHMsIG9sZS9ubHMvZXNuLm5scywgb2xlL25scy9lc3AubmxzOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBzb21lIGNvbnN0YW50cyBmb3IgU3BhbmlzaC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDYWxsIERsbEVudHJ5UG9pbnQgZm9yICpldmVyeSogcHJvY2VzcyB0aGF0IGxvYWRzIHRoZSBETEwsIG5vdAoJanVzdCBmb3IgdGhlIGZpcnN0IG9uZS4KCUJ5cGFzcyAzMi0+MTYtPjMyIHRyYW5zaXRpb24gd2hlbiBjYWxsaW5nIERsbEVudHJ5UG9pbnQgb2YgYnVpbHQtaW4uCgoJKiBpZjE2MzIvdXNlci5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVVNFUi5EbGxFbnRyeVBvaW50KCkuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCAxNi1iaXQgaW5zdGVhZCBvZiAzMi1iaXQgVXNlclNpZ25hbFByb2MgZW50cnkgcG9pbnQuCglEb24ndCBsb2FkIFVTRVIzMi5ETEwgdW5sZXNzIHJlcXVlc3RlZCBieSB0aGUgcHJvZ3JhbS4KCUJ1Z2ZpeDogUGFzcyB0aGUgY29ycmVjdCB0aHJlYWQgSUQgdG8gVXNlclNpZ25hbFByb2MuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIG1hcCBmYWlscy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJU2hvdyB1c2Ugb2YgdW5kb2N1bWVudGVkIG1lc3NhZ2VzLgoKCSogaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlbW92ZWQga2V5Ym9hcmQgYXV0by1yZXBlYXQgd2hlbiBESW5wdXQgYWNxdWlyZXMgaXQKCS0gcmVtb3ZlZCBzb21lIChub3cpIG9ic29sZXRlIGZpeG1lJ3MKCgkqIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZWQgbHBDbGlwcGVyIGludG8gY29tbW9uX2RpcmVjdGRyYXdzdXJmYWNlIHN0cnVjdAoJUmVsZWFzZSBvbGQgY2xpcHBlciBvbiBuZXcgc2V0CgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZha2UgTUlESV9JT19TVEFUVVMgc3VwcG9ydCBpbiBtaWRpIGluIG9wZW4KCUZpeGVkIGJ1ZyBpbiBtaWRpIGluIHdoaWxlIHJlYWRpbmcgZGF0YQoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW5maW5pdGUgbG9vcCBmb3IgMC1sZW5ndGggd2F2ZWhkcnMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z2d5IHBsYXliYWNrIGZvciBub24gUENNIGZpbGVzCglBZGRlZCBzdXBwb3J0IGZvciBmcm9tICYgdG8gaW5kZXhlcyBmb3IgcGxheWJhY2sKCU5vdyB1c2luZyBkb3VibGUgd2F2ZWhkciBmb3IgYmV0dGVyIG91dHB1dAoJQ2xlYW5lZC11cCBpbnRlcm5hbCBzdHJ1Y3RzIGFuZCByZW1vdmVkIGxhc3QgMTYgYml0IEFQSSBhZGhlcmVuY2UKCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUcmllZCB0byByZWR1Y2UgZWNobyBpbiBwbGF5U291bmQgQVBJICh1c2luZyB0d28gd2F2ZWhkciBpbnN0ZWFkIG9mCglvbmUpLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNhbGxiYWNrIG1lY2hhbmlzbXMgZm9yIE1JREkgSU4uCgoJKiBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20zMi93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGltcHJvcGVyIGFjbSBzdHJlYW1zIGNsb3NpbmcuCgoJKiBkbGxzL21zYWNtMzIvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRGVidWcgdHJhY2VzIGNvc21ldGljIGZpeGVzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGVycm9ycyAodGhhbmtzIHRvIEYgR291Z2V0IGZvciByZXBvcnRpbmcgdGhlbSkuCglBZGRlZCBzb21lIGJpdHMgb24gdGh1bmtpbmcgYW5kIHJlc291cmNlcyBmb3IgRExMcy4KClNhdCBEZWMgIDQgMDQ6MjI6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpcnN0IHN1cHBvcnQgb2YgREdBIDIuMCBmb3IgRGlyZWN0RHJhdy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCUVyZXogVm9sayA8ZXJlekBnbXgubmV0PgoJU3R1YnMgZm9yIEdldC9TZXRQcm9jZXNzRGVmYXVsdExheW91dC4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBDbG9zZVByb2ZpbGVVc2VyTWFwcGluZy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVc2UgRElucHV0J3MgaW50ZXJuYWwgbW91c2UgZXZlbnQgaGFuZGxlciB0byBoYW5kbGUgdGhlIEdldERldmljZVN0YXRlCglmdW5jdGlvbi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJd2F2ZUhkci5scERhdGEgd2FzIGV2ZW50dWFsbHkgSGVhcEZyZWUoKWVkIHVuaW5pdGlhbGl6ZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFNlcmdlaSBUdXJjaGFub3YgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PgoJRml4IGZvciBHZXRCaW5hcnlUeXBlIHRvIHJldHVybiBTQ1NfRE9TX0JJTkFSWSBpZiBleHRlbmRlZCBzaWduYXR1cmUKCWlzIHVua25vd24uCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIDMyLWJpdCBtb2R1bGUgbmFtZSBoYW5kbGluZyB0byBjb25mb3JtIGJldHRlciB0byBXaW45eC4KCVJlbW92ZWQgT0ZTVFJVQ1QgcGFzc2luZyBkdXJpbmcgcHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZS4KCUJ1Z2ZpeDogZG9uJ3Qgc2V0IGV4ZV9tb2RyZWYgd2hlbiBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgaXMgc2V0LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvd2luc3ZjLmgsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglBZGRlZCBjb2RlIHRvIHNvbWUgc2VydmljZSBmdW5jdGlvbnMgKHNvbWUgdW50ZXN0ZWQpLCBmaXhlZAoJZGVjbGFyYXRpb24gb2Ygc2VydmljZSBtYWluIGZ1bmN0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCVBpZXJyZSBNYWdlYXUKCU11cmFsaSBQYXR0YXRoZQoJRnJhbmNvaXMgQm9pc3ZlcnQKCUZyYW5jaXMgQmF1ZGV0CglIZW5uaW5nIEhvZmZtYW5uCglNYW55IGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHN0dWJzIGZvciBzZXZlcmFsIE1SVSBsaXN0IGZ1bmN0aW9ucyBhbmQgZG9jdW1lbnRlZCBzb21lIG90aGVycy4KCgkqIHNlcnZlci9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRmx1c2ggaGFuZGxlIGluIGFueSBhY2Nlc3MgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIG9mZiBieSBvbmUgZXJyb3IgaW4gaXRlbSBpbnNlcnRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvdyAxJSBkZXZpYXRpb24gZnJvbSBzcGVjaWZpZWQgc2FtcGxpbmcgcmF0ZSBmb3Igc29tZSBzb3VuZGNhcmRzLgoKCSogaW5jbHVkZS9kM2QuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHByZXNzZWQgdGhlIGluY2x1c2lvbiBvZiBPcGVuR0wgaGVhZGVycy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgc3R1YiBmb3IgY29udmVyc2lvbiBmcm9tIG1ldGEgdG8gZW5oYW5jZSBtZXRhIGZpbGVzLgoJLSBJbXBsZW1lbnRlZCBHZXRFbmhNZXRhRmlsZUJpdHMgZm9yIGVuaGFuY2VkIG1ldGEgZmlsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJSW1wcm92ZWQgc3R1YnMgZm9yIHRoZSBkZHJhdyBjbGlwcGVyIHJvdXRpbmVzLgoKTW9uIE5vdiAyOSAwMjo0ODo0MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvdGltZS5jOiBNYWRlIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lIHJldHVybiB2YWx1ZSBtb3JlIHByZWNpc2UuCgoJKiBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYzoKCUZpeGVkIGdldF9ldmVudF9vYmovZ2V0X2ZpbGVfb2JqIHRvIHVzZSB0aGUgcHJvY2VzcyBwYXJhbWV0ZXIgKHRoYW5rcwoJdG8gRXJpYyBQb3VlY2gpLgoKCSogc2VydmVyL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYzoKCUZpeGVkIERFQlVHX09OTFlfVEhJU19QUk9DRVNTIGFnYWluICh0aGFua3MgdG8gVWxyaWNoIFdlaWdhbmQpLgoKCSogc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbjoKCUltcGxlbWVudGVkIHdhaXRhYmxlIHRpbWVycy4KClN1biBOb3YgMjggMjE6MDM6NDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2JpbjJyZXMuYzogQnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGluY2x1ZGUvcHJzaHQuaDoKCVNlcmdlIEl2YW5vdgoJUGllcnJlIE1hZ2VhdQoJVGh5IE5ndXllbgoJRG9uIEtlbGx5CglOb29tZW4gSGFtemEKCUxvdHMgb2YgYnVnIGZpeGVzIGFuZCBuZXcgZmVhdHVyZXMgaW4gcHJvcGVydHkgc2hlZXRzLgoKCSogd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZGxscy9jb21jdGwzMi90YWIuYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJQ29tcGlsZXIgd2FybmluZ3MgZml4ZWQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglHaXZlIHRoZSBhcHAgYmFjayB0aGUgZXhhY3QgZm9udCBuYW1lIGl0IGFza2VkIGZvci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCVByZXZlbnQgYSBjcmFzaCBpZiBtZXNzYWdlcyBhcmUgc2VudCB0byBhIHRvb2xiYXIgd2luZG93IGJlZm9yZQoJV01fTkNDUkVBVEUgb3IgYWZ0ZXIgV01fREVTVFJPWS4KCgkqIGRsbHMvd2lubW0vd2lubW1fRXMucmM6IEp1bGlvIENlc2FyIEdhenF1ZXogPGpnYXpxdWV6QGRsZC5uZXQ+CglVcGRhdGVkIFNwYW5pc2ggTU0gZXJyb3Igc3RyaW5nIHRyYW5zbGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSAoZmluYWw/KSB1cGRhdGUgb2YgVHJlZVZpZXdfKiBtYWNybydzLgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBUVk1fU0VUSU5TRVJUTUFSSyAmIFRWTV9TRVRJTlNFUlRNQVJLQ09MT1IKCS0gZml4ZWQgc29tZSB0eXBvJ3MKCS0gY3VzdG9tIGRyYXcgZW5oYW5jZW1lbnRzCgktIGltcGxlbWVudGF0aW9uIG9mIHN0YXRlIGltYWdlcwoJLSBpbXBsZW1lbnRhdGlvbiBvZiBUVlNfQ0hFQ0tCT1hFUwoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIHZpc3VhbCB0b29sYmFyIGJ1Z3MuCgoJKiBSRUFETUU6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUFkZGVkIG5vdGVzIGFib3V0IFdpbmUtcmVsYXRlZCBGcmVlQlNEIGtlcm5lbCBwYXRjaGVzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVVzZSBSZWdRdWVyeUluZm9LZXkgdG8gY291bnQgbnVtYmVyIG9mIHByaW50ZXJzLgoKCSogc2VydmVyL3VuaWNvZGUuaDogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRG9uJ3QgdHJ5IHRvIGNhbGwgdG93dXBwZXIoKSB3aGVuIHRoZXJlJ3Mgbm8gd2N0eXBlLmguCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVdoZW4gY29tYm9ib3ggc2VsZWN0aW9uIGNoYW5nZXMsIHVwZGF0ZSBpdHMgZWRpdCBib3ggYWNjb3JkaW5nbHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTm90aWZ5IHBhcmVudCBvZiBsaXN0Ym94IGlmIHJlcXVlc3RlZC4KClRodSBOb3YgMjUgMjM6NDI6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wdHJhY2UuYzogTW9yZSBwb3J0YWJpbGl0eSBmaXhlcyAodGhhbmtzIHRvIEp1ZXJnZW4gTG9jaykuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCVNldC91c2UgZnMvZ3MgZnJvbSB0aGUgc2lnY29udGV4dCBzdHJ1Y3QsIHRoZSBjb3JyZXNwb25kaW5nIGtlcm5lbAoJY2hhbmdlIG5vdyBmaW5hbGx5IGhhcyBiZWVuIE1GQydkIHRvIC1zdGFibGUuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglNZW50aW9uIGZyZWUgVHJ1ZXR5cGUgZm9udCBzZXJ2ZXJzIChYZnN0dCBhbmQgeGZzZnQpLgoKCSogd2luZWRlZmF1bHQucmVnOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglOb3RlIHdoYXQgdG8gZG8gd2l0aCB0aGUgd2luZWRlZmF1bHQucmVnIGluIHRoZSBmaWxlLgoKCSogd2luMzIvZGV2aWNlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUltcGxlbWVudGVkIHBhcnRzIG9mIF9QYWdlUmVzZXJ2ZSgpIF9QYWdlQ29tbWl0KCkgX1BhZ2VEZWNvbW1pdCgpCglfUGFnZUNoYW5nZVBlcm1pc3Npb25zKCkgYW5kIF9QYWdlRnJlZSgpIHVzaW5nIHRoZQoJVmlydHVhbCooKS1GdW5jdGlvbnMgKHdpdGggdGhlIGdyZWF0IGhlbHAgb2YgVWxyaWNoIFdlaWdhbmQpLgoKCSogbWVtb3J5L2F0b20uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglSZW1vdmVkIGZpeG1lLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBTZXZlcmFsIGJ1ZyBmaXhlcyBpbiBzYXZlX2tleSgpLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYm9ndXMgZXJyb3IgZGV0ZWN0aW9uIGZvciBSZWdFbnVtVmFsdWVbQVddIGFuZAoJUmVnUXVlcnlWYWx1ZUV4W0FXXS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBnbG9iYWwgZGF0YSBtdXR1YWwgZXhjbHVzaW9uCgktIFJlbW92ZWQgaGFjayBmb3IgY3JlYXRpbmcgcHJvY2Vzc2VzIHN1c3BlbmRlZCBub3cgdGhhdCBpdCdzIGltcGxlbWVudGVkCgktIEZpeGVkIG9yZGluYWwgbnVtYmVyaW5nIGFuZCBhZGRlZCBzcGVjIHN0dWJzCgktIEZpeGVkIEVudW1Db25uZWN0aW9ucyBjYWxsYmFjayB0byBmaWxsIGluIGFsbCBwYXJhbWV0ZXJzIHdpdGggdmFsaWQgZGF0YQoJLSBNYWRlIGRpcmVjdCBwbGF5IGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuIGFzCgkgIGRpcmVjdCBwbGF5IGxvYmJ5CgoJKiBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU2V2ZXJhbCBpbXByb3ZlbWVudHMuCgoJKiBvbGUvb2xlMm5scy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgaW52YWxpZCBMQ01hcFN0cmluZyBmaXhtZSBmb3IgTk9STV9JR05PUkVLQU5BVFlQRSBjYXNlLgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgd2luMTYgc2VyaWFsIGNvbW1zIGxlc3Mgb2YgYSBDUFUgaG9nLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5jLCBzZXJ2ZXIvdW5pY29kZS5oOgoJU3RvcmUgYWxsIG9iamVjdCBuYW1lcyBhcyBVbmljb2RlIGluIHRoZSBzZXJ2ZXIuCgpXZWQgTm92IDI0IDE5OjM0OjMyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luZS5pbmk6CglBZGRlZCB3aW5lLmNvbmYgb3B0aW9uIGZvciBuZXcgZm9ybWF0IHJlZ2lzdHJ5IGZpbGVzLgoJQWRkZWQgb3B0aW9uYWwgcGVyaW9kaWMgc2F2aW5nIG9mIHRoZSByZWdpc3RyeS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmM6CglBZGRlZCBzdXBwb3J0IHRvIHRoZSBzZXJ2ZXIgZm9yIGxvYWRpbmcgbmV3IGZvcm1hdCAodmVyc2lvbiAyKSBmaWxlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogQnVnIGZpeGVzICh0aGFua3MgdG8gSnVlcmdlbiBTY2htaWVkKS4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUFkZGVkIGN1cnJlbnQgY29udGV4dCB0byB0aGUgZXhjZXB0aW9uIGRlYnVnIGV2ZW50IHNlbnQgdG8gdGhlIHNlcnZlci4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUZpeGVkIGhhbmRsaW5nIG9mIGRlYnVnIGV2ZW50cyBvbiB0aHJlYWQvcHJvY2VzcyBleGl0LgoKCSogZGVidWdnZXIvZGJnLnksIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGEgY3JpdGljYWwgc2VjdGlvbiB3YWl0IGZhaWxlZC4KClR1ZSBOb3YgMjMgMjM6NDM6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3R0eWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdHR5ZHJ2L2JpdGJsdC5jLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9icnVzaC5jLCBncmFwaGljcy90dHlkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvdHR5ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3R0eWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3Blbi5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wcm92ZWQgdGhlIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9pbWFnZWxpc3QuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGZpcnN0ICdkdW1teScgaW1wbGVtZW50YXRpb24gb2YgSW1hZ2VMaXN0X1JlYWQKCgkqIGluY2x1ZGUvcmViYXIuaCwgZGxscy9jb21jdGwzMi9yZWJhci5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gYWRkZWQgdmVyc2lvbiBtZXNzYWdlcwoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBpbXBsZW1lbnRlZCBMQkl0ZW1Gcm9tUHQKCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gaW1wbGVtZW50ZWQgc2ltcGxlIGNvbHVtbiBvcmRlciBhcnJheSBmdW5jdGlvbmFsaXR5CgktIGltcGxlbWVudGVkIHNvbWUgdmlydHVhbCBsaXN0dmlldyBub3RpZmljYXRpb25zCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gbWlub3IgdXBkYXRlIHRvIG1ydSBsaXN0IGZ1bmN0aW9ucwoJLSBzdHVicyBmb3IgQ09NQ1RMMzJfNDExIHRvIENPTUNUTDMyXzQxMwoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvdG9vbGJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gYWRkZWQgdmVyc2lvbiBtZXNzYWdlcyBhbmQgc29tZSBzaW1wbGUgZ2V0L3NldCBtZXNzYWdlcy4KCS0gYWRkZWQgdW5pY29kZSBtZXNzYWdlcwoKCSogaW5jbHVkZS9zaGxndWlkLmgsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBtYWRlIElTaGVsbEZvbGRlciBhIGFnZ3JlZ2FibGUgb2JqZWN0CgktIFNIQ29DcmVhdGVJbnN0YW5jZSBjYW4gY3JlYXRlIENTSURMX0ZTRm9sZGVyIG5vdwoJLSBicm93c2luZyBpbnRvIGZvbGRlcnMgb24gdGhlIGRlc2t0b3AgaW1wbGVtZW50ZWQKCS0gY29ycmVjdGVkIHJldHVybnZhbHVlIG9mIEljb19FeHRyYWN0SWNvbkV4CgktIGZpeGVkIFNIR2V0RGF0YUZyb21JRExpc3QgdG8gcmV0dXJuIGRhdGEgb2Ygc2ltcGxlIHBpZGxzCgoJKiByZWxheTMyL3dzb2NrMzIuc3BlYywgaWYxNjMyL3dpbnNvY2suc3BlYywgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJTW9zZXMgRGVKb25nIDxkZWpvbmdAY3MudW1uLmVkdT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIGZvciBXU0FSZWN2RXggZnVuY3Rpb24uIFRoaXMgaXMgYSBNaWNyb3NvZnQKCXNwZWNpZmljIGV4dGVuc2lvbiB0byB0aGUgd2luc29jayBBUEkuCgoJKiBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tcHIvcHdjYWNoZS5jLCBpbmNsdWRlL3dpbm5ldHdrLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvcnJlY3RlZCB3cm9uZyBwYXJhbWV0ZXIgY291bnRzIGZvciBXTmV0Q2FjaGVQYXNzd29yZCBhbmQKCVdOZXRFbnVtQ2FjaGVkUGFzc3dvcmRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBzdHViIGZvciBEbGxJbnN0YWxsKCkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLCBpZjE2MzIva2VybmVsLnNwZWM6CglDaGFuZ2VkIHRvIHVzZSBuZXcgc2VydmVyLXNpZGUgcmVnaXN0cnkgc3VwcG9ydC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuaDoKCUFkZGVkIHJlZ2lzdHJ5IHN1cHBvcnQgdG8gdGhlIHNlcnZlci4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6CglEaWZmZXJlbnRpYXRlIHRyYWNpbmcgZnVuY3Rpb25zIGJldHdlZW4gcmVxdWVzdCBhbmQgcmVwbHkuCglBZGRlZCBwb3NzaWJpbGl0eSB0byBoYXZlIGR1bXBpbmcgZnVuY3Rpb25zIGZvciBzcGVjaWZpYyB0eXBlcy4KClN1biBOb3YgMjEgMjE6MDI6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUFkZGVkIHNlcnZlcl9jYWxsX25vZXJyIGZ1bmN0aW9uIHRoYXQgYXZvaWRzIHRvdWNoaW5nIHRoZSBsYXN0IGVycm9yLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBBZGRlZCBhIGZldyByZWdpc3RyeSBlcnJvciBjb2Rlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBzb21lIHVuYWxpZ25lZCBhY2Nlc3Nlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSB0aGUgZm9kSW5mb3Mgd2VyZSB1c2VkIGJlZm9yZSBpbml0aWFsaXplZAoJLSBscFRlbXBsYXRlTmFtZSBjYW4gYmUgYSByZXNvdXJjZSBpZAoJLSBpZiBscFRlbXBsYXRlTmFtZSBpcyBhIHN0cmluZyBkb24ndCBmcmVlIHRoZSBvcmlnaW5hbCBvbmUKCgkqIHdpbjMyL2NvbnNvbGUuYywgd2luMzIva2VybmVsMzIuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvY3B1LmMsIG1zZG9zL2lvcG9ydHMuYywgb2xlL2d1aWQuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc29ja2V0LmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCBkbGxzL3dpbm1tL21jaS5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5nL3dpbmdfbWFpbi5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglSZW1vdmVkIGV4dHJhICNpbmNsdWRlIHN0YXRlbWVudHMuCgoJKiBmaWxlcy9maWxlLmM6CglGaXhlZCBNb3ZlRmlsZUV4QSBiZWhhdmlvciB3aGVuIHRhcmdldCBmaWxlIGRvZXMgbm90IGV4aXN0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9QdC5yYzoKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDx0d2luZm9AYmVzdHdheS5jb20uYnI+CglBZGRlZCBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBjdXJyZW50IGRheSBjaXJjbGluZy4gIEZpeGVkIG1hbnkgYnVncyBpbiB0aGUgbW9udGgKCWNhbGVuZGVyIGNvbnRyb2wgaW5jbHVkaW5nIGNvbnRyb2wgc3BhY2luZyBhbmQgYWxpZ25tZW50LiAgRml4ZWQKCWRlZmluZXMgbW9udGhjYWwuaC4gIE9wdGltaXplZCBjb250cm9sIGRyYXdpbmcgYW5kIHJlbW92ZWQgbWFueQoJZXh0cmFuaW91cyByZWRyYXdzLiAgSW1wcm92ZWQgY29udHJvbCBiZWhhdmlvci4gIEZpeGVkIGluY29uc2lzdGVudAoJZm9ybWF0dGluZyBpbiBib3RoIC5jIGFuZCAuaCBmaWxlcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZsdXNoIGN1cnJlbnQgcHJvZmlsZSBiZWZvcmUgdXNpbmcgYSBuZXdseSBvcGVuZWQgb25lLgoKCSogbWVtb3J5L3NlbGVjdG9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogR2V0VGhyZWFkU2VsZWN0b3JFbnRyeSgpIHNldHMgcmVhZC13cml0ZSBmbGFnIGluY29ycmVjdGx5LgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG9iamVjdHMvZm9udC5jLCBpZjE2MzIvZ2RpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGZvciBHZXRGb250RGF0YTE2LgoKCSogd2luZG93cy9kaXNwbGF5LmMsIGlmMTYzMi9kaXNwbGF5LnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIG9yZGluYWxzIGFuZCBHZXREcml2ZXJSZXNvdXJjZUlEKCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHRyYWNlLmM6IFBvcnRhYmlsaXR5IGZpeGVzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogRml4ZWQgbWVhbmluZyBvZiBERUJVR19PTkxZX1RISVNfUFJPQ0VTUyBmbGFnLgoKCSogdG9vbHMvYmluMnJlcy5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJRml4ZWQgY29tcGlsZSBlcnJvci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJSW1wbGVtZW50ZWQgU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJBIGFjY29yZGluZyB0byBEaXNwYXRjaGVyVy4KCgkqIE1ha2VmaWxlLmluOiBNYWtlIHN1cmUgd2UgY2xlYW4gZGxscy8gdG9vLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJSW1wbGVtZW50ZWQgT3BlblNDTWFuYWdlclcsIENsb3NlU2VydmljZUhhbmRsZSwgT3BlblNlcnZpY2VXLCBhbmQgc29tZQoJb2YgUXVlcnlTZXJ2aWNlU3RhdHVzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgJzsnLgoKCSogdG9vbHMvd3JjL3BhcnNlci5sOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVycm9yIHJlcG9ydGluZyBmaXguCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hhbmdlZCBkZWZhdWx0IHJlbGF5IGxpbmUgbnVtYmVyIGZyb20gMTAwIHRvIDIwMC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHVuZG9jdW1lbnRlZCBmZWF0dXJlIHRvIEluc2VydEJ1dHRvbkEuCglBZGRlZCBkcm9wZG93biBidXR0b24gc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBsYXkgYmFjayBvZiB1bmNvbXByZXNzZWQgQVZJIGZpbGUuCglGaXhlZCBleGl0aW5nIGNvbmRpdGlvbnMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgY3Jhc2ggaW4gSURpcmVjdERyYXdTdXJmYWNlOkJsdEZhc3QuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZvcndhcmRpbmcgYW5kIGhhbmRsaW5nIG1lc3NhZ2VzIGRpcmVjdGVkIHRvIHRoZSBtYXBwZXJzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBpbmNsdWRlL21vZHVsZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTaW1wbGlmaWVkIGhJbnN0YW5jZSBjcmVhdGlvbi9oYW5kbGluZy4KCUZpeGVzIHByb2JsZW1zIHdpdGggc2VsZi1sb2FkZXJzIGNyZWF0aW5nIERHUk9VUCB0aGVtc2VsdmVzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgc3R1YnMgZm9yIEdldC9TZXRMYXlvdXQoKS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIHN0dWIgZm9yIFN0Z1NldFRpbWVzLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNIRmluZF9Jbml0TWVudVBvcHVwIGlzIHN1cHBvc2VkIHRvIHJldHVybiBhIHBvaW50ZXIuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCXVfaW50WzE2fDMyXV90IG1pZ2h0IG5vdCBiZSBkZWZpbmVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBmaXhlZCBjcmFzaCB3aGVuIGFkZGluZyBpdGVtcyB3aXRoIFRWSV9TT1JUIGFuZCB3aW5lSXRlbS0+cHN6VGV4dCBpcwoJICBzZXQgdG8gTFBTVFJfVEVYVENBTExCQUNLLgoJLSBkaXR0byBmb3IgVFJFRVZJRVdfRGVsZXRlSXRlbSwgVFJFRVZJRVdfQ3JlYXRlRHJhZ0ltYWdlLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNb24gTm92IDE1IDAwOjQ2OjMwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOiBGaXhlZCBhbGxvY2F0aW9uIHJvdW5kaW5nIGZvciBNRU1fUkVTRVJWRS4KCgkqIHNlcnZlci9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaGFzaCBmdW5jdGlvbi4KClN1biBOb3YgMTQgMjM6NTk6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRoZSBhZHdJbmZvWzBdIGZpZWxkIHdhcyBubyBsb25nZXIgdXNlZCBvbiBtbWlvT3BlbiAobWF5IGNvbnRhaW4gZmlsZQoJaGFuZGxlKS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YnMgZm9yIFNldEVycm9ySW5mbywgUHJvcFZhcmlhbnRDbGVhciwgUHJvcFZhcmlhbnRDb3B5LAoJRnJlZVByb3BWYXJpYW50QXJyYXkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgc3VpY2lkZSBjb2RlIHdoZW4gcGxheWJhY2sgdGhyZWFkJ3MgZmF0aGVyIGRpZXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSB0aGUgY29sdW1zIGluIHRoZSBzaGVsbHZpZXcgYXJlIG5vdyBjcmVhdGVkIGRlcGVuZGluZyBvbiB0aGUKCSAgYXR0cmlidXRlcyBvZiB0aGUgZm9sZGVyIG9iamVjdCBzaG93bgoJLSBnZXQgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc2hlbGxmb2xkZXIgaW5zdGVhZCBkaXJlY3RseSBmcm9tIHRoZSBpZGxpc3QKCS0gaGVhZGVyIGZpZWxkcyBsb2NhbGl6ZWQgKG9ubHkgZW5nbC4gYW5kIGdlcm1hbiB0aWxsIG5vdykKCS0gc21hbGwgZml4ZXMKCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gY29ycmVjdGVkIGNvbnRyb2wgcG9zaXRpb25zCgktIHVzZSB0aGUgaWNvbnMgZnJvbSBjb21jdGwzMiBmb3IgdGhlIGJ1dHRvbnMKCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVsYXkvc25vb3AgZGVidWdnaW5nIHdhcyBicm9rZW4gYnkgbGFzdCBwYXRjaCAuLi4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCU1vdmVkIHB0cmFjZSBzdXBwb3J0IHRvIHB0cmFjZS5jLiBUcmllZCB0byBpbXByb3ZlIHBvcnRhYmlsaXR5LgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6IEJ1ZyBmaXhlcy4KCgkqIGlmMTYzMi9yZWxheS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNvbWUgdW5yZXNvbHZlZCBleHRlcm5hbHMgb24gbm9uLUludGVsIGFyY2hzLgoKCSogcmVsYXkzMi9zbm9vcC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgYXR0cmlidXRlIHRvIHR3byBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGxlZnRvdmVyICN1bmRlZnMuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUlnbm9yZSBNQ0lfT1BFTl9FTEVNRU5UIGluIENEQVVESU9fbWNpT3Blbi4KCgkqIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV29yayBhcm91bmQgZ2xpYmMgYnVnLCB0aGF0IGRvZXMgbm90IGhhbmRsZSBsYXRpbi0xIHVtbGF1dHMuCgpTYXQgTm92IDEzIDIzOjU0OjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXcgcmVnaXN0ZXIgZnVuY3Rpb24gaGFuZGxpbmcuCgoJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBXaW4zMiByZWdpc3RlciBmdW5jdGlvbiBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvaWNtcC9pcC5oLCBkbGxzL2ljbXAvaXBfaWNtcC5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgQlNEIGhlYWRlcnMgZm9yIElDTVAgcG9ydGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW5zZXJ0ZWQgbWFya2VycyBmb3IgdGhlIGJpbjJyZXMgdG9vbAoJLSByZWZvcm1hdGVkIGhleGR1bXAgaW4gc2hyZXMucmMKCgkqIGRvY3VtZW50YXRpb24vcmVzb3VyY2VzLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvYmluMnJlcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgdG9vbCB0byBjb252ZXJ0IHRoZSBiaW5hcnkgcmVzb3VyY2VzIGluICoucmMgZmlsZXMgKGhleGR1bXBzKSBmcm9tCglhbmQgdG8gYSBiaW5hcnkuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBtaXNjL3BvcnQuYywgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19hc3luYy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYmV0dGVyIG1pc3NpbmcgZnVuY3Rpb24gZW11bGF0aW9uLgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWRlIGRlYnVnZ2VyIGNvbXBpbGUgYW5kIG1hcmdpbmFsbHkgd29yayBvbiBub24tSW50ZWwgYXJjaHMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIEdFVF9JUCBtYWNybyB0byB3aW5udC5oCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLCBkb2N1bWVudGF0aW9uL3BzZHJpdmVyLCBkb2N1bWVudGF0aW9uL3BzZHJ2LnJlZywgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSBQb3N0U2NyaXB0IGRyaXZlciBkb2NzIHRvIGRvY3VtZW50YXRpb24vIC4gIEFkZCBpbnN0cnVjdGlvbnMgb24KCWhvdyB0byB1c2UgcmVnYXBpIHRvIGdldCBpbmZvcm1hdGlvbiBpbnRvIHRoZSByZWdpc3RyeS4gIFN1cHBseSBzYW1wbGUKCWlucHV0IHRvIHJlZ2FwaS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJSW1wbGVtZW50ZWQgdGhlIFByaW50U2V0dXAgZGlhbG9nIGJveCBmb3IgdGhlIFByaW50RGxnQS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglBZGRlZCB2YWxpZGF0aW9ucyBmb3IgcGFnZSBpbmRleCBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CgktIGZpeGVkIHRoZSBpbmRleCBvZiB0aGUgaXRlbSBjaG9zZW4gaW4gdGhlIGZpbHRlciBjb21ibyBib3gKCS0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIE9GTl9PVkVSV1JJVEVQUk9NUFQgZmxhZwoJLSBmaXhlZCBwb3NpdGlvbmluZyBvZiBjb250cm9scyBpbiB0aGUgdXNlci1kZWZpbmVkIHRlbXBsYXRlcwoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBXcml0ZVByb2Nlc3NNZW1vcnkgdGhyb3VnaCB0aGUgc2VydmVyLgoKCSogc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oOiBBZGRlZCBnZXRfcGFnZV9zaXplIGZ1bmN0aW9uLgoKRnJpIE5vdiAxMiAyMTozOToxNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgUmVhZFByb2Nlc3NNZW1vcnkgdGhyb3VnaCB0aGUgc2VydmVyLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgQ1JFQVRFX1NVU1BFTkRFRCBmbGFnIGluIENyZWF0ZVByb2Nlc3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRlZCBWV2luMzIgVnhEQ2FsbCBtZWNoYW5pc20gYW5kIDIgY2FsbHMuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmM6IDxqb2RhbWFuQGNlZ3QyMDEuYnJhZGxleS5lZHU+CglGaXhlZCBqb3lzdGljayBzY2FsaW5nLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYzoKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDx0d2luZm9AYmVzdHdheS5jb20uYnI+CglVc2UgY29uc3RhbnRzIElET0sgYW5kIElEQ0FOQ0VMIGluIC5yYyBmaWxlcy4KCgkqIHNlcnZlci90aHJlYWQuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglQb3J0YWJpbGl0eSBmaXg6IHJlbmFtZWQgUFRSQUNFXyogaW50byBQVF8qLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgZm9yIGJ1Z2d5IGFwcHMgdGhhdCBjYWxsIHRoZSB3cm9uZyBWeERDYWxsIHJvdXRpbmUuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNvbXBsZXRlIHN0dWIgZm9yIFJhc0VudW1FbnRyaWVzIGJ5IHNheWluZyB3ZSBoYXZlIDAgZW50cmllcy4KCgkqIGluY2x1ZGUvZGVidWdzdHIuaCwgbWlzYy9kZWJ1Z3N0ci5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlYnVnc3RyX2hleF9kdW1wIHRvIGFsbG93IGRpc3BsYXkgaGV4IGR1bXBzIG9mIGRhdGEgaW4gYW55CglkZWJ1Z2dpbmcgbWVzc2FnZS4KCgkqIHNlcnZlci90aHJlYWQuYzoKCUFkZGVkIHVzZV9wdHJhY2UgZmxhZyB0byBkaXNhYmxlIHB0cmFjZSB1c2FnZS4gU2hvdWxkIGV2ZW50dWFsbHkgYmUKCW1hZGUgaW50byBhbiBvcHRpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvZGxncy5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNYWRlIHRoZSBidXR0b25zIGluIHRoZSBmaWxlZGxnIGNoYW5nZSB3aGVuIHNlbGVjdGluZyBhIGRpZmZlcmVudAoJdmlldyB0eXBlIGJ5IHRoZSBjb250ZXh0IG1lbnUsIGNsZWFudXAuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCUp1bGlvIENlc2FyIEdhenF1ZXogPGpnYXpxdWV6QGRsZC5uZXQ+CglBZGRlZCBTcGFuaXNoIChwdXJlIENhc3RpbGxhbikgTU0gZXJyb3Igc3RyaW5nIHRyYW5zbGF0aW9uLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc2lnbmFsIGhhbmRsaW5nIGZvciBTUEFSQyAvIFNvbGFyaXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNvbW1lbnQgb3V0IGV4cGxpY2l0IGNhbGwgdG8gU0hFTExfU2F2ZVJlZ2lzdHJ5IHNpbmNlIHdpbmVsaWIgcHJvZ3JhbXMKCW5vdyBleGl0IHByb3Blcmx5LiAgQ2hhbmdlIHNldmVyYWwgTlVMTHMgdG8gJ1wwJ3MuICBGaXggc29tZSBzcGVsbGluZy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgWFNobSBjb21wbGV0aW9uIGV2ZW50IGxlYWsuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVjdXJzaW9uIGNvdW50IHdoaWxlIGNhbGxpbmcgbWlkaVN0cmVhbShQYXVzZXxSZXN0YXJ0KS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHNhdmVfY2hlY2tfdGFpbnRlZCB0byBwcm9wZXJseSBzY2FuIHRoZSB0cmVlIHNvIHRoYXQgYWxsIHRhaW50ZWQKCWJyYW5jaGVzIGdldCBzYXZlZC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJQmVybmQgUGF5c2FuIDxiZXJuZC5wYXlzYW5AZ214LmRlPgoJQWRkZWQgYSBzdHViIGZvciBzZXRqbXAuCgpXZWQgTm92IDEwIDIwOjI1OjE5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglEb24ndCBjcmFzaCB3aGVuIHdlIGdldCBhIFNJR0NITEQgZm9yIGEgcmVtb3ZlZCB0aHJlYWQuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBjb21waWxlIGZpeGVzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgkoUHJlbGltaW5hcnkpIENPTlRFWFQgc3RydWN0dXJlIGZvciBTUEFSQyBhZGRlZC4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IExPQURfRExMX0RFQlVHX0VWRU5UIGxwSW1hZ2VOYW1lIHBhcmFtZXRlciB3YXMgaW5jb3JyZWN0LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXaGVuIGRlY29tbWl0dGluZywgcmVtYXAgemVybyBwYWdlcyB1c2luZyBNQVBfRklYRUQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvR2V0Q2xhc3NPYmplY3Qgc2hvdWxkIGNvbXBsYWluIGFib3V0IG5vdCBiZWluZyBhYmxlIHRvIGRvCglvdXQtb2YtcHJvY2VzcyBzZXJ2ZXJzICpvbmx5KiBpZiB0aGUgYXBwbGljYXRpb24gZG9lc24ndCBpbmNsdWRlIHRoZQoJaW4tcHJvY2VzcyBvcHRpb25zLgoKCSogbWlzYy92ZXJzaW9uLmMsIGNvbnRyb2xzL2VkaXQuYywgaW5jbHVkZS93aW52ZXJzaW9uLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU2VuZCBXTV9DVExDT0xPUkVESVQgbm90IFdNX0NUTENPTE9SU1RBVElDIG1lc3NhZ2VzIHRvIHBhcmVudCBvZiBhCglkaXNhYmxlZCBlZGl0IGNvbnRyb2wgaWYgdGhlIGFwcGxpY2F0aW9uIGV4cGVjdHMgYSB3aW5kb3dzIHZlcnNpb24KCWJlZm9yZSBXSU45NSBhbmQgTlQ0MC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2ZpbGUuYzoKCU1vc2hlIFZhaW5lciA8bW9zaGV2QGVhc3liYXNlLmNvbT4KCVN0dWIgZm9yIEdldE92ZXJsYXBwZWRSZXN1bHQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGV0ZXJtaW5lIGV4cGVjdGVkX3ZlcnNpb24gb2YgUEUgYnVkZGllcyBmcm9tIHRoZSBTdWJzeXN0ZW1WZXJzaW9uLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL2V4Y2VwdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgKm5vdCogV0lOQVBJLgoKTW9uIE5vdiAgOCAwNTozMTo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCVByZWxpbWluYXJ5IHB0cmFjZSBzdXBwb3J0LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCVJlbWFwIHplcm8tcGFnZXMgd2hlbiBkZWNvbWl0dGluZyBhIHBhZ2UgcmFuZ2UgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUdlcmFyZCBQYXRlbCkuCgoJKiBNYWtlZmlsZS5pbiwgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9tYWluLmM6CglJbnN0YWxsIHRoZSB3aW5lIHNlcnZlciBpbiAkKGJpbmRpcikgYW5kIGV4ZWMgaXQgZnJvbSB0aGVyZS4KClN1biBOb3YgIDcgMjM6NTk6MDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJRG8gbm90IGZyZWUgdGhlIGhhbmRsZXMgb25jZSB0aGV5IGhhdmUgYmVlbiBzZW50IHRvIHRoZSBjbGllbnQgKHRoYW5rcwoJdG8gSmVyZW15IFdoaXRlKS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBhc2tlZCB0byB1c2Ugc3RyaW5ncyBpZGVudGlmaWVkIGJ5IHJlc291cmNlIGlkCglpbnN0ZWFkIG9mIHBvaW50ZXIuCgoJKiB3aW5kb3dzL2RjZS5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglXaGVuIHdpbmRvdyBjbGFzcyBoYXMgQ1NfQ0xBU1NEQyBzdHlsZSB3ZSBzaG91bGQgbm90IHJlbW92ZSB0aGUgREMKCXdoZW4gZGVzdHJveWluZyB0aGUgd2luZG93LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4ZXMgYW5kIHJlb3JnYW5pemF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9pZl9tYWNyb3MuaCwgaW5jbHVkZS9iaXRfYXJyYXkuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL29sZW9iai5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIG9ic29sZXRlIGZpbGVzIG5vIGxvbmdlciBpbiB1c2UuCgoJKiB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGlyZWN0WC1YU2htIG5vdyB3YWl0cyBmb3IgdGhlIFggc2VydmVyIHRvIGZpbmlzaCB0aGUgcHJldmlvdXMgZnJhbWUKCWJlZm9yZSBzZW5kaW5nIGFub3RoZXIgZnJhbWUgZG93biBpdHMgcGlwZSwgYXZvaWRpbmcgdGhlIFggc2VydmVyCglvdmVybG9hZCBhbmQgcmVzdWx0aW5nIHNsb3duZXNzIHRoYXQgdXNlZCB0byBiZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGluY2x1ZGUvZGxncy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHVuaWZpZWQgdGVtcGxhdGVzIGZvciB0aGUgb3BlbiBhbmQgdGhlIHNhdmUgZGxnCgktIHJlcGxhY2VkIGJ1dHRvbnMgd2l0aCBhIHRvb2xiYXIKCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBpbnRlcmZhY2UgZGVjbGFyYXRpb24gZm9yIElTaGVsbGZvbGRlcjIKCS0gYWRkZWQgdGhpcyBpbnRlcmZhY2UgdG8gYWxsIHNoZWxsIGZvbGRlcnMKCS0gc21hbGwgZml4ZXMgdG8gc2hlbGx2aWV3IChjcmFzaCB3aXRoIG5hdGl2ZSBjb21kbGczMikKCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSByZWxvY2F0aW9uIGhhY2sgaW4gUEVfSW5pdFRscy4gQWRkZWQgc29tZSBtb3JlIGZvciB0aGUgb3RoZXIKCXBvaW50ZXJmaWVsZHMgaW4gdGhlIFRMUyBlbnRyeS4gKFdpdGggdGVzdGluZyBoZWxwIGZyb20gSnVzc2kKCUp1bXBwYW5lbiA8anVzc2lqQHpldXNlZGl0LmNvbT4pLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBDaGFuZ2VEaXNwbGF5U2V0dGluZ3NFeEEgc3R1YiBhbmQgc29tZSBmbGFnIGRlZmluZXMuCgoJKiBpbmNsdWRlL2NvbnNvbGUuaDogUm9iZXJ0ICdBZG1pcmFsJyBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglBZGRlZCB0aGUgaGV4IHRyaXBsZXRzIHRvIHRoZSBjb25zb2xlIGNvbG9yIGRlZmluaXRpb25zLgoKCSogd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGluY2x1ZGUvaW5wdXQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgdGhlIHBvc3NpYmlsaXR5IHRvIGhhdmUgbW91c2UgbW92ZW1lbnRzIHJlcG9ydGVkIHJlbGF0aXZlIHRvCglXaW5lJ3MgbW91c2UgZHJpdmVyLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvd2luZS9pY21wYXBpLmgsIGluY2x1ZGUvd2luZS9pcGV4cG9ydC5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmUuaW5pOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBJQ01QIERMTCBpbXBsZW1lbnRhdGlvbi4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy9DSEFOR0VTOgoJSnVlcmdlbi5TY2htaWVkQGRlYml0ZWwubmV0CgktIEJ1Z2ZpeDogU3R5bGVzIHdlcmUgZXZhbHVhdGVkIGFzIGV4cHJlc3Npb25zLiBUaGUgTk9UIGluIGNvbWJpbmF0aW9uCgkgIHdpdGggc3R5bGUgZmxhZ3Mgd2FzIG5vdCBvdmVyd3JpdGluZyB0aGUgZGVmYXVsdCBzdHlsZXMgbGlrZSBXU19WSVNJQkxFLgoJICBTb2x2ZWQgYnkgaW50cm9kdWNpbmcgb3duIHJ1bGVzIGZvciBwYXJzaW5nIHN0eWxlcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUZpeGVkIHRoZSBoZWlnaHQgb2YgdGhlIENvbWJvQm94IGRyb3AgbGlzdC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERhdmlkIEdyYW50IDxkYXZpZGdyYUBjb3JlbC5jYT4KCVdpbmRvd3Mgc2VuZHMgV01fR0VURExHQ09ERSBvbmx5IGluIHJlc3BvbnNlIHRvIGtleWJvYXJkIG1lc3NhZ2VzCgkoV01fS0VZRE9XTiwgV01fQ0hBUiwgV01fU1lTQ0hBUikuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgbWlzc2luZyBfX2F0dHJpYnV0ZV9fICgoY29tX2ludGVyZmFjZSkpIGZvciBJVW5rbm93biB3aXRoLgoJICBJQ09NX1VTRV9DT01fSU5URVJGQUNFX0FUVFJJQlVURQoJLSBTbWFsbCBhZGRpdGlvbiB0byBjb21tZW50cyBzdXJyb3VuZGluZwoJICBJQ09NX1VTRV9DT01fSU5URVJGQUNFX0FUVFJJQlVURSAib3B0aW9uIi4KCgkqIG9sZS9vbGUybmxzLmMsIGlmMTYzMi9vbGUybmxzLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3Rlck5MU0luZm9DaGFuZ2VkLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHdpbmRvd3MvcXVldWUuYywgbWVtb3J5L2hlYXAuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkcmVzc2VzIGlzc3VlcyB3aXRoIG11bHRpcGxlIHByb2Nlc3NlcyBhY2Nlc3Npbmcgbm9uLWdsb2JhbCBjcml0aWNhbAoJc2VjdGlvbnMuCgoJKiBzZXJ2ZXIvc29jay5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBidWcgaW4gV0lOU09DS19hY2NlcHQgd2hlbiBubyBldmVudCBpcyBwcmVzZW50LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9sbWNvbnMuaCwgaW5jbHVkZS9yYXMuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBzdHVicyBmb3IgUmFzRW51bUVudHJpZXNBIGFuZCBSYXNHZXRFbnRyeURpYWxQYXJhbXNBLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRhdGlvbiBvZiBjdXN0b20gZGlhbG9nIG1lc3NhZ2VzIGFuZCBub3RpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEYXZpZCBHcmFudCA8ZGF2aWRncmFAY29yZWwuY2E+CgktIFByb3BlciBpbml0aWFsaXphdGlvbiBvZiBjY2hUZXh0TWF4IGZpZWxkIHdhcyBhZGRlZCBmb3IKCSAgVFZOX0dFVERJU1BJTkZPIG5vdGlmaWNhdGlvbiBtZXNzYWdlLgoJLSBUVk1fU0VUSVRFTSBzaG91bGQgdXBkYXRlICdtYXNrJyBmaWVsZCB0byBzeW5jaHJvbml6ZSBpdCB3aXRoCgkgIGN1cnJlbnQgaXRlbSBzdGF0ZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJZiBQYWdlU2l6ZS9JbnB1dFNsb3QgZW50cnkgZG9lc24ndCBjb250YWluIGFuIG9wdGlvbnMgdHJhbnNsYXRpb24KCXN0cmluZyB1c2UgdGhlIG9wdGlvbiBuYW1lIGluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFNldFRpdGxlQSB3aGVuIHN0cmluZyByZXNvdXJjZXMgd2VyZSB0byBiZSBsb2FkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCS0gRml4ZWQgYW4gZXJyb3IgZm9yIHNjcm9sbGluZyBpbiBMaXN0dmlldyAoc29tZXRpbWVzIGEgY29sdW1uIHdvdWxkCgkgIG5vdCBiZSB2aXNpYmxlKSBkdWUgdG8gbXkgbGFzdCBjaGVja2luLgoJLSBGaXhlZCBhbiBlcnJvciBmb3IgdGhlIGhlYWRlciBjb250cm9sIHdoZW4gdGhlIExpc3R2aWV3IGlzIHJlc2l6ZWQgd2l0aCBXTV9TSVpFCgktIEZpeGVkIHRoZSBzY3JvbGxpbmcgZm9yIHNtYWxsIGFuZCBsYXJnZSBpY29uICh0aGlzIGJyb2tlIGJlY2F1c2Ugb2YKCSAgdGhlIHVzZSBvZiBTQl9QQUdFIGluIHNjcm9sbEluZm8pCgktIEFkZGVkIGEgcGF0Y2ggbWFkZSBieSBOb29tZW4gSGFtemEgdG8gdXBkYXRlIHRoZSBpdGVtIHdpZHRoIHdoZW4KCSAgYWRkaW5nIGEgbmV3IGl0ZW0KCgkqIHNlcnZlci9zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIHNvY2tldCBjcmVhdGlvbiBlcnJvcnMuCgoJKiBjb250cm9scy9tZW51LmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJV2hlbiBhIHBvcHVwbWVudSBpcyBjdXJyZW50bHkgYWN0aXZlIG9uIHRoZSBzY3JlZW4sIGl0IHNob3VsZG4ndAoJcmVtb3ZlIG1vdXNlIGNsaWNrIG1lc3NhZ2VzIHRoYXQgZG9uJ3QgYmVsb25nIHRvIGl0IGZyb20gdGhlIHF1ZXVlLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUV4ZWMgYHdpbmVjbGlwc3J2JyBub3QgYHdpbmVjbGlwc3ZyJywgYW5kIGRvbid0IGluaGVyaXQgd2luZSdzIFgKCXNvY2tldHMgdG8gaXQgKG90aGVyd2lzZSB3aW5kb3dzIHN0YXkgYXJvdW5kIHdoZW4gd2luZSBoYW5ncykuCgpUaHUgTm92ICA0IDAyOjUxOjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbWFpbi5jOiBGaXhlZCAtZGVidWdtc2cgK3NlcnZlci4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCUFkZGVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBzdGRpbyBoYW5kbGVzIGluIENsb3NlSGFuZGxlLgoKCSogc2VydmVyL2hhbmRsZS5jOgoJTWFkZSBhbGwgaGFuZGxlcyBtdWx0aXBsZSBvZiA0LiBGaXhlZCBzZW1hbnRpY3MgZm9yIHBzZXVkby1oYW5kbGVzLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglGcmVlIHRoZSBoYW5kbGVzIG9mIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW4gdGhlIHJpZ2h0IHByb2Nlc3MgKHRoYW5rcwoJdG8gSmVyZW15IFdoaXRlKS4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGRwbGF5eCBMaWJNYWluIGZvciBpbml0aWFsaXphdGlvbiBvZiBhbGwgZHBsYXl4ICdnbG9iYWwnIGRhdGEKCS0gQWRkZWQgc3RhcnQgZm9yIGdsb2JhbCBkYXRhIG1hbmlwdWxhdGlvbgoJLSBUT0RPIGxpc3QgdXBkYXRlZAoJLSBBZGRlZCBzb21lIG1pc3NpbmcgaGVhZGVyIGZpbGUgZGVmaW5pdGlvbnMKCS0gQWRkZWQgdGhlIGFuc2kgdmVyc2lvbnMgb2YgZHBsYXkgYW5kIGRwbG9iYnkKCS0gRml4ZWQgaW52YWxpZCBtYWNybyBmb3IgSURpcmVjdFBsYXk0CgktIENsZWFuZWQgdXAgY29tcGlsZXIgd2FybmluZ3MKCS0gTW9yZSBpbXBsZW1lbnRhdGlvbiwgYnVnIGZpeGVzIGFuZCBjcml0aWNhbCByZWdpb24gcHJvdGVjdGlvbgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglOZXZlciBzZW5kIGEgV01fQ0xPU0UgbWVzc2FnZSAgdG8gYSBwb3B1cCB3aW5kb3cuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglDaGVjayBpZiB0aGUgd2luZG93IGlzIG1hbmFnZWQgYmVmb3JlIHRyeWluZyB0byBnaXZlIGl0IGZvY3VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5oYW5jZWQgbGludXggam95c3RpY2sgYXBpIGRldGVjdGlvbiBzbGlnaHRseS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKYXJvc2xhdyBQaW90ciBTb2JpZXN6ZWsgPGpzb2JpZXN6QGVsa2EucHcuZWR1LnBsPgoJQWRkZWQgUG9saXNoIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBEQ19WRVJTSU9OIGFuZCBEQ19UUlVFVFlQRSB0byB3aW4xNmRydiBEZXZpY2VDYXBhYmlsaXRpZXMuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIGBDYXNzZXR0ZScgdG8gUFBEIC0+IHdpbmRvd3MgcHJpbnRlci1iaW4gbWFwcGluZy4KCgkqIG1lbW9yeS9zdHJpbmcuYzogTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCU1vZGlmaWVkIGxzdHJjcHluV3RvQSB0byBwdXQgdGVybWluYXRpbmcgbnVsbCBhdCBlbmQgb2Ygc3RyaW5nLCBub3QKCWVuZCBvZiBidWZmZXIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGR1cGxpY2F0ZSBtYWNybyBkZWZpbml0aW9ucyBmb3IgdGhlIElTdG9yYWdlIGFuZCBJU3RyZWFtIENPTQoJaW50ZXJmYWNlcy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJRml4ZWQgQ09MT1JfTUFYIGRlZmluaXRpb24gZm9yIG5ldyBXaW4zMiB2YWx1ZXMuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgVVNFUiBjYWxsIGZyb20gR2V0Rm9udE1ldHJpY3MuIEZpeGVzIG5hdGl2ZSBVU0VSLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglTZXQgcHJvcGVyIGl0ZW0gZm9jdXMgb24gRGVsZXRlSXRlbS4KCUNsZWFuIHVwIGVkaXQgbGFiZWwgaW1wbGVtZW50YXRpb24uCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJRml4ZWQgYSBsb25nIHN0YW5kaW5nIChhbmQgYW5ub3lpbmcpIHR5cG8sIHRoYXQgcHJldmVudGVkCglHZXREaXNrRnJlZVNwYWNlQSBmcm9tIHdvcmtpbmcuLi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmFibGUgc2FmZSByZWFkaW5nIG9mIHJlZ2lzdHJ5IGZpbGUsIGV2ZW4gaWYgZmlsZSBpcyBicm9rZW4uCgoJKiB3aW4zMi9uZXdmbnMuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglDaGFuZ2VkIE9wZW5EZXNrdG9wIHN0dWIgdG8gV2luOXggYmVoYXZpb3IgZm9yIFF1aWNrVGltZSA0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDMxIDIyOjI2OjM1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IFNldCBjbG9zZS1vbi1leGVjIGZsYWcgb24gc2VydmVyIHNvY2tldC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZXhwbGFuYXRpb24gb24gY3JlYXRpbmcgYSBuZXcgRExMLgoKCSogbWlzYy92ZXJzaW9uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIHZlcnNpb24gYXV0b2RldGVjdGlvbi4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGVkIHN1cHBvcnQgb2YgRFNfQ09OVFJPTCBhbmQgV1NfRVhfQ09OVFJPTFBBUkVOVCBzdHlsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBJdmFuIGRlIFNhZWRlbGVlciA8SXZhbmRzQHN5bXBhdGljby5jYT4KCUZhaWwgd2hlbiBMUFJFQ1QgY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJT24gQ29uZmlndXJlTm90aWZ5LCBmaW5kIHRoZSBmaXJzdCB2aXNpYmxlIHdpbmRvdyBhYm92ZSB0aGUgY3VycmVudCBvbmUuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBvcGVyYW5kIHNpemVzIGZvciB0aGUgImVudGVyIiBpbnN0cnVjdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUFNNX0FERFBBR0UgcmV0dXJucyBUUlVFIG9yIEZBTFNFLgoKCSogZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9tc2FjbTMyL3dpbmVhY20uaCwgaW5jbHVkZS9tc2FjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIG1zYWNtMzIgcmVhbGx5IGxvYWQgQUNNIGRyaXZlcnMuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglQcmV2ZW50IEZpbGxSZ24gZnJvbSB1c2luZyBhIE5VTEwgcG9pbnRlci4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMgd2l0aCBSZWdFbnVtS2V5Ki4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50YXRpb24gb2YgdXNlciBkZWZpbmVkIHRlbXBsYXRlcy4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSU1hbGxvYzE2X0NvbnN0cnVjdG9yOiBtb3ZlZCBJQ09NX1ZUQkwoVGhpcykgd2hlcmUgaXQgYmVsb25ncy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjbGVhciB0aGUgZHJhd2luZyBhcmVhIGZvciBldGNoZWQgc3RhdGljIGNvbnRyb2xzLgoJUmVwbGFjZWQgb3VyIG93biBkcmF3aW5nIHN0dWZmIGluIGV0Y2hlZCBzdGF0aWMgY29udHJvbHMgYnkgRHJhd0VkZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUluIHJlcG9ydCB2aWV3IG1vZGUgb2YgdGhlIGxpc3R2aWV3IGNvbnRyb2wsIGltcGxlbWVudGVkIHRoZQoJaG9yaXpvbnRhbCBzY3JvbGxiYXIgZnVuY3Rpb25hbGl0eS4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc21hbGwgYnVnIGluIHRoZSBiZWhhdmlvciBvZiBtYXhpbWl6ZWQgTURJIGNoaWxkcmVuLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJld3JpdGUgb2YgRW51bVByaW50ZXJzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaWxsIGluIHRoZSBod25kRnJvbSBmaWVsZCBvZiB0aGUgTk1IRFIgc3RydWN0dXJlIHdoZW4gc2VuZGluZwoJbm90aWZpY2F0aW9ucy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXaGVuIHJlYWRpbmcgYSBwcm9maWxlIGVudHJ5IHJlbW92ZSB0cmFpbGluZyBxdW90ZSB3aGVuIHRoZXJlJ3MgYW4KCW9wZW5pbmcgb25lLgoKCSogb2JqZWN0cy9nZGlvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGNvcnJlY3QgaGVpZ2h0IGFuZCB3aWR0aCBmb3Igc3RvY2sgZm9udHMgaW4gR2V0T2JqZWN0LgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOiBDb21waWxlIGZpeC4KCgkqIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZTogQWRkZWQgd21jZHJjLmgKCgkqIGRsbHMvd2lubW0vbW1pby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgYWRkaXRpb24gYW5kIHJlbW92YWwgb2YgY3VzdG9tIEkvTyBwcmVvY2VkdXJlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglBYmV5IEdlb3JnZTxhYmV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgUHJvZ0lERnJvbUNMU0lELgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglXaXphcmQgbW9kZSBwcm9wZXJ0eSBzaGVldHMgaGF2ZSBhIHRhYiBjb250cm9sLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCB3aW5lLmluaToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYnVpbHQtaW4gbXNhY20uZHJ2IGFuZCBtaWRpbWFwLmRydiBkcml2ZXJzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgZml4ZXMgYW5kIHJlb3JnYW5pemF0aW9ucy4KCS0gQWRkZWQgY2hlY2tzIGZvciBkb2N1bWVudGF0aW9uIGluY29uc2lzdGVuY2llcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsIG1pc2MvcG9ydC5jLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmMsIGRsbHMvd2lubW0vam95c3RpY2suYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbWlzc2luZyBjb25maWd1cmF0aW9uICNpZjpzIGFuZCAjaW5jbHVkZXM6cy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGZpbGVzL2Rvc19mcy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIG1ha2UgZG9lc24ndCBsaWtlIHVubmVjZXNzYXJ5IFwuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmgsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUdlbmVyYWxpemVkIHRoZSB1c2Ugb2YgdGhlIG5ldyBJQ09NX1ZGSUVMRCBhbmQgSUNPTV9WVEJMIG1hY3Jvcy4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGNvdXBsZSBvZiBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUEgY3Jhc2ggd291bGQgb2NjdXIgaWYgdGhlIGZpbGUgdHlwZSBpbiByZXBvcnQgbW9kZSB3YXMgZW1wdHkuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2VkIHRoZSBpbml0aWFsaXNhdGlvbiBvZiB0aGUgS2V5U3RhdGUgYXJyYXkuCgoJKiBtaXNjL2xzdHIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQmV0dGVyIGhhbmRsaW5nIG9mIG5ld2xpbmVzIGluIEZvcm1hdE1lc3NhZ2UqLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IChzb21lKSBiYWQgYmVoYXZpb3Igd2l0aCBidWZmZXIgdW5kZXJydW4uCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgUGxheVNvdW5kIHByb2MgZm9yIG5vbiBQQ00gY29udGVudC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJLSBUcmVldmlldyB1c2VzIENPTE9SX1dJTkRPVyBjb2xvciBpbnN0ZWFkIG9mIGNsckJrIHRvIGZpbGwgYmFja2dyb3VuZC4KCS0gVHJlZXZpZXc6IGNvbG9ycyByZXR1cm5lZCBieSBUVk1fR0VUKipDT0xPUiBhcmUgbWl4ZWQgdXAuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUNsaWNraW5nIHRoZSBjb21ibyBib3ggd291bGQgY2F1c2UgYSBjcmFzaCBpZiBpdCB3YXMgZW1wdHkuCgoJKiBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgbWlzYy9wcmludGRydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSXQgYXBwZWFycyB0aGF0IFN0YXJ0RG9jIHNlbmRzIHRoZSBTVEFSVERPQyBlc2NhcGUgd2l0aCB0aGUgRE9DSU5GTwoJc3RydWN0dXJlIHBvaW50ZWQgdG8gd2l0aCB0aGUgb3V0cHV0IGRhdGEgcGFyYW1ldGVyLgoKCSogZ3JhcGhpY3MvZm9udGVuZ2luZS5jLCBpZjE2MzIvZ2RpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGZvciBFbmdpbmVSZWFsaXplRm9udEV4dCAodXNlZCBieSB0aGUgd2luOTggcHNjcmlwdCBkcml2ZXIpLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZWxlY3RlZCBidXR0b24gd2l0aGluIHRhYiBjb250cm9sIHdpbGwgYmUgcGFpbnRlZCB3aXRoIHRoZSByaWdodAoJY29sb3IgYnJ1c2guCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglEbyBub3Qgc2VuZCB0d28gUFNOX0tJTExBQ1RJVkUgbWVzc2FnZXMuCgoJKiB3aW5lLmluaTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglpbmkgdmFyaWFibGVzIGRvIG5vdCBsaWtlIDsgY29tbWVudHMgYWZ0ZXIgdGhlbSAodGhleSBhcmUgbm90IHNoZWxsCglzY3JpcHRzKS4gRml4ZWQgYSB0eXBvIGluIG9uZSBvZiB0aGUgbmFtZXMuCgpNb24gT2N0IDI1IDE1OjQzOjM2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdHdvIG1hY3JvcywgSUNPTV9WRklFTEQgYW5kIElDT01fVlRCTCwgc28gdGhhdCB3aGVuIGltcGxlbWVudGluZwoJYSBDT00gaW50ZXJmYWNlIG9uZSBuZXZlciBoYXMgdG8gbmFtZSB0aGUgbHBWdGJsIGZpZWxkIGV4cGxpY2l0bHkuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTeXNBbGxvY1N0cmluZ0xlbjE2IG5lZWRzIHRvIGhhbmRsZSBOVUxMIHBvaW50ZXJzLCB0b28uCgoJKiBtZW1vcnkvbG9jYWwuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUJ1ZyBmaXguCgoJKiB0b29scy9maW5kX2RlYnVnX2NoYW5uZWxzOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIHNtYWxsIHR5cG9zIGFuZCBzbGlnaHRseSBvdXRkYXRlZCBjb21tZW50cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTaGVsbDMyIGNhbGwgV2luMzJEZWxldGVGaWxlKCksIHJlcXVpcmVkCglieSBJRTUncyBFeHBsb3Jlci4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluOgoJQWRkZWQgZGVwZW5kZW5jeSBvbiB3aW5lc3R1Yi5vCgpTdW4gT2N0IDI0IDIyOjEzOjU1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCB0b29scy9idWlsZC5jLCB0b29scy9mbnQyYmRmLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvcHJvY2Vzcy5jLCByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvc29ja2V0LmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9sZHQuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gI2lmOnMgYW5kICNpbmNsdWRlczpzLgoJLSBNaW5vciBjb25maWd1cmF0aW9uIHJlbGF0ZWQgY2hhbmdlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIExvYWRIb21lUmVnaXN0cnlGaWxlcyBkZWZhdWx0IHRvIFRSVUUuCgoJKiBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jb21tLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9tb250aGNhbC5oLCBpbmNsdWRlL25ldHNwaS5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCBpbmNsdWRlL3htYWxsb2MuaCwgdG9vbHMvbWFrZV9hdXRob3JzOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHRoZSBpbmNsdWRlIGZpbGVzIHNlbGYtc3VmZmljaWVudC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIHRoZSBsb25nIGxvbmcgcHJvYmxlbS4KCS0gQWRkZWQgY29uZmlndXJlIGluY2x1ZGUgY29uc2lzdGFuY3kgY2hlY2tpbmcuCgktIEFkZGVkIHByb2dyZXNzIGluZGljYXRvci4KCS0gQmVnYW4gc3BsaXR0aW5nIHVwIHRoZSB3aW4xNmFwaS5kYXQgYW5kIHdpbjMyYXBpLmRhdCBmaWxlcy4KCS0gQWRkZWQgdmFyaW91cyBtaW5vciBjaGVja3MuCgktIE1pbm9yIGZpeGVzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnNwZWMsIGRsbHMvd25hc3BpMzIvd25hc3BpMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3JlZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzcGVjIGZpbGUgZGVjbGFyYXRpb25zIGZvciBhbHJlYWR5IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCgkqIGdyYXBoaWNzL3BhdGguYywgaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2NsaXBwaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIFdpbjE2IHZhcmlhbnRzIG9mIGV4aXN0aW5nIFdpbjMyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIGNvbXBpbGUgZml4LgoKCSogZmlsZXMvZmlsZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSBwcmVmaXhpbmcgYnkgYSB0aWxkZSBmb3IgR2V0VGVtcEZpbGVOYW1lIDMyYml0cy4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXYXJuIHVzZXJzIHRvIHVzZSAtdGhlIC1kZXNrdG9wIG9wdGlvbiB0b2dldGhlciB3aXRoIHRoZSBuYXRpdmUgdXNlciBETExzLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG5lZWRlZCByZXNvdXJjZSB3aGVuIGJ1ZmZlciBpcyBOVUxMIGZvciBMb2FkU3RyaW5nKCkuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCB3aW5lLmluaToKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUVuYWJsZWQgdGhlIHBlcnNpc3RlbnQgY2xpcGJvYXJkIHNlcnZlci4KCgkqIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6IE5hdGhhbmllbCA8d2ZpbGFyZG9AZnVzZS5uZXQ+CglJbXByb3ZlZCByZWdpc3RyeSBpc29sYXRpb24gcG9zc2liaWxpdGllcy4KCgkqIG11bHRpbWVkaWEvKi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTcGxpdCB0aGUgbXVsdGltZWRpYS8gZGlyZWN0b3J5IGludG8gZGxscy8gc3ViZGlyZWN0b3JpZXMuCgoJKiBtdWx0aW1lZGlhL3dpbm1tLnJjLCBtdWx0aW1lZGlhL3dpbm1tX1B0LnJjLCBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL0NoYW5nZUxvZywgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPGFsdmVzQGNvcnJlaW9uZXQuY29tLmJyPgoJTW9yZSBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBvYmplY3RzL2RpYi5jOiBNYXR0aGV3IEouIEZyYW5jaXMgPGFzYmVsQGRpYWwucGlwZXguY29tPgoJRml4ZWQgdG9wLWRvd24gRElCIGhhbmRsaW5nIGluIFN0cmV0Y2hESUJpdHMzMigpLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZm9udC5oLCBvYmplY3RzL2ZvbnQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCU1ha2Ugc3VyZSB0aGF0IGFsbCBjYWxscyB1c2UgdGhlIGV4dGVuZGVkIHN0cnVjdHVyZXMgd2hpY2ggYXJlIGEKCXN1cGVyc2V0IG9mIHRoZSByZWd1bGFyIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aHVtYiB0cmFjay4KCgkqIHdpbmRvd3MvZm9jdXMuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCURvIG5vdCBzZXQgZm9jdXMgdG8gYSBkaXNhYmxlZCB3aW5kb3cuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiBlbnRyeSBpbiB0aGUga2V5Ym9hcmQgdHJhbnNsYXRpb24gdGFibGUgZm9yIEN0cmwtQnJlYWsuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCU5ldyBjaGFubmVsICdkZWJ1Z3N0cicgdXNlZCB0byBwcmludCBPdXRwdXREZWJ1Z1N0cmluZyBBUEkgY2FsbHMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglQb3B1cCB3aW5kb3dzIHdpbGwgYmUgaGlkZGVuIHdoZW4gd2UgbWluaW1pemUgYSBtYWluIGZyYW1lIG9yIHNob3duCgl3aGVuIHdlIG1heGltaXplIG9yIHJlc3RvcmUgYSBtaW5pbWl6ZWQgbWFpbiBmcmFtZS4KClNhdCBPY3QgMjMgMjM6NTk6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVByb3BlcnR5U2hlZXQgZGlkbid0IGRlc3Ryb3kgcGFnZSBkaWFsb2cncyB3aW5kb3cgd2hpbGUgcmVtb3ZpbmcgcGFnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlIHRoZSBpdGVtIHdpZHRoIHVwb24gYSBuZXcgY29sdW1uIGluIHRoZSBoZWFkZXIgY29udHJvbC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVvcmRlciBwYXJhbWV0ZXJzIHRvIGZpeCBwb3NpdGlvbiBvZiBiYXNlIHJlZyByZWxhdGl2ZSB0byBleGNlcHRpb24KCWZyYW1lLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogRml4ZWQgdHlwby4KCgkqIGluY2x1ZGUvKi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglEZWZpbmUgdGhlIENPTSBtYWNyb3MgZXZlbiBpbiBDKysuCgoJKiBjb250cm9scy9tZW51LmMsIHdpbmRvd3MvbWRpLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGxvb3Agd2l0aCBXTV9TWVNDSEFSLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJRml4ZWQgdG9vbHRpcHMgcG9zaXRpb25pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IFJlLWFwcGxpZWQgbG9zdCBjaGFuZ2UuCgoJKiBsb2FkZXIvdGFzay5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJZ25vcmUgd3JvbmcgaEluc3RhbmNlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCVJvYmVydCAnQWRtaXJhbCcgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJUmVwb3J0IG5vbi1oZXJjdWxlcyB2aWRlby4gVHVybmVkIG9uIGludCAyYS4KCgkqIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL21vZHVsZS5jLCBmaWxlcy9maWxlLmM6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglGaXhlZCBjb21waWxpbmcgd2l0aCBTVFJJQ1QuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJUHJvcGVyIHJlc291cmNlIHN1cHBvcnQgZm9yIGRpYWxvZyB0aXRsZS4KCgkqIGluY2x1ZGUvZGxncy5oOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBzb21lIHdyb25nIGRlZmluZXMuCgoJKiBvYmplY3RzL2JydXNoLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUNvcHkgYml0bWFwcyBwcm9wZXJseS4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IGxvYWRpbmcgb2YgbW9kdWxlcyBkZWJ1ZyBpbmZvcm1hdGlvbiBhZnRlciBmaXJzdCBpbnZvY2F0aW9uIG9mCglkZWJ1Z2dlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIGEgZmV3IHN0dWJzLgoKCSogaW5jbHVkZS9saXN0dmlldy5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRhdGlvbiBvZiBlZGl0IGxhYmVscy4KCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBzb21lIGFub255bW91cyB1bmlvbiBhY2Nlc3Nlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglEcmF3IHRoZSBpdGVtIHRleHQgZnJvbSB0aGUgdG9wIG9mIHRoZSBpdGVtIHJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBhc2NlbmRpbmcgYW5kIGRlc2NlbmRpbmcgc29ydCBvcmRlciBmb3IgdGhlIEZpbGUgRGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJLSBhZGRzIGNhbGxpbmcgYXBwbGljYXRpb24gZGVmaW5lZCBjYWxsYmFjayBmdW5jdGlvbiBvbmNlIFByb3BlcnRTaGVldAoJICBEaWFsb2dib3ggaGFzIGJlZW4gaW5pdGlhbGl6ZWQganVzdCBhZnRlciBjcmVhdGluZyB0aGUgdGFiIGNvbnRyb2wKCS0gaGFuZGxlIHRoZSBjYXNlIHdoZW4gcHN6Q2FwdGlvbiBzcGVjaWZpZXMgYSByZXNvdXJjZSBpbnN0ZWFkIG9mIGEgc3RyaW5nCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSByZW1vdmVkIGFsbCB1bm5lY2Vzc2FyeSAid2luYXBpIiBmcm9tIGludGVybmFsIF9JTCogZnVuY3Rpb25zCgktIGJldHRlciBwYXJhbWV0ZXIgY2hlY2tpbmcgZm9yIHNoZWxsZm9sZGVyCgktIHJlbW92ZWQgZGVhZCBjb2RlIGZyb20gc2h2X2JnX2NvbnRleHRtZW51CgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS9kZHJhdy5oOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgYW5vdGhlciBhbm9ueW1vdXMgdW5pb24gdXNpbmcgdGhlIERVTU1ZVU5JT05OQU1FIHN0eWxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglQcm9wZXJseSBjb3B5IHRleHQgaW50byB1c2VyIHN1cHBsaWVkIGJ1ZmZlci4KCgkqIG1pc2Mvd2luc29jay5jLCByZWxheTMyL3dzb2NrMzIuc3BlYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvc29jay5jLCBpZjE2MzIvd2luc29jay5zcGVjLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS93aW5zb2NrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW5zb2NrIHJld3JpdGUuIFNvY2tldHMgYXJlIG5vdyBwcm9wZXIgd2luMzIgaGFuZGxlcy4KCUludGVybmFsIHN0cnVjdHVyZXMgYXJlIG5vdyByZWFsbHkgaW50ZXJuYWwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglUYWIgY29udHJvbCBkb2Vzbid0IHJlZnJlc2ggdGFiIGFyZWEgb24gVENNX1NFVENVUlNFTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgU3RyUkNockEuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZXhwci5jLCBpbmNsdWRlL2RlYnVnZ2VyLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUGVyZm9ybSBwcm9wZXIgcHJvY2VzcyBzaHV0ZG93biBvbiAncXVpdCcgYW5kIGVycm9yLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVN0dWIgT3BlblRocmVhZFRva2VuICYgT3BlblByb2Nlc3NUb2tlbiBmb3IgZmFpbHVyZSBpbiBXaW45eCBtb2RlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUZpeGVkIGEgc21hbGwgdHlwby4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglQcm90ZWN0IGFnYWluc3Qgd3JvbmcgcmV0dXJuIHZhbHVlIGZyb20gV01fSU5JVERJQUxPRy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBhbiBpbGxlZ2FsIGNoYXJhY3Rlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglOb3cgaW5pdHMgdGhlIHBvbGljeSBjYWNoZSB3aGVuIHNoZWxsMzIgaXMgZmlyc3QgaW5zdGFudGlhdGVkLgoJTWF0Y2hlcyBXaW5kb3plIGJlaGF2aW9yLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5oOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglSZWFsIGltcGxlbWVudGF0aW9uIG9mIFNIUmVzdHJpY3RlZCgpLCBjbGFyaWZpZWQgU0hJbml0UmVzdHJpY3RlZCgpJ3MKCXJvbGUgYSBsaXR0bGUsIGFkZGVkIHBvbGljeSBkYXRhIHRhYmxlLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugc2VnbWVudGVkIGxwdnRibCBwb2ludGVyIGZvciBJTWFsbG9jMTYgaW50ZXJmYWNlLCBub3QgbGluZWFyIG9uZS4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJlcGxhY2VkIGEgWCBjYWxsIHdpdGggYSBUU1ggY2FsbCBpbiBYRFJWX01PVVNFX1NldEN1cnNvcigpLgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjOiBVbHJpY2ggQ3pla2FsbGEgPHliaWN1YnVrQHVtYWlsLmNvcmVsLmNvbT4KCVRoZSBwcm9wZXJ0eSBzaGVldCBkaWFsb2cgbmVlZHMgZmxhZyBXU19WSVNJQkxFLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglTZXQgdGhlIGRlZmF1bHQgdmlldyBidXR0b24gdG8gTGlzdCBpbiB0aGUgRmlsZURpYWxvZy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBkb24ndCB1c2UgR2V0TW9kdWxlSGFuZGxlMTYgaW4gTG9hZE1vZHVsZTE2L05FX0NyZWF0ZVByb2Nlc3MuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBvdGVudGlhbCBjcmFzaCBpbiBzdHJpbmcgdmFyaWFibGUgcHJpbnRpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBXTV9HRVRGT05UIHN1cHBvcnQuCgoJKiBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZG9uJ3QgY2FsbCBFeGl0UHJvY2VzcygpIGJlZm9yZSBTWVNMRVZFTF9Jbml0KCkuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1Z3MgKG1taW9PcGVuIHdpdGggMTYvMzIgYml0IHN0cmFuZ2VuZXNzLCBtbWlvQXNjZW5kICYKCW1taW9EZXNjZW5kIG9mZnNldCBhbmQgYWxpZ25tZW50IGlzc3VlcykuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglXZSBhcmUgc3VwcG9zZWQgdG8gZGVsZXRlIHRoZSBwYWxldHRlIG9iamVjdCB3aXRoIHRoZSBEZWxldGVPYmplY3QKCWZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUxpc3R2aWV3IGl0ZW1zIHdpbGwgYmUgZHJhd24gd2l0aCB0aGUgcmlnaHQgaXRlbSBkaW1lbnNpb25zLgoKCSogZ3JhcGhpY3MvcHNkcnYvdGV4dC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJU29tZSBzbWFsbCBjb3JyZWN0aW9ucyB0byB0aGUgRXh0VGV4dE91dCBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhhdCB0aGUgZHJvcCBlZmZlY3Qgb2YgYSBEbkQgb3BlcmF0aW9uIGlzIHNldCB0bwoJRFJPUEVGRkVDVF9OT05FIGlmIHRoZSB1c2VyIGNhbmNlbGxlZCB0aGUgb3BlcmF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGluY2x1ZGUvYW5pbWF0ZS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXJzdCB3b3JraW5nIHZlcnNpb24uCgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIG11dGUgY2FwYWJpbGl0eSB0byBtb3N0IGNvbnRyb2wgbGluZXMuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXNlIHRoZSBtb2R1bGUgaGFuZGxlLCBpZiBDcmVhdGVXaW5kb3dFeCBpcyBjYWxsZWQgd2l0aAoJaEluc3RhbmNlPT1OVUxMLgoKCSogaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZXMgZm9yIFN0clJldFRvQnVmKEF8VykuCgpXZWQgT2N0IDEzIDE2OjE3OjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZToKCUFkZGVkIFB0LnMuCgoJKiBvYmplY3RzL2RpYi5jOiBCYWNrZWQgb3V0IHByZXZpb3VzIGNoYW5nZSAoYnJlYWtzIHdpdGggbWV0YWZpbGVzKS4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luc29jay5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb2NrZXQgaW50ZXJmYWNlIHRvIHdpbmVzZXJ2ZXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCB3aW5lLmluaToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29ycmVjdCBmaWxlbmFtZSBmb3Iga2VybmVsIG1vZHVsZSBpcyBLUk5MMzg2LkVYRS4KCgkqIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuc3BlYywgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3Muc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyAoYW5kIG5vdyByZXF1aXJlZCkgZmlsZW5hbWUgZGlyZWN0aXZlLgoKCSogdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZmlsZW5hbWUgdG8gMzIgYml0IGJ1aWx0aW4gbW9kdWxlIGRlc2NyaXB0b3JzLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IGxvYWRpbmcgb2YgbW9kdWxlczogbm93IHNlYXJjaCBrZXkgaXMgbW9kdWxlJ3MgZmlsZW5hbWUsIG5vdAoJbW9kdWxlJ3MgbmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglXaGVuIGFuIGVycm9yIG9jY3VycmVkIGluIGEgcHJvcGVydHkgc2hlZXQgYmVjYXVzZSBvZiBpbnZhbGlkIGRhdGEsCgljbGlja2luZyBvbiBhbm90aGVyIHRhYiwgd291bGQgYWN0aXZhdGUgdGhlIG5ldyB0YWIgYnV0IGtlZXAgdGhlCglvcmlnaW5hbCBwcm9wZXJ0eSBzaGVldC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gaW1wbGVtZW50ZWQgc29ydGluZyB0aGUgbGlzdHZpZXcgYnkgY2xpY2tpbmcgb24gdGhlIGNvbHVtbiBoZWFkZXIKCS0gaW1wbGVtZW50ZWQgdGhlIGNvbnRleHQgbWVudSBlbnRyeXMgZm9yIHNvcnRpbmcKCS0gc29tZSBtb3JlIGZ1bmN0aW9ucyB0byBnYXRoZXIgZGF0YSBmb3JtIHBpZGxzCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlbW92ZWQgbGlua2luZyBieSBHZXRQcm9jQWRkcmVzcyBmb3IgU3RyUmV0VG9CdWYgc2luYyBub3QgYWxsCgl2ZXJzaW9ucyBvZiBzaGx3YXBpIGV4cG9ydGluZyB0aGlzIGZ1bmN0aW9uLgoKCSogbG9hZGVyL21vZHVsZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJUmVtb3ZlcyBleHRyYW5lb3VzIGNvbXBhcmlzb24gb2YgZGF0YSBwb2ludGVkIHRvIGJ5IHRoZSByZWxvY2F0aW9uCglvZmZzZXQgd2hlbiBubyByZWxvY2F0aW9uIGVudHJpZXMgZXhpc3QuCgoJKiBpZjE2MzIvd3Byb2NzLnNwZWMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCVdQUk9DUy5FTlRSWUFERFJQUk9DIG5lZWRzIHRvIHJldHVybiBzb21ldGhpbmcgaW4gQ1ggdG9vIChmaXhlcwoJQkxJTktFUiBzZWxmZXh0cmFjdGluZyBleGVjdXRhYmxlcykuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgRW5kRGlhbG9nIHRvIGJlaGF2ZSBsaWtlIGFzIGluIFdpbmRvd3MuCglDYWxsIFNldFdpbmRvd1BvcyBpbnN0ZWFkIG9mIFNob3dXaW5kb3cgaW4gRW5kRGlhbG9nLgoKCSogd2luZG93cy93aW5wb3MuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIFdJTlBPU19DYW5BY3RpdmF0ZSB0byBub3QgdG8gY29uc2lkZXIgV1NfVklTSUJMRSBzdHlsZS4KCUNvZGUgZm9yIGFjdGl2YXRpbmcgYW5kIHNldHRpbmcgZm9jdXMgdG8gb3RoZXIgd2luZG93cyB3aGVuIGEgd2luZG93CglpcyBoaWRkZW4sIGlzIG1vdmVkIHRvIFNob3dXaW5kb3cgZnJvbSBTZXRXaW5kb3dQb3MuCglBY3RpdmF0ZSB0aGUgdG9wIGxldmVsIHdpbmRvdyBpZiBpdCdzIG5vdCBhY3RpdmUgaW4gU2hvd1dpbmRvdyhTV19TSE9XKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBYMTFEUlZfRElCX1NldEltYWdlQml0cyB3aGVuIGNhbGxlZCBmb3IgUkxFIGVuY29kZWQgZGlicy4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJT3B0aW1pemVkIFN0cmV0Y2hESUJpdHMgdG8gY2FsbCBTZXRESUJpdHNUb0RldmljZSAod2hlbiBzcmMgJiBkc3QKCWRpbWVuc2lvbnMgYXJlIGVxdWFsKS4KCgkqIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9QdC5yYzoKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDxhbHZlc0Bjb3JyZWlvbmV0LmNvbS5icj4KCUFkZGVkIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgdGhlIENPTSBtYWNyb3MgcmF0aGVyIHRoYW4gZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSBscHZ0YmwgZmllbGQuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2MvbHN0ci5jLCBpZjE2MzIvdXNlci5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIExvYWRTdHJpbmcxNiBmb3IgRm9ybWF0TWVzc2FnZTE2IGFuZCBoYW5kbGUKCUZPUk1BVF9NRVNTQUdFX0FMTE9DQVRFX0JVRkZFUiBmbGFnLgoKCSogZ3JhcGhpY3MvcHNkcnYvdGV4dC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJU29tZSBhZGp1c3RtZW50cyB0byBFeHRUZXh0T3V0LgoKCSogaW5jbHVkZS9wc2Rydi5oLCBncmFwaGljcy9wc2Rydi9jbGlwcGluZy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBjbGlwcGluZyBmb3IgdGhlIHBvc3RzY3JpcHQgZHJpdmVyIGFuZCB0dXJuZWQgaXQgb24gKGJ5IHNldHRpbmcKCVBTRFJWX1NldERldmljZUNsaXBwaW5nIGluIHRoZSBmdW5jdGlvbiB0YWJsZSkuCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBY2NvdW50IGZvciB0aGUgdHJhaWxpbmcgTlVMTCBpbiBHZXRMb2dpY2FsRHJpdmVTdHJpbmdzQS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSB0eXBvIGluIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBab2x0YW4gS292YWNzIDxvcml0ZWxlQGFsYXJtaXgubmV0PgoJQWRkZWQgSHVuZ2FyaWFuIGtleWJvYXJkIHN1cHBvcnQuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbnBvcy5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVdlIGhhdmUgdG8gYWN0aXZhdGUgTURJIGNoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIEdldHxTZXRQcm9wQSB0byBzdG9yZSBsUGFyYW0gdG8gcmV0cmlldmUgdGhlIE9QRU5GSUxFTkFNRTE2IGZvciBhCgloV25kLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHVzYWdlIG9mIGEgc2NyYXRjaCBhcnJheSBpbiBYMTFEUlZfUG9seUJlemllci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSBXTV9HRVRURVhUTEVOR1RIIHJldHVybiBsZW5ndGggZm9yIGRyb3Bkb3dubGlzdCBjb21ib3MuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBGaWxsUmVjdCBpbiB0aGUgb3duZXJkcmF3biBidXR0b24gcHJvY2VkdXJlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhlIEZvY3VzIE91dCB3aW5kb3cgaXMgc3RpbGwgdGhlIEZvcmVncm91bmQgd2luZG93IGJlZm9yZQoJZG9pbmcgU2V0Rm9yZWdyb3VuZFdpbmRvdygwKSBpbiBFdmVudF9Gb2N1c091dC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlcyBwcm9ibGVtcyB3aXRoIGNvbG9yIGRyaWZ0IHdoZW4gc3dpdGNoaW5nIHRvL2Zyb20KCWxvZ2ljYWwvcGh5c2ljYWwgY29sb3JzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglNb3VzZSBwb3NpdGlvbiBpcyBzaWduZWQuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2V0IHRoZSBDT0xPUl8zRExJR0hUIHN5c3RlbSBjb2xvciB0byB0aGUgcmlnaHQgd2luZG93IGRlZmF1bHQgdmFsdWUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVNtYWxsIGhhY2sgdG8gY2hlY2sgaWYgd2UgbmVlZCB0byByZWxvY2F0ZSB0aGUgVExTIGRpcmVjdG9yeSBvciBub3QKCShzb21lIHNlZW0gdG8gbmVlZCB0aGlzIHBvaW50ZXIgcmVsb2NhdGVhYmxlLCBzb21lIGFscmVhZHkgZG8gcmVsb2NhdGUKCWl0IGJ5IHRoZW1zZWx2ZXMpLgoKCSogTWFrZS5ydWxlcy5pbjogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlbGluayBzdWJkaXJlY3Rvcnkgb2JqZWN0cyBvbiBNYWtlZmlsZS5pbi9NYWtlLnJ1bGVzLmluIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCUNoZWNrIGZvciBOVUxMIHB0ciBpbiBQcm9wc2hlZXRfUmVtb3ZlUGFnZSAoWGluZyBEVkQgUGxheWVyKS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCURvbid0IHJlZiBOVUxMIHB0cnMgaW4gZGVidWcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglJZiB0aGUgam95ZGV2aWNlIGlzIG5vdCBwcmVzZW50LCBkbyBub3QgY3JlYXRlIGEgRGlyZWN0SW5wdXREZXZpY2UuCgoJKiBkbGxzL2NvbW1kbGcvY29tbWRsZy5zcGVjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNYXAgUHJpbnREbGcxNiB0byBQcmludERsZ0EuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hZGUgVHJhY2tQb3B1cE1lbnUgd2l0aCBUUE1fUkVUVVJOQ01EIHJldHVybmluZyB0aGUgaWQgaW5zdGVhZCBvZgoJdHJ1ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUHJldmVudCBzZWxmIHJlZmVyZW5jaW5nIG5leHQgcG9pbnRlciBkdXJpbmcgaW5zZXJ0LgoKCSogb2xlL25scy9mcmEubmxzOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIG11bHRpbWVkaWEvd2lubW0ucmMsIG11bHRpbWVkaWEvd2lubW1fTmwucmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIER1dGNoIHRvIHRoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IE1DSS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglVcGRhdGVkIHN0YXR1cyBvZiBpbnRlcm5hdGlvbmFsaXNhdGlvbi4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6ICpEb24ndCogcmVzb2x2ZSBQRSBpbXBvcnRzIGlmIGFza2VkIG5vdCB0byAuLi4KCgkqIG1pc2MvZGRlbWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERkZU5hbWVTZXJ2aWNlIHdhcyBicm9rZW4uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogV2hlbiBsb2FkaW5nIGFuIGV4ZWN1dGFibGUgbW9kdWxlIGZhaWxzLCBkb24ndCBwZXJmb3JtIG1vZHVsZQoJY2xlYW51cCBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgdGFzayBpcyBkZXN0cm95ZWQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU1vdmVkIGJpdG1hcCByZXNvdXJjZSB0byBsYW5ndWFnZS1pbmRlcGVuZGVudCByZXNvdXJjZSBmaWxlLgoKCSogbWlzYy92ZXJzaW9uLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgd2FybmluZyBmb3IgZnV0dXJlIFZFUlNJT05fR2V0VmVyc2lvbigpIChtaXMtKXVzZXJzIGFuZCBtYWRlCglPU1ZFUlNJT05JTkZPIHdhcm5pbmcgbW9yZSBkZXRhaWxlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBzdHVicyBmb3IgUmV2b2tlQWN0aXZlT2JqZWN0LCBHZXRBY3RpdmVPYmplY3QsIGZpeGVkCglSZWdpc3RlckFjdGl2ZU9iamVjdCBzdHViIGFyZ3R5cGVzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBnZXJtYW4ga2V5Ym9hcmQgbGF5b3V0IHdpdGggIm5vZGVhZGtleXMiIG9wdGlvbiBlbmFibGVkIChqdXN0IHRvCglhcG9zdHJvcGhlcyBhcmUgc3dpdGNoZWQpLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVN0dWIgZm9yIFZpZGVvQ2FwRHJpdmVyRGVzY0FuZFZlci4KCgkqIG1zZG9zL2ludDIxLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsaWNhdGUgQ3JlYXRlRGlyZWN0b3J5KCkgTGFzdEVycm9yIHdvcmthcm91bmQgZm9yIHRoZSBMRk4gcGFydC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFsc28gZXNjYXBlIGNoYXJhY3RlcnMgPj0weDgwIHdpdGhpbiB0aGUgd2luZXJlZ2lzdHJ5IHNhdmVmaWxlLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglEb24ndCB1c2UgbWFsbG9jL2ZyZWUgaW4gd2luYXNwaTMyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVVzZSAxIG1hY3JvIGZvciByZ2JiaXRkZXB0aCAtPiBieXRlIGRldGVybWluYXRpb24uCgl4c2htL2ltYWdlIGNyZWF0aW9uIG5vdyB1c2VzIDEvOCBvZiB0aGUgc3BhY2UgZm9yIGV2ZXJ5IGltYWdlLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxhY2VkIGRvdWJsZSBDaGFuZ2VEaXNwbGF5U2V0dGluZ3NBIGJ5IChFeClbQVddLgoKV2VkIFNlcCAyOSAxMjoxNjoxNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRG9uJ3QgY2FsbCBHZXRWZXJzaW9uRXhBIHRvbyBlYXJseSwgdG8gYXZvaWQgYnJlYWtpbmcKCWF1dG9tYXRpYyBlbXVsYXRlZCBXaW5kb3dzIHZlcnNpb24gZGV0ZWN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvb2xlYXV0by5oLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRmlyc3QgaW1wbGVtZW50YXRpb24gb2YgTG9hZFR5cGVMaWJFeCgpLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgV01NTUlESVJVTk9OQ0UgY2FsbGVkIGJ5IG1pZGltYXAuZHJ2LgoKCSogbWlzYy93aW5zb2NrLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IHJlZmNvdW50ZXIgdG8gMSBvbiBpbml0aWFsIGluaXQgb3IgV1NBU3RhcnR1cC9XU0FTdGFydHVwIHdpdGgKCWZvbGxvd2luZyBXU0FDbGVhbnVwIHdpbGwgYWxyZWFkeSBmcmVlIHRoZSBzdHJ1Y3R1cmVzLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgRGlyZWN0U291bmQgb2JqZWN0IGV2ZW4gd2l0aG91dCBzb3VuZGRldmljZS4gR2FtZXMgY2FuIGJlCglwbGF5ZWQgd2l0aG91dCBzb3VuZCwgYnV0IG5vdCB3aXRob3V0IERpcmVjdFNvdW5kIG9iamVjdCAodGVzdGVkIHdpdGgKCU1vbmtleSBJc2xhbmQgMykuCgoJKiBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgaW5jbHVkZS9udGRkay5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHRvb2xzL2J1aWxkLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGktY2hlY2ssIGJ5IGFkZGluZyBhcmd1bWVudHMKCXRvIHZhcmFyZ3MuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBhYmlsaXR5IHRvIGNhbGwgd2luYXBpX2NoZWNrIGZyb20gdGhlIE1ha2VmaWxlcy4KCgkqIG1zZG9zL2RwbWkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb2RpZmljYXRpb24gZHVlIHRvIHByb2JsZW1zIHdpdGggd2luYXBpLWNoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3BhcnNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2YXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGFwdGVkIHRvIGNoYW5nZXMgaW4gV2luZS4KCS0gTWlub3IgaW1wcm92ZW1lbnRzLgoKVHVlIFNlcCAyOCAxNjo0MDowNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2V2ZW50LmMsIHNlcnZlci9vYmplY3QuaDoKCU1hZGUgZXZlbnQgbWFuaXB1bGF0aW9uIHJvdXRpbmVzIHB1YmxpYy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGluaXQuaCwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXkuc3BlYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9kcGxheS5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvZHBsYXkuc3BlYywgcmVsYXkzMi9kcGxheXguc3BlYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTW92ZWQgZHBsYXkgYW5kIGRwbGF5eCB0byBhIHByb3BlciBob21lIGluIHRoZSBkbGxzIGRpcmVjdG9yeS4KCS0gSW1wbGVtZW50ZWQgbmV3IERpcmVjdFBsYXk0IGFuZCBEaXJlY3RQbGF5TG9iYnkzIGludGVyZmFjZXMuCgktIEltcGxlbWVudGVkIGEgY2xhc3MgZmFjdG9yeSBmb3IgZHBsYXkgYW5kIGRwbG9iYnkuIENPTSBpbnRlcmZhY2VzCgkgIG5vdyB3b3JrIGZvciBkcCBhbmQgZHBsLgoJLSBBZGRlZCBhIGZldyBtb3JlIGVudHJpZXMgdG8gZHBsYXl4LnNwZWMgZmlsZXMuIEhvdyBkbyB5b3UgZmluZCB0aGUKCSAgb3JkaW5hbHM/IEkganVzdCBndWVzc2VkIDooCgktIFNlcGVyYXRlZCBEaXJlY3RQbGF5IGFuZCBEaXJlY3RQbGF5TG9iYnkgaW1wbGVtZW50YXRpb24gaW50byBzZXBhcmF0ZSBmaWxlcy4KCS0gSW5jbHVkZWQgc29tZSBtaXNzaW5nIGhlYWRlciBmaWxlIGRlZmluaXRpb25zLgoJLSBJbXBsZW1lbnRlZCB0aGUgZHBsYXkgZGxsIGluIHRlcm1zIG9mIHRoZSBkcGxheXggZGxsLiBJIGhhdmVuJ3QKCSAgdGVzdGVkIGl0IHNvIGl0IG1heSBub3Qgd29yay4uLgoJLSBBIGZldyBidWcgZml4ZXMgYW5kIGEgbGl0dGxlIG5ldyBpbXBsZW1lbnRhdGlvZS5uCgktIFVwZGF0ZWQgZG9jdW1lbnQgd2l0aCBhIG1vcmUgZGV0YWlsZWQgaW1wbGVtZW50YXRpb24gcGxhbi4KCgkqIHdpbmRvd3Mvd2luLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUmV3cml0ZSB0aGUgU2hvd093bmVkUG9wdXBzIGZ1bmN0aW9uIHdpdGggYSBzYWZldHkgYWxnb3JpdGhtLgoKCSogY29udHJvbHMvbWVudS5jOiBLYXJsIExlc3NhcmQgPHliaWN1YnVrQHVtYWlsLmNvcmVsLmNvbT4KCU1ha2UgRXhlY0ZvY3VzZWRJdGVtIHJldHVybiAtMSBvbiBmYWlsdXJlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgbXVsdGltZWRpYS9kc291bmQuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIENoYW5nZWQgcmV0dXJuIGNvZGUgZm9yIGZhaWx1cmUgb24gKl9EbGxHZXRDbGFzc09iamVjdCB0bwoJICBDTEFTU19FX0NMQVNTTk9UQVZBSUxBQkxFIGZyb20gRV9OT1RBVkFJTEFCTEUgYXMgZG9jdW1lbnRlZC4KCS0gUmVwbGFjZWQgbWVtY21wcyB3aXRoIGVxdWl2YWxlbnQgSXNFcXVhbENMU0lEIG9yIElzRXF1YWxHVUlEIG1hY3Jvcy4KCS0gQ2hhbmdlZCAicmV0dXJuIDA7IiB3aXRoIFNfT0sgb3IgRFNfT0sgYXMgYXBwcm9wcmlhdGUuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglTdXBwb3J0IFRSQVBfc2lnIGZvciBGcmVlQlNEICh3aXRoIHRoZSBoZWxwIG9mIEp1ZXJnZW4gTG9jaykuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbWVtYmVyIHRoZSBhbGxvY2F0ZWQgc3RyaW5nIHRvIGZyZWUgaXQuCgoJKiBjb250cm9scy9tZW51LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRm9yY2UgcmVjYWxjdWxhdGlvbiBvZiBtZW51IHdoZW4gY2FsbGluZyBJbnNlcnRNZW51SXRlbS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiAyIFdpbjk4IGJ5LW9yZGluYWwgU0hFTEwzMiByb3V0aW5lcy4gIEhlbHBzIFdpbjk4CglFeHBsb3JlciB3b3JrIGJldHRlci4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiBoRHJ2IGZvciBzZW5kaW5nIG1lc3NhZ2UuCgpNb24gU2VwIDI3IDEzOjM4OjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21tZGRrLmgsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgbGFzdCBkZXBlbmRhbmNpZXMgYmV0d2VlbiBNQ0kgZHJpdmVycyBhbmQgV0lOTU0vTU1TWVNURU0KCURMTHMuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBoYWNrIG9uIFdBVkVIRFIncyAmIE1JRElIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCUZpeGVkIGEgZmV3IHNlZ3B0ci9saW5lYXIgYWRkcmVzcyBidWdzIGluIFdBVkVIRFIvTUlESUhEUiBoYW5kbGluZy4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBmb3IgT1NTIGRyaXZlciBwcmVzZW5jZSBhbmQgcmV0dXJuIGVycm9yIGFjY29yZGluZ2x5LgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBoYWNrIG9uIE1JREhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoKCSogbXVsdGltZWRpYS9sb2x2bGRydi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdpdGggbWFwcGVyIGxvYWRpbmcuCglHb3QgcmlkIG9mIGhhY2sgb24gV0FWRUhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgaGFjayBvbiBXQVZFSERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUeXBvIGNvcnJlY3Rpb24uCgoJKiBsb2FkZXIvbGlicmVzLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeCBpbnRlZ2VyIGJhc2VkIHJlc291cmNlIGlkIGFzc3VtcHRpb24uCglBZGQgc3VwcG9ydCBmb3Igc3RyaW5nIGJhc2VkIHR5cGUgaWRzLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgYmFzaWMgV2luc29jazIgZGVmaW5pdGlvbnMuCgoJKiBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9zZWxlY3QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBFWENFUFRfRVZFTlQgdG8gd2luZXNlcnZlciBzZWxlY3QgbG9vcC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJRml4IGZvciBWRkFUX0lPQ1RMX1JFQURESVJfQk9USC4KCgkqIGRsbHMvd2luZy93aW5nX21haW4uYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCVNtYWxsIHdpbmcgZW5oYW5jZW1lbnQuCgoJKiBjb250cm9scy9lZGl0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGtleSBzaG91bGQgbm90IGJlIGlnbm9yZWQgaW4gbXVsdGlsaW5lIGVkaXQgZXZlbiBpZgoJRVNfV0FOVFJFVFVSTiBmbGFnIGlzbid0IHNldC4KCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZ2Rpb2JqLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglEUHRvTFAgbmVlZHMgdG8gcm91bmQgdGhlIHJlc3VsdC4KCUZpeGVkIE11bERpdiB0byBkZWFsIGJldHRlciB3aXRoIG5lZ2F0aXZlIG51bWJlcnMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCXJjUGFpbnQgaGFzIHRvIGJlIHJldHVybmVkIGluIGxvZ2ljYWwgY29vcmRpbmF0ZXMgYnV0IHdhcyBpbnRlcnNlY3RlZAoJd2l0aCBhIGNsaWVudCByZWN0YW5nbGUgaW4gZGV2aWNlIGNvb3JkaW5hdGVzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglGaXhlZCBHZXRSYW5kb21SZ24uCgoJKiBmaWxlcy9kcml2ZS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCU1hZGUgR2V0Q3VycmVudERpcmVjdG9yeSByZXR1cm4gbG9uZyBuYW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGluY2x1ZGUvYnV0dG9uLmgsIGNvbnRyb2xzL2J1dHRvbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXNlIGFuIGV4dHJhIGJpdCBpbiB0aGUgYnV0dG9uIHN0YXR1cyBieXRlIHRvIGZsYWcgd2hldGhlciB0aGUKCURlZkJ1dHRvblduZFByb2Mgc2hvdWxkIHByb2Nlc3MgdGhlIFdNX0xCVVRUT05VUCBtZXNzYWdlLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbG9hZGVyL3NpZ25hbC5jLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9tYWluLmM6CglNb3ZlZCBhbGwgc2lnbmFsIHN1cHBvcnQgdG8gYSBuZXcgcGxhdGZvcm0tc3BlY2lmaWMgZmlsZS4KCU1ha2UgdXNlIG9mIHRoZSBwZXItdGhyZWFkIHNpZ25hbCBzdGFjayAoSnVlcmdlbiBMb2NrKS4KCUZpeGVkICVmcyBpbiBzaWduYWwgaGFuZGxlciBmb3Igbm9uIEZTX3NpZyBjYXNlIChVbHJpY2ggV2VpZ2FuZCkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRodSBTZXAgMjMgMTY6MTQ6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgY2xpcGJvYXJkIHNlcnZlci4KCgkqIHRvb2xzL0F0dGljL3dpbmFwaS1jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIGEgbmV3IGltcHJvdmVkIHZlcnNpb24gb2Ygd2luYXBpLWNoZWNrIGluIHBlcmwuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJSW1wbGVtZW50ZWQgdXBwZXJjYXNpbmcgZnVuY3Rpb25zIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYmVydAoJJ0FkbWlyYWwnIENvZXltYW4pLgoKCSogd2luZG93cy91c2VyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zdHJlc3Mvc3RyZXNzX21haW4uYywgaWYxNjMyL2R1bW15LmMsIGluY2x1ZGUvc3RyZXNzLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBtaXNjL3ByaW50ZHJ2LmMsIHdpbmRvd3MvaW5wdXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaS1jaGVjay4KCgkqIG1pc2MvY29tbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vZGlmaWNhdGlvbiBkdWUgdG8gcHJvYmxlbXMgd2l0aCB3aW5hcGktY2hlY2suCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVdTX1BPUFVQIHdpbmRvd3MgKGV4Y2x1ZGluZyB0aGUgV1NfUE9QVVBXSU5ET1cgd2luZG93cykgc2hvdWxkIGJlCgljbG9zZWQgYWZ0ZXIgbG9vc2luZyB0aGUgZm9jdXMuCgoJKiBvYmplY3RzL2RpYi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVESUJpdG1hcCBjcmVhdGVzIGEgbW9ub2Nocm9tZSBiaXRtYXAgb25seSB3aGVuIHRoZSBmaXJzdCBjb2xvciBvZiB0aGUKCWNvbG9ybWFwIGlzIGJsYWNrIGZvbGxvd2VkIGJ5IHdoaXRlLiBPdGhlcndpc2UgaXQgY3JlYXRlcyBhIGNvbG9yIGJpdG1hcC4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU5vbiBhY3RpdmUgd2luZG93IHNob3VsZCBiZSBhY3RpdmF0ZWQgd2hlbiBpdCBnZXRzIGFueQoJY2xpZW50L25vbi1jbGllbnQgZG91YmxlL3NpbmdsZSBsZWZ0L21lZGl1bS9yaWdodCBtb3VzZSBjbGljayhzKS4KCldlZCBTZXAgMjIgMTY6NTM6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgV0lORU9TUyBkZXNjcmlwdG9yLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1NU1lTVEVNX0dldElEYXRhKCkgbm93IGRpZXMgd2hlbiBubyBpRGF0YSBpcyBwcmVzZW50CglCZXR0ZXIgZXJyb3IgcmVjb3Zlcnkgd2hlbiB0aGUgcHJvY2VzcyBhdHRhY2htZW50IGZhaWxzCglQbGF5U291bmQgKGFuZCBoZWxwZXIgZnVuY3Rpb25zKSBub3cgdXNlIHRoZSByZWd1bGFyIHdhdmVPdXRYWFggKGluc3RlYWQgb2Ygd29kTWVzc2FnZSkKCU1vdmVkIGhhbmRsaW5nIG9mIGhhY2sgZm9yIGRpZmZlcmVuY2lhdGluZyBiZXR3ZWVuIDE2IGFuZCAzMiBiaXQgY2FsbGJhY2sgdG8gbG9sdmxkcnYuYwoJTWFrZXMgdXNlIG9mIG5ldyBsb2x2bGRydi5jIGludGVyZmFjZXMKCgkqIG11bHRpbWVkaWEvLmN2c2lnbm9yZSwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9sb2x2bGRydi5jLCBtdWx0aW1lZGlhL29zcy5jLCBtdWx0aW1lZGlhL29zcy5oLCBtdWx0aW1lZGlhL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBsb2x2bGRydi5jIGFuZCBvc3MuYy4KCVRodW5rcyB0byAxNiBiaXQgYXJlIG5vdyBnZW5lcmF0ZWQgZm9yIHRoZSBNTVNZU1RFTSBtb2R1bGUuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3Muc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZGxscy93aW5tbSBhbmQgZGxscy93aW5tbS93aW5lb3NzIGRpcmVjdG9yaWVzLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNoZWNraW5nIGZvciBjb3JyZWN0IGlEYXRhIGluIGNvZGUuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBEcml2ZXJDYWxsQmFjayBmdW5jdGlvbi4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbCBoZWFkZXJzICh3YXZlIGFuZCBtaWRpIGZ1bmN0aW9ucykgYXJlIG5vdyBzZWVuIGFzIHNlZ3B0ci4KCUFkZGVkIHN0dWIgZm9yIGpveUdldFBvc0V4MTYoKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIGluY2x1ZGUvbW1kZGsuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgdGhlIHNhbWUgc3RydWN0cyBmb3IgbG93LWxldmVsIGRyaXZlcnMgYXMgV2luZG93cyBkby4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgaXQgKGFsbW9zdCkgMzIgYml0IG9ubHkuCglSZWZsZWN0ZWQgY3JlYXRpb24gb2YgV0lORU9TUyBtb2R1bGUuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIGl0IChhbG1vc3QpIDMyIGJpdCBvbmx5LgoJUmVmbGVjdGVkIGNyZWF0aW9uIG9mIFdJTkVPU1MgbW9kdWxlLgoJTm8gbG9uZ2VyIHVzaW5nIEVSUiB3aGVuIG5vIE1JREkgY2FyZCBpcyBwcmVzZW50LgoKCSogbXVsdGltZWRpYS9qb3lzdGljay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgZm9yIGpveUdldFBvc0V4MTYoKS4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNoZWNraW5nIGZvciBjb3JyZWN0IGlEYXRhIGluIGNvZGUuCglBZGRlZCBsb29rLXVwIHRhYmxlcyB0byBjb21tYW5kIHRhYmxlcyAoc3BlZWRzIHVwIHF1ZXJpZXMpLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIFdBVkVGT1JNQVRFWCBpbnN0ZWFkIG9mIFBDTVdBVkVGT1JNQVQuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgbW9kUmVzZXQoKSBpbnN0ZWFkIG9mIHR3ZWFraW5nIE1JREkgY29udHJvbHMuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybmVkIHR5cGUgdXBvbiBvcGVuLgoJRml4ZWQgc29tZSBib2d1cyBlcnJvciBjaGVja2luZy4KCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm5lZCB0eXBlIHVwb24gb3Blbi4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRG8gbm90IHNldCBFSF9OT05DT05USU5VQUJMRS4KCgkqIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrLy5jdnNpZ25vcmUsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL0NoYW5nZUxvZywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbjoKCU1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCUFkZGVkIHNpbXBsZSBjb25zb2xlIG1vZGUgZXhhbXBsZSBwcm9ncmFtIHdoaWNoIGxpc3RzIGluZm9ybWF0aW9uCglhYm91dCB0aGUgdmVyc2lvbiBvZiBXaW5kb3dzIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIG9uLgoKCSogbG9hZGVyL21vZHVsZS5jOiBGaXhlZCBtZW1vcnkgYWxsb2NhdGlvbiBidWcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBpbmZpbml0ZSBsb29wIHdpdGggZ2xhc3RYRm9jdXNXaW5kb3cuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUFsbG93IGNyZWF0aW9uIG9mIGVtcHR5IGltYWdlbGlzdC4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0SUNNUHJvZmlsZUEsIHJlcXVpcmVkIGJ5IFBhaW50IFNob3AKCVBybyA1LgoKCSogY29udHJvbHMvbWVudS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IHNlbmQgV01fRU5URVJNRU5VTE9PUCwgV01fSU5JVE1FTlUgJiBXTV9JTklUTUVOVVBPUFVQIG1lc3NhZ2VzCgl3aGVuIFRQTV9OT05PVElGWSBmbGFnIGlzIHNldCBpbiBUcmFja1BvcHVwTWVudS4KCgkqIG1pc2Mvd2luc29jay5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglnZXRwZWVybmFtZSgpIGFuZCBnZXRzb2NrbmFtZSgpIHJldHVybiBlcnJvcnMgaW4gZXJybm8gbm90IGhfZXJybm8uCgpNb24gU2VwIDIwIDE4OjUyOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHRvb2xzL2J1aWxkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21vdXNlLmMsIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpZjE2MzIvbW91c2Uuc3BlYywgd2luZG93cy9pbnB1dC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglLZXlib2FyZC9tb3VzZSBldmVudCBwcm9jIHRodW5rIGNyZWF0aW9uIG1vdmVkIG91dCBvZiBpZjE2MzIvdGh1bmsuYy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS90YXNrLmgsIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY3JlYXRlIHRodW5rIGZvciB0YXNrIHNpZ25hbCBwcm9jLCBjYWxsIGl0IGRpcmVjdGx5LgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzLy5jdnNpZ25vcmUsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEQyBob29rIHByb2MgdGh1bmsgbWFuYWdlbWVudCBzaW1wbGlmaWVkLgoKCSogbWlzYy9zeXN0ZW0uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTeXN0ZW0gdGltZXIgcHJvYyB0aHVuayBjcmVhdGlvbiBtb3ZlZCBvdXQgb2YgaWYxNjMyL3RodW5rLmMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNyZWF0ZSB0aHVuayBmb3IgQ3JlYXRlVGhyZWFkMTYgcHJvYywgY2FsbCBpdCBkaXJlY3RseS4KCgkqIHdpbmRvd3MvLmN2c2lnbm9yZSwgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9ob29rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2hvb2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2luZG93cyBob29rIHByb2MgdGh1bmsgbWFuYWdlbWVudCBzaW1wbGlmaWVkLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgVEhVTktfQWxsb2Mgc28gYXMgdG8gYXZvaWQgMzItPjE2LT4zMiBjYWxsaW5nIHNlcXVlbmNlcy4KCVJlbW92ZWQgcGVyc2lzdGVudCB0aHVuayBjcmVhdGlvbiByb3V0aW5lcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGY4NmRnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIERHQSAyLjAuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgSEtFWV9MT0NBTF9NQUNISU5FXC4uLlxQcm9ncmFtRmlsZXNEaXIgcmVnaXN0cnkga2V5LgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBEZW5uaXMgQm9ya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglJdCdzIG5vIGVycm9yIHRvIHNlbmQgYSBXTV9DT01NQU5EIHRvIE1lbnVIZWxwLgoKCSogZmlsZXMvZmlsZS5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZUZpbGVBIHJldHVybnMgSEZJTEVfRVJST1Igd2hlbiB0aGUgZmlsZW5hbWUgY29udGFpbnMgYSB3aWxkIGNhcmQuCgoJKiBjb250cm9scy9zdGF0aWMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgZGlzcGxheSBidWcgaW4gdGhlIHN0YXRpYyBjb250cm9sLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJTWVzc2FnZSByZW1vdmVkIHdoZW4gbWVudSB0cmFja2luZyBmaW5pc2ggb24gYSBXTV9MQlVUVE9ORE9XTi4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CgktIEFkZCBjbGlwYm9hcmQgc3VwcG9ydCBmb3IgY29weWluZy9wYXN0aW5nIGJpdG1hcHMgb3IgUGl4bWFwcyBiZXR3ZWVuIFdpbmUKCSAgYW5kIG5hdGl2ZSBMaW51eCBhcHBsaWNhdGlvbnMuCgktIFJlc3BvbmQgdG8gdGhlIE1VTFRJUExFIHNlbGVjdGlvbiByZXF1ZXN0IHRhcmdldCB3aGVuIFdpbmUgaXMgdGhlCgkgIHNlbGVjdGlvbiBvd25lci4KCS0gUmVsYXggdHlwZSBjaGVja2luZyBmb3IgVEFSR0VUUyBzZWxlY3Rpb24uCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNldCAnZXhwZWN0ZWRfdmVyc2lvbicgb2YgYnVpbHQtaW4gYW5kIGR1bW15IG1vZHVsZXMgYWNjb3JkaW5nIHRvCgllbXVsYXRlZCBXaW5kb3dzIHZlcnNpb24uCgoJKiBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFrZSBDYWxsVG8xNiByZXR1cm4gc3R1YiBzZWdtZW50IG93bmVkIGJ5IEtFUk5FTC4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBJbXByb3ZlZCBHZXRDb2RlSGFuZGxlMTYgLyBHZXRDb2RlSW5mbzE2LgoKCSogb2xlL25scy9zdmUubmxzOiBEZW5uaXMgQmpvcmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJQWRkZWQgc29tZSB2YWx1ZXMgdGhhdCB3ZXJlIG1pc3NpbmcgaW4gdGhlIFN3ZWRpc2ggbmxzIGZpbGUuCgpTdW4gU2VwIDE5IDE4OjU4OjE2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogY3JlYXRlIEREQiBpbiBYMTFEUlZfRElCX0dldERJQml0cyBpZiBuZWNlc3NhcnkuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgbWlzc2luZyBleHBvcnQuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCB3aGVuIGxvYWRpbmcgKi5hbmkgZmlsZXMuCgoJKiBvbGUvKiwgZGxscy9vbGUzMi8qLCBkbGxzL29sZWF1dDMyLyosIGRsbHMvb2xlY2xpLyosIGRsbHMvb2xlZGxnLyo6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGJ1bGsgb2YgT0xFIGltcGxlbWVudGF0aW9uIHRvIGRsbHMvIHN1YmRpcmVjdG9yaWVzLgoKCSogY29udHJvbHMvbWVudS5jOiBEZW5uaXMgQmr2cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJU2VuZCBjb3JyZWN0IFdNX01FTlVTRUxFQ1Qgd2hlbiBtZW51IGNsb3Nlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNtYWxsIGZlYXR1cmUgaW4gdGhlIGZpbGUgZGlhbG9nLgoKCSogd2luMzIvbmV3Zm5zLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaCwgbXNkb3MvdnhkLmMsIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21lbWxvY2tieXRlcy5jLCBvbGUvb2xlZm9udC5jLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS92YXJpYW50LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3VwcG9ydCBmb3IgYW5vbnltb3VzIHN0cnVjdHMvdW5pb25zIG9uIGNvbXBpbGVycyB0aGF0IGltcGxlbWVudCBpdC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJU3R1YnMgZm9yIFBvbHlUZXh0T3V0QS9XLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBvYmplY3RzL2RpYi5jOgoJS2FybCBMZXNzYXJkIDx5YmljdWJ1a0B1bWFpbC5jb3JlbC5jb20+CglTb21lIG1vcmUgbWlub3IgR0RJIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbiBJbWFnZUxpc3RfRHJhdyB3aGVuIGRyYXdpbmcgdGhlIGJpdG1hcCB3aXRoIHRoZSB0cmFuc3BhcmVudCBmbGFnCglzZXQsIGJhY2tncm91bmQgY29sb3IvZm9yZWdyb3VuZCBjb2xvciBzaG91bGQgYmUgc2V0IHRvIHdoaXRlL2JsYWNrLAoJd2hlbiBkb2luZyBiaXRibHQgb3BlcmF0aW9uIHdpdGggdGhlIGJpdG1hcCBtYXNrLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS93aW4xNmRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRXh0ZW5kIERSQVdNT0RFIHN0cnVjdCB0byB3aW45NSBzcGVjLgoJQWRkIHNvbWUgbW9yZSBFc2NhcGUgLT4gRXNjYXBlMTYgY29udmVyc2lvbnMuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0b3AgdHJhc2hpbmcgZGV2bW9kZSBpZiBpbiBhbmQgb3V0IGRldm1vZGVzIGFyZSB0aGUgc2FtZS4KCgkqIGNvbnRyb2xzL3dpZGdldHMuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglUaGUgTURJQ2xpZW50IGNsYXNzIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBJRENfQVJST1cgY3Vyc29yLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb21ib2JveC4KCgkqIGNvbnRyb2xzL21lbnUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglQcm90ZWN0IFNldE1lbnUgZnJvbSByb2d1ZSBtZW51IGhhbmRsZS4KCUdldE1lbnUxNiBjYW4ganVzdCBjYWxsIEdldE1lbnUuCgoJKiB3aW5kb3dzL21kaS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVByb3RlY3QgTURJU2V0TWVudSBmcm9tIHJvZ3VlIG1lbnUgaGFuZGxlcy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVRpZHkgdXAgVFJBQ0UgZXRjIHRvIHVzZSBkZWZhdWx0IGNoYW5uZWwuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW52ZXIuaCwgb2xlL29sZTJubHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZSBWZXJMYW5ndWFnZU5hbWVbQVddIGJhY2sgdG8gYmFzZSAoZXhwb3J0ZWQgZnJvbSBLRVJORUwzMiAuLi4pLgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHdpemFyZCBwcm9wZXJ0eSBzaGVldHMuCgoJKiBtaXNjL2xzdHIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IEZvcm1hdE1lc3NhZ2UxNiBhdCBsZWFzdCBlbm91Z2ggdG8gZ2V0IHdpbjk1IDE2Yml0IHByaW50ZGxnIHdvcmtpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CgktIGlTZWxlY3RlZCBzaG91bGQgYmUgLTEgaWYgbm8gaXRlbSBzZWxlY3RlZCAoR2VyYXJkIFBhdGVsKQoJLSBzb21lIG9mIHRoZSBjaGVja3MgZm9yIGludmFsaWQgaXRlbXMgd2hlcmUgPiB3aGVuIHRoZXkgc2hvdWxkIGhhdmUgYmVlbiA+PQoJICAoTWFyY3VzIE1laXNzbmVyKQoJLSBtYWRlIEluc2VydEl0ZW0gYmVoYXZlIHNpbWlsYXJseSB0byBEZWxldGVJdGVtLCBpZSwgaWYgdGhlIGN1cnJlbnQgaXRlbSBpcwoJICBhZnRlciB3aGVyZSB0aGUgaXRlbSBpcyBpbnNlcnRlZCwgaW5jcmVtZW50IHRoZSBzZWxlY3RlZCBpdGVtIChEYXZpZCBMdXllcikKCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRGVjbGFyZSBDQUxMMzJfQ0JDbGllbnRbRXhdIHdpdGhvdXQgV0lOQVBJLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogKEUpSVAtcmVsYXRpdmUgb2Zmc2V0cyBkZXBlbmQgb24gb3BlcmFuZCwgbm90IGFkZHJlc3MsIHNpemUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEVudW1EaXNwbGF5RGV2aWNlcyouCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFNDX0dFVF9ERVZUWVBFLgoKCSogb2xlL2NvbXBvYmouYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBzdHViIGZvciBPTEUzMi5EbGxHZXRDbGFzc09iamVjdC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9zaGxndWlkLmgsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgc3VwcG9ydCBmb3Igc3BlY2lhbCBwaWRscyBpbiBTSEdldFNwZWNpYWxGb2xkZXJMb2NhdGlvbi4KCgkqIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L3Blbi5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgaW52aXNpYmxlIHBlbnMuCgoJKiBvYmplY3RzL2RpYi5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCBESUIgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNhc2UgZm9yIG1lbnUgaGFuZGxpbmcgaW4gd2luMzEuCgpUdWUgU2VwIDE0IDExOjUxOjAyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUZpeGVkIEdldERJQml0cyBwcm9ibGVtcy4KCgkqIG1pc2MvY3B1LmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZCBzdXBwb3J0IGZvciBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucyBvbiBjb21waWxlcnMgdGhhdCBpbXBsZW1lbnQgaXQuCgpNb24gU2VwIDEzIDE2OjA2OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvdWl0b29scy5jOgoJRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCUZpeGVkIHdpbjl4IGxvb2sgb24gY2hlY2tib3hlcyBhbmQgcmFkaW9idXR0b25zLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3Mvd2luMTZkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZ2RpLmgsIG1pc2MvLmN2c2lnbm9yZSwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2RjLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNoYW5nZSBpbnRlcmZhY2VzIHRvIFRIVU5LX0FsbG9jL0ZyZWUgc2xpZ2h0bHkgYW5kIG1ha2UgdGhlbSBub24tc3RhdGljLgoJUmVtb3ZlIHJlbGF5cyBmb3Igd2luMTZkcnYgZnJvbSBDYWxsQmFjayB0YWJsZSwgaW5zdGVhZCB1c2UgYnVpbGQgdG8KCWdlbmVyYXRlIHRoZW0gZGlyZWN0bHkgaW4gZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMuCglJZiBQcmludGVyIEFib3J0UHJvYyBpcyAxNmJpdCB0aGVuIGFsbG9jYXRlIHRodW5rIGFuZCBzdG9yZSB0aGF0IGFzIGEKCTMyYml0IHByb2MgaW4gREMuICBTZXR0aW5nIG9mIGFib3J0cHJvY3Mgbm93IGRvbmUgaW4gdGhlIGNvcnJlY3QgcGxhY2UKCShpLmUuIG5vdCBpbiB0aGUgZHJpdmVyKS4KCgkqIG9iamVjdHMvZGliLmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAYmlnZm9vdC5kZT4KCVJlbGF4ZWQgcGFyYW1ldGVyIGNoZWNraW5nIGZvciBHZXRESUJpdHMuCgoJKiB3aW4zMi9kZXZpY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBsYXN0IGVycm9yIGNvZGUgd2hlbiB0cnlpbmcgdG8gbG9hZCB1bmtub3duIFZ4RCB3aXRoIENyZWF0ZUZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVByZXRlbmQgc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgU0hFTExfTm90aWZ5SWNvbiooKS4KCgkqIGNvbnRyb2xzL21lbnUuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgTWVudUl0ZW1Gcm9tUG9pbnQgc3R1Yi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9mZiBieSBvbmUgYWxsb2NhdGlvbiBlcnJvciAoRFBBIGFuZCBEU0EpLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIGluIFBsYXlTb3VuZCB0aHJlYWQuCgpTYXQgU2VwIDExIDE2OjI5OjAwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IE5pY2sgSG9sbG93YXkgPE5pY2suSG9sbG93YXlAYWxmaWUuZGVtb24uY28udWs+CglGb3IgV2luIDMueCBhcHBsaWNhdGlvbnMsIGlmIHRoZXkgaGF2ZSBlaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbAoJc2Nyb2xsYmFycywgZW5hYmxlIGJvdGguCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtZW1vcnkvc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUVsaW1pbmF0ZWQgd2FybmluZ3MuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglTZXQgdGhlIG1vdXNlIGNhcHR1cmUgb24gdGhlIGNvbWJvIGxpc3Rib3guCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXhlZCB0aGUgY3JlYXRpb24gb2YgYmFjay1idWZmZXJzIGluIERHQSBtb2RlCgktIGFkZGVkIGEgY2hlY2sgb24gdGhlIHZhbGlkaXR5IG9mIHRoZSBMb2NraW5nIHJlY3RhbmdsZQoJLSBmaXhlZCB0aGUgZW51bWVyYXRpb24gZm9yIERYLTYuMAoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIFJHQlFVQUQvQ09MT1JSRUYgbWl4dXAgaW4gQ3JlYXRlTWFwcGVkQml0bWFwKCkuCgoJKiBjb250cm9scy9idXR0b24uYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglEcmF3IHRoZSBmb2N1cyByZWN0YW5nbGUgZm9yIGJ1dHRvbnMgd2l0aCBCU18zU1RBVEUsIEJTX1JBRElPQlVUVE9OLAoJQlNfQ0hFQ0tCT1gsIEJTX0FVVE8qIHN0eWxlcy4KCkZyaSBTZXAgMTAgMTQ6Mzg6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgZ3JhcGhpY3MvZHJpdmVyLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglXaW5zcG9vbCBEb2N1bWVudFByb3BlcnRpZXMgYW5kIERldmljZUNhcGFiaWxpdGllcyBzaG91bGQgbm93IHdvcmsgb24KCW5hdGl2ZSAxNiBiaXQgZHJpdmVycy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBEZXZpY2VDYXBhYmlsaXRpZXMgZm9yIERDX1BBUEVSU0laRS4KCVZhcmlvdXMgZml4ZXMgZm9yIE9wZW5QcmludGVyIGFuZCBFbnVtUHJpbnRlcnMuCglTZXBhcmF0aW9uIG9mIEdldFByaW50ZXIgaW4gcHJlcGFyYXRpb24gZm9yIHVuaWZpY2F0aW9uIHdpdGggRW51bVByaW50ZXJzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgc3VwcG9ydCBmb3IgYSBsYXJnZSBudW1iZXIgb2YgZGlmZmVyZW50IHBhcGVyIHNpemVzIHRvIFBvc3RTY3JpcHQKCWRyaXZlci4KCgkqIGluY2x1ZGUvZDNkLmg6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBkZWZpbml0aW9ucyBvZiBDT00gb2JqZWN0cyBmb3IgRDNEIDYueCBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvcHNkcnYvZm9udC5jOiBOaWNrIEhvbGxvd2F5IDxhbGZpZUBhbGZpZS5kZW1vbi5jby51az4KCUlmIHRoZXJlIGlzIG5vdCBhbiBleGFjdCBtYXRjaCBmb3VuZCBmb3IgdGhlIHJlcXVlc3RlZCBmb250IG5hbWUsCglpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmaXJzdCBmb250IGRlZmluZWQgZm9yIHRoZSBwcmludGVyLCBtYXAgc29tZQoJY29tbW9uIGZvbnQgZmFtaWxpZXMgKGUuZy4gQXJpYWwgLT4gSGVsdmV0aWNhKSwgYW5kIHNlYXJjaCBhZ2Fpbi4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ1ZyBpbiBDQkNsaWVudCByb3V0aW5lcyBieSBzdG9yaW5nIHRoZSBTRUdQVFIgaW4gdGhlIGdsb2JhbAoJdGFibGUgYW5kIHRyYW5zbGF0aW5nIGl0IG9uIGV2ZXJ5IHVzZS4KCgkqIGluY2x1ZGUvYml0bWFwcy9vaWNfc2FtcGxlOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIHBpeG1hcCB0byBsb29rIGxpa2UgdGhlIHdpbmRvd3MgZGVmYXVsdCBhcHBsaWNhdGlvbiBpY29uLgoKCSogZmlsZXMvZHJpdmUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglTdG9wIGNyYXNoIGluIEdldERpc2tGcmVlU3BhY2VFeC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1hZGUgc3VyZSB0aGF0IHRoZSB3aW5kb3dzIHdpdGggdGhlIFdTX0VYX1RPT0xXSU5ET1cgc3R5bGUgZGlkbid0IGdldAoJaGFuZGxlZCBieSB0aGUgd2luZG93IG1hbmFnZXIuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgYmVoYXZpb3IgYXJvdW5kIHRoZSBFU19XQU5UUkVUVVJOIHN0eWxlIGluIHRoZSBlZGl0Cgljb250cm9sLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglQcmVzc2luZyB0aGUgZGVsZXRlIGtleSB1c2luZyBhbiBleHRlbmRlZCBrZXlib2FyZCB3aXRoIG51bWxvY2sgb24gaXMKCW5vdCBnZW5lcmF0aW5nIGFueW1vcmUgYSBXTV9DSEFSIG1lc3NhZ2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IE5pY2xhcyBLYXJsc3NvbiA8bmthcmxzc29AcmEuYWJvLmZpPgoJRml4ZWQgcGF0dGVybiBtYXRjaGluZyBpbiBQYXRoTWF0Y2hTcGVjQS9XCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglUYWJiaW5nIGluIHRoZSBsaXN0dmlldyBvZiB0aGUgc2hlbGx2aWV3LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgTElTVFZJRVdfR2V0SXRlbVJlY3Q6IHRoZSBjYWxjdWxhdGlvbnMgd2VyZSBvZmYgZm9yIExWSVJfQk9VTkRTLAoJTFZJUl9TRUxDVEJPVU5EUywgTFZJUl9MQUJFTCB3aGVuIHRoZSBpdGVtIHdpZHRoIGlzIGdyZWF0ZXIgdGhhbiB0aGUKCWNvbHVtbiB3aWR0aC4KCUZpeGVkIFdNX0dFVERMR0NPREUgYnkgcmVtb3ZpbmcgdGhlIERMR0NfV0FOVFJUQUIgYW5kIGFkZGluZyBETEdDX1dBTlRDSEFSUy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggaW4gZGV0YWNoIHNlcXVlbmNlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3cm9uZyByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglQcmV2ZW50IGVuZGxlc3MgbG9vcCBpbiBleGNlcHQyLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCU5vdyB3b3JrcyBhcm91bmQgd2luZSBuZXZlciBleGl0aW5nIHRoZSBkZWJ1Z2dlci4KCVNob3VsZCBwdXQgYnVnIHJlcG9ydHMgaW4gdGhlIHJpZ2h0IHBsYWNlIG5vdy4KCgkqIG9sZS9vbGVhdXQzMi5jLCBvbGUvTWFrZWZpbGUuaW4sIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBzdHViIGZvciBSZWdpc3RlckFjdGl2ZU9iamVjdCgpLgoKCSogZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvd2luMzJzL3czMnN5cy5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBXSU4zMlMxNi5FWFAxIChtb3N0IGxpa2VseSBMb2FkUGVSZXNvdXJjZTE2KS4KClN1biBTZXAgIDUgMTY6NDg6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIGluY2x1ZGUvd2luZGVmLmg6CglSZW1vdmVkIF9fd2luZWxpYiBmbGFnLgoKCSogd2luZG93cy9kcml2ZXIuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG11bHRpbWVkaWEvdGltZS5jLCBtdWx0aW1lZGlhL3dpbm1tLnJjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIG5ldyBNTSBoZWFkZXIgb3JnYW5pemF0aW9uLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL29zcy5oLCBtdWx0aW1lZGlhL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBEREsgbGV2ZWwgbWF0ZXJpYWwgdG8gbmV3IGluY2x1ZGUvbW1kZGsuaCBmaWxlLgoJQ29waWVkIHNvbWUgU0RLIGxldmVsIG1hdGVyaWFsIGZyb20gaW5jbHVkZS9tdWx0aW1lZGlhLmggZmlsZS4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byBuZXcgTU0gaGVhZGVyIG9yZ2FuaXphdGlvbi4KCUNsZWFuZWQtdXAgaW50ZXJuYWwgc3RydWN0dXJlcyAobm93IDMyIGJpdCBvbmx5KS4KCU5vdyB1c2luZyB0aGUgTU1TWVNURU0gZW50cnkgcG9pbnRzIHJhdGhlciB0aGFuIHRoZSBsb3cgbGV2ZWwgZHJpdmVyCglvbmVzIGRpcmVjdGx5LgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXggJWZzIGZvciBzaWduYWwgaGFuZGxlcnMgaW4gdGhlIEZTX3NpZyB1bmRlZmluZWQgY2FzZSAodGhpcyBwYXRjaAoJYWN0dWFsbHkgZnJvbSBVbHJpY2ggV2VpZ2FuZCwgSSBvbmx5IHRlc3RlZCBpdCkuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUm9uIFJlY29yZCA8cnJAc2NvLmNvbT4KCUFkZGVkIHN1cHBvcnQgb2YgX190aHJfZXJybm8gZm9yIHJlZW50cmFuY2Ugb24gVW5peFdhcmUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCU5vIGxvbmdlciBuZWVkcyB0byBjYWxjdWxhdGUgaXRzIG93biBjaGFyYWN0ZXIgc2l6ZS4KCgkqIG1pc2MvbWFpbi5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCUNvbnNlcXVlbnRpYWwgY2hhbmdlcyB0byBkZWZhdWx0IHN5c3RlbSBmb250IHNpemVzCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVZhcmlvdXMgZml4ZXMgZm9yIHRoZSBYMTEgZm9udCBtYXBwZXIsIHBhcnRpY3VsYXJseToKCS0gc2l6ZSBmb250cyB3aXRoIG5lZ2F0aXZlIGhlaWdodHMgY29ycmVjdGx5CgktIGNhbGN1bGF0ZSBhdmVyYWdlIHdpZHRoIGNvcnJlY3RseS4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglVc2UgYSBzcGVjaWFsIHZhbHVlIGluIHRoZSBob3RzcG90IGNvb3JkaW5hdGUgdG8gaWRlbnRpZnkgd2hpY2ggSElDT04KCWFyZSBjdXJzb3JzIGFuZCB3aGljaCBhcmUgaWNvbnMuCgoJKiBjb250cm9scy9jb21iby5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglNb2RpZmllZCBDQkRyb3BEb3duIHRvIGZpbmQgdGhlIGJlc3QgaGVpZ2h0IG9mIHRoZSBsaXN0Ym94LgoKU2F0IFNlcCAgNCAxNDozNjowMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvcG9ydC5jLCBjb25maWd1cmU6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHN0cltuXWNhc2VjbXAuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsbG93IHRpbWVvdXQgb2YgMC4gQ2FwIHRpbWVyIHJhdGUgdG8gU1lTX1RJTUVSX1JBVEUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCB0eXBlIFBXT1JELgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIGxvYWRzIG9mIHR5cGVzLCBkZWZpbmVzIGFuZCBkZWNsYXJhdGlvbnMgdG8gd2luc3Bvb2wuaC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBoZWlnaHQgb2YgaXRlbXMgaW4gdGhlIGxvb2tpbiBjb21ib2JveCBvZiB0aGUgZmlsZWRsZzk1LgoKCSogY29udHJvbHMvZWRpdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluaXRpYWxpemUgdGhlIGVuYWJsaW5nIHN0YXRlIHZhcmlhYmxlIGluIHRoZSBlZGl0LgoKCSogZ3JhcGhpY3MvYml0Ymx0LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJVGhlIGZhc3Qgd2luZG93IGZyYW1lIHNpemUgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBmcmFtZSBzaXplIHVzZWQKCWJ5IE5DX0RyYXdGcmFtZSBmdW5jdGlvbi4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+Cglsc3RybmNtcGkgaXNuJ3QgYSB3aW5kb3dzIEFQSSwgdXNlIHN0cm5jYXNlY21wIGluc3RlYWQuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglGaXhlZCBHTUVNX1pFUk9JTklUIGluIEdsb2JhbFJlYWxsb2MgKHRoYW5rcyB0byBHZXJhcmQgUGF0ZWwpLgoKCSogd2luZG93cy9tc2dib3guYzogQWRkZWQgbWlzc2luZyBIRk9OVCB0eXBlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGxvYWRlci9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2NsYXNzLmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIENvcHlJbWFnZSB0byBhY2NlcHQgZGVzaXJlZFgsIGRlc2lyZWRZIGFuZCBMUl9DT1BZRlJPTVJFU09VUkNFLgoJQ1VSU09SSUNPTl9GaW5kQmVzdEljb24gY2hhbmdlZCB0byBmaW5kIHRoZSBjb3JyZWN0IGljb24uCglJbWFnZUxpc3RfUmVwbGFjZUljb24gbm93IGNhbGxzIENvcHlJbWFnZSBpbnRlcm5hbGx5LgoJQXNzaWduIGEgdmFsdWUgZm9yIHRoZSBoSWNvblNtIENMQVNTIG1lbWJlciAodXNpbmcgQ29weUltYWdlKS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIFdyaXRlQ29uc29sZU91dHB1dCBhbmQgR2V0TnVtYmVyT2ZDb25zb2xlSW5wdXRFdmVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUdpdmUgYXBwbGljYXRpb25zIGEgY29weSBvZiB0aGUgcHJvcGVydHkgc2hlZXQgZGlhbG9nIHRlbXBsYXRlIGFzIHRoZXkKCW1pZ2h0IG1vZGlmeSBpdC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWxheSBleGNsdWRlIGxpc3RzIHdlcmUgbm90IHdvcmtpbmcgZHVlIHRvIHNvbWUgQ2hhclVwcGVyQSgpCglzb21ld2hlcmUgZWxzZS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgd2luZS5pbmk6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+Cgl3aW5zcG9vbCAtPiB3aW5zcG9vbC5kcnYKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBTdHJDbXBOSUEgbGlrZSB0aGUgb3RoZXIgU3RyQ21wWFggZnVuY3Rpb25zLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJlc29sdmUgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBlbnVtZXJhdGluZyB2YWx1ZXMuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglUaGUgZm9ybWF0IHJlY3QgaXMgcmVjYWxjdWxhdGVkIGZvciBlYWNoIGZvbnQgY2hhbmdlLiBNb3ZlRW5kICYKCU1vdmVIb21lIGltcHJvdmVkLgoKRnJpIFNlcCAgMyAxNjo0OToxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jOgoJS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglJYW4gV2FyZAoJRGFuIExhbmdsb2lzCglTcGVlZCB1cCBjb252ZXJzaW9uIGJldHdlZW4gWEltYWdlcyBhbmQgRElCU2VjdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVNvbWUgPG9wZW4+IGZlYXR1cmVzIGluIHRoZSBmaWxlIGRpYWxvZyA5NS4KCgkqIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBnbG9iYWwgdmFyaWFibGUgcEN1cnJlbnRUZWIuCgoJKiBtZW1vcnkvaGVhcC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhFQVBfQ29tbWl0L0RlY29tbWl0IHdlcmUgYXNzdW1pbmcgYSBwYWdlIHNpemUgb2YgNEtCCgl1bmNvbmRpdGlvbmFsbHkuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBIGZldyBtb3JlIERDXyBkZWZpbmVzIGZyb20gV2luMjAwMC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNoZWNrIHRoYXQgbHBDcmVhdGUtPmxwc3pOYW1lIGlzIG5vbi1OVUxMLgoKCSogd2luZG93cy9kaWFsb2cuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1vcmUgcmVzdHJpY3RpdmUgY2hlY2tzLCBzbyBESUFMT0dfSXNBY2NlbGVyYXRvciBkb24ndCBsb29wCgllbmRsZXNzbHkuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglNZW51IGhpZGVzIHdoZW4gY2xpY2tlZCBmb3IgYSBzZWNvbmQgdGltZS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJLSBzZWxlY3QgdGhlIGZvbnQgaW50byB0aGUgZGMgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBleHRlbnQKCS0gbWFrZSBidXR0b25oZWlnaHQgY29ycmVzcG9uZCB0byB0ZXh0IGhlaWdodCArIHdpZHRoIHRvIGNhcHRpb24KCS0gYnV0dG9uIHdhcyAiZmxhc2hpbmciIG9uIEVuZERpYWxvZyAobXVzdCBkZWxldGUgZm9udCBBRlRFUiBFbmREaWFsb2cpCgktICNkZWZpbmVzIGZvciBEbGdJdGVtSWRzCgktIGltcGxlbWVudCBNQl9SRVRSWUNBTkNFTAoKCSogY29udHJvbHMvZWRpdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUtlZXAgdGhlIGVuYWJsZSBzdGF0ZSBpbiB0aGUgZWRpdCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBjYWxsaW5nCglJc1dpbmRvd0VuYWJsZWQoKS4KCgkqIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9sZS9jbGlwYm9hcmQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCS0gSW1wbGVtZW50IGludGVycHJvY2VzcyBjbGlwYm9hcmQgY29tbXVuaWNhdGlvbi4KCS0gU3VwcG9ydCBmb3IgdGhlIFBSSU1BUlkgYW5kIENMSVBCT0FSRCBzZWxlY3Rpb24gYXRvbXMuCgktIFN1cHBvcnQgZm9yIHRoZSBUQVJHRVRTIHNlbGVjdGlvbiBmb3JtYXQuCgktIEV4cG9zZSBuYXRpdmUgV2luZG93cyBjbGlwYm9hcmQgZm9ybWF0cyB0aHJvdWdoIFggc2VsZWN0aW9uIHRhcmdldHMuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCU1ha2Ugc3RvY2sgZm9udHMgaW5kZXBlbmRlbnQgb2YgbWFwcGluZyBtb2RlLgoJU3lzdGVtIGZvbnQgc2hvdWxkIG9ubHkgYmUgYm9sZCBmb3IgV2luMzEuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHRydW5jYXRpbmcgZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gY29udmVydGluZyBmb20gZGlhbG9nIHVuaXRzCgl0byBwaXhlbHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBBYmV5IEdlb3JnZTxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgbmV3IGNvb3JkaW5hdGVzIHJlY2VpdmVkIGluIFdNX05DQ0FMQ1NJWkUgbWVzc2FnZS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglTbGlnaHQgMSBwaXhlbCBhZGp1c3RtZW50IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmFkaW8gYnV0dG9uIGJpdG1hcC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvZmYgYnkgb25lIGFsbG9jYXRpb24gZXJyb3JzLgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJVGhlIGJhY2tzcGFjZSBpcyBub3cgaGFuZGxlZCBpbiB0aGUgV01fQ0hBUiBtZXNzYWdlLgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IGFsbCBNREkgY2hpbGRyZW4gaGF2ZSB0aGUgV1NfRVhfTURJQ0hJTEQgc3R5bGUgc2V0LgoKCSogbWVtb3J5L3N0cmluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHByb3RvdHlwZSBvcmRlci4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeCBFWENfc2VndiBmb3IgdGhlIFRSQVBfc2lnIHVuZGVmaW5lZCBjYXNlIChlZyBGcmVlQlNEKS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBzdXBwb3J0IGZvciB0aGUgY2xvc2UgYnV0dG9uIGluIHRoZSBTaGVsbEFib3V0IGRpYWxvZ3MuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBEdXRjaCByZXNvdXJjZXMgZm9yIFByaW50RGxnMzIuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUNvbXBsZXRlZCBQcmludERsZzMyIHJlc291cmNlIHN0cmluZ3RhYmxlLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzYW5pdHkgY2hlY2tzIGluIHRoZSBjbGVhbnVwIGNvZGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29tcGxldGVkIEdldEtleU5hbWVUZXh0IGZvciBub24tY2hhcmFjdGVyIGtleXMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2UgZGlyZWN0b3JpZXMgbmFtZSBhcHBlYXIgaW4gdGhlIEJyb3dzZUZvckZvbGRlciBkaWFsb2cuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRG8gbm90IHJlbW92ZSAuZHJ2IGZyb20gZmlsZW5hbWVzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbGl0dGxlIHBvc2l0aW9uaW5nIGJ1ZyB3aXRoIHRoZSBjaGVja2JveC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCByZXNpemluZyBidWdzIGZvciB3aW5kb3dzIHdpdGggV1NfVEhJQ0tGUkFNRSBhbmQgV1NfRExHRlJBTUUKCXN0eWxlcy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IE1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglDaGFuZ2VkIHNucHJpbnRmIHRvIHdzbnByaW50ZkEgdG8gcmVtb3ZlIHVucmVzb2x2ZWQgZXh0ZXJuYWwgd2hlbgoJY29tcGlsaW5nIG9uIFNvbGFyaXMvU3VuLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIExWTV9JTlNFUlRDT0xVTU5XIGFuZCBMVk1fSU5TRVJUSVRFTVcgYnkgdXNpbmcgdGhlIGFzY2lpCgllcXVpdmFsZW50cy4gKFdpbldvcmQgOTcsIEZpbGUgT3BlbiBkaWFsb2cpCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGluIEdldENsYXNzSW5mb1cgdGhlIHNhbWUgaGFjayBmb3Igc3lzdGVtY2xhc3NlcyBhcyBpbgoJR2V0Q2xhc3NJbmZvQSAod2lud29yZCA5NyB3aXRoIG5hdGl2ZSBjb21jdGwzMikuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBTSEdERklMX0ZJTkREQVRBIGNvcnJlY3RseSBpbiBTSEdldERhdGFGcm9tSURMaXN0Vy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCB3UGFyYW0gb2YgV01fUEFJTlQgbXNnIGZvciBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gV0lOU1BPT0xfR2V0T3BlbmVkUHJpbnRlckEuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJc3Via2V5X2ZvdW5kIGRpZCBub3Qgc2VhcmNoIGZvciBfYWxsXyBzdWIga2V5cy4KClNhdCBBdWcgMjEgMTQ6NDc6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGJhc2ljIGJyb3dzaW5nIGluIHRoZSBmaWxlIG5hbWUgZWRpdCBvZiB0aGUgZmlsZWRsZyA5NS4KCgkqIGNvbnRyb2xzL21lbnUuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBdm9pZCBjaGFuZ2luZyB0aGUgYWN0aXZhdGlvbiBzdGF0ZSBpbiBFbmFibGVNZW51SXRlbS4KCgkqIGluY2x1ZGUvd2lubnQuaDogRml4ZWQgI2lmZGVmIHN5bWJvbCBmb3IgUG93ZXJQQy4KCgkqIG9sZS9wYXJzZWR0LmMsIG9sZS9wYXJzZWR0Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU9ubHkgZGVjbGFyZSBEYXRlU3R5bGUgaW4gYSBzaW5nbGUgY29tcGlsYXRpb24gdW5pdC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCB0aGUgY2FzZSBvZiBhIHVzZXIgZGVmaW5lZCBpY29uIGZvciB0aGUgc3lzYnV0dG9uIGhpdHRlc3QuCgoJKiBvbGUvdHlwZWxpYi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgdHlwZWxpYiByZWFkaW5nIHRvIGNvcnJlY3RseSB1c2UgdGhlIG9mZnNldCBvZiB0aGUgdHlwZWxpYiB0aGF0CglpcyBlbWJlZGRlZCBpbiBmb3IgZXhhbXBsZSBhIGRsbCBmaWxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBLcmlzdGlhbiBOaWVsc2VuIDxrcmlzdGlhbi5uaWVsc2VuQHJpc29lLmRrPgoJRml4ZWQgQ3JlYXRlRElCU2VjdGlvbigpIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIGhlaWdodCB0byBzZXQgdGhlIGhlaWdodAoJcG9zaXRpdmUgaW4gdGhlIGNyZWF0ZWQgRElCU0VDVElPTiwgYXMgcGVyIE1TIGtub3dsZWRnZWJhc2UgUTE4NjU4Ni4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglUaGUgcGFpbnQgcmVjdGFuZ2xlIHJldHVybiBpbiB0aGUgUEFJTlRTVFJVQ1QgaW4gQmVnaW5QYWludCBzaG91bGQKCW5ldmVyIGJlIGJpZ2dlciB0aGFuIHRoZSBjbGllbnQgYXJlYSBvZiB0aGUgd2luZG93LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFrZSBzdXJlIHRoYXQgYW4gZW1wdHkgc3RyaW5nIG5ldmVyIG1hdGNoZXMgYSBsaXN0Ym94IGVudHJ5IGluCglMSVNUQk9YX0ZpbmRTdHJpbmcoKS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbGlnbm1lbnQgZml4LgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gYWNjZXNzaW5nIHN5c21lbnUuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlYWxseSBkbyBhIHNpbGVudCBiYWNrdHJhY2Ugd2hlbiByZXF1ZXN0ZWQuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRG8gbm90IHNldCB0aGUgYWRkcmVzcyBpZiB0aGUgc3ltYm9sIGlzIHN0aWxsIHRhZ2dlZCBJTlZBTElELgoKCSogZGVidWdnZXIvc3RhYnMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBOX0JJTkNMIGFuZCBOX0VJTkNMIGluc3RydWN0aW9ucy4KCUZpeGVkIHR5cGUgcGFyc2luZyAoYXMgZ2VuZXJhdGVkIGJ5IGVnY3MpLgoKV2VkIEF1ZyAxOCAxODo0MDo1MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgdHlwZWRlZiB0byB3b3JrIGFyb3VuZCBlZ2NzIHByb2JsZW0uCgoJKiBvbGUvKi5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlcyBmcm9tIG9sZSByZWxhdGVkIGZpbGVzLgoKCSogb2xlL2NvbXBvYmouYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIFdPVyBjaGFuZ2VzLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dvd250MzIuaCwgbG9hZGVyL21vZHVsZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvd293MzIuc3BlYywgcmVsYXkzMi93b3d0aHVuay5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgV09XIHJvdXRpbmVzIHRvIHNpbmdsZSBmaWxlLgoJQWRkZWQgYWxsIG1pc3NpbmcgV09XIHJvdXRpbmVzLCBmaXhlZCBXT1dDYWxsYmFjazE2RXguCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbnRlcm5hbCBidWZmZXIgZm9yIDE2IGJpdCBtbWlvIE1FTSBmaWxlcy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBzb21lIGVycm9ycyBpbiBjbGVhbmluZyB1cCB2YWx1ZXMgcmV0dXJuZWQgYnkgTUNJIGRyaXZlcnM6IHRoaXMKCSAgc2hvdWxkIHNvbHZlIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgd2l0aCB0aGUgQ0QgcGxheWVyL3dyaXRlcgoJLSBjcmFzaCB3aGVuIGNvbW1hbmQgd2FzIHJlcXVlc3RlZCB3aXRoIGF1dG9tYXRpYyBvcGVuIChub3RlLCB0aGlzCgkgIHdpbGwgbm93IGdyYWNlZnVsbHkgcmVwb3J0IGFuIGVycm9yLCBub3QgZG8gdGhlIGNvcnJlY3QgdGhpbmcpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgUFNIX1VTRUlDT05JRC9QU0hfVVNFSElDT04gYW5kIHRoZSBQU1BfVVNFVElUTEUKCWZsYWdzLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEVGbGFncyB3ZXJlIHBhc3NlZCBpbmNvcnJlY3RseSBieSBDYWxsRnJvbTE2UmVnaXN0ZXIuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVzdG9yZSBTVEFDSzE2RlJBTUUgZmllbGRzIGluIFN3aXRjaFN0YWNrQmFjazE2LgoKCSogdG9vbHMvd3JjL3dyYy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9wYXJzZXIueToKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglXcmMgZGlkIG5vdCBjaGVjayBhbnkgSURzIHdoaWNoIGFyZSBvbmx5IDE2IGJpdC4gQ29tbW9uIGRpYWxvZ3MgaGFkIHNvbWUKCUlEcyBsYXJnZXIgYW5kIHRoYXQgY2F1c2VkIHByb2JsZW1zLiBUaGlzIGlzIG5vdyBzb2x2ZWQgKEkgaG9wZSkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBBdWcgMTUgMTg6NTI6MzIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBTdGV2ZSBUaWJiZXR0IDxzdGV2ZXRAY29yZWwuY29tPgoJRml4ZWQgY3Vyc29yIHN0cmV0Y2ggY29kZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW5oaWJpdCB3cmFwYXJvdW5kIGluIGNvbXBhcmlzb24uCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgbG9hZGVyL2xvYWRvcmRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgaW50ZXJuYWwgZGxsLCBleHBvcnRpbmcgYWxyZWFkeSBleGlzdGluZyBwYXRoIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgY29udHJvbHMvbWVudS5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRW5zdXJlIHRoYXQgdGhlIFdNX0VOVEVSSURMRSBtZXNzYWdlIGlzIG5vdCBzZW50IGlmIHRoZSB3YWtlLXVwIGV2ZW50Cglmb3IgdGhlIE1TR19JbnRlcm5hbEdldE1lc3NhZ2UoKSBjYWxsIGlzIGEgV01fVElNRVIuCgoJKiByYy93aW5lcmMuYywgaW5jbHVkZS9yZXNvdXJjZS5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglHQ0MgMy4wIGhhcyBub3QgYmVlbiByZWxlYXNlZCB5ZXQsIGJ1dCBpdCBpcyBnb29kIHRvIGJlIHByZXBhcmVkLgoKCSogbWlzYy9zcHkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCByZXNvbHV0aW9uIG9mIExWTSBtZXNzYWdlcy4KCgkqIG9iamVjdHMvZGliLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkZWQgcHJvdGVjdGlvbiBhZ2FpbnN0IHBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFN0ZXZlIFRpYmJldHQgPHN0ZXZldEBjb3JlbC5jb20+CglGaXhlZCBjdXJzb3Igc2VsZWN0aW9uIHRvIGZpbmQgdGhlIGNvcnJlY3QgY3Vyc29yIHdoZW4gbW9yZSB0aGFuIG9uZQoJYXZhaWxhYmxlLgoKCSogZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuc3BlYywgZGxscy93aW5zcG9vbC93c3Bvb2wuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmVwbGFjZWQgYSBzdGF0aWMgdGVuIGVsZW1lbnQgYXJyYXkgd2l0aCBhIGR5bmFtaWMgcG9pbnRlciBhcnJheS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBzcGVjaWFsIGNhc2Ugd2hlbiBubyBwcmludGVyIGluc3RhbGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYzoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU5ldyByb3V0aW5lIERsbEVudHJ5UG9pbnQgZm9yIHNoZWxsLmRsbC4gIExvYWRzIHNoZWxsMzIuZGxsLAoJc2luY2UgbW9zdCBzaGVsbC5kbGwgZnVuY3Rpb25zIGNhbGwgdGhlaXIgMzItYml0IGNvdW50ZXJwYXJ0cy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhbGlnbm1lbnQuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglFTV9TRVRTRUwgc2Nyb2xscyBpZiBvdXRzaWRlIG9mIHRoZSB2aXNpYmxlIHJhbmdlLgoJInNoaWZ0K2hvbWUiIHNlbGVjdGlvbiBpbXByb3ZlZCBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogb2xlL3BhcnNlZHQuYzogUmVtb3ZlZCBSQ1Mga2V5d29yZC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgdXNlIG9mIHJjIGZpbGVzIGZvciBzdHJpbmdzIGFuZCBtZW51cywgZml4ZXMuIEZpcnN0IGludGVybmFsCglpY29ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGludGVyZmFjZTogRHJvcFNvdXJjZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQmV0dGVyIERyb3BUYXJnZXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIR2V0RmlsZUluZm8gYmV0dGVyLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglQcm90ZWN0IGNhY2hlIHdpdGggY3JpdGljYWwgc2VjdGlvbi4KCVJlbW92ZWQgaGFjayB0byBsb2FkIGljb25zIGZyb20gZXh0ZXJuYWwgc2hlbGwzMi5kbGwuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglRdWVyeUdldERhdGEsIEVudW1Gb3JtYXRFdGMgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIG1hcHBpbmcgb2YgZmlsZSBleHRlbnNpb25zIHRvIHRleHQuCgoJKiBtaXNjL2RkZW1sLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgYXNjaWkvdW5pY29kZSBpc3N1ZSBmb3IgbmFtaW5nIG9mIHRoZSBtdXRleGVzLgoJTWFkZSBtdXRleCBoYW5kbGVzIGdsb2JhbC4KCUZpeGVkIGluY29ycmVjdCBpbnRlcnByZXRhdGlvbiBvZiByZXR1cm4gdmFsdWVzIG9mIFdhaXRGb3JTaW5nbGVPYmplY3QuCgoJKiBvYmplY3RzL2ZvbnQuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDaGFyYWN0ZXJQbGFjZW1lbnRBLgoKCSogd2luZG93cy9kZWZ3bmQuYywgaW5jbHVkZS93aW51c2VyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXTV9TRVRJQ09OIGFuZCBXTV9HRVRJQ09OIG1lc3NhZ2VzLgoKCSogZmlsZXMvZHJpdmUuYzogTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJRklYTUUgb24gdW5pbXBsZW1lbnRlZCBmZWF0dXJlIG1hZGUgbGVzcyBvYnRydXNpdmUuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglOb3cgdGhlIGNvbnZlcnNpb24gaW4gdGhlIGJsdCBmdW5jdGlvbnMgcm91bmQgdXAgdGhlIHJlc3VsdC4KCgkqIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglEb2N1bWVudCB1c2Ugb2YgImluaXQiIGluIGJ1aWxkLXNwZWMudHh0LCBhbmQgbWFrZSBidWlsZC5jIHByaW50IGEKCXdhcm5pbmcgaWYgc29tZW9uZSB0cmllcyB0byB1c2UgImluaXQiIGluIGEgV2luMTYgc3BlYyBmaWxlLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzogTWljaGFlbCBLYXJjaGVyIDxrYXJjaGVyQGRway5iZXJsaW4uZmlkby5kZT4KCU1ha2Ugc3VyZSB3ZSBoYXZlIGEgZGdyb3VwIGJlZm9yZSBwYXRjaGluZyBwcm9sb2dzLgoKCSogKi9NYWtlZmlsZS5pbiwgKi8uY3ZzaWdub3JlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIGdsdWUgY29kZSBnZW5lcmF0aW9uIGNoYW5nZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc25vb3AuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIG5ldy1zdHlsZSBXaW5lIHRodW5rcy4KCVJlbW92ZWQgc29tZSBub3cgdW5uZWNlc3NhcnkgZnVuY3Rpb24gcG9pbnRlcnMuCgoJKiBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbFRvMTYuLi4gLyBDYWxsRnJvbTE2Li4uIFdpbmUgdGh1bmtzIHJlb3JnYW5pemVkOgoJLSBDbGVhbmVyIHNlcGFyYXRpb24gYmV0d2VlbiBjb3JlIGFuZCBnbHVlIGNvZGUuCgktIEFyZ3VtZW50IGNvbnZlcnNpb24gZ2x1ZSBjb2RlIG5vdyBpbiBDLgoJLSBHbHVlIGNvZGUgbmVlZGVkIGZvciAxNi1iaXQgLnNwZWMgZmlsZXMgaW5saW5lZC4KClNhdCBBdWcgMTQgMTU6NTM6NTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGltcGxlbWVudGVkIEdldENvbW1Nb2RlbVN0YXR1cwoJLSBmaXhlZCB0aGUgRFRSLCBDVFMgYW5kIENPTU1CUkVBSyByZWxhdGVkIHN1YmZ1bmN0aW9ucyBvZiBFc2NhcGVDb21tRnVuY3Rpb24KCS0gYWRkZWQgbW9yZSB2ZXJib3NlIFRSQUNFaW5nCgoJKiBtaXNjL3ZlcnNpb24uYzogTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJTWFkZSBHZXRWZXJzaW9uRXgoKSBiZWhhdmUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uIHdpdGgKCXJlZ2FyZCB0byBlcnJvciBoYW5kbGluZy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmsgRy4gQWRhbXMgPG1hZGFtc0BsaXZlcGFnZS5jb20+CglBZGRlZCBzdHViIGZvciBEcmF3RGliQ2xvc2UuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgbG9vayBvZiB0aGUgY29tYm9ib3gncyBkcm9wIGRvd24gYnV0dG9uIHdoZW4gaW4gV2luOTUgbG9vay4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaWNvbnMgaW4gcHJvcGVydHkgc2hlZXQgdGFicy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvd3JjLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVmVyc2lvbiAxLjAuMTQgb2Ygd3JjLgoKU3VuIEF1ZyAgOCAxODo1NjowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHdpbjMyL3RpbWUuYzogRml4ZWQgU2V0TG9jYWxUaW1lIHByb3RvdHlwZS4KCgkqIG9sZS9vbGUybmxzLmMsIHdpbjMyL2tlcm5lbDMyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy92ZXJzaW9uL2luZm8uYywgZmlsZXMvZG9zX2ZzLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBsb2FkZXIvbGlicmVzLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVJlcGxhY2VkIGEgZmV3IGNhbGxzIHRvIGxzdHIqIGZ1bmN0aW9ucyBieSB0aGVpciBDUlRETEwgb3IgbGliYwoJZXF1aXZhbGVudC4KCgkqIG1lbW9yeS9zdHJpbmcuYzoKCUFkZGVkIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGFyb3VuZCBhIGZldyBsc3RyKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9jcnRkbGwuaDoKCVJlaW1wbGVtZW50ZWQgbXVsdGktYnl0ZSBhbmQgd2lkZS1jaGFycyBmdW5jdGlvbnMgdG8gbm90IGRlcGVuZCBvbgoJbHN0ciogZnVuY3Rpb25zOyBhZGRlZCBhIGZldyBtaXNzaW5nIG9uZXM7IGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgpTYXQgQXVnICA3IDE0OjMyOjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL0F0dGljL3duZXQuaCwgaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9BdHRpYy9tcHIuc3BlYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvYXV0aC5jLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tcHIvbXVsdGluZXQuYywgZGxscy9tcHIvbnBzLmMsIGRsbHMvbXByL3B3Y2FjaGUuYywgZGxscy9tcHIvd25ldC5jLCBpbmNsdWRlL25ldHNwaS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXBhcmF0ZWQgV2luMTYgKFVTRVIpIGFuZCBXaW4zMiAoTVBSKSBuZXR3b3JrIHJvdXRpbmVzLgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgTVBSIHRvIGRsbHMvbXByLy4KCUFkZGVkIHByb3BlciBoZWFkZXJzIGFuZCBzdHVicyBmb3IgbWlzc2luZyBNUFIgcm91dGluZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXByb3ZlZCAoc29ydCBvZikgUmVnRmx1c2hLZXkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJZiB0aGUgd2luZG93IGlzIGFscmVhZHkgdGhlIHRvcG1vc3Qgd2luZG93IGluIFNob3dXaW5kb3coU1dfU0hPVyksIGl0CgltdXN0IG5vdCBiZSBhY3RpdmF0ZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVdNX1NZU0NPTU1BTkQgbWVzc2FnZSAoZm9yIFNDX0NMT1NFKSBzaG91bGQgYmUgcG9zdGVkIG5vdCBzZW50LgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVgxMWRydiBTZXREcmF3YWJsZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgREMgb3JpZ2luLCB0aGlzIHRyYW5zbGF0aW9uCglzaG91bGQgYmUgcmVmbGVjdGVkIGZvciB0aGUgZGMgY2xpcHBpbmcgcmVnaW9uIGZvciBDU19PV05EQyBhbmQgQ1NfQ0xBU1NEQy4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU2V0IGZvY3VzIHRvIHRoZSBkaWFsb2cgaW4gRW5kRGlhbG9nLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJTWFrZSBzdXJlIHdlIGNvbXBpbGUgd2luZXN0dWIubyBiZWZvcmUgdHJ5aW5nIHRvIGJ1aWxkIGEgV2luZWxpYiB0ZXN0Cglwcm9ncmFtLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgY2FzZSBzZW5zaXRpdml0eSBmbGFnLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglJbXBsZW1lbnRlZCB0aGUgcmV0dXJuIG9mIGhEZXZNb2RlcyBhbmQgaERldk5hbWVzIGluIHRoZSBQUklOVERMRwoJc3RydWN0dXJlIG9mIFByaW50RGxnQSgpLgoKCSogd2luZG93cy9xdWV1ZS5jLCBpbmNsdWRlL3F1ZXVlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBoYXJkd2FyZV9ldmVudCB1c2Ugd2luMzItY29uZm9ybWFudCBwYXJhbWV0ZXJzLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUV4cGxpY2l0bHkgbG9hZCBzaGVsbDMyLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJVGFrZSBpbnRvIGFjY291bnQgaWNvbnMgd2hlbiBkZXRlcm1pbmluZyB0YWIgc2l6ZS4KCgkqIGZpbGVzL2RyaXZlLmM6IE1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCUltcHJvdmVkIEdldERpc2tGcmVlU3BhY2VFeCgpIGltcGxlbWVudGF0aW9uIGEgbGl0dGxlIGJpdC4KCgkqIG1pc2MvY29tbS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZGVkIHNvbWUgbW9yZSBCYXVkcmF0ZXMKCS0gZml4ZWQgYSBoYW5nIGluIHRjc2V0YXR0ciB3aGVuIHRoZSBpbnB1dCBidWZmZXIgaXNuJ3QgZW1wdHkKCS0gYWRkZWQgbW9yZSB2ZXJib3NpdHkgZm9yIGRlYnVnZ2luZwoKCSogY29udHJvbHMvdWl0b29scy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglIYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgYnV0dG9uIGlzIHJlYWxseSBzbWFsbC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJV1NfRVhfRExHTU9EQUxGUkFNRSBhbG9uZSBkb2VzIG5vdCBtZWFuIHRpdGxlIGJhciwgeW91IHN0aWxsIGhhdmUgdG8KCXNwZWNpZnkgV1NfQ0FQVElPTi4KCldlZCBBdWcgIDQgMTU6MDc6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERpcmVjdElucHV0IEpveXN0aWNrIHN1cHBvcnQgKHRlc3RlZCB3aXRoIFdDOlByb3BoZWN5KS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvdGltZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCBTZXRMb2NhbFRpbWUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBJdmFuIERlIFNhZWRlbGVlciA8SXZhbmRzQHN5bXBhdGljby5jYT4KCU1pbm9yIGZpeCB0byB0aGUgRnJlbmNoIENhbmFkaWFuIGtleWJvYXJkLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaGVuIGZsaXBwaW5nIGJhY2tidWZmZXIgLT4gZnJvbnRidWZmZXIsIGZpcnN0IGV4Y2hhbmdlIHN1cmZhY2VzLCB0aGVuCgljb3B5IFhJbWFnZSwgc2luY2UgdGhlIHBhbGV0dGUgbWlnaHQgb25seSBiZSBkZWZpbmVkIGluIHRoZSBmcm9udGJ1ZmZlci4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglDcmVhdGUgc3lzY29uZmRpciBvbiBpbnN0YWxsLgoKCSogZGxscy9zdHJlc3MvLmN2c2lnbm9yZTogRml4ZWQgdHlwby4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJR290IHJpZCBvZiBkc3ByaW50ZiBhbmQgcmVsYXRlZCBtYWNyb3MuCgoJKiBzZXJ2ZXIvbXV0ZXguYzoKCVJlbW92ZSB0aGUgbXV0ZXggZnJvbSB0aGUgdGhyZWFkIGxpc3Qgd2hlbiBkZXN0cm95aW5nIGl0LgoKCSogKi8qOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCB2YXJpb3VzIERMTHMgdG8gZGxscy8KClN1biBBdWcgIDEgMTQ6NTg6MDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9lcnJvci5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MzMuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3N0YWNrLmM6CglSZW1vdmVkIElQX3JlZywgU1BfcmVnIGFuZCBGTF9yZWcgZGVmaW5pdGlvbnMgdG8gYXZvaWQgcG90ZW50aWFsCglhbGlhc2luZyBvcHRpbWl6YXRpb24gcHJvYmxlbXMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL3NpZ25hbC5jOgoJUmVtb3ZlZCBTSUdOQUxfTWFza0FzeW5jRXZlbnRzIGFuZCBjbGVhbmVkIHVwIHNpZ25hbCBoYW5kbGluZy4KCgkqIGluY2x1ZGUvQXR0aWMvYXN5bmMuaCwgd2luMzIvY29uc29sZS5jLCBmaWxlcy9BdHRpYy9hc3luYy5jLCBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvZmlsZS5jOgoJUmVtb3ZlZCBhc3luYyBJL08gc3VwcG9ydC4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzoKCVVzZSB0aGUgc2VydmljZSB0aHJlYWQgZm9yIGNvbW0gbm90aWZpY2F0aW9ucy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGxvYWRlci90YXNrLmMsIG1zZG9zL2RwbWkuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB3aW4zMi9rZXJuZWwzMi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglNYWRlIHN0YWNrIG1hbmlwdWxhdGlvbiBtYWNyb3MgaW50byBpbmxpbmUgZnVuY3Rpb25zLgoJQ2hhbmdlZCBhIGZldyBhY2Nlc3NlcyB0byBjb250ZXh0IHJlZ2lzdGVycyB0byBhdm9pZCBwb3RlbnRpYWwKCWFsaWFzaW5nIG9wdGltaXphdGlvbiBwcm9ibGVtcy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWVtb3J5L2luc3RyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglDaGFuZ2VkIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiB0byB1c2UgYSBDT05URVhUODYgaW5zdGVhZCBvZiBhCglTSUdDT05URVhULgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSB3aW5lLmNvbmYubWFuIG9uIGRpc3RjbGVhbgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTYXQgSnVsIDMxIDE5OjM1OjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUNsb3NlIHRoZSByaWdodCB3aW5kb3cgd2hlbiBjbGlja2luZyBvbiBhIG5vbiBhY3RpdmUgd2luZG93IGNsb3NlCglidXR0b24uCgoJKiBNYWtlZmlsZS5pbjogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVJlbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24gImR1bW15IiBmb3Igd2luZSBhbmQgd2luZS5zeW0uCgoJKiBmaWxlcy9wcm9maWxlLmM6CglSZW1vdmUgZmlsZSBmcm9tIGNhY2hlIHdoZW4gZmx1c2hpbmcgaXQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSWFuCglTY2htaWR0KS4KCgkqIGluY2x1ZGUvd2lubnQuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBDT05URVhUIGZvciBBTFBIQSBhbmQgTUlQUy4KCgkqIGNvbmZpZ3VyZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3VwcG9ydCBmb3IgU29sYXJpcyBMaW50LgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCB0b29scy9tYWtlX2RlYnVnLCB3aW4zMi9jb25zb2xlLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL3h0ZXJtLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3htYWxsb2MuaCwgbWlzYy94bWFsbG9jLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSBTb2xhcmlzIExpbnQuCgoJKiBpbmNsdWRlL3BzaHBhY2s0Lmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBDL0MrKyBjb21waWxlIGZpeC4KCgkqIG1zZG9zL2Rvc21lbS5jLCBvbGUvc3RvcmFnZTMyLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgY29udHJvbHMvYnV0dG9uLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVZhcmlvdXMgQU5TSSBDIGNvbXBhYmlsaXR5IGZpeGVzLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy9uZXR3b3JrLmMsIG1pc2Mvc3lzdGVtLmMsIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9sZS9vbGVmb250LmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpLWNoZWNrLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWxseSBjcmVhdGUgdGhlIG1hbi8gc3ViZGlyZWN0b3JpZXMgYmVmb3JlIGluc3RhbGxpbmcuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3Rhc2suYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNDQ3IChXSU4zMl9PbGRZaWVsZDE2KS4KCgkqIHdpbmRvd3MvZXZlbnQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdXNwZW5kIFdORCBsb2NrIGJlZm9yZSBFVkVOVF9TeW5jaHJvbml6ZS4KCgkqIHdpbjMyL2RldmljZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNyZWF0ZSBWeEQgaGFuZGxlIG9ubHkgZm9yIGtub3duIFZ4RHMuCgoJKiBNYWtlLnJ1bGVzLmluLCByZWxheTMyL01ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgY29tcGlsYXRpb24gb2YgKi5zcGVjLmMgZmlsZXMgdXNlIC1mbm8tYnVpbHRpbiByZWdhcmRsZXNzIG9mCgl3aGVyZSB0aGV5IGFyZS4KCgkqIGluY2x1ZGUvdGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZ3JhcGhpY3MvZGRyYXcuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQvYWRkZWQgbWlzc2luZy93cm9uZyBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBtYWRlIGludGVybmFsCglmdW5jdGlvbnMgc3RhdGljLgoKCSogdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzc2luZyBwcm90b3R5cGVzIGFuZCBtYWRlIGl0IHdvcmsgd2l0aCBTb2xhcmlzIFgxMS4KCgkqIGRlYnVnZ2VyL2V4dGVybmFsLmMsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9vbGVmb250LmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglFbGltaW5hdGVkIHdhcm5pbmdzLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHRoZSBEU0VHIHZhbHVlIGluIHRoZSBTRUdUQUJMRUVOVFJZIHN0cnVjdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBidWlsdGluIHRvb2xiYXIgYml0bWFwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1vcmUgbWVzc2FnZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcnlwdFNldEtleVBhcmFtcygpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YnMgZm9yIERBRF9TZXREcmFnSW1hZ2UoKSBhbmQgUGF0aENsZWFudXBTcGVjKCkuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIF9leGNlcHRfaGFuZGxlcjIoKS4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRSYW5kb21SZWdpb24oKS4KCgkqIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy9ub25jbGllbnQuYzoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgc3lzdGVtIGJ1dHRvbiBiZWhhdmlvciBhbmQgYXNzb2NpYXRlZCBpdCB0byB0aGUgc3lzdGVtCgltZW51IGluIHdpbjk1LiBBbHNvIHBlcm1pdCB0aGUgU0NfQ0xPU0UgaXRlbSB0byBiZSBkaXNhYmxlZC4KCgkqIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUJ1Z2ZpeGVzIGFuZCBhIGZha2UgR0VUQkFTRUlSUS4KCgkqIGZpbGVzL2FzeW5jLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBhc3luYyBmZHMgbm9uYmxvY2tpbmcuCgoJKiB3aW5kb3dzL21kaS5jOiBEYW4gTGFuZ2xvaXMgPGRhbmllbGxAY29yZWwuY29tPgoJUmVtb3ZlZCBhbiBpbmFwcHJvcHJpYXRlIGlmIHN0YXRlbWVudCBmcm9tIE1ESV9DaGlsZEFjdGl2YXRlIHRoYXQKCXByZXZlbnRlZCB0aGUgYWN0aXZhdGlvbiBjb2RlIGZyb20gZXhlY3V0aW5nLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQnVnZml4ZXMgJiBmdXJ0aGVyIHVwZGF0ZXMgZm9yIHRoZSBtb250aCBjYWxlbmRhciBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgZGF0ZS90aW1lIGNvbW1vbiBjb250cm9sLgoKCSogZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBTRFJWX1dyaXRlQXJjIHNob3VsZG4ndCB3cml0ZSBhIG5ld3BhdGguCgoJKiBjb250cm9scy9idXR0b24uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBoYW5kbGluZyBvZiBXTV9MQlVUVE9ORENMSUNLIG1lc3NhZ2UgZm9yIGJ1dHRvbnMgd2l0aCBjZXJ0YWluCglzdHlsZXMuCgoJKiB3aW5kb3dzL2RjZS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXggZm9yIHVwZGF0aW5nIHRoZSBjbGlwcGluZyByZWdpb24gaW4gbmVzdGVkIEdldERDRXggY2FsbHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCVRyaWVkIHRvIGZpeCB0aGUgY29kZSBmb3IgU2V0V2luZG93UG9zIHRvIGVyYXNlIHRoZSBiYWNrZ3JvdW5kCglwcm9wZXJseS4KCkZyaSBKdWwgMzAgMTg6MTA6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBpbmNsdWRlL3dpbnNwb29sLmg6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCS0gYWRkZWQgQ29sbGF0ZS9Ob0NvbGxhdGUgSWNvbnMgdG8gUHJpbnQzMiBkaWFsb2cgKHVuZm9ydHVuYXRlbHkgdGhleQoJICBkb24ndCBkaXNwbGF5IHlldCkuCgktIGFkZGVkIHN0YXR1cyBzdHJpbmdzLgoJLSBhZGRlZCBzdHJpbmcgdGFibGUgZm9yIGludGVybmF0aW9uYWxpc2F0aW9uIG9mIHNldmVyYWwgaW50ZXJuYWwKCSAgbWVzc2FnZSBib3hlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW51c2VyLmg6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJUmVtb3ZlZCBkdXBsaWNhdGVkIGRlZmluZXMgaW4gd2ludXNlci5oIGFuZCBjb21tY3RybC5oLiBBbHNvIGNvcnJlY3RlZAoJYSB0eXBvIGZvciBTV19NQVggdmFsdWUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGZpbGUgZGlhbG9nLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHJpcCAuZHJ2IGV4dGVuc2lvbnMgdG8gTU9EVUxFX0dldExvYWRPcmRlci4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEluc3RhbGwgdGFzay1lbnRyeSBicmVha3BvaW50ICphZnRlciogRVhFIG1vZHVsZSBpcyBpbml0aWFsaXplZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNhbGwgdG8gdGhlIG5ld3BhdGggb3BlcmF0b3IgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBhcmMKCW9wZXJhdG9yLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVuIHRoZSBzdHlsZSBpcyBCU19CSVRNQVAgb3IgQlNfSUNPTjogdGhlIGJpdG1hcCBvcgoJaWNvbiBuZWVkZWQgdG8gYmUgY2VudGVyZWQgd2hlbiB0aGUgYnV0dG9uIGlzIHNtYWxsZXIgdGhhbiB0aGUgYml0bWFwLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhayB0aGF0IG9jY3VycyB3aGVuIHdlIG1heGltaXplL21pbmltaXplIGFuIE1ESQoJY2hpbGQuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBtb3JlIHN1cHBvcnQgZm9yIGJ1ZGR5IHdpbmRvd3MgaW4gdGhlIHVwZG93biBjb250cm9sLgoKCSogY29udHJvbHMvZWRpdC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBwcm9wZXIgd2luOTUgc3VwcG9ydCBmb3IgdGhlIFdTX0JPUkRFUiBzdHlsZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgV1NfQk9SREVSIHN0eWxlIHRvIGEgV1NfRVhfQ0xJRU5URURHRSBzdHlsZSBmb3IgdGhlCglsaXN0Ym94IGNvbnRyb2wuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgYm9yZGVyIGZvciB0aGUgbGlzdGJveCBjcmVhdGVkIGJ5IHRoZSBzaW1wbGUgY29tYm9ib3guCgoJKiBvbGUvY29tcG9iai5jLCBpZjE2MzIvY29tcG9iai5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgQ29SZXZva2VDbGFzc09iamVjdCBzdHViIG5lZWRlZCBieSBBY3JvYmF0IDMgMTYgYml0LgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHZXRNb2R1bGVIYW5kbGUxNjogdHJlYXQgV2luMzIgbW9kdWxlcyBjb3JyZWN0bHkuCgpXZWQgSnVsIDI4IDE2OjM4OjQ1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHVzZSBvZiBTdHJSZXRUb1N0ck4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3RyUmV0VG9TdHJOW0F8V3xBV10gbmV3IGluZGVwZW5kZW50IHVuaWNvZGUvYXNjaWkvZXhwb3J0IGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGxsczogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBleHBsYW5hdGlvbiBvZiB0aGUgY3VycmVudCBETEwgc3VwcG9ydC4KCgkqIG1lbW9yeS9nbG9iYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGZpeGVkIGZyZXNobHkgaW50cm9kdWNlZCBidWcgaW4gR2xvYmFsTG9jazE2LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgc3R1YnMgZm9yIEluaXRNVUlMYW5ndWFnZSBhbmQgQ09NQ1RMMzIuNDEwLgoJRml4ZWQgc29tZSBjb21waWxlciB3YXJuaW5ncy4KClR1ZSBKdWwgMjcgMTc6MTA6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvdXNlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBGaW5hbFVzZXJJbml0MTYvRmluYWxHZGlJbml0MTYgc3R1YnMuCglDYWxsIG91dCB0byBGaW5hbFVzZXJJbml0IGluIE1BSU5fRW11bGF0b3JSdW4uCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBJc0JhZEZsYXRSZWFkV3JpdGVQdHIxNigpLgoKCSogY29udHJvbHMvZWRpdC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGluY29ycmVjdCBlZGl0IGNvbnRyb2wgYmVoYXZpb3VyIGluIG1vdXNlIG1lc3NhZ2UgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTZW5kIG5vcm1hbCBtb3VzZSBtZXNzYWdlcyB0byBXTV9TRVRDVVJTT1Igd2hlbiBub24tY2xpZW50IG1vdXNlCgltZXNzYWdlcyBvY2N1ci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgaWYgdGhlIHdpbmRvdyBoYXMgdGhlIFdTX0NMSVBTSUJMSU5HUyBzdHlsZSBiZWZvcmUgdXNpbmcgdGhlCglEQ1hfQ0xJUFNJQkxJTkdTIGZsYWcuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kbGdzLmgsIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXaW45NSBmaWxlIG9wZW4vc2F2ZSBkaWFsb2dzLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gdG9vbHMvIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVyIHN1YmRpcmVjdG9yaWVzLCBldmVuIHdoZW4gZG9pbmcKCXBhcmFsbGVsIG1ha2VzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUmV0dXJuIHNlbGVjdG9yIGFsc28gaW4gQ1ggZnJvbSBHbG9iYWxMb2NrMTYoKS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vcmUgZ2NjIGJ1ZyB3b3JrYXJvdW5kcy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgbW9yZSBwYXBlciBzaXplcyBhbmQgYmluIG5hbWVzIHRvIFBQRCBwYXJzZXIuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbGx5IHJldHVybiB0aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiBNb3VzZV9HZXREZXZpY2VEYXRhIChmaXhlcwoJV2luZyBDb21tYW5kZXIgUHJvcGhlY3kpLiBBZGRlZCB0aW1lc3RhbXAgYW5kIHNlcXVlbmNlIGdlbmVyYXRpb24sCgljcml0aWNhbCBzZWN0aW9uIGZvciBtb3VzZWRhdGEuIERpc2FibGVkIG1vdXNlIHdhcnBpbmcgaW4KCUdldERldmljZURhdGEgZm9yIG5vdyAoZ2VuZXJhdGVzIGV4Y2VzcyBtb3VzZSBldmVudHMpLgoKU3VuIEp1bCAyNSAxMzoxNTo0OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIC5zcGVjIGZpbGVzIHRvIGNvcnJlc3BvbmRpbmcgZGxscy8gZGlyZWN0b3J5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldmVyYWwgZm9jdXMgYW5kIHNlbGVjdGlvbiBwcm9ibGVtcyBpbiBsaXN0Ym94ZXMuCgoJKiB3aW5kb3dzL2RjZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZXRyaWV2ZSB0aGUgY2xpcHBpbmcgcmVnaW9uIGJlZm9yZSBzZXR0aW5nIHRoZSBkcmF3YWJsZSBhbmQgcmVzZXQgdGhlCgljbGlwcGluZyByZWdpb24gYWZ0ZXIuCgoJKiByZWxheTMyL0F0dGljL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBmaXhlcy9yZWltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVtb3ZlZCBleHBlcmltZW50YWwvdW51c2VkIGNvZGUuCglVc2UgU2hlbGxGb2xkZXIgdG8gZ2V0IFZpZXdPYmplY3RzLgoJU3RhcnRlZCBjbGVhbnVwIG9mIHRoZSBjb250ZXh0bWVudSBjb2RlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb21wbGV0ZSByZWRlc2lnbiwgc3BsaXQgaW50byAzIGltcGxlbWVudGF0aW9ucyAoRGVza3RvcCwgTXlDb21wdXRlcgoJYW5kIGZpbGVzeXN0ZW0gZm9sZGVycykuIEFsbCBwYXJzaW5nIGFuZCBiaW5kaW5nIGlzIGRvbmUgcmVjdXJzaXZlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSENyZWF0ZVNoZWxsRm9sZGVyVmlld0V4LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlbW92ZWQgc3BlY2lhbCBDb0NyZWF0ZUNsYXNzT2JqZWN0IGFuZCB1c2Ugb2xlIGZ1bmN0aW9ucyBpbnN0ZWFkLgoJU0hDcmVhdGVEZWZDbGFzc09iamVjdCBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgYWNjZXNzIHRvIGxuaydzIHRvIGEgSVN0cmVhbSBpbnRlcmZhY2UuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGljb24gYmFja2dyb3VuZCAod2FzIGJsYWNrKS4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgZ2V0dGluZyBpY29ucyBmcm9tIGZpbGV0eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGVudW1lcmF0aW9uIG9mIHNoZWxsIGV4dGVuc2lvbnMsIHNlcGVyYXRlZCBlbnVtIHN0dWZmIGZvcgoJdGhlIDMgc2VwZXJhdGUgc2hlbGxmb2xkZXIgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmV3cm90ZSBHZXREYXRhIHNvIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTZXBhcmF0ZWQgc3R1ZmYgZm9yIHNodiBiYWNrZ3JvdW5kIGNvbnRleHRtZW51IHRvIHNlcGFyYXRlIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbnMgdG8gYWNjZXNzIGF0dHJpYnV0ZXMgaW4gSENSLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLiBTZXBlcmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2hlbGx2aWV3IGJhY2tncm91bmQKCWNvbnRleHRtZW51LgoKCSogaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIENvbnRhaW5zIGZ1bmN0aW9ucyBub3QgaW4gdGhlIG9mZmljaWFsIGhlYWRlcnMgYnV0IHdpZGVseQoJdXNlZCBmcm9tIG90aGVyIGRsbHMuCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBYMTFPQkpTIGFuZCBMSUJPQkpTIHRvIHdpbmUgZGVwZW5kZW5jaWVzICh3ZSBjYW4ndCBhZGQgQUxUX0xJTkspLgoKCSogTWFrZWZpbGUuaW46IE1ha2Ugc3VyZSB3ZSBidWlsZCB0b29scyBmaXJzdC4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi93cHJvY3Muc3BlYywgbWVtb3J5L2dsb2JhbC5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsYXkgY29kZSBmb3IgV2luMTYgcmVnaXN0ZXIgZnVuY3Rpb25zIGNvbnZlcnRzIGFyZ3VtZW50cy4KCU5ldyAnaW50ZXJydXB0JyBrZXl3b3JkIGFkZGVkIChmb3IgV2luMTYgaW50ZXJydXB0IGhhbmRsZXJzKS4KCUFkYXB0ZWQgLnNwZWMgZmlsZXMgYW5kIGltcGxlbWVudGF0aW9ucyBvZiByZWdpc3RlciByb3V0aW5lcy4KCgkqIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG1pc2MvcHJpbnRkcnYuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaWYxNjMyL2dkaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJe1N0YXJ0fEVuZH17RG9jfFBhZ2V9IGdvIHRocm91Z2ggRENmdW5jcy4KCUltcGxlbWVudCB0aGVzZSBpbiB0aGUgUG9zdFNjcmlwdCBkcml2ZXIuCglDaGFuZ2UgUFNEUlZfRXNjYXBlIHRvIHVzZSB0aGVtLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXb3JrIGFyb3VuZCAnbG9jYWwgZXh0ZXJuIGRlY2xhcmF0aW9uIHdpdGggYXR0cmlidXRlJyBnY2MgYnVnLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGF0aW9uIG9mIFNldEV2ZW50Tm90aWZpY2F0aW9uIGZvciB0aGUgbW91c2UgZHJpdmVyLgoKCSogb2xlL2NvbXBvYmouYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMZXQgQ29DcmVhdGVJbnN0YW5jZSB1c2UgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIUEFUSC4KCgkqIGluY2x1ZGUvb2xlMi5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGluY29tcGxldGUgcHJvdG8uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGtleXMgbmVzc2VzYXJ5IGZvciBydW5uaW5nIHRoZSBuZXcgc2hlbGwzMi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglVc2UgR0RJIEFQSXMgdG8gYWNjZXNzIGJpdG1hcCBpbmZvLgoKCSogZ3JhcGhpY3MvcHNkcnYvY2xpcHBpbmcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJld3JvdGUgUFNEUlZfU2V0RGV2aWNlQ2xpcHBpbmcgdG8gdXNlIEdldFJlZ2lvbkRhdGEgQVBJLgoKU2F0IEp1bCAyNCAxMjoyMDoyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzY2VtdS9tYWluLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzYy9BdHRpYy9jYWxsYmFjay5jLCBtaXNjL01ha2VmaWxlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVbmlmeSBzdGFydHVwIHNlcXVlbmNlIGZvciBXaW5lIGFuZCBXaW5lTGliLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgbWVtb3J5L2dsb2JhbC5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXggYnVnIHdpdGggcGFzdGluZyBXaW5lIGNsaXBib2FyZCBjb250ZW50IHRvIGV4dGVybmFsIGFwcGxpY2F0aW9ucywKCWJ5IHN0b3JpbmcgY2xpcGJvYXJkIGRhdGEgb24gdGhlIHNoYXJlZCBzeXN0ZW0gaGVhcC4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEFjaGltIEthaXNlciA8QWNoaW1fS2Fpc2VyQHQtb25saW5lLmRlPgoJRHJhdyBhbiBhZGRpdGlvbmFsIHdoaXRlIGJpdCBmb3IgZWFjaCBpbnZlcnQgYml0IG9mIGEgY3Vyc29yLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglXaGlsZSBoYW5kbGluZyB0aGUgWCBGb2N1c0luIG1lc3NhZ2UgaW4gbWFuYWdlZCBtb2RlLCBpZiB0aGUgd2luZG93CgloYXMgYmVlbiBkaXNhYmxlZCByZXZlcnQgdGhlIFggZm9jdXMgYmFjayB0byB0aGUgbGFzdCBmb2N1cyB3aW5kb3cuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBUUkVFVklFV19JbnNlcnRJdGVtVy4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBFeHRFc2NhcGUuCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnlpbmcgdG8gZml4IHBhcmFsbGVsIG1ha2UgYnkgZG9pbmcgZGlyZWN0IHN1YmRpci9zdWJkaXIubyBydWxlcy4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW5jb25zaXN0ZW5jeSBpbiBjb25kaXRpb25zIHRoYXQgZGV0ZXJtaW5lcyBpZiBhIHdpbmRvdyByZXF1aXJlcwoJYSBXTSBib3JkZXIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGb3IgbGFyZ2UgZm9udCBzaXplcyBjYWxsIFhMb2FkUXVlcnlGb250IHdpdGggYSAxMDAgcGl4ZWwgaGlnaCBmb250CglhbmQgcmVzY2FsZSB0aGUgbWV0cmljcy4KCgkqIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9kYy5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IGhhbmRsaW5nIG9mIDMyIGJpdCBBYm9ydFByb2MuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbm50Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcHJlc3NlZCBjb21waWxlciB3YXJuaW5nIGJ5IHVzaW5nIHRoZSAndW51c2VkJyBhdHRyaWJ1dGUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZXh0ZXJuYWwuYzoKCUtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglBZGRlZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGludm9rZSBleHRlcm5hbCBkZWJ1Z2dlci4KCgkqIG11bHRpbWVkaWEvLmN2c2lnbm9yZSwgbXVsdGltZWRpYS93aW5tbS5yYywgbXVsdGltZWRpYS93aW5tbV9Fbi5yYywgbXVsdGltZWRpYS93aW5tbV9Gci5yYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgV0lOTU0gcmVzb3VyY2VzLgoKCSogbXVsdGltZWRpYS9BdHRpYy9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBvYnNvbGV0ZWQgbWNpc3RyaW5nLmMuCglBZGRlZCBzdXBwb3J0IGZvciByZXNvdXJjZXMuCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm4gdmFsdWVzIGZvciBzb21lIG1lc3NhZ2VzIGluIERyaXZlclByb2MgKE1DSV9HRVRERVZDQVBTICYKCU1DSV9TVEFUVVMpIGZvciBtY2lTZW5kU3RyaW5nLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3ByZWFkIHRoZSB1c2Ugb2YgTU0gY3JpdCBzZWN0LgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHNvbWUgTUNJIGZ1bmN0aW9ucyB0byBtY2kuYy4KCU5vdyBsb2FkcyBlcnJvciBtZXNzYWdlcyBmcm9tIHN0cmluZyB0YWJsZS4KCVNwcmVhZCB0aGUgdXNlIG9mIE1NIGNyaXQgc2VjdC4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgcGFyc2luZyAmIHN0b3Jpbmcgb2YgY29tbWFuZCB0YWJsZXMuCglNZXJnZWQgc29tZSBNQ0kgZnVuY3Rpb25zIGZyb20gbW1zeXN0ZW0uYy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgc29tZSBubyBsb25nZXIgdXNlZCBwcm90b3R5cGVzLgoJQWRkZWQgY29tbWFuZCB0YWJsZXMgdG8gTUNJIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdneSBwcm90b3R5cGUuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJQXZvaWQgY3Jhc2hpbmcgb24gYSBiYWQgc3ltYm9sIGFkZHJlc3Mgb2YgMHgwMDAwLgoKCSogbWlzYy93MzJzeXMuYzogRml4ZWQgR2V0VzMyU3lzVmVyc2lvbjE2IHJldHVybiB0eXBlLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgcmVsYXkzMi91dHRodW5rLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIE1PRFVMRV9HZXRXbmRQcm9jRW50cnkxNigpLgoJVXNlIDMyLWJpdCB3aW5kb3cgcHJvY2VkdXJlcyBpbiBDT01NRExHIGluc3RlYWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjdXQmcGFzdGUgYnVnLgoKCSogaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGQgYSBmZXcgc3R1YnMsIHNvbWUgQysrIGNvbXBhdGliaWxpdHksIGFuZCBmaXggYSBmZXcgdHlwZXMuCgoJKiBpbmNsdWRlL2luaXRndWlkLmgsIG9sZS9ndWlkLmM6IEFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCURlY2xhcmUgb25seSBvbmUgaW5zdGFuY2Ugb2YgR1VJRF9OVUxMLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdmFyaW91cyBwcm9ibGVtIHdpdGggSW1hZ2VMaXN0X0RyYXcuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBTdGVwaGFuZSBMdXNzaWVyPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJUmUtZW5hYmxlIHRoZSBvd25lciB3aW5kb3cgaW4gdGhlIEVuZERpYWxvZygpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBub3RpZmljYXRpb25zLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWx3YXlzIHJldHJpZXZlIENhbGxvdXQgcm91dGluZXMgdXNpbmcgR2V0UHJvY0FkZHJlc3MoKS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU2VuZCBXTV9DT05URVhUTUVOVSBvbiBXTV9SQlVUVE9OVVAsIG5vdCBXTV9SQlVUVE9ORE9XTi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUxldCB0aHJvdWdoIG1vcmUgZmxhZ3MgdG8gRW51bVByaW50ZXJzLgoJRml4ZXMgZm9yIEdldFByaW50ZXIvR2V0UHJpbnRlckRyaXZlci4KCgkqIGdyYXBoaWNzL3BzZHJ2L2NvbG9yLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBzdHVwaWQgYHJ1YmJpc2ggYXQgZW5kIG9mICUlVGl0bGUnIGJ1Zy4KCURvbid0IGNvbXBsYWluIGFib3V0IHBhbGV0dGUgcmVsYXRpdmUgUkdCcy4KCUlmIG91dHB1dCBwYXJhbSB0byBDcmVhdGVEQyBpcyBOVUxMIGRlZmF1bHQgdG8gYExQVDE6JyAtIEhhY2suCgpGcmkgSnVsIDIzIDE5OjMzOjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIGRldGVjdGlvbiBvZiBPcGVuR0wuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBtaXNjL0F0dGljL2NhbGxiYWNrLmMsIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFJldmVydGVkIENhbGxUbzE2IHJvdXRpbmVzIHRvIFNURENBTEwgY29udmVudGlvbi4KCgkqIG9iamVjdHMvZm9udC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHJpbmcgdG8gR2V0VGV4dEV4dGVudFBvaW50IGlzIG5vdCBuZWNlc3NhcmlseSAwIHRlcm1pbmF0ZWQuCglGaXggZnVuY3Rpb24gbmFtZSBgMzIncyBpbiBjb21tZW50cyAtIEFQSSBuYW1pbmcgbWFkbmVzcyBtYWtlcyB0aGlzCgl3b3J0aHdoaWxlLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9SRUFETUUsIGluY2x1ZGUvd2luc3Bvb2wuaCwgcmVsYXkzMi9BdHRpYy93aW5zcG9vbC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRW51bUpvYnMgc3R1Yi4KCVVwZGF0ZSBncmFwaGljcy9wc2Rydi9SRUFETUUuCglBZGQgd2FybmluZ3MgdG8gRFJJVkVSX0dldERyaXZlck5hbWUuCgoJKiB3aW5kb3dzL21kaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYmFkIHB0ciBvY2N1cnJlbmNlIGluIHRoaXMgY2xhc3MgV25kUHJvYy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gQWRkZWQgYSBuZXcgb3B0aW9uICdub3hzaG0nCgktIEFkZGVkIGEgMTZicHAgLT4gMzIgYnBwIGNvbnZlcnNpb24gZnVuY3Rpb24KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2UgY29sb3IgZ3JheSB0ZXh0IHRvIDEyOCAxMjggMTI4IGZvciB3aW45eCBsb29rLgoKVHVlIEp1bCAyMCAxNToxMzoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglEbyBub3Qgb3V0cHV0IHRleHQgaW4gT3V0cHV0RGVidWdTdHJBVyB3aGVuIG5vdCBiZWluZyBkZWJ1Z2dlZAoKCSogd2luZG93cy9tZGkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglNRElEZXN0cm95Q2hpbGQ6IE1ESSB3aW5kb3cgbWVudSBpdGVtIHdhcyBkZWxldGVkIG9ubHkgaWYgdGhlIGN1cnJlbnQKCWRlc3Ryb3llZCBjaGlsZCB3YXMgYWN0aXZlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXNldCBkaXNhYmxlZCBzdHlsZSBmb3IgdGhlIGRpYWxvZyBib3hlcyBzZXQgb24gcHJvcGVydHkgcGFnZXMuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBHZW5lcmFsaXplZCB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiAyIGFuZCA0IGJ5dGUgaW50ZWdlcnMgc2xpZ2h0bHkgdGhyb3VnaAoJICBhIG5ldyBwYXJzZXIgc3RhdGUuIFRoZSBpcyBub3cgYSB3YXJuaW5nIHdoZW4gYSAyIGJ5dGUgaW50ZWdlciBpcyBsYXJnZXIKCSAgdGhhbiAxNiBiaXQgKGFuZCBpcyB0cnVuY2F0ZWQpLgoJLSBGaXhlZCBhIGNvdXBsZSBvZiBjb3NtZXRpYyB0aGluZ3MgaW4gdGhlIERMR0lOSVQgc3R1ZmYgc28gdGhhdCBkdW1waW5nIG9mCgkgIHRoaXMgdHlwZSB3aWxsIHdvcmsgYXMgZXhwZWN0ZWQuCgktIEFkZGVkIGdlbmVyYWxpemVkIGxhbmd1YWdlL3ZlcnNpb24vY2hhcmFjdGVyaXN0aWNzIHN1cHBvcnQgdG8gdGhlIERMR0lOSVQKCSAgcmVzb3VyY2UgdHlwZS4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CgktIEFkZGVkIHN1cHBvcnQgZm9yIERMR0lOSVQgcmVzb3VyY2UtdHlwZS4KCS0gQWRkZWQgc3RyaW5nIGNvbnRpbnVhdGlvbiBhbmQgZW1iZWRkZWQgcXVvdGluZy4KCS0gQWRkZWQgbnVtZXJpYyBJRHMgZm9yIGljb25zIGluIGNvbnRyb2xzLgoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBCdWdmaXg6IERpc3Rpbmd1aXNoIGJldHdlZW4gMiBhbmQgNCBieXRlIGludGVnZXJzIGluIFJDREFUQS4KClN1biBKdWwgMTggMTg6NDI6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvQXR0aWMvc3RyaW5nLmMsIG1pc2MvTWFrZWZpbGUuaW46CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglSZW1vdmUgc3RyaW5nLmMgYmVjYXVzZSBhbGwgb2YgaXRzIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIHRvIGNydGRsbC5jCgl3aGVyZSB0aGV5IGJlbG9uZ2VkLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcHJlcHJvYy5jLCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JpdGVyZXMuYywgZGVidWdnZXIvZGlzcGxheS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIEdOVSBDJ3MgLUktIG9wdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXb3JrIGFyb3VuZCBnY2Mgc2lnMTEgZmF1bHQuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHJvdW5kaW5nIGluIE11bERpdi4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9jbGlwcGluZy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CgktIGltcGxlbWVudGF0aW9uIG9mIFNldERldmljZUNsaXBwaW5nCgktIGNvb3JkaW5hdGUgc3lzdGVtIG9yaWdpbiBmaXgKCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV29yay1hcm91bmQgZm9yIGNvbXBpbGVyIGJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBzaW1wbGUgY29tY3RsMzIgdjUuMCBjaGFuZ2VzLgoJLSBUVk1fU09SVENISUxEUkVOQ0IgYWxzbyBhY2NlcHRzIFRWSV9ST09UIGFzIGEgdmFsaWQgaFBhcmVudC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgcG9pbnRlciB2YWxpZGF0aW9uIGFuZCBhZGRpdGlvbmFsIHNhbml0eSBjaGVjayB0byBJc1ZhbGlkU2lkKCkuCgoJKiBjb250cm9scy91aXRvb2xzLmM6IERlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglTbWFsbCBmaXggaW4gVUlUT09MUzk1X0RyYXdSZWN0RWRnZSgpLgoJQWxzbyBhIGZpeCB0byBkcmF3IHNjcm9sbGJhci1idXR0b25zIG1vcmUgbGlrZSBpbiB3aW45eC4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbiBXSU5fVXBkYXRlTkNSZ24sIGRvIG5vdCBzZW5kIGluIFdNX05DUEFJTlQgYSByZWdpb24gdGhhdCBpcyB1c2VkCglhZnRlcndhcmRzLCBidXQgYSBjb3B5IG9mIGl0LgoKCSogb2JqZWN0cy9yZWdpb24uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBiZXR0ZXIgdGhhdCBoYW5kbGVzIGFyZSBhY3R1YWwgaGFuZGxlcyB0byBhIHJlZ2lvbi4KCgkqIHdpbmRvd3MvZGNlLmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVN0b3AgRENFX0dldFZpc1JlY3QgZGVyZWZlcmVuY2luZyBhIG51bGwgd25kUHRyLgoKCSogY29uZmlndXJlLmluLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgTWFrZS5ydWxlcy5pbiwgUkVBRE1FLCBjb25maWd1cmU6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglVcGRhdGVkIFJFQURNRSBhbmQgbWFuIHBhZ2UuCglTcGxpdCBkb2N1bWVudGF0aW9uIGZvciB3aW5lLmNvbmYgaW50byBuZXcgd2luZS5jb25mKDUpIG1hbnBhZ2UuCgoJKiBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9jbGlwYm9hcmQuYywgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvb2xlY2xpLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPTEUgQ2xpcGJvYXJkIEFQSS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJVmFsaWRhdGUgdGhlIHBhcmVudCB3aXRoIHRoZSBjaGlsZCB3aW5kb3cgY2xpZW50IHJlY3RhbmdsZSB3aGVuIHRoZQoJcGFyZW50J3MgdXBkYXRlIHJlZ2lvbiBpcyBub3QgZW1wdHkuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglEZWxheSBXTV9OQ1BBSU5UIG1lc3NhZ2UgdW50aWwgdGhlICJwYWludGVyJ3MgYWxnb3JpdGhtIiBraWNrcyBpbi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGZha2UgV01fTEJVVFRPTlVQIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIFdpbjk4LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJTWFjcm8gZGVmaW5pdGlvbnMgdXNlZCBTTkRNU0cgaW5zdGVhZCBvZiBTZW5kTWVzc2FnZVtBV10uIEJhZC4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWRlYnVnXyhzbm9vcHxyZWxheSlfKGV4Y2x1ZGV8aW5jbHVkZSlsaXN0ID0+IGZpeGVkIGFsbG9jYXRpb24sIG1vZHVsZXMKCWFyZSBub3cgc3RvcmVkIHVwcGVyY2FzZS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgQlNfSUNPTiBzdHlsZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ3JlYXRlRGlhbG9nUGFyYW1BIHNob3VsZCBub3QgY2FsbCBDcmVhdGVEaWFsb2dQYXJhbVcsIGJlY2F1c2UKCXRoYXQnZCBjcmVhdGUgYSBkaWFsb2cgYm94IHdpdGggYSBVbmljb2RlIGRpYWxvZyBwcm9jZWR1cmUuLi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJV2luOXggbG9vayAmIGZlZWwgb24gc2Nyb2xsYmFycy4KCgkqIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUludHJvZHVjZWQgYSBbcHNkcnZdIHNlY3Rpb24gaW4gd2luZS5jb25mIHdpdGggYSBwcGRmaWxlIHZhbHVlCglzcGVjaWZ5aW5nIHRoZSBwYXRoIGFuZCBuYW1lIG9mIHRoZSBQUEQgZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvdXBkb3duLmg6CglTeWx2YWluIFN0LUdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdXBkb3duIGJ1ZGR5IHdpbmRwcm9jIHN1YmNsYXNzaW5nIGZvciB0aGUKCWhhbmRsaW5nIG9mIGtleWJvYXJkIHVwIGFuZCBkb3duIGFycm93LgoKCSogREVWRUxPUEVSUy1ISU5UUzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgcmVuYW1lZCBoZWFkZXIuCgoJKiBtaXNjL3dpbnNvY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGUgbmV0aW5ldC90Y3AuaCwgZm9yIFRDUF9OT0RFTEFZLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUdldEljb24gYnVnIGZpeC4KClRodSBKdWwgMTUgMTY6MDk6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBXSU5BUEkgZm9yIEVudHJ5QWRkclByb2MuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglNaW5vciBidWcgZml4ZXMgaW4gRGRlTmFtZVNlcnZpY2UsIGFsc28gY2hhbmdlcyB0byBtb3ZlIHRvd2FyZHMKCXByb2Nlc3Mtc2FmZSBjb2RlLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IERlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglXaW45eCBsb29rICYgZmVlbCBvbiBidXR0b25zIGFuZCBhIGZpeCBmb3Igb3duZXJkcmF3biBidXR0b25zCgkoYmFja2dyb3VuZCBzZXQgdG8gQ09MT1JfQlRORkFDRSkuCgoJKiBpZjE2MzIva2VybmVsLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdsb2JhbFNtYXJ0UGFnZVVubG9jaygpIHN0dWIgYWRkZWQuCgoJKiBtaXNjZW11L0F0dGljL2VtdWxhdGUuYywgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHRvb2xzL2J1aWxkLmMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW44N2VtLy5jdnNpZ25vcmUsIGRsbHMvd2luODdlbS9NYWtlZmlsZS5pbiwgZGxscy93aW44N2VtL2VtdWxhdGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvTWFrZWZpbGUuaW4sIGlmMTYzMi9NYWtlZmlsZS5pbiwgbWVtb3J5L2luc3RyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBwb3NpdGlvbi1pbmRlcGVuZGVudCBjb2RlIGluIGFzc2VtYmx5IGdsdWUgd2hlbiBidWlsZGluZyAuc28uCglJbmNsdWRlIGlmMTYzMi8gYW5kIGdyYXBoaWNzL3dpbjE2ZHJ2LyBpbnRvIFdpbmVMaWIuCglNb3ZlIG1pc2NlbXUvZW11bGF0ZS5jIGludG8gZGxscy93aW44N2VtLy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCk7IHRoaXMgbGlzdAoJaXMgbm93IHN0b3JlZCBvbiBhIHBlciBwcm9jZXNzIGJhc2lzLgoKCSogbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZml4ZWQgc2l6ZSBhcnJheSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhIChub3cgdXNpbmcKCW1jaShTZXR8R2V0KURyaXZlckRhdGEgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSkuCglNYWtlIHVzZSBvZiBkZWZhdWx0IGRlYnVndG9vbHMuaCBjaGFubmVsLgoJQWRkZWQgQ0FMTEJBQ0sgYXR0cmlidXRlIHRvIERyaXZlclByb2MuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCkuCglGaXJzdCB2YWxpZCBJRCBmb3IgbWNpIGRldmljZXMgaXMgbm93IDEgKHNvbWUgcHJvZ3Mgd2VyZSB0ZXN0aW5nIHRoaXMKCXZhbHVlKS4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIG1jaSBjb21tYW5kIHRhYmxlIHJlc291cmNlcy4KCUhhbmRsZWQgY2xvc2luZyBvbiBNQ0lfQUxMLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBmaXhlZCBzaXplIGFycmF5IHRvIHN0b3JlIHNwZWNpZmljIGRhdGEgKG5vdyB1c2luZwoJbWNpKFNldHxHZXQpRHJpdmVyRGF0YSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhKS4KCURlZmVycmVkIG9wZW5pbmcgb2YgbG93LWxldmVsIGRldmljZSB1bnRpbCBwbGF5IGlzIHJlcXVlc3RlZC4KCgkqIG11bHRpbWVkaWEvQXR0aWMvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuIHZhbHVlIGZvciAnb3BlbicgY29tbWFuZC4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCkuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGZpeGVkIHNpemUgYXJyYXkgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSAobm93IHVzaW5nCgltY2koU2V0fEdldClEcml2ZXJEYXRhIHRvIHN0b3JlIHNwZWNpZmljIGRhdGEpLgoJRml4ZWQgbW1pbyBjaHVuayBsb29rdXAgb24gb2RkIHNpemUgJ2ZtdCAnIGNodW5rcy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVuaWZvcm1pemVkIHVzZSBvZiBmZCB0byBtaWRpIGRldmljZS4KCU5vdyBhbGxvY2F0aW5nIG1lbW9yeSBvbiBzeXN0ZW0gaGVhcC4KCUZpeGVkIGJ1ZyB3aGVuIHN0b3BwaW5nIGFsbCBub3Rlcy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpYyBmaXhlcy4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCkuCglTdGFydGVkIGltcGxlbWVudGluZyBtY2kgY29tbWFuZCB0YWJsZSByZXNvdXJjZXMuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2FsbGluZyBtbSB0aW1lcnMgY2FsbGJhY2tzIHdpdGggbW0gdGltZXIgY3JpdCBzZWN0IGxvY2tlZC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFUlJPUl9NT1JFX0RBVEEgcmVxdWlyZXMgdG8gd3JpdGUgdGhlIG5lZWRlZCBudW1iZXIgb2YgYnl0ZXMgaW50byB0aGUKCWxwY2NoWCB2YWx1ZSAodmVyaWZpZWQgYWdhaW5zdCBOVDMuNTEgYWR2YXBpMzIuZGxsKS4KCgkqIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvZGV2aWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNvbWUgQ09OVEVYVDg2IHZzLiBDT05URVhUIG1pc21hdGNoZXMuCgoJKiBpbmNsdWRlL25lZXhlLmgsIGxvYWRlci9uZS9zZWdtZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIDMyLWJpdCBORSBjb2RlIHNlZ21lbnRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4IGEgaGFuZyB3aGVuIHdlIHByb2Nlc3MgV01fU1RZTEVDSEFOR0VELgoJU21hbGwgb3B0aW1pemF0aW9uIGluIFRSRUVWSUVXX0RyYXdJdGVtLgoJRml4IGRlYnVnZ2luZyBjcmFzaCBpbiBUUkVFVklFV19FeHBhbmQuCgpNb24gSnVsIDEyIDEzOjQ2OjM4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvdG90eXBlIGZvciBJTEZpbmRDaGlsZCgpLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBtaXNjL25ldHdvcmsuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29tcGlsZXIgd2FybmluZ3MgZml4LgoKCSogbWlzYy9jb21tLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRHVtYiBmaXhlcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnVncyBpbnRyb2R1Y2VkIGJ5ICdyZWdpc3RlcicgYW5kICdyZXR1cm4nIGZ1bmN0aW9uIGNoYW5nZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIERpcmVjdERyYXdTdXJmYWNlOjpGbGlwLCBkbyBub3QgY2hhbmdlIGZsYWdzLCBleGNoYW5nZSB0aGUgbG93CglsZXZlbCBwaHlzaWNhbCBzdXJmYWNlcyAodmVyaWZpZWQgZm9yIFhMSUIgd2l0aCBXQyBQcm9waGVjeSkuCgpTdW4gSnVsIDExIDE3OjIwOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCBtaXNjL3N5c3RlbS5jLCBtaXNjL3Rvb2xoZWxwLmMsIG1pc2MvdzMyc3lzLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL2tleWJvYXJkLnNwZWMsIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi90b29saGVscC5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBpZjE2MzIvdzMyc3lzLnNwZWMsIGlmMTYzMi9kdW1teS5jOgoJVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyByZWdpc3RlcnMgc2F2ZWQgaW4gdGhlIFNUQUNLMTZGUkFNRSB0byB0dXJuCglzb21lICdyZWdpc3RlcicgZnVuY3Rpb25zIGludG8gbm9ybWFsIGZ1bmN0aW9ucy4KCVJlbW92ZWQgdGhlIGZldyByZW1haW5pbmcgJ3JldHVybicgZnVuY3Rpb25zIHRvIHNpbXBsaWZ5IHJlbGF5CgloYW5kbGluZy4KCgkqIGlwYy9BdHRpYy9oYXNoX3Rlc3QuYywgaXBjL0F0dGljL3J1bl90ZXN0cywgaXBjL0F0dGljL3NobV9ibG9jay5jLCBpcGMvQXR0aWMvc2htX2ZyYWdtZW50LmMsIGlwYy9BdHRpYy9zaG1fZnJhZ21lbnRfdGVzdC5jLCBpcGMvQXR0aWMvc2htX21haW5fYmxrLmMsIGlwYy9BdHRpYy9zaG1fc2VtYXBoLmMsIGlwYy9BdHRpYy9zaG1fc2VtYXBoX3Rlc3QuYywgaXBjL0F0dGljL3dpbmVfdGVzdF9zdHViLmMsIGxvYWRlci9zaWduYWwuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL2RkZW1sLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvQXR0aWMvZGRlX2F0b20uaCwgaW5jbHVkZS9BdHRpYy9kZGVfbWVtLmgsIGluY2x1ZGUvQXR0aWMvZGRlX3Byb2MuaCwgaW5jbHVkZS9BdHRpYy9zaG1fYmxvY2suaCwgaW5jbHVkZS9BdHRpYy9zaG1fZnJhZ21lbnQuaCwgaW5jbHVkZS9BdHRpYy9zaG1fbWFpbl9ibGsuaCwgaW5jbHVkZS9BdHRpYy9zaG1fc2VtYXBoLmgsIGluY2x1ZGUvZGRlLmgsIGlwYy9BdHRpYy8uY3ZzaWdub3JlLCBpcGMvQXR0aWMvTWFrZWZpbGUuaW4sIGlwYy9BdHRpYy9SRUFETUUsIGlwYy9BdHRpYy9URVNUX0ZSQUdNRU5ULnN0ZCwgaXBjL0F0dGljL2JpdF9hcnJheS5jLCBpcGMvQXR0aWMvYml0X2FycmF5X3Rlc3QuYywgaXBjL0F0dGljL2RkZS50ZXgsIGlwYy9BdHRpYy9kZGVfYXRvbS5jLCBpcGMvQXR0aWMvZGRlX2F0b21fdGVzdC5jLCBpcGMvQXR0aWMvZGRlX21lbS5jLCBpcGMvQXR0aWMvZGRlX21lbV90ZXN0LmMsIGlwYy9BdHRpYy9kZGVfcHJvYy5jLCBpcGMvQXR0aWMvZGRlX3Byb2NfdGVzdC5jLCBpcGMvQXR0aWMvZ2VuZXJpY19oYXNoLmMsIGlwYy9BdHRpYy9nZW5lcmljX2hhc2guaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgb2xkLCBoaXN0b3JpY2FsIGFuZCBubyBsb25nZXIgd29ya2luZyBJUEMgc3VwcG9ydC4KCgkqIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIG1pc2MvQXR0aWMvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHRvb2xzL2J1aWxkLmMsIE1ha2UucnVsZXMuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZHVsYXJpemVkIENhbGxGcm9tL1RvMTYgcm91dGluZXMuICBBZGFwdGVkIGRlcGVuZGVudCByb3V0aW5lcywKCTE2LWJpdCBzbm9vcC9yZWxheSBkZWJ1Z2dpbmcsIGFuZCBtYWtlIHJ1bGVzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV2ZXJ0IGxhc3QgY2hhbmdlIGluIHdpbmRvdyBhY3RpdmF0aW9uIG9uIG1vdXNlIGNsaWNrLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgYSBjYXNlIHdoZW4gR2xvYmFsU2l6ZSBkaWQgbm90IHJldHVybiB6ZXJvIGFmdGVyIGFuIGVycm9yLgoKU2F0IEp1bCAxMCAxMzoxNjo1NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3NvY2tldC5jOiBIb3dhcmQgQWJyYW1zIDxob3dhcmRAY3MubnBzLm5hdnkubWlsPgoJUmVuYW1lZCBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlICdpb3ZlYycgdG8gJ215aW92ZWMnLgoKCSogd2luZG93cy9kaW5wdXQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9qb3lzdGljay5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglIb3dhcmQgQWJyYW1zIDxob3dhcmRAY3MubnBzLm5hdnkubWlsPgoJQWRkZWQgY2hlY2tzIGZvciBzeXMvZXJybm8uaCwgc3lzL3NpZ25hbC5oIGFuZCBzeXMvbW1hbi5oLgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDcmVhdGUgZGlhbG9nIHdpbmRvdyB1c2luZyBDcmVhdGVXaW5kb3dFeDE2L1cgZGVwZW5kaW5nIG9uIHRlbXBsYXRlCgl0eXBlLCBub3QgZGlhbG9nIHByb2NlZHVyZSB0eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNYWRlIElTaGVsbEZvbGRlcjo6Zm5QYXJzZURpc3BsYXlOYW1lIHJldHVybiBhIHJlbGF0aXZlIHBpZGwuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXJzdCB0cnkgYXQgdGhlIG1vbnRoIGNhbGVuZGFyIGNvbW1vbiBjb250cm9sLiBNYWluIGZlYXR1cmVzCgliYXNpY2FsbHkgT0suCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIGluY2x1ZGUvd2luc3Bvb2wuaCwgZGxscy93aW5zcG9vbC9pbmZvLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBHZXRQcmludGVyQSBhbmQgR2V0UHJpbnRlckRyaXZlckEuCgoJKiBjb250cm9scy9idXR0b24uYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIEJOX0NMSUNLRUQgbm90aWZpY2F0aW9uIGluIFdNX1NFVEZPQ1VTLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgaW5jbHVkZS9kb2NvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiByZWxheTMyL0F0dGljL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFN0clRvT2xlU3RyTi4KCUZpeGVkIGNyYXNoIGluIFNoZWxsRXhlY3V0ZUV4LgoJSW1wbGVtZW50ZWQgU0hSZWdPcGVuS2V5QSwgU0hSZWdRdWVyeVZhbHVlRXhBLCBTdHJUb09sZVN0cltBfFddLgoJU3R1YnMgZm9yIERvRW52aXJvbm1lbnRTdWJzdFtBfFddLCBQYXRoUHJvY2Vzc0NvbW1hbmRbQXxXXS4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJU3RyZWFtIGludGVyZmFjZSBmb3IgZmlsZSBhY2Nlc3MuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBkdXJpbmcgc2Vjb25kIERMTF9QUk9DRVNTX0RFVEFDSCBpZiB0aGUgZGxsCglyZWZjb3VudCByZWFjaGVkIHplcm8gYWZ0ZXIgdGhlIHNlY29uZCBvbmUgKG1lbW9yeSBmcmVlZCB0d2ljZSkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTb21lIG1vcmUgcGlkbC10eXBlcy4KCUltcGxlbWVudGF0aW9uIG9mIElMSXNQYXJlbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbXBsZXRlbHkgcmV3cml0dGVuLiBJUGVyc2lzdFN0cmVhbSBpbnRlcmZhY2UgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRExMR2V0Q2xhc3NPYmplY3QvQ2xhc3NmYWN0b3J5OiBjcmVhdGUgb2JqZWN0cyBieSBDTFNJRCBub3QgSUlELgoKCSogbWlzYy9tYWluLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBleGl0KCkgcmVwbGFjZWQgYnkgRXhpdFByb2Nlc3MoKS4KCgkqIG1lbW9yeS9sb2NhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogY29ycmVjdGx5IGNvcGUgd2l0aCBlbmQgPiAweGZmZmUuCgoJKiBsaWJyYXJ5L3dpbmVzdHViLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgRXhpdFByb2Nlc3MoKSBhZnRlciBXaW5NYWluKCkgcmV0dXJucy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wcm92ZWQgYmVoYXZpb3VyIG9mIEdldE1vZHVsZUhhbmRsZTE2IHcuci50IGR1bW15IG1vZHVsZXMuCglEb24ndCB0cnkgdG8gY2FsbCBXRVAgb2YgZHVtbXkgbW9kdWxlcyBpbiBGcmVlTGlicmFyeTE2KCkuCgoJKiBpbmNsdWRlL3dpbnJlZy5oLCBtaXNjL3JlZ2lzdHJ5LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBgY29uc3QncyB0byBzb21lIHJlZ2lzdHJ5IEFQSSBmdW5jdGlvbnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBjb3VwbGUgb2YgRGlyZWN0WCBDTFNJRCBlbnRyaWVzLiBUaGlzIG1ha2VzIFVucmVhbCBjb21wbGV0ZWx5CglpbmRlcGVuZGVudCBvZiBhIHdpbmRvd3MgaW5zdGFsbGF0aW9uLgoKCSogb2xlL29sZTJubHMuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglHZXRUaW1lRm9ybWF0KCkgc2hvdWxkIHJldHVybiBMb2NhbFRpbWUgbm90IFN5c3RlbVRpbWUuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJRk9SIGFuZCBJRiBjb21tYW5kcyBhZGRlZC4KCU1PVkUgY29tbWFuZCBhZGRlZCwgYnV0IG5vIHdpbGRjYXJkIHN1cHBvcnQuCglSZWRpcmVjdGlvbiBhZGRlZC4KCUZpeGVkIFRJTUUgKHdhcyByZXBvcnRpbmcgaW4gR01UKS4KCU1vcmUgaGVscCB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTb21ldGltZXMgdGhlIHRleHQgb24gYSB0YWIgY29udHJvbCBnb3QgdHJ1bmNhdGVkLgoKCSogY29udHJvbHMvY29tYm8uYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgaGVpZ2h0IG9mIHRoZSBkcm9wcGVkIGxpc3Qgd2hlbiB0aGVyZSBhcmUgZmV3IGl0ZW1zIGluIHRoZQoJbGlzdC4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgYWxsIEVWRU5UX1N5bmNocm9uaXplKCBGQUxTRSApIGNhbGxzOyB1c2UgYSBwZXJpb2RpYyBjYWxsYmFjawoJY2FsbGluZyBYRmx1c2goKSBpbnN0ZWFkLgoKCSogaW5jbHVkZS9wc2Rydi5oLCBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBncmFwaGljcy9wc2Rydi9icnVzaC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBwYXR0ZXJuZWQgYnJ1c2hlcyAobGV2ZWwgMiBQb3N0U2NyaXB0IG9ubHkpLgoJU2ltcGxlIFBhdEJsdCBmb3IgUEFUQ09QWSwgV0hJVEVORVNTIGFuZCBCTEFDS05FU1MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglJbXBsZW1lbnRhdGlvbiBvZiBUVk1fU09SVENISUxEUkVOLiBNYXNzYWdlZCBUVk1fU09SVENISUxEUkVOQ0IgYSBiaXQKCXRvIHVzZSB0aGUgc2FtZSBjb2RlIHBhdGguCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBJbml0VGFzaygpIHRvIHdvcmsgaWYgREdST1VQIHdhcyBtYW51YWxseSByZXNpemVkLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL0F0dGljL2FkdmFwaTMyLnNwZWM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBzdHViIGZvciBTZXRUaHJlYWRUb2tlbigpLCByZXF1aXJlZCBieSBPZmZpY2UgMjAwMC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENPTU1ETEcgaG9vayBwcm9jZWR1cmVzIHdlcmUgbm90IENBTExCQUNLLgoKCSogb2xlL3N0Z19zdHJlYW0uYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJdCBpcyBwb3NzaWJsZSBmb3IgYSBzdHJlYW0gdG8gaGF2ZSBib3RoIHNtYWxsIGJsb2NrIGFuZCBiaWcgYmxvY2sKCWNoYWluIGFzIE5VTEwuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBzdHJpbmcgY29tcGFyZSBjYXNlIGluc2Vuc2l0aXZlIGluIEdldE1vZHVsZUhhbmRsZTE2KCkgYXMgYQoJcXVpY2sgZml4IGZvciBXaW5Xb3JkIDYuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgc3R1YiBmb3IgV05ldEdldFVuaXZlcnNhbE5hbWVbQXxXXS4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGR1ZSB0byBpbnZhbGlkIEdESV9PYmouCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggZHVlIHRvIGludmFsaWQgcG9pbnRlci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEp1bCAgNCAxNjowOToyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy8qLmMsIG9sZS8qLmMsIGZpbGVzLyouYywgbXVsdGltZWRpYS8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5yZWcuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIE1ha2VmaWxlLmluLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCBvbiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBXaW42NCBmb3IgdXNlIG9uIDY0IGJpdCBwbGF0Zm9ybXMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVdpbmRvd3Mgc2hvdWxkIGJlIGFjdGl2YXRlZCBpbiB0aGVzZSBjYXNlczoKCTEtIHdoZW4gd2UgY2xpY2sgb24gbm9uIGFjdGl2ZSB3aW5kb3cuCgkyLSB3aGVuIHdlIGNhbmNlbCBhIG1vdmluZyBvciByZXNpemluZyBvZiBhIG5vbiBhY3RpdmUgd2luZG93LgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgc2FtcGxlIHdpbmUuY29uZi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgY29kZSB0byB0aGUgWDExIGRyaXZlci4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcmVzb3VyY2UuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglGaXhlZCBEZXN0cm95QWNjZWxlcmF0b3JUYWJsZSBhbmQgaW1wbGVtZW50ZWQgQ3JlYXRlQWNjZWxlcmF0b3JUYWJsZVcuCgoJKiB3aW5kb3dzL3dpbi5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXSU5fRmluZFdpbmRvdzogdXNlIEdldEV4ZXB0cihwV25kLT5oSW5zdGFuY2UpIGZvciBDTEFTU19GaW5kQ2xhc3NCeUF0b20uCgoJKiBjb250cm9scy9zY3JvbGwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBjaGVjayBmb3Igd2hldGhlciB0byBjYWxsIFNldFdpbmRvd1BvcyB3aGVuIHNob3dpbmcgYSB3aW5kb3cKCXNjcm9sbCBiYXIuCgoJKiBvbGUvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBjb21wbGV0ZSBsY2lkIG9yIGp1c3QgdGhlIHByaW1hcnkgbGFuZ3VhZ2UgaWQgaW4gdGhlCglyZWdpc3RyeSBsb29rdXBzIChmaXhlcyBvbmUgRmlyc3RDbGFzc0NsaWVudCAzMiBwcm9ibGVtKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWJveDMwNC5zd2lwbmV0LnNlPgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggYXBwcyB0aGF0IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvbgoJV01fTU9VU0VBQ1RJVkFURSBtZXNzYWdlIChtYWluIHdpbmRvdyB3YXMgbm90IGFjdGl2YXRlZCkuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaGVuIGVudW1lcmF0aW5nIHJlc291cmNlLCBvbmx5IHVzZSB0aGUgbG93ZXIgMzEgYml0IG9mIHRoZSBuYW1lIGFzCgl0aGUgb2Zmc2V0IChmb3IgdGhlIGhpZ2hlc3QgYml0IGlzICcxJykuIFNob3VsZCBmaXggd2luZS1uZXQvMjU3LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCB0b29scy93cmMvd3JpdGVyZXMuYywgZGxscy9udGRsbC9ydGwuYywgbWlzYy93c3ByaW50Zi5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZXMgZm9yIGNvbXBpbGUgb24gbm9uLUludGVsIHBsYXRmb3Jtcy4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkL21vdmVkL2FkZGVkIG1pc3Npbmcvd3JvbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbiwgcHJvZ3JhbXMvcHJvZ21hbi9EYS5yYywgcmVzb3VyY2VzL3N5c3Jlc19EYS5yYzoKCUhlbnJpayBPbHNlbiA8aGVucmlrQGlhZXN0ZS5kaz4KCUNsZWFudXAgb2YgdGhlIERhbmlzaCBzdXBwb3J0LgoKCSogd2luZG93cy93aW5wb3MuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglGaXggYSBidWcgaW4gU2V0V2luZG93UG9zIHRvIHByZXZlbnQgcGFyZW50IGZyb20gZXJhc2luZyBpdHMgY2hpbGQKCXBhaW50aW5nIGFyZWEgd2hlbiBwYXJlbnQgd2luZG93IGFuZCBjaGlsZCB3aW5kb3cgZG9uJ3QgaGF2ZQoJV1NfQ0xJUENISUxEUkVOIGFuZCBXU19DTElQU0lCTElOR1MuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCU1ha2UgZGVmd25kcHJvYyBlcmFzZSB0aGUgY29ycmVjdCBsb2NhdGlvbi4KClNhdCBKdWwgIDMgMTY6MDE6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvY3J0ZGxsLnNwZWMsIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL3dpbi5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2NydGRsbC5jLCBtaXNjL3NoZWxsLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXNvbWUgc21hbGwgaW5jbHVkZSBmaXhlcywgc29tZSBjaGVja3MgZm9yIE5VTEwgcHRycywKCWxvYWRlci9lbGYuYzogZml4ZWQgdGhlICJsaWIiIGluc2VydGlvbgoJY3J0ZGxsOiBhZGRlZCBmc29wZW4oKQoJZGlucHV0OiByZXR1cm4gdGhhdCB3ZSBhcmUgYXR0YWNoZWQuCgoJKiBjb250cm9scy9idXR0b24uYzogUmV2ZXJ0ZWQgcHJldmlvdXMgY2hhbmdlLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNhbmNlbCBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2hlbiBFTV9TRVRNT0RJRlkgaXMgY2FsbGVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4IGEgY3Jhc2ggd2hlbiBkb2luZyBzb3J0ZWQgaW5zZXJ0cyBhdCB0b3AgbGV2ZWwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJld29ya2VkIG5vbmNsaWVudCBkcmF3aW5nIGNvZGUuIFdpbjMxIGxvb2sgbm93IHdvcmtzIG1vcmUgbGlrZSByZWFsCglXaW4zMSwgc28gYXBwcyBsaWtlIERlbHBoaSAxLjAgbm8gbG9uZ2VyIGdvIGludG8gaW5maW5pdGUgcmVjdXJzaW9uCglldGMuIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gd2luOTUgbG9vayB0b28sIGJ1dCBub3QgYXMgdGhvcm91Z2hseQoJKGUuZy4gV1NfRVhfV0lORE9XRURHRSBpcyBzdGlsbCBub3QgaGFuZGxlZCkuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTTV9DW1hZXUZSQU1FIGlzIEJvcmRlcldpZHRoICsgMS4KCgkqIG1lbW9yeS9sb2NhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTG9jYWxJbml0IHdpdGggc3RhcnQgPT0gMCBhbHdheXMgcGxhY2VzIGhlYXAgYXQgZW5kIG9mIHNlZ21lbnQuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogVEFTS19DYWxsVG9TdGFydCBkaWRuJ3QgcGFzcyBjb3JyZWN0IGhJbnN0YW5jZSB0byBhcHAuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglPbiBORSBwcm9jZXNzIGNyZWF0aW9uLCBtb3ZlIG1ham9yIHBhcnQgb2YgTkUgRVhFIG1vZHVsZSBsb2FkaW5nIGFuZAoJTkUgaW5zdGFuY2UgY3JlYXRpb24gaW50byB0aGUgY2hpbGQgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vZ3VpOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbmRvdyBzdHlsZSB1cGRhdGVzLgoKCSogbGlidGVzdC9ndWl0ZXN0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU29tZSBlbmhhbmNlbWVudHMsIGFuZCByZW1vdmFsIG9mIEMrKyBjb25zdHJ1Y3RzLgoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGNoYWlucyBvZiBzdXJmYWNlcy4gVGhpcyBhbGxvd3MgYW4gdW5saW1pdGVkIG51bWJlcgoJb2YgYmFja2J1ZmZlcnMsIGFuZCBvdGhlciBhdHRhY2hlZCBzdXJmYWNlcyAoemJ1ZmZlcnMsIGFscGhhIGJ1ZmZlcnMsCgl3aGF0ZXZlcikuCgoJKiBmaWxlcy9maWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFVubG9ja0ZpbGVFeCBzdHViLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb24sIHJlc291cmNlcy9zeXNyZXNfQ2EucmMsIHJlc291cmNlcy9zeXNyZXNfRXMucmM6CglKb3NlIE1hcmNvcyBMb3BleiBDYXJhdmFjYSA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgoJQWRkZWQgbWlzc2luZyA2MTc2MiBlbnRyeSBvbiBzeXN0ZW0gcmVzb3VyY2VzIGluIFNwYW5pc2ggYW5kCglDYXRhbG9uaWFuIGxhbmd1YWdlcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgR2V0U2Nyb2xsSW5mbyByZXR1cm4gc2Nyb2xsIHBvcyB3aGVuIHByb2dyYW0gcmVxdWVzdHMgdGh1bWIgcG9zCglvdXRzaWRlIGRyYWcgb3BlcmF0aW9uLgoKU3VuIEp1biAyNyAxNTo0MDo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZENvbnNvbGVBOiB1c2UgaXIgYXMgcG9pbnRlciB0byAocmVxKzEpLgoKCSogd2luZG93cy9wYWludGluZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSB0aGUgIHZhbGlkYXRlZCBjaGlsZCBhcmVhIGZyb20gdGhlIHVwZGF0ZSByZWdpb24gb2YgcGFyZW50IGZvcgoJd2luZG93cyB3aXRob3V0IFdTX0NMSVBDSElMRFJFTiBzdHlsZS4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEdycDggaW5zdHJ1Y3Rpb25zIGhhdmUgKmJ5dGUqIEJpdE9mZnNldCBvcGVyYW5kLgoKCSogbXNkb3MvdnhkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBtaXNzaW5nIFdJTkFQSXMgYWRkZWQuCgoJKiBvbGUvb2xlMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZU1ldGFGaWxlUGljdEZyb21JY29uQW5kTGFiZWwxNjogc2xpZ2h0bHkgYnJva2VuLCB1c2UgTFBPTEVTVFIxNi4KCgkqIGZpbGVzL2ZpbGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXR1cm4gRVJST1JfRElTS19GVUxMIGZvciBXcml0ZUZpbGUuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOiBFcmljIFdpbGxpYW1zIDxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCUZpeGVkIG1pc3NpbmcgcmV0dXJuIGFmdGVyIGFib3V0IGRpYWxvZy4KClNhdCBKdW4gMjYgMTk6MDk6MTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zLyouYywgbWlzYy8qLmMsIG1pc2NlbXUvKi5jLCBncmFwaGljcy8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy93aW4uYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9jYWxsYmFjay5jLCBtaXNjL2Vycm9yLmMsIG1pc2Mvd2luZGVidWcuYywgbWlzY2VtdS9lbXVsYXRlLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxMi5jLCBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQxNy5jLCBtc2Rvcy9pbnQxOS5jLCBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyOS5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnQzZC5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL3Z4ZC5jLCBtc2Rvcy94bXMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9ydGwuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL3Rhc2suYzoKCUNoYW5nZWQgQ09OVEVYVCBpbnRvIENPTlRFWFQ4NiBldmVyeXdoZXJlIHdlIHJlYWxseSB3YW50IGFuIGkzODYKCWNvbnRleHQuCglBZGRlZCAjaWZkZWYgX19pMzg2X18gYXJvdW5kIGFjY2Vzc2VzIHRvIDM4NiByZWdpc3RlcnMgaW4gdGhlIGdlbmVyaWMKCUNPTlRFWFQgc3RydWN0dXJlLgoKCSogaW5jbHVkZS93aW5udC5oOiBBZGRlZCBDT05URVhUODYgZGVmaW5pdGlvbi4KCUFkZGVkIFBvd2VyUEMgY29udGV4dCBhcyBhbiBleGFtcGxlIChub3QgdGVzdGVkKS4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglGaXhlcyBmb3Igbm9uLWkzODYgY29tcGlsaW5nLgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBTlNJIEMgZml4ZXMuCglSZW1vdmVkIHdhcm5pbmdzLgoJTWFkZSB0aGUgaW5jbHVkZSBmaWxlcyBzZWxmLXN1ZmZpY2llbnQuCglTb21lIFNvbGFyaXMgZml4ZXMuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgRFBBX0xvYWRTdHJlYW0gYW5kIGltcHJvdmVkIERQQV9NZXJnZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGNoZWNrIGZvciBpbnZhbGlkIHBhcmVudCBpdGVtLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFNIRG9EcmFnRHJvcCgpIHN0dWIuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgR2V0UmFuZG9tUmVnaW9uKCkuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBXTmV0UmVtb3ZlQ2FjaGVkUGFzc3dvcmQoKSBzdHViLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVN0b3JlIGJ1ZGR5IHdpbmRvdy4KCgkqIGluY2x1ZGUvdG9vbHRpcHMuaCwgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVN0YXJ0ZWQgV01fTk9USUZZRk9STUFUIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglCZXR0ZXIgQ29tYm9Cb3hFeCBwbGFjZW1lbnQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJRW5zdXJlIHRoYXQgdGhlIGNvbW1hbmQtbGluZSBwYXNzZWQgdG8gdGhlIHZhcmlvdXMgKkNyZWF0ZVByb2Nlc3MKCWZ1bmN0aW9ucyBjb250YWlucyB0aGUgcGF0aCB0byB0aGUgcHJvZ3JhbSBiZWluZyBpbnZva2VkLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IExhcnMgSGVldGUgPGhlbEBhZG1pbi5kZT4KCVByZXZlbnQgYmFkIHdpbmRvdyBYIGVycm9yLgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy9zeXNtZXRyaWNzLmM6CglBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVRoZSBzeXN0ZW0gbWVudSBpY29uIG9uIGEgTURJIGNoaWxkIHdpbmRvdyB3YXMgY29ycnVwdGVkIHdoZW4gdGhlCgljaGlsZCBmcmFtZSB3aW5kb3cgaXMgbWF4aW1pemVkIHdpdGhpbiB0aGUgbWFpbiBmcmFtZSB3aGVuIHRoZSB3aW5lCglsb29rIGlzIFdpbmRvd3MgOTUuCgoJKiBjb250cm9scy9zY3JvbGwuYywgd2luZG93cy9kZWZ3bmQuYzoKCVNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+CglJbiBjYXNlIGlmIHNjcm9sbGJhciBoYXMgdGhlIHNhbWUgYmFja2dyb3VuZCBjb2xvciBhcyB0aGUgd2luZG93CglpdCBiZWxvbmdzIHRvLCBpdCBuZWVkcyB0byBiZSBmaWxsZWQgd2l0aCAweDU1YWEgYml0bWFwIGJydXNoLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRml4ZWQgdGhlIHN0cmluZ2NvbXBhcmUgaW4gX2ZpbmRfb3JfYWRkXyooKSAod2FzIG1pc3NpbmcgdG9sb3dlcigpcykuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4ICh3ZWxsIGtsdWRnZSBhcm91bmQpIEZyZWVCU0QncyBgSW52YWxpZCBhZGRyZXNzJyBlcnJvcnMuCgoJKiBjb250cm9scy9lZGl0LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEcmF3IGEgM0QgYm9yZGVyIGFyb3VuZCBlZGl0IGNvbnRyb2xzIHdoZW4gbm90IGluIFdJTjMxX0xPT0suCgoJKiBjb250cm9scy9idXR0b24uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU9ubHkgZHJhdyBhIGJsYWNrIGJvcmRlciBhcm91bmQgbm9ybWFsIGJ1dHRvbnMgd2hlbiBpbiBXSU4zMV9MT09LLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYWxpZ25tZW50IGFuZCBwb3NpdGlvbiB3aGVuIGxvb2tpbmcgZm9yIG1taW8gY2h1bmtzLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBnbG9iYWwgdmFycyAoc2hhcmVkIGRhdGEpIGZvciBtbSB0aW1lcnMsIGJ1dCBhCglzcGVjaWZpYyBzdHJ1Y3R1cmUgZm9yIGVhY2ggYXR0YWNoZWQgcHJvY2Vzcy4KCUZpeGVkIGFsaWdubWVudCBhbmQgcG9zaXRpb24gd2hlbiBsb29raW5nIGZvciBtbWlvIGNodW5rcy4KCUZpeGVkIFdBVkUgbWFwcGVyIGhhbmRsaW5nIGluIHdhdmVHZXRDYXBzLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvdGltZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgZ2xvYmFsIHZhcnMgKHNoYXJlZCBkYXRhKSBmb3IgbW0gdGltZXJzLCBidXQgYQoJc3BlY2lmaWMgc3RydWN0dXJlIGZvciBlYWNoIGF0dGFjaGVkIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXcm90ZSBhIHNtYWxsIGRvY3VtZW50IG9uIGhvdyB0byBwYWNrYWdlIFdJTkUgZm9yIGRpc3RyaWJ1dG9ycy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2V0Q3Vyc29yUG9zKCkgZnVuY3Rpb24gd2FzIGNhbGxlZCB3aXRoIGEgd2luZG93IGNvb3JkaW5hdGVzCglwYXJhbWV0ZXIuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG51bGwgcHRyIGRlcmVmIGludHJvZHVjZWQgaW4gbGFzdCBwYXRjaC4KCgkqIGlmMTYzMi9vbGUyLnNwZWMsIG9sZS9vbGUyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglLaW5kIG9mIGltcGxlbWVudGVkIE9sZU1ldGFGaWxlUGljdEZyb21JY29uQW5kTGFiZWwuCgoJKiBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgdmFyaW91cyBwcm9ibGVtcyByZWxhdGVkIHRvIGJpdG1hcHMgYW5kIGZsYXQgdG9vbGJhcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBwcm9ibGVtcyB3aXRoIGRpc2FwcGVhcmluZyB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUNvbXBsZXRlIHJld3JpdGUgb2YgbWVzc2FnaW5nIGNvZGUgdG8gaW1wbGVtZW50L2ZpeCBhbGwgaW5wdXQgYmVoYXZpb3JzLgoJRml4ZWQgYSBmZXcgZml4bWVzLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJQWRkZWQgbW9yZSBiYXRjaCBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgdGhlIENBTEwgR09UTyBhbmQgU0hJRlQKCWNvbW1hbmRzIHBsdXMgYmF0Y2ggY29tbWFuZCBhcmd1bWVudHMuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gcmVmbGVjdCBjdXJyZW50IHN0YXR1cy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU5FX0xvYWRGaWxlTW9kdWxlOiBGcmVlIG1vZHVsZSB3aGVuIE5FX0xvYWRETExzIGZhaWxzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSB1bmRlcmxpbmUgYW5kIHN0cmlrZW91dCB0ZXh0IGF0dHJpYnV0ZXMgZm9yIHRoZSBXaW5lCglQb3N0U2NyaXB0IGRyaXZlci4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglFbmFibGVXaW5kb3cgZG9lc24ndCByZWxlYXNlIHRoZSBjYXB0dXJlIG9mIGEgY2hpbGQgd2luZG93LgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU9ubHkgdGVzdCAkKExJQl9UQVJHRVQpID0gbGlid2luZS5zby4xLjAgaWYgJChMSUJfVEFSR0VUKSBpcwoJbm9uLWJsYW5rLgoKCSogY29udHJvbHMvbWVudS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZSB0aGUgV01fTEJVVFRPTlVQIG1lc3NhZ2UgZnJvbSB0aGUgcXVldWUgYWZ0ZXIgc2VsZWN0aW5nIGEgbW91c2UKCW1lbnUgaXRlbS4KCgkqIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jb21tLmMsIG1pc2MvdG9vbGhlbHAuYywgb2xlL3BhcnNlZHQuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYzoKCUZ1cnRoZXIgc2VydmVyIG9wdGltaXphdGlvbnM6CgktIG1lcmdlZCByZXF1ZXN0IGFuZCByZXBseSBzdHJ1Y3R1cmVzCgktIGJ1aWxkIHJlcXVlc3RzIGRpcmVjdGx5IGludG8gdGhlIGJ1ZmZlciB0byBhdm9pZCBhIGNvcHkKClR1ZSBKdW4gMjIgMTk6MTQ6NDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2xlL25scy9ydXMubmxzLCByZXNvdXJjZXMvc3lzcmVzX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYzoKCUFsZXhhbmRlciBLYW5hdmluIDxha0BjYXZlLmhvcC5zdHUubmV2YS5ydT4KCVN0YW5kYXJkIGRpYWxvZyBib3hlcyByZXNvdXJjZXMgYW5kIE9MRSBzdHJpbmdzIGFyZSBub3cgaW4gY3AxMjUxIGVuY29kaW5nCglGb250IG1hcHBlciBkb2VzIG5vdCBhbnltb3JlIHVzZSBmb250cyBpbiAta29pOC1yIGVuY29kaW5nCglGb250IG1hcHBlciBub3cgcmVjb2duaXNlcyBmb250cyBpbiAtd2luZG93cy0qIGVuY29kaW5ncyAodGhlc2UgYXJlCglwcm92aWRlZCBieSB4ZnN0dCBUcnVlVHlwZSBzZXJ2ZXIpCglGb250IG1hcHBlciBub3cgc2VlcyBtYXggMTYzODQgZm9udHMgKHdhcyAyMDQ4KQoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2hhcmUgdGhlIEhNT0RVTEUgb2YgYnVpbHQtaW4gbW9kdWxlcyBvdmVyIGFsbCBwcm9jZXNzZXMuCglVc2UgdGhlIGNhY2hlZCBITU9EVUxFIHRvIHNwZWVkIHVwIHJlbGF5IGRlYnVnZ2luZy4KCURpc3BsYXkgdGhlIG11bHRpLWluc3RhbnRpYXRpb24gd2FybmluZyBvbmx5IGZvciAnZGFuZ2Vyb3VzJyBETExzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZCBVU0VSMzIuRExMIGJlZm9yZSBjYWxsaW5nIFVzZXJTaWduYWxQcm9jLgoKCSogd2luZG93cy90aW1lci5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBzZXBhcmF0ZSBzZXJ2aWNlIGZvciBlYWNoIHdpbmRvd3MgdGltZXIuCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBvbGUvY29tcG9iai5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgQ09NUE9CSi5EbGxFbnRyeVBvaW50IChBY3JvYmF0MyAxNmJpdCBuZWVkcyBpdCkuCgoJKiBvbGUvdHlwZWxpYi5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGhvdSBzaGFsdCBub3QgdXNlIEMrKyBjb21tZW50cy4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UuCglGaXhlZCBkcml2ZXIgY2xvc2luZy4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIGhhbmRsaW5nIG9mIGRvdWJsZSBxdW90ZXMgaW4gTUNJIHN0cmluZyBjb21tYW5kcy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5IGxlYWsgaW4gbWNpIHN0cnVjdHVyZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9yIGhhbmRsaW5nIGluIERHQV9JRGlyZWN0RHJhdzJJbXBsX0dldENhcHMoKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgR0RJIGhlYXAgdW5sb2NrLgoJTW92ZWQgdG8gbmV3IGRlYnVnIGludGVyZmFjZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgR2V0T3BlbkZpbGVOYW1lIHdoZW4gY2FsbGVkIHdpdGggYm90aCBPRk5fQUxMT1dNVUxUSVNFTEVDVCBhbmQKCU9GTl9FWFBMT1JFUiBiaXRzIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNb2RpZmllZCBJbWFnZUxpc3RfTG9hZEltYWdlQSB0byBjaGVjayB0aGUgY2FzZSB3aGVyZSBjeCBpcyBzZXQgdG8gemVyby4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBoaWxpcHBlIEZyb2lkZXZhdXggPHBmQHNwaW4uY2g+CglBZGRlZCBTd2lzcyBmcmVuY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogc2VydmVyL3NlbGVjdC5jOiBEdW1wIHNlcnZlciBvYmplY3RzIG9uIFNJR0hVUC4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL3JlcXVlc3QuaCwgaW5jbHVkZS90aHJlYWQuaCwgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jb21tLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIGZpbGVzL2ZpbGUuYzoKCU1hZGUgc2VydmVyIGNvbW11bmljYXRpb24gZmFzdGVyIGJ5IHVzaW5nIGEgc2hhcmVkIG1lbW9yeSBibG9jay4KCUEgZmV3IG90aGVyIG9wdGltaXphdGlvbnMgaW4gcmVxdWVzdCBwcm9jZXNzaW5nIGluIHRoZSBzZXJ2ZXIuCglNb3ZlZCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCByZXF1ZXN0IGRlZmluaXRpb25zIHRvIHNlcnZlci5oIGFuZAoJcmVtb3ZlZCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmguCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCU1lcmdlZCBUSERCIGFuZCBURUIgc3RydWN0dXJlcy4KCU1hZGUgU2V0TGFzdEVycm9yKCksIEdldEN1cnJlbnRUaHJlYWRJZCgpIGFuZCBQUk9DRVNTX0N1cnJlbnQoKSBpbmxpbmUuCgoJKiBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZToKCUFkZGVkIFdhLnMKClN1biBKdW4gMjAgMTU6MDk6MzIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9pbnN0ci5jLCBtaXNjZW11L21haW4uYywgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL3Byb2dtYW4vV2EucmMsIHByb2dyYW1zL3dpbmhlbHAvV2EucmM6CglGaXhlZCBXaW5lbGliIGNvbXBpbGF0aW9uLgoKRnJpIEp1biAxOCAxODoyOTowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvaW5zdHIuYywgbWlzY2VtdS9BdHRpYy9pbnN0ci5jLCBtaXNjZW11L01ha2VmaWxlLmluOgoJSW5jbHVkZSBpbnN0cnVjdGlvbiBlbXVsYXRpb24gaW4gV2luZWxpYi4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgd2luMzIvZXhjZXB0LmM6IEEgZmV3IG9wdGltaXphdGlvbnMuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IFVzZSBleGNlcHRpb25zIGluc3RlYWQgb2YgY3R4X2RlYnVnX2NhbGwuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy94MTFkcnYvbWFpbi5jOgoJQWRkZWQgRGVidWdCcmVhay4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIG1pc2NlbXUvbWFpbi5jOgoJRGVidWdnZXIgaXMgbm93IGNhbGxlZCBieSBleGNlcHRpb24gaGFuZGxpbmcuCglBZGRlZCAncGFzcycgY29tbWFuZCB0byBwYXNzIGV4Y2VwdGlvbnMgdG8gdGhlIGFwcC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9zaWduYWwuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU1vdmVkIHNpZ25hbCBoYW5kbGluZyB0byBleGNlcHRpb24uYywgZ2VuZXJhdGUgZXhjZXB0aW9ucyBvbiBzaWduYWxzLgoJQWRkZWQgaG9vayBmb3IgZGVidWdnZXIgaW4gZXhjZXB0aW9uIGhhbmRsaW5nICh0ZW1wb3JhcnkpLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9XYS5yYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9XYS5yYywgcmVzb3VyY2VzL3N5c3Jlc19XYS5yYywgb2xlL25scy93YWwubmxzLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAcGluZy5iZT4KCVdhbGxvb24gbGFuZ3VhZ2UgdXBkYXRlLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIERvIG5vdCBjYWxsIFhDb25maWd1cmVXaW5kb3cgaWYgU2V0V2luZG93UG9zIHdhcyBjYWxsZWQgZHVlIHRvIGEKCSAgcmVjZWl2ZWQgQ29uZmlndXJlTm90aWZ5IGV2ZW50ICh0byBhdm9pZCByZWN1cnNpb24pLgoJLSBVc2UgWFRyYW5zbGF0ZUNvb3JkaW5hdGVzIGluIEVWRU5UX0dldEdlb21ldHJ5IGluc3RlYWQgb2YgbWFudWFsbHkKCSAgd2Fsa2luZyB0aGUgdHJlZS4KCS0gU2V0IFhTaXplSGludC53aW5fZ3Jhdml0eSB0byBTdGF0aWNHcmF2aXR5IGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUJ1ZyBmaXguCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbjoKCUFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJSW5zdGFsbCB3aW5lLm1hbiBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5LgoJUmVtb3ZlIHdpbmUubWFuIG9uIGRpc3RjbGVhbiwgbm90IG9uIGNsZWFuLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSnVuIDEzIDA4OjQ5OjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBMSVNUVklFV19Tb3J0SXRlbXMoKSBhbmQgTElTVFZJRVdfQ2FsbEJhY2tDb21wYXJlKCkKCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlcyBhIHByb2JsZW0gd2hlbiB1c2luZyBTVEFUVVNCQVJfU2V0VGV4dCgpIHRvIHRvZ2dsZSBTQlRfT1dORVJEUkFXCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGRzIHNvbWUgdW5kb2N1bWVudGVkIGJlaGF2aW9yIHRvIFRSRUVWSUVXX0dldEl0ZW1BKCkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYW1iaWdvdXMgZWxzZS9icmFjZSBwcm9ibGVtLCBtb3ZlZCAibmFtZSIgY29tcHV0YXRpb24gaW4KCUNyZWF0ZVByb2Nlc3MgX2JlZm9yZV8gb3V0cHV0dGluZyBpdCBpbiB0aGUgRklYTUVfKClzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcmV1c2UgYSBwYXNzZWQgQ09OU1QgUkVDVCAqIHBvaW50ZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERJU1BMQVlfU2V0Q3Vyc29yIHNob3VsZCBub3QgdXNlIFVTRVItaW50ZXJuYWxzLCBhcyBpdCBpcyBhbHNvCgl1c2VkIHdpdGggbmF0aXZlIFVTRVIgLi4uCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBicm9rZW4gaGFjayB0byBzdXBwb3J0IHNoYXJlZCBETExzIChlLmcuIFVTRVIzMi5ETEwpIGFuZAoJcmVwbGFjZWQgaXQgYnkgYSBzb21ld2hhdCBsZXNzIGJyb2tlbiBoYWNrIDotLwoKCSogbXVsdGltZWRpYS9tY2kuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzbWFsbCBtZW1vcnkgY29ycnVwdGlvbi4KClNhdCBKdW4gMTIgMTg6MzY6NTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvKi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWQgdGhlIGluY2x1ZGUgZmlsZXMgaWRlbXBvdGVudCB1c2luZyBhIGNvbnNpc3RlbnQgbWFjcm8gbmFtaW5nCglzY2hlbWUuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQXZvaWQgcGFpbnRpbmcgZGVzdHJveWVkIHdpbmRvd3MuCgoJKiBkbGxzLyouYywgaWYxNjMyLyouYywgbG9hZGVyLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zdHJpbmcuYywgb2JqZWN0cy90ZXh0LmMsIHdpbjMyL3RocmVhZC5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvc3luYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBtaXNzaW5nL3dyb25nIGluY2x1ZGVzLgoKCSogd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RiZ21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjL3NweS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGRpcmVjdCByZWZlcmVuY2VzIHRvIENMQVNTIGludGVybmFscy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBtaXNjL3ZlcnNpb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlYXJyYW5nZSB3aW52ZXIgZGV0ZWN0aW9uIGNvZGUgYW5kIGNhY2hlIHRoZSB3aW52ZXIgdmFsdWUgd2UKCWRldGVybWluZWQgaW4gdGhlIFBEQiB0byBzcGVlZCB1cC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRHJhd3MgYSBib3JkZXIgYXJvdW5kIHdpbmRvd3Mgd2l0aCBvbGQgd2luMzEgc3R5bGUgKG9ubHkgd3NfYm9yZGVyKSBpbgoJd2luOTUgbG9vay4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgQ0lOVEVSRkFDRSBhbmQgTk9OQU1FTEVTU1VOSU9OIHN1cHBvcnQuCgoJKiBpbmNsdWRlLyouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgZXh0ZXJuICJDIiBpZiBfX2NwbHVzcGx1cyBpcyBkZWZpbmVkLgoKCSogaW5jbHVkZS9jb21iby5oLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGZldyBiZWhhdmlvcnMgb2YgdGhlIGNvbWJvYm94IHRoYXQgd2VyZSBicm9rZW4uCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvaW5mby5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBuZXcgIndhbGsiIGNvbW1hbmQgb3B0aW9ucyB0byBsaXN0IHByb2Nlc3NlcyBhbmQgbW9kcmVmJ3MuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYMTFEUlZfRElCX1NldEltYWdlQml0c18yNC8zMjogRml4IHRoZSBjYXNlIGZvciBiaXRzX3Blcl9waXhlbCA9PSAzMgoJYW5kIG5lZ2F0aXZlIGxpbmVzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvd2ludXNlci5oLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoYW5nZWQgeHh4KFZPSUQpIHRvIHh4eCh2b2lkKS4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gc2ltcGxpZmllZCBpbnRlcm5hbCBkYXRhCgktIHRocmVhZCBzYWZlIGFjY2VzcyB0byBpbnRlcm5hbCBzdHJ1Y3R1cmVzCgktIGZpeGVkIGJ1ZyBvbiBPTkVfU0hPVCB0aW1lcnMKCS0gZGVmZXJyZWQgc2VydmljZSB0aHJlYWQgY2FsbCB1bnRpbCByZWFsbHkgbmVlZGVkIChubyBsb25nZXIgb24gV0lOTU0KCSAgb3IgTU1TWVNURU0gYXR0YWNoZW1lbnQpCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvc2VydmljZXMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHRoZSBzZXJ2aWNlIHRocmVhZCBpbnN0YW5jaWFibGUgaW4gZXZlcnkgcHJvY2Vzcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVzZSBBdXRvY29uZiB0byBmaW5kIHBhdGggdG8gbGRjb25maWcuCgoJKiBvbGUvdHlwZWxpYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHByb2JsZW0gd2l0aCB0aGUgTG9hZFR5cGVMaWIgbWV0aG9kLgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1tQGpldC5sc3QuZGU+CglVc2UgQHN5c2NvbmZkaXJAIGZvciB0aGUgZGVmYXVsdCByZWdpc3RyaWVzIGluIG1pc2MvcmVnaXN0cnkuYyB0b28uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1tQGpldC5sc3QuZGU+CglBZGRlZCBnZW5lcmljIHBpeGVsIGNvbnZlcnRlciBmb3IgOC0+MjQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRElBTE9HX1BhcnNlVGVtcGxhdGUxNigpIHN1cHBvcnRlZCB1cCB0byAxMjcgY29udHJvbHMuIEJpZ2dlciB2YWx1ZXMKCXdlcmUgZXhwYW5kZWQgdG8gV09SRCBpbmNvcnJlY3RseS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglWYXJpb3VzIERQTUkgZml4ZXMgYW5kIHByZWxpbWluYXJ5IERQTUkgcmF3IG1vZGUgc3dpdGNoIGhhbmRsZXIuCgoJKiB3aW5kb3dzL21kaS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGltcHJlY2lzaW9uIGluIHRoZSBNREkgdGlsaW5nIGZ1bmN0aW9uYWxpdHkuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU9wZW4gZmlsZXMgd2l0aCBtb3JlIGFwcHJvcHJpYXRlIHNoYXJpbmcgbW9kZS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgZml4ZXMgZm9yIEVuaE1ldGFGaWxlIHBsYXliYWNrLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUZpeGVkIGFuIGVycm9yIGFuZCBhbiBvZmYtYnktb25lIGJ1ZyBpbiBEU0FfU2V0SXRlbSgpLiAgVGhpcwoJZWxpbWluYXRlcyBzb21lIGNyYXNoZXMgd2l0aCBXaW45OCBuYXRpdmUgU0hFTEwzMi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIERJQUJMT19IQUNLIChkb2VzIG5vdCB3b3JrIGFueW1vcmUpLCBhZGQgMSBGSVhNRSwgZml4IEdldENhcHMoKQoJd2l0aCBjYXBzMT09TlVMTC4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCWR3RGF0YVNpemUgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIGVhY2ggUmVnUXVlcnlWYWx1ZUV4KCkgY2FsbC4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgaWdub3JlIGFwcGxpY2F0aW9uLXJlcXVlc3RlZCBwcmltYXJ5IGJ1ZmZlciBmbGFncy4KCgkqIHRvb2xzL2J1aWxkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYXIgaGlnaCB3b3JkIG9mICVlc3Agd2hlbiByZXR1cm5pbmcgZnJvbSBDYWxsRnJvbTE2LgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGF0aW9uIG9mIEVWX1JYRkxBRy4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBbR1NdZXRGb3JlZ3JvdW5kV2luZG93LgoJRml4ZWQgZm9jdXMgaGFuZGxpbmcgb24gaW50ZXItdGhyZWFkIGFjdGl2YXRpb24uCglBZGFwdGVkIEZvY3VzSW4vT3V0IGV2ZW50IGhhbmRsaW5nIHRvIHBlci1xdWV1ZSBmb2N1cy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsZWFzZSBXaW4xNkxvY2sgZHVyaW5nIFBST0NFU1NfQ3JlYXRlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltYWdlTGlzdF9HZXRJY29uIGJ1ZyBmaXguCgoJKiB3aW4zMi90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgYSBwcm9ibGVtIGluIEdldFRpbWVab25lSW5mb3JtYXRpb24oKSBkdWUgYSBjaGFuZ2UgdG8KCW1rdGltZSgpIGluIGdsaWJjLTIuMS4xIHdoZW4gZGF5bGlnaHQgc2F2aW5nIHRpbWUgaXMgaW4gZWZmZWN0LgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2hhbmdlZCBLJlIgQyBmdW5jdGlvbiBkZWZpbml0aW9uIHRvIEFOU0kgQy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQU0RSVl9TdHJldGNoRElCaXRzIHNob3VsZCB1c2UgbG9naWNhbCBjby1vcmRzLgoJU29tZSB2ZXJzaW9ucyBvZiBnaG9zdHNjcmlwdCBzZWVtIHRvIGVhdCBvbmUgdG9vIG1hbnkgY2hhcmFjdGVycyBvZgoJaW1hZ2UgZGF0YS4gQWRkIGEgJyUnIHRvIHRoZSBvdXRwdXQgZmlsZSB0byB3b3JrIGFyb3VuZCB0aGlzLgoKCSogcmVsYXkzMi93bmFzcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgV05BU1BJMzIgb3JkaW5hbHMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBvZiBHZXRTdGFydHVwSW5mbyooKS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RkZSwgbWlzYy9kZGVtbC5jOgoJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCTFzdCBjdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlTmFtZVNlcnZpY2UgKG9taXRzIG1vbml0b3IgY2FsbGJhY2spCgkxc3QgY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZUtlZXBTdHJpbmdIYW5kbGUgKHByb2JhYmx5IGNvbXBsZXRlKQoJRGRlSW5pdGlhbGl6ZVcgLSBtaW5vciBjaGFuZ2VzIHRvIGluaXRpYWxpc2Ugc2VydmljZSBuYW1lcyBzdHJ1Y3R1cmUKCURkZUdldExhc3RFcnJvciAtIHN0YXJ0IG9mIHByb3BlciBsYXN0IGVycm9yIHJldHJpZXZhbAoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlMTYgLSBhZGRlZCBjb2RlIGZvciBkZWZhdWx0IGNvZGVwYWdlIHdoZXJlIG5vdAoJc3VwcGxpZWQuCglWYXJpb3VzIGRvY3VtZW50YXJ5L2NvbW1lbnQgY29ycmVjdGlvbnMuCgpGcmkgSnVuIDExIDE4OjMzOjQ2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVzZSB0aGUgbm9ybWFsIGVudmlyb25tZW50IHJvdXRpbmVzIHRvIGJ1aWxkIHRoZSBlbnYgZGIgb2YgdGhlIGluaXRpYWwKCXByb2Nlc3MuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmM6CglSZXR1cm4gY29uc29sZSBoYW5kbGVzIGluIGFsbG9jX2NvbnNvbGUgcmVxdWVzdC4KCUZpeGVkIHJlYWRfY29uc29sZV9pbnB1dCBwYXJhbWV0ZXJzIHRvIGNvbmZvcm0gdG8gdGhlIHJlcGx5IHN0cnVjdHVyZQoJZGVjbGFyYXRpb24uCgpNb24gSnVuICA3IDE3OjQ2OjM5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIENyZWF0ZUNvbXBhdGlibGVCaXRtYXAgd2hlbiBjYWxsZWQgd2l0aCAwIHdpZHRoIG9yIGhlaWdodC4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1taW9EZXNjZW5kIHdoZW4gY2FsbGVkIHdpdGggYSBwYXJlbnQgY2h1bmsuCgoJKiBsb2FkZXIvc2lnbmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ5aW5nIHRvIGZpeCBzaWdhbHRzdGFjaygpIHByb2JsZW0gcmVwb3J0ZWQgYnkgRGViaWFuIHVzZXJzLgoJU0lHVFJBUCBtaWdodCBiZSB1bmRlZmluZWQgKGJlb3MpLgoKCSogb2xlL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBUTEJfUmVhZCAoY2FuIGVhc2lseSBnZXQgY291bnQhPWJ5dGVzcmVhZCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlKS4KCUZpeGVkIFRMQl9GaW5kVGxiIChzdHJzdHIgb24gYmluYXJ5IGRhdGEgd2lsbCBub3Qgd29yaykuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgPj4gYW5kICogb3BlcmF0b3IgcHJlY2VkZW5jZSBwcm9ibGVtLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvcmRlciBmb3IgZW50ZXJpbmcgY3JpdGljYWwgc2VjdGlvbnMgKFgxMSB2cy4gV25kTG9jaykgd2hlbgoJY2FsbGluZyBYMTFEUlZfTU9VU0VfU2V0Q3Vyc29yLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvbnN1bHQgbmUub3BlcmF0aW5nX3N5c3RlbSBmaWVsZCBmb3IgTkUgZmlsZXMgaW4gR2V0QmluYXJ5VHlwZSgpLgoKCSogc2VydmVyL3Byb2Nlc3MuYzogRml4ZWQgaW5pdGlhbCBwcm9jZXNzIHJlZmNvdW50LgoKU3VuIEp1biAgNiAxNzoyODoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgbG9hZGVyL2Rvcy9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jZHJvbS1sYWJlbHM6CglGb3JjZWQgY29tbWl0IHRvIGdldCByaWQgb2YgdGhlIHZlbmRvciBicmFuY2gKCgkqIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmU6IEFkZGVkIGNtZGxnci5oCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglBdm9pZCB1c2Ugb2Ygc3RybmNtcGkgKHJlcG9ydGVkIGJ5IFJvbiBDZW1lcikuCgoJKiBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIGluY2x1c2lvbiBvZiB3aW5lc3RyaW5nLmggdG8gd2luZWJhc2UuaC4KCUFkZGVkIFdpbmVsaWIgbWFjcm9zIGZvciBsc3RybmNtcCBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogUm9uIENlbWVyIDxyb25jZW1lckBndGUubmV0PgoJRml4ZXMgZm9yIHNldmVyYWwgYnVncyBpbiB3aGljaCBwb3J0aW9ucyBvZiB0aGUgc2Nyb2xsYmFyIHdlcmUgbm90CgliZWluZyByZWRyYXduIGNvcnJlY3RseSwgdGhlIGZvY3VzIHJlY3RhbmdsZSB3YXMgbm90IGJlaW5nIGNvcnJlY3RseQoJcmVtb3ZlZCBmcm9tIHRoZSB0aHVtYiBiZWZvcmUgcmVkcmF3aW5nLCBldGMuOyBhZGRlZCBjb21wbGV0ZSBXaW45eAoJYW5kIFdpbk5UIGxvb2sgYW5kIGZlZWwgc3VwcG9ydC4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBSb24gQ2VtZXIgPHJvbmNlbWVyQGd0ZS5uZXQ+CglGaXhlcyBmb3IgV2luOXggYW5kIFdpbk5UIGxvb2sgYW5kIGZlZWwuCgoJKiBmaWxlcy9kb3NfZnMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHJlc3BvbnNlIG9mIEdldEZ1bGxQYXRoTmFtZUEgd2hlbiBidWZmZXI9PU5VTEwuCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNyZWF0ZUZpbGVBL0ZJTEVfRG9PcGVuRmlsZTogYWRkIHZlcmJvc2UgcmVwb3J0aW5nIG9mIGFyZ3VtZW50cy4KCgkqIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC9tYWtlZmlsZS5iY2MsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCBjb25maWd1cmU6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUFkZGVkIFdpbmUgY29tbWFuZC1saW5lIGludGVycHJldGVyLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIENhbGxiYWNrLkNhbGxUYXNrUmVzY2hlZHVsZVByb2MoKS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBtaXNjZW11L21haW4uYywgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3dpdGNoIHN0YWNrcyBpbiBDQUxMMzJfSW5pdCgpLgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgkxNi1iaXQgc2NoZWR1bGVyIHJlb3JnYW5pemVkOiBydW4gYWxsIHRhc2tzIGluIHRoZWlyIG93biB0aHJlYWQuCglQcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlIGFkYXB0ZWQgdG8gbmV3IHNjaGVkdWxlci4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgU0VSVklDRV9FeGl0KCkuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsZWFzZSBXTkQgbG9jayBiZWZvcmUgY2FsbGluZyBQb3N0RXZlbnQxNigpLgoKCSogaW5jbHVkZS93bmFzcGkzMi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIHNvbWUgZGVmaW5lcy4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBU1BJX0V4ZWNTY3NpQ21kOiBiZXR0ZXIgcmV0dXJuIHZhbHVlIGFuZCB2ZXJib3NlIGVycm9yIHdoZW4gbm8gZGV2aWNlCglmb3VuZC4KCgkqIGxvYWRlci9tb2R1bGUuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVVzZSBTZWFyY2hQYXRoIHRvIHRlc3QgZm9yIGV4aXN0YW5jZSBvZiBwcm9ncmFtcyBpbiBscENtZExpbmUKCXByb2Nlc3NpbmcuIEZvciBscEFwcGxOYW1lIGRvIG5vdCBhcHBlbmQgIi5leGUiIGFuZCB1c2UKCURPU0ZTX0dldEZ1bGxOYW1lIHRvIGxvY2F0ZSB0aGUgcHJvZ3JhbS4gTW92ZSBtb2R1bGUgZmluZCBwcm9jZXNzCglhZnRlciBmbGFnIHRlc3RpbmcgYW5kIHByb3ZpZGUgcXVpY2sgZXhpdCBpZiBub3QgZm91bmQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJSW1wbGVtZW50ZWQgZGlhbG9nIHVuaXRzIC0+IHBpeGVscyBjb252ZXJzaW9uIHZlcnkgY2xvc2UgdG8gaG93IGl0J3MKCWFjdHVhbGx5IGRvbmUgYnkgV2luZG93cy4KClNhdCBKdW4gIDUgMTU6MjM6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9pbml0Z3VpZC5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9iaW5kY3R4LmMsIG9sZS9tb25pa2VyLmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVNvbWUgbm9uLXRocmVhdGVuaW5nIGZpeGVzIHRvIHNvbWUgaGVhZGVycywgYXMgd2VsbCBhcyBzb21lIGNhc3RpbmcKCWNoYW5nZXMgdGhhdCBtYWtlIHdpbmVsaWIgbW9yZSB3aW4zMiBjb2RlIGNvbXBhdGlibGUuCgoJKiBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCVN0dWIgZm9yIFNldFZvbHVtZUxhYmVsKCkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBiYWNrIGxvc3QgdHJlYXRtZW50IG9mIEhXTkRfVE9QTU9TVC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVRyeSB0byBpbXByb3ZlIENvbmZpZ3VyZU5vdGlmeSBldmVudCBwcm9jZXNzaW5nLgoKCSogb2JqZWN0cy9wZW4uYzogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUFsbG93IHBlbnMgd2l0aCBzdHlsZXMgZ3JlYXRlciB0aGFuIFBTX0lOU0lERUZSQU1FIHRvIGJlIGNyZWF0ZWQgd2l0aAoJRXh0Q3JlYXRlUGVuLgoKCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBvbGUvdHlwZWxpYi5jLCBvbGUvdHlwZWxpYi5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVJlYWQvbG9hZCB0eXBlIGxpYnJhcmllcy4gSW1wbGVtZW50YXRpb24gb2YgSVR5cGVMaWIsIElUWXBlSW5mbywKCUlUeXBlTGliMiBhbmQgSVR5cGVJbmZvMiBtZXRob2RzLgoKCSogb2xlL29sZTJkaXNwLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBbGxvdyBOVUxMIGFzIGFyZ3VtZW50IHRvIFN5c0ZyZWVTdHJpbmcgaW4gYWNjb3JkYW5jZSB3aXRoIFNESy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJLSBtb3JlIHVwLXRvLWRhdGUgZGVzY3JpcHRpb24gb2Ygc291cmNlIHRyZWUKCS0gYmV0dGVyIGV4YW1wbGUgb2YgcmVxdWlyZWQgY29tbWVudHMgZm9yIGFuIEFQSSBpbXBsZW1lbnRhdGlvbgoJLSByZXBsYWNlbWVudCBvZiBXSU5FX1BBQ0tFRCBieSAicHNocGFjazEuaCIsIGV0Yy4KCS0gbmFtaW5nIGNvbnZlbnRpb25zIGZvciBub24tYXBpIGNhbGxzIGFuZCB0eXBlcwoJLSBsb2NhdGlvbiBjb252ZW50aW9ucyBmb3Igbm9uLWFwaSBoZWFkZXIgZmlsZXMgYW5kIHByb3RvdHlwZXMKCgkqIHJlbGF5MzIvbXByLnNwZWMsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93bmV0LmgsIG1pc2MvbmV0d29yay5jOgoJUm9iZXJ0IFcgSGFsbCA8Ym9iaEBuLWNhbnRyZWxsLmRlbW9uLmNvLnVrPgoJQWRkZWQgMiBzdHVicy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJlaGF2aW91ciBvZiBBbGxvYy4uVGh1bmtsZXRDYWxsYmFja1tFeF0gZm9yIE5VTEwgdGFyZ2V0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpbiBFVkVOVF9RdWVyeVpPcmRlci4KCUZpeGVkIHBvdGVudGlhbCBYIHN5bmNocm9uaXphdGlvbiBwcm9ibGVtIGluIFgxMURSVl9XTkRfU2V0SG9zdEF0dHIuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvcnJlY3Qgc2VhcmNoIG9yZGVyIGluIFNlYXJjaFBhdGggZm9yIFdpbiAzLjEvOTUvOTguIFN0aWxsIGJyb2tlbiBmb3IgTlQuCgoJKiB3aW5kb3dzL3dpbi5jOiBTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJbyBjaGVjayBmb3IgYm90aCBDV19VU0VERUZBVUxUIGFuZCBDV19VU0VERUZBVUxUMTYuCglvIGlmIHggaXMgQ1dfVVNFREVGQVVMVCAob3IgQ1dfVVNFREVGQVVMVDE2KSBhbmQgeSBpcyAqbm90KgoJICBDV19VU0VERUZBVUxUIChvciBDV19VU0VERUZBVUxUMTYpIHRoZW4gdXNlIHkgYXMgYSBzZWNvbmQKCSAgcGFyYW1ldGVyIHRvIFNob3dXaW5kb3coKS4gU29tZSBhcHBzIChDQUxDLkVYRSBmb3IgV2luOTgKCSAgaXMgb25lIG9mIHRoZW0pIHVzZSB0aGlzIHVuZG9jdW1lbnRlZCBmZWF0dXJlIHRvIGNyZWF0ZQoJICBoaWRkZW4gd2luZG93IHdpdGggV1NfVklTSUJMRSBzdHlsZSBzZXQuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgRFBBX0xvYWRTdHJlYW0gYW5kIHN0dWIgZm9yCglEUEFfU2F2ZVN0cmVhbS4gIFRoYW5rcyB0byBFcmljIEtvaGwgKGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlKSBmb3IKCXRoZSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIGFuZCBwYXJhbWV0ZXIgaW5mb3JtYXRpb24uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBsaW5rIFdpbmUgc3RhdGljYWxseSAoYXQgbGVhc3Qgb24gUmVkSGF0IDYuMCkuCgoJKiBjb250cm9scy9tZW51LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2hlbiBsb29raW5nIGludG8gc3lzIG1lbnUsIGNoZWNrIGlmIGl0ZW1zIGFyZSBwcmVzZW50IGJlZm9yZQoJZGVyZWZlcmVuY2luZy4KCgkqIGRvY3VtZW50YXRpb24vQXR0aWMvd2luZS5tYW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQXV0b2NvbmZpZ3VyZSB0aGUgZGlyZWN0b3JpZXMgaW4gdGhlIG1hbnBhZ2UuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBEdW1teU1vdGlvbk5vdGlmeSBFVkVOVCBkcml2ZXIgcm91dGluZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUF1dG9jb25maWd1cmUgdGhlIGRpcmVjdG9yaWVzIGluIHRoZSBtYW5wYWdlLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQWRkIHN0dWIgZm9yIExvY2tGaWxlRXggKEtFUk5FTDMyLjUxMykuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbjoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQ3VycmVudCBzdGF0dXMgb2YgV2luZSBvbiBpbnRlcm5hdGlvbmFsaXNhdGlvbi4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG8gbm90IHByb2Nlc3MgV01fTEJVVFRPTlVQIG1lc3NhZ2UgaW4gQnV0dG9uV25kUHJvYygpCgl3aGVuIHRoZSBtb3VzZSBpcyBub3QgY2FwdHVyZWQuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIG9iamVjdHMvZGMuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRnJvbSBDcmVhdGVDb21wYXRpYmxlREMsIHBhc3MgdGhlIGRldmljZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUKCXNvdXJjZSBEQyBpbiBvcmRlciB0byBhbGxvdyBQU0RSVl9DcmVhdGVEQyB0byBsb2NhdGUgdGhlIHByaW50ZXIgaW5mbwoJZm9yIHRoZSBkZXZpY2UuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZGlnaXRhbCB2aWRlbyBpbnRlcmZhY2UKCUZpeGVkIGEgZmV3IGJ1Z3MgKGRldmljZSBuYW1lcyBhcmUgbm8gbG9uZ2VyIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLAoJYWRkZWQgY2FsbCBiYWNrIHdpbmRvdywgYWxsIHN0cnVjdHVyZXMgbW92ZWQgdG8gMzIgYml0Li4uKS4KCgkqIGlmMTYzMi90aHVuay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdvcmthcm91bmcgZ2NjIDIuNy4yLnggc2lnIDExIGlzc3VlLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKHN0aWxsIGluY29tcGxldGUpIGhhbmRsaW5nIG9mIE1DSV9CUkVBSyBjb21tYW5kLgoKCSogZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVcGRhdGVkIGRvY3VtZW50YXRpb24vbm8td2luZG93cy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BlZWR1cCBlbmhhbmNlbWVudCBmb3IgdGhlIDgtPjE2IGFuZCA4LT4zMiBjb3B5IGxvb3AgaG90c3BvdHMsCgl1c2luZyBhIGZhc3RlciBnZW5lcmljIHJvdXRpbmUgYW5kIHNvbWUgaW5saW5lIGFzc2VtYmx5IGZvciBpMzg2CgkoY2xlYW51cHMgYnkgT3ZlKS4KCkZyaSBKdW4gIDQgMTk6NDk6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmM6CglNYWRlIGhhbmRsZSB0YWJsZSBhIHNlcGFyYXRlIG9iamVjdC4KCUdsb2JhbCBoYW5kbGUgdGFibGUgaXMgbm8gbG9uZ2VyIGJvdW5kIHRvIGEgcHJvY2Vzcy4KCVJlbW92ZWQgc3BlY2lhbCBoYW5kbGluZyBvZiB0aGUgaW5pdGlhbCBwcm9jZXNzLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglBZGRlZCBvcHRpb25hbCBkZWJ1Z2dpbmcgY29kZSBpbiBvYmplY3QgbWFuYWdlbWVudC4KClNhdCBNYXkgMjkgMTQ6Mjc6MjcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYzoKCUdvdCByaWQgb2YgVEhSRUFEX0luaXREb25lLgoJTWFkZSBUSFJFQURfQ3VycmVudCgpIGlubGluZS4KCU1vdmVkIHNlcnZlciB0aWQgaW50byBURUIuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUmVpbXBsZW1lbnRlZCB0aGUgQ2hlY2tSYWRpb0J1dHRvbiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBpbmNvcnJlY3QgbG9va3VwIG9mIGJhY2tncm91bmQgY29sb3IuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgcHJvYmxlbXMgd2hlbiB1c2luZyBtdWx0aXBsZSBzdHlsZSBmbGFncyB0b2dldGhlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVuIHVzaW5nIHN0cmluZyByZXNvdXJjZXMgYXMgdG9vbHRleHQuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGJlaGF2aW9yIG9mIHRoZSBmb2N1cyB3aGVuIGEgcGFyZW50IHdpbmRvdyBpcyBkaXNhYmxlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJRml4ZWQgYSBidWcgd2hpY2ggY2F1c2VzIHRoZSBQb2x5QmV6aWVyIHRvIG5vdCBiZSB1cGRhdGVkIG9uIHJlZHJhdwoJKHdoZW4geW91IHdhbnQgdGhlbSB0byBiZSkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IHdhcm5pbmcgaW4gVHJhbnNsYXRlQWNjZWxhdG9yLgoKCSogc2VydmVyL2hhbmRsZS5jOgoJRml4ZWQgZHVwbGljYXRlX2hhbmRsZSB0byB3b3JrIHdpdGggcHNldWRvLWhhbmRsZXMgKHJlcG9ydGVkIGJ5IE1hcmN1cwoJTWVpc3NuZXIpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvdmVyL3ZlcjE2LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL3Zlci5oLCBpbmNsdWRlL3dpbnZlci5oLCB0b29scy93cmMvd3JjdHlwZXMuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJdmVyLmggaXMgYSBsZWdhY3kgaGVhZGVyLiB3aW52ZXIuaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgoKCSogZGxscy90YXBpMzIvcGhvbmUuYywgbWlzYy9jcnRkbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJLSBSZWltcGxlbWVudGVkIHRoZSBzY3JvbGxpbmcgdXNpbmcgU2V0U2Nyb2xsSW5mbyBhbmQgR2V0U2Nyb2xsSW5mby4KCS0gSW1wbGVtZW50ZWQgTFZNX0ZJTkRJVEVNIG1lc3NhZ2UuCgktIEFkZGVkIHNvbWUgbmV3IHdpbmRvdyBzdHlsZXMuCgktIEZpeGVkIHNvbWUgYnVncyBhbmQgZXh0ZW5kZWQgYSBudW1iZXIgb2YgZXhpc3RpbmcgZnVuY3Rpb25zLgoJLSBNb2RpZmllZCBzZWxlY3Rpb24gZnVuY3Rpb25zIHRvIHN1cHBvcnQgYXJlYSBzZWxlY3Rpb24gKGZvciBncm91cAoJICBzZWxlY3Rpb24gaW4gTFZTX0lDT04gYW5kIExWU19TTUFMTElDT04pLgoKCSogbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgbWlzc2luZyBldmVudCBub3RpZmljYXRpb25zLiBTb21lIG1vcmUgZGVidWdnaW5nCgltZXNzYWdlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJpa2hhcmR1ciBFZ2lsc3NvbiA8cmlrYXJkdXJAc2t5LmZyPgoJSWNlbGFuZGljIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYmV0dGVyIGRlYnVnIG91dHB1dCBmb3Igc3VyZmFjZSBjcmVhdGlvbgoJLSBhZGRlZCAoZXhwZXJpbWVudGFsKSBESUJTZWN0aW9uIGltcGxlbWVudGF0aW9uIG9mIEdldERDIC8gUmVsZWFzZURDCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIHdhcm5pbmcuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglTdXBwb3J0IFRQTV9SRVRVUk5DTUQgaW4gVHJhY2tQb3B1cE1lbnUuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IDxyZXR1cm4+IGtleSAoc29tZWhvdyB3ZSBnZXQgYSBjb250cm9sIGtleXN0YXRlKS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgY29tcGlsYXRpb24gZXJyb3Mgb24gbm9uLUxpbnV4IHN5c3RlbXMuCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIFRSQUNFIGRlZmluZSB3aGVuIE5PX0RFQlVHX01TR1Mgd2FzIGRlZmluZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgZm9yIFNIVmFsaWRhdGVVTkMuCgoJKiBkb2N1bWVudGF0aW9uL2xhbmd1YWdlczogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGFwdGVkIHRvIHRoZSBuZXcgZGxsIHJlc291cmNlIGhhbmRsaW5nIGJ5IEJlcnRobyBTdHVsdGllbnMuCgpNb24gTWF5IDI0IDE1OjAyOjE4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL3NoZWxsLmM6IFJlbGVhc2UgdGhlIFdpbjE2TG9jayBiZWZvcmUgY2FsbGluZyBXaW5FeGVjLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJUmVtb3ZlZCBwcm9jZXNzIGFyZ3VtZW50IHRvIFBST0NFU1NfQ2FsbFVzZXJTaWduYWxQcm9jLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIHJlbWFpbmluZyBpbml0aWFsaXNhdGlvbnMgdG8gdGhlIG5ldyBwcm9jZXNzIGNvbnRleHQuCglTaHVmZmxlZCB0aGluZ3MgYXJvdW5kIGEgYml0IGluIFBST0NFU1NfU3RhcnQgdG8gYXZvaWQgZGVhZGxvY2tzLgoJQ2hhbmdlZCBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYyB0byBhdm9pZCBhY2Nlc3NpbmcgYW5vdGhlciBwcm9jZXNzCglhZGRyZXNzIHNwYWNlLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCBzdXBwb3J0IGZvciBkdW1waW5nIHZhcmlhYmxlLXNpemUgZGF0YSBvZiBzZXJ2ZXIgcmVwbGllcy4KCUFkZGVkIGNtZF9saW5lIGFuZCBjbWRfc2hvdyBpbiBuZXdfcHJvY2VzcyByZXF1ZXN0LgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZml4ZWQgYnVpbHRpbiBtbXN5c3RlbS5kbGwgaW5pdCBzZXF1ZW5jZQoKCSogbXVsdGltZWRpYS9BdHRpYy9pbml0LmMsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXJlbW92ZWQgb2Jzb2xldGVkIGluaXQuYyBzb3VyY2UgZmlsZQoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJcmVtb3ZlZCB1bm5lY2Vzc2FyeSBNQ0kgZHJpdmVycyBlbnRyeSBwb2ludAoJYWRkZWQgdW5kb2N1bWVudGVkIG1tc3lzdGVtIGZ1bmN0aW9ucwoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZQoJbm93IGNhbGxpbmcgdGltZSBpbml0IGZ1bmN0aW9uIGZyb20gbW1zeXN0ZW0gYW5kL29yIHdpbm1tIGVudHJ5IHBvaW50CgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW5jbHVkZWQgRExMIGluaXQgc2VxdWVuY2UgKGZyb20gb2Jzb2xldGVkIGluaXQuYykKCWZpeGVkIGJ1aWx0aW4gbW1zeXN0ZW0uZGxsIGluaXQgc2VxdWVuY2UKCWZpeGVkIFBsYXlTb3VuZCB3aGVuIHVzZWQgd2l0aCBhbiBhc3luY2hyb25vdXMgYXVkaW8gZHJpdmVyCglmaXhlZCBtaWRpU3RyZWFtIGZ1bmN0aW9ucyBmb3IgU3RvcC9QYXVzZS9SZXN0YXJ0IGZ1bmN0aW9ucwoJZml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gd2F2ZU91dE9wZW4gd2l0aCBRVUVSWV9GT1JNQVQgZmxhZwoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW5jbHVkZWQgbWlkaSBpbml0IHNlcXVlbmNlIChmcm9tIG9ic29sZXRlZCBpbml0LmMpCgltb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlCglzaW1wbGlmaWVkIGNvZGUgd2l0aCB1c2luZyBuZXcgY29uZmlndXJhdGlvbiBjb25zdGFudCAoSEFWRV9PU1NfTUlESSkKCWZpeGVkIGVycm9uZW91cyB3YXJuaW5ncwoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbmNsdWRlZCBtY2kgaW5pdCBzZXF1ZW5jZSAoZnJvbSBvYnNvbGV0ZWQgaW5pdC5jKQoJbW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZQoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW91dHB1dDogYmV0dGVyIGludGVybmFsIHRocmVhZCBpbnRlcmZhY2UgKG9ydGhvZ29uYWxpemF0aW9uIG9mIHN0YXRlcyBhbmQgZXZlbnRzKQoJb3V0cHV0OiByZW1vdmVkIHVzZSBvZiBEU1BfSU9DVExfR0VUT1NQQUNFCglvdXRwdXQ6IGZpeGVkIGxhdGVuY3kgaW4gcmVzZXQgbWVzc2FnZXMgaGFuZGxpbmcKCW91dHB1dDogcmVwbGFjZWQgc29tZSBwb2xsaW5nIG1lY2hhbmlzbXMgd2l0aCBibG9ja2luZyBvbmVzCglvdXRwdXQ6IGZpeGVkIGdldC9zZXQgdm9sdW1lIGZ1bmN0aW9ucwoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW92ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UKCWZpeGVkIGJ1Z3MgaW4gcGF1c2UvcGxheS9zdG9wIGZ1bmN0aW9ucwoJZml4ZWQgc2lnbmF0dXJlIG9mIGRyaXZlciBlbnRyeSBwb2ludAoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW92ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UKCWZpeGVkIGJ1Z3MgaW4gcGF1c2UvcGxheSBmdW5jdGlvbnMKCWZpeGVkIHNpZ25hdHVyZSBvZiBkcml2ZXIgZW50cnkgcG9pbnQKCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRyYWNlcy4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlIGV4dHJhbmVvdXMgd2ludXNlcjE2LmguCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBwcmludGYgaW50byBUUkFDRS4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyB0eXBvcy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgd2hlbiBiYWNrdHJhY2tpbmcgdGhlIHN0YWNrIGlmIGZyYW1lcyBhcmUgY29ycmVjdCAocmVhZGFibGUpLgoKCSogd2luZG93cy9ldmVudC5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2Mvd2luc29jay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBXSU5TT0NLIG5ldHdvcmsgSU8gZXZlbnQgaGFuZGxpbmcgdG8gc3BlY2lhbCB0aHJlYWQuCglSZW1vdmVkIEVWRU5UX1dhaXROZXRFdmVudCwgaW50cm9kdWNlZCBhIGdsb2JhbCBzY2hlZHVsZXIgZXZlbnQuCgoJKiBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2FpdCB1bnRpbCBjaGlsZCBpbml0aWFsaXplZCBiZWZvcmUgcmV0dXJuaW5nIGZyb20gUFJPQ0VTU19DcmVhdGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSByZWdpc3RlciBmdW5jdGlvbnMgd2l0aCBhcmd1bWVudHMgZm9yIExvZ0FwaVRoay4uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQ2xlYW5lZCB1cCBMSVNUVklFV19LZXlEb3duIGJ5IHVzaW5nIExJU1RWSUVXX0dldE5leHRJdGVtLiAgUmVtb3ZlZCB1bnVzZWQKCXZhcmlhYmxlIGluIExJU1RWSUVXX0dldE5leHRJdGVtLgoKU3VuIE1heSAyMyAyMDowMjowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglVc2UgdGhlIG5ldyBkZWJ1ZyBmdW5jdGlvbnMgdG8gc2VuZCBkZWJ1ZyBldmVudHMgYXQgYXBwcm9wcmlhdGUgcGxhY2VzLgoJUGFzcyB0aGUgcHJvY2VzcyBjcmVhdGlvbiBmbGFncyB0byBQUk9DRVNTX0NyZWF0ZS4KCgkqIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvbHN0ci5jOgoJSW1wbGVtZW50ZWQgdGhlIFdpbjMyIGRlYnVnIEFQSSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgZGVidWcgZXZlbnRzIHN1cHBvcnQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBNYXkgMjMgMTA6MjU6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xkdC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb2RlX3BhZ2UuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9lcnJvci5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL2luaXQuYywgd2luMzIvcHJvY2Vzcy5jLCB3aW4zMi9zdHJ1Y3QzMi5jLCB3aW4zMi90aHJlYWQuYywgd2luMzIvdGltZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgbWVtb3J5L2F0b20uYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGR3RmxhZ3MgbXVzdCBkZXNjcmliZSB0YXJnZXQgcHJvY2VzcyBpbiBVc2VyU2lnbmFsUHJvYy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSB0byBTSEVMTDMyXzY1NCBzdHViLiAgRml4ZXMgY3Jhc2ggaW4gV2luOTgKCUV4cGxvcmVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTElTVFZJRVdfS2V5RG93bjogSW52YWxpZGF0ZSB0aGUgbGlzdHZpZXcgd2luZG93IG9ubHkgd2hlbiB0aGUKCXNlbGVjdGVkIGl0ZW0gY2hhbmdlcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWlzYy93c3ByaW50Zi5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIF9EZWJ1Z091dHB1dCAoS0VSTkVMLjMyOCksIExvZ0FwaVRoayAoS0VSTkVMLjQyMyksIExvZ0FwaVRoa0xTRgoJKEtFUk5FTDMyLjQyKSwgTG9nQXBpVGhrU0wgKEtFUk5FTDMyLjQ0KSwgTG9nQ0JUaGtTTCAoS0VSTkVMMzIuNDcpLAoJYW5kIFNTQ29uZmlybVNtYWxsU3RhY2sgKEtFUk5FTC43MDQpLgoKCSogaWYxNjMyL2Rpc3BsYXkuc3BlYywgd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCB0eXBvICh3cm9uZyBESVNQTEFZLkNoZWNrQ3Vyc29yIG9yZGluYWwpLgoJU3VwZXJmbHVvdXMgRklYTUUgY29udmVydGVkIHRvIFRSQUNFIGluIENoZWNrQ3Vyc29yLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHN5c2xldmVsIHJlbGF5IGNoZWNrIHdhcyB0b28gc3RyaWN0LgoKCSogc2VydmVyL21hcHBpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgdXNlIHBhZ2VzaXplIGFsaWduZWQgc2l6ZV9sb3cgdG8gZ3JvdyBtYXBwZWQgZmlsZSwgYnV0IG9yaWdpbmFsCglzaXplX2xvdy4gKGZpeGVzIEhlaXNlcyBJbmRleCBSZWdpc3RlcikKClNhdCBNYXkgMjIgMTk6MjI6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBzb21lIG1vcmUgZGVidWcgb3V0cHV0CgktIGNvcnJlY3RlZCBhIHNsaWdodCBidWcgaW4gREdBIERpcmVjdERyYXcgY3JlYXRpb24KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWFqb3IgbWVtb3J5IGxlYWsgaW4gdGhlIHdpbmRvdyBtYW5hZ2VtZW50IGNvZGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluIFNldFdpbmRvd1BvcyBpZiBjaGFuZ2luZyBaIG9yZGVyIGFuZCBjaGlsZCB3aW5kb3cgbm90IHlldCBpbiBpdHMKCXBhcmVudCBsaXN0LCBkbyBub3QgbGluayBpdCBpbiBXSU5QT1NfU2hvd0ljb25UaXRsZSwgY2hlY2sgZm9yIHJldHZhbAoJb2YgV0lOX0ZpbmRXbmRQdHIuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglEaXNhYmxlIHBhc3NpbmcgZGV2aWNlIGNvbnRleHQgdG8gWDExRFJWX0RJQl9CdWlsZENvbG9yTWFwIHdoZW4gUkdCCgljb2xvcm1hcCBpcyB1c2VkLgoKCSogZGVidWdnZXIvZGJnLnk6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgZnJlZXplIG90aGVyIHRocmVhZCB3aGlsZSBpdCBtYXkgaG9sZCB0aGUgWCBjcml0aWNhbCBzZWN0aW9uLgoKCSogaW5jbHVkZS9kaXNwbGF5LmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3MvZGlzcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVc2VyUmVwYWludERpc2FibGUxNigpLgoKCSogd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgRVZFTlRfV2FpdE5ldEV2ZW50KCkgY2FsbHMuCgoJKiB3aW5kb3dzL2lucHV0LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgSXNVc2VySWRsZTE2KCkuCgoJKiBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gRVZFTlRfIGRyaXZlciBjaGFuZ2VzLgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBldmVudCBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIFggaW5wdXQgZXZlbnQgaGFuZGxpbmcgb3V0IG9mIEVWRU5UX1dhaXROZXRFdmVudCBhbmQgaW50bwoJc2VydmljZSB0aHJlYWQgY2FsbGJhY2s7IG1vdmVkIEVWRU5UX1dhaXROZXRFdmVudCBvdXQgb2YgdGhlIEVWRU5UXwoJZHJpdmVyLiAgQ2hhbmdlZCB3aW5Db250ZXh0IHRvIGhvbGQgSFdORCBpbnN0ZWFkIG9mIFdORCAqLgoKCSogd2luZG93cy93aW5wb3MuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjaGFuZ2UgWi1vcmRlciBvZiBjaGlsZCB3aW5kb3dzIHdoZW4gYWN0aXZhdGluZy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIEFkZFByaW50ZXJBLCBBZGRQcmludGVyRHJpdmVyQSBhbmQgR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeQoJTW92ZWQgc29tZSAxNmJpdCBHREkgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZyb20gd2luc3Bvb2wuaCAtPiB3aW5nZGkxNi5oCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDcmVhdGUgYSBuZXcgY29uZmlndXJhdGlvbiBtYW5pZmVzdCBjb25zdGFudCBIQVZFX09TU19NSURJLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBzaWxseSBFSU5UUiBidWcgd2l0aCBzdGFydGluZyBkb3Ntb2QuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJU2hvdWxkIGNvbXBhcmUgdG8gWDExIGNvbnN0YW50ICJOb25lIiBzaW5jZSBhIGNvbG9ybWFwIGlzIGFuIFgKCVJlc291cmNlIElEIGFuZCBub3QgYSBwb2ludGVyLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVN0b3AgYSBsaXN0Ym94IGJ1ZyB0aGF0IGNhdXNlcyBhIGRpdiBieSB6ZXJvIHdoZW4gdGhlIGl0ZW0gaGVpZ2h0CglpcyB6ZXJvLiBEb2Vzbid0IHNvbHZlIHRoZSByb290IG9mIHRoZSBwcm9ibGVtIHRob3VnaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjOgoJQW5kcmUgTWFsYWZheWEgQmFwdGlzdGEgPE1hbGFmYXlhQG1pbGVuaW8zLnB0PgoJQWJvdXQgZGlhbG9nIHRyYW5zbGF0ZWQgdG8gUG9ydHVndWVzZS4KCgkqIGlmMTYzMi90aHVuay5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+Cgl0YXNrLmggd2FzIGluY2x1ZGVkIHR3aWNlLiAgUmVtb3Zpbmcgb25lIGZpeGVkIGEgc2lnMTEgaW4gZ2NjLTIuNy4yLjMuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBpZiBkYyBoYXMgYmVlbiBjcmVhdGVkIGJlZm9yZSB1c2luZyBpdC4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgYSBmZXcgbW9yZSAzMi0+MTYgRXNjYXBlIGNvbnZlcnNpb25zLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hlY2sgZm9yIHN5c2xldmVsIHZpb2xhdGlvbnMgd2hpbGUgcmVsYXkgZGVidWdnaW5nLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3N5c2xldmVsLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXByb3ZlZCBzeXNsZXZlbCBoYW5kbGluZywgc3RvcmUgY3VycmVudGx5IGhlbGQgc3lzbGV2ZWxzIGluIHRocmVhZAoJZGF0YWJhc2UsIFdJTl9Dcml0U2VjdGlvbiBjb252ZXJ0ZWQgdG8gc3lzbGV2ZWwuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUFkZGVkIG1tc3lzdGVtLmggaW5jbHVkZS4KCgkqIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvdXNlci5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEV4aXRLZXJuZWwxNiAocmVwbGFjaW5nIFVTRVJfRXhpdFdpbmRvd3MpLCBFeGl0UHJvY2VzczE2LCBhbmQKCU1hcFByb2Nlc3NIYW5kbGU7IHN0dWIgZm9yIEJVTk5ZXzM1MS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSBwcm9jID09IE5VTEwgaW4gVEhVTktfU2V0RENIb29rIGNvcnJlY3RseS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSB1bmRvY3VtZW50ZWQgY29tYmluYXRpb24KCUdldFByaXZhdGVQcm9maWxlU3RyaW5nQShzZWN0aW9uID09IE5VTEwsIGVudHJ5ID09IE5VTEwsIC4uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUNsZWFuZXIgbnVsbCBwb2ludGVyIGNoZWNrIGluIEhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgR2V0TmV4dEl0ZW0gZm9yIHRoZSBMaXN0dmlldyBjb250cm9sLgoKCSogc2NoZWR1bGVyL3NlcnZpY2VzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRXhwaXJlIHRpbWVycyBvbiBleHBpcnkgdGltZSB0b28sIG5vdCBqdXN0IGFmdGVyLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvYmluZGN0eC5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL2lmcy5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21lbWxvY2tieXRlcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlZm9udC5jLCBvbGUvb2xlb2JqLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYywgd2luZG93cy9kaW5wdXQuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglNaWNyb3NvZnQgY29tIHZ0YWJsZSBjb21wYXRpYmlsaXR5IHdvcmthcm91bmQgZm9yIGcrKy4gIEJhc2ljYWxseSBhZGRzCglhbiBvcHRpb25hbCA4IGJ5dGVzIHBhZGRpbmcgdG8gQ09NIG9iamVjdHMgd2hlcmUgdGhlIFJUVEkgd291bGQgYmUuCgoJKiBpbmNsdWRlL3N5c21ldHJpY3MuaCwgbWlzYy9zaGVsbC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgYWxsIG9jY3VyZW5jZXMgb2YgU1lTTUVUUklDU194eCBhbmQgc3lzTWV0cmljc1tTTV94eF0gYnkKCUdldFN5c3RlbU1ldHJpY3MoU01feHgpLCByZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgaW5jbHVkZXMgb2YKCXN5c21ldHJpY3MuaC4KCgkqIG1zZG9zL2ludDE2LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgSU5UX0ludDE2QWRkQ2hhci4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQnVnZml4OiBQcmV2ZW50IG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBUUkFDRSBhcmd1bWVudCBsaXN0IGluCglSRVNfRmluZFJlc291cmNlCgoJKiBsb2FkZXIvZWxmZGxsLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXhlZCB3cm9uZyBORSBtb2R1bGUgcmVnaXN0cmF0aW9uIHNvIHRoYXQgcmVzb3VyY2VzIHdvcmsuCgoJKiBpZjE2MzIvdGh1bmsuYywgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2V0ICVlYnggdG8gcG9pbnQgdG8gcmVhbCAxNi1iaXQgc3RhY2sgaW4gQ0JDbGllbnRUaHVua1NMLgoJUGFzcyAlZXNpIGJhY2stYW5kLWZvcnRoIGluIENCQ2xpZW50VGh1bmtTTChFeCkuCglDb3B5IG1vZGlmaWVkIGJ1ZmZlcnMgYmFjayBhZnRlciByZXR1cm4gZnJvbSBGVF9UaHVuay4KCUZpeCBicm9rZW4gcmVjb2duaXRpb24gb2YgTFMgdGh1bmtsZXRzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdXNlIG9mIHdpbi5oLCBzeXNtZXRyaWNzLmggYW5kIGFzc29jaWF0ZWQgV0lORSBVU0VSIGludGVybmFsCgl2YXJpYWJsZXMuIEFkZGVkIG1pc3NpbmcgaW5mb1B0ci0+QnVkZHkgPSBod25kQnVkOyBpbiB1cGRvd24uYwoKCSogZGxscy9jb21jdGwzMi9BdHRpYy9wcm9wc2hlZXQuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdG9vbGJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVRvb2xiYXIgY3VzdG9taXphdGlvbiBkaWFsb2cgKHRha2Ugb25lKS4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIEdldFRvcFdpbmRvdyBzbyBpdCB3aWxsIGNvcnJlY3RseSBoYW5kbGUgdGhlIE5VTEwgcGFyYW1ldGVyLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IHN3YXBwZWQgRnJlZUxpYmFyeSByZXR1cm4gdmFsdWVzLiBIYW5kbGUgRnJlZUxpYnJhcnkoIDAgKSBiZXR0ZXIuCglGaXggRExMX1BST0NFU1NfREVUQUNIIGNhbGwgc2VxdWVuY2UgYnVncyByZXN1bHRpbmcgZnJvbSBuZXN0ZWQKCUZyZWVMaWJyYXJ5IGNhbGxzLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3BlY3MgZm9yIG1peGVyR2V0RGV2Q2FwczE2L21peGVyR2V0SUQxNiwgZml4ZWQgbWl4R2V0RGV2Q2FwczE2LgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDIxLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZWQgZ2xvYmFsIERPU19MT0wgaW50byBmdW5jdGlvbiBET1NNRU1fTE9MKCkgaW4gb3JkZXIgdG8gb3BlcmF0ZQoJb24gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4gQWRkZWQgRE9TTUVNX01vdmVQb2ludGVycygpIHRoYXQKCXJlbG9jYXRlcyBzZWxlY3RvcnMgd2hlbiB0aGUgRE9TIGFkZHJlc3Mgc3BhY2UgY2hhbmdlcyAoaS5lLiB3aGVuCglkb3Ntb2QgaXMgc3Bhd25lZCwgcGFydGljdWxhcmx5IGZyb20gV2luMTYgYXBwcyB0aGF0IHVzZXMgRFBNSSB0bwoJZXhlY3V0ZSByZWFsLW1vZGUgY29kZSkuIE1vcmUgY29tcGxldGUgRE9TIGRldmljZSBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgTVpfQ3VycmVudCgpIChyZXR1cm5zIGN1cnJlbnQgTFBET1NUQVNLKSBhbmQgRE9TVk1fV2FpdCgpCgkoRE9TVk0gaWRsZSBtZXNzYWdlIGxvb3ApLCBhbmQgZmllbGRzIGhDb25JbnB1dCBhbmQgaENvbk91dHB1dC4KCgkqIG9iamVjdHMvYml0bWFwLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBZGQgc29tZSBudWxsIGNoZWNraW5nIGluIHRoZSBHZXQvU2V0Qml0bWFwQml0cyBmdW5jdGlvbnMuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBpbml0IGZ1bmN0aW9uIGZvciBDUlRETEwsIGFsbG9jYXRlIHN0ZGlvL3N0ZGVyci9zdGRvdXQgb24KCURMTF9QUk9DRVNTX0FUVEFDSCwgaW5jcmVhc2UgYnVmZmVyIGZvciB2ZnByaW50ZigpIChXaW45NSBhcnAuZXhlCgluZWVkcyAxLjNLQikuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBGcmVlQlNEIDMuMCB0byBERUJVR19jaGVja21hcF9iYWQoKS4KCgkqIG1pc2Mvd2luc29jay5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglQcmludCBhIG1vcmUgZWZmZWN0aXZlIChhbmQgdmlzaWJsZSkgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIGFwcGxpY2F0aW9uCgljYW4ndCBjcmVhdGUgYSBzb2NrZXQgd2l0aCB0eXBlID09IFNPQ0tfUkFXLgoKCSogaW5jbHVkZS9tbXJlZy5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgbW9yZSBkZWZpbmVzIGZvciBtdWx0aW1lZGlhLgoKCSogbXNkb3MvdnhkLmMsIHdpbjMyL2RldmljZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglTb21lIHN0dWJzIGZvciBwY2NhcmQgdnhkIHRvIGRlYnVnIHRoZSBuYXRpdmUgc2hlbGwzMi4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBzZXJ2aWNlIHRocmVhZCBmb3IgInRydWUiIG11bHRpbWVkaWEgdGltZXJzLgoJUmVtb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBmYWtlIG11bHRpbWVkaWEgdGltZXJzLgoJU2V0IG1pbmltdW0gcmVzb2x1dGlvbiB0byAxMCBtcyAodGhlIHRpbWluZyByZXNvbHV0aW9uIG9mIHRoZSBMaW51eAoJa2VybmVsKS4gRml4ZWQgYSBjb3VwbGUgb2YgZmxhd3MuCgoJKiBtaXNjL3NweS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIHByaW50aW5nIG91dCBvZiBzb21lIHN0cnVjdHVyZXMuCgpUaHUgTWF5IDIwIDE2OjQwOjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zb2NrZXQuYzoKCVNldCBvbmx5IHRoZSBjbGllbnQgc29ja2V0IGluIG5vbi1ibG9ja2luZyBtb2RlIGluc3RlYWQgb2YgYWxsIGZkczsKCXNob3VsZCBhdm9pZCBwcm9ibGVtcyB3aXRoIHN0ZGlvIGhhbmRsZXMuCgpNb24gTWF5IDE3IDE2OjIwOjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvQXR0aWMvc3Bvb2xlci5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZGMuYywgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MvZHJpdmVyLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBEb2N1bWVudFByb3BlcnRpZXMsIERldmljZUNhcGFiaWxpdGllcywgYmVnaW5uaW5ncyBvZgoJT3Blbi9HZXQvQ2xvc2VQcmludGVyLiAgQWRkaXRpb25zIHRvIFBTRFJWX0RldmljZUNhcGFiaWxpdGllcy4KCVNwbGl0IG9mZiBXSU5TUE9PTCBpbnRvIGl0cyBvd24gZGlyZWN0b3J5LgoJU2V2ZXJhbCBmdW5jdGlvbnMgYWRkZWQgdG8gRENfRnVuY3MuCglCYXNlZCBsYXJnZWx5IG9uIGEgcGF0Y2ggYnkgUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglnbGlkZTJ4IGxvYWRvcmRlciBpcyAic28sbmF0aXZlIi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBzaG9ydGN1dHMgLSBmb2xsb3dzIGp1bXBzIGluIHRyeWluZyB0byBhdm9pZCBzd2l0Y2hpbmcgdG8KCXJlYWwgbW9kZSB1bm5lY2Vzc2FyaWx5LgoKCSogZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVwZGF0ZWQgYW5kIGltcHJvdmVkIGluc3RydWN0aW9ucy4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlICJXaW5lLWRiZz5zZXQgKnNlZzpvZmYgPSB2YWwiIHdvcmsgKHByZXZpb3VzbHkgb25seQoJIldpbmUtZGJnPnNldCAqb2ZmID0gdmFsIiB3b3JrZWQpLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jOgoJSnVra2EgS2FuZ2FzIDxqdGthbmdhc0BuaWMuZmk+CglXaGVuIG9wZW5pbmcgdGhlIGZpbGUgd2UgZG9uJ3QgbmVlZCBNTUlPX0VYQ0xVU0lWRQoJcmlnaHRzLiBNTUlPX0RFTllXUklURSBzaG91bGQgYmUgc3VmZmljaWVudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJUHJldmVudCBjcmFzaCBpbiBzdHViIG9mIFNoZUdldERpclcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglGdXJ0aGVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBGaWxlTWVudS4KCgkqIHdpbmRvd3MvbWRpLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJU2V0IHRoZSBkZWZhdWx0IG1lbnUgaXRlbSBvZiB0aGUgd2luZG93IG1lbnUKCgkqIHdpbmUuaW5pOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDaGFuZ2VkIHNlcmlhbCBwb3J0cyBpbiB3aW5lLmluaSB0byAvZGV2L3R0eVNYIGZyb20gL2Rldi9jdWFYIGluCglhY2NvcmRhbmNlIHdpdGggTGludXggMi4yIENoYW5nZXMgZmlsZS4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxlYXNlIFdpbjE2TG9jayB3aGVuIGNhbGxpbmcgTG9hZExpYnJhcnkzMiBmcm9tIDE2LWJpdCBjb2RlLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgVEhVTktfU2V0RENIb29rIHdoZW4gdXNpbmcgbmF0aXZlIFVTRVIuCgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRlRfUHJvbG9nUHJpbWUgd2FzIGJyb2tlbiBkdWUgdG8gcmVsYXkgY2hhbmdlcy4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIHN0dWJzIGFkZGVkLgoKCSogd2luZG93cy9ob29rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3VzcGVuZCB3aW5kb3cgbG9ja3MgYmVmb3JlIGNhbGxpbmcgaG9vayBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHdpbmRvdyByZWZjb3VudCBoYW5kbGluZyBpbiBHZXROZXh0RGxnR3JvdXBJdGVtLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc3VwZXJmbHVvdXMgV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CglYbGliX0lEaXJlY3REcmF3U3VyZmFjZTRJbXBsX0ZsaXAgc2hvdWxkIHNob3cgJ2ZsaXB0bycgc3VyZmFjZSwgbm90CglwcmV2aW91cyBvbmUuIChyZXBvcnRlZCBieSBPdmUpCgpTdW4gTWF5IDE2IDE3OjExOjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBkZWJ1ZyBldmVudCBkZWZpbml0aW9ucy4KCgkqIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQWRhcHRlZCB0byBuZXcgc2VsZWN0IGludGVyZmFjZS4KCUZpeGVkIGJ1ZyBpbiAqX3NpZ25hbGVkIHJvdXRpbmVzIHRoYXQgY291bGQgY2F1c2UgYnVzeS13YWl0aW5nIGluIHRoZQoJc2VsZWN0IGxvb3AuCgoJKiBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc29ja2V0LmM6CglDaGFuZ2VkIHNlbGVjdCBpbnRlcmZhY2UsIHNlcGFyYXRlZCB0aW1lb3V0cyBmcm9tIGZpbGUgZGVzY3JpcHRvcnMuCgoJKiBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaDoKCU1vdmVkIHByb2Nlc3Mgc3RydWN0dXJlIGRlZmluaXRpb24gdG8gcHJvY2Vzcy5oLgoJQWRkZWQgc3VzcGVuZC9yZXN1bWVfcHJvY2Vzcy4KCU1vdmVkIGhhbmRsZSB0YWJsZSBiYWNrIGludG8gdGhlIHByb2Nlc3Mgc3RydWN0dXJlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFkZGVkIFRFQiBpbiBpbml0X3RocmVhZCByZXF1ZXN0LgoKU2F0IE1heSAxNSAxMDo1Mjo1NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzY2VtdS9pbnN0ci5jOgoJVHJpZWQgdG8gYWRkIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBjcmFzaGluZyBvbiBhIHNlbGVjdG9yIGxvYWQgYmVjYXVzZQoJb2YgbWlzc2luZyBMRFQgc2hhcmluZyBiZXR3ZWVuIHRocmVhZHMgKHVudGVzdGVkKS4KCgkqIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvdGhyZWFkLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVNlcnZlciByZW9yZ2FuaXphdGlvbjoKCS0gbW92ZWQgcmVxdWVzdCBoYW5kbGVycyB0byB0aGUgc3BlY2lmaWMgQyBmaWxlcwoJLSBtb3ZlZCBoYW5kbGUgbWFuYWdlbWVudCB0byBoYW5kbGUuYwoJLSBtb3ZlZCBzZXJ2ZXIgcHJpdmF0ZSBpbmNsdWRlcyB0byBzZXJ2ZXIvIGluc3RlYWQgb2YgaW5jbHVkZS9zZXJ2ZXIvCgoJKiBNYWtlLnJ1bGVzLmluOiBHZXQgaW5jbHVkZSBmaWxlcyBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdC4KCkZyaSBNYXkgMTQgMTg6Mzk6MzcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy9tc2dib3guYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBXSU5fR2V0V2luZG93SW5zdGFuY2UgYnkgR2V0V2luZG93TG9uZ0EoR1dMX0hJTlNUQU5DRSksCglyZW1vdmVkIHVubmVjZXNzYXJ5IHdpbi5oIGluY2x1ZGVzLCBhZGRlZCBzeXNsZXZlbC5oIHRvIHF1ZXVlLmMuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIENCR2V0RHJvcHBlZENvbnRyb2xSZWN0IHRvIGJlIGNvbXBsaWFudCB3aXRoIFdpbmRvd3MgQVBJLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCB3aW4zMi9leGNlcHQuYzoKCUZpeGVkIGEgZmV3IGJ1Z3MsIGFuZCBpbXByb3ZlZCB0aGUgZXhjZXB0aW9uIG1hY3JvcyAoYmFzZWQgb24KCXN1Z2dlc3Rpb25zIGJ5IFNlcmdlaSBUdXJjaGFub3YpLgoKCSogZGxscy92ZXIvdmVyMTYuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGlwYy9kZGVfYXRvbS5jLCBpcGMvZGRlX2F0b21fdGVzdC5jLCBpcGMvc2htX2Jsb2NrLmMsIGlwYy9zaG1fZnJhZ21lbnQuYywgaXBjL3NobV9mcmFnbWVudF90ZXN0LmMsIGlwYy9zaG1fbWFpbl9ibGsuYywgaXBjL3NobV9zZW1hcGguYywgaXBjL3NobV9zZW1hcGhfdGVzdC5jLCBpcGMvd2luZV90ZXN0X3N0dWIuYywgcmVsYXkzMi9zbm9vcC5jLCByZWxheTMyL3V0dGh1bmsuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL2ludGVybmFsLmMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9maWx0ZXIuYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUveHRlcm0uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgY29udHJvbHMvdWl0b29scy5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGludmFsaWQgd2luZG93IHJlZmNvdW50IGhhbmRsaW5nIGluIFJEV19QYWludCgpLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4IGEgZGVhZGxvY2sgd2l0aCB0aGUgc3lzdGVtIG1lc3NhZ2UgcXVldWUgYnkgZW5zdXJpbmcgdGhlIHN5c3RlbSBtZXNzYWdlCglxdWV1ZSBpcyB1bmxvY2tlZCB3aGlsZSB0aGUgYWN0dWFsIG1lc3NhZ2UgaXMgYmVpbmcgcHJvY2Vzc2VkLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGVjayBpZiBpbiBkZXB0aC1jb252ZXJzaW9uIG1vZGUgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvciBtZXNzYWdlCglpbiBJRGlyZWN0RHJhd1BhbGV0dGVJbXBsX0dldEVudHJpZXMuCgpUaHUgTWF5IDEzIDE4OjUzOjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3QzRCwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCVJlcGxhY2VkIGFsbCB0aGUgTWVzYSBzcGVjaWZpYyBjb2RlIGJ5IEdMWCBjb2RlLiBTaG91bGQgd29yayBub3cgb24KCWFueSBPcGVuR0wgaW1wbGVtZW50YXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiA8VFRhcnJhbnRARXRub3RlYW0uSXQ+CglBZGRlZCBJdGFsaWFuIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBjb3VwbGUgb2YgbWVtY3B5IGVycm9ycy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCBmaXggdG8gaGVscCBuYXRpdmUgd2luOTUgUHJpbnREbGcgb24gdGhlIHdheS4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgaWYxNjMyL3dpbmFzcGkuc3BlYywgaW5jbHVkZS9hc3BpLmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBJbnNlcnRJbkFTUElDaGFpbiBhbmQgZml4ZWQgbWlub3IgdGhpbmdzLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHF1aXRlIGlsbCB3aW5kb3cgbG9ja2luZyBjb2RlLgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gaW5maW5pdGUgbG9vcCBpbiBDaGlsZFdpbmRvd0Zyb21Qb2ludEV4LgoKCSogY29udHJvbHMvbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CgktIHByZXZlbnQgY3Jhc2ggd2hlbiBHZXRNZW51RGVmYXVsdEl0ZW0gaXMgY2FsbGVkIG9uIGVtcHR5IG1lbnUKCS0gc2V0IGRlZmF1bHQgaXRlbSBvbiBzeXN0ZW0gbWVudQoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaDoKCUFkYXB0ZWQgZm9yIG5ldyByZWdpc3RlciBmdW5jdGlvbnMgc3VwcG9ydCAoRVNQX3JlZyBpbiByZWdpc3RlcgoJZnVuY3Rpb25zIG5vdyBwb2ludHMgYWZ0ZXIgdGhlIGFyZ3VtZW50cykuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCB0b29scy9idWlsZC5jOgoJV2luMzIgcmVnaXN0ZXIgZnVuY3Rpb25zIGNhbiBub3cgaGF2ZSBhcmd1bWVudHMuCglTaW1wbGlmaWVkIHJlbGF5IGRlYnVnZ2luZyBmb3IgcmVnaXN0ZXIgZnVuY3Rpb25zLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9kZXZpY2UuYzoKCVZ4RENhbGwgZnVuY3Rpb25zIGRvIG5vdCBuZWVkIHRvIGJlICdyZWdpc3RlcicuCgpXZWQgTWF5IDEyIDE2OjEwOjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBGaXhlZCBidWcgSSBpbnRyb2R1Y2VkIGluIHJlbGF5IGRlYnVnZ2luZy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL0F0dGljL2V4Y2VwdC5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHdpbjMyL2V4Y2VwdC5jOgoJQWRkZWQgbWFjcm9zIGFuZCBkZWZpbml0aW9ucyBmb3IgdXNpbmcgZXhjZXB0aW9uIGluc2lkZSBXaW5lIG9yCglXaW5lbGliIGNvZGUuCgoJKiBpbmNsdWRlL0F0dGljL2V4Y2VwdC5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9jcnRkbGwuYywgd2luMzIvaW5pdC5jOgoJTW92ZWQgc29tZSBleGNlcHRpb24gZGVmaW5pdGlvbnMgdG8gd2lubnQuaCBhbmQgbnRkZGsuaC4KCgkqIG1zZG9zL2RldmljZXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSBmb3IgdGhlIGNhbGxiYWNrIHByb2NzLgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oOiBBZGRlZCBFUlJPUl9zaWcuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4LgoKCSogbWlzYy93aW5zb2NrLmMsIGluY2x1ZGUvd2luc29jay5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXU09DSzMyL1dJTlNPQ0sgdXNlcyBTZXRMYXN0RXJyb3IoKSB0byBrZWVwIGl0cyBvd24gV1NBTGFzdEVycm9ycywKCXJlcGxhY2VkIGFsbCBwd3NpLT5lcnIgcmVmZXJlbmNlcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBDaGFuZ2VkIHNvbWUgZXJyb3IgaGFuZGxpbmcgYSBiaXQuCgoJKiB3aW5kb3dzL3dpbi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFuZXIgU3VzcGVuZC9SZXN0b3JlV25kc0xvY2ssIHdoaWNoIHNob3VsZCBmaXggc29tZSBzbG93bmVzcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJQWRkZWQgUnRsVW53aW5kIGluIG50ZGxsLCBhbmQgbWFkZSBrZXJuZWwzMiBzcGVjIGVudHJ5IGEgZm9yd2FyZCB0bwoJdGhlIG50ZGxsIG9uZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oOgoJQWRkZWQgaW1wb3J0IGRlY2xhcmF0aW9uIGZvciBXaW4zMiBidWlsdC1pbnMuCgpNb24gTWF5IDEwIDE0OjQ0OjQ4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaCwgcmVsYXkzMi9idWlsdGluMzIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGZvcndhcmRlZCBvcmRpbmFscyBpbiBidWlsdC1pbiBkbGxzLgoKU3VuIE1heSAgOSAxNjoxNToyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jOgoJRml4ZWQgcmVxdWVzdCBzaXplIGZvciBhbGxvY19jb25zb2xlIGFuZCBmcmVlX2NvbnNvbGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvQXR0aWMvZXhjZXB0LmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUltcHJvdmVkIGV4Y2VwdGlvbiBoYW5kbGluZy4KCUJhc2VkIG9uIHRoZSB3b3JrIG9mIFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0Pi4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVzZSBPcGVuRmlsZSgpIHRvIHRlc3QgZm9yIGZpbGUgZXhpc3RlbmNlLCBzbyB0aGF0IHRoZSBwYXRoIGdldHMKCXNlYXJjaGVkLgoKCSogc2VydmVyL3NlbGVjdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlc3RhcnQgaW50ZXJydXB0ZWQgc2VsZWN0KCkgKGhhcHBlbnMgd2l0aCAtcGcpLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgb2ZmLWJ5LW9uZSBidWcgaW4gbWVtb3J5IGFjY2VzcyBjaGVjay4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGRlYnVnIG91dHB1dCBmb3IgUmVnUXVlcnlJbmZvS2V5LgoKCSogZGVidWdnZXIvc3RhY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIChzaWxlbnQgYmFja3RyYWNlIG5vdCB0b3RhbGx5IHNpbGVudCwgY3Jhc2hlcwoJd2hlbiB0aGUgc3RhY2sgaXMgY29ycnVwdGVkIG9yIHNpbWlsYXIpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTYXQgTWF5ICA4IDE4OjM5OjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lY29uZi5saWJzL2F1dG9jb25mLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9hdXRvY29uZi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvYnJvd3NlcnMuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2RpcmJyb3dzZXIudGNsLCB0b29scy93aW5lY29uZi5saWJzL2dlbmVyYWwuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2dldGZpbGVuYW1lLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9tZXNzYWdlLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9tZXNzYWdlMi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvc2F2ZVJDLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lLWhhbGYuZ2lmLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYxLnRjbCwgdG9vbHMvd2luZWNvbmYudGNsOgoJSmVhbi1Mb3VpcyBUaGlyb3QgPHRoaXJvdEB1bml2LWJyZXN0LmZyPgoJQWRkZWQgZ3JhcGhpY2FsIGNvbmZpZ3VyYXRpb24gdG9vbCB3aW5lY29uZi50Y2wuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWdub3JlIEVTQ1slZGMgcmVwb3J0cyBnZW5lcmF0ZWQgYnkgOGJpdCBjb250cm9sIGNvZGVzLgoJT3BlbiBjb25zb2xlIGV2ZW4gaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSBpbiB0aGUgcHJvY2Vzcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBvZmYgYnkgMSBlcnJvciBpbiBzZWN0aW9uIGNvZGUgKGRpZCBub3QgcmV0dXJuIGxlbi0yIG9uIGJ1ZmZlcgoJb3ZlcmZsb3cgaW4gc29tZSBjYXNlcywgYnV0IGxlbi0xKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBwYWxldHRlIGhhbmRsaW5nIGZvciB0cnVlL2hpZ2gtY29sb3IgWDExLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgZXh0ZW5zaW9uIGhhbmRsaW5nIGluIExvYWRMaWJyYXJ5MTYuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvd2luLmgsIG9iamVjdHMvcmVnaW9uLmM6CglBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglSZWFycmFuZ2VkIFBBSU5UX1JlZHJhd1dpbmRvdygpIHNvIHRoYXQgaXQgZmlyc3QgcmVjdXJzaXZlbHkgdXBkYXRlcwoJaW52YWxpZCByZWdpb25zIGFuZCBvbmx5IHRoZW4gc3RhcnRzIHNlbmRpbmcgb3V0IG1lc3NhZ2VzLiBUaGlzIHNob3VsZAoJaGVscCB3aXRoIHJlZW50cmFuY3kgZHVyaW5nIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgbm93IGl0IG5lZWRzIGp1c3QKCW9uZSAob3Igbm9uZSkgc2NyYXRjaCByZWdpb24gZm9yIGFsbCB0aGVyZSBpcyB0byBkby4gQWxzbywgc21hbGwgZml4ZXMKCWZvciBTZXRXaW5kb3dQb3MoKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBBZGRlZCBjaGVjayBmb3IgbWlzc2luZyBfX2kzODZfXyBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90cmFjZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdG9vbHMvd3JjL3BhcnNlci55LCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvbWVtbG9ja2J5dGVzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHRvb2xzL2J1aWxkLmMsIG1pc2Mvd3NwcmludGYuYywgbWlzY2VtdS9pbnN0ci5jLCBtc2Rvcy9pb3BvcnRzLmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaXBjL2JpdF9hcnJheS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGVidWdnZXIvZGJnLnksIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBTlNJIEMgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhc3MgUFJPUFNIRUVUUEFHRSB0byBwcm9wZXJ0eXBhZ2UgZGlhbG9nIGFzIGxQYXJhbS4KCgkqIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgaXBjL2RkZV9hdG9tLmMsIGlwYy9nZW5lcmljX2hhc2guYywgaXBjL3NobV9ibG9jay5jLCBpcGMvc2htX21haW5fYmxrLmMsIGlwYy9zaG1fc2VtYXBoLmMsIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9zaWduYWwuYywgbWVtb3J5L2xkdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGlzcGRpYi5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkZWJ1Z2dlci9tc2MuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQU5TSSBDIGZpeGVzLgoKCSogd2luZG93cy9jYXJldC5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9yZWdpb24uYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgZ3JhcGhpY3MvcHNkcnYvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3BsaXQgb2ZmIHdpbmdkaTE2LmggZnJvbSB3aW5nZGkuaC4gIEFkZCBtYW55IG1vcmUgI2RlZmluZXMvdHlwZWRlZnMKCXRvIGJyaW5nIHdpbmdkaS5oIGFsbW9zdCB1cHRvIGEgY29tcGxldGUgTlQ0LjAgaW50ZXJmYWNlLgoJRml4IHJldHVybiB2YWx1ZSBvZiBTZXRSZWN0UmduKCkuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbnBvcy5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgI2luY2x1ZGUgIndpbmUvd2ludXNlcjE2LmgiIGFuZCB1c2UgInN0cnVjdCB0YWc/Pz8/IiBpbnN0ZWFkLgoKCSogZGVidWdnZXIvc3RhY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBXaW5lIGRlYnVnZ2VyIGJhY2t0cmFjZS4gTmV3IGZlYXR1cmVzOgoJLSBEaXNwbGF5cyBlYnAsIGluIGNhc2UgeW91IHdhbnQgdG8gY2hlY2sgc3RhY2tmcmFtZXMgbWFudWFsbHkKCS0gRGV0ZWN0cyBmYXIgY2FsbHMgZXZlbiB3aGVuIHdpbmRvd3MgYXBwcyBkb24ndCBtYXJrIHRoZW0KCS0gVHJhY2tzIENhbGxGcm9tMTYvQ2FsbFRvMTYgcmVsYXlpbmcgKHRodW5raW5nKQoKCSogbG9hZGVyL2VsZmRsbC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglCdWdmaXg6IGdldF9zb2Jhc2VuYW1lIHdhcyBvZmYgYnkgb25lIHBvaW50ZXIgaW5jcmVtZW50LgoKCSogbXVsdGltZWRpYS9pbml0LmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglGaXhlZCBpbXBsaWNpdCB0eXBlIHdhcm5pbmcuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVmFsdWVzIHJldHVybmVkIGZyb20gUHRJblJlY3QgYW5kIExCX0lURU1GUk9NUE9JTlQgYXJlIHJldmVyc2VkLgoKCSogb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvb2xlb2JqLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglTZWNvbmQgcGFydCBvZiB0aGUgT0xFIGRhdGFjYWNoZSBpbXBsZW1lbnRhdGlvbi4KCgkqIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQyMS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBET1MgTGlzdCBvZiBMaXN0cyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZGVkIHRoZSBiZWdpbm5pbmdzIG9mCgl0aGUgRE9TIGRldmljZSBzdHJ1Y3R1cmVzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBpbmNsdWRlL3dpbnJlZy5oLCBtaXNjL3JlZ2lzdHJ5LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXhlcy4KCgkqIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgR2V0SEdsb2JhbEZyb21TdHJlYW0uCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgVEhSRUFEX0ZyZWVUSERCIGFzIHNlcnZpY2UgdGhyZWFkIGNhbGxiYWNrLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvdGltZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBUSU1FUl9Td2l0Y2hRdWV1ZS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRm9ybWF0IG91dHB1dCBpbiBERUJVR19FeGFtaW5lTWVtb3J5IGZvciAiZCIgYW5kICJ4IiBub3QgdG8gZXhjZWVkIDgwCgljaGFycy4KCgkqIGxvYWRlci9zaWduYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdG9wIHdpbmVsaWIgcHJvZ3JhbXMgb24gZmF1bHQgaW5zdGVhZCBvZiBlbmRsZXNzIGZhdWx0bG9vcGluZy4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglSdW4gbGRjb25maWcgaW4gbWFrZSBpbnN0YWxsIGlmIHVzaW5nIC0tZW5hYmxlLWRsbC4KCUNsZWFuZWQgdXAgdW5pbnN0YWxsX2xpYiBhcyB3ZWxsLgoKCSogb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmgsIHJlbGF5MzIvb2xlMzIuc3BlYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9tZW1sb2NrYnl0ZXMuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSVN0b3JhZ2Ugc3VwcG9ydGVkIGJ5IGFuIGltcGxlbWVudGF0aW9uIG9mCglJTG9ja0J5dGVzIG9uIHRvcCBvZiBhbiBIR0xPQkFMLgoKCSogZmlsZXMvcHJvZmlsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBmcm9tIEdldFByaXZhdGVQcm9maWxlU2VjdGlvbkEuCglDb3B5L2NvbnZlcnQgYmFjayB0aGUgYnVmZmVyIGluIEdldFByaXZhdGVQcm9maWxlU2VjdGlvblcuCglSZXBsYWNlIHNvbWUgb3V0cHV0IHBvaW50ZXJzIHN0ci93c3RyLT5wdHIgaW4ga2VybmVsMzIuc3BlYy4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYnVnZml4ZXM6CgktIEluaXRpYWxpemUgcHJvY2VzcyBjcnN0IGZvciAxNi1iaXQgcHJvY2Vzc2VzLgoJLSBEb24ndCBjcmFzaCBkdWUgdG8gdW5pbml0aWFsaXplZCBzdGFjayBmcmFtZXMgaW4gV2luZUxpYi4KCS0gTWFwIHN5c3RlbSBETExzIGJlZm9yZSBjYWxsaW5nIFVzZXJTaWduYWxQcm9jLgoJLSBTaWduYWwgVVNJR19QUk9DRVNTX0NSRUFURSBvbmx5ICphZnRlciogdGhlIGVudl9kYiBpcyBmaWxsZWQuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIENhbGxvdXQgcm91dGluZXMgZGlyZWN0bHkgd2hlbiB1c2luZyBidWlsdGluIFVTRVIuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBhbGwgUEUgbW9kdWxlcyB3ZXJlIG1hcmtlZCAnaW50ZXJuYWwnLgoKCSogaW5jbHVkZS9kY2UuaCwgb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGVjayBmb3IgYnVzeSBEQ0UgbW92ZWQgdG8gRENIb29rMTYoKS4KCgkqIGluY2x1ZGUvd2luLmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluaXRpYWxpemUgV0lOX0NyaXRTZWN0aW9uIGVhcmxpZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGluY2x1ZGUvdHJhY2tiYXIuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHRoZSB0aW1lciB0aGF0IHdhcyB1c2VkIHRvIHF1ZXVlIFRSQUNLQkFSX1JlZnJlc2ggY2FsbHMuCglSZW1vdmVkIGFsbCBkaXJlY3QgY2FsbHMgdG8gVFJBQ0tCQVJfUmVmcmVzaCAoZXhjZXB0IGZyb20gd2l0aGluIHRoZQoJV01fUEFJTlQgaGFuZGxpbmcgc2VjdGlvbikgYW5kIHJlcGxhY2VkIHRoZW0gYnkgY2FsbHMgdG8KCUludmFsaWRhdGVSZWN0LgoJRml4ZWQgYSBidWcgaW4gdGhlIFRSQUNLQkFSX1NldFBvcyBmdW5jdGlvbi4KCUZpeGVkIHRoZSBiZWhhdmlvciBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIG1vdXNlIGlucHV0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgdG9vbGJhciBtdWx0aXJvdyBidXR0b24gbGF5b3V0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBXTV9HRVRURVhUIGFuZCBXTV9HRVRURVhUTEVOR1RIIGluIHRvb2x0aXBzLgoKCSogb2xlL29sZTJkaXNwLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgT2xlVHJhbnNsYXRlQ29sb3IuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgcmV0dXJuIHZhbHVlIG9mIEdldEtleWJvYXJkU3RhdGUgYW5kIFNldEtleWJvYXJkU3RhdGUgZnJvbQoJVk9JRCB0byBCT09MLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglQcmV2ZW50ZWQgTElTVEJPWF9SZXBhaW50SXRlbSBmcm9tIHJlcGFpbnRpbmcgYSBub24gdmlzaWJsZSBpdGVtLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvLgoKCSogd2luZG93cy9jbGFzcy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglCdWdmaXggZm9yIFRSQUNFIGluIFVucmVnaXN0ZXJDbGFzcy4KCldlZCBNYXkgIDUgMTM6MjA6NTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvQXR0aWMvcHJvcHNoZWV0Lmg6IE5vIGxvbmdlciBuZWNlc3NhcnkuCgpUdWUgTWF5ICA0IDE2OjU1OjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmMsIGluY2x1ZGUvZGNlLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGVjayBpZiBEQyBpcyBidXN5IGJlZm9yZSBkZWxldGluZyBpdC4KCgkqIHdpbjMyL25ld2Zucy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0TWFpbHNsb3RJbmZvIGlzIHN1cHBvc2VkIHRvIGNoZWNrIGZvciBwb2ludGVyIHZhbGlkaXR5LgoKCSogc2VydmVyL3NlbGVjdC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBvc3NpYmxlIGNyYXNoIGluIHNlbGVjdF9sb29wKCkgZml4ZWQuCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB2YXJpb3VzIHN0dXBpZCBidWdzIGluIHNlcnZpY2VzIHRocmVhZCByb3V0aW5lcy4KCUFkZGVkIFNFUlZJQ0VfRXhpdCByb3V0aW5lIHRvIGtpbGwgdGhlIHNlcnZpY2VzIHRocmVhZC4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUludmVydGVkIGNsYXNzL2NoYW5uZWwgaW4gX18oU0VUfEdFVClfREVCVUdHSU5HIG1hY3Jvcy4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZCgpLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgUGxheVNvdW5kMTYsIHNuZFBsYXlTb3VuZDE2LgoKCSogaWYxNjMyL3RodW5rLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZXMgd2lucHJvYyBkZWFkbG9jayBmb3Igd2luMTYuCgpNb24gTWF5ICAzIDA5OjQ0OjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBkZWFkbG9jayhzKSBpbiBtZXNzYWdlIHNlbmRpbmcuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJY2xlYW5lZCB1cCBkZWJ1ZyBjaGFubmVscyB0byB1c2UgZGVmYXVsdCBvbmUgKG1tc3lzKQoJbW9yZSBjb252ZXJzaW9ucyBmcm9tIG1peGVyWFhYVyBhbmQgbWl4ZXJYWFhYMTYgdG8gbWl4ZXJYWFhYQQoJZml4ZWQgY2FsbGJhY2sgYnVnIGluIG1pZGlTdHJlYW0gZnVuY3Rpb25zCglmaXhlZCBjb21waWxhdGlvbiBidWcgd2l0aCBlZ2NzCgljaGFuZ2VkIHRvIHRoZSBuZXcgZGVidWcgY2hhbm5lbCBpbnRlcmZhY2UKCgkqIG11bHRpbWVkaWEvbW1hdXguYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglzbWFsbCByYW5nZSBmaXhlcyBmb3IgT1NTIGRyaXZlcgoJY2hhbmdlZCB0byB0aGUgbmV3IGRlYnVnIGNoYW5uZWwgaW50ZXJmYWNlCgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZmlyc3QgKHdvcmtpbmcpIHNob3QgYXQgT1NTIG1peGVyIGxvdyBsZXZlbCBpbnRlcmZhY2UKCWNoYW5nZWQgdG8gdGhlIG5ldyBkZWJ1ZyBjaGFubmVsIGludGVyZmFjZQoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIG9mZi1ieS1vbmUgb3JkaW5hbHMgaW4gTVBSLgoJQWRkZWQgTVBSX0FsbG9jL1JlQWxsb2MvRnJlZSAoTVBSLjIyLTI0KS4KCgkqIGxvYWRlci9tb2R1bGUuYywgaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVsZWFzZSBXaW4xNkxvY2sgaW4gV2luRXhlYzE2LCBDYWxsUHJvY1tFeF0zMldfMTYuCgoJKiBsb2FkZXIvbWFpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWQgc3lzdGVtIERMTHMgaW50byBXaW5lTGliIGFwcGxpY2F0aW9ucy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BzLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIHVwZGF0ZSB0byB0aGUgUG9zdFNjcmlwdCBlbmNvZGluZyB2ZWN0b3IuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6IEJ1ZyBmaXhlcy4KClN1biBNYXkgIDIgMTk6MTA6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBhIGZldyBtb3JlIGluaXRpYWxpc2F0aW9ucyB0byB0aGUgbmV3IHByb2Nlc3MgY29udGV4dC4KCgkqIGxvYWRlci90YXNrLmM6IERvbid0IGluaXRpYWxpc2UgdGhlIHN0YWNrcyBmb3IgMzItYml0IHByb2Nlc3Nlcy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBPbmx5IGNoZWNrIG51bWJlciBvZiB0YXNrcyBhZnRlciBmaXJzdCBtZXNzYWdlLgoJVXNlIGEgMTYtYml0IG1vZHVsZSBmb3IgY3JlYXRpbmcgdGhlIGluaXRpYWwgdGFzay4KCgkqIGluY2x1ZGUvYXV0aG9ycy5oLCBBVVRIT1JTOgoJVXBkYXRlZCBhdXRob3JzIGxpc3QgZnJvbSB0aGUgQ2hhbmdlbG9nLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91CgloYXZlIGJlZW4gbGVmdCBvdXQuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWdnaW5nIGludGVyZmFjZSAoZG9uZSB3aXRoIHRoZSBoZWxwIG9mIHRoZQoJc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrIFN0cmlkdmFsbCkuCglTb21lIGNoYW5nZXMgdG8gdGhlIGluaXRpYWxpc2F0aW9uIHNlcXVlbmNlIGZvciAzMi1iaXQgcHJvY2Vzc2VzLgoKCSogKi8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1Z2dpbmcgaW50ZXJmYWNlIChkb25lIHdpdGggdGhlIGhlbHAgb2YgdGhlCglzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsgU3RyaWR2YWxsKS4KCgkqIHRvb2xzL21ha2VfZGVidWcsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWd0b29scy5oLCBtaXNjL21haW4uYzoKCU1pc2MgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQWRkZWQgY2hlY2sgZm9yIC1sbW1hcCBmb3IgT1MvMi4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW4gdGhlIE9MRSBzdG9yYWdlIGltcGxlbWVudGF0aW9uLCBhZGRlZCBhIG5ldyBzZXQgb2YKCXRyYWNlIHN0YXRlbWVudHMgZm9yIHRoZSBPTEUgc3RvcmFnZSByZWxhdGVkIG1ldGhvZHMgYW5kIGludHJvZHVjZWQgYQoJbmV3IGRlYnVnIGNoYW5uZWwgZm9yIHRoZSBzdG9yYWdlIHN1YnN5c3RlbS4KCgkqIG11bHRpbWVkaWEvdGltZS5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL3Nwb29sZXIuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHJlZHVuZGFudCBpbmNsdWRlIG9mIHdpbmJhc2UuaCBmcm9tIHdpbnVzZXIxNi5oLgoJTW92ZWQgdHlwZXMgZnJvbSB3aW5iYXNlLmggdG8gd2ludXNlcjE2LmggLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBkZWZhdWx0IGl0ZW0gaGFuZGxpbmcKCS0gc21hbGwgZHJhd2luZyBmaXhlcwoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglNb3JlIGltcGxlbWVudGF0aW9uIG9mIFByaW50RGxnQS4KCUNvbnZlcnNpb24gb2YgcmVzb3VyY2UgaWRlbnRpZmllcnMgb2YgUHJpbnQzMiB3aW5kb3cgdG8gY29tcGx5IHRvIHRoZQoJTSQgbnVtYmVyaW5nLgoKCSogc2VydmVyL3RocmVhZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNyYXNoIGlmIHF1ZXVpbmcgYW4gQVBDIG9uIGEgdGhyZWFkIHRoYXQgZG9lc24ndCB3YWl0LgoKCSogd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL21lc3NhZ2UuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIFNFUlZJQ0VTIGNhbGxiYWNrIHRvIGltcGxlbWVudCBXaW5kb3dzIHRpbWVycy4KCVRpbWVyIGV4cGlyYXRpb24gaGFuZGxpbmcgcmVtb3ZlZCBmcm9tIEVWRU5UX1dhaXROZXRFdmVudCBsb29wLgoKCSogbWVtb3J5L2hlYXAuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2FsbCBTZXRMYXN0RXJyb3IgaW4gSGVhcENvbXBhY3QoKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHByb3RvdHlwZSBmb3IgVHJ5RW50ZXJDcml0aWNhbFNlY3Rpb24uCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglNYWtlIGFsbCBzdHJ1Y3R1cmVzIHBhY2tlZCBhbmQgcmVtb3ZhbCBvZiBzb21lIFdJTkVfUEFDS0VELgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglQdXNoYnV0dG9ucyBzaG91bGQgb25seSBiZSByb3VuZGVkIGluIFdpbjMxIGxvb2suCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBkZWZhdWx0IGl0ZW0gaGFuZGxpbmcKCS0gc21hbGwgZHJhd2luZyBmaXhlcwoKCSogd2luZG93cy93aW5wb3MuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiB1bmJhbGFuY2VkIHdpbmRvd3MgbG9jay91bmxvY2sgc2VxdWVuY2UgaW4KCVdJTlBPU19BY3RpdmF0ZU90aGVyV2luZG93LgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaDogZW5obWV0YWZpbGUgYWRkZWQKCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9tY2lhbmltLnNwZWMsIHJlbGF5MzIvbWNpYXZpLnNwZWMsIHJlbGF5MzIvbWNpY2RhLnNwZWMsIHJlbGF5MzIvbWNpc2VxLnNwZWMsIHJlbGF5MzIvbWNpd2F2ZS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWMsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBsb2FkZXIvbWFpbi5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWEsIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCB3aW5lLmluaToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBnb3QgcmlkIG9mIGFsbCB0aGUgaW50ZXJuYWwgTU0gdHdlYWtzIHRvIGxvYWQgYnVpbHRpbiBNQ0kKCSAgZHJpdmVycy4gVGhleSBhcmUgYWxsIHNlZW4gYXMgZHJpdmVycywgbG9hZGVkIGFzIERMTHMgYW5kIHN0YW5kYXJkCgkgIG1vZHVsZSBsb2Fkb3JkZXIgaXMgdXNlZCB0byBrbm93IHdoaWNoIHR5cGUgdG8gdXNlIChidWlsdGluIHZzCgkgIG5hdGl2ZSkuCgktIGZpcnN0IGZ1bGwgd29ya2luZyBpbXBsZW1lbnRhdGlvbiBvZiBtbVRocmVhZD8/PyBmdW5jdGlvbnMgKHRvCgkgIHN1cHBvcnQgZ3JhY2VmdWxseSBuYXRpdmUgTUNJIGRyaXZlcnMpLgoJLSBzdXBwb3J0IG9mIG1tU2hvd01NQ1BMUHJvcGVydHlTaGVldC4KCS0gZml4IG9mIHNvbWUgaGVhcCB2YWxpZGF0ZSBidWdzICh0aGFua3MgdG8gVWxyaWNoIGZvciByZXBvcnRpbmcgdGhlbSkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggQ3JlYXRlUHJvY2Vzc0EgdG8gaW1wbGVtZW50IGNvcnJlY3QgYWN0aW9ucyBvbiBhbWJpZ3VvdXMgY29tbWFuZAoJbGluZSBuYW1lcyAodHJ5IGxvbmdlciBhbmQgbG9uZ2VyIHN0cmluZ3MpLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi8uY3ZzaWdub3JlLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9tYXBwaW5nLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIEVuaGFuY2VkIE1ldGFGaWxlIGRyaXZlci4KCgkqIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9vbGVvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9MRSBvYmplY3QgZGVmYXVsdCBoYW5kbGVyIGFuZCBkYXRhIGNhY2hlLgoKCSogaW5jbHVkZS9lbmhtZXRhZmlsZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVNldmVyYWwgaW1wcm92ZW1lbnRzIHRvIEVuaGFuY2VkIE1ldGFGaWxlIHBsYXliYWNrLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJT25seSB0cnkgdG8gYXBwZW5kICIuZGxsIiBpZiBhIGxpYnJhcnkgaXMgbG9hZGVkIGltcGxpY2l0ZWx5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4IFRSQUNFIGZvcm1hdHRpbmcgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhIHNtYWxsIHN5bnRheCBwcm9ibGVtLgoKCSogd2luZG93cy93aW5wb3MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGJldHRlciBzdHVicyBmb3IgR2V0L1NldCBzcGVjaWFsIChQcm9nbWFuL1Rhc2ttYW4pIHdpbmRvdyBmdW5jdGlvbnMKCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG5ldyBTZW5kTWVzc2FnZUNhbGxiYWNrVwoJLSBzb21lIGZpeG1lJ3MgZm9yIG1pc3NpbmcgQTwtPlcgY29udmVyc2lvbgoKCSogd2luZG93cy9kaWFsb2cuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiB1bmJhbGFuY2VkIHdpbmRvd3MgbG9jay91bmxvY2sgc2VxdWVuY2UgaW4gR2V0TmV4dERsZ1RhYkl0ZW0uCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQnVnZml4IGZvciBFbnVtUHJpbnRlcnMgbGV2ZWwgMi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb3JyZWN0IGxvZ2ljIGluIEdldEtleU5hbWVUZXh0LgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCArc25vb3AgZnJvbSBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMuCgpTYXQgTWF5ICAxIDEwOjQxOjAyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTG9hZEltYWdlVyBmaXhlZCBmb3IgaGljb2xvciBkaXNwbGF5cy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTUNJX0FOSU1fT1BFTl9QQVJNU1cgc2hvdWxkIGJlIExQQ1dTVFIsIE1DSV9EZWZZaWVsZFByb2Mgc2hvdWxkIGJlIFdJTkFQSS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBIRUFERVJfSW5zZXJ0SXRlbUEgYW5kIEhFQURFUl9JbnNlcnRJdGVtVyBudWxsIHBvaW50ZXIgY2hlY2tpbmcKCXRvIGhhbmRsZSB3aWRlIGNoYXJhY3RlciBzdHJpbmdzIHByb3Blcmx5LiAgRml4IG9mIG91ciBwcmV2aW91cyBwYXRjaAoJZm9yIG51bGwgcG9pbnRlciBjaGVja2luZy4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL21lbWxvY2tieXRlcy5jLCBvbGUvb2xlMnN0dWJzLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIENyZWF0ZUlMb2NrQnl0ZXNPbkhHbG9iYSwgR2V0SEdsb2JhbEZyb21JTG9ja0J5dGVzIGFuZAoJdGhlIElMb2NrQnl0ZXMgaW50ZXJmYWNlIGJhc2VkIG9uIGFuIEhHTE9CQUwuCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGJ1ZyBpbiBDb1JlZ2lzdGVyQ2xhc3NPYmplY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgc29tZSBmbGlja2VyaW5nIHdoZW4gaW5zZXJ0aW5nIG9yIGRlbGV0aW5nIGJ1dHRvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBMSVNUVklFV19HZXRJdGVtQ2hhbmdlcygpIHRvIHBlcmZvcm0gYSBtb3JlIGNvbXBsZXRlIGNvbXBhcmlzb24KCWJldHdlZW4gbHBJdGVtIGFuZCBscExWSXRlbS4gIE5vdyBjb21wYXJlcyB0aGUgcHN6VGV4dCBzdHJpbmcgb2YgdGhlCglscEl0ZW0gYW5kIGxwTFZJdGVtIHN0cnVjdHMuICBGaXhlcyBhIGJ1ZyB3aGVyZSB0aGUgb2xkIGFuZCBuZXcgaXRlbQoJaGF2ZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGJ1dCB0aGVpciB0ZXh0IGRpZmZlcnMgYW5kIEdldEl0ZW1DaGFuZ2VzKCkKCWNvbXBhcmVzIHRoZW0gYXMgZXF1YWwuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5oLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgcGFnZXMgZHluYW1pY2FsbHkgZnJvbSBhCglwcm9wZXJ0eSBzaGVldC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgZ290b3MgZnJvbSB0aGUgV25kUHJvY3MsIGFsd2F5cyB1c2UgYSBzbWFsbCB3cmFwcGVyIHRoYXQKCWxvY2tzIHRoZSB3aW5kb3csIGNhbGxzIHRoZSByZWFsIHduZHByb2MsIHVubG9ja3MgdGhlIHdpbmRvdy4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBkZWZhdWx0IG1lbnUgaXRlbS4KCgkqIHdpbjMyL2NvZGVfcGFnZS5jLCBtaXNjL2RkZW1sLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHR5cG8uCgoJKiB3aW5kb3dzL3F1ZXVlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIG1pc3NpbmcgTGVhdmVDcml0aWNhbFNlY3Rpb24uCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHdyb25nIHVzYWdlIG9mIFdJTl9GaW5kV25kUHRyL1dJTl9SZWxlYXNlV25kUHRyIGluCglUcmFuc2xhdGVNRElTeXNBY2NlbDE2LgoKCSogbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgb2ZmLWJ5LW9uZSBidWcgaW4gYXN5bmMgb3V0cHV0IGJ1ZmZlcnMuCgoJKiBvbGUvb2xlMi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGxpdHRsZSBEcmFnIGFuZCBEcm9wIGJ1Zy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTW9uIEFwciAyNiAxNDo1ODo1OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGF1dG9jb25mIGNoZWNrIGZvciAiaW5saW5lIi4gWW91IGNhbiBub3cgdXNlIGl0LCBpdCB3aWxsIGJlCglkZWZpbmVkIHRvIChlbXB0eSkgZm9yIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBoYXZlIGl0LgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURvbid0IGluY2x1ZGUgYWxsb2NhLmguCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZSB0byByZWZsZWN0IHJlY2VudCBjaGFuZ2VzIGFuZCBkaXNjdXNzaW9ucy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVRoZSBsb2FkIG9yZGVyIHBhcnNlciBzaG91bGQgbm90IGFsd2F5cyBjb21wbGFpbiBhYm91dCBleHRlbnNpb25zLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gYWxpZ24gbWFnaWMgYnV0dG9ucyByaWdodAoJLSBzaG9ydGN1dHMgYWxpZ25tZW50IHdvcmtpbmcgYWdhaW4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkaW5nIG9mIG5hdGl2ZSBORSBkbGxzLgoKU3VuIEFwciAyNSAxOTowNDo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzogRml4ZWQgX19idWlsdGluX3JldHVybl9hZGRyZXNzIGFyZy4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBjb21wYWJpbGxpdHkuCgoJKiAqLyo6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQnVpbHQtaW4gZGxscyBub3cgaGF2ZSByZXNvdXJjZXMgYXR0YWNoZWQgdmlhIHRoZSBQRS1oZWFkZXIgbGlrZQoJbm9ybWFsIGRsbHMuIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIHRoZSByZXNvdXJjZSBBUEkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglVc2UgJEhPTUUgaW5zdGVhZCBvZiBnZXRwd3VpZCBmb3IgdXNlcidzIGhvbWUgZGlyZWN0b3J5LgoJRml4ZWQgbWVzc2VkIHVwIGluZGVudGF0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVc2UgJEhPTUUgaW5zdGVhZCBvZiBnZXRwd3VpZCBmb3IgdXNlcidzIGhvbWUgZGlyZWN0b3J5LgoKCSogKi8qLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCSNwcmFnbWEgcGFjayg/KSBjaGFuZ2VkIHRvICNpbmNsdWRlICIqcGFjayouaCIKCgkqIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgc29tZSBtaXNzaW5nICNkZWZpbmVzIEkndmUgcnVuIGFjcm9zcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglJZ25vcmUgdHJhaWxpbmcgZG90cyBvbiBmaWxlIG5hbWVzLgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIHBvc3NpYmlsaXR5IHRvIGxldCB0aGUgaW50ZXJuYWwgZGVidWdnZXIgdXNlIGEgc2VwYXJhdGUKCWhlYXAuIE5vdCBlbmFibGVkIGJ5IGRlZmF1bHQsIGNoYW5nZSAjaWYgaW4gaW5jbHVkZS9kZWJ1Z2dlci5oIHRvIHVzZQoJdGhpcyAodGhlIGhlYXAgYWxsb2NhdG9yIGlzIHZlcnkgc2xvdykuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJd2luZS5jb25mIHNob3VsZCBub3Qgb3ZlcnJ1bGUgY29udGVudCBvZiBidXJuZWQgaW4gZGF0YSBpbgoJbG9hZG9yZGVyLmMuCgoJKiBncmFwaGljcy9tYXBwaW5nLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJU2V0TWFwTW9kZSBzaG91bGQgbm90IHJlc2V0IHRoZSB3aW5kb3cgYW5kIHZpZXdwb3J0IG9yaWdpbnMgdG8gMC4KCgkqIHRvb2xzL3dpbmVjb25mOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IHRvIGF1dG9tYXRpY2FsbHkgY29weSBwYXJ0IG9mIHdpbmUuaW5pIGludG8gZ2VuZXJhdGVkIGZpbGUuCglTbWFsbCBwZXJsIGVuaGFuY2VtZW50ICh3b3JrIGluIHN0cmljdCBtb2RlKS4KCVNtYWxsIHVwZGF0ZXMgaW4gaGV1cmlzdGljcy4KCgkqIHdpbmUuaW5pOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZ3JhZGVkIHRvIGhhdmUgYSBkZWNlbnQgbXVsdGltZWRpYSBETExzIGNvbmZpZ3VyYXRpb24uCgoJKiB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEZpeGVkIGEgY291bnRpbmcgYnVnIGluIHRoZSB3aW4zMiBjb3VudCBhbmQgc29ydCByb3V0aW5lLgoJLSBGaXhlZCBzb3J0IG9yZGVyIG9mIHJlc291cmNlcyAobXVzdCBiZSBuYW1lIGJlZm9yZSBvcmRpbmFsKS4KCS0gU2h1ZmZsZWQgYSBjb3VwbGUgb2YgZ2xvYmFsIHZhcmlhYmxlcyBzbyB0aGF0IGJ1aWx0LWluIGRsbHMgbm93IGNhbgoJICBsb2FkIHJlc291cmNlcyB0aHJvdWdoIHRoZSBwcm9wZXIgUEUgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5yZWcuaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUFkZGVkIHN1cHBvcnQgZm9yIHN0cmljdCBoYW5kbGVzLiBPbmx5IHdvcmtzIG9uIG1hY2hpbmVzIHdoZXJlCglzaXplb2YoVUlOVCkgPT0gc2l6ZW9mKHZvaWQqKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluaXRpYWxpemUgcHJvY2VzcyBjcml0aWNhbCBzZWN0aW9uIGluIHRoZSBjb3JyZWN0IHByb2Nlc3MgY29udGV4dC4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXYXJuIGlmIHdyb25nIHByb2Nlc3MgdHJpZXMgdG8gZW50ZXIgY3JpdGljYWwgc2VjdGlvbi4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBSZWluaXRpYWxpemUvVW5pbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uCgkoc3RpbGwgbm90IHF1aXRlIGNvcnJlY3QpLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRlYnVnLmggbXVzdCBiZSBsYXN0IGluIGxpc3Qgb2YgaW5jbHVkZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJldHVybiAzMi1iaXQgbW9kdWxlIGluIEdldE1vZHVsZUhhbmRsZTE2KCkgaWYgYXBwcm9wcmlhdGUuCgoJKiBtc2Rvcy9pbnQyZi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gc3RhdHVzIHdhcyByZWFkIHdpdGggY2Qtcm9tIHRyYXkgb3Blbi4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBidWcgaW4gbXNnIGNvbnZlcnNpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBjcmFzaCB3aGVuIG5NaW5SYW5nZSA+IG5NYXhSYW5nZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBtYW5pZmVzdCBjb25zdGFudHMgZm9yIFF1ZXVlIFN0YXR1cyBmdW5jdGlvbnMgKFFTXz8/Pz8pLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2VkaXQuYywgd2luZG93cy9tZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTW9yZSBhcHByb3ByaWF0ZSBkZWZhdWx0IHNpemUgZm9yIGZvbnRzIHdpdGggaW52YWxpZCBzaXplcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIFNldENvbHVtbldpZHRoIGZvciBMaXN0VmlldyBjb250cm9sLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWc6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBZGRlZCBuZXcgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wcm92ZWQgVkVSU0lPTl9HZXRWZXJzaW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGV0ZXIgQm9ydGFzIDxwZXRlckBpZG9uZXguc2U+CglBZGRlZCBTd2VkaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wc2Rydi9SRUFETUUsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZW5lcmFsIHRpZHkgdXAgb2YgdGhlIE1ldGFGaWxlIGRyaXZlciAtIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcKCWdvZXMgdGhyb3VnaCB0aGUgRENGdW5jcyB0YWJsZS4KCgkqIG1pc2MvdG9vbGhlbHAuYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIGEgc3R1YiBmb3IgR2xvYmFsTWFzdGVySGFuZGxlLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCU11Y2ggbmljZXIgd2F5IHRvIHNlbGVjdCB3aW5lJ3MgbG9jYXRpb24uCglPcHRpb24gdG8gZGlzYWJsZSBjcmVhdGlvbiBvZiBkZWJ1Z2dpbmcgb3V0cHV0LgoJRGVidWdnaW5nIG91dHB1dCBpcyBub3cgY3JlYXRlZCBpbiBkaXJlY3Rvcnkgc2NyaXB0IHdhcyBzdGFydGVkIGluLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggbWFuYWdlZCBtb2RlLCB3aGVyZSBwb3B1cCB3aW5kb3dzIHdpdGggYSBXU19ETEdGUkFNRQoJc3R5bGUgd2VyZSBhcHBlYXJpbmcgd2l0aCBhIHRpdGxlIGJhci4gQWNjb3JkaW5nIHRvIHRoZSBkb2NzIGZvcgoJV1NfRExHRlJBTUUgYSB3aW5kb3cgd2l0aCB0aGlzIHN0eWxlIGNhbm5vdCBoYXZlIGEgdGl0bGUgYmFyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBEbGxPdmVycmlkZXMgZnJvbSB3aW5lLmluaSBhcyBkZWZhdWx0cyBhbHNvIGluCglsb2Fkb3JkZXIuYyAobWVyZ2VkIGluIHNvbWUgTU0gZGxscyBsaW5lcyBmcm9tIEVyaWMgUG9ldWNoKS4KCgkqIHdpbmRvd3MvdGltZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJvZ3VzIGluZmluaXRlIGV4cGlyYXRpb24gdGltZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCS0gY29uc29saWRhdGUgYm90aCBjYXNlcyBvZiAhcGVuZGluZyBpbiBXYWl0TmV0RXZlbnQKCS0gc2VsZWN0KCkgcmV0dXJucyAtMSBub3QgMCBvbiBlcnJvciBpbiBXYWl0TmV0RXZlbnQKCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvaGVhcC5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgSGVhcFZhbGlkYXRlIHRocmVhZHNhZmUsIGFuZCBhZGRlZCBzb21lIG1hY3JvcyB0byB0cmFjayBjYWxsZXJFSVAKCWEgbGl0dGxlIGJldHRlci4KCUFkZGVkIEhFQVBfeHJlYWxsb2MuCgpTYXQgQXByIDI0IDEyOjAyOjE1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglhdXRvY29uZiBmaXhlcyBhbmQgY2xlYW51cHMgKGNoZWNrIGZvciBkbG9wZW4oKSBpbiBsaWJjIHRvbykuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL3N0Z19zdHJlYW0uYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIENyZWF0ZVN0cmVhbU9uSEdMT0JBTC4KCgkqIG9sZS9jb21wb2JqLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMZXQgQ29TZXRTdGF0ZSgpIGFjY2VwdCBzdGF0ZSA9PSBOVUxMLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFkZSBpbnRlcm5hbCBmb3JtYXQgbW9yZSBjb21wYXRpYmxlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgY29udHJvbHMvY29tYm8uYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggbG9ja2luZyB3aXRoIHByb3BlciBjYWxscyB0byBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgbWFsbG9jL2ZyZWUgZm9yIGV2ZXJ5IG1peGluZyBvcGVyYXRpb24sIHVzZSB0aGUgc2FtZSBidWZmZXIgb3ZlcgoJaW5zdGVhZC4uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJlanlAd3BpLmVkdT4KCUhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XIG5vdyB0cmVhdCBudWxsIHBvaW50ZXJzIHRvCgl0ZXh0IHN0cmluZ3MgYXMgbnVsbCBzdHJpbmdzLCBhcyBXaW5kb3dzIGRvZXMuICBGaXhlcyB3aW5lIGNyYXNoIG9uCglzdGFydHVwIG9mIEN1dGVGVFAuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2V0ICh3aGVuIHJlZ2lzdHJ5IGxvYWRlZCkgZGF0YSB0byAiXDAiIGFuZCBsZW5ndGggdG8gMiBpbiBlbXB0eQoJc3RyaW5nIHZhbHVlIGNhc2UsIGluIHBsYWNlIG9mIHNldHRpbmcgZGF0YSB0byBOVUxMIGFuZCBsZW5ndGggdG8gMCwKCWFuZCB0aGlzIGlzIHdpdGhvdXQgaW5pdGlhbGl6aW5nIG91dHB1dCBidWZmZXIgcGFyYW1ldGVyIG9mCglSZWdRdWVyeVZhbHVlKi4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgUGFub3NlIGRlZmluZXMgYW5kIEVYVExPR0ZPTlRbQXxXXS4KClRodSBBcHIgMjIgMTY6Mjc6NTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBjb21wYWJpbGxpdHkuCgoJKiBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL3JlY3QuYywgZGxscy92ZXJzaW9uL2luZm8uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWVtb3J5L2F0b20uYywgbWVtb3J5L3N0cmluZy5jLCBtaXNjL2xzdHIuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgc29tZSBpbmNsdWRlcyBvZiAxNiBiaXQgQVBJLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJSUNPTWl6YXRpb24gb2YgcmVtYWluaW5nIGludGVyZmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYnVnIHdpdGggdG9vbHRpcHMgc3RlYWxpbmcgZm9jdXMgd2hlbmV2ZXIgYSB0b29sdGlwIHdhcyBjcmVhdGVkLAoJc2hvd24sIGhpZGRlbiBvciB0cmFja2VkLiBUaGUgU2V0V2luZG93UG9zIGNhbGxzIG5lZWRlZCB0byBoYXZlIHRoZQoJU1dQX05PQUNUSVZBVEUgZmxhZyBzZXQgYWRkaXRpb25hbGx5LgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUZpeGVkIGNvb3JkaW5hdGVzIGNvbnZlcnNpb24gaW4gT2Zmc2V0Q2xpcFJnbi4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglDbGVhbiB1cCBvYmpiYXNlLmguIE1ha2VzIHRoZSBTVERNRVRIT0Qgc2V0IG9mIG1hY3JvcyBhdmFpbGFibGUgdG8gdGhlIHdpbmVsaWIgdXNlci4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2hhbmRsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGVTb2NrZXRIYW5kbGUsR2V0SGFuZGxlQ29udGV4dCxTZXRIYW5kbGVDb250ZXh0IHN0dWJzIGFkZGVkLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIHN0dWZmIHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBzeXNjb2xvcnMgZm9yIHdpbiAzLjEuCgoJKiBmaWxlcy9wcm9maWxlLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm9maWxlIEtFUk5FTCByb3V0aW5lcyAoY2FsbCAzMi1iaXQgdmVyc2lvbnMpLgoKCSogaWYxNjMyL2J1aWx0aW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEJVSUxUSU5fR2V0RW50cnlQb2ludDE2IGRpZG4ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRoZSBuZXcKCWVudHJ5IHRhYmxlIGxheW91dC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkIEVuaGFuY2VkIE1ldGFGaWxlIHJlY29yZCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpcnN0IHBhdGNoIGltcGxlbWVudGluZyBwcm9wZXJ0eSBzaGVldHMuCgoJKiByZWxheTMyL2dkaTMyLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogR0RJMzIuMTAwLTEwNCBhcmUgb3JkaW5hbC1vbmx5IHJvdXRpbmVzLgoJQWRkZWQgc3R1YnMgZm9yIHNvbWUgV2luOTggR0RJMzIgcm91dGluZS4KCVJlLW51bWJlcmVkIGFsbCBuYW1lZCBleHBvcnRzIChsZXhpY29ncmFwaGljYWxseSkuCgoJKiBncmFwaGljcy9kcml2ZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyAoc3R1YnMpIGZvciBHREkzMi4xMDAtMTA0LgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBtb3JlIGNoZWNrcyBmb3IgdmFsaWQgcGlkbCBmb3JtYXRzCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gY29ycmVjdGVkIHBhcmFtZXRlciBjb3VudCBmb3IgU0hHZXRTZXR0aW5ncwoJLSBzdHViIFNIVmFsaWRhdGVVTkMKCgkqIGxvYWRlci9lbGYuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjZWxzZSBicmFuY2ggY29tcGlsZSBmaXguCgoJKiBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDaGFuZ2Ugd2luZSdzIGRsb3BlbiBzZWFyY2gtcGF0Y2ggc3RyYXRlZ3kgbm90IHVzaW5nIHRoZSBlbnZpcm9ubWVudAoJYW5kIGFkZGVkICNpZjpzIHRvIHNlcGVyYXRlIHRoZSBjb2RlIG91dCBpZiBsaWJkbCBpc24ndCBhdmFpbGJsZS4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2hlY2sgZm9yIGEgTlVMTCBwb2ludGVyIGluIENvRnJlZVVudXNlZExpYnJhcmllcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbmNsdWRlIGRlYnVnLmggbGFzdCAoRVJSKCkgbWFjcm8gcHJvYmxlbSBvbiBTb2xhcmlzKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc2l6aW5nIGJ1ZyBpbiB0aGUgY29tYm9ib3ggY29udHJvbC4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBJbnRlcm5hbCBORSBlbnRyeSBwb2ludCB0YWJsZXMgd2VyZSBiYWQgKG9uZSBodWdlIGJ1bmRsZSkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJSW5pdGlhbGl6ZSB0aGUgb3V0cHV0IGJ1ZmZlciBwYXJhbWV0ZXJzIHRvIDAgaW4gUmVnUXVlcnlWYWx1ZSoKCWZ1bmN0aW9ucy4gVGhpcyBpcyBpbXBvcnRhbnQgc3BlY2lhbGx5IHdoZW4gdGhlcmUncyBubyBkYXRhIHRvIHJldHVybi4KCgkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCURvIG5vdCBpbmNyZW1lbnQgbW9kdWxlIHJlZkNvdW50IGlmIHNlbGYgaXMgbG9hZGVkIGZyb20gd2l0aGluCglEbGxFbnRyeVBvaW50IGR1cmluZyB0aGUgYXR0YWNoIG5vdGlmaWNhdGlvbi4KCldlZCBBcHIgMjEgMTQ6Mjc6MzcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHByb3RlY3QgVFJBQ0UgYWdhaW5zdCBOVUxMLXB0cgoJLSByZXdyb3RlIEdldE1lbnVJdGVtSUQvR2V0U3ViTWVudSB0byB1c2UgTUVOVV9GaW5kSXRlbSAoaG1lbnU9MHhmZmZmIGZpeCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdHlwby4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlaW1wbGVtZW50YXRpb24gb2YgR2V0TW9kdWxlSGFuZGxlMTYgYWNjb3JkaW5nIHRvIGhvdyB3aW45NSBoYW5kbGVzCglpdCAodGhhbmtzIHRvIE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPikuCgoJKiBpZjE2MzIvYnVpbHRpbi5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ29ycmVjdGVkIHdyb25nIHJldHVybiB2YWx1ZXMgb2YgYnVpbHQtaW4gbG9hZGVyIHRvIHdvcmsgd2l0aCB0aGUKCWxvYWRvcmRlciBzdHVmZi4KCk1vbiBBcHIgMTkgMTY6NDU6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCByZWNvcmRpbmcgb2YgU3RyZXRjaERJQml0cyBhbmQgU2V0RElCaXRzVG9EZXZpY2UgYW5kCglwbGF5YmFjayBvZiBTZXRESUJpdHNUb0RldmljZS4gQ2xlYW5lZCB1cCBQbGF5TWV0YUZpbGVSZWNvcmQgYSBiaXQuCgoJKiBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlbW92ZWQgbm9uLXBvcnRhYmxlIGhhY2tzIGFuZCByZXBsYWNlZCB0aGVtIHdpdGggbW9yZSBnZW5lcmFsCgl2ZXJzaW9ucy4KCgkqIHdpbmRvd3MvZGNlLmM6IFBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglDb2RlIGFkZGVkIHRvIHJlLWV2YWx1YXRlIHN0YWxlIERDIGluZm9ybWF0aW9uIGluIERDRSBjYWNoZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUF0dGFjaCBub3RpZmljYXRpb25zIG11c3QgYmUgc2VuZCBhZnRlciBhbGwgcmVjdXJzaXZlIGRlcGVuZGVuY2llcyBhcmUKCWxvYWRlZCBhbmQgbm90IGJlZm9yZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgdHlwby4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcGxheWluZyBwb3NpdGlvbiB3aGVuIHJlcXVpcmVkIGJ5IHRyYWNrIG51bWJlci4KCgkqIHdpbjMyL2RldmljZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIE1NREVWTERSIERldmljZUlvY3RsKDUpIHN0dWIgKG1zYWNtMzIgaXMgYSBiaXQgaGFwcGllciBub3cpLgoKCSogd2luZS5pbmk6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTmF0aXZlIHRvb2xoZWxwIHdpbGwgbm90IHdvcmsgKG1pc3NpbmcgR0xPQkFMTUFTVEVSSEFORExFKS4KCgkqIEJVR1MsIFJFQURNRTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVRlc3QgZm9yIHN0YXRpYyB3YXMgcmV2ZXJzZWQuCgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5ldyBkZWJ1ZyBzY2hlbWUgd2l0aCBleHBsaWNpdCBkZWJ1ZyBjaGFubmVscyBkZWNsYXJhdGlvbi4KClN1biBBcHIgMTggMTQ6NDQ6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogUmVtb3ZlZCBleHRyYSBjYWxsIHRvIFRBU0tfU3RhcnRUYXNrLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVJlbW92ZWQgY2hlY2sgZm9yIHVuaW9uIHNlbXVuOyBjbGVhbmVkIHVwIGEgYml0LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCBlbnYgcHRyIHRvIG5ld19wcm9jZXNzIHJlcXVlc3QKCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvd2ludXNlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHVzZSBmb250cy9mb250c2l6ZXMgZ2l2ZW4gYnkgU3lzdGVtUGFyYW1ldGVyc0luZm8KCS0gZHJhd2luZy9hbGlnbm1lbnQgZml4ZXMsIHdpbjk4IHN0eWxlIGZvciBtZW51YmFyCgktIG93bmVyZHJhd24gbWVudXMgYXJlIHdvcmtpbmcgbm93IGZvciB0aGUgZmlyc3QgdGltZQoJLSBjb21wbGV0ZSBjb25zdGFudHMgbWFnaWMgaXRlbXMKCS0gdXNlIHJpZ2h0IG93bmVyIGZvciBwb3B1cG1lbnVzCgktIG5ldzogR2V0L1NldE1lbnVJbmZvCgktIGltcGxlbWVudGVkOiBHZXQvU2V0TWVudUNvbnRleHRIZWxwSWQKCS0gbW9yZSBmbGFncyBmb3IgR2V0L1NldE1lbnVJdGVtSW5mbwoKCSogZmlsZXMvZG9zX2ZzLmM6IHJvYmVydCB3IGhhbGwgPGJvYmhAbi1jYW50cmVsbC5kZW1vbi5jby51az4KCU1ha2UgRE9TRlNfTWF0Y2hMb25nIG1hdGNoIGEgc2VhcmNoIHN0cmluZyBlbmRpbmcgaW4gJyouJyB0byBhIHplcm8KCWV4dGVuc2lvbiBmaWxlIG5hbWUsIGFsbG93aW5nIE1hdGhjYWQgdG8gcnVuLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeSBmcmVlaW5nLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvQXR0aWMvY21kbGdyLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuaDoKCVJlbmFtZWQgY21kbGdyLmggdG8gY21kbGd0c3QuaC4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOiBBZGRlZCB0aW1lb3V0IHRvIGNyaXRpY2FsIHNlY3Rpb24gd2FpdGluZy4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1lcmdlZCBMaW51eC9GcmVlQlNEIHJlZW50cmFudCBlcnJubyBoYW5kbGVyLCBhZGRlZCBTb2xhcmlzLgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU29sYXJpcyBsb3ctbGV2ZWwgdGhyZWFkcyAoTFdQcykgYWRkZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWVudHJhbnQgbGliYyBjaGVjayBmb3IgU29sYXJpcyBhZGRlZC4KCUZpeGVkIHJlZW50cmFudCBYMTEgY2hlY2sgZm9yIEZyZWVCU0QgYW5kIFNvbGFyaXMuCglBZGRlZCBjaGVjayBmb3IgU29sYXJpcyBsb3ctbGV2ZWwgdGhyZWFkIHJvdXRpbmVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJRml4ZWQgdG9vbGhlbHAgcm91dGluZXMgdXNhZ2UgaW4gR2V0TW9kdWxlRnJvbVBhdGggKHJlcG9ydGVkIGJ5IEJlcnRobwoJU3R1bHRpZW5zKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUF1dG9tYXRpYyBpbnN0YWxsIHNjcmlwdCwgd2hpY2ggYXV0b21hdGljYWxseSBjb25maWd1cmVzIGFuZCBjb21waWxlcwoJd2luZSBhbmQgcmVnYXBpLCBydW5zIHRvb2xzL3dpbmVjb25mIHRvIGdlbmVyYXRlIGEgY29uZmlndXJhdGlvbiBmaWxlCglpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgYW5kIHVzZXMgcmVnYXBpIHRvIGluc3RhbGwgdGhlIGRlZmF1bHQKCXJlZ2lzdHJ5LgoKCSogZG9jdW1lbnRhdGlvbi9ndWksIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByb3Blcmx5IGhhbmRsaW5nIGNhc2VzIGxpa2UgY2FsbGluZyBTZXRXaW5kb3dQb3Mgd2hpbGUgcHJvY2Vzc2luZwoJV01fTkNDUkVBVEUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgYnVncyAodHlwb3MgZnJvbSBjdXQgJiBwYXN0ZSAmIGludmFsaWQgaGVhcCBibG9jawoJZnJlZWluZykuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQnVnIGZpeCBpbiBHZXRMZW4uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZW9yZ2FuaXphdGlvbiBvZiB0aGUgbG9hZGVyIHRvIGNvcnJlY3RseSBsb2FkIGFuZCBmcmVlIGxpYnJhcmllcyBhbmQKCWltcGxlbWVudGF0aW9uIG9mIGxvYWQgb3JkZXIgdG8gbG9hZCBkaWZmZXJlbnQgdHlwZXMgb2YgbGlicmFyaWVzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVVwZGF0ZWQgY29tbWFuZGxpbmUgY2hhbmdlcyBvZiAtZGxsIG9wdGlvbiBhbmQgd2luZS5jb25mIGVudHJpZXMuCgoJKiB3aW5lLmluaTogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVVwZGF0ZWQgdGhlIGV4YW1wbGUgd2l0aCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZW50cmllcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglCdWdmaXg6IGZyZWUgbG9hZGVkIGxpYnJhcnkgbm90IGJlZm9yZSBleGl0LgoKCSogaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTmV3IGZpbGVzIHRvIHN1cHBvcnQgbG9hZCBvcmRlciBhbmQgcGFydGlhbCBzdHVicyBmb3IgZWxmZGxscy4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBmb3IgdXBzaWRlLWRvd24gRElCcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hhbmdlZCAnR2V0RGlzcGxheU1vZGUnIHRvIHJldHVybiB0aGUgbW9kZSBwcmV2aW91c2x5IHNldCBieQoJJ1NldERpc3BsYXlNb2RlJyAoYW5kIG5vdCB0aGUgY3VycmVudCBtb25pdG9yIG1vZGUpLgoKCSogaW5jbHVkZS90YWIuaCwgZGxscy9jb21jdGwzMi90YWIuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CgktSW1wbGVtZW50ZWQgVENTX0JVVFRPTlMsIFRDU19GSVhFRFdJRFRILCBUQ01fR0VUSVRFTVJFQ1QsCglUQ01fU0VUSVRFTVNJWkUgYW5kIFRDTV9ERUxFVEVJVEVNLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgxNigpIGZpeGVkOiBpZiBHZXRTeXN0ZW1QYWxldHRlRW50cmllcygpCglyZXR1cm5zIDAsIGl0IGlzIGludGVycHJldGVkIGFzIGlmIGl0IHdlcmUgMjU2LgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUZpeCBhbWJpZ3VvdXMgZWxzZSB3YXJuaW5nLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWRpbmcgY29sb3IgdmFsdWVzIGZyb20gdGhlIHJlZ2lzdHJ5IGZpeGVkLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJLSBSZW1vdmVkIGFsbCBmbG9hdGluZyBwb2ludCBtYXRoLgoJLSBJbXBsZW1lbnRlZCBzdHJldGNoaW5nIGluIFggYW5kIFkgZGlyZWN0aW9ucyBmb3IgOCwgMTYsIGFuZCAzMiBiaXQgY29sb3IuCgktIEltcGxlbWVudGVkIHNvdXJjZSBhbmQgZGVzdCBjb2xvci1rZXlpbmcgZm9yIDgsIDE2LCBhbmQgMzIgYml0IGNvbG9yLgoJLSBJbXBsZW1lbnRlZCBzb21lIHRyaXZpYWwgcmFzdGVyIG9wZXJhdGlvbnMuCgktIE1pbmltaXplZCBpbm5lciBsb29wcyBmb3IgbWF4aW11bSBzcGVlZC4KCS0gVXNlIG1lbWNweSB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZWR1Y2VkIGZyYWdtZW50IHNpemUuCglSZW9yZ2FuaXplZCB3b2RPcGVuICh3aXRoIHN1cHBvcnQgZm9yIFdBVkVfUVVFUllfRk9STUFUKS4KCUZpeGVkIGJ1ZmZlciB1bmRlcnJ1biByZWNvdmVyeS4KCUZpeGVkIGJ1ZyBpbiB3b2RSZXNldCgpL3dvZENsb3NlKCkuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglTaW1wbGlmeSBwcm9wZXJ0eU5hbWVDbXAoKSBhbmQgZml4IGEgd2FybmluZyBpbiB0aGUgd2F5IGJ5IHJlbW92aW5nCglDUlRETExfX3djc3VwcigpIGNhbGxzLgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJRGRlTmFtZVNlcnZpY2U6IGV4cGFuc2lvbiBvZiBzdHViIHRvIHRyYXAgdW51c2VkIGluc3RhbmNlaWRzIGF0IHN0YXJ0IG9mIHJ1bi4KCURkZUdldExhc3RFcnJvcjogY2F0Y2ggJ25vdCBpbml0aWFsaXplZCcgc2l0dWF0aW9uIGFuZCByZXR1cm4gY29ycmVjdCByZXNwb25zZS4KCURkZUZyZWVTdHJpbmdIYW5kbGU6IGNvbXBsZXRlIHRlc3QgZm9yIGVycm9yIHNldCBieSBwcmV2aW91cyBjYWxsIG9mCglzb21ldGhpbmcgYW5kIGlnbm9yZSBpdCwgYWxzbyByZWxlYXNlIGhhbmRsZSB0YWJsZSBtdXRleCBvbiBub3JtYWwgZXhpdC4KCURkZVF1ZXJ5U3RyaW5nQSwgRGRlUXVlcnlTdHJpbmdXLCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXOiBSZWxlYXNlCgloYW5kbGUgdGFibGUgbXV0ZXggb24gbm9ybWFsIGV4aXQuCgoJKiBpbmNsdWRlL3duZXQuaCwgbWlzYy9uZXR3b3JrLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCBhbm5vdW5jZSB0aGUgV05ldERpcmVjdG9yeU5vdGlmeSBjYXBhYmlsaXR5IFdOZXRHZXRDb25uZWN0aW9uLgoJQ2hhbmdlIHRoZSByZXR1cm4gdmFsdWUgZm9yIGxvY2FsIGZpbGVzLgoKCSogd2luZG93cy9tb3VzZS5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkICJ3aW4uaCIgdG8gZml4IGltcGxpY2l0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdhcm5pbmdzLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgaW5jbHVkZS9jb25zb2xlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9ubHkgZGVjbGFyZSBjb25zb2xlICJkcml2ZXIiIG9uY2UsIHVzZSBleHRlcm5hbCByZWZzIGVsc2V3aGVyZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVdoZW4gdGhlIHZlcnRpY2FsIHNjcm9sbGJhciBpcyByZW1vdmVkLCB0aGUgYmFja2dyb3VuZCB3YXMgbm90Cglwcm9wZXJseSByZXBhaW50ZWQuCgoJKiBsb2FkZXIvc2lnbmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlzYWJsZSBBQyBiaXQgb24gcmVjZWl2aW5nIGFsaWdubWVudCBleGNlcHRpb25zLgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3lzdGVtUGFyYW1ldGVyc0luZm8gU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1M6IGltcGxlbWVudGVkIG1lbnUgcGFydC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJV2hpbGUgaGFuZGxpbmcgdGhlIFdNX0RFTEVURVdJTkRPVyBjbGllbnQgbWVzc2FnZSBjaGVjayBpZiBhIHdpbmRvdwoJaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGlmIHNvIHByZXZlbnQgYW4gU0NfQ0xPU0UgbWVzc2FnZSBmcm9tIGJlaW5nCglzZW50LgoKCSogd2luZG93cy9kY2UuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglNYWtlIGFjY2VzcyB0byB0aGUgRENFIGxpc3QgdGhyZWFkIHNhZmUgYnkgZW5zdXJpbmcgd2UgaGF2ZSBhY3F1aXJlZAoJdGhlIFdpbmRvd3MgbG9jayBiZWZvcmUgdXNpbmcgaXQuCgpGcmkgQXByIDE2IDE1OjE5OjE0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogQ2hhbmdlZCBmb3IgcmVuYW1lZCBmaWxlcwoKCSogbWlzYy93aW5zb2NrX2FzeW5jLmMsIG1zZG9zL2Rvc2NvbmYuYywgd2luZG93cy91c2VyLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4ZWQgd2FybmluZ3MuCgoJKiBvbGUvbmxzL3dhbC5ubHMsIG9sZS9vbGUybmxzLmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfQ3oucmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfUG8ucmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfU3cucmMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX0NzLnJjLCByZXNvdXJjZXMvc3lzcmVzX1B0LnJjLCByZXNvdXJjZXMvc3lzcmVzX1N2LnJjLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy9tYWluLmM6CglQYWJsbyBTYXJhdHhhZ2EgPHBhYmxvLnNhcmFjaGFnYUBwaW5nLmJlPgoJQWRkZWQgd2Fsb24gbGFuZ3VhZ2Ugc3VwcG9ydCAoSSBhbHNvIG1vdmVkIEN6IC0+IENzLCBTdyAtPiBTdiwgYW5kIFBvCgktPiBQdDsgdG8gY29uZm9ybSB0byBzdGFuZGFyZCBuYW1lcyBmb3IgdGhvc2UgbGFuZ3VhZ2VzKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCByZWxheTMyL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgLWZuby1idWlsdGluIHdoZW4gY29tcGlsaW5nIHdpdGggZ2NjIGluIHJlbGF5MzIvIHN1YmRpci4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgdG9vbHMvYnVpbGQuYywgaWYxNjMyL2J1aWx0aW4uYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCS0gSW1wbGVtZW50ZWQgcHJvcGVyICgicmVhbCIsIGNvbXByZXNzZWQpIFdpbjE2IGVudHJ5IHRhYmxlcy4KCS0gRml4ZWQgTXlBbGxvYyAoQUtBIE5FX0FsbG9jYXRlU2VnbWVudCkuCgktIEltcGxlbWVudGVkIFBhdGNoQ29kZUhhbmRsZTE2LgoKCSogdG9vbHMvQXR0aWMvbWFrZV9vczIuc2gsIHRvb2xzL21ha2Vfb3MyLmNtZCwgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJQSBmZXcgcGF0Y2hlcyB0byBoZWxwIFdpbmUgdG8gY29tcGlsZSBvbiBPUy8yLgoKVGh1IEFwciAxNSAxNjo0Njo1MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlICgzMiBiaXQpIEhNRVRBRklMRXMgdG8gR0RJIG9iamVjdHMgKEhNRVRBRklMRTE2cyByZW1haW4gYXMKCWdsb2JhbCBtZW1vcnkgaGFuZGxlcykuICBGaXhlZCBkaXNrLWJhc2VkIE1ldGFGaWxlcy4gIEJldHRlcgoJc2VwYXJhdGlvbiBiZXR3ZWVuIE1ldGFGaWxlIHBsYXliYWNrIGFuZCB0aGUgbWV0YWZpbGVkcnYuCgoJKiBtaXNjL2NydGRsbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCV9DSXBvdyBhcmd1bWVudCBvcmRlciB3YXMgY29uZmlybWVkIHdpdGggU3RhcmNyYWZ0IHYxLjA1LgoKCSogZG9jdW1lbnRhdGlvbi9rZXlib2FyZDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGFyaWZpZWQgYSBmZXcgcG9pbnRzLgoKCSogbXNkb3MvaW50MjEuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUFkZGVkIElPQ1RMIGZ1bmN0aW9uIDB4NDQwZC8weDcyLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglVbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uIHBhcnRpYWwgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgcHJvdG8gZm9yIEdldEV4aXRDb2RlVGhyZWFkLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGRlZCBtaXNzaW5nIHdpbmRlZi5oIGluY2x1ZGVzLgoKCSogd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJUmVsZWFzZUNhcHR1cmUoKSBpcyBzdXBwb3NlZCB0byByZXR1cm4gYSBCT09MIHZhbHVlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9zaWduYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnJlZUJTRCAzIG11bHRpdGhyZWFkaW5nIGZpbmFsIGZpeC4gRG8gbm90IHVzZSBsaWJjX3IsIGxpYmMgaXMganVzdCBhcwoJcmVlbnRyYW50IGNvbmNlcm5pbmcgZXJybm8uIFJldmVydCB1bm5lZWRlZCBGcmVlQlNEIGhhY2sgdG8KCWxvYWRlci9zaWduYWwuYyBmcm9tIGxhc3QgcGF0Y2guCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglpbmRleCA9PSAzIGNvcnJlc3BvbmRzIHRvIEFsdC1HciArIFNoaWZ0LgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJTW9yZSBvZiBEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLCBEZGVGcmVlU3RyaW5nSEFuZGxlLCBEZGVRdWVyeVN0cmluZ0EKCWFuZCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXIGFuZCB0aWR5IHVwIG9mIFJlbW92ZUhTWk5vZGVzLCBhbmQKCURkZUNyZWF0ZVN0cmluZ0hhbmRsZUEuCgoJKiB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaDoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCB1Z2x5IGRpc2FibGVkIGNvbnRyb2xzIGFuZCBibGFjayBiYWNrZ3JvdW5kIGluIFdyaXRlIGFuZCBMb3R1cwoJTm90ZXMuCgoJKiBjb250cm9scy9idXR0b24uYywgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS93aW51c2VyLmg6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50IHRoZSBidXR0b24gd2l0aCBiaXRtYXBzLgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSVN0b3JhZ2U6OkNvcHlUbyBhbmQgSVN0cmVhbTo6Q29weVRvLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEFsd2F5cyByZWxlYXNlIHRoZSBXaW4xNkxvY2sgaW4gVEFTS19SZXNjaGVkdWxlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTb2x2ZWQgYSBkZWFkbG9jayBiZXR3ZWVuIGdsb2JhbCBsb2NrIGFuZCB3bmQgbG9jayBpbiBldmVudC5jLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR5cG8gdGhhdCBicm9rZSBTb2xhcmlzIGNvbXBpbGUgZml4ZWQuCgoJKiBjb250cm9scy9kZXNrdG9wLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkIGEgV0lOX1JlbGVhc2VEZXNrdG9wIGluIERFU0tUT1BfSXNTaW5nbGVXaW5kb3cuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHNjYW5jb2RlcyBmb3IgTnVtTG9jayBhbmQgTnVtLS8uCglGaXggTWFwVmlydHVhbEtleSgpIChtYXB0eXBlPTIpIHRvIHJldHVybiBwcm9wZXIgYXNjaWkgY29kZS4KCVJld29ya2VkIEdldEtleU5hbWVUZXh0KCkgYWdhaW4uCgoJKiBncmFwaGljcy9wc2Rydi9mb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUxpbWl0IGxhc3RDaGFyIHRvIDB4ZmYgaW4gUFNEUlZfR2V0Q2hhcldpZHRoLgoKCSogd2luZG93cy91c2VyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkgZm9yIFJlZ2lzdGVyU3lzdGVtVGhyZWFkLgoKU3VuIEFwciAxMSAxODo0ODoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MTAuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgIkRpc3BsYXkgQ29tYmluYXRpb24iIGNhbGwuCgoJKiBtaXNjL2NvbW0uYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgYSBjcmFzaCBkdWUgdG8gaW52YWxpZCBPcGVuQ29tbSByZXR1cm4gdmFsdWUgZm9yIGJ1c3kgY29tbSBwb3J0LgoJQ2xlYW5lZCB1cC9maXhlZCBzZXZlcmFsIHRoaW5ncy4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRW5hYmxlZCB0aHJlYWQgc2FmZW5lc3MgZm9yIHduZCBzdHJ1Y3R1cmUgY29kZS4KCgkqIGRlYnVnZ2VyL2RiZy55OiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBDTElFTlRfRGVidWdnZXJSZXF1ZXN0IHRvIGZyZWV6ZS91bmZyZWV6ZSB0aHJlYWRzLgoKCSogc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBuZXcgQ0xJRU5UX0RlYnVnZ2VyUmVxdWVzdCByb3V0aW5lLCBpbXBsZW1lbnRlZCBzdXBwb3J0IGZvcgoJREVCVUdHRVJfRlJFRVpFX0FMTC9ERUJVR0dFUl9VTkZSRUVaRV9BTEwgcmVxdWVzdHMuCglSdW4gd2luZSBzZXJ2ZXIgaW4gdGhlIG1haW4gd2luZSBwcm9jZXNzLgoJQnVnZml4OiBuZXZlciBmcmVlIGluaXRpYWwgdGhyZWFkIQoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5vbi1mdW5jdGlvbmFsIFBST0NFU1NfU3VzcGVuZC9SZXN1bWVPdGhlclRocmVhZHMgcmVtb3ZlZC4KCgkqIHdpbmRvd3MvdGltZXIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUZWFjaGVkIFRJTUVSX0dldE5leHRFeHBpcmF0aW9uIHRoYXQgYSB0aW1lciB0aGF0IGhhcyBhbHJlYWR5IGV4cGlyZWQKCShidXQgbm90IHByb2Nlc3NlZCB5ZXQpIEhBUyBhbHJlYWR5IGV4cGlyZWQuLi4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZhdWx0IHZhbHVlcyBmb3IgcmVnaXN0cnkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY2E+CglPcHRpbWl6ZWQgY29kZSBmb3IgU2V0SW1hZ2VCaXRzX1gsIG1ha2luZyBiaXRtYXAgY3JlYXRpb24gZmFzdGVyLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVRoZSBNRUFTVVJFSVRFTVNUUlVDVCBhbmQgRFJBV0lURU1TVFJVQ1Qgd2VyZSBmaWxsZWQgd3JvbmcuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbG9hZGVyL3NpZ25hbC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCS0gU3RhcnRlZCBtdWx0aXRocmVhZGluZyBmb3IgRnJlZUJTRCAoaW5jb21wbGV0ZSwgYnV0IHNvbWUKCSAgYXBwbGljYXRpb25zIG5vdyBhdCBsZWFzdCBzdGFydCB1cCBhZ2FpbikuCgktIFVzZSBfdGhyZWFkX3N5c19zaWdhY3Rpb24vX3RocmVhZF9zeXNfc2lnYWx0c3RhY2suCgktIENSMiBvbiBwYWdlZmF1bHQgZ2V0cyBwYXNzZWQgaW4gc2NfZXJyIChzb21lIGtpbmQgb2Yga2x1ZGdlIGluCgkgIEZyZWVCU0Qgb3ducyBmYXVsdCBoYW5kbGluZyB3ZSBjYW4gdXNlKQoKCSogaW5jbHVkZS9zZWxlY3RvcnMuaCwgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYzoKCU1hZGUgU0VMRUNUT1JfUmVhbGxvY0Jsb2NrIHByZXNlcnZlIHRoZSBjdXJyZW50IHNlbGVjdG9yIGFjY2VzcyByaWdodHMKCShwcm9ibGVtIHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBtaXNjL3N5c3RlbS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBzZXJ2aWNlcyB0aHJlYWQgaW5zdGVhZCBvZiB0aW1lciBzaWduYWxzLgoKCSogc2VydmVyL3RocmVhZC5jLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyB1c2VyIEFQQ3Mgd2l0aCBOVUxMICdmdW5jJyAoanVzdCB3YWtlIHVwIHRoZSB0aHJlYWQpLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAna2VybmVsIHNlcnZpY2VzIHRocmVhZCcuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBzdHViIGZvciBQcmludGVyUHJvcGVydGllcy4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvbnRkZGsuaCwgcmVsYXkzMi9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIE50VGVybWluYXRlUHJvY2VzcyBhbmQgTnREaXNwbGF5U3RyaW5nLgoKCSogbG9hZGVyL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRnJlZUxpYnJhcnkgcGFydGlhbCBpbXBsZW1lbnRhdGlvbi4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBfZnRvbCB0YWtlIGFyZ3VtZW50IGZyb20gRlBVIHN0YWNrLiBTdGFyY3JhZnQgdjEuMDQgKCpub3QqIEJyb29kCglXYXJzKSBub3cgd29ya3MgcGVyZmVjdGx5IHdpdGggV2luZSdzIGNydGRsbC4gV3JvdGUgYSB0ZXN0CglpbXBsZW1lbnRhdGlvbiBvZiBfQ0lwb3cgdG9vLCB3aGljaCB0aG9zZSB3aG8gZG8gaGF2ZSBCcm9vZCBXYXJzIGNhbgoJcmVwb3J0IG9uLCBzbyBpdCBjYW4gYmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIEdldEtleU5hbWVUZXh0IGZvciBuZXcga2V5Ym9hcmQgc3RydWN0dXJlLgoKCSogZGxscy90YXBpMzIvcGhvbmUuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUZpeGVkIHdhcm5pbmcuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFJlYWRDbGFzc1N0ZyBwcm90b3R5cGUuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CgktIEZpeCBjb21tZW50cyBhZnRlciB0aGUgYmlnIHJlbmFtaW5nICh4eHh4MzJ5IC0tPiB4eHh4eSkuCgktIERlY2xhcmUgdGhlIFdQUklOVEZfREFUQSB1bmlvbiwgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIExQQ1ZPSUQgYW5kIFdPUkQuCgkgIEF2b2lkIHVnbHkgdHlwZSBjYXN0aW5nLCBhbmQgZml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIG9mIHdzcHJpbnRmLmMKCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RkZToKCUtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglTdGF0dXMgZG9jdW1lbnQgZm9yIERERS9EZGVtbC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBldmVudCBjYWxsYmFjayBtZWNoYW5pc20uCglJbnRyb2R1Y3Rpb24gb2YgTUNJIHlpZWxkIHByb2NzLgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyAod2F2ZSwgbWlkaSkgdG8gYWxsb3cKCWNvcnJlY3QgY2FsbGJhY2sgbWVjaGFuaXNtcy4KCU1hZGUgbWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMgd29ya2luZy4KCUZpcnN0IHRyeSBhdCBtbVRocmVhZFhYWCBmdW5jdGlvbnMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zIHRvIGFsbG93IGNvcnJlY3QgY2FsbGJhY2sKCW1lY2hhbmlzbXMuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTbWFsbCBlbmhhbmNlbWVudC4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IG1ldGhvZCBmb3Igc3RydWN0dXJlIGNvbnZlcnNpb24gKDE2IDwtPiAzMikuCglNb3JlIE1DSSBzdHJ1Y3R1cmVzIGNvcnJlY3RseSBtYXBwZWQuCglJbnRyb2R1Y3Rpb24gb2YgTUNJIHlpZWxkIHByb2MgYW5kIGJyZWFrIGZhY2lsaXR5LgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgdG8gYWxsb3cgY29ycmVjdCBjYWxsYmFjawoJbWVjaGFuaXNtcy4gIEltcGxlbWVudGVkIHdhdmVPdXQgcGxheWJhY2sgYXMgYXN5bmNocm9ub3VzLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBtbVRocmVhZFhYWCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBkZWZpbmVzIChNSURJLCBXQVZFLCBjYWxsYmFja3MpLgoJU3RydWN0dXJlcyBmb3IgbWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zICh3YXZlLCBtaWRpKSB0byBhbGxvdwoJY29ycmVjdCBjYWxsYmFjayBtZWNoYW5pc21zLiBBZGRlZCB3aW5lIHNwZWNpZmljIGVudHJ5IGZvciBtbVRocmVhZFhYWAoJZnVuY3Rpb25zIHRocmVhZCBzdGFydGluZyBwb2ludC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUludHJvZHVjZSBTVEFUU1RHMTYgLSBhIDE2IGJpdCB2YXJpYW50IG9mIFNUQVRTVEcuCgoJKiBvbGUvc3RvcmFnZS5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4IElTdG9yYWdlMTZfZm5TdGF0KCkgdG8gdXNlIFNUQVRTVEcxNiAoaXQgaXMgYSAxNiBiaXQgaW50ZXJmYWNlKS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUZpeGVkIG1lbnUgdHlwZSBzZXR0aW5nIGluIFNldE1lbnVJdGVtSW5mbzMyX2NvbW1vbigpLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZW5kIFVTSUdfUFJPQ0VTU19DUkVBVEUgc2lnbmFsLgoJQnVnZml4OiBHZXRQcm9jZXNzRHdvcmQgb2Zmc2V0IC04IHNob3VsZCByZXR1cm4gcGFyZW50IHByb2Nlc3MgSUQuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglBZGRlZCBSZWdpc3RlclN5c3RlbVRocmVhZCBzdHViLgoKCSogaW5jbHVkZS93aW5lL29ial9taXNjLmgsIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgaW5jbHVkZS93aW5lcnJvci5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIENvQ3JlYXRlSW5zdGFuY2VFeCBtZXRob2QuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IERhdmlkIEdheSA8ZGdheUBDUy5CZXJrZWxleS5FRFU+CglGaXhlZCBjcmFzaCBkdWUgdG8gYSB2YWx1ZSBvZiBuYW1lIGxlbmd0aCAwLCB2YWx1ZSBsZW5ndGggMCBhdCB0aGUgZW5kCglvZiB0aGUgcmVnaXN0cnkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDaGVjayBpZiBwVGVtcEFjdGl2ZVdpbmRvdyBpbiBXSU5QT1NfU2V0V2luZG93UG9zIGlzIHZhbGlkIGFmdGVyIHRoZQoJUVVFVUVfTG9jay4KCgkqIG11bHRpbWVkaWEvZHBsYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIHVwZGF0ZWQgYmVjYXVzZSBvZiB0aGUgc3BsaXR0aW5nIG9mIGludGVyZmFjZS9pbXBsZW1lbnRhdGlvbgoJLSB1cGRhdGVkIHRvIHVzZSBJQ09NX1RISVMKCgkqIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIG9sZS9ndWlkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MKCS0gbW92ZWQgdGhlIElEaXJlY3RQbGF5TG9iYnkgaW50ZXJmYWNlIHRvIGRwbG9iYnkuaAoJLSByZW1vdmVkIGFsbCB0aGUgaW1wbGVtZW50YXRpb24gYXNwZWN0cyBzaW5jZSB0aGV5IG5lZWQgdG8gYmUKCXNlcGFyYXRlCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJQ09NaXNhdGlvbiBvZiB0aGUgRGlyZWN0U291bmQgQVBJLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSByZW9yZ2FuaXNlZCBpY29uIGV4dHJhY2luZyBmcm9tIGZpbGVzCgktIG1hZGUgZXh0cmFjdGluZyBmcm9tIG5lIGFuZCBpY28gZmlsZXMgd29ya2luZwoJLSBJUGVyc2lzdEZpbGUgaW50ZXJmYWNlIGZvciBJRXh0cmFjdEljb24KCgkqIG1pc2Mvc2hlbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBidWZmZXIgb3ZlcnJ1bi4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCByZXNzb3VyY2UgZGlyIHN0cnVjdHVyZXMuCglBZGFwdGVkIEZpbmRCZXN0SWNjb24vRmluZEJlc3RDdXJzb3IuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZGluZyB0aGUgY29sb3Igc2NoZW1hIGZvciByZWdpc3RyeS4KClNhdCBBcHIgMTAgMTY6NTg6NTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL0F0dGljL3dpbnNvY2tfZG5zLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfYXN5bmMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVpbXBsZW1lbnRlZCB3aW5zb2NrIGFzeW5jaHJvbm91cyBETlMgc2VydmljZXMuIE5vIGxvbmdlciB1c2UgYQoJZm9yaygpZWQgcHJvY2VzcywgYnV0IGVpdGhlciBhIHNlcnZpY2UgdGhyZWFkIG9yIGlubGluZSBibG9ja2luZyBjYWxscwoJZm9yIG5vbi10aHJlYWRpbmcgYXJjaGl0ZWN0dXJlcy4gKE1ha2VzIEZyZWUgQWdlbnQxNiB3b3JrIGFnYWluLikKCgkqIHByb2dyYW1zL2NtZGxndHN0L0F0dGljL2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6Cgk8ZXdpbGxAbmNhbC52ZXJpby5jb20+CgktIGNvbG9yIGFuZCBmb250IGRpYWxvZ3Mgbm93IGFjdHVhbGx5IGRvIHNvbWV0aGluZyBpbnRlcmVzdGluZywKCSAgYW5kIGZvcmNlIGEgcmVkcmF3IHdoZW4gc3VjY2Vzc2Z1bC4gIEJhY2tncm91bmQgY29sb3IgaXMgYWRqdXN0YWJsZS4KCSAgVGV4dCBjb2xvciBpcyBhbHNvIGFkanVzdGFibGUsIGJ1dCB0aGUgdXNlciBoYXMgdG8gc2V0IHRoZSBDRl9FRkZFQ1RTCgkgIGZsYWcgZmlyc3QuCgktIHRleHQgaXMgb3V0cHV0IGxlZnQtcmlnaHQgY2VudGVyZWQsIGJhc2VsaW5lLCBhdCB0aGUgbWlkZGxlCgkgIG9mIHRoZSB3aW5kb3csIGFuZCBtb3ZlcyB3aXRoIHRoZSB3aW5kb3cuICBUZXh0IGZvbnQgaXMgYWRqdXN0YWJsZS4KCS0gU3VjY2VzcyBhbmQgZmFpbHVyZSBNZXNzYWdlQm94IGNhbGxzIGZvciBDb2xvciwgRm9udCwgT3BlbiwKCSAgYW5kIFNhdmUgaGF2ZSBiZWVuIHJlbW92ZWQgb3Igc3VwcHJlc3NlZC4gIFRoZXkgYW5ub3llZCBtZSBhZnRlcgoJICBhd2hpbGUsIGFuZCBJIHN1c3BlY3QgdGhleSBhbm5veWVkIG90aGVycywgdG9vLiAgVXNlIG15IHRvb2whIDotKQoJLSBjbWRsZ3RzdCBub3cgaGFzIHRoZSBmdWxsIHBhdGhuYW1lIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lcjsgd2hpY2ggbWF5CgkgIGFzc2lzdCBpbiBkZWJ1Z2dpbmcgY2VydGFpbiBwcm9ibGVtcyAtLSBvciBpdCBtYXkgbm90LiA6LSkKCS0gdXNhZ2UgZGlhbG9nIGFkZGVkCgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCBkZWJ1ZyBvdXRwdXQuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciBlcnJvciBoYW5kbGluZyA7IGEgZmV3IGJ1ZyBmaXhlcyA7IG5vdyBPcGVuRHJpdmVyMTYgY2FuIGxvYWQgMzIKCWJpdCBkcml2ZXJzLgoJQWRkZWQgc3R1YiBmb3IgR2V0RHJpdmVyRmxhZ3MuCgoJKiB3aW5kb3dzL3VzZXIuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCVNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJU3R1YnMgZm9yIENsb3NlRGVza3RvcCBhbmQgQ2xvc2VXaW5kb3dTdGF0aW9uLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJR2V0TW9kdWxlRnJvbVBhdGggbm93IGNoZWNrcyBmb3IgbG9hZGVkIG1vZHVsZXMgdmlhIGZpbGVuYW1lcyB3aGljaAoJd2VyZSBzcGVjaWZpZWQgd2l0aG91dCBhIHBhdGguCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBIS1Uga2V5IHNhdmluZyBhbmQgbG9hZGluZy4gQWRkIG5ldyBzdXBwb3J0ZWQgZGF0YQoJdHlwZSBpbiBkZWJ1Z19wcmludF92YWx1ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvZG9jb2JqLmgsIG9sZS9ndWlkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBpbnRlcmZhY2VzIGZvciBJT2xlQ29tbWFuZFRhcmdldCwgSURyb3BUYXJnZXQsIElWaWV3T2JqZWN0LgoJU21hbGwgY2hhbmdlIGhvdyB0byBnZXQgaWNvbnMgZm9yIGxpc3R2aWV3LgoKCSogaW5jbHVkZS9zaGxvYmouaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlMTG9hZEZyb21TdHJpbmcgYW5kIFNIR2V0U2V0dGluZ3MgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hHZXRTZXR0aW5ncyBpbXBsZW1lbnRlZC4KCUV4aXRXaW5kb3dzRGlhbG9nKCkgc2ltdWxhdGVkIGJ5IE1lc3NhZ2Vib3guCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlMTG9hZEZyb21TdHJpbmcgaW1wbGVtZW50ZWQuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jOgoJUmljaGFyZCBNb3J0aW1lciA8cmVtaXRyb21AbXktZGVqYW5ld3MuY29tPgoJQWRkZWQgbWlzc2luZyAqSXNEYXJrIGVudHJpZXMgaW50byBQQUxFVFRFX0RyaXZlciBpbnN0YW5jZQoJaW5pdGlhbGlzYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CglGaXhlZCBYMTFEUlZfTU9VU0VfV2FycFBvaW50ZXIgaW5pdGlhbCB2YWx1ZS4KCgkqIG9iamVjdHMvYml0bWFwLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglFbnN1cmUgdGhhdCB0aGUgYml0bWFwIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIHdoZW4gY3JlYXRlZCB3aXRoIHRoZQoJTFJfQ1JFQVRFRElCU0VDVElPTiBmbGFnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgbWVzc2FnaW5nIHByb2JsZW0gb2YgdGhlIGVkaXQgYm94IGZvciBub2RlIGxhYmVsIGVkaXRpb24uCglTdWJzdGl0dXRlZCBXTV9QQUlOVCBmb3IgSW52YWxpZGF0ZVJlY3QuCglTb21lIGdyYXBoaWNhbCBmaXhlcy4KCgkqIG1pc2MvbWFpbi5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDaGVjayBmb3IgZHJpdmVycz09TlVMTCBiZWZvcmUgdHJ5aW5nIHRvIGRlbGV0ZSB0aGVtIGF0IGV4aXQuICBUaGlzCgljb3VsZCBoYXBwZW4gaWYgdGhlIGVtdWxhdG9yIGluaXRpYWxpemF0aW9uIGZhaWxlZCBmb3Igc29tZSByZWFzb24gYW5kCgl0aGUgZHJpdmVycyBoYWRuJ3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIEluaXRBcHAxNiAodXNpbmcgQ2FsbG91dCkgZm9yIGluaXRpYWwgcHJvY2Vzcy4KCgkqIG1pc2NlbXUvaW5zdHIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDbGVhciBpbnZhbGlkIHNlbGVjdG9ycyBhbHNvIGluIENhbGxUbzE2IHJlbGF5IGNvZGUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjOgoJSm9zZSBNYXJjb3MgTPNwZXogQ2FyYXZhY2EgPGpvc2UubG9wZXpAdXBjbmV0LnVwYy5lcz4KCVJldmlzZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiB3aW5kb3dzL21kaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIHdpbmRvdyBsb2NraW5nIGJ1ZyBpbiBDYWxjQ2hpbGRTY3JvbGwuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBmYWtlIG11bHRpbWVkaWEgdGltZXJzLiBHcmltIEZhbmRhbmdvIGlzIG5vdyBhYmxlIHRvIHN0YXJ0IHVwCgl3aGVuIHVuZGVyIGZhdm9yYWJsZSBjb25kaXRpb25zLiBUaGUgcHJldmlldyBtb3ZpZSBvbiB0aGUgQnJvb2QgV2FycwoJZGlzYyBub3cgcGxheXMsIHRvby4KCgkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglCdWdmaXggRW51bVByaW50ZXJzQTogbHBiUHJpbnRlcnM9TlVMTCBvciBjYkJ1Zj0wIHdvdWxkIGNyYXNoIFdpbmUsCglpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgcmlnaHQgYnVmZmVyc2l6ZS4KClR1ZSBBcHIgIDYgMDc6MTQ6MDkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBnYWxiZXJ0ZSA8Z2FsYmVydGVAbmVvLnJyLmNvbT4KCUZpeGVkIFNlYXJjaFBhdGhBIHJldHVybiB2YWx1ZS4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGNsZWFuLXVwIG9mIHRleHR1cmUgJ2xvYWRpbmcnCgktIGFkZGVkIFNldENvbG9yS2V5IGNhbGxiYWNrIGZvciBhbHJlYWR5IGxvYWRlZCB0ZXh0dXJlcwoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSBwcm9ibGVtIHBvaW50ZWQgb3V0IGJ5IEtldmluIEhvbGJyb29rLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCWNvbW1jdHJsLmggbXVzdCBpbmNsdWRlIHByc2h0LmguCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVdhcm5pbmcgZml4LgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIElDT00gbWFjcm9zIHRoYXQgdXNlIE1pY3Jvc29mdCBzdHlsZQoJdmlydHVhbCBtZXRob2RzIHRvIGltcGxlbWVudCB0aGUgQ09NIGludGVyZmFjZXMgaW4gQysrLgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJQ29ycmVjdGlvbiBvZiBNdXRleCBoYW5kbGluZyBpbiBEZGVJbml0aWFsaXplVyBmb3IgY2FzZXMgb3RoZXIgdGhhbgoJMXN0IGNhbGwuIEFkZGl0aW9uIG9mIGluc3RhbmNlIGhhbmRsaW5nIHRvIERkZUNyZWF0ZVN0cmluZ0hhbmRsZUEsCglEZGVDcmVhdGVTdHJpbmdIYW5kbGVXLCBSZW1vdmVIU1pOb2RlcywgRnJlZUFuZFJlbW92ZUhTWk5vZGVzLiAgMXN0CgljdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlVW5pdGlhbGl6ZSwgbW92ZSBvZiBpbnRlcm5hbCBzdHJ1Y3R1cmUgZGVmcwoJaW4gZnJvbSBkZGVtbC5oLiBSZW1vdmVkIG5vbi1BTlNJIGNvbW1lbnQuCgoJKiBpbmNsdWRlL2RkZW1sLmg6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglNb3ZlZCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIHRvIGRkZW1sLmMsIGFsc28gcmVtb3ZlZCBub24tQU5TSSBjb21tZW50cywKCWFuZCBhZGRlZCBzcGVjIGZvciBEZGVRdWVyeUNvbmZJbmZvIGFuZCBEZGVRdWVyeUNvbnZJbmZvMTYuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBtZW1vcnkgbGVha3MgaW4gbWl4ZXJPcGVuMTYvbWl4ZXJDbG9zZSwKCW1pZGlPdXRPcGVuMTYvbWlkaU91dENsb3NlMTYsIHdhdmVJbk9wZW4xNi93YXZlSW5DbG9zZTE2LAoJbWlkaUluT3BlbjE2L21pZGlJbkNsb3NlMTYuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQWRkZWQgc2FuaXR5IGNoZWNrIGZvciB3aGl0ZXNwYWNlIGluIGZpbGUgbmFtZXMsIHZhcmlvdXMgb3RoZXIgZml4dXBzLgoKU3VuIEFwciAgNCAxMjo0ODoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJV01fTU9VU0VNT1ZFIGltcGxlbWVudGF0aW9uIGJ1ZyBmaXguCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSm9z6SBNYXJjb3MgTPNwZXogPGpvc2UubG9wZXpAdXBjbmV0LnVwYy5lcz4KCUFkZGVkIFNwYW5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogbWlzYy9jb21tLmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUZpeGVkIHRoZSBtb2RlbSBjb250cm9sIHBhcnQgb2YgRXNjYXBlQ29tbUZ1bmN0aW9uMTYuCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgZ290by4KCgkqIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5ubHMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW51bUNhbGVuZGFySW5mb0Egc3R1Yi4KClNhdCBBcHIgIDMgMTY6Mjc6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9rZXlib2FyZC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU3VzcGVuZCB0aGUgd2luZG93IGxvY2tzIGJlZm9yZSBEZWZLZXliRXZlbnRQcm9jIGFuZAoJRGVmTW91c2VFdmVudFByb2MuCgoJKiBpbmNsdWRlL3duYXNwaTMyLmgsIHByb2dyYW1zL3ZpZXcvZ2xvYmFscy5oLCBpbmNsdWRlL2FzcGkuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmFzcGkuaCwgaW5jbHVkZS93aW5pb2N0bC5oLCBpbmNsdWRlL3dpbm50Lmg6CglKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglNb3JlICNwcmFnbWEgZml4ZXMgKGlkZWEgT3ZlIEthYXZlbiwgbWlzdGFrZXMgYXJlIG1pbmUpLgoKCSogd2luZG93cy93aW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgc2VuZGluZyBhdG9tcyBpbiAoKENSRUFURVNUUlVDVCopbFBhcmFtKS0+bHBzek5hbWUgb2YKCVdNX0NSRUFURSBtZXNzYWdlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIFNldExhc3RFcnJvcigpcyBpbiBHZXRQcm9jQWRkcmVzcygpIGFuZCBMb2FkTGlicmFyeSgpLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCUNocmlzdGlhbiBTY2hsYWlsZSA8dXA5bkByei51bmkta2FybHNydWhlLmRlPgoJSW1wbGVtZW50ZWQgbWFrZXBhdGgsIHJhbmQoKSByZXR1cm5zIGNvcnJlY3QgcmFuZ2UsIGZpeGVkIGZwdXRjLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbXNkb3MvaW50MjEuYzoKCU1hc2sgb2ZmIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZXMgaW4gX2xjcmVhdCAoYnVnIHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCglNb3ZlZCBfbGNyZWF0MTZfdW5pcSB0byBpbnQyMS5jCgoJKiBsaWJ0ZXN0L2hlbGxvMy5jLCBsaWJ0ZXN0L2hlbGxvM3Jlcy5yYywgbGlidGVzdC9oZWxsbzQuYywgbGlidGVzdC9uZXcuYywgbGlidGVzdC9yb2xleC5jLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbGlidGVzdC92b2xpbmZvLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2FzdHMgdG8gKFNFR1BUUikgcmVtb3ZlZC4gVGhleSBkaWQgbm90aGluZyBhbnl3YXkuCglJbmNsdWRlcyBhZGRlZCBvciByZW1vdmVkIHdoZXJlIG5lY2Vzc2FyeS4KCVdpbjE2IGZ1bmN0aW9ucyByZXBsYWNlZCB3aXRoIHRoZWlyIFdpbjMyIGNvdW50ZXJwYXJ0cy4gQ29tbWVudHMgYWRkZWQKCXdoZXJlIGl0IHdhcyBpbXBvc3NpYmxlLgoJQ0FMTEJBQ0sgYWRkZWQgd2hlcmUgbmVjZXNzYXJ5LiBTb21lIGRlY2xhcmF0aW9ucyBmaXhlZC4KCUNvbnN0cnVjdHMgbGlrZSAiI2lmIFdJTkRPV1MiIGNvcnJlY3RlZC4gVXNpbmcgIiNpZmRlZiBfX3VuaXhfXyIgaW5zdGVhZC4KCURsZ1Byb2MgaW4gaGVsbG8zIHVzZXMgRW5kRGlhbG9nKCkgaW5zdGVhZCBvZiBEZXN0cm95V2luZG93KCkuCglMaXN0Ym94IGVuYWJsZWQgaW4gaGVsbG8zLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIEZyZW5jaCBrZXlib2FyZC4KCgkqIGxpYnRlc3QvaGVsbG8uYzogQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJRmFuY2llciB2ZXJzaW9uIG9mIGhlbGxvLmMgY291cnRlc3kgb2YgSHV3IERhdmllcy4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgY29tcGlsYXRpb24gb2YgdGhlIENvbnRyb2wgcGFuZWwuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCSdSZWFsaWduZWQnIHRoZSBsYXlvdXQgdGFibGUgYSBiaXQuIEFwcGxpZWQgdGhlIG5vbi1sYXRpbi0xIHN0dWZmIGFuZAoJdGhlIGRlYWQga2V5IG1hcHBpbmcgc3R1ZmYgdG8gdGhlIGFjdHVhbCBtYXBwaW5nIGNvZGUgdG9vLiAgUHJldHRpZWQKCXVwIHRoZSBmaXhtZSBtZXNzYWdlLiBBZGRlZCBhIGNoZWNrIHdoZXJlIGlmIHRoZSBrZXlzIG9mIHR3byBsYXlvdXRzCgltYXRjaCBleGFjdGx5LCB0aGUgb25lIHdpdGggdGhlIGJlc3QtbWF0Y2hpbmcga2V5Y29kZSBvcmRlciBpcyBjaG9zZW4sCglzbyB0aGF0IHRoZSBRV0VSVFkgYW5kIER2b3JhayBsYXlvdXRzIGNhbiBiZSBkaXN0aW5ndWlzaGVkLgoKCSogd2luMzIvZGV2aWNlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKGVtcHR5KSBzdHViIGZvciBPcGVuVnhESGFuZGxlLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW1pb09wZW4oKSBub3cgaGFuZGxlcyBjb3JyZWN0bHkgTU1JT19QQVJTRSBmbGFnLgoKCSogY29udHJvbHMvZWRpdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQmFja2dyb3VuZCBjb2xvciBmaXggd2hlbiBkaXNhYmxlZCBvciByZWFkIG9ubHkuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglUcmFuc2ZlcmVkIHRoZSB3aW5kb3cgc3RydWN0IG1lbW9yeSByZWxlYXNlIGZyb20gV0lOX0Rlc3Ryb3lXaW5kb3cgdG8KCVdJTl9SZWxlYXNlV25kUHRyLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRExHSVRFTVRFTVBMQVRFIHN0cnVjdHVyZSBoYWQgb25lIHRvbyBtYW55IG1lbWJlci4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgY3Jhc2ggaW4gZGVidWdnZXIuCgpGcmkgQXByICAyIDEwOjM3OjQyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGluY2x1ZGUvY29tYm8uaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXaW45NSBsb29rIGFuZCBmZWVsLgoKCSogd2luZG93cy9kZWZ3bmQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJV3JvdGUgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV01fUFJJTlQgbWVzc2FnZS4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtaXNjL2NhbGxiYWNrLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTdXNwZW5kIGFsbCB3aW5kb3dzIGxvY2tzIGJlZm9yZSB0aGUgY29udHJvbCBpcyBwYXNzZWQgdG8gdGhlCglhcHBsaWNhdGlvbi4KCUFsc28gZml4ZWQgc29tZSBidWdzIGluIGRjZS5jCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCS0gUmVtb3ZlIHNvbWUgb2xkIHJjIG1ha2Ugc3R1ZmYKCS0gIm1ha2UgY2xlYW4iIG9taXR0ZWQgc29tZSBpbmNsdWRlIHN1YmRpcnMKCgkqIHJlbGF5MzIvZGRyYXcuc3BlYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgRGxsQ2xhc3NGYWN0b3J5IHRvIERpcmVjdERyYXcuCgpUaHUgQXByICAxIDEyOjA1OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwbGl0IG9mZiBrZXlzeW0vZGVhZGNoYXIgLT4gY2hhciBtYXBwaW5nLCB1c2UgaXQgaW4gRGV0ZWN0TGF5b3V0LgoKCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJRml4ZXMgZm9yIGlnbm9yZWQgV1ZSX1tWSF1SRURSQVcgZmxhZ3MsIG1hZGUgbWluaW1pemF0aW9uIGluIG1hbmFnZWQKCW1vZGUgZ28gdGhyb3VnaCB3aW5kb3cgbWFuYWdlciwgc21hbGwgYnVnZml4ZXMgZm9yIG1lbnUgYW5kIHdpbmRvdwoJY29kZSwgZXh0ZW5kZWQgY2xpcGJvYXJkIGRyaXZlciBtb2RlbCB0byBoYW5kbGUgZm9ybWF0cyBvdGhlciB0aGFuCgl0ZXh0LgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRUNfVVNFRk9OVElORk8gbWVhbnMgZXMtPmNoYXJfd2lkdGgvMywgbm90IGVzLT5jaGFyX3dpZHRoLiBUaGlzIGlzCgl0cnVlIGZvciBtdWx0aWxpbmUgY29udHJvbHMgdG9vLCBhcyBteSB0ZXN0cyBzaG93LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaWNvbiBhbmQgc21hbGxpY29uIHZpZXdzLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgRE9TVk1fR2V0VGltZXIgc3Vydml2ZSBFQUdBSU4gZXJyb3JzLi4uCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYXN5bmMgY29tbSBidWZmZXJzIChidXQgcHJvYmFibHkgbm90IGJ1Z2ZyZWUpLCBhbmQgYWxvbmcKCXdpdGggdGhlbSwgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYXN5bmMgZXZlbnQgbm90aWZpY2F0aW9ucywgbW9uZyB0aGVtCglFbmFibGVDb21tTm90aWZpY2F0aW9uLiBSZW1vdmVkIGEgcHJldmlvdXMgaGFjayB0aGF0IHdhcyBmYWtpbmcgdGhlCglidWZmZXJzLCBzaW5jZSB3ZSBub3cgaGF2ZSByZWFsIGJ1ZmZlcnMuLi4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBDTl8qIGZsYWdzIHVzZWQgaW4gV01fQ09NTU5PVElGWS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJSW1wbGVtZW50IHRoZSBFbnVtQXR0YWNoZWRTdXJmYWNlIG1ldGhvZC4KCgkqIG9sZS9vbGUyLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gZm9yIE9sZUNyZWF0ZU1lbnVEZXNjcmlwdG9yLCBPbGVTZXRNZW51RGVzY3JpcHRvciBhbmQKCU9sZURlc3Ryb3lNZW51RGVzY3JpcHRvciBhbG9uZyB3aXRoIGEgYnVuY2ggb2YgaW50ZXJuYWxseSB1c2VkIG1ldGhvZHMKCWFuZCBkYXRhIHN0cnVjdHVyZXMuCgoJKiBvbGUvZ3VpZC5jLCBpbmNsdWRlL2luaXRndWlkLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCWluaXRndWlkLmggc2hvdWxkIG9ubHkgY29udGFpbiB0aGUgbWFjcm8gdGhhdCBkZWZpbmVzIHRoZSBndWlkcy4KCUFkZGVkIG9sZWN0bC5oIHRvIGd1aWQuYyBzbyBzb21lIG5lZWRlZCBndWlkcyBnZXQgZGVmaW5lZC4KCU1hZGUgR1VJRF9OVUxMIGFuIGFjdHVhbCBndWlkIHNldCB0byAwLDAsMC4uLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2dkaW9iai5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBHZGlTaWduYWxQcm9jKCkgc3R1Yi4KCgkqIG1pc2MvY2FsbGJhY2suYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3VzZXIuaCwgbG9hZGVyL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVVNFUjMyLlVzZXJTaWduYWxQcm9jIHRvIENhbGxvdXQgdGFibGUuCglJbXBsZW1lbnRlZCBidWlsdC1pbiBVc2VyU2lnbmFsUHJvYygpLgoJRG9uJ3QgYW5ub3VuY2UgV2luMy4xLXN0eWxlIFVTRVIgaGFuZGxlciBhbnkgbW9yZS4KCgkqIHdpbjMyL29yZGluYWxzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgUFJPQ0VTU19DYWxsVXNlclNpZ25hbFByb2MoKS4KCVNlbmQgVVNFUiBzaWduYWxzIGF0IHZhcmlvdXMgYXBwcm9wcmlhdGUgcGxhY2VzLgoJTW92ZWQgW0dTXWV0UHJvY2Vzc0R3b3JkKCkgdG8gc2NoZWR1bGVyL3Byb2Nlc3MuYy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvc2hsb2JqLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBbGwgMTkgRmlsZU1lbnVfKiBmdW5jdGlvbnMsIHNvbWUgYXMgc3R1YnMsIHNvbWUgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIQ0xTSURGcm9tU3RyaW5nLCBTdHJUb09sZVN0ciBpbXBsZW1lbnRlZC4KCVJMQnVpbGRMaXN0T2ZQYXRocyBzdHViLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURsbEdldFZlcnNpb24gKG5vdCB5ZXQgZXhwb3J0ZWQpLgoJU21hbGwgY2hhbmdlIHRvIFNIQXBwQmFyTWVzc2FnZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBEcnZDbG9zZSwgRHJ2RGVmRHJpdmVyUHJvYywgRHJ2T3BlbiwgRHJ2T3BlbkEsIERydlNlbmRNZXNzYWdlLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgU3RhY2tFbnRlcigpIGFuZCBTdGFja0xlYXZlKCkgc3R1YnMKCgkqIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRpbmcgaW1wbGVtZW50YXRpb24gb2YgTUNJIGNyZWF0b3IgdGFza3MKCUZpeGVkIGJ1ZyBpbiBNQ0lfT1BFTiBoYW5kbGluZyAodGhhbmtzIHRvIEFkYW0gZm9yIHJlcG9ydGluZyB0aGlzIG9uZSkKCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBtbVRhc2tDcmVhdGUxNgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY3JlYXRvciB0YXNrIHRvIE1DSSBzdHJ1Y3QuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUmVwbGFjZWQgMHhDMDAwIGJ5IHN5bWJvbGljIGNvbnN0YW50cy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNtYWxsID09LCAhPSBtaXh1cC4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgV01fTk9USUZZRk9STUFULgoKCSogbG9hZGVyL2VsZi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CgkiZm9vIiB3YXMgbm90IHRyYW5zbGF0ZWQgdG8gImZvby5zbyIgaW4gZWxmIGxvYWRlci4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWRCaXRtYXAxNigpL0xvYWRJbWFnZTE2KCkgY2FsbGluZyBzZXF1ZW5jZSBzaW1wbGlmaWVkLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWlzYy9jYWxsYmFjay5jLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IE5VTEwgTkUgcmVzb3VyY2UgaGFuZGxlcjsgY2FsbCB0aGUgZGVmYXVsdCBoYW5kbGVyIGRpcmVjdGx5LgoJUmVtb3ZlZCBXUFJPQ1MgLyBDYWxsYmFja3Mgc3VwcG9ydCBmb3IgV2luZUxpYiByZXNvdXJjZSBoYW5kbGVycy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCByZWxheTMyL3V0dGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFkZSBVbml2ZXJzYWwgVGh1bmsgbGlzdCBwZXItcHJvY2Vzcywgbm90IHN5c3RlbSBnbG9iYWwuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFRDTV9BREpVU1RSRUNULgoKCSogbXNkb3MvaW50MDkuYywgbXNkb3MvaW9wb3J0cy5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgImltcGxpY2l0IGRlY2xhcmF0aW9uIiB3YXJuaW5ncy4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmg6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJRml4ZWQgT3BlbkdMIGRldmljZXMgaW1wbGVtZW50YXRpb24uCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gVXNlcllpZWxkMTYsIHdoZW4gY3VycmVudCB0aHJlYWQgaXMgYSAzMiBiaXQgb25lIHdoaWNoIGhvbGQgdGhlCglXaW4xNkxvY2ssIG11c3QgdGFrZSBjYXJlIG9mIGEgTG9ja0NvdW50ID4gMS4KCgkqICovKi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3JlIGNvZGUgbW92ZWQgdG8gdGhlIFgxMSBkcml2ZXIgKGJpdG1hcCBhbmQgcGFsZXR0ZSBhbmQgbWlzYykuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBNYXIgMjggMTU6MjA6MDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlIERNKiBkZWZpbmVzIGZyb20gd2luYmFzZS5oIC0+IHdpbmdkaS5oLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglGaXhlZCBRdWVyeUludGVyZmFjZSBmdW5jdGlvbnMgZm9yIElEaXJlY3QzRCAxIGFuZCAyLgoKCSogb2xlL25scy9BdHRpYy9kbmsubmxzOiBBcHBhcmVudGx5IG5vIGxvbmdlciBuZWVkZWQuCgoJKiBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglDaGFuZ2VkIHNvbWUgZGVidWcgbWVzc2FnZXMgZnJvbSBvbmUgY2hhbm5lbCB0byBhbm90aGVyLCB0byBjbGVhbiB1cCBhCgliaXQgdGhlIGRlYnVnIGNoYW5uZWwgdXNhZ2UuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIENyZWF0ZVByb2Nlc3NBIHNvIGl0IGNhbiBoYW5kbGUgY29tbWFuZGxpbmVzIHdpdGggYXJndW1lbnRzIGFuZAoJbm8gLmV4ZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgR2V0TW9kdWxlSGFuZGxlMTYuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgUnVzc2lhbiBrZXlib2FyZCBzdXBwb3J0LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdHViIGZvciBTZXRTeXN0ZW1DdXJzb3IuCgoJKiB3aW4zMi9maWxlLmM6IFN0ZWZmZW4gTW9lbGxlciA8bW9lbGxlckBlYmkuYWMudWs+CglTZXRGaWxlQXR0cmlidXRlc0E6ICJpbXBsZW1lbnRlZCIgc2V0dGluZyBvZiBkaXJlY3RvcnkgZmxhZyBhcyB0ZXN0IG9mCgljb21wYXRpYmlsaXR5LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNoYW5nZXMgaW4gWDExRFJWX0tFWUJPQVJEX0RldGVjdExheW91dCBpbiBvcmRlciB0byBpbXBsZW1lbnQgUnVzc2lhbgoJa2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL3N0b3JhZ2UuYywgb2xlL3ZhcmlhbnQuYywgcmVsYXkzMi9vbGUzMi5zcGVjLCByZWxheTMyL29sZWF1dDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWFyb24gQmFybmVzIDxhYXJvbmJAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglCdW5kbGUgb2YgbmV3IHN0dWJzLgoKCSogbWlzYy9jcnRkbGwuYywgbWlzYy9kZGVtbC5jLCBvbGUvb2xlMmRpc3AuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBDcmVhdGVJb0NvbXBsZXRpb25Qb3J0IHN0dWIuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIEVWRU5UX1BlbmRpbmcoKSB0byBmbHVzaCBYMTEgb3V0cHV0IHF1ZXVlIGJlZm9yZSBibG9ja2luZyBpbgoJTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cygpLgoJRG9uJ3QgY2FsbCBFVkVOVF9XYWl0TmV0RXZlbnQgaW4gTVNHX1BlZWtIYXJkd2FyZU1zZy4KCVByb3RlY3Qgc3lzdGVtIHF1ZXVlIGFjY2VzcyBpbiBoYXJkd2FyZV9ldmVudCgpLgoKCSogd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9tZW51LmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgYnVncyBpbiB0aHJlYWQgc2FmZW5lc3MgZm9yIHduZCBzdHJ1Y3QuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2hlbGxvMy5jLCBsaWJ0ZXN0L2hlbGxvM3Jlcy5yYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWRlIGxpYnRlc3QvaGVsbG8zIHdvcmsgYWdhaW4sIG5vdyB3aXRoIFdpbmRvd3MtY29tcGF0aWJsZSByZXNvdXJjZQoJbG9hZGluZy4KCgkqIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJSml1bWluZyBMdW8gPGppdW1pbmdfbHVvQHlhaG9vLmNvbT4KCU1vdmVkIG1hY3JvIERFQ0xBUkVfSEFORExFKCkgKGluIG1zYWNtLmggYW5kIHd0eXBlcy5oKSB0byB3aW5kZWYuaCwKCXRoZW4gZGVsZXRlZCB0aGUgZHVwbGljYXRlZCB0eXBlZGVmcyAoaW4gaW1tLmggYW5kIG1tc3lzdGVtLmgpLgoKCSogbWlzYy9wcmludGRydi5jOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCVJld3JvdGUgRW51bVByaW50ZXJzQSwgYWRkZWQgQ3JpdGljYWxTZWN0aW9uIGFyb3VuZCBSZWdpc3RyeSByZWFkcyBhbmQKCWltcGxlbWVudGVkIFBSSU5URVJfSU5GT18yIHJlcXVlc3QuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBKb25hdGhhbiBOYXlsb3IgPGc0a2x4QHBvcC5hZ3JpLmNoPgoJQWRkZWQgU3dpc3MgR2VybWFuIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBhZGp1c3RlZCBwcmludGluZyBvZiByZWZjb3VudHMgdG8gYmUgZXF1YWwKCS0gY2xlYW5pbmcgdXAgaWNvbiBjYWNoZSBvbiBQUk9DRVNTX0RFVEFDSAoJLSBmaXhlZCBhc2NpaS91bmljb2RlIHVzZSBpbiBTSC9JTENyZWF0ZUZyb21QYXRoCgktIGZpeGVkIHNtYWxsIG1lbW9yeSBsZWFrIGluIHNoZWxsdmlldwoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVtcHR5IERPU1ZNX1F1ZXVlRXZlbnQgZm9yICFNWl9TVVBQT1JURUQuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDaGFuZ2VkIENIT09TRUNPTE9SW0FXXS5GbGFncyBmcm9tIFVJTlQgdG8gRFdPUkQuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9yZWdpb24uaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194dXRpbC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL3JlZ2lvbi5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194dXRpbC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJTW92ZWQgaHJnblVwZGF0ZSBmcm9tIGNsaWVudCB0byB3aW5kb3cgY29vcmRpbmF0ZXMsIG1hZGUgbm9uY2xpZW50CglwYWludGluZyBkZXBlbmQgb24gdGhlIHVwZGF0ZSByZWdpb24sIHJld29ya2VkIFNldFdpbmRvd1BvcygpIGFuZAoJUmVkcmF3V2luZG93KCkgdG8gc3BlZWQgdXAgdXBkYXRlIHJlZ2lvbiBjYWxjdWxhdGlvbiwgbWFkZSAtZGVza3RvcAoJd29yayBwcm9wZXJseSwgYWRkZWQgV01fQ0FOQ0VMTU9ERSBoZXJlIGFuZCB0aGVyZSwgZml4ZWQgc2V2ZXJhbAoJd2luZG93IGFjdGl2YXRpb24gYnVncyB0aGF0IGNyZXB0IGluIHNpbmNlIHRoZSBsYXN0IHRpbWUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJRml4ZWQgb2NjYXNpb25hbCBsb3NzIG9mIFNlbmRNZXNzYWdlKCkgcmV0dXJuIHZhbHVlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBpbml0aWFsaXNhdGlvbiBvZiB0aGUgcGl4bWFwX2RlcHRoIGZpZWxkIGluCglYbGliX0RpcmVjdERyYXdDcmVhdGUuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIGEgd2FybmluZy4KCgkqIG1zZG9zL2ludDJmLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUFkZGVkIHN0dWIgZm9yIGludDJmIDRiLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgbWVtb3J5IGxlYWsgaW4gd2F2ZU91dE9wZW4vd2F2ZU91dENsb3NlLgoKCSogZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vcmUgRXNjYXBlcyBmb3IgdGhlIFBvc3RTY3JpcHQgZHJpdmVyLgoKU2F0IE1hciAyNyAxNjo1NjoxMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkYXB0ZWQgdG8gdGhlIGludGVyZmFjZS9pbXBsZW1lbnRhdGlvbiBzZXBhcmF0aW9uLgoJTm93IHVzZXMgSUNPTV9USElTIHRvIGFjY2VzcyB0aGUgaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcy4KCVJlcGxhY2VkICd0aGlzJyB3aXRoICdUaGlzJyBmb3IgSUNPTV9USElTLgoJRGlyZWN0IGFjY2VzcyB0byB0aGUgdmlydHVhbCB0YWJsZSBoYXMgYmVlbiBlbGltaW5hdGVkIHRvby4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0byBpbmNsdWRlIGFsbCB0aGUgaW1wbGVtZW50YXRpb24gYXNwZWN0cyB0aGF0IHdlcmUgcHJldmlvdXNseQoJaW4gdGhlIHB1YmxpYyBpbmNsdWRlcy4KCgkqIGdyYXBoaWNzL3ZnYS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgdmlydHVhbCB0YWJsZQoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgYWxsIGltcGxlbWVudGF0aW9uIGFzcGVjdHMuCglNb2RpZmllZCB0byB1c2UgdGhlIGxhdGVzdCBJQ09NIG1hY3Jvcy4KCUFkZGVkIHRoZSBtYWNyb3MgZm9yIHVzZSBpbiBDLgoJQWRkZWQgdGhlIG1ldGhvZCBwYXJhbWV0ZXIgbmFtZXMgKHdoZW4gSSBoYWQgdGhlbSkuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc2VxdWVuY2Ugb2YgRExMX1BST0NFU1NfREVUQUNIIG5vdGlmaWNhdGlvbiBjYWxscy4KCU1vdmVkIFBFX01PRFJFRiBmbGFncyB0byBXSU5FX01PRFJFRiBsZXZlbC4KCUJldHRlciBoYW5kbGluZyBvZiBMb2FkTGlicmFyeUV4IGZsYWdzLgoJUEVfSW5pdFRscygpIGNoYW5nZWQgdG8gd29yayBvbmx5IG9uIHRoZSBjdXJyZW50IHRocmVhZC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgY21kIGxpbmUgaW4gbmV3X3Byb2Nlc3MgcmVxdWVzdC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsIHRocmVhZHMgY3JlYXRlZCB3aXRoIENyZWF0ZVRocmVhZCBhcmUgMzItYml0IHRocmVhZHMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlYWRpbmcgb2YgYmluYXJ5IHN0cmVhbXMgaW1wbGVtZW50ZWQgKFNIT3BlblJlZ1N0cmVhbSkuCgoJKiBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgaW50MjUgJiBpbnQyNiBlcnJvciBjb2RlLgoKCSogbG9hZGVyL3Rhc2suYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBVc2VyWWllbGQxNiB0byBiZSBjYWxsZWQgZnJvbSAzMi1iaXQgdGhyZWFkLgoKCSogaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglBbGJlcnQgRGVuIEhhbm4gPGFsYmVydGRAY29yZWwuY2E+CglBZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCB7U3xHfWV0Qml0bWFwQml0cyBpbiB4MTFkcnYuICBSZW1vdmVkIEJJVE1BUF9HZXRQYWRkaW5nLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIG1ldGFmaWxlIHJlY29yZGluZyBvZiBDcmVhdGVQYXR0ZXJuQnJ1c2guCgpUaHUgTWFyIDI1IDE2OjQyOjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZSB0aGUgQWRkQml0bWFwIGZ1bmN0aW9uLiBJbXBsZW1lbnQgZmxhdCB0b29sYmFyLiBDaGFuZ2UKCUNyZWF0ZVRvb2xiYXJFeC4gSW1wbGVtZW50IHBhcnRpYWxseSB0aGUgaG90IGJ1dHRvbnMgZm9yIHRvb2xiYXIuCgoJKiBtc2Rvcy9pbnQxNi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgR2V0IFNoaWZ0IEZsYWdzIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQ2hhbmdlZCBzdGRsaWIuaCB0byBzdHJpbmcuaC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBzdHJpbmcuaC4KCgkqIG1pc2MvZGRlbWwuYywgbXVsdGltZWRpYS9tc3ZpZGVvLmMsIG9sZS9zYWZlYXJyYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCB3aW4zMi9jb25zb2xlLmM6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglDaGFuZ2VkICJzdHJpbmdzLmgiIHRvICJzdHJpbmcuaCIuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglSYW5keSBXZWVtcyA8cndlZW1zQGhvbWUuY29tPgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvciBpZiBiaXRibHQgd2lkdGggb3IgaGVpZ2h0IGlzIG5lZ2F0aXZlLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkOgoJLSBzaG93aW5nIHRoZSBzZWxlY3RlZCB0YWIgYXMgaGlnaGxpZ2h0ZWQKCS0gc3VwcG9ydCBmb3IgZHJhd2luZyB0aGUgZm9jdXMgcmVjdGFuZ2xlCgktIGJhc2ljIGtleWJvYXJkIHN1cHBvcnQKCS0gc3VwcG9ydCBmb3IgYSB0YWIgd2l0aCBob3Jpem9udGFsIHNjcm9sbGluZy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUaHJlYWQtc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBwcm9maWxlIGZ1bmN0aW9ucyAoV2luZG93cyBhbmQgV2luZSkuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgbG9hZGVyL21haW4uYywgd2luZG93cy90aW1lci5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglNYWRlIHRoZSB0aW1lciBjb2RlIHRocmVhZCBzYWZlLgoKCSogd2luZG93cy9kaWFsb2cuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgcG9zc2libGUgZW5kbGVzcyBsb29wLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBMQl9HRVRDVVJTRUwgbWVzc2FnZSB0byByZXR1cm4gTEJfRVJSIG9uIGVtcHR5IGxpc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVVzZSB0aGUgbmV3IGhlYWRlciBmb3IgQ09NIGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YiBzaGVsbF82NTQuCgoJKiBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFRWTV9TT1JUQ0hJTERSRU5DQi4KCUltcGxlbWVudGF0aW9uIG9mIFRWSV9TT1JUIGluc2VydGlvbi4KCUZpeCBkaXNwbGF5IHByb2JsZW0gd2hlbiBUVklGX0lNQUdFfFRWSUZfU0VMRUNURURJTUFHRSB3ZXJlIG5vdCBzZXQuCglGaXggcHJvYmxlbXMgcmVsYXRlZCB0byBUVklTX0VYUEFOREVET05DRS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tLmVwZmwuY2g+CglGaXggcHJvYmxlbSBpbiBEUEFfUXVpY2tTb3J0IHdoZXJlIHRoZSBzb3J0IG9yZGVyIHdhcyBpbnZlcnRlZC4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGluZnJhc3RydWN0dXJlIGFuZCBkZWZpbml0aW9ucyBmb3IgZ2VuZXJhbC1wdXJwb3NlIGV2ZW50IGFuZCBJUlEKCWhhbmRsaW5nIGZvciB0aGUgV2luZSBkb3MgYm94LiBSZW1vdmVkIHRoZSBvYnNvbGV0ZSBNWl9UaWNrLiBBZGRlZAoJZXZlbnQgbWVzc2FnZSBsb29wLCBtZXNzYWdlIGhhbmRsaW5nLCBDTEkvU1RJIGhhbmRsaW5nLCBhbmQgbWluaW1hbAoJUElDIHN1cHBvcnQuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGhhbmRsaW5nIG9mIFNJR1VTUjIgZm9yIHRoZSBuZXcgZXZlbnQgaW50ZXJydXB0aW9uIGhhbmRsaW5nLAoJYnVtcGluZyB1cCB0aGUgcHJvdG9jb2wgcmV2aXNpb24uIE1hZGUgc29tZSBkZWJ1ZyBtZXNzYWdlcyBub3QgYmUKCW91dHB1dCB3aGVuIGl0J3Mgbm90IG5lY2Vzc2FyeS4KCgkqIG1zZG9zL2lvcG9ydHMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBwb3J0IDB4NjAgZm9yIGludCAweDA5LCBhbmQgcG9ydCAweDIwIGZvciBQSUMgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludGVycnVwdHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaW50IDB4MDkgYW5kIGludCAweDMzLgoKCSogbXNkb3MvaW50MzMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhIGludCAweDMzIGhhbmRsZXIsIHdpdGggYSBtaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZQoJbW91c2Ugcm91dGluZXMsIGluY2x1ZGluZyBjYWxsYmFja3MuCgoJKiBtc2Rvcy9pbnQwOS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGEgaW50IDB4MDkgaGFuZGxlciwgYW5kIGEgc2NhbmNvZGUgcXVldWUgdGhhdCBzaW11bGF0ZXMKCUlSUSAxIGluIHRoZSBkb3MgYm94LgoKCSogaW5jbHVkZS9kb2NvYmouaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglDcmVhdGlvbiBvZiBkb2NvYmouaC4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWxsb3cgZGVwdGggb2YgRElCIHRvIGRpZmZlciBmcm9tIGRlcHRoIG9mIGJpdG1hcCBpbiBHZXRESUJpdHMuCgpXZWQgTWFyIDI0IDE1OjA3OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jOiBBYm9ydCBvbiBpbnB1dCBlcnJvci4KCgkqIGluY2x1ZGUvb2xlZGxnLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCVBvcHVsYXRpb24gb2Ygb2xlZGxnLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy9wYWludGluZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGQgSXNXaW5kb3coKSBjaGVja3MgYWZ0ZXIgU2VuZE1lc3NhZ2UoKSByZXR1cm5zLgoKCSogbXNkb3MvaW50MTAuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gaW50MTAuCgoJKiBjb250cm9scy9jb21iby5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQ09NQk9fU2l6ZTogbWFpbnRhaW4gdGhlIGhlaWdodCBvZiB0aGUgUmVjdENvbWJvIHdoZW4gdGhlIHdpbmRvdyBpcwoJcmVzaXplZC4KCgkqIGluY2x1ZGUvaG9vay5oLCBpbmNsdWRlL3dpbnVzZXIuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRlZCB2YXJpb3VzIGRlZmluaXRpb25zLgoJTW92ZWQgQ1dQU1RSVUNUIGZyb20gaG9vay5oIHRvIHdpbnVzZXIuaCB0byBjb25mb3JtIHRvIHRoZSBTREsuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBhIGZldyBlbXB0eSBtYWNyb3MuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNVUlNPUklDT05fRGVzdHJveTogbWlzc2luZyBXSU5BUEkgYWRkZWQuCgoJKiBtaXNjL3dpbnNvY2suYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB0cmFuc2xhdGlvbiBmb3IgU09fUkNWVElNRU8gKGFzIHNlZW4gYnkgSUU0KS4KClR1ZSBNYXIgMjMgMTc6MDQ6MTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IENyZWF0ZSBzdGFydHVwIGluZm8gZm9yIHRoZSBpbml0aWFsIHByb2Nlc3MuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzZXJ2ZXIgcGlkIGFuZCB0aWQgaW4gaW5pdF90aHJlYWQgcmVxdWVzdCwgYW5kIHVzZSB0aGVtIGluCglDTElFTlRfSW5pdFRocmVhZC4KCgkqIGluY2x1ZGUvY29tcG9iai5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2JpbmRjdHguYywgb2xlL2NvbXBvYmouYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbW9uaWtlci5jLCBvbGUvc3RvcmFnZTMyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQ6CgktIElNb25pa2VyIGludGVyZmFjZSBmb3IgRmlsZU1vbmlrZXIsSXRlbU1vbmlrZXIsQW50aU1vbmlrZXIgYW5kCgkgIEdlbmVyaWNDb21wb3NpdGVNb25pa2VyCgktIElSdW5uaW5nT2JqZWN0VGFibGUgaW50ZXJmYWNlLCBhbmQKCS0gSUJpbmRDdHggaW50ZXJmYWNlLgoKCSogZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgU3RyZXRjaERJQml0cyBmb3IgdGhlIFBvc3RTY3JpcHQgZHJpdmVyLgoKCSogaW5jbHVkZS9taXNjZW11Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbWlzc2luZyBlbmRpbmcgcHJhZ21hIHBhY2suCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBzbWFsbCBidWcgaW4gR2V0Q29tbVN0YXRlMTYuIFBhcml0eSBjaGVjayBjYW4gYmUgZGlzYWJsZWQKCWV2ZW4gd2hlbiBhIHBhcml0eSBiaXQgaXMgdXNlZC4gU2V0Q29tbVN0YXRlMTYoKSBjYW4gb3ZlcnJpZGUgYmF1ZHJhdGUKCXNldHRpbmcgaW4gd2luZS5jb25mLgoKTW9uIE1hciAyMiAxNzo0NzozNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogY29wZSB3aXRoIHF1b3RlZCBhcmd1bWVudHMgZm9yIENyZWF0ZVByb2Nlc3MoKS4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB0eXBvIGluIFNpemVvZlJlc291cmNlKCkuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCWxzdHJjcHlBIGNhbid0IHVzZSBzdHJjcHkuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21vZHVsZS5oLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIC1kbGwgb3B0aW9uIGZvciB3aW5lbGliIHByb2dyYW1zLiAoTm90ZTogd2lsbCBub3QgcHJpbnQgd2FybmluZ3MKCW9uIGZhaWx1cmUgY3VycmVudGx5KS4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc3RybHdyLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglDb3NtZXRpY3MuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBuZXcgc3R1YnMgKG1tVGFza1hYWCwgbW1UaHJlYWRYWFgsIG1jaUV4ZWN1dGUpLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgY2FsbGluZyBtaXhlciBhcyBhIDMyIGJpdCBsb3cgbGV2ZWwgZHJpdmVyIChubyBsb25nZXIgMTYgYml0KQoJQWRkZWQgc3VwcG9ydCBmb3IgeWllbGQgcHJvYyBpbiBtY2kgc3RydWN0CglBZGRlZCBtbVRhc2tYWFgxNiBhbmQgbW1UaHJlYWRYWFgxNiBmdW5jdGlvbnMKCVJlZnJlc2hlZCBpbXBsZW1lbnRhdGlvbiBvZiAxNiBiaXQgbmF0aXZlICYgYXN5bmNocm9ub3VzIE1DSSBkcml2ZXIKCWNvbW1hbmQgKHRocm91Z2ggbW10YXNrLnRzaykuCgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgYnVncy4gU3RhcnRlZCBpbXBsZW1lbnRpbmcgbWl4ZXJNZXNzYWdlIGFzIGEgMzIgYml0CglmdW5jdGlvbiAobm8gbG9uZ2VyIDE2IGJpdCkuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIG1jaUV4ZWN1dGUuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgeWllbGQgcHJvYyBtZW1iZXJzIHRvIG1jaSBzdHJ1Y3QuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWl4ZXIgc3BlY2ZpYyBlcnJvciBjb2RlcywgZml4ZWQgdHlwZSBpbiBmdW5jdGlvbiBuYW1lLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm4gY29kZXMgZm9yIGRlZmF1bHQgZHJpdmVyIHByb2MuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1hZGUgTEJfR0VUQ1VSU0VMIHJldHVybiBmb2N1c19pdGVtIGlmIG5vIGl0ZW0gaGFzIGJlZW4gc2VsZWN0ZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJS2FsZXZpIEogSGF1dGFuaWVtaSA8b2gzZmdAb2gzdHIuZWxlLnR1dC5maT4KCUFkZGVkIEZpbm5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBncmFwaGljcy93aW5nLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oOgoJVmVrc2xlciBNaWNoYWVsIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgd2ludXNlcjE2LmggZnJvbSB4MTFkcnYuaC4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9wcmludGRydi5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglJbXBsZW1lbnRhdGlvbiBvZiBFbnVtUHJpbnRlcnNBLCBpbmZvIGxldmVsIDQgYW5kIDUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQ2hlY2sgaWYgdGhlIGJ1aWxkIGlzIHN0cmlwcGVkLCBhbmQgZGllIGlmIGl0IGlzLgoJQ2hlY2sgZm9yIEJhc2ggMi4wLCBhbmQgaWYgc28gdXNlIGRpZmZlcmVudCBTVERFUlItPlNURE9VVCByZWRpcmN0b3IKCSh0aGFua3MgUnlhbiBDdW1taW5nISkuCgoJKiB3aW5kb3dzL21kaS5jOiBWZWtzbGVyIE1pY2hhZWwgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4ZWQgInJlYWNoZWQgZW5kIG9mIG5vbiB2b2lkLi4uIiB3YXJuaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lc3NhZ2VCb3gzMkEgLT4gTWVzc2FnZUJveEEKCgkqIGxvYWRlci9tb2R1bGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRhdGlvbiBmb3IgRnJlZUxpYnJhcnlBbmRFeGl0VGhyZWFkLgoJTWFkZSBHZXRCaW5hcnlUeXBlID0gR2V0QmluYXJ5VHlwZUEuCgoJKiBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSdW4gV2luMzIgcHJvY2Vzc2VzIGluIHRoZWlyIG93biB0aHJlYWRzLgoJUHJvY2VzcyBleGl0IHNlcXVlbmNlIGFkYXB0ZWQuCgpTdW4gTWFyIDIxIDE5OjI2OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ2hhbmdlZCBwcm9jZXNzIGluaXRpYWxpc2F0aW9uIHRvIHVzZSB0aGUgbmV3IHNlcnZlciByZXF1ZXN0cy4KCVN0YXJ0ZWQgdG8gbW92ZSB0aGUgcHJvY2VzcyBpbml0IHRvIHRoZSByaWdodCBjb250ZXh0LCBub3QgZmluaXNoZWQgeWV0LgoKCSogaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2VydmVyL21haW4uYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJQWRkZWQgbmV3X3Byb2Nlc3MgYW5kIGluaXRfcHJvY2VzcyByZXF1ZXN0LgoJU3BsaXQgb3V0IHByb2Nlc3MgY3JlYXRpb24gZnJvbSB0aHJlYWQgY3JlYXRpb24uCglDaGFuZ2VkIHNlcnZlciBpbml0aWFsaXNhdGlvbiB0byBlbnN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBhIGN1cnJlbnQKCXRocmVhZC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglPbmUgc21hbGwgZXJyb3IgY29ycmVjdGVkIGFuZCB0aGUgMTAydGgga2V5Li4uCgoJKiBtaXNjL2NvbW0uYywgaW5jbHVkZS9jb21tLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBjb21tZXJyb3IgYW5kIGV2ZW50bWFzayBsb2NhbCB0byBlYWNoIHBvcnQgKGZvciB3aW4xNiksIG1hZGUgdGhlCgl3aW4xNiByb3V0aW5lcyB1c2UgcG9ydCBpbmRpY2VzIGluc3RlYWQgb2YgVU5JWCBmZHMgKHRoaXMgc2hvdWxkIG1ha2UKCXNvbWUgVmlzdWFsIEJhc2ljIHN0dWZmIGFuZCBzaW1pbGFyIGdhcmJhZ2Ugc3RhcnQgd29ya2luZyksIG1vdmVkIHNvbWUKCXN0dWZmIGFyb3VuZCAod2luMTYgcm91dGluZXMgYXQgdG9wIG9mIGZpbGUsIHdpbjMyIHJvdXRpbmVzIGF0Cglib3R0b20pLCBtYWRlIGEgY291cGxlIG9mIHdpbjMyIHJvdXRpbmVzIHVzZSB3aW4zMiBoYW5kbGVzLCBhbmQgYWRkZWQKCWEgZmV3IGhpbnRzIGFzIHRvIGhvdyB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIGJ1ZmZlcnMsIGJhc2VkIG9uCgl3aGljaCBFbmFibGVDb21tTm90aWZpY2F0aW9uIGNhbiBldmVudHVhbGx5IGJlIGltcGxlbWVudGVkLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgcHJvdG90eXBlcyBvZiBhIGNvdXBsZSBvZiBjb21tIHJvdXRpbmVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCB0eXBvLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2xlYXIgdXBkYXRlIHJlZ2lvbiBiZWZvcmUgV01fTkNERVNUUk9ZLgoKCSogaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIHJlbGF5MzIvdXR0aHVuay5jLCB3aW5kb3dzL3F1ZXVlLmM6CglHb3QgcmlkIG9mIFNZU1RFTV9MT0NLIG1hY3Jvcy4KClNhdCBNYXIgMjAgMDc6MTg6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jOiBObyBsb25nZXIgbmVlZCB0byBkZWxldGUgc3lzdGVtIGhlYXAgY3JpdGljYWwgc2VjdGlvbi4KCkZyaSBNYXIgMTkgMTc6MDQ6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjaGVjayBmb3IgZGVza3RvcCBpbiBTSEdldEZpbGVJbmZvLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1Z3MgaW4gTUNJIG1lc3NhZ2UgbWFwcGluZyAoMzJBID0+IDE2KS4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBXSU5fU2VuZERlc3Ryb3lNc2cuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVJlbW92ZWQgZGVmaW5pdGlvbnMgZm9yIEZJT05SRUFEIGFuZCBGSU9OQklPLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlcyBzb21lIHJldHVybiB2YWx1ZXMgZm9yIERlZkRyaXZlclByb2MuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGw6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHRoZSBjaG9wIGNvbW1hbmQgdGhhdCB3YXMgdGhlcmUgdG8gZ2V0IHJpZCBvZiBkb3MgXk0uCglUaGUgc2NyaXB0IG5vdyBwcm9jZXNzIG9ubHkgdW5peCBmaWxlIGZvcm1hdC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUhpZGUgZGlhbG9nIHdpbmRvd3MgY3JlYXRlZCBieSBDcmVhdGVEaWFsb2cqIGluIEVuZERpYWxvZyBqdXN0IGFzCglXaW5kb3dzIGRvZXMuCgoJKiBvbGUvdmFyaWFudC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVNldCB0eXBlIG9mIGRlc3RpbmF0aW9uIHZhcmlhbnQgaW4gVmFyaWFudENoYW5nZVR5cGVFeCBmdW5jdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4ZWQgRGFuaXNoIGtleWJvYXJkIGxheW91dC4KClRodSBNYXIgMTggMTc6Mzk6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlZm9udC5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZm9udGVuZ2luZS5jLCBpbmNsdWRlL3dpbi5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9semV4cGFuZC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2ludDEwLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvdHMgb2Ygd2FybmluZyBmaXhlZCwgb25lIG1pc3NpbmcgV0lOQVBJIGluIGRkcmF3LmMgYWRkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudHMgKy8tLCBQZ1VwL1BnRG93biwgSG9tZS9FbmQsIExlZnQvUmlnaHQsIFVwL0Rvd24uCgoJKiByZWxheTMyL21zdmZ3MzIuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cgltc3ZmdzMyLnNwZWMgYnJvdWdodCB1cCB0byBkYXRlIChmb3Jnb3QgaXQgaW4gbGFzdCBtc3ZmdzMyIHBhdGNoKS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbWlzYy90b29saGVscC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBNb2R1bGUzMiogc3R1YnMuCgpXZWQgTWFyIDE3IDE1OjU0OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQnJ1bm8gQWZvbnNvIDxicnVuby5hZm9uc29AY2Ftb2VzLnJubC5pc3QudXRsLnB0PgoJQWRkZWQgUG9ydHVndWVzZSBrZXl0YWJsZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglBZGRlZCBDYW5hZGlhbiBGcmVuY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgVUsga2V5Ym9hcmQgbGF5b3V0LgoKCSogbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYzoKCTxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQvaW1wbGVtZW50ZWQgdmFyaW91cyBpbnRlcnJ1cHQgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS93aW5pb2N0bC5oLCB3aW4zMi9rZXJuZWwzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHdhcm5pbmdzLiByZW1vdmVkIHNvbWUgdW5uZWNjZXNzYXJ5IGluY2x1ZGVzLCByZW1vdmVkIG9uZQoJZGlyZWN0IFdORCogYWNjZXNzIGluIGNvbnRyb2xzL21lbnUuYy4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGEgbW9yZSBkZWZlbnNpdmUgdmVyc2lvbiBvZiBXSU5fU2VuZERlc3Ryb3lNc2cuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUluc3RhbGwgaGVhZGVycyBmcm9tICQoU1JDRElSKS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgdGhlIG9ic29sZXRlIElDT00gbWFjcm9zLgoKCSogaW5jbHVkZS92ZncuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb3ZlZCB0aGUgQVBJcyBjbG9zZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQ09NIGludGVyZmFjZSwgcmVtb3ZlZCB0d28KCWR1cGxpY2F0ZXMgYW5kIGFkZGVkIDItMyBtYWNyb3MgZm9yIEEvVyBBUElzLgoKCSogbXNkb3MvaW50MTUuYzogPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglBZGRlZCBzb21lIHN0dWJzIGZvciBpbnQxNSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbnRlci10aHJlYWQgU2VuZE1lc3NhZ2UoKSBidWdmaXhlczoKCS0gSW5zZXJ0IG5ldyBtZXNzYWdlIHRvIGJlIHJlY2VpdmVkIGF0IHRoZSAqZW5kKiBvZiB0aGUgU01fUEVORElOR19MSVNULgoJLSBEbyAqbm90KiBwcm9jZXNzIHJlY2VpdmVkIG1lc3NhZ2VzIGluIFJlcGx5TWVzc2FnZSgpLgoJLSBDbGVhciB0aGUgUVNfU01SRVNVTFQgZmxhZyBvbmx5IGltbWVkaWF0ZWRseSBiZWZvcmUgd2FpdGluZy4KCgkqIG9sZS9zdG9yYWdlMzIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4gZXJyb3IgaWYgbm90IGEgdmFsaWQgT0xFIGNvbXBvdW5kIGZpbGUuCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOiBEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUZpeCBjcmFzaCBpZiBscHVDdXJEaXJMZW4gb3IgbHB1RGVzdERpckxlbj09MC4KCgkqIG1pc2MvY2Ryb20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIGNkcm9tLmMgY29tcGlsZSBvbiBGcmVlQlNEIChGcmVlQlNEIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSAqU0VFSywKCXN0cmFuZ2UpLgoKVHVlIE1hciAxNiAxNjoyOToyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBhc3MgQ3JlYXRlUHJvY2VzcygpIFNFQ1VSSVRZX0FUVFJJQlVURVMgdGhyb3VnaCB0byBQUk9DRVNTX0NyZWF0ZSgpLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGFzcyBuZXcgYXJndW1lbnRzIChzdXNwZW5kL2luaGVyaXQpIHRvIHRoZSBzZXJ2ZXIuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgc3VzcGVuZC9yZXN1bWVfdGhyZWFkIHJlcXVlc3RzIGluIHBoYXNlIFNUQVJUSU5HIGNvcnJlY3RseS4KCVNldCBpbml0aWFsIHN1c3BlbmQgY291bnQgZm9yIHRocmVhZHMgY3JlYXRlZCB3aXRoIENSRUFURV9TVVNQRU5ERUQuCglTZXQgJ2luaGVyaXRhYmxlJyBmbGFnIGZvciBwcm9jZXNzL3RocmVhZCBoYW5kbGVzLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVjZXNzYXJ5IHdpbi5oIGluY2x1ZGUsIGFkZGVkIG5vdyBuZWNlc3Nhcnkgb3RoZXIKCWluY2x1ZGVzICh3aW4uaCB1c2VkIG9ubHkgYnkgVVBET1dOIG5vdykuCgoJKiBtaXNjL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkZWJ1Zy5oIG11c3QgYmUgbGFzdCwgb3Igd2UgZ2V0IEVSUigpIG1hY3JvIHByb2JsZW1zIGFnYWluLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNsaWdodCBidWcgdGhhdCB3YXMgaW5jbHVkZWQgaW4gdGhlIGNoYW5nZSBmcm9tIFdORCBwdHIgdG8KCWh3bmQgbGFzdCB3ZWVrLgoKCSogbG9hZGVyL21haW4uYywgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgZ3JhcGhpY2FsIHByb2JsZW1zIG9mIHRoZSB0cmVldmlldyBhbmQgYWRkZWQgc3VwcG9ydCBMTUIKCWNsaWNrIG9uICsvLSBzaWduIHRvIG9wZW4gYW5kIGNsb3NlLgoJRml4ZWQgYSBidWcgaW4gaW1hZ2VsaXN0IHdoZXJlIHRoZSBsYXN0IGltYWdlIGNvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBdm9pZCB1bm5lY2Vzc2FyeSBlcnJvciBtZXNzYWdlcy4KCgkqIHdpbmRvd3MvaG9vay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUlnbm9yZSBISVdPUkQgb2YgYm9vbGVhbiByZXR1cm4gdmFsdWVzIG9mIDE2LWJpdCBob29rIHByb2NlZHVyZXMsIHRvCgltYXRjaCBidWdneSBXaW5kb3dzIGJlaGF2aW91ci4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIGJ1ZyBpbiBlbnVtZXJhdGlvbiBmdW5jdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBidWcgaW50cm9kdWNlZCBpbiBXSU5fRmluZFdpbmRvdy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJMCBpcyBhIHZhbGlkIGluZGV4IGZvciBhIHRhYiBpdGVtLgoJQ3JlYXRlU29saWRCcnVzaCB0YWtlcyBhIENPTE9SUkVGIGFzIGEgcGFyYW1ldGVyLgoJVGFiIGNvbnRyb2xzIHdlcmUgYWx3YXlzIGRpc3BsYXllZCBpbiB0aGUgdG9wIGxlZnQgY29ybmVyLgoKTW9uIE1hciAxNSAxNjoxNToxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0aGUgaW50ZXJmYWNlcyB0byB1c2UgdGhlIGxhdGVzdCBJQ09NIG1hY3Jvcy4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZC4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgYWxsIE1DSSBpbnRlcm5hbCBmdW5jdGlvbnMvdmFyaWFibGVzL21hY3JvcyB0byBtY2kuYy4KCUNoYW5nZWQgc29tZSBpbnRlcmZhY2UgbmFtZXMuCgoJKiBpbmNsdWRlL2RpZ2l0YWx2LmgsIG11bHRpbWVkaWEvbWNpYXZpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgdXNlIG9mIGRpZ2l0YWx2LmggZmlsZS4KCgkqIG11bHRpbWVkaWEvaW5pdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgaG93IGxpc3Qgb2YgbG9hZGFibGUgTUNJIGRyaXZlcnMgaXMgb2J0YWluZWQuCgoJKiBkb2N1bWVudGF0aW9uL2tleWJvYXJkOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlc2NyaWJlcyBpbiBuZXdiaWUgdGVybXMgaG93IHRvIGFkZCBuZXcga2V5Ym9hcmQgbGF5b3V0cy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQmV0dGVyIGNvbW1lbnRzLCBhbmQgYWRkZWQgQU5TSSBjb2RlcGFnZXMgaW4gdGFibGUuCglVUyBrZXlib2FyZCBjb250cmlidXRlZCBieSBVd2UgQm9ubmVzLgoJRnJlbmNoIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IEVyaWMgUG91ZWNoLgoJR2VybWFuIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IFVscmljaCBXZWlnYW5kLgoJRGFuaXNoIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IEJlcnRobyBTdHVsdGllbnMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CgktIFJlaW1wbGVtZW50YXRpb24gb2YgdGhlIENvbW1EbGcgRXh0ZW5kZWRFcnJvciBtZWNoYW5pc20gdXNpbmcgVExTLgoJLSBTb21lIGhlYWRlciBpbmNsdXNpb24gY2xlYW51cC4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tbWlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljIGZpeGVzLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlcyB1c2Ugb2YgbmV3IENEQVVESU9fU2VlaygpIGZ1bmN0aW9uLgoKCSogbXNkb3MvaW50MmYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglWYXJpb3VzIGZpeGVzIGZvciBNU0NERVggdHJhcHMuCgoJKiBtaXNjL2Nkcm9tLmMsIGluY2x1ZGUvY2Ryb20uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBuZXcgZnVuY3Rpb24gQ0RBVURJT19TZWVrKCkuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgMTYvMzIgYml0IGRyaXZlciBtZXNzYWdlcyBtYXBwaW5nIGFuZCBoYW5kbGluZy4KCUJldHRlciBwcm90ZWN0aW9uIGFnYWluc3QgYmFkIGhhbmRsZXMuCgoJKiBpbmNsdWRlL3BlZXhlLmgsIGxvYWRlci9yZXNvdXJjZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgTUVTU0FHRV9SRVNPVVJDRV8qIGRlZmluZXMgZnJvbSBTREsgaGVhZGVycywgdXBkYXRlZCBMb2FkTWVzc2FnZSoKCWNvZGUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCUZpeGVkIG1ha2UgaW5zdGFsbC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE1hciAxNCAxNzoyNTozMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW4uaCwgaXBjL2RkZV9wcm9jLmMsIG1pc2Mvc3B5LmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGlmMTYzMi90aHVuay5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBhY2Nlc3MgdG8gdGhlIHduZCBzdHJ1Y3QgdGhyZWFkLXNhZmUuCgoJKiAqLyo6IEppbSBBc3RvbiA8YXN0bzAwMDFAYWxnb25xdWluYy5vbi5jYT4KCVJlbmFtZWQgd2ludHlwZXMuaCB0byB3aW5kZWYuaC4KCgkqIG1lbW9yeS9oZWFwLmM6IE1ha2UgdGhlIHN5c3RlbSBoZWFwIGNyaXRpY2FsIHNlY3Rpb24gZ2xvYmFsLgoKCSogTWFrZS5ydWxlcy5pbjoKCUZpeGVkIE1ha2VmaWxlIHVwLXRvLWRhdGUgY2hlY2sgdG8gYXZvaWQgcmVsaW5raW5nIGFsbCB0aGUgb2JqZWN0CglmaWxlcy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVpbXBsZW1lbnRlZCBzb21lIGNvZGUgd2l0aG91dCB1c2luZyBYMTEuCgoJKiBncmFwaGljcy9kZHJhdy5jLCByZWxheTMyL2RkcmF3LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGZ1bmN0aW9ucyBEaXJlY3REcmF3RW51bWVyYXRlVyBhbmQgRGlyZWN0RHJhd0VudW1lcmF0ZUV4Vy4KCgkqIGluY2x1ZGUvcGVleGUuaCwgbG9hZGVyL3BlX2ltYWdlLmM6IFRoZW9kb3JlIFMuIEhldGtlIDx0c2hAZ3RlLm5ldD4KCUFkZGVkIHRyYWNpbmcgZm9yIGRlbGF5ZWQgaW1wb3J0cyBhbmQgcmVtb3ZlZCB0aGUgZml4bWUuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBHZXRTaG9ydFBhdGhOYW1lQS9XLgoKCSogbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaTogTmF0aGFuIFpvcmljaCA8d2ZpbGFyZG9AZnVzZS5uZXQ+CglBbGxvdyB0aGUgZmlsZSBuYW1lcyBhbmQgcGF0aHMgZm9yIHRoZSByZWdpc3RyeSBmaWxlcyAodXNlci5yZWcgYW5kCglzeXN0ZW0ucmVnKSB0byBiZSBzcGVjaWZpZWQgaW4gYSBbUmVnaXN0cnldIHNlY3Rpb24gb2Ygd2luZS5pbmkgb3IKCW90aGVyIGNvbmZpZyBmaWxlLgoKCSogbWVtb3J5L3N0cmluZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBPZW1Ub0Fuc2lCdWZmIGZvciByZWFsIFdpbjMxIGJlaGF2aW9yLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXJzdCBhdHRlbXB0IGF0IHN1cHBvcnRpbmcgZGlmZmVyZW50IGtleWJvYXJkIGxheW91dHMgd2l0aCB0aGVpcgoJY29ycmVjdCBzY2FuY29kZSBtYXBwaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FLCBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdSZXN0b3Jlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1NldC5zaCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgY29tbWFuZCBsaW5lIHRvb2wgdG8gYWNjZXNzIHRoZSByZWdpc3RyeS4KCgkqIHJjL3dpbmVyYy5jOiBGaXhlZCBjb21waWxhdGlvbi4KCgkqIHJjLy5jdnNpZ25vcmU6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSWdub3JlIGdlbmVyYXRlZCBmaWxlcy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbGNjLmg6IEZpeGVkIG1ha2UgZGVwZW5kLgoKCSogb2xlL29sZTIuYywgb2xlL29sZWZvbnQuYywgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF1bCBRdWlubiA8cGF1bHFAbGludXhtYXN0ZXIuaHVuZ3J5Y2F0cy5vcmc+CglNYW55IG5ldyBkZWZpbmVzLCBhbmQgc3RydWN0cyB0byBoZWxwIGNvbXBpbGUgTUZDLiBBcyB3ZWxsIGFzIGEgZmV3CglPTEUgY29ycmVjdGlvbnMgZnJvbSBlYXJsaWVyLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBHZXRNb2R1bGVIYW5kbGUxNiBvbmx5IGxvb2sgZm9yIG1vZHVsZSBuYW1lcywgbm90IHBhdGggbmFtZXMuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKZXNzIEhhYXMgPGRlc21va2VAaG90bWFpbC5jb20+CglBZGRlZCBzb21lIG1vcmUgdmdhIHZpZGVvIG1vZGVzLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglQcmV2ZW50IFgxMSBlcnJvcnMgd2hlbiBYQ3JlYXRlV2luZG93IGlzIGNhbGxlZCB3aXRoIHplcm8gd2lkdGggb3IKCWhlaWdodC4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogQ2FvbGFuIE1jTmFtYXJhIDxDYW9sYW4uTWNOYW1hcmFAdWwuaWU+CglBZGRlZCBtZXRhZmlsZSBzdXBwb3J0IGZvciBFeHRGbG9vZEZpbGwuCgoJKiBjb250cm9scy9idXR0b24uYzoKCURpcmsgVGhpZXJiYWNoIDx0aGllcmJhY2hAbWF0aGVtYXRpay50dS1kYXJtc3RhZHQuZGU+CglQYWludCBncmF5IHRleHQgb24gZ3JheSBiYWNrZ3JvdW5kIGluIGNoZWNrYm94ZXMvcmFkaW9idXR0b25zIGJ5CglzdGlwcGxpbmcuIEFsc28gY2hhbmdlZCB0aGUgYnJ1c2ggdXNlZCBpbiB0aGlzIGNhc2UgdG8gZ2l2ZSBiZXR0ZXIKCXJlYWRhYmlsaXR5IHdpdGggWCBmb250cy4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvdGFwaS5oLCBtaXNjL0F0dGljL3RhcGkzMi5jLCBtaXNjL01ha2VmaWxlLmluLCByZWxheTMyL3RhcGkzMi5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGluY2x1ZGUvZGVidWcuaDoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIChuZWFybHkpIGFsbCBUQVBJIGZ1bmN0aW9ucyBhcyBzdHVicy4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9jb21tLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pY2hhZWwgTWNDb3JtYWNrIDxNaWNoYWVsLk1jQ29ybWFja0BhbGNhdGVsLmNvbS5hdT4KCUJhc2ljIHN1cHBvcnQgZm9yIFdJTjMyIHNlcmlhbCBjb21tdW5pY2F0aW9ucyBBUEkuCglNb2RpZnkgRE9TRlNfT3BlbkRldmljZSB0byBhbGxvdyBvcGVuaW5nIG9mIENPTSBwb3J0cy4KCUNoYW5nZSBXaW4zMiBjb21tIGZ1bmN0aW9ucyB0byBhY2NlcHQgZmlsZSBoYW5kbGUuCglBZGQgZGVjbGFyYXRpb24gb2YgQ09NU1RBVDMyIHN0cnVjdHVyZS4KCgkqIGdyYXBoaWNzL3ZnYS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgc2lsbHkgVkdBLWVtdWxhdGlvbiBwYWxldHRlIGJ1Zy4KCgkqIG1zZG9zL2ludDEwLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgdWdseSB3YXJuaW5ncyAoY2F1c2VkIGJ5IHVnbHkgZXJyb3JzKS4KCgkqIG1zZG9zL2Rvc21lbS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglCdWcgZml4LgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIG9sZS9ndWlkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gSVNoZWxsRm9sZGVyIGFuZCBJRW51bUlETGlzdCBhcmUgdXNpbmcgdGhlIG5ldyBDT00gaGVhZGVycwoJLSBmaXhlZCBzb3J0IG9yZGVyIGZvciBmb2xkZXJzIGFuZCBkcml2ZXMKCgkqIFJFQURNRTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDb3JyZWN0ZWQgbG9jYXRpb24gb2YgRkFRLgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGdWxseSBpbXBsZW1lbnRlZCBEaXJlY3QgQ29uc29sZSBJbnB1dC4KClNhdCBNYXIgMTMgMTg6MjA6MjcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpZjE2MzIvdGh1bmsuYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbmV3bHkgaW50cm9kdWNlZCBhbmQgc29tZSBsZWZ0b3ZlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSB0aGUgc3RhbmRhcmQgbWFjcm9zIGZvciBHZXRUZXh0RXh0ZW50UG9pbnQKCWFuZCBHZXRUZXh0RXh0ZW50UG9pbnQzMi4KCgkqIGluY2x1ZGUvcHJzaHQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBzb21lIFNlbmRNZXNzYWdlMzJBIHRoYXQgZXNjYXBlZCB0aGUgcmVuYW1pbmcuCgoJKiBpbmNsdWRlL29sZTIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglPbiB3aW5kb3dzIG9sZTIuaCBpbmNsdWRlcyBvbGVhdXRvLmggYW5kIHNvbWUgcHJvZ3JhbXMgZGVwZW5kIG9uIHRoaXMuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL29sZTJkaXNwLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZXMgaW4gdGhlIFN5c0FsbG9jU3RyaW5nIGZ1bmN0aW9ucyBwcm90b3R5cGVzLiBJdCdzIG1vc3RseSAnY29uc3QnCglwcm9ibGVtcyB0aGF0IHByZXZlbnQgcmVndWxhciBjb2RlIGZyb20gY29tcGlsaW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2Nkcm9tLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2RyaXZlLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2hhcmRkaXNrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2Nkcm9tLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2Zsb3BweSwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyMiwgaW5jbHVkZS9iaXRtYXBzL29pY19oZGlzaywgaW5jbHVkZS9iaXRtYXBzL29pY19uZXR3b3JrLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaWxlIG9wZW4gZGlhbG9nIG5vdyB1c2VzIGljb25zIGluc3RlYWQgb2YgYml0bWFwcy4KCgkqIGluY2x1ZGUvdmZ3Lmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBBVkkqIGNsYXNzIGludGVyZmFjZSB0byBuZXcgSUNPTV8gbWV0aG9kcy4KCgkqIG11bHRpbWVkaWEvbXN2aWRlby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgcmVsYXkzMi9hdmlmaWwzMi5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0YXJ0ZWQgb24gYXZpZmlsMzIgaW1wbGVtZW50YXRpb24gKG9ubHkgc3R1YnMgY3VycmVudGx5KS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVpbXBsZW1lbnRlZCBEcmF3Rm9jdXNSZWN0IHdpdGhvdXQgdXNpbmcgWDExLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQxMC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgbW9kZSBzZXR0aW5nIHRoaW5ncyBhcyB3ZWxsIGFzIFZFU0EgYWRkaXRpb25zIGFuZCBvdGhlcgoJdGhpbmdzLiBDbGVhbmVkIHVwIERPU01FTV9CaW9zRGF0YSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBvbGUvb2xlZm9udC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIElQZXJzaXN0U3RyZWFtIGludGVyZmFjZSBvbiB0aGUgT0xFIGZvbnQgb2JqZWN0LgoKCSogbWlzY2VtdS9lbXVsYXRlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIGZ1bmN0aW9uIEJYPTYgcm91bmQgU1QwIHRvIGludGVnZXIuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luZ2RpLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJLSBDaGFuZ2VkIExWTV9TRVRJVEVNUE9TSVRJT04gLT4gTFZNX1NFVElURU1QT1NJVElPTjMyCgkgICAgICAgICAgTFZNX1NFVElURU1QT1NJVElPTjE2IC0+IExWTV9TRVRJVEVNUE9TSVRJT04KCS0gQWRkZWQgc29tZSBtaXNzaW5nIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zIHRvIHdpbmdkaS5oCgktIEFkZGVkIHByb3BlciBkZWZpbmVzIGZvciBHZXRDaGFyV2lkdGhzWFhYCgktIEFkZGVkIGMrKyBwcm90ZWN0aW9uIHRvIHdpbmdkaS5oCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG1vc3RseSBjbGVhbnVwIGFmdGVyIHRoZSByZW5hbWluZwoJLSBpbXBsZW1lbnRlZCBTSElMQ3JlYXRlRnJvbVBhdGgKCS0gc21hbGwgY2hhbmdlZCB0byBTSEdldEZpbGVJbmZvCgoJKiBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvd2ludXNlci5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNoYW5nZWQgdGhlIERMR1RFTVBMQVRFIGFuZCBETEdJVEVNVEVNUExBVEUgdHlwZXMgdG8gYWRoZXJlIHRvIHRoZSBBVwoJc3RydWN0dXJlIGZvciBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY2RlcnIuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU1vdmVkIGVycm9yIGNvZGVzIHRvIGNkZXJyLmguCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglGaXggQ3JlYXRlUHJvY2VzcyB0byBoYW5kbGUgbHBDb21tYW5kbGluZSBiZXR0ZXIuCgoJKiB3aW4zMi9pbml0LmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglDaGFuZ2UgR2V0U3RhcnR1cEluZm9BL1cgdG8gcmV0dXJuIHRoZSByZWFsIFN0YXJ0dXBJbmZvLgoKCSogd2luZG93cy9tZGkuYzogR3V5IEFsYmVydGVsbGkgIDw8Z2FsYmVydGVAbmVvLmxydW4uY29tPj4KCUhhbmRsZSBudWxsIHduZFB0ciBmb3IgbWRpIHdpbmRvdy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUZpeGVkIGEgY291cGxlIG9mIG1pc3NpbmcgI2RlZmluZXMgZm9yIFdpbjMyIEFQSSBmdW5jdGlvbnMgd2l0aAoJQVNDSUkvVW5pY29kZSB2ZXJzaW9ucy4KCgkqIHdpbjMyL25ld2Zucy5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvd3Byb2NzLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL3V0dGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgVVRSZWdpc3RlciBhbmQgVVRVblJlZ2lzdGVyLgoKCSogaWYxNjMyL2RkZW1sLnNwZWMsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL2RkZW1sLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6Cgk8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJQWRkZWQgY29kZWQgc3R1YnMgZm9yIERkZVF1ZXJ5Q29udkluZm8gKDE2ICYgMzIgYml0KSwgRGRlQWRkRGF0YSAoMzIKCWJpdCksIERkZUFiYW5kb25UcmFuc2FjdGlvbiAoMzIgYml0KSwgRGRlSW1wZXJzb25hdGVDbGllbnQgKDMyKQoJRGRlU2V0UXVhbGl0eU9mU2VydmljZSwgRGRlU2V0VXNlckhhbmRsZS4KCUNvcnJlY3RlZCBoZWFwIGhhbmRsaW5nIGluIERkZUluaXRpYWxpemVXLCByZWZpbmVkIENyZWF0ZU11dGV4IGVycm9yCgloYW5kbGluZy4KCUdlbmVyYWwgdGlkeWluZy4KCgkqIGlmMTYzMi9vbGVjbGkuc3BlYywgaW5jbHVkZS9vbGUuaCwgb2xlL29sZWNsaS5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIE9sZVF1ZXJ5TGlua0Zyb21DbGlwLCBPbGVRdWVyeUNyZWF0ZUZyb21DbGlwLAoJT2xlQ3JlYXRlTGlua0Zyb21DbGlwLCBPbGVDcmVhdGVGcm9tQ2xpcCwgT2xlUXVlcnlUeXBlLAoJT2xlUmV2ZXJ0Q2xpZW50RG9jLCBPbGVFbnVtT2JqZWN0cy4KCgkqIHJlbGF5MzIvb2xlY2xpMzIuc3BlYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCURlZmluaXRpb24gZm9yIE9sZUNyZWF0ZUxpbmtGcm9tQ2xpcCB3YXMgaW5jb3JyZWN0LgoKCSogbG9hZGVyL3Jlc291cmNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFzayBvdXQgdGhlIHVwcGVyIDEyIGJpdHMgZnJvbSB0aGUgcmVzb3VyY2VpZCwganVzdCBsaWtlIHdpbjk1IGRvZXMuCgoJKiBCVUdTOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVwZGF0ZWQgYnVnIGxpc3QgYnkgbXkga25vd2xlZGdlIG9mIHRoZW0uCgoJKiBvbGUvc3RvcmFnZTMyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJU3RnQ3JlYXRlRG9jZmlsZSBhY2NlcHRzIE5VTEwgYXMgYSBmaWxlIG5hbWUuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IENhb2xhbiBNY05hbWFyYSA8Q2FvbGFuLk1jTmFtYXJhQHVsLmllPgoJQWRkZWQgc3VwcG9ydCBmb3IgYWx0ZXJuYXRlIERJQkJJVEJMVCBsYXlvdXQuCgoJKiBkZWJ1Z2dlci9tc2MuYzogU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglCdWZmZXIgc2l6ZSBidWcgaW4gTG9jYXRlRGVidWdJbmZvRmlsZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUltcHJvdmVkICJlcnJvciIgbWVzc2FnZSByZWFkYWJpbGl0eS4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IEZpeGVkIHByb2Nlc3Nfc2lnbmFsZWQgKHRoYW5rcyB0byBVd2UgQm9ubmVzKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRml4ZWQgbWFrZSBkZXBlbmQKCkZyaSBNYXIgMTIgMTc6NDI6NTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBpbmNsdWRlL2lwYWRkcmVzcy5oLCBpbmNsdWRlL3VwZG93bi5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVJlcGxhY2VkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFdORCBzdHJ1Y3R1cmUgYnkgY29ycmVzcG9uZGluZyBjYWxscyB0bwoJV2luMzIgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGUgYXV0b21hdGVkIHJlbmFtaW5nLgoKCSogcmVzb3VyY2VzLy5jdnNpZ25vcmU6IEFkZGVkIHN5c3Jlc19SdS5zCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9saXN0dmlldy5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIGxpc3R2aWV3IGNvbnRyb2wgdG8gYWRkIHRoZSByZXBvcnQgdmlldyBhbmQgZml4IHNvbWUgYnVncwoJZm9yIHRoZSBsaXN0IHZpZXcuCgoJKiBtaXNjL3NoZWxsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1c2Ugb2YgV05EIHN0cnVjdC4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgI2lmZGVmIEhBVkVfV0NUWVBFX0guCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgV05EIHN0cnVjdC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1lc3NhZ2UgdHJhbnNsYXRpb24gZm9yIFdNX1dJTklOSUNIQU5HRS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglvYm1fY2xvc2VkXzk1IHNob3VsZCBub3QgYmUgZHJhd24gaW52ZXJ0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgV05EIHN0cnVjdC4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXByb3ZlZCBwZXJmb3JtYW5jZS4KCgkqIHdpbmRvd3MvZGNlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPFN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlIGEgbmV3IERDIGluIEdldERDRXggd2hlbiBub25lIGFyZSBhdmFpbGFibGUuCgoJKiBvbGUvb2xlMmRpc3AuYywgb2xlL3ZhcmlhbnQuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBEb3NEYXRlVGltZVRvVmFyaWFudCgpIGFuZCBTeXNBbGxvY1N0cmluZ0J5dGVMZW4oKSBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9jb21iby5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2hhbmdlZCB0aGUgYnV0dG9uIHN0YXRlIHRvICJ1cCIgYXMgc29vbiBhcyBpdCBpcyBrbm93biB0aGF0IHRoZQoJc2VsZWN0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZCwgc28gdGhlIGJ1dHRvbiBpcyByZWRyYXduIGluIHRoZSAidXAiCglzdGF0ZS4KCgkqIG1pc2NlbXUvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbXVsYXRlICh3ZWxsLCBpZ25vcmUpIG1vdiBjcjAsZWF4IGFuZCBtb3YgZWF4LGNyMC4KCldlZCBNYXIgMTAgMTg6MDM6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIG9sZS9jb21wb2JqLmMsIG9sZS9ndWlkLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlY2xpLmMsIG9sZS9vbGVkbGcuYywgb2xlL29sZW9iai5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvQXR0aWMvd2ludHlwZXMuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUydmVyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRlZCBhIGxvdCBvZiBuZXcgT0xFIGludGVyZmFjZXMuCgoJKiBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9zeXNyZXMuYywgcmVzb3VyY2VzL3N5c3Jlc19SdS5yYzoKCUFsZXhhbmRlciBLYW5hdmluIDxha0BjYXZlLmhvcC5zdHUubmV2YS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIFJ1c3NpYW4gbGFuZ3VhZ2UuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglUZW1wb3JhcnkgZml4OiBBY3RpdmF0ZSAxNi1iaXQgc3lzdGVtIHRpbWVyIGNhbGxiYWNrIHJvdXRpbmVzLCBidXQKCXNraXAgY2FsbGluZyB0aGVtIGlmIHRpbWVyIHNpZ25hbCBvY2N1cmVkIHdoaWxlIGN1cnJlbnQgdGhyZWFkIHdhcwoJaG9sZGluZyB0aGUgV2luMTZMb2NrICh0byBwcmV2ZW50IDE2LWJpdCBzdGFjayBjb3JydXB0aW9uKS4KCgkqIGluY2x1ZGUvc3lzbGV2ZWwuaCwgc2NoZWR1bGVyL3N5c2xldmVsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIF9Db25maXJtV2luMTZMb2NrIChLRVJORUwzMi45NikuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gc29tZSBjbGVhbiB1cCBpbiBoYW5kbGluZyBvZiBkZXB0aAoJLSBtb3JlIGRlcHRoIGNvbnZlcnNpb24gcm91dGluZXMgZm9yIFgxMSAoMTUsIDE2IGFuZCAzMiAtPiA4KQoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBTZW5kTWVzc2FnZVRpbWVvdXQoKSBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYzoKCU1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KCUFkZGVkIEJveWVyLU1vb3JlIHRleHQgc2VhcmNoLgoKCSogaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVU0VSLkRlc3Ryb3lJY29uMzIgdG8gQ2FsbG91dCBzdHJ1Y3QuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvY29udmVydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZWxldGVkIE5FX0ZyZWVQRVJlc291cmNlKCkuCgoJKiBpbmNsdWRlL3VzZXIuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCB3aW5kb3dzL3VzZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBjdXJzb3IvaWNvbiBoYW5kbGluZyBjaGFuZ2VzLgoKCSogbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBhY2Nlc3NpbmcgYm90aCBORSBhbmQgUEUgcmVzb3VyY2VzIHdpdGggYm90aCAxNi0gYW5kIDMyLWJpdCBBUEkuCglIb29rIGN1cnNvci9pY29uIGRlc3RydWN0aW9uIGludG8gRnJlZVJlc291cmNlIChsaWtlIFdpbjk1KS4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgV2luOTUtc3R5bGUgc2hhcmVkIGN1cnNvci9pY29uIGNhY2hlLgoJTWVyZ2VkIE5FIGFuZCBQRSByZXNvdXJjZSBoYW5kbGluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyMjoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBmb2xkZXIgYml0bWFwIGNvbG9ycyBmb3IgOGJwcC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBDYW9sYW4gTWNOYW1hcmEgPENhb2xhbi5NY05hbWFyYUB1bC5pZT4KCVdpbmRvd3MgZG9lc250IGFsbG93IGRhc2hlZCBhbmQgZG90dGVkIGxpbmVzID4gMS4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcmVmZXJlbmNlLWNvdW50aW5nIHByb2JsZW0gaW4gdGhlIGV4dGVybmFsIGxvY2sgbWVjaGFuaXNtLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzaW1wbGUgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2hlbGxWaWV3IG9iamVjdHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hlbGwuaDoKCVNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJQWRkZWQgc29tZSBleHRyYSBDU0lETHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBBbGxvdyBscENvbW1hbmRMaW5lID09IE5VTEwgaW4gQ3JlYXRlUHJvY2VzcygpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBUb0FzY2lpIHNob3VsZCBub3QgZ2VuZXJhdGUgQVNDSUkgY29kZSB3aGVuIGtleS11cCBmbGFnIGlzIHNldC4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBdm9pZCB1bm5lY2Vzc2FyeSBHcmFwaGljc0V4cG9zZSBldmVudHMuCgoJKiBvbGUvc2FmZWFycmF5LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGluZGV4IGNhbGN1bGF0aW9ucyBvZiB0aGUgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyBvZiBhIHNhZmVhcnJheS4KCUZpeGVkIGEgd3JvbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFZUIHNpemVzIGFycmF5LgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIFJlbGVhc2VTdGdNZWRpdW0gbWV0aG9kLgoKVHVlIE1hciAgOSAxNzo0Nzo1MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHNvcnRlZCBBUEkgYnkgZ3JvdXBzCgktIG5ldyBzdHViczogIE50UXVlcnlEaXJlY3RvcnlGaWxlLCAgWndRdWVyeURpcmVjdG9yeUZpbGUKCS0gaW1wbC46IFJ0bEFsbG9jYXRlSGVhcCwgUnRsQ3JlYXRlSGVhcCwgUnRsRGVzdHJveUhlYXAsIFJ0bEZyZWVIZWFwLAoJICBSdGxHZXREYWNsU2VjdXJpdHlEZXNjcmlwdG9yLCBSdGxHZXRTYWNsU2VjdXJpdHlEZXNjcmlwdG9yCgktIGltcGwuIGJ5IFJleCBKb2xsaWZmIChyZXhAbHZjYWJsZW1vZGVtLmNvbSk6IFJ0bFRpbWVUb1RpbWVGaWVsZHMsCgkgIFJ0bFRpbWVGaWVsZHNUb1RpbWUKCgkqIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgbmV3IHByb3RvdHlwZXMuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYywgaW5jbHVkZS9tb2R1bGUuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4IHVzZSBvZiB3cm9uZyBwcm90b3R5cGUgZnJvbSBudGRsbC5oLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWtlIG1vcmUgZnVuY3Rpb25zIGp1c3QgY2FsbGluZyBkb3duIHRvIG50ZGxsLgoJTmV3OiBHZXRTZWN1cml0eURlc2NyaXB0b3JTYWNsLgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFjY2VwdCAiTm9ybWFsIiBhcyBhIHZhbGlkIEFGTSB3ZWlnaHQuCgoJKiBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglTbWFydGVyIHdheSBvZiBzZWFyY2hpbmcgZm9yIGEgZnJlZSBibG9jay4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERpcmVjdGVkWWllbGQoKSBvbmx5IHRvIDE2LWJpdCB0YXNrcyBpbiBSZXBseU1lc3NhZ2UoKS4KCgkqIGxpYnRlc3QvaGVsbG81LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIGNhc3Qgc28gaGVsbG81IGNvbXBpbGVzIGFnYWluLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRG9uJ3QgY29weSBscHN0ckZpbGVUaXRsZSBpZiBnaXZlbiBOVUxMIHBvaW50ZXIgZm9yIHRoaXMuCglEZWxwaGkgMi4wIHBhc3NlcyBOVUxMIGZvciBscHN0ckZpbGVUaXRsZSB0byBHZXRPcGVuL1NhdmVGaWxlTmFtZS4KCgkqIG1pc2Mvd2luc29jay5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IGJyb2tlbiBfY29udmVydF9zb2Nrb3B0IGZvciBJUFBST1RPX1RDUCBjYXNlcywgYWRkZWQgVENQX05PREVMQVkuCgoJKiBtc2Rvcy9kcG1pLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX19hc21fXyBmaXggYXMgc3VnZ2VzdGVkIGJ5IDxkYW5pZWxAbWF0LnV0ZnNtLmNsPiBEYW5pZWwgU2VycGVsbCwKCXJlbW92ZWQgYWRkaXRpb25hbCAiZWF4IiBmcm9tIGNsb2JiZXIgbGlzdCwgc28gZWdjcy1jdXJyZW50IGxpa2VzIGl0LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGVGaWxlTWFwcGluZyBTZXRMYXN0RXJyb3IoMClzIG9uIG5ld2x5IGNyZWF0ZWQgbWFwcGluZ3MuCgpTdW4gRmViIDI4IDIwOjA1OjEyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIG1pc2MvQXR0aWMvY29tbWRsZy5jLCBtaXNjL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglLbGFhcyB2YW4gR2VuZCA8S2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUNyZWF0ZSBhIG5ldyBzdWJkaXJlY3RvcnkgZm9yIHRoZSBjb21tb24gZGlhbG9nIGJveCBETEwgYW5kIG1vdmUgYWxsCgljb2RlIGZyb20gL21pc2MvY29tbWRsZy5jIHRvIHRoaXMgZGlyZWN0b3J5LiAgQWxzbyBtYWRlIGEgc3RhcnQgaW4KCWRvY3VtZW50aW5nIHRoZSBBUEkgY2FsbHMuCgoJKiBtaXNjL3dpbnNvY2suYywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGluY2x1ZGUvQXR0aWMvd2ludHlwZXMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBpbmNsdWRlIG9wdGltaXphdGlvbnMuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1zZG9zL2RwbWkuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9iamVjdHMvZGMuYywgb2xlL3N0b3JhZ2UzMi5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGEgbG90IG9mIHdhcm5pbmdzIHVzaW5nIFdJTkVfVU5VU0VELCBjYXN0cywgY29tbWVudGluZyBvdXQgYW5kCglhZGRpdGlvbmFsIHt9LiBSZXdyb3RlIEdldENyZWF0aW9uTW9kZUZyb21TVEdNIHNvIHdlIGRvbid0IGdldAoJInBvc3NpYmxlIHVzZSBvZiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIi4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1DSV9PUEVOX0RSSVZFUl9QQVJNUyAtIEFkZCB3aW4zMiB2ZXJzaW9uIG9mIHN0cnVjdHVyZS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBtc2Rvcy9pbnQyMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIENyZWF0ZURpcmVjdG9yeSBMYXN0RXJyb3IgcmV0dXJucyB0byBtYXRjaCBXaW4zMiAoZm91bmQgb3V0IGJ5CglleHBlcmltZW50KS4gQWRhcHRlZCBpbnQyMSBDcmVhdGVEaXJlY3RvcnkgY2FsbCB0byBzdGlsbCByZXR1cm4gdGhlCgljb3JyZWN0IERPUyBlcnJvciBjb2RlcyBhY2NvcmRpbmcgdG8gUmFscGggQnJvd24uCgoJKiBncmFwaGljcy9kZHJhdy5jLCByZWxheTMyL2RkcmF3LnNwZWM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgZnVuY3Rpb24gRGlyZWN0RHJhd0VudW1lcmF0ZUV4CgktIGFkZGVkIChvciBjb3JyZWN0ZWQpIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBlbnVtZXJhdGlvbiBmdW5jdGlvbnMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJldHRlciBkZXRlY3Rpb24gb2Ygb2xkIChpLmUuIG5vbiBPcGVuR0wgMS4yIGNvbXBsaWFudCkgdmVyc2lvbiBvZiBNZXNhLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgPHN5cy90eXBlcy5oPi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIHRoZSBidXR0b24gc3RhdGVzIGFzIHJldHVybmVkIGJ5IElzRGxnQnV0dG9uQ2hlY2tlZCgpLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgcXVvdGVkIGZpbGUgbmFtZXMgaW4gQ3JlYXRlUHJvY2VzcygpLgoKCSogZmlsZXMvZmlsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvZmlsZS5jLCB3aW4zMi9jb25zb2xlLmM6CglDTElFTlRfV2FpdFJlcGx5OiBkb24ndCBjbGVhciBsYXN0IGVycm9yIG9uIHN1Y2Nlc3M7IGZpeGVkIGNhbGxlcnMKCWFjY29yZGluZ2x5IChiYXNlZCBvbiBhIHBhdGNoIGJ5IEp1ZXJnZW4gU2NobWllZCkuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKZXNzIEhhYXMgPGRlc21va2VAaG90bWFpbC5jb20+CglBZGRlZCBzb21lIHN1cHBvcnQgYW5kIHN0dWJzIGZvciBWRVNBIHRvIG1zZG9zL2ludDEwLmMuCgoJKiBvbGUvYmluZGN0eC5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2lmcy5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZWRsZy5jLCBvbGUvb2xlZm9udC5jLCBvbGUvb2xlb2JqLmMsIG9sZS9vbGVzdnIuYywgb2xlL3NhZmVhcnJheS5jLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS90eXBlbGliLmMsIG9sZS92YXJpYW50LmMsIHRvb2xzL2ZudDJiZGYuYywgd2luZG93cy9kaXNwbGF5LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbWVtb3J5L3N0cmluZy5jLCBtaXNjL3NvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgY29udHJvbHMvbWVudS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGluY2x1ZGUgb3B0aW1pc2F0aW9ucyBhbmQgZml4ZXMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCW9wZW5fb2JqZWN0IHNob3VsZCByZXR1cm4gRVJST1JfRklMRV9OT1RfRk9VTkQgd2hlbiB0aGUgbmFtZWQgb2JqZWN0CglpcyBub3QgZm91bmQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UuCgoJKiBzY2hlZHVsZXIvQXR0aWMvazMyb2JqLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9BdHRpYy9rMzJvYmouaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3Rvb2xoZWxwLmM6CglVc2Ugc2VydmVyIGhhbmRsZXMgZGlyZWN0bHkgZm9yIFdpbjMyIGhhbmRsZXMuIFJlbW92ZWQgdXNlIG9mIEszMk9CSi4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCBvbGUvb2xlZm9udC5jLCBvbGUvb2xlb2JqLmMsIHNjaGVkdWxlci9BdHRpYy9rMzJvYmouYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbWlzYy9uZXR3b3JrLmMsIG1pc2MvcG9ydC5jLCBtaXNjZW11L21haW4uYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmMsIGNvbnNvbGUveHRlcm0uYywgY29udHJvbHMvbGlzdGJveC5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJLSBmaXhlZCBtaXNzaW5nIHN0ZGxpYi5oIGFuZCBzdHJpbmcuaCBpbmNsdWRlcyBldmVyeXdoZXJlCgktIHJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWVkZWQgc3RkbGliLmggYW5kIHN0ZGlvLmggaW5jbHVkZXMKCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglQcm9jZXNzIGFuZCB0aHJlYWQgaWQgbm93IHVzZSB0aGUgc2VydmVyLXNpZGUgaWQgaW5zdGVhZCBvZiBhbgoJb2JmdXNjYXRlZCBwb2ludGVyLgoKCSogbGlidGVzdC9ndWl0ZXN0LmMsIGxpYnRlc3QvZ3VpdGVzdC5yYywgbGlidGVzdC9ndWl0ZXN0LnJoOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUaGUgV2luZG93cyBHVUkgYmVoYXZpb3VyIHRlc3RlciB1c2VkIG9uIHRoZSBXaW5kb3dzIGNvbXB1dGVyLiAgSXQgd2FzCgl1c2VkIHdpdGggQm9ybGFuZCBDKysgNC41MiwgYnV0IHNob3VsZCBiZSBlYXN5IHRvIGFkYXB0IHRvIFdpbmVsaWIgYnkKCXdob2V2ZXIgZmVlbHMgbGlrZSBpdDsgSSBoYXZlbid0LCBJIGp1c3QgcmVsZWFzZWQgdGhpcyB1c2VmdWwgdGVzdCBhcHAKCWluIGNhc2UgaXQgd291bGQgYmVuZWZpdCBvdGhlciBkZXZlbG9wZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9ndWk6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGhpcyBmaWxlIGRldGFpbHMgdGhlIHJlc3VsdHMgKG1lc3NhZ2UgdHJhY2VzKSB0aGUgR1VJIGJlaGF2aW91cgoJdGVzdGVyIGFwcCBnYXZlIHVuZGVyIHJlYWwgV2luZG93cyBmb3IgdmFyaW91cyBldmVudHMuIEl0IHdhcyB1c2VmdWwKCWZvciBzb21lIG9mIG15IGRlYnVnZ2luZyBhdCBsZWFzdCwgcGVyaGFwcyBpdCBjb3VsZCBiZSBvZiBzb21lIHVzZSB0bwoJb3RoZXIgV2luZSBHVUkgZGVidWdnZXJzIGFzIHdlbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3dpbm5scy5oLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2Rucy5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBTb2xhcmlzIGZpeGVzLiA8cmVzb2x2Lmg+IG5lZWRzIDxhcnBhL25hbWVzZXIuaD4sIHNpZ19jb250ZXh0LmgKCW5lZWRzIHRvIGRlZmluZSBIQU5ETEVSX0NPTlRFWFQsIHdjdHlwZS5oIGRvZXMgbm90IGxpa2UgJ3dzcHJpbnRmJwoJZGVmaW5lZCwgbXNkb3MvZHBtaS5jIG5lZWRzICJzdGFja2ZyYW1lLmgiIHRvbywgYW5kIG11bHRpbWVkaWEvZHNvdW5kLmMKCW5lZWRzICJ3aW51c2VyLmgiLgoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHZXRCaW5hcnlUeXBlW0FXXSBtb3ZlZCB0byBsb2FkZXIvbW9kdWxlLmMsIG1vZGlmaWVkIHRvIHJlY29nbml6ZSAuQ09NCglhbmQgLlBJRiBmaWxlcy4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kcG1pLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gQ3JlYXRlUHJvY2VzcyBjaGFuZ2VzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglORSBtb2R1bGVzIGFkYXB0ZWQgdG8gQ3JlYXRlUHJvY2VzcyBjaGFuZ2VzLgoJTG9hZE1vZHVsZTE2L0xvYWRMaWJyYXJ5MTYgcmVvcmdhbml6YXRpb24uCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2UgcmVvcmdhbml6ZWQ6CgktIFJlbW92ZWQgaW5zdGFuY2UgZGF0YSBzZWdtZW50IGZvciBhbGwgYnV0IE5FIG1vZHVsZXMuCgktIENoZWNrIGJpbmFyeSB0eXBlIGluIENyZWF0ZVByb2Nlc3MgYmVmb3JlIGxvYWRpbmcgbW9kdWxlLgoJLSBVbml4IHByb2Nlc3MgY3JlYXRpb24gbW92ZWQgZnJvbSBXaW5FeGVjIHRvIENyZWF0ZVByb2Nlc3MuCgktIEJ1Z2ZpeDogZmlsbCBpbiB0aGRiLT50ZWIuaHRhc2sxNiBtZW1iZXIgY29ycmVjdGx5LgoKCSogd2luZG93cy9pbnB1dC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb2RlIHRvIHJldHVybiBkZWZhdWx0IGxhbmd1YWdlIGNvZGUgYXMga2V5Ym9hcmQgbGF5b3V0LgoJLSBJbXBsZW1lbnRlZCBvdGhlciBzdHVicyBhc3NvY2lhdGVkIHdpdGgga2V5Ym9hcmQgbGF5b3V0OgoJICBHZXRLZXlib2FyZExheW91dE5hbWVBLCBBY3RpdmF0ZUtleWJvYXJkTGF5b3V0LAoJICBMb2FkS2V5Ym9hcmRMYXlvdXRbQVddLCBHZXRLZXlib2FyZExheW91dExpc3QuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9yZXNvdXJjZS5oLCBtaXNjL0F0dGljL2NvbW1kbGcuYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgdGhlIFByaW50RGxnQSBzdHViLgoKCSogb2xlL25scy9ubGQubmxzOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU5vdyBjb21wbGlhbnQgdG8gdGhlIER1dGNoIHN0YW5kYXJkcy4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRklORF9XbmRQdHIgc2hvdWxkIG5vdCBzZXQgRVJST1JfSU5WQUxJRF9XSU5ET1dfSEFORExFIHdoZW4gaFduZD0wLgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgZG9zbWVtIGJsb2NrIHJlc2l6ZSBidWdzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIG5vIG1vcmUgM0QgY2FwYWJpbGl0aWVzIGlmIERpcmVjdDNEIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluCgktIHNvbWUgZGVidWcgbWVzc2FnZXMgY2xlYW4tdXAgKHJlcGxhY2VkIGZwcmludGZzIGJ5IERVTVBzKQoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2UgZ290IHBhc3NlZCBhIE5VTEwgRGlhbGVjdCBwdHIgYW5kIGFjY2Vzc2VkIGl0IHVucHJvdGVjdGVkLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIG1lbW9yeS92aXJ0dWFsLmM6CglBZGRlZCBzdXBwb3J0IGZvciBtYXBwaW5ncyB3aXRoIG5vIGFzc29jaWF0ZWQgZmlsZS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJlbW92ZWQgZHN0X2hhbmRsZSBpbiBkdXBsaWNhdGVfaGFuZGxlIHJlcXVlc3QuCglBZGRlZCBpbmhlcml0IGZsYWcgaW4gY3JlYXRlX21hcHBpbmcgcmVxdWVzdC4KCgkqIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgb2xlL3NhZmVhcnJheS5jLCBvbGUvdmFyaWFudC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgYXJyYXlzIGFuZCBzYWZlIGFycmF5cyBpbiBWQVJJQU5UIGRhdGEKCXN0cnVjdHVyZXMuIEFsc28gbW92ZWQgdGhlIFNBRkVBUlJBWSBkZWZpbml0aW9uICh5ZXQgYWdhaW4pIHRvIHRoZQoJb2JqX29sZWF1dC5oIGZpbGUuCgoJKiB3aW5lLmluaTogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgRmlsZXN5c3RlbSBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyMjoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWRlIGZvbGRlciBpY29ucyBncmF5LXllbGxvdyBpbnN0ZWFkIG9mIGJsdWUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJT3JkZXIgb2Ygc2VuZCBtZXNzYWdlIHByb2Nlc3Npbmcgd2FzIG5vdCByZXNwZWN0ZWQgYW5kIHRoZSBtZXNzYWdlCglzdGFja2VkIGxhc3QgZmluaXNoZWQgYWZ0ZXIgdGhlIG1lc3NhZ2Ugc3RhY2tlZCBmaXJzdC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGNoZWNrcyB0byBndWFyZCBhZ2FpbnN0IE5VTEwgYWN0aXZlIHdpbmRvdy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCURvbid0IGNoZWNrIGNoaWxkcmVuIG9mIGRpc2FibGVkIG9yIGludmlzaWJsZSBjb250cm9scyBmb3IgZGlhbG9nCglrZXlib2FyZCBhY2NlbGVyYXRvcnMuIEZpeGVzIHByb2JsZW1zIHdpdGggZGlhbG9ncyB3aXRoIHRhYiBib3hlcy4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBDb1Rhc2tNZW1SZWFsbG9jIEFQSS4gQWxzbyBjbGVhbi11cCBhcm91bmQgdGhhdCBBUEkKCWNhbGwuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBtaXNzaW5nIFJlbGVhc2UuCglTVEdNX0NSRUFURSBzaG91bGQgdHJhbnNsYXRlIHRvIENSRUFURV9BTFdBWVMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZyaSBGZWIgMjYgMTI6MzM6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFVwZGF0ZWQgZm9yIG5ldyBuYW1pbmcgY29udmVudGlvbnMuCgoJKiAqLyo6IExhcmdlLXNjYWxlIHJlbmFtaW5nIG9mIGFsbCBXaW4zMiBmdW5jdGlvbnMgYW5kIHR5cGVzIHRvCiAJdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIG5hbWVzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaHUgRmViIDI1IDE4OjExOjQwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYzogQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJRm9yIHZhcmlvdXMgcmVhc29ucyBzb21lIG9mIG91ciBsaWJ3aW5lIGV4ZWN1dGFibGVzIG11c3QgaGF2ZSBhICIuIiBpbgoJdGhlaXIgZmlsZSBuYW1lcy4gVGhlICIuIiBjYXVzZXMgdHJvdWJsZSB3aGVuIHRoZSBmaWxlIG5hbWUgaXMgdXNlZCBhcwoJdGhlIGNsYXNzIG5hbWUgZm9yIGFuIFggcmVzb3VyY2UgYXMgd2luZSBkb2VzIGZvciBjb21tYW5kIGxpbmUgcGFyc2luZwoJdW5kZXIgWC4KCgkqIHdpbmRvd3Mvd2luLmM6CglNYWtlIEdldFdpbmRvd0xvbmcoR1dMX0hXTkRQQVJFTlQpIHJldHVybiB0aGUgc2FtZSB0aGluZyBhcwoJR2V0UGFyZW50MzI7IHN1Z2dlc3RlZCBieSBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4uCgoJKiBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQWRkZWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpIG9uIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluCgloZWFkZXIgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUFkZGVkICJUaGUgRWFzeSBXYXkiIGFuZCAiVGhlIEhhcmQgV2F5IiwgbGFyZ2VseSBmYXZvcmluZyB0aGUgZWFzeSB3YXksCgl3aGljaCB1c2VzIG15IGJ1Z19yZXBvcnQucGwgc2NyaXB0LgoJQWRkZWQgaW5mbyBvbiBhIGNvbW1hbmQgdGhhdCBjYW4gYmUgcnVuIG9uIGFsbCBzaGVsbHMgdG8gcHJpbnQgZGVidWcKCW1zZ3MgdG8gYSBmaWxlIGFuZCBub3QgdG8geHRlcm0uCgoJKiBtc2Rvcy9kcG1pLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOZWVkcyB0aHJlYWQuaCBmb3Igbm9uLUxpbnV4LgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGluZyBvZiBuZXcgZnVuY3Rpb25zIHRvIG1ha2UgdGhlIHduZCBzdHJ1Y3QgdGhyZWFkIHNhZmUuIEFkZGluZyBvZgoJaXJlZkNvdW50IGluIHduZCBzdHJ1Y3QuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIGdldGJrZ2QgYW5kIGRlZmluZSBIQVZFX0dFVEJLR0QuCgoJKiBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL29sZWZvbnQuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJTWFueSBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIHRoYXQgb3JpZ2luYXRlZCBmcm9tIG9sZWlkbC5oLCBvYWlkbC5oIGFuZAoJb2NpZGwuaCBzZXBhcmF0ZWQgaW50byBzb21ld2hhdCByZWxldmFudCBvYmpfKiBmaWxlcy4KCgkqIGZpbGVzL2RyaXZlLmMsIG9sZS9jb21wb2JqLmMsIHJlc291cmNlcy9zeXNyZXMuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXhlZCB3YXJuaW5nIGFuZCBjb21waWxhdGlvbiBlcnJvcnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgaW5jbHVkZXMgb2Ygd2luZS8qIGhlYWRlcnMuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1hZGUgbWVzc2FnZSAiUmVzb3VyY2Ugbm90IGZvdW5kIiBXQVJOLgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGluY2x1ZGUvc2hsb2JqLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAQ09SRUwuQ0E+CgktIFVzZSB0aGUgbmV3IENPTSBkZWZpbml0aW9uIG1hY3JvcyBpbiB0aGUgaGVhZGVyLgoJLSBQdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvYmplY3QgaW4gdGhlIGNvbnRtZW51LmMuCgktIE1ha2UgYXBwcm9wcmlhdGUgbmFtZSBjaGFuZ2VzIGluIGNvbnRtZW51LmMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6eWdvYkBjb3JlbC5jYT4KCU1vZGlmaWVzIHBhcmFtZXRlciBsaXN0IG9mIGEgY291cGxlIG9mIGZ1bmN0aW9ucyB0byBjb21wbHkgd2l0aCBTREsuCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJU2Nyb2xsREMzMiBtb2RpZmllZCB0byByZXR1cm4gcmVjdCBpbiBsb2dpY2FsIGNvb3JkaW5hdGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAQ09SRUwuQ0E+CglBZGRzIEMrKyBuYW1lbGVzcyB1bmlvbiBzdXBwb3J0IHRvIHRhZ1ZBUklBTlQuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAQ09SRUwuQ0E+CglNb3ZlZCBzb21lIGRlZmluaXRpb25zIG91dCBvZiBvbGVhdXRvLmggYW5kIGludG8gb2FpZGwuaCB0byBjb25mb3JtIHRvIHRoZSBTREsuCglSZW1vdmVkIGEgcmVkdW5kYW50IGluY2x1ZGUuCglBZGRlZCBzb21lIGMrKyBwcm90ZWN0aW9uLgoKV2VkIEZlYiAyNCAxNTo1ODo1MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHBpZGwgc3RydWN0dXJlIHRvIG1hdGNoIHRoZSBwaWRsJ3MgdXNlZCBpbiBsbmstZmlsZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIHJlYWRpbmcgb2YgKi5sbmstZmlsZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgluZXcgZmlsZSwgaW5jbHVkaW5nIHRoZSBJU2hlbGxMaW5rIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIHByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2U6IGNhbGwgUEVfQ3JlYXRlTW9kdWxlIGluIHRoZQoJY29udGV4dCBvZiB0aGUgbmV3IHByb2Nlc3MgKGluIFRBU0tfQ2FsbFRvU3RhcnQpLgoJQ2hhbmdlZCBhbGwgUEUvTW9kdWxlIHJvdXRpbmVzIHNvIGFzIHRvIGFsd2F5cyBvcGVyYXRlIG9uIHRoZSBjdXJyZW50Cglwcm9jZXNzOyBhZGFwdGVkIGFsbCBjYWxsZXJzLgoKCSogbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2lvcG9ydHMuYywgbXNkb3MvdnhkLmMsIG1zZG9zL3htcy5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvdHlwZWxpYi5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy9idWlsZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBsb2FkZXIvbWFpbi5jLCBtZW1vcnkvYXRvbS5jLCBtaXNjL2xzdHIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3B0aW1pemVkIGF3YXkgbW9yZSBpbmNsdWRlcywgcmVhZGRlZCBzb21lICNpbmNsdWRlcyBmb3IgbmVjZXNzYXJ5Cglwcm90b3R5cGVzLgoKCSogbXNkb3MvaW50MmYuYzogPHNtaWxAbWVjaGF0cm9uaWthLmh1PgoJQWRkZWQgbG93LWxldmVsIE5ldHdhcmUgaW5zdGFsbGF0aW9uIGNoZWNrLgoKCSogaW5jbHVkZS9jb25zb2xlLmgsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBHZXRCYWNrZ3JvdW5kQ29sb3IgY2FsbCB0byB0aGUgY29uc29sZSBzdHJ1Y3QuIFdpbGwgYmUgdXNlZAoJbGF0ZXIuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUJ1Z2ZpeGVzIGZvciBJTlQgMTAvMEIgKFNldEJhY2tncm91bmRDb2xvcikgdG8gd29yayBwcm9wZXJseS4KCShJbnRlcnJ1cHQgbGlzdCBkaWQgbm90IGhhdmUgY29ycmVjdC4pCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN0dWJzIGZvciB0d28gbWlzc2luZyBtZXRob2RzIG9mIERJbnB1dC4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBidWcuCgoJKiBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBsYXJnZXIgZmlsZXMuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGJ1ZmZlciBvdmVycnVuIHByb2JsZW1zIHdpdGggR2V0RElCaXRzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBTZW5kTWVzc2FnZSBidWdzLgoKCSogb2xlL2NvbXBvYmouYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4IENPTV9FeHRlcm5hbExvY2tGcmVlTGlzdCB0byBkbyBub3QgZmFpbCB3aXRoIGFuIGVtcHR5IGxpc3QuCgpNb24gRmViIDIyIDEwOjIxOjU2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3N0cmluZy5jOgoJWnlnbyBCbGF4ZWxsIDx6YmxheGVsbEBmdXJyeXRlcnJvci5vcmc+CglJbXBsZW1lbnRlZCBzb21lIENSVERMTCBzdHJpbmcgZnVuY3Rpb25zLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBpbmNsdWRlL3Zmdy5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jLCBtdWx0aW1lZGlhL21taW8uYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgbW9yZSByZWN1cnNpdmUgaW5jbHVkZSBmaXhlcy9vcHRpbWl6YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGVsaW1pbmF0ZWQgb25lIGVsZW1lbnQgb2YgdGhlIHBpZGwgc3RydWN0IChkd1NGR0FPKQoJLSBjaGFuZ2VkIHNvbWUgc3VwZXJmbG91cyBGSVhNRQoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gaGVhZGVyIHVzZXMgdGhlIGxhc3QgbWFjcm9zIG5vdwoJLSByZXdyb3RlIElEcm9wVGFyZ2V0IGFjY29yZGluZyB0byB0aGUgbmV3IENPTSBoZWFkZXJzCgkgICh3YXMgbG9jYWwgZGVjbGFyZWQgbm90IHVzaW5nIHRoZSBhbHJlYWR5IHdyaXR0ZW4gcHJvdG90eXBlcykKCS0gY29ycmVjdGVkIERyb3AgbWV0aG9kICh3cm9uZyBwYXJhbWV0ZXIgY291bnQpCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdG8gdXNlIHRoZSBsYXRlc3QgQ09NIG1hY3JvcywgSUNPTV9WVEFCTEUgYW5kIElDT01fVEhJUy4KCUFkZGVkIHRoZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcy4KCUkgcmVtZW1iZXJlZCBmcm9tIGFuIGVtYWlsIHRoYXQgZXZlbiB3aGVuIGFza2VkIGZvciBhCglJRGlyZWN0SW5wdXREZXZpY2VBIHdoYXQgd2FzIHJldHVybmVkIHdhcyBhbiBJRGlyZWN0SW5wdXREZXZpY2UyQSBzbyBJCgljb25zaWRlcmVkIHRoYXQgd2Ugd291bGQgb25seSBpbXBsZW1lbnQgdGhlIGxhdHRlci4gVGhlCglJRGlyZWN0SW5wdXREZXZpY2VBX3h4eCBtZXRob2RzIGhhdmUgYmVlbiByZW5hbWVkIHRvCglJRGlyZWN0SW5wdXREZXZpY2UyQV94eHgsIGFuZCB3ZSBhbHdheXMgcmV0dXJuIG91ciBJRGlyZWN0SW5wdXREZXZpY2UyQQoJaW1wbGVtZW50YXRpb24gYXMgYmVmb3JlLgoJUmVuYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcyB0byBYeHhJbXBsLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgbGF0ZXN0IENPTSBtYWNyb3MKCURlZmluZWQgdGhlIElEaXJlY3RJbnB1dERldmljZUEgaW50ZXJmYWNlIGluZGVwZW5kZW50bHkgZnJvbQoJSURpcmVjdElucHV0RGV2aWNlMkEuCglSZW1vdmVkIHRoZSAzMiBzdWZmaXggb2YgdGhlIGludGVyZmFjZXMuIEhvcGVmdWxseSB0aGlzIHdpbGwgbm90CgljYXVzZSBhbnkgcHJvYmxlbSB3aXRoIHRoZSByZW5hbWluZy4KCU1vdmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBzdHVmZiB0byBkaW5wdXQuYyAod2VsbCwgdGhlCglpbnRlcmZhY2VzIGF0IGxlYXN0KS4KClN1biBGZWIgMjEgMTg6MzU6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oOgoJQ2hhbmdlZCBpbml0aWFsIHByb2Nlc3MgY3JlYXRpb24gdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb25zLgoJUmVtb3ZlZCBhIGZldyB1bnVzZWQgZmllbGRzIGluIFBEQiBhbmQgVEhEQi4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUmVtb3ZlZCB0aHJlYWQgcXVldWUgZnVuY3Rpb25zLgoJQ2hhbmdlZCBpbml0aWFsIHRocmVhZCBjcmVhdGlvbiB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbnMuCglNb3ZlZCBzZXJ2ZXIgc3RhcnR1cCB0byBUSFJFQURfQ3JlYXRlSW5pdGlhbFRocmVhZC4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmM6CglSZW1vdmVkIHVzZSBvZiBwZXItdGhyZWFkIHdhaXRfc3RydWN0LCBjbGVhbmVkIHVwIGEgYml0LgoKCSogc2NoZWR1bGVyL2szMm9iai5jLCBtZW1vcnkvdmlydHVhbC5jOiBSZW1vdmVkIE1FTV9NQVBQRURfRklMRV9PcHMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEFkZGVkIGEgZmV3IGV4Y2VwdGlvbiBjb2Rlcy4KCgkqIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvcHJvZ3Jlc3MuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Jlc291cmNlLmgsIGluY2x1ZGUvc3RydWN0MzIuaCwgaW5jbHVkZS91cGRvd24uaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2lucG9zLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvY29tbWRsZy5jLCBtaXNjL3dpbnNvY2tfZG5zLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvZGRlX2F0b20uaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2Rpc3BkaWIuaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9kc291bmQuaCwgY29udHJvbHMvbWVudS5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCS0gRml4IGhlYWRlcnMgdG8gaW5jbHVkZSBsZXNzIG9yIHNtYWxsZXIgaGVhZGVyIGZpbGVzLgoJLSBGaXggaGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMgdG8gaW5jbHVkZSBtaXNzaW5nIGhlYWRlciBmaWxlcyB0byBhdm9pZAoJICB3YXJuaW5ncyBhbmQgZXJyb3JzLgoKCSogbG9hZGVyL3NpZ25hbC5jLCBtZW1vcnkvbGR0LmMsIG1pc2MvcG9ydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgImciIChnZW5lcmFsIHJlZ3MpIGludG8gInIiIChoYXJkcmVncykgaW4gY2xvbmUgLyBtb2RpZnlfbGR0IC8KCXdpbmVfc2lnYWN0aW9uIF9fUElDX18gY2FzZXMsIHNpbmNlICJnIiB3aWxsIG5vdCB3b3JrIHdpdGgKCS1mb21pdC1mcmFtZS1wb2ludGVyICgiZyIgaXMgcmVmZXJlbmNlZCB1c2luZyAlZXNwIHdoaWNoIHdhcwoJaW52YWxpZGF0ZWQgYmVmb3JlKS4gQnVnIGZvdW5kIGFuZCAob3RoZXIpIGZpeCBzdWdnZXN0ZWQgYnkKCTxkYW5pZWxAbWF0LnV0ZnNtLmNsPiBEYW5pZWwgU2VycGVsbC4KCgkqIG9sZS9vbGVmb250LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBwcm9ibGVtIHdoZXJlIHlvdSBuZWVkIG1vdXNlIGFjdGl2aXR5IHRvIHVubG9jayBzb21lIDE2IGJpdHMKCXRocmVhZCB3aXRoIG11bHRpLXRocmVhZGVkIGFwcHMuCgpTYXQgRmViIDIwIDE2OjQ4OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvQXR0aWMvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9ndWlkLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlZm9udC5jLCBvbGUvdHlwZWxpYi5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdCBtZXRob2QgYW5kIHRoZSBhc3NvY2lhdGVkIENPTQoJb2JqZWN0LiBUaGF0IG9iamVjdCBzdXBwb3J0cyB0aGUgSUZvbnQgYW5kIElEaXNwYXRjaCBpbnRlcmZhY2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvcG9ydC5jLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2Rucy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQcm9ibGVtcyByZXBvcnRlZCBieSBEb25hbGQgUGFnZSwgUFIgMTA1LTEwNy4KCgkqIGNvbnNvbGUvbmN1cnNlcy5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1vcmUgY29tbWVudGluZywgYmV0dGVyIGRlYnVnZ2luZyBvZiBjb2xvciBwcm9ibGVtcywgYW5kIHN1cHBvcnQgZm9yCgl0aGUgbmV3IFRlcm1pbmFsVHlwZSBvcHRpb24gaW4gd2luZS5pbmkuIFRoaXMgYWxsb3dzIHVzIHRvIHNlbGVjdAoJd2hpY2ggdGVybWluYWwgdHlwZSB3ZSBhcmUgcmVhbGx5IHVzaW5nIHNvIHRoYXQgd2UgY2FuLCBmb3IgZXhhbXBsZSwKCXVzZSBpdHMgY29sb3IgY2FwYWJpbGl0aWVzLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgaW5jbHVkZS9jb25zb2xlLmg6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVN1cHBvcnQgZm9yIHRoZSBuZXcgSW5pdGlhbFJvd3MgYW5kZiBJbml0aWFsQ29sdW1ucyBvcHRpb25zIGluIHdpbmUuaW5pCgkoR2VuZXJpYyByZXBsYWNlbWVudCBmb3IgWHRlcm1SZXNvbHV0aW9uIG9wdGlvbi4uLikKCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJRml4ICpEVUgqIHByb2JsZW0gY2F1c2luZyBsb3RzIGFuZCBsb3RzIG9mIHVubmVjZXNzYXJ5IEFsbG9jQ29sb3IgZXJyb3JzLgoKCSogY29uc29sZS94dGVybS5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVJlbW92YWwgb2Ygb2Jzb2xldGUgWHRlcm1SZXNvbHV0aW9uIG9wdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZSwgd2luZS5pbmk6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IHdpbmUuY29uZiBvcHRpb25zLgoKCSogZGVidWdnZXIvc3RhY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiYWNrdHJhY2sgaXNzdWUgb24gMTZiaXQgY29kZS4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgTG9jYXRlRGVidWdJbmZvRmlsZSB0byByZWR1Y2Ugc3RhY2sgY29uc3VtcHRpb24gKGZyb20gMTNrIHRvIDJrICEhKQoKCSogZGVidWdnZXIvaW5mby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNvbW1lbnQgZm9yIFdpbmUgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBnZXQvc2V0X2hhbmRsZV9pbmZvIHJlcXVlc3QuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGaXhlZCBlbmQtb2YtbGluZSBidWcgaW4gWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfUkxFNC4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeCBhIGNvdXBsZSBvZiA2NGJpdCBwbGF0Zm9ybSBwcm9ibGVtcyBhbmQgc3BlZWQgdXAgY29tcGlsYXRpb24uIFNlZQoJdG9vbHMvd3JjL0NIQU5HRVMgZm9yIGRldGFpbHMuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgltbWlvRGVzY2VuZDogZGVidWdvdXRwdXQgZW5oYW5jZWQsIEZJTkRMSVNUL0ZJTkRSSUZGIHNob3VsZCBDaGVjayB0aGUKCWNvcnJlY3QgY2tpZCAoTElTVC9SSUZGKSB0b28uICh2ZXJpZmllZCBhZ2FpbnN0IG1jaWF2aTMyLmRsbCkKCgkqIE1ha2VmaWxlLmluOiBaeWdvIEJsYXhlbGwgPHpibGF4ZWxsQGZ1cnJ5dGVycm9yLm9yZz4KCUFkZGVkIGEgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2Ygd2luZS5zeW0gYmVmb3JlIGluc3RhbGxpbmcgaXQuCgoJKiBpbmNsdWRlL29sZTIuaCwgb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc29tZSBuZXcgc3R1YnMgZm9yIHRoZSBPTEUgbWVudSBkZXNjcmlwdG9yIG1ldGhvZHMuCgpGcmkgRmViIDE5IDE2OjUwOjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmM6IE1hcnRpbiBXYWxrZXIgPG13YWxrZXJAY2FjaS5jby51az4KCUZpeGVkIG1lc3NhZ2UgZmlsdGVyaW5nIGNoZWNrLgoKCSogcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBvbGUvb2xlb2JqLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbWFkZSB0aGUgc2VjdXJpdHkgZnVuY3Rpb25zIGNvbnNpc3RlbnQuIGFkdmFwaSBjYWxscyBkb3duIHRvIG50ZGxsIG5vdwoJLSBuZXcgU2V0U2VjdXJpdHlEZXNjcmlwdG9yR3JvdXAsICBTZXRTZWN1cml0eURlc2NyaXB0b3JPd25lciwKCSAgU2V0U2VjdXJpdHlEZXNjcmlwdG9yU2FjbCwgR2V0U2VjdXJpdHlEZXNjcmlwdG9yRGFjbAoJLSBudC1oZWFkZXIgY2xlYW51cAoKCSogZGxscy9udGRsbC9ydGwuYywgaWYxNjMyL2J1aWx0aW4uYywgbWlzYy9jcHUuYywgd2luMzIva2VybmVsMzIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBmZXcgYnJva2VuIGluY2x1ZGVzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUmV2ZXJ0ZWQgYnJva2VuIGNsb3NlIGJ1dHRvbiBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgoJQWRkZWQgbWlzc2luZyBzdHJpbmcuaCBpbmNsdWRlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJT25seSBhcHBlbmQgLmRsbCBpZiBubyBleHRlbnNpb24geWV0LgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVRlbXBvcmFyeSBmaXggc3VnZ2VzdGVkIGJ5IFVscmljaCB0byBhbGxvdyB0aGUKCU1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdCBtZXRob2QgdG8gYmUgY2FsbGVkIGZyb20gMTYgYml0IHRocmVhZHMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbml0aWFsaXplZCByZXR1cm4gdmFsdWUgb2YgMTYtPjMyIGNvbnZlcnNpb24gb2YgV01fTURJR0VUQUNUSVZFIGluCgljYXNlIGl0J3Mgc2VudCB0byBhIHdpbmRvdyB0aGF0IGRvZXNuJ3QgaGFuZGxlIGl0IChpLmUuIG5vdCBNREkKCWNsaWVudCkuCgoJKiBpbmNsdWRlL2RjZS5oLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBleHRyYSBjaGlsZCBhcmd1bWVudHMgdG8gRENFX0dldFZpc1JnbigpIHRvIGJlIGFibGUgdG8gaGFuZGxlCglQQVJFTlREQyBjbGFzcyBzdHlsZSBjb21iaW5lZCB3aXRoIENMSVBDSElMRFJFTiB3aW5kb3cgc3R5bGUsIHRvCglwcmV2ZW50IG1pcy1yZWRyYXdzIGluIEZyZWUgQWdlbnQgMTYtYml0LgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogTGF3c29uIEEuIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRG9uJ3QgaGFuZyBvbiB0aGUgbGFzdCBjaGlsZCBpZiBpdCdzIG5vdCB3YW50ZWQuCgoJKiB3aW4zMi9rZXJuZWwzMi5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCVBhcnRpYWwgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB1bmRvY3VtZW50ZWQgS0VSTkVMIHJvdXRpbmUgUEsxNkZORiwKCW5lZWRlZCBieSBXaW45OCBFWFBMT1JFUi4gVGhhbmtzIHRvIFVscmljaCBXZWlnYW5kIGZvciBpbmZvcm1hdGlvbi4KCgkqIG1pc2MvY29tbWRsZy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCByZWRyYXcgcHJvYmxlbXMgZm9yIENob29zZUNvbG9yIGRpYWxvZy4KCgkqICovKi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgYSBsb3Qgb2Ygb2NjdXJlbmNlcyBvZiB3aW5kb3dzLmggKGFuZCBhZGRlZCBuZWNlc3Nhcnkgb3RoZXIKCWluY2x1ZGVzKS4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBvbGUvY29tcG9iai5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNoYW5nZWQgdGhlIGZpcnN0IHBhcmFtZXRlciBmcm9tIExQR1VJRCAoV2luZG93cyBoZWFkZXJzKSB0byBSRUZHVUlELgoJVGhpcyBtYWtlcyBpdCBhICdjb25zdCBHVUlEKicgd2hpY2ggbWVhbnMgRGlyZWN0U291bmRDcmVhdGUgbXVzdCBub3QKCWNoYW5nZSBpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIHJlZHVuZGFudCBkZWZpbml0aW9ucyBvZiBJc0VxdWFsSUlEIGFuZCBJc0VxdWFsQ0xTSUQgKHNlZQoJaW5jbHVkZS93aW5lL29ial9iYXNlLmgpCgpUaHUgRmViIDE4IDE3OjM0OjEwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS9xdWV1ZS5oOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIE5ldyBpbXBsZW1lbnRhdGlvbiBvZiBTZW5kTWVzc2FnZSwgUmVjZWl2ZU1lc3NhZ2UsIFJlcGx5TWVzc2FnZSBmdW5jdGlvbnMKCSAgdG8gc3VwcG9ydCB0aHJlYWQtc2FmZW5lc3MsIGFuZCBuZXN0ZWQgU2VuZE1lc3NhZ2UuCgktIEFkZGl0aW9uIG9mIFJlcGx5TWVzc2FnZTMyLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ29wZSB3aXRoIE5VTEwgcERyaXZlckRhdGEgaW4gWDExRFJWX1dORF9HZXRYV2luZG93LgoKCSogbWlzYy9jb21tZGxnLmMsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQXBwbGllZCB0aGUgY2hhbmdlcyBvZiB0aGUgcmVzdWx0aW5nIGNvbG9yIG9mIHRoZSBjaG9vc2UgY29sb3IgZGlhbG9nLgoJSW5pdGlhbGl6ZSB2YWx1ZXMgaW4gdGhlIGNob29zZSBjb2xvciBkaWFsb2cuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBJQ09NX0lOSEVSSVRTLgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGJ1ZyB3aXRoIHJlYWQtb25seSBmaWxlcy4KCgkqIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHN1cGVyZmxvdXMgV0lOQVBJIChtaXNtYXRjaCB3aXRoIHByb3RvdHlwZSkgaW4gKl9Ecml2ZXJQcm9jMzIuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRvc2V4ZS5oIGRlcGVuZHMgb24gd2luYmFzZS5oIChmb3IgTFBTVEFSVFVQSU5GTzMyQSkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgb2xlL2JpbmRjdHguYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW9kaWZpZWQgc28gdGhhdCB0aGV5IGRvIG5vdCB1c2UgdGhlIFZUQUJMRV9GVU5DIG1hY3JvcyB0aGF0IHBlcmZvcm1lZAoJY2FzdHMgb2YgYWxsIG1ldGhvZHMgcHV0IGluIHRoZSBqdW1wIHRhYmxlLiBJIGZpbmQgaXQgdG9vIHJpc2t5IHRvIHVzZQoJc3VjaCBtYWNyb3MgYmVjYXVzZSBub3RoaW5nIGd1YXJhbnRlZXMgdGhhdCB5b3UgYWN0dWFsbHkgcHV0IHRoZSByaWdodAoJbWV0aG9kIGF0IHRoZSByaWdodCBwbGFjZSBvciB0aGF0IHRoZSBwcm90b3R5cGUgaXMgcmlnaHQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9zdG9yYWdlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdG8gdXNlIHRoZSBsYXRlc3QgQ09NIG1hY3Jvcy4gRGVmaW5lZCBtb3JlIGludGVyZmFjZXMgYW5kIEFQSQoJZnVuY3Rpb25zLgoKCSogY29udHJvbHMvbWVudS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHVzaGVkIGNsb3NlIGJ1dHRvbi4KCldlZCBGZWIgMTcgMTc6NDU6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvY29tcG9iai5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb3ZlZCBzb21lIGRlZmluaXRpb25zIHRvIHRoZWlyIHByb3BlciBpbmNsdWRlIGZpbGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgc29tZSBJQ09NX0lOSEVSSVQgc3R1ZmYgYW5kIGFkZGVkIG5ldyByZWxhdGVkIEFQSSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBuZXcgQVBJLiBQYXJ0IG9mIGl0IHdhcyBpbiAnaW5jbHVkZS9vYmpiYXNlLmgnIGJlZm9yZSBhbmQgcGFydAoJb2YgaXQgaXMgbmV3LiBOb3cgaXQgYWxzbyBjb250YWlucyAnV0lORV9TdHJpbmdGcm9tQ0xTSUQnLiBJdCdzIG5vdAoJcGVyZmVjdCBidXQgaXQncyBiZXR0ZXIgdGhhbiBoYXZpbmcgaXQgaW4gJ2luY2x1ZGUvb2JqYmFzZS5oJy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9udGRsbC9udC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgbnVtYmVyIG9mIHdhcm5pbmdzIGNvbmNlcm5pbmcgdGhlIG1hdGNoaW5nIG9mIHRoZSBwcmludGYKCWZvcm1hdCBzdHJpbmcgYW5kIHRoZSBhc3NvY2lhdGVkIHBhcmFtZXRlcnMgKGFjdHVhbGx5IGl0J3MgbW9zdGx5CglUUkFDRSBhbmQgRklYTUVzKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tbWlvLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgltbWlvRGVzY2VuZDogZml4ZWQgRklORF94eHh4LCB2ZXJpZmllZCB3aXRoIG1jaWF2aTMyLmRsbC4KCW1jaUxvYWRDb21tYW5kUmVzb3VyY2UzMjogc2Vjb25kIGFyZyBpcyB3aWRlIHN0cmluZwoJbWNpR2V0RHJpdmVyRGF0YTogc3BlYyBoYXMganVzdCBvbmUgbG9uZyBhcmd1bWVudAoKCSogb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvaWZzLmgsIG9sZS9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIG11bHRpbWVkaWEvZHNvdW5kLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ2hhbmdlZCBJQ09NX1RISVMgZGVmaW5pdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvdmVyLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVuYW1lZCBWU19WRVJTSU9OX0lORk94eCBzdHJ1Y3R1cmUgdG8gVlNfVkVSU0lPTl9JTkZPX1NUUlVDVHh4LgoJVGhlIFZTX1ZFUlNJT05fSU5GTyBpcyBhIHNpbXBsZSBkZWZpbmUgYW5kIHdvdWxkIGNhdXNlIGNvbmZ1c2lvbi4KCUFsc28gY29ycmVjdGVkIHRoZSBWU194eF9JTkZPIGRlZmluZXMgbm90IHRvIHVzZSBNQUtFSU5UUkVTT1VSQ0UxNiBmb3Igd2luMzIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogU3RlZmZlbiBNb2VsbGVyIDxtb2VsbGVyQGViaS5hYy51az4KCSJDb25maWd1cmUgZmluaXNoZWQiIG1lc3NhZ2Ugc3VnZ2VzdHMgdG8gY2FsbCBtYWtlIHdoZW4gbWFrZSBkZXBlbmQKCXdhcyBzdWNjZXNzZnVsLgoKCSogKi8qOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9wdGltaXplZCBpbmNsdWRlLyouaDogKHJlY3Vyc2l2ZWx5KSBpbmNsdWRlIGFsbCBoZWFkZXJzIG5lZWRlZCBieQoJdGhpcyAuaCBmaWxlLCBidXQgb25seSB0aG9zZS4gTmVjZXNzYXJ5IGZpeGVzIHRvIGEgbG90IG9mIC5jIGZpbGVzLAoJc3RhcnRlZCBvcHRpbWl6aW5nICJ3aW5kb3dzLmgiIGF3YXkgZnJvbSBzb21lIG9mIHRoZW0uIE1vdmVkCglHZXRDdXJyZW50VGFzayBwcm90b3R5cGUgdG8gd2luZS93aW5iYXNlMTYuaC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUHJlbGltaW5hcnkgbGlzdHZpZXcgY29udHJvbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJR2l2ZSB0aGUgY29udGV4dCBtZW51IGl0cyBwcm9wZXIgYmVoYXZpb3VyIGFuZCBtb2RpZnkgVHJhY2tQb3B1cE1lbnUKCXRvIGNvbXBseSB3aXRoIHdpbmRvd3MgQVBJLgoKCSogd2luZG93cy9wYWludGluZy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUdldFVwZGF0ZVJlY3Qgc2hvdWxkIHJldHVybiBjbGllbnQgY29vcmRpbmF0ZXMgdW5sZXNzIHRoZSB3aW5kb3cgd2FzCgljcmVhdGVkIHdpdGggdGhlIENTX09XTkRDIHN0eWxlIGFuZCB0aGUgbWFwcGluZyBtb2RlIGlzIG5vdCBNTV9URVhULAoJaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0IHNob3VsZCBiZSBpbiBsb2dpY2FsIGNvb3JkaW5hdGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdGhlIGFjdHVhbCBkZWZpbml0aW9ucyBvZiB0aGUgaW50ZXJmYWNlcy4KCgkqIGluY2x1ZGUvc2VydnByb3YuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBDT00gZGVjbGFyYXRpb24gJ3N0YW5kYXJkJyBmb3IgYmV0dGVyCgljb21wYXRpYmlsaXR5IHdpdGggQyBjb2RlIGltcGxlbWVudGF0aW5nIHRoYXQgaW50ZXJmYWNlLgoKCSogbWlzYy93c3ByaW50Zi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIFdQUklOVEZfRXh0cmFjdFZBUHRyIHRvIHRha2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhX2xpc3QgdG8gYmUKCWFibGUgdG8gbW9kaWZ5IGl0LgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglEZWZpbmVkIElEcm9wVGFyZ2V0IGZvciBTaGVsbEZvbGRlci4gIEltcGxlbWVudGVkIHRoZSBDb25zdHJ1Y3RvciwKCURlc3RydWN0b3IsIEFkZFJlZiwgUmVsZWFzZSBhbmQgUXVlcnlJbnRlcmZhY2UgbWV0aG9kcy4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBpZjE2MzIva2VybmVsLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGFuZ2UgdHlwZSBvZiBtb2RlIGFyZ3VtZW50IHRvIEdFVFZETVBPSU5URVIzMlcgZnJvbSBEV09SRCB0byBXb3JkCgpNb24gRmViIDE1IDE1OjI0OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CgljMm1hbiBkb2Vzbid0IGxpa2UgZXh0cmEgc2VtaWNvbG9ucy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVzZXR0aW5nIFggZm9jdXMgc2hvdWxkIG5vdCBiZSBkb25lIHdpdGggU2V0Rm9jdXMzMi4gQ2FsbGVkCgl0aGUgd2luZG93aW5nIChYMTEpIGRyaXZlcidzIFNldEZvY3VzIHJvdXRpbmUgZGlyZWN0bHkgaW5zdGVhZC4KCVRoaXMgYXBwYXJlbnRseSBmaXhlcyBhIGJpZyBoZWFwIG9mIHVzZXIgaW50ZXJmYWNlIHByb2JsZW1zLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gRmViIDE0IDE0OjA5OjQyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgc29tZSBmdW5jdGlvbnMgcHJvdG90eXBlcyAod2VyZSByZXR1cm5pbmcgdm9pZCkuCgoJKiBtaXNjL21haW4uYywgaW5jbHVkZS93aW51c2VyLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJRml4ZWQgc29tZSBXaW5lbGliIG5hbWVzLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCBwcm90b3R5cGVzIGZ1bmMoKSAtPmZ1bmModm9pZCkuCgoJKiBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9taWRpLmMsIGRlYnVnZ2VyL21lbW9yeS5jOgoJQnJpYW4gSm9zZXBoIEN6YXBpZ2EgPHJvb3RAZ2xhY2lkLmNvbT4KCUZpeGVkIGEgZmV3ICNpZmRlZnMuCgoJKiB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUplcm9tZSBWb3VpbGxvbiA8dm91aWxsb25AY2xhcmFuZXQuZnI+CglNYWtlIGEgY29ycmVjdCB1c2Ugb2YgY2xpcHBpbmcgcmVjdGFuZ2xlcy4KCgkqIGluY2x1ZGUvYml0bWFwcy9vY3JfY3Jvc3M6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB3aGl0ZSBib3JkZXIuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBiZXR0ZXIgb3V0cHV0IGZvciBpbmRpcmVjdCBjYWxscy4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIHdpbm1tLnNwZWMuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd3JjX3JzYy5oLCBtaXNjL2xzdHIuYywgbWlzYy93c3ByaW50Zi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQENPUkVMLkNBPgoJQSBmZXcgbm9uLXg4NiBXaW5lbGliIGZpeGVzLgoKCSogbWlzY2VtdS9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHByaW50ICd3aW5lOiBubyBleGVjdXRlYWJsZSBmb3VuZCcgaWYgd2UgZGlkIGV4ZWN1dGUgc29tZXRoaW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC8qOgoJTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgoJLSBBZGRlZCBuZXcgSURTX05PVFNBVkVEIHJlc3NvdXJjZSAobmVlZHMgdHJhbnNsYXRpb24gaW4gKi5yYykKCS0gSW1wcm92ZWQgcHJpbnRpbmcgc3VwcG9ydCAobm90IHlldCBjb21wbGV0ZSkKCS0gSW1wcm92ZWQgZmlsZSBkcmFnIGFuZCBkcm9wIChzaG91bGQgbm93IHdvcmspCgktIEdlbmVyYWwgY29kZSBjbGVhbnVwCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3Mgb24gTUNJIG5vdGlmaWNhdGlvbiAoY2FsbGJhY2sgaW5mbyBhcmUgY29waWVkIGJlZm9yZQoJYXN5bmNocm9ub3VzIHJldHVybikgLSBtYWtlIHVzZSBvZiBpdCBpbiBNQ0kgd2F2ZSBhbmQgbWlkaS4KCUltcGxlbWVudGVkIG1jaShTZXR8R2V0KURldmljZUlEKDE2fDMyKSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW5jZSBTZXRQYXJlbnQgbm93IGhpZGVzL3Nob3dzLCBleHBsaWNpdGx5IGludmFsaWRhdGluZyBEQ3MgaW4gdGhlCglwYXJlbnQgY2hhbmdlIG9wZXJhdGlvbiBzaG91bGQgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEdlcmFyZCBQYXRlbCA8Ry5QYXRlbEBXYW5hZG9vLmZyPgoJRml4IGlmIEVuZERpYWxvZyBjYWxsZWQgaW4gV01fSU5JVERJQUxPRyAoRElBTE9HX0RvRGlhbG9nQm94KS4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vdmVkIFZHQSBwb3J0IGFjY2VzcyBjaGVjayBhdCB0aGUgYmVnaW5uaW5nIGluIG9yZGVyIHRvIGltcHJvdmUKCXBlcmZvcm1hbmNlIGEgbGl0dGxlIGJpdC4KCgkqIHNlcnZlci9maWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgZmxhZyBGSUxFX0ZMQUdfREVMRVRFX09OX0NMT1NFLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBjb21tZW50cy4gVGhpbmsgSSd2ZSBmaXhlZCBJTlQgMTAvMDggKEdldCBDaGFyYWN0ZXIgYW5kCglBdHRyaWJ1dGUgYXQgQ3Vyc29yKS4KCgkqIGNvbnNvbGUveHRlcm0uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgWHRlcm1Qcm9ncmFtIGFuZCBYdGVybVJlc29sdXRpb24uCglGaXhlZCBhIHdhcm5pbmcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGUsIHdpbmUuaW5pOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglOZXcgZXhhbXBsZXMvZG9jdW1lbnRhdGlvbiBmb3IgY29uc29sZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoJKiBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL21haW4uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTW92ZWQgaW5pdGlhbGl6YXRpb24gdW50aWwgbGF0ZXIuIEFsc28gbW92ZWQgYXJvdW5kIGNvZGUgYSBiaXQgdG8gYmUKCWNvbnNpc3RhbnQuCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gbG9hZCAuc3RhYnMvLnN0YWJzdHIgc2VjdGlvbnMgZnJvbSBQRSBkbGxzLgoJVW5mb3J0dW5hdGVseSBteSBzYW1wbGVzIHVzZSBjdXJyZW50bHkgdHlwZWRlZnMgd2hpY2ggd2luZS1kYmcgZG9lcwoJbm90IHVuZGVyc3RhbmQsIHNvIG5vIGFjdHVhbCBwYXJzaW5nLgoKCSogZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBpbmNsdWRlL21tcmVnLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZHJ2LmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNoYW5nZSBhIGNvdXBsZSBvZiBuYW1lcyB0aGF0IHdvdWxkIGNvbmZsaWN0IGFmdGVyIGFsbCAzMltBV10gc3VmZml4ZXMKCWFyZSByZW1vdmVkLiBTdHJ1Y3R1cmVzIGRlZmluZWQgaW4gYm90aCBtbXJlZy5oIGFuZCBtbXN5c3RlbS5oIGFyZQoJcHJvdGVjdGVkIHdpdGggI2lmZGVmOnMgYXMgaW4gTVMnIGhlYWRlcnMuCgoJKiBtaXNjL2ltbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHdyb25nIHR5cGVjYXN0cy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUNvbXBpbGF0aW9uIGZpeC4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBmb3IgWDExIGluY2x1ZGVzIGRldGVjdGlvbi4KCgkqIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGxvYWQgLnN0YWJzLy5zdGFic3RyIHNlY3Rpb25zIGZyb20gUEUgZGxscy4KCVVuZm9ydHVuYXRlbHkgbXkgc2FtcGxlcyB1c2UgY3VycmVudGx5IHR5cGVkZWZzIHdoaWNoIHdpbmUtZGJnIGRvZXMKCW5vdCB1bmRlcnN0YW5kLCBzbyBubyBhY3R1YWwgcGFyc2luZy4KCgkqIG11bHRpbWVkaWEvZHBsYXkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kM2QuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBkZHJhdy9kM2QgYnVnZml4ZXMsIHVwZGF0ZWQgRGlhYmxvL1dDNCBkZHJhdyBzdGF0dXMuCgoJKiBvbGUvb2xlMm5scy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2lubmxzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGF0aW9uIG9mIENvbnZlcnREZWZhdWx0TG9jYWxlMzIuCgoJKiB3aW5kb3dzL21kaS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVdJTjMxIExvb2sgc3RpbGwgbmVlZHMgYSBjbG9zZSBidXR0b24gb24gdGhlIGxlZnQgb2YgdGhlIG1lbnUgYmFyLgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBTZXRXaW5kb3dQb3MzMiB0byBmb3JjZSB0aGUgdXBkYXRlIG9mIHRoZSBub24tY2xpZW50IGFyZWEuCgpTYXQgRmViIDEzIDE3OjU2OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4ZWQgYSBjb3VwbGUgb2YgZmF1bHR5IG5hbWVzIHVzZWQgaW4gd2luZSBhbmQgdHlwb3Mgc28gdGhhdCBpdCB3aWxsCgljb21waWxlIGFnYWluIGFmdGVyIGNvbnZlcnNpb24gZnJvbSAzMltBV10gbmFtaW5nIHRvIFtBV10gbmFtaW5nLgoKCSogaWYxNjMyL0F0dGljL3NpZ25hbC5jLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvc2lnbmFsLmMsIG1pc2NlbXUvaW5zdHIuYywgbWlzY2VtdS9tYWluLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmVkIHRoZSBpZjE2MzIvc2lnbmFsLmMgc3R1ZmYgaW50byBsb2FkZXIvc2lnbmFsLmMsIGFkYXB0ZWQgZnVuY3Rpb24KCXBvaW50ZXJzIGZvciB3aW5lX2RlYnVnIGFuZCBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24uCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFsbCBndWlkICdSRUZ4eHgnIHR5cGVzIGFscmVhZHkgaGF2ZSBhICdjb25zdCcgaW5zaWRlIHRoZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgbWlzYy92ZXJzaW9uLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgd2FybmluZ3MgZml4ZWQsIG9uZSB1c2VsZXNzIFZFUlNJT04gd2FybmluZyByZW1vdmVkICh3aW5lbGliKS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlZ0ZsdXNoS2V5OiB3cm9uZyBlcnJvciBjb2RlLgoKCSogd2luMzIvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRzIGEgd2FybmluZyBtZXNzYWdlIGlmIHBlcm1pc3Npb25zIG5vdCBzdWZmaWNpZW50LgoKCSogbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSSBBVkkgZHJpdmVyCglBZGRlZCBzb21lIGZpeGVzIG1peGVyIGZ1bmN0aW9ucwoJRml4ZWQgTUNJIHN0cmluZyBjb21wYXJpc29uICh0aGFua3MgdG8gTGlvbmVsIFVMTUVSKQoJTm8gbG9uZ2VyIHVzaW5nIDE2IGJpdCBVU0VSIGZ1bmN0aW9ucyAodXNlIHRoZWlyIDMyIGJpdCBjb3VudGVyIHBhcnQpCglSZWluZGVudGluZy4KCUFkZGVkIGZ1bmN0aW9uIHNuZFBsYXlTb3VuZDMyVwoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0aGUgYWN0dWFsIGludGVyZmFjZSBkZWZpbml0aW9ucyB0byB0aGUgb2JqX21hcnNoYWwuaCBza2VsZXRvbgoJZmlsZS4gQWxzbyBkZWZpbmVkIHRoZSBhc3NvY2lhdGVkIEMgQVBJLgoKCSogd2luZG93cy9xdWV1ZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVVzZSBnbG9iYWwgc3luY2hyb25pemF0aW9uIG9iamVjdHMsIHRvIGJlIGFibGUgdG8gdXNlIGl0IGluIGRpZmZlcmVudAoJcHJvY2Vzc2VzIChub3Qgb25seSB0aGUgcHJvY2VzcyB3aGljaCBjcmVhdGUgdGhlIHN5bmNocm8gb2JqZWN0KS4KCgkqIHdpbmRvd3MvbWRpLmM6IE5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVNldCBod25kQWN0aXZlQ2hpbGQgd2hlbiBtYXhpbWl6aW5nIGEgbWRpIGNoaWxkIHdpbmRvdyBiZWNhdXNlIGl0IGlzCglub3Qgc2V0IHdoZW4gbWF4aW1pemluZyBhIHdpbmRvdyBvdGhlciB0aGFuIHRoZSBhY3RpdmUgY2hpbGQuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2UgdGhlIEdldE1lbnVJdGVtUmVjdCB0byBjb21wbHkgd2l0aCB3aW5kb3dzIEFQSS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ3JlYXRlZCBpbmNsdWRlL01ha2VmaWxlLmluIHRvIHNlcGFyYXRlIGhlYWRlciBmaWxlIGluc3RhbGxhdGlvbiBmcm9tCgl0aGUgdG9wLWxldmVsIE1ha2VmaWxlLgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCS0gRml4ZWQgYSBzbWFsbCBibG9jayBkZXBvdCBidWcuCgktIEltcGxlbWVudGVkIGNvbnZlcnRpbmcgZnJvbSBzbWFsbCBibG9ja3MgdG8gYmlnIGJsb2Nrcy4KCS0gVmFsaWRhdGVkIGZpbGUgYXR0cmlidXRlcyBhbmQgZmxhZ3MuCgktIEZpeGVkIGEgYnVnIGZvciBsYXJnZXIgZmlsZXMuCgoJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogYWRkZWQgc3lzcmVzX05sCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9MRSBEcmFnIGFuZCBEcm9wIHRhcmdldCByZWdpc3RyYXRpb24gbWVjaGFuaXNtIGFuZAoJdGhlIERvRHJhZ0Ryb3AgbG9vcCB0byBwZXJmb3JtIHRoZSBEbkQgb3BlcmF0aW9uLgoKCSogd2luZG93cy9tZGkuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaDoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXSU4zMSBMb29rIG1kaSBidXR0b25zIGFuZCBhbHNvIHNvbWUgZGVmaW5lcyBmb3IgdGhlCgltYWdpYyBtZW51IGl0ZW1zLgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBpbmNsdWRlL3dpbmNyeXB0LmgsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIGVudHJpZXMgZm9yIG1vc3QgQ3J5cHQqIGNhbGxzLgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRBY3F1aXJlQ29udGV4dEEuICBUaGlzIGFsbG93cyBXaW45OCBFWFBMT1JFUi5FWEUKCXRvIGdldCBmYXJ0aGVyLgoKCSogY29udHJvbHMvZWRpdC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQW4gYXBwIGxlZnQganVuayBpbiB0aGUgdW5kbyBidWZmZXIgb2YgYW4gZWRpdCBjb250cm9sIHVwb24gY3JlYXRpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZWQgU2V0UGFyZW50MzIgdG8gYWRoZXJlIHRvIFdpbmRvd3MgYmVoYXZpb3VyIChtb3N0bHkpLAoJd2hpY2ggc2hvdWxkIGFsc28ga2VlcCBpdCBmcm9tIGxlYXZpbmcgZ2FyYmFnZSBhcm91bmQuCgoJKiBvbGUvY29tcG9iai5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBhIHNpbXBsZSBsaW5rZWQgbGlzdCAoc3RhdGljKSB0aGF0IHN0b3JlcyBhbmQgY291bnRzCglyZWZlcmVuY2VzIHRvIENPTSBvYmplY3RzLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1ha2UgdGhlIFJFRnh4eCB0eXBlcyBjb25zdCBldmVuIGluIEMuIEFsc28gYWRkIEZNVElELgoKCSogd2luZG93cy93aW5wb3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBjYWxsIEVWRU5UX0R1bW15TW90aW9uTm90aWZ5IGZvciBoaWRkZW4gd2luZG93cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBzb21lIHRocmVhZC1zYWZlbmVzcyBwcm9ibGVtIHdoZW4gYWNjZXNzaW5nIHRoZSBzeXN0ZW0gbWVzc2FnZQoJcXVldWUuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBNYXBWaXJ0dWFsS2V5RXggKHRpY2tldCAyMSkuCglJZ25vcmUga2V5Ym9hcmQgbGF5b3V0IGZvciBub3cuCgoJKiBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0aGUgYWN0dWFsIGludGVyZmFjZSBkZWZpbml0aW9ucyB0byB0aGUgb2JqX2NsaWVudHNlcnZlci5oCglza2VsZXRvbiBmaWxlLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZG9jdW1lbnRlZCBtb3N0IG9mIHRoZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGluIG50LmMKCS0gaW1wbGVtZW50ZWQgUnRsR2V0RGFjbFNlY3VyaXR5RGVzY3JpcHRvcgoJLSBzdHVicyBmb3IgTnRFbnVtZXJhdGVLZXksIE50T3BlblN5bWJvbGljTGlua09iamVjdCwgTnRRdWVyeUtleQoJLSBzdHVicyBmb3IgTnRSYWlzZUV4Y2VwdGlvbiwgUnRsUmFpc2VFeGNlcHRpb24gKHRoaXMgYm90aCB3aWxsIGNyYXNoKQoKRnJpIEZlYiAxMiAxNzo0NzowNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZmlsZXMvZHJpdmUuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW4zMi9uZXdmbnMuYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzIHRvIGNvbXBpbGUgd2l0aCB0aGUgaGVhZGVycyAobW9zdGx5IG50LXNlY3VyaXR5KS4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hZGUgbnQtcmVsYXRlZCB0eXBlcyBjb21wYXRpYmxlLCB0aHJvdyBvdXQgd2luZS1zcGVjaWZpYyB0eXBlcy4KCgkqIHdpbmRvd3MvbW91c2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgTU9OSVRPUl8uLi4gaW5zdGVhZCBvZiBERVNLVE9QXy4uLiByb3V0aW5lcyB0byBnZXQgc2NyZWVuCglkaW1lbnNpb25zOyB0aGVzZSB3b3JrIGFsc28gd2l0aCBuYXRpdmUgVVNFUi4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV01fQUNUSVZBVEUgZGVmYXVsdCBwcm9jZXNzaW5nIHNob3VsZCBzZXQgd2luZG93IGZvY3VzLgoJU2hvdWxkIGZpeCBmb2N1cyBwcm9ibGVtcyBpbiBub24tbWFuYWdlZCBtb2RlLgoKVGh1IEZlYiAxMSAxNjozMjoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL25scy9ubGQubmxzLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9UT0RPLCByZXNvdXJjZXMvc3lzcmVzLmMsIHJlc291cmNlcy9zeXNyZXNfTmwucmMsIEFVVEhPUlMsIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgRHV0Y2ggbGFuZ3VhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8emJsYXhlbGxAY29yZWwuY2E+CglNb3ZlIHByb3BlcnR5IHNoZWV0cyBmcm9tIGNvbW1jdHJsLmggaW50byBpbnRvIHByc2h0LmguCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCAnb2JqYmFzZS5oJyB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCZXR0ZXIgZGV0ZWN0aW9uIG9mIFhTaG0gZXJyb3JzIChzaG91bGQgbm93IHJ1biBvbiByZW1vdGUgZGlzcGxheXMpLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZXMgbWl4ZXJHZXRJRDE2LzMyIHByb2JsZW1zL2Vycm9ycy4KCgkqIG9sZS9vbGVvYmouYywgbXVsdGltZWRpYS9kcGxheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUlzRXF1YWxHVUlEIGlzIGRlZmluZWQgaW4gJ2luY2x1ZGUvd2luZS9vYmpfYmFzZS5oJy4gQWxsIG90aGVyCglkZWNsYXJhdGlvbnMgbXVzdCBzdXJyZW5kZXIgb3IgcHJlcGFyZSB0byBiZSBtZXQgd2l0aCBkZWFkbHkgZm9yY2UgOi0pCgoJKiByZWxheTMyL29sZTMyLnNwZWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgbmV3IGZ1bmN0aW9ucyAoZnJvbSBXaW45OCkKCUFkZGVkIGNvbW1lbnRzIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlcyBmb3IgZnV0dXJlIHVzZSB3aXRoIGRsbGdsdWUKCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNldCB0aGUgZmxhZ3MgZm9yIEdldFZvbHVtZUluZm9ybWF0aW9uMzJBLgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaW5kV2luZG93IGZhaWxlZCBmb3IgMzIgYml0IHdpbmRvd3Mgd2l0aCBzdHlsZSAhPSBXU19DSElMRC4KCldlZCBGZWIgMTAgMDY6NTI6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvQXR0aWMvcHJpbnQuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL3ByaW50ZHJ2LmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFsYmVydCBEZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCU1vdmVzIGZpbGVzIGZyb20gcHJpbnQuaCB0byB3aW5zcG9vbC5oIGZvciBiZXR0ZXIgU0RLIGhlYWRlciBjb21wbGlhbmNlCglmb3IgV2luZWxpYiBwcm9ncmFtcy4KCgkqIGluY2x1ZGUvaG9vay5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJQWxiZXJ0IERlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhdGh1cnN0b0Bjb3JlbC5jYT4KCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6eWdvYkBjb3JlbC5jYT4KCU1pc2NlbGxhbmVvdXMgcGF0Y2hlcyB0byBoZWFkZXIgZmlsZXMuICBBbGwgb2YgdGhlc2UgYXJlIHN1cHBvc2VkbHkgdGhlcmUKCXRvIGhlbHAgYnVpbGQgV2luZWxpYiBhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IEFsYmVydCBEZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YXRodXJzdG9AY29yZWwuY2E+CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8enlnb2JAY29yZWwuY2E+CglNb3JlIHR5cGVzIHdlIG5lZWQgZm9yIGNvbXBpbGluZyBXaW5lbGliL01GQyBhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJTW9yZSB0eXBlcyBmb3IgY29tbW9uIGNvbnRyb2xzLiAgTmVlZGVkIGZvciBXaW5lbGliLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQmV0dGVyIHNldCBvZiBtYWNyb3MgZm9yIGRlZmluaW5nIHRoZSBDT00gaW50ZXJmYWNlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVHdvIEFEVkFQSTMyIHN0dWJzOiBJbXBlcnNvbmF0ZVNlbGYzMiBhbmQgQWNjZXNzQ2hlY2szMi4gU3BlbGxpbmcgZml4ZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUZpeGVkIGRlYnVnIG91dHB1dCB0byBmb2xsb3cgJy1kZWJ1Z21zZycgZmxhZ3MuCgpUdWUgRmViICA5IDE1OjQ5OjM5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQyMC5jLCBvbGUvc2FmZWFycmF5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3RocmVhZC5jLCB3aW5kb3dzL3dpbmhlbHAuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGVzIHRvIGF2b2lkIHdhcm5pbmdzL2Vycm9ycy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvbHpleHBhbmQuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3ZnYS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvc2hlbGwxNi5oLCBpbmNsdWRlL3dpbmUvdzMyc2tybmwuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZXNvdW5kLmgsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd2ludmVyLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJTW92ZWQgZXZlcnl0aGluZyBvdXQgb2Ygd2luZG93cy5oLgoKCSogZ3JhcGhpY3Mvd2luZy5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL3BhbGV0dGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJQnJhZCBQZXBlcnMgPGJyYWRAbGludXhjYW5hZGEuY29tPgoJV2luRyBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktRml4ZWQgTUVTU0FHRSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRodW5raW5nIGRvd24gdG8gMTYgYml0cyBpbXBsZW1lbnRhdGlvbi4KCVNvIFBlZWtNZXNzYWdlMzIsIEdldE1lc3NhZ2UzMiwgUG9zdE1lc3NhZ2UzMiwgUG9zdFRocmVhZE1lc3NhZ2UgYXJlIGZpeGVkCgl3aXRoIHRoaXMgcGF0Y2guIFVuaWNvZGUgdmVyc2lvbiBvZiB0aG9zZSBmdW5jdGlvbnMgaXMgY3VycmVudGx5IG9ubHkKCWNhbGxpbmcgdGhlIEFTQ0lJIHZlcnNpb24uCgktRml4ZWQgcXVldWUgc2lnbmFsaW5nIHVzaW5nIGEgbmV3IEVWRU5UIG9iamVjdCBpbiB0aGUgcXVldWUgZm9yIDMyIGJpdHMKCXRocmVhZC4gTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0IGhhcyBiZWVuIGZpeGVkIGFuZCBpcyBub3cgYmxvY2tpbmcgb24gdGhlCglyaWdodCBFVkVOVC4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZXRNZXRhRmlsZUJpdHNFeCBzaG91bGQgd29yayBpbiBieXRlcyBub3Qgd29yZHMuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURsbEdldENsYXNzT2JqZWN0IHNob3VsZCB0YWtlIGEgUkVGQ0xTSUQgbm90IGFuIExQQ0xTSUQuCgoJKiBvYmplY3RzL2RpYi5jLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2UgZmF1bHQgaGFuZGxlciAnYWRkcicgYXJndW1lbnQgdG8gTFBDVk9JRC4KCgkqIGZpbGVzL2ZpbGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIFZJUlRVQUxfSGFuZGxlRmF1bHQgaWYgcmVhZC93cml0ZSByZXR1cm5zIEVGQVVMVC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXggdHlwbyB0byBtYXAgR2V0VGV4dEV4dGVudFBvaW50IHRvIHRoZSBjb3JyZWN0IDMyQSB2ZXJzaW9uLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcsIGluY2x1ZGUvcGVleGUuaCwgaW5jbHVkZS93aW5jb24uaCwgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgc21hbGwgYnVnZml4ZXMsIGFkZGVkIG1vcmUgUEUgcmVsb2NhdGlvbiB0eXBlcyAoZm9yIFdpbkNFIG1vc3RseSksCglzb21lIGNvbnNvbGUgcHJvdG90eXBlcywgLWRsbCBpcyB1c2VmdWwgZm9yIHdpbmVsaWIgdG9vLCByZWd0ZXN0Cgljb21waWxlIGZpeGVkLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUdldEN1cnNvclBvcyBpcyBhY3R1YWxseSBhIEJPT0wuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJTW9yZSB0eXBlcywgQysrIHByb3RlY3Rpb24sIGFuZCBhIHR5cG8gY29ycmVjdGlvbiBmb3IgbW1zeXN0ZW0uaC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglNb3ZlIHRoZSAjZGVmaW5lIG9mIERVTU1ZVU5JT05OQU1FKiB0byBiZWZvcmUgdGhleSBhcmUgdXNlZC4KCUFkZCBhIGRlZmluaXRpb24gZm9yIERVTU1ZVU5JT05OQU1FIChhcyBvcHBvc2VkIHRvIERVTjEsIERVTjIuLi4pLgoJVXNlIHRoZSBjb3JyZWN0IFdJTkVMSUJfTkFNRV9BVyBtYWNybyBmb3IgVFZJVEVNIGFuZCByZWxhdGVkIG5hbWVzLgoJRGVmaW5lICJUVl9JVEVNIiB0byBhZ3JlZSB3aXRoIHlvdS1rbm93LXdobydzIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOVUxMIGlzIGEgdmFsaWQgYXJndW1lbnQgYXMgaGFuZGxlIGZvciBHZXRGaWxlVmVyc2lvbkluZm9TaXplMzJBLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgYnVmZmVyZWQgZGV2aWNlIGFjY2VzcyBmb3IgRElucHV0J3MgbW91c2UgZHJpdmVyLgoKCSogZmlsZXMvZmlsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVdyb25nIGFjY2VzcyBvbiBzZXJ2ZXIgaGFuZGxlIHdhcyBkZW1hbmRlZCAoR0VORVJJQ19SRUFEIGluc3RlYWQgb2YKCUdFTkVSSUNfV1JJVEUpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiAodGFrZXMgc3RyaW5ncyBvciByZXMtaWQncyBub3cpLgoKCSogZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTlVMTCBwb2ludGVyIGNoZWNrIGZvciBvdXRwdXQgcGFyYW1ldGVycy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJRml4ZWQgdHdvIHBvaW50ZXIvaW50ZWdlciBtaXNtYXRjaCB3YXJuaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZTogWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglTcGVsbGluZyBmaXhlcy4KCgkqIGNvbnNvbGUveHRlcm0uYywgd2luMzIvY29uc29sZS5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+Cgl3aW5lX29wZW5wdHkgaXMgbm90IHByb3Blcmx5IGRlY2xhcmVkIChlaXRoZXIgbWlzc2luZyBvciBtaXNtYXRjaGVkCglkZWNsYXJhdGlvbnMpIGluIGJvdGggcGxhY2VzIHdoZXJlIGl0IGlzIHVzZWQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RpYi5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglGaXggdHlwZXMgb2YgR2V0RElCaXRzIGZ1bmN0aW9ucyAoTFBTVFIgc2hvdWxkIGJlIExQVk9JRCkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIHNldmVyYWwgcHJvYmxlbXMgd2l0aCBTZXRESUJpdHNUb0RldmljZSBpZiB4U3JjICE9IDAuCglUaGFua3MgdG8gSWFuIFNjaG1pZHQgZm9yIHRoZSBsb2dzLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJVGhlIHN5c3RlbXMgYnV0dG9ucyAobWluaW1pemUvcmVzdG9yZS9jbG9zZSkgbm93IGFwcGVhciBvbiB0aGUgbWVudQoJYmFyIG9mIG1kaSBhcHBsaWNhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIG1hZ2ljIG1lbnUgaXRlbXMgaWQncyB1c2VkIGJ5IHdpbmRvd3Mgd2hlbiBpbnNlcnRpbmcKCXRoZSBtaW5pbWl6ZS9tYXhpbWl6ZS9jbG9zZSBidXR0b25zIGluIHRoZSBtZW51IGJhciBvZiBhbiBhcHBsaWNhdGlvbi4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogSmFzb24gTWNNdWxsYW4gPGptY2NAb250di5jb20+CglBZGRzIHN1cHBvcnQgZm9yIEVNUl9TVFJFVENIRElCSVRTIGluIEVNRnMuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgaW1hZ2Ugc2l6ZSBhbmQgbGluZSBzaXplLCBhZGRlZCA4Yml0IGNvbG9yL3BhbGV0dGUgaGFuZGxpbmcuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglGaXhlZCBmb3JtYXR0aW5nIG9mIGNvZGUKCU5vdyBjaGFuZ2VzIHRvIGRpcmVjdG9yeSBvZiBwcm9ncmFtIHRvIGJlIHJ1biBiZWZvcmUgc3RhcnRpbmcgd2luZQoKCSogd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS91c2VyLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBDbGVhbmVkIHVwIHRoZSBtZXNzYWdlIHF1ZXVlIHdoZW4gYSB0aHJlYWQgZXhpdCAoYnV0IG5vdCB0aGUgcHJvY2VzcykuCgktIE1vZGlmaWVkIFFVRVVFX0RlbGV0ZU1zZ1F1ZXVlIHRvIGV4aXQgZ3JhY2VmdWxseSAod2l0aG91dCBjcmFzaGluZyBXaW5lKSBpZgoJICBxdWV1ZSBsaW5rIGxpc3QgaXMgY29ycnVwdGVkLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTb3VuZHMgd2VyZSBjdXQgb2ZmIGR1ZSB0byBpbnRlZ2VyIG92ZXJmbG93LiBGaXhlZC4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRlZCB3aW5kb3dzeC5oIGZvciBXaW5lbGliLgoKRnJpIEZlYiAgNSAxNzo0MDo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCUFkZGVkIGNvbW1vbiBkaWFsb2dzIHRlc3QgcHJvZ3JhbS4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIG1hbmFnZW1lbnQgYW5kIGFsbG9jYXRpb24gb2YgdGhlIFBFUlFVRVVFREFUQSBzdHJ1Y3R1cmUuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGEgZHVtcCBvZiB0aGUgcGFsZXR0ZSBjcmVhdGlvbiBmbGFncwoJLSBjaGFuZ2VkIHBhbGV0dGUgY3JlYXRpb24gY29kZSBpbiB2Z2EuYyB0byBwcmV2ZW50IHVzZWxlc3MgZXJyb3IKCSAgbWVzc2FnZQoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgZmlsZXMvZHJpdmUuYywgd2luZS5pbmk6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgdmZhdC93aW45NSBhcyBkZWZhdWx0LgoKCSogaW5jbHVkZS92ZncuaCwgbXVsdGltZWRpYS9tc3ZpZGVvLmMsIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgbXN2aWRlbyAvIHZmdy5oLCB1c2UgYnVpbHRpbiBtc3ZmdzMyLmRsbCBieSBkZWZhdWx0LCBhZGRlZAoJYXZpaW5mbyBhbmQgYXZpcGxheSBwcm9ncmFtcy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb250aW51ZWQgaGFjayB0byB3aW4zMi9jb25zb2xlLmMsIHNvIHRoYXQgdGhlIElEQSBQcm8gRGlzYXNzZW1ibGVyCgl3b3JrcyBhZ2Fpbi4gTmVlZHMgbXVjaCBtb3JlIHdvcmsgaG93ZXZlci4KCgkqIG9sZS9zdG9yYWdlMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbmNsdWRlIG9iamJhc2UuaCBmb3IgQ29UYXNrTWVtKiBwcm90b3R5cGVzIChvciB3ZSBnZXQgV0lOQVBJCglwcm9ibGVtcykuCgoJKiBvbGUvc3RvcmFnZTMyLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBVTE9ORyB0byBzdGF0aWMgY29uc3QgT0ZGU0VUX3h4LgoKVGh1IEZlYiAgNCAxNjo0NTo0MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVmFyaW91cyBtYW5wYWdlIHVwZGF0ZXMsIGluY2x1ZGluZyB0aGUgaW5jb3JyZWN0IHN0YXRlbWVudCBhYm91dCBnbGliYwoJYW5kIGNsb25lKCkuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRml4IHBvaW50ZXIgdG8gdGhlIFdpbmRvd3MgRGlzYXNzZW1ibGVyIDMyLiAgVGhhbmtzIHRvIEhlcmJlcnQKCVJvc21hbml0aCA8aGVycEB3aWxkc2F1Lmlkdi51bmktbGluei5hYy5hdD4gZm9yIHN1Z2dlc3RpbmcgdGhpcy4KCgkqIGRsbHMvbXNhY20zMi9kcml2ZXIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFub3RoZXIgdXNhZ2Ugb2Ygbm9uLXBvcnRhYmxlIGZ1bmN0aW9ucy4uLgoKCSogbXNkb3MvZG9zbWVtLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIHZhbHVlcyBvZiBwQmlvc0RhdGEgYWRkZWQvZml4ZWQuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy93aWRnZXRzLmMsIGRlYnVnZ2VyL2RiZy55LCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy93aW5nLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgbW9yZSBjb2RlIHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUVFkgZHJpdmVyIGNoYW5nZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2Rlc2t0b3AuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJWDExIGRyaXZlciBjaGFuZ2VzLgoKCSogdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYywgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOb24tWDExIGNvbXBpbGUgZml4IGZvciBnZW5lcmF0ZWQgY29kZS4KCgkqIGluY2x1ZGUvbW9uaXRvci5oLCB3aW5kb3dzL211bHRpbW9uLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgbW9uaXRvciBhYnN0cmFjdGlvbi4KCgkqIGdyYXBoaWNzL3R0eWRydi8uY3ZzaWdub3JlLCBncmFwaGljcy90dHlkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIE1ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOZXcgVFRZIGRyaXZlciBmb3IgR0RJLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCB0aGUgZ3JhcGhpY3MvdHR5ZHJ2IGRpcmVjdG9yeS4KCS0gRG9uJ3Qgc2VhcmNoIGZvciByZWVudHJhbnQgWCB3aGVuIFggZG9lc24ndCBleGlzdC4KCS0gQWRkZWQgY29uZmlnIG9wdGlvbnMgSEFWRV9MSUJYWFBNCgktIEFkZGVkIGNoZWNrcyBpZiB0aGUgaGVhZGVyIGZpbGVzIGFsc28gZXhpc3QgZm9yIHNvbWUgbGlicmFyaWVzCgpUdWUgRmViICAyIDE2OjE0OjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgb2xlL3NhZmVhcnJheS5jLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlcGxhY2VkIHJlZmVyZW5jZXMgdG8gaW50ZXJmYWNlcy5oIGJ5IHdpbmUvb2JqX3h4eC5oIGhlYWRlcnMgaW5zdGVhZAoJc2luY2UgdGhlc2UgaGVhZGVycyBhbHJlYWR5IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvbXNkb3MuaCwgbXNkb3MvQXR0aWMvY2Ryb20uYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBtc2Rvcy9jZHJvbS5jIGZpbGUuCglNYWtlIHVzZSBvZiBuZXcgV2luZSBpbnRlcm5hbCBDRCBST00gaW50ZXJmYWNlLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0cmFja3MgaW5kZXhpbmcgaW4gbWNpY2RhLmMKCU1ha2UgdXNlIG9mIG5ldyBXaW5lIGludGVybmFsIENEIFJPTSBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL2Nkcm9tLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvY2Ryb20uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IFdpbmUgaW50ZXJuYWwgaW50ZXJmYWNlIGZvciBoYW5kbGluZyBDRCBSb20gKGVzcGVjaWFsbHkgYXVkaW8gQ0QKCVJPTSkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglDaGFuZ2UgYSBmZXcgdHlwZXMgdG8gbWF0Y2ggeW91LWtub3ctd2hvJ3MgZGVjbGFyYXRpb25zLgoJSFRSRUVJVEVNIGlzIGEgc3RydWN0IF9UUkVFSVRFTSBGQVIqCglHZXRESUJpdHMgcGFzc2VzIGEgTFBWT0lEIGZvciB0aGUgYml0bWFwIGRhdGEsIG5vdCBMUFNUUi4KCUFkanVzdG1lbnQgb2YgV2luZSBDIGNvZGUgdG8gbWF0Y2ggdGhlIG5ldyB0eXBlcyBpbmNsdWRlZC4KCgkqIG1pc2MvbHpleHBhbmQuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgR0VUX0xaX1NUQVRFIG1hY3JvLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN0dWJzIGZvciBuZXcgRGlyZWN0RHJhdzQgYW5kIERpcmVjdERyYXdTdXJmYWNlNCBtZXRob2RzLgoKCSogdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL0NIQU5HRVM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglGaXhlZCB3cm9uZyBvcmRlciBvZiByZXNfaWNvIGFuZCByZXNfYm1wIHdoaWNoIG11c3QgYmUgaW4gUlRfeHh4IG9yZGVyLgoKCSogZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJcmVzbGVuIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXNlZCBpbiBHZXRGaWxlUmVzb3VyY2UzMiAoZml4ZXMgc29tZQoJc3RyYW5nZSBWZXJRdWVyeVZhbHVlIGNyYXNoZXMpLgoKCSogb2xlL25scy9zdmUubmxzOiBKYW4gRC4gPEphbi5EamFydkBtYm94MjAwLnN3aXBuZXQuc2U+CglBZGRlZCBkZWZpbml0aW9uIGZvciBMT0NBTEVfU0dST1VQSU5HLCBMT0NBTEVfU01PTkdST1VQSU5HIGFuZAoJTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUy4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUHJlc2VydmUgRUFYIGluIFVuTWFwU0xGaXhBcnJheSgpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlcyBsaXR0bGUgcG9pbnRlciBidWcgaW4gRFBBX0RlbGV0ZVB0cigpLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtZW1vcnkvc3RyaW5nLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC40MzQgKFVuaWNvZGVUb0Fuc2kpLgoKCSogZmlsZXMvZHJpdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHZXREaXNrRnJlZVNwYWNlRXgzMkEgY2FuIGdldCBudWxsIHBvaW50ZXJzIGFuZCBzdGlsbCBub3QgY3Jhc2guCgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2xlYXIgdXAgYXJncyB0byBQU0RSVl9BZHZhbmNlZFNldHVwRGlhbG9nLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlZHVjZSBNQVhfRk9OVF9TSVpFIHRvIDEwMDAuCgpTdW4gSmFuIDMxIDE5OjA0OjMxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGlucHV0IHF1ZXVlIHRvIHNlcnZlci1zaWRlIGNvbnNvbGUgb2JqZWN0LAoJcmVhZC93cml0ZV9jb25zb2xlX2lucHV0IHJlcXVlc3RzLCBhbmQgdXNlIHRoZW0gZm9yCglSZWFkL1dyaXRlQ29uc29sZUlucHV0LgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglGaXggdG8gYWxsb3cgZm9yIHJlY3Ztc2coKSByZXR1cm5pbmcgbGVzcyBkYXRhIHRoYW4gaXMgbmVlZGVkLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUF0dGVtcHQgYXQgZml4aW5nIHRoZSBNQVhfUEFUSCBtdWx0aXBsZSBkZWZpbml0aW9uIHByb2JsZW0uCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gMzEgMTA6MTM6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZnkgTkVfRmluZFR5cGVTZWN0aW9uIGFuZCBORV9GaW5kUmVzb3VyY2VGcm9tVHlwZSBzbyBhcyB0byBiZQoJdXNhYmxlIGJ5IHRoZSBWRVJTSU9OIGNvZGUuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBHZXRSZXNEaXJFbnRyeUEgZm9yIHVzZSBieSB0aGUgVkVSU0lPTiBjb2RlLgoKCSogbWlzYy9BdHRpYy92ZXIuYywgbWlzYy9NYWtlZmlsZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBvbGQgVkVSLkRMTCBjb2RlLgoKCSogZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFZFUlNJT04uRExMLiBCYXNlZCBvbiBvbGQgbWlzYy92ZXIuYy4KCS0gQWNjZXNzaW5nIFBFIHZlcnNpb24gaW5mbyByZXNvdXJjZXMgc2hvdWxkIHdvcmsgY29ycmVjdGx5IG5vdy4KCS0gRml4ZWQgbWVtb3J5IGxlYWtzLgoJLSBDbGVhbiBzZXBhcmF0aW9uIG9mIDE2LSBhbmQgMzItYml0IHBhcnRzLgoJLSBNaW5vciBidWdmaXhlcy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkIG5ldyBzdWJkaXJlY3RvcmllcyBkbGxzL3ZlciBhbmQgZGxscy92ZXJzaW9uLgoKCSogaWYxNjMyL3Zlci5zcGVjLCBkbGxzL3Zlci8uY3ZzaWdub3JlLCBkbGxzL3Zlci9NYWtlZmlsZS5pbiwgZGxscy92ZXIvdmVyMTYuYywgaW5jbHVkZS92ZXIuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgVkVSLkRMTC4gVGh1bmtzIHVwIHRvIFZFUlNJT04uRExMLgoKCSogbWlzYy9sc3RyLmM6IFBhc2NhbCBDdW9xIDxjdW9xQHZpc2FuLmlucmlhLmZyPgoJSXNDaGFyQWxwaGEzMkE6IHVzZSBsb29rLXVwIHRhYmxlIGZyb20gb2xlMm5scy5jLgoKCSogb2xlL29sZTJubHMuYzogUGFzY2FsIEN1b3EgPGN1b3FAdmlzYW4uaW5yaWEuZnI+CglMQ01hcFN0cmluZzMyQTogSW1wbGVtZW50ZWQgZmxhZ3MgTk9STV9JR05PUkVOT05TUEFDRSBhbmQKCU5PUk1fSUdOT1JFU1lNQk9MUyBpbiBzdHJpbmcgbWFwcGluZyBtb2RlLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQ3JlYXRlIFggd2luZG93IGZvciBjaGlsZCB3aW5kb3dzIHJlcGFyZW50ZWQgdG8gYmUgdG9wIGxldmVsIHdpbmRvd3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIFBhdGhRdWFsaWZ5MzJbQXxXXS4KCgkqIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJhYnJpYW4gVmlrdG9yIDx2QHVseXNzZXMuc2NoLmJtZS5odT4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgQ29sb3JLZXlpbmcgZHVyaW5nIGJsaXRzCgktIG1pc2NlbGxhbmVvdXMgZml4ZXMKCgkqIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvbnRkbGwuaCwgcmVsYXkzMi9udGRsbC5zcGVjOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGdhbGF4eS5hbXMuc3VueXNiLmVkdT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIE1SU1cgbG9ja3MuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZXMgKHRoZSBQU1AgaGFuZGxpbmcgd2FzIGluY29ycmVjdCwgYXMgdGhlCglNWl9TVVBQT1JURUQgZGVmaW5pdGlvbiB3YXMgbWlzc2luZykuIEFkZGVkIGEgc2ltcGxlIGhhbmRsZXIgZm9yCglkaXJlY3QgY29uc29sZSBpbnB1dCwgd2hpY2ggbmVlZHMgdG8gYmUgaW1wcm92ZWQuCgoJKiBjb25zb2xlL3R0eS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNtYWxsIGZpeC4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTGlzdCBoYW5kbGVzIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgaXMgd2FpdGluZyBmb3Igd2hlbiBydW5uaW5nIHdpdGgKCS1kZWJ1Z21zZyArd2luMzIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgR2V0U2VjdXJpdHlEZXNjcmlwdG9yQ29udHJvbC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBHZXRVc2VyT2JqZWN0U2VjdXJpdHkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgaGFuZGxpbmcgb2YgUkVHX01VTFRJX1NaIGFuZCBmaXhlZCBzbWFsbCBidWcgaW4KCVJlZ1NldFZhbHVlLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRXZlcnkgRU1fR0VUTElORSBzZW5kIGJldHdlZW4gYSAzMlcgdG8gYSAzMkEgd2luZG93IHJldHVybmVkCglpbmNvbXBsZXRlIHZhbHVlcyBiZWZvcmUgKHRoZSBmaXJzdCAyIGNoYXJzIHdoZXJlIGN1dCBhd2F5KS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IHR5cG8gaW4gU2V0V2luZG93UG9zMzIuCgpTYXQgSmFuIDMwIDE1OjU1OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2J1aWx0aW4zMi5oLCBtaXNjL21haW4uYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5hYmxlL2Rpc2FibGUgcmVsYXkzMiBkZWJ1Z2dpbmcgb24gdGhlIGZseS4gU3RhcnQgYXBwIHdpdGgKCS1kZWJ1Z21zZyArcmVsYXkgb3Igd2FybityZWxheS4gU3VnZ2VzdGVkIGJ5IEp1ZXJnZW4gU2NobWllZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIE1lc2EncyBoZWFkZXIgZmlsZXMuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBlcnJvciBtZXNzYWdlcy4KCgkqIG1pc2MvY29tbWRsZy5jOiBCZXJuZCBIZXJkIDxoZXJkQGhlcmRzb2Z0LmNvbT4KCVVzZSBwcm9wZXIgMTYtPjMyIG1lc3NhZ2UgY29udmVyc2lvbiBpbiBGSUxFRExHX0NhbGxXaW5kb3dQcm9jLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IEJlcm5kIEhlcmQgPGhlcmRAaGVyZHNvZnQuY29tPgoJU2V0UGFyZW50IHNob3VsZCBsaW5rIHRoZSB3aW5kb3cgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LgoKCSogd2luZG93cy93aW5wb3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbiBXaW5kb3cgU2V0V2luZG93UG9zIHdpdGggU1dQX0hJREVXSU5ET1cgZG9lcyBub3QgcmVtb3ZlCgl0aGUgZm9jdXMgZnJvbSB0aGUgZm9jdXMgd2luZG93OyBTaG93V2luZG93IHdpdGggU1dfSElERSBkb2VzLgoJU28gbW92ZSB0aGUgY29kZSB0aGF0IGRvZXMgdGhpcyBmcm9tIFNldFdpbmRvd1BvcyB0byBTaG93V2luZG93LgoKCSogbWVtb3J5L3N0cmluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIGluIGxzdHJjcHkqIChXaW5kb3dzIHVzZXMgcmVhbCBleGNlcHRpb24gaGFuZGxlcnMpLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqdXJhbkBjc2UucHN1LmVkdT4KCURvbid0IGluc3RhbGwgaW5jbHVkZSBmaWxlcyB3aGVuIC0tZGlzYWJsZS1saWIgaXMgdXNlZC4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFdJTk1NIGpveSogLnNwZWMgZW50cmllcy4KCgkqIG1zZG9zL3htcy5jOiBBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYTVMgZml4LgoKCSogbXNkb3MvZG9zbWVtLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTcGVsbGluZyBmaXguCgoJKiBSRUFETUU6IEFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvYyB1cGRhdGUuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSBpbnRlcnJ1cHQgZW5oYW5jZW1lbnRzLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJaW1wbGVtZW50ZWQgdGltZXIgbGF0Y2hpbmcKCXRyYWNlIG1lc3NhZ2UgZml4Cgl0ZW1wb3JhcnkgImZpeCIgZm9yIExpbnV4J3MgY29hcnNlIHRpbWVyIHJlc29sdXRpb24KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBzdGFydHVwLXNodXRkb3duIG1lY2hhbmlzbSBmb3IgdGhlIENPTSBzdWJzeXN0ZW0uCglJbXBsZW1lbnRlZCB0aGUgQ2xhc3Mgb2JqZWN0IHJlZ2lzdHJhdGlvbiBtZWNoYW5pc20uCgoJKiBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmU6IEFkZGVkIEZpLnMKCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgT0xFIHN0cnVjdHVyZWQgc3RvcmFnZS4gVGhlIG1haW4KCWZlYXR1cmVzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gYXJlOgoJLSBDYW4gb3BlbiBzdG9yYWdlcyBjcmVhdGVkIGluIFdpbmRvd3MuCgktIENhbiBjcmVhdGUgbmV3IHN0b3JhZ2VzIHRoYXQgdGhlIHdpbmRvd3MgbGlicmFyaWVzIGNhbgoJICByZWFkLgoJLSBQcm92aWRlcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY3JlYXRlL29wZW4vcmVtb3ZlIGFuZAoJICByZW5hbWUgc3RyZWFtcyBhbmQgc3RvcmFnZXMgaW5zaWRlIHRoZSBtYWluIHN0b3JhZ2Ugb2JqZWN0LgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1pc2NlbXUvbWFpbi5jLCBncmFwaGljcy9kZHJhdy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZpbmVkIFJFU1RPUkVfU0lHTkFMUyBieSBkZWZhdWx0IGFuZCBjYWxsIFNJR05BTF9FbXVsYXRvckluaXQKCXRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyIGluc3RlYWQuIEFkZGVkIGEgZmV3IHRyYWNlcy4gRml4ZWQgdGhlCgkiTWVtb3J5IGNvcnJ1cHRpb24gISIgbWVzc2FnZSBpbiBER0EgbW9kZS4gQ29tbWVudGVkIG91dCBhbgoJdW5uZWNlc3NhcnkgVFNYRjg2VmlkTW9kZVNldFZpZXdQb3J0IHRoYXQgY2F1c2VkIG15IFggc2VydmVyIHRvCglhY3QgdXAsIHJlbHlpbmcgb24gVFNYRjg2REdBU2V0Vmlld1BvcnQgaW5zdGVhZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgbXNkb3MvaW50MmYuYywgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZmlsZXMvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIG1vcmUgd2FybmluZ3MgYW5kIGJ1Z3MgZml4ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJU21hbGwgdXBkYXRlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gVGhlIHVzdWFsIGJ1Z2ZpeGVzLgoJLSBCZXR0ZXIgdW5pY29kZSBzdXBwb3J0IChvbmx5IGRlZmluZXMsIGN1cnJlbnRseSkKCS0gRHJhZyAmIGRyb3AgaW1wbGVtZW50ZWQuCgktIExQU1RSX1RFWFRDQUxMQkFDSyBzaG91bGQgd29yayBub3cuCgktIEZpcnN0IHN0YXJ0IGF0IGN1c3RvbSBkcmF3IGNvZGUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhhdCB0aGUga2V5c3RhdGUgcmVjZWl2ZWQgYnkgdGhlIFdNX1hCVVRUT05VUCBhbmQKCVdNX1hCVVRUT05ET1dOIG1hdGNoZXMgdGhlIG1lc3NhZ2UuIEluIFgsIHRoZSBrZXlzdGF0ZSBpcyBjaGFuZ2VkCglhZnRlciB0aGUgbWVzc2FnZSBpcyBwcm9jZXNzZWQuICBJbiBXaW5kb3dzLCBpdCBpcyBjaGFuZ2VkIGJlZm9yZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jIHVwZGF0ZXMuCgoJKiB3aW4zMi9maWxlLmM6IEJlcmVuZCBSZWl0c21hIDxiZXJlbmQgYXQgYXNzZXQtY29udHJvbC5jb20+CglTZXRGaWxlQXR0cmlidXRlczMyQSBjaGFuZ2VkIHRvIG1ha2UgZmlsZSB3cml0ZWFibGUgd2hlbgoJRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkgaXMgbm90IHNldC4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgbXNkb3MvaW50MTAuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJUHJlbGltaW5hcnkgY29sb3IgY29uc29sZSBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmVzb3VyY2VzL3N5c3Jlc19GaS5yYzoKCUp1a2thLVBla2thIElpdm9uZW4gPGppaXZvbmVuQHBvc2VpZG9uLmNzLmh1dC5maT4KCVVwZGF0ZWQgRmlubmlzaCBsYW5ndWFnZSBzdXBwb3J0LgoKRnJpIEphbiAyOSAxNToxMjoxMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG11bHRpbWVkaWEvbXN2aWRlby5jLCBvbGUvZ3VpZC5jLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCByZWxheTMyL21zdmZ3MzIuc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgbXN2aWRlby4gTmV3IHByb2dyYW0gJ2ljaW5mbyBbLWFib3V0XSBbLWNvbmZpZ3VyZV0nIHRvCglxdWVyeSBpbnN0YWxsZWQgKHdpbjMyKSBjb21wcmVzc29ycy4gU3RhcnRlZCBvbiBBVklGSUxFIHN1cHBvcnQuCgpUaHUgSmFuIDI4IDE3OjU2OjE0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9iaW5kY3R4LmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBGaWxlTW9uaWtlciwgSXRlbU1vbmlrZXIgYW5kIEJpbmRDdHgKCWNsYXNzZXMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubDoKCU5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW1wbGVtZW50ZWQgdGhlIHN5bWJvbGZpbGUgY29tbWFuZCAoYXMgbWVudGlvbmVkIGJ5IHRoZSBoZWxwCgljb21tYW5kKS4gVGhpcyByZWFkcyBhIHN5bWJvbCBmaWxlIGluIHRoZSBmb3JtYXQgZ2VuZXJhdGVkIGJ5IG5tLgoKCSogbXVsdGltZWRpYS9kcGxheS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBTbWFsbCBidWcgZml4LgoJLSBBZGRlZCBkaXJlY3QgcGxheSBhc2NpaSBpbnRlcmZhY2VzLgoJLSBGaXhlZCB1cCB0aGUgUXVlcnlJbnRlcmZhY2UgZm9yIGRwbGF5IGFuZCBkcGxheWxvYmJ5IHRvIGhhbmRsZSBhbGwgY2FzZXMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEZJTEVfVklFVyBzdHJ1Y3QgaW5pdGlhbGlzYXRpb24uCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgbm9uLWkzODYgY29tcGlsZS4KCgkqIGdyYXBoaWNzL3ZnYS5jLCBtc2Rvcy9kcG1pLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9tbWlvLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDb21tZW50ZWQgb3V0IHVudXNlZCB2YXJpYWJsZXMgdG8gcHJldmVudCBuZWVkbGVzcyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgbWlzYy9kZGVtbC5jOgoJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCTFzdCBjdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlSW5pdGlhbGl6ZTMyVyBhbmQgc3VwcG9ydGluZyBjb2RlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gc3RhbmRhcmRpemF0aW9ucy4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gTWFkZSB0aGUgbWVzc2FnZSBxdWV1ZSBhY2Nlc3MgdG8gYmUgdGhyZWFkIHNhZmUuIChVc2luZyB0d28gbmV3CgkgIGZ1bmN0aW9ucyB0byBhY2Nlc3MgdGhlIG1lc3NhZ2UgcXVldWUsIFFVRVVFX0xvY2soKSwgUVVFVUVfVW5sb2NrKCkKCSAgaW5zdGVhZCBvZiBHbG9iYWxMb2NrMTYoKSkuCgktIEZpeGVkIFFVRVVFX0R1bXBRdWV1ZSAodXNlZCBieSAiaW5mbyBxdWV1ZSA8aGFuZGxlPiIgd2l0aCB0aGUKCSAgd2luZS1kZWJ1Z2dlcikuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvd2luY29uLmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2ltbS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1zZG9zL2ludDIxLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvbnRkbGwvcnRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGEgbG90IG9mIHdhcm5pbmdzIGZvciBwb3NzaWJsZSBwcm9ibGVtcy4KCgkqIG1pc2MvY29tbS5jOiBIZXJiZXJ0IFJvc21hbml0aCA8aGVycEB3aWxkc2F1Lmlkdi51bmktbGluei5hYy5hdD4KCUZpeGVkIHR5cG8uCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglGaXhlZCB2YXJpb3VzIGJ1Z3MuCglNYWRlIG5ld2JpZSBtb2RlIGVhc2llci4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBHZXRJY29uSW5mbzE2ICguc3BlYyxJQ09OSU5GTyBzdHJ1Y3QgaXMgZGlmZmVyZW50IGZvciBXaW4xNi9XaW4zMikuCgoJKiBjb25zb2xlL25jdXJzZXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTd2l0Y2ggbmN1cnNlcy5oL2N1cnNlcy5oIGluY2x1ZGUgKHdvcmtzIGJldHRlciBmb3IgRnJlZUJTRCkuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGxvYWRpbmcgb2Ygd2luMzIgZHJpdmVycy4KClR1ZSBKYW4gMjYgMTc6Mjk6NDkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRG9uJ3QgYWJvcnQgUFJPRklMRV9HZXRTZWN0aW9uIG9uIGVtcHR5IGtleXMuCgoJKiBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUZW1wb3JhcnkgI2lmIDAnZWQgcGFydCBmb3IgYnVpbHRpbiBtb2R1bGVzIGluIE1TQUNNIHRvIG1ha2UgaXQKCWNvbXBpbGUgd2l0aCB0aGUgcGF0Y2ggZm9yIGxvYWRhYmxlIGRyaXZlcnMuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCByZWxheTMyL3dpbm1tLnNwZWMsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZHJpdmVycyBpbiBXaW5lLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQSBwZXJsIHNjcmlwdCB0byBwcm9kdWNlIGEgYnVnIHJlcG9ydCB3aXRoIGxpdHRsZSBoYXNzbGUuCgoJKiBncmFwaGljcy9kaXNwZGliLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgKGR1bW15KSBEZWF0aC9SZXN1cnJlY3Rpb24gY2FsbHMgdG8gRGlzcGxheURpYi4KCgkqIG1pc2MvbHpleHBhbmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvY2F0ZSBhIERPUyBoYW5kbGUgaWYgd2Ugb3BlbiBhIG5vcm1hbCBmaWxlIHdpdGggTFpPcGVuRmlsZTE2LgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGRlcHRoIGNvbnZlcnNpb24gcm91dGluZXMgKG9ubHkgOGJwcCAtPiAxNiBicHAgZm9yIG5vdykKCS0gYWRkZWQgc3VwcG9ydCBvZiBERVBUSF9GSUxMIGZvciBCbGl0cwoJLSBhZGRlZCBzb21lIGZsYWdzIGluIEdldENhcHMgdG8gZ2V0IHNvbWUgZ2FtZXMgd29ya2luZwoKCSogaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBHZXRJY29uSW5mbzE2IC0+IGNhbGwgdG8gR2V0SWNvbkluZm8zMi4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogQ29tbWVudGVkIG91dCBFWEVDX1NFUlZFUgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTMgbWlzc2luZyBXSU5BUEkgYWRkZWQuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgc29tZSB0cmVldmlldyByZWxhdGVkIGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIQnJvd3NlRm9yRm9sZGVyKCkgZGlhbG9nLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiB0eXBlIChyZW1vdmVkIHF1aXRlIGEgZmV3IHdhcm5pbmdzKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHZXRTZWN1cml0eURlc2NyaXB0b3JPd25lci9Hcm91cCwgUmV2ZXJ0VG9TZWxmIHN0dWJzLgoJUmV0dXJuIE5VTEwgZnJvbSBPcGVuVGhyZWFkVG9rZW4uCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGVuZGxlc3NseSBsb29wIGluIENPTlNPTEVfZ2V0X2lucHV0IGFmdGVyIEVPRi4KCUNyZWF0ZSB4dGVybSBldmVuIGlmIHN0ZGluIGlzIG5vdCBhIHRlcm1pbmFsaGFuZGxlLgoJU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uOiBPbmx5IG1ha2UgY29tcGxleCBjb25zb2xlIG9uIHJvdyBjaGFuZ2UsCglpZ25vcmUgaW50ZXJsaW5lIHBvc2l0aW9uaW5nIChzbyB0aGUgY3lnd2luIGNtZGxpbmUgdG9vbHMgZG8gbm90CgljcmVhdGUgeHRlcm1zIHVubmVjZXNzYXJ5KQoKCSogbWlzYy9wcmludGRydi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1ha2Ugc3VyZSBEcnZHZXRQcmludGVyRGF0YSByZXR1cm5zIHRoZSBjb3JyZWN0IGRhdGEgaWYgY2JEYXRhIDw9IDEKCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBDaGFuZ2luZyBNRVNTQUdFUVVFVUUgc3RydWN0dXJlIGFjY29yZGluZyB0byBVbHJpY2ggcHJvcG9zaXRpb24uCgktIE9uZSBtZXNzYWdlIHF1ZXVlIGZvciBldmVyeSB0aHJlYWQgbmVlZGluZyBpdC4KCS0gTWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcXVldWUgYXJlIG5vdyBzdG9yZWQgaW4gYSBsaW5rZWQgbGlzdAoJLSBNZXNzYWdlcyBhcmUgYWxsb2NhdGVkIGluIHRoZSBzeXN0ZW0gaGVhcC4KCS0gTWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcXVldWUgYXJlIDMyIGJpdHMgKE1TRzMyKS4KCS0gQWxsIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyByZWdhcmRpbmcgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcXVldWUgYXJlCgkgIHRocmVhZCBzYWZlLgoKU3VuIEphbiAyNCAxOToxNDo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGluY2x1ZGUvZmxhdHNiLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc2V2ZXJhbCBidWdzIGFuZCB0eXBvcy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlcyBhbmQgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBkcmFnIGxpc3QgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcG9pbnRlciBidWdzIGluIERQQV9JbnNlcnRQdHIoKSBhbmQgRFBBX0RlbGV0ZVB0cigpLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBpbmNsdWRlL3Byb2dyZXNzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgV01fW0cvU11FVEZPTlQgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBXTV9DT01NQU5EIGFuZCBXTV9OT1RJRlkgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCByZWRyYXcgYnVnIGZvciB0cmFja2luZyB0b29sdGlwcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHNvbWUgbWVzc2FnZXMgdG8gdGhlIHJlYmFyIGNvbnRyb2wuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglTZXZlcmFsIGludGVybmFsIGZ1bmN0aW9ucyB3b24ndCBjb21waWxlIHdoZW4gdGhlIGNvbmRpdGlvbmFsCgkjaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKQoJY29tZXMgb3V0IGZhbHNlLiAgSSBtb3ZlZCB0aGUgY29uZGl0aW9uYWxzIGFyb3VuZCBzbyB0aGF0Cgl0aGUgZmlsZSB3b3VsZCBhdCBsZWFzdCBjb21waWxlLiAgTm90IHN1cmUgaWYgaXQgZG9lcyB0aGUKCXJpZ2h0IHRoaW5nIG9uIG5vbi1saW51eC9GcmVlQlNEL05ldEJTRCBzeXN0ZW1zLgoKCSogbWlzYy90b29saGVscC5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglNb3ZlZCBwcm9jZXNzLmggaGlnaGVyIHVwIHRoZSBpbmNsdWRlIGxpc3QsIHRvIGF2b2lkIGEgcHJvYmxlbSB3aXRoCgkiRVJSIiBiZWluZyByZWRlZmluZWQgaW4gc3lzL3JlZ3NldC5oLgoKCSogbWlzYy9jb21tLmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCVRoZSBCNTc2MDAgYW5kIEIxMTUyMDAgc3ltYm9scyBhcmUgbm90IGRlZmluZWQgaW4gVW5peHdhcmUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQ2hhbmdlIFNXXz8/PyBvcHRpb25zIG9uIGxpc3QgYm94IHNjcm9sbGluZyBzbyB0aGF0IHRoZXkgbWF0Y2ggd2hhdAoJV2luZG93cyBkb2VzLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIERPUyBoYW5kbGUgYWxsb2NhdGlvbiBzbGlnaHRseSwgdG8gZml4IHBvdGVudGlhbCBtZW1vcnkKCWxlYWtzIGFuZCBsb3N0IGhhbmRsZXMuIEFsc28gcmVtb3ZlZCBzb21lIHVzZWxlc3MgaW5pdCBjb2RlLgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgaWYxNjMyL2R1bW15LmMsIGlmMTYzMi9nZGkuc3BlYywgbWlzYy9wcmludGRydi5jOgoJTmljayBIb2xsb3dheSA8Tmljay5Ib2xsb3dheUBhbGZpZS5kZW1vbi5jby51az4KCUludGVybmFsIFBvc3RTY3JpcHQgcHJpbnRlciBkcml2ZXIgaW1wcm92ZW1lbnRzLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPEcuUGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZWQgRURJVF9FTV9DaGFyRnJvbVBvcyB0byByZXR1cm4gbGluZSBudW1iZXIuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGcmVlIHRoZSBwcml2YXRlIGRhdGEgcG9pbnRlciwgVEhFTiBzZXQgaXQgdG8gTlVMTC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvc2FmZWFycmF5LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBTYWZlQXJyYXkgZmFtaWx5IGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBzdHViIGZvciBTZXRUaHJlYWRMb2NhbGUuCgoJKiBvYmplY3RzL3RleHQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpbmlzaGVkIEdldFRleHRDaGFyc2V0SW5mbyByb3V0aW5lLgoKCSogb2xlL25scy9lbnUubmxzLCBvbGUvb2xlMm5scy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIEZJWE1FIGluIEVudW1UaW1lRm9ybWF0czMyVwoJQWRkZWQgc3VwcG9ydCBmb3IgRk9OVFNJR05BVFVSRSBpbiBHZXRMb2NhbGVJbmZvMzJBIGFuZCB1cGRhdGVkCglHZXRMb2NhbGVJbmZvMzJXLgoKCSogZG9jdW1lbnRhdGlvbi9pbnRlcm5hbC1kbGwsIGRvY3VtZW50YXRpb24vc2hlbGwzMiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCVBhc2NhbCBDdW9xIDxQYXNjYWwuQ3VvcUBpbnJpYS5mcj4KCUZpeGVkIHR5cG9zLgoKCSogZGVidWdnZXIvbXNjLmM6IFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgc291cmNlIGxpbmUgbWF0Y2hpbmcgZm9yIGZ1bmN0aW9ucyBpbiBERUJVR19Qcm9jZXNzQ29mZkRlYnVnOwoJc2VhcmNoaW5nIGZvciBEQkcgYW5kIFBEQiBmaWxlcy4KCgkqIGRlYnVnZ2VyL2hhc2guYzogU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXggZm9yIGZpbGVzIHdoaWNoIGRvIG5vdCBjb250YWluIGV4cG9ydHMgKGZnLCBFWEUpIHRvIGdldCBwcm9jZXNzZWQKCWZvciBkZWJ1ZyBpbmZvcm1hdGlvbi4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jLCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNjIxIChDQkNsaWVudFRodW5rU0xFeCkuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvaW5mby5jLCBpbmNsdWRlL21haW4uaCwgbWlzYy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG93IHN3aXRjaGluZyBvZmYvb24gb2YgZGVidWdtc2dzIGluIHRoZSBkZWJ1Z2dlci4KCgkqIGxvYWRlci9tYWluLmMsIG1pc2NlbXUvaW5zdHIuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDE1LmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgSW50IDB4MTUvMHhjMDogQklPUyAtIEdFVCBDT05GSUcgYW5kIHNvbWUgb3RoZXIgQklPUwoJZGF0YS4KClNhdCBKYW4gMjMgMTQ6MTU6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvbHN0ci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZXNzYWdlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBXSU4xNl9DYWxsTXNnRmlsdGVyMzIsIFdJTjE2X0Rpc3BhdGNoTWVzc2FnZTMyLAoJRHJhd0FuaW1hdGVkUmVjdHMxNiAoc3R1YiksIEZvcm1hdE1lc3NhZ2UxNiwgV0lOMTZfR2V0TWVzc2FnZTMyLAoJV0lOMTZfUGVla01lc3NhZ2UzMiBhbmQgV0lOMTZfVHJhbnNsYXRlTWVzc2FnZTMyLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2Mvc2hlbGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBzb21lIGZpeGVzLCBjbGVhbmVkIHVwIGluY2x1ZGVzLCBmaXhlZCBsZWFrcwoJLSBjbGVhbiBEbGxSZWZlcmVuY2VDb3VudCwgYmV0dGVyIERsbE1haW4oKQoJLSBkeW5hbWljYWxseSBsaW5raW5nIExvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeDMyIGFuZAoJICBDcmVhdGVJY29uRnJvbVJlc291cmNlRXgzMiB0byBVU0VSMzIKCS0gbW92ZWQgZ3VpZCdzIGluc3RhbmNlcyB0byBuZXcgZmlsZSBzaGVsbGd1aWQuYwoJLSBpbXBsZW1lbnRlZCAgU2hlbGxFeGVjdXRlRXgzMlcKCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NvbXBvYmouYywgb2xlL2d1aWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgdGhlIGluc3RhbmNlIGNyZWF0aW9uIG9mIEdVSUQncyB0byBhIG5ldyBmaWxlLgoJU2l6ZSBvZiBjb21wb2JqLm8gZ29lcyBkb3duIHRvIDEvMzsgc2hvdWxkIHByZXZlbnQgbW9yZSBzaWcxMSdzLgoKCSogaW5jbHVkZS9pbml0Z3VpZC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlIHRvIGluc3RhbnRpYXRlIEdVSUQncyBtcy1saWtlLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IHByaXZhdGUgZGF0YSBzdHJ1Y3QgdG8gTlVMTCB0byBleHBvc2UgcHJvYmxlbXMgaW4gb3RoZXIgY29kZQoJYmV0dGVyLiBGaXhlcyB0aGUgWFVubWFwV2luZG93IHByb2JsZW1zIHJlcG9ydGVkIGJ5IHJlcGxhY2luZyB0aGVtCgl3aXRoIE5VTEwgcHRyIGRlcmVmZXJlbmNlcy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWctbXNncywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcsIGRvY3VtZW50YXRpb24vaW50ZXJuYWwtZGxsLCBkb2N1bWVudGF0aW9uL2lvcG9ydC10cmFjZS1oaW50cywgZG9jdW1lbnRhdGlvbi93aW5lX29zMjoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJRml4ZWQgdHlwb3MuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURPUyBwcm9ncmFtcyB1c2UgaGFuZGxlcyAwLTQgd2l0aG91dCBvcGVuaW5nL2Nsb3NpbmcgYW55IG9mIHRob3NlCgloYW5kbGVzIGZpcnN0LiBTcGxpdCB1cCBJbml0IGZyb20gQWxsb2NEb3NIYW5kbGUgYW5kIGNhbGwgaXQgZnJvbQoJdGhlIERPU1ZNLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIGNvbmZpZ3VyZS5pbi0+Y29uZmlndXJlIHJ1bGUgKHdlIG1pZ2h0IG5vdCBoYXZlIGF1dG9jb25mKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkICJ1c2VyLWZyaWVuZGx5IiB3YXJuaW5nIGZvciBtaXNzaW5nIFguCgoJKiBpbmNsdWRlL29sZS5oOiBGaXhlZCBHZXRPYmplY3QgbWFjcm8gcHJvYmxlbS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdDNEOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBiZSBpbiBzeW5jIHdpdGggY3VycmVudCBjb2RlCgoJKiBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIHZhcmlvdXMgd2FybmluZyBhbmQgYnVnIGZpeGVzCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBtb3JlIHRleHR1cmUgZm9ybWF0cyB1c2luZyBPcGVuR0wncyBwYWNrZWQgcGl4ZWwgZm9ybWF0cwoKCSogZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBpbmNsdWRlL2QzZC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGJldHRlciBzdXBwb3J0IGZvciBFeGVjdXRlQnVmZmVycwoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGNvcnJlY3RlZCBidWcgaW4gWiBCdWZmZXIgYWxsb2NhdGlvbgoJLSBwdXQgVklERU9NRU1PUlkgZmxhZyBmb3IgYWxsIHByaW1hcnkgc3VyZmFjZXMKCS0gcHV0IHNvbWV0aGluZyBpbiBhIHN1cmZhY2UgYWZ0ZXIgYSBSZWxlYXNlREMKCgkqIG1pc2MvcHJpbnRkcnYuYzogTW9ydGVuIFdlbGluZGVyIDx0ZXJyYUBkaWt1LmRrPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTmljbGFzIEthcmxzc29uIDxua2FybHNzb0ByYS5hYm8uZmk+CglSZW1vdmVkIERUX1NJTkdMRUxJTkUgYW5kIERUX05PQ0xJUCBzdHlsZXMgZm9yIFNTX0xFRlROT1dPUkRXUkFQLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIG9wZW5lZCBlbmhtZXRhZmlsZSBmb3IgbWFnaWMgdmFsdWVzLgoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzogUm9iIFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUZpeGVkIGR1cGxpY2F0ZSBzb3VuZCBidWZmZXIgaGFuZGxpbmcuIFVwZGF0ZWQgc3RhdHVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbnMgIGxtZW1jcHluQXRvVyBhbmQgIGxtZW1jcHluV3RvQSBmb3IgY29udmVydGluZwoJUkVHX01VTFRJX1NaIChpbmNsdWRpbmcgXDB4MDApCglCZXR0ZXIgZGVidWcgb3V0cHV0IGZvciBSRUdfQklOQVJZIGFuZCBSRUdfTVVMVElfU1oKCVJld3JpdHRlbiBSZWdRdWVyeVZhbHVlRXgzMltBfFddCgoJKiBvYmplY3RzL3BhbGV0dGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBDcmVhdGVIYWxmdG9uZVBhbGV0dGUuCglGaXhlZCAzIGNyYXNoZXMgKDEgcmVhbCwgMiBwb3RlbnRpYWwpLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBpZjE2MzIvc2hlbGwuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBtaXNjL3NoZWxsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEV4dHJhY3RJY29uRXgxNiwgYWRkZWQgc29tZSBjb25zdHMgdG8gRXh0cmFjdEljb25FeCouCgoJKiBvbGUvb2xlMi5jLCBvbGUvb2xlY2xpLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgaW5jbHVkZS93aW5lcnJvci5oOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRG9EcmFnRHJvcCBhbmQgT2xlSXNDdXJyZW50Q2xpcGJvYXJkIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBvbGUvdHlwZWxpYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIExvYWRUeXBlTGliIHN0dWIgcmV0dXJuIGZhaWx1cmUgaW5zdGVhZCBvZiBzdWNjZXNzLgoKRnJpIEphbiAyMiAxNzowOTo0NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9hY2NlbGVyYXRvcnMsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcmVzb3VyY2UuYywgd2luZG93cy9pbnB1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhY2NlbGVyYXRvciBoYW5kbGluZy4gQUNDRUwxNiB1c2VkIGludGVybmFsLCBBQ0NFTDMyIGZvciBXaW4zMgoJQVBJLCBQRV9BQ0NFTCBmb3IgUEUgQWNjZWxlcmF0b3JzLiBTZWUgZG9jdW1lbnRhdGlvbi9hY2NlbGVyYXRvcnMuCgpUaHUgSmFuIDIxIDE0OjA1OjExIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RkZW1sLmgsIG1pc2MvZGRlbWwuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVRoZXJlIHdlcmUgdHdvIGNvcGllcyBvZiB0aGUgRGRlQ21wU3RyaW5nSGFuZGxlcyAoQSBhbmQgVykgYW5kIHRoYXQKCUFQSSBkb2VzIG5vdCBoYXZlIDIgdmVyc2lvbnMuIFJlbW92ZWQgdGhlIGV4dHJhIHZlcnNpb24uCgpXZWQgSmFuIDIwIDE0OjU0OjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogUGFibG8gU2FyYXR4YWdhIDxwYWJsby5zYXJhY2hhZ2FAcGluZy5iZT4KCVNtYWxsIHBhdGNoLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdpbjMyIGNvbnNvbGUgbmVlZHMgU1lOQ0hST05JWkUgYWNjZXNzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnNvbGUvbmN1cnNlcy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwgbWlzYy9wb3J0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWF1dG9jb25mOiBhZGRlZCBjaGVja3MgZm9yIGxpYmlvLmgsIGVsZi5oLCBjdXJzZXMuaCxuY3Vyc2VzLmggYW5kCglmaXhlZCBpbmNsdWRlcnMuCgoJKiBvbGUvb2xlMm5scy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxDTWFwU3RyaW5nQTogaWYgZHN0bGVuIGlzIGluc3VmZmljaWVudCwgcmV0dXJuCglFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSICh2ZXJpZmllZCkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBzbWFsbCBmaXhlcyB0byBlbmhtZXRhZmlsZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNhbGwgb3duZXJkcmF3IGZvciBpbnZhbGlkIGl0ZW1zIChlbXB0eSBmb2N1c3JlY3RzKS4KCUZpeGVzIEV1ZG9yYSAxNmJpdCBlbXB0eSBJbmJveCBwcm9ibGVtLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgTkNfRHJhd01heEJ1dHRvbjk1IGFuZCBOQ19EcmF3TWluQnV0dG9uOTUgZnVuY3Rpb25zLiBSZXdyb3RlCgl0aGVzZSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBsb2dpYyBhcyB0aGUgTkNfRHJhd0Nsb3NlQnV0dG9uIGZ1bmN0aW9uLgoKCSogd2luZG93cy93aW4uYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglSZXBhcmVudGluZyBhIHdpbmRvdyB3aXRoIFNldFBhcmVudCBpbiBXaW5kb3dzIHNob3VsZCBjYXVzZSB0aGUgY2hpbGQKCXdpbmRvdyBiZWluZyByZS1wYXJlbnRlZCB0byBiZSBtb3ZlZCB1cCB0byB0aGUgdG9wbW9zdCBpbiB0aGUgei1vcmRlciwKCWFuZCBXTV9XSU5ET1dQT1NDSEFOR0lORyBhbmQgV01fV0lORE9XUE9TQ0hBTkdFRCBtZXNzYWdlcyB0byBiZSBzZW50LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCVVzZSBleHRlcm5hbCBEaXJlY3RQbGF5IERMTHMgYnkgZGVmYXVsdC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgcGFzc2luZyB0YXNrIGhhbmRsZXMgdG8gR2V0VGhyZWFkUXVldWUoKSBhbmQgU2V0RmFzdFF1ZXVlKCkuCgoJKiB3aW5kb3dzL3VzZXIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgKGNvbnNvbGUpIGFwcGxpY2F0aW9ucyB0aGF0IG5ldmVyIGNyZWF0ZWQgYSBxdWV1ZSBjb3JyZWN0bHkKCWluIFVTRVJfQXBwRXhpdCgpOyBjYWxsIEluaXRUaHJlYWRJbnB1dCgpIGluIEluaXRBcHAoKS4KCgkqIHdpbmRvd3MvaG9vay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gRml4ZWQgY3JlYXRpb24gb2YgbWVzc2FnZSBxdWV1ZSBpbiBob29rIEFQSSByb3V0aW5lcy4KCS0gU29tZSBwcmVwYXJhdGlvbnMgZm9yIHRocmVhZC1sb2NhbCBtZXNzYWdlIHF1ZXVlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hlY2sgbW9kdWxlIG5hbWUgbGVuZ3RoIGluIE1vZHVsZU5leHQoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBDYWxsb3V0IHRvIGNhbGwgUmVkcmF3V2luZG93MzIuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFyIERPUyBleHRlbmRlZCBlcnJvciBvbmx5IGZvciBmdW5jcyA+PTB4MmYgKHRoYW5rcyB0byBEYXZlCglQaWNrbGVzKS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVW5pZmllZCBwYWxldHRlIGNyZWF0ZSwgZG8gYWxsb2NhdGUgY29sb3JjZWxscyBvbiBpbml0IGZvciBER0EuCgpUdWUgSmFuIDE5IDE3OjQ4OjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL3Byb2Nlc3MuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RldmljZS5oOgoJSGFja2VkIHNlcnZlci1zaWRlIGRldmljZSBzdXBwb3J0CglBZGRlZCB1c2VyIEFQQ3Mgc3VwcG9ydC4KCU1hbnkgY2hhbmdlcyB0byB0aGUgeHRlcm0gY29uc29sZSB0byBtYWtlIHVzZSBvZiB0aGUgc2VydmVyIChub3QKCWZpbmlzaGVkIHlldCkuCglNb3ZlZCBzb21lIG90aGVyIHNtYWxsIHN0dWZmIHRvIHRoZSBzZXJ2ZXIuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBBZGRlZCBsb25nIHR5cGUgZm9ybWF0LgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZGV2aWNlLmM6CglBZGRlZCBzZXJ2ZXItc2lkZSBkZXZpY2Ugc3VwcG9ydCAob25seSBhIGhhY2sgZm9yIG5vdykuCgpTdW4gSmFuIDE3IDE3OjQ4OjQ4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2c6CglSZWNvdmVyZWQgbG9nIGVudHJpZXMgZnJvbSBDVlMgbWFpbGluZyBsaXN0LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBfYWxsb2NhX3Byb2JlIGFuZCBfY2hrc3RrIChtb3N0bHkgZG9uZSBieSBVbHJpY2ggV2VpZ2FuZCkuCgoJKiBmaWxlcy9maWxlLmMKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIEVSUk9SX1dSSVRFX1BST1RFQ1QgdG9vIGluIHJlYWRvbmx5IGZhbGxiYWNrIG9wZW4uCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR2V0U2VjdXJpdHlEZXNjcmlwdG9yTGVuZ3RoIHN0dWIgZm9yIHJlZ2VkdDMyLmV4ZS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBmaWxlcy9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkICIiIGFyb3VuZCAtRCBkZWZpbmVzIGZvciBwYXRocyB3aXRoIHNwYWNlcyBpbiB0aGVtLgoKCSogZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNsZWFuZWQgdXAgQ29sb3JLZXkgaGFuZGxpbmcuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6CglQYXVsIFF1aW5uIDxwYXVscUBDT1JFTC5DQT4KCU1FVEFSRUNPUkQgbWVtYmVyIHJkUGFyYW0gc2hvdWxkIGJlIHJkUGFybSAoaW4gd2luMzIgc2RrKQoJbG90cyBvZiBjaGFuZ2VzIGluIHRoaXMgc291cmNlIGZpbGUgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93aW51c2VyLmgsIG1pc2Mvc3Bvb2xlci5jLCBvYmplY3RzL2dkaW9iai5jLAoJcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGF1bCBRdWlubiA8cGF1bHFAQ09SRUwuQ0E+CglGaXhlZCBiYWQgZGVmaW5lcywgYWRkZWQgYSBmZXcgdHlwZXMgJ24gZGVmaW5lcy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpc2FibGUgYnJva2VuIGNhbGxiYWNrcyB3aGljaCBsZWFkIHRvIGNyYXNoZXMuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBJRCB1c2FnZSAoYW5kIHJlbHkgbGVzcyBoZWF2aWx5IG9uIG11bHRpbWVkaWEvbW1zeXN0ZW0uYwoJaW50ZXJuYWwgc3RydWN0dXJlcykuCgoJKiBtaXNjL3Rvb2xoZWxwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRlYnVnLmggbmVlZHMgdG8gYmUgaW5jbHVkZWQgbGFzdCBzaW5jZSBpdCAjdW5kZWZzIEVSUiBmb3IgU29sYXJpcy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL21lbW9yeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAvdSBmb3JtYXQgdG8gZGVidWdnZXIgZGlzcGxheSBmb3IgVU5JQ09ERSBzdHJpbmdzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBpcnJpdGF0aW5nIEZJWE1FIGxpbmUgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIG1zZG9zL2ludDJmLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgJ1xuJyBpbiBGSVhNRSBtZXNzYWdlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzoKCVJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglvYmpiYXNlLmggbmVlZGVkIGZvciBXSU5FX1N0cmluZ0Zyb21DTFNJRCgpLCBmaXggQyBmdW5jdGlvbgoJZGVjbGFyYXRpb25zLCBpbnN0YWxsIGEgY29sb3JtYXAgaWYgd2UgYXJlIG5vdCBtYW5hZ2VkLCByZWxlYXNlCgliYWNrYnVmZmVycyBpbiBER0EgbW9kZSwgZml4IHZpZGVvIG1vZGUgc3dpdGNoaW5nIGxvZ2ljIHRvIGF2b2lkCglwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuCgoJKiBtc2Rvcy9kcG1pLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTbWFsbCBmaXguCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2MvbHpleHBhbmQuYywgbXNkb3MvaW50MjEuYyB2eGQuYywgbXVsdGltZWRpYS9tbWlvLmMsIHdpbjMyL2tlcm5lbDMyLmM6CglCZXR0ZXIgRE9TIGZpbGUgaGFuZGxlIG1hbmFnZW1lbnQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVRoaXMgc2hvdWxkIGhlbHAgcHJldmVudCBkdXBsaWNhdGUgd29yay4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgRGVhdGgoKSBhbmQgUmVzdXJyZWN0aW9uKCksIHR3byBmdW5jdGlvbnMgbmVlZGVkIGJ5IHNvbWUKCVRQV2luICg/KSBjb21tYW5kIGxpbmUgdG9vbC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCAzMi0+MTYgdHJhbnNsYXRpb24gZm9yIFdNX0FDVElWQVRFQVBQLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzOiBTaGVsbE1lc3NhZ2VCb3hXLCBSdW5ETExfQ2FsbEVudHJ5MTYuCglJbXBsZW1lbnRhdGlvbiBmb3IgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aDMyW0F8V10uCglNYW55IGJ1Z2ZpeGVzLgoKCSogY29uc29sZS94dGVybS5jLCBtaXNjL3BvcnQuYywgd2luMzIvY29uc29sZS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglDaGFuZ2UgYWxsIFdpbmUgb3BlbnB0eSgpIGltcGxlbWVudGF0aW9ucyB0byBtYXRjaCB0aGUgInN0YW5kYXJkIiBhbmQKCXRoZW4gbWFrZSB0aGVtIGJvdGggY2FsbCB0aGUgc2FtZSBjb2RlIGxlYXZpbmcgdGhlIG9wdGlvbiB0byBjaGFuZ2UKCXRoYXQgY29kZSB0byBjYWxsIHRoZSAic3RhbmRhcmQiIG9wZW5wdHkoKSBhdCBhIGxhdGVyIGRhdGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFNldFByb2Nlc3NBZmZpbml0eU1hc2sgc3R1Yi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdGhlIG90aGVyIHVuaW9uIG1pc3VzZSB0b28gKG9uZSBsZXNzIG1lbSBjb3JydXB0aW9uKQoJUmUtYWRkZWQgWEluc3RhbGxDb2xvcm1hcCAob3Igbm9uIG1hbmFnZWQgZG9lcyBub3QgY2hhbmdlIHBhbGV0dGUpCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIGZvciBLRVJORUwuNDk1LgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMsIGRvY3VtZW50YXRpb24vZGlyZWN0M0QsIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgYml0bWFzayB0byBzdG9yZSB3aGljaCBDb2xvcktleSBzdHJ1Y3R1cmVzIGFyZSB2YWxpZAoJLSBoYW5kbGUgbWFueSBuZXcgcmVuZGVyaW5nIHN0YXRlcywgc29tZSBvcHRpbWl6YXRpb25zIGluIHN0YXRlIGNoYW5nZXMKCS0gOGJpdCBwYWxldHRpemVkIHRleHR1cmVzIG5vdyBzdXBwb3J0IENvbG9yS2V5aW5nCgktIHNvbWUgbWlzY2VsbGFuZW91cyBidWcgZml4ZXMgYW5kIGNvZGUgcmV3cml0ZQoKCSogY29udHJvbHMvbWVudS5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgbG9vayBvZiB0aGUgbWVudSBzbyBpdCB3b3VsZCBiZSBjb21wbGlhbnQgd2l0aCBXaW45NTogbW9kaWZpZWQKCXRoZSBtb3VzZSB0cmFja2luZyBjb2RlIHNvIGl0IHdvdWxkIGNoYW5nZSB0aGUgc2VsZWN0aW9uIGV2ZXJ5IHRpbWUgdGhlCgltb3VzZSBtb3ZlZCBvdmVyIGEgbWVudSBpdGVtLgoKCSogZG9jdW1lbnRhdGlvbi9ob3ctdG8tcG9ydDoKCU1pa2UgQ2FzdGxlIDxkYWxnb2RhQHNoZWxsLnJ0NjYuY29tPgoJU21hbGwgZml4LgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYnVnczoKCS0gV2hlbiBhbiBlZGl0IGNvbnRyb2wgYnVkZHkgd2FzIHVzZWQgc2luZ2xlIGRpZ2l0IHZhbHVlcyB3ZXJlIG5vdAoJYmVpbmcgZGlzcGxheWVkLgoJLSBDb21tYSB2YWx1ZXMgd2VyZSBub3QgZGlzcGxheWVkIGNvcnJlY3RseSB3aGVuIHRob3VzYW5kcyBzZXBhcmF0aW9uCgl3YXMgcmVxdWVzdGVkLgoKCSogd2luMzIvbmV3Zm5zLmM6CglUb20gQmVjaCA8dG9tYkBpaS51aWIubm8+CglXaGlsZSB0aGUgZGVidWcgZXZlbnQgbWVzc2FnZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCwgV2FpdEZvckRlYnVnRXZlbnQKCXNob3VsZCByZXR1cm4gRkFMU0UuCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBvYmplY3RzL2JpdG1hcC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgQ29weUltYWdlMTYuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMgCglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTbWFsbCBmaXguCgoJKiBjb25zb2xlL2dlbmVyaWMuYywgbXNkb3MvaW50MjEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCAweDAxIHRvIHVzZSBnZW5lcmljIGNvbnNvbGUsIGZpeGVkIDB4MGIuCglGaXhlZCBDT05TT0xFX0dldENoYXJhY3RlciAodHdvIGFyZ3Mgc3dhcHBlZCkuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHNwZWNpZnlpbmcgbW9kdWxlIG5hbWUgZm9yIE5FIGR1bW15IG1vZHVsZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jIAoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXQgbW9kdWxlIG5hbWUgb2YgZHVtbXkgbW9kdWxlIGVxdWFsIHRvIG1vZHVsZSBuYW1lIG9mIFBFIG1vZHVsZS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy91aXRvb2xzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgaW5jbHVkZSB3aW5lL3dpbnVzZXIxNi5oIGFkZGVkLgoKCSogZ3JhcGhpY3MvdmdhLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBhbiBhY3R1YWwgcHJpbWFyeSBzdXJmYWNlIGZvciBzY3JlZW5idWZmZXIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gMTAgMTQ6NDA6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmgsIGxvYWRlci9tYWluLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBjb25maWcuc3lzIHBhcnNlci4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUGFzY2FsIEN1b3EgPFBhc2NhbC5DdW9xQGlucmlhLmZyPgoJU21hbGwgY2hhbmdlIGluIExCX1NFVENVUlNFTDMyIGhhbmRsaW5nICh0aGUgY2FyZXQgc2hvdWxkIGJlIG1vdmVkIGFzCgl3ZWxsKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBmaWxlcy9hc3luYy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3dpbnNvY2tfZG5zLmMsIG1zZG9zL2ludDIxLmMsIG9sZS9jb21wb2JqLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBhdXRvY29uZiBjaGVjayBmb3IgcHJlc2VuY2Ugb2Ygc3lzL2ZpbGUuaC4KCgkqIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRGJnUHJpbnQsIGFkZGVkIHVsdG9hLgoKCSogd2luMzIvY29uc29sZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJUGVla0NvbnNvbGVJbnB1dCAmIFJlYWRDb25zb2xlSW5wdXQgbmVlZCB0byByZXR1cm4gMCByZWNvcmRzIHJlYWQgaW4KCXRoZSBjYXNlIG9mIGFuIGludmFsaWQgaGFuZGxlLgoKCSogY29uc29sZS9uY3Vyc2VzLmMsIGxvYWRlci9tYWluLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1vcmUgdmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0LgoJUmVtb3ZlIGNvbXBpbGF0aW9uIHdhcm5pbmcuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUZpeCB1cCBzb21lIGludGVycnVwdCBjYWxscyB0byByZXR1cm4gYXQgdGhlIGRhdGEgdGhhdCB0aGV5IGFyZSBzdXBwb3NlZAoJdG8uIEFsc28gaW5jcmVhc2UgY29tbWVudCB2ZXJib3NpdHkgdG8gaGVscCBkZWJ1ZyB0aGluZ3MgbGF0ZXIuCgoJKiBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3dpdGNoIC1kb3N2ZXIuCglDbGVhbnVwIGZvciBPYUJ1aWxkVmVyc2lvbigpLgoKCSogbGlidGVzdC8uY3ZzaWdub3JlOiBBZGRlZCB2YXJ0ZXN0IGFuZCB2b2xpbmZvCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgYnVnZml4ZXMsIGNvZGUgY2xlYW51cC4KCVJlbW92ZWQgYSBmZXcgZ2xpdGNoZXMgZnJvbSB0aGUgQ09NIHBhdGNoLgoKCSogd2luZG93cy9kaWFsb2cuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJT25seSBkZXN0cm95IHdpbmRvdyBvbmNlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgktIG1vdmVkIGRyYXdhYmxlIHRvIGNvbW1vbiBzaW5jZSBpdCBpcyB1c2VkIGJ5IGJvdGggREdBIGFuZCBYbGliLgoJICAoZml4ZXMgb25lIGJhZCBtZW1vcnkgY29ycnVwdGlvbiBidWcgaW4gREdBIChTdGFyQ3JhZnQgYW5kIERpYWJsbykKCS0gYWRkZWQgQmx0RmFzdCBzYW5pdHkgY2hlY2tzLgoKCSogd2luZG93cy9xdWV1ZS5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbml0QXBwKCkgY2FsbCByZW1vdmVkIGZyb20gMzItYml0IGFwcGxpY2F0aW9uIHN0YXJ0dXA7CgljcmVhdGUgdGFzayBtZXNzYWdlIHF1ZXVlIGluIEluaXRUaHJlYWRJbnB1dCgpIGluc3RlYWQuCgoJKiBsb2FkZXIvbmUvY29udmVydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBhY2NlbGVyYXRvciB0YWJsZSBQRS0+TkUgcmVzb3VyY2UgY29udmVyc2lvbi4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlc3RhcnQgcmVhZCgpIGluIGNhc2Ugb2YgRUlOVFIgaW4gVFRZZ2V0KCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQdHIgcmVmIHdyb25nLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglXcmMgdmVyc2lvbiAxLjAuOC4gVG9vbGJhciByZXNvdXJjZXMgYXJlIG5vdyBzdXBwb3J0ZWQuIEEgY291cGxlIG9mCglvdGhlciBmaXhlcyBhcmUgYWxzbyBpbmNsdWRlZC4gU2VlIGZpbGUgdG9vbHMvd3JjL0NIQU5HRVMgZm9yIGRldGFpbHMuCgoJKiBvbGUvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgb2JqZWN0cy9kYy5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9rMzJvYmouYywgZmlsZXMvYXN5bmMuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBZGQgbWlzc2luZyAjaW5jbHVkZXMgYW5kIHByb3RvdHlwZXMgdG8gZWxpbWluYXRlIHNvbWUgaW1wbGljaXQKCWZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdhcm5pbmdzIGFuZCAnZXh0ZXJuJ3MgaW4gLmMgZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hlY2sgZm9yIHJlc2l6ZXRlcm0gaW4gbmN1cnNlcy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvdmFydGVzdC1XaW4zMi5sb2csIGxpYnRlc3QvdmFydGVzdC5jLCBsaWJ0ZXN0L3ZhcnRlc3QucmVhZG1lOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTmV3IHRlc3QgcHJvZ3JhbSBmb3IgVkFSSUFOVCBmdW5jdGlvbnMuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIGRlYnVnIGluZm9ybWF0aW9uIChQREIpIHdhcyBub3QgbWFwcGVkIHdoZW4gbG9hZGluZyBhIG1vZHVsZSwKCXdoaWNoIGNhdXNlZCBhIGNvcmUgaW4gdGhlIGRlYnVnZ2VyIHdoZW4gaXQgdHJpZWQgdG8gYWNjZXNzIGl0LgoKCSogTWFrZWZpbGUuaW46IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTGlua3MgbGlid2luZS5zby4xLjAgdG8gbGlid2luZS5zbyBpbiBXaW5lJ3MgbWFpbiBkaXJlY3RvcnkuCglNYWtlcyBXaW5lIGNvbXBpbGUgd2l0aCAtLWVuYWJsZS1kbGwgYWdhaW4uCgpTYXQgSmFuICA5IDA5OjEyOjQwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL29sZTMyLnNwZWMsIHdpbmRvd3MvZGlucHV0LmMsIGluY2x1ZGUvc3RvcmFnZS5oLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93dHlwZXMuaCwgbWlzYy9zaGVsbC5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9iamVjdHMvZm9udC5jLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlZGxnLmMsIG9sZS9vbGVvYmouYywgb2xlL3N0b3JhZ2UuYywgb2xlL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy92Z2EuYywgaWYxNjMyL2NvbXBvYmouc3BlYywgaW5jbHVkZS9jb21wb2JqLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJQWRkZWQgYSBsb3Qgb2YgQ09NIGludGVyZmFjZXMgZGVmaW5pdGlvbnMuCglSZXN0cnVjdHVyZWQgQ09NIGhlYWRlciBmaWxlcyBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkgYW5kIGNsYXJpdHkuCgpGcmkgSmFuICA4IDE2OjM3OjAzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9maWxlLmM6IFNldCBHRU5FUklDX1JFQUR8R0VORVJJQ19XUklURSBhY2Nlc3MgZm9yIE9GX0NSRUFURS4KCU1ha2UgR2V0RmlsZVR5cGUgd29yayBmb3IgYWxsIGhhbmRsZSB0eXBlcy4KCgkqIHdpbjMyL2RldmljZS5jOiBBdm9pZCBjcmFzaCBvbiBOVUxMIGRldi0+aW5mby4KCgkqIGluY2x1ZGUvZmxhdHNiLmgsIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQWRkZWQgc3R1YnMgYW5kIGRlZmluZXMgZm9yIHRoZSBmbGF0IHNjcm9sbGJhciBjb21tb24gY29udHJvbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUFkZGVkIHNvbWUgZGVmaW5lcyBuZWVkZWQgZm9yIGN1c3RvbSBkcmF3J2luZyBhbmQgZGF0ZXRpbWUgY29tbW9uCgljb250cm9scy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogRWRkaWUgQ2FycGVudGVyIDxlY2FycGVudGVyQGl0ZXguY28uemE+CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiBmdW5jdGlvbiBFeHRyYWN0SWNvbkV4MzJBLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSFRBU0sxNiAtPiB0aHJlYWRJRCBtYXBwaW5nIG9mIFdNX0FDVElWQVRFQVBQLgoKCSogZmlsZXMvZmlsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTWFrZSBEZWxldGVGaWxlIGZhaWwgZm9yIGVtcHR5IHBhdGguCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IGR1bW15X2N0ciBzdHVmZiB0byB3b3JrIGV2ZW4gd2l0aG91dCBESVJFQ1RfSU9fQUNDRVNTLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB3cm9uZyBidWZmZXIgd2hpY2ggY2F1c2VkIGZpeHVwcyB0byBmYWlsLgoKCSogZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBpbmNsdWRlL2QzZC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGFsbCB0aGUgRGlyZWN0M0QgZXJyb3IgY29kZXMKCS0gYWRkZWQgOGJpdCBwYWxldHRpemVkIHRleHR1cmUgc3VwcG9ydAoKCSogbXNkb3MvY2Ryb20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglpZmRlZnMgZm9yIGRlZmluZXMgbm90IGluIGxpbnV4IDIuMC4KCgkqIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgbWlzYy9wcmludGRydi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdHdvIHN0dWJzIGZvciBBZGRQcmludGVyRHJpdmVyLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglRdWV1ZSBTSUdBTFJNIHRvIHJlZHVjZSB0aGUgInNpZ25hbCAxNCBsb3N0IiBjb21wbGFpbnRzLgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVwcm9ncmFtbWluZyB0aGUgRE9TIHRpbWVyLCBhbmQgcmVhZGluZyBiYWNrIHRoZQoJY3VycmVudCB2YWx1ZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaW5lIGhhbmdzIHdoZW4gcmVnaXN0cnkgKGNvcnJ1cHRlZCkgaGFzIGxvbmUgXCBhdCBlbmQgb2YgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJS29zdHlhIEl2YW5vdiA8a29zdHlhQHdhcm1jYXQuZXhjb20uc3BiLnN1PgoJU21hbGwgcGF0Y2ggdGhhdCBlbmFibGVzIENsYXJpb24gZm9yIFdpbmRvd3Mgbm90IHRvIHRyYXAgd2hpbGUKCWxvYWRpbmcuCgoJKiBvbGUvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2UgdHJvdWJsZXNvbWUgYXNzaWdubWVudHMgYnkgbWVtc2V0IGZvciB3aG9sZSBzdHJ1Y3QuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGhhbmRsaW5nIG9mIHRoZSAncGFsZW50JyBmaWVsZCBvZiB0aGUgQ3JlYXRlUGFsZXR0ZSBwcm9jZWR1cmUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgZGVzY3JpcHRpb24gYWJvdXQgaW5jbHVkaW5nL2V4Y2x1ZGluZyBmdW5jdGlvbnMgZnJvbSByZWxheQoJdHJhY2UuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZCBhdCBsZWFzdCAxIGlucHV0IHJlY29yZCBpbiBSZWFkQ29uc29sZUlucHV0QS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBDcmVhdGVNYXBwaW5nIHdoZW4gYSBtYXBwaW5nIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cy4KCldlZCBKYW4gIDYgMTA6Mzc6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmM6IEZpeGVkIGZpbGUgZGVzdHJ1Y3Rpb24gd2hlbiBmaWxlIGhhcyBubyBuYW1lLgoKVHVlIEphbiAgNSAxODozODo1OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2FybnMgdXNlciBpZiBtdWx0aXBsZSAtZGxsIHN3aXRjaGVzIGFyZSB1c2VkIG9uIGNvbW1hbmQgbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeGVkIGEgbGVmdG92ZXIgSGVhcEZyZWUgaW4gdGhlIHRyYWNrYmFyIGNvbW1vbiBjb250cm9sLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvdGFiLmgsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4ZWQgc29tZSBwcm9ibGVtcyB3aXRoIHRoZSB0YWIgY29tbW9uIGNvbnRyb2wgKHdpdGggdGhhbmtzIHRvIEFuZGVycwoJQ2FybHNzb24gPGFuZGVycy5jYXJsc3NvbkBsaW51eC5udT4pLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvcHJvcHNoZWV0LmgsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglBZGRlZCBhIG1pc3NpbmcgUHJvcGVydHlTaGVldDMyQVcgYW5kIENyZWF0ZVByb3BlcnR5U2hlZXRQYWdlIHN0dWIsCglhbmQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBtaXNjL21haW4uYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGdyYXBoaWNzL3ZnYS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbCBvbiBhbGwgY3JpdGljYWwgc2VjdGlvbnMgdXNlZCBhY3Jvc3MKCXByb2Nlc3MgYm91bmRhcmllcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbCwgQ29udmVydFRvR2xvYmFsSGFuZGxlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgbWFuIHBhZ2UuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGFyZ3Mgb2YgTVpfQ3JlYXRlUHJvY2Vzcy4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBzdHJpbmcgYnVnIGluIHByb2dyYW1zLy4KCgkqIG1zZG9zL2lvcG9ydHMuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1cGlkICJhY3Rpb24iIGVtdWxhdGlvbiBmb3IgaGFyZHdhcmUgdGltZXJzIGluIGlvcG9ydHMuYy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWdhaW4gYSBzbWFsbCBET1NBU1BJIHBhdGNoLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL2ZvbnRzLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBjaGVjayBpZiBwYWxldHRlIGlzIG5vdCBudWxsIHdoZW4gc2V0dGluZyBhIHBhbGV0dGUKCS0gY2hlY2sgaWYgd2luZG93IGhhbmRsZSBpcyB2YWxpZCBiZWZvcmUgZ2V0dGluZyBpdHMgJ2RyYXdhYmxlJwoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBjb3JlIGR1bXAgd2l0aCBzb21lIFRURiAod2hlbiBYMTEgcnVucyB3aXRoIGEgdHJ1ZSB0eXBlCglzZXJ2ZXIpLgoKCSogc2VydmVyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugc3Rkb3V0IGZvciBkZWZhdWx0IGNvbnNvbGUgb3V0cHV0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuICAzIDE3OjAwOjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL3dpbmVfZ2wuaCwgbXVsdGltZWRpYS9kc291bmQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdDNELCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3LCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBiZWdpbm5pbmcgb2YgaW1wbGVtZW50YXRpb24gb2YgRGlyZWN0M0QyIChEWCA1LjApIGFuZCBhc3NvY2lhdGVkIGNsYXNzZXMKCS0gc29tZSBiYXNpYyBjb2RlIGZvciBEaXJlY3QzRCBhbmQgRGlyZWN0M0RFeGVjdXRlQnVmZmVyIChEWCAzLjApCgktIGFkZGVkIHN0cmV0Y2hpbmcgdG8gQmx0IGZ1bmN0aW9uCgoJKiBtaXNjL3ZlcnNpb24uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnkgdG8gYXV0b2RldGVjdCBOVDQuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMCBtZWFucyBzdWNjZXNzLCBhbGwgZWxzZSBmYWlsdXJlIGZvciBXYWl0Rm9yU2luZ2xlT2JqZWN0LgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglEbyBub3QgYWR2YW5jZSB0aGUgY3Vyc29yIGluIGNlcnRhaW4gcm91dGluZXMuIFRoaXMgY2xlYW5lZCB1cCB0aGUKCWltcGxlbWVudGF0aW9uIHF1aXRlIGEgYml0LgoKCSogbG9hZGVyL21haW4uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglTZXQgY29uc29sZSB2aWRlbyBtb2RlIHdoZW4gbG9hZGluZyBET1MgYXBwLiAoRXZlbnR1YWxseSwgSSB3YW50IHRvCgltaW1pYyBXaW5kb3dzIDl4J3MgYmVoYXZpb3IgYnkgc2V0dGluZyB0aGUgdmlkZW8gbW9kZSBvbmx5IHdoZW4gbm9uCglJTlQgMjEgY2FsbHMgYXJlIHVzZWQgdG8gYWxsb3cgZm9yIGFyYml0cmFyeS1zaXplZCBjb25zb2xlcykuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL3h0ZXJtLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVh0ZXJtIGRyaXZlciBjYW4gbm93IHJlc2l6ZSB0aGUgdGVybWluYWwgd2hlbiBhIG1vZGUgY2hhbmdlIGlzCglkZXRlY3RlZC4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUxvbmcgc3RhbmRpbmcgc2Nyb2xsIGJ1ZyBmaXhlZCEKCgkqIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJUmV3cml0ZSBvZiBjb25maWd1cmF0aW9uIHN5c3RlbSB0byBzdXBwb3J0ICJyZWd1bGFyIiBjdXJzZXMgYXMgd2VsbCBhcwoJZWxpbWluYXRpbmcgdGhlIC0td2l0aC1uY3Vyc2VzIG9wdGlvbi4gTm93LCBuY3Vyc2VzIHN1cHBvcnQgd2lsbCBiZQoJYnVpbHQgaW4gaWYgYSBjb21wYXRpYmxlIGxpYnJhcnkgaXMgZGV0ZWN0ZWQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIHdpbmRvd3MvZGVmZGxnLmM6CglORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeCB0aGUgcmV0dXJuIHR5cGUgb2YgRExHUFJPQyB0eXBlIGFuZCBtYXNrIG91dCB0aGUgdW5zZXQgaGlnaHdvcmQgb2YKCXRoZSByZXR1cm4gd2hlbiBhIDE2IGJpdCBkaWFsb2cgcHJvYyBpcyBjYWxsZWQuCgoJKiBpbmNsdWRlL2ludGVyZmFjZXMuaDogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZCBpbnRlcmZhY2UgSUQncyBmb3IgdXBjb21pbmcgSVR5cGVMaWIgaW1wbGVtZW50YXRpb24uCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXggZm9yIHRyYWlsaW5nIHNsYXNoZXMsIHJlcGV0aXRpb24gb2YgJy8nIG9yICdcJyBhbmQKCVNldExhc3RFcnJvcigpIGluIEdldEZ1bGxQYXRobmFtZS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgd2luMzIvQXR0aWMvYWR2YXBpLmMsIHdpbjMyL0F0dGljL3NlY3VyaXR5LmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9pbml0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIEFEVkFQSTMyIGZpbGVzIHRvIGRsbHMvYWR2YXBpMzIuCglBZGRlZCBzdHVicyBmb3IgZXZlbnRsb2cgZnVuY3Rpb25zLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBOVFNIQ2hhbmdlTm90aWZ5UmVnaXN0ZXIsIE5UU0hDaGFuZ2VOb3RpZnlEZXJlZ2lzdGVyLgoJQ2xlYW51cCwgc29tZSBtb3JlIGZ1bmN0aW9ucyBVTklDT0RFIHJlYWR5LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSENsb25lU3BlY2lhbElETGlzdCBpbXBsZW1lbnRlZC4KCVNIR2V0RGF0YUZyb21JRExpc3RBIGNvcnJlY3RlZC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU2hlbGxfR2V0Q2FjaGVkSW1hZ2VJbmRleDMyW0F8V10gaW1wbGVtZW50ZWQuCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbXBsZW1lbnRlZCByYXcgZGV2aWNlIGFjY2VzcyBjYWxscyBmb3IgaW9jdGxHZW5lcmljQmxrRGV2UmVxKCkKCWFuZCB0aGVyZWZvcmUgbW92ZWQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiBpbnQyWzU2XS5jIGludG8gZmlsZXMvZHJpdmUuYy4KCgkqIG1zZG9zL2lvcG9ydHMuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYXV0b21hdGljIENNT1MgUkFNIGNoZWNrc3VtIGNhbGN1bGF0aW9uLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBkb2N1bWVudGF0aW9uL2FzcGksIHJlbGF5MzIvd25hc3BpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNlbmRBU1BJMzJDb21tYW5kMzIgaGFzIHRvIGJlIF9fY2RlY2wuCglVcGRhdGVkIGRvY3VtZW50YXRpb24vYXNwaSBhbmQgcmV2ZXJ0ZWQgYW4gRVJSIGJhY2sgdG8gV0FSTi4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJT2YgY291cnNlIHdlIHdhbnQgdGhlIGxhc3QgMTAwIGxpbmVzLCBub3QgdGhlIGZpcnN0IDEwMCBsaW5lcy4KCVVzZSAndGFpbCcgaW5zdGVhZCBvZiAnaGVhZCcuIEFsc28gZml4IHRleHQgYWxpZ25tZW50IGZyb20KCXByZXZpb3VzIHBhdGNoLgoKCSogbXVsdGltZWRpYS9qb3lzdGljay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlYWRpbmcgam95c3RpY2sgNSB3aGVuIHdlIG9ubHkgc3VwcG9ydCA0IHNob3VsZCBmYWlsIGluc3RlYWQgb2YKCWhhbmcuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVBsYXlpbmcgYSBub24tZXhpc3RlbnQgQ0Qgc2hvdWxkIGZhaWwgaW5zdGVhZCBvZiBjcmFzaC4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBuZWNlc3NhcnkgY29uZmlndXJlIHJlcnVucyBmb3IgTWFrZWZpbGUgYW5kIE1ha2UucnVsZXMKCWdlbmVyYXRpb24uCgoJKiBtaXNjZW11L2luc3RyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRW11bGF0ZXMgaW5zL291dHMgY29ycmVjdGx5IGZvciBET1MgcHJvZ3JhbXMuCgoJKiBvbGUvc3RvcmFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGV2aWNlLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2NydGRsbC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYzoKCUltcGxlbWVudGVkIGZpbGUgc2hhcmluZyBjaGVja3MgaW4gdGhlIHNlcnZlci4KCUFkZGVkIHNldCBmaWxlIHRpbWUgc2VydmVyIHJlcXVlc3QuCglPdmVyYWxsIGNsZWFuIHVwIG9mIHRoZSBmaWxlIGhhbmRsaW5nIChET1MgZGV2aWNlIGhhbmRsaW5nIGlzIG5vdwoJYnJva2VuLCBzaG91bGQgYmUgcmVkb25lKS4KClNhdCBKYW4gIDIgMDg6MjI6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBidWcgaW4gQ3JlYXRlRmlsZU1hcHBpbmcgd2hlbiBuYW1lIGlzIG5vdCBOVUxMLgoKCSogc2VydmVyL3JlcXVlc3QuYzogRml4ZWQgQ0hFQ0tfU1RSSU5HIGRpc3BsYXkuCgpGcmkgSmFuICAxIDE5OjUxOjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1lbW9yeS9sb2NhbC5jOgoJUmljaGFyZCBBIExvdWdoIDxyYWxvdWdoLmNlZEBkbmV0LmNvLnVrPgoJUHV0IHJldHVybiB2YWx1ZSBvZiBMb2NhbEFsbG9jIGluIENYIHRvby4KCgkqIGluY2x1ZGUvcHNkcnYuaDogRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdWRlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogVXNlIHByb3BlciBzeXN0ZW0gZGlyZWN0b3J5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogR290IHJpZCBvZiBDTElFTlRfR2V0UHJvY2Vzc0luZm8uCgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luaGVscC5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2MvY29tbS5jLCBtaXNjL3NoZWxsLmMsIG1pc2Mvc3Bvb2xlci5jLCBtaXNjL3NweS5jLCBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9sZS9vbGVvYmouYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBkZWJ1Z2dlci9kYmcueSwgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS9pbWFnZWxpc3QuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc3RvcmFnZS5oLCBpbmNsdWRlL3N0cnVjdDMyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglNb3ZlcyBtb3JlIHN0dWZmIGZyb20gd2luZG93cy5oLgoJLSBpbmNsdWRlL3dpbnVzZXIuaCAtIGludGVyZmFjZSByZWxldmFudCB0byB1c2VyMzIuc3BlYwoJLSBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmggLSB0aGUgb2xkIDE2IGJpdCBpbnRlcmZhY2UgKGludGVybmFsIHVzZSkKCS0gaW5jbHVkZS93aW5iYXNlLmggLSBzb21lIG1pbm9yIHVwZGF0ZXMgdG8ga2VlcCB0aGluZ3MgY29oZXJlbnQuCgktIExvdCBvZiBvdGhlciBmaWxlcyBtYWRlIHRvIGluY2x1ZGUgd2luZS93aW51c2VyMTYuaCwgd2hpY2ggaXMgbm8KCSAgbG9uZ2VyIGluY2x1ZGVkIGZyb20gd2luZG93cy5oCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6IEZpeGVkIENsb3NlSGFuZGxlKCkgb24gZ2xvYmFsIGhhbmRsZXMuCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cywgZG9jdW1lbnRhdGlvbi93aW45NWxvb2ssIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBZGQgc29tZSBpbmZvcm1hdGlvbiB0byB0aGUgbWFuIHBhZ2UgYW5kIFJFQURNRSBmaWxlLgoJTWFrZSBkb2N1bWVudGF0aW9uL3dpbjk1bG9vayBzYXkgW1R3ZWFrLkxheW91dF0gaW5zdGVhZCBvZgoJW1R3ZWFrcy5MYXlvdXRdLgoJRml4IGluY29ycmVjdCBjb21tYW5kIGdpdmVuIGluIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cy4KCVN0YW5kYXJkIGVycm9yIHdhcyBub3QgYmVpbmcgcmVkaXJlY3RlZCwgc28gbW9zdCBvZiB0aGUKCW91dHB1dCB3YXMgbG9zdC4KCgkqIG9iamVjdHMvYml0bWFwLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRGVscGhpIDIuMCBuZWVkcyB0byBhbGxvY2F0ZSBhIGJpdG1hcCBiaWdnZXIgdGhhbiA0MDk2IGJpdHMgd2lkZS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbml0aWFsaXplIGxwZHdOZWVkZWQuCgoJKiBpZjE2MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5jbHVkZSBzdHVmZiBldmVuIGlmIG5vdCBvbiBfX2kzODZfXyBmb3IgZGVidWcgZGVmaW5lcy4KCgkqIG9sZS92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFub3RoZXIgLy8gY29tbWVudCBmaXhlZC4KCgkqIHNlcnZlci9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5lZWQgPGVycm5vLmg+IGZvciBlcnJubyBkZWNsLiBvbiBTb2xhcmlzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS94MTFmb250LmgsIG9iamVjdHMvZm9udC5jOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglJbXBsZW1lbnQgVHJhbnNsYXRlQ2hhcnNldEluZm8sIGNoYW5nZSBjaGFyc2V0IHR5cGUgdG8gQllURS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgaW5jbHVkZS9jb21iby5oOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGdhbGF4eS5hbXMuc3VueXNiLmVkdT4KCUJldHRlciBDQl9TRVRDVVJTRUwgbWVzc2FnZSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJTW92ZWQgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0IGltcGxlbWVudGF0aW9uIHRvIFVTRVIgcm91dGluZXMsIHVzaW5nCglhIG5vcm1hbCBXaW4zMiBldmVudC4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IFNlbmQgZGVidWdnaW5nIG91dHB1dCB0byBzdGRlcnIuCgoJKiBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgd2luMzIvY29uc29sZS5jOgoJQ2xlYW5lZCB1cCBhbmQgcmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIGNvZGUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBVc2Ugc2VydmVyIGZpbGUgbWFwcGluZyBvYmplY3RzLgoKCSogaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJQWRkZWQgc2VydmVyLXNpZGUgZmlsZSBtYXBwaW5nIG9iamVjdCBzdXBwb3J0LgoKCSogbWlzYy9jcnRkbGwuYzoKCUhhY2tlZCBzdGRpbyBmdW5jdGlvbnMgdG8gdXNlIFdpbjMyIGZpbGUgaGFuZGxlcy4gU3RpbGwgbmVlZHMgYSBwcm9wZXIKCXN0ZGlvIGVtdWxhdGlvbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglVc2UgV2luMzIgZmlsZSBoYW5kbGVzIGluc3RlYWQgb2YgVW5peCBvbmVzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9kb3NleGUuaDoKCVRha2UgaW50byBhY2NvdW50IGhhbmRsZSBpbmhlcml0YW5jZSBmbGFnLgoKVGh1IERlYyAzMSAxNTo1NToxOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglDaGFuZ2VkIGRiX3Rhc2tfcHJpbnRzeW0gdG8gYWx3YXlzIHByaW50IGEgZnVsbCBhZGRyZXNzLCBubyBtYXR0ZXIKCXdoYXQgdGhlIG9wZXJhbmQgc2l6ZSBpcy4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOiBSZS1pbXBsZW1lbnRlZCB1c2luZyBhIHJlYWwgc2VtYXBob3JlLgoKCSogd2luZG93cy9xdWV1ZS5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2szMm9iai5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3NpZ25hbC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3Rvb2xoZWxwLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmM6CglSZW1vdmVkIGNsaWVudC1zaWRlIHdhaXQgZnVuY3Rpb25zOyBhbGwgd2FpdGluZyBpcyBub3cgZG9uZSB0aHJvdWdoCgl0aGUgc2VydmVyLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oOgoJQWRkZWQgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCglBZGRlZCBnbG9iYWwgaGFuZGxlIHN1cHBvcnQuCgpXZWQgRGVjIDMwIDEyOjExOjUyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJQ2hhbmdlZCBzZXJ2ZXIgd2FpdCBsb2dpYyBhIGJpdC4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUhhY2tzIHRvIHN1cHBvcnQgc2VydmVyLXNpZGUgY29uc29sZS4gU2hvdWxkIGJlIHJlZG9uZSBwcm9wZXJseQoJc29tZSBkYXkuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgd2luMzIvZmlsZS5jLCB3aW4zMi9uZXdmbnMuYzoKCVJlaW1wbGVtZW50ZWQgUmVhZC9Xcml0ZUZpbGUgdG8gdXNlIHNlcnZlciBmaWxlIGRlc2NyaXB0b3JzLgoJUmVtb3ZlZCBmaWxlIHBvc2l0aW9uIGhhY2sgYXMgaXQgaXMgd3JvbmcgZm9yIFdpbjMyIChzaG91bGQgYmUgcmVkb25lCglmb3IgV2luMTYgb25seSkuCgoJKiBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3BpcGUuYzoKCUFkZGVkIGFub255bW91cyBwaXBlIHN1cHBvcnQKCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHNldmVyYWwgZmlsZSBzZXJ2ZXIgcmVxdWVzdHMKCUFkZGVkIHNlcnZlci1zaWRlIHBpcGVzIGFuZCBjb25zb2xlcwoKU3VuIERlYyAyNyAxNToyODo1NSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jcnRkbGwuYywgbXNkb3MvaW50MjEuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBsb2FkZXIvbWFpbi5jLCBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgYmVnaW5uaW5ncyBvZiBzZXJ2ZXItc2lkZSBmaWxlIGhhbmRsaW5nLgoJQWRkZWQgLWRlYnVnbXNnICtzZXJ2ZXIgc3VwcG9ydC4KCUJldHRlciBzZXJ2ZXIgcmVxdWVzdCBkdW1waW5nIGZvciB2YXJhcmdzIHJlcXVlc3RzLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglGaXhlZCBTZXRGb2N1cyB0aGF0IHdhcyBicm9rZW4gd2hlbiBtb3ZlZCB0byB4MTFkcnYuCgoJKiBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL21haW4uYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYzoKCUFkZGVkIGFkZF9xdWV1ZS9yZW1vdmVfcXVldWUgdG8gc2VydmVyIG9iamVjdCBvcGVyYXRpb25zLgoJTW92ZWQgc2VsZWN0KCkgbG9vcCBmdW5jdGlvbnMgdG8gc2VsZWN0LmMuCgpTYXQgRGVjIDI2IDE5OjQ3OjAwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYzoKCVJlbmFtZWQgRVJSIG1hY3JvIHRvIGF2b2lkIGNvbmZ1c2luZyB0aGUgbWFrZV9kZWJ1ZyBzY3JpcHQuCgoJKiBvbGUvc3RvcmFnZS5jLCBvbGUvdHlwZWxpYi5jLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3N0b3JhZ2UuaCwgaW5jbHVkZS93aW52ZXJzaW9uLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHRvbnMgb2YgaW5jb21wbGV0ZSBwcm90b3R5cGVzLCBhc3NpZ25tZW50J3Mgb2YgcG9pbnRlciB3aXRoCglkaWZmZXJlbnQgc2lnbmVkbmVzcywgc3VwZXJmbG91cyAnLCcgYW5kICc7JyBpbiBzdHJ1Y3R1cmVzLCB3cm9uZwoJcmV0dXJuLXR5cGVzLCBsb3NlIG9mIGRpZ2l0cyBhbmQgc29tZSBzbWFsbCBnbGl0Y2hlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBnYWxheHkuYW1zLnN1bnlzYi5lZHU+CglDbGVhbmVkIHVwIGZvbnQgZW5jb2RpbmcgaGFuZGxpbmcuIEFkZGVkICdJZ25vcmUjJyBvcHRpb24gdG8gdGhlCglbZm9udHNdIHNlY3Rpb24uIEFsc28sIGZpbGUgd2l0aCBjYWNoZWQgbWV0cmljcyBub3cgaGFzIHRoZSB2YWx1ZSBvZgoJJERJU1BMQVkgYXBwZW5kZWQgdG8gdGhlIGZpbGVuYW1lLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByYy9zeXN0ZXN0LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9ub25jbGllbnQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9wYXRoLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luaW9jdGwuaCwgbWlzYy9tYWluLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYywgb2xlL29sZTIuYywgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgLy8gY29tbWVudHMgdG8gLyogKi8gc28gV0lORSBjb21waWxlcyB3aXRoIG5vbi1nY2MgY29tcGlsZXJzCglhZ2Fpbi4KCgkqIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkZWJ1Z2dlci9kYmcueSwgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgbW9yZSB0aGluZ3MgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2JydXNoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglGaXhlZCB0aGUgcHJvdG90eXBlIG9mIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0CgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJUmVtb3ZlZCB0aGUgQ05feHh4IG1hY3JvcyBzaW5jZSB0aGV5IGFyZSBub3QgdXNlZCwgZG8gbm90IGNvcnJlc3BvbmQgdG8KCWFueSBXaW5kb3dzIGRlZmluZSBhbmQgY29uZmxpY3Qgd2l0aCBNRkMgZGVmaW5lcy4KCXdpbmRvd3MuaCBtdXN0IHByb3ZpZGUgYWxsIHRoZSBkZWZpbml0aW9ucyBjb250YWluZWQgaW4gd2luYmFzZS5oCglTb21lIFh4eDMyIGZ1bmN0aW9ucyBkaWQgbm90IGhhdmUgdGhlIGFzc29jaWF0ZWQgWHh4IG1hY3JvLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglBZGRlZCBhIHR5cGVkZWYgZm9yIF9faW50NjQgd2hpY2ggaXMgYSBidWlsdGluIFZpc3VhbCBDKysgdHlwZQoJQWRkZWQgYSB0eXBlZGVmIGZvciBQVUlOVAoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCVJFRklJRCB3YXMgbm90IGRlZmluZWQuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jLCBjb25maWd1cmU6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJY29uZmlndXJlIGZpcnN0IGNoZWNrcyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNvbXBpbGUgSVBYIGNvZGUgd2l0aAoJR2xpYmMgaGVhZGVycy4gSWYgaXQgZmFpbHMsIG5leHQgY2hlY2sgZGV0ZXJtaW5lcyB3aGV0aGVyIGRpcmVjdCBpbmNsdXNpb24KCW9mIDxsaW51eC9pcHguaD4gd29ya3MuCgoJKiBpbmNsdWRlL3RjaGFyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCVByb3ZpZGVzIHRoZSBtYXBwaW5ncy4gTUJDUyBhbmQgVW5pY29kZSBmdW5jdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZC4KCVN0YW5kYXJkIChTQkNTKSBmdW5jdGlvbnMgbWF5IGV4aXN0IG9yIG5vdCwgd2l0aCB0aGUgc2FtZSBvciBhIGRpZmZlcmVudAoJc2VtYW50aWNzLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2lwYWRkcmVzcy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUlQYWRkcmVzcyBjb21tb24gY29udHJvbCBpbXBsZW1lbnRhdGlvbi4gRmlyc3QgdHJ5OyBuZWVkcyBtb3JlIHdvcmsgdG8KCXJlbW92ZSBib3JpbmcgYnVncy4KCkZyaSBEZWMgMjUgMDg6NTU6MTUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0aGUgVEVYVCByZWRlZmluZWQgd2FybmluZ3MuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUhvb2sgaW50byB0aGUgKHN0dWJiZWQpIHJlc2l6ZSBjb2RlIGluIG1zZG9zIGludDEwLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGlvbiBvZiBjb25zb2xlIG1vZGUgZHJpdmVycyB0byB1c2UgdXNpbmcgdGhlCgktY29uc29sZSBvcHRpb24uIEN1cnJlbnRseSAidHR5IiwgIm5jdXJzZXMiLCBhbmQgInh0ZXJtIiBhcmUKCXN1cHBvcnRlZC4KCUFkZCBzdHVicyBmb3IgcmVzaXppbmcgdGhlIHNjcmVlbiBvbiBtb2RlIGNoYW5nZXMuCgoJKiBpbmNsdWRlL2RkZW1sLmgsIG1pc2MvZGRlbWwuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBEREUgQVBJczoKCURkZUNtcFN0cmluZ0hhbmRsZXMsIERkZUNyZWF0ZVN0cmluZ0hhbmRsZSwgRGRlRnJlZVN0cmluZ0hhbmRsZSwKCURkZVF1ZXJ5U3RyaW5nLCBEZGVVbmluaXRpYWxpemUuCgpUaHUgRGVjIDI0IDE2OjU5OjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9wYXJzZWR0LmMsIG9sZS9wYXJzZWR0LmgsIG9sZS92YXJpYW50LmM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIFZhckRhdGVGcm9tU3RyIEFQSS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgaW5jbHVkZS90cmFja2Jhci5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gVG9vbHRpcCBzdXBwb3J0CgktIFZlcnRpY2FsIHRyYWNrYmFycyBzdXBwb3J0ZWQgbm93CgktIFRCU19CT1RIIHN1cHBvcnQgKGdvZXMgYWxvbmcgd2l0aCBwYXJ0aWFsIGNsZWFudXAgb2YgZHJhd2luZyBjb2RlKQoJLSBVc2UgQ09NQ1RMMzIgaGVhcCBpbnN0ZWFkIG9mIHN5c3RlbSBoZWFwCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgYWxsIGNsaXBwZXImM2Qgc3R1YnMuCglTdGFydGluZyBDb2xvcktleSBzdXBwb3J0LgoJRml4ZWQgdHJhY2Ugc3RhdGVtZW50IGluIERpcmVjdERyYXdDcmVhdGUgYXMgZm9ybWF0dGluZyB3YXNuJ3QgY29ycmVjdC4KCUNoYW5nZWQgInJldHVybiAwOyIgdG8gInJldHVybiBERF9PSyIgb3IgInJldHVybiBTX09LIiBhcyBhcHByb3ByaWF0ZS4KCUFkZGVkIFN1cmZhY2VFbnVtIGR3RmxhZ3MuCgoJKiBpbmNsdWRlL2RwbGF5LmgsIG11bHRpbWVkaWEvZHBsYXkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBtYWNyb3MgdG8gaGVhZGVyIGZpbGUgZm9yIGVhc2llciBmdW5jdGlvbiBjYWxsaW5nLgoJQ2hhbmdlZCBpbXBsZW1lbnRhdGlvbiBhIGxpdHRsZSBiaXQuCglBZGRlZCBzdHVicyBmb3IgZHBsYXkzLiBTdGlsbCBuZWVkIHRvIGJyZWFrIGludG8gQSBhbmQgVyB2ZXJzaW9ucy4KCgkqIHdpbjMyL2ZpbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUNyZWF0ZUZpbGUzMkEgd2FzIG9ubHkgYWxsb3dpbmcgY29uc29sZSBvcGVucyBvbiBDT05JTiQvT1VUJC4gVGhpcwoJaGFzIGJlZW4gY2hhbmdlZCB0byBoYXZlIGEgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvbid0IHNlbmQgT0RBX0VOVElSRSBmb3IgZW1wdHkgbGlzdGJveGVzIChMSVNUQk9YX1BhaW50KS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBHZXRCaW5hcnlUeXBlIEFQSSBmdW5jdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zbW9kLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBuZXcgZG9zbW9kIGNvbW11bmljYXRpb24gcG9zc2liaWxpdGllcywgaW5jbHVkaW5nCglhY3RpdmF0aW5nIGEgZG9zbW9kLXNwZWNpZmljIHNldGl0aW1lcigpLCBhbmQgdGhlIGNhcHR1cmUgb2Ygc29tZQoJY29tbW9uIHNpZ25hbHMsIHdoaWNoIGlzIHJldHVybmVkIHRvIFdpbmUgKHByZXZpb3VzbHkgYSBTSUdJTEwKCXdvdWxkIGp1c3QgY2F1c2UgYSAiZG9zbW9kIHN5bmMgbG9zdCIgd2l0aG91dCBleHBsYW5hdGlvbiwgbm93IGl0CglpbnZva2VzIHRoZSBXaW5lIGRlYnVnZ2VyKS4gSW52b2tlcyBpbnQgMDggdXBvbiByZWNlaXB0IG9mIGRvc21vZAoJU0lHQUxSTSwgdGh1cyBzaW11bGF0aW5nIHRoZSBET1MgdGltZXIuIE1hZGUgRE9TIGludGVycnVwdCBjYWxscwoJYmUgcmVwb3J0ZWQgYnkgLWRlYnVnbXNnICtyZWxheSBpbnN0ZWFkIG9mIC1kZWJ1Z21zZyAraW50LiBBbmQKCWZpeGVkIG5vbi1pMzg2IGNvbXBpbGF0aW9uIG9mIGRvc21vZC4gKEFueXRoaW5nIGVsc2U/ISkKCgkqIGxvYWRlci9tYWluLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlc2t0b3Agd2luZG93IHF1ZXVlIGhhbmRsaW5nIGFkYXB0ZWQuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglRdWV1ZSBoYW5kbGluZyBhZGFwdGVkIHRvIG5ldyBxdWV1ZSByb3V0aW5lcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90YXNrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIHN0dWIgZm9yIEluaXRUaHJlYWRJbnB1dC4KCVVzZSBHZXRUaHJlYWRRdWV1ZS9HZXRGYXN0UXVldWUgaW5zdGVhZCBvZiBHZXRUYXNrUXVldWUuCgoJKiBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIENhbGxvdXQgdGFibGUgaW5zdGVhZCBvZiBkaXJlY3QgR2V0UHJvY0FkZHJlc3MuCglVc2VyWWllbGQgbW92ZWQgdG8gVVNFUi4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbG91dCB0YWJsZSAoZm9yIEtFUk5FTC0+VVNFUiBjYWxscykgYWRkZWQuCglDYWxsYmFja3MtPkNhbGxQb3N0QXBwTWVzc2FnZVByb2MgcmVtb3ZlZC4KCgkqIG1pc2MvY2FsbGJhY2suYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvdGFzay5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIG5vbi1oYXJkd2FyZSBYIGV2ZW50cyBjb3JyZWN0bHkgd2l0aCBuYXRpdmUgVVNFUgoJKHJlbW92ZWQgcmVmZXJlbmNlIHRvIE1FU1NBR0VRVUVVRSBmcm9tIEtFUk5FTCBjb2RlKS4KCUhhbmRsZSBFeHBvc2UgZXZlbnRzIHdpdGggbmF0aXZlIFVTRVIuCgoJKiBtaXNjL2NydGRsbC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQmV0dGVyIF91bHRvYSgpLgoKCSogd2luMzIvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IHNtYWxsIHByb2JsZW0gaW4gR2V0VGltZVpvbmVJbmZvcm1hdGlvbigpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUxvd2VzdCBzY2FuIGNvZGUgc2VlbXMgdG8gYmUgMSwgbm90IHplcm8uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWJzIGZvciBJRGlyZWN0M0QoMik6OkNyZWF0ZUxpZ2h0IGFuZCBDcmVhdGVEZXZpY2UgdG8gYXZvaWQgY3Jhc2hlcy4KCgkqIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVzIGNyYXNoIHdoZW4gcnVubmluZyB3aXRob3V0IGV4dGVybmFsIHNoZWxsMzIuZGxsLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBtZXNzYWdlcyBbTEJfKixFTV8qXSB0cmFuc2xhdGVkIDMyQSBmcm9tL3RvIDMyVy4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRGVzdCBidWZmZXIgd2FzIHByaW50ZWQgb3V0IGFzIHN0ci4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJR2V0dGluZyBzdHJpbmdzIHdpdGggVmVyUXVlcnlWYWx1ZTMyVyB3YXMgYnJva2VuLiBDb21wbGV0ZQoJcmVjb25zdHJ1Y3Rpb24gb2YgdGhlIGZ1bmN0aW9uLgoKCSogbWlzYy90b29saGVscC5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBudW1iZXIgYW5kIHR5cGUgb2YgYXJncyBpbiBkZWJ1Z2dpbmcgc3RhdGVtZW50cy4KCgkqIG9sZS9zdG9yYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQG11ZC5kZT4KCUlTdG9yYWdlMzIgdnRhYmxlIHdhcyBtaXNzaW5nIDMgc3R1YiBlbnRyaWVzLgoKRnJpIERlYyAxOCAxNzozODozOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJRG9jdW1lbnRhdGlvbiBmb3IgVHJhbnNsYXRlQ2hhcnNldEluZm8uCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBpZjE2MzIvd3Byb2NzLnNwZWMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgdGhlIERPU0FTUEkgcGFydCB1c2UgdGhlIGV4Y2VsbGVudCBEUE1JIFJNQ0IgaW1wbGVtZW50YXRpb24gZG9uZQoJYnkgT3ZlIEthYXZlbiwgd2hpY2ggbWFrZXMgdGhlIGNvZGUgX211Y2hfIGNsZWFuZXIuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglVc2UgLWx3aW5lIGZvciBsaW5raW5nLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBhbHdheXMgY2xlYXIgUVNfLi4uIGZyb20gKmJvdGgqIGNoYW5nZUJpdHMgYW5kIHdhaXRCaXRzLgoJQnVnZml4OiBxdWV1ZS0+aFNlbmRpbmdUYXNrIGlzICpxdWV1ZSogaGFuZGxlLCBub3QgdGFzayBoYW5kbGUuCgoJKiBpZjE2MzIvc3RvcmFnZS5zcGVjLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvc3RvcmFnZS5oLCBvbGUvaWZzLmMsIG9sZS9zdG9yYWdlLmM6CglGcmFu529pcyBHb3VnZXQgPGdvdWdldEBtZXRhaW50ZWdyYXRpb24ubmV0PgoJRmlyc3Qgc3RlcCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGNhbGwgQ09NIGludGVyZmFjZXMgZnJvbSBDKysgY29kZSBpbgoJV2luZWxpYi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS90cmVldmlldy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCVByZWxpbWluYXJ5IHRvb2x0aXAgc3VwcG9ydC4KCVdNX1NFVEZPTlQvR0VURk9OVCBhZGRlZC4KCVNvbWUgYnVnIGZpeGVzLgoJVXNlIENPTUNUTDMyIGhlYXAgaW5zdGVhZCBvZiBzeXN0ZW0gaGVhcC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgUG9seWxpbmVUby4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogQWRyaWFuIEhhcnZleSA8YWRyaWFuQHNlbGVjdC5jb20uYXU+CglUaGUgWncuLi4gRnVuY3Rpb25zIGluIG50ZGxsLmRsbCBhcmUganVzdCBhbHRlcm5hdGUgZW50cnkKCXBvaW50cyBmb3IgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSBOdC4uLiBmdW5jdGlvbiBvZiB0aGUKCXNhbWUgbmFtZXMuICBDaGFuZ2VkIG50ZGxsLnNwZWMgdG8gbWF0Y2ggdGhpcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVvcmdhbml6ZWQgUEUgbW9kdWxlIGxvYWRpbmcgdG8gcHJlcGFyZSBmb3IgZWxmLWRsbCBsb2FkZXIuCglXSU5FX01PRFJFRiBjcmVhdGlvbiBtb3ZlZCB0byBvbmUgY2VudHJhbCBsb2NhdGlvbi4KCUJ1Z2ZpeDogY29ycmVjdGx5IHNlbGVjdCBuYXRpdmUvYnVpbHQtaW4gdmVyc2lvbiBpZiAuRExMCglleHRlbnNpb24gaXMgbWlzc2luZyBpbiBMb2FkTGlicmFyeSBjYWxsLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgZXJyb3IgdmFsdWVzIE1DSV9JTlRFUk5BTCB0byB0aGVpciBjb3JyZWN0IHZhbHVlcy4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgd2FybmluZy4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHNlbmRpbmcgZGlyZWN0bHkgbWVzc2FnZXMgdG8gRHJpdmVyUHJvYyBidXQgcmF0aGVyIGdvIHRocm91Z2gKCU1DSSBsYXllciAocmVxdWlyZWQgZm9yIG9wZW4vY2xvc2UpLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGluY29ycmVjdCBwYXRjaCBmb3IgTUNJX09QRU4gYW5jIE1DSV9DTE9TRSBwYXJhbWV0ZXJzICh0aGFua3MgdG8gUm9iZXJ0IFJpZ2dzCglmb3IgcG9pbnRpbmcgb3V0IHRoZSBidWcsIHNlZSB0aGUgZml4IGluIG1jaXN0cmluZy5jKQoJRml4ZWQgTUNJIHNlZWtpbmcgb24gQ0QgYXVkaW8uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIFdhaXROYW1lZFBpcGVbQXxXXS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgQ29udHJvbF9GaWxsQ2FjaGVfUnVuRExMLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSEdldEZpbGVJbmZvMzJBOiBnZXQgU0hHRklfU1lTSUNPTklOREVYIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJTEFwcGVuZCBzZWVtcyB0byB3b3JrIG5vdy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIFdhaXROYW1lZFBpcGVbQXxXXS4KClR1ZSBEZWMgMTUgMTg6MDQ6NTggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBHZXRUZW1wUGF0aDMyIGlmIGNvdW50PTAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmM6CglUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CgktIGFkZCAtbG9zc2F1ZGlvIGlmIG5lZWRlZCwgYW5kIGEgY2hlY2sgZm9yIDxzb3VuZGNhcmQuaD4sIHRvIGNvbmZpZ3VyZS5pbgoJICAocnVuIGF1dG9jb25mIGFmdGVyIHRoaXMpLiAgTm90ZSB0aGF0IHRoZSBjaGVjayBoYXMgYmVlbiBhbHRlcmVkIHRvIGJyZWFrCgkgIG91dCBvZiB0aGUgQUNfQ0hFQ0tfSEVBREVSUyBhZnRlciB0aGUgZmlyc3QgbWF0Y2ggLSB0aGlzIGlzIHNvCgkgIDxzeXMvc291bmRjYXJkLmg+LCBpZiBmb3VuZCBvbiBOZXRCU0QgKGEgYHJlYWwnIE9TUyksIHdpbGwgbm90IGNvbmZsaWN0CgkgIHdpdGggdGhlIGVtdWxhdGVkIG9zc2F1ZGlvLgoJLSBjaGVjayBmb3IgPHNvdW5kY2FyZC5oPiBhbG9uZyB3aXRoIHRoZSBvdGhlciB0d28gaW4gYSBtdXR1YWxseS1leGNsdXNpdmUKCSAgbWFubmVyIGluIHRoZSB2YXJpb3VzICouYyBmaWxlcyB0aGF0IG5lZWQgaXQ7IGNoYW5nZSBpbmNsdWRlIG9mCgkgICJtbXN5c3RlbS5oIiB0byAibXVsdGltZWRpYS5oIiBzbyB0aGlzIGxvZ2ljIGlzIGFsbCBpbiBvbmUgcGxhY2UKCS0gY2hhbmdlIG1jaWNkYS5jIHRvIGFsbG93IGZvciBDRCBhdWRpbyBtYW5pcHVsYXRpb24gb24gTmV0QlNELiAgVGhpcwoJICBpbmNsdWRlczoKCSAgKiBjaGFuZ2luZyBpb2N0bCgpIGNhbGxzIHRvIGJlIE5PTi1TUExJVCB3aXRoIGV4YWN0bHkgMyBhcmdzOyBvbiBOZXRCU0QKCSAgICBvc3NhdWRpbywgaW9jdGwoKSBpcyAjZGVmaW5lZCB0byBiZSBfb3NzX2lvY3RsIGJ5IDxzb3VuZGNhcmQuaD4sIGFuZAoJICAgIG5laXRoZXIgc3BsaXR0aW5nIHdpdGggIy1kaXJlY3RpdmVzIG5vciBhIHR3by1hcmcgaW9jdGwgd29yazsKCSAgKiBjaGFuZ2luZyB0aGUgI2lmIGxvZ2ljIHRvIGFsbG93IGJvdGggRnJlZUJTRCBhbmQgTmV0QlNEIHRvIHNoYXJlIHRoZQoJICAgIGFwcHJvcHJpYXRlIGNvZGUgYmxvY2tzCgktIGJsb2NrIG91dCBNSURJIGNvZGUgZm9yIE5ldEJTRCAoaW5pdC5jKSBhbmQvb3IgbWlzc2luZyBTTkRDVExfTUlESV9JTkZPCgkgIChtaWRpLmMsIG1jaW1pZGkuYykuICBOZXRCU0QncyBPU1MgZW11bGF0aW9uIGRvZXMgbm90ICh5ZXQpIHN1cHBvcnQgTUlESS4KCVRoYW5rcyBnbyB0byBteWNyb2Z0QG5ldGJzZC5vcmcgZm9yIHRoZSA5OSUgYnVsayBvZiB0aGlzIHdvcmsuCgoJKiB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3h1dGlsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBpbmNsdWRlL3RzX3h1dGlsLmg6CglEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgoJU2V0IHRoZSBjbGFzcyBoaW50cyBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4OiBHZXRGdWxsUGF0aE5hbWUgc2V0cyBscEZpbGVQYXJ0IG9ubHkgd2hlbiB0aGUgbGFzdCBlbGVtZW50Cglkb2VzIG5vdCBlbmQgd2l0aCAnXCcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1pc2MvZGRlbWwuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBpZjE2MzIvdXNlci5zcGVjOgoJUGF1bCBRdWlubiA8cGF1bHFAQ09SRUwuQ0E+CglMb3RzIG9mIG5ldyBkZWZpbmVzIGFuZCBzdHVicy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVRoZXNlIHBhdGNoZXMgYWRkIHN1cHBvcnQgZm9yIC0tZW5hYmxlLWRsbCBvbiBOZXRCU0QsIGFuZCBtYXkgZXZlbiBkbyBzbyBmb3IKCUZyZWVCU0QgYS5vdXQuICBOb3csIE5ldEJTRCBjYW4gdXNlIGxpYndpbmUgYXMgYSBzaGFyZWQgb2JqZWN0LiAgVGhhbmtzIHRvCglteWNyb2Z0QG5ldGJzZC5vcmcgZm9yIGRvaW5nIHRoaXMgd29yayEKCgkqIHRvb2xzL3dyYy93cml0ZXJlcy5jOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglHbG9iYWwgY29uc3RydWN0b3JzIHVzaW5nIGAuc2VjdGlvbiAuY3RvcnMnIGFyZSBib2d1cyBmb3IgTmV0QlNEJ3MKCWFzc2VtYmxlci4gVXNlIHRoZSBhcHByb3ByaWF0ZSBgLnN0YWJzJyB3aGVuIG9uIE5ldEJTRC4KCgkqIG9sZS92YXJpYW50LmM6IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVVuZGVmaW5lZCBDSEFSX01BWCBhbmQgQ0hBUl9NSU4gKCNkZWZpbmVkIGJ5IE5ldEJTRCdzIHN5c3RlbSBoZWFkZXJzKS4KCUZpeGVkIHNvbWUgY29uc3RhbnRzIHRoYXQgYXJlIHRvbyBiaWcgZm9yIGEgcGxhaW4gYGludCcuCgoJKiBvbGUvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBNQVhGTE9BVCBpZiBGTFRfTUFYIGlzbid0IHRoZXJlLgoKCSogZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW46IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCWdyYXBoaWNzL3BzZHJ2IGZvcmdldHMgdG8gcHVsbCBpbiBARExMRkxBR1NALCBhbmQgc28gaXMgY29tcGlsZWQgbm9uLVBJQyBpZgoJdXNpbmcgLS1lbmFibGUtZGxsLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglWZWtzbGVyIE1pY2hhZWwgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJTW92ZSBkZWNsYXJhdGlvbnMgZnJvbSB3aW5kb3dzLmggdG8gd2luZ2RpLmggYW5kIHdpbnVzZXIuaC4KCk1vbiBEZWMgMTQgMTg6MTU6MTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYywgZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL2FzeW5jLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9hc3luYy5oLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL3NpZ25hbC5jLCBtaXNjL3dpbnNvY2tfZG5zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgYXN5bmMgSU8gKFNJR0lPKSBzdHVmZiBmcm9tIFdJTlNPQ0sgZ2VuZXJpYyB1c2VhYmxlLgoJQWRkZWQgYXN5bmMgSU8gc3VwcG9ydCB0byBGSUxFIGFuZCBDT05TT0xFIG9iamVjdHMuCgoJKiBtaXNjL3dpbnNvY2suYzogU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCVByZXZlbnQgc2VnZmF1bHQgaW4gc2V0c29ja29wdCB3aGVuIG9wdG5hbWUgaXMgU09fTElOR0VSIGFuZCBvcHR2YWwgaXMKCW51bGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTb21lIGNsZWFudXAuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNITWFwUElETFRvU3lzdGVtSW1hZ2VMaXN0SW5kZXggdHJ5J3MgdG8gZGV0ZXJtaW5lIGFuZCBsb2FkIHRoZSBleGFjdAoJaWNvbiBmb3IgZmlsZXMgKGJ5IHR5cGUpIG5vdy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IEhDUl9HZXREZWZhdWx0SWNvbiAoaW50ZXJuYWwpLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBEUE1JIHdyYXBwZXIgYWxsb2NhdGlvbiBjb2RlIHRvIGRvc21lbS5jIHRvIFJFQUxMWSBtYWtlIHRoZQoJUk1jYWxsIHNob3J0Y3V0cyBpbmRlcGVuZGVudCBvZiBkb3Ntb2QuIFNTIGhhZCBiZWVuIGxlZnQgb3V0IG9mCgl0aGUgUkVBTE1PREVDQUxMIGNvcHkgcm91dGluZXMgZm9yIHNvbWUgcmVhc29uLCBmaXhlZCBub3cuIEFsc28KCWNsZWFuZWQgdXAgYSBmZXcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglBZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgWCBmb250cyB1c2VkIGZvciBIZWx2IGFuZCBUbXMgUm1uIHR5cGVmYWNlcwoJd2l0aCBEZWZhdWx0U2VyaWYgYW5kIERlZmF1bHRTYW5zU2VyaWYgSU5JIGtleXMuCgoJKiB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCS0gQWRkZWQgYSBnbG9iYWwgbGFiZWwgZm9yIGVsZi1kbGwgbGlua2luZyBhbmQgYSBsb25nIHdpdGggdGhlIHJlc291cmNlCgkgIHNpemUgYW5kIGEgbG9uZyB3aXRoIHRoZSBkaXJlY3Rvcnkgc2l6ZS4KCS0gS2lsbGVkIGFuIGFubm95aW5nIHdhcm5pbmcgc2luY2UgdmVyc2lvbiAxLjAuMCBpbiBwYXJzZXIueSBhYm91dCBhCgkgIHZhciBiZWluZyB1c2VkIGJlZm9yZSBpbml0LgoKCSogaW5jbHVkZS9zaGxvYmouaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkcyB0aGUgSVBlcnNpc3RGaWxlIEludGVyZmFjZSB0byBJU2hlbGxMaW5rW1ddIGFuZCBnYXZlIGJvdGggb3duCglJQ2xhc3NGYWN0b3J5cy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoUmVhZENvbnNvbGUzMkEpOiBzbWFsbCBhbmQgc3R1cGlkIGJ1ZyBmaXhlZAoJKFdyaXRlQ29uc29sZU91dHB1dCk6IGJ1ZyBmaXhlZCAoYXR0cmlidXRlcyBtYXkgY2hhbmdlIHdpdGhpbiBsaW5lcykKCWFuZCBlbmhhbmNlZCBzcGVlZHdpc2UgYnkgdXNpbmcgYnVmZmVyaW5nLgoJKENPTlNPTEVfc3RyaW5nXzJfSVIpOiBlbmhhbmNlZCwgbm93IGdldHMgc2NhbmNvZGVzIGFuZCB2aXJ0dWFsa2V5Y29kZXMKCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCV91bHRvYSBpbXBsZW1lbnRlZC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGhhY2sgdG8gZ2V0IHJpZCBvZiBhbm5veWluZyBlcnI6cmVzb3VyY2U6IG1lc3NhZ2UgZm9yCglNZXNzYWdlQm94ZXMuCgoJKiByZWxheTMyL2Rzb3VuZC5zcGVjOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglGaXggb2ZmLWJ5LTEgZXJyb3IgaW4gRGlyZWN0U291bmQgb3JkaW5hbHMuIFRoYW5rcyB0byBSb2JlcnQgUmlnZ3MgZm9yCgl0aGUgcG9pbnRlci4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJU2F2ZSB0aGUgb3JpZ2luYWwgdmlkZW8gbW9kZSBiZWZvcmUgZ29pbmcgZnVsbHNjcmVlbiBhbmQgcmVzdG9yZSBpdAoJd2hlbiB0aGUgbGFzdCBEaXJlY3REcmF3X1JlbGVhc2UgaXMgY2FsbGVkLiBBbHNvIGZpeCBhIHByb2JsZW0gd2hlcmUKCXRoZSB2aWV3cG9ydCB3YXNuJ3Qgc2V0IHRvIDAsMC4KCgkqIGNvbnNvbGUveHRlcm0uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNYWRlIG1vcmUgY3Jvc3MtcGxhdGZvcm0gYnkgY2hhbmdpbmcgLT5fZmlsZW5vIHRvIGZpbGVubygpLgoKCSogd2luZG93cy93aW4uYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXggdGhlIFotb3JkZXIgb2YgbWF4aW1pemVkL21pbmltaXplZCBjaGlsZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVhMRkRzIHNob3VsZCBiZSB3ZWxsLWZvcm1lZCAoMTQgaHlwaGVucykgdG8gbWF0Y2ggc2NhbGFibGUgZm9udHMuCglTdG9wIHNsYW50IGZpZWxkIGJlY29taW5nIHdpbGRjYXJkZWQgdG9vIGVhcmx5LgoKCSogd2luZG93cy9mb2N1cy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShGT0NVU19Td2l0Y2hGb2N1cykgY2hlY2sgZm9yIHBGb2N1c1RvID09IE5VTEwgaW5zdGVhZCBvZiBoRm9jdXNUbz09MC4KCgkqIG9sZS9vbGUybmxzLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSGFjayBPTEVfR2V0Rm9ybWF0KiB0byByZXR1cm4gc29tZXRoaW5nIGlmIGRhdGVsZW4gPSAwLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IFdJTkFQSSdzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGcmkgRGVjIDExIDE1OjA0OjExIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90bGhlbHAzMi5oLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1pc2MvdG9vbGhlbHAuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUGF0cmljayBTcGlubGVyIDxzcGlubGVyLnBhdHJpY2tAbWF5by5lZHU+CglJbXBsZW1lbnRlZCBDcmVhdGVUb29saGVscDMyU25hcHNob3QsIGluY2x1ZGluZyB0d28gb2YgdGhlIHJvdXRpbmVzCgl1c2luZyBzbmFwc2hvdHMsIFByb2Nlc3MzMkZpcnN0IGFuZCBQcm9jZXNzMzJOZXh0LgoKCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL2NvbXBvYmouYywgb2xlL3ZhcmlhbnQuYzoKCUp1c3RpbiBCcmFkZm9yZCA8anVzdGluQHVrYW5zLmVkdT4KCU1vc3Qgb2YgdGhlIGN1cnJlbmN5IHZhcmlhbnQgY29udmVyc2lvbiBmdW5jdGlvbnMgaW1wbGVtZW50ZWQuCglNaW5vciBidWdmaXhlcyBhbmQgaGVhZGVyIHRpZHlpbmcuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9yYXMuaCwgaW5jbHVkZS93aW50eXBlcy5oLCByZWxheTMyL3Jhc2FwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFJhc0VudW1Db25uZWN0aW9ucyBzdHViLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeCBpbiBQYXRoQ29tYmluZTMyW0F8V10uCglWaWV3IG1lbnUgaW4gZXhwbG9yZXIgYW5kIG9uIHJpZ2h0IG1vdXNlIGJ1dHRvbiBpcyB3b3JraW5nIG5vdy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgIElMR2V0RGlzcGxheU5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBTaGVsbEV4ZWN1dGVFeDMyQS4KCVNtYWxsIGNoYW5nZXMuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIG1lbnUgcmVzb3VyY2VzIHRvIHJjLWZpbGUuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIG9sZS9vbGUybmxzLmMsIHdpbjMyL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIGRlYnVnIG1lc3NhZ2VzIGNsYXJpZmllZCwgb25lIHVzZWxlc3MgcHJvdG90eXBlIHJlbW92ZWQuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMjk0IG1pc3NpbmcgV0lOQVBJIGFkZGVkLgoKCSogdG9vbHMvdGVzdHJ1bjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglLaWxsIHN3YXBwZWQgb3V0ICh3aW5lKSBwcm9jZXNzZXMgdG9vIGFuZCB0cnVuY2F0ZSBkaWZmIGFmdGVyIHNvbWUgeHh4CglsaW5lcy4KCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgU2V0TGFzdEVycm9yIHdpdGggd3JvbmcgdmFsdWUuCgoJKiBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS93aW5kb3dzLmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBBYm9ydERvYzE2LCBtb3ZlIEFib3J0RG9jMzIgYW5kIFN0YXJ0RG9jMzJXIHRvCgltaXNjL3ByaW50ZHJ2LmMgYW5kIGZpeCBhIGZldyBjb21waWxlIHdhcm5pbmdzLgoKCSogd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL250ZGxsL250LmMsIGlmMTYzMi90eXBlbGliLnNwZWMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9pbnQyMS5jLCBvbGUvb2xlMm5scy5jLCBvbGUvdHlwZWxpYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgYSBidW5jaCBvZiBjb21waWxlciB3YXJuaW5ncy4KCgkqIGZpbGVzL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBXaW4zMiBzeW5jaHJvIHRvIEZJTEVzICh1c2VmdWwgb25seSBmb3IgdGVybWluYWwgaGFuZGxlcykuCgpUaHUgRGVjIDEwIDE2OjA0OjUxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9tcHIuc3BlYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIHJlbGF5MzIvdGFwaTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi90aW1lLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaWYxNjMyL2RkZW1sLnNwZWMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvZGRlbWwuYywgbWlzYy9uZXR3b3JrLmMsIG1pc2MvcHJpbnRkcnYuYywgbWlzYy90YXBpMzIuYywgY29udHJvbHMvZWRpdC5jLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglTeWx2YWluIFN0LUdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUxvdHMgb2YgbmV3IHN0dWJzLgoKCSogbXNkb3MvdnhkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTGV0IHRoZSBTeXN0ZW1fVGltZV9TZWxlY3RvciBjbG9jayB0aWNrLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzY2VtdS9pbnN0ci5jLCBtc2Rvcy9kb3NtZW0uYywgZ3JhcGhpY3MvZGlzcGRpYi5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvdmdhLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gQ3JlYXRlU3lzdGVtVGltZXIgaW50ZXJmYWNlIGNoYW5nZS4KCgkqIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2MvY2FsbGJhY2suYywgbWlzYy9zeXN0ZW0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2xlYW5lZCB1cCBDcmVhdGVTeXN0ZW1UaW1lciBpbnRlcmZhY2UgZm9yIHVzZSB3aXRoIDMyLWJpdCBjYWxsYmFja3MuCgkoTk9URTogMTYtYml0IGNhbGxiYWNrcyBzdGlsbCBkb24ndCB3b3JrISkKCgkqIHdpbmRvd3MvbWRpLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJLSBIYW5kbGUgV01fTURJUkVTVE9SRSBieSBjYWxsaW5nIFdNX1NZU0NPTU1BTkQgZm9yCgl0aGUgY2hpbGQgd2luZG93IHNvIHRoYXQgdGhlIHN5c3RlbSBtZW51IGlzIHNldCBjb3JyZWN0bHkuCgktIEluIE1ESUNhc2NhZGUgYW5kIE1ESVRpbGUgdXNlIFdNX01ESVJFU1RPUkUgbWVzc2FnZQoJdG8gcmVzdG9yZSBtYXhpbWl6ZWQgd2luZG93IHNvIHRoYXQgc3lzdGVtIG1lbnUgaXMKCWhhbmRsZWQgY29ycmVjdGx5LgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvdHlwZWxpYi5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWQVJJQU5UIEFQSXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBEUklWRV9HZXRGcmVlU3BhY2UgdG8gaGFuZGxlIHNwYWNlID4gNCBHQnl0ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCWhhbmRsZSBUVklGX1RFWFQgYnkgVFJFRVZJRVdfU2V0SXRlbSBhY2NvcmRpbmcgdG8gTVMgZG9jdW1lbnRhdGlvbi4KCWJldHRlciBoYW5kbGluZyBvZiBMUFNUUl9URVhUQ0FMTEJBQ0szMkEKCVRSRUVWSUVXX0dldE5leHR8UHJldkxpc3RJdGVtIGRpZG4ndCBkZXNjZW5kIGludG8gdmlzaWJsZSBjaGlsZCBpdGVtcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcm4gaWYgdHdvIC5leGVzIGNvbmZsaWN0IHdpdGggZWFjaCBvdGhlciBhbmQgdGhlIHNlY29uZCBkb2VzIG5vdAoJaGF2ZSByZWxvY2F0aW9uIHJlY29yZHMuCgoJKiBtaXNjL2NvbW1kbGcuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgR2V0RmlsZVRpdGxlMzJBIG5vdCBmaWxsaW5nIHVwIGxwVGl0bGUgaWYgbHBGaWxlIGRpZG4ndAoJY29udGFpbiAnLycsJ1xcJyBvciAnOicuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUZpeGVkIGEgcG90ZW50aWFsIGNyYXNoIGlmIGEgdXNhYmxlIHZpZGVvIG1vZGUgaXMgbm90IGRldGVjdGVkLgoKCSogdG9vbHMvbWFrZV9hdXRob3JzOiBTY3JpcHQgdG8gZ2VuZXJhdGUgYXV0aG9ycyBmaWxlcwoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCVN0dWJzIGZvciBJRGlyZWN0SW5wdXRFZmZlY3QgYW5kIElEaXJlY3RJbnB1dERldmljZTJBIG1ldGhvZHMsCglhcyB3ZWxsIGFzIEFkZFJlZigpLCBHZXRDYXBhYmlsaXRlcygpLCBFbnVtT2JqZWN0cygpLAoJR2V0UHJvcGVydHkoKSwgR2V0T2JqZWN0SW5mbygpLCBHZXREZXZpY2VJbmZvKCksIEluaXRpYWxpemUoKSwKCWFuZCBSdW5Db250cm9sUGFuZWwoKSBmb3IgSURpcmVjdElucHV0RGV2aWNlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCVNldCB3aW5kb3cgZm9jdXMgaW4gIF9jb21tb25fSURpcmVjdERyYXdfU2V0RGlzcGxheU1vZGUoKS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglBY2NlcHQgTUNJX09QRU4gYW5kIE1DSV9DTE9TRSBtZXNzYWdlcyBpbiBNQ0lDREFVRElPX0RyaXZlclByb2MzMigpLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgZGVmZXJyZWQgRXhwb3NlIGV2ZW50cyBoYW5kbGluZy4KCgkqIHdpbmRvd3MvZGNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2xpcCBWaXNSZ24gYWdhaW5zdCBYIGRlc2t0b3AuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZE1vZHVsZTMyL1dpbkV4ZWMzMiBzaG91bGQgcmV0dXJuIDE2LWJpdCBoSW5zdGFuY2UvaFRhc2suCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU2FuaXR5IGNoZWNrIG9uIGZvbnQgc2l6ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIHBhcmVudGhlc2VzIGFkZGVkLgoKV2VkIERlYyAgOSAxNjozNzowNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3Rhc2suYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuaGFuY2VkIFdpbjMyIENvbnNvbGUgKFhURVJNKQoJLSBpbnB1dGhhbmRsaW5nIGVuaGFuY2VkIChrZXlzIGFuZCBtb3VzZWNsaWNrcykKCS0gd2luMzIgc3luY2hyb25pemF0aW9uIChwYXJ0aWFsKQoJLSBsb3RzIG9mIGVuaGFuY2VtZW50cyB0byBkcmF3aW5nIGZ1bmN0aW9ucwoJLSBzaW1wbGUvY29tcGxleCBjb25zb2xlIChzaW1wbGUtc3RkaW4vc3Rkb3V0IC0+IGNvbXBsZXgteHRlcm0pLgoKCSogY29uc29sZS9NYWtlZmlsZS5pbiwgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBjb25zb2xlL3h0ZXJtLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgYSBkcml2ZXIgdG8gb3BlbiB1cCBhIG5ldyB4dGVybSB3aW5kb3cgd2hlbmV2ZXIgY29uc29sZSBvdXRwdXQgaXMKCW5lZWRlZC4gRGVyaXZlZCBmcm9tIGNvbnNvbGUvd2luMzIuYyBidXQgd2UgYXJlIG5vdCB5ZXQgcmVhZHkgdG8gbWVyZ2UKCXRoZSBjb2RlIGNvbXBsZXRlbHkuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5kb3dzLmgsIHRvb2xzL2ZudDJiZGYuYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJSW1wcm92ZWQgdGhlIGhhbmRsaW5nIG9mIGZvbnQgZW5jb2RpbmdzLgoKCSogbXNkb3MvZHBtaS5jLCBpbmNsdWRlL21pc2NlbXUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBEUE1JIFJNQ0JzIHVzaW5nIHRoZSBET1Mgc3Vic3lzdGVtLCBhbmQgYSBmZXcgb3RoZXIKCWltcHJvdmVtZW50cy4gQWxzbywgc29tZSBzcGVjaWFsLWNhc2VkIHNob3J0Y3V0IHBhdGhzIHdpbGwgYWxsb3cgc29tZQoJY29tbW9uIHJlYWwtbW9kZSBjYWxsL1JNQ0IgY29tYmluYXRpb25zIHRvIHdvcmsgZXZlbiB3aXRob3V0IGNhbGxpbmcgdGhlCglET1Mgc3Vic3lzdGVtLCB0aHVzIGxldHRpbmcgQVBJcyBsaWtlIERPU0FTUEkgd29yayB3aXRob3V0IGFueSBkaXJ0eSBoYWNrcwoJZXZlbiBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgdXNlIGRvc21vZC4KCgkqIG11bHRpbWVkaWEvdGltZS5jLCBvbGUvY29tcG9iai5jLCBmaWxlcy9jaGFuZ2UuYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1pc2MvbWFpbi5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlIGFuZCBtZXNzYWdlcyByZW1vdmVkLgoKCSogb2xlL29sZTJubHMuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSBzbWFsbCBjb3JyZWN0aW9ucyB0byBFbnVtU3lzdGVtTG9jYWxlczMyQVcKClR1ZSBEZWMgIDggMTU6MDY6MzkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBncmFwaGljcy9kZHJhdy5jOgoJVHJpZWQgYW5vdGhlciBrbHVkZ2UgZm9yIHRoZSBYbWQuaCBwcm9ibGVtLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUFkZGVkIGZ1bGxzY3JlZW4gREdBIHN1cHBvcnQuCgoJKiBtaXNjL21haW4uYzogUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglGaXhlZCBkdW1teSBlbnRyaWVzIGluIE1BSU5fUGFyc2VMYW5ndWFnZU9wdGlvbigpLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IE1DSV9DREFfU1RBVFVTX1RZUEVfVFJBQ0suCglGaXggYW4gb2ZmLWJ5LW9uZSBidWcgd2l0aCBNQ0lfU1RBVFVTX0xFTkdUSC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwZXJmbG91cyBXSU5BUEkgcmVtb3ZlZC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcm4gYWJvdXQgaW52YWxpZCBlbnRyeXBvaW50cyAoY3JlYXRlZCBieSB2aXJ1c2VzKSB3aGljaCByZXN1bHQgaW4KCVdpbmUgY3Jhc2hlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIFgxMSBwYWxldHRlIG9uIERpcmVjdERyYXdTdXJmYWNlOjpTZXRQYWxldHRlLCBub3QgYmVmb3JlICh3ZQoJbWlnaHQgbm90IGhhdmUgYW4gWDExIHdpbmRvdyB5ZXQpLgoKCSogbG9hZGVyL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIFRXRUFLX0luaXQgZnJvbSBVU0VSIHRvIEdESUluaXQuCgoJKiBncmFwaGljcy9wYWludGluZy5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBtaXNjL3ByaW50ZHJ2LmMsIG1pc2Mvc3Bvb2xlci5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBmb3IgU2V0QWJvcnRQcm9jMTYsIHN0dWIgZm9yIFNldEFib3J0UHJvYzMyIGFuZCB0aWR5IHVwIHNvbWUgb3RoZXIKCXByaW50aW5nIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZm9jdXMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggaW5jbHVkZXMuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggWDExRFJWX0V4dFRleHRPdXQgZm9yIHJvdGF0ZWQgdGV4dCBpZiBlaXRoZXIgb2YgbHBEeCwgYnJlYWtFeHRyYQoJb3IgY2hhckV4dHJhIGFyZSBub24temVyby4KCgkqIGluY2x1ZGUvQXR0aWMvZ3JhcGhpY3MuaCwgbWlzYy9zaGVsbC5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVwbGFjZSBHUkFQSF8gZnVuY3Rpb25zIHdpdGggV2luIFNESyBlcXVpdmFsZW50cy4KCk1vbiBEZWMgIDcgMTY6MjM6NDIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCVJldmVydGVkIHByZXZpb3VzIHBhdGNoLgoKCSogaW5jbHVkZS9kb3NleGUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBkZWZpbmUgTVpfU1VQUE9SVEVEIG9uIG5vbi1pMzg2IHBsYXRmb3Jtcy4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBEUE1JX0NhbGxSTVByb2MgKEkgdGhpbmspLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIE5QU0dldFByb3ZpZGVySGFuZGxlQS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCVRoZSBzY2FuY29kZSBXaW5kb3dzIHNlbmQgZm9yIGV4dGVuZGVkIGtleXMgaXMgdGhlIHNjYW5jb2RlIG9mIHRoZQoJdW5leHRlbmRlZCBlcXVpdmFsZW50IG9mIHRoZSBrZXksIHBsdXMgdGhlIGV4dGVuZGVkIGZsYWcuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhIHJlYWwgbW9kZSBwcm9ibGVtLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTkVfTU9EVUxFLnN0YWNrX3NpemUgd2FzIHNldCB0byBhIHJpZGljdWxvdXNseSBzbWFsbCB2YWx1ZSBvZiA1LgoJV2luZG93cyBzZXRzIDB4MTQwMCBpbiBzdWNoIGNhc2VzIGZvciBwcm9ncmFtcy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVdlIGRvbid0IHlldCB3YW50IHRoZSBzdGF0aWMgY29udHJvbCB0byBjYWxsIERlc3Ryb3lJY29uLgoKCSogd2luZG93cy9jbGFzcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUFkZGVkIGNhc2UgZm9yIEdDV19BVE9NIGludCBHZXRDbGFzc0xvbmczMkEuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzogR2FlbCBkZSBDaGFsZW5kYXIgPGdhZWxAbGltc2kuZnI+CglTdHViIGZvciBXTmV0T3BlbkVudW0zMlcuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jLCByZWxheTMyL2Rzb3VuZC5zcGVjOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCU1vcmUgZ2VuZXJhbCBjb2RlIGNsZWFudXAgZm9yIHJlYWRhYmlsaXR5LgoJQSBmZXcgbW9yZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBjaGVja3MuCglSZXR1cm4gRFNfT0sgcmF0aGVyIHRoYW4gMCBpbiBhIG51bWJlciBvZiBmdW5jdGlvbnMuCglGaXhlZCBwcmltYXJ5IGJ1ZmZlciByZWYgY291bnQgYnVnIGluIENyZWF0ZVNvdW5kQnVmZmVyKCkuCglIYW5kbGUgMS0zIGJ5dGUgc291bmQgZnJhZ21lbnRzIHRoYXQgd291bGQgY2F1c2UgYnVmZmVyIG92ZXJydW5zLgoJQ2xlYXIgcHJpbWFyeSBidWZmZXIgd2l0aCBhIG5ldXRyYWwgdmFsdWUgaW5zdGVhZCBvZiBhbHdheXMgMAoJKGJlY2F1c2UgMTI4IGlzIG5ldXRyYWwgZm9yIDgtYml0IHNvdW5kKS4KCUZpeCBidWcgd2l0aCBtaXhpbmcgOC1iaXQgc291bmQgaW50byB0aGUgcHJpbWFyeSBidWZmZXIuCglCcm9rZSBvdXQgdGhlIG1haW4gYmxvY2sgaW4gRFNPVU5EX3RocmVhZCgpIHRvIGFub3RoZXIgZnVuY3Rpb24gZm9yCglyZWFkYWJpbGl0eS4KCUhhbmRsZSAibm8gYXVkaW8iIGFuZCAiYXVkaW8gYnVzeSIgY2FzZXMgcHJvcGVybHkgd2hlbiBpbml0aWFsaXppbmcKCWRzb3VuZC4gUmVuYW1lIERsbENhblVubG9hZE5vdygpIHRvIERTT1VORF9EbGxDYW5VbmxvYWROb3coKS4KCgkqIGRlYnVnZ2VyL2hhc2guYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHZhcmlhYmxlcyBvcHRpbWl6ZWQgaW50byByZWdpc3RlcnMgYWNjZXNzaWJsZS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUaGUgc3BlYyBkZWZpbml0aW9uIGZvciBNb25pdG9yRnJvbVdpbmRvdyB3YXMgd3JvbmcuCgoJKiBtc2Rvcy9pbnQyMS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUZpbGUgaGFuZGxlIGJ1ZyBmaXguCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHBhcmFncmFwaCBhYm91dCBkaWZmZXJlbnQgZGxsIHZlcnNpb25zIGFuZCBzdHJ1Y3R1cmUgc2l6ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBtaXNzaW5nIFRPT0xJTkZPIHN0cnVjdHVyZS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgYSBoZWFwIGJ1Zy4KCgkqIGxvYWRlci90YXNrLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9jYWxsYmFjay5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL3Z4ZC5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvd2luZG93cy5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBTZXZlcmFsIGtlcm5lbC5zcGVjIHJldHVybiB0eXBlIG1pc21hdGNoIGZpeGVzCgktIFtHU11ldFNlbGVjdG9yQmFzZSBXaW4zMnMgb2Zmc2V0IHN1cHBvcnQgYnkgVWxyaWNoIFdlaWdhbmQgKHRoYW5rcyB2Lm0uICEhKQoJLSBNb3ZlIEFwcFRvV2luZS9XaW5lVG9BcHAgbWFjcm9zIGFzIFczMlNfQVBQMldJTkUgZXRjLiB0byBsZHQuaAoJLSBMb2NhbE5vdGlmeSgpIGJhc2ljIHN1cHBvcnQKCS0gRml4ZXMgZm9yIGxvY2FsIGhlYXAgaGFuZGxpbmcgd2l0aCBoZWFwIGhhbmRsZXMgY3JlYXRlZCBieSBWaXJ0dWFsKigpCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAtbWljcm9zb2Z0LXN5bWJvbCBlbmNvZGluZyB3YXMgbm90IHJlY29nbml6ZWQuCgoJKiB3aW5kb3dzL3dpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogV0lOX1Jlc2V0UXVldWVXaW5kb3dzIHdvdWxkIHNraXAgc29tZSB3aW5kb3dzLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyByZWN1cnNpdmVseSByZWVudGVyaW5nIENBTEwzMl9MYXJnZVN0YWNrLgoKCSogaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvLmN2c2lnbm9yZSwgd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRoZSBuZXcgVFRZIGRyaXZlci4KCgkqIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBtb3JlIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCgpUaHUgRGVjICAzIDE2OjI5OjU2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyOS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglDYWxsIHRoZSBuZXcgY29uc29sZSBkcml2ZXIgZm9yIHNvbWUgcm91dGluZXMuIFRoaXMgaXMgbm90IGNvbXBsZXRlbHkKCWRvbmUgeWV0IGFuZCBtb3JlIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgoKV2VkIERlYyAgMiAxOTo1ODowOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBjb25zb2xlLy5jdnNpZ25vcmUsIGNvbnNvbGUvTWFrZWZpbGUuaW4sIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgY29uc29sZSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvbWFpbi5jLCBvYmplY3RzL0F0dGljL29lbWJpdG1hcC5jLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZSBPRU0gcmVzb3VyY2VzIHRvIHRoZSB4MTFkcnYuCgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglPcGVuaW5nIGEgZmlsZSBpbiBhIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHJldHVybnMKCUVSUk9SX0ZJTEVfTk9UX0ZPVU5EIGluc3RlYWQgb2YgRVJST1JfUEFUSF9OT1RfRk9VTkQuCgoJKiBtZW1vcnkvYXRvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBhdG9tcyAiIyBub24gbnVtYmVyIiAob3JhY2xlIGNsaWVudCkuCgpUdWUgRGVjICAxIDE2OjIzOjE5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1pc2MvZXJyb3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVuYW1lZCBLRVJORUwuMzI3IHRvIEhhbmRsZVBhcmFtRXJyb3IgKGFzIGluICdVbmRvYy4gV2luZG93cycpLgoJRml4ZWQgd3Jvbmcgb3JkaW5hbHMvcHJvdG90eXBlIGZvciBNYXBQcm9jZXNzSGFuZGxlL0dldE1vZHVsZUZpbGVOYW1lMzIuCglBZGRlZCBuYW1lcyBmb3Igc29tZSB1bmRvY3VtZW50ZWQgZXhwb3J0cy4KCgkqIG1lbW9yeS9nbG9iYWwuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEdsb2JhbENoYW5nZUxvY2tDb3VudCAoS0VSTkVMLjM2NSkuCgoJKiBpZjE2MzIvdG9vbGhlbHAuc3BlYywgaW5jbHVkZS90b29saGVscC5oLCBtZW1vcnkvaGVhcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBMb2NhbDMySW5mbywgc3R1YnMgZm9yIExvY2FsMzJGaXJzdC9OZXh0IChLRVJORUwuNDQ0LTQ0NikuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEdkaUZyZWVSZXNvdXJjZXMgKEdESS42MDkpLgoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzoKCVJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglGaXhlZCA4LWJpdCBXQVYgZm9ybWF0IGhhbmRsaW5nIChpdCBpcyB1bnNpZ25lZCBkYXRhKS4KCUZpeGVkIG9mZi1ieS1vbmUgY2hlY2tzIGZvciBidWZmZXIgd3JhcC4KCUluY3JlbWVudCByZWYgY291bnQgZm9yIHByaW1hcnkgYnVmZmVyIGluIENyZWF0ZVNvdW5kQnVmZmVyKCkuCglBZGRlZCBEU0JQTl9PRkZTRVRTVE9QIHN1cHBvcnQgdG8gcG9zaXRpb24gbm90aWZpY2F0aW9uIGNvZGUuCglMb3RzIG9mIG1pbm9yIHBhcmFtZXRlciB2YWxpZGF0aW9uIGNoZWNrcy4KCVN0dWJzIGZvcjogSURpcmVjdFNvdW5kX2luaXRpYWxpemUoKSwgSURpcmVjdFNvdW5kX0NvbXBhY3QoKSwKCWFuZCBJRGlyZWN0U291bmRfR2V0U3BlYWtlckNvbmZpZygpLgoJRml4ZWQgZnJlcSBzaGlmdGluZyB3aXRoIDE2LWJpdCBkYXRhIHByb2JsZW0sIGZpeGVkIDhiaXQ8LT4xNmJpdAoJY29udmVyc2lvbi4KCUxvdHMgb2YgdGhyZWFkIGxvY2tpbmcgZm9yIERpcmVjdFNvdW5kIGJ1ZmZlcnMuCglEZWFsbG9jIHByaW1hcnkgYnVmZmVyIHdoZW4gZHNvdW5kIGlzIGRlYWxsb2NhdGVkLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGhlIFRFWFQoKSBhbmQgTUFLRUxSRVNVTFQoKSBkZWZpbml0aW9ucy4KCgkqIHdpbmRvd3MvcXVldWUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBjaGFuZ2UuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJUmV2ZXJ0IG1pc2d1aWRlZCBjaGFuZ2UgdG8gaW5zdGFsbF9saWIgdGhhdCBicm9rZSAtZGlzYWJsZS1saWIKCWNvbmZpZ3VyZSBvcHRpb24uCgoJKiBtaXNjL21haW4uYywgaW5jbHVkZS93aW5kb3dzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBwYXJhbWV0ZXIgU1BJX0dFVERSQUdGVUxMV0lORE9XLgoJT25lIG1pc3NpbmcgYnJlYWsgaW4gU1BJX0dFVERSQUdGVUxMV0lORE9XLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbnMgSUxHbG9iYWxDbG9uZS9JTEdsb2JhbEZyZWUuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGQgYSBub3RlIGFib3V0IFdpblByaW50ZXJzLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCByZWxheTMyL29sZTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgc3R1YnMsIHNvbWUgcHRyLT5zdHIgY29udmVyc2lvbnMuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3LmgsIHJlbGF5MzIvZGRyYXcuc3BlYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBkZWZpbml0aW9uIG9mIERpcmVjdERyYXdDcmVhdGVDbGlwcGVyLgoJLSBtb3JlIHZlcnNhdGlsZSBzdXBwb3J0IG9mIHN1cmZhY2VzIC8gYmV0dGVyIHN1cmZhY2UgZGVzY3JpcHRpb24gc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3cm9uZyBwYXJhbWV0ZXIgY291bnQgZm9yIFNIQ2hhbmdlTm90aWZ5RGVyZWdpc3RlciwgIFNIRnJlZVVudXNlZExpYnJhcmllcy4KCU5ldyBmdW5jdGlvbnMgUGFyc2VGaWVsZCwgR2V0L1NldEluc3RhbmNlRXhwbG9yZXIoKSwgUGF0aElzVU5DLCBQYXRoSXNSZWxhdGl2ZS4KCVN0dWJzIFNIV2FpdEZvckZpbGVUb09wZW4sIFBhdGhGaW5kT25QYXRoLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBjaGFuZ2VzIHRvIHByaW50IHRoZSBzdHJpbmdzIGluIHRoZSByZWxheS10cmFjZS4KCgkqIHdpbmRvd3MvY2xhc3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglUaGUgY2xhc3MgbmFtZSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBnZXRwdHIuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkvc3RhdHVzIHJlY292ZXJ5IHdoZW4gZXJyb3Igb2NjdXJlZCBpbiBNSURJX21jaU9wZW4uCglGaXhlZCBzdXBwb3J0IGZvciBSTUlEIGZpbGVzIGluIE1JRElfbWNpT3Blbi4KCUZpeGVkIGJ1ZyBmb3IgcGxheWluZyBNSURJIGZpbGVzIHdpdGggdGVtcG8gY2hhbmdlcy4gU291bmQgb3V0cHV0IGlzCglub3cgY29ycmVjdCwgYnV0IGxlbmd0aCBvZiB0cmFja3MgKGFuZCB0aGVyZWZvcmUgb2Ygd2hvbGUgZmlsZSkgaXMgbm90Cgljb3JyZWN0LgoJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgKElOVEVSTkFMID0+IElOVkFMSURfRklMRSkgd2hlbiBmaWxlIGNhbm5vdCBiZSByZWFkLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5L3N0YXR1cyByZWNvdmVyeSB3aGVuIGVycm9yIG9jY3VyZWQgaW4gV0FWRV9tY2lPcGVuLgoJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgKElOVEVSTkFMID0+IElOVkFMSURfRklMRSkgd2hlbiBmaWxlIGNhbm5vdAoJYmUgcmVhZC4KCgkqIG11bHRpbWVkaWEvbXN2aWRlby5jLCByZWxheTMyL21zdmZ3MzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIE1DSVduZENyZWF0ZVtBfFddLgoKCSogbWlzYy92ZXIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglWZXJRdWVyeVZhbHVlLCBidWdmaXg6IHdlIGNhbnQgY29udmVydCBiaW5hcnkgZGF0YSB3aXRoCglIRUFQX3N0cmR1cFd0b0EgKFxWYXJGaWxlSW5mb1xUcmFuc2xhdGlvbikuCgpNb24gTm92IDMwIDE3OjQxOjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbjMyL2FkdmFwaS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgRW51bVNlcnZpY2VTdGF0dXMzMiwgc21hbGwgY2hhbmdlcy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWQgbm93IHRoZSBmaXJzdCBpY29uIGZyb20gdGhlICouYW5pIGZpbGUgaW5zdGVhZCBvZiBjcmFzaGluZy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCB3YXJuaW5ncyBpbiBtaXNjZW11L21haW4uYy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRlZCBzb21lIGRlZmluZXMgYXJvdW5kIHRoZSBDb21tUG9ydCAoUFVSR0VfWFhYIGFuZCBNU19YWFhfT04pCgktIGFkZGVkIHRoZSBETEdURU1QTEFURSBhbmQgRExHSVRFTVRFTVBMQVRFIHN0cnVjdHVyZXMKCS0gYWRkZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIFN0YXJ0UGFnZSxFbmRQYWdlLEdldENvbW1NYXNrLAoJCUdldENvbW1Nb2RlbVN0YXR1cyBhbmQgUHVyZ0NvbW0sV2FpdENvbW1FdmVudC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFBhdWwgUXVpbm4gPFBhdWxRQGNvcmVsLmNvbT4KCUZpeGVkIGFjdGl2YXRpb24vRm9jdXMgbWVzc2FnZSBvcmRlciBwcm9ibGVtIHdoZW4gY3JlYXRpbmcgYSBuZXcgSFdORC4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgQ2hpbGRXaW5kb3dGcm9tUG9pbnRFeCBmdW5jdGlvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUZpeGVkIHJlZ2lzdHJ5IHF1ZXJ5IGVycm9yIHZhbHVlOiBub3cgcmV0dXJucyBFUlJPUl9GSUxFX05PVF9GT1VORC4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0U3lzdGVtUGFsZXR0ZUVudHJpZXMgcmV0dXJucyBwYWxldHRlIHNpemUgaWYgZW50cmllcz09TlVMTC4KCVVzZSB0aGlzIGluc3RlYWQgb2YgQ09MT1JfR2V0U3lzdGVtUGFsZXR0ZVNpemUuCgoJKiByZWxheTMyL2Rzb3VuZC5zcGVjLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBjbGFzcyBmYWN0b3J5IGZvciBkc291bmQuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIG1pc2MvY29tbS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBmaXhlZCBhIG1pbmltYWwgZXJyb3IgaW4gR2V0Q29tbU1hc2sgZGVmaW5pdGlvbi4KCS0gYWRkcyBzdHVicyBmb3IgR2V0Q29tbU1vZGVtU3RhdHVzIGFuZCBXYWl0Q29tbUV2ZW50LgoKCSogaW5jbHVkZS94bWFsbG9jLmgsIGxpYnJhcnkvd2luZXN0dWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVzIGZvciBDKysgV2luZWxpYiBjb21waWxhdGlvbi4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQnVnZml4OiBzZWNvbmQgUmVnT3BlbktleSBzaG91bGQgdXNlIENMU0lEa2V5IGluc3RlYWQgb2YgSEtFWV9DTEFTU0VTX1JPT1QuCgpGcmkgTm92IDI3IDE2OjA2OjA4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBCVUdTLCBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRml4ZWQgJ21ha2UgaW5zdGFsbCcgdG8gcmVhbGx5IGNoZWNrIGZvciBsaWJ3aW5lLmEgYmVmb3JlIGluc3RhbGxpbmcKCWl0LgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jOgoJU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglBZGRlZCBhIG5ldyBjbWRsaW5lIHN3aXRjaCB0byBkaXNhYmxlIFhGODYgREdBIEV4dGVuc2lvbnMsIC1ub2RnYS4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUltcHJvdmVkIEdldERpc2tGcmVlU3BhY2UzMkEoKS4KClRodSBOb3YgMjYgMTY6MzI6MDAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVtb3ZlIGluY2x1ZGVkIGNvbG9yLmguCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgdW5uZWNlc3NhcnkgY2hlY2sgZm9yIGVudHJ5cG9pbnQgYWRkcmVzcyAodGVzdCBiaW5hcnkgd2FzCglpbmZlY3RlZCBieSBhIHZpcnVzIHdoaWNoIHVzZXMgaW52YWxpZCBQRSBsb2FkaW5nIHN0dWZmKS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWJzIGZvciBTdGFydHBhZ2UgYW5kIEVuZFBhZ2UuCgoJKiBpZjE2MzIvdGh1bmsuYywgb2JqZWN0cy9kYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgRklYTUUgb3V0cHV0cy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjYwMiBhbmQgc3R1YiBmb3IgS0VSTkVMLjQ5MC4KCgkqIG9sZS9vbGUybmxzLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEbyAqbm90KiB6ZXJvIG91dCBvdXRwdXQgYnVmZmVyIGluIEdldE51bWJlckZvcm1hdDMyW0FXXS4KCldlZCBOb3YgMjUgMTg6MTU6NTMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9ubHMvZ3JjLm5scywgb2xlL25scy9za3kubmxzLCBvbGUvbmxzL3RoYS5ubHMsIG9sZS9ubHMvdHJrLm5scywgb2xlL29sZTJubHMuYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJU21hbGwgZml4ZXMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIC4uLlJlc291cmNlMTYgcm91dGluZXMgdG8gbG9hZGVyL3Jlc291cmNlLmMuCglJbXBsZW1lbnRlZCBhY2Nlc3NpbmcgUEUtZmlsZSByZXNvdXJjZXMgd2l0aCAxNi1iaXQgcmVzb3VyY2Ugcm91dGluZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgUEUtPk5FIHJlc291cmNlIGNvbnZlcnNpb24gcm91dGluZXMgKEtFUk5FTC42MTUtNjE4KS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvb2xlMmRpc3AuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgMyBtZXRob2RzOiBTeXNBbGxvY1N0cmluZ0xlbigpLCBTeXNSZUFsbG9jU3RyaW5nTGVuKCkKCWFuZCBTeXNTdHJpbmdMZW4oKS4gRW5zdXJlIHRoYXQgdGhlIEJTVFIgb2JqZWN0cyB3ZXJlIGFsbG9jYXRlZAoJYWNjb3JkaW5nIHRvIHRoZSBXaW5kb3dzIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgZXhpc3RpbmcgcGF0aCAtIGZ1bmN0aW9ucyB0byBzaGVsbHBhdGNoLmMuCglOZXc6IFBhdGhSZW1vdmVCbGFua3MzMkF8VywgIFBhdGhNYXRjaFNwZWMzMkF8VywKCVBhdGhTZXREbGdJdGVtUGF0aDMyQXxXLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgZXhpc3RpbmcgSVNoZWxsTGluayBjbGFzcy4gTmV3IHN0dWJzIGZvciBJU2hlbGxMaW5rVy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgaW5jbHVkZS94MTFmb250LmgsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy93aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBYX0RDX0lORk8gZnJvbSBEQyBhbmQgbWFrZSBpdCBiZWhhdmUgbGlrZSBhbnkgb3RoZXIgUERFVklDRS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL3htcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2VkIENUWF9TRUdfT0ZGX1RPX0xJTiB0byBhbGxvdyBsaW5lYXIgYWRkcmVzc2VzIGluIDMyLWJpdAoJcmVnaXN0ZXJzICh1c2VkIGJ5IERldmljZUlvQ29udHJvbCkuIEFkYXB0ZWQgYWxsIHVzZXJzLgoKCSogaW5jbHVkZS93aW5pb2N0bC5oLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgKG1vc3QpIFZXaW4zMi5WeEQgRGV2aWNlSW9Db250cm9sIHJvdXRpbmVzLgoKVHVlIE5vdiAyNCAyMDo0NzoxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNldCB0aGUgVEVCRl9XSU4zMiBmbGFnIGluIHRlYi5mbGFncyBmb3IgMzItYml0IHRocmVhZHMuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ2FsbCBJbml0VGhyZWFkSW5wdXQgaW4gR2V0RmFzdFF1ZXVlIHdpdGggY29ycmVjdCBwYXJhbWV0ZXIKCWZvciAzMi1iaXQgcXVldWVzLgoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFtRRl1UX1RodW5rIHNob3VsZCBjbGVhciBISVdPUkQoRUFYKSBvbiByZXR1cm4uCglCdWdmaXg6IGhhY2sgZm9yIHN0dXBpZCBVU0VSMzIgQ2FsbGJhY2tHbHVlTFMgcm91dGluZSBpbiBDb21tb24zMlRoa0xTLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBCYWQganVtcCBnZW5lcmF0ZWQgaW4gVEhVTktfQWxsb2NMU1RodW5rbGV0LgoJQnVnZml4OiBGb3Jnb3QgdG8gY29udmVydCBzZWdwdHIgaW4gQWxsb2NMU1RodW5rbGV0Q2FsbGJhY2tFeC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBFcmljIFdhcm5rZSA8ZXJpY0Bzbm93bW9vbi5jb20+CglEb24ndCBtYXRjaCBhZ2FpbnN0IFN5bWJvbCBvciBOaWwgZm9udHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJUmV0dXJuIHRoZSAiYnVmZmVycyIgYW5kICJjYWNoZWQiIG1lbW9yeSBhcyBmcmVlIHNpbmNlIGl0IGlzCglkZWFsbG9jYXRlZCB3aGVuIGEgcHJvZ3JhbSBuZWVkcyBpdCBhbnl3YXkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4OiBTZXREbGdJdGVtVGV4dDMyIHJldHVybnMgQk9PTCBub3Qgdm9pZC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgR2V0VXNlck9iamVjdEluZm9ybWF0aW9uQXxXLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbGVmdCBvdmVyICdzaG93JyBhbmQgdXNlbGVzcyBkZWFkYmVlZiBjaGVja2luZyB3aGljaCBkb2Vzbid0Cgl3b3JrLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRqdXN0IGJyb2tlbiBlbnRyeXBvaW50IGFkZHJlc3Nlcy4gKHdpbjk4IG5vdGVwYWQuZXhlKQoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIGFjY29yZGluZyB0byBkZXZlbG9wbWVudC4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgbmV3IHN0dWJzIChtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucywgc29tZSBtY2kgZnVuY3Rpb25zLCBhbmQKCXNvbWUgbW1pbyBmdW5jdGlvbnMpLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgTUNJIHBhcnQgdG8gbWNpbWlkaS5jIDsgYWRkZWQgRHJpdmVyUHJvYy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBNQ0kgcGFydCB0byBtY2l3YXZlLmMgOyBhZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgYWRkZWQKCURyaXZlclByb2MKCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWNpbWlkaSBhbmQgbWNpd2F2ZS4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kIDsgZml4ZWQgcGF1c2UvcmVzdW1lIGNvbW1hbmRzIDsgZml4ZWQKCXNlZWsgY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0aW5nIHdyaXRpbmcgTUNJIHBhcnQgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBzdHVicyBpbiAzMiBiaXQgcGFydC4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlIGhhbmRsaW5nIGluIG1tc3lzdGVtLmMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG5ldyBmdW5jdGlvbnMvc3RydWN0dXJlcyBkZWZpbml0aW9ucy4oSSBjb3VsZG4ndCBnZXQgYWxsCgl0aGUgbWFuaWZlc3QgY29uc3RhbnRzIHZhbHVlcyB0aGF0IE1TIHdhcyByZWZlcnJpbmcgdG8gaW4gaXRzIHNwZWNzLi4uCglpZiBzb21lb25lIGhhcyB0aGVtLi4uKQoKCSogbXVsdGltZWRpYS9tY2lhbmltLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZSBoYW5kbGluZwoJaW4gbW1zeXN0ZW0uYyA7IGZpeGVkIGJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgbWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlCgloYW5kbGluZyBpbiBtbXN5c3RlbS5jLgoJQWRkZWQgV2luOTUgY29tbWFuZCB0byBoYW5kbGUgY2Qtcm9tIHdpdGggYm90aCBkYXRhIGFuZCBhdWRpbyA7IGZpeGVkCglidWcgaW4gTUNJX0lORk8gY29tbWFuZCA7IHNoYWRvd2luZyBNQ0kgc3RhdHVzIGZvciBkZXZpY2VzIHRoYXQgY2FuJ3QKCWdldCBjdXJyZW50IHN0YXR1cyA7IGZpeGVkIHN0YXR1cyBub3QgYmVpbmcgdXBkYXRlZCBvbiBjZCBjaGFuZ2UuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRmFjdG9yaXplZCAxNi8zMiBiaXQgTUNJIGZ1bmN0aW9uIGJ5IHVzaW5nICBtZXNzYWdlIG1hcHBpbmcgZnJvbSAxNgoJdG8gMzIgYml0cyA7IGFkZGVkIHNvbWUgbmV3IHByb3RvdHlwZXMgbWNpU2VuZENvbW1hbmQsIG1jaVNlbmRTdHJpbmcsCgltY2koU2V0L0dldClZaWVsZFByb2MgOyBzdGFydGVkIHdyaXRpbmcgbWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMgLSBub3QKCXlldCB3b3JraW5nLiBGaXhlZCBzb21lIGlzc3VlcyByZWdhcmRpbmcgYXN5bmNocm9ub3VzIE1DSSBjb21tYW5kcyA7CglmaXhlZCBNQ0lfU1lTSU5GTyBjb21tYW5kLgoKCSogcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHF1aXJrcy4KClN1biBOb3YgMjIgMTg6Mjk6NTAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9uOiBfSUxHZXRFeHRlbnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLiBIS0VZX0NMQVNTRVNfUk9PVCBoYW5kbGluZy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlZC4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvaGVhZGVyLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvcmViYXIuaCwgaW5jbHVkZS9zdGF0dXMuaCwgaW5jbHVkZS90b29sYmFyLmgsIGluY2x1ZGUvdG9vbHRpcHMuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBVbmljb2RlIHN1cHBvcnQgKGF0IGxlYXN0IHBhcnRpYWxseSkuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9jb21wb2JqLmMsIG9sZS9vbGVvYmouYywgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBJT2xlQWR2aXNlSG9sZXIgaW50ZXJmYWNlIChzdGlsbCBhIGR1bW15KSBhbmQgZml4ZWQKCUNyZWF0ZU9sZUFkdmlzZUhvbGRlcigpLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgZ2xvYmFsIHN1YmNsYXNzaW5nIGF0b20sIHVzZWQgYnkgdG9vbHRpcHMgYW5kIHVwZG93biAobm90IHlldCkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBsYXlvdXQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBJbWFnZUxpc3RfTG9hZEltYWdlKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIENNRU1fU0VUSVRFTTMyQSBhbmQgbWVzc2FnZSBmb3J3YXJkaW5nIHRvIGNvbWJvYm94LgoKCSogb2xlL21vbmlrZXIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyZWF0ZUl0ZW1Nb25pa2VyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdW5kb2N1bWVudGVkIGZ1bmN0aW9uIG5hbWVzIGFuZCBpbXBsZW1lbnRlZCBEUEFfTWVyZ2UKCXBhcnRpYWxseS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRW5hYmxlZCBkb3VibGUgY2xpY2sgZm9yIGJ1dHRvbnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGNvbW1hbmQgYW5kIHJldHVybiBjb25zdGFudHMgdXNlZCBieSBXTV9OT1RJRllGT1JNQVQuCgoJKiBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9wZW4uYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZWQgRENfU2V0dXBHQyBmdW5jdGlvbnMgdG8gZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMuCgoJKiBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzIHRvIGdldCB0aGUgZGVmYXVsdCBsYW5ndWFnZSB0byBhIHNlbnNpYmxlIHZhbHVlLgoJVGhhbmtzIHRvIFBhYmxvLgoKCSogQU5OT1VOQ0UsIERFVkVMT1BFUlMtSElOVFMsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZG9jdW1lbnRhdGlvbiwgZG9jdW1lbnRhdGlvbi9ob3ctdG8tcG9ydCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCU1pc2NlbGxhbmVvdXMgc21hbGwgZml4ZXMuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBXaW4xNiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0UmVnaW9uRGF0YSgpLgoKCSogb2xlL3R5cGVsaWIuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRW5oYW5jZWQgT0FCdWlsZFZlcnNpb24oKSB0byByZXR1cm4gZGlmZmVyZW50IHZlcnNpb24gdmFsdWVzIGZvcgoJZGlmZmVyZW50IHdpbnZlcnMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBJTlQyMV9QYXJzZUZpbGVOYW1lSW50b0ZDQigpIGFuZCBzb21lIG90aGVyIHRoaW5ncyB0byBnZXQKCUNPTU1BTkQuQ09NIHdvcmtpbmcuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgbWlzc2luZyBlbnRyeSBmb3IgR2V0TnVtYmVyRm9ybWF0Vy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoZWNraW5nIGZvciBOVUxMLXBvaW50ZXIuCgoJKiBvbGUvbmxzL2ZyYS5ubHMsIG9sZS9ubHMvZnJiLm5scywgb2xlL25scy9mcmMubmxzLCBvbGUvbmxzL2ZybC5ubHM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJQmV0dGVyIE9MRSBzdXBwb3J0IGluIEZyZW5jaCBsYW5ndWFnZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50YXRpb24gb2YgQ3JlYXRlUHJvY2VzczMyVy4KCgkqIHdpbmRvd3MvZXZlbnQuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJUXVldWluZyBvZiBkZWZlcnJlZCBFeHBvc2UgZXZlbnRzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxCX0dFVFRFWFQ6IEhhbmRsZSBwYXNzZWQgTlVMTCBidWZmZXIuCgoJKiBjb250cm9scy9jb21iby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNCX0dFVFRFWFQ6IFVzZSBscEJ1ZmZlciBpbnN0ZWFkIG9mIGxwVGV4dCBmb3IgTEJfR0VUVEVYVDMyLCBoYW5kbGUgMAoJYnl0ZSBOVUxMIGJ1ZmZlci4KCgkqIG9sZS9ubHMvZnJzLm5scywgb2xlL25scy9za3kubmxzLCBvbGUvb2xlMm5scy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUdXJuIG1lZ2EgZG91YmxlIHN3aXRjaCBpbnRvIHN0YXRpYyB0YWJsZSAocmVkdWNlcyBjb21waWxlIHRpbWUpLgoKCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6IEFkZGVkIFJvYmVydCBSaWdncy4KCgkqIGluY2x1ZGUvZDNkLmg6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglpbmNsdWRlIGRkcmF3LmgsIHF1ZXN0aW9uYWJsZSBmaXggZm9yIHF1ZXN0aW9uYWJsZSBzdHJ1Y3QvdW5pb24KCWNvbnN0cnVjdCBpbiBNUydzIEQzRFZFQ1RPUiBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCU1vcmUgZmxhZ3MgKERpcmVjdFggNS4yKSwgRGlyZWN0U291bmQzRExpc3RlbmVyIGFuZAoJRGlyZWN0U291bmQzREJ1ZmZlciBzdHJ1Y3R1cmVzLCBpbmNsdWRlIHNvbWUgcmVxdWlyZWQgZmlsZXMKCSh3aW5kb3dzLmgsIGNvbXBvYmouaCwgYW5kIGQzZC5oKS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglEaXJlY3RTb3VuZDNETGlzdGVuZXIgYW5kIERpcmVjdFNvdW5kM0RCdWZmZXIgc3R1YnMsIG5ldyBtaXhlciBjb2RlLAoJcHJpbWFyeSBidWZmZXIgaXMgaW1wbGVtZW50ZWQgY2xvc2VyIHRvIHdoYXQgdGhlIFNESyBkb2NzIHNwZWNpZnksCglvdGhlciBTREsgZG9jdW1lbnRlZCBiZWhhdmlvdXIgZW5mb3JjZWQuIENvbXBsZXRlZCB0aGUgZGV2Y2FwcyBsaXN0LgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIHN0cmRhdGUsIHN0cnRpbWUuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiB0eXBvIGluIFNVbk1hcExTX0lQX0VCUF84IGxlYWQgdG8gc3RhY2sgY29ycnVwdGlvbi4KCgkqIG1pc2MvY29tbS5jOiBDbGlmZiBXcmlnaHQgPGNsaWZmQHNuaXBlNDQ0Lm9yZz4KCUZpeGVkIGEgbWFzayBzZXQsIGFuZCBvdGhlciBwYXJpdHkgc2V0dGluZyBidWdzIGZvciBzZXJpYWwgcG9ydHMuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IFZhc3VkZXYgTXVsY2hhbmRhbmkgPHZhc3VAdGVpbC5zb2Z0Lm5ldD4KCUFkZGVkIEJTREkgc2lnY29udGV4dCBkZWZpbml0aW9ucy4KCgkqIHdpbmRvd3MvY2xhc3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIHR5cG8uCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIG5vdyB1c2VsZXNzIFJFTEFZX1Nob3dEZWJ1Z21zZ3NSZWxheSBjaGVjay4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCByZWxvY2F0ZSB0aGUgcG9pbnRlcnMgaW4gdGhlIElNQUdFX1RIUkVBRF9MT0NBTF9TVE9SQUdFCglkaXJlY3RvcnksIGZvciB0aGV5IHNlZW0gdG8gYmUgcmVsb2NhdGVkIGJ5IHRoZSBzdGFuZGFyZCByZWxvY2F0aW5nCgltZWNoYW5pc20uIChFeHBsaWNpdGx5IGNoZWNrZWQgb25lIHByb2dyYW0gdXNpbmcgaXQpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXRoQWRkQmFja3NobGFzaCwgUGF0aFJlbW92ZUJhY2tzbGFzaDogYXJndW1lbnQgaXMgbm90IGNvbnN0YW50LgoKCSogd2luZG93cy93aW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayB3bmRQdHIgZm9yIE5VTEwuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJsdEZhc3Q6IEhvbm9yIGxQaXRjaCwgTG9jay9VbmxvY2sgc3VyZmFjZXMgKHhsaWIgbmVlZHMgdW5sb2NrIHRvIGRyYXcpLgoKCSogbWlzYy9zcG9vbGVyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCBNYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBsb2FkZXIvbWFpbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglUYWtlcyBwcmludCBzcG9vbGVyIGZ1bmN0aW9ucyBvdXQgb2Ygd2luMTZkcnYuCglBbGxvd3MgdGhlIFBvc3RTY3JpcHQgZHJpdmVyIHRvIGdvIGludG8gbGlid2luZS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHN0dWJzIGZvciB0d28gdW5kb2N1bWVudGVkIEdESSByb3V0aW5lcywgU2V0TWFnaWNDb2xvcnMgYW5kCglTZXRTb2xpZEJydXNoLiBUaGlzIGFsbG93cyBXaW45OCBuYXRpdmUgVVNFUiB0byBzdGFydCB1cC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJRml4ZWQgdGhlIERHQSBkZXRlY3Rpb24gY29kZSBpbiBkZHJhdy4gWW91IGRvbid0IG5lZWQgcm9vdCBhY2Nlc3MsCgloYXZpbmcgcit3IGFjY2VzcyB0byAvZGV2L21lbSBpcyBlbm91Z2guCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3LCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy93aW5nLmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlyZWN0RHJhdyBzdGF0dXMgdXBkYXRlZC4KCVVzZSBjb29wZXJhdGl2ZSB3aW5kb3cgZm9yIGRyYXdpbmcgaW4geGxpYiBpbXBsZW1lbnRhdGlvbiBpZiBwb3NzaWJsZS4KCVNsaWdodGx5IHJlc3RydWN0dXJlZCBJRGlyZWN0RHJhd1N1cmZhY2U6OkJsdCBzbyBpdCBkb2Vzbid0IGNyYXNoLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJTWljcm8gcGF0Y2ggZm9yIEFsdEdyIGtleSBvbiBnZXJtYW4ga2V5Ym9hcmRzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXMgZXJyb3IgaGFuZGxpbmcgKFNldExhc3RFcnJvcigpIGFuZCByZXR1cm4gdmFsdWUpLgoKCSogb2JqZWN0cy90ZXh0LmMsIGluY2x1ZGUvd2luZG93cy5oOiBHYWVsIGRlIENoYWxlbmRhciA8Z2FlbEBsaW1zaS5mcj4KCVBhcnRpYWxseSBjb21wbGV0ZSBHZXRUZXh0Q2hhcnNldEluZm8gYW5kIGNvcnJlY3RzIHJldHVybiB2YWx1ZXMgZm9yCgl0aGlzIGZhbWlseSBvZiBmdW5jdGlvbnMuCgpTdW4gTm92IDE1IDE4OjEyOjEyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1ZyBmaXguCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcmV0cmlldmFsIG9mIGludmFsaWQgcGFsZXR0ZSBkYXRhIGluIEdldERJQml0cygpLgoKCSogd2luZG93cy93aW5wb3MuYzogSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUFsbG93IFNXUF9ISURFV0lORE9XIHRvIGJlIGNhbGxlZCBvbiB3aW5kb3dzIHRoYXQgYXJlIGFscmVhZHkgaGlkZGVuCgl3aXRob3V0IHVubWFwcGluZyB0aGVtIGFnYWluLgoKCSogd2luZG93cy9zY3JvbGwuYzogUGltIEJvbGxlbiA8cGltQGdpbWxpLmlhZWh2Lm5sPgoJRml4ZWQgc2Nyb2xsIGJ1ZyBpbiBTY3JvbGxXaW5kb3dFeDMyIHdoaWNoIGNhdXNlZCBnYXJiYWdlIG9uIHNjcmVlbgoJb3V0c2lkZSBkZXNrdG9wIHdpbmRvdyB3aXRoIGd0d2luLmV4ZSAoRHV0Y2ggYmFua2luZyBwcm9ncmFtKS4KCgkqIGxvYWRlci9tYWluLmMsIG1lbW9yeS9hdG9tLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS9BdHRpYy9hdG9tLmgsIGluY2x1ZGUvZ2xvYmFsLmg6CglTbWFsbCBhdG9tIGZpeGVzLgoKCSogb2JqZWN0cy9kaWIuYzogRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGJ1ZyBpbiBTdHJldGNoRElCaXRzMzIgKHdyb25nIG9yaWdpbikuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS90c194c2htLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHNobS5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglTb21lIGNvcnJlY3Rpb25zIHRvIHRoZSBoYW5kbGluZyBvZiBvZmYtc2NyZWVuIGJ1ZmZlcnMuCglDb3JyZWN0aW9uIHRvIHRoZSBFbnVtRGlzcGxheU1vZGVzIGZ1bmN0aW9uLgoJQWRkZWQgWFNobSBzdXBwb3J0IHRvIFhsaWIgZHJpdmVyLgoJT3BlbiBhIERpcmVjdFggd2luZG93IGV2ZW4gd2hlbiB1c2luZyB0aGUgREdBIGRyaXZlci4KCgkqIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWlzYy9zaGVsbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDbGVhbnVwLCBzbWFsbCBmaXhlcywgYSBmZXcgbmV3IHN0dWJzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglIYW5kbGluZyBmb3IgbGlzdHZpZXdzdHlsZXMsIHZpZXcgbW9kZSBidXR0b25zIGluIGZpbGVkaWFsb2dzCgllbmFibGVkIGFuZCBoYW5kbGVkLgoJTmV3IGxpc3R2aWV3IGNvbHVtbnMgU2l6ZSwgVHlwZSwgTW9kaWZpZWQgZm9yIHJlcG9ydHZpZXcKCWNyZWF0ZWQgYW5kIGhhbmRsZWQuCgoJKiBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLCB3cmFwcGVyIGZvciBJU2hlbGxCcm93c2VyIGNsYXNzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSwgc29tZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBpY29uIGNhY2hlLgoJSW1wbGVtZW50ZWQgRXh0cmFjdEljb25FeDsgbW92ZWQgU0hNYXBQSURMVG9TeXN0ZW1JbWFnZUxpc3RJbmRleCwKCVNoZWxsX0dldEltYWdlTGlzdCBpbiB0aGlzIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZDogSUxJc0VxYWwsIElMRmluZENoaWxkLCBfSUxHZXRGaWxlRGF0ZSwgX0lMR2V0RmlsZVNpemUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZExpYnJhcnlFeDogc2hvdyBhIHdhcm5pbmcgd2hlbiBjYWxsZWQgd2l0aCB1bmltcGxlbWVudGVkIHBhcm0uCgoJKiBtaXNjZW11L2luc3RyLmM6IENsZWFuZWQgdXAgYSBiaXQuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgbWlzY2VtdS9pbnN0ci5jLCB0b29scy9idWlsZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDbGVhbiBpbnZhbGlkIHNlbGVjdG9ycyBvbiB0aGUgcG9wICV4cyBmcm9tIHRoZSBTVEFDS0ZSQU1FIGl0c2VsZgoJaW5zdGVhZCBvZiB1c2luZyBsaW5rZWQgbGlzdCBoYWNrLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZWQgZ2V0cyBtZXNzYWdlLgoKCSogb2xlL25scy90aGEubmxzOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBUaGFpIG5scy1yZXNvdXJjZXMuCgoJKiBvbGUvbmxzL1JFQURNRSwgb2xlL25scy9jemUubmxzLCBvbGUvbmxzL2VzZS5ubHMsIG9sZS9ubHMvZXNnLm5scywgb2xlL25scy9lc3QubmxzLCBvbGUvbmxzL2V1cS5ubHMsIG9sZS9ubHMvZm9zLm5scywgb2xlL25scy9ocnYubmxzLCBvbGUvbmxzL2h1bi5ubHMsIG9sZS9ubHMvaXNsLm5scywgb2xlL25scy9ub3IubmxzLCBvbGUvbmxzL3Bsay5ubHMsIG9sZS9ubHMvcHRnLm5scywgb2xlL25scy9yb20ubmxzLCBvbGUvbmxzL3Nsdi5ubHMsIG9sZS9ubHMvc3ZlLm5scywgb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJRGlzcGxheSB0aGUgbGFuZ3VhZ2UgaWQgZm9yICJYWFggbm90IHN1cHBvcnRlZCBmb3IgeW91ciBsYW5ndWFnZSIKCW1lc3NhZ2VzLgoJQWRkZWQgYWxsIGxhbmd1YWdlcyBhbmQgc3VibGFuZ3VhZ2VzIGZvciBsYW5ndWFnZXMgc3VwcG9ydGVkIGluCglyZXNvdXJjZXMvc3lzcmVzX1h4LgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglBZGQgc3R1YnMgZm9yIEdldFJ1bm5pbmdPYmplY3RUYWJsZTMyIGFuZCBPbGVSZWdHZXRVc2VyVHlwZS4KCgkqIG9sZS9tb25pa2VyLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUVuc3VyZSB0aGF0IENyZWF0ZUZpbGVNb25pa2VyIGZ1bmN0aW9ucyBkb24ndCByZXR1cm4gYSBib2d1cyBtb25pa2VyCglvYmplY3Qgb24gZmFpbHVyZS4KCgkqIGluY2x1ZGUvY2xhc3MuaCwgd2luZG93cy9jbGFzcy5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglBZGRlZCBjb2RlIHRvIG1hbmFnZSBBc2NpaSBhbmQgV2lkZUNoYXIgY2xhc3MgbmFtZXMsIGFuZCB0byByZXR1cm4gdGhlCgluYW1lcyBpbiB0aGUgR2V0Q2xhc3NJbmZvIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBDb25zdGFudGluZSBTYXB1bnR6YWtpcyA8Y3NhcHVudHpAc3RhbmZvcmQuZWR1PgoJRml4IHRvIExpbnV4IElQWCBzbyBjb21waWxlcyBvbiBub24tbGludXggcGxhdGZvcm1zLgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3duIFgxMSBlcnJvcmhhbmRsZXIgdG8gbG9jYXRlIFgxMSBlcnJvcnMuIFVzZWZ1bCBvbmx5IHdpdGggLXN5bmMuCgpTYXQgTm92IDE0IDE4OjU5OjMwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9wYWxldHRlLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5kb3dzL2RlZnduZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3YXJuaW5ncywgc29tZSBvbmx5IHZpc2libGUgd2l0aCAtV3N0cmljdC1wcm90b3R5cGVzIG9yIC1wZWRhbnRpYy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIGlmMTYzMi9kaXNwbGF5LnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIFgxMSBtb3VzZSBjdXJzb3IgaGFuZGxpbmcgdG8gdGhlIERJU1BMQVkgZHJpdmVyLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzYy9jYWxsYmFjay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBmaXhlcyB0byBXaW5lIHN0YXJ0dXAvdGVybWluYXRpb24gc2VxdWVuY2Ugd2l0aCBuYXRpdmUgVVNFUi4KCURvIG5vdCBjYWxsIGJ1aWx0LWluIFVTRVIgc2lnbmFsIGhhbmRsZXIgd2hlbiB1c2luZyBuYXRpdmUgVVNFUi4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS90YXNrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogLWRlYnVnIGRpZG4ndCB3b3JrIGFueW1vcmUgYWZ0ZXIgdGhlIGxhc3Qgc3RhcnR1cCBzZXF1ZW5jZSBwYXRjaC4KCgkqIG9sZS9jb21wb2JqLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBsaXN0IGluc2VydGlvbiBidWcgaW4gQ29Mb2FkTGlicmFyeSgpLgoKCSogaWYxNjMyL3dwcm9jcy5zcGVjLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvdnhkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN0dWJzIGZvciBzZXZlcmFsIFZ4RHMgLyBpbnRlcnJ1cHRzLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVNob3VsZCBnZXQgd2luMTZkcnYgQWJvcnRQcm9jIHdvcmtpbmcuIEhvcGVmdWxseS4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBHZXRLZXlib2FyZExheW91dE5hbWUxNiB0byB3aW5kb3dzL2lucHV0LmMuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIGRlY2xhcmF0aW9ucyBmcm9tIGltYWdlaGxwLmggdG8gY29tbW9uIGluY2x1ZGUgZmlsZXMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RocmVhZC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIGltcGxlbWVudGF0aW9ucyBmb3IgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCgpIGFuZAoJSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoKS4KCgkqIHdpbjMyL2NvbnNvbGUuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBhIGZldyBvZiB0aGUgbWFueSBjb21waWxlciB3YXJuaW5ncy4KCgkqIG1pc2NlbXUvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbXVsYXRlICJtb3YgY3I0LGVheCIgKHRvbWJyYWlkZXIgMyBkZW1vKS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGVudW1lcmF0ZSBEM0QgZGV2aWNlcyB3ZSBjYW4ndCBoYW5kbGUgYW55d2F5LgoJUmV0dXJuIGJpdG1hc2tzIGZvciBoaS90cnVlY29sb3IgZGVwdGhzIGluIEVudW1EaXNwbGF5TW9kZXMuCgoJKiBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9zbm9vcC5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwZWVkIHVwIHJlbGF5MzIsIHNub29wMTYgYW5kIHNub29wMzIgaW5jbHVkZS9leGNsdWRlcyBieSBkb2luZyB0aGVtCglqdXN0IG9uY2UgYXQgY3JlYXRpb24gdGltZS4KCgkqIHJlbGF5MzIvb2xlMzIuc3BlYywgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglBZGRlZCBzdHVicyBmb3IgQ29SZXZva2VDbGFzc09iamVjdCBhbmQgT2xlU2V0Q2xpcGJvYXJkLgoKCSogd2luZG93cy93aW4uYzogUGVyIMVuZ3N0cvZtIDxwYW5nQG1pbmQubnU+CglFbnVtVGFza1dpbmRvd3MxNjogQmFzaW5nIHRoZSBzZWxlY3Rpb24gb24gYSB3aW5kb3cncyB0YXNrIGlzIG5vdCBvbmx5Cgltb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0aGFuIGNvbXBhcmluZyBtZXNzYWdlIHF1ZXVlcywgaXQgYWxzbyB3b3JrcwoJYmV0dGVyIGZvciBXaW4zMiBhcHBsaWNhdGlvbnMuCgoJKiBtZW1vcnkvbG9jYWwuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglDaGFuZ2VkIHNvbWUgb2YgdGhlIG1lc3NhZ2UgY2xhc3Nlcy4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCVNwZWNpYWwgY2FzZSBoYW5kbGluZyBvZiA6IFNoaWZ0ICsgYXJyb3csIHNoaWZ0ICsgaG9tZSwgLi4uCglYIHJldHVybnMgYSBjaGFyIGZvciBpdCwgYnV0IFdpbmRvd3MgZG9lc24ndC4gSWdub3JlIFggY2hhci4KCUFsc28gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUJ1Z2ZpeGVzIGZvciBJUFggY29kZSBhbmQgcHJlbGltaW5hcnkgZ3JvdW5kd29yayBmb3Igb3RoZXIgYWRkcmVzcwoJZmFtaWx5IHN1cHBvcnQuCgoJKiBvbGUvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShDb0dldENsYXNzT2JqZWN0KSBvbmUgbWlzc2luZyBDQUxMQkFDSywgZXh0cmVtZWx5IHNpbXBsaWZpZWQgY2xzaWQKCWxvb2t1cCAoUmVnaXN0cnkgaXMgY2FzZSBpbnNlbnNpdGl2ZSkuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHdpbjMyL2FkdmFwaS5jLCBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzOiBTZXRTZXJ2aWNlU3RhdHVzLCBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlckEvVywKCVN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyMzJBL1csIFJ0bFN5c3RlbVRpbWVUb0xvY2FsVGltZSwKCVJ0bFRpbWVUb1RpbWVGaWVsZHMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaCwgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgR2V0TnVtYmVyRm9ybWF0MzJXLgoKCSogbWlzYy9jcnRkbGwuYzogRGF2aWQgQS4gQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJZ2V0cygpIGZpeGVzLgoKCSogb2xlL25scy9ydXMubmxzOiBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUZpeCBTQ09VTlRSWSwgU05BVElWRUNUUllOQU1FLCBTQUJCUkVWREFZTkFNRTM7IGNoYW5nZSBzb21lIFNNT05USE5BTUUqCgl0byBiZSBpbiBub21pbmF0aXZlIGNhc2UuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtaW5kLm51PgoJRml4ZWQgU2V0TWVzc2FnZVF1ZXVlMzIgdG8gcmV0dXJuIEZBTFNFLCBub3QgVFJVRSwgd2hlbiBjYWxsZWQgd2l0aAoJYW4gaW52YWxpZCBzaXplIHBhcmFtZXRlci4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDYXBzLCBjaGFuZ2VkIFBsYXkgYW5kIFN0b3AgaGFuZGxpbmcKCW9mIHBvc2l0aW9ucyBpbmRleGVzLCBzdXBwcmVzc2VkIHdhcm5pbmdzLgoKCSogbWVtb3J5L2xvY2FsLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIGJ1ZyBpbiBUUkFDRSBmdW5jdGlvbi4KCgkqIEFVVEhPUlMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gRGlyZWN0RHJhd1N1cmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIGZvciBkcml2ZXIKCWJhc2VkIHVwb24gWGxpbGIuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCVdpbmUga2V5Ym9hcmQgYW5kIG1vdXNlIGhhdmUgbm93IHRoZWlyIG93biBVSURzLgoKCSogb2JqZWN0cy9icnVzaC5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBhbGxvY2F0aW9uIHNpemUgaW4gQ3JlYXRlRElCUGF0dGVybkJydXNoKi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE5vdiAgOCAxNjo0NDo0MSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBrZXlzdHJva2UgYWNjZWxlcmF0b3JzIGluIGRpYWxvZ3Mgd2hpY2ggaGF2ZSBjb250cm9scyBjb250YWluaW5nCglvdGhlciBjb250cm9scyBhcyBjaGlsZCB3aW5kb3dzLgoKCSogaW5jbHVkZS93aW5wcm9jLmgsIG1pc2MvY29tbWRsZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy93aW5wcm9jLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVzOiBMQl8vQ0JfL0VNXyBtZXNzYWdlcyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRleHQgYW5kIGEgYnVnIGluCgkxNi0+MzIgYml0IGNvbnZlcnNpb24uCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgQ3JlYXRlRElCU2VjdGlvbiBmcm9tIHNlZyBmYXVsdGluZyB3aGVuIG9uZSBkaW1lbnNpb24gb2YKCXNlY3Rpb24gaXMgMC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CglTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJU3VwcG9ydCBmb3IgSVBYIG5ldHdvcmtpbmcgdmlhIHdpbnNvY2sgdW5kZXIgTGludXguCgoJKiByZWxheTMyL2dkaTMyLnNwZWMsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIHN0dWIgZm9yIFN0YXJ0RG9jQSBhbmQgRW5kRG9jLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9jb25zb2xlLmM6CglKYW1lcyBTdXRoZXJsYW5kIDxKYW1lc1N1dGhlcmxhbmRAZ214LmRlPgoJTW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2V0Q3RybEhhbmRsZXIoKSBmdW5jdGlvbiAoYW5kIHRoZQoJcmVsYXRlZCBjb25zb2xlIGZ1bmN0aW9ucykuCgoJKiBvYmplY3RzL2JydXNoLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzogSmVmZiBKb2hhbm4gPGpqb2hhbm5Aa2l2YS5uZXQ+CglBZGRlZCBDcmVhdGVESUJQYXR0ZXJuQnJ1c2hQdCAoR0RJMzIuMzUpIHdpdGggbWlub3IgZG9jdW1lbnRhdGlvbgoJdXBkYXRlcy4KCgkqIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbXVsYXRlIHRoZSBWR0EgdmVydGljYWwgcmVmcmVzaC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3VwcG9ydCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgaW4gQmxpdCBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGRldmljZSB0eXBlIGNvbnN0YW50cyBhbmQgdXNlZCB0aGVtIGluIGRldmljZSBlbnVtZXJhdGlvbgoJZnVuY3Rpb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFQSSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBSZWdFbnVtS2V5RXgsIFJlZ0VudW1WYWx1ZSBhbmQKCVJlZ1F1ZXJ5SW5mb0tleSB0YWtlcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVycyBhcyBjaGFyYWN0ZXJzLgoKCSogb2xlL2NvbXBvYmouYzogQWRkZWQgbWlzc2luZyAjaW5jbHVkZSAiY29uZmlnLmgiCgoJKiBBVVRIT1JTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIG9sZS9jb21wb2JqLmM6CglKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkB1a2Fucy5lZHU+CglSZXBsYWNlcyBDb0NyZWF0ZUd1aWQgc3R1YiB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIERDRSdzIFVVSUQKCXNwZWNpZmljYXRpb24uIEFsc28gcmVtb3ZlcyBzb21lIHVubmVjZXNzYXJ5IGNvZGUgZnJvbSBTdHJpbmdGcm9tQ0xTSUQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhbiBleHRlcm4gIkMiIHNhZmVndWFyZC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgd2luZG93cy9pbnB1dC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRzIEdldEV4aXRDb2RlUHJvY2VzcwoJLSBjb3JyZWN0cyB0aGUgcmV0dXJuLXR5cGUgb2YgR2V0S2V5U3RhdGUKCS0gY29ycmVjdHMgdGhlIHdpbmVsaWIgZGVmaW5pdGlvbiBvZiBJc0RpYWxvZ01lc3NhZ2UKCS0gYWRkcyB3aW5lbGliIGRlZmluaXRpb25zIGZvciBQcmludERsZwoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRXh0U2VsZWN0Q2xpcFJnbiBmaXg6IFJHTl9ESUZGIGRpZCBub3Qgd29yay4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIG5ldyBpbnB1dCBldmVudCBoYW5kbGluZy4KCgkqIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2lucHV0LmgsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2lucHV0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVTRVItc2lkZSBwYXJ0IG9mIGlucHV0IGV2ZW50IGhhbmRsaW5nOiBjb250YWlucyBpbXBsZW1lbnRhdGlvbiBvZgoJa2V5YmRfZXZlbnQgYW5kIG1vdXNlX2V2ZW50LCBhbmQgVVNFUi1yZWxhdGVkIGNvZGUgcmVtb3ZlZCBmcm9tCgl3aW5kb3dzL2V2ZW50LmMgYW5kIHdpbmRvd3Mva2V5Ym9hcmQuYy4KCgkqIHdpbmRvd3MvZGlzcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgRElTUExBWS5EUlYgcmVtb3ZlZCBmcm9tIGtleWJvYXJkLmMuCgoJKiBpZjE2MzIvbW91c2Uuc3BlYywgaW5jbHVkZS9tb3VzZS5oLCB3aW5kb3dzL21vdXNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIE1PVVNFLkRSViAoY29udGFpbnMgc29tZSBjb2RlIHRha2VuIGZyb20KCXdpbmRvd3MvZXZlbnQuYykuCgoJKiBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaW5jbHVkZS9rZXlib2FyZC5oLCB3aW5kb3dzL2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIEtFWUJPQVJELkRSViAoY29kZSBtb3N0bHkgdGFrZW4gZnJvbSBwcmV2aW91cwoJd2luZG93cy9rZXlib2FyZC5jKS4KCgkqIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlYWxseSAqZG8qIHN3aXRjaCB0byB0aGUgaW5pdGlhbCB0YXNrJ3Mgc3RhY2suCglDYWxsTGFyZ2VTdGFjayBtZWNoYW5pc20gcmUtZW5hYmxlZC4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgRmlsZXMuIEFkZGVkICdkYXRlIGFuZCB0aW1lIHBpY2tlcicgYW5kICdtb250aCBjYWxlbmRhcicgY29udHJvbAoJZHVtbWllcy4gVGhleSBhcmUgdXNlZCBieSBPdXRsb29rIEV4cHJlc3MuCgoJKiBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlQmluZEN0eCgpIGFuZCBhZGRlZCBtaXNzaW5nIENvR2V0Q2xhc3NPYmplY3QoKQoJdG8gKi5zcGVjIGZpbGUuIE1ha2VzIEludGVybmV0IEV4cGxvcmVyIDQuMDEgaGFwcHkgOy0pCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglMaXR0bGUgaW1wcm92ZW1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBwcmVsaW1pbmFyeSBoaXQgdGVzdGluZy4gTWFrZXMgcmVnZWRpdC5leGUgaGFwcHkgOy0pCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9scywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkb2N1bWVudGF0aW9uIGFuZCBmaXhlZCB0eXBvcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIERyYXdTdGF0dXNUZXh0MzJBVygpIGFuZCBDcmVhdGVTdGF0dXNXaW5kb3czMkFXKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkaXNwbGF5IGFuZCBsYXlvdXQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9tb250aGNhbC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBGaWxlcy4gQWRkZWQgJ2RhdGUgYW5kIHRpbWUgcGlja2VyJyBhbmQgJ21vbnRoIGNhbGVuZGFyJyBjb250cm9sCglkdW1taWVzLiBUaGV5IGFyZSB1c2VkIGJ5IE91dGxvb2sgRXhwcmVzcy4KClNhdCBOb3YgIDcgMTI6NTY6MzIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUNoYXJsZXMgU3VwcmluIDxjc3VwcmluQGx5bnguZGFjLm5ldS5lZHU+CglBZGRlZCBzdHVicyBmb3IgU2V0V2luTWV0YUZpbGVCaXRzIGFuZCBHZXRFbmhNZXRhRmlsZVBhbGV0dGVFbnRyaWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVN0b3AgWDExRFJWX1JvdW5kUmVjdCBjYWxsaW5nIFhEcmF3QXJjIHdpdGggLXZlIHdpZHRoL2hlaWdodCBwYXJhbXMKCXdoaWNoIGl0IGRpZCBpZiBlaXRoZXIgZWxsaXBzZSBkaW1lbnNpb24gd2FzIHplcm8uCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU9wdGltaXplIFJvdW5kUmVjdDMyIHRvIGNhbGwgUmVjdGFuZ2xlMzIgaWYgZWl0aGVyIGVsbGlwc2UgZGltZW5zaW9uCglpcyB6ZXJvLgoKCSogcmVsYXkzMi9tcHIuc3BlYywgbWlzYy9uZXR3b3JrLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHViIFdOZXRFbnVtQ2FjaGVkUGFzc3dvcmRzLgoKCSogbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1hZGUgdGhpcyBmaWxlIERPU01PRCBmcmllbmRseS4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVW5pZmllZCAiTm8gaW1wbGVtZW50YXRpb24gZm9yLi4uIiB3YXJuaW5ncy4KCgkqIHdpbjMyL2RldmljZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1vbm9kZWJnLnZ4ZCB1c2VkIGJ5IHNvbWUgT3JpZ2luIHByb2dyYW1zIGltcGxlbWVudGVkLgoKCSogb2JqZWN0cy9iaXRtYXAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZhaWwgaWYgbGVzcyB0aGVuIG9uZSBlbnRpcmUgbGluZSByZXF1ZXN0ZWQgaW4gR2V0Qml0bWFwQml0czMyLgoKCSogd2luZG93cy93aW5wcm9jLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBXTV9HRVRETEdDT0RFIGhhbmRsaW5nIGluIChVbilNYXBNc2czMkF0bzE2LgoKCSogaWYxNjMyL2NvbXBvYmouc3BlYywgaW5jbHVkZS9vbGUuaCwgb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIENvTG9hZExpYnJhcnksIENvRnJlZUFsbExpYnJhcmllcywKCUNvRnJlZVVudXNlZExpYnJhcmllcywgQ29GcmVlTGlicmFyeS4KCUZpeGVkIG1pc3NwZWxsaW5nIG9mIENvVW5pbml0aWFsaXplLgoKCSogcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9tYWluLmM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJRml4ZXMgZm9yIG90aGVyIGxhbmd1YWdlcy4KCkZyaSBOb3YgIDYgMTc6MzY6MTMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUZpeCB3aWRlIGNoYXJhY3RlciBmdW5jdGlvbnMgdG8gcmV0dXJuIGNoYXJhY3RlciBjb3VudCBpbiBjaGFyYWN0ZXIKCXF1YW50aXRpZXMgbm90IGJ5dGUgcXVhbnRpdGllcy4gIE1ha2UgUmVnUXVlcnlJbmZvS2V5IGFuZAoJUmVnUXVlcnlJbmZvS2V5IGJlaGF2ZSBjb3JyZWN0bHkgaW4gd2luOTUgbW9kZS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNoYW5nZWQgbW91c2UgYnV0dG9uIG1hcHBpbmcgYW5kIGNoZWNrIHNpemUgb2YgcmV0dXJuIGJ1ZmZlci4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUV4dFNlbGVjdENsaXBSZ24oKSB3aXRoIFJHTl9DT1BZIGNvcGllcyB0aGUgd3JvbmcgcmVnaW9uLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhbiBlcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgRklMRV9TaGFyZURlbnkuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbGFyaXMgcmVkZWZpbmVzIEVSUiBhbmQgQ1MsIGZpeGVkIG9jY3VyYW5jZXMuCglTb2xhcmlzIGhhcyBUUkFQTk8gaW4gaXRzIHNpZ2NvbnRleHQsIGFkZGVkIHRvIHNpZ19jb250ZXh0LmgKCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tbWlvLmMsIHJlbGF5MzIvd2lubW0uc3BlYywgaWYxNjMyL21tc3lzdGVtLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgbW1pb1NldEJ1ZmZlciBjYWxsYWJsZSBmcm9tIDE2IGFuZCAzMiBiaXQgY29kZS4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3cm9uZyBhcmcgdHlwZS4KCgkqIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlZCBYMTEgRElCIHN0dWZmIHRvIHgxMWRydi4KCgkqIHdpbjMyL2NvZGVfcGFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGhlIEFQSSBmb3IgV2lkZUNoYXJUb011bHRpQnl0ZSBzYXlzIHRoYXQgdGhlIHNyYy1zdHJpbmcgaGFzIG9ubHkgdG8gYmUKCXRyZWF0ZWQgYXMgTlVMTC10ZXJtaW5hdGVkIGlmIHNyY2xlbiBpcyAtMS4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy93aW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBzdXJlIENvbmZpZ3VyZU5vdGlmeSBpcyBwcm9jZXNzZWQgYmVmb3JlIEV4cG9zZSwgZGVmZXJyaW5nIHRoZQoJRXhwb3NlIGV2ZW50IGlmIG5lY2Vzc2FyeSwgdGh1cyB3b3JraW5nIGFyb3VuZCBhIFdNIGZsYXcgd2l0aCB2aXJ0dWFsCglkZXNrdG9wIHNjcm9sbGluZyBpbiAtbWFuYWdlZCBtb2RlLgoKCSogcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJVHJhbnNsYXRlZCBpbiBGcmVuY2ggKG5vdCBzbyBnb29kIGFueWhvdykgbWVzc2FnZSBmb3IgdGhlIG1hcmsgb24KCXN5c3RlbSBtZW51LgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCB0aGUgZGVmYXVsdCBmcm9tIDAgdG8gMHg0MDkgKGVuZy11cykuCgoJKiB3aW5kb3dzL21kaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBtaXNzaW5nIFdJTkFQSXMuCgoJKiBpbmNsdWRlL2ludGVyZmFjZXMuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBvbmUgd3JvbmcgcGFyYW1ldGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgLS1kaXNhYmxlLWxpYi4KClRodSBOb3YgIDUgMTA6MzM6MTggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb25zdGFudHMgZm9yIGNvbnRyb2xzIGluIGNvbW1vbiBkaWFsb2dzLgoKV2VkIE5vdiAgNCAxODowODozMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jcnRkbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoKU3VuIE5vdiAgMSAxOToyNzoyNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucG9zLmMsIG1pc2MvY29tbWRsZy5jLCBtaXNjL3NoZWxsLmMsIG1pc2Mvd2luc29jay5jLCBtaXNjZW11L2luc3RyLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9qb3lzdGljay5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvZGliLmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZGkuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbWVtb3J5L2hlYXAuYzoKCUplc3BlciBTa292IDxqc2tvdkBjeWdudXMuY28udWs+CgllZ2NzICdhbWJpZ3VvdXMgZWxzZScgd2FybmluZ3MgZml4ZXMuCgoJKiBpbmNsdWRlL3Rvb2xoZWxwLmgsIGluY2x1ZGUvd2luZG93cy5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZXQgcmlkIG9mIHRoZSByZWRlZmluaXRpb24gb2YgTUFYX1BBVEggYW5kIG1vdmUgUFJPQ0VTU0VOVFJZMzIKCWRlZmluaXRpb24gdG8gdG9vbGhlbHAuaC4KCgkqIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbGlicmFyeS93aW5lc3R1Yi5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUnVuIFdpbmVsaWIgYXBwbGljYXRpb25zIGFzIDMyLWJpdCBwcm9jZXNzZXMgaW4gdGhlIGluaXRpYWwgdGFzay4KCVNpbXBsaWZpZWQvcmVtb3ZlZCBzZXZlcmFsIHNwZWNpYWwgJ2lmIChfX3dpbmVsaWIpJyBjYXNlcyBpbgoJV2luZSBtYWluIGNvZGUgb2Jzb2xldGVkIGJ5IHRoYXQgY2hhbmdlLgoKCSogd2luZG93cy9ldmVudC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgbW91c2UgZHJpdmVyIGNhbGxiYWNrIGFsc28gaWYgd2luZG93cyBhcmUgbm90IHJlZ2lzdGVyZWQgd2l0aCBYCgkoaWYgdXNpbmcgbmF0aXZlIFVTRVIuRVhFKS4KCgkqIG1lbW9yeS9hdG9tLmMsIGluY2x1ZGUvYXRvbS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIHNlcGFyYXRpb24gYmV0d2VlbiBLRVJORUwgYW5kIFVTRVIuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBuZXcgV2luZSBzdGFydHVwIHNlcXVlbmNlLCBzZXBhcmF0aW5nIHN0YXJ0dXAgaW50bwoJS0VSTkVML1VTRVIvR0RJIHJlbGF0ZWQgcGFydHMsIGFsbG93aW5nIG5hdGl2ZSByZXBsYWNlbWVudC4KCUltcGxlbWVudGVkIGluaXRpYWwgJ2tlcm5lbCcgdGFzay4KCgkqIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL2NvbXBvYmouYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJbnByb2NTZXJ2ZXIzMiBDb0dldENsYXNzT2JqZWN0LgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW9yZSBiaXRtYXAgZml4ZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogRml4ZWQgY3Jhc2hlcyB3aXRoIFdNX0dFVERMR0NPREUgdHJhbnNsYXRpb24uCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2Ly5jdnNpZ25vcmUsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luLmgsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCBtb3Zpbmcgc29tZSBYMTEgd2luZG93IG1hbmFnZW1lbnQgY29kZSB0byB3aW5kb3dzL3gxMWRydi4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBJc0RpYWxvZ01lc3NhZ2UxNi4KCgkqIE1ha2VmaWxlLmluOiBEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCVRlbGwgcGVvcGxlIHRvIGlnbm9yZSB0aGUgJ2dldHMnIHdhcm5pbmcuIFNvbWUgd2lsbCBsaXN0ZW4uCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIHdpbmRvd3MvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQSBjb3VwbGUgb2Ygc21hbGwgZml4ZXMgdG8gbXkgYml0bWFwIHBhdGNoLgoKCSogcmVzb3VyY2VzL1RPRE8sIHJlc291cmNlcy9zeXNyZXNfRGUucmMsIHJlc291cmNlcy9zeXNyZXNfRW4ucmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbGxvdyB0aGUgdXNlciB0byBwdXQgYSBtYXJrIGluIHRoZSBkZWJ1ZyBsb2cgYnkgYWRkaW5nIGEgaXRlbSBpbiB0aGUKCVNZU01FTlUuIFRoZSBtZXNzYWdlcyBuZWVkcyBpbXBsZW1lbnRhdGlvbiBpbiBhbGwgb3RoZXIgbGFuZ3VhZ2VzIHRoYW4KCUVuZ2xpc2ggYW5kIEdlcm1hbi4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2l2ZSB0ZW1wZmlsZSBhIGRpZmZlcmVudCBuYW1lIGV2ZW4gaWYgdGhleSBhcmUgY3JlYXRlZCBpbiB0aGUgc2FtZQoJc2Vjb25kLiBSZW1vdmVkIHNvbWUgZml4bWVzIGZyb20gdGhlIFNoYXJlRGVueSBzdHVmZi4KCgkqIGluY2x1ZGUvbWRpLmgsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNyZWF0ZVdpbmRvd0V4MzJbQVddIG5vdyBjcmVhdGVzIGFuIE1ESSBjaGlscyB3aGVuIHRoZSBXTV9FWF9NRElDSElMRAoJZXh0ZW5kZWQgc3R5bGUgaXMgc3BlY2lmaWVkLiBBbHNvIGltcGxlbWVudGVkIENyZWF0ZU1ESVdpbmRvdzMyQSgpCgljYWxsIC0gc2luZ2xlIHRocmVhZCBvbmx5IC0uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRXJyZWQgaW4gdGhlIGJpdCBtYWNyb3MgaW4gdHJlZXZpZXcuYy4gU2hpZnRjb3VudHMgd2VyZSB3cm9uZy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURldGVjdGlvbiBvZiB0aGUgZW5kIG9mIGltcG9ydHMgd2l0aCBDaGFyYWN0ZXJpc3RpY3MgMCBmYWlsIGZvciBCb3JsYW5kCglwcm9ncmFtcyAod2hpY2ggc2VlbSB0byBoYXZlIGFsd2F5cyBjaGFyYWN0ZXJpc3RpY3MgMCkuIENoYW5nZWQgdG8gYWxnb3JpdGhtCgl0byBzb21ldGhpbmcgYSBiaXQgbW9yZSBpbnRlbGxpZ2VudC4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBDb0ZyZWVMaWJyYXJ5IHN0dWIuCgoJKiBSRUFETUU6IFVwZGF0ZWQgRkFRIGxvY2F0aW9uLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IFNFR1BUUiBjb252ZXJzaW9uIGZvciBTVEFSVERPQyBpbiBFc2NhcGUzMigpLgoKCSogb2JqZWN0cy9kYy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogU2V0RENTdGF0ZSBkaWQgbm90IHJlc2V0IGNsaXBwaW5nIHJlZ2lvbiB0byBlbXB0eS4KCgkqIHdpbjMyL2luaXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzbWFsbCBvZmYgYnkgb25lIGVycm9yIGluIEdldENvbXB1dGVyTmFtZTMyVywgYWx3YXlzIGtpbGxlZCB0aGUKCWxhc3QgY2hhcmFjdGVyIG9mIGEgaG9zdG5hbWUuCgoJKiBvYmplY3RzL2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IEhlYXBGcmVlKCkgY29sb3JtYXAgaWYgd2UgZGlkbid0IGFsbG9jYXRlIG9uZS4KCgkqIHdpbjMyL2FkdmFwaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy91c2VyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1pc2MvY3J0ZGxsLmMsIG1pc2MvcHJpbnRkcnYuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCByZWxheTMyL2NydGRsbC5zcGVjLCByZWxheTMyL21wci5zcGVjLCByZWxheTMyL3NoZWxsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHVicyBmb3IgdXNlcjMyLGFkdmFwaTMyIGZ1bmN0aW9ucy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC8qLCBpbmNsdWRlL250ZGxsLmgsIG1pc2MvQXR0aWMvbnRkbGwuYywgbWlzYy9NYWtlZmlsZS5pbiwgcmVsYXkzMi9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIE50KiBhbmQgUnRsKiBmdW5jdGlvbiBzdHVicywgbW92ZWQgbnRkbGwuYyB0byBkbGxzL250ZGxsLy4KCgkqIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvaGVhcC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglDaGFuZ2VkIG1hbnkgV0FSTigpcyByZWxhdGVkIHRvIGludGVybmFsIFdpbmUgbWVtb3J5IGZhaWx1cmVzIHRvCglFUlIoKXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCAuc3BlYyBlbnRyeSBmb3IgS0VSTkVMLlJlZ2lzdGVyU2VydmljZVByb2Nlc3MuCgoJKiBpZjE2MzIvZGlzcGxheS5zcGVjLCB3aW5kb3dzL2tleWJvYXJkLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdHViIGZvciBDaGVja0N1cnNvcigpLgoKCSogaW5jbHVkZS9kaWFsb2cuaCwgd2luZG93cy9kZWZkbGcuYzogVGltIE5ld3NvbWUgPG51aXNhbmNlQGNtdS5lZHU+CglGaXggZm9yIG5vbi1tb2RhbCBkaWFsb2cgY2xvc2luZy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IERhdmlkIEZhdXJlICA8ZmF1cmVAa2RlLm9yZz4KCVJld3JvdGUgdGhlIHR3byByb3V0aW5lcyB1c2luZyB0aGUgdmtleS0+c2NhbmNvZGUgYXJyYXkgdG8gdXNlCglrZXljMnZrZXkgZm9yIGVhY2gga2V5Y29kZSwgaW5zdGVhZC4gTm90IHRlc3RlZC4KCVJlbW92ZWQgdW51c2VkIElEaXJlY3RJbnB1dERldmljZUFfR2V0RGV2aWNlU3RhdGUuCglGaXhlZCB3YXJuaW5nIGluIFRSQUNFKCkgY2FsbC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPGZhdXJlQGtkZS5vcmc+CglEZWxldGVkIHRoZSB2a2V5LT5zYW5jb2RlIGFycmF5LCBiZWNhdXNlIFFXRVJUWSBzcGVjaWZpYy4KCUJhY2sgdG8gdXNpbmcgdGhlIFgga2V5Y29kZSBpbnN0ZWFkIGFzIHRoZSBzY2FuY29kZS4gVGVzdGVkLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglQcmludCBhIG1lc3NhZ2UgaWYgdGhlIFBvc3RTY3JpcHQgZHJpdmVyIGNhbid0IGZpbmQgYSBQUEQgZmlsZS4KCgkqIG1zZG9zL2ludDEwLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgVkdBIDI1Ni1jb2xvciBtb2RlIDB4MTMgdXNpbmcgdGhlIERpc3BsYXlEaWIgVkdBIGVtdWxhdGlvbi4KCShET1MgYXBwcy9nYW1lcyB1c2luZyB0aGlzIG1vZGUgY29tZXMgdXAgbm93LCBhbHRob3VnaCB5b3UgY2FuJ3QKCXJlYWxseSBkbyBhbnl0aGluZyB3aXRoIHRoZW0gKHlldD8pLikKCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgbWFjcm8gVjg2X0ZMQUcuCgoJKiBtc2Rvcy9kb3NtZW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTZXQgZGVmYXVsdCB2aWRlbyBtb2RlIHRvIDMgKDgweDI1IGNvbG9yKS4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSWdub3JlcyBhIGNvdXBsZSBvZiBzaWduYWxzLgoKCSogZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2Rpc3BkaWIuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmgsIG1zZG9zL2lvcG9ydHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgVkdBLWVtdWxhdGluZyBEaXJlY3RYIGNvZGUgZnJvbSBkaXNwZGliLmMgdG8gYSBzZXBhcmF0ZQoJZmlsZS4gTWFkZSBpdCB1c2UgYSBzeXN0ZW0gdGltZXIgYW5kIHRyYXAgSS9PIGFjY2Vzc2VzIHRvIHRoZSBWR0EKCURBQyByZWdpc3RlcnMgdG8gYWNjb21tb2RhdGUgRGlzcGxheURpYi11c2luZyBwcm9ncmFtcyB0aGF0IHRyeSB0bwoJYWNjZXNzIHRoZSBWR0EgaGFyZHdhcmUgZGlyZWN0bHkuCgoJKiBtaXNjZW11L2luc3RyLmMsIGlmMTYzMi9zaWduYWwuYywgaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjL3N5c3RlbS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbmRpcmVjdGlvbiBmb3IgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIGZvciB1c2UgYnkgRE9TIGNvZGUuCglBZGRlZCBzdXBwb3J0IGZvciBhIDU1SHogc3lzdGVtIHRpbWVyLCBsZXR0aW5nIERPUyBhcHBzIGNhbGlicmF0ZQoJdGhlaXIgZGVsYXkgbG9vcHMgYW5kIHN1Y2guIENhbGxzIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiBmb3IKCWluc3RydWN0aW9uIGVtdWxhdGlvbiAocHJpbmNpcGFsbHkgSS9PIHBvcnQgYWNjZXNzKS4gQWRkZWQgbWFjcm8KCVY4Nl9GTEFHLgoKU2F0IE9jdCAzMSAxMjoyMDo1NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaW5wdXQuYywgbXVsdGltZWRpYS9kc291bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgZml4ZXMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdGhlIEZJWE1FKCkgYW5kIG1vdmVkIFNldExhc3RFcnJvcigwKSB0byB0aGUgZW5kIChzbyB0aGF0CglHZXRUZW1wRmlsZU5hbWUgZXQuYWwuIGNhbid0IG92ZXJ3cml0ZSBpdCkuCgoJKiBtaXNjL0F0dGljL250ZGxsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG90cyBvZiBzdHVicyB0byBnZXQgd2lubG9nb24uZXhlIGZyb20gbnQzLjUxIGFuZCBvdGhlciBOVDMuNTEgYXBwbGV0cwoJYSBiaXQgZnVydGhlci4KCgkqIHdpbmRvd3MvbWRpLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNREljaGlsZCBjcmVhdGVkIHdoZW4gdGhlIE1ESSBjbGllbnQgaGFzIHRoZSBNRElTX0FMTENISUxEU1RZTEVTCglzdHlsZSwgc2hvdWxkIG5vdCBiZSBzaG93biBhdCBjcmVhdGlvbiBub3IgYWN0aXZhdGVkIHVubGVzcyB0aGUKCVdTX1ZJU0lCTEUgZmxhZyBpcyBzZXQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUJ1Z2ZpeCBmb3IgZml4dXBfaW1wb3J0czogRW5hYmxlIGNoZWNraW5nIGZvciB0ZXJtaW5hdGluZyBpbXBvcnQKCXN0cnVjdCB3aXRoIENoYXJhY3RlcmlzdGljcyBiaXRmaWVsZCBzZXQgdG8gMC4KCgkqIHdpbmRvd3Mvd2luLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEZWxheSBsaW5raW5nIG5ld2x5IGNyZWF0ZWQgd2luZG93IGluIGxpbmtlZCBsaXN0IHVudGlsIGFmdGVyIHRoZQoJV01fTkNDUkVBVEUgbWVzc2FnZS4KCgkqIGZpbGVzL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNtYWxsIGJ1ZyBpbiBGSUxFX0luVXNlIGRvZXMgbm90IGRvIGEgcmVsZWFzZSBvbiBldmVyeSBhY3F1aXJlZCBmaWxlCglwb2ludGVyLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbHBzek5hbWUgb2YgTlVMTCBpcyBoYW5kbGVkIChyZW1vdmVzIHNvbWUgd2FybmluZ3MpLgoKCSogdG9vbHMvdGVzdHJ1bjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglOb3cgYWxsb3dzIHNwZWNpZmljYXRpb24gb2YgYSBzdGFydCBkaXJlY3Rvcnkgb24gdGhlIGNtZGxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0cyByaWQgb2YgdGhlIGFyY2gtZGVwZW5kZW50IGJpdCBvcGVyYXRpb25zICh0ZXN0ZWQgb24gTGludXggYW5kCglTb2xhcmlzL3g4NikuCgpXZWQgT2N0IDI4IDE0OjU4OjAyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUEgZGVzdCBidWZmZXIgd2FzIHByaW50ZWQgb3V0IGFzIHN0cmluZy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29ycmVjdGVkIDIgd3JvbmcgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUGF0cmljayBTcGlubGVyIDxzcGlubGVyLnBhdHJpY2tAbWF5by5lZHU+CglBZGRlZCBzdHVicyBmb3IgUHJvY2VzczMyRmlyc3QvUHJvY2VzczMyTmV4dC4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglGcmFu529pcyBHb3VnZXQgPGdvdWdldEBtZXRhaW50ZWdyYXRpb24ubmV0PgoJRml4ZWQgc29tZSBMUFBPSU5UL0xQU0laRSBtaXNtYXRjaGVzIGFuZCBzb21lIG1pc3NpbmcgImNvbnN0IiBpbiB0aGUKCWhlYWRlcnMgcHJvdG90eXBlcy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvb2VtYml0bWFwLmMsIHdpbmRvd3MvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBwQml0bWFwQml0cyBhbmQgcENyZWF0ZUJpdG1hcCB0byB0aGUgR0RJIGZ1bmN0aW9uIHRhYmxlIGFuZAoJbW92ZWQgdGhlIFgxMSBkZXBlbmRlbnQgc3R1ZmYgb3V0IG9mIG9iamVjdHMvYml0bWFwLmMgaW50byB4MTFkcnYuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBTSEdldFNpbXBsZUlETGlzdEZyb21QYXRoMzJBVy4KCVVuaWNvZGUtc2FmZTogUGF0aEZpbmRGaWxlbmFtZTMyQVcuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkBidXNib3kuc3BlZC51a2Fucy5lZHU+CglJRXh0cmFjdEljb24gaGFkIGFuIGV4dHJhIGMgaW4gYSBzdHJ1Y3QgZGVmaW5pdGlvbi4KCgkqIHJlbGF5MzIvZHBsYXkuc3BlYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5zcGFtbGVzcy5jb20+CglBZGRlZCBlbnRyeSBmb3IgRGlyZWN0UGxheUVudW1lcmF0ZS4KCgkqIG9sZS9ubHMvc2t5Lm5scywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgU2xvdmFrIG5scy1yZXNvdXJjZXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGRpZmZlcmVuY2VzIGJldHdlZW4gU2V0UmVjdFJnbjE2IGFuZCBTZXRSZWN0UmduMzIuIEFsc28gYSBidWcgZml4IGZvcgoJQ3JlYXRlUm91bmRSZWN0UmduLgoKVHVlIE9jdCAyNyAxNTo0MTo1NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy91c2VyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW51bURpc3BsYXlNb2RlcyogcmV0dXJucyBhIHN0YXRpYyBsaXN0IG9mIG1vZGVzIHdpdGggYWxsIGRlcHRocwoJKGhlbHBzIGhleGVuMmRlbW8pLCBDaGFuZ2VEaXNwbGF5U2V0dGluZ3MgcmV0dXJucyB0cnVlIGFsbCB0aGUgdGltZS4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIG1pZGlPcGVuU3RyZWFtIChoZWxwcyBoZXhlbjJkZW1vKS4KCgkqIG9sZS9ubHMvZW5jLm5scywgb2xlL25scy9mcmMubmxzLCByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCVNtYWxsIHBhdGNoIGZvciBiZXR0ZXIgRnJlbmNoIHN1cHBvcnQuCgoJKiBsb2FkZXIvZWxmLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBtZW1vcnkgb3ZlcndyaXRlIGJ1Zy4KCk1vbiBPY3QgMjYgMTE6MDQ6MTMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYywgd2luZG93cy9jbGlwYm9hcmQuYzogUGFzY2FsIEN1b3EgPHBjdW9xQGVucy1seW9uLmZyPgoJMzItYml0IGNsaXBib2FyZCBzdXBwb3J0LgoKCSogd2luZG93cy9xdWV1ZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeCBmb3IgUVVFVUVfU2lnbmFsOiBBbHdheXMgdXNlIFBvc3RFdmVudCBpZiBubyB0aHJlYWQgaXMgd2FpdGluZwoJb24gdGhlIHF1ZXVlLgoKCSogd2luZG93cy9tZGkuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBhIG1pbm9yIHByb2JsZW0gd2l0aCB0aGUgbWVudXMgZm9yIG1kaSBjaGlsZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIG5vIGxvbmdlciBuZWNlc3NhcnkgY29tbWVudGVkIG91dCBjb2RlLCBkZXN0cm95IG9sZCB3aW5kb3cKCXdoZW4gU2V0RGlzcGxheU1vZGUgaXMgY2FsbGVkIGFnYWluLCBFbnVtRGlzcGxheU1vZGVzIG5vdyByZXR1cm5zCglhbGwgcG9zc2libGUgbW9kZXMgKHVzaW5nIGEgc3RhdGljIGxpc3QpLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbm9uIHNoYXJlZCBtYXBwaW5nIGZpeGVkIGZvciBmaWxlIHNoYXJpbmcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBPY3QgMjUgMTA6MzI6MjMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmMsIGluY2x1ZGUvd2lubmxzLmg6IEFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJRml4ZXMgZm9yIExBTkdfTkVVVFJBTC4KCgkqIGluY2x1ZGUvdGFzay5oOgoJQWRkZWQgc29tZSBwYWRkaW5nIHRvIHRoZSBQREIgZm9yIGlsbC1iZWhhdmluZyBhcHBzIChwcm9ibGVtIHJlcG9ydGVkCglieSBBbmRyZWFzIE1vaHIpLgoKCSogZG9jdW1lbnRhdGlvbi9pb3BvcnQtdHJhY2UtaGludHMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbWlzY2VtdS9pbnN0ci5jOgoJSm9uYXRoYW4gQnV6emFyZCA8amFiQGhleC5wcmVzdGVsLmNvLnVrPgoJQWRkZWQgYSBuZXcgZGVidWdnaW5nIGNoYW5uZWwgaW8gdG8gYWxsb3cgcmVhZC93cml0ZXMgb24gYSBwb3J0IHRvIGJlCglsb2dnZWQgdG8gYSBmaWxlLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJUmVwbGFjZWQgMHgwMCB3aXRoIDB4MDEgaW4gdGhlIHZrZXktPnNhbmNvZGUgYXJyYXksIHNvIHRoYXQgbm8ga2V5IGlzCglpZ25vcmVkLiAweDAwIGlzIHVzZWQgZm9yIGdlbmVyYXRlZCBrZXkgZXZlbnRzIG9ubHkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglBUEkgRG9jdW1lbnRhdGlvbiBmb3IgU2VuZE1lc3NhZ2UsIEdldFRpY2tDb3VudCwgUG9zdFF1aXRNZXNzYWdlLAoJR2V0TWVzc2FnZVBvcywgR2V0TWVzc2FnZVRpbWUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlbGV0ZSB0aGUgZmlsZW5hbWUgZm9yIHRoZSBtYXBwaW5nIGluc3RhbnRseS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCU1pY2hhZWwgUG9vbGUgPHBvb2xlQGdyYXZpdG9uLnJlcy5jbXUuZWR1PgoJU3R1YiBmb3IgU0hTaW1wbGVJRExpc3RGcm9tUGF0aC4KCgkqIGxvYWRlci90YXNrLmM6IEZpeGVkIGJ1ZyBpbiBTd2l0Y2hTdGFja1RvLgoKU2F0IE9jdCAyNCAxMzowNjoxNiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2hlY2sgaWYgc2Nyb2xsYmFyIGFuZCBwYXJlbnQgYXJlIHZpc2libGUgYmVmb3JlIHJlZHJhdy4KCgkqIGlmMTYzMi9zaGVsbC5zcGVjLCBpbmNsdWRlL3NoZWxsLmgsIG1pc2Mvc2hlbGwuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIERyYWcqMzIgZnVuY3Rpb25zLgoKCSogd2luZG93cy9ldmVudC5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRHJhZyZEcm9wIGZyb20gS0RFIGFwcCB0byAxNi8zMiBiaXQgV2luZG96ZSBhcHAuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIEZJWE1FIG1lc3NhZ2UgaW4gUG9zdE1lc3NhZ2UzMnggaWYgcGFyYW1ldGVycyBhcmUgdHJ1bmNhdGVkCgl3aGVuIGNhbGxpbmcgUG9zdE1lc3NhZ2UxNi4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGdsb2JhbCBoYW5kbGVzLCBpbXBsZW1lbnRlZCBDb252ZXJ0VG9HbG9iYWxIYW5kbGUuCglBbGxvY2F0ZSBzdGFydHVwIGRhdGEgYW5kIDE2LWJpdCBzdGFjayBmb3IgaW5pdGlhbCBwcm9jZXNzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86IExlaWdoIFdlZGRpbmcgPGx3ZWRkaW5nQGNvcnBsaW5rLmNvbS5hdT4KCVNtYWxsIGZpeC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9Fcy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbjoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiBvbGUvbmxzL2V1cS5ubHMsIHJlc291cmNlcy9zeXNyZXNfRXMucmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCVNtYWxsIGNvcnJlY3Rpb25zLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb2FkTGlicmFyeUV4VyBzcGVjIGFkZGVkIChmdW5jdGlvbiB3YXMgdGhlcmUpLgoJU2V0UHJvY2Vzc1ByaW9yaXR5Qm9vc3Qgc3R1YiBhZGRlZC4KCgkqIG1zZG9zL2RwbWkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3IgU29sYXJpcy4KCgkqIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9kaXNwZGliLnNwZWMsIGluY2x1ZGUvZGlzcGRpYi5oLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGlzcGRpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBEaXNwbGF5RGliLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFjayB0byBzdXBwb3J0IGludGVnZXIgaWRzIGluIGFsbCBzdGF0aWMgY29udHJvbHMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCZWdpbm5pbmcgb2YgbW91c2Ugc3VwcG9ydCBpbiBEaXJlY3RJbnB1dCAob25seSAic3RhbmRhcmQiIG1vdXNlCgljb25maWd1cmF0aW9uIHN1cHBvcnRlZCBmb3Igbm93KS4KCgkqIGluY2x1ZGUvKi5oLCBkbGxzL2NvbWN0bDMyLyouYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCB4eHhfVW5yZWdpc3RlcigpIGZ1bmN0aW9ucyB0byBhbGwgY29tbW9uIGNvbnRyb2xzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtaW5vciBpbXByb3ZlbWVudHMgYW5kIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBpbmNsdWRlL3JlYmFyLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgdGhlIHJlYmFyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdXBwb3J0IGZvciB0cmFuc3BhcmVudCBhbmQgdHJhY2tpbmcgdG9vbHRpcHMuCgoJKiBjb250cm9scy9tZW51LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBhIHBvcHVwIG1lbnUgc2VsZWN0aW9uIGJ1Zy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBEcmF3Q2FwdGlvbjE2KCkgYW5kIERyYXdDYXB0aW9uVGVtcDE2KCkuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglGaXhlZCB3YXJuaW5nLgoKCSogZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBncmFwaGljcy9wc2Rydi9icnVzaC5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBvYmplY3RzL2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRzIEFyYywgQ2hvcmQsIEdldENoYXJXaWR0aCwgUGllLCBQb2x5UG9seWdvbiwgUG9seVBvbHlsaW5lLCBSb3VuZFJlY3QsCglTZXRQaXhlbCwgaGF0Y2hlZCBicnVzaGVzIGFuZCBhIHN0dWIgZm9yIFN0cmV0Y2hESUJpdHMgdG8gdGhlIFBvc3RTY3JpcHQKCWRyaXZlci4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBpbnQxNyBhbmQgaW50MTkuCgoJKiBtc2Rvcy9pbnQxOS5jOiBDYXJsIHZhbiBTY2hhaWsgPGNhcmxAZHJlYW1jb2F0LmNoZS51Y3QuYWMuemE+CglTdHVicyBmb3IgZG9zIG1vZGUgcmVib290IGludGVycnVwdC4KCgkqIG1zZG9zL2ludDE3LmM6IENhcmwgdmFuIFNjaGFpayA8Y2FybEBkcmVhbWNvYXQuY2hlLnVjdC5hYy56YT4KCVNvbWUgcHJpbnRlciBzdHVicyBmb3IgRE9TIGFkZGVkLgoKCSogbXNkb3MvaW50MTMuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJTW9yZSBzdHVicyBhZGRlZC4gVGhlc2UgY2hhbmdlcyBhcmUgb25seSBwYXJ0aWFsbHkgbWluZSwgSSBqdXN0IG1hZGUKCXRoZW0gY29tcGlsZS4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIHNvbWUgdHJhY2VzIGFuZCBjbGVhbmVkIHVwIGEgY291cGxlIG9mIHRoaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBtZW1vcnkvc3RyaW5nLmMsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgc29tZSBzdHJpbmctc2hlbGwzMiBmdW5jdGlvbnMgdG8gMzJBVywgcGFyYW1ldGVyIGFyZQoJb3MgZGVwZW5kaW5nIDMyQSBvciAzMlcgKC13aW52ZXIgbnQzNTEgb3IgbnQ0MCksIHNvbWUgbmV3IGZ1bmN0aW9ucy4KCVNvbWUgZml4ZXMgaW4gb2xlMm5scy4KCU5ldyBPTEUyTkxTX0NoZWNrTG9jYWxlKCkgdG8gaGFuZGxlIExvY2FsZV9Vc2VyX0RlZmF1bHQgYW5kCglMb2NhbGVfU3lzdGVtX0RlZmF1bHQuCglTaGVsbDMyIG5vdyBkeW5hbWljbHkgbGlua3MgdG8gRFBBXyooKSwgY29tZGxnMzIgd29ya3MgYWdhaW4KCShjb21jdGwzMiBoZWFwIGFsbG9jIHBhdGNoIGJyb2tlIGl0KS4KCgkqIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBtaXNjL3ZlcnNpb24uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgVkVSU0lPTl9Jc09zVW5pY29kZSgpLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW9yZSBvZmYtYnktb25lIGVycm9ycyBmaXhlZC4KCgkqIGluY2x1ZGUvZmlsZS5oLCBtaXNjL2NydGRsbC5jLCBtc2Rvcy92eGQuYywgd2luMzIvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaWxlIHNoYXJpbmcgZml4ZXMuCgpGcmkgT2N0IDIzIDE3OjI2OjQ0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW1kbGcuYzogTmljayBIb2xsb3dheSA8YWxmaWVAYWxmaWUuZGVtb24uY28udWs+CglCdWcgZml4LgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBET1MgZW52aXJvbm1lbnQgcGFzc2luZy4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN5c21ldHJpY3MzMlcgZm9yIFNQSV9HRVRJQ09OVElUTEVMT0dGT05UIHJldHVybnMgY29ycmVjdCBmb250bmFtZS4KCgkqIGluY2x1ZGUvZm9udC5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IEZPTlRfR2V0T2JqZWN0MzJXKCksIEdldE9iamVjdDMyVygpLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViIFJlZ2lzdGVyVGFza0xpc3QuCglOZXcgZnVuY3Rpb24gRW51bURpc3BsYXlTZXR0aW5nczMyVygpLgoKCSogbWlzYy9udGRsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgcGFyYW1ldGVyIGNoZWNraW5nIGluIFJsdENvcHlTaWQuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIG1lc3NhZ2UgbWFwcGluZyAzMkE8LS0+MzJXIGZvciBFTV8sIENCXywgTEJfIGZvciBVbmljb2RlLgoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2F2aWZpbDMyLnNwZWMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG5ldyBkbGwgYXZpZmlsMzIuZGxsLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmMsIGluY2x1ZGUvZG9zZXhlLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpcnN0IHNob3QgYXQgRFBNSSByZWFsbW9kZSBjYWxscy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc2V2ZXJhbCBidWdzIHdpdGggRExMIGluaXRpYWxpemF0aW9uLgoKVGh1IE9jdCAyMiAxNzowMjoyNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3N5c2xldmVsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgb3JkaW5hbCBmb3IgdHdvIHN5c2xldmVsIGZ1bmN0aW9ucy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFub3RoZXIgbWlzc2luZyBXSU5BUEkuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgY29ycmVjdGlvbnMgaW4gbW1pbyBkZWNsYXJhdGlvbnMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUYWtlIHZpcnR1YWwgc2l6ZXMgaW4gYWNjb3VudCBmb3IgdGhlIHRvdGFsIHZtYSBzaXplLgoKCSogb2xlL25scy9yb20ubmxzOiBEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQWRkIHNvbWUgbW9yZSBOTFMgZGVmaW5pdGlvbnMgZm9yIHRoZSBSb21hbmlhbiBsYW5ndWFnZS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBwcm9ncmFtcyAocXVha2UyIGV0IGFsKSBkbyBjaGVjayBmb3IgRFNDQVBTX0VNVUxEUklWRVIgYW5kIHN0b3AKCXRvIHdvcmsuICdBZGp1c3QnIGNhcHMgZmxhZ3MgYWNjb3JkaW5nbHkuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglQZXRlIFJhdHpsYWZmIDxwcmF0emxhZmZAY2ZhLmhhcnZhcmQuZWR1PgoJU3R1YiBmb3IgQ29DcmVhdGVHdWlkKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIG11bHRpbWVkaWEvbWNpY2RhLmM6CglCcmlhbiBMaXR6aW5nZXIgPGJyaWFuQGxpdHppbmdlci5jb20+CglGaXhlcyBmb3IgRnJlZUJTRC4KCgkqIGxpYnRlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC9NYWtlZmlsZS5pbjoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAbWluZXJ2YS5jYy51aXQubm8+CglNYWtlIHN1cmUgaGVsbG8zcmVzLmggaXMgZ2VuZXJhdGVkIGV2ZW4gaWYgJ21ha2UgZGVwZW5kJyBuZXZlciBoYXMKCWJlZW4gcnVuLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBtb3ZpbmcgYW5kIHNpemluZyBvZiBjaGlsZCB3aW5kb3dzLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVhRdWVyeUtleW1hcCAtPiBUU1hRdWVyeUtleW1hcCAoZml4ZXMgdGhlIFhJTyBlcnJvcnMgcmVwb3J0ZWQpLgoKV2VkIE9jdCAyMSAxNzoyMDo0OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtaXNjZW11L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaW5kaXJlY3Rpb24gZm9yIGN0eF9kZWJ1ZyB0byB0aGUgRE9TIGxvYWRlciwgc28gV2luZWxpYiB3b3JrcwoJYWdhaW4uCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cHBvcnQgYW5vbiBzaGFyZWQgbWFwcGluZ3MgdXNpbmcgdGVtcG9yYXJ5IGZpbGVzICh3b250IGJlIGRlbGV0ZWQKCXlldCkuCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXMgZnJlZWluZyB0aGUgaW5jb3JyZWN0IHBvaW50ZXJzIC0+IGNyYXNoIGluIG1hbGxvY3MvZnJlZXMuCgoJKiBmaWxlcy9kb3NfZnMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWZpbmVEb3NEZXZpY2Ugc3R1YiBhZGRlZC4KCgkqIG1pc2NlbXUvbWFpbi5jLCB3aW5lLmluaTogQ2hhZCBQb3dlbGwgKHB4cHhAdXNhLm5ldCkKCUFkZGVkIGEgZGVmYXVsdCBwcm9ncmFtIG9wdGlvbiBpbiB3aW5lLmNvbmYgaW4gc2VjdGlvbiBbcHJvZ3JhbXNdIGtleQoJRGVmYXVsdC4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogRGF2aWQgQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJQmV0dGVyIGZpeCBmb3IgdGhpc19pc19hX3N5bnRheF9lcnJvci4KCgkqIG9sZS9ubHMvKi5ubHM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIHRoZSBlbnRyaWVzIGZvciBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FIGFuZAoJTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVcGRhdGVkIG1hbnBhZ2UuCgoJKiByZWxheTMyL21zYWNtMzIuc3BlYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB3cm9uZyBvcmRpbmFscy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgYSBidWcgaW4gUmVjdEluUmVnaW9uLgoKVHVlIE9jdCAyMCAxNToyNjoyNiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50ZXJydXB0cy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVJlbW92ZWQgYW4gaW5jb3JyZWN0IGVycm9yIG1lc3NhZ2UuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQG1pbmVydmEuY2MudWl0Lm5vPgoJTWFrZSBzdXJlIHRoZSBhY2Nlc3MgZnVuY3Rpb25zIGFyZSBhbHdheXMgdXNlZCB0byBnZXQgbGFiZWwgYW5kIHNlcmlhbAoJbnVtYmVyLgoKTW9uIE9jdCAxOSAwODo0ODoyNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQGhvbC5mcj4KCUZpeGVkIGJ1ZyBvbiBwbGF0Zm9ybXMgd2VyZSBidWZmZXJzIHJldHVybmVkIGJ5IGdldGVudigpIHNoYWxsIG5vdCBiZQoJZnJlZSgpJ2VkLiBBZGRlZCBGcmVuY2ggKGRlZmF1bHQpIGluIGxvY2FsZSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogRGF2ZSBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglDaGFuZ2VkICJ0aGlzIGlzIGEgc3ludGF4IGVycm9yIiB0byAidGhpc19pc19hX3N5bnRheF9lcnJvciIgdG8gbWFrZSBhCgljb21waWxlLXRpbWUgZXJyb3IgbWVzc2FnZSBtYWtlIG1vcmUgc2Vuc2UuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBvZmYgYnkgb25lIGVycm9yIGluIEhBTkRMRV9HZXRPYmpQdHIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBPY3QgMTggMTQ6NDg6MzEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVHJ5IHRvIGltcGxlbWVudCB0aGUgT0ZfU0hBUkVfWFhYIG9wdGlvbnMuCglNb3ZlIHRoZSBtb2RlIHRyYW5zbGF0aW9ucyB0byBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21haW4uaCwgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZXN2ci5jLCBvbGUvc3RvcmFnZS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWIgZm9yIENvU2V0U3RhdGUzMi4KCgkqIG1pc2NlbXUvbWFpbi5jOiBDaGFkIFBvd2VsbCA8cHhweEB1c2EubmV0PgoJQWRkZWQgYWJpbGl0eSB0byByZWFkIGEgc3RhcnR1cCBwcm9ncmFtIGZyb20gd2luZS5pbmkgZmlsZS4KCVB1dCBpdCBpbiBzZWN0aW9uIFtwcm9ncmFtc10ga2V5IFN0YXJ0dXAuCgoJKiBpbmNsdWRlL3RyYWNrYmFyLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRnVydGhlciBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGVkIExvYWRDdXJzb3JGcm9tRmlsZSwgZml4ZWQgRHJhd0ljb25FeCB0byBzdXBwb3J0IG9mZnNjcmVlbgoJZHJhd2luZywgZml4ZWQgQ1VSU09SSUNPTl9DcmVhdGVGcm9tUmVzb3VyY2UgdG8gc3VwcG9ydCBMUl8gc2VtYW50aWNzLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgTG9hZEltYWdlIHRvIHN1cHBvcnQgYWxtb3N0IGFsbCBMUl8gZmxhZ3MuCgoJKiBvYmplY3RzL2RpYi5jOiBUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIGJ1ZyBpbiBESUJfU2V0SW1hZ2VCaXRzX1JMRTggKGJlY2F1c2UgJ2NvbG9yJyB2YXIgd2FzIFdPUkQsIGFsbAoJQ09MT1JFRnMgaGFkIHJlZCBwYXJ0IHplcm9lZCkgdGhhdCBtYWRlIHBsZW50eSBvZiBjeWFuIGNvbG9ycywgbWlub3IKCWJ1ZyBmaXhlcywgY2hhbmdlcyB0byBzdXBwb3J0IExSXyBmbGFncy4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUFkZGVkIFZJUlRVQUxfTWFwRmlsZVcgdG8gbWFwIGZpbGUgdG8gbWVtb3J5IGluIG9uZSBmdW5jdGlvbiBjYWxsLgoKCSogaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCB3aW5kb3dzL211bHRpbW9uLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCU1vdmVkIE11bHRpbW9uaXRvciBBUEkgZGVjbGFyYXRpb25zIHRvIHdpbmRvd3MuaC4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvZHJpdmVyLmgsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYywgd2luZG93cy9kcml2ZXIuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50ZWQgRGVmRHJpdmVyUHJvYzMyIGZyb20gd2lubW0uZGxsLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGluY2x1ZGUvc2Nyb2xsLmgsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglHb3QgcmlkIG9mIGZsaWNrZXJpbmcgc2Nyb2xsYmFyIGFycm93cy4gTURJIHNjcm9sbGluZyBzcGVlZGVkIHVwIGEKCWJpdC4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvZGV1Lm5scywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJR2V0TG9jYWxlSW5mbzMyQSBjYW4gaGFuZGxlIGxlbj0wIG5vdywgc2V0cyBMYXN0RXJyb3IgYW5kIHRvdWNoZXMKCWJ1ZmZlciBvbmx5IHdoZW4gbmVjZXNzYXJ5LgoJVXBkYXRlZCBkZXUubmxzIGFuZCBzb21lIExDVFlQRVMgaW4gd2lubmxzLmguCgoJKiBpZjE2MzIvcmVsYXkuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNhbGxQcm9jW0V4XTMyVyBjYWxsZWQgd2l0aCBscFByb2NBZGRyZXNzPT1OVUxMIHNob3VsZCByZXR1cm4gemVybyBhbmQKCW5vdCBjcmFzaC4KClNhdCBPY3QgMTcgMTM6MDc6NDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWR1Y2VkIGh1Z2UgKDFHQikgaGVhcCBjcmVhdGlvbiB0aGF0IGNhdXNlZCBTdGFyY3JhZnQgdG8gZmFpbC4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbXVsdGltZWRpYS9kcGxheS5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3IgU29sYXJpcy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBub24gT1NTIHN5c3RlbXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBub24gWEY4Ni1ER0Egc3lzdGVtcy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3Qvdm9saW5mby5jOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJTmV3IGZpbGUgdG8gdGVzdCBEUklWRV9HZXRMYWJlbC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWwuY2E+CglTbWFsbCwgc3Vib3B0aW1hbCwgZml4IGZvciAzMiBiaXQgY2RhdWRpbyBvcGVuIHJvdXRpbmVzLiBOZWVkcyBwcm9wZXIKCTMyYml0IGNkYXVkaW8gYml0IHN1cHBvcnQgYmVmb3JlIGl0IGNhbiBiZSByZW1vdmVkLi4uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsLmNhPgoJQWRkZWQgYSBidW5jaCBvZiBzdHVicyBmb3IgZGRyYXcgc3VmYWNlIHJvdXRpbmVzLiBBbGwgc3R1YnMgZm9yCglzdXJmYWNlIHByZXNlbnQgbm93LgoJQ29tbWVudGVkIG91dCBtZXNzYWdlIHB1bXAgY2FsbHMuIEkgZG9uJ3Qgc2VlIGEgcmVhc29uIGZvciB0aGVtIGJlaW5nCgl0aGVyZS4gRXZlcnl0aGluZyB3b3JrcyBmaW5lIHdpdGggLWRlc2t0b3AgYW5kIC1tYW5hZ2VkIHN0aWxsIGhhcwoJcHJvYmxlbXMuIERpc2FncmVlbWVudHM/CgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIEdldExvY2FsZUluZm8zMkEgZm9yIG90aGVyIGxhbmd1YWdlcyB0aGFuIGVuX3VrLgoJTWFkZSBpdCByZWNvZ25pc2UgTE9DQUxFX1NZU1RFTV9ERUZBVUxULCBMT0NBTEVfU1lTVEVNX0RFRkFVTFQgYW5kCglsYXN0IGJ1dCBub3QgbGVhc3QgdGhlIGZpcnN0IGFyZ3VtZW50IGxjaWQgd2hlcmUgaXMgYWxsIGFib3V0Li4uCgoJKiBpbmNsdWRlL3N5c2xldmVsLmgsIG1pc2MvcmVnaXN0cnkuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG11bHRpbWVkaWEvdGltZS5jLCB3aW5kb3dzL2NhcmV0LmMsIGRsbHMvbXNhY20zMi9idWlsdGluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgbW9yZSBtaXNzaW5nIFdJTkFQSXMgKGhvcGVmdWxseSBjb3JyZWN0KS4KCgkqIG9sZS9vbGUybmxzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdGhlID0gLT4gPT0gYnVnLgoKCSogbXNkb3MvaW50MmYuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJU2hlbGwgcGFyYW1ldGVycyAoY29uZmlnLnN5cykgYW5kIEFOU0kgc3VwcG9ydCBzdHVicy4KCgkqIG1zZG9zL01ha2VmaWxlLmluOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBpbnQxNi5jIGFuZCBpbnQyOS5jLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludGVycnVwdHMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCU1vcmUgaW50ZXJydXB0cyB0aGF0IGNhbiBiZSBkb25lIGZyb20gRE9TIG1vZGUuCgoJKiBtc2Rvcy9pbnQyOS5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBpbnQyOSAoRmFzdCBXcml0ZSB0byBTY3JlZW4pIHN1cHBvcnQuCgoJKiBtc2Rvcy9pbnQxNi5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBpbnQxNiAoS2V5Ym9hcmQpIHN1cHBvcnQsIG1vc3RseSBzdHVicy4KCkZyaSBPY3QgMTYgMTU6NDA6MjEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgYnVnZml4ZXMsIG5ldyBzdHVicyBTSEdldFJlYWxJREwsIFNIUmVnUXVlcnlWYWx1ZTMyVywKCVNIUmVnUXVlcnlWYWx1ZUV4MzJXLCBTdHJSZXRUb1N0ck4sIFN0ckNoclcsIFNIQWxsb2NTaGFyZWQsCglTSExvY2tTaGFyZWQsIFNIVW5sb2NrU2hhcmVkLCBTSEZyZWVTaGFyZWQsIFNldEFwcFN0YXJ0aW5nQ3Vyc29yMzIsCglTSExvYWRPTEUzMiwgU2hlbGxfTWVyZ2VNZW51czMyLCBQYXRoR2V0RHJpdmVOdW1iZXIzMiwgRHJpdmVUeXBlMzIsCglTSEFib3J0SW52b2tlQ29tbWFuZCwgU0hPdXRPZk1lbW9yeU1lc3NhZ2VCb3gsIFNIRmx1c2hDbGlwYm9hcmQuCgoJKiBtaXNjL250ZGxsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCURpZXRtYXIgS2xpbmcgPGRpZXRtYXIua2xpbmdAdXNhLm5ldD4KCUFkZGVkIHVuZG9jdW1lbnRlZCBmdW5jdGlvbiBSdGxPcGVuQ3VycmVudFVzZXIuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgbWlzYy9zaGVsbC5jLCBtaXNjL3Zlci5jLCBtaXNjL3ZlcnNpb24uYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbmFtZWQgYWxsIExQSU1BR0VfKiB0eXBlcyB0byBQSU1BR0VfKi4KClRodSBPY3QgMTUgMTM6MDM6MTAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCBhbiBlcnJvciB3aGVuIGFuIG93bmVkIHdpbmRvdyBhY3RpdmF0ZXMgaXRzIG93bmVyIGR1cmluZwoJY3JlYXRpb24uCgoJKiB3aW5kb3dzL2RlZmRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2xvc2luZyBhIGRpYWxvZyB1c2luZyB0aGUgbWVudSBiYXIgKCJ4IiBvciAiLSIgYnV0dG9uIG9yIHdpbmRvd3MKCW1lbnUpIG11c3QgZ2VuZXJhdGUgYSBXTV9DT01NQU5EK0lEQ0FOQ0VMIG1lc3NhZ2UsIHVubGlrZSBjbG9zaW5nCglub3JtYWwgd2luZG93cyB3aGVuIERlc3Ryb3lXaW5kb3coKSBpcyBjYWxsZWQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBjaXAuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW4zMi9vcmRpbmFscy5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgUHJpdmF0ZUV4dHJhY3RJY29uRXhbQVddLCBQcml2YXRlRXh0cmFjdEljb25zVywKCVJlZ2lzdGVyU2hlbGxIb29rV2luZG93LCBEZXJlZ2lzdGVyU2hlbGxIb29rV2luZG93LCBHZXRQcm9nbWFuV2luZG93LAoJR2V0VGFza21hbldpbmRvdywgU2V0UHJvZ21hbldpbmRvdywgU2V0U2hlbGxXaW5kb3dFeCwKCVNldFRhc2ttYW5XaW5kb3cuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIG1pc2MvbnRkbGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIE50UXVlcnlJbmZvcm1hdGlvblRocmVhZCwgTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4sCglSdGxBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQsIFJ0bEVxdWFsU2lkLCBSdGxGcmVlU2lkLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIFBsYXlTb3VuZCB0byBzdGFydCBpdHMgdGhyZWFkIHRoZSByaWdodCB3YXkuCgpXZWQgT2N0IDE0IDE4OjQwOjM1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglDQl9TRVRDVVJTRUwgYW5kIHNvbWUgb3RoZXIgZml4ZXMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUJldHRlciBRVUVVRV9GbHVzaE1lc3NhZ2VzKCkuCgoJKiByZWxheTMyL2dkaTMyLnNwZWMsIG9iamVjdHMvZm9udC5jLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL2dkaS5zcGVjOgoJTW9zaGUgVmFpbmVyIDxtb3NoZXZAZWFzeWJhc2UuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRPdXRsaW5lVGV4dE1ldHJpY3MzMkEuCglBZGRlZCBzdHJ1Y3R1cmVzIGZvciBPVVRMSU5FVEVYVE1FVFJJQ1MuCgoJKiBvYmplY3RzL2RjLmMsIGluY2x1ZGUvZ2RpLmgsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEbyBub3QgY2xpcCBzb3VyY2UgcmVjdGFuZ2xlIGV2ZW4gYnkgdmlzaWJsZSByZWdpb24gZm9yIGJpdGJsdHMuCglBZGRlZCBmaWVsZCAndG90YWxFeHRlbnQnIHRvIFdJTl9EQ19JTkZPLgoKCSogbXNkb3MvdnhkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgVk1NIFBNIEFQSSBBSD0wMjZbZGVdIChuZXZlciBzYXkgJ3NhZmUgbW9kZScpLgoKCSogbWVtb3J5L2hlYXAuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IExvY2FsMzJGcmVlIGNhdXNlZCBmcmVlIGhhbmRsZXMgbGlzdCBjb3JydXB0aW9uLgoKCSogaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgLS1kaXNhYmxlLWRlYnVnIGNvbmZpZyBvcHRpb24uCgpUdWUgT2N0IDEzIDEyOjUwOjA0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglBZGRlZCBzdHVicyBTSFJlZ0Nsb3NlS2V5KCksIFNIUmVnT3BlbktleVtBV10oKSwgU0hSZWdRdWVyeVZhbHVlRXhBKCkKCWFuZCBGaWxlSWNvbkluaXQoKSBuZWVkZWQgYnkgV2luOTUgZXhwbG9yZXIuCgpNb24gT2N0IDEyIDA3OjI1OjU0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvbWVudS5jOgoJTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW1wcm92aW5nIGtleWJvYXJkIGhhbmRsaW5nLCBpbmNsdWRpbmcgYWNjZWxlcmF0b3Iga2V5cyBpbiBkaWFsb2cKCWJveGVzLiBBbHNvIGZpeGVzIGVudGVyIGtleSBpbiBBZ2VudDMyIGVkaXQgYm94LgoKU3VuIE9jdCAxMSAxOTozNzoyMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tZGxnLmM6IEVyaWMgUG91ZWNoICA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglBZGRlZCBzdXBwb3J0IGluIGZpbGUgZGlhbG9nIGJveGVzIGhhbmRsaW5nIGZvciBmaWx0ZXJzIGxpa2UKCSIqLnR4dDsqLmJhdCIuCgoJKiB3aW4zMi9rZXJuZWwzMi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgbmV3IFBFIERMTCBpbml0YWxpemF0aW9uIGNvZGUsIHRyeWluZyB0byBjYWxsIHRoZQoJRGxsRW50cnlQb2ludCByb3V0aW5lcyBhbHdheXMgaW4gY29ycmVjdCBvcmRlciA6LSkKCUJ5cGFzcyBzbm9vcGluZyB3aGVuIGdldHRpbmcgZGF0YSBidWZmZXIgYWRkcmVzc2VzICh0aHVuayBidWZmZXJzLAoJX19HUCBoYW5kbGVycykgYW5kIGZvciAzMi1iaXQgcm91dGluZXMgZGlyZWN0bHkgY2FsbGVkIGZyb20gMTYtYml0CgkoZHVlIHRvIHN0YWNrIGFkZHJlc3Mgc2l6ZSBwcm9ibGVtcykuCgoJKiB3aW4zMi9vcmRpbmFscy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgQ29tbW9uVW5pbXBTdHViLCBNYXBISW5zdChMU3xTTClfUE4sIFczMlNfQmFja1RvMzIuCglTdHViIGZvciBIb3VzZUNsZWFuTG9naWNhbGx5RGVhZEhhbmRsZXMsIGZpeGVkIGszMnd2c3ByaW50ZkEuCgoJKiB0b29scy9idWlsZC5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgKHBhcnRpYWxseSkgdGhlIEtFUk5FTCBUaHVua2xldCBBUEkgYW5kIENhbGxiYWNrIENsaWVudAoJQVBJIChLRVJORUwuNTYwLTU2OCw2MDQtNjEyLDYxOS02MjIpLgoJQWRkZWQgc3R1YnMgZm9yIEsyMjgsIEsyMzcsIEtFUk5FTC4zNjUsIEtFUk5FTC40NDcuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBpZjE2MzIvZ2RpLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBDcmVhdGVVc2VyKERpc2NhcmRhYmxlKUJpdG1hcDE2LgoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBIRUFQX1dJTkVfQ09ERTE2U0VHIFNFR1BUUiBoZWFwcyB3aXRoIDE2LWJpdCBjb2RlIHNlZ21lbnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2xvYmFsRml4MTYgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIHNlbGVjdG9yIHRvIHRoZSBtZW1vcnkgYXJlYS4KCgkqIG1zZG9zL3Z4ZC5jLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9jb21tLnNwZWMsIGlmMTYzMi93cHJvY3Muc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIENPTU0uRFJWLCBSRUJPT1QuVlhELCBWREQuVlhELgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS9zeXNsZXZlbC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgZW1lcmdlbmN5IFRFQiBzZWxlY3RvciB0byBhdm9pZCBkZWJ1Z2dlciBjcmFzaGVzIHdoZW4gc3RlcHBpbmcKCXRocm91Z2ggcmVsYXkgc3R1YnMgKG9yIHdoZW4gRlMgaXMgaW52YWxpZCBvdGhlcndpc2UpLgoKCSogd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1PVVNFLkRSViByb3V0aW5lcyBtb3ZlZCB0byBldmVudC5jLiBDYWxsIG1vdXNlIGV2ZW50IHByb2NlZHVyZS4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL2dkaS5zcGVjLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MvcGF0aC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2VkIERDIG1lbWJlcnMgdy5oVmlzUmduLCB3LmhDbGlwUmduLCBhbWQgdy5oR0NDbGlwUmduIHRvCgljb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgZGV2aWNlLCBub3QgdGhlIERDIG9yaWdpbi4gVGhpcyBpcwoJbmVjZXNzYXJ5IHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgR2V0Q2xpcFJnbjE2IGFuZCBJbnF1aXJlVmlzUmduLgoJU2VsZWN0VmlzUmduIGFsc28gZXhwZWN0cyByZWdpb24gaW4gZGV2aWNlLXJlbGF0aXZlIGNvb3JkaW5hdGVzLgoJQWRhcHRlZCB0aGUgcmVzdCBvZiBXaW5lIHRvIHRoaXMgY29vcmRpbmF0ZSBjaGFuZ2UuCglJbXBsZW1lbnRlZCBFeHRTZWxlY3RDbGlwUmduLgoKCSogdG9vbHMvd2luYXBpLWNoZWNrLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgZmlsZXMvZG9zX2ZzLmM6CglBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCVNtYWxsIGZpeC4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvbmVleGUuaCwgaWYxNjMyL2tlcm5lbC5zcGVjOgoJQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglZZXQgYW5vdGhlciBzbWFsbCBzZWxmLWxvYWRlciBmaXguCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCUZpeGVkIHNldmVyZSBidWc6IFNldEN1cnJlbnREaXJlY3RvcnkzMkEgZGlkbid0IHNldCBwVGFzay0+Y3VyZGlyCgljb3JyZWN0bHkgZHVlIHRvIGN1cnJlbnQgZHJpdmUgYmVpbmcgc2V0IHRvbyBsYXRlLgoKCSogTWFrZS5ydWxlcy5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVc2UgJChBUykgaW5zdGVhZCBvZiAkKENDKSB0byBjb21waWxlIC5zIGZpbGVzLgoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbW1yZWcuaCwgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgZGxscy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNU0FDTS5ETEwsIE1TQUNNMzIuRExMIGFuZCBJTUFHRUhMUC5ETEwuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmgsIHJlbGF5MzIvaW1hZ2VobHAuc3BlYywgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL2ludGVybmFsLmMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIElNQUdFSExQLkRMTC4KCgkqIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9tc2FjbWRydi5oLCByZWxheTMyL21zYWNtMzIuc3BlYywgaWYxNjMyL21zYWNtLnNwZWMsIGRsbHMvbXNhY20zMi8uY3ZzaWdub3JlLCBkbGxzL21zYWNtMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20zMi9idWlsdGluLmMsIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ZpbHRlci5jLCBkbGxzL21zYWNtMzIvZm9ybWF0LmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTVNBQ00uRExMIGFuZCBNU0FDTTMyLkRMTC4KCgkqIHdpbjMyL2RldmljZS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgdGhpbmdzIHRoYXQgd2VyZSBlYXJsaWVyIGFkZGVkIGJ5IG1pc3Rha2UuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVGhlIGltcGxlbWVudGF0aW9uIG9mIG1taW9Xcml0ZSBpcyBub3cgY2FsbGVkIGluc3RlYWQgb2YgdGhlIHN0dWIuCgoJKiBpbmNsdWRlL3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXhlcywgc2hlbGx2aWV3IHVzZXMgRFBBJ3Mgbm93LCBJU2hlbGxWaWV3X0dldEl0ZW1PYmplY3QgaW1wbGVtZW50ZWQuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnM6IFNIR2V0RmlsZUluZm8zMlcsIFJlYWRDYWJpbmV0U3RhdGUsIFdyaXRlQ2FiaW5ldFN0YXRlLCBJc1VzZXJBZG1pbi4KCUltcGxlbWVudGVkOiBTSEdldFBhdGhGcm9tSURMaXN0MzJXLgoJQ2hhbmdlZCBQYXRoQ29tYmluZS4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0cnVjdHVyZXMgRFZBU1BFQ1QsIFRZTUVELCBJRExMaXN0LgoJU2hlbGwgc3BlY2lmaWMgY2xpcGJvYXJkIGZvcm1hdHMuCgoJKiByZWxheTMyL3dpbnNwb29sLnNwZWMsIG1pc2MvcHJpbnRkcnYuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBFbnVtUHJpbnRlcnNXLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgZmlyc3QgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGNsYXNzIElETExpc3QgIkl0ZW0gSUQgTGlzdCBMaXN0IiAoaW50ZXJuYWwpLgoKCSogbWlzYy92ZXIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBjaGFuZ2VzICh1c2VzIEhJV09SRC9MT1dPUkQpLgoKCSogd2luZG93cy9kaWFsb2cuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCVNhdCBPY3QgMTAgMTI6MDA6MDAgMTk5OCAgSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIENyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1Bb3JXLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0PgoJRG9uJ3QgaW5zdGFsbCBvYmplY3QgZmlsZXMgd2hlbiAtLWRpc2FibGUtbGliIGlzIHNlbGVjdGVkLgoKCSogZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdD4KCURvbid0IHByaW50IG5hbWUgZm9yIDMyIGJpdCBsaWIgbXVsdGlwbGUgdGltZXMuCglDbGVhbiB1cCBwcmludGluZyBpbiBERUJVR19Qcm9jZXNzRGVmZXJyZWREZWJ1Zy4KCgkqIG1lbW9yeS9oZWFwLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglTbWFsbCBmaXhlcy4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCUJ1Z2ZpeDogQ2hhbmdlZCBHZXREcml2ZVR5cGUzMkEoTlVMTCkgdG8gdXNlIGN3ZCdzIHJvb3QuCgoJKiBvbGUvdHlwZWxpYi5jLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlY2xpLmMsIG9sZS9vbGVzdnIuYywgb2xlL3N0b3JhZ2UuYywgbWlzYy9udGRsbC5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiBjb3JyZWN0aW9ucy9zdGFuZGFyZGl6YXRpb25zLgoKCSogbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglFcmljIFBvdWVjaCAgPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJU3RhcnRlZCBjb2RpbmcgMzIgYml0IE1DSSBoYW5kbGluZy4KCUFkZGVkIE9wZW4vQ2xvc2UgdG8gbG93LWxldmVsIE1DSSBkcml2ZXJzIChhdWRpbywgbWlkaSwgYW5pbSwgY2RhKS4KCVdyb3RlIE1DSSBNSURJIHN1cHBvcnQuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVlldCBhbm90aGVyIGltcHJvdmVtZW50IHRvIHRoZSBiZXppZXIgY29kZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJR2V0VGlja0NvdW50cygpIGhhcyBhIGdyYW51bGFyaXR5IGluIHdpbmRvd3Mgb2YgMjUgbXNlYydzLgoJR2lyb3RlbCdzIHNlcmlhbCBjb21tdW5pY2F0aW9uIGFwcGVhcnMgdG8gZGVwZW5kIG9uIGl0LCBzbyBJIGd1ZXNzCglpdCdzIGEgZmVhdHVyZS4uLgoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglVcGRhdGUgdGhlIG1vZGVtbiBzdGF0dXMgYml0IHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIFJMU0QgbGluZSBpcwoJYWN0aXZlIGluIGV2ZXJ5IGNhbGwgdG8gR2V0Q29tbUVycm9yKCkuIFRoaXMgaXMgbm90IHRoZSBwcm9wZXIgcGxhY2UsCglidXQgc2luY2Ugd2luZSBkb2Vzbid0IGRvIGFueSBldmVudC1zdHVmZi4uLgoJRml4ZWQgc29tZSBUUkFDRSBjYWxsJ3MgZmFjZWQgd2l0aCBub24gemVybyB0ZXJtaW5hdGVkIHN0cmluZ3MuCglSZXN0b3JlIHRoZSB0ZXJtaW5hbCBzdGF0ZSBhdCBDbG9zZUNvbW10IHRvIHRoZSBzdGF0ZSBpdCB3YXMgYXQKCU9wZW5Db21tKCksIHNvIHRoZSBtb2RlbSB3aWxsIGdvIG9mZi1ob29rLgoKCSogbG9hZGVyL21vZHVsZS5jOiBBbGV4YW5kZXIgTGFyc3NvbiAgPGFsbGFAbHlzYXRvci5saXUuc2U+CglHZXRNb2R1bGVGaWxlTmFtZTMyQSgpIHJldHVybnMgbG9uZyBmaWxlbmFtZSBpZiBhcHAgc2V0cyBvc3ZlcnNpb24gPj0KCTQuMC4gQWxzbyBtb3ZlZCB0aGUgbG9uZyBmaWxlbmFtZSBoYWNrZXJ5IHRvIEdldExvbmdQYXRoTmFtZTMyQSgpIHNvCglpdCBjYW4gYmUgdXNlZCBieSB3aW4zMiBwcm9ncmFtcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCUdldExvbmdQYXRoTmFtZTMyQSgpIHJldHVybnMgZG9zIGZvcm1hdCBsb25nIGZpbGVuYW1lIGluc3RlYWQgb2YgdW5peAoJZm9ybWF0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU21hbGwgZml4ZXMuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgU0hGbHVzaENsaXBib2FyZC4KCgkqIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMuCglDaGFuZ2VkIGFsZ29yaXRobSBpbiBEUEFfUXVpY2tTb3J0KCkuCglGaXhlZCBoZWFwIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBjb250cm9sIFt1bl1yZWdpc3RyYXRpb24gaW4KCUNvbUN0bDMyTGliTWFpbigpLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGEgYnVnLgoKCSogaW5jbHVkZS90b29sdGlwcy5oLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgdHJhY2tpbmcgc3VwcG9ydCBhbmQgZml4ZWQgbG9hZGluZyBvZiByZXNvdXJjZSBzdHJpbmdzLgoJQWRkZWQgdW5yZWdpc3RlciBjb2RlLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2lwYWRkcmVzcy5oLCBpbmNsdWRlL25hdGl2ZWZvbnQuaCwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBJUEFkZHJlc3MgYW5kIE5hdGl2ZUZvbnQgY29udHJvbHMuCgoJKiBpbmNsdWRlL2ltYWdlbGlzdC5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbWlub3IgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS90b29sYmFyLmgsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRyYXdpbmcgYW5kIHBsYWNlbWVudCBjb2RlLiBFeHBsb3JlciBzdHlsZSBjb21tb24gZGlhbG9ncyBhcmUKCWxvb2tpbmcgZ29vZCBub3cuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGJ1ZyBpbiBEcmF3SWNvbkV4MzIoKS4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgR2V0U3lzdGVtSW5mb3JtYXRpb24zMltBL1ddLgoKCSogd2luZG93cy9ub25jbGllbnQuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi91c2VyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgRHJhd0NhcHRpb25bMTYvMzJdIGFuZCBEcmF3Q2FwdGlvblRlbXBbMTYvMzJBLzMyV10uCglGaXhlZCBoYW5kbGluZyBvZiBXU19FWF9UT09MV0lORE9XLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVkLgoKCSogd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIGluY2x1ZGUva2V5Ym9hcmQuaDoKCURhdmlkIEZhdXJlIDxmYXVyZUBrZGUub3JnPgoJQWRkZWQgS0VZQk9BUkRfVXBkYXRlU3RhdGUsIHRvIHJlYWQgdGhlIG1vZGlmaWVycyB3aGVuIHRoZSB3aW5lIGFwcCBpcwoJYWN0aXZhdGVkLiBVc2VzIHRoZSBuZXcgS0VZQk9BUkRfVXBkYXRlT25lU3RhdGUuCglGaXhlZCBhIHByb2JsZW0gd2l0aCBtZW51IGFjY2VsZXJhdG9ycyAoQWx0LWxldHRlciBnZW5lcmF0ZXMgYSBkb3duCglhcnJvdyBldmVudCB3aGljaCBiZWVwcyBpZiBub3QgZmlsdGVyZWQpLgoJU3BlZWRlZCB1cCBUb0FzY2lpMTYvMzIoKSBhIGxpdHRsZSBiaXQuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgV2luZSdzIGRlYnVnZ2VyIHdvcmsgc2F0aXNmYWN0b3JpbHkgd2l0aCBET1MgYXBwcy4KCVBlcmhhcHMgZGVyZWZlcmVuY2luZyB3b3JrIGJldHRlciBmb3IgV2luMTYgYXBwcyB0b28gbm93LCBidXQKCWl0IGFwcGVhcnMgdGhlIGRlYnVnZ2VyIGNvcmUgd2Fzbid0IGRlc2lnbmVkIGZvciBzZWdtZW50YXRpb24uCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2ltdWxhdGVzIERQTUkgbWVtb3J5IG1hcCBieSBjb252ZXJ0aW5nIGxvd2VyLU1CIHNlZ21lbnQgYmFzZQoJYWRkcmVzc2VzIGFzIG5lY2Vzc2FyeS4gSW1wbGVtZW50ZWQgYWxsb2NhdGluZy9mcmVlaW5nIERPUyBtZW1vcnkKCWJsb2Nrcy4gQWRkZWQgWE1TIGhvb2suIChEUE1JIHJlbWFpbnMgZGlzYWJsZWQgYnkgZGVmYXVsdCB1bnRpbAoJc29tZW9uZSBpbXBsZW1lbnRzIHRoZSByYXcgbW9kZSBzd2l0Y2ggZW50cnkgcG9pbnRzIHBrdW56aXAgbmVlZHMuKQoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJIHRoaW5rIGl0J3MgdGltZSB0byByZXRoaW5rIHRoZSBIRklMRTE2X1RPX0hGSUxFMzIgc3RyYXRlZ3ksCgljYW4ndCBrZWVwIHdvcmtpbmcgYXJvdW5kIGZsYXdzIGluIGl0IGxpa2UgdGhpcyAobm93IHN0ZGlvCgl3YXMgZ2V0dGluZyBjbG9zZWQgd2hlbiBwcm9ncmFtcyBjbG9zZSBoYW5kbGVzID49NSkKCgkqIG1zZG9zL3htcy5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50MmYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYmFzaWMgWE1TIGZ1bmN0aW9ucy4gd2NiLmV4ZSAoV2luMTYgZGlzYXNzZW1ibGVyKSBub3cKCXNlZW1zIHRvIHdvcmsgZmluZSB1bmRlciBXaW5lLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgc29tZSBzeXN0ZW0gZGVwZW5kZW5jaWVzIHRvIGxvYWRlci9kb3MvZG9zdm0uYy4gSW1wbGVtZW50ZWQKCWVudmlyb25tZW50YWwgYXJndlswXSBwYXNzaW5nIHRvIERPUyBhcHBzLiBBZGRlZCBYTVMgaG9va3MuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgbWVtc2V0KCkgdG8gcHJldmVudCBhIGRlYnVnZ2VyIHNlZ2ZhdWx0IGNhdXNlZCBieQoJdW5pbml0aWFsaXplZCBwb2ludGVycyBpbiB0aGUgc3RhYnMgbG9va3VwIHRhYmxlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQSBmZXcgZml4ZXMuCgoJKiByZWxheTMyL250ZGxsLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUnRsQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkIGVudHJ5LgoKCSogbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2VuZXJpYyBkeW5hbWljIGRsbCBsb2FkZXIgdXNpbmcgZGwqKCkgQVBJLgoJSW5jbHVkZXM6IHN0ZGNhbGwtPmNkZWNsIG1hcHBpbmcgYWJpbGl0eSwgc25vb3BpbmcuCgkoVGVzdGVkIG9ubHkgd2l0aCBnbGlkZTJ4LmRsbCAtPiBsaWJnbGlkZTJ4LnNvKQoKCSogbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvdGltZS5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB3aW4zMiBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5IHRvIHRpbWVyIGNhbGxiYWNrcy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBiYWQgaGFja3Mgc28gV3JpdGVDb25zb2xlT3V0cHV0IHdvcmtzIG9uIHZ0MTAwIGFuZCBQZWVrTWVzc2FnZQoJZG9lcyBhdCBsZWFzdCBhIGJpdCBvZiBrZXlib2FyZCBpbnB1dC4KCgkqIHJlbGF5MzIvc25vb3AuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaG91bGQgZGlzcGxheSBhZ2Fpbi4KClNhdCBPY3QgMTAgMTU6NTI6NDYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJSW1wbGVtZW50ZWQgRFNfQ0VOVEVSIGRpYWxvZyBzdHlsZS4KCgkqIG1pc2MvbWFpbi5jOiBQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIGZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSBXaW5kb3dzIG51bWVyaWMgbGFuZ3VhZ2UgSUQgZnJvbSBsYW5ndWFnZSwKCWNvZGUsIGNoYXJzZXQgYW5kIGRpYWxlY3Qgc3RyaW5ncywgbGlrZSB1c2VkIGJ5IFVuaXggTEFORyB2YXJpYWJsZS4KCgkqIG9sZS9vbGUybmxzLmMsIG9sZS9ubHMvUkVBRE1FLCBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzLyoubmxzOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglNb3JlIE5MUyBkYXRhLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGV0ZXIgU2NobGFpbGUgPHVkYnpAcnoudW5pLWthcmxzcnVoZS5kZT4KCUZpeGVkIGEgbG90IG9mIGJ1Z3MgaW4gZGRyYXcuYyB0byBtYWtlIHhsaWIgc3VwcG9ydCB3b3JrLgoJUnVucyBzdWNjZXNzZnVsbHkgVFIyRGVtbyBhbmQgSmF6eiBKYWNrcmFiYml0IElJIERlbW8hCgoJKiBvYmplY3RzL2dkaW9iai5jOiBDbGlmZiBXcmlnaHQgPGNsaWZmQHNuaXBlNDQ0Lm9yZz4KCUFkZGVkIERDIG9iamVjdCB0eXBlIHRvIHRoZSBsaXN0IG9mIHZhbGlkIG9iamVjdHMgdGhhdCBjYW4gYmUgZGVsZXRlZAoJYnkgRGVsZXRlT2JqZWN0MzIuCgpTdW4gT2N0ICA0IDE4OjIwOjI5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2c6CglTdGFydGluZyBuZXcgZm9ybWF0IGNoYW5nZWxvZyAob2xkZXIgY2hhbmdlcyBtb3ZlZCB0bwoJZG9jdW1lbnRhdGlvbi9DaGFuZ2VMb2cuT0xEKS4K