MjAwMi0xMi0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgInN0cmlwX2Rpc2NhcmRlZCIuCgoyMDAyLTEyLTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlcGxhY2UgYmZkX2Jvb2xlYW4gZmllbGRzIHdpdGgKCWJpdC1maWVsZHMuICBSZWFycmFuZ2UgdG8gcHV0IGFsbCBsaWtlIHR5cGVzIHRvZ2V0aGVyLgoKMjAwMi0xMS0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGJmZGxpbmsuaDogUmVwbGFjZSBib29sZWFuIHdpdGggYmZkX2Jvb2xlYW4uICBGb3JtYXR0aW5nLgoKMjAwMi0xMS0yMyAgU2ltb24gQnVyZ2UgIDxzaW1vbmJAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBBZGQgTmV0QlNEIHRvIHRoZSBsaXN0LgoKMjAwMi0xMS0yMiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBsaWJpYmVydHkuaCAobWFrZV9yZWxhdGl2ZV9wcmVmaXgpOiBBZGQgcHJvdG90eXBlLgoKMjAwMi0xMS0xNiAgS2xlZSBEaWVuZXMgIDxrZGllbmVzQGFwcGxlLmNvbT4KCgkqIG9wY29kZS9tODhrLmggKElOU1RBQik6IFJlbW92ZSAnbmV4dCcgZmllbGQuCgkoaW5zdHJ1Y3Rpb24pOiBSZW1vdmUgZGVmaW5pdGlvbjsgcmVwbGFjZSB3aXRoIGV4dGVybiBkZWNsYXJhdGlvbgoJYW5kIG1hcmsgYXMgY29uc3QuCgoyMDAyLTExLTE0ICBFZ29yIER1ZGEgIDxkZW9AbG9nb3MtbS5ydT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGJvb2xlYW4KCWZpZWxkIHBlaTM4Nl9ydW50aW1lX3BzZXVkb19yZWxvYy4KCjIwMDItMTAtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcGFydGl0aW9uLmg6ICBDbG9zZSB0aGUgZXh0ZXJuICJDIiBzY29wZSB3aGVuIGNvbXBpbGluZyB3aXRoIEMrKy4KCjIwMDItMTAtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIERKIERlbG9yaWUgPGRqQHJlZGhhdC5jb20+CgoJUFIgYm9vdHN0cmFwLzgzNTEKCSogZ2V0b3B0Lmg6IEF2b2lkIHByb3RvdHlwaW5nIGdldG9wdCB3aXRoIG5vIGFyZ3VtZW50cyBpbiBDKysuCgoyMDAyLTEwLTI0ICBOYXRoYW4gVGFsbGVudCAgPGVyYXh4b25AYWx1bW5pLnJpY2UuZWR1PgoKCSogYW5zaWRlY2wuaCAoX19TVERDX18pOiBBZGQgKF9fYWxwaGEgJiYgX19jcGx1c3BsdXMpIHRvIHRoZQoJbGlzdCBvZglwbGF0Zm9ybSBjb21waWxlcnMgdGhhdCBtYXkgbG9vaywgc21lbGwgYW5kIGFjdAoJbGlrZSBfX1NURENfXyBidXQgdGhhdCBtYXkgbm90IGRlZmluZSBpdC4KCjIwMDItMTAtMTEgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBnZXRvcHQuaDogZ2V0b3B0IGlzIGluIHVuaXN0ZC5oIChiYXNlZCBvbiBTVVN2MikuCgoyMDAyLTA5LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi94ODYtNjQuaDogQWRkIFRMUyByZWxvY3MuCgoyMDAyLTA5LTI2ICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIHJlZ3MvOiBEZWxldGUgZGlyZWN0b3J5LgoKMjAwMi0wOS0xOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJpYmVydHkuaCAoYXNwcmludGYsIHZhc3ByaW50Zik6IERvbid0IGRlY2xhcmUgdGhlbSBpZiB0aGUKCWNvcnJlc3BvbmRpbmcgSEFWRV9ERUNMXyBtYWNybyBpcyAxLgoKMjAwMi0wOS0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYvaTM4Ni5oIChSXzM4Nl9UTFNfVFBPRkYsIFJfMzg2X1RMU19JRSwgUl8zODZfVExTX0dPVElFKToKCURlZmluZS4KCjIwMDItMDktMTkgIE5hdGhhbiBUYWxsZW50ICA8ZXJheHhvbkBhbHVtbmkucmljZS5lZHU+CgoJKiBkaXMtYXNtLmg6IFJlbW92ZSAoZXJyYW50KSB0cmFpbGluZyBzZW1pY29sb24gKDspIGZyb20gdGhlCglleHRlcm4gIkMiIHsgfSBkZWNsYXJhdGlvbi4KCjIwMDItMDktMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X3BwY19kaXNhc3NlbWJsZXJfb3B0aW9ucyk6IFByb3RvdHlwZS4KCjIwMDItMDgtMjggIE1pY2hhZWwgSGF5ZXMgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29mZi9pbnRlcm5hbC5oOiBBZGQgbmV3IHJlbG9jYXRpb24gdHlwZXMuCgkqIGNvZmYvdGkuaDogQWRkIGZpbGUtaGVhZGVyIGZsYWdzIGZvciB0aWM0eCBjb2RlLgoJKiBkaXMtYXNtLmg6IEFkZCBzdGFuZGFyZCBkaXNhc3NlbWJsZXIgZm9yIHRpYzR4LgoJKiBvcGNvZGUvdGljNHguaDogTmV3IGZpbGUuCgkqIGNvZmYvdGljNHguaDogTmV3IGZpbGUKCjIwMDItMDgtMDcgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIGFsbG93X3VuZGVmaW5lZF92ZXJzaW9uLgoJKGJmZF9lbGZfdmVyc2lvbl9leHByKTogQWRkIHN5bXZlciBhbmQgc2NyaXB0LgoKMjAwMi0wNy0zMSAgSWFuIERhbGwgIDxpYW5Ac2lieWwuYmV3YXJlLmRyb3BiZWFyLmlkLmF1PgoKCSogYmZkbGluay5oIChiZmRfbGlua19jb21tb25fc2tpcF9hcl9zeW1ib2xzKTogTmV3IGVudW0uCgkoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkICdjb21tb25fc2tpcF9hcl9zeW1ib2xzJy4KCjIwMDItMDctMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIG9wY29kZS9taXBzLmggKENQVV9SMjAwMCk6IFJlbW92ZS4KCjIwMDItMDctMTkgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgkgICAgTWF0dGhldyBHcmVlbiAgPG1yZ0ByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2lwMmspOiBEZWNsYXJlLgoKMjAwMi0wNy0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYvY29tbW9uLmggKFNIVF9HTlVfTElCTElTVCwgRFRfR05VX1BSRUxJTktFRCwKCURUX0dOVV9DT05GTElDVCosIERUX0dOVV9MSUJMSVNUKik6IERlZmluZS4KCjIwMDItMDctMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfc3ltX2NoYWluKTogRGVjbGFyZS4KCShzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBnY19zeW1fbGlzdC4gIEZvcm1hdHRpbmcgZml4ZXMuCgoyMDAyLTA2LTI1ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZGVtYW5nbGUuaDogI2luY2x1ZGUgImFuc2lkZWNsLmgiIHJhdGhlciB0aGFuICNpbmNsdWRlIDxhbnNpZGVjbC5oPi4KCSogZmliaGVhcC5oOiBMaWtld2lzZS4KCSogaGFzaHRhYi5oOiBMaWtld2lzZS4KCSogcGFydGl0aW9uLmg6IExpa2V3aXNlLgoJKiBzb3J0Lmg6IExpa2V3aXNlLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKMjAwMi0wNi0yNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IERvbid0IGRlY2xhcmUgaWYgSEFWRV9ERUNMX0JBU0VOQU1FLgoJKiBnZXRvcHQuaCAoZ2V0b3B0KTogRG9uJ3QgZGVjbGFyZSBpZiBIQVZFX0RFQ0xfR0VUT1BULgoKMjAwMi0wNi0xOCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUByZWRoYXQuY29tPgoKCUZyb20gQ2F0aGVyaW5lIE1vb3JlOgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fZnJ2KTogTmV3IHByb3RvdHlwZS4KCjIwMDItMDYtMDkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAcmVkaGF0LmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogTW92ZSB0byBkaXJlY3RvcnkgZ2RiLy4KCSogY2FsbGJhY2suaDogTW92ZSB0byBkaXJlY3RvcnkgZ2RiLy4KCjIwMDItMDYtMDcgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBDaGFuZ2UgdHlwZSBvZgoJcGVpMzg2X2F1dG9faW1wb3J0IGZpZWxkIHRvIGludCBzbyB0aGF0IC0xIGNhbiBtZWFuIGVuYWJsZWQgYnkKCWRlZmF1bHQgYW5kIDEgY2FuIG1lYW4gZW5hYmxlZCBieSBjb21tYW5kIGxpbmUgc3dpdGNoLgoKMjAwMi0wNi0wNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKGh0YWIpOiBSZWFycmFuZ2UgbmV3IG1lbWJlcnMgZm9yIGJhY2t3YXJkCgljb21wYXRpYmlsaXR5LgoJKGh0YWJfY3JlYXRlKTogRG9uJ3QgdXNlIGEgbWFjcm8gdGhhdCByZXF1aXJlcyBvdGhlciBoZWFkZXJzLgoKMjAwMi0wNi0wNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChodGFiX2NyZWF0ZSk6IFJlc3RvcmUgcHJvdG90eXBlIGZvciBiYWNrd2FyZAoJY29tcGF0aWJpbGl0eS4KCShodGFiX3RyeV9jcmVhdGUpOiBMaWtld2lzZS4KCjIwMDItMDUtMjIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBsZW5ndGggc3BlY2lmaWVyLgoKMjAwMi0wNS0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChHVFkpOiBEZWZpbmUgaWYgdW5kZWZpbmVkLgoJKGh0YWJfYWxsb2MpOiBOZXcgdHlwZWRlZi4KCShodGFiX2ZyZWUpOiBOZXcgdHlwZWRlZi4KCShzdHJ1Y3QgaHRhYik6IFN1cHBvcnQgZ2VuZ3R5cGU7IGFsbG93IHVzZXItc3BlY2lmaWVkIG1lbW9yeQoJYWxsb2NhdGlvbi4KCShodGFiX2NyZWF0ZV9hbGxvYyk6IE5ldy4KCShodGFiX2NyZWF0ZSk6IFJlcGxhY2Ugd2l0aCAjZGVmaW5lLgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IERlbGV0ZS4KCjIwMDItMDUtMzEgIE1pY2hhbCBMdWR2aWcgIDxtbHVkdmlnQHN1c2UuY3o+CgoJKiBlbGYvZHdhcmYyLmggKERXX0NGQV9sb3dfdXNlciwgRFdfQ0ZBX2hpZ2hfdXNlcik6IFJlbmFtZWQKCXRvIERXX0NGQV9sb191c2VyLCBEV19DRkFfaGlfdXNlciByZXNwZWN0aXZlbHkuCgkKMjAwMi0wNS0yOCAgS3VhbmcgSHdhIExpbiA8a3VhbmdAc2JjZ2xvYmFsLm5ldD4KCgkqIGRpcy1hc20uaDogUHJvdG90eXBlIHByaW50X2luc25fZGx4LgoKMjAwMi0wNS0yMyAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBzaW0tZDEwdi5oOiBEZWxldGUgZmlsZS4gIE1vdmVkIHRvIGluY2x1ZGUvZ2RiLy4KCjIwMDItMDUtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmL2NvbW1vbi5oIChQVF9UTFMsIFNIRl9UTFMsIFNUVF9UTFMsIERGX1NUQVRJQ19UTFMpOiBEZWZpbmUuCgkqIGVsZi9pYTY0LmggKFJfSUE2NF9MVE9GRl9UUFJFTDIyKTogUmVuYW1lZCBmcm9tIFJfSUE2NF9MVE9GRl9UUDIyLgoJKiBlbGYvaTM4Ni5oOiBBZGQgVExTIHJlbG9jcy4KCjIwMDItMDUtMjEgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaW5mbyk6IEFkZCBhbGxvd19tdWx0aXBsZV9kZWZpbml0aW9uLgoKMjAwMi0wNS0xNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc2hsLCBwcmludF9pbnNuX3NoNjRsKTogUmVtb3ZlIHByb3RvdHlwZS4KCjIwMDItMDQtMTYgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgoJKiB4cmVnZXgyLmggKF9fcmVzdHJpY3RfYXJyKTogRGVmaW5lIHRvIF9fcmVzdHJpY3Qgb24gR0NDCgkzLjEgYW5kIGxhdGVyLiAgRG8gbm90IHJlZGVmaW5lLgoKMjAwMi0wNC0wMSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogZHluLXN0cmluZy5oOiAgQWxzbyBhbGxvdyBJTl9HTElCQ1BQX1YzIHRvIHJlZGVmaW5lIG5hbWVzLgoKMjAwMi0wMy0xMCAgRGFuaWVsIEphY29ib3dpdHogPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGdkYjogTmV3IGRpcmVjdG9yeS4KCjIwMDItMDMtMDYgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYXJtX2V4dCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCjIwMDItMDItMjEgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJQWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBmdW5jdGlvbnMgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvcgoJc3BsYXkgdHJlZSByb290cyBhbmQgbm9kZXMuCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9hbGxvY2F0ZV9mbiwgc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuKToKCU5ldyB0eXBlcy4KCShzcGxheV90cmVlKTogTmV3IGZpZWxkczogYGFsbG9jYXRlJywgYGRlYWxsb2NhdGUnLCBhbmQKCWBhbGxvY2F0ZV9kYXRhJy4KCShzcGxheV90cmVlX25ld193aXRoX2FsbG9jYXRvcik6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDItMDItMTUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJU3VwcG9ydCBhcmJpdHJhcnkgbGVuZ3RoIGZpbGwgcGF0dGVybnMuCgkqIGJmZGxpbmsuaCAoZW51bSBiZmRfbGlua19vcmRlcl90eXBlKTogUmVtb3ZlIGJmZF9maWxsX2xpbmtfb3JkZXIuCgkoc3RydWN0IGJmZF9saW5rX29yZGVyKTogUmVtb3ZlIGZpbGwuICBBZGQgZGF0YS5zaXplLgoKMjAwMi0wMi0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJQ29udHJpYnV0ZSBzaDY0LWVsZi4KCTIwMDAtMTEtMjUgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwbkBjeWdudXMuY29tPgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc2g2NCk6IE5ldyBwcm90b3R5cGUuCgkocHJpbnRfaW5zbl9zaDY0bCk6IE5ldyBwcm90b3R5cGUuCgkocHJpbnRfaW5zbl9zaDY0eF9tZWRpYSk6IE5ldyBwcm90b3R5cGUuCgoyMDAyLTAyLTA1ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkIGBpbnNuX3NldHMnLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IENsZWFyIGl0LgoKMjAwMi0wMi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV92Myk6IEFkZCAib3B0aW9ucyIgcGFybS4KCShjcGx1c19kZW1hbmdsZV92M190eXBlKTogUmVtb3ZlIHByb3RvdHlwZS4KCShETUdMX1ZFUkJPU0UpOiBOZXcgbWFjcm8uCgkoRE1HTF9UWVBFUyk6IE5ldyBtYWNyby4KCjIwMDItMDItMDIgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX3YzX3R5cGUpOiBOZXcgcHJvdG90eXBlLgoKMjAwMi0wMS0zMSAgSXZhbiBHdXp2aW5lYyAgPGl2YW5nQG9wZW5jb3Jlcy5vcmc+CgoJKiBkaXMtYXNtLmggOiBBZGQgc3VwcG9ydCBmb3Igb3IzMiB0YXJnZXRzCgoyMDAyLTAxLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoQ19hbGxvY2EpOiBBZGQgQVRUUklCVVRFX01BTExPQy4KCjIwMDItMDEtMjcgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjZ2VuLmggKEJGRF9WRVJTSU9OKTogVXNlIEJGRF9WRVJTSU9OX0RBVEUgaW5zdGVhZC4KCjIwMDEtMTItMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpc2UgdGhlCglkaXNhc3NlbWJsZXJfb3B0aW9ucyBmaWVsZCAodG8gTlVMTCkuCgoyMDAxLTEyLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgZWhfZnJhbWVfaGRyIGZpZWxkLgoKMjAwMS0xMi0wNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3hzdG9ybXkxNik6IERlY2xhcmUuCgoyMDAxLTEyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVtYW5nbGUuaCAobm9fZGVtYW5nbGluZyk6IE5ldy4KCShOT19ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IE5ldy4KCjIwMDEtMTEtMTQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faTM4Nik6IERlY2xhcmUuCgoyMDAxLTExLTExICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBhbHVtLm1pdC5lZHU+CgoJKiBkaXMtYXNtLmg6IEZpeCBjb21tZW50IHRvIHJlZmVyIHRvIG9jdGV0cyByYXRoZXIgdGhhbiBieXRlcy4KCjIwMDEtMTAtMzAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tbWl4KTogQWRkIHByb3RvdHlwZS4KCjIwMDEtMTAtMjQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHNhZmUtY3R5cGUuaCAoX3NjaF9pc2Jhc2ljLCBJU19JU09CQVNJQyk6IE5ldy4KCjIwMDEtMTAtMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChoZXhfaW5pdCk6IFJldmVydCBkZWxldGUuCgoJKiBsaWJpYmVydHkuaCAoX2hleF92YWx1ZSk6IENvbnN0LWlmeS4KCShoZXhfaW5pdCk6IERlbGV0ZS4KCjIwMDEtMTAtMTYgIENocmlzdG9waGVyIEZheWxvciAgPGNnZkByZWRoYXQuY29tPgoKCSogZmlsZW5hbWVzLmg6IEFkZCBjeWd3aW4gdG8gdGhlIGxpc3Qgb2YgZG9zaXNoIHN0eWxlIHBhdGggc3lzdGVtcy4KCjIwMDEtMTAtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmggKGRlbWFuZ2xlcl9lbmdpbmUpOiBDb25zdC1pZnkuCgkqIGxpYmliZXJ0eS5oIChidWlsZGFyZ3YpOiBMaWtld2lzZS4KCjIwMDEtMTAtMDMgIFZhc3NpbGkgS2FycG92ICA8bWFsY0BwdWxzZXNvZnQuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBub2NvcHlyZWxvYyBmaWVsZC4KCjIwMDEtMDktMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChyZWNvbmNhdCk6IE5ldyBmdW5jdGlvbi4KCjIwMDEtMDktMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChjb25jYXQsIGNvbmNhdF9sZW5ndGgsIGNvbmNhdF9jb3B5LCBjb25jYXRfY29weTIsCglBQ09OQ0FUKTogSW1wcm92ZSBjb21tZW50cy4KCjIwMDEtMDktMTggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBvYmphbGxvYy5oIChPQkpBTExPQ19BTElHTik6IERlZmluZSB1c2luZyBvZmZzZXRvZi4KCjIwMDEtMDktMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChjb25jYXRfbGVuZ3RoLCBjb25jYXRfY29weSwgY29uY2F0X2NvcHkyLAoJbGliaWJlcnR5X2NvbmNhdF9wdHIsIEFDT05DQVQpOiBOZXcuCgoJKiBsaWJpYmVydHkuaCAoQVNUUkRVUCk6IE5ldyBtYWNyby4KCWxpYmliZXJ0eV9vcHRyLCBsaWJpYmVydHlfbnB0ciwgbGliaWJlcnR5X2xlbik6IERlY2xhcmUuCgoyMDAxLTA4LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBVcGRhdGUgY29tbWVudHMgcmVmbGVjdGluZyBwcmV2aW91cyBjaGFuZ2UuCgoyMDAxLTA4LTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChWQV9PUEVOLCBWQV9DTE9TRSk6IEFsbG93IG11bHRpcGxlIHVzZXMuCgoyMDAxLTA4LTI1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBDaGFuZ2UgJ3NwYXJlX2R5bmFtaWNfdGFncycgdG8KCXVuc2lnbmVkIHRvIHJlbW92ZSBhIGNvbXBpbGUgdGltZSB3YXJuaW5nIG1lc3NhZ2UuCgoyMDAxLTA4LTI0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2hhc2hfdGFibGVfdHlwZSk6IE5ldy4gVGhlIGxpbmtlciBoYXNoCgl0YWJsZSB0eXBlLCBiZmRfbGlua19nZW5lcmljX2hhc2hfdGFibGUgYW5kCgliZmRfbGlua19lbGZfaGFzaF90YWJsZS4KCShiZmRfbGlua19oYXNoX3RhYmxlKTogQWRkIGEgbmV3IGZpZWxkLCB0eXBlLCBmb3IgdGhlIGxpbmtlcgoJaGFzaCB0YWJsZSB0eXBlLgoKMjAwMS0wOC0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIGNvbWJyZWxvYyBhbmQKCXNwYXJlX2R5bmFtaWNfdGFncyBmaWVsZHMuCgoyMDAxLTA4LTIzICBMYXJzIEJyaW5raG9mZiAgPGxhcnNAbm9jcmV3Lm9yZz4KCgkqIGR5bi1zdHJpbmcuaCwgZmliaGVhcC5oLCBwYXJ0aXRpb24uaCwgc29ydC5oLCBzcGxheS10cmVlLmg6CglyZXBsYWNlICJHTlUgQ0MiIHdpdGggIkdDQyIuCgoyMDAxLTA4LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmliaGVhcC5oOiBUaWR5IGZvcm1hdHRpbmcuCgkoZmlibm9kZV90KTogTGltaXQgZGVncmVlIHRvIDMxIGJpdHMgdG8gYXZvaWQgd2FybmluZy4KCjIwMDEtMDgtMjAgIERhbmllbCBCZXJsaW4gIDxkYW5AY2dzb2Z0d2FyZS5jb20+CgoJKiBmaWJoZWFwLmg6IE5ldyBmaWxlLiBGaWJvbmFjY2kgaGVhcC4KCjIwMDEtMDgtMjAgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYXJtX2V4dCk6IERvY3VtZW50IGFzIGRlcHJlY2F0ZWQuCgkoZmxvYXRmb3JtYXRfYXJtX2V4dF9iaWcsIGZsb2F0Zm9ybWF0X2FybV9leHRfbGl0dGxlYnl0ZV9iaWd3b3JkKQoJKGZsb2F0Zm9ybWF0X2lhNjRfc3BpbGxfbGl0dGxlLCBmbG9hdGZvcm1hdF9pYTY0X3F1YWRfbGl0dGxlKQoJKGZsb2F0Zm9ybWF0X2lhNjRfc3BpbGxfYmlnLCBmbG9hdGZvcm1hdF9pYTY0X3F1YWRfYmlnKQoJKGZsb2F0Zm9ybWF0X204ODExMF9oYXJyaXNfZXh0KTogRGVjbGFyZS4KCjIwMDEtMDgtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBhbnNpZGVjbC5oOiBSZW9yZ2FuaXplIGZvciByZWFkYWJpbGl0eSwgcmVtb3ZlIGRvY3VtZW50YXRpb24KCW9mIG9ic29sZXRlIG1hY3JvcywgZG9jdW1lbnQgUEFSQU1TIGFuZCBWUEFSQU1TLiAgQWRkIG5ldwoJbWFjcm9zIFZBX09QRU4sIFZBX0NMT1NFLCBhbmQgVkFfRklYRURBUkcgZm9yIG5pY2VyIHZhcmlhZGljCglmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KCjIwMDEtMDgtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKGh0YWJfaGFzaF9zdHJpbmcpOiBEZWNsYXJlLgoKMjAwMS0wOC0xMCAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBsaWJpYmVydHkuaCAobGJhc2VuYW1lKTogQ2hhbmdlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHRvIHJldHVybiBhCgljb25zdCBjaGFyIHBvaW50ZXIuCgoyMDAxLTA4LTAyICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIHhyZWdleC5oIChfUkVHRVhfUkVfQ09NUCk6IERlZmluZS4KCShyZV9jb21wKTogRGVmaW5lIHRvIHhyZV9jb21wLgoJKHJlX2V4ZWMpOiBEZWZpbmUgdG8geHJlX2V4ZWMuCgoyMDAxLTA4LTAyICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgogICAgICAgICogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IGFkZCBuZXcgYm9vbGVhbgogICAgICAgIGZpZWxkIHBlaTM4Nl9hdXRvX2ltcG9ydC4KCjIwMDEtMDctMTggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHhyZWdleDIuaDogUGxhY2UgdW5kZXIgTEdQTCB2ZXJzaW9uIDIuMS4KCjIwMDEtMDctMTAgIEplZmYgSm9obnN0b24gIDxqam9obnN0bkByZWRoYXQuY29tPgoKCSogeHJlZ2V4Lmg6IE5ldyBmaWxlIHRvIHN1cHBvcnQgbGliaWJlcnR5IHJlZ2V4LgoJKiB4cmVnZXgyLmg6IERpdHRvLgoKMjAwMS0wNi0xNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogTmV3IG1lbWJlciBleHBvcnRfZHluYW1pYy4KCjIwMDEtMDUtMTYgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogcGFydGl0aW9uLmg6IEZpeCBtaXNzcGVsbGluZyBvZiBgaW1wbGVtZW50YXRpb24nLgoKMjAwMS0wNS0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoTlVMTF9QVFIpOiBEZWxldGUuCgoyMDAxLTA1LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogZGVtYW5nbGUuaDogVXNlIFBBUkFNUyBmb3IgYWxsIHByb3RvdHlwZXMuCgkqIHRlcm5hcnkuaDogVXNlIFBBUkFNUyBmb3IgYWxsIHByb3RvdHlwZXMuICBVc2UgUFRSLCBub3Qgdm9pZCAqLgoJTWFrZSBhcmd1bWVudHMgY29uc3RhbnQgd2hlcmUgcG9zc2libGUuCgoyMDAxLTA1LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX21heCk6IE5ldyBmdW5jdGlvbi4KCShzcGxheV90cmVlX21pbik6IExpa2V3aXNlLgoKMjAwMS0wNC0yNyAgSm9oYW4gUnlkYmVyZyAgPGpyeWRiZXJnQG9wZW5jb3Jlcy5vcmc+CgogICAgICAgICogZGlzLWFzbS5oIChwcmludF9pbnNuX29wZW5yaXNjKTogQWRkIHByb3RvdHlwZS4KCjIwMDEtMDQtMTUgIERhbmllbCBCZXJsaW4gIDxkYW5AY2dzb2Z0d2FyZS5jb20+CgoJKiB0ZXJuYXJ5Lmg6IE5ldyBmaWxlIC0gVGVybmFyeSBzZWFyY2ggdHJlZSBoZWFkZXIuCgoyMDAxLTA0LTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfZGlzY2FyZCk6IEFkZCBkaXNjYXJkX3NlY19tZXJnZS4KCjIwMDEtMDQtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBhbnNpZGVjbC5oOiBBbGwgbG9naWMgZnJvbSBnY2MvZ2Fuc2lkZWNsLmggbW92ZWQgaGVyZS4KCjIwMDEtMDMtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChhbGxvY2EpOiBIYW5kbGUgc2V0dGluZyBDX0FMTE9DQS4KCjIwMDEtMDMtMjAgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oIChlbnVtIGdudV92M19jb25zdHJ1Y3Rvcl9raW5kcywKCWlzX2dudV92M19tYW5nbGVkX2N0b3IsIGVudW0gZ251X3YzX2Rlc3RydWN0b3Jfa2luZHMsCglpc19nbnVfdjNfbWFuZ2xlZF9kdG9yKTogTmV3IGRlY2xhcmF0aW9ucy4KCjIwMDEtMDMtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBhbnNpZGVjbC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBkZW1hbmdsZS5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBmbG9hdGZvcm1hdC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBmbm1hdGNoLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGdldG9wdC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBsaWJpYmVydHkuaDogQWRkIEZTRiBjb3B5cmlnaHQgbm90aWNlLgoJKiBtZDUuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogb2JzdGFjay5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBzcGxheS10cmVlLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgoyMDAxLTAzLTEwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgkgICAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgbGJhc2VuYW1lLgoKMjAwMS0wMy0wNiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBQcm90b3R5cGUgQ19hbGxvY2E7IGRlZmluZSBhbGxvY2EgdG8gZWl0aGVyCglfX2J1aWx0aW5fYWxsb2NhIG9yIENfYWxsb2NhIGFzIGFwcHJvcHJpYXRlLgoKMjAwMS0wMy0wMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHNhZmUtY3R5cGUuaCAoX3NjaF90ZXN0KTogQ2FzdCBlbnVtIGJpdCB0byB1bnNpZ25lZCBzaG9ydCBpbnQgZm9yIHBjYwoJY29tcGF0aWJpbGl0eS4KCjIwMDEtMDItMTggIGxhcnMgYnJpbmtob2ZmICA8bGFyc0Bub2NyZXcub3JnPgoKCSogZGlzLWFzbS5oOiBBZGQgUERQLTExIHRhcmdldC4KCjIwMDEtMDItMDkgIE1hcnRpbiBTY2h3aWRlZnNreSAgPHNjaHdpZGVmc2t5QGRlLmlibS5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBsaW51eCB0YXJnZXQgZm9yIFMvMzkwLgoKMjAwMS0wMS0xMSAgUGV0ZXIgVGFyZ2V0dCAgPHBldGVyLnRhcmdldHRAYXJjY29yZXMuY29tPgoKCSogZGlzLWFzbS5oIChhcmNfZ2V0X2Rpc2Fzc2VtYmxlcik6IENvcnJlY3QgZGVjbGFyYXRpb24uCgoyMDAxLTAxLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogYmluLWJ1Z3MuaCAoUkVQT1JUX0JVR1NfVE8pOiBTZXQgdG8gYGJ1Zy1iaW51dGlsc0BnbnUub3JnJy4KCjIwMDAtMTItMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIENPUFlJTkc6IFVwZGF0ZSB0byBjdXJyZW50CglmdHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L0xpY2Vuc2VzL0NPUFlJTkctMi4wIChmaXhlcyByZWZlcmVuY2VzCgl0byAxOXl5IGFzIGV4YW1wbGUgeWVhciBpbiBjb3B5cmlnaHQgbm90aWNlKS4KCjIwMDAtMTItMTkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgbWVtYmVyICJzZWN0aW9uIi4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgcHJpdmF0ZV9kYXRhIG1lbWJlci4KCUluaXRpYWxpemUgc2VjdGlvbiBtZW1iZXIuCgoyMDAwLTEyLTE2ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlICA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIHNhZmUtY3R5cGUuaDogTWFrZSBjb2RlIHdvcmsgb24gYWxsIHRhcmdldHMgYW5kIG5vdCBqdXN0IG9uCgl0YXJnZXRzIHdoZXJlIGEgY2hhciBpcyA4IGJpdHMuCgoyMDAwLTEyLTEwICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgYWxsb3dfc2hsaWJfdW5kZWZpbmVkCgltZW1iZXIgdG8gc3RydWN0IGZvciBzeXN0ZW1zIHdoZXJlIGl0IGlzIG5vcm1hbCB0byBoYXZlIHVuZGVmaW5lZAoJc3ltYm9scyBpbiBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUgYW5kIHRoZSBydW50aW1lIGxpbmtlcgoJdGFrZXMgY2FyZSBvZiByZWRpcmVjdGluZyB0aGVtLgoKMjAwMC0xMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHNhZmUtY3R5cGUuaDogTmV3IGZpbGUuCgoyMDAwLTEyLTA2ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGdldG9wdC5oIG9ic3RhY2suaDogU3RhbmRhcml6ZSBjb3B5cmlnaHQgc3RhdGVtZW50LgoKMjAwMC0xMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmg6IENoYW5nZSAibmV3X2FiaSIgdG8gInYzIiBldmVyeXdoZXJlLgoKMjAwMC0xMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBNb3ZlICNpbmNsdWRlcyB0byB0b3AuICBQcm90b3R5cGUgeG1hbGxvY19mYWlsZWQuCgoyMDAwLTExLTE1ICBLZW5uZXRoIEJsb2NrICA8a2VubmV0aC5ibG9ja0Bjb21wYXEuY29tPgoKCSogZGVtYW5nbGUuaDogQWRkIGduYXQgYW5kIGphdmEgZGVtYW5nbGUgc3R5bGVzLgoKMjAwMC0xMS0wNCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogaGFzaHRhYi5oIChzdHJ1Y3QgaHRhYik6IEFkZCBtZW1iZXIgcmV0dXJuX2FsbG9jYXRpb25fZmFpbHVyZS4KCShodGFiX3RyeV9jcmVhdGUpOiBOZXcgcHJvdG90eXBlLiAgTWVudGlvbiB3aGljaCBmdW5jdGlvbnMgbWF5CglyZXR1cm4gTlVMTCB3aGVuIHRoaXMgaXMgdXNlZC4KCjIwMDAtMTEtMDMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGhhc2h0YWIuaDogQ2hhbmdlIHZvaWQgKiB0byBQVFIgd2hlcmUgbmVjZXNzYXJ5LgoKMjAwMC0xMC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9wcmVkZWNlc3Nvcik6IERlY2xhcmUuCgoyMDAwLTA5LTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGRpcy1hc20uaDogRGVjbGFyZSBjcmlzX2dldF9kaXNhc3NlbWJsZXIsIG5vdCBwcmludF9pbnNuX2NyaXMuCglGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwMC0wOS0yOCAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogYWxsb2NhLWNvbmYuaDogTmV3IGZpbGUgKGNvcGllZCBmcm9tIGxpYmliZXJ0eSkuCgoyMDAwLTA5LTA1ICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBtZDUuaCAobWQ1X3VpbnQzMik6IENob29zZSB2aWEgSU5UX01BWCBpbnN0ZWFkIG9mIFVJTlRfTUFYLgoKMjAwMC0wOS0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuaDogQWRqdXN0IGZvcm1hdHRpbmcuCgkoZHluX3N0cmluZ19pbnNlcnRfY2hhcik6IE5ldyBtYWNyby4gIE5ldyBkZWNsYXJhdGlvbi4KCjIwMDAtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbWQ1Lmg6IE5ldyBmaWxlLgoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBsaWJpYmVydHkuaCAoQVJSQVlfU0laRSk6IE5ldyBtYWNyby4KCjIwMDAtMDctMjkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBvczlrLmg6IEFkZCBjb3B5cmlnaHQgbm90aWNlLgoJRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA3LTIyICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2k4NjApOiBBZGQgcHJvdG90eXBlLgoKMjAwMC0wNy0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIG5ld19kdGFncy4KCjIwMDAtMDctMjAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2NyaXMpOiBEZWNsYXJlLgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIGZsYWdzIGFuZCBmbGFnc18xLgoKMjAwMC0wNi0wNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBNQUlOVEFJTkVSUzogbmV3CgoyMDAwLTA2LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oIChkeW5fc3RyaW5nX2luaXQsIGR5bl9zdHJpbmdfbmV3LAoJZHluX3N0cmluZ19kZWxldGUsIGR5bl9zdHJpbmdfcmVsZWFzZSwgZHluX3N0cmluZ19yZXNpemUsCglkeW5fc3RyaW5nX2NsZWFyLCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nX2R5bl9zdHJpbmdfZXEpOgoJRGVmaW5lIGFzIHNhbWUgbmFtZSB3aXRoIF9fY3hhXyBwcmVwZW5kZWQsIGlmIElOX0xJQkdDQzIuCgkoZHluX3N0cmluZ19pbml0LCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlCgl0byBpbnQuCgoyMDAwLTA2LTE4ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tNjhoYzEyKTogRGVmaW5lLgoJKHByaW50X2luc25fbTY4aGMxMSk6IExpa2V3aXNlLgoKMjAwMC0wNi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIG9zOWsuaDogQ2hhbmdlIHZhbHVlcyBvZiBNT0RTWU5DIGFuZCBDUkNDT04gZHVlIHRvIGJ1ZyByZXBvcnQKCWZyb20gUnVzcyBNYWdlZSA8cm1hZ2VlQGhvbWUuY29tPi4KCjIwMDAtMDYtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmggKGRlbWFuZ2xpbmdfc3R5bGVzKTogUmVtb3ZlIHRyYWlsaW5nIGNvbW1hIGluIGVudW0uCgoJKiBkeW4tc3RyaW5nLmggKGR5bl9zdHJpbmdfYXBwZW5kX2NoYXIpOiBDaGFuZ2UgcGFyYW1ldGVyIGZyb20KCWNoYXIgdG8gaW50LgoKMjAwMC0wNi0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuaDogTW92ZSBoZXJlIGZyb20gZ2NjL2R5bi1zdHJpbmcuaC4gIEFkZCBuZXcgZnVuY3Rpb25zLgoKCSogZGVtYW5nbGUuaCAoRE1HTF9HTlVfTkVXX0FCSSk6IE5ldyBtYWNyby4KCShETUdMX1NUWUxFX01BU0spOiBPciBpbiBETUdMX0dOVV9ORVdfQUJJLgoJKGN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSk6IEFkZCBnbnVfbmV3X2FiaV9kZW1hbmdsaW5nLgoJKEdOVV9ORVdfQUJJX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogTmV3IG1hY3JvLgoJKEdOVV9ORVdfQUJJX0RFTUFOR0xJTkcpOiBMaWtld2lzZS4KCShjcGx1c19kZW1hbmdsZV9uZXdfYWJpKTogTmV3IGRlY2xhcmF0aW9uLgoKVHVlIE1heSAzMCAxNjo1MzozNCAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChzdHJ1Y3QgZmxvYXRmb3JtYXQpOiBBZGQgZmllbGQgbmFtZS4KCjIwMDAtMDUtMjYgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBmaWxlbmFtZXMuaDogTmV3IGZpbGUuCgkoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0sIElTX0RJUl9TRVBBUkFUT1IpCgkoSVNfQUJTT0xVVEVfUEFUSCwgRklMRU5BTUVfQ01QKTogTmV3IG1hY3Jvcy4KCjIwMDAtMDUtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdldG9wdC5oIChnZXRvcHQpOiBBbHNvIGNoZWNrIEhBVkVfREVDTF8qIHdoZW4gcHJvdG90eXBpbmcuCgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBMaWtld2lzZS4KCjIwMDAtMDUtMTcgIFMuIEJoYXJhZHdhaiBZYWRhdmFsbGkgIDxzYnlAc2NydWdzLmxrZy5kZWMuY29tPgoJICAgIFJpY2sgR29ydG9uCSAgICAgICAgICAgIDxnb3J0b25Ac2NydWdzLmxrZy5kZWMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBlbWl0cmVsb2NhdGlvbnMgZmxhZy4KCjIwMDAtMDUtMDggIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljNTR4KTogRGVjbGFyZS4KCjIwMDAtMDUtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCiAJKiBhbnNpZGVjbC5oOiAjZGVmaW5lIF9fZXh0ZW5zaW9uX18gdG8gbm90aGluZyBpZgogCUdDQ19WRVJTSU9OIDwgMjAwOC4KCjIwMDAtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmggKGRlbWFuZ2xlcl9lbmdpbmUpOiBDb25zdGlmeS4KClRodSBNYXkgIDQgMTc6MTU6MjYgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBzb3J0LmggKHN5cy90eXBlcy5oKTogRmlsZSBpbmNsdWRlZCB1bmNvbmRpdGlvbm5hbHkuCgkoc3RkZGVmLmgpOiBGaWxlIGluY2x1ZGUgb25seSAjaWZkZWYgX19TVERDX18uCgoyMDAwLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBzeW1jYXQuaDogUmVtb3ZlICNlbmRpZiBsYWJlbC4KCjIwMDAtMDQtMjggIEtlbm5ldGggQmxvY2sgIDxibG9ja0B6azMuZGVjLmNvbT4KCSAgICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCiAgICAgICAgKiBkZW1hbmdsZS5oIChsaWJpYmVydHlfZGVtYW5nbGVycyk6IG5ldyB0YWJsZSBmb3IgZGlmZmVyZW50IHN0eWxlcy4KICAgICAgICAoY3BsdXNfZGVtYW5nbGVfc2V0X3N0eWxlKTogTmV3IGZ1bmN0aW9uIGZvciBzZXR0aW5nIHN0eWxlLgogICAgICAgIChjcGx1c19kZW1hbmdsZV9uYW1lX3RvX3N0eWxlKTogTmV3IGZ1bmN0aW9uIHRvIHRyYW5zbGF0ZSBuYW1lLgoKMjAwMC0wNC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWIuaCAoaGFzaF9wb2ludGVyKTogRGVjbGFyZS4KCShlcV9wb2ludGVyKTogTGlrZXdpc2UuCgoyMDAwLTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc29ydC5oOiBOZXcgZmlsZS4KCkZyaSBBcHIgMjEgMTM6MjA6NTMgMjAwMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCQkJICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pYTY0KTogRGVjbGFyZS4KClR1ZSBBcHIgMTggMTY6MjI6MzAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGhhc2h0YWIuaCAoZW51bSBpbnNlcnRfb3B0aW9uKTogTmV3IHR5cGUuCgkoaHRhYl9maW5kX3Nsb3QsIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IFVzZSBpdC4KCjIwMDAtMDQtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5bWNhdC5oOiBIb25vciBhdXRvY29uZiBtYWNybyBIQVZFX1NUUklOR0laRS4gIEFkZAoJY29tbWVudHMvY2F2ZWF0cyB3aXRoIHJlZ2FyZCB0byB0cmFkaXRpb25hbCBDIGJlaGF2aW9yLgoKMjAwMC0wNC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9yZW1vdmUpOiBEZWNsYXJlLgoKMjAwMC0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGJpbi1idWdzLmggKFJFUE9SVF9CVUdTX1RPKTogUmVtb3ZlIHRyYW5zbGF0ZWQgcGFydC4KCjIwMDAtMDQtMDMgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiaW4tYnVncy5oOiBOZXcgZmlsZS4KCjIwMDAtMDMtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXNodGFiLmggKGhhc2h2YWxfdCk6IE5ldyB0eXBlLgoJKGh0YWJfZmluZF93aXRoX2hhc2gpOiBVc2UgaXQgYXMgYW4gYXJndW1lbnQuCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogTGlrZXdpc2UuCgoyMDAwLTAzLTI3ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2F2cik6IERlY2xhcmUuCgoyMDAwLTAzLTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGhhc2h0YWIuaCAoaHRhYl90cmF2KTogTW9kaWZ5IHR5cGUgc28gdGhhdCBmaXJzdCBhcmcgaXMgb2YgdHlwZQoJdm9pZCAqKi4KCShodGFiX2ZpbmRfd2l0aF9oYXNoLCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBEZWNsYXJlIG5ldwoJZnVuY3Rpb25zLgoKMjAwMC0wMy0wOSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnRpdGlvbi5oOiBOZXcgZmlsZS4KCjIwMDAtMDMtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBBZGQgZGVsX2YuCgkoaHRhYl9kZWwpOiBOZXcgdHlwZS4KCShodGFiX2NyZWF0ZSk6IEFkZCBmb3VydGggYXJndW1lbnQuCgoyMDAwLTAzLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBoYXNodGFiLmggKGhhc2hfdGFibGVfdCk6IFJlbmFtZSB0byBodGFiX3QuCgkoc3RydWN0IGhhc2hfdGFibGUpOiBSZW5hbWUgdG8gc3RydWN0IGh0YWIuICBTaG9ydGVuIGVsZW1lbnQKCW5hbWVzLiAgUmVvcmRlciBlbGVtZW50cyBieSBzaXplLgoJKGh0YWJfaGFzaCwgaHRhYl9lcSwgaHRhYl90cmF2KTogTmV3IHR5cGVkZWZzIGZvciB0aGUgY2FsbGJhY2sKCWZ1bmN0aW9uIHBvaW50ZXJzLgoJKGhhc2hfdGFibGVfZW50cnlfdCk6IERpc2NhcmQ7IGp1c3QgdXNlIHZvaWQgKiBmb3IgZWxlbWVudAoJdHlwZS4KCjIwMDAtMDMtMDEgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfY2FsbGJhY2tzKTogQWRkIGEgYm9vbGVhbiBhcmcgdG8KCXRoZSB1bmRlZmluZWRfc3ltYm9sIGNhbGxiYWNrLgoKMjAwMC0wMi0yMyAgTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2kzNzApOiBEZWNsYXJlLgoKVHVlIEZlYiAyMiAxNToxOTo1NCAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV90cmFjZSk6IERvY3VtZW50IHJldHVybiB2YWx1ZXMuCgkoc2ltX3NldF90cmFjZSk6IERlY2xhcmUuICBEZXByZWNhdGUuCgoyMDAwLTAyLTIxICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogQ2hhbmdlIGBsZW5ndGgnIHBhcmFtIG9mCglyZWFkX21lbW9yeV9mdW5jIHRvIHVuc2lnbmVkLiAgQ2hhbmdlIHR5cGUgb2YgYGJ1ZmZlcl9sZW5ndGgnIGFuZAoJYG9jdGV0c19wZXJfYnl0ZScgdG8gdW5zaWduZWQuCgkoYnVmZmVyX3JlYWRfbWVtb3J5KTogQ2hhbmdlIGBsZW5ndGgnIHBhcmFtIHRvIHVuc2lnbmVkLgoKMjAwMC0wMi0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIHByb3RvdHlwZXMgZm9yIEFSTSByZWdpc3RlciBuYW1lIGZ1bmN0aW9ucy4KCldlZCBGZWIgIDkgMTg6NDU6NDkgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogd2FpdC5oOiBEZWxldGUuIE5vIGxvbmdlciB1c2VkIGJ5IEdEQi4KClR1ZSBGZWIgIDggMTc6MDE6MTMgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fcmVzdW1lKTogQ2xhcmlmeSB1c2Ugb2YgU0lHR05BTC4KCShzaW1fc3RvcF9yZWFzb24pOiBDbGFyaWZ5IG1lYW5pbmcgb2Ygc2ltX3NpZ25hbGxlZC4KCjIwMDAtMDItMDMgIFRpbW90aHkgV2FsbCA8dHdhbGxAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBBZGRlZCBvY3RldHNfcGVyX2J5dGUKCWZpZWxkIGFuZCBpbml0aWFsaXplIGl0IHRvIG9uZSAoMSkuCgoyMDAwLTAxLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgcHJvdG90eXBlIGZvciBkaXNhc3NlbWJsZXJfdXNhZ2UoKS4KCUFkZCBwcm90b3R5cGUgZm9yIGFybV9kaXNhc3NlbWJsZXJfb3B0aW9ucygpLgoJUmVtb3ZlIHByb3RvdHlwZSBmb3IgYXJtX3RvZ2dsZV9yZWduYW1lcygpLgoJQWRkIHByb3RvdHlwZSBmb3IgcGFyc2VfYXJtX2Rpc2Fzc2VtYmxlcl9vcHRpb24oKS4KClNhdCBKYW4gIDEgMTk6MDY6NTIgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogc3ltY2F0LmggKFNUUklOR1gpIFshX19TVERDX18gfHwgQUxNT1NUX1NURENdOiBDaGFuZ2UgIj8iIHRvICJzIgoJdG8gc3RyaW5naWZ5IGFyZ3VtZW50IHMuCgpXZWQgRGVjIDE1IDExOjIyOjU2IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGhwLXN5bXRhYi5oIChIUF9MQU5HVUFHRV9GT1JUUkFOKTogTmV3IGVudW1lcmF0aW9uIGNvbnN0YW50LgoJKEhQX0xBTkdVQUdFX0Y3Nyk6IERlZmluZSB1c2luZyBIUF9MQU5HVUFHRV9GT1JUUkFOLgoKMTk5OS0xMi0xNSAgRG91ZyBFdmFucyAgPGRqZUB0cmFuc21ldGEuY29tPgoKCSogZGlzLWFzbS5oOiBFbmNsb3NlIGluIGV4dGVybiAiQyIgaWZkZWYgX19jcGx1c3BsdXMuCgoxOTk5LTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBzcGxheV90cmVlX25vZGVfcyk6IC4uLiB0aGlzLgoJKHN0cnVjdCBzcGxheV90cmVlKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBzcGxheV90cmVlX3MpOiAuLi4gdGhpcy4KCjE5OTktMTEtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKEFUVFJJQlVURV9NQUxMT0MpOiBOZXcgbWFjcm8uCgoJKiBsaWJpYmVydHkuaCAoYnVpbGRhcmd2LCBkdXBhcmd2LCBjb25jYXQsIGNob29zZV90ZW1wX2Jhc2UsCgltYWtlX3RlbXBfZmlsZSwgeG1hbGxvYywgeGNhbGxvYywgeHN0cmR1cCwgeG1lbWR1cCk6IEFkZAoJQVRUUklCVVRFX01BTExPQy4KCSh4YXRleGl0KTogUmVtb3ZlIF9fR05VQ19fIGNoZWNrLCBhZGQgQVRUUklCVVRFX05PUkVUVVJOLgoKMTk5OS0xMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IEluY2x1ZGUgc3RkYXJnLmggd2hlbiBBTlNJX1BST1RPVFlQRVMgaXMgZGVmaW5lZC4KCShhc3ByaW50ZiwgdmFzcHJpbnRmKTogUHJvdmlkZSBkZWNsYXJhdGlvbnMuCgpXZWQgTm92IDEwIDEyOjQzOjIxIDE5OTkgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoJCQkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IERlZmluZSBhbmQgdGVzdCBgR0NDX1ZFUlNJT04nLCBub3QgYEhBVkVfR0NDX1ZFUlNJT04nLgoKMTk5OS0xMS0wNCAgICAgIEppbW15IEd1byAgICAgICA8Z3VvQGN1cC5ocC5jb20+CgoJKiBocC1zeW10YWIuaCAoZG50dF90eXBlX2ZwYXJhbSk6IEFkZCBkb2NfcmFuZ2VzLCBtaXNjX2tpbmQKCWZpZWxkcywgY2hhbmdlIGxvY2F0aW9uIHR5cGUgdG8gQ09SRV9BRERSIGZyb20gaW50LgoJKGRudHRfdHlwZV9jb25zdCk6IE5hbWUgdGhlIDV0aCBmaWVsZCBsb2NhdGlvbl90eXBlLgoKU3VuIE9jdCAyNCAxOToxMTozMiAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBzaW0tZDEwdi5oIChTSU1fRDEwVl9UUzJfRE1BUF9SRUdOVU0pOiBEZWZpbmUuCgoxOTk5LTEwLTIzIDA4OjUxIC0wNzAwICBaYWNrIFdlaW5iZXJnICA8emFja0BiaXRtb3Zlci5jb20+CgoJKiBoYXNodGFiLmg6IEdpdmUgaGFzaF90YWJsZV90IGEgc3RydWN0IHRhZy4gIEFkZCBwcm90b3R5cGVzCglmb3IgY2xlYXJfaGFzaF90YWJsZV9zbG90IGFuZCB0cmF2ZXJzZV9oYXNoX3RhYmxlLiAgQ29ycmVjdAoJcHJvdG90eXBlIG9mIGFsbF9oYXNoX3RhYmxlX2NvbGxpc2lvbnMuCgpTYXQgT2N0IDIzIDE5OjAwOjEzIDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHNpbS1kMTB2Lmg6IE5ldyBmaWxlLgoKRnJpIE9jdCAxNSAwMTo0Nzo1MSAxOTk5ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGhhc2h0YWIuaDogTmV3IGZpbGUuCgoxOTk5LTEwLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChIQVZFX0dDQ19WRVJTSU9OKTogTmV3IG1hY3JvLiAgVXNlIGl0IGluc3RlYWQgb2YKCWV4cGxpY2l0bHkgdGVzdGluZyBfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18uCgoJKEFUVFJJQlVURV9QUklOVEYpOiBVc2UgYF9fZm9ybWF0X18nLCBub3QgYGZvcm1hdCcuCgoxOTk5LTA5LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAobWFrZV90ZW1wX2ZpbGUpOiAgQWRkIGEgcHJvdG90eXBlLgoKVHVlIFNlcCAxNCAwMDozNTowMiAxOTk5ICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiAgT3BlbkJTRCBoYXMgYSBjb3JyZWN0IHByb3RvdHlwZS4KCSh4cmVhbGxvYyk6ICBSZW1vdmUgb3V0ZGF0ZWQgY29tbWVudC4KCjE5OTktMDktMDcgIEplZmYgR2FyemlrICA8amdhcnppa0Bwb2JveC5jb20+CgoJKiBsaWJpYmVydHkuaCAoeG1lbWR1cCk6IEFkZCBwcm90b3R5cGUgZm9yIG5ldyBmdW5jdGlvbi4KCjE5OTktMDktMDQgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHBvYm94LmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9waik6IERlY2xhcmUuCgoxOTk5LTA5LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZ3Jvdywgb2JzdGFja19ncm93MCk6IE1vdmUgKGNoYXIqKSBjYXN0cwoJaW4gY2FsbHMgdG8gYF9vYnN0YWNrX21lbWNweScgZnJvbSBoZXJlIC4uLgoKCShfb2JzdGFja19tZW1jcHkpOiAuLi4gdG8gaGVyZSwgZXhjZXB0IGluIHRoZSBfX1NURENfXyBjYXNlIHdoaWNoCglkb2Vzbid0IG5lZWQgaXQuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoZ2V0cHdkKTogUHJvdG90eXBlLgoKMTk5OS0wOC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9pbnNlcnQpOiBSZXR1cm4gdGhlIG5ldyBub2RlLgoKMTk5OS0wNy0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBhbnNpZGVjbC5oOiBDb3B5IGF0dHJpYnV0ZSBzdXBwb3J0IG1hY3JvcyBmcm9tIGVnY3MuCgoxOTk5LTA2LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IEFkZCBpbml0X2Z1bmN0aW9uIGFuZAoJZmluaV9mdW5jdGlvbi4KCjE5OTktMDYtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXBzLmggKEVsZjMyX0ludGVybmFsX01zeW0pOiBOZXcgc3RydWN0dXJlLgoJKEVsZjMyX0V4dGVybmFsX01zeW0pOiBMaWtld2lzZS4KCShFTEYzMl9NU19SRUxfSU5ERVgpOiBOZXcgbWFjcm8uCgkoRUxGMzJfTVNfRkxBR1MpOiBMaWtld2lzZS4KCShFTEYzMl9NU19JTkZPKTogTGlrZXdpc2UuCgoxOTk5LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcm1fdG9nZ2xlX3JlZ25hbWVzKTogTmV3IHByb3RvdHlwZS4KCShzdHJ1Y3QgZGlhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkOiBkaXNhc3NlbWJsZXJfb3B0aW9ucy4KCjE5OTktMDQtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9lbGZfdmVyc2lvbl9leHByKTogUmVuYW1lIGBtYXRjaCcgdG8gYHBhdHRlcm4nLgoJQWRkIGBtYXRjaCcgY2FsbGJhY2sgZnVuY3Rpb24uCgoxOTk5LTA0LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIG5vX3VuZGVmaW5lZC4KCjE5OTktMDQtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGUgZm9yIHByaW50X2luc25fbWNvcmUuCgoxOTk5LTA0LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfcG9pbnRlcnMpOiBEZWNsYXJlLgoKMTk5OS0wMy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9jb21wYXJlX2ludHMpOiBEZWNsYXJlLgoKV2VkIE1hciAyNCAxMjo0NjoyOSAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGFteS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQ3lnd2lueywzMn0gc2hvdWxkIGhhdmUgdGhlIHByb3RvdHlwZS4KCjE5OTktMDItMjIgIEppbSBMZW1rZSAgPGpsZW1rZUBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogYWRkIGZpZWxkICJtcGM4NjBjMCIuCgpNb24gRmViICAxIDIxOjA1OjQ2IDE5OTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKICAgICAgICogZGlzLWFzbS5oIChwcmludF9pbnNuX2kzODZfYXR0KTogIERlY2xhcmUuCiAgICAgICAocHJpbnRfaW5zbl9pMzg2X2ludGVsKTogIERlY2xhcmUuCgoxOTk4LTEyLTMwICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBDYXN0IFNUUkVBTSBhbmQKCUZQUklOVEZfRlVOQyB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCldlZCBEZWMgMzAgMTY6MDc6MTQgMTk5OCAgRGF2aWQgVGF5bG9yICA8dGF5bG9yQHRleGFzLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IGNoYW5nZSB2b2lkICogdG8gUFRSICh0d28gcGxhY2VzKS4KCk1vbiBEZWMgMTQgMDk6NTM6MzEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgY2hlY2sgSU5fR0NDIGFueW1vcmUuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgpUdWUgRGVjICA4IDAwOjMwOjMxIDE5OTggIEVsZW5hIFphbm5vbmkgIDxlemFubm9uaUBrd2lrZW1hcnQuY3lnbnVzLmNvbT4KCglUaGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlIGJ5IEVsZW5hIFphbm5vbmkKIAk8ZXphbm5vbmlAa3dpa2VtYXJ0LmN5Z251cy5jb20+IGFuZCBFZGl0aCBFcHN0ZWluCiAJPGVlcHN0ZWluQHNvcGhpYS5jeWdudXMuY29tPiBhcyBwYXJ0IG9mIGEgcHJvamVjdCB0byBtZXJnZSBpbgogCWNoYW5nZXMgbWFkZSBieSBIUDsgSFAgZGlkIG5vdCBjcmVhdGUgQ2hhbmdlTG9nIGVudHJpZXMuCgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogY2hhbmdlIHRoZSB0eXBlIG9mIHN0cmVhbQoJZnJvbSBGSUxFKiB0byB2b2lkKiwgZm9yIHVzZSB3aXRoIGdkYidzIG5ldyB0eXBlIEdEQl9GSUxFLgoJKGZwcmludGZfZnR5cGUpOiBjaGFuZ2UgRklMRSogcGFyYW1ldGVyIHR5cGUgdG8gdm9pZCouCgoJKiBkZW1hbmdsZS5oOiAoRE1HTF9FREcpOiBuZXcgbWFjcm8gZm9yIEt1Y2sgYW5kIEFzc29jaWF0ZXMKCShETUdMX1NUWUxFX01BU0spOiBtb2RpZnkgdG8gaW5jbHVkZSBLdWNrIGFuZCBBc3NvYyBzdHlsZQoJKGRlbWFuZ2xpbmdfc3R5bGVzKTogYWRkIG5ldyBlZGdfZGVtYW5nbGluZyBzdHlsZQoJKEVER19ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IG5ldyBtYWNybwoJKEVER19ERU1BTkdMSU5HKTogbmV3IG1hY3JvCgkoRE1HTF9IUCk6IG5ldyBtYWNybywgZm9yIEhQL2FDQyBjb21waWxlci4KCShETUdMX1NUWUxFX01BU0spOiBtb2RpZnkgdG8gaW5jbHVkZSBuZXcgSFAncyBzdHlsZS4KCShkZW1hbmdsaW5nX3N0eWxlcyk6IGFkZCBuZXcgaHBfZGVtYW5nbGluZyB2YWx1ZS4KCShIUF9ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IG5ldyBtYWNyby4KCShBUk1fREVNQU5HTElORyk6IGNvZXJjZSB0byBpbnQuCgkoSFBfREVNQU5HTElORyk6IG5ldyBtYWNyby4KCgkqIGhwLXN5bXRhYi5oOiByZXdyaXR0ZW4sIGZyb20gSFAuCgkocXVpY2tfcHJvY2VkdXJlKTogY2hhbmdlIHR5cGUgb2YgbGFuZ3VhZ2UgZmllbGQgdG8gdW5zaWduZWQgaW50CgkocXVpY2tfbW9kdWxlKTogY2hhbmdlIHR5cGUgb2YgbGFuZ3VhZ2UgZmllbGQgdG8gdW5zaWduZWQgaW50Cgkoc3RydWN0IGRudHRfdHlwZV9zdmFyKTogYWRkIGZpZWxkIHRocmVhZF9zcGVjaWZpYy4KCShocF9sYW5ndWFnZSk6IGFkZCBsYW5ndWFnZXMgbW9kY2FsIGFuZCBkbXBhc2NhbC4KCkZyaSBOb3YgMjAgMTM6MTQ6MDAgMTk5OCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIHByb3RvdHlwZSBmb3IgRnJlZUJTRC4KCkZyaSBOb3YgMTMgMTk6MTk6MTEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IFByb3RvdHlwZSB4Y2FsbG9jLgoKU3VuIE5vdiAgOCAxNzo0MjoyNSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBXcmFwIHByb2JsZW1hdGljIG1hY3JvcyB3aXRoICFJTl9HQ0MuCgoJKiBkZW1hbmdsZS5oOiBOZXZlciBkZWZpbmUgUEFSQU1TKCkuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgpTYXQgTm92ICA3IDE4OjMwOjIwIDE5OTggIFBldGVyIFNjaGF1ZXIgIDxwZXRlci5zY2hhdWVyQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdmF4KTogRGVjbGFyZS4KClNhdCBOb3YgIDcgMTY6MDQ6MDMgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBnYW5zaWRlY2wuaC4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KCjE5OTgtMTAtMjYgMTY6MDMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgb3B0aW1pemUuCgpUaHUgT2N0IDIyIDE5OjU4OjAwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHNwbGF5LXRyZWUuaDogV3JhcCBmdW5jdGlvbiBwb2ludGVyIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMgaW4KCVBBUkFNUygpIG1hY3JvLgoKMTk5OC0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNwbGF5LXRyZWUuaDogTmV3IGZpbGUuCgpGcmkgT2N0ICA5IDAwOjAyOjAzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1lcmdlIGRldm8gYW5kIGVnY3MgaW5jbHVkZSBkaXJlY3Rvcmllcy4KClNhdCBTZXAgIDUgMTI6MTY6MzMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2V0b3B0LmgsIG9ic3RhY2suaDogVXBkYXRlZCBmcm9tIGdjYy4KCjE5OTgtMDgtMDMgIEphc29uIE1vbGVuZGEgIChqc21AYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IENoYW5nZSBkZWNsIHRvIHVzZSBtb2Rlcm4gR0NDIGF0dHJpYnV0ZQoJdG8gaW5kaWNhdGUgZXhpdCBkb2VzIG5vdCByZXR1cm4uCgpNb24gSnVuICAxIDEzOjQ4OjMyIDE5OTggIEphc29uIE1vbGVuZGEgIChjcmFzaEBidWdzaGFjay5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKVHVlIEZlYiAyNCAxMzowNTowMiAxOTk4ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogTWVtYmVyIGBzeW1ib2wnIHJlbmFtZWQgdG8gYHN5bWJvbHMnCglhbmQgbWFkZSBhbiAiYXN5bWJvbCAqKiIuICBOZXcgbWVtYmVyIG51bV9zeW1ib2xzLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogVXBkYXRlLgoKVHVlIEZlYiAxNyAxMjozMjoxOCAxOTk4ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9mZXRjaF9yZWdpc3Rlciwgc2ltX3N0b3JlX3JlZ2lzdGVyKTogQWRkCiAJcmVnaXN0ZXIgbGVuZ3RoIHBhcmFtZXRlci4gIEZ1bmN0aW9ucyByZXR1cm4gYWN0dWFsIGxlbmd0aCBvZgogCXJlZ2lzdGVyLgoKVGh1IEZlYiAxMiAxNjoyOTowMSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBnZXRvcHQuaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCldlZCBGZWIgMTEgMTY6NTY6MDYgMTk5OCAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHN5bWNhdC5oOiBOZXcgZmlsZS4KCk1vbiBGZWIgIDIgMTc6MTM6MzEgMTk5OCAgU3RldmUgSGF3b3J0aCAgPHN0ZXZlQHBtLmNzZS5ybWl0LkVEVS5BVT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl90aWMzMCk6IERlY2xhcmUuCgpUaHUgSmFuIDIyIDE2OjIzOjU5IDE5OTggIEZyZWQgRmlzaCA8Zm5mQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBmbGFnIElOU05fSEFTX1JFTE9DIHRvIHRlbGwgZGlzYXNzZW1ibHkKCWZ1bmN0aW9uIHRoZXJlIGlzIGEgcmVsb2Mgb24gdGhpcyBsaW5lLgoKTW9uIERlYyAgOCAxMToyMjoyMyAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBSZW1vdmUgcHJvdG90eXBlIG9mIGRpc2FzbV9zeW1hZGRyKCkgYXMgdGhpcyBmdW5jdGlvbgoJbm8gbG9uZ2VyIGV4aXN0cy4KClR1ZSBEZWMgIDIgMTA6MjA6NTMgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNtX3N5bWFkZHIpOiBOZXcgcHJvdG90eXBlLgoKTW9uIERlYyAgMSAxMToyOTozNSAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENvbW1lbnQgb3V0IGFyZyBuYW1lcyBpbiBwcm90b3R5cGVzLgoKV2VkIE5vdiAyNiAxNjo0Nzo1OCAxOTk3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDb25zaXN0YW50bHkgdXNlIG5hbWVzIGZvciBwcm90b3R5cGUKCWFyZ3VtZW50cy4KCldlZCBOb3YgMjYgMTE6Mzk6MzAgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDaGFuZ2UgYnl0ZSBjb3VudCBhcmd1bWVudHMgdG8KCXtyZWFkLHdyaXRlfV9tZW0gdG8gYGludCcuICBOZXcgbWVtYmVyIGBtYWdpYycuCgkoQ0JfU1lTQ0FMTF9NQUdJQyxDQl9TWVNDQUxMX0lOSVQpOiBOZXcgbWFjcm9zLgoKVHVlIE5vdiAyNSAwMTozNTo1MiAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQHNlYmEuY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBzdGF0KTogTW92ZSBmb3J3YXJkIGRlY2wgdXAuCgkoaG9zdF9jYWxsYmFjayk6IFBhc3Mgc3RhdCBzdHJ1Y3QgcG9pbnRlciB0byBzdGF0LGZzdGF0LgoJKENCX1NZU19ubm4pOiBSZW9yZ2FuaXplLgoJKENCX1NZU0NBTEwpOiBOZXcgbWVtYmVycyBwMSxwMi4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogRGVsZXRlIGZvdXJ0aCBhcmcuCgpTYXQgTm92IDIyIDIzOjM0OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3N0b3BfcmVhc29uKTogQ2xhcmlmeSBzaW1fc2lnbmFsbGVkIFNJR1JDCiAJYXJndW1lbnQuCgpNb24gTm92IDE3IDE0OjAwOjUxIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfVEFSR0VUX0RFRlNfTUFQKTogUmVuYW1lZCBmcm9tIHRhcmdldF9kZWZzX21hcC4KCShob3N0X2NhbGxiYWNrKTogQWRkIHN0YXQsIGZzdGF0LCBzeXNjYWxsX21hcCwgZXJybm9fbWFwLCBvcGVuX21hcCwKCXNpZ25hbF9tYXAsIHN0YXRfbWFwLgoJKGVycm5fbWFwLG9wZW5fbWFwKTogUmVuYW1lZCB0byBjYl9pbml0X2Zvb19tYXAuCgkoY2JfaG9zdF90b190YXJnZXRfZXJybm8sY2JfdGFyZ2V0X3RvX2hvc3Rfb3Blbik6IFJlbmFtZWQgZnJvbQoJaG9zdF90b190YXJnZXRfZXJybm8sdGFyZ2V0X3RvX2hvc3Rfb3Blbi4KCShjYl9yZWFkX3RhcmdldF9zeXNjYWxsX21hcHMpOiBBZGQgcHJvdG90eXBlLgoJKGNiX3RhcmdldF90b19ob3N0X3N5c2NhbGwpOiBMaWtld2lzZS4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogTGlrZXdpc2UuCgkoY2Jfc3lzY2FsbCk6IExpa2V3aXNlLgoJKENCX1NZU197ZXhpdCxvcGVuLGNsb3NlLHJlYWQsd3JpdGUsbHNlZWssdW5saW5rLGdldHBpZCxraWxsLGZzdGF0LAoJYXJndmxlbixhcmd2LGNoZGlyLHN0YXQsY2htb2QsdXRpbWUsdGltZX0pOiBEZWZpbmUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyB0eXBlLgoJKENCX1JDKTogTmV3IGVudW0uCgpGcmkgTm92ICA3IDEwOjM0OjA5IDE5OTcgIFJvYiBTYXZveWUgIDxyb2JAZGFya3N0YXIuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KCSogcmVtb3RlLXNpbS5oOiAgQWRkIGV4dGVybiAiQyIgeyBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIEMrKwoJcHJvZ3JhbXMuCgpUdWUgT2N0IDE0IDE2OjA3OjUxIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkCgknc3ltYm9sX2F0X2FkZHJlc3NfZnVuYycuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXNlIG5ldyBmaWVsZCB3aXRoCglnZW5lcmljX3N5bWJvbF9hdF9hZGRyZXNzLgoKTW9uIE9jdCAxMyAxMDoxNzoxNSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IENsYXJpZnkgc2ltX3JlYWQsIHNpbV93cml0ZSBNRU0gYXJndW1lbnQuCgpXZWQgU2VwIDI0IDE4OjAzOjEwIDE5OTcgIFN0dSBHcm9zc21hbiAgPGdyb3NzbWFuQGJhYnlsb24tNS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fUkMpOiAgQWRkIGEgYnVuY2ggb2YgbmV3IHJldHVybiBjb2RlcyBmb3IKCWJyZWFrcG9pbnQgc3R1ZmYuCgkqIEFkZCBmdW5jdGlvbnMgdG8gdGVsbCB0aGUgc2ltdWxhdG9yIHRvIHNldC9jbGVhci9lbmFibGUvZGlzYWJsZQoJaW50cmluc2ljIGJyZWFrcG9pbnRzLgoKVGh1IEF1ZyAyOCAxOTo0MTo0MiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoZHVwYXJndik6IEFkZCBwcm90b3R5cGUuCgpUdWUgQXVnIDI2IDEyOjI1OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpNb24gQXVnIDI1IDEwOjUwOjUxIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgQUJGRCBhcmcuIERvY3VtZW50LgoKRnJpIEF1ZyAgOCAxNjo0Mzo1NiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcmNfZ2V0X2Rpc2Fzc2VtYmxlcik6IERlY2xhcmUuCgpXZWQgSnVsIDMwIDExOjM5OjUwIDE5OTcgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoRE1HTF9KQVZBKTogIE5ldyBvcHRpb24gdG8gcmVxdWVzdCBKYXZhIGRlbWFuZ2xpbmcuCgpUdWUgSnVsIDIyIDE3OjU5OjU0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChQRVhFQ1VURV8qKTogRGVmaW5lLgoJKHBleGVjdXRlLCBwd2FpdCk6IERlY2xhcmUuCgpGcmkgSnVuICA2IDEzOjAyOjMzIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2tpbGwpOiBNYXJrIGFzIGRlcHJlY2lhdGVkLgoKRnJpIE1heSAyMyAxMzo0Mzo0MSAxOTk3ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdGFza19saW5rIG1lbWJlci4KClRodSBNYXkgMjIgMTE6MzI6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBSZXZpZXcgZG9jdW1lbnRhdGlvbi4gIENsYXJpZnkgcmVzdHJpY3Rpb25zIG9uCiAJd2hlbiBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4KCldlZCBNYXkgMjEgMTY6NDc6NTMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc2V0X3Byb2ZpbGVfc2l6ZSk6IEFkZCBwcm90b3R5cGUsIGRvY3VtZW50IGFzCiAJZGVwcmVjaWF0ZWQuCgpUdWUgTWF5IDIwIDA5OjMyOjIyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgY2FsbGJhY2sgc3RydWN0LgoJKHNpbV9zZXRfY2FsbGJhY2tzKTogRHJvcCBTSU1fREVTQyBhcmd1bWVudC4gRG9jdW1lbnQuCgkoc2ltX3NpemUpOiBSZW1vdmUgcmVjZW50bHkgYWRkZWQgU0lNX0RFU0MgYXJndW1lbnQuIERvY3VtZW50LgoKTW9uIE1heSAxOSAxOToxNDo0NCAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IFBhc3MgU0QgaW50byBzaW1fc2l6ZS4KClRodSBNYXkgMTUgMDE6MjQ6MTYgMTk5NyAgTWFyayBBbGV4YW5kZXIgIDxtYXJrYUBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oIChvYnN0YWNrX3NwZWNpZnlfYWxsb2NhdGlvbl93aXRoX2FyZywgb2JzdGFja19jaHVua2Z1biwKCW9ic3RhY2tfZnJlZWZ1bik6IEVsaW1pbmF0ZSBjb21waWxlIHdhcm5pbmdzIGluIGdkYi4KClR1ZSBBcHIgMjIgMTA6MjQ6MzQgMTk5NyAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9ieXRlb3JkZXJzKTogQWRkIGNvbW1lbnRzIGZvciBwcmV2aW91cwoJZm9ybWF0cyBhbmQgYWRkIGZsb2F0Zm9ybWF0X2xpdHRsZWJ5dGVfYmlnd29yZCwgcHJpbWFyaWx5IGZvciBBUk0uCglBZGQgZGVjbGFyYXRpb24gZm9yIGZsb2F0Zm9ybWF0X2llZWVfZG91YmxlX2xpdHRsZWJ5dGVfYmlnd29yZC4KCkZyaSBBcHIgMTggMTM6MDQ6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc3RvcCk6IE5ldyBpbnRlcmZhY2UgLSBhc3luY2hyb25vdXMKIAlub3RpZmljYXRpb24gb2YgYSByZXF1ZXN0IHRvIHN0b3AgLyBzdXNwZW5kIHRoZSBydW5uaW5nCiAJc2ltdWxhdGlvbi4KCgkqIHJlbW90ZS1zaW0uaCAoZW51bSBzaW1fc3RvcCk6IEFkZCBzaW1fcnVubmluZyBhbmQgc2ltX3BvbGxpbmcgYXMKIAlzdGF0ZXMgZm9yIHVzZSBpbnRlcm5hbCB0byBzaW11bGF0b3JzLgoKCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydXQpOiBQdXQgYSBtYWdpYyBudW1iZXIgYXQKIAl0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgdG8gYWxsb3cgYmFzaWMgY2hlY2tpbmcuCgkoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydWN0ICk6IEFkZCBwb2xsX3F1aXQgLSBzbwogCXRoYXQgdGhlIGNvbnNvbGUgZXRjIGNhbiBiZSBwb2xsZWQgYXQgcmVndWxhciBpbnRlcnZhbHMuCgpUaHUgQXByIDE3IDAyOjE3OjEyIDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHN0cnVjdCBfYmZkKTogRGVjbGFyZS4KCShzaW1fbG9hZCk6IFJldHVybiBTSU1fUkMuICBOZXcgYXJnIGBhYmZkJy4KCShzaW1fY3JlYXRlX2luZmVyaW9yKTogUmV0dXJuIFNJTV9SQy4gIERlbGV0ZSBhcmcgYHN0YXJ0X2FkZHJlc3MnLgoKV2VkIEFwciAgMiAxNzowOToxMiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3RyYWNlLCBzaW1fc2l6ZSk6IE1ha2UgdGhlc2UgZ2xvYmFsLiAgVGhleQogCXdpbGwgZ28gYXdheSBzaG9ydGx5LgoKV2VkIEFwciAgMiAxNToyMzo0OSAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fT1BFTl9LSU5ELCBTSU1fUkMpOiBOZXcgZW51bXMuCgkoc2ltX29wZW4pOiBOZXcgYXJndW1lbnQgYGtpbmQnLgoKV2VkIEFwciAgMiAxNDo0NTo1MSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBDT1BZSU5HOiBVcGRhdGUgRlNGIGFkZHJlc3MuCgpGcmkgTWFyIDI4IDE1OjI5OjU0IDE5OTcgIE1pa2UgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAodG9wIGxldmVsKTogSW5jbHVkZSBzdGRhcmcuaCBvciB2YXJhcmdzLmggaWYKCXZhX3N0YXJ0IGlzIG5vdCBkZWZpbmVkLgoJKGhvc3RfY2FsbGJhY2tfc3RydWN0KTogTWFrZSB7LGV9dnByaW50Zl9maWx0ZXJlZCB0YWtlIGEgdmFfbGlzdAoJaW5zdGVhZCBvZiB2b2lkICosIHNpbmNlIHZhX2xpc3QgbWlnaHQgYmUgYW4gYXJyYXkgb3Igc3RydWN0dXJlCgl0eXBlLgoKRnJpIE1hciAyOCAxNTo0NDo0MSAxOTk3ICBILkouIEx1ICA8aGpsQGdudS5haS5taXQuZWR1PgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIHByb3RvdHlwZSBmb3IgZ2xpYmMgYW5kIGxpbnV4LgoKTW9uIE1hciAxNyAxOToyMjoxMiAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYmphbGxvYy5oOiBOZXcgZmlsZS4KCk1vbiBNYXIgMTcgMTQ6NTc6NTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IE5ldyBmaWxlLCBjb3BpZWQgaW4gZnJvbSBnZGIvcmVtb3RlLXNpbS5oLiAgT25lCiAJZGF5IHRoaXMgd2lsbCBiZSBwbGFjZWQgaW4gYSBkaXJlY3Rvcnkgb2YgaXRzIG93bi4KClNhdCBNYXIgMTUgMTk6MDA6MTQgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oOiBVcGRhdGUgdG8gY3VycmVudCBGU0YgdmVyc2lvbi4KClRodSBNYXIgIDYgMTU6NDY6NTkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1Y3QpOiBBZGQgY2FsbGJhY2tzIC0KIAlmbHVzaF9zdGRvdXQsIHdyaXRlX3N0ZGVyciwgZmx1c2hfc3RkZXJyLCB2cHJpbnRmX2ZpbHRlcmVkLAogCWV2cHJpbnRmX2ZpbHRlcmVkLiAgRGVsZXRlIHJlZHVuZGFudCBjYWxsYmFja3MgLSBwcmludGZfZmlsdGVyZWQuCgpUaHUgRmViIDI3IDIzOjE4OjI3IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgbHByZWZpeCBhbmQgbHByZWZpeF9sZW4KCWZpZWxkcy4KClR1ZSBGZWIgMjUgMDA6MTA6NDkgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUKCWJ5dGVzX3Blcl9jaHVuayBhbmQgZGlzcGxheV9lbmRpYW4uCgpNb24gRmViIDI0IDE3OjQ3OjAyIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCglGcm9tIEVyaWMgWW91bmdkYWxlIDxlcmljQGFuZGFudGUuamljLmNvbT46CgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9leHByKTogRGVmaW5lLgoJKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZGVwcyk6IERlZmluZS4KCShzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUpOiBEZWZpbmUuCgpUaHUgRmViICA2IDE0OjIwOjAxIDE5OTcgIE1hcnRpbiBNLiBIdW50ICA8aHVudEBwaXp6YS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBBZGQgbmV3IGZpZWxkcwoJYnl0ZXNfcGVyX2NodW5rIGFuZCBkaXNwbGF5X2VuZGlhbiB0byBjb250cm9sIHRoZQoJZGlzcGxheSBvZiByYXcgaW5zdHJ1Y3Rpb25zLgoKRnJpIERlYyAyNyAyMjoxNzozNyAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl90aWM4MCk6IERlY2xhcmUuCgpTdW4gRGVjICA4IDE3OjExOjEyIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChob3N0X2NhbGxiYWNrKTogTmV3IG1lbWJlciBgZXJyb3InLgoKV2VkIE5vdiAyMCAwMDo0MDoyMyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaDogTmV3IGZpbGUsIG1vdmVkIGhlcmUgZnJvbSBnZGIuCgpNb24gTm92IDE4IDE2OjM0OjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBDaGVja2luIGFnYWluOyBsYXN0IGNoZWNraW4gZmFpbGVkIGR1ZSB0byBzdGlja3kgdGFnLgoKV2VkIE5vdiAxMyAwODoyMjowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogUmV2ZXJ0IGxhc3QgY29tbWl0IGR1ZSB0byBjb25mbGljdHMgd2l0aCBocHV4CglzeXN0ZW0gaGVhZGVycy4KClR1ZSBOb3YgMTIgMTY6MzE6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IE1vdmUgcHJvdG90eXBlcyBmcm9tIGFyZ3YuYyBoZXJlLgoKVGh1IE9jdCAzMSAxNDo1NjoxOCAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogYW5zaWRlY2wuaCAoVlBBUkFNUyxWQV9TVEFSVCk6IERlZmluZS4KCkZyaSBPY3QgMjUgMTI6MDg6MDQgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogQWRkIGJ5dGVzX3Blcl9saW5lIGZpZWxkLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZSBieXRlc19wZXJfbGluZSBmaWVsZC4KClRodSBPY3QgMjQgMTc6MTA6MDEgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogQWRkIHN5bWJvbCBmaWVsZC4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgc3ltYm9sIGZpZWxkLgoKVGh1IE9jdCAxNyAxMToxNzo0MCAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX20zMnIpOiBEZWNsYXJlLgoKTW9uIE9jdCAxNCAyMzo1Njo1MiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogRGVjbGFyZSBwYXJhbWV0ZXIgdHlwZXMgZm9yIHhtYWxsb2MgYW5kIHhyZWFsbG9jLgoKVGh1IE9jdCAgMyAxMzo0NToyNyAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBmbm1hdGNoLmg6IE5ldyBmaWxlLgoKVGh1IE9jdCAgMyAxMDozMzoxNCAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbW4xMHgwMCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShwcmludF9pbnNuX21uMTAyMDAsIHByaW50X2luc25fbW4xMDMwMCk6IERlY2xhcmUuCgpXZWQgT2N0ICAyIDIxOjI0OjQzIDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tbjEweDAwKTogRGVjbGFyZS4KCk1vbiBTZXAgMzAgMTM6NTY6MTEgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogUmVtb3ZlICNpZm5kZWYgUFJJVkFURV9YTUFMTE9DLgoKU2F0IEF1ZyAzMSAxMzoyNzowNiAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdjg1MCk6IERlY2xhcmUuCgpUdWUgQXVnIDEzIDE2OjEwOjMwIDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBDaGFuZ2UgYmNvcHkgdG8gbWVtY3B5LiAgV29ya3MgYmV0dGVyIG9uIFBvc2l4CglzeXN0ZW1zLCB3aGljaCBnZW5lcmFsbHkgbGFjayBiY29weS4KCk1vbiBBdWcgMTIgMTc6MDM6MTggMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6ICBDaGFuZ2UgV0lOMzIgdG8gX1dJTjMyLgoKRnJpIEp1bCAyNiAxMzo1ODoxOCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBmbGF2b3VyIGZpZWxkLgoJKHByaW50X2luc25fYWxwaGEpOiBEZWNsYXJlLgoJKHByaW50X2luc25fYWxwaGFfb3NmLCBwcmludF9pbnNuX2FscGhhX3Ztcyk6IERvbid0IGRlY2xhcmUuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogSW5pdGlhbGl6ZSBmbGF2b3VyIGZpZWxkLgoKVHVlIEp1bCAyMyAxNzozNzo1OCAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChQUklWQVRFX1hNQUxMT0MpOiBFbmNsb3NlIHhtYWxsb2MveHJlYWxsb2MKCWRlZmluaXRpb25zIGluc2lkZSAjaWZuZGVmIHNvIHRoYXQgcHJvZ3JhbXMgdGhhdCB3YW50IHRvCgljYW4gZGVmaW5lIFBSSVZBVEVfWE1BTExPQyBhbmQgdGhlbiBkZWZpbmUgeG1hbGxvYyBhbmQKCXhyZWFsbG9jIGFueXdheSB0aGV5IHdhbnQuCgkoYmFzZW5hbWUpOiBEb2N1bWVudCBpbiBzb3VyY2UgdGhhdCB3ZSBjYW4ndCBkZWNsYXJlIHRoZQogCXBhcmFtZXRlciB0eXBlIGJlY2F1c2UgaXQgaXMgZGVjbGFyZWQgaW5jb25zaXN0ZW50bHkgYWNyb3NzCglkaWZmZXJlbnQgc3lzdGVtcy4KCk1vbiBKdWwgMjIgMTM6MTY6MTMgMTk5NiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAdGFtdS5lZHU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYWxwaGEpOiBEb24ndCBkZWNsYXJlLgoJKHByaW50X2luc25fYWxwaGFfb3NmLCBwcmludF9pbnNuX2FscGhhX3Ztcyk6IERlY2xhcmUuCgpXZWQgSnVsIDE3IDE0OjQ1OjEyIDE5OTYgIE1hcnRpbiBNLiBIdW50ICA8aHVudEBwaXp6YS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiAocHJpbnRfaW5zbl9kMTB2KTogRGVjbGFyZS4KCk1vbiBKdWwgMTUgMTY6NTU6MzggMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIEdldCByaWQgb2YgZGVjbHMgZm9yIHByaW50X2luc25faTgwODYsCglwcmludF9pbnNuX3NwYXJjNjQgYW5kIHByaW50X2luc25fc3BhcmNsaXRlLgoJKiAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogIFNwbGl0IGludG8gdHdvIHBpZWNlcy4gIE9uZSwKCUlOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIIGluaXRzIGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciBlbmRpYW4sCgltYWNoLCBhbmQgYXJjaC4KCkZyaSBKdWwgMTIgMTA6MTk6MjcgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pODA4Nik6ICBEZWNsYXJlLgoKV2VkIEp1bCAgMyAxNjowMjozOSAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NwYXJjbGl0ZSk6ICBEZWNsYXJlLgoKVHVlIEp1biAxOCAxNjowMjo0NiAxOTk2ICBKZWZmcmV5IEEuIExhdyAgPGxhd0BydGwuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9oODMwMHMpOiBEZWNsYXJlLgoKVHVlIEp1biAxOCAxNToxMTozMyAxOTk2ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIGZvcGVuLXZtcy5oOiBOZXcgZmlsZS4KClR1ZSBKdW4gIDQgMTg6NTg6MTYgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBub3RpY2VfYWxsIGZpZWxkLgoKRnJpIEFwciAyNiAxMDozMzoxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoI2lmZGVmIElOX0dDQyk6ICNpbmNsdWRlICJnYW5zaWRlY2wuaCIuCgkoUFJPVE8sUFRSLGNvbnN0KTogRGVsZXRlLgoKTW9uIEFwciAyMiAxNzoyNzo0MiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHRyYWRpdGlvbmFsX2Zvcm1hdCBmaWVsZC4KCk1vbiBBcHIgMTUgMTU6MTY6NTYgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChjaG9vc2VfdGVtcF9iYXNlKTogQWRkIHByb3RvdHlwZS4KClR1ZSBNYXIgMTIgMTc6Mjk6NDYgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfd3JhcHBlZF9saW5rX2hhc2hfbG9va3VwKTogRGVjbGFyZS4KCShzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB3cmFwX2hhc2ggZmllbGQuCgpXZWQgRmViIDE0IDE2OjQ5OjE3IDE5OTYgIE1hcnRpbiBBbmFudGhhcmFtYW4gIDxtYXJ0aW5AbWFpbC5pbWVjaC51bmktZHVpc2J1cmcuZGU+CgoJKiBpZWVlLmggKGllZWVfcmVjb3JkX2VudW1fdHlwZSk6IERlZmluZQoJaWVlZV9leHRlcm5hbF9yZWZlcmVuY2VfaW5mb19lbnVtLgoKRnJpIEZlYiAgMiAxNzowOToyNSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoRElTQVNNX1JBV19JTlNOKTogRGVsZXRlLgoKVHVlIEphbiAyMyAwOToyMTo0NyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IGVuZGlhbiB0byBCRkRfRU5ESUFOX1VOS05PV04uCglOZXcgYXJndW1lbnQgRlBSSU5URl9GVU5DLgoKTW9uIEphbiAyMiAxNjozNzo1OSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBtZW1iZXJzIGFyY2gsIG1hY2gsIGVuZGlhbi4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBJbml0aWFsaXplIHRoZW0uCgkoRElTQVNNX1JBV19JTlNOeyxGTEFHfSk6IERlZmluZS4KClRodSBKYW4gMTggMTE6MzI6MzggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2hhbmdlIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCShjcGx1c19tYW5nbGVfb3BuYW1lKTogQ2hhbmdlIHJldHVybiB0eXBlIGFuZCBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouCgpGcmkgSmFuICA1IDAwOjAxOjIyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGllZWUuaCAoZW51bSBpZWVlX3JlY29yZCk6IEFkZCBpZWVlX2Fzbl9yZWNvcmRfZW51bSwKCWllZWVfYXRfcmVjb3JkX2VudW0sIGllZWVfdHlfcmVjb3JkX2VudW0sIGllZWVfYXRuX3JlY29yZF9lbnVtLAoJaWVlZV9iYl9yZWNvcmRfZW51bSwgYW5kIGllZWVfYmVfcmVjb3JkX2VudW0uCgpXZWQgSmFuICAzIDEzOjEyOjA5IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oOiBVcGRhdGUgY29weXJpZ2h0IHRvIDE5OTYuCgkoX29ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWNsYXJlLgoJKG9ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWZpbmUgbWFjcm8uCgpUaHUgRGVjIDI4IDExOjQyOjEyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oICh4c3RyZHVwKTogRGVjbGFyZS4KClRodSBEZWMgMjEgMTQ6NDc6MTcgMTk5NSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogd2FpdC5oOiBQcm90ZWN0IGFsbCBtYWNyb3Mgd2l0aCAjaWZuZGVmLgoKVHVlIE9jdCAyNCAyMTo0NTo0MCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHN0YXRpY19saW5rIGZpZWxkLgoKVHVlIFNlcCAxMiAxNjoyODowNCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgc3ltYm9sIHBhcmFtZXRlciB0bwoJd2FybmluZyBjYWxsYmFjay4KCkZyaSBTZXAgIDEgMTM6MTE6NTEgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIHdhcm5pbmcgY2FsbGJhY2sKCXRvIHRha2UgQkZELCBzZWN0aW9uLCBhbmQgYWRkcmVzcyBhcmd1bWVudHMuCgpUaHUgQXVnIDMxIDE2OjQ1OjEyIDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIFBFIHN0dWZmLgoKVHVlIEF1ZyAyMiAwMzoxODoyMyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogRGVjbGFyZSB4c3RyZXJyb3IuICBGcm9tIFBhdCBSYW5raW4uCgpNb24gQXVnIDIxIDE4OjExOjM2IDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIFBFIHN0dWZmLgoKV2VkIEF1ZyAgMiAwODoxNDoxMiAxOTk1ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NwYXJjNjQpOiBEZWNsYXJlLgoKTW9uIEp1bCAxMCAxMzoyNjo0OSAxOTk1ICBFcmljIFlvdW5nZGFsZSAgPGVyaWNAYWliLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIHN5bWJvbGljLgoKU3VuIEp1bCAgMiAxNzo0ODo0MCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQ2hhbmdlIHR5cGUgb2YgYmFzZV9maWxlIHRvCglQVFIuCgpUaHUgSnVuIDI5IDAwOjAyOjQ1IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkZWQgYmFzZV9maWxlIG1lbWJlci4KClR1ZSBKdW4gMjAgMTY6NDA6MDQgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGFuc2lkZWNsLmg6IHdpbjMycyBpcyBBTlNJIGVub3VnaC4KClRodSBNYXkgMTggMDQ6MjU6NTAgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCVdlZCBNYXkgMTAgMTQ6Mjg6MTYgMTk5NSBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm1sdGQuY28udWspCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYXJtKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHByaW50X2luc25fe2xpdHRsZSxiaWd9X2FybSk6IE5ldyBkZWNsYXJhdGlvbnMuCgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRGVjbGFyZS4KClNhdCBNYXkgMTMgMTA6MTQ6MDggMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3Vic3l0ZW0sIHN0YWNrX2hlYXBfcGFyYW1ldGVycyk6IE5ldy4KClRodSBNYXkgIDQgMTQ6MzY6NDIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBpbmNsdWRlIGFuc2lkZWNsLmggaWYgSU5fR0NDLgoKVHVlIEZlYiAyMSAwMDozNzoyOCAxOTk1ICBKZWZmIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGhwLXN5bXRhYi5oOiBEb24ndCB1c2UgYml0ZmllbGQgZW51bWVyYXRpb25zLCB0aGUgSFAgQyBjb21waWxlcgoJZG9lcyBub3QgaGFuZGxlIHRoZW0gY29ycmVjdGx5LgoKVGh1IEZlYiAgOSAxNDoyMDoyNyAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBEb24ndCBkZWNsYXJlIHBhcmFtZXRlciB0eXBlOyBzb21lCglzeXN0ZW1zIGhhdmUgdGhpcyBpbiB0aGVpciBoZWFkZXIgZmlsZXMuCgpXZWQgRmViICA4IDE3OjM1OjM4IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgZm9ybWF0IG9mIGNvbW1vbgoJc3ltYm9sIGluZm9ybWF0aW9uLCB0byByZW1vdmUgcmVzdHJpY3Rpb25zIG9uIG1heGltdW0gc2l6ZSBhbmQKCWFsaWdubWVudCBwb3dlciwgYnkgdXNpbmcgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIGluc3RlYWQuCgpNb24gRmViICA2IDE0OjU1OjMyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoZW51bSBiZmRfbGlua19oYXNoX3R5cGUpOiBSZW5hbWUgYmZkX2xpbmtfaGFzaF93ZWFrCgl0byBiZmRfbGlua19oYXNoX3VuZGVmd2Vhay4gIEFkZCBiZmRfbGlua19oYXNoX2RlZndlYWsuCgpNb24gSmFuIDE2IDIxOjAwOjIzIDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoR0RCX0lOSVRfRElTQVNTRU1CTEVfSU5GTywgZXRjKTogUmVtb3ZlIGFsbAoJR0RCLXNwZWNpZmljIGRlZmluaXRpb25zLgoKU3VuIEphbiAxNSAxODozOTozNSAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzcGxhdD4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl93NjUpOiBEZWNsYXJlLgoKVGh1IEphbiAxMiAxNzo1MToxNyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGhleF9wKTogRml4IHNlbnNlIG9mIHRlc3QuCgpXZWQgSmFuIDExIDIyOjM2OjQwIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoX2hleF9hcnJheV9zaXplLCBfaGV4X2JhZCwgX2hleF92YWx1ZSwgaGV4X2luaXQsCgloZXhfcCwgaGV4X3ZhbHVlKTogTmV3IG1hY3JvcyBhbmQgZGVjbGFyYXRpb25zLCBmb3IgaGV4LmMuCgpGcmkgSmFuICA2IDE3OjQ0OjE0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogTWFrZSBpZGVtcG90ZW50LgoKV2VkIERlYyAxNCAxMzowODo0MyAxOTk0ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBwcm9ncmVzcy5oOiBOZXcgZmlsZSwgZW1wdHkgZGVmaW5pdGlvbnMgZm9yIHByb2dyZXNzIG1hY3Jvcy4KCkZyaSBOb3YgMjUgMDA6MTQ6MDUgMTk5NCAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBocC1zeW10YWIuaDogTmV3IGZpbGUgZGVzY3JpYmluZyB0aGUgZGVidWcgc3ltYm9scyBlbWl0dGVkCglieSB0aGUgSFAgQyBjb21waWxlcnMuCgpGcmkgTm92IDExIDE1OjQ4OjM3IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgdS5jLnNpemUgZnJvbSAyNAoJdG8gMjYgYml0cywgYW5kIGNoYW5nZSB1LmMuYWxpZ25tZW50X3Bvd2VyIGZyb20gOCB0byA2IGJpdHMuICA2CgliaXQgaW4gdGhlIGFsaWdubWVudCBwb3dlciBpcyBlbm91Z2ggZm9yIGEgNjQgYml0IGFkZHJlc3Mgc3BhY2UuCgpNb24gT2N0IDMxIDEzOjAyOjUxIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX21hbmdsZV9vcG5hbWUpOiBEZWNsYXJlLgoKVHVlIE9jdCAyNSAxMTozODowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBGaXggY29tbWVudHMgZm9yCgltdWx0aXBsZV9jb21tb24gZmllbGQuCgpTdW4gU2VwIDA0IDE3OjU4OjEwIDE5OTQgIFJpY2hhcmQgRWFybnNoYXcgKHJ3ZUBwZWdhc3VzLmVzcHJpdC5lYy5vcmcpCgoJKiBkaXMtYXNtLmg6IEFkZCBzdXBwb3J0IGZvciB0aGUgQVJNLgoKV2VkIEF1ZyAxMCAxMjo1MTo0MSAxOTk0ICBEb3VnIEV2YW5zICAoZGplQGNhbnVjay5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5LmggKHN0cnNpZ25hbCk6IERvY3VtZW50IGl0cyBleGlzdGVuY2UgZXZlbiBpZiB3ZQoJY2FuJ3QgZGVjbGFyZSBpdC4KClR1ZSBBdWcgIDIgMTQ6NDA6MDMgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IFJlbW92ZSB1X2ludDE2LCB1X2ludDMyLCBhbmQgb3duZXJfaWQgdHlwZWRlZnMgYW5kCglleHBhbmQgdGhlaXIgdXNlcy4gIFRob3NlIG5hbWVzIGNvbmZsaWN0IHdpdGggTWFjaCBoZWFkZXJzLgoKRnJpIEp1bCAyMiAxNDoxNzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIHUuYy5zaXplIGludG8gYQoJYml0ZmllbGQuICBBZGQgZmllbGQgdS5jLmFsaWdubWVudF9wb3dlci4KClN1biBKdWwgMTAgMDA6MjY6MzkgMTk5NCAgSWFuIERhbGwgIChkYWxsQGhmcmQuZHN0by5nb3YuYXUpCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9pbnNuX25zMzJrIGRlY2xhcmF0aW9uLgoKTW9uIEp1biAyMCAxNzoxMzoyOSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2hhc2hfdGFibGUpOiBNYWtlIGNyZWF0b3IgYSBjb25zdCBwb2ludGVyLgoKU2F0IEp1biAxOCAxNjowOTozMiAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBEZWNsYXJlLgoKVGh1IEp1biAxNiAxNToxOTowMyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBzaGFyZWQuCgpNb24gSnVuICA2IDE0OjM5OjQ0IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBSZW1vdmUgd3JpdHRlbiBmaWVsZDoKCW5vdCBuZWVkZWQgZm9yIGFsbCBiYWNrZW5kcy4KClRodSBBcHIgMjggMTk6MDY6NTAgMTk5NCAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN1am8uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVyKTogRGVjbGFyZS4KCkZyaSBBcHIgIDEgMDA6Mzg6MTcgMTk5NCAgSmltIFdpbHNvbiAgKHdpbHNvbkBtb2xlLmdudS5haS5taXQuZWR1KQoKCSogb2JzdGFjay5oOiBEZWxldGUgdXNlIG9mIElOX0dDQyB0byBjb250cm9sIHdoZXRoZXIKCXN0ZGRlZi5oIG9yIGdzdGRkZWYuaCBpcyBpbmNsdWRlZC4KClR1ZSBNYXIgMjIgMTM6MDY6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUpOiBBZGQgYmZkX2RhdGFfbGlua19vcmRlci4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIpOiBBZGQgZGF0YSBmaWVsZCB0byB1bmlvbi4KCk1vbiBNYXIgMjEgMTg6NDU6MjYgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIGJpdHNpemUgYXJndW1lbnQKCXRvIGFkZF90b19zZXQgdG8gcmVsb2MuICBSZW1vdmUgYml0c2l6ZSBhcmd1bWVudCBmcm9tIGNvbnN0cnVjdG9yLgoJQ29tbWVudCB0aGF0IHJlbG9jX292ZXJmbG93LCByZWxvY19kYW5nZXJvdXMgYW5kIHVuYXR0YWNoZWRfcmVsb2MKCW11c3QgaGFuZGxlIE5VTEwgcG9pbnRlcnMgZm9yIHJlbG9jIGxvY2F0aW9uLgoJKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyIGFuZAoJYmZkX3N5bWJvbF9yZWxvY19saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCByZWxvYyBmaWVsZCB0byB1bmlvbi4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXJfcmVsb2MpOiBEZWZpbmUuCgpNb24gTWFyIDE0IDEyOjI3OjUwIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogUmVtb3ZlZDsgbm8gbG9uZ2VyIHVzZWQuCgpUdWUgTWFyICAxIDE4OjEwOjQ5IDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IG9zOTAwMCB0YXJnZXQgc3BlY2lmaWMgaGVhZGVyIGZpbGUsIHRoZSBoZWFkZXIgb2YgdGhlCglvYmplY3QgZmlsZSBpcyB1c2VkIG5vdy4KClN1biBGZWIgMjcgMjE6NTI6MjYgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGRlbmViLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5oOiBOZXcgZmlsZSwgaW50ZW5kZWQgdG8gcmVwbGFjZSBpZWVlLWZsb2F0LmguCgpTdW4gRmViIDIwIDE3OjE1OjQyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AbGlzYS5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoQU5TSV9QUk9UT1RZUEVTKTogRGVmaW5lIGlmIHVzaW5nIEFOU0kgcHJvdG90eXBlcy4KCldlZCBGZWIgMTYgMDE6MDc6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5Lmg6IERvbid0IGRlY2xhcmUgc3Ryc2lnbmFsLCB0byBhdm9pZCBjb25mbGljdHMgd2l0aAoJU29sYXJpcyBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoKU2F0IEZlYiAxMiAyMjoxMTozMiAxOTk0ICBKZWZmcmV5IEEuIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IFVzZSBfX3ZvbGF0aWxlX18gdG8gYXZvaWQgbG9zaW5nIGlmCgljb21waWxpbmcgd2l0aCBnY2MgLXRyYWRpdGlvbmFsLgoKVGh1IEZlYiAxMCAxNDowNTo0MSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogTmV3IGZpbGUuICBEZWNsYXJlcyBmdW5jdGlvbnMgcHJvdmlkZWQgYnkKCWxpYmliZXJ0eS4KClR1ZSBGZWIgIDggMDU6MTk6NTIgMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCUhhbmRsZSBvYnN0YWNrX2NodW5rX2FsbG9jIHJldHVybmluZyBOVUxMLiAgVGhpcyBhbGxvd3MKCW9ic3RhY2tzIHRvIGJlIHVzZWQgYnkgbGlicmFyaWVzLCB3aXRob3V0IGZvcmNpbmcgdGhlbQoJdG8gY2FsbCBleGl0IG9yIGxvbmdqbXAuCgkqIG9ic3RhY2suaCAoc3RydWN0IG9ic3RhY2spOiBBZGQgYWxsb2NfZmFpbGVkIGZsYWcuCglfb2JzdGFja19iZWdpbiwgX29ic3RhY2tfYmVnaW5fMSk6IERlY2xhcmUgdG8gcmV0dXJuIGludCwgbm90IHZvaWQuCgkob2JzdGFja19maW5pc2gpOiBJZiBhbGxvY19mYWlsZWQsIHJldHVybiBOVUxMLgoJKG9ic3RhY2tfYmFzZSwgb2JzdGFja19uZXh0X2ZyZWUsIG9ianN0YWNrX29iamVjdF9zaXplKToKCUlmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIDAuCgkob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwLCBvYnN0YWNrXzFncm93LCBvYnN0YWNrX3B0cl9ncm93LAoJb2JzdGFja19pbnRfZ3Jvdywgb2JzdGFja19ibGFuayk6IElmIGFsbG9jX2ZhaWxlZCwgZG8gbm90aGluZyB0aGF0Cgljb3VsZCBjb3JydXB0IHRoZSBvYnN0YWNrLgoKTW9uIEphbiAyNCAxNTowNjowNSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgbmFtZSwgcmVsb2NfbmFtZSBhbmQKCWFkZGVuZCBhcmdtZW50cyB0byByZWxvY19vdmVyZmxvdyBjYWxsYmFjay4KCkZyaSBKYW4gMjEgMTk6MTM6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2JpZ19wb3dlcnBjLCBwcmludF9pbnNuX2xpdHRsZV9wb3dlcnBjLAoJcHJpbnRfaW5zbl9yczYwMDApOiBEZWNsYXJlLgoKVGh1IEphbiAgNiAxNDoxNTo1NSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgYml0c2l6ZSBhcmd1bWVudCB0bwoJYWRkX3RvX3NldCBmaWVsZC4gIEFkZCBuZXcgY2FsbGJhY2sgbmFtZWQgY29uc3RydWN0b3IuCgpUaHUgRGVjIDMwIDEwOjQ0OjA2IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AcnRsLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmg6IE5ldyBmaWxlIGZvciBuZXcgQkZEIGxpbmtlciBiYWNrZW5kIHJvdXRpbmVzLgoKTW9uIE5vdiAyOSAxMDo0Mzo1NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGVudW0gZGlzX2luc25fdHl1cGUpOiBSZW1vdmUgbm9uLUFOU0kgdHJhaWxpbmcgY29tbWEuCgpTYXQgT2N0ICAyIDIwOjQyOjI2IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBNb3ZlIGNvbW1lbnQgdG8gcmlnaHQgcGxhY2UuCgpNb24gQXVnICA5IDE5OjAzOjM1IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAob2JzdGFja19jaHVua2Z1biwgb2JzdGFja19mcmVlZnVuKTogQWRkIGRlZm5zIGZyb20KCXByZXZpb3VzIHZlcnNpb24uICBBcmUgdGhlc2UgQ3lnbnVzIGxvY2FsIGNoYW5nZXM/CgpGcmkgQXVnICA2IDE3OjA1OjQ3IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oLCBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpNb24gQXVnICAyIDE0OjQ1OjI5IDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgTW92ZSBlbnVtIG91dHNpZGUgb2Ygc3RydWN0IGRlZm4gdG8gYXZvaWQgd2FybmluZ3MuCgpNb24gQXVnICAyIDA4OjQ5OjMwIDE5OTMgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiB3YWl0LmggKFdFWElUU1RBVFVTLCBXU1RPUFNJRyk6IE1hc2sgZG93biB0byA4IGJpdHMuICBUaGlzIGlzCglmb3Igc3lzdGVtcyB0aGF0IHN0b3JlIHN0dWZmIGludG8gdGhlIGhpZ2ggMTYgYml0cyBvZiBhIHdhaXQKCXN0YXR1cy4KCkZyaSBKdWwgMzAgMTg6Mzg6MDIgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBBZGQgbmV3IGZpZWxkcyBpbnNuX2luZm9fdmFsaWQsIGJyYW5jaF9kZWxheV9pbnNucywKCWRhdGFfc2l6ZSwgaW5zbl90eXBlLCB0YXJnZXQsIHRhcmdldDIuICBUaGVzZSBhcmUgdXNlZCB0byByZXR1cm4KCWluZm9ybWF0aW9uIGZyb20gdGhlIGluc3RydWN0aW9uIGRlY29kZXJzIGJhY2sgdG8gdGhlIGNhbGxpbmcKCXByb2dyYW0uICBBZGQgY29tbWVudHMsIG1ha2UgbW9yZSByZWFkYWJsZS4KCk1vbiBKdWwgMTkgMjI6MTQ6MTQgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGRlbmViLmN5Z251cy5jb20pCgoJKiBubG06ICBOZXcgZGlyZWN0b3J5IGNvbnRhaW5pbmcgTkxNL05ldFdhcmUgaW5jbHVkZXMuCgpUaHUgSnVsIDE1IDEyOjEwOjA0IDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBjYW1icmlkZ2UuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQgYXBwbGljYXRpb25fZGF0YS4KClRodSBKdWwgMTUgMTI6NDE6MTUgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGRlZCBkZWNsYXJhdGlvbiBvZiBwcmludF9pbnNuX204OGsuCgpGcmkgSnVsICAyIDEwOjMxOjU5IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIG1hY3JvcyBpZiBfX21pcHMgYW5kIF9TWVNUWVBFX1NWUjQgYXJlCglkZWZpbmVkLCBzaW5jZSBSSVNDL09TIGNjIGhhbmRsZXMgQU5TSSBkZWNsYXJhdGlvbnMgaW4gU1ZSNCBtb2RlCglidXQgZG9lcyBub3QgZGVmaW5lIF9fU1REQ19fLgoKU3VuIEp1biAyMCAxODoyNzo1MiAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AcG9zZWlkb24uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogRG9uJ3QgbmVlZCB0byBpbmNsdWRlIGFuc2lkZWNsLmggYW55IG1vcmUuCgpGcmkgSnVuIDE4IDAzOjIyOjEwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogb2FzeXMuaDogIEVsaW1pbmF0ZSAiaW50OF90eXBlIiwgImludDE2X3R5cGUiLCAiaW50MzJfdHlwZSIsIGFuZAoJdGhlaXIgdmFyaWFudHMuICBUaGVzZSBjaGFuZ2VzIGFyZSBjb29yZGluYXRlZCB3aXRoIGNvcnJlc3BvbmRpbmcKCWNoYW5nZXMgaW4gLi4vYmZkL29hc3lzLmMuCgpXZWQgSnVuIDE2IDEwOjQzOjA4IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBOb3RlIHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZC4KClR1ZSBKdW4gIDggMTI6MTY6MDMgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAcGh5ZGVhdXguY3lnbnVzLmNvbSkKCgkgU3VwcG9ydCBmb3IgSDgvMzAwLUgKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwLCBwcmludF9pbnNuX2g4MzAwaCk6IERlY2xhcmUgaXQuCgpUdWUgSnVuICAxIDA3OjM1OjAzIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBrci1wYy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoY29uc3QpOiBEb24ndCBkZWZpbmUgaXQgaWYgaXQncyBhbHJlYWR5IGRlZmluZWQuCgpUaHUgTWF5IDI3IDE4OjE5OjUxIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBjYW1icmlkZ2UuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9ocHBhKTogRGVjbGFyZSBpdC4KCgkqIGJmZC5oOiBNb3ZlZCB0byBiZmQgZGlyZWN0b3J5LiAgU21hbGwgc3R1YiBoZXJlIGluY2x1ZGVzIGl0Cgl3aXRob3V0IHJlcXVpcmluZyAiLUkuLi9iZmQiLgoKVGh1IEFwciAyOSAxMjowNjoxMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggQlNGX0ZVTkNUSU9OLgoKTW9uIEFwciAyNiAxODoxNTo1MCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBkaXMtYXNtLmg6IFVwZGF0ZWQgd2l0aCBIaXRhY2hpIFNILgoKRnJpIEFwciAyMyAxODo0MTozOCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggYWxwaGEgY2hhbmdlcy4KCSogZGlzLWFzbS5oOiBBZGRlZCBhbHBoYS4KCkZyaSBBcHIgMTYgMTc6MzU6MzAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBzaWduZWQgYmZkXypnZXRfKi4KClRodSBBcHIgMTUgMDk6MjQ6MjEgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgZmlsZV90cnVuY2F0ZWQgZXJyb3IuCgpUaHUgQXByICA4IDEwOjUzOjQ3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IElmIG5vIEFOU0ksIGRlZmluZSBjb25zdCB0byBiZSBlbXB0eS4KClRodSBBcHIgIDEgMDk6MDA6MTAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IERlY2xhcmUgYTI5ayBhbmQgaTk2MCBwcmludF9pbnNuXyouCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9hZGRyZXNzX2Z1bmMgYW5kIHJlbGF0ZWQgc3R1ZmYuCgoJKiBkaXMtYXNtLmggKGRpc19hc21fcmVhZF9tZW1vcnkpOiBGaXggcHJvdG90eXBlLgoKV2VkIE1hciAzMSAxNzo0MDoxNiAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fc3BhcmMuCgpXZWQgTWFyIDMxIDE3OjUxOjQyIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZvciBCRkRfUkVMT0NfTUlQU19HUFJFTCBhbmQgYmZkX1tnc11ldF9ncF9zaXplCglwcm90b3R5cGVzLgoKV2VkIE1hciAzMSAxNjozNToxMiAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBGaXggdHlwbyBpbiBwcm90b3R5cGUgb2YKCWRpc19hc21fbWVtb3J5X2Vycm9yKCkuCgpUdWUgTWFyIDMwIDE5OjA5OjIzIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXJfaW5mbyk6IEFkZCByZWFkX21lbW9yeV9mdW5jLAoJbWVtb3J5X2Vycm9yX2Z1bmMsIGJ1ZmZlciwgYW5kIGxlbmd0aC4KCSh7R0RCXyx9SU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IHRoZW0uCglwcmludF9pbnNuXyo6IFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgpUdWUgTWFyIDMwIDE0OjQ4OjU1IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbG1hIGZpZWxkIG9mIHNlY3Rpb24uCgpUdWUgTWFyIDMwIDEyOjIyOjU1IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgdmVyc2lvbnMgb24gQUlYIHJlZ2FyZGxlc3Mgb2YgX19TVERDX18uCgpGcmkgTWFyIDE5IDE0OjQ5OjQ5IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGQgaDg1MDAuCgpUaHUgTWFyIDE4IDEzOjQ5OjA5IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogIE1vdmVkIGZyb20gLi4vZ2RiLgoJKiBkaXMtYXNtLmg6ICBOZXcgZmlsZS4gIEludGVyZmFjZSB0byBkaXMtYXNzZW1ibGVyLgoKVGh1IE1hciAxMSAxMDo1Mjo1NyAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKERNR0xfTk9fT1BUUyk6ICBBZGQgZGVmaW5lIChzZXQgdG8gMCkgdG8gdXNlCglpbiBwbGFjZSBvZiBiYXJlIDAsIGZvciByZWFkYWJpbGl0eSByZWFzb25zLgoKVHVlIE1hciAgMiAxNzo1MDoxMSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIGNmcm9udCB3aXRoIEFSTS4KClR1ZSBGZWIgMjMgMTI6MjE6MTQgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbmV3IGVsZW1lbnRzIGluIEpVTVBfVEFCTEUuCgpUdWUgRmViIDE2IDAwOjUxOjMwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgZm9yIEJGRF9WRVJTSU9OIDIuMS4KClR1ZSBKYW4gMjYgMTE6NDk6MjAgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgU0VDX0lTX0NPTU1PTiBmbGFnLgoKVHVlIEphbiAxOSAxMjoyNToxMiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBiZmRfYXN5bWJvbF92YWx1ZSBidWcgZml4LgoKRnJpIEphbiAgOCAxNjozNzoxOCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIHRvIGluY2x1ZGUgRUNPRkYgdGRhdGEgYW5kIHRhcmdldF9mbGF2b3VyLgoKU3VuIERlYyAyNyAxNzo1MjozMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgQWRkIGRlY2xhcmF0aW9uIGZvciBiZmRfZ2V0X3NpemUoKS4KClR1ZSBEZWMgMjIgMjI6NDI6NDYgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUHJvdGVjdCBmaWxlIGZyb20gbXVsdGlwbGUgaW5jbHVzaW9ucyB3aXRoCgkjaWYgIWRlZmluZWQoREVNQU5HTEVfSCkuLi4jZGVmaW5lIERFTUFOR0xFX0guLi4jZW5kaWYuCgpNb24gRGVjIDIxIDIxOjI1OjUwIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgaHBwYV9jb3JlX3N0cnVjdCBmcm9tIGJmZC5jLgoKVGh1IERlYyAxNyAwMDo0MjozNSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIGdldCB0ZWtoZXggdGRhdGEgbmFtZSBjaGFuZ2UgZnJvbSBiZmQuCgpNb24gTm92ICA5IDIzOjU1OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIFVwZGF0ZSBjb21tZW50cyB0byBkaXNjb3VyYWdlIHVzZSBvZiBFWEZVTi4KClRodSBOb3YgIDUgMTY6MzU6NDQgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBicmluZyBpbiBTRUNfU0hBUkVEX0xJQlJBUlkuCgpUaHUgTm92ICA1IDAzOjIxOjMyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gbWF0Y2ggRVhGVU4sIGJmZF9zZWNsZXRfc3RydWN0LCBhbmQgU0RFRgoJY2xlYW51cHMgaW4gYmZkLgoKV2VkIE5vdiAgNCAwNzoyODowNSAxOTkyICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3lnbnVzLmNvbSkKCgkqIGJvdXQuaCAoTl9DQUxMTkFNRSwgTl9CQUxOQU1FKTogRGVmaW5lIGFzIGNoYXItdHlwZSB2YWx1ZXMsIHNvCgl3aWRlbmluZyB3b3JrcyBjb25zaXN0ZW50bHkuCgpGcmkgT2N0IDE2IDAzOjE3OjA4IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6ICBVcGRhdGUgdG8gUmV2aXNlZCBTdGFuZGFyZCBGU0YgVmVyc2lvbi4KClRodSBPY3QgMTUgMjE6NDM6MjIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHNlbmRhaS5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmggKHN0cnVjdCBvcHRpb24pOiB1c2UgdGhlIHByb3ZpZGVkIGVudW0gZm9yIGhhc19hcmcuCgoJKiBkZW1hbmdsZS5oIChBVVRPX0RFTUFOR0xJTkcsIEdOVV9ERU1BTkdMSU5HLAoJICBMVUNJRF9ERU1BTkdMSU5HKTogdWx0cml4IGNvbXBpbGVycyByZXF1aXJlIGVudW1zIHRvIGJlCgkgIGVudW1zIGFuZCBpbnRzIHRvIGJlIGludHMgYW5kIGNhc3RzIHdoZXJlIHRoZXkgbWVldC4gIGNhc3Qgc29tZQoJICBlbnVtcyBpbnRvIGludHMuCgpUaHUgT2N0IDE1IDA0OjM1OjUxIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgYWZ0ZXIgY29tbWVudCBjaGFuZ2VzLgoKVGh1IE9jdCAgOCAwOTowMzowMiAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChiZmRfZ2V0X3N5bWJvbF9sZWFkaW5nX2NoYXIpOiBuZXcgbWFjcm8gZm9yIGdldHRpbmcgaW4geHZlYwoKVGh1IFNlcCAgMyAwOToxMDo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggKHN0cnVjdCByZWxvY19ob3d0b19zdHJ1Y3QpOiAgc2l6ZSBuZWVkcyB0byBiZSBzaWduZWQgaWYKCWl0J3MgZ29pbmcgdG8gaG9sZCBuZWdhdGl2ZSB2YWx1ZXMuCgpTdW4gQXVnIDMwIDE3OjUwOjI3IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBOZXcgZmlsZSwgbW92ZWQgZnJvbSAuLi9nZGIuICBNYWRlIGluZGVwZW5kZW50CglvZiBnZGIuICBBbGxvdyBkZW1hbmdsaW5nIHN0eWxlIG9wdGlvbiB0byBiZSBwYXNzZWQgYXMgYQoJcGFyYW1ldGVyIHRvIGNwbHVzX2RlbWFuZ2xlKCksIGJ1dCB1c2luZyB0aGUKCWN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSBnbG9iYWwgYXMgdGhlIGRlZmF1bHQuCgpTYXQgQXVnIDI5IDEwOjA3OjU1IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgTWVyZ2UgY29tbWVudCBjaGFuZ2UgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IEF1ZyAyNyAxMjo1OToyOSAxOTkyICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IGFkZCB3ZTMyawoKVHVlIEF1ZyAyNSAxNTowNzo0NyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgWjgwMDAgc3R1ZmYKCk1vbiBBdWcgMTcgMDk6MDE6MjMgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogUmVnZW5lcmF0ZWQgYWZ0ZXIgcGFnZS9zZWdtZW50IHNpemUgY2hhbmdlcy4KClNhdCBBdWcgIDEgMTM6NDY6MzEgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IE1lcmdlIGNoYW5nZXMgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKTW9uIEp1bCAyMCAyMTowNjoyMyAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAoYXJlYV9pZCwgZmxhZ3MpOiAgUmVtb3ZlLCByZXBsYWNlIHdpdGggZXh0cmFfYXJnLAoJdXNlX2V4dHJhX2FyZywgYW5kIG1heWJlX2VtcHR5X29iamVjdC4KCSogb2JzdGFjay5oIChPQlNUQUNLX01BWUJFX0VNUFRZX09CSkVDVCwgT0JTVEFDS19NTUFMTE9DX0xJS0UpOgoJUmVtb3ZlLCByZXBsYWNlZCBieSBtYXliZV9lbXB0eV9vYmplY3QgYW5kIHVzZV9leHRyYV9hcmcgYml0ZmllbGRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZnVsbF9iZWdpbiwgX29ic3RhY2tfYmVnaW4pOiAgUmVtb3ZlIGFyZWFfaWQKCWFuZCBmbGFncyBhcmd1bWVudHMuCgkqIG9ic3RhY2suaCAob2JzdGFja19hbGxvY19hcmcpOiAgTmV3IG1hY3JvIHRvIHNldCBleHRyYV9hcmcuCgpUaHUgSnVsIDE2IDA4OjEyOjQ0IDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IG5ldyBhZnRlciBhZGRpbmcgQkZEX0lTX1JFTEFYQUJMRQoKU2F0IEp1bCAgNCAwMzoyMjoyMyAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgUmVnZW4gYWZ0ZXIgYWRkaW5nIEJTRl9GSUxFLgoKTW9uIEp1biAyOSAxNDoxODozNiAxOTkyICBGcmVkIEZpc2ggIChmbmYgYXQgc3VuZmlzaCkKCgkqIG9ic3RhY2suaDogIENvbnZlcnQgYmNvcHkoKSB1c2UgdG8gbWVtY3B5KCksIHdoaWNoIGlzIG1vcmUKCXBvcnRhYmxlLCBtb3JlIHN0YW5kYXJkLCBhbmQgY2FuIHRha2UgYWR2YW50YWdlIG9mIGdjYydzIGJ1aWx0aW4KCWZ1bmN0aW9ucyBmb3IgaW5jcmVhc2VkIHBlcmZvcm1hbmNlLgoKVGh1IEp1biAyNSAwNDo0NjowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKFBBUkFNUyk6ICBJbmNvcnBvcmF0ZSB0aGlzIG1hY3JvIGZyb20gZ2RiJ3MgZGVmcy5oLgoJSXQncyBhIGNsZWFuZXIgd2F5IHRvIGZvcndhcmQtZGVjbGFyZSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKRnJpIEp1biAxOSAxNTo0NjozMiAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBIUFBBIG1lcmdlLgoKVHVlIEp1biAxNiAyMTozMDo1NiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBncmF0dWl0b3VzIHdoaXRlIHNwYWNlIGNoYW5nZXMgbWVyZ2VkIGZyb20gb3RoZXIgcHJlcAoJICByZWxlYXNlcy4KClRodSBKdW4gMTEgMDE6MTA6NTUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuJ2QgZnJvbSBiZmQuYyBhZnRlciByZW1vdmluZyBlbGZfY29yZV90ZGF0YV9zdHJ1Y3QuCgpNb24gTWF5IDE4IDE3OjI5OjAzIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gbWFrZS0zLjYyLjExLgoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gZ3JlcC0xLjYgKGFscGhhKS4KCkZyaSBNYXkgIDggMTQ6NTM6MzIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogbWVyZ2VkIGNoYW5nZXMgZnJvbSBiaXNvbi0xLjE4LgoKU2F0IE1hciAxNCAxNzoyNToyMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCAiYXJlYV9pZCIgYW5kICJmbGFncyIgbWVtYmVycyB0byBvYnN0YWNrCglzdHJ1Y3R1cmUuICBBZGQgb2JzdGFja19jaHVua2Z1bigpIGFuZCBvYnN0YWNrX2ZyZWVmdW4oKSB0bwoJc2V0IGZ1bmN0aW9ucyBleHBsaWNpdGx5LiAgQ29udmVydCBtYXliZV9lbXB0eV9vYmplY3QgdG8KCWEgYml0IGluICJmbGFncyIuCgpUaHUgRmViIDI3IDIyOjAxOjAyIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXSUZTVE9QUEVEKTogIEFkZCBJQk0gcnM2MDAwLXNwZWNpZmljIHZlcnNpb24uCgpGcmkgRmViIDIxIDIwOjQ5OjIwIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQWRkIG9ic3RhY2tfZnVsbF9iZWdpbi4KCSogYmZkLmgsIG9ic3RhY2suaDogIFByb3RvbGludC4KClRodSBKYW4gMzAgMDE6MTg6NDIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlbW92ZSBjb21tYSBmcm9tIGVudW0gZGVjbGFyYXRpb24uCgpNb24gSmFuIDI3IDIyOjAxOjEzIDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCA6IG5ldyB0YXJnZXQgZW50ciwgYmZkX3JlbGF4X3NlY3Rpb24KCldlZCBEZWMgMTggMTc6MTk6NDQgMTk5MSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBpZWVlLmg6ICBBTlNJZnkgZW51bXMuCgpUaHUgRGVjIDEyIDIwOjU5OjU2IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogZm9wZW4tc2FtZS5oLCBmb3Blbi1iaW4uaDogIE5ldyBmaWxlcyBmb3IgY29uZmlndXJpbmcKCXdoZXRoZXIgZm9wZW4gZGlzdGluZ3Vpc2hlcyBiaW5hcnkgZmlsZXMgb3Igbm90LiAgRm9yIHVzZQoJYnkgaG9zdC1kZXBlbmRlbnQgY29uZmlnIGZpbGVzLgoKU2F0IE5vdiAzMCAyMDo0Njo0MyAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBjaGFuZ2UgdGhlIGRvY3VtZW50YXRpb24gZm9ybWF0LgoKCSogY3JlYXRlZCBjb2ZmLCBlbGYgYW5kIG9wY29kZSBhbmQgYW91dCBkaXJlY3Rvcmllcy4gTW92ZWQ6CgoJYW91dDY0LmgJPT0+IGFvdXQvYW91dDY0LmgKCWFyLmgJCT09PiBhb3V0L2FyLmgKCWEub3V0LmVuY2FwLmgJPT0+IGFvdXQvZW5jYXAuaAoJYS5vdXQuaG9zdC5oCT09PiBhb3V0L2hvc3QuaAoJYS5vdXQuaHAuaAk9PT4gYW91dC9ocC5oCglhLm91dC5zdW40LmgJPT0+IGFvdXQvc3VuNC5oCglyYW5saWIuaAk9PT4gYW91dC9yYW5saWIuaAoJcmVsb2MuaAkJPT0+IGFvdXQvcmVsb2MuaAoJc3RhYi5kZWYJPT0+IGFvdXQvc3RhYi5kZWYKCXN0YWIuZ251LmgJPT0+IGFvdXQvc3RhYl9nbnUuaAoKCWNvZmYtYTI5ay5oCT09PiBjb2ZmL2EyOWsuaAoJY29mZi1oODMwMC5oCT09PiBjb2ZmL2g4MzAwLmgKCWNvZmYtaTM4Ni5oCT09PiBjb2ZmL2kzODYuaAoJY29mZi1pOTYwLmgJPT0+IGNvZmYvaTk2MC5oCglpbnRlcm5hbGNvZmYuaAk9PT4gY29mZi9pbnRlcm5hbC5oCgljb2ZmLW02OGsuaAk9PT4gY29mZi9tNjhrLmgKCWNvZmYtbTg4ay5oCT09PiBjb2ZmL204OGsuaAoJY29mZi1taXBzLmgJPT0+IGNvZmYvbWlwcy5oCgljb2ZmLXJzNjAwMC5oCT09PiBjb2ZmL3JzNjAwMC5oCgoJZWxmLWNvbW1vbi5oCT09PiBlbGYvY29tbW9uLmgKCWR3YXJmLmgJCT09PiBlbGYvZHdhcmYuaAoJZWxmLWV4dGVybmFsLmgJPT0+IGVsZi9leHRlcm5hbC5oCgllbGYtaW50ZXJuYWwuaCAgPT0+IGVsZi9pbnRlcm5hbC5oCgoJYTI5ay1vcGNvZGUuaAk9PT4gb3Bjb2RlL2EyOWsuaAoJYXJtLW9wY29kZS5oCT09PiBvcGNvZGUvYXJtLmgKCWg4MzAwLW9wY29kZS5oCT09PiBvcGNvZGUvaDgzMDAuaAoJaTM4Ni1vcGNvZGUuaAk9PT4gb3Bjb2RlL2kzODYuaAoJaTg2MC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2k4NjAuaAoJaTk2MC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2k5NjAuaAoJbTY4ay1vcGNvZGUuaAk9PT4gb3Bjb2RlL202OGsuaAoJbTg4ay1vcGNvZGUuaAk9PT4gb3Bjb2RlL204OGsuaAoJbWlwcy1vcGNvZGUuaAk9PT4gb3Bjb2RlL21pcHMuaAoJbnAxLW9wY29kZS5oCT09PiBvcGNvZGUvbnAxLmgKCW5zMzJrLW9wY29kZS5oCT09PiBvcGNvZGUvbnMzMmsuaAoJcG4tb3Bjb2RlLmgJPT0+IG9wY29kZS9wbi5oCglweXItb3Bjb2RlLmgJPT0+IG9wY29kZS9weXIuaAoJc3BhcmMtb3Bjb2RlLmgJPT0+IG9wY29kZS9zcGFyYy5oCgl0YWhvZS1vcGNvZGUuaAk9PT4gb3Bjb2RlL3RhaG9lLmgKCXZheC1vcGNvZGUuaAk9PT4gb3Bjb2RlL3ZheC5oCgoKCldlZCBOb3YgMjcgMTA6Mzg6MzEgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgcnRsLmN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogKGludGVybmFsX3NjbmhkcikgdG9vayBvdXQgI2RlZiBkZXBlbmRlbmN5LCBub3cKCXNfbnJlbG9jIGFuZCBzX25sbm5vIGFyZSBhbHdheXMgbG9uZy4gCShpbnRlcm5hbF9yZWxvYyk6IGFsbHdheXMKCWhhcyBhbiBvZmZzZXQgZmllbGQgbm93LgoKRnJpIE5vdiAyMiAwODoxMjo1OCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGNvZmYtcnM2MDAwLmg6ICBMaW50OyB1c2UgdW5zaWduZWQgY2hhcnMgZm9yIGV4dGVybmFsIGZpZWxkcy4KCSogaW50ZXJuYWxjb2ZmLmg6ICBMaW50OyBjYXN0IHN0b3JhZ2UgY2xhc3NlcyB0byBzaWduZWQgY2hhci4KClRodSBOb3YgMjEgMjE6MDE6MDUgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzdGFiLmRlZjogUmVtb3ZlIHRoZSBHTlUgZXh0ZW5kZWQgdHlwZSBjb2RlcyAoZS5nLiBOX1NFVFQpLgoJKiBhb3V0NjQuaDogIFRoZSBoZXVyaXN0aWMgZm9yIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4KCXN1bm9zLXN0eWxlIGFuZCBic2Qtc3R5bGUgWk1BR0lDIGZpbGVzICh3cnQuIHdoZXJlIHRoZQoJdGV4dCBzZWdtZW50IHN0YXJ0cykgaXMgbW92ZWQgaW50byAodGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBvZikKCXRoZSBtYWNybyBOX0hFQURFUl9JTl9URVhULiAgVGhpcyBkZWZpbml0aW9uIGlzIG9ubHkgdXNlZAoJaWYgbm8gb3RoZXIgZGVmaW5pdGlvbiBpcyB1c2VkIC0gZS5nLiBiZmQvbmV3c29zMy5jIGRlZmluZXMKCU5fSEVBREVSX0lOX1RFWFQoeCkgdG8gYmUgYWx3YXlzIDAgKGFzIGJlZm9yZSkuCgpUaHUgTm92IDIxIDExOjUzOjAzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW91dDY0LmggKE5fVFhUQUREUiwgTl9UWFRPRkYsIE5fVFhUU0laRSk6ICBOZXcgZGVmaW5pdGlvbnMKCXRoYXQgc2hvdWxkIGhhbmRsZSBhbGwgdXNlcy4gIExPR0lDQUxfIHZlcnNpb25zIGRlbGV0ZWQuCglFbGltaW5hdGUgTl9IRUFERVJfSU5fVEVYVCwgdXNpbmcgYV9lbnRyeSB0byBkZXRlcm1pbmUgd2hpY2gKCWtpbmQgb2Ygem1hZ2ljIGEub3V0IGZpbGUgd2UgYXJlIGxvb2tpbmcgYXQuCgkqIGNvZmYtcnM2MDAwLmg6ICBUeXBvLgoKVHVlIE5vdiAxOSAxODo0MzozNyAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkoTm90ZTogIFRoaXMgaXMgYSByZXZpc2VkIGVudHJ5LCBhcyB3YXMgYW91dDY0LmguKQoJKiBhb3V0NjQuaDogIFNvbWUgY2xlYW51cHMgb2YgTl9UWFRBRERSIGFuZCBOX1RYVE9GRjoKCVdpbGwgbm93IHdvcmsgZm9yIGJvdGggb2xkLSBhbmQgbmV3LXN0eWxlIFpNQUdJQyBmaWxlcywKCWRlcGVuZGluZyBvbiBOX0hFQURFUl9JTl9URVhUIG1hY3JvLgoJQWRkIExPR0lDQUxfVFhUQUREUiwgTE9JQ0FMX1RYVE9GRiBhbmQgTE9HSUNBTF9UWFRTSVpFCgl0aGF0IGRvbid0IGNvdW50IHRoZSBleGVjIGhlYWRlciBhcyBwYXJ0CglvZiB0aGUgdGV4dCBzZWdtZW50LCB0byBiZSBjb25zaXN0ZW50IHdpdGggYmZkLgoJKiBhLm91dC5zdW40Lmg6ICBTaW1wbGlmaWVkL2ZpeGVkIGZvciBwcmV2aW91cyBjaGFuZ2UuCgpNb24gTm92IDE4IDAwOjAyOjA2IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZHdhcmYuaDogIFVwZGF0ZSB0byBEV0FSRiBkcmFmdCA1IHZlcnNpb24gZnJvbSBnY2MyLgoKVGh1IE5vdiAxNCAxOTo0NDo1OSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN0YWIuZGVmOiAgQWRkZWQgZGVmcyBmb3IgZXh0ZW5kZWQgR05VIHN5bWJvbCB0eXBlcywKCXN1Y2ggYXMgTl9TRVRULiAgVGhlc2UgYXJlIG5vcm1hbGx5IGlmZGVmJ2Qgb3V0IChiZWNhdXNlCglvZiBjb25mbGljdHMgd2l0aCBhLm91dC5nbnUuaCksIGJ1dCBhcmUgdXNlZCBieSBiZmJfc3RhYl9uYW1lKCkuCgpUaHUgTm92IDE0IDE5OjE3OjAzIDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZWxmLWNvbW1vbi5oOiAgQWRkIGRlZmluZXMgdG8gc3VwcG9ydCBFTEYgc3ltYm9sIHRhYmxlIGNvZGUuCgpNb24gTm92IDExIDE5OjAxOjA2IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZWxmLWludGVybmFsLmgsIGVsZi1leHRlcm5hbC5oLCBlbGYtY29tbW9uLmg6ICBBZGQgc3VwcG9ydCBmb3IKCW5vdGUgc2VjdGlvbnMsIHdoaWNoIGFyZSB1c2VkIGluIEVMRiBjb3JlIGZpbGVzIHRvIGhvbGQgY29waWVzCglvZiB2YXJpb3VzIC9wcm9jIHN0cnVjdHVyZXMuCgpUaHUgTm92ICA3IDA4OjU4OjI2IDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IGN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogdG9vayBvdXQgdGhlIE04OCBkZXBlbmRlbmN5IGluIHRoZSBsaW5lbm8KCXN0cnVjdC4KCSogY29mZi1tODhrLmg6IGRlZmluZXMgR0VUX0xJTkVOT19MTk5PIGFuZCBQVVRfTElORU5PX0xOTk8gdG8gdXNlCgkzMmJpdCBsaW5ubyBlbnRyaWVzLgoJKiBhMjlrLW9wY29kZS5oOiBmaXhlZCBlbmNvZGluZyBvZiBtdGFjYwoKU3VuIE5vdiAgMyAxMTo1NDoyMiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZyb20gLi4vYmZkL2JmZC1pbi5oIChxLnYpLgoKRnJpIE5vdiAgMSAxMToxMzo1MyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiAgQWRkIHhfY3NlY3QgZGVmaW5lcy4KCkZyaSBPY3QgMjUgMDM6MTg6MjAgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBSZW5hbWUgQ09GRi1yZWxhdGVkIGZpbGVzIGluIGBjb2ZmLUFSQ0guaCcgZm9ybS4KCWNvZmYtYTI5ay5oLCBjb2ZmLWkzODYuaCwgY29mZi1pOTYwLmgsIGNvZmYtbTY4ay5oLCBjb2ZmLW04OGsuaCwKCWNvZmYtbWlwcy5oLCBjb2ZmLXJzNjAwMC5oIHRvIGJlIGV4YWN0LgoKVGh1IE9jdCAyNCAyMjoxMToxMSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCglSUy82MDAwIHN1cHBvcnQsIGJ5IE1ldGluIEcuIE96aXNpaywgTWltaSBQaIH7gfRuZy1UaIHlbyBWgfUsIGFuZAoJSm9obiBHaWxtb3JlLgoKCSogYS5vdXQuZ251Lmg6ICBVcGRhdGUgc2xpZ2h0bHkuCgkqIGJmZC5oOiAgQWRkIG5ldyBlcnJvciBjb2RlLCBmaXggZG9jLCBhZGQgYmZkX2FyY2hfcnM2MDAwLgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCBtb3JlIEZfIGNvZGVzIGZvciBmaWxlaGRyLiAgQWRkCglycy82MDAwLWRlcGVuZGVudCBmaWVsZHMgdG8gYW91dGhkci4gIEFkZCBzdG9yYWdlIGNsYXNzZXMKCXRvIHN5bWVudHMuICBBZGQgNjAwMC1zcGVjaWZpYyBhdXhlbnQuICBBZGQgcl9zaXplIGluIHJlbG9jLgoJKiByczYwMDBjb2ZmLmM6ICBOZXcgZmlsZS4KClRodSBPY3QgMjQgMDQ6MTM6MjAgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBkd2FyZi5oOiBOZXcgZmlsZSBmb3IgZHdhcmYgc3VwcG9ydC4gIENvcGllZCBmcm9tIGdjYzIKCWRpc3RyaWJ1dGlvbi4KCldlZCBPY3QgMTYgMTM6MzE6NDUgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaDogIFJlbW92ZSBQQUdFX1NJWkUgZGVmaW5lczsgdGhleSBhcmUgdGFyZ2V0LWRlcGVuZGVudC4KCUFkZCBOX0ZOX1NFUSBmb3IgTl9GTiBzeW1ib2wgdHlwZSB1c2VkIG9uIFNlcXVlbnQgbWFjaGluZXMuCgkqIHN0YWIuZGVmOiAgSW5jbHVkZSBOX0ZOX1NFUSBpbiB0YWJsZS4KCSogYm91dC5oOiAgRXh0ZXJuYWwgZm9ybWF0cyBvZiBzdHJ1Y3R1cmVzIHVzZSB1bnNpZ25lZCBjaGFycy4KCkZyaSBPY3QgMTEgMTI6NDA6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzdGV2ZSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6dXBncmFkZSBmcm9tIGJmZC5jCgkqIGludGVybmFsY29mZi5oOiBhZGQgbl9uYW1lLCBuX3plcm9lcyBhbmQgbl9vZmZzZXQgbWFjcm9zCgkqIGFtZGNvZmYuaDogRGVmaW5lIE9NQUdJQyBhbmQgQU9VVEhEUlNaLgoKRnJpIE9jdCAxMSAxMDo1ODowNiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIGEub3V0Lmhvc3QuaDogQ2hhbmdlIFNFR01FTlRfU0laRSB0byAweDEwMDAgZm9yIFNvbnkuCgkqIGJmZC5oIChhbGlnbl9wb3dlcik6IEFkZCAoYWN0dWFsbHkgbW92ZSkgY29tbWVudC4KClR1ZSBPY3QgIDggMTU6Mjk6MzIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1ydGJzZC5oOiBEZWZpbmUgTUlTU0lOR19WRlBSSU5UIChmb3IgYmludXRpbHMvYnVjb21tLmMpLgoKU3VuIE9jdCAgNiAxOToyNDozOSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oOiAgTW92ZSBzdHJ1Y3QgaW50ZXJuYWxfZXhlYyB0byAuLi9iZmQvbGliYW91dC5oIHNvCglpdCBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBgYS5vdXQtZmFtaWx5JyBjb2RlLiAgUmVuYW1lCglFWFRFUk5BTF9MSVNUX1NJWkUgdG8gRVhURVJOQUxfTkxJU1RfU0laRS4gIFVzZSBiYXNpYyB0eXBlcwoJZm9yIG5saXN0IG1lbWJlcnMsIGFuZCBtYWtlIHN0cnggaW50ZWdyYWwgcmF0aGVyIHRoYW4gcG9pbnRlci4KCU1vcmUgY29tbWVudGFyeSBvbiBuX3R5cGUgdmFsdWVzLgoJKiBib3V0Lmg6ICBQcm92aWRlIGEgc3RydWN0IGV4dGVybmFsX2V4ZWMgcmF0aGVyIHRoYW4gYW4KCWludGVybmFsX2V4ZWMuCgkqIG02OGtjb2ZmLmg6ICBSZW1vdmUgYHRhZ2VudHJpZXMnIHdoaWNoIHNudWNrIGluIGZyb20gdGhlIGk5NjAKCUNPRkYgcG9ydC4KCkZyaSBPY3QgIDQgMDE6MjU6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBoODMwMC1vcGNvZGUuaDogIFJlbW92ZSBgX2VudW0nIGZyb20gdGhlIHR5cGVkZWYgZm9yIGFuIGVudW0uCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIGJmZCBjaGFuZ2VzLgoKCSogc3lzL2gtaTM4Nm1hY2guaCwgc3lzZGVwLmg6ICBBZGQgMzg2IE1hY2ggaG9zdCBzdXBwb3J0LgoKVHVlIE9jdCAgMSAwNDo1ODo0MiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBlbGYtY29tbW9uLmgsIGVsZi1leHRlcm5hbC5oLCBlbGYtaW50ZXJuYWwuaDoKCUFkZCBwcmVsaW1pbmFyeSBFTEYgc3VwcG9ydCwgc3VmZmljaWVudCBmb3IgR0RCLCBmcm9tIEZyZWQgRmlzaC4KCSogc3lzZGVwLmgsIHN5cy9oLWFtaXguaDogIFN1cHBvcnQgQW1pZ2EgU1ZSNC4KCgkqIHN5cy9oLXZheHVsdC5oOiAgTWFrZSBpdCB3b3JrLiAgKERhdmlkIFRheWxvciA8dGF5bG9yQHRoaW5rLmNvbT4pCgkqIGEub3V0LnZheC5oOiAgUmVtb3ZlIHVudXNlZCBhbmQgY29uZnVzaW5nIGZpbGUuCgpNb24gU2VwIDMwIDEyOjUyOjM1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3lzZGVwLmg6IERlZmluZSBORVdTT1MzX1NZUywgYW5kIHVzZSBpdC4KCkZyaSBTZXAgMjAgMTM6Mzg6MjEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBJdHMgdmFsdWUgKnJlYWxseSBpcyogMHgxRi4KCUZpeCBpdCwgYW5kIGFkZCBjb21tZW50cyB3YXJuaW5nIGFib3V0IG9yLWluZyBOX0VYVCB3aXRoIGl0CglhbmQvb3IgTl9XQVJOSU5HLgoJKiBhb3V0NjQuaCAoTl9GTik6ICBGaXggdmFsdWUsIGFkZCBjb21tZW50cyBhYm91dCBOX0VYVC4KCSogc3RhYi5kZWYgKHRhYmxlIGF0IGVuZCk6ICBVcGRhdGUgdG8gc2hvdyBhbGwgdGhlIHR5cGUKCXZhbHVlcyA8MHgyMCwgaW5jbHVkaW5nIGxvdyBvcmRlciBiaXRzLiAgTW92ZSBOX0ZOIHRvCglpdHMgcmlnaHRmdWwgcGxhY2UuCgpUdWUgU2VwIDE3IDE3OjQxOjM3IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1pcml4My5oOiAgc2dpL2lyaXggc3VwcG9ydC4KClR1ZSBTZXAgMTcgMDc6NTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogc3RhYi5kZWYgKE5fREVGRCk6ICBBZGQgR05VIE1vZHVsYS0yIGRlYnVnIHN0YWIsIGZyb20gQW5kcmV3CglCZWVycy4KClRodSBTZXAgMTIgMTQ6MTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmggKFNZTU5NTEVOLCBGSUxOTUxFTiwgRElNTlVNKTogIERlZmluZSB0aGVzZQoJZm9yIGludGVybmFsY29mZiwgc2VwYXJhdGVseSBmcm9tIHRoZSB2YXJpb3VzIGV4dGVybmFsIGNvZmYncy4KCSogYW1kY29mZi5oLCBiY3M4OGtjb2ZmLmgsIGkzODZjb2ZmLmgsIGludGVsLWNvZmYuaCwgbTY4a2NvZmYuaCwKCW04OGstYmNzLmg6IFByZWZpeCBTWU1OTUxFTiwgRklMTk1MRU4sIGFuZCBESU1OVU0gd2l0aCBFXydzIGZvcgoJdGhlIGV4dGVybmFsIHN0cnVjdCBkZWZpbml0aW9ucy4KCSogZWNvZmYuaDogUmVtb3ZlIHRoZXNlICNkZWZpbmUncywga2x1ZGdlIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzeXMvaC11bHRyYTMuaDogIEFkZCBuZXcgVWx0cmFjb21wdXRlciBob3N0LgoJKiBzeXNkZXAuaDogIEFkZCBVTFRSQTNfU1lNMV9TWVMgYW5kIHVzZSBpdC4KClR1ZSBTZXAgMTAgMTA6MTE6NDYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaTM4NmNvZmYuaCAoTElORVNaKTogIEFsd2F5cyA2LCBub3QgYmFzZWQgb24gc2l6ZW9mKCkuCgkoRml4IGZyb20gUGV0ZXIgU2NoYXVlciA8cGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+LikKCldlZCBTZXAgIDQgMDg6NTg6MzcgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmgsIGFvdXQ2NC5oOiAgQWRkIE5fV0FSTklORy4gIENoYW5nZSBOX0ZOIHRvIDB4MEUsCgl0byBtYXRjaCBTdW5PUyBhbmQgQlNELiAgQWRkIE5fQ09NTSBhcyAweDEyIGZvciBTdW5PUyBzaGFyZWQgbGliCglzdXBwb3J0LgoJKiBzdGFiLmRlZjogIEFkZCBOX0NPTU0gdG8gdGFibGUsIGZpeCBvdmVybGFwIGNvbW1lbnQuCgpUdWUgU2VwICAzIDA2OjI5OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCglNZXJnZSB3aXRoIGxhdGVzdCBGU0YgdmVyc2lvbnMgb2YgdGhlc2UgZmlsZXMuCgoJKiBzdGFiLmdudS5oOiAgQWRkIExBU1RfVU5VU0VEX1NUQUJfQ09ERS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgdG8gR1BMMi4gIE1vdmUgTl9XQVJOSU5HIG91dCwgc2luY2Ugbm90IGEKCWRlYnVnIHN5bWJvbC4gIENoYW5nZSBjb21tZW50cywgYW5kIHJlb3JkZXIgdGFibGUgdG8gbnVtZXJpYwoJb3JkZXIuICBVcGRhdGUgZmluYWwgdGFibGUgY29tbWVudC4KCShOX0RTTElORSwgTl9CU0xJTkUpOiAgUmVudW1iZXIgZnJvbSAweDY2IGFuZCAweDY4LCB0byAweDQ2IGFuZCAweDQ4LgoKCSogb2JzdGFjay5oOiAgR1BMMi4gIE1lcmdlLgoKRnJpIEF1ZyAyMyAwMTo1NDoyMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCwgYS5vdXQuc3VuNC5oOiAgTWFrZSBTRUdNRU5UX1NJWkUgYWJsZSB0byBkZXBlbmQKCW9uIHRoZSBwYXJ0aWN1bGFyIGEub3V0IGJlaW5nIGV4YW1pbmVkLgoJKiBhLm91dC5zdW40Lmg6ICBEZWZpbmUgc2VnbWVudCBzaXplcyBmb3IgU3VuLTMncyBhbmQgU3VuLTQncy4KCSogRklYTUU6ICBhLm91dC5nbnUuaCBpcyBhbG1vc3Qgb2Jzb2xldGUuCgkqIEZJWE1FOiAgYS5vdXQuc3VuNC5oIHNob3VsZCBiZSByZW5hbWVkIGEub3V0LnN1bi5oIG5vdy4KCldlZCBBdWcgMjEgMjA6MzI6MTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogU3RhcnQgYSBDaGFuZ2VMb2cgZm9yIHRoZSBpbmNsdWRlcyBkaXJlY3RvcnkuCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBGaXggdmFsdWUgLS0gd2FzIDE1LCBzaG91bGQgYmUgMHgxRS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgYWxsb2NhdGlvbiB0YWJsZSBpbiBjb21tZW50cyBhdCBlbmQsCgl0byByZWZsZWN0IHJlYWxpdHkgYXMgSSBrbm93IGl0LgoKDApMb2NhbCBWYXJpYWJsZXM6Cm1vZGU6IGNoYW5nZS1sb2cKbGVmdC1tYXJnaW46IDgKZmlsbC1jb2x1bW46IDc0CnZlcnNpb24tY29udHJvbDogbmV2ZXIKRW5kOgo=