Name: series-workflow7f7hs Phase: Succeeded StartedAt: 2026-06-28 11:26:56 +0000 UTC FinishedAt: 2026-06-28 15:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[0] Phase: Succeeded StartedAt: 2026-06-28 11:26:56 +0000 UTC FinishedAt: 2026-06-28 11:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[0].run-triage Phase: Succeeded StartedAt: 2026-06-28 11:26:56 +0000 UTC FinishedAt: 2026-06-28 11:36:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TEQL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TEQL" ], "series_id": "291ccce1-0e87-4a14-9379-a064e4e1f933" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "teql_qdisc_init", "teql_destroy", "teql_master_open", "teql_master_mtu" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTE6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOTJkYjBmNzM0ODQ1NDM5M2YyZWMyYzcyYWZiZTk4ODZjNmIyM2RjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMTE6MzU6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF90ZXFsLmMgYi9uZXQvc2NoZWQvc2NoX3RlcWwuY1xuaW5kZXggZTdiYmM5ZTUxNzRkMGUuLjI0YmEzMWY4YzgyODU1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90ZXFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGVxbC5jXG5AQCAtNTIsNyAmIzQzOzUyLDggQEBcbiBzdHJ1Y3QgdGVxbF9tYXN0ZXIge1xuIFx0c3RydWN0IFFkaXNjX29wcyBxb3BzO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi1cdHN0cnVjdCBRZGlzYyAqc2xhdmVzO1xuJiM0MztcdHN0cnVjdCBRZGlzYyBfX3JjdVx0KnNsYXZlcztcbiYjNDM7XHRzcGlubG9ja190XHRcdHNsYXZlc19sb2NrOyAvKiBzZXJpYWxpemVzIHdyaXRlcyB0byAtXHUwMDNlc2xhdmVzICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIG1hc3Rlcl9saXN0O1xuIFx0dW5zaWduZWQgbG9uZ1x0dHhfYnl0ZXM7XG4gXHR1bnNpZ25lZCBsb25nXHR0eF9wYWNrZXRzO1xuQEAgLTYxLDcgJiM0Mzs2Miw3IEBAIHN0cnVjdCB0ZXFsX21hc3RlciB7XG4gfTtcbiBcbiBzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhIHtcbi1cdHN0cnVjdCBRZGlzYyAqbmV4dDtcbiYjNDM7XHRzdHJ1Y3QgUWRpc2MgX19yY3VcdCpuZXh0O1xuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptO1xuIFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBxO1xuIH07XG5AQCAtMTAxLDcgJiM0MzsxMDIsOSBAQCB0ZXFsX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG4gXHRpZiAoc2tiID09IE5VTEwpIHtcbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm0gPSBxZGlzY19kZXYocSk7XG4gXHRcdGlmIChtKSB7XG4tXHRcdFx0ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzID0gc2NoO1xuJiM0MztcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZkYXQtXHUwMDNlbS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gXHRcdFx0bmV0aWZfd2FrZV9xdWV1ZShtKTtcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbkBAIC0xMzIsMzQgJiM0MzsxMzUsNDkgQEAgdGVxbF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuIFx0c3RydWN0IFFkaXNjICpxLCAqcHJldjtcbiBcdHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKmRhdCA9IHFkaXNjX3ByaXYoc2NoKTtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gZGF0LVx1MDAzZW07XG4mIzQzO1x0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxID0gTlVMTDtcbiYjNDM7XHRib29sIHJlc2V0X21hc3Rlcl9xdWV1ZSA9IGZhbHNlO1xuIFxuIFx0aWYgKCFtYXN0ZXIpXG4gXHRcdHJldHVybjtcbiBcbi1cdHByZXYgPSBtYXN0ZXItXHUwMDNlc2xhdmVzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdHByZXYgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4mIzQzO1x0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpO1xuIFx0aWYgKHByZXYpIHtcbiBcdFx0ZG8ge1xuLVx0XHRcdHEgPSBORVhUX1NMQVZFKHByZXYpO1xuLVx0XHRcdGlmIChxID09IHNjaCkge1xuLVx0XHRcdFx0TkVYVF9TTEFWRShwcmV2KSA9IE5FWFRfU0xBVkUocSk7XG4tXHRcdFx0XHRpZiAocSA9PSBtYXN0ZXItXHUwMDNlc2xhdmVzKSB7XG4tXHRcdFx0XHRcdG1hc3Rlci1cdTAwM2VzbGF2ZXMgPSBORVhUX1NMQVZFKHEpO1xuLVx0XHRcdFx0XHRpZiAocSA9PSBtYXN0ZXItXHUwMDNlc2xhdmVzKSB7XG4tXHRcdFx0XHRcdFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxO1xuLVxuLVx0XHRcdFx0XHRcdHR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgMCk7XG4tXHRcdFx0XHRcdFx0bWFzdGVyLVx1MDAzZXNsYXZlcyA9IE5VTEw7XG4tXG4tXHRcdFx0XHRcdFx0ZGV2X3Jlc2V0X3F1ZXVlKG1hc3Rlci1cdTAwM2VkZXYsXG4tXHRcdFx0XHRcdFx0XHRcdHR4cSwgTlVMTCk7XG4tXHRcdFx0XHRcdH1cbi1cdFx0XHRcdH1cbi1cdFx0XHRcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkYXQtXHUwMDNlcSk7XG4tXHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0c3RydWN0IFFkaXNjICpoZWFkLCAqbmV4dDtcbiYjNDM7XG4mIzQzO1x0XHRcdHEgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocHJldiksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbiYjNDM7XHRcdFx0aWYgKHEgIT0gc2NoKSB7XG4mIzQzO1x0XHRcdFx0cHJldiA9IHE7XG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuIFxuLVx0XHR9IHdoaWxlICgocHJldiA9IHEpICE9IG1hc3Rlci1cdTAwM2VzbGF2ZXMpO1xuJiM0MztcdFx0XHRuZXh0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLFxuJiM0MztcdFx0XHRcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4mIzQzO1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKHByZXYpLCBuZXh0KTtcbiYjNDM7XG4mIzQzO1x0XHRcdGhlYWQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4mIzQzO1x0XHRcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbiYjNDM7XHRcdFx0aWYgKHEgPT0gaGVhZCkge1xuJiM0MztcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLCBuZXh0KTtcbiYjNDM7XHRcdFx0XHRpZiAocSA9PSBuZXh0KSB7XG4mIzQzO1x0XHRcdFx0XHR0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci1cdTAwM2VkZXYsIDApO1xuJiM0MztcdFx0XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cdTAwM2VzbGF2ZXMsIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0cmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTtcbiYjNDM7XHRcdFx0XHR9XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRhdC1cdTAwM2VxKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9IHdoaWxlIChwcmV2ICE9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkpO1xuIFx0fVxuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXNldF9tYXN0ZXJfcXVldWUpXG4mIzQzO1x0XHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgdHhxLCBOVUxMKTtcbiB9XG4gXG4gc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbkBAIC0xNjgsNiAmIzQzOzE4Niw3IEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XG4gXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm0gPSAoc3RydWN0IHRlcWxfbWFzdGVyICopc2NoLVx1MDAzZW9wcztcbiBcdHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG4mIzQzO1x0c3RydWN0IFFkaXNjICpmaXJzdDtcbiBcbiBcdGlmIChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFx1MDAzZSBtLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE4NCw3ICYjNDM7MjAzLDkgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cS1cdTAwM2VxKTtcbiBcbi1cdGlmIChtLVx1MDAzZXNsYXZlcykge1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKTtcbiYjNDM7XHRmaXJzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobS1cdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4mIzQzO1x0aWYgKGZpcnN0KSB7XG4gXHRcdGlmIChtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKSB7XG4gXHRcdFx0aWYgKChtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QT0lOVE9QT0lOVCkpIHx8XG5AQCAtMTkyLDggJiM0MzsyMTMsMTAgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICAgICEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQlJPQURDQVNUKSkgfHxcbiBcdFx0XHQgICAgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTVVMVElDQVNUIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9NVUxUSUNBU1QpKSB8fFxuLVx0XHRcdCAgICBkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpXG4mIzQzO1x0XHRcdCAgICBkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpIHtcbiYjNDM7XHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzXHUwMDI2SUZGX1BPSU5UT1BPSU5UKSlcbiBcdFx0XHRcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcbkBAIC0yMDQsMTQgJiM0MzsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2MgbS1cdTAwM2VkZXYtXHUwMDNlbXR1KVxuIFx0XHRcdFx0bS1cdTAwM2VkZXYtXHUwMDNlbXR1ID0gZGV2LVx1MDAzZW10dTtcbiBcdFx0fVxuLVx0XHRxLVx1MDAzZW5leHQgPSBORVhUX1NMQVZFKG0tXHUwMDNlc2xhdmVzKTtcbi1cdFx0TkVYVF9TTEFWRShtLVx1MDAzZXNsYXZlcykgPSBzY2g7XG4mIzQzO1x0XHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VuZXh0LFxuJiM0MztcdFx0XHRcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShmaXJzdCksXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbiYjNDM7XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKGZpcnN0KSwgc2NoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHEtXHUwMDNlbmV4dCA9IHNjaDtcbi1cdFx0bS1cdTAwM2VzbGF2ZXMgPSBzY2g7XG4mIzQzO1x0XHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VuZXh0LCBzY2gpO1xuJiM0MztcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSyl8KGRldi1cdTAwM2VmbGFnc1x1MDAyNkZNQVNLKTtcbiBcdH1cbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0yODUsNyAmIzQzOzMxMSw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpbnQgc3VicSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYl9yZXMgPSBOVUxMO1xuIFxuLVx0c3RhcnQgPSBtYXN0ZXItXHUwMDNlc2xhdmVzO1xuJiM0MztcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbiYjNDM7XG4mIzQzO1x0c3RhcnQgPSByY3VfZGVyZWZlcmVuY2VfYmgobWFzdGVyLVx1MDAzZXNsYXZlcyk7XG4gXG4gcmVzdGFydDpcbiBcdG5vcmVzID0gMDtcbkBAIC0zMTcsMTAgJiM0MzszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdCAgICBuZXRkZXZfc3RhcnRfeG1pdChza2IsIHNsYXZlLCBzbGF2ZV90eHEsIGZhbHNlKSA9PVxuIFx0XHRcdFx0ICAgIE5FVERFVl9UWF9PSykge1xuIFx0XHRcdFx0XHRfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpO1xuLVx0XHRcdFx0XHRtYXN0ZXItXHUwMDNlc2xhdmVzID0gTkVYVF9TTEFWRShxKTtcbiYjNDM7XHRcdFx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdFx0XHRcdFx0aWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSA9PSBxKVxuJiM0MztcdFx0XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShxKSxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbiYjNDM7XHRcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gXHRcdFx0XHRcdG5ldGlmX3dha2VfcXVldWUoZGV2KTtcbiBcdFx0XHRcdFx0bWFzdGVyLVx1MDAzZXR4X3BhY2tldHMmIzQzOyYjNDM7O1xuIFx0XHRcdFx0XHRtYXN0ZXItXHUwMDNldHhfYnl0ZXMgJiM0Mzs9IGxlbmd0aDtcbiYjNDM7XHRcdFx0XHRcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0XHRcdFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0X19uZXRpZl90eF91bmxvY2soc2xhdmVfdHhxKTtcbkBAIC0zMjksMTQgJiM0MzszNjQsMjEgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdGJ1c3kgPSAxO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDE6XG4tXHRcdFx0bWFzdGVyLVx1MDAzZXNsYXZlcyA9IE5FWFRfU0xBVkUocSk7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdFx0XHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXHUwMDNlc2xhdmVzLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcbiYjNDM7XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHQgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSk7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4mIzQzO1x0XHRcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0XHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0bm9yZXMgPSAxO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdF9fc2tiX3B1bGwoc2tiLCBza2JfbmV0d29ya19vZmZzZXQoc2tiKSk7XG4tXHR9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IHN0YXJ0KTtcbiYjNDM7XHR9IHdoaWxlICgocSA9IHJjdV9kZXJlZmVyZW5jZV9iaChORVhUX1NMQVZFKHEpKSkgIT0gc3RhcnQpO1xuIFxuIFx0aWYgKG5vcmVzIFx1MDAyNlx1MDAyNiBza2JfcmVzID09IE5VTEwpIHtcbiBcdFx0c2tiX3JlcyA9IHNrYjtcbkBAIC0zNDUsMjkgJiM0MzszODcsMzIgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdGlmIChidXN5KSB7XG4gXHRcdG5ldGlmX3N0b3BfcXVldWUoZGV2KTtcbiYjNDM7XHRcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0XHRyZXR1cm4gTkVUREVWX1RYX0JVU1k7XG4gXHR9XG4gXHRtYXN0ZXItXHUwMDNldHhfZXJyb3JzJiM0MzsmIzQzOztcbiBcbiBkcm9wOlxuIFx0bWFzdGVyLVx1MDAzZXR4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuJiM0MztcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiB9XG4gXG4gc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IFFkaXNjICpxO1xuJiM0MztcdHN0cnVjdCBRZGlzYyAqcSwgKmZpcnN0O1xuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdGludCBtdHUgPSAweEZGRkU7XG4gXHR1bnNpZ25lZCBpbnQgZmxhZ3MgPSBJRkZfTk9BUlAgfCBJRkZfTVVMVElDQVNUO1xuIFxuLVx0aWYgKG0tXHUwMDNlc2xhdmVzID09IE5VTEwpXG4mIzQzO1x0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXHUwMDNlc2xhdmVzKTtcbiYjNDM7XHRpZiAoIWZpcnN0KVxuIFx0XHRyZXR1cm4gLUVVTkFUQ0g7XG4gXG4gXHRmbGFncyA9IEZNQVNLO1xuIFxuLVx0cSA9IG0tXHUwMDNlc2xhdmVzO1xuJiM0MztcdHEgPSBmaXJzdDtcbiBcdGRvIHtcbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlID0gcWRpc2NfZGV2KHEpO1xuIFxuQEAgLTM4OSw3ICYjNDM7NDM0LDcgQEAgc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0ZmxhZ3MgXHUwMDI2PSB+SUZGX0JST0FEQ0FTVDtcbiBcdFx0aWYgKCEoc2xhdmUtXHUwMDNlZmxhZ3NcdTAwMjZJRkZfTVVMVElDQVNUKSlcbiBcdFx0XHRmbGFncyBcdTAwMjY9IH5JRkZfTVVMVElDQVNUO1xuLVx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVx1MDAzZXNsYXZlcyk7XG4mIzQzO1x0fSB3aGlsZSAoKHEgPSBydG5sX2RlcmVmZXJlbmNlKE5FWFRfU0xBVkUocSkpKSAhPSBmaXJzdCk7XG4gXG4gXHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBtdHU7XG4gXHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSykgfCBmbGFncztcbkBAIC00MTcsMTQgJiM0Mzs0NjIsMTUgQEAgc3RhdGljIHZvaWQgdGVxbF9tYXN0ZXJfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyBpbnQgdGVxbF9tYXN0ZXJfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxuIHtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgUWRpc2MgKnE7XG4mIzQzO1x0c3RydWN0IFFkaXNjICpxLCAqZmlyc3Q7XG4gXG4tXHRxID0gbS1cdTAwM2VzbGF2ZXM7XG4mIzQzO1x0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXHUwMDNlc2xhdmVzKTtcbiYjNDM7XHRxID0gZmlyc3Q7XG4gXHRpZiAocSkge1xuIFx0XHRkbyB7XG4gXHRcdFx0aWYgKG5ld19tdHUgXHUwMDNlIHFkaXNjX2RldihxKS1cdTAwM2VtdHUpXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdFx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVx1MDAzZXNsYXZlcyk7XG4mIzQzO1x0XHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcbiBcdH1cbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG5AQCAtNDQ0LDYgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgX19pbml0IHZvaWQgdGVxbF9tYXN0ZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHN0cnVjdCBRZGlzY19vcHMgKm9wcyA9IFx1MDAyNm1hc3Rlci1cdTAwM2Vxb3BzO1xuIFxuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gXHRtYXN0ZXItXHUwMDNlZGV2XHQ9IGRldjtcbiBcdG9wcy1cdTAwM2Vwcml2X3NpemUgID0gc2l6ZW9mKHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM5MmRiMGY3MzQ4NDU0MzkzZjJlYzJjNzJhZmJlOTg4NmM2YjIzZGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1biAyOCAxMTozNTozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGVxbC5jIGIvbmV0L3NjaGVkL3NjaF90ZXFsLmMKaW5kZXggZTdiYmM5ZTUxNzRkMGUuLjI0YmEzMWY4YzgyODU1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3RlcWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3RlcWwuYwpAQCAtNTIsNyAmIzQzOzUyLDggQEAKIHN0cnVjdCB0ZXFsX21hc3RlciB7CiAJc3RydWN0IFFkaXNjX29wcyBxb3BzOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7Ci0Jc3RydWN0IFFkaXNjICpzbGF2ZXM7CiYjNDM7CXN0cnVjdCBRZGlzYyBfX3JjdQkqc2xhdmVzOwomIzQzOwlzcGlubG9ja190CQlzbGF2ZXNfbG9jazsgLyogc2VyaWFsaXplcyB3cml0ZXMgdG8gLSZndDtzbGF2ZXMgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIG1hc3Rlcl9saXN0OwogCXVuc2lnbmVkIGxvbmcJdHhfYnl0ZXM7CiAJdW5zaWduZWQgbG9uZwl0eF9wYWNrZXRzOwpAQCAtNjEsNyAmIzQzOzYyLDcgQEAgc3RydWN0IHRlcWxfbWFzdGVyIHsKIH07CiAKIHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgewotCXN0cnVjdCBRZGlzYyAqbmV4dDsKJiM0MzsJc3RydWN0IFFkaXNjIF9fcmN1CSpuZXh0OwogCXN0cnVjdCB0ZXFsX21hc3RlciAqbTsKIAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHE7CiB9OwpAQCAtMTAxLDcgJiM0MzsxMDIsOSBAQCB0ZXFsX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpCiAJaWYgKHNrYiA9PSBOVUxMKSB7CiAJCXN0cnVjdCBuZXRfZGV2aWNlICptID0gcWRpc2NfZGV2KHEpOwogCQlpZiAobSkgewotCQkJZGF0LSZndDttLSZndDtzbGF2ZXMgPSBzY2g7CiYjNDM7CQkJc3Bpbl9sb2NrX2JoKCZhbXA7ZGF0LSZndDttLSZndDtzbGF2ZXNfbG9jayk7CiYjNDM7CQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRhdC0mZ3Q7bS0mZ3Q7c2xhdmVzLCBzY2gpOwomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7ZGF0LSZndDttLSZndDtzbGF2ZXNfbG9jayk7CiAJCQluZXRpZl93YWtlX3F1ZXVlKG0pOwogCQl9CiAJfSBlbHNlIHsKQEAgLTEzMiwzNCAmIzQzOzEzNSw0OSBAQCB0ZXFsX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpCiAJc3RydWN0IFFkaXNjICpxLCAqcHJldjsKIAlzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpkYXQgPSBxZGlzY19wcml2KHNjaCk7CiAJc3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBkYXQtJmd0O207CiYjNDM7CXN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cSA9IE5VTEw7CiYjNDM7CWJvb2wgcmVzZXRfbWFzdGVyX3F1ZXVlID0gZmFsc2U7CiAKIAlpZiAoIW1hc3RlcikKIAkJcmV0dXJuOwogCi0JcHJldiA9IG1hc3Rlci0mZ3Q7c2xhdmVzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKTsKJiM0MzsJcHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jaykpOwogCWlmIChwcmV2KSB7CiAJCWRvIHsKLQkJCXEgPSBORVhUX1NMQVZFKHByZXYpOwotCQkJaWYgKHEgPT0gc2NoKSB7Ci0JCQkJTkVYVF9TTEFWRShwcmV2KSA9IE5FWFRfU0xBVkUocSk7Ci0JCQkJaWYgKHEgPT0gbWFzdGVyLSZndDtzbGF2ZXMpIHsKLQkJCQkJbWFzdGVyLSZndDtzbGF2ZXMgPSBORVhUX1NMQVZFKHEpOwotCQkJCQlpZiAocSA9PSBtYXN0ZXItJmd0O3NsYXZlcykgewotCQkJCQkJc3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxOwotCi0JCQkJCQl0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci0mZ3Q7ZGV2LCAwKTsKLQkJCQkJCW1hc3Rlci0mZ3Q7c2xhdmVzID0gTlVMTDsKLQotCQkJCQkJZGV2X3Jlc2V0X3F1ZXVlKG1hc3Rlci0mZ3Q7ZGV2LAotCQkJCQkJCQl0eHEsIE5VTEwpOwotCQkJCQl9Ci0JCQkJfQotCQkJCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2RhdC0mZ3Q7cSk7Ci0JCQkJYnJlYWs7CiYjNDM7CQkJc3RydWN0IFFkaXNjICpoZWFkLCAqbmV4dDsKJiM0MzsKJiM0MzsJCQlxID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHByZXYpLAomIzQzOwkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spKTsKJiM0MzsJCQlpZiAocSAhPSBzY2gpIHsKJiM0MzsJCQkJcHJldiA9IHE7CiYjNDM7CQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCX0gd2hpbGUgKChwcmV2ID0gcSkgIT0gbWFzdGVyLSZndDtzbGF2ZXMpOwomIzQzOwkJCW5leHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksCiYjNDM7CQkJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKSk7CiYjNDM7CQkJcmN1X2Fzc2lnbl9wb2ludGVyKE5FWFRfU0xBVkUocHJldiksIG5leHQpOwomIzQzOwomIzQzOwkJCWhlYWQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci0mZ3Q7c2xhdmVzLAomIzQzOwkJCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jaykpOwomIzQzOwkJCWlmIChxID09IGhlYWQpIHsKJiM0MzsJCQkJcmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci0mZ3Q7c2xhdmVzLCBuZXh0KTsKJiM0MzsJCQkJaWYgKHEgPT0gbmV4dCkgewomIzQzOwkJCQkJdHhxID0gbmV0ZGV2X2dldF90eF9xdWV1ZShtYXN0ZXItJmd0O2RldiwgMCk7CiYjNDM7CQkJCQlyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLSZndDtzbGF2ZXMsIE5VTEwpOwomIzQzOwkJCQkJcmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTsKJiM0MzsJCQkJfQomIzQzOwkJCX0KJiM0MzsJCQlza2JfcXVldWVfcHVyZ2UoJmFtcDtkYXQtJmd0O3EpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfSB3aGlsZSAocHJldiAhPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci0mZ3Q7c2xhdmVzLAomIzQzOwkJCQkJCQkgICBsb2NrZGVwX2lzX2hlbGQoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKSkpOwogCX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKHJlc2V0X21hc3Rlcl9xdWV1ZSkKJiM0MzsJCWRldl9yZXNldF9xdWV1ZShtYXN0ZXItJmd0O2RldiwgdHhxLCBOVUxMKTsKIH0KIAogc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKQEAgLTE2OCw2ICYjNDM7MTg2LDcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7CiAJc3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC0mZ3Q7b3BzOwogCXN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7CiYjNDM7CXN0cnVjdCBRZGlzYyAqZmlyc3Q7CiAKIAlpZiAoZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gJmd0OyBtLSZndDtkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbikKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xODQsNyAmIzQzOzIwMyw5IEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAKIAlza2JfcXVldWVfaGVhZF9pbml0KCZhbXA7cS0mZ3Q7cSk7CiAKLQlpZiAobS0mZ3Q7c2xhdmVzKSB7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO20tJmd0O3NsYXZlc19sb2NrKTsKJiM0MzsJZmlyc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG0tJmd0O3NsYXZlcywgbG9ja2RlcF9pc19oZWxkKCZhbXA7bS0mZ3Q7c2xhdmVzX2xvY2spKTsKJiM0MzsJaWYgKGZpcnN0KSB7CiAJCWlmIChtLSZndDtkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9VUCkgewogCQkJaWYgKChtLSZndDtkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QT0lOVE9QT0lOVCAmYW1wOyZhbXA7CiAJCQkgICAgICEoZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfUE9JTlRPUE9JTlQpKSB8fApAQCAtMTkyLDggJiM0MzsyMTMsMTAgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCSAgICAgIShkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9CUk9BRENBU1QpKSB8fAogCQkJICAgIChtLSZndDtkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9NVUxUSUNBU1QgJmFtcDsmYW1wOwogCQkJICAgICAhKGRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX01VTFRJQ0FTVCkpIHx8Ci0JCQkgICAgZGV2LSZndDttdHUgJmx0OyBtLSZndDtkZXYtJmd0O210dSkKJiM0MzsJCQkgICAgZGV2LSZndDttdHUgJmx0OyBtLSZndDtkZXYtJmd0O210dSkgewomIzQzOwkJCQlzcGluX3VubG9ja19iaCgmYW1wO20tJmd0O3NsYXZlc19sb2NrKTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiAJCX0gZWxzZSB7CiAJCQlpZiAoIShkZXYtJmd0O2ZsYWdzJmFtcDtJRkZfUE9JTlRPUE9JTlQpKQogCQkJCW0tJmd0O2Rldi0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JRkZfUE9JTlRPUE9JTlQ7CkBAIC0yMDQsMTQgJiM0MzsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCWlmIChkZXYtJmd0O210dSAmbHQ7IG0tJmd0O2Rldi0mZ3Q7bXR1KQogCQkJCW0tJmd0O2Rldi0mZ3Q7bXR1ID0gZGV2LSZndDttdHU7CiAJCX0KLQkJcS0mZ3Q7bmV4dCA9IE5FWFRfU0xBVkUobS0mZ3Q7c2xhdmVzKTsKLQkJTkVYVF9TTEFWRShtLSZndDtzbGF2ZXMpID0gc2NoOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHEtJmd0O25leHQsCiYjNDM7CQkJCSAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShmaXJzdCksCiYjNDM7CQkJCQkJCSAgICAgbG9ja2RlcF9pc19oZWxkKCZhbXA7bS0mZ3Q7c2xhdmVzX2xvY2spKSk7CiYjNDM7CQlyY3VfYXNzaWduX3BvaW50ZXIoTkVYVF9TTEFWRShmaXJzdCksIHNjaCk7CiAJfSBlbHNlIHsKLQkJcS0mZ3Q7bmV4dCA9IHNjaDsKLQkJbS0mZ3Q7c2xhdmVzID0gc2NoOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHEtJmd0O25leHQsIHNjaCk7CiYjNDM7CQlyY3VfYXNzaWduX3BvaW50ZXIobS0mZ3Q7c2xhdmVzLCBzY2gpOwogCQltLSZndDtkZXYtJmd0O210dSA9IGRldi0mZ3Q7bXR1OwogCQltLSZndDtkZXYtJmd0O2ZsYWdzID0gKG0tJmd0O2Rldi0mZ3Q7ZmxhZ3MmYW1wO35GTUFTSyl8KGRldi0mZ3Q7ZmxhZ3MmYW1wO0ZNQVNLKTsKIAl9CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bS0mZ3Q7c2xhdmVzX2xvY2spOwogCXJldHVybiAwOwogfQogCkBAIC0yODUsNyAmIzQzOzMxMSw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaW50IHN1YnEgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3JlcyA9IE5VTEw7CiAKLQlzdGFydCA9IG1hc3Rlci0mZ3Q7c2xhdmVzOwomIzQzOwlyY3VfcmVhZF9sb2NrX2JoKCk7CiYjNDM7CiYjNDM7CXN0YXJ0ID0gcmN1X2RlcmVmZXJlbmNlX2JoKG1hc3Rlci0mZ3Q7c2xhdmVzKTsKIAogcmVzdGFydDoKIAlub3JlcyA9IDA7CkBAIC0zMTcsMTAgJiM0MzszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCQkgICAgbmV0ZGV2X3N0YXJ0X3htaXQoc2tiLCBzbGF2ZSwgc2xhdmVfdHhxLCBmYWxzZSkgPT0KIAkJCQkgICAgTkVUREVWX1RYX09LKSB7CiAJCQkJCV9fbmV0aWZfdHhfdW5sb2NrKHNsYXZlX3R4cSk7Ci0JCQkJCW1hc3Rlci0mZ3Q7c2xhdmVzID0gTkVYVF9TTEFWRShxKTsKJiM0MzsJCQkJCXNwaW5fbG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwomIzQzOwkJCQkJaWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkJCQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKSkgPT0gcSkKJiM0MzsJCQkJCQlyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkJCQkgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksCiYjNDM7CQkJCQkJCQkJCQkgICAgIGxvY2tkZXBfaXNfaGVsZCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spKSk7CiYjNDM7CQkJCQlzcGluX3VubG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwogCQkJCQluZXRpZl93YWtlX3F1ZXVlKGRldik7CiAJCQkJCW1hc3Rlci0mZ3Q7dHhfcGFja2V0cyYjNDM7JiM0Mzs7CiAJCQkJCW1hc3Rlci0mZ3Q7dHhfYnl0ZXMgJiM0Mzs9IGxlbmd0aDsKJiM0MzsJCQkJCXJjdV9yZWFkX3VubG9ja19iaCgpOwogCQkJCQlyZXR1cm4gTkVUREVWX1RYX09LOwogCQkJCX0KIAkJCQlfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpOwpAQCAtMzI5LDE0ICYjNDM7MzY0LDIxIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCQkJYnVzeSA9IDE7CiAJCQlicmVhazsKIAkJY2FzZSAxOgotCQkJbWFzdGVyLSZndDtzbGF2ZXMgPSBORVhUX1NMQVZFKHEpOwomIzQzOwkJCXNwaW5fbG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwomIzQzOwkJCWlmIChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci0mZ3Q7c2xhdmVzLAomIzQzOwkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spKSA9PSBxKQomIzQzOwkJCQlyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkJICAgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLAomIzQzOwkJCQkJCQkJCSAgICAgbG9ja2RlcF9pc19oZWxkKCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jaykpKTsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwomIzQzOwkJCXJjdV9yZWFkX3VubG9ja19iaCgpOwogCQkJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAkJZGVmYXVsdDoKIAkJCW5vcmVzID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJCV9fc2tiX3B1bGwoc2tiLCBza2JfbmV0d29ya19vZmZzZXQoc2tiKSk7Ci0JfSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBzdGFydCk7CiYjNDM7CX0gd2hpbGUgKChxID0gcmN1X2RlcmVmZXJlbmNlX2JoKE5FWFRfU0xBVkUocSkpKSAhPSBzdGFydCk7CiAKIAlpZiAobm9yZXMgJmFtcDsmYW1wOyBza2JfcmVzID09IE5VTEwpIHsKIAkJc2tiX3JlcyA9IHNrYjsKQEAgLTM0NSwyOSAmIzQzOzM4NywzMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJaWYgKGJ1c3kpIHsKIAkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwomIzQzOwkJcmN1X3JlYWRfdW5sb2NrX2JoKCk7CiAJCXJldHVybiBORVRERVZfVFhfQlVTWTsKIAl9CiAJbWFzdGVyLSZndDt0eF9lcnJvcnMmIzQzOyYjNDM7OwogCiBkcm9wOgogCW1hc3Rlci0mZ3Q7dHhfZHJvcHBlZCYjNDM7JiM0Mzs7CiYjNDM7CXJjdV9yZWFkX3VubG9ja19iaCgpOwogCWRldl9rZnJlZV9za2Ioc2tiKTsKIAlyZXR1cm4gTkVUREVWX1RYX09LOwogfQogCiBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgUWRpc2MgKnE7CiYjNDM7CXN0cnVjdCBRZGlzYyAqcSwgKmZpcnN0OwogCXN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7CiAJaW50IG10dSA9IDB4RkZGRTsKIAl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBJRkZfTk9BUlAgfCBJRkZfTVVMVElDQVNUOwogCi0JaWYgKG0tJmd0O3NsYXZlcyA9PSBOVUxMKQomIzQzOwlmaXJzdCA9IHJ0bmxfZGVyZWZlcmVuY2UobS0mZ3Q7c2xhdmVzKTsKJiM0MzsJaWYgKCFmaXJzdCkKIAkJcmV0dXJuIC1FVU5BVENIOwogCiAJZmxhZ3MgPSBGTUFTSzsKIAotCXEgPSBtLSZndDtzbGF2ZXM7CiYjNDM7CXEgPSBmaXJzdDsKIAlkbyB7CiAJCXN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZSA9IHFkaXNjX2RldihxKTsKIApAQCAtMzg5LDcgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWZsYWdzICZhbXA7PSB+SUZGX0JST0FEQ0FTVDsKIAkJaWYgKCEoc2xhdmUtJmd0O2ZsYWdzJmFtcDtJRkZfTVVMVElDQVNUKSkKIAkJCWZsYWdzICZhbXA7PSB+SUZGX01VTFRJQ0FTVDsKLQl9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IG0tJmd0O3NsYXZlcyk7CiYjNDM7CX0gd2hpbGUgKChxID0gcnRubF9kZXJlZmVyZW5jZShORVhUX1NMQVZFKHEpKSkgIT0gZmlyc3QpOwogCiAJbS0mZ3Q7ZGV2LSZndDttdHUgPSBtdHU7CiAJbS0mZ3Q7ZGV2LSZndDtmbGFncyA9IChtLSZndDtkZXYtJmd0O2ZsYWdzJmFtcDt+Rk1BU0spIHwgZmxhZ3M7CkBAIC00MTcsMTQgJiM0Mzs0NjIsMTUgQEAgc3RhdGljIHZvaWQgdGVxbF9tYXN0ZXJfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogc3RhdGljIGludCB0ZXFsX21hc3Rlcl9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpCiB7CiAJc3RydWN0IHRlcWxfbWFzdGVyICptID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlzdHJ1Y3QgUWRpc2MgKnE7CiYjNDM7CXN0cnVjdCBRZGlzYyAqcSwgKmZpcnN0OwogCi0JcSA9IG0tJmd0O3NsYXZlczsKJiM0MzsJZmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tJmd0O3NsYXZlcyk7CiYjNDM7CXEgPSBmaXJzdDsKIAlpZiAocSkgewogCQlkbyB7CiAJCQlpZiAobmV3X210dSAmZ3Q7IHFkaXNjX2RldihxKS0mZ3Q7bXR1KQogCQkJCXJldHVybiAtRUlOVkFMOwotCQl9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IG0tJmd0O3NsYXZlcyk7CiYjNDM7CQl9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTsKIAl9CiAKIAlXUklURV9PTkNFKGRldi0mZ3Q7bXR1LCBuZXdfbXR1KTsKQEAgLTQ0NCw2ICYjNDM7NDkwLDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHRlcWxfbWFzdGVyX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBRZGlzY19vcHMgKm9wcyA9ICZhbXA7bWFzdGVyLSZndDtxb3BzOwogCiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jayk7CiAJbWFzdGVyLSZndDtkZXYJPSBkZXY7CiAJb3BzLSZndDtwcml2X3NpemUgID0gc2l6ZW9mKHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMjMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0ZXFsLmMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9zY2hlZC9zY2hfdGVxbC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBUcnVlIExpbmsgRXF1YWxpemVyIHF1ZXVpbmcgZGlzY2lwbGluZS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jaywgYHNsYXZlc19sb2NrYCwgdG8gdGhlIGBzbGF2ZXNgIGxpc3Qgd2l0aGluIHRoZSBgc3RydWN0IHRlcWxfbWFzdGVyYC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyB0d28gcG9zc2liaWxpdGllczogYSBjb25jdXJyZW5jeSBidWcgaXMgYmVpbmcgYWRkcmVzc2VkLCBvciB0aGV5JiMzOTtyZSBiZWVmaW5nIHVwIHRoZSBSQ1Ugc3VwcG9ydC4gR2l2ZW4gdGhhdCB0aGV5JiMzOTtyZSB0b3VjaGluZyBgdGVxbF9kZXF1ZXVlYCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9tYXN0ZXJfeG1pdGAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLCB0aGUgc2NvcGUgaXMgZmFpcmx5IGJyb2FkLiBUaGlzIGlzbiYjMzk7dCBhIG1pbm9yIHR3ZWFrLgoKSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nOyB0aGUgY2hhbmdlcyBwb3RlbnRpYWxseSBpbXBhY3Qgc2V2ZXJhbCBjb3JlIGZ1bmN0aW9ucy4gQmVmb3JlIGRpdmluZyBkZWVwZXIsIEkgc2hvdWxkIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBzY2hfdGVxbC5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCBpZiB0aGlzIHdpbGwgaW1wYWN0IHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzZWUgaG93IHRoaXMgYWZmZWN0cyBvdXIgZXhpc3RpbmcgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2hfdGVxbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZWlnaGJvdXIuYz0xMzA5PXN0YXRpYyB2b2lkIG5laWdoX3VwZGF0ZV9wcm9jZXNzX2FycF9xdWV1ZShzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaClcbi0tXG5uZXQvY29yZS9uZWlnaGJvdXIuYy0xMzI1LVx0XHQvKiBXaHkgbm90IGp1c3QgdXNlICYjMzk7bmVpZ2gmIzM5OyBhcy1pcz8gIFRoZSBwcm9ibGVtIGlzIHRoYXRcbm5ldC9jb3JlL25laWdoYm91ci5jOjEzMjY6XHRcdCAqIHRoaW5ncyBzdWNoIGFzIHNoYXBlciwgZXFsLCBhbmQgc2NoX3RlcWwgY2FuIGVuZCB1cFxubmV0L2NvcmUvbmVpZ2hib3VyLmMtMTMyNy1cdFx0ICogdXNpbmcgYWx0ZXJuYXRpdmUsIGRpZmZlcmVudCwgbmVpZ2ggb2JqZWN0cyB0byBvdXRwdXRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0xMjI9Y29uZmlnIE5FVF9TQ0hfVEVRTFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTEyOC1cbm5ldC9zY2hlZC9LY29uZmlnOjEyOTpcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RlcWwuY1x1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxubmV0L3NjaGVkL0tjb25maWctMTMwLVxubmV0L3NjaGVkL0tjb25maWctMTMxLVx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG5uZXQvc2NoZWQvS2NvbmZpZzoxMzI6XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGVxbC5cbm5ldC9zY2hlZC9LY29uZmlnLTEzMy1cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVx0JiM0Mzs9IHNjaF90YmYub1xubmV0L3NjaGVkL01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19ORVRfU0NIX1RFUUwpXHQmIzQzOz0gc2NoX3RlcWwub1xubmV0L3NjaGVkL01ha2VmaWxlLTQ0LW9iai0kKENPTkZJR19ORVRfU0NIX1BSSU8pXHQmIzQzOz0gc2NoX3ByaW8ub1xuLS1cbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbm5ldC9zY2hlZC9zY2hfdGVxbC5jOjI6LyogbmV0L3NjaGVkL3NjaF90ZXFsLmNcdFwmIzM0O1RydWVcJiMzNDsgKG9yIFwmIzM0O3RyaXZpYWxcJiMzNDspIGxpbmsgZXF1YWxpemVyLlxubmV0L3NjaGVkL3NjaF90ZXFsLmMtMy0gKlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoPTY3PXRyeV9tb2Rwcm9iZSBzY2hfaHRiXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5zaDo2ODp0cnlfbW9kcHJvYmUgc2NoX3RlcWxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoLTY5LXRyeV9tb2Rwcm9iZSBzY2hfZHVhbHBpMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyODMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBURVFMIFFkaXNjIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBORVRfU0NIX1RFUUxgLiBSaWdodCwgbGV0JiMzOTtzIHNlZSB3aGljaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkLiBMb29rcyBsaWtlIHdlJiMzOTt2ZSBnb3QgYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC4gQWxsIGNsZWFybHkgVEVRTCBxZGlzYyBjb21wb25lbnRzLgoKTm93LCBsZXQgbWUgem9vbSBpbiBvbiB0aG9zZSBzeW1ib2xzLiBIbW0sIGB0ZXFsX21hc3Rlcl94bWl0YCBhbmQgYHRlcWxfZGVxdWV1ZWAuLi4gdGhvc2UgYXJlIGJvdGggZGVmaW5pdGVseSBob3QtcGF0aCBmdW5jdGlvbnMsIHBhcnQgb2YgdGhlIHRyYW5zbWl0IGFuZCBkZXF1ZXVlIHByb2Nlc3NlcyByZXNwZWN0aXZlbHkuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhdm9pZGluZyB0aG9zZS4gU28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBkb3duIGNvbnNpZGVyYWJseS4gSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgIGluc3RlYWQsIGF2b2lkaW5nIHRoZSBob3QtcGF0aCBvbmVzLiBOb3cgSSBzaG91bGQgdmVyaWZ5IHRoYXQgY29uZmlnIG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfU0NIX1RFUUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnPTY4PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc6Njk6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWctNzAtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnPTEwNT1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZzoxMDY6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTEwNy1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTE1NT1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MTU2OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTU3LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9NTg9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNjAtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6NTg6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy01OS1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0xODM9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoxODQ6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMTg1LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZz0xODc9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MTg4OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0xODktQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnPTU4PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZy02MC1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9NjA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc6NjE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTYyLUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZz02MT1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZzo2MjpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctNjMtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc6NjM6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZy02NC1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZzo2MDpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTYxLUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTE4ND1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0xODYtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz0xNTA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjE1MTpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTE1Mi1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0xMzg9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoxMzk6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctMTQwLUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz0yNDE9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjQyOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0yNDMtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9Mzc2PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6Mzc3OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTM3OC1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0zNjY9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozNjc6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMzY4LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc9NTQ9Q09ORklHX05FVF9TQ0hfU0ZRPXlcbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnOjU1OkNPTkZJR19ORVRfU0NIX1RFUUw9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWctNTYtQ09ORklHX05FVF9TQ0hfVEJGPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz01Mz1DT05GSUdfTkVUX1NDSF9TRlE9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcyMV9kZWZjb25maWc6NTQ6Q09ORklHX05FVF9TQ0hfVEVRTD15XG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZy01NS1DT05GSUdfTkVUX1NDSF9UQkY9eVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MTEzPUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjExNDpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctMTE1LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9jb21tb25fZGVmY29uZmlnPTMwPUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MzE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWctMzItQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVF9TQ0hfU0ZRXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTIxLVxubmV0L3NjaGVkL0tjb25maWc6MTIyOmNvbmZpZyBORVRfU0NIX1RFUUxcbm5ldC9zY2hlZC9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O1RydWUgTGluayBFcXVhbGl6ZXIgKFRFUUwpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVx0JiM0Mzs9IHNjaF90ZXFsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS00NC1vYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVx0JiM0Mzs9IHNjaF9wcmlvLm9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZz01NT1DT05GSUdfTkVUX1NDSF9UQkY9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc6NTY6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy01Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTc5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEVRTCBRZGlzYyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBgTkVUX1NDSF9URVFMYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgbW9kaWZpY2F0aW9ucyBoYXZlIGJlZW4gbWFkZSB0byBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIFRFUUwgcWRpc2MgaW1wbGVtZW50YXRpb246IGB0ZXFsX2RlcXVldWVgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfcWRpc2NfaW5pdGAsIGB0ZXFsX21hc3Rlcl94bWl0YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAuCgpXaGVuIGNvbnNpZGVyaW5nIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbiwgSSB0aGluayBJJiMzOTtsbCBpbmNsdWRlIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAgd2l0aGluIG15IGFuYWx5c2lzLiBUaGVzZSBzZWVtIGxpa2UgZ29vZCBjYW5kaWRhdGVzIGZvciBtb3JlIGluLWRlcHRoIHJldmlldy4gSG93ZXZlciwgSSYjMzk7bSBnb2luZyB0byBleGNsdWRlIGB0ZXFsX2RlcXVldWVgIGFuZCBgdGVxbF9tYXN0ZXJfeG1pdGAgZnJvbSBpbW1lZGlhdGUgZm9jdXMsIGFzIHRoZXkgYXJlIGxpa2VseSBwZXJmb3JtYW5jZS1jcml0aWNhbCAmIzM0O2hvdCBwYXRoJiMzNDsgZnVuY3Rpb25zLCBhbmQgbXkgbWFpbiBjb25jZXJuIGlzIHRoZSBjb25maWd1cmF0aW9uLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNpbmNlIHRoZSBjb2RlIHJlc2lkZXMgaW4gYG5ldC9zY2hlZC9zY2hfdGVxbC5jYCwgYW5kIGl0JiMzOTtzIGEgcWRpc2MsIGBORVRfU0NIX1RFUUxgIGlzIHRoZSBtYWluIG9uZSBJIGV4cGVjdC4gQnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLgoKVG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVhZCB0aHJvdWdoIGB0ZXFsX3FkaXNjX2luaXRgIHRvIHNlZSBpZiBpdCBtYWtlcyB1c2Ugb2YgYW55IG90aGVyIGNvbmZpZ3MuIEl0IGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gYmUgZXh0cmEgZGlsaWdlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RlcWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0XHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgdHhxLCBOVUxMKTtcbiAxODE6XHR9XG4gMTgyOlx0XG4gMTgzOlx0c3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiAxODQ6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4gMTg1Olx0e1xuIDE4NjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xuIDE4NzpcdFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC1cdTAwM2VvcHM7XG4gMTg4Olx0XHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xuIDE4OTpcdFx0c3RydWN0IFFkaXNjICpmaXJzdDtcbiAxOTA6XHRcbiAxOTE6XHRcdGlmIChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFx1MDAzZSBtLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pXG4gMTkyOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDE5MzpcdFxuIDE5NDpcdFx0aWYgKG0tXHUwMDNlZGV2ID09IGRldilcbiAxOTU6XHRcdFx0cmV0dXJuIC1FTE9PUDtcbiAxOTY6XHRcbiAxOTc6XHRcdGlmIChzY2gtXHUwMDNlcGFyZW50ICE9IFRDX0hfUk9PVCkge1xuIDE5ODpcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDt0ZXFsIGNhbiBvbmx5IGJlIHVzZWQgYXMgcm9vdFwmIzM0Oyk7XG4gMTk5Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiAyMDA6XHRcdH1cbiAyMDE6XHRcbiAyMDI6XHRcdHEtXHUwMDNlbSA9IG07XG4gMjAzOlx0XG4gMjA0Olx0XHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnEtXHUwMDNlcSk7XG4gMjA1Olx0XG4gMjA2Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gMjA3Olx0XHRmaXJzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobS1cdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4gMjA4Olx0XHRpZiAoZmlyc3QpIHtcbiAyMDk6XHRcdFx0aWYgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApIHtcbiAyMTA6XHRcdFx0XHRpZiAoKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQgXHUwMDI2XHUwMDI2XG4gMjExOlx0XHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSkgfHxcbiAyMTI6XHRcdFx0XHQgICAgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQlJPQURDQVNUIFx1MDAyNlx1MDAyNlxuIDIxMzpcdFx0XHRcdCAgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9CUk9BRENBU1QpKSB8fFxuIDIxNDpcdFx0XHRcdCAgICAobS1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9NVUxUSUNBU1QgXHUwMDI2XHUwMDI2XG4gMjE1Olx0XHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX01VTFRJQ0FTVCkpIHx8XG4gMjE2Olx0XHRcdFx0ICAgIGRldi1cdTAwM2VtdHUgXHUwMDNjIG0tXHUwMDNlZGV2LVx1MDAzZW10dSkge1xuIDIxNzpcdFx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gMjE4Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyMTk6XHRcdFx0XHR9XG4gMjIwOlx0XHRcdH0gZWxzZSB7XG4gMjIxOlx0XHRcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzXHUwMDI2SUZGX1BPSU5UT1BPSU5UKSlcbiAyMjI6XHRcdFx0XHRcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcbiAyMjM6XHRcdFx0XHRpZiAoIShkZXYtXHUwMDNlZmxhZ3NcdTAwMjZJRkZfQlJPQURDQVNUKSlcbiAyMjQ6XHRcdFx0XHRcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklGRl9CUk9BRENBU1Q7XG4gMjI1Olx0XHRcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzXHUwMDI2SUZGX01VTFRJQ0FTVCkpXG4gMjI2Olx0XHRcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjY9IH5JRkZfTVVMVElDQVNUO1xuIDIyNzpcdFx0XHRcdGlmIChkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpXG4gMjI4Olx0XHRcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIDIyOTpcdFx0XHR9XG4gMjMwOlx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZW5leHQsXG4gMjMxOlx0XHRcdFx0XHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUoZmlyc3QpLFxuIDIzMjpcdFx0XHRcdFx0XHRcdFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbiAyMzM6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKE5FWFRfU0xBVkUoZmlyc3QpLCBzY2gpO1xuIDIzNDpcdFx0fSBlbHNlIHtcbiAyMzU6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXHUwMDNlbmV4dCwgc2NoKTtcbiAyMzY6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuIDIzNzpcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIDIzODpcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSyl8KGRldi1cdTAwM2VmbGFnc1x1MDAyNkZNQVNLKTtcbiAyMzk6XHRcdH1cbiAyNDA6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIDI0MTpcdFx0cmV0dXJuIDA7XG4gMjQyOlx0fVxuIDI0MzpcdFxuIDI0NDpcdFxuIDI0NTpcdHN0YXRpYyBpbnRcbiAyNDY6XHRfX3RlcWxfcmVzb2x2ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3JlcyxcbiAyNDc6XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEsXG4gMjQ4Olx0XHQgICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxuIDI0OTpcdHtcbiAyNTA6XHRcdHN0cnVjdCBuZWlnaGJvdXIgKm47XG4gMjUxOlx0XHRpbnQgZXJyID0gMDtcbiAyNTI6XHRcbiAyNTM6XHRcdG4gPSBkc3RfbmVpZ2hfbG9va3VwX3NrYihkc3QsIHNrYik7XG4gMjU0Olx0XHRpZiAoIW4pXG4gMjU1Olx0XHRcdHJldHVybiAtRU5PRU5UO1xuIDI1NjpcdFxuIDI1NzpcdFx0aWYgKGRzdC1cdTAwM2VkZXYgIT0gZGV2KSB7XG4gMjU4Olx0XHRcdHN0cnVjdCBuZWlnaGJvdXIgKm1uO1xuIDI1OTpcdFxuIDI2MDpcdFx0XHRtbiA9IF9fbmVpZ2hfbG9va3VwX2Vycm5vKG4tXHUwMDNldGJsLCBuLVx1MDAzZXByaW1hcnlfa2V5LCBkZXYpO1xuIDI2MTpcdFx0XHRuZWlnaF9yZWxlYXNlKG4pO1xuIDI2MjpcdFx0XHRpZiAoSVNfRVJSKG1uKSlcbiAyNjM6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihtbik7XG4gMjY0Olx0XHRcdG4gPSBtbjtcbiAyNjU6XHRcdH1cbiAyNjY6XHRcbiAyNjc6XHRcdGlmIChuZWlnaF9ldmVudF9zZW5kKG4sIHNrYl9yZXMpID09IDApIHtcbiAyNjg6XHRcdFx0aW50IGVycjtcbiAyNjk6XHRcdFx0Y2hhciBoYWRkcltNQVhfQUREUl9MRU5dO1xuIDI3MDpcdFxuIDI3MTpcdFx0XHRuZWlnaF9oYV9zbmFwc2hvdChoYWRkciwgbiwgZGV2KTtcbiAyNzI6XHRcdFx0ZXJyID0gZGV2X2hhcmRfaGVhZGVyKHNrYiwgZGV2LCBudG9ocyhza2JfcHJvdG9jb2woc2tiLCBmYWxzZSkpLFxuIDI3MzpcdFx0XHRcdFx0ICAgICAgaGFkZHIsIE5VTEwsIHNrYi1cdTAwM2VsZW4pO1xuIDI3NDpcdFxuIDI3NTpcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIDI3NjpcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gMjc3Olx0XHR9IGVsc2Uge1xuIDI3ODpcdFx0XHRlcnIgPSAoc2tiX3JlcyA9PSBOVUxMKSA/IC1FQUdBSU4gOiAxO1xuIDI3OTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTk2CgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSQ1UgUHJvdGVjdGlvbiBmb3IgdGhlIFRFUUwgU2xhdmUgTGlzdCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGFkZGluZyBSZWFkLUNvcHktVXBkYXRlIChSQ1UpIHByb3RlY3Rpb24gdG8gdGhlIGBzbGF2ZXNgIGxpc3Qgd2l0aGluIHRoZSBgdGVxbF9tYXN0ZXJgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyBhIHNvbGlkIG1vdmUsIGFkZHJlc3NpbmcgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyB0aGF0IEkmIzM5O20gZmFtaWxpYXIgd2l0aCBpbiBuZXR3b3JrIHNjaGVkdWxpbmcgZGlzY2lwbGluZXMuIEkgc2VlIGl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgdGVxbF9kZXF1ZXVlYCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9tYXN0ZXJfeG1pdGAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLiBUaG9zZSBhcmUgYWxsIGNlbnRyYWwgdG8gdGhlIFRFUUwgKFRyYWZmaWMgRXF1YWxpemF0aW9uKSBpbXBsZW1lbnRhdGlvbi4gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX1NDSF9URVFMYCwgY29uZmlybXMgdGhlIHRhcmdldC4KCk15IG1haW4gYXJlYXMgb2YgY29uY2VybiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFyZSBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLiBUaGVzZSBhcmUgcHJpbWUgbG9jYXRpb25zIGZvciByYWNlIGNvbmRpdGlvbnMgd2hlbiBkZWFsaW5nIHdpdGggbGlzdHMgb2YgZGV2aWNlcy4gRW5zdXJpbmcgdGhhdCB1cGRhdGVzIGFuZCByZWFkcyBvZiB0aGUgYHNsYXZlc2AgbGlzdCBhcmUgUkNVLXByb3RlY3RlZCBpcyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcywgcGFydGljdWxhcmx5IGluIGEgbXVsdGktdGhyZWFkZWQgbmV0d29yayBzdGFjayBlbnZpcm9ubWVudC4KCkFscmlnaHQsIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSBpbXByb3ZlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTozMi4xMzAyOTU2MThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDEyNDM0MjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RFUUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZXFsX3FkaXNjX2luaXRcIixcbiAgICBcInRlcWxfZGVzdHJveVwiLFxuICAgIFwidGVxbF9tYXN0ZXJfb3BlblwiLFxuICAgIFwidGVxbF9tYXN0ZXJfbXR1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjMyLjEzMDMwMzM0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwMTI5MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzkyZGIwZjczNDg0NTQzOTNmMmVjMmM3MmFmYmU5ODg2YzZiMjNkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1biAyOCAxMTozNTozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RlcWwuYyBiL25ldC9zY2hlZC9zY2hfdGVxbC5jXFxuaW5kZXggZTdiYmM5ZTUxNzRkMGUuLjI0YmEzMWY4YzgyODU1IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGVxbC5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF90ZXFsLmNcXG5AQCAtNTIsNyArNTIsOCBAQFxcbiBzdHJ1Y3QgdGVxbF9tYXN0ZXIge1xcbiBcXHRzdHJ1Y3QgUWRpc2Nfb3BzIHFvcHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLVxcdHN0cnVjdCBRZGlzYyAqc2xhdmVzO1xcbitcXHRzdHJ1Y3QgUWRpc2MgX19yY3VcXHQqc2xhdmVzO1xcbitcXHRzcGlubG9ja190XFx0XFx0c2xhdmVzX2xvY2s7IC8qIHNlcmlhbGl6ZXMgd3JpdGVzIHRvIC1cXHUwMDNlc2xhdmVzICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbWFzdGVyX2xpc3Q7XFxuIFxcdHVuc2lnbmVkIGxvbmdcXHR0eF9ieXRlcztcXG4gXFx0dW5zaWduZWQgbG9uZ1xcdHR4X3BhY2tldHM7XFxuQEAgLTYxLDcgKzYyLDcgQEAgc3RydWN0IHRlcWxfbWFzdGVyIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEge1xcbi1cXHRzdHJ1Y3QgUWRpc2MgKm5leHQ7XFxuK1xcdHN0cnVjdCBRZGlzYyBfX3JjdVxcdCpuZXh0O1xcbiBcXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm07XFxuIFxcdHN0cnVjdCBza19idWZmX2hlYWQgcTtcXG4gfTtcXG5AQCAtMTAxLDcgKzEwMiw5IEBAIHRlcWxfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4gXFx0aWYgKHNrYiA9PSBOVUxMKSB7XFxuIFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptID0gcWRpc2NfZGV2KHEpO1xcbiBcXHRcXHRpZiAobSkge1xcbi1cXHRcXHRcXHRkYXQtXFx1MDAzZW0tXFx1MDAzZXNsYXZlcyA9IHNjaDtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkYXQtXFx1MDAzZW0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRhdC1cXHUwMDNlbS1cXHUwMDNlc2xhdmVzLCBzY2gpO1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGF0LVxcdTAwM2VtLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIFxcdFxcdFxcdG5ldGlmX3dha2VfcXVldWUobSk7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG5AQCAtMTMyLDM0ICsxMzUsNDkgQEAgdGVxbF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbiBcXHRzdHJ1Y3QgUWRpc2MgKnEsICpwcmV2O1xcbiBcXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpkYXQgPSBxZGlzY19wcml2KHNjaCk7XFxuIFxcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gZGF0LVxcdTAwM2VtO1xcbitcXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEgPSBOVUxMO1xcbitcXHRib29sIHJlc2V0X21hc3Rlcl9xdWV1ZSA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKCFtYXN0ZXIpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHByZXYgPSBtYXN0ZXItXFx1MDAzZXNsYXZlcztcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFx0cHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVxcdTAwM2VzbGF2ZXMsXFxuK1xcdFxcdFxcdFxcdFxcdCBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNm1hc3Rlci1cXHUwMDNlc2xhdmVzX2xvY2spKTtcXG4gXFx0aWYgKHByZXYpIHtcXG4gXFx0XFx0ZG8ge1xcbi1cXHRcXHRcXHRxID0gTkVYVF9TTEFWRShwcmV2KTtcXG4tXFx0XFx0XFx0aWYgKHEgPT0gc2NoKSB7XFxuLVxcdFxcdFxcdFxcdE5FWFRfU0xBVkUocHJldikgPSBORVhUX1NMQVZFKHEpO1xcbi1cXHRcXHRcXHRcXHRpZiAocSA9PSBtYXN0ZXItXFx1MDAzZXNsYXZlcykge1xcbi1cXHRcXHRcXHRcXHRcXHRtYXN0ZXItXFx1MDAzZXNsYXZlcyA9IE5FWFRfU0xBVkUocSk7XFxuLVxcdFxcdFxcdFxcdFxcdGlmIChxID09IG1hc3Rlci1cXHUwMDNlc2xhdmVzKSB7XFxuLVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTtcXG4tXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobWFzdGVyLVxcdTAwM2VkZXYsIDApO1xcbi1cXHRcXHRcXHRcXHRcXHRcXHRtYXN0ZXItXFx1MDAzZXNsYXZlcyA9IE5VTEw7XFxuLVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVxcdTAwM2VkZXYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHR4cSwgTlVMTCk7XFxuLVxcdFxcdFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRhdC1cXHUwMDNlcSk7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRzdHJ1Y3QgUWRpc2MgKmhlYWQsICpuZXh0O1xcbitcXG4rXFx0XFx0XFx0cSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShwcmV2KSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSk7XFxuK1xcdFxcdFxcdGlmIChxICE9IHNjaCkge1xcbitcXHRcXHRcXHRcXHRwcmV2ID0gcTtcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdH0gd2hpbGUgKChwcmV2ID0gcSkgIT0gbWFzdGVyLVxcdTAwM2VzbGF2ZXMpO1xcbitcXHRcXHRcXHRuZXh0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSk7XFxuK1xcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKHByZXYpLCBuZXh0KTtcXG4rXFxuK1xcdFxcdFxcdGhlYWQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cXHUwMDNlc2xhdmVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSk7XFxuK1xcdFxcdFxcdGlmIChxID09IGhlYWQpIHtcXG4rXFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLCBuZXh0KTtcXG4rXFx0XFx0XFx0XFx0aWYgKHEgPT0gbmV4dCkge1xcbitcXHRcXHRcXHRcXHRcXHR0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci1cXHUwMDNlZGV2LCAwKTtcXG4rXFx0XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0cmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZGF0LVxcdTAwM2VxKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH0gd2hpbGUgKHByZXYgIT0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXFx1MDAzZXNsYXZlcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbiBcXHR9XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFxuK1xcdGlmIChyZXNldF9tYXN0ZXJfcXVldWUpXFxuK1xcdFxcdGRldl9yZXNldF9xdWV1ZShtYXN0ZXItXFx1MDAzZWRldiwgdHhxLCBOVUxMKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5AQCAtMTY4LDYgKzE4Niw3IEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4gXFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC1cXHUwMDNlb3BzO1xcbiBcXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbitcXHRzdHJ1Y3QgUWRpc2MgKmZpcnN0O1xcbiBcXG4gXFx0aWYgKGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFxcdTAwM2UgbS1cXHUwMDNlZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0xODQsNyArMjAzLDkgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFxuIFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnEtXFx1MDAzZXEpO1xcbiBcXG4tXFx0aWYgKG0tXFx1MDAzZXNsYXZlcykge1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFx0Zmlyc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG0tXFx1MDAzZXNsYXZlcywgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtLVxcdTAwM2VzbGF2ZXNfbG9jaykpO1xcbitcXHRpZiAoZmlyc3QpIHtcXG4gXFx0XFx0aWYgKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gXFx0XFx0XFx0aWYgKChtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1BPSU5UT1BPSU5UIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICAgIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSkgfHxcXG5AQCAtMTkyLDggKzIxMywxMCBAQCBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRcXHQgICAgICEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9CUk9BRENBU1QpKSB8fFxcbiBcXHRcXHRcXHQgICAgKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTVVMVElDQVNUIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICAgIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX01VTFRJQ0FTVCkpIHx8XFxuLVxcdFxcdFxcdCAgICBkZXYtXFx1MDAzZW10dSBcXHUwMDNjIG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1KVxcbitcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VtdHUgXFx1MDAzYyBtLVxcdTAwM2VkZXYtXFx1MDAzZW10dSkge1xcbitcXHRcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRpZiAoIShkZXYtXFx1MDAzZWZsYWdzXFx1MDAyNklGRl9QT0lOVE9QT0lOVCkpXFxuIFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcXG5AQCAtMjA0LDE0ICsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlbXR1IFxcdTAwM2MgbS1cXHUwMDNlZGV2LVxcdTAwM2VtdHUpXFxuIFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gZGV2LVxcdTAwM2VtdHU7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cS1cXHUwMDNlbmV4dCA9IE5FWFRfU0xBVkUobS1cXHUwMDNlc2xhdmVzKTtcXG4tXFx0XFx0TkVYVF9TTEFWRShtLVxcdTAwM2VzbGF2ZXMpID0gc2NoO1xcbitcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cXHUwMDNlbmV4dCxcXG4rXFx0XFx0XFx0XFx0ICAgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKGZpcnN0KSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbitcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoTkVYVF9TTEFWRShmaXJzdCksIHNjaCk7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHEtXFx1MDAzZW5leHQgPSBzY2g7XFxuLVxcdFxcdG0tXFx1MDAzZXNsYXZlcyA9IHNjaDtcXG4rXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXFx1MDAzZW5leHQsIHNjaCk7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihtLVxcdTAwM2VzbGF2ZXMsIHNjaCk7XFxuIFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gZGV2LVxcdTAwM2VtdHU7XFxuIFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgPSAobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFnc1xcdTAwMjZ+Rk1BU0spfChkZXYtXFx1MDAzZWZsYWdzXFx1MDAyNkZNQVNLKTtcXG4gXFx0fVxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtMjg1LDcgKzMxMSw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGludCBzdWJxID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2JfcmVzID0gTlVMTDtcXG4gXFxuLVxcdHN0YXJ0ID0gbWFzdGVyLVxcdTAwM2VzbGF2ZXM7XFxuK1xcdHJjdV9yZWFkX2xvY2tfYmgoKTtcXG4rXFxuK1xcdHN0YXJ0ID0gcmN1X2RlcmVmZXJlbmNlX2JoKG1hc3Rlci1cXHUwMDNlc2xhdmVzKTtcXG4gXFxuIHJlc3RhcnQ6XFxuIFxcdG5vcmVzID0gMDtcXG5AQCAtMzE3LDEwICszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0XFx0ICAgIG5ldGRldl9zdGFydF94bWl0KHNrYiwgc2xhdmUsIHNsYXZlX3R4cSwgZmFsc2UpID09XFxuIFxcdFxcdFxcdFxcdCAgICBORVRERVZfVFhfT0spIHtcXG4gXFx0XFx0XFx0XFx0XFx0X19uZXRpZl90eF91bmxvY2soc2xhdmVfdHhxKTtcXG4tXFx0XFx0XFx0XFx0XFx0bWFzdGVyLVxcdTAwM2VzbGF2ZXMgPSBORVhUX1NMQVZFKHEpO1xcbitcXHRcXHRcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1hc3Rlci1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbitcXHRcXHRcXHRcXHRcXHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXFx1MDAzZXNsYXZlcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcXG4rXFx0XFx0XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbitcXHRcXHRcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bWFzdGVyLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIFxcdFxcdFxcdFxcdFxcdG5ldGlmX3dha2VfcXVldWUoZGV2KTtcXG4gXFx0XFx0XFx0XFx0XFx0bWFzdGVyLVxcdTAwM2V0eF9wYWNrZXRzKys7XFxuIFxcdFxcdFxcdFxcdFxcdG1hc3Rlci1cXHUwMDNldHhfYnl0ZXMgKz0gbGVuZ3RoO1xcbitcXHRcXHRcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcXG4gXFx0XFx0XFx0XFx0XFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFx0XFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRcXHRfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpO1xcbkBAIC0zMjksMTQgKzM2NCwyMSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRcXHRidXN5ID0gMTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgMTpcXG4tXFx0XFx0XFx0bWFzdGVyLVxcdTAwM2VzbGF2ZXMgPSBORVhUX1NMQVZFKHEpO1xcbitcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1hc3Rlci1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbitcXHRcXHRcXHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXFx1MDAzZXNsYXZlcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcXG4rXFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bWFzdGVyLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuK1xcdFxcdFxcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xcbiBcXHRcXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiBcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHRub3JlcyA9IDE7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcdFxcdF9fc2tiX3B1bGwoc2tiLCBza2JfbmV0d29ya19vZmZzZXQoc2tiKSk7XFxuLVxcdH0gd2hpbGUgKChxID0gTkVYVF9TTEFWRShxKSkgIT0gc3RhcnQpO1xcbitcXHR9IHdoaWxlICgocSA9IHJjdV9kZXJlZmVyZW5jZV9iaChORVhUX1NMQVZFKHEpKSkgIT0gc3RhcnQpO1xcbiBcXG4gXFx0aWYgKG5vcmVzIFxcdTAwMjZcXHUwMDI2IHNrYl9yZXMgPT0gTlVMTCkge1xcbiBcXHRcXHRza2JfcmVzID0gc2tiO1xcbkBAIC0zNDUsMjkgKzM4NywzMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gXFx0aWYgKGJ1c3kpIHtcXG4gXFx0XFx0bmV0aWZfc3RvcF9xdWV1ZShkZXYpO1xcbitcXHRcXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcXG4gXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xcbiBcXHR9XFxuIFxcdG1hc3Rlci1cXHUwMDNldHhfZXJyb3JzKys7XFxuIFxcbiBkcm9wOlxcbiBcXHRtYXN0ZXItXFx1MDAzZXR4X2Ryb3BwZWQrKztcXG4rXFx0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XFxuIFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gXFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gfVxcbiBcXG4gc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0c3RydWN0IFFkaXNjICpxO1xcbitcXHRzdHJ1Y3QgUWRpc2MgKnEsICpmaXJzdDtcXG4gXFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0aW50IG10dSA9IDB4RkZGRTtcXG4gXFx0dW5zaWduZWQgaW50IGZsYWdzID0gSUZGX05PQVJQIHwgSUZGX01VTFRJQ0FTVDtcXG4gXFxuLVxcdGlmIChtLVxcdTAwM2VzbGF2ZXMgPT0gTlVMTClcXG4rXFx0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXFx1MDAzZXNsYXZlcyk7XFxuK1xcdGlmICghZmlyc3QpXFxuIFxcdFxcdHJldHVybiAtRVVOQVRDSDtcXG4gXFxuIFxcdGZsYWdzID0gRk1BU0s7XFxuIFxcbi1cXHRxID0gbS1cXHUwMDNlc2xhdmVzO1xcbitcXHRxID0gZmlyc3Q7XFxuIFxcdGRvIHtcXG4gXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlID0gcWRpc2NfZGV2KHEpO1xcbiBcXG5AQCAtMzg5LDcgKzQzNCw3IEBAIHN0YXRpYyBpbnQgdGVxbF9tYXN0ZXJfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRmbGFncyBcXHUwMDI2PSB+SUZGX0JST0FEQ0FTVDtcXG4gXFx0XFx0aWYgKCEoc2xhdmUtXFx1MDAzZWZsYWdzXFx1MDAyNklGRl9NVUxUSUNBU1QpKVxcbiBcXHRcXHRcXHRmbGFncyBcXHUwMDI2PSB+SUZGX01VTFRJQ0FTVDtcXG4tXFx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVxcdTAwM2VzbGF2ZXMpO1xcbitcXHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcXG4gXFxuIFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gbXR1O1xcbiBcXHRtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzID0gKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3NcXHUwMDI2fkZNQVNLKSB8IGZsYWdzO1xcbkBAIC00MTcsMTQgKzQ2MiwxNSBAQCBzdGF0aWMgdm9pZCB0ZXFsX21hc3Rlcl9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIHN0YXRpYyBpbnQgdGVxbF9tYXN0ZXJfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdHN0cnVjdCBRZGlzYyAqcTtcXG4rXFx0c3RydWN0IFFkaXNjICpxLCAqZmlyc3Q7XFxuIFxcbi1cXHRxID0gbS1cXHUwMDNlc2xhdmVzO1xcbitcXHRmaXJzdCA9IHJ0bmxfZGVyZWZlcmVuY2UobS1cXHUwMDNlc2xhdmVzKTtcXG4rXFx0cSA9IGZpcnN0O1xcbiBcXHRpZiAocSkge1xcbiBcXHRcXHRkbyB7XFxuIFxcdFxcdFxcdGlmIChuZXdfbXR1IFxcdTAwM2UgcWRpc2NfZGV2KHEpLVxcdTAwM2VtdHUpXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHRcXHR9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IG0tXFx1MDAzZXNsYXZlcyk7XFxuK1xcdFxcdH0gd2hpbGUgKChxID0gcnRubF9kZXJlZmVyZW5jZShORVhUX1NMQVZFKHEpKSkgIT0gZmlyc3QpO1xcbiBcXHR9XFxuIFxcbiBcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlbXR1LCBuZXdfbXR1KTtcXG5AQCAtNDQ0LDYgKzQ5MCw3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCB0ZXFsX21hc3Rlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm1hc3RlciA9IG5ldGRldl9wcml2KGRldik7XFxuIFxcdHN0cnVjdCBRZGlzY19vcHMgKm9wcyA9IFxcdTAwMjZtYXN0ZXItXFx1MDAzZXFvcHM7XFxuIFxcbitcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2bWFzdGVyLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIFxcdG1hc3Rlci1cXHUwMDNlZGV2XFx0PSBkZXY7XFxuIFxcdG9wcy1cXHUwMDNlcHJpdl9zaXplICA9IHNpemVvZihzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjMyLjUwMTQwNDM4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM3NTMyMTc0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSF9URVFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGVxbF9xZGlzY19pbml0XCIsXG4gICAgXCJ0ZXFsX2Rlc3Ryb3lcIixcbiAgICBcInRlcWxfbWFzdGVyX29wZW5cIixcbiAgICBcInRlcWxfbWFzdGVyX210dVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgUkNVIHByb3RlY3Rpb24gYW5kIGEgc3BpbmxvY2sgdG8gdGhlIHNsYXZlcyBsaXN0IGluIHRoZSBURVFMIChUcnVlIExpbmsgRXF1YWxpemVyKSBxZGlzYyB0byBmaXggY29uY3VycmVuY3kgaXNzdWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM5MmRiMGY3MzQ4NDU0MzkzZjJlYzJjNzJhZmJlOTg4NmM2YjIzZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1biAyOCAxMTozNTozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGVxbC5jIGIvbmV0L3NjaGVkL3NjaF90ZXFsLmNcbmluZGV4IGU3YmJjOWU1MTc0ZDBlLi4yNGJhMzFmOGM4Mjg1NSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGVxbC5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RlcWwuY1xuQEAgLTUyLDcgKzUyLDggQEBcbiBzdHJ1Y3QgdGVxbF9tYXN0ZXIge1xuIFx0c3RydWN0IFFkaXNjX29wcyBxb3BzO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi1cdHN0cnVjdCBRZGlzYyAqc2xhdmVzO1xuK1x0c3RydWN0IFFkaXNjIF9fcmN1XHQqc2xhdmVzO1xuK1x0c3BpbmxvY2tfdFx0XHRzbGF2ZXNfbG9jazsgLyogc2VyaWFsaXplcyB3cml0ZXMgdG8gLVx1MDAzZXNsYXZlcyAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBtYXN0ZXJfbGlzdDtcbiBcdHVuc2lnbmVkIGxvbmdcdHR4X2J5dGVzO1xuIFx0dW5zaWduZWQgbG9uZ1x0dHhfcGFja2V0cztcbkBAIC02MSw3ICs2Miw3IEBAIHN0cnVjdCB0ZXFsX21hc3RlciB7XG4gfTtcbiBcbiBzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhIHtcbi1cdHN0cnVjdCBRZGlzYyAqbmV4dDtcbitcdHN0cnVjdCBRZGlzYyBfX3JjdVx0Km5leHQ7XG4gXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm07XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHE7XG4gfTtcbkBAIC0xMDEsNyArMTAyLDkgQEAgdGVxbF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxuIFx0aWYgKHNrYiA9PSBOVUxMKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICptID0gcWRpc2NfZGV2KHEpO1xuIFx0XHRpZiAobSkge1xuLVx0XHRcdGRhdC1cdTAwM2VtLVx1MDAzZXNsYXZlcyA9IHNjaDtcbitcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzX2xvY2spO1xuK1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkYXQtXHUwMDNlbS1cdTAwM2VzbGF2ZXMsIHNjaCk7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0XHRcdG5ldGlmX3dha2VfcXVldWUobSk7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG5AQCAtMTMyLDM0ICsxMzUsNDkgQEAgdGVxbF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuIFx0c3RydWN0IFFkaXNjICpxLCAqcHJldjtcbiBcdHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKmRhdCA9IHFkaXNjX3ByaXYoc2NoKTtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gZGF0LVx1MDAzZW07XG4rXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEgPSBOVUxMO1xuK1x0Ym9vbCByZXNldF9tYXN0ZXJfcXVldWUgPSBmYWxzZTtcbiBcbiBcdGlmICghbWFzdGVyKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRwcmV2ID0gbWFzdGVyLVx1MDAzZXNsYXZlcztcbitcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuK1x0cHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbitcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbiBcdGlmIChwcmV2KSB7XG4gXHRcdGRvIHtcbi1cdFx0XHRxID0gTkVYVF9TTEFWRShwcmV2KTtcbi1cdFx0XHRpZiAocSA9PSBzY2gpIHtcbi1cdFx0XHRcdE5FWFRfU0xBVkUocHJldikgPSBORVhUX1NMQVZFKHEpO1xuLVx0XHRcdFx0aWYgKHEgPT0gbWFzdGVyLVx1MDAzZXNsYXZlcykge1xuLVx0XHRcdFx0XHRtYXN0ZXItXHUwMDNlc2xhdmVzID0gTkVYVF9TTEFWRShxKTtcbi1cdFx0XHRcdFx0aWYgKHEgPT0gbWFzdGVyLVx1MDAzZXNsYXZlcykge1xuLVx0XHRcdFx0XHRcdHN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTtcbi1cbi1cdFx0XHRcdFx0XHR0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci1cdTAwM2VkZXYsIDApO1xuLVx0XHRcdFx0XHRcdG1hc3Rlci1cdTAwM2VzbGF2ZXMgPSBOVUxMO1xuLVxuLVx0XHRcdFx0XHRcdGRldl9yZXNldF9xdWV1ZShtYXN0ZXItXHUwMDNlZGV2LFxuLVx0XHRcdFx0XHRcdFx0XHR0eHEsIE5VTEwpO1xuLVx0XHRcdFx0XHR9XG4tXHRcdFx0XHR9XG4tXHRcdFx0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZGF0LVx1MDAzZXEpO1xuLVx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0c3RydWN0IFFkaXNjICpoZWFkLCAqbmV4dDtcbitcbitcdFx0XHRxID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHByZXYpLFxuK1x0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbitcdFx0XHRpZiAocSAhPSBzY2gpIHtcbitcdFx0XHRcdHByZXYgPSBxO1xuK1x0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuIFxuLVx0XHR9IHdoaWxlICgocHJldiA9IHEpICE9IG1hc3Rlci1cdTAwM2VzbGF2ZXMpO1xuK1x0XHRcdG5leHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXG4rXHRcdFx0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpO1xuK1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKHByZXYpLCBuZXh0KTtcbitcbitcdFx0XHRoZWFkID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXHUwMDNlc2xhdmVzLFxuK1x0XHRcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbitcdFx0XHRpZiAocSA9PSBoZWFkKSB7XG4rXHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLVx1MDAzZXNsYXZlcywgbmV4dCk7XG4rXHRcdFx0XHRpZiAocSA9PSBuZXh0KSB7XG4rXHRcdFx0XHRcdHR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgMCk7XG4rXHRcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLCBOVUxMKTtcbitcdFx0XHRcdFx0cmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTtcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4rXHRcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRhdC1cdTAwM2VxKTtcbitcdFx0XHRicmVhaztcbitcdFx0fSB3aGlsZSAocHJldiAhPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4rXHRcdFx0XHRcdFx0XHQgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkpO1xuIFx0fVxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKTtcbitcbitcdGlmIChyZXNldF9tYXN0ZXJfcXVldWUpXG4rXHRcdGRldl9yZXNldF9xdWV1ZShtYXN0ZXItXHUwMDNlZGV2LCB0eHEsIE5VTEwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuQEAgLTE2OCw2ICsxODYsNyBAQCBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC1cdTAwM2VvcHM7XG4gXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xuK1x0c3RydWN0IFFkaXNjICpmaXJzdDtcbiBcbiBcdGlmIChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFx1MDAzZSBtLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE4NCw3ICsyMDMsOSBAQCBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFxuIFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZxLVx1MDAzZXEpO1xuIFxuLVx0aWYgKG0tXHUwMDNlc2xhdmVzKSB7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4rXHRmaXJzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobS1cdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4rXHRpZiAoZmlyc3QpIHtcbiBcdFx0aWYgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApIHtcbiBcdFx0XHRpZiAoKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSkgfHxcbkBAIC0xOTIsOCArMjEzLDEwIEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0JST0FEQ0FTVCkpIHx8XG4gXHRcdFx0ICAgIChtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX01VTFRJQ0FTVCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgICEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTVVMVElDQVNUKSkgfHxcbi1cdFx0XHQgICAgZGV2LVx1MDAzZW10dSBcdTAwM2MgbS1cdTAwM2VkZXYtXHUwMDNlbXR1KVxuK1x0XHRcdCAgICBkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpIHtcbitcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0fVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGlmICghKGRldi1cdTAwM2VmbGFnc1x1MDAyNklGRl9QT0lOVE9QT0lOVCkpXG4gXHRcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjY9IH5JRkZfUE9JTlRPUE9JTlQ7XG5AQCAtMjA0LDE0ICsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2MgbS1cdTAwM2VkZXYtXHUwMDNlbXR1KVxuIFx0XHRcdFx0bS1cdTAwM2VkZXYtXHUwMDNlbXR1ID0gZGV2LVx1MDAzZW10dTtcbiBcdFx0fVxuLVx0XHRxLVx1MDAzZW5leHQgPSBORVhUX1NMQVZFKG0tXHUwMDNlc2xhdmVzKTtcbi1cdFx0TkVYVF9TTEFWRShtLVx1MDAzZXNsYXZlcykgPSBzY2g7XG4rXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZW5leHQsXG4rXHRcdFx0XHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUoZmlyc3QpLFxuK1x0XHRcdFx0XHRcdFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKE5FWFRfU0xBVkUoZmlyc3QpLCBzY2gpO1xuIFx0fSBlbHNlIHtcbi1cdFx0cS1cdTAwM2VuZXh0ID0gc2NoO1xuLVx0XHRtLVx1MDAzZXNsYXZlcyA9IHNjaDtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXHUwMDNlbmV4dCwgc2NoKTtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSyl8KGRldi1cdTAwM2VmbGFnc1x1MDAyNkZNQVNLKTtcbiBcdH1cbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTI4NSw3ICszMTEsOSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aW50IHN1YnEgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiBcdHN0cnVjdCBza19idWZmICpza2JfcmVzID0gTlVMTDtcbiBcbi1cdHN0YXJ0ID0gbWFzdGVyLVx1MDAzZXNsYXZlcztcbitcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbitcbitcdHN0YXJ0ID0gcmN1X2RlcmVmZXJlbmNlX2JoKG1hc3Rlci1cdTAwM2VzbGF2ZXMpO1xuIFxuIHJlc3RhcnQ6XG4gXHRub3JlcyA9IDA7XG5AQCAtMzE3LDEwICszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdCAgICBuZXRkZXZfc3RhcnRfeG1pdChza2IsIHNsYXZlLCBzbGF2ZV90eHEsIGZhbHNlKSA9PVxuIFx0XHRcdFx0ICAgIE5FVERFVl9UWF9PSykge1xuIFx0XHRcdFx0XHRfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpO1xuLVx0XHRcdFx0XHRtYXN0ZXItXHUwMDNlc2xhdmVzID0gTkVYVF9TTEFWRShxKTtcbitcdFx0XHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4rXHRcdFx0XHRcdGlmIChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4rXHRcdFx0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSA9PSBxKVxuK1x0XHRcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLFxuK1x0XHRcdFx0XHRcdFx0XHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbitcdFx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKTtcbiBcdFx0XHRcdFx0bmV0aWZfd2FrZV9xdWV1ZShkZXYpO1xuIFx0XHRcdFx0XHRtYXN0ZXItXHUwMDNldHhfcGFja2V0cysrO1xuIFx0XHRcdFx0XHRtYXN0ZXItXHUwMDNldHhfYnl0ZXMgKz0gbGVuZ3RoO1xuK1x0XHRcdFx0XHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiBcdFx0XHRcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdF9fbmV0aWZfdHhfdW5sb2NrKHNsYXZlX3R4cSk7XG5AQCAtMzI5LDE0ICszNjQsMjEgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdGJ1c3kgPSAxO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDE6XG4tXHRcdFx0bWFzdGVyLVx1MDAzZXNsYXZlcyA9IE5FWFRfU0xBVkUocSk7XG4rXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4rXHRcdFx0aWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbitcdFx0XHRcdFx0XHQgICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcbitcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLFxuK1x0XHRcdFx0XHRcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShxKSxcbitcdFx0XHRcdFx0XHRcdFx0XHQgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSk7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKTtcbitcdFx0XHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiBcdFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdG5vcmVzID0gMTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0XHRfX3NrYl9wdWxsKHNrYiwgc2tiX25ldHdvcmtfb2Zmc2V0KHNrYikpO1xuLVx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBzdGFydCk7XG4rXHR9IHdoaWxlICgocSA9IHJjdV9kZXJlZmVyZW5jZV9iaChORVhUX1NMQVZFKHEpKSkgIT0gc3RhcnQpO1xuIFxuIFx0aWYgKG5vcmVzIFx1MDAyNlx1MDAyNiBza2JfcmVzID09IE5VTEwpIHtcbiBcdFx0c2tiX3JlcyA9IHNrYjtcbkBAIC0zNDUsMjkgKzM4NywzMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0aWYgKGJ1c3kpIHtcbiBcdFx0bmV0aWZfc3RvcF9xdWV1ZShkZXYpO1xuK1x0XHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuIFx0fVxuIFx0bWFzdGVyLVx1MDAzZXR4X2Vycm9ycysrO1xuIFxuIGRyb3A6XG4gXHRtYXN0ZXItXHUwMDNldHhfZHJvcHBlZCsrO1xuK1x0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XG4gXHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIH1cbiBcbiBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRzdHJ1Y3QgUWRpc2MgKnE7XG4rXHRzdHJ1Y3QgUWRpc2MgKnEsICpmaXJzdDtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7XG4gXHRpbnQgbXR1ID0gMHhGRkZFO1xuIFx0dW5zaWduZWQgaW50IGZsYWdzID0gSUZGX05PQVJQIHwgSUZGX01VTFRJQ0FTVDtcbiBcbi1cdGlmIChtLVx1MDAzZXNsYXZlcyA9PSBOVUxMKVxuK1x0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXHUwMDNlc2xhdmVzKTtcbitcdGlmICghZmlyc3QpXG4gXHRcdHJldHVybiAtRVVOQVRDSDtcbiBcbiBcdGZsYWdzID0gRk1BU0s7XG4gXG4tXHRxID0gbS1cdTAwM2VzbGF2ZXM7XG4rXHRxID0gZmlyc3Q7XG4gXHRkbyB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZSA9IHFkaXNjX2RldihxKTtcbiBcbkBAIC0zODksNyArNDM0LDcgQEAgc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0ZmxhZ3MgXHUwMDI2PSB+SUZGX0JST0FEQ0FTVDtcbiBcdFx0aWYgKCEoc2xhdmUtXHUwMDNlZmxhZ3NcdTAwMjZJRkZfTVVMVElDQVNUKSlcbiBcdFx0XHRmbGFncyBcdTAwMjY9IH5JRkZfTVVMVElDQVNUO1xuLVx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVx1MDAzZXNsYXZlcyk7XG4rXHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcbiBcbiBcdG0tXHUwMDNlZGV2LVx1MDAzZW10dSA9IG10dTtcbiBcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzID0gKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzXHUwMDI2fkZNQVNLKSB8IGZsYWdzO1xuQEAgLTQxNywxNCArNDYyLDE1IEBAIHN0YXRpYyB2b2lkIHRlcWxfbWFzdGVyX3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm0gPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0c3RydWN0IFFkaXNjICpxO1xuK1x0c3RydWN0IFFkaXNjICpxLCAqZmlyc3Q7XG4gXG4tXHRxID0gbS1cdTAwM2VzbGF2ZXM7XG4rXHRmaXJzdCA9IHJ0bmxfZGVyZWZlcmVuY2UobS1cdTAwM2VzbGF2ZXMpO1xuK1x0cSA9IGZpcnN0O1xuIFx0aWYgKHEpIHtcbiBcdFx0ZG8ge1xuIFx0XHRcdGlmIChuZXdfbXR1IFx1MDAzZSBxZGlzY19kZXYocSktXHUwMDNlbXR1KVxuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRcdH0gd2hpbGUgKChxID0gTkVYVF9TTEFWRShxKSkgIT0gbS1cdTAwM2VzbGF2ZXMpO1xuK1x0XHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcbiBcdH1cbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG5AQCAtNDQ0LDYgKzQ5MCw3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCB0ZXFsX21hc3Rlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IFFkaXNjX29wcyAqb3BzID0gXHUwMDI2bWFzdGVyLVx1MDAzZXFvcHM7XG4gXG4rXHRzcGluX2xvY2tfaW5pdChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0bWFzdGVyLVx1MDAzZWRldlx0PSBkZXY7XG4gXHRvcHMtXHUwMDNlcHJpdl9zaXplICA9IHNpemVvZihzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjMyLjUwMTQwODExMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDE2MzUzNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB0ZXFsLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbmV0L3NjaGVkL3NjaF90ZXFsLmNgLCBzcGVjaWZpY2FsbHkgdGhlIFRydWUgTGluayBFcXVhbGl6ZXIgcXVldWluZyBkaXNjaXBsaW5lLiBUaGF0J3MgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgUkNVIHByb3RlY3Rpb24gYW5kIGEgc3BpbmxvY2ssIGBzbGF2ZXNfbG9ja2AsIHRvIHRoZSBgc2xhdmVzYCBsaXN0IHdpdGhpbiB0aGUgYHN0cnVjdCB0ZXFsX21hc3RlcmAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgdHdvIHBvc3NpYmlsaXRpZXM6IGEgY29uY3VycmVuY3kgYnVnIGlzIGJlaW5nIGFkZHJlc3NlZCwgb3IgdGhleSdyZSBiZWVmaW5nIHVwIHRoZSBSQ1Ugc3VwcG9ydC4gR2l2ZW4gdGhhdCB0aGV5J3JlIHRvdWNoaW5nIGB0ZXFsX2RlcXVldWVgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfcWRpc2NfaW5pdGAsIGB0ZXFsX21hc3Rlcl94bWl0YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAsIHRoZSBzY29wZSBpcyBmYWlybHkgYnJvYWQuIFRoaXMgaXNuJ3QgYSBtaW5vciB0d2Vhay5cblxuSSdkIHNheSB0aGlzIGlzIGRlZmluaXRlbHkgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmc7IHRoZSBjaGFuZ2VzIHBvdGVudGlhbGx5IGltcGFjdCBzZXZlcmFsIGNvcmUgZnVuY3Rpb25zLiBCZWZvcmUgZGl2aW5nIGRlZXBlciwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYHNjaF90ZXFsLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGlmIHRoaXMgd2lsbCBpbXBhY3QgdGhlIGJhc2UgZnVuY3Rpb25hbGl0eS4gTGV0J3Mgc2VlIGhvdyB0aGlzIGFmZmVjdHMgb3VyIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTozNy4xMDMwNDgxMzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNDUxNTA0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfdGVxbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZWlnaGJvdXIuYz0xMzA5PXN0YXRpYyB2b2lkIG5laWdoX3VwZGF0ZV9wcm9jZXNzX2FycF9xdWV1ZShzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaClcXG4tLVxcbm5ldC9jb3JlL25laWdoYm91ci5jLTEzMjUtXFx0XFx0LyogV2h5IG5vdCBqdXN0IHVzZSAnbmVpZ2gnIGFzLWlzPyAgVGhlIHByb2JsZW0gaXMgdGhhdFxcbm5ldC9jb3JlL25laWdoYm91ci5jOjEzMjY6XFx0XFx0ICogdGhpbmdzIHN1Y2ggYXMgc2hhcGVyLCBlcWwsIGFuZCBzY2hfdGVxbCBjYW4gZW5kIHVwXFxubmV0L2NvcmUvbmVpZ2hib3VyLmMtMTMyNy1cXHRcXHQgKiB1c2luZyBhbHRlcm5hdGl2ZSwgZGlmZmVyZW50LCBuZWlnaCBvYmplY3RzIHRvIG91dHB1dFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9MTIyPWNvbmZpZyBORVRfU0NIX1RFUUxcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTEyOC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMjk6XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RlcWwuY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzAtXFxubmV0L3NjaGVkL0tjb25maWctMTMxLVxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbm5ldC9zY2hlZC9LY29uZmlnOjEzMjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGVxbC5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzMtXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVxcdCs9IHNjaF90YmYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVxcdCs9IHNjaF90ZXFsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDQtb2JqLSQoQ09ORklHX05FVF9TQ0hfUFJJTylcXHQrPSBzY2hfcHJpby5vXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxubmV0L3NjaGVkL3NjaF90ZXFsLmM6MjovKiBuZXQvc2NoZWQvc2NoX3RlcWwuY1xcdFxcXCJUcnVlXFxcIiAob3IgXFxcInRyaXZpYWxcXFwiKSBsaW5rIGVxdWFsaXplci5cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYy0zLSAqXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5zaD02Nz10cnlfbW9kcHJvYmUgc2NoX2h0YlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoOjY4OnRyeV9tb2Rwcm9iZSBzY2hfdGVxbFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoLTY5LXRyeV9tb2Rwcm9iZSBzY2hfZHVhbHBpMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTozOS42Mjc1ODEzODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjIyMjg4NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVEVRTCBRZGlzYyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGhlcmUgaXMgYE5FVF9TQ0hfVEVRTGAuIFJpZ2h0LCBsZXQncyBzZWUgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZC4gTG9va3MgbGlrZSB3ZSd2ZSBnb3QgYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC4gQWxsIGNsZWFybHkgVEVRTCBxZGlzYyBjb21wb25lbnRzLlxuXG5Ob3csIGxldCBtZSB6b29tIGluIG9uIHRob3NlIHN5bWJvbHMuIEhtbSwgYHRlcWxfbWFzdGVyX3htaXRgIGFuZCBgdGVxbF9kZXF1ZXVlYC4uLiB0aG9zZSBhcmUgYm90aCBkZWZpbml0ZWx5IGhvdC1wYXRoIGZ1bmN0aW9ucywgcGFydCBvZiB0aGUgdHJhbnNtaXQgYW5kIGRlcXVldWUgcHJvY2Vzc2VzIHJlc3BlY3RpdmVseS4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGF2b2lkaW5nIHRob3NlLiBTbyB0aGF0IG5hcnJvd3MgdGhlIHNjb3BlIGRvd24gY29uc2lkZXJhYmx5LiBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAgaW5zdGVhZCwgYXZvaWRpbmcgdGhlIGhvdC1wYXRoIG9uZXMuIE5vdyBJIHNob3VsZCB2ZXJpZnkgdGhhdCBjb25maWcgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjgzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjQ0LjI0OTg3MzM2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1NjE1OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9TQ0hfVEVRTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc9Njg9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc6Njk6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnLTcwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnPTEwNT1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc6MTA2OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWctMTA3LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZz0xNTU9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoxNTY6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTU3LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz01OD1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnLTYwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjU4OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTU5LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc9MTgzPUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjE4NDpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMTg1LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTE4Nz1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MTg4OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctMTg5LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnPTU4PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzo1OTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnLTYwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnPTYwPUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZzo2MTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTYyLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnPTYxPUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZzo2MjpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnLTYzLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjYzOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnLTY0LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZz01OT1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnOjYwOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTYxLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MTg0PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMTg2LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz0xNTA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzoxNTE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctMTUyLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9MTM4PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjEzOTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctMTQwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTI0MT1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjQyOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMjQzLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9Mzc2PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjM3NzpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMzc4LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MzY2PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM2NzpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMzY4LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzEyX2RlZmNvbmZpZz01ND1DT05GSUdfTkVUX1NDSF9TRlE9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnOjU1OkNPTkZJR19ORVRfU0NIX1RFUUw9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnLTU2LUNPTkZJR19ORVRfU0NIX1RCRj15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz01Mz1DT05GSUdfTkVUX1NDSF9TRlE9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MjFfZGVmY29uZmlnOjU0OkNPTkZJR19ORVRfU0NIX1RFUUw9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MjFfZGVmY29uZmlnLTU1LUNPTkZJR19ORVRfU0NIX1RCRj15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnPTExMz1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTE0OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctMTE1LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc9MzA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MzE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC94dGVuc2EvY29uZmlncy9jb21tb25fZGVmY29uZmlnLTMyLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVF9TQ0hfU0ZRXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjEtXFxubmV0L3NjaGVkL0tjb25maWc6MTIyOmNvbmZpZyBORVRfU0NIX1RFUUxcXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjMtXFx0dHJpc3RhdGUgXFxcIlRydWUgTGluayBFcXVhbGl6ZXIgKFRFUUwpXFxcIlxcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcXHQrPSBzY2hfdGJmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEVRTClcXHQrPSBzY2hfdGVxbC5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTQ0LW9iai0kKENPTkZJR19ORVRfU0NIX1BSSU8pXFx0Kz0gc2NoX3ByaW8ub1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc9NTU9Q09ORklHX05FVF9TQ0hfVEJGPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZzo1NjpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy01Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTE6MzU6NDYuNzQ1NTI1NzUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcyNzgwMDQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRFUUwgUWRpc2MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIGBORVRfU0NIX1RFUUxgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlIHRvIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgVEVRTCBxZGlzYyBpbXBsZW1lbnRhdGlvbjogYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC5cblxuV2hlbiBjb25zaWRlcmluZyB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24sIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAgd2l0aGluIG15IGFuYWx5c2lzLiBUaGVzZSBzZWVtIGxpa2UgZ29vZCBjYW5kaWRhdGVzIGZvciBtb3JlIGluLWRlcHRoIHJldmlldy4gSG93ZXZlciwgSSdtIGdvaW5nIHRvIGV4Y2x1ZGUgYHRlcWxfZGVxdWV1ZWAgYW5kIGB0ZXFsX21hc3Rlcl94bWl0YCBmcm9tIGltbWVkaWF0ZSBmb2N1cywgYXMgdGhleSBhcmUgbGlrZWx5IHBlcmZvcm1hbmNlLWNyaXRpY2FsIFwiaG90IHBhdGhcIiBmdW5jdGlvbnMsIGFuZCBteSBtYWluIGNvbmNlcm4gaXMgdGhlIGNvbmZpZ3VyYXRpb24uXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTaW5jZSB0aGUgY29kZSByZXNpZGVzIGluIGBuZXQvc2NoZWQvc2NoX3RlcWwuY2AsIGFuZCBpdCdzIGEgcWRpc2MsIGBORVRfU0NIX1RFUUxgIGlzIHRoZSBtYWluIG9uZSBJIGV4cGVjdC4gQnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLCBJJ20gZ29pbmcgdG8gcXVpY2tseSByZWFkIHRocm91Z2ggYHRlcWxfcWRpc2NfaW5pdGAgdG8gc2VlIGlmIGl0IG1ha2VzIHVzZSBvZiBhbnkgb3RoZXIgY29uZmlncy4gSXQgaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBiZSBleHRyYSBkaWxpZ2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk3OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTo1MS40NzMzMjk4NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL3NjaF90ZXFsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVxcdTAwM2VkZXYsIHR4cSwgTlVMTCk7XFxuIDE4MTpcXHR9XFxuIDE4MjpcXHRcXG4gMTgzOlxcdHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIDE4NDpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIDE4NTpcXHR7XFxuIDE4NjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XFxuIDE4NzpcXHRcXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm0gPSAoc3RydWN0IHRlcWxfbWFzdGVyICopc2NoLVxcdTAwM2VvcHM7XFxuIDE4ODpcXHRcXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbiAxODk6XFx0XFx0c3RydWN0IFFkaXNjICpmaXJzdDtcXG4gMTkwOlxcdFxcbiAxOTE6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFxcdTAwM2UgbS1cXHUwMDNlZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pXFxuIDE5MjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTkzOlxcdFxcbiAxOTQ6XFx0XFx0aWYgKG0tXFx1MDAzZWRldiA9PSBkZXYpXFxuIDE5NTpcXHRcXHRcXHRyZXR1cm4gLUVMT09QO1xcbiAxOTY6XFx0XFxuIDE5NzpcXHRcXHRpZiAoc2NoLVxcdTAwM2VwYXJlbnQgIT0gVENfSF9ST09UKSB7XFxuIDE5ODpcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwidGVxbCBjYW4gb25seSBiZSB1c2VkIGFzIHJvb3RcXFwiKTtcXG4gMTk5OlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMjAwOlxcdFxcdH1cXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0cS1cXHUwMDNlbSA9IG07XFxuIDIwMzpcXHRcXG4gMjA0OlxcdFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnEtXFx1MDAzZXEpO1xcbiAyMDU6XFx0XFxuIDIwNjpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4gMjA3OlxcdFxcdGZpcnN0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtLVxcdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spKTtcXG4gMjA4OlxcdFxcdGlmIChmaXJzdCkge1xcbiAyMDk6XFx0XFx0XFx0aWYgKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gMjEwOlxcdFxcdFxcdFxcdGlmICgobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QT0lOVE9QT0lOVCBcXHUwMDI2XFx1MDAyNlxcbiAyMTE6XFx0XFx0XFx0XFx0ICAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQpKSB8fFxcbiAyMTI6XFx0XFx0XFx0XFx0ICAgIChtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX0JST0FEQ0FTVCBcXHUwMDI2XFx1MDAyNlxcbiAyMTM6XFx0XFx0XFx0XFx0ICAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfQlJPQURDQVNUKSkgfHxcXG4gMjE0OlxcdFxcdFxcdFxcdCAgICAobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9NVUxUSUNBU1QgXFx1MDAyNlxcdTAwMjZcXG4gMjE1OlxcdFxcdFxcdFxcdCAgICAgIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX01VTFRJQ0FTVCkpIHx8XFxuIDIxNjpcXHRcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VtdHUgXFx1MDAzYyBtLVxcdTAwM2VkZXYtXFx1MDAzZW10dSkge1xcbiAyMTc6XFx0XFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4gMjE4OlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyMTk6XFx0XFx0XFx0XFx0fVxcbiAyMjA6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjIxOlxcdFxcdFxcdFxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3NcXHUwMDI2SUZGX1BPSU5UT1BPSU5UKSlcXG4gMjIyOlxcdFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcXG4gMjIzOlxcdFxcdFxcdFxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3NcXHUwMDI2SUZGX0JST0FEQ0FTVCkpXFxuIDIyNDpcXHRcXHRcXHRcXHRcXHRtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JRkZfQlJPQURDQVNUO1xcbiAyMjU6XFx0XFx0XFx0XFx0aWYgKCEoZGV2LVxcdTAwM2VmbGFnc1xcdTAwMjZJRkZfTVVMVElDQVNUKSlcXG4gMjI2OlxcdFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklGRl9NVUxUSUNBU1Q7XFxuIDIyNzpcXHRcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VtdHUgXFx1MDAzYyBtLVxcdTAwM2VkZXYtXFx1MDAzZW10dSlcXG4gMjI4OlxcdFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gZGV2LVxcdTAwM2VtdHU7XFxuIDIyOTpcXHRcXHRcXHR9XFxuIDIzMDpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cXHUwMDNlbmV4dCxcXG4gMjMxOlxcdFxcdFxcdFxcdFxcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShmaXJzdCksXFxuIDIzMjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spKSk7XFxuIDIzMzpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoTkVYVF9TTEFWRShmaXJzdCksIHNjaCk7XFxuIDIzNDpcXHRcXHR9IGVsc2Uge1xcbiAyMzU6XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXFx1MDAzZW5leHQsIHNjaCk7XFxuIDIzNjpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobS1cXHUwMDNlc2xhdmVzLCBzY2gpO1xcbiAyMzc6XFx0XFx0XFx0bS1cXHUwMDNlZGV2LVxcdTAwM2VtdHUgPSBkZXYtXFx1MDAzZW10dTtcXG4gMjM4OlxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgPSAobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFnc1xcdTAwMjZ+Rk1BU0spfChkZXYtXFx1MDAzZWZsYWdzXFx1MDAyNkZNQVNLKTtcXG4gMjM5OlxcdFxcdH1cXG4gMjQwOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZtLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIDI0MTpcXHRcXHRyZXR1cm4gMDtcXG4gMjQyOlxcdH1cXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFxuIDI0NTpcXHRzdGF0aWMgaW50XFxuIDI0NjpcXHRfX3RlcWxfcmVzb2x2ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3JlcyxcXG4gMjQ3OlxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEsXFxuIDI0ODpcXHRcXHQgICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxcbiAyNDk6XFx0e1xcbiAyNTA6XFx0XFx0c3RydWN0IG5laWdoYm91ciAqbjtcXG4gMjUxOlxcdFxcdGludCBlcnIgPSAwO1xcbiAyNTI6XFx0XFxuIDI1MzpcXHRcXHRuID0gZHN0X25laWdoX2xvb2t1cF9za2IoZHN0LCBza2IpO1xcbiAyNTQ6XFx0XFx0aWYgKCFuKVxcbiAyNTU6XFx0XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdGlmIChkc3QtXFx1MDAzZWRldiAhPSBkZXYpIHtcXG4gMjU4OlxcdFxcdFxcdHN0cnVjdCBuZWlnaGJvdXIgKm1uO1xcbiAyNTk6XFx0XFxuIDI2MDpcXHRcXHRcXHRtbiA9IF9fbmVpZ2hfbG9va3VwX2Vycm5vKG4tXFx1MDAzZXRibCwgbi1cXHUwMDNlcHJpbWFyeV9rZXksIGRldik7XFxuIDI2MTpcXHRcXHRcXHRuZWlnaF9yZWxlYXNlKG4pO1xcbiAyNjI6XFx0XFx0XFx0aWYgKElTX0VSUihtbikpXFxuIDI2MzpcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihtbik7XFxuIDI2NDpcXHRcXHRcXHRuID0gbW47XFxuIDI2NTpcXHRcXHR9XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdGlmIChuZWlnaF9ldmVudF9zZW5kKG4sIHNrYl9yZXMpID09IDApIHtcXG4gMjY4OlxcdFxcdFxcdGludCBlcnI7XFxuIDI2OTpcXHRcXHRcXHRjaGFyIGhhZGRyW01BWF9BRERSX0xFTl07XFxuIDI3MDpcXHRcXG4gMjcxOlxcdFxcdFxcdG5laWdoX2hhX3NuYXBzaG90KGhhZGRyLCBuLCBkZXYpO1xcbiAyNzI6XFx0XFx0XFx0ZXJyID0gZGV2X2hhcmRfaGVhZGVyKHNrYiwgZGV2LCBudG9ocyhza2JfcHJvdG9jb2woc2tiLCBmYWxzZSkpLFxcbiAyNzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgaGFkZHIsIE5VTEwsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjc0OlxcdFxcbiAyNzU6XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDI3NjpcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiAyNzc6XFx0XFx0fSBlbHNlIHtcXG4gMjc4OlxcdFxcdFxcdGVyciA9IChza2JfcmVzID09IE5VTEwpID8gLUVBR0FJTiA6IDE7XFxuIDI3OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjUxLjQ3MzQ5NjE3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2OTY5NzYwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUkNVIFByb3RlY3Rpb24gZm9yIHRoZSBURVFMIFNsYXZlIExpc3QqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGFkZGluZyBSZWFkLUNvcHktVXBkYXRlIChSQ1UpIHByb3RlY3Rpb24gdG8gdGhlIGBzbGF2ZXNgIGxpc3Qgd2l0aGluIHRoZSBgdGVxbF9tYXN0ZXJgIHN0cnVjdHVyZS4gVGhhdCdzIGEgc29saWQgbW92ZSwgYWRkcmVzc2luZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIHRoYXQgSSdtIGZhbWlsaWFyIHdpdGggaW4gbmV0d29yayBzY2hlZHVsaW5nIGRpc2NpcGxpbmVzLiBJIHNlZSBpdCB0b3VjaGVzIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC4gVGhvc2UgYXJlIGFsbCBjZW50cmFsIHRvIHRoZSBURVFMIChUcmFmZmljIEVxdWFsaXphdGlvbikgaW1wbGVtZW50YXRpb24uIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE5FVF9TQ0hfVEVRTGAsIGNvbmZpcm1zIHRoZSB0YXJnZXQuXG5cbk15IG1haW4gYXJlYXMgb2YgY29uY2VybiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFyZSBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLiBUaGVzZSBhcmUgcHJpbWUgbG9jYXRpb25zIGZvciByYWNlIGNvbmRpdGlvbnMgd2hlbiBkZWFsaW5nIHdpdGggbGlzdHMgb2YgZGV2aWNlcy4gRW5zdXJpbmcgdGhhdCB1cGRhdGVzIGFuZCByZWFkcyBvZiB0aGUgYHNsYXZlc2AgbGlzdCBhcmUgUkNVLXByb3RlY3RlZCBpcyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcywgcGFydGljdWxhcmx5IGluIGEgbXVsdGktdGhyZWFkZWQgbmV0d29yayBzdGFjayBlbnZpcm9ubWVudC5cblxuQWxyaWdodCwgSSdsbCBzZXQgdGhlIHJlc3VsdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSBpbXByb3ZlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExOTYsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTE6MzU6NTYuMTcwNDc2Mjk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxMzc0NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfVEVRTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRlcWxfcWRpc2NfaW5pdFwiLFxuICAgIFwidGVxbF9kZXN0cm95XCIsXG4gICAgXCJ0ZXFsX21hc3Rlcl9vcGVuXCIsXG4gICAgXCJ0ZXFsX21hc3Rlcl9tdHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSBwcm90ZWN0aW9uIGFuZCBhIHNwaW5sb2NrIHRvIHRoZSBzbGF2ZXMgbGlzdCBpbiB0aGUgVEVRTCAoVHJ1ZSBMaW5rIEVxdWFsaXplcikgcWRpc2MgdG8gZml4IGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RFUUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZXFsX3FkaXNjX2luaXRcIixcbiAgICBcInRlcWxfZGVzdHJveVwiLFxuICAgIFwidGVxbF9tYXN0ZXJfb3BlblwiLFxuICAgIFwidGVxbF9tYXN0ZXJfbXR1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-28 11:26:56 +0000 UTC FinishedAt: 2026-06-28 11:35:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TEQL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TEQL" ], "series_id": "291ccce1-0e87-4a14-9379-a064e4e1f933" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "teql_qdisc_init", "teql_destroy", "teql_master_open", "teql_master_mtu" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTE6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOTJkYjBmNzM0ODQ1NDM5M2YyZWMyYzcyYWZiZTk4ODZjNmIyM2RjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMTE6MzU6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF90ZXFsLmMgYi9uZXQvc2NoZWQvc2NoX3RlcWwuY1xuaW5kZXggZTdiYmM5ZTUxNzRkMGUuLjI0YmEzMWY4YzgyODU1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90ZXFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGVxbC5jXG5AQCAtNTIsNyAmIzQzOzUyLDggQEBcbiBzdHJ1Y3QgdGVxbF9tYXN0ZXIge1xuIFx0c3RydWN0IFFkaXNjX29wcyBxb3BzO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi1cdHN0cnVjdCBRZGlzYyAqc2xhdmVzO1xuJiM0MztcdHN0cnVjdCBRZGlzYyBfX3JjdVx0KnNsYXZlcztcbiYjNDM7XHRzcGlubG9ja190XHRcdHNsYXZlc19sb2NrOyAvKiBzZXJpYWxpemVzIHdyaXRlcyB0byAtXHUwMDNlc2xhdmVzICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIG1hc3Rlcl9saXN0O1xuIFx0dW5zaWduZWQgbG9uZ1x0dHhfYnl0ZXM7XG4gXHR1bnNpZ25lZCBsb25nXHR0eF9wYWNrZXRzO1xuQEAgLTYxLDcgJiM0Mzs2Miw3IEBAIHN0cnVjdCB0ZXFsX21hc3RlciB7XG4gfTtcbiBcbiBzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhIHtcbi1cdHN0cnVjdCBRZGlzYyAqbmV4dDtcbiYjNDM7XHRzdHJ1Y3QgUWRpc2MgX19yY3VcdCpuZXh0O1xuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptO1xuIFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBxO1xuIH07XG5AQCAtMTAxLDcgJiM0MzsxMDIsOSBAQCB0ZXFsX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG4gXHRpZiAoc2tiID09IE5VTEwpIHtcbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm0gPSBxZGlzY19kZXYocSk7XG4gXHRcdGlmIChtKSB7XG4tXHRcdFx0ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzID0gc2NoO1xuJiM0MztcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZkYXQtXHUwMDNlbS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gXHRcdFx0bmV0aWZfd2FrZV9xdWV1ZShtKTtcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbkBAIC0xMzIsMzQgJiM0MzsxMzUsNDkgQEAgdGVxbF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuIFx0c3RydWN0IFFkaXNjICpxLCAqcHJldjtcbiBcdHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKmRhdCA9IHFkaXNjX3ByaXYoc2NoKTtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gZGF0LVx1MDAzZW07XG4mIzQzO1x0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxID0gTlVMTDtcbiYjNDM7XHRib29sIHJlc2V0X21hc3Rlcl9xdWV1ZSA9IGZhbHNlO1xuIFxuIFx0aWYgKCFtYXN0ZXIpXG4gXHRcdHJldHVybjtcbiBcbi1cdHByZXYgPSBtYXN0ZXItXHUwMDNlc2xhdmVzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdHByZXYgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4mIzQzO1x0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpO1xuIFx0aWYgKHByZXYpIHtcbiBcdFx0ZG8ge1xuLVx0XHRcdHEgPSBORVhUX1NMQVZFKHByZXYpO1xuLVx0XHRcdGlmIChxID09IHNjaCkge1xuLVx0XHRcdFx0TkVYVF9TTEFWRShwcmV2KSA9IE5FWFRfU0xBVkUocSk7XG4tXHRcdFx0XHRpZiAocSA9PSBtYXN0ZXItXHUwMDNlc2xhdmVzKSB7XG4tXHRcdFx0XHRcdG1hc3Rlci1cdTAwM2VzbGF2ZXMgPSBORVhUX1NMQVZFKHEpO1xuLVx0XHRcdFx0XHRpZiAocSA9PSBtYXN0ZXItXHUwMDNlc2xhdmVzKSB7XG4tXHRcdFx0XHRcdFx0c3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxO1xuLVxuLVx0XHRcdFx0XHRcdHR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgMCk7XG4tXHRcdFx0XHRcdFx0bWFzdGVyLVx1MDAzZXNsYXZlcyA9IE5VTEw7XG4tXG4tXHRcdFx0XHRcdFx0ZGV2X3Jlc2V0X3F1ZXVlKG1hc3Rlci1cdTAwM2VkZXYsXG4tXHRcdFx0XHRcdFx0XHRcdHR4cSwgTlVMTCk7XG4tXHRcdFx0XHRcdH1cbi1cdFx0XHRcdH1cbi1cdFx0XHRcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkYXQtXHUwMDNlcSk7XG4tXHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0c3RydWN0IFFkaXNjICpoZWFkLCAqbmV4dDtcbiYjNDM7XG4mIzQzO1x0XHRcdHEgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocHJldiksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbiYjNDM7XHRcdFx0aWYgKHEgIT0gc2NoKSB7XG4mIzQzO1x0XHRcdFx0cHJldiA9IHE7XG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuIFxuLVx0XHR9IHdoaWxlICgocHJldiA9IHEpICE9IG1hc3Rlci1cdTAwM2VzbGF2ZXMpO1xuJiM0MztcdFx0XHRuZXh0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLFxuJiM0MztcdFx0XHRcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4mIzQzO1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKHByZXYpLCBuZXh0KTtcbiYjNDM7XG4mIzQzO1x0XHRcdGhlYWQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4mIzQzO1x0XHRcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbiYjNDM7XHRcdFx0aWYgKHEgPT0gaGVhZCkge1xuJiM0MztcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLCBuZXh0KTtcbiYjNDM7XHRcdFx0XHRpZiAocSA9PSBuZXh0KSB7XG4mIzQzO1x0XHRcdFx0XHR0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci1cdTAwM2VkZXYsIDApO1xuJiM0MztcdFx0XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cdTAwM2VzbGF2ZXMsIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0cmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTtcbiYjNDM7XHRcdFx0XHR9XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRhdC1cdTAwM2VxKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9IHdoaWxlIChwcmV2ICE9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkpO1xuIFx0fVxuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXNldF9tYXN0ZXJfcXVldWUpXG4mIzQzO1x0XHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgdHhxLCBOVUxMKTtcbiB9XG4gXG4gc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbkBAIC0xNjgsNiAmIzQzOzE4Niw3IEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XG4gXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm0gPSAoc3RydWN0IHRlcWxfbWFzdGVyICopc2NoLVx1MDAzZW9wcztcbiBcdHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG4mIzQzO1x0c3RydWN0IFFkaXNjICpmaXJzdDtcbiBcbiBcdGlmIChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFx1MDAzZSBtLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE4NCw3ICYjNDM7MjAzLDkgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cS1cdTAwM2VxKTtcbiBcbi1cdGlmIChtLVx1MDAzZXNsYXZlcykge1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKTtcbiYjNDM7XHRmaXJzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobS1cdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4mIzQzO1x0aWYgKGZpcnN0KSB7XG4gXHRcdGlmIChtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKSB7XG4gXHRcdFx0aWYgKChtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QT0lOVE9QT0lOVCkpIHx8XG5AQCAtMTkyLDggJiM0MzsyMTMsMTAgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICAgICEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQlJPQURDQVNUKSkgfHxcbiBcdFx0XHQgICAgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTVVMVElDQVNUIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9NVUxUSUNBU1QpKSB8fFxuLVx0XHRcdCAgICBkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpXG4mIzQzO1x0XHRcdCAgICBkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpIHtcbiYjNDM7XHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzXHUwMDI2SUZGX1BPSU5UT1BPSU5UKSlcbiBcdFx0XHRcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcbkBAIC0yMDQsMTQgJiM0MzsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2MgbS1cdTAwM2VkZXYtXHUwMDNlbXR1KVxuIFx0XHRcdFx0bS1cdTAwM2VkZXYtXHUwMDNlbXR1ID0gZGV2LVx1MDAzZW10dTtcbiBcdFx0fVxuLVx0XHRxLVx1MDAzZW5leHQgPSBORVhUX1NMQVZFKG0tXHUwMDNlc2xhdmVzKTtcbi1cdFx0TkVYVF9TTEFWRShtLVx1MDAzZXNsYXZlcykgPSBzY2g7XG4mIzQzO1x0XHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VuZXh0LFxuJiM0MztcdFx0XHRcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShmaXJzdCksXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbiYjNDM7XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKGZpcnN0KSwgc2NoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHEtXHUwMDNlbmV4dCA9IHNjaDtcbi1cdFx0bS1cdTAwM2VzbGF2ZXMgPSBzY2g7XG4mIzQzO1x0XHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VuZXh0LCBzY2gpO1xuJiM0MztcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSyl8KGRldi1cdTAwM2VmbGFnc1x1MDAyNkZNQVNLKTtcbiBcdH1cbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0yODUsNyAmIzQzOzMxMSw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpbnQgc3VicSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYl9yZXMgPSBOVUxMO1xuIFxuLVx0c3RhcnQgPSBtYXN0ZXItXHUwMDNlc2xhdmVzO1xuJiM0MztcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbiYjNDM7XG4mIzQzO1x0c3RhcnQgPSByY3VfZGVyZWZlcmVuY2VfYmgobWFzdGVyLVx1MDAzZXNsYXZlcyk7XG4gXG4gcmVzdGFydDpcbiBcdG5vcmVzID0gMDtcbkBAIC0zMTcsMTAgJiM0MzszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdCAgICBuZXRkZXZfc3RhcnRfeG1pdChza2IsIHNsYXZlLCBzbGF2ZV90eHEsIGZhbHNlKSA9PVxuIFx0XHRcdFx0ICAgIE5FVERFVl9UWF9PSykge1xuIFx0XHRcdFx0XHRfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpO1xuLVx0XHRcdFx0XHRtYXN0ZXItXHUwMDNlc2xhdmVzID0gTkVYVF9TTEFWRShxKTtcbiYjNDM7XHRcdFx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdFx0XHRcdFx0aWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSA9PSBxKVxuJiM0MztcdFx0XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShxKSxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbiYjNDM7XHRcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gXHRcdFx0XHRcdG5ldGlmX3dha2VfcXVldWUoZGV2KTtcbiBcdFx0XHRcdFx0bWFzdGVyLVx1MDAzZXR4X3BhY2tldHMmIzQzOyYjNDM7O1xuIFx0XHRcdFx0XHRtYXN0ZXItXHUwMDNldHhfYnl0ZXMgJiM0Mzs9IGxlbmd0aDtcbiYjNDM7XHRcdFx0XHRcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0XHRcdFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0X19uZXRpZl90eF91bmxvY2soc2xhdmVfdHhxKTtcbkBAIC0zMjksMTQgJiM0MzszNjQsMjEgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdGJ1c3kgPSAxO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDE6XG4tXHRcdFx0bWFzdGVyLVx1MDAzZXNsYXZlcyA9IE5FWFRfU0xBVkUocSk7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuJiM0MztcdFx0XHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXHUwMDNlc2xhdmVzLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcbiYjNDM7XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLVx1MDAzZXNsYXZlcyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHQgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSk7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4mIzQzO1x0XHRcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0XHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0bm9yZXMgPSAxO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdF9fc2tiX3B1bGwoc2tiLCBza2JfbmV0d29ya19vZmZzZXQoc2tiKSk7XG4tXHR9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IHN0YXJ0KTtcbiYjNDM7XHR9IHdoaWxlICgocSA9IHJjdV9kZXJlZmVyZW5jZV9iaChORVhUX1NMQVZFKHEpKSkgIT0gc3RhcnQpO1xuIFxuIFx0aWYgKG5vcmVzIFx1MDAyNlx1MDAyNiBza2JfcmVzID09IE5VTEwpIHtcbiBcdFx0c2tiX3JlcyA9IHNrYjtcbkBAIC0zNDUsMjkgJiM0MzszODcsMzIgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdGlmIChidXN5KSB7XG4gXHRcdG5ldGlmX3N0b3BfcXVldWUoZGV2KTtcbiYjNDM7XHRcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0XHRyZXR1cm4gTkVUREVWX1RYX0JVU1k7XG4gXHR9XG4gXHRtYXN0ZXItXHUwMDNldHhfZXJyb3JzJiM0MzsmIzQzOztcbiBcbiBkcm9wOlxuIFx0bWFzdGVyLVx1MDAzZXR4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuJiM0MztcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiB9XG4gXG4gc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IFFkaXNjICpxO1xuJiM0MztcdHN0cnVjdCBRZGlzYyAqcSwgKmZpcnN0O1xuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdGludCBtdHUgPSAweEZGRkU7XG4gXHR1bnNpZ25lZCBpbnQgZmxhZ3MgPSBJRkZfTk9BUlAgfCBJRkZfTVVMVElDQVNUO1xuIFxuLVx0aWYgKG0tXHUwMDNlc2xhdmVzID09IE5VTEwpXG4mIzQzO1x0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXHUwMDNlc2xhdmVzKTtcbiYjNDM7XHRpZiAoIWZpcnN0KVxuIFx0XHRyZXR1cm4gLUVVTkFUQ0g7XG4gXG4gXHRmbGFncyA9IEZNQVNLO1xuIFxuLVx0cSA9IG0tXHUwMDNlc2xhdmVzO1xuJiM0MztcdHEgPSBmaXJzdDtcbiBcdGRvIHtcbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlID0gcWRpc2NfZGV2KHEpO1xuIFxuQEAgLTM4OSw3ICYjNDM7NDM0LDcgQEAgc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0ZmxhZ3MgXHUwMDI2PSB+SUZGX0JST0FEQ0FTVDtcbiBcdFx0aWYgKCEoc2xhdmUtXHUwMDNlZmxhZ3NcdTAwMjZJRkZfTVVMVElDQVNUKSlcbiBcdFx0XHRmbGFncyBcdTAwMjY9IH5JRkZfTVVMVElDQVNUO1xuLVx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVx1MDAzZXNsYXZlcyk7XG4mIzQzO1x0fSB3aGlsZSAoKHEgPSBydG5sX2RlcmVmZXJlbmNlKE5FWFRfU0xBVkUocSkpKSAhPSBmaXJzdCk7XG4gXG4gXHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBtdHU7XG4gXHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSykgfCBmbGFncztcbkBAIC00MTcsMTQgJiM0Mzs0NjIsMTUgQEAgc3RhdGljIHZvaWQgdGVxbF9tYXN0ZXJfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyBpbnQgdGVxbF9tYXN0ZXJfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxuIHtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgUWRpc2MgKnE7XG4mIzQzO1x0c3RydWN0IFFkaXNjICpxLCAqZmlyc3Q7XG4gXG4tXHRxID0gbS1cdTAwM2VzbGF2ZXM7XG4mIzQzO1x0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXHUwMDNlc2xhdmVzKTtcbiYjNDM7XHRxID0gZmlyc3Q7XG4gXHRpZiAocSkge1xuIFx0XHRkbyB7XG4gXHRcdFx0aWYgKG5ld19tdHUgXHUwMDNlIHFkaXNjX2RldihxKS1cdTAwM2VtdHUpXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdFx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVx1MDAzZXNsYXZlcyk7XG4mIzQzO1x0XHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcbiBcdH1cbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG5AQCAtNDQ0LDYgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgX19pbml0IHZvaWQgdGVxbF9tYXN0ZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHN0cnVjdCBRZGlzY19vcHMgKm9wcyA9IFx1MDAyNm1hc3Rlci1cdTAwM2Vxb3BzO1xuIFxuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gXHRtYXN0ZXItXHUwMDNlZGV2XHQ9IGRldjtcbiBcdG9wcy1cdTAwM2Vwcml2X3NpemUgID0gc2l6ZW9mKHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM5MmRiMGY3MzQ4NDU0MzkzZjJlYzJjNzJhZmJlOTg4NmM2YjIzZGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1biAyOCAxMTozNTozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGVxbC5jIGIvbmV0L3NjaGVkL3NjaF90ZXFsLmMKaW5kZXggZTdiYmM5ZTUxNzRkMGUuLjI0YmEzMWY4YzgyODU1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3RlcWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3RlcWwuYwpAQCAtNTIsNyAmIzQzOzUyLDggQEAKIHN0cnVjdCB0ZXFsX21hc3RlciB7CiAJc3RydWN0IFFkaXNjX29wcyBxb3BzOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7Ci0Jc3RydWN0IFFkaXNjICpzbGF2ZXM7CiYjNDM7CXN0cnVjdCBRZGlzYyBfX3JjdQkqc2xhdmVzOwomIzQzOwlzcGlubG9ja190CQlzbGF2ZXNfbG9jazsgLyogc2VyaWFsaXplcyB3cml0ZXMgdG8gLSZndDtzbGF2ZXMgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIG1hc3Rlcl9saXN0OwogCXVuc2lnbmVkIGxvbmcJdHhfYnl0ZXM7CiAJdW5zaWduZWQgbG9uZwl0eF9wYWNrZXRzOwpAQCAtNjEsNyAmIzQzOzYyLDcgQEAgc3RydWN0IHRlcWxfbWFzdGVyIHsKIH07CiAKIHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgewotCXN0cnVjdCBRZGlzYyAqbmV4dDsKJiM0MzsJc3RydWN0IFFkaXNjIF9fcmN1CSpuZXh0OwogCXN0cnVjdCB0ZXFsX21hc3RlciAqbTsKIAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHE7CiB9OwpAQCAtMTAxLDcgJiM0MzsxMDIsOSBAQCB0ZXFsX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpCiAJaWYgKHNrYiA9PSBOVUxMKSB7CiAJCXN0cnVjdCBuZXRfZGV2aWNlICptID0gcWRpc2NfZGV2KHEpOwogCQlpZiAobSkgewotCQkJZGF0LSZndDttLSZndDtzbGF2ZXMgPSBzY2g7CiYjNDM7CQkJc3Bpbl9sb2NrX2JoKCZhbXA7ZGF0LSZndDttLSZndDtzbGF2ZXNfbG9jayk7CiYjNDM7CQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRhdC0mZ3Q7bS0mZ3Q7c2xhdmVzLCBzY2gpOwomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7ZGF0LSZndDttLSZndDtzbGF2ZXNfbG9jayk7CiAJCQluZXRpZl93YWtlX3F1ZXVlKG0pOwogCQl9CiAJfSBlbHNlIHsKQEAgLTEzMiwzNCAmIzQzOzEzNSw0OSBAQCB0ZXFsX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpCiAJc3RydWN0IFFkaXNjICpxLCAqcHJldjsKIAlzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpkYXQgPSBxZGlzY19wcml2KHNjaCk7CiAJc3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBkYXQtJmd0O207CiYjNDM7CXN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cSA9IE5VTEw7CiYjNDM7CWJvb2wgcmVzZXRfbWFzdGVyX3F1ZXVlID0gZmFsc2U7CiAKIAlpZiAoIW1hc3RlcikKIAkJcmV0dXJuOwogCi0JcHJldiA9IG1hc3Rlci0mZ3Q7c2xhdmVzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKTsKJiM0MzsJcHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jaykpOwogCWlmIChwcmV2KSB7CiAJCWRvIHsKLQkJCXEgPSBORVhUX1NMQVZFKHByZXYpOwotCQkJaWYgKHEgPT0gc2NoKSB7Ci0JCQkJTkVYVF9TTEFWRShwcmV2KSA9IE5FWFRfU0xBVkUocSk7Ci0JCQkJaWYgKHEgPT0gbWFzdGVyLSZndDtzbGF2ZXMpIHsKLQkJCQkJbWFzdGVyLSZndDtzbGF2ZXMgPSBORVhUX1NMQVZFKHEpOwotCQkJCQlpZiAocSA9PSBtYXN0ZXItJmd0O3NsYXZlcykgewotCQkJCQkJc3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxOwotCi0JCQkJCQl0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci0mZ3Q7ZGV2LCAwKTsKLQkJCQkJCW1hc3Rlci0mZ3Q7c2xhdmVzID0gTlVMTDsKLQotCQkJCQkJZGV2X3Jlc2V0X3F1ZXVlKG1hc3Rlci0mZ3Q7ZGV2LAotCQkJCQkJCQl0eHEsIE5VTEwpOwotCQkJCQl9Ci0JCQkJfQotCQkJCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2RhdC0mZ3Q7cSk7Ci0JCQkJYnJlYWs7CiYjNDM7CQkJc3RydWN0IFFkaXNjICpoZWFkLCAqbmV4dDsKJiM0MzsKJiM0MzsJCQlxID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHByZXYpLAomIzQzOwkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spKTsKJiM0MzsJCQlpZiAocSAhPSBzY2gpIHsKJiM0MzsJCQkJcHJldiA9IHE7CiYjNDM7CQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCX0gd2hpbGUgKChwcmV2ID0gcSkgIT0gbWFzdGVyLSZndDtzbGF2ZXMpOwomIzQzOwkJCW5leHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksCiYjNDM7CQkJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKSk7CiYjNDM7CQkJcmN1X2Fzc2lnbl9wb2ludGVyKE5FWFRfU0xBVkUocHJldiksIG5leHQpOwomIzQzOwomIzQzOwkJCWhlYWQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci0mZ3Q7c2xhdmVzLAomIzQzOwkJCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jaykpOwomIzQzOwkJCWlmIChxID09IGhlYWQpIHsKJiM0MzsJCQkJcmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci0mZ3Q7c2xhdmVzLCBuZXh0KTsKJiM0MzsJCQkJaWYgKHEgPT0gbmV4dCkgewomIzQzOwkJCQkJdHhxID0gbmV0ZGV2X2dldF90eF9xdWV1ZShtYXN0ZXItJmd0O2RldiwgMCk7CiYjNDM7CQkJCQlyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLSZndDtzbGF2ZXMsIE5VTEwpOwomIzQzOwkJCQkJcmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTsKJiM0MzsJCQkJfQomIzQzOwkJCX0KJiM0MzsJCQlza2JfcXVldWVfcHVyZ2UoJmFtcDtkYXQtJmd0O3EpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfSB3aGlsZSAocHJldiAhPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci0mZ3Q7c2xhdmVzLAomIzQzOwkJCQkJCQkgICBsb2NrZGVwX2lzX2hlbGQoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKSkpOwogCX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKHJlc2V0X21hc3Rlcl9xdWV1ZSkKJiM0MzsJCWRldl9yZXNldF9xdWV1ZShtYXN0ZXItJmd0O2RldiwgdHhxLCBOVUxMKTsKIH0KIAogc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKQEAgLTE2OCw2ICYjNDM7MTg2LDcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7CiAJc3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC0mZ3Q7b3BzOwogCXN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7CiYjNDM7CXN0cnVjdCBRZGlzYyAqZmlyc3Q7CiAKIAlpZiAoZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gJmd0OyBtLSZndDtkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbikKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xODQsNyAmIzQzOzIwMyw5IEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAKIAlza2JfcXVldWVfaGVhZF9pbml0KCZhbXA7cS0mZ3Q7cSk7CiAKLQlpZiAobS0mZ3Q7c2xhdmVzKSB7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO20tJmd0O3NsYXZlc19sb2NrKTsKJiM0MzsJZmlyc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG0tJmd0O3NsYXZlcywgbG9ja2RlcF9pc19oZWxkKCZhbXA7bS0mZ3Q7c2xhdmVzX2xvY2spKTsKJiM0MzsJaWYgKGZpcnN0KSB7CiAJCWlmIChtLSZndDtkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9VUCkgewogCQkJaWYgKChtLSZndDtkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QT0lOVE9QT0lOVCAmYW1wOyZhbXA7CiAJCQkgICAgICEoZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfUE9JTlRPUE9JTlQpKSB8fApAQCAtMTkyLDggJiM0MzsyMTMsMTAgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCSAgICAgIShkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9CUk9BRENBU1QpKSB8fAogCQkJICAgIChtLSZndDtkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9NVUxUSUNBU1QgJmFtcDsmYW1wOwogCQkJICAgICAhKGRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX01VTFRJQ0FTVCkpIHx8Ci0JCQkgICAgZGV2LSZndDttdHUgJmx0OyBtLSZndDtkZXYtJmd0O210dSkKJiM0MzsJCQkgICAgZGV2LSZndDttdHUgJmx0OyBtLSZndDtkZXYtJmd0O210dSkgewomIzQzOwkJCQlzcGluX3VubG9ja19iaCgmYW1wO20tJmd0O3NsYXZlc19sb2NrKTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiAJCX0gZWxzZSB7CiAJCQlpZiAoIShkZXYtJmd0O2ZsYWdzJmFtcDtJRkZfUE9JTlRPUE9JTlQpKQogCQkJCW0tJmd0O2Rldi0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JRkZfUE9JTlRPUE9JTlQ7CkBAIC0yMDQsMTQgJiM0MzsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCWlmIChkZXYtJmd0O210dSAmbHQ7IG0tJmd0O2Rldi0mZ3Q7bXR1KQogCQkJCW0tJmd0O2Rldi0mZ3Q7bXR1ID0gZGV2LSZndDttdHU7CiAJCX0KLQkJcS0mZ3Q7bmV4dCA9IE5FWFRfU0xBVkUobS0mZ3Q7c2xhdmVzKTsKLQkJTkVYVF9TTEFWRShtLSZndDtzbGF2ZXMpID0gc2NoOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHEtJmd0O25leHQsCiYjNDM7CQkJCSAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShmaXJzdCksCiYjNDM7CQkJCQkJCSAgICAgbG9ja2RlcF9pc19oZWxkKCZhbXA7bS0mZ3Q7c2xhdmVzX2xvY2spKSk7CiYjNDM7CQlyY3VfYXNzaWduX3BvaW50ZXIoTkVYVF9TTEFWRShmaXJzdCksIHNjaCk7CiAJfSBlbHNlIHsKLQkJcS0mZ3Q7bmV4dCA9IHNjaDsKLQkJbS0mZ3Q7c2xhdmVzID0gc2NoOwomIzQzOwkJcmN1X2Fzc2lnbl9wb2ludGVyKHEtJmd0O25leHQsIHNjaCk7CiYjNDM7CQlyY3VfYXNzaWduX3BvaW50ZXIobS0mZ3Q7c2xhdmVzLCBzY2gpOwogCQltLSZndDtkZXYtJmd0O210dSA9IGRldi0mZ3Q7bXR1OwogCQltLSZndDtkZXYtJmd0O2ZsYWdzID0gKG0tJmd0O2Rldi0mZ3Q7ZmxhZ3MmYW1wO35GTUFTSyl8KGRldi0mZ3Q7ZmxhZ3MmYW1wO0ZNQVNLKTsKIAl9CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bS0mZ3Q7c2xhdmVzX2xvY2spOwogCXJldHVybiAwOwogfQogCkBAIC0yODUsNyAmIzQzOzMxMSw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaW50IHN1YnEgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3JlcyA9IE5VTEw7CiAKLQlzdGFydCA9IG1hc3Rlci0mZ3Q7c2xhdmVzOwomIzQzOwlyY3VfcmVhZF9sb2NrX2JoKCk7CiYjNDM7CiYjNDM7CXN0YXJ0ID0gcmN1X2RlcmVmZXJlbmNlX2JoKG1hc3Rlci0mZ3Q7c2xhdmVzKTsKIAogcmVzdGFydDoKIAlub3JlcyA9IDA7CkBAIC0zMTcsMTAgJiM0MzszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCQkgICAgbmV0ZGV2X3N0YXJ0X3htaXQoc2tiLCBzbGF2ZSwgc2xhdmVfdHhxLCBmYWxzZSkgPT0KIAkJCQkgICAgTkVUREVWX1RYX09LKSB7CiAJCQkJCV9fbmV0aWZfdHhfdW5sb2NrKHNsYXZlX3R4cSk7Ci0JCQkJCW1hc3Rlci0mZ3Q7c2xhdmVzID0gTkVYVF9TTEFWRShxKTsKJiM0MzsJCQkJCXNwaW5fbG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwomIzQzOwkJCQkJaWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkJCQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJmFtcDttYXN0ZXItJmd0O3NsYXZlc19sb2NrKSkgPT0gcSkKJiM0MzsJCQkJCQlyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkJCQkgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksCiYjNDM7CQkJCQkJCQkJCQkgICAgIGxvY2tkZXBfaXNfaGVsZCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spKSk7CiYjNDM7CQkJCQlzcGluX3VubG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwogCQkJCQluZXRpZl93YWtlX3F1ZXVlKGRldik7CiAJCQkJCW1hc3Rlci0mZ3Q7dHhfcGFja2V0cyYjNDM7JiM0Mzs7CiAJCQkJCW1hc3Rlci0mZ3Q7dHhfYnl0ZXMgJiM0Mzs9IGxlbmd0aDsKJiM0MzsJCQkJCXJjdV9yZWFkX3VubG9ja19iaCgpOwogCQkJCQlyZXR1cm4gTkVUREVWX1RYX09LOwogCQkJCX0KIAkJCQlfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpOwpAQCAtMzI5LDE0ICYjNDM7MzY0LDIxIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCQkJYnVzeSA9IDE7CiAJCQlicmVhazsKIAkJY2FzZSAxOgotCQkJbWFzdGVyLSZndDtzbGF2ZXMgPSBORVhUX1NMQVZFKHEpOwomIzQzOwkJCXNwaW5fbG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwomIzQzOwkJCWlmIChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci0mZ3Q7c2xhdmVzLAomIzQzOwkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spKSA9PSBxKQomIzQzOwkJCQlyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLSZndDtzbGF2ZXMsCiYjNDM7CQkJCQkJICAgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLAomIzQzOwkJCQkJCQkJCSAgICAgbG9ja2RlcF9pc19oZWxkKCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jaykpKTsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO21hc3Rlci0mZ3Q7c2xhdmVzX2xvY2spOwomIzQzOwkJCXJjdV9yZWFkX3VubG9ja19iaCgpOwogCQkJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAkJZGVmYXVsdDoKIAkJCW5vcmVzID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJCV9fc2tiX3B1bGwoc2tiLCBza2JfbmV0d29ya19vZmZzZXQoc2tiKSk7Ci0JfSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBzdGFydCk7CiYjNDM7CX0gd2hpbGUgKChxID0gcmN1X2RlcmVmZXJlbmNlX2JoKE5FWFRfU0xBVkUocSkpKSAhPSBzdGFydCk7CiAKIAlpZiAobm9yZXMgJmFtcDsmYW1wOyBza2JfcmVzID09IE5VTEwpIHsKIAkJc2tiX3JlcyA9IHNrYjsKQEAgLTM0NSwyOSAmIzQzOzM4NywzMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJaWYgKGJ1c3kpIHsKIAkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwomIzQzOwkJcmN1X3JlYWRfdW5sb2NrX2JoKCk7CiAJCXJldHVybiBORVRERVZfVFhfQlVTWTsKIAl9CiAJbWFzdGVyLSZndDt0eF9lcnJvcnMmIzQzOyYjNDM7OwogCiBkcm9wOgogCW1hc3Rlci0mZ3Q7dHhfZHJvcHBlZCYjNDM7JiM0Mzs7CiYjNDM7CXJjdV9yZWFkX3VubG9ja19iaCgpOwogCWRldl9rZnJlZV9za2Ioc2tiKTsKIAlyZXR1cm4gTkVUREVWX1RYX09LOwogfQogCiBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgUWRpc2MgKnE7CiYjNDM7CXN0cnVjdCBRZGlzYyAqcSwgKmZpcnN0OwogCXN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7CiAJaW50IG10dSA9IDB4RkZGRTsKIAl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBJRkZfTk9BUlAgfCBJRkZfTVVMVElDQVNUOwogCi0JaWYgKG0tJmd0O3NsYXZlcyA9PSBOVUxMKQomIzQzOwlmaXJzdCA9IHJ0bmxfZGVyZWZlcmVuY2UobS0mZ3Q7c2xhdmVzKTsKJiM0MzsJaWYgKCFmaXJzdCkKIAkJcmV0dXJuIC1FVU5BVENIOwogCiAJZmxhZ3MgPSBGTUFTSzsKIAotCXEgPSBtLSZndDtzbGF2ZXM7CiYjNDM7CXEgPSBmaXJzdDsKIAlkbyB7CiAJCXN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZSA9IHFkaXNjX2RldihxKTsKIApAQCAtMzg5LDcgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWZsYWdzICZhbXA7PSB+SUZGX0JST0FEQ0FTVDsKIAkJaWYgKCEoc2xhdmUtJmd0O2ZsYWdzJmFtcDtJRkZfTVVMVElDQVNUKSkKIAkJCWZsYWdzICZhbXA7PSB+SUZGX01VTFRJQ0FTVDsKLQl9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IG0tJmd0O3NsYXZlcyk7CiYjNDM7CX0gd2hpbGUgKChxID0gcnRubF9kZXJlZmVyZW5jZShORVhUX1NMQVZFKHEpKSkgIT0gZmlyc3QpOwogCiAJbS0mZ3Q7ZGV2LSZndDttdHUgPSBtdHU7CiAJbS0mZ3Q7ZGV2LSZndDtmbGFncyA9IChtLSZndDtkZXYtJmd0O2ZsYWdzJmFtcDt+Rk1BU0spIHwgZmxhZ3M7CkBAIC00MTcsMTQgJiM0Mzs0NjIsMTUgQEAgc3RhdGljIHZvaWQgdGVxbF9tYXN0ZXJfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogc3RhdGljIGludCB0ZXFsX21hc3Rlcl9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpCiB7CiAJc3RydWN0IHRlcWxfbWFzdGVyICptID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlzdHJ1Y3QgUWRpc2MgKnE7CiYjNDM7CXN0cnVjdCBRZGlzYyAqcSwgKmZpcnN0OwogCi0JcSA9IG0tJmd0O3NsYXZlczsKJiM0MzsJZmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tJmd0O3NsYXZlcyk7CiYjNDM7CXEgPSBmaXJzdDsKIAlpZiAocSkgewogCQlkbyB7CiAJCQlpZiAobmV3X210dSAmZ3Q7IHFkaXNjX2RldihxKS0mZ3Q7bXR1KQogCQkJCXJldHVybiAtRUlOVkFMOwotCQl9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IG0tJmd0O3NsYXZlcyk7CiYjNDM7CQl9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTsKIAl9CiAKIAlXUklURV9PTkNFKGRldi0mZ3Q7bXR1LCBuZXdfbXR1KTsKQEAgLTQ0NCw2ICYjNDM7NDkwLDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHRlcWxfbWFzdGVyX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBRZGlzY19vcHMgKm9wcyA9ICZhbXA7bWFzdGVyLSZndDtxb3BzOwogCiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7bWFzdGVyLSZndDtzbGF2ZXNfbG9jayk7CiAJbWFzdGVyLSZndDtkZXYJPSBkZXY7CiAJb3BzLSZndDtwcml2X3NpemUgID0gc2l6ZW9mKHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMjMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0ZXFsLmMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9zY2hlZC9zY2hfdGVxbC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBUcnVlIExpbmsgRXF1YWxpemVyIHF1ZXVpbmcgZGlzY2lwbGluZS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jaywgYHNsYXZlc19sb2NrYCwgdG8gdGhlIGBzbGF2ZXNgIGxpc3Qgd2l0aGluIHRoZSBgc3RydWN0IHRlcWxfbWFzdGVyYC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyB0d28gcG9zc2liaWxpdGllczogYSBjb25jdXJyZW5jeSBidWcgaXMgYmVpbmcgYWRkcmVzc2VkLCBvciB0aGV5JiMzOTtyZSBiZWVmaW5nIHVwIHRoZSBSQ1Ugc3VwcG9ydC4gR2l2ZW4gdGhhdCB0aGV5JiMzOTtyZSB0b3VjaGluZyBgdGVxbF9kZXF1ZXVlYCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9tYXN0ZXJfeG1pdGAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLCB0aGUgc2NvcGUgaXMgZmFpcmx5IGJyb2FkLiBUaGlzIGlzbiYjMzk7dCBhIG1pbm9yIHR3ZWFrLgoKSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nOyB0aGUgY2hhbmdlcyBwb3RlbnRpYWxseSBpbXBhY3Qgc2V2ZXJhbCBjb3JlIGZ1bmN0aW9ucy4gQmVmb3JlIGRpdmluZyBkZWVwZXIsIEkgc2hvdWxkIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBzY2hfdGVxbC5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCBpZiB0aGlzIHdpbGwgaW1wYWN0IHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzZWUgaG93IHRoaXMgYWZmZWN0cyBvdXIgZXhpc3RpbmcgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2hfdGVxbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZWlnaGJvdXIuYz0xMzA5PXN0YXRpYyB2b2lkIG5laWdoX3VwZGF0ZV9wcm9jZXNzX2FycF9xdWV1ZShzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaClcbi0tXG5uZXQvY29yZS9uZWlnaGJvdXIuYy0xMzI1LVx0XHQvKiBXaHkgbm90IGp1c3QgdXNlICYjMzk7bmVpZ2gmIzM5OyBhcy1pcz8gIFRoZSBwcm9ibGVtIGlzIHRoYXRcbm5ldC9jb3JlL25laWdoYm91ci5jOjEzMjY6XHRcdCAqIHRoaW5ncyBzdWNoIGFzIHNoYXBlciwgZXFsLCBhbmQgc2NoX3RlcWwgY2FuIGVuZCB1cFxubmV0L2NvcmUvbmVpZ2hib3VyLmMtMTMyNy1cdFx0ICogdXNpbmcgYWx0ZXJuYXRpdmUsIGRpZmZlcmVudCwgbmVpZ2ggb2JqZWN0cyB0byBvdXRwdXRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0xMjI9Y29uZmlnIE5FVF9TQ0hfVEVRTFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTEyOC1cbm5ldC9zY2hlZC9LY29uZmlnOjEyOTpcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RlcWwuY1x1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxubmV0L3NjaGVkL0tjb25maWctMTMwLVxubmV0L3NjaGVkL0tjb25maWctMTMxLVx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG5uZXQvc2NoZWQvS2NvbmZpZzoxMzI6XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGVxbC5cbm5ldC9zY2hlZC9LY29uZmlnLTEzMy1cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVx0JiM0Mzs9IHNjaF90YmYub1xubmV0L3NjaGVkL01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19ORVRfU0NIX1RFUUwpXHQmIzQzOz0gc2NoX3RlcWwub1xubmV0L3NjaGVkL01ha2VmaWxlLTQ0LW9iai0kKENPTkZJR19ORVRfU0NIX1BSSU8pXHQmIzQzOz0gc2NoX3ByaW8ub1xuLS1cbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbm5ldC9zY2hlZC9zY2hfdGVxbC5jOjI6LyogbmV0L3NjaGVkL3NjaF90ZXFsLmNcdFwmIzM0O1RydWVcJiMzNDsgKG9yIFwmIzM0O3RyaXZpYWxcJiMzNDspIGxpbmsgZXF1YWxpemVyLlxubmV0L3NjaGVkL3NjaF90ZXFsLmMtMy0gKlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoPTY3PXRyeV9tb2Rwcm9iZSBzY2hfaHRiXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5zaDo2ODp0cnlfbW9kcHJvYmUgc2NoX3RlcWxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoLTY5LXRyeV9tb2Rwcm9iZSBzY2hfZHVhbHBpMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyODMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBURVFMIFFkaXNjIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBORVRfU0NIX1RFUUxgLiBSaWdodCwgbGV0JiMzOTtzIHNlZSB3aGljaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkLiBMb29rcyBsaWtlIHdlJiMzOTt2ZSBnb3QgYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC4gQWxsIGNsZWFybHkgVEVRTCBxZGlzYyBjb21wb25lbnRzLgoKTm93LCBsZXQgbWUgem9vbSBpbiBvbiB0aG9zZSBzeW1ib2xzLiBIbW0sIGB0ZXFsX21hc3Rlcl94bWl0YCBhbmQgYHRlcWxfZGVxdWV1ZWAuLi4gdGhvc2UgYXJlIGJvdGggZGVmaW5pdGVseSBob3QtcGF0aCBmdW5jdGlvbnMsIHBhcnQgb2YgdGhlIHRyYW5zbWl0IGFuZCBkZXF1ZXVlIHByb2Nlc3NlcyByZXNwZWN0aXZlbHkuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhdm9pZGluZyB0aG9zZS4gU28gdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBkb3duIGNvbnNpZGVyYWJseS4gSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgIGluc3RlYWQsIGF2b2lkaW5nIHRoZSBob3QtcGF0aCBvbmVzLiBOb3cgSSBzaG91bGQgdmVyaWZ5IHRoYXQgY29uZmlnIG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfU0NIX1RFUUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnPTY4PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc6Njk6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWctNzAtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnPTEwNT1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZzoxMDY6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTEwNy1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTE1NT1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6MTU2OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTU3LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9NTg9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNjAtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6NTg6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy01OS1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0xODM9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzoxODQ6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMTg1LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZz0xODc9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MTg4OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0xODktQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnPTU4PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZy02MC1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9NjA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc6NjE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTYyLUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZz02MT1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZzo2MjpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctNjMtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc6NjM6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZy02NC1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZzo2MDpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTYxLUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTE4ND1DT05GSUdfTkVUX1NDSF9TRlE9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0xODYtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz0xNTA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjE1MTpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTE1Mi1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0xMzg9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzoxMzk6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctMTQwLUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz0yNDE9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjQyOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0yNDMtQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9Mzc2PUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6Mzc3OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTM3OC1DT05GSUdfTkVUX1NDSF9UQkY9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0zNjY9Q09ORklHX05FVF9TQ0hfU0ZRPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozNjc6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMzY4LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc9NTQ9Q09ORklHX05FVF9TQ0hfU0ZRPXlcbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnOjU1OkNPTkZJR19ORVRfU0NIX1RFUUw9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWctNTYtQ09ORklHX05FVF9TQ0hfVEJGPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz01Mz1DT05GSUdfTkVUX1NDSF9TRlE9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcyMV9kZWZjb25maWc6NTQ6Q09ORklHX05FVF9TQ0hfVEVRTD15XG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZy01NS1DT05GSUdfTkVUX1NDSF9UQkY9eVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MTEzPUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjExNDpDT05GSUdfTkVUX1NDSF9URVFMPW1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctMTE1LUNPTkZJR19ORVRfU0NIX1RCRj1tXG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9jb21tb25fZGVmY29uZmlnPTMwPUNPTkZJR19ORVRfU0NIX1NGUT1tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MzE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWctMzItQ09ORklHX05FVF9TQ0hfVEJGPW1cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVF9TQ0hfU0ZRXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTIxLVxubmV0L3NjaGVkL0tjb25maWc6MTIyOmNvbmZpZyBORVRfU0NIX1RFUUxcbm5ldC9zY2hlZC9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O1RydWUgTGluayBFcXVhbGl6ZXIgKFRFUUwpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVx0JiM0Mzs9IHNjaF90ZXFsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS00NC1vYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVx0JiM0Mzs9IHNjaF9wcmlvLm9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZz01NT1DT05GSUdfTkVUX1NDSF9UQkY9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc6NTY6Q09ORklHX05FVF9TQ0hfVEVRTD1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy01Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTc5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEVRTCBRZGlzYyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBgTkVUX1NDSF9URVFMYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgbW9kaWZpY2F0aW9ucyBoYXZlIGJlZW4gbWFkZSB0byBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIFRFUUwgcWRpc2MgaW1wbGVtZW50YXRpb246IGB0ZXFsX2RlcXVldWVgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfcWRpc2NfaW5pdGAsIGB0ZXFsX21hc3Rlcl94bWl0YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAuCgpXaGVuIGNvbnNpZGVyaW5nIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbiwgSSB0aGluayBJJiMzOTtsbCBpbmNsdWRlIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAgd2l0aGluIG15IGFuYWx5c2lzLiBUaGVzZSBzZWVtIGxpa2UgZ29vZCBjYW5kaWRhdGVzIGZvciBtb3JlIGluLWRlcHRoIHJldmlldy4gSG93ZXZlciwgSSYjMzk7bSBnb2luZyB0byBleGNsdWRlIGB0ZXFsX2RlcXVldWVgIGFuZCBgdGVxbF9tYXN0ZXJfeG1pdGAgZnJvbSBpbW1lZGlhdGUgZm9jdXMsIGFzIHRoZXkgYXJlIGxpa2VseSBwZXJmb3JtYW5jZS1jcml0aWNhbCAmIzM0O2hvdCBwYXRoJiMzNDsgZnVuY3Rpb25zLCBhbmQgbXkgbWFpbiBjb25jZXJuIGlzIHRoZSBjb25maWd1cmF0aW9uLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNpbmNlIHRoZSBjb2RlIHJlc2lkZXMgaW4gYG5ldC9zY2hlZC9zY2hfdGVxbC5jYCwgYW5kIGl0JiMzOTtzIGEgcWRpc2MsIGBORVRfU0NIX1RFUUxgIGlzIHRoZSBtYWluIG9uZSBJIGV4cGVjdC4gQnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLgoKVG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVhZCB0aHJvdWdoIGB0ZXFsX3FkaXNjX2luaXRgIHRvIHNlZSBpZiBpdCBtYWtlcyB1c2Ugb2YgYW55IG90aGVyIGNvbmZpZ3MuIEl0IGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gYmUgZXh0cmEgZGlsaWdlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RlcWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0XHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgdHhxLCBOVUxMKTtcbiAxODE6XHR9XG4gMTgyOlx0XG4gMTgzOlx0c3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiAxODQ6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4gMTg1Olx0e1xuIDE4NjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xuIDE4NzpcdFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC1cdTAwM2VvcHM7XG4gMTg4Olx0XHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xuIDE4OTpcdFx0c3RydWN0IFFkaXNjICpmaXJzdDtcbiAxOTA6XHRcbiAxOTE6XHRcdGlmIChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFx1MDAzZSBtLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pXG4gMTkyOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDE5MzpcdFxuIDE5NDpcdFx0aWYgKG0tXHUwMDNlZGV2ID09IGRldilcbiAxOTU6XHRcdFx0cmV0dXJuIC1FTE9PUDtcbiAxOTY6XHRcbiAxOTc6XHRcdGlmIChzY2gtXHUwMDNlcGFyZW50ICE9IFRDX0hfUk9PVCkge1xuIDE5ODpcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDt0ZXFsIGNhbiBvbmx5IGJlIHVzZWQgYXMgcm9vdFwmIzM0Oyk7XG4gMTk5Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiAyMDA6XHRcdH1cbiAyMDE6XHRcbiAyMDI6XHRcdHEtXHUwMDNlbSA9IG07XG4gMjAzOlx0XG4gMjA0Olx0XHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnEtXHUwMDNlcSk7XG4gMjA1Olx0XG4gMjA2Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gMjA3Olx0XHRmaXJzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobS1cdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4gMjA4Olx0XHRpZiAoZmlyc3QpIHtcbiAyMDk6XHRcdFx0aWYgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApIHtcbiAyMTA6XHRcdFx0XHRpZiAoKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQgXHUwMDI2XHUwMDI2XG4gMjExOlx0XHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSkgfHxcbiAyMTI6XHRcdFx0XHQgICAgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQlJPQURDQVNUIFx1MDAyNlx1MDAyNlxuIDIxMzpcdFx0XHRcdCAgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9CUk9BRENBU1QpKSB8fFxuIDIxNDpcdFx0XHRcdCAgICAobS1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9NVUxUSUNBU1QgXHUwMDI2XHUwMDI2XG4gMjE1Olx0XHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX01VTFRJQ0FTVCkpIHx8XG4gMjE2Olx0XHRcdFx0ICAgIGRldi1cdTAwM2VtdHUgXHUwMDNjIG0tXHUwMDNlZGV2LVx1MDAzZW10dSkge1xuIDIxNzpcdFx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4gMjE4Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyMTk6XHRcdFx0XHR9XG4gMjIwOlx0XHRcdH0gZWxzZSB7XG4gMjIxOlx0XHRcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzXHUwMDI2SUZGX1BPSU5UT1BPSU5UKSlcbiAyMjI6XHRcdFx0XHRcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcbiAyMjM6XHRcdFx0XHRpZiAoIShkZXYtXHUwMDNlZmxhZ3NcdTAwMjZJRkZfQlJPQURDQVNUKSlcbiAyMjQ6XHRcdFx0XHRcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklGRl9CUk9BRENBU1Q7XG4gMjI1Olx0XHRcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzXHUwMDI2SUZGX01VTFRJQ0FTVCkpXG4gMjI2Olx0XHRcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjY9IH5JRkZfTVVMVElDQVNUO1xuIDIyNzpcdFx0XHRcdGlmIChkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpXG4gMjI4Olx0XHRcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIDIyOTpcdFx0XHR9XG4gMjMwOlx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZW5leHQsXG4gMjMxOlx0XHRcdFx0XHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUoZmlyc3QpLFxuIDIzMjpcdFx0XHRcdFx0XHRcdFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbiAyMzM6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKE5FWFRfU0xBVkUoZmlyc3QpLCBzY2gpO1xuIDIzNDpcdFx0fSBlbHNlIHtcbiAyMzU6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXHUwMDNlbmV4dCwgc2NoKTtcbiAyMzY6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuIDIzNzpcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIDIzODpcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSyl8KGRldi1cdTAwM2VmbGFnc1x1MDAyNkZNQVNLKTtcbiAyMzk6XHRcdH1cbiAyNDA6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIDI0MTpcdFx0cmV0dXJuIDA7XG4gMjQyOlx0fVxuIDI0MzpcdFxuIDI0NDpcdFxuIDI0NTpcdHN0YXRpYyBpbnRcbiAyNDY6XHRfX3RlcWxfcmVzb2x2ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3JlcyxcbiAyNDc6XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEsXG4gMjQ4Olx0XHQgICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxuIDI0OTpcdHtcbiAyNTA6XHRcdHN0cnVjdCBuZWlnaGJvdXIgKm47XG4gMjUxOlx0XHRpbnQgZXJyID0gMDtcbiAyNTI6XHRcbiAyNTM6XHRcdG4gPSBkc3RfbmVpZ2hfbG9va3VwX3NrYihkc3QsIHNrYik7XG4gMjU0Olx0XHRpZiAoIW4pXG4gMjU1Olx0XHRcdHJldHVybiAtRU5PRU5UO1xuIDI1NjpcdFxuIDI1NzpcdFx0aWYgKGRzdC1cdTAwM2VkZXYgIT0gZGV2KSB7XG4gMjU4Olx0XHRcdHN0cnVjdCBuZWlnaGJvdXIgKm1uO1xuIDI1OTpcdFxuIDI2MDpcdFx0XHRtbiA9IF9fbmVpZ2hfbG9va3VwX2Vycm5vKG4tXHUwMDNldGJsLCBuLVx1MDAzZXByaW1hcnlfa2V5LCBkZXYpO1xuIDI2MTpcdFx0XHRuZWlnaF9yZWxlYXNlKG4pO1xuIDI2MjpcdFx0XHRpZiAoSVNfRVJSKG1uKSlcbiAyNjM6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihtbik7XG4gMjY0Olx0XHRcdG4gPSBtbjtcbiAyNjU6XHRcdH1cbiAyNjY6XHRcbiAyNjc6XHRcdGlmIChuZWlnaF9ldmVudF9zZW5kKG4sIHNrYl9yZXMpID09IDApIHtcbiAyNjg6XHRcdFx0aW50IGVycjtcbiAyNjk6XHRcdFx0Y2hhciBoYWRkcltNQVhfQUREUl9MRU5dO1xuIDI3MDpcdFxuIDI3MTpcdFx0XHRuZWlnaF9oYV9zbmFwc2hvdChoYWRkciwgbiwgZGV2KTtcbiAyNzI6XHRcdFx0ZXJyID0gZGV2X2hhcmRfaGVhZGVyKHNrYiwgZGV2LCBudG9ocyhza2JfcHJvdG9jb2woc2tiLCBmYWxzZSkpLFxuIDI3MzpcdFx0XHRcdFx0ICAgICAgaGFkZHIsIE5VTEwsIHNrYi1cdTAwM2VsZW4pO1xuIDI3NDpcdFxuIDI3NTpcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIDI3NjpcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gMjc3Olx0XHR9IGVsc2Uge1xuIDI3ODpcdFx0XHRlcnIgPSAoc2tiX3JlcyA9PSBOVUxMKSA/IC1FQUdBSU4gOiAxO1xuIDI3OTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTk2CgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSQ1UgUHJvdGVjdGlvbiBmb3IgdGhlIFRFUUwgU2xhdmUgTGlzdCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGFkZGluZyBSZWFkLUNvcHktVXBkYXRlIChSQ1UpIHByb3RlY3Rpb24gdG8gdGhlIGBzbGF2ZXNgIGxpc3Qgd2l0aGluIHRoZSBgdGVxbF9tYXN0ZXJgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyBhIHNvbGlkIG1vdmUsIGFkZHJlc3NpbmcgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyB0aGF0IEkmIzM5O20gZmFtaWxpYXIgd2l0aCBpbiBuZXR3b3JrIHNjaGVkdWxpbmcgZGlzY2lwbGluZXMuIEkgc2VlIGl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgdGVxbF9kZXF1ZXVlYCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9tYXN0ZXJfeG1pdGAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLiBUaG9zZSBhcmUgYWxsIGNlbnRyYWwgdG8gdGhlIFRFUUwgKFRyYWZmaWMgRXF1YWxpemF0aW9uKSBpbXBsZW1lbnRhdGlvbi4gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX1NDSF9URVFMYCwgY29uZmlybXMgdGhlIHRhcmdldC4KCk15IG1haW4gYXJlYXMgb2YgY29uY2VybiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFyZSBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLiBUaGVzZSBhcmUgcHJpbWUgbG9jYXRpb25zIGZvciByYWNlIGNvbmRpdGlvbnMgd2hlbiBkZWFsaW5nIHdpdGggbGlzdHMgb2YgZGV2aWNlcy4gRW5zdXJpbmcgdGhhdCB1cGRhdGVzIGFuZCByZWFkcyBvZiB0aGUgYHNsYXZlc2AgbGlzdCBhcmUgUkNVLXByb3RlY3RlZCBpcyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcywgcGFydGljdWxhcmx5IGluIGEgbXVsdGktdGhyZWFkZWQgbmV0d29yayBzdGFjayBlbnZpcm9ubWVudC4KCkFscmlnaHQsIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSBpbXByb3ZlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEVRTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RlcWxfcWRpc2NfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZXFsX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dGVxbF9tYXN0ZXJfb3BlbiYjMzQ7LAogICAgJiMzNDt0ZXFsX21hc3Rlcl9tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTozMi4xMzAyOTU2MThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDEyNDM0MjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RFUUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZXFsX3FkaXNjX2luaXRcIixcbiAgICBcInRlcWxfZGVzdHJveVwiLFxuICAgIFwidGVxbF9tYXN0ZXJfb3BlblwiLFxuICAgIFwidGVxbF9tYXN0ZXJfbXR1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjMyLjEzMDMwMzM0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwMTI5MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzkyZGIwZjczNDg0NTQzOTNmMmVjMmM3MmFmYmU5ODg2YzZiMjNkY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1biAyOCAxMTozNTozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RlcWwuYyBiL25ldC9zY2hlZC9zY2hfdGVxbC5jXFxuaW5kZXggZTdiYmM5ZTUxNzRkMGUuLjI0YmEzMWY4YzgyODU1IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGVxbC5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF90ZXFsLmNcXG5AQCAtNTIsNyArNTIsOCBAQFxcbiBzdHJ1Y3QgdGVxbF9tYXN0ZXIge1xcbiBcXHRzdHJ1Y3QgUWRpc2Nfb3BzIHFvcHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLVxcdHN0cnVjdCBRZGlzYyAqc2xhdmVzO1xcbitcXHRzdHJ1Y3QgUWRpc2MgX19yY3VcXHQqc2xhdmVzO1xcbitcXHRzcGlubG9ja190XFx0XFx0c2xhdmVzX2xvY2s7IC8qIHNlcmlhbGl6ZXMgd3JpdGVzIHRvIC1cXHUwMDNlc2xhdmVzICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgbWFzdGVyX2xpc3Q7XFxuIFxcdHVuc2lnbmVkIGxvbmdcXHR0eF9ieXRlcztcXG4gXFx0dW5zaWduZWQgbG9uZ1xcdHR4X3BhY2tldHM7XFxuQEAgLTYxLDcgKzYyLDcgQEAgc3RydWN0IHRlcWxfbWFzdGVyIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEge1xcbi1cXHRzdHJ1Y3QgUWRpc2MgKm5leHQ7XFxuK1xcdHN0cnVjdCBRZGlzYyBfX3JjdVxcdCpuZXh0O1xcbiBcXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm07XFxuIFxcdHN0cnVjdCBza19idWZmX2hlYWQgcTtcXG4gfTtcXG5AQCAtMTAxLDcgKzEwMiw5IEBAIHRlcWxfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4gXFx0aWYgKHNrYiA9PSBOVUxMKSB7XFxuIFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICptID0gcWRpc2NfZGV2KHEpO1xcbiBcXHRcXHRpZiAobSkge1xcbi1cXHRcXHRcXHRkYXQtXFx1MDAzZW0tXFx1MDAzZXNsYXZlcyA9IHNjaDtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkYXQtXFx1MDAzZW0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRhdC1cXHUwMDNlbS1cXHUwMDNlc2xhdmVzLCBzY2gpO1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGF0LVxcdTAwM2VtLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIFxcdFxcdFxcdG5ldGlmX3dha2VfcXVldWUobSk7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG5AQCAtMTMyLDM0ICsxMzUsNDkgQEAgdGVxbF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbiBcXHRzdHJ1Y3QgUWRpc2MgKnEsICpwcmV2O1xcbiBcXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpkYXQgPSBxZGlzY19wcml2KHNjaCk7XFxuIFxcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gZGF0LVxcdTAwM2VtO1xcbitcXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEgPSBOVUxMO1xcbitcXHRib29sIHJlc2V0X21hc3Rlcl9xdWV1ZSA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKCFtYXN0ZXIpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHByZXYgPSBtYXN0ZXItXFx1MDAzZXNsYXZlcztcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFx0cHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVxcdTAwM2VzbGF2ZXMsXFxuK1xcdFxcdFxcdFxcdFxcdCBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNm1hc3Rlci1cXHUwMDNlc2xhdmVzX2xvY2spKTtcXG4gXFx0aWYgKHByZXYpIHtcXG4gXFx0XFx0ZG8ge1xcbi1cXHRcXHRcXHRxID0gTkVYVF9TTEFWRShwcmV2KTtcXG4tXFx0XFx0XFx0aWYgKHEgPT0gc2NoKSB7XFxuLVxcdFxcdFxcdFxcdE5FWFRfU0xBVkUocHJldikgPSBORVhUX1NMQVZFKHEpO1xcbi1cXHRcXHRcXHRcXHRpZiAocSA9PSBtYXN0ZXItXFx1MDAzZXNsYXZlcykge1xcbi1cXHRcXHRcXHRcXHRcXHRtYXN0ZXItXFx1MDAzZXNsYXZlcyA9IE5FWFRfU0xBVkUocSk7XFxuLVxcdFxcdFxcdFxcdFxcdGlmIChxID09IG1hc3Rlci1cXHUwMDNlc2xhdmVzKSB7XFxuLVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTtcXG4tXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobWFzdGVyLVxcdTAwM2VkZXYsIDApO1xcbi1cXHRcXHRcXHRcXHRcXHRcXHRtYXN0ZXItXFx1MDAzZXNsYXZlcyA9IE5VTEw7XFxuLVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVxcdTAwM2VkZXYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHR4cSwgTlVMTCk7XFxuLVxcdFxcdFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRhdC1cXHUwMDNlcSk7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRzdHJ1Y3QgUWRpc2MgKmhlYWQsICpuZXh0O1xcbitcXG4rXFx0XFx0XFx0cSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShwcmV2KSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSk7XFxuK1xcdFxcdFxcdGlmIChxICE9IHNjaCkge1xcbitcXHRcXHRcXHRcXHRwcmV2ID0gcTtcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdH0gd2hpbGUgKChwcmV2ID0gcSkgIT0gbWFzdGVyLVxcdTAwM2VzbGF2ZXMpO1xcbitcXHRcXHRcXHRuZXh0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHEpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSk7XFxuK1xcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKHByZXYpLCBuZXh0KTtcXG4rXFxuK1xcdFxcdFxcdGhlYWQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cXHUwMDNlc2xhdmVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSk7XFxuK1xcdFxcdFxcdGlmIChxID09IGhlYWQpIHtcXG4rXFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLCBuZXh0KTtcXG4rXFx0XFx0XFx0XFx0aWYgKHEgPT0gbmV4dCkge1xcbitcXHRcXHRcXHRcXHRcXHR0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci1cXHUwMDNlZGV2LCAwKTtcXG4rXFx0XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0cmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZGF0LVxcdTAwM2VxKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH0gd2hpbGUgKHByZXYgIT0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXFx1MDAzZXNsYXZlcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbiBcXHR9XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFxuK1xcdGlmIChyZXNldF9tYXN0ZXJfcXVldWUpXFxuK1xcdFxcdGRldl9yZXNldF9xdWV1ZShtYXN0ZXItXFx1MDAzZWRldiwgdHhxLCBOVUxMKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5AQCAtMTY4LDYgKzE4Niw3IEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4gXFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC1cXHUwMDNlb3BzO1xcbiBcXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbitcXHRzdHJ1Y3QgUWRpc2MgKmZpcnN0O1xcbiBcXG4gXFx0aWYgKGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFxcdTAwM2UgbS1cXHUwMDNlZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0xODQsNyArMjAzLDkgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFxuIFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnEtXFx1MDAzZXEpO1xcbiBcXG4tXFx0aWYgKG0tXFx1MDAzZXNsYXZlcykge1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4rXFx0Zmlyc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG0tXFx1MDAzZXNsYXZlcywgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtLVxcdTAwM2VzbGF2ZXNfbG9jaykpO1xcbitcXHRpZiAoZmlyc3QpIHtcXG4gXFx0XFx0aWYgKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gXFx0XFx0XFx0aWYgKChtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1BPSU5UT1BPSU5UIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICAgIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSkgfHxcXG5AQCAtMTkyLDggKzIxMywxMCBAQCBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRcXHQgICAgICEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9CUk9BRENBU1QpKSB8fFxcbiBcXHRcXHRcXHQgICAgKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTVVMVElDQVNUIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICAgIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX01VTFRJQ0FTVCkpIHx8XFxuLVxcdFxcdFxcdCAgICBkZXYtXFx1MDAzZW10dSBcXHUwMDNjIG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1KVxcbitcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VtdHUgXFx1MDAzYyBtLVxcdTAwM2VkZXYtXFx1MDAzZW10dSkge1xcbitcXHRcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRpZiAoIShkZXYtXFx1MDAzZWZsYWdzXFx1MDAyNklGRl9QT0lOVE9QT0lOVCkpXFxuIFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcXG5AQCAtMjA0LDE0ICsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlbXR1IFxcdTAwM2MgbS1cXHUwMDNlZGV2LVxcdTAwM2VtdHUpXFxuIFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gZGV2LVxcdTAwM2VtdHU7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cS1cXHUwMDNlbmV4dCA9IE5FWFRfU0xBVkUobS1cXHUwMDNlc2xhdmVzKTtcXG4tXFx0XFx0TkVYVF9TTEFWRShtLVxcdTAwM2VzbGF2ZXMpID0gc2NoO1xcbitcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cXHUwMDNlbmV4dCxcXG4rXFx0XFx0XFx0XFx0ICAgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKGZpcnN0KSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbitcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoTkVYVF9TTEFWRShmaXJzdCksIHNjaCk7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHEtXFx1MDAzZW5leHQgPSBzY2g7XFxuLVxcdFxcdG0tXFx1MDAzZXNsYXZlcyA9IHNjaDtcXG4rXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXFx1MDAzZW5leHQsIHNjaCk7XFxuK1xcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihtLVxcdTAwM2VzbGF2ZXMsIHNjaCk7XFxuIFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gZGV2LVxcdTAwM2VtdHU7XFxuIFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgPSAobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFnc1xcdTAwMjZ+Rk1BU0spfChkZXYtXFx1MDAzZWZsYWdzXFx1MDAyNkZNQVNLKTtcXG4gXFx0fVxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtMjg1LDcgKzMxMSw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB0ZXFsX21hc3Rlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGludCBzdWJxID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2JfcmVzID0gTlVMTDtcXG4gXFxuLVxcdHN0YXJ0ID0gbWFzdGVyLVxcdTAwM2VzbGF2ZXM7XFxuK1xcdHJjdV9yZWFkX2xvY2tfYmgoKTtcXG4rXFxuK1xcdHN0YXJ0ID0gcmN1X2RlcmVmZXJlbmNlX2JoKG1hc3Rlci1cXHUwMDNlc2xhdmVzKTtcXG4gXFxuIHJlc3RhcnQ6XFxuIFxcdG5vcmVzID0gMDtcXG5AQCAtMzE3LDEwICszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0XFx0ICAgIG5ldGRldl9zdGFydF94bWl0KHNrYiwgc2xhdmUsIHNsYXZlX3R4cSwgZmFsc2UpID09XFxuIFxcdFxcdFxcdFxcdCAgICBORVRERVZfVFhfT0spIHtcXG4gXFx0XFx0XFx0XFx0XFx0X19uZXRpZl90eF91bmxvY2soc2xhdmVfdHhxKTtcXG4tXFx0XFx0XFx0XFx0XFx0bWFzdGVyLVxcdTAwM2VzbGF2ZXMgPSBORVhUX1NMQVZFKHEpO1xcbitcXHRcXHRcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1hc3Rlci1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbitcXHRcXHRcXHRcXHRcXHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXFx1MDAzZXNsYXZlcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcXG4rXFx0XFx0XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbitcXHRcXHRcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bWFzdGVyLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIFxcdFxcdFxcdFxcdFxcdG5ldGlmX3dha2VfcXVldWUoZGV2KTtcXG4gXFx0XFx0XFx0XFx0XFx0bWFzdGVyLVxcdTAwM2V0eF9wYWNrZXRzKys7XFxuIFxcdFxcdFxcdFxcdFxcdG1hc3Rlci1cXHUwMDNldHhfYnl0ZXMgKz0gbGVuZ3RoO1xcbitcXHRcXHRcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcXG4gXFx0XFx0XFx0XFx0XFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFx0XFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRcXHRfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpO1xcbkBAIC0zMjksMTQgKzM2NCwyMSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRcXHRidXN5ID0gMTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgMTpcXG4tXFx0XFx0XFx0bWFzdGVyLVxcdTAwM2VzbGF2ZXMgPSBORVhUX1NMQVZFKHEpO1xcbitcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1hc3Rlci1cXHUwMDNlc2xhdmVzX2xvY2spO1xcbitcXHRcXHRcXHRpZiAocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXFx1MDAzZXNsYXZlcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcXG4rXFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG1hc3Rlci1cXHUwMDNlc2xhdmVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZtYXN0ZXItXFx1MDAzZXNsYXZlc19sb2NrKSkpO1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bWFzdGVyLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuK1xcdFxcdFxcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xcbiBcXHRcXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiBcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHRub3JlcyA9IDE7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcdFxcdF9fc2tiX3B1bGwoc2tiLCBza2JfbmV0d29ya19vZmZzZXQoc2tiKSk7XFxuLVxcdH0gd2hpbGUgKChxID0gTkVYVF9TTEFWRShxKSkgIT0gc3RhcnQpO1xcbitcXHR9IHdoaWxlICgocSA9IHJjdV9kZXJlZmVyZW5jZV9iaChORVhUX1NMQVZFKHEpKSkgIT0gc3RhcnQpO1xcbiBcXG4gXFx0aWYgKG5vcmVzIFxcdTAwMjZcXHUwMDI2IHNrYl9yZXMgPT0gTlVMTCkge1xcbiBcXHRcXHRza2JfcmVzID0gc2tiO1xcbkBAIC0zNDUsMjkgKzM4NywzMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gXFx0aWYgKGJ1c3kpIHtcXG4gXFx0XFx0bmV0aWZfc3RvcF9xdWV1ZShkZXYpO1xcbitcXHRcXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcXG4gXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xcbiBcXHR9XFxuIFxcdG1hc3Rlci1cXHUwMDNldHhfZXJyb3JzKys7XFxuIFxcbiBkcm9wOlxcbiBcXHRtYXN0ZXItXFx1MDAzZXR4X2Ryb3BwZWQrKztcXG4rXFx0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XFxuIFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gXFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gfVxcbiBcXG4gc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0c3RydWN0IFFkaXNjICpxO1xcbitcXHRzdHJ1Y3QgUWRpc2MgKnEsICpmaXJzdDtcXG4gXFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0aW50IG10dSA9IDB4RkZGRTtcXG4gXFx0dW5zaWduZWQgaW50IGZsYWdzID0gSUZGX05PQVJQIHwgSUZGX01VTFRJQ0FTVDtcXG4gXFxuLVxcdGlmIChtLVxcdTAwM2VzbGF2ZXMgPT0gTlVMTClcXG4rXFx0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXFx1MDAzZXNsYXZlcyk7XFxuK1xcdGlmICghZmlyc3QpXFxuIFxcdFxcdHJldHVybiAtRVVOQVRDSDtcXG4gXFxuIFxcdGZsYWdzID0gRk1BU0s7XFxuIFxcbi1cXHRxID0gbS1cXHUwMDNlc2xhdmVzO1xcbitcXHRxID0gZmlyc3Q7XFxuIFxcdGRvIHtcXG4gXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlID0gcWRpc2NfZGV2KHEpO1xcbiBcXG5AQCAtMzg5LDcgKzQzNCw3IEBAIHN0YXRpYyBpbnQgdGVxbF9tYXN0ZXJfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRmbGFncyBcXHUwMDI2PSB+SUZGX0JST0FEQ0FTVDtcXG4gXFx0XFx0aWYgKCEoc2xhdmUtXFx1MDAzZWZsYWdzXFx1MDAyNklGRl9NVUxUSUNBU1QpKVxcbiBcXHRcXHRcXHRmbGFncyBcXHUwMDI2PSB+SUZGX01VTFRJQ0FTVDtcXG4tXFx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVxcdTAwM2VzbGF2ZXMpO1xcbitcXHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcXG4gXFxuIFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gbXR1O1xcbiBcXHRtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzID0gKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3NcXHUwMDI2fkZNQVNLKSB8IGZsYWdzO1xcbkBAIC00MTcsMTQgKzQ2MiwxNSBAQCBzdGF0aWMgdm9pZCB0ZXFsX21hc3Rlcl9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIHN0YXRpYyBpbnQgdGVxbF9tYXN0ZXJfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdHN0cnVjdCBRZGlzYyAqcTtcXG4rXFx0c3RydWN0IFFkaXNjICpxLCAqZmlyc3Q7XFxuIFxcbi1cXHRxID0gbS1cXHUwMDNlc2xhdmVzO1xcbitcXHRmaXJzdCA9IHJ0bmxfZGVyZWZlcmVuY2UobS1cXHUwMDNlc2xhdmVzKTtcXG4rXFx0cSA9IGZpcnN0O1xcbiBcXHRpZiAocSkge1xcbiBcXHRcXHRkbyB7XFxuIFxcdFxcdFxcdGlmIChuZXdfbXR1IFxcdTAwM2UgcWRpc2NfZGV2KHEpLVxcdTAwM2VtdHUpXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHRcXHR9IHdoaWxlICgocSA9IE5FWFRfU0xBVkUocSkpICE9IG0tXFx1MDAzZXNsYXZlcyk7XFxuK1xcdFxcdH0gd2hpbGUgKChxID0gcnRubF9kZXJlZmVyZW5jZShORVhUX1NMQVZFKHEpKSkgIT0gZmlyc3QpO1xcbiBcXHR9XFxuIFxcbiBcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlbXR1LCBuZXdfbXR1KTtcXG5AQCAtNDQ0LDYgKzQ5MCw3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCB0ZXFsX21hc3Rlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm1hc3RlciA9IG5ldGRldl9wcml2KGRldik7XFxuIFxcdHN0cnVjdCBRZGlzY19vcHMgKm9wcyA9IFxcdTAwMjZtYXN0ZXItXFx1MDAzZXFvcHM7XFxuIFxcbitcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2bWFzdGVyLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIFxcdG1hc3Rlci1cXHUwMDNlZGV2XFx0PSBkZXY7XFxuIFxcdG9wcy1cXHUwMDNlcHJpdl9zaXplICA9IHNpemVvZihzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjMyLjUwMTQwNDM4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM3NTMyMTc0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSF9URVFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGVxbF9xZGlzY19pbml0XCIsXG4gICAgXCJ0ZXFsX2Rlc3Ryb3lcIixcbiAgICBcInRlcWxfbWFzdGVyX29wZW5cIixcbiAgICBcInRlcWxfbWFzdGVyX210dVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgUkNVIHByb3RlY3Rpb24gYW5kIGEgc3BpbmxvY2sgdG8gdGhlIHNsYXZlcyBsaXN0IGluIHRoZSBURVFMIChUcnVlIExpbmsgRXF1YWxpemVyKSBxZGlzYyB0byBmaXggY29uY3VycmVuY3kgaXNzdWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM5MmRiMGY3MzQ4NDU0MzkzZjJlYzJjNzJhZmJlOTg4NmM2YjIzZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1biAyOCAxMTozNTozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGVxbC5jIGIvbmV0L3NjaGVkL3NjaF90ZXFsLmNcbmluZGV4IGU3YmJjOWU1MTc0ZDBlLi4yNGJhMzFmOGM4Mjg1NSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGVxbC5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RlcWwuY1xuQEAgLTUyLDcgKzUyLDggQEBcbiBzdHJ1Y3QgdGVxbF9tYXN0ZXIge1xuIFx0c3RydWN0IFFkaXNjX29wcyBxb3BzO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi1cdHN0cnVjdCBRZGlzYyAqc2xhdmVzO1xuK1x0c3RydWN0IFFkaXNjIF9fcmN1XHQqc2xhdmVzO1xuK1x0c3BpbmxvY2tfdFx0XHRzbGF2ZXNfbG9jazsgLyogc2VyaWFsaXplcyB3cml0ZXMgdG8gLVx1MDAzZXNsYXZlcyAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBtYXN0ZXJfbGlzdDtcbiBcdHVuc2lnbmVkIGxvbmdcdHR4X2J5dGVzO1xuIFx0dW5zaWduZWQgbG9uZ1x0dHhfcGFja2V0cztcbkBAIC02MSw3ICs2Miw3IEBAIHN0cnVjdCB0ZXFsX21hc3RlciB7XG4gfTtcbiBcbiBzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhIHtcbi1cdHN0cnVjdCBRZGlzYyAqbmV4dDtcbitcdHN0cnVjdCBRZGlzYyBfX3JjdVx0Km5leHQ7XG4gXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm07XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHE7XG4gfTtcbkBAIC0xMDEsNyArMTAyLDkgQEAgdGVxbF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxuIFx0aWYgKHNrYiA9PSBOVUxMKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICptID0gcWRpc2NfZGV2KHEpO1xuIFx0XHRpZiAobSkge1xuLVx0XHRcdGRhdC1cdTAwM2VtLVx1MDAzZXNsYXZlcyA9IHNjaDtcbitcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzX2xvY2spO1xuK1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkYXQtXHUwMDNlbS1cdTAwM2VzbGF2ZXMsIHNjaCk7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGF0LVx1MDAzZW0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0XHRcdG5ldGlmX3dha2VfcXVldWUobSk7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG5AQCAtMTMyLDM0ICsxMzUsNDkgQEAgdGVxbF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuIFx0c3RydWN0IFFkaXNjICpxLCAqcHJldjtcbiBcdHN0cnVjdCB0ZXFsX3NjaGVkX2RhdGEgKmRhdCA9IHFkaXNjX3ByaXYoc2NoKTtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gZGF0LVx1MDAzZW07XG4rXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEgPSBOVUxMO1xuK1x0Ym9vbCByZXNldF9tYXN0ZXJfcXVldWUgPSBmYWxzZTtcbiBcbiBcdGlmICghbWFzdGVyKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRwcmV2ID0gbWFzdGVyLVx1MDAzZXNsYXZlcztcbitcdHNwaW5fbG9ja19iaChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuK1x0cHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbitcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbiBcdGlmIChwcmV2KSB7XG4gXHRcdGRvIHtcbi1cdFx0XHRxID0gTkVYVF9TTEFWRShwcmV2KTtcbi1cdFx0XHRpZiAocSA9PSBzY2gpIHtcbi1cdFx0XHRcdE5FWFRfU0xBVkUocHJldikgPSBORVhUX1NMQVZFKHEpO1xuLVx0XHRcdFx0aWYgKHEgPT0gbWFzdGVyLVx1MDAzZXNsYXZlcykge1xuLVx0XHRcdFx0XHRtYXN0ZXItXHUwMDNlc2xhdmVzID0gTkVYVF9TTEFWRShxKTtcbi1cdFx0XHRcdFx0aWYgKHEgPT0gbWFzdGVyLVx1MDAzZXNsYXZlcykge1xuLVx0XHRcdFx0XHRcdHN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTtcbi1cbi1cdFx0XHRcdFx0XHR0eHEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKG1hc3Rlci1cdTAwM2VkZXYsIDApO1xuLVx0XHRcdFx0XHRcdG1hc3Rlci1cdTAwM2VzbGF2ZXMgPSBOVUxMO1xuLVxuLVx0XHRcdFx0XHRcdGRldl9yZXNldF9xdWV1ZShtYXN0ZXItXHUwMDNlZGV2LFxuLVx0XHRcdFx0XHRcdFx0XHR0eHEsIE5VTEwpO1xuLVx0XHRcdFx0XHR9XG4tXHRcdFx0XHR9XG4tXHRcdFx0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZGF0LVx1MDAzZXEpO1xuLVx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0c3RydWN0IFFkaXNjICpoZWFkLCAqbmV4dDtcbitcbitcdFx0XHRxID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChORVhUX1NMQVZFKHByZXYpLFxuK1x0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbitcdFx0XHRpZiAocSAhPSBzY2gpIHtcbitcdFx0XHRcdHByZXYgPSBxO1xuK1x0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuIFxuLVx0XHR9IHdoaWxlICgocHJldiA9IHEpICE9IG1hc3Rlci1cdTAwM2VzbGF2ZXMpO1xuK1x0XHRcdG5leHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXG4rXHRcdFx0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpO1xuK1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihORVhUX1NMQVZFKHByZXYpLCBuZXh0KTtcbitcbitcdFx0XHRoZWFkID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtYXN0ZXItXHUwMDNlc2xhdmVzLFxuK1x0XHRcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKTtcbitcdFx0XHRpZiAocSA9PSBoZWFkKSB7XG4rXHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobWFzdGVyLVx1MDAzZXNsYXZlcywgbmV4dCk7XG4rXHRcdFx0XHRpZiAocSA9PSBuZXh0KSB7XG4rXHRcdFx0XHRcdHR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobWFzdGVyLVx1MDAzZWRldiwgMCk7XG4rXHRcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLCBOVUxMKTtcbitcdFx0XHRcdFx0cmVzZXRfbWFzdGVyX3F1ZXVlID0gdHJ1ZTtcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4rXHRcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRhdC1cdTAwM2VxKTtcbitcdFx0XHRicmVhaztcbitcdFx0fSB3aGlsZSAocHJldiAhPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4rXHRcdFx0XHRcdFx0XHQgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkpO1xuIFx0fVxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKTtcbitcbitcdGlmIChyZXNldF9tYXN0ZXJfcXVldWUpXG4rXHRcdGRldl9yZXNldF9xdWV1ZShtYXN0ZXItXHUwMDNlZGV2LCB0eHEsIE5VTEwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuQEAgLTE2OCw2ICsxODYsNyBAQCBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptID0gKHN0cnVjdCB0ZXFsX21hc3RlciAqKXNjaC1cdTAwM2VvcHM7XG4gXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xuK1x0c3RydWN0IFFkaXNjICpmaXJzdDtcbiBcbiBcdGlmIChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFx1MDAzZSBtLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE4NCw3ICsyMDMsOSBAQCBzdGF0aWMgaW50IHRlcWxfcWRpc2NfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFxuIFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZxLVx1MDAzZXEpO1xuIFxuLVx0aWYgKG0tXHUwMDNlc2xhdmVzKSB7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jayk7XG4rXHRmaXJzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobS1cdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtLVx1MDAzZXNsYXZlc19sb2NrKSk7XG4rXHRpZiAoZmlyc3QpIHtcbiBcdFx0aWYgKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApIHtcbiBcdFx0XHRpZiAoKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSkgfHxcbkBAIC0xOTIsOCArMjEzLDEwIEBAIHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgICAhKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0JST0FEQ0FTVCkpIHx8XG4gXHRcdFx0ICAgIChtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX01VTFRJQ0FTVCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgICEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTVVMVElDQVNUKSkgfHxcbi1cdFx0XHQgICAgZGV2LVx1MDAzZW10dSBcdTAwM2MgbS1cdTAwM2VkZXYtXHUwMDNlbXR1KVxuK1x0XHRcdCAgICBkZXYtXHUwMDNlbXR1IFx1MDAzYyBtLVx1MDAzZWRldi1cdTAwM2VtdHUpIHtcbitcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0fVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGlmICghKGRldi1cdTAwM2VmbGFnc1x1MDAyNklGRl9QT0lOVE9QT0lOVCkpXG4gXHRcdFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjY9IH5JRkZfUE9JTlRPUE9JTlQ7XG5AQCAtMjA0LDE0ICsyMjcsMTcgQEAgc3RhdGljIGludCB0ZXFsX3FkaXNjX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHRpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2MgbS1cdTAwM2VkZXYtXHUwMDNlbXR1KVxuIFx0XHRcdFx0bS1cdTAwM2VkZXYtXHUwMDNlbXR1ID0gZGV2LVx1MDAzZW10dTtcbiBcdFx0fVxuLVx0XHRxLVx1MDAzZW5leHQgPSBORVhUX1NMQVZFKG0tXHUwMDNlc2xhdmVzKTtcbi1cdFx0TkVYVF9TTEFWRShtLVx1MDAzZXNsYXZlcykgPSBzY2g7XG4rXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZW5leHQsXG4rXHRcdFx0XHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUoZmlyc3QpLFxuK1x0XHRcdFx0XHRcdFx0ICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bS1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKE5FWFRfU0xBVkUoZmlyc3QpLCBzY2gpO1xuIFx0fSBlbHNlIHtcbi1cdFx0cS1cdTAwM2VuZXh0ID0gc2NoO1xuLVx0XHRtLVx1MDAzZXNsYXZlcyA9IHNjaDtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXHUwMDNlbmV4dCwgc2NoKTtcbitcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG0tXHUwMDNlc2xhdmVzLCBzY2gpO1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VtdHUgPSBkZXYtXHUwMDNlbXR1O1xuIFx0XHRtLVx1MDAzZWRldi1cdTAwM2VmbGFncyA9IChtLVx1MDAzZWRldi1cdTAwM2VmbGFnc1x1MDAyNn5GTUFTSyl8KGRldi1cdTAwM2VmbGFnc1x1MDAyNkZNQVNLKTtcbiBcdH1cbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm0tXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTI4NSw3ICszMTEsOSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aW50IHN1YnEgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiBcdHN0cnVjdCBza19idWZmICpza2JfcmVzID0gTlVMTDtcbiBcbi1cdHN0YXJ0ID0gbWFzdGVyLVx1MDAzZXNsYXZlcztcbitcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbitcbitcdHN0YXJ0ID0gcmN1X2RlcmVmZXJlbmNlX2JoKG1hc3Rlci1cdTAwM2VzbGF2ZXMpO1xuIFxuIHJlc3RhcnQ6XG4gXHRub3JlcyA9IDA7XG5AQCAtMzE3LDEwICszNDUsMTcgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdCAgICBuZXRkZXZfc3RhcnRfeG1pdChza2IsIHNsYXZlLCBzbGF2ZV90eHEsIGZhbHNlKSA9PVxuIFx0XHRcdFx0ICAgIE5FVERFVl9UWF9PSykge1xuIFx0XHRcdFx0XHRfX25ldGlmX3R4X3VubG9jayhzbGF2ZV90eHEpO1xuLVx0XHRcdFx0XHRtYXN0ZXItXHUwMDNlc2xhdmVzID0gTkVYVF9TTEFWRShxKTtcbitcdFx0XHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4rXHRcdFx0XHRcdGlmIChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG1hc3Rlci1cdTAwM2VzbGF2ZXMsXG4rXHRcdFx0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSA9PSBxKVxuK1x0XHRcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLFxuK1x0XHRcdFx0XHRcdFx0XHQgICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKE5FWFRfU0xBVkUocSksXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgbG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jaykpKTtcbitcdFx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKTtcbiBcdFx0XHRcdFx0bmV0aWZfd2FrZV9xdWV1ZShkZXYpO1xuIFx0XHRcdFx0XHRtYXN0ZXItXHUwMDNldHhfcGFja2V0cysrO1xuIFx0XHRcdFx0XHRtYXN0ZXItXHUwMDNldHhfYnl0ZXMgKz0gbGVuZ3RoO1xuK1x0XHRcdFx0XHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiBcdFx0XHRcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiBcdFx0XHRcdH1cbiBcdFx0XHRcdF9fbmV0aWZfdHhfdW5sb2NrKHNsYXZlX3R4cSk7XG5AQCAtMzI5LDE0ICszNjQsMjEgQEAgc3RhdGljIG5ldGRldl90eF90IHRlcWxfbWFzdGVyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRcdGJ1c3kgPSAxO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDE6XG4tXHRcdFx0bWFzdGVyLVx1MDAzZXNsYXZlcyA9IE5FWFRfU0xBVkUocSk7XG4rXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm1hc3Rlci1cdTAwM2VzbGF2ZXNfbG9jayk7XG4rXHRcdFx0aWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobWFzdGVyLVx1MDAzZXNsYXZlcyxcbitcdFx0XHRcdFx0XHQgICAgICBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKSkgPT0gcSlcbitcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtYXN0ZXItXHUwMDNlc2xhdmVzLFxuK1x0XHRcdFx0XHRcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShxKSxcbitcdFx0XHRcdFx0XHRcdFx0XHQgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spKSk7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bWFzdGVyLVx1MDAzZXNsYXZlc19sb2NrKTtcbitcdFx0XHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiBcdFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdG5vcmVzID0gMTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0XHRfX3NrYl9wdWxsKHNrYiwgc2tiX25ldHdvcmtfb2Zmc2V0KHNrYikpO1xuLVx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBzdGFydCk7XG4rXHR9IHdoaWxlICgocSA9IHJjdV9kZXJlZmVyZW5jZV9iaChORVhUX1NMQVZFKHEpKSkgIT0gc3RhcnQpO1xuIFxuIFx0aWYgKG5vcmVzIFx1MDAyNlx1MDAyNiBza2JfcmVzID09IE5VTEwpIHtcbiBcdFx0c2tiX3JlcyA9IHNrYjtcbkBAIC0zNDUsMjkgKzM4NywzMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdGVxbF9tYXN0ZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0aWYgKGJ1c3kpIHtcbiBcdFx0bmV0aWZfc3RvcF9xdWV1ZShkZXYpO1xuK1x0XHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuIFx0fVxuIFx0bWFzdGVyLVx1MDAzZXR4X2Vycm9ycysrO1xuIFxuIGRyb3A6XG4gXHRtYXN0ZXItXHUwMDNldHhfZHJvcHBlZCsrO1xuK1x0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XG4gXHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIH1cbiBcbiBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRzdHJ1Y3QgUWRpc2MgKnE7XG4rXHRzdHJ1Y3QgUWRpc2MgKnEsICpmaXJzdDtcbiBcdHN0cnVjdCB0ZXFsX21hc3RlciAqbSA9IG5ldGRldl9wcml2KGRldik7XG4gXHRpbnQgbXR1ID0gMHhGRkZFO1xuIFx0dW5zaWduZWQgaW50IGZsYWdzID0gSUZGX05PQVJQIHwgSUZGX01VTFRJQ0FTVDtcbiBcbi1cdGlmIChtLVx1MDAzZXNsYXZlcyA9PSBOVUxMKVxuK1x0Zmlyc3QgPSBydG5sX2RlcmVmZXJlbmNlKG0tXHUwMDNlc2xhdmVzKTtcbitcdGlmICghZmlyc3QpXG4gXHRcdHJldHVybiAtRVVOQVRDSDtcbiBcbiBcdGZsYWdzID0gRk1BU0s7XG4gXG4tXHRxID0gbS1cdTAwM2VzbGF2ZXM7XG4rXHRxID0gZmlyc3Q7XG4gXHRkbyB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZSA9IHFkaXNjX2RldihxKTtcbiBcbkBAIC0zODksNyArNDM0LDcgQEAgc3RhdGljIGludCB0ZXFsX21hc3Rlcl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0ZmxhZ3MgXHUwMDI2PSB+SUZGX0JST0FEQ0FTVDtcbiBcdFx0aWYgKCEoc2xhdmUtXHUwMDNlZmxhZ3NcdTAwMjZJRkZfTVVMVElDQVNUKSlcbiBcdFx0XHRmbGFncyBcdTAwMjY9IH5JRkZfTVVMVElDQVNUO1xuLVx0fSB3aGlsZSAoKHEgPSBORVhUX1NMQVZFKHEpKSAhPSBtLVx1MDAzZXNsYXZlcyk7XG4rXHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcbiBcbiBcdG0tXHUwMDNlZGV2LVx1MDAzZW10dSA9IG10dTtcbiBcdG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzID0gKG0tXHUwMDNlZGV2LVx1MDAzZWZsYWdzXHUwMDI2fkZNQVNLKSB8IGZsYWdzO1xuQEAgLTQxNywxNCArNDYyLDE1IEBAIHN0YXRpYyB2b2lkIHRlcWxfbWFzdGVyX3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IHRlcWxfbWFzdGVyX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiB7XG4gXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm0gPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0c3RydWN0IFFkaXNjICpxO1xuK1x0c3RydWN0IFFkaXNjICpxLCAqZmlyc3Q7XG4gXG4tXHRxID0gbS1cdTAwM2VzbGF2ZXM7XG4rXHRmaXJzdCA9IHJ0bmxfZGVyZWZlcmVuY2UobS1cdTAwM2VzbGF2ZXMpO1xuK1x0cSA9IGZpcnN0O1xuIFx0aWYgKHEpIHtcbiBcdFx0ZG8ge1xuIFx0XHRcdGlmIChuZXdfbXR1IFx1MDAzZSBxZGlzY19kZXYocSktXHUwMDNlbXR1KVxuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRcdH0gd2hpbGUgKChxID0gTkVYVF9TTEFWRShxKSkgIT0gbS1cdTAwM2VzbGF2ZXMpO1xuK1x0XHR9IHdoaWxlICgocSA9IHJ0bmxfZGVyZWZlcmVuY2UoTkVYVF9TTEFWRShxKSkpICE9IGZpcnN0KTtcbiBcdH1cbiBcbiBcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbmV3X210dSk7XG5AQCAtNDQ0LDYgKzQ5MCw3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCB0ZXFsX21hc3Rlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IFFkaXNjX29wcyAqb3BzID0gXHUwMDI2bWFzdGVyLVx1MDAzZXFvcHM7XG4gXG4rXHRzcGluX2xvY2tfaW5pdChcdTAwMjZtYXN0ZXItXHUwMDNlc2xhdmVzX2xvY2spO1xuIFx0bWFzdGVyLVx1MDAzZWRldlx0PSBkZXY7XG4gXHRvcHMtXHUwMDNlcHJpdl9zaXplICA9IHNpemVvZihzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjMyLjUwMTQwODExMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDE2MzUzNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB0ZXFsLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbmV0L3NjaGVkL3NjaF90ZXFsLmNgLCBzcGVjaWZpY2FsbHkgdGhlIFRydWUgTGluayBFcXVhbGl6ZXIgcXVldWluZyBkaXNjaXBsaW5lLiBUaGF0J3MgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgUkNVIHByb3RlY3Rpb24gYW5kIGEgc3BpbmxvY2ssIGBzbGF2ZXNfbG9ja2AsIHRvIHRoZSBgc2xhdmVzYCBsaXN0IHdpdGhpbiB0aGUgYHN0cnVjdCB0ZXFsX21hc3RlcmAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgdHdvIHBvc3NpYmlsaXRpZXM6IGEgY29uY3VycmVuY3kgYnVnIGlzIGJlaW5nIGFkZHJlc3NlZCwgb3IgdGhleSdyZSBiZWVmaW5nIHVwIHRoZSBSQ1Ugc3VwcG9ydC4gR2l2ZW4gdGhhdCB0aGV5J3JlIHRvdWNoaW5nIGB0ZXFsX2RlcXVldWVgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfcWRpc2NfaW5pdGAsIGB0ZXFsX21hc3Rlcl94bWl0YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAsIHRoZSBzY29wZSBpcyBmYWlybHkgYnJvYWQuIFRoaXMgaXNuJ3QgYSBtaW5vciB0d2Vhay5cblxuSSdkIHNheSB0aGlzIGlzIGRlZmluaXRlbHkgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmc7IHRoZSBjaGFuZ2VzIHBvdGVudGlhbGx5IGltcGFjdCBzZXZlcmFsIGNvcmUgZnVuY3Rpb25zLiBCZWZvcmUgZGl2aW5nIGRlZXBlciwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYHNjaF90ZXFsLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGlmIHRoaXMgd2lsbCBpbXBhY3QgdGhlIGJhc2UgZnVuY3Rpb25hbGl0eS4gTGV0J3Mgc2VlIGhvdyB0aGlzIGFmZmVjdHMgb3VyIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTozNy4xMDMwNDgxMzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNDUxNTA0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfdGVxbFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZWlnaGJvdXIuYz0xMzA5PXN0YXRpYyB2b2lkIG5laWdoX3VwZGF0ZV9wcm9jZXNzX2FycF9xdWV1ZShzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaClcXG4tLVxcbm5ldC9jb3JlL25laWdoYm91ci5jLTEzMjUtXFx0XFx0LyogV2h5IG5vdCBqdXN0IHVzZSAnbmVpZ2gnIGFzLWlzPyAgVGhlIHByb2JsZW0gaXMgdGhhdFxcbm5ldC9jb3JlL25laWdoYm91ci5jOjEzMjY6XFx0XFx0ICogdGhpbmdzIHN1Y2ggYXMgc2hhcGVyLCBlcWwsIGFuZCBzY2hfdGVxbCBjYW4gZW5kIHVwXFxubmV0L2NvcmUvbmVpZ2hib3VyLmMtMTMyNy1cXHRcXHQgKiB1c2luZyBhbHRlcm5hdGl2ZSwgZGlmZmVyZW50LCBuZWlnaCBvYmplY3RzIHRvIG91dHB1dFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9MTIyPWNvbmZpZyBORVRfU0NIX1RFUUxcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTEyOC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMjk6XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RlcWwuY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzAtXFxubmV0L3NjaGVkL0tjb25maWctMTMxLVxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbm5ldC9zY2hlZC9LY29uZmlnOjEzMjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGVxbC5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzMtXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVxcdCs9IHNjaF90YmYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVxcdCs9IHNjaF90ZXFsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDQtb2JqLSQoQ09ORklHX05FVF9TQ0hfUFJJTylcXHQrPSBzY2hfcHJpby5vXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxubmV0L3NjaGVkL3NjaF90ZXFsLmM6MjovKiBuZXQvc2NoZWQvc2NoX3RlcWwuY1xcdFxcXCJUcnVlXFxcIiAob3IgXFxcInRyaXZpYWxcXFwiKSBsaW5rIGVxdWFsaXplci5cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYy0zLSAqXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkYy5zaD02Nz10cnlfbW9kcHJvYmUgc2NoX2h0YlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoOjY4OnRyeV9tb2Rwcm9iZSBzY2hfdGVxbFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjLnNoLTY5LXRyeV9tb2Rwcm9iZSBzY2hfZHVhbHBpMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTozOS42Mjc1ODEzODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjIyMjg4NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVEVRTCBRZGlzYyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGhlcmUgaXMgYE5FVF9TQ0hfVEVRTGAuIFJpZ2h0LCBsZXQncyBzZWUgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZC4gTG9va3MgbGlrZSB3ZSd2ZSBnb3QgYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC4gQWxsIGNsZWFybHkgVEVRTCBxZGlzYyBjb21wb25lbnRzLlxuXG5Ob3csIGxldCBtZSB6b29tIGluIG9uIHRob3NlIHN5bWJvbHMuIEhtbSwgYHRlcWxfbWFzdGVyX3htaXRgIGFuZCBgdGVxbF9kZXF1ZXVlYC4uLiB0aG9zZSBhcmUgYm90aCBkZWZpbml0ZWx5IGhvdC1wYXRoIGZ1bmN0aW9ucywgcGFydCBvZiB0aGUgdHJhbnNtaXQgYW5kIGRlcXVldWUgcHJvY2Vzc2VzIHJlc3BlY3RpdmVseS4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGF2b2lkaW5nIHRob3NlLiBTbyB0aGF0IG5hcnJvd3MgdGhlIHNjb3BlIGRvd24gY29uc2lkZXJhYmx5LiBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAgaW5zdGVhZCwgYXZvaWRpbmcgdGhlIGhvdC1wYXRoIG9uZXMuIE5vdyBJIHNob3VsZCB2ZXJpZnkgdGhhdCBjb25maWcgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjgzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjQ0LjI0OTg3MzM2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1NjE1OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9TQ0hfVEVRTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc9Njg9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc6Njk6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnLTcwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnPTEwNT1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc6MTA2OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWctMTA3LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZz0xNTU9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzoxNTY6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMTU3LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz01OD1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnLTYwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz01Nz1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjU4OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTU5LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc9MTgzPUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjE4NDpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMTg1LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTE4Nz1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MTg4OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctMTg5LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnPTU4PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzo1OTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnLTYwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnPTYwPUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZzo2MTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTYyLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnPTYxPUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZzo2MjpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnLTYzLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjYzOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnLTY0LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZz01OT1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnOjYwOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTYxLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MTg0PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjE4NTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMTg2LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz0xNTA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzoxNTE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctMTUyLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9MTM4PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjEzOTpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctMTQwLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTI0MT1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MjQyOkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMjQzLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9Mzc2PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjM3NzpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMzc4LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MzY2PUNPTkZJR19ORVRfU0NIX1NGUT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjM2NzpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMzY4LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzEyX2RlZmNvbmZpZz01ND1DT05GSUdfTkVUX1NDSF9TRlE9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnOjU1OkNPTkZJR19ORVRfU0NIX1RFUUw9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnLTU2LUNPTkZJR19ORVRfU0NIX1RCRj15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz01Mz1DT05GSUdfTkVUX1NDSF9TRlE9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MjFfZGVmY29uZmlnOjU0OkNPTkZJR19ORVRfU0NIX1RFUUw9eVxcbmFyY2gvc2gvY29uZmlncy9zZTc3MjFfZGVmY29uZmlnLTU1LUNPTkZJR19ORVRfU0NIX1RCRj15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnPTExMz1DT05GSUdfTkVUX1NDSF9TRlE9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc6MTE0OkNPTkZJR19ORVRfU0NIX1RFUUw9bVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctMTE1LUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc9MzA9Q09ORklHX05FVF9TQ0hfU0ZRPW1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWc6MzE6Q09ORklHX05FVF9TQ0hfVEVRTD1tXFxuYXJjaC94dGVuc2EvY29uZmlncy9jb21tb25fZGVmY29uZmlnLTMyLUNPTkZJR19ORVRfU0NIX1RCRj1tXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVF9TQ0hfU0ZRXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjEtXFxubmV0L3NjaGVkL0tjb25maWc6MTIyOmNvbmZpZyBORVRfU0NIX1RFUUxcXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjMtXFx0dHJpc3RhdGUgXFxcIlRydWUgTGluayBFcXVhbGl6ZXIgKFRFUUwpXFxcIlxcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcXHQrPSBzY2hfdGJmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEVRTClcXHQrPSBzY2hfdGVxbC5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTQ0LW9iai0kKENPTkZJR19ORVRfU0NIX1BSSU8pXFx0Kz0gc2NoX3ByaW8ub1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWc9NTU9Q09ORklHX05FVF9TQ0hfVEJGPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZzo1NjpDT05GSUdfTkVUX1NDSF9URVFMPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZy01Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTE6MzU6NDYuNzQ1NTI1NzUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcyNzgwMDQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRFUUwgUWRpc2MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIGBORVRfU0NIX1RFUUxgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlIHRvIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgVEVRTCBxZGlzYyBpbXBsZW1lbnRhdGlvbjogYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC5cblxuV2hlbiBjb25zaWRlcmluZyB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24sIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGB0ZXFsX3FkaXNjX2luaXRgLCBgdGVxbF9kZXN0cm95YCwgYHRlcWxfbWFzdGVyX29wZW5gLCBhbmQgYHRlcWxfbWFzdGVyX210dWAgd2l0aGluIG15IGFuYWx5c2lzLiBUaGVzZSBzZWVtIGxpa2UgZ29vZCBjYW5kaWRhdGVzIGZvciBtb3JlIGluLWRlcHRoIHJldmlldy4gSG93ZXZlciwgSSdtIGdvaW5nIHRvIGV4Y2x1ZGUgYHRlcWxfZGVxdWV1ZWAgYW5kIGB0ZXFsX21hc3Rlcl94bWl0YCBmcm9tIGltbWVkaWF0ZSBmb2N1cywgYXMgdGhleSBhcmUgbGlrZWx5IHBlcmZvcm1hbmNlLWNyaXRpY2FsIFwiaG90IHBhdGhcIiBmdW5jdGlvbnMsIGFuZCBteSBtYWluIGNvbmNlcm4gaXMgdGhlIGNvbmZpZ3VyYXRpb24uXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTaW5jZSB0aGUgY29kZSByZXNpZGVzIGluIGBuZXQvc2NoZWQvc2NoX3RlcWwuY2AsIGFuZCBpdCdzIGEgcWRpc2MsIGBORVRfU0NIX1RFUUxgIGlzIHRoZSBtYWluIG9uZSBJIGV4cGVjdC4gQnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLCBJJ20gZ29pbmcgdG8gcXVpY2tseSByZWFkIHRocm91Z2ggYHRlcWxfcWRpc2NfaW5pdGAgdG8gc2VlIGlmIGl0IG1ha2VzIHVzZSBvZiBhbnkgb3RoZXIgY29uZmlncy4gSXQgaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBiZSBleHRyYSBkaWxpZ2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk3OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMTozNTo1MS40NzMzMjk4NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL3NjaF90ZXFsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHRkZXZfcmVzZXRfcXVldWUobWFzdGVyLVxcdTAwM2VkZXYsIHR4cSwgTlVMTCk7XFxuIDE4MTpcXHR9XFxuIDE4MjpcXHRcXG4gMTgzOlxcdHN0YXRpYyBpbnQgdGVxbF9xZGlzY19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIDE4NDpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIDE4NTpcXHR7XFxuIDE4NjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XFxuIDE4NzpcXHRcXHRzdHJ1Y3QgdGVxbF9tYXN0ZXIgKm0gPSAoc3RydWN0IHRlcWxfbWFzdGVyICopc2NoLVxcdTAwM2VvcHM7XFxuIDE4ODpcXHRcXHRzdHJ1Y3QgdGVxbF9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbiAxODk6XFx0XFx0c3RydWN0IFFkaXNjICpmaXJzdDtcXG4gMTkwOlxcdFxcbiAxOTE6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIFxcdTAwM2UgbS1cXHUwMDNlZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pXFxuIDE5MjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTkzOlxcdFxcbiAxOTQ6XFx0XFx0aWYgKG0tXFx1MDAzZWRldiA9PSBkZXYpXFxuIDE5NTpcXHRcXHRcXHRyZXR1cm4gLUVMT09QO1xcbiAxOTY6XFx0XFxuIDE5NzpcXHRcXHRpZiAoc2NoLVxcdTAwM2VwYXJlbnQgIT0gVENfSF9ST09UKSB7XFxuIDE5ODpcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwidGVxbCBjYW4gb25seSBiZSB1c2VkIGFzIHJvb3RcXFwiKTtcXG4gMTk5OlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMjAwOlxcdFxcdH1cXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0cS1cXHUwMDNlbSA9IG07XFxuIDIwMzpcXHRcXG4gMjA0OlxcdFxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnEtXFx1MDAzZXEpO1xcbiAyMDU6XFx0XFxuIDIwNjpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4gMjA3OlxcdFxcdGZpcnN0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChtLVxcdTAwM2VzbGF2ZXMsIGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spKTtcXG4gMjA4OlxcdFxcdGlmIChmaXJzdCkge1xcbiAyMDk6XFx0XFx0XFx0aWYgKG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gMjEwOlxcdFxcdFxcdFxcdGlmICgobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QT0lOVE9QT0lOVCBcXHUwMDI2XFx1MDAyNlxcbiAyMTE6XFx0XFx0XFx0XFx0ICAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQpKSB8fFxcbiAyMTI6XFx0XFx0XFx0XFx0ICAgIChtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX0JST0FEQ0FTVCBcXHUwMDI2XFx1MDAyNlxcbiAyMTM6XFx0XFx0XFx0XFx0ICAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfQlJPQURDQVNUKSkgfHxcXG4gMjE0OlxcdFxcdFxcdFxcdCAgICAobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9NVUxUSUNBU1QgXFx1MDAyNlxcdTAwMjZcXG4gMjE1OlxcdFxcdFxcdFxcdCAgICAgIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX01VTFRJQ0FTVCkpIHx8XFxuIDIxNjpcXHRcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2VtdHUgXFx1MDAzYyBtLVxcdTAwM2VkZXYtXFx1MDAzZW10dSkge1xcbiAyMTc6XFx0XFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm0tXFx1MDAzZXNsYXZlc19sb2NrKTtcXG4gMjE4OlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyMTk6XFx0XFx0XFx0XFx0fVxcbiAyMjA6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjIxOlxcdFxcdFxcdFxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3NcXHUwMDI2SUZGX1BPSU5UT1BPSU5UKSlcXG4gMjIyOlxcdFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklGRl9QT0lOVE9QT0lOVDtcXG4gMjIzOlxcdFxcdFxcdFxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3NcXHUwMDI2SUZGX0JST0FEQ0FTVCkpXFxuIDIyNDpcXHRcXHRcXHRcXHRcXHRtLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JRkZfQlJPQURDQVNUO1xcbiAyMjU6XFx0XFx0XFx0XFx0aWYgKCEoZGV2LVxcdTAwM2VmbGFnc1xcdTAwMjZJRkZfTVVMVElDQVNUKSlcXG4gMjI2OlxcdFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklGRl9NVUxUSUNBU1Q7XFxuIDIyNzpcXHRcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VtdHUgXFx1MDAzYyBtLVxcdTAwM2VkZXYtXFx1MDAzZW10dSlcXG4gMjI4OlxcdFxcdFxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlbXR1ID0gZGV2LVxcdTAwM2VtdHU7XFxuIDIyOTpcXHRcXHRcXHR9XFxuIDIzMDpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cXHUwMDNlbmV4dCxcXG4gMjMxOlxcdFxcdFxcdFxcdFxcdCAgIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoTkVYVF9TTEFWRShmaXJzdCksXFxuIDIzMjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2bS1cXHUwMDNlc2xhdmVzX2xvY2spKSk7XFxuIDIzMzpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoTkVYVF9TTEFWRShmaXJzdCksIHNjaCk7XFxuIDIzNDpcXHRcXHR9IGVsc2Uge1xcbiAyMzU6XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXFx1MDAzZW5leHQsIHNjaCk7XFxuIDIzNjpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobS1cXHUwMDNlc2xhdmVzLCBzY2gpO1xcbiAyMzc6XFx0XFx0XFx0bS1cXHUwMDNlZGV2LVxcdTAwM2VtdHUgPSBkZXYtXFx1MDAzZW10dTtcXG4gMjM4OlxcdFxcdFxcdG0tXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgPSAobS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFnc1xcdTAwMjZ+Rk1BU0spfChkZXYtXFx1MDAzZWZsYWdzXFx1MDAyNkZNQVNLKTtcXG4gMjM5OlxcdFxcdH1cXG4gMjQwOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZtLVxcdTAwM2VzbGF2ZXNfbG9jayk7XFxuIDI0MTpcXHRcXHRyZXR1cm4gMDtcXG4gMjQyOlxcdH1cXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFxuIDI0NTpcXHRzdGF0aWMgaW50XFxuIDI0NjpcXHRfX3RlcWxfcmVzb2x2ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3JlcyxcXG4gMjQ3OlxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHEsXFxuIDI0ODpcXHRcXHQgICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxcbiAyNDk6XFx0e1xcbiAyNTA6XFx0XFx0c3RydWN0IG5laWdoYm91ciAqbjtcXG4gMjUxOlxcdFxcdGludCBlcnIgPSAwO1xcbiAyNTI6XFx0XFxuIDI1MzpcXHRcXHRuID0gZHN0X25laWdoX2xvb2t1cF9za2IoZHN0LCBza2IpO1xcbiAyNTQ6XFx0XFx0aWYgKCFuKVxcbiAyNTU6XFx0XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdGlmIChkc3QtXFx1MDAzZWRldiAhPSBkZXYpIHtcXG4gMjU4OlxcdFxcdFxcdHN0cnVjdCBuZWlnaGJvdXIgKm1uO1xcbiAyNTk6XFx0XFxuIDI2MDpcXHRcXHRcXHRtbiA9IF9fbmVpZ2hfbG9va3VwX2Vycm5vKG4tXFx1MDAzZXRibCwgbi1cXHUwMDNlcHJpbWFyeV9rZXksIGRldik7XFxuIDI2MTpcXHRcXHRcXHRuZWlnaF9yZWxlYXNlKG4pO1xcbiAyNjI6XFx0XFx0XFx0aWYgKElTX0VSUihtbikpXFxuIDI2MzpcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihtbik7XFxuIDI2NDpcXHRcXHRcXHRuID0gbW47XFxuIDI2NTpcXHRcXHR9XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdGlmIChuZWlnaF9ldmVudF9zZW5kKG4sIHNrYl9yZXMpID09IDApIHtcXG4gMjY4OlxcdFxcdFxcdGludCBlcnI7XFxuIDI2OTpcXHRcXHRcXHRjaGFyIGhhZGRyW01BWF9BRERSX0xFTl07XFxuIDI3MDpcXHRcXG4gMjcxOlxcdFxcdFxcdG5laWdoX2hhX3NuYXBzaG90KGhhZGRyLCBuLCBkZXYpO1xcbiAyNzI6XFx0XFx0XFx0ZXJyID0gZGV2X2hhcmRfaGVhZGVyKHNrYiwgZGV2LCBudG9ocyhza2JfcHJvdG9jb2woc2tiLCBmYWxzZSkpLFxcbiAyNzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgaGFkZHIsIE5VTEwsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjc0OlxcdFxcbiAyNzU6XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDI3NjpcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiAyNzc6XFx0XFx0fSBlbHNlIHtcXG4gMjc4OlxcdFxcdFxcdGVyciA9IChza2JfcmVzID09IE5VTEwpID8gLUVBR0FJTiA6IDE7XFxuIDI3OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDExOjM1OjUxLjQ3MzQ5NjE3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2OTY5NzYwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUkNVIFByb3RlY3Rpb24gZm9yIHRoZSBURVFMIFNsYXZlIExpc3QqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGFkZGluZyBSZWFkLUNvcHktVXBkYXRlIChSQ1UpIHByb3RlY3Rpb24gdG8gdGhlIGBzbGF2ZXNgIGxpc3Qgd2l0aGluIHRoZSBgdGVxbF9tYXN0ZXJgIHN0cnVjdHVyZS4gVGhhdCdzIGEgc29saWQgbW92ZSwgYWRkcmVzc2luZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIHRoYXQgSSdtIGZhbWlsaWFyIHdpdGggaW4gbmV0d29yayBzY2hlZHVsaW5nIGRpc2NpcGxpbmVzLiBJIHNlZSBpdCB0b3VjaGVzIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYHRlcWxfZGVxdWV1ZWAsIGB0ZXFsX2Rlc3Ryb3lgLCBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfbWFzdGVyX3htaXRgLCBgdGVxbF9tYXN0ZXJfb3BlbmAsIGFuZCBgdGVxbF9tYXN0ZXJfbXR1YC4gVGhvc2UgYXJlIGFsbCBjZW50cmFsIHRvIHRoZSBURVFMIChUcmFmZmljIEVxdWFsaXphdGlvbikgaW1wbGVtZW50YXRpb24uIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE5FVF9TQ0hfVEVRTGAsIGNvbmZpcm1zIHRoZSB0YXJnZXQuXG5cbk15IG1haW4gYXJlYXMgb2YgY29uY2VybiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFyZSBgdGVxbF9xZGlzY19pbml0YCwgYHRlcWxfZGVzdHJveWAsIGB0ZXFsX21hc3Rlcl9vcGVuYCwgYW5kIGB0ZXFsX21hc3Rlcl9tdHVgLiBUaGVzZSBhcmUgcHJpbWUgbG9jYXRpb25zIGZvciByYWNlIGNvbmRpdGlvbnMgd2hlbiBkZWFsaW5nIHdpdGggbGlzdHMgb2YgZGV2aWNlcy4gRW5zdXJpbmcgdGhhdCB1cGRhdGVzIGFuZCByZWFkcyBvZiB0aGUgYHNsYXZlc2AgbGlzdCBhcmUgUkNVLXByb3RlY3RlZCBpcyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcywgcGFydGljdWxhcmx5IGluIGEgbXVsdGktdGhyZWFkZWQgbmV0d29yayBzdGFjayBlbnZpcm9ubWVudC5cblxuQWxyaWdodCwgSSdsbCBzZXQgdGhlIHJlc3VsdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSBpbXByb3ZlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExOTYsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTE6MzU6NTYuMTcwNDc2Mjk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxMzc0NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfVEVRTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRlcWxfcWRpc2NfaW5pdFwiLFxuICAgIFwidGVxbF9kZXN0cm95XCIsXG4gICAgXCJ0ZXFsX21hc3Rlcl9vcGVuXCIsXG4gICAgXCJ0ZXFsX21hc3Rlcl9tdHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSBwcm90ZWN0aW9uIGFuZCBhIHNwaW5sb2NrIHRvIHRoZSBzbGF2ZXMgbGlzdCBpbiB0aGUgVEVRTCAoVHJ1ZSBMaW5rIEVxdWFsaXplcikgcWRpc2MgdG8gZml4IGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RFUUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZXFsX3FkaXNjX2luaXRcIixcbiAgICBcInRlcWxfZGVzdHJveVwiLFxuICAgIFwidGVxbF9tYXN0ZXJfb3BlblwiLFxuICAgIFwidGVxbF9tYXN0ZXJfbXR1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcHJvdGVjdGlvbiBhbmQgYSBzcGlubG9jayB0byB0aGUgc2xhdmVzIGxpc3QgaW4gdGhlIFRFUUwgKFRydWUgTGluayBFcXVhbGl6ZXIpIHFkaXNjIHRvIGZpeCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[1] Phase: Succeeded StartedAt: 2026-06-28 11:36:08 +0000 UTC FinishedAt: 2026-06-28 11:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-28 11:36:08 +0000 UTC FinishedAt: 2026-06-28 11:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2] Phase: Succeeded StartedAt: 2026-06-28 11:36:08 +0000 UTC FinishedAt: 2026-06-28 15:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-28 11:36:08 +0000 UTC FinishedAt: 2026-06-28 15:34:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-28 11:36:08 +0000 UTC FinishedAt: 2026-06-28 11:36:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-28 11:36:08 +0000 UTC FinishedAt: 2026-06-28 11:36:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-1575984657/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-28 11:36:18 +0000 UTC FinishedAt: 2026-06-28 11:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-28 11:36:18 +0000 UTC FinishedAt: 2026-06-28 11:59:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*746e36cb-6fdc-491b-918e-f3ed2ba3e92a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-1575984657/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7ccf0515-6304-4cf9-a722-6d3be115eff1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-1797357503/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-28 11:36:18 +0000 UTC FinishedAt: 2026-06-28 11:58:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*746e36cb-6fdc-491b-918e-f3ed2ba3e92a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-1575984657/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7ccf0515-6304-4cf9-a722-6d3be115eff1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-1797357503/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-28 11:59:05 +0000 UTC FinishedAt: 2026-06-28 11:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-28 11:59:05 +0000 UTC FinishedAt: 2026-06-28 11:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-28 11:59:05 +0000 UTC FinishedAt: 2026-06-28 11:59:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-28 11:59:05 +0000 UTC FinishedAt: 2026-06-28 11:59:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-3612073700/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-28 11:59:52 +0000 UTC FinishedAt: 2026-06-28 12:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-28 11:59:52 +0000 UTC FinishedAt: 2026-06-28 12:01:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ccf0515-6304-4cf9-a722-6d3be115eff1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-1797357503/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-28 12:02:03 +0000 UTC FinishedAt: 2026-06-28 12:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-28 12:02:03 +0000 UTC FinishedAt: 2026-06-28 12:02:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-28 12:02:03 +0000 UTC FinishedAt: 2026-06-28 12:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-28 12:02:03 +0000 UTC FinishedAt: 2026-06-28 12:29:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*746e36cb-6fdc-491b-918e-f3ed2ba3e92a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-3612073700/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "b3ae2a26-d5cb-43b7-bb6e-0edf7d4647c4", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-3058296944/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-28 12:02:03 +0000 UTC FinishedAt: 2026-06-28 12:29:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*746e36cb-6fdc-491b-918e-f3ed2ba3e92a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-3612073700/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "b3ae2a26-d5cb-43b7-bb6e-0edf7d4647c4", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-3058296944/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-28 12:29:32 +0000 UTC FinishedAt: 2026-06-28 12:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-28 12:29:32 +0000 UTC FinishedAt: 2026-06-28 12:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-28 12:29:32 +0000 UTC FinishedAt: 2026-06-28 12:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-28 12:29:32 +0000 UTC FinishedAt: 2026-06-28 12:31:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b3ae2a26-d5cb-43b7-bb6e-0edf7d4647c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-3058296944/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-28 12:31:43 +0000 UTC FinishedAt: 2026-06-28 15:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-28 12:31:43 +0000 UTC FinishedAt: 2026-06-28 15:34:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7ccf0515-6304-4cf9-a722-6d3be115eff1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b3ae2a26-d5cb-43b7-bb6e-0edf7d4647c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-1797357503/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-3058296944/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-28 12:31:43 +0000 UTC FinishedAt: 2026-06-28 12:32:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-28 12:31:43 +0000 UTC FinishedAt: 2026-06-28 12:32:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-998765933/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-28 12:31:43 +0000 UTC FinishedAt: 2026-06-28 12:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-28 12:31:43 +0000 UTC FinishedAt: 2026-06-28 12:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-28 12:31:44 +0000 UTC FinishedAt: 2026-06-28 12:31:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-28 12:32:30 +0000 UTC FinishedAt: 2026-06-28 15:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7f7hs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["teql_qdisc_init","teql_destroy","teql_master_open","teql_master_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TEQL"],"series_id":"291ccce1-0e87-4a14-9379-a064e4e1f933","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-28 12:32:30 +0000 UTC FinishedAt: 2026-06-28 15:34:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ccf0515-6304-4cf9-a722-6d3be115eff1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b3ae2a26-d5cb-43b7-bb6e-0edf7d4647c4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-1797357503/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-build-action-3058296944/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7f7hs/series-workflow7f7hs-convert-artifact-998765933/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}