Name: series-workflowtvjgr Phase: Succeeded StartedAt: 2026-06-23 13:51:48 +0000 UTC FinishedAt: 2026-06-23 18:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[0] Phase: Succeeded StartedAt: 2026-06-23 13:51:48 +0000 UTC FinishedAt: 2026-06-23 14:02:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 13:51:48 +0000 UTC FinishedAt: 2026-06-23 14:02:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "ae956cb1-71bf-46b5-ba98-6b37bb511c58" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "scalar32_min_max_lsh", "scalar_min_max_lsh", "scalar32_min_max_rsh", "scalar_min_max_rsh", "scalar32_min_max_arsh", "scalar_min_max_arsh", "is_safe_to_compute_dst_reg_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA2LzIzIDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9sc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyX21pbl9tYXhfYXJzaCYjMzQ7LAogICAgJiMzNDtpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHN1cHBvcnQgdHJhY2tpbmcgYm91bmRzIGZvciBzaGlmdCBvcGVyYXRpb25zIChMU0gsIFJTSCwgQVJTSCkgd2hlbiB0aGUgc2hpZnQgYW1vdW50IGlzIG5vdCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBoaWdobHkgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCBCUEYgdmVyaWZpZXIgbG9naWMsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIGluY29ycmVjdCBib3VuZHMgdHJhY2tpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOGI0ZGFhMGMyOWEyYjY5MDdlNjE0NTFkMjdlMDdlOGFmMTE1ZGM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTQ6MDE6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAyYWJjNzlkYmYyODFjMi4uYmYyNDdjMjE5Y2FiNTggMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTE0Mjc3LDcgJiM0MzsxNDI3Nyw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0c3RydWN0IHRudW0gc3VicmVnID0gdG51bV9zdWJyZWcoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmKTtcbiBcbiBcdF9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fc3VicmVnKHRudW1fbHNoaWZ0KHN1YnJlZywgdW1pbl92YWwpKTtcbiYjNDM7XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbiYjNDM7XHRcdFx0ICAgdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpIDogdG51bV91bmtub3duO1xuIFx0LyogTm90IHJlcXVpcmVkIGJ1dCBiZWluZyBjYXJlZnVsIG1hcmsgcmVnNjQgYm91bmRzIGFzIHVua25vd24gc29cbiBcdCAqIHRoYXQgd2UgYXJlIGZvcmNlZCB0byBwaWNrIHRoZW0gdXAgZnJvbSB0bnVtIGFuZCB6ZXh0IGxhdGVyIGFuZFxuIFx0ICogaWYgc29tZSBwYXRoIHNraXBzIHRoaXMgc3RlcCB3ZSBhcmUgc3RpbGwgc2FmZS5cbkBAIC0xNDMyMiw3ICYjNDM7MTQzMjMsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9sc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHRfX3NjYWxhcjY0X21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG4gXHRfX3NjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG4gXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX2xzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKTtcbiYjNDM7XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbiYjNDM7XHRcdFx0ICAgdG51bV9sc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247XG4gXHQvKiBXZSBtYXkgbGVhcm4gc29tZXRoaW5nIG1vcmUgZnJvbSB0aGUgdmFyX29mZiAqL1xuIFx0X191cGRhdGVfcmVnX2JvdW5kcyhkc3RfcmVnKTtcbiB9XG5AQCAtMTQzNDksNyAmIzQzOzE0MzUxLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9yc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHQgKiB2YXJfb2ZmIG9mIHRoZSByZXN1bHQuXG4gXHQgKi9cbiBcbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fcnNoaWZ0KHN1YnJlZywgdW1pbl92YWwpO1xuJiM0MztcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuJiM0MztcdFx0XHQgICB0bnVtX3JzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjtcbiBcdHJlZ19zZXRfdXJhbmdlMzIoZHN0X3JlZywgcmVnX3UzMl9taW4oZHN0X3JlZykgXHUwMDNlXHUwMDNlIHVtYXhfdmFsLFxuIFx0XHRcdCByZWdfdTMyX21heChkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpO1xuIFxuQEAgLTE0Mzc3LDcgJiM0MzsxNDM4MCw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBcdCAqIGFuZCByZWx5IG9uIGluZmVycmluZyBuZXcgb25lcyBmcm9tIHRoZSB1bnNpZ25lZCBib3VuZHMgYW5kXG4gXHQgKiB2YXJfb2ZmIG9mIHRoZSByZXN1bHQuXG4gXHQgKi9cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fcnNoaWZ0KGRzdF9yZWctXHUwMDNldmFyX29mZiwgdW1pbl92YWwpO1xuJiM0MztcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuJiM0MztcdFx0XHQgICB0bnVtX3JzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjtcbiBcdHJlZ19zZXRfdXJhbmdlNjQoZHN0X3JlZywgcmVnX3VtaW4oZHN0X3JlZykgXHUwMDNlXHUwMDNlIHVtYXhfdmFsLFxuIFx0XHRcdCByZWdfdW1heChkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpO1xuIFxuQEAgLTE0MzkyLDE4ICYjNDM7MTQzOTYsNDEgQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBcdFx0XHRcdCAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXG4ge1xuLVx0dTY0IHVtaW5fdmFsID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7XG4mIzQzO1x0dTMyIHVtaW5fc2hpZnQgPSByZWdfdTMyX21pbihzcmNfcmVnKTtcbiYjNDM7XHR1MzIgdW1heF9zaGlmdCA9IHJlZ191MzJfbWF4KHNyY19yZWcpO1xuJiM0MztcdHMzMiBzbWluID0gcmVnX3MzMl9taW4oZHN0X3JlZyk7XG4mIzQzO1x0czMyIHNtYXggPSByZWdfczMyX21heChkc3RfcmVnKTtcbiBcbi1cdC8qIFVwb24gcmVhY2hpbmcgaGVyZSwgc3JjX2tub3duIGlzIHRydWUgYW5kXG4tXHQgKiB1bWF4X3ZhbCBpcyBlcXVhbCB0byB1bWluX3ZhbC5cbi1cdCAqIEJsb3cgYXdheSB0aGUgZHN0X3JlZyB1bWluX3ZhbHVlL3VtYXhfdmFsdWUgYW5kIHJlbHkgb25cbi1cdCAqIGRzdF9yZWcgdmFyX29mZiB0byByZWZpbmUgdGhlIHJlc3VsdC5cbiYjNDM7XHQvKlxuJiM0MztcdCAqIEJQRl9BUlNIIG9uIDMyLWJpdCBzdWJyZWdpc3Rlci4gQVJTSCBpcyBhIHNpZ25lZCBkaXZpZGUgYnlcbiYjNDM7XHQgKiAyXmsgKHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMpLiBXaXRoIGEgbm9uLWNvbnN0YW50XG4mIzQzO1x0ICogc2hpZnQgaW4gW3VtaW4sIHVtYXhdLCB0aGUgcmVzdWx0IGlzIGJvdW5kZWQgYnkgZGl2aWRpbmcgdGhlXG4mIzQzO1x0ICogZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcyBvZiB0aGUgZGl2aXNvcjpcbiYjNDM7XHQgKlxuJiM0MztcdCAqICAgc21pbiBcdTAwM2U9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl1cbiYjNDM7XHQgKiAgIHNtYXggXHUwMDNjICAwOiAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtYXhdXG4mIzQzO1x0ICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl1cbiYjNDM7XHQgKlxuJiM0MztcdCAqIHZhcl9vZmYgaXMgdG51bV91bmtub3duIHNpbmNlIGEgbm9uLWNvbnN0YW50IHNoaWZ0IHByZXZlbnRzXG4mIzQzO1x0ICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuXG4gXHQgKi9cbi1cdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZyxcbi1cdFx0XHQgKHUzMikoKChzMzIpcmVnX3MzMl9taW4oZHN0X3JlZykpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCksXG4tXHRcdFx0ICh1MzIpKCgoczMyKXJlZ19zMzJfbWF4KGRzdF9yZWcpKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpKTtcbi1cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdCh0bnVtX3N1YnJlZyhkc3RfcmVnLVx1MDAzZXZhcl9vZmYpLCB1bWluX3ZhbCwgMzIpO1xuJiM0MztcdGlmICh1bWluX3NoaWZ0ID09IHVtYXhfc2hpZnQpIHtcbiYjNDM7XHRcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcdTAwM2VcdTAwM2UgdW1pbl9zaGlmdCksXG4mIzQzO1x0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpKTtcbiYjNDM7XHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdCh0bnVtX3N1YnJlZyhkc3RfcmVnLVx1MDAzZXZhcl9vZmYpLFxuJiM0MztcdFx0XHRcdFx0XHR1bWluX3NoaWZ0LCAzMik7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChzbWluIFx1MDAzZT0gMClcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFx1MDAzZVx1MDAzZSB1bWF4X3NoaWZ0KSxcbiYjNDM7XHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4mIzQzO1x0XHRlbHNlIGlmIChzbWF4IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpLFxuJiM0MztcdFx0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQpKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSxcbiYjNDM7XHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4mIzQzO1x0XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3Vua25vd247XG4mIzQzO1x0fVxuIFxuIFx0X19tYXJrX3JlZzY0X3VuYm91bmRlZChkc3RfcmVnKTtcbiBcdF9fdXBkYXRlX3JlZzMyX2JvdW5kcyhkc3RfcmVnKTtcbkBAIC0xNDQxMiwxNSAmIzQzOzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9hcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0XHRcdFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXG4ge1xuLVx0dTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7XG4mIzQzO1x0dTY0IHVtaW5fc2hpZnQgPSByZWdfdW1pbihzcmNfcmVnKTtcbiYjNDM7XHR1NjQgdW1heF9zaGlmdCA9IHJlZ191bWF4KHNyY19yZWcpO1xuJiM0MztcdHM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7XG4mIzQzO1x0czY0IHNtYXggPSByZWdfc21heChkc3RfcmVnKTtcbiBcbi1cdC8qIFVwb24gcmVhY2hpbmcgaGVyZSwgc3JjX2tub3duIGlzIHRydWUgYW5kIHVtYXhfdmFsIGlzIGVxdWFsXG4tXHQgKiB0byB1bWluX3ZhbC5cbiYjNDM7XHQvKlxuJiM0MztcdCAqIEJQRl9BUlNIIChhcml0aG1ldGljIHJpZ2h0IHNoaWZ0KSBvbiA2NC1iaXQgcmVnaXN0ZXIuIFNpZ25lZFxuJiM0MztcdCAqIGRpdmlkZSBieSAyXmssIHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMuIFdpdGggYVxuJiM0MztcdCAqIG5vbi1jb25zdGFudCBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZFxuJiM0MztcdCAqIGJ5IGRpdmlkaW5nIHRoZSBleHRyZW1lcyBvZiBbc21pbiwgc21heF0gYnkgdGhlIGV4dHJlbWVzXG4mIzQzO1x0ICogb2YgdGhlIGRpdmlzb3I6XG4mIzQzO1x0ICpcbiYjNDM7XHQgKiAgIHNtaW4gXHUwMDNlPSAwOiAgW3NtaW4gLyAyXnVtYXgsIHNtYXggLyAyXnVtaW5dXG4mIzQzO1x0ICogICBzbWF4IFx1MDAzYyAgMDogIFtzbWluIC8gMl51bWluLCBzbWF4IC8gMl51bWF4XVxuJiM0MztcdCAqICAgbWl4ZWQ6ICAgICAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtaW5dXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiB2YXJfb2ZmIGlzIHRudW1fdW5rbm93biBzaW5jZSBhIG5vbi1jb25zdGFudCBzaGlmdCBwcmV2ZW50c1xuJiM0MztcdCAqIHByZWNpc2UgYml0IHRyYWNraW5nLlxuIFx0ICovXG4tXHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHJlZ19zbWluKGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCxcbi1cdFx0XHQgcmVnX3NtYXgoZHN0X3JlZykgXHUwMDNlXHUwMDNlIHVtaW5fdmFsKTtcbi1cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsLCA2NCk7XG4mIzQzO1x0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xuJiM0MztcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbiYjNDM7XHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fc2hpZnQsIDY0KTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKHNtaW4gXHUwMDNlPSAwKVxuJiM0MztcdFx0XHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQsIHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpO1xuJiM0MztcdFx0ZWxzZSBpZiAoc21heCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWF4X3NoaWZ0KTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbiYjNDM7XHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fdW5rbm93bjtcbiYjNDM7XHR9XG4gXG4gXHQvKiBJdHMgbm90IGVhc3kgdG8gb3BlcmF0ZSBvbiBhbHUzMiBib3VuZHMgaGVyZSBiZWNhdXNlIGl0IGRlcGVuZHNcbiBcdCAqIG9uIGJpdHMgYmVpbmcgc2hpZnRlZCBpbiBmcm9tIHVwcGVyIDMyLWJpdHMuIFRha2UgZWFzeSB3YXkgb3V0XG5AQCAtMTQ1MTYsMTQgJiM0MzsxNDU2NSwxNCBAQCBzdGF0aWMgYm9vbCBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRjYXNlIEJQRl9NT0Q6XG4gXHRcdHJldHVybiBzcmNfaXNfY29uc3Q7XG4gXG4tXHQvKiBTaGlmdCBvcGVyYXRvcnMgcmFuZ2UgaXMgb25seSBjb21wdXRhYmxlIGlmIHNoaWZ0IGRpbWVuc2lvbiBvcGVyYW5kXG4tXHQgKiBpcyBhIGNvbnN0YW50LiBTaGlmdHMgZ3JlYXRlciB0aGFuIDMxIG9yIDYzIGFyZSB1bmRlZmluZWQuIFRoaXNcbi1cdCAqIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci5cbiYjNDM7XHQvKlxuJiM0MztcdCAqIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3VyLlxuJiM0MztcdCAqIFRoaXMgaW5jbHVkZXMgc2hpZnRzIGJ5IGEgbmVnYXRpdmUgbnVtYmVyLlxuIFx0ICovXG4gXHRjYXNlIEJQRl9MU0g6XG4gXHRjYXNlIEJQRl9SU0g6XG4gXHRjYXNlIEJQRl9BUlNIOlxuLVx0XHRyZXR1cm4gKHNyY19pc19jb25zdCBcdTAwMjZcdTAwMjYgcmVnX3VtYXgoc3JjX3JlZykgXHUwMDNjIGluc25fYml0bmVzcyk7XG4mIzQzO1x0XHRyZXR1cm4gcmVnX3VtYXgoc3JjX3JlZykgXHUwMDNjIGluc25fYml0bmVzcztcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcbmluZGV4IGJjMDM4YWMyZGY5OGUyLi41MmFlM2RjNTkzNjAwZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JvdW5kcy5jXG5AQCAtNDgyLDYgJiM0Mzs0ODIsMTczIEBAIGwwXyU9Olx0LyogZXhpdCAqL1x0XHRcdFx0XHRcXFxuIFx0OiBfX2Nsb2JiZXJfYWxsKTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKG5hbWUsIGRlc2MsIHJhbmQsIGRzdCwgc3JjLCBvcCwgc3JjX2FkZCwgZHN0X2luaXQsIG1zZykgXFxcbiYjNDM7XHRTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVx0XHRcdFx0XHRcXFxuJiM0MztcdF9fZGVzY3JpcHRpb24oZGVzYylcdFx0XHRcdFxcXG4mIzQzO1x0X19zdWNjZXNzIF9fbG9nX2xldmVsKDIpXHRcdFx0XFxcbiYjNDM7XHRfX21zZygjZHN0IFwmIzM0OyBcJiMzNDsgb3AgXCYjMzQ7IFwmIzM0OyAjc3JjIFwmIzM0OyB7ey4qfX07IFwmIzM0OyBtc2cpXHRcXFxuJiM0MztcdF9fbmFrZWQgdm9pZCBuYW1lKHZvaWQpXHRcdFx0XHRcXFxuJiM0MztcdHtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFxcXG4mIzQzO1x0XHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDsgI3NyYyBcJiMzNDsgPSBcJiMzNDsgI3JhbmQgXCYjMzQ7O1x0XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDsgI3NyYyBcJiMzNDsgXHUwMDI2PSAzO1x0XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjc3JjIFwmIzM0OyAmIzQzOz0gXCYjMzQ7ICNzcmNfYWRkIFwmIzM0OztcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjZHN0IFwmIzM0OyA9IFwmIzM0OyAjZHN0X2luaXQgXCYjMzQ7O1x0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNkc3QgXCYjMzQ7IFwmIzM0OyBvcCBcJiMzNDsgXCYjMzQ7ICNzcmMgXCYjMzQ7O1x0XHRcXFxuJiM0MztcdFx0ZXhpdDtcdFx0XHRcdFx0XFxcbiYjNDM7XCYjMzQ7XHRcdDo6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpXHRcdFxcXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9hbGwpO1x0XHRcdFxcXG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzIsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgbGVmdCBzaGlmdFwmIzM0OyxcbiYjNDM7XHR3MCwgdzEsIHcyLCBcJiMzNDtcdTAwM2NcdTAwM2M9XCYjMzQ7LCAxLCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfbHNoXzMyX292ZXJmbG93LFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyY1wmIzM0OyxcbiYjNDM7XHR3MCwgdzEsIHcyLCBcJiMzNDtcdTAwM2NcdTAwM2M9XCYjMzQ7LCAzMiwgMSxcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfMzIsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgcmlnaHQgc2hpZnRcJiMzNDssXG4mIzQzO1x0dzAsIHcxLCB3MiwgXCYjMzQ7XHUwMDNlXHUwMDNlPVwmIzM0OywgMSwgMHhmZixcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MTUsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTI3LHZhcl9vZmY9KDB4MDsgMHg3ZikpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyX292ZXJmbG93LFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyY1wmIzM0OyxcbiYjNDM7XHR3MCwgdzEsIHcyLCBcJiMzNDtcdTAwM2VcdTAwM2U9XCYjMzQ7LCAzMiwgMSxcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyaXRobWV0aWMgc2hpZnRcJiMzNDssXG4mIzQzO1x0dzAsIHcxLCB3MiwgXCYjMzQ7c1x1MDAzZVx1MDAzZT1cJiMzNDssIDEsIC04LFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX292ZXJmbG93LFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBvdmVyZmxvdyBzcmNcJiMzNDssXG4mIzQzO1x0dzAsIHcxLCB3MiwgXCYjMzQ7c1x1MDAzZVx1MDAzZT1cJiMzNDssIDMyLCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0zMixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0zNSx2YXJfb2ZmPSgweDIwOyAweDMpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NCxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBsZWZ0IHNoaWZ0XCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O1x1MDAzY1x1MDAzYz1cJiMzNDssIDEsIDEsXG4mIzQzO1x0XCYjMzQ7UjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTYsdmFyX29mZj0oMHgwOyAweDFmKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfNjRfb3ZlcmZsb3csXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbHNoIHdpdGggb3ZlcmZsb3cgc3JjXCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O1x1MDAzY1x1MDAzYz1cJiMzNDssIDY0LCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF82NCxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCByaWdodCBzaGlmdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjEsIHIyLCBcJiMzNDtcdTAwM2VcdTAwM2U9XCYjMzQ7LCAxLCAweGZmLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjRfb3ZlcmZsb3csXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgcnNoIHdpdGggb3ZlcmZsb3cgc3JjXCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O1x1MDAzZVx1MDAzZT1cJiMzNDssIDY0LCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjQsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJpdGhtZXRpYyBzaGlmdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjEsIHIyLCBcJiMzNDtzXHUwMDNlXHUwMDNlPVwmIzM0OywgMSwgLTgsXG4mIzQzO1x0XCYjMzQ7UjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9vdmVyZmxvdyxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggb3ZlcmZsb3cgc3JjXCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O3NcdTAwM2VcdTAwM2U9XCYjMzQ7LCA2NCwgMSxcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7I2RlZmluZSBTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKG5hbWUsIGRlc2MsIHJhbmQsIGRzdCwgc3JjLCBkc3RfbWFzaywgZHN0X2RlbHRhLCBtc2cpIFxcXG4mIzQzO1x0U0VDKFwmIzM0O3NvY2tldFwmIzM0OylcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX2Rlc2NyaXB0aW9uKGRlc2MpXHRcdFx0XHRcXFxuJiM0MztcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVx0XHRcdFxcXG4mIzQzO1x0X19tc2coI2RzdCBcJiMzNDsgc1x1MDAzZVx1MDAzZT0gXCYjMzQ7ICNzcmMgXCYjMzQ7IHt7Lip9fTsge3suKn19IFwmIzM0OyBtc2cpXFxcbiYjNDM7XHRfX25ha2VkIHZvaWQgbmFtZSh2b2lkKVx0XHRcdFx0XFxcbiYjNDM7XHR7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGFzbSB2b2xhdGlsZSAoXCYjMzQ7XHRcdFx0XHRcXFxuJiM0MztcdFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNkc3QgXCYjMzQ7ID0gXCYjMzQ7ICNyYW5kIFwmIzM0OztcdFx0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNkc3QgXCYjMzQ7IFx1MDAyNj0gXCYjMzQ7ICNkc3RfbWFzayBcJiMzNDs7XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDsgI2RzdCBcJiMzNDsgJiM0Mzs9IFwmIzM0OyAjZHN0X2RlbHRhIFwmIzM0OztcdFx0XFxcbiYjNDM7XHRcdGNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTtcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjc3JjIFwmIzM0OyA9IFwmIzM0OyAjcmFuZCBcJiMzNDs7XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjc3JjIFwmIzM0OyBcdTAwMjY9IDE7XHRcdFx0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNzcmMgXCYjMzQ7ICYjNDM7PSAxO1x0XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjZHN0IFwmIzM0OyBzXHUwMDNlXHUwMDNlPSBcJiMzNDsgI3NyYyBcJiMzNDs7XHRcdFx0XFxcbiYjNDM7XHRcdGV4aXQ7XHRcdFx0XHRcdFxcXG4mIzQzO1wmIzM0O1x0XHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVx0XHRcXFxuJiM0MztcdFx0OiBfX2Nsb2JiZXJfYWxsKTtcdFx0XHRcXFxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfcG9zLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBwb3NpdGl2ZSBkc3RcJiMzNDssXG4mIzQzO1x0dzAsIHc2LCB3MiwgNywgMSxcbiYjNDM7XHRcJiMzNDtSNj1zY2FsYXIoc21pbj1zbWluMzI9MCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9taXhlZCxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbWl4ZWQtc2lnbiBkc3RcJiMzNDssXG4mIzQzO1x0dzAsIHc2LCB3MiwgMTUsIC04LFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPTAsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0zLHZhcl9vZmY9KDB4MDsgMHhmZmZmZmZmZikpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfbmVnLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBuZWdhdGl2ZSBkc3RcJiMzNDssXG4mIzQzO1x0dzAsIHc2LCB3MiwgOCwgLTE2LFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZjgsc21heD11bWF4PXVtYXgzMj0weGZmZmZmZmZlLHNtaW4zMj0tOCxzbWF4MzI9LTIsdmFyX29mZj0oMHhmZmZmZmZmODsgMHg3KSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9wb3MsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjYsIHIyLCA3LCAxLFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPXNtaW4zMj0wLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTQsdmFyX29mZj0oMHgwOyAweDcpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X21peGVkLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjYsIHIyLCAxNSwgLTgsXG4mIzQzO1x0XCYjMzQ7UjY9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPTMpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbmVnLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBuZWdhdGl2ZSBkc3RcJiMzNDssXG4mIzQzO1x0cjAsIHI2LCByMiwgOCwgLTE2LFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPXNtaW4zMj0tOCxzbWF4PXNtYXgzMj0tMix1bWluPTB4ZmZmZmZmZmZmZmZmZmZmOCx1bWF4PTB4ZmZmZmZmZmZmZmZmZmZmZSx1bWluMzI9MHhmZmZmZmZmOCx1bWF4MzI9MHhmZmZmZmZmZSx2YXJfb2ZmPSgweGZmZmZmZmZmZmZmZmZmZjg7IDB4NykpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4gU0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiBfX2Rlc2NyaXB0aW9uKFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciAzMi1iaXQgcmlnaHQgc2hpZnQgd2l0aCA2NC1iaXQgaW5wdXRcJiMzNDspXG4gX19mYWlsdXJlIF9fbXNnKFwmIzM0O21hdGggYmV0d2VlbiBtYXBfdmFsdWUgcG9pbnRlciBhbmQgNDI5NDk2NzI5NCBpcyBub3QgYWxsb3dlZFwmIzM0OylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2xzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXJfbWluX21heF9yc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9hcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOGI0ZGFhMGMyOWEyYjY5MDdlNjE0NTFkMjdlMDdlOGFmMTE1ZGM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMTQ6MDE6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmJmMjQ3YzIxOWNhYjU4IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0xNDI3Nyw3ICYjNDM7MTQyNzcsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIAlzdHJ1Y3QgdG51bSBzdWJyZWcgPSB0bnVtX3N1YnJlZyhkc3RfcmVnLSZndDt2YXJfb2ZmKTsKIAogCV9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTsKLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpOwomIzQzOwlkc3RfcmVnLSZndDt2YXJfb2ZmID0gKHVtaW5fdmFsID09IHVtYXhfdmFsKSA/CiYjNDM7CQkJICAgdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpIDogdG51bV91bmtub3duOwogCS8qIE5vdCByZXF1aXJlZCBidXQgYmVpbmcgY2FyZWZ1bCBtYXJrIHJlZzY0IGJvdW5kcyBhcyB1bmtub3duIHNvCiAJICogdGhhdCB3ZSBhcmUgZm9yY2VkIHRvIHBpY2sgdGhlbSB1cCBmcm9tIHRudW0gYW5kIHpleHQgbGF0ZXIgYW5kCiAJICogaWYgc29tZSBwYXRoIHNraXBzIHRoaXMgc3RlcCB3ZSBhcmUgc3RpbGwgc2FmZS4KQEAgLTE0MzIyLDcgJiM0MzsxNDMyMyw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIAlfX3NjYWxhcjY0X21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7CiAJX19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpOwogCi0JZHN0X3JlZy0mZ3Q7dmFyX29mZiA9IHRudW1fbHNoaWZ0KGRzdF9yZWctJmd0O3Zhcl9vZmYsIHVtaW5fdmFsKTsKJiM0MzsJZHN0X3JlZy0mZ3Q7dmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgPwomIzQzOwkJCSAgIHRudW1fbHNoaWZ0KGRzdF9yZWctJmd0O3Zhcl9vZmYsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjsKIAkvKiBXZSBtYXkgbGVhcm4gc29tZXRoaW5nIG1vcmUgZnJvbSB0aGUgdmFyX29mZiAqLwogCV9fdXBkYXRlX3JlZ19ib3VuZHMoZHN0X3JlZyk7CiB9CkBAIC0xNDM0OSw3ICYjNDM7MTQzNTEsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIAkgKiB2YXJfb2ZmIG9mIHRoZSByZXN1bHQuCiAJICovCiAKLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9yc2hpZnQoc3VicmVnLCB1bWluX3ZhbCk7CiYjNDM7CWRzdF9yZWctJmd0O3Zhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID8KJiM0MzsJCQkgICB0bnVtX3JzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjsKIAlyZWdfc2V0X3VyYW5nZTMyKGRzdF9yZWcsIHJlZ191MzJfbWluKGRzdF9yZWcpICZndDsmZ3Q7IHVtYXhfdmFsLAogCQkJIHJlZ191MzJfbWF4KGRzdF9yZWcpICZndDsmZ3Q7IHVtaW5fdmFsKTsKIApAQCAtMTQzNzcsNyAmIzQzOzE0MzgwLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLAogCSAqIGFuZCByZWx5IG9uIGluZmVycmluZyBuZXcgb25lcyBmcm9tIHRoZSB1bnNpZ25lZCBib3VuZHMgYW5kCiAJICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LgogCSAqLwotCWRzdF9yZWctJmd0O3Zhcl9vZmYgPSB0bnVtX3JzaGlmdChkc3RfcmVnLSZndDt2YXJfb2ZmLCB1bWluX3ZhbCk7CiYjNDM7CWRzdF9yZWctJmd0O3Zhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID8KJiM0MzsJCQkgICB0bnVtX3JzaGlmdChkc3RfcmVnLSZndDt2YXJfb2ZmLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247CiAJcmVnX3NldF91cmFuZ2U2NChkc3RfcmVnLCByZWdfdW1pbihkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWF4X3ZhbCwKIAkJCSByZWdfdW1heChkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWluX3ZhbCk7CiAKQEAgLTE0MzkyLDE4ICYjNDM7MTQzOTYsNDEgQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLAogc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9hcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLAogCQkJCSAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpCiB7Ci0JdTY0IHVtaW5fdmFsID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7CiYjNDM7CXUzMiB1bWluX3NoaWZ0ID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7CiYjNDM7CXUzMiB1bWF4X3NoaWZ0ID0gcmVnX3UzMl9tYXgoc3JjX3JlZyk7CiYjNDM7CXMzMiBzbWluID0gcmVnX3MzMl9taW4oZHN0X3JlZyk7CiYjNDM7CXMzMiBzbWF4ID0gcmVnX3MzMl9tYXgoZHN0X3JlZyk7CiAKLQkvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZAotCSAqIHVtYXhfdmFsIGlzIGVxdWFsIHRvIHVtaW5fdmFsLgotCSAqIEJsb3cgYXdheSB0aGUgZHN0X3JlZyB1bWluX3ZhbHVlL3VtYXhfdmFsdWUgYW5kIHJlbHkgb24KLQkgKiBkc3RfcmVnIHZhcl9vZmYgdG8gcmVmaW5lIHRoZSByZXN1bHQuCiYjNDM7CS8qCiYjNDM7CSAqIEJQRl9BUlNIIG9uIDMyLWJpdCBzdWJyZWdpc3Rlci4gQVJTSCBpcyBhIHNpZ25lZCBkaXZpZGUgYnkKJiM0MzsJICogMl5rIChyb3VuZGluZyB0b3dhcmQgLWluZiBmb3IgbmVnYXRpdmVzKS4gV2l0aCBhIG5vbi1jb25zdGFudAomIzQzOwkgKiBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSBkaXZpZGluZyB0aGUKJiM0MzsJICogZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcyBvZiB0aGUgZGl2aXNvcjoKJiM0MzsJICoKJiM0MzsJICogICBzbWluICZndDs9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl0KJiM0MzsJICogICBzbWF4ICZsdDsgIDA6ICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1heF0KJiM0MzsJICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl0KJiM0MzsJICoKJiM0MzsJICogdmFyX29mZiBpcyB0bnVtX3Vua25vd24gc2luY2UgYSBub24tY29uc3RhbnQgc2hpZnQgcHJldmVudHMKJiM0MzsJICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuCiAJICovCi0JcmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLAotCQkJICh1MzIpKCgoczMyKXJlZ19zMzJfbWluKGRzdF9yZWcpKSAmZ3Q7Jmd0OyB1bWluX3ZhbCksCi0JCQkgKHUzMikoKChzMzIpcmVnX3MzMl9tYXgoZHN0X3JlZykpICZndDsmZ3Q7IHVtaW5fdmFsKSk7Ci0KLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctJmd0O3Zhcl9vZmYpLCB1bWluX3ZhbCwgMzIpOwomIzQzOwlpZiAodW1pbl9zaGlmdCA9PSB1bWF4X3NoaWZ0KSB7CiYjNDM7CQlyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gJmd0OyZndDsgdW1pbl9zaGlmdCksCiYjNDM7CQkJCSAodTMyKShzbWF4ICZndDsmZ3Q7IHVtaW5fc2hpZnQpKTsKJiM0MzsJCWRzdF9yZWctJmd0O3Zhcl9vZmYgPSB0bnVtX2Fyc2hpZnQodG51bV9zdWJyZWcoZHN0X3JlZy0mZ3Q7dmFyX29mZiksCiYjNDM7CQkJCQkJdW1pbl9zaGlmdCwgMzIpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKHNtaW4gJmd0Oz0gMCkKJiM0MzsJCQlyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gJmd0OyZndDsgdW1heF9zaGlmdCksCiYjNDM7CQkJCQkgKHUzMikoc21heCAmZ3Q7Jmd0OyB1bWluX3NoaWZ0KSk7CiYjNDM7CQllbHNlIGlmIChzbWF4ICZsdDsgMCkKJiM0MzsJCQlyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gJmd0OyZndDsgdW1pbl9zaGlmdCksCiYjNDM7CQkJCQkgKHUzMikoc21heCAmZ3Q7Jmd0OyB1bWF4X3NoaWZ0KSk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluICZndDsmZ3Q7IHVtaW5fc2hpZnQpLAomIzQzOwkJCQkJICh1MzIpKHNtYXggJmd0OyZndDsgdW1pbl9zaGlmdCkpOwomIzQzOwkJZHN0X3JlZy0mZ3Q7dmFyX29mZiA9IHRudW1fdW5rbm93bjsKJiM0MzsJfQogCiAJX19tYXJrX3JlZzY0X3VuYm91bmRlZChkc3RfcmVnKTsKIAlfX3VwZGF0ZV9yZWczMl9ib3VuZHMoZHN0X3JlZyk7CkBAIC0xNDQxMiwxNSAmIzQzOzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X2Fyc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsCiAJCQkJc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpCiB7Ci0JdTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7CiYjNDM7CXU2NCB1bWluX3NoaWZ0ID0gcmVnX3VtaW4oc3JjX3JlZyk7CiYjNDM7CXU2NCB1bWF4X3NoaWZ0ID0gcmVnX3VtYXgoc3JjX3JlZyk7CiYjNDM7CXM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7CiYjNDM7CXM2NCBzbWF4ID0gcmVnX3NtYXgoZHN0X3JlZyk7CiAKLQkvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZCB1bWF4X3ZhbCBpcyBlcXVhbAotCSAqIHRvIHVtaW5fdmFsLgomIzQzOwkvKgomIzQzOwkgKiBCUEZfQVJTSCAoYXJpdGhtZXRpYyByaWdodCBzaGlmdCkgb24gNjQtYml0IHJlZ2lzdGVyLiBTaWduZWQKJiM0MzsJICogZGl2aWRlIGJ5IDJeaywgcm91bmRpbmcgdG93YXJkIC1pbmYgZm9yIG5lZ2F0aXZlcy4gV2l0aCBhCiYjNDM7CSAqIG5vbi1jb25zdGFudCBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZAomIzQzOwkgKiBieSBkaXZpZGluZyB0aGUgZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcwomIzQzOwkgKiBvZiB0aGUgZGl2aXNvcjoKJiM0MzsJICoKJiM0MzsJICogICBzbWluICZndDs9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl0KJiM0MzsJICogICBzbWF4ICZsdDsgIDA6ICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1heF0KJiM0MzsJICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl0KJiM0MzsJICoKJiM0MzsJICogdmFyX29mZiBpcyB0bnVtX3Vua25vd24gc2luY2UgYSBub24tY29uc3RhbnQgc2hpZnQgcHJldmVudHMKJiM0MzsJICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuCiAJICovCi0JcmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCByZWdfc21pbihkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWluX3ZhbCwKLQkJCSByZWdfc21heChkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWluX3ZhbCk7Ci0KLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KGRzdF9yZWctJmd0O3Zhcl9vZmYsIHVtaW5fdmFsLCA2NCk7CiYjNDM7CWlmICh1bWluX3NoaWZ0ID09IHVtYXhfc2hpZnQpIHsKJiM0MzsJCXJlZ19zZXRfc3JhbmdlNjQoZHN0X3JlZywgc21pbiAmZ3Q7Jmd0OyB1bWluX3NoaWZ0LCBzbWF4ICZndDsmZ3Q7IHVtaW5fc2hpZnQpOwomIzQzOwkJZHN0X3JlZy0mZ3Q7dmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLSZndDt2YXJfb2ZmLCB1bWluX3NoaWZ0LCA2NCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAoc21pbiAmZ3Q7PSAwKQomIzQzOwkJCXJlZ19zZXRfc3JhbmdlNjQoZHN0X3JlZywgc21pbiAmZ3Q7Jmd0OyB1bWF4X3NoaWZ0LCBzbWF4ICZndDsmZ3Q7IHVtaW5fc2hpZnQpOwomIzQzOwkJZWxzZSBpZiAoc21heCAmbHQ7IDApCiYjNDM7CQkJcmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluICZndDsmZ3Q7IHVtaW5fc2hpZnQsIHNtYXggJmd0OyZndDsgdW1heF9zaGlmdCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluICZndDsmZ3Q7IHVtaW5fc2hpZnQsIHNtYXggJmd0OyZndDsgdW1pbl9zaGlmdCk7CiYjNDM7CQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV91bmtub3duOwomIzQzOwl9CiAKIAkvKiBJdHMgbm90IGVhc3kgdG8gb3BlcmF0ZSBvbiBhbHUzMiBib3VuZHMgaGVyZSBiZWNhdXNlIGl0IGRlcGVuZHMKIAkgKiBvbiBiaXRzIGJlaW5nIHNoaWZ0ZWQgaW4gZnJvbSB1cHBlciAzMi1iaXRzLiBUYWtlIGVhc3kgd2F5IG91dApAQCAtMTQ1MTYsMTQgJiM0MzsxNDU2NSwxNCBAQCBzdGF0aWMgYm9vbCBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShzdHJ1Y3QgYnBmX2luc24gKmluc24sCiAJY2FzZSBCUEZfTU9EOgogCQlyZXR1cm4gc3JjX2lzX2NvbnN0OwogCi0JLyogU2hpZnQgb3BlcmF0b3JzIHJhbmdlIGlzIG9ubHkgY29tcHV0YWJsZSBpZiBzaGlmdCBkaW1lbnNpb24gb3BlcmFuZAotCSAqIGlzIGEgY29uc3RhbnQuIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIHVuZGVmaW5lZC4gVGhpcwotCSAqIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci4KJiM0MzsJLyoKJiM0MzsJICogU2hpZnRzIGdyZWF0ZXIgdGhhbiAzMSBvciA2MyBhcmUgaW1wbGVtZW50YXRpb24tZGVmaW5lZCBiZWhhdmlvdXIuCiYjNDM7CSAqIFRoaXMgaW5jbHVkZXMgc2hpZnRzIGJ5IGEgbmVnYXRpdmUgbnVtYmVyLgogCSAqLwogCWNhc2UgQlBGX0xTSDoKIAljYXNlIEJQRl9SU0g6CiAJY2FzZSBCUEZfQVJTSDoKLQkJcmV0dXJuIChzcmNfaXNfY29uc3QgJmFtcDsmYW1wOyByZWdfdW1heChzcmNfcmVnKSAmbHQ7IGluc25fYml0bmVzcyk7CiYjNDM7CQlyZXR1cm4gcmVnX3VtYXgoc3JjX3JlZykgJmx0OyBpbnNuX2JpdG5lc3M7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIGZhbHNlOwogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYwppbmRleCBiYzAzOGFjMmRmOThlMi4uNTJhZTNkYzU5MzYwMGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmMKQEAgLTQ4Miw2ICYjNDM7NDgyLDE3MyBAQCBsMF8lPToJLyogZXhpdCAqLwkJCQkJXAogCTogX19jbG9iYmVyX2FsbCk7CiB9CiAKJiM0MzsjZGVmaW5lIFNISUZUX05PTl9DT05TVF9TUkNfVEVTVChuYW1lLCBkZXNjLCByYW5kLCBkc3QsIHNyYywgb3AsIHNyY19hZGQsIGRzdF9pbml0LCBtc2cpIFwKJiM0MzsJU0VDKCYjMzQ7c29ja2V0JiMzNDspCQkJCQlcCiYjNDM7CV9fZGVzY3JpcHRpb24oZGVzYykJCQkJXAomIzQzOwlfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoMikJCQlcCiYjNDM7CV9fbXNnKCNkc3QgJiMzNDsgJiMzNDsgb3AgJiMzNDsgJiMzNDsgI3NyYyAmIzM0OyB7ey4qfX07ICYjMzQ7IG1zZykJXAomIzQzOwlfX25ha2VkIHZvaWQgbmFtZSh2b2lkKQkJCQlcCiYjNDM7CXsJCQkJCQlcCiYjNDM7CQlhc20gdm9sYXRpbGUgKCYjMzQ7CQkJCVwKJiM0MzsJCWNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTsJCVwKJiM0MzsJCSYjMzQ7ICNzcmMgJiMzNDsgPSAmIzM0OyAjcmFuZCAmIzM0OzsJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICZhbXA7PSAzOwkJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICYjNDM7PSAmIzM0OyAjc3JjX2FkZCAmIzM0OzsJCVwKJiM0MzsJCSYjMzQ7ICNkc3QgJiMzNDsgPSAmIzM0OyAjZHN0X2luaXQgJiMzNDs7CQlcCiYjNDM7CQkmIzM0OyAjZHN0ICYjMzQ7ICYjMzQ7IG9wICYjMzQ7ICYjMzQ7ICNzcmMgJiMzNDs7CQlcCiYjNDM7CQlleGl0OwkJCQkJXAomIzQzOyYjMzQ7CQk6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKQkJXAomIzQzOwkJOiBfX2Nsb2JiZXJfYWxsKTsJCQlcCiYjNDM7CX0KJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzIsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgbGVmdCBzaGlmdCYjMzQ7LAomIzQzOwl3MCwgdzEsIHcyLCAmIzM0OyZsdDsmbHQ7PSYjMzQ7LCAxLCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfbHNoXzMyX292ZXJmbG93LAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyYyYjMzQ7LAomIzQzOwl3MCwgdzEsIHcyLCAmIzM0OyZsdDsmbHQ7PSYjMzQ7LCAzMiwgMSwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfMzIsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgcmlnaHQgc2hpZnQmIzM0OywKJiM0MzsJdzAsIHcxLCB3MiwgJiMzNDsmZ3Q7Jmd0Oz0mIzM0OywgMSwgMHhmZiwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MTUsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTI3LHZhcl9vZmY9KDB4MDsgMHg3ZikpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyX292ZXJmbG93LAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyYyYjMzQ7LAomIzQzOwl3MCwgdzEsIHcyLCAmIzM0OyZndDsmZ3Q7PSYjMzQ7LCAzMiwgMSwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyLAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyaXRobWV0aWMgc2hpZnQmIzM0OywKJiM0MzsJdzAsIHcxLCB3MiwgJiMzNDtzJmd0OyZndDs9JiMzNDssIDEsIC04LAomIzQzOwkmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX292ZXJmbG93LAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBvdmVyZmxvdyBzcmMmIzM0OywKJiM0MzsJdzAsIHcxLCB3MiwgJiMzNDtzJmd0OyZndDs9JiMzNDssIDMyLCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0zMixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0zNSx2YXJfb2ZmPSgweDIwOyAweDMpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NCwKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBsZWZ0IHNoaWZ0JiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7Jmx0OyZsdDs9JiMzNDssIDEsIDEsCiYjNDM7CSYjMzQ7UjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTYsdmFyX29mZj0oMHgwOyAweDFmKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfNjRfb3ZlcmZsb3csCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbHNoIHdpdGggb3ZlcmZsb3cgc3JjJiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7Jmx0OyZsdDs9JiMzNDssIDY0LCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF82NCwKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCByaWdodCBzaGlmdCYjMzQ7LAomIzQzOwlyMCwgcjEsIHIyLCAmIzM0OyZndDsmZ3Q7PSYjMzQ7LCAxLCAweGZmLAomIzQzOwkmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjRfb3ZlcmZsb3csCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgcnNoIHdpdGggb3ZlcmZsb3cgc3JjJiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7Jmd0OyZndDs9JiMzNDssIDY0LCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjQsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJpdGhtZXRpYyBzaGlmdCYjMzQ7LAomIzQzOwlyMCwgcjEsIHIyLCAmIzM0O3MmZ3Q7Jmd0Oz0mIzM0OywgMSwgLTgsCiYjNDM7CSYjMzQ7UjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9vdmVyZmxvdywKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggb3ZlcmZsb3cgc3JjJiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7cyZndDsmZ3Q7PSYjMzQ7LCA2NCwgMSwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MzsjZGVmaW5lIFNISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QobmFtZSwgZGVzYywgcmFuZCwgZHN0LCBzcmMsIGRzdF9tYXNrLCBkc3RfZGVsdGEsIG1zZykgXAomIzQzOwlTRUMoJiMzNDtzb2NrZXQmIzM0OykJCQkJCVwKJiM0MzsJX19kZXNjcmlwdGlvbihkZXNjKQkJCQlcCiYjNDM7CV9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKQkJCVwKJiM0MzsJX19tc2coI2RzdCAmIzM0OyBzJmd0OyZndDs9ICYjMzQ7ICNzcmMgJiMzNDsge3suKn19OyB7ey4qfX0gJiMzNDsgbXNnKVwKJiM0MzsJX19uYWtlZCB2b2lkIG5hbWUodm9pZCkJCQkJXAomIzQzOwl7CQkJCQkJXAomIzQzOwkJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQlcCiYjNDM7CQljYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07CQlcCiYjNDM7CQkmIzM0OyAjZHN0ICYjMzQ7ID0gJiMzNDsgI3JhbmQgJiMzNDs7CQkJXAomIzQzOwkJJiMzNDsgI2RzdCAmIzM0OyAmYW1wOz0gJiMzNDsgI2RzdF9tYXNrICYjMzQ7OwkJXAomIzQzOwkJJiMzNDsgI2RzdCAmIzM0OyAmIzQzOz0gJiMzNDsgI2RzdF9kZWx0YSAmIzM0OzsJCVwKJiM0MzsJCWNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTsJCVwKJiM0MzsJCSYjMzQ7ICNzcmMgJiMzNDsgPSAmIzM0OyAjcmFuZCAmIzM0OzsJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICZhbXA7PSAxOwkJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICYjNDM7PSAxOwkJCQlcCiYjNDM7CQkmIzM0OyAjZHN0ICYjMzQ7IHMmZ3Q7Jmd0Oz0gJiMzNDsgI3NyYyAmIzM0OzsJCQlcCiYjNDM7CQlleGl0OwkJCQkJXAomIzQzOyYjMzQ7CQk6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKQkJXAomIzQzOwkJOiBfX2Nsb2JiZXJfYWxsKTsJCQlcCiYjNDM7CX0KJiM0MzsKJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9wb3MsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdCYjMzQ7LAomIzQzOwl3MCwgdzYsIHcyLCA3LCAxLAomIzQzOwkmIzM0O1I2PXNjYWxhcihzbWluPXNtaW4zMj0wLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTQsdmFyX29mZj0oMHgwOyAweDcpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX21peGVkLAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdCYjMzQ7LAomIzQzOwl3MCwgdzYsIHcyLCAxNSwgLTgsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49MCxzbWF4PXVtYXg9MHhmZmZmZmZmZixzbWluMzI9LTQsc21heDMyPTMsdmFyX29mZj0oMHgwOyAweGZmZmZmZmZmKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9uZWcsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIG5lZ2F0aXZlIGRzdCYjMzQ7LAomIzQzOwl3MCwgdzYsIHcyLCA4LCAtMTYsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49dW1pbj11bWluMzI9MHhmZmZmZmZmOCxzbWF4PXVtYXg9dW1heDMyPTB4ZmZmZmZmZmUsc21pbjMyPS04LHNtYXgzMj0tMix2YXJfb2ZmPSgweGZmZmZmZmY4OyAweDcpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X3BvcywKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggcG9zaXRpdmUgZHN0JiMzNDssCiYjNDM7CXIwLCByNiwgcjIsIDcsIDEsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49c21pbjMyPTAsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbWl4ZWQsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG1peGVkLXNpZ24gZHN0JiMzNDssCiYjNDM7CXIwLCByNiwgcjIsIDE1LCAtOCwKJiM0MzsJJiMzNDtSNj1zY2FsYXIoc21pbj1zbWluMzI9LTQsc21heD1zbWF4MzI9MykmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9uZWcsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG5lZ2F0aXZlIGRzdCYjMzQ7LAomIzQzOwlyMCwgcjYsIHIyLCA4LCAtMTYsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49c21pbjMyPS04LHNtYXg9c21heDMyPS0yLHVtaW49MHhmZmZmZmZmZmZmZmZmZmY4LHVtYXg9MHhmZmZmZmZmZmZmZmZmZmZlLHVtaW4zMj0weGZmZmZmZmY4LHVtYXgzMj0weGZmZmZmZmZlLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmODsgMHg3KSkmIzM0OwomIzQzOykKJiM0MzsKIFNFQygmIzM0O3NvY2tldCYjMzQ7KQogX19kZXNjcmlwdGlvbigmIzM0O2JvdW5kcyBjaGVjayBhZnRlciAzMi1iaXQgcmlnaHQgc2hpZnQgd2l0aCA2NC1iaXQgaW5wdXQmIzM0OykKIF9fZmFpbHVyZSBfX21zZygmIzM0O21hdGggYmV0d2VlbiBtYXBfdmFsdWUgcG9pbnRlciBhbmQgNDI5NDk2NzI5NCBpcyBub3QgYWxsb3dlZCYjMzQ7KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODgzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgaG93IHRoZSBCUEYgdmVyaWZpZXIgaGFuZGxlcyBib3VuZHMgdHJhY2tpbmcgZm9yIHNoaWZ0IG9wZXJhdGlvbnMg4oCTIGxlZnQgc2hpZnQgKExTSCksIHJpZ2h0IHNoaWZ0IChSU0gpLCBhbmQgYXJpdGhtZXRpYyByaWdodCBzaGlmdCAoQVJTSCkg4oCTIHdoZW4gdGhlIHNoaWZ0ICphbW91bnQqIGlzbiYjMzk7dCBhIGZpeGVkIGNvbnN0YW50LCBidXQgYSByYW5nZS4gIFByZXZpb3VzbHksIEkgcmVjYWxsIHRoZSB2ZXJpZmllciBuZWVkZWQgYSBjb25zdGFudCBzaGlmdCBhbW91bnQgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHJhbmdlIG9mIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gIFRoaXMgY2hhbmdlIHNlZW1zIHRvIHJlbGF4IHRoYXQgcmVxdWlyZW1lbnQsIGFsbG93aW5nIGZvciBhIHNoaWZ0IGFtb3VudCByYW5nZSAod2hlcmUgYHVtaW5fdmFsICE9IHVtYXhfdmFsYCkgYW5kIGFkanVzdGluZyB0aGUgYm91bmRzIGNhbGN1bGF0aW9uIGFjY29yZGluZ2x5LgoKVGhlIGtleSBpcyB0aGF0IHRoZSBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIGZ1bmN0aW9uIGlzIGFsc28gYmVpbmcgdXBkYXRlZCB0byBub3cgcmV0dXJuIHRydWUgZm9yIG5vbi1jb25zdGFudCBzaGlmdHMsIGFzIGxvbmcgYXMgdGhlIG1heGltdW0gc2hpZnQgYW1vdW50IGlzIGxlc3MgdGhhbiB0aGUgYml0IHdpZHRoLCBlaXRoZXIgMzIgb3IgNjQuIFRoYXQmIzM5O3MgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLCBJIGNhbiBzZWUgaG93IGl0IGhlbHBzIHRvIGNvbXB1dGUgdGhlc2UgYm91bmRzIGNvcnJlY3RseS4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIHZlcmlmaWVyIGlzIGFuIGluY3JlZGlibHkgY3JpdGljYWwgYW5kIGZyZXF1ZW50bHktYWNjZXNzZWQgY29tcG9uZW50IG9mIHRoZSBrZXJuZWwsIHNvIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzZXJpb3VzIGZ1enppbmcuIFdlIGhhdmUgdG8gYmUgbWV0aWN1bG91cyBoZXJlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBleGFjdCBmdW5jdGlvbnMgdGhhdCBhcmUgZ2V0dGluZyBtb2RpZmllZC4gTG9va3MgbGlrZSBpdCYjMzk7cyBpbXBhY3RpbmcgdGhlc2U6IGBzY2FsYXIzMl9taW5fbWF4X2xzaGAsIGBzY2FsYXJfbWluX21heF9sc2hgLCBgc2NhbGFyMzJfbWluX21heF9yc2hgLCBgc2NhbGFyX21pbl9tYXhfcnNoYCwgYHNjYWxhcjMyX21pbl9tYXhfYXJzaGAsIGBzY2FsYXJfbWluX21heF9hcnNoYCwgYW5kIGFsc28gYGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlYC4gR290IGl0LgoKRm9yIGNvbmZpZ3VyYXRpb24sIGBCUEZfU1lTQ0FMTGAgc2VlbXMgdG8gYmUgdGhlIG9idmlvdXMgb25lLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIHRoZSBvbmx5IG9uZSByZXF1aXJlZCBmb3IgdGhlIHJlbGV2YW50IGNvZGUgdG8gYmUgY29tcGlsZWQuIEkgd2lsbCBjb25maXJtIHRoYXQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZlcmlmaWVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODgzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlybWluZyB0aGUgQlBGIFN5c2NhbGwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB5ZXMsIGJhc2VkIG9uIHdoYXQgSSBrbm93LCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBkZWZpbml0ZWx5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UmIzM5O3JlIGxvb2tpbmcgZm9yLiBUaGF0IHNlZW1zIHJpZ2h0LiBOb3csIGxldCYjMzk7cyBkaXZlIGluIGFuZCBjb25maXJtIHRoaXMuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGltcGFjdHMgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5LiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgaG93IHRoaW5ncyBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgd2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NhbGFyMzJfbWluX21heF9sc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE0MjM5PXN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3hvcihzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQyNTYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNTc6c3RhdGljIHZvaWQgX19zY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI1OC1cdFx0XHRcdCAgIHU2NCB1bWluX3ZhbCwgdTY0IHVtYXhfdmFsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDI3MTpzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3Mi1cdFx0XHRcdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqc3JjX3JlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQyNzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNzk6XHRfX3NjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQyODAtXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQzMTY9c3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDMyMy1cdF9fc2NhbGFyNjRfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDMyNDpcdF9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDMyNS1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ2MTQ9c3RhdGljIGludCBhZGp1c3Rfc2NhbGFyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDczMC1cdFx0aWYgKGFsdTMyKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NzMxOlx0XHRcdHNjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIFx1MDAyNnNyY19yZWcpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NzMyLVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY3MwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzU3ltYm9scyoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aG9zZSBmdW5jdGlvbnM6IGBzY2FsYXIzMl9taW5fbWF4X2xzaGAsIGBzY2FsYXJfbWluX21heF9sc2hgLCBgc2NhbGFyMzJfbWluX21heF9yc2hgLCBgc2NhbGFyX21pbl9tYXhfcnNoYCwgYHNjYWxhcjMyX21pbl9tYXhfYXJzaGAsIGBzY2FsYXJfbWluX21heF9hcnNoYCwgYXJlIGFsbCBzdHJvbmcgY29udGVuZGVycyBmb3IgaW5jbHVzaW9uIGluIGBGb2N1c1N5bWJvbHNgLiBUaGV5IHNlZW0gbGlrZSBwcmltZSBjYW5kaWRhdGVzLiBCdXQsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIGJlZm9yZSBJIGdvIGZ1cnRoZXIuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE0NDgyPXN0YXRpYyB2b2lkIHNjYWxhcl9ieXRlX3N3YXAoc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ1MzAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQ1MzE6c3RhdGljIGJvb2wgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2Uoc3RydWN0IGJwZl9pbnNuICppbnNuLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NTMyLVx0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpzcmNfcmVnKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDYxND1zdGF0aWMgaW50IGFkanVzdF9zY2FsYXJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjIzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NjI0Olx0aWYgKCFpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShpbnNuLCBcdTAwMjZzcmNfcmVnKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjI1LVx0XHRfX21hcmtfcmVnX3Vua25vd24oZW52LCBkc3RfcmVnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI1OAoJCQkJCQkJb3V0cHV0OiAyMDEKCQkJCQkJCXRob3VnaHRzOiAzNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVmVyaWZpYWJpbGl0eSoqCgpPa2F5LCBzbyBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIHNlZW1zIGxpa2UgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gY29uc2lkZXIsIGJ1dCBsZXQmIzM5O3MgZmlyc3QgZW5zdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgdGhlIGFzc29jaWF0ZWQgc2VsZnRlc3RzLiBUaGUgc2VsZnRlc3RzIGFyZSBqdXN0IHZhbGlkYXRpb24gY2hlY2tzLCBzbyB0aGV5IGRvbiYjMzk7dCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzIHNxdWFyZWx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGhlcmUuCgpOb3csIGxldCYjMzk7cyBhcnRpY3VsYXRlIHRoZSBjb3JlIHJlYXNvbmluZyBmb3IgdGhlIGZ1enppbmcgcmVxdWlyZW1lbnQuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIEJQRiB2ZXJpZmllciB0byBoYW5kbGUgYm91bmRzIHRyYWNraW5nIGZvciBzaGlmdCBvcGVyYXRpb25zIChMU0gsIFJTSCwgQVJTSCkgd2hlcmUgdGhlIHNoaWZ0ICphbW91bnQqIGlzbiYjMzk7dCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpbnRyb2R1Y2VzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY3JpdGljYWwgYW5kIGZyZXF1ZW50bHkgYWNjZXNzZWQgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLiBDb25zZXF1ZW50bHksIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIGRldGVjdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHRoZSBuZXcgYm91bmRzIHRyYWNraW5nIG1lY2hhbmlzbS4KCldlIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHNjYWxhcjMyX21pbl9tYXhfbHNoYCwgYHNjYWxhcl9taW5fbWF4X2xzaGAsIGBzY2FsYXIzMl9taW5fbWF4X3JzaGAsIGBzY2FsYXJfbWluX21heF9yc2hgLCBgc2NhbGFyMzJfbWluX21heF9hcnNoYCwgYHNjYWxhcl9taW5fbWF4X2Fyc2hgIGFuZCBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2suIE9rYXksIGBzY2FsYXIzMl9taW5fbWF4X2xzaGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW1wYWN0ZWQ/IEhtbSwgaXQgbG9va3MgbGlrZSBgX19zY2FsYXIzMl9taW5fbWF4X2xzaGAgd2FzbiYjMzk7dCBtb2RpZmllZCwgYnV0IGBzY2FsYXIzMl9taW5fbWF4X2xzaGAgd2FzLgoKQWxyaWdodCwgdGltZSB0byBsb2cgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2xzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXJfbWluX21heF9yc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9hcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2xzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXJfbWluX21heF9yc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9hcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MDYuOTgyMzM4OTA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MzAyNTI5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY2FsYXIzMl9taW5fbWF4X2xzaFwiLFxuICAgIFwic2NhbGFyX21pbl9tYXhfbHNoXCIsXG4gICAgXCJzY2FsYXIzMl9taW5fbWF4X3JzaFwiLFxuICAgIFwic2NhbGFyX21pbl9tYXhfcnNoXCIsXG4gICAgXCJzY2FsYXIzMl9taW5fbWF4X2Fyc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X2Fyc2hcIixcbiAgICBcImlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIGluY29ycmVjdCBib3VuZHMgdHJhY2tpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjA2Ljk4MjM0NTQ2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI5ODQxNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzhiNGRhYTBjMjlhMmI2OTA3ZTYxNDUxZDI3ZTA3ZThhZjExNWRjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxNDowMTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAyYWJjNzlkYmYyODFjMi4uYmYyNDdjMjE5Y2FiNTggMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTE0Mjc3LDcgKzE0Mjc3LDggQEAgc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9sc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxuIFxcdHN0cnVjdCB0bnVtIHN1YnJlZyA9IHRudW1fc3VicmVnKGRzdF9yZWctXFx1MDAzZXZhcl9vZmYpO1xcbiBcXG4gXFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xcbi1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpO1xcbitcXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gKHVtaW5fdmFsID09IHVtYXhfdmFsKSA/XFxuK1xcdFxcdFxcdCAgIHRudW1fc3VicmVnKHRudW1fbHNoaWZ0KHN1YnJlZywgdW1pbl92YWwpKSA6IHRudW1fdW5rbm93bjtcXG4gXFx0LyogTm90IHJlcXVpcmVkIGJ1dCBiZWluZyBjYXJlZnVsIG1hcmsgcmVnNjQgYm91bmRzIGFzIHVua25vd24gc29cXG4gXFx0ICogdGhhdCB3ZSBhcmUgZm9yY2VkIHRvIHBpY2sgdGhlbSB1cCBmcm9tIHRudW0gYW5kIHpleHQgbGF0ZXIgYW5kXFxuIFxcdCAqIGlmIHNvbWUgcGF0aCBza2lwcyB0aGlzIHN0ZXAgd2UgYXJlIHN0aWxsIHNhZmUuXFxuQEAgLTE0MzIyLDcgKzE0MzIzLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbiBcXHRfX3NjYWxhcjY0X21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XFxuIFxcdF9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcXG4gXFxuLVxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX2xzaGlmdChkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCk7XFxuK1xcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cXG4rXFx0XFx0XFx0ICAgdG51bV9sc2hpZnQoZHN0X3JlZy1cXHUwMDNldmFyX29mZiwgdW1pbl92YWwpIDogdG51bV91bmtub3duO1xcbiBcXHQvKiBXZSBtYXkgbGVhcm4gc29tZXRoaW5nIG1vcmUgZnJvbSB0aGUgdmFyX29mZiAqL1xcbiBcXHRfX3VwZGF0ZV9yZWdfYm91bmRzKGRzdF9yZWcpO1xcbiB9XFxuQEAgLTE0MzQ5LDcgKzE0MzUxLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9yc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxuIFxcdCAqIHZhcl9vZmYgb2YgdGhlIHJlc3VsdC5cXG4gXFx0ICovXFxuIFxcbi1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9yc2hpZnQoc3VicmVnLCB1bWluX3ZhbCk7XFxuK1xcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cXG4rXFx0XFx0XFx0ICAgdG51bV9yc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247XFxuIFxcdHJlZ19zZXRfdXJhbmdlMzIoZHN0X3JlZywgcmVnX3UzMl9taW4oZHN0X3JlZykgXFx1MDAzZVxcdTAwM2UgdW1heF92YWwsXFxuIFxcdFxcdFxcdCByZWdfdTMyX21heChkc3RfcmVnKSBcXHUwMDNlXFx1MDAzZSB1bWluX3ZhbCk7XFxuIFxcbkBAIC0xNDM3Nyw3ICsxNDM4MCw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcXG4gXFx0ICogYW5kIHJlbHkgb24gaW5mZXJyaW5nIG5ldyBvbmVzIGZyb20gdGhlIHVuc2lnbmVkIGJvdW5kcyBhbmRcXG4gXFx0ICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LlxcbiBcXHQgKi9cXG4tXFx0ZHN0X3JlZy1cXHUwMDNldmFyX29mZiA9IHRudW1fcnNoaWZ0KGRzdF9yZWctXFx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKTtcXG4rXFx0ZHN0X3JlZy1cXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xcbitcXHRcXHRcXHQgICB0bnVtX3JzaGlmdChkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247XFxuIFxcdHJlZ19zZXRfdXJhbmdlNjQoZHN0X3JlZywgcmVnX3VtaW4oZHN0X3JlZykgXFx1MDAzZVxcdTAwM2UgdW1heF92YWwsXFxuIFxcdFxcdFxcdCByZWdfdW1heChkc3RfcmVnKSBcXHUwMDNlXFx1MDAzZSB1bWluX3ZhbCk7XFxuIFxcbkBAIC0xNDM5MiwxOCArMTQzOTYsNDEgQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbiBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2Fyc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXFxuIHtcXG4tXFx0dTY0IHVtaW5fdmFsID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7XFxuK1xcdHUzMiB1bWluX3NoaWZ0ID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7XFxuK1xcdHUzMiB1bWF4X3NoaWZ0ID0gcmVnX3UzMl9tYXgoc3JjX3JlZyk7XFxuK1xcdHMzMiBzbWluID0gcmVnX3MzMl9taW4oZHN0X3JlZyk7XFxuK1xcdHMzMiBzbWF4ID0gcmVnX3MzMl9tYXgoZHN0X3JlZyk7XFxuIFxcbi1cXHQvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZFxcbi1cXHQgKiB1bWF4X3ZhbCBpcyBlcXVhbCB0byB1bWluX3ZhbC5cXG4tXFx0ICogQmxvdyBhd2F5IHRoZSBkc3RfcmVnIHVtaW5fdmFsdWUvdW1heF92YWx1ZSBhbmQgcmVseSBvblxcbi1cXHQgKiBkc3RfcmVnIHZhcl9vZmYgdG8gcmVmaW5lIHRoZSByZXN1bHQuXFxuK1xcdC8qXFxuK1xcdCAqIEJQRl9BUlNIIG9uIDMyLWJpdCBzdWJyZWdpc3Rlci4gQVJTSCBpcyBhIHNpZ25lZCBkaXZpZGUgYnlcXG4rXFx0ICogMl5rIChyb3VuZGluZyB0b3dhcmQgLWluZiBmb3IgbmVnYXRpdmVzKS4gV2l0aCBhIG5vbi1jb25zdGFudFxcbitcXHQgKiBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSBkaXZpZGluZyB0aGVcXG4rXFx0ICogZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcyBvZiB0aGUgZGl2aXNvcjpcXG4rXFx0ICpcXG4rXFx0ICogICBzbWluIFxcdTAwM2U9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl1cXG4rXFx0ICogICBzbWF4IFxcdTAwM2MgIDA6ICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1heF1cXG4rXFx0ICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl1cXG4rXFx0ICpcXG4rXFx0ICogdmFyX29mZiBpcyB0bnVtX3Vua25vd24gc2luY2UgYSBub24tY29uc3RhbnQgc2hpZnQgcHJldmVudHNcXG4rXFx0ICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuXFxuIFxcdCAqL1xcbi1cXHRyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsXFxuLVxcdFxcdFxcdCAodTMyKSgoKHMzMilyZWdfczMyX21pbihkc3RfcmVnKSkgXFx1MDAzZVxcdTAwM2UgdW1pbl92YWwpLFxcbi1cXHRcXHRcXHQgKHUzMikoKChzMzIpcmVnX3MzMl9tYXgoZHN0X3JlZykpIFxcdTAwM2VcXHUwMDNlIHVtaW5fdmFsKSk7XFxuLVxcbi1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctXFx1MDAzZXZhcl9vZmYpLCB1bWluX3ZhbCwgMzIpO1xcbitcXHRpZiAodW1pbl9zaGlmdCA9PSB1bWF4X3NoaWZ0KSB7XFxuK1xcdFxcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcXHUwMDNlXFx1MDAzZSB1bWluX3NoaWZ0KSxcXG4rXFx0XFx0XFx0XFx0ICh1MzIpKHNtYXggXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCkpO1xcbitcXHRcXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctXFx1MDAzZXZhcl9vZmYpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHR1bWluX3NoaWZ0LCAzMik7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChzbWluIFxcdTAwM2U9IDApXFxuK1xcdFxcdFxcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcXHUwMDNlXFx1MDAzZSB1bWF4X3NoaWZ0KSxcXG4rXFx0XFx0XFx0XFx0XFx0ICh1MzIpKHNtYXggXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCkpO1xcbitcXHRcXHRlbHNlIGlmIChzbWF4IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQpLFxcbitcXHRcXHRcXHRcXHRcXHQgKHUzMikoc21heCBcXHUwMDNlXFx1MDAzZSB1bWF4X3NoaWZ0KSk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQpLFxcbitcXHRcXHRcXHRcXHRcXHQgKHUzMikoc21heCBcXHUwMDNlXFx1MDAzZSB1bWluX3NoaWZ0KSk7XFxuK1xcdFxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX3Vua25vd247XFxuK1xcdH1cXG4gXFxuIFxcdF9fbWFya19yZWc2NF91bmJvdW5kZWQoZHN0X3JlZyk7XFxuIFxcdF9fdXBkYXRlX3JlZzMyX2JvdW5kcyhkc3RfcmVnKTtcXG5AQCAtMTQ0MTIsMTUgKzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcXG4gc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXFxuIHtcXG4tXFx0dTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7XFxuK1xcdHU2NCB1bWluX3NoaWZ0ID0gcmVnX3VtaW4oc3JjX3JlZyk7XFxuK1xcdHU2NCB1bWF4X3NoaWZ0ID0gcmVnX3VtYXgoc3JjX3JlZyk7XFxuK1xcdHM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7XFxuK1xcdHM2NCBzbWF4ID0gcmVnX3NtYXgoZHN0X3JlZyk7XFxuIFxcbi1cXHQvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZCB1bWF4X3ZhbCBpcyBlcXVhbFxcbi1cXHQgKiB0byB1bWluX3ZhbC5cXG4rXFx0LypcXG4rXFx0ICogQlBGX0FSU0ggKGFyaXRobWV0aWMgcmlnaHQgc2hpZnQpIG9uIDY0LWJpdCByZWdpc3Rlci4gU2lnbmVkXFxuK1xcdCAqIGRpdmlkZSBieSAyXmssIHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMuIFdpdGggYVxcbitcXHQgKiBub24tY29uc3RhbnQgc2hpZnQgaW4gW3VtaW4sIHVtYXhdLCB0aGUgcmVzdWx0IGlzIGJvdW5kZWRcXG4rXFx0ICogYnkgZGl2aWRpbmcgdGhlIGV4dHJlbWVzIG9mIFtzbWluLCBzbWF4XSBieSB0aGUgZXh0cmVtZXNcXG4rXFx0ICogb2YgdGhlIGRpdmlzb3I6XFxuK1xcdCAqXFxuK1xcdCAqICAgc21pbiBcXHUwMDNlPSAwOiAgW3NtaW4gLyAyXnVtYXgsIHNtYXggLyAyXnVtaW5dXFxuK1xcdCAqICAgc21heCBcXHUwMDNjICAwOiAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtYXhdXFxuK1xcdCAqICAgbWl4ZWQ6ICAgICAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtaW5dXFxuK1xcdCAqXFxuK1xcdCAqIHZhcl9vZmYgaXMgdG51bV91bmtub3duIHNpbmNlIGEgbm9uLWNvbnN0YW50IHNoaWZ0IHByZXZlbnRzXFxuK1xcdCAqIHByZWNpc2UgYml0IHRyYWNraW5nLlxcbiBcXHQgKi9cXG4tXFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCByZWdfc21pbihkc3RfcmVnKSBcXHUwMDNlXFx1MDAzZSB1bWluX3ZhbCxcXG4tXFx0XFx0XFx0IHJlZ19zbWF4KGRzdF9yZWcpIFxcdTAwM2VcXHUwMDNlIHVtaW5fdmFsKTtcXG4tXFxuLVxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX2Fyc2hpZnQoZHN0X3JlZy1cXHUwMDNldmFyX29mZiwgdW1pbl92YWwsIDY0KTtcXG4rXFx0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xcbitcXHRcXHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCwgc21heCBcXHUwMDNlXFx1MDAzZSB1bWluX3NoaWZ0KTtcXG4rXFx0XFx0ZHN0X3JlZy1cXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmLCB1bWluX3NoaWZ0LCA2NCk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChzbWluIFxcdTAwM2U9IDApXFxuK1xcdFxcdFxcdHJlZ19zZXRfc3JhbmdlNjQoZHN0X3JlZywgc21pbiBcXHUwMDNlXFx1MDAzZSB1bWF4X3NoaWZ0LCBzbWF4IFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQpO1xcbitcXHRcXHRlbHNlIGlmIChzbWF4IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXFx1MDAzZVxcdTAwM2UgdW1heF9zaGlmdCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCk7XFxuK1xcdFxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX3Vua25vd247XFxuK1xcdH1cXG4gXFxuIFxcdC8qIEl0cyBub3QgZWFzeSB0byBvcGVyYXRlIG9uIGFsdTMyIGJvdW5kcyBoZXJlIGJlY2F1c2UgaXQgZGVwZW5kc1xcbiBcXHQgKiBvbiBiaXRzIGJlaW5nIHNoaWZ0ZWQgaW4gZnJvbSB1cHBlciAzMi1iaXRzLiBUYWtlIGVhc3kgd2F5IG91dFxcbkBAIC0xNDUxNiwxNCArMTQ1NjUsMTQgQEAgc3RhdGljIGJvb2wgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2Uoc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbiBcXHRjYXNlIEJQRl9NT0Q6XFxuIFxcdFxcdHJldHVybiBzcmNfaXNfY29uc3Q7XFxuIFxcbi1cXHQvKiBTaGlmdCBvcGVyYXRvcnMgcmFuZ2UgaXMgb25seSBjb21wdXRhYmxlIGlmIHNoaWZ0IGRpbWVuc2lvbiBvcGVyYW5kXFxuLVxcdCAqIGlzIGEgY29uc3RhbnQuIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIHVuZGVmaW5lZC4gVGhpc1xcbi1cXHQgKiBpbmNsdWRlcyBzaGlmdHMgYnkgYSBuZWdhdGl2ZSBudW1iZXIuXFxuK1xcdC8qXFxuK1xcdCAqIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3VyLlxcbitcXHQgKiBUaGlzIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci5cXG4gXFx0ICovXFxuIFxcdGNhc2UgQlBGX0xTSDpcXG4gXFx0Y2FzZSBCUEZfUlNIOlxcbiBcXHRjYXNlIEJQRl9BUlNIOlxcbi1cXHRcXHRyZXR1cm4gKHNyY19pc19jb25zdCBcXHUwMDI2XFx1MDAyNiByZWdfdW1heChzcmNfcmVnKSBcXHUwMDNjIGluc25fYml0bmVzcyk7XFxuK1xcdFxcdHJldHVybiByZWdfdW1heChzcmNfcmVnKSBcXHUwMDNjIGluc25fYml0bmVzcztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuY1xcbmluZGV4IGJjMDM4YWMyZGY5OGUyLi41MmFlM2RjNTkzNjAwZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcXG5AQCAtNDgyLDYgKzQ4MiwxNzMgQEAgbDBfJT06XFx0LyogZXhpdCAqL1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4gfVxcbiBcXG4rI2RlZmluZSBTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QobmFtZSwgZGVzYywgcmFuZCwgZHN0LCBzcmMsIG9wLCBzcmNfYWRkLCBkc3RfaW5pdCwgbXNnKSBcXFxcXFxuK1xcdFNFQyhcXFwic29ja2V0XFxcIilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fZGVzY3JpcHRpb24oZGVzYylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVxcdFxcdFxcdFxcXFxcXG4rXFx0X19tc2coI2RzdCBcXFwiIFxcXCIgb3AgXFxcIiBcXFwiICNzcmMgXFxcIiB7ey4qfX07IFxcXCIgbXNnKVxcdFxcXFxcXG4rXFx0X19uYWtlZCB2b2lkIG5hbWUodm9pZClcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGFzbSB2b2xhdGlsZSAoXFxcIlxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjc3JjIFxcXCIgPSBcXFwiICNyYW5kIFxcXCI7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNzcmMgXFxcIiBcXHUwMDI2PSAzO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjc3JjIFxcXCIgKz0gXFxcIiAjc3JjX2FkZCBcXFwiO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjZHN0IFxcXCIgPSBcXFwiICNkc3RfaW5pdCBcXFwiO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjZHN0IFxcXCIgXFxcIiBvcCBcXFwiIFxcXCIgI3NyYyBcXFwiO1xcdFxcdFxcXFxcXG4rXFx0XFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcXCJcXHRcXHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVxcdFxcdFxcXFxcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfYWxsKTtcXHRcXHRcXHRcXFxcXFxuK1xcdH1cXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF8zMixcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxlZnQgc2hpZnRcXFwiLFxcbitcXHR3MCwgdzEsIHcyLCBcXFwiXFx1MDAzY1xcdTAwM2M9XFxcIiwgMSwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpXFxcIlxcbispXFxuK1xcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzJfb3ZlcmZsb3csXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBsc2ggd2l0aCBvdmVyZmxvdyBzcmNcXFwiLFxcbitcXHR3MCwgdzEsIHcyLCBcXFwiXFx1MDAzY1xcdTAwM2M9XFxcIiwgMzIsIDEsXFxuK1xcdFxcXCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF8zMixcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IHJpZ2h0IHNoaWZ0XFxcIixcXG4rXFx0dzAsIHcxLCB3MiwgXFxcIlxcdTAwM2VcXHUwMDNlPVxcXCIsIDEsIDB4ZmYsXFxuK1xcdFxcXCJSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MTUsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTI3LHZhcl9vZmY9KDB4MDsgMHg3ZikpXFxcIlxcbispXFxuK1xcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfMzJfb3ZlcmZsb3csXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCByc2ggd2l0aCBvdmVyZmxvdyBzcmNcXFwiLFxcbitcXHR3MCwgdzEsIHcyLCBcXFwiXFx1MDAzZVxcdTAwM2U9XFxcIiwgMzIsIDEsXFxuK1xcdFxcXCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzIsXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcml0aG1ldGljIHNoaWZ0XFxcIixcXG4rXFx0dzAsIHcxLCB3MiwgXFxcInNcXHUwMDNlXFx1MDAzZT1cXFwiLCAxLCAtOCxcXG4rXFx0XFxcIlIxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfb3ZlcmZsb3csXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggb3ZlcmZsb3cgc3JjXFxcIixcXG4rXFx0dzAsIHcxLCB3MiwgXFxcInNcXHUwMDNlXFx1MDAzZT1cXFwiLCAzMiwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0zMixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0zNSx2YXJfb2ZmPSgweDIwOyAweDMpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfbHNoXzY0LFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbGVmdCBzaGlmdFxcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJcXHUwMDNjXFx1MDAzYz1cXFwiLCAxLCAxLFxcbitcXHRcXFwiUjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTYsdmFyX29mZj0oMHgwOyAweDFmKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NF9vdmVyZmxvdyxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyY1xcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJcXHUwMDNjXFx1MDAzYz1cXFwiLCA2NCwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzY0LFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgcmlnaHQgc2hpZnRcXFwiLFxcbitcXHRyMCwgcjEsIHIyLCBcXFwiXFx1MDAzZVxcdTAwM2U9XFxcIiwgMSwgMHhmZixcXG4rXFx0XFxcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF82NF9vdmVyZmxvdyxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyY1xcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJcXHUwMDNlXFx1MDAzZT1cXFwiLCA2NCwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NCxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyaXRobWV0aWMgc2hpZnRcXFwiLFxcbitcXHRyMCwgcjEsIHIyLCBcXFwic1xcdTAwM2VcXHUwMDNlPVxcXCIsIDEsIC04LFxcbitcXHRcXFwiUjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXFxcIlxcbispXFxuK1xcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X292ZXJmbG93LFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG92ZXJmbG93IHNyY1xcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJzXFx1MDAzZVxcdTAwM2U9XFxcIiwgNjQsIDEsXFxuK1xcdFxcXCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSlcXFwiXFxuKylcXG4rXFxuKyNkZWZpbmUgU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChuYW1lLCBkZXNjLCByYW5kLCBkc3QsIHNyYywgZHN0X21hc2ssIGRzdF9kZWx0YSwgbXNnKSBcXFxcXFxuK1xcdFNFQyhcXFwic29ja2V0XFxcIilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fZGVzY3JpcHRpb24oZGVzYylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVxcdFxcdFxcdFxcXFxcXG4rXFx0X19tc2coI2RzdCBcXFwiIHNcXHUwMDNlXFx1MDAzZT0gXFxcIiAjc3JjIFxcXCIge3suKn19OyB7ey4qfX0gXFxcIiBtc2cpXFxcXFxcbitcXHRfX25ha2VkIHZvaWQgbmFtZSh2b2lkKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXNtIHZvbGF0aWxlIChcXFwiXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNkc3QgXFxcIiA9IFxcXCIgI3JhbmQgXFxcIjtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCIgI2RzdCBcXFwiIFxcdTAwMjY9IFxcXCIgI2RzdF9tYXNrIFxcXCI7XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNkc3QgXFxcIiArPSBcXFwiICNkc3RfZGVsdGEgXFxcIjtcXHRcXHRcXFxcXFxuK1xcdFxcdGNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTtcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCIgI3NyYyBcXFwiID0gXFxcIiAjcmFuZCBcXFwiO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjc3JjIFxcXCIgXFx1MDAyNj0gMTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCIgI3NyYyBcXFwiICs9IDE7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNkc3QgXFxcIiBzXFx1MDAzZVxcdTAwM2U9IFxcXCIgI3NyYyBcXFwiO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcXCJcXHRcXHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVxcdFxcdFxcXFxcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfYWxsKTtcXHRcXHRcXHRcXFxcXFxuK1xcdH1cXG4rXFxuK1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX3BvcyxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBwb3NpdGl2ZSBkc3RcXFwiLFxcbitcXHR3MCwgdzYsIHcyLCA3LCAxLFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPTAsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXFxcIlxcbispXFxuK1xcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9taXhlZCxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdFxcXCIsXFxuK1xcdHcwLCB3NiwgdzIsIDE1LCAtOCxcXG4rXFx0XFxcIlI2PXNjYWxhcihzbWluPTAsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0zLHZhcl9vZmY9KDB4MDsgMHhmZmZmZmZmZikpXFxcIlxcbispXFxuK1xcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9uZWcsXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XFxcIixcXG4rXFx0dzAsIHc2LCB3MiwgOCwgLTE2LFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49dW1pbj11bWluMzI9MHhmZmZmZmZmOCxzbWF4PXVtYXg9dW1heDMyPTB4ZmZmZmZmZmUsc21pbjMyPS04LHNtYXgzMj0tMix2YXJfb2ZmPSgweGZmZmZmZmY4OyAweDcpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfcG9zLFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdFxcXCIsXFxuK1xcdHIwLCByNiwgcjIsIDcsIDEsXFxuK1xcdFxcXCJSNj1zY2FsYXIoc21pbj1zbWluMzI9MCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X21peGVkLFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG1peGVkLXNpZ24gZHN0XFxcIixcXG4rXFx0cjAsIHI2LCByMiwgMTUsIC04LFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPTMpXFxcIlxcbispXFxuK1xcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9uZWcsXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XFxcIixcXG4rXFx0cjAsIHI2LCByMiwgOCwgLTE2LFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPS04LHNtYXg9c21heDMyPS0yLHVtaW49MHhmZmZmZmZmZmZmZmZmZmY4LHVtYXg9MHhmZmZmZmZmZmZmZmZmZmZlLHVtaW4zMj0weGZmZmZmZmY4LHVtYXgzMj0weGZmZmZmZmZlLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmODsgMHg3KSlcXFwiXFxuKylcXG4rXFxuIFNFQyhcXFwic29ja2V0XFxcIilcXG4gX19kZXNjcmlwdGlvbihcXFwiYm91bmRzIGNoZWNrIGFmdGVyIDMyLWJpdCByaWdodCBzaGlmdCB3aXRoIDY0LWJpdCBpbnB1dFxcXCIpXFxuIF9fZmFpbHVyZSBfX21zZyhcXFwibWF0aCBiZXR3ZWVuIG1hcF92YWx1ZSBwb2ludGVyIGFuZCA0Mjk0OTY3Mjk0IGlzIG5vdCBhbGxvd2VkXFxcIilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MDcuNjEyODkyNDI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA5OTY4NzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjYWxhcjMyX21pbl9tYXhfbHNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9sc2hcIixcbiAgICBcInNjYWxhcjMyX21pbl9tYXhfcnNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9yc2hcIixcbiAgICBcInNjYWxhcjMyX21pbl9tYXhfYXJzaFwiLFxuICAgIFwic2NhbGFyX21pbl9tYXhfYXJzaFwiLFxuICAgIFwiaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHN1cHBvcnQgdHJhY2tpbmcgYm91bmRzIGZvciBzaGlmdCBvcGVyYXRpb25zIChMU0gsIFJTSCwgQVJTSCkgd2hlbiB0aGUgc2hpZnQgYW1vdW50IGlzIG5vdCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBoaWdobHkgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCBCUEYgdmVyaWZpZXIgbG9naWMsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSB2dWxuZXJhYmlsaXRpZXMgb3IgaW5jb3JyZWN0IGJvdW5kcyB0cmFja2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGI0ZGFhMGMyOWEyYjY5MDdlNjE0NTFkMjdlMDdlOGFmMTE1ZGM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTQ6MDE6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5iZjI0N2MyMTljYWI1OCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTQyNzcsNyArMTQyNzcsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBcdHN0cnVjdCB0bnVtIHN1YnJlZyA9IHRudW1fc3VicmVnKGRzdF9yZWctXHUwMDNldmFyX29mZik7XG4gXG4gXHRfX3NjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3N1YnJlZyh0bnVtX2xzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSk7XG4rXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbitcdFx0XHQgICB0bnVtX3N1YnJlZyh0bnVtX2xzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSkgOiB0bnVtX3Vua25vd247XG4gXHQvKiBOb3QgcmVxdWlyZWQgYnV0IGJlaW5nIGNhcmVmdWwgbWFyayByZWc2NCBib3VuZHMgYXMgdW5rbm93biBzb1xuIFx0ICogdGhhdCB3ZSBhcmUgZm9yY2VkIHRvIHBpY2sgdGhlbSB1cCBmcm9tIHRudW0gYW5kIHpleHQgbGF0ZXIgYW5kXG4gXHQgKiBpZiBzb21lIHBhdGggc2tpcHMgdGhpcyBzdGVwIHdlIGFyZSBzdGlsbCBzYWZlLlxuQEAgLTE0MzIyLDcgKzE0MzIzLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0X19zY2FsYXI2NF9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xuIFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xuIFxuLVx0ZHN0X3JlZy1cdTAwM2V2YXJfb2ZmID0gdG51bV9sc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCk7XG4rXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbitcdFx0XHQgICB0bnVtX2xzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjtcbiBcdC8qIFdlIG1heSBsZWFybiBzb21ldGhpbmcgbW9yZSBmcm9tIHRoZSB2YXJfb2ZmICovXG4gXHRfX3VwZGF0ZV9yZWdfYm91bmRzKGRzdF9yZWcpO1xuIH1cbkBAIC0xNDM0OSw3ICsxNDM1MSw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0ICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LlxuIFx0ICovXG4gXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3JzaGlmdChzdWJyZWcsIHVtaW5fdmFsKTtcbitcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuK1x0XHRcdCAgIHRudW1fcnNoaWZ0KHN1YnJlZywgdW1pbl92YWwpIDogdG51bV91bmtub3duO1xuIFx0cmVnX3NldF91cmFuZ2UzMihkc3RfcmVnLCByZWdfdTMyX21pbihkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1heF92YWwsXG4gXHRcdFx0IHJlZ191MzJfbWF4KGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCk7XG4gXG5AQCAtMTQzNzcsNyArMTQzODAsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9yc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHQgKiBhbmQgcmVseSBvbiBpbmZlcnJpbmcgbmV3IG9uZXMgZnJvbSB0aGUgdW5zaWduZWQgYm91bmRzIGFuZFxuIFx0ICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LlxuIFx0ICovXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3JzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKTtcbitcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuK1x0XHRcdCAgIHRudW1fcnNoaWZ0KGRzdF9yZWctXHUwMDNldmFyX29mZiwgdW1pbl92YWwpIDogdG51bV91bmtub3duO1xuIFx0cmVnX3NldF91cmFuZ2U2NChkc3RfcmVnLCByZWdfdW1pbihkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1heF92YWwsXG4gXHRcdFx0IHJlZ191bWF4KGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCk7XG4gXG5AQCAtMTQzOTIsMTggKzE0Mzk2LDQxIEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2Fyc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHRcdFx0XHQgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpzcmNfcmVnKVxuIHtcbi1cdHU2NCB1bWluX3ZhbCA9IHJlZ191MzJfbWluKHNyY19yZWcpO1xuK1x0dTMyIHVtaW5fc2hpZnQgPSByZWdfdTMyX21pbihzcmNfcmVnKTtcbitcdHUzMiB1bWF4X3NoaWZ0ID0gcmVnX3UzMl9tYXgoc3JjX3JlZyk7XG4rXHRzMzIgc21pbiA9IHJlZ19zMzJfbWluKGRzdF9yZWcpO1xuK1x0czMyIHNtYXggPSByZWdfczMyX21heChkc3RfcmVnKTtcbiBcbi1cdC8qIFVwb24gcmVhY2hpbmcgaGVyZSwgc3JjX2tub3duIGlzIHRydWUgYW5kXG4tXHQgKiB1bWF4X3ZhbCBpcyBlcXVhbCB0byB1bWluX3ZhbC5cbi1cdCAqIEJsb3cgYXdheSB0aGUgZHN0X3JlZyB1bWluX3ZhbHVlL3VtYXhfdmFsdWUgYW5kIHJlbHkgb25cbi1cdCAqIGRzdF9yZWcgdmFyX29mZiB0byByZWZpbmUgdGhlIHJlc3VsdC5cbitcdC8qXG4rXHQgKiBCUEZfQVJTSCBvbiAzMi1iaXQgc3VicmVnaXN0ZXIuIEFSU0ggaXMgYSBzaWduZWQgZGl2aWRlIGJ5XG4rXHQgKiAyXmsgKHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMpLiBXaXRoIGEgbm9uLWNvbnN0YW50XG4rXHQgKiBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSBkaXZpZGluZyB0aGVcbitcdCAqIGV4dHJlbWVzIG9mIFtzbWluLCBzbWF4XSBieSB0aGUgZXh0cmVtZXMgb2YgdGhlIGRpdmlzb3I6XG4rXHQgKlxuK1x0ICogICBzbWluIFx1MDAzZT0gMDogIFtzbWluIC8gMl51bWF4LCBzbWF4IC8gMl51bWluXVxuK1x0ICogICBzbWF4IFx1MDAzYyAgMDogIFtzbWluIC8gMl51bWluLCBzbWF4IC8gMl51bWF4XVxuK1x0ICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl1cbitcdCAqXG4rXHQgKiB2YXJfb2ZmIGlzIHRudW1fdW5rbm93biBzaW5jZSBhIG5vbi1jb25zdGFudCBzaGlmdCBwcmV2ZW50c1xuK1x0ICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuXG4gXHQgKi9cbi1cdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZyxcbi1cdFx0XHQgKHUzMikoKChzMzIpcmVnX3MzMl9taW4oZHN0X3JlZykpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCksXG4tXHRcdFx0ICh1MzIpKCgoczMyKXJlZ19zMzJfbWF4KGRzdF9yZWcpKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpKTtcbi1cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdCh0bnVtX3N1YnJlZyhkc3RfcmVnLVx1MDAzZXZhcl9vZmYpLCB1bWluX3ZhbCwgMzIpO1xuK1x0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xuK1x0XHRyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpLFxuK1x0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpKTtcbitcdFx0ZHN0X3JlZy1cdTAwM2V2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctXHUwMDNldmFyX29mZiksXG4rXHRcdFx0XHRcdFx0dW1pbl9zaGlmdCwgMzIpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKHNtaW4gXHUwMDNlPSAwKVxuK1x0XHRcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcdTAwM2VcdTAwM2UgdW1heF9zaGlmdCksXG4rXHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4rXHRcdGVsc2UgaWYgKHNtYXggXHUwMDNjIDApXG4rXHRcdFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSxcbitcdFx0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQpKTtcbitcdFx0ZWxzZVxuK1x0XHRcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcdTAwM2VcdTAwM2UgdW1pbl9zaGlmdCksXG4rXHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4rXHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fdW5rbm93bjtcbitcdH1cbiBcbiBcdF9fbWFya19yZWc2NF91bmJvdW5kZWQoZHN0X3JlZyk7XG4gXHRfX3VwZGF0ZV9yZWczMl9ib3VuZHMoZHN0X3JlZyk7XG5AQCAtMTQ0MTIsMTUgKzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9hcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0XHRcdFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXG4ge1xuLVx0dTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7XG4rXHR1NjQgdW1pbl9zaGlmdCA9IHJlZ191bWluKHNyY19yZWcpO1xuK1x0dTY0IHVtYXhfc2hpZnQgPSByZWdfdW1heChzcmNfcmVnKTtcbitcdHM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7XG4rXHRzNjQgc21heCA9IHJlZ19zbWF4KGRzdF9yZWcpO1xuIFxuLVx0LyogVXBvbiByZWFjaGluZyBoZXJlLCBzcmNfa25vd24gaXMgdHJ1ZSBhbmQgdW1heF92YWwgaXMgZXF1YWxcbi1cdCAqIHRvIHVtaW5fdmFsLlxuK1x0LypcbitcdCAqIEJQRl9BUlNIIChhcml0aG1ldGljIHJpZ2h0IHNoaWZ0KSBvbiA2NC1iaXQgcmVnaXN0ZXIuIFNpZ25lZFxuK1x0ICogZGl2aWRlIGJ5IDJeaywgcm91bmRpbmcgdG93YXJkIC1pbmYgZm9yIG5lZ2F0aXZlcy4gV2l0aCBhXG4rXHQgKiBub24tY29uc3RhbnQgc2hpZnQgaW4gW3VtaW4sIHVtYXhdLCB0aGUgcmVzdWx0IGlzIGJvdW5kZWRcbitcdCAqIGJ5IGRpdmlkaW5nIHRoZSBleHRyZW1lcyBvZiBbc21pbiwgc21heF0gYnkgdGhlIGV4dHJlbWVzXG4rXHQgKiBvZiB0aGUgZGl2aXNvcjpcbitcdCAqXG4rXHQgKiAgIHNtaW4gXHUwMDNlPSAwOiAgW3NtaW4gLyAyXnVtYXgsIHNtYXggLyAyXnVtaW5dXG4rXHQgKiAgIHNtYXggXHUwMDNjICAwOiAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtYXhdXG4rXHQgKiAgIG1peGVkOiAgICAgIFtzbWluIC8gMl51bWluLCBzbWF4IC8gMl51bWluXVxuK1x0ICpcbitcdCAqIHZhcl9vZmYgaXMgdG51bV91bmtub3duIHNpbmNlIGEgbm9uLWNvbnN0YW50IHNoaWZ0IHByZXZlbnRzXG4rXHQgKiBwcmVjaXNlIGJpdCB0cmFja2luZy5cbiBcdCAqL1xuLVx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCByZWdfc21pbihkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwsXG4tXHRcdFx0IHJlZ19zbWF4KGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCk7XG4tXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX2Fyc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCwgNjQpO1xuK1x0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xuK1x0XHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpO1xuK1x0XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX2Fyc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3NoaWZ0LCA2NCk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAoc21pbiBcdTAwM2U9IDApXG4rXHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWF4X3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbitcdFx0ZWxzZSBpZiAoc21heCBcdTAwM2MgMClcbitcdFx0XHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQpO1xuK1x0XHRlbHNlXG4rXHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbitcdFx0ZHN0X3JlZy1cdTAwM2V2YXJfb2ZmID0gdG51bV91bmtub3duO1xuK1x0fVxuIFxuIFx0LyogSXRzIG5vdCBlYXN5IHRvIG9wZXJhdGUgb24gYWx1MzIgYm91bmRzIGhlcmUgYmVjYXVzZSBpdCBkZXBlbmRzXG4gXHQgKiBvbiBiaXRzIGJlaW5nIHNoaWZ0ZWQgaW4gZnJvbSB1cHBlciAzMi1iaXRzLiBUYWtlIGVhc3kgd2F5IG91dFxuQEAgLTE0NTE2LDE0ICsxNDU2NSwxNCBAQCBzdGF0aWMgYm9vbCBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRjYXNlIEJQRl9NT0Q6XG4gXHRcdHJldHVybiBzcmNfaXNfY29uc3Q7XG4gXG4tXHQvKiBTaGlmdCBvcGVyYXRvcnMgcmFuZ2UgaXMgb25seSBjb21wdXRhYmxlIGlmIHNoaWZ0IGRpbWVuc2lvbiBvcGVyYW5kXG4tXHQgKiBpcyBhIGNvbnN0YW50LiBTaGlmdHMgZ3JlYXRlciB0aGFuIDMxIG9yIDYzIGFyZSB1bmRlZmluZWQuIFRoaXNcbi1cdCAqIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci5cbitcdC8qXG4rXHQgKiBTaGlmdHMgZ3JlYXRlciB0aGFuIDMxIG9yIDYzIGFyZSBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW91ci5cbitcdCAqIFRoaXMgaW5jbHVkZXMgc2hpZnRzIGJ5IGEgbmVnYXRpdmUgbnVtYmVyLlxuIFx0ICovXG4gXHRjYXNlIEJQRl9MU0g6XG4gXHRjYXNlIEJQRl9SU0g6XG4gXHRjYXNlIEJQRl9BUlNIOlxuLVx0XHRyZXR1cm4gKHNyY19pc19jb25zdCBcdTAwMjZcdTAwMjYgcmVnX3VtYXgoc3JjX3JlZykgXHUwMDNjIGluc25fYml0bmVzcyk7XG4rXHRcdHJldHVybiByZWdfdW1heChzcmNfcmVnKSBcdTAwM2MgaW5zbl9iaXRuZXNzO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuY1xuaW5kZXggYmMwMzhhYzJkZjk4ZTIuLjUyYWUzZGM1OTM2MDBmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JvdW5kcy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcbkBAIC00ODIsNiArNDgyLDE3MyBAQCBsMF8lPTpcdC8qIGV4aXQgKi9cdFx0XHRcdFx0XFxcbiBcdDogX19jbG9iYmVyX2FsbCk7XG4gfVxuIFxuKyNkZWZpbmUgU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKG5hbWUsIGRlc2MsIHJhbmQsIGRzdCwgc3JjLCBvcCwgc3JjX2FkZCwgZHN0X2luaXQsIG1zZykgXFxcbitcdFNFQyhcInNvY2tldFwiKVx0XHRcdFx0XHRcXFxuK1x0X19kZXNjcmlwdGlvbihkZXNjKVx0XHRcdFx0XFxcbitcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVx0XHRcdFxcXG4rXHRfX21zZygjZHN0IFwiIFwiIG9wIFwiIFwiICNzcmMgXCIge3suKn19OyBcIiBtc2cpXHRcXFxuK1x0X19uYWtlZCB2b2lkIG5hbWUodm9pZClcdFx0XHRcdFxcXG4rXHR7XHRcdFx0XHRcdFx0XFxcbitcdFx0YXNtIHZvbGF0aWxlIChcIlx0XHRcdFx0XFxcbitcdFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcXFxuK1x0XHRcIiAjc3JjIFwiID0gXCIgI3JhbmQgXCI7XHRcdFx0XFxcbitcdFx0XCIgI3NyYyBcIiBcdTAwMjY9IDM7XHRcdFx0XHRcXFxuK1x0XHRcIiAjc3JjIFwiICs9IFwiICNzcmNfYWRkIFwiO1x0XHRcXFxuK1x0XHRcIiAjZHN0IFwiID0gXCIgI2RzdF9pbml0IFwiO1x0XHRcXFxuK1x0XHRcIiAjZHN0IFwiIFwiIG9wIFwiIFwiICNzcmMgXCI7XHRcdFxcXG4rXHRcdGV4aXQ7XHRcdFx0XHRcdFxcXG4rXCJcdFx0OjogX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMilcdFx0XFxcbitcdFx0OiBfX2Nsb2JiZXJfYWxsKTtcdFx0XHRcXFxuK1x0fVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzIsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxlZnQgc2hpZnRcIixcbitcdHcwLCB3MSwgdzIsIFwiXHUwMDNjXHUwMDNjPVwiLCAxLCAxLFxuK1x0XCJSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xNix2YXJfb2ZmPSgweDA7IDB4MWYpKVwiXG4rKVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzJfb3ZlcmZsb3csXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyY1wiLFxuK1x0dzAsIHcxLCB3MiwgXCJcdTAwM2NcdTAwM2M9XCIsIDMyLCAxLFxuK1x0XCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCByaWdodCBzaGlmdFwiLFxuK1x0dzAsIHcxLCB3MiwgXCJcdTAwM2VcdTAwM2U9XCIsIDEsIDB4ZmYsXG4rXHRcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyX292ZXJmbG93LFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCByc2ggd2l0aCBvdmVyZmxvdyBzcmNcIixcbitcdHcwLCB3MSwgdzIsIFwiXHUwMDNlXHUwMDNlPVwiLCAzMiwgMSxcbitcdFwiUjE9c2NhbGFyKCkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTMyLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTM1LHZhcl9vZmY9KDB4MjA7IDB4MykpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzIsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyaXRobWV0aWMgc2hpZnRcIixcbitcdHcwLCB3MSwgdzIsIFwic1x1MDAzZVx1MDAzZT1cIiwgMSwgLTgsXG4rXHRcIlIxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9vdmVyZmxvdyxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIG92ZXJmbG93IHNyY1wiLFxuK1x0dzAsIHcxLCB3MiwgXCJzXHUwMDNlXHUwMDNlPVwiLCAzMiwgMSxcbitcdFwiUjE9c2NhbGFyKCkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTMyLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTM1LHZhcl9vZmY9KDB4MjA7IDB4MykpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NCxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbGVmdCBzaGlmdFwiLFxuK1x0cjAsIHIxLCByMiwgXCJcdTAwM2NcdTAwM2M9XCIsIDEsIDEsXG4rXHRcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NF9vdmVyZmxvdyxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbHNoIHdpdGggb3ZlcmZsb3cgc3JjXCIsXG4rXHRyMCwgcjEsIHIyLCBcIlx1MDAzY1x1MDAzYz1cIiwgNjQsIDEsXG4rXHRcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwiXG4rKVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjQsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IHJpZ2h0IHNoaWZ0XCIsXG4rXHRyMCwgcjEsIHIyLCBcIlx1MDAzZVx1MDAzZT1cIiwgMSwgMHhmZixcbitcdFwiUjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTE1LHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTEyNyx2YXJfb2ZmPSgweDA7IDB4N2YpKVwiXG4rKVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjRfb3ZlcmZsb3csXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyY1wiLFxuK1x0cjAsIHIxLCByMiwgXCJcdTAwM2VcdTAwM2U9XCIsIDY0LCAxLFxuK1x0XCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NCxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJpdGhtZXRpYyBzaGlmdFwiLFxuK1x0cjAsIHIxLCByMiwgXCJzXHUwMDNlXHUwMDNlPVwiLCAxLCAtOCxcbitcdFwiUjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfb3ZlcmZsb3csXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBvdmVyZmxvdyBzcmNcIixcbitcdHIwLCByMSwgcjIsIFwic1x1MDAzZVx1MDAzZT1cIiwgNjQsIDEsXG4rXHRcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwiXG4rKVxuK1xuKyNkZWZpbmUgU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChuYW1lLCBkZXNjLCByYW5kLCBkc3QsIHNyYywgZHN0X21hc2ssIGRzdF9kZWx0YSwgbXNnKSBcXFxuK1x0U0VDKFwic29ja2V0XCIpXHRcdFx0XHRcdFxcXG4rXHRfX2Rlc2NyaXB0aW9uKGRlc2MpXHRcdFx0XHRcXFxuK1x0X19zdWNjZXNzIF9fbG9nX2xldmVsKDIpXHRcdFx0XFxcbitcdF9fbXNnKCNkc3QgXCIgc1x1MDAzZVx1MDAzZT0gXCIgI3NyYyBcIiB7ey4qfX07IHt7Lip9fSBcIiBtc2cpXFxcbitcdF9fbmFrZWQgdm9pZCBuYW1lKHZvaWQpXHRcdFx0XHRcXFxuK1x0e1x0XHRcdFx0XHRcdFxcXG4rXHRcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFxcXG4rXHRcdGNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTtcdFx0XFxcbitcdFx0XCIgI2RzdCBcIiA9IFwiICNyYW5kIFwiO1x0XHRcdFxcXG4rXHRcdFwiICNkc3QgXCIgXHUwMDI2PSBcIiAjZHN0X21hc2sgXCI7XHRcdFxcXG4rXHRcdFwiICNkc3QgXCIgKz0gXCIgI2RzdF9kZWx0YSBcIjtcdFx0XFxcbitcdFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcXFxuK1x0XHRcIiAjc3JjIFwiID0gXCIgI3JhbmQgXCI7XHRcdFx0XFxcbitcdFx0XCIgI3NyYyBcIiBcdTAwMjY9IDE7XHRcdFx0XHRcXFxuK1x0XHRcIiAjc3JjIFwiICs9IDE7XHRcdFx0XHRcXFxuK1x0XHRcIiAjZHN0IFwiIHNcdTAwM2VcdTAwM2U9IFwiICNzcmMgXCI7XHRcdFx0XFxcbitcdFx0ZXhpdDtcdFx0XHRcdFx0XFxcbitcIlx0XHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVx0XHRcXFxuK1x0XHQ6IF9fY2xvYmJlcl9hbGwpO1x0XHRcdFxcXG4rXHR9XG4rXG4rU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX3BvcyxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdFwiLFxuK1x0dzAsIHc2LCB3MiwgNywgMSxcbitcdFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPTAsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXCJcbispXG4rXG4rU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX21peGVkLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbWl4ZWQtc2lnbiBkc3RcIixcbitcdHcwLCB3NiwgdzIsIDE1LCAtOCxcbitcdFwiUjY9c2NhbGFyKHNtaW49MCxzbWF4PXVtYXg9MHhmZmZmZmZmZixzbWluMzI9LTQsc21heDMyPTMsdmFyX29mZj0oMHgwOyAweGZmZmZmZmZmKSlcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfbmVnLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XCIsXG4rXHR3MCwgdzYsIHcyLCA4LCAtMTYsXG4rXHRcIlI2PXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZjgsc21heD11bWF4PXVtYXgzMj0weGZmZmZmZmZlLHNtaW4zMj0tOCxzbWF4MzI9LTIsdmFyX29mZj0oMHhmZmZmZmZmODsgMHg3KSlcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfcG9zLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggcG9zaXRpdmUgZHN0XCIsXG4rXHRyMCwgcjYsIHIyLCA3LCAxLFxuK1x0XCJSNj1zY2FsYXIoc21pbj1zbWluMzI9MCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbWl4ZWQsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdFwiLFxuK1x0cjAsIHI2LCByMiwgMTUsIC04LFxuK1x0XCJSNj1zY2FsYXIoc21pbj1zbWluMzI9LTQsc21heD1zbWF4MzI9MylcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbmVnLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XCIsXG4rXHRyMCwgcjYsIHIyLCA4LCAtMTYsXG4rXHRcIlI2PXNjYWxhcihzbWluPXNtaW4zMj0tOCxzbWF4PXNtYXgzMj0tMix1bWluPTB4ZmZmZmZmZmZmZmZmZmZmOCx1bWF4PTB4ZmZmZmZmZmZmZmZmZmZmZSx1bWluMzI9MHhmZmZmZmZmOCx1bWF4MzI9MHhmZmZmZmZmZSx2YXJfb2ZmPSgweGZmZmZmZmZmZmZmZmZmZjg7IDB4NykpXCJcbispXG4rXG4gU0VDKFwic29ja2V0XCIpXG4gX19kZXNjcmlwdGlvbihcImJvdW5kcyBjaGVjayBhZnRlciAzMi1iaXQgcmlnaHQgc2hpZnQgd2l0aCA2NC1iaXQgaW5wdXRcIilcbiBfX2ZhaWx1cmUgX19tc2coXCJtYXRoIGJldHdlZW4gbWFwX3ZhbHVlIHBvaW50ZXIgYW5kIDQyOTQ5NjcyOTQgaXMgbm90IGFsbG93ZWRcIilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjA3LjYxMjg5NDIxNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NTI0MTAzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgaG93IHRoZSBCUEYgdmVyaWZpZXIgaGFuZGxlcyBib3VuZHMgdHJhY2tpbmcgZm9yIHNoaWZ0IG9wZXJhdGlvbnMg4oCTIGxlZnQgc2hpZnQgKExTSCksIHJpZ2h0IHNoaWZ0IChSU0gpLCBhbmQgYXJpdGhtZXRpYyByaWdodCBzaGlmdCAoQVJTSCkg4oCTIHdoZW4gdGhlIHNoaWZ0ICphbW91bnQqIGlzbid0IGEgZml4ZWQgY29uc3RhbnQsIGJ1dCBhIHJhbmdlLiAgUHJldmlvdXNseSwgSSByZWNhbGwgdGhlIHZlcmlmaWVyIG5lZWRlZCBhIGNvbnN0YW50IHNoaWZ0IGFtb3VudCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiAgVGhpcyBjaGFuZ2Ugc2VlbXMgdG8gcmVsYXggdGhhdCByZXF1aXJlbWVudCwgYWxsb3dpbmcgZm9yIGEgc2hpZnQgYW1vdW50IHJhbmdlICh3aGVyZSBgdW1pbl92YWwgIT0gdW1heF92YWxgKSBhbmQgYWRqdXN0aW5nIHRoZSBib3VuZHMgY2FsY3VsYXRpb24gYWNjb3JkaW5nbHkuXG5cblRoZSBrZXkgaXMgdGhhdCB0aGUgYGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlYCBmdW5jdGlvbiBpcyBhbHNvIGJlaW5nIHVwZGF0ZWQgdG8gbm93IHJldHVybiB0cnVlIGZvciBub24tY29uc3RhbnQgc2hpZnRzLCBhcyBsb25nIGFzIHRoZSBtYXhpbXVtIHNoaWZ0IGFtb3VudCBpcyBsZXNzIHRoYW4gdGhlIGJpdCB3aWR0aCwgZWl0aGVyIDMyIG9yIDY0LiBUaGF0J3MgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLCBJIGNhbiBzZWUgaG93IGl0IGhlbHBzIHRvIGNvbXB1dGUgdGhlc2UgYm91bmRzIGNvcnJlY3RseS5cblxuVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgdmVyaWZpZXIgaXMgYW4gaW5jcmVkaWJseSBjcml0aWNhbCBhbmQgZnJlcXVlbnRseS1hY2Nlc3NlZCBjb21wb25lbnQgb2YgdGhlIGtlcm5lbCwgc28gdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIHNlcmlvdXMgZnV6emluZy4gV2UgaGF2ZSB0byBiZSBtZXRpY3Vsb3VzIGhlcmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBleGFjdCBmdW5jdGlvbnMgdGhhdCBhcmUgZ2V0dGluZyBtb2RpZmllZC4gTG9va3MgbGlrZSBpdCdzIGltcGFjdGluZyB0aGVzZTogYHNjYWxhcjMyX21pbl9tYXhfbHNoYCwgYHNjYWxhcl9taW5fbWF4X2xzaGAsIGBzY2FsYXIzMl9taW5fbWF4X3JzaGAsIGBzY2FsYXJfbWluX21heF9yc2hgLCBgc2NhbGFyMzJfbWluX21heF9hcnNoYCwgYHNjYWxhcl9taW5fbWF4X2Fyc2hgLCBhbmQgYWxzbyBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgLiBHb3QgaXQuXG5cbkZvciBjb25maWd1cmF0aW9uLCBgQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHRoZSBvYnZpb3VzIG9uZS4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBpcyB0aGUgb25seSBvbmUgcmVxdWlyZWQgZm9yIHRoZSByZWxldmFudCBjb2RlIHRvIGJlIGNvbXBpbGVkLiBJIHdpbGwgY29uZmlybSB0aGF0IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg4MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjE0LjM2NTMwNzczMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTcyNjQ0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmVyaWZpZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MTQuNTYyNTc4MzIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxMDU3MTMxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlybWluZyB0aGUgQlBGIFN5c2NhbGwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHllcywgYmFzZWQgb24gd2hhdCBJIGtub3csIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBsb29raW5nIGZvci4gVGhhdCBzZWVtcyByaWdodC4gTm93LCBsZXQncyBkaXZlIGluIGFuZCBjb25maXJtIHRoaXMuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGltcGFjdHMgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5LiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgaG93IHRoaW5ncyBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgd2hlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4ODMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNDowMToyNi42NjgyOTQ3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY3MDcyNzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjYWxhcjMyX21pbl9tYXhfbHNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQyMzk9c3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfeG9yKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0MjU2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDI1NzpzdGF0aWMgdm9pZCBfX3NjYWxhcjMyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI1OC1cXHRcXHRcXHRcXHQgICB1NjQgdW1pbl92YWwsIHU2NCB1bWF4X3ZhbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNzE6c3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9sc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0MjcyLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqc3JjX3JlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3OC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNzk6XFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI4MC1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gKHVtaW5fdmFsID09IHVtYXhfdmFsKSA/XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQzMTY9c3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0MzIzLVxcdF9fc2NhbGFyNjRfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQzMjQ6XFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDMyNS1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDYxND1zdGF0aWMgaW50IGFkanVzdF9zY2FsYXJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ3MzAtXFx0XFx0aWYgKGFsdTMyKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDczMTpcXHRcXHRcXHRzY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCBcXHUwMDI2c3JjX3JlZyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NzMyLVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MjguMzM1MzcyMzEzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5NTE5MDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIHNlZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhvc2UgZnVuY3Rpb25zOiBgc2NhbGFyMzJfbWluX21heF9sc2hgLCBgc2NhbGFyX21pbl9tYXhfbHNoYCwgYHNjYWxhcjMyX21pbl9tYXhfcnNoYCwgYHNjYWxhcl9taW5fbWF4X3JzaGAsIGBzY2FsYXIzMl9taW5fbWF4X2Fyc2hgLCBgc2NhbGFyX21pbl9tYXhfYXJzaGAsIGFyZSBhbGwgc3Ryb25nIGNvbnRlbmRlcnMgZm9yIGluY2x1c2lvbiBpbiBgRm9jdXNTeW1ib2xzYC4gVGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy4gQnV0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgYGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlYCBiZWZvcmUgSSBnbyBmdXJ0aGVyLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjczLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjMzLjEzMDU2NTg2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIzMTQwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDQ4Mj1zdGF0aWMgdm9pZCBzY2FsYXJfYnl0ZV9zd2FwKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ1MzAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NTMxOnN0YXRpYyBib29sIGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlKHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ1MzItXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqc3JjX3JlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDYxND1zdGF0aWMgaW50IGFkanVzdF9zY2FsYXJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ2MjMtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NjI0OlxcdGlmICghaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UoaW5zbiwgXFx1MDAyNnNyY19yZWcpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjI1LVxcdFxcdF9fbWFya19yZWdfdW5rbm93bihlbnYsIGRzdF9yZWcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNDowMTozMy4yNDI4ODgzNjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM3MjY2OTc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFZlcmlmaWFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIHNlZW1zIGxpa2UgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gY29uc2lkZXIsIGJ1dCBsZXQncyBmaXJzdCBlbnN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYXQgdGhlIHBhdGNoLCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIHRoZSBhc3NvY2lhdGVkIHNlbGZ0ZXN0cy4gVGhlIHNlbGZ0ZXN0cyBhcmUganVzdCB2YWxpZGF0aW9uIGNoZWNrcywgc28gdGhleSBkb24ndCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzIHNxdWFyZWx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGhlcmUuXG5cbk5vdywgbGV0J3MgYXJ0aWN1bGF0ZSB0aGUgY29yZSByZWFzb25pbmcgZm9yIHRoZSBmdXp6aW5nIHJlcXVpcmVtZW50LiBUaGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBCUEYgdmVyaWZpZXIgdG8gaGFuZGxlIGJvdW5kcyB0cmFja2luZyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZXJlIHRoZSBzaGlmdCAqYW1vdW50KiBpc24ndCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpbnRyb2R1Y2VzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY3JpdGljYWwgYW5kIGZyZXF1ZW50bHkgYWNjZXNzZWQgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLiBDb25zZXF1ZW50bHksIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIGRldGVjdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHRoZSBuZXcgYm91bmRzIHRyYWNraW5nIG1lY2hhbmlzbS5cblxuV2UgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgc2NhbGFyMzJfbWluX21heF9sc2hgLCBgc2NhbGFyX21pbl9tYXhfbHNoYCwgYHNjYWxhcjMyX21pbl9tYXhfcnNoYCwgYHNjYWxhcl9taW5fbWF4X3JzaGAsIGBzY2FsYXIzMl9taW5fbWF4X2Fyc2hgLCBgc2NhbGFyX21pbl9tYXhfYXJzaGAgYW5kIGBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZWAuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2suIE9rYXksIGBzY2FsYXIzMl9taW5fbWF4X2xzaGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW1wYWN0ZWQ/IEhtbSwgaXQgbG9va3MgbGlrZSBgX19zY2FsYXIzMl9taW5fbWF4X2xzaGAgd2Fzbid0IG1vZGlmaWVkLCBidXQgYHNjYWxhcjMyX21pbl9tYXhfbHNoYCB3YXMuXG5cbkFscmlnaHQsIHRpbWUgdG8gbG9nIHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI1OCwiT3V0cHV0VG9rZW5zIjoyMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6NDMuNjE1NTYxOTM1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcwMTA5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NhbGFyMzJfbWluX21heF9sc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X2xzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9yc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X3JzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9hcnNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9hcnNoXCIsXG4gICAgXCJpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc3VwcG9ydCB0cmFja2luZyBib3VuZHMgZm9yIHNoaWZ0IG9wZXJhdGlvbnMgKExTSCwgUlNILCBBUlNIKSB3aGVuIHRoZSBzaGlmdCBhbW91bnQgaXMgbm90IGEgY29uc3RhbnQsIGJ1dCBhIHJhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGhpZ2hseSByZWFjaGFibGUgYW5kIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NhbGFyMzJfbWluX21heF9sc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X2xzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9yc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X3JzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9hcnNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9hcnNoXCIsXG4gICAgXCJpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc3VwcG9ydCB0cmFja2luZyBib3VuZHMgZm9yIHNoaWZ0IG9wZXJhdGlvbnMgKExTSCwgUlNILCBBUlNIKSB3aGVuIHRoZSBzaGlmdCBhbW91bnQgaXMgbm90IGEgY29uc3RhbnQsIGJ1dCBhIHJhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGhpZ2hseSByZWFjaGFibGUgYW5kIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowtvjgr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 13:51:48 +0000 UTC FinishedAt: 2026-06-23 14:01:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a975094bf98ca97be9146f9d3b5681a6f9cf5ce3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "ae956cb1-71bf-46b5-ba98-6b37bb511c58" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "scalar32_min_max_lsh", "scalar_min_max_lsh", "scalar32_min_max_rsh", "scalar_min_max_rsh", "scalar32_min_max_arsh", "scalar_min_max_arsh", "is_safe_to_compute_dst_reg_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA2LzIzIDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9sc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyX21pbl9tYXhfYXJzaCYjMzQ7LAogICAgJiMzNDtpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHN1cHBvcnQgdHJhY2tpbmcgYm91bmRzIGZvciBzaGlmdCBvcGVyYXRpb25zIChMU0gsIFJTSCwgQVJTSCkgd2hlbiB0aGUgc2hpZnQgYW1vdW50IGlzIG5vdCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBoaWdobHkgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCBCUEYgdmVyaWZpZXIgbG9naWMsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIGluY29ycmVjdCBib3VuZHMgdHJhY2tpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOGI0ZGFhMGMyOWEyYjY5MDdlNjE0NTFkMjdlMDdlOGFmMTE1ZGM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTQ6MDE6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAyYWJjNzlkYmYyODFjMi4uYmYyNDdjMjE5Y2FiNTggMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTE0Mjc3LDcgJiM0MzsxNDI3Nyw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0c3RydWN0IHRudW0gc3VicmVnID0gdG51bV9zdWJyZWcoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmKTtcbiBcbiBcdF9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fc3VicmVnKHRudW1fbHNoaWZ0KHN1YnJlZywgdW1pbl92YWwpKTtcbiYjNDM7XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbiYjNDM7XHRcdFx0ICAgdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpIDogdG51bV91bmtub3duO1xuIFx0LyogTm90IHJlcXVpcmVkIGJ1dCBiZWluZyBjYXJlZnVsIG1hcmsgcmVnNjQgYm91bmRzIGFzIHVua25vd24gc29cbiBcdCAqIHRoYXQgd2UgYXJlIGZvcmNlZCB0byBwaWNrIHRoZW0gdXAgZnJvbSB0bnVtIGFuZCB6ZXh0IGxhdGVyIGFuZFxuIFx0ICogaWYgc29tZSBwYXRoIHNraXBzIHRoaXMgc3RlcCB3ZSBhcmUgc3RpbGwgc2FmZS5cbkBAIC0xNDMyMiw3ICYjNDM7MTQzMjMsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9sc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHRfX3NjYWxhcjY0X21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG4gXHRfX3NjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG4gXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX2xzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKTtcbiYjNDM7XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbiYjNDM7XHRcdFx0ICAgdG51bV9sc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247XG4gXHQvKiBXZSBtYXkgbGVhcm4gc29tZXRoaW5nIG1vcmUgZnJvbSB0aGUgdmFyX29mZiAqL1xuIFx0X191cGRhdGVfcmVnX2JvdW5kcyhkc3RfcmVnKTtcbiB9XG5AQCAtMTQzNDksNyAmIzQzOzE0MzUxLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9yc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHQgKiB2YXJfb2ZmIG9mIHRoZSByZXN1bHQuXG4gXHQgKi9cbiBcbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fcnNoaWZ0KHN1YnJlZywgdW1pbl92YWwpO1xuJiM0MztcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuJiM0MztcdFx0XHQgICB0bnVtX3JzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjtcbiBcdHJlZ19zZXRfdXJhbmdlMzIoZHN0X3JlZywgcmVnX3UzMl9taW4oZHN0X3JlZykgXHUwMDNlXHUwMDNlIHVtYXhfdmFsLFxuIFx0XHRcdCByZWdfdTMyX21heChkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpO1xuIFxuQEAgLTE0Mzc3LDcgJiM0MzsxNDM4MCw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBcdCAqIGFuZCByZWx5IG9uIGluZmVycmluZyBuZXcgb25lcyBmcm9tIHRoZSB1bnNpZ25lZCBib3VuZHMgYW5kXG4gXHQgKiB2YXJfb2ZmIG9mIHRoZSByZXN1bHQuXG4gXHQgKi9cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fcnNoaWZ0KGRzdF9yZWctXHUwMDNldmFyX29mZiwgdW1pbl92YWwpO1xuJiM0MztcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuJiM0MztcdFx0XHQgICB0bnVtX3JzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjtcbiBcdHJlZ19zZXRfdXJhbmdlNjQoZHN0X3JlZywgcmVnX3VtaW4oZHN0X3JlZykgXHUwMDNlXHUwMDNlIHVtYXhfdmFsLFxuIFx0XHRcdCByZWdfdW1heChkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpO1xuIFxuQEAgLTE0MzkyLDE4ICYjNDM7MTQzOTYsNDEgQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBcdFx0XHRcdCAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXG4ge1xuLVx0dTY0IHVtaW5fdmFsID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7XG4mIzQzO1x0dTMyIHVtaW5fc2hpZnQgPSByZWdfdTMyX21pbihzcmNfcmVnKTtcbiYjNDM7XHR1MzIgdW1heF9zaGlmdCA9IHJlZ191MzJfbWF4KHNyY19yZWcpO1xuJiM0MztcdHMzMiBzbWluID0gcmVnX3MzMl9taW4oZHN0X3JlZyk7XG4mIzQzO1x0czMyIHNtYXggPSByZWdfczMyX21heChkc3RfcmVnKTtcbiBcbi1cdC8qIFVwb24gcmVhY2hpbmcgaGVyZSwgc3JjX2tub3duIGlzIHRydWUgYW5kXG4tXHQgKiB1bWF4X3ZhbCBpcyBlcXVhbCB0byB1bWluX3ZhbC5cbi1cdCAqIEJsb3cgYXdheSB0aGUgZHN0X3JlZyB1bWluX3ZhbHVlL3VtYXhfdmFsdWUgYW5kIHJlbHkgb25cbi1cdCAqIGRzdF9yZWcgdmFyX29mZiB0byByZWZpbmUgdGhlIHJlc3VsdC5cbiYjNDM7XHQvKlxuJiM0MztcdCAqIEJQRl9BUlNIIG9uIDMyLWJpdCBzdWJyZWdpc3Rlci4gQVJTSCBpcyBhIHNpZ25lZCBkaXZpZGUgYnlcbiYjNDM7XHQgKiAyXmsgKHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMpLiBXaXRoIGEgbm9uLWNvbnN0YW50XG4mIzQzO1x0ICogc2hpZnQgaW4gW3VtaW4sIHVtYXhdLCB0aGUgcmVzdWx0IGlzIGJvdW5kZWQgYnkgZGl2aWRpbmcgdGhlXG4mIzQzO1x0ICogZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcyBvZiB0aGUgZGl2aXNvcjpcbiYjNDM7XHQgKlxuJiM0MztcdCAqICAgc21pbiBcdTAwM2U9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl1cbiYjNDM7XHQgKiAgIHNtYXggXHUwMDNjICAwOiAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtYXhdXG4mIzQzO1x0ICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl1cbiYjNDM7XHQgKlxuJiM0MztcdCAqIHZhcl9vZmYgaXMgdG51bV91bmtub3duIHNpbmNlIGEgbm9uLWNvbnN0YW50IHNoaWZ0IHByZXZlbnRzXG4mIzQzO1x0ICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuXG4gXHQgKi9cbi1cdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZyxcbi1cdFx0XHQgKHUzMikoKChzMzIpcmVnX3MzMl9taW4oZHN0X3JlZykpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCksXG4tXHRcdFx0ICh1MzIpKCgoczMyKXJlZ19zMzJfbWF4KGRzdF9yZWcpKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpKTtcbi1cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdCh0bnVtX3N1YnJlZyhkc3RfcmVnLVx1MDAzZXZhcl9vZmYpLCB1bWluX3ZhbCwgMzIpO1xuJiM0MztcdGlmICh1bWluX3NoaWZ0ID09IHVtYXhfc2hpZnQpIHtcbiYjNDM7XHRcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcdTAwM2VcdTAwM2UgdW1pbl9zaGlmdCksXG4mIzQzO1x0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpKTtcbiYjNDM7XHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdCh0bnVtX3N1YnJlZyhkc3RfcmVnLVx1MDAzZXZhcl9vZmYpLFxuJiM0MztcdFx0XHRcdFx0XHR1bWluX3NoaWZ0LCAzMik7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChzbWluIFx1MDAzZT0gMClcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFx1MDAzZVx1MDAzZSB1bWF4X3NoaWZ0KSxcbiYjNDM7XHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4mIzQzO1x0XHRlbHNlIGlmIChzbWF4IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpLFxuJiM0MztcdFx0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQpKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSxcbiYjNDM7XHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4mIzQzO1x0XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3Vua25vd247XG4mIzQzO1x0fVxuIFxuIFx0X19tYXJrX3JlZzY0X3VuYm91bmRlZChkc3RfcmVnKTtcbiBcdF9fdXBkYXRlX3JlZzMyX2JvdW5kcyhkc3RfcmVnKTtcbkBAIC0xNDQxMiwxNSAmIzQzOzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9hcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0XHRcdFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXG4ge1xuLVx0dTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7XG4mIzQzO1x0dTY0IHVtaW5fc2hpZnQgPSByZWdfdW1pbihzcmNfcmVnKTtcbiYjNDM7XHR1NjQgdW1heF9zaGlmdCA9IHJlZ191bWF4KHNyY19yZWcpO1xuJiM0MztcdHM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7XG4mIzQzO1x0czY0IHNtYXggPSByZWdfc21heChkc3RfcmVnKTtcbiBcbi1cdC8qIFVwb24gcmVhY2hpbmcgaGVyZSwgc3JjX2tub3duIGlzIHRydWUgYW5kIHVtYXhfdmFsIGlzIGVxdWFsXG4tXHQgKiB0byB1bWluX3ZhbC5cbiYjNDM7XHQvKlxuJiM0MztcdCAqIEJQRl9BUlNIIChhcml0aG1ldGljIHJpZ2h0IHNoaWZ0KSBvbiA2NC1iaXQgcmVnaXN0ZXIuIFNpZ25lZFxuJiM0MztcdCAqIGRpdmlkZSBieSAyXmssIHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMuIFdpdGggYVxuJiM0MztcdCAqIG5vbi1jb25zdGFudCBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZFxuJiM0MztcdCAqIGJ5IGRpdmlkaW5nIHRoZSBleHRyZW1lcyBvZiBbc21pbiwgc21heF0gYnkgdGhlIGV4dHJlbWVzXG4mIzQzO1x0ICogb2YgdGhlIGRpdmlzb3I6XG4mIzQzO1x0ICpcbiYjNDM7XHQgKiAgIHNtaW4gXHUwMDNlPSAwOiAgW3NtaW4gLyAyXnVtYXgsIHNtYXggLyAyXnVtaW5dXG4mIzQzO1x0ICogICBzbWF4IFx1MDAzYyAgMDogIFtzbWluIC8gMl51bWluLCBzbWF4IC8gMl51bWF4XVxuJiM0MztcdCAqICAgbWl4ZWQ6ICAgICAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtaW5dXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiB2YXJfb2ZmIGlzIHRudW1fdW5rbm93biBzaW5jZSBhIG5vbi1jb25zdGFudCBzaGlmdCBwcmV2ZW50c1xuJiM0MztcdCAqIHByZWNpc2UgYml0IHRyYWNraW5nLlxuIFx0ICovXG4tXHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHJlZ19zbWluKGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCxcbi1cdFx0XHQgcmVnX3NtYXgoZHN0X3JlZykgXHUwMDNlXHUwMDNlIHVtaW5fdmFsKTtcbi1cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsLCA2NCk7XG4mIzQzO1x0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xuJiM0MztcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbiYjNDM7XHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fc2hpZnQsIDY0KTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKHNtaW4gXHUwMDNlPSAwKVxuJiM0MztcdFx0XHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQsIHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpO1xuJiM0MztcdFx0ZWxzZSBpZiAoc21heCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWF4X3NoaWZ0KTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbiYjNDM7XHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fdW5rbm93bjtcbiYjNDM7XHR9XG4gXG4gXHQvKiBJdHMgbm90IGVhc3kgdG8gb3BlcmF0ZSBvbiBhbHUzMiBib3VuZHMgaGVyZSBiZWNhdXNlIGl0IGRlcGVuZHNcbiBcdCAqIG9uIGJpdHMgYmVpbmcgc2hpZnRlZCBpbiBmcm9tIHVwcGVyIDMyLWJpdHMuIFRha2UgZWFzeSB3YXkgb3V0XG5AQCAtMTQ1MTYsMTQgJiM0MzsxNDU2NSwxNCBAQCBzdGF0aWMgYm9vbCBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRjYXNlIEJQRl9NT0Q6XG4gXHRcdHJldHVybiBzcmNfaXNfY29uc3Q7XG4gXG4tXHQvKiBTaGlmdCBvcGVyYXRvcnMgcmFuZ2UgaXMgb25seSBjb21wdXRhYmxlIGlmIHNoaWZ0IGRpbWVuc2lvbiBvcGVyYW5kXG4tXHQgKiBpcyBhIGNvbnN0YW50LiBTaGlmdHMgZ3JlYXRlciB0aGFuIDMxIG9yIDYzIGFyZSB1bmRlZmluZWQuIFRoaXNcbi1cdCAqIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci5cbiYjNDM7XHQvKlxuJiM0MztcdCAqIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3VyLlxuJiM0MztcdCAqIFRoaXMgaW5jbHVkZXMgc2hpZnRzIGJ5IGEgbmVnYXRpdmUgbnVtYmVyLlxuIFx0ICovXG4gXHRjYXNlIEJQRl9MU0g6XG4gXHRjYXNlIEJQRl9SU0g6XG4gXHRjYXNlIEJQRl9BUlNIOlxuLVx0XHRyZXR1cm4gKHNyY19pc19jb25zdCBcdTAwMjZcdTAwMjYgcmVnX3VtYXgoc3JjX3JlZykgXHUwMDNjIGluc25fYml0bmVzcyk7XG4mIzQzO1x0XHRyZXR1cm4gcmVnX3VtYXgoc3JjX3JlZykgXHUwMDNjIGluc25fYml0bmVzcztcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcbmluZGV4IGJjMDM4YWMyZGY5OGUyLi41MmFlM2RjNTkzNjAwZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JvdW5kcy5jXG5AQCAtNDgyLDYgJiM0Mzs0ODIsMTczIEBAIGwwXyU9Olx0LyogZXhpdCAqL1x0XHRcdFx0XHRcXFxuIFx0OiBfX2Nsb2JiZXJfYWxsKTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKG5hbWUsIGRlc2MsIHJhbmQsIGRzdCwgc3JjLCBvcCwgc3JjX2FkZCwgZHN0X2luaXQsIG1zZykgXFxcbiYjNDM7XHRTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVx0XHRcdFx0XHRcXFxuJiM0MztcdF9fZGVzY3JpcHRpb24oZGVzYylcdFx0XHRcdFxcXG4mIzQzO1x0X19zdWNjZXNzIF9fbG9nX2xldmVsKDIpXHRcdFx0XFxcbiYjNDM7XHRfX21zZygjZHN0IFwmIzM0OyBcJiMzNDsgb3AgXCYjMzQ7IFwmIzM0OyAjc3JjIFwmIzM0OyB7ey4qfX07IFwmIzM0OyBtc2cpXHRcXFxuJiM0MztcdF9fbmFrZWQgdm9pZCBuYW1lKHZvaWQpXHRcdFx0XHRcXFxuJiM0MztcdHtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0YXNtIHZvbGF0aWxlIChcJiMzNDtcdFx0XHRcdFxcXG4mIzQzO1x0XHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDsgI3NyYyBcJiMzNDsgPSBcJiMzNDsgI3JhbmQgXCYjMzQ7O1x0XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDsgI3NyYyBcJiMzNDsgXHUwMDI2PSAzO1x0XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjc3JjIFwmIzM0OyAmIzQzOz0gXCYjMzQ7ICNzcmNfYWRkIFwmIzM0OztcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjZHN0IFwmIzM0OyA9IFwmIzM0OyAjZHN0X2luaXQgXCYjMzQ7O1x0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNkc3QgXCYjMzQ7IFwmIzM0OyBvcCBcJiMzNDsgXCYjMzQ7ICNzcmMgXCYjMzQ7O1x0XHRcXFxuJiM0MztcdFx0ZXhpdDtcdFx0XHRcdFx0XFxcbiYjNDM7XCYjMzQ7XHRcdDo6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpXHRcdFxcXG4mIzQzO1x0XHQ6IF9fY2xvYmJlcl9hbGwpO1x0XHRcdFxcXG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzIsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgbGVmdCBzaGlmdFwmIzM0OyxcbiYjNDM7XHR3MCwgdzEsIHcyLCBcJiMzNDtcdTAwM2NcdTAwM2M9XCYjMzQ7LCAxLCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfbHNoXzMyX292ZXJmbG93LFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyY1wmIzM0OyxcbiYjNDM7XHR3MCwgdzEsIHcyLCBcJiMzNDtcdTAwM2NcdTAwM2M9XCYjMzQ7LCAzMiwgMSxcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfMzIsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgcmlnaHQgc2hpZnRcJiMzNDssXG4mIzQzO1x0dzAsIHcxLCB3MiwgXCYjMzQ7XHUwMDNlXHUwMDNlPVwmIzM0OywgMSwgMHhmZixcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MTUsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTI3LHZhcl9vZmY9KDB4MDsgMHg3ZikpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyX292ZXJmbG93LFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyY1wmIzM0OyxcbiYjNDM7XHR3MCwgdzEsIHcyLCBcJiMzNDtcdTAwM2VcdTAwM2U9XCYjMzQ7LCAzMiwgMSxcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyaXRobWV0aWMgc2hpZnRcJiMzNDssXG4mIzQzO1x0dzAsIHcxLCB3MiwgXCYjMzQ7c1x1MDAzZVx1MDAzZT1cJiMzNDssIDEsIC04LFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX292ZXJmbG93LFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBvdmVyZmxvdyBzcmNcJiMzNDssXG4mIzQzO1x0dzAsIHcxLCB3MiwgXCYjMzQ7c1x1MDAzZVx1MDAzZT1cJiMzNDssIDMyLCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0zMixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0zNSx2YXJfb2ZmPSgweDIwOyAweDMpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NCxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBsZWZ0IHNoaWZ0XCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O1x1MDAzY1x1MDAzYz1cJiMzNDssIDEsIDEsXG4mIzQzO1x0XCYjMzQ7UjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTYsdmFyX29mZj0oMHgwOyAweDFmKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfNjRfb3ZlcmZsb3csXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbHNoIHdpdGggb3ZlcmZsb3cgc3JjXCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O1x1MDAzY1x1MDAzYz1cJiMzNDssIDY0LCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF82NCxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCByaWdodCBzaGlmdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjEsIHIyLCBcJiMzNDtcdTAwM2VcdTAwM2U9XCYjMzQ7LCAxLCAweGZmLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjRfb3ZlcmZsb3csXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgcnNoIHdpdGggb3ZlcmZsb3cgc3JjXCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O1x1MDAzZVx1MDAzZT1cJiMzNDssIDY0LCAxLFxuJiM0MztcdFwmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjQsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJpdGhtZXRpYyBzaGlmdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjEsIHIyLCBcJiMzNDtzXHUwMDNlXHUwMDNlPVwmIzM0OywgMSwgLTgsXG4mIzQzO1x0XCYjMzQ7UjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9vdmVyZmxvdyxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggb3ZlcmZsb3cgc3JjXCYjMzQ7LFxuJiM0MztcdHIwLCByMSwgcjIsIFwmIzM0O3NcdTAwM2VcdTAwM2U9XCYjMzQ7LCA2NCwgMSxcbiYjNDM7XHRcJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7I2RlZmluZSBTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKG5hbWUsIGRlc2MsIHJhbmQsIGRzdCwgc3JjLCBkc3RfbWFzaywgZHN0X2RlbHRhLCBtc2cpIFxcXG4mIzQzO1x0U0VDKFwmIzM0O3NvY2tldFwmIzM0OylcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX2Rlc2NyaXB0aW9uKGRlc2MpXHRcdFx0XHRcXFxuJiM0MztcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVx0XHRcdFxcXG4mIzQzO1x0X19tc2coI2RzdCBcJiMzNDsgc1x1MDAzZVx1MDAzZT0gXCYjMzQ7ICNzcmMgXCYjMzQ7IHt7Lip9fTsge3suKn19IFwmIzM0OyBtc2cpXFxcbiYjNDM7XHRfX25ha2VkIHZvaWQgbmFtZSh2b2lkKVx0XHRcdFx0XFxcbiYjNDM7XHR7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGFzbSB2b2xhdGlsZSAoXCYjMzQ7XHRcdFx0XHRcXFxuJiM0MztcdFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNkc3QgXCYjMzQ7ID0gXCYjMzQ7ICNyYW5kIFwmIzM0OztcdFx0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNkc3QgXCYjMzQ7IFx1MDAyNj0gXCYjMzQ7ICNkc3RfbWFzayBcJiMzNDs7XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDsgI2RzdCBcJiMzNDsgJiM0Mzs9IFwmIzM0OyAjZHN0X2RlbHRhIFwmIzM0OztcdFx0XFxcbiYjNDM7XHRcdGNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTtcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjc3JjIFwmIzM0OyA9IFwmIzM0OyAjcmFuZCBcJiMzNDs7XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjc3JjIFwmIzM0OyBcdTAwMjY9IDE7XHRcdFx0XHRcXFxuJiM0MztcdFx0XCYjMzQ7ICNzcmMgXCYjMzQ7ICYjNDM7PSAxO1x0XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0OyAjZHN0IFwmIzM0OyBzXHUwMDNlXHUwMDNlPSBcJiMzNDsgI3NyYyBcJiMzNDs7XHRcdFx0XFxcbiYjNDM7XHRcdGV4aXQ7XHRcdFx0XHRcdFxcXG4mIzQzO1wmIzM0O1x0XHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVx0XHRcXFxuJiM0MztcdFx0OiBfX2Nsb2JiZXJfYWxsKTtcdFx0XHRcXFxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfcG9zLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBwb3NpdGl2ZSBkc3RcJiMzNDssXG4mIzQzO1x0dzAsIHc2LCB3MiwgNywgMSxcbiYjNDM7XHRcJiMzNDtSNj1zY2FsYXIoc21pbj1zbWluMzI9MCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9taXhlZCxcbiYjNDM7XHRcJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbWl4ZWQtc2lnbiBkc3RcJiMzNDssXG4mIzQzO1x0dzAsIHc2LCB3MiwgMTUsIC04LFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPTAsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0zLHZhcl9vZmY9KDB4MDsgMHhmZmZmZmZmZikpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfbmVnLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBuZWdhdGl2ZSBkc3RcJiMzNDssXG4mIzQzO1x0dzAsIHc2LCB3MiwgOCwgLTE2LFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZjgsc21heD11bWF4PXVtYXgzMj0weGZmZmZmZmZlLHNtaW4zMj0tOCxzbWF4MzI9LTIsdmFyX29mZj0oMHhmZmZmZmZmODsgMHg3KSlcJiMzNDtcbiYjNDM7KVxuJiM0MztcbiYjNDM7U0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbiYjNDM7XHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9wb3MsXG4mIzQzO1x0XCYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjYsIHIyLCA3LCAxLFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPXNtaW4zMj0wLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTQsdmFyX29mZj0oMHgwOyAweDcpKVwmIzM0O1xuJiM0MzspXG4mIzQzO1xuJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuJiM0MztcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X21peGVkLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdFwmIzM0OyxcbiYjNDM7XHRyMCwgcjYsIHIyLCAxNSwgLTgsXG4mIzQzO1x0XCYjMzQ7UjY9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPTMpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4mIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXG4mIzQzO1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbmVnLFxuJiM0MztcdFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBuZWdhdGl2ZSBkc3RcJiMzNDssXG4mIzQzO1x0cjAsIHI2LCByMiwgOCwgLTE2LFxuJiM0MztcdFwmIzM0O1I2PXNjYWxhcihzbWluPXNtaW4zMj0tOCxzbWF4PXNtYXgzMj0tMix1bWluPTB4ZmZmZmZmZmZmZmZmZmZmOCx1bWF4PTB4ZmZmZmZmZmZmZmZmZmZmZSx1bWluMzI9MHhmZmZmZmZmOCx1bWF4MzI9MHhmZmZmZmZmZSx2YXJfb2ZmPSgweGZmZmZmZmZmZmZmZmZmZjg7IDB4NykpXCYjMzQ7XG4mIzQzOylcbiYjNDM7XG4gU0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiBfX2Rlc2NyaXB0aW9uKFwmIzM0O2JvdW5kcyBjaGVjayBhZnRlciAzMi1iaXQgcmlnaHQgc2hpZnQgd2l0aCA2NC1iaXQgaW5wdXRcJiMzNDspXG4gX19mYWlsdXJlIF9fbXNnKFwmIzM0O21hdGggYmV0d2VlbiBtYXBfdmFsdWUgcG9pbnRlciBhbmQgNDI5NDk2NzI5NCBpcyBub3QgYWxsb3dlZFwmIzM0OylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2xzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXJfbWluX21heF9yc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9hcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOGI0ZGFhMGMyOWEyYjY5MDdlNjE0NTFkMjdlMDdlOGFmMTE1ZGM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMTQ6MDE6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMmFiYzc5ZGJmMjgxYzIuLmJmMjQ3YzIxOWNhYjU4IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0xNDI3Nyw3ICYjNDM7MTQyNzcsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIAlzdHJ1Y3QgdG51bSBzdWJyZWcgPSB0bnVtX3N1YnJlZyhkc3RfcmVnLSZndDt2YXJfb2ZmKTsKIAogCV9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTsKLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpOwomIzQzOwlkc3RfcmVnLSZndDt2YXJfb2ZmID0gKHVtaW5fdmFsID09IHVtYXhfdmFsKSA/CiYjNDM7CQkJICAgdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpIDogdG51bV91bmtub3duOwogCS8qIE5vdCByZXF1aXJlZCBidXQgYmVpbmcgY2FyZWZ1bCBtYXJrIHJlZzY0IGJvdW5kcyBhcyB1bmtub3duIHNvCiAJICogdGhhdCB3ZSBhcmUgZm9yY2VkIHRvIHBpY2sgdGhlbSB1cCBmcm9tIHRudW0gYW5kIHpleHQgbGF0ZXIgYW5kCiAJICogaWYgc29tZSBwYXRoIHNraXBzIHRoaXMgc3RlcCB3ZSBhcmUgc3RpbGwgc2FmZS4KQEAgLTE0MzIyLDcgJiM0MzsxNDMyMyw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIAlfX3NjYWxhcjY0X21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7CiAJX19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpOwogCi0JZHN0X3JlZy0mZ3Q7dmFyX29mZiA9IHRudW1fbHNoaWZ0KGRzdF9yZWctJmd0O3Zhcl9vZmYsIHVtaW5fdmFsKTsKJiM0MzsJZHN0X3JlZy0mZ3Q7dmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgPwomIzQzOwkJCSAgIHRudW1fbHNoaWZ0KGRzdF9yZWctJmd0O3Zhcl9vZmYsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjsKIAkvKiBXZSBtYXkgbGVhcm4gc29tZXRoaW5nIG1vcmUgZnJvbSB0aGUgdmFyX29mZiAqLwogCV9fdXBkYXRlX3JlZ19ib3VuZHMoZHN0X3JlZyk7CiB9CkBAIC0xNDM0OSw3ICYjNDM7MTQzNTEsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIAkgKiB2YXJfb2ZmIG9mIHRoZSByZXN1bHQuCiAJICovCiAKLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9yc2hpZnQoc3VicmVnLCB1bWluX3ZhbCk7CiYjNDM7CWRzdF9yZWctJmd0O3Zhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID8KJiM0MzsJCQkgICB0bnVtX3JzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjsKIAlyZWdfc2V0X3VyYW5nZTMyKGRzdF9yZWcsIHJlZ191MzJfbWluKGRzdF9yZWcpICZndDsmZ3Q7IHVtYXhfdmFsLAogCQkJIHJlZ191MzJfbWF4KGRzdF9yZWcpICZndDsmZ3Q7IHVtaW5fdmFsKTsKIApAQCAtMTQzNzcsNyAmIzQzOzE0MzgwLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLAogCSAqIGFuZCByZWx5IG9uIGluZmVycmluZyBuZXcgb25lcyBmcm9tIHRoZSB1bnNpZ25lZCBib3VuZHMgYW5kCiAJICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LgogCSAqLwotCWRzdF9yZWctJmd0O3Zhcl9vZmYgPSB0bnVtX3JzaGlmdChkc3RfcmVnLSZndDt2YXJfb2ZmLCB1bWluX3ZhbCk7CiYjNDM7CWRzdF9yZWctJmd0O3Zhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID8KJiM0MzsJCQkgICB0bnVtX3JzaGlmdChkc3RfcmVnLSZndDt2YXJfb2ZmLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247CiAJcmVnX3NldF91cmFuZ2U2NChkc3RfcmVnLCByZWdfdW1pbihkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWF4X3ZhbCwKIAkJCSByZWdfdW1heChkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWluX3ZhbCk7CiAKQEAgLTE0MzkyLDE4ICYjNDM7MTQzOTYsNDEgQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLAogc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9hcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLAogCQkJCSAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpCiB7Ci0JdTY0IHVtaW5fdmFsID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7CiYjNDM7CXUzMiB1bWluX3NoaWZ0ID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7CiYjNDM7CXUzMiB1bWF4X3NoaWZ0ID0gcmVnX3UzMl9tYXgoc3JjX3JlZyk7CiYjNDM7CXMzMiBzbWluID0gcmVnX3MzMl9taW4oZHN0X3JlZyk7CiYjNDM7CXMzMiBzbWF4ID0gcmVnX3MzMl9tYXgoZHN0X3JlZyk7CiAKLQkvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZAotCSAqIHVtYXhfdmFsIGlzIGVxdWFsIHRvIHVtaW5fdmFsLgotCSAqIEJsb3cgYXdheSB0aGUgZHN0X3JlZyB1bWluX3ZhbHVlL3VtYXhfdmFsdWUgYW5kIHJlbHkgb24KLQkgKiBkc3RfcmVnIHZhcl9vZmYgdG8gcmVmaW5lIHRoZSByZXN1bHQuCiYjNDM7CS8qCiYjNDM7CSAqIEJQRl9BUlNIIG9uIDMyLWJpdCBzdWJyZWdpc3Rlci4gQVJTSCBpcyBhIHNpZ25lZCBkaXZpZGUgYnkKJiM0MzsJICogMl5rIChyb3VuZGluZyB0b3dhcmQgLWluZiBmb3IgbmVnYXRpdmVzKS4gV2l0aCBhIG5vbi1jb25zdGFudAomIzQzOwkgKiBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSBkaXZpZGluZyB0aGUKJiM0MzsJICogZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcyBvZiB0aGUgZGl2aXNvcjoKJiM0MzsJICoKJiM0MzsJICogICBzbWluICZndDs9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl0KJiM0MzsJICogICBzbWF4ICZsdDsgIDA6ICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1heF0KJiM0MzsJICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl0KJiM0MzsJICoKJiM0MzsJICogdmFyX29mZiBpcyB0bnVtX3Vua25vd24gc2luY2UgYSBub24tY29uc3RhbnQgc2hpZnQgcHJldmVudHMKJiM0MzsJICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuCiAJICovCi0JcmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLAotCQkJICh1MzIpKCgoczMyKXJlZ19zMzJfbWluKGRzdF9yZWcpKSAmZ3Q7Jmd0OyB1bWluX3ZhbCksCi0JCQkgKHUzMikoKChzMzIpcmVnX3MzMl9tYXgoZHN0X3JlZykpICZndDsmZ3Q7IHVtaW5fdmFsKSk7Ci0KLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctJmd0O3Zhcl9vZmYpLCB1bWluX3ZhbCwgMzIpOwomIzQzOwlpZiAodW1pbl9zaGlmdCA9PSB1bWF4X3NoaWZ0KSB7CiYjNDM7CQlyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gJmd0OyZndDsgdW1pbl9zaGlmdCksCiYjNDM7CQkJCSAodTMyKShzbWF4ICZndDsmZ3Q7IHVtaW5fc2hpZnQpKTsKJiM0MzsJCWRzdF9yZWctJmd0O3Zhcl9vZmYgPSB0bnVtX2Fyc2hpZnQodG51bV9zdWJyZWcoZHN0X3JlZy0mZ3Q7dmFyX29mZiksCiYjNDM7CQkJCQkJdW1pbl9zaGlmdCwgMzIpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKHNtaW4gJmd0Oz0gMCkKJiM0MzsJCQlyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gJmd0OyZndDsgdW1heF9zaGlmdCksCiYjNDM7CQkJCQkgKHUzMikoc21heCAmZ3Q7Jmd0OyB1bWluX3NoaWZ0KSk7CiYjNDM7CQllbHNlIGlmIChzbWF4ICZsdDsgMCkKJiM0MzsJCQlyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gJmd0OyZndDsgdW1pbl9zaGlmdCksCiYjNDM7CQkJCQkgKHUzMikoc21heCAmZ3Q7Jmd0OyB1bWF4X3NoaWZ0KSk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluICZndDsmZ3Q7IHVtaW5fc2hpZnQpLAomIzQzOwkJCQkJICh1MzIpKHNtYXggJmd0OyZndDsgdW1pbl9zaGlmdCkpOwomIzQzOwkJZHN0X3JlZy0mZ3Q7dmFyX29mZiA9IHRudW1fdW5rbm93bjsKJiM0MzsJfQogCiAJX19tYXJrX3JlZzY0X3VuYm91bmRlZChkc3RfcmVnKTsKIAlfX3VwZGF0ZV9yZWczMl9ib3VuZHMoZHN0X3JlZyk7CkBAIC0xNDQxMiwxNSAmIzQzOzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywKIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X2Fyc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsCiAJCQkJc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpCiB7Ci0JdTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7CiYjNDM7CXU2NCB1bWluX3NoaWZ0ID0gcmVnX3VtaW4oc3JjX3JlZyk7CiYjNDM7CXU2NCB1bWF4X3NoaWZ0ID0gcmVnX3VtYXgoc3JjX3JlZyk7CiYjNDM7CXM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7CiYjNDM7CXM2NCBzbWF4ID0gcmVnX3NtYXgoZHN0X3JlZyk7CiAKLQkvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZCB1bWF4X3ZhbCBpcyBlcXVhbAotCSAqIHRvIHVtaW5fdmFsLgomIzQzOwkvKgomIzQzOwkgKiBCUEZfQVJTSCAoYXJpdGhtZXRpYyByaWdodCBzaGlmdCkgb24gNjQtYml0IHJlZ2lzdGVyLiBTaWduZWQKJiM0MzsJICogZGl2aWRlIGJ5IDJeaywgcm91bmRpbmcgdG93YXJkIC1pbmYgZm9yIG5lZ2F0aXZlcy4gV2l0aCBhCiYjNDM7CSAqIG5vbi1jb25zdGFudCBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZAomIzQzOwkgKiBieSBkaXZpZGluZyB0aGUgZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcwomIzQzOwkgKiBvZiB0aGUgZGl2aXNvcjoKJiM0MzsJICoKJiM0MzsJICogICBzbWluICZndDs9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl0KJiM0MzsJICogICBzbWF4ICZsdDsgIDA6ICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1heF0KJiM0MzsJICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl0KJiM0MzsJICoKJiM0MzsJICogdmFyX29mZiBpcyB0bnVtX3Vua25vd24gc2luY2UgYSBub24tY29uc3RhbnQgc2hpZnQgcHJldmVudHMKJiM0MzsJICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuCiAJICovCi0JcmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCByZWdfc21pbihkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWluX3ZhbCwKLQkJCSByZWdfc21heChkc3RfcmVnKSAmZ3Q7Jmd0OyB1bWluX3ZhbCk7Ci0KLQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KGRzdF9yZWctJmd0O3Zhcl9vZmYsIHVtaW5fdmFsLCA2NCk7CiYjNDM7CWlmICh1bWluX3NoaWZ0ID09IHVtYXhfc2hpZnQpIHsKJiM0MzsJCXJlZ19zZXRfc3JhbmdlNjQoZHN0X3JlZywgc21pbiAmZ3Q7Jmd0OyB1bWluX3NoaWZ0LCBzbWF4ICZndDsmZ3Q7IHVtaW5fc2hpZnQpOwomIzQzOwkJZHN0X3JlZy0mZ3Q7dmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLSZndDt2YXJfb2ZmLCB1bWluX3NoaWZ0LCA2NCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAoc21pbiAmZ3Q7PSAwKQomIzQzOwkJCXJlZ19zZXRfc3JhbmdlNjQoZHN0X3JlZywgc21pbiAmZ3Q7Jmd0OyB1bWF4X3NoaWZ0LCBzbWF4ICZndDsmZ3Q7IHVtaW5fc2hpZnQpOwomIzQzOwkJZWxzZSBpZiAoc21heCAmbHQ7IDApCiYjNDM7CQkJcmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluICZndDsmZ3Q7IHVtaW5fc2hpZnQsIHNtYXggJmd0OyZndDsgdW1heF9zaGlmdCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluICZndDsmZ3Q7IHVtaW5fc2hpZnQsIHNtYXggJmd0OyZndDsgdW1pbl9zaGlmdCk7CiYjNDM7CQlkc3RfcmVnLSZndDt2YXJfb2ZmID0gdG51bV91bmtub3duOwomIzQzOwl9CiAKIAkvKiBJdHMgbm90IGVhc3kgdG8gb3BlcmF0ZSBvbiBhbHUzMiBib3VuZHMgaGVyZSBiZWNhdXNlIGl0IGRlcGVuZHMKIAkgKiBvbiBiaXRzIGJlaW5nIHNoaWZ0ZWQgaW4gZnJvbSB1cHBlciAzMi1iaXRzLiBUYWtlIGVhc3kgd2F5IG91dApAQCAtMTQ1MTYsMTQgJiM0MzsxNDU2NSwxNCBAQCBzdGF0aWMgYm9vbCBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShzdHJ1Y3QgYnBmX2luc24gKmluc24sCiAJY2FzZSBCUEZfTU9EOgogCQlyZXR1cm4gc3JjX2lzX2NvbnN0OwogCi0JLyogU2hpZnQgb3BlcmF0b3JzIHJhbmdlIGlzIG9ubHkgY29tcHV0YWJsZSBpZiBzaGlmdCBkaW1lbnNpb24gb3BlcmFuZAotCSAqIGlzIGEgY29uc3RhbnQuIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIHVuZGVmaW5lZC4gVGhpcwotCSAqIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci4KJiM0MzsJLyoKJiM0MzsJICogU2hpZnRzIGdyZWF0ZXIgdGhhbiAzMSBvciA2MyBhcmUgaW1wbGVtZW50YXRpb24tZGVmaW5lZCBiZWhhdmlvdXIuCiYjNDM7CSAqIFRoaXMgaW5jbHVkZXMgc2hpZnRzIGJ5IGEgbmVnYXRpdmUgbnVtYmVyLgogCSAqLwogCWNhc2UgQlBGX0xTSDoKIAljYXNlIEJQRl9SU0g6CiAJY2FzZSBCUEZfQVJTSDoKLQkJcmV0dXJuIChzcmNfaXNfY29uc3QgJmFtcDsmYW1wOyByZWdfdW1heChzcmNfcmVnKSAmbHQ7IGluc25fYml0bmVzcyk7CiYjNDM7CQlyZXR1cm4gcmVnX3VtYXgoc3JjX3JlZykgJmx0OyBpbnNuX2JpdG5lc3M7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIGZhbHNlOwogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYwppbmRleCBiYzAzOGFjMmRmOThlMi4uNTJhZTNkYzU5MzYwMGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmMKQEAgLTQ4Miw2ICYjNDM7NDgyLDE3MyBAQCBsMF8lPToJLyogZXhpdCAqLwkJCQkJXAogCTogX19jbG9iYmVyX2FsbCk7CiB9CiAKJiM0MzsjZGVmaW5lIFNISUZUX05PTl9DT05TVF9TUkNfVEVTVChuYW1lLCBkZXNjLCByYW5kLCBkc3QsIHNyYywgb3AsIHNyY19hZGQsIGRzdF9pbml0LCBtc2cpIFwKJiM0MzsJU0VDKCYjMzQ7c29ja2V0JiMzNDspCQkJCQlcCiYjNDM7CV9fZGVzY3JpcHRpb24oZGVzYykJCQkJXAomIzQzOwlfX3N1Y2Nlc3MgX19sb2dfbGV2ZWwoMikJCQlcCiYjNDM7CV9fbXNnKCNkc3QgJiMzNDsgJiMzNDsgb3AgJiMzNDsgJiMzNDsgI3NyYyAmIzM0OyB7ey4qfX07ICYjMzQ7IG1zZykJXAomIzQzOwlfX25ha2VkIHZvaWQgbmFtZSh2b2lkKQkJCQlcCiYjNDM7CXsJCQkJCQlcCiYjNDM7CQlhc20gdm9sYXRpbGUgKCYjMzQ7CQkJCVwKJiM0MzsJCWNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTsJCVwKJiM0MzsJCSYjMzQ7ICNzcmMgJiMzNDsgPSAmIzM0OyAjcmFuZCAmIzM0OzsJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICZhbXA7PSAzOwkJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICYjNDM7PSAmIzM0OyAjc3JjX2FkZCAmIzM0OzsJCVwKJiM0MzsJCSYjMzQ7ICNkc3QgJiMzNDsgPSAmIzM0OyAjZHN0X2luaXQgJiMzNDs7CQlcCiYjNDM7CQkmIzM0OyAjZHN0ICYjMzQ7ICYjMzQ7IG9wICYjMzQ7ICYjMzQ7ICNzcmMgJiMzNDs7CQlcCiYjNDM7CQlleGl0OwkJCQkJXAomIzQzOyYjMzQ7CQk6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKQkJXAomIzQzOwkJOiBfX2Nsb2JiZXJfYWxsKTsJCQlcCiYjNDM7CX0KJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzIsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgbGVmdCBzaGlmdCYjMzQ7LAomIzQzOwl3MCwgdzEsIHcyLCAmIzM0OyZsdDsmbHQ7PSYjMzQ7LCAxLCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfbHNoXzMyX292ZXJmbG93LAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyYyYjMzQ7LAomIzQzOwl3MCwgdzEsIHcyLCAmIzM0OyZsdDsmbHQ7PSYjMzQ7LCAzMiwgMSwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfMzIsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgcmlnaHQgc2hpZnQmIzM0OywKJiM0MzsJdzAsIHcxLCB3MiwgJiMzNDsmZ3Q7Jmd0Oz0mIzM0OywgMSwgMHhmZiwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MTUsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTI3LHZhcl9vZmY9KDB4MDsgMHg3ZikpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyX292ZXJmbG93LAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyYyYjMzQ7LAomIzQzOwl3MCwgdzEsIHcyLCAmIzM0OyZndDsmZ3Q7PSYjMzQ7LCAzMiwgMSwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyLAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyaXRobWV0aWMgc2hpZnQmIzM0OywKJiM0MzsJdzAsIHcxLCB3MiwgJiMzNDtzJmd0OyZndDs9JiMzNDssIDEsIC04LAomIzQzOwkmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX292ZXJmbG93LAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBvdmVyZmxvdyBzcmMmIzM0OywKJiM0MzsJdzAsIHcxLCB3MiwgJiMzNDtzJmd0OyZndDs9JiMzNDssIDMyLCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0zMixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0zNSx2YXJfb2ZmPSgweDIwOyAweDMpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NCwKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBsZWZ0IHNoaWZ0JiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7Jmx0OyZsdDs9JiMzNDssIDEsIDEsCiYjNDM7CSYjMzQ7UjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTYsdmFyX29mZj0oMHgwOyAweDFmKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfNjRfb3ZlcmZsb3csCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbHNoIHdpdGggb3ZlcmZsb3cgc3JjJiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7Jmx0OyZsdDs9JiMzNDssIDY0LCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF82NCwKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCByaWdodCBzaGlmdCYjMzQ7LAomIzQzOwlyMCwgcjEsIHIyLCAmIzM0OyZndDsmZ3Q7PSYjMzQ7LCAxLCAweGZmLAomIzQzOwkmIzM0O1IxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjRfb3ZlcmZsb3csCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgcnNoIHdpdGggb3ZlcmZsb3cgc3JjJiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7Jmd0OyZndDs9JiMzNDssIDY0LCAxLAomIzQzOwkmIzM0O1IxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX05PTl9DT05TVF9TUkNfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjQsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJpdGhtZXRpYyBzaGlmdCYjMzQ7LAomIzQzOwlyMCwgcjEsIHIyLCAmIzM0O3MmZ3Q7Jmd0Oz0mIzM0OywgMSwgLTgsCiYjNDM7CSYjMzQ7UjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9vdmVyZmxvdywKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggb3ZlcmZsb3cgc3JjJiMzNDssCiYjNDM7CXIwLCByMSwgcjIsICYjMzQ7cyZndDsmZ3Q7PSYjMzQ7LCA2NCwgMSwKJiM0MzsJJiMzNDtSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MzsjZGVmaW5lIFNISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QobmFtZSwgZGVzYywgcmFuZCwgZHN0LCBzcmMsIGRzdF9tYXNrLCBkc3RfZGVsdGEsIG1zZykgXAomIzQzOwlTRUMoJiMzNDtzb2NrZXQmIzM0OykJCQkJCVwKJiM0MzsJX19kZXNjcmlwdGlvbihkZXNjKQkJCQlcCiYjNDM7CV9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKQkJCVwKJiM0MzsJX19tc2coI2RzdCAmIzM0OyBzJmd0OyZndDs9ICYjMzQ7ICNzcmMgJiMzNDsge3suKn19OyB7ey4qfX0gJiMzNDsgbXNnKVwKJiM0MzsJX19uYWtlZCB2b2lkIG5hbWUodm9pZCkJCQkJXAomIzQzOwl7CQkJCQkJXAomIzQzOwkJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQlcCiYjNDM7CQljYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07CQlcCiYjNDM7CQkmIzM0OyAjZHN0ICYjMzQ7ID0gJiMzNDsgI3JhbmQgJiMzNDs7CQkJXAomIzQzOwkJJiMzNDsgI2RzdCAmIzM0OyAmYW1wOz0gJiMzNDsgI2RzdF9tYXNrICYjMzQ7OwkJXAomIzQzOwkJJiMzNDsgI2RzdCAmIzM0OyAmIzQzOz0gJiMzNDsgI2RzdF9kZWx0YSAmIzM0OzsJCVwKJiM0MzsJCWNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTsJCVwKJiM0MzsJCSYjMzQ7ICNzcmMgJiMzNDsgPSAmIzM0OyAjcmFuZCAmIzM0OzsJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICZhbXA7PSAxOwkJCQlcCiYjNDM7CQkmIzM0OyAjc3JjICYjMzQ7ICYjNDM7PSAxOwkJCQlcCiYjNDM7CQkmIzM0OyAjZHN0ICYjMzQ7IHMmZ3Q7Jmd0Oz0gJiMzNDsgI3NyYyAmIzM0OzsJCQlcCiYjNDM7CQlleGl0OwkJCQkJXAomIzQzOyYjMzQ7CQk6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKQkJXAomIzQzOwkJOiBfX2Nsb2JiZXJfYWxsKTsJCQlcCiYjNDM7CX0KJiM0MzsKJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9wb3MsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdCYjMzQ7LAomIzQzOwl3MCwgdzYsIHcyLCA3LCAxLAomIzQzOwkmIzM0O1I2PXNjYWxhcihzbWluPXNtaW4zMj0wLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTQsdmFyX29mZj0oMHgwOyAweDcpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX21peGVkLAomIzQzOwkmIzM0O2JvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdCYjMzQ7LAomIzQzOwl3MCwgdzYsIHcyLCAxNSwgLTgsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49MCxzbWF4PXVtYXg9MHhmZmZmZmZmZixzbWluMzI9LTQsc21heDMyPTMsdmFyX29mZj0oMHgwOyAweGZmZmZmZmZmKSkmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9uZWcsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIG5lZ2F0aXZlIGRzdCYjMzQ7LAomIzQzOwl3MCwgdzYsIHcyLCA4LCAtMTYsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49dW1pbj11bWluMzI9MHhmZmZmZmZmOCxzbWF4PXVtYXg9dW1heDMyPTB4ZmZmZmZmZmUsc21pbjMyPS04LHNtYXgzMj0tMix2YXJfb2ZmPSgweGZmZmZmZmY4OyAweDcpKSYjMzQ7CiYjNDM7KQomIzQzOwomIzQzO1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoCiYjNDM7CXNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X3BvcywKJiM0MzsJJiMzNDtib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggcG9zaXRpdmUgZHN0JiMzNDssCiYjNDM7CXIwLCByNiwgcjIsIDcsIDEsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49c21pbjMyPTAsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpJiMzNDsKJiM0MzspCiYjNDM7CiYjNDM7U0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVCgKJiM0MzsJc2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbWl4ZWQsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG1peGVkLXNpZ24gZHN0JiMzNDssCiYjNDM7CXIwLCByNiwgcjIsIDE1LCAtOCwKJiM0MzsJJiMzNDtSNj1zY2FsYXIoc21pbj1zbWluMzI9LTQsc21heD1zbWF4MzI9MykmIzM0OwomIzQzOykKJiM0MzsKJiM0MztTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKAomIzQzOwlzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9uZWcsCiYjNDM7CSYjMzQ7Ym91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG5lZ2F0aXZlIGRzdCYjMzQ7LAomIzQzOwlyMCwgcjYsIHIyLCA4LCAtMTYsCiYjNDM7CSYjMzQ7UjY9c2NhbGFyKHNtaW49c21pbjMyPS04LHNtYXg9c21heDMyPS0yLHVtaW49MHhmZmZmZmZmZmZmZmZmZmY4LHVtYXg9MHhmZmZmZmZmZmZmZmZmZmZlLHVtaW4zMj0weGZmZmZmZmY4LHVtYXgzMj0weGZmZmZmZmZlLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmODsgMHg3KSkmIzM0OwomIzQzOykKJiM0MzsKIFNFQygmIzM0O3NvY2tldCYjMzQ7KQogX19kZXNjcmlwdGlvbigmIzM0O2JvdW5kcyBjaGVjayBhZnRlciAzMi1iaXQgcmlnaHQgc2hpZnQgd2l0aCA2NC1iaXQgaW5wdXQmIzM0OykKIF9fZmFpbHVyZSBfX21zZygmIzM0O21hdGggYmV0d2VlbiBtYXBfdmFsdWUgcG9pbnRlciBhbmQgNDI5NDk2NzI5NCBpcyBub3QgYWxsb3dlZCYjMzQ7KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODgzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgaG93IHRoZSBCUEYgdmVyaWZpZXIgaGFuZGxlcyBib3VuZHMgdHJhY2tpbmcgZm9yIHNoaWZ0IG9wZXJhdGlvbnMg4oCTIGxlZnQgc2hpZnQgKExTSCksIHJpZ2h0IHNoaWZ0IChSU0gpLCBhbmQgYXJpdGhtZXRpYyByaWdodCBzaGlmdCAoQVJTSCkg4oCTIHdoZW4gdGhlIHNoaWZ0ICphbW91bnQqIGlzbiYjMzk7dCBhIGZpeGVkIGNvbnN0YW50LCBidXQgYSByYW5nZS4gIFByZXZpb3VzbHksIEkgcmVjYWxsIHRoZSB2ZXJpZmllciBuZWVkZWQgYSBjb25zdGFudCBzaGlmdCBhbW91bnQgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHJhbmdlIG9mIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gIFRoaXMgY2hhbmdlIHNlZW1zIHRvIHJlbGF4IHRoYXQgcmVxdWlyZW1lbnQsIGFsbG93aW5nIGZvciBhIHNoaWZ0IGFtb3VudCByYW5nZSAod2hlcmUgYHVtaW5fdmFsICE9IHVtYXhfdmFsYCkgYW5kIGFkanVzdGluZyB0aGUgYm91bmRzIGNhbGN1bGF0aW9uIGFjY29yZGluZ2x5LgoKVGhlIGtleSBpcyB0aGF0IHRoZSBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIGZ1bmN0aW9uIGlzIGFsc28gYmVpbmcgdXBkYXRlZCB0byBub3cgcmV0dXJuIHRydWUgZm9yIG5vbi1jb25zdGFudCBzaGlmdHMsIGFzIGxvbmcgYXMgdGhlIG1heGltdW0gc2hpZnQgYW1vdW50IGlzIGxlc3MgdGhhbiB0aGUgYml0IHdpZHRoLCBlaXRoZXIgMzIgb3IgNjQuIFRoYXQmIzM5O3MgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLCBJIGNhbiBzZWUgaG93IGl0IGhlbHBzIHRvIGNvbXB1dGUgdGhlc2UgYm91bmRzIGNvcnJlY3RseS4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIHZlcmlmaWVyIGlzIGFuIGluY3JlZGlibHkgY3JpdGljYWwgYW5kIGZyZXF1ZW50bHktYWNjZXNzZWQgY29tcG9uZW50IG9mIHRoZSBrZXJuZWwsIHNvIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzZXJpb3VzIGZ1enppbmcuIFdlIGhhdmUgdG8gYmUgbWV0aWN1bG91cyBoZXJlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBleGFjdCBmdW5jdGlvbnMgdGhhdCBhcmUgZ2V0dGluZyBtb2RpZmllZC4gTG9va3MgbGlrZSBpdCYjMzk7cyBpbXBhY3RpbmcgdGhlc2U6IGBzY2FsYXIzMl9taW5fbWF4X2xzaGAsIGBzY2FsYXJfbWluX21heF9sc2hgLCBgc2NhbGFyMzJfbWluX21heF9yc2hgLCBgc2NhbGFyX21pbl9tYXhfcnNoYCwgYHNjYWxhcjMyX21pbl9tYXhfYXJzaGAsIGBzY2FsYXJfbWluX21heF9hcnNoYCwgYW5kIGFsc28gYGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlYC4gR290IGl0LgoKRm9yIGNvbmZpZ3VyYXRpb24sIGBCUEZfU1lTQ0FMTGAgc2VlbXMgdG8gYmUgdGhlIG9idmlvdXMgb25lLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIHRoZSBvbmx5IG9uZSByZXF1aXJlZCBmb3IgdGhlIHJlbGV2YW50IGNvZGUgdG8gYmUgY29tcGlsZWQuIEkgd2lsbCBjb25maXJtIHRoYXQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZlcmlmaWVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODgzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlybWluZyB0aGUgQlBGIFN5c2NhbGwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB5ZXMsIGJhc2VkIG9uIHdoYXQgSSBrbm93LCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBkZWZpbml0ZWx5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UmIzM5O3JlIGxvb2tpbmcgZm9yLiBUaGF0IHNlZW1zIHJpZ2h0LiBOb3csIGxldCYjMzk7cyBkaXZlIGluIGFuZCBjb25maXJtIHRoaXMuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGltcGFjdHMgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5LiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgaG93IHRoaW5ncyBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgd2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NhbGFyMzJfbWluX21heF9sc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE0MjM5PXN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3hvcihzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQyNTYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNTc6c3RhdGljIHZvaWQgX19zY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI1OC1cdFx0XHRcdCAgIHU2NCB1bWluX3ZhbCwgdTY0IHVtYXhfdmFsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDI3MTpzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3Mi1cdFx0XHRcdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqc3JjX3JlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQyNzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNzk6XHRfX3NjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQyODAtXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQzMTY9c3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDMyMy1cdF9fc2NhbGFyNjRfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDMyNDpcdF9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDMyNS1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ2MTQ9c3RhdGljIGludCBhZGp1c3Rfc2NhbGFyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDczMC1cdFx0aWYgKGFsdTMyKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NzMxOlx0XHRcdHNjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIFx1MDAyNnNyY19yZWcpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NzMyLVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY3MwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzU3ltYm9scyoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aG9zZSBmdW5jdGlvbnM6IGBzY2FsYXIzMl9taW5fbWF4X2xzaGAsIGBzY2FsYXJfbWluX21heF9sc2hgLCBgc2NhbGFyMzJfbWluX21heF9yc2hgLCBgc2NhbGFyX21pbl9tYXhfcnNoYCwgYHNjYWxhcjMyX21pbl9tYXhfYXJzaGAsIGBzY2FsYXJfbWluX21heF9hcnNoYCwgYXJlIGFsbCBzdHJvbmcgY29udGVuZGVycyBmb3IgaW5jbHVzaW9uIGluIGBGb2N1c1N5bWJvbHNgLiBUaGV5IHNlZW0gbGlrZSBwcmltZSBjYW5kaWRhdGVzLiBCdXQsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIGJlZm9yZSBJIGdvIGZ1cnRoZXIuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE0NDgyPXN0YXRpYyB2b2lkIHNjYWxhcl9ieXRlX3N3YXAoc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ1MzAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQ1MzE6c3RhdGljIGJvb2wgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2Uoc3RydWN0IGJwZl9pbnNuICppbnNuLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NTMyLVx0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpzcmNfcmVnKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDYxND1zdGF0aWMgaW50IGFkanVzdF9zY2FsYXJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjIzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NjI0Olx0aWYgKCFpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShpbnNuLCBcdTAwMjZzcmNfcmVnKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjI1LVx0XHRfX21hcmtfcmVnX3Vua25vd24oZW52LCBkc3RfcmVnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI1OAoJCQkJCQkJb3V0cHV0OiAyMDEKCQkJCQkJCXRob3VnaHRzOiAzNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVmVyaWZpYWJpbGl0eSoqCgpPa2F5LCBzbyBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIHNlZW1zIGxpa2UgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gY29uc2lkZXIsIGJ1dCBsZXQmIzM5O3MgZmlyc3QgZW5zdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgdGhlIGFzc29jaWF0ZWQgc2VsZnRlc3RzLiBUaGUgc2VsZnRlc3RzIGFyZSBqdXN0IHZhbGlkYXRpb24gY2hlY2tzLCBzbyB0aGV5IGRvbiYjMzk7dCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzIHNxdWFyZWx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGhlcmUuCgpOb3csIGxldCYjMzk7cyBhcnRpY3VsYXRlIHRoZSBjb3JlIHJlYXNvbmluZyBmb3IgdGhlIGZ1enppbmcgcmVxdWlyZW1lbnQuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIEJQRiB2ZXJpZmllciB0byBoYW5kbGUgYm91bmRzIHRyYWNraW5nIGZvciBzaGlmdCBvcGVyYXRpb25zIChMU0gsIFJTSCwgQVJTSCkgd2hlcmUgdGhlIHNoaWZ0ICphbW91bnQqIGlzbiYjMzk7dCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpbnRyb2R1Y2VzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY3JpdGljYWwgYW5kIGZyZXF1ZW50bHkgYWNjZXNzZWQgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLiBDb25zZXF1ZW50bHksIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIGRldGVjdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHRoZSBuZXcgYm91bmRzIHRyYWNraW5nIG1lY2hhbmlzbS4KCldlIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYHNjYWxhcjMyX21pbl9tYXhfbHNoYCwgYHNjYWxhcl9taW5fbWF4X2xzaGAsIGBzY2FsYXIzMl9taW5fbWF4X3JzaGAsIGBzY2FsYXJfbWluX21heF9yc2hgLCBgc2NhbGFyMzJfbWluX21heF9hcnNoYCwgYHNjYWxhcl9taW5fbWF4X2Fyc2hgIGFuZCBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2suIE9rYXksIGBzY2FsYXIzMl9taW5fbWF4X2xzaGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW1wYWN0ZWQ/IEhtbSwgaXQgbG9va3MgbGlrZSBgX19zY2FsYXIzMl9taW5fbWF4X2xzaGAgd2FzbiYjMzk7dCBtb2RpZmllZCwgYnV0IGBzY2FsYXIzMl9taW5fbWF4X2xzaGAgd2FzLgoKQWxyaWdodCwgdGltZSB0byBsb2cgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2xzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXJfbWluX21heF9yc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9hcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjYWxhcjMyX21pbl9tYXhfbHNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2xzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXIzMl9taW5fbWF4X3JzaCYjMzQ7LAogICAgJiMzNDtzY2FsYXJfbWluX21heF9yc2gmIzM0OywKICAgICYjMzQ7c2NhbGFyMzJfbWluX21heF9hcnNoJiMzNDssCiAgICAmIzM0O3NjYWxhcl9taW5fbWF4X2Fyc2gmIzM0OywKICAgICYjMzQ7aXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MDYuOTgyMzM4OTA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MzAyNTI5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY2FsYXIzMl9taW5fbWF4X2xzaFwiLFxuICAgIFwic2NhbGFyX21pbl9tYXhfbHNoXCIsXG4gICAgXCJzY2FsYXIzMl9taW5fbWF4X3JzaFwiLFxuICAgIFwic2NhbGFyX21pbl9tYXhfcnNoXCIsXG4gICAgXCJzY2FsYXIzMl9taW5fbWF4X2Fyc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X2Fyc2hcIixcbiAgICBcImlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzdXBwb3J0IHRyYWNraW5nIGJvdW5kcyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZW4gdGhlIHNoaWZ0IGFtb3VudCBpcyBub3QgYSBjb25zdGFudCwgYnV0IGEgcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaGlnaGx5IHJlYWNoYWJsZSBhbmQgY3JpdGljYWwgQlBGIHZlcmlmaWVyIGxvZ2ljLCB3aGljaCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIGluY29ycmVjdCBib3VuZHMgdHJhY2tpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjA2Ljk4MjM0NTQ2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI5ODQxNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzhiNGRhYTBjMjlhMmI2OTA3ZTYxNDUxZDI3ZTA3ZThhZjExNWRjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxNDowMTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCAyYWJjNzlkYmYyODFjMi4uYmYyNDdjMjE5Y2FiNTggMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTE0Mjc3LDcgKzE0Mjc3LDggQEAgc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9sc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxuIFxcdHN0cnVjdCB0bnVtIHN1YnJlZyA9IHRudW1fc3VicmVnKGRzdF9yZWctXFx1MDAzZXZhcl9vZmYpO1xcbiBcXG4gXFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xcbi1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9zdWJyZWcodG51bV9sc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkpO1xcbitcXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gKHVtaW5fdmFsID09IHVtYXhfdmFsKSA/XFxuK1xcdFxcdFxcdCAgIHRudW1fc3VicmVnKHRudW1fbHNoaWZ0KHN1YnJlZywgdW1pbl92YWwpKSA6IHRudW1fdW5rbm93bjtcXG4gXFx0LyogTm90IHJlcXVpcmVkIGJ1dCBiZWluZyBjYXJlZnVsIG1hcmsgcmVnNjQgYm91bmRzIGFzIHVua25vd24gc29cXG4gXFx0ICogdGhhdCB3ZSBhcmUgZm9yY2VkIHRvIHBpY2sgdGhlbSB1cCBmcm9tIHRudW0gYW5kIHpleHQgbGF0ZXIgYW5kXFxuIFxcdCAqIGlmIHNvbWUgcGF0aCBza2lwcyB0aGlzIHN0ZXAgd2UgYXJlIHN0aWxsIHNhZmUuXFxuQEAgLTE0MzIyLDcgKzE0MzIzLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbiBcXHRfX3NjYWxhcjY0X21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XFxuIFxcdF9fc2NhbGFyMzJfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcXG4gXFxuLVxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX2xzaGlmdChkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCk7XFxuK1xcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cXG4rXFx0XFx0XFx0ICAgdG51bV9sc2hpZnQoZHN0X3JlZy1cXHUwMDNldmFyX29mZiwgdW1pbl92YWwpIDogdG51bV91bmtub3duO1xcbiBcXHQvKiBXZSBtYXkgbGVhcm4gc29tZXRoaW5nIG1vcmUgZnJvbSB0aGUgdmFyX29mZiAqL1xcbiBcXHRfX3VwZGF0ZV9yZWdfYm91bmRzKGRzdF9yZWcpO1xcbiB9XFxuQEAgLTE0MzQ5LDcgKzE0MzUxLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9yc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxuIFxcdCAqIHZhcl9vZmYgb2YgdGhlIHJlc3VsdC5cXG4gXFx0ICovXFxuIFxcbi1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9yc2hpZnQoc3VicmVnLCB1bWluX3ZhbCk7XFxuK1xcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cXG4rXFx0XFx0XFx0ICAgdG51bV9yc2hpZnQoc3VicmVnLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247XFxuIFxcdHJlZ19zZXRfdXJhbmdlMzIoZHN0X3JlZywgcmVnX3UzMl9taW4oZHN0X3JlZykgXFx1MDAzZVxcdTAwM2UgdW1heF92YWwsXFxuIFxcdFxcdFxcdCByZWdfdTMyX21heChkc3RfcmVnKSBcXHUwMDNlXFx1MDAzZSB1bWluX3ZhbCk7XFxuIFxcbkBAIC0xNDM3Nyw3ICsxNDM4MCw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcXG4gXFx0ICogYW5kIHJlbHkgb24gaW5mZXJyaW5nIG5ldyBvbmVzIGZyb20gdGhlIHVuc2lnbmVkIGJvdW5kcyBhbmRcXG4gXFx0ICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LlxcbiBcXHQgKi9cXG4tXFx0ZHN0X3JlZy1cXHUwMDNldmFyX29mZiA9IHRudW1fcnNoaWZ0KGRzdF9yZWctXFx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKTtcXG4rXFx0ZHN0X3JlZy1cXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xcbitcXHRcXHRcXHQgICB0bnVtX3JzaGlmdChkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCkgOiB0bnVtX3Vua25vd247XFxuIFxcdHJlZ19zZXRfdXJhbmdlNjQoZHN0X3JlZywgcmVnX3VtaW4oZHN0X3JlZykgXFx1MDAzZVxcdTAwM2UgdW1heF92YWwsXFxuIFxcdFxcdFxcdCByZWdfdW1heChkc3RfcmVnKSBcXHUwMDNlXFx1MDAzZSB1bWluX3ZhbCk7XFxuIFxcbkBAIC0xNDM5MiwxOCArMTQzOTYsNDEgQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbiBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2Fyc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXFxuIHtcXG4tXFx0dTY0IHVtaW5fdmFsID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7XFxuK1xcdHUzMiB1bWluX3NoaWZ0ID0gcmVnX3UzMl9taW4oc3JjX3JlZyk7XFxuK1xcdHUzMiB1bWF4X3NoaWZ0ID0gcmVnX3UzMl9tYXgoc3JjX3JlZyk7XFxuK1xcdHMzMiBzbWluID0gcmVnX3MzMl9taW4oZHN0X3JlZyk7XFxuK1xcdHMzMiBzbWF4ID0gcmVnX3MzMl9tYXgoZHN0X3JlZyk7XFxuIFxcbi1cXHQvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZFxcbi1cXHQgKiB1bWF4X3ZhbCBpcyBlcXVhbCB0byB1bWluX3ZhbC5cXG4tXFx0ICogQmxvdyBhd2F5IHRoZSBkc3RfcmVnIHVtaW5fdmFsdWUvdW1heF92YWx1ZSBhbmQgcmVseSBvblxcbi1cXHQgKiBkc3RfcmVnIHZhcl9vZmYgdG8gcmVmaW5lIHRoZSByZXN1bHQuXFxuK1xcdC8qXFxuK1xcdCAqIEJQRl9BUlNIIG9uIDMyLWJpdCBzdWJyZWdpc3Rlci4gQVJTSCBpcyBhIHNpZ25lZCBkaXZpZGUgYnlcXG4rXFx0ICogMl5rIChyb3VuZGluZyB0b3dhcmQgLWluZiBmb3IgbmVnYXRpdmVzKS4gV2l0aCBhIG5vbi1jb25zdGFudFxcbitcXHQgKiBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSBkaXZpZGluZyB0aGVcXG4rXFx0ICogZXh0cmVtZXMgb2YgW3NtaW4sIHNtYXhdIGJ5IHRoZSBleHRyZW1lcyBvZiB0aGUgZGl2aXNvcjpcXG4rXFx0ICpcXG4rXFx0ICogICBzbWluIFxcdTAwM2U9IDA6ICBbc21pbiAvIDJedW1heCwgc21heCAvIDJedW1pbl1cXG4rXFx0ICogICBzbWF4IFxcdTAwM2MgIDA6ICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1heF1cXG4rXFx0ICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl1cXG4rXFx0ICpcXG4rXFx0ICogdmFyX29mZiBpcyB0bnVtX3Vua25vd24gc2luY2UgYSBub24tY29uc3RhbnQgc2hpZnQgcHJldmVudHNcXG4rXFx0ICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuXFxuIFxcdCAqL1xcbi1cXHRyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsXFxuLVxcdFxcdFxcdCAodTMyKSgoKHMzMilyZWdfczMyX21pbihkc3RfcmVnKSkgXFx1MDAzZVxcdTAwM2UgdW1pbl92YWwpLFxcbi1cXHRcXHRcXHQgKHUzMikoKChzMzIpcmVnX3MzMl9tYXgoZHN0X3JlZykpIFxcdTAwM2VcXHUwMDNlIHVtaW5fdmFsKSk7XFxuLVxcbi1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctXFx1MDAzZXZhcl9vZmYpLCB1bWluX3ZhbCwgMzIpO1xcbitcXHRpZiAodW1pbl9zaGlmdCA9PSB1bWF4X3NoaWZ0KSB7XFxuK1xcdFxcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcXHUwMDNlXFx1MDAzZSB1bWluX3NoaWZ0KSxcXG4rXFx0XFx0XFx0XFx0ICh1MzIpKHNtYXggXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCkpO1xcbitcXHRcXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctXFx1MDAzZXZhcl9vZmYpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHR1bWluX3NoaWZ0LCAzMik7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChzbWluIFxcdTAwM2U9IDApXFxuK1xcdFxcdFxcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcXHUwMDNlXFx1MDAzZSB1bWF4X3NoaWZ0KSxcXG4rXFx0XFx0XFx0XFx0XFx0ICh1MzIpKHNtYXggXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCkpO1xcbitcXHRcXHRlbHNlIGlmIChzbWF4IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQpLFxcbitcXHRcXHRcXHRcXHRcXHQgKHUzMikoc21heCBcXHUwMDNlXFx1MDAzZSB1bWF4X3NoaWZ0KSk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQpLFxcbitcXHRcXHRcXHRcXHRcXHQgKHUzMikoc21heCBcXHUwMDNlXFx1MDAzZSB1bWluX3NoaWZ0KSk7XFxuK1xcdFxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX3Vua25vd247XFxuK1xcdH1cXG4gXFxuIFxcdF9fbWFya19yZWc2NF91bmJvdW5kZWQoZHN0X3JlZyk7XFxuIFxcdF9fdXBkYXRlX3JlZzMyX2JvdW5kcyhkc3RfcmVnKTtcXG5AQCAtMTQ0MTIsMTUgKzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcXG4gc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXFxuIHtcXG4tXFx0dTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7XFxuK1xcdHU2NCB1bWluX3NoaWZ0ID0gcmVnX3VtaW4oc3JjX3JlZyk7XFxuK1xcdHU2NCB1bWF4X3NoaWZ0ID0gcmVnX3VtYXgoc3JjX3JlZyk7XFxuK1xcdHM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7XFxuK1xcdHM2NCBzbWF4ID0gcmVnX3NtYXgoZHN0X3JlZyk7XFxuIFxcbi1cXHQvKiBVcG9uIHJlYWNoaW5nIGhlcmUsIHNyY19rbm93biBpcyB0cnVlIGFuZCB1bWF4X3ZhbCBpcyBlcXVhbFxcbi1cXHQgKiB0byB1bWluX3ZhbC5cXG4rXFx0LypcXG4rXFx0ICogQlBGX0FSU0ggKGFyaXRobWV0aWMgcmlnaHQgc2hpZnQpIG9uIDY0LWJpdCByZWdpc3Rlci4gU2lnbmVkXFxuK1xcdCAqIGRpdmlkZSBieSAyXmssIHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMuIFdpdGggYVxcbitcXHQgKiBub24tY29uc3RhbnQgc2hpZnQgaW4gW3VtaW4sIHVtYXhdLCB0aGUgcmVzdWx0IGlzIGJvdW5kZWRcXG4rXFx0ICogYnkgZGl2aWRpbmcgdGhlIGV4dHJlbWVzIG9mIFtzbWluLCBzbWF4XSBieSB0aGUgZXh0cmVtZXNcXG4rXFx0ICogb2YgdGhlIGRpdmlzb3I6XFxuK1xcdCAqXFxuK1xcdCAqICAgc21pbiBcXHUwMDNlPSAwOiAgW3NtaW4gLyAyXnVtYXgsIHNtYXggLyAyXnVtaW5dXFxuK1xcdCAqICAgc21heCBcXHUwMDNjICAwOiAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtYXhdXFxuK1xcdCAqICAgbWl4ZWQ6ICAgICAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtaW5dXFxuK1xcdCAqXFxuK1xcdCAqIHZhcl9vZmYgaXMgdG51bV91bmtub3duIHNpbmNlIGEgbm9uLWNvbnN0YW50IHNoaWZ0IHByZXZlbnRzXFxuK1xcdCAqIHByZWNpc2UgYml0IHRyYWNraW5nLlxcbiBcXHQgKi9cXG4tXFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCByZWdfc21pbihkc3RfcmVnKSBcXHUwMDNlXFx1MDAzZSB1bWluX3ZhbCxcXG4tXFx0XFx0XFx0IHJlZ19zbWF4KGRzdF9yZWcpIFxcdTAwM2VcXHUwMDNlIHVtaW5fdmFsKTtcXG4tXFxuLVxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX2Fyc2hpZnQoZHN0X3JlZy1cXHUwMDNldmFyX29mZiwgdW1pbl92YWwsIDY0KTtcXG4rXFx0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xcbitcXHRcXHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCwgc21heCBcXHUwMDNlXFx1MDAzZSB1bWluX3NoaWZ0KTtcXG4rXFx0XFx0ZHN0X3JlZy1cXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdChkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmLCB1bWluX3NoaWZ0LCA2NCk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChzbWluIFxcdTAwM2U9IDApXFxuK1xcdFxcdFxcdHJlZ19zZXRfc3JhbmdlNjQoZHN0X3JlZywgc21pbiBcXHUwMDNlXFx1MDAzZSB1bWF4X3NoaWZ0LCBzbWF4IFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQpO1xcbitcXHRcXHRlbHNlIGlmIChzbWF4IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXFx1MDAzZVxcdTAwM2UgdW1heF9zaGlmdCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFxcdTAwM2VcXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXFx1MDAzZVxcdTAwM2UgdW1pbl9zaGlmdCk7XFxuK1xcdFxcdGRzdF9yZWctXFx1MDAzZXZhcl9vZmYgPSB0bnVtX3Vua25vd247XFxuK1xcdH1cXG4gXFxuIFxcdC8qIEl0cyBub3QgZWFzeSB0byBvcGVyYXRlIG9uIGFsdTMyIGJvdW5kcyBoZXJlIGJlY2F1c2UgaXQgZGVwZW5kc1xcbiBcXHQgKiBvbiBiaXRzIGJlaW5nIHNoaWZ0ZWQgaW4gZnJvbSB1cHBlciAzMi1iaXRzLiBUYWtlIGVhc3kgd2F5IG91dFxcbkBAIC0xNDUxNiwxNCArMTQ1NjUsMTQgQEAgc3RhdGljIGJvb2wgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2Uoc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbiBcXHRjYXNlIEJQRl9NT0Q6XFxuIFxcdFxcdHJldHVybiBzcmNfaXNfY29uc3Q7XFxuIFxcbi1cXHQvKiBTaGlmdCBvcGVyYXRvcnMgcmFuZ2UgaXMgb25seSBjb21wdXRhYmxlIGlmIHNoaWZ0IGRpbWVuc2lvbiBvcGVyYW5kXFxuLVxcdCAqIGlzIGEgY29uc3RhbnQuIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIHVuZGVmaW5lZC4gVGhpc1xcbi1cXHQgKiBpbmNsdWRlcyBzaGlmdHMgYnkgYSBuZWdhdGl2ZSBudW1iZXIuXFxuK1xcdC8qXFxuK1xcdCAqIFNoaWZ0cyBncmVhdGVyIHRoYW4gMzEgb3IgNjMgYXJlIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3VyLlxcbitcXHQgKiBUaGlzIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci5cXG4gXFx0ICovXFxuIFxcdGNhc2UgQlBGX0xTSDpcXG4gXFx0Y2FzZSBCUEZfUlNIOlxcbiBcXHRjYXNlIEJQRl9BUlNIOlxcbi1cXHRcXHRyZXR1cm4gKHNyY19pc19jb25zdCBcXHUwMDI2XFx1MDAyNiByZWdfdW1heChzcmNfcmVnKSBcXHUwMDNjIGluc25fYml0bmVzcyk7XFxuK1xcdFxcdHJldHVybiByZWdfdW1heChzcmNfcmVnKSBcXHUwMDNjIGluc25fYml0bmVzcztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuY1xcbmluZGV4IGJjMDM4YWMyZGY5OGUyLi41MmFlM2RjNTkzNjAwZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcXG5AQCAtNDgyLDYgKzQ4MiwxNzMgQEAgbDBfJT06XFx0LyogZXhpdCAqL1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4gfVxcbiBcXG4rI2RlZmluZSBTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QobmFtZSwgZGVzYywgcmFuZCwgZHN0LCBzcmMsIG9wLCBzcmNfYWRkLCBkc3RfaW5pdCwgbXNnKSBcXFxcXFxuK1xcdFNFQyhcXFwic29ja2V0XFxcIilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fZGVzY3JpcHRpb24oZGVzYylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVxcdFxcdFxcdFxcXFxcXG4rXFx0X19tc2coI2RzdCBcXFwiIFxcXCIgb3AgXFxcIiBcXFwiICNzcmMgXFxcIiB7ey4qfX07IFxcXCIgbXNnKVxcdFxcXFxcXG4rXFx0X19uYWtlZCB2b2lkIG5hbWUodm9pZClcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGFzbSB2b2xhdGlsZSAoXFxcIlxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjc3JjIFxcXCIgPSBcXFwiICNyYW5kIFxcXCI7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNzcmMgXFxcIiBcXHUwMDI2PSAzO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjc3JjIFxcXCIgKz0gXFxcIiAjc3JjX2FkZCBcXFwiO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjZHN0IFxcXCIgPSBcXFwiICNkc3RfaW5pdCBcXFwiO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjZHN0IFxcXCIgXFxcIiBvcCBcXFwiIFxcXCIgI3NyYyBcXFwiO1xcdFxcdFxcXFxcXG4rXFx0XFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcXCJcXHRcXHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVxcdFxcdFxcXFxcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfYWxsKTtcXHRcXHRcXHRcXFxcXFxuK1xcdH1cXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF8zMixcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxlZnQgc2hpZnRcXFwiLFxcbitcXHR3MCwgdzEsIHcyLCBcXFwiXFx1MDAzY1xcdTAwM2M9XFxcIiwgMSwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpXFxcIlxcbispXFxuK1xcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzJfb3ZlcmZsb3csXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBsc2ggd2l0aCBvdmVyZmxvdyBzcmNcXFwiLFxcbitcXHR3MCwgdzEsIHcyLCBcXFwiXFx1MDAzY1xcdTAwM2M9XFxcIiwgMzIsIDEsXFxuK1xcdFxcXCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF8zMixcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IHJpZ2h0IHNoaWZ0XFxcIixcXG4rXFx0dzAsIHcxLCB3MiwgXFxcIlxcdTAwM2VcXHUwMDNlPVxcXCIsIDEsIDB4ZmYsXFxuK1xcdFxcXCJSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MTUsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTI3LHZhcl9vZmY9KDB4MDsgMHg3ZikpXFxcIlxcbispXFxuK1xcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfMzJfb3ZlcmZsb3csXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCByc2ggd2l0aCBvdmVyZmxvdyBzcmNcXFwiLFxcbitcXHR3MCwgdzEsIHcyLCBcXFwiXFx1MDAzZVxcdTAwM2U9XFxcIiwgMzIsIDEsXFxuK1xcdFxcXCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzIsXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcml0aG1ldGljIHNoaWZ0XFxcIixcXG4rXFx0dzAsIHcxLCB3MiwgXFxcInNcXHUwMDNlXFx1MDAzZT1cXFwiLCAxLCAtOCxcXG4rXFx0XFxcIlIxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfb3ZlcmZsb3csXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggb3ZlcmZsb3cgc3JjXFxcIixcXG4rXFx0dzAsIHcxLCB3MiwgXFxcInNcXHUwMDNlXFx1MDAzZT1cXFwiLCAzMiwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0zMixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0zNSx2YXJfb2ZmPSgweDIwOyAweDMpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfbHNoXzY0LFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbGVmdCBzaGlmdFxcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJcXHUwMDNjXFx1MDAzYz1cXFwiLCAxLCAxLFxcbitcXHRcXFwiUjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MTYsdmFyX29mZj0oMHgwOyAweDFmKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NF9vdmVyZmxvdyxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyY1xcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJcXHUwMDNjXFx1MDAzYz1cXFwiLCA2NCwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzY0LFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgcmlnaHQgc2hpZnRcXFwiLFxcbitcXHRyMCwgcjEsIHIyLCBcXFwiXFx1MDAzZVxcdTAwM2U9XFxcIiwgMSwgMHhmZixcXG4rXFx0XFxcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX3JzaF82NF9vdmVyZmxvdyxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyY1xcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJcXHUwMDNlXFx1MDAzZT1cXFwiLCA2NCwgMSxcXG4rXFx0XFxcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NCxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyaXRobWV0aWMgc2hpZnRcXFwiLFxcbitcXHRyMCwgcjEsIHIyLCBcXFwic1xcdTAwM2VcXHUwMDNlPVxcXCIsIDEsIC04LFxcbitcXHRcXFwiUjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXFxcIlxcbispXFxuK1xcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X292ZXJmbG93LFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG92ZXJmbG93IHNyY1xcXCIsXFxuK1xcdHIwLCByMSwgcjIsIFxcXCJzXFx1MDAzZVxcdTAwM2U9XFxcIiwgNjQsIDEsXFxuK1xcdFxcXCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSlcXFwiXFxuKylcXG4rXFxuKyNkZWZpbmUgU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChuYW1lLCBkZXNjLCByYW5kLCBkc3QsIHNyYywgZHN0X21hc2ssIGRzdF9kZWx0YSwgbXNnKSBcXFxcXFxuK1xcdFNFQyhcXFwic29ja2V0XFxcIilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fZGVzY3JpcHRpb24oZGVzYylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVxcdFxcdFxcdFxcXFxcXG4rXFx0X19tc2coI2RzdCBcXFwiIHNcXHUwMDNlXFx1MDAzZT0gXFxcIiAjc3JjIFxcXCIge3suKn19OyB7ey4qfX0gXFxcIiBtc2cpXFxcXFxcbitcXHRfX25ha2VkIHZvaWQgbmFtZSh2b2lkKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXNtIHZvbGF0aWxlIChcXFwiXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNkc3QgXFxcIiA9IFxcXCIgI3JhbmQgXFxcIjtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCIgI2RzdCBcXFwiIFxcdTAwMjY9IFxcXCIgI2RzdF9tYXNrIFxcXCI7XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNkc3QgXFxcIiArPSBcXFwiICNkc3RfZGVsdGEgXFxcIjtcXHRcXHRcXFxcXFxuK1xcdFxcdGNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTtcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCIgI3NyYyBcXFwiID0gXFxcIiAjcmFuZCBcXFwiO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFxcIiAjc3JjIFxcXCIgXFx1MDAyNj0gMTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCIgI3NyYyBcXFwiICs9IDE7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXFwiICNkc3QgXFxcIiBzXFx1MDAzZVxcdTAwM2U9IFxcXCIgI3NyYyBcXFwiO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcXCJcXHRcXHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVxcdFxcdFxcXFxcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfYWxsKTtcXHRcXHRcXHRcXFxcXFxuK1xcdH1cXG4rXFxuK1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX3BvcyxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBwb3NpdGl2ZSBkc3RcXFwiLFxcbitcXHR3MCwgdzYsIHcyLCA3LCAxLFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPTAsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXFxcIlxcbispXFxuK1xcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9taXhlZCxcXG4rXFx0XFxcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdFxcXCIsXFxuK1xcdHcwLCB3NiwgdzIsIDE1LCAtOCxcXG4rXFx0XFxcIlI2PXNjYWxhcihzbWluPTAsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0zLHZhcl9vZmY9KDB4MDsgMHhmZmZmZmZmZikpXFxcIlxcbispXFxuK1xcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9uZWcsXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XFxcIixcXG4rXFx0dzAsIHc2LCB3MiwgOCwgLTE2LFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49dW1pbj11bWluMzI9MHhmZmZmZmZmOCxzbWF4PXVtYXg9dW1heDMyPTB4ZmZmZmZmZmUsc21pbjMyPS04LHNtYXgzMj0tMix2YXJfb2ZmPSgweGZmZmZmZmY4OyAweDcpKVxcXCJcXG4rKVxcbitcXG4rU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcXG4rXFx0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfcG9zLFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdFxcXCIsXFxuK1xcdHIwLCByNiwgcjIsIDcsIDEsXFxuK1xcdFxcXCJSNj1zY2FsYXIoc21pbj1zbWluMzI9MCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcXFwiXFxuKylcXG4rXFxuK1NISUZUX0FSU0hfRFNUX1JBTkdFX1RFU1QoXFxuK1xcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzY0X21peGVkLFxcbitcXHRcXFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJzaCB3aXRoIG1peGVkLXNpZ24gZHN0XFxcIixcXG4rXFx0cjAsIHI2LCByMiwgMTUsIC04LFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPTMpXFxcIlxcbispXFxuK1xcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxcbitcXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NF9uZWcsXFxuK1xcdFxcXCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XFxcIixcXG4rXFx0cjAsIHI2LCByMiwgOCwgLTE2LFxcbitcXHRcXFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPS04LHNtYXg9c21heDMyPS0yLHVtaW49MHhmZmZmZmZmZmZmZmZmZmY4LHVtYXg9MHhmZmZmZmZmZmZmZmZmZmZlLHVtaW4zMj0weGZmZmZmZmY4LHVtYXgzMj0weGZmZmZmZmZlLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmODsgMHg3KSlcXFwiXFxuKylcXG4rXFxuIFNFQyhcXFwic29ja2V0XFxcIilcXG4gX19kZXNjcmlwdGlvbihcXFwiYm91bmRzIGNoZWNrIGFmdGVyIDMyLWJpdCByaWdodCBzaGlmdCB3aXRoIDY0LWJpdCBpbnB1dFxcXCIpXFxuIF9fZmFpbHVyZSBfX21zZyhcXFwibWF0aCBiZXR3ZWVuIG1hcF92YWx1ZSBwb2ludGVyIGFuZCA0Mjk0OTY3Mjk0IGlzIG5vdCBhbGxvd2VkXFxcIilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MDcuNjEyODkyNDI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA5OTY4NzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjYWxhcjMyX21pbl9tYXhfbHNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9sc2hcIixcbiAgICBcInNjYWxhcjMyX21pbl9tYXhfcnNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9yc2hcIixcbiAgICBcInNjYWxhcjMyX21pbl9tYXhfYXJzaFwiLFxuICAgIFwic2NhbGFyX21pbl9tYXhfYXJzaFwiLFxuICAgIFwiaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHN1cHBvcnQgdHJhY2tpbmcgYm91bmRzIGZvciBzaGlmdCBvcGVyYXRpb25zIChMU0gsIFJTSCwgQVJTSCkgd2hlbiB0aGUgc2hpZnQgYW1vdW50IGlzIG5vdCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBoaWdobHkgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCBCUEYgdmVyaWZpZXIgbG9naWMsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSB2dWxuZXJhYmlsaXRpZXMgb3IgaW5jb3JyZWN0IGJvdW5kcyB0cmFja2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGI0ZGFhMGMyOWEyYjY5MDdlNjE0NTFkMjdlMDdlOGFmMTE1ZGM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTQ6MDE6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDJhYmM3OWRiZjI4MWMyLi5iZjI0N2MyMTljYWI1OCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTQyNzcsNyArMTQyNzcsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2xzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBcdHN0cnVjdCB0bnVtIHN1YnJlZyA9IHRudW1fc3VicmVnKGRzdF9yZWctXHUwMDNldmFyX29mZik7XG4gXG4gXHRfX3NjYWxhcjMyX21pbl9tYXhfbHNoKGRzdF9yZWcsIHVtaW5fdmFsLCB1bWF4X3ZhbCk7XG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3N1YnJlZyh0bnVtX2xzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSk7XG4rXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbitcdFx0XHQgICB0bnVtX3N1YnJlZyh0bnVtX2xzaGlmdChzdWJyZWcsIHVtaW5fdmFsKSkgOiB0bnVtX3Vua25vd247XG4gXHQvKiBOb3QgcmVxdWlyZWQgYnV0IGJlaW5nIGNhcmVmdWwgbWFyayByZWc2NCBib3VuZHMgYXMgdW5rbm93biBzb1xuIFx0ICogdGhhdCB3ZSBhcmUgZm9yY2VkIHRvIHBpY2sgdGhlbSB1cCBmcm9tIHRudW0gYW5kIHpleHQgbGF0ZXIgYW5kXG4gXHQgKiBpZiBzb21lIHBhdGggc2tpcHMgdGhpcyBzdGVwIHdlIGFyZSBzdGlsbCBzYWZlLlxuQEAgLTE0MzIyLDcgKzE0MzIzLDggQEAgc3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0X19zY2FsYXI2NF9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xuIFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xuIFxuLVx0ZHN0X3JlZy1cdTAwM2V2YXJfb2ZmID0gdG51bV9sc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCk7XG4rXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSAodW1pbl92YWwgPT0gdW1heF92YWwpID9cbitcdFx0XHQgICB0bnVtX2xzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKSA6IHRudW1fdW5rbm93bjtcbiBcdC8qIFdlIG1heSBsZWFybiBzb21ldGhpbmcgbW9yZSBmcm9tIHRoZSB2YXJfb2ZmICovXG4gXHRfX3VwZGF0ZV9yZWdfYm91bmRzKGRzdF9yZWcpO1xuIH1cbkBAIC0xNDM0OSw3ICsxNDM1MSw4IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0ICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LlxuIFx0ICovXG4gXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3JzaGlmdChzdWJyZWcsIHVtaW5fdmFsKTtcbitcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuK1x0XHRcdCAgIHRudW1fcnNoaWZ0KHN1YnJlZywgdW1pbl92YWwpIDogdG51bV91bmtub3duO1xuIFx0cmVnX3NldF91cmFuZ2UzMihkc3RfcmVnLCByZWdfdTMyX21pbihkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1heF92YWwsXG4gXHRcdFx0IHJlZ191MzJfbWF4KGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCk7XG4gXG5AQCAtMTQzNzcsNyArMTQzODAsOCBAQCBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9yc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHQgKiBhbmQgcmVseSBvbiBpbmZlcnJpbmcgbmV3IG9uZXMgZnJvbSB0aGUgdW5zaWduZWQgYm91bmRzIGFuZFxuIFx0ICogdmFyX29mZiBvZiB0aGUgcmVzdWx0LlxuIFx0ICovXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX3JzaGlmdChkc3RfcmVnLVx1MDAzZXZhcl9vZmYsIHVtaW5fdmFsKTtcbitcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9ICh1bWluX3ZhbCA9PSB1bWF4X3ZhbCkgP1xuK1x0XHRcdCAgIHRudW1fcnNoaWZ0KGRzdF9yZWctXHUwMDNldmFyX29mZiwgdW1pbl92YWwpIDogdG51bV91bmtub3duO1xuIFx0cmVnX3NldF91cmFuZ2U2NChkc3RfcmVnLCByZWdfdW1pbihkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1heF92YWwsXG4gXHRcdFx0IHJlZ191bWF4KGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCk7XG4gXG5AQCAtMTQzOTIsMTggKzE0Mzk2LDQxIEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9taW5fbWF4X3JzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBzdGF0aWMgdm9pZCBzY2FsYXIzMl9taW5fbWF4X2Fyc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXG4gXHRcdFx0XHQgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpzcmNfcmVnKVxuIHtcbi1cdHU2NCB1bWluX3ZhbCA9IHJlZ191MzJfbWluKHNyY19yZWcpO1xuK1x0dTMyIHVtaW5fc2hpZnQgPSByZWdfdTMyX21pbihzcmNfcmVnKTtcbitcdHUzMiB1bWF4X3NoaWZ0ID0gcmVnX3UzMl9tYXgoc3JjX3JlZyk7XG4rXHRzMzIgc21pbiA9IHJlZ19zMzJfbWluKGRzdF9yZWcpO1xuK1x0czMyIHNtYXggPSByZWdfczMyX21heChkc3RfcmVnKTtcbiBcbi1cdC8qIFVwb24gcmVhY2hpbmcgaGVyZSwgc3JjX2tub3duIGlzIHRydWUgYW5kXG4tXHQgKiB1bWF4X3ZhbCBpcyBlcXVhbCB0byB1bWluX3ZhbC5cbi1cdCAqIEJsb3cgYXdheSB0aGUgZHN0X3JlZyB1bWluX3ZhbHVlL3VtYXhfdmFsdWUgYW5kIHJlbHkgb25cbi1cdCAqIGRzdF9yZWcgdmFyX29mZiB0byByZWZpbmUgdGhlIHJlc3VsdC5cbitcdC8qXG4rXHQgKiBCUEZfQVJTSCBvbiAzMi1iaXQgc3VicmVnaXN0ZXIuIEFSU0ggaXMgYSBzaWduZWQgZGl2aWRlIGJ5XG4rXHQgKiAyXmsgKHJvdW5kaW5nIHRvd2FyZCAtaW5mIGZvciBuZWdhdGl2ZXMpLiBXaXRoIGEgbm9uLWNvbnN0YW50XG4rXHQgKiBzaGlmdCBpbiBbdW1pbiwgdW1heF0sIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSBkaXZpZGluZyB0aGVcbitcdCAqIGV4dHJlbWVzIG9mIFtzbWluLCBzbWF4XSBieSB0aGUgZXh0cmVtZXMgb2YgdGhlIGRpdmlzb3I6XG4rXHQgKlxuK1x0ICogICBzbWluIFx1MDAzZT0gMDogIFtzbWluIC8gMl51bWF4LCBzbWF4IC8gMl51bWluXVxuK1x0ICogICBzbWF4IFx1MDAzYyAgMDogIFtzbWluIC8gMl51bWluLCBzbWF4IC8gMl51bWF4XVxuK1x0ICogICBtaXhlZDogICAgICBbc21pbiAvIDJedW1pbiwgc21heCAvIDJedW1pbl1cbitcdCAqXG4rXHQgKiB2YXJfb2ZmIGlzIHRudW1fdW5rbm93biBzaW5jZSBhIG5vbi1jb25zdGFudCBzaGlmdCBwcmV2ZW50c1xuK1x0ICogcHJlY2lzZSBiaXQgdHJhY2tpbmcuXG4gXHQgKi9cbi1cdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZyxcbi1cdFx0XHQgKHUzMikoKChzMzIpcmVnX3MzMl9taW4oZHN0X3JlZykpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCksXG4tXHRcdFx0ICh1MzIpKCgoczMyKXJlZ19zMzJfbWF4KGRzdF9yZWcpKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwpKTtcbi1cbi1cdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fYXJzaGlmdCh0bnVtX3N1YnJlZyhkc3RfcmVnLVx1MDAzZXZhcl9vZmYpLCB1bWluX3ZhbCwgMzIpO1xuK1x0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xuK1x0XHRyZWdfc2V0X3NyYW5nZTMyKGRzdF9yZWcsICh1MzIpKHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpLFxuK1x0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpKTtcbitcdFx0ZHN0X3JlZy1cdTAwM2V2YXJfb2ZmID0gdG51bV9hcnNoaWZ0KHRudW1fc3VicmVnKGRzdF9yZWctXHUwMDNldmFyX29mZiksXG4rXHRcdFx0XHRcdFx0dW1pbl9zaGlmdCwgMzIpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKHNtaW4gXHUwMDNlPSAwKVxuK1x0XHRcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcdTAwM2VcdTAwM2UgdW1heF9zaGlmdCksXG4rXHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4rXHRcdGVsc2UgaWYgKHNtYXggXHUwMDNjIDApXG4rXHRcdFx0cmVnX3NldF9zcmFuZ2UzMihkc3RfcmVnLCAodTMyKShzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSxcbitcdFx0XHRcdFx0ICh1MzIpKHNtYXggXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQpKTtcbitcdFx0ZWxzZVxuK1x0XHRcdHJlZ19zZXRfc3JhbmdlMzIoZHN0X3JlZywgKHUzMikoc21pbiBcdTAwM2VcdTAwM2UgdW1pbl9zaGlmdCksXG4rXHRcdFx0XHRcdCAodTMyKShzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KSk7XG4rXHRcdGRzdF9yZWctXHUwMDNldmFyX29mZiA9IHRudW1fdW5rbm93bjtcbitcdH1cbiBcbiBcdF9fbWFya19yZWc2NF91bmJvdW5kZWQoZHN0X3JlZyk7XG4gXHRfX3VwZGF0ZV9yZWczMl9ib3VuZHMoZHN0X3JlZyk7XG5AQCAtMTQ0MTIsMTUgKzE0NDM5LDM3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcjMyX21pbl9tYXhfYXJzaChzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZyxcbiBzdGF0aWMgdm9pZCBzY2FsYXJfbWluX21heF9hcnNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxuIFx0XHRcdFx0c3RydWN0IGJwZl9yZWdfc3RhdGUgKnNyY19yZWcpXG4ge1xuLVx0dTY0IHVtaW5fdmFsID0gcmVnX3VtaW4oc3JjX3JlZyk7XG4rXHR1NjQgdW1pbl9zaGlmdCA9IHJlZ191bWluKHNyY19yZWcpO1xuK1x0dTY0IHVtYXhfc2hpZnQgPSByZWdfdW1heChzcmNfcmVnKTtcbitcdHM2NCBzbWluID0gcmVnX3NtaW4oZHN0X3JlZyk7XG4rXHRzNjQgc21heCA9IHJlZ19zbWF4KGRzdF9yZWcpO1xuIFxuLVx0LyogVXBvbiByZWFjaGluZyBoZXJlLCBzcmNfa25vd24gaXMgdHJ1ZSBhbmQgdW1heF92YWwgaXMgZXF1YWxcbi1cdCAqIHRvIHVtaW5fdmFsLlxuK1x0LypcbitcdCAqIEJQRl9BUlNIIChhcml0aG1ldGljIHJpZ2h0IHNoaWZ0KSBvbiA2NC1iaXQgcmVnaXN0ZXIuIFNpZ25lZFxuK1x0ICogZGl2aWRlIGJ5IDJeaywgcm91bmRpbmcgdG93YXJkIC1pbmYgZm9yIG5lZ2F0aXZlcy4gV2l0aCBhXG4rXHQgKiBub24tY29uc3RhbnQgc2hpZnQgaW4gW3VtaW4sIHVtYXhdLCB0aGUgcmVzdWx0IGlzIGJvdW5kZWRcbitcdCAqIGJ5IGRpdmlkaW5nIHRoZSBleHRyZW1lcyBvZiBbc21pbiwgc21heF0gYnkgdGhlIGV4dHJlbWVzXG4rXHQgKiBvZiB0aGUgZGl2aXNvcjpcbitcdCAqXG4rXHQgKiAgIHNtaW4gXHUwMDNlPSAwOiAgW3NtaW4gLyAyXnVtYXgsIHNtYXggLyAyXnVtaW5dXG4rXHQgKiAgIHNtYXggXHUwMDNjICAwOiAgW3NtaW4gLyAyXnVtaW4sIHNtYXggLyAyXnVtYXhdXG4rXHQgKiAgIG1peGVkOiAgICAgIFtzbWluIC8gMl51bWluLCBzbWF4IC8gMl51bWluXVxuK1x0ICpcbitcdCAqIHZhcl9vZmYgaXMgdG51bV91bmtub3duIHNpbmNlIGEgbm9uLWNvbnN0YW50IHNoaWZ0IHByZXZlbnRzXG4rXHQgKiBwcmVjaXNlIGJpdCB0cmFja2luZy5cbiBcdCAqL1xuLVx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCByZWdfc21pbihkc3RfcmVnKSBcdTAwM2VcdTAwM2UgdW1pbl92YWwsXG4tXHRcdFx0IHJlZ19zbWF4KGRzdF9yZWcpIFx1MDAzZVx1MDAzZSB1bWluX3ZhbCk7XG4tXG4tXHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX2Fyc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3ZhbCwgNjQpO1xuK1x0aWYgKHVtaW5fc2hpZnQgPT0gdW1heF9zaGlmdCkge1xuK1x0XHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQpO1xuK1x0XHRkc3RfcmVnLVx1MDAzZXZhcl9vZmYgPSB0bnVtX2Fyc2hpZnQoZHN0X3JlZy1cdTAwM2V2YXJfb2ZmLCB1bWluX3NoaWZ0LCA2NCk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAoc21pbiBcdTAwM2U9IDApXG4rXHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWF4X3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbitcdFx0ZWxzZSBpZiAoc21heCBcdTAwM2MgMClcbitcdFx0XHRyZWdfc2V0X3NyYW5nZTY0KGRzdF9yZWcsIHNtaW4gXHUwMDNlXHUwMDNlIHVtaW5fc2hpZnQsIHNtYXggXHUwMDNlXHUwMDNlIHVtYXhfc2hpZnQpO1xuK1x0XHRlbHNlXG4rXHRcdFx0cmVnX3NldF9zcmFuZ2U2NChkc3RfcmVnLCBzbWluIFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0LCBzbWF4IFx1MDAzZVx1MDAzZSB1bWluX3NoaWZ0KTtcbitcdFx0ZHN0X3JlZy1cdTAwM2V2YXJfb2ZmID0gdG51bV91bmtub3duO1xuK1x0fVxuIFxuIFx0LyogSXRzIG5vdCBlYXN5IHRvIG9wZXJhdGUgb24gYWx1MzIgYm91bmRzIGhlcmUgYmVjYXVzZSBpdCBkZXBlbmRzXG4gXHQgKiBvbiBiaXRzIGJlaW5nIHNoaWZ0ZWQgaW4gZnJvbSB1cHBlciAzMi1iaXRzLiBUYWtlIGVhc3kgd2F5IG91dFxuQEAgLTE0NTE2LDE0ICsxNDU2NSwxNCBAQCBzdGF0aWMgYm9vbCBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZShzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRjYXNlIEJQRl9NT0Q6XG4gXHRcdHJldHVybiBzcmNfaXNfY29uc3Q7XG4gXG4tXHQvKiBTaGlmdCBvcGVyYXRvcnMgcmFuZ2UgaXMgb25seSBjb21wdXRhYmxlIGlmIHNoaWZ0IGRpbWVuc2lvbiBvcGVyYW5kXG4tXHQgKiBpcyBhIGNvbnN0YW50LiBTaGlmdHMgZ3JlYXRlciB0aGFuIDMxIG9yIDYzIGFyZSB1bmRlZmluZWQuIFRoaXNcbi1cdCAqIGluY2x1ZGVzIHNoaWZ0cyBieSBhIG5lZ2F0aXZlIG51bWJlci5cbitcdC8qXG4rXHQgKiBTaGlmdHMgZ3JlYXRlciB0aGFuIDMxIG9yIDYzIGFyZSBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW91ci5cbitcdCAqIFRoaXMgaW5jbHVkZXMgc2hpZnRzIGJ5IGEgbmVnYXRpdmUgbnVtYmVyLlxuIFx0ICovXG4gXHRjYXNlIEJQRl9MU0g6XG4gXHRjYXNlIEJQRl9SU0g6XG4gXHRjYXNlIEJQRl9BUlNIOlxuLVx0XHRyZXR1cm4gKHNyY19pc19jb25zdCBcdTAwMjZcdTAwMjYgcmVnX3VtYXgoc3JjX3JlZykgXHUwMDNjIGluc25fYml0bmVzcyk7XG4rXHRcdHJldHVybiByZWdfdW1heChzcmNfcmVnKSBcdTAwM2MgaW5zbl9iaXRuZXNzO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9ib3VuZHMuY1xuaW5kZXggYmMwMzhhYzJkZjk4ZTIuLjUyYWUzZGM1OTM2MDBmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JvdW5kcy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYm91bmRzLmNcbkBAIC00ODIsNiArNDgyLDE3MyBAQCBsMF8lPTpcdC8qIGV4aXQgKi9cdFx0XHRcdFx0XFxcbiBcdDogX19jbG9iYmVyX2FsbCk7XG4gfVxuIFxuKyNkZWZpbmUgU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKG5hbWUsIGRlc2MsIHJhbmQsIGRzdCwgc3JjLCBvcCwgc3JjX2FkZCwgZHN0X2luaXQsIG1zZykgXFxcbitcdFNFQyhcInNvY2tldFwiKVx0XHRcdFx0XHRcXFxuK1x0X19kZXNjcmlwdGlvbihkZXNjKVx0XHRcdFx0XFxcbitcdF9fc3VjY2VzcyBfX2xvZ19sZXZlbCgyKVx0XHRcdFxcXG4rXHRfX21zZygjZHN0IFwiIFwiIG9wIFwiIFwiICNzcmMgXCIge3suKn19OyBcIiBtc2cpXHRcXFxuK1x0X19uYWtlZCB2b2lkIG5hbWUodm9pZClcdFx0XHRcdFxcXG4rXHR7XHRcdFx0XHRcdFx0XFxcbitcdFx0YXNtIHZvbGF0aWxlIChcIlx0XHRcdFx0XFxcbitcdFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcXFxuK1x0XHRcIiAjc3JjIFwiID0gXCIgI3JhbmQgXCI7XHRcdFx0XFxcbitcdFx0XCIgI3NyYyBcIiBcdTAwMjY9IDM7XHRcdFx0XHRcXFxuK1x0XHRcIiAjc3JjIFwiICs9IFwiICNzcmNfYWRkIFwiO1x0XHRcXFxuK1x0XHRcIiAjZHN0IFwiID0gXCIgI2RzdF9pbml0IFwiO1x0XHRcXFxuK1x0XHRcIiAjZHN0IFwiIFwiIG9wIFwiIFwiICNzcmMgXCI7XHRcdFxcXG4rXHRcdGV4aXQ7XHRcdFx0XHRcdFxcXG4rXCJcdFx0OjogX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMilcdFx0XFxcbitcdFx0OiBfX2Nsb2JiZXJfYWxsKTtcdFx0XHRcXFxuK1x0fVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzIsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxlZnQgc2hpZnRcIixcbitcdHcwLCB3MSwgdzIsIFwiXHUwMDNjXHUwMDNjPVwiLCAxLCAxLFxuK1x0XCJSMT1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MixzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xNix2YXJfb2ZmPSgweDA7IDB4MWYpKVwiXG4rKVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19sc2hfMzJfb3ZlcmZsb3csXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGxzaCB3aXRoIG92ZXJmbG93IHNyY1wiLFxuK1x0dzAsIHcxLCB3MiwgXCJcdTAwM2NcdTAwM2M9XCIsIDMyLCAxLFxuK1x0XCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MzIsc21heD11bWF4PXNtYXgzMj11bWF4MzI9MzUsdmFyX29mZj0oMHgyMDsgMHgzKSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCByaWdodCBzaGlmdFwiLFxuK1x0dzAsIHcxLCB3MiwgXCJcdTAwM2VcdTAwM2U9XCIsIDEsIDB4ZmYsXG4rXHRcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0xNSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj0xMjcsdmFyX29mZj0oMHgwOyAweDdmKSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfcnNoXzMyX292ZXJmbG93LFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCByc2ggd2l0aCBvdmVyZmxvdyBzcmNcIixcbitcdHcwLCB3MSwgdzIsIFwiXHUwMDNlXHUwMDNlPVwiLCAzMiwgMSxcbitcdFwiUjE9c2NhbGFyKCkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTMyLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTM1LHZhcl9vZmY9KDB4MjA7IDB4MykpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzIsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgMzItYml0IGFyaXRobWV0aWMgc2hpZnRcIixcbitcdHcwLCB3MSwgdzIsIFwic1x1MDAzZVx1MDAzZT1cIiwgMSwgLTgsXG4rXHRcIlIxPXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZmMsc21heD11bWF4PTB4ZmZmZmZmZmYsc21pbjMyPS00LHNtYXgzMj0tMSx2YXJfb2ZmPSgweGZmZmZmZmZjOyAweDMpKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9MSxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF8zMl9vdmVyZmxvdyxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIG92ZXJmbG93IHNyY1wiLFxuK1x0dzAsIHcxLCB3MiwgXCJzXHUwMDNlXHUwMDNlPVwiLCAzMiwgMSxcbitcdFwiUjE9c2NhbGFyKCkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTMyLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTM1LHZhcl9vZmY9KDB4MjA7IDB4MykpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NCxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbGVmdCBzaGlmdFwiLFxuK1x0cjAsIHIxLCByMiwgXCJcdTAwM2NcdTAwM2M9XCIsIDEsIDEsXG4rXHRcIlIxPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj0yLHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTE2LHZhcl9vZmY9KDB4MDsgMHgxZikpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2xzaF82NF9vdmVyZmxvdyxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgbHNoIHdpdGggb3ZlcmZsb3cgc3JjXCIsXG4rXHRyMCwgcjEsIHIyLCBcIlx1MDAzY1x1MDAzYz1cIiwgNjQsIDEsXG4rXHRcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwiXG4rKVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjQsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IHJpZ2h0IHNoaWZ0XCIsXG4rXHRyMCwgcjEsIHIyLCBcIlx1MDAzZVx1MDAzZT1cIiwgMSwgMHhmZixcbitcdFwiUjE9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTE1LHNtYXg9dW1heD1zbWF4MzI9dW1heDMyPTEyNyx2YXJfb2ZmPSgweDA7IDB4N2YpKVwiXG4rKVxuK1xuK1NISUZUX05PTl9DT05TVF9TUkNfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19yc2hfNjRfb3ZlcmZsb3csXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IHJzaCB3aXRoIG92ZXJmbG93IHNyY1wiLFxuK1x0cjAsIHIxLCByMiwgXCJcdTAwM2VcdTAwM2U9XCIsIDY0LCAxLFxuK1x0XCJSMT1zY2FsYXIoKSBSMj1zY2FsYXIoc21pbj11bWluPXNtaW4zMj11bWluMzI9NjQsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NjcsdmFyX29mZj0oMHg0MDsgMHgzKSlcIlxuKylcbitcbitTSElGVF9OT05fQ09OU1RfU1JDX1RFU1QoXG4rXHRzaGlmdF93aXRoX25vbl9jb25zdF9zcmNfYXJzaF82NCxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCA2NC1iaXQgYXJpdGhtZXRpYyBzaGlmdFwiLFxuK1x0cjAsIHIxLCByMiwgXCJzXHUwMDNlXHUwMDNlPVwiLCAxLCAtOCxcbitcdFwiUjE9c2NhbGFyKHNtaW49c21pbjMyPS00LHNtYXg9c21heDMyPS0xLHVtaW49MHhmZmZmZmZmZmZmZmZmZmZjLHVtaW4zMj0weGZmZmZmZmZjLHZhcl9vZmY9KDB4ZmZmZmZmZmZmZmZmZmZmYzsgMHgzKSkgUjI9c2NhbGFyKHNtaW49dW1pbj1zbWluMzI9dW1pbjMyPTEsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXCJcbispXG4rXG4rU0hJRlRfTk9OX0NPTlNUX1NSQ19URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfb3ZlcmZsb3csXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBvdmVyZmxvdyBzcmNcIixcbitcdHIwLCByMSwgcjIsIFwic1x1MDAzZVx1MDAzZT1cIiwgNjQsIDEsXG4rXHRcIlIxPXNjYWxhcigpIFIyPXNjYWxhcihzbWluPXVtaW49c21pbjMyPXVtaW4zMj02NCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj02Nyx2YXJfb2ZmPSgweDQwOyAweDMpKVwiXG4rKVxuK1xuKyNkZWZpbmUgU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChuYW1lLCBkZXNjLCByYW5kLCBkc3QsIHNyYywgZHN0X21hc2ssIGRzdF9kZWx0YSwgbXNnKSBcXFxuK1x0U0VDKFwic29ja2V0XCIpXHRcdFx0XHRcdFxcXG4rXHRfX2Rlc2NyaXB0aW9uKGRlc2MpXHRcdFx0XHRcXFxuK1x0X19zdWNjZXNzIF9fbG9nX2xldmVsKDIpXHRcdFx0XFxcbitcdF9fbXNnKCNkc3QgXCIgc1x1MDAzZVx1MDAzZT0gXCIgI3NyYyBcIiB7ey4qfX07IHt7Lip9fSBcIiBtc2cpXFxcbitcdF9fbmFrZWQgdm9pZCBuYW1lKHZvaWQpXHRcdFx0XHRcXFxuK1x0e1x0XHRcdFx0XHRcdFxcXG4rXHRcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFxcXG4rXHRcdGNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTtcdFx0XFxcbitcdFx0XCIgI2RzdCBcIiA9IFwiICNyYW5kIFwiO1x0XHRcdFxcXG4rXHRcdFwiICNkc3QgXCIgXHUwMDI2PSBcIiAjZHN0X21hc2sgXCI7XHRcdFxcXG4rXHRcdFwiICNkc3QgXCIgKz0gXCIgI2RzdF9kZWx0YSBcIjtcdFx0XFxcbitcdFx0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcXFxuK1x0XHRcIiAjc3JjIFwiID0gXCIgI3JhbmQgXCI7XHRcdFx0XFxcbitcdFx0XCIgI3NyYyBcIiBcdTAwMjY9IDE7XHRcdFx0XHRcXFxuK1x0XHRcIiAjc3JjIFwiICs9IDE7XHRcdFx0XHRcXFxuK1x0XHRcIiAjZHN0IFwiIHNcdTAwM2VcdTAwM2U9IFwiICNzcmMgXCI7XHRcdFx0XFxcbitcdFx0ZXhpdDtcdFx0XHRcdFx0XFxcbitcIlx0XHQ6OiBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKVx0XHRcXFxuK1x0XHQ6IF9fY2xvYmJlcl9hbGwpO1x0XHRcdFxcXG4rXHR9XG4rXG4rU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX3BvcyxcbitcdFwiYm91bmRzIGNoZWNrIGFmdGVyIG5vbi1jb25zdCAzMi1iaXQgYXJzaCB3aXRoIHBvc2l0aXZlIGRzdFwiLFxuK1x0dzAsIHc2LCB3MiwgNywgMSxcbitcdFwiUjY9c2NhbGFyKHNtaW49c21pbjMyPTAsc21heD11bWF4PXNtYXgzMj11bWF4MzI9NCx2YXJfb2ZmPSgweDA7IDB4NykpXCJcbispXG4rXG4rU0hJRlRfQVJTSF9EU1RfUkFOR0VfVEVTVChcbitcdHNoaWZ0X3dpdGhfbm9uX2NvbnN0X3NyY19hcnNoXzMyX21peGVkLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbWl4ZWQtc2lnbiBkc3RcIixcbitcdHcwLCB3NiwgdzIsIDE1LCAtOCxcbitcdFwiUjY9c2NhbGFyKHNtaW49MCxzbWF4PXVtYXg9MHhmZmZmZmZmZixzbWluMzI9LTQsc21heDMyPTMsdmFyX29mZj0oMHgwOyAweGZmZmZmZmZmKSlcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfMzJfbmVnLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDMyLWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XCIsXG4rXHR3MCwgdzYsIHcyLCA4LCAtMTYsXG4rXHRcIlI2PXNjYWxhcihzbWluPXVtaW49dW1pbjMyPTB4ZmZmZmZmZjgsc21heD11bWF4PXVtYXgzMj0weGZmZmZmZmZlLHNtaW4zMj0tOCxzbWF4MzI9LTIsdmFyX29mZj0oMHhmZmZmZmZmODsgMHg3KSlcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfcG9zLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggcG9zaXRpdmUgZHN0XCIsXG4rXHRyMCwgcjYsIHIyLCA3LCAxLFxuK1x0XCJSNj1zY2FsYXIoc21pbj1zbWluMzI9MCxzbWF4PXVtYXg9c21heDMyPXVtYXgzMj00LHZhcl9vZmY9KDB4MDsgMHg3KSlcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbWl4ZWQsXG4rXHRcImJvdW5kcyBjaGVjayBhZnRlciBub24tY29uc3QgNjQtYml0IGFyc2ggd2l0aCBtaXhlZC1zaWduIGRzdFwiLFxuK1x0cjAsIHI2LCByMiwgMTUsIC04LFxuK1x0XCJSNj1zY2FsYXIoc21pbj1zbWluMzI9LTQsc21heD1zbWF4MzI9MylcIlxuKylcbitcbitTSElGVF9BUlNIX0RTVF9SQU5HRV9URVNUKFxuK1x0c2hpZnRfd2l0aF9ub25fY29uc3Rfc3JjX2Fyc2hfNjRfbmVnLFxuK1x0XCJib3VuZHMgY2hlY2sgYWZ0ZXIgbm9uLWNvbnN0IDY0LWJpdCBhcnNoIHdpdGggbmVnYXRpdmUgZHN0XCIsXG4rXHRyMCwgcjYsIHIyLCA4LCAtMTYsXG4rXHRcIlI2PXNjYWxhcihzbWluPXNtaW4zMj0tOCxzbWF4PXNtYXgzMj0tMix1bWluPTB4ZmZmZmZmZmZmZmZmZmZmOCx1bWF4PTB4ZmZmZmZmZmZmZmZmZmZmZSx1bWluMzI9MHhmZmZmZmZmOCx1bWF4MzI9MHhmZmZmZmZmZSx2YXJfb2ZmPSgweGZmZmZmZmZmZmZmZmZmZjg7IDB4NykpXCJcbispXG4rXG4gU0VDKFwic29ja2V0XCIpXG4gX19kZXNjcmlwdGlvbihcImJvdW5kcyBjaGVjayBhZnRlciAzMi1iaXQgcmlnaHQgc2hpZnQgd2l0aCA2NC1iaXQgaW5wdXRcIilcbiBfX2ZhaWx1cmUgX19tc2coXCJtYXRoIGJldHdlZW4gbWFwX3ZhbHVlIHBvaW50ZXIgYW5kIDQyOTQ5NjcyOTQgaXMgbm90IGFsbG93ZWRcIilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjA3LjYxMjg5NDIxNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NTI0MTAzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgaG93IHRoZSBCUEYgdmVyaWZpZXIgaGFuZGxlcyBib3VuZHMgdHJhY2tpbmcgZm9yIHNoaWZ0IG9wZXJhdGlvbnMg4oCTIGxlZnQgc2hpZnQgKExTSCksIHJpZ2h0IHNoaWZ0IChSU0gpLCBhbmQgYXJpdGhtZXRpYyByaWdodCBzaGlmdCAoQVJTSCkg4oCTIHdoZW4gdGhlIHNoaWZ0ICphbW91bnQqIGlzbid0IGEgZml4ZWQgY29uc3RhbnQsIGJ1dCBhIHJhbmdlLiAgUHJldmlvdXNseSwgSSByZWNhbGwgdGhlIHZlcmlmaWVyIG5lZWRlZCBhIGNvbnN0YW50IHNoaWZ0IGFtb3VudCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiAgVGhpcyBjaGFuZ2Ugc2VlbXMgdG8gcmVsYXggdGhhdCByZXF1aXJlbWVudCwgYWxsb3dpbmcgZm9yIGEgc2hpZnQgYW1vdW50IHJhbmdlICh3aGVyZSBgdW1pbl92YWwgIT0gdW1heF92YWxgKSBhbmQgYWRqdXN0aW5nIHRoZSBib3VuZHMgY2FsY3VsYXRpb24gYWNjb3JkaW5nbHkuXG5cblRoZSBrZXkgaXMgdGhhdCB0aGUgYGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlYCBmdW5jdGlvbiBpcyBhbHNvIGJlaW5nIHVwZGF0ZWQgdG8gbm93IHJldHVybiB0cnVlIGZvciBub24tY29uc3RhbnQgc2hpZnRzLCBhcyBsb25nIGFzIHRoZSBtYXhpbXVtIHNoaWZ0IGFtb3VudCBpcyBsZXNzIHRoYW4gdGhlIGJpdCB3aWR0aCwgZWl0aGVyIDMyIG9yIDY0LiBUaGF0J3MgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLCBJIGNhbiBzZWUgaG93IGl0IGhlbHBzIHRvIGNvbXB1dGUgdGhlc2UgYm91bmRzIGNvcnJlY3RseS5cblxuVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgdmVyaWZpZXIgaXMgYW4gaW5jcmVkaWJseSBjcml0aWNhbCBhbmQgZnJlcXVlbnRseS1hY2Nlc3NlZCBjb21wb25lbnQgb2YgdGhlIGtlcm5lbCwgc28gdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIHNlcmlvdXMgZnV6emluZy4gV2UgaGF2ZSB0byBiZSBtZXRpY3Vsb3VzIGhlcmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBleGFjdCBmdW5jdGlvbnMgdGhhdCBhcmUgZ2V0dGluZyBtb2RpZmllZC4gTG9va3MgbGlrZSBpdCdzIGltcGFjdGluZyB0aGVzZTogYHNjYWxhcjMyX21pbl9tYXhfbHNoYCwgYHNjYWxhcl9taW5fbWF4X2xzaGAsIGBzY2FsYXIzMl9taW5fbWF4X3JzaGAsIGBzY2FsYXJfbWluX21heF9yc2hgLCBgc2NhbGFyMzJfbWluX21heF9hcnNoYCwgYHNjYWxhcl9taW5fbWF4X2Fyc2hgLCBhbmQgYWxzbyBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgLiBHb3QgaXQuXG5cbkZvciBjb25maWd1cmF0aW9uLCBgQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHRoZSBvYnZpb3VzIG9uZS4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBpcyB0aGUgb25seSBvbmUgcmVxdWlyZWQgZm9yIHRoZSByZWxldmFudCBjb2RlIHRvIGJlIGNvbXBpbGVkLiBJIHdpbGwgY29uZmlybSB0aGF0IGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg4MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjE0LjM2NTMwNzczMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTcyNjQ0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmVyaWZpZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MTQuNTYyNTc4MzIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxMDU3MTMxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlybWluZyB0aGUgQlBGIFN5c2NhbGwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHllcywgYmFzZWQgb24gd2hhdCBJIGtub3csIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBsb29raW5nIGZvci4gVGhhdCBzZWVtcyByaWdodC4gTm93LCBsZXQncyBkaXZlIGluIGFuZCBjb25maXJtIHRoaXMuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGltcGFjdHMgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5LiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgaG93IHRoaW5ncyBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgd2hlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4ODMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNDowMToyNi42NjgyOTQ3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY3MDcyNzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjYWxhcjMyX21pbl9tYXhfbHNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQyMzk9c3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfeG9yKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0MjU2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDI1NzpzdGF0aWMgdm9pZCBfX3NjYWxhcjMyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI1OC1cXHRcXHRcXHRcXHQgICB1NjQgdW1pbl92YWwsIHU2NCB1bWF4X3ZhbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNzE6c3RhdGljIHZvaWQgc2NhbGFyMzJfbWluX21heF9sc2goc3RydWN0IGJwZl9yZWdfc3RhdGUgKmRzdF9yZWcsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0MjcyLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqc3JjX3JlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI3OC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQyNzk6XFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDI4MC1cXHRkc3RfcmVnLVxcdTAwM2V2YXJfb2ZmID0gKHVtaW5fdmFsID09IHVtYXhfdmFsKSA/XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQzMTY9c3RhdGljIHZvaWQgc2NhbGFyX21pbl9tYXhfbHNoKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0MzIzLVxcdF9fc2NhbGFyNjRfbWluX21heF9sc2goZHN0X3JlZywgdW1pbl92YWwsIHVtYXhfdmFsKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQzMjQ6XFx0X19zY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCB1bWluX3ZhbCwgdW1heF92YWwpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDMyNS1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDYxND1zdGF0aWMgaW50IGFkanVzdF9zY2FsYXJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ3MzAtXFx0XFx0aWYgKGFsdTMyKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDczMTpcXHRcXHRcXHRzY2FsYXIzMl9taW5fbWF4X2xzaChkc3RfcmVnLCBcXHUwMDI2c3JjX3JlZyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NzMyLVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6MjguMzM1MzcyMzEzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5NTE5MDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIHNlZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhvc2UgZnVuY3Rpb25zOiBgc2NhbGFyMzJfbWluX21heF9sc2hgLCBgc2NhbGFyX21pbl9tYXhfbHNoYCwgYHNjYWxhcjMyX21pbl9tYXhfcnNoYCwgYHNjYWxhcl9taW5fbWF4X3JzaGAsIGBzY2FsYXIzMl9taW5fbWF4X2Fyc2hgLCBgc2NhbGFyX21pbl9tYXhfYXJzaGAsIGFyZSBhbGwgc3Ryb25nIGNvbnRlbmRlcnMgZm9yIGluY2x1c2lvbiBpbiBgRm9jdXNTeW1ib2xzYC4gVGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy4gQnV0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgYGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlYCBiZWZvcmUgSSBnbyBmdXJ0aGVyLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjczLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE0OjAxOjMzLjEzMDU2NTg2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIzMTQwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDQ4Mj1zdGF0aWMgdm9pZCBzY2FsYXJfYnl0ZV9zd2FwKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ1MzAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NTMxOnN0YXRpYyBib29sIGlzX3NhZmVfdG9fY29tcHV0ZV9kc3RfcmVnX3JhbmdlKHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ1MzItXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqc3JjX3JlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDYxND1zdGF0aWMgaW50IGFkanVzdF9zY2FsYXJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ2MjMtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NjI0OlxcdGlmICghaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2UoaW5zbiwgXFx1MDAyNnNyY19yZWcpKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NjI1LVxcdFxcdF9fbWFya19yZWdfdW5rbm93bihlbnYsIGRzdF9yZWcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNDowMTozMy4yNDI4ODgzNjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM3MjY2OTc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFZlcmlmaWFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgaXNfc2FmZV90b19jb21wdXRlX2RzdF9yZWdfcmFuZ2VgIHNlZW1zIGxpa2UgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gY29uc2lkZXIsIGJ1dCBsZXQncyBmaXJzdCBlbnN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYXQgdGhlIHBhdGNoLCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIHRoZSBhc3NvY2lhdGVkIHNlbGZ0ZXN0cy4gVGhlIHNlbGZ0ZXN0cyBhcmUganVzdCB2YWxpZGF0aW9uIGNoZWNrcywgc28gdGhleSBkb24ndCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBUaGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzIHNxdWFyZWx5IHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGhlcmUuXG5cbk5vdywgbGV0J3MgYXJ0aWN1bGF0ZSB0aGUgY29yZSByZWFzb25pbmcgZm9yIHRoZSBmdXp6aW5nIHJlcXVpcmVtZW50LiBUaGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBCUEYgdmVyaWZpZXIgdG8gaGFuZGxlIGJvdW5kcyB0cmFja2luZyBmb3Igc2hpZnQgb3BlcmF0aW9ucyAoTFNILCBSU0gsIEFSU0gpIHdoZXJlIHRoZSBzaGlmdCAqYW1vdW50KiBpc24ndCBhIGNvbnN0YW50LCBidXQgYSByYW5nZS4gVGhpcyBpbnRyb2R1Y2VzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY3JpdGljYWwgYW5kIGZyZXF1ZW50bHkgYWNjZXNzZWQgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyIGxvZ2ljLiBDb25zZXF1ZW50bHksIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIGRldGVjdCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHRoZSBuZXcgYm91bmRzIHRyYWNraW5nIG1lY2hhbmlzbS5cblxuV2UgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgc2NhbGFyMzJfbWluX21heF9sc2hgLCBgc2NhbGFyX21pbl9tYXhfbHNoYCwgYHNjYWxhcjMyX21pbl9tYXhfcnNoYCwgYHNjYWxhcl9taW5fbWF4X3JzaGAsIGBzY2FsYXIzMl9taW5fbWF4X2Fyc2hgLCBgc2NhbGFyX21pbl9tYXhfYXJzaGAgYW5kIGBpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZWAuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2suIE9rYXksIGBzY2FsYXIzMl9taW5fbWF4X2xzaGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW1wYWN0ZWQ/IEhtbSwgaXQgbG9va3MgbGlrZSBgX19zY2FsYXIzMl9taW5fbWF4X2xzaGAgd2Fzbid0IG1vZGlmaWVkLCBidXQgYHNjYWxhcjMyX21pbl9tYXhfbHNoYCB3YXMuXG5cbkFscmlnaHQsIHRpbWUgdG8gbG9nIHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI1OCwiT3V0cHV0VG9rZW5zIjoyMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTQ6MDE6NDMuNjE1NTYxOTM1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcwMTA5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NhbGFyMzJfbWluX21heF9sc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X2xzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9yc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X3JzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9hcnNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9hcnNoXCIsXG4gICAgXCJpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc3VwcG9ydCB0cmFja2luZyBib3VuZHMgZm9yIHNoaWZ0IG9wZXJhdGlvbnMgKExTSCwgUlNILCBBUlNIKSB3aGVuIHRoZSBzaGlmdCBhbW91bnQgaXMgbm90IGEgY29uc3RhbnQsIGJ1dCBhIHJhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGhpZ2hseSByZWFjaGFibGUgYW5kIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2NhbGFyMzJfbWluX21heF9sc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X2xzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9yc2hcIixcbiAgICBcInNjYWxhcl9taW5fbWF4X3JzaFwiLFxuICAgIFwic2NhbGFyMzJfbWluX21heF9hcnNoXCIsXG4gICAgXCJzY2FsYXJfbWluX21heF9hcnNoXCIsXG4gICAgXCJpc19zYWZlX3RvX2NvbXB1dGVfZHN0X3JlZ19yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc3VwcG9ydCB0cmFja2luZyBib3VuZHMgZm9yIHNoaWZ0IG9wZXJhdGlvbnMgKExTSCwgUlNILCBBUlNIKSB3aGVuIHRoZSBzaGlmdCBhbW91bnQgaXMgbm90IGEgY29uc3RhbnQsIGJ1dCBhIHJhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGhpZ2hseSByZWFjaGFibGUgYW5kIGNyaXRpY2FsIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmNvcnJlY3QgYm91bmRzIHRyYWNraW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowtvjgr[1] Phase: Succeeded StartedAt: 2026-06-23 14:02:58 +0000 UTC FinishedAt: 2026-06-23 14:02:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 14:02:58 +0000 UTC FinishedAt: 2026-06-23 14:02:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2] Phase: Succeeded StartedAt: 2026-06-23 14:02:58 +0000 UTC FinishedAt: 2026-06-23 18:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 14:02:58 +0000 UTC FinishedAt: 2026-06-23 18:10:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 14:02:58 +0000 UTC FinishedAt: 2026-06-23 14:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 14:02:58 +0000 UTC FinishedAt: 2026-06-23 14:03:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtvjgr/series-workflowtvjgr-convert-artifact-1967429490/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 14:03:08 +0000 UTC FinishedAt: 2026-06-23 14:28:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 14:03:08 +0000 UTC FinishedAt: 2026-06-23 14:28:23 +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:*28765a45-a024-487a-8537-7d2f3febe5c3,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-workflowtvjgr/series-workflowtvjgr-convert-artifact-1967429490/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": "67c3aee2-5574-4b0a-8ea0-671f815750d3", "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-workflowtvjgr/series-workflowtvjgr-build-action-70655728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 14:03:08 +0000 UTC FinishedAt: 2026-06-23 14:28:13 +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:*28765a45-a024-487a-8537-7d2f3febe5c3,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-workflowtvjgr/series-workflowtvjgr-convert-artifact-1967429490/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": "67c3aee2-5574-4b0a-8ea0-671f815750d3", "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-workflowtvjgr/series-workflowtvjgr-build-action-70655728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 14:28:23 +0000 UTC FinishedAt: 2026-06-23 14:28:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 14:28:23 +0000 UTC FinishedAt: 2026-06-23 14:28:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 14:28:23 +0000 UTC FinishedAt: 2026-06-23 14:28:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 14:28:23 +0000 UTC FinishedAt: 2026-06-23 14:28:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtvjgr/series-workflowtvjgr-convert-artifact-2254102669/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 14:28:33 +0000 UTC FinishedAt: 2026-06-23 14:30:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 14:28:33 +0000 UTC FinishedAt: 2026-06-23 14:30:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*67c3aee2-5574-4b0a-8ea0-671f815750d3,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-workflowtvjgr/series-workflowtvjgr-build-action-70655728/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-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 14:30:26 +0000 UTC FinishedAt: 2026-06-23 14:30:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 14:30:26 +0000 UTC FinishedAt: 2026-06-23 14:30:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 14:30:26 +0000 UTC FinishedAt: 2026-06-23 15:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 14:30:26 +0000 UTC FinishedAt: 2026-06-23 15:03:45 +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:*28765a45-a024-487a-8537-7d2f3febe5c3,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-workflowtvjgr/series-workflowtvjgr-convert-artifact-2254102669/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": "19d78ed8-5cca-4ec7-8dca-55a8d7f7d376", "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-workflowtvjgr/series-workflowtvjgr-build-action-411790953/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 14:30:26 +0000 UTC FinishedAt: 2026-06-23 15:02:35 +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:*28765a45-a024-487a-8537-7d2f3febe5c3,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-workflowtvjgr/series-workflowtvjgr-convert-artifact-2254102669/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": "19d78ed8-5cca-4ec7-8dca-55a8d7f7d376", "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-workflowtvjgr/series-workflowtvjgr-build-action-411790953/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 15:03:45 +0000 UTC FinishedAt: 2026-06-23 15:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 15:03:45 +0000 UTC FinishedAt: 2026-06-23 15:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 15:03:45 +0000 UTC FinishedAt: 2026-06-23 15:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 15:03:45 +0000 UTC FinishedAt: 2026-06-23 15:05:28 +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:*19d78ed8-5cca-4ec7-8dca-55a8d7f7d376,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-workflowtvjgr/series-workflowtvjgr-build-action-411790953/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-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 18:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 18:10:44 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"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:*67c3aee2-5574-4b0a-8ea0-671f815750d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*19d78ed8-5cca-4ec7-8dca-55a8d7f7d376,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-workflowtvjgr/series-workflowtvjgr-build-action-70655728/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-workflowtvjgr/series-workflowtvjgr-build-action-411790953/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 15:07:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 15:06:14 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"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-workflowtvjgr/series-workflowtvjgr-convert-artifact-3344669042/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 15:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 15:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 15:05:38 +0000 UTC FinishedAt: 2026-06-23 15:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-23 15:07:18 +0000 UTC FinishedAt: 2026-06-23 18:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvjgr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["scalar32_min_max_lsh","scalar_min_max_lsh","scalar32_min_max_rsh","scalar_min_max_rsh","scalar32_min_max_arsh","scalar_min_max_arsh","is_safe_to_compute_dst_reg_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a975094bf98ca97be9146f9d3b5681a6f9cf5ce3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ae956cb1-71bf-46b5-ba98-6b37bb511c58","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-23 15:07:18 +0000 UTC FinishedAt: 2026-06-23 18:10:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*67c3aee2-5574-4b0a-8ea0-671f815750d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*19d78ed8-5cca-4ec7-8dca-55a8d7f7d376,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-workflowtvjgr/series-workflowtvjgr-build-action-70655728/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-workflowtvjgr/series-workflowtvjgr-build-action-411790953/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-workflowtvjgr/series-workflowtvjgr-convert-artifact-3344669042/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,}