Name: series-workflow598sm Phase: Succeeded StartedAt: 2026-07-23 00:08:03 +0000 UTC FinishedAt: 2026-07-23 05:12:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[0] Phase: Succeeded StartedAt: 2026-07-23 00:08:03 +0000 UTC FinishedAt: 2026-07-23 00:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 00:08:03 +0000 UTC FinishedAt: 2026-07-23 00:46:07 +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": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "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": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "91e57a35-b45b-4a8c-a44f-4ba29a9f17b0" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "adjust_ptr_min_max_vals", "adjust_reg_min_max_vals" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMmIzM0OywKICAgICYjMzQ7YWRqdXN0X3JlZ19taW5fbWF4X3ZhbHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBgc2NhbGFyICYjNDM7PSBwb2ludGVyYCBvcGVyYXRpb25zIGRpZCBub3QgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGUgY29tcGxldGUgcG9pbnRlciByZWdpc3RlciBzdGF0ZSB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkODhjYjJkMzk4ZTAyMDkxMzQzNDg2MTdkODM5MDlmYzhjMzAzMjA1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDA6NDU6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA1MmJlMGExMThjY2UwNy4uMThmYjYyNjc2OTJjNWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTEzNzI2LDExICYjNDM7MTM3MjYsMTQgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0czY0IHNtaW5fdmFsID0gcmVnX3NtaW4ob2ZmX3JlZyksIHNtYXhfdmFsID0gcmVnX3NtYXgob2ZmX3JlZyk7XG4gXHR1NjQgdW1pbl92YWwgPSByZWdfdW1pbihvZmZfcmVnKSwgdW1heF92YWwgPSByZWdfdW1heChvZmZfcmVnKTtcbiBcdHN0cnVjdCBicGZfc2FuaXRpemVfaW5mbyBpbmZvID0ge307XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKm9yaWdfb2ZmX3JlZyA9IG9mZl9yZWc7XG4mIzQzO1x0Ym9vbCBwdHJfaXNfZHN0X3JlZztcbiBcdHU4IG9wY29kZSA9IEJQRl9PUChpbnNuLVx1MDAzZWNvZGUpO1xuIFx0dTMyIGRzdCA9IGluc24tXHUwMDNlZHN0X3JlZztcbiBcdGludCByZXQsIGJvdW5kc19yZXQ7XG4gXG4gXHRkc3RfcmVnID0gXHUwMDI2cmVnc1tkc3RdO1xuJiM0MztcdHB0cl9pc19kc3RfcmVnID0gcHRyX3JlZyA9PSBkc3RfcmVnO1xuIFxuIFx0aWYgKChrbm93biBcdTAwMjZcdTAwMjYgKHNtaW5fdmFsICE9IHNtYXhfdmFsIHx8IHVtaW5fdmFsICE9IHVtYXhfdmFsKSkgfHxcbiBcdCAgICBzbWluX3ZhbCBcdTAwM2Ugc21heF92YWwgfHwgdW1pbl92YWwgXHUwMDNlIHVtYXhfdmFsKSB7XG5AQCAtMTM3NjAsMTMgJiM0MzsxMzc2Myw2IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0cmV0dXJuIC1FQUNDRVM7XG4gXHR9XG4gXG4tXHQvKlxuLVx0ICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZVxuLVx0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuXG4tXHQgKi9cbi1cdGlmIChiYXNlX3R5cGUocHRyX3JlZy1cdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFx1MDAyNlx1MDAyNiAocHRyX3JlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRzd2l0Y2ggKGJhc2VfdHlwZShwdHJfcmVnLVx1MDAzZXR5cGUpKSB7XG4gXHRjYXNlIFBUUl9UT19DVFg6XG4gXHRjYXNlIFBUUl9UT19NQVBfVkFMVUU6XG5AQCAtMTM3OTYsMTEgJiM0MzsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuLVx0LyogSW4gY2FzZSBvZiAmIzM5O3NjYWxhciAmIzQzOz0gcG9pbnRlciYjMzk7LCBkc3RfcmVnIGluaGVyaXRzIHBvaW50ZXIgdHlwZSBhbmQgaWQuXG4tXHQgKiBUaGUgaWQgbWF5IGJlIG92ZXJ3cml0dGVuIGxhdGVyIGlmIHdlIGNyZWF0ZSBhIG5ldyB2YXJpYWJsZSBvZmZzZXQuXG4mIzQzO1x0LyogRm9yICYjMzk7c2NhbGFyICYjNDM7PSBwb2ludGVyJiMzOTssIGRzdF9yZWcgaW5oZXJpdHMgdGhlIGNvbXBsZXRlIHBvaW50ZXJcbiYjNDM7XHQgKiByZWdpc3RlciBzdGF0ZS4gSW5kaXZpZHVhbCBmaWVsZHMgbWF5IGJlIGFkanVzdGVkIGxhdGVyIGJ5IHBvaW50ZXJcbiYjNDM7XHQgKiBhcml0aG1ldGljLlxuIFx0ICovXG4tXHRkc3RfcmVnLVx1MDAzZXR5cGUgPSBwdHJfcmVnLVx1MDAzZXR5cGU7XG4tXHRkc3RfcmVnLVx1MDAzZWlkID0gcHRyX3JlZy1cdTAwM2VpZDtcbiYjNDM7XHRpZiAoIXB0cl9pc19kc3RfcmVnKSB7XG4mIzQzO1x0XHRlbnYtXHUwMDNlZmFrZV9yZWdbMF0gPSAqb2ZmX3JlZztcbiYjNDM7XHRcdG9mZl9yZWcgPSBcdTAwMjZlbnYtXHUwMDNlZmFrZV9yZWdbMF07XG4mIzQzO1x0XHQqZHN0X3JlZyA9ICpwdHJfcmVnO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXG4mIzQzO1x0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJhc2VfdHlwZShwdHJfcmVnLVx1MDAzZXR5cGUpID09IFBUUl9UT19NRU0gXHUwMDI2XHUwMDI2IChwdHJfcmVnLVx1MDAzZXR5cGUgXHUwMDI2IFBUUl9VTlRSVVNURUQpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAoIWNoZWNrX3JlZ19zYW5lX29mZnNldF9zY2FsYXIoZW52LCBvZmZfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpIHx8XG4gXHQgICAgIWNoZWNrX3JlZ19zYW5lX29mZnNldF9wdHIoZW52LCBwdHJfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpKVxuQEAgLTEzODEzLDcgJiM0MzsxMzgyMCw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0cmV0ID0gc2FuaXRpemVfcHRyX2FsdShlbnYsIGluc24sIHB0cl9yZWcsIG9mZl9yZWcsIGRzdF9yZWcsXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2aW5mbywgZmFsc2UpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRcdHJldHVybiBzYW5pdGl6ZV9lcnIoZW52LCBpbnNuLCByZXQsIG9mZl9yZWcsIGRzdF9yZWcpO1xuJiM0MztcdFx0XHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvcmlnX29mZl9yZWcsIGRzdF9yZWcpO1xuIFx0fVxuIFxuIFx0c3dpdGNoIChvcGNvZGUpIHtcbkBAIC0xMzg0Myw3ICYjNDM7MTM4NTAsNyBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9TVUI6XG4tXHRcdGlmIChkc3RfcmVnID09IG9mZl9yZWcpIHtcbiYjNDM7XHRcdGlmICghcHRyX2lzX2RzdF9yZWcpIHtcbiBcdFx0XHQvKiBzY2FsYXIgLT0gcG9pbnRlci4gIENyZWF0ZXMgYW4gdW5rbm93biBzY2FsYXIgKi9cbiBcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7UiVkIHRyaWVkIHRvIHN1YnRyYWN0IHBvaW50ZXIgZnJvbSBzY2FsYXJcXG5cJiMzNDssXG4gXHRcdFx0XHRkc3QpO1xuQEAgLTEzOTA2LDcgJiM0MzsxMzkxMyw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0fVxuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRcdHJldHVybiBzYW5pdGl6ZV9lcnIoZW52LCBpbnNuLCByZXQsIG9mZl9yZWcsIGRzdF9yZWcpO1xuJiM0MztcdFx0XHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvcmlnX29mZl9yZWcsIGRzdF9yZWcpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xuaW5kZXggOTQ0ODlhYzY0ZGE4ZWYuLjdkYTQyNjZiYWUwOWIxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jXG5AQCAtMTYzNSw2ICYjNDM7MTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKVxuICAgICAgICAgcmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKiBBIGNvbW11dGVkIGFkZCBzaG91bGQgcHJlc2VydmUgdGhlIHBhcmVudCBpZCBvZiBhIGR5bnB0ciBkYXRhIHNsaWNlLlxuJiM0MzsgKi9cbiYjNDM7U0VDKFwmIzM0Oz9yYXdfdHBcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtpbnZhbGlkIG1lbSBhY2Nlc3MgJiMzOTtzY2FsYXImIzM5O1wmIzM0OylcbiYjNDM7aW50IGR5bnB0cl9zbGljZV9jb21tdXRlZF9pbnZhbGlkYXRlKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbiYjNDM7XHRfX3UzMiAqc2xpY2UsICpkZXJpdmVkO1xuJiM0MztcbiYjNDM7XHRicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cihcdTAwMjZyaW5nYnVmLCBzaXplb2YoX191MzIpLCAwLCBcdTAwMjZwdHIpO1xuJiM0MztcbiYjNDM7XHRzbGljZSA9IGJwZl9keW5wdHJfZGF0YShcdTAwMjZwdHIsIDAsIHNpemVvZihfX3UzMikpO1xuJiM0MztcdGlmICghc2xpY2UpXG4mIzQzO1x0XHRnb3RvIGRvbmU7XG4mIzQzO1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXCYjMzQ7JVtkc3RdID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0OyVbZHN0XSAmIzQzOz0gJVtzcmNdO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7JVtzcmNdID0gMDtcJiMzNDtcbiYjNDM7XHRcdDogW2RzdF1cJiMzNDs9XHUwMDI2clwmIzM0OyhkZXJpdmVkKSwgW3NyY11cJiMzNDsmIzQzO3JcJiMzNDsoc2xpY2UpXG4mIzQzO1x0XHQ6XG4mIzQzO1x0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFx1MDAyNnB0ciwgMCk7XG4mIzQzO1x0dmFsID0gKmRlcml2ZWQ7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO1xuJiM0Mztkb25lOlxuJiM0MztcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFx1MDAyNnB0ciwgMCk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLyogSWYgdGhlIGR5bnB0ciBpcyB3cml0dGVuIGludG8gaW4gYSBjYWxsYmFjayBmdW5jdGlvbiwgaXRzIGRhdGFcbiAgKiBzbGljZXMgc2hvdWxkIGJlIGludmFsaWRhdGVkIGFzIHdlbGwuXG4gICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xuaW5kZXggNWI0NDUzNzQ3YzIzMDguLmYxNjZmZmY4ZjIxNzYxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jXG5AQCAtMjI2LDQgJiM0MzsyMjYsMjEgQEAgaW50IG51bGxfY2hlY2sodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7X19yZXR2YWwoMSlcbiYjNDM7aW50IGxkeF9pc19va19jb21tdXRlZF9hZGRyKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdGludCB2LCAqcCwgKmRlcml2ZWQ7XG4mIzQzO1xuJiM0MztcdHYgPSAxO1xuJiM0MztcdHAgPSBicGZfcmRvbmx5X2Nhc3QoXHUwMDI2diwgMCk7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDslW2RzdF0gPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7JVtkc3RdICYjNDM7PSAlW3NyY107XCYjMzQ7XG4mIzQzO1x0XHQ6IFtkc3RdXCYjMzQ7PVx1MDAyNnJcJiMzNDsoZGVyaXZlZClcbiYjNDM7XHRcdDogW3NyY11cJiMzNDtyXCYjMzQ7KHApXG4mIzQzO1x0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuICpkZXJpdmVkO1xuJiM0Mzt9XG4mIzQzO1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xuaW5kZXggZmI2MmUwOWYyMTE0NmQuLmQzZGY3YTlmMWQ4Yzg1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5AQCAtOTcsNCAmIzQzOzk3LDQ1IEBAIF9fbmFrZWQgdm9pZCBtaXNhbGlnbmVkX3JlYWRfZnJvbV9zdGFjayh2b2lkKVxuIFwmIzM0O1x0Ojo6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiYjNDM7X19kZXNjcmlwdGlvbihcJiMzNDtzdGFjayBwb2ludGVyIGFyaXRobWV0aWMgcHJlc2VydmVzIGZyYW1lIG51bWJlclwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O1I3IGludmFsaWQgbWVtIGFjY2VzcyAmIzM5O3NjYWxhciYjMzk7XCYjMzQ7KVxuJiM0MztfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFwmIzM0O1xcXG4mIzQzO1x0XHRyMyA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCoodTY0ICopKHIxMCAtIDgpID0gcjM7XHRcdFx0XFxcbiYjNDM7XHRcdHIxID0gJVttYXBfaGFzaF84Yl0gbGw7XHRcdFx0XFxcbiYjNDM7XHRcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0cjIgJiM0Mzs9IC04O1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1x0XHRcXFxuJiM0MztcdFx0aWYgcjAgIT0gMCBnb3RvICYjNDM7MjtcdFx0XHRcXFxuJiM0MztcdFx0cjAgPSAwO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyMSA9IHIwO1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0cjIgPSAwO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyMyA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGNhbGwgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2c7XFxcbiYjNDM7XHRcdHIwID0gMDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFwmIzM0OzpcbiYjNDM7XHQ6IF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLFxuJiM0MztcdCAgX19pbW1fYWRkcihtYXBfaGFzaF84YilcbiYjNDM7XHQ6IF9fY2xvYmJlcl9hbGwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgX191c2VkIF9fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm9fc3VicHJvZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcXFxuJiM0MztcdFx0Kih1NjQgKikocjEwIC0gOCkgPSByMTtcdFx0XHRcXFxuJiM0MztcdFx0cjYgPSAtODtcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdHI2ICYjNDM7PSByMTA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQqKHU2NCAqKShyNiAmIzQzOyAwKSA9IHIyO1x0XHRcdFxcXG4mIzQzO1x0XHRyNyA9ICoodTY0ICopKHIxMCAtIDgpO1x0XHRcdFxcXG4mIzQzO1x0XHQqKHU2NCAqKShyNyAmIzQzOyAwKSA9IHIzO1x0XHRcdFxcXG4mIzQzO1x0XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGV4aXQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcJiMzNDs6OjogX19jbG9iYmVyX2FsbCk7XG4mIzQzO31cbiYjNDM7XG4gY2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGp1c3RfcHRyX21pbl9tYXhfdmFscyYjMzQ7LAogICAgJiMzNDthZGp1c3RfcmVnX21pbl9tYXhfdmFscyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDg4Y2IyZDM5OGUwMjA5MTM0MzQ4NjE3ZDgzOTA5ZmM4YzMwMzIwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDAwOjQ1OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDUyYmUwYTExOGNjZTA3Li4xOGZiNjI2NzY5MmM1ZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTM3MjYsMTEgJiM0MzsxMzcyNiwxNCBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJczY0IHNtaW5fdmFsID0gcmVnX3NtaW4ob2ZmX3JlZyksIHNtYXhfdmFsID0gcmVnX3NtYXgob2ZmX3JlZyk7CiAJdTY0IHVtaW5fdmFsID0gcmVnX3VtaW4ob2ZmX3JlZyksIHVtYXhfdmFsID0gcmVnX3VtYXgob2ZmX3JlZyk7CiAJc3RydWN0IGJwZl9zYW5pdGl6ZV9pbmZvIGluZm8gPSB7fTsKJiM0MzsJY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKm9yaWdfb2ZmX3JlZyA9IG9mZl9yZWc7CiYjNDM7CWJvb2wgcHRyX2lzX2RzdF9yZWc7CiAJdTggb3Bjb2RlID0gQlBGX09QKGluc24tJmd0O2NvZGUpOwogCXUzMiBkc3QgPSBpbnNuLSZndDtkc3RfcmVnOwogCWludCByZXQsIGJvdW5kc19yZXQ7CiAKIAlkc3RfcmVnID0gJmFtcDtyZWdzW2RzdF07CiYjNDM7CXB0cl9pc19kc3RfcmVnID0gcHRyX3JlZyA9PSBkc3RfcmVnOwogCiAJaWYgKChrbm93biAmYW1wOyZhbXA7IChzbWluX3ZhbCAhPSBzbWF4X3ZhbCB8fCB1bWluX3ZhbCAhPSB1bWF4X3ZhbCkpIHx8CiAJICAgIHNtaW5fdmFsICZndDsgc21heF92YWwgfHwgdW1pbl92YWwgJmd0OyB1bWF4X3ZhbCkgewpAQCAtMTM3NjAsMTMgJiM0MzsxMzc2Myw2IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCi0JLyoKLQkgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlCi0JICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuCi0JICovCi0JaWYgKGJhc2VfdHlwZShwdHJfcmVnLSZndDt0eXBlKSA9PSBQVFJfVE9fTUVNICZhbXA7JmFtcDsgKHB0cl9yZWctJmd0O3R5cGUgJmFtcDsgUFRSX1VOVFJVU1RFRCkpCi0JCXJldHVybiAwOwotCiAJc3dpdGNoIChiYXNlX3R5cGUocHRyX3JlZy0mZ3Q7dHlwZSkpIHsKIAljYXNlIFBUUl9UT19DVFg6CiAJY2FzZSBQVFJfVE9fTUFQX1ZBTFVFOgpAQCAtMTM3OTYsMTEgJiM0MzsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAotCS8qIEluIGNhc2Ugb2YgJiMzOTtzY2FsYXIgJiM0Mzs9IHBvaW50ZXImIzM5OywgZHN0X3JlZyBpbmhlcml0cyBwb2ludGVyIHR5cGUgYW5kIGlkLgotCSAqIFRoZSBpZCBtYXkgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIgaWYgd2UgY3JlYXRlIGEgbmV3IHZhcmlhYmxlIG9mZnNldC4KJiM0MzsJLyogRm9yICYjMzk7c2NhbGFyICYjNDM7PSBwb2ludGVyJiMzOTssIGRzdF9yZWcgaW5oZXJpdHMgdGhlIGNvbXBsZXRlIHBvaW50ZXIKJiM0MzsJICogcmVnaXN0ZXIgc3RhdGUuIEluZGl2aWR1YWwgZmllbGRzIG1heSBiZSBhZGp1c3RlZCBsYXRlciBieSBwb2ludGVyCiYjNDM7CSAqIGFyaXRobWV0aWMuCiAJICovCi0JZHN0X3JlZy0mZ3Q7dHlwZSA9IHB0cl9yZWctJmd0O3R5cGU7Ci0JZHN0X3JlZy0mZ3Q7aWQgPSBwdHJfcmVnLSZndDtpZDsKJiM0MzsJaWYgKCFwdHJfaXNfZHN0X3JlZykgewomIzQzOwkJZW52LSZndDtmYWtlX3JlZ1swXSA9ICpvZmZfcmVnOwomIzQzOwkJb2ZmX3JlZyA9ICZhbXA7ZW52LSZndDtmYWtlX3JlZ1swXTsKJiM0MzsJCSpkc3RfcmVnID0gKnB0cl9yZWc7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZQomIzQzOwkgKiBpbnN0cnVjdGlvbnMsIGhlbmNlIG5vIG5lZWQgdG8gdHJhY2sgb2Zmc2V0cy4KJiM0MzsJICovCiYjNDM7CWlmIChiYXNlX3R5cGUocHRyX3JlZy0mZ3Q7dHlwZSkgPT0gUFRSX1RPX01FTSAmYW1wOyZhbXA7IChwdHJfcmVnLSZndDt0eXBlICZhbXA7IFBUUl9VTlRSVVNURUQpKQomIzQzOwkJcmV0dXJuIDA7CiAKIAlpZiAoIWNoZWNrX3JlZ19zYW5lX29mZnNldF9zY2FsYXIoZW52LCBvZmZfcmVnLCBwdHJfcmVnLSZndDt0eXBlKSB8fAogCSAgICAhY2hlY2tfcmVnX3NhbmVfb2Zmc2V0X3B0cihlbnYsIHB0cl9yZWcsIHB0cl9yZWctJmd0O3R5cGUpKQpAQCAtMTM4MTMsNyAmIzQzOzEzODIwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQlyZXQgPSBzYW5pdGl6ZV9wdHJfYWx1KGVudiwgaW5zbiwgcHRyX3JlZywgb2ZmX3JlZywgZHN0X3JlZywKIAkJCQkgICAgICAgJmFtcDtpbmZvLCBmYWxzZSk7CiAJCWlmIChyZXQgJmx0OyAwKQotCQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7CiYjNDM7CQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTsKIAl9CiAKIAlzd2l0Y2ggKG9wY29kZSkgewpAQCAtMTM4NDMsNyAmIzQzOzEzODUwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQl9CiAJCWJyZWFrOwogCWNhc2UgQlBGX1NVQjoKLQkJaWYgKGRzdF9yZWcgPT0gb2ZmX3JlZykgewomIzQzOwkJaWYgKCFwdHJfaXNfZHN0X3JlZykgewogCQkJLyogc2NhbGFyIC09IHBvaW50ZXIuICBDcmVhdGVzIGFuIHVua25vd24gc2NhbGFyICovCiAJCQl2ZXJib3NlKGVudiwgJiMzNDtSJWQgdHJpZWQgdG8gc3VidHJhY3QgcG9pbnRlciBmcm9tIHNjYWxhclxuJiMzNDssCiAJCQkJZHN0KTsKQEAgLTEzOTA2LDcgJiM0MzsxMzkxMyw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCXJldHVybiAtRUZBVUxUOwogCQl9CiAJCWlmIChyZXQgJmx0OyAwKQotCQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7CiYjNDM7CQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmMKaW5kZXggOTQ0ODlhYzY0ZGE4ZWYuLjdkYTQyNjZiYWUwOWIxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuYwpAQCAtMTYzNSw2ICYjNDM7MTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKQogICAgICAgICByZXR1cm4gMDsKIH0KIAomIzQzOy8qIEEgY29tbXV0ZWQgYWRkIHNob3VsZCBwcmVzZXJ2ZSB0aGUgcGFyZW50IGlkIG9mIGEgZHlucHRyIGRhdGEgc2xpY2UuCiYjNDM7ICovCiYjNDM7U0VDKCYjMzQ7P3Jhd190cCYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2ludmFsaWQgbWVtIGFjY2VzcyAmIzM5O3NjYWxhciYjMzk7JiMzNDspCiYjNDM7aW50IGR5bnB0cl9zbGljZV9jb21tdXRlZF9pbnZhbGlkYXRlKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfZHlucHRyIHB0cjsKJiM0MzsJX191MzIgKnNsaWNlLCAqZGVyaXZlZDsKJiM0MzsKJiM0MzsJYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHIoJmFtcDtyaW5nYnVmLCBzaXplb2YoX191MzIpLCAwLCAmYW1wO3B0cik7CiYjNDM7CiYjNDM7CXNsaWNlID0gYnBmX2R5bnB0cl9kYXRhKCZhbXA7cHRyLCAwLCBzaXplb2YoX191MzIpKTsKJiM0MzsJaWYgKCFzbGljZSkKJiM0MzsJCWdvdG8gZG9uZTsKJiM0MzsKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OyVbZHN0XSA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7JVtkc3RdICYjNDM7PSAlW3NyY107JiMzNDsKJiM0MzsJCSYjMzQ7JVtzcmNdID0gMDsmIzM0OwomIzQzOwkJOiBbZHN0XSYjMzQ7PSZhbXA7ciYjMzQ7KGRlcml2ZWQpLCBbc3JjXSYjMzQ7JiM0MztyJiMzNDsoc2xpY2UpCiYjNDM7CQk6CiYjNDM7CQk6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwomIzQzOwlicGZfcmluZ2J1Zl9kaXNjYXJkX2R5bnB0cigmYW1wO3B0ciwgMCk7CiYjNDM7CXZhbCA9ICpkZXJpdmVkOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0Mztkb25lOgomIzQzOwlicGZfcmluZ2J1Zl9kaXNjYXJkX2R5bnB0cigmYW1wO3B0ciwgMCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qIElmIHRoZSBkeW5wdHIgaXMgd3JpdHRlbiBpbnRvIGluIGEgY2FsbGJhY2sgZnVuY3Rpb24sIGl0cyBkYXRhCiAgKiBzbGljZXMgc2hvdWxkIGJlIGludmFsaWRhdGVkIGFzIHdlbGwuCiAgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMKaW5kZXggNWI0NDUzNzQ3YzIzMDguLmYxNjZmZmY4ZjIxNzYxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuYwpAQCAtMjI2LDQgJiM0MzsyMjYsMjEgQEAgaW50IG51bGxfY2hlY2sodm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19yZXR2YWwoMSkKJiM0MztpbnQgbGR4X2lzX29rX2NvbW11dGVkX2FkZHIodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJaW50IHYsICpwLCAqZGVyaXZlZDsKJiM0MzsKJiM0MzsJdiA9IDE7CiYjNDM7CXAgPSBicGZfcmRvbmx5X2Nhc3QoJmFtcDt2LCAwKTsKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OyVbZHN0XSA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7JVtkc3RdICYjNDM7PSAlW3NyY107JiMzNDsKJiM0MzsJCTogW2RzdF0mIzM0Oz0mYW1wO3ImIzM0OyhkZXJpdmVkKQomIzQzOwkJOiBbc3JjXSYjMzQ7ciYjMzQ7KHApCiYjNDM7CQk6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwlyZXR1cm4gKmRlcml2ZWQ7CiYjNDM7fQomIzQzOwogY2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYwppbmRleCBmYjYyZTA5ZjIxMTQ2ZC4uZDNkZjdhOWYxZDhjODUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCkBAIC05Nyw0ICYjNDM7OTcsNDUgQEAgX19uYWtlZCB2b2lkIG1pc2FsaWduZWRfcmVhZF9mcm9tX3N0YWNrKHZvaWQpCiAmIzM0Owk6OjogX19jbG9iYmVyX2FsbCk7CiB9CiAKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7c3RhY2sgcG9pbnRlciBhcml0aG1ldGljIHByZXNlcnZlcyBmcmFtZSBudW1iZXImIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtSNyBpbnZhbGlkIG1lbSBhY2Nlc3MgJiMzOTtzY2FsYXImIzM5OyYjMzQ7KQomIzQzO19fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm8odm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoJiMzNDtcCiYjNDM7CQlyMyA9IDA7CQkJCQkJXAomIzQzOwkJKih1NjQgKikocjEwIC0gOCkgPSByMzsJCQlcCiYjNDM7CQlyMSA9ICVbbWFwX2hhc2hfOGJdIGxsOwkJCVwKJiM0MzsJCXIyID0gcjEwOwkJCQkJXAomIzQzOwkJcjIgJiM0Mzs9IC04OwkJCQkJXAomIzQzOwkJY2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dOwkJXAomIzQzOwkJaWYgcjAgIT0gMCBnb3RvICYjNDM7MjsJCQlcCiYjNDM7CQlyMCA9IDA7CQkJCQkJXAomIzQzOwkJZXhpdDsJCQkJCQlcCiYjNDM7CQlyMSA9IHIwOwkJCQkJXAomIzQzOwkJcjIgPSAwOwkJCQkJCVwKJiM0MzsJCXIzID0gMDsJCQkJCQlcCiYjNDM7CQljYWxsIHN0YWNrX3B0cl9hcml0aF9wcmVzZXJ2ZXNfZnJhbWVub19zdWJwcm9nO1wKJiM0MzsJCXIwID0gMDsJCQkJCQlcCiYjNDM7CQlleGl0OwkJCQkJCVwKJiM0MzsJJiMzNDs6CiYjNDM7CTogX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksCiYjNDM7CSAgX19pbW1fYWRkcihtYXBfaGFzaF84YikKJiM0MzsJOiBfX2Nsb2JiZXJfYWxsKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIF9fdXNlZCBfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2codm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoJiMzNDtcCiYjNDM7CQkqKHU2NCAqKShyMTAgLSA4KSA9IHIxOwkJCVwKJiM0MzsJCXI2ID0gLTg7CQkJCQlcCiYjNDM7CQlyNiAmIzQzOz0gcjEwOwkJCQkJXAomIzQzOwkJKih1NjQgKikocjYgJiM0MzsgMCkgPSByMjsJCQlcCiYjNDM7CQlyNyA9ICoodTY0ICopKHIxMCAtIDgpOwkJCVwKJiM0MzsJCSoodTY0ICopKHI3ICYjNDM7IDApID0gcjM7CQkJXAomIzQzOwkJcjAgPSAwOwkJCQkJCVwKJiM0MzsJCWV4aXQ7CQkJCQkJXAomIzQzOwkmIzM0Ozo6OiBfX2Nsb2JiZXJfYWxsKTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY291cGxlIG9mIG5ldyB2YXJpYWJsZXMsIGBvcmlnX29mZl9yZWdgIGFuZCBgcHRyX2lzX2RzdF9yZWdgLCBhbmQgZnVuZGFtZW50YWxseSBhbHRlcmVkIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGUgYHNjYWxhciAmIzQzOz0gcG9pbnRlcmAgaW5zdHJ1Y3Rpb24gcGF0dGVybi4gUHJldmlvdXNseSwgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIChgZHN0X3JlZ2ApIHNpbXBseSBpbmhlcml0ZWQgdGhlIHR5cGUgYW5kIElEIGZyb20gdGhlIHBvaW50ZXIgcmVnaXN0ZXIgKGBwdHJfcmVnYCkuIE5vdywgaXQgbG9va3MgbGlrZSB0aGV5IGFyZSBkb2luZyBzb21ldGhpbmcgZGlmZmVyZW50LgoKVGhlIG5ldyBsb2dpYyBpcyBpbnRlcmVzdGluZzogaWYgYHB0cl9pc19kc3RfcmVnYCBpcyBmYWxzZSwgaXQgdXNlcyBhIGBmYWtlX3JlZ2AgZm9yIGEgdGVtcG9yYXJ5IGhvbGRpbmcgc3BvdCBhbmQgc2V0cyBgZHN0X3JlZ2AgdG8gdGhlIHZhbHVlIG9mIHRoZSBwb2ludGVyIHJlZ2lzdGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHJlZmluaW5nIHBvaW50ZXIgYXJpdGhtZXRpYyBhbmFseXNpcywgYWxsb3dpbmcgbW9yZSBwcmVjaXNlIGJvdW5kcyB0cmFja2luZyBhZnRlciBvcGVyYXRpb25zIHRoYXQgY29tYmluZSBwb2ludGVycyBhbmQgc2NhbGFycy4gSXQgc2VlbXMgdGhhdCB0aGV5IGhhdmUgZW5oYW5jZWQgdGhlIGhhbmRsaW5nIG9mIGhvdyBwb2ludGVyIHJlZ2lzdGVycyBhcmUgdXBkYXRlZCB3aXRoIHNjYWxhciBhcml0aG1ldGljLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBpbnRlcnByZXRhdGlvbiBpcyBjb3JyZWN0LiBUaGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBzb21lIGNhbGxzIHRvIGBzYW5pdGl6ZV9lcnJgIHRvIHVzZSBgb3JpZ19vZmZfcmVnYCBpbnN0ZWFkIG9mIGBvZmZfcmVnYC4gVGhpcyBzdWdnZXN0cyB0aGUgY2hhbmdlcyBhcmUgbm90IHB1cmVseSBjb3NtZXRpYzsgdGhleSBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgYmVoYXZpb3Igb2YgdGhlIHZlcmlmaWVyLCBwb3RlbnRpYWxseSBpbiBob3cgZXJyb3IgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIG9wZXJhdGlvbnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgem9vbSBvdXQgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBTaW5jZSB0aGlzIGlzIGEgQlBGIHZlcmlmaWVyIGNoYW5nZSwgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBpcyBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MgdG8gYWRqdXN0IG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIHBvaW50ZXJzLiBHaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgY2hhbmdlcywgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZnVuY3Rpb25hbCBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2ZXJpZmllciBpcyBlbmFibGVkLiBJIGtub3cgYENPTkZJR19CUEZfU1lTQ0FMTGAgcGxheXMgYSByb2xlOyBJJiMzOTtsbCBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBvciBtYXliZSBldmVuIGBpbml0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIHZlcmlmaWVyIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEJQRiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEJQRl9TWVNDQUxMYCDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZyBzZXR0aW5nIGhlcmUuIEl0IGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIHRvIHRoZSBhcmVhIG9mIGludmVzdGlnYXRpb247IHdlJiMzOTtyZSBsaWtlbHkgbG9va2luZyBhdCB0cmFjaW5nLCBzZWN1cml0eSwgb3IgcGVyaGFwcyBzeXN0ZW0gY2FsbCBmaWx0ZXJpbmcgd2l0aGluIGEgQlBGIGNvbnRleHQuIE15IG5leHQgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZWxlbWVudHMgcmVsYXRlZCB0byB0aGlzIGNvbmZpZ3VyYXRpb24uCgpUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdHJhY2sgZG93biB0aGUgZm9jdXMgc3ltYm9scywgd2hpY2ggaW4gdGhpcyBpbnN0YW5jZSBpcyB0aGUgZnVuY3Rpb24gYGFkanVzdF9wdHJfbWluX21heF92YWxzYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgYEJQRl9TWVNDQUxMYCBzZXR1cCwgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLgoKVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmb2xsb3cgdXAgaXMgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgb2YgYGFkanVzdF9wdHJfbWluX21heF92YWxzYC4gU2VlaW5nIHdoZXJlIGl0JiMzOTtzIGJlaW5nIGludm9rZWQgd2lsbCBvZmZlciBjb250ZXh0LCByZXZlYWxpbmcgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbSBjYWxsIHBhdGggYW5kIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQuIFRoaXMgcXVpY2tseSBsZWFkcyB0byB1bmRlcnN0YW5kaW5nIGl0cyBpbmZsdWVuY2Ugd2l0aGluIHRoZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkanVzdF9wdHJfbWluX21heF92YWxzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz00MDAzPXN0YXRpYyBpbnQgY2hlY2tfc3RhY2tfcmVhZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MDI3LVx0ICogY2hlY2tfc3RhY2tfYWNjZXNzX2Zvcl9wdHJfYXJpdGhtZXRpYygpIGNhbGxlZCBieVxua2VybmVsL2JwZi92ZXJpZmllci5jOjQwMjg6XHQgKiBhZGp1c3RfcHRyX21pbl9tYXhfdmFscygpIHByZXZlbnRzIHVzZXJzIGZyb20gY3JlYXRpbmcgc3RhY2sgcG9pbnRlcnNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MDI5LVx0ICogd2l0aCB2YXJpYWJsZSBvZmZzZXRzLCB0aGVyZWZvcmUgbm8gY2hlY2sgaXMgcmVxdWlyZWQgaGVyZS4gRnVydGhlcixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM2ODA9c3RhdGljIGludCBzYW5pdGl6ZV9jaGVja19ib3VuZHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTM3MTYtICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTM3MTc6c3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzNzE4LVx0XHRcdFx0ICAgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDgwOD1zdGF0aWMgaW50IGFkanVzdF9yZWdfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODcwLVx0XHRcdFx0XHRyZXR1cm4gZXJyO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE0ODcxOlx0XHRcdFx0cmV0dXJuIGFkanVzdF9wdHJfbWluX21heF92YWxzKGVudiwgaW5zbixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg3Mi1cdFx0XHRcdFx0XHRcdCAgICAgICBzcmNfcmVnLCBkc3RfcmVnKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4NzgtXHRcdFx0XHRyZXR1cm4gZXJyO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE0ODc5Olx0XHRcdHJldHVybiBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhlbnYsIGluc24sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4ODAtXHRcdFx0XHRcdFx0ICAgICAgIGRzdF9yZWcsIHNyY19yZWcpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg5NC1cdFx0aWYgKHB0cl9yZWcpIC8qIHBvaW50ZXIgJiM0Mzs9IEsgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDg5NTpcdFx0XHRyZXR1cm4gYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoZW52LCBpbnNuLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODk2LVx0XHRcdFx0XHRcdCAgICAgICBwdHJfcmVnLCBzcmNfcmVnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjkwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgTGluZWFnZSBvZiBEYXRhIFZhbGlkYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIHRoZSB2YWxpZGF0aW9uIG9mIG91ciByZWdpc3RlciBtaW4vbWF4IHZhbHVlcy4gSSBzZWUgdGhhdCBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGlzIGNhbGxlZCBieSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLiBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgY29ubmVjdGlvbiwgYnV0IGl0JiMzOTtzIG5vdCB0aGUgd2hvbGUgc3RvcnkuIFRoZSByZWFsIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBhZGp1c3RfcmVnX21pbl9tYXhfdmFsc2AsIGFuZCAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBkb19jaGVja2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhaW4gb2YgcmVzcG9uc2liaWxpdHkgYmV0dGVyLiBUaGVyZWZvcmUsIEkgd2FudCB0byBkcmlsbCBpbnRvIGJvdGggYGFkanVzdF9yZWdfbWluX21heF92YWxzYCBhbmQgYGRvX2NoZWNrYCBub3csIHNvIEkgaGF2ZSBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRqdXN0X3JlZ19taW5fbWF4X3ZhbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE0NjUwPXN0YXRpYyBpbnQgYWRqdXN0X3NjYWxhcl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4MDctICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQ4MDg6c3RhdGljIGludCBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODA5LVx0XHRcdFx0ICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDk3Nj1zdGF0aWMgaW50IGNoZWNrX2FsdV9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE1MTU2LVx0XHRlcnIgPSBjaGVja19yZWdfYXJnKGVudiwgaW5zbi1cdTAwM2Vkc3RfcmVnLCBEU1RfT1BfTk9fTUFSSyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTUxNTc6XHRcdGVyciA9IGVyciA/OiBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE1MTU4LVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MzgKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogNjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBoZXJlIGlzIHRoZSBmaXggZm9yIHRoYXQgYHNjYWxhciAmIzQzOz0gcG9pbnRlcmAgaXNzdWUgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYGFkanVzdF9yZWdfbWluX21heF92YWxzYCBpcyBjYWxsZWQgYnkgYGNoZWNrX2FsdV9vcGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBkb19jaGVja2AuIFRoYXQgY2hhaW4gb2YgY2FsbHMgaXMgaW1wb3J0YW50IGZvciBjb250ZXh0LiBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGxvb2tzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmdXp6aW5nLCBidXQgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgcmVhY2hhYmxlLCBtYWtlcyBpdCBmdXp6YWJsZSwgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5JiMzOTtyZSBpbiB0aGUga2VybmVsIGltYWdlIGFuZCBoYXZlIGRlYnVnIGluZm8uCgpUaGUgcGF0Y2ggbW9kaWZpZXMgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciB3YXNuJiMzOTt0IHByb3Blcmx5IGluaGVyaXRpbmcgdGhlIGZ1bGwgcG9pbnRlciByZWdpc3RlciBzdGF0ZSBkdXJpbmcgdGhhdCBgc2NhbGFyICYjNDM7PSBwb2ludGVyYCBvcGVyYXRpb24uIEluIGVzc2VuY2UsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQmIzM5O3MgZml4aW5nIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyBwb2ludGVyIGFyaXRobWV0aWMsIHNwZWNpZmljYWxseSBpbiB0aGlzIGNhc2UsIHRoZSBgJiM0Mzs9YCBvcGVyYXRpb24gd2l0aCBhIHNjYWxhciB2YWx1ZSBhbmQgYSBwb2ludGVyLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGFkZHMgdGVzdCBjYXNlcywgdGhlIHRlc3RzIHRoZW1zZWx2ZXMgcmVseSBvbiBzZXZlcmFsIEJQRiBmZWF0dXJlcywgbmFtZWx5IGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAsIGBicGZfZHlucHRyX2RhdGFgLCBhbmQgYGJwZl9yZG9ubHlfY2FzdGAuIFRoYXQgc2FpZCwgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiByZXF1aXJlZCBpcyB1bmRvdWJ0ZWRseSBgQ09ORklHX0JQRl9TWVNDQUxMYC4gYENPTkZJR19CUEZfSklUYCBtaWdodCBiZSBiZW5lZmljaWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBidXQgaXQmIzM5O3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeS4gU28gSSYjMzk7bGwganVzdCBsaXN0IGBCUEZfU1lTQ0FMTGAgYXMgYSByZXF1aXJlZCBjb25maWcuCgpOb3csIGxldCYjMzk7cyByZXZpc2l0IHRoZSBpbXBvcnRhbnQgc3ltYm9scy4gSSYjMzk7dmUgcmUtY29uZmlybWVkIHRoYXQgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBpcyBzdGF0aWMuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3Mgc3RpbGwgYSBnb29kIGZvY3VzIHN5bWJvbC4gR2l2ZW4gdGhhdCBzeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBpdCBpcyBzdGlsbCBhIHZpYWJsZSB0YXJnZXQuIFNvIEkmIzM5O2xsIGFsc28gaW5jbHVkZSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLCBzaW5jZSBpdCYjMzk7cyBkaXJlY3RseSByZWxhdGVkLgoKTGV0IG1lIHJldmlldyB0aGUgY29kZSBhZ2Fpbi4uLiBZZXAsIHRoaXMgY29uZmlybXMgdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlOgoKYGBgYwoJLyogRm9yICYjMzk7c2NhbGFyICYjNDM7PSBwb2ludGVyJiMzOTssIGRzdF9yZWcgaW5oZXJpdHMgdGhlIGNvbXBsZXRlIHBvaW50ZXIKCSAqIHJlZ2lzdGVyIHN0YXRlLiBJbmRpdmlkdWFsIGZpZWxkcyBtYXkgYmUgYWRqdXN0ZWQgbGF0ZXIgYnkgcG9pbnRlcgoJICogYXJpdGhtZXRpYy4KCSAqLwoJaWYgKCFwdHJfaXNfZHN0X3JlZykgewoJCWVudi0mZ3Q7ZmFrZV9yZWdbMF0gPSAqb2ZmX3JlZzsKCQlvZmZfcmVnID0gJmFtcDtlbnYtJmd0O2Zha2VfcmVnWzBdOwoJCSpkc3RfcmVnID0gKnB0cl9yZWc7Cgl9CmBgYAoKVGhpcyBwYXRjaCBjbGVhcmx5IG1vZGlmaWVzIHRoZSB2ZXJpZmllciYjMzk7cyBiZWhhdmlvciByZWxhdGVkIHRvIHBvaW50ZXIgYXJpdGhtZXRpYy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGUgY29ycmVjdGVkIHByb3BhZ2F0aW9uIG9mIHRoZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIGR1cmluZyBzY2FsYXIgYWRkaXRpb24uIFRoaXMgY291bGQgZWFzaWx5IGxlYWQgdG8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBpZiBub3Qgcmlnb3JvdXNseSBmdXp6ZWQuCgpJbiBzaG9ydDogVGhpcyBwYXRjaCBpcyBmaXhpbmcgaG93IEJQRiBoYW5kbGVzIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgaW4gdGhlIHZlcmlmaWVyLCBwcm9wYWdhdGluZyB0aGUgcG9pbnRlciBzdGF0ZSBjb3JyZWN0bHkuIFRoaXMgaXMgZnVuY3Rpb25hbCwgc28gZnV6emluZyBpcyBjcml0aWNhbC4KCkNvbmZpZ3M6IGBCUEZfU1lTQ0FMTGAKRm9jdXNTeW1ib2xzOiBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgLCBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgCgpUaW1lIHRvIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGp1c3RfcHRyX21pbl9tYXhfdmFscyYjMzQ7LAogICAgJiMzNDthZGp1c3RfcmVnX21pbl9tYXhfdmFscyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGp1c3RfcHRyX21pbl9tYXhfdmFscyYjMzQ7LAogICAgJiMzNDthZGp1c3RfcmVnX21pbl9tYXhfdmFscyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI4LjQzNTg0NDYwNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3ODM1MDAwMDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNcIixcbiAgICBcImFkanVzdF9yZWdfbWluX21heF92YWxzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBgc2NhbGFyICs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6MjguNDM1ODUyMDQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk3NDAxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkODhjYjJkMzk4ZTAyMDkxMzQzNDg2MTdkODM5MDlmYzhjMzAzMjA1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDAwOjQ1OjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDUyYmUwYTExOGNjZTA3Li4xOGZiNjI2NzY5MmM1ZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTM3MjYsMTEgKzEzNzI2LDE0IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0czY0IHNtaW5fdmFsID0gcmVnX3NtaW4ob2ZmX3JlZyksIHNtYXhfdmFsID0gcmVnX3NtYXgob2ZmX3JlZyk7XFxuIFxcdHU2NCB1bWluX3ZhbCA9IHJlZ191bWluKG9mZl9yZWcpLCB1bWF4X3ZhbCA9IHJlZ191bWF4KG9mZl9yZWcpO1xcbiBcXHRzdHJ1Y3QgYnBmX3Nhbml0aXplX2luZm8gaW5mbyA9IHt9O1xcbitcXHRjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqb3JpZ19vZmZfcmVnID0gb2ZmX3JlZztcXG4rXFx0Ym9vbCBwdHJfaXNfZHN0X3JlZztcXG4gXFx0dTggb3Bjb2RlID0gQlBGX09QKGluc24tXFx1MDAzZWNvZGUpO1xcbiBcXHR1MzIgZHN0ID0gaW5zbi1cXHUwMDNlZHN0X3JlZztcXG4gXFx0aW50IHJldCwgYm91bmRzX3JldDtcXG4gXFxuIFxcdGRzdF9yZWcgPSBcXHUwMDI2cmVnc1tkc3RdO1xcbitcXHRwdHJfaXNfZHN0X3JlZyA9IHB0cl9yZWcgPT0gZHN0X3JlZztcXG4gXFxuIFxcdGlmICgoa25vd24gXFx1MDAyNlxcdTAwMjYgKHNtaW5fdmFsICE9IHNtYXhfdmFsIHx8IHVtaW5fdmFsICE9IHVtYXhfdmFsKSkgfHxcXG4gXFx0ICAgIHNtaW5fdmFsIFxcdTAwM2Ugc21heF92YWwgfHwgdW1pbl92YWwgXFx1MDAzZSB1bWF4X3ZhbCkge1xcbkBAIC0xMzc2MCwxMyArMTM3NjMsNiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbiBcXHR9XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXFxuLVxcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byB0cmFjayBvZmZzZXRzLlxcbi1cXHQgKi9cXG4tXFx0aWYgKGJhc2VfdHlwZShwdHJfcmVnLVxcdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFxcdTAwMjZcXHUwMDI2IChwdHJfcmVnLVxcdTAwM2V0eXBlIFxcdTAwMjYgUFRSX1VOVFJVU1RFRCkpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4gXFx0c3dpdGNoIChiYXNlX3R5cGUocHRyX3JlZy1cXHUwMDNldHlwZSkpIHtcXG4gXFx0Y2FzZSBQVFJfVE9fQ1RYOlxcbiBcXHRjYXNlIFBUUl9UT19NQVBfVkFMVUU6XFxuQEAgLTEzNzk2LDExICsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBJbiBjYXNlIG9mICdzY2FsYXIgKz0gcG9pbnRlcicsIGRzdF9yZWcgaW5oZXJpdHMgcG9pbnRlciB0eXBlIGFuZCBpZC5cXG4tXFx0ICogVGhlIGlkIG1heSBiZSBvdmVyd3JpdHRlbiBsYXRlciBpZiB3ZSBjcmVhdGUgYSBuZXcgdmFyaWFibGUgb2Zmc2V0LlxcbitcXHQvKiBGb3IgJ3NjYWxhciArPSBwb2ludGVyJywgZHN0X3JlZyBpbmhlcml0cyB0aGUgY29tcGxldGUgcG9pbnRlclxcbitcXHQgKiByZWdpc3RlciBzdGF0ZS4gSW5kaXZpZHVhbCBmaWVsZHMgbWF5IGJlIGFkanVzdGVkIGxhdGVyIGJ5IHBvaW50ZXJcXG4rXFx0ICogYXJpdGhtZXRpYy5cXG4gXFx0ICovXFxuLVxcdGRzdF9yZWctXFx1MDAzZXR5cGUgPSBwdHJfcmVnLVxcdTAwM2V0eXBlO1xcbi1cXHRkc3RfcmVnLVxcdTAwM2VpZCA9IHB0cl9yZWctXFx1MDAzZWlkO1xcbitcXHRpZiAoIXB0cl9pc19kc3RfcmVnKSB7XFxuK1xcdFxcdGVudi1cXHUwMDNlZmFrZV9yZWdbMF0gPSAqb2ZmX3JlZztcXG4rXFx0XFx0b2ZmX3JlZyA9IFxcdTAwMjZlbnYtXFx1MDAzZWZha2VfcmVnWzBdO1xcbitcXHRcXHQqZHN0X3JlZyA9ICpwdHJfcmVnO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXFxuK1xcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byB0cmFjayBvZmZzZXRzLlxcbitcXHQgKi9cXG4rXFx0aWYgKGJhc2VfdHlwZShwdHJfcmVnLVxcdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFxcdTAwMjZcXHUwMDI2IChwdHJfcmVnLVxcdTAwM2V0eXBlIFxcdTAwMjYgUFRSX1VOVFJVU1RFRCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0aWYgKCFjaGVja19yZWdfc2FuZV9vZmZzZXRfc2NhbGFyKGVudiwgb2ZmX3JlZywgcHRyX3JlZy1cXHUwMDNldHlwZSkgfHxcXG4gXFx0ICAgICFjaGVja19yZWdfc2FuZV9vZmZzZXRfcHRyKGVudiwgcHRyX3JlZywgcHRyX3JlZy1cXHUwMDNldHlwZSkpXFxuQEAgLTEzODEzLDcgKzEzODIwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRyZXQgPSBzYW5pdGl6ZV9wdHJfYWx1KGVudiwgaW5zbiwgcHRyX3JlZywgb2ZmX3JlZywgZHN0X3JlZyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZpbmZvLCBmYWxzZSk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi1cXHRcXHRcXHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvZmZfcmVnLCBkc3RfcmVnKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTtcXG4gXFx0fVxcbiBcXG4gXFx0c3dpdGNoIChvcGNvZGUpIHtcXG5AQCAtMTM4NDMsNyArMTM4NTAsNyBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX1NVQjpcXG4tXFx0XFx0aWYgKGRzdF9yZWcgPT0gb2ZmX3JlZykge1xcbitcXHRcXHRpZiAoIXB0cl9pc19kc3RfcmVnKSB7XFxuIFxcdFxcdFxcdC8qIHNjYWxhciAtPSBwb2ludGVyLiAgQ3JlYXRlcyBhbiB1bmtub3duIHNjYWxhciAqL1xcbiBcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcIlIlZCB0cmllZCB0byBzdWJ0cmFjdCBwb2ludGVyIGZyb20gc2NhbGFyXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHRkc3QpO1xcbkBAIC0xMzkwNiw3ICsxMzkxMyw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdFxcdHJldHVybiBzYW5pdGl6ZV9lcnIoZW52LCBpbnNuLCByZXQsIG9mZl9yZWcsIGRzdF9yZWcpO1xcbitcXHRcXHRcXHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvcmlnX29mZl9yZWcsIGRzdF9yZWcpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xcbmluZGV4IDk0NDg5YWM2NGRhOGVmLi43ZGE0MjY2YmFlMDliMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jXFxuQEAgLTE2MzUsNiArMTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKVxcbiAgICAgICAgIHJldHVybiAwO1xcbiB9XFxuIFxcbisvKiBBIGNvbW11dGVkIGFkZCBzaG91bGQgcHJlc2VydmUgdGhlIHBhcmVudCBpZCBvZiBhIGR5bnB0ciBkYXRhIHNsaWNlLlxcbisgKi9cXG4rU0VDKFxcXCI/cmF3X3RwXFxcIilcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJpbnZhbGlkIG1lbSBhY2Nlc3MgJ3NjYWxhcidcXFwiKVxcbitpbnQgZHlucHRyX3NsaWNlX2NvbW11dGVkX2ludmFsaWRhdGUodm9pZCAqY3R4KVxcbit7XFxuK1xcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcXG4rXFx0X191MzIgKnNsaWNlLCAqZGVyaXZlZDtcXG4rXFxuK1xcdGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyKFxcdTAwMjZyaW5nYnVmLCBzaXplb2YoX191MzIpLCAwLCBcXHUwMDI2cHRyKTtcXG4rXFxuK1xcdHNsaWNlID0gYnBmX2R5bnB0cl9kYXRhKFxcdTAwMjZwdHIsIDAsIHNpemVvZihfX3UzMikpO1xcbitcXHRpZiAoIXNsaWNlKVxcbitcXHRcXHRnb3RvIGRvbmU7XFxuK1xcbitcXHRhc20gdm9sYXRpbGUgKFxcXCIlW2RzdF0gPSAwO1xcXCJcXG4rXFx0XFx0XFxcIiVbZHN0XSArPSAlW3NyY107XFxcIlxcbitcXHRcXHRcXFwiJVtzcmNdID0gMDtcXFwiXFxuK1xcdFxcdDogW2RzdF1cXFwiPVxcdTAwMjZyXFxcIihkZXJpdmVkKSwgW3NyY11cXFwiK3JcXFwiKHNsaWNlKVxcbitcXHRcXHQ6XFxuK1xcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXG4rXFx0YnBmX3JpbmdidWZfZGlzY2FyZF9keW5wdHIoXFx1MDAyNnB0ciwgMCk7XFxuK1xcdHZhbCA9ICpkZXJpdmVkO1xcbitcXHRyZXR1cm4gMDtcXG4rXFxuK2RvbmU6XFxuK1xcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFxcdTAwMjZwdHIsIDApO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyogSWYgdGhlIGR5bnB0ciBpcyB3cml0dGVuIGludG8gaW4gYSBjYWxsYmFjayBmdW5jdGlvbiwgaXRzIGRhdGFcXG4gICogc2xpY2VzIHNob3VsZCBiZSBpbnZhbGlkYXRlZCBhcyB3ZWxsLlxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xcbmluZGV4IDViNDQ1Mzc0N2MyMzA4Li5mMTY2ZmZmOGYyMTc2MSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jXFxuQEAgLTIyNiw0ICsyMjYsMjEgQEAgaW50IG51bGxfY2hlY2sodm9pZCAqY3R4KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19yZXR2YWwoMSlcXG4raW50IGxkeF9pc19va19jb21tdXRlZF9hZGRyKHZvaWQgKmN0eClcXG4re1xcbitcXHRpbnQgdiwgKnAsICpkZXJpdmVkO1xcbitcXG4rXFx0diA9IDE7XFxuK1xcdHAgPSBicGZfcmRvbmx5X2Nhc3QoXFx1MDAyNnYsIDApO1xcbitcXHRhc20gdm9sYXRpbGUgKFxcXCIlW2RzdF0gPSAwO1xcXCJcXG4rXFx0XFx0XFxcIiVbZHN0XSArPSAlW3NyY107XFxcIlxcbitcXHRcXHQ6IFtkc3RdXFxcIj1cXHUwMDI2clxcXCIoZGVyaXZlZClcXG4rXFx0XFx0OiBbc3JjXVxcXCJyXFxcIihwKVxcbitcXHRcXHQ6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0cmV0dXJuICpkZXJpdmVkO1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbmluZGV4IGZiNjJlMDlmMjExNDZkLi5kM2RmN2E5ZjFkOGM4NSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXFxuQEAgLTk3LDQgKzk3LDQ1IEBAIF9fbmFrZWQgdm9pZCBtaXNhbGlnbmVkX3JlYWRfZnJvbV9zdGFjayh2b2lkKVxcbiBcXFwiXFx0Ojo6IF9fY2xvYmJlcl9hbGwpO1xcbiB9XFxuIFxcbitTRUMoXFxcInNvY2tldFxcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcInN0YWNrIHBvaW50ZXIgYXJpdGhtZXRpYyBwcmVzZXJ2ZXMgZnJhbWUgbnVtYmVyXFxcIilcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJSNyBpbnZhbGlkIG1lbSBhY2Nlc3MgJ3NjYWxhcidcXFwiKVxcbitfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXFwiXFxcXFxcbitcXHRcXHRyMyA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqKHU2NCAqKShyMTAgLSA4KSA9IHIzO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjEgPSAlW21hcF9oYXNoXzhiXSBsbDtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHIyID0gcjEwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjIgKz0gLTg7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XFx0XFx0XFxcXFxcbitcXHRcXHRpZiByMCAhPSAwIGdvdG8gKzI7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyMCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjEgPSByMDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHIyID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHIzID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNhbGwgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2c7XFxcXFxcbitcXHRcXHRyMCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFxcIjpcXG4rXFx0OiBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSxcXG4rXFx0ICBfX2ltbV9hZGRyKG1hcF9oYXNoXzhiKVxcbitcXHQ6IF9fY2xvYmJlcl9hbGwpO1xcbit9XFxuK1xcbitzdGF0aWMgX191c2VkIF9fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm9fc3VicHJvZyh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxcIlxcXFxcXG4rXFx0XFx0Kih1NjQgKikocjEwIC0gOCkgPSByMTtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHI2ID0gLTg7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyNiArPSByMTA7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqKHU2NCAqKShyNiArIDApID0gcjI7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyNyA9ICoodTY0ICopKHIxMCAtIDgpO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Kih1NjQgKikocjcgKyAwKSA9IHIzO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjAgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcXCI6OjogX19jbG9iYmVyX2FsbCk7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NToyOS4wMTYxODY0NzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzI1NDY0NTgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkanVzdF9wdHJfbWluX21heF92YWxzXCIsXG4gICAgXCJhZGp1c3RfcmVnX21pbl9tYXhfdmFsc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgYHNjYWxhciArPSBwb2ludGVyYCBvcGVyYXRpb25zIGRpZCBub3QgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGUgY29tcGxldGUgcG9pbnRlciByZWdpc3RlciBzdGF0ZSB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDg4Y2IyZDM5OGUwMjA5MTM0MzQ4NjE3ZDgzOTA5ZmM4YzMwMzIwNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDAwOjQ1OjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA1MmJlMGExMThjY2UwNy4uMThmYjYyNjc2OTJjNWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTEzNzI2LDExICsxMzcyNiwxNCBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRzNjQgc21pbl92YWwgPSByZWdfc21pbihvZmZfcmVnKSwgc21heF92YWwgPSByZWdfc21heChvZmZfcmVnKTtcbiBcdHU2NCB1bWluX3ZhbCA9IHJlZ191bWluKG9mZl9yZWcpLCB1bWF4X3ZhbCA9IHJlZ191bWF4KG9mZl9yZWcpO1xuIFx0c3RydWN0IGJwZl9zYW5pdGl6ZV9pbmZvIGluZm8gPSB7fTtcbitcdGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpvcmlnX29mZl9yZWcgPSBvZmZfcmVnO1xuK1x0Ym9vbCBwdHJfaXNfZHN0X3JlZztcbiBcdHU4IG9wY29kZSA9IEJQRl9PUChpbnNuLVx1MDAzZWNvZGUpO1xuIFx0dTMyIGRzdCA9IGluc24tXHUwMDNlZHN0X3JlZztcbiBcdGludCByZXQsIGJvdW5kc19yZXQ7XG4gXG4gXHRkc3RfcmVnID0gXHUwMDI2cmVnc1tkc3RdO1xuK1x0cHRyX2lzX2RzdF9yZWcgPSBwdHJfcmVnID09IGRzdF9yZWc7XG4gXG4gXHRpZiAoKGtub3duIFx1MDAyNlx1MDAyNiAoc21pbl92YWwgIT0gc21heF92YWwgfHwgdW1pbl92YWwgIT0gdW1heF92YWwpKSB8fFxuIFx0ICAgIHNtaW5fdmFsIFx1MDAzZSBzbWF4X3ZhbCB8fCB1bWluX3ZhbCBcdTAwM2UgdW1heF92YWwpIHtcbkBAIC0xMzc2MCwxMyArMTM3NjMsNiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuLVx0Lypcbi1cdCAqIEFjY2Vzc2VzIHRvIHVudHJ1c3RlZCBQVFJfVE9fTUVNIGFyZSBkb25lIHRocm91Z2ggcHJvYmVcbi1cdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byB0cmFjayBvZmZzZXRzLlxuLVx0ICovXG4tXHRpZiAoYmFzZV90eXBlKHB0cl9yZWctXHUwMDNldHlwZSkgPT0gUFRSX1RPX01FTSBcdTAwMjZcdTAwMjYgKHB0cl9yZWctXHUwMDNldHlwZSBcdTAwMjYgUFRSX1VOVFJVU1RFRCkpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0c3dpdGNoIChiYXNlX3R5cGUocHRyX3JlZy1cdTAwM2V0eXBlKSkge1xuIFx0Y2FzZSBQVFJfVE9fQ1RYOlxuIFx0Y2FzZSBQVFJfVE9fTUFQX1ZBTFVFOlxuQEAgLTEzNzk2LDExICsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuLVx0LyogSW4gY2FzZSBvZiAnc2NhbGFyICs9IHBvaW50ZXInLCBkc3RfcmVnIGluaGVyaXRzIHBvaW50ZXIgdHlwZSBhbmQgaWQuXG4tXHQgKiBUaGUgaWQgbWF5IGJlIG92ZXJ3cml0dGVuIGxhdGVyIGlmIHdlIGNyZWF0ZSBhIG5ldyB2YXJpYWJsZSBvZmZzZXQuXG4rXHQvKiBGb3IgJ3NjYWxhciArPSBwb2ludGVyJywgZHN0X3JlZyBpbmhlcml0cyB0aGUgY29tcGxldGUgcG9pbnRlclxuK1x0ICogcmVnaXN0ZXIgc3RhdGUuIEluZGl2aWR1YWwgZmllbGRzIG1heSBiZSBhZGp1c3RlZCBsYXRlciBieSBwb2ludGVyXG4rXHQgKiBhcml0aG1ldGljLlxuIFx0ICovXG4tXHRkc3RfcmVnLVx1MDAzZXR5cGUgPSBwdHJfcmVnLVx1MDAzZXR5cGU7XG4tXHRkc3RfcmVnLVx1MDAzZWlkID0gcHRyX3JlZy1cdTAwM2VpZDtcbitcdGlmICghcHRyX2lzX2RzdF9yZWcpIHtcbitcdFx0ZW52LVx1MDAzZWZha2VfcmVnWzBdID0gKm9mZl9yZWc7XG4rXHRcdG9mZl9yZWcgPSBcdTAwMjZlbnYtXHUwMDNlZmFrZV9yZWdbMF07XG4rXHRcdCpkc3RfcmVnID0gKnB0cl9yZWc7XG4rXHR9XG4rXG4rXHQvKlxuK1x0ICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZVxuK1x0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuXG4rXHQgKi9cbitcdGlmIChiYXNlX3R5cGUocHRyX3JlZy1cdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFx1MDAyNlx1MDAyNiAocHRyX3JlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKSlcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAoIWNoZWNrX3JlZ19zYW5lX29mZnNldF9zY2FsYXIoZW52LCBvZmZfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpIHx8XG4gXHQgICAgIWNoZWNrX3JlZ19zYW5lX29mZnNldF9wdHIoZW52LCBwdHJfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpKVxuQEAgLTEzODEzLDcgKzEzODIwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRyZXQgPSBzYW5pdGl6ZV9wdHJfYWx1KGVudiwgaW5zbiwgcHRyX3JlZywgb2ZmX3JlZywgZHN0X3JlZyxcbiBcdFx0XHRcdCAgICAgICBcdTAwMjZpbmZvLCBmYWxzZSk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7XG4rXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTtcbiBcdH1cbiBcbiBcdHN3aXRjaCAob3Bjb2RlKSB7XG5AQCAtMTM4NDMsNyArMTM4NTAsNyBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9TVUI6XG4tXHRcdGlmIChkc3RfcmVnID09IG9mZl9yZWcpIHtcbitcdFx0aWYgKCFwdHJfaXNfZHN0X3JlZykge1xuIFx0XHRcdC8qIHNjYWxhciAtPSBwb2ludGVyLiAgQ3JlYXRlcyBhbiB1bmtub3duIHNjYWxhciAqL1xuIFx0XHRcdHZlcmJvc2UoZW52LCBcIlIlZCB0cmllZCB0byBzdWJ0cmFjdCBwb2ludGVyIGZyb20gc2NhbGFyXFxuXCIsXG4gXHRcdFx0XHRkc3QpO1xuQEAgLTEzOTA2LDcgKzEzOTEzLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHR9XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7XG4rXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmNcbmluZGV4IDk0NDg5YWM2NGRhOGVmLi43ZGE0MjY2YmFlMDliMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xuQEAgLTE2MzUsNiArMTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKVxuICAgICAgICAgcmV0dXJuIDA7XG4gfVxuIFxuKy8qIEEgY29tbXV0ZWQgYWRkIHNob3VsZCBwcmVzZXJ2ZSB0aGUgcGFyZW50IGlkIG9mIGEgZHlucHRyIGRhdGEgc2xpY2UuXG4rICovXG4rU0VDKFwiP3Jhd190cFwiKVxuK19fZmFpbHVyZSBfX21zZyhcImludmFsaWQgbWVtIGFjY2VzcyAnc2NhbGFyJ1wiKVxuK2ludCBkeW5wdHJfc2xpY2VfY29tbXV0ZWRfaW52YWxpZGF0ZSh2b2lkICpjdHgpXG4re1xuK1x0c3RydWN0IGJwZl9keW5wdHIgcHRyO1xuK1x0X191MzIgKnNsaWNlLCAqZGVyaXZlZDtcbitcbitcdGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyKFx1MDAyNnJpbmdidWYsIHNpemVvZihfX3UzMiksIDAsIFx1MDAyNnB0cik7XG4rXG4rXHRzbGljZSA9IGJwZl9keW5wdHJfZGF0YShcdTAwMjZwdHIsIDAsIHNpemVvZihfX3UzMikpO1xuK1x0aWYgKCFzbGljZSlcbitcdFx0Z290byBkb25lO1xuK1xuK1x0YXNtIHZvbGF0aWxlIChcIiVbZHN0XSA9IDA7XCJcbitcdFx0XCIlW2RzdF0gKz0gJVtzcmNdO1wiXG4rXHRcdFwiJVtzcmNdID0gMDtcIlxuK1x0XHQ6IFtkc3RdXCI9XHUwMDI2clwiKGRlcml2ZWQpLCBbc3JjXVwiK3JcIihzbGljZSlcbitcdFx0OlxuK1x0XHQ6IFwibWVtb3J5XCIpO1xuK1xuK1x0YnBmX3JpbmdidWZfZGlzY2FyZF9keW5wdHIoXHUwMDI2cHRyLCAwKTtcbitcdHZhbCA9ICpkZXJpdmVkO1xuK1x0cmV0dXJuIDA7XG4rXG4rZG9uZTpcbitcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFx1MDAyNnB0ciwgMCk7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogSWYgdGhlIGR5bnB0ciBpcyB3cml0dGVuIGludG8gaW4gYSBjYWxsYmFjayBmdW5jdGlvbiwgaXRzIGRhdGFcbiAgKiBzbGljZXMgc2hvdWxkIGJlIGludmFsaWRhdGVkIGFzIHdlbGwuXG4gICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xuaW5kZXggNWI0NDUzNzQ3YzIzMDguLmYxNjZmZmY4ZjIxNzYxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jXG5AQCAtMjI2LDQgKzIyNiwyMSBAQCBpbnQgbnVsbF9jaGVjayh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19yZXR2YWwoMSlcbitpbnQgbGR4X2lzX29rX2NvbW11dGVkX2FkZHIodm9pZCAqY3R4KVxuK3tcbitcdGludCB2LCAqcCwgKmRlcml2ZWQ7XG4rXG4rXHR2ID0gMTtcbitcdHAgPSBicGZfcmRvbmx5X2Nhc3QoXHUwMDI2diwgMCk7XG4rXHRhc20gdm9sYXRpbGUgKFwiJVtkc3RdID0gMDtcIlxuK1x0XHRcIiVbZHN0XSArPSAlW3NyY107XCJcbitcdFx0OiBbZHN0XVwiPVx1MDAyNnJcIihkZXJpdmVkKVxuK1x0XHQ6IFtzcmNdXCJyXCIocClcbitcdFx0OiBcIm1lbW9yeVwiKTtcbitcdHJldHVybiAqZGVyaXZlZDtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbmluZGV4IGZiNjJlMDlmMjExNDZkLi5kM2RmN2E5ZjFkOGM4NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xuQEAgLTk3LDQgKzk3LDQ1IEBAIF9fbmFrZWQgdm9pZCBtaXNhbGlnbmVkX3JlYWRfZnJvbV9zdGFjayh2b2lkKVxuIFwiXHQ6OjogX19jbG9iYmVyX2FsbCk7XG4gfVxuIFxuK1NFQyhcInNvY2tldFwiKVxuK19fZGVzY3JpcHRpb24oXCJzdGFjayBwb2ludGVyIGFyaXRobWV0aWMgcHJlc2VydmVzIGZyYW1lIG51bWJlclwiKVxuK19fZmFpbHVyZSBfX21zZyhcIlI3IGludmFsaWQgbWVtIGFjY2VzcyAnc2NhbGFyJ1wiKVxuK19fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm8odm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFwiXFxcbitcdFx0cjMgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRcdCoodTY0ICopKHIxMCAtIDgpID0gcjM7XHRcdFx0XFxcbitcdFx0cjEgPSAlW21hcF9oYXNoXzhiXSBsbDtcdFx0XHRcXFxuK1x0XHRyMiA9IHIxMDtcdFx0XHRcdFx0XFxcbitcdFx0cjIgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRcdGNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTtcdFx0XFxcbitcdFx0aWYgcjAgIT0gMCBnb3RvICsyO1x0XHRcdFxcXG4rXHRcdHIwID0gMDtcdFx0XHRcdFx0XHRcXFxuK1x0XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXHRcdHIxID0gcjA7XHRcdFx0XHRcdFxcXG4rXHRcdHIyID0gMDtcdFx0XHRcdFx0XHRcXFxuK1x0XHRyMyA9IDA7XHRcdFx0XHRcdFx0XFxcbitcdFx0Y2FsbCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm9fc3VicHJvZztcXFxuK1x0XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbitcdFx0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuK1x0XCI6XG4rXHQ6IF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLFxuK1x0ICBfX2ltbV9hZGRyKG1hcF9oYXNoXzhiKVxuK1x0OiBfX2Nsb2JiZXJfYWxsKTtcbit9XG4rXG4rc3RhdGljIF9fdXNlZCBfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2codm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFwiXFxcbitcdFx0Kih1NjQgKikocjEwIC0gOCkgPSByMTtcdFx0XHRcXFxuK1x0XHRyNiA9IC04O1x0XHRcdFx0XHRcXFxuK1x0XHRyNiArPSByMTA7XHRcdFx0XHRcdFxcXG4rXHRcdCoodTY0ICopKHI2ICsgMCkgPSByMjtcdFx0XHRcXFxuK1x0XHRyNyA9ICoodTY0ICopKHIxMCAtIDgpO1x0XHRcdFxcXG4rXHRcdCoodTY0ICopKHI3ICsgMCkgPSByMztcdFx0XHRcXFxuK1x0XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbitcdFx0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuK1x0XCI6OjogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI5LjAxNjE4NzcxMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDUwOTY0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgY291cGxlIG9mIG5ldyB2YXJpYWJsZXMsIGBvcmlnX29mZl9yZWdgIGFuZCBgcHRyX2lzX2RzdF9yZWdgLCBhbmQgZnVuZGFtZW50YWxseSBhbHRlcmVkIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGUgYHNjYWxhciArPSBwb2ludGVyYCBpbnN0cnVjdGlvbiBwYXR0ZXJuLiBQcmV2aW91c2x5LCB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgKGBkc3RfcmVnYCkgc2ltcGx5IGluaGVyaXRlZCB0aGUgdHlwZSBhbmQgSUQgZnJvbSB0aGUgcG9pbnRlciByZWdpc3RlciAoYHB0cl9yZWdgKS4gTm93LCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIGRvaW5nIHNvbWV0aGluZyBkaWZmZXJlbnQuXG5cblRoZSBuZXcgbG9naWMgaXMgaW50ZXJlc3Rpbmc6IGlmIGBwdHJfaXNfZHN0X3JlZ2AgaXMgZmFsc2UsIGl0IHVzZXMgYSBgZmFrZV9yZWdgIGZvciBhIHRlbXBvcmFyeSBob2xkaW5nIHNwb3QgYW5kIHNldHMgYGRzdF9yZWdgIHRvIHRoZSB2YWx1ZSBvZiB0aGUgcG9pbnRlciByZWdpc3Rlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byByZWZpbmluZyBwb2ludGVyIGFyaXRobWV0aWMgYW5hbHlzaXMsIGFsbG93aW5nIG1vcmUgcHJlY2lzZSBib3VuZHMgdHJhY2tpbmcgYWZ0ZXIgb3BlcmF0aW9ucyB0aGF0IGNvbWJpbmUgcG9pbnRlcnMgYW5kIHNjYWxhcnMuIEl0IHNlZW1zIHRoYXQgdGhleSBoYXZlIGVuaGFuY2VkIHRoZSBoYW5kbGluZyBvZiBob3cgcG9pbnRlciByZWdpc3RlcnMgYXJlIHVwZGF0ZWQgd2l0aCBzY2FsYXIgYXJpdGhtZXRpYy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBpbnRlcnByZXRhdGlvbiBpcyBjb3JyZWN0LiBUaGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBzb21lIGNhbGxzIHRvIGBzYW5pdGl6ZV9lcnJgIHRvIHVzZSBgb3JpZ19vZmZfcmVnYCBpbnN0ZWFkIG9mIGBvZmZfcmVnYC4gVGhpcyBzdWdnZXN0cyB0aGUgY2hhbmdlcyBhcmUgbm90IHB1cmVseSBjb3NtZXRpYzsgdGhleSBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgYmVoYXZpb3Igb2YgdGhlIHZlcmlmaWVyLCBwb3RlbnRpYWxseSBpbiBob3cgZXJyb3IgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIG9wZXJhdGlvbnMuXG5cbkFscmlnaHQsIGxldCdzIHpvb20gb3V0IGFuZCBjb25zaWRlciB0aGUgY29udGV4dC4gU2luY2UgdGhpcyBpcyBhIEJQRiB2ZXJpZmllciBjaGFuZ2UsIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AgaXMgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzIHRvIGFkanVzdCBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiBwb2ludGVycy4gR2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGNoYW5nZXMsIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhIGZ1bmN0aW9uYWwgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdmVyaWZpZXIgaXMgZW5hYmxlZC4gSSBrbm93IGBDT05GSUdfQlBGX1NZU0NBTExgIHBsYXlzIGEgcm9sZTsgSSdsbCBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBvciBtYXliZSBldmVuIGBpbml0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIHZlcmlmaWVyIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTozNS4zMjEyODY2MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4Nzg4MzQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTozOS41MDkxNzcwMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUwMDg5MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEJQRiBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyB0aGUga2V5IGNvbmZpZyBzZXR0aW5nIGhlcmUuIEl0IGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIHRvIHRoZSBhcmVhIG9mIGludmVzdGlnYXRpb247IHdlJ3JlIGxpa2VseSBsb29raW5nIGF0IHRyYWNpbmcsIHNlY3VyaXR5LCBvciBwZXJoYXBzIHN5c3RlbSBjYWxsIGZpbHRlcmluZyB3aXRoaW4gYSBCUEYgY29udGV4dC4gTXkgbmV4dCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbGVtZW50cyByZWxhdGVkIHRvIHRoaXMgY29uZmlndXJhdGlvbi5cblxuVGhlIGltbWVkaWF0ZSBnb2FsIGlzIHRvIHRyYWNrIGRvd24gdGhlIGZvY3VzIHN5bWJvbHMsIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMgdGhlIGZ1bmN0aW9uIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB3aXRoaW4gdGhlIGBCUEZfU1lTQ0FMTGAgc2V0dXAsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbi5cblxuVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmb2xsb3cgdXAgaXMgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgb2YgYGFkanVzdF9wdHJfbWluX21heF92YWxzYC4gU2VlaW5nIHdoZXJlIGl0J3MgYmVpbmcgaW52b2tlZCB3aWxsIG9mZmVyIGNvbnRleHQsIHJldmVhbGluZyBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0gY2FsbCBwYXRoIGFuZCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIHBvdGVudGlhbGx5IGFmZmVjdGVkLiBUaGlzIHF1aWNrbHkgbGVhZHMgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW5mbHVlbmNlIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjQyLjk1OTI2ODUxMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI0NTUzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz00MDAzPXN0YXRpYyBpbnQgY2hlY2tfc3RhY2tfcmVhZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQwMjctXFx0ICogY2hlY2tfc3RhY2tfYWNjZXNzX2Zvcl9wdHJfYXJpdGhtZXRpYygpIGNhbGxlZCBieVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MDI4OlxcdCAqIGFkanVzdF9wdHJfbWluX21heF92YWxzKCkgcHJldmVudHMgdXNlcnMgZnJvbSBjcmVhdGluZyBzdGFjayBwb2ludGVyc1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MDI5LVxcdCAqIHdpdGggdmFyaWFibGUgb2Zmc2V0cywgdGhlcmVmb3JlIG5vIGNoZWNrIGlzIHJlcXVpcmVkIGhlcmUuIEZ1cnRoZXIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM2ODA9c3RhdGljIGludCBzYW5pdGl6ZV9jaGVja19ib3VuZHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzcxNi0gKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTM3MTc6c3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzcxOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ4MDg9c3RhdGljIGludCBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODcwLVxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0ODcxOlxcdFxcdFxcdFxcdHJldHVybiBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhlbnYsIGluc24sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODcyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzcmNfcmVnLCBkc3RfcmVnKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg3OC1cXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDg3OTpcXHRcXHRcXHRyZXR1cm4gYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoZW52LCBpbnNuLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg4MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgZHN0X3JlZywgc3JjX3JlZyk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4OTQtXFx0XFx0aWYgKHB0cl9yZWcpIC8qIHBvaW50ZXIgKz0gSyAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDg5NTpcXHRcXHRcXHRyZXR1cm4gYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoZW52LCBpbnNuLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg5Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgcHRyX3JlZywgc3JjX3JlZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjQzLjA2MTcyOTc1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjE3MzY3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgTGluZWFnZSBvZiBEYXRhIFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IHdlJ3JlIGhhbmRsaW5nIHRoZSB2YWxpZGF0aW9uIG9mIG91ciByZWdpc3RlciBtaW4vbWF4IHZhbHVlcy4gSSBzZWUgdGhhdCBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGlzIGNhbGxlZCBieSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLiBUaGF0J3MgdGhlIGltbWVkaWF0ZSBjb25uZWN0aW9uLCBidXQgaXQncyBub3QgdGhlIHdob2xlIHN0b3J5LiBUaGUgcmVhbCBlbnRyeSBwb2ludCBzZWVtcyB0byBiZSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLCBhbmQgKnRoYXQqIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgZG9fY2hlY2tgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNoYWluIG9mIHJlc3BvbnNpYmlsaXR5IGJldHRlci4gVGhlcmVmb3JlLCBJIHdhbnQgdG8gZHJpbGwgaW50byBib3RoIGBhZGp1c3RfcmVnX21pbl9tYXhfdmFsc2AgYW5kIGBkb19jaGVja2Agbm93LCBzbyBJIGhhdmUgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjkwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6NDYuNjgzNDcwMDIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODMyMzQyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGp1c3RfcmVnX21pbl9tYXhfdmFsc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE0NjUwPXN0YXRpYyBpbnQgYWRqdXN0X3NjYWxhcl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDgwNy0gKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQ4MDg6c3RhdGljIGludCBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDgwOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ5NzY9c3RhdGljIGludCBjaGVja19hbHVfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE1MTU2LVxcdFxcdGVyciA9IGNoZWNrX3JlZ19hcmcoZW52LCBpbnNuLVxcdTAwM2Vkc3RfcmVnLCBEU1RfT1BfTk9fTUFSSyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE1MTU3OlxcdFxcdGVyciA9IGVyciA/OiBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhlbnYsIGluc24pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNTE1OC1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo0Ni43OTE3OTgyOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzI1MTE2MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIFRoZSBrZXkgaGVyZSBpcyB0aGUgZml4IGZvciB0aGF0IGBzY2FsYXIgKz0gcG9pbnRlcmAgaXNzdWUgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgIGlzIGNhbGxlZCBieSBgY2hlY2tfYWx1X29wYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGRvX2NoZWNrYC4gVGhhdCBjaGFpbiBvZiBjYWxscyBpcyBpbXBvcnRhbnQgZm9yIGNvbnRleHQuIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AgbG9va3MgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcsIGJ1dCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGl0J3MgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgcmVhY2hhYmxlLCBtYWtlcyBpdCBmdXp6YWJsZSwgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5J3JlIGluIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIGhhdmUgZGVidWcgaW5mby5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgd2Fzbid0IHByb3Blcmx5IGluaGVyaXRpbmcgdGhlIGZ1bGwgcG9pbnRlciByZWdpc3RlciBzdGF0ZSBkdXJpbmcgdGhhdCBgc2NhbGFyICs9IHBvaW50ZXJgIG9wZXJhdGlvbi4gSW4gZXNzZW5jZSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCdzIGZpeGluZyBob3cgdGhlIHZlcmlmaWVyIGhhbmRsZXMgcG9pbnRlciBhcml0aG1ldGljLCBzcGVjaWZpY2FsbHkgaW4gdGhpcyBjYXNlLCB0aGUgYCs9YCBvcGVyYXRpb24gd2l0aCBhIHNjYWxhciB2YWx1ZSBhbmQgYSBwb2ludGVyLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBwYXRjaCBtb2RpZmllcyBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYWRkcyB0ZXN0IGNhc2VzLCB0aGUgdGVzdHMgdGhlbXNlbHZlcyByZWx5IG9uIHNldmVyYWwgQlBGIGZlYXR1cmVzLCBuYW1lbHkgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCwgYGJwZl9keW5wdHJfZGF0YWAsIGFuZCBgYnBmX3Jkb25seV9jYXN0YC4gVGhhdCBzYWlkLCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGlzIHVuZG91YnRlZGx5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBgQ09ORklHX0JQRl9KSVRgIG1pZ2h0IGJlIGJlbmVmaWNpYWwgZm9yIHRlc3RpbmcgcHVycG9zZXMsIGJ1dCBpdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkuIFNvIEknbGwganVzdCBsaXN0IGBCUEZfU1lTQ0FMTGAgYXMgYSByZXF1aXJlZCBjb25maWcuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgaW1wb3J0YW50IHN5bWJvbHMuIEkndmUgcmUtY29uZmlybWVkIHRoYXQgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBpcyBzdGF0aWMuIEV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCdzIHN0aWxsIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEdpdmVuIHRoYXQgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucywgaXQgaXMgc3RpbGwgYSB2aWFibGUgdGFyZ2V0LiBTbyBJJ2xsIGFsc28gaW5jbHVkZSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLCBzaW5jZSBpdCdzIGRpcmVjdGx5IHJlbGF0ZWQuXG5cbkxldCBtZSByZXZpZXcgdGhlIGNvZGUgYWdhaW4uLi4gWWVwLCB0aGlzIGNvbmZpcm1zIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlOlxuXG5gYGBjXG5cdC8qIEZvciAnc2NhbGFyICs9IHBvaW50ZXInLCBkc3RfcmVnIGluaGVyaXRzIHRoZSBjb21wbGV0ZSBwb2ludGVyXG5cdCAqIHJlZ2lzdGVyIHN0YXRlLiBJbmRpdmlkdWFsIGZpZWxkcyBtYXkgYmUgYWRqdXN0ZWQgbGF0ZXIgYnkgcG9pbnRlclxuXHQgKiBhcml0aG1ldGljLlxuXHQgKi9cblx0aWYgKCFwdHJfaXNfZHN0X3JlZykge1xuXHRcdGVudi1cdTAwM2VmYWtlX3JlZ1swXSA9ICpvZmZfcmVnO1xuXHRcdG9mZl9yZWcgPSBcdTAwMjZlbnYtXHUwMDNlZmFrZV9yZWdbMF07XG5cdFx0KmRzdF9yZWcgPSAqcHRyX3JlZztcblx0fVxuYGBgXG5cblRoaXMgcGF0Y2ggY2xlYXJseSBtb2RpZmllcyB0aGUgdmVyaWZpZXIncyBiZWhhdmlvciByZWxhdGVkIHRvIHBvaW50ZXIgYXJpdGhtZXRpYy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGUgY29ycmVjdGVkIHByb3BhZ2F0aW9uIG9mIHRoZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIGR1cmluZyBzY2FsYXIgYWRkaXRpb24uIFRoaXMgY291bGQgZWFzaWx5IGxlYWQgdG8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBpZiBub3Qgcmlnb3JvdXNseSBmdXp6ZWQuXG5cbkluIHNob3J0OiBUaGlzIHBhdGNoIGlzIGZpeGluZyBob3cgQlBGIGhhbmRsZXMgYHNjYWxhciArPSBwb2ludGVyYCBvcGVyYXRpb25zIGluIHRoZSB2ZXJpZmllciwgcHJvcGFnYXRpbmcgdGhlIHBvaW50ZXIgc3RhdGUgY29ycmVjdGx5LiBUaGlzIGlzIGZ1bmN0aW9uYWwsIHNvIGZ1enppbmcgaXMgY3JpdGljYWwuXG5cbkNvbmZpZ3M6IGBCUEZfU1lTQ0FMTGBcbkZvY3VzU3ltYm9sczogYGFkanVzdF9wdHJfbWluX21heF92YWxzYCwgYGFkanVzdF9yZWdfbWluX21heF92YWxzYFxuXG5UaW1lIHRvIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODM4LCJPdXRwdXRUb2tlbnMiOjEyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo1Ni4xMTY5MTY0MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5MTEwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNcIixcbiAgICBcImFkanVzdF9yZWdfbWluX21heF92YWxzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBgc2NhbGFyICs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkanVzdF9wdHJfbWluX21heF92YWxzXCIsXG4gICAgXCJhZGp1c3RfcmVnX21pbl9tYXhfdmFsc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgYHNjYWxhciArPSBwb2ludGVyYCBvcGVyYXRpb25zIGRpZCBub3QgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGUgY29tcGxldGUgcG9pbnRlciByZWdpc3RlciBzdGF0ZSB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 00:08:03 +0000 UTC FinishedAt: 2026-07-23 00:45:57 +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": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "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": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "91e57a35-b45b-4a8c-a44f-4ba29a9f17b0" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "adjust_ptr_min_max_vals", "adjust_reg_min_max_vals" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMmIzM0OywKICAgICYjMzQ7YWRqdXN0X3JlZ19taW5fbWF4X3ZhbHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBgc2NhbGFyICYjNDM7PSBwb2ludGVyYCBvcGVyYXRpb25zIGRpZCBub3QgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGUgY29tcGxldGUgcG9pbnRlciByZWdpc3RlciBzdGF0ZSB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkODhjYjJkMzk4ZTAyMDkxMzQzNDg2MTdkODM5MDlmYzhjMzAzMjA1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDA6NDU6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA1MmJlMGExMThjY2UwNy4uMThmYjYyNjc2OTJjNWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTEzNzI2LDExICYjNDM7MTM3MjYsMTQgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0czY0IHNtaW5fdmFsID0gcmVnX3NtaW4ob2ZmX3JlZyksIHNtYXhfdmFsID0gcmVnX3NtYXgob2ZmX3JlZyk7XG4gXHR1NjQgdW1pbl92YWwgPSByZWdfdW1pbihvZmZfcmVnKSwgdW1heF92YWwgPSByZWdfdW1heChvZmZfcmVnKTtcbiBcdHN0cnVjdCBicGZfc2FuaXRpemVfaW5mbyBpbmZvID0ge307XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKm9yaWdfb2ZmX3JlZyA9IG9mZl9yZWc7XG4mIzQzO1x0Ym9vbCBwdHJfaXNfZHN0X3JlZztcbiBcdHU4IG9wY29kZSA9IEJQRl9PUChpbnNuLVx1MDAzZWNvZGUpO1xuIFx0dTMyIGRzdCA9IGluc24tXHUwMDNlZHN0X3JlZztcbiBcdGludCByZXQsIGJvdW5kc19yZXQ7XG4gXG4gXHRkc3RfcmVnID0gXHUwMDI2cmVnc1tkc3RdO1xuJiM0MztcdHB0cl9pc19kc3RfcmVnID0gcHRyX3JlZyA9PSBkc3RfcmVnO1xuIFxuIFx0aWYgKChrbm93biBcdTAwMjZcdTAwMjYgKHNtaW5fdmFsICE9IHNtYXhfdmFsIHx8IHVtaW5fdmFsICE9IHVtYXhfdmFsKSkgfHxcbiBcdCAgICBzbWluX3ZhbCBcdTAwM2Ugc21heF92YWwgfHwgdW1pbl92YWwgXHUwMDNlIHVtYXhfdmFsKSB7XG5AQCAtMTM3NjAsMTMgJiM0MzsxMzc2Myw2IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0cmV0dXJuIC1FQUNDRVM7XG4gXHR9XG4gXG4tXHQvKlxuLVx0ICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZVxuLVx0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuXG4tXHQgKi9cbi1cdGlmIChiYXNlX3R5cGUocHRyX3JlZy1cdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFx1MDAyNlx1MDAyNiAocHRyX3JlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRzd2l0Y2ggKGJhc2VfdHlwZShwdHJfcmVnLVx1MDAzZXR5cGUpKSB7XG4gXHRjYXNlIFBUUl9UT19DVFg6XG4gXHRjYXNlIFBUUl9UT19NQVBfVkFMVUU6XG5AQCAtMTM3OTYsMTEgJiM0MzsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuLVx0LyogSW4gY2FzZSBvZiAmIzM5O3NjYWxhciAmIzQzOz0gcG9pbnRlciYjMzk7LCBkc3RfcmVnIGluaGVyaXRzIHBvaW50ZXIgdHlwZSBhbmQgaWQuXG4tXHQgKiBUaGUgaWQgbWF5IGJlIG92ZXJ3cml0dGVuIGxhdGVyIGlmIHdlIGNyZWF0ZSBhIG5ldyB2YXJpYWJsZSBvZmZzZXQuXG4mIzQzO1x0LyogRm9yICYjMzk7c2NhbGFyICYjNDM7PSBwb2ludGVyJiMzOTssIGRzdF9yZWcgaW5oZXJpdHMgdGhlIGNvbXBsZXRlIHBvaW50ZXJcbiYjNDM7XHQgKiByZWdpc3RlciBzdGF0ZS4gSW5kaXZpZHVhbCBmaWVsZHMgbWF5IGJlIGFkanVzdGVkIGxhdGVyIGJ5IHBvaW50ZXJcbiYjNDM7XHQgKiBhcml0aG1ldGljLlxuIFx0ICovXG4tXHRkc3RfcmVnLVx1MDAzZXR5cGUgPSBwdHJfcmVnLVx1MDAzZXR5cGU7XG4tXHRkc3RfcmVnLVx1MDAzZWlkID0gcHRyX3JlZy1cdTAwM2VpZDtcbiYjNDM7XHRpZiAoIXB0cl9pc19kc3RfcmVnKSB7XG4mIzQzO1x0XHRlbnYtXHUwMDNlZmFrZV9yZWdbMF0gPSAqb2ZmX3JlZztcbiYjNDM7XHRcdG9mZl9yZWcgPSBcdTAwMjZlbnYtXHUwMDNlZmFrZV9yZWdbMF07XG4mIzQzO1x0XHQqZHN0X3JlZyA9ICpwdHJfcmVnO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXG4mIzQzO1x0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJhc2VfdHlwZShwdHJfcmVnLVx1MDAzZXR5cGUpID09IFBUUl9UT19NRU0gXHUwMDI2XHUwMDI2IChwdHJfcmVnLVx1MDAzZXR5cGUgXHUwMDI2IFBUUl9VTlRSVVNURUQpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAoIWNoZWNrX3JlZ19zYW5lX29mZnNldF9zY2FsYXIoZW52LCBvZmZfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpIHx8XG4gXHQgICAgIWNoZWNrX3JlZ19zYW5lX29mZnNldF9wdHIoZW52LCBwdHJfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpKVxuQEAgLTEzODEzLDcgJiM0MzsxMzgyMCw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0cmV0ID0gc2FuaXRpemVfcHRyX2FsdShlbnYsIGluc24sIHB0cl9yZWcsIG9mZl9yZWcsIGRzdF9yZWcsXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2aW5mbywgZmFsc2UpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRcdHJldHVybiBzYW5pdGl6ZV9lcnIoZW52LCBpbnNuLCByZXQsIG9mZl9yZWcsIGRzdF9yZWcpO1xuJiM0MztcdFx0XHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvcmlnX29mZl9yZWcsIGRzdF9yZWcpO1xuIFx0fVxuIFxuIFx0c3dpdGNoIChvcGNvZGUpIHtcbkBAIC0xMzg0Myw3ICYjNDM7MTM4NTAsNyBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9TVUI6XG4tXHRcdGlmIChkc3RfcmVnID09IG9mZl9yZWcpIHtcbiYjNDM7XHRcdGlmICghcHRyX2lzX2RzdF9yZWcpIHtcbiBcdFx0XHQvKiBzY2FsYXIgLT0gcG9pbnRlci4gIENyZWF0ZXMgYW4gdW5rbm93biBzY2FsYXIgKi9cbiBcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7UiVkIHRyaWVkIHRvIHN1YnRyYWN0IHBvaW50ZXIgZnJvbSBzY2FsYXJcXG5cJiMzNDssXG4gXHRcdFx0XHRkc3QpO1xuQEAgLTEzOTA2LDcgJiM0MzsxMzkxMyw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0fVxuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRcdHJldHVybiBzYW5pdGl6ZV9lcnIoZW52LCBpbnNuLCByZXQsIG9mZl9yZWcsIGRzdF9yZWcpO1xuJiM0MztcdFx0XHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvcmlnX29mZl9yZWcsIGRzdF9yZWcpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xuaW5kZXggOTQ0ODlhYzY0ZGE4ZWYuLjdkYTQyNjZiYWUwOWIxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jXG5AQCAtMTYzNSw2ICYjNDM7MTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKVxuICAgICAgICAgcmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKiBBIGNvbW11dGVkIGFkZCBzaG91bGQgcHJlc2VydmUgdGhlIHBhcmVudCBpZCBvZiBhIGR5bnB0ciBkYXRhIHNsaWNlLlxuJiM0MzsgKi9cbiYjNDM7U0VDKFwmIzM0Oz9yYXdfdHBcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtpbnZhbGlkIG1lbSBhY2Nlc3MgJiMzOTtzY2FsYXImIzM5O1wmIzM0OylcbiYjNDM7aW50IGR5bnB0cl9zbGljZV9jb21tdXRlZF9pbnZhbGlkYXRlKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcbiYjNDM7XHRfX3UzMiAqc2xpY2UsICpkZXJpdmVkO1xuJiM0MztcbiYjNDM7XHRicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cihcdTAwMjZyaW5nYnVmLCBzaXplb2YoX191MzIpLCAwLCBcdTAwMjZwdHIpO1xuJiM0MztcbiYjNDM7XHRzbGljZSA9IGJwZl9keW5wdHJfZGF0YShcdTAwMjZwdHIsIDAsIHNpemVvZihfX3UzMikpO1xuJiM0MztcdGlmICghc2xpY2UpXG4mIzQzO1x0XHRnb3RvIGRvbmU7XG4mIzQzO1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXCYjMzQ7JVtkc3RdID0gMDtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0OyVbZHN0XSAmIzQzOz0gJVtzcmNdO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7JVtzcmNdID0gMDtcJiMzNDtcbiYjNDM7XHRcdDogW2RzdF1cJiMzNDs9XHUwMDI2clwmIzM0OyhkZXJpdmVkKSwgW3NyY11cJiMzNDsmIzQzO3JcJiMzNDsoc2xpY2UpXG4mIzQzO1x0XHQ6XG4mIzQzO1x0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFx1MDAyNnB0ciwgMCk7XG4mIzQzO1x0dmFsID0gKmRlcml2ZWQ7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO1xuJiM0Mztkb25lOlxuJiM0MztcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFx1MDAyNnB0ciwgMCk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLyogSWYgdGhlIGR5bnB0ciBpcyB3cml0dGVuIGludG8gaW4gYSBjYWxsYmFjayBmdW5jdGlvbiwgaXRzIGRhdGFcbiAgKiBzbGljZXMgc2hvdWxkIGJlIGludmFsaWRhdGVkIGFzIHdlbGwuXG4gICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xuaW5kZXggNWI0NDUzNzQ3YzIzMDguLmYxNjZmZmY4ZjIxNzYxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jXG5AQCAtMjI2LDQgJiM0MzsyMjYsMjEgQEAgaW50IG51bGxfY2hlY2sodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7X19yZXR2YWwoMSlcbiYjNDM7aW50IGxkeF9pc19va19jb21tdXRlZF9hZGRyKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdGludCB2LCAqcCwgKmRlcml2ZWQ7XG4mIzQzO1xuJiM0MztcdHYgPSAxO1xuJiM0MztcdHAgPSBicGZfcmRvbmx5X2Nhc3QoXHUwMDI2diwgMCk7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDslW2RzdF0gPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7JVtkc3RdICYjNDM7PSAlW3NyY107XCYjMzQ7XG4mIzQzO1x0XHQ6IFtkc3RdXCYjMzQ7PVx1MDAyNnJcJiMzNDsoZGVyaXZlZClcbiYjNDM7XHRcdDogW3NyY11cJiMzNDtyXCYjMzQ7KHApXG4mIzQzO1x0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuICpkZXJpdmVkO1xuJiM0Mzt9XG4mIzQzO1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xuaW5kZXggZmI2MmUwOWYyMTE0NmQuLmQzZGY3YTlmMWQ4Yzg1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG5AQCAtOTcsNCAmIzQzOzk3LDQ1IEBAIF9fbmFrZWQgdm9pZCBtaXNhbGlnbmVkX3JlYWRfZnJvbV9zdGFjayh2b2lkKVxuIFwmIzM0O1x0Ojo6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiYjNDM7X19kZXNjcmlwdGlvbihcJiMzNDtzdGFjayBwb2ludGVyIGFyaXRobWV0aWMgcHJlc2VydmVzIGZyYW1lIG51bWJlclwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O1I3IGludmFsaWQgbWVtIGFjY2VzcyAmIzM5O3NjYWxhciYjMzk7XCYjMzQ7KVxuJiM0MztfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFwmIzM0O1xcXG4mIzQzO1x0XHRyMyA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCoodTY0ICopKHIxMCAtIDgpID0gcjM7XHRcdFx0XFxcbiYjNDM7XHRcdHIxID0gJVttYXBfaGFzaF84Yl0gbGw7XHRcdFx0XFxcbiYjNDM7XHRcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0cjIgJiM0Mzs9IC04O1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1x0XHRcXFxuJiM0MztcdFx0aWYgcjAgIT0gMCBnb3RvICYjNDM7MjtcdFx0XHRcXFxuJiM0MztcdFx0cjAgPSAwO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyMSA9IHIwO1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0cjIgPSAwO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyMyA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGNhbGwgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2c7XFxcbiYjNDM7XHRcdHIwID0gMDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFwmIzM0OzpcbiYjNDM7XHQ6IF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLFxuJiM0MztcdCAgX19pbW1fYWRkcihtYXBfaGFzaF84YilcbiYjNDM7XHQ6IF9fY2xvYmJlcl9hbGwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgX191c2VkIF9fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm9fc3VicHJvZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcJiMzNDtcXFxuJiM0MztcdFx0Kih1NjQgKikocjEwIC0gOCkgPSByMTtcdFx0XHRcXFxuJiM0MztcdFx0cjYgPSAtODtcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdHI2ICYjNDM7PSByMTA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQqKHU2NCAqKShyNiAmIzQzOyAwKSA9IHIyO1x0XHRcdFxcXG4mIzQzO1x0XHRyNyA9ICoodTY0ICopKHIxMCAtIDgpO1x0XHRcdFxcXG4mIzQzO1x0XHQqKHU2NCAqKShyNyAmIzQzOyAwKSA9IHIzO1x0XHRcdFxcXG4mIzQzO1x0XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGV4aXQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcJiMzNDs6OjogX19jbG9iYmVyX2FsbCk7XG4mIzQzO31cbiYjNDM7XG4gY2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGp1c3RfcHRyX21pbl9tYXhfdmFscyYjMzQ7LAogICAgJiMzNDthZGp1c3RfcmVnX21pbl9tYXhfdmFscyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDg4Y2IyZDM5OGUwMjA5MTM0MzQ4NjE3ZDgzOTA5ZmM4YzMwMzIwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDAwOjQ1OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDUyYmUwYTExOGNjZTA3Li4xOGZiNjI2NzY5MmM1ZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTM3MjYsMTEgJiM0MzsxMzcyNiwxNCBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJczY0IHNtaW5fdmFsID0gcmVnX3NtaW4ob2ZmX3JlZyksIHNtYXhfdmFsID0gcmVnX3NtYXgob2ZmX3JlZyk7CiAJdTY0IHVtaW5fdmFsID0gcmVnX3VtaW4ob2ZmX3JlZyksIHVtYXhfdmFsID0gcmVnX3VtYXgob2ZmX3JlZyk7CiAJc3RydWN0IGJwZl9zYW5pdGl6ZV9pbmZvIGluZm8gPSB7fTsKJiM0MzsJY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKm9yaWdfb2ZmX3JlZyA9IG9mZl9yZWc7CiYjNDM7CWJvb2wgcHRyX2lzX2RzdF9yZWc7CiAJdTggb3Bjb2RlID0gQlBGX09QKGluc24tJmd0O2NvZGUpOwogCXUzMiBkc3QgPSBpbnNuLSZndDtkc3RfcmVnOwogCWludCByZXQsIGJvdW5kc19yZXQ7CiAKIAlkc3RfcmVnID0gJmFtcDtyZWdzW2RzdF07CiYjNDM7CXB0cl9pc19kc3RfcmVnID0gcHRyX3JlZyA9PSBkc3RfcmVnOwogCiAJaWYgKChrbm93biAmYW1wOyZhbXA7IChzbWluX3ZhbCAhPSBzbWF4X3ZhbCB8fCB1bWluX3ZhbCAhPSB1bWF4X3ZhbCkpIHx8CiAJICAgIHNtaW5fdmFsICZndDsgc21heF92YWwgfHwgdW1pbl92YWwgJmd0OyB1bWF4X3ZhbCkgewpAQCAtMTM3NjAsMTMgJiM0MzsxMzc2Myw2IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCi0JLyoKLQkgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlCi0JICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuCi0JICovCi0JaWYgKGJhc2VfdHlwZShwdHJfcmVnLSZndDt0eXBlKSA9PSBQVFJfVE9fTUVNICZhbXA7JmFtcDsgKHB0cl9yZWctJmd0O3R5cGUgJmFtcDsgUFRSX1VOVFJVU1RFRCkpCi0JCXJldHVybiAwOwotCiAJc3dpdGNoIChiYXNlX3R5cGUocHRyX3JlZy0mZ3Q7dHlwZSkpIHsKIAljYXNlIFBUUl9UT19DVFg6CiAJY2FzZSBQVFJfVE9fTUFQX1ZBTFVFOgpAQCAtMTM3OTYsMTEgJiM0MzsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAotCS8qIEluIGNhc2Ugb2YgJiMzOTtzY2FsYXIgJiM0Mzs9IHBvaW50ZXImIzM5OywgZHN0X3JlZyBpbmhlcml0cyBwb2ludGVyIHR5cGUgYW5kIGlkLgotCSAqIFRoZSBpZCBtYXkgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIgaWYgd2UgY3JlYXRlIGEgbmV3IHZhcmlhYmxlIG9mZnNldC4KJiM0MzsJLyogRm9yICYjMzk7c2NhbGFyICYjNDM7PSBwb2ludGVyJiMzOTssIGRzdF9yZWcgaW5oZXJpdHMgdGhlIGNvbXBsZXRlIHBvaW50ZXIKJiM0MzsJICogcmVnaXN0ZXIgc3RhdGUuIEluZGl2aWR1YWwgZmllbGRzIG1heSBiZSBhZGp1c3RlZCBsYXRlciBieSBwb2ludGVyCiYjNDM7CSAqIGFyaXRobWV0aWMuCiAJICovCi0JZHN0X3JlZy0mZ3Q7dHlwZSA9IHB0cl9yZWctJmd0O3R5cGU7Ci0JZHN0X3JlZy0mZ3Q7aWQgPSBwdHJfcmVnLSZndDtpZDsKJiM0MzsJaWYgKCFwdHJfaXNfZHN0X3JlZykgewomIzQzOwkJZW52LSZndDtmYWtlX3JlZ1swXSA9ICpvZmZfcmVnOwomIzQzOwkJb2ZmX3JlZyA9ICZhbXA7ZW52LSZndDtmYWtlX3JlZ1swXTsKJiM0MzsJCSpkc3RfcmVnID0gKnB0cl9yZWc7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZQomIzQzOwkgKiBpbnN0cnVjdGlvbnMsIGhlbmNlIG5vIG5lZWQgdG8gdHJhY2sgb2Zmc2V0cy4KJiM0MzsJICovCiYjNDM7CWlmIChiYXNlX3R5cGUocHRyX3JlZy0mZ3Q7dHlwZSkgPT0gUFRSX1RPX01FTSAmYW1wOyZhbXA7IChwdHJfcmVnLSZndDt0eXBlICZhbXA7IFBUUl9VTlRSVVNURUQpKQomIzQzOwkJcmV0dXJuIDA7CiAKIAlpZiAoIWNoZWNrX3JlZ19zYW5lX29mZnNldF9zY2FsYXIoZW52LCBvZmZfcmVnLCBwdHJfcmVnLSZndDt0eXBlKSB8fAogCSAgICAhY2hlY2tfcmVnX3NhbmVfb2Zmc2V0X3B0cihlbnYsIHB0cl9yZWcsIHB0cl9yZWctJmd0O3R5cGUpKQpAQCAtMTM4MTMsNyAmIzQzOzEzODIwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQlyZXQgPSBzYW5pdGl6ZV9wdHJfYWx1KGVudiwgaW5zbiwgcHRyX3JlZywgb2ZmX3JlZywgZHN0X3JlZywKIAkJCQkgICAgICAgJmFtcDtpbmZvLCBmYWxzZSk7CiAJCWlmIChyZXQgJmx0OyAwKQotCQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7CiYjNDM7CQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTsKIAl9CiAKIAlzd2l0Y2ggKG9wY29kZSkgewpAQCAtMTM4NDMsNyAmIzQzOzEzODUwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQl9CiAJCWJyZWFrOwogCWNhc2UgQlBGX1NVQjoKLQkJaWYgKGRzdF9yZWcgPT0gb2ZmX3JlZykgewomIzQzOwkJaWYgKCFwdHJfaXNfZHN0X3JlZykgewogCQkJLyogc2NhbGFyIC09IHBvaW50ZXIuICBDcmVhdGVzIGFuIHVua25vd24gc2NhbGFyICovCiAJCQl2ZXJib3NlKGVudiwgJiMzNDtSJWQgdHJpZWQgdG8gc3VidHJhY3QgcG9pbnRlciBmcm9tIHNjYWxhclxuJiMzNDssCiAJCQkJZHN0KTsKQEAgLTEzOTA2LDcgJiM0MzsxMzkxMyw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAkJCXJldHVybiAtRUZBVUxUOwogCQl9CiAJCWlmIChyZXQgJmx0OyAwKQotCQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7CiYjNDM7CQkJcmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmMKaW5kZXggOTQ0ODlhYzY0ZGE4ZWYuLjdkYTQyNjZiYWUwOWIxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuYwpAQCAtMTYzNSw2ICYjNDM7MTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKQogICAgICAgICByZXR1cm4gMDsKIH0KIAomIzQzOy8qIEEgY29tbXV0ZWQgYWRkIHNob3VsZCBwcmVzZXJ2ZSB0aGUgcGFyZW50IGlkIG9mIGEgZHlucHRyIGRhdGEgc2xpY2UuCiYjNDM7ICovCiYjNDM7U0VDKCYjMzQ7P3Jhd190cCYjMzQ7KQomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2ludmFsaWQgbWVtIGFjY2VzcyAmIzM5O3NjYWxhciYjMzk7JiMzNDspCiYjNDM7aW50IGR5bnB0cl9zbGljZV9jb21tdXRlZF9pbnZhbGlkYXRlKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfZHlucHRyIHB0cjsKJiM0MzsJX191MzIgKnNsaWNlLCAqZGVyaXZlZDsKJiM0MzsKJiM0MzsJYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHIoJmFtcDtyaW5nYnVmLCBzaXplb2YoX191MzIpLCAwLCAmYW1wO3B0cik7CiYjNDM7CiYjNDM7CXNsaWNlID0gYnBmX2R5bnB0cl9kYXRhKCZhbXA7cHRyLCAwLCBzaXplb2YoX191MzIpKTsKJiM0MzsJaWYgKCFzbGljZSkKJiM0MzsJCWdvdG8gZG9uZTsKJiM0MzsKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OyVbZHN0XSA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7JVtkc3RdICYjNDM7PSAlW3NyY107JiMzNDsKJiM0MzsJCSYjMzQ7JVtzcmNdID0gMDsmIzM0OwomIzQzOwkJOiBbZHN0XSYjMzQ7PSZhbXA7ciYjMzQ7KGRlcml2ZWQpLCBbc3JjXSYjMzQ7JiM0MztyJiMzNDsoc2xpY2UpCiYjNDM7CQk6CiYjNDM7CQk6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwomIzQzOwlicGZfcmluZ2J1Zl9kaXNjYXJkX2R5bnB0cigmYW1wO3B0ciwgMCk7CiYjNDM7CXZhbCA9ICpkZXJpdmVkOwomIzQzOwlyZXR1cm4gMDsKJiM0MzsKJiM0Mztkb25lOgomIzQzOwlicGZfcmluZ2J1Zl9kaXNjYXJkX2R5bnB0cigmYW1wO3B0ciwgMCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qIElmIHRoZSBkeW5wdHIgaXMgd3JpdHRlbiBpbnRvIGluIGEgY2FsbGJhY2sgZnVuY3Rpb24sIGl0cyBkYXRhCiAgKiBzbGljZXMgc2hvdWxkIGJlIGludmFsaWRhdGVkIGFzIHdlbGwuCiAgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMKaW5kZXggNWI0NDUzNzQ3YzIzMDguLmYxNjZmZmY4ZjIxNzYxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuYwpAQCAtMjI2LDQgJiM0MzsyMjYsMjEgQEAgaW50IG51bGxfY2hlY2sodm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19yZXR2YWwoMSkKJiM0MztpbnQgbGR4X2lzX29rX2NvbW11dGVkX2FkZHIodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJaW50IHYsICpwLCAqZGVyaXZlZDsKJiM0MzsKJiM0MzsJdiA9IDE7CiYjNDM7CXAgPSBicGZfcmRvbmx5X2Nhc3QoJmFtcDt2LCAwKTsKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OyVbZHN0XSA9IDA7JiMzNDsKJiM0MzsJCSYjMzQ7JVtkc3RdICYjNDM7PSAlW3NyY107JiMzNDsKJiM0MzsJCTogW2RzdF0mIzM0Oz0mYW1wO3ImIzM0OyhkZXJpdmVkKQomIzQzOwkJOiBbc3JjXSYjMzQ7ciYjMzQ7KHApCiYjNDM7CQk6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwlyZXR1cm4gKmRlcml2ZWQ7CiYjNDM7fQomIzQzOwogY2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suYwppbmRleCBmYjYyZTA5ZjIxMTQ2ZC4uZDNkZjdhOWYxZDhjODUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jCkBAIC05Nyw0ICYjNDM7OTcsNDUgQEAgX19uYWtlZCB2b2lkIG1pc2FsaWduZWRfcmVhZF9mcm9tX3N0YWNrKHZvaWQpCiAmIzM0Owk6OjogX19jbG9iYmVyX2FsbCk7CiB9CiAKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7c3RhY2sgcG9pbnRlciBhcml0aG1ldGljIHByZXNlcnZlcyBmcmFtZSBudW1iZXImIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtSNyBpbnZhbGlkIG1lbSBhY2Nlc3MgJiMzOTtzY2FsYXImIzM5OyYjMzQ7KQomIzQzO19fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm8odm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoJiMzNDtcCiYjNDM7CQlyMyA9IDA7CQkJCQkJXAomIzQzOwkJKih1NjQgKikocjEwIC0gOCkgPSByMzsJCQlcCiYjNDM7CQlyMSA9ICVbbWFwX2hhc2hfOGJdIGxsOwkJCVwKJiM0MzsJCXIyID0gcjEwOwkJCQkJXAomIzQzOwkJcjIgJiM0Mzs9IC04OwkJCQkJXAomIzQzOwkJY2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dOwkJXAomIzQzOwkJaWYgcjAgIT0gMCBnb3RvICYjNDM7MjsJCQlcCiYjNDM7CQlyMCA9IDA7CQkJCQkJXAomIzQzOwkJZXhpdDsJCQkJCQlcCiYjNDM7CQlyMSA9IHIwOwkJCQkJXAomIzQzOwkJcjIgPSAwOwkJCQkJCVwKJiM0MzsJCXIzID0gMDsJCQkJCQlcCiYjNDM7CQljYWxsIHN0YWNrX3B0cl9hcml0aF9wcmVzZXJ2ZXNfZnJhbWVub19zdWJwcm9nO1wKJiM0MzsJCXIwID0gMDsJCQkJCQlcCiYjNDM7CQlleGl0OwkJCQkJCVwKJiM0MzsJJiMzNDs6CiYjNDM7CTogX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksCiYjNDM7CSAgX19pbW1fYWRkcihtYXBfaGFzaF84YikKJiM0MzsJOiBfX2Nsb2JiZXJfYWxsKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIF9fdXNlZCBfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2codm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoJiMzNDtcCiYjNDM7CQkqKHU2NCAqKShyMTAgLSA4KSA9IHIxOwkJCVwKJiM0MzsJCXI2ID0gLTg7CQkJCQlcCiYjNDM7CQlyNiAmIzQzOz0gcjEwOwkJCQkJXAomIzQzOwkJKih1NjQgKikocjYgJiM0MzsgMCkgPSByMjsJCQlcCiYjNDM7CQlyNyA9ICoodTY0ICopKHIxMCAtIDgpOwkJCVwKJiM0MzsJCSoodTY0ICopKHI3ICYjNDM7IDApID0gcjM7CQkJXAomIzQzOwkJcjAgPSAwOwkJCQkJCVwKJiM0MzsJCWV4aXQ7CQkJCQkJXAomIzQzOwkmIzM0Ozo6OiBfX2Nsb2JiZXJfYWxsKTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY291cGxlIG9mIG5ldyB2YXJpYWJsZXMsIGBvcmlnX29mZl9yZWdgIGFuZCBgcHRyX2lzX2RzdF9yZWdgLCBhbmQgZnVuZGFtZW50YWxseSBhbHRlcmVkIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGUgYHNjYWxhciAmIzQzOz0gcG9pbnRlcmAgaW5zdHJ1Y3Rpb24gcGF0dGVybi4gUHJldmlvdXNseSwgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIChgZHN0X3JlZ2ApIHNpbXBseSBpbmhlcml0ZWQgdGhlIHR5cGUgYW5kIElEIGZyb20gdGhlIHBvaW50ZXIgcmVnaXN0ZXIgKGBwdHJfcmVnYCkuIE5vdywgaXQgbG9va3MgbGlrZSB0aGV5IGFyZSBkb2luZyBzb21ldGhpbmcgZGlmZmVyZW50LgoKVGhlIG5ldyBsb2dpYyBpcyBpbnRlcmVzdGluZzogaWYgYHB0cl9pc19kc3RfcmVnYCBpcyBmYWxzZSwgaXQgdXNlcyBhIGBmYWtlX3JlZ2AgZm9yIGEgdGVtcG9yYXJ5IGhvbGRpbmcgc3BvdCBhbmQgc2V0cyBgZHN0X3JlZ2AgdG8gdGhlIHZhbHVlIG9mIHRoZSBwb2ludGVyIHJlZ2lzdGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHJlZmluaW5nIHBvaW50ZXIgYXJpdGhtZXRpYyBhbmFseXNpcywgYWxsb3dpbmcgbW9yZSBwcmVjaXNlIGJvdW5kcyB0cmFja2luZyBhZnRlciBvcGVyYXRpb25zIHRoYXQgY29tYmluZSBwb2ludGVycyBhbmQgc2NhbGFycy4gSXQgc2VlbXMgdGhhdCB0aGV5IGhhdmUgZW5oYW5jZWQgdGhlIGhhbmRsaW5nIG9mIGhvdyBwb2ludGVyIHJlZ2lzdGVycyBhcmUgdXBkYXRlZCB3aXRoIHNjYWxhciBhcml0aG1ldGljLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBpbnRlcnByZXRhdGlvbiBpcyBjb3JyZWN0LiBUaGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBzb21lIGNhbGxzIHRvIGBzYW5pdGl6ZV9lcnJgIHRvIHVzZSBgb3JpZ19vZmZfcmVnYCBpbnN0ZWFkIG9mIGBvZmZfcmVnYC4gVGhpcyBzdWdnZXN0cyB0aGUgY2hhbmdlcyBhcmUgbm90IHB1cmVseSBjb3NtZXRpYzsgdGhleSBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgYmVoYXZpb3Igb2YgdGhlIHZlcmlmaWVyLCBwb3RlbnRpYWxseSBpbiBob3cgZXJyb3IgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIG9wZXJhdGlvbnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgem9vbSBvdXQgYW5kIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBTaW5jZSB0aGlzIGlzIGEgQlBGIHZlcmlmaWVyIGNoYW5nZSwgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBpcyBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MgdG8gYWRqdXN0IG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIHBvaW50ZXJzLiBHaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgY2hhbmdlcywgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZnVuY3Rpb25hbCBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB2ZXJpZmllciBpcyBlbmFibGVkLiBJIGtub3cgYENPTkZJR19CUEZfU1lTQ0FMTGAgcGxheXMgYSByb2xlOyBJJiMzOTtsbCBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBvciBtYXliZSBldmVuIGBpbml0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIHZlcmlmaWVyIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEJQRiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEJQRl9TWVNDQUxMYCDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZyBzZXR0aW5nIGhlcmUuIEl0IGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIHRvIHRoZSBhcmVhIG9mIGludmVzdGlnYXRpb247IHdlJiMzOTtyZSBsaWtlbHkgbG9va2luZyBhdCB0cmFjaW5nLCBzZWN1cml0eSwgb3IgcGVyaGFwcyBzeXN0ZW0gY2FsbCBmaWx0ZXJpbmcgd2l0aGluIGEgQlBGIGNvbnRleHQuIE15IG5leHQgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZWxlbWVudHMgcmVsYXRlZCB0byB0aGlzIGNvbmZpZ3VyYXRpb24uCgpUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdHJhY2sgZG93biB0aGUgZm9jdXMgc3ltYm9scywgd2hpY2ggaW4gdGhpcyBpbnN0YW5jZSBpcyB0aGUgZnVuY3Rpb24gYGFkanVzdF9wdHJfbWluX21heF92YWxzYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgYEJQRl9TWVNDQUxMYCBzZXR1cCwgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLgoKVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmb2xsb3cgdXAgaXMgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgb2YgYGFkanVzdF9wdHJfbWluX21heF92YWxzYC4gU2VlaW5nIHdoZXJlIGl0JiMzOTtzIGJlaW5nIGludm9rZWQgd2lsbCBvZmZlciBjb250ZXh0LCByZXZlYWxpbmcgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbSBjYWxsIHBhdGggYW5kIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQuIFRoaXMgcXVpY2tseSBsZWFkcyB0byB1bmRlcnN0YW5kaW5nIGl0cyBpbmZsdWVuY2Ugd2l0aGluIHRoZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkanVzdF9wdHJfbWluX21heF92YWxzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz00MDAzPXN0YXRpYyBpbnQgY2hlY2tfc3RhY2tfcmVhZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MDI3LVx0ICogY2hlY2tfc3RhY2tfYWNjZXNzX2Zvcl9wdHJfYXJpdGhtZXRpYygpIGNhbGxlZCBieVxua2VybmVsL2JwZi92ZXJpZmllci5jOjQwMjg6XHQgKiBhZGp1c3RfcHRyX21pbl9tYXhfdmFscygpIHByZXZlbnRzIHVzZXJzIGZyb20gY3JlYXRpbmcgc3RhY2sgcG9pbnRlcnNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MDI5LVx0ICogd2l0aCB2YXJpYWJsZSBvZmZzZXRzLCB0aGVyZWZvcmUgbm8gY2hlY2sgaXMgcmVxdWlyZWQgaGVyZS4gRnVydGhlcixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM2ODA9c3RhdGljIGludCBzYW5pdGl6ZV9jaGVja19ib3VuZHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTM3MTYtICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTM3MTc6c3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzNzE4LVx0XHRcdFx0ICAgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDgwOD1zdGF0aWMgaW50IGFkanVzdF9yZWdfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODcwLVx0XHRcdFx0XHRyZXR1cm4gZXJyO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE0ODcxOlx0XHRcdFx0cmV0dXJuIGFkanVzdF9wdHJfbWluX21heF92YWxzKGVudiwgaW5zbixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg3Mi1cdFx0XHRcdFx0XHRcdCAgICAgICBzcmNfcmVnLCBkc3RfcmVnKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4NzgtXHRcdFx0XHRyZXR1cm4gZXJyO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE0ODc5Olx0XHRcdHJldHVybiBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhlbnYsIGluc24sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4ODAtXHRcdFx0XHRcdFx0ICAgICAgIGRzdF9yZWcsIHNyY19yZWcpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg5NC1cdFx0aWYgKHB0cl9yZWcpIC8qIHBvaW50ZXIgJiM0Mzs9IEsgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDg5NTpcdFx0XHRyZXR1cm4gYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoZW52LCBpbnNuLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODk2LVx0XHRcdFx0XHRcdCAgICAgICBwdHJfcmVnLCBzcmNfcmVnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjkwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgTGluZWFnZSBvZiBEYXRhIFZhbGlkYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIHRoZSB2YWxpZGF0aW9uIG9mIG91ciByZWdpc3RlciBtaW4vbWF4IHZhbHVlcy4gSSBzZWUgdGhhdCBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGlzIGNhbGxlZCBieSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLiBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgY29ubmVjdGlvbiwgYnV0IGl0JiMzOTtzIG5vdCB0aGUgd2hvbGUgc3RvcnkuIFRoZSByZWFsIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBhZGp1c3RfcmVnX21pbl9tYXhfdmFsc2AsIGFuZCAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBkb19jaGVja2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhaW4gb2YgcmVzcG9uc2liaWxpdHkgYmV0dGVyLiBUaGVyZWZvcmUsIEkgd2FudCB0byBkcmlsbCBpbnRvIGJvdGggYGFkanVzdF9yZWdfbWluX21heF92YWxzYCBhbmQgYGRvX2NoZWNrYCBub3csIHNvIEkgaGF2ZSBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRqdXN0X3JlZ19taW5fbWF4X3ZhbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE0NjUwPXN0YXRpYyBpbnQgYWRqdXN0X3NjYWxhcl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4MDctICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQ4MDg6c3RhdGljIGludCBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODA5LVx0XHRcdFx0ICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDk3Nj1zdGF0aWMgaW50IGNoZWNrX2FsdV9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE1MTU2LVx0XHRlcnIgPSBjaGVja19yZWdfYXJnKGVudiwgaW5zbi1cdTAwM2Vkc3RfcmVnLCBEU1RfT1BfTk9fTUFSSyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTUxNTc6XHRcdGVyciA9IGVyciA/OiBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE1MTU4LVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MzgKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogNjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBoZXJlIGlzIHRoZSBmaXggZm9yIHRoYXQgYHNjYWxhciAmIzQzOz0gcG9pbnRlcmAgaXNzdWUgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYGFkanVzdF9yZWdfbWluX21heF92YWxzYCBpcyBjYWxsZWQgYnkgYGNoZWNrX2FsdV9vcGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBkb19jaGVja2AuIFRoYXQgY2hhaW4gb2YgY2FsbHMgaXMgaW1wb3J0YW50IGZvciBjb250ZXh0LiBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGxvb2tzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmdXp6aW5nLCBidXQgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgcmVhY2hhYmxlLCBtYWtlcyBpdCBmdXp6YWJsZSwgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5JiMzOTtyZSBpbiB0aGUga2VybmVsIGltYWdlIGFuZCBoYXZlIGRlYnVnIGluZm8uCgpUaGUgcGF0Y2ggbW9kaWZpZXMgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciB3YXNuJiMzOTt0IHByb3Blcmx5IGluaGVyaXRpbmcgdGhlIGZ1bGwgcG9pbnRlciByZWdpc3RlciBzdGF0ZSBkdXJpbmcgdGhhdCBgc2NhbGFyICYjNDM7PSBwb2ludGVyYCBvcGVyYXRpb24uIEluIGVzc2VuY2UsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQmIzM5O3MgZml4aW5nIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyBwb2ludGVyIGFyaXRobWV0aWMsIHNwZWNpZmljYWxseSBpbiB0aGlzIGNhc2UsIHRoZSBgJiM0Mzs9YCBvcGVyYXRpb24gd2l0aCBhIHNjYWxhciB2YWx1ZSBhbmQgYSBwb2ludGVyLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGFkZHMgdGVzdCBjYXNlcywgdGhlIHRlc3RzIHRoZW1zZWx2ZXMgcmVseSBvbiBzZXZlcmFsIEJQRiBmZWF0dXJlcywgbmFtZWx5IGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAsIGBicGZfZHlucHRyX2RhdGFgLCBhbmQgYGJwZl9yZG9ubHlfY2FzdGAuIFRoYXQgc2FpZCwgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiByZXF1aXJlZCBpcyB1bmRvdWJ0ZWRseSBgQ09ORklHX0JQRl9TWVNDQUxMYC4gYENPTkZJR19CUEZfSklUYCBtaWdodCBiZSBiZW5lZmljaWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBidXQgaXQmIzM5O3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeS4gU28gSSYjMzk7bGwganVzdCBsaXN0IGBCUEZfU1lTQ0FMTGAgYXMgYSByZXF1aXJlZCBjb25maWcuCgpOb3csIGxldCYjMzk7cyByZXZpc2l0IHRoZSBpbXBvcnRhbnQgc3ltYm9scy4gSSYjMzk7dmUgcmUtY29uZmlybWVkIHRoYXQgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBpcyBzdGF0aWMuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3Mgc3RpbGwgYSBnb29kIGZvY3VzIHN5bWJvbC4gR2l2ZW4gdGhhdCBzeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBpdCBpcyBzdGlsbCBhIHZpYWJsZSB0YXJnZXQuIFNvIEkmIzM5O2xsIGFsc28gaW5jbHVkZSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLCBzaW5jZSBpdCYjMzk7cyBkaXJlY3RseSByZWxhdGVkLgoKTGV0IG1lIHJldmlldyB0aGUgY29kZSBhZ2Fpbi4uLiBZZXAsIHRoaXMgY29uZmlybXMgdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlOgoKYGBgYwoJLyogRm9yICYjMzk7c2NhbGFyICYjNDM7PSBwb2ludGVyJiMzOTssIGRzdF9yZWcgaW5oZXJpdHMgdGhlIGNvbXBsZXRlIHBvaW50ZXIKCSAqIHJlZ2lzdGVyIHN0YXRlLiBJbmRpdmlkdWFsIGZpZWxkcyBtYXkgYmUgYWRqdXN0ZWQgbGF0ZXIgYnkgcG9pbnRlcgoJICogYXJpdGhtZXRpYy4KCSAqLwoJaWYgKCFwdHJfaXNfZHN0X3JlZykgewoJCWVudi0mZ3Q7ZmFrZV9yZWdbMF0gPSAqb2ZmX3JlZzsKCQlvZmZfcmVnID0gJmFtcDtlbnYtJmd0O2Zha2VfcmVnWzBdOwoJCSpkc3RfcmVnID0gKnB0cl9yZWc7Cgl9CmBgYAoKVGhpcyBwYXRjaCBjbGVhcmx5IG1vZGlmaWVzIHRoZSB2ZXJpZmllciYjMzk7cyBiZWhhdmlvciByZWxhdGVkIHRvIHBvaW50ZXIgYXJpdGhtZXRpYy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGUgY29ycmVjdGVkIHByb3BhZ2F0aW9uIG9mIHRoZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIGR1cmluZyBzY2FsYXIgYWRkaXRpb24uIFRoaXMgY291bGQgZWFzaWx5IGxlYWQgdG8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBpZiBub3Qgcmlnb3JvdXNseSBmdXp6ZWQuCgpJbiBzaG9ydDogVGhpcyBwYXRjaCBpcyBmaXhpbmcgaG93IEJQRiBoYW5kbGVzIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgaW4gdGhlIHZlcmlmaWVyLCBwcm9wYWdhdGluZyB0aGUgcG9pbnRlciBzdGF0ZSBjb3JyZWN0bHkuIFRoaXMgaXMgZnVuY3Rpb25hbCwgc28gZnV6emluZyBpcyBjcml0aWNhbC4KCkNvbmZpZ3M6IGBCUEZfU1lTQ0FMTGAKRm9jdXNTeW1ib2xzOiBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgLCBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgCgpUaW1lIHRvIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGp1c3RfcHRyX21pbl9tYXhfdmFscyYjMzQ7LAogICAgJiMzNDthZGp1c3RfcmVnX21pbl9tYXhfdmFscyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGp1c3RfcHRyX21pbl9tYXhfdmFscyYjMzQ7LAogICAgJiMzNDthZGp1c3RfcmVnX21pbl9tYXhfdmFscyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIGBzY2FsYXIgJiM0Mzs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI4LjQzNTg0NDYwNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3ODM1MDAwMDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNcIixcbiAgICBcImFkanVzdF9yZWdfbWluX21heF92YWxzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBgc2NhbGFyICs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6MjguNDM1ODUyMDQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk3NDAxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkODhjYjJkMzk4ZTAyMDkxMzQzNDg2MTdkODM5MDlmYzhjMzAzMjA1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDAwOjQ1OjI2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDUyYmUwYTExOGNjZTA3Li4xOGZiNjI2NzY5MmM1ZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTM3MjYsMTEgKzEzNzI2LDE0IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0czY0IHNtaW5fdmFsID0gcmVnX3NtaW4ob2ZmX3JlZyksIHNtYXhfdmFsID0gcmVnX3NtYXgob2ZmX3JlZyk7XFxuIFxcdHU2NCB1bWluX3ZhbCA9IHJlZ191bWluKG9mZl9yZWcpLCB1bWF4X3ZhbCA9IHJlZ191bWF4KG9mZl9yZWcpO1xcbiBcXHRzdHJ1Y3QgYnBmX3Nhbml0aXplX2luZm8gaW5mbyA9IHt9O1xcbitcXHRjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqb3JpZ19vZmZfcmVnID0gb2ZmX3JlZztcXG4rXFx0Ym9vbCBwdHJfaXNfZHN0X3JlZztcXG4gXFx0dTggb3Bjb2RlID0gQlBGX09QKGluc24tXFx1MDAzZWNvZGUpO1xcbiBcXHR1MzIgZHN0ID0gaW5zbi1cXHUwMDNlZHN0X3JlZztcXG4gXFx0aW50IHJldCwgYm91bmRzX3JldDtcXG4gXFxuIFxcdGRzdF9yZWcgPSBcXHUwMDI2cmVnc1tkc3RdO1xcbitcXHRwdHJfaXNfZHN0X3JlZyA9IHB0cl9yZWcgPT0gZHN0X3JlZztcXG4gXFxuIFxcdGlmICgoa25vd24gXFx1MDAyNlxcdTAwMjYgKHNtaW5fdmFsICE9IHNtYXhfdmFsIHx8IHVtaW5fdmFsICE9IHVtYXhfdmFsKSkgfHxcXG4gXFx0ICAgIHNtaW5fdmFsIFxcdTAwM2Ugc21heF92YWwgfHwgdW1pbl92YWwgXFx1MDAzZSB1bWF4X3ZhbCkge1xcbkBAIC0xMzc2MCwxMyArMTM3NjMsNiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbiBcXHR9XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXFxuLVxcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byB0cmFjayBvZmZzZXRzLlxcbi1cXHQgKi9cXG4tXFx0aWYgKGJhc2VfdHlwZShwdHJfcmVnLVxcdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFxcdTAwMjZcXHUwMDI2IChwdHJfcmVnLVxcdTAwM2V0eXBlIFxcdTAwMjYgUFRSX1VOVFJVU1RFRCkpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4gXFx0c3dpdGNoIChiYXNlX3R5cGUocHRyX3JlZy1cXHUwMDNldHlwZSkpIHtcXG4gXFx0Y2FzZSBQVFJfVE9fQ1RYOlxcbiBcXHRjYXNlIFBUUl9UT19NQVBfVkFMVUU6XFxuQEAgLTEzNzk2LDExICsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBJbiBjYXNlIG9mICdzY2FsYXIgKz0gcG9pbnRlcicsIGRzdF9yZWcgaW5oZXJpdHMgcG9pbnRlciB0eXBlIGFuZCBpZC5cXG4tXFx0ICogVGhlIGlkIG1heSBiZSBvdmVyd3JpdHRlbiBsYXRlciBpZiB3ZSBjcmVhdGUgYSBuZXcgdmFyaWFibGUgb2Zmc2V0LlxcbitcXHQvKiBGb3IgJ3NjYWxhciArPSBwb2ludGVyJywgZHN0X3JlZyBpbmhlcml0cyB0aGUgY29tcGxldGUgcG9pbnRlclxcbitcXHQgKiByZWdpc3RlciBzdGF0ZS4gSW5kaXZpZHVhbCBmaWVsZHMgbWF5IGJlIGFkanVzdGVkIGxhdGVyIGJ5IHBvaW50ZXJcXG4rXFx0ICogYXJpdGhtZXRpYy5cXG4gXFx0ICovXFxuLVxcdGRzdF9yZWctXFx1MDAzZXR5cGUgPSBwdHJfcmVnLVxcdTAwM2V0eXBlO1xcbi1cXHRkc3RfcmVnLVxcdTAwM2VpZCA9IHB0cl9yZWctXFx1MDAzZWlkO1xcbitcXHRpZiAoIXB0cl9pc19kc3RfcmVnKSB7XFxuK1xcdFxcdGVudi1cXHUwMDNlZmFrZV9yZWdbMF0gPSAqb2ZmX3JlZztcXG4rXFx0XFx0b2ZmX3JlZyA9IFxcdTAwMjZlbnYtXFx1MDAzZWZha2VfcmVnWzBdO1xcbitcXHRcXHQqZHN0X3JlZyA9ICpwdHJfcmVnO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXFxuK1xcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byB0cmFjayBvZmZzZXRzLlxcbitcXHQgKi9cXG4rXFx0aWYgKGJhc2VfdHlwZShwdHJfcmVnLVxcdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFxcdTAwMjZcXHUwMDI2IChwdHJfcmVnLVxcdTAwM2V0eXBlIFxcdTAwMjYgUFRSX1VOVFJVU1RFRCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0aWYgKCFjaGVja19yZWdfc2FuZV9vZmZzZXRfc2NhbGFyKGVudiwgb2ZmX3JlZywgcHRyX3JlZy1cXHUwMDNldHlwZSkgfHxcXG4gXFx0ICAgICFjaGVja19yZWdfc2FuZV9vZmZzZXRfcHRyKGVudiwgcHRyX3JlZywgcHRyX3JlZy1cXHUwMDNldHlwZSkpXFxuQEAgLTEzODEzLDcgKzEzODIwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRcXHRyZXQgPSBzYW5pdGl6ZV9wdHJfYWx1KGVudiwgaW5zbiwgcHRyX3JlZywgb2ZmX3JlZywgZHN0X3JlZyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZpbmZvLCBmYWxzZSk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi1cXHRcXHRcXHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvZmZfcmVnLCBkc3RfcmVnKTtcXG4rXFx0XFx0XFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTtcXG4gXFx0fVxcbiBcXG4gXFx0c3dpdGNoIChvcGNvZGUpIHtcXG5AQCAtMTM4NDMsNyArMTM4NTAsNyBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX1NVQjpcXG4tXFx0XFx0aWYgKGRzdF9yZWcgPT0gb2ZmX3JlZykge1xcbitcXHRcXHRpZiAoIXB0cl9pc19kc3RfcmVnKSB7XFxuIFxcdFxcdFxcdC8qIHNjYWxhciAtPSBwb2ludGVyLiAgQ3JlYXRlcyBhbiB1bmtub3duIHNjYWxhciAqL1xcbiBcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcIlIlZCB0cmllZCB0byBzdWJ0cmFjdCBwb2ludGVyIGZyb20gc2NhbGFyXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHRkc3QpO1xcbkBAIC0xMzkwNiw3ICsxMzkxMyw3IEBAIHN0YXRpYyBpbnQgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdFxcdHJldHVybiBzYW5pdGl6ZV9lcnIoZW52LCBpbnNuLCByZXQsIG9mZl9yZWcsIGRzdF9yZWcpO1xcbitcXHRcXHRcXHRyZXR1cm4gc2FuaXRpemVfZXJyKGVudiwgaW5zbiwgcmV0LCBvcmlnX29mZl9yZWcsIGRzdF9yZWcpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xcbmluZGV4IDk0NDg5YWM2NGRhOGVmLi43ZGE0MjY2YmFlMDliMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jXFxuQEAgLTE2MzUsNiArMTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKVxcbiAgICAgICAgIHJldHVybiAwO1xcbiB9XFxuIFxcbisvKiBBIGNvbW11dGVkIGFkZCBzaG91bGQgcHJlc2VydmUgdGhlIHBhcmVudCBpZCBvZiBhIGR5bnB0ciBkYXRhIHNsaWNlLlxcbisgKi9cXG4rU0VDKFxcXCI/cmF3X3RwXFxcIilcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJpbnZhbGlkIG1lbSBhY2Nlc3MgJ3NjYWxhcidcXFwiKVxcbitpbnQgZHlucHRyX3NsaWNlX2NvbW11dGVkX2ludmFsaWRhdGUodm9pZCAqY3R4KVxcbit7XFxuK1xcdHN0cnVjdCBicGZfZHlucHRyIHB0cjtcXG4rXFx0X191MzIgKnNsaWNlLCAqZGVyaXZlZDtcXG4rXFxuK1xcdGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyKFxcdTAwMjZyaW5nYnVmLCBzaXplb2YoX191MzIpLCAwLCBcXHUwMDI2cHRyKTtcXG4rXFxuK1xcdHNsaWNlID0gYnBmX2R5bnB0cl9kYXRhKFxcdTAwMjZwdHIsIDAsIHNpemVvZihfX3UzMikpO1xcbitcXHRpZiAoIXNsaWNlKVxcbitcXHRcXHRnb3RvIGRvbmU7XFxuK1xcbitcXHRhc20gdm9sYXRpbGUgKFxcXCIlW2RzdF0gPSAwO1xcXCJcXG4rXFx0XFx0XFxcIiVbZHN0XSArPSAlW3NyY107XFxcIlxcbitcXHRcXHRcXFwiJVtzcmNdID0gMDtcXFwiXFxuK1xcdFxcdDogW2RzdF1cXFwiPVxcdTAwMjZyXFxcIihkZXJpdmVkKSwgW3NyY11cXFwiK3JcXFwiKHNsaWNlKVxcbitcXHRcXHQ6XFxuK1xcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXG4rXFx0YnBmX3JpbmdidWZfZGlzY2FyZF9keW5wdHIoXFx1MDAyNnB0ciwgMCk7XFxuK1xcdHZhbCA9ICpkZXJpdmVkO1xcbitcXHRyZXR1cm4gMDtcXG4rXFxuK2RvbmU6XFxuK1xcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFxcdTAwMjZwdHIsIDApO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyogSWYgdGhlIGR5bnB0ciBpcyB3cml0dGVuIGludG8gaW4gYSBjYWxsYmFjayBmdW5jdGlvbiwgaXRzIGRhdGFcXG4gICogc2xpY2VzIHNob3VsZCBiZSBpbnZhbGlkYXRlZCBhcyB3ZWxsLlxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xcbmluZGV4IDViNDQ1Mzc0N2MyMzA4Li5mMTY2ZmZmOGYyMTc2MSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jXFxuQEAgLTIyNiw0ICsyMjYsMjEgQEAgaW50IG51bGxfY2hlY2sodm9pZCAqY3R4KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19yZXR2YWwoMSlcXG4raW50IGxkeF9pc19va19jb21tdXRlZF9hZGRyKHZvaWQgKmN0eClcXG4re1xcbitcXHRpbnQgdiwgKnAsICpkZXJpdmVkO1xcbitcXG4rXFx0diA9IDE7XFxuK1xcdHAgPSBicGZfcmRvbmx5X2Nhc3QoXFx1MDAyNnYsIDApO1xcbitcXHRhc20gdm9sYXRpbGUgKFxcXCIlW2RzdF0gPSAwO1xcXCJcXG4rXFx0XFx0XFxcIiVbZHN0XSArPSAlW3NyY107XFxcIlxcbitcXHRcXHQ6IFtkc3RdXFxcIj1cXHUwMDI2clxcXCIoZGVyaXZlZClcXG4rXFx0XFx0OiBbc3JjXVxcXCJyXFxcIihwKVxcbitcXHRcXHQ6IFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0cmV0dXJuICpkZXJpdmVkO1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbmluZGV4IGZiNjJlMDlmMjExNDZkLi5kM2RmN2E5ZjFkOGM4NSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXFxuQEAgLTk3LDQgKzk3LDQ1IEBAIF9fbmFrZWQgdm9pZCBtaXNhbGlnbmVkX3JlYWRfZnJvbV9zdGFjayh2b2lkKVxcbiBcXFwiXFx0Ojo6IF9fY2xvYmJlcl9hbGwpO1xcbiB9XFxuIFxcbitTRUMoXFxcInNvY2tldFxcXCIpXFxuK19fZGVzY3JpcHRpb24oXFxcInN0YWNrIHBvaW50ZXIgYXJpdGhtZXRpYyBwcmVzZXJ2ZXMgZnJhbWUgbnVtYmVyXFxcIilcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJSNyBpbnZhbGlkIG1lbSBhY2Nlc3MgJ3NjYWxhcidcXFwiKVxcbitfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXFwiXFxcXFxcbitcXHRcXHRyMyA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqKHU2NCAqKShyMTAgLSA4KSA9IHIzO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjEgPSAlW21hcF9oYXNoXzhiXSBsbDtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHIyID0gcjEwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjIgKz0gLTg7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XFx0XFx0XFxcXFxcbitcXHRcXHRpZiByMCAhPSAwIGdvdG8gKzI7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyMCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjEgPSByMDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHIyID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHIzID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNhbGwgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2c7XFxcXFxcbitcXHRcXHRyMCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFxcIjpcXG4rXFx0OiBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSxcXG4rXFx0ICBfX2ltbV9hZGRyKG1hcF9oYXNoXzhiKVxcbitcXHQ6IF9fY2xvYmJlcl9hbGwpO1xcbit9XFxuK1xcbitzdGF0aWMgX191c2VkIF9fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm9fc3VicHJvZyh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxcIlxcXFxcXG4rXFx0XFx0Kih1NjQgKikocjEwIC0gOCkgPSByMTtcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHI2ID0gLTg7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyNiArPSByMTA7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQqKHU2NCAqKShyNiArIDApID0gcjI7XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyNyA9ICoodTY0ICopKHIxMCAtIDgpO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Kih1NjQgKikocjcgKyAwKSA9IHIzO1xcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cjAgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ZXhpdDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcXCI6OjogX19jbG9iYmVyX2FsbCk7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NToyOS4wMTYxODY0NzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzI1NDY0NTgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkanVzdF9wdHJfbWluX21heF92YWxzXCIsXG4gICAgXCJhZGp1c3RfcmVnX21pbl9tYXhfdmFsc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgYHNjYWxhciArPSBwb2ludGVyYCBvcGVyYXRpb25zIGRpZCBub3QgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGUgY29tcGxldGUgcG9pbnRlciByZWdpc3RlciBzdGF0ZSB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDg4Y2IyZDM5OGUwMjA5MTM0MzQ4NjE3ZDgzOTA5ZmM4YzMwMzIwNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDAwOjQ1OjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA1MmJlMGExMThjY2UwNy4uMThmYjYyNjc2OTJjNWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTEzNzI2LDExICsxMzcyNiwxNCBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRzNjQgc21pbl92YWwgPSByZWdfc21pbihvZmZfcmVnKSwgc21heF92YWwgPSByZWdfc21heChvZmZfcmVnKTtcbiBcdHU2NCB1bWluX3ZhbCA9IHJlZ191bWluKG9mZl9yZWcpLCB1bWF4X3ZhbCA9IHJlZ191bWF4KG9mZl9yZWcpO1xuIFx0c3RydWN0IGJwZl9zYW5pdGl6ZV9pbmZvIGluZm8gPSB7fTtcbitcdGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpvcmlnX29mZl9yZWcgPSBvZmZfcmVnO1xuK1x0Ym9vbCBwdHJfaXNfZHN0X3JlZztcbiBcdHU4IG9wY29kZSA9IEJQRl9PUChpbnNuLVx1MDAzZWNvZGUpO1xuIFx0dTMyIGRzdCA9IGluc24tXHUwMDNlZHN0X3JlZztcbiBcdGludCByZXQsIGJvdW5kc19yZXQ7XG4gXG4gXHRkc3RfcmVnID0gXHUwMDI2cmVnc1tkc3RdO1xuK1x0cHRyX2lzX2RzdF9yZWcgPSBwdHJfcmVnID09IGRzdF9yZWc7XG4gXG4gXHRpZiAoKGtub3duIFx1MDAyNlx1MDAyNiAoc21pbl92YWwgIT0gc21heF92YWwgfHwgdW1pbl92YWwgIT0gdW1heF92YWwpKSB8fFxuIFx0ICAgIHNtaW5fdmFsIFx1MDAzZSBzbWF4X3ZhbCB8fCB1bWluX3ZhbCBcdTAwM2UgdW1heF92YWwpIHtcbkBAIC0xMzc2MCwxMyArMTM3NjMsNiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuLVx0Lypcbi1cdCAqIEFjY2Vzc2VzIHRvIHVudHJ1c3RlZCBQVFJfVE9fTUVNIGFyZSBkb25lIHRocm91Z2ggcHJvYmVcbi1cdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byB0cmFjayBvZmZzZXRzLlxuLVx0ICovXG4tXHRpZiAoYmFzZV90eXBlKHB0cl9yZWctXHUwMDNldHlwZSkgPT0gUFRSX1RPX01FTSBcdTAwMjZcdTAwMjYgKHB0cl9yZWctXHUwMDNldHlwZSBcdTAwMjYgUFRSX1VOVFJVU1RFRCkpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0c3dpdGNoIChiYXNlX3R5cGUocHRyX3JlZy1cdTAwM2V0eXBlKSkge1xuIFx0Y2FzZSBQVFJfVE9fQ1RYOlxuIFx0Y2FzZSBQVFJfVE9fTUFQX1ZBTFVFOlxuQEAgLTEzNzk2LDExICsxMzc5MiwyMiBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuLVx0LyogSW4gY2FzZSBvZiAnc2NhbGFyICs9IHBvaW50ZXInLCBkc3RfcmVnIGluaGVyaXRzIHBvaW50ZXIgdHlwZSBhbmQgaWQuXG4tXHQgKiBUaGUgaWQgbWF5IGJlIG92ZXJ3cml0dGVuIGxhdGVyIGlmIHdlIGNyZWF0ZSBhIG5ldyB2YXJpYWJsZSBvZmZzZXQuXG4rXHQvKiBGb3IgJ3NjYWxhciArPSBwb2ludGVyJywgZHN0X3JlZyBpbmhlcml0cyB0aGUgY29tcGxldGUgcG9pbnRlclxuK1x0ICogcmVnaXN0ZXIgc3RhdGUuIEluZGl2aWR1YWwgZmllbGRzIG1heSBiZSBhZGp1c3RlZCBsYXRlciBieSBwb2ludGVyXG4rXHQgKiBhcml0aG1ldGljLlxuIFx0ICovXG4tXHRkc3RfcmVnLVx1MDAzZXR5cGUgPSBwdHJfcmVnLVx1MDAzZXR5cGU7XG4tXHRkc3RfcmVnLVx1MDAzZWlkID0gcHRyX3JlZy1cdTAwM2VpZDtcbitcdGlmICghcHRyX2lzX2RzdF9yZWcpIHtcbitcdFx0ZW52LVx1MDAzZWZha2VfcmVnWzBdID0gKm9mZl9yZWc7XG4rXHRcdG9mZl9yZWcgPSBcdTAwMjZlbnYtXHUwMDNlZmFrZV9yZWdbMF07XG4rXHRcdCpkc3RfcmVnID0gKnB0cl9yZWc7XG4rXHR9XG4rXG4rXHQvKlxuK1x0ICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZVxuK1x0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIHRyYWNrIG9mZnNldHMuXG4rXHQgKi9cbitcdGlmIChiYXNlX3R5cGUocHRyX3JlZy1cdTAwM2V0eXBlKSA9PSBQVFJfVE9fTUVNIFx1MDAyNlx1MDAyNiAocHRyX3JlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKSlcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAoIWNoZWNrX3JlZ19zYW5lX29mZnNldF9zY2FsYXIoZW52LCBvZmZfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpIHx8XG4gXHQgICAgIWNoZWNrX3JlZ19zYW5lX29mZnNldF9wdHIoZW52LCBwdHJfcmVnLCBwdHJfcmVnLVx1MDAzZXR5cGUpKVxuQEAgLTEzODEzLDcgKzEzODIwLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRyZXQgPSBzYW5pdGl6ZV9wdHJfYWx1KGVudiwgaW5zbiwgcHRyX3JlZywgb2ZmX3JlZywgZHN0X3JlZyxcbiBcdFx0XHRcdCAgICAgICBcdTAwMjZpbmZvLCBmYWxzZSk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7XG4rXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTtcbiBcdH1cbiBcbiBcdHN3aXRjaCAob3Bjb2RlKSB7XG5AQCAtMTM4NDMsNyArMTM4NTAsNyBAQCBzdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9TVUI6XG4tXHRcdGlmIChkc3RfcmVnID09IG9mZl9yZWcpIHtcbitcdFx0aWYgKCFwdHJfaXNfZHN0X3JlZykge1xuIFx0XHRcdC8qIHNjYWxhciAtPSBwb2ludGVyLiAgQ3JlYXRlcyBhbiB1bmtub3duIHNjYWxhciAqL1xuIFx0XHRcdHZlcmJvc2UoZW52LCBcIlIlZCB0cmllZCB0byBzdWJ0cmFjdCBwb2ludGVyIGZyb20gc2NhbGFyXFxuXCIsXG4gXHRcdFx0XHRkc3QpO1xuQEAgLTEzOTA2LDcgKzEzOTEzLDcgQEAgc3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHR9XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb2ZmX3JlZywgZHN0X3JlZyk7XG4rXHRcdFx0cmV0dXJuIHNhbml0aXplX2VycihlbnYsIGluc24sIHJldCwgb3JpZ19vZmZfcmVnLCBkc3RfcmVnKTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2R5bnB0cl9mYWlsLmNcbmluZGV4IDk0NDg5YWM2NGRhOGVmLi43ZGE0MjY2YmFlMDliMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9keW5wdHJfZmFpbC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZHlucHRyX2ZhaWwuY1xuQEAgLTE2MzUsNiArMTYzNSwzNyBAQCBzdGF0aWMgaW50IGNhbGxiYWNrKF9fdTMyIGluZGV4LCB2b2lkICpkYXRhKVxuICAgICAgICAgcmV0dXJuIDA7XG4gfVxuIFxuKy8qIEEgY29tbXV0ZWQgYWRkIHNob3VsZCBwcmVzZXJ2ZSB0aGUgcGFyZW50IGlkIG9mIGEgZHlucHRyIGRhdGEgc2xpY2UuXG4rICovXG4rU0VDKFwiP3Jhd190cFwiKVxuK19fZmFpbHVyZSBfX21zZyhcImludmFsaWQgbWVtIGFjY2VzcyAnc2NhbGFyJ1wiKVxuK2ludCBkeW5wdHJfc2xpY2VfY29tbXV0ZWRfaW52YWxpZGF0ZSh2b2lkICpjdHgpXG4re1xuK1x0c3RydWN0IGJwZl9keW5wdHIgcHRyO1xuK1x0X191MzIgKnNsaWNlLCAqZGVyaXZlZDtcbitcbitcdGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyKFx1MDAyNnJpbmdidWYsIHNpemVvZihfX3UzMiksIDAsIFx1MDAyNnB0cik7XG4rXG4rXHRzbGljZSA9IGJwZl9keW5wdHJfZGF0YShcdTAwMjZwdHIsIDAsIHNpemVvZihfX3UzMikpO1xuK1x0aWYgKCFzbGljZSlcbitcdFx0Z290byBkb25lO1xuK1xuK1x0YXNtIHZvbGF0aWxlIChcIiVbZHN0XSA9IDA7XCJcbitcdFx0XCIlW2RzdF0gKz0gJVtzcmNdO1wiXG4rXHRcdFwiJVtzcmNdID0gMDtcIlxuK1x0XHQ6IFtkc3RdXCI9XHUwMDI2clwiKGRlcml2ZWQpLCBbc3JjXVwiK3JcIihzbGljZSlcbitcdFx0OlxuK1x0XHQ6IFwibWVtb3J5XCIpO1xuK1xuK1x0YnBmX3JpbmdidWZfZGlzY2FyZF9keW5wdHIoXHUwMDI2cHRyLCAwKTtcbitcdHZhbCA9ICpkZXJpdmVkO1xuK1x0cmV0dXJuIDA7XG4rXG4rZG9uZTpcbitcdGJwZl9yaW5nYnVmX2Rpc2NhcmRfZHlucHRyKFx1MDAyNnB0ciwgMCk7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogSWYgdGhlIGR5bnB0ciBpcyB3cml0dGVuIGludG8gaW4gYSBjYWxsYmFjayBmdW5jdGlvbiwgaXRzIGRhdGFcbiAgKiBzbGljZXMgc2hvdWxkIGJlIGludmFsaWRhdGVkIGFzIHdlbGwuXG4gICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWVtX3Jkb25seV91bnRydXN0ZWQuY1xuaW5kZXggNWI0NDUzNzQ3YzIzMDguLmYxNjZmZmY4ZjIxNzYxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21lbV9yZG9ubHlfdW50cnVzdGVkLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tZW1fcmRvbmx5X3VudHJ1c3RlZC5jXG5AQCAtMjI2LDQgKzIyNiwyMSBAQCBpbnQgbnVsbF9jaGVjayh2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19yZXR2YWwoMSlcbitpbnQgbGR4X2lzX29rX2NvbW11dGVkX2FkZHIodm9pZCAqY3R4KVxuK3tcbitcdGludCB2LCAqcCwgKmRlcml2ZWQ7XG4rXG4rXHR2ID0gMTtcbitcdHAgPSBicGZfcmRvbmx5X2Nhc3QoXHUwMDI2diwgMCk7XG4rXHRhc20gdm9sYXRpbGUgKFwiJVtkc3RdID0gMDtcIlxuK1x0XHRcIiVbZHN0XSArPSAlW3NyY107XCJcbitcdFx0OiBbZHN0XVwiPVx1MDAyNnJcIihkZXJpdmVkKVxuK1x0XHQ6IFtzcmNdXCJyXCIocClcbitcdFx0OiBcIm1lbW9yeVwiKTtcbitcdHJldHVybiAqZGVyaXZlZDtcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2Jhc2ljX3N0YWNrLmNcbmluZGV4IGZiNjJlMDlmMjExNDZkLi5kM2RmN2E5ZjFkOGM4NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9iYXNpY19zdGFjay5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYmFzaWNfc3RhY2suY1xuQEAgLTk3LDQgKzk3LDQ1IEBAIF9fbmFrZWQgdm9pZCBtaXNhbGlnbmVkX3JlYWRfZnJvbV9zdGFjayh2b2lkKVxuIFwiXHQ6OjogX19jbG9iYmVyX2FsbCk7XG4gfVxuIFxuK1NFQyhcInNvY2tldFwiKVxuK19fZGVzY3JpcHRpb24oXCJzdGFjayBwb2ludGVyIGFyaXRobWV0aWMgcHJlc2VydmVzIGZyYW1lIG51bWJlclwiKVxuK19fZmFpbHVyZSBfX21zZyhcIlI3IGludmFsaWQgbWVtIGFjY2VzcyAnc2NhbGFyJ1wiKVxuK19fbmFrZWQgdm9pZCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm8odm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFwiXFxcbitcdFx0cjMgPSAwO1x0XHRcdFx0XHRcdFxcXG4rXHRcdCoodTY0ICopKHIxMCAtIDgpID0gcjM7XHRcdFx0XFxcbitcdFx0cjEgPSAlW21hcF9oYXNoXzhiXSBsbDtcdFx0XHRcXFxuK1x0XHRyMiA9IHIxMDtcdFx0XHRcdFx0XFxcbitcdFx0cjIgKz0gLTg7XHRcdFx0XHRcdFxcXG4rXHRcdGNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTtcdFx0XFxcbitcdFx0aWYgcjAgIT0gMCBnb3RvICsyO1x0XHRcdFxcXG4rXHRcdHIwID0gMDtcdFx0XHRcdFx0XHRcXFxuK1x0XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXHRcdHIxID0gcjA7XHRcdFx0XHRcdFxcXG4rXHRcdHIyID0gMDtcdFx0XHRcdFx0XHRcXFxuK1x0XHRyMyA9IDA7XHRcdFx0XHRcdFx0XFxcbitcdFx0Y2FsbCBzdGFja19wdHJfYXJpdGhfcHJlc2VydmVzX2ZyYW1lbm9fc3VicHJvZztcXFxuK1x0XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbitcdFx0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuK1x0XCI6XG4rXHQ6IF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLFxuK1x0ICBfX2ltbV9hZGRyKG1hcF9oYXNoXzhiKVxuK1x0OiBfX2Nsb2JiZXJfYWxsKTtcbit9XG4rXG4rc3RhdGljIF9fdXNlZCBfX25ha2VkIHZvaWQgc3RhY2tfcHRyX2FyaXRoX3ByZXNlcnZlc19mcmFtZW5vX3N1YnByb2codm9pZClcbit7XG4rXHRhc20gdm9sYXRpbGUgKFwiXFxcbitcdFx0Kih1NjQgKikocjEwIC0gOCkgPSByMTtcdFx0XHRcXFxuK1x0XHRyNiA9IC04O1x0XHRcdFx0XHRcXFxuK1x0XHRyNiArPSByMTA7XHRcdFx0XHRcdFxcXG4rXHRcdCoodTY0ICopKHI2ICsgMCkgPSByMjtcdFx0XHRcXFxuK1x0XHRyNyA9ICoodTY0ICopKHIxMCAtIDgpO1x0XHRcdFxcXG4rXHRcdCoodTY0ICopKHI3ICsgMCkgPSByMztcdFx0XHRcXFxuK1x0XHRyMCA9IDA7XHRcdFx0XHRcdFx0XFxcbitcdFx0ZXhpdDtcdFx0XHRcdFx0XHRcXFxuK1x0XCI6OjogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjI5LjAxNjE4NzcxMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDUwOTY0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgY291cGxlIG9mIG5ldyB2YXJpYWJsZXMsIGBvcmlnX29mZl9yZWdgIGFuZCBgcHRyX2lzX2RzdF9yZWdgLCBhbmQgZnVuZGFtZW50YWxseSBhbHRlcmVkIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyB0aGUgYHNjYWxhciArPSBwb2ludGVyYCBpbnN0cnVjdGlvbiBwYXR0ZXJuLiBQcmV2aW91c2x5LCB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgKGBkc3RfcmVnYCkgc2ltcGx5IGluaGVyaXRlZCB0aGUgdHlwZSBhbmQgSUQgZnJvbSB0aGUgcG9pbnRlciByZWdpc3RlciAoYHB0cl9yZWdgKS4gTm93LCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIGRvaW5nIHNvbWV0aGluZyBkaWZmZXJlbnQuXG5cblRoZSBuZXcgbG9naWMgaXMgaW50ZXJlc3Rpbmc6IGlmIGBwdHJfaXNfZHN0X3JlZ2AgaXMgZmFsc2UsIGl0IHVzZXMgYSBgZmFrZV9yZWdgIGZvciBhIHRlbXBvcmFyeSBob2xkaW5nIHNwb3QgYW5kIHNldHMgYGRzdF9yZWdgIHRvIHRoZSB2YWx1ZSBvZiB0aGUgcG9pbnRlciByZWdpc3Rlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byByZWZpbmluZyBwb2ludGVyIGFyaXRobWV0aWMgYW5hbHlzaXMsIGFsbG93aW5nIG1vcmUgcHJlY2lzZSBib3VuZHMgdHJhY2tpbmcgYWZ0ZXIgb3BlcmF0aW9ucyB0aGF0IGNvbWJpbmUgcG9pbnRlcnMgYW5kIHNjYWxhcnMuIEl0IHNlZW1zIHRoYXQgdGhleSBoYXZlIGVuaGFuY2VkIHRoZSBoYW5kbGluZyBvZiBob3cgcG9pbnRlciByZWdpc3RlcnMgYXJlIHVwZGF0ZWQgd2l0aCBzY2FsYXIgYXJpdGhtZXRpYy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBpbnRlcnByZXRhdGlvbiBpcyBjb3JyZWN0LiBUaGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBzb21lIGNhbGxzIHRvIGBzYW5pdGl6ZV9lcnJgIHRvIHVzZSBgb3JpZ19vZmZfcmVnYCBpbnN0ZWFkIG9mIGBvZmZfcmVnYC4gVGhpcyBzdWdnZXN0cyB0aGUgY2hhbmdlcyBhcmUgbm90IHB1cmVseSBjb3NtZXRpYzsgdGhleSBhZmZlY3QgdGhlIGZ1bmN0aW9uYWwgYmVoYXZpb3Igb2YgdGhlIHZlcmlmaWVyLCBwb3RlbnRpYWxseSBpbiBob3cgZXJyb3IgbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIG9wZXJhdGlvbnMuXG5cbkFscmlnaHQsIGxldCdzIHpvb20gb3V0IGFuZCBjb25zaWRlciB0aGUgY29udGV4dC4gU2luY2UgdGhpcyBpcyBhIEJQRiB2ZXJpZmllciBjaGFuZ2UsIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AgaXMgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzIHRvIGFkanVzdCBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiBwb2ludGVycy4gR2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGNoYW5nZXMsIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhIGZ1bmN0aW9uYWwgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdmVyaWZpZXIgaXMgZW5hYmxlZC4gSSBrbm93IGBDT05GSUdfQlBGX1NZU0NBTExgIHBsYXlzIGEgcm9sZTsgSSdsbCBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBvciBtYXliZSBldmVuIGBpbml0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIHZlcmlmaWVyIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTozNS4zMjEyODY2MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4Nzg4MzQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTozOS41MDkxNzcwMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUwMDg5MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEJQRiBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyB0aGUga2V5IGNvbmZpZyBzZXR0aW5nIGhlcmUuIEl0IGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIHRvIHRoZSBhcmVhIG9mIGludmVzdGlnYXRpb247IHdlJ3JlIGxpa2VseSBsb29raW5nIGF0IHRyYWNpbmcsIHNlY3VyaXR5LCBvciBwZXJoYXBzIHN5c3RlbSBjYWxsIGZpbHRlcmluZyB3aXRoaW4gYSBCUEYgY29udGV4dC4gTXkgbmV4dCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBlbGVtZW50cyByZWxhdGVkIHRvIHRoaXMgY29uZmlndXJhdGlvbi5cblxuVGhlIGltbWVkaWF0ZSBnb2FsIGlzIHRvIHRyYWNrIGRvd24gdGhlIGZvY3VzIHN5bWJvbHMsIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMgdGhlIGZ1bmN0aW9uIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB3aXRoaW4gdGhlIGBCUEZfU1lTQ0FMTGAgc2V0dXAsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbi5cblxuVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmb2xsb3cgdXAgaXMgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgb2YgYGFkanVzdF9wdHJfbWluX21heF92YWxzYC4gU2VlaW5nIHdoZXJlIGl0J3MgYmVpbmcgaW52b2tlZCB3aWxsIG9mZmVyIGNvbnRleHQsIHJldmVhbGluZyBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0gY2FsbCBwYXRoIGFuZCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIHBvdGVudGlhbGx5IGFmZmVjdGVkLiBUaGlzIHF1aWNrbHkgbGVhZHMgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW5mbHVlbmNlIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjQyLjk1OTI2ODUxMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI0NTUzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz00MDAzPXN0YXRpYyBpbnQgY2hlY2tfc3RhY2tfcmVhZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQwMjctXFx0ICogY2hlY2tfc3RhY2tfYWNjZXNzX2Zvcl9wdHJfYXJpdGhtZXRpYygpIGNhbGxlZCBieVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MDI4OlxcdCAqIGFkanVzdF9wdHJfbWluX21heF92YWxzKCkgcHJldmVudHMgdXNlcnMgZnJvbSBjcmVhdGluZyBzdGFjayBwb2ludGVyc1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MDI5LVxcdCAqIHdpdGggdmFyaWFibGUgb2Zmc2V0cywgdGhlcmVmb3JlIG5vIGNoZWNrIGlzIHJlcXVpcmVkIGhlcmUuIEZ1cnRoZXIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM2ODA9c3RhdGljIGludCBzYW5pdGl6ZV9jaGVja19ib3VuZHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzcxNi0gKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTM3MTc6c3RhdGljIGludCBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzcxOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ4MDg9c3RhdGljIGludCBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODcwLVxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0ODcxOlxcdFxcdFxcdFxcdHJldHVybiBhZGp1c3RfcHRyX21pbl9tYXhfdmFscyhlbnYsIGluc24sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0ODcyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzcmNfcmVnLCBkc3RfcmVnKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg3OC1cXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDg3OTpcXHRcXHRcXHRyZXR1cm4gYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoZW52LCBpbnNuLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg4MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgZHN0X3JlZywgc3JjX3JlZyk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ4OTQtXFx0XFx0aWYgKHB0cl9yZWcpIC8qIHBvaW50ZXIgKz0gSyAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNDg5NTpcXHRcXHRcXHRyZXR1cm4gYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHMoZW52LCBpbnNuLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDg5Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgcHRyX3JlZywgc3JjX3JlZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAwOjQ1OjQzLjA2MTcyOTc1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjE3MzY3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgTGluZWFnZSBvZiBEYXRhIFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IHdlJ3JlIGhhbmRsaW5nIHRoZSB2YWxpZGF0aW9uIG9mIG91ciByZWdpc3RlciBtaW4vbWF4IHZhbHVlcy4gSSBzZWUgdGhhdCBgYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNgIGlzIGNhbGxlZCBieSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLiBUaGF0J3MgdGhlIGltbWVkaWF0ZSBjb25uZWN0aW9uLCBidXQgaXQncyBub3QgdGhlIHdob2xlIHN0b3J5LiBUaGUgcmVhbCBlbnRyeSBwb2ludCBzZWVtcyB0byBiZSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLCBhbmQgKnRoYXQqIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgZG9fY2hlY2tgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNoYWluIG9mIHJlc3BvbnNpYmlsaXR5IGJldHRlci4gVGhlcmVmb3JlLCBJIHdhbnQgdG8gZHJpbGwgaW50byBib3RoIGBhZGp1c3RfcmVnX21pbl9tYXhfdmFsc2AgYW5kIGBkb19jaGVja2Agbm93LCBzbyBJIGhhdmUgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjkwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDA6NDU6NDYuNjgzNDcwMDIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODMyMzQyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGp1c3RfcmVnX21pbl9tYXhfdmFsc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE0NjUwPXN0YXRpYyBpbnQgYWRqdXN0X3NjYWxhcl9taW5fbWF4X3ZhbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDgwNy0gKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTQ4MDg6c3RhdGljIGludCBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDgwOS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTQ5NzY9c3RhdGljIGludCBjaGVja19hbHVfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE1MTU2LVxcdFxcdGVyciA9IGNoZWNrX3JlZ19hcmcoZW52LCBpbnNuLVxcdTAwM2Vkc3RfcmVnLCBEU1RfT1BfTk9fTUFSSyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE1MTU3OlxcdFxcdGVyciA9IGVyciA/OiBhZGp1c3RfcmVnX21pbl9tYXhfdmFscyhlbnYsIGluc24pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNTE1OC1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo0Ni43OTE3OTgyOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzI1MTE2MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIFRoZSBrZXkgaGVyZSBpcyB0aGUgZml4IGZvciB0aGF0IGBzY2FsYXIgKz0gcG9pbnRlcmAgaXNzdWUgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgIGlzIGNhbGxlZCBieSBgY2hlY2tfYWx1X29wYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGRvX2NoZWNrYC4gVGhhdCBjaGFpbiBvZiBjYWxscyBpcyBpbXBvcnRhbnQgZm9yIGNvbnRleHQuIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AgbG9va3MgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcsIGJ1dCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGl0J3MgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgcmVhY2hhYmxlLCBtYWtlcyBpdCBmdXp6YWJsZSwgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5J3JlIGluIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIGhhdmUgZGVidWcgaW5mby5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBhZGp1c3RfcHRyX21pbl9tYXhfdmFsc2AsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgd2Fzbid0IHByb3Blcmx5IGluaGVyaXRpbmcgdGhlIGZ1bGwgcG9pbnRlciByZWdpc3RlciBzdGF0ZSBkdXJpbmcgdGhhdCBgc2NhbGFyICs9IHBvaW50ZXJgIG9wZXJhdGlvbi4gSW4gZXNzZW5jZSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCdzIGZpeGluZyBob3cgdGhlIHZlcmlmaWVyIGhhbmRsZXMgcG9pbnRlciBhcml0aG1ldGljLCBzcGVjaWZpY2FsbHkgaW4gdGhpcyBjYXNlLCB0aGUgYCs9YCBvcGVyYXRpb24gd2l0aCBhIHNjYWxhciB2YWx1ZSBhbmQgYSBwb2ludGVyLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBwYXRjaCBtb2RpZmllcyBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYWRkcyB0ZXN0IGNhc2VzLCB0aGUgdGVzdHMgdGhlbXNlbHZlcyByZWx5IG9uIHNldmVyYWwgQlBGIGZlYXR1cmVzLCBuYW1lbHkgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCwgYGJwZl9keW5wdHJfZGF0YWAsIGFuZCBgYnBmX3Jkb25seV9jYXN0YC4gVGhhdCBzYWlkLCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGlzIHVuZG91YnRlZGx5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBgQ09ORklHX0JQRl9KSVRgIG1pZ2h0IGJlIGJlbmVmaWNpYWwgZm9yIHRlc3RpbmcgcHVycG9zZXMsIGJ1dCBpdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkuIFNvIEknbGwganVzdCBsaXN0IGBCUEZfU1lTQ0FMTGAgYXMgYSByZXF1aXJlZCBjb25maWcuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgaW1wb3J0YW50IHN5bWJvbHMuIEkndmUgcmUtY29uZmlybWVkIHRoYXQgYGFkanVzdF9wdHJfbWluX21heF92YWxzYCBpcyBzdGF0aWMuIEV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCdzIHN0aWxsIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEdpdmVuIHRoYXQgc3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucywgaXQgaXMgc3RpbGwgYSB2aWFibGUgdGFyZ2V0LiBTbyBJJ2xsIGFsc28gaW5jbHVkZSBgYWRqdXN0X3JlZ19taW5fbWF4X3ZhbHNgLCBzaW5jZSBpdCdzIGRpcmVjdGx5IHJlbGF0ZWQuXG5cbkxldCBtZSByZXZpZXcgdGhlIGNvZGUgYWdhaW4uLi4gWWVwLCB0aGlzIGNvbmZpcm1zIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlOlxuXG5gYGBjXG5cdC8qIEZvciAnc2NhbGFyICs9IHBvaW50ZXInLCBkc3RfcmVnIGluaGVyaXRzIHRoZSBjb21wbGV0ZSBwb2ludGVyXG5cdCAqIHJlZ2lzdGVyIHN0YXRlLiBJbmRpdmlkdWFsIGZpZWxkcyBtYXkgYmUgYWRqdXN0ZWQgbGF0ZXIgYnkgcG9pbnRlclxuXHQgKiBhcml0aG1ldGljLlxuXHQgKi9cblx0aWYgKCFwdHJfaXNfZHN0X3JlZykge1xuXHRcdGVudi1cdTAwM2VmYWtlX3JlZ1swXSA9ICpvZmZfcmVnO1xuXHRcdG9mZl9yZWcgPSBcdTAwMjZlbnYtXHUwMDNlZmFrZV9yZWdbMF07XG5cdFx0KmRzdF9yZWcgPSAqcHRyX3JlZztcblx0fVxuYGBgXG5cblRoaXMgcGF0Y2ggY2xlYXJseSBtb2RpZmllcyB0aGUgdmVyaWZpZXIncyBiZWhhdmlvciByZWxhdGVkIHRvIHBvaW50ZXIgYXJpdGhtZXRpYy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGUgY29ycmVjdGVkIHByb3BhZ2F0aW9uIG9mIHRoZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIGR1cmluZyBzY2FsYXIgYWRkaXRpb24uIFRoaXMgY291bGQgZWFzaWx5IGxlYWQgdG8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBpZiBub3Qgcmlnb3JvdXNseSBmdXp6ZWQuXG5cbkluIHNob3J0OiBUaGlzIHBhdGNoIGlzIGZpeGluZyBob3cgQlBGIGhhbmRsZXMgYHNjYWxhciArPSBwb2ludGVyYCBvcGVyYXRpb25zIGluIHRoZSB2ZXJpZmllciwgcHJvcGFnYXRpbmcgdGhlIHBvaW50ZXIgc3RhdGUgY29ycmVjdGx5LiBUaGlzIGlzIGZ1bmN0aW9uYWwsIHNvIGZ1enppbmcgaXMgY3JpdGljYWwuXG5cbkNvbmZpZ3M6IGBCUEZfU1lTQ0FMTGBcbkZvY3VzU3ltYm9sczogYGFkanVzdF9wdHJfbWluX21heF92YWxzYCwgYGFkanVzdF9yZWdfbWluX21heF92YWxzYFxuXG5UaW1lIHRvIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODM4LCJPdXRwdXRUb2tlbnMiOjEyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMDo0NTo1Ni4xMTY5MTY0MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5MTEwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWRqdXN0X3B0cl9taW5fbWF4X3ZhbHNcIixcbiAgICBcImFkanVzdF9yZWdfbWluX21heF92YWxzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSBgc2NhbGFyICs9IHBvaW50ZXJgIG9wZXJhdGlvbnMgZGlkIG5vdCBjb3JyZWN0bHkgcHJvcGFnYXRlIHRoZSBjb21wbGV0ZSBwb2ludGVyIHJlZ2lzdGVyIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkanVzdF9wdHJfbWluX21heF92YWxzXCIsXG4gICAgXCJhZGp1c3RfcmVnX21pbl9tYXhfdmFsc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgYHNjYWxhciArPSBwb2ludGVyYCBvcGVyYXRpb25zIGRpZCBub3QgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGUgY29tcGxldGUgcG9pbnRlciByZWdpc3RlciBzdGF0ZSB0byB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[1] Phase: Succeeded StartedAt: 2026-07-23 00:46:07 +0000 UTC FinishedAt: 2026-07-23 00:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 00:46:07 +0000 UTC FinishedAt: 2026-07-23 00:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2] Phase: Succeeded StartedAt: 2026-07-23 00:46:07 +0000 UTC FinishedAt: 2026-07-23 05:12:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 00:46:07 +0000 UTC FinishedAt: 2026-07-23 05:12:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 00:46:07 +0000 UTC FinishedAt: 2026-07-23 00:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 00:46:07 +0000 UTC FinishedAt: 2026-07-23 00:46:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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-workflow598sm/series-workflow598sm-convert-artifact-1682014725/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 00:46:28 +0000 UTC FinishedAt: 2026-07-23 01:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 00:46:28 +0000 UTC FinishedAt: 2026-07-23 01:29:08 +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:*5b097e5a-9e5d-4960-acbf-1738eda20b65,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-workflow598sm/series-workflow598sm-convert-artifact-1682014725/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": "f5206d8a-07c0-483c-bb0e-1fcef895fe04", "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-workflow598sm/series-workflow598sm-build-action-1426079147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 00:46:28 +0000 UTC FinishedAt: 2026-07-23 01:28:57 +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:*5b097e5a-9e5d-4960-acbf-1738eda20b65,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-workflow598sm/series-workflow598sm-convert-artifact-1682014725/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": "f5206d8a-07c0-483c-bb0e-1fcef895fe04", "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-workflow598sm/series-workflow598sm-build-action-1426079147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:29:08 +0000 UTC FinishedAt: 2026-07-23 01:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:29:08 +0000 UTC FinishedAt: 2026-07-23 01:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:29:08 +0000 UTC FinishedAt: 2026-07-23 01:29:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:29:08 +0000 UTC FinishedAt: 2026-07-23 01:29:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-workflow598sm/series-workflow598sm-convert-artifact-264579040/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:29:33 +0000 UTC FinishedAt: 2026-07-23 01:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:29:33 +0000 UTC FinishedAt: 2026-07-23 01:31:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f5206d8a-07c0-483c-bb0e-1fcef895fe04,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-workflow598sm/series-workflow598sm-build-action-1426079147/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-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:31:34 +0000 UTC FinishedAt: 2026-07-23 01:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:31:34 +0000 UTC FinishedAt: 2026-07-23 01:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:31:34 +0000 UTC FinishedAt: 2026-07-23 02:07:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:31:34 +0000 UTC FinishedAt: 2026-07-23 02:07:31 +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:*5b097e5a-9e5d-4960-acbf-1738eda20b65,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-workflow598sm/series-workflow598sm-convert-artifact-264579040/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": "58db5c85-0fe2-4723-87bf-d699f96f3f31", "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-workflow598sm/series-workflow598sm-build-action-1782027420/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 01:31:34 +0000 UTC FinishedAt: 2026-07-23 02:06:47 +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:*5b097e5a-9e5d-4960-acbf-1738eda20b65,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-workflow598sm/series-workflow598sm-convert-artifact-264579040/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": "58db5c85-0fe2-4723-87bf-d699f96f3f31", "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-workflow598sm/series-workflow598sm-build-action-1782027420/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:07:31 +0000 UTC FinishedAt: 2026-07-23 02:07:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:07:31 +0000 UTC FinishedAt: 2026-07-23 02:07:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:07:31 +0000 UTC FinishedAt: 2026-07-23 02:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:07:31 +0000 UTC FinishedAt: 2026-07-23 02:09:33 +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:*58db5c85-0fe2-4723-87bf-d699f96f3f31,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-workflow598sm/series-workflow598sm-build-action-1782027420/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-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 05:12:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 05:12:16 +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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"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:*f5206d8a-07c0-483c-bb0e-1fcef895fe04,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*58db5c85-0fe2-4723-87bf-d699f96f3f31,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-workflow598sm/series-workflow598sm-build-action-1426079147/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-workflow598sm/series-workflow598sm-build-action-1782027420/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 02:11:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 02:10:48 +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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"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-workflow598sm/series-workflow598sm-convert-artifact-4011814201/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 02:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 02:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:09:43 +0000 UTC FinishedAt: 2026-07-23 02:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:11:06 +0000 UTC FinishedAt: 2026-07-23 05:12:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow598sm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","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":["adjust_ptr_min_max_vals","adjust_reg_min_max_vals"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"91e57a35-b45b-4a8c-a44f-4ba29a9f17b0","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-07-23 02:11:06 +0000 UTC FinishedAt: 2026-07-23 05:12:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f5206d8a-07c0-483c-bb0e-1fcef895fe04,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*58db5c85-0fe2-4723-87bf-d699f96f3f31,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-workflow598sm/series-workflow598sm-build-action-1426079147/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-workflow598sm/series-workflow598sm-build-action-1782027420/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-workflow598sm/series-workflow598sm-convert-artifact-4011814201/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,}