MjAwMy0wOS0wMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICAgICAqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IGNvbW1lbnRpbmcgb3V0IHRoZQogICAgICAgIG1hY3JvIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIgc28gdGhhdCBwYWNrYWdlCiAgICAgICAgbWFuYWdlcnMgdGhhdCBkZWZpbmUgaXQgd2l0aCBhZGRpdGlvbm5hbCBjb21waWxhdGlvbiBjb21tYW5kIGxpbmUKICAgICAgICBvcHRpb25zIChlLmcuIHdpdGggLURUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSKSBzdGlsbAogICAgICAgIHdvcmsgY29ycmVjdGx5LgoKICAgICAgICBBbHNvIGFkZGVkIGEgbm90ZSB0byBpbmRpY2F0ZSB0aGF0IFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCiAgICAgICAgZG9lc24ndCB3b3JrIGFzIGFkdmVydGlzZWQgeWV0LgoKMjAwMy0wOC0zMSAgTWFuaXNoIFNpbmdoICA8eW9zaEBnaW1wLm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcmVhZHN0cmVhbSk6IERvbid0IHVzZSBGVF9NRU1fQ09QWSBidXQKCUZUX01FTV9NT1ZFLgoKMjAwMy0wOC0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNPRElOR19TSklTLCBGVF9FTkNPRElOR19HQjIzMTIsCglGVF9FTkNPRElOR19CSUc1LCBGVF9FTkNPRElOR19XQU5TVU5HLCBGVF9FTkNPRElOR19KT0hBQik6IE5ldwoJZW51bWVyYXRpb25zIG9mIEZUX0VuY29kaW5nLiAgVGhlIEZUX0VOQ09ESU5HX01TXyogdmFyaWFudHMgZXhjZXB0CglGVF9FTkNPRElOR19NU19TWU1CT0wgYXJlIG5vdyBkZXByZWNhdGVkLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgkqIGRvY3MvQ0hBTkdFUzogRG9jdW1lbnQgaXQuCgoyMDAzLTA4LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBBY2NlcHQgbG93ZXJjYXNlIGNoYXJhY3RlcnMKCWZvciBzcGFjaW5nLgoKMjAwMy0wOC0yNyAgTWlrZSBGQUJJQU4gIDxtZmFiaWFuQHN1c2UuZGU+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCksIHNyYy9iZGYvYmRmZHJpdnIuYwoJKEJERl9GYWNlX0luaXQpOiBBY2NlcHQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgZm9yIHNsYW50IGFuZCB3ZWlnaHQuCgoyMDAzLTA4LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBEaXNhYmxpbmcgVHJ1ZVR5cGUgYnl0ZWNvZGUKCWludGVycHJldGVyIHVudGlsIHRoZSBVTlBBVEVOVEVEX0hJTlRJTkcgd29ya3MgYXMgYWR2ZXJ0aXNlZC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBVc2UgYHwnIGZvcgoJc2V0dGluZyBgbG9hZF9mbGFncycuCgoJKiBKYW1maWxlOiBBZGRpbmcgdGhlIGByZWZkb2MnIHRhcmdldCB0byB0aGUgSmFtZmlsZSBpbiBvcmRlciB0bwoJYnVpbGQgdGhlIEFQSSBSZWZlcmVuY2UgaW4gYGRvY3MvcmVmZXJlbmNlJyBhdXRvbWF0aWNhbGx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19Gb250SW5mb1JlYyksIHNyYy9jaWQvY2lkdG9rZW4uaCwKCXNyYy90eXBlMS90MXRva2Vucy5oLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IFJlc2V0dGluZyB0aGUgdHlwZXMgb2YKCWBpdGFsaWNfYW5nbGUnLCBgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYW5kIGB1bmRlcmxpbmVfdGhpY2tuZXNzJyB0bwoJdGhlaXIgcHJldmlvdXMgdmFsdWVzIChpLmUuLCBsb25nLCBzaG9ydCwgYW5kIHVzaG9ydCkgaW4gb3JkZXIgdG8KCWF2b2lkIGJyZWFraW5nIGJpbmFyeSBjb21wYXRpYmlsaXR5LgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHVucGF0Lmg6IEZpeGluZyBkb2N1bWVudGF0aW9uIGNvbW1lbnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBkZXZlbC9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcpOiBSZXBsYWNlZAoJd2l0aC4uLgoJKFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HKTogVGhpcy4gIFVwZGF0ZWQgYWxsIHVzZXJzLgoJKFRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HKTogUmVtb3ZlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0RFQlVHX0hPT0tfVFlQRTEpOiBSZW1vdmVkLgoJKEZUX0RFQlVHX0hPT0tfVU5QQVRFTlRFRF9ISU5USU5HKTogTmV3IG1hY3JvLiAgVXNlIHRoaXMgd2l0aAoJYEZUX1NldF9EZWJ1Z19Ib29rJyB0byBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSByZW1vdmVkCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfZmFjZV9pbml0KTogVXNlCglgRlRfREVCVUdfSE9PS19VTlBBVEVOVEVEX0hJTlRJTkcnLgoKMjAwMy0wOC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCksIHNyYy9jZmYvY2ZmZ2xvYWQuYwoJKGNmZl9zbG90X2xvYWQpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9zbG90X2xvYWRfZ2x5cGgpOiBGaXgKCXByZXZpb3VzIGNoYW5nZS4KCjIwMDMtMDgtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpLCBzcmMvY2ZmL2NmZmdsb2FkLmMKCShjZmZfc2xvdF9sb2FkKSwgc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfc2xvdF9sb2FkX2dseXBoKTogQXBwbHkKCWZvbnQgbWF0cml4IHRvIGFkdmFuY2Ugd2lkdGggYWxzby4KCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0wNy0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOTo0OjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HbHlwaFNsb3QpOiBDaGFuZ2UgMjAwMy0wNi0xNgoJYWxzbyBicmVha3MgYmluYXJ5IGNvbXBhdGliaWxpdHkuICBSZWludHJvZHVjZSBhbiB1bnNpZ25lZCBpbnRlZ2VyCglhdCB0aGUgb2xkIHBvc2l0aW9uIG9mIGBmbGFncycgY2FsbGVkIGByZXNlcnZlZCcuCgoyMDAzLTA3LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSBBUEkgcmVmZXJlbmNlIHZhbGlkIEhUTUwgNC4wMSB0cmFuc2l0aW9uYWwuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5IChodG1sX2hlYWRlcl8xKTogQWRkIGRvY3R5cGUKCWFuZCBjaGFyc2V0LgoJKGh0bWxfaGVhZGVyXzIpOiBGaXggc3R5bGUgZWxlbWVudHMgYW5kIGFkZCBzb21lIG1vcmUuCglGaXggc3ludGF4LgoJKGJsb2NrX2hlYWRlciwgYmxvY2tfZm9vdGVyLCBkZXNjcmlwdGlvbl9oZWFkZXIsIGRlc2NyaXB0aW9uX2Zvb3RlciwKCW1hcmtlcl9oZWFkZXIsIG1hcmtlcl9mb290ZXIsIHNvdXJjZV9oZWFkZXIsIHNvdXJjZV9mb290ZXIsCgljaGFwdGVyX2hlYWRlcik6IERvbid0IHVzZSA8Y2VudGVyPi4uLjwvY2VudGVyPiBidXQgYGFsaWduPWNlbnRlcicKCXRhYmxlIGF0dHJpYnV0ZS4KCShjaGFwdGVyX2ludGVyLCBjaGFwdGVyX2Zvb3Rlcik6IEFkZCA8bGk+IGFuZCB1c2Ugc3BlY2lhbCA8dWw+CgljbGFzcy4KCVVzZSBkb3VibGUgcXVvdGVzIGFyb3VuZCB0YWJsZSB3aWR0aHMgZ2l2ZW4gaW4gcGVyY2VudC4KCShrZXl3b3JkX3ByZWZpeCwga2V5d29yZF9zdWZmaXgpOiBEb24ndCBjaGFuZ2UgZm9udCBjb2xvdXIgZGlyZWN0bHkKCWJ1dCB1c2UgYSBuZXcgPHNwYW4+IGNsYXNzLgoJKHNlY3Rpb25fc3lub3BzaXNfaGVhZGVyLCBzZWN0aW9uX3N5bm9wc2lzX2Zvb3Rlcik6IERvbid0IGNoYW5nZQoJY29sb3VyLgoJKGNvZGVfaGVhZGVyLCBjb2RlX2Zvb3Rlcik6IERvbid0IGNoYW5nZSBmb250IGNvbG91ciBkaXJlY3RseSBidXQKCXVzZSBhIHNwZWNpYWwgPHByZT4gY2xhc3MuCgkocHJpbnRfaHRtbF9maWVsZCk6IDx0cj4gZ2V0cyB0aGUgYHZhbGlnbicgYXR0cmlidXRlLCBub3QgPHRhYmxlPi4KCShwcmludF9odG1sX2ZpZWxkX2xpc3QpOiBEaXR0by4KCShpbmRleF9leGl0KTogRG9uJ3QgdXNlIDxjZW50ZXI+Li4uPC9jZW50ZXI+IGJ1dCBgYWxpZ249Y2VudGVyJwoJdGFibGUgYXR0cmlidXRlLgoJKHNlY3Rpb25fZW50ZXIpOiBEaXR0by4KCSh0b2NfZXhpdCk6IERvbid0IGVtaXQgPC90YWJsZT4uCgkoYmxvY2tfZW50ZXIpOiBVc2UgPGg0PjxhPiwgbm90IDxhPjxoND4uCgkoX19pbml0X18pOiBGaXggdGFnIG9yZGVyIGluIHNlbGYuaHRtbF9mb290ZXIuCgoyMDAzLTA3LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVGhpcyBjaGFuZ2UgcmVpbXBsZW1lbnRzIGZpeCBmcm9tIDIwMDMtMDUtMzAgd2l0aG91dCBicmVha2luZwoJYmluYXJ5IGNvbXBhdGliaWxpdHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0ZvbnRJbmZvUmVjKTogYGl0YWxpY19hbmdsZScsCglgaXNfZml4ZWRfcGl0Y2gnLCBgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYHVuZGVybGluZV90aGlja25lc3MnIGFyZQoJcmV2ZXJ0ZWQgdG8gYmUgbm9ybWFsIHZhbHVlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogUmVtb3ZlCglgVDFfRklFTERfVFlQRV9CT09MX1AnLCBgVDFfRklFTERfVFlQRV9JTlRFR0VSX1AnLAoJYFQxX0ZJRUxEX1RZUEVfRklYRURfUCcsIGBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDBfUCcuCgkoVDFfRklFTERfVFlQRV9CT09MX1AsIFQxX0ZJRUxEX05VTV9QLCBUMV9GSUVMRF9GSVhFRF9QLAoJVDFfRklFTERfRklYRURfMTAwMF9QKTogUmVtb3ZlZC4KCShUMV9GSUVMRF9UWVBFX0JPT0wpOiBSZW5hbWVkIHRvLi4uCgkoVDFfRklFTERfQk9PTCk6IE5ldyBtYWNyby4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IGBpdGFsaWNfYW5nbGUnLCBgaXNfZml4ZWRfcGl0Y2gnLAoJYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJywgYHBhaW50X3R5cGUnLAoJYHN0cm9rZV93aWR0aCcgYXJlIHJldmVydGVkIHRvIGJlIG5vcm1hbCB2YWx1ZXMuCgkoVDQyX0tFWVdPUkRfQ09VTlQpOiBOZXcgbWFjcm8uCgkodDQyX3BhcnNlX2RpY3QpOiBOZXcgYXJyYXkgYGtleXdvcmRfZmxhZ3MnIHRvIG1hcmsgdGhhdCBhIHZhbHVlIGhhcwoJYWxyZWFkeSBiZWVuIGFzc2lnbmVkIHRvIGEgZGljdGlvbmFyeSBlbnRyeS4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQsIFQ0Ml9GYWNlX0RvbmUpOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBgaXRhbGljX2FuZ2xlJywgYGlzX2ZpeGVkX3BpdGNoJywKCWB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycgYXJlIHJldmVydGVkIHRvIGJlCglub3JtYWwgdmFsdWVzLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfZG9uZSwgY2lkX2ZhY2VfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBgaXRhbGljX2FuZ2xlJywgYGlzX2ZpeGVkX3BpdGNoJywKCWB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycsIGBwYWludF90eXBlJywKCWBzdHJva2Vfd2lkdGgnIGFyZSByZXZlcnRlZCB0byBiZSBub3JtYWwgdmFsdWVzLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfRG9uZSwgVDFfRmFjZV9Jbml0KTogVXBkYXRlZC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9GSUVMRF9DT1VOVCk6IE5ldyBtYWNyby4KCShwYXJzZV9kaWN0KTogQWRkIHBhcmFtZXRlciBmb3Iga2V5d29yZCBmbGFncy4KCVJlY29yZCBvbmx5IGZpcnN0IGluc3RhbmNlIG9mIGEgZmllbGQuCgkoVDFfT3Blbl9GYWNlKTogTmV3IGFycmF5IGBrZXl3b3JkX2ZsYWdzJy4KCjIwMDMtMDctMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gNS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gMTA6MDozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKTogRml4IC0tdGl0bGUuCgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEwsIFJFQURNRTogVXBkYXRlZC4KCgkqIHNyYy90b29scy9kb2NtYWtlci9zb3VyY2VzLnB5IChyZV9jcm9zc3JlZik6IEZpeCByZWd1bGFyCglleHByZXNzaW9uIHRvIGhhbmRsZSB0cmFpbGluZyBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5IChtYWtlX2h0bWxfd29yZCk6IFVwZGF0ZWQuCgoJKiBkb2NzL3JlbGVhc2U6IE5ldyBmaWxlLgoKMjAwMy0wNy0yMyAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfUGFyc2VyX0Z1bmNzUmVjKTogTmV3CgltZW1iZXIgZnVuY3Rpb24gYHRvX2J5dGVzJy4KCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jIChwc19wYXJzZXJfZnVuY3MpOiBOZXcgbWVtYmVyCglgcHNfcGFyc2VyX3RvX2J5dGVzJy4KCShwc2F1eF9tb2R1bGVfY2xhc3MpOiBJbmNyZWFzZSB2ZXJzaW9uIHRvIDB4MjAwMDBMLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChJU19UMV9MSU5FU1BBQ0UpOiBBZGQgXGYuCgkoSVNfVDFfTlVMTFNQQUNFKTogTmV3IG1hY3JvLgoJKElTX1QxX1NQQUNFKTogQWRkIGl0LgoJKHNraXBfc3BhY2VzLCBza2lwX2FscGhhKTogTmV3IGZ1bmN0aW9ucy4KCShwc19wYXJzZXJfc2tpcF9zcGFjZXMsIHBzX3BhcnNlcl9za2lwX2FscGhhKTogVXNlIHRoZW0uCgkocHNfdG9ieXRlcywgcHNfcGFyc2VyX3RvX2J5dGVzKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDMtMDctMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRE9DX0RJUik6IE5ldyB2YXJpYWJsZS4KCShyZWZkb2MpOiBVc2UgKl9ESVIgdmFyaWFibGVzLgoJKGRpc3RjbGVhbik6IFJlbW92ZSBkb2N1bWVudGF0aW9uIGZpbGVzLgoKCSogYnVpbGRzL2RldGVjdC5tayAoc3RkX3NldHVwLCBkb3Nfc2V0dXApOiBNZW50aW9uIGBtYWtlIHJlZmRvYycuCgoJKiBjb25maWd1cmU6IFNldCBET0NfRElSIHZhcmlhYmxlLgoKMjAwMy0wNy0wNyAgUGF0cmlrIEjkZ2dsdW5kICA8cGF0cmlrLmhhZ2dsdW5kQGJyZWRiYW5kLm5ldD4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAocmVmZG9jKTogTmV3IHRhcmdldCB0byBidWlsZCB0aGUKCWRvY3VtZW50YXRpb24uCgkoLlBIT05ZKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIEZUX0NoYXJNYXAuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZSxoOiBGaXggZG9jdW1lbnRhdGlvbiBvZiBGVF9PVVRMSU5FX0ZMQUdTLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmg6IERvY3VtZW50IEZUX1NmbnRfVGFnLgoKMjAwMy0wNy0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2ZyZWFkLmMKCShwY2ZfbG9hZF9mb250KTogRml4IGNvbXB1dGF0aW9uIG9mIGhlaWdodCBpZiBQSVhFTF9TSVpFIHByb3BlcnR5IGlzCgltaXNzaW5nLgoKMjAwMy0wNy0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfY29tcGFyZSk6IE9ubHkgYWRkIGBzaXplJyBpZgoJdGhlcmUgaXMgbm8gZXJyb3IuICBSZXBvcnRlZCBieSBLbnV0IFN0LiBPc211bmRzZW4KCTxiaXJkLWZyZWV0eXBlQGFuZHVpbi5uZXQ+LgoKMjAwMy0wNi0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUEgbmV3IHRyeSB0byBzeW5jaHJvbml6ZSBiaXRtYXAgZm9udCBhY2Nlc3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0JpdG1hcF9TaXplKTogYGhlaWdodCcgaXMgbm93CglkZWZpbmVkIHRvIHJldHVybiB0aGUgYmFzZWxpbmUtdG8tYmFzZWxpbmUgZGlzdGFuY2UuICBUaGlzIHdhcwoJYWxyZWFkeSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIEJERiBhbmQgUENGIGRyaXZlcnMuCgoJVGhlIGB3aWR0aCcgZmllbGQgbm93IGdpdmVzIHRoZSBhdmVyYWdlIHdpZHRoLiAgSSB3YXNuJ3QgYWJsZSB0bwoJZmluZCBzb21ldGhpbmcgYmV0dGVyLiAgSXQgc2hvdWxkIGJlIHRha2VuIGFzIGluZm9ybWF0aXZlIG9ubHkuCgoJTmV3IGZpZWxkcyBgc2l6ZScsIGB4X3BwZW0nLCBhbmQgYHlfcHBlbScuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCglEbyBwcm9wZXIgcm91bmRpbmcgYW5kIGNvbnZlcnNpb24gZnJvbSA3Mi4yNyB0byA3MiBwb2ludHMuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBVcGRhdGVkIHRvIHByb3Blcmx5IGZpbGwKCUZUX0JpdG1hcF9TaXplLgoJRG8gcHJvcGVyIHJvdW5kaW5nIGFuZCBjb252ZXJzaW9uIGZyb20gNzIuMjcgdG8gNzIgcG9pbnRzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0ZhY2VfSW5pdCk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCgoyMDAzLTA2LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJUmVkZXNpZ25pbmcgdGhlIEZOVCBkcml2ZXIgdG8gcmV0dXJuIG11bHRpcGxlIGZhY2VzLCBub3QgbXVsdGlwbGUKCXN0cmlrZXMuICBBdCBsZWFzdCBvbmUgZm9udCAoYXBwODUwLmZvbiBmcm9tIFdpbk1FKSBjb250YWlucwoJZGlmZmVyZW50IEZOVCBjaGFybWFwcyBmb3IgaXRzIHN1YmZvbnRzLiAgQ29uc2VxdWVudGx5LCB0aGUgcHJldmlvdXMKCWRlc2lnbiBvZiBoYXZpbmcgbXVsdGlwbGUgYml0bWFwIHN0cmlrZXMgaW4gYSBzaW5nbGUgZm9udCBmYWNlIGZhaWxzCglzaW5jZSB3ZSBoYXZlIG9ubHkgb25lIGNoYXJtYXAgcGVyIGZhY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmggKEZOVF9TaXplX1JlYyk6IFJlbW92ZWQuCgkoRk5UX0ZhY2VSZWMpOiBSZW1vdmUgYG51bV9mb250cycgZmllbGQgYW5kIHJlcGxhY2UgYGZvbnRzJyB3aXRoCglgZm9udCcuCgoJKiBzcmMvYmFzZS9mdHdpbmZudC5jIChGVF9HZXRfV2luRk5UX0hlYWRlcik6IFVwZGF0ZWQuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKGZudF9mb250X2xvYWQpOiBEb24ndCBzZXQgcGl4ZWxfd2lkdGggZXF1YWwKCXRvIHBpeGVsX2hlaWdodC4KCShmbnRfZmFjZV9kb25lX2ZvbnRzKTogUmVtb3ZlZC4KCShmbnRfZmFjZV9nZXRfZGxsX2ZvbnRzKTogUmVuYW1lZCB0by4uLgoJKGZudF9mYWNlX2dldF9kbGxfZm9udCk6IFRoaXMuICBBZGQgc2Vjb25kIGZ1bmN0aW9uIGFyZ3VtZW50IHRvCglzZWxlY3QgZmFjZSBpbmRleC4KCVVwZGF0ZWQgdG8gbG9hZCBqdXN0IG9uZSBzdWJmb250LgoJKGZudF9mb250X2RvbmUsIEZOVF9GYWNlX0RvbmUpOiBVcGRhdGVkLgoJKEZOVF9GYWNlX0luaXQpOiBIYW5kbGUgYGZhY2VfaW5kZXgnLgoJVXBkYXRlZC4KCShGTlRfU2l6ZV9TZXRfUGl4ZWxzKTogU2ltcGxpZmllZDsgc2ltaWxhciB0byBCREYgYW5kIFBDRiwgdGhlCgliaXRtYXAgd2lkdGggaXMgbm93IGlnbm9yZWQuCgkoRk5UX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJRml4IGdseXBoIGluZGV4IGNvbXB1dGF0aW9uLgoJKHdpbmZudF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMy0wNi0yNSAgT3dlbiBUYXlsb3IgIDxvdGF5bG9yQHJlZGhhdC5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX2hkbXgpOiBEb24ndCBhc3NpZ24KCW51bV9yZWNvcmRzIHVudGlsIHdlIGFjdHVhbGx5IGRlY2lkZSB0byBsb2FkIHRoZSB0YWJsZSwKCW90aGVyd2lzZSwgd2UnbGwgc2VnZmF1bHQgaW4gdHRfZmFjZV9mcmVlX2hkbXguCgoyMDAzLTA2LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IFByb3RlY3QgYWdhaW5zdCB6ZXJvCglnbHlwaCBuYW1lIHBvaW50ZXIuICBSZXBvcnRlZCBieSBNaWtleSBBbmJhcnkgPG1hbmJhcnlAdml6cnQuY29tPi4KCjIwMDMtMDYtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90b29scy9nbG5hbWVzLnB5OiBVcGRhdGVkIHRvIEFHTCAyLjAuCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMy0wNi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oLCBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmgsCglzcmMvYmFzZS9mdGNhbGMuYywgc3JjL2Jhc2UvZnR0cmlnb24uYywgc3JjL2NmZi9jZmZnbG9hZC5jLAoJc3JjL290bGF5b3V0L290bGdzdWIuYywgc3JjL3BzaGludGVyL3BzaHJlYy5jLAoJc3JjL3BzbmFtZXMvcHNtb2R1bGUuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy90cnVldHlwZS90dGRyaXZlci5jOgoJRGVjb3JhdGUgY29uc3RhbnRzIHdpdGggYFUnIGFuZCBgTCcgaWYgYXBwcm9wcmlhdGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IFVwZGF0ZWQgdG8gaW5jbHVkZSByZWNlbnQgbW9kdWxlCglhZGRpdGlvbnMuCgoJKiBzcmMvcHNoaW50ZXIvcHNobnRlcnIuaCAoRlRfRVJSX0JBU0UpOiBEZWZpbmUgYXMKCWBGVF9Nb2RfRXJyX1BTaGludGVyJy4KCSogc3JjL3R5cGU0Mi90NDJlcnJvci5oIChGVF9FUlJfQkFTRSk6IERlZmluZSBhcwoJYEZUX01vZF9FcnJfVHlwZTQyJy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuaCAoUFNfSElOVFNfTUFHSUMpOiBSZW1vdmVkLiAgTm90IHVzZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIFtfX01XRVJLU19fXTogRGVmaW5lIEZUX0xPTkc2NAoJYW5kIEZUX0lOVDY0LgoKMjAwMy0wNi0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCk6IFVzZSBmaXJzdF9jaGFyIGluCgljb21wdXRhdGlvbiBvZiBnbHlwaF9pbmRleC4KCShGTlRfU2l6ZV9TZXRfUGl4ZWxzKTogVG8gZmluZCBhIHN0cmlrZSwgZmlyc3QgY2hlY2sgcGl4ZWxfaGVpZ2h0Cglvbmx5LCB0aGVuIHRyeSB0byBmaW5kIGEgYmV0dGVyIGhpdCBieSBjb21wYXJpbmcgcGl4ZWxfd2lkdGggYWxzby4KCVdpdGhvdXQgdGhpcyBmaXggaXQgaXNuJ3QgcG9zc2libGUgdG8gYWNjZXNzIGFsbCBzdHJpa2VzLgoJQWxzbyBjb21wdXRlIG1ldHJpY3MubWF4X2FkdmFuY2UgdG8gYmUgaW4gc3luYyB3aXRoIG90aGVyIGJpdG1hcAoJZHJpdmVycy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKTogUmVtb3ZlIHJlZHVuZGFudCBjb2RlLgoJKEZUX1NldF9QaXhlbF9TaXplKTogQXNzaWduIHZhbHVlIHRvIGBtZXRyaWNzJyBhZnRlciB2YWxpZGF0aW9uIG9mCglhcmd1bWVudHMuCgoyMDAzLTA2LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJU3luY2hyb25pemUgY29tcHV0YXRpb24gb2YgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgYml0bWFwIHN0cmlrZXMuICBUaGUKCWB3aWR0aCcgZmllbGQgaW4gdGhlIEZUX0JpdG1hcF9TaXplIHN0cnVjdHVyZSBpcyBub3cgb25seSB1c2VmdWwgdG8KCWVudW1lcmF0ZSBkaWZmZXJlbnQgc3RyaWtlcy4gIFRoZSBgbWF4X2FkdmFuY2UnIGZpZWxkIG9mIHRoZQoJRlRfU2l6ZV9NZXRyaWNzIHN0cnVjdHVyZSBzaG91bGQgYmUgdXNlZCB0byBnZXQgdGhlIChtYXhpbXVtKSB3aWR0aAoJb2YgYSBzdHJpa2UuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBEb24ndCB1c2UgQVZFUkFHRV9XSURUSCBmb3IKCWNvbXB1dGluZyBgYXZhaWxhYmxlX3NpemVzLT53aWR0aCcgYnV0IG1ha2UgaXQgYWx3YXlzIGVxdWFsIHRvCglgYXZhaWxhYmxlX3NpemVzLT5oZWlnaHQnLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBEb24ndCB1c2UgUkVTT0xVVElPTl9YIGZvcgoJY29tcHV0aW5nIGBhdmFpbGFibGVfc2l6ZXMtPndpZHRoJyBidXQgbWFrZSBpdCBhbHdheXMgZXF1YWwgdG8KCWBhdmFpbGFibGVfc2l6ZXMtPmhlaWdodCcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X1BpeGVsX1NpemVzKTogUGFzcyBvbmx5IHNpbmdsZQoJYXJndW1lbnQgdG8gZnVuY3Rpb24uCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2RlX3ZhbHVlKTogSGFuZGxlIGAuJyBhZnRlcgoJYHVuaVhYWFgnIGFuZCBgdVhYWFhbWFtYXV0nLgoKMjAwMy0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZkcml2ci5jOiBzL0ZUX0Vycl8vQkRGX0Vyci8uCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jLCBzcmMvY2FjaGUvZnRjc2JpdHMuYywgc3JjL2NhY2hlL2Z0bHJ1LmM6CglzL0ZUX0Vycl8vRlRDX0Vycl8vLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYzogcy9GVF9FcnJfL0NGRl9FcnJfLy4KCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBzL0ZUX0Vycl8vUENGX0Vycl8vLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmM6IEluY2x1ZGUgcHNhdXhlcnIuaC4KCXMvRlRfRXJyXy9QU2F1eF9FcnJfLy4KCSogc3JjL3BzaGludGVyL3BzaG50ZXJyLmg6IE5ldyBmaWxlLgoJKiBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMsIHNyYy9wc2hpbnRlci9wc2hyZWMuYzogSW5jbHVkZSBwc2hudGVyci5oLgoJcy9GVF9FcnJfL1BTSF9FcnJfLy4KCSogc3JjL3Bmci9wZnJkcml2ci5jLCBzcmMvcGZyL3Bmcm9ianMuYywgc3JjL3Bmci9wZnJzYml0LmM6CglzL0ZUX0Vycl8vUEZSX0Vycl8vLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLAoJc3JjL3NmbnQvdHRsb2FkLmM6IHMvRlRfRXJyXy9TRk5UX0Vycl8vLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiBzL0ZUX0Vycl8vVFRfRXJyXy8uCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiBMb2FkIEZUX01PRFVMRV9FUlJPUlNfSCBhbmQgZGVmaW5lCglGVF9FUlJfUFJFRklYIGFuZCBGVF9FUlJfQkFTRS4KCXMvRlRfRXJyXy9HemlwX0Vycl8vLgoKMjAwMy0wNi0xOSAgRGlyY2sgQmxhc2tleSAgPGxpc3R0YXJnZXRAZGFuYmFsYS5jb20+CgoJKiBzcmMvY2ZmL2NmZmxvYWQgKGNmZl9lbmNvZGluZ19sb2FkKTogYG5sZWZ0JyBtdXN0IGJlIEZUX1VJbnQsCglvdGhlcndpc2UgYWRkaW5nIDEgbWlnaHQgd3JhcCB0aGUgcmVzdWx0LgoKMjAwMy0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZV92YWx1ZSk6IEFkZCBzdXBwb3J0IHRvCglyZWNvZ25pemUgYHVYWFhYW1hbWF1dJyBnbHlwaCBuYW1lcy4KCURvbid0IGhhbmRsZSBnbHlwaCBuYW1lcyBzdGFydGluZyB3aXRoIGB1bmknIHdoaWNoIGhhdmUgbW9yZSB0aGFuCglmb3VyIGRpZ2l0cy4KCjIwMDMtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfT3Blbl9GbGFncyk6IFJlcGxhY2VkIHdpdGgKCSNkZWZpbmVzIGZvciB0aGUgY29uc3RhbnRzLgoJKEZUX09wZW5fQXJncyk6IENoYW5nZSB0eXBlIG9mIGBmbGFncycgdG8gRlRfVUludC4KCShGVF9HbHlwaFNsb3QpOiBNb3ZlIGBmbGFncycgdG8gRlRfU2xvdF9JbnRlcm5hbC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9PdXRsaW5lX0ZsYWdzLCBGVF9SYXN0ZXJfRmxhZyk6CglSZXBsYWNlZCB3aXRoICNkZWZpbmVzIGZvciB0aGUgY29uc3RhbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfU2xvdF9JbnRlcm5hbCk6IE5ldwoJZmllbGQgYGZsYWdzJyAoZnJvbSBGVF9HbHlwaFNsb3QpLgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgc291cmNlIGZpbGVzLgoJKEZUX0dMWVBIX09XTl9CSVRNQVApOiBOZXcgbWFjcm8gKGZyb20gZnRnbG9hZHIuaCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmggKEZUX0dMWVBIX09XTl9CSVRNQVApOiBNb3ZlZAoJdG8gZnRvYmpzLmguCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFVzZSBkdW1teQoJRlRfR2x5cGhTbG90X0ludGVybmFsIG9iamVjdC4KCjIwMDMtMDYtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jb21waWxlci9nY2MubWssIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rIChDRkxBR1MpOgoJQWRkIC1mbm8tc3RyaWN0LWFsaWFzaW5nIHRvIGdldCByaWQgb2YgemlsbGlvbiB3YXJuaW5ncyBmcm9tIGdjYwoJdmVyc2lvbiAzLjMuCgoyMDAzLTA2LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaCAoZnRfZ2x5cGhfYmJveF91bnNjYWxlZCwKCWZ0X2dseXBoX2Jib3hfc3VicGl4ZWxzLCBmdF9nbHlwaF9iYm94X2dyaWRmaXQsCglmdF9nbHlwaF9iYm94X3RydW5jYXRlLCBmdF9nbHlwaF9iYm94X3BpeGVscyk6IFJlcGxhY2VkIHdpdGgKCUZUX0dMWVBIX0JCT1hfVU5TQ0FMRUQsIEZUX0dMWVBIX0JCT1hfU1VCUElYRUxTLAoJRlRfR0xZUEhfQkJJWF9HUklERklULCBGVF9HTFlQSF9CQk9YX1RSVU5DQVRFLCBGVF9HTFlQSF9CQk9YX1BJWEVMUy4KCVRoZSBsb3dlcmNhc2UgdmFyaWFudHMgYXJlIG5vdyAoZGVwcmVjYXRlZCBhbGlhc2VzKSB0byB0aGUgdXBwZXJjYXNlCgl2ZXJzaW9ucy4KCVVwZGF0ZWQgYWxsIG90aGVyIGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZHVsZS5oIChmdF9tb2R1bGVfZm9udF9kcml2ZXIsCglmdF9tb2R1bGVfcmVuZGVyZXIsIGZ0X21vZHVsZV9oaW50ZXIsIGZ0X21vZHVsZV9zdHlsZXIsCglmdF9tb2R1bGVfZHJpdmVyX3NjYWxhYmxlLCBmdF9tb2R1bGVfZHJpdmVyX25vX291dGxpbmVzLAoJZnRfbW9kdWxlX2RyaXZlcl9oYXNfaGludGVyKTogUmVwbGFjZWQgd2l0aCBGVF9NT0RVTEVfRk9OVF9EUklWRVIsCglGVF9NT0RVTEVfUkVOREVSRVIsIEZUX01PRFVMRV9ISU5URVIsIEZUX01PRFVMRV9TVFlMRVIsCglGVF9NT0RVTEVfRFJJVkVSX1NDQUxBQkxFLCBGVF9NT0RVTEVfRFJJVkVSX05PX09VVExJTkVTLAoJRlRfTU9EVUxFX0RSSVZFUl9IQVNfSElOVEVSLgoJVGhlIGxvd2VyY2FzZSB2YXJpYW50cyBhcmUgbm93IChkZXByZWNhdGVkIGFsaWFzZXMpIHRvIHRoZSB1cHBlcmNhc2UKCXZlcnNpb25zLgoJVXBkYXRlZCBhbGwgb3RoZXIgZmlsZXMuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX0dldF9DQm94KTogSGFuZGxlIGJib3hfbW9kZSBiZXR0ZXIKCWFzIGVudW1lcmF0aW9uLgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jIChwY2ZfZHJpdmVyX2NsYXNzKSwgc3JjL3dpbmZvbnRzL3dpbmZudC5jCgkod2luZm50X2RyaXZlcl9jbGFzcyksIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2RyaXZlcl9jbGFzcyk6IEFkZAoJdGhlIEZUX01PRFVMRV9EUklWRVJfTk9fT1VUTElORVMgZmxhZy4KCjIwMDMtMDYtMTMgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IEFwcGx5IGZvbnQgbWF0cml4LgoKMjAwMy0wNi0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IFRlc3Qgbm90IG9ubHkgZm9yIGBEb3MnIGJ1dCBmb3IgYERPUycgYWxzby4KCgkqIGJ1aWxkcy9kb3MvZG9zLWVteC5taywgYnVpbGRzL2NvbXBpbGVyL2VteC5tazogTmV3IGZpbGVzIGZvcgoJRU1YIGdjYyBjb21waWxlci4KCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IEFkZCB0YXJnZXQgYGVteCcuCgoJKiBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rIChMSU5LX0xJQlJBUlkpOiBHTlUgTWFrZSBmb3IgRE9TIGRvZXNuJ3QKCWxpa2UgYSB0cmFpbGluZyBzZW1pY29sb247IGFkZCBhIGR1bW15IGNvbW1hbmQuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYzogUmVtb3ZlIHBhcnNlX2ZvbnRfYmJveCBjb2RlIChhbHJlYWR5IGVuY2xvc2VkCgl3aXRoICNpZiAwIC4uLiAjZW5kaWYpLgoKCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IEhhbmRsZSAvRm9udE5hbWUuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9uYW1lKTogUmVtb3ZlZC4KCVJlbW92ZSBwYXJzZV9mb250X2Jib3ggY29kZSAoYWxyZWFkeSBlbmNsb3NlZCB3aXRoICNpZiAwIC4uLgoJI2VuZGlmKS4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX2ZvbnRfbmFtZSk6IFJlbW92ZWQuCglSZW1vdmUgdDQyX3BhcnNlX2ZvbnRfYmJveCBjb2RlIChhbHJlYWR5IGVuY2xvc2VkIHdpdGggI2lmIDAgLi4uCgkjZW5kaWYpLgoJKHQ0Ml9rZXl3b3Jkcyk6IEhhbmRsZSAvRm9udE5hbWUgd2l0aCBUMV9GSUVMRF9LRVkuCgoyMDAzLTA2LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJVDFfRklFTERfVFlQRV9LRVkuCgkoVDFfRklFTERfS0VZKTogTmV3IG1hY3JvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogSGFuZGxlCglUMV9GSUVMRF9UWVBFX0tFWS4KCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogVXNlIFQxX0ZJRUxEX0tFWSBmb3IgL0NJREZvbnROYW1lLgoKMjAwMy0wNi0xMSAgQWxleGFuZGVyIE1hbG1iZXJnICA8YWxleGFuZGVyQG1hbG1iZXJnLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVMaXN0X1JlbW92ZV9TZWxlY3Rpb24pOiBEZWNyZWFzZQoJbnVtYmVyIG9mIG5vZGVzLgoJKEZUX0xydUxpc3RfTG9va3VwKTogRml4IGFzc2VydGlvbiBmb3Igb3V0LW9mLW1lbW9yeSBjYXNlLgoKMjAwMy0wNi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogUmVtb3ZlZC4KCShjaWRfcmVhZF9zdWJycyk6IFVzZSB0MV9kZWNyeXB0IGZyb20gcHNhdXggbW9kdWxlLgoJKiBzcmMvY2lkL2NpZGxvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IFVzZSB0MV9kZWNyeXB0IGZyb20gcHNhdXgKCW1vZHVsZS4KCjIwMDMtMDYtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiBBcHBseSBjaGFuZ2UgMjAwMy0wNS0zMSBmcm9tIDxSb24uRGV2QGdteC5kZT4uCglDb21wdXRlIHN0eWxlIGZsYWdzLgoJRml4IGNvbXB1dGF0aW9uIG9mIHJvb3QtPmhlaWdodC4KCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBIYW5kbGUgRm9udEJCb3guCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfbG9hZF9rZXl3b3JkKTogSGFuZGxlCglUMV9GSUVMRF9MT0NBVElPTl9CQk9YLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkoY2lkX2ZpZWxkX3JlY29yZCk6IENvbW1lbnQgb3V0IGVsZW1lbnQgZm9yIHBhcnNpbmcgRm9udEJCb3guCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKHQ0Ml9rZXl3b3Jkcyk6IEhhbmRsZSBGb250QkJveCB3aXRoIFQxX0ZJRUxEX0JCT1gsIG5vdCB3aXRoCglUMV9GSUVMRF9DQUxMQkFDSy4KCSh0NDJfcGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCSh0NDJfbG9hZF9rZXl3b3JkKTogSGFuZGxlIFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogQXBwbHkgY2hhbmdlIDIwMDMtMDUtMzEKCWZyb20gPFJvbi5EZXZAZ214LmRlPi4KCjIwMDMtMDYtMDkgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKFNldFN1cGVyUm91bmQpIDwweDMwPjogRm9sbG93IEFwcGxlJ3MKCVRydWVUeXBlIHNwZWNpZmljYXRpb24uCgkoSW5zX01EUlAsIEluc19NSVJQKTogRml4IHNpbmdsZSB3aWR0aCBjdXQtaW4gdGVzdC4KCjIwMDMtMDYtMDkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYzogKGluZmxhdGVfbWFzayk6IFJlcGxhY2VkIHdpdGguLi4KCShOT19JTkZMQVRFX01BU0spOiBUaGlzLgoJKiBzcmMvZ3ppcC9pbmZ1dGlsLmg6IERlY2xhcmUgYGluZmxhdGVfbWFzaycgY29uZGl0aW9uYWxseSBieQoJTk9fSU5GTEFURV9NQVNLLgoKMjAwMy0wNi0wOSAgQWxleGlzIFMuIEwuIENhcnZhbGhvICA8YWxleGlzQGNlY20udXNwLmJyPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9maWxsX291dHB1dCk6IEhhbmRsZSBaX1NUUkVBTV9FTkQKCWNvcnJlY3RseS4KCjIwMDMtMDYtMDkgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBDaGFuZ2UgY2FsY3VsYXRpb24gb2YKCWRpbS0+c3Rkdy5jb3VudCB0byBhdm9pZCBjb21waWxlciBwcm9ibGVtLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9TaW1wbGVfR2x5cGgpOiBNb3ZlIHRoZSBibG9jawoJdmFyaWFibGVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGNvbXBpbGVyCglwcm9ibGVtcy4KCUFkZCBjYXN0cyBuZWNlc3NhcnkgZm9yIDE2Yml0IGNvbXBpbGVycy4KCjIwMDMtMDYtMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcnVsZXMubWsgKFBGUl9EUlZfU1JDKTogQWRkIHBmcnNiaXQuYy4KCShQRlJfRFJWX0gpOiBBZGQgcGZydHlwZXMuaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IHMvX19NV0tTX18vX19NV0VSS1NfXy8uCgoyMDAzLTA2LTA4ICBLYXJsIFNjaHVsdHogIDxrc2NodWx0ekByc2luYy5jb20+CgoJKiBzcmMvcGZyL3BmcnNiaXQuYyAocGZyX2JpdHdyaXRlcl9pbml0KTogQ2hhbmdlIHR5cGUgb2YgdGhpcmQKCWFyZ3VtZW50IHRvIEZUX0Jvb2wuCgkocGZyX2xvb2t1cF9iaXRtYXBfZGF0YSk6IENoYW5nZSB0eXBlIG9mIHRoaXJkIGFuZCBmb3VydGggYXJndW1lbnQKCXRvIEZUX1VJbnQuICBVcGRhdGVkIGNhbGxlci4KCShwZnJfbG9hZF9iaXRtYXBfYml0cyk6IENoYW5nZSB0eXBlIG9mIGZvdXJ0aCBhcmd1bWVudCB0byBGVF9Cb29sLgoKMjAwMy0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlbHkgcmV2aXNlZCBGcmVlVHlwZSdzIG1ha2UgbWFuYWdlbWVudC4KCgkuIEluIGFsbCBtYWtlZmlsZXMgYC8nIGlzIHVzZWQgYXMgdGhlIHBhdGggc2VwYXJhdG9yLiAgVGhlCgkgIGNvbnZlcnNpb24gdG8gdGhlIHJlYWwgcGF0aCBzZXBhcmF0b3JzIGlzIGRvbmUgYXMgbGF0ZSBhcwoJICBwb3NzaWJsZSB1c2luZyAkKHN1YnN0IC4uLikuCgoJLiAkKEhPU1RTRVApIG5vIGxvbmdlciBleGlzdHMuICBOb3csICQoU0VQKSBnaXZlcyB0aGUgcGF0aCBzZXBhcmF0b3IKCSAgZm9yIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgdGhlIG5ldyAkKENPTVBJTEVSX1NFUCkgdGhlIHBhdGgKCSAgc2VwYXJhdG9yIGZvciB0aGUgY29tcGlsZXIgdG9vbHMuCgoJLiAkKEJVSUxEKSBoYXMgYmVlbiByZW5hbWVkIHRvICQoQlVJTERfRElSKS4gIEluIGdlbmVyYWwsIGFsbAoJICBkaXJlY3RvcnkgdmFyaWFibGVzIGVuZCB3aXRoIGBfRElSJy4gIFRoZSB2YXJpYW50cyBlbmRpbmcgaW4gYF8nCgkgIChsaWtlIGBCQVNFXycgaGF2ZSBiZWVuIHJlbW92ZWQpLgoKCVRoZSBmb2xsb3dpbmcgQ2hhbmdlTG9nIGVudHJpZXMgb25seSBkZXNjcmliZSBjaGFuZ2VzIHdoaWNoIGFyZQoJbm90IHJlbGF0ZWQgdG8gdGhlIHJlZGVzaWduLgoKCSogYnVpbGRzL2Jlb3MvYmVvcy1kZWYubWsgKEJVSUxEX0RJUik6IEZpeCB0eXBvLgoJKiBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rIChMSU5LX0xJQlJBUlkpOiBGaXggbGlua2VyIGNhbGwgdG8gYXZvaWQKCW92ZXJsb25nIGFyZ3VtZW50cyBhcyBzdWdnZXN0ZWQgYnkgSi4gQWxpIEhhcmxvdwoJPGFsaUBhdnJjLmNpdHkuYWMudWs+LgoJKiBidWlsZHMvZG9zL2Rvcy13YXQubWs6IE5ldyBmaWxlLgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKEZSRUVUWVBFX0gpOiBJbmNsdWRlIGhlYWRlciBmaWxlcyBmcm9tIHRoZQoJYGRldmVsJyBzdWJkaXJlY3RvcnkuCgoJKiBidWlsZHMvb3MyL29zMi1kZXYubWssIGJ1aWxkcy91bml4L3VuaXhkZGVmLm1rLAoJYnVpbGRzL3VuaXgvdW5peGRkZWYubWssIGJ1aWxkcy93aW4zMi93MzItYmNjZC5taywKCWJ1aWxkcy93aW4zMi93MzItZGV2Lm1rIChCVUlMRF9ESVIpOiBGaXggcGF0aC4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYywgYnVpbGRzL3VuaWMvY29uZmlndXJlOiBVcGRhdGVkLgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoRElTVENMRUFOKTogQWRkIGBmcmVldHlwZTIucGMnLgoKMjAwMy0wNi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogcy9ybGVuL3NmbnRfc2l6ZS8gdG8KCW1ha2UgaXQgY29tcGlsZS4KCgkqIGRldmVsL2Z0b3B0aW9uLmg6IFVwZGF0ZWQuCgoyMDAzLTA2LTA3ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oOgoJcy9pbmRleC9pZHgvIHRvIGZpeCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfZmFjZV9idWlsZF9jbWFwcyk6IFVzZSBtb3JlIGB2b2xhdGlsZScgdG8KCWZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKEJVSUxERklYRUQpOiBSZW1vdmVkLgoJKiBzcmMvZ3ppcC9pbmZ0cmVlcy5jIChpbmZsYXRlX3RyZWVzX2ZpeGVkKSBbIUJVSUxERklYRURdOiBVc2UKCUZUX1VOVVNFRCB0byByZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDMtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZS5oOiBUaGlzLgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmM6IFJlbmFtZWQgdG8uLi4KCSogc3JjL2Jhc2UvZnRzdHJva2UuYzogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NUUk9LRVJfSCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6CglVcGRhdGVkLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYzogUmVuYW1lZCB0by4uLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IFRoaXMuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmg6IFJlbmFtZWQgdG8uLi4KCSogc3JjL3BjZi9wY2Zkcml2ci5oOiBUaGlzLgoKCSogc3JjL3BjZi9KYW1maWxlLCBzcmMvcGNmL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMy0wNi0wNSAgV2VubGluIEluc3RpdHV0ZSAoVG9tIEJpc2hvcCkgIDx3ZW5saW5Ad2VubGluLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKGZpbGVfc3BlY19mcm9tX3BhdGgpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOgoJQWRkIGAjaWYgIWRlZmluZWQoX19NV0VSS1NfXyknLgoKMjAwMy0wNi0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBBZGQKCVQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMCBhbmQgVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwX1AuCgkoVDFfRklFTERfRklYRURfMTAwMCwgVDFfRklFTERfRklYRURfMTAwMF9QKTogTmV3IG1hY3Jvcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZCk6IEhhbmRsZQoJVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwIGFuZCBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDBfUC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX2tpbmRfZml4ZWRfdGhvdXNhbmQpOiBOZXcgZW51bWVyYXRpb24uCgkoQ0ZGX0ZJRUxEX0ZJWEVEXzEwMDApOiBOZXcgbWFjcm8uCgkoY2ZmX3BhcnNlcl9ydW4pOiBIYW5kbGUgY2ZmX2tpbmRfZml4ZWRfdGhvdXNhbmQuCgkqIHNyYy9jZmYvY2ZmdG9rZW4uaDogVXNlIENGRl9GSUVMRF9GSVhFRF8xMDAwIGZvciBibHVlX3NjYWxlLgoJKiBzcmMvY2ZmL2NmZmxvYWQgKGNmZl9zdWJmb250X2xvYWQpOiBGaXggZGVmYXVsdCB2YWx1ZXMgb2YKCWV4cGFuc2lvbl9mYWN0b3IgYW5kIGJsdWVfc2NhbGUuCgoJKiBzcmMvY2lmL2NpZHRva2VuLmgsIHNyYy90eXBlMS90MXRva2Vucy5oOiBVc2UgVDFfRklFTERfRklYRURfMTAwMAoJZm9yIGJsdWVfc2NhbGUuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBGaXggZGVmYXVsdCB2YWx1ZSBvZgoJYmx1ZV9zY2FsZS4KCjIwMDMtMDYtMDQgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBzcmMvY2lkL2NpZGdsb2FkLmMsCglzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jLCBzcmMvcHNhdXgvcHNvYmpzLmgsCglzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvLmMsCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLCBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLAoJc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9zbW9vdGgvZnRzbW9vdGguYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90eXBlMS90MWFmbS5jLAoJc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3QxZ2xvYWQuaCwgc3JjL3R5cGUxL3QxbG9hZC5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMsIHNyYy90eXBlNDIvdDQycGFyc2UuaDoKCU1hbnkgY2FzdHMgYW5kIHNsaWdodCBhcmd1bWVudCB0eXBlIGNoYW5nZXMgdG8gbWFrZSBpdCB3b3JrIHdpdGgKCWEgMTZiaXQgY29tcGlsZXIuCgoyMDAzLTA2LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBEZWZpbmluZwoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcgYnkgZGVmYXVsdCBpcyBhIGJhZCBpZGVhCglzaW5jZSBzb21lIGZvbnRzIChlLmcuIEFyaWFsKSBwcm9kdWNlIHdvcnNlIHJlc3VsdHMgdGhhbiB3aXRob3V0CgloaW50aW5nLiAgUmV2ZXJ0ZWQuCgoyMDAzLTA2LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW1RUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBDYWxsCglGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyBiZWZvcmUgYWRkaW5nIHBoYW50b20gcG9pbnRzLiAgVGhpcyBmaXhlcwoJYSBzZWdmYXVsdCBidWcgd2l0aCBmb250cyAoZS5nLiBodHN0My50dGYpIHdoaWNoIGhhdmUgbmVzdGVkCglzdWJnbHlwaHMgbW9yZSB0aGFuIG9uZSBsZXZlbCBkZWVwLiAgUmVwb3J0ZWQgYnkgQW50aG9ueSBGb2suCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBEZWZpbmUKCVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIsCglUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HLCBhbmQKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HIHRvIG1ha2UgaXQgdGhlIG5ldwoJZGVmYXVsdC4KCjIwMDMtMDYtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBSZW1vdmVkLiAgSnVzdCBhCgl3cmFwcGVyIGZvciBhaF9oaW50X2VkZ2VzLgoJKGFoX2hpbnRfZWRnZXMpOiBSZW5hbWVkIHRvLi4uCgkoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBUaGlzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9IaW50X0ZsYWdzKTogUmVtb3ZlZC4gIFVudXNlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0ZhY2VfSW50ZXJuYWxSZWMpLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9EZWNvZGVyUmVjKSwKCXNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0J1aWxkZXIpOiBSZW1vdmUgYGhpbnRfZmxhZ3MnIGZpZWxkLgoJVW51c2VkLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfYnVpbGRlcl9pbml0KTogVXBkYXRlZC4KCShjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncykgPGNmZl9vcF9lbmRjaGFyPjogQ2FsbCBoaW50ZXItPmFwcGx5Cgl3aXRoIGRlY29kZXItPmhpbnRfbW9kZSBpbnN0ZWFkIG9mIGJ1aWxkZXItPmhpbnRfZmxhZ3MuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX2luaXQpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmMgKGZ0X3N0cm9rZV9ib3JkZXJfZXhwb3J0KTogcy9pbmRleC9pZHgvLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogQ29tbWVudGVkIG91dCBjb2RlIHdoaWNoCglpbmNyZWFzZWQgcm9vdC0+aGVpZ2h0IGJ5IDE1JSBpZiB0aGUgbGluZSBnYXAgd2FzIHplcm8uICBUaGVyZSBleGlzdAoJZm9udHMgKGNvbnRhaW5pbmcgZS5nLiBmb3JtIGRyYXdpbmcgY2hhcmFjdGVycykgd2hpY2ggaW50ZW50aW9uYWxseQoJaGF2ZSBhIHplcm8gbGluZSBnYXAgdmFsdWUuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoRnJlZV9Qcm9qZWN0LCBDVVJfRnVuY19mcmVlUHJvaik6CglSZW1vdmVkLiAgVW51c2VkLgoJVXBkYXRlZCBhbGwgY2FsbGVycy4KCjIwMDMtMDYtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogVXNlIHN5bWJvbGljIG5hbWVzIGZvcgoJQWRvYmUgc3BlY2lmaWMgZW5jb2RpbmcgSURzICh0aGVyZSB3YXMgYSB3cm9uZyBFSUQgdmFsdWUgZm9yIGN1c3RvbQoJZW5jb2RpbmcpLgoKCSogc3JjL2NmZi9jZmZjbWFwLmggKENGRl9DTWFwU3RkUmVjKTogUmVtb3ZlIGBjb3VudCcuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF9lbmNvZGluZ19pbml0LAoJY2ZmX2NtYXBfZW5jb2RpbmdfZG9uZSk6IFVwZGF0ZWQuCgkoY2ZmX2NtYXBfZW5jb2RpbmdfY2hhcl9pbmRleCwgY2ZmX2NtYXBfZW5jb2RpbmdfY2hhcl9uZXh0KTogVXNlCgkyNTYgYXMgbGltaXQgZm9yIGNoYXJhY3RlciBjb2RlLgoKMjAwMy0wNi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCk6IFJldmVydCBjaGFuZ2UgZnJvbQoJMjAwMy0wMy0yMC4KCjIwMDMtMDUtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaCAoRlRfVmVjdG9yX05vcm1hbGl6ZSk6IFJlbW92ZWQuCgoyMDAzLTA1LTMxICAgIDxSb24uRGV2QGdteC5kZT4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogSW1wcm92ZSBhbGdvcml0aG0gZm9yIGd1ZXNzaW5nCgl0aGUgZm9udCBzdHlsZSBieSBpZ25vcmluZyBzcGFjZXMgYW5kIGh5cGhlbnMuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuaW46IEZpeCBgVmVyc2lvbicgZmllbGQuCgoyMDAzLTA1LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQXZvaWQgb3ZlcndyaXRpbmcgb2YgbnVtZXJpYyBmb250IGRpY3Rpb25hcnkgZW50cmllcyBmb3Igc3ludGhldGljCglmb250cy4gIEFkZGl0aW9uYWxseSwgc29tZSBlbnRyaWVzIHdlcmUgaGFuZGxlZCBhcyBgaW50ZWdlcicgaW5zdGVhZAoJb2YgYG51bWJlcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJVDFfRklFTERfVFlQRV9CT09MX1AsIFQxX0ZJRUxEX1RZUEVfSU5URUdFUl9QLCBhbmQKCVQxX0ZJRUxEX1RZUEVfRklYRURfUC4KCShUMV9GSUVMRF9CT09MX1AsIFQxX0ZJRUxEX05VTV9QLCBUMV9GSUVMRF9GSVhFRF9QKTogTmV3IG1hY3Jvcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc19wYXJzZXJfbG9hZF9maWVsZCk6IEhhbmRsZSBuZXcgZmllbGQgdHlwZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9Gb250UmVjRGljdCksCglzcmMvY2ZmL2NmZnRva2VuLmg6IENoYW5nZSB0eXBlIG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQKCXVuZGVybGluZV90aGlja25lc3MgdG8gRlRfRml4ZWQuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfc3ViZm9udF9sb2FkKTogRml4IGRlZmF1bHQgdmFsdWVzIG9mCgl1bmRlcmxpbmVfcG9zaXRpb24gYW5kIHVuZGVybGluZV90aGlja25lc3MuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogU2V0IHVuZGVybGluZV9wb3NpdGlvbgoJYW5kIHVuZGVybGluZV90aGlja25lc3MgaW4gYHJvb3QnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZvbnQpOiBDaGFuZ2UgcG9pbnRfdHlwZQoJYW5kIHN0cm9rZV93aWR0aCB0byBwb2ludGVycy4KCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19Gb250SW5mbyk6IENoYW5nZSBpdGFsaWNfYW5nbGUsCglpc19maXhlZF9waXRjaCwgdW5kZXJsaW5lX3Bvc2l0aW9uLCBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyB0bwoJcG9pbnRlcnMuCgkqIHNyYy90eXBlMS90MXRva2Vucy5oOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLCBpc19maXhlZF9waXRjaCwKCXVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8gcG9pbnRlcnMuICBDaGFuZ2UKCXRoZSB0eXBlIG9mIHRoZSBsYXR0ZXIgdHdvIHRvIGBmaXhlZCcuCglDaGFuZ2UgdHlwZSBvZiBzdHJva2Vfd2lkdGggdG8gYGZpeGVkJyBhbmQgbWFrZSBpdCBhIHBvaW50ZXIuCglDaGFuZ2UgcGFpbnRfdHlwZSB0byBwb2ludGVyLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoVDFfRmFjZV9Jbml0KTogVXBkYXRlZC4KCUZpeCBhc3NpZ25tZW50IG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogQ2hhbmdlIGl0YWxpY19hbmdsZSwgaXNfZml4ZWRfcGl0Y2gsCgl1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvIHBvaW50ZXJzLiAgQ2hhbmdlCgl0aGUgdHlwZSBvZiB0aGUgbGF0dGVyIHR3byB0byBgZml4ZWQnLgoJQ2hhbmdlIHR5cGUgb2Ygc3Ryb2tlX3dpZHRoIHRvIGBmaXhlZCcuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9kb25lKTogVXBkYXRlZC4KCShjaWRfZmFjZV9pbml0KTogVXBkYXRlZC4KCUZpeCBhc3NpZ25tZW50IG9mIHVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogQ2hhbmdlIGl0YWxpY19hbmdsZSwgaXNfZml4ZWRfcGl0Y2gsCgl1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvIHBvaW50ZXJzLiAgQ2hhbmdlIHRoZQoJdHlwZSBvZiB0aGUgbGF0dGVyIHR3byB0byBgZml4ZWQnLgoJQ2hhbmdlIHR5cGUgb2Ygc3Ryb2tlX3dpZHRoIHRvIGBmaXhlZCcgYW5kIG1ha2UgaXQgYSBwb2ludGVyLgoJQ2hhbmdlIHBhaW50X3R5cGUgdG8gcG9pbnRlci4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBVcGRhdGVkLgoJRml4IGFzc2lnbm1lbnQgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoJKFQ0Ml9GYWNlX0RvbmUpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IEZpeCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oCgkocHNoX2dsb2JhbHNfc2V0X3NjYWxlKTogTWFrZSBpdCBhIGxvY2FsIGZ1bmN0aW9uLgoKCSogdGVzdC9ndmlldy5jOiBGaXggcmVuYW1pbmcgcHMzLT5wcyB0eXBvLgoJRm9ybWF0dGluZy4KCjIwMDMtMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5bY2hdLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuW2NoXTogUmVtb3ZlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uaDogUmVtb3ZlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5bY2hdOiBSZW5hbWVkIHRvLi4uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLltjaF06IE5ldyBmaWxlcy4KCXMvUFNIMy9QU0gvLgoJcy9wc2gzL3BzaC8uCglzL3BzMy9wcy8uCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcnVsZXMubWssIHNyYy9wc2hpbnRlci9KYW1maWxlOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuW2NoXSAocHNoX2RpbWVuc2lvbl9zbmFwX3dpZHRoKTogQ29tbWVudGVkCglvdXQuCgoJKiB0ZXN0cy9ndmlldy5jOiBSZW1vdmUgY29kZSBmb3IgcHNoYWxnbzEgYW5kIHBzaGFsZ28yLgoJVXBkYXRlZC4KCjIwMDMtMDUtMjggIE1hcnRpbiBaaW5zZXIgIDx6aW5zZXJAZGVjdXMuZGU+CgoJKiB2bXNfbWFrZS5jb206IFJld29ya2VkIHN1cHBvcnQgZm9yIHNoYXJlYWJsZSBpbWFnZXMgb24gVk1TLiAgVGhlCglmaXJzdCB2ZXJzaW9uIHdhcyBraW5kIG9mIGEgaGFjazsgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlCglwcm9jZWR1cmUgdG8gZXh0cmFjdCB0aGUgcmVxdWlyZWQgc3ltYm9scyBpcyBtdWNoIGNsZWFuZXIuCgoJUmV3b3JrZWQgY3JlYXRpb24gb2YgTU1TIGZpbGVzLCBhdm9pZGluZyBhIG51bWJlciBvZiB0ZW1wb3JhcnkgZmlsZXMKCXdoaWNoIHdlcmUgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgdmVyc2lvbi4KCglGdXJ0aGVyIHdvcmsgb24gY3JlYXRpbmcgZGVzY3JpcC5tbXMgZmlsZXMgb24gdGhlIGZseS4KCgkqIGJ1aWxkcy92bXMvZGVzY3JpcC5tbXMsIHNyYy9hdXRvaGludC9kZXNjcmlwLm1tcywKCXNyYy90eXBlMS9kZXNjcmlwLm1tczogUmVtb3ZlZC4KCjIwMDMtMDUtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYSk6IFNraXAKCWNvbnRvdXJzIHdpdGggb25seSBhIHNpbmdsZSBwb2ludCB0byBhdm9pZCBzZWdmYXVsdC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQWN0aXZhdGUgY29kZSBmb3IKCWhhbmRsaW5nIGBvcmlnaW4nLgoKMjAwMy0wNS0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfT1BUSU9OX05PX1NUUk9OR19JTlRFUlBPTEFUSU9OKToKCVJlbW92ZWQgc2luY2UgdW51c2VkLgoKMjAwMy0wNS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfc3RyY2F0KTogTmV3IHdyYXBwZXIgbWFjcm8KCWZvciBzdHJjYXQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jIChjcmVhdGVfbHdmbl9uYW1lKTogcy9pc3VwcGVyL2Z0X2lzdXBwZXIvLgoJKHBhcnNlX2ZvbnQpOiBzL21lbWNweS9mdF9tZW1jcHkvLgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogcy9tZW1jbXAvZnRfbWVtY21wLy4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGxvYWRfbWFjX2ZhY2UpIFtGVF9NQUNJTlRPU0hdOgoJcy9zdHJsZW4vZnRfc3RybGVuLy4KCXMvc3RyY2F0L2Z0X3N0cmNhdC8uCglzL3N0cmNweS9mdF9zdHJjcHkvLgoJKiBzcmMvZ3ppcC96dXRpbC5oOiBzL21lbXNldC9mdF9tZW1zZXQvLgoJcy9tZW1jbXAvZnRfbWVtY21wLy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfRmFjZV9Jbml0KTogVGVzdCBmb3IgY2hhcnNldCByZWdpc3RyeSBjYXNlLWluc2Vuc2l0aXZlbHkuCgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxfaW8pOiBSZXZlcnQgY2hhbmdlIGZyb20geWVzdGVyZGF5OwoJaXQgaGFzIGFscmVhZHkgYmVlbiBmaXhlZCBkaWZmZXJlbnRseS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChET19TRlZUTCk6IEFkZCBtaXNzaW5nIGJyYWNlcyBhcm91bmQKCWlmLWNsYXVzZS4KCjIwMDMtMDUtMjEgIE1hcnRpbiBaaW5zZXIgIDx6aW5zZXJAZGVjdXMuZGU+CgoJKiB0MWxvYWQuYyAocGFyc2VfYmxlbmRfYXhpc190eXBlcyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKCSogZGVzY3JpcC5tbXM6IFJlbW92ZWQuICBOb3cgY3JlYXRlZCBieS4uLgoKCSogdm1zX21ha2UuY29tOiBOZXcgZmlsZS4KCjIwMDMtMDUtMjEgIFdlaXFpIEdhbyAgPHdlaXFpZ2FvQG5ldHdvcmt1c2EubmV0PgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9pbyk6IEF2b2lkIHplcm8gdmFsdWUgb2YgYGRlbHRhJwoJdG8gcHJldmVudCBpbmZpbml0ZSBsb29wLgoKMjAwMy0wNS0yMSAgTGFycyBDbGF1c2VuICA8bHJjbGF1c2VAY3MudWl1Yy5lZHU+CgoJKiBkb2NzL1ZFUlNJT04uRExMOiBQcm92aWRlIGJldHRlciBhdXRvY29uZiBzbmlwcGV0IHRvIGNoZWNrCglGcmVlVHlwZSB2ZXJzaW9uLgoKMjAwMy0wNS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IEZyZWUgYGludGVybmFsJyBub3QKCWBmYWNlLT5pbnRlcm5hbCcgaW4gY2FzZSBvZiBlcnJvciB0byBhdm9pZCBwb3NzaWJsZSBzZWdmYXVsdC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBDaGVjayB3aGV0aGVyIHdlCglhY3R1YWxseSBoYXZlIGFuIG91dGxpbmUuCgoyMDAzLTA1LTIwICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogVHJ5IHRvIG9wdGltaXplCgl5X3NjYWxlIHNvIHRoYXQgdGhlIHRvcCBvZiBub24tY2FwaXRhbCBsZXR0ZXJzIGlzIGFsaWduZWQgb24gYSBwaXhlbAoJYm91bmRhcnkgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXMpOiBNYWtlIHN1cmUgdGhhdCBsb3dlcmNhc2UKCW0ncyBtYWludGFpbiB0aGVpciBzeW1tZXRyeS4KCjIwMDMtMDUtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBPb3BzISAgRGF2aWQncwoJcGF0Y2ggZnJvbSB5ZXN0ZXJkYXkgaGFzIGJlZW4gcmVzb2x2ZWQgYWxyZWFkeSBpbiBhIGRpZmZlcmVudAoJd2F5LiAgUmV2ZXJ0ZWQuCgoyMDAzLTA1LTE5ICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogRG9uJ3Qgc2NhbGUKCXlfc2NhbGUgbG9jYWxseSBidXQgZmFjZS0+c2l6ZS0+bWV0cmljcy55X3NjYWxlLgoKMjAwMy0wNS0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX25leHQpOiBTZWxlY3QgcHJvcGVyIHN0YXJ0Cgl2YWx1ZSBmb3IgYGhpJyB0byBhdm9pZCBpbmZpbml0ZSBsb29wLgoKMjAwMy0wNS0xOCAgWW9uZyBTdW4gIDxzdW55b25nQG5qc3Rhci5jb20+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKEluc2VydF9ZX1R1cm4pOiBGaXggb3ZlcmZsb3cgdGVzdC4KCjIwMDMtMDUtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggW0ZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTXToKCU5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IFVzZSBpdCB0byBjb250cm9sIG1hYyBmb250IHN1cHBvcnQgb24gbm9uLW1hYwoJcGxhdGZvcm1zLgoKMjAwMy0wNS0xNyAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJSW1wbGVtZW50IHBhcnRpYWwgc3VwcG9ydCBvZiBNYWMgZm9udHMgb24gbm9uLU1hYyBwbGF0Zm9ybXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAobWVtb3J5X3N0cmVhbV9jbG9zZSwgbmV3X21lbW9yeV9zdHJlYW0sCglvcGVuX2ZhY2VfZnJvbV9idWZmZXIsIE1hY19SZWFkX1BPU1RfUmVzb3VyY2UsCglNYWNfUmVhZF9zZm50X1Jlc291cmNlLCBJc01hY1Jlc291cmNlLCBJc01hY0JpbmFyeSwgbG9hZF9tYWNfZmFjZSkKCVshRlRfTUFDSU5UT1NIXTogTmV3IGZ1bmN0aW9ucy4KCShGVF9PcGVuX0ZhY2UpIFshRlRfTUFDSU5UT1NIXTogVXNlIGxvYWRfbWFjX2ZhY2UuCgoyMDAzLTA1LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFNjYWxlIGxpbmVhciBhZHZhbmNlIHdpZHRoIG9ubHkKCWlmIEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSBpcyBzZXQgKG90aGVyd2lzZSB3ZSBoYXZlIGEgZGl2aXNpb24gYnkKCXplcm8gc2luY2UgRk5UIGFuZCBmcmllbmRzIGRvbid0IGRlZmluZSBgZmFjZS0+dW5pdHNfcGVyX0VNJykuCgoyMDAzLTA1LTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfUm90YXRlKTogQXZvaWQgcm91bmRpbmcgZXJyb3JzCglmb3Igc21hbGwgdmFsdWVzLgoKMjAwMy0wNS0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfUG9pbnRSZWMpOiBSZW1vdmUgdW51c2VkIGBpbl9hbmdsZScKCWFuZCBgb3V0X2FuZ2xlJyBmaWVsZHMuCgoyMDAzLTA1LTE0ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKEZUX05ld19GYWNlX0Zyb21fU0ZOVCk6IEhhbmRsZSBDRkYgZmlsZXMgYWxzby4KCjIwMDMtMDUtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4IHR5cG8gaW4gY29tbWVudAoJKEZUX0hBU19GSVhFRF9TSVpFUykuCgoyMDAzLTA1LTEwICBEYW4gV2lsbGlhbXMgIDxkYW5AYmlndy5vcmc+CgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBDb21tZW50IG91dCBkZWZpbml0aW9uIG9mCglgYWxsb3dfdW5kZWZpbmVkX2ZsYWcnIGZvciBEYXJ3aW4gMS4zLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEFkZCBvcHRpb24gLS13aXRoLW9sZC1tYWMtZm9udHMuCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogRml4IHZlcnNpb24gbnVtYmVyaW5nIGZvciBEYXJ3aW4gMS4zLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogRml4IGNvbmRpdGlvbnMgZm9yIGRlZmluaW5nCglgRlRfTUFDSU5UT1NIJy4KCSogc3JjL2Jhc2UvZnRiYXNlLmM6IEluY2x1ZGUgYGZ0bWFjLmMnIGNvbmRpdGlvbmFsbHkuCgkqIHNyYy9iYXNlL2Z0bWFjLmM6IEhhbmRsZSBfX0dOVUNfXy4KCjIwMDMtMDUtMDcgIFlBTUFOTy1VQ0hJIEhpZGV0b3NoaSAgPG1lckBkaW4ub3IuanA+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoaXNfYWxwaGEpOiBSZW1vdmVkLgoJKGNpZF9wYXJzZV9kaWN0KTogVXNlIGBjaWRfcGFyc2VyX3NraXBfYWxwaGEnIGluc3RlYWQgb2YgYGlzX2FscGhhJy4KCjIwMDMtMDUtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haG9wdGltLmMsIHNyYy9hdXRvaGludC9haG9wdGltLmg6IE9ic29sZXRlLCByZW1vdmVkLgoKMjAwMy0wNS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfc2V0dXBfdXYpOiBFeGNoYW5nZSBgZm9yJyBsb29wIGFuZAoJYHN3aXRjaCcgc3RhdGVtZW50IHRvIG1ha2UgaXQgcnVuIGZhc3Rlci4KCShhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMpOiBSZXNldCBgc2VnbWVudC0+c2NvcmUnIGFuZAoJYHNlZ21lbnQtPmxpbmsnLgoJKGFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IFByb3ZpZGUgYWx0ZXJuYXRpdmUgY29kZSB3aGljaCBkb2VzCgl0aGUgc2FtZSBidXQgcnVucyBtdWNoIGZhc3Rlci4KCUhhbmRsZSBtYWpvciBkaXJlY3Rpb24gYWxzby4KCShhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpOiBTY2FsZSBgZWRnZV9kaXN0YW5jZV90aHJlc2hvbGQnIGRvd24KCWFmdGVyIHJvdW5kaW5nIGluc3RlYWQgb2Ygc2NhbGluZyBjb21wYXJpc29uIHZhbHVlIGluIGxvb3AuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl9zdG9uZ19wb2ludHMpOiBQcm92aWRlCglhbHRlcm5hdGl2ZSBjb2RlIHdoaWNoIHJ1bnMgZmFzdGVyLgoJSGFuZGxlIGBiZWZvcmUtPnNjYWxlID09IDAnLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfU2VnbWVudFJlYyk6IE1vdmUgc29tZSBmaWVsZHMgZG93bi4KCShBSF9FZGdlUmVjKTogTW92ZSBzb21lIGZpZWxkcyBpbiBzdHJ1Y3R1cmUuCglOZXcgZmllbGQgYHNjYWxlJy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9uZXh0KTogVXNlIGJpbmFyeSBzZWFyY2guCgoyMDAzLTA1LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhvcHRpbS5jIChMT0cpOiBSZW5hbWVkIHRvLi4uCgkoQUhfT1BUSU1fTE9HKTogVGhpcy4KCShBSF9EdW1wX1NwcmluZ3MpOiBGaXggbG9nIG1lc3NhZ2UgZm9ybWF0LgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMpOiBSZW5hbWVkIHRvLi4uCgkoYWhfaGludF9lZGdlcyk6IFRoaXMuCgoyMDAyLTA1LTAyICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9TZXRfUGl4ZWxfU2l6ZSk6IEluaXRpYWxpemUgYG1heF9hZHZhbmNlJy4KCjIwMDMtMDUtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX3Rlc3RfZXh0cmVtYSk6IFJlbmFtZWQgdG8uLi4KCShhaF90ZXN0X2V4dHJlbXVtKTogVGhpcy4KCjIwMDMtMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogR2VuZXJhdGUgYGZyZWV0eXBlLnBjJyBmcm9tCglgZnJlZXR5cGUuaW4nLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsLCB1bmluc3RhbGwpOiBIYW5kbGUgYGZyZWV0eXBlLnBjJy4KCjIwMDMtMDQtMjggIEd1c3Rhdm8gSi4gQS4gTS4gQ2FybmVpcm8gIDxnamNAaW5lc2Nwb3J0by5wdD4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5pbjogTmV3IGZpbGUuICBDb250YWlucyBidWlsZGluZyBpbmZvcm1hdGlvbgoJZm9yIHRoZSBgcGtnLWNvbmZpZycgcGFja2FnZS4KCjIwMDMtMDQtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogRml4IGJvdW5kYXJ5IGNoZWNrIGZvcgoJYGdseXBoX2luZGV4Jy4KCjIwMDMtMDQtMjU6ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJQWRkZWQgdGhlIG9wdGlvbmFsIHVucGF0ZW50ZWQgaGludGluZyBzeXN0ZW0gZm9yIFRydWVUeXBlLiAgSXQKCWFsbG93cyB0eXBlZmFjZXMgd2hpY2ggbmVlZCBoaW50aW5nIHRvIHByb2R1Y2UgY29ycmVjdCBnbHlwaCBmb3JtcwoJKGUuZy4sIENoaW5lc2UgdHlwZWZhY2VzIGZyb20gRHluYWxhYikgdG8gd29yayBhY2NlcHRhYmx5IHdpdGhvdXQKCWluZnJpbmdpbmcgQXBwbGUgcGF0ZW50cy4gIFRoaXMgc3lzdGVtIGlzIGNvbXBpbGVkIG9ubHkgaWYKCVRUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcgaXMgZGVmaW5lZCBpbgoJZnRvcHRpb24uaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR1bnBhdC5oOiBOZXcgZmlsZS4gIERlZmluZXMKCUZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9UUlVFVFlQRV9VTlBBVEVOVEVEX0gpOiBOZXcKCW1hY3JvIHRvIHVzZSB3aGVuIGluY2x1ZGluZyB0dHVucGF0LmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORywKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HKTogTmV3IGNvbmZpZ3VyYXRpb24gbWFjcm9zCgkobm90IGRlZmluZWQsIGJ1dCBpbiBjb21tZW50cykgZm9yIHRoZSB1bnBhdGVudGVkIGhpbnRpbmcgc3lzdGVtLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0ZhY2VSZWMpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IE5ldyBlbGVtZW50ICJGVF9Cb29sCgl1bnBhdGVudGVkX2hpbnRpbmciLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKE5PX0FQUExFX1BBVEVOVCwgQVBQTEVfVEhSRVNIT0xEKToKCVJlbW92ZWQuCgkoR1VFU1NfVkVDVE9SKTogTmV3IG1hY3JvLgoJKFRUX1J1bl9Db250ZXh0KSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglTZXQgYGJvdGhfeF9heGlzJy4KCSh0dF9kZWZhdWx0X2dyYXBoaWNzX3N0YXRlKQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBVcGRhdGVkLgoJKEN1cnJlbnRfUmF0aW8pIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXToKCUhhbmRsZSBgdW5wYXRlbnRlZF9oaW50aW5nJy4KCShEaXJlY3RfTW92ZSkgW05PX0FQUExFX1BBVEVOVF06IFJlbW92ZWQuCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEluc2VydCBhc3NlcnRpb24uCgkoUHJvamVjdCwgRnJlZVByb2plY3QpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEluc2VydCBhc3NlcnRpb24uCgkoQ29tcHV0ZV9GdW5jcykgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJSW1wbGVtZW50IHVucGF0ZW50ZWQgaGludGluZy4KCShET19TUFZUQ0EsIERPX1NGVlRDQSwgRE9fU1BWVEwsIERPX1NGVlRMLCBET19TUFZGUywgRE9fU0ZWRlMsCglJbnNfU0RQVlRMKTogQ2FsbCBgR1VFU1NfVkVDVE9SJy4KCShET19HUFYsIERPX0dGVikgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJSGFuZGxlIGB1bnBhdGVudGVkX2hpbnRpbmcnLgoJKENvbXB1dGVfUG9pbnRfRGlzcGxhY2VtZW50KSBbTk9fQVBQTEVfUEFURU5UXTogUmVtb3ZlZC4KCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW1wbGVtZW50IHVucGF0ZW50ZWQKCWhpbnRpbmcuCgkoTW92ZV9acDJfUG9pbnQsIEluc19TSFBJWCwgSW5zX0RFTFRBUCwgSW5zX0RFTFRBQykKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW1wbGVtZW50IHVucGF0ZW50ZWQKCWhpbnRpbmcuCgkoVFRfUnVuSW5zKTogVXBkYXRlZC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYwoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbmNsdWRlCglGVF9UUlVFVFlQRV9VTlBBVEVOVEVEX0guCgkodHRfZmFjZV9pbml0KSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORywKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HXTogQ2hlY2sKCUZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmggKFRUX0dyYXBoaWNzU3RhdGUpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEFkZCBgYm90aF94X2F4aXMnLgoKMjAwMy0wNC0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoaGFzaF9idWNrZXQsIGhhc2hfbG9va3VwKTogVXNlIGBjb25zdCcgZm9yIGZpcnN0Cglhcmd1bWVudC4KCShiZGZfZ2V0X2ZvbnRfcHJvcGVydHkpOiBVc2UgYGNvbnN0JyBmb3IgdGhpcmQgYXJndW1lbnQuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBTZXQgcGl4ZWwgd2lkdGggYW5kIGhlaWdodAoJc2ltaWxhciB0byB0aGUgUENGIGRyaXZlci4KCSogc3JjL2JkZi9iZGYuaCAoX2hhc2hub2RlKTogVXNlIGBjb25zdCcgZm9yIGBrZXknLgoJVXBkYXRlZC4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiBDKysgZG9lc24ndCBsaWtlIHRoYXQgdGhlIGFycmF5IGBpbmZsYXRlX21hc2snCglpcyBkZWNsYXJlZCB0d2ljZS4gIEl0IGlzIHBlcmhhcHMgYmV0dGVyIHRvIG1vZGlmeSB0aGUgemxpYiBzb3VyY2UKCWZpbGVzIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhpcyBoYWNrLgoJKHpjYWxsb2MsIHpmcmVlLCBmdF9nemlwX3N0cmVhbV9jbG9zZSwgZnRfZ3ppcF9zdHJlYW1faW8pOiBBZGQgY2FzdHMKCXRvIG1ha2UgYnVpbGQgd2l0aCBnKysgc3VjY2Vzc2Z1bC4KCjIwMDMtMDQtMjQgIE1hbmlzaCBTaW5naCAgPHlvc2hAZ2ltcC5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoY2lkX2ZhY2VfaW5pdCksIHNyYy90eXBlMS90MW9ianMuYwoJKFQxX0ZhY2VfSW5pdCksIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogU3BsaXQgb24gYC0nCglhbHNvIGZvciBzZWFyY2hpbmcgdGhlIHN0eWxlIG5hbWUuCgoyMDAzLTA0LTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEZpeGVkIHRoZSBjb21wdXRhdGlvbiBvZgoJZmFjZS0+bnVtX2dseXBocy4gIFdlIG11c3QgaW5jcmVhc2UgdGhlIHZhbHVlIGJ5IDEgdG8gcmVzcGVjdCB0aGUKCWNvbnZlbnRpb24gdGhhdCBnbHlwaCBpbmRleCAwIGFsd2F5cyBjb3JyZXNwb25kcyB0byB0aGUgIm1pc3NpbmcKCWdseXBoIi4KCjIwMDMtMDQtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKENGTEFHUyk6IEFkZCBAQ1BQRkxBR1NALgoKMjAwMy0wNC0yNCAgRGlldGVyIEJhcm9uICA8ZGlsbG9AbmV0YnNkLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiAoY2ZsYWdzKTogRW1pdCBGcmVlVHlwZSAyJ3MgaW5jbHVkZQoJZmlsZXMgZmlyc3QuICBPdGhlcndpc2UgdGhlcmUgYXJlIGNvbmZsaWN0cyB3aXRoIEZyZWVUeXBlIDEKCWluc3RhbGxlZCBzaW11bHRhbmVvdXNseS4KCjIwMDMtMDQtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGaXhpbmcgYnVncyByZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYyAoRlRfU3Ryb2tlcl9QYXJzZU91dGxpbmUpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZSBgaW5fcGF0aCcuCgoJKiBzcmMvYmFzZS9mdG9ianMgKGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKTogQ2hhbmdlIHR5cGUgb2YKCXNlY29uZCBhcmd1bWVudCB0byBgRlRfQnl0ZSonLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9yZWFkc3RyZWFtKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgcmVzJy4KCShfYmRmX3BhcnNlX2dseXBocyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG5leHQnLgoJTWFyayBgY2FsbF9kYXRhJyBhcyB1bnVzZWQuCgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1TGlzdF9Mb29rdXApOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgcGxhc3QnLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBTbGlnaHQgcmVjb2RpbmcgdG8KCWFjdHVhbGx5IHVzZSBgZXJyb3InLgoJKHBjZl9sb2FkX2ZvbnQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBhdmd3Jy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9nZXRfa2VybmluZyk6IENoYW5nZSByZXR1cm4gdHlwZQoJdG8gYHZvaWQnLgoJTWFyayBgZXJyb3InIGFzIHVudXNlZC4KCSogc3JjL3Bmci9wZnJvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2dldF9rZXJuaW5nKTogVXBkYXRlZC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBmb3JtYXRfdGFnJy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDZfdmFsaWRhdGUsIHR0X2NtYXAxMF92YWxpZGF0ZSk6IFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlIGBzdGFydCcuCgkodHRfY21hcDEwX2NoYXJfbmV4dCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHJlc3VsdCcKCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9mYWNlX2dldF9uYW1lKTogTWFyayBgZXJyb3InIGFzIHVudXNlZC4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IE1hcmsgYGVycm9yJyBhcwoJdW51c2VkLgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgcHNoaW50ZXInLgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFVzZSBgZ2x5cGhfZGF0YV9sb2FkZWQnCglvbmx5IGZvciBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMLgoKMjAwMy0wNC0yMyAgQWtpdG8gSGlyYWkgIDxha2l0b0BrZGUuZ3IuanA+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlKTogUHJvdmlkZSBhIHdlYWsgdmFyaWFudAoJb2YgdGhlIGdseXBoIElEIGJvdW5kaW5nIGNoZWNrIGlmIEZUX1ZBTElEQVRFX1RJR0hUIGlzIG5vdCBhY3RpdmUuCglXaXRob3V0IHRoaXMgY2hhbmdlLCBtYW55IENKSyBmb250cyBmcm9tIER5bmFsYWIgYXJlIHJlamVjdGVkLgoKMjAwMy0wNC0yMyAgSm9lIE1hcmN1cyBDbGFya2UgIDxtYXJjdXNARnJlZUJTRC5vcmc+CgoJKiBzcmMvYmFzZS9mdGJkZi5jIChGVF9HZXRfQkRGX1Byb3BlcnR5KTogQ2hlY2sgZm9yIHZhbGlkCglgZ2V0X2ludGVyZmFjZScuCgoyMDAzLTA0LTIzICBQYXVsIE1pbGxlciAgPHBhdWxtQHByb2ZvdW5kZWZmZWN0cy5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwYXJzZV9mb25kKTogRml4IGhhbmRsaW5nIG9mIHN0eWxlIG5hbWVzLgoKMjAwMy0wNC0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfZm9udF9pZCk6IFVzZSBGVF9QdHJEaXN0CglpbnN0ZWFkIG9mIEZUX1VpbnQgZm9yIGBsZW4nLgoKMjAwMy0wNC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKHpjYWxsb2MpIFshRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQl06CglDb252ZXJ0IEsmUiBmb3JtYXQgdG8gbW9kZXJuIEMgdXNhZ2UuCgkoRlRfU3RyZWFtX09wZW5HemlwKTogVXNlIGxvbmcgY29uc3RhbnQuCgoyMDAzLTA0LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2NhY2hlX2xvb2t1cCk6IFJlbW92ZSBzaGFkb3cgZGVjbGFyYXRpb24KCW9mIGBtYW5hZ2VyJy4KCjIwMDMtMDQtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvYy9JTlNUQUxMLlVOWDogQ2xlYW5lZCB1cC4KCjIwMDMtMDQtMDkgIFRvcnJleSBMeW9ucyAgPHRvcnJleUBtcmNsYS5jb20+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChvcGVuX2ZhY2VfZnJvbV9idWZmZXIpOiBSZW1vdmVkIGEgZG91YmxlLWZyZWUKCWJ1ZyB0aGF0IGhhZCBuYXN0eSBjb25zZXF1ZW5jZXMgd2hlbiB0cnlpbmcgdG8gb3BlbiBhbiAiaW52YWxpZCIKCWZvbnQgb24gYSBNYWMuCgoyMDAzLTA0LTA5ICBNaWtlIEZhYmlhbiAgPG1mYWJpYW5Ac3VzZS5kZT4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuaCAoQkRGX2VuY29kaW5nX2VsKSwgc3JjL3BjZi9wY2YuaAoJKFBDRl9FbmNvZGluZ1JlYyk6IENoYW5nZWQgRlRfU2hvcnQgdG8gRlRfVVNob3J0IGluIG9yZGVyIHRvIGJlIGFibGUKCXRvIGFjY2VzcyBtb3JlIHRoYW4gMzI3NjggZ2x5cGhzIGluIGZvbnRzLgoKMjAwMy0wNC0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjQgaXMgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMy0wNC0wMyAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogRml4ZWQgdGhlIGNvZGUgdG8gbWFrZSBpdAoJaGFuZGxlIHNwZWNpYWwgY2FzZXMgd2hlcmUgYSBmb250IG9ubHkgY29udGFpbnMgYSAiLm5vdGRlZiIgZ2x5cGgKCShoYXBwZW5zIGluIFBERi1lbWJlZGRlZCBmb250cykuICBPdGhlcndpc2UsIEZUX1BhbmljIHdhcyBjYWxsZWQuCgoyMDAzLTAzLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUU6IFVkcGF0ZWQuCgoJKiBSRUFETUUuVU5YOiBSZW1vdmVkIChub3cgcmVwbGFjZWQgYnkgZG9jcy9JTlNUQUxMLlVOWCkuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYzogVGhlIGhpbnRlciBub3cgcGVyZm9ybXMgYXMgaW4gMi4xLjMgYW5kCgl3aWxsIGlnbm9yZSBzdGVtIHF1YW50aXphdGlvbiBvbmx5IHdoZW4gRlRfTE9BRF9UQVJHRVRfU01PT1RIIGlzCgl1c2VkLgoJKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IEVuYWJsZWQuCgkocHNoM19oaW50X2FsaWduKTogRW5hYmxlIGNvbW1lbnRlZCBjb2RlLgoJKHBzaDNfaGludF9hbGlnbl9saWdodCk6IENvbW1lbnRlZCBvdXQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSk6IENoYW5nZWQgdGhlIGRlZmF1bHQKCWNvbXB1dGF0aW9ucyB0byBpbmNsdWRlIHJvdW5kaW5nIGluIGFsbCBjYXNlczsgdGhpcyBpcyByZXF1aXJlZCB0bwoJcHJvdmlkZSBhY2N1cmF0ZSBrZXJuaW5nIGRhdGEgd2hlbiBuYXRpdmUgVHJ1ZVR5cGUgaGludGluZyBpcwoJZW5hYmxlZC4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfbmFtZV9jaGFyKTogVGhlIFR5cGUgMSBsb2FkZXIgbm93IGFjY2VwdHMKCW1vcmUgZ2VuZXJhbCBuYW1lcyBhY2NvcmRpbmcgdG8gdGhlIFBvc3RTY3JpcHQgc3BlY2lmaWNhdGlvbiAodGhlCglwcmV2aW91cyBvbmUgd2FzIHRvbyByZXN0cmljdGl2ZSkuCgkocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9lbmNvZGluZywgcGFyc2VfY2hhcnN0cmluZ3MsIHBhcnNlX2RpY3QpOgoJVXNlIGBpc19uYW1lX2NoYXInLgoJKHBhcnNlX3N1YnJzKTogSGFuZGxlIGVtcHR5IGFycmF5cy4KCjIwMDMtMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTZXJpb3VzIHJld3JpdGluZyBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KCgkqIGRvY3MvQlVHUywgZG9jcy9CVUlMRDogUmVtb3ZlZC4KCSogZG9jcy9ERUJVRy5UWFQ6IFJlbmFtZWQgdG8uLi4KCSogZG9jcy9ERUJVRzogVGhpcy4KCSogZG9jcy9DVVNUT01JWkUsIGRvY3MvVFJVRVRZUEUsIGRvY3MvVVBHUkFERS5VTlg6IE5ldyBmaWxlcy4KCSogZG9jcy9JTlNUQUxMLkFOWSwgZG9jcy9JTlNUQUxMLlVOWCwgZG9jcy9JTlNUQUxMLkdOVSBOZXcgZmlsZXMsCgljb250YWluaW5nIHBsYXRmb3JtIHNwZWNpZmljIGluZm9ybWF0aW9uIHByZXZpb3VzbHkgaW4gSU5TVEFMTC4KCSogZG9jcy9yZWFkbWUudm1zOiBSZW5hbWVkIHRvLi4uCgkqIGRvY3MvSU5TVEFMTC5WTVM6IFRoaXMuCgoJKiBkb2NzLyo6IFVwZGF0ZWQuCgoJSW50cm9kdWNlZCB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIGRlYWwgd2l0aCBnbHlwaCBiaXRtYXBzIHdpdGhpbgoJRlRfR2x5cGhTbG90IG9iamVjdHM6CgoJICBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAKCSAgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcAoJICBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcAoKCVRoZXNlIGZ1bmN0aW9ucyBhcmUgbXVjaCBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIHRoYW4gbWFuYWdpbmcgdGhlCglGVF9HTFlQSF9PV05fQklUTUFQIGZsYWcgbWFudWFsbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAsCglmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwLCBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnQgdGhlbS4KCShmdF9nbHlwaHNsb3RfZG9uZSk6IFVzZSBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9HbHlwaF9Mb2FkKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbWVtb3J5Jy4KCVVzZSBgZnRfZ2x5cGhzbG90XyonIGZ1bmN0aW9ucy4KCURvbid0IHNldCBgRlRfR0xZUEhfT1dOX0JJVE1BUCcuCgoJKiBzcmMvcGZyL3BmcnNiaXQuYyAocGZyX3Nsb3RfbG9hZF9iaXRtYXApOiBVc2UKCWBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwJy4KCgkqIHNyYy9zZm50L3R0c2JpdC5jIChMb2FkX1NCaXRfSW1hZ2UpOiBDaGFuZ2UgNXRoIGFyZ3VtZW50IHRvIHR5cGUKCWBGVF9HbHlwaFNsb3QnLgoJQWRkaW5nIGFyZ3VtZW50IGBkZXB0aCcgdG8gaGFuZGxlIHJlY3Vyc2l2ZSBjYWxscy4KCVVzZSBgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCcuCgkodHRfZmFjZV9sb2FkX3NiaXRfaW1hZ2UpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtZW1vcnknLgoJRG9uJ3QgaGFuZGxlIGBGVF9HTFlQSF9PV05fQklUTUFQJy4KCVVwZGF0ZSBjYWxsIHRvIExvYWRfU0JpdF9JbWFnZS4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChmdF9nbHlwaHNsb3RfY2xlYXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2dseXBoc2xvdF9jbGVhcik6IFRoaXMuICBVcGRhdGVkIGNhbGxlci4KCUNhbGwgYGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCcuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogVXNlCglgZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAnLgoJRG9uJ3QgaGFuZGxlIGBGVF9HTFlQSF9PV05fQklUTUFQJy4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVMaXN0X0xvb2t1cCk6IEZpeGVkIGFuIGludmFsaWQgYXNzZXJ0aW9uCgljaGVjay4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCk6IEFkZCB0d28gc2NhbGluZwoJYXJndW1lbnRzLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5oOiBVcGRhdGVkLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogVXBkYXRlZC4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKGFoX2hpbnRlcl9jb21wdXRlX3dpZHRocyk6IFVwZGF0ZWQuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2ZhbWlseV9kb25lKTogRml4ZWQgc21hbGwgYnVnIHRoYXQgY291bGQKCWNyYXNoIHRoZSBjYWNoZSBpbiByYXJlIGNpcmN1bXN0YW5jZXMgKG1vc3RseSB3aXRoIGJyb2tlbiBmb250cykuCgoyMDAzLTAzLTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBGaXhlZCBhIHNtYWxsIHJvdW5kaW5nCglidWcuICBBY3R1YWxseSwgaXQgc2VlbXMgdGhhdCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBGcmVlVHlwZSBkaWRuJ3QKCXBlcmZvcm0gVHJ1ZVR5cGUgcm91bmRpbmcgZXhhY3RseSBhcyBhcHByb3ByaWF0ZS4KCjIwMDMtMDMtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IEZpeGluZyB0aGUgc21hbGwKCVRydWVUeXBlIG5hdGl2ZSByZW5kZXJpbmcgZ2xpdGNoZXM7IHRoZXkgY2FtZSBmcm9tIGEgc21hbGwgcm91bmRpbmcKCWVycm9yLgoKMjAwMy0wMy0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY29udHJvbCBtZW1vcnkgZGVidWdnaW5nIHdpdGgKCUZyZWVUeXBlLiAgU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiAiRlQyX0RFQlVHX01FTU9SWSIsCgkiRlQyX0FMTE9DX1RPVEFMX01BWCIgYW5kICJGVDJfQUxMT0NfQ09VTlRfTUFYIiBpbiBERUJVRy5UWFQuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChGVF9NZW1UYWJsZVJlYyk6IEFkZCBgYWxsb2NfY291bnQnLAoJYGJvdW5kX3RvdGFsJywgYGFsbG9jX3RvdGFsX21heCcsIGBib3VuZF9jb3VudCcsIGBhbGxvY19jb3VudF9tYXgnLgoJKGZ0X21lbV9kZWJ1Z19hbGxvYyk6IEhhbmRsZSBuZXcgdmFyaWFibGVzLgoJKGZ0X21lbV9kZWJ1Z19pbml0KTogcy9GVF9ERUJVR19NRU1PUlkvRlQyX0RFQlVHX01FTU9SWS8uCglIYW5kbGUgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlcy4KCSogZG9jcy9ERUJVRy5UWFQ6IFVwZGF0ZWQuCgoJRml4ZWQgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gY29ycmVjdGx5IGRlYWwgd2l0aCBvdXQtb2YtbWVtb3J5Cgljb25kaXRpb25zLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3kpOiBDb21tZW50IG91dCBnZW5lcmljCgljaGVjay4KCShmdGNfY2FjaGVfbG9va3VwKTogSW1wbGVtZW50IGxvb3AuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IERlZmluZSBGVF9DT01QT05FTlQuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBIYW5kbGUKCUZUX0Vycl9PdXRfT2ZfTWVtb3J5LgoJKiBzcmMvY2FjaGUvZnRscnUuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9ERUJVR19ILgoJKEZUX0xydUxpc3RfTG9va3VwKTogSW1wbGVtZW50IGxvb3AuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZG9uZSk6IEZpeCBtZW1vcnkgbGVhay4KCShwZnJfZmFjZV9pbml0KTogRml4aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChyZWFsbG9jYXRlX3QxX3RhYmxlKTogRml4ZWQgYSBidWcgKG1lbW9yeQoJbGVhaykgdGhhdCBvbmx5IGhhcHBlbmVkIHdoZW4gYSB0cnkgdG8gcmVzaXplIGFuIGFycmF5IHdvdWxkIGVuZCBpbgoJYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb24uCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9jb252ZXJ0X2dseXBoKTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MgLyB2b2xhdGlsZSBidWcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2dseXBoem9uZV9kb25lKTogUmVtb3ZlZCBzZWdtZW50YXRpb24KCWZhdWx0IHRoYXQgaGFwcGVuZWQgaW4gdGlnaHQgbWVtb3J5IGVudmlyb25tZW50cy4KCjIwMDMtMDItMjggIFBpeGVsICA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbGVfZG9uZSk6IEZpeGVkIG1lbW9yeSBsZWFrOiBUaGUgWkxpYgoJc3RyZWFtIHdhcyBub3QgcHJvcGVybHkgZmluYWxpemVkLgoKMjAwMy0wMi0yNSAgQW50aG9ueSBGb2sgIDxhbnRob255QHRoaXpsaW51eC5jb20+CgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBJbmNsdWRlIEZUX1RSVUVUWVBFX0lEU19ILgoJKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogVGhlIGNtYXAgY2FjaGUgbm93CglzdXBwb3J0cyBVQ1MtNCBjaGFybWFwcyB3aGVuIGF2YWlsYWJsZSBpbiBBc2lhbiBmb250cy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvYmFzZS9mdG9ianMuYzogQ2hhbmdlZCAiYXNpYW4iIHRvICJBc2lhbiIKCWluIGNvbW1lbnRzLgoKMjAwMy0wMi0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9maWxsX291dHB1dCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNhdXNlZCBGcmVlVHlwZSB0byBsb29wIGVuZGxlc3NseSB3aGVuIHRyeWluZyB0byByZWFkIGNlcnRhaW4KCWNvbXByZXNzZWQgZ3ppcCBmaWxlcy4gIFRoZSBmb2xsb3dpbmcgdGVzdCByZXZlYWxzIHRoZSBidWc6CgoJICB0b3VjaCAwMTIzNDU2Nzg5IDsgZ3ppcCAwMTIzNDU2Nzg5IDsgZnRkdW1wIDAxMjM0NTY3ODkuZ3oKCglTZXZlcmFsIGZpeGVzIHRvIHRoZSBQRlIgZm9udCBkcml2ZXI6CgoJLSBUaGUgbGlzdCBvZiBhdmFpbGFibGUgZW1iZWRkZWQgYml0bWFwcyB3YXMgbm90IGNvcnJlY3RseSBzZXQgaW4KCSAgdGhlIHJvb3QgRlRfRmFjZVJlYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgZmFjZS4KCgktIFRoZSBnbHlwaCBsb2FkZXIgYWx3YXlzIHRyaWVkIHRvIGxvYWQgdGhlIG91dGxpbmVzIHdoZW4KCSAgRlRfTE9BRF9TQklUU19PTkxZIHdhcyBzcGVjaWZpZWQuCgoJLSBUaGUgdGFibGUgbG9hZGVkIG5vdyBzY2FucyBmb3IgKnVuZG9jdW1lbnRlZCogZWxlbWVudHMgb2YgYQoJICBwaHlzaWNhbCBmb250J3MgYXV4aWxpYXJ5IGRhdGEgcmVjb3JkLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8KCSAgcmV0cmlldmUgdGhlICJyZWFsIiBmYW1pbHkgYW5kIHN0eWxlIG5hbWVzLgoKCU5PVEUgVEhBVCBUSEVTRSBDSEFOR0VTIFRIRSBGQU1JTFkgTkFNRSBPRiBNQU5ZIFBGUiBGT05UUyEKCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfYXV4X25hbWVfbG9hZCk6IE5ldyBmdW5jdGlvbi4KCShwZnJfcGh5X2ZvbnRfZG9uZSk6IEZyZWUgYGZhbWlseV9uYW1lJyBhbmQgYHN0eWxlX25hbWUnIGFsc28uCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IEV4dHJhY3QgdXNlZnVsIGluZm9ybWF0aW9uIGZyb20gdGhlIGF1eGlsaWFyeQoJYnl0ZXMuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZG9uZSk6IFNldCBwb2ludGVycyB0byBOVUxMLgoJKHBmcl9mYWNlX2luaXQpOiBQcm92aWRlIGZhbGxiYWNrIHZhbHVlcyBmb3IgYGZhbWlseV9uYW1lJyBhbmQKCWBzdHlsZV9uYW1lJy4KCUhhbmRsZSBzdHJpa2VzLgoJKHBmcl9zbG90X2xvYWQpOiBIYW5kbGUgRlRfTE9BRF9TQklUU19PTkxZLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9QaHlGb250UmVjKTogQWRkIGZpZWxkcyBgYXNjZW50JywKCWBkZXNjZW50JywgYGxlYWRpbmcnLCBgZmFtaWx5X25hbWUnLCBhbmQgYHN0eWxlX25hbWUnLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogRml4ZWQgYSByb3VuZGluZyBidWcKCXdoZW4gY29tcHV0aW5nIHRoZSBzY2FsZSBmYWN0b3JzIGZvciBhIGdpdmVuIGNoYXJhY3RlciBzaXplIGluCglwb2ludHMgd2l0aCByZXNvbHV0aW9uLgoKCSogZGV2ZWwvZnQyYnVpbGQuaCwgZGV2ZWwvZnRvcHRpb24uaDogTmV3IGZpbGVzIChpbiBhIG5ldyBkaXJlY3RvcnkpCgl3aGljaCBhcmUgc3BlY2lhbCBkZXZlbG9wbWVudCB2ZXJzaW9ucyBvZiBpbmNsdWRlL2Z0MmJ1aWxkLmggYW5kCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCByZXNwZWN0aXZlbHkuCgoyMDAzLTAyLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIHRoZSBzbGlnaHQgZGlzdG9ydGlvbiBwcm9ibGVtIHRoYXQgb2NjdXJyZWQgZHVlIHRvIHRoZSBsYXRlc3QKCWF1dG8taGludGVyIGNoYW5nZXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZnRfcmVjb21wdXRlX3NjYWxlZF9tZXRyaWNzKTogRml4IHJvdW5kaW5nLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogTmV3IHZhcmlhYmxlIGBtZXRyaWNzMicuCglbIVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBSZW1vdmVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5oIChUVF9TaXplUmVjKTogTmV3IGZpZWxkIGBtZXRyaWNzJy4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChSZXNldF9PdXRsaW5lX1NpemUpOiBGaXggaW5pdGlhbGl6YXRpb24gb2YKCWBtZXRyaWNzJy4KCVtGVF9DT05GSUdfQ0hFU1RFUl9BU0NFTkRFUl06IENvZGUgcmVtb3ZlZC4KCShSZXNldF9TQml0X1NpemUpOiBGaXggaW5pdGlhbGl6YXRpb24gb2YgYG1ldHJpY3MnLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKFRUX0xvYWRfQ29udGV4dCk6IEZpeCBpbml0aWFsaXphdGlvbiBvZgoJYGV4ZWMtPm1ldHJpY3MnLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IERpc2FibGVkIHRoZSBhZHZhbmNlIHdpZHRoCgkiY29ycmVjdGlvbiIgd2hpY2ggc2VlbWVkIHRvIHByb3ZpZGUgbW9yZSB0cm91YmxlIHRoYW4gYmVuZWZpdHMuCgoyMDAzLTAyLTEzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJQ2hhbmdlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UgaW4gYSB3YXkgdGhhdCBtYWtlcyBpdAoJc2ltcGxlciBhbmQgYWxsb3dzIGdseXBoIG1ldHJpY3MgdG8gYmUgY2hhbmdlZCAoZS5nLiwgYnkgYWRkaW5nIGEKCWNvbnN0YW50LCBhcyByZXF1aXJlZCBieSBDRkYgZm9udHMpIHJhdGhlciB0aGFuIGp1c3Qgb3ZlcnJpZGRlbi4KCVRoaXMgd2FzIHJlcXVpcmVkIHRvIG1ha2UgdGhlIEdob3N0U2NyaXB0LXRvLUZyZWVUeXBlIGJyaWRnZSB3b3JrLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfc2xvdF9sb2FkKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglBbGxvdyBtZXRyaWNzIHRvIGJlIG92ZXJyaWRkZW4uCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCURpdHRvLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogU2ltcGxpZnkuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENvZGUgYmxvY2sKCW1vdmVkIGRvd24uCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oOiBVcGRhdGVkLgoKMjAwMy0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMLCBkb2NzL1RPRE86IFVwZGF0aW5nIGRvY3VtZW50YXRpb24KCWZvciB0aGUgMi4xLjQgcmVsZWFzZS4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwKCWJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWw6IFVwZGF0aW5nIHRoZSBwcm9qZWN0IGZpbGUgZm9yCgkyLjEuNC4KCgkqIHNyYy9nemlwL2FkbGVyMzIuYywgc3JjL2d6aXAvZnRnemlwLmMsIHNyYy9nemlwL2luZmJsb2NrLmMsCglzcmMvZ3ppcC9pbmZjb2Rlcy5jLCBzcmMvZ3ppcC9pbmZsYXRlLmMsIHNyYy9nemlwL2luZnRyZWVzLmMsCglzcmMvZ3ppcC9pbmZ1dGlsLmM6IFJlbW92ZWQgb2xkLXN0eWxlIChLJlIpZnVuY3Rpb24gZGVmaW5pdGlvbnMuCglUaGlzIGF2b2lkcyB3YXJuaW5ncyB3aXRoIFZpc3VhbCBDKysgYXQgaXRzIG1vc3QgcGVkYW50aWMgbW9kZS4KCgkqIHNyYy9wZnIvcGZyc2JpdC5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBDaGFuZ2VkIGFuIEZUX0VSUk9SCglpbnRvIGFuIEZUX1RSQUNFMSBzaW5jZSBpdCBjYXVzZWQgImZ0dmlldyIgYW5kIG90aGVycyB0byBkdW1wIHRvbwoJbXVjaCBqdW5rIHdoZW4gdHJ5aW5nIHRvIGRpc3BsYXkgYSB3YXRlcmZhbGwgd2l0aCBhIGZvbnQgd2l0aG91dCBhCglVbmljb2RlIGNoYXJtYXAgKGUuZy4gIFNZTUJPTC5UVEYpLgoKCUltcGxlbWVudGVkIEZUX0NPTkZJR19DSEVTVEVSX0JMVUVfU0NBTEUsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhc3QKCXBhdGNoIGZyb20gRGF2aWQgQ2hlc3RlciwgYnV0IHdpdGggYSBtdWNoIHNpbXBsZXIgKGFuZCBzYW5lcikKCWltcGxlbWVudGF0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfQ0hFU1RFUl9CTFVFX1NDQUxFXTogVHJ5IHRvIG9wdGltaXplIHRoZSB5X3NjYWxlIHNvIHRoYXQKCXRoZSB0b3Agb2Ygbm9uLWNhcGl0YWwgbGV0dGVycyBpcyBhbGlnbmVkIG9uIGEgcGl4ZWwgYm91bmRhcnkKCXdoZW5ldmVyIHBvc3NpYmxlLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpCglbRlRfQ09ORklHX0NIRVNURVJfQkxVRV9TQ0FMRV06IFJvdW5kIGRpZmZlcmVudGx5LgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpCglbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IERvIHNvbWUgcm91bmRpbmcgb25seQoJaWYgdGhpcyBtYWNybyBpcyBkZWZpbmVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChSZXNldF9PdXRsaW5lX1NpemUpCglbRlRfQ09ORklHX0NIRVNURVJfQVNDRU5ERVJdOiBSb3VuZCBkaWZmZXJlbnRseS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jOiBJbXByb3ZlZCB0aGUgUG9zdHNjcmlwdCBoaW50ZXIuICBHZXR0aW5nCglyaWQgb2Ygc3RlbSBzbmFwcGluZyBzZWVtcyB0byB3b3JrIHdlbGwgaGVyZSAodGhvdWdoIHRoZSBzdGVtcyBhcmUKCXN0aWxsIHNsaWdodGx5IG1vdmVkIHRvIGluY3JlYXNlIGNvbnRyYXN0KS4KCShwc2gzX2RpbWVuc2lvbl9xdWFudGl6ZV9sZW4pOiBDb21tZW50ZWQgb3V0LgoJKHBzaDNfaGludF9hbGlnbl9saWdodCk6IE5ldyBmdW5jdGlvbi4KCShwc2gzX2hpbnRfYWxpZ24pOiBDb21tZW50IG91dCBzb21lIGNvZGUuCgoJVEhJUyBJTVBST1ZFUyBBTlRJLUFMSUFTRUQgUkVOREVSSU5HLCBCVVQgTU9OT0NIUk9NRSBBTkQgTENEIE1PREVTCglTVElMTCBTVUNLLgoKMjAwMy0wMS0yMiAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBTbWFsbCBmaXggdG8gdGhlCglzdGVtIHdpZHRoIG9wdGltaXphdGlvbi4KCjIwMDMtMDEtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgYSBuZXcgQVBJIGBGVF9HZXRfQkRGX1Byb3BlcnR5JyB0byByZXRyaWV2ZSB0aGUgQkRGCglwcm9wZXJ0aWVzIG9mIGEgZ2l2ZW4gUENGIG9yIEJERiBmb250LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oIChGVF9Qcm9wZXJ0eVR5cGUpOiBOZXcgZW51bWVyYXRpb24uCgkoQkRGX1Byb3BlcnR5LCBCREZfUHJvcGVydHlSZWMpOiBOZXcgc3RydWN0dXJlLgoJRlRfR2V0X0JERl9Qcm9wZXJ0eSk6IE5ldyBmdW5jdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9iZGZ0eXBlcy5oOiBJbmNsdWRlIEZUX0JERl9ILgoJKEJERl9HZXRQcm9wZXJ0eUZ1bmMpOiBOZXcgZnVuY3Rpb24gcG9pbnRlci4KCgkqIHNyYy9iYXNlL2Z0YmRmLmMgKHRlc3RfZm9udF90eXBlKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KCShGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBVc2UgYHRlc3RfZm9udF90eXBlJy4KCShGVF9HZXRfQkRGX1Byb3BlcnR5KTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jOiBJbmNsdWRlIEZUX0JERl9ILgoJKGJkZl9nZXRfYmRmX3Byb3BlcnR5LCBiZGZfZHJpdmVyX3JlcXVlc3Rlcik6IE5ldyBmdW5jdGlvbnMuCgkoYmRmX2RyaXZlcl9jbGFzcyk6IFVzZSBgYmRmX2RyaXZlcl9yZXF1ZXN0ZXInLgoKCSogc3JjL3BjZi9wY2Zkcml2ci5jOiBJbmNsdWRlIEZUX0JERl9ILgoJKHBjZl9nZXRfYmRmX3Byb3BlcnR5LCBwZGNfZHJpdmVyX3JlcXVlc3Rlcik6IE5ldyBmdW5jdGlvbnMKCShwY2ZfZHJpdmVyX2NsYXNzKTogVXNlIGBwY2ZfZHJpdmVyX3JlcXVlc3RlcicuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogSW5jbHVkZSBgcGNmcmVhZC5oJy4KCShwY2ZfZmluZF9wcm9wZXJ0eSk6IERlY29yYXRlIGl0IHdpdGggRlRfTE9DQUxfREVGLgoJKiBzcmMvcGNmL3BjZnJlYWQuaDogTmV3IGZpbGUsIHByb3ZpZGluZyBgcGNmX2ZpbmRfcHJvcGVydHknLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogUmVsYXhlZCB0aGUgImhlYWQiIHRhYmxlIHNpemUKCXZlcmlmaWNhdGlvbiB0byBhY2NlcHQgYSBmZXcgYnJva2VuIGZvbnRzIHdobyBwYWQgdGhlIHNpemUKCWluY29ycmVjdGx5ICh0aGUgdGFibGUgc2hvdWxkIGJlIHBhZGRlZCwgYnV0IGl0cyAic2l6ZSIgZmllbGQKCXNob3VsZG4ndCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24pLgoKMjAwMy0wMS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNC4zLgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuNy4xLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkIHdpdGggYXV0b2NvbmYgMi41NC4KCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIGZyb20KCWBjb25maWcnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC1zaCwgYnVpbGRzL3VuaXgvbWtpbnN0YWxsZGlyczogVXBkYXRlZCBmcm9tCglgYXV0b21ha2UnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCjIwMDMtMDEtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4ZWQgZG9jdW1lbnRhdGlvbiBmb3IKCUZUX1NpemVfTWV0cmljcy4KCjIwMDMtMDEtMTUgIEphbWVzIFN1ICA8c3V6aGVAdHVyYm9saW51eC5jb20uY24+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9jaGVja19oZWFkZXIpOiBCdWdmaXg6IGNvdWxkbid0IHJlYWQKCWNlcnRhaW4gZ3ppcC1lZCBmb250IGZpbGVzICh0eXBvOiBgJiYnIC0+IGAmJykuCgoyMDAzLTAxLTE1ICBIdXcgRCBNIERhdmllcyAgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoKCUFkZGVkIGEgV2luZG93cyAuRk5UIHNwZWNpZmljIEFQSSAobW9zdGx5IGZvciBXaW5lKS4gIEFsc28gZml4ZWQgYQoJbmFzdHkgYnVnIGluIHRoZSBoZWFkZXIgbG9hZGVyIHdoaWNoIHdvdWxkIGNhdXNlIGludmFsaWQgbWVtb3J5CglvdmVyd3JpdGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfV0lORk9OVFNfSCk6IE5ldyBtYWNybwoJZm9yIGZ0d2luZm50LmguCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaDogSW5jbHVkZSBGVF9XSU5GT05UU19ILgoJKEZOVF9Gb250UmVjKTogVXBkYXRlZC4KCU1vdmUgV2luZG93cyBGTlQgZGVmaW5pdGlvbiB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0d2luZm50Lmg6IFRoaXMgbmV3IGZpbGUuCgkoRlRfV2luRk5UX0hlYWRlclJlYyk6IFJlbmFtZSBgcmVzZXJ2ZWQyJyB0byBgcmVzZXJ2ZWQxJy4KCSogc3JjL2Jhc2UvZnR3aW5mbnQuYzogTmV3IGZpbGUsIHByb3ZpZGluZyBgRlRfR2V0X1dpbkZOVF9IZWFkZXInLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKHdpbmZudF9oZWFkZXJfZmllbGRzKTogVXBkYXRlZC4KCVJlbmFtZSBgcmVzZXJ2ZWQyJyB0byBgcmVzZXJ2ZWQxJy4KCShmbnRfZm9udF9sb2FkKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL2Rlc2NyaXAubW1zLCBzcmMvYmFzZS9ydWxlcy5tazoKCVVwZGF0ZWQuCgoyMDAzLTAxLTE0ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaCwgc3JjL2Jhc2UvZnRnbHlwaC5jOiBBZGRlZCBgY29uc3QnIHRvCgl0aGUgdHlwZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gRlRfTWF0cml4X011bHRpcGx5LCB3aGljaCBpc24ndAoJY2hhbmdlZCAtLSB0aGlzIGFkZHMgZG9jdW1lbnRhdGlvbiBhbmQgY29udmVuaWVuY2UuCgoyMDAzLTAxLTEzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX21ldHJpY3MpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFRydWVUeXBlIHR5cGVmYWNlcyB3aXRob3V0Cglob3Jpem9udGFsIG1ldHJpY3MgKHdpdGhvdXQgdGhlIGBobXR4JyB0YWJsZSkgYXJlIG5vdyB0b2xlcmF0ZWQgaWYKCWFuIGluY3JlbWVudGFsIGludGVyZmFjZSBoYXMgYmVlbiBzcGVjaWZpZWQgdGhhdCBoYXMgYQoJZ2V0X2dseXBoX21ldHJpY3MgZnVuY3Rpb24sIGltcGx5aW5nIHRoYXQgbWV0cmljcyB3aWxsIGJlIHN1cHBsaWVkCglmcm9tIG91dHNpZGUuICBUaGlzIGhhcHBlbnMgZm9yIGNlcnRhaW4gVHlwZSA0MiBmb250cyBwYXNzZWQgZnJvbQoJR2hvc3RTY3JpcHQuCgoyMDAzLTAxLTExICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJUGF0Y2hlcyB0byB0aGUgYXV0by1oaW50ZXIgaW4gb3JkZXIgdG8gc2xpZ2h0bHkgaW1wcm92ZSB0aGUgb3V0cHV0LgoJTm90ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29udHJvbGxlZCB0aHJvdWdoIHRoZSBuZXcKCUZUX0NPTkZJR19PUFRJT05fQ0hFU1RFUl9ISU5UUyBkZWZpbmVkIGluICJmdG9wdGlvbi5oIi4gIFRoZXJlIGFyZQoJYWxzbyBpbmRpdmlkdWFsIEZUX0NPTkZJR19DSEVTVEVSX1hYWCBtYWNyb3MgdG8gY29udHJvbCBpbmRpdmlkdWFsCgkiZmVhdHVyZXMiLgoKCU5vdGUgdGhhdCBhbGwgaW1wcm92ZW1lbnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUKCXR3ZWFrZWQgZm9yIG9wdGltaXphdGlvbiBhbmQgdGVzdGluZyBwdXJwb3Nlcy4gIFRoZSBjb25maWd1cmF0aW9uCgltYWNyb3Mgd2lsbCBtb3N0IGxpa2VseSBkaXNhcHBlYXIgaW4gdGhlIHNob3J0IGZ1dHVyZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX0NIRVNURVJfSElOVFMpOiBOZXcgbWFjcm8uCgkoRlRfQ09ORklHX0NIRVNURVJfe1NNQUxMX0YsQVNDRU5ERVIsU0VSSUYsU1RFTSxCTFVFX1NDQUxFfSkKCVtGVF9DT05GSUdfT1BUSU9OX0NIRVNURVJfSElOVFNdOiBOZXcgbWFjcm9zIHRvIGNvbnRyb2wgaW5kaXZpZHVhbAoJZmVhdHVyZXMuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYmx1ZV9jaGFycykgW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOgoJQWRkIGJsdWUgem9uZSBmb3IgYGZpamtkYmgnLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuaCAoQUhfSVNfVE9QX0JMVUUpCglbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06IFVzZSBgQUhfQkxVRV9TTUFMTF9GX1RPUCcuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcykKCVtGVF9DT05GSUdfQ0hFU1RFUl9TRVJJRl06IFVzZSBgQUhfRURHRV9TRVJJRicuCgkoYWhfb3V0bGluZV9jb21wdXRlX2JsdWVfZWRnZXMpIFtGVF9DT05GSUdfQ0hFU1RFUl9TTUFMTF9GXToKCUluY3JlYXNlIHRocmVzaG9sZCBmb3IgYGJlc3RfZGlzdCcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKQoJW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogUHJvdmlkZSBuZXcgdmVyc2lvbiBmb3IgaW1wcm92ZWQgc2VyaWYKCWhhbmRsaW5nLgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKSBbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBVc2Ugc3BlY2lhbAoJdmVyc2lvbiBvZiBgYWhfY29tcHV0ZV9zdGVtX3dpZHRoJy4KCShhaF9oaW50X2VkZ2VzXzMpIFtGVF9DT05GSUdfQ0hFU1RFUl9TVEVNXTogQSBuZXcgYWxnb3JpdGhtIGZvciBzdGVtCglhbGlnbm1lbnQgd2hlbiBzdGVtIHdpZHRocyBhcmUgbGVzcyB0aGFuIDEuNSBwaXhlbHMgd2lkZSBjZW50ZXJzIHRoZQoJc3RlbSBzbGlnaHRseSBvZmYtY2VudGVyIG9mIHRoZSBjZW50ZXIgb2YgYSBwaXhlbCAodGhpcyBpbmNyZWFzZXMKCXNoYXJwbmVzcyBhbmQgY29uc2lzdGVuY3kpLgoJW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogVXNlIHNwZWNpYWwgdmVyc2lvbiBvZgoJYGFoX2NvbXB1dGVfc3RlbV93aWR0aCcuCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOiBBZGQKCWBBSF9CTFVFX1NNQUxMX0ZfVE9QJy4KCjIwMDMtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaCAoV2luRk5UX0hlYWRlclJlYyk6IEluY3JlYXNlCglzaXplIG9mIGByZXNlcnZlZDInIHRvIGF2b2lkIG1lbW9yeSBvdmVyd3JpdGVzLgoKMjAwMy0wMS0wOCAgSHV3IERhd2llcyAgPGh1d0Bjb2Rld2VhdmVycy5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKHdpbmZudF9oZWFkZXJfZmllbGRzKTogUmVhZCAxNiBieXRlcyBpbnRvCgkicmVzZXJ2ZWQyIiwgbm90ICJyZXNlcnZlZCIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZmluZF91bmljb2RlX2NoYXJtYXApOiBGaXhlZCB0aGUgZXJyb3IgY29kZQoJcmV0dXJuZWQgd2hlbiB0aGUgZm9udCBkb2Vzbid0IGNvbnRhaW4gYSBVbmljb2RlIGNoYXJtYXAuICBUaGlzCglhbGxvd3MgRlQyIHRvIGxvYWQgInN5bWJvbC50dGYiIGFuZCBhIGZldyBvdGhlcnMgY29ycmVjdGx5IHNpbmNlIHRoZQoJbGFzdCByZWxlYXNlLgoJKG9wZW5fZmFjZSk6IEZpeCByZXR1cm4gdmFsdWUuCgoyMDAzLTAxLTA4ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCglJbXBsZW1lbnRlZCB0aGUgRlRfUkVOREVSX01PREVfTElHSFQgaGludGluZyBtb2RlIGluIHRoZSBhdXRvIGFuZAoJcG9zdHNjcmlwdCBoaW50ZXJzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyUmVjKTogQWRkIGBkb19zdGVtX2FkanVzdCcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogSGFuZGxlCgloaW50ZXItPmRvX3N0ZW1fYWRqdXN0LgoJKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogU2V0IGhpbnRlci0+ZG9fc3RlbV9hZGp1c3QuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IEFkZCBgZG9fc3RlbV9hZGp1c3QnLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X2FsaWduKTogVXNlIGBkb19zdGVtX2FkanVzdCcuCgkocHMzX2hpbnRzX2FwcGx5KTogSGFuZGxlIEZUX1JFTkRFUl9NT0RFX0xJR0hULgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9SZW5kZXJfTW9kZSk6IEFkZAoJRlRfUkVOREVSX01PREVfTElHSFQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiBGaXhpbmcgdGhlIFRydWVUeXBlIGxvYWRlciB0byBoYW5kbGUKCWludmFsaWQgY29tcG9zaXRlcyBjb3JyZWN0bHkgYnkgbGltaXRpbmcgdGhlIHJlY3Vyc2lvbiBkZXB0aC4KCShUVF9NQVhfQ09NUE9TSVRFX1JFQ1VSU0UpOiBOZXcgbWFjcm8uCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IEFkZCBhcmd1bWVudCBgcmVjdXJzZV9jb3VudCcuCglMb2FkIGEgY29tcG9zaXRlIG9ubHkgaWYgdGhlIG51bWJlcnMgb2YgY29udG91cnMgaXMgLTEsIGVtaXQgZXJyb3IKCW90aGVyd2lzZS4KCShUVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCjIwMDMtMDEtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEphbXJ1bGVzLCBKYW1maWxlLCBKYW1maWxlLmluLCBzcmMvKi9KYW1maWxlOiBTbWFsbCBjaGFuZ2VzIHRvCglzdXBwb3J0IHRoZSBjb21waWxhdGlvbiBvZiBGcmVlVHlwZSAyIGFzIHBhcnQgb2YgbGFyZ2VyIHByb2plY3RzCgl3aXRoIHRoZWlyIG93biBjb25maWd1cmF0aW9uIG9wdGlvbnMgKG9ubHkgd2l0aCBKYW0pLgoKMjAwMy0wMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRzdHJva2VyLmM6IFByb2JhYmx5IHRoZSBsYXN0IGJ1Zy1maXhlcyB0byB0aGUgc3Ryb2tlcjsKCXRoZSBBUEkgaXMgbGlrZWx5IHRvIGNoYW5nZSwgaG93ZXZlci4KCShmdF9zdHJva2VfYm9yZGVyX2Nsb3NlKTogRG9uJ3QgcmVjb3JkIGVtcHR5IHBhdGhzLgoJKGZ0X3N0cm9rZV9ib3JkZXJfZ2V0X2NvdW50cyk6IEluY3JlYXNlIGBudW1fcG9pbnRzJyBhbHNvIGluIGZvciBsb29wLgoJKGZ0X3N0cm9rZV9ib3JkZXJfZXhwb3J0KTogRG9uJ3QgaW5jcmVhc2UgYHdyaXRlJyB0d2ljZSBpbiBmb3IgbG9vcHMuCgkoZnRfc3Ryb2tlcl9vdXRzaWRlKTogSGFuZGxlIGBwaGknIHRvZ2V0aGVyIHdpdGggYHRoZXRhJy4KCShGVF9TdHJva2VyX1BhcnNlT3V0bGluZSk6IE5ldyBmdW5jdGlvbi4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX0FuZ2xlX0RpZmYpOiBGaXhpbmcgZnVuY3Rpb246IEl0IHJldHVybmVkCglpbnZhbGlkIHZhbHVlcyBmb3IgbGFyZ2UgbmVnYXRpdmUgYW5nbGUgZGlmZmVyZW5jZXMgKHJlc3VsdGluZyBpbgoJaW5jb3JyZWN0IHN0cm9rZXIgY29tcHV0YXRpb25zLCBhbW9uZyBvdGhlciB0aGluZ3MpLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rKTogUmVtb3ZpbmcgaW5jb3JyZWN0Cglhc3NlcnRpb24sIGFuZCBjaGFuZ2luZyBjb2RlIHRvIGF2b2lkIGhhc2ggdGFibGUgc2l6ZSBjb250cmFjdGlvbi4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rLCBzcmMvYmFzZS9kZXNjcmlwLm1tczogQWRkaW5nCgkiZnRzdHJva2VyIiB0byBkZWZhdWx0IGJ1aWxkLCBhcyBvcHRpb25hbCBjb21wb25lbnQuCgoyMDAyLTEyLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvZ3ppcC9hZGxlcjMyLmMsIHNyYy9nemlwL2luZmJsb2NrLmMsIHNyYy9nemlwL2luZmxhdGUuYywKCXNyYy9nemlwL2luZnRyZWVzLmMsIHNyYy9nemlwL3pjb25mLmgsIHNyYy9nemlwL3psaWIuaCwKCXNyYy9nemlwL3p1dGlsLmg6IFVwZGF0ZXMgdG8gYWxsb3cgY29tcGlsYXRpb24gd2l0aG91dCBjb21waWxlcgoJd2FybmluZ3Mgd2l0aCBMQ0MtV2luMzIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogSW5jcmVhc2VkIHRvIDk6MzozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwMi0xMi0yMyAgQW50aG9ueSBGb2sgIDxhbnRob255QHRoaXpsaW51eC5jb20+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMsIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKExJTktfTElCUkFSWSksCglidWlsZHMvdW5peC91bml4LWRlZi5pbiAoU1lTVEVNX1pMSUIpOiBTbWFsbCBmaXggdG8gY29uZmlndXJlCglzdWItc3lzdGVtIG9uIFVuaXggdG8gYWxsb3cgb3RoZXIgcHJvZ3JhbXMgdG8gY29ycmVjdGx5IGxpbmsgd2l0aAoJemxpYiB3aGVuIG5lZWRlZC4KCjIwMDItMTItMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChTRk5UX0xvYWRfVGFibGVfRnVuYyk6IE5ldwoJZnVuY3Rpb24gcG9pbnRlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoRlRfTG9hZF9TZm50X1RhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW1wbGVtZW50IGl0LgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9nZXRfaW50ZXJmYWNlKTogSGFuZGxlIGBsb2FkX3NmbnQnCgltb2R1bGUgcmVxdWVzdC4KCjIwMDItMTItMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmaW5kX3VuaWNvZGVfY2hhcm1hcCk6IEFkZGVkIHNvbWUgY29tbWVudHMgdG8KCWJldHRlciBleHBsYWluIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuCgkob3Blbl9mYWNlKTogSW5jbHVkZWQgR3JhaGFtIEFzaGVyJ3MgZml4IHRvIHByZXZlbnQgZmFjZXMgd2l0aG91dAoJVW5pY29kZSBjaGFybWFwcyBmcm9tIGxvYWRpbmcuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IEluY2x1ZGVkIEdlb3JnZSBXaWxsaWFtcydzIGZpeCB0byBzdXBwb3J0Cgl2ZXJzaW9uIDIgZm9udHMgY29ycmVjdGx5LgoJKHdpbmZudF9oZWFkZXJfZmllbGRzKTogVXBkYXRlZC4KCShmbnRfZm9udF9sb2FkKTogSGFuZGxlIHZlcnNpb24gMiBmb250cy4KCShGTlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoyMDAyLTEyLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGluZyBkb2N1bWVudCB0byBiZXR0ZXIgZXhwbGFpbiB0aGUKCWRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHRocmVlIHZlcnNpb24gbnVtYmVycyBiZWluZyB1c2VkIG9uIFVuaXgsIGFzCgl3ZWxsIGFzIHByb3ZpZGluZyBhbiBhdXRvY29uZiBmcmFnbWVudCBwcm92aWRlZCBieSBMYXJzIENsYXVzZW4uCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfY29uaWMpOiBGaXhlZCBzbWFsbCBidWcgdGhhdAoJcHJldmVudGVkIGJlemllciBhcmNzIHdpdGggbmVnYXRpdmUgdmVydGljYWwgY29vcmRpbmF0ZXMgdG8gYmUKCXJlbmRlcmVkIGFwcHJvcHJpYXRlbHkuCgoyMDAyLTEyLTAyICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IE1vZGlmaWVkIHRoZSBsb2dpYyB0byBnZXQgVW5pY29kZSBjaGFybWFwcy4KCU5vdyBpdCBsb2FkcyBVQ1MtNCBjaGFybWFwcyB3aGVuIHRoZXJlIGlzIG9uZS4KCShmaW5kX3VuaWNvZGVfY2hhcm1hcCk6IE5ldyBmdW5jdGlvbi4KCShvcGVuX2ZhY2UpOiBSZWZlciB0byB0aGUgYWJvdmUgb25lLgoJKEZUX1NlbGVjdF9DaGFybWFwKTogSWRlbS4KCjIwMDItMTEtMjkgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oOiBDb3JyZWN0IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGluZwoJbWFjcm8gKHdhcyBfX0ZUWEY4Nl9IX18gLi4uKS4KCjIwMDItMTEtMjcgIFZpbmNlbnQgQ2Fyb24gIDx2LmNhcm9uQHplcm9kZXV4Lm5ldD4KCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluLCBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4sCglidWlsZHMvdW5peC9jb25maWd1cmUuYWMsIHNyYy9nemlwL3J1bGVzLm1rLCBzcmMvZ3ppcC9mdGd6aXAuYwoJW0ZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUJdOiBBZGRpbmcgc3VwcG9ydCBmb3Igc3lzdGVtIHpsaWIKCWluc3RhbGxhdGlvbnMgaWYgYXZhaWxhYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gKFVuaXggb25seSkuCgoyMDAyLTExLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2NoYXJzZXRfbG9hZCwgY2ZmX2VuY29kaW5nX2xvYWQpOiBNb2RpZmllZAoJY2hhcnNldCBsb2FkZXIgdG8gYWNjZXB0IHByZS1kZWZpbmVkIGNoYXJzZXRzLCBldmVuIHdoZW4gdGhlIGZvbnQKCWNvbnRhaW5zIGZld2VyIGdseXBocy4gIEFsc28gZW5mb3JjZWQgbW9yZSBjaGVja3MgdG8gZW5zdXJlIHRoYXQgd2UKCW5ldmVyIG92ZXJmbG93IHRoZSBjaGFyYWN0ZXIgY29kZXMgYXJyYXkgaW4gdGhlIGVuY29kaW5nLgoKMjAwMi0xMS0yMiAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRlZCB0byBsYXRlc3QgT3BlblR5cGUKCXNwZWNpZmljYXRpb24uCgoyMDAyLTExLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMyBpcyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTExLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjc2JpdC5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0CgljYXVzZWQgcHJvYmxlbXMgd2l0aCBlbWJlZGRlZCBiaXRtYXBzLgoKCSogc3JjL290bGF5b3V0L290bGF5b3V0LmgsIHNyYy9vdGx5YW91dC9vdGxjb25mLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLAoJc3JjL290bGF5b3V0L290bHBhcnNlLmMsIHNyYy9vdGxheW91dC9vdGxwYXJzZS5oLAoJc3JjL290bGF5b3V0L290bHV0aWxzLmg6IFVwZGF0aW5nIHRoZSBPcGVuVHlwZSBMYXlvdXQgY29kZSwgYWRkaW5nCglzdXBwb3J0IGZvdCB0aGUgZmlyc3QgR1NVQiBsb29rdXBzLiAgTm90aGluZyB0aGF0IHJlYWxseSBjb21waWxlcwoJZm9yIG5vdyB0aG91Z2guCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBEaXNhYmxlZCBzZXJpZiBzdGVtCgl3aWR0aCBxdWFudGl6YXRpb24uICBJdCBwcm9kdWNlcyBzbGlnaHRseSBiZXR0ZXIgc2hhcGVzIHRob3VnaCB0aGlzCglpcyBub3QgZGlzdGluZ3Vpc2hhYmxlIHdpdGggbWFueSBmb250cy4KCVJlbW92ZSBvdGhlciBkZWFkIGNvZGUuCgoJKiBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogU2ltcGxpZmllZC4KCVVzZSAkKEZUMl9TUkNfRElSKS4KCjIwMDItMTEtMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTE9BRF9UQVJHRVRfTElHSFQpOiBOZXcgbWFjcm8uCgkoRlRfTE9BRF9UQVJHRVQsIEZUX0xPQURfVEFSR0VUX01PREUpOiBVc2UgYCYgMTUnIGluc3RlYWQgb2YgYCYgNycuCgoyMDAyLTExLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oLCBzcmMvZ3ppcC9mdGd6aXAuYzogQWRkZWQKCXN1cHBvcnQgZm9yIHRoZSBGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCIG9wdGlvbiwgdXNlZCB0byBzcGVjaWZ5Cgl0aGUgdXNlIG9mIHN5c3RlbS13aWRlIHpsaWIuCgoJTm90ZSB0aGF0IHRoaXMgbWFjcm8sIGFzIHdlbGwgYXMKCUZUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIsIGlzIG5vdCAjdW5kZWYtZWQgYW55bW9yZS4KCVRoaXMgYWxsb3dzIHRoZSBidWlsZCBzeXN0ZW0gdG8gZGVmaW5lIHRoZW0gZGVwZW5kaW5nIG9uIHRoZQoJY29uZmlndXJhdGlvbiAodHlwaWNhbGx5IGJ5IGFkZGluZyAtRCBmbGFncyBhdCBjb21waWxlIHRpbWUpLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9mYWNlX2J1aWxkX2NtYXBzKTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MgaW4gb3B0aW1pemVkIG1vZGUgcmVsYXRpdmUgdG8gdGhlICJ2b2xhdGlsZSIgbG9jYWwKCXZhcmlhYmxlcy4gIFRoaXMgd2FzIG5vdCBhIGNvbXBpbGVyIGJ1ZyBhZnRlciBhbGwsIGJ1dCB0aGUgZmFjdCB0aGF0CglhIHBvaW50ZXIgdG8gYSB2b2xhdGlsZSB2YXJpYWJsZSBpcyBub3QgdGhlIHNhbWUgYXMgYSB2b2xhdGlsZQoJcG9pbnRlciB0byBhIHZhcmlhYmxlIDotKQoKCVRoZSBmaXggd2FzIHRvIGNoYW5nZQoJICBgdm9sYXRpbGUgRlRfQnl0ZSogcCcKCWludG8KCSAgYEZUX0J5dGUqIHZvbGF0aWxlIHAnLgoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9waHlfZm9udF9sb2FkKSwgc3JjL3Bmci9wZnJkcml2ci5jCgkocGZyX2dldF9tZXRyaWNzKSwgc3JjL2d6aXAvaW5mdHJlZXMuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncyBpbgoJb3B0aW1pemVkIG1vZGVzLgoKCSogc3JjL2d6aXAvKi5baGNdOiBNb2RpZmllZCBvdXIgemxpYiBjb3B5IGluIG9yZGVyIHRvIHByZXZlbnQKCWV4cG9ydGluZyBhbnkgemxpYiBmdW5jdGlvbiBuYW1lcyBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQuICBUaGlzCglwcmV2ZW50cyBsaW5raW5nIHByb2JsZW1zIG9uIHNvbWUgcGxhdGZvcm1zLCB3aGVuIGFwcGxpY2F0aW9ucyB3YW50Cgl0byBsaW5rIEZyZWVUeXBlIF9hbmRfIHpsaWIgdG9nZXRoZXIuCgoyMDAyLTExLTA1ICBKdWxpdXN6ICA8amNoQHBwcy5qdXNzaWV1LmZyPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc190YWJsZV9hZGQpOiBNb2RpZmllZCBpbmNyZW1lbnQgbG9vcCBpbgoJb3JkZXIgdG8gaW1wbGVtZW50IGV4cG9uZW50aWFsIGJlaGF2aW91ci4KCjIwMDItMTEtMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBQRlItc3BlY2lmaWMgcHVibGljIEFQSS4gRml4ZWQgdGhlIGtlcm5pbmcgcmV0cmlldmVsIHJvdXRpbmUKICAgICAgICAoaXQgcmV0dXJuZWQgaW52YWxpZCB2YWx1ZXMgd2hlbiB0aGUgb3V0bGluZSBhbmQgbWV0cmljcyByZXNvbHV0aW9uCiAgICAgICAgZGlmZmVyKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRwZnIuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wZnIuaDogTmV3CglmaWxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUEZSX0gpOiBOZXcKCW1hY3JvIGZvciBwZnIuaC4KCgkqIHNyYy9iYXNlL2Z0cGZyLmM6IE5ldyBmaWxlLgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9kZXNjcmlwLm1tczogVXBkYXRlZC4KCgkqIHNyYy9wZnIvcGZyZHJpdnIuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QRlJfSC4KCShwZnJfZ2V0X2tlcm5pbmcsIHBmcl9nZXRfYWR2YW5jZSwgcGZyX2dldF9tZXRyaWNzKTogTmV3IGZ1bmN0aW9ucy4KCShwZnJfc2VydmljZV9yZWMpOiBOZXcgZm9ybWF0IGludGVyZmFjZS4KCShwZnJfZHJpdmVyX2NsYXNzKTogVXNlIGBwZnJfc2VydmljZV9yZWMnLgoJUmVwbGFjZSBgcGZyX2ZhY2VfZ2V0X2tlcm5pbmcnIHdpdGggYHBmcl9nZXRfa2VybmluZycuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZ0X2dseXBoc2xvdF9jbGVhcik6IFNtYWxsIGludGVybmFsIGZpeCB0bwoJYmV0dGVyIHN1cHBvcnQgYml0bWFwLWJhc2VkIGZvbnQgZm9ybWF0cy4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogRml4IGhhbmRsaW5nIG9mCglgc2NhbGUnLgoJRml4IGFyZ3VtZW50cyB0byBgRlRfVmVjdG9yX0Zyb21fUG9sYXInLgoKMjAwMi0xMC0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgaGFuZGxpbmcgb2YgZ3ppcC1jb21wcmVzc2VkIFBDRiBmaWxlcy4KCgkqIHNyYy9nemlwLyo6IE5ldyBmaWxlcywgdGFrZW4gZnJvbSB0aGUgemxpYiBwYWNrYWdlIChleGNlcHQKCWZ0Z3ppcC5jKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmgsIHNyYy9nemlwL2Z0Z3ppcC5jOiBOZXcgZmlsZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0daSVBfSCk6IE5ldyBtYWNybyBmb3IKCWBmdGd6aXAuaCcuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jOiBJbmNsdWRlIEZUX0daSVBfSCBhbmQgRlRfRVJST1JTX0guCgkoUENGX0ZhY2VfSW5pdCk6IElmIG5vcm1hbCBvcGVuIGZhaWxzLCB0cnkgdG8gb3BlbiBnemlwIHN0cmVhbS4KCShQQ0ZfRmFjZV9Eb25lKTogQ2xvc2UgZ3ppcCBzdHJlYW0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BjZnR5cGVzLmggKFBDRl9QdWJsaWNfRmFjZVJlYyksCglzcmMvcGNmL3BjZi5oIChQQ0ZfRmFjZVJlYyk6IEFkZCBgZ3ppcF9zdHJlYW0nIGFuZCBgZ3ppcF9zb3VyY2UnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9VU0VfWkxJQik6CglOZXcgbWFjcm8uCgkoVDFfQ09ORklHX09QVElPTl9ESVNBQkxFX0hJTlRFUiwgRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMKCUZUX0NPTkZJR19PUFRJT05fTk9fQ09OVkVOSUVOQ0VfRlVOQ1MsCglGVF9DT05GSUdfT1BUSU9OX0FMVEVSTkFURV9HTFlQSF9GT1JNQVRTKTogUmVtb3ZlZC4KCgkoRlRfRVhQT1JULCBGVF9FWFBPUlRfREVGLCBGVF9ERUJVR19MRVZFTF9FUlJPUiwKCUZUX0RFQlVHX0xFVkVMX1RSQUNFLCBGVF9ERUJVR19NRU1PUlkpOiBDb21tZW50IG91dCBkZWZpbml0aW9ucyBzbwoJdGhhdCBwbGF0Zm9ybSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgY2FuIG92ZXJyaWRlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBJbmNsdWRlIEZUX1NZU1RFTV9ILgoKMjAwMi0xMC0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogRnJlZVR5cGUgMi4xLjNyYzMgcmVsZWFzZWQuCgoyMDAyLTEwLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRfUE9JTlRFUl9UT19VTE9ORyk6IE5ldyBtYWNyby4KCShGVENfRkFDRV9JRF9IQVNIKTogUmV3cml0dGVuLCB1c2luZyBGVF9QT0lOVEVSX1RPX1VMT05HLgoKMjAwMi0xMC0yMiAgR2l1c2VwcGUgR2hpYvIgIDxnaGlib0BtYW5kcmFrZXNvZnQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FbmNvZGluZyk6IEZpeCBlbnRyeSBmb3IgbGF0aW4tMi4KCjIwMDItMTAtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfT3Blbl9GYWNlKTogVXNlIGBjb25zdCcgZm9yIGBhcmdzJwoJKHN1Z2dlc3RlZCBieSBHcmFoYW0pLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlKTogVXBkYXRlZC4KCShmdF9pbnB1dF9zdHJlYW1fbmV3KTogRGl0dG8uCgoyMDAyLTEwLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGJpdG1hcHMgdG8gdGhlIFBGUiBkcml2ZXIsIGFuZCByZXdyaXRpbmcKCWl0cyBrZXJuaW5nIGxvYWRlci9oYW5kbGVyIHRvIHVzZSBhbGwga2VybmluZyBwYWlycyBpbiBhIHBoeXNpY2FsCglmb250IChhbmQgbm90IGp1c3QgdGhlIGZpcnN0IGl0ZW0pLgoKCSogc3JjL3Bmci9wZnIuYzogSW5jbHVkZSBgcGZyc2JpdC5jJy4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIGBwZnJzYml0LmgnLgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9rZXJuaW5nX3BhaXJzKTogUmV3cml0dGVuLgoJKHBmcl9waHlfZm9udF9kb25lLCBwZnJfcGh5X2ZvbnRfbG9hZCk6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyb2Jrcy5jOiBJbmNsdWRlIGBwZnJzYml0LmgnLgoJKHBmcl9mYWNlX2luaXQpOiBIYW5kbGUga2VybmluZyBhbmQgZW1iZWRkZWQgYml0bWFwcy4KCShwZnJfc2xvdF9sb2FkKTogTG9hZCBlbWJlZGRlZCBiaXRtYXBzLgoJKFBGUl9LRVJOX0lOREVYKTogUmVtb3ZlZC4KCShwZnJfZmFjZV9nZXRfa2VybmluZyk6IFJld3JpdHRlbi4KCSogc3JjL3Bmci9wZnJzYml0LmMsIHNyYy9wZnIvcGZyc2JpdC5oOiBOZXcgZmlsZXMuCgkqIHNyYy9wZnIvcGZydHlwZXMuaCAoUEZSX0tlcm5JdGVtUmVjKTogTmV3IHN0cnVjdHVyZS4KCShQRlJfS0VSTl9JTkRFWCk6IE5ldyBtYWNyby4KCShQRlJfUGh5Rm9udFJlYyk6IEFkZCBpdGVtcyBmb3Iga2VybmluZyBhbmQgZW1iZWRkZWQgYml0bWFwcy4KCSogc3JjL3Bmci9KYW1maWxlIChfc291cmNlcykgW0ZUMl9NVUxUSV06IEFkZCBgcGZyc2JpdCcuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IERvbid0IGxvYWQgYml0bWFwIGZvbnRzIGlmCglGVF9MT0FEX05PX1JFQ1VSU0UgaXMgc2V0LgoJTG9hZCBlbWJlZGRlZCBiaXRtYXBzIG9ubHkgaWYgRlRfTE9BRF9OT19CSVRNQVAgaXNuJ3Qgc2V0LgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL2NvbnRlbnQucHksIHNyYy90b29scy9kb2NtYWtlci9zb3VyY2VzLnB5LAoJc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogRml4aW5nIGEgZmV3IG5hc3R5IGJ1Z3MuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlKTogVGhlIHZhbGlkYXRvciBmb3IgZm9ybWF0IDQKCXN1Yi10YWJsZXMgaXMgbm93IGNhcGFibGUgb2YgZGVhbGluZyB3aXRoIGludmFsaWQgImxlbmd0aCIgZmllbGRzIGF0Cgl0aGUgc3RhcnQgb2YgdGhlIHN1Yi10YWJsZS4gIFRoaXMgYWxsb3dzIGZvbnRzIGxpa2UgIm1nX19fX19fLnR0ZiIKCShpLmUuICBNYXJyaWFnZSkgdG8gcmV0dXJuIGFjY3VyYXRlIGNoYXJtYXBzLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMi0xMC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKFNVQlBJWEVMUyk6IEFkZCBjYXN0IHRvIGBUUG9zJy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShUUlVOQyk6IEFkZCBjYXN0IHRvIGBUQ29vcmQnLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKFRSYXN0ZXIpOiBVc2UgYFRQb3MnIGZvciBtaW5fZXgsIG1heF9leCwgbWluX2V5LCBtYXhfZXksIGFuZAoJbGFzdF9leS4KCVVwZGF0ZSBhbGwgY2FzdHMuCgkoZ3JheV9yZW5kZXJfbGluZSk6IEZpeCBjYXN0cyBmb3IgYHAnIGFuZCBgZmlyc3QnLgoKMjAwMi0xMC0wMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKGJkZl9sb2FkX2ZvbnQpOiBBbGxvY2F0ZSB0aGUgX2JkZl9wYXJzZV90CglzdHJ1Y3R1cmUgd2l0aCBGVF9BTExPQyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzdGFjay4KCjIwMDItMDktMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAobnVtX3NiaXRfc3RyaWtlcywKCW51bV9zYml0X3NjYWxlcyk6IFVzZSBgRlRfVUxvbmcnLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBVcGRhdGVkIGFjY29yZGluZ2x5LgoJKiBzcmMvc2ZudC90dHNiaXQuYyAodHRfZmFjZV9zZXRfc2JpdF9zdHJpa2UpOiBEaXR0by4KCShmaW5kX3NiaXRfaW1hZ2UpOiBSZW1vdmUgY2FzdC4KCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRml4IGNhc3QuCgoyMDAyLTA5LTI3ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9uYW1lcyk6IFVzZSBjYXN0LgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19uZXh0Mik6IFVzZSBsb25nIGNvbnN0YW50LgoJKGNvZGVfdG9faW5kZXg0KTogVXNlIGNhc3QuCgkoY29kZV90b19pbmRleDhfMTIpOiBGaXggY2FzdC4KCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX25leHQsIHR0X2NtYXA4X2NoYXJfaW5kZXgsCgl0dF9jbWFwMTJfY2hhcl9pbmRleCk6IFVzZSBjYXN0IGZvciBgcmVzdWx0Jy4KCSh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVXNlIGNhc3QuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9uYW1lX2VudHJ5X2FzY2lpX2Zyb21fdWNzNCk6IFVzZSBjYXN0IGZvcgoJYGNvZGUnLgoJKHNmbnRfbG9hZF9mYWNlKTogVXNlIEZUX0ludDMyIGZvciBgZmxhZ3MnLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NjYW5saW5lLCBncmF5X3JlbmRlcl9saW5lLAoJZ3JheV9jb21wdXRlX2Nib3gsIGdyYXlfY29udmVydF9nbHlwaCwgZ3JheV9yYXN0ZXJfcmVzZXQpOiBBZGQgY2FzdHMKCXRvIGBUQ29vcmQnIGFuZCBgaW50Jy4KCU1vcmUgMTZiaXQgZml4ZXMuCglzL0ZUX1Bvcy9UUG9zLy4KCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBBZGQgY2FzdHMuCgoyMDAyLTA5LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dHBvc3QuYyAobG9hZF9wb3N0X25hbWVzLCB0dF9mYWNlX2ZyZWVfcHNfbmFtZXMsCgl0dF9mYWNlX2dldF9wc19uYW1lKTogUmVwbGFjZSBzd2l0Y2ggc3RhdGVtZW50IHdpdGggaWYgY2xhdXNlcyB0bwoJbWFrZSBpdCBtb3JlIHBvcnRhYmxlLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBEaXR0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2R1bGUuaCAoRlRfTW9kdWxlX0NsYXNzKTogVXNlIGBGVF9Mb25nJyBmb3IKCWBtb2R1bGVfc2l6ZScuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaCAoRlRfR2x5cGhfQ2xhc3NfKTogVXNlIGBGVF9Mb25nJyBmb3IKCWBnbHlwaF9zaXplJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZW5kZXJfR2x5cGgpOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCShGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBDaGFuZ2UgdGhpcmQgcGFyYW1ldGVyIHRvCglgRlRfUmVuZGVyX01vZGUnLgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IENoYW5nZSBzZWNvbmQgcGFyYW1ldGVyCgl0byBgRlRfUmVuZGVyX01vZGUnLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogQ2hhbmdlIHRoaXJkIHBhcmFtZXRlcgoJdG8gYEZUX1JlbmRlcl9Nb2RlJy4KCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyLCBmdF9zbW9vdGhfcmVuZGVyX2xjZCwKCWZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOiBEaXR0by4KCShmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBDaGFuZ2UgdGhpcmQgYW5kIGZpZnRoIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oOiBVcGRhdGVkLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChMb2FkX0dseXBoKSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9HbHlwaF9Mb2FkKSwgc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfTG9hZF9HbHlwaCksIHNyYy90NDIvdDQyb2Jqcy5jCgkoVDQyX0dseXBoU2xvdF9Mb2FkKSwgc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhfTG9hZCk6IENoYW5nZQoJZm91cnRoIHBhcmFtZXRlciB0byBgRlRfSW50MzInLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBBZGQgdHdvIG1pc3NpbmcgcGFyYW1ldGVycwoJYW5kIGRlY2xhcmUgdGhlbSBhcyB1bnVzZWQuCgoJKiBzcmMvY2lkL2NpZHBhcnNlLmggKENJRF9QYXJzZXIpOiBVc2UgRlRfTG9uZyBmb3IgYHBvc3RzY3JpcHRfbGVuJy4KCgkqIHNyYy9wc25hbWVzL3BzbmFtZXMuaCAoUFNfVW5pY29kZV9WYWx1ZV9GdW5jKTogQ2hhbmdlIHJldHVybgoJdmFsdWUgdG8gRlRfVUludDMyLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2RlX3ZhbHVlLCBwc19idWlsZF91bmljb2RlX3RhYmxlKToKCVVwZGF0ZWQgYWNjb3JkaW5nbHkuCgoyMDAyLTA5LTI2ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChHZXRfS2VybmluZyk6IFVzZSBGVF9Mb25nIGZvciBgbWlkZGxlJy4KCShjZmZfZ2V0X2dseXBoX25hbWUpOiBVc2UgY2FzdCBmb3IgcmVzdWx0IG9mIGZ0X3N0cmxlbi4KCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfcmVhbCk6IFVzZXIgY2FzdCBmb3IgYXNzaWduaW5nCglgZXhwJy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9pbmRleF9nZXRfcG9pbnRlcnMpOiBVc2UgRlRfVUxvbmcgZm9yCglzb21lIGxvY2FsIHZhcmlhYmxlcy4KCShjZmZfY2hhcnNldF9sb2FkLCBjZmZfZW5jb2RpbmdfbG9hZCk6IFVzZSBjYXN0cyB0byBGVF9VSW50IGZvciBzb21lCglzd2l0Y2ggc3RhdGVtZW50cy4KCShjZmZfZm9udF9sb2FkKTogVXNlIGNhc3QgaW4gY2FsbCB0byBDRkZfTG9hZF9GRF9TZWxlY3QuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfc2l6ZV9pbml0KTogVXNlIG1vcmUgY2FzdHMuCgkoY2ZmX2ZhY2VfaW5pdCk6IFVzZSBGVF9JbnQzMiBmb3IgYGZsYWdzJy4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfb3BlcmF0b3Jfc2VhYyk6IFVzZSBjYXN0IGZvciBhc3NpZ25pbmcKCWBhZHgnIGFuZCBgYWR5Jy4KCShjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBGVF9VTG9uZyBmb3IgdGhpcmQgcGFyYW1ldGVyLgoJVXNlIG1vcmUgY2FzdHMuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF91bmljb2RlX2luaXQpOiBVc2UgY2FzdCBmb3IgYGNvdW50Jy4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcmVhZF9zdWJycyk6IFVzZSBGVF9VTG9uZyBmb3IgYGxlbicuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpOiBBZGQgbWlzc2luZyBjYXN0IGZvcgoJYGNpZF9nZXRfb2Zmc2V0Jy4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKSA8MTg+OiBVc2UKCWNhc3QgZm9yIGBudW1fcG9pbnRzJy4KCSh0MV9kZWNvZGVyX2luaXQpOiBVc2UgY2FzdCBmb3IgYXNzaWduaW5nIGBkZWNvZGVyLT5udW1fZ2x5cGhzJy4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCk6IFVzZSBGVF9JbnQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCAoRlRfU2xvdF9Mb2FkRnVuYyk6IFVzZQoJYEZUX0ludDMyJyBmb3IgZm91cnRoIHBhcmFtZXRlci4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IFVzZSBjYXN0IGZvciBjYWxsaW5nCgljbGF6ei0+aW5pdF9mYWNlLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChTZXRfSGlnaF9QcmVjaXNpb24pOiBVc2UgYDEnIGluc3RlYWQgb2YKCWAxTCcuCgkoRmluYWxpemVfUHJvZmlsZV9UYWJsZSwgTGluZV9VcCwgZnRfYmxhY2tfaW5pdCk6IFVzZSBjYXN0cy4KCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRGl0dG8uCgoJKiBzcmMvc2ZudC9zZm50X2Rpcl9jaGVjazogQ29tcGFyZSBgbWFnaWMnIHdpdGggdW5zaWduZWQgbG9uZwoJY29uc3RhbnQuCgoyMDAyLTA5LTI2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFVwZGF0ZWQuCgoyMDAyLTA5LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9ISU5UX01FVFJJQ1MpOiBEaXNhYmxpbmcgbWV0cmljcwoJaGludGluZyBpbiB0aGUgYXV0by1oaW50ZXIuICBUaGlzIHByb2R1Y2VzIG11Y2ggYmV0dGVyIGFudGktYWxpYXNlZAoJdGV4dC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgdGhlIGNoYW5nZXMgZG9jdW1lbnRhdGlvbi4KCjIwMDItMDktMjUgIEFudGhvbnkgRm9rICA8YW50aG9ueUB0aGl6bGludXguY29tPgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSwgdHRfY21hcDRfY2hhcl9pbmRleCwKCXR0X2NtYXA0X2NoYXJfbmV4dCk6IEFkZGVkIHN1cHBvcnQgZm9yIG9wZW5zX19fLnR0ZiAoaXQgY29udGFpbnMgYQoJY2hhcm1hcCB0aGF0IHVzZXMgb2Zmc2V0PTB4RkZGRlUgaW5zdGVhZCBvZiAweDAwMDAgdG8gaW5kaWNhdGUgYQoJbWlzc2luZyBnbHlwaCkuCgoyMDAyLTA5LTIxICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKExvYWRfR2x5cGgpOiBGb3VydGggcGFyYW1ldGVyIG11c3QgYmUKCUZUX0ludDMyLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oIChUVF9Mb2FkX0dseXBoKToKCURpdHRvLgoKMjAwMi0wOS0xOSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCglNb3JlIDE2Yml0IGZpeGVzLgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKHNvcnRfdmFsdWVzKTogVXNlIEZUX1BvcyBmb3IgYHN3YXAnLgoJKGFoX2hpbnRlcl9jb21wdXRlX3dpZHRocyk6IFVzZSBGVF9Qb3MgZm9yIGBkaXN0Jy4KCVVzZSBBSF9NQVhfV0lEVEhTLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX3NjYWxlX2JsdWVfZWRnZXMpOiBVc2UgRlRfUG9zCglmb3IgYGRlbHRhJy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpOiBSZXBsYWNlIHNvbWUgaW50cyB3aXRoIEZUX0ludCBhbmQKCUZUX1Bvcy4KCShhaF90ZXN0X2V4dHJlbWEpOiBDbGVhbiB1cCBjb2RlLgoJKGFoX2dldF9vcmllbnRhdGlvbik6IFVzZSA0IEZUX0ludCB2YXJpYWJsZXMgaW5zdGVhZCBvZiBGVF9CQm94IHRvCglob2xkIGluZGljZXMuCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1NlZ21lbnRSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgc2NvcmUnCgl0byBGVF9Qb3MuCgoyMDAyLTA5LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgdG8KCXJlY2VudCB2ZXJzaW9ucy4KCjIwMDItMDktMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9MaWJyYXJ5X1ZlcnNpb24pOiBCdWdmaXguCgoJKiBGcmVlVHlwZSAyLjEuM3JjMiAocmVsZWFzZSBjYW5kaWRhdGUgMikgaXMgcmVsZWFzZWQhCgoyMDAyLTA5LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZXIuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c2lvLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzbWVtLmgsIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRpbmcKCXRoZSBpbi1zb3VyY2UgZG9jdW1lbnRhdGlvbi4KCgkqIHNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IFVwZGF0aW5nIHRoZSBIVE1MIGZvcm1hdHRlciBpbiB0aGUKCURvY01ha2VyIHRvb2wuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IFJlbW92ZWQuCgoyMDAyLTA5LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTW9yZSAxNmJpdCBmaXhlcy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IFVzZSBGVF9Mb25nIGZvcgoJc2Vjb25kIHBhcmFtZXRlci4KCjIwMDItMDktMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkxNmJpdCBmaXhlcyBmcm9tIFdvbGZnYW5nIERvbXL2c2UuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oIChUMV9QYXJzZXJSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgYmFzZV9sZW4nCglhbmQgYHByaXZhdGVfbGVuJyB0byBGVF9Mb25nLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogUmVtb3ZlIGNhc3QgZm9yCglgcHJpdmF0ZV9sZW4nLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmM6IFVzZSBGVF9JbnQgY2FzdCBmb3IgbW9zdCBjYWxscyBvZiBUMV9Ub0ludC4KCVVzZSBGVF9QdHJEaXN0IHdoZXJlIGFwcHJvcHJpYXRlLgoJKHBhcnNlX2VuY29kaW5nKTogVXNlIEZUX0xvbmcgZm9yIGBjb3VudCcgYW5kIGBuJy4KCShyZWFkX2JpbmFyeV9kYXRhKTogVXNlIEZUX0xvbmcqIGZvciBzZWNvbmQgcGFyYW1ldGVyLgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoYWZtX2F0b2luZGV4KTogVXNlIEZUX1B0ckRpc3QuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogUmVtb3ZlIHVudXNlZCBsYWJlbC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF9hbGlnbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAyLTA5LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFraW5nIGZ0Z3JheXMuYyBjb21waWxlIHN0YW5kLWFsb25lIGFnYWluLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEluY2x1ZGUgZnQyYnVpbGQuaCBvbmx5IGlmIF9TVEFOREFMT05FXwoJaXNuJ3QgZGVmaW5lZC4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgW19TVEFOREFMT05FX106IERlZmluZSBmdF9tZW1zZXQsCglGVF9CRUdJTl9IRUFERVIsIEZUX0VORF9IRUFERVIuCgkoRlRfTUVNX1pFUk8pOiBEZWZpbmUuCgkoVFJhc3RlcikgW0dSQVlTX1VTRV9HQU1NQV06IFVzZSBgdW5zaWduZWQgY2hhcicgaW5zdGVhZCBvZiBGVF9CeXRlLgoJKGdyYXlfcmVuZGVyX3NwYW4sIGdyYXlfaW5pdF9nYW1tYSk6IERvbid0IHVzZSBgRlRfVUludCcuCglEb24ndCBjYXN0IHdpdGggYEZUX0J5dGUnLgoJKGdyYXlzX2luaXRfZ2FtbWEpOiBEb24ndCB1c2UgYEZUX1VJbnQnLgoKMjAwMi0wOS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRpbml0LmMgKEZUX0FkZF9EZWZhdWx0X01vZHVsZXMpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9GYWNlX0RvbmUpOiBJbXByb3ZlIHRyYWNpbmcgbWVzc2FnZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfTUFYX01PRFVMRVMpOiBJbmNyZWFzZWQKCXRvIDMyLgoKMjAwMi0wOS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOToyOjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0ZWQuCgoyMDAyLTA5LTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMpLAoJc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKTogQWRkaW5nIGZpeAoJdG8gcHJldmVudCBzZWcgZmF1bHQgd2hlbiBoaW50cyBhcmUgcHJvdmlkZWQgaW4gYW4gZW1wdHkgZ2x5cGguCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaSAoR0VOX0NBQ0hFX0xPT0tVUCkgW0ZUX0RFQlVHX0xFVkVMX0VSUk9SXToKCVJlbW92ZWQgY29uZGl0aW9uYWwgY29kZS4gIFRoaXMgZml4ZXMgYSBidWcgdGhhdCBwcmV2ZW50ZWQKCWNvbXBpbGF0aW9uIGluIGRlYnVnIG1vZGUgb2YgdGVtcGxhdGUgaW5zdGFudGlhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBSZW1vdmVkIGluY29ycmVjdCAiemZ0XyIgZGVmaW5pdGlvbnMKCWFuZCB1cGRhdGVkIGNvbnN0YW50cyBkb2N1bWVudGF0aW9uIGNvbW1lbnRzLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VyX3J1bik6IEZpeGVkIHRoZSBDRkYgdGFibGUgbG9hZGVyLgoJSXQgZGlkbid0IGFjY2VwdCBlbXB0eSBhcnJheXMsIGFuZCB0aGlzIHByZXZlbnRlZCB0aGUgbG9hZGluZyBvZgoJY2VydGFpbiBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRmFjZVJlYyk6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24KCWNvbW1lbnQuICBUaGUgImRlc2NlbmRlciIgdmFsdWUgaXMgYWx3YXlzICpuZWdhdGl2ZSosIG5vdCBwb3NpdGl2ZS4KCjIwMDItMDktMDkgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dseXBoX0xvYWQpOiBGaXhpbmcgaW5jb3JyZWN0IGNvbXB1dGF0aW9uCglvZiBiaXRtYXAgbWV0cmljcy4KCjIwMDItMDktMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglWYXJpb3VzIHVwZGF0ZXMgdG8gY29ycmVjdGx5IHN1cHBvcnQgc3ViLXBpeGVsIHJlbmRlcmluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IEFkZCB0d28gcmVuZGVyZXJzIGZvciBMQ0QuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXJfbGNkLAoJZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6IFNldCBGVF9QSVhFTF9NT0RFX0xDRCBhbmQKCUZUX1BJWEVMX01PREVfTENEX1YsIHJlc3BlY3RpdmVseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjaW1hZ2UuaCAoRlRDX0ltYWdlVHlwZVJlYyk6IE5ldwoJc3RydWN0dXJlLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgkoRlRDX0ltYWdlRGVzYyk6IFJlbW92ZWQuCgkoRlRDX0ltYWdlQ2FjaGVfTG9va3VwKTogU2Vjb25kIHBhcmFtZXRlciBpcyBub3cgb2YgdHlwZQoJYEZUQ19JbWFnZVR5cGUnLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgkoRlRDX0lNQUdFX0RFU0NfQ09NUEFSRSk6IFVwZGF0ZWQgYW5kIHJlbmFtZWQgdG8uLi4KCShGVENfSU1BR0VfVFlQRV9DT01QQVJFKTogVGhpcy4KCShGVENfSU1BR0VfREVTQ19IQVNIKTogVXBkYXRlZCBhbmQgcmVuYW1lZCB0by4uLgoJKEZUQ19JTUFHRV9UWVBFX0hBU0gpOiBUaGlzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNzYml0cy5oIChGVENfU0JpdFJlYyk6IEZpZWxkIGBudW1fZ3JheXMnCglyZXBsYWNlZCB3aXRoIGBtYXhfZ3JheXMnLgoJYHBpdGNoJyBpcyBub3cgRlRfU2hvcnQuCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBTZWNvbmQgcGFyYW1ldGVyIGlzIG5vdyBvZiB0eXBlCglgRlRDX0ltYWdlVHlwZScuCglVcGRhdGVkIGFsbCB1c2Vycy4KCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VRdWVyeVJlYywgRlRDX0ltYWdlRmFtaWx5UmVjKToKCVVwZGF0ZWQuCgkoZnRjX2ltYWdlX25vZGVfaW5pdCk6IFVwZGF0ZWQuCglNb3ZlZCBjb2RlIHRvIGNvbnZlcnQgdHlwZSBmbGFncyB0byBsb2FkIGZsYWdzIHRvLi4uCgkoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCk6IFRoaXMgZnVuY3Rpb24uCgkoZnRjX2ltYWdlX2ZhbWlseV9pbml0KTogVXBkYXRlZC4KCgkqIHNyYy9jYWNoZS9mdGNzYml0LmMgKEZUQ19TQml0UXVlcnlSZWMsIEZUQ19TQml0RmFtaWx5UmVjKToKCVVwZGF0ZWQuCgkoZnRjX3NiaXRfbm9kZV9sb2FkKTogVXBkYXRlZC4KCU1vdmVkIGNvZGUgdG8gY29udmVydCB0eXBlIGZsYWdzIHRvIGxvYWQgZmxhZ3MgdG8uLi4KCShGVENfU0JpdENhY2hlX0xvb2t1cCk6IFRoaXMgZnVuY3Rpb24uCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXJSZWMpOiBSZXBsYWNlIGBub18qX2hpbnRzJyB3aXRoCglgZG9fKl9zbmFwcGluZycuCglVcGRhdGUgYWxsIHVzZXJzICh3aXRoIG5lZ2F0aW9uKS4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBGaXggdGhyZXNob2xkIGZvcgoJYGRpc3QnIGZvciBgZGVsdGEnIDwgNDAuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IFJlcGxhY2UgYG5vXypfaGludHMnIHdpdGgKCWBkb18qX3NuYXBwaW5nJy4KCVVwZGF0ZSBhbGwgdXNlcnMgKHdpdGggbmVnYXRpb24pLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19kaW1lbnNpb25fcXVhbnRpemVfbGVuKTogTmV3CglmdW5jdGlvbi4KCShwc2gzX2hpbnRfYWxpZ24pOiBVc2UgaXQuCglJbXByb3ZlIGhpbnRpbmcgY29kZS4KCVtTVFJPTkdFUl06IFJlbW92ZWQuCgkoU1RST05HRVIpOiBSZW1vdmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZXRfSGludF9GbGFncywgRlRfSElOVF8qKToKCVJlbW92ZWQuCgoyMDAyLTA5LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX1NpemVfSW5pdCk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2l6ZV9pbml0KTogVGhpcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMV9CdWlsZGVyX0FkZF9Qb2ludDEpOiBSZW5hbWVkIHRvLi4uCgkodDFfYnVpbGRlcl9hZGRfcG9pbnQxKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF9hbGlnbik6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IERpdHRvLgoKMjAwMi0wOS0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDb3JyZWN0ZWQgdGhlIGRlZmluaXRpb24gb2YKCWZ0X2VuY29kaW5nX3N5bWJvbCB0byBiZSBGVF9FTkNPRElOR19NU19TWU1CT0wgKGluc3RlYWQgb2YKCXRoZSBlcnJvbmVvdXMgRlRfRU5DT0RJTkdfU1lNQk9MKS4KCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChkYXRhZGlyKTogSW5pdGlhbGl6ZSBpdCAodGhhbmtzIHRvCglBbnRob255IEZvaykuCgoyMDAyLTA4LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJU2xpZ2h0IG1vZGlmaWNhdGlvbiB0byB0aGUgUG9zdHNjcmlwdCBoaW50ZXIgdG8gc2xpZ2h0bHkgaW5jcmVhc2UKCXRoZSBjb250cmFzdCBvZiBzbW9vdGggaGludGluZy4gIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHRvIHdoYXQgdGhlCglhdXRvLWhpbnRlciBkb2VzIHdoZW4gaXQgY29tZXMgdG8gc3RlbSB3aWR0aCBjb21wdXRhdGlvbnMuICBIb3dldmVyLAoJaXQgcHJvZHVjZXMgYmV0dGVyIHJlc3VsdHMgd2l0aCB3ZWxsLWhpbnRlZCBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRGVjb2Rlcl9GdW5jc1JlYyk6IEFkZCBoaW50Cgltb2RlIHRvIGBpbml0JyBtZW1iZXIgZnVuY3Rpb24uCgkoVDFfRGVjb2RlclJlYyk6IEFkZCBoaW50IG1vZGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cyAoVDFfSGludHNfQXBwbHlGdW5jLAoJVDJfSGludHNfQXBwbHlGdW5jKTogUGFzcyBgaGludF9tb2RlJywgbm90IGBoaW50X2ZsYWdzJy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfaW5pdCk6IEFkZCBoaW50IG1vZGUgYXJndW1lbnQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwczFfaGludHNfYXBwbHkpOiBQYXNzIGhpbnQgbW9kZSwgbm90CgloaW50IGZsYWdzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBEaXR0by4KCShTVFJPTkdFUik6IE5ldyBtYWNyby4KCShwc2gzX2hpbnRfYWxpZ24sIHBzaDNfaGludF90YWJsZV9hbGlnbl9oaW50cyk6IFBhc3MgYGdseXBoJyBpbnN0ZWFkCglvZiBgaGludF9mbGFncycuCglJbXBsZW1lbnQgYW5ub3VuY2VkIGNoYW5nZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0dseXBoUmVjKTogQWRkIGZsYWdzIHRvIGNvbnRyb2wKCXZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGhpbnRzIGFuZCBzbmFwcGluZy4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmb3IgdGhlIDIuMS4zIHJlbGVhc2UuCgoyMDAyLTA4LTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBNYXNzaXZlIHJlLWZvcm1hdHRpbmcgY2hhbmdlcyB0byBtYW55LCBtYW55IHNvdXJjZSBmaWxlcy4gIEkgZG9uJ3QKCXdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLiAgVGhlIG9wZXJhdGlvbnMgcGVyZm9ybWVkIHdlcmUgYWxsCglsb2dpY2FsIHRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgc291cmNlczoKCgktIHRyeWluZyB0byBjb252ZXJ0IGFsbCBlbnVtcyBhbmQgY29uc3RhbnRzIHRvIENBUElUQUxJWkVEX1NUWUxFLAoJICAjd2l0aCBkZWZpbmUgZGVmaW5pdGlvbnMgbGlrZQoKCSAgICAjZGVmaW5lIG15X29sZF9jb25zdGFudHMgICBNWV9ORVdfQ09OU1RBTlQKCgktIGJpZywgYmlnIHVwZGF0ZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBjb21tZW50cwoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBzcmMvYmFzZS9mdG9ianMuYywKCXNyYy9zbW9vdGgvZnRzbW9vdGguYywgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEFkZGluZyBzdXBwb3J0Cglmb3IgTENELW9wdGltaXplZCByZW5kZXJpbmcgdGhvdWdoIHRoZSBuZXcgY29uc3RhbnRzL2VudW1zOgoKCSAgRlRfUkVOREVSX01PREVfTENELCBGVF9SRU5ERVJfTU9ERV9MQ0RfVgoJICBGVF9QSVhFTF9NT0RFX0xDRCwgIEZUX1BJWEVMX01PREVfTENEX1YKCglUaGlzIGlzIHN0aWxsIHdvcmsgaW4gcHJvZ3Jlc3MsIGRvbid0IGV4cGVjdCBldmVyeXRoaW5nIHRvIHdvcmsKCWNvcnJlY3RseSB0aG91Z2ggbW9zdCBvZiB0aGUgZmVhdHVyZXMgaGF2ZSBiZWVuIGltcGxlbWVudGVkLgoKCSogQWRkaW5nIG5ldyBGVF9MT0FEX1hYWCBmbGFncywgdXNlZCB0byBzcGVjaWZ5IGJvdGggaGludGluZyBhbmQKCXJlbmRlcmluZyB0YXJnZXRzOgoKCSAgRlRfTE9BRF9UQVJHRVRfTk9STUFMIDo6IGFudGktYWxpYXNlZCBoaW50aW5nICYgcmVuZGVyaW5nCgkgIEZUX0xPQURfVEFSR0VUX01PTk8gICA6OiBtb25vY2hyb21lIGJpdG1hcHMKCSAgRlRfTE9BRF9UQVJHRVRfTENEICAgIDo6IGhvcml6b250YWwgUkdCL0JHUiBkZWNpbWF0ZWQKCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRpbmcgJiByZW5kZXJpbmcKCSAgRlRfTE9BRF9UQVJHRVRfTENEX1YgIDo6IHZlcnRpY2FsIFJHQi9CR1IgZGVjaW1hdGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50aW5nICYgcmVuZGVyaW5nCgoJTm90ZSB0aGF0IEZUX0xPQURfVEFSR0VUX05PUk1BTCBpcyAwLCB3aGljaCBtZWFucyB0aGF0IHRoZSBkZWZhdWx0CgliZWhhdmlvdXIgb2YgdGhlIGZvbnQgZW5naW5lIGlzIF91bmNoYW5nZWRfLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgKCShGVF9PdXRsaW5lX3tNb3ZlLExpbmUsQ29uaWMsQ3ViaWN9VG9fRnVuYyk6IFJlbmFtZWQgdG8uLi4KCShGVF9PdXRsaW5lX3tNb3ZlLExpbmUsQ29uaWMsQ3ViaWN9VG9GdW5jKTogVGhpcy4KCShGVF9SYXN0ZXJfU3Bhbl9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShGVF9TcGFuRnVuYyk6IFRoaXMuCgkoRlRfUmFzdGVyX3tOZXcsRG9uZSxSZXNldCxTZXRfTW9kZSxSZW5kZXJ9X0Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKEZUX1Jhc3Rlcl97TmV3LERvbmUsUmVzZXQsU2V0TW9kZSxSZW5kZXJ9RnVuY306IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaAoJKEZUX0dseXBoX3tJbml0LERvbmUsVHJhbnNmb3JtLEJCb3gsQ29weSxQcmVwYXJlfV9GdW5jKTogUmVuYW1lZAoJdG8gLi4uCgkoRlRfR2x5cGhfe0luaXQsRG9uZSxUcmFuc2Zvcm0sR2V0QkJveCxDb3B5LFByZXBhcmV9RnVuYyk6IFRoaXMuCgkoRlRSZW5kZXJlcl97cmVuZGVyLHRyYW5zZm9ybSxnZXRDQm94LHNldE1vZGV9KTogUmVuYW1lZCB0byAuLi4KCShGVF9SZW5kZXJlcl97UmVuZGVyRnVuYyxUcmFuc2Zvcm1GdW5jLEdldENCb3hGdW5jLFNldGVNb2RlRnVuY30pOgoJVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfUG9pbnQsIEFIX1NlZ21lbnQsIEFIX0VkZ2UsIEFIX0dsb2JhbHMsCglBSF9GYWNlX0dsb2JhbHMsIEFIX091dGxpbmUsIEFIX0hpbnRlcik6IFRoZXNlIHR5cGVkZWZzIGFyZSBub3cKCXBvaW50ZXJzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGAqUmVjJyBzdHJ1Y3R1cmVzLiAgQWxsIHNvdXJjZSBmaWxlcwoJaGF2ZSBiZWVuIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9kZWNvZGVyX2luaXQpOiBBZGQgaGludCBtb2RlIGFzIHBhcmFtZXRlci4KCSogc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfRGVjb2Rlcik6IEFkZCBgaGludF9tb2RlJyBlbGVtZW50LgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZmFjZV9jb21wdXRlX21heF9hZHZhbmNlKTogVGhpcy4KCShDSURfTG9hZF9HbHlwaCk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2xvdF9sb2FkX2dseXBoKTogVGhpcy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKENJRF9PcGVuX0ZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2Vfb3Blbik6IFRoaXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfR2x5cGhTbG90X3tEb25lLEluaXR9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9zbG90X3tkb25lLGluaXR9KTogVGhpcy4KCShDSURfU2l6ZV97R2V0X0dsb2JhbHNfRnVuY3MsRG9uZSxSZXNldCk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2l6ZV97Z2V0X2dsb2JhbHNfZnVuY3MsZG9uZSxyZXNldCk6IFRoaXMuCgkoQ0lEX0ZhY2Vfe0RvbmUsSW5pdH0pOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2Vfe2RvbmUsaW5pdH0pOiBUaGlzLgoJKENJRF9Ecml2ZXJfe0RvbmUsSW5pdH06IFJlbmFtZWQgdG8uLi4KCShjaWRfZHJpdmVyX3tkb25lLGluaXR9OiBUaGlzLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmMgKENJRF97TmV3LERvbmV9X1BhcnNlcik6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX3tuZXcsZG9uZX0pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmggKENJRF9Ta2lwX3tTcGFjZXMsQWxwaGF9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfc2tpcF97c3BhY2VzLGFscGhhfSk6IFRoaXMuCgkoQ0lEX1Rve0ludCxGaXhlZCxDb29yZEFycmF5LEZpeGVkQXJyYXksVG9rZW4sVG9rZW5BcnJheX0pOiBSZW5hbWVkCgl0by4uLgoJKGNpZF9wYXJzZXJfdG9fe2ludCxmaXhlZCxjb29yZF9hcnJheSxmaXhlZF9hcnJheSx0b2tlbix0b2tlbl9hcnJheX0pOgoJVGhpcy4KCShDSURfTG9hZF97RmllbGQsRmllbGRfVGFibGUpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl9sb2FkX3tmaWVsZCxmaWVsZF90YWJsZX0pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENJRF9HZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9nZXRfaW50ZXJmYWNlKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV8qKTogUmVuYW1lZCB0by4uLgoJKHBzX3RhYmxlXyopOiBUaGlzLgoJKFQxX0J1aWxkZXJfKik6IFJlbmFtZWQgdG8uLi4KCSh0MV9idWlsZGVyXyopOiBUaGlzLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl8qKTogUmVuYW1lZCB0by4uLgoJKHQxX2RlY29kZXJfKik6IFRoaXMuCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU18qKTogUmVuYW1lZCB0by4uLgoJKHBzXyopOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvc2ZudC9zZmRyaXZlciAoU0ZOVF9HZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfZ2V0X2ludGVyZmFjZSk6IFRoaXMuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UXyopOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF8qKTogVGhpcy4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKFRUX0NoYXJNYXBfe0xvYWQsRnJlZX0pOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV97bG9hZCxmcmVlfV9jaGFybWFwKTogVGhpcy4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVGhpcy4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCSogc3JjL3NmbnQvdHRwb3N0LmMgKFRUX1Bvc3RfRGVmYXVsdF9OYW1lcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9wb3N0X2RlZmF1bHRfbmFtZXMpOiBUaGlzLgoJKExvYWRfKik6IFJlbmFtZWQgdG8uLi4KCShsb2FkXyopOiBUaGlzLgoJKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCSogc3JjL3NmbnQvdHRzYml0LmMgKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCSh7RmluZCxMb2FkLENyb3B9XyopOiBSZW5hbWVkIHRvLi4uCgkoe2ZpbmQsbG9hZCxjcm9wfV8qKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyKTogUmVuYW1lZCB0by4uLgoJKGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyk6IFRoaXMuCglNYWtlIGZ1bmN0aW9uIG1vcmUgZ2VuZXJpYyBieSBhZGRpbmcgdmVydGljYWwgYW5kIGhvcml6b250YWwgc2NhbGluZwoJZmFjdG9ycy4KCShmdF9zbW9vdGhfcmVuZGVyLCBmdF9zbW9vdGhfcmVuZGVyX2xjZCwgZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6CglOZXcgZnVuY3Rpb25zLgoKCShmdF9zbW9vdGhfbG9jZF9yZW5kZXJlcl9jbGFzcywgZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3MpOiBOZXcKCWNsYXNzZXMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX3tEb25lLE5ld31fR2x5cGhab25lKTogUmVuYW1lZCB0by4uLgoJKHR0X2dseXBoem9uZV97ZG9uZSxuZXd9KTogVGhpcy4KCShUVF97RmFjZSxTaXplLERyaXZlcn1fKik6IFJlbmFtZWQgdG8uLi4KCSh0dF97ZmFjZSxzaXplLGRyaXZlcn1fKik6IFRoaXMuCgkqIHNyYy90cnVldHlwZS90dHBsb2FkLmMgKFRUX0xvYWRfTG9jYXRpb25zKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfbG9hZF9sb2NhKTogVGhpcy4KCShUVF9Mb2FkX1Byb2dyYW1zKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfbG9hZF9mcGdtKTogVGhpcy4KCShUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgoyMDAyLTA4LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL1ZFUlNJT04uRExMOiBOZXcgZmlsZS4KCjIwMDItMDgtMjMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX29wZXJhdG9yX3NlYWMpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEluY3JlbWVudGFsIGZvbnRzIChhY3R1YWxseSBub3QKCWluY3JlbWVudGFsIGluIHRoZSBjYXNlIG9mIENGRiBidXQganVzdCB1c2luZyBjYWxsYmFja3MgdG8gZ2V0IGdseXBoCglyZWNpcGVzKSBwYXNzIHRoZSBjaGFyYWN0ZXIgY29kZSwgbm90IHRoZSBnbHlwaCBpbmRleCwgdG8gdGhlCglnZXRfZ2x5cGhfZGF0YSBmdW5jdGlvbjsgdGhleSBoYXZlIG5vIHZhbGlkIGNoYXJzZXQgdGFibGUuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IFJlbW92ZWQgc3BlY2lhbCBjYXNlcyBmb3IKCUZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwsIHdoaWNoIGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5OyBDRkYKCWZvbnRzIHByb3ZpZGVkIHZpYSB0aGUgaW5jcmVtZW50YWwgaW50ZXJmYWNlIG5vdyBoYXZlIHRvIGNvbmZvcm0KCW1vcmUgY2xvc2VseSB0byB0aGUgQ0ZGIGZvbnQgZm9ybWF0LgoKCSogc3JjL2NmZi9jZmZsb2FkLmggKGNmZl9mb250X2xvYWQpOiBSZW1vdmVkIGFyZ3VtZW50IG5vdyB1bm5lZWRlZC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogQ2hhbmdlZCBjYWxsIHRvIGNmZl9mb250X2xvYWQKCXRvIGNvbmZvcm0gd2l0aCBuZXcgc2lnbmF0dXJlLgoKMjAwMi0wOC0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmplY3QuYywgc3JjL2Jhc2UvZnRzeW50aC5jLCBzcmMvYmFzZS9mdHN0cm9rZXIuYywKCXNyYy9iZGYvYmRmZHJpdnIuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDgtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2NvbXB1dGVfaW5mbGVjdGlvbnMsCglwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYSwgcHNoM19oaW50X3RhYmxlX2ZpbmRfc3Ryb25nX3BvaW50KTogRml4Cgljb21waWxlciB3YXJuaW5ncyBhbmQgcmVzb2x2ZSBzaGFkb3dpbmcgb2YgbG9jYWwgdmFyaWFibGVzLgoKMjAwMi0wOC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVRoZSBhdXRvbWF0aWMgYW5kIFBvc3RzY3JpcHQgaGludGVyIG5vdyBhdXRvbWF0aWNhbGx5IGRldGVjdAoJaW5mbGVjdGlvbiBwb2ludHMgaW4gZ2x5cGggb3V0bGluZXMgYW5kIHRyZWF0cyB0aGVtIHNwZWNpYWxseS4gIFRoaXMKCWlzIHZlcnkgdXNlZnVsIHRvIHByZXZlbnQgbmFzdHkgZWZmZWN0IGxpa2UgdGhlIGRpc2FwcGVhcmluZwoJZGlhZ29uYWxzIG9mICJTIiBhbmQgInMiIGluIG1hbnksIG1hbnkgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChhaF9mbGFnX2luZmxlY3Rpb24pOiBOZXcgbWFjcm8uCgkqIHNyYy9hdXRvaGludC9haGFuZ2xlcy5jIChhaF9hbmdsZV9kaWZmKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvYXV0b2hpbnQvYWhhbmdsZXMuaDogVXBkYXRlZC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX2luZmxlY3Rpb25zKTogTmV3CglmdW5jdGlvbi4KCShhaF9vdXRsaW5lX2RldGVjdF9mZWF0dXJlcyk6IFVzZSBpdC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfYWxpZ25fc3Ryb25nX3BvaW50cykKCVshQUhfT1BUSU9OX05PX1dFQUtfSU5URVJQT0xBVElPTl06IEhhbmRsZSBpbmZsZWN0aW9uLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL2RvY21ha2VyLnB5LCBzcmMvdG9vbHMvZG9jbWFrZXIvdXRpbHMucHksCglzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBVcGRhdGluZyB0aGUgRG9jTWFrZXIgdG9vbC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQ2hhbmdpbmcgdGhlIHR5cGUgb2YgdGhlICJsb2FkX2ZsYWdzIgoJcGFyYW1ldGVyIGZyb20gIkZUX0ludCIgdG8gIkZUX0ludDMyIiwgdGhpcyBpbiBvcmRlciB0byBzdXBwb3J0IG1vcmUKCW9wdGlvbnMuICBUaGlzIHNob3VsZCBvbmx5IGJyZWFrIGJpbmFyeSBhbmQvb3Igc291cmNlIGNvbXBhdGliaWxpdHkKCW9uIDE2LWJpdCBwbGF0Zm9ybXMgKEF0YXJpPykuCgkoRlRfTE9BRF9OT19BVVRPSElOVCk6IE5ldyBtYWNyby4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCUhhbmRsZSBGVF9MT0FEX05PX0FVVE9ISU5ULgoJKEZUX0xvYWRfQ2hhcik6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYywgc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0b2JqZWN0LmMsCglzcmMvYXV0b2hpbnQvYWhnbHlwaC5jLCBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZpeGluZyB0eXBvcwoJYW5kIHJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wOC0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfR2V0X01ldHJpY3MpOiBBZGQgZ3VhcmQgZm9yIGsgPSAwLgoKMjAwMi0wOC0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLAoJc3JjL3BzaGludGVyL3BzaGdsb2IuYywgc3JjL3BzaGludGVyL3BzaHJlYy5jLAoJc3JjL2F1dG9oaW50L2FobW9kdWxlLmMgW0RFQlVHX0hJTlRFUl06IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzCgkob25seSB1c2VkIGluIGRldmVsb3BtZW50IGJ1aWxkcyBhbnl3YXkpLgoKCUltcHJvdmUgc3VwcG9ydCBvZiBsb2NhbCBleHRyZW1hIGFuZCBzdGVtIGVkZ2UgcG9pbnRzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfSGludF9UYWJsZVJlYyk6IFVzZSBQU0gzX1pvbmVSZWMKCWZvciBgem9uZXMnLgoJKFBTSDNfRElSX1VQLCBQU0gzX0RJUl9ET1dOKTogRXhjaGFuZ2UgdmFsdWVzLgoJKFBTSDNfRElSX0hPUklaT05UQUwsIFBTSDNfRElSX1ZFUlRJQ0FMKTogTmV3IG1hY3Jvcy4KCShQU0gzX0RJUl9DT01QQVJFLCBQU0gzX0RJUl9JU19IT1JJWk9OVEFMLCBQU0gzX0lTX1ZFUlRJQ0FMKTogTmV3CgltYWNyb3MuCgkoUFNIM19QT0lOVF9JTkZMRVgpOiBOZXcgZW51bS4KCShwc2gzX3BvaW50X3tpcyxzZXR9X3tvZmYsaW5mbGV4fSk6IE5ldyBtYWNyb3MuCgkoUFNIM19QT0lOVF97RVhUUkVNVU0sUE9TSVRJVkUsTkVHQVRJVkUsRURHRV9NSU4sRURHRV9NQVgpOiBOZXcKCWVudW0gdmFsdWVzLgoJKHBzaDNfcG9pbnRfe2lzLHNldH1fe2V4dHJlbXVtLHBvc2l0aXZlLG5lZ2F0aXZlLGVkZ2VfbWluLGVkZ2VfbWF4fSk6CglOZXcgbWFjcm9zLgoJKFBTSDNfUG9pbnRSZWMpOiBOZXcgbWVtYmVycyBgZmxhZ3MyJyBhbmQgYG9yZ192Jy4KCShQU0gzX1BPSU5UX0VRVUFMX0FSRywgUFNIM19QT0lOVF9BTkdMRSk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyBbREVCVUdfSElOVEVSXTogUmVtb3ZpbmcgY29tcGlsZXIKCXdhcm5pbmdzLgoJKENPTVBVVEVfSU5GTEVYUyk6IE5ldyBtYWNyby4KCShwc2gzX2hpbnRfYWxpZ24pOiBTaW1wbGlmeSBzb21lIGJhc2ljIGFyaXRobWV0aWMgY29tcHV0YXRpb25zLgoJKHBzaDNfcG9pbnRfaXNfZXh0cmVtdW0pOiBSZW1vdmVkLgoJKHBzaDNfZ2x5cGhfY29tcHV0ZV9pbmZsZWN0aW9ucykgW0NPTVBVVEVfSU5GTEVYU106IE5ldyBmdW5jdGlvbi4KCShwc2gzX2dseXBoX2luaXQpIFtDT01QVVRFX0lORkxFWFNdOiBVc2UgaXQuCgkocHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEpOiBOZXcgZnVuY3Rpb24uCgkoUFNIM19TVFJPTkdfVEhSRVNIT0xEKTogSW5jcmVhc2VkIHRvIDMwLgoJKHBzaDNfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludCk6IEltcHJvdmVkLgoJKHBzaDNfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzLAoJcHNoM19nbHlwaF9pbnRlcnBvbGF0ZV9zdHJvbmdfcG9pbnRzKTogVXBkYXRlZC4KCShwc2gzX2hpbnRzX2FwcGx5KTogVXNlIHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hLgoKCSogdGVzdC9ndmlldy5jIChkcmF3X3BzM19oaW50LCBwczNfZHJhd19jb250cm9sX3BvaW50cyk6IE5ldwoJZnVuY3Rpb25zLgoJT3RoZXIgc21hbGwgdXBkYXRlcy4KCgkqIEphbWZpbGU6IFNtYWxsIHVwZGF0ZXMuCgoyMDAyLTA4LTE4ICBBcmthZGl1c3ogTWlza2lld2ljeiAgPG1pc2lla0BwbGQuT1JHLlBMPgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCwgdW5pbnN0YWxsKTogQWRkICQoREVTVERJUikgdG8KCW1ha2UgbGlmZSBlYXNpZXIgZm9yIHBhY2thZ2UgbWFpbnRhaW5lcnMuCgoyMDAyLTA4LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2x5cGhfTG9hZCk6IEZpeCBjb21wdXRhdGlvbiBvZgoJaG9yaUJlYXJpbmdYLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaExvYWQpOiBGaXggY29tcHV0YXRpb24gb2YKCWhvcmlCZWFyaW5nWS4KCjIwMDItMDgtMTYgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCUFkZCBzdXBwb3J0IGZvciBBcHBsZSBjb21wb3NpdGUgZ2x5cGhzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKFRUX0NPTkZJR19PUFRJT05fQ09NUE9ORU5UX09GRlNFVF9TQ0FMRUQpOiBOZXcgbWFjcm8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChPVkVSTEFQX0NPTVBPVU5ELCBTQ0FMRURfQ09NUE9ORU5UX09GRlNFVCwKCVVOU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQpOiBOZXcgbWFjcm9zIGZvciBhZGRpdGlvbmFsIE9wZW5UeXBlCglnbHlwaCBsb2FkaW5nIGZsYWdzLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBJbXBsZW1lbnQgaXQuCgoyMDAyLTA4LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9mcmVlX2dseXBoX2RhdGEpLAoJc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBVc2UgRlRfVU5VU0VELgoKMjAwMi0wOC0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBJbml0aWFsaXplIGBlcnJvcicuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wOC0xNSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUltcGxlbWVudGVkIHRoZSBpbmNyZW1lbnRhbCBmb250IGxvYWRpbmcgc3lzdGVtIGZvciB0aGUgQ0ZGIGRyaXZlci4KCVRlc3RlZCB1c2luZyB0aGUgR2hvc3RTY3JpcHQtdG8tRnJlZVR5cGUgYnJpZGdlICh1bmRlciBkZXZlbG9wbWVudCkuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9nZXRfZ2x5cGhfZGF0YSwgY2ZmX2ZyZWVfZ2x5cGhfZGF0YSk6IE5ldwoJZnVuY3Rpb25zLgoJKGNmZl9vcGVyYXRvcl9zZWFjLCBjZmZfY29tcHV0ZV9tYXhfYWR2YW5jZSwgY2ZmX3Nsb3RfbG9hZCk6IFVzZQoJdGhlbS4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBBZGQgYGZhY2UnIHBhcmFtZXRlci4KCUxvYWQgY2hhcnNldCBhbmQgZW5jb2Rpbmcgb25seSBpZiB0aGVyZSBhcmUgZ2x5cGhzLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBJbmNyZW1lbnRhbCBmb250cyBkb24ndCBuZWVkCgljaGFyYWN0ZXIgcmVjaXBlcy4KCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2Zmb2Jqcy5jOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQ29ycmVjdGVkIHRoZSBpbmNyZW1lbnRhbCBmb250Cglsb2FkaW5nIGltcGxlbWVudGF0aW9uIHRvIHVzZSB0aGUgbmV3IHN5c3RlbSBpbnRyb2R1Y2VkIG9uCgkyMDAyLTA4LTAxLgoKMjAwMi0wOC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZjbWFwLmM6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMsIHNyYy9jYWNoZS9mdGNjYWNoZS5pLAoJc3JjL3Bmci9wZnJsb2FkLmMsIHNyYy9wZnIvcGZyZ2xvYWQuYzogcy9pbmRleC9pZHgvLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogcy9zZWxlY3QvZmRzZWxlY3QvLgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IHMvd2FpdC93YWl0aW5nLy4KCjIwMDItMDgtMDEgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogVG9sZXJhdGUgYSBmYWNlIHdpdGggbm8KCWNoYXJzdHJpbmdzIGlmIHRoZXJlIGlzIGFuIGluY3JlbWVudGFsIGxvYWRpbmcgaW50ZXJmYWNlLiAgVHlwZSAxCglmYWNlcyBzdXBwbGllZCBieSBQb3N0U2NyaXB0IGludGVycHJldGVycyBsaWtlIEdob3N0U2NyaXB0IHdpbGwKCXR5cGljYWxseSBub3QgcHJvdmlkZSBhbnkgY2hhcnN0cmluZ3MgYXQgbG9hZCB0aW1lLCBzbyB0aGlzIGlzCgllc3NlbnRpYWwgaWYgdGhleSBhcmUgdG8gd29yay4KCjIwMDItMDgtMDEgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglNb2RpZmllZCBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZSB0byBiZSBjbG9zZXIgdG8gRGF2aWQncwoJcHJlZmVyZW5jZXMuICBUaGUgaGVhZGVyIGZyZWV0eXBlLmggaXMgbm90IG5vdyBhZmZlY3RlZCwgdGhlCglpbnRlcmZhY2UgaXMgc3BlY2lmaWVkIHZpYSBhbiBGVF9QYXJhbWV0ZXIsIHRoZSBwb2ludGVyIHRvIHRoZQoJaW50ZXJmYWNlIGlzIGhpZGRlbiBpbiBhbiBpbnRlcm5hbCBwYXJ0IG9mIHRoZSBmYWNlIHJlY29yZCwgYW5kIGFsbAoJdGhlIGRlZmluaXRpb25zIGFyZSBpbiBmdGluY3JlbS5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCVJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJSW5jbHVkZSBGVF9JTkNSRU1FTlRBTF9ILgoJKEZUX0ZhY2VfSW50ZXJuYWxSZWMpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkCglgaW5jcmVtZW50YWxfaW50ZXJmYWNlJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UsIEZUX09wZW5fRmFjZSkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCUZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzLCBUVF9Mb2FkX0dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0ZhY2VfSW5pdCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkoVDFfUGFyc2VfR2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCUZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgkoVDFfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgoyMDAyLTA3LTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW5jcmVtLmg6IEFkZGluZyBuZXcgZXhwZXJpbWVudGFsIGhlYWRlciBmaWxlCgl0byBkZW1vbnN0cmF0ZSBhICJjbGVhbmVyIiBBUEkgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBmb250IGxvYWRpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9JTkNSRU1FTlRBTF9IKTogTmV3IG1hY3JvLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLyo6IEFkZGluZyBuZXcgKG1vcmUgYWR2YW5jZWQpIHZlcnNpb24gb2YKCXRoZSBEb2NNYWtlciB0b29sLCB1c2luZyBQeXRob24ncyBzb3BoaXN0aWNhdGVkIHJlZ2V4cHMuCgoyMDAyLTA3LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJcy9mdF9tZW1zZXQvRlRfTUVNX1NFVC8uCglzL0ZUX01FTV9TRVQvRlRfTUVNX1pFUk8vIHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwMi0wNy0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogTWFrZSBpdCB3b3JrIHdpdGggVFRDcy4KCjIwMDItMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IHMvbWVtc2V0L2Z0X21lbXNldC8uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2VuY29kaW5nX2xvYWQpOiBSZW1vdmUgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF9lbmNvZGluZ19pbml0KTogUmVtb3ZlIGBwc25hbWVzJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgc3RhdGVtZW50Cgl3aXRob3V0IGVmZmVjdC4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbW92ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X3RhYmxlX3JlY29yZCwKCXBzaDNfaGludF90YWJsZV9pbml0LCBwc2gzX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IEZpeCBlcnJvcgoJbWVzc2FnZS4KCjIwMDItMDctMjQgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRml4IGZvciBidWcgcmVwb3J0ZWQgYnkgU3ZlbiBOZXVtYW5uCglbc3ZlbkBnaW1wLm9yZ10gb24gdGhlIEZyZWVUeXBlIGRldmVsb3BtZW50IGZvcnVtOiAiSWYKCUZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgaXMgdW5kZWZpbmVkICh0aGlzIGlzIHRoZSBkZWZhdWx0KSwgdGhlCglUcnVlVHlwZSBsb2FkZXIgY3Jhc2hlcyBpbiBsaW5lIDg1MiBvZiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIHdoZW4KCWl0IHRyaWVzIHRvIGFjY2VzcyBmYWNlLT5nbHlwaF9sb2NhdGlvbnMuIgoKMjAwMi0wNy0xOCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUFkZGVkIHR5cGVzIGFuZCBzdHJ1Y3R1cmVzIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgdHlwZWZhY2UgbG9hZGluZy4KCVRoZSBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2Ugc3RydWN0dXJlLCBkZWZpbmVkIGluIGZyZWV0eXBlLmgsIGlzCglkZXNpZ25lZCB0byBiZSBwYXNzZWQgdG8gRlRfT3Blbl9GYWNlIHRvIHByb3ZpZGUgY2FsbGJhY2sgZnVuY3Rpb25zCgl0byBvYnRhaW4gZ2x5cGggcmVjaXBlcyBhbmQgbWV0cmljcywgZm9yIGZvbnRzIGxpa2UgdGhvc2UgcGFzc2VkCglmcm9tIFBvc3RTY3JpcHQgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBhbGwsIG9yIGFueSwgZ2x5cGgKCWluZm9ybWF0aW9uLCB3aGVuIGZpcnN0IG9wZW5lZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwpOgoJTmV3IGNvbmZpZ3VyYXRpb24gbWFjcm8gdG8gZW5hYmxlIGluY3JlbWVudGFsIGZhY2UgbG9hZGluZy4gIEJ5CglkZWZhdWx0IGl0IGlzIG5vdCBkZWZpbmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9CYXNpY19HbHlwaF9NZXRyaWNzLAoJRlRfR2V0X0dseXBoX0RhdGFfRnVuYywgRlRfR2V0X0dseXBoX01ldHJpY3NfRnVuYywKCUZUX0luY3JlbWVudGFsX0ludGVyZmFjZV9GdW5jcywgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcuCgkoRlRfT3Blbl9BcmdzLCBGVF9GYWNlUmVjKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldyBmaWVsZAoJYGluY3JlbWVudGFsX2ludGVyZmFjZScuCgkoRlRfT3Blbl9GbGFncykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcgZW51bQoJYGZ0X29wZW5faW5jcmVtZW50YWwnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmg6IEluY2x1ZGUgRlRfQ09ORklHX0NPTkZJR19ILgoJKEZUX0RhdGEpOiBOZXcgc3RydWN0dXJlIHRvIHJlcHJlc2VudCBiaW5hcnkgZGF0YS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUFkZCBwYXJhbWV0ZXIgZm9yIGluY3JlbWVudGFsIGxvYWRpbmcuCgkoRlRfT3Blbl9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVzZSBpbmNyZW1lbnRhbAoJaW50ZXJmYWNlLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgc3lzdGVtCglmb3IgdGhlIFRydWVUeXBlIGRyaXZlci4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZXR1cm4gRlRfRXJyb3IuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENoZWNrIGZvciBvdmVycmlkaW5nIG1ldHJpY3MuCgkoVFRfTG9hZF9HbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBEb24ndCBsb29rIGZvcgoJdGhlIGdseXBoIHRhYmxlIHdoaWxlIGhhbmRsaW5nIGFuIGluY3JlbWVudGFsIGZvbnQuCglHZXQgZ2x5cGggb2Zmc2V0LgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9GYWNlX0luaXQpCglbRlRfQ09ORklHX09QVElPTl9JTkNPUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZwoJc3lzdGVtIGZvciB0aGUgVHJ1ZVR5cGUgZHJpdmVyLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgc3lzdGVtCglmb3IgdGhlIENJRCBkcml2ZXIuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUNoYW5nZXMgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBUeXBlIDQyIGZvbnRzOiBBc3N1bWUgYSBmb250IGhhcwoJZ2x5cGhzIGlmIGl0IGhhcyBhbiBpbmNyZW1lbnRhbCBpbnRlcmZhY2Ugb2JqZWN0LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfUGFyc2VfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZyk6IFRoaXMuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHN1cHBvcnQgZm9yIGluY3JlbWVudGFsbHkKCWxvYWRlZCBUeXBlIDEgZmFjZXMuCgkoVDFfUGFyc2VfR2x5cGgpOiBOZXcgZnVuY3Rpb24uCgkoVDFfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoyMDAyLTA3LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQ2xlYW5pbmcgdXAgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gY29kZTsgbGluZWFyIGhhc2hpbmcgaXMgbm93IHRoZQoJZGVmYXVsdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCwgc3JjL2NhY2hlL2Z0Y2NhY2hlLmksCglzcmMvY2FjaGUvZnRjY2FjaGUuYyBbIUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBSZW1vdmVkLgoJKEZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkc6IFJlbW92ZWQgYWxzby4KCglGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUyBpcyBub3cgdGhlIGRlZmF1bHQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggKEZUX0RyaXZlcl9DbGFzc1JlYyk6IFJlbW92ZQoJYGdldF9jaGFyX2luZGV4JyBhbmQgYGdldF9uZXh0X2NoYXInLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLCBzcmMvYmFzZS9mdG9ianMuYywKCXNyYy9iZGYvYmRmZHJpdnIuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9wY2YvcGNmZHJpdnIuYywKCXNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywKCXNyYy9zZm50L3R0Y21hcDAuaCwgc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlNDIvdDQyb2Jqcy5jLCBzcmMvd2luZm9udHMvd2luZm50LmMKCVshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBSZW1vdmVkLiAgVGhlIG5ldyBjbWFwIGNvZGUgaXMgbm93Cgl0aGUgZGVmYXVsdC4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfQ01hcF9DaGFySW5kZXgsIFQ0Ml9DTWFwX0NoYXJOZXh0KToKCVJlbW92ZWQuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X0NoYXJfSW5kZXgsIENpZF9HZXRfTmV4dF9DaGFyKToKCVJlbW92ZWQuCgkodDFfY2lkX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jICh0dF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW1vdmVkCgkodDFfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBTZWxlY3QgVW5pY29kZSBjbWFwIGJ5IGRlZmF1bHQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9TRk5UX0hlYWRlcik6IEZpeGVkIGEgcmVjZW50IGJ1ZyB0aGF0CglwcmV2ZW50ZWQgT3BlblR5cGUgZm9udHMgdG8gYmUgcmVjb2duaXplZCBieSBGcmVlVHlwZS4KCjIwMDItMDctMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglDaGFuZ2luZyB0aGUgU0ZOVCBsb2FkZXIgdG8gY2hlY2sgZm9yIFNGTlQtYmFzZWQgZm9udCBmaWxlcwoJZGlmZmVyZW50bHkuICBXZSBub3cgaWdub3JlIHRoZSByYW5nZSAiaGVscGVyIiBmaWVsZHMgYW5kIGNoZWNrIHRoZQoJImhlYWQiIHRhYmxlJ3MgbWFnaWMgbnVtYmVyIGluc3RlYWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoU0ZOVF9IZWFkZXJSZWMpOiBBZGQgYG9mZnNldCcKCWZpZWxkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogTmV3IGZ1bmN0aW9uLgoJKFRUX0xvYWRfU0ZOVF9IZWFkZXJSZWMpOiBSZW5hbWVkIHRvLi4uCgkoVFRfTG9hZF9TRk5UX0hlYWRlcik6IFRoaXMuCglJbXBsZW1lbnQgbmV3IGZ1bmN0aW9uYWxpdHkuCgkqIHNyYy9zZm50L3R0bG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2ludGVyZmFjZSk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9iamVjdC5jLCBzcmMvYmFzZS9mdGhhc2guYzogVXBkYXRlZCBvYmplY3Qgc3ViLXN5c3RlbQoJYW5kIGR5bmFtaWMgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiAoc3RpbGwgZXhwZXJpbWVudGFsLCBkb24ndAoJdXNlKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGhhc2guaDogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTGlicmFyeVJlYyk6IE5ldyBtZW1iZXIKCWBtZXRhX2NsYXNzJy4KCglGaXhpbmcgYSBidWcgaW4gdGhlIFR5cGUgMSBsb2FkZXIgdGhhdCBwcmV2ZW50ZWQgdmFsaWQgZm9udCBib3VuZGluZwoJYm94ZXMgdG8gYmUgbG9hZGVkIGZyb20gbXVsdGlwbGUgbWFzdGVyIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19CbGVuZFJlYyk6IEFkZCBgYmJveGVzJyBmaWVsZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglgVDFfRklFTERfVFlQRV9CQk9YJy4KCShUMV9GaWVsZExvY2F0aW9uKTogQWRkIGBUMV9GSUVMRF9MT0NBVElPTl9CQk9YJy4KCShUMV9GSUVMRF9CQk9YKTogTmV3IG1hY3JvLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19QYXJzZXJfTG9hZEZpZWxkKTogSGFuZGxlIFQxX0ZJRUxEX1RZUEVfQkJPWC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jICh0MV9hbGxvY2F0ZV9ibGVuZCk6IENyZWF0ZSBibGVuZC0+YmJveGVzLgoJKFQxX0RvbmVfQmxlbmQpOiBGcmVlIGJsZW5kLT5iYm94ZXMuCgkodDFfbG9hZF9rZXl3b3JkKTogSGFuZGxlIFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkocGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCSh0MV9rZXl3b3Jkcyk6IENvbW1lbnQgb3V0IGBwYXJzZV9mb250X2Jib3gnLgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogRGVmaW5lIGBGb250QkJveCcgZmllbGQuCgoyMDAyLTA3LTEwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogU21hbGwgZml4IHRvIHNlbGVjdCB0aGUgVW5pY29kZSBjaGFybWFwIGJ5CglkZWZhdWx0IHdoZW4gbmVlZGVkLgoJU21hbGwgZml4IHRvIGFsbG93IE9wZW5UeXBlIGZvbnRzIHRvIHN1cHBvcnQgQWRvYmUgY2hhcm1hcHMgd2hlbgoJbmVlZGVkLgoKCSogc3JjL2NmZi9jZmZjbWFwLmMsIHNyYy9jZmYvY2ZmY21hcC5oOiBOZXcgZmlsZXMgdG8gc3VwcG9ydAoJY2hhcm1hcHMgZm9yIENGRiBmb250cy4KCgkqIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvSmFtZmlsZSwgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0VuY29kaW5nUmVjKTogVXNlCglmaXhlZC1sZW5ndGggYXJyYXlzIGZvciBgc2lkcycgYW5kIGBjb2RlcycuICBBZGQgYGNvdW50JyBtZW1iZXIuCgkoQ0ZGX0ZvbnRSZWMpOiBBZGQgYHBzbmFtZXMnIG1lbWJlci4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oLAoJc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmMsCglzcmMvY2ZmcGFyc2UuaCwgc3JjL2NmZi9jZmZnbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmg6IEFkZGluZwoJc3VwcG9ydCBmb3IgQ0ZGIGNoYXJtYXBzLCByZWZvcm1hdHRpbmcgdGhlIHNvdXJjZXMsIGFuZCByZW1vdmluZwoJc29tZSBidWdzIGluIHRoZSBFbmNvZGluZyBhbmQgQ2hhcnNldCBsb2FkZXJzLgoJTWFueSBmb250cyByZW5hbWVkIHRvIHVzZSBsb3dlcmNhc2Ugb25seToKCgkgIENGRl9CdWlsZGVyX0luaXQgLT4gY2ZmX2J1aWxkZXJfaW5pdAoJICBDRkZfQnVpbGRlcl9Eb25lIC0+IGNmZl9idWlsZGVyX2RvbmUKCSAgQ0ZGX0luaXRfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9pbml0CgkgIENGRl9QYXJzZV9DaGFyU3RyaW5ncyAtPiBjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncwoJICBDRkZfTG9hZF9HbHlwaCAtPiBjZmZfc2xvdF9sb2FkCgkgIENGRl9Jbml0X0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfaW5pdAoJICBDRkZfUHJlcGFyZV9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX3ByZXBhcmUKCSAgQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZyAtPiBjZmZfZ2V0X3N0YW5kYXJkX2VuY29kaW5nCgkgIENGRl9BY2Nlc3NfRWxlbWVudCAtPiBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQKCSAgQ0ZGX0ZvcmdldF9FbGVtZW50IC0+IGNmZl9pbmRleF9mb3JnZXRfZWxlbWVudAoJICBDRkZfR2V0X05hbWUgLT4gY2ZmX2luZGV4X2dldF9uYW1lCgkgIENGRl9HZXRfU3RyaW5nIC0+IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZwoJICBDRkZfR2V0X0ZEIC0+IGNmZl9mZF9zZWxlY3RfZ2V0CgkgIENGRl9Eb25lX0NoYXJzZXQgLT4gY2ZmX2NoYXJzZXRfZG9uZQoJICBDRkZfTG9hZF9DaGFyc2V0IC0+IGNmZl9jaGFyc2V0X2xvYWQKCSAgQ0ZGX0RvbmVfRW5jb2RpbmcgLT4gY2ZmX2VuY29kaW5nX2RvbmUKCSAgQ0ZGX0xvYWRfRW5jb2RpbmcgLT4gY2ZmX2VuY29kaW5nX2xvYWQKCSAgQ0ZGX0RvbmVfU3ViRm9udCAtPiBjZmZfc3ViZm9udF9kb25lCgkgIENGRl9Mb2FkX0ZvbnQgLT4gY2ZmX2ZvbnRfbG9hZAoJICBDRkZfRG9uZV9Gb250IC0+IGNmZl9mb250X2RvbmUKCSAgQ0ZGX1NpemVfR2V0X0dsb2JhbF9GdW5jcyAtPiBjZmZfc2l6ZV9nZXRfZ2xvYmFsX2Z1bmNzCgkgIENGRl9TaXplX0RvbmUgLT4gY2ZmX3NpemVfZG9uZQoJICBDRkZfU2l6ZV9Jbml0IC0+IGNmZl9zaXplX2luaXQKCSAgQ0ZGX1NpemVfUmVzZXQgLT4gY2ZmX3NpemVfcmVzZXQKCSAgQ0ZGX0dseXBoU2xvdF9Eb25lIC0+IGNmZl9zbG90X2RvbmUKCSAgQ0ZGX0dseXBoU2xvdF9Jbml0IC0+IGNmZl9zbG90X2luaXQKCSAgQ0ZGX1N0ckNvcHkgLT4gY2ZmX3N0cmNweQoJICBDRkZfRmFjZV9Jbml0IC0+IGNmZl9mYWNlX2luaXQKCSAgQ0ZGX0ZhY2VfRG9uZSAtPiBjZmZfZmFjZV9kb25lCgkgIENGRl9Ecml2ZXJfSW5pdCAtPiBjZmZfZHJpdmVyX2luaXQKCSAgQ0ZGX0RyaXZlcl9Eb25lIC0+IGNmZl9kcml2ZXJfZG9uZQoJICBDRkZfUGFyc2VyX0luaXQgLT4gY2ZmX3BhcnNlcl9pbml0CgkgIENGRl9QYXJzZXJfUnVuIC0+IGNmZl9wYXJzZXJfcnVuCgoJICBhZGRfcG9pbnQgLT4gY2ZmX2J1aWxkZXJfYWRkX3BvaW50CgkgIGFkZF9wb2ludDEgLT4gY2ZmX2J1aWxkZXJfYWRkX3BvaW50MQoJICBhZGRfY29udG91ciAtPiBjZmZfYnVpbGRlcl9hZGRfY29udG91cgoJICBjbG9zZV9jb250b3VyIC0+IGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIKCSAgY2ZmX2V4cGxpY2l0X2luZGV4IC0+IGNmZl9pbmRleF9nZXRfcG9pbnRlcnMKCjIwMDItMDctMDkgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogRml4ZWQgYSBidWcgdGhhdAoJcHJldmVudGVkIHRoZSBoaW50ZXIgZnJvbSB1c2luZyBjb3JyZWN0IHN0YW5kYXJkIHdpZHRoIGFuZCBoZWlnaHQKCXZhbHVlcywgcmVzdWx0aW5nIGluIGhpbnRpbmcgYnVncyB3aXRoIGNlcnRhaW4gZm9udHMgKGUuZy4gVXRvcGlhKS4KCjIwMDItMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQWRkZWQgY29kZSB0byByZXR1cm4KCXN1Y2Nlc3NmdWxseSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIGJpdG1hcCBnbHlwaCAodGhlCglwcmV2aW91cyBjb2RlIHNpbXBseSByZXR1cm5lZCB3aXRoIGFuIGVycm9yKS4KCgkqIGRvY3MvREVCVUcuVFhUOiBBZGRpbmcgZGVidWdnaW5nIHN1cHBvcnQgZG9jdW1lbnRhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCksIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmMKCShmdF9kZWJ1Z19pbml0KSwgYnVpbGRzL2FtaWdhL3NyYy9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBDaGFuZ2VkCgl0aGUgc3ludGF4IG9mIHRoZSBGVDJfREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdXNlZCB0byBjb250cm9sCglkZWJ1Z2dpbmcgb3V0cHV0IChpLmUuIGxvZ2dpbmcgYW5kIGVycm9yIG1lc3NhZ2VzKS4gIEl0IG11c3Qgbm93Cglsb29rIGxpa2U6CgoJICBhbnk6NiBtZW1vcnk6NCBpbzozICAgb3IKCSAgYW55OjYsbWVtb3J5OjQsaW86MyAgIG9yCgkgIGFueTo2O21lbW9yeTo0O2lvOjMKCjIwMDItMDctMDcgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NuYXBfc3RlbSk6IEFkZGluZyBzdXBwb3J0IGZvcgoJYmx1ZSBmdXp6LgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZXNSZWMpOiBBZGQgYGJsdWVfZnV6eicgZmllbGQuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogSW5pdGlhbGl6ZSBgYmx1ZV9mdXp6Jy4KCglBZGRpbmcgc3VwcG9ydCBmb3IgaGludGVyLXNwZWNpZmljIGJpdCBmbGFncywgYW5kIHRoZSBuZXcKCUZUX1NldF9IaW50X0ZsYWdzIGhpZ2gtbGV2ZWwgQVBJLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZXRfSGludF9GbGFncyk6IE5ldyBmdW5jdGlvbi4KCShGVF9ISU5UX05PX0lOVEVHRVJfU1RFTSwgRlRfSElOVF9OT19IU1RFTV9BTElHTiwKCUZUX0hJTlRfTk9fVlNURU1fQUxJR04pOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfRmFjZV9JbnRlcm5hbFJlYyk6IEFkZAoJYGhpbnRfZmxhZ3MnIG1lbWJlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfSGludF9GbGFncyk6IE5ldyBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRGVjb2RlclJlYyk6IEFkZCBgaGludF9mbGFncycKCW1lbWJlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oIChUMV9IaW50c19BcHBseUZ1bmMsCglUMl9IaW50c19BcHBseUZ1bmMpOiBBZGQgcGFyYW1ldGVyIHRvIHBhc3MgaGludCBmbGFncy4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzLAoJVDFfRGVjb2Rlcl9Jbml0KTogVXNlIGRlY29kZXItPmhpbnRfZmxhZ3MuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0J1aWxkZXIpOiBBZGQgYGhpbnRfZmxhZ3MnIGZpZWxkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9CdWlsZGVyX0luaXQpOiBTZXQgYnVpbGRlci0+aGludF9mbGFncy4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHMxX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MgKHVudXNlZCkuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5oOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MgKHVudXNlZCkuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5oOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oOiBVcGRhdGVkLgoKMjAwMi0wNy0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0IHJldHVybmVkCglpbmNvcnJlY3QgYWR2YW5jZXMgd2hlbiB0aGUgb3V0bGluZSByZXNvbHV0aW9uIHdhcyBkaWZmZXJlbnQgZnJvbQoJdGhlIG1ldHJpY3MgcmVzb2x1dGlvbi4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jOiBzL0ZUX01FTV9TRVQvRlRfWkVSTy8gd2hlcmUgYXBwcm9wcmlhdGUuCgkoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogU2xpZ2h0IGltcHJvdmVtZW50cyB0byB0aGUgc2VyaWYKCWRldGVjdGlvbiBjb2RlLiAgTW9yZSB3b3JrIGlzIG5lZWRlZCB0aG91Z2guCgoyMDAyLTA3LTAzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJU21hbGwgaW1wcm92ZW1lbnRzIHRvIHRoZSBhdXRvbWF0aWMgaGludGVyLiAgVW5ldmVuIHN0ZW0td2lkdGhzIGhhdmUKCW5vdyBkaXNhcHBlYXJlZCBhbmQgZXZlcnl0aGluZyBsb29rcyBtdWNoIGJldHRlciwgZXZlbiBpZiB0aGVyZSBhcmUKCXN0aWxsIGlzc3VlcyB3aXRoIHNlcmlmZWQgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9HbG9iYWxzKTogQWRkZWQgYHN0ZHMnIGFycmF5LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKE9QVElNX1NURU1fU05BUCk6IE5ldyAjZGVmaW5lLgoJKGFoX3NuYXBfd2lkdGgpOiBDb21tZW50ZWQgb3V0LgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogUmVuYW1lZCB0by4uLgoJKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IFRoaXMuCglEb24ndCBhbGxvdyB1bmV2ZW4gc3RlbS13aWR0aHMuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBOZXcgZnVuY3Rpb24uCgkoYWhfYWxpZ25fc2VyaWZlZF9lZGdlKTogRG9uJ3Qgc3RyZW5ndGhlbiBzZXJpZnMuCgkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfc2NhbGVfZ2xvYmFscyk6IFVwZGF0ZWQuCgoyMDAyLTA3LTAzICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCglBZGRpbmcgbmV3IGFsZ29yaXRobSBiYXNlZCBvbiBPd2VuIFRheWxvcidzIHJlY2VudCB3b3JrLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oOiBOZXcgZmlsZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmg6IFVwZGF0ZWQuCglVc2UgcHNoYWxnbzMgYnkgZGVmYXVsdC4KCSogc3JjL3BzaGludGVyL3BzaGludGVyLmM6IEluY2x1ZGUgcHNoYWxnbzMuYy4KCgkqIHNyYy9wc2hpbnRlci9KYW1maWxlLCBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAyLTA3LTAxICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IEZpeCBhIGJ1ZwoJd2hlcmUsIGlmIGEgZ2x5cGggaGFzIG1vcmUgdGhhbiBoaW50IG1hc2ssIHRoZSBzZWNvbmQgbWFzayBnZXRzCglhcHBsaWVkIHRvIHBvaW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY292ZXJlZCBieSB0aGUgZmlyc3QgbWFzay4KCjIwMDItMDctMDEgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDhfY2hhcl9uZXh0LCB0dF9jbWFwMTJfY2hhcl9uZXh0KToKCUZpeGluZyB0aGUgY21hcCA4IGFuZCAxMiBwYXJzaW5nIHJvdXRpbmVzLgoKMjAwMi0wNy0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKEZUX091dGxpbmVfRW1ib2xkZW4pOiBSZW5hbWVkIHRvLi4uCgkoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogVGhpcy4KCVVwZGF0ZWQgdG8gbmV3IHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zLgoJKEZUX091dGxpbmVfT2JsaXF1ZSk6IFJlbmFtZWQgdG8uLi4KCShGVF9HbHlwaFNsb3RfT2JsaXF1ZSk6IFRoaXMuCgkoZnRfbm9ybSk6IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oOiBVcGRhdGVkLgoKMjAwMi0wNi0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oOiBVcGRhdGluZyB0aGUgb2JqZWN0CglzdWItc3lzdGVtIGRlZmluaXRpb25zIChzdGlsbCBleHBlcmltZW50YWwpLgoKCSogc3JjL2Jhc2UvZnRoYXNoLmMgKGZ0X2hhc2hfcmVtb3ZlKTogRml4aW5nIGEgc21hbGwgcmVhbGxvY2F0aW9uCglidWcuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfRnJvbV9Qb2xhciwgRlRfQW5nbGVfRGlmZik6IE5ldwoJZnVuY3Rpb25zLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmg6IFVwZGF0ZWQuCgoKCUFkZGluZyBwYXRoIHN0cm9rZXIgY29tcG9uZW50ICh3b3JrIGluIHByb2dyZXNzKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmgsIHNyYy9iYXNlL2Z0c3Ryb2tlci5jOiBOZXcgZmlsZXMuCgkqIHNyYy9iYXNlL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9TVFJPS0VSX0gpOiBOZXcgbWFjcm8uCgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9Db21wb3NpdGVfR2x5cGgpLAoJc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9WZWN0b3JfVHJhbnNmb3JtKTogRml4ZWQgV2VybmVyJ3MgbGF0ZXN0IGZpeC4KCUZUX1ZlY3Rvcl9UcmFuc2Zvcm0gd2Fzbid0IGJ1Z2d5LCB0aGUgVHJ1ZVR5cGUgY29tcG9zaXRlIGxvYWRlciB3YXMuCgoyMDAyLTA2LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDMuCgoyMDAyLTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA2LTIxICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmggKFQ0Ml9Gb250KTogUmVtb3ZlZCBzaW5jZQoJaXQgaXMgYWxyZWFkeSBpbiB0NDJvYmpzLmguCgkoVDQyX0ZhY2UpOiBVc2UgVDFfRm9udFJlYy4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IFVwZGF0ZWQuCgkoRlRfSGFzX1BTX0dseXBoX05hbWVzKTogQ2hlY2sgZm9yIHR5cGU0MiBkcml2ZXIgbmFtZSBhbHNvLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogSW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSC4KCShUNDJfRmFjZSk6IFJlbW92ZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBpbiB0NDJ0eXBlcy5oLgoKMjAwMi0wNi0yMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnJnbG9hZC5jIChwZnJfZ2x5cGhfbG9hZF9jb21wb3VuZCk6IEZpeCBsb2FkaW5nIG9mIGNvbXBvc2l0ZQoJZ2x5cGhzLgoKMjAwMi0wNi0yMSAgU3ZlbiBOZXVtYW5uICA8c3ZlbkBjb252ZXJnZW5jZS5kZT4KCgkqIHNyYy9wcmYvcGZydHlwZXMuaCAoUEZSX0tlcm5QYWlyKTogTmV3IHN0cnVjdHVyZS4KCShQRlJfUGh5Rm9udCk6IFVzZSBpdC4KCShQRlJfS2VybkZsYWdzKTogTmV3IGVudW1lcmF0aW9uLgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9rZXJuaW5nX3BhaXJzKTogTmV3CglmdW5jdGlvbi4KCShwZnJfcGh5X2ZvbnRfZXh0cmFfaXRlbXMpOiBVc2UgaXQuCgkocGZyX3BoeV9mb250X2RvbmUpOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IFNldCBrZXJuaW5nIGZsYWcgY29uZGl0aW9uYWxseS4KCShwZnJfZmFjZV9nZXRfa2VybmluZyk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL3Bmci9wZnJvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAyLTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogUHJlcGFyaW5nIHRoZSAyLjEuMiByZWxlYXNlLgoKMjAwMi0wNi0xOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSC4KCSh0MV9mYWNlX2NoZWNrX2Nhc3QpOiBSZW1vdmVkLgoJKEZUX0dldF9QU19Gb250X0luZm8pOiBNYWtlIGl0IHdvcmsgd2l0aCBDSUQgYW5kIFR5cGUgNDIgZHJpdmVycwoJYWxzby4KCjIwMDItMDYtMTkgIFNlYmFzdGllbiBCQVJSRSAgPHNlYmFzdGllbkBiYXJyZS5ub20uZnI+CgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9zZm50cyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9WZWN0b3JfVHJhbnNmb3JtKTogRml4IHNlcmlvdXMgdHlwbwoJKHh5IDwtPiB5eCkuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZXBsYWNlIGB8JyB3aXRoCglgfHwnIHRvIG1ha2UgY29kZSBlYXNpZXIgdG8gcmVhZC4KCjIwMDItMDYtMTggIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jICh0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UpOiBSZW1vdmVkLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBVc2UgRlRfQWN0aXZhdGVfU2l6ZQoJaW5zdGVhZC4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBSZW1vdmUgY2FsbCB0byB0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UuCgoyMDAyLTA2LTE4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX2N1c3RvbV9jaGFyX2luZGV4LAoJdDFfY21hcF9jdXN0b21fY2hhcl9uZXh0KTogRml4IGluZGV4IGNvbXB1dGF0aW9uIC0tIGluZGljZXMgc3RhcnQKCXdpdGggMCBhbmQgbm90IHdpdGggY21hcC0+Zmlyc3QuCgoJUHJvdmlkZSBkZWZhdWx0IGNoYXJtYXBzLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9GYWNlX0luaXQpLCBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCksCglzcmMvdHlwZTEvdDFvYmpzIChUMV9GYWNlX0luaXQpLCBzcmMvd2luZm9udHMvd2luZm50LmMKCShGTlRfRmFjZV9Jbml0KTogSW1wbGVtZW50IGl0LgoKMjAwMi0wNi0xNyAgU3ZlbiBOZXVtYW5uICA8c3ZlbkBnaW1wLm9yZz4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogRml4IHR5cG8uCgoyMDAyLTA2LTE2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJVXBkYXRlZCBXaW4zMi9WQysrIHByb2plY3RzIHRvIGluY2x1ZGUgdGhlIG5ldyBQRlIgZHJpdmVyLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wNi0xNiAgQW50aG9ueSBGb2sgIDxmb2tAZGViaWFuLm9yZz4KCglJbnN0YWxsIGZyZWV0eXBlMi5tNC4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEhhbmRsZSBpdC4KCjIwMDItMDYtMTYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJU2FtZSBmaXggZm9yIFBGUiBkcml2ZXIuCgoJKiBzcmMvcGZyL3BmcmNtYXAuYyAocGZyX2NtYXBfY2hhcl9pbmRleCwgcGZyX2NtYXBfY2hhcl9uZXh0KToKCUluY3JlYXNlIHJldHVybiB2YWx1ZSBieSAxLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgoyMDAyLTA2LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCUZpeCBnbHlwaCBpbmRpY2VzIHRvIG1ha2UgaW5kZXggemVybyBhbHdheXMgdGhlIHVuZGVmaW5lZCBnbHlwaC4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2NtYXBfaW5pdCk6IERvbid0IGRlY3JlYXNlCgljbWFwLT5udW1fZW5jb2RpbmdzLgoJKGJkZl9jbWFwX2NoYXJfaW5kZXgsIGJkZl9jbWFwX2NoYXJfbmV4dCwgQkRGX0dldF9DaGFyX0luZGV4KToKCUluY3JlYXNlIHJlc3VsdCBieSAxIGZvciBub3JtYWwgY2FzZXMuCgkoQkRGX0dseXBoX0xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAocGNmX2NtYXBfY2hhcl9pbmRleCwgcGNmX2NtYXBfY2hhcl9uZXh0LAoJUENGX0NoYXJfR2V0X0luZGV4KTogSW5jcmVhc2UgcmVzdWx0IGJ5IDEgZm9yIG5vcm1hbCBjYXNlcy4KCShQQ0ZfR2x5cGhfTG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IERvbid0IGRlY3JlYXNlIGogZm9yCglhbGxvY2F0aW5nIGBlbmNvZGluZycuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCwgRlRfR2V0X0dseXBoX05hbWUpOiBGaXgKCWJvdW5kaW5nIHRlc3RzLgoKMjAwMi0wNi0xNCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglBZGQgbmV3IGNtYXAgc3VwcG9ydCB0byBCREYgZHJpdmVyLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfQ01hcFJlYykgW0ZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCU5ldyBzdHJ1Y3R1cmUuCgkoYmRmX2NtYXBfaW5pdCwgYmRmX2NtYXBfZG9uZSwgYmRmX2NtYXBfY2hhcl9pbmRleCwKCWJkZl9jbWFwX2NoYXJfbmV4dCkgW0ZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogTmV3IGZ1bmN0aW9ucy4KCShCREZfR2V0X0NoYXJfSW5kZXgpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBVc2Ugb25seQoJY29uZGl0aW9uYWxseS4KCShCREZfRmFjZV9Jbml0KTogSGFuZGxlIGBBVkVSQUdFX1dJRFRIJyBhbmQgYFBPSU5UX1NJWkUnIGtleXdvcmRzLgoJSW1wbGVtZW50IG5ldyBjbWFwIGhhbmRsaW5nLgoJKGJkZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMi0wNi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTWFrZWZpbGUsIGNvbmZpZ3VyZSwgKi8qLm1rLCBidWlsZHMvdW5peC91bml4LWRlZi5pbiwKCWRvY3MvQ0hBTkdFUywgZG9jcy9JTlNUQUxMOiBzL1RPUC9UT1BfRElSLy4KCjIwMDItMDYtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IHMvRlRfU2hvcnQvc2hvcnQvIGZvciBjb25zaXN0ZW5jeS4KCjIwMDItMDYtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmM6IEFkZGVkIGEgbWlzc2luZyAjZW5kaWYuCgoJKiBzcmMvc2ZudC90dGxvYWQuYywgc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJUmVtb3ZlZCB0aGUgYnVnIGluIFR5cGUgNDIgZHJpdmVyIHRoYXQgcHJldmVudGVkIHVuLWhpbnRlZCBvdXRsaW5lcwoJdG8gYmUgbG9hZGVkLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBDYWxsIEZUX0RvbmVfU2l6ZS4KCShUNDJfU2l6ZV9Jbml0KTogQ2FsbCBGVF9BY3RpdmF0ZV9TaXplLgoJKHQ0Ml9jaGVja19zaXplX2NoYW5nZSk6IE5ldyBmdW5jdGlvbi4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVXNlIGl0LgoJKGZ0X2dseXBoc2xvdF9jbGVhcik6IFJlcGxhY2UgRlRfTUVNX1NFVCB3aXRoIEZUX1pFUk8uCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogVXNlIHQ0Ml9jaGVja19zaXplX2NoYW5nZS4KCUluaXRpYWxpemUgbW9yZSBmaWVsZHMgb2YgYGdseXBoJy4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDYtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4xIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDYtMDggIEp1bGl1c3ogQ2hyb2JvY3playAgPGpjaEBwcHMuanVzc2lldS5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9hdXRvaGludC9haGdseXBoLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYzogRG9uJ3QKCXVzZSBgc2V0am1wJywgYGxvbmdqbXAnLCBhbmQgYGptcF9idWYnIGJ1dCBgZnRfc2V0am1wJywgYGZ0X2xvbmdqbXAnLAoJYW5kIGBmdF9qbXBfYnVmJy4KCVJlbW92ZWQgZGlyZWN0IHJlZmVyZW5jZXMgdG8gPHN0ZGlvLmg+IGFuZCA8c2V0am1wLmg+IHdoZW4KCWFwcHJvcHJpYXRlLCB0byBldmVudHVhbGx5IHJlcGxhY2UgdGhlbSB3aXRoIGEKCUZUX0NPTkZJR19TVEFOREFSRF9MSUJSQVJZX0guICBVc2VmdWwgZm9yIHRoZSBYRnJlZTg2IEZvbnQgU2VydmVyCgliYWNrZW5kIGJhc2VkIG9uIEZUMi4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfSGFzX1BTX0dseXBoX05hbWVzKTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDItMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKHBjZl9jbWFwX2NoYXJfbmV4dCk6IEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkCgl0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIGludmFsaWQgdmFsdWVzLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmk6IFJlbW92aW5nIGEgdHlwbyB0aGF0IHByZXZlbnRlZAoJdGhlIHNvdXJjZSdzIGNvbXBpbGF0aW9uLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rKTogRml4ZWQgYQoJYnVnIHRoYXQgY2F1c2VkIG5hc3R5IG1lbW9yeSBvdmVyd3JpdGVzLiAgVGhlIGhhc2ggdGFibGUncwoJYnVja2V0cyBhcnJheSB3YXNuJ3QgY29ycmVjdGx5IHJlc2l6ZWQgd2hlbiBzaHJpbmtlZC4KCjIwMDItMDYtMDggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc21ha2VmaWxlLCBidWlsZHMvYW1pZ2EvbWFrZWZpbGU6IFVwZGF0ZWQuCgoyMDAyLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmssIGZ0Y19ub2RlX2hhc2hfbGluaykKCVtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogRml4IHJldHVybmVkIGVycm9yIGNvZGUuCglGaXggZGVidWdnaW5nIG1lc3NhZ2VzLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaSAoR0VOX0NBQ0hFX0xPT0tVUCk6IE1vdmUgZGVjbGFyYXRpb24gb2YKCWBmYW1pbHknIGFuZCBgaGFzaCcgdXAgdG8gbWFrZSBpdCBjb21waWxhYmxlIHdpdGggZysrLgoKCSogc3JjL3R5cGU0Mi90NDJlcnJvci5oOiBOZXcgZmlsZS4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYywKCXNyYy90eXBlNDIvdDQycGFyc2UuYzogVXNlIHQ0MiBlcnJvciBjb2Rlcy4KCSogc3JjL3R5cGU0Mi9ydWxlcy5tazogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9TVFJFQU1fSC4KCjIwMDItMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEdFTl9DQUNIRV9GQU1JTFlfQ09NUEFSRSwKCUdFTl9DQUNIRV9OT0RFX0NPTVBBUkUsIEdFTl9DQUNIRV9MT09LVVApIFtGVENfQ0FDSEVfVVNFX0lOTElORV06CglOZXcgbWFjcm9zLgoJKGZ0Y19jbWFwX2NhY2hlX2xvb2t1cCkgWyFGVENfQ0FDSEVfVVNFX0lOTElORV06IFR5cGVkZWYgdG8KCWZ0Y19jYWNoZV9sb29rdXAuCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBVcGRhdGVkLgoKCUFkZGluZyB2YXJpb3VzIGV4cGVyaW1lbnRhbCBvcHRpbWl6YXRpb25zIHRvIHRoZSBjYWNoZSBtYW5hZ2VyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oIChGVENfQ0FDSEVfVVNFX0lOTElORSwKCUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkcpOiBOZXcgb3B0aW9ucy4KCShGVENfQ2FjaGVSZWMpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogTmV3IGVsZW1lbnRzIGBwJywKCWBtYXNrJywgYW5kIGBzbGFjaycuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoRlRDX0hBU0hfTUFYX0xPQUQsIEZUQ19IQVNIX01JTl9MT0FELAoJRlRDX0hBU0hfU1VCX0xPQUQpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HLAoJRlRDX0hBU0hfSU5JVElBTF9TSVpFXTogTmV3IG1hY3Jvcy4KCShmdGNfbm9kZV9tcnVfbGluaywgZnRjX25vZGVfbXJ1X3VwKTogT3B0aW1pemVkLgoJKGZ0Y19ub2RlX2hhc2hfdW5saW5rLCBmdGNfbm9kZV9oYXNoX2xpbmspCglbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IE5ldyB2YXJpYW50cy4KCShGVENfUFJJTUVTX01JTiwgRlRDX1BSSU1FU19NQVgsIGZ0Y19wcmltZXMsIGZ0Y19wcmltZV9jbG9zZXN0LAoJRlRDX0NBQ0hFX1JFU0laRV9URVNULCBmdGNfY2FjaGVfcmVzaXplKQoJWyFGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogRGVmaW5lIGl0IGNvbmRpdGlvbmFsbHkuCgkoZnRjX2NhY2hlX2luaXQsIGZ0Y19jYWNoZV9jbGVhcikgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOgoJVXBkYXRlZC4KCShmdGNfY2FjaGVfbG9va3VwKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IEltcGxlbWVudCBpdC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pOiBOZXcgZmlsZS4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChHRU5fQ0FDSEVfRkFNSUxZX0NPTVBBUkUsCglHRU5fQ0FDSEVfTk9ERV9DT01QQVJFLCBHRU5fQ0FDSEVfTE9PS1VQKSBbRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOgoJTmV3IG1hY3Jvcy4KCShmdGNfc2JpdF9jYWNoZV9sb29rdXApIFshRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOiBUeXBlZGVmIHRvCglmdGNfY2FjaGVfbG9va3VwLgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogUmVtb3ZpbmcgZHVwbGljYXRlIGZ1bmN0aW9uLgoKMjAwMi0wNi0wNyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IENoYW5nZWQgZGVmaW5pdGlvbgoJZnJvbSBGVF9FWFBPUlRfREVGIHRvIEZUX0JBU0VfREVGLgoKMjAwMi0wNi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIHRoZSBidWcgdGhhdCBwcmV2ZW50ZWQgdGhlIGNvcnJlY3QgZGlzcGxheSBvZiBmb250cyB3aXRoCgkiZnR2aWV3Ii4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogU3BsaXQgaW50by4uLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmgsIHNyYy90eXBlNDIvdDQycGFyc2UuYywKCXNyYy90eXBlNDIvdDQycGFyc2UuaCwgc3JjL3R5cGU0Mi90NDJvYmpzLmgsIHNyYy90eXBlNDIvdDQyb2Jqcy5jLAoJc3JjL3R5cGU0Mi90eXBlNDIuYzogTmV3IGZpbGVzLgoKCSh0NDJfZ2V0X2dseXBoX25hbWUsIHQ0Ml9nZXRfcHNfbmFtZSwgdDQyX2dldF9uYW1lX2luZGV4KTogVXNlCglgZmFjZS0+dHlwZTEnLgoKCShHZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9HZXRfSW50ZXJmYWNlKTogVGhpcy4KCVVwZGF0ZWQuCgkoVDQyX09wZW5fRmFjZSwgVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoVDQyX0ZhY2VfSW5pdCk6IEFkZCBuZXcgY21hcCBzdXBwb3J0LgoJVXBkYXRlZC4KCShUNDJfRHJpdmVyX0luaXQsIFQ0Ml9Ecml2ZXJfRG9uZSwgVDQyX1NpemVfSW5pdCwgVDQyX1NpemVfRG9uZSwKCVQ0Ml9HbHlwaFNsb3RfSW5pdCwgVDQyX0dseXBoU2xvdF9Eb25lKTogVXBkYXRlZC4KCShHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbmFtZWQgdG8uLi4KCShUNDJfQ01hcF9DaGFySW5kZXgsIFQ0Ml9DTWFwX0NoYXJOZXh0KTogVGhpcy4KCVVwZGF0ZWQuCgkoVDQyX0NoYXJfU2l6ZSwgVDQyX1BpeGVsX1NpemUpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFRoaXMuCgkoVDQyX0xvYWRfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogVGhpcy4KCgkodDQyX2luaXRfbG9hZGVyLCB0NDJfZG9uZV9sb2FkZXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2xvYWRlcl9pbml0LCB0NDJfbG9hZGVyX2RvbmUpOiBUaGlzLgoJKFQ0Ml9OZXdfUGFyc2VyLCBUNDJfRmluYWxpemVfUGFyc2VyKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZXJfaW5pdCwgdDQyX3BhcnNlcl9kb25lKTogVGhpcy4KCShwYXJzZV9kaWN0KTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZV9kaWN0KTogVGhpcy4KCShpc19hbHBoYSwgaXNfc3BhY2UsIGhleHZhbCk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfaXNfYWxwaGEsIHQ0Ml9pc19zcGFjZSwgdDQyX2hleHZhbCk6IFRoaXMuCgkocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9mb250X2Jib3gsIHBhcnNlX2ZvbnRfbWF0cml4LAoJcGFyc2VfZW5jb2RpbmcsIHBhcnNlX3NmbnRzLCBwYXJzZV9jaGFyc3RyaW5ncywgcGFyc2VfZGljdCk6CglSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlX2ZvbnRfbmFtZSwgdDQyX3BhcnNlX2ZvbnRfYmJveCwgdDQyX3BhcnNlX2ZvbnRfbWF0cml4LAoJdDQyX3BhcnNlX2VuY29kaW5nLCB0NDJfcGFyc2Vfc2ZudHMsIHQ0Ml9wYXJzZV9jaGFyc3RyaW5ncywKCXQ0Ml9wYXJzZV9kaWN0KTogVGhpcy4KCVVwZGF0ZWQuCgoJKHQ0Ml9rZXl3b3Jkcyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL0phbWZpbGUsIHNyYy90eXBlNDIvZGVzY3JpcC5tbXM6IFVwZGF0ZWQuCgoyMDAyLTA2LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkIDhicHAgc3VwcG9ydCB0byBCREYgZHJpdmVyLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9zdGFydCk6IEhhbmRsZSA4YnBwLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKTogRGl0dG8uCgkqIHNyYy9iZGYvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMi0wNi0wMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfcGh5X2ZvbnRfZG9uZSk6IEZyZWUgYGJsdWVfdmFsdWVzJyBhcnJheS4KCjIwMDItMDUtMjkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3JlYWRzdHJlYW0pOiBBbGxvY2F0ZSBgYnVmJyBkeW5hbWljYWxseS4KCShfYmRmX3BhcnNlX2dseXBocyk6IFVzZSBjb3JyZWN0IHNpemUgZm9yIGFsbG9jYXRpbmcKCWBmb250LT51bmVuY29kZWQnLgoJKGJkZl9sb2FkX2ZvbnQpOiBGcmVlIGFycmF5IGNvbmRpdGlvbmFsbHkuCglSZXR1cm4gcHJvcGVyIGVycm9yIGNvZGUgaW4gY2FzZSBvZiBmYWlsdXJlLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBNYWtlIGl0IG1vcmUgcm9idXN0IGFnYWluc3QKCXVudXN1YWwgZm9udHMuCgoyMDAyLTA1LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2Rlc2NyaXAubW1zLCBzcmMvdHlwZTQyL2Rlc2NyaXAubW1zOiBOZXcgZmlsZXMuCgkqIGRlc2NyaXAubW1zIChhbGwpOiBVcGRhdGVkLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9nbHlwaHMpOiBGaXggdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvbXBpbGF0aW9uLgoJKiBzcmMvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDUtMjggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGUsCglhbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUKCXN1cHBvcnQgZm9yIEJERiBhbmQgVHlwZTQyIGRyaXZlcnMuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBVcGRhdGVkLgoKMjAwNS0wNS0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmaWxlIGZvciBuZXh0IHJlbGVhc2UgKDIuMS4xKS4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaCwgc3JjL2Jhc2UvZnR4Zjg2LmM6IE5ldyBmaWxlcy4KCVRoZXkgcHJvdmlkZSBhIG5ldyBBUEkgKEZUX0dldF9YMTFfRm9udF9Gb3JtYXQpIHRvIHJldHJpZXZlIGFuCglYMTEtY29tcGF0aWJsZSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZm9udCBmb3JtYXQgb2YgYSBnaXZlbiBmYWNlLgoJVGhpcyB3YXMgcHV0IGluIGEgbmV3IG9wdGlvbmFsIGJhc2Ugc291cmNlIGZpbGUsIGNvcnJlc3BvbmRpbmcgdG8gYQoJbmV3IHB1YmxpYyBoZWFkZXIgKG5hbWVkIEZUX1hGUkVFODZfSCBzaW5jZSB0aGlzIGZ1bmN0aW9uIHNob3VsZAoJb25seSBiZSB1c2VkIHdpdGhpbiB0aGUgWEZyZWU4NiBmb250IHNlcnZlciBJTU8pLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfWEZSRUU4Nl9IKTogTmV3IG1hY3JvIChub3QKCWRvY3VtZW50ZWQgeWV0KS4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogTmV3IGZpbGUsIHByb3ZvZGluZyB0d28gbmV3IEFQSSBmdW5jdGlvbnMKCShGVF9HZXRfUFNfRm9udF9JbmZvIGFuZCBGVF9IYXNfUFNfR2x5cGhfTmFtZXMpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5taywgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6CglVcGRhdGluZyBidWlsZCBjb250cm9sIGZpbGVzIGZvciB0aGUgbmV3IGZpbGVzICJmdHhmODYuYyIgYW5kCgkiZnR0eXBlMS5jIiBpbiBzcmMvYmFzZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcyk6IEZpeGVkIGEgYnVnIHRoYXQKCXByZXZlbnRlZCBmYW1pbHkgYmx1ZSB6b25lcyBzdWJzdGl0dXRpb24gZnJvbSBoYXBlbm5pbmcgY29ycmVjdGx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oIEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IEFkZGluZwoJZG9jdW1lbnRhdGlvbiBjb21tZW50LgoKMjAwMi0wNS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogRG9uJ3QgdXNlIEZUX1NUUkVBTV9SRUFEX0FUCglidXQgRlRfU1RSRUFNX1JFQUQuCglEZWNsYXJlIGBzdHJlYW0nIHZhcmlhYmxlLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9nbHlwaHMpOiBSZXBsYWNlIGZsb2F0aW5nIHBvaW50IG1hdGgKCXdpdGggY2FsbHMgdG8gYEZUX011bERpdicuCgoyMDAyLTA1LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIHRoZSBTRk5UIG5hbWUgdGFibGUgbG9hZGVyIHRvIHN1cHBvcnQgdmFyaW91cyBidWdneSBmb250cy4KCUl0IG5vdyBpZ25vcmVzIGVtcHR5IG5hbWUgZW50cmllcywgZW50cmllcyB3aXRoIGludmFsaWQgcG9pbnRlcgoJT2Zmc2V0cyBhbmQgY2VydGFpbiBmb250cyBjb250YWluaW5nIHRhYmxlcyB3aXRoIGJyb2tlbgoJInN0b3JhZ2VPZmZzZXQiIGZpZWxkcy4KCglOYW1lIHN0cmluZ3MgYXJlIG5vdyBsb2FkZWQgb24gZGVtYW5kLCB3aGljaCByZWR1Y2VzIHRoZSBtZW1vcnkKCXJlcXVpcmVtZW50cyBmb3IgYSBnaXZlbiBGVF9GYWNlIHRyZW1lbmRvdXNseSAoZm9yIGV4YW1wbGUsIHRoZSBuYW1lCgl0YWJsZSBvZiBBcmlhbC50dGYgaXMgYWJvdXQgMTBLYiBhbmQgY29udGFpbnMgNzAgbmFtZXMpLgoKCVRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4LiAgVGhlIHdob2xlIG5hbWUgdGFibGUgbG9hZGVyIGFuZCBpbnRlcmZhY2UKCXdpbGwgYmUgcmV3cml0dGVuIGluIGEgbXVjaCBtb3JlIGNsZWFubHkgd2F5IHNob3J0bHksIG9uY2UgQ1NFSCBoYXZlCgliZWVuIGludHJvZHVjZWQgaW4gdGhlIHNvdXJjZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfTmFtZUVudHJ5UmVjKTogQ2hhbmdlCgl0eXBlIG9mIGBzdHJpbmdPZmZzZXQnIHRvIEZUX1VMb25nLgoJKFRUX05hbWVUYWJsZVJlYyk6IENoYW5nZSB0eXBlIG9mIGBudW1OYW1lUmVjb3JkcycgYW5kCglgc3RvcmFnZU9mZnNldCcgdG8gRlRfVUludC4KCVJlcGxhY2UgYHN0b3JhZ2UnIHdpdGggYHN0cmVhbScuCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IExvYWQgbmFtZSBvbiBkZW1hbmQuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IERpdHRvLgoJTWFrZSBjb2RlIG1vcmUgcm9idXN0LgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoVFRfTmFtZUVudHJ5X0NvbnZlcnRGdW5jKTogTmV3IHR5cGVkZWYuCgkodHRfZmFjZV9nZXRfbmFtZSk6IFVzZSBpdC4KCU1ha2UgY29kZSBtb3JlIHJvYnVzdC4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBVc2UgYHN0YXRpYycgZm9yIGFycmF5cy4KCUhhbmRsZSBpbnZhbGlkIGBzdG9yYWdlT2Zmc2V0JyBkYXRhIGJldHRlci4KCVNldCBsZW5ndGggZmllbGRzIHRvIHplcm8gZm9yIGludmFsaWQgb3IgaWdub3JlZCBkYXRhLgoJUmVtb3ZlIGNvZGUgd2l0aGluIEZUX0RFQlVHX0xFVkVMX1RSQUNFLgoJKFRUX0ZyZWVfTmFtZXMpOiBVcGRhdGVkLgoKMjAwMi0wNS0yNCAgVGltIE1vb25leSAgPGVuY2hhbnRlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBidWlsZHMvdW5peC9mdC1tdW5tYXAubTQ6IE5ldyBmaWxlLCBleHRyYWN0ZWQgRlRfTVVOTUFQX0RFQ0wgYW5kCglGVF9NVU5NQVBfUEFSQU0gZnJvbSBhY2xvY2FsLm00IGludG8gaGVyZSwgc28gYWNsb2NhbC5tNCBjYW4gYmUKCXJlYnVpbHQgZnJvbSBzb3VyY2VzLiAgU2V0IG1hY3JvIHNlcmlhbCB0byAxLCBhbmQgdXNlIHRoaXJkIGFyZ3VtZW50Cgl0byBBQ19ERUZJTkUgZm9yIG91ciB0d28gY3VzdG9tIHN5bWJvbHMsIHNvIGZ0Y29uZmlnLmluIGNvdWxkIG9uZSBkYXkKCWJlIHJlYnVpbHQgd2l0aCBhdXRvaGVhZGVyIChub3QgcmVjb21tZW5kZWQgbm93LCBmdGNvbmZpZy5pbiBpcyBhCgljdXN0b20gc291cmNlIGZpbGUpCgoyMDAyLTA1LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9CRVpJRVJfSCk6IFJlbW92ZWQuCgkoRlRfQkRGX0gpOiBOZXcgbWFjcm8gZm9yIGFjY2Vzc2luZyBgZnRiZGYuaCcuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKGhleHZhbCk6IEZpeCB0eXBvLgoKMjAwMi0wNS0yMSAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFSYWRpeCk6IE5ldyBmdW5jdGlvbi4KCSh0MV90b2ludCk6IFVzZSBpdCB0byBoYW5kbGUgbnVtYmVycyBpbiByYWRpeCBmb3JtYXQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEFkZCBkdW1teQoJZm9yIHVuZG9jdW1lbnRlZCwgb2Jzb2xldGUgb3Bjb2RlIDE1LgoKMjAwMi0wNS0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5nLCBhbmQgY2hhbmdlZCBhbGwgdGFibGVzCgl0byB0aGUgInN0YXRpYyBjb25zdCIgc3RvcmFnZSBzcGVjaWZpZXIgKGluc3RlYWQgb2Ygc2ltcGx5Cglgc3RhdGljJykuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKGhleHZhbCk6IFVzZSBtb3JlIGVmZmljaWVudCBjb2RlLgoJUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0YmRmLmgsIHNyYy9iYXNlL2Z0YmRmLmMsCglzcmMvYmFzZS9kZXNjcmlwLm1tcywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWsKCShGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBOZXcgQVBJIHRvIHJldHJpZXZlIEJERi1zcGVjaWZpYyBzdHJpbmdzCglmcm9tIGEgZmFjZS4gIFRoaXMgaXMgbXVjaCBjbGVhbmVyIHRoYW4gYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCB0eXBlcwoJIkJERl9QdWJsaWNfRmFjZSIgZGVmaW5lZCBpbiBGVF9JTlRFUk5BTF9CREZfVFlQRVNfSC4KCjIwMDItMDUtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvUkVBRE1FOiBNZW50aW9uIE1pY3Jvc29mdCdzIFNCSVQgdG9vbC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NpZC9jaWRyaXZlci5jLCBzcmMvcGNmL3BjZmRyaXZlci5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90eXBlMS90MWRyaXZlci5jLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jLCBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMsIHNyYy9iZGYvYmRmZHJpdnIuYwoJW0ZUX0NPTkZJR19PUFRJT05fRFlOQU1JQ19EUklWRVJTXTogQ29tcGxldGVseSByZW1vdmVkLiAgSXQgaGFzCgliZWVuIG5ldmVyIHVzZWQuCgoyMDAyLTA1LTIxICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IHMvVDQyX0VOQ09ESU5HX1RZUEVfL1QxX0VOQ09ESU5HX1RZUEVfLy4KCShwYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlLgoJKHBhcnNlX3NmbnRzKTogSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcy4KCSh0NDJfZHJpdmVyX2NsYXNzKSBbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IFVzZQoJZnRfbW9kdWxlX2RyaXZlcl9oYXNfaGludGVyIGNvbmRpdGlvbmFsbHkuCglNb3ZlZCBzb21lIHR5cGUgNDIgc3BlY2lmaWMgc3RydWN0dXJlIGRlZmluaXRpb25zIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfVDQyX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKMjAwMi0wNS0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNzYml0cy5oIChGVENfU0JpdCk6IEFkZGVkIGEgbmV3IGZpZWxkCglgbnVtX2dyYXlzJyBmb3Igc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHVzZWQgZ3JheSBsZXZlbHMuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBJbml0aWFsaXplIGl0LgoKMjAwMi0wNS0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZGluZyBhIGRyaXZlciBmb3IgQkRGIGZvbnRzIHdyaXR0ZW4gYnkgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCgk8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4uICBIZWF2aWx5IG1vZGlmaWVkIGJ5IG1lIHRvCgliZXR0ZXIgYWRhcHQgaXQgdG8gRnJlZVR5cGUsIHJlbW92aW5nIHVubmVlZGVkIHN0dWZmLiAgQWRkaXRpb25hbGx5LAoJaXQgbm93IHN1cHBvcnRzIE1hcmsgTGVpc2hlcidzIEJERiBleHRlbnNpb24gZm9yIGFudGktYWxpYXNlZAoJYml0bWFwIGdseXBocyB3aXRoIDIgYW5kIDQgYnBwLgoKCSogc3JjL2JkZi8qOiBOZXcgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2JkZnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgQkRGIGRyaXZlciBjb21wb25lbnRzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmg6IEFkZGVkIGVycm9yIGNvZGVzIGZvciBCREYgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvSmFtZmlsZTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9CREZfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zcHJpbnRmKTogTmV3IGFsaWFzIGZvcgoJc3ByaW50Zi4KCjIwMDItMDUtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGRlZCBUeXBlIDQyIGRyaXZlcgoJY29tcG9uZW50LgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IFVzZSBpdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUENGX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKMjAwMi0wNS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGU0Mi9KYW1maWxlOiBOZXcgZmlsZS4KCjIwMDItMDUtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGRpbmcgYSBkcml2ZXIgZm9yIFR5cGU0MiBmb250cyB3cml0dGVuIGJ5IFJvYmVydG8gQWxhbWVkYQoJPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvKjogTmV3IGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL0phbWZpbGU6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3hkaWdpdCwgZnRfbWVtY21wLAoJZnRfYXRvaSk6IE5ldyBhbGlhc2VzIGZvciB4ZGlnaXQsIG1lbWNtcCwgYW5kIGF0b2ksIHJlc3BlY3RpdmVseS4KCjIwMDItMDUtMTIgIE93ZW4gVGF5bG9yICA8b3RheWxvckByZWRoYXQuY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvb2tVcF9UYWJsZSk6IFByb3RlY3QgYWdhaW5zdCB0YWJsZXMKCXdpdGggYSB6ZXJvIGxlbmd0aCB2YWx1ZS4KCjIwMDItMDUtMTIgIE1pY2hhZWwgUGZlaWZmZXIgIDxtaWNoYWVsLnBmZWlmZmVyQHV0YW5ldC5hdD4KCgkqIGJ1aWxkcy9iZW9zL2Jlb3MubWs6IEluY2x1ZGUgYGxpbmstc3RkLm1rJy4KCjIwMDItMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuaCAoVDFfTG9hZGVyKTogUmVuYW1lZCB0by4uLgoJKFQxX0xvYWRlclJlYyk6IFRoaXMuCgkoVDFfTG9hZGVyKTogTm93IHBvaW50ZXIgdG8gVDFfTG9hZGVyUmVjLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCwgc3JjL3R5cGUxL3QxbG9hZC5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jOgoJcy9UMV9FTkNPRElOR19UWVBFX0VYUE9SVC9UMV9FTkNPRElOR19UWVBFX0VYUEVSVC8uCgoyMDAyLTA1LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUU6IEFkZCBhIG5vdGUgcmVnYXJkaW5nIGxpYnR0ZiB2cy4gbGliZnJlZXR5cGUuCgoyMDAyLTA1LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRnJlZVR5cGUgMiBjYW4gbm93IGJlIGJ1aWx0IGluIGFuIGV4dGVybmFsIGRpcmVjdG9yeSB3aXRoIHRoZQoJY29uZmlndXJlIHNjcmlwdCBhbHNvLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChJTkNMVURFUyk6IEFkZCBgT0JKX0RJUicuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWsgKGhhdmVfbWspOiBOZXcgdmFyaWFibGUgdG8gdGVzdCBmb3IKCWV4dGVybmFsIGJ1aWxkLgoJKHVuaXgtZGVmLm1rKTogRGVmaW5lZCBhY2NvcmRpbmcgdG8gdmFsdWUgb2YgYGhhdmVfbWsnLgoJKiBidWlsZHMvdW5peC91bml4Lm1rIChoYXZlX21rKTogTmV3IHZhcmlhYmxlIHRvIHRlc3QgZm9yCglleHRlcm5hbCBidWlsZC4KCVNlbGVjdCBpbmNsdWRlIHBhdGhzIGZvciB1bml4LWRlZi5tayBhbmQgdW5peC1jYy5tayBhY2NvcmRpbmcKCXRvIHZhbHVlIG9mIGBoYXZlX21rJy4KCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKE9CSl9CVUlMRCk6IE5ldyB2YXJpYWJsZS4KCShESVNUQ0xFQU4pOiBVc2UgaXQuCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKExJQlRPT0wpOiBEZWZpbmUgZGVmYXVsdCB2YWx1ZSBvbmx5CglpZiBub3QgeWV0IGRlZmluZWQuCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwpOiBVc2UgYE9CSl9CVUlMRCcgZm9yIGluc3RhbGxpbmcKCWZyZWV0eXBlLWNvbmZpZy4KCgkqIGNvbmZpZ3VyZTogRG9uJ3QgZGVwZW5kIG9uIGJhc2ggZmVhdHVyZXMuCgkoZnQyX2RpciwgYWJzX2N1cnJfZGlyLCBhYnNfZnQyX2Rpcik6IE5ldyB2YXJpYWJsZXMgKGNvZGUKCXBhcnRpYWxseSB0YWtlbiBmcm9tIEF1dG9jb25mKS4KCUJ1aWxkIGEgZHVtbXkgTWFrZWZpbGUgaWYgbm90IGJ1aWxkaW5nIGluIHNvdXJjZSB0cmVlLgoKCSogZG9jcy9JTlNUQUxMOiBEb2N1bWVudCBpdC4KCjIwMDItMDUtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpOiBGaW5hbGx5IGZpeGluZyB0aGUgbGFzdAoJYnVnIHRoYXQgcHJldmVudGVkIEZyZWVUeXBlIDIueCBhbmQgRnJlZVR5cGUgMS54IHRvIHByb2R1Y2UKCWJpdC1ieS1iaXQgaWRlbnRpY2FsIG1vbm9jaHJvbWUgZ2x5cGggYml0bWFwcyB3aXRoIG5hdGl2ZSBUcnVlVHlwZQoJaGludGluZy4gIFRoZSBjdWxwcml0IHdhcyBhIHNpbmdsZS1iaXQgZmxhZyB0aGF0IHdhc24ndCBzZXQKCWNvcnJlY3RseSBieSB0aGUgVHJ1ZVR5cGUgZ2x5cGggbG9hZGVyLgoKCSogc3JjL290bGF5b3V0L290bGF5b3V0LmgsIHNyYy9vdGxheW91dC9vdGxiYXNlLmMsCglzcmMvb3RsYXlvdXQvb3RsYmFzZS5oLCBzcmMvb3RsYXlvdXQvb3RsY29uZi5oLAoJc3JjL290bGF5b3V0L290bGdkZWYuYywgc3JjL290bGF5b3V0L290bGdkZWYuaCwKCXNyYy9vdGxheW91dC9vdGxncG9zLmMsIHNyYy9vdGxheW91dC9vdGxncG9zLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLAoJc3JjL290bGF5b3V0L290bGpzdGYuYywgc3JjL290bGF5b3V0L290bGpzdGYuaCwKCXNyYy9vdGxheW91dC9vdGx0YWJsZS5jLCBzcmMvb3RsYXlvdXQvb3RsdGFibGUuaCwKCXNyYy9vdGxheW91dC9vdGx0YWdzLmg6IE5ldyBPcGVuVHlwZSBMYXlvdXQgc291cmNlIGZpbGVzLiAgVGhlCgltb2R1bGUgaXMgc3RpbGwgaW5jb21wbGV0ZS4KCjIwMDItMDUtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9pbmRleCk6IEZpeCBzZXJpb3VzIHR5cG8KCSgweEZGRlUgLT4gMHhGRkZGVSkuCgoyMDAyLTA1LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0lOU1RBTEw6IEZpeCBVUkwgb2YgbWFrZXBwLgoKMjAwMi0wNS0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBGaXhpbmcgYSBidWcgdGhhdCBjYXVzZWQKCUZyZWVUeXBlIHRvIGNyYXNoIHdoZW4gY2VydGFpbiBicm9rZW4gZm9udHMgKGUuZy4gImh5YTZnYi50dGYiKQoJd2VyZSBvcGVuZWQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IEFwcGxpZWQgYSBzbWFsbCB3b3JrLWFyb3VuZCB0bwoJbWFuYWdlIGZvbnRzIGNvbnRhaW5pbmcgYSBicm9rZW4gbmFtZSB0YWJsZSAoZS5nLiAiaHlhNmdiLnR0ZiIpLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IEZpeGVkIG92ZXItcmVzdHJpY3RpdmUKCXZhbGlkYXRpb24gdGVzdC4gIFRoZSBjaGFybWFwIHZhbGlkYXRvciBub3cgYWNjZXB0cyBvdmVybGFwcGluZwoJcmFuZ2VzIGluIGZvcm1hdCA0IGNoYXJtYXBzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX2luZGV4KTogU3dpdGNoZWQgdG8gYSBiaW5hcnkKCXNlYXJjaCBhbGdvcml0aG0uICBDZXJ0YWluIGZvbnRzIGNvbnRhaW4gbW9yZSB0aGFuIDE3MCBkaXN0aW5jdAoJc2VnbWVudHMhCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oOiBBZGRpbmcgYW4gYWxpYXMgZm9yIHRoZSBgZXhpdCcKCWZ1bmN0aW9uLiAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gdGhlIG5lYXIgZnV0dXJlIHRvIHBhbmljIGluIGNhc2Ugb2YKCXVuZXhwZWN0ZWQgZXhjZXB0aW9uICh3aGljaCBzaG91bGRuJ3QgaGFwcGVuIGluIHRoZW9yeSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oLCBzcmMvYmFzZS9mdGhhc2guYzogTmV3IGZpbGVzLgoJVGhpcyBpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGR5bmFtaWMgaGFzaCB0YWJsZXMgdXNpbmcgYSBsaW5lYXIKCWFsZ29yaXRobSAodG8gZ2V0IHJpZCBvZiBgc3RhbGxzJyBkdXJpbmcgcmVzaXplcykuICBJbiB0aGUgZnV0dXJlCgl0aGlzIHdpbGwgYmUgdXNlZCBpbiBhdCBsZWFzdCB0aHJlZSBwYXJ0cyBvZiB0aGUgbGlicmFyeTogdGhlIGNhY2hlCglzdWItc3lzdGVtLCB0aGUgb2JqZWN0IHN1Yi1zeXN0ZW0sIGFuZCB0aGUgbWVtb3J5IGRlYnVnZ2VyLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfSEFTSF9ILAoJRlRfSU5URVJOQUxfT0JKRUNUX0gpOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNvcmUuaDogTmV3IGZpbGUgdG8gZ3JvdXAgYWxsIG5ldwoJZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBleGNlcHRpb24gaGFuZGxpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiAgSXQKCWlzIHZlcnkgbGlrZWx5IHRoYXQgdGhpcyBmaWxlIHdpbGwgZGlzYXBwZWFyIG9yIGJlIHJlbmFtZWQgaW4gdGhlCglmdXR1cmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0LmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaDoKCUFkZGluZyBjb21tZW50cyB0byBiZXR0ZXIgZXhwbGFpbiB0aGUgb2JqZWN0IHN1Yi1zeXN0ZW0gYXMgd2VsbCBhcwoJdGhlIG5ldyBtZW1vcnkgbWFuYWdlciBpbnRlcmZhY2UuCgoyMDAyLTA0LTMwICBXZW5saW4gSW5zdGl0dXRlIChUb20gQmlzaG9wKSAgPHdlbmxpbkB3ZW5saW4uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocDJjX3N0cik6IFJlbW92ZWQuCgkoZmlsZV9zcGVjX2Zyb21fcGF0aCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IEFkZGVkIHN1cHBvcnQgZm9yCglPUyBYLgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogRGVmaW5lIG9ubHkgZm9yIE9TIFguCglIYW5kbGUgYG5hbWVMZW4nIDw9IDYgYWxzby4KCShwYXJzZV9mb25kKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmFtZV90YWJsZScuCglVc2UgZnVuY3Rpb25hbGl0eSBvZiBvbGQgcDJjX3N0ciBkaXJlY3RseS4KCUFkZCBzYWZldHkgY2hlY2tzLgoJKHJlYWRfbHdmbik6IEluaXRpYWxpemUgYHNpemVfcCcuCglDaGVjayBmb3Igc2l6ZV9wID09IE5VTEwuCgkobmV3X21lbW9yeV9zdHJlYW0sIG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IFVwZGF0ZWQgdG8gRnJlZVR5cGUgMi4xLgoJKEZUX05ld19GYWNlX0Zyb21fTFdGTik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1lbW9yeScuCglSZW1vdmUgc29tZSBkZWFkIGNvZGUuCgkoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3RyZWFtJy4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogRGVmaW5lIG9ubHkgZm9yCglPUyBYLgoJKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGVycm9yJy4KCShSZXNvdXJjZUZvcmtTaXplKTogTmV3IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXNlIGl0LgoJSGFuZGxlIGVtcHR5IHJlc291cmNlIGZvcmtzLgoJQ29uZGl0aW9uYWxpemUgc29tZSBjb2RlIGZvciBPUyBYLgoJQWRkIGNvZGUgdG8gY2FsbCBub3JtYWwgbG9hZGVyIGFzIGEgZmFsbGJhY2suCgoyMDAyLTA0LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJYGludGVyZmFjZScgaXMgcmVzZXJ2ZWQgb24gdGhlIE1hYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwKCXNyYy9iYXNlL2Z0b3V0bG4uYzogcy9pbnRlcmZhY2UvZnVuY19pbnRlcmZhY2UvLgoJKiBzcmMvYmFzZS9mdGJib3guYyAoRlRfT3V0bGluZV9HZXRfQkJveCk6CglzL2ludGVyZmFjZS9iYm94X2ludGVyZmFjZS8uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogcy9pbnRlcmZhY2UvbW9kdWxlX2ludGVyZmFjZS8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmxvYWQuaDoKCXMvaW50ZXJmYWNlL3BzbmFtZXNfaW50ZXJmYWNlLy4KCSogc3JjL2NpZC9jaWRyaXZlci5jOiBzL2ludGVyZmFjZS9jaWRfaW50ZXJmYWNlLy4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogcy9pbnRlcmZhY2UvbW9kdWxlX2ludGVyZmFjZS8uCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBzL2ludGVyZmFjZS9mdW5jX2ludGVyZmFjZS8uCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jOiBzL2ludGVyZmFjZS90dF9pbnRlcmZhY2UvLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYzogcy9pbnRlcmZhY2UvdDFfaW50ZXJmYWNlLy4KCglTb21lIG1vcmUgdmFyaWFibGUgcmVuYW1lcyB0byBhdm9pZCB0cm91YmxlcyBvbiB0aGUgTWFjLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOgoJcy9Vbmtub3dufEFzY2VuZGluZ3xEZXNjZW5kaW5nfEZsYXQvXDFfU3RhdGUvLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogcy9UU2Nhbi9UQ29vcmQvLgoKCU90aGVyIGNoYW5nZXMgZm9yIHRoZSBNYWMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBEZWZpbmUgRlRfTUFDSU5UT1NIIGZvcgoJTWFjIHBsYXRmb3Jtcy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IHMvbWFjaW50b3NoL0ZUX01BQ0lOVE9TSC8uCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBNYWtlIGBwaXRjaCcgYWx3YXlzCglhbiBldmVuIG51bWJlci4KCjIwMDItMDQtMjkgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGRlc2NyaXAubW1zIChhbGwpOiBBZGQgcGZyIGRyaXZlci4KCjIwMDItMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZyZXJyb3IuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogQWRkIFBGUiBlcnJvciBjb2Rlcy4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9leHRyYV9pdGVtX2xvYWRfc3RlbV9zbmFwcyk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2V4dHJhX2l0ZW1fbG9hZF9iaXRtYXBfaW5mbywgcGZyX2dseXBoX2xvYWRfc2ltcGxlLAoJcGZyX2dseXBoX2xvYWRfY29tcG91bmQpOiBGaXggZGVidWcgbWVzc2FnZS4KCSogc3JjL3Bmci9wZnJvYmpzLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2ZhY2VfaW5pdCk6IFJldHVybiBQRlJfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQuCgkqIHNyYy9wZnIvcnVsZXMubWsgKFBGUl9EUlZfSCk6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9GYWNlX0luaXQpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJYHJvb3QnIC0+IGBmYWNlLT5yb290Jy4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcykgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106CglSZW1vdmVkLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IERlY2xhcmUgVFRfQnVpbGRfQ01hcHMgb25seSBmb3IKCUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTLgoKMjAwMi0wNC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19jYWNoZV9sb29rdXApLAoJc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpLAoJc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MpLAoJc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKEZUQ19TQml0X0NhY2hlX0xvb2t1cCk6IFVzZSBGVENfRXJyXyouCglzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCk6IFVzZSBGVENfRXJyXyouCgkoRlRDX0ltYWdlQ2FjaGVfTG9va3VwKTogRml4IGhhbmRsaW5nIG9mIGludmFsaWQgYXJndW1lbnRzLgoKMjAwMi0wNC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBTZXQgYHZlcnNpb25faW5mbycgdG8gOToxOjMgKEZUMgoJdmVyc2lvbiAyLjAuOSBoYXMgOTowOjMpLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkICh1c2luZyBhdXRvY29uZiAyLjUzKS4KCjIwMDItMDQtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbXNfZmFyc2UpOiBGaXggZGVidWcgbWVzc2FnZS4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IHMvc2l6ZS9TaXplLyBmb3IgbG9jYWwgdmFyaWFibGUgdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogRml4IGRlYnVnIG1lc3NhZ2UuCgkocGZyX3Nsb3RfbG9hZCk6IFJlbW92ZSByZWR1bmRhbnQgbG9jYWwgdmFyaWFibGUuCgoyMDAyLTA0LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGEgUEZSIGZvbnQgZHJpdmVyIHRvIHRoZSBGcmVlVHlwZSBzb3VyY2VzLiAgTm90ZSB0aGF0IGl0Cglkb2Vzbid0IHN1cHBvcnQgZW1iZWRkZWQgYml0bWFwcyBvciBrZXJuaW5nIHRhYmxlcyB5ZXQuCgoJc3JjL3Bmci8qOiBOZXcgZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmgsIHNyYy9KYW1lZmlsZTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmggKFQxX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCk6IEZpeGVkIGluY29ycmVjdCBwYXJhbWV0ZXIgc2lnbi1uZXNzIGluIGNhbGxiYWNrCglmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCAoRlRfTUVNX1pFUk8sIEZUX1pFUk8pOiBOZXcKCW1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfTkVYVF9PRkYzLCBGVF9ORVhUX1VPRkYzLAoJRlRfTkVYVF9PRkYzX0xFLCBGVF9ORVhUX1VPRkYzX0xFKTogTmV3IG1hY3JvcyB0byBwYXJzZSBpbi1tZW1vcnkKCTI0LWJpdCBpbnRlZ2Vycy4KCjIwMDItMDQtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jLAoJYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYzogVmVyc2lvbiAyLjEuMCBjb3VsZG4ndCBiZSBsaW5rZWQKCWFnYWluc3QgYXBwbGljYXRpb25zIGluIFdpbjMyIGFuZCBBbWlnYSBidWlsZHMgZHVlIHRvIGNoYW5nZXMgdG8KCSJzcmMvYmFzZS9mdGRlYnVnLmMiIHRoYXQgd2VyZSBub3QgcHJvcGVybHkgcHJvcGFnYXRlZCB0bwoJImJ1aWxkcy93aW4zMiIgYW5kICJidWlsZHMvYW1pZ2EiLiAgVGhpcyBoYXMgYmVlbiBmaXhlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleGNlcHQuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN5c2lvLmgsIHNyYy9iYXNlL2Z0c3lzbWVtLmMsIHNyYy9iYXNlL2Z0c3lzaW8uYzoKCU5ldyBleHBlcmltZW50YWwgZmlsZXMuCgoyMDAyLTA0LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA0LTE3ICBNaWNoYWVsIEphbnNzb24gIDxtamFuQGVtMi1zb2x1dGlvbnMuY29tPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IEZpeGVkIGEgc21hbGwgYnVnCgl0aGF0IHByZXZlbnRlZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlLgoKMjAwMi0wNC0xNiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmcmVhZCAocGNmX2dldF9hY2NlbGwpOiBGaXggcGFyc2luZyBvZiBhY2NlbGVyYXRvcgoJdGFibGVzLgoKMjAwMi0wNC0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9GVEwudHh0OiBGb3JtYXR0aW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogUmVkdWNlIHRoZSBzaXplIG9mIHRoZQoJcmVuZGVyIHBvb2wgZnJvbSAzMmtCeXRlIHRvIDE2a0J5dGUuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFJlbW92ZSBjb21waWxlcgoJd2FybmluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX01BWF9FWFRFTlNJT05TKTogUmVtb3ZlZC4KCgkqIGRvY3MvQ0hBTkdFUzogUHJlcGFyaW5nIDIuMS4wIHJlbGVhc2UuCgoyMDAyLTA0LTEzICBXZXJuZXIgTEVNQkVSRyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IHMvcmFuZC9SYW5kLyB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDQtMTIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRS5VTlg6IFVwZGF0ZWQgdGhlIFVuaXgtc3BlY2lmaWMgcXVpY2stY29tcGlsYXRpb24gZ3VpZGUgdG8KCXdhcm4gYWJvdXQgdGhlIEdOVSBNYWtlIHJlcXVpcmVtZW50IGF0IGNvbXBpbGUgdGltZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCgoJc3JjL2F1dG9oaW50L2Fob3B0aW0uYywKCglzcmMvYmFzZS9mdGRiZ21lbS5jLCBzcmMvYmFzZS9mdGRlYnVnLmMsIHNyYy9iYXNlL2Z0bWFjLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRzeXN0ZW0uYywKCglzcmMvY2FjaGUvZnRjaW1hZ2UuYywgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMsCgoJc3JjL2NmZi9jZmZkcml2ZXIuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLAoKCXNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvY2lkL2NpZHBhcnNlLmMsIHNyYy9jaWQvY2lkcml2ZXIuYywKCglzcmMvcGNmL3BjZmRyaXZlci5jLCBzcmMvcGNmL3BjZnJlYWQuYywKCglzcmMvcHNhdXgvdDFjbWFwLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywKCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLAoKCXNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywKCglzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC90dGxvYWQuYywKCglzcmMvc21vb3RoL2Z0Z3JheXMuYywKCglzcmMvdHlwZTEvdDFhZm0uYywgc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywgc3JjL3R5cGUxL3QxcGFyc2UuYywKCglidWlsZHMvdW5peC9mdGNvbmZpZy5pbiwgYnVpbGRzL3Ztcy9mdGNvbmZpZy5oLAoKCWJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdGRlYnVnLmM6CgoJQWRkZWQgdGhlIG5ldyBjb25maWd1cmF0aW9uIGZpbGUgImZ0c3RkbGliLmgiIHVzZWQgdG8gZGVmaW5lCglhbGlhc2VzIGZvciBhbGwgSVNPIEMgbGlicmFyeSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgZW5naW5lCgkoZS5nLiBzdHJsZW4sIHFzb3J0LCBzZXRqbXAsIGV0Yy4pLgoKCVRoaXMgZWFzZXMgdGhlIHBvcnRpbmcgb2YgRnJlZVR5cGUgMiB0byBlbnZpcm9ubWVudHMgbGlrZQoJWEZyZWU4NiBtb2R1bGVzL2V4dGVuc2lvbnMuCgoJQWxzbyByZW1vdmVkIG1hbnkgI2luY2x1ZGUgPHN0cmluZy5oPiwgI2luY2x1ZGUgPHN0ZGxpYi5oPiwgZXRjLgoJZnJvbSB0aGUgZW5naW5lJ3Mgc291cmNlcyB3aGVyZSB0aGV5IGFyZSBub3QgbmVlZGVkLgoKCSogc3JjL3NmbnQvdHRwb3N0LmM6IFVzZSBtYWNybyBuYW1lIGZvciBwc25hbWVzLmguCgoyMDAyLTA0LTEyICBWaW5jZW50IENhcm9uICA8di5jYXJvbkB6ZXJvZGV1eC5uZXQ+CgoJKiBjb25maWd1cmUsIGJ1aWxkcy9kZXRlY3QubWs6IFVwZGF0ZWQgdGhlIGJ1aWxkIHN5c3RlbSB0byBwcmludAoJYSB3YXJuaW5nIG1lc3NhZ2UgaW4gY2FzZSBHTlUgTWFrZSBpc24ndCB1c2VkIHRvIGJ1aWxkIHRoZSBsaWJyYXJ5LgoKMjAwMi0wNC0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVMsIEphbWZpbGUuaW46IFVwZGF0ZXMgZm9yIHRoZSAyLjEuMCByZWxlYXNlLgoKCSogZG9jcy9GVEwudHh0OiBVcGRhdGVkIGxpY2Vuc2UgdGV4dCB0byBwcm92aWRlIGEgcHJlZmVycmVkCglkaXNjbGFpbWVyIGFuZCBhZGp1c3QgY29weXJpZ2h0IGRhdGVzL2V4dGVudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmg6IFJlbW92aW5nIG9ic29sZXRlIChhbmQKCWNvbmZ1c2luZykgY29tbWVudC4KCgkqIEphbWZpbGUuaW46IE5ldyBmaWxlLgoKMjAwMi0wNC0xMSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9obGluZSk6IE1pbm9yIG9wdGltaXphdGlvbi4KCjIwMDItMDQtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGaXhlcyBmcm9tIHRoZSBzdGFibGUgYnJhbmNoOgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MpOgoJUmVtb3ZlZC4KCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgsIHNyYy9iYXNlL2Z0Y2FsYy5jCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfVmVjdG9yX0xlbmd0aCk6IENoYW5nZSBhbGdvcml0aG0gdG8gbWF0Y2gKCW91dHB1dCBvZiBGcmVlVHlwZSAxLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfc2NhbGVfd2lkdGhzKTogRml4ZWQgYSBzbWFsbAoJYnVnIHRoYXQgY3JlYXRlZCB1bi1ldmVuIHN0ZW0gd2lkdGhzIHdoZW4gaGludGluZyBQb3N0c2NyaXB0IGZvbnRzLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MXBhcnNlLmM6IDE2Yml0IGZpeGVzLgoKMjAwMi0wNC0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYzogMTZiaXQgZml4ZXMuCgkoVFRfTG9hZF9TaW1wbGVfR2x5cGgpOiBJbXByb3ZlIGRlYnVnIG1lc3NhZ2VzLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogMTZiaXQgZml4ZXMuCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLAoJc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3RydWV0eXBlL3R0aW50ZXJwLltjaF0sCglzcmMvc2ZudC90dHBvc3QuaDogcy9pbmRleC9pZHgvLgoKMjAwMi0wMy0zMSAgWWFvIFpoYW5nICA8eWFvekB2aWRhci5uaWFhYS5uaWguZ292PgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9TaXplX0luaXQpOiBGaXggdHlwby4KCjIwMDItMDMtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdGxheW91dC9vdGxjb21tbi5jLCBzcmMvb3RsYXlvdXQvb3RsY29tbW4uaDogcy9pbmRleC9pZHgvLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmM6IERpdHRvLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoVFRfR290b19UYWJsZV9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShUVF9Mb2FkZXJfR290b1RhYmxlRnVuYyk6IFRoaXMuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRml4IGRlYnVnCgltZXNzYWdlcy4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNuYW1lc19pbnRlcmZhY2UpCglbIUZUX0NPTkZJR19PUFRJT05fQURPQkVfR0xZUEhfTElTVF06IEZpeCB0eXBvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF90YWJsZSk6IDE2Yml0IGZpeC4KCSogc3JjL3NmbnQvdHRjbWFwLmM6IDE2Yml0IGZpeGVzICgweEZGRkYgLT4gMHhGRkZGVSkuCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogMTZiaXQgZml4ZXMuCgkoVFRfQnVpbGRfQ01hcHMpOiBTaW1wbGlmeSBkZWJ1ZyBtZXNzYWdlcy4KCSh0dF9jbWFwMTJfY2hhcl9uZXh0KTogRml4IG9mZnNldC4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMsIFRUX0xvYWRfQ01hcCk6IEZpeCBkZWJ1ZwoJbWVzc2FnZXMuCgkoVFRfTG9hZF9PUzIpOiAxNmJpdCBmaXguCgoyMDAyLTAzLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaDogQWRkaW5nIGNvbW1lbnRzIHRvIHNvbWUgb2YKCXRoZSBUVF9GYWNlUmVjIGZpZWxkcy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV97dXRmMTYsdWNzNCxvdGhlcn06CglOZXcgZnVuY3Rpb25zLgoJKHR0X2ZhY2VfZ2V0X25hbWUpOiBVc2UgdGhlbSB0byBwcm9wZXJseSBleHRyYWN0IGFuIGFzY2lpIGZvbnQgbmFtZS4KCjIwMDItMDMtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAodDFfYmxlbmRfbWF4KTogRml4IHR5cG8uCgkqIHNyYy9iYXNlL2Z0c3RyZWFtLmM6IFNpbXBsaWZ5IEZUX0VSUk9SIGNhbGxzLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Ecml2ZXJfSW5pdCwgQ0ZGX0RyaXZlcl9Eb25lKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IFJlbW92ZWQuCgkqIHNyYy9jZmYvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IERpdHRvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRHJpdmVyLCBUVF9Eb25lX0RyaXZlcikKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBEaXR0by4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCglzcmMvdHJ1ZXR5cGUvdHRvYmpzLmg6IFJlbmFtaW5nIGRyaXZlciBmdW5jdGlvbnMgdG8gdGhlCglGVF88U3ViamVjdD5fPEFjdGlvbj4gc2NoZW1lOgoKCSAgVFRfSW5pdF9Ecml2ZXIgPT4gVFRfRHJpdmVyX0luaXQKCSAgVFRfRG9uZV9Ecml2ZXIgPT4gVFRfRHJpdmVyX0RvbmUKCSAgVFRfSW5pdF9GYWNlICAgPT4gVFRfRmFjZV9Jbml0CgkgIFRUX0RvbmVfRmFjZSAgID0+IFRUX0ZhY2VfRG9uZQoJICBUVF9Jbml0X1NpemUgICA9PiBUVF9TaXplX0luaXQKCSAgVFRfRG9uZV9TaXplICAgPT4gVFRfU2l6ZV9Eb25lCgkgIFRUX1Jlc2V0X1NpemUgID0+IFRUX1NpemVfUmVzZXQKCjIwMDItMDMtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaDogUmVuYW1lIExPQ0FMX0RFRiBhbmQgTE9DQUxfRlVOQyB0bwoJRlRfTE9DQUwgYW5kIEZUX0xPQ0FMX0RFRiwgcmVzcGVjdGl2ZWx5LCBhcyB3aXRoIG90aGVyIGZ0Y29uZmlnLmgKCWZpbGVzLgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQWRkIGFyZ3VtZW50IHRvIEZUX0xPQ0FMIGFuZAoJRlRfTE9DQUxfREVGLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogcy9GVF9Bc3NlcnQvRlRfQVNTRVJULy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUZW1wb3JhcmlseSBkZWFjdGl2YXRlIGNyZWF0aW9uIG9mCgkuLi8uLi9KYW1maWxlLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAyLTAzLTI4ICBLVVNBTk8gVGFrYXl1a2kgIDxBRTVULUtTTkBhc2FoaS1uZXQub3IuanA+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXggc2VyaW91cyB0eXBvcy4KCjIwMDItMDMtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNBdXhfU2VydmljZVJlYyk6IEZpeAoJY29tcGlsZXIgd2FybmluZ3MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9GYWNlUmVjKTogVXNlIGBjb25zdCcgZm9yCglzb21lIG1lbWJlcnMuCgkqIHNyYy9iYXNlL2Z0YXBpLmMgKEZUX05ld19NZW1vcnlfU3RyZWFtKTogRml4IHR5cG9zLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmMgKHQxX2NtYXBfc3RkX2luaXQsIHQxX2NtYXBfdW5pY29kZV9pbml0KTogQWRkCgljYXN0LgoJKHQxX2NtYXBfe3N0YW5kYXJkLGV4cGVydCxjdXN0b20sdW5pY29kZX1fY2xhc3NfcmVjKTogVXNlCglgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGJy4KCSogc3JjL3BzYXV4L3QxY21hcC5oOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogVXNlIGBmdF9lbmNvZGluZ19ub25lJwoJaW5zdGVhZCBvZiB6ZXJvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IFVzZSBjYXN0cy4KCjIwMDItMDMtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmM6CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiB0aGUgRlRfQ01hcHMgc3VwcG9ydCBjb2RlLgoKMjAwMi0wMy0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKE5vcm0pOiBSZXBsYWNlZCB3aXRoLi4uCgkoVFRfVmVjTGVuKTogVGhpcy4KCShUVF9NdWxGaXgxNCwgVFRfRG90Rml4MTQpOiBOZXcgZnVuY3Rpb25zLgoJKFByb2plY3QsIER1YWxfUHJvamVjdCwgRnJlZV9Qcm9qZWN0LCBDb21wdXRlX1BvaW50X0Rpc3BsYWNlbWVudCwKCUluc19TSFBJWCwgSW5zX01JQVAsIEluc19NSVJQKTogVXNlIHRoZW0uCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkIGFsbCBjb2RlLgoKMjAwMi0wMy0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOgoJVmFyaW91cyBmaXhlcyB0byBtYWtlIHRoZSBGVF9DTWFwcyBzdXBwb3J0IHdvcmsgY29ycmVjdGx5IChtb3JlCgl0ZXN0cyBhcmUgc3RpbGwgbmVlZGVkKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9zZm50L0phbWZpbGUsCglzcmMvc2ZudC9ydWxlcy5taywgc3JjL3NmbnQvc2ZudC5jLCBzcmMvc2ZudC9zZm9ianMuYywKCXNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zZm50L3R0Y21hcDAuaDogVXBkYXRlZAoJdGhlIFNGTlQgY2hhcm1hcCBzdXBwb3J0IHRvIHVzZSBGVF9DTWFwcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaDogSW5jbHVkZSBpdC4gIEl0IGNvbnRhaW5zIGFsbCBlcnJvcgoJY29kZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0VSUk9SX0RFRklOSVRJT05TX0gpOiBOZXcKCW1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBhbmQgYSBsb3Qgb2Ygb3RoZXIgZmlsZXM6CglDaGFuZ2VkIHRoZSBuYW1lcyBvZiBtZW1vcnkgbWFjcm9zLiAgRXhhbXBsZXM6CgoJICBNRU1fU2V0ICAgPT4gRlRfTUVNX1NFVAoJICBNRU1fQ29weSAgPT4gRlRfTUVNX0NPUFkKCSAgTUVNX01vdmUgID0+IEZUX01FTV9NT1ZFCgoJICBBTExPQyAgICAgPT4gRlRfQUxMT0MKCSAgRlJFRSAgICAgID0+IEZUX0ZSRUUKCSAgUkVBTExPQyAgID0gPkZUX1JFQUxMT0MKCglGVF9ORVcgd2FzIGludHJvZHVjZWQgdG8gYWxsb2NhdGUgYSBuZXcgb2JqZWN0IGZyb20gYSBfdHlwZWRfCglwb2ludGVyLgoKCU5vdGUgdGhhdCBBTExPQ19BUlJBWSBhbmQgUkVBTExPQ19BUlJBWSBoYXZlIGJlZW4gcmVwbGFjZWQgYnkKCUZUX05FV19BUlJBWSBhbmQgRlRfUkVORVdfQVJSQVkgd2hpY2ggdGFrZSBfdHlwZWRfIHBvaW50ZXIKCWFyZ3VtZW50cy4KCglUaGlzIHJlc3VsdHMgaW4gX2xvdHNfIG9mIHNvdXJjZXMgYmVpbmcgY2hhbmdlZCwgYnV0IG1ha2VzIHRoZSBjb2RlCgltb3JlIGdlbmVyaWMgYW5kIGxlc3MgZXJyb3ItcHJvbmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgsIHNyYy9iYXNlL2Z0c3RyZWFtLmMsCglzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsIHNyYy9zZm50L3R0Y21hcC5jLAoJc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRwb3N0LmMsCglzcmMvc2ZudC90dHNiaXQuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0cGxvYWQuYywKCXNyYy93aW5mb250cy93aW5mbnQuYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbnMgb2Ygc3RyZWFtIG1hY3Jvcy4KCUV4YW1wbGVzOgoKCSAgTkVYVF9CeXRlICAgICA9PiBGVF9ORVhUX0JZVEUKCSAgTkVYVF9TaG9ydCAgICA9PiBGVF9ORVhUX1NIT1JUCgkgIE5FWFRfVVNob3J0TEUgPT4gRlRfTkVYVF9VU0hPUlRfTEUKCSAgUkVBRF9TaG9ydCAgICA9PiBGVF9SRUFEX1NIT1JUCgkgIEdFVF9Mb25nICAgICAgPT4gRlRfR0VUX0xPTkcKCSAgZXRjLgoKCUFsc28gaW50cm9kdWNlZCB0aGUgRlRfUEVFS19YWFhYIGZ1bmN0aW9ucy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfQnVpbGRfVW5pY29kZV9DaGFybWFwKTogUmVtb3ZlZCBjb21tZW50ZWQKCW91dCBmdW5jdGlvbi4KCShmaW5kX2VuY29kaW5nKTogUmVtb3ZlZC4KCShDRkZfRmFjZV9Jbml0KTogUmVtb3ZlIGNoYXJtYXAgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTLAoJVFRfQ09ORklHX0NNQVBfRk9STUFUezAsMiw0LDYsOCwxMCwxMn0pOiBOZXcgbWFjcm9zIHRvIGZpbmUtdHVuZQoJc3VwcG9ydCBvZiBjbWFwcy4KCjIwMDItMDMtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvcGNmL3BjZmRyaXZlci5jLCBzcmMvcGNmL3BjZnJlYWQuYzogVXBkYXRlZAoJdG8gbmV3IEZUX0NNYXAgZGVmaW5pdGlvbnMuCgoJKiBzcmMvcHNhdXgvdDFjbWFwLmgsIHNyYy9wc2F1eC90MWNtYXAuYywgc3JjL3R5cGUxL3QxY21hcC5oLAoJc3JjL3R5cGUxL3QxY21hcC5jOiBVcGRhdGluZyBhbmQgbW92aW5nIHRoZSBUeXBlIDEgRlRfQ01hcCBzdXBwb3J0Cglmcm9tICJzcmMvdHlwZTEiIHRvICJzcmMvcHNhdXgiIHNpbmNlIGl0IGlzIGdvaW5nIHRvIGJlIHNoYXJlZCBieQoJdGhlIFR5cGUgMSBhbmQgQ0lEIGZvbnQgZHJpdmVycy4KCgkqIHNyYy9wc2F1eC9KYW1maWxlLCBzcmMvcHNhdXgvcHNhdXguYywgc3JjL3BzYXV4L3BzYXV4bW9kLmMsCglzcmMvcHNhdXgvcnVsZXMubWssIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaDogQWRkZWQgc3VwcG9ydAoJZm9yIFR5cGUgMSBGVF9DTWFwcy4KCjIwMDItMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2xvYWRyLmMgKEZUX0dseXBoTG9hZGVyX0NoZWNrU3ViR2x5cGhzKTogRml4ZWQgYQoJbWVtb3J5IGFsbG9jYXRpb24gYnVnIHRoYXQgd2FzIGR1ZSB0byB1bi1jYXJlZnVsIHJlbmFtaW5nIG9mIHRoZQoJRlRfU3ViR2x5cGggdHlwZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9kZXN0cm95KTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdAoJY2F1c2VkIHRoZSBsaWJyYXJ5IHRvIGNyYXNoIHdpdGggRWxlY3RyaWMgRmVuY2Ugd2hlbiBtZW1vcnkKCWRlYnVnZ2luZyBpcyB1c2VkLgoKCSogUmVuYW1pbmcgc3RyZWFtIG1hY3Jvcy4gIEV4YW1wbGVzOgoKCSAgRklMRV9Ta2lwICAgID0+IEZUX1NUUkVBTV9TS0lQCgkgIEZJTEVfUmVhZCAgICA9PiBGVF9TVFJFQU1fUkVBRAoJICBBQ0NFU1NfRnJhbWUgPT4gRlRfRlJBTUVfRU5URVIKCSAgRk9SR0VUX0ZyYW1lID0+IEZUX0ZSQU1FX0VYSVQKCSAgZXRjLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgbWVtb3J5IGxlYWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBDaGFuZ2luZyB0aGUgZGVmaW5pdGlvbiBvZgoJRlRfQ01hcF9DaGFyTmV4dEZ1bmMgc2xpZ2h0bHkuCgoJKiBzcmMvY2ZmLyouYzogVXBkYXRpbmcgQ0ZGIHR5cGUgZGVmaW5pdGlvbnMuCgoyMDAyLTAzLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmgsIHNyYy9hdXRvaGludC9haG1vZHVsZS5jLAoJc3JjL2Jhc2UvZnRhcGkuYywgc3JjL2Jhc2UvZnRvYmpzLmM6IFVwZGF0aW5nIHRoZSB0eXBlIGRlZmluaXRpb25zCglmb3IgdGhlIGF1dG8taGludGVyIG1vZHVsZS4KCgkgIEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlICA9PiBGVF9BdXRvSGludGVyX1NlcnZpY2VSZWMKCSAgRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2UqID0+IEZUX0F1dG9IaW50ZXJfU2VydmljZQoJICBldGMuCgoJICBGVF9BdXRvSGludGVyX0dldF9HbG9iYWxfRnVuYyAgPT4gRlRfQXV0b0hpbnRlcl9HbG9iYWxHZXRGdW5jCgkgIEZUX0F1dG9IaW50ZXJfRG9uZV9HbG9iYWxfRnVuYyA9PiBGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jCgkgIGV0Yy4KCgkqIGFobG9hZGVyLmggW19TVEFOREFMT05FX106IFJlbW92ZWQgYWxsIGNvbmRpdGlvbmFsIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmgsIHNyYy9jZmYvKi5jOiBVcGRhdGluZyB0aGUKCXR5cGUgZGVmaW5pdGlvbnMgb2YgdGhlIENGRiBmb250IGRyaXZlci4KCgkgIENGRl9Gb250ICA9PiBDRkZfRm9udFJlYwoJICBDRkZfRm9udCogPT4gQ0ZGX0ZvbnQKCSAgZXRjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oLCBzcmMvd2luZm9udHMvKi5jOiBVcGRhdGluZwoJdHlwZSBkZWZpbml0aW9ucyBvZiB0aGUgV2luZG93cyBGTlQgZm9udCBkcml2ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdGFwaS5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZkcml2ci5oLAoJc3JjL2NpZC9jaWRyaXZlci5jLCBzcmMvY2lkL2NpZHJpdmVyLmgsIHNyYy9wY2YvcGNmZHJpdmVyLmMsCglzcmMvcGNmL3BjZmRyaXZlci5oLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywKCXNyYy90cnVldHlwZS90dGRyaXZlci5oLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmgsCglzcmMvd2luZm9udHMvd2luZm50LmMsIHNyYy93aW5mb250cy93aW5mbnQuaDogVXBkYXRpbmcgdHlwZQoJZGVmaW5pdGlvbnMgZm9yIGZvbnQgZHJpdmVycy4KCgkgIEZURHJpdmVyX2luaXRGYWNlICAgICAgPT4gRlRfRmFjZV9Jbml0RnVuYwoJICBGVERyaXZlcl9pbml0R2x5cGhTbG90ID0+IEZUX1Nsb3RfSW5pdEZ1bmMKCSAgZXRjLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2Jhc2UvZnRvYmpzLmM6IFVwZGF0ZWQgYQoJZmV3IGZhY2UgbWV0aG9kIGRlZmluaXRpb25zOgoKCSAgRlRfUFNOYW1lX1JlcXVlc3RlciAgICAgPT4gRlRfRmFjZV9HZXRQb3N0c2NyaXB0TmFtZUZ1bmMKCSAgRlRfR2x5cGhfTmFtZV9SZXF1ZXN0ZXIgPT4gRlRfRmFjZV9HZXRHbHlwaE5hbWVGdW5jCgkgIEZUX05hbWVfSW5kZXhfUmVxdWVzdGVyID0+IEZUX0ZhY2VfR2V0R2x5cGhOYW1lSW5kZXhGdW5jCgoJKiBzcmMvYmFzZS9mdGFwaS5jOiBOZXcgZmlsZS4gIEl0IGNvbnRhaW5zIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CglmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy9jaWQvY2lkbG9hZC5jLAoJc3JjL2NpZHRva2VuLmgsIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oLAoJc3JjL3BzYXV4L3QxZGVjb2RlLmMsIHN0Yy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3QxdG9rZW5zLmg6CglVcGRhdGVkIGNvbW1vbiBQb3N0U2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMuCglSZW5hbWVkIGFsbCBlbnVtZXJhdGlvbiB2YWx1ZXMgbGlrZSB0byB1cHBlcmNhc2UgdmFyaWFudHM6CgoJICB0MV90b2tlbl9hbnkgICAgICA9PiBUMV9UT0tFTl9UWVBFX0FOWQoJICB0MV9maWVsZF9jaWRfaW5mbyA9PiBUMV9GSUVMRF9MT0NBVElPTl9DSURfSU5GTwoJICBldGMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFscy5oOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwgc3JjL3BzaGludGVyL3BzaGdsb2IuaDoKCVVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLCBzcmMvYmFzZS9mdG5hbWVzLmMsCglzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9zZm50LyouYywgc3JjL3RydWV0eXBlLyouYzogVXBkYXRlZAoJU0ZOVC9UcnVlVHlwZSB0eXBlIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmg6CglVcGRhdGluZyB0eXBlIGRlZmludGlpb25zIGZvciB0aGUgZ2x5cGggbG9hZGVyLgoKMjAwMi0wMy0xMyAgQW50b2luZSBMZWNhICA8YW50b2luZUBvcmlvbG5ldC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBDaGFuZ2VkIHRoZSBhdXRvbWF0aWMKCWRldGVjdGlvbiBvZiBNaWNyb3NvZnQgQyBjb21waWxlcnMgdG8gYXV0b21hdGljYWxseSBzdXBwb3J0IDY0LWJpdAoJaW50ZWdlcnMgb25seSBzaW5jZSByZXZpc2lvbiA5LjAwIChpLmUuID49IFZpc3VhbCBDKysgMi4wKS4KCjIwMDItMDMtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0dXRpbC5jIChGVF9SZWFsbG9jKTogVXNlIE1FTV9TZXQgaW5zdGVhZCBvZiBtZW1zZXQuCgoyMDAyLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfcmVzaXplLCBmdF9tZW1fdGFibGVfbmV3LAoJZnRfbWVtX3RhYmxlX3NldCwgZnRfbWVtX2RlYnVnX2FsbG9jLCBmdF9tZW1fZGVidWdfZnJlZSwKCWZ0X21lbV9kZWJ1Z19yZWFsbG9jLCBmdF9tZW1fZGVidWdfZG9uZSwgRlRfQWxsb2NfRGVidWcsCglGVF9SZWFsbG9jX0RlYnVnLCBGVF9GcmVlX0RlYnVnKTogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRml4KTogRGl0dG8uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogRGl0dG8uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfU2l6ZV9HZXRfR2xvYmFsX0Z1bmNzLCBDRkZfU2l6ZV9Jbml0LAoJQ0ZGX0dseXBoU2xvdF9Jbml0KTogRGl0dG8uCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfR2x5cGhTbG90X0luaXQsCglDSURfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcyk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIFQxX0dseXBoU2xvdF9Jbml0KToKCURpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNobW9kLmMgKHBzaGludGVyX2ludGVyZmFjZSk6IFVzZSBgc3RhdGljIGNvbnN0Jy4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfR2V0X05leHRfQ2hhcik6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfQnVpbGRlcl9GdW5jcyk6IFJlbmFtZWQKCXRvLi4uCgkoVDFfQnVpbGRlcl9GdW5jc1JlYyk6IFRoaXMuCgkoVDFfQnVpbGRlcl9GdW5jcyk6IE5ldyB0eXBlZGVmLgoJKFBTQXV4X0ludGVyZmFjZSk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3BzYXV4L3BzYXV4bW9kLmMgKHQxX2J1aWxkZXJfZnVuY3MpLCBzcmMvcHNhdXgvcHNvYmpzLmgKCSh0MV9idWlsZGVyX2Z1bmNzKTogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlX0FsaWduKTogUmVwbGFjZWQgd2l0aCAuLi4KCShQU0hfQkxVRV9BTElHTl97Tk9ORSxUT1AsQk9UfSk6IE5ldyBkZWZpbmVzLgoJKFBTSF9BbGlnbm1lbnRSZWMpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChHRVRfQ2hhciwgR0VUX0J5dGUpOiBGaXgKCXR5cG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCAoRlRfU3ViR2x5cGgpOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRzdHJlYW0gKEZUX0dldF9DaGFyKTogUmVuYW1lIHRvLi4uCgkoRlRfU3RyZWFtX0dldF9DaGFyKTogVGhpcy4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IHMvaW5kZXgvaWR4LyAtLSBgaW5kZXgnIGlzCglhIGJ1aWx0LWluIGZ1bmN0aW9uIGluIGdjYywgY2F1c2luZyB3YXJuaW5nIG1lc3NhZ2VzIHdpdGggZ2NjIDMuMC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkKTogRGl0dG8uCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChhaF9oaW50ZXJfY29tcHV0ZV9ibHVlcyk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCWZ0Y19mYW1pbHlfdGFibGVfZnJlZSwgRlRDX01hbmFnZXJfRG9uZSwgRlRDX01hbmFnZXJfUmVnaXN0ZXJfQ2FjaGUpOgoJRGl0dG8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfbmV3X2luZGV4LCBjZmZfZG9uZV9pbmRleCwKCWNmZl9leHBsaWNpdF9pbmRleCwgQ0ZGX0FjY2Vzc19FbGVtZW50LCBDRkZfRm9yZ2V0X0VsZW1lbnQsCglDRkZfR2V0X05hbWUsIENGRl9HZXRfU3RyaW5nLCBDRkZfTG9hZF9TdWJGb250LCBDRkZfTG9hZF9Gb250LAoJQ0ZGX0RvbmVfRm9udCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCwgUFNfUGFyc2VyX0xvYWRGaWVsZCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX21hc2tfdGVzdF9iaXQsIHBzX21hc2tfY2xlYXJfYml0LAoJcHNfbWFza19zZXRfYml0LCBwc19kaW1lbnNpb25fYWRkX3Qxc3RlbSwgcHNfaGludHNfdDFzdGVtMywKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9yZWNvcmQsCglwc2gxX2hpbnRfdGFibGVfcmVjb3JkX21hc2ssIHBzaDFfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoMl9oaW50X3RhYmxlX3JlY29yZF9tYXNrLCBwc2gyX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvc2ZudC90dHBvc3QuYyAoTG9hZF9Gb3JtYXRfMjAsIExvYWRfRm9ybWF0XzI1LAoJVFRfR2V0X1BTX05hbWUpOiBEaXR0by4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfR2V0X01ldHJpY3MsIEdldF9ITWV0cmljcywKCWxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgVDFfT3Blbl9GYWNlKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9HZXRfS2VybmluZyk6IERpdHRvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKGZ0Y19mYW1pbHlfdGFibGVfZnJlZSk6IERpdHRvLgoKMjAwMi0wMy0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpLCBzcmMvY2lkL2NpZG9ianMuYwoJKENJRF9GYWNlX0luaXQpOiBGaXhlZCBhbm90aGVyIGJ1ZyByZWxhdGVkIHRvIHRoZQoJYXNjZW5kZXIvZGVzY2VuZGVyL3RleHQgaGVpZ2h0IG9mIFBvc3RzY3JpcHQgZm9udHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMl9wcmludF96b25lKTogVGhpcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDFfcHJpbnRfem9uZSk6IFRoaXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYzogQWRkaW5nIHRoZSBuZXcgRlRfTGlicmFyeV9WZXJzaW9uIEFQSSB0byByZXR1cm4KCXRoZSBsaWJyYXJ5J3MgY3VycmVudCB2ZXJzaW9uIGluIGR5bmFtaWMgbGlua3MuCgkqIHNyYy9iYXNlL2Z0aW5pdC5jIChGVF9Jbml0X0ZyZWVUeXBlKTogVXBkYXRlZC4KCjIwMDItMDMtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9EaW1lbnNpb25SZWMpOiBzL3N0ZC9zdGR3Ly4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbF9zY2FsZV93aWR0aHMsCglwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgsIHBzaF9nbG9iYWxzX2Rlc3Ryb3ksIHBzaF9nbG9iYWxzX25ldyk6CglEaXR0by4KCjIwMDItMDMtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KSwgc3JjL2NmZi9jZmZvYmpzLmMKCShDRkZfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOiBSZW1vdmluZyB0aGUgYnVnCgl0aGF0IHJldHVybmVkIGdsb2JhbCBCQm94IHZhbHVlcyBpbiAxNi4xNiBmaXhlZCBmb3JtYXQgKGluc3RlYWQgb2YKCWludGVnZXIgZm9udCB1bml0cykuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgYSBidWcgdGhhdAoJY2F1c2VkIHRoZSBDSUQgZHJpdmVyIHRvIHJldHVybiBQb3N0c2NyaXB0IGZvbnQgbmFtZXMgd2l0aCBhIGxlYWRpbmcKCXNsYXNoICgiLyIpIGFzIGluICIvTU9FS2FpLVJlZ3VsYXIiLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpLCBzcmMvc2ZudC9zZm9ianMuYyAoR2V0X05hbWUpLAoJc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgdGhlIGxvYWRlciBzbwoJdGhhdCBpdCBhY2NlcHRzIGJyb2tlbiBmb250cyBsaWtlICJmb3hqdW1wLnR0ZiIsIHdoaWNoIG1hZGUgRnJlZVR5cGUKCWNyYXNoIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdGhlbS4KCglBbHNvIGltcHJvdmVkIHRoZSBuYW1lIHRhYmxlIHBhcnNlciB0byBiZSBhYmxlIHRvIGxvYWQKCVdpbmRvd3MtZW5jb2RlZCBlbnRyaWVzIGJlZm9yZSBNYWNpbnRvc2ggb3IgVW5pY29kZSBvbmVzLCBzaW5jZSBpdAoJc2VlbXMgc29tZSBmb250cyBkb24ndCBoYXZlIHJlbGlhYmxlIHZhbHVlcyBoZXJlIGFueXdheS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgdHlwZWRlZiBmb3IKCWBQU05hbWVzX1NlcnZpY2UnLgoKMjAwMi0wMy0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNCwgYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBVcGRhdGUgdG8gbGlidG9vbAoJMS40LjIuCglBcHBseSBhIHNtYWxsIHBhdGNoIGZvciBBSVggdG8gbWFrZSBzaGFyZWQgbGlicmFyaWVzIHdvcmsgKHRoaXMKCXBhdGNoIGlzIGFscmVhZHkgaW4gdGhlIENWUyB2ZXJzaW9uIG9mIGxpYnRvb2wpLgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLnN1YiwgYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzOiBVcGRhdGVkIHRvCglyZWNlbnQgdmVyc2lvbnMuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEZpeCB0eXBvCgkoQUNfQ09ORklHX0ZJTEUtPkFDX0NPTkZJR19GSUxFUykuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMi0wMi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNvbmZpZy5oOiBDaGFuZ2VkIGBGVF9MT0NBTCB4eHh4JyB0bwoJYEZUX0xPQ0FMKCB4eHh4ICknIGV2ZXJ5d2hlcmUgaW4gdGhlIHNvdXJjZS4gIFRoZSBzYW1lIGdvZXMgZm9yCglgRlRfTE9DQUxfREVGIHh4eHgnIHdoaWNoIGlzIHRyYW5zbGF0ZWQgdG8gYEZUX0xPQ0FMX0RFRiggeHh4eHggKScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX01JTk9SLCBGUkVFVFlQRV9QQVRDSCk6CglDaGFuZ2luZyB2ZXJzaW9uIHRvIDIuMS4wIHRvIGluZGljYXRlIGFuIHVuc3RhYmxlIGJyYW5jaC4KCUFkZGVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgRlRfR2V0X0ZpcnN0X0NoYXIgYW5kIEZUX0dldF9OZXh0X0NoYXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW1wbGVtZW50IEZUX0dldF9GaXJzdF9DaGFyIGFuZAoJRlRfR2V0X05leHRfQ2hhci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaDogUmVuYW1pbmcgc3RydWN0dXJlIHR5cGVzLiAgVGhpcwoKCSAgdHlwZWRlZiAgVDFfU3RydWN0XwoJICB7CgkgIH0gVDFfU3RydWN0OwoKCWJlY29tZXMKCgkgIHR5cGVkZWYgIFBTX1N0cnVjdFJlY18KCSAgewoJICB9IFBTX1N0cnVjdFJlYywgKlBTX1N0cnVjdDsKCgkgIHR5cGVkZWYgUFNfU3RydWN0UmVjICBUMV9TdHJ1Y3Q7ICAvKiBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSAqLwoKCUhlbmNlLCB3ZSBpbmNyZWFzZSB0aGUgY29oZXJlbmN5IG9mIHRoZSBzb3VyY2UgY29kZSBieSBlZmZlY3RpdmVseQoJdXNpbmcgdGhlIGBSZWMnIHByZWZpeCBmb3Igc3RydWN0dXJlIHR5cGVzLgoKMjAwMi0wMi0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBTaW1wbGlmeWluZyBhbmQgc2VjdXJpbmcgdGhlCgluYW1lcyB0YWJsZSBsb2FkZXIuICBJbnZhbGlkIGluZGl2aWR1YWwgbmFtZSBlbnRyaWVzIGFyZSBub3cgaGFuZGxlZAoJY29ycmVjdGx5LiAgVGhpcyBhbGxvd3MgdGhlIGxvYWRpbmcgb2YgdmVyeSBidWdneSBmb250cyBsaWtlCgkiZm94anVtcC50dGYiIHdpdGhvdXQgYWxsb2NhdGluZyB0b25zIG9mIG1lbW9yeSBhbmQgY2F1c2luZyBjcmFzaGVzLgoKCSogc3JjL290bGF5b3V0L290bGNvbW1vbi5oLCBzcmMvb3RsYXlvdXQvb3RsY29tbW9uLmM6IEFkZGluZyAoc3RpbGwKCWV4cGVyaW1lbnRhbCkgY29kZSBmb3IgT3BlblR5cGUgTGF5b3V0IHRhYmxlcyB2YWxpZGF0aW9uIGFuZAoJcGFyc2luZy4KCgkqIHNyYy90eXBlMS90MWNtYXAuaCwgc3JjL3R5cGUxL3QxY21hcC5jOiBBZGRpbmcgKHN0aWxsCglleHBlcmltZW50YWwpIGNvZGUgZm9yIFR5cGUgMSBjaGFybWFwIHByb2Nlc3NpbmcuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IE5ldyBmaWxlLiAgSXQgY29udGFpbnMgYSBuZXcsIHN0aWxsCglleHBlcmltZW50YWwgU0ZOVCBjaGFybWFwIHByb2Nlc3Npbmcgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IEFkZGluZyB2YWxpZGF0aW9uIHN1cHBvcnQgYXMKCXdlbGwgYXMgaW50ZXJuYWwgY2hhcm1hcCBvYmplY3QgZGVmaW5pdGlvbnMgKEZUX0NNYXAgIT0gRlRfQ2hhck1hcCkuCgoyMDAyLTAyLTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSZW5hbWluZyBzdHJlYW0gZnVuY3Rpb25zIHRvIHRoZSBGVF88U3ViamVjdD5fPEFjdGlvbj4gc2NoZW1lOgoKCSAgRlRfU2Vla19TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1NlZWsKCSAgRlRfU2tpcF9TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1NraXAKCSAgRlRfUmVhZF9TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1JlYWQKCSAgRlRfUmVhZF9TdHJlYW1fQXQgPT4gRlRfU3RyZWFtX1JlYWRfQXQKCSAgRlRfQWNjZXNzX0ZyYW1lICAgPT4gRlRfU3RyZWFtX0VudGVyX0ZyYW1lCgkgIEZUX0ZvcmdldF9GcmFtZSAgID0+IEZUX1N0cmVhbV9FeGl0X0ZyYW1lCgkgIEZUX0V4dHJhY3RfRnJhbWUgID0+IEZUX1N0cmVhbV9FeHRyYWN0X0ZyYW1lCgkgIEZUX1JlbGVhc2VfRnJhbWUgID0+IEZUX1N0cmVhbV9SZWxlYXNlX0ZyYW1lCgkgIEZUX0dldF9YWFhYICAgICAgID0+IEZUX1N0cmVhbV9HZXRfWFhYWAoJICBGVF9SZWFkX1hYWFggICAgICA9PiBGVF9TdHJlYW1fUmVhZF9YWFhYCgoJICBGVF9OZXdfU3RyZWFtKCBmaWxlbmFtZSwgc3RyZWFtICkgPT4KCSAgICBGVF9TdHJlYW1fT3Blbiggc3RyZWFtLCBmaWxlbmFtZSApCgoJICAgIChUaGUgZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgdGhlIEZUX1N0cmVhbSBzdHJ1Y3R1cmUsIGl0IHNpbXBseQoJICAgIGluaXRpYWxpemVzIGl0IGZvciByZWFkaW5nLikKCgkgIEZUX05ld19NZW1vcnlfU3RyZWFtKCBsaWJyYXJ5LCBGVF9CeXRlKiAgYmFzZSwgc2l6ZSwgc3RyZWFtICkgPT4KCSAgICBGVF9TdHJlYW1fT3Blbl9NZW1vcnkoIHN0cmVhbSwgY29uc3QgRlRfQnl0ZSogYmFzZSwgc2l6ZSApCgoJICBGVF9Eb25lX1N0cmVhbSAgPT4gRlRfU3RyZWFtX0Nsb3NlCgkgIEZUX1N0cmVhbV9JTyAgICA9PiBGVF9TdHJlYW1fSU9GdW5jCgkgIEZUX1N0cmVhbV9DbG9zZSA9PiBGVF9TdHJlYW1fQ2xvc2VGdW5jCgoJICBmdF9jbG9zZV9zdHJlYW0gPT4gZnRfYW5zaV9zdHJlYW1fY2xvc2UgKGluIGJhc2UvZnRzeXN0ZW0uYyBvbmx5KQoJICBmdF9pb19zdHJlYW0gICAgPT4gZnRfYW5zaV9zdHJlYW1faW8gICAgKGluIGJhc2UvZnRzeXN0ZW0uYyBvbmx5KQoKCSogc3JjL2Jhc2UvZnR1dGlsLmM6IE5ldyBmaWxlLiAgQ29udGFpbnMgYWxsIG1lbW9yeSBhbmQgbGlzdAoJbWFuYWdlbWVudCBjb2RlIChwcmV2aW91c2x5IGluICJmdG9ianMuYyIgYW5kICJmdGxpc3QuYyIsCglyZXNwZWN0aXZlbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogTW92aW5nIGFsbCBjb2RlIHJlbGF0ZWQgdG8KCWdseXBoIGxvYWRlcnMgdG8gLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvImludGVybmFsL2Z0Z2xvYWRyLmg6IFRoaXMgbmV3IGZpbGUuCgkiRlRfR2x5cGhMb2FkZXIiIGlzIG5vdyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZQoJIkZUX0dseXBoTG9hZGVyUmVjIi4KCShmdF9nbHlwaF9vd25fYml0bWFwKTogUmVuYW1lZCB0byAuLi4KCShGVF9HTFlQSF9PV05fQklUTUFQKTogVGhpcy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IE1vdmluZyBhbGwgY29kZSByZWxhdGVkIHRvIGdseXBoIGxvYWRlcnMKCXRvIC4uLgoJKiBzcmMvYmFzZS9mdGdsb2Fkci5jOiBUaGlzIG5ldyBmaWxlLgoKMjAwMi0wMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogUmVtb3ZlIGNvbW1hIGluCgllbnVtIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vZGlmaWVkIHRoZSBkZWJ1ZyBzdWItc3lzdGVtIGluaXRpYWxpemF0aW9uLiAgVHJhY2UgbGV2ZWxzIGNhbiBub3cKCWJlIHNwZWNpZmllZCB3aXRoaW4gdGhlICJGVDJfREVCVUciIGVudmlyb25tZW50IHZhcmlhYmxlLiAgU2VlIHRoZQoJY29tbWVudHMgd2l0aGluICJmdGRlYnVnLmMiIGZvciBtb3JlIGRldGFpbHMuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IChGVF9TZXRUcmFjZUxldmVsKTogUmVtb3ZlZC4KCShmdF9kZWJ1Z19pbml0KTogTmV3IGZ1bmN0aW9uLgoJKGZ0X2RlYnVnX2R1bW15KTogUmVtb3ZlZC4KCVVwZGF0ZWQgdG8gY2hhbmdlcyBpbiBmdGRlYnVnLmgKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBbHdheXMgZGVmaW5lCglGVF9ERUJVR19MRVZFTF9FUlJPUiBpZiBGVF9ERUJVR19MRVZFTF9UUkFDRSBpcyBkZWZpbmVkLgoJKEZUX0Fzc2VydCk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfQVNTRVJUKTogVGhpcy4KCVNvbWUgc3R1ZmYgZnJvbSBmdGRlYnVnLmggaGFzIGJlZW4gbW92ZWQgdG8gLi4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogTmV3IGZpbGUsIHRvIGRlZmluZSB0aGUgdHJhY2UKCWxldmVscyB1c2VkIGZvciBkZWJ1Z2dpbmcuICBJdCBpcyB1c2VkIGJvdGggdG8gZGVmaW5lIGVudW1zIGFuZAoJdG9nZ2xlIG5hbWVzIGZvciBGVDJfREVCVUcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRzdHJlYW0uYzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleHRlbmQuaCwgc3JjL2Jhc2UvZnRleHRlbmQuYzoKCVJlbW92ZWQuICBCb3RoIGZpbGVzIGFyZSBub3cgY29tcGxldGVseSBvYnNvbGV0ZS4KCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmg6IEFkZGluZyAiI3VuZGVmIEZUX0VSUl9DQVQiIGFuZAoJYCN1bmRlZiBGVF9FUlJfWENBVCIgdG8gYXZvaWQgd2FybmluZ3Mgd2l0aCBjZXJ0YWluIGNvbXBpbGVycyAobGlrZQoJTENDKS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gyX3ByaW50X3pvbmUpOiBUaGlzIHRvIGF2b2lkIGVycm9ycyBkdXJpbmcgY29tcGlsYXRpb24gb2YgZGVidWcKCWxpYnJhcnkuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoRlRfQ09NUE9ORU5UKTogQ2hhbmdlIGRlZmluaXRpb24gdG8gYXMKCWB0cmFjZV9zbW9vdGgnLgoKMjAwMi0wMi0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FOiBBZGRpbmcgImRldmVsQGZyZWV0eXBlLm9yZyIgYWRkcmVzcyBmb3IgYnVnIHJlcG9ydHMuCgoyMDAyLTAyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChjaGVjayk6IE5ldyBkdW1teSB0YXJnZXQuCgkoLlBIT05ZKTogQWRkIGl0LgoKMjAwMi0wMi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChGVF9DRkxBR1MpOiBVc2UgJChJTkNMVURFX0ZMQUdTKSBmaXJzdC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfcmVzaXplKTogTWFyayBgZXJyb3InIGFzIHVudXNlZAoJdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9HZXRfU3RyaW5nKTogRGl0dG8uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfU3RyQ29weSk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0RvbmUpOiBEaXR0by4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBEaXR0by4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRGl0dG8uCgkocGNmX2dldF9iaXRtYXBzKTogVGhlIHNhbWUgZm9yIGBzaXplYml0bWFwcycuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVfUGFyc2VfQ2hhcnN0cmluZ3MpOiBUaGUgc2FtZSBmb3IKCWBvcmlnX3knLgoJKHQxb3BlcmF0b3Jfc2VhYyk6IENvbW1lbnQgb3V0IG1vcmUgZGVhZCBjb2RlLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogQWRkIGBERUJVR19ISU5URVInCgljb25kaXRpb25hbC4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgsCglsb2FkX3RydWV0eXBlX2dseXBoKTogQWRkIGBUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSJwoJY29uZGl0aW9uYWwuCgoyMDAyLTAyLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IFVzZSBGVF9VTlVTRUQgaW5zdGVhZAoJb2YgVU5VU0VELgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYyAoZnRfYXV0b2hpbnRlcl9yZXNldCk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX21hc2tfdGFibGVfbWVyZ2UpOiBGaXggdHlwbyBpbiB2YXJpYWJsZQoJc3dhcHBpbmcgY29kZS4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVfQWxpZ24pOiBBZGQgUFNIX0JMVUVfQUxJR05fTk9ORS4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NuYXBfc3RlbSk6IFVzZSBpdC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9vcHRpbWl6ZSk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X2FsaWduKTogRGl0dG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKFVOVVNFRCk6IFJlbW92ZWQuCgoyMDAyLTAyLTEwICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4KCglBZGQgc3VwcG9ydCBmb3IgSVNPTGF0aW4xIFBTIGVuY29kaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChmdF9lbmNvZGluZ19sYXRpbl8xKTogTmV3IHRhZwoJKGBsYXQxJykuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9FbmNvZGluZ19UeXBlKTogQWRkCglgdDFfZW5jb2RpbmdfaXNvbGF0aW4xJy4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogSGFuZGxlCglmdF9lbmNvZGluZ19sYXRpbl8xLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogSGFuZGxlIGBJU09MYXRpbjFFbmNvZGluZycuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogSGFuZGxlIGB0MV9lbmNvZGluZ19pc29sYXRpbjEnLgoKMjAwMi0wMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FOiBGaXggdHlwby4KCSogZG9jcy9DSEFOR0VTOiBNaW5vciBmaXhlcy4KCgoJKiBWZXJzaW9uIDIuMC44IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIDIuMC44LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBTZXR0aW5nIGBQQVRDSF9MRVZFTCcgdG8gOCBhbmQKCXJlbW92aW5nIGBGVF9HZXRfTmV4dF9DaGFyJyBmcm9tIHRoZSBBUEkgKHRlbXBvcmFyaWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkaW5nIGNvbW1lbnRzIHRvIEZUX0dldF9OZXh0X0NoYXI7Cglub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtaWdodCB0ZW1wb3JhcmlseSBiZSByZW1vdmVkIGZvciB0aGUgMi4wLjgKCXJlbGVhc2UuCgoyMDAyLTAyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IFJlbW92ZWQgaW1tYXR1cmUgc3VwcG9ydCBvZgoJdGhlIEFWRVJBR0VfV0lEVEggcHJvcGVydHkuCgoyMDAyLTAyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTaW5jZSBtYW55IGZvbnRzIGVtYmVkZGVkIGluCglQREYgZG9jdW1lbnRzIGRvIG5vdCBpbmNsdWRlICdjbWFwJywgJ3Bvc3QnIGFuZCAnbmFtZScgdGFibGVzLCB0aGUKCVNGTlQgZmFjZSBsb2FkZXIgaGFzIGJlZW4gY2hhbmdlZCB0byBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IGFuCgllcnJvciBpZiB0aGVzZSBhcmUgbm90IHByZXNlbnQuCgoJTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIF9yZXF1aXJlc18gdGhlc2UgdGFibGVzLCBidXQgQWRvYmUKCXNlZW1zIHRvIGlnbm9yZSBpdCBjb21wbGV0ZWx5LgoKCSogc3JjL3NmbnQvdHRjbWFwLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9yZWFkX1RPQyk6IFVzZSBGVF9VSW50LgoJKHBjZl9wYXJzZV9tZXRyaWMsIHBjZl9wYXJzZV9jb21wcmVzc2VkX21ldHJpYyk6IFJlbW92ZWQuICBDb2RlCglpcyBub3cgaW4gLi4uCgkocGNmX2dldF9tZXRyaWMpOiBIZXJlLgoJKHBjZlNlZWtUb1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShwY2ZIYXNUeXBlKTogUmVuYW1lZCB0byAuLi4KCShwY2ZfaGFzX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShmaW5kX3Byb3BlcnR5KTogUmVuYW1lZCB0byAuLi4KCShwY2ZfZmluZF9wcm9wZXJ0eSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZl9nZXRfYml0bWFwcywgcGNmX2dldF9lbmNvZGluZ3MpOiBIYW5kbGUgaW52YWxpZCBQQ0YgZm9udHMKCWJldHRlciAoZGVsYXlpbmcgZm9ybWF0IGNoZWNrcyBvdXQgb2YgRlRfQWNjZXNzX0ZyYW1lIC4uCglGVF9Gb3JnZXRfRnJhbWUgYmxvY2tzIHRvIGF2b2lkIGxlYXZpbmcgdGhlIHN0cmVhbSBpbiBhbiBpbmNvcnJlY3QKCXN0YXRlIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgUENGIGZvbnQpLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoUENGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfSW5pdCk6IFRoaXMuCgkoUENGX0dldF9DaGFyX0luZGV4KTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBUaGlzLgoJKFBDRl9HZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfTmV4dCk6IFRoaXMuCgkocGNmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZi5oIChQQ0ZfRG9uZV9GYWNlKTogUmVtb3ZlZC4KCjIwMDItMDItMDYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChGVF9Eb25lX0ZhY2UpOiBGaXhlZCBzbWFsbCBtZW1vcnkgbGVhay4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogTm93IGhhbmRsZXMgdGhlICJBVkVSQUdFX1dJRFRIIgoJcHJvcGVydHkgdG8gcmV0dXJuIGNvcnJlY3QgY2hhcmFjdGVyIHBpeGVsICh3aWR0aC9oZWlnaHQpIHBhaXJzIGZvcgoJZW1iZWRkZWQgYml0bWFwcy4KCjIwMDItMDItMDQgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCglBZGRpbmcgdGhlIGZ1bmN0aW9uIGBGVF9HZXRfTmV4dF9DaGFyJywgZG9pbmcgdGhlIG9idmlvdXMgdGhpbmcKCXcuci50LiB0aGUgc2VsZWN0ZWQgY2hhcm1hcC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkIHByb3RvdHlwZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oOiBBZGQgYEZURHJpdmVyX2dldE5leHRDaGFyJwoJdHlwZWRlZi4KCShGVF9Ecml2ZXJfQ2xhc3MpOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgYFBTX05leHRfVW5pY29kZV9GdW5jJwoJdHlwZWRlZi4KCShQU05hbWVzX0ludGVyZmFjZSk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZCBgVFRfQ2hhck5leHRfRnVuYycKCXR5cGVkZWYuCgkoVFRfQ01hcFRhYmxlKTogVXNlIGl0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24sIGltcGxlbWVudGluZwoJaGlnaC1sZXZlbCBBUEkuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uZXh0X2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0MWNpZF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX05leHRfVW5pY29kZSk6IE5ldyBmdW5jdGlvbi4KCShwc25hbWVzX2ludGVyZmFjZSk6IEFkZCBpdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDAsIGNvZGVfdG9fbmV4dDIsIGNvZGVfdG9fbmV4dDQsCgljb2RlX3RvX25leHQ2LCBjb2RlX3RvX25leHRfOF8xMiwgY29kZV90b19uZXh0XzEwKTogTmV3IGF1eGlsaWFyeQoJZnVuY3Rpb25zLgoJKFRUX0NoYXJNYXBfTG9hZCk6IFVzZSB0aGVtLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0dF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3dpbmZudC93aW5mbnQuYyAoRk5UX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRm9yIG5vdywgcmVwb3J0IFVuaWNvZGUgZm9yCglVbmljb2RlIGFuZCBMYXRpbiAxIGVuY29kaW5ncy4KCjIwMDItMDItMDIgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogQWRkIG1pc3NpbmcgYGZpJy4KCgoJKiBWZXJzaW9uIDIuMC43IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogSW5jcmVhc2luZyBGUkVFVFlQRV9QQVRDSCB0byA3Cglmb3IgdGhlIG5ldyByZWxlYXNlLgoKMjAwMi0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBSRUFETUUuVU5YLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRoZQoJMi4wLjcgcmVsZWFzZS4KCjIwMDItMDEtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIElOU1RBTEw6IE1vdmVkIHRvIC4uLgoJKiBkb2NzL0lOU1RBTEw6IEhlcmUgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlICJpbnN0YWxsIiBzY3JpcHQgb24KCVdpbmRvd3MsIHdoZXJlIHRoZSBmaWxlc3lzdGVtIGRvZXNuJ3QgcHJlc2VydmUgY2FzZS4KCjIwMDItMDEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGNvbmZpZ3VyZTogRml4ZWQgdGhlIHNjcmlwdC4gIEl0IHByZXZpb3VzbHkgZGlkbid0IGFjY2VwdCBtb3JlCgl0aGFuIG9uZSBhcmd1bWVudCBjb3JyZWN0bHkuICBGb3IgZXhhbXBsZSwgd2hlbiB0eXBpbmc6CgoJICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS1ubHMKCgl0aGUgIi0tZGlzYWJsZS1ubHMiIHdhcyBpbmNvcnJlY3RseSBzZW50IHRvIHRoZSAibWFrZSIgcHJvZ3JhbS4KCjIwMDItMDEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRS5VTlg6IEZpeCB0eXBvLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rICh1bmluc3RhbGwpOiBGaXggbGlicmFyeSBuYW1lIGZvciBsaWJ0b29sLgoKMjAwMi0wMS0yOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBGaXggaW5jb3JyZWN0IGRlc3RydWN0aW9uIG9mCgl0aGUgZmFjZSBvYmplY3QgKGZhY2UtPnRvYy50YWJsZXMsIGZhY2UtPnJvb3QuZmFtaWx5X25hbWUsCglmYWNlLT5yb290LmF2YWlsYWJsZV9zaXplLCBmYWNlLT5jaGFyc2V0X2VuY29kaW5nLAoJZmFjZS0+Y2hhcnNldF9yZWdpc3RyeSBhcmUgbm93IGZyZWVkKS4gIFRoYW5rcyB0byBOaWVscyBNb3NlbGV5LgoKMjAwMi0wMS0yOCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogU2V0IGBsb2FkZXItPm51bV9jaGFycycuCgoyMDAyLTAxLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBjb3B5CglvZiBgYmFzZScgc3RyaW5nIGZvciBkZWNyeXB0aW5nIHRvIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGRhdGEuCglCYXNlZCBvbiBhIHBhdGNoIGJ5IEpha3ViIEJvZ3VzeiA8cWJvb3NoQHBsZC5vcmcucGw+LgoKMjAwMi0wMS0yNyAgR2l1bGlhbm8gUG9jaGluaSAgPHBvY2hpbmlAc2hpbnkuaXQ+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc2NhbmxpbmUpOiBGaXggYnVnIHdoaWNoIGNhdXNlZAoJYmFkIHJlbmRlcmluZyBvZiB0aGluIGxpbmVzIChsZXNzIHRoYW4gb25lIHBpeGVsIHRoaWNrKS4KCjIwMDItMDEtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTWFrZSBsYXN0IHBhdGNoIHdvcmsKCWFjdHVhbGx5LgoKMjAwMi0wMS0yNSAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kb25lLCBmdGNfbm9kZV9kZXN0cm95KTogRml4Cgljb21waWxhdGlvbiB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgYGZ0bW0ub2JqJy4KCSogc3JjL2NhY2hlL2Rlc2NyaXAubW1zIChmdGNhY2hlLm9iaik6IERlcGVuZGVuY2llcyBhZGRlZC4KCjIwMDItMDEtMjUgIFdBTkcgWWkgIDx3YW5neWlAZm91bmRlci5jb20uY24+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IEZpeCBkZWFsbG9jYXRpb24gYnVnLgoKMjAwMi0wMS0yMSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogVHlwbyBmaXhlZCAodGhhbmtzIHRvIERldGxlZiAiSGF3a2V5ZSIgV/xya25lcikgaW4KCXRoZSBVUkwgZm9yIHRoZSBvbmxpbmUgcmVzb3VyY2UuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYzogTmV3IGZpbGUuCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDEtMTggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRzeXN0ZW0uYzogVXBkYXRlZCBmb3IgQW1pZ2FPUyAzLjkuCgkqIGJ1aWxkcy9hbWlnYS9SRUFETUU6IFVwZGF0ZWQuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBUaGUgc2NyaXB0IHdhcyBzdGlsbCBidWdneS4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNYWtlIGl0IHJlYWxseSB3b3JrIGZvciBhbnkgaW5zdGFsbAoJcHJlZml4LgoKMjAwMi0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBGaXggc29tZSBzZXJpb3VzIGJ1Z3MuCgoyMDAyLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEJ1aWxkIHRvcC1sZXZlbCBKYW1maWxlLgoKMjAwMi0wMS0wOSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfbGluZSk6IFNtYWxsIG9wdGltaXphdGlvbiB0bwoJdGhlIHNtb290aCBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgdGhhdCBkZWFscyB3aXRoIHZlcnRpY2FsIHNlZ21lbnRzLgoJVGhpcyByZXN1bHRzIGluIGEgNS03JSBzcGVlZHVwIGluIHJlbmRlcmluZyBzcGVlZC4KCjIwMDItMDEtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBzb21lIHdyYXBwZXIgc2NyaXB0cyB0byBtYWtlIHRoZSBpbnN0YWxsYXRpb24gbW9yZQoJVW5peC1mcmllbmRseS4KCgkqIGNvbmZpZ3VyZSwgaW5zdGFsbDogTmV3IGZpbGVzLgoKCSogSU5TVEFMTCwgUkVBRE1FLlVOWDogVXBkYXRlZCBpbnN0YWxsYXRpb24gZG9jdW1lbnRhdGlvbiB0byB1c2UgdGhlCgluZXcgJ2NvbmZpZ3VyZScgYW5kICdpbnN0YWxsJyBzY3JpcHRzLgoKMjAwMi0wMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjYgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogZG9jcy9CVUdTLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIDIuMC42IHJlbGVhc2UuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IEZpeGVkIEhUTUwgcXVvdGluZyBpbiBzb3VyY2VzLgoJKGh0bWxfZm9ybWF0KTogUmVwbGFjZWQgd2l0aCAuLi4KCShodG1sX3F1b3RlKTogTmV3IGZ1bmN0aW9uLgoJKGh0bWxfcXVvdGUwKTogTmV3IGZ1bmN0aW9uLgoJKERvY0NvZGU6OmR1bXBfaHRtbDogU21hbGwgaW1wcm92ZW1lbnQuCgkoRG9jUGFyYWdyYXBoOjpkdW1wLCBEb2NCbG9jazo6aHRtbCk6IFVzZSBodG1sX3F1b3RlMCBhbmQgaHRtbF9xdW90ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFNldHRpbmcgZGVmYXVsdCBvcHRpb25zIGZvcgoJYSByZWxlYXNlIGJ1aWxkIChkZWJ1Z2dpbmcgb2ZmLCBieXRlY29kZSBpbnRlcnByZXRlciBvZmYpLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0b3V0bG4uYywgc3JjL2NhY2hlL2Z0Y2NtYXAuYywKCXNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRzYml0LmM6IFJlbW92aW5nIHNtYWxsIGNvbXBpbGVyCgl3YXJuaW5ncyAoaW4gcGVkYW50aWMgY29tcGlsYXRpb24gbW9kZXMpLgoKMjAwMi0wMS0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9saW5rZWRfZWRnZSk6IE1vZGlmaWVkIGNvbXB1dGF0aW9uCglvZiBhdXRvLWhpbnRlZCBzdGVtIHdpZHRoczsgdGhpcyBhdm9pZHMgY29sb3IgZnJpbmdlcyBpbgoJIkNsZWFyVHlwZS1saWtlIiByZW5kZXJpbmcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoX0hlYWRlciwKCVRUX0xvYWRfU2ltcGxlX0dseXBoLCBUVF9Mb2FkX0NvbXBvc2l0ZV9HbHlwaCwgbG9hZF90cnVldHlwZV9nbHlwaCk6CglNb2RpZmllZCB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIG1ha2UgaXQgbW9yZSBwYXJhbm9pZDsgdGhpcyBhdm9pZHMKCW5hc3R5IGJ1ZmZlciBvdmVyZmxvd3MgaW4gdGhlIGNhc2Ugb2YgaW52YWxpZCBnbHlwaCBkYXRhIChhcwoJZW5jb3VudGVyZWQgaW4gdGhlIG91dHB1dCBvZiBzb21lIGJ1Z2d5IGZvbnQgY29udmVydGVycykuCgoyMDAyLTAxLTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUuVU5YOiBBZGRlZCBzcGVjaWFsIFJFQURNRSBmaWxlIGZvciBVbml4IHVzZXJzLgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEZpeGVkIHR5cG8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogQWRkZWQgI2luY2x1ZGUgRlRfT1VUTElORV9IIHRvIGdldCByaWQKCW9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX0NoZWNrKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTAxLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEFkZCBjYXN0IHRvIGF2b2lkIGNvbXBpbGVyCgl3YXJuaW5nLgoKMjAwMi0wMS0wMyAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEFkZGVkIGEgZml4IHRvIGVuc3VyZSB0aGF0CglhbGwgRnJlZVR5cGUgaW5wdXQgc3RyZWFtcyBhcmUgY2xvc2VkIGluIGNoaWxkIHByb2Nlc3NlcyBvZiBhICJmb3JrIgoJb24gVW5peCBzeXN0ZW1zLiAgVGhpcyBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgKHBvdGVudGlhbCkgYWNjZXNzCgljb250cm9sIGlzc3Vlcy4KCjIwMDItMDEtMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogRml4ZWQgYSBidWcgdGhhdCBjcmFzaGVkIHRoZQoJbGlicmFyeSB3aGVuIGRlYWxpbmcgd2l0aCBjZXJ0YWluIHdlaXJkIGZvbnRzIGxpa2UgIlN0YWxpbmdyYWQiLCBpbgoJInNhZG4ucGZiIiAodGhpcyBmb250IGhhcyBubyBmdWxsIGZvbnQgbmFtZSBlbnRyeSkuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIChGVF9PdXRsaW5lX0NoZWNrKToKCU5ldyBmdW5jdGlvbiB0byBjaGVjayB0aGUgY29uc2lzdGVuY3kgb2Ygb3V0bGluZSBkYXRhLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVc2UgYEZUX091dGxpbmVfQ2hlY2snIHRvCgllbnN1cmUgdGhhdCBsb2FkZWQgZ2x5cGhzIGFyZSB2YWxpZC4gIFRoaXMgYWxsb3dzIGNlcnRhaW4gZm9udHMgbGlrZQoJInR0MTA5NW1fLnR0ZiIgdG8gYmUgbG9hZGVkIGV2ZW4gdGhvdWdoIGl0IGFwcGVhcnMgdGhleSBjb250YWluCglyZWFsbHkgZnVua3kgZ2x5cGhzLgoKCVRoZXJlIHN0aWxsIGlzIGEgYnVnIHRoZXJlLCB0aG91Z2guCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCjIwMDEtMTItMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBGaXggYWR2YW5jZSB3aWR0aAoJY29tcHV0YXRpb24gb2YgYXV0by1oaW50ZWQgZ2x5cGhzLiAgVGhpcyBub3RpY2VhYmx5IGltcHJvdmVzIHRoZQoJc3BhY2luZyBvZiBsZXR0ZXJzIGluIEtERSBhbmQgR25vbWUuCgoyMDAxLTEyLTI1ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IENvcnJlY3RpbmcgdGhlIG9yZGVyIGZvciBCb3JsYW5kIGNvbXBpbGVyczoKCTE2LWJpdCBiY2Mgd2FzIG5ldmVyIHNlbGVjdGVkLCBhbHdheXMgb3ZlcnJpZGRlbiBieSAzMi1iaXQgYmNjMzIuCgoyMDAxLTEyLTIyICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BmYy9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBIYW5kbGUgcHJvcGVydHkgYFBPSU5UX1NJWkUnCglhbmQgZml4IGluY29ycmVjdCBjb21wdXRhdGlvbiBvZiBgYXZhaWxhYmxlX3NpemVzJy4KCjIwMDEtMTItMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBBdXRvLWhpbnRlZCBnbHlwaHMgaGFkIGFuCglpbmNvcnJlY3QgZ2x5cGggYWR2YW5jZSBpbiB0aGUgY2FzZSBvZiBtb25vLXdpZHRoIGZvbnRzIChsaWtlCglDb3VyaWVyLCBBbmRhbGUgTW9ubywgYW5kIG90aGVycykuCgoyMDAxLTEyLTIyICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhLyo6IEFkYXB0YXRpb25zIHRvIGxhdGVzdCBjaGFuZ2VzLgoJU3VwcG9ydCBhZGRlZCBmb3IgTW9ycGhPUy4KCjIwMDEtMTItMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAoRlRfQ09NUE9ORU5UKTogUmVkZWZpbmUgdG8gYHRyYWNlX3BzaHJlYycuCgkocHNfbWFza190YWJsZV9tZXJnZSwgcHNfaGludHNfb3BlbiwgcHNfaGludHNfc3RlbSwKCXBzX2hpbnRzX3Qxc3RlbTMsIHBzX2hpbnRzX3QybWFzaywgcHNfaGludHNfdDJjb3VudGVyKTogRml4CglGVF9FUlJPUiBtZXNzYWdlcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKEZUX0NPTVBPTkVOVCk6IERlZmluZSBhcwoJYHRyYWNlX3BzaGFsZ28xJy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKEZUX0NPTVBPTkVOVCk6IERlZmluZSBhcwoJYHRyYWNlX3BzaGFsZ28yJy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogVXBkYXRlZC4KCgkqIGRvY3MvbW9kdWxlcy50eHQ6IE5ldyBmaWxlLgoKMjAwMS0xMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19oaW50c190Mm1hc2ssIHBzX2hpbnRzX3QyY291bnRlcik6CglJZ25vcmUgaW52YWxpZCAiaGludG1hc2siIGFuZCAiY250cm1hc2siIG9wZXJhdG9ycyAoaW5zdGVhZCBvZgoJcmV0dXJuaW5nIGFuIGVycm9yKS4gIEdseXBoIDIwMjggb2YgdGhlIENGRiBmb250ICJNU3VuZy1MaWdodC1BY3JvIgoJY291bGRuJ3QgYmUgcmVuZGVyZWQgb3RoZXJ3aXNlIChpdCBzZWVtcyBpdHMgY2hhcnN0cmluZyBpcyBidWdneSwKCXRob3VnaCB0aGlzIHJlcXVpcmVzIG1vcmUgYW5hbHlzaXMpLgoJKEZUX0NPTVBPTkVOVCk6IERlZmluZS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKSwgc3JjL3BzYXV4L3QxZGVjb2RlLmMKCShUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKSwgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKCopLCBGaXhlZCBhCglidWcgd2hlcmUgdGhlIFggYW5kIFkgYXhpcyB3aGVyZSBpbnZlcnNlZCBpbiB0aGUgcG9zdHNjcmlwdCBoaW50ZXIuCglUaGlzIGNhdXNlZCBwcm9ibGVtIHdoZW4gZGlzcGxheWluZyBvbiBub24tc3F1YXJlIHN1cmZhY2VzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IHMvdmVydGljYWwvZGltZW5zaW9uLy4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IFJlcGxhY2VkIGEgZmxvYXRpbmcKCXBvaW50IGNvbnN0YW50IHdpdGggYSBmaXhlZC1mbG9hdCBlcXVpdmFsZW50LiAgRm9yIHNvbWUgcmVhc29ucyBub3QKCWFsbCBjb21waWxlcnMgYXJlIGNhcGFibGUgb2YgZGlyZWN0bHkgY29tcHV0aW5nIGEgZmxvYXRpbmcgcG9pbnRlcgoJY29uc3RhbnQgY2FzdGVkIHRvIEZUX0ZpeGVkLCBhbmQgd2lsbCBsaW5rIGEgbWF0aCBsaWJyYXJ5IGluc3RlYWQuCgoyMDAxLTEyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSwgZnRjX2NhY2hlX2xvb2t1cCk6IEZpeAoJdHJhY2luZyBzdHJpbmdzLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCWZ0Y19mYW1pbHlfdGFibGVfZnJlZSwgRlRDX01hbmFnZXJfQ2hlY2spOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IERpdHRvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0xMi0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIFBvc3RTY3JpcHQgaGludGVyIHN1cHBvcnQgdG8gdGhlIENGRiBhbmQgQ0lEIGRyaXZlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9Gb250KTogTmV3IG1lbWJlcgoJYHBzaGludGVyJy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Jbml0X0J1aWxkZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9CdWlsZGVyX0luaXQpOiBUaGlzLgoJQWRkZWQgbmV3IGFyZ3VtZW50IGBoaW50aW5nJy4KCShDRkZfRG9uZV9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9EZWNvZGVyKTogQWRkZWQgbmV3IGFyZ3VtZW50IGBoaW50aW5nJy4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBJbXBsZW1lbnQgdnN0ZW0gc3VwcG9ydC4KCShDRkZfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKGNmZl9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUpOiBVc2UgQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZygpLgoJKGNmZl9hcmd1bWVudF9jb3VudHMpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDRkZfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywgQ0ZGX1NpemVfRG9uZSwgQ0ZGX1NpemVfSW5pdCwKCUNGRl9TaXplX1Jlc2V0LCBDRkZfR2x5cGhTbG90X0RvbmUsIENGRl9HTHlwaFNsb3RfSW5pdCk6IE5ldwoJZnVuY3Rpb25zLgoJKENGRl9Jbml0X0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9GYWNlX0luaXQpOiBUaGlzLgoJQWRkIGhpbnRlciBzdXBwb3J0LgoJKENGRl9Eb25lX0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9GYWNlX0RvbmUpOiBUaGlzLgoJKENGRl9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDRkZfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKENJRF9GYWNlUmVjKTogTmV3IG1lbWJlcgoJYHBzaGludGVyJy4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfTG9hZF9HbHlwaCk6IEFkZCBoaW50ZXIgc3VwcG9ydC4KCSogc3JjL2NpZC9jaWRvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENJRF9HbHlwaFNsb3RfRG9uZSwgQ0lEX0dseXBoU2xvdF9Jbml0LCBDSURfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywKCUNJRF9TaXplX0RvbmUsIENJRF9TaXplX0luaXQsIENJRF9TaXplX1Jlc2V0KTogTmV3IGZ1bmN0aW9ucy4KCShDSURfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDSURfRmFjZV9Eb25lKTogVGhpcy4KCShDSURfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDSURfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50aW5nIHN1cHBvcnQuCgkoQ0lEX0luaXRfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDSURfRHJpdmVyX0luaXQpOiBUaGlzLgoJKENJRF9Eb25lX0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Eb25lKTogVGhpcy4KCSogc3JjL2NpZC9jaWRvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9jaWRyaXZlci5jOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jICh0Ml9oaW50X3N0ZW1zKTogRml4ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9MaWJyYXJ5KTogRml4ZWQgYSBzdHVwaWQgYnVnIHRoYXQKCWNyYXNoZWQgdGhlIGxpYnJhcnkgb24gZXhpdC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBFbmFibGUgZm9udCBtYXRyaXgKCXRyYW5zZm9ybWF0aW9uIG9mIGhpbnRlZCBnbHlwaHMuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBGaXggZXJyb3IgY29uZGl0aW9uLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0RvbmUpOiBGaXhlZCBhIG1lbW9yeSBsZWFrOyB0aGUgc3VicnMKCXJvdXRpbmVzIHdlcmUgbmV2ZXIgcmVsZWFzZWQgd2hlbiBDSUQgZmFjZXMgd2VyZSBkZXN0cm95ZWQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuYzogVXBkYXRlZAoJdG8gbW92ZSB0aGUgZGVmaW5pdGlvbiBvZiBlbmNvZGluZyB0YWJsZXMgYmFjayB3aXRoaW4gImNmZmxvYWQuYyIKCWluc3RlYWQgb2YgbWFraW5nIHRoZW0gcGFydCBvZiBhIHNoYXJlZCBoZWFkZXIgKGNhdXNpbmcgcHJvYmxlbXMgaW4KCSJtdWx0aSIgYnVpbGRzKS4gIFRoaXMgcmV2ZXJ0cyBjaGFuZ2UgMjAwMS0wOC0wOC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZCBmb3IgMi4wLjYgcmVsZWFzZS4KCSogZG9jcy9UT0RPOiBBZGRlZCAic3RlbTMgYW5kIGNvdW50ZXIgaGludHMgc3VwcG9ydCIgdG8gdGhlIFRPRE8KCWxpc3QgZm9yIHRoZSBQb3N0c2NyaXB0IGhpbnRlci4KCSogZG9jcy9CVUdTOiBDbG9zZWQgdGhlIEFVVE9ISU5ULU5PLVNCSVRTIGJ1Zy4KCjIwMDEtMTItMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjYWNoZS5oOiBBZGRlZCBjb21tZW50cyB0byBpbmRpY2F0ZSB0aGF0Cglzb21lIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMKCXRoYXQgbmVlZCB0byBpbXBsZW1lbnQgY3VzdG9tIGNhY2hlIHR5cGVzLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoY3VyX3RvX29yZywgb3JnX3RvX2N1cik6IEZpeGVkIGEgbmFzdHkgYnVnCgl0aGF0IHByZXZlbnRlZCBjb21wb3NpdGVzIGZyb20gbG9hZGluZyBjb3JyZWN0bHksIGR1ZSB0byBtaXNzaW5nCglwYXJlbnRoZXNlcyBhcm91bmQgbWFjcm8gcGFyYW1ldGVycy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IE1ha2UgdGhlICJwb3N0IiBhbmQgIm5hbWUiCgl0YWJsZXMgb3B0aW9uYWwgdG8gbG9hZCBQQ0wgZm9udHMgcHJvcGVybHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKSwgc3JjL2Jhc2UvZnRvYmpzLmMKCShGVF9Mb2FkX0dseXBoKSwgaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9MT0FEX1NCSVRTX09OTFkpOgoJIkZpeGVkIiB0aGUgYnVnIHRoYXQgcHJldmVudGVkIGVtYmVkZGVkIGJpdG1hcHMgdG8gYmUgbG9hZGVkIHdoZW4KCXRoZSBhdXRvLWhpbnRlciBpcyB1c2VkLiAgVGhpcyBhY3R1YWxseSBpcyBhIGhhY2sgYnV0IHdpbGwgYmUgZW5vdWdoCgl1bnRpbCB0aGUgaW50ZXJuYWwgcmUtZGVzaWduIHNjaGVkdWxlZCBmb3IgRnJlZVR5cGUgMi4xLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRml4ZWQgYSBuYXN0eSBvdXRsaW5lCglzaGlmdGluZyBidWcgaW4gdGhlIG1vbm9jaHJvbWUgcmVuZGVyZXIuCgoJKiBSRUFETUU6IFVwZGF0ZWQgdmVyc2lvbiBudW1iZXJzIHRvIDIuMC42LgoKMjAwMS0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCB0ZXN0IGZvciBpbnZhbGlkCglnbHlwaCBoZWFkZXIuCgoyMDAxLTEyLTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRDX05vZGVfVW5yZWYpOiBSZW1vdmVkLiAgSXQgaXMKCWFscmVhZHkgaW4gZnRjbWFuYWcuaC4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBnZmFtJy4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCgkqIGZ0Y19mYW1pbHlfdGFibGVfZnJlZSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmg6IFVwZGF0ZWQuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kZXN0cm95KTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX25vZGVfaW5pdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBjZmFtJy4KCVJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogRGl0dG8uCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogSW5jcmVhc2UgYHZlcnNpb25faW5mbycgdG8gODowOjIuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbWFjL1JFQURNRTogVXBkYXRlZC4KCjIwMDEtMTItMTQgIFNjb3R0IExvbmcgIDxzY290dEBzd2lmdHZpZXcuY29tPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeGluZyBjcmFzaCB3aGVuCglkZWFsaW5nIHdpdGggaW52YWxpZCBmb250cyAoaS5lLiBnbHlwaCBzaXplIDwgMTAgYnl0ZXMpLgoKMjAwMS0xMi0xNCAgU2FtIExhdGluZ2EgIDxzbG91a2VuQGRldm9sdXRpb24uY29tPgoKCSogYnVpbGRzL21hYy9mcmVldHlwZS5tYWtlOiBBIG5ldyBNYWtlZmlsZSB0byBidWlsZCB3aXRoIE1QVyBvbgoJTWFjT1MgY2xhc3NpYy4KCjIwMDEtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpLAoJc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfTG9hZF9HbHlwaCk6IEZpeGVkIGEgc2VyaW91cyBidWcgY29tbW9uIHRvCglhbGwgZm9udCBkcml2ZXJzICh0aGUgYWR2YW5jZSB3aWR0aCB3YXMgbmV2ZXIgaGludGVkIHdoZW4gaXQKCXNob3VsZCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChkZWJ1Z19tZW1fZHVtbXkpIFshRlRfREVCVUdfTUVNT1JZXTogRG9uJ3QKCXVzZSBgZXh0ZXJuJyBrZXl3b3JkLgoKMjAwMS0xMi0xMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzLCBwc2hfYmx1ZXNfc25hcF9zdGVtCglwc2hfZ2xvYmFsc19uZXcpOiBBZGRpbmcgY29ycmVjdCBCbHVlU2NhbGUvQmx1ZVNoaWZ0IHN1cHBvcnQsIHBsdXMKCWZhbWlseSBibHVlcyBwcm9jZXNzaW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZXNSZWMpOiBVcGRhdGVkLgoKCVN0YXJ0ZWQgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBQb3N0c2NyaXB0IGhpbnRlciBpbiB0aGUgQ0ZGIG1vZHVsZS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IGl0LgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmg6IFVwZGF0ZWQuCgoyMDAxLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IFNvbWUgcG9ydGFiaWxpdHkgZml4ZXMuCgoyMDAxLTEyLTExICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcyAoT0JKUyk6IEFkZCBmdGRlYnVnLm9iai4KCjIwMDEtMTItMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0dlbmVyaWNfSGVhZGVyKTogVHlwb3MuCgoyMDAxLTEyLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1vZGlmaWVkIHRoZSBzY3JpcHQgdG8gcHJldmVudAoJcGFzc2luZyAiLUwvdXNyL2xpYiIgdG8gZ2NjLgoKCSogZG9jcy9GVEwuVFhUOiBTaW1wbGUgZml4IChjaGFuZ2UgIkxJQ0VOU0UuVFhUIiB0byAiRlRMLlRYVCIpLgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBOZXcgZmlsZSBmb3IgY2hlY2tpbmcgY29uZmlndXJlIHBhdGhzLgoJV2UgbmVlZCB0byBpbnN0YWxsIGl0IGluICQocHJlZml4KS9zaGFyZS9hY2xvY2FsL2ZyZWV0eXBlMi5tNCBidXQgSQoJZGlkbid0IG1vZGlmeSBidWlsZHMvdW5peC9pbnN0YWxsLm1rIHlldC4KCgkqIElOU1RBTEw6IFVwZGF0ZWQgdGhlIGluc3RydWN0aW9ucyB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHdpdGgKCUphbS4gIFRoZXkgd2VyZSBzaW1wbHkgd3JvbmcuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9Db3MpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0IGNhdXNlZAoJc2xpZ2h0bHkgaW1wcm9wZXIgcmVzdWx0cyBmb3IgYEZUX0NvcycgYW5kIGBGVF9TaW4nIChleGFtcGxlOgoJRlRfU2luKDApID09IC0xISkuCgoyMDAxLTEyLTExICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChHRVRfTG9uZ0xFLCBHRVRfVUxvbmdMRSk6CglGaXhlZCBpbmNvcnJlY3QgYXJndW1lbnQgdHlwZXMuCgoyMDAxLTEyLTEwICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0luaXRfRmFjZSk6IEFsbG93IFhmdCB0byB1c2UgUENGIGZvbnRzCglieSBzZXR0aW5nIHRoZSAiZmFjZS0+bWV0cmljcy5tYXhfYWR2YW5jZSIgY29ycmVjdGx5LgoKMjAwMS0xMi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjbWFwLmgsIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEFkZGVkIG5ldwoJY2hhcm1hcCBjYWNoZS4KCSogc3JjL2NhY2hlL2Z0Y2FjaGUuYzogVXBkYXRlZC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBzL1VOVVNFRC9GVF9VTlVTRUQvLgoKMjAwMS0xMi0wNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCUFkZGVkIHN1cHBvcnQgZm9yIHJlYWRpbmcgLmRmb250IGZpbGVzIG9uIE1hYyBPUyBYLiAgQWxzbyBhZGRlZCBhCgluZXcgcm91dGluZSB3aGljaCBsb29rcyB1cCBhIGdpdmVuIGZvbnQgYnkgbmFtZSBpbiB0aGUgTWFjIE9TIGFuZAoJcmV0dXJucyB0aGUgZGlzayBmaWxlIHdoZXJlIGl0IHJlc2lkZXMuCgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBJbmNsdWRlIDxGaWxlcy5oPiBhbmQgPFRleHRVdGlscy5oPi4KCShpc19kZm9udCk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2VfRnJvbV9kZm9udCk6IE5ldyBmdW5jdGlvbi4KCShGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUpOiBOZXcgZXhwb3J0ZWQgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2UpOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmg6IFVwZGF0ZWQuCgoyMDAxLTEyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvSmFtZmlsZSwgc3JjL2NhY2hlL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMS0xMi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogU21hbGwgdXBkYXRlLgoKMjAwMS0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZS1vcmRlcmVkIGNvZGUgZm9yCglkZWJ1Z2dpbmcgcHVycG9zZXMuCglDb21tZW50IG91dCB1c2Ugb2YgYG9yaWdpbicuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIpOiBGaXhlZCBhIG5hc3R5IGhpZGRlbiBidWcKCXdoZXJlIG91dGxpbmUgc2hpZnRpbmcgd2Fzbid0IGNvcnJlY3RseSB1bmRvbmUgYWZ0ZXIgYml0bWFwCglyYXN0ZXJpemF0aW9uLiAgVGhpcyBjcmVhdGVkIHByb2JsZW1zIHdpdGggY2VydGFpbiBnbHlwaHMgKGxpa2UgJyInCglvZiBjZXJ0YWluIGZvbnRzKSBhbmQgdGhlIGNhY2hlIHN5c3RlbS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IEZpeCB0eXBvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2luaXQpOiBGaXggdHlwby4KCShwczJfaGludHNfYXBwbHkpOiBTbWFsbCBmaXguCgoyMDAxLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2luaXQpLAoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLCBzcmMvY2FjaGUvKjoKCVlldCBhbm90aGVyIG1hc3NpdmUgcmV3cml0ZSBvZiB0aGUgY2FjaGluZyBzdWItc3lzdGVtIGluIG9yZGVyIHRvCglib3RoIGluY3JlYXNlIHBlcmZvcm1hbmNlIGFuZCBhbGxvdyBzaW1wbGVyIGNhY2hlIHN1Yi1jbGFzc2luZy4gIEFzCglhbiBleGFtcGxlLCB0aGUgY29kZSBmb3IgdGhlIGltYWdlIGFuZCBzYml0IGNhY2hlcyBpcyBub3cgbXVjaAoJc2ltcGxlci4KCglJIHN0aWxsIG5lZWQgdG8gdXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGluCgl3d3cvZnJlZXR5cGUyL2RvY3MvY2FjaGUuaHRtbCB0byByZWZsZWN0IHRoZSBuZXcgZGVzaWduIHRob3VnaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0NBQ0hFX0NIQVJNQVBfSCk6IE5ldwoJbWFjcm8uCgkoRlRfQ0FDSEVfSU5URVJOQUxfQ0FDSEVfSCk6IFVwZGF0ZWQuCgoyMDAxLTEyLTA1ICBEYXZpZCBLcmF1c2UgIDxmcmVldHlwZUBkYXZpZGtyYXVzZS5jb20+CgoJKiBkb2NzL2xpY2Vuc2UudHh0OiBzL1ggV2luZG93cy9YIFdpbmRvdyBTeXN0ZW0vLgoKMjAwMS0xMi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBGaXggZGVmaW5pdGlvbiBjb25kaXRpb24gb2YgTUVNX1NldCgpLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoTV9ZKTogQ2hhbmdlIHZhbHVlIHRvIDE5Mi4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX2Rlc3Ryb3kpOiBGaXggcHJpbnRmKCkgcGFyYW1ldGVyLgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKGZ0Y19pbWFnZV9ub2RlX2luaXQsCglmdGNfaW1hZ2Vfbm9kZV9jb21wYXJlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX3dlaWdodCk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlLgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKE1FTV9TZXQpOiBNb3ZlIGRlZmluaXRpb24gZG93biB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IFVzZSBVTlVTRUQoKSB0bwoJYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9wY2YvcGNmcmVhZC5jICh0YWJsZU5hbWVzKTogVXNlIGBjb25zdCcuCgkocGNmX3JlYWRfVE9DKTogQ2hhbmdlIGNvdW50ZXIgbmFtZSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5nLgoJVXNlIGBjb25zdCcuCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfY2xvc2UpOiBSZW1vdmUgcmVkdW5kYW50CglkZWNsYXJhdGlvbi4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogUmVuYW1lIHZhcmlhYmxlcwoJdG8gYXZvaWQgc2hhZG93aW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5oOiBSZW1vdmUgZG91YmxlIGRlY2xhcmF0aW9ucyBvZiBgVDFfU2l6ZV9Jbml0KCknCglhbmQgYFQxX1NpemVfRG9uZSgpJy4KCjIwMDEtMTEtMjAgIEFudG9pbmUgTGVjYSAgPGFudG9pbmVsZWNhQG11bHRpbWFuaWEuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBNU0ROIChQYXNzcG9ydCBTREspLiAgQWxzbyBhZGRlZAoJY29tbWVudHMgYWJvdXQgdGhlIG1lYW5pbmcgb2YgYml0IDU3IG9mIHRoZSBgT1MvMicgdGFibGUKCShUVF9VQ1JfU1VSUk9HQVRFUykgd2hpY2ggKHdpdGggT3BlblR5cGUgdi4xLjMpIG5vdyBtZWFucyAidGhlcmUgaXMKCWEgY2hhcmFjdGVyIGJleW9uZCAweEZGRkYgaW4gdGhpcyBmb250Ii4gIFRoYW5rcyB0byBEZXRsZWYgV/xya25lcgoJPFRldGlTb2Z0QGFwZy5sYWhuLmRlPiBmb3Igbm90aWNpbmcgdGhpcy4KCjIwMDEtMTEtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci97cHNoYWxnbzIuYywgcHNoYWxnbzEuY306IEZpeGVkIHN0dXBpZCBidWcgaW4gc29ydGluZwoJcm91dGluZSB0aGF0IGNyZWF0ZWQgbmFzdHkgYWxpZ25tZW50IGFydGVmYWN0cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYywgdGVzdHMvZ3ZpZXcuYzogRGVidWdnaW5nIHVwZGF0ZXMuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogRGUtYWN0aXZhdGVkIGV4cGVyaW1lbnRhbCBnYW1tYSBzdXBwb3J0LgoJQXBwYXJlbnRseSwgYG9wdGltYWwnIGdhbW1hIHRhYmxlcyBkZXBlbmQgb24gdGhlIG1vbml0b3IgdHlwZSwKCXJlc29sdXRpb24gYW5kIGdlbmVyYWwga2FybWEsIHNvIGl0J3MgYmV0dGVyIHRvIGNvbXB1dGUgdGhlbSBvdXRzaWRlCglvZiB0aGUgcmFzdGVyaXplciBpdHNlbGYuCgkoZ3JheV9jb252ZXJ0X2dseXBoKTogVXNlIGB2b2xhdGlsZScga2V5d29yZC4KCjIwMDEtMTAtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgZXhwZXJpbWVudGFsIGBnYW1tYScgc3VwcG9ydC4gIFRoaXMgcHJvZHVjZXMgc21vb3RoZXIgZ2x5cGhzCglhdCBzbWFsbCBzaXplcyBmb3IgdmVyeSBsaXR0bGUgY29zdC4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19pbml0X2dhbW1hKTogTmV3IGZ1bmN0aW9uLgoJKGdyYXlfcmFzdGVyX25ldyk6IFVzZSBpdC4KCglWYXJpb3VzIGZpeGVzIHRvIHRoZSBhdXRvLWhpbnRlci4gIFRoZXkgbWVyZWx5IGltcHJvdmUgdGhlIG91dHB1dCBvZgoJc2Fucy1zZXJpZiBmb250cy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc3RpbGwgcHJvYmxlbXMgd2l0aCBzZXJpZmVkCglmb250cyBhbmQgY29tcG9zaXRlcyAoYWNjZW50ZWQgY2hhcmFjdGVycykuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQsCglhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBJbXBsZW1lbnQgaXQuCglGaXggdHlwb3MuCgkoYWhfb3V0bGluZV9zYXZlLCBhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMpOiBGaXggdHlwb3MuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IE5ldyBhcmd1bWVudAoJYHZlcnRpY2FsJy4gIEltcGxlbWVudCBpbXByb3ZlbWVudC4KCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogSW1wbGVtZW50IGl0LgoJRml4IHR5cG9zLgoJKGFoX2hpbnRlcl9hbGlnbl9zdHJvbmdfcG9pbnRzLCBhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBGaXgKCXR5cG9zLgoJKGFoX2hpbnRlcl9sb2FkKTogU2V0IGBhaF9kZWJ1Z19oaW50ZXInIGlmIERFQlVHX0hJTlRFUiBpcyBkZWZpbmVkLgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIERFQlVHX0hJTlRFUiBtYWNyby4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaDogRGl0dG8uCgkoQUhfSGludGVyKTogUmVtb3ZlIGBkaXNhYmxlX2hvcnpfZWRnZXMnIGFuZCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJwoJKG1ha2luZyB0aGVtIGdsb2JhbCBhcyBgYWhfZGVidWdfZGlzYWJsZV9ob3J6JyBhbmQKCWBhaF9kZWJ1Z19kaXNhYmxlX3ZlcnQnKS4KCUZpeCB0eXBvcy4KCgkqIHRlc3RzL2d2aWV3LmM6IFVwZGF0ZWQgdGhlIGRlYnVnZ2luZyBnbHlwaCB2aWV3ZXIgdG8gc2hvdyB0aGUKCWhpbnRzIGdlbmVyYXRlZCBieSB0aGUgImF1dG9oaW50IiBtb2R1bGUuCgoyMDAxLTEwLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2h1bmsuYyAoZnRjX2NodW5rX2NhY2hlX2xvb2t1cCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNvbnNpZGVyYWJseSBsb3dlcmVkIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWJzdHJhY3QgY2h1bmsgY2FjaGUuCgoyMDAxLTEwLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLmgsCglzcmMvY2FjaGUvKi5jOiBNYWpvciByZS1kZXNpZ24gb2YgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gcHJvdmlkZQoJYmV0dGVyIHBlcmZvcm1hbmNlIGFzIHdlbGwgYXMgYW4gIkFjcXVpcmUiLyJSZWxlYXNlIiBBUEkuICBTZWVtcyB0bwoJd29yayB3ZWxsIGhlcmUsIGJ1dCBwcm9iYWJseSBuZWVkcyBhIGJpdCBtb3JlIHRlc3RpbmcuCgoyMDAxLTEwLTI2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJKiBidWlsZHMvbWFjL1JFQURNRTogVXBkYXRlZCB0byByZWZsZWN0IG15IHRha2luZyBvdmVyIHRoZSBwcm9qZWN0CglhbmQgdGhhdCBpcyBub3cgYmVpbmcgYWN0aXZlbHkgbWFpbnRhaW5lZC4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHBhcnNlX2ZvbmQpOiBBcHBsaWVkIHBhdGNoZXMgZnJvbSBQYXVsIE1pbGxlcgoJPHBhdWxtQHByb2ZvdW5kZWZmZWN0cy5jb20+IHRvIHN1cHBvcnQgbG9hZGluZyBhIGZhY2Ugb3RoZXIgdGhhbiB0aGUKCWZpcnN0IGZyb20gYSBGT05EIHJlc291cmNlLgoJKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFVwZGF0ZWQuCgoyMDAxLTEwLTI1ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJKiBidWlsZHMvbWFjL2Z0bGliLnByajogVXBkYXRlIG9mIENvZGVXYXJyaW9yIHByb2plY3QgZmlsZSBmb3IgTWFjCglPUyBmb3IgbGF0ZXN0IHZlcnNpb24gKDcpIG9mIENXUHJvIGFuZCBmb3IgcmVjZW50IGNoYW5nZXMgdG8gdGhlIEZUCglzb3VyY2UgdHJlZS4KCjIwMDEtMTAtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFVwZGF0ZWQgY29tbWVudHMgdG8gZXhwbGFpbgoJcHJlY2lzZWx5IGhvdyB0byB1c2UgcHJvamVjdC1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB3aXRob3V0Cgltb2RpZnlpbmcgdGhpcyBmaWxlIG1hbnVhbGx5LgoKCShGVF9DT05GSUdfRk9SQ0VfSU5UNjQpOiBEZWZpbmUuCgoJKEZUX0RFQlVHX01FTU9SWSk6IE5ldyBtYWNyby4KCjIwMDEtMTAtMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5KTogQWRkZWQgYSBtaXNzaW5nIGB7Jy4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnRkYmdtZW0uYzoKCUltcHJvdmVtZW50cyB0byB0aGUgbWVtb3J5IGRlYnVnZ2VyIHRvIHJlcG9ydCBtb3JlIGluZm9ybWF0aW9uIGluCgljYXNlIG9mIGVycm9ycy4gIEFsc28sIHNvbWUgYWxsb2NhdGlvbnMgdGhhdCBvY2N1cnJlZCB0aHJvdWdoIFJFQUxMT0MKCWNvdWxkbid0IGJlIHByZXZpb3VzbHkgY2F0Y2hlZCBjb3JyZWN0bHkuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMsCglhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpLCBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKGZ0X2JsYWNrX25ldyksCglzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc3BhbiwgZ3JheV9yYXN0ZXJfbmV3KTogUmVwbGFjZWQKCWxpYmVyYWwgdXNlcyBvZiBtZW1zZXQoKSBieSB0aGUgTUVNX1NldCgpIG1hY3JvLgoKMjAwMS0xMC0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChVcGRhdGUpOiBSZW1vdmVkIHRvIGJlIGlubGluZWQgaW4gLi4uCgkoU29ydCk6IFVwZGF0ZWQuCgoyMDAxLTEwLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvdm1zL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCWJ1aWxkcy9hbWlnYS9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglzcmMvYmFzZS9mdGRiZ21lbS5jOiBVcGRhdGVkIHRoZSBtZW1vcnkgZGVidWdnZXIgYW5kCglwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgYGZ0c3lzdGVtJyBpbiBvcmRlciB0byBiZSBhYmxlCgl0byBkZWJ1ZyBtZW1vcnkgYWxsb2NhdGlvbnMgb24gVW5peCwgVk1TIGFuZCBBbWlnYSB0b28hCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX3JlY29yZF9tYXNrKTogUmVtb3ZlZAoJc29tZSBib2d1cyB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnRkYmdtZW0uYzoKCU1vZGlmaWVkIHRoZSBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIgdG8gcmVwb3J0IHRoZSBsb2NhdGlvbiAoc291cmNlCglmaWxlIG5hbWUgKyBsaW5lIG51bWJlcikgd2hlcmUgbGVha2VkIG1lbW9yeSBibG9ja3MgYXJlIGFsbG9jYXRlZCBpbgoJdGhlIHNvdXJjZSBmaWxlLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYzogTmV3IGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlci4gIFlvdSBtdXN0CglkZWZpbmUgdGhlIEZUX0RFQlVHX01FTU9SWSBtYWNybyBpbiAiZnRvcHRpb24uaCIgdG8gZW5hYmxlIGl0LiAgSXQKCXdpbGwgcmVjb3JkIGV2ZXJ5IG1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYW5kIHJlcG9ydCBzaW1wbGUgZXJyb3JzCglsaWtlIG1lbW9yeSBsZWFrcyBhbmQgZG91YmxlIGRlbGV0ZXMuCgoJKiBzcmMvYmFzZS9KYW1maWxlOiBJbmNsdWRlIGZ0ZGJnbWVtLgoJKiBzcmMvYmFzZS9ydWxlcy5tazogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0YmFzZS5jOiBJbmNsdWRlIGZ0ZGJnbWVtLmMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBBZGRlZCB0aGUgRlRfREVCVUdfTUVNT1JZCgltYWNybyBkZWZpbml0aW9uLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpOiBNb2RpZmllZCB0aGUKCWJhc2UgY29tcG9uZW50IHRvIHVzZSB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHdoZW4gdGhlIG1hY3JvCglGVF9ERUJVR19NRU1PUlkgaXMgZGVmaW5lZC4KCjIwMDEtMTAtMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0RvbmVfRm9udCk6IEZyZWUgc3ViZm9udHMgYXJyYXkgb25seSBpZgoJd2UgYXJlIHdvcmtpbmcgd2l0aCBhIENJRCBrZXllZCBDRkYgZm9udC4gIE90aGVyd2lzZSwgYSB2YXJpYWJsZQoJdGhhdCB3YXMgbmV2ZXIgYWxsb2NhdGVkIG1lbW9yeSBtaWdodCBmcmVlZC4gIFRoaXMgaXMgYSBjb3JyZWN0aW9uCgl0byB0aGUgcHJldmlvdXMgcGF0Y2ggZm9yIGZyZWVpbmcgc3ViZm9udHMuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHRoZSBzdWJmb250cyBhcnJheSB0bwoJYXZvaWQgYSBtZW1vcnkgbGVhay4KCjIwMDEtMTAtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzIGluIHBlZGFudGljIG1vZGVzCgkoaW4gbXVsdGktb2JqZWN0IGNvbXBpbGF0aW9uIG1vZGUsIG1haW5seSkuCgoyMDAxLTEwLTIwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IEFkZCBhIHRlc3QgdG8gbWFrZSBzdXJlCgl0aGF0IGN1c3RvbSBlbmNvZGluZ3MgKGkuZS4sIG5laXRoZXIgU3RhbmRhcmRFbmNvZGluZyBub3IKCUV4cGVydEVuY29kaW5nKSBhcmUgbm90IGxvYWRlZCB0d2ljZSB3aGVuIHRoZSBUeXBlIDEgZm9udCBpcwoJc3ludGhldGljLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X25hbWUsIHBhcnNlX3N1YnJzKTogQWRkZWQgYSB0ZXN0Cglmb3Igd2hlbiBsb2FkaW5nIHN5bnRoZXRpYyBmb250cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZm9udCBuYW1lCglhbmQgc3Vicm90dWluZXMgYXJlIG5vdCBsb2FkZWQgdHdpY2UuICBUaGlzIGlzIHRvIHJlbW92ZSBhIG1lbW9yeQoJbGVhayB0aGF0IG9jY3VycmVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsIG1lbW9yeSBibG9ja3MgZm9yIHRoZXNlCglvYmplY3RzIHdlcmUgbm90IGRlYWxsb2NhdGVkIHdoZW4gdGhlIG9iamVjdHMgd2VyZSBwYXJzZWQgdGhlCglzZWNvbmQgdGltZS4KCjIwMDEtMTAtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYzogR2V0dGluZyByaWQgb2YKCWNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BzaGludGVyL21vZHVsZS5taywgc3JjL3BzaGludGVyL3J1bGVzLm1rOiBBZGRpbmcgY29udHJvbAoJZmlsZXMgdG8gYnVpbGQgdGhlIFBvc3RTY3JpcHQgaGludGVyIHdpdGggdGhlICJvbGQiIGJ1aWxkIHN5c3RlbS4KCjIwMDEtMTAtMTkgIEphY29iIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBkZXNjcmlwLm1tcywgc3JjL3BzaGludGVyL2Rlc2NyaXAubW1zOiBVcGRhdGVzIHRvIHRoZSBWTVMgYnVpbGQKCWZpbGVzLgoKMjAwMS0xMC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaCwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFJld3JvdGUgdGhlCgkiZ2xuYW1lcy5weSIgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlICJwc3RhYmxlcy5oIiBoZWFkZXIgZmlsZS4KCVRoZSBvbGQgb25lIGNvbnRhaW5lZCBhIHNlcmlvdXMgYnVnIHRoYXQgbWFkZSBGcmVlVHlwZSByZXR1cm4KCWluY29ycmVjdCBnbHlwaCBuYW1lcyBmb3IgY2VydGFpbiBnbHlwaHMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBDaGFuZ2luZyBjb21wdXRhdGlvbiBvZgoJcGl4ZWwgc2l6ZSBmcm9tIGNoYXJhY3RlciBzaXplIHRvIHVzZSByb3VuZGluZy4gIFRoaXMgaXMgYW4KCWV4cGVyaW1lbnQgdG8gc2VlIHdoZXRoZXIgdGhpcyBnaXZlcyB2YWx1ZXMgc2ltaWxhciB0byBXaW5kb3dzIGZvcgoJc2NhbGVkIGFzY2VudC9kZXNjZW50L2V0Yy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXY2NGJ5MzIpOiBDaGFuZ2VkIHRoZSBpbXBsZW1lbnRhdGlvbgoJc2xpZ2h0bHkgc2luY2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pcy1jb21waWxlZCBvbiBNYWMgbWFjaGluZXMKCXVzaW5nIHRoZSBNUFcgQyBjb21waWxlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZWFsbG9jKTogV2hlbiBhIG1lbW9yeSBibG9jayB3YXMgZ3Jvd24KCXRocm91Z2ggRlRfUmVhbGxvYygpLCB0aGUgbmV3IGJ5dGVzIHdlcmUgbm90IHNldCB0byAwLCB3aGljaCBjcmVhdGVkCglzb21lIHN0cmFuZ2UgYnVncyBpbiB0aGUgUG9zdFNjcmlwdCBoaW50ZXIuCgkoZGVzdHJveV9mYWNlKTogRG9uJ3QgZGVhbGxvY2F0ZSB1bmNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Db21wdXRlX01heF9BZHZhbmNlLCBDSURfTG9hZF9HbHlwaCk6CglBZGRpbmcgc3VwcG9ydCB0byBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFsLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9wc2hpbnRlci9KYW1maWxlLAoJc3JjL3BzaGludGVyL3BzaGFsZ28uaCwgc3JjL3BzaGludGVyL3BzaGFsZ28xLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jLAoJc3JjL3BzaGludGVyL3BzaG1vZC5jLCBzcmMvcHNoaW50ZXIvcHNobW9kLmgsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuaDogQWRkaW5nIG5ldyBQb3N0U2NyaXB0IGhpbnRlciBtb2R1bGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgsIHNyYy9wc2F1eC9wc29ianMuYywKCXNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmgsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoJc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MW9ianMuaDogVXBkYXRlcyB0byB1c2UgdGhlIG5ldyBQb3N0U2NyaXB0IGhpbnRlci4KCgkqIHRlc3RzL0phbWZpbGUsIHRlc3RzL2d2aWV3LmM6IEFkZGluZyBhIG5ldyBnbHlwaCBoaW50aW5nCgl2aWV3ZXIvZGVidWdnZXIgdG8gdGhlIHNvdXJjZSB0cmVlLiAgTm90ZSB0aGF0IHlvdSB3aWxsIF9ub3RfIGJlCglhYmxlIHRvIGNvbXBpbGUgaXQgc2luY2UgaXQgZGVwZW5kcyBvbiBhbiB1bmF2YWlsYWJsZSBncmFwaGljcwoJbGlicmFyeSBuYW1lZCAiTmlydmFuYSIgdG8gcmVuZGVyIHZlY3RvciBpbWFnZXMuCgoyMDAxLTEwLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEFkZGluZyBhIG5ldyBmdW5jdGlvbiBuYW1lZAoJJ0ZUX0dldF9Qb3N0c2NyaXB0X05hbWUnIHRvIHJldHJpZXZlIHRoZSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbgoJZm9udC4gIFNob3VsZCB3b3JrIHdpdGggYWxsIGZvcm1hdHMgZXhjZXB0IHB1cmUgQ0ZGL0NFRiBmb250cyAodGhpcwoJd2lsbCBiZSBhZGRlZCBzb29uKS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKENJRF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShTRk5UX0dldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9wc19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKEdldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC41IHJlbGVhc2UuCgoyMDAxLTEwLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgYSBidWcgaW4gYGdsbmFtZXMucHknIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZ2VuZXJhdGluZwoJY29ycmVjdCBnbHlwaCBuYW1lcyB0YWJsZXMuICBUaGlzIHJlc3VsdGVkIGluIHRoZSB1bmF2YWlsYWJpbGl0eSBvZgoJY2VydGFpbiBnbHlwaHMgbGlrZSBgQ2FjdXRlJywgYGNhY3V0ZScgYW5kIGBsc2xhc2gnIGluIFVuaWNvZGUKCWNoYXJtYXBzLCBldmVuIGlmIHRoZXNlIHdlcmUgcHJlc2VudCBpbiB0aGUgZm9udCAoY2F1c2luZyBwcm9ibGVtcwoJZm9yIFBvbGlzaCB1c2VycykuCgoJKiBzcmMvdG9vbHMvZ2xuYW1lcy5weSAobWFjX3N0YW5kYXJkX25hbWVzKTogRml4ZWQuCgkodDFfc3RhbmRhcmRfc3RyaW5ncyk6IFNvbWUgZml4ZXMgYW5kIHJlbmFtZWQgdG8gLi4uCgkoc2lkX3N0YW5kYXJkX25hbWVzKTogVGhpcy4KCSh0MV9leHBlcnRfZW5jb2RpbmcpOiBGaXhlZC4KCSh0aGVfYWRvYmVfZ2x5cGhfbGlzdCk6IFJlbmFtZWQgdG8gLi4uCgkoYWRvYmVfZ2x5cGhfbmFtZXMpOiBUaGlzLgoJKHRoZV9hZG9iZV9nbHlwaHMpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX3ZhbHVlcyk6IFRoaXMuCgkoZHVtcF9tYWNfaW5kaWNlcywgZHVtcF9nbHlwaF9saXN0LCBkdW1wX3VuaWNvZGVfdmFsdWVzLCBtYWluKToKCVVwZGF0ZWQuCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU19Vbmljb2RlX1ZhbHVlKTogRml4IG9mZnNldC4KCUZpeCByZXR1cm4gdmFsdWUuCglVc2UgYHNpZF9zdGFuZGFyZF90YWJsZScgYW5kIGBwc19uYW1lc190b191bmljb2RlJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJyBhbmQgYG5hbWVzX3RvX3VuaWNvZGUnLgoJKFBTX01hY2ludG9zaF9OYW1lKTogVXNlIGBwc19nbHlwaF9uYW1lcycgaW5zdGVhZCBvZgoJYHN0YW5kYXJkX2dseXBoX25hbWVzJy4KCShQU19TdGFuZGFyZF9TdHJpbmdzKTogVXNlIGBzaWRfc3RhbmRhcmRfbmFtZXMnIGluc3RlYWQgb2YKCWB0MV9zdGFuZGFyZF9nbHlwaHMnLgoKCSogZG9jL0JVR1MsIGRvYy9UT0RPOiBOZXcgZG9jdW1lbnRzLgoKMjAwMS0xMC0wNyAgUmljaGFyZCBCYXJiZXIgIDxyaWNoQHNvbHV0aW9udWsuY29tPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydV9Mb29rdXBfTm9kZSk6IEZpeGVkIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb3JyZWN0IExSVSBiZWhhdmlvdXIuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJc2V0am1wKCkgYW5kIGxvbmdqbXAoKSBhcmUgbm93IHVzZWQgZm9yIHJvbGxiYWNrIChpLmUuIHdoZW4gbWVtb3J5Cglwb29sIG92ZXJmbG93IG9jY3VycykuCgoJRnVuY3Rpb24gbmFtZXMgYXJlIG5vdyBhbGwgdW5pZm9ybWx5IHByZWZpeGVkIHdpdGggYGdyYXlfJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBJbmNsdWRlIDxzZXRqbXAuaD4uCgkoRXJyUmFzdGVyX01lbW9yeU92ZXJmbG93KTogTmV3IG1hY3JvLgoJKFRBcmVhKTogTmV3IHR5cGUgdG8gc3RvcmUgYXJlYSB2YWx1ZXMgaW4gZWFjaCBjZWxsICh1c2luZyBgaW50JyB3YXMKCXRvbyBzbWFsbCBvbiAxNi1iaXQgc3lzdGVtcykuICA8bGltaXRzLmg+IGlzIGluY2x1ZGVkIHRvIHByb3Blcmx5CglnZXQgdGhlIG5lZWRlZCBkYXRhIHR5cGUuCgkoVENlbGwsIFRSYXN0ZXIpOiBVc2UgaXQuCgkoVFJhc3Rlcik6IE5ldyBlbGVtZW50IGBqdW1wX2J1ZmZlcicuCgkoZ3JheV9jb21wdXRlX2Nib3gpOiBVc2UgYFJBU19BUkcnIGFzIHRoZSBvbmx5IHBhcmFtZXRlciBhbmQgZ2V0Cglgb3V0bGluZScgZnJvbSBpdC4KCShncmF5X3JlY29yZF9jZWxsKTogVXNlIGxvbmdqbXAoKS4KCShncmF5X3NldF9jZWxsKTogVXNlIGdyYXlfcmVjb3JkX2NlbGwoKSBmb3IgZXJyb3IgaGFuZGxpbmcuCgkoZ3JheV9yZW5kZXJfbGluZSwgZ3JheV9yZW5kZXJfY29uaWMsIGdyYXlfcmVuZGVyX2N1YmljKTogU2ltcGxpZnkuCgkoZ3JheV9jb252ZXJ0X2dseXBoX2lubmVyKTogTmV3IGZ1bmN0aW9uLCB1c2luZyBzZXRqbXAoKS4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgaXQuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUHJvdmlkZSBhIHB1YmxpYyBBUEkgdG8gbWFuYWdlIG11bHRpcGxlIHNpemUgb2JqZWN0cyBmb3IgYSBnaXZlbgoJRlRfRmFjZSBpbiB0aGUgbmV3IGhlYWRlciBmaWxlIGBmdHNpemVzLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHNpemVzLmg6IE5ldyBoZWFkZXIgZmlsZSwKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogVXNlIGl0LgoJUmVtb3ZlIGRlY2xhcmF0aW9ucyBvZiBGVF9OZXdfU2l6ZSBhbmQgRlRfRG9uZV9TaXplIChtb3ZlZCB0bwoJZnRzaXplcy5oKS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU0laRVNfSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0FjdGl2YXRlX1NpemUpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jOiBJbmNsdWRlIGZ0c2l6ZXMuaC4KCShmdGNfbWFuYWdlcl9pbml0X3NpemUsIGZ0Y19tYW5hZ2VyX2ZsdXNoX3NpemUpOiBVc2UKCUZUX0FjdGl2YXRlX1NpemUuCgoyMDAxLTA5LTIwICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhLyo6IEFkZGVkIHBvcnQgdG8gQW1pZ2Egd2l0aCB0aGUgU0FTL0MgY29tcGlsZXIuCgoyMDAxLTA5LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX0RvbmVfQUZNKTogRnJlZSBgYWZtJy4KCjIwMDEtMDktMTAgIFlhbyBaaGFuZyAgPHl6aGFuZ0BzaGFyZW1lZGlhLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX2luZGV4Mik6IEhhbmRsZSBjb2RlIHZhbHVlcyB3aXRoCgloaS1ieXRlID09IDAgY29ycmVjdGx5LgoKMjAwMS0wOS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2xpbmstc3RkLm1rICgkKFBST0pFQ1RfTElCUkFSWSkpOiBGaXggdHlwby4KCjIwMDEtMDgtMzAgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQSBuZXcgd2F5IHRvIGNvbXB1dGUgdGhlCgl1bml0cyBwZXIgRU0gd2l0aCBncmVhdGVyIGFjY3VyYWN5IChpbXBvcnRhbnQgZm9yIGVtYmVkZGVkIFQxIGZvbnRzCglpbiBQREYgZG9jdW1lbnRzIHRoYXQgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIFRydWVUeXBlCglvbmVzKS4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBOb3cgc3VwcG9ydHMgIisiIGluIGZvbnQgbmFtZXM7Cgl0aGlzIGlzIHVzZWQgaW4gZW1iZWRkZWQgZm9udHMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCk6IEZpeGVkIGEgcmVhbGxvY2F0aW9uIGJ1ZyB0aGF0CglnZW5lcmF0ZWQgYSBkYW5nbGluZyBwb2ludGVyIHJlZmVyZW5jZS4KCjIwMDEtMDgtMzAgIEFudGhvbnkgRmVpayAgPGFmZWlja0Bob3RtYWlsLmNvbT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9SZWFkX0FmbSk6IE5vdyBjb3JyZWN0bHkgc2V0cyB0aGUgZmxhZwoJRlRfRkFDRV9GTEFHX0tFUk5JTkcgd2hlbiBhcHByb3ByaWF0ZSBmb3IgVHlwZTEgKyBBRk0gZmlsZXMuCgoyMDAxLTA4LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9DTWFwKTogRml4IGZyYW1lIGxlbmd0aCBvZgoJYGNtYXBfcmVjX2ZpZWxkcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTXToKCVVuZGVmaW5lIEZUX0VSUl9CQVNFIGJlZm9yZSBkZWZpbmluZyBhZ2Fpbi4KCjIwMDEtMDgtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5oOiBGaXggcHJvdG90eXBlIG9mIFRUX01vdmVfRnVuYy4KCjIwMDEtMDgtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9kb3MvZG9zLWRlZi5tayAoTk9fT1VUUFVUKTogRG9uJ3QgdXNlIGAmPicgYnV0IGA+Jy4KCjIwMDEtMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IENoYW5nZWQgdGhlIGRlZmF1bHQgc2V0dGluZwoJZm9yIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgdG8gdW5kZWZpbmVkLCBzaW5jZSBpdCBicmVha3MKCXNvdXJjZSBjb21wYXRpYmlsaXR5IGluIGEgZmV3IGNhc2VzLiAgVXBkYXRlZCB0aGUgY29tbWVudCB0byBleHBsYWluCgl0aGF0IHRvby4KCjIwMDEtMDgtMTcgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogRml4ZWQgc2VyaW91cyB0eXBvLgoKMjAwMS0wOC0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIE9wZW5UeXBlIDEuMy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9DTWFwMCwgVFRfQ01hcDIsIFRUX0NNYXA0LAoJVFRfQ01hcDYpOiBBZGRpbmcgZmllbGQgYGxhbmd1YWdlJy4KCShUVF9DTWFwVGFibGUpOiBSZW1vdmluZyBmaWVsZCBgbGFuZ3VhZ2UnLgoJVHlwZSBvZiBgbGVuZ3RoJyBmaWVsZCBjaGFuZ2VkIHRvIEZUX1VMb25nLgoJQWRkaW5nIGZpZWxkcyBmb3IgY21hcHMgZm9ybWF0IDgsIDEwLCBhbmQgMTIuCgkoVFRfQ01hcEdyb3VwKTogTmV3IGF1eGlsaWFyeSBzdHJ1Y3R1cmUuCgkoVFRfQ01hcDhfMTIsIFRUX0NNYXAxMCk6IE5ldyBzdHJ1Y3R1cmVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXIsIFRUX1ZlcnRIZWFkZXIpOgoJUmVtb3ZlZCBsYXN0IGVsZW1lbnQgb2YgYFJlc2VydmVkJyBhcnJheS4KCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oIChUVF9QTEFURk9STV9DVVNUT00sIFRUX01TX0lEX1VDU180LAoJVFRfTkFNRV9JRF9DSURfRklOREZPTlRfTkFNRSk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ2hhck1hcF9Mb2FkKTogVXBkYXRlZCBsb2FkaW5nIG9mIGBsYW5ndWFnZScKCWZpZWxkIHRvIHRoZSBuZXcgc3RydWN0dXJlcy4KCUZpeGVkIGZyZWVpbmcgb2YgYXJyYXlzIGluIGNhc2Ugb2YgdW5zdWNjZXNzZnVsIGxvYWRzLgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMiBjbWFwcy4KCShUVF9DaGFyTWFwX0ZyZWUpOiBBZGRlZCBzdXBwb3J0IGZvciBmcmVlaW5nIGZvcm1hdCA4LCAxMCwgYW5kIDEyCgljbWFwcy4KCShjb2RlX3RvX2luZGV4NCk6IFNtYWxsIGltcHJvdmVtZW50LgoJKGNvZGVfdG9faW5kZXg2KTogRGl0dG8uCgkoY29kZV90b19pbmRleDhfMTIsIGNvZGVfdG9faW5kZXgxMCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01ldHJpY3NfSGVhZGVyKTogVXBkYXRlZCB0byBuZXcKCXN0cnVjdHVyZS4KCShUVF9Mb2FkX0NNYXApOiBEaXR0by4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9lbmNvZGluZ3MpOiBBZGQgTVMgVUNTNCB0YWJsZSAoYmVmb3JlIE1TCglVbmljb2RlKS4KCjIwMDEtMDgtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0wOC0wOSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogUmVuYW1lZCB0bwoJY2ZmX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCgkoY2ZmX2dldF9nbHlwaF9pbmRleCk6IE1pbm9yIGRvY3VtZW50YXRpb24gY2hhbmdlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uIHVzZWQgaW4KCUdldF9JbnRlcmZhY2UgYXMgdGhlIGZ1bmN0aW9uIHJldHVybmVkIHdoZW4gdGhlICJuYW1lX2luZGV4IgoJZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCShnZXRfdDFfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8gdDFfZ2V0X2dseXBoX25hbWUgZm9yIGNvbnNpc3RlbmN5LgoKMjAwMS0wOC0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBSZW1vdmVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cyB0byBjZmZsb2FkLmguCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkZWQgZGVmaW5pdGlvbnMgb2YgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQsCgljZmZfZXhwZXJ0X2NoYXJzZXQsIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldCwgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLAoJYW5kIGNmZl9leHBlcnRfZW5jb2RpbmcgYXJyYXlzLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBOZXcgZnVuY3Rpb24sIHJldHVybmVkCgl3aGVuIGBjZmZfZ2V0X2ludGVyZmFjZScgaXMgY2FsbGVkIHdpdGggYSByZXF1ZXN0IGZvciB0aGUKCSJuYW1lX2luZGV4IiBmdW5jdGlvbi4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBNb2RpZmllZCBzbyB0aGF0IGl0IHJldHVybnMgdGhlIGZ1bmN0aW9uCglgY2ZmX2dldF9uYW1lX2luZGV4JyB3aGVuIHRoZSAibmFtZV9pbmRleCIgZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OYW1lX0luZGV4KTogTmV3IGZ1bmN0aW9uLCB1c2VkIHRvCglyZXR1cm4gYSBnbHlwaCBpbmRleCBmb3IgYSBnaXZlbiBnbHlwaCBuYW1lIG9ubHkgaWYgdGhlIGRyaXZlcgoJc3VwcG9ydHMgZ2x5cGggbmFtZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9OYW1lX0luZGV4X1JlcXVlc3Rlcik6CglOZXcgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGRlZmludGlvbiB1c2VkIGluIHRoZSBmdW5jdGlvbgoJRlRfR2V0X05hbWVfSW5kZXguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dldF9OYW1lX0luZGV4KTogQWRkZWQKCWRvY3VtZW50YXRpb24gYW5kIHByb3RvdHlwZS4KCjIwMDEtMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vKjogUmVtb3ZlZC4gIFVzZSB0aGUgdW5peCBzdHVmZiBpbnN0ZWFkLgoKMjAwMS0wNy0yNiAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oIChGVF9DQUxMQkFDS19ERUYpOiBVcGRhdGVkIHRvIGNoYW5nZSBkYXRlZAoJMjAwMS0wNi0yNy4KCjIwMDEtMDctMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfVGFibGUpOiBVc2UgRlRfT2Zmc2V0IGZvcgoJYGN1cnNvcicgYW5kIGBjYXBhY2l0eScuCgkqIHNyYy9wc2F1eC9wc29iamMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IFVzZSBGVF9Mb25nIGZvciBzZWNvbmQKCXBhcmFtZXRlci4KCShQU19UYWJsZV9BZGQpOiBVc2UgRlRfT2Zmc2V0IGZvciBgbmV3X3NpemUnLgoKCUFkZCBzdXBwb3J0IGZvciB2ZXJzaW9uIDAuNSBtYXhwIHRhYmxlcy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01heFByb2ZpbGUpOiBJbXBsZW1lbnQgaXQuCgkoVFRfTG9hZF9PUzIpOiBJbml0aWFsaXplIHNvbWUgdmFsdWVzLgoKMjAwMS0wNy0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIGZ0Y2FsYy5oIHVuY29uZGl0aW9uYWxseS4KCjIwMDEtMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGludGVycC5jLCBzcmMvcGNmL3BjZnJlYWQ6CglSZW1vdmVkIHBlZGFudGljIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIGJ5dGVjb2RlIGludGVycHJldGVyIGlzCgljb21waWxlZCBpbi4KCjIwMDEtMDctMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYGVkZ2VzJy4KCShhaF9oaW50ZXJfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGBvbGRfd2lkdGgnIGFuZAoJYG5ld193aWR0aCcuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IFVzZSBgVScgZm9yIGNvbnN0YW50IChhZ2FpbikuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogRGl0dG8uCgoyMDAxLTA2LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ludGVybmFsL2Z0c3RyZWFtLmg6IE1vZGlmaWVkIHRoZSBkZWZpbml0aW9ucwoJb2YgdGhlIEZUX0dFVF9YWFhYIGFuZCBORVhUX1hYWFggbWFjcm9zIGZvciAxNi1iaXQgY29ycmVjdG5lc3MuCgoyMDAxLTA2LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL2NpZC9jaWRsb2FkLmggKGNpZF9kZWNyeXB0KTogVXNlIEZUX09mZnNldAoJaW5zdGVhZCBvZiBGVF9JbnQgYXMgdHlwZSBmb3IgYGxlbmd0aCcgcGFyYW1ldGVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTQXV4X0ludGVyZmFjZSk6IFVwZGF0ZWQuCgoyMDAxLTA2LTI3ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvcHNvYmpzLmggKFQxX0RlY3J5cHQpOiBVc2UgRlRfT2Zmc2V0CglpbnN0ZWFkIG9mIEZUX0ludCBhcyB0eXBlIGZvciBgbGVuZ3RoJyBwYXJhbWV0ZXIuCgoKCSogVmVyc2lvbiAyLjAuNCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA2LTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjb25maWcuaCwgc3JjLyovKi5jOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIGFuZAoJdXNlIG9mIHRoZSBGVF9DQUxMQkFDS19ERUYgbWFjcm8gaW4gb3JkZXIgdG8gc3VwcG9ydCAxNi1iaXQKCWNvbXBpbGVycy4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIG9mIHRoZQoJRlRfQ0FMTEJBQ0tfREVGIG1hY3JvLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfS2Vybik6IFRoZSBrZXJuIHRhYmxlIGxvYWRlciBub3cgZW5zdXJlcwoJdGhhdCB0aGUga2VybmluZyB0YWJsZSBpcyBjb3JyZWN0bHkgc29ydGVkIChzb21lIHByb2JsZW0gZm9udHMgZG9uJ3QKCWhhdmUgYSBjb3JyZWN0IGtlcm4gdGFibGUpLgoKMjAwMS0wNi0yNiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfR0VUX09GRjNfTEUpOiBGaXggdHlwby4KCjIwMDEtMDYtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChmdF9kaXY2NGJ5MzIpOiBGaXhlZCB0aGUgc291cmNlIHRvIHdvcmsKCWNvcnJlY3RseSBvbiAxNi1iaXQgc3lzdGVtcy4KCjIwMDEtMDYtMjMgIEFudGhvbnkgRm9rICA8Zm9rQGRlYmlhbi5vcmc+CgoJKiBkZWJpYW4vKjogQWRkZWQgRGViaWFuIHBhY2thZ2UgYnVpbGQgZGlyZWN0b3J5IGZvciAyLjAuNC4KCjIwMDEtMDYtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogQWRkZWQgcGF0ZW50cyBkaXNjbGFpbWVyLiAgVGhpcyBvbmUgd2FzIG1pc3NpbmchCgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvdG9kbzogVXBkYXRlZCBmb3IgdGhlIHVwY29taW5nIDIuMC40IHJlbGVhc2UuCgoyMDAxLTA2LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBBZGQgdHdvIG1vcmUgYEwncyB0bwoJY29uc3RhbnRzLgoJQWRkIG1pc3Npbmcgc2VtaWNvbG9ucy4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tazogRG8gc2ltaWxhciBjaGFuZ2UgYXMgZm9yCglidWlsZHMvdW5peC9kZXRlY3QubWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgdmVyc2lvbiB0byBtYWtlIGl0CgllYXNpZXIgdG8gcmVkZWZpbmUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEaXR0by4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IEFkZCBjYXN0LgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLCBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sOgoJVXBkYXRlZCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IChmb3IgdGhlIDIuMC40IHJlbGVhc2UpLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGRlZCBydWxlIGZvciBBSVggZGV0ZWN0aW9uICh3aGljaCB1c2VzCgkvdXNyL3NiaW4vaW5pdCBpbnN0ZWFkIG9mIC9zYmluL2luaXQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oLCBzcmMvKi8qZXJyKi5oOiBVcGRhdGVkIHNvbWUgb2YgdGhlCgllcnJvciBtYWNyb3MgdG8gc2ltcGxpZnkgaGFuZGxpbmcgb2YgbmV3IGVycm9yIHNjaGVtZS4KCjIwMDEtMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9FUlJPUl9NT0RVTEUpOiBOZXcgbWFjcm8uCgoyMDAxLTA2LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUmVtb3ZpbmcgX2xvdHNfIG9mIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIG1vc3QgcGVkYW50aWMgd2FybmluZwoJbGV2ZWxzIG9mIFZpc3VhbCBDKysgYW5kIEJvcmxhbmQgQysrIGFyZSB1c2VkLiAgVG9vIG1hbnkgZmlsZXMgdG8gYmUKCWxpc3RlZCBoZXJlLCBidXQgRlQyIG5vdyBjb21waWxlcyB3aXRob3V0IHdhcm5pbmdzIHdpdGggVkMrKyBhbmQgdGhlCgkiL1c0IiB3YXJuaW5nIGxldmVsIChsaW50LXN0eWxlKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTmV3X01lbW9yeV9GYWNlKTogVXBkYXRlZAoJZG9jdW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmggKEZUX0JPT0wpOiBOZXcgbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBZGQgI3ByYWdtYSBmb3IgVmlzdWFsIEMrKwoJdG8gc3VwcHJlc3Mgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9HRVRfU0hPUlRfe0JFLExFfSwKCUZUX0dFVF9PRkYzX3tCRSxMRX0sIEZUX0dFVF9MT05HX3tCRSxMRX0pOiBOZXcgbWFjcm9zLgoJKE5FWFRfKik6IFVzZSB0aGVtLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9ERUJVR19ILgoJKEZUX05ld19NZW1vcnlfRmFjZSk6IEFkZCBgY29uc3QnIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1pbm9yIGNsZWFudXBzIHRvIHJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoRlRDX01BWF9CWVRFU19ERUZBVUxUKTogVXNlCglgTCcgZm9yIGNvbnN0YW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9SRU5ERVJfUE9PTF9TSVpFKTogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYpOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9HZXRfQ0JveCk6IFJlbW92ZSBgZXJyb3InIHZhcmlhYmxlLgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChmdF90cmlnX2FyY3Rhbl90YWJsZSk6IFVzZSBgTCcgZm9yIGNvbnN0YW50cy4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfU2l6ZSk6IEZpeCByZXR1cm4gdmFsdWUuCgkoRlRfU2V0X0NoYXJfU2l6ZSwgRlRfU2V0X1BpeGVsX1NpemVzLCBGVF9HZXRfS2VybmluZyk6IFJlbW92ZQoJdW51c2VkIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMsCglhaF9oaW50ZXJfYWxpZ25fZWRnZV9wb2ludHMpOiBSZW1vdmUgdW51c2VkIGBiZWZvcmUnIGFuZCBgYWZ0ZXInCgl2YXJpYWJsZXMuCgkoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgZWRnZV9saW1pdCcgdmFyaWFibGUuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIGBuZXdfYWR2YW5jZScsIGBzdGFydF9jb250b3VyJywKCWFuZCBgbWV0cmljcycgdmFyaWFibGVzLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcpOiBSZW1vdmUgZGVhZCBjb2RlIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFJlbW92ZSB1bnVzZWQgYGJhc2Vfb2Zmc2V0JwoJdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogUmVtb3ZlIHVudXNlZAoJYG91dGxpbmUnIHZhcmlhYmxlLgoJKGNmZl9jb21wdXRlX2JpYXMpOiBVc2UgYFUnIGZvciBjb25zdGFudC4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyU3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9LZXJuKTogUmVtb3ZlIHVudXNlZCBgdmVyc2lvbicKCXZhcmlhYmxlLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoVFRfTG9hZF9TQml0X0ltYWdlKTogUmVtb3ZlIHVudXNlZCBgdG9wJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgdW51c2VkCglgbnVtX2NvbnRvdXJzJyBhbmQgYGluc19vZmZzZXQnIHZhcmlhYmxlcy4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZW1vdmUgdW51c2VkIGBUb3AnIGFuZCBgeF9zY2FsZScKCXZhcmlhYmxlcy4KCShUVF9Mb2FkX0dseXBoKTogUmVtb3ZlIHVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX3Jhc3Rlcl9yZW5kZXIpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgoyMDAxLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSB0aGUgbmV3IGVycm9yIHNjaGVtZSBzb3VyY2UgY29tcGF0aWJsZSB3aXRoIG9sZGVyIEZUIHZlcnNpb25zCglieSBpbnRyb2R1Y2luZyBhbm90aGVyIGxheWVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIChGVF9FUlJPUkRFRl8sIEZUX05PRVJST1JERUZfKTogTmV3CgltYWNyb3MuCgkoRlRfTk9FUlJPUkRFRik6IFJlbW92ZWQuCgkqIGluY2x1ZGUvKi8qZXJyKi5oOiBVc2UgRlRfRVJST1JERUZfIGFuZCBGVF9OT0VSUk9SREVGXy4KCjIwMDEtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DX1RBRyk6IE5ldyBtYWNyby4KCShGVF9FbmNvZGluZ18pOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEZWZpbmUgaXQKCWNvbmRpdGlvbmFsbHkuCgoyMDAxLTA2LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW9kaWZpZWQgdGhlIFRydWVUeXBlIGludGVycHJldGVyIHRvIGxldCBpdCB1c2UgdGhlIG5ldwoJdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgcHJvdmlkZWQgaW4gImZ0dHJpZ29uLmgiLiAgVGhpcyBnZXRzIHJpZCBvZgoJc29tZSBvbGQgNjQtYml0IGNvbXB1dGF0aW9uIHJvdXRpbmVzLCBhcyB3ZWxsIGFzIG1hbnkgd2FybmluZ3Mgd2hlbgoJY29tcGlsaW5nIHRoZSBsaWJyYXJ5IHdpdGggdGhlICJsb25nIGxvbmciIDY0LWJpdCBpbnRlZ2VyIHR5cGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVbmRlZmluZQoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IFJlYXJyYW5nZSB1c2Ugb2YKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogQWRkIGRlY2xhcmF0aW9uIG9mIEZUX0ludDY0IGlmCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyBpc24ndCBkZWZpbmVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogVXNlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKE5vcm0pOiBBZGQgYSBzcGVjaWFsIHZlcnNpb24gaWYgRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QKCWRlZmluZWQuCgkoQ3VycmVudF9SYXRpbywgTm9ybWFsaXplKTogU2ltcGxpZnkgY29kZS4KCjIwMDEtMDYtMTEgIE1pa2UgT3dlbnMgIDxNT3dlbnNAYW10ZGF0YXNvdXRoLmNvbT4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX0RpdkZpeCwgRlRfU3FydDY0KTogUmVtb3ZlCgljb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogUmVuYW1lZCB0byAuLi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUaGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGF1dG9jb25mIDIuNTAgaXMKCW5lZWRlZC4KCVJ1biBgYXV0b3VwZGF0ZScgb24gaXQuCglJbmNyZWFzZSBgdmVyc2lvbl9pbmZvJyB0byA3OjA6MS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb3JydXB0ZWQgdHJhbnNmb3JtZWQgZ2x5cGhzIHRoYXQgd2VyZSBhdXRvLWhpbnRlZCAodGhlIHRyYW5zZm9ybQoJd2FzIGFwcGxpZWQgdHdpY2UpLgoKCUZpeGVkIGEgYnVnIHRoYXQgcmV0dXJuZWQgYW4gaW52YWxpZCBsaW5lYXIgd2lkdGggZm9yIGNvbXBvc2l0ZQoJVHJ1ZVR5cGUgZ2x5cGhzLgoKCSogaW5jbHVkZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0xvYWRlcl8pOiBUd28gbmV3IGVsZW1lbnRzIGBsaW5lYXInCglhbmQgYGxpbmVhcl9kZWYnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoLAoJY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogVXNlIGl0LgoKCSogaW5jbHVkZS9mdHR5cGVzLmggKEZUX0VSUk9SX0JBU0UpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UsIEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IFVzZSBpdAoJdG8gbWFrZSBzb3VyY2UgY29kZSB3b3JrIHdpdGggdGhlIG5ldyBlcnJvciBzY2hlbWUgaW1wbGVtZW50ZWQgYnkKCVdlcm5lci4KCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX1JlbmRlcik6IERpdHRvLgoKMjAwMS0wNi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIGxpYnRvb2wgMS40LjAgYW5kIGF1dG9jb25mIDIuNTAuCgoJKiBidWlsZHMvdW5peC9sdGNvbmZpZzogUmVtb3ZlZC4KCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoLCBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sCglidWlsZHMvdW5peC9hY2xvY2FsLm00OiBVcGRhdGVkLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlIHJlZGVzaWduIG9mIGVycm9yIGNvZGVzLiAgUGxlYXNlIGNoZWNrIGZ0bW9kZXJyLmggZm9yIG1vcmUKCWRldGFpbHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHRlcnJvcnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogUmVtb3ZlZC4gIFJlcGxhY2VkIHdpdGggZmlsZXMKCWxvY2FsIHRvIHRoZSBtb2R1bGUuICBBbGwgZXh0cmEgZXJyb3IgY29kZXMgaGF2ZSBiZWVuIG1vdmVkIHRvCglgZnRlcnJvcnMuaCcuCgoJKiBzcmMvc2ZudC90dHBvc3QuaDogTW92ZSBlcnJvciBjb2RlcyB0byBgZnRlcnJvcnMuaCcuCgoJKiBzcmMvYXV0b2hpbnQvYWhlcnJvcnMuaCwgc3JjL2NhY2hlL2Z0Y2Vycm9yLmgsIHNyYy9jZmYvY2ZmZXJycy5oLAoJc3JjL2NpZC9jaWRlcnJzLmgsIHNyYy9wY2YvcGNmZXJyb3IuaCwgc3JjL3BzYXV4L3BzYXV4ZXJyLmgsCglzcmMvcHNuYW1lcy9wc25hbWVyci5oLCBzcmMvcmFzdGVyL3Jhc3RlcnJzLmgsIHNyYy9zZm50L3NmZXJyb3JzLmgsCglzcmMvc21vb3RoL2Z0c21lcnJzLmgsIHNyYy90cnVldHlwZS90dGVycm9ycy5oLAoJc3JjL3R5cGUxL3QxZXJyb3JzLmgsIHNyYy93aW5mb250cy9mbnRlcnJzLmg6IE5ldyBmaWxlcyBkZWZpbmluZyB0aGUKCWVycm9yIG5hbWVzIGZvciB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IE5ldyBmaWxlLCBkZWZpbmluZyB0aGUgbW9kdWxlIGVycm9yCglvZmZzZXRzLiAgSXRzIHN0cnVjdHVyZSBpcyBzaW1pbGFyIHRvIGBmdGVycm9ycy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfTk9FUlJPUkRFRik6IE5ldyBtYWNyby4KCShGVF9FUlJPUkRFRik6IFJlZGVmaW5lZCB0byB1c2UgbW9kdWxlIGVycm9yIG9mZnNldHMuCglBbGwgaW50ZXJuYWwgZXJyb3IgY29kZXMgYXJlIG5vdyBwdWJsaWM7IHVudXNlZCBlcnJvciBjb2RlcyBoYXZlCgliZWVuIHJlbW92ZWQsIHNvbWUgYXJlIG5ldy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX01PRFVMRV9FUlJPUlNfSCk6IE5ldwoJbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTKTogTmV3IG1hY3JvLgoKCUFsbCBvdGhlciBzb3VyY2UgZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgZXJyb3IgY29kZXM7Cglzb21lIGFscmVhZHkgZXhpc3RpbmcgKGludGVybmFsKSBlcnJvciBjb2RlcyBsb2NhbCB0byBhIG1vZHVsZSBoYXZlCgliZWVuIHJlbmFtZWQgdG8gZ2l2ZSB0aGVtIHRoZSBzYW1lIG5hbWUgYXMgaW4gdGhlIGJhc2UgbW9kdWxlLgoKCUFsbCBtYWtlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIGxvY2FsIGVycm9yIGZpbGVzLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWR0b2tlbnMuaDogUmVwbGFjZWQgd2l0aC4uLgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IFRoaXMgZmlsZSBmb3IgOCszIGNvbnNpc3RlbmN5LgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBVc2UgbWFjcm9zIGZvciBoZWFkZXIgZmlsZSBuYW1lcy4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXJfLCBUVF9WZXJ0SGVhZGVyXyk6CglGaXggbGVuZ3RoIG9mIGBSZXNlcnZlZCcgYXJyYXkuICBOb3RlIHRoYXQgdGhpcyBpc24ndCB0aGUgcmVhbCBmaXgKCXNpbmNlIHJlY2VudCBPcGVuVHlwZSBzcGVjcyBoYXZlIGludHJvZHVjZWQgYSBgQ2FyZXRPZmZzZXQnIGZpZWxkCglpbnN0ZWFkIG9mIHRoZSBmaXJzdCByZXNlcnZlZCBieXRlLgoKMjAwMS0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogTWlub3IgZml4ZXMuCgoKCSogVmVyc2lvbiAyLjAuMyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA1LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAxLTA1LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW92ZWQgc2V2ZXJhbCBkb2N1bWVudHMgZnJvbSB0aGUgdG9wLWxldmVsIHRvIHRoZSAiZG9jcyIgZGlyZWN0b3J5LgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IFNtYWxsIGZpeCB0byByZXR1cm4gdmFsdWUuCgoyMDAxLTA1LTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4ZWQgYSBidWcgaW4gdGhlCgljb21wb3NpdGUgbG9hZGVyLiAgU3BvdHRlZCBieSBLZWl0aCBQYWNrYXJkLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2x5cGhMb2FkZXJfQ2hlY2tfUG9pbnRzLAoJRlRfR2x5cGhMb2FkZXJfQ2hlY2tfU3ViZ2x5cGhzKTogRGl0dG8uCgoyMDAxLTA1LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgdGhlIGluY29ycmVjdCBibHVlIHpvbmUgY29tcHV0YXRpb25zLCBhbmQgaW1wcm92ZWQgdGhlCgljb21wb3NpdGUgc3VwcG9ydC4gIE5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHJlc3VsdCBpbiBpbXByb3ZlZAoJcmVuZGVyaW5nLCB3aGlsZSBzb21ldGltZXMgaW50cm9kdWNpbmcgdGhlaXIgb3duIGFydGVmYWN0cy4gIFRoaXMgaXMKCXByb2JhYmx5IHRoZSBsYXN0IGJpZyBjaGFuZ2UgdG8gdGhlIGF1dG9oaW50ZXIgYmVmb3JlIHRoZQoJaW50cm9kdWN0aW9uIG9mIGEgY29tcGxldGUgcmVwbGFjZW1lbnQuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoc29ydF92YWx1ZXMpOiBGaXggbG9vcC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYzogUmVtb3ZlZCBzb21lIG9ic29sZXRlIGNvZGUuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogTW9kaWZ5IGNvZGUgdG8gc2V0IHRoZSBhaF9lZGdlX3JvdW5kCglmbGFnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9ibHVlX2VkZ2VzKTogQWRkIGNvZGUgdG8gY29tcHV0ZSBhY3RpdmUgYmx1ZQoJem9uZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2dseXBoX2xvYWQpOiBDaGFuZ2UgbG9hZF9mbGFncwoJdmFsdWUuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2Rml4KTogRml4ZWQgYSBidWcgaW4gdGhlIDY0LWJpdCBjb2RlIHRoYXQKCWNyZWF0ZWQgaW5jb3JyZWN0IHNjYWxlIGZhY3RvcnMhCgkoRlRfUm91bmRfRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IE1pbm9yIGltcHJvdmVtZW50cy4KCjIwMDEtMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiYm94Lmg6IEZUQkJPWF9IIC0+IF9fRlRCQk9YX0hfXy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oOiBfX0ZUX1RSSUdPTk9NRVRSWV9IX18gLT4KCV9fRlRUUklHT05fSF9fLgoJSW5jbHVkZSBGVF9GUkVFVFlQRV9ILgoJQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jOiBCZWF1dGlmaWVkOyBhZGRlZCBjb3B5cmlnaHQuCgoyMDAxLTA1LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCksIHNyYy9jaWQvY2lkbG9hZC5jCgkocGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogRml4ZWQKCXRoZSBpbmNvcnJlY3QgRU0gc2l6ZSBjb21wdXRhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaCwgc3JjL2Jhc2UvZnR0cmlnb24uYzogTmV3IGZpbGVzLAoJYWRkaW5nIHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHRvIHRoZSBjb3JlIEFQSSAodXNpbmcgQ29yZGljCglhbGdvcml0aG1zKS4KCSogc3JjL2Jhc2UvZnRiYXNlLmMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOiBVc2UgdGhlbS4KCgkqIGJ1aWxkcy9uZXdsaW5lOiBOZXcgZmlsZS4KCSogYnVpbGRzL3RvcF9sZXZlbC5taywgYnVpbGRzL2RldGVjdC5tazogVXNlIGl0LiAgVGhpcyBmaXhlcwoJcHJvYmxlbXMgd2l0aCBNYWtlIG9uIFdpbmRvd3MgMjAwMCwgYXMgd2VsbCBhcyBwcm9ibGVtcyB3aGVuICJtYWtlCglkaXN0Y2xlYW4iIGlzIGludm9rZWQgb24gYSBub24tVW5peCBwbGF0Zm9ybSB3aGVuIHRoZXJlIGlzIG5vCgkiY29uZmlnLm1rIiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IEZpeGVkIGEgcHJvYmxlbSB3aXRoIG9iamVjdCBkZWxldGlvbnMgdW5kZXIKCURvcy9XaW5kb3dzL09TLzIgc3lzdGVtcy4KCglBZGRlZCBuZXcgZGlyZWN0b3J5IHRvIGhvbGQgdG9vbHMgYW5kIHRlc3QgcHJvZ3JhbXMuCgoJKiBkb2NzL2RvY21ha2VyLnB5LCBkb2NzL2dsbmFtZXMucHk6IE1vdmVkIHRvLi4uCgkqIHNyYy90b29scy9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFRoaXMgcGxhY2UuCgkqIHNyYy90b29scy9jb3JkaWMucHk6IE5ldyBmaWxlIHVzZWQgdG8gY29tcHV0ZSBhcmN0YW5nZW50IHRhYmxlCgluZWVkZWQgYnkgZnR0cmlnb24uYy4KCSogc3JjL3Rvb2xzL3Rlc3RfYmJveC5jLCBzcmMvdG9vbHMvdGVzdF90cmlnLmM6IE5ldyB0ZXN0IGZpbGVzLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgc2NyaXB0IHRvIGFkZCB0aGUgY3VycmVudCBkYXRlCglhdCB0aGUgZm9vdGVyIG9mIGVhY2ggd2ViIHBhZ2UgKHVzZWZ1bCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCgl2ZXJzaW9ucykuCgoJKiBKYW1maWxlOiBGaXhlZCBpbmNvcnJlY3QgSERSTUFDUk8gYXJndW1lbnQuCgoJKiBUT0RPOiBSZW1vdmVkIHRoZSBjdWJpYyBhcmMgYmJveCBjb21wdXRhdGlvbiBub3RlLCBzaW5jZSBpdCBoYXMgYmVlbgoJZml4ZWQgcmVjZW50bHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jICh0ZXN0X2N1YmljX3plcm8pOiBSZW5hbWVkIHRvLi4uCgkodGVzdF9jdWJpY19leHRyZW1hKTogVGhpcyBmdW5jdGlvbi4gIFVzZSBgVUwnIGZvciB1bnNpZ25lZCBsb25nCgljb25zdGFudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6CglGb3JtYXR0aW5nLgoKMjAwMS0wNS0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IEZpeGVkIGEgc21hbGwgbWVtb3J5IGxlYWsKCXdoaWNoIGhhcHBlbmVkIHdoZW4gdHJ5aW5nIHRvIG9wZW4gMC1zaXplIGZvbnQgZmlsZXMhCgoyMDAxLTA1LTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCglGVF9TcXJ0Rml4ZWQoKSBvdXQgb2YgYCNpZmRlZiBGVF9MT05HNjQnLgoKMjAwMS0wNS0wOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2Zkcml2ZXIuYyAoUENGX0xvYWRfR2x5cGgpOiBGaXhlZCBpbmNvcnJlY3QgYml0bWFwIHdpZHRoCgljb21wdXRhdGlvbi4KCjIwMDEtMDUtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IFVwZGF0ZWQgdGhlIERvY01ha2VyIHNjcmlwdCBpbiBvcmRlciB0byBhZGQKCWNvbW1hbmQgbGluZSBvcHRpb25zICgtLW91dHB1dCwtLXByZWZpeCwtLXRpdGxlKSwgZml4IHRoZSBlcnJvbmVvdXMKCWxpbmUgbnVtYmVycyByZXBvcnRlZCBkdXJpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncywgYW5kIG90aGVyCglmb3JtYXR0aW5nIGlzc3Vlcy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX011bEZpeCwgRlRfRGl2Rml4KTogVmFyaW91cyB0aW55CglmaXhlcyByZWxhdGVkIHRvIHJvdW5kaW5nIGluIDY0LWJpdHMgcm91dGluZXMgYW5kCglwc2V1ZG8tIm9wdGltaXphdGlvbnMiLgoKMjAwMS0wNC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBGaXhlZCB0aGUgY29lZmZpY2llbnQKCW5vcm1hbGl6YXRpb24gYWxnb3JpdGhtIChpbnZhbGlkIGZpbmFsIGJpdCBwb3NpdGlvbiwgYW5kIGludmFsaWQKCXNoaWZ0IGNvbXB1dGF0aW9uKS4KCjIwMDEtMDQtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCB0bwoJbGF0ZXN0IHZlcnNpb25zIGZyb20gZ251Lm9yZy4KCgkqIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rOiBBZGQgYC1Xbm8tbG9uZy1sb25nJyBmbGFnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogRGVmaW5lIEZUX1NxcnRGaXhlZCgpCgl1bmNvZGl0aW9uYWxseS4KCSogc3JjL2Jhc2UvZnRiYm94LmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfQ0FMQ19ILgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogRml4IChwb3RlbnRpYWwpIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wNC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCk6IENvcnJlY3RlZC9vcHRpbWl6ZWQgdGhlIDMyLWJpdAoJZml4ZWQtcG9pbnQgc3F1YXJlIHJvb3QgY29tcHV0YXRpb24uICBJdCBpcyBub3cgdXNlZCBldmVuIHdpdGgKCTY0LWJpdHMgaW50ZWdlcnMsIGFzIGl0IGlzIF9tdWNoXyBmYXN0ZXIgdGhhbiBjYWxsaW5nIEZUX1NxcnQ2NCA6LSkKCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBSZW1vdmVkIGludmFsaWQgIiNpbmNsdWRlIEZUX0JFWklFUl9IIiBsaW5lLgoKMjAwMS0wNC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBSZXdyb3RlIGZ1bmN0aW9uIHRvIHVzZQoJZGlyZWN0IGNvbXB1dGF0aW9ucyB3aXRoIDE2LjE2IHZhbHVlcyBpbnN0ZWFkIG9mIHN1Yi1kaXZpc2lvbnMuICBJdAoJaXMgbm93IHNsb3dlciwgYnV0IHByb3ZlcyBhIHBvaW50IDotKQoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL2Jhc2UvZnRiYm94LmM6CglGaXhlZCB0aGUgYmV6aWVyIHN0YWNrIGRlcHRocy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxGaXgpOiBNaW5vciByb3VuZGluZyBmaXguCgoJKiBidWlsZHMvYmVvczogQWRkZWQgQmVPUy1zcGVjaWZpYyBmaWxlcyB0byB0aGUgb2xkIGJ1aWxkIHN5c3RlbQoJKG5vIGNoYW5nZXMgd2VyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCBCZU9TIGluIHRoZSBKYW1maWxlIHRob3VnaCkuCgoyMDAxLTA0LTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBmdGNvbmZpZy5oLCBmdG9wdGlvbi5oOiBVcGRhdGVkICJmdGNvbmZpZy5oIiB0byBkZXRlY3QgNjQtYml0IGludAoJdHlwZXMgb24gcGxhdGZvcm1zIHdoZXJlIEF1dG9jb25mIGlzIG5vdCBhdmFpbGFibGUpLiAgQWxzbyByZW1vdmVkCglGVENBTENfVVNFX0xPTkdfTE9ORyBhbmQgcmVwbGFjZWQgaXQgd2l0aAoJRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NC4KCgkqIGJ1aWxkcy93aW4zMi9mcmVldHlwZS5kc3A6IFVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCBmaWxlLgoJRG9lc24ndCBjcmVhdGUgYSBETEwgeWV0LgoKCSogY2ZmZ2xvYWQuYzogUmVtb3ZlZCBhIGNvbXBpbGF0aW9uIHdhcm5pbmcuCgoyMDAxLTA0LTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogQ2hhbmdlZCBjb2RlIGZvciBwbGFjaW5nIC5ub3RkZWYKCWdseXBoIGludG8gc2xvdCAwIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBtZW1vcnkgYWNjZXNzCgl2aW9sYXRpb24uCgoJKiB0MWxvYWQuaDogSW4gc3RydWN0dXJlIFQxX0xvYWRlciwgYWRkZWQgc3dhcF90YWJsZSAob2YgdHlwZQoJUFNfVGFibGUpIHRvIGZhY2lsaXRhdGUgcGxhY2luZyB0aGUgLm5vdGRlZiBnbHlwaCBpbnRvIHNsb3QgMC4KCjIwMDEtMDQtMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMS0wNC0wOSAgTGF1cmVuY2UgV2l0aGVycyAgPGx3aXRoZXJzQGx3aXRoZXJzLmRlbW9uLmNvLnVrPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IEFkZCBzdXBwb3J0IGZvciBiYXNoLgoKMjAwMS0wNC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL29zMi8qLm1rOiBUaGVzZSBmaWxlcyBoYXZlIGJlZW4gZm9yZ290dGVuIHRvIHVwZGF0ZSB0bwoJdGhlIHN0cnVjdHVyZSBvZiBzaW1pbGFyIG1ha2VmaWxlcy4KCSogYnVpbGRzL2Rvcy8qLm1rOiBEaXR0by4KCSogYnVpbGRzL2Fuc2kvKi5tazogRGl0dG8uCgoJKiBidWlsZHMvd2luMzIvd2luMzItZGVmLm1rIChCVUlMRCk6IEZpeCB0eXBvLgoKCSogYnVpbGRzL2NvbXBpbGVyLyoubWsgKENMRUFOX0xJQlJBUlkpOiBEb24ndCB1c2UgTk9fT1VUUFVULgoJVGhpcyBpcyBhbHJlYWR5IHVzZWQgaW4gdGhlIGxpbmtfKi5tayBmaWxlcy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy8qL0phbWZpbGU6IFNsaWdodCBjaGFuZ2VzCXRvIG1ha2UgZmlsZXMgbW9yZSBjcnlwdGljLgoKMjAwMS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEZvcm1hdHRlZC4gIFNsaWdodCBjaGFuZ2VzCgl0byBnaXZlIGZpbGVzIGlkZW50aWNhbCBzdHJ1Y3R1cmUuCgoyMDAxLTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBDSEFOR0VTOiBSZWZvcm1hdHRlZCwgbWlub3IgZml4ZXMuCgkqIFRPRE86IFVwZGF0ZWQuCgkqIFJFQURNRTogRm9ybWF0dGluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGb3JtYXR0aW5nLgoKCSogSmFtZmlsZTogRml4IHR5cG8uCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmM6IE1vdmUgZXJyb3IgY29kZSAjZGVmaW5lcyB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaDogVGhpcyBmaWxlLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZmxvYWQuYzogUmVwbGFjZWQKCWBGVF9FcnJfKicgd2l0aCBgQ0ZGX0Vycl8qJy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYzogRGl0dG8uCgkqIHNyYy9zZm50L3Nmb2Jjcy5jLCBzcmMvc2ZudC90dGxvYWQuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoCglgVFRfRXJyXyonLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MXBhcnNlLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aCBgVDFfRXJyXyonLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IEFkZAoJYENGRl9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogQWRkCglgVDFfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmg6IEFkZAoJYFRUX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBBZGQgYGNmZl8qX2VuY29kaW5nJyBhbmQgYGNmZl8qX2NoYXJzZXQnCglyZWZlcmVuY2VzLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmM6IEluY2x1ZGUgYEZUX0lOVEVSTkFMX1RZUEUxX0VSUk9SU19IJy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlLCBDRkZfRG9uZV9GYWNlKTogVXNlCglGVF9MT0NBTF9ERUYuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3RydXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRmFjZSwgVFRfRG9uZV9GYWNlLCBUVF9Jbml0X1NpemUpOgoJRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IERpdHRvLgoJKiBzcmMvcGNmL3BjZi5oOiBVc2UgRlRfTE9DQUwgZm9yIGBQQ0ZfRG9uZV9GYWNlJy4KCjIwMDEtMDQtMDIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzKTogRml4IGFuIGltcHJvcGVyIHBvaW50ZXIKCWRlcmVmZXJlbmNlLiAgU3VibWl0dGVkIGJ5IEhlcmJlcnQgRHVlcnIgPGR1ZXJyQHN1bi5jb20+LgoKMjAwMS0wMy0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IENoYW5nZWQgaGV4YWRlY2ltYWwKCWNvbnN0YW50cyB0byB1c2Ugc3VmZml4IFUgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBIUC1VWCdzIGM4OQoJY29tcGlsZXIuICBTdWJtaXR0ZWQgYnkgRy5XLiBMdWNhcyA8Z2x1Y2FzQHNvbmFseXN0cy5jb20+LgoKMjAwMS0wMy0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIEphbXJ1bGVzLCBKYW1maWxlLCBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogQWRkaW5nIGphbWZpbGVzIHRvCgl0aGUgc291cmNlIHRyZWUuICBTZWUgd3d3LmZyZWV0eXBlLm9yZy9qYW0vaW5kZXguaHRtbCBmb3IgZGV0YWlscy4KCgoJKiBWZXJzaW9uIDIuMC4yIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDMtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy93aW4zMi9kZXRla3QubWs6IEZpeCAuUEhPTlkgdGFyZ2V0IGZvciBJbnRlbCBjb21waWxlci4KCjIwMDEtMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmg6CglSZW5hbWVkICJmdG5hbWVzLmgiIHRvICJmdHNuYW1lcy5oIiwgYW5kIEZUX05BTUVTX0ggdG8KCUZUX1NGTlRfTkFNRVNfSC4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIGdlbmVyYXRpb24gb2YgSU5ERVggbGluayBpbiB0YWJsZSBvZgoJY29udGVudHMuCgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBVcGRhdGVkIGRvY3VtZW50YXRpb24gdG8gaW5kaWNhdGUgdGhhdCB0aGUKCWNvbXBpbGF0aW9uIHByb2Nlc3MgaGFzIGNoYW5nZWQgc2xpZ2h0bHkgKG5vIG1vcmUgYHNyYycgcmVxdWlyZWQgaW4KCXRoZSBpbmNsdWRlIHBhdGgpLgoKCSogYnVpbGRzLyovKi1kZWYubWs6IENoYW5nZWQgdGhlIG9iamVjdHMgZGlyZWN0b3J5IGZyb20gIm9iaiIgdG8KCSJvYmpzIi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmg6IFJlbW92ZWQgb2Jzb2xldGUgbWFjcm9zIGxpa2UKCUZUX1NPVVJDRV9GSUxFLCBldGMuIGFuZCBhZGRlZCBjYWNoZS1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB0aGF0Cgl3ZXJlIHByZXZpb3VzbHkgZGVmaW5lZCBpbiA8ZnJlZXR5cGUvZnRjYWNoZS5oPi4gIEFkZGVkIGNvbW1lbnRzIHRvCgliZSBpbmNsdWRlZCBpbiBhIG5ldyBBUEkgUmVmZXJlbmNlIHNlY3Rpb24uCgoJKiBzcmMvKi8qOiBSZW1vdmVkIHRoZSB1c2Ugb2YgRlRfU09VUkNFX0ZJTEUsIGV0Yy4gIE5vdywgZWFjaAoJY29tcG9uZW50IG5lZWRzIHRvIGFkZCBpdHMgb3duIGRpcmVjdG9yeSB0byB0aGUgaW5jbHVkZSBwYXRoIGF0Cgljb21waWxlIHRpbWUuICBNb2RpZmllZCBhbGwgInJ1bGVzLm1rIiBhbmQgImRlc2NyaXAubW1zIgoJYWNjb3JkaW5nbHkuCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IEFkZCAkZnRfdmVyc2lvbi4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBVc2UgaXQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCjIwMDEtMDMtMTkgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQXNzaWduIHRoZSB1bml0cyBwZXIgZW0KCXZhbHVlIGFuIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBmaXJzdCBieSBzaGlmdGluZyByaWdodCAxNiBiaXRzLAoJdGhlbiBieSBjYXN0aW5nIHRoZSByZXN1bHRzIHRvIEZUX1VTaG9ydC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfYmJveCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoyMDAxLTAzLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMsIHNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvcGNmL3BjZnJlYWQuYywKCXNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBBZGRlZCBhIGZldyBjYXN0cyB0byByZW1vdmUKCWNvbXBpbGVyIHdhcm5pbmdzIGluIHBlZGFudGljIG1vZGVzLgoKCSogaW5jbHVkZS9jb25maWcvZnQyYnVpbGQuaCwgaW5jbHVkZS9jb25maWcvZnRoZWFkZXIuaDogVGhlIGZpbGUKCSJmdDJidWlsZC5oIiB3YXMgcmVuYW1lZCB0byAiZnRoZWFkZXIuaCIgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlCgl0b3AtbGV2ZWwgPGZ0MmJ1aWxkLmg+LgoKCSogaW5jbHVkZS9jb25maWcvZnRoZWFkZXIuaDogQWRkZWQgbmV3IHNlY3Rpb24gZGVzY3JpYmluZyB0aGUgI2luY2x1ZGUKCW1hY3Jvcy4KCjIwMDEtMDMtMTcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBPYnRhaW4gcm91bmRlZCBGVF9GaXhlZAoJdmFsdWVzIGZvciB0aGUgYm91bmRpbmcgYm94IG51bWJlcnMuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFdoZW4gcHJvY2Vzc2luZyBhIENGRi9DRUYgZm9udCwKCXNldCBgcm9vdC0+YXNjZW5kZXInIChgcm9vdC0+ZGVzY2VuZGVyJykgdG8gdGhlIGludGVnZXIgcGFydCBvZgoJYHJvb3QtPmJib3gueU1heCcgKGByb290LT5iYm94LnlNaW4nLCByZXNwZWN0aXZlbHkpLgoKMjAwMS0wMy0xNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogIE5ldyBmdW5jdGlvbi4gIFVzZWQgaW4KCWNmZl9nZXRfaW50ZXJmYWNlIHRvIGZhY2lsaXRhdGUgZ2V0dGluZyBhIGdseXBoIG5hbWUgZm9yIGdseXBoIGluZGV4Cgl2aWEgRlRfR2V0X0dseXBoX05hbWUoKS4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBBZGRlZCBzdXBwb3J0IGZvciBnZXR0aW5nIGEgZ2x5cGggbmFtZSB2aWEgdGhlCgkiZ2x5cGhfbmFtZSIgbW9kdWxlIGludGVyZmFjZS4gIFVzZXMgdGhlIG5ldyBmdW5jdGlvbgoJZ2V0X2NmZl9nbHlwaF9uYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogTG9naWNhbCBvciB0aGUgZmFjZSBmbGFncyB3aXRoCglGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgb25seSBpZiBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTIGlzCglub3QgZGVmaW5lZC4gIFRoaXMgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZyb20gYQoJZ2x5cGggaW5kZXggdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgc3VwcG9ydCBmb3IKCWRlcHJlY2F0ZWQgb3BlcmF0b3IgImRvdHNlY3Rpb24iLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoyMDAxLTAzLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEZpeCBlcnJvcgoJbWVzc2FnZXMuCgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzguMSBvciBuZXdlci4KCjIwMDEtMDMtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6ICBDaGFuZ2VkIHRoZSBsZW5JViBtZW1iZXIgb2YKCXRoZSBUMV9EZWNvZGVyXyBzdHJ1Y3QgdG8gYmUgYW4gRlRfSW50IGluc3RlYWQgb2YgYW4gRlRfVUludC4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogIEFkanVzdAoJZm9yIGxlbklWIHNlZWQgYnl0ZXMgYXQgdGhlIHN0YXJ0IG9mIGEgZGVjcnlwdGVkIHN1YnJvdXRpbmUuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBEZWNyeXB0IHN1YnJvdXRpbmVzIG9ubHkKCWlmIGxlbklWID49IDAuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogRGVjcnlwdCBjaGFyc3RyaW5ncyBvbmx5CglpZiBsZW5JViA+PSAwLgoKMjAwMS0wMy0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogVE9ETzogVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBQdXQgUkVBRF9GaWVsZHMoKSBhbHdheXMgaW4gYSBjb25kaXRpb25hbCB0bwoJYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTAzLTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogVE9ETzogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEFkZGVkIHByb3RvdHlwZXMgYW5kIG5vdGVzIGZvcgoJdGhyZWUgbmV3IGZ1bmN0aW9uczogRlRfUm91bmRGaXgsIEZUX0NlaWxGaXgsIGFuZCBGVF9GbG9vckZpeC4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IEFkZGVkCglpbXBsZW1lbnRhdGlvbiBjb2RlLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9Jbml0X0ZhY2UpOiBVc2UgY2FsY3VsYXRlZCB1bml0c19wZXJfRU0sCglhbmQgaWYgdGhhdCBpcyBub3QgYXZhaWxhYmxlLCBkZWZhdWx0IHRvIDEwMDAgdW5pdHMgcGVyIEVNLiAgQ2hhbmdlZAoJYXNzaWdubWVudCBjb2RlIGZvciBhc2NlbmRlciBhbmQgZGVzY2VuZGVyIHZhbHVlcy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgdW5pdHNfcGVyX0VNCglwcm9jZXNzaW5nLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENoYW5nZWQgdG8gdXNlIEZUX0ZpeGVkIG51bWJlciBoYW5kbGluZy4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQ2hhbmdlZCB0aGUgYXNzaWdubWVudCBjb2RlCglmb3IgYXNjZW5kZXIsIGRlc2NlbmRlciwgYW5kIG1heF9hZHZhbmNlX3dpZHRoLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfYmJveCk6IENoYW5nZWQgdG8gdXNlIEZUX0ZpeGVkCgludW1iZXIgaGFuZGxpbmcuCgoyMDAxLTAzLTEwICBIZW5yaWsgR3J1YmJzdHL2bSAgPGdydWJiYUByb3hlbi5jb20+CgoJKiBzcmMvKi8qLmM6IEFkZGVkIG1hbnkgY2FzdHMgdG8gbWFrZSBjb2RlIG1vcmUgNjRiaXQtc2FmZS4KCjIwMDEtMDMtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFdlIG5lZWQgR05VIG1ha2UgMy43OCBvciBuZXdlci4KCjIwMDEtMDMtMDcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IE1pbm9yIGNvcnJlY3Rpb246IFdlIG11c3Qgd2FpdAoJdW50aWwgcGFyc2VfZm9udF9iYm94IGlzIGNoYW5nZWQgYmVmb3JlIHdlIHVzZSBsb2dpY2FsIHNoaWZ0IHJpZ2h0cwoJaW4gdGhlIGFzc2lnbm1lbnRzIG9mIGByb290LT5hc2NlbmRlcicsIGByb290LT5kZXNjZW5kZXInLCBhbmQKCWByb290LT5tYXhfYWR2YW5jZV93aWR0aCcuCgoJKFQxX0RvbmVfRmFjZSk6IEZyZWUgYGNoYXJfbmFtZScgdGFibGUgdG8gYXZvaWQgYSBtZW1vcnkgbGVhay4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKMjAwMS0wMy0wNSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMiBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAzLTA0ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQ29ycmVjdCBhIHN0dXBpZCB0eXBvIHdoaWNoIHByZXZlbnRlZAoJY29ycmVjdCBjb21waWxhdGlvbiAoVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VUSElPUElBIGFwcGVhcmVkIHR3aWNlKS4KCjIwMDEtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlcik6IEFkZCBlbGVtZW50cwoJYGRpc2FibGVfaG9yel9lZGdlcycsIGBkaXNhYmxlX3ZlcnRfZWRnZXMnLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX2hpbnRfZWRnZXMpOiBVc2UKCXRoZW0gKGFuZCByZW1vdmUgc3RhdGljIHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIG5hbWVzKS4KCSogc3JjL3BjZi9wY2Z1dGlsLmMgKEJpdE9yZGVySW52ZXJ0KTogQWRkIGBjb25zdCcuCgkqIGRvY3MvZ2xuYW1lcy5weTogVXBkYXRlZCB0byBsYXRlc3QgcHN0YWJsZXMuaCBjaGFuZ2VzLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGQgdGVzdCBmb3IgSHVyZC4KCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBSZW1vdmVkLgoKMjAwMS0wMy0wNCAgU2FuZGVyIHZhbiBkZXIgV2FsICA8c3Zkd2FsQHhzNGFsbC5ubD4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IEFkZCBtb3JlIGBjb25zdCcuCgkqIHNyYy9wY2YvcGNmdXRpbC5jOiBEaXR0by4KCjIwMDEtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4aW5nIHR5cG8KCShGVF9HbHlwaF9Eb25lIC0+IEZUX0RvbmVfR2x5cGgpLgoKMjAwMS0wMy0wMSAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IEFkZGVkIHNvbWUgbmV3IE1pY3Jvc29mdCBsYW5ndWFnZQoJY29kZXMgYW5kIExDSURzIGFzIGZvdW5kIGluIE9mZmljZSBYcC4KCjIwMDEtMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvaHVyZC9kZXRlY3QubWs6IE5ldyBmaWxlLiAgQWRkZWQgc3VwcG9ydCB0byBkZXRlY3QgdGhlIEdOVQoJSHVyZCBvcGVyYXRpbmcgc3lzdGVtIGFzIFVuaXgtbGlrZS4gIEZpeCBzdWJtaXR0ZWQgYnkgQW50aG9ueSBGb2sKCTxmb2thQGRlYmlhbi5vcmc+LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFNldCBnbHlwaCBjb250cm9sIGRhdGEgdG8gdGhlCgl0aGUgVHlwZSAxIGdseXBoIGNoYXJzdHJpbmcgKHVzZWQgYnkgY29udmVyc2lvbiBwcm9ncmFtcykuCglTdWJtaXR0ZWQgYnkgSGEgU2hhbyA8aGFzaGFvQGNoaW5lc2UuY29tPi4KCjIwMDEtMDItMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdyYXlzLmMgKGdyYXlzX3N3ZWVwKTogVGhlIGZ1bmN0aW9uIGRpZG4ndCBleGl0CglpbW1lZGlhdGVseSBpZiBgbnVtX2NlbGxzJyB3YXMgMCBhcyBpdCBzaG91bGQuICBUaGFua3MgdG8gQm9yaXMgZm9yCglmaW5kaW5nIHRoaXMgb3V0LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBGaXhlZCBtZW1vcnkgbGVhayB3aGVuCgliaXRtYXAgcmVuZGVyaW5nIGZhaWxzICh0aGFua3MgdG8gR3JhaGFtIEFzaGVyKS4KCjIwMDEtMDItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHkgKERvY1NlY3Rpb246OmFkZF9lbGVtZW50KTogVXNlCglgc2VsZi5wcmludF9lcnJvcigpJy4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy57Z3Vlc3Msc3VifTogVXBkYXRlZCAoZnJvbSBmdHAuZ251Lm9yZykuCgoyMDAxLTAyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weSwgaW5jbHVkZS9mcmVldHlwZS8qLmg6IFVwZGF0ZWQgdGhlIERvY01ha2VyCglzY3JpcHQgdG8gc3VwcG9ydCBjaGFwdGVycyBhbmQgc2VjdGlvbiBibG9jayBvcmRlcmluZy4gIFVwZGF0ZWQgdGhlCglwdWJsaWMgaGVhZGVyIGZpbGVzIGFjY29yZGluZ2x5LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Db3B5KTogQWR2YW5jZSB3aWR0aCBhbmQgZ2x5cGggZm9ybWF0Cgl3ZXJlIG5vdCBjb3JyZWN0bHkgY29waWVkLgoKMjAwMS0wMi0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogUmVtb3ZlZCBhbgoJdW5uZWNlc3NhcnkgZnByaW50Ziggc3RkZXJyLCAuLi4gKS4KCjIwMDEtMDItMDcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IEFkZGVkIGNvZGUgdG8gZ2V0IHRoZQoJdW5pdHNfcGVyX0VNIGZyb20gdGhlIHZhbHVlIGFzc2lnbmVkIGluIHBhcnNlX2ZvbnRfbWF0cml4LCBpZgoJYXZhaWxhYmxlLiAgRGVmYXVsdCB0byAxMDAwIGlmIG5vdCBhdmFpbGFibGUuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGxvZ2ljIHRvIGdldAoJdGhlIHVuaXRzX3Blcl9FTSBmcm9tIHRoZSBGb250TWF0cml4LgoKCShjZmZfcGFyc2VfZml4ZWRfdGhvdXNhbmQpOiBOZXcgZnVuY3Rpb24uIEdldHMgYSByZWFsIG51bWJlciBmcm9tCgl0aGUgQ0ZGIGZvbnQsIGJ1dCBtdWx0aXBsaWVzIGJ5IDEwMDAgKHRoaXMgaXMgdG8gYXZvaWQgcm91bmRpbmcKCWVycm9ycyB3aGVuIHBsYWNpbmcgdGhpcyByZWFsIG51bWJlciBpbnRvIGEgMTYuMTYgZml4ZWQgbnVtYmVyKS4KCgkoY2ZmX3BhcnNlX3JlYWwpOiBBZGRlZCBjb2RlIHNvIHRoYXQgdGhlIGludGVnZXIgcGFydCBpcyBtb3ZlZAoJaW50byB0aGUgaGlnaCBzaXh0ZWVuIGJpdHMgb2YgdGhlIDE2LjE2IGZpeGVkIG51bWJlci4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogQWRkZWQgbG9naWMgdG8gZ2V0IHRoZSB1bml0cwoJcGVyIEVNIGZyb20gdGhlIENGRiBkaWN0aW9uYXJ5LCBpZiBhdmFpbGFibGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IEluIHN0cnVjdCBDRkZfRm9udF9EaWN0XywKCWFkZGVkIGEgdW5pdHNfcGVyX2VtIG1lbWJlciB0byBmYWNpbGl0YXRlIHBhc3Npbmcgb2YgdW5pdHNfcGVyX2VtCglmcm9tIGZ1bmN0aW9uIGNmZl9wYXJzZV9mb250X21hdHJpeC4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBNYWtlIGAtJyBhIGxlZ2FsIGFscGhhbnVtZXJpYwoJY2hhcmFjdGVyLiAgVGhpcyBpcyBzbyB0aGF0IGZvbnQgbmFtZXMgd2l0aCBgLScgYXJlIGZ1bGx5IHBhcnNlZCwKCWV0Yy4uLgoKMjAwMS0wMi0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChzaGlmdF9lbGVtZW50cyk6IFJlbW92ZSBpZiBjbGF1c2UgKHdoaWNoIGlzCglvYnNvbGV0ZSBub3cpLgoKCShyZWFsbG9jYXRlX3QxX3RhYmxlLCBQU19UYWJsZV9Eb25lKTogUmVwbGFjZSBSRUFMTE9DKCkgd2l0aCBBTExPQygpCgkrIE1FTV9Db3B5KCkgdG8gYXZvaWQgYSBtZW1vcnkgYnVnLgoKMjAwMS0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEltcHJvdmVkIHRoZSBpbmRleCBzb3J0aW5nIHJvdXRpbmUgdG8gcGxhY2UKCWNhcGl0YWwgbGV0dGVycyBiZWZvcmUgc21hbGwgb25lcy4gIEFkZGVkIHRoZSAiPG9yZGVyPiIgbWFya2VyIHRvCglzZWN0aW9uIGJsb2NrcyBpbiBvcmRlciB0byBnaXZlIHRoZSBvcmRlciBvZiBibG9ja3MuCgoyMDAxLTAxLTMwICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogTGF0ZXN0IHVwZGF0ZXMgdG8gTWljcm9zb2Z0IGxhbmd1YWdlCglJRCBjb2Rlcy4KCjIwMDEtMDEtMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGhldXJpc3RpYyB0byBnZXQKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSBmb250IG1hdHJpeC4KCgkocGFyc2VfZGljdCk6IERlbGV0ZWQgdGVzdCB0byBzZWUgd2hldGhlciB0aGUgRm9udEluZm8ga2V5d29yZCBoYXMKCWJlZW4gc2Vlbi4gIERlbGV0aW9uIG9mIHRoaXMgdGVzdCBhbGxvd3MgZm9udHMgd2l0aG91dCBGb250SW5mbwoJZGljdGlvbmFyaWVzIHRvIGJlIHBhcnNlZCBieSB0aGUgVHlwZSAxIGRyaXZlci4KCgkoVDFfT3Blbl9GYWNlKTogRGVsZXRlZCBlbXB0eSBzdWJyb3V0aW5lcyBhcnJheSB0ZXN0IHRvIG1ha2Ugc3VyZQoJZm9udHMgd2l0aCBubyBzdWJyb3V0aW5lcyBzdGlsbCBhcmUgcGFyc2VkLgoKMjAwMS0wMS0xNyAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2ZyZWFkLmMgKHBjZl9nZXRfcHJvcGVydGllcywgcGNmX2dldF9tZXRyaWNzLAoJcGNmX2dldF9iaXRtYXBzKTogRml4IGNvbXBpbGVyIGVycm9ycy4KCjIwMDEtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUmVtb3ZlZCBzb21lIGNvbXBpbGF0aW9uIHdhcm5pbmdzIHJlbGF0ZWQKCXRvIGNvbXBhcmlzb24gb2Ygc2lnbmVkIHZzLiB1bnNpZ25lZCBpbnRlZ2Vycy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBDaGFuZ2VkIHRoZSBkZWJ1ZyB0cmFjZQoJY29uc3RhbnRzIGZyb20gdHJhY2VfdDJ4eHh4IHRvIHRyYWNlX2NmZnh4eHggdG8gYmUgYWJsZSB0byBjb21waWxlCgl0aGUgQ0ZGIGRyaXZlciBpbiBkZWJ1ZyBtb2RlLgoKMjAwMS0wMS0xMSAgTWF0dGhldyBDcm9zYnkgIDxtY3Jvc2J5QG1hcnRob24ub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBGaXggcHJvYmxlbXMgd2l0aCBzZXBhcmF0ZQoJLS1wcmVmaXggYW5kIC0tZXhlYy1wcmVmaXguCgoyMDAxLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgY3Jvc3MtcmVmZXJlbmNlcyBnZW5lcmF0aW9uIGFzIHdlbGwgYXMKCW1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIHBhdGhuYW1lIHdpbGRjYXJkIG1hdGNoaW5nLgoKMjAwMS0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogTWlub3IgaW1wcm92ZW1lbnRzIHRvIHJlZHVjZSB1bndhbnRlZCBzcGFjZXMKCWFuZCBlbXB0eSBsaW5lcyBpbiBvdXRwdXQuCgoyMDAxLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogSW1wcm92ZWQgc2NyaXB0IHRvIGdlbmVyYXRlIHRhYmxlIG9mIGNvbnRlbnRzCglhbmQgaW5kZXggcGFnZXMuICBJdCBhbHNvIHN1cHBvcnRzIHdpbGRjYXJkcyBvbiBub24gVW5peCBzeXN0ZW1zLgoKCSogaW5jbHVkZS9mcmVldHlwZS8qLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKi5oOiBVcGRhdGVkIGNvbW1lbnRzCgl0byBpbmNsdWRlIHNlY3Rpb24gZGVmaW5pdGlvbnMvZGVsaW1pdGF0aW9ucyBmb3IgdGhlIEFQSSBSZWZlcmVuY2UKCWdlbmVyYXRvci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogTW92ZWQgZGVjbGFyYXRpb24gb2YKCWBGVF9HZW5lcmljX0ZpbmFsaXplcicgYW5kIHRoZSBgRlRfR2VuZXJpYycgc3RydWN0dXJlIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oOiBoZXJlLgoKMjAwMS0wMS0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGVkIFVuaWNvZGUgY29kZSByYW5nZSBjb21tZW50cy4KCjIwMDEtMDEtMDMgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3J1bGVzLm1rOiBVc2UgY2ZmZ2xvYWQue2MsaH0gaW5zdGVhZCBvZiB0Mmdsb2FkLntjLGh9LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBDaGFuZ2VkIHRvIHVzZSBjZmZ0eXBlcy5oCgkoY2ZmZXJycy5oKSBpbnN0ZWFkIG9mIHQydHlwZXMuaCAodDJlcnJvcnMuaCwgcmVzcGVjdGl2ZWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogTWVyZ2VkIGluIGNoYW5nZXMgZnJvbQoJdDJ0eXBlcy5oIGFuZCBtYWRlIHRoaXMgdGhlIGNhbm9uaWNhbCBgdHlwZXMnIGhlYWRlciBmb3IgdGhlIENGRgoJZHJpdmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MnR5cGVzLmg6IFRoaXMgZmlsZSB3YXMgbWVyZ2VkIHdpdGgKCWNmZnR5cGVzLmggYW5kIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QyZXJyb3JzLmg6CVJlbmFtZWQgdG8gY2ZmZXJycy5oLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmMsCglzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLAoJc3JjL2NmZi9jZmZnbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmg6IENoYW5nZWQgdG8gdXNlCgljZmZnbG9hZC57YyxofSBpbnN0ZWFkIG9mIHQyZ2xvYWQue2MsaH0uICBBbGwgb2NjdXJyZW5jZXMgb2YgdDJfCgkoVDJfKSB3ZXJlIHJlcGxhY2VkIHdpdGggY2ZmXyAoQ0ZGXywgcmVzcGVjdGl2ZWx5KS4KCgkqIHNyYy9jZmYvdDJnbG9hZC5oOiBSZW5hbWVkIGNmZmdsb2FkLmguCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYzogUmVuYW1lZCBjZmZnbG9hZC5jCgoyMDAwLTAxLTAyICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBidWlsZHMvdm1zOiBTdXBwb3J0IGZpbGVzIGZvciBWTVMgYXJjaGl0ZWN0dXJlIGFkZGVkLgoJKiBkZXNjcmlwLm1tcywgc3JjLyovZGVzY3JpcC5tbXM6IFZNUyBtYWtlZmlsZXMgYWRkZWQuCgkqIFJFQURNRS5WTVM6IE5ldyBmaWxlLgoKMjAwMC0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTElDRU5TRS5UWFQ6IEFkZGVkIGluZm8gYWJvdXQgUENGIGRyaXZlciBsaWNlbnNlLgoKMjAwMS0wMS0wMSAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvKjogTmV3IGRyaXZlciBtb2R1bGUgZm9yIFBDRiBmb250IGZvcm1hdCAodXNlZCBpbgoJWCBXaW5kb3cgU3lzdGVtKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogQWRkZWQgdmFsdWVzIGZvcgoJUENGIGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wY2Z0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogQWRkZWQgUENGIGRyaXZlciBtb2R1bGUuCgoyMDAxLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfQ2hhcl9JbmRleCk6IEZpeCBwYXJhbWV0ZXIgdHlwZS4KCjIwMDAtMTItMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGVzLm1rIChjbGVhbl9tb2R1bGVfbGlzdCk6IEZpeGVkIGRlbGV0aW9uIG9mIG1vZHVsZQoJZmlsZSBpbiBjYXNlIGBtYWtlIG1ha2VfbW9kdWxlX2xpc3QnIGlzIGNhbGxlZCBiZWZvcmUgYG1ha2Ugc2V0dXAnLgoKMjAwMC0xMi0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0NoYXJzZXQpOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlcy4KCShDRkZfTG9hZF9DaGFyc2V0LCBDRkZfTG9hZF9FbmNvZGluZyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZQoJZGVmaW5pdGlvbi4KCjIwMDAtMTItMzAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogQ2hhbmdlZCB0aGUgc3RydWN0dXJlcyBmb3IKCUNGRl9FbmNvZGluZyBhbmQgQ0ZGX0VuY29kaW5nIGZvciB0aGUgbmV3IGltcGxlbWVudGF0aW9ucyBvZiB0aGUKCWNoYXJzZXQgYW5kIGVuY29kaW5nIHBhcnNlcnMgaW4gdGhlIENGRiBkcml2ZXIuCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAodDJfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlLAoJdDJfb3BlcmF0b3Jfc2VhYyk6IEFkZGVkIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdXNlIGluIGltcGxlbWVudGluZyB0aGUKCXNlYWMgZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBUeXBlIDIgZW5kY2hhciBvcGVyYXRvci4KCShUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHNlYWMgZW11bGF0aW9uIGZvciB0aGUgZW5kY2hhcgoJb3BlcmF0b3IuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcsIENGRl9Mb2FkX0NoYXJzZXQsCglDRkZfRG9uZV9FbmNvZGluZywgQ0ZGX0RvbmVfQ2hhcnNldCk6IEV4dGVuZGVkIHRvIGxvYWQgYW5kIHBhcnNlIHRoZQoJY2hhcnNldC9lbmNvZGluZyB0YWJsZXMsIGFuZCBmcmVlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGVtIHdoZW4gdGhlCglDRkYgZHJpdmVyIGlzIGZpbmlzaGVkIHdpdGggdGhlbS4gIEFkZGVkIHRhYmxlcwoKCSAgICBjZmZfaXNvYWRvYmVfY2hhcnNldAoJICAgIGNmZl9leHBlcnRfY2hhcnNldAoJICAgIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldAoJICAgIGNmZl9zdGFuZGFyZF9lbmNvZGluZwoJICAgIGNmZl9leHBlcnRfZW5jb2RpbmcKCglzbyB0aGF0IHRoZSBlbmNvZGluZy9jaGFyc2V0IHBhcnNlciBjYW4gaGFuZGxlIHByZWRlZmluZWQgZW5jb2RpbmdzIGFuZAoJY2hhcnNldHMuCgoyMDAwLTEyLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKFQyX0xvYWRfR2x5cGgpOiBBZGRlZCBjb2RlCXNvIHRoYXQgdGhlIGZvbnQKCXRyYW5zZm9ybSBpcyBhcHBsaWVkLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBjb2RlIHNvIHRoYXQKCXRoZSBmb250IG1hdHJpeCBudW1iZXJzCWFyZSBzY2FsZWQgYnkgMS8obWF0cml4LT55eSkuICBBbHNvLCB0aGUKCW9mZnNldCB2ZWN0b3Igbm93IGNvbnRhaW5zIGludGVnZXIgdmFsdWVzIGluc3RlYWQgb2YgMTYuMTYgZml4ZWQKCW51bWJlcnMuCgoyMDAwLTEyLTIyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNvbW1lbnRzIGFuZCBjb21tZW50ZWQtb3V0IGNvZGUuCgoyMDAwLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRhZm0uYywgc3JjL2NpZC9jaWRhZm0uaDogcmVtb3ZlZCB1bi1uZWVkZWQgZmlsZXMsCgl3ZSdsbCB3b3JrIG9uIHN1cHBvcnRpbmcgQ0lEIEFGTSBmaWxlcyBsYXRlciBJIGd1ZXNzIDotKQoKMjAwMC0xMi0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQsIGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCUNoYW5nZWQgc28gdGhhdCBmb250cyB3aXRoIGEgbm9uLXN0YW5kYXJkIEZvbnRNYXRyaXggcmVuZGVyCgljb3JyZWN0bHkuICBQcmV2aW91c2x5LCB0aGUgZmlyc3QgZ2x5cGggcmVuZGVyZWQgZnJvbSBzdWNoIGEKCWZvbnQgZGlkIG5vdCBoYXZlIHRoZSB0cmFuZm9ybWF0aW9uIG1hdHJpeCBhcHBsaWVkLgoKMjAwMC0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi5tazogQWRkZWQgbG90cyBvZiBgLlBIT05ZJyB0YXJnZXRzLgoKMjAwMC0xMi0xNyAgS2Fyc3RlbiBGbGVpc2NoZXIgIDxrZmxlaXNjMUBmb3JkLmNvbT4KCgkqICoubWs6IEltcGxlbWVudGVkIGBwbGF0Zm9ybScgdGFyZ2V0IHRvIGRpc2FibGUgYXV0by1kZXRlY3Rpb24uCgoyMDAwLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2Rlc2lnbi9tb2R1bGVzLmh0bWw6IFJlbW92ZWQuICBDb3ZlcmVkIGJ5IGRlc2lnbi0qLmh0bWwuCgoJKiBJTlNUQUxMOiBBZGRlZCBpbmZvIGFib3V0IG1ha2VwcC4KCjIwMDAtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJQWRkZWQgc3VwcG9ydCBmb3IgY2xpcHBlZCBkaXJlY3QgcmVuZGVyaW5nIGluIHRoZSBzbW9vdGggcmVuZGVyZXIuCglUaGlzIHNob3VsZCBub3QgYnJlYWsgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXhpc3RpbmcgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBNb3ZlCglkZWZpbml0aW9uIG9mIHRoZSBGVF9CQm94IHN0cnVjdHVyZSBmcm9tIHRoZSBmb3JtZXIgdG8gdGhlIGxhdHRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEFkZCBgZnRfcmFzdGVyX2ZsYWdfY2xpcCcgdmFsdWUgdG8KCUZUX1Jhc3Rlcl9GbGFnIGVudW1lcmF0aW9uLgoJQWRkIGBjbGlwX2JveCcgZWxlbWVudCB0byBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2NvbnZlcnRfZ2x5cGgpOiBJbXBsZW1lbnQgaXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgb24gV2luMzIsIGxpc3RpbmcgdGhlCgluZXcgIm1ha2Ugc2V0dXAgbGlzdCIgdGFyZ2V0IHVzZWQgdG8gbGlzdCBzdXBwb3J0ZWQKCWNvbXBpbGVycy90YXJnZXRzLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19yZW5kZXIpOiBUZXN0IGZvciB1bnN1cHBvcnRlZAoJZGlyZWN0IHJlbmRlcmluZyBiZWZvcmUgdGVzdGluZyBhcmd1bWVudHMuCgoyMDAwLTEyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogRml4ZWQgaGVhZGVyIGluY2x1c2lvbiBtYWNyb3MKCXRvIHVzZSBkaXJlY3QgZGVmaW5pdGlvbnMuICBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBkbyB0aGVzZSB0aGluZ3MKCWluIGEgcG9ydGFibGUgd2F5IDotKCAgVGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2hvdWxkIGZvbGxvdyBzaG9ydGx5Cgl0aG91Z2ggZXZlcnl0aGluZyBjb21waWxlcyBub3cuCgoJKiBidWlsZHMvY29tcGlsZXIvaW50ZWxjLm1rLCBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rOiBOZXcgZmlsZXMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW50ZWwgQy9DKysKCWNvbXBpbGVyLCBhcyB3ZWxsIGFzIF9wcmVsaW1pbmFyeV8gKHJlYWQ6IGRvZXNuJ3Qgd29yayEpIHN1cHBvcnQgZm9yCglXYXRjb20uICBBbHNvIGFkZGVkIGEgbmV3IHNldHVwIHRhcmdldC4gIFR5cGUgIm1ha2Ugc2V0dXAgbGlzdCIgZm9yCglhIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbW1hbmQtbGluZSBjb21waWxlcnMgb24gV2luMzIuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IEFkZGVkIGR1bW15IHN5bWJvbCB0byBhdm9pZCBlbXB0eSBmaWxlIGlmCgljb25kaXRpb25hbHMgYXJlIG9mZi4KCjIwMDAtMTItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IEZpeGVkIHR5cG9zLiAgRml4ZWQgaW5jbHVzaW9uIG9mIHdyb25nCglmdGNvbmZpZy5oIGZpbGUuCgoyMDAwLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oIChGVDJfUk9PVCwgRlQyX0NPTkZJR19ST09UKToKCVJlbW92ZWQuICBBTlNJIEMgZG9lc24ndCAoZXhwbGljaXRseSkgYWxsb3cgbWFjcm8gZXhwYW5zaW9uIGluCglhcmd1bWVudHMgdXNpbmcgYCMjJy4KCShGVDJfUFVCTElDX0ZJTEUsIEZUMl9DT05GSUdfRklMRSwgRlQyX0lOVEVSTkFMX0ZJTEUpOiBVc2UgZGlyZWN0b3J5CgluYW1lcyBkaXJlY3RseS4gIE1ha2UgdGhlbSBjb25maWd1cmFibGUuICBVc2UgYCMjJyB0byBzdHJpcCBsZWFkaW5nCglhbmQgdHJhaWxpbmcgc3BhY2VzIGZyb20gYXJndW1lbnRzLgoKCSogYnVpbGRzL3VuaXgvZnQydW5peC5oOiBBZGFwdGVkLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoZnRfYWxsb2MsIGZ0X3JlYWxsb2MsIGZ0X2ZyZWUsIGZ0X2lvX3N0cmVhbSwKCWZ0X2Nsb3NlX3N0cmVhbSk6IFVzZSBGVF9DQUxMQkFDS19ERUYuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jOiBVc2UgbmV3IGhlYWRlciBzY2hlbWUuCgkoRlRfRG9uZV9NZW1vcnkpOiBVc2UgZnJlZSgpIGZyb20gRlRfTWVtb3J5IHN0cnVjdHVyZS4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jLCBzcmMvYmFzZS9mdG1hYy5jOiBIZWFkZXIgc2NoZW1lIGZpeGVzLgoKMjAwMC0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCAoRlQyX0NPTkZJR19ST09ULAoJRlQyX1BVQkxJQ19GSUxFLCBGVDJfQ09ORklHX0ZJTEUsIEZUMl9JTlRFUk5BTF9GSUxFLAoJRlRfU09VUkNFX0ZJTEUpOiBVc2UgYCMjJyBvcGVyYXRvciB0byBiZSByZWFsbHkgQU5TSSBDIGNvbXBsaWFudC4KCjIwMDAtMTItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogUmVtb3ZlIHVudXNlZCBVU0VfQ0ZMQUdTIHZhcmlhYmxlLgoKMjAwMC0xMi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi8qLmg6IENoYW5nZWQgYm9keSBpbmNsdXNpb24gbWFjcm8gbmFtZXMgdG8gc3RhcnQgYW5kIGVuZCB3aXRoCglgX18nICh0aG9zZSB3aGljaCBoYXZlbid0IGNvbnZlcnRlZCB5ZXQpLiAgRml4ZWQgbWlub3IgY29udmVyc2lvbgoJaXNzdWVzLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBSZW1vdmUgdW51c2VkIENBTENfTGVuZ3RoKCkgbWFjcm8uCgoyMDAwLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogKi8qLltjaF06IENoYW5nZWQgc291cmNlIGZpbGVzIHRvIGFkaGVyZSB0byB0aGUgbmV3CgloZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4gIE5vdCBjb21wbGV0ZWx5IHRlc3RlZCBidXQgd29ya3MgZm9yIG5vdwoJaGVyZS4KCgkqIHNyYy9jZmYvdDJkcml2ZXIuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QyZHJpdmVyLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZkcml2ci5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJsb2FkLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90Mm9ianMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJ0b2tlbnMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnRva2VuLmg6IE5ldyBmaWxlLgoKCSogc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDAtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1X0RvbmUpOiBGaXhlZCBtZW1vcnkgbGVhay4KCjIwMDAtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGUubWs6IFJlcGxhY2VkIGB4eHggIycgd2l0aCBgeHh4JChzcGFjZSkuCgkqIGJ1aWxkcy9vczIvZGV0ZWt0Lm1rLCBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBNb3ZlZCBjb21tZW50IHRvCglhdm9pZCB0cmFpbGluZyBzcGFjZXMgaW4gdmFyaWFibGUuCgkqIGJ1aWxkcy9mcmVldHlwZS5tazogVXNlICQoRCkgaW5zdGVhZCBvZiAkRCB0byBtYWtlIHN0YXRlbWVudCBtb3JlCglyZWFkYWJsZS4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEZvcm1hdHRpbmcuCgoyMDAwLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmM6IEZpeGVkIGEgYnJva2VuIGluY2x1c2lvbiBvZiBjb21wb25lbnQKCWhlYWRlciBmaWxlcyAoYW4gRlRfRkxBVF9DT01QSUxFIHRlc3Qgd2FzIG1pc3NpbmcpLgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZAoJYW4gb2NjYXNpb25hbCBjcmFzaCB3aGVuIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIChkdWUgdG8gYSBkYW5nbGluZwoJcG9pbnRlcikuCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9Eb25lX01lbW9yeSk6IEZpeGVkIGFuIG9idmlvdXMgYnVnOgoJVGhlIEFOU0kgImZyZWUoKSIgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbnN0ZWFkIG9mICJtZW1vcnktPmZyZWUoKSIuCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBzZWN0aW9uIGZpbHRlcmluZywgbXVsdGktcGFnZSBnZW5lcmF0aW9uCgkoaW5kZXggcGFnZSBnZW5lcmF0aW9uIGlzIHN0aWxsIG1pc3NpbmcgdGhvdWdoKS4KCjIwMDAtMTItMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IFRoZSBmaWxlICJmdDJ1bml4LmgiCglpcyBub3cgaW5zdGFsbGVkIGFzIDxmdDJidWlsZC5oPiBmb3IgVW5peCBzeXN0ZW1zLiAgTm90ZSB0aGF0IHdlCglzdGlsbCB1c2UgdGhlICJmcmVldHlwZTIvZnJlZXR5cGUiIGluc3RhbGxhdGlvbiBwYXRoIGZvciBub3cuCgoJKiAqLyouW2NoXTogTm93IHVzaW5nIDxmdDJidWlsZC5oPiBhcyB0aGUgZGVmYXVsdCBidWlsZCBhbmQgc2V0dXAKCWNvbmZpZ3VyYXRpb24gZmlsZSBpbiBhbGwgcHVibGljIGhlYWRlcnMuICBJbnRlcm5hbCBzb3VyY2UgZmlsZXMKCXN0aWxsIG5lZWQgc29tZSBjaGFuZ2VzIHRob3VnaC4KCgkqIGJ1aWxkcy9kZXZlbC9mdDJidWlsZC5oLCBidWlsZHMvZGV2ZWwvZnRvcHRpb24uaDogQ3JlYXRlZCBhIG5ldwoJZGlyZWN0b3J5IHRvIGhvbGQgYWxsIGRldmVsb3BtZW50IG9wdGlvbnMgZm9yIGJvdGggdGhlIFVuaXggYW5kCglXaW4zMiBkZXZlbG9wZXIgYnVpbGRzLgoKCSogYnVpbGRzL3dpbjMyL2RldGVjdC5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1kZXYubWs6IENoYW5nZWQgdGhlIGRldmVsb3BlciBidWlsZCB0YXJnZXRzIHRvCgkiZGV2ZWwtZ2NjIiBhbmQgImRldmVsLWJjYyIgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXZlbG9wIHdpdGggdGhlCglCb3JsYW5kIEMrKyBjb21waWxlci4KCjIwMDAtMTItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuMSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sIGJ1aWxkcy91bml4L2NvbmZpZ3VyZSwKCWJ1aWxkcy9jeWd3aW4vY29uZmlndXJlLmluLCBidWlsZHMvY3lnd2luL2NvbmZpZ3VyZTogU2V0dGluZwoJInZlcnNpb25faW5mbyIgdG8gNjoxOjAgZm9yIHRoZSAyLjAuMSByZWxlYXNlLgoKCSogQ0hBTkdFUzogQWRkZWQgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgYmV0d2VlbiAyLjAuMSBhbmQgMi4wLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnRjb25maWcuaW46IENoYW5nZXMKCXRvIGFsbG93IGNvbXBpbGF0aW9uIHVuZGVyIFVuaXggd2l0aCB0aGUgVW5peC1zcGVjaWZpYyBjb25maWcKCWZpbGVzLgoKMjAwMC0xMi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogUmV2aXNlZC4KCSogYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssIGJ1aWxkcy9jb21waWxlci92aXN1YWxhZ2UubWssCglidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjYy5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjZC5tazogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoyMDAwLTExLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKC5QSE9OWSk6IEFkZGluZyBgZGlzdGNsZWFuJy4KCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rICguUEhPTlkpOiBBZGRpbmcgYGRldmVsJywgYHVuaXgnLCBgbGNjJywKCWBzZXR1cCcuCgoyMDAwLTExLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub2dyPgoKCSogSU5TVEFMTDogU2xpZ2h0bHkgdXBkYXRlZCB0aGUgcXVpY2sgc3RhcnRlciBkb2N1bWVudGF0aW9uIHRvCglpbmNsdWRlIElERSBjb21waWxhdGlvbiwgcHJldmVudCBhZ2FpbnN0IEJTRCBNYWtlLCBhbmQgc3BlY2lmeSAibWFrZQoJc2V0dXAiIGluc3RlYWQgb2YgYSBzaW5nbGUgIm1ha2UiIGZvciBidWlsZCBjb25maWd1cmF0aW9uLgoKCSogaW5jbHVkZS9jb25maWcvZnRidWlsZC5oLCBpbmNsdWRlL2ludGVybmFsL2ludGVybmFsLmg6IEFkZGVkIG5ldwoJY29uZmlndXJhdGlvbiBmaWxlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24gb2YgYWxsIHB1YmxpYywKCWNvbmZpZ3VyYXRpb24sIGFuZCBpbnRlcm5hbCBoZWFkZXIgZmlsZXMgZm9yIEZyZWVUeXBlIDIuICBNb2RpZmllZAoJYWxsIGhlYWRlcnMgdW5kZXIgImluY2x1ZGUvZnJlZXR5cGUiIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuICBOb3RlCgl0aGF0IHdlIHN0aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBsaWJyYXJ5IHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzCgl0aG91Z2guCgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBuZXcgZmlsZXMgdG8gc3VwcG9ydCBjb21waWxhdGlvbiB3aXRoCgl0aGUgZnJlZSBCb3JsYW5kIEMrKyBjb21tYW5kLWxpbmUgY29tcGlsZXIuICBNb2RpZmllZCB0aGUgZGV0ZWN0aW9uCglydWxlcyB0byByZWNvZ25pemUgdGhlIG5ldyAiYmNjMzIiIHRhcmdldCBpbiAibWFrZSBzZXR1cCBiY2MzMiIuCgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRwb3N0LmMsIHNyYy9zZm50L3R0c2JpdC5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLAoJc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IEZpeGVkIGEgZmV3IGNvbXBhcmlzb25zIHRoYXQgQm9ybGFuZCBDKysKCWRpZG4ndCByZWFsbHkgbGlrZS4gIEJhc2ljYWxseSwgdGhpcyBjb21waWxlciBjb21wbGFpbnMgd2hlbiBGVF9VSW50CglpcyBjb21wYXJlZCB0byBGVF9VU2hvcnQgKGFwcGFyZW50bHksIGl0IHByb21vdGVzIGBVU2hvcnQnIHRvIGBJbnQnCglpbiB0aGVzZSBjYXNlcykuCgoyMDAwLTExLTMwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEFkZGVkIGNhbGN1bGF0aW9uIG9mIGBmYWNlLT5oZWlnaHQnIGZvcgoJcHVyZSBDRkYgZm9udHMuCgoJKiB0MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogRml4ZWQgY29tcHV0YXRpb24gb2YgYGZhY2UtPmhlaWdodCcuCgoyMDAwLTExLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ29uaWNfQ2hlY2spOiBGaXhlZCBhIHJlYWxseSBzdHVwaWQKCWJ1ZyBpbiB0aGUgZm9ybXVsYSB1c2VkIHRvIGNvbXB1dGUgdGhlIGNvbmljIELpemllciBleHRyZW1hCglvZiBub24tbW9ub3Rvbm91cyBhcmNzLgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfU2V0X1JlbmRlcmVyKTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKSwKCXNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Eb25lLCBGVENfTWFuYWdlcl9SZXNldCwKCUZUQ19NYW5hZ2VyX0xvb2t1cF9GYWNlLCBGVENfTWFuYWdlcl9Mb29rdXBfU2l6ZSwKCUZUQ19NYW5hZ2VyX1JlZ2lzdGVyX0NhY2hlKSwgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKCShGVENfU0JpdF9DYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmggKEZUQ19HbHlwaE5vZGVfSW5pdCksCglzcmMvaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIChGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVc2UgRlRfRVhQT1JULgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSB0dHNiaXQuaCBhbmQgdHRwb3N0Lmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcywgU2V0X1BpeGVsX1NpemVzKTogU2V0Cglgc2l6ZS0+c3RyaWtlX2luZGV4JyBvbmx5IGNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBJbmNsdWRlIHQxYWZtLmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuaDogTW92ZSBhbGwgdHlwZSBkZWZpbml0aW9ucyB0by4uLgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBOZXcgZmlsZS4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVc2UgaXQuCgoyMDAwLTExLTI5ICA/Pz8gPz8/ICA8ZGFyaW5AZWF6ZWwuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IFJlcGxhY2VkIEZUX0NBVCBhbmQgRlRfWENBVAoJd2l0aCBhIGRpcmVjdCBzb2x1dGlvbiAod2hpY2ggYWxzbyBzYXRpZmllcyBwaWNreSBjb21waWxlcnMpLgoKMjAwMC0xMS0yOCAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfSW5pdF9TaXplKTogRml4ICNpZmRlZidzIHRvIHdvcmsgd2l0aAoJZGlzYWJsZWQgaW50ZXJwcmV0ZXIgYWxzby4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZV9Db3VudCk6IEZpeCBpbmNvcnJlY3QKCXBhcmVudGhlc2VzLgoKMjAwMC0xMS0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIGxvZ2ljIHRvIGdseXBoCgl3aWR0aCBzZXR0aW5nIGNvZGUgdG8gdGFrZSBpbnRvIGFjY291bnQgZXZlbi9vZGQgYXJndW1lbnQgY291bnRzCglhbmQgZ2x5cGggd2lkdGggb3BlcmFuZCBiZWZvcmUgZW5kY2hhci9obW92ZXRvL3Ztb3ZldG8uCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvYW5zaS9hbnNpLm1rOiBGaXggaW5jbHVzaW9uIG9yZGVyIG9mIGZpbGVzLgoKMjAwMC0xMS0yNiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDb21wdXRlIHN0eWxlIGZsYWdzLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsgKENMRUFOX0xJQlJBUlkpOiBGaXggcnVsZSBhbmQKCWNvbmRpdGlvbmFsLgoKMjAwMC0xMS0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9Eb25lX1BhcnNlKTogUmVuYW1lZCB0by4uLgoJKFQxX0ZpbmFsaXplX1BhcnNlcik6IE5ldyBmdW5jdGlvbiAodG8gYXZvaWQgbmFtZSBjbGFzaCB3aXRoIGEKCWZ1bmN0aW9uIGluIHRoZSBQU0F1eCBtb2R1bGUpLgoJKFQxX0RlY3J5cHQpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGR1cGxpY2F0ZWQgaW4gdGhlIFBTQXV4IG1vZHVsZS4KCShUMV9HZXRfUHJpdmF0ZV9EaWN0KTogQWRkZWQgYHBzYXV4JyBhcyBuZXcgcGFyYW1ldGVyOyB1c2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oOiBBZGFwdGVkLgoKMjAwMC0xMS0yMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEZvciBwdXJlIENGRiBmb250cywgc2V0Cglgcm9vdC0+bnVtX2ZhY2VzJyB0byBgY2ZmLT5udW1fZmFjZXMnIGFuZCBzZXQgYHVuaXRzX3Blcl9FTScKCXRvIDEwMDAuCgoJKiBzcmMvY2ZmL3QycGFyc2UuYyAocGFyc2VfdDJfcmVhbCk6IEZpeGVkIHJlYWwgbnVtYmVyIHBhcnNpbmcKCWxvb3AuCgoJKiBzcmMvY2ZmL3QybG9hZC5jIChUMl9HZXRfU3RyaW5nKTogQ2FsbGVkIFQyX0dldF9OYW1lIHdpdGggYQoJc2lkIHRoYXQgd2FzIG9mZiBieSBvbmUuCgoyMDAwLTExLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGRlZCBuZXcgZmllbGRzIHRvIGNvbnRyb2wKCWF1dG8taGludGluZyBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQWRkZWQgYXV0by1oaW50aW5nIHN1cHBvcnQgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCjIwMDAtMTEtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9va1VwX1RhYmxlLCBUVF9Mb2FkX0dlbmVyaWNfVGFibGUpOiBDaGFuZ2UKCXRyYWNpbmcgb3V0cHV0LgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogU2V0IGJvb2xlYW4gdmFyaWFibGUKCWBoYXMtb3V0bGluZScgdG8gdHJ1ZSBvbmx5IGlmIHRoZSBmb250IGhhcyBhIGBnbHlmJyBvciBgQ0ZGICcgdGFibGUuCgoyMDAwLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IEZpeCByYXN0ZXIxLT5yYXN0ZXIgYW5kCgl0eXBlMXotPnR5cGUxLgoKMjAwMC0xMS0xMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL2N5Z3dpbi9mcmVldHlwZS1jb25maWcuaW46CglBZGRlZCBhIC0tbGlidG9vbCBvcHRpb24uICBXaGVuIGZyZWV0eXBlLWNvbmZpZyAtLWxpYnRvb2wgaXMKCWludm9rZWQsIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnkKCWlzIHJldHVybmVkLgoKMjAwMC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi9jeWd3aW4tZGVmLmluOiBTYW1lIGZpeCBhcyBwcmV2aW91cy4KCjIwMDAtMTEtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbjogQWRkCgoJICAgIElOU1RBTExfUFJPR1JBTSA6PSBASU5TVEFMTF9QUk9HUkFNQAoJICAgIElOU1RBTExfU0NSSVBUICA6PSBASU5TVEFMTF9TQ1JJUFRACgoJc28gdGhhdCBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnIGRvZXMgbm90IGZhaWwuCgoyMDAwLTExLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOgoJTW92ZSB0ZXN0IGRvd24gZm9yIGVtcHR5IC0tZXhlYy1wcmVmaXguCglGaXggLS12ZXJzaW9uLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9pbnN0YWxsLm1rOiBVc2UKCSQoSU5TVEFMTF9TQ1JJUFQpIGZvciBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rOiBGaXggY2xlYW4gdGFyZ2V0IG5hbWVzLgoKMjAwMC0xMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT0KCgpMb2NhbCBWYXJpYWJsZXM6CnZlcnNpb24tY29udHJvbDogbmV2ZXIKY29kaW5nOiBsYXRpbi0xCkVuZDoK