Name: series-workflows8hmv Phase: Succeeded StartedAt: 2026-06-19 15:21:33 +0000 UTC FinishedAt: 2026-06-19 17:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[0] Phase: Succeeded StartedAt: 2026-06-19 15:21:33 +0000 UTC FinishedAt: 2026-06-19 15:31:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[0].run-triage Phase: Succeeded StartedAt: 2026-06-19 15:21:33 +0000 UTC FinishedAt: 2026-06-19 15:31:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_DUALPI2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_DUALPI2" ], "series_id": "705198b8-e29d-4882-bfba-d0675edb871b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dualpi2_qdisc_enqueue" ], "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+CgkJCTx0ZD4yMDI2LzA2LzE5IDE1OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2R1YWxwaTJfcWRpc2NfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIG9mIHRoZSBgZHVhbHBpMmAgbmV0d29yayBzY2hlZHVsZXIgd2hlbiBoYW5kbGluZyBHU08gcGFja2V0cy4gSXQgbW9kaWZpZXMgdGhlIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGZ1bmN0aW9uIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgYW5kIHJlZHVjZSB0aGUgYmFja2xvZyB1c2luZyBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYWNjb3VudGluZyBpcyBjb3JyZWN0IGFuZCBkb2VzbiYjMzk7dCBsZWFkIHRvIHVuZGVyZmxvd3Mgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDE1OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTA5OTdiNzRmYzNlOGQxNGI5ZWUwZTg3M2YzOTQ2YzdiNGJkNGJlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDE5IDE1OjMwOjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbmluZGV4IGQ3YzMyNTRlZjgwMGY4Li41NDM0ZGY2Y2E4ZWZlNiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuQEAgLTQ2MSw3ICYjNDM7NDYxLDcgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGlmIChJU19FUlJfT1JfTlVMTChuc2tiKSlcbiBcdFx0XHRyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7XG4gXG4tXHRcdGNudCA9IDE7XG4mIzQzO1x0XHRjbnQgPSAwO1xuIFx0XHRieXRlX2xlbiA9IDA7XG4gXHRcdG9yaWdfbGVuID0gcWRpc2NfcGt0X2xlbihza2IpO1xuIFx0XHRza2JfbGlzdF93YWxrX3NhZmUobnNrYiwgbnNrYiwgbmV4dCkge1xuQEAgLTQ4OCwxNiAmIzQzOzQ4OCwxNSBAQCBzdGF0aWMgaW50IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdGJ5dGVfbGVuICYjNDM7PSBuc2tiLVx1MDAzZWxlbjtcbiBcdFx0XHR9XG4gXHRcdH1cbi1cdFx0aWYgKGNudCBcdTAwM2UgMSkge1xuJiM0MztcdFx0aWYgKGNudCBcdTAwM2UgMCkge1xuIFx0XHRcdC8qIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIG9yaWdpbmFsIHNrYiBzdGF0cyB0byBpdHNcbiBcdFx0XHQgKiBiYWNrbG9nLCBjb21wZW5zYXRlIHRoaXMgaWYgYW55IG5za2IgaXMgZW5xdWV1ZWQuXG4gXHRcdFx0ICovXG4tXHRcdFx0LS1jbnQ7XG4tXHRcdFx0Ynl0ZV9sZW4gLT0gb3JpZ19sZW47XG4mIzQzO1x0XHRcdHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAxIC0gY250LFxuJiM0MztcdFx0XHRcdFx0XHQgIG9yaWdfbGVuIC0gYnl0ZV9sZW4pO1xuIFx0XHR9XG4tXHRcdHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAtY250LCAtYnl0ZV9sZW4pO1xuIFx0XHRjb25zdW1lX3NrYihza2IpO1xuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0cmV0dXJuIGNudCBcdTAwM2UgMCA/IE5FVF9YTUlUX1NVQ0NFU1MgOiBlcnI7XG4gXHR9XG4gXHRyZXR1cm4gZHVhbHBpMl9lbnF1ZXVlX3NrYihza2IsIHNjaCwgdG9fZnJlZSk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxuaW5kZXggY2QxZjJlZThmMzU0ZDYuLmVkNmE5MDBiYjU2OGY0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb25cbkBAIC0yNTAsNSAmIzQzOzI1MCw0OSBAQFxuICAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiAgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcJiMzNDtcbiAgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0Ozg5MWZcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7VmVyaWZ5IER1YWxQSTIgR1NPIGJhY2tsb2cgYWNjb3VudGluZyB3aXRoIFFGUSBwYXJlbnRcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cWRpc2NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2R1YWxwaTJcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3FmcVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7Z3NvXCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtwbHVnaW5zXCYjMzQ7OiB7XG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3JlcXVpcmVzXCYjMzQ7OiBcJiMzNDtuc1BsdWdpblwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdXAgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGFkZHIgYWRkIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHJvb3QgaGFuZGxlIDE6IHFmcVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIGNsYXNzIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBjbGFzc2lkIDE6MSBxZnEgd2VpZ2h0IDEgbWF4cGt0IDQwOTZcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBwYXJlbnQgMToxIGhhbmRsZSAyOiBkdWFscGkyXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBtYXRjaGFsbCBjbGFzc2lkIDE6MVwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDsuL3RkY19nc28ucHkgMTAuMTAuMTAuMTAgMTAuMTAuMTAuMSA5MDAwIDEyMDAgMjQwMFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyAtaiAtcyBxZGlzYyBscyBkZXYgJERVTU1ZXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoSlNPTlwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICB7XG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtraW5kXCYjMzQ7OiBcJiMzNDtxZnFcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtoYW5kbGVcJiMzNDs6IFwmIzM0OzE6XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7cGFja2V0c1wmIzM0OzogMixcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O2JhY2tsb2dcJiMzNDs6IDAsXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtxbGVuXCYjMzQ7OiAwXG4mIzQzOyAgICAgICAgICAgIH0sXG4mIzQzOyAgICAgICAgICAgIHtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O2tpbmRcJiMzNDs6IFwmIzM0O2R1YWxwaTJcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtoYW5kbGVcJiMzNDs6IFwmIzM0OzI6XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7cGFja2V0c1wmIzM0OzogMixcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O2JhY2tsb2dcJiMzNDs6IDAsXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtxbGVuXCYjMzQ7OiAwXG4mIzQzOyAgICAgICAgICAgIH1cbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSByb290XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskSVAgYWRkciBkZWwgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuICAgICB9XG4gXVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjX2dzby5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjX2dzby5weVxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iNjY1MjhlYTRiNjgwYVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XG5AQCAtMCwwICYjNDM7MSw0MyBAQFxuJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzO1wmIzM0O1wmIzM0O1wmIzM0O1xuJiM0Mzt0ZGNfZ3NvLnB5IC0gc2VuZCBhIFVEUCBHU08gZGF0YWdyYW1cbiYjNDM7XG4mIzQzO0NvcHlyaWdodCAoQykgMjAyNiBYaW5ncXVhbiBMaXUgXHUwMDNjYjFuQGIxbi5pb1x1MDAzZVxuJiM0MztcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzO2ltcG9ydCBhcmdwYXJzZVxuJiM0MztpbXBvcnQgc29ja2V0XG4mIzQzO2ltcG9ydCBzdHJ1Y3RcbiYjNDM7aW1wb3J0IHN5c1xuJiM0MztcbiYjNDM7VURQX01BWF9TRUdNRU5UUyA9IDEgXHUwMDNjXHUwMDNjIDdcbiYjNDM7XG4mIzQzO1xuJiM0MztwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1cJiMzNDtVRFAgR1NPIGRhdGFncmFtIHNlbmRlclwmIzM0OylcbiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudChcJiMzNDtzcmNcJiMzNDssIGhlbHA9XCYjMzQ7c291cmNlIElQdjQgYWRkcmVzc1wmIzM0OylcbiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudChcJiMzNDtkc3RcJiMzNDssIGhlbHA9XCYjMzQ7ZGVzdGluYXRpb24gSVB2NCBhZGRyZXNzXCYjMzQ7KVxuJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KFwmIzM0O3BvcnRcJiMzNDssIHR5cGU9aW50LCBoZWxwPVwmIzM0O2Rlc3RpbmF0aW9uIFVEUCBwb3J0XCYjMzQ7KVxuJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KFwmIzM0O2dzb19zaXplXCYjMzQ7LCB0eXBlPWludCwgaGVscD1cJiMzNDtVRFAgR1NPIHNlZ21lbnQgcGF5bG9hZCBzaXplXCYjMzQ7KVxuJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KFwmIzM0O3BheWxvYWRfbGVuXCYjMzQ7LCB0eXBlPWludCwgaGVscD1cJiMzNDt0b3RhbCBVRFAgcGF5bG9hZCBsZW5ndGhcJiMzNDspXG4mIzQzO2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4mIzQzO1xuJiM0MztpZiBhcmdzLmdzb19zaXplIFx1MDAzYz0gMCBvciBhcmdzLmdzb19zaXplIFx1MDAzZSAweEZGRkY6XG4mIzQzOyAgICBwYXJzZXIuZXJyb3IoXCYjMzQ7Z3NvX3NpemUgbXVzdCBmaXQgaW4gYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcJiMzNDspXG4mIzQzO2lmIGFyZ3MucGF5bG9hZF9sZW4gXHUwMDNjPSBhcmdzLmdzb19zaXplOlxuJiM0MzsgICAgcGFyc2VyLmVycm9yKFwmIzM0O3BheWxvYWRfbGVuIG11c3QgYmUgbGFyZ2VyIHRoYW4gZ3NvX3NpemVcJiMzNDspXG4mIzQzO2lmIGFyZ3MucGF5bG9hZF9sZW4gXHUwMDNlIGFyZ3MuZ3NvX3NpemUgKiBVRFBfTUFYX1NFR01FTlRTOlxuJiM0MzsgICAgcGFyc2VyLmVycm9yKFwmIzM0O3BheWxvYWRfbGVuIGV4Y2VlZHMgVURQX01BWF9TRUdNRU5UU1wmIzM0OylcbiYjNDM7XG4mIzQzO1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgXCYjMzQ7U09MX1VEUFwmIzM0Oywgc29ja2V0LklQUFJPVE9fVURQKVxuJiM0MztVRFBfU0VHTUVOVCA9IGdldGF0dHIoc29ja2V0LCBcJiMzNDtVRFBfU0VHTUVOVFwmIzM0OywgMTAzKVxuJiM0MztcbiYjNDM7c29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKVxuJiM0Mztzb2NrLmJpbmQoKGFyZ3Muc3JjLCAwKSlcbiYjNDM7XG4mIzQzO3BheWxvYWQgPSBiXCYjMzQ7YlwmIzM0OyAqIGFyZ3MucGF5bG9hZF9sZW5cbiYjNDM7Y21zZyA9IFsoU09MX1VEUCwgVURQX1NFR01FTlQsIHN0cnVjdC5wYWNrKFwmIzM0Oz1IXCYjMzQ7LCBhcmdzLmdzb19zaXplKSldXG4mIzQzO1xuJiM0MztzZW50ID0gc29jay5zZW5kbXNnKFtwYXlsb2FkXSwgY21zZywgMCwgKGFyZ3MuZHN0LCBhcmdzLnBvcnQpKVxuJiM0MztzeXMuZXhpdChzZW50ICE9IGxlbihwYXlsb2FkKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkdWFscGkyX3FkaXNjX2VucXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGJhY2tsb2cgYWNjb3VudGluZyBvZiB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaGFuZGxpbmcgR1NPIHBhY2tldHMuIEl0IG1vZGlmaWVzIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGFuZCByZWR1Y2UgdGhlIGJhY2tsb2cgdXNpbmcgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgZG9lc24mIzM5O3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTA5OTdiNzRmYzNlOGQxNGI5ZWUwZTg3M2YzOTQ2YzdiNGJkNGJlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDE5IDE1OjMwOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwppbmRleCBkN2MzMjU0ZWY4MDBmOC4uNTQzNGRmNmNhOGVmZTYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCkBAIC00NjEsNyAmIzQzOzQ2MSw3IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogCQlpZiAoSVNfRVJSX09SX05VTEwobnNrYikpCiAJCQlyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7CiAKLQkJY250ID0gMTsKJiM0MzsJCWNudCA9IDA7CiAJCWJ5dGVfbGVuID0gMDsKIAkJb3JpZ19sZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7CiAJCXNrYl9saXN0X3dhbGtfc2FmZShuc2tiLCBuc2tiLCBuZXh0KSB7CkBAIC00ODgsMTYgJiM0Mzs0ODgsMTUgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsCiAJCQkJYnl0ZV9sZW4gJiM0Mzs9IG5za2ItJmd0O2xlbjsKIAkJCX0KIAkJfQotCQlpZiAoY250ICZndDsgMSkgewomIzQzOwkJaWYgKGNudCAmZ3Q7IDApIHsKIAkJCS8qIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIG9yaWdpbmFsIHNrYiBzdGF0cyB0byBpdHMKIAkJCSAqIGJhY2tsb2csIGNvbXBlbnNhdGUgdGhpcyBpZiBhbnkgbnNrYiBpcyBlbnF1ZXVlZC4KIAkJCSAqLwotCQkJLS1jbnQ7Ci0JCQlieXRlX2xlbiAtPSBvcmlnX2xlbjsKJiM0MzsJCQlxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKHNjaCwgMSAtIGNudCwKJiM0MzsJCQkJCQkgIG9yaWdfbGVuIC0gYnl0ZV9sZW4pOwogCQl9Ci0JCXFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAtY250LCAtYnl0ZV9sZW4pOwogCQljb25zdW1lX3NrYihza2IpOwotCQlyZXR1cm4gZXJyOwomIzQzOwkJcmV0dXJuIGNudCAmZ3Q7IDAgPyBORVRfWE1JVF9TVUNDRVNTIDogZXJyOwogCX0KIAlyZXR1cm4gZHVhbHBpMl9lbnF1ZXVlX3NrYihza2IsIHNjaCwgdG9fZnJlZSk7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb24KaW5kZXggY2QxZjJlZThmMzU0ZDYuLmVkNmE5MDBiYjU2OGY0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uCkBAIC0yNTAsNSAmIzQzOzI1MCw0OSBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290JiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ODkxZiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IER1YWxQSTIgR1NPIGJhY2tsb2cgYWNjb3VudGluZyB3aXRoIFFGUSBwYXJlbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2R1YWxwaTImIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3FmcSYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Z3NvJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgbGluayBzZXQgZGV2ICREVU1NWSB1cCB8fCB0cnVlJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgYWRkciBhZGQgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgcm9vdCBoYW5kbGUgMTogcWZxJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgY2xhc3MgYWRkIGRldiAkRFVNTVkgcGFyZW50IDE6IGNsYXNzaWQgMToxIHFmcSB3ZWlnaHQgMSBtYXhwa3QgNDA5NiYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOjEgaGFuZGxlIDI6IGR1YWxwaTImIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkRFVNTVkgcGFyZW50IDE6IG1hdGNoYWxsIGNsYXNzaWQgMToxJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0Oy4vdGRjX2dzby5weSAxMC4xMC4xMC4xMCAxMC4xMC4xMC4xIDkwMDAgMTIwMCAyNDAwJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgLWogLXMgcWRpc2MgbHMgZGV2ICREVU1NWSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaEpTT04mIzM0OzogWwomIzQzOyAgICAgICAgICAgIHsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtraW5kJiMzNDs6ICYjMzQ7cWZxJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7aGFuZGxlJiMzNDs6ICYjMzQ7MTomIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtwYWNrZXRzJiMzNDs6IDIsCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7YmFja2xvZyYjMzQ7OiAwLAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3FsZW4mIzM0OzogMAomIzQzOyAgICAgICAgICAgIH0sCiYjNDM7ICAgICAgICAgICAgewomIzQzOyAgICAgICAgICAgICAgICAmIzM0O2tpbmQmIzM0OzogJiMzNDtkdWFscGkyJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7aGFuZGxlJiMzNDs6ICYjMzQ7MjomIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtwYWNrZXRzJiMzNDs6IDIsCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7YmFja2xvZyYjMzQ7OiAwLAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3FsZW4mIzM0OzogMAomIzQzOyAgICAgICAgICAgIH0KJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSByb290JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgYWRkciBkZWwgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlJiMzNDsKJiM0MzsgICAgICAgIF0KICAgICB9CiBdCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkY19nc28ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkY19nc28ucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI2NjUyOGVhNGI2ODBhCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5CkBAIC0wLDAgJiM0MzsxLDQzIEBACiYjNDM7IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0MzsmIzM0OyYjMzQ7JiMzNDsKJiM0Mzt0ZGNfZ3NvLnB5IC0gc2VuZCBhIFVEUCBHU08gZGF0YWdyYW0KJiM0MzsKJiM0MztDb3B5cmlnaHQgKEMpIDIwMjYgWGluZ3F1YW4gTGl1ICZsdDtiMW5AYjFuLmlvJmd0OwomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzO2ltcG9ydCBhcmdwYXJzZQomIzQzO2ltcG9ydCBzb2NrZXQKJiM0MztpbXBvcnQgc3RydWN0CiYjNDM7aW1wb3J0IHN5cwomIzQzOwomIzQzO1VEUF9NQVhfU0VHTUVOVFMgPSAxICZsdDsmbHQ7IDcKJiM0MzsKJiM0MzsKJiM0MztwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0mIzM0O1VEUCBHU08gZGF0YWdyYW0gc2VuZGVyJiMzNDspCiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudCgmIzM0O3NyYyYjMzQ7LCBoZWxwPSYjMzQ7c291cmNlIElQdjQgYWRkcmVzcyYjMzQ7KQomIzQzO3BhcnNlci5hZGRfYXJndW1lbnQoJiMzNDtkc3QmIzM0OywgaGVscD0mIzM0O2Rlc3RpbmF0aW9uIElQdjQgYWRkcmVzcyYjMzQ7KQomIzQzO3BhcnNlci5hZGRfYXJndW1lbnQoJiMzNDtwb3J0JiMzNDssIHR5cGU9aW50LCBoZWxwPSYjMzQ7ZGVzdGluYXRpb24gVURQIHBvcnQmIzM0OykKJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzQ7Z3NvX3NpemUmIzM0OywgdHlwZT1pbnQsIGhlbHA9JiMzNDtVRFAgR1NPIHNlZ21lbnQgcGF5bG9hZCBzaXplJiMzNDspCiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudCgmIzM0O3BheWxvYWRfbGVuJiMzNDssIHR5cGU9aW50LCBoZWxwPSYjMzQ7dG90YWwgVURQIHBheWxvYWQgbGVuZ3RoJiMzNDspCiYjNDM7YXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKJiM0MzsKJiM0MztpZiBhcmdzLmdzb19zaXplICZsdDs9IDAgb3IgYXJncy5nc29fc2l6ZSAmZ3Q7IDB4RkZGRjoKJiM0MzsgICAgcGFyc2VyLmVycm9yKCYjMzQ7Z3NvX3NpemUgbXVzdCBmaXQgaW4gYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXImIzM0OykKJiM0MztpZiBhcmdzLnBheWxvYWRfbGVuICZsdDs9IGFyZ3MuZ3NvX3NpemU6CiYjNDM7ICAgIHBhcnNlci5lcnJvcigmIzM0O3BheWxvYWRfbGVuIG11c3QgYmUgbGFyZ2VyIHRoYW4gZ3NvX3NpemUmIzM0OykKJiM0MztpZiBhcmdzLnBheWxvYWRfbGVuICZndDsgYXJncy5nc29fc2l6ZSAqIFVEUF9NQVhfU0VHTUVOVFM6CiYjNDM7ICAgIHBhcnNlci5lcnJvcigmIzM0O3BheWxvYWRfbGVuIGV4Y2VlZHMgVURQX01BWF9TRUdNRU5UUyYjMzQ7KQomIzQzOwomIzQzO1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgJiMzNDtTT0xfVURQJiMzNDssIHNvY2tldC5JUFBST1RPX1VEUCkKJiM0MztVRFBfU0VHTUVOVCA9IGdldGF0dHIoc29ja2V0LCAmIzM0O1VEUF9TRUdNRU5UJiMzNDssIDEwMykKJiM0MzsKJiM0Mztzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pCiYjNDM7c29jay5iaW5kKChhcmdzLnNyYywgMCkpCiYjNDM7CiYjNDM7cGF5bG9hZCA9IGImIzM0O2ImIzM0OyAqIGFyZ3MucGF5bG9hZF9sZW4KJiM0MztjbXNnID0gWyhTT0xfVURQLCBVRFBfU0VHTUVOVCwgc3RydWN0LnBhY2soJiMzNDs9SCYjMzQ7LCBhcmdzLmdzb19zaXplKSldCiYjNDM7CiYjNDM7c2VudCA9IHNvY2suc2VuZG1zZyhbcGF5bG9hZF0sIGNtc2csIDAsIChhcmdzLmRzdCwgYXJncy5wb3J0KSkKJiM0MztzeXMuZXhpdChzZW50ICE9IGxlbihwYXlsb2FkKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMTU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgYHNjaF9kdWFscGkyYCBCYWNrbG9nIEFjY291bnRpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX2R1YWxwaTIuY2AgYW5kIGFkZGluZyBhIHRlc3QgZm9yIGl0IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2AuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYSBidWcgZml4IGFuZCBhIGNvcnJlc3BvbmRpbmcgdGVzdCBjYXNlLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIGBkdWFscGkyX3FkaXNjX2VucXVldWVgLCBhbmQgdGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGJhY2tsb2cgYWNjb3VudGluZyBmb3IgR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCAoR1NPKSBwYWNrZXRzLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgR1NPIG9mdGVuIGhhcyBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCB0cmFmZmljIGNvbnRyb2wuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkaWZmLiAgQWgsIGl0IHNlZW1zIHdlIGhhdmUgYSByZWR1Y3Rpb24gaW4gYGNudGAgYW5kIGEgY29ycmVzcG9uZGluZyBhZGp1c3RtZW50IHRvIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBjb3JyZWN0aW5nIGFuIGlzc3VlIHdoZXJlIEdTTyBwYWNrZXRzIHdlcmVuJiMzOTt0IGJlaW5nIGFjY291bnRlZCBmb3IgY29ycmVjdGx5IHdoZW4gdGhlaXIgaW50ZXJuYWwgc2VnbWVudHMgYXJlIHByb2Nlc3NlZC4gV2UmIzM5O3JlIG5vdyBjb3JyZWN0bHkgZGVjcmVtZW50aW5nIHRoZSBiYWNrbG9nLiBQcmV2aW91c2x5LCB0aGUgb3JpZ2luYWwgYHNrYmAgc3RhdGlzdGljcyB3ZXJlIGJlaW5nIGluY29ycmVjdGx5IGFkanVzdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNvcnJlY3Rpb24sIHRoZSBjb21tZW50IG1ha2VzIHRoaXMgYWJ1bmRhbnRseSBjbGVhci4KClRoZSBrZXkgY2hhbmdlIGlzIGFyb3VuZCBsaW5lcyA0NjEgdG8gNDg4LiBJIGNhbiBzZWUgdGhlIGFkanVzdG1lbnQgdG8gYmFja2xvZyByZWR1Y3Rpb24gYmFzZWQgb24gdGhlIGxlbmd0aCBvZiBlYWNoIHNlZ21lbnRlZCBwYWNrZXQgYW5kIHRoZSBvcmlnaW5hbCBwYWNrZXQuIFNvIGl0JiMzOTtzIGFib3V0IGNvcnJlY3RpbmcgaG93IHRoZSBiYWNrbG9nIGlzIGFkanVzdGVkIGZvciB0aGUgb3JpZ2luYWwgcGFja2V0IGFmdGVyIGl0cyBHU08gc2VnbWVudHMgaGF2ZSBiZWVuIGhhbmRsZWQuICBJdCBhcHBlYXJzIHRvIGZpeCBhbiBhY2NvdW50aW5nIGVycm9yIGZvciBHU08gcGFja2V0cywgcHJldmVudGluZyBpbmZsYXRlZCBvciBkZWZsYXRlZCBiYWNrbG9nIHZhbHVlcyBpbiB0aGUgYHNjaF9kdWFscGkyYCBxZGlzYy4gVGhlIGFkZGl0aW9uIG9mIHRoZSBjb25kaXRpb25hbCBgY250ICZndDsgMCA/IE5FVF9YTUlUX1NVQ0NFU1MgOiBlcnJgIG1ha2VzIHNlbnNlIGluIHRoaXMgY29udGV4dC4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIsIEkmIzM5O2QgbGlrZSB0byBsb29rIGF0IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBgc2NoX2R1YWxwaTJgIFFkaXNjLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciB0aGVtIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdXNpbmcgYGdyZXBwZXJgIGp1c3QgdG8gZ2V0IGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhpcyBpcyBlbmFibGVkLCBhbmQgYW55IHBvc3NpYmxlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkdWFscGkyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00MTg9Y29uZmlnIE5FVF9TQ0hfRFVBTFBJMlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQyNS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxubmV0L3NjaGVkL0tjb25maWc6NDI2Olx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHVhbHBpMi5cbm5ldC9zY2hlZC9LY29uZmlnLTQyNy1cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVx0JiM0Mzs9IGJwZl9xZGlzYy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRFVBTFBJMilcdCYjNDM7PSBzY2hfZHVhbHBpMi5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjctXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOS0gKlxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTA6ICogRHVhbFBJIEltcHJvdmVkIHdpdGggYSBTcXVhcmUgKGR1YWxwaTIpOlxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEtICogLSBTdXBwb3J0cyBjb25nZXN0aW9uIGNvbnRyb2xzIHRoYXQgY29tcGx5IHdpdGggdGhlIFByYWd1ZSByZXF1aXJlbWVudHNcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00Mi0gKiBpLmUuLCB0d2ljZSB0aGUgbWF4aW1hbCBzbmRfY3duZC5cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzOiAqIE1BWF9QUk9CIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBSTkcgaW4gZHVhbHBpMl9yb2xsKCkuXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NC0gKi9cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01MC0vKiBTY2FsZWQgdmFsdWVzIG9mIGFscGhhL2JldGEgbXVzdCBmaXQgaW4gMzJiIHRvIGF2b2lkIG92ZXJmbG93IGluIGxhdGVyXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1MTogKiBjb21wdXRhdGlvbnMuIENvbnNlcXVlbnRseSAoc2VlIGFuZCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoKSksIHRoZWlyXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01Mi0gKiBuZXRsaW5rLXByb3ZpZGVkIHZhbHVlcyBjYW4gdXNlIGF0IG1vc3QgMzFiLCBpLmUuIGJlIGF0IG1vc3QgKDJeMjMpLTFcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjcwOnN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzEtXHRzdHJ1Y3QgUWRpc2MgKmxfcXVldWU7XHQvKiBUaGUgTDRTIExvdyBsYXRlbmN5IHF1ZXVlIChMLXF1ZXVlKSAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjpzdHJ1Y3QgZHVhbHBpMl9za2JfY2Ige1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIzLVx0dTY0IHRzO1x0XHRcdC8qIFRpbWVzdGFtcCBhdCBlbnF1ZXVlICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTI4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTI5OmVudW0gZHVhbHBpMl9jbGFzc2lmaWNhdGlvbl9yZXN1bHRzIHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEzMC1cdERVQUxQSTJfQ19DTEFTU0lDXHQ9IDAsXHQvKiBDLXF1ZXVlICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTM1LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTM2OnN0YXRpYyBzdHJ1Y3QgZHVhbHBpMl9za2JfY2IgKmR1YWxwaTJfc2tiX2NiKHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMzcte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTM4Olx0cWRpc2NfY2JfcHJpdmF0ZV92YWxpZGF0ZShza2IsIHNpemVvZihzdHJ1Y3QgZHVhbHBpMl9za2JfY2IpKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEzOTpcdHJldHVybiAoc3RydWN0IGR1YWxwaTJfc2tiX2NiICopcWRpc2Nfc2tiX2NiKHNrYiktXHUwMDNlZGF0YTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE0MC19XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNDI6c3RhdGljIHU2NCBkdWFscGkyX3Nvam91cm5fdGltZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgcmVmZXJlbmNlKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQzLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE0NDpcdHJldHVybiByZWZlcmVuY2UgLSBkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZXRzO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQ1LX1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xNDc9c3RhdGljIHU2NCBoZWFkX2VucXVldWVfdGltZShzdHJ1Y3QgUWRpc2MgKnEpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTUwLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTUxOlx0cmV0dXJuIHNrYiA/IGR1YWxwaTJfc2tiX2NiKHNrYiktXHUwMDNldHMgOiAwO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTUyLX1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE1My1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE1NDpzdGF0aWMgdTMyIGR1YWxwaTJfc2NhbGVfYWxwaGFfYmV0YSh1MzIgcGFyYW0pXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTUte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE2MS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE2MjpzdGF0aWMgdTMyIGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKHUzMiBwYXJhbSlcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE2My17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTY5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTcwOnN0YXRpYyBrdGltZV90IG5leHRfcGkyX3RpbWVvdXQoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE3MS17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTc1PXN0YXRpYyBib29sIHNrYl9pc19sNHMoc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE3Ni17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNzc6XHRyZXR1cm4gZHVhbHBpMl9za2JfY2Ioc2tiKS1cdTAwM2VjbGFzc2lmaWVkID09IERVQUxQSTJfQ19MNFM7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNzgtfVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTE4MD1zdGF0aWMgYm9vbCBza2JfaW5fbF9xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTgxLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE4MjpcdHJldHVybiBkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWNsYXNzaWZpZWQgIT0gRFVBTFBJMl9DX0NMQVNTSUM7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xODMtfVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTg0LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTg1OnN0YXRpYyBib29sIHNrYl9hcHBseV9zdGVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xODYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE4OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE5MDpzdGF0aWMgYm9vbCBkdWFscGkyX21hcmsoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE5MS17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTk4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTk5OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIwNy0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIwODpzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyMDk6XHRcdFx0XHRcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3Yylcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIxMC17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE0LVx0XHQoKGludClxLVx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2wpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjE1Olx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTYtfVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE3LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjE4OnN0YXRpYyBib29sIGR1YWxwaTJfcm9sbCh1MzIgcHJvYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIxOS17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjI5LSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjMwOnN0YXRpYyBib29sIGR1YWxwaTJfY2xhc3NpY19tYXJraW5nKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzEtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHByb2IsXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjMzLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNDpcdGlmIChkdWFscGkyX3JvbGwocHJvYikgXHUwMDI2XHUwMDI2IGR1YWxwaTJfcm9sbChwcm9iKSkge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjM1Olx0XHRpZiAob3ZlcmxvYWQgfHwgZHVhbHBpMl9za2JfY2Ioc2tiKS1cdTAwM2VlY3QgPT0gSU5FVF9FQ05fTk9UX0VDVClcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIzNi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNzpcdFx0ZHVhbHBpMl9tYXJrKHEsIHNrYik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzgtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjUyLSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjUzOnN0YXRpYyBib29sIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjU0LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI2MC1cdFx0aWYgKCFxLVx1MDAzZWRyb3Bfb3ZlcmxvYWQgfHxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI2MTpcdFx0ICAgICEoZHVhbHBpMl9yb2xsKHByb2IpIFx1MDAyNlx1MDAyNiBkdWFscGkyX3JvbGwocHJvYikpKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjYyLVx0XHRcdGdvdG8gbWFyaztcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNjYtXHQvKiBXZSBjYW4gc2FmZWx5IGN1dCB0aGUgdXBwZXIgMzJiIGFzIG92ZXJsb2FkPT1mYWxzZSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjY3Olx0aWYgKGR1YWxwaTJfcm9sbChsb2NhbF9sX3Byb2IpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNjgtXHRcdC8qIE5vbi1FQ1QgcGFja2V0cyBjb3VsZCBoYXZlIGNsYXNzaWZpZWQgYXMgTDRTIGJ5IGZpbHRlcnMuICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyNjk6XHRcdGlmIChkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWVjdCA9PSBJTkVUX0VDTl9OT1RfRUNUKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjcwLVx0XHRcdHJldHVybiB0cnVlO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjcxLW1hcms6XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyNzI6XHRcdGR1YWxwaTJfbWFyayhxLCBza2IpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjczLVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI4MS0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4MjpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yODMtXHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjk1LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mjk2Olx0c3dpdGNoIChkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWNsYXNzaWZpZWQpIHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI5Ny1cdGNhc2UgRFVBTFBJMl9DX0NMQVNTSUM6XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyOTg6XHRcdHJldHVybiBkdWFscGkyX2NsYXNzaWNfbWFya2luZyhxLCBza2IsIHByb2IsIG92ZXJsb2FkKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI5OS1cdGNhc2UgRFVBTFBJMl9DX0w0Uzpcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjMwMDpcdFx0cmV0dXJuIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhxLCBza2IsIGxvY2FsX2xfcHJvYiwgcHJvYixcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTMwMS1cdFx0XHRcdFx0XHRvdmVybG9hZCk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzA2LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzA3OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVhZF9lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTMwOC17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozMDk6XHRzdHJ1Y3QgZHVhbHBpMl9za2JfY2IgKmNiID0gZHVhbHBpMl9za2JfY2Ioc2tiKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTMxMC1cdGludCB3bGVuID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzQwLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQxOnN0YXRpYyBpbnQgZHVhbHBpMl9za2JfY2xhc3NpZnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM0Mi1cdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDMte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQ0Olx0c3RydWN0IGR1YWxwaTJfc2tiX2NiICpjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDUtXHRzdHJ1Y3QgdGNmX3Jlc3VsdCByZXM7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzQ4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQ5Olx0ZHVhbHBpMl9yZWFkX2VjdChza2IpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzUwLVx0aWYgKGNiLVx1MDAzZWVjdCBcdTAwMjYgcS1cdTAwM2VlY25fbWFzaykge1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4NC1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjM4NTpzdGF0aWMgaW50IGR1YWxwaTJfZW5xdWV1ZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zODYtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4Ny17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozODg6XHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mzg5Olx0c3RydWN0IGR1YWxwaTJfc2tiX2NiICpjYjtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM5MC1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDMtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0MDQ6XHRjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDUtXHRjYi1cdTAwM2V0cyA9IGt0aW1lX2dldF9ucygpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQxNC1cdFx0LyogQXBwbHkgc3RlcCB0aHJlc2ggaWYgc2tiIGlzIEw0UyBcdTAwMjZcdTAwMjYgTC1xdWV1ZSBsZW4gXHUwMDNlPSBtaW5fcWxlbiAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDE1Olx0XHRkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWFwcGx5X3N0ZXAgPSBza2JfYXBwbHlfc3RlcChza2IsIHEpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDE2LVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQzMC1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzMTovKiBCeSBkZWZhdWx0LCBkdWFscGkyIHdpbGwgc3BsaXQgR1NPIHNrYnMgaW50byBpbmRlcGVuZGVudCBza2JzIGFuZCBlbnF1ZXVlXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MzItICogZWFjaCBvZiB0aG9zZSBpbmRpdmlkdWFsbHkuIFRoaXMgeWllbGRzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHMsIGF0IHRoZVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQzOC0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzOTpzdGF0aWMgaW50IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQ0MC1cdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDEte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDQyOlx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQ0My1cdGludCBlcnI7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0NDU6XHRlcnIgPSBkdWFscGkyX3NrYl9jbGFzc2lmeShxLCBza2IpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQ2LVx0aWYgKGVyciAhPSBORVRfWE1JVF9TVUNDRVNTKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDcyLVx0XHRcdCAqICgyKSBDb3B5IGNsYXNzaWZpZWQgYW5kIGVjdCB2YWx1ZXMgb2YgYW4gc2tiXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0NzM6XHRcdFx0ICogKDMpIEVucXVldWUgZnJhZ21lbnQgXHUwMDI2IHNldCB0cyBpbiBkdWFscGkyX2VucXVldWVfc2tiXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NzQtXHRcdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDc2LVx0XHRcdHFkaXNjX3NrYl9jYihuc2tiKS1cdTAwM2Vwa3Rfc2VncyA9IDE7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzc6XHRcdFx0ZHVhbHBpMl9za2JfY2IobnNrYiktXHUwMDNlY2xhc3NpZmllZCA9XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzg6XHRcdFx0XHRkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWNsYXNzaWZpZWQ7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzk6XHRcdFx0ZHVhbHBpMl9za2JfY2IobnNrYiktXHUwMDNlZWN0ID0gZHVhbHBpMl9za2JfY2Ioc2tiKS1cdTAwM2VlY3Q7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0ODA6XHRcdFx0ZXJyID0gZHVhbHBpMl9lbnF1ZXVlX3NrYihuc2tiLCBzY2gsIHRvX2ZyZWUpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDgxLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUwMC1cdH1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjUwMTpcdHJldHVybiBkdWFscGkyX2VucXVldWVfc2tiKHNrYiwgc2NoLCB0b19mcmVlKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUwMi19XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NTE0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZGVxdWV1ZV9wYWNrZXQoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1MTU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTE2LVx0XHRcdFx0ICAgICAgaW50ICpjcmVkaXRfY2hhbmdlLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUzOC1cdH0gZWxzZSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1Mzk6XHRcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTQwLVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NDg6c3RhdGljIGludCBkb19zdGVwX2FxbShzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTQ5LVx0XHQgICAgICAgdTY0IG5vdylcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NTUtXHRlbHNlXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NTY6XHRcdHFkZWxheSA9IGR1YWxwaTJfc29qb3Vybl90aW1lKHNrYiwgbm93KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU1Ny1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1ODpcdGlmIChkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWFwcGx5X3N0ZXAgXHUwMDI2XHUwMDI2IHFkZWxheSBcdTAwM2UgcS1cdTAwM2VzdGVwX3RocmVzaCkge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTU5Olx0XHRpZiAoIWR1YWxwaTJfc2tiX2NiKHNrYiktXHUwMDNlZWN0KSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NjAtXHRcdFx0LyogRHJvcCB0aGlzIG5vbi1FQ1QgcGFja2V0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTYzLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTY0Olx0XHRpZiAoZHVhbHBpMl9tYXJrKHEsIHNrYikpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NjUtXHRcdFx0V1JJVEVfT05DRShxLVx1MDAzZXN0ZXBfbWFya3MsIHEtXHUwMDNlc3RlcF9tYXJrcyAmIzQzOyAxKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NzAtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NzE6c3RhdGljIHZvaWQgZHJvcF9hbmRfcmV0cnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU3Mi1cdFx0XHQgICBzdHJ1Y3QgUWRpc2MgKnNjaCwgZW51bSBxZGlzY19kcm9wX3JlYXNvbiByZWFzb24pXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTc5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTgwOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqX19kdWFscGkyX3FkaXNjX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01ODEte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTgyOlx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU4My1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjA5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjEwOnN0YXRpYyB2b2lkIGR1YWxwaTJfZGVxdWV1ZV9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjExLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjYxMjpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MTMtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjIxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjIyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHVhbHBpMl9xZGlzY19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjIzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MjUtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2MjY6XHRza2IgPSBfX2R1YWxwaTJfcWRpc2NfZGVxdWV1ZShzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjI3LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjI4Olx0ZHVhbHBpMl9kZXF1ZXVlX2Ryb3Aoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYyOS1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzItXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2MzM6c3RhdGljIHN0cnVjdCBza19idWZmICpkdWFscGkyX3BlZWsoc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYzNy1cdGlmICghc2tiKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2Mzg6XHRcdHNrYiA9IF9fZHVhbHBpMl9xZGlzY19kZXF1ZXVlKHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzktXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjQ2LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjQ3Olx0XHRkdWFscGkyX2RlcXVldWVfZHJvcChzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjQ4LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTY1Mz1zdGF0aWMgczY0IF9fc2NhbGVfZGVsdGEodTY0IGRpZmYpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjU4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjU5OnN0YXRpYyB2b2lkIGdldF9xdWV1ZV9kZWxheXMoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTY0ICpxZGVsYXlfYyxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTY2MC1cdFx0XHQgICAgIHU2NCAqcWRlbGF5X2wpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NjcyPXN0YXRpYyB1MzIgY2FsY3VsYXRlX3Byb2JhYmlsaXR5KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjczLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjY3NDpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NzUtXHR1MzIgbmV3X3Byb2I7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NzMzPXN0YXRpYyB1MzIgY29udmVydF9uc190b191c2VjKHU2NCBucylcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NDI6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGR1YWxwaTJfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzQzLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc0NDpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSB0aW1lcl9jb250YWluZXJfb2YocSwgdGltZXIsIHBpMl90aW1lcik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDUtXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlc2NoO1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc1OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc2MDpzdGF0aWMgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBkdWFscGkyX2FscGhhX2JldGFfcmFuZ2UgPSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NjEtXHQubWluID0gMSxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NjQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2Ni1cdFtUQ0FfRFVBTFBJMl9MSU1JVF1cdFx0PSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NzAtXHRbVENBX0RVQUxQSTJfQUxQSEFdXHRcdD1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc3MTpcdFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VMzIsIFx1MDAyNmR1YWxwaTJfYWxwaGFfYmV0YV9yYW5nZSksXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NzItXHRbVENBX0RVQUxQSTJfQkVUQV1cdFx0PVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzczOlx0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1UzMiwgXHUwMDI2ZHVhbHBpMl9hbHBoYV9iZXRhX3JhbmdlKSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc3NC1cdFtUQ0FfRFVBTFBJMl9TVEVQX1RIUkVTSF9QS1RTXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc5MC1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc5MTpzdGF0aWMgaW50IGR1YWxwaTJfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTItXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk0LVx0c3RydWN0IG5sYXR0ciAqdGJbVENBX0RVQUxQSTJfTUFYICYjNDM7IDFdO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Nzk1Olx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc5Ni1cdGludCBvbGRfYmFja2xvZztcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MDMtXHR9XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4MDQ6XHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBUQ0FfRFVBTFBJMl9NQVgsIG9wdCwgZHVhbHBpMl9wb2xpY3ksXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MDUtXHRcdFx0ICAgICAgIGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODQxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODQyOlx0XHRXUklURV9PTkNFKHEtXHUwMDNlcGkyX2FscGhhLCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoYWxwaGEpKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg0My1cdH1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04NDctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4NDg6XHRcdFdSSVRFX09OQ0UocS1cdTAwM2VwaTJfYmV0YSwgZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKGJldGEpKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg0OS1cdH1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04ODctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4ODg6XHRcdGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzY2gsIHEsIHdjKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg4OS1cdH1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NDQtLyogRGVmYXVsdCBhbHBoYS9iZXRhIHZhbHVlcyBnaXZlIGEgMTBkQiBzdGFiaWxpdHkgbWFyZ2luIHdpdGggbWF4X3J0dD0xMDBtcy4gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk0NTpzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2RlZmF1bHQoc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NDYte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTQ3Olx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk0OC1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTMtXHRxLVx1MDAzZXBpMl90dXBkYXRlID0gMTYgKiBOU0VDX1BFUl9NU0VDO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTU0Olx0cS1cdTAwM2VwaTJfYWxwaGEgPSBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoNDEpO1x0LyogfjAuMTYgSHogKiAyNTYgKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk1NTpcdHEtXHUwMDNlcGkyX2JldGEgPSBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoODE5KTtcdC8qIH4zLjIwIEh6ICogMjU2ICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTYtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTU5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTYwOlx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHEtXHUwMDNlc2NoLCBxLCAxMCk7XHQvKiB3Yz0xMCUsIHdsPTkwJSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTYxLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk2OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3MDpzdGF0aWMgaW50IGR1YWxwaTJfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTcxLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3Mi17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NzM6XHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc0LVx0aW50IGVycjtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NzYtXHRzY2gtXHUwMDNlZmxhZ3MgfD0gVENRX0ZfREVRVUVVRV9EUk9QUztcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3NzpcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VwaTJfdGltZXIsIGR1YWxwaTJfdGltZXIsIENMT0NLX01PTk9UT05JQyxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3OC1cdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCU19QSU5ORURfU09GVCk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTg5LVx0cS1cdTAwM2VzY2ggPSBzY2g7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5OTA6XHRkdWFscGkyX3Jlc2V0X2RlZmF1bHQoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5MS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5Mi1cdGlmIChvcHQgXHUwMDI2XHUwMDI2IG5sYV9sZW4ob3B0KSkge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTkzOlx0XHRlcnIgPSBkdWFscGkyX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5NC1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDAzLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAwNDpzdGF0aWMgaW50IGR1YWxwaTJfZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwMDUte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAwNjpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDA3LVx0c3RydWN0IG5sYXR0ciAqb3B0cztcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDI2LVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfQUxQSEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDI3Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9hbHBoYSkpKSB8fFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAyOC1cdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX0JFVEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDI5Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9iZXRhKSkpIHx8XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDMwLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfU1RFUF9USFJFU0hfUEtUUywgc3RlcF90aCkgfHxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDUzLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfQUxQSEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDU0Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9hbHBoYSkpKSB8fFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA1NS1cdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX0JFVEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDU2Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9iZXRhKSkpIHx8XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDU3LVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfU1RFUF9USFJFU0hfVVMsXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA3OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwODA6c3RhdGljIGludCBkdWFscGkyX2R1bXBfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDgxLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwODI6XHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTA4MzpcdHN0cnVjdCB0Y19kdWFscGkyX3hzdGF0cyBzdCA9IHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwODQtXHRcdC5wcm9iXHRcdFx0PSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYiksXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEwNi0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMDc6c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMDgte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEwOTpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTEwLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjItXHRXUklURV9PTkNFKHEtXHUwMDNlbWF4X21lbW9yeV91c2VkLCAwKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMjM6XHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjQtfVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEyNS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMjY6c3RhdGljIHZvaWQgZHVhbHBpMl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEyNy17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTI4Olx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjktXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEzNi1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMzc6c3RhdGljIHN0cnVjdCBRZGlzYyAqZHVhbHBpMl9sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGFyZylcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMzgte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTQyOnN0YXRpYyB1bnNpZ25lZCBsb25nIGR1YWxwaTJfZmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTQzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTQ2LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE0NzpzdGF0aWMgdW5zaWduZWQgbG9uZyBkdWFscGkyX2JpbmQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgcGFyZW50LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE0OC1cdFx0XHRcdCAgdTMyIGNsYXNzaWQpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1Mi1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNTM6c3RhdGljIHZvaWQgZHVhbHBpMl91bmJpbmQoc3RydWN0IFFkaXNjICpxLCB1bnNpZ25lZCBsb25nIGNsKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1NC17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1Ni1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNTc6c3RhdGljIHN0cnVjdCB0Y2ZfYmxvY2sgKmR1YWxwaTJfdGNmX2Jsb2NrKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OC1cdFx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OS17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTYwOlx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNjEtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE2Ni1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNjc6c3RhdGljIHZvaWQgZHVhbHBpMl93YWxrKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICphcmcpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTY4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTg4LS8qIE1pbmltYWwgY2xhc3Mgc3VwcG9ydCB0byBoYW5kbGUgdGMgZmlsdGVycyAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTA6XHQubGVhZlx0XHQ9IGR1YWxwaTJfbGVhZixcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTE6XHQuZmluZFx0XHQ9IGR1YWxwaTJfZmluZCxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTI6XHQudGNmX2Jsb2NrXHQ9IGR1YWxwaTJfdGNmX2Jsb2NrLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5MzpcdC5iaW5kX3RjZlx0PSBkdWFscGkyX2JpbmQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTk0Olx0LnVuYmluZF90Y2ZcdD0gZHVhbHBpMl91bmJpbmQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTk1Olx0LndhbGtcdFx0PSBkdWFscGkyX3dhbGssXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTk2LX07XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTk3LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5ODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5OTpcdC5pZFx0XHQ9IFwmIzM0O2R1YWxwaTJcJiMzNDssXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjAwOlx0LmNsX29wc1x0XHQ9IFx1MDAyNmR1YWxwaTJfY2xhc3Nfb3BzLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMTpcdC5wcml2X3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEpLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpcdC5lbnF1ZXVlXHQ9IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDM6XHQuZGVxdWV1ZVx0PSBkdWFscGkyX3FkaXNjX2RlcXVldWUsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA0Olx0LnBlZWtcdFx0PSBkdWFscGkyX3BlZWssXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA1Olx0LmluaXRcdFx0PSBkdWFscGkyX2luaXQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA2Olx0LmRlc3Ryb3lcdD0gZHVhbHBpMl9kZXN0cm95LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwNzpcdC5yZXNldFx0XHQ9IGR1YWxwaTJfcmVzZXQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA4Olx0LmNoYW5nZVx0XHQ9IGR1YWxwaTJfY2hhbmdlLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwOTpcdC5kdW1wXHRcdD0gZHVhbHBpMl9kdW1wLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMDpcdC5kdW1wX3N0YXRzXHQ9IGR1YWxwaTJfZHVtcF9zdGF0cyxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTEtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTItfTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMTM6TU9EVUxFX0FMSUFTX05FVF9TQ0goXCYjMzQ7ZHVhbHBpMlwmIzM0Oyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE0LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxNTpzdGF0aWMgaW50IF9faW5pdCBkdWFscGkyX21vZHVsZV9pbml0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE2LXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMTc6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZHVhbHBpMl9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIxOC19XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyMDpzdGF0aWMgdm9pZCBfX2V4aXQgZHVhbHBpMl9tb2R1bGVfZXhpdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyMS17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjIyOlx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIzLX1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjI1Om1vZHVsZV9pbml0KGR1YWxwaTJfbW9kdWxlX2luaXQpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyNjptb2R1bGVfZXhpdChkdWFscGkyX21vZHVsZV9leGl0KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjI4Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEdWFsIFF1ZXVlIHdpdGggUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgSW1wcm92ZWQgd2l0aCBhIFNxdWFyZSAoZHVhbHBpMikgc2NoZWR1bGVyXCYjMzQ7KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjktTU9EVUxFX0FVVEhPUihcJiMzNDtLb2VuIERlIFNjaGVwcGVyIFx1MDAzY2tvZW4uZGVfc2NoZXBwZXJAbm9raWEtYmVsbC1sYWJzLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMTU6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzMjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTY2hlZHVsZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhIGZpeCByZWxhdGVkIHRvIGJhY2tsb2cgYWNjb3VudGluZyB3aGVuIEdTTyBwYWNrZXRzIGFyZSBlbnF1ZXVlZCBpbiB0aGUgYGR1YWxwaTJgIHFkaXNjLiBUaGUgY29uZmlnIG9wdGlvbiBpcyBgTkVUX1NDSF9EVUFMUEkyYCwgYW5kIHRoZSBmdW5jdGlvbiBkaXJlY3RseSBhZmZlY3RlZCBpcyBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciwgYW5kIHRoZSBwYXRoIHRvIHRoaXMgY29kZSBpcyBzdHJhaWdodGZvcndhcmQ6IGBkdWFscGkyX3FkaXNjX2VucXVldWVgICppcyogdGhlIGAuZW5xdWV1ZWAgY2FsbGJhY2sgZm9yIHRoZSBgZHVhbHBpMmAgcWRpc2MuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgaXNzdWVzIGluIHBhY2tldCBzY2hlZHVsaW5nIGFuZCBhY2NvdW50aW5nLCB0aGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBkZXBlbmRlbmNpZXMuIFRoZSB0ZXN0IGVudmlyb25tZW50IG1lbnRpb25zIHRoZSBgcWZxYCBxZGlzYyBhcyBhIHBhcmVudC4gVGhlIGFzc29jaWF0ZWQgY29uZmlnIG9wdGlvbiB0aGVyZSBpcyBgTkVUX1NDSF9RRlFgLiBUaG91Z2ggdGhlIGNvZGUgY2hhbmdlcyBhcmUgbG9jYWxpemVkIHRvIGBzY2hfZHVhbHBpMi5jYCwgc28gYE5FVF9TQ0hfRFVBTFBJMmAgaXMgdGhlIGNyaXRpY2FsIG9wdGlvbi4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBORVRfU0NIX1FGUWAgaXNuJiMzOTt0IGFjY2lkZW50YWxseSBhbHNvIHJlcXVpcmVkLCBldmVuIGluZGlyZWN0bHksIHRvIGF2b2lkIG1pc3NpbmcgYW55IGhpZGRlbiBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfU0NIX1FGUSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MjQ0PWNvbmZpZyBORVRfU0NIX0NIT0tFXG4tLVxubmV0L3NjaGVkL0tjb25maWctMjU0LVxubmV0L3NjaGVkL0tjb25maWc6MjU1OmNvbmZpZyBORVRfU0NIX1FGUVxubmV0L3NjaGVkL0tjb25maWctMjU2LVx0dHJpc3RhdGUgXCYjMzQ7UXVpY2sgRmFpciBRdWV1ZWluZyBzY2hlZHVsZXIgKFFGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0hPS0UpXHQmIzQzOz0gc2NoX2Nob2tlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NDpvYmotJChDT05GSUdfTkVUX1NDSF9RRlEpXHQmIzQzOz0gc2NoX3FmcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNTUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXHQmIzQzOz0gc2NoX2NvZGVsLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk4MAoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiA4NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIER1YWxQSTIgU2NoZWR1bGVyIEJ1ZyBGaXgqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYGR1YWxwaTJgIHNjaGVkdWxlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGluY2x1ZGUgYE5FVF9TQ0hfRFVBTFBJMmAgYW5kIGBORVRfU0NIX1FGUWAgaW4gYEVuYWJsZUNvbmZpZ3NgLCBhcyB0aGUgdGVzdCBjYXNlIHVzZXMgdGhlbSwgYnV0IGxldCYjMzk7cyBiZSBwcmVjaXNlLiBUaGUgbWFpbiBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBpcyBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYC4gSSYjMzk7dmUgdmVyaWZpZWQgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZnVuY3Rpb24gZGlyZWN0bHkgdG91Y2hlZCBieSB0aGUgcGF0Y2guCgpOb3csIGEgY2xvc2VyIGxvb2sgYXQgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAsIHNwZWNpZmljYWxseSBpbiBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgLCByZXZlYWxzIGl0IGNhbGxzIHNldmVyYWwgb3RoZXIgZnVuY3Rpb25zOiBgZHVhbHBpMl9za2JfY2xhc3NpZnlgLCBgc2tiX2dzb19zZWdtZW50YCwgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLCBgY29uc3VtZV9za2JgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZV9za2JgLiBUaGUga2V5IGNoYW5nZSBjZW50ZXJzIGFyb3VuZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuCgpUaGlzIGlzIGEgdmVyeSBzcGVjaWZpYyBmaXggd2l0aGluIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiwgZGVhbGluZyB3aXRoIEdTTyBwYWNrZXQgZW5xdWV1ZWluZy4gVGhpcyBtZWFucyB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIGFuZCBJIHNob3VsZCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gSSBjYW4gYWxzbyBkZWZpbmUgYEZvY3VzU3ltYm9sc2AgdG8gYFsmIzM0O2R1YWxwaTJfcWRpc2NfZW5xdWV1ZSYjMzQ7XWAuCgpJbml0aWFsbHksIEkgaGFkIHRob3VnaHQgdG8gaW5jbHVkZSBgTkVUX1NDSF9RRlFgLCBhcyB0aGUgdGVzdCB1c2VzIGl0LiBCdXQgdGhlIGJ1ZyBpcyBpbiBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBhbmQgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHFkaXNjIGlzIGEgY2hpbGQgb2YgYW5vdGhlciBxZGlzYyAoY2xhc3NmdWwgcWRpc2MpLiBgZHVhbHBpMmAgaXRzZWxmIGlzIGEgY2xhc3NsZXNzIHFkaXNjLCBidXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvIGEgY2xhc3NmdWwgcWRpc2MgbGlrZSBgcWZxYCwgYGh0YmAsIGBoZnNjYCwgZXRjLiBBbnkgY2xhc3NmdWwgcWRpc2Mgd291bGQgdHJpZ2dlciBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AgY29ycmVjdGx5IGlmIGl0IGhhcyBhIHBhcmVudC4gU28gYE5FVF9TQ0hfRFVBTFBJMmAgaXMgdGhlIG1haW4gb25lLiBJIGNhbiBhbHNvIGFkZCBgTkVUX1NDSF9RRlFgIHNpbmNlIHRoZSB0ZXN0IHVzZXMgaXQsIGJ1dCBJJiMzOTtsbCBzdGljayB3aXRoIG9ubHkgYE5FVF9TQ0hfRFVBTFBJMmAgdG8gYmUgYXMgZm9jdXNlZCBhcyBwb3NzaWJsZS4KClF1aWNrIGNoZWNrIGNvbmZpcm1zIGBkdWFscGkyYCBkZXBlbmRzIG9uIGBORVRfU0NIRURgLCBidXQgdGhhdCBzaG91bGQgYmUgaW1wbGljaXRseSBoYW5kbGVkLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8ganVzdCBgWyYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDtdYC4KCkluIHN1bW1hcnksIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIGZvciB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaXQgZGVhbHMgd2l0aCBHU08gcGFja2V0cy4gSXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGFuZCB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBzbyBJIG5lZWQgdG8gZnV6eiBpdCB0byBtYWtlIHN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgdGhhdCBpdCBkb2VzbiYjMzk7dCBjYXVzZSB1bmRlcmZsb3dzIG9yIG90aGVyIHJlbGF0ZWQgaXNzdWVzLiBJdCYjMzk7cyBhIHByZWNpc2UgZml4LCB3b3J0aCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvLiBJJiMzOTttIHJlYWR5IHRvIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDE1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkdWFscGkyX3FkaXNjX2VucXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGJhY2tsb2cgYWNjb3VudGluZyBvZiB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaGFuZGxpbmcgR1NPIHBhY2tldHMuIEl0IG1vZGlmaWVzIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGFuZCByZWR1Y2UgdGhlIGJhY2tsb2cgdXNpbmcgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgZG9lc24mIzM5O3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHVhbHBpMl9xZGlzY19lbnF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBiYWNrbG9nIGFjY291bnRpbmcgb2YgdGhlIGBkdWFscGkyYCBuZXR3b3JrIHNjaGVkdWxlciB3aGVuIGhhbmRsaW5nIEdTTyBwYWNrZXRzLiBJdCBtb2RpZmllcyB0aGUgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgZnVuY3Rpb24gdG8gY29ycmVjdGx5IGNhbGN1bGF0ZSBhbmQgcmVkdWNlIHRoZSBiYWNrbG9nIHVzaW5nIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhY2NvdW50aW5nIGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGxlYWQgdG8gdW5kZXJmbG93cyBvciBvdGhlciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0xOVQxNTozMDo1My4wMTE1NDQ5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MTgzNDk5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSF9EVUFMUEkyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHVhbHBpMl9xZGlzY19lbnF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGJhY2tsb2cgYWNjb3VudGluZyBvZiB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaGFuZGxpbmcgR1NPIHBhY2tldHMuIEl0IG1vZGlmaWVzIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGFuZCByZWR1Y2UgdGhlIGJhY2tsb2cgdXNpbmcgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgZG9lc24ndCBsZWFkIHRvIHVuZGVyZmxvd3Mgb3Igb3RoZXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQxNTozMDo1My4wMTE1NDk5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzNDg3ODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTA5OTdiNzRmYzNlOGQxNGI5ZWUwZTg3M2YzOTQ2YzdiNGJkNGJlOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAxOSAxNTozMDo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXFxuaW5kZXggZDdjMzI1NGVmODAwZjguLjU0MzRkZjZjYThlZmU2IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG5AQCAtNDYxLDcgKzQ2MSw3IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwobnNrYikpXFxuIFxcdFxcdFxcdHJldHVybiBxZGlzY19kcm9wKHNrYiwgc2NoLCB0b19mcmVlKTtcXG4gXFxuLVxcdFxcdGNudCA9IDE7XFxuK1xcdFxcdGNudCA9IDA7XFxuIFxcdFxcdGJ5dGVfbGVuID0gMDtcXG4gXFx0XFx0b3JpZ19sZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7XFxuIFxcdFxcdHNrYl9saXN0X3dhbGtfc2FmZShuc2tiLCBuc2tiLCBuZXh0KSB7XFxuQEAgLTQ4OCwxNiArNDg4LDE1IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHRcXHRieXRlX2xlbiArPSBuc2tiLVxcdTAwM2VsZW47XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbi1cXHRcXHRpZiAoY250IFxcdTAwM2UgMSkge1xcbitcXHRcXHRpZiAoY250IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHQvKiBUaGUgY2FsbGVyIHdpbGwgYWRkIHRoZSBvcmlnaW5hbCBza2Igc3RhdHMgdG8gaXRzXFxuIFxcdFxcdFxcdCAqIGJhY2tsb2csIGNvbXBlbnNhdGUgdGhpcyBpZiBhbnkgbnNrYiBpcyBlbnF1ZXVlZC5cXG4gXFx0XFx0XFx0ICovXFxuLVxcdFxcdFxcdC0tY250O1xcbi1cXHRcXHRcXHRieXRlX2xlbiAtPSBvcmlnX2xlbjtcXG4rXFx0XFx0XFx0cWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzY2gsIDEgLSBjbnQsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgb3JpZ19sZW4gLSBieXRlX2xlbik7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzY2gsIC1jbnQsIC1ieXRlX2xlbik7XFxuIFxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdHJldHVybiBjbnQgXFx1MDAzZSAwID8gTkVUX1hNSVRfU1VDQ0VTUyA6IGVycjtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gZHVhbHBpMl9lbnF1ZXVlX3NrYihza2IsIHNjaCwgdG9fZnJlZSk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uXFxuaW5kZXggY2QxZjJlZThmMzU0ZDYuLmVkNmE5MDBiYjU2OGY0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxcbkBAIC0yNTAsNSArMjUwLDQ5IEBAXFxuICAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbiAgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XFxcIlxcbiAgICAgICAgIF1cXG4rICAgIH0sXFxuKyAgICB7XFxuKyAgICAgICAgXFxcImlkXFxcIjogXFxcIjg5MWZcXFwiLFxcbisgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIlZlcmlmeSBEdWFsUEkyIEdTTyBiYWNrbG9nIGFjY291bnRpbmcgd2l0aCBRRlEgcGFyZW50XFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJxZGlzY1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJkdWFscGkyXFxcIixcXG4rICAgICAgICAgICAgXFxcInFmcVxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJnc29cXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwicGx1Z2luc1xcXCI6IHtcXG4rICAgICAgICAgICAgXFxcInJlcXVpcmVzXFxcIjogXFxcIm5zUGx1Z2luXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdXAgfHwgdHJ1ZVxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkSVAgYWRkciBhZGQgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlXFxcIixcXG4rICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSByb290IGhhbmRsZSAxOiBxZnFcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIGNsYXNzIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBjbGFzc2lkIDE6MSBxZnEgd2VpZ2h0IDEgbWF4cGt0IDQwOTZcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOjEgaGFuZGxlIDI6IGR1YWxwaTJcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIGZpbHRlciBhZGQgZGV2ICREVU1NWSBwYXJlbnQgMTogbWF0Y2hhbGwgY2xhc3NpZCAxOjFcXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIi4vdGRjX2dzby5weSAxMC4xMC4xMC4xMCAxMC4xMC4xMC4xIDkwMDAgMTIwMCAyNDAwXFxcIixcXG4rICAgICAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICAgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLWogLXMgcWRpc2MgbHMgZGV2ICREVU1NWVxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoSlNPTlxcXCI6IFtcXG4rICAgICAgICAgICAge1xcbisgICAgICAgICAgICAgICAgXFxcImtpbmRcXFwiOiBcXFwicWZxXFxcIixcXG4rICAgICAgICAgICAgICAgIFxcXCJoYW5kbGVcXFwiOiBcXFwiMTpcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInBhY2tldHNcXFwiOiAyLFxcbisgICAgICAgICAgICAgICAgXFxcImJhY2tsb2dcXFwiOiAwLFxcbisgICAgICAgICAgICAgICAgXFxcInFsZW5cXFwiOiAwXFxuKyAgICAgICAgICAgIH0sXFxuKyAgICAgICAgICAgIHtcXG4rICAgICAgICAgICAgICAgIFxcXCJraW5kXFxcIjogXFxcImR1YWxwaTJcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcImhhbmRsZVxcXCI6IFxcXCIyOlxcXCIsXFxuKyAgICAgICAgICAgICAgICBcXFwicGFja2V0c1xcXCI6IDIsXFxuKyAgICAgICAgICAgICAgICBcXFwiYmFja2xvZ1xcXCI6IDAsXFxuKyAgICAgICAgICAgICAgICBcXFwicWxlblxcXCI6IDBcXG4rICAgICAgICAgICAgfVxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIHJvb3RcXFwiLFxcbisgICAgICAgICAgICBcXFwiJElQIGFkZHIgZGVsIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVxcXCJcXG4rICAgICAgICBdXFxuICAgICB9XFxuIF1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYjY2NTI4ZWE0YjY4MGFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XFxuQEAgLTAsMCArMSw0MyBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuK1xcXCJcXFwiXFxcIlxcbit0ZGNfZ3NvLnB5IC0gc2VuZCBhIFVEUCBHU08gZGF0YWdyYW1cXG4rXFxuK0NvcHlyaWdodCAoQykgMjAyNiBYaW5ncXVhbiBMaXUgXFx1MDAzY2IxbkBiMW4uaW9cXHUwMDNlXFxuK1xcXCJcXFwiXFxcIlxcbitcXG4raW1wb3J0IGFyZ3BhcnNlXFxuK2ltcG9ydCBzb2NrZXRcXG4raW1wb3J0IHN0cnVjdFxcbitpbXBvcnQgc3lzXFxuK1xcbitVRFBfTUFYX1NFR01FTlRTID0gMSBcXHUwMDNjXFx1MDAzYyA3XFxuK1xcbitcXG4rcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249XFxcIlVEUCBHU08gZGF0YWdyYW0gc2VuZGVyXFxcIilcXG4rcGFyc2VyLmFkZF9hcmd1bWVudChcXFwic3JjXFxcIiwgaGVscD1cXFwic291cmNlIElQdjQgYWRkcmVzc1xcXCIpXFxuK3BhcnNlci5hZGRfYXJndW1lbnQoXFxcImRzdFxcXCIsIGhlbHA9XFxcImRlc3RpbmF0aW9uIElQdjQgYWRkcmVzc1xcXCIpXFxuK3BhcnNlci5hZGRfYXJndW1lbnQoXFxcInBvcnRcXFwiLCB0eXBlPWludCwgaGVscD1cXFwiZGVzdGluYXRpb24gVURQIHBvcnRcXFwiKVxcbitwYXJzZXIuYWRkX2FyZ3VtZW50KFxcXCJnc29fc2l6ZVxcXCIsIHR5cGU9aW50LCBoZWxwPVxcXCJVRFAgR1NPIHNlZ21lbnQgcGF5bG9hZCBzaXplXFxcIilcXG4rcGFyc2VyLmFkZF9hcmd1bWVudChcXFwicGF5bG9hZF9sZW5cXFwiLCB0eXBlPWludCwgaGVscD1cXFwidG90YWwgVURQIHBheWxvYWQgbGVuZ3RoXFxcIilcXG4rYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcXG4rXFxuK2lmIGFyZ3MuZ3NvX3NpemUgXFx1MDAzYz0gMCBvciBhcmdzLmdzb19zaXplIFxcdTAwM2UgMHhGRkZGOlxcbisgICAgcGFyc2VyLmVycm9yKFxcXCJnc29fc2l6ZSBtdXN0IGZpdCBpbiBhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxcXCIpXFxuK2lmIGFyZ3MucGF5bG9hZF9sZW4gXFx1MDAzYz0gYXJncy5nc29fc2l6ZTpcXG4rICAgIHBhcnNlci5lcnJvcihcXFwicGF5bG9hZF9sZW4gbXVzdCBiZSBsYXJnZXIgdGhhbiBnc29fc2l6ZVxcXCIpXFxuK2lmIGFyZ3MucGF5bG9hZF9sZW4gXFx1MDAzZSBhcmdzLmdzb19zaXplICogVURQX01BWF9TRUdNRU5UUzpcXG4rICAgIHBhcnNlci5lcnJvcihcXFwicGF5bG9hZF9sZW4gZXhjZWVkcyBVRFBfTUFYX1NFR01FTlRTXFxcIilcXG4rXFxuK1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgXFxcIlNPTF9VRFBcXFwiLCBzb2NrZXQuSVBQUk9UT19VRFApXFxuK1VEUF9TRUdNRU5UID0gZ2V0YXR0cihzb2NrZXQsIFxcXCJVRFBfU0VHTUVOVFxcXCIsIDEwMylcXG4rXFxuK3NvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSlcXG4rc29jay5iaW5kKChhcmdzLnNyYywgMCkpXFxuK1xcbitwYXlsb2FkID0gYlxcXCJiXFxcIiAqIGFyZ3MucGF5bG9hZF9sZW5cXG4rY21zZyA9IFsoU09MX1VEUCwgVURQX1NFR01FTlQsIHN0cnVjdC5wYWNrKFxcXCI9SFxcXCIsIGFyZ3MuZ3NvX3NpemUpKV1cXG4rXFxuK3NlbnQgPSBzb2NrLnNlbmRtc2coW3BheWxvYWRdLCBjbXNnLCAwLCAoYXJncy5kc3QsIGFyZ3MucG9ydCkpXFxuK3N5cy5leGl0KHNlbnQgIT0gbGVuKHBheWxvYWQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQxNTozMDo1My42MzU3NzYyMTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTk0MTA5OTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR1YWxwaTJfcWRpc2NfZW5xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBiYWNrbG9nIGFjY291bnRpbmcgb2YgdGhlIGBkdWFscGkyYCBuZXR3b3JrIHNjaGVkdWxlciB3aGVuIGhhbmRsaW5nIEdTTyBwYWNrZXRzLiBJdCBtb2RpZmllcyB0aGUgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgZnVuY3Rpb24gdG8gY29ycmVjdGx5IGNhbGN1bGF0ZSBhbmQgcmVkdWNlIHRoZSBiYWNrbG9nIHVzaW5nIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhY2NvdW50aW5nIGlzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMDk5N2I3NGZjM2U4ZDE0YjllZTBlODczZjM5NDZjN2I0YmQ0YmU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMTkgMTU6MzA6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCBkN2MzMjU0ZWY4MDBmOC4uNTQzNGRmNmNhOGVmZTYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbkBAIC00NjEsNyArNDYxLDcgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGlmIChJU19FUlJfT1JfTlVMTChuc2tiKSlcbiBcdFx0XHRyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7XG4gXG4tXHRcdGNudCA9IDE7XG4rXHRcdGNudCA9IDA7XG4gXHRcdGJ5dGVfbGVuID0gMDtcbiBcdFx0b3JpZ19sZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7XG4gXHRcdHNrYl9saXN0X3dhbGtfc2FmZShuc2tiLCBuc2tiLCBuZXh0KSB7XG5AQCAtNDg4LDE2ICs0ODgsMTUgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0XHRieXRlX2xlbiArPSBuc2tiLVx1MDAzZWxlbjtcbiBcdFx0XHR9XG4gXHRcdH1cbi1cdFx0aWYgKGNudCBcdTAwM2UgMSkge1xuK1x0XHRpZiAoY250IFx1MDAzZSAwKSB7XG4gXHRcdFx0LyogVGhlIGNhbGxlciB3aWxsIGFkZCB0aGUgb3JpZ2luYWwgc2tiIHN0YXRzIHRvIGl0c1xuIFx0XHRcdCAqIGJhY2tsb2csIGNvbXBlbnNhdGUgdGhpcyBpZiBhbnkgbnNrYiBpcyBlbnF1ZXVlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHQtLWNudDtcbi1cdFx0XHRieXRlX2xlbiAtPSBvcmlnX2xlbjtcbitcdFx0XHRxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKHNjaCwgMSAtIGNudCxcbitcdFx0XHRcdFx0XHQgIG9yaWdfbGVuIC0gYnl0ZV9sZW4pO1xuIFx0XHR9XG4tXHRcdHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAtY250LCAtYnl0ZV9sZW4pO1xuIFx0XHRjb25zdW1lX3NrYihza2IpO1xuLVx0XHRyZXR1cm4gZXJyO1xuK1x0XHRyZXR1cm4gY250IFx1MDAzZSAwID8gTkVUX1hNSVRfU1VDQ0VTUyA6IGVycjtcbiBcdH1cbiBcdHJldHVybiBkdWFscGkyX2VucXVldWVfc2tiKHNrYiwgc2NoLCB0b19mcmVlKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uXG5pbmRleCBjZDFmMmVlOGYzNTRkNi4uZWQ2YTkwMGJiNTY4ZjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxuQEAgLTI1MCw1ICsyNTAsNDkgQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcIjg5MWZcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBEdWFsUEkyIEdTTyBiYWNrbG9nIGFjY291bnRpbmcgd2l0aCBRRlEgcGFyZW50XCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcInFkaXNjXCIsXG4rICAgICAgICAgICAgXCJkdWFscGkyXCIsXG4rICAgICAgICAgICAgXCJxZnFcIixcbisgICAgICAgICAgICBcImdzb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdXAgfHwgdHJ1ZVwiLFxuKyAgICAgICAgICAgIFwiJElQIGFkZHIgYWRkIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHJvb3QgaGFuZGxlIDE6IHFmcVwiLFxuKyAgICAgICAgICAgIFwiJFRDIGNsYXNzIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBjbGFzc2lkIDE6MSBxZnEgd2VpZ2h0IDEgbWF4cGt0IDQwOTZcIixcbisgICAgICAgICAgICBcIiRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBwYXJlbnQgMToxIGhhbmRsZSAyOiBkdWFscGkyXCIsXG4rICAgICAgICAgICAgXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBtYXRjaGFsbCBjbGFzc2lkIDE6MVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIuL3RkY19nc28ucHkgMTAuMTAuMTAuMTAgMTAuMTAuMTAuMSA5MDAwIDEyMDAgMjQwMFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1qIC1zIHFkaXNjIGxzIGRldiAkRFVNTVlcIixcbisgICAgICAgIFwibWF0Y2hKU09OXCI6IFtcbisgICAgICAgICAgICB7XG4rICAgICAgICAgICAgICAgIFwia2luZFwiOiBcInFmcVwiLFxuKyAgICAgICAgICAgICAgICBcImhhbmRsZVwiOiBcIjE6XCIsXG4rICAgICAgICAgICAgICAgIFwicGFja2V0c1wiOiAyLFxuKyAgICAgICAgICAgICAgICBcImJhY2tsb2dcIjogMCxcbisgICAgICAgICAgICAgICAgXCJxbGVuXCI6IDBcbisgICAgICAgICAgICB9LFxuKyAgICAgICAgICAgIHtcbisgICAgICAgICAgICAgICAgXCJraW5kXCI6IFwiZHVhbHBpMlwiLFxuKyAgICAgICAgICAgICAgICBcImhhbmRsZVwiOiBcIjI6XCIsXG4rICAgICAgICAgICAgICAgIFwicGFja2V0c1wiOiAyLFxuKyAgICAgICAgICAgICAgICBcImJhY2tsb2dcIjogMCxcbisgICAgICAgICAgICAgICAgXCJxbGVuXCI6IDBcbisgICAgICAgICAgICB9XG4rICAgICAgICBdLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgcm9vdFwiLFxuKyAgICAgICAgICAgIFwiJElQIGFkZHIgZGVsIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVwiXG4rICAgICAgICBdXG4gICAgIH1cbiBdXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI2NjUyOGVhNGI2ODBhXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkY19nc28ucHlcbkBAIC0wLDAgKzEsNDMgQEBcbisjIS91c3IvYmluL2VudiBweXRob24zXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuK1wiXCJcIlxuK3RkY19nc28ucHkgLSBzZW5kIGEgVURQIEdTTyBkYXRhZ3JhbVxuK1xuK0NvcHlyaWdodCAoQykgMjAyNiBYaW5ncXVhbiBMaXUgXHUwMDNjYjFuQGIxbi5pb1x1MDAzZVxuK1wiXCJcIlxuK1xuK2ltcG9ydCBhcmdwYXJzZVxuK2ltcG9ydCBzb2NrZXRcbitpbXBvcnQgc3RydWN0XG4raW1wb3J0IHN5c1xuK1xuK1VEUF9NQVhfU0VHTUVOVFMgPSAxIFx1MDAzY1x1MDAzYyA3XG4rXG4rXG4rcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249XCJVRFAgR1NPIGRhdGFncmFtIHNlbmRlclwiKVxuK3BhcnNlci5hZGRfYXJndW1lbnQoXCJzcmNcIiwgaGVscD1cInNvdXJjZSBJUHY0IGFkZHJlc3NcIilcbitwYXJzZXIuYWRkX2FyZ3VtZW50KFwiZHN0XCIsIGhlbHA9XCJkZXN0aW5hdGlvbiBJUHY0IGFkZHJlc3NcIilcbitwYXJzZXIuYWRkX2FyZ3VtZW50KFwicG9ydFwiLCB0eXBlPWludCwgaGVscD1cImRlc3RpbmF0aW9uIFVEUCBwb3J0XCIpXG4rcGFyc2VyLmFkZF9hcmd1bWVudChcImdzb19zaXplXCIsIHR5cGU9aW50LCBoZWxwPVwiVURQIEdTTyBzZWdtZW50IHBheWxvYWQgc2l6ZVwiKVxuK3BhcnNlci5hZGRfYXJndW1lbnQoXCJwYXlsb2FkX2xlblwiLCB0eXBlPWludCwgaGVscD1cInRvdGFsIFVEUCBwYXlsb2FkIGxlbmd0aFwiKVxuK2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4rXG4raWYgYXJncy5nc29fc2l6ZSBcdTAwM2M9IDAgb3IgYXJncy5nc29fc2l6ZSBcdTAwM2UgMHhGRkZGOlxuKyAgICBwYXJzZXIuZXJyb3IoXCJnc29fc2l6ZSBtdXN0IGZpdCBpbiBhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclwiKVxuK2lmIGFyZ3MucGF5bG9hZF9sZW4gXHUwMDNjPSBhcmdzLmdzb19zaXplOlxuKyAgICBwYXJzZXIuZXJyb3IoXCJwYXlsb2FkX2xlbiBtdXN0IGJlIGxhcmdlciB0aGFuIGdzb19zaXplXCIpXG4raWYgYXJncy5wYXlsb2FkX2xlbiBcdTAwM2UgYXJncy5nc29fc2l6ZSAqIFVEUF9NQVhfU0VHTUVOVFM6XG4rICAgIHBhcnNlci5lcnJvcihcInBheWxvYWRfbGVuIGV4Y2VlZHMgVURQX01BWF9TRUdNRU5UU1wiKVxuK1xuK1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgXCJTT0xfVURQXCIsIHNvY2tldC5JUFBST1RPX1VEUClcbitVRFBfU0VHTUVOVCA9IGdldGF0dHIoc29ja2V0LCBcIlVEUF9TRUdNRU5UXCIsIDEwMylcbitcbitzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pXG4rc29jay5iaW5kKChhcmdzLnNyYywgMCkpXG4rXG4rcGF5bG9hZCA9IGJcImJcIiAqIGFyZ3MucGF5bG9hZF9sZW5cbitjbXNnID0gWyhTT0xfVURQLCBVRFBfU0VHTUVOVCwgc3RydWN0LnBhY2soXCI9SFwiLCBhcmdzLmdzb19zaXplKSldXG4rXG4rc2VudCA9IHNvY2suc2VuZG1zZyhbcGF5bG9hZF0sIGNtc2csIDAsIChhcmdzLmRzdCwgYXJncy5wb3J0KSlcbitzeXMuZXhpdChzZW50ICE9IGxlbihwYXlsb2FkKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDE1OjMwOjUzLjYzNTc3NzY4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1MjA5OTc4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIGBzY2hfZHVhbHBpMmAgQmFja2xvZyBBY2NvdW50aW5nKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgIGFuZCBhZGRpbmcgYSB0ZXN0IGZvciBpdCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9gLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IGEgYnVnIGZpeCBhbmQgYSBjb3JyZXNwb25kaW5nIHRlc3QgY2FzZSwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCwgYW5kIHRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBiYWNrbG9nIGFjY291bnRpbmcgZm9yIEdlbmVyaWMgU2VnbWVudGF0aW9uIE9mZmxvYWQgKEdTTykgcGFja2V0cy4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgR1NPIG9mdGVuIGhhcyBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCB0cmFmZmljIGNvbnRyb2wuXG5cbkxldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGRpZmYuICBBaCwgaXQgc2VlbXMgd2UgaGF2ZSBhIHJlZHVjdGlvbiBpbiBgY250YCBhbmQgYSBjb3JyZXNwb25kaW5nIGFkanVzdG1lbnQgdG8gYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIGNvcnJlY3RpbmcgYW4gaXNzdWUgd2hlcmUgR1NPIHBhY2tldHMgd2VyZW4ndCBiZWluZyBhY2NvdW50ZWQgZm9yIGNvcnJlY3RseSB3aGVuIHRoZWlyIGludGVybmFsIHNlZ21lbnRzIGFyZSBwcm9jZXNzZWQuIFdlJ3JlIG5vdyBjb3JyZWN0bHkgZGVjcmVtZW50aW5nIHRoZSBiYWNrbG9nLiBQcmV2aW91c2x5LCB0aGUgb3JpZ2luYWwgYHNrYmAgc3RhdGlzdGljcyB3ZXJlIGJlaW5nIGluY29ycmVjdGx5IGFkanVzdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNvcnJlY3Rpb24sIHRoZSBjb21tZW50IG1ha2VzIHRoaXMgYWJ1bmRhbnRseSBjbGVhci5cblxuVGhlIGtleSBjaGFuZ2UgaXMgYXJvdW5kIGxpbmVzIDQ2MSB0byA0ODguIEkgY2FuIHNlZSB0aGUgYWRqdXN0bWVudCB0byBiYWNrbG9nIHJlZHVjdGlvbiBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIGVhY2ggc2VnbWVudGVkIHBhY2tldCBhbmQgdGhlIG9yaWdpbmFsIHBhY2tldC4gU28gaXQncyBhYm91dCBjb3JyZWN0aW5nIGhvdyB0aGUgYmFja2xvZyBpcyBhZGp1c3RlZCBmb3IgdGhlIG9yaWdpbmFsIHBhY2tldCBhZnRlciBpdHMgR1NPIHNlZ21lbnRzIGhhdmUgYmVlbiBoYW5kbGVkLiAgSXQgYXBwZWFycyB0byBmaXggYW4gYWNjb3VudGluZyBlcnJvciBmb3IgR1NPIHBhY2tldHMsIHByZXZlbnRpbmcgaW5mbGF0ZWQgb3IgZGVmbGF0ZWQgYmFja2xvZyB2YWx1ZXMgaW4gdGhlIGBzY2hfZHVhbHBpMmAgcWRpc2MuIFRoZSBhZGRpdGlvbiBvZiB0aGUgY29uZGl0aW9uYWwgYGNudCBcdTAwM2UgMCA/IE5FVF9YTUlUX1NVQ0NFU1MgOiBlcnJgIG1ha2VzIHNlbnNlIGluIHRoaXMgY29udGV4dC5cblxuTm93LCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGEgYml0IGJldHRlciwgSSdkIGxpa2UgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGZvciB0aGUgYHNjaF9kdWFscGkyYCBRZGlzYy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciB0aGVtIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdXNpbmcgYGdyZXBwZXJgIGp1c3QgdG8gZ2V0IGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhpcyBpcyBlbmFibGVkLCBhbmQgYW55IHBvc3NpYmxlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxNSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDE1OjMxOjAyLjE1Njc3ODAzN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTY5ODA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdWFscGkyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDE4PWNvbmZpZyBORVRfU0NIX0RVQUxQSTJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQyNS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5uZXQvc2NoZWQvS2NvbmZpZzo0MjY6XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHVhbHBpMi5cXG5uZXQvc2NoZWQvS2NvbmZpZy00MjctXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXFx0Kz0gc2NoX2R1YWxwaTIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTktICpcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDogKiBEdWFsUEkgSW1wcm92ZWQgd2l0aCBhIFNxdWFyZSAoZHVhbHBpMik6XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEtICogLSBTdXBwb3J0cyBjb25nZXN0aW9uIGNvbnRyb2xzIHRoYXQgY29tcGx5IHdpdGggdGhlIFByYWd1ZSByZXF1aXJlbWVudHNcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQyLSAqIGkuZS4sIHR3aWNlIHRoZSBtYXhpbWFsIHNuZF9jd25kLlxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzOiAqIE1BWF9QUk9CIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBSTkcgaW4gZHVhbHBpMl9yb2xsKCkuXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQtICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01MC0vKiBTY2FsZWQgdmFsdWVzIG9mIGFscGhhL2JldGEgbXVzdCBmaXQgaW4gMzJiIHRvIGF2b2lkIG92ZXJmbG93IGluIGxhdGVyXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTE6ICogY29tcHV0YXRpb25zLiBDb25zZXF1ZW50bHkgKHNlZSBhbmQgZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKCkpLCB0aGVpclxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUyLSAqIG5ldGxpbmstcHJvdmlkZWQgdmFsdWVzIGNhbiB1c2UgYXQgbW9zdCAzMWIsIGkuZS4gYmUgYXQgbW9zdCAoMl4yMyktMVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjktXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzA6c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzEtXFx0c3RydWN0IFFkaXNjICpsX3F1ZXVlO1xcdC8qIFRoZSBMNFMgTG93IGxhdGVuY3kgcXVldWUgKEwtcXVldWUpICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyOnN0cnVjdCBkdWFscGkyX3NrYl9jYiB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIzLVxcdHU2NCB0cztcXHRcXHRcXHQvKiBUaW1lc3RhbXAgYXQgZW5xdWV1ZSAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTI4LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyOTplbnVtIGR1YWxwaTJfY2xhc3NpZmljYXRpb25fcmVzdWx0cyB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTMwLVxcdERVQUxQSTJfQ19DTEFTU0lDXFx0PSAwLFxcdC8qIEMtcXVldWUgKi9cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEzNS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMzY6c3RhdGljIHN0cnVjdCBkdWFscGkyX3NrYl9jYiAqZHVhbHBpMl9za2JfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMzcte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEzODpcXHRxZGlzY19jYl9wcml2YXRlX3ZhbGlkYXRlKHNrYiwgc2l6ZW9mKHN0cnVjdCBkdWFscGkyX3NrYl9jYikpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEzOTpcXHRyZXR1cm4gKHN0cnVjdCBkdWFscGkyX3NrYl9jYiAqKXFkaXNjX3NrYl9jYihza2IpLVxcdTAwM2VkYXRhO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE0MC19XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE0MjpzdGF0aWMgdTY0IGR1YWxwaTJfc29qb3Vybl90aW1lKHN0cnVjdCBza19idWZmICpza2IsIHU2NCByZWZlcmVuY2UpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQzLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNDQ6XFx0cmV0dXJuIHJlZmVyZW5jZSAtIGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZXRzO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE0NS19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xNDc9c3RhdGljIHU2NCBoZWFkX2VucXVldWVfdGltZShzdHJ1Y3QgUWRpc2MgKnEpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTAtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTUxOlxcdHJldHVybiBza2IgPyBkdWFscGkyX3NrYl9jYihza2IpLVxcdTAwM2V0cyA6IDA7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTUyLX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTMtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTU0OnN0YXRpYyB1MzIgZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKHUzMiBwYXJhbSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTYxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE2MjpzdGF0aWMgdTMyIGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKHUzMiBwYXJhbSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNjMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTY5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE3MDpzdGF0aWMga3RpbWVfdCBuZXh0X3BpMl90aW1lb3V0KHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTcxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTE3NT1zdGF0aWMgYm9vbCBza2JfaXNfbDRzKHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTc2LXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNzc6XFx0cmV0dXJuIGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWNsYXNzaWZpZWQgPT0gRFVBTFBJMl9DX0w0UztcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNzgtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTgwPXN0YXRpYyBib29sIHNrYl9pbl9sX3F1ZXVlKHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTgxLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxODI6XFx0cmV0dXJuIGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWNsYXNzaWZpZWQgIT0gRFVBTFBJMl9DX0NMQVNTSUM7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTgzLX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xODQtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTg1OnN0YXRpYyBib29sIHNrYl9hcHBseV9zdGVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTg2LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE4OS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxOTA6c3RhdGljIGJvb2wgZHVhbHBpMl9tYXJrKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTkxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE5OC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxOTk6c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjA3LSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIwODpzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjA5OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YylcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE0LVxcdFxcdCgoaW50KXEtXFx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyMTU6XFx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE2LX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTctXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjE4OnN0YXRpYyBib29sIGR1YWxwaTJfcm9sbCh1MzIgcHJvYilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjI5LSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzMDpzdGF0aWMgYm9vbCBkdWFscGkyX2NsYXNzaWNfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIzMS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHByb2IsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzMte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNDpcXHRpZiAoZHVhbHBpMl9yb2xsKHByb2IpIFxcdTAwMjZcXHUwMDI2IGR1YWxwaTJfcm9sbChwcm9iKSkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNTpcXHRcXHRpZiAob3ZlcmxvYWQgfHwgZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlZWN0ID09IElORVRfRUNOX05PVF9FQ1QpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjM2LVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNzpcXHRcXHRkdWFscGkyX21hcmsocSwgc2tiKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzgtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjUyLSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI1MzpzdGF0aWMgYm9vbCBkdWFscGkyX3NjYWxhYmxlX21hcmtpbmcoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNTQtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjYwLVxcdFxcdGlmICghcS1cXHUwMDNlZHJvcF9vdmVybG9hZCB8fFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI2MTpcXHRcXHQgICAgIShkdWFscGkyX3JvbGwocHJvYikgXFx1MDAyNlxcdTAwMjYgZHVhbHBpMl9yb2xsKHByb2IpKSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNjItXFx0XFx0XFx0Z290byBtYXJrO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjY2LVxcdC8qIFdlIGNhbiBzYWZlbHkgY3V0IHRoZSB1cHBlciAzMmIgYXMgb3ZlcmxvYWQ9PWZhbHNlICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjY3OlxcdGlmIChkdWFscGkyX3JvbGwobG9jYWxfbF9wcm9iKSkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI2OC1cXHRcXHQvKiBOb24tRUNUIHBhY2tldHMgY291bGQgaGF2ZSBjbGFzc2lmaWVkIGFzIEw0UyBieSBmaWx0ZXJzLiAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI2OTpcXHRcXHRpZiAoZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlZWN0ID09IElORVRfRUNOX05PVF9FQ1QpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjcwLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI3MS1tYXJrOlxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI3MjpcXHRcXHRkdWFscGkyX21hcmsocSwgc2tiKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNzMtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjgxLSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4MjpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjgzLVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yOTUtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mjk2OlxcdHN3aXRjaCAoZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlY2xhc3NpZmllZCkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI5Ny1cXHRjYXNlIERVQUxQSTJfQ19DTEFTU0lDOlxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI5ODpcXHRcXHRyZXR1cm4gZHVhbHBpMl9jbGFzc2ljX21hcmtpbmcocSwgc2tiLCBwcm9iLCBvdmVybG9hZCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjk5LVxcdGNhc2UgRFVBTFBJMl9DX0w0UzpcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozMDA6XFx0XFx0cmV0dXJuIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhxLCBza2IsIGxvY2FsX2xfcHJvYiwgcHJvYixcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zMDEtXFx0XFx0XFx0XFx0XFx0XFx0b3ZlcmxvYWQpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzA2LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjMwNzpzdGF0aWMgdm9pZCBkdWFscGkyX3JlYWRfZWN0KHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzA4LXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozMDk6XFx0c3RydWN0IGR1YWxwaTJfc2tiX2NiICpjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzEwLVxcdGludCB3bGVuID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDAtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQxOnN0YXRpYyBpbnQgZHVhbHBpMl9za2JfY2xhc3NpZnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDItXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDMte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjM0NDpcXHRzdHJ1Y3QgZHVhbHBpMl9za2JfY2IgKmNiID0gZHVhbHBpMl9za2JfY2Ioc2tiKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDUtXFx0c3RydWN0IHRjZl9yZXN1bHQgcmVzO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzQ4LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjM0OTpcXHRkdWFscGkyX3JlYWRfZWN0KHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzUwLVxcdGlmIChjYi1cXHUwMDNlZWN0IFxcdTAwMjYgcS1cXHUwMDNlZWNuX21hc2spIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4NC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozODU6c3RhdGljIGludCBkdWFscGkyX2VucXVldWVfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4Ny17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mzg4OlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mzg5OlxcdHN0cnVjdCBkdWFscGkyX3NrYl9jYiAqY2I7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzkwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDAzLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQwNDpcXHRjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDA1LVxcdGNiLVxcdTAwM2V0cyA9IGt0aW1lX2dldF9ucygpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDE0LVxcdFxcdC8qIEFwcGx5IHN0ZXAgdGhyZXNoIGlmIHNrYiBpcyBMNFMgXFx1MDAyNlxcdTAwMjYgTC1xdWV1ZSBsZW4gXFx1MDAzZT0gbWluX3FsZW4gKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0MTU6XFx0XFx0ZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlYXBwbHlfc3RlcCA9IHNrYl9hcHBseV9zdGVwKHNrYiwgcSk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDE2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDMwLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzMTovKiBCeSBkZWZhdWx0LCBkdWFscGkyIHdpbGwgc3BsaXQgR1NPIHNrYnMgaW50byBpbmRlcGVuZGVudCBza2JzIGFuZCBlbnF1ZXVlXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDMyLSAqIGVhY2ggb2YgdGhvc2UgaW5kaXZpZHVhbGx5LiBUaGlzIHlpZWxkcyB0aGUgZm9sbG93aW5nIGJlbmVmaXRzLCBhdCB0aGVcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQzOC0gKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Mzk6c3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQwLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQxLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0NDI6XFx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDMtXFx0aW50IGVycjtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDQtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDQ1OlxcdGVyciA9IGR1YWxwaTJfc2tiX2NsYXNzaWZ5KHEsIHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQ2LVxcdGlmIChlcnIgIT0gTkVUX1hNSVRfU1VDQ0VTUykge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDcyLVxcdFxcdFxcdCAqICgyKSBDb3B5IGNsYXNzaWZpZWQgYW5kIGVjdCB2YWx1ZXMgb2YgYW4gc2tiXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDczOlxcdFxcdFxcdCAqICgzKSBFbnF1ZXVlIGZyYWdtZW50IFxcdTAwMjYgc2V0IHRzIGluIGR1YWxwaTJfZW5xdWV1ZV9za2JcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NzQtXFx0XFx0XFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NzYtXFx0XFx0XFx0cWRpc2Nfc2tiX2NiKG5za2IpLVxcdTAwM2Vwa3Rfc2VncyA9IDE7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDc3OlxcdFxcdFxcdGR1YWxwaTJfc2tiX2NiKG5za2IpLVxcdTAwM2VjbGFzc2lmaWVkID1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzg6XFx0XFx0XFx0XFx0ZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlY2xhc3NpZmllZDtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzk6XFx0XFx0XFx0ZHVhbHBpMl9za2JfY2IobnNrYiktXFx1MDAzZWVjdCA9IGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWVjdDtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0ODA6XFx0XFx0XFx0ZXJyID0gZHVhbHBpMl9lbnF1ZXVlX3NrYihuc2tiLCBzY2gsIHRvX2ZyZWUpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQ4MS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUwMC1cXHR9XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTAxOlxcdHJldHVybiBkdWFscGkyX2VucXVldWVfc2tiKHNrYiwgc2NoLCB0b19mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01MDItfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NTE0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZGVxdWV1ZV9wYWNrZXQoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTE1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTE2LVxcdFxcdFxcdFxcdCAgICAgIGludCAqY3JlZGl0X2NoYW5nZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUzOC1cXHR9IGVsc2Uge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjUzOTpcXHRcXHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDAtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDctXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTQ4OnN0YXRpYyBpbnQgZG9fc3RlcF9hcW0oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDktXFx0XFx0ICAgICAgIHU2NCBub3cpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NTUtXFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1NjpcXHRcXHRxZGVsYXkgPSBkdWFscGkyX3Nvam91cm5fdGltZShza2IsIG5vdyk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTU3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1ODpcXHRpZiAoZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlYXBwbHlfc3RlcCBcXHUwMDI2XFx1MDAyNiBxZGVsYXkgXFx1MDAzZSBxLVxcdTAwM2VzdGVwX3RocmVzaCkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1OTpcXHRcXHRpZiAoIWR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWVjdCkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU2MC1cXHRcXHRcXHQvKiBEcm9wIHRoaXMgbm9uLUVDVCBwYWNrZXQgKi9cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU2My1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NjQ6XFx0XFx0aWYgKGR1YWxwaTJfbWFyayhxLCBza2IpKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU2NS1cXHRcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXN0ZXBfbWFya3MsIHEtXFx1MDAzZXN0ZXBfbWFya3MgKyAxKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU3MC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NzE6c3RhdGljIHZvaWQgZHJvcF9hbmRfcmV0cnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NzItXFx0XFx0XFx0ICAgc3RydWN0IFFkaXNjICpzY2gsIGVudW0gcWRpc2NfZHJvcF9yZWFzb24gcmVhc29uKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTc5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU4MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKl9fZHVhbHBpMl9xZGlzY19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU4MS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTgyOlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTgzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MDktXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjEwOnN0YXRpYyB2b2lkIGR1YWxwaTJfZGVxdWV1ZV9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYxMS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjEyOlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjEzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjIxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjYyMjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmR1YWxwaTJfcWRpc2NfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MjMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjI1LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjYyNjpcXHRza2IgPSBfX2R1YWxwaTJfcWRpc2NfZGVxdWV1ZShzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYyNy1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2Mjg6XFx0ZHVhbHBpMl9kZXF1ZXVlX2Ryb3Aoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzItXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjMzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHVhbHBpMl9wZWVrKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYzNC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzctXFx0aWYgKCFza2IpIHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2Mzg6XFx0XFx0c2tiID0gX19kdWFscGkyX3FkaXNjX2RlcXVldWUoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NDYtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjQ3OlxcdFxcdGR1YWxwaTJfZGVxdWV1ZV9kcm9wKHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjQ4LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTY1Mz1zdGF0aWMgczY0IF9fc2NhbGVfZGVsdGEodTY0IGRpZmYpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NTgtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjU5OnN0YXRpYyB2b2lkIGdldF9xdWV1ZV9kZWxheXMoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTY0ICpxZGVsYXlfYyxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NjAtXFx0XFx0XFx0ICAgICB1NjQgKnFkZWxheV9sKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NjcyPXN0YXRpYyB1MzIgY2FsY3VsYXRlX3Byb2JhYmlsaXR5KHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTY3My17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Njc0OlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjc1LVxcdHUzMiBuZXdfcHJvYjtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTczMz1zdGF0aWMgdTMyIGNvbnZlcnRfbnNfdG9fdXNlYyh1NjQgbnMpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzQyOnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBkdWFscGkyX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDMte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc0NDpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gdGltZXJfY29udGFpbmVyX29mKHEsIHRpbWVyLCBwaTJfdGltZXIpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc0NS1cXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXFx1MDAzZXNjaDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc1OS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NjA6c3RhdGljIHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gZHVhbHBpMl9hbHBoYV9iZXRhX3JhbmdlID0ge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2MS1cXHQubWluID0gMSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2NC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCArIDFdID0ge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2Ni1cXHRbVENBX0RVQUxQSTJfTElNSVRdXFx0XFx0PSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc3MC1cXHRbVENBX0RVQUxQSTJfQUxQSEFdXFx0XFx0PVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc3MTpcXHRcXHROTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1UzMiwgXFx1MDAyNmR1YWxwaTJfYWxwaGFfYmV0YV9yYW5nZSksXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzcyLVxcdFtUQ0FfRFVBTFBJMl9CRVRBXVxcdFxcdD1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NzM6XFx0XFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VMzIsIFxcdTAwMjZkdWFscGkyX2FscGhhX2JldGFfcmFuZ2UpLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc3NC1cXHRbVENBX0RVQUxQSTJfU1RFUF9USFJFU0hfUEtUU11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTAtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzkxOnN0YXRpYyBpbnQgZHVhbHBpMl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTItXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTQtXFx0c3RydWN0IG5sYXR0ciAqdGJbVENBX0RVQUxQSTJfTUFYICsgMV07XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Nzk1OlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnE7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk2LVxcdGludCBvbGRfYmFja2xvZztcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTgwMy1cXHR9XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODA0OlxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRDQV9EVUFMUEkyX01BWCwgb3B0LCBkdWFscGkyX3BvbGljeSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MDUtXFx0XFx0XFx0ICAgICAgIGV4dGFjayk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04NDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODQyOlxcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlcGkyX2FscGhhLCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoYWxwaGEpKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04NDMtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODQ3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjg0ODpcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXBpMl9iZXRhLCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoYmV0YSkpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg0OS1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04ODctXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODg4OlxcdFxcdGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzY2gsIHEsIHdjKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04ODktXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTQ0LS8qIERlZmF1bHQgYWxwaGEvYmV0YSB2YWx1ZXMgZ2l2ZSBhIDEwZEIgc3RhYmlsaXR5IG1hcmdpbiB3aXRoIG1heF9ydHQ9MTAwbXMuICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTQ1OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfZGVmYXVsdChzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NDYte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk0NzpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk0OC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk1My1cXHRxLVxcdTAwM2VwaTJfdHVwZGF0ZSA9IDE2ICogTlNFQ19QRVJfTVNFQztcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NTQ6XFx0cS1cXHUwMDNlcGkyX2FscGhhID0gZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKDQxKTtcXHQvKiB+MC4xNiBIeiAqIDI1NiAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk1NTpcXHRxLVxcdTAwM2VwaTJfYmV0YSA9IGR1YWxwaTJfc2NhbGVfYWxwaGFfYmV0YSg4MTkpO1xcdC8qIH4zLjIwIEh6ICogMjU2ICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTU2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTU5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk2MDpcXHRkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24ocS1cXHUwMDNlc2NoLCBxLCAxMCk7XFx0Lyogd2M9MTAlLCB3bD05MCUgKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NjEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NjktXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTcwOnN0YXRpYyBpbnQgZHVhbHBpMl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTcxLVxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NzIte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3MzpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3NC1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc2LVxcdHNjaC1cXHUwMDNlZmxhZ3MgfD0gVENRX0ZfREVRVUVVRV9EUk9QUztcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5Nzc6XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2cS1cXHUwMDNlcGkyX3RpbWVyLCBkdWFscGkyX3RpbWVyLCBDTE9DS19NT05PVE9OSUMsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc4LVxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9BQlNfUElOTkVEX1NPRlQpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTg5LVxcdHEtXFx1MDAzZXNjaCA9IHNjaDtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5OTA6XFx0ZHVhbHBpMl9yZXNldF9kZWZhdWx0KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTkxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5Mi1cXHRpZiAob3B0IFxcdTAwMjZcXHUwMDI2IG5sYV9sZW4ob3B0KSkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk5MzpcXHRcXHRlcnIgPSBkdWFscGkyX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTQtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDAzLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwMDQ6c3RhdGljIGludCBkdWFscGkyX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAwNS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAwNjpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwMDctXFx0c3RydWN0IG5sYXR0ciAqb3B0cztcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwMjYtXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfQUxQSEEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAyNzpcXHRcXHRcXHRkdWFscGkyX3Vuc2NhbGVfYWxwaGFfYmV0YShSRUFEX09OQ0UocS1cXHUwMDNlcGkyX2FscGhhKSkpIHx8XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAyOC1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBUQ0FfRFVBTFBJMl9CRVRBLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwMjk6XFx0XFx0XFx0ZHVhbHBpMl91bnNjYWxlX2FscGhhX2JldGEoUkVBRF9PTkNFKHEtXFx1MDAzZXBpMl9iZXRhKSkpIHx8XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAzMC1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBUQ0FfRFVBTFBJMl9TVEVQX1RIUkVTSF9QS1RTLCBzdGVwX3RoKSB8fFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA1My1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBUQ0FfRFVBTFBJMl9BTFBIQSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDU0OlxcdFxcdFxcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVxcdTAwM2VwaTJfYWxwaGEpKSkgfHxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDU1LVxcdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX0JFVEEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTA1NjpcXHRcXHRcXHRkdWFscGkyX3Vuc2NhbGVfYWxwaGFfYmV0YShSRUFEX09OQ0UocS1cXHUwMDNlcGkyX2JldGEpKSkgfHxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDU3LVxcdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX1NURVBfVEhSRVNIX1VTLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA3OS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDgwOnN0YXRpYyBpbnQgZHVhbHBpMl9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwODEte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwODI6XFx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDgzOlxcdHN0cnVjdCB0Y19kdWFscGkyX3hzdGF0cyBzdCA9IHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDg0LVxcdFxcdC5wcm9iXFx0XFx0XFx0PSBSRUFEX09OQ0UocS1cXHUwMDNlcGkyX3Byb2IpLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEwNi0gKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTA3OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXQoc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEwOC17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEwOTpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMTAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTIyLVxcdFdSSVRFX09OQ0UocS1cXHUwMDNlbWF4X21lbW9yeV91c2VkLCAwKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTIzOlxcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjQtfVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjUtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEyNjpzdGF0aWMgdm9pZCBkdWFscGkyX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEyNy17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEyODpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTM2LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMzc6c3RhdGljIHN0cnVjdCBRZGlzYyAqZHVhbHBpMl9sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGFyZylcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTM4LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE0MjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkdWFscGkyX2ZpbmQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNDMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE0Ni1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTQ3OnN0YXRpYyB1bnNpZ25lZCBsb25nIGR1YWxwaTJfYmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBwYXJlbnQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE0OC1cXHRcXHRcXHRcXHQgIHUzMiBjbGFzc2lkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1Mi1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTUzOnN0YXRpYyB2b2lkIGR1YWxwaTJfdW5iaW5kKHN0cnVjdCBRZGlzYyAqcSwgdW5zaWduZWQgbG9uZyBjbClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTU0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNTYtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE1NzpzdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqZHVhbHBpMl90Y2ZfYmxvY2soc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE2MDpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNjEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTY2LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNjc6c3RhdGljIHZvaWQgZHVhbHBpMl93YWxrKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICphcmcpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE2OC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTg4LS8qIE1pbmltYWwgY2xhc3Mgc3VwcG9ydCB0byBoYW5kbGUgdGMgZmlsdGVycyAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExODk6c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgZHVhbHBpMl9jbGFzc19vcHMgPSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5MDpcXHQubGVhZlxcdFxcdD0gZHVhbHBpMl9sZWFmLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTE6XFx0LmZpbmRcXHRcXHQ9IGR1YWxwaTJfZmluZCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTkyOlxcdC50Y2ZfYmxvY2tcXHQ9IGR1YWxwaTJfdGNmX2Jsb2NrLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTM6XFx0LmJpbmRfdGNmXFx0PSBkdWFscGkyX2JpbmQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5NDpcXHQudW5iaW5kX3RjZlxcdD0gZHVhbHBpMl91bmJpbmQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5NTpcXHQud2Fsa1xcdFxcdD0gZHVhbHBpMl93YWxrLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExOTYtfTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTk3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZHVhbHBpMl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTk5OlxcdC5pZFxcdFxcdD0gXFxcImR1YWxwaTJcXFwiLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDA6XFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNmR1YWxwaTJfY2xhc3Nfb3BzLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDE6XFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEpLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDI6XFx0LmVucXVldWVcXHQ9IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjAzOlxcdC5kZXF1ZXVlXFx0PSBkdWFscGkyX3FkaXNjX2RlcXVldWUsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwNDpcXHQucGVla1xcdFxcdD0gZHVhbHBpMl9wZWVrLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDU6XFx0LmluaXRcXHRcXHQ9IGR1YWxwaTJfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA2OlxcdC5kZXN0cm95XFx0PSBkdWFscGkyX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwNzpcXHQucmVzZXRcXHRcXHQ9IGR1YWxwaTJfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwODpcXHQuY2hhbmdlXFx0XFx0PSBkdWFscGkyX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA5OlxcdC5kdW1wXFx0XFx0PSBkdWFscGkyX2R1bXAsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMDpcXHQuZHVtcF9zdGF0c1xcdD0gZHVhbHBpMl9kdW1wX3N0YXRzLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTEtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjEyLX07XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMzpNT0RVTEVfQUxJQVNfTkVUX1NDSChcXFwiZHVhbHBpMlxcXCIpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTQtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxNTpzdGF0aWMgaW50IF9faW5pdCBkdWFscGkyX21vZHVsZV9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIxNi17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxNzpcXHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmR1YWxwaTJfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE4LX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjA6c3RhdGljIHZvaWQgX19leGl0IGR1YWxwaTJfbW9kdWxlX2V4aXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIxLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjIyOlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmR1YWxwaTJfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIzLX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjI0LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjU6bW9kdWxlX2luaXQoZHVhbHBpMl9tb2R1bGVfaW5pdCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyNjptb2R1bGVfZXhpdChkdWFscGkyX21vZHVsZV9leGl0KTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjI3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjg6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJEdWFsIFF1ZXVlIHdpdGggUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgSW1wcm92ZWQgd2l0aCBhIFNxdWFyZSAoZHVhbHBpMikgc2NoZWR1bGVyXFxcIik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyOS1NT0RVTEVfQVVUSE9SKFxcXCJLb2VuIERlIFNjaGVwcGVyIFxcdTAwM2Nrb2VuLmRlX3NjaGVwcGVyQG5va2lhLWJlbGwtbGFicy5jb21cXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDE1OjMxOjAyLjI0ODQ4NjgzNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDEzNDQ1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTY2hlZHVsZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYSBmaXggcmVsYXRlZCB0byBiYWNrbG9nIGFjY291bnRpbmcgd2hlbiBHU08gcGFja2V0cyBhcmUgZW5xdWV1ZWQgaW4gdGhlIGBkdWFscGkyYCBxZGlzYy4gVGhlIGNvbmZpZyBvcHRpb24gaXMgYE5FVF9TQ0hfRFVBTFBJMmAsIGFuZCB0aGUgZnVuY3Rpb24gZGlyZWN0bHkgYWZmZWN0ZWQgaXMgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciwgYW5kIHRoZSBwYXRoIHRvIHRoaXMgY29kZSBpcyBzdHJhaWdodGZvcndhcmQ6IGBkdWFscGkyX3FkaXNjX2VucXVldWVgICppcyogdGhlIGAuZW5xdWV1ZWAgY2FsbGJhY2sgZm9yIHRoZSBgZHVhbHBpMmAgcWRpc2MuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSBpc3N1ZXMgaW4gcGFja2V0IHNjaGVkdWxpbmcgYW5kIGFjY291bnRpbmcsIHRoaXMgaXMgKmFic29sdXRlbHkqIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgZGVwZW5kZW5jaWVzLiBUaGUgdGVzdCBlbnZpcm9ubWVudCBtZW50aW9ucyB0aGUgYHFmcWAgcWRpc2MgYXMgYSBwYXJlbnQuIFRoZSBhc3NvY2lhdGVkIGNvbmZpZyBvcHRpb24gdGhlcmUgaXMgYE5FVF9TQ0hfUUZRYC4gVGhvdWdoIHRoZSBjb2RlIGNoYW5nZXMgYXJlIGxvY2FsaXplZCB0byBgc2NoX2R1YWxwaTIuY2AsIHNvIGBORVRfU0NIX0RVQUxQSTJgIGlzIHRoZSBjcml0aWNhbCBvcHRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgTkVUX1NDSF9RRlFgIGlzbid0IGFjY2lkZW50YWxseSBhbHNvIHJlcXVpcmVkLCBldmVuIGluZGlyZWN0bHksIHRvIGF2b2lkIG1pc3NpbmcgYW55IGhpZGRlbiBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzMjEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMTU6MzE6MDcuMjQ5ODMzODU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTUwMzExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfU0NIX1FGUVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTI0ND1jb25maWcgTkVUX1NDSF9DSE9LRVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjU0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI1NTpjb25maWcgTkVUX1NDSF9RRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTYtXFx0dHJpc3RhdGUgXFxcIlF1aWNrIEZhaXIgUXVldWVpbmcgc2NoZWR1bGVyIChRRlEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVxcdCs9IHNjaF9jaG9rZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19ORVRfU0NIX1FGUSlcXHQrPSBzY2hfcWZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNTUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXFx0Kz0gc2NoX2NvZGVsLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMTU6MzE6MDcuMzg5MzQ0NTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMDc1NzgwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIER1YWxQSTIgU2NoZWR1bGVyIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYGR1YWxwaTJgIHNjaGVkdWxlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGluY2x1ZGUgYE5FVF9TQ0hfRFVBTFBJMmAgYW5kIGBORVRfU0NIX1FGUWAgaW4gYEVuYWJsZUNvbmZpZ3NgLCBhcyB0aGUgdGVzdCBjYXNlIHVzZXMgdGhlbSwgYnV0IGxldCdzIGJlIHByZWNpc2UuIFRoZSBtYWluIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGlzIGBkdWFscGkyX3FkaXNjX2VucXVldWVgLiBJJ3ZlIHZlcmlmaWVkIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIGRpcmVjdGx5IHRvdWNoZWQgYnkgdGhlIHBhdGNoLlxuXG5Ob3csIGEgY2xvc2VyIGxvb2sgYXQgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAsIHNwZWNpZmljYWxseSBpbiBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgLCByZXZlYWxzIGl0IGNhbGxzIHNldmVyYWwgb3RoZXIgZnVuY3Rpb25zOiBgZHVhbHBpMl9za2JfY2xhc3NpZnlgLCBgc2tiX2dzb19zZWdtZW50YCwgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLCBgY29uc3VtZV9za2JgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZV9za2JgLiBUaGUga2V5IGNoYW5nZSBjZW50ZXJzIGFyb3VuZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuXG5cblRoaXMgaXMgYSB2ZXJ5IHNwZWNpZmljIGZpeCB3aXRoaW4gdGhlIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGZ1bmN0aW9uLCBkZWFsaW5nIHdpdGggR1NPIHBhY2tldCBlbnF1ZXVlaW5nLiBUaGlzIG1lYW5zIHRoaXMgaXMgd29ydGggZnV6emluZywgYW5kIEkgc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBJIGNhbiBhbHNvIGRlZmluZSBgRm9jdXNTeW1ib2xzYCB0byBgW1wiZHVhbHBpMl9xZGlzY19lbnF1ZXVlXCJdYC5cblxuSW5pdGlhbGx5LCBJIGhhZCB0aG91Z2h0IHRvIGluY2x1ZGUgYE5FVF9TQ0hfUUZRYCwgYXMgdGhlIHRlc3QgdXNlcyBpdC4gQnV0IHRoZSBidWcgaXMgaW4gYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgYW5kIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYCwgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYSBxZGlzYyBpcyBhIGNoaWxkIG9mIGFub3RoZXIgcWRpc2MgKGNsYXNzZnVsIHFkaXNjKS4gYGR1YWxwaTJgIGl0c2VsZiBpcyBhIGNsYXNzbGVzcyBxZGlzYywgYnV0IGl0IGNhbiBiZSBhdHRhY2hlZCB0byBhIGNsYXNzZnVsIHFkaXNjIGxpa2UgYHFmcWAsIGBodGJgLCBgaGZzY2AsIGV0Yy4gQW55IGNsYXNzZnVsIHFkaXNjIHdvdWxkIHRyaWdnZXIgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgIGNvcnJlY3RseSBpZiBpdCBoYXMgYSBwYXJlbnQuIFNvIGBORVRfU0NIX0RVQUxQSTJgIGlzIHRoZSBtYWluIG9uZS4gSSBjYW4gYWxzbyBhZGQgYE5FVF9TQ0hfUUZRYCBzaW5jZSB0aGUgdGVzdCB1c2VzIGl0LCBidXQgSSdsbCBzdGljayB3aXRoIG9ubHkgYE5FVF9TQ0hfRFVBTFBJMmAgdG8gYmUgYXMgZm9jdXNlZCBhcyBwb3NzaWJsZS5cblxuUXVpY2sgY2hlY2sgY29uZmlybXMgYGR1YWxwaTJgIGRlcGVuZHMgb24gYE5FVF9TQ0hFRGAsIGJ1dCB0aGF0IHNob3VsZCBiZSBpbXBsaWNpdGx5IGhhbmRsZWQuIEknbSBnb2luZyB0byBzZXQgYEVuYWJsZUNvbmZpZ3NgIHRvIGp1c3QgYFtcIk5FVF9TQ0hfRFVBTFBJMlwiXWAuXG5cbkluIHN1bW1hcnksIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIGZvciB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaXQgZGVhbHMgd2l0aCBHU08gcGFja2V0cy4gSXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGFuZCB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBzbyBJIG5lZWQgdG8gZnV6eiBpdCB0byBtYWtlIHN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgdGhhdCBpdCBkb2Vzbid0IGNhdXNlIHVuZGVyZmxvd3Mgb3Igb3RoZXIgcmVsYXRlZCBpc3N1ZXMuIEl0J3MgYSBwcmVjaXNlIGZpeCwgd29ydGggcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0by4gSSdtIHJlYWR5IHRvIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk4MCwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMTU6MzE6MTkuNjk2OTI1ODU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI5NTYyOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR1YWxwaTJfcWRpc2NfZW5xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBiYWNrbG9nIGFjY291bnRpbmcgb2YgdGhlIGBkdWFscGkyYCBuZXR3b3JrIHNjaGVkdWxlciB3aGVuIGhhbmRsaW5nIEdTTyBwYWNrZXRzLiBJdCBtb2RpZmllcyB0aGUgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgZnVuY3Rpb24gdG8gY29ycmVjdGx5IGNhbGN1bGF0ZSBhbmQgcmVkdWNlIHRoZSBiYWNrbG9nIHVzaW5nIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhY2NvdW50aW5nIGlzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkdWFscGkyX3FkaXNjX2VucXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIG9mIHRoZSBgZHVhbHBpMmAgbmV0d29yayBzY2hlZHVsZXIgd2hlbiBoYW5kbGluZyBHU08gcGFja2V0cy4gSXQgbW9kaWZpZXMgdGhlIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGZ1bmN0aW9uIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgYW5kIHJlZHVjZSB0aGUgYmFja2xvZyB1c2luZyBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYWNjb3VudGluZyBpcyBjb3JyZWN0IGFuZCBkb2Vzbid0IGxlYWQgdG8gdW5kZXJmbG93cyBvciBvdGhlciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-19 15:21:33 +0000 UTC FinishedAt: 2026-06-19 15:31:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_DUALPI2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_DUALPI2" ], "series_id": "705198b8-e29d-4882-bfba-d0675edb871b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dualpi2_qdisc_enqueue" ], "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+CgkJCTx0ZD4yMDI2LzA2LzE5IDE1OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2R1YWxwaTJfcWRpc2NfZW5xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIG9mIHRoZSBgZHVhbHBpMmAgbmV0d29yayBzY2hlZHVsZXIgd2hlbiBoYW5kbGluZyBHU08gcGFja2V0cy4gSXQgbW9kaWZpZXMgdGhlIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGZ1bmN0aW9uIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgYW5kIHJlZHVjZSB0aGUgYmFja2xvZyB1c2luZyBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYWNjb3VudGluZyBpcyBjb3JyZWN0IGFuZCBkb2VzbiYjMzk7dCBsZWFkIHRvIHVuZGVyZmxvd3Mgb3Igb3RoZXIgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDE1OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTA5OTdiNzRmYzNlOGQxNGI5ZWUwZTg3M2YzOTQ2YzdiNGJkNGJlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDE5IDE1OjMwOjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbmluZGV4IGQ3YzMyNTRlZjgwMGY4Li41NDM0ZGY2Y2E4ZWZlNiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuQEAgLTQ2MSw3ICYjNDM7NDYxLDcgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGlmIChJU19FUlJfT1JfTlVMTChuc2tiKSlcbiBcdFx0XHRyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7XG4gXG4tXHRcdGNudCA9IDE7XG4mIzQzO1x0XHRjbnQgPSAwO1xuIFx0XHRieXRlX2xlbiA9IDA7XG4gXHRcdG9yaWdfbGVuID0gcWRpc2NfcGt0X2xlbihza2IpO1xuIFx0XHRza2JfbGlzdF93YWxrX3NhZmUobnNrYiwgbnNrYiwgbmV4dCkge1xuQEAgLTQ4OCwxNiAmIzQzOzQ4OCwxNSBAQCBzdGF0aWMgaW50IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdGJ5dGVfbGVuICYjNDM7PSBuc2tiLVx1MDAzZWxlbjtcbiBcdFx0XHR9XG4gXHRcdH1cbi1cdFx0aWYgKGNudCBcdTAwM2UgMSkge1xuJiM0MztcdFx0aWYgKGNudCBcdTAwM2UgMCkge1xuIFx0XHRcdC8qIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIG9yaWdpbmFsIHNrYiBzdGF0cyB0byBpdHNcbiBcdFx0XHQgKiBiYWNrbG9nLCBjb21wZW5zYXRlIHRoaXMgaWYgYW55IG5za2IgaXMgZW5xdWV1ZWQuXG4gXHRcdFx0ICovXG4tXHRcdFx0LS1jbnQ7XG4tXHRcdFx0Ynl0ZV9sZW4gLT0gb3JpZ19sZW47XG4mIzQzO1x0XHRcdHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAxIC0gY250LFxuJiM0MztcdFx0XHRcdFx0XHQgIG9yaWdfbGVuIC0gYnl0ZV9sZW4pO1xuIFx0XHR9XG4tXHRcdHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAtY250LCAtYnl0ZV9sZW4pO1xuIFx0XHRjb25zdW1lX3NrYihza2IpO1xuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0cmV0dXJuIGNudCBcdTAwM2UgMCA/IE5FVF9YTUlUX1NVQ0NFU1MgOiBlcnI7XG4gXHR9XG4gXHRyZXR1cm4gZHVhbHBpMl9lbnF1ZXVlX3NrYihza2IsIHNjaCwgdG9fZnJlZSk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxuaW5kZXggY2QxZjJlZThmMzU0ZDYuLmVkNmE5MDBiYjU2OGY0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb25cbkBAIC0yNTAsNSAmIzQzOzI1MCw0OSBAQFxuICAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiAgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcJiMzNDtcbiAgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0Ozg5MWZcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7VmVyaWZ5IER1YWxQSTIgR1NPIGJhY2tsb2cgYWNjb3VudGluZyB3aXRoIFFGUSBwYXJlbnRcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cWRpc2NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2R1YWxwaTJcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3FmcVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7Z3NvXCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtwbHVnaW5zXCYjMzQ7OiB7XG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3JlcXVpcmVzXCYjMzQ7OiBcJiMzNDtuc1BsdWdpblwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdXAgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGFkZHIgYWRkIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHJvb3QgaGFuZGxlIDE6IHFmcVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JFRDIGNsYXNzIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBjbGFzc2lkIDE6MSBxZnEgd2VpZ2h0IDEgbWF4cGt0IDQwOTZcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBwYXJlbnQgMToxIGhhbmRsZSAyOiBkdWFscGkyXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBtYXRjaGFsbCBjbGFzc2lkIDE6MVwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDsuL3RkY19nc28ucHkgMTAuMTAuMTAuMTAgMTAuMTAuMTAuMSA5MDAwIDEyMDAgMjQwMFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyAtaiAtcyBxZGlzYyBscyBkZXYgJERVTU1ZXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoSlNPTlwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICB7XG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtraW5kXCYjMzQ7OiBcJiMzNDtxZnFcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtoYW5kbGVcJiMzNDs6IFwmIzM0OzE6XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7cGFja2V0c1wmIzM0OzogMixcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O2JhY2tsb2dcJiMzNDs6IDAsXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtxbGVuXCYjMzQ7OiAwXG4mIzQzOyAgICAgICAgICAgIH0sXG4mIzQzOyAgICAgICAgICAgIHtcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O2tpbmRcJiMzNDs6IFwmIzM0O2R1YWxwaTJcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtoYW5kbGVcJiMzNDs6IFwmIzM0OzI6XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgXCYjMzQ7cGFja2V0c1wmIzM0OzogMixcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O2JhY2tsb2dcJiMzNDs6IDAsXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtxbGVuXCYjMzQ7OiAwXG4mIzQzOyAgICAgICAgICAgIH1cbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSByb290XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskSVAgYWRkciBkZWwgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuICAgICB9XG4gXVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjX2dzby5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGRjX2dzby5weVxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iNjY1MjhlYTRiNjgwYVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XG5AQCAtMCwwICYjNDM7MSw0MyBAQFxuJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzO1wmIzM0O1wmIzM0O1wmIzM0O1xuJiM0Mzt0ZGNfZ3NvLnB5IC0gc2VuZCBhIFVEUCBHU08gZGF0YWdyYW1cbiYjNDM7XG4mIzQzO0NvcHlyaWdodCAoQykgMjAyNiBYaW5ncXVhbiBMaXUgXHUwMDNjYjFuQGIxbi5pb1x1MDAzZVxuJiM0MztcJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzO2ltcG9ydCBhcmdwYXJzZVxuJiM0MztpbXBvcnQgc29ja2V0XG4mIzQzO2ltcG9ydCBzdHJ1Y3RcbiYjNDM7aW1wb3J0IHN5c1xuJiM0MztcbiYjNDM7VURQX01BWF9TRUdNRU5UUyA9IDEgXHUwMDNjXHUwMDNjIDdcbiYjNDM7XG4mIzQzO1xuJiM0MztwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1cJiMzNDtVRFAgR1NPIGRhdGFncmFtIHNlbmRlclwmIzM0OylcbiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudChcJiMzNDtzcmNcJiMzNDssIGhlbHA9XCYjMzQ7c291cmNlIElQdjQgYWRkcmVzc1wmIzM0OylcbiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudChcJiMzNDtkc3RcJiMzNDssIGhlbHA9XCYjMzQ7ZGVzdGluYXRpb24gSVB2NCBhZGRyZXNzXCYjMzQ7KVxuJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KFwmIzM0O3BvcnRcJiMzNDssIHR5cGU9aW50LCBoZWxwPVwmIzM0O2Rlc3RpbmF0aW9uIFVEUCBwb3J0XCYjMzQ7KVxuJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KFwmIzM0O2dzb19zaXplXCYjMzQ7LCB0eXBlPWludCwgaGVscD1cJiMzNDtVRFAgR1NPIHNlZ21lbnQgcGF5bG9hZCBzaXplXCYjMzQ7KVxuJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KFwmIzM0O3BheWxvYWRfbGVuXCYjMzQ7LCB0eXBlPWludCwgaGVscD1cJiMzNDt0b3RhbCBVRFAgcGF5bG9hZCBsZW5ndGhcJiMzNDspXG4mIzQzO2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4mIzQzO1xuJiM0MztpZiBhcmdzLmdzb19zaXplIFx1MDAzYz0gMCBvciBhcmdzLmdzb19zaXplIFx1MDAzZSAweEZGRkY6XG4mIzQzOyAgICBwYXJzZXIuZXJyb3IoXCYjMzQ7Z3NvX3NpemUgbXVzdCBmaXQgaW4gYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcJiMzNDspXG4mIzQzO2lmIGFyZ3MucGF5bG9hZF9sZW4gXHUwMDNjPSBhcmdzLmdzb19zaXplOlxuJiM0MzsgICAgcGFyc2VyLmVycm9yKFwmIzM0O3BheWxvYWRfbGVuIG11c3QgYmUgbGFyZ2VyIHRoYW4gZ3NvX3NpemVcJiMzNDspXG4mIzQzO2lmIGFyZ3MucGF5bG9hZF9sZW4gXHUwMDNlIGFyZ3MuZ3NvX3NpemUgKiBVRFBfTUFYX1NFR01FTlRTOlxuJiM0MzsgICAgcGFyc2VyLmVycm9yKFwmIzM0O3BheWxvYWRfbGVuIGV4Y2VlZHMgVURQX01BWF9TRUdNRU5UU1wmIzM0OylcbiYjNDM7XG4mIzQzO1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgXCYjMzQ7U09MX1VEUFwmIzM0Oywgc29ja2V0LklQUFJPVE9fVURQKVxuJiM0MztVRFBfU0VHTUVOVCA9IGdldGF0dHIoc29ja2V0LCBcJiMzNDtVRFBfU0VHTUVOVFwmIzM0OywgMTAzKVxuJiM0MztcbiYjNDM7c29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKVxuJiM0Mztzb2NrLmJpbmQoKGFyZ3Muc3JjLCAwKSlcbiYjNDM7XG4mIzQzO3BheWxvYWQgPSBiXCYjMzQ7YlwmIzM0OyAqIGFyZ3MucGF5bG9hZF9sZW5cbiYjNDM7Y21zZyA9IFsoU09MX1VEUCwgVURQX1NFR01FTlQsIHN0cnVjdC5wYWNrKFwmIzM0Oz1IXCYjMzQ7LCBhcmdzLmdzb19zaXplKSldXG4mIzQzO1xuJiM0MztzZW50ID0gc29jay5zZW5kbXNnKFtwYXlsb2FkXSwgY21zZywgMCwgKGFyZ3MuZHN0LCBhcmdzLnBvcnQpKVxuJiM0MztzeXMuZXhpdChzZW50ICE9IGxlbihwYXlsb2FkKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkdWFscGkyX3FkaXNjX2VucXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGJhY2tsb2cgYWNjb3VudGluZyBvZiB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaGFuZGxpbmcgR1NPIHBhY2tldHMuIEl0IG1vZGlmaWVzIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGFuZCByZWR1Y2UgdGhlIGJhY2tsb2cgdXNpbmcgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgZG9lc24mIzM5O3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTA5OTdiNzRmYzNlOGQxNGI5ZWUwZTg3M2YzOTQ2YzdiNGJkNGJlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDE5IDE1OjMwOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwppbmRleCBkN2MzMjU0ZWY4MDBmOC4uNTQzNGRmNmNhOGVmZTYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCkBAIC00NjEsNyAmIzQzOzQ2MSw3IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLAogCQlpZiAoSVNfRVJSX09SX05VTEwobnNrYikpCiAJCQlyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7CiAKLQkJY250ID0gMTsKJiM0MzsJCWNudCA9IDA7CiAJCWJ5dGVfbGVuID0gMDsKIAkJb3JpZ19sZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7CiAJCXNrYl9saXN0X3dhbGtfc2FmZShuc2tiLCBuc2tiLCBuZXh0KSB7CkBAIC00ODgsMTYgJiM0Mzs0ODgsMTUgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsCiAJCQkJYnl0ZV9sZW4gJiM0Mzs9IG5za2ItJmd0O2xlbjsKIAkJCX0KIAkJfQotCQlpZiAoY250ICZndDsgMSkgewomIzQzOwkJaWYgKGNudCAmZ3Q7IDApIHsKIAkJCS8qIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIG9yaWdpbmFsIHNrYiBzdGF0cyB0byBpdHMKIAkJCSAqIGJhY2tsb2csIGNvbXBlbnNhdGUgdGhpcyBpZiBhbnkgbnNrYiBpcyBlbnF1ZXVlZC4KIAkJCSAqLwotCQkJLS1jbnQ7Ci0JCQlieXRlX2xlbiAtPSBvcmlnX2xlbjsKJiM0MzsJCQlxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKHNjaCwgMSAtIGNudCwKJiM0MzsJCQkJCQkgIG9yaWdfbGVuIC0gYnl0ZV9sZW4pOwogCQl9Ci0JCXFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAtY250LCAtYnl0ZV9sZW4pOwogCQljb25zdW1lX3NrYihza2IpOwotCQlyZXR1cm4gZXJyOwomIzQzOwkJcmV0dXJuIGNudCAmZ3Q7IDAgPyBORVRfWE1JVF9TVUNDRVNTIDogZXJyOwogCX0KIAlyZXR1cm4gZHVhbHBpMl9lbnF1ZXVlX3NrYihza2IsIHNjaCwgdG9fZnJlZSk7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb24KaW5kZXggY2QxZjJlZThmMzU0ZDYuLmVkNmE5MDBiYjU2OGY0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uCkBAIC0yNTAsNSAmIzQzOzI1MCw0OSBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290JiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ODkxZiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7VmVyaWZ5IER1YWxQSTIgR1NPIGJhY2tsb2cgYWNjb3VudGluZyB3aXRoIFFGUSBwYXJlbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2R1YWxwaTImIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3FmcSYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7Z3NvJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgbGluayBzZXQgZGV2ICREVU1NWSB1cCB8fCB0cnVlJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgYWRkciBhZGQgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgcm9vdCBoYW5kbGUgMTogcWZxJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgY2xhc3MgYWRkIGRldiAkRFVNTVkgcGFyZW50IDE6IGNsYXNzaWQgMToxIHFmcSB3ZWlnaHQgMSBtYXhwa3QgNDA5NiYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOjEgaGFuZGxlIDI6IGR1YWxwaTImIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiAkRFVNTVkgcGFyZW50IDE6IG1hdGNoYWxsIGNsYXNzaWQgMToxJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0Oy4vdGRjX2dzby5weSAxMC4xMC4xMC4xMCAxMC4xMC4xMC4xIDkwMDAgMTIwMCAyNDAwJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgLWogLXMgcWRpc2MgbHMgZGV2ICREVU1NWSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaEpTT04mIzM0OzogWwomIzQzOyAgICAgICAgICAgIHsKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtraW5kJiMzNDs6ICYjMzQ7cWZxJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7aGFuZGxlJiMzNDs6ICYjMzQ7MTomIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtwYWNrZXRzJiMzNDs6IDIsCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7YmFja2xvZyYjMzQ7OiAwLAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3FsZW4mIzM0OzogMAomIzQzOyAgICAgICAgICAgIH0sCiYjNDM7ICAgICAgICAgICAgewomIzQzOyAgICAgICAgICAgICAgICAmIzM0O2tpbmQmIzM0OzogJiMzNDtkdWFscGkyJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7aGFuZGxlJiMzNDs6ICYjMzQ7MjomIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgJiMzNDtwYWNrZXRzJiMzNDs6IDIsCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7YmFja2xvZyYjMzQ7OiAwLAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3FsZW4mIzM0OzogMAomIzQzOyAgICAgICAgICAgIH0KJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSByb290JiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgYWRkciBkZWwgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlJiMzNDsKJiM0MzsgICAgICAgIF0KICAgICB9CiBdCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkY19nc28ucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkY19nc28ucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI2NjUyOGVhNGI2ODBhCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5CkBAIC0wLDAgJiM0MzsxLDQzIEBACiYjNDM7IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0MzsmIzM0OyYjMzQ7JiMzNDsKJiM0Mzt0ZGNfZ3NvLnB5IC0gc2VuZCBhIFVEUCBHU08gZGF0YWdyYW0KJiM0MzsKJiM0MztDb3B5cmlnaHQgKEMpIDIwMjYgWGluZ3F1YW4gTGl1ICZsdDtiMW5AYjFuLmlvJmd0OwomIzQzOyYjMzQ7JiMzNDsmIzM0OwomIzQzOwomIzQzO2ltcG9ydCBhcmdwYXJzZQomIzQzO2ltcG9ydCBzb2NrZXQKJiM0MztpbXBvcnQgc3RydWN0CiYjNDM7aW1wb3J0IHN5cwomIzQzOwomIzQzO1VEUF9NQVhfU0VHTUVOVFMgPSAxICZsdDsmbHQ7IDcKJiM0MzsKJiM0MzsKJiM0MztwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0mIzM0O1VEUCBHU08gZGF0YWdyYW0gc2VuZGVyJiMzNDspCiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudCgmIzM0O3NyYyYjMzQ7LCBoZWxwPSYjMzQ7c291cmNlIElQdjQgYWRkcmVzcyYjMzQ7KQomIzQzO3BhcnNlci5hZGRfYXJndW1lbnQoJiMzNDtkc3QmIzM0OywgaGVscD0mIzM0O2Rlc3RpbmF0aW9uIElQdjQgYWRkcmVzcyYjMzQ7KQomIzQzO3BhcnNlci5hZGRfYXJndW1lbnQoJiMzNDtwb3J0JiMzNDssIHR5cGU9aW50LCBoZWxwPSYjMzQ7ZGVzdGluYXRpb24gVURQIHBvcnQmIzM0OykKJiM0MztwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzQ7Z3NvX3NpemUmIzM0OywgdHlwZT1pbnQsIGhlbHA9JiMzNDtVRFAgR1NPIHNlZ21lbnQgcGF5bG9hZCBzaXplJiMzNDspCiYjNDM7cGFyc2VyLmFkZF9hcmd1bWVudCgmIzM0O3BheWxvYWRfbGVuJiMzNDssIHR5cGU9aW50LCBoZWxwPSYjMzQ7dG90YWwgVURQIHBheWxvYWQgbGVuZ3RoJiMzNDspCiYjNDM7YXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKJiM0MzsKJiM0MztpZiBhcmdzLmdzb19zaXplICZsdDs9IDAgb3IgYXJncy5nc29fc2l6ZSAmZ3Q7IDB4RkZGRjoKJiM0MzsgICAgcGFyc2VyLmVycm9yKCYjMzQ7Z3NvX3NpemUgbXVzdCBmaXQgaW4gYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXImIzM0OykKJiM0MztpZiBhcmdzLnBheWxvYWRfbGVuICZsdDs9IGFyZ3MuZ3NvX3NpemU6CiYjNDM7ICAgIHBhcnNlci5lcnJvcigmIzM0O3BheWxvYWRfbGVuIG11c3QgYmUgbGFyZ2VyIHRoYW4gZ3NvX3NpemUmIzM0OykKJiM0MztpZiBhcmdzLnBheWxvYWRfbGVuICZndDsgYXJncy5nc29fc2l6ZSAqIFVEUF9NQVhfU0VHTUVOVFM6CiYjNDM7ICAgIHBhcnNlci5lcnJvcigmIzM0O3BheWxvYWRfbGVuIGV4Y2VlZHMgVURQX01BWF9TRUdNRU5UUyYjMzQ7KQomIzQzOwomIzQzO1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgJiMzNDtTT0xfVURQJiMzNDssIHNvY2tldC5JUFBST1RPX1VEUCkKJiM0MztVRFBfU0VHTUVOVCA9IGdldGF0dHIoc29ja2V0LCAmIzM0O1VEUF9TRUdNRU5UJiMzNDssIDEwMykKJiM0MzsKJiM0Mztzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pCiYjNDM7c29jay5iaW5kKChhcmdzLnNyYywgMCkpCiYjNDM7CiYjNDM7cGF5bG9hZCA9IGImIzM0O2ImIzM0OyAqIGFyZ3MucGF5bG9hZF9sZW4KJiM0MztjbXNnID0gWyhTT0xfVURQLCBVRFBfU0VHTUVOVCwgc3RydWN0LnBhY2soJiMzNDs9SCYjMzQ7LCBhcmdzLmdzb19zaXplKSldCiYjNDM7CiYjNDM7c2VudCA9IHNvY2suc2VuZG1zZyhbcGF5bG9hZF0sIGNtc2csIDAsIChhcmdzLmRzdCwgYXJncy5wb3J0KSkKJiM0MztzeXMuZXhpdChzZW50ICE9IGxlbihwYXlsb2FkKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMTU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgYHNjaF9kdWFscGkyYCBCYWNrbG9nIEFjY291bnRpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX2R1YWxwaTIuY2AgYW5kIGFkZGluZyBhIHRlc3QgZm9yIGl0IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2AuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYSBidWcgZml4IGFuZCBhIGNvcnJlc3BvbmRpbmcgdGVzdCBjYXNlLCB3aGljaCBpcyBnb29kIHByYWN0aWNlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIGBkdWFscGkyX3FkaXNjX2VucXVldWVgLCBhbmQgdGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGJhY2tsb2cgYWNjb3VudGluZyBmb3IgR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCAoR1NPKSBwYWNrZXRzLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgR1NPIG9mdGVuIGhhcyBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCB0cmFmZmljIGNvbnRyb2wuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkaWZmLiAgQWgsIGl0IHNlZW1zIHdlIGhhdmUgYSByZWR1Y3Rpb24gaW4gYGNudGAgYW5kIGEgY29ycmVzcG9uZGluZyBhZGp1c3RtZW50IHRvIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBjb3JyZWN0aW5nIGFuIGlzc3VlIHdoZXJlIEdTTyBwYWNrZXRzIHdlcmVuJiMzOTt0IGJlaW5nIGFjY291bnRlZCBmb3IgY29ycmVjdGx5IHdoZW4gdGhlaXIgaW50ZXJuYWwgc2VnbWVudHMgYXJlIHByb2Nlc3NlZC4gV2UmIzM5O3JlIG5vdyBjb3JyZWN0bHkgZGVjcmVtZW50aW5nIHRoZSBiYWNrbG9nLiBQcmV2aW91c2x5LCB0aGUgb3JpZ2luYWwgYHNrYmAgc3RhdGlzdGljcyB3ZXJlIGJlaW5nIGluY29ycmVjdGx5IGFkanVzdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNvcnJlY3Rpb24sIHRoZSBjb21tZW50IG1ha2VzIHRoaXMgYWJ1bmRhbnRseSBjbGVhci4KClRoZSBrZXkgY2hhbmdlIGlzIGFyb3VuZCBsaW5lcyA0NjEgdG8gNDg4LiBJIGNhbiBzZWUgdGhlIGFkanVzdG1lbnQgdG8gYmFja2xvZyByZWR1Y3Rpb24gYmFzZWQgb24gdGhlIGxlbmd0aCBvZiBlYWNoIHNlZ21lbnRlZCBwYWNrZXQgYW5kIHRoZSBvcmlnaW5hbCBwYWNrZXQuIFNvIGl0JiMzOTtzIGFib3V0IGNvcnJlY3RpbmcgaG93IHRoZSBiYWNrbG9nIGlzIGFkanVzdGVkIGZvciB0aGUgb3JpZ2luYWwgcGFja2V0IGFmdGVyIGl0cyBHU08gc2VnbWVudHMgaGF2ZSBiZWVuIGhhbmRsZWQuICBJdCBhcHBlYXJzIHRvIGZpeCBhbiBhY2NvdW50aW5nIGVycm9yIGZvciBHU08gcGFja2V0cywgcHJldmVudGluZyBpbmZsYXRlZCBvciBkZWZsYXRlZCBiYWNrbG9nIHZhbHVlcyBpbiB0aGUgYHNjaF9kdWFscGkyYCBxZGlzYy4gVGhlIGFkZGl0aW9uIG9mIHRoZSBjb25kaXRpb25hbCBgY250ICZndDsgMCA/IE5FVF9YTUlUX1NVQ0NFU1MgOiBlcnJgIG1ha2VzIHNlbnNlIGluIHRoaXMgY29udGV4dC4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIsIEkmIzM5O2QgbGlrZSB0byBsb29rIGF0IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBgc2NoX2R1YWxwaTJgIFFkaXNjLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciB0aGVtIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdXNpbmcgYGdyZXBwZXJgIGp1c3QgdG8gZ2V0IGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhpcyBpcyBlbmFibGVkLCBhbmQgYW55IHBvc3NpYmxlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkdWFscGkyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00MTg9Y29uZmlnIE5FVF9TQ0hfRFVBTFBJMlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQyNS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxubmV0L3NjaGVkL0tjb25maWc6NDI2Olx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHVhbHBpMi5cbm5ldC9zY2hlZC9LY29uZmlnLTQyNy1cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVx0JiM0Mzs9IGJwZl9xZGlzYy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRFVBTFBJMilcdCYjNDM7PSBzY2hfZHVhbHBpMi5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjctXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOS0gKlxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTA6ICogRHVhbFBJIEltcHJvdmVkIHdpdGggYSBTcXVhcmUgKGR1YWxwaTIpOlxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEtICogLSBTdXBwb3J0cyBjb25nZXN0aW9uIGNvbnRyb2xzIHRoYXQgY29tcGx5IHdpdGggdGhlIFByYWd1ZSByZXF1aXJlbWVudHNcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00Mi0gKiBpLmUuLCB0d2ljZSB0aGUgbWF4aW1hbCBzbmRfY3duZC5cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzOiAqIE1BWF9QUk9CIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBSTkcgaW4gZHVhbHBpMl9yb2xsKCkuXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NC0gKi9cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01MC0vKiBTY2FsZWQgdmFsdWVzIG9mIGFscGhhL2JldGEgbXVzdCBmaXQgaW4gMzJiIHRvIGF2b2lkIG92ZXJmbG93IGluIGxhdGVyXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1MTogKiBjb21wdXRhdGlvbnMuIENvbnNlcXVlbnRseSAoc2VlIGFuZCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoKSksIHRoZWlyXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01Mi0gKiBuZXRsaW5rLXByb3ZpZGVkIHZhbHVlcyBjYW4gdXNlIGF0IG1vc3QgMzFiLCBpLmUuIGJlIGF0IG1vc3QgKDJeMjMpLTFcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjcwOnN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzEtXHRzdHJ1Y3QgUWRpc2MgKmxfcXVldWU7XHQvKiBUaGUgTDRTIExvdyBsYXRlbmN5IHF1ZXVlIChMLXF1ZXVlKSAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjpzdHJ1Y3QgZHVhbHBpMl9za2JfY2Ige1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIzLVx0dTY0IHRzO1x0XHRcdC8qIFRpbWVzdGFtcCBhdCBlbnF1ZXVlICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTI4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTI5OmVudW0gZHVhbHBpMl9jbGFzc2lmaWNhdGlvbl9yZXN1bHRzIHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEzMC1cdERVQUxQSTJfQ19DTEFTU0lDXHQ9IDAsXHQvKiBDLXF1ZXVlICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTM1LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTM2OnN0YXRpYyBzdHJ1Y3QgZHVhbHBpMl9za2JfY2IgKmR1YWxwaTJfc2tiX2NiKHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMzcte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTM4Olx0cWRpc2NfY2JfcHJpdmF0ZV92YWxpZGF0ZShza2IsIHNpemVvZihzdHJ1Y3QgZHVhbHBpMl9za2JfY2IpKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEzOTpcdHJldHVybiAoc3RydWN0IGR1YWxwaTJfc2tiX2NiICopcWRpc2Nfc2tiX2NiKHNrYiktXHUwMDNlZGF0YTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE0MC19XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNDI6c3RhdGljIHU2NCBkdWFscGkyX3Nvam91cm5fdGltZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgcmVmZXJlbmNlKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQzLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE0NDpcdHJldHVybiByZWZlcmVuY2UgLSBkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZXRzO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQ1LX1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xNDc9c3RhdGljIHU2NCBoZWFkX2VucXVldWVfdGltZShzdHJ1Y3QgUWRpc2MgKnEpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTUwLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTUxOlx0cmV0dXJuIHNrYiA/IGR1YWxwaTJfc2tiX2NiKHNrYiktXHUwMDNldHMgOiAwO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTUyLX1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE1My1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE1NDpzdGF0aWMgdTMyIGR1YWxwaTJfc2NhbGVfYWxwaGFfYmV0YSh1MzIgcGFyYW0pXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTUte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE2MS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE2MjpzdGF0aWMgdTMyIGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKHUzMiBwYXJhbSlcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE2My17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTY5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTcwOnN0YXRpYyBrdGltZV90IG5leHRfcGkyX3RpbWVvdXQoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE3MS17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTc1PXN0YXRpYyBib29sIHNrYl9pc19sNHMoc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE3Ni17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNzc6XHRyZXR1cm4gZHVhbHBpMl9za2JfY2Ioc2tiKS1cdTAwM2VjbGFzc2lmaWVkID09IERVQUxQSTJfQ19MNFM7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNzgtfVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTE4MD1zdGF0aWMgYm9vbCBza2JfaW5fbF9xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTgxLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE4MjpcdHJldHVybiBkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWNsYXNzaWZpZWQgIT0gRFVBTFBJMl9DX0NMQVNTSUM7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xODMtfVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTg0LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTg1OnN0YXRpYyBib29sIHNrYl9hcHBseV9zdGVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xODYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE4OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE5MDpzdGF0aWMgYm9vbCBkdWFscGkyX21hcmsoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE5MS17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTk4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTk5OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIwNy0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIwODpzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyMDk6XHRcdFx0XHRcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3Yylcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIxMC17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE0LVx0XHQoKGludClxLVx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2wpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjE1Olx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTYtfVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE3LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjE4OnN0YXRpYyBib29sIGR1YWxwaTJfcm9sbCh1MzIgcHJvYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIxOS17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjI5LSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjMwOnN0YXRpYyBib29sIGR1YWxwaTJfY2xhc3NpY19tYXJraW5nKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzEtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHByb2IsXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjMzLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNDpcdGlmIChkdWFscGkyX3JvbGwocHJvYikgXHUwMDI2XHUwMDI2IGR1YWxwaTJfcm9sbChwcm9iKSkge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjM1Olx0XHRpZiAob3ZlcmxvYWQgfHwgZHVhbHBpMl9za2JfY2Ioc2tiKS1cdTAwM2VlY3QgPT0gSU5FVF9FQ05fTk9UX0VDVClcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIzNi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNzpcdFx0ZHVhbHBpMl9tYXJrKHEsIHNrYik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzgtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjUyLSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjUzOnN0YXRpYyBib29sIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjU0LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI2MC1cdFx0aWYgKCFxLVx1MDAzZWRyb3Bfb3ZlcmxvYWQgfHxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI2MTpcdFx0ICAgICEoZHVhbHBpMl9yb2xsKHByb2IpIFx1MDAyNlx1MDAyNiBkdWFscGkyX3JvbGwocHJvYikpKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjYyLVx0XHRcdGdvdG8gbWFyaztcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNjYtXHQvKiBXZSBjYW4gc2FmZWx5IGN1dCB0aGUgdXBwZXIgMzJiIGFzIG92ZXJsb2FkPT1mYWxzZSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjY3Olx0aWYgKGR1YWxwaTJfcm9sbChsb2NhbF9sX3Byb2IpKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNjgtXHRcdC8qIE5vbi1FQ1QgcGFja2V0cyBjb3VsZCBoYXZlIGNsYXNzaWZpZWQgYXMgTDRTIGJ5IGZpbHRlcnMuICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyNjk6XHRcdGlmIChkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWVjdCA9PSBJTkVUX0VDTl9OT1RfRUNUKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjcwLVx0XHRcdHJldHVybiB0cnVlO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjcxLW1hcms6XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyNzI6XHRcdGR1YWxwaTJfbWFyayhxLCBza2IpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjczLVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI4MS0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4MjpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yODMtXHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjk1LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mjk2Olx0c3dpdGNoIChkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWNsYXNzaWZpZWQpIHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI5Ny1cdGNhc2UgRFVBTFBJMl9DX0NMQVNTSUM6XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyOTg6XHRcdHJldHVybiBkdWFscGkyX2NsYXNzaWNfbWFya2luZyhxLCBza2IsIHByb2IsIG92ZXJsb2FkKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI5OS1cdGNhc2UgRFVBTFBJMl9DX0w0Uzpcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjMwMDpcdFx0cmV0dXJuIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhxLCBza2IsIGxvY2FsX2xfcHJvYiwgcHJvYixcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTMwMS1cdFx0XHRcdFx0XHRvdmVybG9hZCk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzA2LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzA3OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVhZF9lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTMwOC17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozMDk6XHRzdHJ1Y3QgZHVhbHBpMl9za2JfY2IgKmNiID0gZHVhbHBpMl9za2JfY2Ioc2tiKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTMxMC1cdGludCB3bGVuID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzQwLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQxOnN0YXRpYyBpbnQgZHVhbHBpMl9za2JfY2xhc3NpZnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM0Mi1cdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDMte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQ0Olx0c3RydWN0IGR1YWxwaTJfc2tiX2NiICpjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDUtXHRzdHJ1Y3QgdGNmX3Jlc3VsdCByZXM7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzQ4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQ5Olx0ZHVhbHBpMl9yZWFkX2VjdChza2IpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzUwLVx0aWYgKGNiLVx1MDAzZWVjdCBcdTAwMjYgcS1cdTAwM2VlY25fbWFzaykge1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4NC1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjM4NTpzdGF0aWMgaW50IGR1YWxwaTJfZW5xdWV1ZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zODYtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4Ny17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozODg6XHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mzg5Olx0c3RydWN0IGR1YWxwaTJfc2tiX2NiICpjYjtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM5MC1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDMtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0MDQ6XHRjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MDUtXHRjYi1cdTAwM2V0cyA9IGt0aW1lX2dldF9ucygpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQxNC1cdFx0LyogQXBwbHkgc3RlcCB0aHJlc2ggaWYgc2tiIGlzIEw0UyBcdTAwMjZcdTAwMjYgTC1xdWV1ZSBsZW4gXHUwMDNlPSBtaW5fcWxlbiAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDE1Olx0XHRkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWFwcGx5X3N0ZXAgPSBza2JfYXBwbHlfc3RlcChza2IsIHEpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDE2LVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQzMC1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzMTovKiBCeSBkZWZhdWx0LCBkdWFscGkyIHdpbGwgc3BsaXQgR1NPIHNrYnMgaW50byBpbmRlcGVuZGVudCBza2JzIGFuZCBlbnF1ZXVlXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00MzItICogZWFjaCBvZiB0aG9zZSBpbmRpdmlkdWFsbHkuIFRoaXMgeWllbGRzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHMsIGF0IHRoZVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQzOC0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzOTpzdGF0aWMgaW50IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQ0MC1cdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDEte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDQyOlx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQ0My1cdGludCBlcnI7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0NDU6XHRlcnIgPSBkdWFscGkyX3NrYl9jbGFzc2lmeShxLCBza2IpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQ2LVx0aWYgKGVyciAhPSBORVRfWE1JVF9TVUNDRVNTKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDcyLVx0XHRcdCAqICgyKSBDb3B5IGNsYXNzaWZpZWQgYW5kIGVjdCB2YWx1ZXMgb2YgYW4gc2tiXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0NzM6XHRcdFx0ICogKDMpIEVucXVldWUgZnJhZ21lbnQgXHUwMDI2IHNldCB0cyBpbiBkdWFscGkyX2VucXVldWVfc2tiXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NzQtXHRcdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDc2LVx0XHRcdHFkaXNjX3NrYl9jYihuc2tiKS1cdTAwM2Vwa3Rfc2VncyA9IDE7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzc6XHRcdFx0ZHVhbHBpMl9za2JfY2IobnNrYiktXHUwMDNlY2xhc3NpZmllZCA9XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzg6XHRcdFx0XHRkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWNsYXNzaWZpZWQ7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzk6XHRcdFx0ZHVhbHBpMl9za2JfY2IobnNrYiktXHUwMDNlZWN0ID0gZHVhbHBpMl9za2JfY2Ioc2tiKS1cdTAwM2VlY3Q7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0ODA6XHRcdFx0ZXJyID0gZHVhbHBpMl9lbnF1ZXVlX3NrYihuc2tiLCBzY2gsIHRvX2ZyZWUpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDgxLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUwMC1cdH1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjUwMTpcdHJldHVybiBkdWFscGkyX2VucXVldWVfc2tiKHNrYiwgc2NoLCB0b19mcmVlKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUwMi19XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NTE0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZGVxdWV1ZV9wYWNrZXQoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1MTU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTE2LVx0XHRcdFx0ICAgICAgaW50ICpjcmVkaXRfY2hhbmdlLFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUzOC1cdH0gZWxzZSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1Mzk6XHRcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTQwLVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NDg6c3RhdGljIGludCBkb19zdGVwX2FxbShzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTQ5LVx0XHQgICAgICAgdTY0IG5vdylcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NTUtXHRlbHNlXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NTY6XHRcdHFkZWxheSA9IGR1YWxwaTJfc29qb3Vybl90aW1lKHNrYiwgbm93KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU1Ny1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1ODpcdGlmIChkdWFscGkyX3NrYl9jYihza2IpLVx1MDAzZWFwcGx5X3N0ZXAgXHUwMDI2XHUwMDI2IHFkZWxheSBcdTAwM2UgcS1cdTAwM2VzdGVwX3RocmVzaCkge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTU5Olx0XHRpZiAoIWR1YWxwaTJfc2tiX2NiKHNrYiktXHUwMDNlZWN0KSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NjAtXHRcdFx0LyogRHJvcCB0aGlzIG5vbi1FQ1QgcGFja2V0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTYzLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTY0Olx0XHRpZiAoZHVhbHBpMl9tYXJrKHEsIHNrYikpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NjUtXHRcdFx0V1JJVEVfT05DRShxLVx1MDAzZXN0ZXBfbWFya3MsIHEtXHUwMDNlc3RlcF9tYXJrcyAmIzQzOyAxKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NzAtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NzE6c3RhdGljIHZvaWQgZHJvcF9hbmRfcmV0cnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU3Mi1cdFx0XHQgICBzdHJ1Y3QgUWRpc2MgKnNjaCwgZW51bSBxZGlzY19kcm9wX3JlYXNvbiByZWFzb24pXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTc5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTgwOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqX19kdWFscGkyX3FkaXNjX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01ODEte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTgyOlx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU4My1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjA5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjEwOnN0YXRpYyB2b2lkIGR1YWxwaTJfZGVxdWV1ZV9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjExLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjYxMjpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MTMtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjIxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjIyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHVhbHBpMl9xZGlzY19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjIzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MjUtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2MjY6XHRza2IgPSBfX2R1YWxwaTJfcWRpc2NfZGVxdWV1ZShzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjI3LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjI4Olx0ZHVhbHBpMl9kZXF1ZXVlX2Ryb3Aoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYyOS1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzItXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2MzM6c3RhdGljIHN0cnVjdCBza19idWZmICpkdWFscGkyX3BlZWsoc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYzNy1cdGlmICghc2tiKSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2Mzg6XHRcdHNrYiA9IF9fZHVhbHBpMl9xZGlzY19kZXF1ZXVlKHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzktXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjQ2LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjQ3Olx0XHRkdWFscGkyX2RlcXVldWVfZHJvcChzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjQ4LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTY1Mz1zdGF0aWMgczY0IF9fc2NhbGVfZGVsdGEodTY0IGRpZmYpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjU4LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjU5OnN0YXRpYyB2b2lkIGdldF9xdWV1ZV9kZWxheXMoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTY0ICpxZGVsYXlfYyxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTY2MC1cdFx0XHQgICAgIHU2NCAqcWRlbGF5X2wpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NjcyPXN0YXRpYyB1MzIgY2FsY3VsYXRlX3Byb2JhYmlsaXR5KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjczLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjY3NDpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NzUtXHR1MzIgbmV3X3Byb2I7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NzMzPXN0YXRpYyB1MzIgY29udmVydF9uc190b191c2VjKHU2NCBucylcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NDI6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGR1YWxwaTJfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzQzLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc0NDpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSB0aW1lcl9jb250YWluZXJfb2YocSwgdGltZXIsIHBpMl90aW1lcik7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDUtXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlc2NoO1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc1OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc2MDpzdGF0aWMgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBkdWFscGkyX2FscGhhX2JldGFfcmFuZ2UgPSB7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NjEtXHQubWluID0gMSxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NjQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2Ni1cdFtUQ0FfRFVBTFBJMl9MSU1JVF1cdFx0PSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NzAtXHRbVENBX0RVQUxQSTJfQUxQSEFdXHRcdD1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc3MTpcdFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VMzIsIFx1MDAyNmR1YWxwaTJfYWxwaGFfYmV0YV9yYW5nZSksXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NzItXHRbVENBX0RVQUxQSTJfQkVUQV1cdFx0PVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzczOlx0XHROTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1UzMiwgXHUwMDI2ZHVhbHBpMl9hbHBoYV9iZXRhX3JhbmdlKSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc3NC1cdFtUQ0FfRFVBTFBJMl9TVEVQX1RIUkVTSF9QS1RTXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc5MC1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc5MTpzdGF0aWMgaW50IGR1YWxwaTJfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTItXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk0LVx0c3RydWN0IG5sYXR0ciAqdGJbVENBX0RVQUxQSTJfTUFYICYjNDM7IDFdO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Nzk1Olx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc5Ni1cdGludCBvbGRfYmFja2xvZztcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MDMtXHR9XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4MDQ6XHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBUQ0FfRFVBTFBJMl9NQVgsIG9wdCwgZHVhbHBpMl9wb2xpY3ksXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MDUtXHRcdFx0ICAgICAgIGV4dGFjayk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODQxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODQyOlx0XHRXUklURV9PTkNFKHEtXHUwMDNlcGkyX2FscGhhLCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoYWxwaGEpKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg0My1cdH1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04NDctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4NDg6XHRcdFdSSVRFX09OQ0UocS1cdTAwM2VwaTJfYmV0YSwgZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKGJldGEpKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg0OS1cdH1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04ODctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo4ODg6XHRcdGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzY2gsIHEsIHdjKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg4OS1cdH1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NDQtLyogRGVmYXVsdCBhbHBoYS9iZXRhIHZhbHVlcyBnaXZlIGEgMTBkQiBzdGFiaWxpdHkgbWFyZ2luIHdpdGggbWF4X3J0dD0xMDBtcy4gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk0NTpzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2RlZmF1bHQoc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NDYte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTQ3Olx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk0OC1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTMtXHRxLVx1MDAzZXBpMl90dXBkYXRlID0gMTYgKiBOU0VDX1BFUl9NU0VDO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTU0Olx0cS1cdTAwM2VwaTJfYWxwaGEgPSBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoNDEpO1x0LyogfjAuMTYgSHogKiAyNTYgKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk1NTpcdHEtXHUwMDNlcGkyX2JldGEgPSBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoODE5KTtcdC8qIH4zLjIwIEh6ICogMjU2ICovXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NTYtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTU5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTYwOlx0ZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHEtXHUwMDNlc2NoLCBxLCAxMCk7XHQvKiB3Yz0xMCUsIHdsPTkwJSAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTYxLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk2OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3MDpzdGF0aWMgaW50IGR1YWxwaTJfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTcxLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3Mi17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NzM6XHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc0LVx0aW50IGVycjtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NzYtXHRzY2gtXHUwMDNlZmxhZ3MgfD0gVENRX0ZfREVRVUVVRV9EUk9QUztcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3NzpcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VwaTJfdGltZXIsIGR1YWxwaTJfdGltZXIsIENMT0NLX01PTk9UT05JQyxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3OC1cdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCU19QSU5ORURfU09GVCk7XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTg5LVx0cS1cdTAwM2VzY2ggPSBzY2g7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5OTA6XHRkdWFscGkyX3Jlc2V0X2RlZmF1bHQoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5MS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5Mi1cdGlmIChvcHQgXHUwMDI2XHUwMDI2IG5sYV9sZW4ob3B0KSkge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTkzOlx0XHRlcnIgPSBkdWFscGkyX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5NC1cbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDAzLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAwNDpzdGF0aWMgaW50IGR1YWxwaTJfZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwMDUte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAwNjpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDA3LVx0c3RydWN0IG5sYXR0ciAqb3B0cztcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDI2LVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfQUxQSEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDI3Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9hbHBoYSkpKSB8fFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAyOC1cdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX0JFVEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDI5Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9iZXRhKSkpIHx8XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDMwLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfU1RFUF9USFJFU0hfUEtUUywgc3RlcF90aCkgfHxcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDUzLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfQUxQSEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDU0Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9hbHBoYSkpKSB8fFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA1NS1cdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX0JFVEEsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDU2Olx0XHRcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVx1MDAzZXBpMl9iZXRhKSkpIHx8XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDU3LVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfU1RFUF9USFJFU0hfVVMsXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA3OS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwODA6c3RhdGljIGludCBkdWFscGkyX2R1bXBfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDgxLXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwODI6XHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTA4MzpcdHN0cnVjdCB0Y19kdWFscGkyX3hzdGF0cyBzdCA9IHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwODQtXHRcdC5wcm9iXHRcdFx0PSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYiksXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEwNi0gKi9cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMDc6c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMDgte1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEwOTpcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTEwLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjItXHRXUklURV9PTkNFKHEtXHUwMDNlbWF4X21lbW9yeV91c2VkLCAwKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMjM6XHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjQtfVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEyNS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMjY6c3RhdGljIHZvaWQgZHVhbHBpMl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEyNy17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTI4Olx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjktXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEzNi1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMzc6c3RhdGljIHN0cnVjdCBRZGlzYyAqZHVhbHBpMl9sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGFyZylcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMzgte1xuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNDEtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTQyOnN0YXRpYyB1bnNpZ25lZCBsb25nIGR1YWxwaTJfZmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTQzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTQ2LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE0NzpzdGF0aWMgdW5zaWduZWQgbG9uZyBkdWFscGkyX2JpbmQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgcGFyZW50LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE0OC1cdFx0XHRcdCAgdTMyIGNsYXNzaWQpXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1Mi1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNTM6c3RhdGljIHZvaWQgZHVhbHBpMl91bmJpbmQoc3RydWN0IFFkaXNjICpxLCB1bnNpZ25lZCBsb25nIGNsKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1NC17XG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1Ni1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNTc6c3RhdGljIHN0cnVjdCB0Y2ZfYmxvY2sgKmR1YWxwaTJfdGNmX2Jsb2NrKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OC1cdFx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OS17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTYwOlx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNjEtXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE2Ni1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNjc6c3RhdGljIHZvaWQgZHVhbHBpMl93YWxrKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICphcmcpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTY4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTg4LS8qIE1pbmltYWwgY2xhc3Mgc3VwcG9ydCB0byBoYW5kbGUgdGMgZmlsdGVycyAqL1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTA6XHQubGVhZlx0XHQ9IGR1YWxwaTJfbGVhZixcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTE6XHQuZmluZFx0XHQ9IGR1YWxwaTJfZmluZCxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTI6XHQudGNmX2Jsb2NrXHQ9IGR1YWxwaTJfdGNmX2Jsb2NrLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5MzpcdC5iaW5kX3RjZlx0PSBkdWFscGkyX2JpbmQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTk0Olx0LnVuYmluZF90Y2ZcdD0gZHVhbHBpMl91bmJpbmQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTk1Olx0LndhbGtcdFx0PSBkdWFscGkyX3dhbGssXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTk2LX07XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTk3LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5ODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5OTpcdC5pZFx0XHQ9IFwmIzM0O2R1YWxwaTJcJiMzNDssXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjAwOlx0LmNsX29wc1x0XHQ9IFx1MDAyNmR1YWxwaTJfY2xhc3Nfb3BzLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMTpcdC5wcml2X3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEpLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpcdC5lbnF1ZXVlXHQ9IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDM6XHQuZGVxdWV1ZVx0PSBkdWFscGkyX3FkaXNjX2RlcXVldWUsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA0Olx0LnBlZWtcdFx0PSBkdWFscGkyX3BlZWssXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA1Olx0LmluaXRcdFx0PSBkdWFscGkyX2luaXQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA2Olx0LmRlc3Ryb3lcdD0gZHVhbHBpMl9kZXN0cm95LFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwNzpcdC5yZXNldFx0XHQ9IGR1YWxwaTJfcmVzZXQsXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA4Olx0LmNoYW5nZVx0XHQ9IGR1YWxwaTJfY2hhbmdlLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwOTpcdC5kdW1wXHRcdD0gZHVhbHBpMl9kdW1wLFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMDpcdC5kdW1wX3N0YXRzXHQ9IGR1YWxwaTJfZHVtcF9zdGF0cyxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTEtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTItfTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMTM6TU9EVUxFX0FMSUFTX05FVF9TQ0goXCYjMzQ7ZHVhbHBpMlwmIzM0Oyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE0LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxNTpzdGF0aWMgaW50IF9faW5pdCBkdWFscGkyX21vZHVsZV9pbml0KHZvaWQpXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE2LXtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMTc6XHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXHUwMDI2ZHVhbHBpMl9xZGlzY19vcHMpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIxOC19XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE5LVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyMDpzdGF0aWMgdm9pZCBfX2V4aXQgZHVhbHBpMl9tb2R1bGVfZXhpdCh2b2lkKVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyMS17XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjIyOlx0dW5yZWdpc3Rlcl9xZGlzYyhcdTAwMjZkdWFscGkyX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIzLX1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjQtXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjI1Om1vZHVsZV9pbml0KGR1YWxwaTJfbW9kdWxlX2luaXQpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyNjptb2R1bGVfZXhpdChkdWFscGkyX21vZHVsZV9leGl0KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjctXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjI4Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEdWFsIFF1ZXVlIHdpdGggUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgSW1wcm92ZWQgd2l0aCBhIFNxdWFyZSAoZHVhbHBpMikgc2NoZWR1bGVyXCYjMzQ7KTtcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMjktTU9EVUxFX0FVVEhPUihcJiMzNDtLb2VuIERlIFNjaGVwcGVyIFx1MDAzY2tvZW4uZGVfc2NoZXBwZXJAbm9raWEtYmVsbC1sYWJzLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMTU6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzMjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTY2hlZHVsZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhIGZpeCByZWxhdGVkIHRvIGJhY2tsb2cgYWNjb3VudGluZyB3aGVuIEdTTyBwYWNrZXRzIGFyZSBlbnF1ZXVlZCBpbiB0aGUgYGR1YWxwaTJgIHFkaXNjLiBUaGUgY29uZmlnIG9wdGlvbiBpcyBgTkVUX1NDSF9EVUFMUEkyYCwgYW5kIHRoZSBmdW5jdGlvbiBkaXJlY3RseSBhZmZlY3RlZCBpcyBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciwgYW5kIHRoZSBwYXRoIHRvIHRoaXMgY29kZSBpcyBzdHJhaWdodGZvcndhcmQ6IGBkdWFscGkyX3FkaXNjX2VucXVldWVgICppcyogdGhlIGAuZW5xdWV1ZWAgY2FsbGJhY2sgZm9yIHRoZSBgZHVhbHBpMmAgcWRpc2MuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgaXNzdWVzIGluIHBhY2tldCBzY2hlZHVsaW5nIGFuZCBhY2NvdW50aW5nLCB0aGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBkZXBlbmRlbmNpZXMuIFRoZSB0ZXN0IGVudmlyb25tZW50IG1lbnRpb25zIHRoZSBgcWZxYCBxZGlzYyBhcyBhIHBhcmVudC4gVGhlIGFzc29jaWF0ZWQgY29uZmlnIG9wdGlvbiB0aGVyZSBpcyBgTkVUX1NDSF9RRlFgLiBUaG91Z2ggdGhlIGNvZGUgY2hhbmdlcyBhcmUgbG9jYWxpemVkIHRvIGBzY2hfZHVhbHBpMi5jYCwgc28gYE5FVF9TQ0hfRFVBTFBJMmAgaXMgdGhlIGNyaXRpY2FsIG9wdGlvbi4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBORVRfU0NIX1FGUWAgaXNuJiMzOTt0IGFjY2lkZW50YWxseSBhbHNvIHJlcXVpcmVkLCBldmVuIGluZGlyZWN0bHksIHRvIGF2b2lkIG1pc3NpbmcgYW55IGhpZGRlbiBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfU0NIX1FGUSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MjQ0PWNvbmZpZyBORVRfU0NIX0NIT0tFXG4tLVxubmV0L3NjaGVkL0tjb25maWctMjU0LVxubmV0L3NjaGVkL0tjb25maWc6MjU1OmNvbmZpZyBORVRfU0NIX1FGUVxubmV0L3NjaGVkL0tjb25maWctMjU2LVx0dHJpc3RhdGUgXCYjMzQ7UXVpY2sgRmFpciBRdWV1ZWluZyBzY2hlZHVsZXIgKFFGUSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0hPS0UpXHQmIzQzOz0gc2NoX2Nob2tlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NDpvYmotJChDT05GSUdfTkVUX1NDSF9RRlEpXHQmIzQzOz0gc2NoX3FmcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNTUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXHQmIzQzOz0gc2NoX2NvZGVsLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAxNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk4MAoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiA4NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIER1YWxQSTIgU2NoZWR1bGVyIEJ1ZyBGaXgqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYGR1YWxwaTJgIHNjaGVkdWxlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGluY2x1ZGUgYE5FVF9TQ0hfRFVBTFBJMmAgYW5kIGBORVRfU0NIX1FGUWAgaW4gYEVuYWJsZUNvbmZpZ3NgLCBhcyB0aGUgdGVzdCBjYXNlIHVzZXMgdGhlbSwgYnV0IGxldCYjMzk7cyBiZSBwcmVjaXNlLiBUaGUgbWFpbiBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBpcyBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYC4gSSYjMzk7dmUgdmVyaWZpZWQgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZnVuY3Rpb24gZGlyZWN0bHkgdG91Y2hlZCBieSB0aGUgcGF0Y2guCgpOb3csIGEgY2xvc2VyIGxvb2sgYXQgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAsIHNwZWNpZmljYWxseSBpbiBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgLCByZXZlYWxzIGl0IGNhbGxzIHNldmVyYWwgb3RoZXIgZnVuY3Rpb25zOiBgZHVhbHBpMl9za2JfY2xhc3NpZnlgLCBgc2tiX2dzb19zZWdtZW50YCwgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLCBgY29uc3VtZV9za2JgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZV9za2JgLiBUaGUga2V5IGNoYW5nZSBjZW50ZXJzIGFyb3VuZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuCgpUaGlzIGlzIGEgdmVyeSBzcGVjaWZpYyBmaXggd2l0aGluIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiwgZGVhbGluZyB3aXRoIEdTTyBwYWNrZXQgZW5xdWV1ZWluZy4gVGhpcyBtZWFucyB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIGFuZCBJIHNob3VsZCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gSSBjYW4gYWxzbyBkZWZpbmUgYEZvY3VzU3ltYm9sc2AgdG8gYFsmIzM0O2R1YWxwaTJfcWRpc2NfZW5xdWV1ZSYjMzQ7XWAuCgpJbml0aWFsbHksIEkgaGFkIHRob3VnaHQgdG8gaW5jbHVkZSBgTkVUX1NDSF9RRlFgLCBhcyB0aGUgdGVzdCB1c2VzIGl0LiBCdXQgdGhlIGJ1ZyBpcyBpbiBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBhbmQgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHFkaXNjIGlzIGEgY2hpbGQgb2YgYW5vdGhlciBxZGlzYyAoY2xhc3NmdWwgcWRpc2MpLiBgZHVhbHBpMmAgaXRzZWxmIGlzIGEgY2xhc3NsZXNzIHFkaXNjLCBidXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvIGEgY2xhc3NmdWwgcWRpc2MgbGlrZSBgcWZxYCwgYGh0YmAsIGBoZnNjYCwgZXRjLiBBbnkgY2xhc3NmdWwgcWRpc2Mgd291bGQgdHJpZ2dlciBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AgY29ycmVjdGx5IGlmIGl0IGhhcyBhIHBhcmVudC4gU28gYE5FVF9TQ0hfRFVBTFBJMmAgaXMgdGhlIG1haW4gb25lLiBJIGNhbiBhbHNvIGFkZCBgTkVUX1NDSF9RRlFgIHNpbmNlIHRoZSB0ZXN0IHVzZXMgaXQsIGJ1dCBJJiMzOTtsbCBzdGljayB3aXRoIG9ubHkgYE5FVF9TQ0hfRFVBTFBJMmAgdG8gYmUgYXMgZm9jdXNlZCBhcyBwb3NzaWJsZS4KClF1aWNrIGNoZWNrIGNvbmZpcm1zIGBkdWFscGkyYCBkZXBlbmRzIG9uIGBORVRfU0NIRURgLCBidXQgdGhhdCBzaG91bGQgYmUgaW1wbGljaXRseSBoYW5kbGVkLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8ganVzdCBgWyYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDtdYC4KCkluIHN1bW1hcnksIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIGZvciB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaXQgZGVhbHMgd2l0aCBHU08gcGFja2V0cy4gSXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGFuZCB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBzbyBJIG5lZWQgdG8gZnV6eiBpdCB0byBtYWtlIHN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgdGhhdCBpdCBkb2VzbiYjMzk7dCBjYXVzZSB1bmRlcmZsb3dzIG9yIG90aGVyIHJlbGF0ZWQgaXNzdWVzLiBJdCYjMzk7cyBhIHByZWNpc2UgZml4LCB3b3J0aCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvLiBJJiMzOTttIHJlYWR5IHRvIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDE1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkdWFscGkyX3FkaXNjX2VucXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGJhY2tsb2cgYWNjb3VudGluZyBvZiB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaGFuZGxpbmcgR1NPIHBhY2tldHMuIEl0IG1vZGlmaWVzIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGFuZCByZWR1Y2UgdGhlIGJhY2tsb2cgdXNpbmcgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgZG9lc24mIzM5O3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSF9EVUFMUEkyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHVhbHBpMl9xZGlzY19lbnF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBiYWNrbG9nIGFjY291bnRpbmcgb2YgdGhlIGBkdWFscGkyYCBuZXR3b3JrIHNjaGVkdWxlciB3aGVuIGhhbmRsaW5nIEdTTyBwYWNrZXRzLiBJdCBtb2RpZmllcyB0aGUgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgZnVuY3Rpb24gdG8gY29ycmVjdGx5IGNhbGN1bGF0ZSBhbmQgcmVkdWNlIHRoZSBiYWNrbG9nIHVzaW5nIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhY2NvdW50aW5nIGlzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGxlYWQgdG8gdW5kZXJmbG93cyBvciBvdGhlciBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0xOVQxNTozMDo1My4wMTE1NDQ5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MTgzNDk5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSF9EVUFMUEkyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHVhbHBpMl9xZGlzY19lbnF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGJhY2tsb2cgYWNjb3VudGluZyBvZiB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaGFuZGxpbmcgR1NPIHBhY2tldHMuIEl0IG1vZGlmaWVzIHRoZSBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCBmdW5jdGlvbiB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIGFuZCByZWR1Y2UgdGhlIGJhY2tsb2cgdXNpbmcgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgZG9lc24ndCBsZWFkIHRvIHVuZGVyZmxvd3Mgb3Igb3RoZXIgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQxNTozMDo1My4wMTE1NDk5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzNDg3ODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTA5OTdiNzRmYzNlOGQxNGI5ZWUwZTg3M2YzOTQ2YzdiNGJkNGJlOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAxOSAxNTozMDo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXFxuaW5kZXggZDdjMzI1NGVmODAwZjguLjU0MzRkZjZjYThlZmU2IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG5AQCAtNDYxLDcgKzQ2MSw3IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwobnNrYikpXFxuIFxcdFxcdFxcdHJldHVybiBxZGlzY19kcm9wKHNrYiwgc2NoLCB0b19mcmVlKTtcXG4gXFxuLVxcdFxcdGNudCA9IDE7XFxuK1xcdFxcdGNudCA9IDA7XFxuIFxcdFxcdGJ5dGVfbGVuID0gMDtcXG4gXFx0XFx0b3JpZ19sZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7XFxuIFxcdFxcdHNrYl9saXN0X3dhbGtfc2FmZShuc2tiLCBuc2tiLCBuZXh0KSB7XFxuQEAgLTQ4OCwxNiArNDg4LDE1IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9xZGlzY19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbiBcXHRcXHRcXHRcXHRieXRlX2xlbiArPSBuc2tiLVxcdTAwM2VsZW47XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbi1cXHRcXHRpZiAoY250IFxcdTAwM2UgMSkge1xcbitcXHRcXHRpZiAoY250IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHQvKiBUaGUgY2FsbGVyIHdpbGwgYWRkIHRoZSBvcmlnaW5hbCBza2Igc3RhdHMgdG8gaXRzXFxuIFxcdFxcdFxcdCAqIGJhY2tsb2csIGNvbXBlbnNhdGUgdGhpcyBpZiBhbnkgbnNrYiBpcyBlbnF1ZXVlZC5cXG4gXFx0XFx0XFx0ICovXFxuLVxcdFxcdFxcdC0tY250O1xcbi1cXHRcXHRcXHRieXRlX2xlbiAtPSBvcmlnX2xlbjtcXG4rXFx0XFx0XFx0cWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzY2gsIDEgLSBjbnQsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgb3JpZ19sZW4gLSBieXRlX2xlbik7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzY2gsIC1jbnQsIC1ieXRlX2xlbik7XFxuIFxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdHJldHVybiBjbnQgXFx1MDAzZSAwID8gTkVUX1hNSVRfU1VDQ0VTUyA6IGVycjtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gZHVhbHBpMl9lbnF1ZXVlX3NrYihza2IsIHNjaCwgdG9fZnJlZSk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uXFxuaW5kZXggY2QxZjJlZThmMzU0ZDYuLmVkNmE5MDBiYjU2OGY0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxcbkBAIC0yNTAsNSArMjUwLDQ5IEBAXFxuICAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbiAgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XFxcIlxcbiAgICAgICAgIF1cXG4rICAgIH0sXFxuKyAgICB7XFxuKyAgICAgICAgXFxcImlkXFxcIjogXFxcIjg5MWZcXFwiLFxcbisgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIlZlcmlmeSBEdWFsUEkyIEdTTyBiYWNrbG9nIGFjY291bnRpbmcgd2l0aCBRRlEgcGFyZW50XFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJxZGlzY1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJkdWFscGkyXFxcIixcXG4rICAgICAgICAgICAgXFxcInFmcVxcXCIsXFxuKyAgICAgICAgICAgIFxcXCJnc29cXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwicGx1Z2luc1xcXCI6IHtcXG4rICAgICAgICAgICAgXFxcInJlcXVpcmVzXFxcIjogXFxcIm5zUGx1Z2luXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdXAgfHwgdHJ1ZVxcXCIsXFxuKyAgICAgICAgICAgIFxcXCIkSVAgYWRkciBhZGQgMTAuMTAuMTAuMTAvMjQgZGV2ICREVU1NWSB8fCB0cnVlXFxcIixcXG4rICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSByb290IGhhbmRsZSAxOiBxZnFcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIGNsYXNzIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBjbGFzc2lkIDE6MSBxZnEgd2VpZ2h0IDEgbWF4cGt0IDQwOTZcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOjEgaGFuZGxlIDI6IGR1YWxwaTJcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIGZpbHRlciBhZGQgZGV2ICREVU1NWSBwYXJlbnQgMTogbWF0Y2hhbGwgY2xhc3NpZCAxOjFcXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIi4vdGRjX2dzby5weSAxMC4xMC4xMC4xMCAxMC4xMC4xMC4xIDkwMDAgMTIwMCAyNDAwXFxcIixcXG4rICAgICAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICAgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLWogLXMgcWRpc2MgbHMgZGV2ICREVU1NWVxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoSlNPTlxcXCI6IFtcXG4rICAgICAgICAgICAge1xcbisgICAgICAgICAgICAgICAgXFxcImtpbmRcXFwiOiBcXFwicWZxXFxcIixcXG4rICAgICAgICAgICAgICAgIFxcXCJoYW5kbGVcXFwiOiBcXFwiMTpcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInBhY2tldHNcXFwiOiAyLFxcbisgICAgICAgICAgICAgICAgXFxcImJhY2tsb2dcXFwiOiAwLFxcbisgICAgICAgICAgICAgICAgXFxcInFsZW5cXFwiOiAwXFxuKyAgICAgICAgICAgIH0sXFxuKyAgICAgICAgICAgIHtcXG4rICAgICAgICAgICAgICAgIFxcXCJraW5kXFxcIjogXFxcImR1YWxwaTJcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcImhhbmRsZVxcXCI6IFxcXCIyOlxcXCIsXFxuKyAgICAgICAgICAgICAgICBcXFwicGFja2V0c1xcXCI6IDIsXFxuKyAgICAgICAgICAgICAgICBcXFwiYmFja2xvZ1xcXCI6IDAsXFxuKyAgICAgICAgICAgICAgICBcXFwicWxlblxcXCI6IDBcXG4rICAgICAgICAgICAgfVxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIHJvb3RcXFwiLFxcbisgICAgICAgICAgICBcXFwiJElQIGFkZHIgZGVsIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVxcXCJcXG4rICAgICAgICBdXFxuICAgICB9XFxuIF1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYjY2NTI4ZWE0YjY4MGFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XFxuQEAgLTAsMCArMSw0MyBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rXFxuK1xcXCJcXFwiXFxcIlxcbit0ZGNfZ3NvLnB5IC0gc2VuZCBhIFVEUCBHU08gZGF0YWdyYW1cXG4rXFxuK0NvcHlyaWdodCAoQykgMjAyNiBYaW5ncXVhbiBMaXUgXFx1MDAzY2IxbkBiMW4uaW9cXHUwMDNlXFxuK1xcXCJcXFwiXFxcIlxcbitcXG4raW1wb3J0IGFyZ3BhcnNlXFxuK2ltcG9ydCBzb2NrZXRcXG4raW1wb3J0IHN0cnVjdFxcbitpbXBvcnQgc3lzXFxuK1xcbitVRFBfTUFYX1NFR01FTlRTID0gMSBcXHUwMDNjXFx1MDAzYyA3XFxuK1xcbitcXG4rcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249XFxcIlVEUCBHU08gZGF0YWdyYW0gc2VuZGVyXFxcIilcXG4rcGFyc2VyLmFkZF9hcmd1bWVudChcXFwic3JjXFxcIiwgaGVscD1cXFwic291cmNlIElQdjQgYWRkcmVzc1xcXCIpXFxuK3BhcnNlci5hZGRfYXJndW1lbnQoXFxcImRzdFxcXCIsIGhlbHA9XFxcImRlc3RpbmF0aW9uIElQdjQgYWRkcmVzc1xcXCIpXFxuK3BhcnNlci5hZGRfYXJndW1lbnQoXFxcInBvcnRcXFwiLCB0eXBlPWludCwgaGVscD1cXFwiZGVzdGluYXRpb24gVURQIHBvcnRcXFwiKVxcbitwYXJzZXIuYWRkX2FyZ3VtZW50KFxcXCJnc29fc2l6ZVxcXCIsIHR5cGU9aW50LCBoZWxwPVxcXCJVRFAgR1NPIHNlZ21lbnQgcGF5bG9hZCBzaXplXFxcIilcXG4rcGFyc2VyLmFkZF9hcmd1bWVudChcXFwicGF5bG9hZF9sZW5cXFwiLCB0eXBlPWludCwgaGVscD1cXFwidG90YWwgVURQIHBheWxvYWQgbGVuZ3RoXFxcIilcXG4rYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcXG4rXFxuK2lmIGFyZ3MuZ3NvX3NpemUgXFx1MDAzYz0gMCBvciBhcmdzLmdzb19zaXplIFxcdTAwM2UgMHhGRkZGOlxcbisgICAgcGFyc2VyLmVycm9yKFxcXCJnc29fc2l6ZSBtdXN0IGZpdCBpbiBhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxcXCIpXFxuK2lmIGFyZ3MucGF5bG9hZF9sZW4gXFx1MDAzYz0gYXJncy5nc29fc2l6ZTpcXG4rICAgIHBhcnNlci5lcnJvcihcXFwicGF5bG9hZF9sZW4gbXVzdCBiZSBsYXJnZXIgdGhhbiBnc29fc2l6ZVxcXCIpXFxuK2lmIGFyZ3MucGF5bG9hZF9sZW4gXFx1MDAzZSBhcmdzLmdzb19zaXplICogVURQX01BWF9TRUdNRU5UUzpcXG4rICAgIHBhcnNlci5lcnJvcihcXFwicGF5bG9hZF9sZW4gZXhjZWVkcyBVRFBfTUFYX1NFR01FTlRTXFxcIilcXG4rXFxuK1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgXFxcIlNPTF9VRFBcXFwiLCBzb2NrZXQuSVBQUk9UT19VRFApXFxuK1VEUF9TRUdNRU5UID0gZ2V0YXR0cihzb2NrZXQsIFxcXCJVRFBfU0VHTUVOVFxcXCIsIDEwMylcXG4rXFxuK3NvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSlcXG4rc29jay5iaW5kKChhcmdzLnNyYywgMCkpXFxuK1xcbitwYXlsb2FkID0gYlxcXCJiXFxcIiAqIGFyZ3MucGF5bG9hZF9sZW5cXG4rY21zZyA9IFsoU09MX1VEUCwgVURQX1NFR01FTlQsIHN0cnVjdC5wYWNrKFxcXCI9SFxcXCIsIGFyZ3MuZ3NvX3NpemUpKV1cXG4rXFxuK3NlbnQgPSBzb2NrLnNlbmRtc2coW3BheWxvYWRdLCBjbXNnLCAwLCAoYXJncy5kc3QsIGFyZ3MucG9ydCkpXFxuK3N5cy5leGl0KHNlbnQgIT0gbGVuKHBheWxvYWQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQxNTozMDo1My42MzU3NzYyMTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTk0MTA5OTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR1YWxwaTJfcWRpc2NfZW5xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBiYWNrbG9nIGFjY291bnRpbmcgb2YgdGhlIGBkdWFscGkyYCBuZXR3b3JrIHNjaGVkdWxlciB3aGVuIGhhbmRsaW5nIEdTTyBwYWNrZXRzLiBJdCBtb2RpZmllcyB0aGUgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgZnVuY3Rpb24gdG8gY29ycmVjdGx5IGNhbGN1bGF0ZSBhbmQgcmVkdWNlIHRoZSBiYWNrbG9nIHVzaW5nIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhY2NvdW50aW5nIGlzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMDk5N2I3NGZjM2U4ZDE0YjllZTBlODczZjM5NDZjN2I0YmQ0YmU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMTkgMTU6MzA6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCBkN2MzMjU0ZWY4MDBmOC4uNTQzNGRmNmNhOGVmZTYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbkBAIC00NjEsNyArNDYxLDcgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGlmIChJU19FUlJfT1JfTlVMTChuc2tiKSlcbiBcdFx0XHRyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7XG4gXG4tXHRcdGNudCA9IDE7XG4rXHRcdGNudCA9IDA7XG4gXHRcdGJ5dGVfbGVuID0gMDtcbiBcdFx0b3JpZ19sZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7XG4gXHRcdHNrYl9saXN0X3dhbGtfc2FmZShuc2tiLCBuc2tiLCBuZXh0KSB7XG5AQCAtNDg4LDE2ICs0ODgsMTUgQEAgc3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0XHRieXRlX2xlbiArPSBuc2tiLVx1MDAzZWxlbjtcbiBcdFx0XHR9XG4gXHRcdH1cbi1cdFx0aWYgKGNudCBcdTAwM2UgMSkge1xuK1x0XHRpZiAoY250IFx1MDAzZSAwKSB7XG4gXHRcdFx0LyogVGhlIGNhbGxlciB3aWxsIGFkZCB0aGUgb3JpZ2luYWwgc2tiIHN0YXRzIHRvIGl0c1xuIFx0XHRcdCAqIGJhY2tsb2csIGNvbXBlbnNhdGUgdGhpcyBpZiBhbnkgbnNrYiBpcyBlbnF1ZXVlZC5cbiBcdFx0XHQgKi9cbi1cdFx0XHQtLWNudDtcbi1cdFx0XHRieXRlX2xlbiAtPSBvcmlnX2xlbjtcbitcdFx0XHRxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKHNjaCwgMSAtIGNudCxcbitcdFx0XHRcdFx0XHQgIG9yaWdfbGVuIC0gYnl0ZV9sZW4pO1xuIFx0XHR9XG4tXHRcdHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc2NoLCAtY250LCAtYnl0ZV9sZW4pO1xuIFx0XHRjb25zdW1lX3NrYihza2IpO1xuLVx0XHRyZXR1cm4gZXJyO1xuK1x0XHRyZXR1cm4gY250IFx1MDAzZSAwID8gTkVUX1hNSVRfU1VDQ0VTUyA6IGVycjtcbiBcdH1cbiBcdHJldHVybiBkdWFscGkyX2VucXVldWVfc2tiKHNrYiwgc2NoLCB0b19mcmVlKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvZHVhbHBpMi5qc29uXG5pbmRleCBjZDFmMmVlOGYzNTRkNi4uZWQ2YTkwMGJiNTY4ZjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9kdWFscGkyLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL2R1YWxwaTIuanNvblxuQEAgLTI1MCw1ICsyNTAsNDkgQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcIjg5MWZcIixcbisgICAgICAgIFwibmFtZVwiOiBcIlZlcmlmeSBEdWFsUEkyIEdTTyBiYWNrbG9nIGFjY291bnRpbmcgd2l0aCBRRlEgcGFyZW50XCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcInFkaXNjXCIsXG4rICAgICAgICAgICAgXCJkdWFscGkyXCIsXG4rICAgICAgICAgICAgXCJxZnFcIixcbisgICAgICAgICAgICBcImdzb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdXAgfHwgdHJ1ZVwiLFxuKyAgICAgICAgICAgIFwiJElQIGFkZHIgYWRkIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVwiLFxuKyAgICAgICAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIHJvb3QgaGFuZGxlIDE6IHFmcVwiLFxuKyAgICAgICAgICAgIFwiJFRDIGNsYXNzIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBjbGFzc2lkIDE6MSBxZnEgd2VpZ2h0IDEgbWF4cGt0IDQwOTZcIixcbisgICAgICAgICAgICBcIiRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBwYXJlbnQgMToxIGhhbmRsZSAyOiBkdWFscGkyXCIsXG4rICAgICAgICAgICAgXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIHBhcmVudCAxOiBtYXRjaGFsbCBjbGFzc2lkIDE6MVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIuL3RkY19nc28ucHkgMTAuMTAuMTAuMTAgMTAuMTAuMTAuMSA5MDAwIDEyMDAgMjQwMFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1qIC1zIHFkaXNjIGxzIGRldiAkRFVNTVlcIixcbisgICAgICAgIFwibWF0Y2hKU09OXCI6IFtcbisgICAgICAgICAgICB7XG4rICAgICAgICAgICAgICAgIFwia2luZFwiOiBcInFmcVwiLFxuKyAgICAgICAgICAgICAgICBcImhhbmRsZVwiOiBcIjE6XCIsXG4rICAgICAgICAgICAgICAgIFwicGFja2V0c1wiOiAyLFxuKyAgICAgICAgICAgICAgICBcImJhY2tsb2dcIjogMCxcbisgICAgICAgICAgICAgICAgXCJxbGVuXCI6IDBcbisgICAgICAgICAgICB9LFxuKyAgICAgICAgICAgIHtcbisgICAgICAgICAgICAgICAgXCJraW5kXCI6IFwiZHVhbHBpMlwiLFxuKyAgICAgICAgICAgICAgICBcImhhbmRsZVwiOiBcIjI6XCIsXG4rICAgICAgICAgICAgICAgIFwicGFja2V0c1wiOiAyLFxuKyAgICAgICAgICAgICAgICBcImJhY2tsb2dcIjogMCxcbisgICAgICAgICAgICAgICAgXCJxbGVuXCI6IDBcbisgICAgICAgICAgICB9XG4rICAgICAgICBdLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgcm9vdFwiLFxuKyAgICAgICAgICAgIFwiJElQIGFkZHIgZGVsIDEwLjEwLjEwLjEwLzI0IGRldiAkRFVNTVkgfHwgdHJ1ZVwiXG4rICAgICAgICBdXG4gICAgIH1cbiBdXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90ZGNfZ3NvLnB5XG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI2NjUyOGVhNGI2ODBhXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RkY19nc28ucHlcbkBAIC0wLDAgKzEsNDMgQEBcbisjIS91c3IvYmluL2VudiBweXRob24zXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuK1wiXCJcIlxuK3RkY19nc28ucHkgLSBzZW5kIGEgVURQIEdTTyBkYXRhZ3JhbVxuK1xuK0NvcHlyaWdodCAoQykgMjAyNiBYaW5ncXVhbiBMaXUgXHUwMDNjYjFuQGIxbi5pb1x1MDAzZVxuK1wiXCJcIlxuK1xuK2ltcG9ydCBhcmdwYXJzZVxuK2ltcG9ydCBzb2NrZXRcbitpbXBvcnQgc3RydWN0XG4raW1wb3J0IHN5c1xuK1xuK1VEUF9NQVhfU0VHTUVOVFMgPSAxIFx1MDAzY1x1MDAzYyA3XG4rXG4rXG4rcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249XCJVRFAgR1NPIGRhdGFncmFtIHNlbmRlclwiKVxuK3BhcnNlci5hZGRfYXJndW1lbnQoXCJzcmNcIiwgaGVscD1cInNvdXJjZSBJUHY0IGFkZHJlc3NcIilcbitwYXJzZXIuYWRkX2FyZ3VtZW50KFwiZHN0XCIsIGhlbHA9XCJkZXN0aW5hdGlvbiBJUHY0IGFkZHJlc3NcIilcbitwYXJzZXIuYWRkX2FyZ3VtZW50KFwicG9ydFwiLCB0eXBlPWludCwgaGVscD1cImRlc3RpbmF0aW9uIFVEUCBwb3J0XCIpXG4rcGFyc2VyLmFkZF9hcmd1bWVudChcImdzb19zaXplXCIsIHR5cGU9aW50LCBoZWxwPVwiVURQIEdTTyBzZWdtZW50IHBheWxvYWQgc2l6ZVwiKVxuK3BhcnNlci5hZGRfYXJndW1lbnQoXCJwYXlsb2FkX2xlblwiLCB0eXBlPWludCwgaGVscD1cInRvdGFsIFVEUCBwYXlsb2FkIGxlbmd0aFwiKVxuK2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4rXG4raWYgYXJncy5nc29fc2l6ZSBcdTAwM2M9IDAgb3IgYXJncy5nc29fc2l6ZSBcdTAwM2UgMHhGRkZGOlxuKyAgICBwYXJzZXIuZXJyb3IoXCJnc29fc2l6ZSBtdXN0IGZpdCBpbiBhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclwiKVxuK2lmIGFyZ3MucGF5bG9hZF9sZW4gXHUwMDNjPSBhcmdzLmdzb19zaXplOlxuKyAgICBwYXJzZXIuZXJyb3IoXCJwYXlsb2FkX2xlbiBtdXN0IGJlIGxhcmdlciB0aGFuIGdzb19zaXplXCIpXG4raWYgYXJncy5wYXlsb2FkX2xlbiBcdTAwM2UgYXJncy5nc29fc2l6ZSAqIFVEUF9NQVhfU0VHTUVOVFM6XG4rICAgIHBhcnNlci5lcnJvcihcInBheWxvYWRfbGVuIGV4Y2VlZHMgVURQX01BWF9TRUdNRU5UU1wiKVxuK1xuK1NPTF9VRFAgPSBnZXRhdHRyKHNvY2tldCwgXCJTT0xfVURQXCIsIHNvY2tldC5JUFBST1RPX1VEUClcbitVRFBfU0VHTUVOVCA9IGdldGF0dHIoc29ja2V0LCBcIlVEUF9TRUdNRU5UXCIsIDEwMylcbitcbitzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pXG4rc29jay5iaW5kKChhcmdzLnNyYywgMCkpXG4rXG4rcGF5bG9hZCA9IGJcImJcIiAqIGFyZ3MucGF5bG9hZF9sZW5cbitjbXNnID0gWyhTT0xfVURQLCBVRFBfU0VHTUVOVCwgc3RydWN0LnBhY2soXCI9SFwiLCBhcmdzLmdzb19zaXplKSldXG4rXG4rc2VudCA9IHNvY2suc2VuZG1zZyhbcGF5bG9hZF0sIGNtc2csIDAsIChhcmdzLmRzdCwgYXJncy5wb3J0KSlcbitzeXMuZXhpdChzZW50ICE9IGxlbihwYXlsb2FkKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDE1OjMwOjUzLjYzNTc3NzY4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1MjA5OTc4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIGBzY2hfZHVhbHBpMmAgQmFja2xvZyBBY2NvdW50aW5nKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgIGFuZCBhZGRpbmcgYSB0ZXN0IGZvciBpdCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9gLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IGEgYnVnIGZpeCBhbmQgYSBjb3JyZXNwb25kaW5nIHRlc3QgY2FzZSwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgZHVhbHBpMl9xZGlzY19lbnF1ZXVlYCwgYW5kIHRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBiYWNrbG9nIGFjY291bnRpbmcgZm9yIEdlbmVyaWMgU2VnbWVudGF0aW9uIE9mZmxvYWQgKEdTTykgcGFja2V0cy4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgR1NPIG9mdGVuIGhhcyBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCB0cmFmZmljIGNvbnRyb2wuXG5cbkxldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGRpZmYuICBBaCwgaXQgc2VlbXMgd2UgaGF2ZSBhIHJlZHVjdGlvbiBpbiBgY250YCBhbmQgYSBjb3JyZXNwb25kaW5nIGFkanVzdG1lbnQgdG8gYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIGNvcnJlY3RpbmcgYW4gaXNzdWUgd2hlcmUgR1NPIHBhY2tldHMgd2VyZW4ndCBiZWluZyBhY2NvdW50ZWQgZm9yIGNvcnJlY3RseSB3aGVuIHRoZWlyIGludGVybmFsIHNlZ21lbnRzIGFyZSBwcm9jZXNzZWQuIFdlJ3JlIG5vdyBjb3JyZWN0bHkgZGVjcmVtZW50aW5nIHRoZSBiYWNrbG9nLiBQcmV2aW91c2x5LCB0aGUgb3JpZ2luYWwgYHNrYmAgc3RhdGlzdGljcyB3ZXJlIGJlaW5nIGluY29ycmVjdGx5IGFkanVzdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNvcnJlY3Rpb24sIHRoZSBjb21tZW50IG1ha2VzIHRoaXMgYWJ1bmRhbnRseSBjbGVhci5cblxuVGhlIGtleSBjaGFuZ2UgaXMgYXJvdW5kIGxpbmVzIDQ2MSB0byA0ODguIEkgY2FuIHNlZSB0aGUgYWRqdXN0bWVudCB0byBiYWNrbG9nIHJlZHVjdGlvbiBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIGVhY2ggc2VnbWVudGVkIHBhY2tldCBhbmQgdGhlIG9yaWdpbmFsIHBhY2tldC4gU28gaXQncyBhYm91dCBjb3JyZWN0aW5nIGhvdyB0aGUgYmFja2xvZyBpcyBhZGp1c3RlZCBmb3IgdGhlIG9yaWdpbmFsIHBhY2tldCBhZnRlciBpdHMgR1NPIHNlZ21lbnRzIGhhdmUgYmVlbiBoYW5kbGVkLiAgSXQgYXBwZWFycyB0byBmaXggYW4gYWNjb3VudGluZyBlcnJvciBmb3IgR1NPIHBhY2tldHMsIHByZXZlbnRpbmcgaW5mbGF0ZWQgb3IgZGVmbGF0ZWQgYmFja2xvZyB2YWx1ZXMgaW4gdGhlIGBzY2hfZHVhbHBpMmAgcWRpc2MuIFRoZSBhZGRpdGlvbiBvZiB0aGUgY29uZGl0aW9uYWwgYGNudCBcdTAwM2UgMCA/IE5FVF9YTUlUX1NVQ0NFU1MgOiBlcnJgIG1ha2VzIHNlbnNlIGluIHRoaXMgY29udGV4dC5cblxuTm93LCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGEgYml0IGJldHRlciwgSSdkIGxpa2UgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGZvciB0aGUgYHNjaF9kdWFscGkyYCBRZGlzYy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciB0aGVtIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdXNpbmcgYGdyZXBwZXJgIGp1c3QgdG8gZ2V0IGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhpcyBpcyBlbmFibGVkLCBhbmQgYW55IHBvc3NpYmxlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxNSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDE1OjMxOjAyLjE1Njc3ODAzN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTY5ODA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdWFscGkyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDE4PWNvbmZpZyBORVRfU0NIX0RVQUxQSTJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQyNS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5uZXQvc2NoZWQvS2NvbmZpZzo0MjY6XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHVhbHBpMi5cXG5uZXQvc2NoZWQvS2NvbmZpZy00MjctXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXFx0Kz0gc2NoX2R1YWxwaTIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTktICpcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDogKiBEdWFsUEkgSW1wcm92ZWQgd2l0aCBhIFNxdWFyZSAoZHVhbHBpMik6XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEtICogLSBTdXBwb3J0cyBjb25nZXN0aW9uIGNvbnRyb2xzIHRoYXQgY29tcGx5IHdpdGggdGhlIFByYWd1ZSByZXF1aXJlbWVudHNcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQyLSAqIGkuZS4sIHR3aWNlIHRoZSBtYXhpbWFsIHNuZF9jd25kLlxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzOiAqIE1BWF9QUk9CIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBSTkcgaW4gZHVhbHBpMl9yb2xsKCkuXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQtICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01MC0vKiBTY2FsZWQgdmFsdWVzIG9mIGFscGhhL2JldGEgbXVzdCBmaXQgaW4gMzJiIHRvIGF2b2lkIG92ZXJmbG93IGluIGxhdGVyXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTE6ICogY29tcHV0YXRpb25zLiBDb25zZXF1ZW50bHkgKHNlZSBhbmQgZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKCkpLCB0aGVpclxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUyLSAqIG5ldGxpbmstcHJvdmlkZWQgdmFsdWVzIGNhbiB1c2UgYXQgbW9zdCAzMWIsIGkuZS4gYmUgYXQgbW9zdCAoMl4yMyktMVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjktXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzA6c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzEtXFx0c3RydWN0IFFkaXNjICpsX3F1ZXVlO1xcdC8qIFRoZSBMNFMgTG93IGxhdGVuY3kgcXVldWUgKEwtcXVldWUpICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyOnN0cnVjdCBkdWFscGkyX3NrYl9jYiB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIzLVxcdHU2NCB0cztcXHRcXHRcXHQvKiBUaW1lc3RhbXAgYXQgZW5xdWV1ZSAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTI4LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyOTplbnVtIGR1YWxwaTJfY2xhc3NpZmljYXRpb25fcmVzdWx0cyB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTMwLVxcdERVQUxQSTJfQ19DTEFTU0lDXFx0PSAwLFxcdC8qIEMtcXVldWUgKi9cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEzNS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMzY6c3RhdGljIHN0cnVjdCBkdWFscGkyX3NrYl9jYiAqZHVhbHBpMl9za2JfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMzcte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEzODpcXHRxZGlzY19jYl9wcml2YXRlX3ZhbGlkYXRlKHNrYiwgc2l6ZW9mKHN0cnVjdCBkdWFscGkyX3NrYl9jYikpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEzOTpcXHRyZXR1cm4gKHN0cnVjdCBkdWFscGkyX3NrYl9jYiAqKXFkaXNjX3NrYl9jYihza2IpLVxcdTAwM2VkYXRhO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE0MC19XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE0MjpzdGF0aWMgdTY0IGR1YWxwaTJfc29qb3Vybl90aW1lKHN0cnVjdCBza19idWZmICpza2IsIHU2NCByZWZlcmVuY2UpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTQzLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNDQ6XFx0cmV0dXJuIHJlZmVyZW5jZSAtIGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZXRzO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE0NS19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xNDc9c3RhdGljIHU2NCBoZWFkX2VucXVldWVfdGltZShzdHJ1Y3QgUWRpc2MgKnEpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTAtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTUxOlxcdHJldHVybiBza2IgPyBkdWFscGkyX3NrYl9jYihza2IpLVxcdTAwM2V0cyA6IDA7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTUyLX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTMtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTU0OnN0YXRpYyB1MzIgZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKHUzMiBwYXJhbSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNTUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTYxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE2MjpzdGF0aWMgdTMyIGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKHUzMiBwYXJhbSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNjMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTY5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjE3MDpzdGF0aWMga3RpbWVfdCBuZXh0X3BpMl90aW1lb3V0KHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTcxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTE3NT1zdGF0aWMgYm9vbCBza2JfaXNfbDRzKHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTc2LXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxNzc6XFx0cmV0dXJuIGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWNsYXNzaWZpZWQgPT0gRFVBTFBJMl9DX0w0UztcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xNzgtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTgwPXN0YXRpYyBib29sIHNrYl9pbl9sX3F1ZXVlKHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTgxLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxODI6XFx0cmV0dXJuIGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWNsYXNzaWZpZWQgIT0gRFVBTFBJMl9DX0NMQVNTSUM7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTgzLX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xODQtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTg1OnN0YXRpYyBib29sIHNrYl9hcHBseV9zdGVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTg2LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE4OS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxOTA6c3RhdGljIGJvb2wgZHVhbHBpMl9tYXJrKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTkxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTE5OC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxOTk6c3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjA3LSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIwODpzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjA5OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YylcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE0LVxcdFxcdCgoaW50KXEtXFx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoyMTU6XFx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjE2LX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTctXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjE4OnN0YXRpYyBib29sIGR1YWxwaTJfcm9sbCh1MzIgcHJvYilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMTkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjI5LSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzMDpzdGF0aWMgYm9vbCBkdWFscGkyX2NsYXNzaWNfbWFya2luZyhzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTIzMS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHByb2IsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzMte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNDpcXHRpZiAoZHVhbHBpMl9yb2xsKHByb2IpIFxcdTAwMjZcXHUwMDI2IGR1YWxwaTJfcm9sbChwcm9iKSkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNTpcXHRcXHRpZiAob3ZlcmxvYWQgfHwgZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlZWN0ID09IElORVRfRUNOX05PVF9FQ1QpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjM2LVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjIzNzpcXHRcXHRkdWFscGkyX21hcmsocSwgc2tiKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yMzgtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjUyLSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI1MzpzdGF0aWMgYm9vbCBkdWFscGkyX3NjYWxhYmxlX21hcmtpbmcoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNTQtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjYwLVxcdFxcdGlmICghcS1cXHUwMDNlZHJvcF9vdmVybG9hZCB8fFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI2MTpcXHRcXHQgICAgIShkdWFscGkyX3JvbGwocHJvYikgXFx1MDAyNlxcdTAwMjYgZHVhbHBpMl9yb2xsKHByb2IpKSlcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNjItXFx0XFx0XFx0Z290byBtYXJrO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjY2LVxcdC8qIFdlIGNhbiBzYWZlbHkgY3V0IHRoZSB1cHBlciAzMmIgYXMgb3ZlcmxvYWQ9PWZhbHNlICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MjY3OlxcdGlmIChkdWFscGkyX3JvbGwobG9jYWxfbF9wcm9iKSkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI2OC1cXHRcXHQvKiBOb24tRUNUIHBhY2tldHMgY291bGQgaGF2ZSBjbGFzc2lmaWVkIGFzIEw0UyBieSBmaWx0ZXJzLiAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI2OTpcXHRcXHRpZiAoZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlZWN0ID09IElORVRfRUNOX05PVF9FQ1QpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjcwLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI3MS1tYXJrOlxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI3MjpcXHRcXHRkdWFscGkyX21hcmsocSwgc2tiKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yNzMtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjgxLSAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI4MjpzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjgzLVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0yOTUtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mjk2OlxcdHN3aXRjaCAoZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlY2xhc3NpZmllZCkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTI5Ny1cXHRjYXNlIERVQUxQSTJfQ19DTEFTU0lDOlxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjI5ODpcXHRcXHRyZXR1cm4gZHVhbHBpMl9jbGFzc2ljX21hcmtpbmcocSwgc2tiLCBwcm9iLCBvdmVybG9hZCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMjk5LVxcdGNhc2UgRFVBTFBJMl9DX0w0UzpcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozMDA6XFx0XFx0cmV0dXJuIGR1YWxwaTJfc2NhbGFibGVfbWFya2luZyhxLCBza2IsIGxvY2FsX2xfcHJvYiwgcHJvYixcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zMDEtXFx0XFx0XFx0XFx0XFx0XFx0b3ZlcmxvYWQpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzA2LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjMwNzpzdGF0aWMgdm9pZCBkdWFscGkyX3JlYWRfZWN0KHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzA4LXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozMDk6XFx0c3RydWN0IGR1YWxwaTJfc2tiX2NiICpjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzEwLVxcdGludCB3bGVuID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDAtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MzQxOnN0YXRpYyBpbnQgZHVhbHBpMl9za2JfY2xhc3NpZnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDItXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDMte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjM0NDpcXHRzdHJ1Y3QgZHVhbHBpMl9za2JfY2IgKmNiID0gZHVhbHBpMl9za2JfY2Ioc2tiKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0zNDUtXFx0c3RydWN0IHRjZl9yZXN1bHQgcmVzO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzQ4LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjM0OTpcXHRkdWFscGkyX3JlYWRfZWN0KHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzUwLVxcdGlmIChjYi1cXHUwMDNlZWN0IFxcdTAwMjYgcS1cXHUwMDNlZWNuX21hc2spIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4NC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzozODU6c3RhdGljIGludCBkdWFscGkyX2VucXVldWVfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTM4Ny17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mzg4OlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Mzg5OlxcdHN0cnVjdCBkdWFscGkyX3NrYl9jYiAqY2I7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMzkwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDAzLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQwNDpcXHRjYiA9IGR1YWxwaTJfc2tiX2NiKHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDA1LVxcdGNiLVxcdTAwM2V0cyA9IGt0aW1lX2dldF9ucygpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDE0LVxcdFxcdC8qIEFwcGx5IHN0ZXAgdGhyZXNoIGlmIHNrYiBpcyBMNFMgXFx1MDAyNlxcdTAwMjYgTC1xdWV1ZSBsZW4gXFx1MDAzZT0gbWluX3FsZW4gKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0MTU6XFx0XFx0ZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlYXBwbHlfc3RlcCA9IHNrYl9hcHBseV9zdGVwKHNrYiwgcSk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDE2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDMwLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjQzMTovKiBCeSBkZWZhdWx0LCBkdWFscGkyIHdpbGwgc3BsaXQgR1NPIHNrYnMgaW50byBpbmRlcGVuZGVudCBza2JzIGFuZCBlbnF1ZXVlXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDMyLSAqIGVhY2ggb2YgdGhvc2UgaW5kaXZpZHVhbGx5LiBUaGlzIHlpZWxkcyB0aGUgZm9sbG93aW5nIGJlbmVmaXRzLCBhdCB0aGVcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQzOC0gKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Mzk6c3RhdGljIGludCBkdWFscGkyX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQwLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQxLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0NDI6XFx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDMtXFx0aW50IGVycjtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NDQtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDQ1OlxcdGVyciA9IGR1YWxwaTJfc2tiX2NsYXNzaWZ5KHEsIHNrYik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDQ2LVxcdGlmIChlcnIgIT0gTkVUX1hNSVRfU1VDQ0VTUykge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNDcyLVxcdFxcdFxcdCAqICgyKSBDb3B5IGNsYXNzaWZpZWQgYW5kIGVjdCB2YWx1ZXMgb2YgYW4gc2tiXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDczOlxcdFxcdFxcdCAqICgzKSBFbnF1ZXVlIGZyYWdtZW50IFxcdTAwMjYgc2V0IHRzIGluIGR1YWxwaTJfZW5xdWV1ZV9za2JcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NzQtXFx0XFx0XFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy00NzYtXFx0XFx0XFx0cWRpc2Nfc2tiX2NiKG5za2IpLVxcdTAwM2Vwa3Rfc2VncyA9IDE7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NDc3OlxcdFxcdFxcdGR1YWxwaTJfc2tiX2NiKG5za2IpLVxcdTAwM2VjbGFzc2lmaWVkID1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzg6XFx0XFx0XFx0XFx0ZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlY2xhc3NpZmllZDtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0Nzk6XFx0XFx0XFx0ZHVhbHBpMl9za2JfY2IobnNrYiktXFx1MDAzZWVjdCA9IGR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWVjdDtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo0ODA6XFx0XFx0XFx0ZXJyID0gZHVhbHBpMl9lbnF1ZXVlX3NrYihuc2tiLCBzY2gsIHRvX2ZyZWUpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTQ4MS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUwMC1cXHR9XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTAxOlxcdHJldHVybiBkdWFscGkyX2VucXVldWVfc2tiKHNrYiwgc2NoLCB0b19mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01MDItfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NTE0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZGVxdWV1ZV9wYWNrZXQoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTE1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTE2LVxcdFxcdFxcdFxcdCAgICAgIGludCAqY3JlZGl0X2NoYW5nZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTUzOC1cXHR9IGVsc2Uge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjUzOTpcXHRcXHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDAtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDctXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTQ4OnN0YXRpYyBpbnQgZG9fc3RlcF9hcW0oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NDktXFx0XFx0ICAgICAgIHU2NCBub3cpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NTUtXFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1NjpcXHRcXHRxZGVsYXkgPSBkdWFscGkyX3Nvam91cm5fdGltZShza2IsIG5vdyk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTU3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1ODpcXHRpZiAoZHVhbHBpMl9za2JfY2Ioc2tiKS1cXHUwMDNlYXBwbHlfc3RlcCBcXHUwMDI2XFx1MDAyNiBxZGVsYXkgXFx1MDAzZSBxLVxcdTAwM2VzdGVwX3RocmVzaCkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU1OTpcXHRcXHRpZiAoIWR1YWxwaTJfc2tiX2NiKHNrYiktXFx1MDAzZWVjdCkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU2MC1cXHRcXHRcXHQvKiBEcm9wIHRoaXMgbm9uLUVDVCBwYWNrZXQgKi9cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU2My1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NjQ6XFx0XFx0aWYgKGR1YWxwaTJfbWFyayhxLCBza2IpKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU2NS1cXHRcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXN0ZXBfbWFya3MsIHEtXFx1MDAzZXN0ZXBfbWFya3MgKyAxKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU3MC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo1NzE6c3RhdGljIHZvaWQgZHJvcF9hbmRfcmV0cnkoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy01NzItXFx0XFx0XFx0ICAgc3RydWN0IFFkaXNjICpzY2gsIGVudW0gcWRpc2NfZHJvcF9yZWFzb24gcmVhc29uKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTc5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjU4MDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKl9fZHVhbHBpMl9xZGlzY19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTU4MS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NTgyOlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNTgzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MDktXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjEwOnN0YXRpYyB2b2lkIGR1YWxwaTJfZGVxdWV1ZV9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYxMS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjEyOlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjEzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjIxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjYyMjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmR1YWxwaTJfcWRpc2NfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MjMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjI1LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjYyNjpcXHRza2IgPSBfX2R1YWxwaTJfcWRpc2NfZGVxdWV1ZShzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYyNy1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2Mjg6XFx0ZHVhbHBpMl9kZXF1ZXVlX2Ryb3Aoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzItXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjMzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHVhbHBpMl9wZWVrKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTYzNC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzctXFx0aWYgKCFza2IpIHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo2Mzg6XFx0XFx0c2tiID0gX19kdWFscGkyX3FkaXNjX2RlcXVldWUoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02MzktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NDYtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjQ3OlxcdFxcdGR1YWxwaTJfZGVxdWV1ZV9kcm9wKHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjQ4LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTY1Mz1zdGF0aWMgczY0IF9fc2NhbGVfZGVsdGEodTY0IGRpZmYpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NTgtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NjU5OnN0YXRpYyB2b2lkIGdldF9xdWV1ZV9kZWxheXMoc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTY0ICpxZGVsYXlfYyxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy02NjAtXFx0XFx0XFx0ICAgICB1NjQgKnFkZWxheV9sKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9NjcyPXN0YXRpYyB1MzIgY2FsY3VsYXRlX3Byb2JhYmlsaXR5KHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTY3My17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Njc0OlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNjc1LVxcdHUzMiBuZXdfcHJvYjtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTczMz1zdGF0aWMgdTMyIGNvbnZlcnRfbnNfdG9fdXNlYyh1NjQgbnMpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzQyOnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBkdWFscGkyX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03NDMte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc0NDpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gdGltZXJfY29udGFpbmVyX29mKHEsIHRpbWVyLCBwaTJfdGltZXIpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc0NS1cXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXFx1MDAzZXNjaDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc1OS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NjA6c3RhdGljIHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gZHVhbHBpMl9hbHBoYV9iZXRhX3JhbmdlID0ge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2MS1cXHQubWluID0gMSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2NC1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGR1YWxwaTJfcG9saWN5W1RDQV9EVUFMUEkyX01BWCArIDFdID0ge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc2Ni1cXHRbVENBX0RVQUxQSTJfTElNSVRdXFx0XFx0PSBOTEFfUE9MSUNZX01JTihOTEFfVTMyLCAxKSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc3MC1cXHRbVENBX0RVQUxQSTJfQUxQSEFdXFx0XFx0PVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjc3MTpcXHRcXHROTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1UzMiwgXFx1MDAyNmR1YWxwaTJfYWxwaGFfYmV0YV9yYW5nZSksXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzcyLVxcdFtUQ0FfRFVBTFBJMl9CRVRBXVxcdFxcdD1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo3NzM6XFx0XFx0TkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VMzIsIFxcdTAwMjZkdWFscGkyX2FscGhhX2JldGFfcmFuZ2UpLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTc3NC1cXHRbVENBX0RVQUxQSTJfU1RFUF9USFJFU0hfUEtUU11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTAtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6NzkxOnN0YXRpYyBpbnQgZHVhbHBpMl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTItXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy03OTQtXFx0c3RydWN0IG5sYXR0ciAqdGJbVENBX0RVQUxQSTJfTUFYICsgMV07XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6Nzk1OlxcdHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnE7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtNzk2LVxcdGludCBvbGRfYmFja2xvZztcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTgwMy1cXHR9XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODA0OlxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRDQV9EVUFMUEkyX01BWCwgb3B0LCBkdWFscGkyX3BvbGljeSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04MDUtXFx0XFx0XFx0ICAgICAgIGV4dGFjayk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04NDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODQyOlxcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlcGkyX2FscGhhLCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoYWxwaGEpKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04NDMtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtODQ3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjg0ODpcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZXBpMl9iZXRhLCBkdWFscGkyX3NjYWxlX2FscGhhX2JldGEoYmV0YSkpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTg0OS1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04ODctXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6ODg4OlxcdFxcdGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzY2gsIHEsIHdjKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy04ODktXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTQ0LS8qIERlZmF1bHQgYWxwaGEvYmV0YSB2YWx1ZXMgZ2l2ZSBhIDEwZEIgc3RhYmlsaXR5IG1hcmdpbiB3aXRoIG1heF9ydHQ9MTAwbXMuICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTQ1OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXRfZGVmYXVsdChzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NDYte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk0NzpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk0OC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk1My1cXHRxLVxcdTAwM2VwaTJfdHVwZGF0ZSA9IDE2ICogTlNFQ19QRVJfTVNFQztcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5NTQ6XFx0cS1cXHUwMDNlcGkyX2FscGhhID0gZHVhbHBpMl9zY2FsZV9hbHBoYV9iZXRhKDQxKTtcXHQvKiB+MC4xNiBIeiAqIDI1NiAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk1NTpcXHRxLVxcdTAwM2VwaTJfYmV0YSA9IGR1YWxwaTJfc2NhbGVfYWxwaGFfYmV0YSg4MTkpO1xcdC8qIH4zLjIwIEh6ICogMjU2ICovXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTU2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTU5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk2MDpcXHRkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24ocS1cXHUwMDNlc2NoLCBxLCAxMCk7XFx0Lyogd2M9MTAlLCB3bD05MCUgKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NjEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NjktXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6OTcwOnN0YXRpYyBpbnQgZHVhbHBpMl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTcxLVxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05NzIte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk3MzpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk3NC1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc2LVxcdHNjaC1cXHUwMDNlZmxhZ3MgfD0gVENRX0ZfREVRVUVVRV9EUk9QUztcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5Nzc6XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2cS1cXHUwMDNlcGkyX3RpbWVyLCBkdWFscGkyX3RpbWVyLCBDTE9DS19NT05PVE9OSUMsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTc4LVxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9BQlNfUElOTkVEX1NPRlQpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTg5LVxcdHEtXFx1MDAzZXNjaCA9IHNjaDtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzo5OTA6XFx0ZHVhbHBpMl9yZXNldF9kZWZhdWx0KHNjaCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtOTkxLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTk5Mi1cXHRpZiAob3B0IFxcdTAwMjZcXHUwMDI2IG5sYV9sZW4ob3B0KSkge1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjk5MzpcXHRcXHRlcnIgPSBkdWFscGkyX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy05OTQtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDAzLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwMDQ6c3RhdGljIGludCBkdWFscGkyX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAwNS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAwNjpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwMDctXFx0c3RydWN0IG5sYXR0ciAqb3B0cztcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwMjYtXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgVENBX0RVQUxQSTJfQUxQSEEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTAyNzpcXHRcXHRcXHRkdWFscGkyX3Vuc2NhbGVfYWxwaGFfYmV0YShSRUFEX09OQ0UocS1cXHUwMDNlcGkyX2FscGhhKSkpIHx8XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAyOC1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBUQ0FfRFVBTFBJMl9CRVRBLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwMjk6XFx0XFx0XFx0ZHVhbHBpMl91bnNjYWxlX2FscGhhX2JldGEoUkVBRF9PTkNFKHEtXFx1MDAzZXBpMl9iZXRhKSkpIHx8XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTAzMC1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBUQ0FfRFVBTFBJMl9TVEVQX1RIUkVTSF9QS1RTLCBzdGVwX3RoKSB8fFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA1My1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBUQ0FfRFVBTFBJMl9BTFBIQSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDU0OlxcdFxcdFxcdGR1YWxwaTJfdW5zY2FsZV9hbHBoYV9iZXRhKFJFQURfT05DRShxLVxcdTAwM2VwaTJfYWxwaGEpKSkgfHxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDU1LVxcdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX0JFVEEsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTA1NjpcXHRcXHRcXHRkdWFscGkyX3Vuc2NhbGVfYWxwaGFfYmV0YShSRUFEX09OQ0UocS1cXHUwMDNlcGkyX2JldGEpKSkgfHxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDU3LVxcdCAgICBubGFfcHV0X3UzMihza2IsIFRDQV9EVUFMUEkyX1NURVBfVEhSRVNIX1VTLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTA3OS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDgwOnN0YXRpYyBpbnQgZHVhbHBpMl9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEwODEte1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEwODI6XFx0c3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMDgzOlxcdHN0cnVjdCB0Y19kdWFscGkyX3hzdGF0cyBzdCA9IHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMDg0LVxcdFxcdC5wcm9iXFx0XFx0XFx0PSBSRUFEX09OQ0UocS1cXHUwMDNlcGkyX3Byb2IpLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEwNi0gKi9cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTA3OnN0YXRpYyB2b2lkIGR1YWxwaTJfcmVzZXQoc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEwOC17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEwOTpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMTAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTIyLVxcdFdSSVRFX09OQ0UocS1cXHUwMDNlbWF4X21lbW9yeV91c2VkLCAwKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTIzOlxcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjQtfVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjUtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEyNjpzdGF0aWMgdm9pZCBkdWFscGkyX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEyNy17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEyODpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTM2LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExMzc6c3RhdGljIHN0cnVjdCBRZGlzYyAqZHVhbHBpMl9sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGFyZylcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTM4LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNDEtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE0MjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkdWFscGkyX2ZpbmQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkKVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNDMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE0Ni1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTQ3OnN0YXRpYyB1bnNpZ25lZCBsb25nIGR1YWxwaTJfYmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBwYXJlbnQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE0OC1cXHRcXHRcXHRcXHQgIHUzMiBjbGFzc2lkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1Mi1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTUzOnN0YXRpYyB2b2lkIGR1YWxwaTJfdW5iaW5kKHN0cnVjdCBRZGlzYyAqcSwgdW5zaWduZWQgbG9uZyBjbClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTU0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNTYtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE1NzpzdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqZHVhbHBpMl90Y2ZfYmxvY2soc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE1OS17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE2MDpcXHRzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExNjEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTY2LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExNjc6c3RhdGljIHZvaWQgZHVhbHBpMl93YWxrKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICphcmcpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTE2OC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTg4LS8qIE1pbmltYWwgY2xhc3Mgc3VwcG9ydCB0byBoYW5kbGUgdGMgZmlsdGVycyAqL1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExODk6c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgZHVhbHBpMl9jbGFzc19vcHMgPSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5MDpcXHQubGVhZlxcdFxcdD0gZHVhbHBpMl9sZWFmLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTE6XFx0LmZpbmRcXHRcXHQ9IGR1YWxwaTJfZmluZCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTkyOlxcdC50Y2ZfYmxvY2tcXHQ9IGR1YWxwaTJfdGNmX2Jsb2NrLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTM6XFx0LmJpbmRfdGNmXFx0PSBkdWFscGkyX2JpbmQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5NDpcXHQudW5iaW5kX3RjZlxcdD0gZHVhbHBpMl91bmJpbmQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTE5NTpcXHQud2Fsa1xcdFxcdD0gZHVhbHBpMl93YWxrLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExOTYtfTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTk3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjExOTg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZHVhbHBpMl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTk5OlxcdC5pZFxcdFxcdD0gXFxcImR1YWxwaTJcXFwiLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDA6XFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNmR1YWxwaTJfY2xhc3Nfb3BzLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDE6XFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEpLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDI6XFx0LmVucXVldWVcXHQ9IGR1YWxwaTJfcWRpc2NfZW5xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjAzOlxcdC5kZXF1ZXVlXFx0PSBkdWFscGkyX3FkaXNjX2RlcXVldWUsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwNDpcXHQucGVla1xcdFxcdD0gZHVhbHBpMl9wZWVrLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMDU6XFx0LmluaXRcXHRcXHQ9IGR1YWxwaTJfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA2OlxcdC5kZXN0cm95XFx0PSBkdWFscGkyX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwNzpcXHQucmVzZXRcXHRcXHQ9IGR1YWxwaTJfcmVzZXQsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwODpcXHQuY2hhbmdlXFx0XFx0PSBkdWFscGkyX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjA5OlxcdC5kdW1wXFx0XFx0PSBkdWFscGkyX2R1bXAsXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMDpcXHQuZHVtcF9zdGF0c1xcdD0gZHVhbHBpMl9kdW1wX3N0YXRzLFxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTEtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjEyLX07XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxMzpNT0RVTEVfQUxJQVNfTkVUX1NDSChcXFwiZHVhbHBpMlxcXCIpO1xcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTEyMTQtXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxNTpzdGF0aWMgaW50IF9faW5pdCBkdWFscGkyX21vZHVsZV9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIxNi17XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIxNzpcXHRyZXR1cm4gcmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmR1YWxwaTJfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE4LX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjE5LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjA6c3RhdGljIHZvaWQgX19leGl0IGR1YWxwaTJfbW9kdWxlX2V4aXQodm9pZClcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIxLXtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjIyOlxcdHVucmVnaXN0ZXJfcWRpc2MoXFx1MDAyNmR1YWxwaTJfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjIzLX1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjI0LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjU6bW9kdWxlX2luaXQoZHVhbHBpMl9tb2R1bGVfaW5pdCk7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIyNjptb2R1bGVfZXhpdChkdWFscGkyX21vZHVsZV9leGl0KTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjI3LVxcbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jOjEyMjg6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJEdWFsIFF1ZXVlIHdpdGggUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgSW1wcm92ZWQgd2l0aCBhIFNxdWFyZSAoZHVhbHBpMikgc2NoZWR1bGVyXFxcIik7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIyOS1NT0RVTEVfQVVUSE9SKFxcXCJLb2VuIERlIFNjaGVwcGVyIFxcdTAwM2Nrb2VuLmRlX3NjaGVwcGVyQG5va2lhLWJlbGwtbGFicy5jb21cXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDE1OjMxOjAyLjI0ODQ4NjgzNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDEzNDQ1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTY2hlZHVsZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYSBmaXggcmVsYXRlZCB0byBiYWNrbG9nIGFjY291bnRpbmcgd2hlbiBHU08gcGFja2V0cyBhcmUgZW5xdWV1ZWQgaW4gdGhlIGBkdWFscGkyYCBxZGlzYy4gVGhlIGNvbmZpZyBvcHRpb24gaXMgYE5FVF9TQ0hfRFVBTFBJMmAsIGFuZCB0aGUgZnVuY3Rpb24gZGlyZWN0bHkgYWZmZWN0ZWQgaXMgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciwgYW5kIHRoZSBwYXRoIHRvIHRoaXMgY29kZSBpcyBzdHJhaWdodGZvcndhcmQ6IGBkdWFscGkyX3FkaXNjX2VucXVldWVgICppcyogdGhlIGAuZW5xdWV1ZWAgY2FsbGJhY2sgZm9yIHRoZSBgZHVhbHBpMmAgcWRpc2MuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSBpc3N1ZXMgaW4gcGFja2V0IHNjaGVkdWxpbmcgYW5kIGFjY291bnRpbmcsIHRoaXMgaXMgKmFic29sdXRlbHkqIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgZGVwZW5kZW5jaWVzLiBUaGUgdGVzdCBlbnZpcm9ubWVudCBtZW50aW9ucyB0aGUgYHFmcWAgcWRpc2MgYXMgYSBwYXJlbnQuIFRoZSBhc3NvY2lhdGVkIGNvbmZpZyBvcHRpb24gdGhlcmUgaXMgYE5FVF9TQ0hfUUZRYC4gVGhvdWdoIHRoZSBjb2RlIGNoYW5nZXMgYXJlIGxvY2FsaXplZCB0byBgc2NoX2R1YWxwaTIuY2AsIHNvIGBORVRfU0NIX0RVQUxQSTJgIGlzIHRoZSBjcml0aWNhbCBvcHRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgTkVUX1NDSF9RRlFgIGlzbid0IGFjY2lkZW50YWxseSBhbHNvIHJlcXVpcmVkLCBldmVuIGluZGlyZWN0bHksIHRvIGF2b2lkIG1pc3NpbmcgYW55IGhpZGRlbiBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzMjEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMTU6MzE6MDcuMjQ5ODMzODU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTUwMzExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfU0NIX1FGUVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTI0ND1jb25maWcgTkVUX1NDSF9DSE9LRVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjU0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI1NTpjb25maWcgTkVUX1NDSF9RRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTYtXFx0dHJpc3RhdGUgXFxcIlF1aWNrIEZhaXIgUXVldWVpbmcgc2NoZWR1bGVyIChRRlEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVxcdCs9IHNjaF9jaG9rZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19ORVRfU0NIX1FGUSlcXHQrPSBzY2hfcWZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNTUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXFx0Kz0gc2NoX2NvZGVsLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMTU6MzE6MDcuMzg5MzQ0NTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMDc1NzgwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIER1YWxQSTIgU2NoZWR1bGVyIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYGR1YWxwaTJgIHNjaGVkdWxlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGluY2x1ZGUgYE5FVF9TQ0hfRFVBTFBJMmAgYW5kIGBORVRfU0NIX1FGUWAgaW4gYEVuYWJsZUNvbmZpZ3NgLCBhcyB0aGUgdGVzdCBjYXNlIHVzZXMgdGhlbSwgYnV0IGxldCdzIGJlIHByZWNpc2UuIFRoZSBtYWluIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGlzIGBkdWFscGkyX3FkaXNjX2VucXVldWVgLiBJJ3ZlIHZlcmlmaWVkIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIGRpcmVjdGx5IHRvdWNoZWQgYnkgdGhlIHBhdGNoLlxuXG5Ob3csIGEgY2xvc2VyIGxvb2sgYXQgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAsIHNwZWNpZmljYWxseSBpbiBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgLCByZXZlYWxzIGl0IGNhbGxzIHNldmVyYWwgb3RoZXIgZnVuY3Rpb25zOiBgZHVhbHBpMl9za2JfY2xhc3NpZnlgLCBgc2tiX2dzb19zZWdtZW50YCwgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLCBgY29uc3VtZV9za2JgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZV9za2JgLiBUaGUga2V5IGNoYW5nZSBjZW50ZXJzIGFyb3VuZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuXG5cblRoaXMgaXMgYSB2ZXJ5IHNwZWNpZmljIGZpeCB3aXRoaW4gdGhlIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGZ1bmN0aW9uLCBkZWFsaW5nIHdpdGggR1NPIHBhY2tldCBlbnF1ZXVlaW5nLiBUaGlzIG1lYW5zIHRoaXMgaXMgd29ydGggZnV6emluZywgYW5kIEkgc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBJIGNhbiBhbHNvIGRlZmluZSBgRm9jdXNTeW1ib2xzYCB0byBgW1wiZHVhbHBpMl9xZGlzY19lbnF1ZXVlXCJdYC5cblxuSW5pdGlhbGx5LCBJIGhhZCB0aG91Z2h0IHRvIGluY2x1ZGUgYE5FVF9TQ0hfUUZRYCwgYXMgdGhlIHRlc3QgdXNlcyBpdC4gQnV0IHRoZSBidWcgaXMgaW4gYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgYW5kIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYCwgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYSBxZGlzYyBpcyBhIGNoaWxkIG9mIGFub3RoZXIgcWRpc2MgKGNsYXNzZnVsIHFkaXNjKS4gYGR1YWxwaTJgIGl0c2VsZiBpcyBhIGNsYXNzbGVzcyBxZGlzYywgYnV0IGl0IGNhbiBiZSBhdHRhY2hlZCB0byBhIGNsYXNzZnVsIHFkaXNjIGxpa2UgYHFmcWAsIGBodGJgLCBgaGZzY2AsIGV0Yy4gQW55IGNsYXNzZnVsIHFkaXNjIHdvdWxkIHRyaWdnZXIgYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgIGNvcnJlY3RseSBpZiBpdCBoYXMgYSBwYXJlbnQuIFNvIGBORVRfU0NIX0RVQUxQSTJgIGlzIHRoZSBtYWluIG9uZS4gSSBjYW4gYWxzbyBhZGQgYE5FVF9TQ0hfUUZRYCBzaW5jZSB0aGUgdGVzdCB1c2VzIGl0LCBidXQgSSdsbCBzdGljayB3aXRoIG9ubHkgYE5FVF9TQ0hfRFVBTFBJMmAgdG8gYmUgYXMgZm9jdXNlZCBhcyBwb3NzaWJsZS5cblxuUXVpY2sgY2hlY2sgY29uZmlybXMgYGR1YWxwaTJgIGRlcGVuZHMgb24gYE5FVF9TQ0hFRGAsIGJ1dCB0aGF0IHNob3VsZCBiZSBpbXBsaWNpdGx5IGhhbmRsZWQuIEknbSBnb2luZyB0byBzZXQgYEVuYWJsZUNvbmZpZ3NgIHRvIGp1c3QgYFtcIk5FVF9TQ0hfRFVBTFBJMlwiXWAuXG5cbkluIHN1bW1hcnksIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIGZvciB0aGUgYGR1YWxwaTJgIG5ldHdvcmsgc2NoZWR1bGVyIHdoZW4gaXQgZGVhbHMgd2l0aCBHU08gcGFja2V0cy4gSXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGFuZCB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gYHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2dgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljLCBzbyBJIG5lZWQgdG8gZnV6eiBpdCB0byBtYWtlIHN1cmUgdGhlIGFjY291bnRpbmcgaXMgY29ycmVjdCBhbmQgdGhhdCBpdCBkb2Vzbid0IGNhdXNlIHVuZGVyZmxvd3Mgb3Igb3RoZXIgcmVsYXRlZCBpc3N1ZXMuIEl0J3MgYSBwcmVjaXNlIGZpeCwgd29ydGggcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0by4gSSdtIHJlYWR5IHRvIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk4MCwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMTU6MzE6MTkuNjk2OTI1ODU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI5NTYyOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImR1YWxwaTJfcWRpc2NfZW5xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBiYWNrbG9nIGFjY291bnRpbmcgb2YgdGhlIGBkdWFscGkyYCBuZXR3b3JrIHNjaGVkdWxlciB3aGVuIGhhbmRsaW5nIEdTTyBwYWNrZXRzLiBJdCBtb2RpZmllcyB0aGUgYGR1YWxwaTJfcWRpc2NfZW5xdWV1ZWAgZnVuY3Rpb24gdG8gY29ycmVjdGx5IGNhbGN1bGF0ZSBhbmQgcmVkdWNlIHRoZSBiYWNrbG9nIHVzaW5nIGBxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhY2NvdW50aW5nIGlzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgbGVhZCB0byB1bmRlcmZsb3dzIG9yIG90aGVyIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkdWFscGkyX3FkaXNjX2VucXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgYmFja2xvZyBhY2NvdW50aW5nIG9mIHRoZSBgZHVhbHBpMmAgbmV0d29yayBzY2hlZHVsZXIgd2hlbiBoYW5kbGluZyBHU08gcGFja2V0cy4gSXQgbW9kaWZpZXMgdGhlIGBkdWFscGkyX3FkaXNjX2VucXVldWVgIGZ1bmN0aW9uIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgYW5kIHJlZHVjZSB0aGUgYmFja2xvZyB1c2luZyBgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZ2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYWNjb3VudGluZyBpcyBjb3JyZWN0IGFuZCBkb2Vzbid0IGxlYWQgdG8gdW5kZXJmbG93cyBvciBvdGhlciBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[1] Phase: Succeeded StartedAt: 2026-06-19 15:31:32 +0000 UTC FinishedAt: 2026-06-19 15:31:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-19 15:31:32 +0000 UTC FinishedAt: 2026-06-19 15:31:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2] Phase: Succeeded StartedAt: 2026-06-19 15:31:32 +0000 UTC FinishedAt: 2026-06-19 17:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-19 15:31:32 +0000 UTC FinishedAt: 2026-06-19 17:26:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-19 15:31:32 +0000 UTC FinishedAt: 2026-06-19 15:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-19 15:31:32 +0000 UTC FinishedAt: 2026-06-19 15:31:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflows8hmv/series-workflows8hmv-convert-artifact-2723126248/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-19 15:31:42 +0000 UTC FinishedAt: 2026-06-19 15:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-19 15:31:42 +0000 UTC FinishedAt: 2026-06-19 15:57:46 +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:*f00082e5-2c14-42f2-b60b-ce085029210a,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-workflows8hmv/series-workflows8hmv-convert-artifact-2723126248/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": "0421791f-a33e-4334-a56c-591527d60cc3", "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-workflows8hmv/series-workflows8hmv-build-action-1367613790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-19 15:31:42 +0000 UTC FinishedAt: 2026-06-19 15:57:36 +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:*f00082e5-2c14-42f2-b60b-ce085029210a,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-workflows8hmv/series-workflows8hmv-convert-artifact-2723126248/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": "0421791f-a33e-4334-a56c-591527d60cc3", "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-workflows8hmv/series-workflows8hmv-build-action-1367613790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-19 15:57:46 +0000 UTC FinishedAt: 2026-06-19 15:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-19 15:57:46 +0000 UTC FinishedAt: 2026-06-19 15:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-19 15:57:46 +0000 UTC FinishedAt: 2026-06-19 15:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-19 15:57:46 +0000 UTC FinishedAt: 2026-06-19 15:57:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflows8hmv/series-workflows8hmv-convert-artifact-2484816591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-19 15:58:07 +0000 UTC FinishedAt: 2026-06-19 16:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-19 15:58:07 +0000 UTC FinishedAt: 2026-06-19 16:00:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0421791f-a33e-4334-a56c-591527d60cc3,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-workflows8hmv/series-workflows8hmv-build-action-1367613790/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-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-19 16:00:20 +0000 UTC FinishedAt: 2026-06-19 16:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-19 16:00:20 +0000 UTC FinishedAt: 2026-06-19 16:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-19 16:00:20 +0000 UTC FinishedAt: 2026-06-19 16:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-19 16:00:20 +0000 UTC FinishedAt: 2026-06-19 16:39:39 +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:*f00082e5-2c14-42f2-b60b-ce085029210a,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-workflows8hmv/series-workflows8hmv-convert-artifact-2484816591/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": "3c4123b6-5dc8-4da7-8d8c-1745f2129af2", "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-workflows8hmv/series-workflows8hmv-build-action-1121510758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Failed StartedAt: 2026-06-19 16:00:20 +0000 UTC FinishedAt: 2026-06-19 16:02:56 +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:*f00082e5-2c14-42f2-b60b-ce085029210a,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-workflows8hmv/series-workflows8hmv-convert-artifact-2484816591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(1) Phase: Succeeded StartedAt: 2026-06-19 16:09:15 +0000 UTC FinishedAt: 2026-06-19 16:37: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:*f00082e5-2c14-42f2-b60b-ce085029210a,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-workflows8hmv/series-workflows8hmv-convert-artifact-2484816591/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": "3c4123b6-5dc8-4da7-8d8c-1745f2129af2", "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-workflows8hmv/series-workflows8hmv-build-action-1121510758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-19 16:39:39 +0000 UTC FinishedAt: 2026-06-19 16:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-19 16:39:39 +0000 UTC FinishedAt: 2026-06-19 16:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-19 16:39:39 +0000 UTC FinishedAt: 2026-06-19 16:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-19 16:39:39 +0000 UTC FinishedAt: 2026-06-19 16:41:46 +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:*3c4123b6-5dc8-4da7-8d8c-1745f2129af2,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-workflows8hmv/series-workflows8hmv-build-action-1121510758/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-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 17:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 17:26:03 +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":["dualpi2_qdisc_enqueue"],"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:*0421791f-a33e-4334-a56c-591527d60cc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c4123b6-5dc8-4da7-8d8c-1745f2129af2,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-workflows8hmv/series-workflows8hmv-build-action-1367613790/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-workflows8hmv/series-workflows8hmv-build-action-1121510758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 16:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 16:42:02 +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":["dualpi2_qdisc_enqueue"],"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-workflows8hmv/series-workflows8hmv-convert-artifact-3892662920/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 16:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 16:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-19 16:41:56 +0000 UTC FinishedAt: 2026-06-19 16:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-19 16:42:06 +0000 UTC FinishedAt: 2026-06-19 17:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows8hmv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dualpi2_qdisc_enqueue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_DUALPI2"],"series_id":"705198b8-e29d-4882-bfba-d0675edb871b","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-19 16:42:06 +0000 UTC FinishedAt: 2026-06-19 17:25:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0421791f-a33e-4334-a56c-591527d60cc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c4123b6-5dc8-4da7-8d8c-1745f2129af2,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-workflows8hmv/series-workflows8hmv-build-action-1367613790/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-workflows8hmv/series-workflows8hmv-build-action-1121510758/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-workflows8hmv/series-workflows8hmv-convert-artifact-3892662920/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,}