Name: series-workflow5bpgv Phase: Failed StartedAt: 2026-08-16 06:56:45 +0000 UTC FinishedAt: 2026-08-16 07:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bpgv[0] Phase: Succeeded StartedAt: 2026-08-16 06:56:45 +0000 UTC FinishedAt: 2026-08-16 07:00:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bpgv[0].run-triage Phase: Succeeded StartedAt: 2026-08-16 06:56:45 +0000 UTC FinishedAt: 2026-08-16 07:00:50 +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+CgkJCTx0ZD4yMDI2LzA4LzE2IDA3OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHRoZXNlIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDc6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZTk1YTMzYTVhNWI4YjFhZDdiMmJmNzhmYTczZGNlMDY5NmRmMDUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMDc6MDA6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jXG5pbmRleCAwMjgwOTExNGZjNzlhLi43OTRiODY5NTc5YWQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmNcbkBAIC0xNjMxLDE0ICYjNDM7MTYzMSwxNSBAQCBzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3Zwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdTMyIHBvcnRfbnVtKVxuIHtcbiBcdHUzMiBtYXhfdHhfc3BlZWQ7XG4mIzQzO1x0dTggdnBvcnRfc3RhdGU7XG4gXHRpbnQgZXJyO1xuIFxuIFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQobWRldiwgb3BfbW9kLCB2cG9ydCwgb3RoZXJfdnBvcnQsXG4tXHRcdFx0XHRcdCAgICBcdTAwMjZtYXhfdHhfc3BlZWQpO1xuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNm1heF90eF9zcGVlZCwgXHUwMDI2dnBvcnRfc3RhdGUpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGlmIChtYXhfdHhfc3BlZWQgPT0gMClcbiYjNDM7XHRpZiAodnBvcnRfc3RhdGUgPT0gVlBPUlRfU1RBVEVfRE9XTiB8fCBtYXhfdHhfc3BlZWQgPT0gMClcbiBcdFx0LyogVmFsdWUgMCBpbmRpY2F0ZXMgZmllbGQgbm90IHN1cHBvcnRlZCwgZmFsbGJhY2sgKi9cbiBcdFx0cmV0dXJuIG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3BvcnQoZGV2LCBwb3J0X251bSxcbiBcdFx0XHRcdFx0XHRcdCAgc3BlZWQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuaW5kZXggYzhiNzZkMzAxYzkyYy4uM2Q1NDRmZTRlNmY3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5AQCAtNjg5LDExICYjNDM7Njg5LDEzIEBAIHN0YXRpYyBpbnQgbWx4NWVfcmVwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdGlmICghbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LFxuIFx0XHRcdFx0XHQgICBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdCAgIHJlcC1cdTAwM2V2cG9ydCwgMSxcbiBcdFx0XHRcdFx0ICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCkpXG4gXHRcdG5ldGlmX2NhcnJpZXJfb24oZGV2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiB1bmxvY2s6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbkBAIC03MDgsMTAgJiM0Mzs3MTAsMTIgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGludCByZXQ7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZyZXAtXHUwMDNlZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LFxuIFx0XHRcdFx0ICAgICAgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULFxuIFx0XHRcdFx0ICAgICAgcmVwLVx1MDAzZXZwb3J0LCAxLFxuIFx0XHRcdFx0ICAgICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdHJldCA9IG1seDVlX2Nsb3NlX2xvY2tlZChkZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTc4MywyMiAmIzQzOzc4NywyNSBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKVxuIFx0c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtXHUwMDNlcHByaXY7XG4gXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwID0gcnByaXYtXHUwMDNlcmVwO1xuLVx0aW50IGVycjtcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRpZiAobmV3X2NhcnJpZXIpIHtcbiBcdFx0ZXJyID0gbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdFx0ICAgIHJlcC1cdTAwM2V2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCk7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb24oZGV2KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGVyciA9IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXHUwMDNlbWRldiwgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULFxuIFx0XHRcdFx0XHRcdCAgICByZXAtXHUwMDNldnBvcnQsIDEsIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfRE9XTik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb2ZmKGRldik7XG4gXHR9XG4tXHRyZXR1cm4gMDtcbiYjNDM7dW5sb2NrOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZyZXAtXHUwMDNlZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWVfbmV0ZGV2X29wc19yZXAgPSB7XG5AQCAtMTMzNyw5ICYjNDM7MTM0NCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV91cGxpbmtfcmVwX2VuYWJsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiBcbiBcdG1seDVlX3JlcF90Y19lbmFibGUocHJpdik7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKVxuJiM0MztcdGlmIChNTFg1X0NBUF9HRU4obWRldiwgdXBsaW5rX2ZvbGxvdykpIHtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2bWRldi1cdTAwM2Vwcml2LmVzd2l0Y2gtXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRcdG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKG1kZXYsIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX1VQTElOSyxcbiBcdFx0XHRcdFx0ICAgICAgMCwgMCwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9BVVRPKTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7XHR9XG4gXHRtbHg1X2xhZ19hZGRfbmV0ZGV2KG1kZXYsIG5ldGRldik7XG4gXHRwcml2LVx1MDAzZWV2ZW50c19uYi5ub3RpZmllcl9jYWxsID0gdXBsaW5rX3JlcF9hc3luY19ldmVudDtcbiBcdG1seDVfbm90aWZpZXJfcmVnaXN0ZXIobWRldiwgXHUwMDI2cHJpdi1cdTAwM2VldmVudHNfbmIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXG5pbmRleCBjYTI0OWI1MGY4MzBhLi43OTUwYjgyZDhiOGFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY1xuQEAgLTksNiAmIzQzOzksMjggQEAgaW50IG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHZwb3J0LFxuIHtcbiBcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4gXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoTUxYNV9DQVBfRVNXKGRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpIHtcbiYjNDM7XHRcdHU4IG9wX21vZCA9IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVDtcbiYjNDM7XHRcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XG4mIzQzO1x0XHR1MzIgc3BlZWQgPSAwO1xuJiM0MztcdFx0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0XHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChkZXYsIG9wX21vZCwgdnBvcnQsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICB0cnVlLCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4mIzQzO1x0XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRcdGVzd192cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZGV2LVx1MDAzZXByaXYuZXN3aXRjaCxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICB2cG9ydCk7XG4mIzQzO1x0XHRcdHNwZWVkID0gSVNfRVJSKGVzd192cG9ydCkgPyAwIDpcbiYjNDM7XHRcdFx0XHRlc3dfdnBvcnQtXHUwMDNlYWdnX21heF90eF9zcGVlZDtcbiYjNDM7XHRcdFx0bWx4NV9jb3JlX2RiZyhkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICAgXCYjMzQ7RmFpbGVkIHRvIHF1ZXJ5IHZwb3J0ICVkIG1heCB0eCBzcGVlZCwgZXJyPSVkLCB1c2luZyBjYWNoZWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgICAgdnBvcnQsIGVyciwgc3BlZWQpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSxcbiBcdFx0IE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7XG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcF9tb2QsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmNcbmluZGV4IDI0N2U1ZDg1ZWMzNjcuLmQ2MDNlMjk0ZWUwZTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXG5AQCAtMjU2Nyw2ICYjNDM7MjU2Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFx0bWx4NV9lc3dfZmRiX2Ryb3BfZGVzdHJveShlc3cpO1xuIFx0bWx4NV9tcGZzX2VuYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdG1seDVfZXN3X2Zvcl9lYWNoX3ZmX3Zwb3J0KGVzdywgaSwgdnBvcnQsIFUxNl9NQVgpIHtcbiBcdFx0aWYgKCF2cG9ydC1cdTAwM2VhZGphY2VudClcbiBcdFx0XHRjb250aW51ZTtcbkBAIC0yNTc0LDYgJiM0MzsyNTc1LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2FjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gXHRcdFx0ICB2cG9ydC1cdTAwM2V2cG9ydCk7XG4gXHRcdG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoZXN3LVx1MDAzZWRldiwgdnBvcnQtXHUwMDNldnBvcnQsIHRydWUpO1xuIFx0fVxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXG4gXHRlc3ctXHUwMDNlb2ZmbG9hZHNfaW5hY3RpdmUgPSBmYWxzZTtcbiBcdGVzd193YXJuKGVzdy1cdTAwM2VkZXYsIFwmIzM0O01QRlMvRkRCIGFjdGl2ZVxcblwmIzM0Oyk7XG5AQCAtMjU4Nyw2ICYjNDM7MjU4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9pbmFjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gXHRtbHg1X21wZnNfZGlzYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcdG1seDVfZXN3X2ZkYl9kcm9wX2NyZWF0ZShlc3cpO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkge1xuIFx0XHRpZiAoIXZwb3J0LVx1MDAzZWFkamFjZW50KVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTI1OTUsNiAmIzQzOzI1OTgsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19mZGJfaW5hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFxuIFx0XHRtbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy1cdTAwM2VkZXYsIHZwb3J0LVx1MDAzZXZwb3J0LCBmYWxzZSk7XG4gXHR9XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiBcdGVzdy1cdTAwM2VvZmZsb2Fkc19pbmFjdGl2ZSA9IHRydWU7XG4gXHRlc3dfd2Fybihlc3ctXHUwMDNlZGV2LCBcJiMzNDtNUEZTL0ZEQiBpbmFjdGl2ZVxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbmluZGV4IDI4ZDE2ZmRjM2YwNjEuLjIyODVjODg5YzIxNWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXG5AQCAtMTQ3MSw2ICYjNDM7MTQ3MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0aWYgKCFNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdG1seDVfZXN3X2Zvcl9lYWNoX3Zwb3J0KGVzdywgaSwgdnBvcnQpIHtcbiBcdFx0aWYgKCF2cG9ydClcbiBcdFx0XHRjb250aW51ZTtcbkBAIC0xNDkwLDYgJiM0MzsxNDkxLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9sYWdfbW9kaWZ5X2RldmljZV92cG9ydHNfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4gXHRcdFx0XHQgICAgICBcJiMzNDtGYWlsZWQgdG8gc2V0IHZwb3J0ICVkIHNwZWVkICVkLCBlcnI9JWRcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgICB2cG9ydC1cdTAwM2V2cG9ydCwgc3BlZWQsIHJldCk7XG4gXHR9XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiB9XG4gXG4gdm9pZCBtbHg1X2xhZ19zZXRfdnBvcnRzX2FnZ19zcGVlZChzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xuaW5kZXggMzY3NmUyNmFjNmIwOS4uOGFhOTRlYzg3YTBlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS92cG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xuQEAgLTg5LDYgJiM0Mzs4OSwzNCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIHtcbiBcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdGlmIChNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgdnBvcnQgIT0gTUxYNV9WUE9SVF9VUExJTkspIHtcbiYjNDM7XHRcdHUzMiBzcGVlZCA9IDA7XG4mIzQzO1x0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdGVyciA9IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKG1kZXYsIG9wbW9kLCB2cG9ydCxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIG90aGVyX3Zwb3J0LCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4mIzQzO1x0XHRpZiAoZXJyKSB7XG4mIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXG4mIzQzO1x0XHRcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XG4mIzQzO1xuJiM0MztcdFx0XHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KG1kZXYtXHUwMDNlcHJpdi5lc3dpdGNoLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgIHZwb3J0KTtcbiYjNDM7XHRcdFx0c3BlZWQgPSBJU19FUlIoZXN3X3Zwb3J0KSA/IDAgOlxuJiM0MztcdFx0XHRcdGVzd192cG9ydC1cdTAwM2VhZ2dfbWF4X3R4X3NwZWVkO1xuJiM0MzsjZW5kaWZcbiYjNDM7XHRcdFx0bWx4NV9jb3JlX2RiZyhtZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgIHZwb3J0LCBlcnIsIHNwZWVkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG1heF90eF9zcGVlZCwgc3BlZWQpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG4gXHRcdCBNTFg1X0NNRF9PUF9NT0RJRllfVlBPUlRfU1RBVEUpO1xuIFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLCBvcG1vZCk7XG5AQCAtMTA2LDYgJiM0MzsxMzQsMTAgQEAgaW50IG1seDVfbW9kaWZ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3Btb2QsXG4gXHR1OCBhZG1pbl9zdGF0ZTtcbiBcdGludCBlcnI7XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBvcG1vZCwgdnBvcnQsIG90aGVyX3Zwb3J0LFxuIFx0XHRcdFx0XHQgICBcdTAwMjZhZG1pbl9zdGF0ZSk7XG4gXHRpZiAoZXJyKVxuQEAgLTEyMywxMSAmIzQzOzE1NSwxMSBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiB9XG4gXG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKVxuJiM0MztcdFx0XHRcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCxcbiYjNDM7XHRcdFx0XHQgIHUzMiAqbWF4X3R4X3NwZWVkLCB1OCAqc3RhdGUpXG4ge1xuIFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCldID0ge307XG4gXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4tXHR1MzIgc3RhdGU7XG4gXHRpbnQgZXJyO1xuIFxuIFx0TUxYNV9TRVQocXVlcnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG5AQCAtMTQwLDEzICYjNDM7MTcyLDkgQEAgaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0c3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xuLVx0aWYgKHN0YXRlID09IFZQT1JUX1NUQVRFX0RPV04pIHtcbi1cdFx0Km1heF90eF9zcGVlZCA9IDA7XG4tXHRcdHJldHVybiAwO1xuLVx0fVxuLVxuIFx0Km1heF90eF9zcGVlZCA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBtYXhfdHhfc3BlZWQpO1xuJiM0MztcdGlmIChzdGF0ZSlcbiYjNDM7XHRcdCpzdGF0ZSA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBzdGF0ZSk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcbmluZGV4IGVlMzRkM2VkMzM1ZjMuLmQ1MTEzZWNiNTk1ODggMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvdnBvcnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcbkBAIC02MSw3ICYjNDM7NjEsOCBAQCB1OCBtbHg1X3F1ZXJ5X3Zwb3J0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwgdTE2IHZwb3J0KTtcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIFx0XHRcdFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1OCBzdGF0ZSk7XG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKTtcbiYjNDM7XHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsXG4mIzQzO1x0XHRcdFx0ICB1MzIgKm1heF90eF9zcGVlZCwgdTggKnN0YXRlKTtcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiBcdFx0XHRcdCAgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUxNiBtYXhfdHhfc3BlZWQpO1xuIGludCBtbHg1X3F1ZXJ5X25pY192cG9ydF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNzowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHRoZXNlIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZTk1YTMzYTVhNWI4YjFhZDdiMmJmNzhmYTczZGNlMDY5NmRmMDUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDc6MDA6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMKaW5kZXggMDI4MDkxMTRmYzc5YS4uNzk0Yjg2OTU3OWFkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYwpAQCAtMTYzMSwxNCAmIzQzOzE2MzEsMTUgQEAgc3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV92cG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwKIAkJCQkJICAgICAgIHUzMiBwb3J0X251bSkKIHsKIAl1MzIgbWF4X3R4X3NwZWVkOwomIzQzOwl1OCB2cG9ydF9zdGF0ZTsKIAlpbnQgZXJyOwogCiAJZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQobWRldiwgb3BfbW9kLCB2cG9ydCwgb3RoZXJfdnBvcnQsCi0JCQkJCSAgICAmYW1wO21heF90eF9zcGVlZCk7CiYjNDM7CQkJCQkgICAgJmFtcDttYXhfdHhfc3BlZWQsICZhbXA7dnBvcnRfc3RhdGUpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAobWF4X3R4X3NwZWVkID09IDApCiYjNDM7CWlmICh2cG9ydF9zdGF0ZSA9PSBWUE9SVF9TVEFURV9ET1dOIHx8IG1heF90eF9zcGVlZCA9PSAwKQogCQkvKiBWYWx1ZSAwIGluZGljYXRlcyBmaWVsZCBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayAqLwogCQlyZXR1cm4gbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fcG9ydChkZXYsIHBvcnRfbnVtLAogCQkJCQkJCSAgc3BlZWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jCmluZGV4IGM4Yjc2ZDMwMWM5MmMuLjNkNTQ0ZmU0ZTZmNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMKQEAgLTY4OSwxMSAmIzQzOzY4OSwxMyBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKGVycikKIAkJZ290byB1bmxvY2s7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3JlcC0mZ3Q7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAlpZiAoIW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtJmd0O21kZXYsCiAJCQkJCSAgIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCwKIAkJCQkJICAgcmVwLSZndDt2cG9ydCwgMSwKIAkJCQkJICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCkpCiAJCW5ldGlmX2NhcnJpZXJfb24oZGV2KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwogCiB1bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CkBAIC03MDgsMTAgJiM0Mzs3MTAsMTIgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpbnQgcmV0OwogCiAJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwogCW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtJmd0O21kZXYsCiAJCQkJICAgICAgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULAogCQkJCSAgICAgIHJlcC0mZ3Q7dnBvcnQsIDEsCiAJCQkJICAgICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwogCXJldCA9IG1seDVlX2Nsb3NlX2xvY2tlZChkZXYpOwogCW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwogCXJldHVybiByZXQ7CkBAIC03ODMsMjIgJiM0Mzs3ODcsMjUgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2FycmllcikKIAlzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtJmd0O3Bwcml2OwogCXN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi0mZ3Q7cmVwOwotCWludCBlcnI7CiYjNDM7CWludCBlcnIgPSAwOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtyZXAtJmd0O2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAJaWYgKG5ld19jYXJyaWVyKSB7CiAJCWVyciA9IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtJmd0O21kZXYsIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCwKIAkJCQkJCSAgICByZXAtJmd0O3Zwb3J0LCAxLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX1VQKTsKIAkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CiYjNDM7CQkJZ290byB1bmxvY2s7CiAJCW5ldGlmX2NhcnJpZXJfb24oZGV2KTsKIAl9IGVsc2UgewogCQllcnIgPSBtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShwcml2LSZndDttZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsCiAJCQkJCQkgICAgcmVwLSZndDt2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTsKIAkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CiYjNDM7CQkJZ290byB1bmxvY2s7CiAJCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7CiAJfQotCXJldHVybiAwOwomIzQzO3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVlX25ldGRldl9vcHNfcmVwID0gewpAQCAtMTMzNyw5ICYjNDM7MTM0NCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV91cGxpbmtfcmVwX2VuYWJsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAogCW1seDVlX3JlcF90Y19lbmFibGUocHJpdik7CiAKLQlpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKQomIzQzOwlpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7bWRldi0mZ3Q7cHJpdi5lc3dpdGNoLSZndDtzdGF0ZV9sb2NrKTsKIAkJbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUobWRldiwgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfVVBMSU5LLAogCQkJCQkgICAgICAwLCAwLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX0FVVE8pOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7bWRldi0mZ3Q7cHJpdi5lc3dpdGNoLSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsJfQogCW1seDVfbGFnX2FkZF9uZXRkZXYobWRldiwgbmV0ZGV2KTsKIAlwcml2LSZndDtldmVudHNfbmIubm90aWZpZXJfY2FsbCA9IHVwbGlua19yZXBfYXN5bmNfZXZlbnQ7CiAJbWx4NV9ub3RpZmllcl9yZWdpc3RlcihtZGV2LCAmYW1wO3ByaXYtJmd0O2V2ZW50c19uYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuYwppbmRleCBjYTI0OWI1MGY4MzBhLi43OTUwYjgyZDhiOGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmMKQEAgLTksNiAmIzQzOzksMjggQEAgaW50IG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHZwb3J0LAogewogCXUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2Rldi0mZ3Q7cHJpdi5lc3dpdGNoLSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKE1MWDVfQ0FQX0VTVyhkZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpKSB7CiYjNDM7CQl1OCBvcF9tb2QgPSBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQ7CiYjNDM7CQlzdHJ1Y3QgbWx4NV92cG9ydCAqZXN3X3Zwb3J0OwomIzQzOwkJdTMyIHNwZWVkID0gMDsKJiM0MzsJCWludCBlcnI7CiYjNDM7CiYjNDM7CQllcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChkZXYsIG9wX21vZCwgdnBvcnQsCiYjNDM7CQkJCQkJICAgIHRydWUsICZhbXA7c3BlZWQsIE5VTEwpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWVzd192cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZGV2LSZndDtwcml2LmVzd2l0Y2gsCiYjNDM7CQkJCQkJCSAgIHZwb3J0KTsKJiM0MzsJCQlzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6CiYjNDM7CQkJCWVzd192cG9ydC0mZ3Q7YWdnX21heF90eF9zcGVlZDsKJiM0MzsJCQltbHg1X2NvcmVfZGJnKGRldiwKJiM0MzsJCQkJICAgICAgJiMzNDtGYWlsZWQgdG8gcXVlcnkgdnBvcnQgJWQgbWF4IHR4IHNwZWVkLCBlcnI9JWQsIHVzaW5nIGNhY2hlZCAldVxuJiMzNDssCiYjNDM7CQkJCSAgICAgIHZwb3J0LCBlcnIsIHNwZWVkKTsKJiM0MzsJCX0KJiM0MzsJCU1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG1heF90eF9zcGVlZCwgc3BlZWQpOwomIzQzOwl9CiYjNDM7CiAJTUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3Bjb2RlLAogCQkgTUxYNV9DTURfT1BfTU9ESUZZX1ZQT1JUX1NUQVRFKTsKIAlNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcF9tb2QsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYwppbmRleCAyNDdlNWQ4NWVjMzY3Li5kNjAzZTI5NGVlMGU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmMKQEAgLTI1NjcsNiAmIzQzOzI1NjcsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19mZGJfYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdykKIAltbHg1X2Vzd19mZGJfZHJvcF9kZXN0cm95KGVzdyk7CiAJbWx4NV9tcGZzX2VuYWJsZShlc3ctJmd0O2Rldik7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAJbWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkgewogCQlpZiAoIXZwb3J0LSZndDthZGphY2VudCkKIAkJCWNvbnRpbnVlOwpAQCAtMjU3NCw2ICYjNDM7MjU3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQogCQkJICB2cG9ydC0mZ3Q7dnBvcnQpOwogCQltbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy0mZ3Q7ZGV2LCB2cG9ydC0mZ3Q7dnBvcnQsIHRydWUpOwogCX0KJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAogCWVzdy0mZ3Q7b2ZmbG9hZHNfaW5hY3RpdmUgPSBmYWxzZTsKIAllc3dfd2Fybihlc3ctJmd0O2RldiwgJiMzNDtNUEZTL0ZEQiBhY3RpdmVcbiYjMzQ7KTsKQEAgLTI1ODcsNiAmIzQzOzI1ODksNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19mZGJfaW5hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQogCW1seDVfbXBmc19kaXNhYmxlKGVzdy0mZ3Q7ZGV2KTsKIAltbHg1X2Vzd19mZGJfZHJvcF9jcmVhdGUoZXN3KTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAltbHg1X2Vzd19mb3JfZWFjaF92Zl92cG9ydChlc3csIGksIHZwb3J0LCBVMTZfTUFYKSB7CiAJCWlmICghdnBvcnQtJmd0O2FkamFjZW50KQogCQkJY29udGludWU7CkBAIC0yNTk1LDYgJiM0MzsyNTk4LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2luYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdykKIAogCQltbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy0mZ3Q7ZGV2LCB2cG9ydC0mZ3Q7dnBvcnQsIGZhbHNlKTsKIAl9CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAKIAllc3ctJmd0O29mZmxvYWRzX2luYWN0aXZlID0gdHJ1ZTsKIAllc3dfd2Fybihlc3ctJmd0O2RldiwgJiMzNDtNUEZTL0ZEQiBpbmFjdGl2ZVxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMKaW5kZXggMjhkMTZmZGMzZjA2MS4uMjI4NWM4ODljMjE1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jCkBAIC0xNDcxLDYgJiM0MzsxNDcxLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9sYWdfbW9kaWZ5X2RldmljZV92cG9ydHNfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsCiAJaWYgKCFNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpCiAJCXJldHVybjsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAltbHg1X2Vzd19mb3JfZWFjaF92cG9ydChlc3csIGksIHZwb3J0KSB7CiAJCWlmICghdnBvcnQpCiAJCQljb250aW51ZTsKQEAgLTE0OTAsNiAmIzQzOzE0OTEsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2xhZ19tb2RpZnlfZGV2aWNlX3Zwb3J0c19zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwKIAkJCQkgICAgICAmIzM0O0ZhaWxlZCB0byBzZXQgdnBvcnQgJWQgc3BlZWQgJWQsIGVycj0lZFxuJiMzNDssCiAJCQkJICAgICAgdnBvcnQtJmd0O3Zwb3J0LCBzcGVlZCwgcmV0KTsKIAl9CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiB9CiAKIHZvaWQgbWx4NV9sYWdfc2V0X3Zwb3J0c19hZ2dfc3BlZWQoc3RydWN0IG1seDVfbGFnICpsZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuYwppbmRleCAzNjc2ZTI2YWM2YjA5Li44YWE5NGVjODdhMGUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuYwpAQCAtODksNiAmIzQzOzg5LDM0IEBAIGludCBtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3Btb2QsCiB7CiAJdTMyIGluW01MWDVfU1RfU1pfRFcobW9kaWZ5X3Zwb3J0X3N0YXRlX2luKV0gPSB7fTsKIAomIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENICiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDttZGV2LSZndDtwcml2LmVzd2l0Y2gtJmd0O3N0YXRlX2xvY2spOwomIzQzOyNlbmRpZgomIzQzOwomIzQzOwlpZiAoTUxYNV9DQVBfRVNXKG1kZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpICZhbXA7JmFtcDsKJiM0MzsJICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCAmYW1wOyZhbXA7CiYjNDM7CSAgICB2cG9ydCAhPSBNTFg1X1ZQT1JUX1VQTElOSykgewomIzQzOwkJdTMyIHNwZWVkID0gMDsKJiM0MzsJCWludCBlcnI7CiYjNDM7CiYjNDM7CQllcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcG1vZCwgdnBvcnQsCiYjNDM7CQkJCQkJICAgIG90aGVyX3Zwb3J0LCAmYW1wO3NwZWVkLCBOVUxMKTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSAomIzQzOwkJCXN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7CiYjNDM7CiYjNDM7CQkJZXN3X3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChtZGV2LSZndDtwcml2LmVzd2l0Y2gsCiYjNDM7CQkJCQkJCSAgIHZwb3J0KTsKJiM0MzsJCQlzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6CiYjNDM7CQkJCWVzd192cG9ydC0mZ3Q7YWdnX21heF90eF9zcGVlZDsKJiM0MzsjZW5kaWYKJiM0MzsJCQltbHg1X2NvcmVfZGJnKG1kZXYsCiYjNDM7CQkJCSAgICAgICYjMzQ7RmFpbGVkIHRvIHF1ZXJ5IHZwb3J0ICVkIG1heCB0eCBzcGVlZCwgZXJyPSVkLCB1c2luZyBjYWNoZWQgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7CiYjNDM7CQl9CiYjNDM7CQlNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBtYXhfdHhfc3BlZWQsIHNwZWVkKTsKJiM0MzsJfQomIzQzOwogCU1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSwKIAkJIE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7CiAJTUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLCBvcG1vZCk7CkBAIC0xMDYsNiAmIzQzOzEzNCwxMCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwKIAl1OCBhZG1pbl9zdGF0ZTsKIAlpbnQgZXJyOwogCiYjNDM7I2lmZGVmIENPTkZJR19NTFg1X0VTV0lUQ0gKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO21kZXYtJmd0O3ByaXYuZXN3aXRjaC0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7I2VuZGlmCiYjNDM7CiAJZXJyID0gbWx4NV9xdWVyeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBvcG1vZCwgdnBvcnQsIG90aGVyX3Zwb3J0LAogCQkJCQkgICAmYW1wO2FkbWluX3N0YXRlKTsKIAlpZiAoZXJyKQpAQCAtMTIzLDExICYjNDM7MTU1LDExIEBAIGludCBtbHg1X21vZGlmeV92cG9ydF9tYXhfdHhfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLAogfQogCiBpbnQgbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wX21vZCwKLQkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKQomIzQzOwkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsCiYjNDM7CQkJCSAgdTMyICptYXhfdHhfc3BlZWQsIHU4ICpzdGF0ZSkKIHsKIAl1MzIgb3V0W01MWDVfU1RfU1pfRFcocXVlcnlfdnBvcnRfc3RhdGVfb3V0KV0gPSB7fTsKIAl1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9pbildID0ge307Ci0JdTMyIHN0YXRlOwogCWludCBlcnI7CiAKIAlNTFg1X1NFVChxdWVyeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSwKQEAgLTE0MCwxMyAmIzQzOzE3Miw5IEBAIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlzdGF0ZSA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBzdGF0ZSk7Ci0JaWYgKHN0YXRlID09IFZQT1JUX1NUQVRFX0RPV04pIHsKLQkJKm1heF90eF9zcGVlZCA9IDA7Ci0JCXJldHVybiAwOwotCX0KLQogCSptYXhfdHhfc3BlZWQgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgbWF4X3R4X3NwZWVkKTsKJiM0MzsJaWYgKHN0YXRlKQomIzQzOwkJKnN0YXRlID0gTUxYNV9HRVQocXVlcnlfdnBvcnRfc3RhdGVfb3V0LCBvdXQsIHN0YXRlKTsKIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmgKaW5kZXggZWUzNGQzZWQzMzVmMy4uZDUxMTNlY2I1OTU4OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmgKQEAgLTYxLDcgJiM0Mzs2MSw4IEBAIHU4IG1seDVfcXVlcnlfdnBvcnRfc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLCB1MTYgdnBvcnQpOwogaW50IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwKIAkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHU4IHN0YXRlKTsKIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLAotCQkJCSAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCwgdTMyICptYXhfdHhfc3BlZWQpOwomIzQzOwkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsCiYjNDM7CQkJCSAgdTMyICptYXhfdHhfc3BlZWQsIHU4ICpzdGF0ZSk7CiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwKIAkJCQkgICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1MTYgbWF4X3R4X3NwZWVkKTsKIGludCBtbHg1X3F1ZXJ5X25pY192cG9ydF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcxMwoJCQkJCQkJb3V0cHV0OiA5MQoJCQkJCQkJdGhvdWdodHM6IDgwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIGEgTWVsbGFub3ggbWx4NSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGEgYnVuY2ggb2YgYG1seDVgIGZpbGVzOiBgZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jYCwgc29tZSBgZW5fcmVwYCwgYGVzd2AsIGBsYWdgLCBgdnBvcnRgIGZpbGVzLCBhbmQgYSBgdnBvcnQuaGAgaW5jbHVkZS4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluLCBidXQgdGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyIGFib3V0IHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcnVsZXMgc2F5ICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljLi4uIFNtYXJ0TklDIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KCk1lbGxhbm94IGBtbHg1YCBpcyBhYnNvbHV0ZWx5IGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDL05JQyBkcml2ZXIgZm9yIENvbm5lY3RYIGNhcmRzIChsaWtlIENvbm5lY3RYLTQsIDUsIDYsIGFuZCA3KS4gTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIGBtbHg1YCAqZW11bGF0ZWQqIGluIFFFTVU/IEkga25vdyBRRU1VIHByZXR0eSB3ZWxsLCBhbmQgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBpdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZW11bGF0ZWQgTklDcyBpbiBRRU1VLi4uIG5vcGUsIG5vIGBtbHg1YC4gUUVNVSBlbXVsYXRlcyBlMTAwMCwgaWdiLCBhbmQgYWxsIHRoYXQsIGJ1dCBkZWZpbml0ZWx5IG5vdCBgbWx4NWAuIEFuZCBpdCYjMzk7cyBub3QgbGlrZWx5IHRvIGV2ZXIgYmUuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IG1lbnRpb24gZHJpdmVycyB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgYG1seDVgIGRvZXMsIGFuZCBzaW5jZSBJIGtub3cgdGhhdCBpdCB3b24mIzM5O3QgcnVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgZGVjaXNpb24gaXMgY2xlYXIuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgc2NhbiB0aGUgcGF0Y2ggYWdhaW4uIEFsbCB0aGUgbW9kaWZpZWQgZmlsZXMgYXJlIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXImIzM5O3Mgc3BlY2lmaWMgZGlyZWN0b3JpZXMuIFRoZXJlJiMzOTtzIG5vdGhpbmcgY29yZSBrZXJuZWwtcmVsYXRlZCBoZXJlLCBqdXN0IHRoZSBtbHg1IHN0dWZmLiBUaGUgZGlmZiBvbmx5IHRvdWNoZXMgdGhlIGBtbHg1YCBmaWxlczogYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNgLCBhbmQgYGluY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oYC4gU28sIG5vIGNoYW5nZXMgb3V0c2lkZSB0aGUgbWx4NSBkb21haW4uCgpBbHJpZ2h0LCB3aXRoIGNvbXBsZXRlIGNvbmZpZGVuY2UsIEkmIzM5O2xsIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiB0aGVzZSBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MjguNzU2NTczOTI5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NDAxNDE0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MjguNzU2NTc5MTQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk1OTY4NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWU5NWEzM2E1YTViOGIxYWQ3YjJiZjc4ZmE3M2RjZTA2OTZkZjA1MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwNzowMDoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmNcXG5pbmRleCAwMjgwOTExNGZjNzlhLi43OTRiODY5NTc5YWQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xcbkBAIC0xNjMxLDE0ICsxNjMxLDE1IEBAIHN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fdnBvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICB1MzIgcG9ydF9udW0pXFxuIHtcXG4gXFx0dTMyIG1heF90eF9zcGVlZDtcXG4rXFx0dTggdnBvcnRfc3RhdGU7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcF9tb2QsIHZwb3J0LCBvdGhlcl92cG9ydCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZtYXhfdHhfc3BlZWQpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNm1heF90eF9zcGVlZCwgXFx1MDAyNnZwb3J0X3N0YXRlKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdGlmIChtYXhfdHhfc3BlZWQgPT0gMClcXG4rXFx0aWYgKHZwb3J0X3N0YXRlID09IFZQT1JUX1NUQVRFX0RPV04gfHwgbWF4X3R4X3NwZWVkID09IDApXFxuIFxcdFxcdC8qIFZhbHVlIDAgaW5kaWNhdGVzIGZpZWxkIG5vdCBzdXBwb3J0ZWQsIGZhbGxiYWNrICovXFxuIFxcdFxcdHJldHVybiBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV9wb3J0KGRldiwgcG9ydF9udW0sXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc3BlZWQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcXG5pbmRleCBjOGI3NmQzMDFjOTJjLi4zZDU0NGZlNGU2ZjczIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbkBAIC02ODksMTEgKzY4OSwxMyBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gdW5sb2NrO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cmVwLVxcdTAwM2Vlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRpZiAoIW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXFx1MDAzZW1kZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgcmVwLVxcdTAwM2V2cG9ydCwgMSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCkpXFxuIFxcdFxcdG5ldGlmX2NhcnJpZXJfb24oZGV2KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyZXAtXFx1MDAzZWVzdy1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIFxcbiB1bmxvY2s6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuQEAgLTcwOCwxMCArNzEwLDEyIEBAIHN0YXRpYyBpbnQgbWx4NWVfcmVwX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cmVwLVxcdTAwM2Vlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShwcml2LVxcdTAwM2VtZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgICBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHJlcC1cXHUwMDNldnBvcnQsIDEsXFxuIFxcdFxcdFxcdFxcdCAgICAgIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfRE9XTik7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cmVwLVxcdTAwM2Vlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRyZXQgPSBtbHg1ZV9jbG9zZV9sb2NrZWQoZGV2KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtNzgzLDIyICs3ODcsMjUgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2FycmllcilcXG4gXFx0c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cXHUwMDNlcHByaXY7XFxuIFxcdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi1cXHUwMDNlcmVwO1xcbi1cXHRpbnQgZXJyO1xcbitcXHRpbnQgZXJyID0gMDtcXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnJlcC1cXHUwMDNlZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0aWYgKG5ld19jYXJyaWVyKSB7XFxuIFxcdFxcdGVyciA9IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXFx1MDAzZW1kZXYsIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHJlcC1cXHUwMDNldnBvcnQsIDEsIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfVVApO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vbihkZXYpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRlcnIgPSBtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShwcml2LVxcdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICByZXAtXFx1MDAzZXZwb3J0LCAxLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX0RPV04pO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vZmYoZGV2KTtcXG4gXFx0fVxcbi1cXHRyZXR1cm4gMDtcXG4rdW5sb2NrOlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnJlcC1cXHUwMDNlZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg1ZV9uZXRkZXZfb3BzX3JlcCA9IHtcXG5AQCAtMTMzNyw5ICsxMzQ0LDEyIEBAIHN0YXRpYyB2b2lkIG1seDVlX3VwbGlua19yZXBfZW5hYmxlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbiBcXG4gXFx0bWx4NWVfcmVwX3RjX2VuYWJsZShwcml2KTtcXG4gXFxuLVxcdGlmIChNTFg1X0NBUF9HRU4obWRldiwgdXBsaW5rX2ZvbGxvdykpXFxuK1xcdGlmIChNTFg1X0NBUF9HRU4obWRldiwgdXBsaW5rX2ZvbGxvdykpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWRldi1cXHUwMDNlcHJpdi5lc3dpdGNoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0XFx0bWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUobWRldiwgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfVVBMSU5LLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAwLCAwLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX0FVVE8pO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1kZXYtXFx1MDAzZXByaXYuZXN3aXRjaC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdH1cXG4gXFx0bWx4NV9sYWdfYWRkX25ldGRldihtZGV2LCBuZXRkZXYpO1xcbiBcXHRwcml2LVxcdTAwM2VldmVudHNfbmIubm90aWZpZXJfY2FsbCA9IHVwbGlua19yZXBfYXN5bmNfZXZlbnQ7XFxuIFxcdG1seDVfbm90aWZpZXJfcmVnaXN0ZXIobWRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWV2ZW50c19uYik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXFxuaW5kZXggY2EyNDliNTBmODMwYS4uNzk1MGI4MmQ4YjhhZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY1xcbkBAIC05LDYgKzksMjggQEAgaW50IG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHZwb3J0LFxcbiB7XFxuIFxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZkZXYtXFx1MDAzZXByaXYuZXN3aXRjaC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcbitcXHRpZiAoTUxYNV9DQVBfRVNXKGRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpIHtcXG4rXFx0XFx0dTggb3BfbW9kID0gTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JUO1xcbitcXHRcXHRzdHJ1Y3QgbWx4NV92cG9ydCAqZXN3X3Zwb3J0O1xcbitcXHRcXHR1MzIgc3BlZWQgPSAwO1xcbitcXHRcXHRpbnQgZXJyO1xcbitcXG4rXFx0XFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQoZGV2LCBvcF9tb2QsIHZwb3J0LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgdHJ1ZSwgXFx1MDAyNnNwZWVkLCBOVUxMKTtcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGRldi1cXHUwMDNlcHJpdi5lc3dpdGNoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICB2cG9ydCk7XFxuK1xcdFxcdFxcdHNwZWVkID0gSVNfRVJSKGVzd192cG9ydCkgPyAwIDpcXG4rXFx0XFx0XFx0XFx0ZXN3X3Zwb3J0LVxcdTAwM2VhZ2dfbWF4X3R4X3NwZWVkO1xcbitcXHRcXHRcXHRtbHg1X2NvcmVfZGJnKGRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFxcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XFxuK1xcdH1cXG4rXFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSxcXG4gXFx0XFx0IE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7XFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wX21vZCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmNcXG5pbmRleCAyNDdlNWQ4NWVjMzY3Li5kNjAzZTI5NGVlMGU4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXFxuQEAgLTI1NjcsNiArMjU2Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxcbiBcXHRtbHg1X2Vzd19mZGJfZHJvcF9kZXN0cm95KGVzdyk7XFxuIFxcdG1seDVfbXBmc19lbmFibGUoZXN3LVxcdTAwM2VkZXYpO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0bWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkge1xcbiBcXHRcXHRpZiAoIXZwb3J0LVxcdTAwM2VhZGphY2VudClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTI1NzQsNiArMjU3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxcbiBcXHRcXHRcXHQgIHZwb3J0LVxcdTAwM2V2cG9ydCk7XFxuIFxcdFxcdG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoZXN3LVxcdTAwM2VkZXYsIHZwb3J0LVxcdTAwM2V2cG9ydCwgdHJ1ZSk7XFxuIFxcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXG4gXFx0ZXN3LVxcdTAwM2VvZmZsb2Fkc19pbmFjdGl2ZSA9IGZhbHNlO1xcbiBcXHRlc3dfd2Fybihlc3ctXFx1MDAzZWRldiwgXFxcIk1QRlMvRkRCIGFjdGl2ZVxcXFxuXFxcIik7XFxuQEAgLTI1ODcsNiArMjU4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9pbmFjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXFxuIFxcdG1seDVfbXBmc19kaXNhYmxlKGVzdy1cXHUwMDNlZGV2KTtcXG4gXFx0bWx4NV9lc3dfZmRiX2Ryb3BfY3JlYXRlKGVzdyk7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRtbHg1X2Vzd19mb3JfZWFjaF92Zl92cG9ydChlc3csIGksIHZwb3J0LCBVMTZfTUFYKSB7XFxuIFxcdFxcdGlmICghdnBvcnQtXFx1MDAzZWFkamFjZW50KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMjU5NSw2ICsyNTk4LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2luYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdylcXG4gXFxuIFxcdFxcdG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoZXN3LVxcdTAwM2VkZXYsIHZwb3J0LVxcdTAwM2V2cG9ydCwgZmFsc2UpO1xcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFxuIFxcdGVzdy1cXHUwMDNlb2ZmbG9hZHNfaW5hY3RpdmUgPSB0cnVlO1xcbiBcXHRlc3dfd2Fybihlc3ctXFx1MDAzZWRldiwgXFxcIk1QRlMvRkRCIGluYWN0aXZlXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcXG5pbmRleCAyOGQxNmZkYzNmMDYxLi4yMjg1Yzg4OWMyMTVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXFxuQEAgLTE0NzEsNiArMTQ3MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbiBcXHRpZiAoIU1MWDVfQ0FQX0VTVyhtZGV2LCBlc3dfdnBvcnRfc3RhdGVfbWF4X3R4X3NwZWVkKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0bWx4NV9lc3dfZm9yX2VhY2hfdnBvcnQoZXN3LCBpLCB2cG9ydCkge1xcbiBcXHRcXHRpZiAoIXZwb3J0KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTQ5MCw2ICsxNDkxLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9sYWdfbW9kaWZ5X2RldmljZV92cG9ydHNfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gc2V0IHZwb3J0ICVkIHNwZWVkICVkLCBlcnI9JWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHZwb3J0LVxcdTAwM2V2cG9ydCwgc3BlZWQsIHJldCk7XFxuIFxcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiB9XFxuIFxcbiB2b2lkIG1seDVfbGFnX3NldF92cG9ydHNfYWdnX3NwZWVkKHN0cnVjdCBtbHg1X2xhZyAqbGRldilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xcbmluZGV4IDM2NzZlMjZhYzZiMDkuLjhhYTk0ZWM4N2EwZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xcbkBAIC04OSw2ICs4OSwzNCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxcbiB7XFxuIFxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XFxuIFxcbisjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZtZGV2LVxcdTAwM2Vwcml2LmVzd2l0Y2gtXFx1MDAzZXN0YXRlX2xvY2spO1xcbisjZW5kaWZcXG4rXFxuK1xcdGlmIChNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgdnBvcnQgIT0gTUxYNV9WUE9SVF9VUExJTkspIHtcXG4rXFx0XFx0dTMyIHNwZWVkID0gMDtcXG4rXFx0XFx0aW50IGVycjtcXG4rXFxuK1xcdFxcdGVyciA9IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKG1kZXYsIG9wbW9kLCB2cG9ydCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIG90aGVyX3Zwb3J0LCBcXHUwMDI2c3BlZWQsIE5VTEwpO1xcbitcXHRcXHRpZiAoZXJyKSB7XFxuKyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXFxuK1xcdFxcdFxcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XFxuK1xcbitcXHRcXHRcXHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KG1kZXYtXFx1MDAzZXByaXYuZXN3aXRjaCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgdnBvcnQpO1xcbitcXHRcXHRcXHRzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6XFxuK1xcdFxcdFxcdFxcdGVzd192cG9ydC1cXHUwMDNlYWdnX21heF90eF9zcGVlZDtcXG4rI2VuZGlmXFxuK1xcdFxcdFxcdG1seDVfY29yZV9kYmcobWRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFxcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XFxuK1xcdH1cXG4rXFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSxcXG4gXFx0XFx0IE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7XFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wX21vZCwgb3Btb2QpO1xcbkBAIC0xMDYsNiArMTM0LDEwIEBAIGludCBtbHg1X21vZGlmeV92cG9ydF9tYXhfdHhfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxcbiBcXHR1OCBhZG1pbl9zdGF0ZTtcXG4gXFx0aW50IGVycjtcXG4gXFxuKyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNm1kZXYtXFx1MDAzZXByaXYuZXN3aXRjaC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuKyNlbmRpZlxcbitcXG4gXFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBvcG1vZCwgdnBvcnQsIG90aGVyX3Zwb3J0LFxcbiBcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YWRtaW5fc3RhdGUpO1xcbiBcXHRpZiAoZXJyKVxcbkBAIC0xMjMsMTEgKzE1NSwxMSBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcXG4gfVxcbiBcXG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXFxuLVxcdFxcdFxcdFxcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCwgdTMyICptYXhfdHhfc3BlZWQpXFxuK1xcdFxcdFxcdFxcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCxcXG4rXFx0XFx0XFx0XFx0ICB1MzIgKm1heF90eF9zcGVlZCwgdTggKnN0YXRlKVxcbiB7XFxuIFxcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9vdXQpXSA9IHt9O1xcbiBcXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9pbildID0ge307XFxuLVxcdHUzMiBzdGF0ZTtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdE1MWDVfU0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3Bjb2RlLFxcbkBAIC0xNDAsMTMgKzE3Miw5IEBAIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0c3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xcbi1cXHRpZiAoc3RhdGUgPT0gVlBPUlRfU1RBVEVfRE9XTikge1xcbi1cXHRcXHQqbWF4X3R4X3NwZWVkID0gMDtcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcdH1cXG4tXFxuIFxcdCptYXhfdHhfc3BlZWQgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgbWF4X3R4X3NwZWVkKTtcXG4rXFx0aWYgKHN0YXRlKVxcbitcXHRcXHQqc3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZCk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcXG5pbmRleCBlZTM0ZDNlZDMzNWYzLi5kNTExM2VjYjU5NTg4IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcXG5AQCAtNjEsNyArNjEsOCBAQCB1OCBtbHg1X3F1ZXJ5X3Zwb3J0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwgdTE2IHZwb3J0KTtcXG4gaW50IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcXG4gXFx0XFx0XFx0XFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1OCBzdGF0ZSk7XFxuIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLFxcbi1cXHRcXHRcXHRcXHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKTtcXG4rXFx0XFx0XFx0XFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LFxcbitcXHRcXHRcXHRcXHQgIHUzMiAqbWF4X3R4X3NwZWVkLCB1OCAqc3RhdGUpO1xcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcXG4gXFx0XFx0XFx0XFx0ICAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCwgdTE2IG1heF90eF9zcGVlZCk7XFxuIGludCBtbHg1X3F1ZXJ5X25pY192cG9ydF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MzAuMjUzMjcxNjM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA0MzQzMTA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHRoZXNlIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlOTVhMzNhNWE1YjhiMWFkN2IyYmY3OGZhNzNkY2UwNjk2ZGYwNTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwNzowMDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xuaW5kZXggMDI4MDkxMTRmYzc5YS4uNzk0Yjg2OTU3OWFkOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jXG5AQCAtMTYzMSwxNCArMTYzMSwxNSBAQCBzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3Zwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdTMyIHBvcnRfbnVtKVxuIHtcbiBcdHUzMiBtYXhfdHhfc3BlZWQ7XG4rXHR1OCB2cG9ydF9zdGF0ZTtcbiBcdGludCBlcnI7XG4gXG4gXHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcF9tb2QsIHZwb3J0LCBvdGhlcl92cG9ydCxcbi1cdFx0XHRcdFx0ICAgIFx1MDAyNm1heF90eF9zcGVlZCk7XG4rXHRcdFx0XHRcdCAgICBcdTAwMjZtYXhfdHhfc3BlZWQsIFx1MDAyNnZwb3J0X3N0YXRlKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpZiAobWF4X3R4X3NwZWVkID09IDApXG4rXHRpZiAodnBvcnRfc3RhdGUgPT0gVlBPUlRfU1RBVEVfRE9XTiB8fCBtYXhfdHhfc3BlZWQgPT0gMClcbiBcdFx0LyogVmFsdWUgMCBpbmRpY2F0ZXMgZmllbGQgbm90IHN1cHBvcnRlZCwgZmFsbGJhY2sgKi9cbiBcdFx0cmV0dXJuIG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3BvcnQoZGV2LCBwb3J0X251bSxcbiBcdFx0XHRcdFx0XHRcdCAgc3BlZWQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuaW5kZXggYzhiNzZkMzAxYzkyYy4uM2Q1NDRmZTRlNmY3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5AQCAtNjg5LDExICs2ODksMTMgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byB1bmxvY2s7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRpZiAoIW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXHUwMDNlbWRldixcbiBcdFx0XHRcdFx0ICAgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULFxuIFx0XHRcdFx0XHQgICByZXAtXHUwMDNldnBvcnQsIDEsXG4gXHRcdFx0XHRcdCAgIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfVVApKVxuIFx0XHRuZXRpZl9jYXJyaWVyX29uKGRldik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiB1bmxvY2s6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbkBAIC03MDgsMTAgKzcxMCwxMiBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aW50IHJldDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdG11dGV4X2xvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXHUwMDNlbWRldixcbiBcdFx0XHRcdCAgICAgIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCxcbiBcdFx0XHRcdCAgICAgIHJlcC1cdTAwM2V2cG9ydCwgMSxcbiBcdFx0XHRcdCAgICAgIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfRE9XTik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdHJldCA9IG1seDVlX2Nsb3NlX2xvY2tlZChkZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTc4MywyMiArNzg3LDI1IEBAIHN0YXRpYyBpbnQgbWx4NWVfcmVwX2NoYW5nZV9jYXJyaWVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgbmV3X2NhcnJpZXIpXG4gXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cdTAwM2VwcHJpdjtcbiBcdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi1cdTAwM2VyZXA7XG4tXHRpbnQgZXJyO1xuK1x0aW50IGVyciA9IDA7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRpZiAobmV3X2NhcnJpZXIpIHtcbiBcdFx0ZXJyID0gbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdFx0ICAgIHJlcC1cdTAwM2V2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCk7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0bmV0aWZfY2Fycmllcl9vbihkZXYpO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZXJyID0gbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdFx0ICAgIHJlcC1cdTAwM2V2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRcdGdvdG8gdW5sb2NrO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29mZihkZXYpO1xuIFx0fVxuLVx0cmV0dXJuIDA7XG4rdW5sb2NrOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVlX25ldGRldl9vcHNfcmVwID0ge1xuQEAgLTEzMzcsOSArMTM0NCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV91cGxpbmtfcmVwX2VuYWJsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiBcbiBcdG1seDVlX3JlcF90Y19lbmFibGUocHJpdik7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKVxuK1x0aWYgKE1MWDVfQ0FQX0dFTihtZGV2LCB1cGxpbmtfZm9sbG93KSkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNm1kZXYtXHUwMDNlcHJpdi5lc3dpdGNoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0XHRtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9VUExJTkssXG4gXHRcdFx0XHRcdCAgICAgIDAsIDAsIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfQVVUTyk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdH1cbiBcdG1seDVfbGFnX2FkZF9uZXRkZXYobWRldiwgbmV0ZGV2KTtcbiBcdHByaXYtXHUwMDNlZXZlbnRzX25iLm5vdGlmaWVyX2NhbGwgPSB1cGxpbmtfcmVwX2FzeW5jX2V2ZW50O1xuIFx0bWx4NV9ub3RpZmllcl9yZWdpc3RlcihtZGV2LCBcdTAwMjZwcml2LVx1MDAzZWV2ZW50c19uYik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmNcbmluZGV4IGNhMjQ5YjUwZjgzMGEuLjc5NTBiODJkOGI4YWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXG5AQCAtOSw2ICs5LDI4IEBAIGludCBtbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiB2cG9ydCxcbiB7XG4gXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfdnBvcnRfc3RhdGVfaW4pXSA9IHt9O1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLVx1MDAzZXN0YXRlX2xvY2spO1xuK1xuK1x0aWYgKE1MWDVfQ0FQX0VTVyhkZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpKSB7XG4rXHRcdHU4IG9wX21vZCA9IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVDtcbitcdFx0c3RydWN0IG1seDVfdnBvcnQgKmVzd192cG9ydDtcbitcdFx0dTMyIHNwZWVkID0gMDtcbitcdFx0aW50IGVycjtcbitcbitcdFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQoZGV2LCBvcF9tb2QsIHZwb3J0LFxuK1x0XHRcdFx0XHRcdCAgICB0cnVlLCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGRldi1cdTAwM2Vwcml2LmVzd2l0Y2gsXG4rXHRcdFx0XHRcdFx0XHQgICB2cG9ydCk7XG4rXHRcdFx0c3BlZWQgPSBJU19FUlIoZXN3X3Zwb3J0KSA/IDAgOlxuK1x0XHRcdFx0ZXN3X3Zwb3J0LVx1MDAzZWFnZ19tYXhfdHhfc3BlZWQ7XG4rXHRcdFx0bWx4NV9jb3JlX2RiZyhkZXYsXG4rXHRcdFx0XHQgICAgICBcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XG4rXHRcdH1cbitcdFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XG4rXHR9XG4rXG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG4gXHRcdCBNTFg1X0NNRF9PUF9NT0RJRllfVlBPUlRfU1RBVEUpO1xuIFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXG5pbmRleCAyNDdlNWQ4NWVjMzY3Li5kNjAzZTI5NGVlMGU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuY1xuQEAgLTI1NjcsNiArMjU2Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFx0bWx4NV9lc3dfZmRiX2Ryb3BfZGVzdHJveShlc3cpO1xuIFx0bWx4NV9tcGZzX2VuYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkge1xuIFx0XHRpZiAoIXZwb3J0LVx1MDAzZWFkamFjZW50KVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTI1NzQsNiArMjU3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFx0XHRcdCAgdnBvcnQtXHUwMDNldnBvcnQpO1xuIFx0XHRtbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy1cdTAwM2VkZXYsIHZwb3J0LVx1MDAzZXZwb3J0LCB0cnVlKTtcbiBcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXG4gXHRlc3ctXHUwMDNlb2ZmbG9hZHNfaW5hY3RpdmUgPSBmYWxzZTtcbiBcdGVzd193YXJuKGVzdy1cdTAwM2VkZXYsIFwiTVBGUy9GREIgYWN0aXZlXFxuXCIpO1xuQEAgLTI1ODcsNiArMjU4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9pbmFjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gXHRtbHg1X21wZnNfZGlzYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcdG1seDVfZXN3X2ZkYl9kcm9wX2NyZWF0ZShlc3cpO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRtbHg1X2Vzd19mb3JfZWFjaF92Zl92cG9ydChlc3csIGksIHZwb3J0LCBVMTZfTUFYKSB7XG4gXHRcdGlmICghdnBvcnQtXHUwMDNlYWRqYWNlbnQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtMjU5NSw2ICsyNTk4LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2luYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdylcbiBcbiBcdFx0bWx4NV9lc3dfYWRqX3Zwb3J0X21vZGlmeShlc3ctXHUwMDNlZGV2LCB2cG9ydC1cdTAwM2V2cG9ydCwgZmFsc2UpO1xuIFx0fVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiBcdGVzdy1cdTAwM2VvZmZsb2Fkc19pbmFjdGl2ZSA9IHRydWU7XG4gXHRlc3dfd2Fybihlc3ctXHUwMDNlZGV2LCBcIk1QRlMvRkRCIGluYWN0aXZlXFxuXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXG5pbmRleCAyOGQxNmZkYzNmMDYxLi4yMjg1Yzg4OWMyMTVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuQEAgLTE0NzEsNiArMTQ3MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0aWYgKCFNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpXG4gXHRcdHJldHVybjtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9lc3dfZm9yX2VhY2hfdnBvcnQoZXN3LCBpLCB2cG9ydCkge1xuIFx0XHRpZiAoIXZwb3J0KVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE0OTAsNiArMTQ5MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0XHRcdFx0ICAgICAgXCJGYWlsZWQgdG8gc2V0IHZwb3J0ICVkIHNwZWVkICVkLCBlcnI9JWRcXG5cIixcbiBcdFx0XHRcdCAgICAgIHZwb3J0LVx1MDAzZXZwb3J0LCBzcGVlZCwgcmV0KTtcbiBcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gfVxuIFxuIHZvaWQgbWx4NV9sYWdfc2V0X3Zwb3J0c19hZ2dfc3BlZWQoc3RydWN0IG1seDVfbGFnICpsZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS92cG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNcbmluZGV4IDM2NzZlMjZhYzZiMDkuLjhhYTk0ZWM4N2EwZTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNcbkBAIC04OSw2ICs4OSwzNCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIHtcbiBcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4gXG4rI2lmZGVmIENPTkZJR19NTFg1X0VTV0lUQ0hcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2bWRldi1cdTAwM2Vwcml2LmVzd2l0Y2gtXHUwMDNlc3RhdGVfbG9jayk7XG4rI2VuZGlmXG4rXG4rXHRpZiAoTUxYNV9DQVBfRVNXKG1kZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCBcdTAwMjZcdTAwMjZcbitcdCAgICB2cG9ydCAhPSBNTFg1X1ZQT1JUX1VQTElOSykge1xuK1x0XHR1MzIgc3BlZWQgPSAwO1xuK1x0XHRpbnQgZXJyO1xuK1xuK1x0XHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcG1vZCwgdnBvcnQsXG4rXHRcdFx0XHRcdFx0ICAgIG90aGVyX3Zwb3J0LCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4rXHRcdGlmIChlcnIpIHtcbisjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSFxuK1x0XHRcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XG4rXG4rXHRcdFx0ZXN3X3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChtZGV2LVx1MDAzZXByaXYuZXN3aXRjaCxcbitcdFx0XHRcdFx0XHRcdCAgIHZwb3J0KTtcbitcdFx0XHRzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6XG4rXHRcdFx0XHRlc3dfdnBvcnQtXHUwMDNlYWdnX21heF90eF9zcGVlZDtcbisjZW5kaWZcbitcdFx0XHRtbHg1X2NvcmVfZGJnKG1kZXYsXG4rXHRcdFx0XHQgICAgICBcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XG4rXHRcdH1cbitcdFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XG4rXHR9XG4rXG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG4gXHRcdCBNTFg1X0NNRF9PUF9NT0RJRllfVlBPUlRfU1RBVEUpO1xuIFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLCBvcG1vZCk7XG5AQCAtMTA2LDYgKzEzNCwxMCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiBcdHU4IGFkbWluX3N0YXRlO1xuIFx0aW50IGVycjtcbiBcbisjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbisjZW5kaWZcbitcbiBcdGVyciA9IG1seDVfcXVlcnlfdnBvcnRfYWRtaW5fc3RhdGUobWRldiwgb3Btb2QsIHZwb3J0LCBvdGhlcl92cG9ydCxcbiBcdFx0XHRcdFx0ICAgXHUwMDI2YWRtaW5fc3RhdGUpO1xuIFx0aWYgKGVycilcbkBAIC0xMjMsMTEgKzE1NSwxMSBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiB9XG4gXG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKVxuK1x0XHRcdFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LFxuK1x0XHRcdFx0ICB1MzIgKm1heF90eF9zcGVlZCwgdTggKnN0YXRlKVxuIHtcbiBcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9vdXQpXSA9IHt9O1xuIFx0dTMyIGluW01MWDVfU1RfU1pfRFcocXVlcnlfdnBvcnRfc3RhdGVfaW4pXSA9IHt9O1xuLVx0dTMyIHN0YXRlO1xuIFx0aW50IGVycjtcbiBcbiBcdE1MWDVfU0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3Bjb2RlLFxuQEAgLTE0MCwxMyArMTcyLDkgQEAgaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0c3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xuLVx0aWYgKHN0YXRlID09IFZQT1JUX1NUQVRFX0RPV04pIHtcbi1cdFx0Km1heF90eF9zcGVlZCA9IDA7XG4tXHRcdHJldHVybiAwO1xuLVx0fVxuLVxuIFx0Km1heF90eF9zcGVlZCA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBtYXhfdHhfc3BlZWQpO1xuK1x0aWYgKHN0YXRlKVxuK1x0XHQqc3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21seDUvdnBvcnQuaCBiL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oXG5pbmRleCBlZTM0ZDNlZDMzNWYzLi5kNTExM2VjYjU5NTg4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcbisrKyBiL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oXG5AQCAtNjEsNyArNjEsOCBAQCB1OCBtbHg1X3F1ZXJ5X3Zwb3J0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwgdTE2IHZwb3J0KTtcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIFx0XHRcdFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1OCBzdGF0ZSk7XG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKTtcbitcdFx0XHRcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCxcbitcdFx0XHRcdCAgdTMyICptYXhfdHhfc3BlZWQsIHU4ICpzdGF0ZSk7XG4gaW50IG1seDVfbW9kaWZ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3Btb2QsXG4gXHRcdFx0XHQgICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1MTYgbWF4X3R4X3NwZWVkKTtcbiBpbnQgbWx4NV9xdWVyeV9uaWNfdnBvcnRfbWFjX2FkZHJlc3Moc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNzowMDozMC4yNTMyNzMzMTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDQzNDA2MjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgYSBNZWxsYW5veCBtbHg1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGEgYnVuY2ggb2YgYG1seDVgIGZpbGVzOiBgZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jYCwgc29tZSBgZW5fcmVwYCwgYGVzd2AsIGBsYWdgLCBgdnBvcnRgIGZpbGVzLCBhbmQgYSBgdnBvcnQuaGAgaW5jbHVkZS4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluLCBidXQgdGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyIGFib3V0IHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4gTGV0J3Mgc2VlLi4uIHRoZSBydWxlcyBzYXkgXCJXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMuLi4gU21hcnROSUMgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLlxuXG5NZWxsYW5veCBgbWx4NWAgaXMgYWJzb2x1dGVseSBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQy9OSUMgZHJpdmVyIGZvciBDb25uZWN0WCBjYXJkcyAobGlrZSBDb25uZWN0WC00LCA1LCA2LCBhbmQgNykuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyBgbWx4NWAgKmVtdWxhdGVkKiBpbiBRRU1VPyBJIGtub3cgUUVNVSBwcmV0dHkgd2VsbCwgYW5kIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBpdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZW11bGF0ZWQgTklDcyBpbiBRRU1VLi4uIG5vcGUsIG5vIGBtbHg1YC4gUUVNVSBlbXVsYXRlcyBlMTAwMCwgaWdiLCBhbmQgYWxsIHRoYXQsIGJ1dCBkZWZpbml0ZWx5IG5vdCBgbWx4NWAuIEFuZCBpdCdzIG5vdCBsaWtlbHkgdG8gZXZlciBiZS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgbWVudGlvbiBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSBgbWx4NWAgZG9lcywgYW5kIHNpbmNlIEkga25vdyB0aGF0IGl0IHdvbid0IHJ1biBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlIGRlY2lzaW9uIGlzIGNsZWFyLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBzY2FuIHRoZSBwYXRjaCBhZ2Fpbi4gQWxsIHRoZSBtb2RpZmllZCBmaWxlcyBhcmUgd2l0aGluIHRoZSBtbHg1IGRyaXZlcidzIHNwZWNpZmljIGRpcmVjdG9yaWVzLiBUaGVyZSdzIG5vdGhpbmcgY29yZSBrZXJuZWwtcmVsYXRlZCBoZXJlLCBqdXN0IHRoZSBtbHg1IHN0dWZmLiBUaGUgZGlmZiBvbmx5IHRvdWNoZXMgdGhlIGBtbHg1YCBmaWxlczogYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNgLCBhbmQgYGluY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oYC4gU28sIG5vIGNoYW5nZXMgb3V0c2lkZSB0aGUgbWx4NSBkb21haW4uXG5cbkFscmlnaHQsIHdpdGggY29tcGxldGUgY29uZmlkZW5jZSwgSSdsbCBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MTMsIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNzowMDozOS4yOTY2ODMxNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiB0aGVzZSBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MzkuMjk2NzA0Nzc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5bpgv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-16 06:56:45 +0000 UTC FinishedAt: 2026-08-16 07:00:40 +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+CgkJCTx0ZD4yMDI2LzA4LzE2IDA3OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHRoZXNlIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDc6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZTk1YTMzYTVhNWI4YjFhZDdiMmJmNzhmYTczZGNlMDY5NmRmMDUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMDc6MDA6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jXG5pbmRleCAwMjgwOTExNGZjNzlhLi43OTRiODY5NTc5YWQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmNcbkBAIC0xNjMxLDE0ICYjNDM7MTYzMSwxNSBAQCBzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3Zwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdTMyIHBvcnRfbnVtKVxuIHtcbiBcdHUzMiBtYXhfdHhfc3BlZWQ7XG4mIzQzO1x0dTggdnBvcnRfc3RhdGU7XG4gXHRpbnQgZXJyO1xuIFxuIFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQobWRldiwgb3BfbW9kLCB2cG9ydCwgb3RoZXJfdnBvcnQsXG4tXHRcdFx0XHRcdCAgICBcdTAwMjZtYXhfdHhfc3BlZWQpO1xuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNm1heF90eF9zcGVlZCwgXHUwMDI2dnBvcnRfc3RhdGUpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGlmIChtYXhfdHhfc3BlZWQgPT0gMClcbiYjNDM7XHRpZiAodnBvcnRfc3RhdGUgPT0gVlBPUlRfU1RBVEVfRE9XTiB8fCBtYXhfdHhfc3BlZWQgPT0gMClcbiBcdFx0LyogVmFsdWUgMCBpbmRpY2F0ZXMgZmllbGQgbm90IHN1cHBvcnRlZCwgZmFsbGJhY2sgKi9cbiBcdFx0cmV0dXJuIG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3BvcnQoZGV2LCBwb3J0X251bSxcbiBcdFx0XHRcdFx0XHRcdCAgc3BlZWQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuaW5kZXggYzhiNzZkMzAxYzkyYy4uM2Q1NDRmZTRlNmY3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5AQCAtNjg5LDExICYjNDM7Njg5LDEzIEBAIHN0YXRpYyBpbnQgbWx4NWVfcmVwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdGlmICghbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LFxuIFx0XHRcdFx0XHQgICBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdCAgIHJlcC1cdTAwM2V2cG9ydCwgMSxcbiBcdFx0XHRcdFx0ICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCkpXG4gXHRcdG5ldGlmX2NhcnJpZXJfb24oZGV2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiB1bmxvY2s6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbkBAIC03MDgsMTAgJiM0Mzs3MTAsMTIgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGludCByZXQ7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZyZXAtXHUwMDNlZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LFxuIFx0XHRcdFx0ICAgICAgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULFxuIFx0XHRcdFx0ICAgICAgcmVwLVx1MDAzZXZwb3J0LCAxLFxuIFx0XHRcdFx0ICAgICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdHJldCA9IG1seDVlX2Nsb3NlX2xvY2tlZChkZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTc4MywyMiAmIzQzOzc4NywyNSBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKVxuIFx0c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtXHUwMDNlcHByaXY7XG4gXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwID0gcnByaXYtXHUwMDNlcmVwO1xuLVx0aW50IGVycjtcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRpZiAobmV3X2NhcnJpZXIpIHtcbiBcdFx0ZXJyID0gbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdFx0ICAgIHJlcC1cdTAwM2V2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCk7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb24oZGV2KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGVyciA9IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXHUwMDNlbWRldiwgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULFxuIFx0XHRcdFx0XHRcdCAgICByZXAtXHUwMDNldnBvcnQsIDEsIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfRE9XTik7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb2ZmKGRldik7XG4gXHR9XG4tXHRyZXR1cm4gMDtcbiYjNDM7dW5sb2NrOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZyZXAtXHUwMDNlZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWVfbmV0ZGV2X29wc19yZXAgPSB7XG5AQCAtMTMzNyw5ICYjNDM7MTM0NCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV91cGxpbmtfcmVwX2VuYWJsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiBcbiBcdG1seDVlX3JlcF90Y19lbmFibGUocHJpdik7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKVxuJiM0MztcdGlmIChNTFg1X0NBUF9HRU4obWRldiwgdXBsaW5rX2ZvbGxvdykpIHtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2bWRldi1cdTAwM2Vwcml2LmVzd2l0Y2gtXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRcdG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKG1kZXYsIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX1VQTElOSyxcbiBcdFx0XHRcdFx0ICAgICAgMCwgMCwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9BVVRPKTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7XHR9XG4gXHRtbHg1X2xhZ19hZGRfbmV0ZGV2KG1kZXYsIG5ldGRldik7XG4gXHRwcml2LVx1MDAzZWV2ZW50c19uYi5ub3RpZmllcl9jYWxsID0gdXBsaW5rX3JlcF9hc3luY19ldmVudDtcbiBcdG1seDVfbm90aWZpZXJfcmVnaXN0ZXIobWRldiwgXHUwMDI2cHJpdi1cdTAwM2VldmVudHNfbmIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXG5pbmRleCBjYTI0OWI1MGY4MzBhLi43OTUwYjgyZDhiOGFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY1xuQEAgLTksNiAmIzQzOzksMjggQEAgaW50IG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHZwb3J0LFxuIHtcbiBcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4gXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoTUxYNV9DQVBfRVNXKGRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpIHtcbiYjNDM7XHRcdHU4IG9wX21vZCA9IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVDtcbiYjNDM7XHRcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XG4mIzQzO1x0XHR1MzIgc3BlZWQgPSAwO1xuJiM0MztcdFx0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0XHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChkZXYsIG9wX21vZCwgdnBvcnQsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICB0cnVlLCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4mIzQzO1x0XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRcdGVzd192cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZGV2LVx1MDAzZXByaXYuZXN3aXRjaCxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICB2cG9ydCk7XG4mIzQzO1x0XHRcdHNwZWVkID0gSVNfRVJSKGVzd192cG9ydCkgPyAwIDpcbiYjNDM7XHRcdFx0XHRlc3dfdnBvcnQtXHUwMDNlYWdnX21heF90eF9zcGVlZDtcbiYjNDM7XHRcdFx0bWx4NV9jb3JlX2RiZyhkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICAgXCYjMzQ7RmFpbGVkIHRvIHF1ZXJ5IHZwb3J0ICVkIG1heCB0eCBzcGVlZCwgZXJyPSVkLCB1c2luZyBjYWNoZWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgICAgdnBvcnQsIGVyciwgc3BlZWQpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSxcbiBcdFx0IE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7XG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcF9tb2QsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmNcbmluZGV4IDI0N2U1ZDg1ZWMzNjcuLmQ2MDNlMjk0ZWUwZTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXG5AQCAtMjU2Nyw2ICYjNDM7MjU2Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFx0bWx4NV9lc3dfZmRiX2Ryb3BfZGVzdHJveShlc3cpO1xuIFx0bWx4NV9tcGZzX2VuYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdG1seDVfZXN3X2Zvcl9lYWNoX3ZmX3Zwb3J0KGVzdywgaSwgdnBvcnQsIFUxNl9NQVgpIHtcbiBcdFx0aWYgKCF2cG9ydC1cdTAwM2VhZGphY2VudClcbiBcdFx0XHRjb250aW51ZTtcbkBAIC0yNTc0LDYgJiM0MzsyNTc1LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2FjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gXHRcdFx0ICB2cG9ydC1cdTAwM2V2cG9ydCk7XG4gXHRcdG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoZXN3LVx1MDAzZWRldiwgdnBvcnQtXHUwMDNldnBvcnQsIHRydWUpO1xuIFx0fVxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXG4gXHRlc3ctXHUwMDNlb2ZmbG9hZHNfaW5hY3RpdmUgPSBmYWxzZTtcbiBcdGVzd193YXJuKGVzdy1cdTAwM2VkZXYsIFwmIzM0O01QRlMvRkRCIGFjdGl2ZVxcblwmIzM0Oyk7XG5AQCAtMjU4Nyw2ICYjNDM7MjU4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9pbmFjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gXHRtbHg1X21wZnNfZGlzYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcdG1seDVfZXN3X2ZkYl9kcm9wX2NyZWF0ZShlc3cpO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkge1xuIFx0XHRpZiAoIXZwb3J0LVx1MDAzZWFkamFjZW50KVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTI1OTUsNiAmIzQzOzI1OTgsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19mZGJfaW5hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFxuIFx0XHRtbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy1cdTAwM2VkZXYsIHZwb3J0LVx1MDAzZXZwb3J0LCBmYWxzZSk7XG4gXHR9XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiBcdGVzdy1cdTAwM2VvZmZsb2Fkc19pbmFjdGl2ZSA9IHRydWU7XG4gXHRlc3dfd2Fybihlc3ctXHUwMDNlZGV2LCBcJiMzNDtNUEZTL0ZEQiBpbmFjdGl2ZVxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbmluZGV4IDI4ZDE2ZmRjM2YwNjEuLjIyODVjODg5YzIxNWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXG5AQCAtMTQ3MSw2ICYjNDM7MTQ3MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0aWYgKCFNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdG1seDVfZXN3X2Zvcl9lYWNoX3Zwb3J0KGVzdywgaSwgdnBvcnQpIHtcbiBcdFx0aWYgKCF2cG9ydClcbiBcdFx0XHRjb250aW51ZTtcbkBAIC0xNDkwLDYgJiM0MzsxNDkxLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9sYWdfbW9kaWZ5X2RldmljZV92cG9ydHNfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4gXHRcdFx0XHQgICAgICBcJiMzNDtGYWlsZWQgdG8gc2V0IHZwb3J0ICVkIHNwZWVkICVkLCBlcnI9JWRcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgICB2cG9ydC1cdTAwM2V2cG9ydCwgc3BlZWQsIHJldCk7XG4gXHR9XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiB9XG4gXG4gdm9pZCBtbHg1X2xhZ19zZXRfdnBvcnRzX2FnZ19zcGVlZChzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xuaW5kZXggMzY3NmUyNmFjNmIwOS4uOGFhOTRlYzg3YTBlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS92cG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xuQEAgLTg5LDYgJiM0Mzs4OSwzNCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIHtcbiBcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdGlmIChNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgdnBvcnQgIT0gTUxYNV9WUE9SVF9VUExJTkspIHtcbiYjNDM7XHRcdHUzMiBzcGVlZCA9IDA7XG4mIzQzO1x0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdGVyciA9IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKG1kZXYsIG9wbW9kLCB2cG9ydCxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIG90aGVyX3Zwb3J0LCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4mIzQzO1x0XHRpZiAoZXJyKSB7XG4mIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXG4mIzQzO1x0XHRcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XG4mIzQzO1xuJiM0MztcdFx0XHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KG1kZXYtXHUwMDNlcHJpdi5lc3dpdGNoLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgIHZwb3J0KTtcbiYjNDM7XHRcdFx0c3BlZWQgPSBJU19FUlIoZXN3X3Zwb3J0KSA/IDAgOlxuJiM0MztcdFx0XHRcdGVzd192cG9ydC1cdTAwM2VhZ2dfbWF4X3R4X3NwZWVkO1xuJiM0MzsjZW5kaWZcbiYjNDM7XHRcdFx0bWx4NV9jb3JlX2RiZyhtZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgIHZwb3J0LCBlcnIsIHNwZWVkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG1heF90eF9zcGVlZCwgc3BlZWQpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG4gXHRcdCBNTFg1X0NNRF9PUF9NT0RJRllfVlBPUlRfU1RBVEUpO1xuIFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLCBvcG1vZCk7XG5AQCAtMTA2LDYgJiM0MzsxMzQsMTAgQEAgaW50IG1seDVfbW9kaWZ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3Btb2QsXG4gXHR1OCBhZG1pbl9zdGF0ZTtcbiBcdGludCBlcnI7XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBvcG1vZCwgdnBvcnQsIG90aGVyX3Zwb3J0LFxuIFx0XHRcdFx0XHQgICBcdTAwMjZhZG1pbl9zdGF0ZSk7XG4gXHRpZiAoZXJyKVxuQEAgLTEyMywxMSAmIzQzOzE1NSwxMSBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiB9XG4gXG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKVxuJiM0MztcdFx0XHRcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCxcbiYjNDM7XHRcdFx0XHQgIHUzMiAqbWF4X3R4X3NwZWVkLCB1OCAqc3RhdGUpXG4ge1xuIFx0dTMyIG91dFtNTFg1X1NUX1NaX0RXKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCldID0ge307XG4gXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4tXHR1MzIgc3RhdGU7XG4gXHRpbnQgZXJyO1xuIFxuIFx0TUxYNV9TRVQocXVlcnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG5AQCAtMTQwLDEzICYjNDM7MTcyLDkgQEAgaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0c3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xuLVx0aWYgKHN0YXRlID09IFZQT1JUX1NUQVRFX0RPV04pIHtcbi1cdFx0Km1heF90eF9zcGVlZCA9IDA7XG4tXHRcdHJldHVybiAwO1xuLVx0fVxuLVxuIFx0Km1heF90eF9zcGVlZCA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBtYXhfdHhfc3BlZWQpO1xuJiM0MztcdGlmIChzdGF0ZSlcbiYjNDM7XHRcdCpzdGF0ZSA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBzdGF0ZSk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcbmluZGV4IGVlMzRkM2VkMzM1ZjMuLmQ1MTEzZWNiNTk1ODggMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvdnBvcnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcbkBAIC02MSw3ICYjNDM7NjEsOCBAQCB1OCBtbHg1X3F1ZXJ5X3Zwb3J0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwgdTE2IHZwb3J0KTtcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIFx0XHRcdFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1OCBzdGF0ZSk7XG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKTtcbiYjNDM7XHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsXG4mIzQzO1x0XHRcdFx0ICB1MzIgKm1heF90eF9zcGVlZCwgdTggKnN0YXRlKTtcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiBcdFx0XHRcdCAgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUxNiBtYXhfdHhfc3BlZWQpO1xuIGludCBtbHg1X3F1ZXJ5X25pY192cG9ydF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNzowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHRoZXNlIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZTk1YTMzYTVhNWI4YjFhZDdiMmJmNzhmYTczZGNlMDY5NmRmMDUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDc6MDA6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMKaW5kZXggMDI4MDkxMTRmYzc5YS4uNzk0Yjg2OTU3OWFkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYwpAQCAtMTYzMSwxNCAmIzQzOzE2MzEsMTUgQEAgc3RhdGljIGludCBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV92cG9ydChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwKIAkJCQkJICAgICAgIHUzMiBwb3J0X251bSkKIHsKIAl1MzIgbWF4X3R4X3NwZWVkOwomIzQzOwl1OCB2cG9ydF9zdGF0ZTsKIAlpbnQgZXJyOwogCiAJZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQobWRldiwgb3BfbW9kLCB2cG9ydCwgb3RoZXJfdnBvcnQsCi0JCQkJCSAgICAmYW1wO21heF90eF9zcGVlZCk7CiYjNDM7CQkJCQkgICAgJmFtcDttYXhfdHhfc3BlZWQsICZhbXA7dnBvcnRfc3RhdGUpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAobWF4X3R4X3NwZWVkID09IDApCiYjNDM7CWlmICh2cG9ydF9zdGF0ZSA9PSBWUE9SVF9TVEFURV9ET1dOIHx8IG1heF90eF9zcGVlZCA9PSAwKQogCQkvKiBWYWx1ZSAwIGluZGljYXRlcyBmaWVsZCBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayAqLwogCQlyZXR1cm4gbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fcG9ydChkZXYsIHBvcnRfbnVtLAogCQkJCQkJCSAgc3BlZWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jCmluZGV4IGM4Yjc2ZDMwMWM5MmMuLjNkNTQ0ZmU0ZTZmNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMKQEAgLTY4OSwxMSAmIzQzOzY4OSwxMyBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKGVycikKIAkJZ290byB1bmxvY2s7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3JlcC0mZ3Q7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAlpZiAoIW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtJmd0O21kZXYsCiAJCQkJCSAgIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCwKIAkJCQkJICAgcmVwLSZndDt2cG9ydCwgMSwKIAkJCQkJICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCkpCiAJCW5ldGlmX2NhcnJpZXJfb24oZGV2KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwogCiB1bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CkBAIC03MDgsMTAgJiM0Mzs3MTAsMTIgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpbnQgcmV0OwogCiAJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwogCW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtJmd0O21kZXYsCiAJCQkJICAgICAgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULAogCQkJCSAgICAgIHJlcC0mZ3Q7dnBvcnQsIDEsCiAJCQkJICAgICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwogCXJldCA9IG1seDVlX2Nsb3NlX2xvY2tlZChkZXYpOwogCW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwogCXJldHVybiByZXQ7CkBAIC03ODMsMjIgJiM0Mzs3ODcsMjUgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2FycmllcikKIAlzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtJmd0O3Bwcml2OwogCXN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi0mZ3Q7cmVwOwotCWludCBlcnI7CiYjNDM7CWludCBlcnIgPSAwOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtyZXAtJmd0O2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAJaWYgKG5ld19jYXJyaWVyKSB7CiAJCWVyciA9IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtJmd0O21kZXYsIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCwKIAkJCQkJCSAgICByZXAtJmd0O3Zwb3J0LCAxLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX1VQKTsKIAkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CiYjNDM7CQkJZ290byB1bmxvY2s7CiAJCW5ldGlmX2NhcnJpZXJfb24oZGV2KTsKIAl9IGVsc2UgewogCQllcnIgPSBtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShwcml2LSZndDttZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsCiAJCQkJCQkgICAgcmVwLSZndDt2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTsKIAkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CiYjNDM7CQkJZ290byB1bmxvY2s7CiAJCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7CiAJfQotCXJldHVybiAwOwomIzQzO3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cmVwLSZndDtlc3ctJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVlX25ldGRldl9vcHNfcmVwID0gewpAQCAtMTMzNyw5ICYjNDM7MTM0NCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV91cGxpbmtfcmVwX2VuYWJsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAogCW1seDVlX3JlcF90Y19lbmFibGUocHJpdik7CiAKLQlpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKQomIzQzOwlpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7bWRldi0mZ3Q7cHJpdi5lc3dpdGNoLSZndDtzdGF0ZV9sb2NrKTsKIAkJbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUobWRldiwgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfVVBMSU5LLAogCQkJCQkgICAgICAwLCAwLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX0FVVE8pOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7bWRldi0mZ3Q7cHJpdi5lc3dpdGNoLSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsJfQogCW1seDVfbGFnX2FkZF9uZXRkZXYobWRldiwgbmV0ZGV2KTsKIAlwcml2LSZndDtldmVudHNfbmIubm90aWZpZXJfY2FsbCA9IHVwbGlua19yZXBfYXN5bmNfZXZlbnQ7CiAJbWx4NV9ub3RpZmllcl9yZWdpc3RlcihtZGV2LCAmYW1wO3ByaXYtJmd0O2V2ZW50c19uYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuYwppbmRleCBjYTI0OWI1MGY4MzBhLi43OTUwYjgyZDhiOGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmMKQEAgLTksNiAmIzQzOzksMjggQEAgaW50IG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHZwb3J0LAogewogCXUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2Rldi0mZ3Q7cHJpdi5lc3dpdGNoLSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKE1MWDVfQ0FQX0VTVyhkZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpKSB7CiYjNDM7CQl1OCBvcF9tb2QgPSBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQ7CiYjNDM7CQlzdHJ1Y3QgbWx4NV92cG9ydCAqZXN3X3Zwb3J0OwomIzQzOwkJdTMyIHNwZWVkID0gMDsKJiM0MzsJCWludCBlcnI7CiYjNDM7CiYjNDM7CQllcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChkZXYsIG9wX21vZCwgdnBvcnQsCiYjNDM7CQkJCQkJICAgIHRydWUsICZhbXA7c3BlZWQsIE5VTEwpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWVzd192cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZGV2LSZndDtwcml2LmVzd2l0Y2gsCiYjNDM7CQkJCQkJCSAgIHZwb3J0KTsKJiM0MzsJCQlzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6CiYjNDM7CQkJCWVzd192cG9ydC0mZ3Q7YWdnX21heF90eF9zcGVlZDsKJiM0MzsJCQltbHg1X2NvcmVfZGJnKGRldiwKJiM0MzsJCQkJICAgICAgJiMzNDtGYWlsZWQgdG8gcXVlcnkgdnBvcnQgJWQgbWF4IHR4IHNwZWVkLCBlcnI9JWQsIHVzaW5nIGNhY2hlZCAldVxuJiMzNDssCiYjNDM7CQkJCSAgICAgIHZwb3J0LCBlcnIsIHNwZWVkKTsKJiM0MzsJCX0KJiM0MzsJCU1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG1heF90eF9zcGVlZCwgc3BlZWQpOwomIzQzOwl9CiYjNDM7CiAJTUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3Bjb2RlLAogCQkgTUxYNV9DTURfT1BfTU9ESUZZX1ZQT1JUX1NUQVRFKTsKIAlNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcF9tb2QsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYwppbmRleCAyNDdlNWQ4NWVjMzY3Li5kNjAzZTI5NGVlMGU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmMKQEAgLTI1NjcsNiAmIzQzOzI1NjcsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19mZGJfYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdykKIAltbHg1X2Vzd19mZGJfZHJvcF9kZXN0cm95KGVzdyk7CiAJbWx4NV9tcGZzX2VuYWJsZShlc3ctJmd0O2Rldik7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAJbWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkgewogCQlpZiAoIXZwb3J0LSZndDthZGphY2VudCkKIAkJCWNvbnRpbnVlOwpAQCAtMjU3NCw2ICYjNDM7MjU3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQogCQkJICB2cG9ydC0mZ3Q7dnBvcnQpOwogCQltbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy0mZ3Q7ZGV2LCB2cG9ydC0mZ3Q7dnBvcnQsIHRydWUpOwogCX0KJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAogCWVzdy0mZ3Q7b2ZmbG9hZHNfaW5hY3RpdmUgPSBmYWxzZTsKIAllc3dfd2Fybihlc3ctJmd0O2RldiwgJiMzNDtNUEZTL0ZEQiBhY3RpdmVcbiYjMzQ7KTsKQEAgLTI1ODcsNiAmIzQzOzI1ODksNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19mZGJfaW5hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQogCW1seDVfbXBmc19kaXNhYmxlKGVzdy0mZ3Q7ZGV2KTsKIAltbHg1X2Vzd19mZGJfZHJvcF9jcmVhdGUoZXN3KTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAltbHg1X2Vzd19mb3JfZWFjaF92Zl92cG9ydChlc3csIGksIHZwb3J0LCBVMTZfTUFYKSB7CiAJCWlmICghdnBvcnQtJmd0O2FkamFjZW50KQogCQkJY29udGludWU7CkBAIC0yNTk1LDYgJiM0MzsyNTk4LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2luYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdykKIAogCQltbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy0mZ3Q7ZGV2LCB2cG9ydC0mZ3Q7dnBvcnQsIGZhbHNlKTsKIAl9CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAKIAllc3ctJmd0O29mZmxvYWRzX2luYWN0aXZlID0gdHJ1ZTsKIAllc3dfd2Fybihlc3ctJmd0O2RldiwgJiMzNDtNUEZTL0ZEQiBpbmFjdGl2ZVxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMKaW5kZXggMjhkMTZmZGMzZjA2MS4uMjI4NWM4ODljMjE1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jCkBAIC0xNDcxLDYgJiM0MzsxNDcxLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9sYWdfbW9kaWZ5X2RldmljZV92cG9ydHNfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsCiAJaWYgKCFNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpCiAJCXJldHVybjsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKIAltbHg1X2Vzd19mb3JfZWFjaF92cG9ydChlc3csIGksIHZwb3J0KSB7CiAJCWlmICghdnBvcnQpCiAJCQljb250aW51ZTsKQEAgLTE0OTAsNiAmIzQzOzE0OTEsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2xhZ19tb2RpZnlfZGV2aWNlX3Zwb3J0c19zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwKIAkJCQkgICAgICAmIzM0O0ZhaWxlZCB0byBzZXQgdnBvcnQgJWQgc3BlZWQgJWQsIGVycj0lZFxuJiMzNDssCiAJCQkJICAgICAgdnBvcnQtJmd0O3Zwb3J0LCBzcGVlZCwgcmV0KTsKIAl9CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiB9CiAKIHZvaWQgbWx4NV9sYWdfc2V0X3Zwb3J0c19hZ2dfc3BlZWQoc3RydWN0IG1seDVfbGFnICpsZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuYwppbmRleCAzNjc2ZTI2YWM2YjA5Li44YWE5NGVjODdhMGUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuYwpAQCAtODksNiAmIzQzOzg5LDM0IEBAIGludCBtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3Btb2QsCiB7CiAJdTMyIGluW01MWDVfU1RfU1pfRFcobW9kaWZ5X3Zwb3J0X3N0YXRlX2luKV0gPSB7fTsKIAomIzQzOyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENICiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDttZGV2LSZndDtwcml2LmVzd2l0Y2gtJmd0O3N0YXRlX2xvY2spOwomIzQzOyNlbmRpZgomIzQzOwomIzQzOwlpZiAoTUxYNV9DQVBfRVNXKG1kZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpICZhbXA7JmFtcDsKJiM0MzsJICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCAmYW1wOyZhbXA7CiYjNDM7CSAgICB2cG9ydCAhPSBNTFg1X1ZQT1JUX1VQTElOSykgewomIzQzOwkJdTMyIHNwZWVkID0gMDsKJiM0MzsJCWludCBlcnI7CiYjNDM7CiYjNDM7CQllcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcG1vZCwgdnBvcnQsCiYjNDM7CQkJCQkJICAgIG90aGVyX3Zwb3J0LCAmYW1wO3NwZWVkLCBOVUxMKTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSAomIzQzOwkJCXN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7CiYjNDM7CiYjNDM7CQkJZXN3X3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChtZGV2LSZndDtwcml2LmVzd2l0Y2gsCiYjNDM7CQkJCQkJCSAgIHZwb3J0KTsKJiM0MzsJCQlzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6CiYjNDM7CQkJCWVzd192cG9ydC0mZ3Q7YWdnX21heF90eF9zcGVlZDsKJiM0MzsjZW5kaWYKJiM0MzsJCQltbHg1X2NvcmVfZGJnKG1kZXYsCiYjNDM7CQkJCSAgICAgICYjMzQ7RmFpbGVkIHRvIHF1ZXJ5IHZwb3J0ICVkIG1heCB0eCBzcGVlZCwgZXJyPSVkLCB1c2luZyBjYWNoZWQgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7CiYjNDM7CQl9CiYjNDM7CQlNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBtYXhfdHhfc3BlZWQsIHNwZWVkKTsKJiM0MzsJfQomIzQzOwogCU1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSwKIAkJIE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7CiAJTUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLCBvcG1vZCk7CkBAIC0xMDYsNiAmIzQzOzEzNCwxMCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwKIAl1OCBhZG1pbl9zdGF0ZTsKIAlpbnQgZXJyOwogCiYjNDM7I2lmZGVmIENPTkZJR19NTFg1X0VTV0lUQ0gKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO21kZXYtJmd0O3ByaXYuZXN3aXRjaC0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7I2VuZGlmCiYjNDM7CiAJZXJyID0gbWx4NV9xdWVyeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBvcG1vZCwgdnBvcnQsIG90aGVyX3Zwb3J0LAogCQkJCQkgICAmYW1wO2FkbWluX3N0YXRlKTsKIAlpZiAoZXJyKQpAQCAtMTIzLDExICYjNDM7MTU1LDExIEBAIGludCBtbHg1X21vZGlmeV92cG9ydF9tYXhfdHhfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLAogfQogCiBpbnQgbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wX21vZCwKLQkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKQomIzQzOwkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsCiYjNDM7CQkJCSAgdTMyICptYXhfdHhfc3BlZWQsIHU4ICpzdGF0ZSkKIHsKIAl1MzIgb3V0W01MWDVfU1RfU1pfRFcocXVlcnlfdnBvcnRfc3RhdGVfb3V0KV0gPSB7fTsKIAl1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9pbildID0ge307Ci0JdTMyIHN0YXRlOwogCWludCBlcnI7CiAKIAlNTFg1X1NFVChxdWVyeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSwKQEAgLTE0MCwxMyAmIzQzOzE3Miw5IEBAIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlzdGF0ZSA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBzdGF0ZSk7Ci0JaWYgKHN0YXRlID09IFZQT1JUX1NUQVRFX0RPV04pIHsKLQkJKm1heF90eF9zcGVlZCA9IDA7Ci0JCXJldHVybiAwOwotCX0KLQogCSptYXhfdHhfc3BlZWQgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgbWF4X3R4X3NwZWVkKTsKJiM0MzsJaWYgKHN0YXRlKQomIzQzOwkJKnN0YXRlID0gTUxYNV9HRVQocXVlcnlfdnBvcnRfc3RhdGVfb3V0LCBvdXQsIHN0YXRlKTsKIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmgKaW5kZXggZWUzNGQzZWQzMzVmMy4uZDUxMTNlY2I1OTU4OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmgKQEAgLTYxLDcgJiM0Mzs2MSw4IEBAIHU4IG1seDVfcXVlcnlfdnBvcnRfc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLCB1MTYgdnBvcnQpOwogaW50IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwKIAkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHU4IHN0YXRlKTsKIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLAotCQkJCSAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCwgdTMyICptYXhfdHhfc3BlZWQpOwomIzQzOwkJCQkgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsCiYjNDM7CQkJCSAgdTMyICptYXhfdHhfc3BlZWQsIHU4ICpzdGF0ZSk7CiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwKIAkJCQkgICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1MTYgbWF4X3R4X3NwZWVkKTsKIGludCBtbHg1X3F1ZXJ5X25pY192cG9ydF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcxMwoJCQkJCQkJb3V0cHV0OiA5MQoJCQkJCQkJdGhvdWdodHM6IDgwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIGEgTWVsbGFub3ggbWx4NSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGEgYnVuY2ggb2YgYG1seDVgIGZpbGVzOiBgZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jYCwgc29tZSBgZW5fcmVwYCwgYGVzd2AsIGBsYWdgLCBgdnBvcnRgIGZpbGVzLCBhbmQgYSBgdnBvcnQuaGAgaW5jbHVkZS4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluLCBidXQgdGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyIGFib3V0IHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcnVsZXMgc2F5ICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljLi4uIFNtYXJ0TklDIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KCk1lbGxhbm94IGBtbHg1YCBpcyBhYnNvbHV0ZWx5IGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDL05JQyBkcml2ZXIgZm9yIENvbm5lY3RYIGNhcmRzIChsaWtlIENvbm5lY3RYLTQsIDUsIDYsIGFuZCA3KS4gTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIGBtbHg1YCAqZW11bGF0ZWQqIGluIFFFTVU/IEkga25vdyBRRU1VIHByZXR0eSB3ZWxsLCBhbmQgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBpdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZW11bGF0ZWQgTklDcyBpbiBRRU1VLi4uIG5vcGUsIG5vIGBtbHg1YC4gUUVNVSBlbXVsYXRlcyBlMTAwMCwgaWdiLCBhbmQgYWxsIHRoYXQsIGJ1dCBkZWZpbml0ZWx5IG5vdCBgbWx4NWAuIEFuZCBpdCYjMzk7cyBub3QgbGlrZWx5IHRvIGV2ZXIgYmUuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IG1lbnRpb24gZHJpdmVycyB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgYG1seDVgIGRvZXMsIGFuZCBzaW5jZSBJIGtub3cgdGhhdCBpdCB3b24mIzM5O3QgcnVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgZGVjaXNpb24gaXMgY2xlYXIuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgc2NhbiB0aGUgcGF0Y2ggYWdhaW4uIEFsbCB0aGUgbW9kaWZpZWQgZmlsZXMgYXJlIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXImIzM5O3Mgc3BlY2lmaWMgZGlyZWN0b3JpZXMuIFRoZXJlJiMzOTtzIG5vdGhpbmcgY29yZSBrZXJuZWwtcmVsYXRlZCBoZXJlLCBqdXN0IHRoZSBtbHg1IHN0dWZmLiBUaGUgZGlmZiBvbmx5IHRvdWNoZXMgdGhlIGBtbHg1YCBmaWxlczogYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNgLCBhbmQgYGluY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oYC4gU28sIG5vIGNoYW5nZXMgb3V0c2lkZSB0aGUgbWx4NSBkb21haW4uCgpBbHJpZ2h0LCB3aXRoIGNvbXBsZXRlIGNvbmZpZGVuY2UsIEkmIzM5O2xsIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiB0aGVzZSBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MjguNzU2NTczOTI5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NDAxNDE0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MjguNzU2NTc5MTQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk1OTY4NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWU5NWEzM2E1YTViOGIxYWQ3YjJiZjc4ZmE3M2RjZTA2OTZkZjA1MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwNzowMDoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmNcXG5pbmRleCAwMjgwOTExNGZjNzlhLi43OTRiODY5NTc5YWQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xcbkBAIC0xNjMxLDE0ICsxNjMxLDE1IEBAIHN0YXRpYyBpbnQgbWx4NV9pYl9xdWVyeV9wb3J0X3NwZWVkX2Zyb21fdnBvcnQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICB1MzIgcG9ydF9udW0pXFxuIHtcXG4gXFx0dTMyIG1heF90eF9zcGVlZDtcXG4rXFx0dTggdnBvcnRfc3RhdGU7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcF9tb2QsIHZwb3J0LCBvdGhlcl92cG9ydCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZtYXhfdHhfc3BlZWQpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNm1heF90eF9zcGVlZCwgXFx1MDAyNnZwb3J0X3N0YXRlKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdGlmIChtYXhfdHhfc3BlZWQgPT0gMClcXG4rXFx0aWYgKHZwb3J0X3N0YXRlID09IFZQT1JUX1NUQVRFX0RPV04gfHwgbWF4X3R4X3NwZWVkID09IDApXFxuIFxcdFxcdC8qIFZhbHVlIDAgaW5kaWNhdGVzIGZpZWxkIG5vdCBzdXBwb3J0ZWQsIGZhbGxiYWNrICovXFxuIFxcdFxcdHJldHVybiBtbHg1X2liX3F1ZXJ5X3BvcnRfc3BlZWRfZnJvbV9wb3J0KGRldiwgcG9ydF9udW0sXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc3BlZWQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcXG5pbmRleCBjOGI3NmQzMDFjOTJjLi4zZDU0NGZlNGU2ZjczIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbkBAIC02ODksMTEgKzY4OSwxMyBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gdW5sb2NrO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cmVwLVxcdTAwM2Vlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRpZiAoIW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXFx1MDAzZW1kZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgcmVwLVxcdTAwM2V2cG9ydCwgMSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCkpXFxuIFxcdFxcdG5ldGlmX2NhcnJpZXJfb24oZGV2KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyZXAtXFx1MDAzZWVzdy1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIFxcbiB1bmxvY2s6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuQEAgLTcwOCwxMCArNzEwLDEyIEBAIHN0YXRpYyBpbnQgbWx4NWVfcmVwX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cmVwLVxcdTAwM2Vlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShwcml2LVxcdTAwM2VtZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgICBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHJlcC1cXHUwMDNldnBvcnQsIDEsXFxuIFxcdFxcdFxcdFxcdCAgICAgIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfRE9XTik7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cmVwLVxcdTAwM2Vlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRyZXQgPSBtbHg1ZV9jbG9zZV9sb2NrZWQoZGV2KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtNzgzLDIyICs3ODcsMjUgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2FycmllcilcXG4gXFx0c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cXHUwMDNlcHByaXY7XFxuIFxcdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi1cXHUwMDNlcmVwO1xcbi1cXHRpbnQgZXJyO1xcbitcXHRpbnQgZXJyID0gMDtcXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnJlcC1cXHUwMDNlZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0aWYgKG5ld19jYXJyaWVyKSB7XFxuIFxcdFxcdGVyciA9IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXFx1MDAzZW1kZXYsIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHJlcC1cXHUwMDNldnBvcnQsIDEsIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfVVApO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vbihkZXYpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRlcnIgPSBtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShwcml2LVxcdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICByZXAtXFx1MDAzZXZwb3J0LCAxLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX0RPV04pO1xcbiBcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0bmV0aWZfY2Fycmllcl9vZmYoZGV2KTtcXG4gXFx0fVxcbi1cXHRyZXR1cm4gMDtcXG4rdW5sb2NrOlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnJlcC1cXHUwMDNlZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg1ZV9uZXRkZXZfb3BzX3JlcCA9IHtcXG5AQCAtMTMzNyw5ICsxMzQ0LDEyIEBAIHN0YXRpYyB2b2lkIG1seDVlX3VwbGlua19yZXBfZW5hYmxlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbiBcXG4gXFx0bWx4NWVfcmVwX3RjX2VuYWJsZShwcml2KTtcXG4gXFxuLVxcdGlmIChNTFg1X0NBUF9HRU4obWRldiwgdXBsaW5rX2ZvbGxvdykpXFxuK1xcdGlmIChNTFg1X0NBUF9HRU4obWRldiwgdXBsaW5rX2ZvbGxvdykpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWRldi1cXHUwMDNlcHJpdi5lc3dpdGNoLVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0XFx0bWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUobWRldiwgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfVVBMSU5LLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAwLCAwLCBNTFg1X1ZQT1JUX0FETUlOX1NUQVRFX0FVVE8pO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1kZXYtXFx1MDAzZXByaXYuZXN3aXRjaC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdH1cXG4gXFx0bWx4NV9sYWdfYWRkX25ldGRldihtZGV2LCBuZXRkZXYpO1xcbiBcXHRwcml2LVxcdTAwM2VldmVudHNfbmIubm90aWZpZXJfY2FsbCA9IHVwbGlua19yZXBfYXN5bmNfZXZlbnQ7XFxuIFxcdG1seDVfbm90aWZpZXJfcmVnaXN0ZXIobWRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWV2ZW50c19uYik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXFxuaW5kZXggY2EyNDliNTBmODMwYS4uNzk1MGI4MmQ4YjhhZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY1xcbkBAIC05LDYgKzksMjggQEAgaW50IG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHZwb3J0LFxcbiB7XFxuIFxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZkZXYtXFx1MDAzZXByaXYuZXN3aXRjaC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcbitcXHRpZiAoTUxYNV9DQVBfRVNXKGRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpIHtcXG4rXFx0XFx0dTggb3BfbW9kID0gTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JUO1xcbitcXHRcXHRzdHJ1Y3QgbWx4NV92cG9ydCAqZXN3X3Zwb3J0O1xcbitcXHRcXHR1MzIgc3BlZWQgPSAwO1xcbitcXHRcXHRpbnQgZXJyO1xcbitcXG4rXFx0XFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQoZGV2LCBvcF9tb2QsIHZwb3J0LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgdHJ1ZSwgXFx1MDAyNnNwZWVkLCBOVUxMKTtcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGRldi1cXHUwMDNlcHJpdi5lc3dpdGNoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICB2cG9ydCk7XFxuK1xcdFxcdFxcdHNwZWVkID0gSVNfRVJSKGVzd192cG9ydCkgPyAwIDpcXG4rXFx0XFx0XFx0XFx0ZXN3X3Zwb3J0LVxcdTAwM2VhZ2dfbWF4X3R4X3NwZWVkO1xcbitcXHRcXHRcXHRtbHg1X2NvcmVfZGJnKGRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFxcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XFxuK1xcdH1cXG4rXFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSxcXG4gXFx0XFx0IE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7XFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wX21vZCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmNcXG5pbmRleCAyNDdlNWQ4NWVjMzY3Li5kNjAzZTI5NGVlMGU4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXFxuQEAgLTI1NjcsNiArMjU2Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxcbiBcXHRtbHg1X2Vzd19mZGJfZHJvcF9kZXN0cm95KGVzdyk7XFxuIFxcdG1seDVfbXBmc19lbmFibGUoZXN3LVxcdTAwM2VkZXYpO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0bWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkge1xcbiBcXHRcXHRpZiAoIXZwb3J0LVxcdTAwM2VhZGphY2VudClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTI1NzQsNiArMjU3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxcbiBcXHRcXHRcXHQgIHZwb3J0LVxcdTAwM2V2cG9ydCk7XFxuIFxcdFxcdG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoZXN3LVxcdTAwM2VkZXYsIHZwb3J0LVxcdTAwM2V2cG9ydCwgdHJ1ZSk7XFxuIFxcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXG4gXFx0ZXN3LVxcdTAwM2VvZmZsb2Fkc19pbmFjdGl2ZSA9IGZhbHNlO1xcbiBcXHRlc3dfd2Fybihlc3ctXFx1MDAzZWRldiwgXFxcIk1QRlMvRkRCIGFjdGl2ZVxcXFxuXFxcIik7XFxuQEAgLTI1ODcsNiArMjU4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9pbmFjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXFxuIFxcdG1seDVfbXBmc19kaXNhYmxlKGVzdy1cXHUwMDNlZGV2KTtcXG4gXFx0bWx4NV9lc3dfZmRiX2Ryb3BfY3JlYXRlKGVzdyk7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXHRtbHg1X2Vzd19mb3JfZWFjaF92Zl92cG9ydChlc3csIGksIHZwb3J0LCBVMTZfTUFYKSB7XFxuIFxcdFxcdGlmICghdnBvcnQtXFx1MDAzZWFkamFjZW50KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMjU5NSw2ICsyNTk4LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2luYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdylcXG4gXFxuIFxcdFxcdG1seDVfZXN3X2Fkal92cG9ydF9tb2RpZnkoZXN3LVxcdTAwM2VkZXYsIHZwb3J0LVxcdTAwM2V2cG9ydCwgZmFsc2UpO1xcbiBcXHR9XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFxuIFxcdGVzdy1cXHUwMDNlb2ZmbG9hZHNfaW5hY3RpdmUgPSB0cnVlO1xcbiBcXHRlc3dfd2Fybihlc3ctXFx1MDAzZWRldiwgXFxcIk1QRlMvRkRCIGluYWN0aXZlXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcXG5pbmRleCAyOGQxNmZkYzNmMDYxLi4yMjg1Yzg4OWMyMTVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXFxuQEAgLTE0NzEsNiArMTQ3MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxcbiBcXHRpZiAoIU1MWDVfQ0FQX0VTVyhtZGV2LCBlc3dfdnBvcnRfc3RhdGVfbWF4X3R4X3NwZWVkKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0bWx4NV9lc3dfZm9yX2VhY2hfdnBvcnQoZXN3LCBpLCB2cG9ydCkge1xcbiBcXHRcXHRpZiAoIXZwb3J0KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTQ5MCw2ICsxNDkxLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9sYWdfbW9kaWZ5X2RldmljZV92cG9ydHNfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gc2V0IHZwb3J0ICVkIHNwZWVkICVkLCBlcnI9JWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHZwb3J0LVxcdTAwM2V2cG9ydCwgc3BlZWQsIHJldCk7XFxuIFxcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbiB9XFxuIFxcbiB2b2lkIG1seDVfbGFnX3NldF92cG9ydHNfYWdnX3NwZWVkKHN0cnVjdCBtbHg1X2xhZyAqbGRldilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xcbmluZGV4IDM2NzZlMjZhYzZiMDkuLjhhYTk0ZWM4N2EwZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xcbkBAIC04OSw2ICs4OSwzNCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxcbiB7XFxuIFxcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XFxuIFxcbisjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZtZGV2LVxcdTAwM2Vwcml2LmVzd2l0Y2gtXFx1MDAzZXN0YXRlX2xvY2spO1xcbisjZW5kaWZcXG4rXFxuK1xcdGlmIChNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgdnBvcnQgIT0gTUxYNV9WUE9SVF9VUExJTkspIHtcXG4rXFx0XFx0dTMyIHNwZWVkID0gMDtcXG4rXFx0XFx0aW50IGVycjtcXG4rXFxuK1xcdFxcdGVyciA9IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKG1kZXYsIG9wbW9kLCB2cG9ydCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIG90aGVyX3Zwb3J0LCBcXHUwMDI2c3BlZWQsIE5VTEwpO1xcbitcXHRcXHRpZiAoZXJyKSB7XFxuKyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXFxuK1xcdFxcdFxcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XFxuK1xcbitcXHRcXHRcXHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KG1kZXYtXFx1MDAzZXByaXYuZXN3aXRjaCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgdnBvcnQpO1xcbitcXHRcXHRcXHRzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6XFxuK1xcdFxcdFxcdFxcdGVzd192cG9ydC1cXHUwMDNlYWdnX21heF90eF9zcGVlZDtcXG4rI2VuZGlmXFxuK1xcdFxcdFxcdG1seDVfY29yZV9kYmcobWRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFxcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XFxuK1xcdH1cXG4rXFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wY29kZSxcXG4gXFx0XFx0IE1MWDVfQ01EX09QX01PRElGWV9WUE9SVF9TVEFURSk7XFxuIFxcdE1MWDVfU0VUKG1vZGlmeV92cG9ydF9zdGF0ZV9pbiwgaW4sIG9wX21vZCwgb3Btb2QpO1xcbkBAIC0xMDYsNiArMTM0LDEwIEBAIGludCBtbHg1X21vZGlmeV92cG9ydF9tYXhfdHhfc3BlZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxcbiBcXHR1OCBhZG1pbl9zdGF0ZTtcXG4gXFx0aW50IGVycjtcXG4gXFxuKyNpZmRlZiBDT05GSUdfTUxYNV9FU1dJVENIXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNm1kZXYtXFx1MDAzZXByaXYuZXN3aXRjaC1cXHUwMDNlc3RhdGVfbG9jayk7XFxuKyNlbmRpZlxcbitcXG4gXFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBvcG1vZCwgdnBvcnQsIG90aGVyX3Zwb3J0LFxcbiBcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YWRtaW5fc3RhdGUpO1xcbiBcXHRpZiAoZXJyKVxcbkBAIC0xMjMsMTEgKzE1NSwxMSBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcXG4gfVxcbiBcXG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXFxuLVxcdFxcdFxcdFxcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCwgdTMyICptYXhfdHhfc3BlZWQpXFxuK1xcdFxcdFxcdFxcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCxcXG4rXFx0XFx0XFx0XFx0ICB1MzIgKm1heF90eF9zcGVlZCwgdTggKnN0YXRlKVxcbiB7XFxuIFxcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9vdXQpXSA9IHt9O1xcbiBcXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9pbildID0ge307XFxuLVxcdHUzMiBzdGF0ZTtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdE1MWDVfU0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3Bjb2RlLFxcbkBAIC0xNDAsMTMgKzE3Miw5IEBAIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0c3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xcbi1cXHRpZiAoc3RhdGUgPT0gVlBPUlRfU1RBVEVfRE9XTikge1xcbi1cXHRcXHQqbWF4X3R4X3NwZWVkID0gMDtcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcdH1cXG4tXFxuIFxcdCptYXhfdHhfc3BlZWQgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgbWF4X3R4X3NwZWVkKTtcXG4rXFx0aWYgKHN0YXRlKVxcbitcXHRcXHQqc3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZCk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcXG5pbmRleCBlZTM0ZDNlZDMzNWYzLi5kNTExM2VjYjU5NTg4IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcXG5AQCAtNjEsNyArNjEsOCBAQCB1OCBtbHg1X3F1ZXJ5X3Zwb3J0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwgdTE2IHZwb3J0KTtcXG4gaW50IG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcXG4gXFx0XFx0XFx0XFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1OCBzdGF0ZSk7XFxuIGludCBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3BfbW9kLFxcbi1cXHRcXHRcXHRcXHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKTtcXG4rXFx0XFx0XFx0XFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LFxcbitcXHRcXHRcXHRcXHQgIHUzMiAqbWF4X3R4X3NwZWVkLCB1OCAqc3RhdGUpO1xcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcXG4gXFx0XFx0XFx0XFx0ICAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCwgdTE2IG1heF90eF9zcGVlZCk7XFxuIGludCBtbHg1X3F1ZXJ5X25pY192cG9ydF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MzAuMjUzMjcxNjM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA0MzQzMTA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgdGhlIE1lbGxhbm94IENvbm5lY3RYIChtbHg1KSBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHRoZXNlIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlOTVhMzNhNWE1YjhiMWFkN2IyYmY3OGZhNzNkY2UwNjk2ZGYwNTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwNzowMDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xuaW5kZXggMDI4MDkxMTRmYzc5YS4uNzk0Yjg2OTU3OWFkOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jXG5AQCAtMTYzMSwxNCArMTYzMSwxNSBAQCBzdGF0aWMgaW50IG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3Zwb3J0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdTMyIHBvcnRfbnVtKVxuIHtcbiBcdHUzMiBtYXhfdHhfc3BlZWQ7XG4rXHR1OCB2cG9ydF9zdGF0ZTtcbiBcdGludCBlcnI7XG4gXG4gXHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcF9tb2QsIHZwb3J0LCBvdGhlcl92cG9ydCxcbi1cdFx0XHRcdFx0ICAgIFx1MDAyNm1heF90eF9zcGVlZCk7XG4rXHRcdFx0XHRcdCAgICBcdTAwMjZtYXhfdHhfc3BlZWQsIFx1MDAyNnZwb3J0X3N0YXRlKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpZiAobWF4X3R4X3NwZWVkID09IDApXG4rXHRpZiAodnBvcnRfc3RhdGUgPT0gVlBPUlRfU1RBVEVfRE9XTiB8fCBtYXhfdHhfc3BlZWQgPT0gMClcbiBcdFx0LyogVmFsdWUgMCBpbmRpY2F0ZXMgZmllbGQgbm90IHN1cHBvcnRlZCwgZmFsbGJhY2sgKi9cbiBcdFx0cmV0dXJuIG1seDVfaWJfcXVlcnlfcG9ydF9zcGVlZF9mcm9tX3BvcnQoZGV2LCBwb3J0X251bSxcbiBcdFx0XHRcdFx0XHRcdCAgc3BlZWQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuaW5kZXggYzhiNzZkMzAxYzkyYy4uM2Q1NDRmZTRlNmY3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5AQCAtNjg5LDExICs2ODksMTMgQEAgc3RhdGljIGludCBtbHg1ZV9yZXBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byB1bmxvY2s7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRpZiAoIW1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXHUwMDNlbWRldixcbiBcdFx0XHRcdFx0ICAgTUxYNV9WUE9SVF9TVEFURV9PUF9NT0RfRVNXX1ZQT1JULFxuIFx0XHRcdFx0XHQgICByZXAtXHUwMDNldnBvcnQsIDEsXG4gXHRcdFx0XHRcdCAgIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfVVApKVxuIFx0XHRuZXRpZl9jYXJyaWVyX29uKGRldik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiB1bmxvY2s6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbkBAIC03MDgsMTAgKzcxMCwxMiBAQCBzdGF0aWMgaW50IG1seDVlX3JlcF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aW50IHJldDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdG11dGV4X2xvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdG1seDVfbW9kaWZ5X3Zwb3J0X2FkbWluX3N0YXRlKHByaXYtXHUwMDNlbWRldixcbiBcdFx0XHRcdCAgICAgIE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCxcbiBcdFx0XHRcdCAgICAgIHJlcC1cdTAwM2V2cG9ydCwgMSxcbiBcdFx0XHRcdCAgICAgIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfRE9XTik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cmVwLVx1MDAzZWVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcdHJldCA9IG1seDVlX2Nsb3NlX2xvY2tlZChkZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTc4MywyMiArNzg3LDI1IEBAIHN0YXRpYyBpbnQgbWx4NWVfcmVwX2NoYW5nZV9jYXJyaWVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgbmV3X2NhcnJpZXIpXG4gXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cdTAwM2VwcHJpdjtcbiBcdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi1cdTAwM2VyZXA7XG4tXHRpbnQgZXJyO1xuK1x0aW50IGVyciA9IDA7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRpZiAobmV3X2NhcnJpZXIpIHtcbiBcdFx0ZXJyID0gbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdFx0ICAgIHJlcC1cdTAwM2V2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9VUCk7XG4gXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0bmV0aWZfY2Fycmllcl9vbihkZXYpO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZXJyID0gbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUocHJpdi1cdTAwM2VtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9FU1dfVlBPUlQsXG4gXHRcdFx0XHRcdFx0ICAgIHJlcC1cdTAwM2V2cG9ydCwgMSwgTUxYNV9WUE9SVF9BRE1JTl9TVEFURV9ET1dOKTtcbiBcdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRcdGdvdG8gdW5sb2NrO1xuIFx0XHRuZXRpZl9jYXJyaWVyX29mZihkZXYpO1xuIFx0fVxuLVx0cmV0dXJuIDA7XG4rdW5sb2NrOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnJlcC1cdTAwM2Vlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1seDVlX25ldGRldl9vcHNfcmVwID0ge1xuQEAgLTEzMzcsOSArMTM0NCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV91cGxpbmtfcmVwX2VuYWJsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiBcbiBcdG1seDVlX3JlcF90Y19lbmFibGUocHJpdik7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIHVwbGlua19mb2xsb3cpKVxuK1x0aWYgKE1MWDVfQ0FQX0dFTihtZGV2LCB1cGxpbmtfZm9sbG93KSkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNm1kZXYtXHUwMDNlcHJpdi5lc3dpdGNoLVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0XHRtbHg1X21vZGlmeV92cG9ydF9hZG1pbl9zdGF0ZShtZGV2LCBNTFg1X1ZQT1JUX1NUQVRFX09QX01PRF9VUExJTkssXG4gXHRcdFx0XHRcdCAgICAgIDAsIDAsIE1MWDVfVlBPUlRfQURNSU5fU1RBVEVfQVVUTyk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdH1cbiBcdG1seDVfbGFnX2FkZF9uZXRkZXYobWRldiwgbmV0ZGV2KTtcbiBcdHByaXYtXHUwMDNlZXZlbnRzX25iLm5vdGlmaWVyX2NhbGwgPSB1cGxpbmtfcmVwX2FzeW5jX2V2ZW50O1xuIFx0bWx4NV9ub3RpZmllcl9yZWdpc3RlcihtZGV2LCBcdTAwMjZwcml2LVx1MDAzZWV2ZW50c19uYik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWRqX3Zwb3J0LmNcbmluZGV4IGNhMjQ5YjUwZjgzMGEuLjc5NTBiODJkOGI4YWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2Fkal92cG9ydC5jXG5AQCAtOSw2ICs5LDI4IEBAIGludCBtbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiB2cG9ydCxcbiB7XG4gXHR1MzIgaW5bTUxYNV9TVF9TWl9EVyhtb2RpZnlfdnBvcnRfc3RhdGVfaW4pXSA9IHt9O1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLVx1MDAzZXN0YXRlX2xvY2spO1xuK1xuK1x0aWYgKE1MWDVfQ0FQX0VTVyhkZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpKSB7XG4rXHRcdHU4IG9wX21vZCA9IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVDtcbitcdFx0c3RydWN0IG1seDVfdnBvcnQgKmVzd192cG9ydDtcbitcdFx0dTMyIHNwZWVkID0gMDtcbitcdFx0aW50IGVycjtcbitcbitcdFx0ZXJyID0gbWx4NV9xdWVyeV92cG9ydF9tYXhfdHhfc3BlZWQoZGV2LCBvcF9tb2QsIHZwb3J0LFxuK1x0XHRcdFx0XHRcdCAgICB0cnVlLCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRlc3dfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGRldi1cdTAwM2Vwcml2LmVzd2l0Y2gsXG4rXHRcdFx0XHRcdFx0XHQgICB2cG9ydCk7XG4rXHRcdFx0c3BlZWQgPSBJU19FUlIoZXN3X3Zwb3J0KSA/IDAgOlxuK1x0XHRcdFx0ZXN3X3Zwb3J0LVx1MDAzZWFnZ19tYXhfdHhfc3BlZWQ7XG4rXHRcdFx0bWx4NV9jb3JlX2RiZyhkZXYsXG4rXHRcdFx0XHQgICAgICBcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XG4rXHRcdH1cbitcdFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XG4rXHR9XG4rXG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG4gXHRcdCBNTFg1X0NNRF9PUF9NT0RJRllfVlBPUlRfU1RBVEUpO1xuIFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jXG5pbmRleCAyNDdlNWQ4NWVjMzY3Li5kNjAzZTI5NGVlMGU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuY1xuQEAgLTI1NjcsNiArMjU2Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFx0bWx4NV9lc3dfZmRiX2Ryb3BfZGVzdHJveShlc3cpO1xuIFx0bWx4NV9tcGZzX2VuYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9lc3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgVTE2X01BWCkge1xuIFx0XHRpZiAoIXZwb3J0LVx1MDAzZWFkamFjZW50KVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTI1NzQsNiArMjU3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9hY3RpdmUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxuIFx0XHRcdCAgdnBvcnQtXHUwMDNldnBvcnQpO1xuIFx0XHRtbHg1X2Vzd19hZGpfdnBvcnRfbW9kaWZ5KGVzdy1cdTAwM2VkZXYsIHZwb3J0LVx1MDAzZXZwb3J0LCB0cnVlKTtcbiBcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXG4gXHRlc3ctXHUwMDNlb2ZmbG9hZHNfaW5hY3RpdmUgPSBmYWxzZTtcbiBcdGVzd193YXJuKGVzdy1cdTAwM2VkZXYsIFwiTVBGUy9GREIgYWN0aXZlXFxuXCIpO1xuQEAgLTI1ODcsNiArMjU4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2ZkYl9pbmFjdGl2ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gXHRtbHg1X21wZnNfZGlzYWJsZShlc3ctXHUwMDNlZGV2KTtcbiBcdG1seDVfZXN3X2ZkYl9kcm9wX2NyZWF0ZShlc3cpO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRtbHg1X2Vzd19mb3JfZWFjaF92Zl92cG9ydChlc3csIGksIHZwb3J0LCBVMTZfTUFYKSB7XG4gXHRcdGlmICghdnBvcnQtXHUwMDNlYWRqYWNlbnQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtMjU5NSw2ICsyNTk4LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZmRiX2luYWN0aXZlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdylcbiBcbiBcdFx0bWx4NV9lc3dfYWRqX3Zwb3J0X21vZGlmeShlc3ctXHUwMDNlZGV2LCB2cG9ydC1cdTAwM2V2cG9ydCwgZmFsc2UpO1xuIFx0fVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbiBcbiBcdGVzdy1cdTAwM2VvZmZsb2Fkc19pbmFjdGl2ZSA9IHRydWU7XG4gXHRlc3dfd2Fybihlc3ctXHUwMDNlZGV2LCBcIk1QRlMvRkRCIGluYWN0aXZlXFxuXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXG5pbmRleCAyOGQxNmZkYzNmMDYxLi4yMjg1Yzg4OWMyMTVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuQEAgLTE0NzEsNiArMTQ3MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0aWYgKCFNTFg1X0NBUF9FU1cobWRldiwgZXN3X3Zwb3J0X3N0YXRlX21heF90eF9zcGVlZCkpXG4gXHRcdHJldHVybjtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0bWx4NV9lc3dfZm9yX2VhY2hfdnBvcnQoZXN3LCBpLCB2cG9ydCkge1xuIFx0XHRpZiAoIXZwb3J0KVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE0OTAsNiArMTQ5MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfbGFnX21vZGlmeV9kZXZpY2VfdnBvcnRzX3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LFxuIFx0XHRcdFx0ICAgICAgXCJGYWlsZWQgdG8gc2V0IHZwb3J0ICVkIHNwZWVkICVkLCBlcnI9JWRcXG5cIixcbiBcdFx0XHRcdCAgICAgIHZwb3J0LVx1MDAzZXZwb3J0LCBzcGVlZCwgcmV0KTtcbiBcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gfVxuIFxuIHZvaWQgbWx4NV9sYWdfc2V0X3Zwb3J0c19hZ2dfc3BlZWQoc3RydWN0IG1seDVfbGFnICpsZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS92cG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNcbmluZGV4IDM2NzZlMjZhYzZiMDkuLjhhYTk0ZWM4N2EwZTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvdnBvcnQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNcbkBAIC04OSw2ICs4OSwzNCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIHtcbiBcdHUzMiBpbltNTFg1X1NUX1NaX0RXKG1vZGlmeV92cG9ydF9zdGF0ZV9pbildID0ge307XG4gXG4rI2lmZGVmIENPTkZJR19NTFg1X0VTV0lUQ0hcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2bWRldi1cdTAwM2Vwcml2LmVzd2l0Y2gtXHUwMDNlc3RhdGVfbG9jayk7XG4rI2VuZGlmXG4rXG4rXHRpZiAoTUxYNV9DQVBfRVNXKG1kZXYsIGVzd192cG9ydF9zdGF0ZV9tYXhfdHhfc3BlZWQpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIG9wbW9kID09IE1MWDVfVlBPUlRfU1RBVEVfT1BfTU9EX0VTV19WUE9SVCBcdTAwMjZcdTAwMjZcbitcdCAgICB2cG9ydCAhPSBNTFg1X1ZQT1JUX1VQTElOSykge1xuK1x0XHR1MzIgc3BlZWQgPSAwO1xuK1x0XHRpbnQgZXJyO1xuK1xuK1x0XHRlcnIgPSBtbHg1X3F1ZXJ5X3Zwb3J0X21heF90eF9zcGVlZChtZGV2LCBvcG1vZCwgdnBvcnQsXG4rXHRcdFx0XHRcdFx0ICAgIG90aGVyX3Zwb3J0LCBcdTAwMjZzcGVlZCwgTlVMTCk7XG4rXHRcdGlmIChlcnIpIHtcbisjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSFxuK1x0XHRcdHN0cnVjdCBtbHg1X3Zwb3J0ICplc3dfdnBvcnQ7XG4rXG4rXHRcdFx0ZXN3X3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChtZGV2LVx1MDAzZXByaXYuZXN3aXRjaCxcbitcdFx0XHRcdFx0XHRcdCAgIHZwb3J0KTtcbitcdFx0XHRzcGVlZCA9IElTX0VSUihlc3dfdnBvcnQpID8gMCA6XG4rXHRcdFx0XHRlc3dfdnBvcnQtXHUwMDNlYWdnX21heF90eF9zcGVlZDtcbisjZW5kaWZcbitcdFx0XHRtbHg1X2NvcmVfZGJnKG1kZXYsXG4rXHRcdFx0XHQgICAgICBcIkZhaWxlZCB0byBxdWVyeSB2cG9ydCAlZCBtYXggdHggc3BlZWQsIGVycj0lZCwgdXNpbmcgY2FjaGVkICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgICB2cG9ydCwgZXJyLCBzcGVlZCk7XG4rXHRcdH1cbitcdFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgbWF4X3R4X3NwZWVkLCBzcGVlZCk7XG4rXHR9XG4rXG4gXHRNTFg1X1NFVChtb2RpZnlfdnBvcnRfc3RhdGVfaW4sIGluLCBvcGNvZGUsXG4gXHRcdCBNTFg1X0NNRF9PUF9NT0RJRllfVlBPUlRfU1RBVEUpO1xuIFx0TUxYNV9TRVQobW9kaWZ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3BfbW9kLCBvcG1vZCk7XG5AQCAtMTA2LDYgKzEzNCwxMCBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiBcdHU4IGFkbWluX3N0YXRlO1xuIFx0aW50IGVycjtcbiBcbisjaWZkZWYgQ09ORklHX01MWDVfRVNXSVRDSFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtZGV2LVx1MDAzZXByaXYuZXN3aXRjaC1cdTAwM2VzdGF0ZV9sb2NrKTtcbisjZW5kaWZcbitcbiBcdGVyciA9IG1seDVfcXVlcnlfdnBvcnRfYWRtaW5fc3RhdGUobWRldiwgb3Btb2QsIHZwb3J0LCBvdGhlcl92cG9ydCxcbiBcdFx0XHRcdFx0ICAgXHUwMDI2YWRtaW5fc3RhdGUpO1xuIFx0aWYgKGVycilcbkBAIC0xMjMsMTEgKzE1NSwxMSBAQCBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCxcbiB9XG4gXG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKVxuK1x0XHRcdFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LFxuK1x0XHRcdFx0ICB1MzIgKm1heF90eF9zcGVlZCwgdTggKnN0YXRlKVxuIHtcbiBcdHUzMiBvdXRbTUxYNV9TVF9TWl9EVyhxdWVyeV92cG9ydF9zdGF0ZV9vdXQpXSA9IHt9O1xuIFx0dTMyIGluW01MWDVfU1RfU1pfRFcocXVlcnlfdnBvcnRfc3RhdGVfaW4pXSA9IHt9O1xuLVx0dTMyIHN0YXRlO1xuIFx0aW50IGVycjtcbiBcbiBcdE1MWDVfU0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX2luLCBpbiwgb3Bjb2RlLFxuQEAgLTE0MCwxMyArMTcyLDkgQEAgaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0c3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xuLVx0aWYgKHN0YXRlID09IFZQT1JUX1NUQVRFX0RPV04pIHtcbi1cdFx0Km1heF90eF9zcGVlZCA9IDA7XG4tXHRcdHJldHVybiAwO1xuLVx0fVxuLVxuIFx0Km1heF90eF9zcGVlZCA9IE1MWDVfR0VUKHF1ZXJ5X3Zwb3J0X3N0YXRlX291dCwgb3V0LCBtYXhfdHhfc3BlZWQpO1xuK1x0aWYgKHN0YXRlKVxuK1x0XHQqc3RhdGUgPSBNTFg1X0dFVChxdWVyeV92cG9ydF9zdGF0ZV9vdXQsIG91dCwgc3RhdGUpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21seDUvdnBvcnQuaCBiL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oXG5pbmRleCBlZTM0ZDNlZDMzNWYzLi5kNTExM2VjYjU5NTg4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L3Zwb3J0LmhcbisrKyBiL2luY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oXG5AQCAtNjEsNyArNjEsOCBAQCB1OCBtbHg1X3F1ZXJ5X3Zwb3J0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcG1vZCwgdTE2IHZwb3J0KTtcbiBpbnQgbWx4NV9tb2RpZnlfdnBvcnRfYWRtaW5fc3RhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHU4IG9wbW9kLFxuIFx0XHRcdFx0ICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1OCBzdGF0ZSk7XG4gaW50IG1seDVfcXVlcnlfdnBvcnRfbWF4X3R4X3NwZWVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCB1OCBvcF9tb2QsXG4tXHRcdFx0XHQgIHUxNiB2cG9ydCwgdTggb3RoZXJfdnBvcnQsIHUzMiAqbWF4X3R4X3NwZWVkKTtcbitcdFx0XHRcdCAgdTE2IHZwb3J0LCB1OCBvdGhlcl92cG9ydCxcbitcdFx0XHRcdCAgdTMyICptYXhfdHhfc3BlZWQsIHU4ICpzdGF0ZSk7XG4gaW50IG1seDVfbW9kaWZ5X3Zwb3J0X21heF90eF9zcGVlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgdTggb3Btb2QsXG4gXHRcdFx0XHQgICB1MTYgdnBvcnQsIHU4IG90aGVyX3Zwb3J0LCB1MTYgbWF4X3R4X3NwZWVkKTtcbiBpbnQgbWx4NV9xdWVyeV9uaWNfdnBvcnRfbWFjX2FkZHJlc3Moc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNzowMDozMC4yNTMyNzMzMTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDQzNDA2MjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgYSBNZWxsYW5veCBtbHg1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGEgYnVuY2ggb2YgYG1seDVgIGZpbGVzOiBgZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jYCwgc29tZSBgZW5fcmVwYCwgYGVzd2AsIGBsYWdgLCBgdnBvcnRgIGZpbGVzLCBhbmQgYSBgdnBvcnQuaGAgaW5jbHVkZS4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGluLCBidXQgdGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyIGFib3V0IHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4gTGV0J3Mgc2VlLi4uIHRoZSBydWxlcyBzYXkgXCJXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMuLi4gU21hcnROSUMgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLlxuXG5NZWxsYW5veCBgbWx4NWAgaXMgYWJzb2x1dGVseSBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQy9OSUMgZHJpdmVyIGZvciBDb25uZWN0WCBjYXJkcyAobGlrZSBDb25uZWN0WC00LCA1LCA2LCBhbmQgNykuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyBgbWx4NWAgKmVtdWxhdGVkKiBpbiBRRU1VPyBJIGtub3cgUUVNVSBwcmV0dHkgd2VsbCwgYW5kIEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBpdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZW11bGF0ZWQgTklDcyBpbiBRRU1VLi4uIG5vcGUsIG5vIGBtbHg1YC4gUUVNVSBlbXVsYXRlcyBlMTAwMCwgaWdiLCBhbmQgYWxsIHRoYXQsIGJ1dCBkZWZpbml0ZWx5IG5vdCBgbWx4NWAuIEFuZCBpdCdzIG5vdCBsaWtlbHkgdG8gZXZlciBiZS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgbWVudGlvbiBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSBgbWx4NWAgZG9lcywgYW5kIHNpbmNlIEkga25vdyB0aGF0IGl0IHdvbid0IHJ1biBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlIGRlY2lzaW9uIGlzIGNsZWFyLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBzY2FuIHRoZSBwYXRjaCBhZ2Fpbi4gQWxsIHRoZSBtb2RpZmllZCBmaWxlcyBhcmUgd2l0aGluIHRoZSBtbHg1IGRyaXZlcidzIHNwZWNpZmljIGRpcmVjdG9yaWVzLiBUaGVyZSdzIG5vdGhpbmcgY29yZSBrZXJuZWwtcmVsYXRlZCBoZXJlLCBqdXN0IHRoZSBtbHg1IHN0dWZmLiBUaGUgZGlmZiBvbmx5IHRvdWNoZXMgdGhlIGBtbHg1YCBmaWxlczogYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hZGpfdnBvcnQuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3Zwb3J0LmNgLCBhbmQgYGluY2x1ZGUvbGludXgvbWx4NS92cG9ydC5oYC4gU28sIG5vIGNoYW5nZXMgb3V0c2lkZSB0aGUgbWx4NSBkb21haW4uXG5cbkFscmlnaHQsIHdpdGggY29tcGxldGUgY29uZmlkZW5jZSwgSSdsbCBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MTMsIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNzowMDozOS4yOTY2ODMxNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHRoZSBNZWxsYW5veCBDb25uZWN0WCAobWx4NSkgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiB0aGVzZSBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyB0aGUgTWVsbGFub3ggQ29ubmVjdFggKG1seDUpIGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDc6MDA6MzkuMjk2NzA0Nzc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5bpgv[1] Phase: Running StartedAt: 2026-08-16 07:00:50 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5bpgv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-16 07:00:50 +0000 UTC FinishedAt: 2026-08-16 07:00:54 +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,}