ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggMzgzY2QyMi4uZjExMTk2NCAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsNCArMSw0IEBACi1UaGlzIGlzIHJlbGVhc2UgOTkwMzI4IG9mIFdpbmUsIGEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dzIG9uCitUaGlzIGlzIHJlbGVhc2UgOTkwNDI2IG9mIFdpbmUsIGEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dzIG9uCiBVbml4LiAgVGhpcyBpcyBzdGlsbCBhIGRldmVsb3BlcnMgb25seSByZWxlYXNlLiAgVGhlcmUgYXJlIG1hbnkgYnVncwogYW5kIHVuaW1wbGVtZW50ZWQgZmVhdHVyZXMuICBNb3N0IGFwcGxpY2F0aW9ucyBzdGlsbCBkbyBub3Qgd29yawogY29ycmVjdGx5LgpAQCAtNiwxMCArNiwxMSBAQAogUGF0Y2hlcyBzaG91bGQgYmUgc3VibWl0dGVkIHRvICJqdWxsaWFyZEBscmMuZXBmbC5jaCIuICBQbGVhc2UgZG9uJ3QKIGZvcmdldCB0byBpbmNsdWRlIGEgQ2hhbmdlTG9nIGVudHJ5LgogCi1XSEFUJ1MgTkVXIHdpdGggV2luZS05OTAzMjg6IChzZWUgQ2hhbmdlTG9nIGZvciBkZXRhaWxzKQotCS0gTG90cyBvZiBuZXcgT0xFIHN0dWZmLgotCS0gVXNlIHNlcGFyYXRlIHRocmVhZHMgZm9yIFdpbjMyIHByb2Nlc3Nlcy4KLQktIFZhcmlvdXMgbXVsdGltZWRpYSBpbXByb3ZlbWVudHMuCitXSEFUJ1MgTkVXIHdpdGggV2luZS05OTA0MjY6IChzZWUgQ2hhbmdlTG9nIGZvciBkZXRhaWxzKQorCS0gUmVzb3VyY2VzIGluIGJ1aWx0LWluIERMTHMuCisJLSBUaHJlYWRpbmcgc3VwcG9ydCBmb3IgRnJlZUJTRCBhbmQgU29sYXJpcy4KKwktIExvdHMgb2YgdGhyZWFkaW5nIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4KKwktIExvYWRlciByZW9yZ2FuaXphdGlvbiBhbmQgbmV3IGxvYWQgb3JkZXIgc3VwcG9ydC4KIAktIExvdHMgb2YgYnVnIGZpeGVzLgogCiBTZWUgdGhlIFJFQURNRSBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gZm9yIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMuCkBAIC0xOCwxMCArMTksMTAgQEAKIHRoZSByZWxlYXNlIGlzIGF2YWlsYWJsZSBhdCB0aGUgZnRwIHNpdGVzLiAgVGhlIHNvdXJjZXMgd2lsbCBiZSBhdmFpbGFibGUKIGZyb20gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6CiAKLSAgZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50L1dpbmUtOTkwMzI4LnRhci5negotICBmdHA6Ly90c3gtMTEubWl0LmVkdS9wdWIvbGludXgvQUxQSEEvV2luZS9kZXZlbG9wbWVudC9XaW5lLTk5MDMyOC50YXIuZ3oKLSAgZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50L1dpbmUtOTkwMzI4LnRhci5negotICBmdHA6Ly9mdHAucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50L1dpbmUtOTkwMzI4LnRhci5negorICBmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvV2luZS05OTA0MjYudGFyLmd6CisgIGZ0cDovL3RzeC0xMS5taXQuZWR1L3B1Yi9saW51eC9BTFBIQS9XaW5lL2RldmVsb3BtZW50L1dpbmUtOTkwNDI2LnRhci5negorICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvV2luZS05OTA0MjYudGFyLmd6CisgIGZ0cDovL2Z0cC5wcm9nc29jLnV0cy5lZHUuYXUvcHViL1dpbmUvZGV2ZWxvcG1lbnQvV2luZS05OTA0MjYudGFyLmd6CiAKIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBzaXRlIHRoYXQgbWlycm9ycyB0c3gtMTEgb3Igc3Vuc2l0ZS4KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZmNzg1YzEuLjZkMGJmYjYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsNCArMSwxMjU4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNb24gQXByIDI2IDE0OjU4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CisKKwkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUFkZGVkIGF1dG9jb25mIGNoZWNrIGZvciAiaW5saW5lIi4gWW91IGNhbiBub3cgdXNlIGl0LCBpdCB3aWxsIGJlCisJZGVmaW5lZCB0byAoZW1wdHkpIGZvciBjb21waWxlcnMgdGhhdCBkbyBub3QgaGF2ZSBpdC4KKworCSogdG9vbHMvd3JjL3BhcnNlci55OiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KKwlEb24ndCBpbmNsdWRlIGFsbG9jYS5oLgorCisJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KKwlVcGRhdGUgdG8gcmVmbGVjdCByZWNlbnQgY2hhbmdlcyBhbmQgZGlzY3Vzc2lvbnMuCisKKwkqIGxvYWRlci9sb2Fkb3JkZXIuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KKwlUaGUgbG9hZCBvcmRlciBwYXJzZXIgc2hvdWxkIG5vdCBhbHdheXMgY29tcGxhaW4gYWJvdXQgZXh0ZW5zaW9ucy4KKworCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwktIGFsaWduIG1hZ2ljIGJ1dHRvbnMgcmlnaHQKKwktIHNob3J0Y3V0cyBhbGlnbm1lbnQgd29ya2luZyBhZ2FpbgorCisJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCUZpeGVkIGxvYWRpbmcgb2YgbmF0aXZlIE5FIGRsbHMuCisKK1N1biBBcHIgMjUgMTk6MDQ6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KKworCSogbWVtb3J5L2hlYXAuYzogRml4ZWQgX19idWlsdGluX3JldHVybl9hZGRyZXNzIGFyZy4KKworCSogKi8qOgorCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgorCUZpeGVkIEFOU0kgY29tcGFiaWxsaXR5LgorCisJKiAqLyo6CisJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KKwlCdWlsdC1pbiBkbGxzIG5vdyBoYXZlIHJlc291cmNlcyBhdHRhY2hlZCB2aWEgdGhlIFBFLWhlYWRlciBsaWtlCisJbm9ybWFsIGRsbHMuIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIHRoZSByZXNvdXJjZSBBUEkuCisKKwkqIG1pc2MvcmVnaXN0cnkuYzoKKwlVc2UgJEhPTUUgaW5zdGVhZCBvZiBnZXRwd3VpZCBmb3IgdXNlcidzIGhvbWUgZGlyZWN0b3J5LgorCUZpeGVkIG1lc3NlZCB1cCBpbmRlbnRhdGlvbi4KKworCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CisJVXNlICRIT01FIGluc3RlYWQgb2YgZ2V0cHd1aWQgZm9yIHVzZXIncyBob21lIGRpcmVjdG9yeS4KKworCSogKi8qLmg6CisJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CisJI3ByYWdtYSBwYWNrKD8pIGNoYW5nZWQgdG8gI2luY2x1ZGUgIipwYWNrKi5oIgorCisJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKKwlKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CisJQWRkZWQgc29tZSBtaXNzaW5nICNkZWZpbmVzIEkndmUgcnVuIGFjcm9zcy4KKworCSogZmlsZXMvZG9zX2ZzLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KKwlJZ25vcmUgdHJhaWxpbmcgZG90cyBvbiBmaWxlIG5hbWVzLgorCisJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CisJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJQWRkZWQgYSBwb3NzaWJpbGl0eSB0byBsZXQgdGhlIGludGVybmFsIGRlYnVnZ2VyIHVzZSBhIHNlcGFyYXRlCisJaGVhcC4gTm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgY2hhbmdlICNpZiBpbiBpbmNsdWRlL2RlYnVnZ2VyLmggdG8gdXNlCisJdGhpcyAodGhlIGhlYXAgYWxsb2NhdG9yIGlzIHZlcnkgc2xvdykuCisKKwkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJd2luZS5jb25mIHNob3VsZCBub3Qgb3ZlcnJ1bGUgY29udGVudCBvZiBidXJuZWQgaW4gZGF0YSBpbgorCWxvYWRvcmRlci5jLgorCisJKiBncmFwaGljcy9tYXBwaW5nLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgorCVNldE1hcE1vZGUgc2hvdWxkIG5vdCByZXNldCB0aGUgd2luZG93IGFuZCB2aWV3cG9ydCBvcmlnaW5zIHRvIDAuCisKKwkqIHRvb2xzL3dpbmVjb25mOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlBbGxvdyB0byBhdXRvbWF0aWNhbGx5IGNvcHkgcGFydCBvZiB3aW5lLmluaSBpbnRvIGdlbmVyYXRlZCBmaWxlLgorCVNtYWxsIHBlcmwgZW5oYW5jZW1lbnQgKHdvcmsgaW4gc3RyaWN0IG1vZGUpLgorCVNtYWxsIHVwZGF0ZXMgaW4gaGV1cmlzdGljcy4KKworCSogd2luZS5pbmk6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCVVwZ3JhZGVkIHRvIGhhdmUgYSBkZWNlbnQgbXVsdGltZWRpYSBETExzIGNvbmZpZ3VyYXRpb24uCisKKwkqIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgorCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CisJLSBGaXhlZCBhIGNvdW50aW5nIGJ1ZyBpbiB0aGUgd2luMzIgY291bnQgYW5kIHNvcnQgcm91dGluZS4KKwktIEZpeGVkIHNvcnQgb3JkZXIgb2YgcmVzb3VyY2VzIChtdXN0IGJlIG5hbWUgYmVmb3JlIG9yZGluYWwpLgorCS0gU2h1ZmZsZWQgYSBjb3VwbGUgb2YgZ2xvYmFsIHZhcmlhYmxlcyBzbyB0aGF0IGJ1aWx0LWluIGRsbHMgbm93IGNhbgorCSAgbG9hZCByZXNvdXJjZXMgdGhyb3VnaCB0aGUgcHJvcGVyIFBFIGludGVyZmFjZS4KKworCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5yZWcuaDoKKwlBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CisJQWRkZWQgc3VwcG9ydCBmb3Igc3RyaWN0IGhhbmRsZXMuIE9ubHkgd29ya3Mgb24gbWFjaGluZXMgd2hlcmUKKwlzaXplb2YoVUlOVCkgPT0gc2l6ZW9mKHZvaWQqKS4KKworCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlJbml0aWFsaXplIHByb2Nlc3MgY3JpdGljYWwgc2VjdGlvbiBpbiB0aGUgY29ycmVjdCBwcm9jZXNzIGNvbnRleHQuCisKKwkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCVdhcm4gaWYgd3JvbmcgcHJvY2VzcyB0cmllcyB0byBlbnRlciBjcml0aWNhbCBzZWN0aW9uLgorCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBSZWluaXRpYWxpemUvVW5pbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uCisJKHN0aWxsIG5vdCBxdWl0ZSBjb3JyZWN0KS4KKworCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlkZWJ1Zy5oIG11c3QgYmUgbGFzdCBpbiBsaXN0IG9mIGluY2x1ZGVzLgorCisJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJUmV0dXJuIDMyLWJpdCBtb2R1bGUgaW4gR2V0TW9kdWxlSGFuZGxlMTYoKSBpZiBhcHByb3ByaWF0ZS4KKworCSogbXNkb3MvaW50MmYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgY3Jhc2ggd2hlbiBzdGF0dXMgd2FzIHJlYWQgd2l0aCBjZC1yb20gdHJheSBvcGVuLgorCisJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlGaXhlZCBhIGJ1ZyBpbiBtc2cgY29udmVyc2lvbi4KKworCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlQcmV2ZW50IGNyYXNoIHdoZW4gbk1pblJhbmdlID4gbk1heFJhbmdlLgorCisJKiBpbmNsdWRlL3dpbnVzZXIuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgc29tZSBtaXNzaW5nIG1hbmlmZXN0IGNvbnN0YW50cyBmb3IgUXVldWUgU3RhdHVzIGZ1bmN0aW9ucyAoUVNfPz8/PykuCisKKwkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvbWRpLmM6CisJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgbWlzc2luZyBXSU5fUmVsZWFzZVduZFB0ci4KKworCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgorCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgorCU1vcmUgYXBwcm9wcmlhdGUgZGVmYXVsdCBzaXplIGZvciBmb250cyB3aXRoIGludmFsaWQgc2l6ZXMuCisKKwkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CisJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CisJSW1wbGVtZW50ZWQgU2V0Q29sdW1uV2lkdGggZm9yIExpc3RWaWV3IGNvbnRyb2wuCisKKwkqIGRvY3VtZW50YXRpb24vY29uZmlnOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgorCUFkZGVkIG5ldyBkb2N1bWVudGF0aW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorCisJKiBtaXNjL3ZlcnNpb24uYzoKKwlBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJSW1wcm92ZWQgVkVSU0lPTl9HZXRWZXJzaW9uLgorCisJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQZXRlciBCb3J0YXMgPHBldGVyQGlkb25leC5zZT4KKwlBZGRlZCBTd2VkaXNoIGtleWJvYXJkIGxheW91dC4KKworCSogaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CisJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJR2VuZXJhbCB0aWR5IHVwIG9mIHRoZSBNZXRhRmlsZSBkcml2ZXIgLSBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nCisJZ29lcyB0aHJvdWdoIHRoZSBEQ0Z1bmNzIHRhYmxlLgorCisJKiBtaXNjL3Rvb2xoZWxwLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKKwlVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJQWRkIGEgc3R1YiBmb3IgR2xvYmFsTWFzdGVySGFuZGxlLgorCisJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgorCU11Y2ggbmljZXIgd2F5IHRvIHNlbGVjdCB3aW5lJ3MgbG9jYXRpb24uCisJT3B0aW9uIHRvIGRpc2FibGUgY3JlYXRpb24gb2YgZGVidWdnaW5nIG91dHB1dC4KKwlEZWJ1Z2dpbmcgb3V0cHV0IGlzIG5vdyBjcmVhdGVkIGluIGRpcmVjdG9yeSBzY3JpcHQgd2FzIHN0YXJ0ZWQgaW4uCisKKwkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KKwlGaXhlZCBhIHByb2JsZW0gd2l0aCBtYW5hZ2VkIG1vZGUsIHdoZXJlIHBvcHVwIHdpbmRvd3Mgd2l0aCBhIFdTX0RMR0ZSQU1FCisJc3R5bGUgd2VyZSBhcHBlYXJpbmcgd2l0aCBhIHRpdGxlIGJhci4gQWNjb3JkaW5nIHRvIHRoZSBkb2NzIGZvcgorCVdTX0RMR0ZSQU1FIGEgd2luZG93IHdpdGggdGhpcyBzdHlsZSBjYW5ub3QgaGF2ZSBhIHRpdGxlIGJhci4KKworCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlVc2UgRGxsT3ZlcnJpZGVzIGZyb20gd2luZS5pbmkgYXMgZGVmYXVsdHMgYWxzbyBpbgorCWxvYWRvcmRlci5jIChtZXJnZWQgaW4gc29tZSBNTSBkbGxzIGxpbmVzIGZyb20gRXJpYyBQb2V1Y2gpLgorCisJKiB3aW5kb3dzL3RpbWVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCUZpeGVkIHNvbWUgYm9ndXMgaW5maW5pdGUgZXhwaXJhdGlvbiB0aW1lLgorCisJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CisJLSBjb25zb2xpZGF0ZSBib3RoIGNhc2VzIG9mICFwZW5kaW5nIGluIFdhaXROZXRFdmVudAorCS0gc2VsZWN0KCkgcmV0dXJucyAtMSBub3QgMCBvbiBlcnJvciBpbiBXYWl0TmV0RXZlbnQKKworCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgorCU1hZGUgSGVhcFZhbGlkYXRlIHRocmVhZHNhZmUsIGFuZCBhZGRlZCBzb21lIG1hY3JvcyB0byB0cmFjayBjYWxsZXJFSVAKKwlhIGxpdHRsZSBiZXR0ZXIuCisJQWRkZWQgSEVBUF94cmVhbGxvYy4KKworU2F0IEFwciAyNCAxMjowMjoxNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgorCisJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCWF1dG9jb25mIGZpeGVzIGFuZCBjbGVhbnVwcyAoY2hlY2sgZm9yIGRsb3BlbigpIGluIGxpYmMgdG9vKS4KKworCSogb2xlL01ha2VmaWxlLmluLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9zdGdfc3RyZWFtLmM6CisJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgorCUltcGxlbWVudGVkIENyZWF0ZVN0cmVhbU9uSEdMT0JBTC4KKworCSogb2xlL2NvbXBvYmouYzoKKwlBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJTGV0IENvU2V0U3RhdGUoKSBhY2NlcHQgc3RhdGUgPT0gTlVMTC4KKworCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlNYWRlIGludGVybmFsIGZvcm1hdCBtb3JlIGNvbXBhdGlibGUuCisKKwkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlTbWFsbCBmaXhlcy4KKworCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCBjb250cm9scy9jb21iby5jOgorCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CisJRml4IGxvY2tpbmcgd2l0aCBwcm9wZXIgY2FsbHMgdG8gV0lOX1JlbGVhc2VXbmRQdHIuCisKKwkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgorCURvbid0IG1hbGxvYy9mcmVlIGZvciBldmVyeSBtaXhpbmcgb3BlcmF0aW9uLCB1c2UgdGhlIHNhbWUgYnVmZmVyIG92ZXIKKwlpbnN0ZWFkLi4uCisKKwkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgorCUphbWVzIEFiYmF0aWVsbG8gPGFiYmVqeUB3cGkuZWR1PgorCUhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XIG5vdyB0cmVhdCBudWxsIHBvaW50ZXJzIHRvCisJdGV4dCBzdHJpbmdzIGFzIG51bGwgc3RyaW5ncywgYXMgV2luZG93cyBkb2VzLiAgRml4ZXMgd2luZSBjcmFzaCBvbgorCXN0YXJ0dXAgb2YgQ3V0ZUZUUC4KKworCSogbWlzYy9yZWdpc3RyeS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KKwlTZXQgKHdoZW4gcmVnaXN0cnkgbG9hZGVkKSBkYXRhIHRvICJcMCIgYW5kIGxlbmd0aCB0byAyIGluIGVtcHR5CisJc3RyaW5nIHZhbHVlIGNhc2UsIGluIHBsYWNlIG9mIHNldHRpbmcgZGF0YSB0byBOVUxMIGFuZCBsZW5ndGggdG8gMCwKKwlhbmQgdGhpcyBpcyB3aXRob3V0IGluaXRpYWxpemluZyBvdXRwdXQgYnVmZmVyIHBhcmFtZXRlciBvZgorCVJlZ1F1ZXJ5VmFsdWUqLgorCisJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KKwlBZGRlZCBQYW5vc2UgZGVmaW5lcyBhbmQgRVhUTE9HRk9OVFtBfFddLgorCitUaHUgQXByIDIyIDE2OjI3OjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CisKKwkqICovKjoKKwlQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KKwlGaXhlZCBBTlNJIGNvbXBhYmlsbGl0eS4KKworCSogbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9yZWN0LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9sc3RyLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKKwlNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgorCVJlbW92ZWQgc29tZSBpbmNsdWRlcyBvZiAxNiBiaXQgQVBJLgorCisJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CisJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgorCUlDT01pemF0aW9uIG9mIHJlbWFpbmluZyBpbnRlcmZhY2VzLgorCisJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgorCUZpeGVkIGJ1ZyB3aXRoIHRvb2x0aXBzIHN0ZWFsaW5nIGZvY3VzIHdoZW5ldmVyIGEgdG9vbHRpcCB3YXMgY3JlYXRlZCwKKwlzaG93biwgaGlkZGVuIG9yIHRyYWNrZWQuIFRoZSBTZXRXaW5kb3dQb3MgY2FsbHMgbmVlZGVkIHRvIGhhdmUgdGhlCisJU1dQX05PQUNUSVZBVEUgZmxhZyBzZXQgYWRkaXRpb25hbGx5LgorCisJKiBvYmplY3RzL2NsaXBwaW5nLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgorCUZpeGVkIGNvb3JkaW5hdGVzIGNvbnZlcnNpb24gaW4gT2Zmc2V0Q2xpcFJnbi4KKworCSogaW5jbHVkZS9vYmpiYXNlLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KKwlDbGVhbiB1cCBvYmpiYXNlLmguIE1ha2VzIHRoZSBTVERNRVRIT0Qgc2V0IG9mIG1hY3JvcyBhdmFpbGFibGUgdG8gdGhlIHdpbmVsaWIgdXNlci4KKworCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvaGFuZGxlLmM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQ3JlYXRlU29ja2V0SGFuZGxlLEdldEhhbmRsZUNvbnRleHQsU2V0SGFuZGxlQ29udGV4dCBzdHVicyBhZGRlZC4KKworCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTW92ZWQgc3R1ZmYgdG8gdGhlIHJpZ2h0IHBsYWNlLgorCisJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgorCUZpeGVkIHN5c2NvbG9ycyBmb3Igd2luIDMuMS4KKworCSogZmlsZXMvcHJvZmlsZS5jLCBpZjE2MzIva2VybmVsLnNwZWM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQWRkZWQgbWlzc2luZyBwcm9maWxlIEtFUk5FTCByb3V0aW5lcyAoY2FsbCAzMi1iaXQgdmVyc2lvbnMpLgorCisJKiBpZjE2MzIvYnVpbHRpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlCdWdmaXg6IEJVSUxUSU5fR2V0RW50cnlQb2ludDE2IGRpZG4ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRoZSBuZXcKKwllbnRyeSB0YWJsZSBsYXlvdXQuCisKKwkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCUFkZCBFbmhhbmNlZCBNZXRhRmlsZSByZWNvcmQgc3RydWN0dXJlcy4KKworCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CisJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CisJRmlyc3QgcGF0Y2ggaW1wbGVtZW50aW5nIHByb3BlcnR5IHNoZWV0cy4KKworCSogcmVsYXkzMi9nZGkzMi5zcGVjOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUJ1Z2ZpeDogR0RJMzIuMTAwLTEwNCBhcmUgb3JkaW5hbC1vbmx5IHJvdXRpbmVzLgorCUFkZGVkIHN0dWJzIGZvciBzb21lIFdpbjk4IEdESTMyIHJvdXRpbmUuCisJUmUtbnVtYmVyZWQgYWxsIG5hbWVkIGV4cG9ydHMgKGxleGljb2dyYXBoaWNhbGx5KS4KKworCSogZ3JhcGhpY3MvZHJpdmVyLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQWRkZWQgcHJvdG90eXBlcyAoc3R1YnMpIGZvciBHREkzMi4xMDAtMTA0LgorCisJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCS0gbW9yZSBjaGVja3MgZm9yIHZhbGlkIHBpZGwgZm9ybWF0cworCisJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hsb2JqLmg6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJLSBjb3JyZWN0ZWQgcGFyYW1ldGVyIGNvdW50IGZvciBTSEdldFNldHRpbmdzCisJLSBzdHViIFNIVmFsaWRhdGVVTkMKKworCSogbG9hZGVyL2VsZi5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KKwkjZWxzZSBicmFuY2ggY29tcGlsZSBmaXguCisKKwkqIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgorCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CisJQ2hhbmdlIHdpbmUncyBkbG9wZW4gc2VhcmNoLXBhdGNoIHN0cmF0ZWd5IG5vdCB1c2luZyB0aGUgZW52aXJvbm1lbnQKKwlhbmQgYWRkZWQgI2lmOnMgdG8gc2VwZXJhdGUgdGhlIGNvZGUgb3V0IGlmIGxpYmRsIGlzbid0IGF2YWlsYmxlLgorCisJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CisJQWRkZWQgYSBjaGVjayBmb3IgYSBOVUxMIHBvaW50ZXIgaW4gQ29GcmVlVW51c2VkTGlicmFyaWVzLgorCisJKiByZWxheTMyL2J1aWx0aW4zMi5jOgorCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlJbmNsdWRlIGRlYnVnLmggbGFzdCAoRVJSKCkgbWFjcm8gcHJvYmxlbSBvbiBTb2xhcmlzKS4KKworCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgorCUZpeGVkIGEgc2l6aW5nIGJ1ZyBpbiB0aGUgY29tYm9ib3ggY29udHJvbC4KKworCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQnVnZml4OiBJbnRlcm5hbCBORSBlbnRyeSBwb2ludCB0YWJsZXMgd2VyZSBiYWQgKG9uZSBodWdlIGJ1bmRsZSkuCisKKwkqIG1pc2MvcmVnaXN0cnkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CisJSW5pdGlhbGl6ZSB0aGUgb3V0cHV0IGJ1ZmZlciBwYXJhbWV0ZXJzIHRvIDAgaW4gUmVnUXVlcnlWYWx1ZSoKKwlmdW5jdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHNwZWNpYWxseSB3aGVuIHRoZXJlJ3Mgbm8gZGF0YSB0byByZXR1cm4uCisKKwkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KKwlEbyBub3QgaW5jcmVtZW50IG1vZHVsZSByZWZDb3VudCBpZiBzZWxmIGlzIGxvYWRlZCBmcm9tIHdpdGhpbgorCURsbEVudHJ5UG9pbnQgZHVyaW5nIHRoZSBhdHRhY2ggbm90aWZpY2F0aW9uLgorCitXZWQgQXByIDIxIDE0OjI3OjM3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CisKKwkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJLSBwcm90ZWN0IFRSQUNFIGFnYWluc3QgTlVMTC1wdHIKKwktIHJld3JvdGUgR2V0TWVudUl0ZW1JRC9HZXRTdWJNZW51IHRvIHVzZSBNRU5VX0ZpbmRJdGVtIChobWVudT0weGZmZmYgZml4KS4KKworCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJRml4ZWQgdHlwby4KKworCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgorCVJlaW1wbGVtZW50YXRpb24gb2YgR2V0TW9kdWxlSGFuZGxlMTYgYWNjb3JkaW5nIHRvIGhvdyB3aW45NSBoYW5kbGVzCisJaXQgKHRoYW5rcyB0byBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4pLgorCisJKiBpZjE2MzIvYnVpbHRpbi5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgorCUNvcnJlY3RlZCB3cm9uZyByZXR1cm4gdmFsdWVzIG9mIGJ1aWx0LWluIGxvYWRlciB0byB3b3JrIHdpdGggdGhlCisJbG9hZG9yZGVyIHN0dWZmLgorCitNb24gQXByIDE5IDE2OjQ1OjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CisKKwkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCUltcGxlbWVudGVkIHJlY29yZGluZyBvZiBTdHJldGNoRElCaXRzIGFuZCBTZXRESUJpdHNUb0RldmljZSBhbmQKKwlwbGF5YmFjayBvZiBTZXRESUJpdHNUb0RldmljZS4gQ2xlYW5lZCB1cCBQbGF5TWV0YUZpbGVSZWNvcmQgYSBiaXQuCisKKwkqIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CisJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KKwlSZW1vdmVkIG5vbi1wb3J0YWJsZSBoYWNrcyBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIG1vcmUgZ2VuZXJhbAorCXZlcnNpb25zLgorCisJKiB3aW5kb3dzL2RjZS5jOiBQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgorCUNvZGUgYWRkZWQgdG8gcmUtZXZhbHVhdGUgc3RhbGUgREMgaW5mb3JtYXRpb24gaW4gRENFIGNhY2hlLgorCisJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CisJQXR0YWNoIG5vdGlmaWNhdGlvbnMgbXVzdCBiZSBzZW5kIGFmdGVyIGFsbCByZWN1cnNpdmUgZGVwZW5kZW5jaWVzIGFyZQorCWxvYWRlZCBhbmQgbm90IGJlZm9yZS4KKworCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CisJRml4ZWQgdHlwby4KKworCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgcGxheWluZyBwb3NpdGlvbiB3aGVuIHJlcXVpcmVkIGJ5IHRyYWNrIG51bWJlci4KKworCSogd2luMzIvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUFkZGVkIE1NREVWTERSIERldmljZUlvY3RsKDUpIHN0dWIgKG1zYWNtMzIgaXMgYSBiaXQgaGFwcGllciBub3cpLgorCisJKiB3aW5lLmluaTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJTmF0aXZlIHRvb2xoZWxwIHdpbGwgbm90IHdvcmsgKG1pc3NpbmcgR0xPQkFMTUFTVEVSSEFORExFKS4KKworCSogQlVHUywgUkVBRE1FOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlVcGRhdGVkLgorCisJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgorCVRlc3QgZm9yIHN0YXRpYyB3YXMgcmV2ZXJzZWQuCisKKwkqICovKjoKKwlQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KKwlOZXcgZGVidWcgc2NoZW1lIHdpdGggZXhwbGljaXQgZGVidWcgY2hhbm5lbHMgZGVjbGFyYXRpb24uCisKK1N1biBBcHIgMTggMTQ6NDQ6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KKworCSogbG9hZGVyL25lL21vZHVsZS5jOiBSZW1vdmVkIGV4dHJhIGNhbGwgdG8gVEFTS19TdGFydFRhc2suCisKKwkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisJUmVtb3ZlZCBjaGVjayBmb3IgdW5pb24gc2VtdW47IGNsZWFuZWQgdXAgYSBiaXQuCisKKwkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgorCUFkZGVkIGVudiBwdHIgdG8gbmV3X3Byb2Nlc3MgcmVxdWVzdAorCisJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwktIHVzZSBmb250cy9mb250c2l6ZXMgZ2l2ZW4gYnkgU3lzdGVtUGFyYW1ldGVyc0luZm8KKwktIGRyYXdpbmcvYWxpZ25tZW50IGZpeGVzLCB3aW45OCBzdHlsZSBmb3IgbWVudWJhcgorCS0gb3duZXJkcmF3biBtZW51cyBhcmUgd29ya2luZyBub3cgZm9yIHRoZSBmaXJzdCB0aW1lCisJLSBjb21wbGV0ZSBjb25zdGFudHMgbWFnaWMgaXRlbXMKKwktIHVzZSByaWdodCBvd25lciBmb3IgcG9wdXBtZW51cworCS0gbmV3OiBHZXQvU2V0TWVudUluZm8KKwktIGltcGxlbWVudGVkOiBHZXQvU2V0TWVudUNvbnRleHRIZWxwSWQKKwktIG1vcmUgZmxhZ3MgZm9yIEdldC9TZXRNZW51SXRlbUluZm8KKworCSogZmlsZXMvZG9zX2ZzLmM6IHJvYmVydCB3IGhhbGwgPGJvYmhAbi1jYW50cmVsbC5kZW1vbi5jby51az4KKwlNYWtlIERPU0ZTX01hdGNoTG9uZyBtYXRjaCBhIHNlYXJjaCBzdHJpbmcgZW5kaW5nIGluICcqLicgdG8gYSB6ZXJvCisJZXh0ZW5zaW9uIGZpbGUgbmFtZSwgYWxsb3dpbmcgTWF0aGNhZCB0byBydW4uCisKKwkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgbWVtb3J5IGZyZWVpbmcuCisKKwkqIHByb2dyYW1zL2NtZGxndHN0L0F0dGljL2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0Lmg6CisJUmVuYW1lZCBjbWRsZ3IuaCB0byBjbWRsZ3RzdC5oLgorCisJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzogQWRkZWQgdGltZW91dCB0byBjcml0aWNhbCBzZWN0aW9uIHdhaXRpbmcuCisKKwkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJTWVyZ2VkIExpbnV4L0ZyZWVCU0QgcmVlbnRyYW50IGVycm5vIGhhbmRsZXIsIGFkZGVkIFNvbGFyaXMuCisJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU29sYXJpcyBsb3ctbGV2ZWwgdGhyZWFkcyAoTFdQcykgYWRkZWQuCisKKwkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJUmVlbnRyYW50IGxpYmMgY2hlY2sgZm9yIFNvbGFyaXMgYWRkZWQuCisJRml4ZWQgcmVlbnRyYW50IFgxMSBjaGVjayBmb3IgRnJlZUJTRCBhbmQgU29sYXJpcy4KKwlBZGRlZCBjaGVjayBmb3IgU29sYXJpcyBsb3ctbGV2ZWwgdGhyZWFkIHJvdXRpbmVzLgorCisJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CisJRml4ZWQgdG9vbGhlbHAgcm91dGluZXMgdXNhZ2UgaW4gR2V0TW9kdWxlRnJvbVBhdGggKHJlcG9ydGVkIGJ5IEJlcnRobworCVN0dWx0aWVucykuCisKKwkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KKwlBdXRvbWF0aWMgaW5zdGFsbCBzY3JpcHQsIHdoaWNoIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlcyBhbmQgY29tcGlsZXMKKwl3aW5lIGFuZCByZWdhcGksIHJ1bnMgdG9vbHMvd2luZWNvbmYgdG8gZ2VuZXJhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUKKwlpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgYW5kIHVzZXMgcmVnYXBpIHRvIGluc3RhbGwgdGhlIGRlZmF1bHQKKwlyZWdpc3RyeS4KKworCSogZG9jdW1lbnRhdGlvbi9ndWksIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CisJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJUHJvcGVybHkgaGFuZGxpbmcgY2FzZXMgbGlrZSBjYWxsaW5nIFNldFdpbmRvd1BvcyB3aGlsZSBwcm9jZXNzaW5nCisJV01fTkNDUkVBVEUuCisKKwkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgYSBmZXcgYnVncyAodHlwb3MgZnJvbSBjdXQgJiBwYXN0ZSAmIGludmFsaWQgaGVhcCBibG9jaworCWZyZWVpbmcpLgorCisJKiBtaXNjL3dzcHJpbnRmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCUJ1ZyBmaXggaW4gR2V0TGVuLgorCisJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYzoKKwlCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgorCVJlb3JnYW5pemF0aW9uIG9mIHRoZSBsb2FkZXIgdG8gY29ycmVjdGx5IGxvYWQgYW5kIGZyZWUgbGlicmFyaWVzIGFuZAorCWltcGxlbWVudGF0aW9uIG9mIGxvYWQgb3JkZXIgdG8gbG9hZCBkaWZmZXJlbnQgdHlwZXMgb2YgbGlicmFyaWVzLgorCisJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgorCVVwZGF0ZWQgY29tbWFuZGxpbmUgY2hhbmdlcyBvZiAtZGxsIG9wdGlvbiBhbmQgd2luZS5jb25mIGVudHJpZXMuCisKKwkqIHdpbmUuaW5pOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgorCVVwZGF0ZWQgdGhlIGV4YW1wbGUgd2l0aCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZW50cmllcy4KKworCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgorCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CisJQnVnZml4OiBmcmVlIGxvYWRlZCBsaWJyYXJ5IG5vdCBiZWZvcmUgZXhpdC4KKworCSogaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CisJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KKwlOZXcgZmlsZXMgdG8gc3VwcG9ydCBsb2FkIG9yZGVyIGFuZCBwYXJ0aWFsIHN0dWJzIGZvciBlbGZkbGxzLgorCisJKiBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYzoKKwlIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KKwlGaXhlcyBmb3IgdXBzaWRlLWRvd24gRElCcy4KKworCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CisJQ2hhbmdlZCAnR2V0RGlzcGxheU1vZGUnIHRvIHJldHVybiB0aGUgbW9kZSBwcmV2aW91c2x5IHNldCBieQorCSdTZXREaXNwbGF5TW9kZScgKGFuZCBub3QgdGhlIGN1cnJlbnQgbW9uaXRvciBtb2RlKS4KKworCSogaW5jbHVkZS90YWIuaCwgZGxscy9jb21jdGwzMi90YWIuYzoKKwlMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgorCS1JbXBsZW1lbnRlZCBUQ1NfQlVUVE9OUywgVENTX0ZJWEVEV0lEVEgsIFRDTV9HRVRJVEVNUkVDVCwKKwlUQ01fU0VUSVRFTVNJWkUgYW5kIFRDTV9ERUxFVEVJVEVNLgorCisJKiBvYmplY3RzL2N1cnNvcmljb24uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KKwlMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgxNigpIGZpeGVkOiBpZiBHZXRTeXN0ZW1QYWxldHRlRW50cmllcygpCisJcmV0dXJucyAwLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBpZiBpdCB3ZXJlIDI1Ni4KKworCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgorCUtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CisJRml4IGFtYmlndW91cyBlbHNlIHdhcm5pbmcuCisKKwkqIHdpbmRvd3Mvc3lzY29sb3IuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTG9hZGluZyBjb2xvciB2YWx1ZXMgZnJvbSB0aGUgcmVnaXN0cnkgZml4ZWQuCisKKwkqIGdyYXBoaWNzL2RkcmF3LmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KKwktIFJlbW92ZWQgYWxsIGZsb2F0aW5nIHBvaW50IG1hdGguCisJLSBJbXBsZW1lbnRlZCBzdHJldGNoaW5nIGluIFggYW5kIFkgZGlyZWN0aW9ucyBmb3IgOCwgMTYsIGFuZCAzMiBiaXQgY29sb3IuCisJLSBJbXBsZW1lbnRlZCBzb3VyY2UgYW5kIGRlc3QgY29sb3Ita2V5aW5nIGZvciA4LCAxNiwgYW5kIDMyIGJpdCBjb2xvci4KKwktIEltcGxlbWVudGVkIHNvbWUgdHJpdmlhbCByYXN0ZXIgb3BlcmF0aW9ucy4KKwktIE1pbmltaXplZCBpbm5lciBsb29wcyBmb3IgbWF4aW11bSBzcGVlZC4KKwktIFVzZSBtZW1jcHkgd2hlbmV2ZXIgcG9zc2libGUuCisKKwkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJUmVkdWNlZCBmcmFnbWVudCBzaXplLgorCVJlb3JnYW5pemVkIHdvZE9wZW4gKHdpdGggc3VwcG9ydCBmb3IgV0FWRV9RVUVSWV9GT1JNQVQpLgorCUZpeGVkIGJ1ZmZlciB1bmRlcnJ1biByZWNvdmVyeS4KKwlGaXhlZCBidWcgaW4gd29kUmVzZXQoKS93b2RDbG9zZSgpLgorCisJKiBvbGUvc3RvcmFnZTMyLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CisJU2ltcGxpZnkgcHJvcGVydHlOYW1lQ21wKCkgYW5kIGZpeCBhIHdhcm5pbmcgaW4gdGhlIHdheSBieSByZW1vdmluZworCUNSVERMTF9fd2NzdXByKCkgY2FsbHMuCisKKwkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KKwlEZGVOYW1lU2VydmljZTogZXhwYW5zaW9uIG9mIHN0dWIgdG8gdHJhcCB1bnVzZWQgaW5zdGFuY2VpZHMgYXQgc3RhcnQgb2YgcnVuLgorCURkZUdldExhc3RFcnJvcjogY2F0Y2ggJ25vdCBpbml0aWFsaXplZCcgc2l0dWF0aW9uIGFuZCByZXR1cm4gY29ycmVjdCByZXNwb25zZS4KKwlEZGVGcmVlU3RyaW5nSGFuZGxlOiBjb21wbGV0ZSB0ZXN0IGZvciBlcnJvciBzZXQgYnkgcHJldmlvdXMgY2FsbCBvZgorCXNvbWV0aGluZyBhbmQgaWdub3JlIGl0LCBhbHNvIHJlbGVhc2UgaGFuZGxlIHRhYmxlIG11dGV4IG9uIG5vcm1hbCBleGl0LgorCURkZVF1ZXJ5U3RyaW5nQSwgRGRlUXVlcnlTdHJpbmdXLCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXOiBSZWxlYXNlCisJaGFuZGxlIHRhYmxlIG11dGV4IG9uIG5vcm1hbCBleGl0LgorCisJKiBpbmNsdWRlL3duZXQuaCwgbWlzYy9uZXR3b3JrLmM6CisJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgorCURvbid0IGFubm91bmNlIHRoZSBXTmV0RGlyZWN0b3J5Tm90aWZ5IGNhcGFiaWxpdHkgV05ldEdldENvbm5lY3Rpb24uCisJQ2hhbmdlIHRoZSByZXR1cm4gdmFsdWUgZm9yIGxvY2FsIGZpbGVzLgorCisJKiB3aW5kb3dzL21vdXNlLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CisJQWRkICJ3aW4uaCIgdG8gZml4IGltcGxpY2l0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdhcm5pbmdzLgorCisJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKKwlNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlPbmx5IGRlY2xhcmUgY29uc29sZSAiZHJpdmVyIiBvbmNlLCB1c2UgZXh0ZXJuYWwgcmVmcyBlbHNld2hlcmUuCisKKwkqIGNvbnRyb2xzL2xpc3Rib3guYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KKwlXaGVuIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgaXMgcmVtb3ZlZCwgdGhlIGJhY2tncm91bmQgd2FzIG5vdAorCXByb3Blcmx5IHJlcGFpbnRlZC4KKworCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlEaXNhYmxlIEFDIGJpdCBvbiByZWNlaXZpbmcgYWxpZ25tZW50IGV4Y2VwdGlvbnMuCisKKwkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlTeXN0ZW1QYXJhbWV0ZXJzSW5mbyBTUElfR0VUTk9OQ0xJRU5UTUVUUklDUzogaW1wbGVtZW50ZWQgbWVudSBwYXJ0LgorCisJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KKwlXaGlsZSBoYW5kbGluZyB0aGUgV01fREVMRVRFV0lORE9XIGNsaWVudCBtZXNzYWdlIGNoZWNrIGlmIGEgd2luZG93CisJaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGlmIHNvIHByZXZlbnQgYW4gU0NfQ0xPU0UgbWVzc2FnZSBmcm9tIGJlaW5nCisJc2VudC4KKworCSogd2luZG93cy9kY2UuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CisJTWFrZSBhY2Nlc3MgdG8gdGhlIERDRSBsaXN0IHRocmVhZCBzYWZlIGJ5IGVuc3VyaW5nIHdlIGhhdmUgYWNxdWlyZWQKKwl0aGUgV2luZG93cyBsb2NrIGJlZm9yZSB1c2luZyBpdC4KKworRnJpIEFwciAxNiAxNToxOToxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgorCisJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogQ2hhbmdlZCBmb3IgcmVuYW1lZCBmaWxlcworCisJKiBtaXNjL3dpbnNvY2tfYXN5bmMuYywgbXNkb3MvZG9zY29uZi5jLCB3aW5kb3dzL3VzZXIuYzoKKwlNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgorCUZpeGVkIHdhcm5pbmdzLgorCisJKiBvbGUvbmxzL3dhbC5ubHMsIG9sZS9vbGUybmxzLmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfQ3oucmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfUG8ucmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfU3cucmMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX0NzLnJjLCByZXNvdXJjZXMvc3lzcmVzX1B0LnJjLCByZXNvdXJjZXMvc3lzcmVzX1N2LnJjLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy9tYWluLmM6CisJUGFibG8gU2FyYXR4YWdhIDxwYWJsby5zYXJhY2hhZ2FAcGluZy5iZT4KKwlBZGRlZCB3YWxvbiBsYW5ndWFnZSBzdXBwb3J0IChJIGFsc28gbW92ZWQgQ3ogLT4gQ3MsIFN3IC0+IFN2LCBhbmQgUG8KKwktPiBQdDsgdG8gY29uZm9ybSB0byBzdGFuZGFyZCBuYW1lcyBmb3IgdGhvc2UgbGFuZ3VhZ2VzKS4KKworCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW46CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQWRkIC1mbm8tYnVpbHRpbiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYyBpbiByZWxheTMyLyBzdWJkaXIuCisKKwkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgdG9vbHMvYnVpbGQuYywgaWYxNjMyL2J1aWx0aW4uYzoKKwlBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CisJLSBJbXBsZW1lbnRlZCBwcm9wZXIgKCJyZWFsIiwgY29tcHJlc3NlZCkgV2luMTYgZW50cnkgdGFibGVzLgorCS0gRml4ZWQgTXlBbGxvYyAoQUtBIE5FX0FsbG9jYXRlU2VnbWVudCkuCisJLSBJbXBsZW1lbnRlZCBQYXRjaENvZGVIYW5kbGUxNi4KKworCSogdG9vbHMvQXR0aWMvbWFrZV9vczIuc2gsIHRvb2xzL21ha2Vfb3MyLmNtZCwgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6CisJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KKwlBIGZldyBwYXRjaGVzIHRvIGhlbHAgV2luZSB0byBjb21waWxlIG9uIE9TLzIuCisKK1RodSBBcHIgMTUgMTY6NDY6NTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KKworCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKKwlIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KKwlDaGFuZ2UgKDMyIGJpdCkgSE1FVEFGSUxFcyB0byBHREkgb2JqZWN0cyAoSE1FVEFGSUxFMTZzIHJlbWFpbiBhcworCWdsb2JhbCBtZW1vcnkgaGFuZGxlcykuICBGaXhlZCBkaXNrLWJhc2VkIE1ldGFGaWxlcy4gIEJldHRlcgorCXNlcGFyYXRpb24gYmV0d2VlbiBNZXRhRmlsZSBwbGF5YmFjayBhbmQgdGhlIG1ldGFmaWxlZHJ2LgorCisJKiBtaXNjL2NydGRsbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KKwlfQ0lwb3cgYXJndW1lbnQgb3JkZXIgd2FzIGNvbmZpcm1lZCB3aXRoIFN0YXJjcmFmdCB2MS4wNS4KKworCSogZG9jdW1lbnRhdGlvbi9rZXlib2FyZDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJQ2xhcmlmaWVkIGEgZmV3IHBvaW50cy4KKworCSogbXNkb3MvaW50MjEuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KKwlBZGRlZCBJT0NUTCBmdW5jdGlvbiAweDQ0MGQvMHg3Mi4KKworCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKKwlCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgorCVVuaXRpYWxpemVDcml0aWNhbFNlY3Rpb24gcGFydGlhbCBzdHViIGltcGxlbWVudGF0aW9uLgorCisJKiBpbmNsdWRlL3dpbmJhc2UuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgbWlzc2luZyBwcm90byBmb3IgR2V0RXhpdENvZGVUaHJlYWQuCisKKwkqIGluY2x1ZGUvZHJpdmVyLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2Lmg6CisJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KKwlBZGRlZCBtaXNzaW5nIHdpbmRlZi5oIGluY2x1ZGVzLgorCisJKiB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2ludXNlci5oOgorCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgorCVJlbGVhc2VDYXB0dXJlKCkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGEgQk9PTCB2YWx1ZS4KKworCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9zaWduYWwuYzoKKwlNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlGcmVlQlNEIDMgbXVsdGl0aHJlYWRpbmcgZmluYWwgZml4LiBEbyBub3QgdXNlIGxpYmNfciwgbGliYyBpcyBqdXN0IGFzCisJcmVlbnRyYW50IGNvbmNlcm5pbmcgZXJybm8uIFJldmVydCB1bm5lZWRlZCBGcmVlQlNEIGhhY2sgdG8KKwlsb2FkZXIvc2lnbmFsLmMgZnJvbSBsYXN0IHBhdGNoLgorCisJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCWluZGV4ID09IDMgY29ycmVzcG9uZHMgdG8gQWx0LUdyICsgU2hpZnQuCisKKwkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KKwlNb3JlIG9mIERkZUNyZWF0ZVN0cmluZ0hhbmRsZUEsIERkZUZyZWVTdHJpbmdIQW5kbGUsIERkZVF1ZXJ5U3RyaW5nQQorCWFuZCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXIGFuZCB0aWR5IHVwIG9mIFJlbW92ZUhTWk5vZGVzLCBhbmQKKwlEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLgorCisJKiB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaDoKKwlQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgorCUZpeGVkIHVnbHkgZGlzYWJsZWQgY29udHJvbHMgYW5kIGJsYWNrIGJhY2tncm91bmQgaW4gV3JpdGUgYW5kIExvdHVzCisJTm90ZXMuCisKKwkqIGNvbnRyb2xzL2J1dHRvbi5jLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKKwlQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgorCUltcGxlbWVudCB0aGUgYnV0dG9uIHdpdGggYml0bWFwcy4KKworCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKKwlTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KKwlJbXBsZW1lbnRhdGlvbiBvZiBJU3RvcmFnZTo6Q29weVRvIGFuZCBJU3RyZWFtOjpDb3B5VG8uCisKKwkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUJ1Z2ZpeDogQWx3YXlzIHJlbGVhc2UgdGhlIFdpbjE2TG9jayBpbiBUQVNLX1Jlc2NoZWR1bGUuCisKKwkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgorCVNvbHZlZCBhIGRlYWRsb2NrIGJldHdlZW4gZ2xvYmFsIGxvY2sgYW5kIHduZCBsb2NrIGluIGV2ZW50LmMuCisKKwkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJVHlwbyB0aGF0IGJyb2tlIFNvbGFyaXMgY29tcGlsZSBmaXhlZC4KKworCSogY29udHJvbHMvZGVza3RvcC5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KKwlBZGQgYSBXSU5fUmVsZWFzZURlc2t0b3AgaW4gREVTS1RPUF9Jc1NpbmdsZVdpbmRvdy4KKworCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KKwlGaXggc2NhbmNvZGVzIGZvciBOdW1Mb2NrIGFuZCBOdW0tLy4KKwlGaXggTWFwVmlydHVhbEtleSgpIChtYXB0eXBlPTIpIHRvIHJldHVybiBwcm9wZXIgYXNjaWkgY29kZS4KKwlSZXdvcmtlZCBHZXRLZXlOYW1lVGV4dCgpIGFnYWluLgorCisJKiBncmFwaGljcy9wc2Rydi9mb250LmM6CisJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJTGltaXQgbGFzdENoYXIgdG8gMHhmZiBpbiBQU0RSVl9HZXRDaGFyV2lkdGguCisKKwkqIHdpbmRvd3MvdXNlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlNaXNzaW5nIFdJTkFQSSBmb3IgUmVnaXN0ZXJTeXN0ZW1UaHJlYWQuCisKK1N1biBBcHIgMTEgMTg6NDg6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KKworCSogbXNkb3MvaW50MTAuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgorCUZpeGVkICJEaXNwbGF5IENvbWJpbmF0aW9uIiBjYWxsLgorCisJKiBtaXNjL2NvbW0uYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgorCUZpeGVkIGEgY3Jhc2ggZHVlIHRvIGludmFsaWQgT3BlbkNvbW0gcmV0dXJuIHZhbHVlIGZvciBidXN5IGNvbW0gcG9ydC4KKwlDbGVhbmVkIHVwL2ZpeGVkIHNldmVyYWwgdGhpbmdzLgorCisJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KKwlFbmFibGVkIHRocmVhZCBzYWZlbmVzcyBmb3Igd25kIHN0cnVjdHVyZSBjb2RlLgorCisJKiBkZWJ1Z2dlci9kYmcueTogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJVXNlIENMSUVOVF9EZWJ1Z2dlclJlcXVlc3QgdG8gZnJlZXplL3VuZnJlZXplIHRocmVhZHMuCisKKwkqIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlBZGRlZCBuZXcgQ0xJRU5UX0RlYnVnZ2VyUmVxdWVzdCByb3V0aW5lLCBpbXBsZW1lbnRlZCBzdXBwb3J0IGZvcgorCURFQlVHR0VSX0ZSRUVaRV9BTEwvREVCVUdHRVJfVU5GUkVFWkVfQUxMIHJlcXVlc3RzLgorCVJ1biB3aW5lIHNlcnZlciBpbiB0aGUgbWFpbiB3aW5lIHByb2Nlc3MuCisJQnVnZml4OiBuZXZlciBmcmVlIGluaXRpYWwgdGhyZWFkIQorCisJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaDoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlOb24tZnVuY3Rpb25hbCBQUk9DRVNTX1N1c3BlbmQvUmVzdW1lT3RoZXJUaHJlYWRzIHJlbW92ZWQuCisKKwkqIHdpbmRvd3MvdGltZXIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJVGVhY2hlZCBUSU1FUl9HZXROZXh0RXhwaXJhdGlvbiB0aGF0IGEgdGltZXIgdGhhdCBoYXMgYWxyZWFkeSBleHBpcmVkCisJKGJ1dCBub3QgcHJvY2Vzc2VkIHlldCkgSEFTIGFscmVhZHkgZXhwaXJlZC4uLgorCisJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgorCURlZmF1bHQgdmFsdWVzIGZvciByZWdpc3RyeS4KKworCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNhPgorCU9wdGltaXplZCBjb2RlIGZvciBTZXRJbWFnZUJpdHNfWCwgbWFraW5nIGJpdG1hcCBjcmVhdGlvbiBmYXN0ZXIuCisKKwkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJVGhlIE1FQVNVUkVJVEVNU1RSVUNUIGFuZCBEUkFXSVRFTVNUUlVDVCB3ZXJlIGZpbGxlZCB3cm9uZy4KKworCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9zaWduYWwuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgY29uZmlndXJlOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCS0gU3RhcnRlZCBtdWx0aXRocmVhZGluZyBmb3IgRnJlZUJTRCAoaW5jb21wbGV0ZSwgYnV0IHNvbWUKKwkgIGFwcGxpY2F0aW9ucyBub3cgYXQgbGVhc3Qgc3RhcnQgdXAgYWdhaW4pLgorCS0gVXNlIF90aHJlYWRfc3lzX3NpZ2FjdGlvbi9fdGhyZWFkX3N5c19zaWdhbHRzdGFjay4KKwktIENSMiBvbiBwYWdlZmF1bHQgZ2V0cyBwYXNzZWQgaW4gc2NfZXJyIChzb21lIGtpbmQgb2Yga2x1ZGdlIGluCisJICBGcmVlQlNEIG93bnMgZmF1bHQgaGFuZGxpbmcgd2UgY2FuIHVzZSkKKworCSogaW5jbHVkZS9zZWxlY3RvcnMuaCwgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYzoKKwlNYWRlIFNFTEVDVE9SX1JlYWxsb2NCbG9jayBwcmVzZXJ2ZSB0aGUgY3VycmVudCBzZWxlY3RvciBhY2Nlc3MgcmlnaHRzCisJKHByb2JsZW0gcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KKworCSogbWlzYy9zeXN0ZW0uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJVXNlIHNlcnZpY2VzIHRocmVhZCBpbnN0ZWFkIG9mIHRpbWVyIHNpZ25hbHMuCisKKwkqIHNlcnZlci90aHJlYWQuYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlBbGxvdyB1c2VyIEFQQ3Mgd2l0aCBOVUxMICdmdW5jJyAoanVzdCB3YWtlIHVwIHRoZSB0aHJlYWQpLgorCisJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJSW1wbGVtZW50ZWQgJ2tlcm5lbCBzZXJ2aWNlcyB0aHJlYWQnLgorCisJKiBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgorCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgorCUFkZGVkIHN0dWIgZm9yIFByaW50ZXJQcm9wZXJ0aWVzLgorCisJKiBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL250ZGRrLmgsIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udC5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUltcGxlbWVudGVkIE50VGVybWluYXRlUHJvY2VzcyBhbmQgTnREaXNwbGF5U3RyaW5nLgorCisJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CisJRnJlZUxpYnJhcnkgcGFydGlhbCBpbXBsZW1lbnRhdGlvbi4KKworCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJTWFkZSBfZnRvbCB0YWtlIGFyZ3VtZW50IGZyb20gRlBVIHN0YWNrLiBTdGFyY3JhZnQgdjEuMDQgKCpub3QqIEJyb29kCisJV2Fycykgbm93IHdvcmtzIHBlcmZlY3RseSB3aXRoIFdpbmUncyBjcnRkbGwuIFdyb3RlIGEgdGVzdAorCWltcGxlbWVudGF0aW9uIG9mIF9DSXBvdyB0b28sIHdoaWNoIHRob3NlIHdobyBkbyBoYXZlIEJyb29kIFdhcnMgY2FuCisJcmVwb3J0IG9uLCBzbyBpdCBjYW4gYmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgorCisJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgorCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIEdldEtleU5hbWVUZXh0IGZvciBuZXcga2V5Ym9hcmQgc3RydWN0dXJlLgorCisJKiBkbGxzL3RhcGkzMi9waG9uZS5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgorCUZpeGVkIHdhcm5pbmcuCisKKwkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlBZGRlZCBtaXNzaW5nIFJlYWRDbGFzc1N0ZyBwcm90b3R5cGUuCisKKwkqIG1pc2Mvd3NwcmludGYuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KKwktIEZpeCBjb21tZW50cyBhZnRlciB0aGUgYmlnIHJlbmFtaW5nICh4eHh4MzJ5IC0tPiB4eHh4eSkuCisJLSBEZWNsYXJlIHRoZSBXUFJJTlRGX0RBVEEgdW5pb24sIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBMUENWT0lEIGFuZCBXT1JELgorCSAgQXZvaWQgdWdseSB0eXBlIGNhc3RpbmcsIGFuZCBmaXggY29tcGlsYXRpb24gd2FybmluZ3Mgb2Ygd3NwcmludGYuYworCisJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kZGU6CisJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KKwlTdGF0dXMgZG9jdW1lbnQgZm9yIERERS9EZGVtbC4KKworCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlBZGRlZCBldmVudCBjYWxsYmFjayBtZWNoYW5pc20uCisJSW50cm9kdWN0aW9uIG9mIE1DSSB5aWVsZCBwcm9jcy4KKwlVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zICh3YXZlLCBtaWRpKSB0byBhbGxvdworCWNvcnJlY3QgY2FsbGJhY2sgbWVjaGFuaXNtcy4KKwlNYWRlIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIHdvcmtpbmcuCisJRmlyc3QgdHJ5IGF0IG1tVGhyZWFkWFhYIGZ1bmN0aW9ucy4KKworCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgdG8gYWxsb3cgY29ycmVjdCBjYWxsYmFjaworCW1lY2hhbmlzbXMuCisKKwkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlTbWFsbCBlbmhhbmNlbWVudC4KKworCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJTmV3IG1ldGhvZCBmb3Igc3RydWN0dXJlIGNvbnZlcnNpb24gKDE2IDwtPiAzMikuCisJTW9yZSBNQ0kgc3RydWN0dXJlcyBjb3JyZWN0bHkgbWFwcGVkLgorCUludHJvZHVjdGlvbiBvZiBNQ0kgeWllbGQgcHJvYyBhbmQgYnJlYWsgZmFjaWxpdHkuCisKKwkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyB0byBhbGxvdyBjb3JyZWN0IGNhbGxiYWNrCisJbWVjaGFuaXNtcy4gIEltcGxlbWVudGVkIHdhdmVPdXQgcGxheWJhY2sgYXMgYXN5bmNocm9ub3VzLgorCisJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBtbVRocmVhZFhYWCBmdW5jdGlvbnMuCisKKwkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgYSBmZXcgbWlzc2luZyBkZWZpbmVzIChNSURJLCBXQVZFLCBjYWxsYmFja3MpLgorCVN0cnVjdHVyZXMgZm9yIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zLgorCisJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyAod2F2ZSwgbWlkaSkgdG8gYWxsb3cKKwljb3JyZWN0IGNhbGxiYWNrIG1lY2hhbmlzbXMuIEFkZGVkIHdpbmUgc3BlY2lmaWMgZW50cnkgZm9yIG1tVGhyZWFkWFhYCisJZnVuY3Rpb25zIHRocmVhZCBzdGFydGluZyBwb2ludC4KKworCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CisJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KKwlJbnRyb2R1Y2UgU1RBVFNURzE2IC0gYSAxNiBiaXQgdmFyaWFudCBvZiBTVEFUU1RHLgorCisJKiBvbGUvc3RvcmFnZS5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgorCUZpeCBJU3RvcmFnZTE2X2ZuU3RhdCgpIHRvIHVzZSBTVEFUU1RHMTYgKGl0IGlzIGEgMTYgYml0IGludGVyZmFjZSkuCisKKwkqIGNvbnRyb2xzL21lbnUuYzogUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KKwlGaXhlZCBtZW51IHR5cGUgc2V0dGluZyBpbiBTZXRNZW51SXRlbUluZm8zMl9jb21tb24oKS4KKworCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCVNlbmQgVVNJR19QUk9DRVNTX0NSRUFURSBzaWduYWwuCisJQnVnZml4OiBHZXRQcm9jZXNzRHdvcmQgb2Zmc2V0IC04IHNob3VsZCByZXR1cm4gcGFyZW50IHByb2Nlc3MgSUQuCisKKwkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgorCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CisJQWRkZWQgUmVnaXN0ZXJTeXN0ZW1UaHJlYWQgc3R1Yi4KKworCSogaW5jbHVkZS93aW5lL29ial9taXNjLmgsIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgaW5jbHVkZS93aW5lcnJvci5oOgorCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KKwlJbXBsZW1lbnRlZCB0aGUgQ29DcmVhdGVJbnN0YW5jZUV4IG1ldGhvZC4KKworCSogbWlzYy9yZWdpc3RyeS5jOiBEYXZpZCBHYXkgPGRnYXlAQ1MuQmVya2VsZXkuRURVPgorCUZpeGVkIGNyYXNoIGR1ZSB0byBhIHZhbHVlIG9mIG5hbWUgbGVuZ3RoIDAsIHZhbHVlIGxlbmd0aCAwIGF0IHRoZSBlbmQKKwlvZiB0aGUgcmVnaXN0cnkuCisKKwkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KKwlDaGVjayBpZiBwVGVtcEFjdGl2ZVdpbmRvdyBpbiBXSU5QT1NfU2V0V2luZG93UG9zIGlzIHZhbGlkIGFmdGVyIHRoZQorCVFVRVVFX0xvY2suCisKKwkqIG11bHRpbWVkaWEvZHBsYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CisJLSB1cGRhdGVkIGJlY2F1c2Ugb2YgdGhlIHNwbGl0dGluZyBvZiBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24KKwktIHVwZGF0ZWQgdG8gdXNlIElDT01fVEhJUworCisJKiBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBvbGUvZ3VpZC5jOgorCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgorCS0gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MKKwktIG1vdmVkIHRoZSBJRGlyZWN0UGxheUxvYmJ5IGludGVyZmFjZSB0byBkcGxvYmJ5LmgKKwktIHJlbW92ZWQgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzIHNpbmNlIHRoZXkgbmVlZCB0byBiZQorCXNlcGFyYXRlCisKKwkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CisJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CisJSUNPTWlzYXRpb24gb2YgdGhlIERpcmVjdFNvdW5kIEFQSS4KKworCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9zaGxvYmouaDoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwktIHJlb3JnYW5pc2VkIGljb24gZXh0cmFjaW5nIGZyb20gZmlsZXMKKwktIG1hZGUgZXh0cmFjdGluZyBmcm9tIG5lIGFuZCBpY28gZmlsZXMgd29ya2luZworCS0gSVBlcnNpc3RGaWxlIGludGVyZmFjZSBmb3IgSUV4dHJhY3RJY29uCisKKwkqIG1pc2Mvc2hlbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJRml4ZWQgYnVmZmVyIG92ZXJydW4uCisKKwkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlDaGFuZ2VkIHJlc3NvdXJjZSBkaXIgc3RydWN0dXJlcy4KKwlBZGFwdGVkIEZpbmRCZXN0SWNjb24vRmluZEJlc3RDdXJzb3IuCisKKwkqIHdpbmRvd3Mvc3lzY29sb3IuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTG9hZGluZyB0aGUgY29sb3Igc2NoZW1hIGZvciByZWdpc3RyeS4KKworU2F0IEFwciAxMCAxNjo1ODo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgorCisJKiBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy9BdHRpYy93aW5zb2NrX2Rucy5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJUmVpbXBsZW1lbnRlZCB3aW5zb2NrIGFzeW5jaHJvbm91cyBETlMgc2VydmljZXMuIE5vIGxvbmdlciB1c2UgYQorCWZvcmsoKWVkIHByb2Nlc3MsIGJ1dCBlaXRoZXIgYSBzZXJ2aWNlIHRocmVhZCBvciBpbmxpbmUgYmxvY2tpbmcgY2FsbHMKKwlmb3Igbm9uLXRocmVhZGluZyBhcmNoaXRlY3R1cmVzLiAoTWFrZXMgRnJlZSBBZ2VudDE2IHdvcmsgYWdhaW4uKQorCisJKiBwcm9ncmFtcy9jbWRsZ3RzdC9BdHRpYy9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgorCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KKwktIGNvbG9yIGFuZCBmb250IGRpYWxvZ3Mgbm93IGFjdHVhbGx5IGRvIHNvbWV0aGluZyBpbnRlcmVzdGluZywKKwkgIGFuZCBmb3JjZSBhIHJlZHJhdyB3aGVuIHN1Y2Nlc3NmdWwuICBCYWNrZ3JvdW5kIGNvbG9yIGlzIGFkanVzdGFibGUuCisJICBUZXh0IGNvbG9yIGlzIGFsc28gYWRqdXN0YWJsZSwgYnV0IHRoZSB1c2VyIGhhcyB0byBzZXQgdGhlIENGX0VGRkVDVFMKKwkgIGZsYWcgZmlyc3QuCisJLSB0ZXh0IGlzIG91dHB1dCBsZWZ0LXJpZ2h0IGNlbnRlcmVkLCBiYXNlbGluZSwgYXQgdGhlIG1pZGRsZQorCSAgb2YgdGhlIHdpbmRvdywgYW5kIG1vdmVzIHdpdGggdGhlIHdpbmRvdy4gIFRleHQgZm9udCBpcyBhZGp1c3RhYmxlLgorCS0gU3VjY2VzcyBhbmQgZmFpbHVyZSBNZXNzYWdlQm94IGNhbGxzIGZvciBDb2xvciwgRm9udCwgT3BlbiwKKwkgIGFuZCBTYXZlIGhhdmUgYmVlbiByZW1vdmVkIG9yIHN1cHByZXNzZWQuICBUaGV5IGFubm95ZWQgbWUgYWZ0ZXIKKwkgIGF3aGlsZSwgYW5kIEkgc3VzcGVjdCB0aGV5IGFubm95ZWQgb3RoZXJzLCB0b28uICBVc2UgbXkgdG9vbCEgOi0pCisJLSBjbWRsZ3RzdCBub3cgaGFzIHRoZSBmdWxsIHBhdGhuYW1lIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lcjsgd2hpY2ggbWF5CisJICBhc3Npc3QgaW4gZGVidWdnaW5nIGNlcnRhaW4gcHJvYmxlbXMgLS0gb3IgaXQgbWF5IG5vdC4gOi0pCisJLSB1c2FnZSBkaWFsb2cgYWRkZWQKKworCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJQ29ycmVjdGVkIGRlYnVnIG91dHB1dC4KKworCSogd2luZG93cy9kcml2ZXIuYywgcmVsYXkzMi93aW5tbS5zcGVjOgorCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCUJldHRlciBlcnJvciBoYW5kbGluZyA7IGEgZmV3IGJ1ZyBmaXhlcyA7IG5vdyBPcGVuRHJpdmVyMTYgY2FuIGxvYWQgMzIKKwliaXQgZHJpdmVycy4KKwlBZGRlZCBzdHViIGZvciBHZXREcml2ZXJGbGFncy4KKworCSogd2luZG93cy91c2VyLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CisJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CisJU3R1YnMgZm9yIENsb3NlRGVza3RvcCBhbmQgQ2xvc2VXaW5kb3dTdGF0aW9uLgorCisJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CisJR2V0TW9kdWxlRnJvbVBhdGggbm93IGNoZWNrcyBmb3IgbG9hZGVkIG1vZHVsZXMgdmlhIGZpbGVuYW1lcyB3aGljaAorCXdlcmUgc3BlY2lmaWVkIHdpdGhvdXQgYSBwYXRoLgorCisJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6CisJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgorCUltcGxlbWVudGF0aW9uIG9mIEhLVSBrZXkgc2F2aW5nIGFuZCBsb2FkaW5nLiBBZGQgbmV3IHN1cHBvcnRlZCBkYXRhCisJdHlwZSBpbiBkZWJ1Z19wcmludF92YWx1ZS4KKworCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9kb2NvYmouaCwgb2xlL2d1aWQuYzoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlOZXcgaW50ZXJmYWNlcyBmb3IgSU9sZUNvbW1hbmRUYXJnZXQsIElEcm9wVGFyZ2V0LCBJVmlld09iamVjdC4KKwlTbWFsbCBjaGFuZ2UgaG93IHRvIGdldCBpY29ucyBmb3IgbGlzdHZpZXcuCisKKwkqIGluY2x1ZGUvc2hsb2JqLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUlMTG9hZEZyb21TdHJpbmcgYW5kIFNIR2V0U2V0dGluZ3MgaW1wbGVtZW50ZWQuCisKKwkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCVNIR2V0U2V0dGluZ3MgaW1wbGVtZW50ZWQuCisJRXhpdFdpbmRvd3NEaWFsb2coKSBzaW11bGF0ZWQgYnkgTWVzc2FnZWJveC4KKworCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJSUxMb2FkRnJvbVN0cmluZyBpbXBsZW1lbnRlZC4KKworCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYzoKKwlSaWNoYXJkIE1vcnRpbWVyIDxyZW1pdHJvbUBteS1kZWphbmV3cy5jb20+CisJQWRkZWQgbWlzc2luZyAqSXNEYXJrIGVudHJpZXMgaW50byBQQUxFVFRFX0RyaXZlciBpbnN0YW5jZQorCWluaXRpYWxpc2F0aW9uLgorCisJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CisJRml4ZWQgWDExRFJWX01PVVNFX1dhcnBQb2ludGVyIGluaXRpYWwgdmFsdWUuCisKKwkqIG9iamVjdHMvYml0bWFwLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CisJRW5zdXJlIHRoYXQgdGhlIGJpdG1hcCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB3aGVuIGNyZWF0ZWQgd2l0aCB0aGUKKwlMUl9DUkVBVEVESUJTRUNUSU9OIGZsYWcuCisKKwkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgorCUZpeGVkIHRoZSBtZXNzYWdpbmcgcHJvYmxlbSBvZiB0aGUgZWRpdCBib3ggZm9yIG5vZGUgbGFiZWwgZWRpdGlvbi4KKwlTdWJzdGl0dXRlZCBXTV9QQUlOVCBmb3IgSW52YWxpZGF0ZVJlY3QuCisJU29tZSBncmFwaGljYWwgZml4ZXMuCisKKwkqIG1pc2MvbWFpbi5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CisJQ2hlY2sgZm9yIGRyaXZlcnM9PU5VTEwgYmVmb3JlIHRyeWluZyB0byBkZWxldGUgdGhlbSBhdCBleGl0LiAgVGhpcworCWNvdWxkIGhhcHBlbiBpZiB0aGUgZW11bGF0b3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGZvciBzb21lIHJlYXNvbiBhbmQKKwl0aGUgZHJpdmVycyBoYWRuJ3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuCisKKwkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQ2FsbCBJbml0QXBwMTYgKHVzaW5nIENhbGxvdXQpIGZvciBpbml0aWFsIHByb2Nlc3MuCisKKwkqIG1pc2NlbXUvaW5zdHIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQ2xlYXIgaW52YWxpZCBzZWxlY3RvcnMgYWxzbyBpbiBDYWxsVG8xNiByZWxheSBjb2RlLgorCisJKiBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjOgorCUpvc2UgTWFyY29zIEzzcGV6IENhcmF2YWNhIDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CisJUmV2aXNlZCBTcGFuaXNoIHJlc291cmNlcy4KKworCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CisJRml4ZWQgd2luZG93IGxvY2tpbmcgYnVnIGluIENhbGNDaGlsZFNjcm9sbC4KKworCSogbXVsdGltZWRpYS90aW1lLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgorCUZpeGVkIGZha2UgbXVsdGltZWRpYSB0aW1lcnMuIEdyaW0gRmFuZGFuZ28gaXMgbm93IGFibGUgdG8gc3RhcnQgdXAKKwl3aGVuIHVuZGVyIGZhdm9yYWJsZSBjb25kaXRpb25zLiBUaGUgcHJldmlldyBtb3ZpZSBvbiB0aGUgQnJvb2QgV2FycworCWRpc2Mgbm93IHBsYXlzLCB0b28uCisKKwkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CisJQnVnZml4IEVudW1QcmludGVyc0E6IGxwYlByaW50ZXJzPU5VTEwgb3IgY2JCdWY9MCB3b3VsZCBjcmFzaCBXaW5lLAorCWluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSByaWdodCBidWZmZXJzaXplLgorCitUdWUgQXByICA2IDA3OjE0OjA5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CisKKwkqIGZpbGVzL2RpcmVjdG9yeS5jOiBnYWxiZXJ0ZSA8Z2FsYmVydGVAbmVvLnJyLmNvbT4KKwlGaXhlZCBTZWFyY2hQYXRoQSByZXR1cm4gdmFsdWUuCisKKwkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgorCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgorCS0gY2xlYW4tdXAgb2YgdGV4dHVyZSAnbG9hZGluZycKKwktIGFkZGVkIFNldENvbG9yS2V5IGNhbGxiYWNrIGZvciBhbHJlYWR5IGxvYWRlZCB0ZXh0dXJlcworCisJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CisJRml4ZWQgYSBwcm9ibGVtIHBvaW50ZWQgb3V0IGJ5IEtldmluIEhvbGJyb29rLgorCisJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgorCWNvbW1jdHJsLmggbXVzdCBpbmNsdWRlIHByc2h0LmguCisKKwkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgorCVdhcm5pbmcgZml4LgorCisJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CisJQWRkZWQgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIElDT00gbWFjcm9zIHRoYXQgdXNlIE1pY3Jvc29mdCBzdHlsZQorCXZpcnR1YWwgbWV0aG9kcyB0byBpbXBsZW1lbnQgdGhlIENPTSBpbnRlcmZhY2VzIGluIEMrKy4KKworCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgorCUNvcnJlY3Rpb24gb2YgTXV0ZXggaGFuZGxpbmcgaW4gRGRlSW5pdGlhbGl6ZVcgZm9yIGNhc2VzIG90aGVyIHRoYW4KKwkxc3QgY2FsbC4gQWRkaXRpb24gb2YgaW5zdGFuY2UgaGFuZGxpbmcgdG8gRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQSwKKwlEZGVDcmVhdGVTdHJpbmdIYW5kbGVXLCBSZW1vdmVIU1pOb2RlcywgRnJlZUFuZFJlbW92ZUhTWk5vZGVzLiAgMXN0CisJY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZVVuaXRpYWxpemUsIG1vdmUgb2YgaW50ZXJuYWwgc3RydWN0dXJlIGRlZnMKKwlpbiBmcm9tIGRkZW1sLmguIFJlbW92ZWQgbm9uLUFOU0kgY29tbWVudC4KKworCSogaW5jbHVkZS9kZGVtbC5oOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgorCU1vdmVkIGludGVybmFsIHN0cnVjdHVyZXMgdG8gZGRlbWwuYywgYWxzbyByZW1vdmVkIG5vbi1BTlNJIGNvbW1lbnRzLAorCWFuZCBhZGRlZCBzcGVjIGZvciBEZGVRdWVyeUNvbmZJbmZvIGFuZCBEZGVRdWVyeUNvbnZJbmZvMTYuCisKKwkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CisJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CisJRml4ZWQgbWVtb3J5IGxlYWtzIGluIG1peGVyT3BlbjE2L21peGVyQ2xvc2UsCisJbWlkaU91dE9wZW4xNi9taWRpT3V0Q2xvc2UxNiwgd2F2ZUluT3BlbjE2L3dhdmVJbkNsb3NlMTYsCisJbWlkaUluT3BlbjE2L21pZGlJbkNsb3NlMTYuCisKKwkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CisJQWRkZWQgc2FuaXR5IGNoZWNrIGZvciB3aGl0ZXNwYWNlIGluIGZpbGUgbmFtZXMsIHZhcmlvdXMgb3RoZXIgZml4dXBzLgorCitTdW4gQXByICA0IDEyOjQ4OjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CisKKwkqIGNvbnRyb2xzL2xpc3Rib3guYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KKwlXTV9NT1VTRU1PVkUgaW1wbGVtZW50YXRpb24gYnVnIGZpeC4KKworCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKKwlKb3PpIE1hcmNvcyBM83BleiA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgorCUFkZGVkIFNwYW5pc2gga2V5Ym9hcmQgbGF5b3V0LgorCisJKiBtaXNjL2NvbW0uYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgorCUZpeGVkIHRoZSBtb2RlbSBjb250cm9sIHBhcnQgb2YgRXNjYXBlQ29tbUZ1bmN0aW9uMTYuCisKKwkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgorCUFkZGVkIG1pc3NpbmcgZ290by4KKworCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbm5scy5oOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUVudW1DYWxlbmRhckluZm9BIHN0dWIuCisKK1NhdCBBcHIgIDMgMTY6Mjc6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KKworCSogd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CisJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgorCVN1c3BlbmQgdGhlIHdpbmRvdyBsb2NrcyBiZWZvcmUgRGVmS2V5YkV2ZW50UHJvYyBhbmQKKwlEZWZNb3VzZUV2ZW50UHJvYy4KKworCSogaW5jbHVkZS93bmFzcGkzMi5oLCBwcm9ncmFtcy92aWV3L2dsb2JhbHMuaCwgaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvd2luaW9jdGwuaCwgaW5jbHVkZS93aW5udC5oOgorCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KKwlNb3JlICNwcmFnbWEgZml4ZXMgKGlkZWEgT3ZlIEthYXZlbiwgbWlzdGFrZXMgYXJlIG1pbmUpLgorCisJKiB3aW5kb3dzL3dpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlObyBsb25nZXIgc2VuZGluZyBhdG9tcyBpbiAoKENSRUFURVNUUlVDVCopbFBhcmFtKS0+bHBzek5hbWUgb2YKKwlXTV9DUkVBVEUgbWVzc2FnZXMuCisKKwkqIGxvYWRlci9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQWRkZWQgc29tZSBTZXRMYXN0RXJyb3IoKXMgaW4gR2V0UHJvY0FkZHJlc3MoKSBhbmQgTG9hZExpYnJhcnkoKS4KKworCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKKwlDaHJpc3RpYW4gU2NobGFpbGUgPHVwOW5AcnoudW5pLWthcmxzcnVoZS5kZT4KKwlJbXBsZW1lbnRlZCBtYWtlcGF0aCwgcmFuZCgpIHJldHVybnMgY29ycmVjdCByYW5nZSwgZml4ZWQgZnB1dGMuCisKKwkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIG1zZG9zL2ludDIxLmM6CisJTWFzayBvZmYgdW5zdXBwb3J0ZWQgYXR0cmlidXRlcyBpbiBfbGNyZWF0IChidWcgcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KKwlNb3ZlZCBfbGNyZWF0MTZfdW5pcSB0byBpbnQyMS5jCisKKwkqIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG8zcmVzLnJjLCBsaWJ0ZXN0L2hlbGxvNC5jLCBsaWJ0ZXN0L25ldy5jLCBsaWJ0ZXN0L3JvbGV4LmMsIGxpYnRlc3QvdmFydGVzdC5jLCBsaWJ0ZXN0L3ZvbGluZm8uYzoKKwlQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgorCUNhc3RzIHRvIChTRUdQVFIpIHJlbW92ZWQuIFRoZXkgZGlkIG5vdGhpbmcgYW55d2F5LgorCUluY2x1ZGVzIGFkZGVkIG9yIHJlbW92ZWQgd2hlcmUgbmVjZXNzYXJ5LgorCVdpbjE2IGZ1bmN0aW9ucyByZXBsYWNlZCB3aXRoIHRoZWlyIFdpbjMyIGNvdW50ZXJwYXJ0cy4gQ29tbWVudHMgYWRkZWQKKwl3aGVyZSBpdCB3YXMgaW1wb3NzaWJsZS4KKwlDQUxMQkFDSyBhZGRlZCB3aGVyZSBuZWNlc3NhcnkuIFNvbWUgZGVjbGFyYXRpb25zIGZpeGVkLgorCUNvbnN0cnVjdHMgbGlrZSAiI2lmIFdJTkRPV1MiIGNvcnJlY3RlZC4gVXNpbmcgIiNpZmRlZiBfX3VuaXhfXyIgaW5zdGVhZC4KKwlEbGdQcm9jIGluIGhlbGxvMyB1c2VzIEVuZERpYWxvZygpIGluc3RlYWQgb2YgRGVzdHJveVdpbmRvdygpLgorCUxpc3Rib3ggZW5hYmxlZCBpbiBoZWxsbzMuCisKKwkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCVVwZGF0ZWQgRnJlbmNoIGtleWJvYXJkLgorCisJKiBsaWJ0ZXN0L2hlbGxvLmM6IEFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KKwlGYW5jaWVyIHZlcnNpb24gb2YgaGVsbG8uYyBjb3VydGVzeSBvZiBIdXcgRGF2aWVzLgorCisJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KKwlGaXhlZCBjb21waWxhdGlvbiBvZiB0aGUgQ29udHJvbCBwYW5lbC4KKworCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJJ1JlYWxpZ25lZCcgdGhlIGxheW91dCB0YWJsZSBhIGJpdC4gQXBwbGllZCB0aGUgbm9uLWxhdGluLTEgc3R1ZmYgYW5kCisJdGhlIGRlYWQga2V5IG1hcHBpbmcgc3R1ZmYgdG8gdGhlIGFjdHVhbCBtYXBwaW5nIGNvZGUgdG9vLiAgUHJldHRpZWQKKwl1cCB0aGUgZml4bWUgbWVzc2FnZS4gQWRkZWQgYSBjaGVjayB3aGVyZSBpZiB0aGUga2V5cyBvZiB0d28gbGF5b3V0cworCW1hdGNoIGV4YWN0bHksIHRoZSBvbmUgd2l0aCB0aGUgYmVzdC1tYXRjaGluZyBrZXljb2RlIG9yZGVyIGlzIGNob3NlbiwKKwlzbyB0aGF0IHRoZSBRV0VSVFkgYW5kIER2b3JhayBsYXlvdXRzIGNhbiBiZSBkaXN0aW5ndWlzaGVkLgorCisJKiB3aW4zMi9kZXZpY2UuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgorCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCUFkZGVkIChlbXB0eSkgc3R1YiBmb3IgT3BlblZ4REhhbmRsZS4KKworCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCW1taW9PcGVuKCkgbm93IGhhbmRsZXMgY29ycmVjdGx5IE1NSU9fUEFSU0UgZmxhZy4KKworCSogY29udHJvbHMvZWRpdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgorCUJhY2tncm91bmQgY29sb3IgZml4IHdoZW4gZGlzYWJsZWQgb3IgcmVhZCBvbmx5LgorCisJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CisJVHJhbnNmZXJlZCB0aGUgd2luZG93IHN0cnVjdCBtZW1vcnkgcmVsZWFzZSBmcm9tIFdJTl9EZXN0cm95V2luZG93IHRvCisJV0lOX1JlbGVhc2VXbmRQdHIuCisKKwkqIGluY2x1ZGUvd2ludXNlci5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KKwlETEdJVEVNVEVNUExBVEUgc3RydWN0dXJlIGhhZCBvbmUgdG9vIG1hbnkgbWVtYmVyLgorCisJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJUHJldmVudCBjcmFzaCBpbiBkZWJ1Z2dlci4KKworRnJpIEFwciAgMiAxMDozNzo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgorCisJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGluY2x1ZGUvY29tYm8uaDoKKwlGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CisJSW1wbGVtZW50ZWQgdGhlIFdpbjk1IGxvb2sgYW5kIGZlZWwuCisKKwkqIHdpbmRvd3MvZGVmd25kLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KKwlXcm90ZSBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXTV9QUklOVCBtZXNzYWdlLgorCisJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgbWlzYy9jYWxsYmFjay5jOgorCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KKwlTdXNwZW5kIGFsbCB3aW5kb3dzIGxvY2tzIGJlZm9yZSB0aGUgY29udHJvbCBpcyBwYXNzZWQgdG8gdGhlCisJYXBwbGljYXRpb24uCisJQWxzbyBmaXhlZCBzb21lIGJ1Z3MgaW4gZGNlLmMKKworCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CisJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgorCS0gUmVtb3ZlIHNvbWUgb2xkIHJjIG1ha2Ugc3R1ZmYKKwktICJtYWtlIGNsZWFuIiBvbWl0dGVkIHNvbWUgaW5jbHVkZSBzdWJkaXJzCisKKwkqIHJlbGF5MzIvZGRyYXcuc3BlYywgZ3JhcGhpY3MvZGRyYXcuYzoKKwlMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KKwlBZGRlZCBEbGxDbGFzc0ZhY3RvcnkgdG8gRGlyZWN0RHJhdy4KKworVGh1IEFwciAgMSAxMjowNTo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgorCisJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlTcGxpdCBvZmYga2V5c3ltL2RlYWRjaGFyIC0+IGNoYXIgbWFwcGluZywgdXNlIGl0IGluIERldGVjdExheW91dC4KKworCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3gxMWRydi5oOgorCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KKwlGaXhlcyBmb3IgaWdub3JlZCBXVlJfW1ZIXVJFRFJBVyBmbGFncywgbWFkZSBtaW5pbWl6YXRpb24gaW4gbWFuYWdlZAorCW1vZGUgZ28gdGhyb3VnaCB3aW5kb3cgbWFuYWdlciwgc21hbGwgYnVnZml4ZXMgZm9yIG1lbnUgYW5kIHdpbmRvdworCWNvZGUsIGV4dGVuZGVkIGNsaXBib2FyZCBkcml2ZXIgbW9kZWwgdG8gaGFuZGxlIGZvcm1hdHMgb3RoZXIgdGhhbgorCXRleHQuCisKKwkqIGNvbnRyb2xzL2VkaXQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KKwlFQ19VU0VGT05USU5GTyBtZWFucyBlcy0+Y2hhcl93aWR0aC8zLCBub3QgZXMtPmNoYXJfd2lkdGguIFRoaXMgaXMKKwl0cnVlIGZvciBtdWx0aWxpbmUgY29udHJvbHMgdG9vLCBhcyBteSB0ZXN0cyBzaG93LgorCisJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKKwlMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgorCUFkZGVkIHN1cHBvcnQgZm9yIGljb24gYW5kIHNtYWxsaWNvbiB2aWV3cy4KKworCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KKwlNYWRlIERPU1ZNX0dldFRpbWVyIHN1cnZpdmUgRUFHQUlOIGVycm9ycy4uLgorCisJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgorCUltcGxlbWVudGVkIGFzeW5jIGNvbW0gYnVmZmVycyAoYnV0IHByb2JhYmx5IG5vdCBidWdmcmVlKSwgYW5kIGFsb25nCisJd2l0aCB0aGVtLCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhc3luYyBldmVudCBub3RpZmljYXRpb25zLCBtb25nIHRoZW0KKwlFbmFibGVDb21tTm90aWZpY2F0aW9uLiBSZW1vdmVkIGEgcHJldmlvdXMgaGFjayB0aGF0IHdhcyBmYWtpbmcgdGhlCisJYnVmZmVycywgc2luY2Ugd2Ugbm93IGhhdmUgcmVhbCBidWZmZXJzLi4uCisKKwkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJQWRkZWQgQ05fKiBmbGFncyB1c2VkIGluIFdNX0NPTU1OT1RJRlkuCisKKwkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgorCUltcGxlbWVudCB0aGUgRW51bUF0dGFjaGVkU3VyZmFjZSBtZXRob2QuCisKKwkqIG9sZS9vbGUyLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgorCUltcGxlbWVudGF0aW9uIGZvciBPbGVDcmVhdGVNZW51RGVzY3JpcHRvciwgT2xlU2V0TWVudURlc2NyaXB0b3IgYW5kCisJT2xlRGVzdHJveU1lbnVEZXNjcmlwdG9yIGFsb25nIHdpdGggYSBidW5jaCBvZiBpbnRlcm5hbGx5IHVzZWQgbWV0aG9kcworCWFuZCBkYXRhIHN0cnVjdHVyZXMuCisKKwkqIG9sZS9ndWlkLmMsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3d0eXBlcy5oOgorCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KKwlpbml0Z3VpZC5oIHNob3VsZCBvbmx5IGNvbnRhaW4gdGhlIG1hY3JvIHRoYXQgZGVmaW5lcyB0aGUgZ3VpZHMuCisJQWRkZWQgb2xlY3RsLmggdG8gZ3VpZC5jIHNvIHNvbWUgbmVlZGVkIGd1aWRzIGdldCBkZWZpbmVkLgorCU1hZGUgR1VJRF9OVUxMIGFuIGFjdHVhbCBndWlkIHNldCB0byAwLDAsMC4uLgorCisJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQWRkZWQgR2RpU2lnbmFsUHJvYygpIHN0dWIuCisKKwkqIG1pc2MvY2FsbGJhY2suYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3VzZXIuaCwgbG9hZGVyL21haW4uYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlBZGRlZCBVU0VSMzIuVXNlclNpZ25hbFByb2MgdG8gQ2FsbG91dCB0YWJsZS4KKwlJbXBsZW1lbnRlZCBidWlsdC1pbiBVc2VyU2lnbmFsUHJvYygpLgorCURvbid0IGFubm91bmNlIFdpbjMuMS1zdHlsZSBVU0VSIGhhbmRsZXIgYW55IG1vcmUuCisKKwkqIHdpbjMyL29yZGluYWxzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlJbXBsZW1lbnRlZCBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYygpLgorCVNlbmQgVVNFUiBzaWduYWxzIGF0IHZhcmlvdXMgYXBwcm9wcmlhdGUgcGxhY2VzLgorCU1vdmVkIFtHU11ldFByb2Nlc3NEd29yZCgpIHRvIHNjaGVkdWxlci9wcm9jZXNzLmMuCisKKwkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvc2hsb2JqLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUFsbCAxOSBGaWxlTWVudV8qIGZ1bmN0aW9ucywgc29tZSBhcyBzdHVicywgc29tZSBpbXBsZW1lbnRlZC4KKworCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCVNIQ0xTSURGcm9tU3RyaW5nLCBTdHJUb09sZVN0ciBpbXBsZW1lbnRlZC4KKwlSTEJ1aWxkTGlzdE9mUGF0aHMgc3R1Yi4KKworCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJRGxsR2V0VmVyc2lvbiAobm90IHlldCBleHBvcnRlZCkuCisJU21hbGwgY2hhbmdlIHRvIFNIQXBwQmFyTWVzc2FnZS4KKworCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlBZGRlZCBEcnZDbG9zZSwgRHJ2RGVmRHJpdmVyUHJvYywgRHJ2T3BlbiwgRHJ2T3BlbkEsIERydlNlbmRNZXNzYWdlLgorCisJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgU3RhY2tFbnRlcigpIGFuZCBTdGFja0xlYXZlKCkgc3R1YnMKKworCSogbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgorCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCVN0YXJ0aW5nIGltcGxlbWVudGF0aW9uIG9mIE1DSSBjcmVhdG9yIHRhc2tzCisJRml4ZWQgYnVnIGluIE1DSV9PUEVOIGhhbmRsaW5nICh0aGFua3MgdG8gQWRhbSBmb3IgcmVwb3J0aW5nIHRoaXMgb25lKQorCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBtbVRhc2tDcmVhdGUxNgorCisJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgY3JlYXRvciB0YXNrIHRvIE1DSSBzdHJ1Y3QuCisKKwkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CisJUmVwbGFjZWQgMHhDMDAwIGJ5IHN5bWJvbGljIGNvbnN0YW50cy4KKworCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgorCUZpeGVkIHNtYWxsID09LCAhPSBtaXh1cC4KKworCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYzoKKwlMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgorCUltcGxlbWVudGVkIFdNX05PVElGWUZPUk1BVC4KKworCSogbG9hZGVyL2VsZi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CisJImZvbyIgd2FzIG5vdCB0cmFuc2xhdGVkIHRvICJmb28uc28iIGluIGVsZiBsb2FkZXIuCisKKwkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJTG9hZEJpdG1hcDE2KCkvTG9hZEltYWdlMTYoKSBjYWxsaW5nIHNlcXVlbmNlIHNpbXBsaWZpZWQuCisKKwkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvY2FsbGJhY2suYywgaWYxNjMyL3dwcm9jcy5zcGVjOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUFsbG93IE5VTEwgTkUgcmVzb3VyY2UgaGFuZGxlcjsgY2FsbCB0aGUgZGVmYXVsdCBoYW5kbGVyIGRpcmVjdGx5LgorCVJlbW92ZWQgV1BST0NTIC8gQ2FsbGJhY2tzIHN1cHBvcnQgZm9yIFdpbmVMaWIgcmVzb3VyY2UgaGFuZGxlcnMuCisKKwkqIGluY2x1ZGUvcHJvY2Vzcy5oLCByZWxheTMyL3V0dGh1bmsuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlNYWRlIFVuaXZlcnNhbCBUaHVuayBsaXN0IHBlci1wcm9jZXNzLCBub3Qgc3lzdGVtIGdsb2JhbC4KKworCSogaW5jbHVkZS9jb21tY3RybC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KKwlBZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zLgorCisJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CisJSW1wbGVtZW50ZWQgVENNX0FESlVTVFJFQ1QuCisKKwkqIG1zZG9zL2ludDA5LmMsIG1zZG9zL2lvcG9ydHMuYzoKKwlNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgorCVJlbW92ZWQgImltcGxpY2l0IGRlY2xhcmF0aW9uIiB3YXJuaW5ncy4KKworCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaDogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CisJRml4ZWQgT3BlbkdMIGRldmljZXMgaW1wbGVtZW50YXRpb24uCisKKwkqIHdpbmRvd3MvcXVldWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJSW4gVXNlcllpZWxkMTYsIHdoZW4gY3VycmVudCB0aHJlYWQgaXMgYSAzMiBiaXQgb25lIHdoaWNoIGhvbGQgdGhlCisJV2luMTZMb2NrLCBtdXN0IHRha2UgY2FyZSBvZiBhIExvY2tDb3VudCA+IDEuCisKKwkqICovKi5jOgorCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgorCU1vcmUgY29kZSBtb3ZlZCB0byB0aGUgWDExIGRyaXZlciAoYml0bWFwIGFuZCBwYWxldHRlIGFuZCBtaXNjKS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU3VuIE1hciAyOCAxNToyMDowMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgogCiAJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaDoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmVyc2lvbi5oIGIvaW5jbHVkZS92ZXJzaW9uLmgKaW5kZXggZjg2NWM3Ny4uODg1OGViNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS92ZXJzaW9uLmgKKysrIGIvaW5jbHVkZS92ZXJzaW9uLmgKQEAgLTEgKzEgQEAKLSNkZWZpbmUgV0lORV9SRUxFQVNFX0lORk8gIldpbmUgcmVsZWFzZSA5OTAzMjgiCisjZGVmaW5lIFdJTkVfUkVMRUFTRV9JTkZPICJXaW5lIHJlbGVhc2UgOTkwNDI2Igo=