U3VuIE9jdCAyNCAxOToxMTozMiAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBzaW0tZDEwdi5oIChTSU1fRDEwVl9UUzJfRE1BUF9SRUdOVU0pOiBEZWZpbmUuCgpTYXQgT2N0IDIzIDE5OjAwOjEzIDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHNpbS1kMTB2Lmg6IE5ldyBmaWxlLgoKMTk5OS0wOS0wNCAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAcG9ib3guY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3BqKTogRGVjbGFyZS4KCjE5OTktMDctMTEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogYW5zaWRlY2wuaDogQ29weSBhdHRyaWJ1dGUgc3VwcG9ydCBtYWNyb3MgZnJvbSBlZ2NzLgoKMTk5OS0wNi0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBBZGQgaW5pdF9mdW5jdGlvbiBhbmQKCWZpbmlfZnVuY3Rpb24uCgoxOTk5LTA2LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWlwcy5oIChFbGYzMl9JbnRlcm5hbF9Nc3ltKTogTmV3IHN0cnVjdHVyZS4KCShFbGYzMl9FeHRlcm5hbF9Nc3ltKTogTGlrZXdpc2UuCgkoRUxGMzJfTVNfUkVMX0lOREVYKTogTmV3IG1hY3JvLgoJKEVMRjMyX01TX0ZMQUdTKTogTGlrZXdpc2UuCgkoRUxGMzJfTVNfSU5GTyk6IExpa2V3aXNlLgoJCjE5OTktMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGFybV90b2dnbGVfcmVnbmFtZXMpOiBOZXcgcHJvdG90eXBlLgoJKHN0cnVjdCBkaWFzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQ6IGRpc2Fzc2VtYmxlcl9vcHRpb25zLgoKMTk5OS0wNC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX2VsZl92ZXJzaW9uX2V4cHIpOiBSZW5hbWUgYG1hdGNoJyB0byBgcGF0dGVybicuCglBZGQgYG1hdGNoJyBjYWxsYmFjayBmdW5jdGlvbi4KCjE5OTktMDQtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBBZGQgbm9fdW5kZWZpbmVkLgoKMTk5OS0wNC0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIHByb3RvdHlwZSBmb3IgcHJpbnRfaW5zbl9tY29yZS4KCjE5OTktMDQtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfY29tcGFyZV9wb2ludGVycyk6IERlY2xhcmUuCgoxOTk5LTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfaW50cyk6IERlY2xhcmUuCgpXZWQgTWFyIDI0IDEyOjQ2OjI5IDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYW15LmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBDeWd3aW57LDMyfSBzaG91bGQgaGF2ZSB0aGUgcHJvdG90eXBlLgoKMTk5OS0wMi0yMiAgSmltIExlbWtlICA8amxlbWtlQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBhZGQgZmllbGQgIm1wYzg2MGMwIi4KCk1vbiBGZWIgIDEgMjE6MDU6NDYgMTk5OSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgogICAgICAgKiBkaXMtYXNtLmggKHByaW50X2luc25faTM4Nl9hdHQpOiAgRGVjbGFyZS4KICAgICAgIChwcmludF9pbnNuX2kzODZfaW50ZWwpOiAgRGVjbGFyZS4KCjk5OC0xMi0zMCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogQ2FzdCBTVFJFQU0gYW5kCglGUFJJTlRGX0ZVTkMgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgpXZWQgRGVjIDMwIDE2OjA3OjE0IDE5OTggIERhdmlkIFRheWxvciAgPHRheWxvckB0ZXhhcy5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBjaGFuZ2Ugdm9pZCAqIHRvIFBUUiAodHdvIHBsYWNlcykuCgpNb24gRGVjIDE0IDA5OjUzOjMxIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmg6IERvbid0IGNoZWNrIElOX0dDQyBhbnltb3JlLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKVHVlIERlYyAgOCAwMDozMDozMSAxOTk4ICBFbGVuYSBaYW5ub25pICA8ZXphbm5vbmlAa3dpa2VtYXJ0LmN5Z251cy5jb20+IAoKCVRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGUgYnkgRWxlbmEgWmFubm9uaQogCTxlemFubm9uaUBrd2lrZW1hcnQuY3lnbnVzLmNvbT4gYW5kIEVkaXRoIEVwc3RlaW4KIAk8ZWVwc3RlaW5Ac29waGlhLmN5Z251cy5jb20+IGFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIG1lcmdlIGluCiAJY2hhbmdlcyBtYWRlIGJ5IEhQOyBIUCBkaWQgbm90IGNyZWF0ZSBDaGFuZ2VMb2cgZW50cmllcy4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBjaGFuZ2UgdGhlIHR5cGUgb2Ygc3RyZWFtCglmcm9tIEZJTEUqIHRvIHZvaWQqLCBmb3IgdXNlIHdpdGggZ2RiJ3MgbmV3IHR5cGUgR0RCX0ZJTEUuCgkoZnByaW50Zl9mdHlwZSk6IGNoYW5nZSBGSUxFKiBwYXJhbWV0ZXIgdHlwZSB0byB2b2lkKi4KCiAgICAgICAgKiBkZW1hbmdsZS5oOiAoRE1HTF9FREcpOiBuZXcgbWFjcm8gZm9yIEt1Y2sgYW5kIEFzc29jaWF0ZXMKICAgICAgICAoRE1HTF9TVFlMRV9NQVNLKTogbW9kaWZ5IHRvIGluY2x1ZGUgS3VjayBhbmQgQXNzb2Mgc3R5bGUKICAgICAgICAoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGVkZ19kZW1hbmdsaW5nIHN0eWxlCiAgICAgICAgKEVER19ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IG5ldyBtYWNybwogICAgICAgIChFREdfREVNQU5HTElORyk6IG5ldyBtYWNybwoKICAgICAgICAqIGRlbWFuZ2xlLmggKERNR0xfSFApOiBuZXcgbWFjcm8sIGZvciBIUC9hQ0MgY29tcGlsZXIuCiAgICAgICAgKERNR0xfU1RZTEVfTUFTSyk6IG1vZGlmeSB0byBpbmNsdWRlIG5ldyBIUCdzIHN0eWxlLgogICAgICAgIChkZW1hbmdsaW5nX3N0eWxlcyk6IGFkZCBuZXcgaHBfZGVtYW5nbGluZyB2YWx1ZS4KICAgICAgICAoSFBfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBuZXcgbWFjcm8uCiAgICAgICAgKEFSTV9ERU1BTkdMSU5HKTogY29lcmNlIHRvIGludC4KICAgICAgICAoSFBfREVNQU5HTElORyk6IG5ldyBtYWNyby4KCgkqIGhwLXN5bXRhYi5oOiByZXdyaXR0ZW4sIGZyb20gSFAuCgkocXVpY2tfcHJvY2VkdXJlKTogY2hhbmdlIHR5cGUgb2YgbGFuZ3VhZ2UgZmllbGQgdG8gdW5zaWduZWQgaW50CgkocXVpY2tfbW9kdWxlKTogY2hhbmdlIHR5cGUgb2YgbGFuZ3VhZ2UgZmllbGQgdG8gdW5zaWduZWQgaW50Cgkoc3RydWN0IGRudHRfdHlwZV9zdmFyKTogYWRkIGZpZWxkIHRocmVhZF9zcGVjaWZpYy4KCShocF9sYW5ndWFnZSk6IGFkZCBsYW5ndWFnZXMgbW9kY2FsIGFuZCBkbXBhc2NhbC4KCk1vbiBOb3YgMzAgMTU6MjU6NTggMTk5OCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZWxmL3NoLmggKGVsZl9zaF9yZWxvY190eXBlKTogQWRkIFJfU0hfRklSU1RfSU5WQUxJRF9SRUxPQywKCVJfU0hfTEFTVF9JTlZBTElEX1JFTE9DLCBSX1NIX1NXSVRDSDggYW5kIFJfU0hfbWF4LgoKRnJpIE5vdiAyMCAxMzoxNDowMCAxOTk4ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBBZGQgcHJvdG90eXBlIGZvciBGcmVlQlNELgoKRnJpIE5vdiAxMyAxOToxOToxMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaDogUHJvdG90eXBlIHhjYWxsb2MuCgpTdW4gTm92ICA4IDE3OjQyOjI1IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IFdyYXAgcHJvYmxlbWF0aWMgbWFjcm9zIHdpdGggIUlOX0dDQy4KCgkqIGRlbWFuZ2xlLmg6IE5ldmVyIGRlZmluZSBQQVJBTVMoKS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClNhdCBOb3YgIDcgMTg6MzA6MjAgMTk5OCAgUGV0ZXIgU2NoYXVlciAgPHBldGVyLnNjaGF1ZXJAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl92YXgpOiBEZWNsYXJlLgoKU2F0IE5vdiAgNyAxNjowNDowMyAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKMTk5OC0xMC0yNiAxNjowMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBvcHRpbWl6ZS4KClRodSBPY3QgMjIgMTk6NTg6MDAgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3BsYXktdHJlZS5oOiBXcmFwIGZ1bmN0aW9uIHBvaW50ZXIgcGFyYW1ldGVyIGRlY2xhcmF0aW9ucyBpbgoJUEFSQU1TKCkgbWFjcm8uCgoxOTk4LTEwLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc3BsYXktdHJlZS5oOiBOZXcgZmlsZS4KCkZyaSBPY3QgIDkgMDA6MDI6MDMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWVyZ2UgZGV2byBhbmQgZWdjcyBpbmNsdWRlIGRpcmVjdG9yaWVzLgoKU2F0IFNlcCAgNSAxMjoxNjozMyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaCwgb2JzdGFjay5oOiBVcGRhdGVkIGZyb20gZ2NjLgoKMTk5OC0wOC0wMyAgSmFzb24gTW9sZW5kYSAgKGpzbUBidWdzaGFjay5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5LmggKHhleGl0KTogQ2hhbmdlIGRlY2wgdG8gdXNlIG1vZGVybiBHQ0MgYXR0cmlidXRlCgl0byBpbmRpY2F0ZSBleGl0IGRvZXMgbm90IHJldHVybi4KCk1vbiBKdW4gIDEgMTM6NDg6MzIgMTk5OCAgSmFzb24gTW9sZW5kYSAgKGNyYXNoQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpUdWUgTWF5IDI2IDIwOjU3OjQzIDE5OTggIFN0YW4gQ294ICA8c2NveEBlcXVpbm94LmN5Z251cy5jb20+CgoJKiBlbGYvc3BhcmMuaCAoRUZfU1BBUkNfTEVEQVRBLCBSX1NQQVJDXzMyTEUpOiBBZGRlZC4KClR1ZSBGZWIgMjQgMTM6MDU6MDIgMTk5OCAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE1lbWJlciBgc3ltYm9sJyByZW5hbWVkIHRvIGBzeW1ib2xzJwoJYW5kIG1hZGUgYW4gImFzeW1ib2wgKioiLiAgTmV3IG1lbWJlciBudW1fc3ltYm9scy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IFVwZGF0ZS4KClR1ZSBGZWIgMTcgMTI6MzI6MTggMTk5OCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fZmV0Y2hfcmVnaXN0ZXIsIHNpbV9zdG9yZV9yZWdpc3Rlcik6IEFkZAogCXJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXIuICBGdW5jdGlvbnMgcmV0dXJuIGFjdHVhbCBsZW5ndGggb2YKIAlyZWdpc3Rlci4KClRodSBGZWIgMTIgMTY6Mjk6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZ2V0b3B0Lmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpXZWQgRmViIDExIDE2OjU2OjA2IDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBzeW1jYXQuaDogTmV3IGZpbGUuCgpNb24gRmViICAyIDE3OjEzOjMxIDE5OTggIFN0ZXZlIEhhd29ydGggIDxzdGV2ZUBwbS5jc2Uucm1pdC5FRFUuQVU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljMzApOiBEZWNsYXJlLgoKVGh1IEphbiAyMiAxNjoyMzo1OSAxOTk4ICBGcmVkIEZpc2ggPGZuZkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgZmxhZyBJTlNOX0hBU19SRUxPQyB0byB0ZWxsIGRpc2Fzc2VtYmx5CglmdW5jdGlvbiB0aGVyZSBpcyBhIHJlbG9jIG9uIHRoaXMgbGluZS4KCk1vbiBEZWMgIDggMTE6MjI6MjMgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogUmVtb3ZlIHByb3RvdHlwZSBvZiBkaXNhc21fc3ltYWRkcigpIGFzIHRoaXMgZnVuY3Rpb24KCW5vIGxvbmdlciBleGlzdHMuCgpUdWUgRGVjICAyIDEwOjIwOjUzIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2FzbV9zeW1hZGRyKTogTmV3IHByb3RvdHlwZS4KCk1vbiBEZWMgIDEgMjA6MjQ6MTggMTk5NyAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogY29mZi9zaC5oIChSX1NIX1NXSVRDSDgpOiBOZXcuCgpNb24gRGVjICAxIDExOjI5OjM1IDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ29tbWVudCBvdXQgYXJnIG5hbWVzIGluIHByb3RvdHlwZXMuCgpXZWQgTm92IDI2IDE2OjQ3OjU4IDE5OTcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENvbnNpc3RhbnRseSB1c2UgbmFtZXMgZm9yIHByb3RvdHlwZQoJYXJndW1lbnRzLgoKV2VkIE5vdiAyNiAxMTozOTozMCAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENoYW5nZSBieXRlIGNvdW50IGFyZ3VtZW50cyB0bwoJe3JlYWQsd3JpdGV9X21lbSB0byBgaW50Jy4gIE5ldyBtZW1iZXIgYG1hZ2ljJy4KCShDQl9TWVNDQUxMX01BR0lDLENCX1NZU0NBTExfSU5JVCk6IE5ldyBtYWNyb3MuCgpUdWUgTm92IDI1IDAxOjM1OjUyIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoc3RydWN0IHN0YXQpOiBNb3ZlIGZvcndhcmQgZGVjbCB1cC4KCShob3N0X2NhbGxiYWNrKTogUGFzcyBzdGF0IHN0cnVjdCBwb2ludGVyIHRvIHN0YXQsZnN0YXQuCgkoQ0JfU1lTX25ubik6IFJlb3JnYW5pemUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyBtZW1iZXJzIHAxLHAyLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X3N0YXQpOiBEZWxldGUgZm91cnRoIGFyZy4KClNhdCBOb3YgMjIgMjM6MzQ6MTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc3RvcF9yZWFzb24pOiBDbGFyaWZ5IHNpbV9zaWduYWxsZWQgU0lHUkMKIAlhcmd1bWVudC4KCk1vbiBOb3YgMTcgMTQ6MDA6NTEgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BzZWJhLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9UQVJHRVRfREVGU19NQVApOiBSZW5hbWVkIGZyb20gdGFyZ2V0X2RlZnNfbWFwLgoJKGhvc3RfY2FsbGJhY2spOiBBZGQgc3RhdCwgZnN0YXQsIHN5c2NhbGxfbWFwLCBlcnJub19tYXAsIG9wZW5fbWFwLAoJc2lnbmFsX21hcCwgc3RhdF9tYXAuCgkoZXJybl9tYXAsb3Blbl9tYXApOiBSZW5hbWVkIHRvIGNiX2luaXRfZm9vX21hcC4KCShjYl9ob3N0X3RvX3RhcmdldF9lcnJubyxjYl90YXJnZXRfdG9faG9zdF9vcGVuKTogUmVuYW1lZCBmcm9tCglob3N0X3RvX3RhcmdldF9lcnJubyx0YXJnZXRfdG9faG9zdF9vcGVuLgoJKGNiX3JlYWRfdGFyZ2V0X3N5c2NhbGxfbWFwcyk6IEFkZCBwcm90b3R5cGUuCgkoY2JfdGFyZ2V0X3RvX2hvc3Rfc3lzY2FsbCk6IExpa2V3aXNlLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X3N0YXQpOiBMaWtld2lzZS4KCShjYl9zeXNjYWxsKTogTGlrZXdpc2UuCgkoQ0JfU1lTX3tleGl0LG9wZW4sY2xvc2UscmVhZCx3cml0ZSxsc2Vlayx1bmxpbmssZ2V0cGlkLGtpbGwsZnN0YXQsCglhcmd2bGVuLGFyZ3YsY2hkaXIsc3RhdCxjaG1vZCx1dGltZSx0aW1lfSk6IERlZmluZS4KCShDQl9TWVNDQUxMKTogTmV3IHR5cGUuCgkoQ0JfUkMpOiBOZXcgZW51bS4KCkZyaSBOb3YgIDcgMTA6MzQ6MDkgMTk5NyAgUm9iIFNhdm95ZSAgPHJvYkBkYXJrc3Rhci5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IEFkZCBleHRlcm4gIkMiIHsgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBDKysKCXByb2dyYW1zLgoJKiByZW1vdGUtc2ltLmg6ICBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KClR1ZSBPY3QgMTQgMTY6MDc6NTEgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQKCSdzeW1ib2xfYXRfYWRkcmVzc19mdW5jJy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpc2UgbmV3IGZpZWxkIHdpdGgKCWdlbmVyaWNfc3ltYm9sX2F0X2FkZHJlc3MuCgpNb24gT2N0IDEzIDEwOjE3OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogQ2xhcmlmeSBzaW1fcmVhZCwgc2ltX3dyaXRlIE1FTSBhcmd1bWVudC4KCldlZCBTZXAgMjQgMTg6MDM6MTAgMTk5NyAgU3R1IEdyb3NzbWFuICA8Z3Jvc3NtYW5AYmFieWxvbi01LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKFNJTV9SQyk6ICBBZGQgYSBidW5jaCBvZiBuZXcgcmV0dXJuIGNvZGVzIGZvcgoJYnJlYWtwb2ludCBzdHVmZi4KCSogQWRkIGZ1bmN0aW9ucyB0byB0ZWxsIHRoZSBzaW11bGF0b3IgdG8gc2V0L2NsZWFyL2VuYWJsZS9kaXNhYmxlCglpbnRyaW5zaWMgYnJlYWtwb2ludHMuCgpUaHUgQXVnIDI4IDE5OjQxOjQyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChkdXBhcmd2KTogQWRkIHByb3RvdHlwZS4KClR1ZSBBdWcgMjYgMTI6MjU6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fY3JlYXRlX2luZmVyaW9yKTogQWRkIEFCRkQgYXJnLiBEb2N1bWVudC4KCk1vbiBBdWcgMjUgMTA6NTA6NTEgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fb3Blbik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpGcmkgQXVnICA4IDE2OjQzOjU2IDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGFyY19nZXRfZGlzYXNzZW1ibGVyKTogRGVjbGFyZS4KCldlZCBKdWwgMzAgMTE6Mzk6NTAgMTk5NyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGRlbmViLmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oIChETUdMX0pBVkEpOiAgTmV3IG9wdGlvbiB0byByZXF1ZXN0IEphdmEgZGVtYW5nbGluZy4KClR1ZSBKdWwgMjIgMTc6NTk6NTQgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKFBFWEVDVVRFXyopOiBEZWZpbmUuCgkocGV4ZWN1dGUsIHB3YWl0KTogRGVjbGFyZS4KCkZyaSBKdW4gIDYgMTM6MDI6MzMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fa2lsbCk6IE1hcmsgYXMgZGVwcmVjaWF0ZWQuCgpGcmkgTWF5IDIzIDEzOjQzOjQxIDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB0YXNrX2xpbmsgbWVtYmVyLgoKVGh1IE1heSAyMiAxMTozMjo0OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IFJldmlldyBkb2N1bWVudGF0aW9uLiAgQ2xhcmlmeSByZXN0cmljdGlvbnMgb24KIAl3aGVuIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLgoKV2VkIE1heSAyMSAxNjo0Nzo1MyAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zZXRfcHJvZmlsZV9zaXplKTogQWRkIHByb3RvdHlwZSwgZG9jdW1lbnQgYXMKIAlkZXByZWNpYXRlZC4KClR1ZSBNYXkgMjAgMDk6MzI6MjIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fb3Blbik6IEFkZCBjYWxsYmFjayBzdHJ1Y3QuCgkoc2ltX3NldF9jYWxsYmFja3MpOiBEcm9wIFNJTV9ERVNDIGFyZ3VtZW50LiBEb2N1bWVudC4KCShzaW1fc2l6ZSk6IFJlbW92ZSByZWNlbnRseSBhZGRlZCBTSU1fREVTQyBhcmd1bWVudC4gRG9jdW1lbnQuCgpNb24gTWF5IDE5IDE5OjE0OjQ0IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogUGFzcyBTRCBpbnRvIHNpbV9zaXplLgoKVGh1IE1heSAxNSAwMToyNDoxNiAxOTk3ICBNYXJrIEFsZXhhbmRlciAgPG1hcmthQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfc3BlY2lmeV9hbGxvY2F0aW9uX3dpdGhfYXJnLCBvYnN0YWNrX2NodW5rZnVuLAoJb2JzdGFja19mcmVlZnVuKTogRWxpbWluYXRlIGNvbXBpbGUgd2FybmluZ3MgaW4gZ2RiLgoKVHVlIE1heSAxMyAxMDoyMToxNCAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi9hcm0uaCAoY29uc3RhbnRzKTogICBBZGRlZCBuZXcgZmxhZyBiaXRzIEZfQVBDU18yNiBhbmQKCUZfQVBDU19TRVQgZm9yIHRoZSBmX2ZsYWdzIGZpZWxkIG9mIHRoZSBmaWxlaGRyIHN0cnVjdHVyZS4gIEFkZGVkIG5ldwoJZmxhZ3M6IEZfQVBDUzI2LCBGX0FSTV8yLCBGX0FSTV8zLCBGX0FSTV83LCBGX0FSTV83VCB0byBzdG9yZQoJaW5mb3JtYXRpb24gaW4gdGhlIGZsYWdzIGZpZWxkIG9mIHRoZSBpbnRlcm5hbF9mIHN0cnVjdHVyZSB1c2VkIGJ5IEJGRAoJcm91dGluZXMuCgpUdWUgQXByIDIyIDEwOjI0OjM0IDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYnl0ZW9yZGVycyk6IEFkZCBjb21tZW50cyBmb3IgcHJldmlvdXMKCWZvcm1hdHMgYW5kIGFkZCBmbG9hdGZvcm1hdF9saXR0bGVieXRlX2JpZ3dvcmQsIHByaW1hcmlseSBmb3IgQVJNLgoJQWRkIGRlY2xhcmF0aW9uIGZvciBmbG9hdGZvcm1hdF9pZWVlX2RvdWJsZV9saXR0bGVieXRlX2JpZ3dvcmQuCgpGcmkgQXByIDE4IDEzOjA0OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3N0b3ApOiBOZXcgaW50ZXJmYWNlIC0gYXN5bmNocm9ub3VzCiAJbm90aWZpY2F0aW9uIG9mIGEgcmVxdWVzdCB0byBzdG9wIC8gc3VzcGVuZCB0aGUgcnVubmluZwogCXNpbXVsYXRpb24uCgoJKiByZW1vdGUtc2ltLmggKGVudW0gc2ltX3N0b3ApOiBBZGQgc2ltX3J1bm5pbmcgYW5kIHNpbV9wb2xsaW5nIGFzCiAJc3RhdGVzIGZvciB1c2UgaW50ZXJuYWwgdG8gc2ltdWxhdG9ycy4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnV0KTogUHV0IGEgbWFnaWMgbnVtYmVyIGF0CiAJdGhlIGVuZCBvZiB0aGUgc3RydWN0IHRvIGFsbG93IGJhc2ljIGNoZWNraW5nLgoJKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnVjdCApOiBBZGQgcG9sbF9xdWl0IC0gc28KIAl0aGF0IHRoZSBjb25zb2xlIGV0YyBjYW4gYmUgcG9sbGVkIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzLgoKVGh1IEFwciAxNyAwMjoxNzoxMiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzdHJ1Y3QgX2JmZCk6IERlY2xhcmUuCgkoc2ltX2xvYWQpOiBSZXR1cm4gU0lNX1JDLiAgTmV3IGFyZyBgYWJmZCcuCgkoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IFJldHVybiBTSU1fUkMuICBEZWxldGUgYXJnIGBzdGFydF9hZGRyZXNzJy4KCldlZCBBcHIgIDIgMTc6MDk6MTIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV90cmFjZSwgc2ltX3NpemUpOiBNYWtlIHRoZXNlIGdsb2JhbC4gIFRoZXkKIAl3aWxsIGdvIGF3YXkgc2hvcnRseS4KCldlZCBBcHIgIDIgMTU6MjM6NDkgMTk5NyAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoU0lNX09QRU5fS0lORCwgU0lNX1JDKTogTmV3IGVudW1zLgoJKHNpbV9vcGVuKTogTmV3IGFyZ3VtZW50IGBraW5kJy4KCldlZCBBcHIgIDIgMTQ6NDU6NTEgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogQ09QWUlORzogVXBkYXRlIEZTRiBhZGRyZXNzLgoKRnJpIE1hciAyOCAxNToyOTo1NCAxOTk3ICBNaWtlIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHRvcCBsZXZlbCk6IEluY2x1ZGUgc3RkYXJnLmggb3IgdmFyYXJncy5oIGlmCgl2YV9zdGFydCBpcyBub3QgZGVmaW5lZC4KCShob3N0X2NhbGxiYWNrX3N0cnVjdCk6IE1ha2UgeyxlfXZwcmludGZfZmlsdGVyZWQgdGFrZSBhIHZhX2xpc3QKCWluc3RlYWQgb2Ygdm9pZCAqLCBzaW5jZSB2YV9saXN0IG1pZ2h0IGJlIGFuIGFycmF5IG9yIHN0cnVjdHVyZQoJdHlwZS4KCkZyaSBNYXIgMjggMTU6NDQ6NDEgMTk5NyAgSC5KLiBMdSAgPGhqbEBnbnUuYWkubWl0LmVkdT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEFkZCBwcm90b3R5cGUgZm9yIGdsaWJjIGFuZCBsaW51eC4KCk1vbiBNYXIgMTcgMTk6MjI6MTIgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JqYWxsb2MuaDogTmV3IGZpbGUuCgpNb24gTWFyIDE3IDE0OjU3OjU1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBOZXcgZmlsZSwgY29waWVkIGluIGZyb20gZ2RiL3JlbW90ZS1zaW0uaC4gIE9uZQogCWRheSB0aGlzIHdpbGwgYmUgcGxhY2VkIGluIGEgZGlyZWN0b3J5IG9mIGl0cyBvd24uCgpTYXQgTWFyIDE1IDE5OjAwOjE0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaDogVXBkYXRlIHRvIGN1cnJlbnQgRlNGIHZlcnNpb24uCgpUaHUgTWFyICA2IDE1OjQ2OjU5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydWN0KTogQWRkIGNhbGxiYWNrcyAtCiAJZmx1c2hfc3Rkb3V0LCB3cml0ZV9zdGRlcnIsIGZsdXNoX3N0ZGVyciwgdnByaW50Zl9maWx0ZXJlZCwKIAlldnByaW50Zl9maWx0ZXJlZC4gIERlbGV0ZSByZWR1bmRhbnQgY2FsbGJhY2tzIC0gcHJpbnRmX2ZpbHRlcmVkLgoKVGh1IEZlYiAyNyAyMzoxODoyNyAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIGxwcmVmaXggYW5kIGxwcmVmaXhfbGVuCglmaWVsZHMuCgpUdWUgRmViIDI1IDAwOjEwOjQ5IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplCglieXRlc19wZXJfY2h1bmsgYW5kIGRpc3BsYXlfZW5kaWFuLgoKTW9uIEZlYiAyNCAxNzo0NzowMiAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJRnJvbSBFcmljIFlvdW5nZGFsZSA8ZXJpY0BhbmRhbnRlLmppYy5jb20+OgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZXhwcik6IERlZmluZS4KCShzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX2RlcHMpOiBEZWZpbmUuCgkoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlKTogRGVmaW5lLgoKVGh1IEZlYiAgNiAxNDoyMDowMSAxOTk3ICBNYXJ0aW4gTS4gSHVudCAgPGh1bnRAcGl6emEuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogKGRpc2Fzc2VtYmxlX2luZm8pOiAgQWRkIG5ldyBmaWVsZHMKCWJ5dGVzX3Blcl9jaHVuayBhbmQgZGlzcGxheV9lbmRpYW4gdG8gY29udHJvbCB0aGUKCWRpc3BsYXkgb2YgcmF3IGluc3RydWN0aW9ucy4KCkZyaSBEZWMgMjcgMjI6MTc6MzcgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljODApOiBEZWNsYXJlLgoKU3VuIERlYyAgOCAxNzoxMToxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoaG9zdF9jYWxsYmFjayk6IE5ldyBtZW1iZXIgYGVycm9yJy4KCldlZCBOb3YgMjAgMDA6NDA6MjMgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmg6IE5ldyBmaWxlLCBtb3ZlZCBoZXJlIGZyb20gZ2RiLgoKTW9uIE5vdiAxOCAxNjozNDowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogQ2hlY2tpbiBhZ2FpbjsgbGFzdCBjaGVja2luIGZhaWxlZCBkdWUgdG8gc3RpY2t5IHRhZy4KCldlZCBOb3YgMTMgMDg6MjI6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IFJldmVydCBsYXN0IGNvbW1pdCBkdWUgdG8gY29uZmxpY3RzIHdpdGggaHB1eAoJc3lzdGVtIGhlYWRlcnMuCgpUdWUgTm92IDEyIDE2OjMxOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBNb3ZlIHByb3RvdHlwZXMgZnJvbSBhcmd2LmMgaGVyZS4KClRodSBPY3QgMzEgMTQ6NTY6MTggMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGFuc2lkZWNsLmggKFZQQVJBTVMsVkFfU1RBUlQpOiBEZWZpbmUuCgpGcmkgT2N0IDI1IDEyOjA4OjA0IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IEFkZCBieXRlc19wZXJfbGluZSBmaWVsZC4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgYnl0ZXNfcGVyX2xpbmUgZmllbGQuCgpUaHUgT2N0IDI0IDE3OjEwOjAxIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IEFkZCBzeW1ib2wgZmllbGQuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIHN5bWJvbCBmaWVsZC4KClRodSBPY3QgMTcgMTE6MTc6NDAgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tMzJyKTogRGVjbGFyZS4KCk1vbiBPY3QgMTQgMjM6NTY6NTIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IERlY2xhcmUgcGFyYW1ldGVyIHR5cGVzIGZvciB4bWFsbG9jIGFuZCB4cmVhbGxvYy4KClRodSBPY3QgIDMgMTM6NDU6MjcgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZm5tYXRjaC5oOiBOZXcgZmlsZS4KClRodSBPY3QgIDMgMTA6MzM6MTQgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21uMTB4MDApOiBEZWxldGUgZGVjbGFyYXRpb24uCgkocHJpbnRfaW5zbl9tbjEwMjAwLCBwcmludF9pbnNuX21uMTAzMDApOiBEZWNsYXJlLgoKV2VkIE9jdCAgMiAyMToyNDo0MyAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbW4xMHgwMCk6IERlY2xhcmUuCgpNb24gU2VwIDMwIDEzOjU2OjExIDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IFJlbW92ZSAjaWZuZGVmIFBSSVZBVEVfWE1BTExPQy4KClNhdCBBdWcgMzEgMTM6Mjc6MDYgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3Y4NTApOiBEZWNsYXJlLgoKVHVlIEF1ZyAxMyAxNjoxMDozMCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQ2hhbmdlIGJjb3B5IHRvIG1lbWNweS4gIFdvcmtzIGJldHRlciBvbiBQb3NpeAoJc3lzdGVtcywgd2hpY2ggZ2VuZXJhbGx5IGxhY2sgYmNvcHkuCgpNb24gQXVnIDEyIDE3OjAzOjE4IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiAgQ2hhbmdlIFdJTjMyIHRvIF9XSU4zMi4KCkZyaSBKdWwgMjYgMTM6NTg6MTggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgZmxhdm91ciBmaWVsZC4KCShwcmludF9pbnNuX2FscGhhKTogRGVjbGFyZS4KCShwcmludF9pbnNuX2FscGhhX29zZiwgcHJpbnRfaW5zbl9hbHBoYV92bXMpOiBEb24ndCBkZWNsYXJlLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IEluaXRpYWxpemUgZmxhdm91ciBmaWVsZC4KClR1ZSBKdWwgMjMgMTc6Mzc6NTggMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoUFJJVkFURV9YTUFMTE9DKTogRW5jbG9zZSB4bWFsbG9jL3hyZWFsbG9jCglkZWZpbml0aW9ucyBpbnNpZGUgI2lmbmRlZiBzbyB0aGF0IHByb2dyYW1zIHRoYXQgd2FudCB0bwoJY2FuIGRlZmluZSBQUklWQVRFX1hNQUxMT0MgYW5kIHRoZW4gZGVmaW5lIHhtYWxsb2MgYW5kCgl4cmVhbGxvYyBhbnl3YXkgdGhleSB3YW50LgoJKGJhc2VuYW1lKTogRG9jdW1lbnQgaW4gc291cmNlIHRoYXQgd2UgY2FuJ3QgZGVjbGFyZSB0aGUKIAlwYXJhbWV0ZXIgdHlwZSBiZWNhdXNlIGl0IGlzIGRlY2xhcmVkIGluY29uc2lzdGVudGx5IGFjcm9zcwoJZGlmZmVyZW50IHN5c3RlbXMuCgpNb24gSnVsIDIyIDEzOjE2OjEzIDE5OTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHRhbXUuZWR1PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2FscGhhKTogRG9uJ3QgZGVjbGFyZS4KCShwcmludF9pbnNuX2FscGhhX29zZiwgcHJpbnRfaW5zbl9hbHBoYV92bXMpOiBEZWNsYXJlLgoKV2VkIEp1bCAxNyAxNDo0NToxMiAxOTk2ICBNYXJ0aW4gTS4gSHVudCAgPGh1bnRAcGl6emEuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogKHByaW50X2luc25fZDEwdik6IERlY2xhcmUuCgpNb24gSnVsIDE1IDE2OjU1OjM4IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBHZXQgcmlkIG9mIGRlY2xzIGZvciBwcmludF9pbnNuX2k4MDg2LAoJcHJpbnRfaW5zbl9zcGFyYzY0IGFuZCBwcmludF9pbnNuX3NwYXJjbGl0ZS4KCSogKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6ICBTcGxpdCBpbnRvIHR3byBwaWVjZXMuICBPbmUsCglJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCBpbml0cyBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgZW5kaWFuLAoJbWFjaCwgYW5kIGFyY2guCgpGcmkgSnVsIDEyIDEwOjE5OjI3IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faTgwODYpOiAgRGVjbGFyZS4KCldlZCBKdWwgIDMgMTY6MDI6MzkgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9zcGFyY2xpdGUpOiAgRGVjbGFyZS4KClR1ZSBKdW4gMTggMTY6MDI6NDYgMTk5NiAgSmVmZnJleSBBLiBMYXcgIDxsYXdAcnRsLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faDgzMDBzKTogRGVjbGFyZS4KClR1ZSBKdW4gMTggMTU6MTE6MzMgMTk5NiAgS2xhdXMgS2FlbXBmICA8a2thZW1wZkBwcm9naXMuZGU+CgoJKiBmb3Blbi12bXMuaDogTmV3IGZpbGUuCgpUdWUgSnVuICA0IDE4OjU4OjE2IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbm90aWNlX2FsbCBmaWVsZC4KCkZyaSBBcHIgMjYgMTA6MzM6MTIgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmggKCNpZmRlZiBJTl9HQ0MpOiAjaW5jbHVkZSAiZ2Fuc2lkZWNsLmgiLgoJKFBST1RPLFBUUixjb25zdCk6IERlbGV0ZS4KCk1vbiBBcHIgMjIgMTc6Mjc6NDIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB0cmFkaXRpb25hbF9mb3JtYXQgZmllbGQuCgpNb24gQXByIDE1IDE1OjE2OjU2IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoY2hvb3NlX3RlbXBfYmFzZSk6IEFkZCBwcm90b3R5cGUuCgpUdWUgTWFyIDEyIDE3OjI5OjQ2IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX3dyYXBwZWRfbGlua19oYXNoX2xvb2t1cCk6IERlY2xhcmUuCgkoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgd3JhcF9oYXNoIGZpZWxkLgoKV2VkIEZlYiAxNCAxNjo0OToxNyAxOTk2ICBNYXJ0aW4gQW5hbnRoYXJhbWFuICA8bWFydGluQG1haWwuaW1lY2gudW5pLWR1aXNidXJnLmRlPgoKCSogaWVlZS5oIChpZWVlX3JlY29yZF9lbnVtX3R5cGUpOiBEZWZpbmUKCWllZWVfZXh0ZXJuYWxfcmVmZXJlbmNlX2luZm9fZW51bS4KCkZyaSBGZWIgIDIgMTc6MDk6MjUgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKERJU0FTTV9SQVdfSU5TTik6IERlbGV0ZS4KClR1ZSBKYW4gMjMgMDk6MjE6NDcgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IFNldCBlbmRpYW4gdG8gQkZEX0VORElBTl9VTktOT1dOLgoJTmV3IGFyZ3VtZW50IEZQUklOVEZfRlVOQy4KCk1vbiBKYW4gMjIgMTY6Mzc6NTkgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgbWVtYmVycyBhcmNoLCBtYWNoLCBlbmRpYW4uCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogSW5pdGlhbGl6ZSB0aGVtLgoJKERJU0FTTV9SQVdfSU5TTnssRkxBR30pOiBEZWZpbmUuCgpUaHUgSmFuIDE4IDExOjMyOjM4IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IENoYW5nZSBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouCgkoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IENoYW5nZSByZXR1cm4gdHlwZSBhbmQgb3BuYW1lIHBhcmFtZXRlciB0bwoJY29uc3QgY2hhciAqLgoKRnJpIEphbiAgNSAwMDowMToyMiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBpZWVlLmggKGVudW0gaWVlZV9yZWNvcmQpOiBBZGQgaWVlZV9hc25fcmVjb3JkX2VudW0sCglpZWVlX2F0X3JlY29yZF9lbnVtLCBpZWVlX3R5X3JlY29yZF9lbnVtLCBpZWVlX2F0bl9yZWNvcmRfZW51bSwKCWllZWVfYmJfcmVjb3JkX2VudW0sIGFuZCBpZWVlX2JlX3JlY29yZF9lbnVtLgoKV2VkIEphbiAgMyAxMzoxMjowOSAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaDogVXBkYXRlIGNvcHlyaWdodCB0byAxOTk2LgoJKF9vYnN0YWNrX21lbW9yeV91c2VkKTogRGVjbGFyZS4KCShvYnN0YWNrX21lbW9yeV91c2VkKTogRGVmaW5lIG1hY3JvLgoKVGh1IERlYyAyOCAxMTo0MjoxMiAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoeHN0cmR1cCk6IERlY2xhcmUuCgpUaHUgRGVjIDIxIDE0OjQ3OjE3IDE5OTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB0aWt0b2suY3lnbnVzLmNvbT4KCgkqIHdhaXQuaDogUHJvdGVjdCBhbGwgbWFjcm9zIHdpdGggI2lmbmRlZi4KClR1ZSBPY3QgMjQgMjE6NDU6NDAgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBzdGF0aWNfbGluayBmaWVsZC4KClR1ZSBTZXAgMTIgMTY6Mjg6MDQgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQWRkIHN5bWJvbCBwYXJhbWV0ZXIgdG8KCXdhcm5pbmcgY2FsbGJhY2suCgpGcmkgU2VwICAxIDEzOjExOjUxIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IENoYW5nZSB3YXJuaW5nIGNhbGxiYWNrCgl0byB0YWtlIEJGRCwgc2VjdGlvbiwgYW5kIGFkZHJlc3MgYXJndW1lbnRzLgoKVGh1IEF1ZyAzMSAxNjo0NToxMiAxOTk1ICBzdGV2ZSBjaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlbW92ZSBQRSBzdHVmZi4KClR1ZSBBdWcgMjIgMDM6MTg6MjMgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IERlY2xhcmUgeHN0cmVycm9yLiAgRnJvbSBQYXQgUmFua2luLgoKTW9uIEF1ZyAyMSAxODoxMTozNiAxOTk1ICBzdGV2ZSBjaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlbW92ZSBQRSBzdHVmZi4KCldlZCBBdWcgIDIgMDg6MTQ6MTIgMTk5NSAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9zcGFyYzY0KTogRGVjbGFyZS4KCk1vbiBKdWwgMTAgMTM6MjY6NDkgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIDxlcmljQGFpYi5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBzeW1ib2xpYy4KClN1biBKdWwgIDIgMTc6NDg6NDAgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IENoYW5nZSB0eXBlIG9mIGJhc2VfZmlsZSB0bwoJUFRSLgoKVGh1IEp1biAyOSAwMDowMjo0NSAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZGVkIGJhc2VfZmlsZSBtZW1iZXIuCgpUdWUgSnVuIDIwIDE2OjQwOjA0IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBhbnNpZGVjbC5oOiB3aW4zMnMgaXMgQU5TSSBlbm91Z2guCgpUaHUgTWF5IDE4IDA0OjI1OjUwIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBrci1sYXB0b3AuY3lnbnVzLmNvbT4KCglXZWQgTWF5IDEwIDE0OjI4OjE2IDE5OTUgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtbHRkLmNvLnVrKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2FybSk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShwcmludF9pbnNuX3tsaXR0bGUsYmlnfV9hcm0pOiBOZXcgZGVjbGFyYXRpb25zLgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYXJtX2V4dCk6IERlY2xhcmUuCgpTYXQgTWF5IDEzIDEwOjE0OjA4IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBjb2ZmL3BlLmg6IE5ldyBmaWxlLgoJKiBiZmRsaW5rLmggKHN1YnN5dGVtLCBzdGFja19oZWFwX3BhcmFtZXRlcnMpOiBOZXcuCgkqIGNvZmYvaTM4Ni5oIChOVF9TRUNUSU9OX0FMSUdOTUVOVCwgTlRfRklMRV9BTElHTk1FTlQsCglOVF9ERUZfUkVTRVJWRSwgTlRfREVGX0NPTU1JVCk6IE5ldy4KCSogY29mZi9pbnRlcm5hbC5oIChpbnRlcm5hbF9maWxlaGRyKTogIE5ldyBmaWVsZHMgZm9yIFBFLgoJKElNQUdFX0RBVEFfRElSRUNUT1JZKTogTmV3LgoJKGludGVybmFsX2FvdXRoZHIpOiBOZXcgZmllbGRzIGZvciBQRS4KClRodSBNYXkgIDQgMTQ6MzY6NDIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBpbmNsdWRlIGFuc2lkZWNsLmggaWYgSU5fR0NDLgoKVHVlIEZlYiAyMSAwMDozNzoyOCAxOTk1ICBKZWZmIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGhwLXN5bXRhYi5oOiBEb24ndCB1c2UgYml0ZmllbGQgZW51bWVyYXRpb25zLCB0aGUgSFAgQyBjb21waWxlcgoJZG9lcyBub3QgaGFuZGxlIHRoZW0gY29ycmVjdGx5LgoKVGh1IEZlYiAgOSAxNDoyMDoyNyAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBEb24ndCBkZWNsYXJlIHBhcmFtZXRlciB0eXBlOyBzb21lCglzeXN0ZW1zIGhhdmUgdGhpcyBpbiB0aGVpciBoZWFkZXIgZmlsZXMuCgpXZWQgRmViICA4IDE3OjM1OjM4IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgZm9ybWF0IG9mIGNvbW1vbgoJc3ltYm9sIGluZm9ybWF0aW9uLCB0byByZW1vdmUgcmVzdHJpY3Rpb25zIG9uIG1heGltdW0gc2l6ZSBhbmQKCWFsaWdubWVudCBwb3dlciwgYnkgdXNpbmcgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIGluc3RlYWQuCgpNb24gRmViICA2IDE0OjU1OjMyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoZW51bSBiZmRfbGlua19oYXNoX3R5cGUpOiBSZW5hbWUgYmZkX2xpbmtfaGFzaF93ZWFrCgl0byBiZmRfbGlua19oYXNoX3VuZGVmd2Vhay4gIEFkZCBiZmRfbGlua19oYXNoX2RlZndlYWsuCgpNb24gSmFuIDE2IDIxOjAwOjIzIDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoR0RCX0lOSVRfRElTQVNTRU1CTEVfSU5GTywgZXRjKTogUmVtb3ZlIGFsbAoJR0RCLXNwZWNpZmljIGRlZmluaXRpb25zLgoKU3VuIEphbiAxNSAxODozOTozNSAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzcGxhdD4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl93NjUpOiBEZWNsYXJlLgoKVGh1IEphbiAxMiAxNzo1MToxNyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGhleF9wKTogRml4IHNlbnNlIG9mIHRlc3QuCgpXZWQgSmFuIDExIDIyOjM2OjQwIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoX2hleF9hcnJheV9zaXplLCBfaGV4X2JhZCwgX2hleF92YWx1ZSwgaGV4X2luaXQsCgloZXhfcCwgaGV4X3ZhbHVlKTogTmV3IG1hY3JvcyBhbmQgZGVjbGFyYXRpb25zLCBmb3IgaGV4LmMuCgpGcmkgSmFuICA2IDE3OjQ0OjE0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogTWFrZSBpZGVtcG90ZW50LgoKV2VkIERlYyAxNCAxMzowODo0MyAxOTk0ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBwcm9ncmVzcy5oOiBOZXcgZmlsZSwgZW1wdHkgZGVmaW5pdGlvbnMgZm9yIHByb2dyZXNzIG1hY3Jvcy4KCkZyaSBOb3YgMjUgMDA6MTQ6MDUgMTk5NCAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBocC1zeW10YWIuaDogTmV3IGZpbGUgZGVzY3JpYmluZyB0aGUgZGVidWcgc3ltYm9scyBlbWl0dGVkCglieSB0aGUgSFAgQyBjb21waWxlcnMuCgpGcmkgTm92IDExIDE1OjQ4OjM3IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgdS5jLnNpemUgZnJvbSAyNAoJdG8gMjYgYml0cywgYW5kIGNoYW5nZSB1LmMuYWxpZ25tZW50X3Bvd2VyIGZyb20gOCB0byA2IGJpdHMuICA2CgliaXQgaW4gdGhlIGFsaWdubWVudCBwb3dlciBpcyBlbm91Z2ggZm9yIGEgNjQgYml0IGFkZHJlc3Mgc3BhY2UuCgpNb24gT2N0IDMxIDEzOjAyOjUxIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX21hbmdsZV9vcG5hbWUpOiBEZWNsYXJlLgoKVHVlIE9jdCAyNSAxMTozODowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBGaXggY29tbWVudHMgZm9yCgltdWx0aXBsZV9jb21tb24gZmllbGQuCgpTdW4gU2VwIDA0IDE3OjU4OjEwIDE5OTQgIFJpY2hhcmQgRWFybnNoYXcgKHJ3ZUBwZWdhc3VzLmVzcHJpdC5lYy5vcmcpCgoJKiBhb3V0L2FvdXQ2NC5oOiBPbmx5IGRlZmluZSBRTUFHSUMgaWYgaXQgaXNuJ3QgYWxyZWFkeSBkZWZpbmVkLgoKCSogZGlzLWFzbS5oOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEFSTS4KCldlZCBBdWcgMTAgMTI6NTE6NDEgMTk5NCAgRG91ZyBFdmFucyAgKGRqZUBjYW51Y2suY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oIChzdHJzaWduYWwpOiBEb2N1bWVudCBpdHMgZXhpc3RlbmNlIGV2ZW4gaWYgd2UKCWNhbid0IGRlY2xhcmUgaXQuCgpUdWUgQXVnICAyIDE0OjQwOjAzIDE5OTQgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogb3M5ay5oOiBSZW1vdmUgdV9pbnQxNiwgdV9pbnQzMiwgYW5kIG93bmVyX2lkIHR5cGVkZWZzIGFuZAoJZXhwYW5kIHRoZWlyIHVzZXMuICBUaG9zZSBuYW1lcyBjb25mbGljdCB3aXRoIE1hY2ggaGVhZGVycy4KCkZyaSBKdWwgMjIgMTQ6MTc6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBzYW5ndWluZS5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IENoYW5nZSB1LmMuc2l6ZSBpbnRvIGEKCWJpdGZpZWxkLiAgQWRkIGZpZWxkIHUuYy5hbGlnbm1lbnRfcG93ZXIuCgpTdW4gSnVsIDEwIDAwOjI2OjM5IDE5OTQgIElhbiBEYWxsICAoZGFsbEBoZnJkLmRzdG8uZ292LmF1KQoKCSogZGlzLWFzbS5oOiBBZGQgcHJpbnRfaW5zbl9uczMyayBkZWNsYXJhdGlvbi4KCk1vbiBKdW4gMjAgMTc6MTM6MjkgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBzYW5ndWluZS5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChiZmRfbGlua19oYXNoX3RhYmxlKTogTWFrZSBjcmVhdG9yIGEgY29uc3QgcG9pbnRlci4KClNhdCBKdW4gMTggMTY6MDk6MzIgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogRGVjbGFyZS4KClRodSBKdW4gMTYgMTU6MTk6MDMgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgc2hhcmVkLgoKTW9uIEp1biAgNiAxNDozOTo0NCAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogUmVtb3ZlIHdyaXR0ZW4gZmllbGQ6Cglub3QgbmVlZGVkIGZvciBhbGwgYmFja2VuZHMuCgpUaHUgQXByIDI4IDE5OjA2OjUwIDE5OTQgIEtlbiBSYWVidXJuICAocmFlYnVybkBjdWpvLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlcik6IERlY2xhcmUuCgpGcmkgQXByICAxIDAwOjM4OjE3IDE5OTQgIEppbSBXaWxzb24gICh3aWxzb25AbW9sZS5nbnUuYWkubWl0LmVkdSkKCiAgICAgICAgKiBvYnN0YWNrLmg6IERlbGV0ZSB1c2Ugb2YgSU5fR0NDIHRvIGNvbnRyb2wgd2hldGhlcgogICAgICAgIHN0ZGRlZi5oIG9yIGdzdGRkZWYuaCBpcyBpbmNsdWRlZC4KClR1ZSBNYXIgMjIgMTM6MDY6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUpOiBBZGQgYmZkX2RhdGFfbGlua19vcmRlci4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIpOiBBZGQgZGF0YSBmaWVsZCB0byB1bmlvbi4KCk1vbiBNYXIgMjEgMTg6NDU6MjYgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIGJpdHNpemUgYXJndW1lbnQKCXRvIGFkZF90b19zZXQgdG8gcmVsb2MuICBSZW1vdmUgYml0c2l6ZSBhcmd1bWVudCBmcm9tIGNvbnN0cnVjdG9yLgoJQ29tbWVudCB0aGF0IHJlbG9jX292ZXJmbG93LCByZWxvY19kYW5nZXJvdXMgYW5kIHVuYXR0YWNoZWRfcmVsb2MKCW11c3QgaGFuZGxlIE5VTEwgcG9pbnRlcnMgZm9yIHJlbG9jIGxvY2F0aW9uLgoJKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyIGFuZAoJYmZkX3N5bWJvbF9yZWxvY19saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCByZWxvYyBmaWVsZCB0byB1bmlvbi4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXJfcmVsb2MpOiBEZWZpbmUuCgpNb24gTWFyIDE0IDEyOjI3OjUwIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogUmVtb3ZlZDsgbm8gbG9uZ2VyIHVzZWQuCgpUdWUgTWFyICAxIDE4OjEwOjQ5IDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IG9zOTAwMCB0YXJnZXQgc3BlY2lmaWMgaGVhZGVyIGZpbGUsIHRoZSBoZWFkZXIgb2YgdGhlCglvYmplY3QgZmlsZSBpcyB1c2VkIG5vdy4KClN1biBGZWIgMjcgMjE6NTI6MjYgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGRlbmViLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5oOiBOZXcgZmlsZSwgaW50ZW5kZWQgdG8gcmVwbGFjZSBpZWVlLWZsb2F0LmguCgpTdW4gRmViIDIwIDE3OjE1OjQyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AbGlzYS5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoQU5TSV9QUk9UT1RZUEVTKTogRGVmaW5lIGlmIHVzaW5nIEFOU0kgcHJvdG90eXBlcy4KCldlZCBGZWIgMTYgMDE6MDc6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5Lmg6IERvbid0IGRlY2xhcmUgc3Ryc2lnbmFsLCB0byBhdm9pZCBjb25mbGljdHMgd2l0aAoJU29sYXJpcyBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoKU2F0IEZlYiAxMiAyMjoxMTozMiAxOTk0ICBKZWZmcmV5IEEuIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IFVzZSBfX3ZvbGF0aWxlX18gdG8gYXZvaWQgbG9zaW5nIGlmCgljb21waWxpbmcgd2l0aCBnY2MgLXRyYWRpdGlvbmFsLgoKVGh1IEZlYiAxMCAxNDowNTo0MSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogTmV3IGZpbGUuICBEZWNsYXJlcyBmdW5jdGlvbnMgcHJvdmlkZWQgYnkKCWxpYmliZXJ0eS4KClR1ZSBGZWIgIDggMDU6MTk6NTIgMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCUhhbmRsZSBvYnN0YWNrX2NodW5rX2FsbG9jIHJldHVybmluZyBOVUxMLiAgVGhpcyBhbGxvd3MKCW9ic3RhY2tzIHRvIGJlIHVzZWQgYnkgbGlicmFyaWVzLCB3aXRob3V0IGZvcmNpbmcgdGhlbQoJdG8gY2FsbCBleGl0IG9yIGxvbmdqbXAuCgkqIG9ic3RhY2suaCAoc3RydWN0IG9ic3RhY2spOiBBZGQgYWxsb2NfZmFpbGVkIGZsYWcuCglfb2JzdGFja19iZWdpbiwgX29ic3RhY2tfYmVnaW5fMSk6IERlY2xhcmUgdG8gcmV0dXJuIGludCwgbm90IHZvaWQuCgkob2JzdGFja19maW5pc2gpOiBJZiBhbGxvY19mYWlsZWQsIHJldHVybiBOVUxMLgoJKG9ic3RhY2tfYmFzZSwgb2JzdGFja19uZXh0X2ZyZWUsIG9ianN0YWNrX29iamVjdF9zaXplKToKCUlmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIDAuCgkob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwLCBvYnN0YWNrXzFncm93LCBvYnN0YWNrX3B0cl9ncm93LAoJb2JzdGFja19pbnRfZ3Jvdywgb2JzdGFja19ibGFuayk6IElmIGFsbG9jX2ZhaWxlZCwgZG8gbm90aGluZyB0aGF0Cgljb3VsZCBjb3JydXB0IHRoZSBvYnN0YWNrLgoKTW9uIEphbiAyNCAxNTowNjowNSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgbmFtZSwgcmVsb2NfbmFtZSBhbmQKCWFkZGVuZCBhcmdtZW50cyB0byByZWxvY19vdmVyZmxvdyBjYWxsYmFjay4KCkZyaSBKYW4gMjEgMTk6MTM6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2JpZ19wb3dlcnBjLCBwcmludF9pbnNuX2xpdHRsZV9wb3dlcnBjLAoJcHJpbnRfaW5zbl9yczYwMDApOiBEZWNsYXJlLgoKVGh1IEphbiAgNiAxNDoxNTo1NSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgYml0c2l6ZSBhcmd1bWVudCB0bwoJYWRkX3RvX3NldCBmaWVsZC4gIEFkZCBuZXcgY2FsbGJhY2sgbmFtZWQgY29uc3RydWN0b3IuCgpUaHUgRGVjIDMwIDEwOjQ0OjA2IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AcnRsLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmg6IE5ldyBmaWxlIGZvciBuZXcgQkZEIGxpbmtlciBiYWNrZW5kIHJvdXRpbmVzLgoKTW9uIE5vdiAyOSAxMDo0Mzo1NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGVudW0gZGlzX2luc25fdHl1cGUpOiBSZW1vdmUgbm9uLUFOU0kgdHJhaWxpbmcgY29tbWEuCgpTYXQgT2N0ICAyIDIwOjQyOjI2IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBNb3ZlIGNvbW1lbnQgdG8gcmlnaHQgcGxhY2UuCgpNb24gQXVnICA5IDE5OjAzOjM1IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAob2JzdGFja19jaHVua2Z1biwgb2JzdGFja19mcmVlZnVuKTogQWRkIGRlZm5zIGZyb20KCXByZXZpb3VzIHZlcnNpb24uICBBcmUgdGhlc2UgQ3lnbnVzIGxvY2FsIGNoYW5nZXM/CgpGcmkgQXVnICA2IDE3OjA1OjQ3IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oLCBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpNb24gQXVnICAyIDE2OjM3OjE0IDE5OTMgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBjb2ZmL2kzODYuaDogIEFkZCBMeW54IG1hZ2ljIG51bWJlci4KCk1vbiBBdWcgIDIgMTQ6NDU6MjkgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBNb3ZlIGVudW0gb3V0c2lkZSBvZiBzdHJ1Y3QgZGVmbiB0byBhdm9pZCB3YXJuaW5ncy4KCk1vbiBBdWcgIDIgMDg6NDk6MzAgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIHdhaXQuaCAoV0VYSVRTVEFUVVMsIFdTVE9QU0lHKTogTWFzayBkb3duIHRvIDggYml0cy4gIFRoaXMgaXMKCWZvciBzeXN0ZW1zIHRoYXQgc3RvcmUgc3R1ZmYgaW50byB0aGUgaGlnaCAxNiBiaXRzIG9mIGEgd2FpdAoJc3RhdHVzLgoKRnJpIEp1bCAzMCAxODozODowMiAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIEFkZCBuZXcgZmllbGRzIGluc25faW5mb192YWxpZCwgYnJhbmNoX2RlbGF5X2luc25zLAoJZGF0YV9zaXplLCBpbnNuX3R5cGUsIHRhcmdldCwgdGFyZ2V0Mi4gIFRoZXNlIGFyZSB1c2VkIHRvIHJldHVybgoJaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5zdHJ1Y3Rpb24gZGVjb2RlcnMgYmFjayB0byB0aGUgY2FsbGluZwoJcHJvZ3JhbS4gIEFkZCBjb21tZW50cywgbWFrZSBtb3JlIHJlYWRhYmxlLgoKTW9uIEp1bCAxOSAyMjoxNDoxNCAxOTkzICBGcmVkIEZpc2ggIChmbmZAZGVuZWIuY3lnbnVzLmNvbSkKCgkqIG5sbTogIE5ldyBkaXJlY3RvcnkgY29udGFpbmluZyBOTE0vTmV0V2FyZSBpbmNsdWRlcy4KClRodSBKdWwgMTUgMTI6MTA6MDQgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGNhbWJyaWRnZS5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBmaWVsZCBhcHBsaWNhdGlvbl9kYXRhLgoKVGh1IEp1bCAxNSAxMjo0MToxNSAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZGVkIGRlY2xhcmF0aW9uIG9mIHByaW50X2luc25fbTg4ay4KClRodSBKdWwgIDggMDk6MDU6MjYgMTk5MyAgRG91ZyBFdmFucyAgKGRqZUBjYW51Y2suY3lnbnVzLmNvbSkKCgkqIG9wY29kZS9oODMwMC5oOiBMb3RzIG9mIGxpdHRsZSBmaXhlcyBmb3IgdGhlIGg4LzMwMGguCgpGcmkgSnVsICAyIDEwOjMxOjU5IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIG1hY3JvcyBpZiBfX21pcHMgYW5kIF9TWVNUWVBFX1NWUjQgYXJlCglkZWZpbmVkLCBzaW5jZSBSSVNDL09TIGNjIGhhbmRsZXMgQU5TSSBkZWNsYXJhdGlvbnMgaW4gU1ZSNCBtb2RlCglidXQgZG9lcyBub3QgZGVmaW5lIF9fU1REQ19fLgoKU3VuIEp1biAyMCAxODoyNzo1MiAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AcG9zZWlkb24uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogRG9uJ3QgbmVlZCB0byBpbmNsdWRlIGFuc2lkZWNsLmggYW55IG1vcmUuCgpGcmkgSnVuIDE4IDAzOjIyOjEwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogb2FzeXMuaDogIEVsaW1pbmF0ZSAiaW50OF90eXBlIiwgImludDE2X3R5cGUiLCAiaW50MzJfdHlwZSIsIGFuZAoJdGhlaXIgdmFyaWFudHMuICBUaGVzZSBjaGFuZ2VzIGFyZSBjb29yZGluYXRlZCB3aXRoIGNvcnJlc3BvbmRpbmcKCWNoYW5nZXMgaW4gLi4vYmZkL29hc3lzLmMuCgpXZWQgSnVuIDE2IDEwOjQzOjA4IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBOb3RlIHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZC4KClR1ZSBKdW4gIDggMTI6MTY6MDMgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAcGh5ZGVhdXguY3lnbnVzLmNvbSkKCgkgU3VwcG9ydCBmb3IgSDgvMzAwLUgKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwLCBwcmludF9pbnNuX2g4MzAwaCk6IERlY2xhcmUgaXQuCgkqIGNvZmYvaDgzMDAuaDogTmV3IG1hZ2ljIG51bWJlci4KCSogY29mZi9pbnRlcm5hbC5oOiBOZXcgcmVsb2NhdGlvbnMuCgkqIG9wY29kZS9oODMwMC5oOiBMb3RzIG9mIG5ldyBvcGNvZGVzLgoKVHVlIEp1biAgMSAwNzozNTowMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5Aa3ItcGMuY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKGNvbnN0KTogRG9uJ3QgZGVmaW5lIGl0IGlmIGl0J3MgYWxyZWFkeSBkZWZpbmVkLgoKVGh1IE1heSAyNyAxODoxOTo1MSAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY2FtYnJpZGdlLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faHBwYSk6IERlY2xhcmUgaXQuCgoJKiBiZmQuaDogTW92ZWQgdG8gYmZkIGRpcmVjdG9yeS4gIFNtYWxsIHN0dWIgaGVyZSBpbmNsdWRlcyBpdAoJd2l0aG91dCByZXF1aXJpbmcgIi1JLi4vYmZkIi4KClRodSBBcHIgMjkgMTI6MDY6MTMgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGRlbmViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCB3aXRoIEJTRl9GVU5DVElPTi4KCk1vbiBBcHIgMjYgMTg6MTU6NTAgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaCwgZGlzLWFzbS5oOiBVcGRhdGVkIHdpdGggSGl0YWNoaSBTSC4KCkZyaSBBcHIgMjMgMTg6NDE6MzggMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCB3aXRoIGFscGhhIGNoYW5nZXMuCgkqIGRpcy1hc20uaDogQWRkZWQgYWxwaGEuCgpGcmkgQXByIDE2IDE3OjM1OjMwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3Igc2lnbmVkIGJmZF8qZ2V0XyouCgpUaHUgQXByIDE1IDA5OjI0OjIxIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgZm9yIGZpbGVfdHJ1bmNhdGVkIGVycm9yLgoKVGh1IEFwciAgOCAxMDo1Mzo0NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiBJZiBubyBBTlNJLCBkZWZpbmUgY29uc3QgdG8gYmUgZW1wdHkuCgpUaHUgQXByICAxIDA5OjAwOjEwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBEZWNsYXJlIGEyOWsgYW5kIGk5NjAgcHJpbnRfaW5zbl8qLgoKCSogZGlzLWFzbS5oOiBBZGQgcHJpbnRfYWRkcmVzc19mdW5jIGFuZCByZWxhdGVkIHN0dWZmLgoKCSogZGlzLWFzbS5oIChkaXNfYXNtX3JlYWRfbWVtb3J5KTogRml4IHByb3RvdHlwZS4KCldlZCBNYXIgMzEgMTc6NDA6MTYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9pbnNuX3NwYXJjLgoKV2VkIE1hciAzMSAxNzo1MTo0MiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgQkZEX1JFTE9DX01JUFNfR1BSRUwgYW5kIGJmZF9bZ3NdZXRfZ3Bfc2l6ZQoJcHJvdG90eXBlcy4KCldlZCBNYXIgMzEgMTY6MzU6MTIgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogKGRpc2Fzc2VtYmxlX2luZm8pOiAgRml4IHR5cG8gaW4gcHJvdG90eXBlIG9mCglkaXNfYXNtX21lbW9yeV9lcnJvcigpLgoKVHVlIE1hciAzMCAxOTowOToyMyAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVyX2luZm8pOiBBZGQgcmVhZF9tZW1vcnlfZnVuYywKCW1lbW9yeV9lcnJvcl9mdW5jLCBidWZmZXIsIGFuZCBsZW5ndGguCgkoe0dEQl8sfUlOSVRfRElTQVNTRU1CTEVfSU5GTyk6IFNldCB0aGVtLgoJcHJpbnRfaW5zbl8qOiBSZW1vdmUgc2Vjb25kIGFyZ3VtZW50LgoKVHVlIE1hciAzMCAxNDo0ODo1NSAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIGxtYSBmaWVsZCBvZiBzZWN0aW9uLgoKVHVlIE1hciAzMCAxMjoyMjo1NSAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIHZlcnNpb25zIG9uIEFJWCByZWdhcmRsZXNzIG9mIF9fU1REQ19fLgoKRnJpIE1hciAxOSAxNDo0OTo0OSAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIGg4NTAwLgoKVGh1IE1hciAxOCAxMzo0OTowOSAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0Lmg6ICBNb3ZlZCBmcm9tIC4uL2dkYi4KCSogZGlzLWFzbS5oOiAgTmV3IGZpbGUuICBJbnRlcmZhY2UgdG8gZGlzLWFzc2VtYmxlci4KClRodSBNYXIgMTEgMTA6NTI6NTcgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChETUdMX05PX09QVFMpOiAgQWRkIGRlZmluZSAoc2V0IHRvIDApIHRvIHVzZQoJaW4gcGxhY2Ugb2YgYmFyZSAwLCBmb3IgcmVhZGFiaWxpdHkgcmVhc29ucy4KClR1ZSBNYXIgIDIgMTc6NTA6MTEgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byBjZnJvbnQgd2l0aCBBUk0uCgpUdWUgRmViIDIzIDEyOjIxOjE0IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIG5ldyBlbGVtZW50cyBpbiBKVU1QX1RBQkxFLgoKVHVlIEZlYiAxNiAwMDo1MTozMCAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIGZvciBCRkRfVkVSU0lPTiAyLjEuCgpUdWUgSmFuIDI2IDExOjQ5OjIwIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIFNFQ19JU19DT01NT04gZmxhZy4KClR1ZSBKYW4gMTkgMTI6MjU6MTIgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgYmZkX2FzeW1ib2xfdmFsdWUgYnVnIGZpeC4KCkZyaSBKYW4gIDggMTY6Mzc6MTggMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBpbmNsdWRlIEVDT0ZGIHRkYXRhIGFuZCB0YXJnZXRfZmxhdm91ci4KClN1biBEZWMgMjcgMTc6NTI6MzAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBiZmQuaDogIEFkZCBkZWNsYXJhdGlvbiBmb3IgYmZkX2dldF9zaXplKCkuCgpUdWUgRGVjIDIyIDIyOjQyOjQ2IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaDogIFByb3RlY3QgZmlsZSBmcm9tIG11bHRpcGxlIGluY2x1c2lvbnMgd2l0aAoJI2lmICFkZWZpbmVkKERFTUFOR0xFX0gpLi4uI2RlZmluZSBERU1BTkdMRV9ILi4uI2VuZGlmLgoKTW9uIERlYyAyMSAyMToyNTo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gZ2V0IGhwcGFfY29yZV9zdHJ1Y3QgZnJvbSBiZmQuYy4KClRodSBEZWMgMTcgMDA6NDI6MzUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgdGVraGV4IHRkYXRhIG5hbWUgY2hhbmdlIGZyb20gYmZkLgoKTW9uIE5vdiAgOSAyMzo1NTo0MiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6ICBVcGRhdGUgY29tbWVudHMgdG8gZGlzY291cmFnZSB1c2Ugb2YgRVhGVU4uCgpUaHUgTm92ICA1IDE2OjM1OjQ0IDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgdG8gYnJpbmcgaW4gU0VDX1NIQVJFRF9MSUJSQVJZLgoKVGh1IE5vdiAgNSAwMzoyMTozMiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIEVYRlVOLCBiZmRfc2VjbGV0X3N0cnVjdCwgYW5kIFNERUYKCWNsZWFudXBzIGluIGJmZC4KCldlZCBOb3YgIDQgMDc6Mjg6MDUgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBib3V0LmggKE5fQ0FMTE5BTUUsIE5fQkFMTkFNRSk6IERlZmluZSBhcyBjaGFyLXR5cGUgdmFsdWVzLCBzbwoJd2lkZW5pbmcgd29ya3MgY29uc2lzdGVudGx5LgoKRnJpIE9jdCAxNiAwMzoxNzowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiAgVXBkYXRlIHRvIFJldmlzZWQgU3RhbmRhcmQgRlNGIFZlcnNpb24uCgpUaHUgT2N0IDE1IDIxOjQzOjIyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBzZW5kYWkuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oIChzdHJ1Y3Qgb3B0aW9uKTogdXNlIHRoZSBwcm92aWRlZCBlbnVtIGZvciBoYXNfYXJnLgoKCSogZGVtYW5nbGUuaCAoQVVUT19ERU1BTkdMSU5HLCBHTlVfREVNQU5HTElORywKCSAgTFVDSURfREVNQU5HTElORyk6IHVsdHJpeCBjb21waWxlcnMgcmVxdWlyZSBlbnVtcyB0byBiZQoJICBlbnVtcyBhbmQgaW50cyB0byBiZSBpbnRzIGFuZCBjYXN0cyB3aGVyZSB0aGV5IG1lZXQuICBjYXN0IHNvbWUKCSAgZW51bXMgaW50byBpbnRzLgoKVGh1IE9jdCAxNSAwNDozNTo1MSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIGFmdGVyIGNvbW1lbnQgY2hhbmdlcy4KClRodSBPY3QgIDggMDk6MDM6MDIgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaCAoYmZkX2dldF9zeW1ib2xfbGVhZGluZ19jaGFyKTogbmV3IG1hY3JvIGZvciBnZXR0aW5nIGluIHh2ZWMKClRodSBTZXAgIDMgMDk6MTA6NTAgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChzdHJ1Y3QgcmVsb2NfaG93dG9fc3RydWN0KTogIHNpemUgbmVlZHMgdG8gYmUgc2lnbmVkIGlmCglpdCdzIGdvaW5nIHRvIGhvbGQgbmVnYXRpdmUgdmFsdWVzLgoKU3VuIEF1ZyAzMCAxNzo1MDoyNyAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgTmV3IGZpbGUsIG1vdmVkIGZyb20gLi4vZ2RiLiAgTWFkZSBpbmRlcGVuZGVudAoJb2YgZ2RiLiAgQWxsb3cgZGVtYW5nbGluZyBzdHlsZSBvcHRpb24gdG8gYmUgcGFzc2VkIGFzIGEKCXBhcmFtZXRlciB0byBjcGx1c19kZW1hbmdsZSgpLCBidXQgdXNpbmcgdGhlCgljdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUgZ2xvYmFsIGFzIHRoZSBkZWZhdWx0LgoKU2F0IEF1ZyAyOSAxMDowNzo1NSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIE1lcmdlIGNvbW1lbnQgY2hhbmdlIGZyb20gY3VycmVudCBGU0YgdmVyc2lvbi4KClRodSBBdWcgMjcgMTI6NTk6MjkgMTk5MiAgQnJlbmRhbiBLZWhvZSAgKGJyZW5kYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBhZGQgd2UzMmsKClR1ZSBBdWcgMjUgMTU6MDc6NDcgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogbmV3IGFmdGVyIFo4MDAwIHN0dWZmCgpNb24gQXVnIDE3IDA5OjAxOjIzIDE5OTIgIEtlbiBSYWVidXJuICAocmFlYnVybkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFJlZ2VuZXJhdGVkIGFmdGVyIHBhZ2Uvc2VnbWVudCBzaXplIGNoYW5nZXMuCgpTYXQgQXVnICAxIDEzOjQ2OjMxIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiBNZXJnZSBjaGFuZ2VzIGZyb20gY3VycmVudCBGU0YgdmVyc2lvbi4KCk1vbiBKdWwgMjAgMjE6MDY6MjMgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmggKGFyZWFfaWQsIGZsYWdzKTogIFJlbW92ZSwgcmVwbGFjZSB3aXRoIGV4dHJhX2FyZywKCXVzZV9leHRyYV9hcmcsIGFuZCBtYXliZV9lbXB0eV9vYmplY3QuCgkqIG9ic3RhY2suaCAoT0JTVEFDS19NQVlCRV9FTVBUWV9PQkpFQ1QsIE9CU1RBQ0tfTU1BTExPQ19MSUtFKToKCVJlbW92ZSwgcmVwbGFjZWQgYnkgbWF5YmVfZW1wdHlfb2JqZWN0IGFuZCB1c2VfZXh0cmFfYXJnIGJpdGZpZWxkcy4KCSogb2JzdGFjay5oIChvYnN0YWNrX2Z1bGxfYmVnaW4sIF9vYnN0YWNrX2JlZ2luKTogIFJlbW92ZSBhcmVhX2lkCglhbmQgZmxhZ3MgYXJndW1lbnRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfYWxsb2NfYXJnKTogIE5ldyBtYWNybyB0byBzZXQgZXh0cmFfYXJnLgoKVGh1IEp1bCAxNiAwODoxMjo0NCAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgYWRkaW5nIEJGRF9JU19SRUxBWEFCTEUKClNhdCBKdWwgIDQgMDM6MjI6MjMgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuIGFmdGVyIGFkZGluZyBCU0ZfRklMRS4KCk1vbiBKdW4gMjkgMTQ6MTg6MzYgMTk5MiAgRnJlZCBGaXNoICAoZm5mIGF0IHN1bmZpc2gpCgoJKiBvYnN0YWNrLmg6ICBDb252ZXJ0IGJjb3B5KCkgdXNlIHRvIG1lbWNweSgpLCB3aGljaCBpcyBtb3JlCglwb3J0YWJsZSwgbW9yZSBzdGFuZGFyZCwgYW5kIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBnY2MncyBidWlsdGluCglmdW5jdGlvbnMgZm9yIGluY3JlYXNlZCBwZXJmb3JtYW5jZS4KClRodSBKdW4gMjUgMDQ6NDY6MDggMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChQQVJBTVMpOiAgSW5jb3Jwb3JhdGUgdGhpcyBtYWNybyBmcm9tIGdkYidzIGRlZnMuaC4KCUl0J3MgYSBjbGVhbmVyIHdheSB0byBmb3J3YXJkLWRlY2xhcmUgZnVuY3Rpb24gcHJvdG90eXBlcy4KCkZyaSBKdW4gMTkgMTU6NDY6MzIgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgSFBQQSBtZXJnZS4KClR1ZSBKdW4gMTYgMjE6MzA6NTYgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogZ3JhdHVpdG91cyB3aGl0ZSBzcGFjZSBjaGFuZ2VzIG1lcmdlZCBmcm9tIG90aGVyIHByZXAKCSAgcmVsZWFzZXMuCgpUaHUgSnVuIDExIDAxOjEwOjU1IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZWdlbidkIGZyb20gYmZkLmMgYWZ0ZXIgcmVtb3ZpbmcgZWxmX2NvcmVfdGRhdGFfc3RydWN0LgoKTW9uIE1heSAxOCAxNzoyOTowMyAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIG1ha2UtMy42Mi4xMS4KCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIGdyZXAtMS42IChhbHBoYSkuCgpGcmkgTWF5ICA4IDE0OjUzOjMyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gYmlzb24tMS4xOC4KClNhdCBNYXIgMTQgMTc6MjU6MjAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBBZGQgImFyZWFfaWQiIGFuZCAiZmxhZ3MiIG1lbWJlcnMgdG8gb2JzdGFjawoJc3RydWN0dXJlLiAgQWRkIG9ic3RhY2tfY2h1bmtmdW4oKSBhbmQgb2JzdGFja19mcmVlZnVuKCkgdG8KCXNldCBmdW5jdGlvbnMgZXhwbGljaXRseS4gIENvbnZlcnQgbWF5YmVfZW1wdHlfb2JqZWN0IHRvCglhIGJpdCBpbiAiZmxhZ3MiLgoKVGh1IEZlYiAyNyAyMjowMTowMiAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAY3lnbnVzLmNvbSkKCgkqIHdhaXQuaCAoV0lGU1RPUFBFRCk6ICBBZGQgSUJNIHJzNjAwMC1zcGVjaWZpYyB2ZXJzaW9uLgoKRnJpIEZlYiAyMSAyMDo0OToyMCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCBvYnN0YWNrX2Z1bGxfYmVnaW4uCgkqIGJmZC5oLCBvYnN0YWNrLmg6ICBQcm90b2xpbnQuCgpUaHUgSmFuIDMwIDAxOjE4OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZW1vdmUgY29tbWEgZnJvbSBlbnVtIGRlY2xhcmF0aW9uLgoKTW9uIEphbiAyNyAyMjowMToxMyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggOiBuZXcgdGFyZ2V0IGVudHIsIGJmZF9yZWxheF9zZWN0aW9uCgpXZWQgRGVjIDE4IDE3OjE5OjQ0IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCwgaWVlZS5oLCBvcGNvZGUvbTY4ay5oLCBvcGNvZGUvc3BhcmMuaDogIEFOU0lmeSBlbnVtcy4KClRodSBEZWMgMTIgMjA6NTk6NTYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBmb3Blbi1zYW1lLmgsIGZvcGVuLWJpbi5oOiAgTmV3IGZpbGVzIGZvciBjb25maWd1cmluZwoJd2hldGhlciBmb3BlbiBkaXN0aW5ndWlzaGVzIGJpbmFyeSBmaWxlcyBvciBub3QuICBGb3IgdXNlCglieSBob3N0LWRlcGVuZGVudCBjb25maWcgZmlsZXMuCgpTYXQgTm92IDMwIDIwOjQ2OjQzIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogYmZkLmg6IGNoYW5nZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3JtYXQuCgoJKiBjcmVhdGVkIGNvZmYsIGVsZiBhbmQgb3Bjb2RlIGFuZCBhb3V0IGRpcmVjdG9yaWVzLiBNb3ZlZDoKCglhb3V0NjQuaAk9PT4gYW91dC9hb3V0NjQuaAoJYXIuaAkJPT0+IGFvdXQvYXIuaAoJYS5vdXQuZW5jYXAuaAk9PT4gYW91dC9lbmNhcC5oCglhLm91dC5ob3N0LmgJPT0+IGFvdXQvaG9zdC5oCglhLm91dC5ocC5oCT09PiBhb3V0L2hwLmgKCWEub3V0LnN1bjQuaAk9PT4gYW91dC9zdW40LmgKCXJhbmxpYi5oCT09PiBhb3V0L3JhbmxpYi5oCglyZWxvYy5oCQk9PT4gYW91dC9yZWxvYy5oCglzdGFiLmRlZgk9PT4gYW91dC9zdGFiLmRlZgoJc3RhYi5nbnUuaAk9PT4gYW91dC9zdGFiX2dudS5oCgoJY29mZi1hMjlrLmgJPT0+IGNvZmYvYTI5ay5oCgljb2ZmLWg4MzAwLmgJPT0+IGNvZmYvaDgzMDAuaAoJY29mZi1pMzg2LmgJPT0+IGNvZmYvaTM4Ni5oCgljb2ZmLWk5NjAuaAk9PT4gY29mZi9pOTYwLmgKCWludGVybmFsY29mZi5oCT09PiBjb2ZmL2ludGVybmFsLmgKCWNvZmYtbTY4ay5oCT09PiBjb2ZmL202OGsuaAoJY29mZi1tODhrLmgJPT0+IGNvZmYvbTg4ay5oCgljb2ZmLW1pcHMuaAk9PT4gY29mZi9taXBzLmgKCWNvZmYtcnM2MDAwLmgJPT0+IGNvZmYvcnM2MDAwLmgKCgllbGYtY29tbW9uLmgJPT0+IGVsZi9jb21tb24uaAoJZHdhcmYuaAkJPT0+IGVsZi9kd2FyZi5oCgllbGYtZXh0ZXJuYWwuaAk9PT4gZWxmL2V4dGVybmFsLmgKCWVsZi1pbnRlcm5hbC5oICA9PT4gZWxmL2ludGVybmFsLmgKCglhMjlrLW9wY29kZS5oCT09PiBvcGNvZGUvYTI5ay5oCglhcm0tb3Bjb2RlLmgJPT0+IG9wY29kZS9hcm0uaAoJaDgzMDAtb3Bjb2RlLmgJPT0+IG9wY29kZS9oODMwMC5oCglpMzg2LW9wY29kZS5oCT09PiBvcGNvZGUvaTM4Ni5oCglpODYwLW9wY29kZS5oCT09PiBvcGNvZGUvaTg2MC5oCglpOTYwLW9wY29kZS5oCT09PiBvcGNvZGUvaTk2MC5oCgltNjhrLW9wY29kZS5oCT09PiBvcGNvZGUvbTY4ay5oCgltODhrLW9wY29kZS5oCT09PiBvcGNvZGUvbTg4ay5oCgltaXBzLW9wY29kZS5oCT09PiBvcGNvZGUvbWlwcy5oCglucDEtb3Bjb2RlLmgJPT0+IG9wY29kZS9ucDEuaAoJbnMzMmstb3Bjb2RlLmgJPT0+IG9wY29kZS9uczMyay5oCglwbi1vcGNvZGUuaAk9PT4gb3Bjb2RlL3BuLmgKCXB5ci1vcGNvZGUuaAk9PT4gb3Bjb2RlL3B5ci5oCglzcGFyYy1vcGNvZGUuaAk9PT4gb3Bjb2RlL3NwYXJjLmgKCXRhaG9lLW9wY29kZS5oCT09PiBvcGNvZGUvdGFob2UuaAoJdmF4LW9wY29kZS5oCT09PiBvcGNvZGUvdmF4LmgKCgoKV2VkIE5vdiAyNyAxMDozODozMSAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiAoaW50ZXJuYWxfc2NuaGRyKSB0b29rIG91dCAjZGVmIGRlcGVuZGVuY3ksIG5vdwoJc19ucmVsb2MgYW5kIHNfbmxubm8gYXJlIGFsd2F5cyBsb25nLiAJKGludGVybmFsX3JlbG9jKTogYWxsd2F5cwoJaGFzIGFuIG9mZnNldCBmaWVsZCBub3cuCgpGcmkgTm92IDIyIDA4OjEyOjU4IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogY29mZi1yczYwMDAuaDogIExpbnQ7IHVzZSB1bnNpZ25lZCBjaGFycyBmb3IgZXh0ZXJuYWwgZmllbGRzLgoJKiBpbnRlcm5hbGNvZmYuaDogIExpbnQ7IGNhc3Qgc3RvcmFnZSBjbGFzc2VzIHRvIHNpZ25lZCBjaGFyLgoKVGh1IE5vdiAyMSAyMTowMTowNSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN0YWIuZGVmOiBSZW1vdmUgdGhlIEdOVSBleHRlbmRlZCB0eXBlIGNvZGVzIChlLmcuIE5fU0VUVCkuCgkqIGFvdXQ2NC5oOiAgVGhlIGhldXJpc3RpYyBmb3IgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbgoJc3Vub3Mtc3R5bGUgYW5kIGJzZC1zdHlsZSBaTUFHSUMgZmlsZXMgKHdydC4gd2hlcmUgdGhlCgl0ZXh0IHNlZ21lbnQgc3RhcnRzKSBpcyBtb3ZlZCBpbnRvICh0aGUgZGVmYXVsdCBkZWZpbml0aW9uIG9mKQoJdGhlIG1hY3JvIE5fSEVBREVSX0lOX1RFWFQuICBUaGlzIGRlZmluaXRpb24gaXMgb25seSB1c2VkCglpZiBubyBvdGhlciBkZWZpbml0aW9uIGlzIHVzZWQgLSBlLmcuIGJmZC9uZXdzb3MzLmMgZGVmaW5lcwoJTl9IRUFERVJfSU5fVEVYVCh4KSB0byBiZSBhbHdheXMgMCAoYXMgYmVmb3JlKS4KClRodSBOb3YgMjEgMTE6NTM6MDMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaCAoTl9UWFRBRERSLCBOX1RYVE9GRiwgTl9UWFRTSVpFKTogIE5ldyBkZWZpbml0aW9ucwoJdGhhdCBzaG91bGQgaGFuZGxlIGFsbCB1c2VzLiAgTE9HSUNBTF8gdmVyc2lvbnMgZGVsZXRlZC4KCUVsaW1pbmF0ZSBOX0hFQURFUl9JTl9URVhULCB1c2luZyBhX2VudHJ5IHRvIGRldGVybWluZSB3aGljaAoJa2luZCBvZiB6bWFnaWMgYS5vdXQgZmlsZSB3ZSBhcmUgbG9va2luZyBhdC4KCSogY29mZi1yczYwMDAuaDogIFR5cG8uCgpUdWUgTm92IDE5IDE4OjQzOjM3IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCShOb3RlOiAgVGhpcyBpcyBhIHJldmlzZWQgZW50cnksIGFzIHdhcyBhb3V0NjQuaC4pCgkqIGFvdXQ2NC5oOiAgU29tZSBjbGVhbnVwcyBvZiBOX1RYVEFERFIgYW5kIE5fVFhUT0ZGOgoJV2lsbCBub3cgd29yayBmb3IgYm90aCBvbGQtIGFuZCBuZXctc3R5bGUgWk1BR0lDIGZpbGVzLAoJZGVwZW5kaW5nIG9uIE5fSEVBREVSX0lOX1RFWFQgbWFjcm8uCglBZGQgTE9HSUNBTF9UWFRBRERSLCBMT0lDQUxfVFhUT0ZGIGFuZCBMT0dJQ0FMX1RYVFNJWkUKCXRoYXQgZG9uJ3QgY291bnQgdGhlIGV4ZWMgaGVhZGVyIGFzIHBhcnQKCW9mIHRoZSB0ZXh0IHNlZ21lbnQsIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBiZmQuCgkqIGEub3V0LnN1bjQuaDogIFNpbXBsaWZpZWQvZml4ZWQgZm9yIHByZXZpb3VzIGNoYW5nZS4KCk1vbiBOb3YgMTggMDA6MDI6MDYgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBkd2FyZi5oOiAgVXBkYXRlIHRvIERXQVJGIGRyYWZ0IDUgdmVyc2lvbiBmcm9tIGdjYzIuCgpUaHUgTm92IDE0IDE5OjQ0OjU5IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3RhYi5kZWY6ICBBZGRlZCBkZWZzIGZvciBleHRlbmRlZCBHTlUgc3ltYm9sIHR5cGVzLAoJc3VjaCBhcyBOX1NFVFQuICBUaGVzZSBhcmUgbm9ybWFsbHkgaWZkZWYnZCBvdXQgKGJlY2F1c2UKCW9mIGNvbmZsaWN0cyB3aXRoIGEub3V0LmdudS5oKSwgYnV0IGFyZSB1c2VkIGJ5IGJmYl9zdGFiX25hbWUoKS4KClRodSBOb3YgMTQgMTk6MTc6MDMgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBlbGYtY29tbW9uLmg6ICBBZGQgZGVmaW5lcyB0byBzdXBwb3J0IEVMRiBzeW1ib2wgdGFibGUgY29kZS4KCk1vbiBOb3YgMTEgMTk6MDE6MDYgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBlbGYtaW50ZXJuYWwuaCwgZWxmLWV4dGVybmFsLmgsIGVsZi1jb21tb24uaDogIEFkZCBzdXBwb3J0IGZvcgoJbm90ZSBzZWN0aW9ucywgd2hpY2ggYXJlIHVzZWQgaW4gRUxGIGNvcmUgZmlsZXMgdG8gaG9sZCBjb3BpZXMKCW9mIHZhcmlvdXMgL3Byb2Mgc3RydWN0dXJlcy4KClRodSBOb3YgIDcgMDg6NTg6MjYgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiB0b29rIG91dCB0aGUgTTg4IGRlcGVuZGVuY3kgaW4gdGhlIGxpbmVubwoJc3RydWN0LgoJKiBjb2ZmLW04OGsuaDogZGVmaW5lcyBHRVRfTElORU5PX0xOTk8gYW5kIFBVVF9MSU5FTk9fTE5OTyB0byB1c2UKCTMyYml0IGxpbm5vIGVudHJpZXMuCgkqIGEyOWstb3Bjb2RlLmg6IGZpeGVkIGVuY29kaW5nIG9mIG10YWNjCgpTdW4gTm92ICAzIDExOjU0OjIyIDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgZnJvbSAuLi9iZmQvYmZkLWluLmggKHEudikuCgpGcmkgTm92ICAxIDExOjEzOjUzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6ICBBZGQgeF9jc2VjdCBkZWZpbmVzLgoKRnJpIE9jdCAyNSAwMzoxODoyMCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIFJlbmFtZSBDT0ZGLXJlbGF0ZWQgZmlsZXMgaW4gYGNvZmYtQVJDSC5oJyBmb3JtLgoJY29mZi1hMjlrLmgsIGNvZmYtaTM4Ni5oLCBjb2ZmLWk5NjAuaCwgY29mZi1tNjhrLmgsIGNvZmYtbTg4ay5oLAoJY29mZi1taXBzLmgsIGNvZmYtcnM2MDAwLmggdG8gYmUgZXhhY3QuCgpUaHUgT2N0IDI0IDIyOjExOjExIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCVJTLzYwMDAgc3VwcG9ydCwgYnkgTWV0aW4gRy4gT3ppc2lrLCBNaW1pIFBo+/RuZy1UaOVvIFb1LCBhbmQKCUpvaG4gR2lsbW9yZS4KCgkqIGEub3V0LmdudS5oOiAgVXBkYXRlIHNsaWdodGx5LgoJKiBiZmQuaDogIEFkZCBuZXcgZXJyb3IgY29kZSwgZml4IGRvYywgYWRkIGJmZF9hcmNoX3JzNjAwMC4KCSogaW50ZXJuYWxjb2ZmLmg6ICBBZGQgbW9yZSBGXyBjb2RlcyBmb3IgZmlsZWhkci4gIEFkZAoJcnMvNjAwMC1kZXBlbmRlbnQgZmllbGRzIHRvIGFvdXRoZHIuICBBZGQgc3RvcmFnZSBjbGFzc2VzCgl0byBzeW1lbnRzLiAgQWRkIDYwMDAtc3BlY2lmaWMgYXV4ZW50LiAgQWRkIHJfc2l6ZSBpbiByZWxvYy4KCSogcnM2MDAwY29mZi5jOiAgTmV3IGZpbGUuCgpUaHUgT2N0IDI0IDA0OjEzOjIwIDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZHdhcmYuaDogTmV3IGZpbGUgZm9yIGR3YXJmIHN1cHBvcnQuICBDb3BpZWQgZnJvbSBnY2MyCglkaXN0cmlidXRpb24uCgpXZWQgT2N0IDE2IDEzOjMxOjQ1IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW91dDY0Lmg6ICBSZW1vdmUgUEFHRV9TSVpFIGRlZmluZXM7IHRoZXkgYXJlIHRhcmdldC1kZXBlbmRlbnQuCglBZGQgTl9GTl9TRVEgZm9yIE5fRk4gc3ltYm9sIHR5cGUgdXNlZCBvbiBTZXF1ZW50IG1hY2hpbmVzLgoJKiBzdGFiLmRlZjogIEluY2x1ZGUgTl9GTl9TRVEgaW4gdGFibGUuCgkqIGJvdXQuaDogIEV4dGVybmFsIGZvcm1hdHMgb2Ygc3RydWN0dXJlcyB1c2UgdW5zaWduZWQgY2hhcnMuCgpGcmkgT2N0IDExIDEyOjQwOjQzIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc3RldmUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOnVwZ3JhZGUgZnJvbSBiZmQuYwoJKiBpbnRlcm5hbGNvZmYuaDogYWRkIG5fbmFtZSwgbl96ZXJvZXMgYW5kIG5fb2Zmc2V0IG1hY3JvcwoJKiBhbWRjb2ZmLmg6IERlZmluZSBPTUFHSUMgYW5kIEFPVVRIRFJTWi4KCkZyaSBPY3QgMTEgMTA6NTg6MDYgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBhLm91dC5ob3N0Lmg6IENoYW5nZSBTRUdNRU5UX1NJWkUgdG8gMHgxMDAwIGZvciBTb255LgoJKiBiZmQuaCAoYWxpZ25fcG93ZXIpOiBBZGQgKGFjdHVhbGx5IG1vdmUpIGNvbW1lbnQuCgpUdWUgT2N0ICA4IDE1OjI5OjMyIDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3lzL2gtcnRic2QuaDogRGVmaW5lIE1JU1NJTkdfVkZQUklOVCAoZm9yIGJpbnV0aWxzL2J1Y29tbS5jKS4KClN1biBPY3QgIDYgMTk6MjQ6MzkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaDogIE1vdmUgc3RydWN0IGludGVybmFsX2V4ZWMgdG8gLi4vYmZkL2xpYmFvdXQuaCBzbwoJaXQgY2FuIGJlIHNoYXJlZCBieSBhbGwgYGEub3V0LWZhbWlseScgY29kZS4gIFJlbmFtZQoJRVhURVJOQUxfTElTVF9TSVpFIHRvIEVYVEVSTkFMX05MSVNUX1NJWkUuICBVc2UgYmFzaWMgdHlwZXMKCWZvciBubGlzdCBtZW1iZXJzLCBhbmQgbWFrZSBzdHJ4IGludGVncmFsIHJhdGhlciB0aGFuIHBvaW50ZXIuCglNb3JlIGNvbW1lbnRhcnkgb24gbl90eXBlIHZhbHVlcy4KCSogYm91dC5oOiAgUHJvdmlkZSBhIHN0cnVjdCBleHRlcm5hbF9leGVjIHJhdGhlciB0aGFuIGFuCglpbnRlcm5hbF9leGVjLgoJKiBtNjhrY29mZi5oOiAgUmVtb3ZlIGB0YWdlbnRyaWVzJyB3aGljaCBzbnVjayBpbiBmcm9tIHRoZSBpOTYwCglDT0ZGIHBvcnQuCgpGcmkgT2N0ICA0IDAxOjI1OjU5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogaDgzMDAtb3Bjb2RlLmg6ICBSZW1vdmUgYF9lbnVtJyBmcm9tIHRoZSB0eXBlZGVmIGZvciBhbiBlbnVtLgoJKiBiZmQuaDogIFVwZGF0ZSB0byBtYXRjaCBiZmQgY2hhbmdlcy4KCgkqIHN5cy9oLWkzODZtYWNoLmgsIHN5c2RlcC5oOiAgQWRkIDM4NiBNYWNoIGhvc3Qgc3VwcG9ydC4KClR1ZSBPY3QgIDEgMDQ6NTg6NDIgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCwgZWxmLWNvbW1vbi5oLCBlbGYtZXh0ZXJuYWwuaCwgZWxmLWludGVybmFsLmg6CglBZGQgcHJlbGltaW5hcnkgRUxGIHN1cHBvcnQsIHN1ZmZpY2llbnQgZm9yIEdEQiwgZnJvbSBGcmVkIEZpc2guCgkqIHN5c2RlcC5oLCBzeXMvaC1hbWl4Lmg6ICBTdXBwb3J0IEFtaWdhIFNWUjQuCgoJKiBzeXMvaC12YXh1bHQuaDogIE1ha2UgaXQgd29yay4gIChEYXZpZCBUYXlsb3IgPHRheWxvckB0aGluay5jb20+KQoJKiBhLm91dC52YXguaDogIFJlbW92ZSB1bnVzZWQgYW5kIGNvbmZ1c2luZyBmaWxlLgoKTW9uIFNlcCAzMCAxMjo1MjozNSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN5c2RlcC5oOiBEZWZpbmUgTkVXU09TM19TWVMsIGFuZCB1c2UgaXQuCgpGcmkgU2VwIDIwIDEzOjM4OjIxIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmggKE5fRk4pOiAgSXRzIHZhbHVlICpyZWFsbHkgaXMqIDB4MUYuCglGaXggaXQsIGFuZCBhZGQgY29tbWVudHMgd2FybmluZyBhYm91dCBvci1pbmcgTl9FWFQgd2l0aCBpdAoJYW5kL29yIE5fV0FSTklORy4KCSogYW91dDY0LmggKE5fRk4pOiAgRml4IHZhbHVlLCBhZGQgY29tbWVudHMgYWJvdXQgTl9FWFQuCgkqIHN0YWIuZGVmICh0YWJsZSBhdCBlbmQpOiAgVXBkYXRlIHRvIHNob3cgYWxsIHRoZSB0eXBlCgl2YWx1ZXMgPDB4MjAsIGluY2x1ZGluZyBsb3cgb3JkZXIgYml0cy4gIE1vdmUgTl9GTiB0bwoJaXRzIHJpZ2h0ZnVsIHBsYWNlLgoKVHVlIFNlcCAxNyAxNzo0MTozNyAxOTkxICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogc3lzL2gtaXJpeDMuaDogIHNnaS9pcml4IHN1cHBvcnQuCgpUdWUgU2VwIDE3IDA3OjUyOjU5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIHN0YWIuZGVmIChOX0RFRkQpOiAgQWRkIEdOVSBNb2R1bGEtMiBkZWJ1ZyBzdGFiLCBmcm9tIEFuZHJldwoJQmVlcnMuCgpUaHUgU2VwIDEyIDE0OjEyOjU5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oIChTWU1OTUxFTiwgRklMTk1MRU4sIERJTU5VTSk6ICBEZWZpbmUgdGhlc2UKCWZvciBpbnRlcm5hbGNvZmYsIHNlcGFyYXRlbHkgZnJvbSB0aGUgdmFyaW91cyBleHRlcm5hbCBjb2ZmJ3MuCgkqIGFtZGNvZmYuaCwgYmNzODhrY29mZi5oLCBpMzg2Y29mZi5oLCBpbnRlbC1jb2ZmLmgsIG02OGtjb2ZmLmgsCgltODhrLWJjcy5oOiBQcmVmaXggU1lNTk1MRU4sIEZJTE5NTEVOLCBhbmQgRElNTlVNIHdpdGggRV8ncyBmb3IKCXRoZSBleHRlcm5hbCBzdHJ1Y3QgZGVmaW5pdGlvbnMuCgkqIGVjb2ZmLmg6IFJlbW92ZSB0aGVzZSAjZGVmaW5lJ3MsIGtsdWRnZSBubyBsb25nZXIgbmVlZGVkLgoKCSogc3lzL2gtdWx0cmEzLmg6ICBBZGQgbmV3IFVsdHJhY29tcHV0ZXIgaG9zdC4KCSogc3lzZGVwLmg6ICBBZGQgVUxUUkEzX1NZTTFfU1lTIGFuZCB1c2UgaXQuCgpUdWUgU2VwIDEwIDEwOjExOjQ2IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGkzODZjb2ZmLmggKExJTkVTWik6ICBBbHdheXMgNiwgbm90IGJhc2VkIG9uIHNpemVvZigpLgoJKEZpeCBmcm9tIFBldGVyIFNjaGF1ZXIgPHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlPi4pCgpXZWQgU2VwICA0IDA4OjU4OjM3IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGEub3V0LmdudS5oLCBhb3V0NjQuaDogIEFkZCBOX1dBUk5JTkcuICBDaGFuZ2UgTl9GTiB0byAweDBFLAoJdG8gbWF0Y2ggU3VuT1MgYW5kIEJTRC4gIEFkZCBOX0NPTU0gYXMgMHgxMiBmb3IgU3VuT1Mgc2hhcmVkIGxpYgoJc3VwcG9ydC4KCSogc3RhYi5kZWY6ICBBZGQgTl9DT01NIHRvIHRhYmxlLCBmaXggb3ZlcmxhcCBjb21tZW50LgoKVHVlIFNlcCAgMyAwNjoyOToyMCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJTWVyZ2Ugd2l0aCBsYXRlc3QgRlNGIHZlcnNpb25zIG9mIHRoZXNlIGZpbGVzLgoKCSogc3RhYi5nbnUuaDogIEFkZCBMQVNUX1VOVVNFRF9TVEFCX0NPREUuCgkqIHN0YWIuZGVmOiAgVXBkYXRlIHRvIEdQTDIuICBNb3ZlIE5fV0FSTklORyBvdXQsIHNpbmNlIG5vdCBhCglkZWJ1ZyBzeW1ib2wuICBDaGFuZ2UgY29tbWVudHMsIGFuZCByZW9yZGVyIHRhYmxlIHRvIG51bWVyaWMKCW9yZGVyLiAgVXBkYXRlIGZpbmFsIHRhYmxlIGNvbW1lbnQuCgkoTl9EU0xJTkUsIE5fQlNMSU5FKTogIFJlbnVtYmVyIGZyb20gMHg2NiBhbmQgMHg2OCwgdG8gMHg0NiBhbmQgMHg0OC4KCgkqIG9ic3RhY2suaDogIEdQTDIuICBNZXJnZS4KCkZyaSBBdWcgMjMgMDE6NTQ6MjMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmgsIGEub3V0LnN1bjQuaDogIE1ha2UgU0VHTUVOVF9TSVpFIGFibGUgdG8gZGVwZW5kCglvbiB0aGUgcGFydGljdWxhciBhLm91dCBiZWluZyBleGFtaW5lZC4KCSogYS5vdXQuc3VuNC5oOiAgRGVmaW5lIHNlZ21lbnQgc2l6ZXMgZm9yIFN1bi0zJ3MgYW5kIFN1bi00J3MuCgkqIEZJWE1FOiAgYS5vdXQuZ251LmggaXMgYWxtb3N0IG9ic29sZXRlLgoJKiBGSVhNRTogIGEub3V0LnN1bjQuaCBzaG91bGQgYmUgcmVuYW1lZCBhLm91dC5zdW4uaCBub3cuCgpXZWQgQXVnIDIxIDIwOjMyOjEzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIFN0YXJ0IGEgQ2hhbmdlTG9nIGZvciB0aGUgaW5jbHVkZXMgZGlyZWN0b3J5LgoKCSogYS5vdXQuZ251LmggKE5fRk4pOiAgRml4IHZhbHVlIC0tIHdhcyAxNSwgc2hvdWxkIGJlIDB4MUUuCgkqIHN0YWIuZGVmOiAgVXBkYXRlIGFsbG9jYXRpb24gdGFibGUgaW4gY29tbWVudHMgYXQgZW5kLAoJdG8gcmVmbGVjdCByZWFsaXR5IGFzIEkga25vdyBpdC4KCgwKTG9jYWwgVmFyaWFibGVzOgptb2RlOiBjaGFuZ2UtbG9nCmxlZnQtbWFyZ2luOiA4CmZpbGwtY29sdW1uOiA3NAp2ZXJzaW9uLWNvbnRyb2w6IG5ldmVyCkVuZDoK