Name: series-workflowd7rcb Phase: Failed StartedAt: 2026-09-06 07:09:01 +0000 UTC FinishedAt: 2026-09-06 07:36:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7rcb[0] Phase: Succeeded StartedAt: 2026-09-06 07:09:02 +0000 UTC FinishedAt: 2026-09-06 07:36:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7rcb[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 07:09:02 +0000 UTC FinishedAt: 2026-09-06 07:36:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFuYV94ZHBfc2V0KCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIE5JQyBkcml2ZXIgcmVxdWlyaW5nIEF6dXJlIEh5cGVyLVYgUENJIGluZnJhc3RydWN0dXJlIChQQ0lfSFlQRVJWKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhYmYzYzZhZTY0MTk0ZDYzZWI3OTBhMzRiZDEzYjAyYzk2ZTBiNzZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNzozNTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xuaW5kZXggNTMzMDhlMTM5Y2JlOS4uNWM5OTYxZWU5NzQ3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNcbkBAIC0yMDgsNiAmIzQzOzIwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV94ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdGlmIChlcnIpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuIFx0XHRcdFx0XHQgICBcJiMzNDtYRFA6IEluc3VmZmljaWVudCBtZW1vcnkgZm9yIHR4L3J4IHJlLWNvbmZpZ1wmIzM0Oyk7XG4mIzQzO1x0XHRcdGFwYy1cdTAwM2VicGZfcHJvZyA9IG9sZF9wcm9nO1xuIFx0XHRcdHJldHVybiBlcnI7XG4gXHRcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNzozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiZjNjNmFlNjQxOTRkNjNlYjc5MGEzNGJkMTNiMDJjOTZlMGI3NmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA3OjM1OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMKaW5kZXggNTMzMDhlMTM5Y2JlOS4uNWM5OTYxZWU5NzQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jCkBAIC0yMDgsNiAmIzQzOzIwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV94ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCWlmIChlcnIpIHsKIAkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssCiAJCQkJCSAgICYjMzQ7WERQOiBJbnN1ZmZpY2llbnQgbWVtb3J5IGZvciB0eC9yeCByZS1jb25maWcmIzM0Oyk7CiYjNDM7CQkJYXBjLSZndDticGZfcHJvZyA9IG9sZF9wcm9nOwogCQkJcmV0dXJuIGVycjsKIAkJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQU5BIEJQRiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWluZyBjaGFuZ2VkIGFuZCB3aGVyZS4gVGhlIGBkaWZmYCBzaG93cyB0aGF0IHRoZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG1hbmFfeGRwX3NldGAgZnVuY3Rpb24uCgpMb29raW5nIGF0IHRoZSBkaWZmIGl0c2VsZiwgaXQgc2VlbXMgbGlrZSB0aGVyZSBpcyBzb21lIGVycm9yIGhhbmRsaW5nIGJlaW5nIGludHJvZHVjZWQuIEkmIzM5O20gc2VlaW5nIGEgY2hlY2sgZm9yIGFuIGBlcnJgIHZhcmlhYmxlLCBhbmQgdGhlbiBhIGNhbGwgdG8gYE5MX1NFVF9FUlJfTVNHX01PRGAgd2hpY2ggc3VnZ2VzdHMgdGhpcyBpcyByZWxhdGVkIHRvIGEgTmV0bGluayBlcnJvci4gVGhlIGFkZGVkIGxpbmUgYGFwYy0mZ3Q7YnBmX3Byb2cgPSBvbGRfcHJvZztgIHNlZW1zIHRvIGJlIHJldmVydGluZyB0aGUgYnBmIHByb2dyYW0gYXNzaWdubWVudCBvbiBlcnJvci4gIFRoaXMgaW5kaWNhdGVzIGEgcG9zc2libGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIFhEUCAoZVhwcmVzcyBEYXRhIFBhdGgpIGZvciB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgbGlrZWx5IHByZXZlbnRzIHRoZSBuZXR3b3JrIGludGVyZmFjZSBmcm9tIGdvaW5nIGRvd24gY29tcGxldGVseSBpZiB0aGUgQlBGIHByb2dyYW0gbG9hZGluZyBmYWlscyBkdWUgdG8gbWVtb3J5IG9yIG90aGVyIHJlc291cmNlIGNvbnN0cmFpbnRzLgoKTm93LCBsZXQgbWUgY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIGBtYW5hYCBkcml2ZXIgLSB5ZXMsIHRoaXMgaXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYCBhbmQgdGhlIEtjb25maWcgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFhEUCBpcyBiZWluZyBsZXZlcmFnZWQgd2l0aGluIHRoaXMgZHJpdmVyIGFuZCB3aHkgdGhpcyBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24gbmVjZXNzaXRhdGVzIHRoaXMgcGFydGljdWxhciBmaXguIEkgd2lsbCBsb29rIGF0IHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhlIFhEUCBmZWF0dXJlIGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIE1pY3Jvc29mdCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIGlzIHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIGZvciBNaWNyb3NvZnQmIzM5O3MgRXRoZXJuZXQgZHJpdmVycyB3aWxsIGJlIGRlZmluZWQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb2xsZWN0aW9uIG9mIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBpbmNsdXNpb24gYW5kIGJlaGF2aW9yIG9mIHRoZXNlIGRyaXZlcnMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipEcml2ZXIgU2VsZWN0aW9uOioqIElzIHRoaXMgZmlsZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZSBvdmVyYWxsIE1pY3Jvc29mdCBFdGhlcm5ldCBkcml2ZXIgc2V0PyBBcmUgdGhlcmUgc3ViLW9wdGlvbnMgdG8gY2hvb3NlIHNwZWNpZmljIGNvbnRyb2xsZXIgbW9kZWxzIG9yIGZlYXR1cmVzPwoqICAgKipGZWF0dXJlIEZsYWdzOioqIFdoYXQgZmluZS1ncmFpbmVkIGZlYXR1cmVzIGFyZSBjb25maWd1cmFibGU/IFRoaW5ncyBsaWtlIGp1bWJvIGZyYW1lIHN1cHBvcnQsIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBWTEFOIGhhbmRsaW5nLCBjaGVja3N1bSBvZmZsb2FkLCBvciBwZXJoYXBzIGV2ZW4gcG93ZXIgbWFuYWdlbWVudCBjb250cm9scy4gVGhlc2UgZGV0YWlscyB3aWxsIHRlbGwgbWUgaG93IG11Y2ggY29udHJvbCB0aGUgdXNlciBoYXMgb3ZlciBvcHRpbWl6aW5nIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4KKiAgICoqRGVwZW5kZW5jaWVzOioqIEFyZSB0aGVyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZXh0ZXJuYWwgbGlicmFyaWVzIHRoYXQgbmVlZCB0byBiZSBzYXRpc2ZpZWQ/IFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIGEgc21vb3RoIGJ1aWxkIHByb2Nlc3MuCiogICAqKkRvY3VtZW50YXRpb24gYW5kIEhlbHAgVGV4dDoqKiBBIGdvb2QgS2NvbmZpZyBmaWxlIHNob3VsZCBvZmZlciBoZWxwZnVsIGRlc2NyaXB0aW9ucyBhbmQgY29udGV4dCBmb3IgZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBob3BlIHRvIGZpbmQgY2xlYXIgZXhwbGFuYXRpb25zIG9mIHdoYXQgZWFjaCBzZXR0aW5nIGRvZXMgYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBuZXcgZGV2ZWxvcGVycyBhbmQgZXhwZXJpZW5jZWQgdXNlcnMgYWxpa2UuCiogICAqKkRlZmF1bHRzIGFuZCBUcmlnZ2VyczoqKiBJJiMzOTtsbCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvIGRlZmF1bHQgdmFsdWVzIGFuZCBhbnkgcmVsYXRpb25zaGlwcyBvciB0cmlnZ2VycyBiZXR3ZWVuIG9wdGlvbnMgKGUuZy4sIGlmIG9uZSBvcHRpb24gcmVxdWlyZXMgYW5vdGhlciB0byBiZSBlbmFibGVkKS4gVGhlc2UgcmVsYXRpb25zaGlwcyBhcmUgdml0YWwgdG8gY29ycmVjdGx5IGNvbmZpZ3VyZSB0aGUgc3lzdGVtLCBhbmQgY2FuIGluZGljYXRlIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgYW5kIHdoYXQga2luZCBvZiBhc3N1bXB0aW9ucyBleGlzdC4KCkkmIzM5O20gZXNzZW50aWFsbHkgbG9va2luZyBmb3IgYSB3ZWxsLXN0cnVjdHVyZWQgYW5kIGRvY3VtZW50ZWQgYmx1ZXByaW50IGZvciBjb25maWd1cmluZyB0aGUgTWljcm9zb2Z0IEV0aGVybmV0IGRyaXZlcnMuIEkmIzM5O20ga2VlbiB0byBldmFsdWF0ZSBpdHMgY2xhcml0eSwgY29tcGxldGVuZXNzLCBhbmQgaG93IHdlbGwgaXQgcmVmbGVjdHMgYmVzdCBwcmFjdGljZXMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBzeXN0ZW0uIEZyb20gdGhpcywgSSYjMzk7bGwgYmUgYWJsZSB0byBpbmZlciBhIGxvdCBhYm91dCB0aGUgZGVzaWduIGFuZCBjb25maWd1cmFiaWxpdHkgb2YgdGhlIHVuZGVybHlpbmcgZHJpdmVycyB0aGVtc2VsdmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCNcbiAgIDI6XHQjIE1pY3Jvc29mdCBBenVyZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICAzOlx0I1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBORVRfVkVORE9SX01JQ1JPU09GVFxuICAgNjpcdFx0Ym9vbCBcJiMzNDtNaWNyb3NvZnQgTmV0d29yayBEZXZpY2VzXCYjMzQ7XG4gICA3Olx0XHRkZWZhdWx0IHlcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgZGV2aWNlIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEyOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCB0aGVcbiAgMTM6XHRcdCAgcXVlc3Rpb24gYWJvdXQgTWljcm9zb2Z0IG5ldHdvcmsgZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZVxuICAxNDpcdFx0ICBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBkZXZpY2UgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbi5cbiAgMTU6XHRcbiAgMTY6XHRpZiBORVRfVkVORE9SX01JQ1JPU09GVFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBNSUNST1NPRlRfTUFOQVxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDIxOlx0XHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiAgMjI6XHRcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxuICAyMzpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAgMjQ6XHRcdHNlbGVjdCBESU1MSUJcbiAgMjU6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMjY6XHRcdHNlbGVjdCBORVRfU0hBUEVSXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpLlxuICAyOTpcdFx0ICBTbyBmYXIsIHRoZSBkcml2ZXIgaXMgb25seSBzdXBwb3J0ZWQgb24gWDg2XzY0LlxuICAzMDpcdFxuICAzMTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAzMjpcdFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXG4gIDMzOlx0XG4gIDM0Olx0ZW5kaWYgI05FVF9WRU5ET1JfTUlDUk9TT0ZUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNQU5BIFJlcXVpcmVtZW50cyBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBNQU5BIHJlcXVpcmVtZW50IGJldHRlci4gRmlyc3QsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVwZW5kZW50IG9uIGBQQ0lfSFlQRVJWYCwgYFBDSV9NU0lgLCBhbmQgZWl0aGVyIGBYODZfNjRgIG9yIGEgY29tYmluYXRpb24gb2YgYEFSTTY0YCBhbmQgYSBub24tYmlnLWVuZGlhbiBDUFUuIFRoYXQgcG9pbnRzIHRvd2FyZHMgc29tZXRoaW5nIGRlZXBseSBpbnRlZ3JhdGVkIHdpdGggdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgSHlwZXItViwgZG9lc24mIzM5O3QgaXQ/IE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGlzIGlzIEF6dXJlL0h5cGVyLVYgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGhlYXZpbHkgb3B0aW1pemVkIGZvciBpdC4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4KCkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgTUFOQSBpcyBleGNsdXNpdmVseSBhIHBoeXNpY2FsIGRldmljZSBvciB2aXJ0dWFsaXplZCBoYXJkd2FyZSBvbmx5IHByZXNlbnQgaW4gQXp1cmUgb3IgSHlwZXItViBndWVzdHMuIExldCBtZSBkaWcgaW50byBteSByZWZlcmVuY2UgbWF0ZXJpYWwsIHdoaWNoIHN0YXRlcyB0aGF0IGNlcnRhaW4gaGFyZHdhcmUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBzcGVjaWZpY2FsbHkgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIGFuIEFTSUMgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBzZWN0aW9uIGZlZWxzIHJlbGV2YW50LiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGZvciB0aGUgTUFOQSBjb21wb25lbnQuCgpNeSBuZXh0IGxpbmUgb2YgdGhvdWdodCBpcyB0byBjaGVjayBob3cgTUFOQSBwcm9iZXMgdG8gc2VlIHdoZXRoZXIgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIGlmIGl0JiMzOTtzIEh5cGVyLVYgb3IgQXp1cmUtc3BlY2lmaWMgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIHV0aWxpemVzIGl0IHRvIHByb3Blcmx5IGFzc2VzcyBpdHMgb3ZlcmFsbCBjaGFyYWN0ZXJpc3RpY3MgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc3VpdGFibGUgZm9yIG90aGVyIGRlcGxveW1lbnQgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbmFfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xNzk9c3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjgzOlx0LyogQ2FwIHRvIHRoZSBzYW1lIGxpbWl0IHVzZWQgYnkgbWFuYV9wcm9iZSgpIGZvciBwb3J0IGluc3RhbnRpYXRpb24sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yODQtXHQgKiBzbyBNU0ktWCBhbmQgcXVldWUgYnVkZ2V0aW5nIG1hdGNoZXMgdGhlIGFjdHVhbCBwb3J0IGNvdW50LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0OTk9c3RhdGljIGludCBtYW5hX2dkX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTU1Olx0ZXJyID0gbWFuYV9wcm9iZShcdTAwMjZnYy1cdTAwM2VtYW5hLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTU2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTkzLVx0ICogSGFyZHdhcmUgY291bGQgYmUgaW4gcmVjb3ZlcnkgbW9kZSBhbmQgdGhlIEhXQyByZXR1cm5zIFRJTUVET1VUIG9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTk0Olx0ICogRVBST1RPIGZyb20gbWFuYV9nZF9zZXR1cCgpLCBtYW5hX3Byb2JlKCkgb3IgbWFuYV9yZG1hX3Byb2JlKCksIG9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTk1LVx0ICogd2UgcmVjZWl2ZWQgYSBoYXJkd2FyZSByZXNldCBldmVudCBvdmVyIEhXQyBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNjU5PWludCBtYW5hX2dkX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjY2ODpcdGVyciA9IG1hbmFfcHJvYmUoXHUwMDI2Z2MtXHUwMDNlbWFuYSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjY5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9Mzc3MD1pbnQgbWFuYV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZnJvbV9jbG9zZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzgwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozODA3OnN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzgwOC1cdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqKm5kZXZfc3RvcmFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9NDA0OD1zdGF0aWMgdm9pZCBtYW5hX2dmX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQwNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDA3MTppbnQgbWFuYV9wcm9iZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLCBib29sIHJlc3VtaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQwNzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTQ1LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYy1cdTAwM2VudW1fcG9ydHM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDE0NjpcdFx0XHRlcnIgPSBtYW5hX3Byb2JlX3BvcnQoYWMsIGksIFx1MDAyNmFjLVx1MDAzZXBvcnRzW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTQ3LVx0XHRcdC8qIExvZyB0aGUgcG9ydCBmb3Igd2hpY2ggdGhlIHByb2JlIGZhaWxlZCwgc3RvcCBwcm9iaW5nXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgUENJIElEcyBmb3IgJiMzNDtNYW5hJiMzNDsgKEh5cG90aGV0aWNhbCkqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3MgZGlnIGludG8gdGhlIFBDSSBkZXZpY2UgSURzIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21ldGhpbmcgcmVsYXRlZCB0byAmIzM5O21hbmEmIzM5Oy4mIzM0OyBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHRlcm0gaW4gYSBoYXJkd2FyZS9zb2Z0d2FyZSBjb250ZXh0LiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHByb3ByaWV0YXJ5IGVtYmVkZGVkIHN5c3RlbSwgc29tZSBmYW50YXN5LXRoZW1lZCBnYW1lIGVuZ2luZSBjb21wb25lbnQsIG9yIHBlcmhhcHMgZXZlbiBhIGNvZGUgd29yZCBmb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgdGVybSAmIzM5O21hbmEmIzM5OyBpcyB3aGF0JiMzOTtzIGludHJpZ3Vpbmcg4oCTIGl0JiMzOTtzIHVubGlrZWx5IHRvIGJlIGEgc3RhbmRhcmQsIHdpZGVseSB1c2VkIGFjcm9ueW0gb3IgYSB0eXBpY2FsIGRlc2NyaXB0aXZlIHRlcm0gd2l0aGluIGEgc3RhbmRhcmQgUENJIHNwZWMuIFRoaXMgc3VnZ2VzdHMgb25lIG9mIHNldmVyYWwgcGF0aHM6CgoxLiAgKipQcm9wcmlldGFyeS9DdXN0b20gSGFyZHdhcmU6KiogVGhlIG1vc3QgbGlrZWx5IHNjZW5hcmlvIGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBlaXRoZXIgaW4taG91c2UgaGFyZHdhcmUsIG9yIGFuIGVtYmVkZGVkIHN5c3RlbS4gU29tZW9uZSB1c2VkIHRoZSB0ZXJtIGludGVybmFsbHkgdG8gaWRlbnRpZnkgYSBzZWN0aW9uIG9mIGhhcmR3YXJlLiBJ4oCZZCBuZWVkIHRvIGRpdmUgaW50byB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBJdCBjb3VsZCBiZSBhIGN1c3RvbSBGUEdBIGltcGxlbWVudGF0aW9uLCBBU0lDIG9yIGV2ZW4gc29tZSB1bnVzdWFsIGFkZC1pbiBjYXJkLiBJZiBpdCYjMzk7cyBhIHByb3ByaWV0YXJ5IHByb2plY3QsIEkgbmVlZCB0byBsb29rIGZvciBkb2N1bWVudGF0aW9uLCBzb3VyY2UgY29kZSwgb3IgaW50ZXJuYWwgc3BlY2lmaWNhdGlvbnMuIFRoZSB2ZW5kb3IgSUQgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHBpZWNlLiBBZnRlciB0aGF0LCB0aGUgZGV2aWNlIElEIGlzIG5lZWRlZCB0byBsb29rIGludG8gdGhhdCB2ZW5kb3ImIzM5O3MgaGFyZHdhcmUuCgoyLiAgKipPYmZ1c2NhdGlvbi9Db2RlIFdvcmQ6KiogSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGF0ICYjMzQ7bWFuYSYjMzQ7IGlzIGEgZGVsaWJlcmF0ZWx5IG9ic2N1cmUgdGVybSB1c2VkIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIHdpdGhpbiBhIG1vcmUgZ2VuZXJhbCBzeXN0ZW0sIHBlcmhhcHMgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHJldmVyc2UgZW5naW5lZXJpbmcgYW5hbHlzaXMsIG9yIGFuIGF0dGVtcHQgdG8gb2JmdXNjYXRlIHRoZSByZWFsIHB1cnBvc2Ugb2YgYSBwYXJ0aWN1bGFyIGRldmljZS4gVGhpcyB3b3VsZCBsaWtlbHkgcmVxdWlyZSBkZWVwZXIgcmV2ZXJzZSBlbmdpbmVlcmluZyBvciBmdXJ0aGVyIGFuYWx5c2lzIG9mIHRoZSBjb2RlLgoKMy4gICoqR2FtaW5nL0dyYXBoaWNzLVJlbGF0ZWQ6KiogSWYgdGhlcmXigJlzIHNvbWUga2luZCBvZiBnYW1pbmcgdGllLWluLCBwZXJoYXBzIHRoZSBJRCBwb2ludHMgdG8gYSBjdXN0b20gR1BVIG9yIGRlZGljYXRlZCBoYXJkd2FyZSBmb3IgZ2FtZSBwaHlzaWNzL3NpbXVsYXRpb24vcmVuZGVyLiBJIHdvdWxkIG5lZWQgdG8gY2hlY2sgZXhpc3RpbmcgZHJpdmVyIGluZm9ybWF0aW9uLgoKNC4gICoqTm92ZWwgQXBwcm9hY2g6KiogTWF5YmUgc29tZW9uZSBpcyBkb2luZyBzb21ldGhpbmcgZ2VudWluZWx5IG5ldyBhbmQgZ3JvdW5kYnJlYWtpbmcuIEl0JiMzOTtzIGEgbG9uZyBzaG90LCBidXQgaWYgaXQgdHJ1bHkgaXMgYSBub3ZlbCBpbXBsZW1lbnRhdGlvbiwgdGhlIFBDSSBJRHMgbWlnaHQgYmUgcGFydCBvZiBhbiBleHBlcmltZW50YWwgYXJjaGl0ZWN0dXJlLiBJdCB3b3VsZCBiZSBhIHRyZWFzdXJlIGh1bnQgYW5kIEkgd291bGQgbmVlZCB0byBmaW5kIHRoZSBwYXRlbnRzIGFuZCBkb2N1bWVudGF0aW9uLgoKSW4gYW55IGV2ZW50LCBJIGtub3cgdGhhdCBjaGVja2luZyB0aGUgUENJIGRldmljZSBJRHMgaXMgbXkgc3RhcnRpbmcgcG9pbnQuIFRoZSBWZW5kb3IgSUQgKFZJRCkgYW5kIERldmljZSBJRCAoRElEKSB3aWxsIGJlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgaW5mb3JtYXRpb24gZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgZGV0ZWN0aXZlIHdvcmsgYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjQ5ND1zdGF0aWMgYm9vbCBtYW5hX2lzX3BmKHVuc2lnbmVkIHNob3J0IGRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ5OTpzdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTAwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNjk4PXN0YXRpYyBpbnQgbWFuYV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjcxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI3MTk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI3MjAtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEZfREVWSUNFX0lEKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTM4CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDYzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBNQU5BIERyaXZlciBDb2RlIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcy4gVGhlIGNvZGUgY2hhbmdlIHRhcmdldHMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtYW5hX3hkcF9zZXRgIGZ1bmN0aW9uLiBUaGlzIGlzIHBhcnQgb2YgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlci4gUmlnaHQgYXdheSwgbXkgYWxhcm0gYmVsbHMgYXJlIGdvaW5nIG9mZiBiZWNhdXNlIE1BTkEgaXMgYSBTbWFydE5JQyBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgQXp1cmUgVk1zLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFBDSSBkZXZpY2UgKGBQQ0lfSFlQRVJWYCkgdGhhdCYjMzk7cyBvbmx5IGdvaW5nIHRvIGJlIGF2YWlsYWJsZSB3aXRoaW4gdGhlIEF6dXJlIGluZnJhc3RydWN0dXJlIGFuZCBpdHMgSHlwZXItViBlbnZpcm9ubWVudC4gVGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc3l6a2FsbGVyIGluc3RhbmNlcy4gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMgY29uZmlybXMgbXkgc3VzcGljaW9uOiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBldGMuLCB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgYXJlbiYjMzk7dCByZWFjaGFibGUuCgpTbywgSSYjMzk7dmUgZ290IGEgc3Ryb25nIGZlZWxpbmcgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiB0aGUgdHlwaWNhbCBmdXp6aW5nIHNldHVwLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgYWxsIHRoZSBkZXRhaWxzIHJpZ2h0OiBmaWxlIGlzIGBtYW5hX2JwZi5jYCwgZnVuY3Rpb24gaXMgYG1hbmFfeGRwX3NldGAsIGFuZCB0aGUgc3Vic3lzdGVtIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gLiBDb25maXJtaW5nIHRoYXQsIGluIHRoZSBzdGFuZGFyZCBRRU1VL0dDRSBzZXR1cCwgaXQmIzM5O3Mgbm90IHJlYWNoYWJsZS4gVGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBhcmUgY2xlYXI6IGl0IG5lZWRzIHRoYXQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuCgpUaGVyZWZvcmUsIHRoaXMgaXMgbm90IHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIFdlJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gZmFsc2UuIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBlbXB0eSBiZWNhdXNlIHdlIHdvbiYjMzk7dCBiZSBlbmFibGluZyB0aGlzLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgTUFOQSBkcml2ZXIgaXMgdmVuZG9yLXNwZWNpZmljLCByZXF1aXJpbmcgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUsIG5vdCBlbXVsYXRlZCBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBgc2V0LXJlc3VsdHNgIGNhbGwgdG8gbWFrZSBzdXJlIHRoZSBmb3JtYXQgaXMgcmlnaHQuIFdlIG5lZWQgYFdvcnRoRnV6emluZ2Agc2V0IHRvIGZhbHNlLCBgRm9jdXNTeW1ib2xzYCBhcyBhbiBlbXB0eSBhcnJheSwgYEVuYWJsZUNvbmZpZ3NgIGFzIGFuIGVtcHR5IGFycmF5LCBhbmQgdGhlIHJlYXNvbmluZyBzaG91bGQgc3RhdGUgdGhhdCB0aGUgY2hhbmdlIGFmZmVjdHMgYSBNQU5BIGRyaXZlciBmdW5jdGlvbiAoYG1hbmFfeGRwX3NldGAgaW4gYG1hbmFfYnBmLmNgKSwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIHRoZSBBenVyZS1zcGVjaWZpYyBIeXBlci1WIFBDSSB2aXJ0dWFsIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4gVGhpcyBvbmUgaXMgYSBuby1nbyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFuYV94ZHBfc2V0KCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIE5JQyBkcml2ZXIgcmVxdWlyaW5nIEF6dXJlIEh5cGVyLVYgUENJIGluZnJhc3RydWN0dXJlIChQQ0lfSFlQRVJWKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS4wODY4MjczOTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM5ODYyMzI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1hbmFfeGRwX3NldCgpIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlci4gTUFOQSBpcyBhIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVyIHJlcXVpcmluZyBBenVyZSBIeXBlci1WIFBDSSBpbmZyYXN0cnVjdHVyZSAoUENJX0hZUEVSVikgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS4wODY4MzE4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzNjYyNDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWJmM2M2YWU2NDE5NGQ2M2ViNzkwYTM0YmQxM2IwMmM5NmUwYjc2YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA3OjM1OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jXFxuaW5kZXggNTMzMDhlMTM5Y2JlOS4uNWM5OTYxZWU5NzQ3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xcbkBAIC0yMDgsNiArMjA4LDcgQEAgc3RhdGljIGludCBtYW5hX3hkcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4gXFx0XFx0aWYgKGVycikge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBcXFwiWERQOiBJbnN1ZmZpY2llbnQgbWVtb3J5IGZvciB0eC9yeCByZS1jb25maWdcXFwiKTtcXG4rXFx0XFx0XFx0YXBjLVxcdTAwM2VicGZfcHJvZyA9IG9sZF9wcm9nO1xcbiBcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS42NDExNjA1ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIxODQ0Mjc2Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhYmYzYzZhZTY0MTk0ZDYzZWI3OTBhMzRiZDEzYjAyYzk2ZTBiNzZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNzozNTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jXG5pbmRleCA1MzMwOGUxMzljYmU5Li41Yzk5NjFlZTk3NDdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xuQEAgLTIwOCw2ICsyMDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfeGRwX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuIFx0XHRpZiAoZXJyKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbiBcdFx0XHRcdFx0ICAgXCJYRFA6IEluc3VmZmljaWVudCBtZW1vcnkgZm9yIHR4L3J4IHJlLWNvbmZpZ1wiKTtcbitcdFx0XHRhcGMtXHUwMDNlYnBmX3Byb2cgPSBvbGRfcHJvZztcbiBcdFx0XHRyZXR1cm4gZXJyO1xuIFx0XHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS42NDExNjIyMzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjY0NzgxNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFOQSBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2hhbmdlZCBhbmQgd2hlcmUuIFRoZSBgZGlmZmAgc2hvd3MgdGhhdCB0aGUgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgaW4gdGhlIGBtYW5hX3hkcF9zZXRgIGZ1bmN0aW9uLlxuXG5Mb29raW5nIGF0IHRoZSBkaWZmIGl0c2VsZiwgaXQgc2VlbXMgbGlrZSB0aGVyZSBpcyBzb21lIGVycm9yIGhhbmRsaW5nIGJlaW5nIGludHJvZHVjZWQuIEknbSBzZWVpbmcgYSBjaGVjayBmb3IgYW4gYGVycmAgdmFyaWFibGUsIGFuZCB0aGVuIGEgY2FsbCB0byBgTkxfU0VUX0VSUl9NU0dfTU9EYCB3aGljaCBzdWdnZXN0cyB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBOZXRsaW5rIGVycm9yLiBUaGUgYWRkZWQgbGluZSBgYXBjLVx1MDAzZWJwZl9wcm9nID0gb2xkX3Byb2c7YCBzZWVtcyB0byBiZSByZXZlcnRpbmcgdGhlIGJwZiBwcm9ncmFtIGFzc2lnbm1lbnQgb24gZXJyb3IuICBUaGlzIGluZGljYXRlcyBhIHBvc3NpYmxlIHJlc291cmNlIGFsbG9jYXRpb24gaXNzdWUgd2hlbiBjb25maWd1cmluZyBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSBmb3IgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGxpa2VseSBwcmV2ZW50cyB0aGUgbmV0d29yayBpbnRlcmZhY2UgZnJvbSBnb2luZyBkb3duIGNvbXBsZXRlbHkgaWYgdGhlIEJQRiBwcm9ncmFtIGxvYWRpbmcgZmFpbHMgZHVlIHRvIG1lbW9yeSBvciBvdGhlciByZXNvdXJjZSBjb25zdHJhaW50cy5cblxuTm93LCBsZXQgbWUgY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIGBtYW5hYCBkcml2ZXIgLSB5ZXMsIHRoaXMgaXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AgYW5kIHRoZSBLY29uZmlnIHRvIHNlZSB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBYRFAgaXMgYmVpbmcgbGV2ZXJhZ2VkIHdpdGhpbiB0aGlzIGRyaXZlciBhbmQgd2h5IHRoaXMgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uIG5lY2Vzc2l0YXRlcyB0aGlzIHBhcnRpY3VsYXIgZml4LiBJIHdpbGwgbG9vayBhdCB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoZSBYRFAgZmVhdHVyZSBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzU6NTAuOTA1OTQ1ODM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzIzOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUNST1NPRlRfTUFOQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoxODpjb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzU6NTAuOTY2Mjc2ODc0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA1NjY4NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IEtjb25maWcgZmlsZTpcblxuKipEaXZpbmcgaW50byB0aGUgTWljcm9zb2Z0IEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBpcyB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgY29uZmlndXJhdGlvbiBmb3IgTWljcm9zb2Z0J3MgRXRoZXJuZXQgZHJpdmVycyB3aWxsIGJlIGRlZmluZWQuIEknbSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbGxlY3Rpb24gb2Ygb3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBhbmQgYmVoYXZpb3Igb2YgdGhlc2UgZHJpdmVycyB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipEcml2ZXIgU2VsZWN0aW9uOioqIElzIHRoaXMgZmlsZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZSBvdmVyYWxsIE1pY3Jvc29mdCBFdGhlcm5ldCBkcml2ZXIgc2V0PyBBcmUgdGhlcmUgc3ViLW9wdGlvbnMgdG8gY2hvb3NlIHNwZWNpZmljIGNvbnRyb2xsZXIgbW9kZWxzIG9yIGZlYXR1cmVzP1xuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBXaGF0IGZpbmUtZ3JhaW5lZCBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlPyBUaGluZ3MgbGlrZSBqdW1ibyBmcmFtZSBzdXBwb3J0LCBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcywgVkxBTiBoYW5kbGluZywgY2hlY2tzdW0gb2ZmbG9hZCwgb3IgcGVyaGFwcyBldmVuIHBvd2VyIG1hbmFnZW1lbnQgY29udHJvbHMuIFRoZXNlIGRldGFpbHMgd2lsbCB0ZWxsIG1lIGhvdyBtdWNoIGNvbnRyb2wgdGhlIHVzZXIgaGFzIG92ZXIgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBleHRlcm5hbCBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHNhdGlzZmllZD8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBzbW9vdGggYnVpbGQgcHJvY2Vzcy5cbiogICAqKkRvY3VtZW50YXRpb24gYW5kIEhlbHAgVGV4dDoqKiBBIGdvb2QgS2NvbmZpZyBmaWxlIHNob3VsZCBvZmZlciBoZWxwZnVsIGRlc2NyaXB0aW9ucyBhbmQgY29udGV4dCBmb3IgZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBob3BlIHRvIGZpbmQgY2xlYXIgZXhwbGFuYXRpb25zIG9mIHdoYXQgZWFjaCBzZXR0aW5nIGRvZXMgYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBuZXcgZGV2ZWxvcGVycyBhbmQgZXhwZXJpZW5jZWQgdXNlcnMgYWxpa2UuXG4qICAgKipEZWZhdWx0cyBhbmQgVHJpZ2dlcnM6KiogSSdsbCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvIGRlZmF1bHQgdmFsdWVzIGFuZCBhbnkgcmVsYXRpb25zaGlwcyBvciB0cmlnZ2VycyBiZXR3ZWVuIG9wdGlvbnMgKGUuZy4sIGlmIG9uZSBvcHRpb24gcmVxdWlyZXMgYW5vdGhlciB0byBiZSBlbmFibGVkKS4gVGhlc2UgcmVsYXRpb25zaGlwcyBhcmUgdml0YWwgdG8gY29ycmVjdGx5IGNvbmZpZ3VyZSB0aGUgc3lzdGVtLCBhbmQgY2FuIGluZGljYXRlIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgYW5kIHdoYXQga2luZCBvZiBhc3N1bXB0aW9ucyBleGlzdC5cblxuSSdtIGVzc2VudGlhbGx5IGxvb2tpbmcgZm9yIGEgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBkb2N1bWVudGVkIGJsdWVwcmludCBmb3IgY29uZmlndXJpbmcgdGhlIE1pY3Jvc29mdCBFdGhlcm5ldCBkcml2ZXJzLiBJJ20ga2VlbiB0byBldmFsdWF0ZSBpdHMgY2xhcml0eSwgY29tcGxldGVuZXNzLCBhbmQgaG93IHdlbGwgaXQgcmVmbGVjdHMgYmVzdCBwcmFjdGljZXMgd2l0aGluIHRoZSBrZXJuZWwncyBLY29uZmlnIHN5c3RlbS4gRnJvbSB0aGlzLCBJJ2xsIGJlIGFibGUgdG8gaW5mZXIgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBhbmQgY29uZmlndXJhYmlsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGRyaXZlcnMgdGhlbXNlbHZlcy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo1NC4wMjI5NjY3OTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCNcXG4gICAyOlxcdCMgTWljcm9zb2Z0IEF6dXJlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICAzOlxcdCNcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXFxuICAgNjpcXHRcXHRib29sIFxcXCJNaWNyb3NvZnQgTmV0d29yayBEZXZpY2VzXFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGRldmljZSBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEyOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIHRoZVxcbiAgMTM6XFx0XFx0ICBxdWVzdGlvbiBhYm91dCBNaWNyb3NvZnQgbmV0d29yayBkZXZpY2VzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlXFxuICAxNDpcXHRcXHQgIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGRldmljZSBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBORVRfVkVORE9SX01JQ1JPU09GVFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgTUlDUk9TT0ZUX01BTkFcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfSFlQRVJWXFxuICAyMzpcXHRcXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbiAgMjQ6XFx0XFx0c2VsZWN0IERJTUxJQlxcbiAgMjU6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMjY6XFx0XFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkuXFxuICAyOTpcXHRcXHQgIFNvIGZhciwgdGhlIGRyaXZlciBpcyBvbmx5IHN1cHBvcnRlZCBvbiBYODZfNjQuXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDMyOlxcdFxcdCAgVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtYW5hLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRlbmRpZiAjTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzU6NTQuMDIzMDUyODA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzNDc0MTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNQU5BIFJlcXVpcmVtZW50cyBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIE1BTkEgcmVxdWlyZW1lbnQgYmV0dGVyLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBpdCdzIGRlcGVuZGVudCBvbiBgUENJX0hZUEVSVmAsIGBQQ0lfTVNJYCwgYW5kIGVpdGhlciBgWDg2XzY0YCBvciBhIGNvbWJpbmF0aW9uIG9mIGBBUk02NGAgYW5kIGEgbm9uLWJpZy1lbmRpYW4gQ1BVLiBUaGF0IHBvaW50cyB0b3dhcmRzIHNvbWV0aGluZyBkZWVwbHkgaW50ZWdyYXRlZCB3aXRoIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IEh5cGVyLVYsIGRvZXNuJ3QgaXQ/IE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGlzIGlzIEF6dXJlL0h5cGVyLVYgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGhlYXZpbHkgb3B0aW1pemVkIGZvciBpdC4gTGV0J3Mgc2VlIGlmIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIE1BTkEgaXMgZXhjbHVzaXZlbHkgYSBwaHlzaWNhbCBkZXZpY2Ugb3IgdmlydHVhbGl6ZWQgaGFyZHdhcmUgb25seSBwcmVzZW50IGluIEF6dXJlIG9yIEh5cGVyLVYgZ3Vlc3RzLiBMZXQgbWUgZGlnIGludG8gbXkgcmVmZXJlbmNlIG1hdGVyaWFsLCB3aGljaCBzdGF0ZXMgdGhhdCBjZXJ0YWluIGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgc3BlY2lmaWNhbGx5IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCBhbiBBU0lDIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgc2VjdGlvbiBmZWVscyByZWxldmFudC4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtZWFucyBmb3IgdGhlIE1BTkEgY29tcG9uZW50LlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhvdWdodCBpcyB0byBjaGVjayBob3cgTUFOQSBwcm9iZXMgdG8gc2VlIHdoZXRoZXIgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIGlmIGl0J3MgSHlwZXItViBvciBBenVyZS1zcGVjaWZpYyBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaWRlbnRpZmllcyBhbmQgdXRpbGl6ZXMgaXQgdG8gcHJvcGVybHkgYXNzZXNzIGl0cyBvdmVyYWxsIGNoYXJhY3RlcmlzdGljcyBhbmQgd2hldGhlciBpdCdzIHN1aXRhYmxlIGZvciBvdGhlciBkZXBsb3ltZW50IHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU4NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA3OjM1OjU3LjU1Nzc5ODE1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc5NTg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE3OT1zdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyODM6XFx0LyogQ2FwIHRvIHRoZSBzYW1lIGxpbWl0IHVzZWQgYnkgbWFuYV9wcm9iZSgpIGZvciBwb3J0IGluc3RhbnRpYXRpb24sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjg0LVxcdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDk5PXN0YXRpYyBpbnQgbWFuYV9nZF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjU1NTpcXHRlcnIgPSBtYW5hX3Byb2JlKFxcdTAwMjZnYy1cXHUwMDNlbWFuYSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1OTMtXFx0ICogSGFyZHdhcmUgY291bGQgYmUgaW4gcmVjb3ZlcnkgbW9kZSBhbmQgdGhlIEhXQyByZXR1cm5zIFRJTUVET1VUIG9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjU5NDpcXHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTk1LVxcdCAqIHdlIHJlY2VpdmVkIGEgaGFyZHdhcmUgcmVzZXQgZXZlbnQgb3ZlciBIV0MgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNjU5PWludCBtYW5hX2dkX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjY2ODpcXHRlcnIgPSBtYW5hX3Byb2JlKFxcdTAwMjZnYy1cXHUwMDNlbWFuYSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjY2OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTM3NzA9aW50IG1hbmFfZGV0YWNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGZyb21fY2xvc2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzgwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6MzgwNzpzdGF0aWMgaW50IG1hbmFfcHJvYmVfcG9ydChzdHJ1Y3QgbWFuYV9jb250ZXh0ICphYywgaW50IHBvcnRfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODA4LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICoqbmRldl9zdG9yYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTQwNDg9c3RhdGljIHZvaWQgbWFuYV9nZl9zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQwNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjQwNzE6aW50IG1hbmFfcHJvYmUoc3RydWN0IGdkbWFfZGV2ICpnZCwgYm9vbCByZXN1bWluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDE0NS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWMtXFx1MDAzZW51bV9wb3J0czsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjQxNDY6XFx0XFx0XFx0ZXJyID0gbWFuYV9wcm9iZV9wb3J0KGFjLCBpLCBcXHUwMDI2YWMtXFx1MDAzZXBvcnRzW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDE0Ny1cXHRcXHRcXHQvKiBMb2cgdGhlIHBvcnQgZm9yIHdoaWNoIHRoZSBwcm9iZSBmYWlsZWQsIHN0b3AgcHJvYmluZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo1Ny42MDQ1OTg4OThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODYyNjc1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFBDSSBJRHMgZm9yIFwiTWFuYVwiIChIeXBvdGhldGljYWwpKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcywgXCJMZXQncyBkaWcgaW50byB0aGUgUENJIGRldmljZSBJRHMgdG8gc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWV0aGluZyByZWxhdGVkIHRvICdtYW5hJy5cIiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHRlcm0gaW4gYSBoYXJkd2FyZS9zb2Z0d2FyZSBjb250ZXh0LiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHByb3ByaWV0YXJ5IGVtYmVkZGVkIHN5c3RlbSwgc29tZSBmYW50YXN5LXRoZW1lZCBnYW1lIGVuZ2luZSBjb21wb25lbnQsIG9yIHBlcmhhcHMgZXZlbiBhIGNvZGUgd29yZCBmb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgdGVybSAnbWFuYScgaXMgd2hhdCdzIGludHJpZ3Vpbmcg4oCTIGl0J3MgdW5saWtlbHkgdG8gYmUgYSBzdGFuZGFyZCwgd2lkZWx5IHVzZWQgYWNyb255bSBvciBhIHR5cGljYWwgZGVzY3JpcHRpdmUgdGVybSB3aXRoaW4gYSBzdGFuZGFyZCBQQ0kgc3BlYy4gVGhpcyBzdWdnZXN0cyBvbmUgb2Ygc2V2ZXJhbCBwYXRoczpcblxuMS4gICoqUHJvcHJpZXRhcnkvQ3VzdG9tIEhhcmR3YXJlOioqIFRoZSBtb3N0IGxpa2VseSBzY2VuYXJpbyBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBlaXRoZXIgaW4taG91c2UgaGFyZHdhcmUsIG9yIGFuIGVtYmVkZGVkIHN5c3RlbS4gU29tZW9uZSB1c2VkIHRoZSB0ZXJtIGludGVybmFsbHkgdG8gaWRlbnRpZnkgYSBzZWN0aW9uIG9mIGhhcmR3YXJlLiBJ4oCZZCBuZWVkIHRvIGRpdmUgaW50byB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBJdCBjb3VsZCBiZSBhIGN1c3RvbSBGUEdBIGltcGxlbWVudGF0aW9uLCBBU0lDIG9yIGV2ZW4gc29tZSB1bnVzdWFsIGFkZC1pbiBjYXJkLiBJZiBpdCdzIGEgcHJvcHJpZXRhcnkgcHJvamVjdCwgSSBuZWVkIHRvIGxvb2sgZm9yIGRvY3VtZW50YXRpb24sIHNvdXJjZSBjb2RlLCBvciBpbnRlcm5hbCBzcGVjaWZpY2F0aW9ucy4gVGhlIHZlbmRvciBJRCBpcyB0aGUgZmlyc3QgY3JpdGljYWwgcGllY2UuIEFmdGVyIHRoYXQsIHRoZSBkZXZpY2UgSUQgaXMgbmVlZGVkIHRvIGxvb2sgaW50byB0aGF0IHZlbmRvcidzIGhhcmR3YXJlLlxuXG4yLiAgKipPYmZ1c2NhdGlvbi9Db2RlIFdvcmQ6KiogSXQncyBhbHNvIHBvc3NpYmxlIHRoYXQgXCJtYW5hXCIgaXMgYSBkZWxpYmVyYXRlbHkgb2JzY3VyZSB0ZXJtIHVzZWQgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gd2l0aGluIGEgbW9yZSBnZW5lcmFsIHN5c3RlbSwgcGVyaGFwcyBmb3Igc2VjdXJpdHkgcmVhc29ucywgcmV2ZXJzZSBlbmdpbmVlcmluZyBhbmFseXNpcywgb3IgYW4gYXR0ZW1wdCB0byBvYmZ1c2NhdGUgdGhlIHJlYWwgcHVycG9zZSBvZiBhIHBhcnRpY3VsYXIgZGV2aWNlLiBUaGlzIHdvdWxkIGxpa2VseSByZXF1aXJlIGRlZXBlciByZXZlcnNlIGVuZ2luZWVyaW5nIG9yIGZ1cnRoZXIgYW5hbHlzaXMgb2YgdGhlIGNvZGUuXG5cbjMuICAqKkdhbWluZy9HcmFwaGljcy1SZWxhdGVkOioqIElmIHRoZXJl4oCZcyBzb21lIGtpbmQgb2YgZ2FtaW5nIHRpZS1pbiwgcGVyaGFwcyB0aGUgSUQgcG9pbnRzIHRvIGEgY3VzdG9tIEdQVSBvciBkZWRpY2F0ZWQgaGFyZHdhcmUgZm9yIGdhbWUgcGh5c2ljcy9zaW11bGF0aW9uL3JlbmRlci4gSSB3b3VsZCBuZWVkIHRvIGNoZWNrIGV4aXN0aW5nIGRyaXZlciBpbmZvcm1hdGlvbi5cblxuNC4gICoqTm92ZWwgQXBwcm9hY2g6KiogTWF5YmUgc29tZW9uZSBpcyBkb2luZyBzb21ldGhpbmcgZ2VudWluZWx5IG5ldyBhbmQgZ3JvdW5kYnJlYWtpbmcuIEl0J3MgYSBsb25nIHNob3QsIGJ1dCBpZiBpdCB0cnVseSBpcyBhIG5vdmVsIGltcGxlbWVudGF0aW9uLCB0aGUgUENJIElEcyBtaWdodCBiZSBwYXJ0IG9mIGFuIGV4cGVyaW1lbnRhbCBhcmNoaXRlY3R1cmUuIEl0IHdvdWxkIGJlIGEgdHJlYXN1cmUgaHVudCBhbmQgSSB3b3VsZCBuZWVkIHRvIGZpbmQgdGhlIHBhdGVudHMgYW5kIGRvY3VtZW50YXRpb24uXG5cbkluIGFueSBldmVudCwgSSBrbm93IHRoYXQgY2hlY2tpbmcgdGhlIFBDSSBkZXZpY2UgSURzIGlzIG15IHN0YXJ0aW5nIHBvaW50LiBUaGUgVmVuZG9yIElEIChWSUQpIGFuZCBEZXZpY2UgSUQgKERJRCkgd2lsbCBiZSB0aGUgY3JpdGljYWwgcGllY2VzIG9mIGluZm9ybWF0aW9uIGZvciB0aGlzIGludmVzdGlnYXRpb24uIFRoaXMgaXMgd2hlcmUgdGhlIGRldGVjdGl2ZSB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA3OjM2OjAxLjQ2NzI3ODU3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxNDMyMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDk0PXN0YXRpYyBib29sIG1hbmFfaXNfcGYodW5zaWduZWQgc2hvcnQgZGV2X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDk5OnN0YXRpYyBpbnQgbWFuYV9nZF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI2OTg9c3RhdGljIGludCBtYW5hX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI3MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjcxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI3MjAtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzY6MDEuNTEyNDI3OTU4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NzI5ODU4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTUFOQSBEcml2ZXIgQ29kZSBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzLiBUaGUgY29kZSBjaGFuZ2UgdGFyZ2V0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY2AsIHNwZWNpZmljYWxseSB0aGUgYG1hbmFfeGRwX3NldGAgZnVuY3Rpb24uIFRoaXMgaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBSaWdodCBhd2F5LCBteSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGJlY2F1c2UgTUFOQSBpcyBhIFNtYXJ0TklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBBenVyZSBWTXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBQQ0kgZGV2aWNlIChgUENJX0hZUEVSVmApIHRoYXQncyBvbmx5IGdvaW5nIHRvIGJlIGF2YWlsYWJsZSB3aXRoaW4gdGhlIEF6dXJlIGluZnJhc3RydWN0dXJlIGFuZCBpdHMgSHlwZXItViBlbnZpcm9ubWVudC4gVGhpcyBpc24ndCBzb21ldGhpbmcgdGhhdCdzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHN5emthbGxlciBpbnN0YW5jZXMuIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGNvbmZpcm1zIG15IHN1c3BpY2lvbjogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgZXRjLiwgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIGFyZW4ndCByZWFjaGFibGUuXG5cblNvLCBJJ3ZlIGdvdCBhIHN0cm9uZyBmZWVsaW5nIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gdGhlIHR5cGljYWwgZnV6emluZyBzZXR1cC4gTGV0J3MgbWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIGRldGFpbHMgcmlnaHQ6IGZpbGUgaXMgYG1hbmFfYnBmLmNgLCBmdW5jdGlvbiBpcyBgbWFuYV94ZHBfc2V0YCwgYW5kIHRoZSBzdWJzeXN0ZW0gaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AuIENvbmZpcm1pbmcgdGhhdCwgaW4gdGhlIHN0YW5kYXJkIFFFTVUvR0NFIHNldHVwLCBpdCdzIG5vdCByZWFjaGFibGUuIFRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgYXJlIGNsZWFyOiBpdCBuZWVkcyB0aGF0IHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgbm90IHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIFdlJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBmYWxzZS4gYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGVtcHR5IGJlY2F1c2Ugd2Ugd29uJ3QgYmUgZW5hYmxpbmcgdGhpcy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIE1BTkEgZHJpdmVyIGlzIHZlbmRvci1zcGVjaWZpYywgcmVxdWlyaW5nIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLCBub3QgZW11bGF0ZWQgaW4gb3VyIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGBzZXQtcmVzdWx0c2AgY2FsbCB0byBtYWtlIHN1cmUgdGhlIGZvcm1hdCBpcyByaWdodC4gV2UgbmVlZCBgV29ydGhGdXp6aW5nYCBzZXQgdG8gZmFsc2UsIGBGb2N1c1N5bWJvbHNgIGFzIGFuIGVtcHR5IGFycmF5LCBgRW5hYmxlQ29uZmlnc2AgYXMgYW4gZW1wdHkgYXJyYXksIGFuZCB0aGUgcmVhc29uaW5nIHNob3VsZCBzdGF0ZSB0aGF0IHRoZSBjaGFuZ2UgYWZmZWN0cyBhIE1BTkEgZHJpdmVyIGZ1bmN0aW9uIChgbWFuYV94ZHBfc2V0YCBpbiBgbWFuYV9icGYuY2ApLCB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gdGhlIEF6dXJlLXNwZWNpZmljIEh5cGVyLVYgUENJIHZpcnR1YWwgaGFyZHdhcmUgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC5cblxuQWxyaWdodCwgbGV0J3MgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4gVGhpcyBvbmUgaXMgYSBuby1nbyBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkzOCwiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzY6MDcuNDg1NDE2NDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWFuYV94ZHBfc2V0KCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIE5JQyBkcml2ZXIgcmVxdWlyaW5nIEF6dXJlIEh5cGVyLVYgUENJIGluZnJhc3RydWN0dXJlIChQQ0lfSFlQRVJWKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA3OjM2OjA3LjQ4NTQzODg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7rcb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 07:09:03 +0000 UTC FinishedAt: 2026-09-06 07:36:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFuYV94ZHBfc2V0KCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIE5JQyBkcml2ZXIgcmVxdWlyaW5nIEF6dXJlIEh5cGVyLVYgUENJIGluZnJhc3RydWN0dXJlIChQQ0lfSFlQRVJWKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhYmYzYzZhZTY0MTk0ZDYzZWI3OTBhMzRiZDEzYjAyYzk2ZTBiNzZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNzozNTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xuaW5kZXggNTMzMDhlMTM5Y2JlOS4uNWM5OTYxZWU5NzQ3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNcbkBAIC0yMDgsNiAmIzQzOzIwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV94ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdGlmIChlcnIpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuIFx0XHRcdFx0XHQgICBcJiMzNDtYRFA6IEluc3VmZmljaWVudCBtZW1vcnkgZm9yIHR4L3J4IHJlLWNvbmZpZ1wmIzM0Oyk7XG4mIzQzO1x0XHRcdGFwYy1cdTAwM2VicGZfcHJvZyA9IG9sZF9wcm9nO1xuIFx0XHRcdHJldHVybiBlcnI7XG4gXHRcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNzozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiZjNjNmFlNjQxOTRkNjNlYjc5MGEzNGJkMTNiMDJjOTZlMGI3NmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA3OjM1OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMKaW5kZXggNTMzMDhlMTM5Y2JlOS4uNWM5OTYxZWU5NzQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jCkBAIC0yMDgsNiAmIzQzOzIwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV94ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCWlmIChlcnIpIHsKIAkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssCiAJCQkJCSAgICYjMzQ7WERQOiBJbnN1ZmZpY2llbnQgbWVtb3J5IGZvciB0eC9yeCByZS1jb25maWcmIzM0Oyk7CiYjNDM7CQkJYXBjLSZndDticGZfcHJvZyA9IG9sZF9wcm9nOwogCQkJcmV0dXJuIGVycjsKIAkJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQU5BIEJQRiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWluZyBjaGFuZ2VkIGFuZCB3aGVyZS4gVGhlIGBkaWZmYCBzaG93cyB0aGF0IHRoZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG1hbmFfeGRwX3NldGAgZnVuY3Rpb24uCgpMb29raW5nIGF0IHRoZSBkaWZmIGl0c2VsZiwgaXQgc2VlbXMgbGlrZSB0aGVyZSBpcyBzb21lIGVycm9yIGhhbmRsaW5nIGJlaW5nIGludHJvZHVjZWQuIEkmIzM5O20gc2VlaW5nIGEgY2hlY2sgZm9yIGFuIGBlcnJgIHZhcmlhYmxlLCBhbmQgdGhlbiBhIGNhbGwgdG8gYE5MX1NFVF9FUlJfTVNHX01PRGAgd2hpY2ggc3VnZ2VzdHMgdGhpcyBpcyByZWxhdGVkIHRvIGEgTmV0bGluayBlcnJvci4gVGhlIGFkZGVkIGxpbmUgYGFwYy0mZ3Q7YnBmX3Byb2cgPSBvbGRfcHJvZztgIHNlZW1zIHRvIGJlIHJldmVydGluZyB0aGUgYnBmIHByb2dyYW0gYXNzaWdubWVudCBvbiBlcnJvci4gIFRoaXMgaW5kaWNhdGVzIGEgcG9zc2libGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIFhEUCAoZVhwcmVzcyBEYXRhIFBhdGgpIGZvciB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgbGlrZWx5IHByZXZlbnRzIHRoZSBuZXR3b3JrIGludGVyZmFjZSBmcm9tIGdvaW5nIGRvd24gY29tcGxldGVseSBpZiB0aGUgQlBGIHByb2dyYW0gbG9hZGluZyBmYWlscyBkdWUgdG8gbWVtb3J5IG9yIG90aGVyIHJlc291cmNlIGNvbnN0cmFpbnRzLgoKTm93LCBsZXQgbWUgY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIGBtYW5hYCBkcml2ZXIgLSB5ZXMsIHRoaXMgaXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYCBhbmQgdGhlIEtjb25maWcgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFhEUCBpcyBiZWluZyBsZXZlcmFnZWQgd2l0aGluIHRoaXMgZHJpdmVyIGFuZCB3aHkgdGhpcyBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24gbmVjZXNzaXRhdGVzIHRoaXMgcGFydGljdWxhciBmaXguIEkgd2lsbCBsb29rIGF0IHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhlIFhEUCBmZWF0dXJlIGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIE1pY3Jvc29mdCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIGlzIHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIGZvciBNaWNyb3NvZnQmIzM5O3MgRXRoZXJuZXQgZHJpdmVycyB3aWxsIGJlIGRlZmluZWQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb2xsZWN0aW9uIG9mIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBpbmNsdXNpb24gYW5kIGJlaGF2aW9yIG9mIHRoZXNlIGRyaXZlcnMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipEcml2ZXIgU2VsZWN0aW9uOioqIElzIHRoaXMgZmlsZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZSBvdmVyYWxsIE1pY3Jvc29mdCBFdGhlcm5ldCBkcml2ZXIgc2V0PyBBcmUgdGhlcmUgc3ViLW9wdGlvbnMgdG8gY2hvb3NlIHNwZWNpZmljIGNvbnRyb2xsZXIgbW9kZWxzIG9yIGZlYXR1cmVzPwoqICAgKipGZWF0dXJlIEZsYWdzOioqIFdoYXQgZmluZS1ncmFpbmVkIGZlYXR1cmVzIGFyZSBjb25maWd1cmFibGU/IFRoaW5ncyBsaWtlIGp1bWJvIGZyYW1lIHN1cHBvcnQsIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBWTEFOIGhhbmRsaW5nLCBjaGVja3N1bSBvZmZsb2FkLCBvciBwZXJoYXBzIGV2ZW4gcG93ZXIgbWFuYWdlbWVudCBjb250cm9scy4gVGhlc2UgZGV0YWlscyB3aWxsIHRlbGwgbWUgaG93IG11Y2ggY29udHJvbCB0aGUgdXNlciBoYXMgb3ZlciBvcHRpbWl6aW5nIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4KKiAgICoqRGVwZW5kZW5jaWVzOioqIEFyZSB0aGVyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZXh0ZXJuYWwgbGlicmFyaWVzIHRoYXQgbmVlZCB0byBiZSBzYXRpc2ZpZWQ/IFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIGEgc21vb3RoIGJ1aWxkIHByb2Nlc3MuCiogICAqKkRvY3VtZW50YXRpb24gYW5kIEhlbHAgVGV4dDoqKiBBIGdvb2QgS2NvbmZpZyBmaWxlIHNob3VsZCBvZmZlciBoZWxwZnVsIGRlc2NyaXB0aW9ucyBhbmQgY29udGV4dCBmb3IgZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBob3BlIHRvIGZpbmQgY2xlYXIgZXhwbGFuYXRpb25zIG9mIHdoYXQgZWFjaCBzZXR0aW5nIGRvZXMgYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBuZXcgZGV2ZWxvcGVycyBhbmQgZXhwZXJpZW5jZWQgdXNlcnMgYWxpa2UuCiogICAqKkRlZmF1bHRzIGFuZCBUcmlnZ2VyczoqKiBJJiMzOTtsbCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvIGRlZmF1bHQgdmFsdWVzIGFuZCBhbnkgcmVsYXRpb25zaGlwcyBvciB0cmlnZ2VycyBiZXR3ZWVuIG9wdGlvbnMgKGUuZy4sIGlmIG9uZSBvcHRpb24gcmVxdWlyZXMgYW5vdGhlciB0byBiZSBlbmFibGVkKS4gVGhlc2UgcmVsYXRpb25zaGlwcyBhcmUgdml0YWwgdG8gY29ycmVjdGx5IGNvbmZpZ3VyZSB0aGUgc3lzdGVtLCBhbmQgY2FuIGluZGljYXRlIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgYW5kIHdoYXQga2luZCBvZiBhc3N1bXB0aW9ucyBleGlzdC4KCkkmIzM5O20gZXNzZW50aWFsbHkgbG9va2luZyBmb3IgYSB3ZWxsLXN0cnVjdHVyZWQgYW5kIGRvY3VtZW50ZWQgYmx1ZXByaW50IGZvciBjb25maWd1cmluZyB0aGUgTWljcm9zb2Z0IEV0aGVybmV0IGRyaXZlcnMuIEkmIzM5O20ga2VlbiB0byBldmFsdWF0ZSBpdHMgY2xhcml0eSwgY29tcGxldGVuZXNzLCBhbmQgaG93IHdlbGwgaXQgcmVmbGVjdHMgYmVzdCBwcmFjdGljZXMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBzeXN0ZW0uIEZyb20gdGhpcywgSSYjMzk7bGwgYmUgYWJsZSB0byBpbmZlciBhIGxvdCBhYm91dCB0aGUgZGVzaWduIGFuZCBjb25maWd1cmFiaWxpdHkgb2YgdGhlIHVuZGVybHlpbmcgZHJpdmVycyB0aGVtc2VsdmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCNcbiAgIDI6XHQjIE1pY3Jvc29mdCBBenVyZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICAzOlx0I1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBORVRfVkVORE9SX01JQ1JPU09GVFxuICAgNjpcdFx0Ym9vbCBcJiMzNDtNaWNyb3NvZnQgTmV0d29yayBEZXZpY2VzXCYjMzQ7XG4gICA3Olx0XHRkZWZhdWx0IHlcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgZGV2aWNlIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEyOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCB0aGVcbiAgMTM6XHRcdCAgcXVlc3Rpb24gYWJvdXQgTWljcm9zb2Z0IG5ldHdvcmsgZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZVxuICAxNDpcdFx0ICBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBkZXZpY2UgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbi5cbiAgMTU6XHRcbiAgMTY6XHRpZiBORVRfVkVORE9SX01JQ1JPU09GVFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBNSUNST1NPRlRfTUFOQVxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDIxOlx0XHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiAgMjI6XHRcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxuICAyMzpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAgMjQ6XHRcdHNlbGVjdCBESU1MSUJcbiAgMjU6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMjY6XHRcdHNlbGVjdCBORVRfU0hBUEVSXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpLlxuICAyOTpcdFx0ICBTbyBmYXIsIHRoZSBkcml2ZXIgaXMgb25seSBzdXBwb3J0ZWQgb24gWDg2XzY0LlxuICAzMDpcdFxuICAzMTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAzMjpcdFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXG4gIDMzOlx0XG4gIDM0Olx0ZW5kaWYgI05FVF9WRU5ET1JfTUlDUk9TT0ZUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNQU5BIFJlcXVpcmVtZW50cyBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBNQU5BIHJlcXVpcmVtZW50IGJldHRlci4gRmlyc3QsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVwZW5kZW50IG9uIGBQQ0lfSFlQRVJWYCwgYFBDSV9NU0lgLCBhbmQgZWl0aGVyIGBYODZfNjRgIG9yIGEgY29tYmluYXRpb24gb2YgYEFSTTY0YCBhbmQgYSBub24tYmlnLWVuZGlhbiBDUFUuIFRoYXQgcG9pbnRzIHRvd2FyZHMgc29tZXRoaW5nIGRlZXBseSBpbnRlZ3JhdGVkIHdpdGggdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgSHlwZXItViwgZG9lc24mIzM5O3QgaXQ/IE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGlzIGlzIEF6dXJlL0h5cGVyLVYgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGhlYXZpbHkgb3B0aW1pemVkIGZvciBpdC4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4KCkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgTUFOQSBpcyBleGNsdXNpdmVseSBhIHBoeXNpY2FsIGRldmljZSBvciB2aXJ0dWFsaXplZCBoYXJkd2FyZSBvbmx5IHByZXNlbnQgaW4gQXp1cmUgb3IgSHlwZXItViBndWVzdHMuIExldCBtZSBkaWcgaW50byBteSByZWZlcmVuY2UgbWF0ZXJpYWwsIHdoaWNoIHN0YXRlcyB0aGF0IGNlcnRhaW4gaGFyZHdhcmUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBzcGVjaWZpY2FsbHkgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIGFuIEFTSUMgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBzZWN0aW9uIGZlZWxzIHJlbGV2YW50LiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGZvciB0aGUgTUFOQSBjb21wb25lbnQuCgpNeSBuZXh0IGxpbmUgb2YgdGhvdWdodCBpcyB0byBjaGVjayBob3cgTUFOQSBwcm9iZXMgdG8gc2VlIHdoZXRoZXIgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIGlmIGl0JiMzOTtzIEh5cGVyLVYgb3IgQXp1cmUtc3BlY2lmaWMgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIHV0aWxpemVzIGl0IHRvIHByb3Blcmx5IGFzc2VzcyBpdHMgb3ZlcmFsbCBjaGFyYWN0ZXJpc3RpY3MgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc3VpdGFibGUgZm9yIG90aGVyIGRlcGxveW1lbnQgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbmFfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xNzk9c3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjgzOlx0LyogQ2FwIHRvIHRoZSBzYW1lIGxpbWl0IHVzZWQgYnkgbWFuYV9wcm9iZSgpIGZvciBwb3J0IGluc3RhbnRpYXRpb24sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yODQtXHQgKiBzbyBNU0ktWCBhbmQgcXVldWUgYnVkZ2V0aW5nIG1hdGNoZXMgdGhlIGFjdHVhbCBwb3J0IGNvdW50LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0OTk9c3RhdGljIGludCBtYW5hX2dkX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTU1Olx0ZXJyID0gbWFuYV9wcm9iZShcdTAwMjZnYy1cdTAwM2VtYW5hLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTU2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTkzLVx0ICogSGFyZHdhcmUgY291bGQgYmUgaW4gcmVjb3ZlcnkgbW9kZSBhbmQgdGhlIEhXQyByZXR1cm5zIFRJTUVET1VUIG9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTk0Olx0ICogRVBST1RPIGZyb20gbWFuYV9nZF9zZXR1cCgpLCBtYW5hX3Byb2JlKCkgb3IgbWFuYV9yZG1hX3Byb2JlKCksIG9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTk1LVx0ICogd2UgcmVjZWl2ZWQgYSBoYXJkd2FyZSByZXNldCBldmVudCBvdmVyIEhXQyBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNjU5PWludCBtYW5hX2dkX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjY2ODpcdGVyciA9IG1hbmFfcHJvYmUoXHUwMDI2Z2MtXHUwMDNlbWFuYSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjY5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9Mzc3MD1pbnQgbWFuYV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZnJvbV9jbG9zZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzgwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozODA3OnN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzgwOC1cdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqKm5kZXZfc3RvcmFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9NDA0OD1zdGF0aWMgdm9pZCBtYW5hX2dmX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQwNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDA3MTppbnQgbWFuYV9wcm9iZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLCBib29sIHJlc3VtaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQwNzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTQ1LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYy1cdTAwM2VudW1fcG9ydHM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDE0NjpcdFx0XHRlcnIgPSBtYW5hX3Byb2JlX3BvcnQoYWMsIGksIFx1MDAyNmFjLVx1MDAzZXBvcnRzW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTQ3LVx0XHRcdC8qIExvZyB0aGUgcG9ydCBmb3Igd2hpY2ggdGhlIHByb2JlIGZhaWxlZCwgc3RvcCBwcm9iaW5nXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgUENJIElEcyBmb3IgJiMzNDtNYW5hJiMzNDsgKEh5cG90aGV0aWNhbCkqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3MgZGlnIGludG8gdGhlIFBDSSBkZXZpY2UgSURzIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21ldGhpbmcgcmVsYXRlZCB0byAmIzM5O21hbmEmIzM5Oy4mIzM0OyBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHRlcm0gaW4gYSBoYXJkd2FyZS9zb2Z0d2FyZSBjb250ZXh0LiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHByb3ByaWV0YXJ5IGVtYmVkZGVkIHN5c3RlbSwgc29tZSBmYW50YXN5LXRoZW1lZCBnYW1lIGVuZ2luZSBjb21wb25lbnQsIG9yIHBlcmhhcHMgZXZlbiBhIGNvZGUgd29yZCBmb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgdGVybSAmIzM5O21hbmEmIzM5OyBpcyB3aGF0JiMzOTtzIGludHJpZ3Vpbmcg4oCTIGl0JiMzOTtzIHVubGlrZWx5IHRvIGJlIGEgc3RhbmRhcmQsIHdpZGVseSB1c2VkIGFjcm9ueW0gb3IgYSB0eXBpY2FsIGRlc2NyaXB0aXZlIHRlcm0gd2l0aGluIGEgc3RhbmRhcmQgUENJIHNwZWMuIFRoaXMgc3VnZ2VzdHMgb25lIG9mIHNldmVyYWwgcGF0aHM6CgoxLiAgKipQcm9wcmlldGFyeS9DdXN0b20gSGFyZHdhcmU6KiogVGhlIG1vc3QgbGlrZWx5IHNjZW5hcmlvIGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBlaXRoZXIgaW4taG91c2UgaGFyZHdhcmUsIG9yIGFuIGVtYmVkZGVkIHN5c3RlbS4gU29tZW9uZSB1c2VkIHRoZSB0ZXJtIGludGVybmFsbHkgdG8gaWRlbnRpZnkgYSBzZWN0aW9uIG9mIGhhcmR3YXJlLiBJ4oCZZCBuZWVkIHRvIGRpdmUgaW50byB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBJdCBjb3VsZCBiZSBhIGN1c3RvbSBGUEdBIGltcGxlbWVudGF0aW9uLCBBU0lDIG9yIGV2ZW4gc29tZSB1bnVzdWFsIGFkZC1pbiBjYXJkLiBJZiBpdCYjMzk7cyBhIHByb3ByaWV0YXJ5IHByb2plY3QsIEkgbmVlZCB0byBsb29rIGZvciBkb2N1bWVudGF0aW9uLCBzb3VyY2UgY29kZSwgb3IgaW50ZXJuYWwgc3BlY2lmaWNhdGlvbnMuIFRoZSB2ZW5kb3IgSUQgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHBpZWNlLiBBZnRlciB0aGF0LCB0aGUgZGV2aWNlIElEIGlzIG5lZWRlZCB0byBsb29rIGludG8gdGhhdCB2ZW5kb3ImIzM5O3MgaGFyZHdhcmUuCgoyLiAgKipPYmZ1c2NhdGlvbi9Db2RlIFdvcmQ6KiogSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGF0ICYjMzQ7bWFuYSYjMzQ7IGlzIGEgZGVsaWJlcmF0ZWx5IG9ic2N1cmUgdGVybSB1c2VkIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIHdpdGhpbiBhIG1vcmUgZ2VuZXJhbCBzeXN0ZW0sIHBlcmhhcHMgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHJldmVyc2UgZW5naW5lZXJpbmcgYW5hbHlzaXMsIG9yIGFuIGF0dGVtcHQgdG8gb2JmdXNjYXRlIHRoZSByZWFsIHB1cnBvc2Ugb2YgYSBwYXJ0aWN1bGFyIGRldmljZS4gVGhpcyB3b3VsZCBsaWtlbHkgcmVxdWlyZSBkZWVwZXIgcmV2ZXJzZSBlbmdpbmVlcmluZyBvciBmdXJ0aGVyIGFuYWx5c2lzIG9mIHRoZSBjb2RlLgoKMy4gICoqR2FtaW5nL0dyYXBoaWNzLVJlbGF0ZWQ6KiogSWYgdGhlcmXigJlzIHNvbWUga2luZCBvZiBnYW1pbmcgdGllLWluLCBwZXJoYXBzIHRoZSBJRCBwb2ludHMgdG8gYSBjdXN0b20gR1BVIG9yIGRlZGljYXRlZCBoYXJkd2FyZSBmb3IgZ2FtZSBwaHlzaWNzL3NpbXVsYXRpb24vcmVuZGVyLiBJIHdvdWxkIG5lZWQgdG8gY2hlY2sgZXhpc3RpbmcgZHJpdmVyIGluZm9ybWF0aW9uLgoKNC4gICoqTm92ZWwgQXBwcm9hY2g6KiogTWF5YmUgc29tZW9uZSBpcyBkb2luZyBzb21ldGhpbmcgZ2VudWluZWx5IG5ldyBhbmQgZ3JvdW5kYnJlYWtpbmcuIEl0JiMzOTtzIGEgbG9uZyBzaG90LCBidXQgaWYgaXQgdHJ1bHkgaXMgYSBub3ZlbCBpbXBsZW1lbnRhdGlvbiwgdGhlIFBDSSBJRHMgbWlnaHQgYmUgcGFydCBvZiBhbiBleHBlcmltZW50YWwgYXJjaGl0ZWN0dXJlLiBJdCB3b3VsZCBiZSBhIHRyZWFzdXJlIGh1bnQgYW5kIEkgd291bGQgbmVlZCB0byBmaW5kIHRoZSBwYXRlbnRzIGFuZCBkb2N1bWVudGF0aW9uLgoKSW4gYW55IGV2ZW50LCBJIGtub3cgdGhhdCBjaGVja2luZyB0aGUgUENJIGRldmljZSBJRHMgaXMgbXkgc3RhcnRpbmcgcG9pbnQuIFRoZSBWZW5kb3IgSUQgKFZJRCkgYW5kIERldmljZSBJRCAoRElEKSB3aWxsIGJlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgaW5mb3JtYXRpb24gZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgZGV0ZWN0aXZlIHdvcmsgYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjQ5ND1zdGF0aWMgYm9vbCBtYW5hX2lzX3BmKHVuc2lnbmVkIHNob3J0IGRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ5OTpzdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTAwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNjk4PXN0YXRpYyBpbnQgbWFuYV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjcxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI3MTk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI3MjAtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEZfREVWSUNFX0lEKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTM4CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDYzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBNQU5BIERyaXZlciBDb2RlIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcy4gVGhlIGNvZGUgY2hhbmdlIHRhcmdldHMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtYW5hX3hkcF9zZXRgIGZ1bmN0aW9uLiBUaGlzIGlzIHBhcnQgb2YgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlci4gUmlnaHQgYXdheSwgbXkgYWxhcm0gYmVsbHMgYXJlIGdvaW5nIG9mZiBiZWNhdXNlIE1BTkEgaXMgYSBTbWFydE5JQyBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgQXp1cmUgVk1zLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFBDSSBkZXZpY2UgKGBQQ0lfSFlQRVJWYCkgdGhhdCYjMzk7cyBvbmx5IGdvaW5nIHRvIGJlIGF2YWlsYWJsZSB3aXRoaW4gdGhlIEF6dXJlIGluZnJhc3RydWN0dXJlIGFuZCBpdHMgSHlwZXItViBlbnZpcm9ubWVudC4gVGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc3l6a2FsbGVyIGluc3RhbmNlcy4gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMgY29uZmlybXMgbXkgc3VzcGljaW9uOiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBldGMuLCB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgYXJlbiYjMzk7dCByZWFjaGFibGUuCgpTbywgSSYjMzk7dmUgZ290IGEgc3Ryb25nIGZlZWxpbmcgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiB0aGUgdHlwaWNhbCBmdXp6aW5nIHNldHVwLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgYWxsIHRoZSBkZXRhaWxzIHJpZ2h0OiBmaWxlIGlzIGBtYW5hX2JwZi5jYCwgZnVuY3Rpb24gaXMgYG1hbmFfeGRwX3NldGAsIGFuZCB0aGUgc3Vic3lzdGVtIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gLiBDb25maXJtaW5nIHRoYXQsIGluIHRoZSBzdGFuZGFyZCBRRU1VL0dDRSBzZXR1cCwgaXQmIzM5O3Mgbm90IHJlYWNoYWJsZS4gVGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBhcmUgY2xlYXI6IGl0IG5lZWRzIHRoYXQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuCgpUaGVyZWZvcmUsIHRoaXMgaXMgbm90IHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIFdlJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gZmFsc2UuIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBlbXB0eSBiZWNhdXNlIHdlIHdvbiYjMzk7dCBiZSBlbmFibGluZyB0aGlzLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgTUFOQSBkcml2ZXIgaXMgdmVuZG9yLXNwZWNpZmljLCByZXF1aXJpbmcgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUsIG5vdCBlbXVsYXRlZCBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBgc2V0LXJlc3VsdHNgIGNhbGwgdG8gbWFrZSBzdXJlIHRoZSBmb3JtYXQgaXMgcmlnaHQuIFdlIG5lZWQgYFdvcnRoRnV6emluZ2Agc2V0IHRvIGZhbHNlLCBgRm9jdXNTeW1ib2xzYCBhcyBhbiBlbXB0eSBhcnJheSwgYEVuYWJsZUNvbmZpZ3NgIGFzIGFuIGVtcHR5IGFycmF5LCBhbmQgdGhlIHJlYXNvbmluZyBzaG91bGQgc3RhdGUgdGhhdCB0aGUgY2hhbmdlIGFmZmVjdHMgYSBNQU5BIGRyaXZlciBmdW5jdGlvbiAoYG1hbmFfeGRwX3NldGAgaW4gYG1hbmFfYnBmLmNgKSwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIHRoZSBBenVyZS1zcGVjaWZpYyBIeXBlci1WIFBDSSB2aXJ0dWFsIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4gVGhpcyBvbmUgaXMgYSBuby1nbyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDc6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFuYV94ZHBfc2V0KCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIE5JQyBkcml2ZXIgcmVxdWlyaW5nIEF6dXJlIEh5cGVyLVYgUENJIGluZnJhc3RydWN0dXJlIChQQ0lfSFlQRVJWKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA3OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS4wODY4MjczOTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjM5ODYyMzI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1hbmFfeGRwX3NldCgpIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlci4gTUFOQSBpcyBhIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVyIHJlcXVpcmluZyBBenVyZSBIeXBlci1WIFBDSSBpbmZyYXN0cnVjdHVyZSAoUENJX0hZUEVSVikgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS4wODY4MzE4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzNjYyNDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWJmM2M2YWU2NDE5NGQ2M2ViNzkwYTM0YmQxM2IwMmM5NmUwYjc2YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA3OjM1OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jXFxuaW5kZXggNTMzMDhlMTM5Y2JlOS4uNWM5OTYxZWU5NzQ3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xcbkBAIC0yMDgsNiArMjA4LDcgQEAgc3RhdGljIGludCBtYW5hX3hkcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4gXFx0XFx0aWYgKGVycikge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBcXFwiWERQOiBJbnN1ZmZpY2llbnQgbWVtb3J5IGZvciB0eC9yeCByZS1jb25maWdcXFwiKTtcXG4rXFx0XFx0XFx0YXBjLVxcdTAwM2VicGZfcHJvZyA9IG9sZF9wcm9nO1xcbiBcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS42NDExNjA1ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIxODQ0Mjc2Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhYmYzYzZhZTY0MTk0ZDYzZWI3OTBhMzRiZDEzYjAyYzk2ZTBiNzZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNzozNTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jXG5pbmRleCA1MzMwOGUxMzljYmU5Li41Yzk5NjFlZTk3NDdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY1xuQEAgLTIwOCw2ICsyMDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfeGRwX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuIFx0XHRpZiAoZXJyKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbiBcdFx0XHRcdFx0ICAgXCJYRFA6IEluc3VmZmljaWVudCBtZW1vcnkgZm9yIHR4L3J4IHJlLWNvbmZpZ1wiKTtcbitcdFx0XHRhcGMtXHUwMDNlYnBmX3Byb2cgPSBvbGRfcHJvZztcbiBcdFx0XHRyZXR1cm4gZXJyO1xuIFx0XHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo0NS42NDExNjIyMzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjY0NzgxNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFOQSBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2hhbmdlZCBhbmQgd2hlcmUuIFRoZSBgZGlmZmAgc2hvd3MgdGhhdCB0aGUgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfYnBmLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgaW4gdGhlIGBtYW5hX3hkcF9zZXRgIGZ1bmN0aW9uLlxuXG5Mb29raW5nIGF0IHRoZSBkaWZmIGl0c2VsZiwgaXQgc2VlbXMgbGlrZSB0aGVyZSBpcyBzb21lIGVycm9yIGhhbmRsaW5nIGJlaW5nIGludHJvZHVjZWQuIEknbSBzZWVpbmcgYSBjaGVjayBmb3IgYW4gYGVycmAgdmFyaWFibGUsIGFuZCB0aGVuIGEgY2FsbCB0byBgTkxfU0VUX0VSUl9NU0dfTU9EYCB3aGljaCBzdWdnZXN0cyB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBOZXRsaW5rIGVycm9yLiBUaGUgYWRkZWQgbGluZSBgYXBjLVx1MDAzZWJwZl9wcm9nID0gb2xkX3Byb2c7YCBzZWVtcyB0byBiZSByZXZlcnRpbmcgdGhlIGJwZiBwcm9ncmFtIGFzc2lnbm1lbnQgb24gZXJyb3IuICBUaGlzIGluZGljYXRlcyBhIHBvc3NpYmxlIHJlc291cmNlIGFsbG9jYXRpb24gaXNzdWUgd2hlbiBjb25maWd1cmluZyBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSBmb3IgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGxpa2VseSBwcmV2ZW50cyB0aGUgbmV0d29yayBpbnRlcmZhY2UgZnJvbSBnb2luZyBkb3duIGNvbXBsZXRlbHkgaWYgdGhlIEJQRiBwcm9ncmFtIGxvYWRpbmcgZmFpbHMgZHVlIHRvIG1lbW9yeSBvciBvdGhlciByZXNvdXJjZSBjb25zdHJhaW50cy5cblxuTm93LCBsZXQgbWUgY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIGBtYW5hYCBkcml2ZXIgLSB5ZXMsIHRoaXMgaXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AgYW5kIHRoZSBLY29uZmlnIHRvIHNlZSB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBYRFAgaXMgYmVpbmcgbGV2ZXJhZ2VkIHdpdGhpbiB0aGlzIGRyaXZlciBhbmQgd2h5IHRoaXMgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uIG5lY2Vzc2l0YXRlcyB0aGlzIHBhcnRpY3VsYXIgZml4LiBJIHdpbGwgbG9vayBhdCB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoZSBYRFAgZmVhdHVyZSBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzU6NTAuOTA1OTQ1ODM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzIzOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUNST1NPRlRfTUFOQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoxODpjb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzU6NTAuOTY2Mjc2ODc0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA1NjY4NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IEtjb25maWcgZmlsZTpcblxuKipEaXZpbmcgaW50byB0aGUgTWljcm9zb2Z0IEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBpcyB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgY29uZmlndXJhdGlvbiBmb3IgTWljcm9zb2Z0J3MgRXRoZXJuZXQgZHJpdmVycyB3aWxsIGJlIGRlZmluZWQuIEknbSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbGxlY3Rpb24gb2Ygb3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBhbmQgYmVoYXZpb3Igb2YgdGhlc2UgZHJpdmVycyB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipEcml2ZXIgU2VsZWN0aW9uOioqIElzIHRoaXMgZmlsZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZSBvdmVyYWxsIE1pY3Jvc29mdCBFdGhlcm5ldCBkcml2ZXIgc2V0PyBBcmUgdGhlcmUgc3ViLW9wdGlvbnMgdG8gY2hvb3NlIHNwZWNpZmljIGNvbnRyb2xsZXIgbW9kZWxzIG9yIGZlYXR1cmVzP1xuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBXaGF0IGZpbmUtZ3JhaW5lZCBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlPyBUaGluZ3MgbGlrZSBqdW1ibyBmcmFtZSBzdXBwb3J0LCBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcywgVkxBTiBoYW5kbGluZywgY2hlY2tzdW0gb2ZmbG9hZCwgb3IgcGVyaGFwcyBldmVuIHBvd2VyIG1hbmFnZW1lbnQgY29udHJvbHMuIFRoZXNlIGRldGFpbHMgd2lsbCB0ZWxsIG1lIGhvdyBtdWNoIGNvbnRyb2wgdGhlIHVzZXIgaGFzIG92ZXIgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBleHRlcm5hbCBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHNhdGlzZmllZD8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBzbW9vdGggYnVpbGQgcHJvY2Vzcy5cbiogICAqKkRvY3VtZW50YXRpb24gYW5kIEhlbHAgVGV4dDoqKiBBIGdvb2QgS2NvbmZpZyBmaWxlIHNob3VsZCBvZmZlciBoZWxwZnVsIGRlc2NyaXB0aW9ucyBhbmQgY29udGV4dCBmb3IgZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBob3BlIHRvIGZpbmQgY2xlYXIgZXhwbGFuYXRpb25zIG9mIHdoYXQgZWFjaCBzZXR0aW5nIGRvZXMgYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBuZXcgZGV2ZWxvcGVycyBhbmQgZXhwZXJpZW5jZWQgdXNlcnMgYWxpa2UuXG4qICAgKipEZWZhdWx0cyBhbmQgVHJpZ2dlcnM6KiogSSdsbCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvIGRlZmF1bHQgdmFsdWVzIGFuZCBhbnkgcmVsYXRpb25zaGlwcyBvciB0cmlnZ2VycyBiZXR3ZWVuIG9wdGlvbnMgKGUuZy4sIGlmIG9uZSBvcHRpb24gcmVxdWlyZXMgYW5vdGhlciB0byBiZSBlbmFibGVkKS4gVGhlc2UgcmVsYXRpb25zaGlwcyBhcmUgdml0YWwgdG8gY29ycmVjdGx5IGNvbmZpZ3VyZSB0aGUgc3lzdGVtLCBhbmQgY2FuIGluZGljYXRlIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgYW5kIHdoYXQga2luZCBvZiBhc3N1bXB0aW9ucyBleGlzdC5cblxuSSdtIGVzc2VudGlhbGx5IGxvb2tpbmcgZm9yIGEgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBkb2N1bWVudGVkIGJsdWVwcmludCBmb3IgY29uZmlndXJpbmcgdGhlIE1pY3Jvc29mdCBFdGhlcm5ldCBkcml2ZXJzLiBJJ20ga2VlbiB0byBldmFsdWF0ZSBpdHMgY2xhcml0eSwgY29tcGxldGVuZXNzLCBhbmQgaG93IHdlbGwgaXQgcmVmbGVjdHMgYmVzdCBwcmFjdGljZXMgd2l0aGluIHRoZSBrZXJuZWwncyBLY29uZmlnIHN5c3RlbS4gRnJvbSB0aGlzLCBJJ2xsIGJlIGFibGUgdG8gaW5mZXIgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBhbmQgY29uZmlndXJhYmlsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGRyaXZlcnMgdGhlbXNlbHZlcy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo1NC4wMjI5NjY3OTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCNcXG4gICAyOlxcdCMgTWljcm9zb2Z0IEF6dXJlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICAzOlxcdCNcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXFxuICAgNjpcXHRcXHRib29sIFxcXCJNaWNyb3NvZnQgTmV0d29yayBEZXZpY2VzXFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGRldmljZSBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEyOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIHRoZVxcbiAgMTM6XFx0XFx0ICBxdWVzdGlvbiBhYm91dCBNaWNyb3NvZnQgbmV0d29yayBkZXZpY2VzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlXFxuICAxNDpcXHRcXHQgIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGRldmljZSBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBORVRfVkVORE9SX01JQ1JPU09GVFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgTUlDUk9TT0ZUX01BTkFcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfSFlQRVJWXFxuICAyMzpcXHRcXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbiAgMjQ6XFx0XFx0c2VsZWN0IERJTUxJQlxcbiAgMjU6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMjY6XFx0XFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkuXFxuICAyOTpcXHRcXHQgIFNvIGZhciwgdGhlIGRyaXZlciBpcyBvbmx5IHN1cHBvcnRlZCBvbiBYODZfNjQuXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDMyOlxcdFxcdCAgVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtYW5hLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRlbmRpZiAjTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzU6NTQuMDIzMDUyODA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzNDc0MTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNQU5BIFJlcXVpcmVtZW50cyBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIE1BTkEgcmVxdWlyZW1lbnQgYmV0dGVyLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBpdCdzIGRlcGVuZGVudCBvbiBgUENJX0hZUEVSVmAsIGBQQ0lfTVNJYCwgYW5kIGVpdGhlciBgWDg2XzY0YCBvciBhIGNvbWJpbmF0aW9uIG9mIGBBUk02NGAgYW5kIGEgbm9uLWJpZy1lbmRpYW4gQ1BVLiBUaGF0IHBvaW50cyB0b3dhcmRzIHNvbWV0aGluZyBkZWVwbHkgaW50ZWdyYXRlZCB3aXRoIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IEh5cGVyLVYsIGRvZXNuJ3QgaXQ/IE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGlzIGlzIEF6dXJlL0h5cGVyLVYgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGhlYXZpbHkgb3B0aW1pemVkIGZvciBpdC4gTGV0J3Mgc2VlIGlmIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIE1BTkEgaXMgZXhjbHVzaXZlbHkgYSBwaHlzaWNhbCBkZXZpY2Ugb3IgdmlydHVhbGl6ZWQgaGFyZHdhcmUgb25seSBwcmVzZW50IGluIEF6dXJlIG9yIEh5cGVyLVYgZ3Vlc3RzLiBMZXQgbWUgZGlnIGludG8gbXkgcmVmZXJlbmNlIG1hdGVyaWFsLCB3aGljaCBzdGF0ZXMgdGhhdCBjZXJ0YWluIGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgc3BlY2lmaWNhbGx5IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCBhbiBBU0lDIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgc2VjdGlvbiBmZWVscyByZWxldmFudC4gTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtZWFucyBmb3IgdGhlIE1BTkEgY29tcG9uZW50LlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhvdWdodCBpcyB0byBjaGVjayBob3cgTUFOQSBwcm9iZXMgdG8gc2VlIHdoZXRoZXIgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIGlmIGl0J3MgSHlwZXItViBvciBBenVyZS1zcGVjaWZpYyBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaWRlbnRpZmllcyBhbmQgdXRpbGl6ZXMgaXQgdG8gcHJvcGVybHkgYXNzZXNzIGl0cyBvdmVyYWxsIGNoYXJhY3RlcmlzdGljcyBhbmQgd2hldGhlciBpdCdzIHN1aXRhYmxlIGZvciBvdGhlciBkZXBsb3ltZW50IHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU4NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA3OjM1OjU3LjU1Nzc5ODE1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc5NTg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE3OT1zdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyODM6XFx0LyogQ2FwIHRvIHRoZSBzYW1lIGxpbWl0IHVzZWQgYnkgbWFuYV9wcm9iZSgpIGZvciBwb3J0IGluc3RhbnRpYXRpb24sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjg0LVxcdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDk5PXN0YXRpYyBpbnQgbWFuYV9nZF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjU1NTpcXHRlcnIgPSBtYW5hX3Byb2JlKFxcdTAwMjZnYy1cXHUwMDNlbWFuYSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1OTMtXFx0ICogSGFyZHdhcmUgY291bGQgYmUgaW4gcmVjb3ZlcnkgbW9kZSBhbmQgdGhlIEhXQyByZXR1cm5zIFRJTUVET1VUIG9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjU5NDpcXHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTk1LVxcdCAqIHdlIHJlY2VpdmVkIGEgaGFyZHdhcmUgcmVzZXQgZXZlbnQgb3ZlciBIV0MgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNjU5PWludCBtYW5hX2dkX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjY2ODpcXHRlcnIgPSBtYW5hX3Byb2JlKFxcdTAwMjZnYy1cXHUwMDNlbWFuYSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjY2OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTM3NzA9aW50IG1hbmFfZGV0YWNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGZyb21fY2xvc2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzgwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6MzgwNzpzdGF0aWMgaW50IG1hbmFfcHJvYmVfcG9ydChzdHJ1Y3QgbWFuYV9jb250ZXh0ICphYywgaW50IHBvcnRfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODA4LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICoqbmRldl9zdG9yYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTQwNDg9c3RhdGljIHZvaWQgbWFuYV9nZl9zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQwNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjQwNzE6aW50IG1hbmFfcHJvYmUoc3RydWN0IGdkbWFfZGV2ICpnZCwgYm9vbCByZXN1bWluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDE0NS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWMtXFx1MDAzZW51bV9wb3J0czsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjQxNDY6XFx0XFx0XFx0ZXJyID0gbWFuYV9wcm9iZV9wb3J0KGFjLCBpLCBcXHUwMDI2YWMtXFx1MDAzZXBvcnRzW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDE0Ny1cXHRcXHRcXHQvKiBMb2cgdGhlIHBvcnQgZm9yIHdoaWNoIHRoZSBwcm9iZSBmYWlsZWQsIHN0b3AgcHJvYmluZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNzozNTo1Ny42MDQ1OTg4OThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODYyNjc1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFBDSSBJRHMgZm9yIFwiTWFuYVwiIChIeXBvdGhldGljYWwpKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcywgXCJMZXQncyBkaWcgaW50byB0aGUgUENJIGRldmljZSBJRHMgdG8gc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWV0aGluZyByZWxhdGVkIHRvICdtYW5hJy5cIiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHRlcm0gaW4gYSBoYXJkd2FyZS9zb2Z0d2FyZSBjb250ZXh0LiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHByb3ByaWV0YXJ5IGVtYmVkZGVkIHN5c3RlbSwgc29tZSBmYW50YXN5LXRoZW1lZCBnYW1lIGVuZ2luZSBjb21wb25lbnQsIG9yIHBlcmhhcHMgZXZlbiBhIGNvZGUgd29yZCBmb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgdGVybSAnbWFuYScgaXMgd2hhdCdzIGludHJpZ3Vpbmcg4oCTIGl0J3MgdW5saWtlbHkgdG8gYmUgYSBzdGFuZGFyZCwgd2lkZWx5IHVzZWQgYWNyb255bSBvciBhIHR5cGljYWwgZGVzY3JpcHRpdmUgdGVybSB3aXRoaW4gYSBzdGFuZGFyZCBQQ0kgc3BlYy4gVGhpcyBzdWdnZXN0cyBvbmUgb2Ygc2V2ZXJhbCBwYXRoczpcblxuMS4gICoqUHJvcHJpZXRhcnkvQ3VzdG9tIEhhcmR3YXJlOioqIFRoZSBtb3N0IGxpa2VseSBzY2VuYXJpbyBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBlaXRoZXIgaW4taG91c2UgaGFyZHdhcmUsIG9yIGFuIGVtYmVkZGVkIHN5c3RlbS4gU29tZW9uZSB1c2VkIHRoZSB0ZXJtIGludGVybmFsbHkgdG8gaWRlbnRpZnkgYSBzZWN0aW9uIG9mIGhhcmR3YXJlLiBJ4oCZZCBuZWVkIHRvIGRpdmUgaW50byB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBJdCBjb3VsZCBiZSBhIGN1c3RvbSBGUEdBIGltcGxlbWVudGF0aW9uLCBBU0lDIG9yIGV2ZW4gc29tZSB1bnVzdWFsIGFkZC1pbiBjYXJkLiBJZiBpdCdzIGEgcHJvcHJpZXRhcnkgcHJvamVjdCwgSSBuZWVkIHRvIGxvb2sgZm9yIGRvY3VtZW50YXRpb24sIHNvdXJjZSBjb2RlLCBvciBpbnRlcm5hbCBzcGVjaWZpY2F0aW9ucy4gVGhlIHZlbmRvciBJRCBpcyB0aGUgZmlyc3QgY3JpdGljYWwgcGllY2UuIEFmdGVyIHRoYXQsIHRoZSBkZXZpY2UgSUQgaXMgbmVlZGVkIHRvIGxvb2sgaW50byB0aGF0IHZlbmRvcidzIGhhcmR3YXJlLlxuXG4yLiAgKipPYmZ1c2NhdGlvbi9Db2RlIFdvcmQ6KiogSXQncyBhbHNvIHBvc3NpYmxlIHRoYXQgXCJtYW5hXCIgaXMgYSBkZWxpYmVyYXRlbHkgb2JzY3VyZSB0ZXJtIHVzZWQgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gd2l0aGluIGEgbW9yZSBnZW5lcmFsIHN5c3RlbSwgcGVyaGFwcyBmb3Igc2VjdXJpdHkgcmVhc29ucywgcmV2ZXJzZSBlbmdpbmVlcmluZyBhbmFseXNpcywgb3IgYW4gYXR0ZW1wdCB0byBvYmZ1c2NhdGUgdGhlIHJlYWwgcHVycG9zZSBvZiBhIHBhcnRpY3VsYXIgZGV2aWNlLiBUaGlzIHdvdWxkIGxpa2VseSByZXF1aXJlIGRlZXBlciByZXZlcnNlIGVuZ2luZWVyaW5nIG9yIGZ1cnRoZXIgYW5hbHlzaXMgb2YgdGhlIGNvZGUuXG5cbjMuICAqKkdhbWluZy9HcmFwaGljcy1SZWxhdGVkOioqIElmIHRoZXJl4oCZcyBzb21lIGtpbmQgb2YgZ2FtaW5nIHRpZS1pbiwgcGVyaGFwcyB0aGUgSUQgcG9pbnRzIHRvIGEgY3VzdG9tIEdQVSBvciBkZWRpY2F0ZWQgaGFyZHdhcmUgZm9yIGdhbWUgcGh5c2ljcy9zaW11bGF0aW9uL3JlbmRlci4gSSB3b3VsZCBuZWVkIHRvIGNoZWNrIGV4aXN0aW5nIGRyaXZlciBpbmZvcm1hdGlvbi5cblxuNC4gICoqTm92ZWwgQXBwcm9hY2g6KiogTWF5YmUgc29tZW9uZSBpcyBkb2luZyBzb21ldGhpbmcgZ2VudWluZWx5IG5ldyBhbmQgZ3JvdW5kYnJlYWtpbmcuIEl0J3MgYSBsb25nIHNob3QsIGJ1dCBpZiBpdCB0cnVseSBpcyBhIG5vdmVsIGltcGxlbWVudGF0aW9uLCB0aGUgUENJIElEcyBtaWdodCBiZSBwYXJ0IG9mIGFuIGV4cGVyaW1lbnRhbCBhcmNoaXRlY3R1cmUuIEl0IHdvdWxkIGJlIGEgdHJlYXN1cmUgaHVudCBhbmQgSSB3b3VsZCBuZWVkIHRvIGZpbmQgdGhlIHBhdGVudHMgYW5kIGRvY3VtZW50YXRpb24uXG5cbkluIGFueSBldmVudCwgSSBrbm93IHRoYXQgY2hlY2tpbmcgdGhlIFBDSSBkZXZpY2UgSURzIGlzIG15IHN0YXJ0aW5nIHBvaW50LiBUaGUgVmVuZG9yIElEIChWSUQpIGFuZCBEZXZpY2UgSUQgKERJRCkgd2lsbCBiZSB0aGUgY3JpdGljYWwgcGllY2VzIG9mIGluZm9ybWF0aW9uIGZvciB0aGlzIGludmVzdGlnYXRpb24uIFRoaXMgaXMgd2hlcmUgdGhlIGRldGVjdGl2ZSB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA3OjM2OjAxLjQ2NzI3ODU3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxNDMyMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDk0PXN0YXRpYyBib29sIG1hbmFfaXNfcGYodW5zaWduZWQgc2hvcnQgZGV2X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDk5OnN0YXRpYyBpbnQgbWFuYV9nZF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI2OTg9c3RhdGljIGludCBtYW5hX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI3MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjcxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI3MjAtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzY6MDEuNTEyNDI3OTU4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NzI5ODU4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTUFOQSBEcml2ZXIgQ29kZSBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzLiBUaGUgY29kZSBjaGFuZ2UgdGFyZ2V0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuY2AsIHNwZWNpZmljYWxseSB0aGUgYG1hbmFfeGRwX3NldGAgZnVuY3Rpb24uIFRoaXMgaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBSaWdodCBhd2F5LCBteSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGJlY2F1c2UgTUFOQSBpcyBhIFNtYXJ0TklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBBenVyZSBWTXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBQQ0kgZGV2aWNlIChgUENJX0hZUEVSVmApIHRoYXQncyBvbmx5IGdvaW5nIHRvIGJlIGF2YWlsYWJsZSB3aXRoaW4gdGhlIEF6dXJlIGluZnJhc3RydWN0dXJlIGFuZCBpdHMgSHlwZXItViBlbnZpcm9ubWVudC4gVGhpcyBpc24ndCBzb21ldGhpbmcgdGhhdCdzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHN5emthbGxlciBpbnN0YW5jZXMuIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGNvbmZpcm1zIG15IHN1c3BpY2lvbjogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgZXRjLiwgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIGFyZW4ndCByZWFjaGFibGUuXG5cblNvLCBJJ3ZlIGdvdCBhIHN0cm9uZyBmZWVsaW5nIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gdGhlIHR5cGljYWwgZnV6emluZyBzZXR1cC4gTGV0J3MgbWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIGRldGFpbHMgcmlnaHQ6IGZpbGUgaXMgYG1hbmFfYnBmLmNgLCBmdW5jdGlvbiBpcyBgbWFuYV94ZHBfc2V0YCwgYW5kIHRoZSBzdWJzeXN0ZW0gaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AuIENvbmZpcm1pbmcgdGhhdCwgaW4gdGhlIHN0YW5kYXJkIFFFTVUvR0NFIHNldHVwLCBpdCdzIG5vdCByZWFjaGFibGUuIFRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgYXJlIGNsZWFyOiBpdCBuZWVkcyB0aGF0IHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgbm90IHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIFdlJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBmYWxzZS4gYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGVtcHR5IGJlY2F1c2Ugd2Ugd29uJ3QgYmUgZW5hYmxpbmcgdGhpcy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIE1BTkEgZHJpdmVyIGlzIHZlbmRvci1zcGVjaWZpYywgcmVxdWlyaW5nIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLCBub3QgZW11bGF0ZWQgaW4gb3VyIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGBzZXQtcmVzdWx0c2AgY2FsbCB0byBtYWtlIHN1cmUgdGhlIGZvcm1hdCBpcyByaWdodC4gV2UgbmVlZCBgV29ydGhGdXp6aW5nYCBzZXQgdG8gZmFsc2UsIGBGb2N1c1N5bWJvbHNgIGFzIGFuIGVtcHR5IGFycmF5LCBgRW5hYmxlQ29uZmlnc2AgYXMgYW4gZW1wdHkgYXJyYXksIGFuZCB0aGUgcmVhc29uaW5nIHNob3VsZCBzdGF0ZSB0aGF0IHRoZSBjaGFuZ2UgYWZmZWN0cyBhIE1BTkEgZHJpdmVyIGZ1bmN0aW9uIChgbWFuYV94ZHBfc2V0YCBpbiBgbWFuYV9icGYuY2ApLCB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gdGhlIEF6dXJlLXNwZWNpZmljIEh5cGVyLVYgUENJIHZpcnR1YWwgaGFyZHdhcmUgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC5cblxuQWxyaWdodCwgbGV0J3MgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4gVGhpcyBvbmUgaXMgYSBuby1nbyBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkzOCwiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDc6MzY6MDcuNDg1NDE2NDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYW5hX3hkcF9zZXQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2JwZi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgTklDIGRyaXZlciByZXF1aXJpbmcgQXp1cmUgSHlwZXItViBQQ0kgaW5mcmFzdHJ1Y3R1cmUgKFBDSV9IWVBFUlYpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWFuYV94ZHBfc2V0KCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9icGYuYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIE5JQyBkcml2ZXIgcmVxdWlyaW5nIEF6dXJlIEh5cGVyLVYgUENJIGluZnJhc3RydWN0dXJlIChQQ0lfSFlQRVJWKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA3OjM2OjA3LjQ4NTQzODg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7rcb[1] Phase: Running StartedAt: 2026-09-06 07:36:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7rcb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 07:36:18 +0000 UTC FinishedAt: 2026-09-06 07:36:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}