Name: series-workflowfnnxs Phase: Succeeded StartedAt: 2026-07-15 05:18:53 +0000 UTC FinishedAt: 2026-07-15 10:06:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[0] Phase: Succeeded StartedAt: 2026-07-15 05:18:53 +0000 UTC FinishedAt: 2026-07-15 05:43:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 05:18:53 +0000 UTC FinishedAt: 2026-07-15 05:43:04 +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": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "eab11d07-fd6b-40cd-bbc2-52d01e3dd54e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_udp_rcast_add", "tipc_udp_rcast_disc", "tipc_udp_nl_bearer_add", "tipc_udp_enable", "cleanup_bearer", "tipc_udp_disable" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9kaXNhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJjYXN0X2xvY2tgKSBhbmQgYSBgZGlzYWJsZWRgIGZsYWcgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YCBpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLCBmaXhpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDExODkxOTVkMjliNTg5OWRkODIxMzJmMzEyOWU3MDQ4Nzg5N2NlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDA1OjQyOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5jIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcbmluZGV4IDYyYWU3ZjViNTg0MDljLi4xODQ0ZGVhMDFjMDZlYSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuQEAgLTk0LDYgJiM0Mzs5NCw3IEBAIHN0cnVjdCB1ZHBfcmVwbGljYXN0IHtcbiAgKiBAaWZpbmRleDpcdGxvY2FsIGFkZHJlc3Mgc2NvcGVcbiAgKiBAd29yazpcdHVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlclxuICAqIEByY2FzdDpcdGFzc29jaWF0ZWQgdWRwX3JlcGxpY2FzdCBjb250YWluZXJcbiYjNDM7ICogQHJjYXN0X2xvY2s6XHRzZXJpYWxpemUgdXBkYXRlcyB0byBAcmNhc3QubGlzdCBhZ2FpbnN0IGNvbmN1cnJlbnQgdXBkYXRlcnNcbiAgKi9cbiBzdHJ1Y3QgdWRwX2JlYXJlciB7XG4gXHRzdHJ1Y3QgdGlwY19iZWFyZXIgX19yY3UgKmJlYXJlcjtcbkBAIC0xMDEsNiAmIzQzOzEwMiw4IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHUzMiBpZmluZGV4O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDtcbiYjNDM7XHRzcGlubG9ja190IHJjYXN0X2xvY2s7XG4mIzQzO1x0Ym9vbCBkaXNhYmxlZDtcbiB9O1xuIFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXG5AQCAtMjc4LDI2ICYjNDM7MjgxLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0aXBjX3VkcF9pc19rbm93bl9wZWVyKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbi1cdFx0XHRcdCAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbi17XG4tXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4tXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XG4tXG4tXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXHUwMDNlbWVkaWFfcHRyKTtcbi1cdGlmICghdWIpIHtcbi1cdFx0cHJfZXJyX3JhdGVsaW1pdGVkKFwmIzM0O1VEUCBiZWFyZXIgaW5zdGFuY2Ugbm90IGZvdW5kXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dXJuIGZhbHNlO1xuLVx0fVxuLVxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbi1cdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpKVxuLVx0XHRcdHJldHVybiB0cnVlO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGZhbHNlO1xuLX1cbi1cbiBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRcdFx0ICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuIHtcbkBAIC0zMDgsMTYgJiM0MzsyOTEsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0aWYgKCF1YilcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuJiM0MztcdGlmICh1Yi1cdTAwM2VkaXNhYmxlZCkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuJiM0MztcdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRyY2FzdCA9IGttYWxsb2Nfb2JqKCpyY2FzdCwgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXJjYXN0KVxuJiM0MztcdGlmICghcmNhc3QpIHtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoZHN0X2NhY2hlX2luaXQoXHUwMDI2cmNhc3QtXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdGtmcmVlKHJjYXN0KTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRtZW1jcHkoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpO1xuJiM0MztcdGxpc3RfYWRkX3JjdShcdTAwMjZyY2FzdC1cdTAwM2VsaXN0LCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0KTtcbiYjNDM7XHRiLVx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcbiBcdGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUClcbiBcdFx0cHJfaW5mbyhcJiMzNDtOZXcgcmVwbGljYXN0IHBlZXI6ICVwSTRcXG5cJiMzNDssIFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIuaXB2NCk7XG5AQCAtMzI1LDggJiM0MzszMjYsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRlbHNlIGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUFY2KVxuIFx0XHRwcl9pbmZvKFwmIzM0O05ldyByZXBsaWNhc3QgcGVlcjogJXBJNlxcblwmIzM0OywgXHUwMDI2cmNhc3QtXHUwMDNlYWRkci5pcHY2KTtcbiAjZW5kaWZcbi1cdGItXHUwMDNlYmNhc3RfYWRkci5icm9hZGNhc3QgPSBUSVBDX1JFUExJQ0FTVF9TVVBQT1JUO1xuLVx0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTM2MSw5ICYjNDM7MzYwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KHRpcGNfdWRwX2lzX2tub3duX3BlZXIoYiwgXHUwMDI2c3JjKSkpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcdTAwMjZzcmMpO1xuIH1cbiBcbkBAIC02NDQsOSAmIzQzOzY0MCw2IEBAIGludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRpZiAodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcdTAwMjZhZGRyKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNmFkZHIpO1xuIH1cbiBcbkBAIC02NzksNiAmIzQzOzY3Miw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKCFhdHRyc1tUSVBDX05MQV9CRUFSRVJfVURQX09QVFNdKVxuIFx0XHRnb3RvIGVycjtcbkBAIC04MTksMTAgJiM0Mzs4MTMsMTMgQEAgc3RhdGljIHZvaWQgY2xlYW51cF9iZWFyZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgKnJjYXN0LCAqdG1wO1xuIFx0c3RydWN0IHRpcGNfbmV0ICp0bjtcbiBcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuIFx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCk7XG4gXHRcdGNhbGxfcmN1X2h1cnJ5KFx1MDAyNnJjYXN0LVx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xuIFx0fVxuJiM0MztcdHViLVx1MDAzZWRpc2FibGVkID0gdHJ1ZTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcbiBcdHRuID0gdGlwY19uZXQoc29ja19uZXQodWItXHUwMDNlc2spKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDssCiAgICAmIzM0O1RJUENfTUVESUFfVURQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX3JjYXN0X2Rpc2MmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9lbmFibGUmIzM0OywKICAgICYjMzQ7Y2xlYW51cF9iZWFyZXImIzM0OywKICAgICYjMzQ7dGlwY191ZHBfZGlzYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDExODkxOTVkMjliNTg5OWRkODIxMzJmMzEyOWU3MDQ4Nzg5N2NlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDA1OjQyOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuYwppbmRleCA2MmFlN2Y1YjU4NDA5Yy4uMTg0NGRlYTAxYzA2ZWEgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL3VkcF9tZWRpYS5jCkBAIC05NCw2ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgdWRwX3JlcGxpY2FzdCB7CiAgKiBAaWZpbmRleDoJbG9jYWwgYWRkcmVzcyBzY29wZQogICogQHdvcms6CXVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlcgogICogQHJjYXN0Oglhc3NvY2lhdGVkIHVkcF9yZXBsaWNhc3QgY29udGFpbmVyCiYjNDM7ICogQHJjYXN0X2xvY2s6CXNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVycwogICovCiBzdHJ1Y3QgdWRwX2JlYXJlciB7CiAJc3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7CkBAIC0xMDEsNiAmIzQzOzEwMiw4IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHsKIAl1MzIgaWZpbmRleDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDsKJiM0MzsJc3BpbmxvY2tfdCByY2FzdF9sb2NrOwomIzQzOwlib29sIGRpc2FibGVkOwogfTsKIAogc3RhdGljIGludCB0aXBjX3VkcF9pc19tY2FzdF9hZGRyKHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcikKQEAgLTI3OCwyNiAmIzQzOzI4MSw2IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLAotCQkJCSAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcikKLXsKLQlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7Ci0Jc3RydWN0IHVkcF9iZWFyZXIgKnViOwotCi0JdWIgPSByY3VfZGVyZWZlcmVuY2VfcnRubChiLSZndDttZWRpYV9wdHIpOwotCWlmICghdWIpIHsKLQkJcHJfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7VURQIGJlYXJlciBpbnN0YW5jZSBub3QgZm91bmRcbiYjMzQ7KTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyY2FzdCwgdG1wLCAmYW1wO3ViLSZndDtyY2FzdC5saXN0LCBsaXN0KSB7Ci0JCWlmICghbWVtY21wKCZhbXA7cmNhc3QtJmd0O2FkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSkKLQkJCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCQkJICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKQogewpAQCAtMzA4LDE2ICYjNDM7MjkxLDM0IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwKIAlpZiAoIXViKQogCQlyZXR1cm4gLUVOT0RFVjsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiYjNDM7CWlmICh1Yi0mZ3Q7ZGlzYWJsZWQpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dWItJmd0O3JjYXN0X2xvY2spOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCwgbGlzdCkgewomIzQzOwkJaWYgKCFtZW1jbXAoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCXJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTsKLQlpZiAoIXJjYXN0KQomIzQzOwlpZiAoIXJjYXN0KSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAogCWlmIChkc3RfY2FjaGVfaW5pdCgmYW1wO3JjYXN0LSZndDtkc3RfY2FjaGUsIEdGUF9BVE9NSUMpKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJa2ZyZWUocmNhc3QpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKIAltZW1jcHkoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpOwomIzQzOwlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiYjNDM7CWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAobnRvaHMoYWRkci0mZ3Q7cHJvdG8pID09IEVUSF9QX0lQKQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk0XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY0KTsKQEAgLTMyNSw4ICYjNDM7MzI2LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCWVsc2UgaWYgKG50b2hzKGFkZHItJmd0O3Byb3RvKSA9PSBFVEhfUF9JUFY2KQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY2KTsKICNlbmRpZgotCWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKLQlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM2MSw5ICYjNDM7MzYwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGxpa2VseSh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsICZhbXA7c3JjKSkpCi0JCXJldHVybiAwOwotCiAJcmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCAmYW1wO3NyYyk7CiB9CiAKQEAgLTY0NCw5ICYjNDM7NjQwLDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCAmYW1wO2FkZHIpKQotCQlyZXR1cm4gMDsKLQogCXJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgJmFtcDthZGRyKTsKIH0KIApAQCAtNjc5LDYgJiM0Mzs2NzIsNyBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYiwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3ViLSZndDtyY2FzdC5saXN0KTsKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pCiAJCWdvdG8gZXJyOwpAQCAtODE5LDEwICYjNDM7ODEzLDEzIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7CiAJc3RydWN0IHRpcGNfbmV0ICp0bjsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsICZhbXA7dWItJmd0O3JjYXN0Lmxpc3QsIGxpc3QpIHsKIAkJbGlzdF9kZWxfcmN1KCZhbXA7cmNhc3QtJmd0O2xpc3QpOwogCQljYWxsX3JjdV9odXJyeSgmYW1wO3JjYXN0LSZndDtyY3UsIHJjYXN0X2ZyZWVfcmN1KTsKIAl9CiYjNDM7CXViLSZndDtkaXNhYmxlZCA9IHRydWU7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7dWItJmd0O3JjYXN0X2xvY2spOwogCiAJdG4gPSB0aXBjX25ldChzb2NrX25ldCh1Yi0mZ3Q7c2spKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBVRFAgTWVkaWEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgYG5ldC90aXBjL3VkcF9tZWRpYS5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgc3BpbmxvY2ssIGByY2FzdF9sb2NrYCwgYW5kIGEgYm9vbGVhbiwgYGRpc2FibGVkYCwgdG8gdGhlIGBzdHJ1Y3QgdWRwX2JlYXJlcmAuIEhtbSwgdGhhdCBzdWdnZXN0cyB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIHNvbWUgY29uY3VycmVuY3kgaXNzdWVzIG9yIHBlcmhhcHMgaW1wbGVtZW50aW5nIGEgZ3JhY2VmdWwgc2h1dGRvd24gbWVjaGFuaXNtIGZvciB0aGUgVURQIGJlYXJlci4KClRoZSBtb3JlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIHJlbW92YWwgb2YgYHRpcGNfdWRwX2lzX2tub3duX3BlZXJgIGFuZCBpdHMgaW50ZWdyYXRpb24gaW50byBgdGlwY191ZHBfcmNhc3RfYWRkYCB1bmRlciB0aGUgbmV3IHNwaW5sb2NrLiBUaGF0JiMzOTtzIGEgZ29vZCBtb3ZlOyBjZW50cmFsaXppbmcgdGhlIHBlZXIgY2hlY2sgd2l0aCB0aGUgYWRkaXRpb24gbG9naWMgc2hvdWxkIGltcHJvdmUgYXRvbWljaXR5IGFuZCByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSByYWNlIGNvbmRpdGlvbi4gVGhlIGluY2x1c2lvbiBvZiBtb2RpZnlpbmcgYGNsZWFudXBfYmVhcmVyYCB0byBzZXQgdGhlIGBkaXNhYmxlZCA9IHRydWVgIGFuZCBjbGVhciB0aGUgbGlzdCB1bmRlciB0aGUgc3BpbmxvY2sgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGNhcmVmdWwgY29uc2lkZXJhdGlvbiBnaXZlbiB0byB3aGF0IGhhcHBlbnMgd2hlbiB3ZSBkaXNhYmxlIG9yIHJlbW92ZSB0aGUgYmVhcmVyIGFuZCBwcmV2ZW50aW5nIGFueSBwb3NzaWJsZSBpc3N1ZXMgZHVyaW5nIHRoYXQgb3BlcmF0aW9uLiBTbywgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0byB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCBmb3IgdGhlIFRJUEMgVURQIG1lZGlhIHRvIGJlIGVuYWJsZWQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyBhbmQgYE1ha2VmaWxlYCBmb3IgVElQQy4gSSYjMzk7bGwgc2VhcmNoIGZvciAmIzM0O1RJUEMmIzM0OyBhbmQgJiMzNDtVRFAmIzM0OyB3aXRoaW4gYG5ldC90aXBjL0tjb25maWdgIGFuZCBgbmV0L3RpcGMvTWFrZWZpbGVgIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMuIEkgc2hvdWxkIHF1aWNrbHkgYmUgYWJsZSB0byBzZWUgd2hpY2ggb3B0aW9ucyBjb250cm9sIHRoZSBidWlsZCBhbmQgaW5zdGFudGlhdGlvbiBvZiB0aGlzIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUSVBDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTItI1xubmV0L3RpcGMvS2NvbmZpZzozOiMgVElQQyBjb25maWd1cmF0aW9uXG5uZXQvdGlwYy9LY29uZmlnLTQtI1xubmV0L3RpcGMvS2NvbmZpZy01LVxubmV0L3RpcGMvS2NvbmZpZzo2Om1lbnVjb25maWcgVElQQ1xubmV0L3RpcGMvS2NvbmZpZzo3Olx0dHJpc3RhdGUgXCYjMzQ7VGhlIFRJUEMgUHJvdG9jb2xcJiMzNDtcbm5ldC90aXBjL0tjb25maWctOC1cdGRlcGVuZHMgb24gSU5FVFxubmV0L3RpcGMvS2NvbmZpZy05LVx0aGVscFxubmV0L3RpcGMvS2NvbmZpZzoxMDpcdCAgVGhlIFRyYW5zcGFyZW50IEludGVyIFByb2Nlc3MgQ29tbXVuaWNhdGlvbiAoVElQQykgcHJvdG9jb2wgaXNcbm5ldC90aXBjL0tjb25maWctMTEtXHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXG4tLVxubmV0L3RpcGMvS2NvbmZpZy0xNC1cbm5ldC90aXBjL0tjb25maWc6MTU6XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXG5uZXQvdGlwYy9LY29uZmlnLTE2LVxuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzoyNjpcdGRlcGVuZHMgb24gVElQQyBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORF9JUE9JQlxubmV0L3RpcGMvS2NvbmZpZy0yNy1cdGhlbHBcbm5ldC90aXBjL0tjb25maWc6Mjg6XHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG9uXG5uZXQvdGlwYy9LY29uZmlnLTI5LVx0ICBJUC1vdmVyLUluZmluaUJhbmQgZGV2aWNlcy5cbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXG5uZXQvdGlwYy9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjMyOlx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxubmV0L3RpcGMvS2NvbmZpZy0zNS1cdGhlbHBcbm5ldC90aXBjL0tjb25maWc6MzY6XHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG92ZXIgSVAvVURQXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWc6Mzk6XHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjQwOlx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTQxLVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC90aXBjL0tjb25maWctNDUtXHRoZWxwXG5uZXQvdGlwYy9LY29uZmlnOjQ2Olx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIFRJUEMgZW5jcnlwdGlvbi5cbm5ldC90aXBjL0tjb25maWc6NDc6XHQgIEFsbCBUSVBDIG1lc3NhZ2VzIHdpbGwgYmUgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSB1c2luZyB0aGUgY3VycmVudGx5IG1vc3Rcbm5ldC90aXBjL0tjb25maWctNDgtXHQgIGFkdmFuY2VkIGFsZ29yaXRobTogQUVBRCBBRVMtR0NNIChsaWtlIElQU2VjIG9yIFRMUykgYmVmb3JlIGxlYXZpbmcvXG5uZXQvdGlwYy9LY29uZmlnOjQ5Olx0ICBlbnRlcmluZyB0aGUgVElQQyBzdGFjay5cbm5ldC90aXBjL0tjb25maWctNTAtXHQgIEtleSBzZXR0aW5nIGZyb20gdXNlci1zcGFjZSBpcyBwZXJmb3JtZWQgdmlhIG5ldGxpbmsgYnkgYSB1c2VyIHByb2dyYW1cbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnOjU0Olx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjU1Olx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTU2LVx0ZGVmYXVsdCB5XG5uZXQvdGlwYy9LY29uZmlnLTU3LVx0aGVscFxubmV0L3RpcGMvS2NvbmZpZzo1ODpcdFN1cHBvcnQgZm9yIFRJUEMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgc3MgdG9vbC5cbm5ldC90aXBjL0tjb25maWctNTktXHRJZiB1bnN1cmUsIHNheSBZLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQ6CgoqKkludmVzdGlnYXRpbmcgVElQQyBhbmQgVURQIE11bHRpY2FzdCBGdW5jdGlvbmFsaXR5KioKClJpZ2h0LCBzbyBJIHNlZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBUSVBDOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSBnb2luZyB0byBiZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIG5vdGljaW5nIG1vZGlmaWNhdGlvbnMgdG86CgoqICAgYHRpcGNfdWRwX3JjYXN0X2FkZGAKKiAgIGB0aXBjX3VkcF9yY2FzdF9kaXNjYAoqICAgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgCiogICBgdGlwY191ZHBfZW5hYmxlYAoqICAgYGNsZWFudXBfYmVhcmVyYAoKVGhvc2UgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBwb3NzaWJpbGl0eSBvZiBjb2xsYXRlcmFsIGVmZmVjdHMuIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgbW9yZSB0aG9yb3VnaCBjb2RlIHNlYXJjaCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgY2hhbmdlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGdldHRpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfcmNhc3RfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvdWRwX21lZGlhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvdWRwX21lZGlhLmM9MjM2PXN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTI4My1cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjI4NDpzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy0yODUtXHRcdFx0ICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jPTMzMj1zdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM2Mi1cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjM2MzpcdHJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2c3JjKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM2NC19XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmM9NjIwPWludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDItXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo2NDM6XHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNmFkZHIpO1xubmV0L3RpcGMvdWRwX21lZGlhLmMtNjQ0LX1cbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz02NTU9c3RhdGljIGludCB0aXBjX3VkcF9lbmFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNzg1LVx0ZWxzZVxubmV0L3RpcGMvdWRwX21lZGlhLmM6Nzg2Olx0XHRlcnIgPSB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2cmVtb3RlKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTc4Ny1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlY2VudCBDb2RlIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIG92ZXIgdGhlc2UgcmVjZW50IGNoYW5nZXMsIGFuZCBJIG5lZWQgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zLiBUaGUgY29yZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRvdWNoZWQgYXJlIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCBgY2xlYW51cF9iZWFyZXJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGJyZWFrIGRvd24gd2hlcmUgZWFjaCBpcyB0cmlnZ2VyZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLgoKSSYjMzk7bSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHdoaWNoIGltcGxpZXMgYW4gYXN5bmNocm9ub3VzIGFzcGVjdCB0byBpdHMgb3BlcmF0aW9uLiBgdGlwY191ZHBfZW5hYmxlYCBpcywgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGludm9rZWQgd2hlbiBhIGJlYXJlciBpcyBiZWluZyBlbmFibGVkIOKAkyBhIGNydWNpYWwgcG9pbnQgZm9yIG1lIHRvIHJlbWVtYmVyIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHRoZSBpbml0aWFsIHNldHVwLiBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgYSBOZXRsaW5rIGNhbGxiYWNrOyBpdHMgYXNzb2NpYXRpb24gd2l0aCBOZXRsaW5rIHRlbGxzIG1lIGl0IGlzIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMsIGxpa2VseSBhZGRpbmcgYSBuZXcgVURQIGJlYXJlci4gRmluYWxseSwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGlzIGNhbGxlZCBvbiByZWNlaXZlLCBhbmQgaXMgcG90ZW50aWFsbHkgdGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciB0aGlzIGV4ZXJjaXNlLCBhcyBpdCBtYXkgYmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIG9uIGEgcGFja2V0LgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBhc3luY2hyb25vdXMgbmF0dXJlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGNsZWFudXBfYmVhcmVyYCBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbGVyIHdpbGwgaWxsdW1pbmF0ZSB0aGUgd2lkZXIgY29udGV4dCBvZiB0aGVzZSBtb2RpZmljYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgdW5lYXJ0aCB0aGUgcm9vdCBvZiB0aGUgY2hhbmdlLiBUaGlzIGhlbHBzIG1lIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aWRlciBwaWN0dXJlLCBhbmQgaXRzIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTgwMT1zdGF0aWMgdm9pZCByY2FzdF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04MDgtXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4MDk6LyogY2xlYW51cF9iZWFyZXIgLSBicmVhayB0aGUgc29ja2V0L2JlYXJlciBhc3NvY2lhdGlvbiAqL1xubmV0L3RpcGMvdWRwX21lZGlhLmM6ODEwOnN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTgxMS17XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmM9ODM3PXN0YXRpYyB2b2lkIHRpcGNfdWRwX2Rpc2FibGUoc3RydWN0IHRpcGNfYmVhcmVyICpiKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1MC1cdGF0b21pY19pbmMoXHUwMDI2dGlwY19uZXQoc29ja19uZXQodWItXHUwMDNlc2spKS1cdTAwM2V3cV9jb3VudCk7XG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4NTE6XHRJTklUX1dPUksoXHUwMDI2dWItXHUwMDNld29yaywgY2xlYW51cF9iZWFyZXIpO1xubmV0L3RpcGMvdWRwX21lZGlhLmMtODUyLVx0c2NoZWR1bGVfd29yayhcdTAwMjZ1Yi1cdTAwM2V3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzExCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUSVBDIFVEUCBCZWFyZXIgTG9naWMgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdGlwY191ZHBfZGlzYWJsZWAgc2NoZWR1bGVzIGBjbGVhbnVwX2JlYXJlcmAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgdGlwY191ZHBfcmNhc3RfYWRkYCwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgLCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAsIGB0aXBjX3VkcF9lbmFibGVgLCBgY2xlYW51cF9iZWFyZXJgLCBhbmQgYHRpcGNfdWRwX2Rpc2FibGVgLiBJJiMzOTttIHZlcmlmeWluZyB0aGUgc3RhdGljL25vbi1zdGF0aWMgbmF0dXJlIG9mIHRoZXNlIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4KCkFscmlnaHQsIGB0aXBjX3VkcF9yY2FzdF9hZGRgIGlzIHN0YXRpYy4gR29vZC4gYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGlzIGFsc28gc3RhdGljLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgbm9uLXN0YXRpYy4gYHRpcGNfdWRwX2VuYWJsZWAgaXMgc3RhdGljLiBBbmQsIGZpbmFsbHksIGJvdGggYGNsZWFudXBfYmVhcmVyYCBhbmQgYHRpcGNfdWRwX2Rpc2FibGVgIGFyZSBzdGF0aWMgYXMgd2VsbC4gSSYjMzk7bSBhZGRpbmcgdGhlc2UgZnVuY3Rpb24gbmFtZXMgdG8gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCBmb3IgY2xvc2VyIGV4YW1pbmF0aW9uLgoKTm93LCBsZXQmIzM5O3MgdGFsayBhYm91dCB0aGUgY29udGV4dC4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2ssIGByY2FzdF9sb2NrYCwgd2l0aGluIHRoZSBUSVBDIFVEUCBtZWRpYSBiZWFyZXIgbG9naWMgdG8gbWFuYWdlIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YC4gVGhpcyBpcyBjbGFzc2ljIHRocmVhZCBzYWZldHkgYW5kIGxpa2VseSBtaXRpZ2F0ZXMgcmFjZSBjb25kaXRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gdGhlIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIGxpa2UgYHRpcGNfdWRwX3JjYXN0X2FkZGAgYW5kIGBjbGVhbnVwX2JlYXJlcmAgdG8gdXRpbGl6ZSB0aGlzIGxvY2ssIGFsb25nIHdpdGggYSBuZXcgYGRpc2FibGVkYCBmbGFnLiBUaGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljOyBnaXZlbiB0aGF0LCBpdCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IEkgd2FudCB0byBmdXp6LgoKRmluYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIFRoYXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RJUENfTUVESUFfVURQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWc9MjQ9Y29uZmlnIFRJUENfTUVESUFfSUJcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTI5LVx0ICBJUC1vdmVyLUluZmluaUJhbmQgZGV2aWNlcy5cbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXG5uZXQvdGlwYy9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvTWFrZWZpbGU9MTQ9Q0ZMQUdTX3RyYWNlLm8gJiM0Mzs9IC1JJChzcmMpXG5uZXQvdGlwYy9NYWtlZmlsZS0xNS1cbm5ldC90aXBjL01ha2VmaWxlOjE2OnRpcGMtJChDT05GSUdfVElQQ19NRURJQV9VRFApXHQmIzQzOz0gdWRwX21lZGlhLm9cbm5ldC90aXBjL01ha2VmaWxlLTE3LXRpcGMtJChDT05GSUdfVElQQ19NRURJQV9JQilcdCYjNDM7PSBpYl9tZWRpYS5vXG4tLVxubmV0L3RpcGMvYmVhcmVyLmM9NTE9c3RhdGljIHN0cnVjdCB0aXBjX21lZGlhICogY29uc3QgbWVkaWFfaW5mb19hcnJheVtdID0ge1xuLS1cbm5ldC90aXBjL2JlYXJlci5jLTU1LSNlbmRpZlxubmV0L3RpcGMvYmVhcmVyLmM6NTY6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxubmV0L3RpcGMvYmVhcmVyLmMtNTctXHRcdTAwMjZ1ZHBfbWVkaWFfaW5mbyxcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYz04MjQ9c3RhdGljIGludCBfX3RpcGNfbmxfYWRkX2JlYXJlcihzdHJ1Y3QgdGlwY19ubF9tc2cgKm1zZyxcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy04NTctXG5uZXQvdGlwYy9iZWFyZXIuYzo4NTg6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxubmV0L3RpcGMvYmVhcmVyLmMtODU5LVx0aWYgKGJlYXJlci1cdTAwM2VtZWRpYS1cdTAwM2V0eXBlX2lkID09IFRJUENfTUVESUFfVFlQRV9VRFApIHtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYz0xMDYzPWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDkxLVxubmV0L3RpcGMvYmVhcmVyLmM6MTA5MjojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDkzLVx0aWYgKGF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pIHtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYz0xMTEwPWludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC90aXBjL2JlYXJlci5jLTExNTgtXHRcdFx0fVxubmV0L3RpcGMvYmVhcmVyLmM6MTE1OTojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTYwLVx0XHRcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFx1MDAzY1xuLS1cbm5ldC90aXBjL2JlYXJlci5jPTEzMTE9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzUzLVx0XHRcdH1cbm5ldC90aXBjL2JlYXJlci5jOjEzNTQ6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxubmV0L3RpcGMvYmVhcmVyLmMtMTM1NS1cdFx0XHRpZiAodGlwY191ZHBfbXR1X2JhZChubGFfZ2V0X3UzMlxuLS1cbm5ldC90aXBjL2JlYXJlci5oPTE5Nj1leHRlcm4gc3RydWN0IHRpcGNfbWVkaWEgaWJfbWVkaWFfaW5mbztcbm5ldC90aXBjL2JlYXJlci5oLTE5Ny0jZW5kaWZcbm5ldC90aXBjL2JlYXJlci5oOjE5ODojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy9iZWFyZXIuaC0xOTktZXh0ZXJuIHN0cnVjdCB0aXBjX21lZGlhIHVkcF9tZWRpYV9pbmZvO1xuLS1cbm5ldC90aXBjL25ldGxpbmsuYz0xNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyB0aXBjX2dlbmxfdjJfb3BzW10gPSB7XG4tLVxubmV0L3RpcGMvbmV0bGluay5jLTI2OS1cdH0sXG5uZXQvdGlwYy9uZXRsaW5rLmM6MjcwOiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL25ldGxpbmsuYy0yNzEtXHR7XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmgtMzYtXG5uZXQvdGlwYy91ZHBfbWVkaWEuaDozNzojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC0zOC0jaWZuZGVmIF9USVBDX1VEUF9NRURJQV9IXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMzIKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipDb25maWd1cmF0aW9uIENvbmZpcm1hdGlvbiBhbmQgSW1tZWRpYXRlIEFjdGlvbioqCgpBbHJpZ2h0LCB5ZXAsIHRoYXQmIzM5O3MgaXQuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBUSVBDX01FRElBX1VEUGAgaXMgdGhlIGFwcHJvcHJpYXRlIG9wdGlvbi4gQW5kLCBvZiBjb3Vyc2UsIGBUSVBDYCBpdHNlbGYgaXMgYWxzbyBhYnNvbHV0ZWx5IGVzc2VudGlhbCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4gV2l0aCB0aGF0IHNldHRsZWQsIHRoZXJlJiMzOTtzIG5vIG5lZWQgdG8gZGVsYXkuIEkmIzM5O2xsIGdldCB0aGUgcmVzdWx0cyB0byB5b3UgcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9kaXNhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJjYXN0X2xvY2tgKSBhbmQgYSBgZGlzYWJsZWRgIGZsYWcgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YCBpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLCBmaXhpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDssCiAgICAmIzM0O1RJUENfTUVESUFfVURQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX3JjYXN0X2Rpc2MmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9lbmFibGUmIzM0OywKICAgICYjMzQ7Y2xlYW51cF9iZWFyZXImIzM0OywKICAgICYjMzQ7dGlwY191ZHBfZGlzYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjI3LjUyMDQ1NjYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMTU3ODUzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiLFxuICAgIFwiVElQQ19NRURJQV9VRFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3VkcF9yY2FzdF9hZGRcIixcbiAgICBcInRpcGNfdWRwX3JjYXN0X2Rpc2NcIixcbiAgICBcInRpcGNfdWRwX25sX2JlYXJlcl9hZGRcIixcbiAgICBcInRpcGNfdWRwX2VuYWJsZVwiLFxuICAgIFwiY2xlYW51cF9iZWFyZXJcIixcbiAgICBcInRpcGNfdWRwX2Rpc2FibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MjcuNTIwNDYxOTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTcxNDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQxMTg5MTk1ZDI5YjU4OTlkZDgyMTMyZjMxMjllNzA0ODc4OTdjZTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xcbmluZGV4IDYyYWU3ZjViNTg0MDljLi4xODQ0ZGVhMDFjMDZlYSAxMDA2NDRcXG4tLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuY1xcbisrKyBiL25ldC90aXBjL3VkcF9tZWRpYS5jXFxuQEAgLTk0LDYgKzk0LDcgQEAgc3RydWN0IHVkcF9yZXBsaWNhc3Qge1xcbiAgKiBAaWZpbmRleDpcXHRsb2NhbCBhZGRyZXNzIHNjb3BlXFxuICAqIEB3b3JrOlxcdHVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlclxcbiAgKiBAcmNhc3Q6XFx0YXNzb2NpYXRlZCB1ZHBfcmVwbGljYXN0IGNvbnRhaW5lclxcbisgKiBAcmNhc3RfbG9jazpcXHRzZXJpYWxpemUgdXBkYXRlcyB0byBAcmNhc3QubGlzdCBhZ2FpbnN0IGNvbmN1cnJlbnQgdXBkYXRlcnNcXG4gICovXFxuIHN0cnVjdCB1ZHBfYmVhcmVyIHtcXG4gXFx0c3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7XFxuQEAgLTEwMSw2ICsxMDIsOCBAQCBzdHJ1Y3QgdWRwX2JlYXJlciB7XFxuIFxcdHUzMiBpZmluZGV4O1xcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4gXFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgcmNhc3Q7XFxuK1xcdHNwaW5sb2NrX3QgcmNhc3RfbG9jaztcXG4rXFx0Ym9vbCBkaXNhYmxlZDtcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuQEAgLTI3OCwyNiArMjgxLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuLXtcXG4tXFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgKnJjYXN0LCAqdG1wO1xcbi1cXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XFxuLVxcbi1cXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXFx1MDAzZW1lZGlhX3B0cik7XFxuLVxcdGlmICghdWIpIHtcXG4tXFx0XFx0cHJfZXJyX3JhdGVsaW1pdGVkKFxcXCJVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tXFx0fVxcbi1cXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbi1cXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSlcXG4tXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLVxcdH1cXG4tXFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuIHtcXG5AQCAtMzA4LDE2ICsyOTEsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRpZiAoIXViKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbitcXHRpZiAodWItXFx1MDAzZWRpc2FibGVkKSB7XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkocmNhc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbitcXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZigqYWRkcikpKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCFyY2FzdClcXG4rXFx0aWYgKCFyY2FzdCkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGRzdF9jYWNoZV9pbml0KFxcdTAwMjZyY2FzdC1cXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRrZnJlZShyY2FzdCk7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XFxuK1xcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdGItXFx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnViLVxcdTAwM2VyY2FzdF9sb2NrKTtcXG4gXFxuIFxcdGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVApXFxuIFxcdFxcdHByX2luZm8oXFxcIk5ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcXFxuXFxcIiwgXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLmlwdjQpO1xcbkBAIC0zMjUsOCArMzI2LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRlbHNlIGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVBWNilcXG4gXFx0XFx0cHJfaW5mbyhcXFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxcXG5cXFwiLCBcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIuaXB2Nik7XFxuICNlbmRpZlxcbi1cXHRiLVxcdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XFxuLVxcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0zNjEsOSArMzYwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcXHUwMDI2c3JjKSkpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4gXFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcXHUwMDI2c3JjKTtcXG4gfVxcbiBcXG5AQCAtNjQ0LDkgKzY0MCw2IEBAIGludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFxcdTAwMjZhZGRyKSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcbiBcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZhZGRyKTtcXG4gfVxcbiBcXG5AQCAtNjc5LDYgKzY3Miw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXFxuIFxcdFxcdGdvdG8gZXJyO1xcbkBAIC04MTksMTAgKzgxMywxMyBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcXG4gXFx0c3RydWN0IHRpcGNfbmV0ICp0bjtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXFx1MDAyNnViLVxcdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxpc3RfZGVsX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRjYWxsX3JjdV9odXJyeShcXHUwMDI2cmNhc3QtXFx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xcbiBcXHR9XFxuK1xcdHViLVxcdTAwM2VkaXNhYmxlZCA9IHRydWU7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVxcdTAwM2VzaykpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MjguMjEyMjM4NjE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDUyMzk5NDEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiLFxuICAgIFwidGlwY191ZHBfZGlzYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJjYXN0X2xvY2tgKSBhbmQgYSBgZGlzYWJsZWRgIGZsYWcgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YCBpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLCBmaXhpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQxMTg5MTk1ZDI5YjU4OTlkZDgyMTMyZjMxMjllNzA0ODc4OTdjZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNTo0MjoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5jIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcbmluZGV4IDYyYWU3ZjViNTg0MDljLi4xODQ0ZGVhMDFjMDZlYSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuQEAgLTk0LDYgKzk0LDcgQEAgc3RydWN0IHVkcF9yZXBsaWNhc3Qge1xuICAqIEBpZmluZGV4Olx0bG9jYWwgYWRkcmVzcyBzY29wZVxuICAqIEB3b3JrOlx0dXNlZCB0byBzY2hlZHVsZSBkZWZlcnJlZCB3b3JrIG9uIGEgYmVhcmVyXG4gICogQHJjYXN0Olx0YXNzb2NpYXRlZCB1ZHBfcmVwbGljYXN0IGNvbnRhaW5lclxuKyAqIEByY2FzdF9sb2NrOlx0c2VyaWFsaXplIHVwZGF0ZXMgdG8gQHJjYXN0Lmxpc3QgYWdhaW5zdCBjb25jdXJyZW50IHVwZGF0ZXJzXG4gICovXG4gc3RydWN0IHVkcF9iZWFyZXIge1xuIFx0c3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7XG5AQCAtMTAxLDYgKzEwMiw4IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHUzMiBpZmluZGV4O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDtcbitcdHNwaW5sb2NrX3QgcmNhc3RfbG9jaztcbitcdGJvb2wgZGlzYWJsZWQ7XG4gfTtcbiBcbiBzdGF0aWMgaW50IHRpcGNfdWRwX2lzX21jYXN0X2FkZHIoc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuQEAgLTI3OCwyNiArMjgxLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0aXBjX3VkcF9pc19rbm93bl9wZWVyKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbi1cdFx0XHRcdCAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbi17XG4tXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4tXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XG4tXG4tXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXHUwMDNlbWVkaWFfcHRyKTtcbi1cdGlmICghdWIpIHtcbi1cdFx0cHJfZXJyX3JhdGVsaW1pdGVkKFwiVURQIGJlYXJlciBpbnN0YW5jZSBub3QgZm91bmRcXG5cIik7XG4tXHRcdHJldHVybiBmYWxzZTtcbi1cdH1cbi1cbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyY2FzdCwgdG1wLCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XG4tXHRcdGlmICghbWVtY21wKFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSlcbi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdH1cbi1cbi1cdHJldHVybiBmYWxzZTtcbi19XG4tXG4gc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0XHRcdCAgICAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbiB7XG5AQCAtMzA4LDE2ICsyOTEsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0aWYgKCF1YilcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4rXHRpZiAodWItXHUwMDNlZGlzYWJsZWQpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuK1x0XHRpZiAoIW1lbWNtcChcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2YoKmFkZHIpKSkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRyY2FzdCA9IGttYWxsb2Nfb2JqKCpyY2FzdCwgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXJjYXN0KVxuK1x0aWYgKCFyY2FzdCkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4gXG4gXHRpZiAoZHN0X2NhY2hlX2luaXQoXHUwMDI2cmNhc3QtXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdFx0a2ZyZWUocmNhc3QpO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XG4rXHRsaXN0X2FkZF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCk7XG4rXHRiLVx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQKVxuIFx0XHRwcl9pbmZvKFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk0XFxuXCIsIFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIuaXB2NCk7XG5AQCAtMzI1LDggKzMyNiw2IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdGVsc2UgaWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQVjYpXG4gXHRcdHByX2luZm8oXCJOZXcgcmVwbGljYXN0IHBlZXI6ICVwSTZcXG5cIiwgXHUwMDI2cmNhc3QtXHUwMDNlYWRkci5pcHY2KTtcbiAjZW5kaWZcbi1cdGItXHUwMDNlYmNhc3RfYWRkci5icm9hZGNhc3QgPSBUSVBDX1JFUExJQ0FTVF9TVVBQT1JUO1xuLVx0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTM2MSw5ICszNjAsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcdTAwMjZzcmMpKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNnNyYyk7XG4gfVxuIFxuQEAgLTY0NCw5ICs2NDAsNiBAQCBpbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0aWYgKHRpcGNfdWRwX2lzX2tub3duX3BlZXIoYiwgXHUwMDI2YWRkcikpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcdTAwMjZhZGRyKTtcbiB9XG4gXG5AQCAtNjc5LDYgKzY3Miw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXG4gXHRcdGdvdG8gZXJyO1xuQEAgLTgxOSwxMCArODEzLDEzIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG47XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuIFx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCk7XG4gXHRcdGNhbGxfcmN1X2h1cnJ5KFx1MDAyNnJjYXN0LVx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xuIFx0fVxuK1x0dWItXHUwMDNlZGlzYWJsZWQgPSB0cnVlO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVx1MDAzZXNrKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjoyOC4yMTIyNDM0ODZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU0ODE2OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBVRFAgTWVkaWEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGBuZXQvdGlwYy91ZHBfbWVkaWEuY2AuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgc3BpbmxvY2ssIGByY2FzdF9sb2NrYCwgYW5kIGEgYm9vbGVhbiwgYGRpc2FibGVkYCwgdG8gdGhlIGBzdHJ1Y3QgdWRwX2JlYXJlcmAuIEhtbSwgdGhhdCBzdWdnZXN0cyB0aGV5J3JlIGFkZHJlc3Npbmcgc29tZSBjb25jdXJyZW5jeSBpc3N1ZXMgb3IgcGVyaGFwcyBpbXBsZW1lbnRpbmcgYSBncmFjZWZ1bCBzaHV0ZG93biBtZWNoYW5pc20gZm9yIHRoZSBVRFAgYmVhcmVyLlxuXG5UaGUgbW9yZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSByZW1vdmFsIG9mIGB0aXBjX3VkcF9pc19rbm93bl9wZWVyYCBhbmQgaXRzIGludGVncmF0aW9uIGludG8gYHRpcGNfdWRwX3JjYXN0X2FkZGAgdW5kZXIgdGhlIG5ldyBzcGlubG9jay4gVGhhdCdzIGEgZ29vZCBtb3ZlOyBjZW50cmFsaXppbmcgdGhlIHBlZXIgY2hlY2sgd2l0aCB0aGUgYWRkaXRpb24gbG9naWMgc2hvdWxkIGltcHJvdmUgYXRvbWljaXR5IGFuZCByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSByYWNlIGNvbmRpdGlvbi4gVGhlIGluY2x1c2lvbiBvZiBtb2RpZnlpbmcgYGNsZWFudXBfYmVhcmVyYCB0byBzZXQgdGhlIGBkaXNhYmxlZCA9IHRydWVgIGFuZCBjbGVhciB0aGUgbGlzdCB1bmRlciB0aGUgc3BpbmxvY2sgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGNhcmVmdWwgY29uc2lkZXJhdGlvbiBnaXZlbiB0byB3aGF0IGhhcHBlbnMgd2hlbiB3ZSBkaXNhYmxlIG9yIHJlbW92ZSB0aGUgYmVhcmVyIGFuZCBwcmV2ZW50aW5nIGFueSBwb3NzaWJsZSBpc3N1ZXMgZHVyaW5nIHRoYXQgb3BlcmF0aW9uLiBTbywgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0byB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgVElQQyBVRFAgbWVkaWEgdG8gYmUgZW5hYmxlZC4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCBgTWFrZWZpbGVgIGZvciBUSVBDLiBJJ2xsIHNlYXJjaCBmb3IgXCJUSVBDXCIgYW5kIFwiVURQXCIgd2l0aGluIGBuZXQvdGlwYy9LY29uZmlnYCBhbmQgYG5ldC90aXBjL01ha2VmaWxlYCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzLiBJIHNob3VsZCBxdWlja2x5IGJlIGFibGUgdG8gc2VlIHdoaWNoIG9wdGlvbnMgY29udHJvbCB0aGUgYnVpbGQgYW5kIGluc3RhbnRpYXRpb24gb2YgdGhpcyBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMTUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjozMy4xNjcwNjI2NTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2OTc5NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRJUENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9LY29uZmlnLTItI1xcbm5ldC90aXBjL0tjb25maWc6MzojIFRJUEMgY29uZmlndXJhdGlvblxcbm5ldC90aXBjL0tjb25maWctNC0jXFxubmV0L3RpcGMvS2NvbmZpZy01LVxcbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcXG5uZXQvdGlwYy9LY29uZmlnOjc6XFx0dHJpc3RhdGUgXFxcIlRoZSBUSVBDIFByb3RvY29sXFxcIlxcbm5ldC90aXBjL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvdGlwYy9LY29uZmlnLTktXFx0aGVscFxcbm5ldC90aXBjL0tjb25maWc6MTA6XFx0ICBUaGUgVHJhbnNwYXJlbnQgSW50ZXIgUHJvY2VzcyBDb21tdW5pY2F0aW9uIChUSVBDKSBwcm90b2NvbCBpc1xcbm5ldC90aXBjL0tjb25maWctMTEtXFx0ICBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIGludHJhIGNsdXN0ZXIgY29tbXVuaWNhdGlvbi4gVGhpcyBwcm90b2NvbFxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0xNC1cXG5uZXQvdGlwYy9LY29uZmlnOjE1OlxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVElQQywgc2VlIGh0dHA6Ly90aXBjLnNvdXJjZWZvcmdlLm5ldC5cXG5uZXQvdGlwYy9LY29uZmlnLTE2LVxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0yMy1cXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjI2OlxcdGRlcGVuZHMgb24gVElQQyBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0lQT0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNy1cXHRoZWxwXFxubmV0L3RpcGMvS2NvbmZpZzoyODpcXHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG9uXFxubmV0L3RpcGMvS2NvbmZpZy0yOS1cXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbm5ldC90aXBjL0tjb25maWc6MzI6XFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy0zMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMzUtXFx0aGVscFxcbm5ldC90aXBjL0tjb25maWc6MzY6XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIHJ1bm5pbmcgVElQQyBvdmVyIElQL1VEUFxcbm5ldC90aXBjL0tjb25maWctMzctXFxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cXG5uZXQvdGlwYy9LY29uZmlnOjM5OlxcdGJvb2wgXFxcIlRJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XFxcIlxcbm5ldC90aXBjL0tjb25maWc6NDA6XFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy00MS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTQ1LVxcdGhlbHBcXG5uZXQvdGlwYy9LY29uZmlnOjQ2OlxcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBUSVBDIGVuY3J5cHRpb24uXFxubmV0L3RpcGMvS2NvbmZpZzo0NzpcXHQgIEFsbCBUSVBDIG1lc3NhZ2VzIHdpbGwgYmUgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSB1c2luZyB0aGUgY3VycmVudGx5IG1vc3RcXG5uZXQvdGlwYy9LY29uZmlnLTQ4LVxcdCAgYWR2YW5jZWQgYWxnb3JpdGhtOiBBRUFEIEFFUy1HQ00gKGxpa2UgSVBTZWMgb3IgVExTKSBiZWZvcmUgbGVhdmluZy9cXG5uZXQvdGlwYy9LY29uZmlnOjQ5OlxcdCAgZW50ZXJpbmcgdGhlIFRJUEMgc3RhY2suXFxubmV0L3RpcGMvS2NvbmZpZy01MC1cXHQgIEtleSBzZXR0aW5nIGZyb20gdXNlci1zcGFjZSBpcyBwZXJmb3JtZWQgdmlhIG5ldGxpbmsgYnkgYSB1c2VyIHByb2dyYW1cXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZzo1NDpcXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbm5ldC90aXBjL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy01Ni1cXHRkZWZhdWx0IHlcXG5uZXQvdGlwYy9LY29uZmlnLTU3LVxcdGhlbHBcXG5uZXQvdGlwYy9LY29uZmlnOjU4OlxcdFN1cHBvcnQgZm9yIFRJUEMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgc3MgdG9vbC5cXG5uZXQvdGlwYy9LY29uZmlnLTU5LVxcdElmIHVuc3VyZSwgc2F5IFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjMzLjcyNDA0NzUwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjIwNjc0MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJ20gbG9va2luZyBhdDpcblxuKipJbnZlc3RpZ2F0aW5nIFRJUEMgYW5kIFVEUCBNdWx0aWNhc3QgRnVuY3Rpb25hbGl0eSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBUSVBDOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGdvaW5nIHRvIGJlLiBMZXQncyBzZWUuLi4gSSdtIG5vdGljaW5nIG1vZGlmaWNhdGlvbnMgdG86XG5cbiogICBgdGlwY191ZHBfcmNhc3RfYWRkYFxuKiAgIGB0aXBjX3VkcF9yY2FzdF9kaXNjYFxuKiAgIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYFxuKiAgIGB0aXBjX3VkcF9lbmFibGVgXG4qICAgYGNsZWFudXBfYmVhcmVyYFxuXG5UaG9zZSBhcmUgdGhlIHByaW1hcnkgZnVuY3Rpb25zLCBidXQgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGNvbGxhdGVyYWwgZWZmZWN0cy4gSSBzaG91bGQgcHJvYmFibHkgZG8gYSBtb3JlIHRob3JvdWdoIGNvZGUgc2VhcmNoIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBnZXR0aW5nIHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzE5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MzcuMzg2MTE5MzUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDgwNzI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3VkcF9yY2FzdF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmM9MjM2PXN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMjgzLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjI4NDpzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMjg1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jPTMzMj1zdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMzYyLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjM2MzpcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZzcmMpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM2NC19XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz02MjA9aW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjQyLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjY0MzpcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZhZGRyKTtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDQtfVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmM9NjU1PXN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNzg1LVxcdGVsc2VcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo3ODY6XFx0XFx0ZXJyID0gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZyZW1vdGUpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTc4Ny1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjozNy41MTA5MzgyODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUxNTE5NDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVjZW50IENvZGUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhlc2UgcmVjZW50IGNoYW5nZXMsIGFuZCBJIG5lZWQgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zLiBUaGUgY29yZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRvdWNoZWQgYXJlIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCBgY2xlYW51cF9iZWFyZXJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgYnJlYWsgZG93biB3aGVyZSBlYWNoIGlzIHRyaWdnZXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0uXG5cbkknbSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHdoaWNoIGltcGxpZXMgYW4gYXN5bmNocm9ub3VzIGFzcGVjdCB0byBpdHMgb3BlcmF0aW9uLiBgdGlwY191ZHBfZW5hYmxlYCBpcywgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGludm9rZWQgd2hlbiBhIGJlYXJlciBpcyBiZWluZyBlbmFibGVkIOKAkyBhIGNydWNpYWwgcG9pbnQgZm9yIG1lIHRvIHJlbWVtYmVyIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHRoZSBpbml0aWFsIHNldHVwLiBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgYSBOZXRsaW5rIGNhbGxiYWNrOyBpdHMgYXNzb2NpYXRpb24gd2l0aCBOZXRsaW5rIHRlbGxzIG1lIGl0IGlzIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMsIGxpa2VseSBhZGRpbmcgYSBuZXcgVURQIGJlYXJlci4gRmluYWxseSwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGlzIGNhbGxlZCBvbiByZWNlaXZlLCBhbmQgaXMgcG90ZW50aWFsbHkgdGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciB0aGlzIGV4ZXJjaXNlLCBhcyBpdCBtYXkgYmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIG9uIGEgcGFja2V0LlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGFzeW5jaHJvbm91cyBuYXR1cmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgY2xlYW51cF9iZWFyZXJgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXIgd2lsbCBpbGx1bWluYXRlIHRoZSB3aWRlciBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGFuZCBwb3RlbnRpYWxseSB1bmVhcnRoIHRoZSByb290IG9mIHRoZSBjaGFuZ2UuIFRoaXMgaGVscHMgbWUgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdpZGVyIHBpY3R1cmUsIGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTM2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjQyLjA2MjQ1OTg1M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDQyMzc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjbGVhbnVwX2JlYXJlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuYz04MDE9c3RhdGljIHZvaWQgcmNhc3RfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpXFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04MDgtXFxubmV0L3RpcGMvdWRwX21lZGlhLmM6ODA5Oi8qIGNsZWFudXBfYmVhcmVyIC0gYnJlYWsgdGhlIHNvY2tldC9iZWFyZXIgYXNzb2NpYXRpb24gKi9cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4MTA6c3RhdGljIHZvaWQgY2xlYW51cF9iZWFyZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTgxMS17XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz04Mzc9c3RhdGljIHZvaWQgdGlwY191ZHBfZGlzYWJsZShzdHJ1Y3QgdGlwY19iZWFyZXIgKmIpXFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NTAtXFx0YXRvbWljX2luYyhcXHUwMDI2dGlwY19uZXQoc29ja19uZXQodWItXFx1MDAzZXNrKSktXFx1MDAzZXdxX2NvdW50KTtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4NTE6XFx0SU5JVF9XT1JLKFxcdTAwMjZ1Yi1cXHUwMDNld29yaywgY2xlYW51cF9iZWFyZXIpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1Mi1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZ1Yi1cXHUwMDNld29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjQyLjE1Njg5MjExMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzMxMzA5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRJUEMgVURQIEJlYXJlciBMb2dpYyBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdGlwY191ZHBfZGlzYWJsZWAgc2NoZWR1bGVzIGBjbGVhbnVwX2JlYXJlcmAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgdGlwY191ZHBfcmNhc3RfYWRkYCwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgLCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAsIGB0aXBjX3VkcF9lbmFibGVgLCBgY2xlYW51cF9iZWFyZXJgLCBhbmQgYHRpcGNfdWRwX2Rpc2FibGVgLiBJJ20gdmVyaWZ5aW5nIHRoZSBzdGF0aWMvbm9uLXN0YXRpYyBuYXR1cmUgb2YgdGhlc2UgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLlxuXG5BbHJpZ2h0LCBgdGlwY191ZHBfcmNhc3RfYWRkYCBpcyBzdGF0aWMuIEdvb2QuIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCBpcyBhbHNvIHN0YXRpYywgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgIGlzIG5vbi1zdGF0aWMuIGB0aXBjX3VkcF9lbmFibGVgIGlzIHN0YXRpYy4gQW5kLCBmaW5hbGx5LCBib3RoIGBjbGVhbnVwX2JlYXJlcmAgYW5kIGB0aXBjX3VkcF9kaXNhYmxlYCBhcmUgc3RhdGljIGFzIHdlbGwuIEknbSBhZGRpbmcgdGhlc2UgZnVuY3Rpb24gbmFtZXMgdG8gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCBmb3IgY2xvc2VyIGV4YW1pbmF0aW9uLlxuXG5Ob3csIGxldCdzIHRhbGsgYWJvdXQgdGhlIGNvbnRleHQuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNwaW5sb2NrLCBgcmNhc3RfbG9ja2AsIHdpdGhpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljIHRvIG1hbmFnZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAuIFRoaXMgaXMgY2xhc3NpYyB0aHJlYWQgc2FmZXR5IGFuZCBsaWtlbHkgbWl0aWdhdGVzIHJhY2UgY29uZGl0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIHRoZSBtb2RpZmljYXRpb25zIHRvIGZ1bmN0aW9ucyBsaWtlIGB0aXBjX3VkcF9yY2FzdF9hZGRgIGFuZCBgY2xlYW51cF9iZWFyZXJgIHRvIHV0aWxpemUgdGhpcyBsb2NrLCBhbG9uZyB3aXRoIGEgbmV3IGBkaXNhYmxlZGAgZmxhZy4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYzsgZ2l2ZW4gdGhhdCwgaXQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBJIHdhbnQgdG8gZnV6ei5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIFRoYXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6NDguNjMwMDI1MTkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODg4NTEyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVElQQ19NRURJQV9VRFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWc9MjQ9Y29uZmlnIFRJUENfTUVESUFfSUJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjktXFx0ICBJUC1vdmVyLUluZmluaUJhbmQgZGV2aWNlcy5cXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxcbm5ldC90aXBjL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiSVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL01ha2VmaWxlPTE0PUNGTEFHU190cmFjZS5vICs9IC1JJChzcmMpXFxubmV0L3RpcGMvTWFrZWZpbGUtMTUtXFxubmV0L3RpcGMvTWFrZWZpbGU6MTY6dGlwYy0kKENPTkZJR19USVBDX01FRElBX1VEUClcXHQrPSB1ZHBfbWVkaWEub1xcbm5ldC90aXBjL01ha2VmaWxlLTE3LXRpcGMtJChDT05GSUdfVElQQ19NRURJQV9JQilcXHQrPSBpYl9tZWRpYS5vXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYz01MT1zdGF0aWMgc3RydWN0IHRpcGNfbWVkaWEgKiBjb25zdCBtZWRpYV9pbmZvX2FycmF5W10gPSB7XFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy01NS0jZW5kaWZcXG5uZXQvdGlwYy9iZWFyZXIuYzo1NjojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXFxubmV0L3RpcGMvYmVhcmVyLmMtNTctXFx0XFx1MDAyNnVkcF9tZWRpYV9pbmZvLFxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9ODI0PXN0YXRpYyBpbnQgX190aXBjX25sX2FkZF9iZWFyZXIoc3RydWN0IHRpcGNfbmxfbXNnICptc2csXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy04NTctXFxubmV0L3RpcGMvYmVhcmVyLmM6ODU4OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuYy04NTktXFx0aWYgKGJlYXJlci1cXHUwMDNlbWVkaWEtXFx1MDAzZXR5cGVfaWQgPT0gVElQQ19NRURJQV9UWVBFX1VEUCkge1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9MTA2Mz1pbnQgdGlwY19ubF9iZWFyZXJfYWRkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDkxLVxcbm5ldC90aXBjL2JlYXJlci5jOjEwOTI6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxcbm5ldC90aXBjL2JlYXJlci5jLTEwOTMtXFx0aWYgKGF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pIHtcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jPTExMTA9aW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTU4LVxcdFxcdFxcdH1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTU5OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTYwLVxcdFxcdFxcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFxcdTAwM2NcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jPTEzMTE9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzNTMtXFx0XFx0XFx0fVxcbm5ldC90aXBjL2JlYXJlci5jOjEzNTQ6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxcbm5ldC90aXBjL2JlYXJlci5jLTEzNTUtXFx0XFx0XFx0aWYgKHRpcGNfdWRwX210dV9iYWQobmxhX2dldF91MzJcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5oPTE5Nj1leHRlcm4gc3RydWN0IHRpcGNfbWVkaWEgaWJfbWVkaWFfaW5mbztcXG5uZXQvdGlwYy9iZWFyZXIuaC0xOTctI2VuZGlmXFxubmV0L3RpcGMvYmVhcmVyLmg6MTk4OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuaC0xOTktZXh0ZXJuIHN0cnVjdCB0aXBjX21lZGlhIHVkcF9tZWRpYV9pbmZvO1xcbi0tXFxubmV0L3RpcGMvbmV0bGluay5jPTE1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzIHRpcGNfZ2VubF92Ml9vcHNbXSA9IHtcXG4tLVxcbm5ldC90aXBjL25ldGxpbmsuYy0yNjktXFx0fSxcXG5uZXQvdGlwYy9uZXRsaW5rLmM6MjcwOiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjcxLVxcdHtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTM2LVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oOjM3OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC0zOC0jaWZuZGVmIF9USVBDX1VEUF9NRURJQV9IXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjQ5LjIxODg4MzY4MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY5MDQwNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkNvbmZpZ3VyYXRpb24gQ29uZmlybWF0aW9uIGFuZCBJbW1lZGlhdGUgQWN0aW9uKipcblxuQWxyaWdodCwgeWVwLCB0aGF0J3MgaXQuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIEknbSBjb25maXJtaW5nIHRoYXQgYFRJUENfTUVESUFfVURQYCBpcyB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uLiBBbmQsIG9mIGNvdXJzZSwgYFRJUENgIGl0c2VsZiBpcyBhbHNvIGFic29sdXRlbHkgZXNzZW50aWFsIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBXaXRoIHRoYXQgc2V0dGxlZCwgdGhlcmUncyBubyBuZWVkIHRvIGRlbGF5LiBJJ2xsIGdldCB0aGUgcmVzdWx0cyB0byB5b3UgcmlnaHQgYXdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEzMiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0Mjo1Mi41ODc5Mjc1NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgzMDA3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIixcbiAgICBcIlRJUENfTUVESUFfVURQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGlwY191ZHBfcmNhc3RfYWRkXCIsXG4gICAgXCJ0aXBjX3VkcF9yY2FzdF9kaXNjXCIsXG4gICAgXCJ0aXBjX3VkcF9ubF9iZWFyZXJfYWRkXCIsXG4gICAgXCJ0aXBjX3VkcF9lbmFibGVcIixcbiAgICBcImNsZWFudXBfYmVhcmVyXCIsXG4gICAgXCJ0aXBjX3VkcF9kaXNhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNwaW5sb2NrIChgcmNhc3RfbG9ja2ApIGFuZCBhIGBkaXNhYmxlZGAgZmxhZyB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgYHJjYXN0Lmxpc3RgIGluIHRoZSBUSVBDIFVEUCBtZWRpYSBiZWFyZXIgbG9naWMsIGZpeGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiLFxuICAgIFwiVElQQ19NRURJQV9VRFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3VkcF9yY2FzdF9hZGRcIixcbiAgICBcInRpcGNfdWRwX3JjYXN0X2Rpc2NcIixcbiAgICBcInRpcGNfdWRwX25sX2JlYXJlcl9hZGRcIixcbiAgICBcInRpcGNfdWRwX2VuYWJsZVwiLFxuICAgIFwiY2xlYW51cF9iZWFyZXJcIixcbiAgICBcInRpcGNfdWRwX2Rpc2FibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 05:18:53 +0000 UTC FinishedAt: 2026-07-15 05:42:54 +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": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "eab11d07-fd6b-40cd-bbc2-52d01e3dd54e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_udp_rcast_add", "tipc_udp_rcast_disc", "tipc_udp_nl_bearer_add", "tipc_udp_enable", "cleanup_bearer", "tipc_udp_disable" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9kaXNhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJjYXN0X2xvY2tgKSBhbmQgYSBgZGlzYWJsZWRgIGZsYWcgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YCBpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLCBmaXhpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDExODkxOTVkMjliNTg5OWRkODIxMzJmMzEyOWU3MDQ4Nzg5N2NlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDA1OjQyOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5jIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcbmluZGV4IDYyYWU3ZjViNTg0MDljLi4xODQ0ZGVhMDFjMDZlYSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuQEAgLTk0LDYgJiM0Mzs5NCw3IEBAIHN0cnVjdCB1ZHBfcmVwbGljYXN0IHtcbiAgKiBAaWZpbmRleDpcdGxvY2FsIGFkZHJlc3Mgc2NvcGVcbiAgKiBAd29yazpcdHVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlclxuICAqIEByY2FzdDpcdGFzc29jaWF0ZWQgdWRwX3JlcGxpY2FzdCBjb250YWluZXJcbiYjNDM7ICogQHJjYXN0X2xvY2s6XHRzZXJpYWxpemUgdXBkYXRlcyB0byBAcmNhc3QubGlzdCBhZ2FpbnN0IGNvbmN1cnJlbnQgdXBkYXRlcnNcbiAgKi9cbiBzdHJ1Y3QgdWRwX2JlYXJlciB7XG4gXHRzdHJ1Y3QgdGlwY19iZWFyZXIgX19yY3UgKmJlYXJlcjtcbkBAIC0xMDEsNiAmIzQzOzEwMiw4IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHUzMiBpZmluZGV4O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDtcbiYjNDM7XHRzcGlubG9ja190IHJjYXN0X2xvY2s7XG4mIzQzO1x0Ym9vbCBkaXNhYmxlZDtcbiB9O1xuIFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXG5AQCAtMjc4LDI2ICYjNDM7MjgxLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0aXBjX3VkcF9pc19rbm93bl9wZWVyKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbi1cdFx0XHRcdCAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbi17XG4tXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4tXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XG4tXG4tXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXHUwMDNlbWVkaWFfcHRyKTtcbi1cdGlmICghdWIpIHtcbi1cdFx0cHJfZXJyX3JhdGVsaW1pdGVkKFwmIzM0O1VEUCBiZWFyZXIgaW5zdGFuY2Ugbm90IGZvdW5kXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dXJuIGZhbHNlO1xuLVx0fVxuLVxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbi1cdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpKVxuLVx0XHRcdHJldHVybiB0cnVlO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGZhbHNlO1xuLX1cbi1cbiBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRcdFx0ICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuIHtcbkBAIC0zMDgsMTYgJiM0MzsyOTEsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0aWYgKCF1YilcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuJiM0MztcdGlmICh1Yi1cdTAwM2VkaXNhYmxlZCkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuJiM0MztcdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4gXHRyY2FzdCA9IGttYWxsb2Nfb2JqKCpyY2FzdCwgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXJjYXN0KVxuJiM0MztcdGlmICghcmNhc3QpIHtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoZHN0X2NhY2hlX2luaXQoXHUwMDI2cmNhc3QtXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdGtmcmVlKHJjYXN0KTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRtZW1jcHkoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpO1xuJiM0MztcdGxpc3RfYWRkX3JjdShcdTAwMjZyY2FzdC1cdTAwM2VsaXN0LCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0KTtcbiYjNDM7XHRiLVx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcbiBcdGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUClcbiBcdFx0cHJfaW5mbyhcJiMzNDtOZXcgcmVwbGljYXN0IHBlZXI6ICVwSTRcXG5cJiMzNDssIFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIuaXB2NCk7XG5AQCAtMzI1LDggJiM0MzszMjYsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRlbHNlIGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUFY2KVxuIFx0XHRwcl9pbmZvKFwmIzM0O05ldyByZXBsaWNhc3QgcGVlcjogJXBJNlxcblwmIzM0OywgXHUwMDI2cmNhc3QtXHUwMDNlYWRkci5pcHY2KTtcbiAjZW5kaWZcbi1cdGItXHUwMDNlYmNhc3RfYWRkci5icm9hZGNhc3QgPSBUSVBDX1JFUExJQ0FTVF9TVVBQT1JUO1xuLVx0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTM2MSw5ICYjNDM7MzYwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KHRpcGNfdWRwX2lzX2tub3duX3BlZXIoYiwgXHUwMDI2c3JjKSkpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcdTAwMjZzcmMpO1xuIH1cbiBcbkBAIC02NDQsOSAmIzQzOzY0MCw2IEBAIGludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4tXHRpZiAodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcdTAwMjZhZGRyKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNmFkZHIpO1xuIH1cbiBcbkBAIC02NzksNiAmIzQzOzY3Miw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKCFhdHRyc1tUSVBDX05MQV9CRUFSRVJfVURQX09QVFNdKVxuIFx0XHRnb3RvIGVycjtcbkBAIC04MTksMTAgJiM0Mzs4MTMsMTMgQEAgc3RhdGljIHZvaWQgY2xlYW51cF9iZWFyZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgKnJjYXN0LCAqdG1wO1xuIFx0c3RydWN0IHRpcGNfbmV0ICp0bjtcbiBcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuIFx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCk7XG4gXHRcdGNhbGxfcmN1X2h1cnJ5KFx1MDAyNnJjYXN0LVx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xuIFx0fVxuJiM0MztcdHViLVx1MDAzZWRpc2FibGVkID0gdHJ1ZTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcbiBcdHRuID0gdGlwY19uZXQoc29ja19uZXQodWItXHUwMDNlc2spKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDssCiAgICAmIzM0O1RJUENfTUVESUFfVURQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX3JjYXN0X2Rpc2MmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9lbmFibGUmIzM0OywKICAgICYjMzQ7Y2xlYW51cF9iZWFyZXImIzM0OywKICAgICYjMzQ7dGlwY191ZHBfZGlzYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDExODkxOTVkMjliNTg5OWRkODIxMzJmMzEyOWU3MDQ4Nzg5N2NlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDA1OjQyOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuYwppbmRleCA2MmFlN2Y1YjU4NDA5Yy4uMTg0NGRlYTAxYzA2ZWEgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL3VkcF9tZWRpYS5jCkBAIC05NCw2ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgdWRwX3JlcGxpY2FzdCB7CiAgKiBAaWZpbmRleDoJbG9jYWwgYWRkcmVzcyBzY29wZQogICogQHdvcms6CXVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlcgogICogQHJjYXN0Oglhc3NvY2lhdGVkIHVkcF9yZXBsaWNhc3QgY29udGFpbmVyCiYjNDM7ICogQHJjYXN0X2xvY2s6CXNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVycwogICovCiBzdHJ1Y3QgdWRwX2JlYXJlciB7CiAJc3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7CkBAIC0xMDEsNiAmIzQzOzEwMiw4IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHsKIAl1MzIgaWZpbmRleDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDsKJiM0MzsJc3BpbmxvY2tfdCByY2FzdF9sb2NrOwomIzQzOwlib29sIGRpc2FibGVkOwogfTsKIAogc3RhdGljIGludCB0aXBjX3VkcF9pc19tY2FzdF9hZGRyKHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcikKQEAgLTI3OCwyNiAmIzQzOzI4MSw2IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLAotCQkJCSAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcikKLXsKLQlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7Ci0Jc3RydWN0IHVkcF9iZWFyZXIgKnViOwotCi0JdWIgPSByY3VfZGVyZWZlcmVuY2VfcnRubChiLSZndDttZWRpYV9wdHIpOwotCWlmICghdWIpIHsKLQkJcHJfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7VURQIGJlYXJlciBpbnN0YW5jZSBub3QgZm91bmRcbiYjMzQ7KTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyY2FzdCwgdG1wLCAmYW1wO3ViLSZndDtyY2FzdC5saXN0LCBsaXN0KSB7Ci0JCWlmICghbWVtY21wKCZhbXA7cmNhc3QtJmd0O2FkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSkKLQkJCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCQkJICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKQogewpAQCAtMzA4LDE2ICYjNDM7MjkxLDM0IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwKIAlpZiAoIXViKQogCQlyZXR1cm4gLUVOT0RFVjsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiYjNDM7CWlmICh1Yi0mZ3Q7ZGlzYWJsZWQpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dWItJmd0O3JjYXN0X2xvY2spOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCwgbGlzdCkgewomIzQzOwkJaWYgKCFtZW1jbXAoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCXJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTsKLQlpZiAoIXJjYXN0KQomIzQzOwlpZiAoIXJjYXN0KSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAogCWlmIChkc3RfY2FjaGVfaW5pdCgmYW1wO3JjYXN0LSZndDtkc3RfY2FjaGUsIEdGUF9BVE9NSUMpKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJa2ZyZWUocmNhc3QpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKIAltZW1jcHkoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpOwomIzQzOwlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiYjNDM7CWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAobnRvaHMoYWRkci0mZ3Q7cHJvdG8pID09IEVUSF9QX0lQKQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk0XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY0KTsKQEAgLTMyNSw4ICYjNDM7MzI2LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCWVsc2UgaWYgKG50b2hzKGFkZHItJmd0O3Byb3RvKSA9PSBFVEhfUF9JUFY2KQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY2KTsKICNlbmRpZgotCWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKLQlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM2MSw5ICYjNDM7MzYwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGxpa2VseSh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsICZhbXA7c3JjKSkpCi0JCXJldHVybiAwOwotCiAJcmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCAmYW1wO3NyYyk7CiB9CiAKQEAgLTY0NCw5ICYjNDM7NjQwLDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCAmYW1wO2FkZHIpKQotCQlyZXR1cm4gMDsKLQogCXJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgJmFtcDthZGRyKTsKIH0KIApAQCAtNjc5LDYgJiM0Mzs2NzIsNyBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYiwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3ViLSZndDtyY2FzdC5saXN0KTsKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pCiAJCWdvdG8gZXJyOwpAQCAtODE5LDEwICYjNDM7ODEzLDEzIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7CiAJc3RydWN0IHRpcGNfbmV0ICp0bjsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsICZhbXA7dWItJmd0O3JjYXN0Lmxpc3QsIGxpc3QpIHsKIAkJbGlzdF9kZWxfcmN1KCZhbXA7cmNhc3QtJmd0O2xpc3QpOwogCQljYWxsX3JjdV9odXJyeSgmYW1wO3JjYXN0LSZndDtyY3UsIHJjYXN0X2ZyZWVfcmN1KTsKIAl9CiYjNDM7CXViLSZndDtkaXNhYmxlZCA9IHRydWU7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7dWItJmd0O3JjYXN0X2xvY2spOwogCiAJdG4gPSB0aXBjX25ldChzb2NrX25ldCh1Yi0mZ3Q7c2spKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBVRFAgTWVkaWEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgYG5ldC90aXBjL3VkcF9tZWRpYS5jYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgc3BpbmxvY2ssIGByY2FzdF9sb2NrYCwgYW5kIGEgYm9vbGVhbiwgYGRpc2FibGVkYCwgdG8gdGhlIGBzdHJ1Y3QgdWRwX2JlYXJlcmAuIEhtbSwgdGhhdCBzdWdnZXN0cyB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIHNvbWUgY29uY3VycmVuY3kgaXNzdWVzIG9yIHBlcmhhcHMgaW1wbGVtZW50aW5nIGEgZ3JhY2VmdWwgc2h1dGRvd24gbWVjaGFuaXNtIGZvciB0aGUgVURQIGJlYXJlci4KClRoZSBtb3JlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIHJlbW92YWwgb2YgYHRpcGNfdWRwX2lzX2tub3duX3BlZXJgIGFuZCBpdHMgaW50ZWdyYXRpb24gaW50byBgdGlwY191ZHBfcmNhc3RfYWRkYCB1bmRlciB0aGUgbmV3IHNwaW5sb2NrLiBUaGF0JiMzOTtzIGEgZ29vZCBtb3ZlOyBjZW50cmFsaXppbmcgdGhlIHBlZXIgY2hlY2sgd2l0aCB0aGUgYWRkaXRpb24gbG9naWMgc2hvdWxkIGltcHJvdmUgYXRvbWljaXR5IGFuZCByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSByYWNlIGNvbmRpdGlvbi4gVGhlIGluY2x1c2lvbiBvZiBtb2RpZnlpbmcgYGNsZWFudXBfYmVhcmVyYCB0byBzZXQgdGhlIGBkaXNhYmxlZCA9IHRydWVgIGFuZCBjbGVhciB0aGUgbGlzdCB1bmRlciB0aGUgc3BpbmxvY2sgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGNhcmVmdWwgY29uc2lkZXJhdGlvbiBnaXZlbiB0byB3aGF0IGhhcHBlbnMgd2hlbiB3ZSBkaXNhYmxlIG9yIHJlbW92ZSB0aGUgYmVhcmVyIGFuZCBwcmV2ZW50aW5nIGFueSBwb3NzaWJsZSBpc3N1ZXMgZHVyaW5nIHRoYXQgb3BlcmF0aW9uLiBTbywgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0byB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCBmb3IgdGhlIFRJUEMgVURQIG1lZGlhIHRvIGJlIGVuYWJsZWQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyBhbmQgYE1ha2VmaWxlYCBmb3IgVElQQy4gSSYjMzk7bGwgc2VhcmNoIGZvciAmIzM0O1RJUEMmIzM0OyBhbmQgJiMzNDtVRFAmIzM0OyB3aXRoaW4gYG5ldC90aXBjL0tjb25maWdgIGFuZCBgbmV0L3RpcGMvTWFrZWZpbGVgIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMuIEkgc2hvdWxkIHF1aWNrbHkgYmUgYWJsZSB0byBzZWUgd2hpY2ggb3B0aW9ucyBjb250cm9sIHRoZSBidWlsZCBhbmQgaW5zdGFudGlhdGlvbiBvZiB0aGlzIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtUSVBDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTItI1xubmV0L3RpcGMvS2NvbmZpZzozOiMgVElQQyBjb25maWd1cmF0aW9uXG5uZXQvdGlwYy9LY29uZmlnLTQtI1xubmV0L3RpcGMvS2NvbmZpZy01LVxubmV0L3RpcGMvS2NvbmZpZzo2Om1lbnVjb25maWcgVElQQ1xubmV0L3RpcGMvS2NvbmZpZzo3Olx0dHJpc3RhdGUgXCYjMzQ7VGhlIFRJUEMgUHJvdG9jb2xcJiMzNDtcbm5ldC90aXBjL0tjb25maWctOC1cdGRlcGVuZHMgb24gSU5FVFxubmV0L3RpcGMvS2NvbmZpZy05LVx0aGVscFxubmV0L3RpcGMvS2NvbmZpZzoxMDpcdCAgVGhlIFRyYW5zcGFyZW50IEludGVyIFByb2Nlc3MgQ29tbXVuaWNhdGlvbiAoVElQQykgcHJvdG9jb2wgaXNcbm5ldC90aXBjL0tjb25maWctMTEtXHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXG4tLVxubmV0L3RpcGMvS2NvbmZpZy0xNC1cbm5ldC90aXBjL0tjb25maWc6MTU6XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXG5uZXQvdGlwYy9LY29uZmlnLTE2LVxuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xubmV0L3RpcGMvS2NvbmZpZzoyNjpcdGRlcGVuZHMgb24gVElQQyBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORF9JUE9JQlxubmV0L3RpcGMvS2NvbmZpZy0yNy1cdGhlbHBcbm5ldC90aXBjL0tjb25maWc6Mjg6XHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG9uXG5uZXQvdGlwYy9LY29uZmlnLTI5LVx0ICBJUC1vdmVyLUluZmluaUJhbmQgZGV2aWNlcy5cbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXG5uZXQvdGlwYy9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjMyOlx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxubmV0L3RpcGMvS2NvbmZpZy0zNS1cdGhlbHBcbm5ldC90aXBjL0tjb25maWc6MzY6XHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG92ZXIgSVAvVURQXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWc6Mzk6XHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjQwOlx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTQxLVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC90aXBjL0tjb25maWctNDUtXHRoZWxwXG5uZXQvdGlwYy9LY29uZmlnOjQ2Olx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIFRJUEMgZW5jcnlwdGlvbi5cbm5ldC90aXBjL0tjb25maWc6NDc6XHQgIEFsbCBUSVBDIG1lc3NhZ2VzIHdpbGwgYmUgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSB1c2luZyB0aGUgY3VycmVudGx5IG1vc3Rcbm5ldC90aXBjL0tjb25maWctNDgtXHQgIGFkdmFuY2VkIGFsZ29yaXRobTogQUVBRCBBRVMtR0NNIChsaWtlIElQU2VjIG9yIFRMUykgYmVmb3JlIGxlYXZpbmcvXG5uZXQvdGlwYy9LY29uZmlnOjQ5Olx0ICBlbnRlcmluZyB0aGUgVElQQyBzdGFjay5cbm5ldC90aXBjL0tjb25maWctNTAtXHQgIEtleSBzZXR0aW5nIGZyb20gdXNlci1zcGFjZSBpcyBwZXJmb3JtZWQgdmlhIG5ldGxpbmsgYnkgYSB1c2VyIHByb2dyYW1cbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnOjU0Olx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG5uZXQvdGlwYy9LY29uZmlnOjU1Olx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTU2LVx0ZGVmYXVsdCB5XG5uZXQvdGlwYy9LY29uZmlnLTU3LVx0aGVscFxubmV0L3RpcGMvS2NvbmZpZzo1ODpcdFN1cHBvcnQgZm9yIFRJUEMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgc3MgdG9vbC5cbm5ldC90aXBjL0tjb25maWctNTktXHRJZiB1bnN1cmUsIHNheSBZLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQ6CgoqKkludmVzdGlnYXRpbmcgVElQQyBhbmQgVURQIE11bHRpY2FzdCBGdW5jdGlvbmFsaXR5KioKClJpZ2h0LCBzbyBJIHNlZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBUSVBDOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSBnb2luZyB0byBiZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIG5vdGljaW5nIG1vZGlmaWNhdGlvbnMgdG86CgoqICAgYHRpcGNfdWRwX3JjYXN0X2FkZGAKKiAgIGB0aXBjX3VkcF9yY2FzdF9kaXNjYAoqICAgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgCiogICBgdGlwY191ZHBfZW5hYmxlYAoqICAgYGNsZWFudXBfYmVhcmVyYAoKVGhvc2UgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBwb3NzaWJpbGl0eSBvZiBjb2xsYXRlcmFsIGVmZmVjdHMuIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgbW9yZSB0aG9yb3VnaCBjb2RlIHNlYXJjaCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgY2hhbmdlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGdldHRpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfcmNhc3RfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvdWRwX21lZGlhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvdWRwX21lZGlhLmM9MjM2PXN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTI4My1cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjI4NDpzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy0yODUtXHRcdFx0ICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jPTMzMj1zdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM2Mi1cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjM2MzpcdHJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2c3JjKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM2NC19XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmM9NjIwPWludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDItXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo2NDM6XHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNmFkZHIpO1xubmV0L3RpcGMvdWRwX21lZGlhLmMtNjQ0LX1cbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz02NTU9c3RhdGljIGludCB0aXBjX3VkcF9lbmFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNzg1LVx0ZWxzZVxubmV0L3RpcGMvdWRwX21lZGlhLmM6Nzg2Olx0XHRlcnIgPSB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2cmVtb3RlKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTc4Ny1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlY2VudCBDb2RlIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIG92ZXIgdGhlc2UgcmVjZW50IGNoYW5nZXMsIGFuZCBJIG5lZWQgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zLiBUaGUgY29yZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRvdWNoZWQgYXJlIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCBgY2xlYW51cF9iZWFyZXJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGJyZWFrIGRvd24gd2hlcmUgZWFjaCBpcyB0cmlnZ2VyZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLgoKSSYjMzk7bSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHdoaWNoIGltcGxpZXMgYW4gYXN5bmNocm9ub3VzIGFzcGVjdCB0byBpdHMgb3BlcmF0aW9uLiBgdGlwY191ZHBfZW5hYmxlYCBpcywgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGludm9rZWQgd2hlbiBhIGJlYXJlciBpcyBiZWluZyBlbmFibGVkIOKAkyBhIGNydWNpYWwgcG9pbnQgZm9yIG1lIHRvIHJlbWVtYmVyIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHRoZSBpbml0aWFsIHNldHVwLiBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgYSBOZXRsaW5rIGNhbGxiYWNrOyBpdHMgYXNzb2NpYXRpb24gd2l0aCBOZXRsaW5rIHRlbGxzIG1lIGl0IGlzIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMsIGxpa2VseSBhZGRpbmcgYSBuZXcgVURQIGJlYXJlci4gRmluYWxseSwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGlzIGNhbGxlZCBvbiByZWNlaXZlLCBhbmQgaXMgcG90ZW50aWFsbHkgdGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciB0aGlzIGV4ZXJjaXNlLCBhcyBpdCBtYXkgYmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIG9uIGEgcGFja2V0LgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBhc3luY2hyb25vdXMgbmF0dXJlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGNsZWFudXBfYmVhcmVyYCBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbGVyIHdpbGwgaWxsdW1pbmF0ZSB0aGUgd2lkZXIgY29udGV4dCBvZiB0aGVzZSBtb2RpZmljYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgdW5lYXJ0aCB0aGUgcm9vdCBvZiB0aGUgY2hhbmdlLiBUaGlzIGhlbHBzIG1lIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aWRlciBwaWN0dXJlLCBhbmQgaXRzIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTgwMT1zdGF0aWMgdm9pZCByY2FzdF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04MDgtXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4MDk6LyogY2xlYW51cF9iZWFyZXIgLSBicmVhayB0aGUgc29ja2V0L2JlYXJlciBhc3NvY2lhdGlvbiAqL1xubmV0L3RpcGMvdWRwX21lZGlhLmM6ODEwOnN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTgxMS17XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmM9ODM3PXN0YXRpYyB2b2lkIHRpcGNfdWRwX2Rpc2FibGUoc3RydWN0IHRpcGNfYmVhcmVyICpiKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1MC1cdGF0b21pY19pbmMoXHUwMDI2dGlwY19uZXQoc29ja19uZXQodWItXHUwMDNlc2spKS1cdTAwM2V3cV9jb3VudCk7XG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4NTE6XHRJTklUX1dPUksoXHUwMDI2dWItXHUwMDNld29yaywgY2xlYW51cF9iZWFyZXIpO1xubmV0L3RpcGMvdWRwX21lZGlhLmMtODUyLVx0c2NoZWR1bGVfd29yayhcdTAwMjZ1Yi1cdTAwM2V3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzExCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUSVBDIFVEUCBCZWFyZXIgTG9naWMgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdGlwY191ZHBfZGlzYWJsZWAgc2NoZWR1bGVzIGBjbGVhbnVwX2JlYXJlcmAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgdGlwY191ZHBfcmNhc3RfYWRkYCwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgLCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAsIGB0aXBjX3VkcF9lbmFibGVgLCBgY2xlYW51cF9iZWFyZXJgLCBhbmQgYHRpcGNfdWRwX2Rpc2FibGVgLiBJJiMzOTttIHZlcmlmeWluZyB0aGUgc3RhdGljL25vbi1zdGF0aWMgbmF0dXJlIG9mIHRoZXNlIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4KCkFscmlnaHQsIGB0aXBjX3VkcF9yY2FzdF9hZGRgIGlzIHN0YXRpYy4gR29vZC4gYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGlzIGFsc28gc3RhdGljLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgbm9uLXN0YXRpYy4gYHRpcGNfdWRwX2VuYWJsZWAgaXMgc3RhdGljLiBBbmQsIGZpbmFsbHksIGJvdGggYGNsZWFudXBfYmVhcmVyYCBhbmQgYHRpcGNfdWRwX2Rpc2FibGVgIGFyZSBzdGF0aWMgYXMgd2VsbC4gSSYjMzk7bSBhZGRpbmcgdGhlc2UgZnVuY3Rpb24gbmFtZXMgdG8gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCBmb3IgY2xvc2VyIGV4YW1pbmF0aW9uLgoKTm93LCBsZXQmIzM5O3MgdGFsayBhYm91dCB0aGUgY29udGV4dC4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2ssIGByY2FzdF9sb2NrYCwgd2l0aGluIHRoZSBUSVBDIFVEUCBtZWRpYSBiZWFyZXIgbG9naWMgdG8gbWFuYWdlIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YC4gVGhpcyBpcyBjbGFzc2ljIHRocmVhZCBzYWZldHkgYW5kIGxpa2VseSBtaXRpZ2F0ZXMgcmFjZSBjb25kaXRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxpZXMgaW4gdGhlIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIGxpa2UgYHRpcGNfdWRwX3JjYXN0X2FkZGAgYW5kIGBjbGVhbnVwX2JlYXJlcmAgdG8gdXRpbGl6ZSB0aGlzIGxvY2ssIGFsb25nIHdpdGggYSBuZXcgYGRpc2FibGVkYCBmbGFnLiBUaGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljOyBnaXZlbiB0aGF0LCBpdCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IEkgd2FudCB0byBmdXp6LgoKRmluYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIFRoYXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RJUENfTUVESUFfVURQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWc9MjQ9Y29uZmlnIFRJUENfTUVESUFfSUJcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTI5LVx0ICBJUC1vdmVyLUluZmluaUJhbmQgZGV2aWNlcy5cbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXG5uZXQvdGlwYy9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvTWFrZWZpbGU9MTQ9Q0ZMQUdTX3RyYWNlLm8gJiM0Mzs9IC1JJChzcmMpXG5uZXQvdGlwYy9NYWtlZmlsZS0xNS1cbm5ldC90aXBjL01ha2VmaWxlOjE2OnRpcGMtJChDT05GSUdfVElQQ19NRURJQV9VRFApXHQmIzQzOz0gdWRwX21lZGlhLm9cbm5ldC90aXBjL01ha2VmaWxlLTE3LXRpcGMtJChDT05GSUdfVElQQ19NRURJQV9JQilcdCYjNDM7PSBpYl9tZWRpYS5vXG4tLVxubmV0L3RpcGMvYmVhcmVyLmM9NTE9c3RhdGljIHN0cnVjdCB0aXBjX21lZGlhICogY29uc3QgbWVkaWFfaW5mb19hcnJheVtdID0ge1xuLS1cbm5ldC90aXBjL2JlYXJlci5jLTU1LSNlbmRpZlxubmV0L3RpcGMvYmVhcmVyLmM6NTY6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxubmV0L3RpcGMvYmVhcmVyLmMtNTctXHRcdTAwMjZ1ZHBfbWVkaWFfaW5mbyxcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYz04MjQ9c3RhdGljIGludCBfX3RpcGNfbmxfYWRkX2JlYXJlcihzdHJ1Y3QgdGlwY19ubF9tc2cgKm1zZyxcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy04NTctXG5uZXQvdGlwYy9iZWFyZXIuYzo4NTg6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxubmV0L3RpcGMvYmVhcmVyLmMtODU5LVx0aWYgKGJlYXJlci1cdTAwM2VtZWRpYS1cdTAwM2V0eXBlX2lkID09IFRJUENfTUVESUFfVFlQRV9VRFApIHtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYz0xMDYzPWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDkxLVxubmV0L3RpcGMvYmVhcmVyLmM6MTA5MjojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDkzLVx0aWYgKGF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pIHtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYz0xMTEwPWludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC90aXBjL2JlYXJlci5jLTExNTgtXHRcdFx0fVxubmV0L3RpcGMvYmVhcmVyLmM6MTE1OTojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTYwLVx0XHRcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFx1MDAzY1xuLS1cbm5ldC90aXBjL2JlYXJlci5jPTEzMTE9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzUzLVx0XHRcdH1cbm5ldC90aXBjL2JlYXJlci5jOjEzNTQ6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxubmV0L3RpcGMvYmVhcmVyLmMtMTM1NS1cdFx0XHRpZiAodGlwY191ZHBfbXR1X2JhZChubGFfZ2V0X3UzMlxuLS1cbm5ldC90aXBjL2JlYXJlci5oPTE5Nj1leHRlcm4gc3RydWN0IHRpcGNfbWVkaWEgaWJfbWVkaWFfaW5mbztcbm5ldC90aXBjL2JlYXJlci5oLTE5Ny0jZW5kaWZcbm5ldC90aXBjL2JlYXJlci5oOjE5ODojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy9iZWFyZXIuaC0xOTktZXh0ZXJuIHN0cnVjdCB0aXBjX21lZGlhIHVkcF9tZWRpYV9pbmZvO1xuLS1cbm5ldC90aXBjL25ldGxpbmsuYz0xNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyB0aXBjX2dlbmxfdjJfb3BzW10gPSB7XG4tLVxubmV0L3RpcGMvbmV0bGluay5jLTI2OS1cdH0sXG5uZXQvdGlwYy9uZXRsaW5rLmM6MjcwOiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL25ldGxpbmsuYy0yNzEtXHR7XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmgtMzYtXG5uZXQvdGlwYy91ZHBfbWVkaWEuaDozNzojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC0zOC0jaWZuZGVmIF9USVBDX1VEUF9NRURJQV9IXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMzIKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipDb25maWd1cmF0aW9uIENvbmZpcm1hdGlvbiBhbmQgSW1tZWRpYXRlIEFjdGlvbioqCgpBbHJpZ2h0LCB5ZXAsIHRoYXQmIzM5O3MgaXQuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBUSVBDX01FRElBX1VEUGAgaXMgdGhlIGFwcHJvcHJpYXRlIG9wdGlvbi4gQW5kLCBvZiBjb3Vyc2UsIGBUSVBDYCBpdHNlbGYgaXMgYWxzbyBhYnNvbHV0ZWx5IGVzc2VudGlhbCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4gV2l0aCB0aGF0IHNldHRsZWQsIHRoZXJlJiMzOTtzIG5vIG5lZWQgdG8gZGVsYXkuIEkmIzM5O2xsIGdldCB0aGUgcmVzdWx0cyB0byB5b3UgcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDU6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9kaXNhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJjYXN0X2xvY2tgKSBhbmQgYSBgZGlzYWJsZWRgIGZsYWcgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YCBpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLCBmaXhpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDssCiAgICAmIzM0O1RJUENfTUVESUFfVURQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX3JjYXN0X2Rpc2MmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9lbmFibGUmIzM0OywKICAgICYjMzQ7Y2xlYW51cF9iZWFyZXImIzM0OywKICAgICYjMzQ7dGlwY191ZHBfZGlzYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjI3LjUyMDQ1NjYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMTU3ODUzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiLFxuICAgIFwiVElQQ19NRURJQV9VRFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3VkcF9yY2FzdF9hZGRcIixcbiAgICBcInRpcGNfdWRwX3JjYXN0X2Rpc2NcIixcbiAgICBcInRpcGNfdWRwX25sX2JlYXJlcl9hZGRcIixcbiAgICBcInRpcGNfdWRwX2VuYWJsZVwiLFxuICAgIFwiY2xlYW51cF9iZWFyZXJcIixcbiAgICBcInRpcGNfdWRwX2Rpc2FibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MjcuNTIwNDYxOTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTcxNDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQxMTg5MTk1ZDI5YjU4OTlkZDgyMTMyZjMxMjllNzA0ODc4OTdjZTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDU6NDI6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xcbmluZGV4IDYyYWU3ZjViNTg0MDljLi4xODQ0ZGVhMDFjMDZlYSAxMDA2NDRcXG4tLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuY1xcbisrKyBiL25ldC90aXBjL3VkcF9tZWRpYS5jXFxuQEAgLTk0LDYgKzk0LDcgQEAgc3RydWN0IHVkcF9yZXBsaWNhc3Qge1xcbiAgKiBAaWZpbmRleDpcXHRsb2NhbCBhZGRyZXNzIHNjb3BlXFxuICAqIEB3b3JrOlxcdHVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlclxcbiAgKiBAcmNhc3Q6XFx0YXNzb2NpYXRlZCB1ZHBfcmVwbGljYXN0IGNvbnRhaW5lclxcbisgKiBAcmNhc3RfbG9jazpcXHRzZXJpYWxpemUgdXBkYXRlcyB0byBAcmNhc3QubGlzdCBhZ2FpbnN0IGNvbmN1cnJlbnQgdXBkYXRlcnNcXG4gICovXFxuIHN0cnVjdCB1ZHBfYmVhcmVyIHtcXG4gXFx0c3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7XFxuQEAgLTEwMSw2ICsxMDIsOCBAQCBzdHJ1Y3QgdWRwX2JlYXJlciB7XFxuIFxcdHUzMiBpZmluZGV4O1xcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4gXFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgcmNhc3Q7XFxuK1xcdHNwaW5sb2NrX3QgcmNhc3RfbG9jaztcXG4rXFx0Ym9vbCBkaXNhYmxlZDtcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuQEAgLTI3OCwyNiArMjgxLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuLXtcXG4tXFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgKnJjYXN0LCAqdG1wO1xcbi1cXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XFxuLVxcbi1cXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXFx1MDAzZW1lZGlhX3B0cik7XFxuLVxcdGlmICghdWIpIHtcXG4tXFx0XFx0cHJfZXJyX3JhdGVsaW1pdGVkKFxcXCJVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tXFx0fVxcbi1cXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbi1cXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSlcXG4tXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLVxcdH1cXG4tXFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuIHtcXG5AQCAtMzA4LDE2ICsyOTEsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRpZiAoIXViKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbitcXHRpZiAodWItXFx1MDAzZWRpc2FibGVkKSB7XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkocmNhc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbitcXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZigqYWRkcikpKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCFyY2FzdClcXG4rXFx0aWYgKCFyY2FzdCkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGRzdF9jYWNoZV9pbml0KFxcdTAwMjZyY2FzdC1cXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRrZnJlZShyY2FzdCk7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XFxuK1xcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdGItXFx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnViLVxcdTAwM2VyY2FzdF9sb2NrKTtcXG4gXFxuIFxcdGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVApXFxuIFxcdFxcdHByX2luZm8oXFxcIk5ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcXFxuXFxcIiwgXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLmlwdjQpO1xcbkBAIC0zMjUsOCArMzI2LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRlbHNlIGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVBWNilcXG4gXFx0XFx0cHJfaW5mbyhcXFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxcXG5cXFwiLCBcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIuaXB2Nik7XFxuICNlbmRpZlxcbi1cXHRiLVxcdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XFxuLVxcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0zNjEsOSArMzYwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcXHUwMDI2c3JjKSkpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4gXFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcXHUwMDI2c3JjKTtcXG4gfVxcbiBcXG5AQCAtNjQ0LDkgKzY0MCw2IEBAIGludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFxcdTAwMjZhZGRyKSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcbiBcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZhZGRyKTtcXG4gfVxcbiBcXG5AQCAtNjc5LDYgKzY3Miw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXFxuIFxcdFxcdGdvdG8gZXJyO1xcbkBAIC04MTksMTAgKzgxMywxMyBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcXG4gXFx0c3RydWN0IHRpcGNfbmV0ICp0bjtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXFx1MDAyNnViLVxcdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxpc3RfZGVsX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRjYWxsX3JjdV9odXJyeShcXHUwMDI2cmNhc3QtXFx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xcbiBcXHR9XFxuK1xcdHViLVxcdTAwM2VkaXNhYmxlZCA9IHRydWU7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVxcdTAwM2VzaykpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MjguMjEyMjM4NjE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDUyMzk5NDEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiLFxuICAgIFwidGlwY191ZHBfZGlzYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJjYXN0X2xvY2tgKSBhbmQgYSBgZGlzYWJsZWRgIGZsYWcgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIGByY2FzdC5saXN0YCBpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLCBmaXhpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGxvZ2ljLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQxMTg5MTk1ZDI5YjU4OTlkZDgyMTMyZjMxMjllNzA0ODc4OTdjZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNTo0MjoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5jIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcbmluZGV4IDYyYWU3ZjViNTg0MDljLi4xODQ0ZGVhMDFjMDZlYSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuQEAgLTk0LDYgKzk0LDcgQEAgc3RydWN0IHVkcF9yZXBsaWNhc3Qge1xuICAqIEBpZmluZGV4Olx0bG9jYWwgYWRkcmVzcyBzY29wZVxuICAqIEB3b3JrOlx0dXNlZCB0byBzY2hlZHVsZSBkZWZlcnJlZCB3b3JrIG9uIGEgYmVhcmVyXG4gICogQHJjYXN0Olx0YXNzb2NpYXRlZCB1ZHBfcmVwbGljYXN0IGNvbnRhaW5lclxuKyAqIEByY2FzdF9sb2NrOlx0c2VyaWFsaXplIHVwZGF0ZXMgdG8gQHJjYXN0Lmxpc3QgYWdhaW5zdCBjb25jdXJyZW50IHVwZGF0ZXJzXG4gICovXG4gc3RydWN0IHVkcF9iZWFyZXIge1xuIFx0c3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7XG5AQCAtMTAxLDYgKzEwMiw4IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHUzMiBpZmluZGV4O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDtcbitcdHNwaW5sb2NrX3QgcmNhc3RfbG9jaztcbitcdGJvb2wgZGlzYWJsZWQ7XG4gfTtcbiBcbiBzdGF0aWMgaW50IHRpcGNfdWRwX2lzX21jYXN0X2FkZHIoc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuQEAgLTI3OCwyNiArMjgxLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0aXBjX3VkcF9pc19rbm93bl9wZWVyKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbi1cdFx0XHRcdCAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbi17XG4tXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4tXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XG4tXG4tXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXHUwMDNlbWVkaWFfcHRyKTtcbi1cdGlmICghdWIpIHtcbi1cdFx0cHJfZXJyX3JhdGVsaW1pdGVkKFwiVURQIGJlYXJlciBpbnN0YW5jZSBub3QgZm91bmRcXG5cIik7XG4tXHRcdHJldHVybiBmYWxzZTtcbi1cdH1cbi1cbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyY2FzdCwgdG1wLCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XG4tXHRcdGlmICghbWVtY21wKFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSlcbi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdH1cbi1cbi1cdHJldHVybiBmYWxzZTtcbi19XG4tXG4gc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0XHRcdCAgICAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbiB7XG5AQCAtMzA4LDE2ICsyOTEsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0aWYgKCF1YilcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4rXHRpZiAodWItXHUwMDNlZGlzYWJsZWQpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuK1x0XHRpZiAoIW1lbWNtcChcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2YoKmFkZHIpKSkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRyY2FzdCA9IGttYWxsb2Nfb2JqKCpyY2FzdCwgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXJjYXN0KVxuK1x0aWYgKCFyY2FzdCkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4gXG4gXHRpZiAoZHN0X2NhY2hlX2luaXQoXHUwMDI2cmNhc3QtXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdFx0a2ZyZWUocmNhc3QpO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XG4rXHRsaXN0X2FkZF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCk7XG4rXHRiLVx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQKVxuIFx0XHRwcl9pbmZvKFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk0XFxuXCIsIFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIuaXB2NCk7XG5AQCAtMzI1LDggKzMyNiw2IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdGVsc2UgaWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQVjYpXG4gXHRcdHByX2luZm8oXCJOZXcgcmVwbGljYXN0IHBlZXI6ICVwSTZcXG5cIiwgXHUwMDI2cmNhc3QtXHUwMDNlYWRkci5pcHY2KTtcbiAjZW5kaWZcbi1cdGItXHUwMDNlYmNhc3RfYWRkci5icm9hZGNhc3QgPSBUSVBDX1JFUExJQ0FTVF9TVVBQT1JUO1xuLVx0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTM2MSw5ICszNjAsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcdTAwMjZzcmMpKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNnNyYyk7XG4gfVxuIFxuQEAgLTY0NCw5ICs2NDAsNiBAQCBpbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0aWYgKHRpcGNfdWRwX2lzX2tub3duX3BlZXIoYiwgXHUwMDI2YWRkcikpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcdTAwMjZhZGRyKTtcbiB9XG4gXG5AQCAtNjc5LDYgKzY3Miw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXG4gXHRcdGdvdG8gZXJyO1xuQEAgLTgxOSwxMCArODEzLDEzIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcbiBcdHN0cnVjdCB0aXBjX25ldCAqdG47XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuIFx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCk7XG4gXHRcdGNhbGxfcmN1X2h1cnJ5KFx1MDAyNnJjYXN0LVx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xuIFx0fVxuK1x0dWItXHUwMDNlZGlzYWJsZWQgPSB0cnVlO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVx1MDAzZXNrKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjoyOC4yMTIyNDM0ODZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU0ODE2OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBVRFAgTWVkaWEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGBuZXQvdGlwYy91ZHBfbWVkaWEuY2AuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgc3BpbmxvY2ssIGByY2FzdF9sb2NrYCwgYW5kIGEgYm9vbGVhbiwgYGRpc2FibGVkYCwgdG8gdGhlIGBzdHJ1Y3QgdWRwX2JlYXJlcmAuIEhtbSwgdGhhdCBzdWdnZXN0cyB0aGV5J3JlIGFkZHJlc3Npbmcgc29tZSBjb25jdXJyZW5jeSBpc3N1ZXMgb3IgcGVyaGFwcyBpbXBsZW1lbnRpbmcgYSBncmFjZWZ1bCBzaHV0ZG93biBtZWNoYW5pc20gZm9yIHRoZSBVRFAgYmVhcmVyLlxuXG5UaGUgbW9yZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSByZW1vdmFsIG9mIGB0aXBjX3VkcF9pc19rbm93bl9wZWVyYCBhbmQgaXRzIGludGVncmF0aW9uIGludG8gYHRpcGNfdWRwX3JjYXN0X2FkZGAgdW5kZXIgdGhlIG5ldyBzcGlubG9jay4gVGhhdCdzIGEgZ29vZCBtb3ZlOyBjZW50cmFsaXppbmcgdGhlIHBlZXIgY2hlY2sgd2l0aCB0aGUgYWRkaXRpb24gbG9naWMgc2hvdWxkIGltcHJvdmUgYXRvbWljaXR5IGFuZCByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSByYWNlIGNvbmRpdGlvbi4gVGhlIGluY2x1c2lvbiBvZiBtb2RpZnlpbmcgYGNsZWFudXBfYmVhcmVyYCB0byBzZXQgdGhlIGBkaXNhYmxlZCA9IHRydWVgIGFuZCBjbGVhciB0aGUgbGlzdCB1bmRlciB0aGUgc3BpbmxvY2sgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGNhcmVmdWwgY29uc2lkZXJhdGlvbiBnaXZlbiB0byB3aGF0IGhhcHBlbnMgd2hlbiB3ZSBkaXNhYmxlIG9yIHJlbW92ZSB0aGUgYmVhcmVyIGFuZCBwcmV2ZW50aW5nIGFueSBwb3NzaWJsZSBpc3N1ZXMgZHVyaW5nIHRoYXQgb3BlcmF0aW9uLiBTbywgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0byB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgVElQQyBVRFAgbWVkaWEgdG8gYmUgZW5hYmxlZC4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCBgTWFrZWZpbGVgIGZvciBUSVBDLiBJJ2xsIHNlYXJjaCBmb3IgXCJUSVBDXCIgYW5kIFwiVURQXCIgd2l0aGluIGBuZXQvdGlwYy9LY29uZmlnYCBhbmQgYG5ldC90aXBjL01ha2VmaWxlYCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzLiBJIHNob3VsZCBxdWlja2x5IGJlIGFibGUgdG8gc2VlIHdoaWNoIG9wdGlvbnMgY29udHJvbCB0aGUgYnVpbGQgYW5kIGluc3RhbnRpYXRpb24gb2YgdGhpcyBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMTUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjozMy4xNjcwNjI2NTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2OTc5NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRJUENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9LY29uZmlnLTItI1xcbm5ldC90aXBjL0tjb25maWc6MzojIFRJUEMgY29uZmlndXJhdGlvblxcbm5ldC90aXBjL0tjb25maWctNC0jXFxubmV0L3RpcGMvS2NvbmZpZy01LVxcbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcXG5uZXQvdGlwYy9LY29uZmlnOjc6XFx0dHJpc3RhdGUgXFxcIlRoZSBUSVBDIFByb3RvY29sXFxcIlxcbm5ldC90aXBjL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvdGlwYy9LY29uZmlnLTktXFx0aGVscFxcbm5ldC90aXBjL0tjb25maWc6MTA6XFx0ICBUaGUgVHJhbnNwYXJlbnQgSW50ZXIgUHJvY2VzcyBDb21tdW5pY2F0aW9uIChUSVBDKSBwcm90b2NvbCBpc1xcbm5ldC90aXBjL0tjb25maWctMTEtXFx0ICBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIGludHJhIGNsdXN0ZXIgY29tbXVuaWNhdGlvbi4gVGhpcyBwcm90b2NvbFxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0xNC1cXG5uZXQvdGlwYy9LY29uZmlnOjE1OlxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVElQQywgc2VlIGh0dHA6Ly90aXBjLnNvdXJjZWZvcmdlLm5ldC5cXG5uZXQvdGlwYy9LY29uZmlnLTE2LVxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0yMy1cXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG5uZXQvdGlwYy9LY29uZmlnOjI2OlxcdGRlcGVuZHMgb24gVElQQyBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0lQT0lCXFxubmV0L3RpcGMvS2NvbmZpZy0yNy1cXHRoZWxwXFxubmV0L3RpcGMvS2NvbmZpZzoyODpcXHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG9uXFxubmV0L3RpcGMvS2NvbmZpZy0yOS1cXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbm5ldC90aXBjL0tjb25maWc6MzI6XFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy0zMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMzUtXFx0aGVscFxcbm5ldC90aXBjL0tjb25maWc6MzY6XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIHJ1bm5pbmcgVElQQyBvdmVyIElQL1VEUFxcbm5ldC90aXBjL0tjb25maWctMzctXFxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cXG5uZXQvdGlwYy9LY29uZmlnOjM5OlxcdGJvb2wgXFxcIlRJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XFxcIlxcbm5ldC90aXBjL0tjb25maWc6NDA6XFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy00MS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTQ1LVxcdGhlbHBcXG5uZXQvdGlwYy9LY29uZmlnOjQ2OlxcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBUSVBDIGVuY3J5cHRpb24uXFxubmV0L3RpcGMvS2NvbmZpZzo0NzpcXHQgIEFsbCBUSVBDIG1lc3NhZ2VzIHdpbGwgYmUgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSB1c2luZyB0aGUgY3VycmVudGx5IG1vc3RcXG5uZXQvdGlwYy9LY29uZmlnLTQ4LVxcdCAgYWR2YW5jZWQgYWxnb3JpdGhtOiBBRUFEIEFFUy1HQ00gKGxpa2UgSVBTZWMgb3IgVExTKSBiZWZvcmUgbGVhdmluZy9cXG5uZXQvdGlwYy9LY29uZmlnOjQ5OlxcdCAgZW50ZXJpbmcgdGhlIFRJUEMgc3RhY2suXFxubmV0L3RpcGMvS2NvbmZpZy01MC1cXHQgIEtleSBzZXR0aW5nIGZyb20gdXNlci1zcGFjZSBpcyBwZXJmb3JtZWQgdmlhIG5ldGxpbmsgYnkgYSB1c2VyIHByb2dyYW1cXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZzo1NDpcXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbm5ldC90aXBjL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy01Ni1cXHRkZWZhdWx0IHlcXG5uZXQvdGlwYy9LY29uZmlnLTU3LVxcdGhlbHBcXG5uZXQvdGlwYy9LY29uZmlnOjU4OlxcdFN1cHBvcnQgZm9yIFRJUEMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgc3MgdG9vbC5cXG5uZXQvdGlwYy9LY29uZmlnLTU5LVxcdElmIHVuc3VyZSwgc2F5IFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjMzLjcyNDA0NzUwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjIwNjc0MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJ20gbG9va2luZyBhdDpcblxuKipJbnZlc3RpZ2F0aW5nIFRJUEMgYW5kIFVEUCBNdWx0aWNhc3QgRnVuY3Rpb25hbGl0eSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBUSVBDOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiB0b3VjaGVkLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGdvaW5nIHRvIGJlLiBMZXQncyBzZWUuLi4gSSdtIG5vdGljaW5nIG1vZGlmaWNhdGlvbnMgdG86XG5cbiogICBgdGlwY191ZHBfcmNhc3RfYWRkYFxuKiAgIGB0aXBjX3VkcF9yY2FzdF9kaXNjYFxuKiAgIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYFxuKiAgIGB0aXBjX3VkcF9lbmFibGVgXG4qICAgYGNsZWFudXBfYmVhcmVyYFxuXG5UaG9zZSBhcmUgdGhlIHByaW1hcnkgZnVuY3Rpb25zLCBidXQgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGNvbGxhdGVyYWwgZWZmZWN0cy4gSSBzaG91bGQgcHJvYmFibHkgZG8gYSBtb3JlIHRob3JvdWdoIGNvZGUgc2VhcmNoIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBnZXR0aW5nIHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzE5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6MzcuMzg2MTE5MzUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDgwNzI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3VkcF9yY2FzdF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmM9MjM2PXN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMjgzLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjI4NDpzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMjg1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jPTMzMj1zdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMzYyLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjM2MzpcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZzcmMpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM2NC19XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz02MjA9aW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjQyLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjY0MzpcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZhZGRyKTtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDQtfVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmM9NjU1PXN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNzg1LVxcdGVsc2VcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo3ODY6XFx0XFx0ZXJyID0gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZyZW1vdGUpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTc4Ny1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0MjozNy41MTA5MzgyODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUxNTE5NDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVjZW50IENvZGUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhlc2UgcmVjZW50IGNoYW5nZXMsIGFuZCBJIG5lZWQgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGljYXRpb25zLiBUaGUgY29yZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRvdWNoZWQgYXJlIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCBgY2xlYW51cF9iZWFyZXJgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgYnJlYWsgZG93biB3aGVyZSBlYWNoIGlzIHRyaWdnZXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0uXG5cbkknbSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHdoaWNoIGltcGxpZXMgYW4gYXN5bmNocm9ub3VzIGFzcGVjdCB0byBpdHMgb3BlcmF0aW9uLiBgdGlwY191ZHBfZW5hYmxlYCBpcywgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGludm9rZWQgd2hlbiBhIGJlYXJlciBpcyBiZWluZyBlbmFibGVkIOKAkyBhIGNydWNpYWwgcG9pbnQgZm9yIG1lIHRvIHJlbWVtYmVyIGFzIGl0IGxpa2VseSByZWxhdGVzIHRvIHRoZSBpbml0aWFsIHNldHVwLiBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgYSBOZXRsaW5rIGNhbGxiYWNrOyBpdHMgYXNzb2NpYXRpb24gd2l0aCBOZXRsaW5rIHRlbGxzIG1lIGl0IGlzIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMsIGxpa2VseSBhZGRpbmcgYSBuZXcgVURQIGJlYXJlci4gRmluYWxseSwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGlzIGNhbGxlZCBvbiByZWNlaXZlLCBhbmQgaXMgcG90ZW50aWFsbHkgdGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciB0aGlzIGV4ZXJjaXNlLCBhcyBpdCBtYXkgYmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIG9uIGEgcGFja2V0LlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGFzeW5jaHJvbm91cyBuYXR1cmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgY2xlYW51cF9iZWFyZXJgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXIgd2lsbCBpbGx1bWluYXRlIHRoZSB3aWRlciBjb250ZXh0IG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGFuZCBwb3RlbnRpYWxseSB1bmVhcnRoIHRoZSByb290IG9mIHRoZSBjaGFuZ2UuIFRoaXMgaGVscHMgbWUgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdpZGVyIHBpY3R1cmUsIGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTM2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjQyLjA2MjQ1OTg1M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDQyMzc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjbGVhbnVwX2JlYXJlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuYz04MDE9c3RhdGljIHZvaWQgcmNhc3RfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpXFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04MDgtXFxubmV0L3RpcGMvdWRwX21lZGlhLmM6ODA5Oi8qIGNsZWFudXBfYmVhcmVyIC0gYnJlYWsgdGhlIHNvY2tldC9iZWFyZXIgYXNzb2NpYXRpb24gKi9cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4MTA6c3RhdGljIHZvaWQgY2xlYW51cF9iZWFyZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTgxMS17XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz04Mzc9c3RhdGljIHZvaWQgdGlwY191ZHBfZGlzYWJsZShzdHJ1Y3QgdGlwY19iZWFyZXIgKmIpXFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NTAtXFx0YXRvbWljX2luYyhcXHUwMDI2dGlwY19uZXQoc29ja19uZXQodWItXFx1MDAzZXNrKSktXFx1MDAzZXdxX2NvdW50KTtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4NTE6XFx0SU5JVF9XT1JLKFxcdTAwMjZ1Yi1cXHUwMDNld29yaywgY2xlYW51cF9iZWFyZXIpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1Mi1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZ1Yi1cXHUwMDNld29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjQyLjE1Njg5MjExMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzMxMzA5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRJUEMgVURQIEJlYXJlciBMb2dpYyBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgdGlwY191ZHBfZGlzYWJsZWAgc2NoZWR1bGVzIGBjbGVhbnVwX2JlYXJlcmAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgdGlwY191ZHBfcmNhc3RfYWRkYCwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgLCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAsIGB0aXBjX3VkcF9lbmFibGVgLCBgY2xlYW51cF9iZWFyZXJgLCBhbmQgYHRpcGNfdWRwX2Rpc2FibGVgLiBJJ20gdmVyaWZ5aW5nIHRoZSBzdGF0aWMvbm9uLXN0YXRpYyBuYXR1cmUgb2YgdGhlc2UgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLlxuXG5BbHJpZ2h0LCBgdGlwY191ZHBfcmNhc3RfYWRkYCBpcyBzdGF0aWMuIEdvb2QuIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCBpcyBhbHNvIHN0YXRpYywgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgIGlzIG5vbi1zdGF0aWMuIGB0aXBjX3VkcF9lbmFibGVgIGlzIHN0YXRpYy4gQW5kLCBmaW5hbGx5LCBib3RoIGBjbGVhbnVwX2JlYXJlcmAgYW5kIGB0aXBjX3VkcF9kaXNhYmxlYCBhcmUgc3RhdGljIGFzIHdlbGwuIEknbSBhZGRpbmcgdGhlc2UgZnVuY3Rpb24gbmFtZXMgdG8gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCBmb3IgY2xvc2VyIGV4YW1pbmF0aW9uLlxuXG5Ob3csIGxldCdzIHRhbGsgYWJvdXQgdGhlIGNvbnRleHQuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNwaW5sb2NrLCBgcmNhc3RfbG9ja2AsIHdpdGhpbiB0aGUgVElQQyBVRFAgbWVkaWEgYmVhcmVyIGxvZ2ljIHRvIG1hbmFnZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAuIFRoaXMgaXMgY2xhc3NpYyB0aHJlYWQgc2FmZXR5IGFuZCBsaWtlbHkgbWl0aWdhdGVzIHJhY2UgY29uZGl0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIHRoZSBtb2RpZmljYXRpb25zIHRvIGZ1bmN0aW9ucyBsaWtlIGB0aXBjX3VkcF9yY2FzdF9hZGRgIGFuZCBgY2xlYW51cF9iZWFyZXJgIHRvIHV0aWxpemUgdGhpcyBsb2NrLCBhbG9uZyB3aXRoIGEgbmV3IGBkaXNhYmxlZGAgZmxhZy4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYzsgZ2l2ZW4gdGhhdCwgaXQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBJIHdhbnQgdG8gZnV6ei5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAuIFRoYXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDU6NDI6NDguNjMwMDI1MTkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODg4NTEyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVElQQ19NRURJQV9VRFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWc9MjQ9Y29uZmlnIFRJUENfTUVESUFfSUJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjktXFx0ICBJUC1vdmVyLUluZmluaUJhbmQgZGV2aWNlcy5cXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxcbm5ldC90aXBjL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiSVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL01ha2VmaWxlPTE0PUNGTEFHU190cmFjZS5vICs9IC1JJChzcmMpXFxubmV0L3RpcGMvTWFrZWZpbGUtMTUtXFxubmV0L3RpcGMvTWFrZWZpbGU6MTY6dGlwYy0kKENPTkZJR19USVBDX01FRElBX1VEUClcXHQrPSB1ZHBfbWVkaWEub1xcbm5ldC90aXBjL01ha2VmaWxlLTE3LXRpcGMtJChDT05GSUdfVElQQ19NRURJQV9JQilcXHQrPSBpYl9tZWRpYS5vXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYz01MT1zdGF0aWMgc3RydWN0IHRpcGNfbWVkaWEgKiBjb25zdCBtZWRpYV9pbmZvX2FycmF5W10gPSB7XFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy01NS0jZW5kaWZcXG5uZXQvdGlwYy9iZWFyZXIuYzo1NjojaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXFxubmV0L3RpcGMvYmVhcmVyLmMtNTctXFx0XFx1MDAyNnVkcF9tZWRpYV9pbmZvLFxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9ODI0PXN0YXRpYyBpbnQgX190aXBjX25sX2FkZF9iZWFyZXIoc3RydWN0IHRpcGNfbmxfbXNnICptc2csXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy04NTctXFxubmV0L3RpcGMvYmVhcmVyLmM6ODU4OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuYy04NTktXFx0aWYgKGJlYXJlci1cXHUwMDNlbWVkaWEtXFx1MDAzZXR5cGVfaWQgPT0gVElQQ19NRURJQV9UWVBFX1VEUCkge1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9MTA2Mz1pbnQgdGlwY19ubF9iZWFyZXJfYWRkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDkxLVxcbm5ldC90aXBjL2JlYXJlci5jOjEwOTI6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxcbm5ldC90aXBjL2JlYXJlci5jLTEwOTMtXFx0aWYgKGF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pIHtcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jPTExMTA9aW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTU4LVxcdFxcdFxcdH1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTU5OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTYwLVxcdFxcdFxcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFxcdTAwM2NcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jPTEzMTE9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzNTMtXFx0XFx0XFx0fVxcbm5ldC90aXBjL2JlYXJlci5jOjEzNTQ6I2lmZGVmIENPTkZJR19USVBDX01FRElBX1VEUFxcbm5ldC90aXBjL2JlYXJlci5jLTEzNTUtXFx0XFx0XFx0aWYgKHRpcGNfdWRwX210dV9iYWQobmxhX2dldF91MzJcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5oPTE5Nj1leHRlcm4gc3RydWN0IHRpcGNfbWVkaWEgaWJfbWVkaWFfaW5mbztcXG5uZXQvdGlwYy9iZWFyZXIuaC0xOTctI2VuZGlmXFxubmV0L3RpcGMvYmVhcmVyLmg6MTk4OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuaC0xOTktZXh0ZXJuIHN0cnVjdCB0aXBjX21lZGlhIHVkcF9tZWRpYV9pbmZvO1xcbi0tXFxubmV0L3RpcGMvbmV0bGluay5jPTE1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzIHRpcGNfZ2VubF92Ml9vcHNbXSA9IHtcXG4tLVxcbm5ldC90aXBjL25ldGxpbmsuYy0yNjktXFx0fSxcXG5uZXQvdGlwYy9uZXRsaW5rLmM6MjcwOiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjcxLVxcdHtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTM2LVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oOjM3OiNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC0zOC0jaWZuZGVmIF9USVBDX1VEUF9NRURJQV9IXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA1OjQyOjQ5LjIxODg4MzY4MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY5MDQwNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkNvbmZpZ3VyYXRpb24gQ29uZmlybWF0aW9uIGFuZCBJbW1lZGlhdGUgQWN0aW9uKipcblxuQWxyaWdodCwgeWVwLCB0aGF0J3MgaXQuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24sIEknbSBjb25maXJtaW5nIHRoYXQgYFRJUENfTUVESUFfVURQYCBpcyB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uLiBBbmQsIG9mIGNvdXJzZSwgYFRJUENgIGl0c2VsZiBpcyBhbHNvIGFic29sdXRlbHkgZXNzZW50aWFsIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBXaXRoIHRoYXQgc2V0dGxlZCwgdGhlcmUncyBubyBuZWVkIHRvIGRlbGF5LiBJJ2xsIGdldCB0aGUgcmVzdWx0cyB0byB5b3UgcmlnaHQgYXdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEzMiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNTo0Mjo1Mi41ODc5Mjc1NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgzMDA3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIixcbiAgICBcIlRJUENfTUVESUFfVURQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGlwY191ZHBfcmNhc3RfYWRkXCIsXG4gICAgXCJ0aXBjX3VkcF9yY2FzdF9kaXNjXCIsXG4gICAgXCJ0aXBjX3VkcF9ubF9iZWFyZXJfYWRkXCIsXG4gICAgXCJ0aXBjX3VkcF9lbmFibGVcIixcbiAgICBcImNsZWFudXBfYmVhcmVyXCIsXG4gICAgXCJ0aXBjX3VkcF9kaXNhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNwaW5sb2NrIChgcmNhc3RfbG9ja2ApIGFuZCBhIGBkaXNhYmxlZGAgZmxhZyB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgYHJjYXN0Lmxpc3RgIGluIHRoZSBUSVBDIFVEUCBtZWRpYSBiZWFyZXIgbG9naWMsIGZpeGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgbG9naWMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiLFxuICAgIFwiVElQQ19NRURJQV9VRFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3VkcF9yY2FzdF9hZGRcIixcbiAgICBcInRpcGNfdWRwX3JjYXN0X2Rpc2NcIixcbiAgICBcInRpcGNfdWRwX25sX2JlYXJlcl9hZGRcIixcbiAgICBcInRpcGNfdWRwX2VuYWJsZVwiLFxuICAgIFwiY2xlYW51cF9iZWFyZXJcIixcbiAgICBcInRpcGNfdWRwX2Rpc2FibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGByY2FzdF9sb2NrYCkgYW5kIGEgYGRpc2FibGVkYCBmbGFnIHRvIHNlcmlhbGl6ZSB1cGRhdGVzIHRvIHRoZSBgcmNhc3QubGlzdGAgaW4gdGhlIFRJUEMgVURQIG1lZGlhIGJlYXJlciBsb2dpYywgZml4aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBsb2dpYywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[1] Phase: Succeeded StartedAt: 2026-07-15 05:43:04 +0000 UTC FinishedAt: 2026-07-15 05:43:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 05:43:04 +0000 UTC FinishedAt: 2026-07-15 05:43:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2] Phase: Succeeded StartedAt: 2026-07-15 05:43:04 +0000 UTC FinishedAt: 2026-07-15 10:06:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 05:43:04 +0000 UTC FinishedAt: 2026-07-15 10:06:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 05:43:04 +0000 UTC FinishedAt: 2026-07-15 05:43:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 05:43:04 +0000 UTC FinishedAt: 2026-07-15 05:43:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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-workflowfnnxs/series-workflowfnnxs-convert-artifact-4155636021/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 05:43:26 +0000 UTC FinishedAt: 2026-07-15 06:22:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 05:43:26 +0000 UTC FinishedAt: 2026-07-15 06:22:27 +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:*b77a3c11-8048-43cd-b1a1-82201f8fe920,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-workflowfnnxs/series-workflowfnnxs-convert-artifact-4155636021/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": "6fab8b93-4990-4029-84ed-3fe038bdd761", "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-workflowfnnxs/series-workflowfnnxs-build-action-1293923611/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 05:43:26 +0000 UTC FinishedAt: 2026-07-15 06:22:17 +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:*b77a3c11-8048-43cd-b1a1-82201f8fe920,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-workflowfnnxs/series-workflowfnnxs-convert-artifact-4155636021/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": "6fab8b93-4990-4029-84ed-3fe038bdd761", "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-workflowfnnxs/series-workflowfnnxs-build-action-1293923611/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:22:27 +0000 UTC FinishedAt: 2026-07-15 06:22:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:22:27 +0000 UTC FinishedAt: 2026-07-15 06:22:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:22:27 +0000 UTC FinishedAt: 2026-07-15 06:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:22:27 +0000 UTC FinishedAt: 2026-07-15 06:22:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-workflowfnnxs/series-workflowfnnxs-convert-artifact-3417069712/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:22:37 +0000 UTC FinishedAt: 2026-07-15 06:25:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:22:37 +0000 UTC FinishedAt: 2026-07-15 06:24:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6fab8b93-4990-4029-84ed-3fe038bdd761,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-workflowfnnxs/series-workflowfnnxs-build-action-1293923611/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-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:25:02 +0000 UTC FinishedAt: 2026-07-15 06:25:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:25:02 +0000 UTC FinishedAt: 2026-07-15 06:25:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:25:02 +0000 UTC FinishedAt: 2026-07-15 07:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:25:02 +0000 UTC FinishedAt: 2026-07-15 07:01:05 +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:*b77a3c11-8048-43cd-b1a1-82201f8fe920,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-workflowfnnxs/series-workflowfnnxs-convert-artifact-3417069712/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": "9a9e7eba-2d60-4c6e-b6ef-f23fd3610df7", "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-workflowfnnxs/series-workflowfnnxs-build-action-3727840524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 06:25:02 +0000 UTC FinishedAt: 2026-07-15 07:00:55 +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:*b77a3c11-8048-43cd-b1a1-82201f8fe920,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-workflowfnnxs/series-workflowfnnxs-convert-artifact-3417069712/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": "9a9e7eba-2d60-4c6e-b6ef-f23fd3610df7", "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-workflowfnnxs/series-workflowfnnxs-build-action-3727840524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:01:05 +0000 UTC FinishedAt: 2026-07-15 07:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:01:05 +0000 UTC FinishedAt: 2026-07-15 07:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:01:05 +0000 UTC FinishedAt: 2026-07-15 07:03:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:01:05 +0000 UTC FinishedAt: 2026-07-15 07:03:12 +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:*9a9e7eba-2d60-4c6e-b6ef-f23fd3610df7,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-workflowfnnxs/series-workflowfnnxs-build-action-3727840524/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-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 10:06:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 10:06:30 +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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"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:*6fab8b93-4990-4029-84ed-3fe038bdd761,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9a9e7eba-2d60-4c6e-b6ef-f23fd3610df7,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-workflowfnnxs/series-workflowfnnxs-build-action-1293923611/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-workflowfnnxs/series-workflowfnnxs-build-action-3727840524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 07:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 07:03:27 +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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"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-workflowfnnxs/series-workflowfnnxs-convert-artifact-3358566025/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 07:03:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 07:03:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:22 +0000 UTC FinishedAt: 2026-07-15 07:03:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:32 +0000 UTC FinishedAt: 2026-07-15 10:06:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfnnxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer","tipc_udp_disable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"eab11d07-fd6b-40cd-bbc2-52d01e3dd54e","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-07-15 07:03:32 +0000 UTC FinishedAt: 2026-07-15 10:06:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6fab8b93-4990-4029-84ed-3fe038bdd761,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9a9e7eba-2d60-4c6e-b6ef-f23fd3610df7,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-workflowfnnxs/series-workflowfnnxs-build-action-1293923611/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-workflowfnnxs/series-workflowfnnxs-build-action-3727840524/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-workflowfnnxs/series-workflowfnnxs-convert-artifact-3358566025/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,}