Name: series-workflowwv7l8 Phase: Succeeded StartedAt: 2026-07-05 23:58:29 +0000 UTC FinishedAt: 2026-07-06 04:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[0] Phase: Succeeded StartedAt: 2026-07-05 23:58:29 +0000 UTC FinishedAt: 2026-07-06 00:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 23:58:29 +0000 UTC FinishedAt: 2026-07-06 00:19:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b736449288972c6071c820596ef9a7d6ac73a8ae", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b736449288972c6071c820596ef9a7d6ac73a8ae", "config_name": "upstream-apparmor-kasan.config", "series_id": "43e37bd2-06cd-4004-be0a-8a77868d5873" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "lookup_open", "vfs_lookup_open", "open_last_lookups" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7dmZzX2xvb2t1cF9vcGVuJiMzNDssCiAgICAmIzM0O29wZW5fbGFzdF9sb29rdXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBjb3JlIFZGUyBwYXRoIGxvb2t1cCBhbmQgZmlsZSBvcGVuaW5nIGxvZ2ljIChgbG9va3VwX29wZW5gLCBgb3Blbl9sYXN0X2xvb2t1cHNgKSBhbmQgaW50cm9kdWNlcyBhIG5ldyBleHBvcnRlZCBmdW5jdGlvbiBgdmZzX2xvb2t1cF9vcGVuYC4gVGhpcyBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzIGFsbCBmaWxlc3lzdGVtcyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMDoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI3MWI1MThmZTY1NTk1NTE0Yjc4N2YwOWYxY2QyNmI1YTU3NTI0MmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDAwOjE4OjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jXG5pbmRleCA3ZWFkM2RiNTViZTIzOS4uNjBkZGRmN2I5N2FhMjIgMTAwNjQ0XG4tLS0gYS9mcy9uYW1laS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9uYW1laS5jXG5AQCAtNDM5NywxOSAmIzQzOzQzOTcsNDEgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnlcbiAgKiBBbiBlcnJvciBjb2RlIGlzIHJldHVybmVkIG9uIGZhaWx1cmUuXG4gICovXG4gc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wLFxuLVx0XHRcdFx0ICBib29sIGdvdF93cml0ZSwgc3RydWN0IGRlbGVnYXRlZF9pbm9kZSAqZGVsZWdhdGVkX2lub2RlKVxuJiM0MztcdFx0XHRcdCAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcbiBcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwO1xuIFx0c3RydWN0IGRlbnRyeSAqZGlyID0gbmQtXHUwMDNlcGF0aC5kZW50cnk7XG4gXHRzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IGRpci1cdTAwM2VkX2lub2RlO1xuLVx0aW50IG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbiYjNDM7XHRpbnQgb3Blbl9mbGFnO1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuLVx0aW50IGVycm9yLCBjcmVhdGVfZXJyb3IgPSAwO1xuLVx0dW1vZGVfdCBtb2RlID0gb3AtXHUwMDNlbW9kZTtcbiYjNDM7XHRpbnQgZXJyb3IsIGNyZWF0ZV9lcnJvcjtcbiYjNDM7XHR1bW9kZV90IG1vZGU7XG4mIzQzO1x0Ym9vbCBnb3Rfd3JpdGU7XG4gXG4tXHRpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSlcbi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4mIzQzO3JldHJ5OlxuJiM0MztcdG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbiYjNDM7XHRnb3Rfd3JpdGUgPSBmYWxzZTtcbiYjNDM7XHRtb2RlID0gb3AtXHUwMDNlbW9kZTtcbiYjNDM7XHRjcmVhdGVfZXJyb3IgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAob3Blbl9mbGFnIFx1MDAyNiAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHtcbiYjNDM7XHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogZG8gX25vdF8gZmFpbCB5ZXQgLSB3ZSBtaWdodCBub3QgbmVlZCB0aGF0IG9yIGZhaWwgd2l0aFxuJiM0MztcdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UmIzM5O2xsIGJlXG4mIzQzO1x0XHQgKiBkcm9wcGluZyB0aGlzIG9uZSBhbnl3YXkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHR9XG4mIzQzO1x0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVClcbiYjNDM7XHRcdGlub2RlX2xvY2soZGlyX2lub2RlKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRpbm9kZV9sb2NrX3NoYXJlZChkaXJfaW5vZGUpO1xuJiM0MztcbiYjNDM7XHRpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSkge1xuJiM0MztcdFx0ZGVudHJ5ID0gRVJSX1BUUigtRU5PRU5UKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiBcbiBcdGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNj0gfkZNT0RFX0NSRUFURUQ7XG4gXHRkZW50cnkgPSBkX2xvb2t1cChkaXIsIFx1MDAyNm5kLVx1MDAzZWxhc3QpO1xuQEAgLTQ0MTcsNyAmIzQzOzQ0MzksNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRpZiAoIWRlbnRyeSkge1xuIFx0XHRcdGRlbnRyeSA9IGRfYWxsb2NfcGFyYWxsZWwoZGlyLCBcdTAwMjZuZC1cdTAwM2VsYXN0KTtcbiBcdFx0XHRpZiAoSVNfRVJSKGRlbnRyeSkpXG4tXHRcdFx0XHRyZXR1cm4gZGVudHJ5O1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXHRcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTQ0MzMsNyAmIzQzOzQ0NTUsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0fVxuIFx0aWYgKGRlbnRyeS1cdTAwM2VkX2lub2RlKSB7XG4gXHRcdC8qIENhY2hlZCBwb3NpdGl2ZSBkZW50cnk6IHdpbGwgb3BlbiBpbiBmX29wLVx1MDAzZW9wZW4gKi9cbi1cdFx0cmV0dXJuIGRlbnRyeTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuIFx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVClcbkBAIC00NDU0LDcgJiM0Mzs0NDc2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHtcbiBcdFx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19FWENMKVxuIFx0XHRcdG9wZW5fZmxhZyBcdTAwMjY9IH5PX1RSVU5DO1xuLVx0XHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyLVx1MDAzZWRfaW5vZGUsIG1vZGUsIG1vZGUsIG1vZGUpO1xuJiM0MztcdFx0bW9kZSA9IHZmc19wcmVwYXJlX21vZGUoaWRtYXAsIGRpcl9pbm9kZSwgbW9kZSwgbW9kZSwgbW9kZSk7XG4gXHRcdGlmIChsaWtlbHkoZ290X3dyaXRlKSlcbiBcdFx0XHRjcmVhdGVfZXJyb3IgPSBtYXlfb19jcmVhdGUoaWRtYXAsIFx1MDAyNm5kLVx1MDAzZXBhdGgsXG4gXHRcdFx0XHRcdFx0ICAgIGRlbnRyeSwgbW9kZSk7XG5AQCAtNDQ2OSw3ICYjNDM7NDQ5MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGRlbnRyeSA9IGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTtcbiBcdFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXHUwMDI2XHUwMDI2IGRlbnRyeSA9PSBFUlJfUFRSKC1FTk9FTlQpKVxuIFx0XHRcdGRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTtcbi1cdFx0cmV0dXJuIGRlbnRyeTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDg5LDcgJiM0Mzs0NTExLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdC8qIE5lZ2F0aXZlIGRlbnRyeSwganVzdCBjcmVhdGUgdGhlIGZpbGUgKi9cbiBcdGlmICghZGVudHJ5LVx1MDAzZWRfaW5vZGUgXHUwMDI2XHUwMDI2IChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpKSB7XG4gXHRcdC8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqL1xuLVx0XHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7XG4mIzQzO1x0XHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XG4gXHRcdGlmIChlcnJvcilcbiBcdFx0XHRnb3RvIG91dF9kcHV0O1xuIFxuQEAgLTQ1MDgsMTMgJiM0Mzs0NTMwLDEwOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbiBcdFx0Z290byBvdXRfZHB1dDtcbiBcdH1cbiYjNDM7b3V0OlxuJiM0MztcdGlmICghSVNfRVJSKGRlbnRyeSkpIHtcbiYjNDM7XHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbiYjNDM7XHRcdFx0ZnNub3RpZnlfY3JlYXRlKGRpcl9pbm9kZSwgZGVudHJ5KTtcbiYjNDM7XHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKVxuJiM0MztcdFx0XHRmc25vdGlmeV9vcGVuKGZpbGUpO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAoKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkgfHwgY3JlYXRlX2Vycm9yKVxuJiM0MztcdFx0aW5vZGVfdW5sb2NrKGRpcl9pbm9kZSk7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0aW5vZGVfdW5sb2NrX3NoYXJlZChkaXJfaW5vZGUpO1xuJiM0MztcbiYjNDM7XHRpZiAoZ290X3dyaXRlKVxuJiM0MztcdFx0bW50X2Ryb3Bfd3JpdGUobmQtXHUwMDNlcGF0aC5tbnQpO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfZGVsZWdhdGVkKFx1MDAyNmRlbGVnYXRlZF9pbm9kZSkpIHtcbiYjNDM7XHRcdC8qIE11c3QgaGF2ZSBjb21lIHRocm91Z2ggb3V0X2RwdXQ6IGRlbnRyeSBpcyBhbiBFUlJfUFRSKCkgKi9cbiYjNDM7XHRcdGVycm9yID0gYnJlYWtfZGVsZWdfd2FpdChcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpO1xuJiM0MztcbiYjNDM7XHRcdGlmICghZXJyb3IpXG4mIzQzO1x0XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1x0XHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0dXJuIGRlbnRyeTtcbiBcbiBvdXRfZHB1dDpcbiBcdGRwdXQoZGVudHJ5KTtcbi1cdHJldHVybiBFUlJfUFRSKGVycm9yKTtcbiYjNDM7XHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcbiYjNDM7XHRnb3RvIG91dDtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB2ZnNfbG9va3VwX29wZW4gLSBvcGVuIGFuZCBwb3NzaWJseSBjcmVhdGUgYSByZWd1bGFyIGZpbGVcbiYjNDM7ICogQHBhcmVudDogZGlyZWN0b3J5IHRvIGNvbnRhaW4gZmlsZVxuJiM0MzsgKiBAbGFzdDogZmluYWwgY29tcG9uZW50IG9mIGZpbGUgbmFtZVxuJiM0MzsgKiBAb3Blbl9mbGFnOiBPX2ZsYWdzXG4mIzQzOyAqIEBtb2RlOiBpbml0aWFsIHBlcm1pc3Npb25zIGZvciBmaWxlXG4mIzQzOyAqXG4mIzQzOyAqIE9wZW4gYSBmaWxlIGFmdGVyIGxvb2t1cCBhbmQvb3IgY3JlYXRlLiAgVGhpcyBwcm92aWRlcyBzaW1pbGFyXG4mIzQzOyAqIGZ1bmN0aW9uYWxpdHkgb3Blbl9sYXN0X2xvb2t1cHMoKSBmb3IgaW4ta2VybmVsIHVzZXJzLCBwYXJ0aWN1bGFybHlcbiYjNDM7ICogbmZzZC5cbiYjNDM7ICogSXQgdXNlcyAtXHUwMDNlYXRvbWljX29wZW4gb3IgLVx1MDAzZWxvb2t1cCAvIC1cdTAwM2VjcmVhdGUgLyAtXHUwMDNlb3BlbiBhcyBhcHByb3ByaWF0ZS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogdGhlIG9wZW5lZCBzdHJ1Y3QgZmlsZSwgb3IgYW4gZXJyb3IuXG4mIzQzOyAqICAgICBDYWxsZXIgc2hvdWxkIGNoZWNrIHRoYXQgdGhlIGZpbGUgb3BlbmVkIGlzIHJlZ3VsYXIsXG4mIzQzOyAqICAgICBpZiBzb21ldGhpbmcgZWxzZSB3YXMgZm91bmQsIGFuIE9fUEFUSCBmaWxlIGlzIHByb3ZpZGVkLlxuJiM0MzsgKiAgICAgQ2FsbGVyIHNob3VsZCB2YWxpZGF0ZSBGTU9ERV9DUkVBVEVEIGlmIE9fRVhDTCB3YXMgcmVxdWVzdGVkLlxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcbiYjNDM7XHRcdFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZmlsZSAqZmlsZSBfX2ZyZWUoZnB1dCkgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBuYW1laWRhdGEgbmQgPSB7fTtcbiYjNDM7XHRzdHJ1Y3Qgb3Blbl9mbGFncyBvcCA9IHt9O1xuJiM0MztcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcbiYjNDM7XHRpbnQgZXJyb3IgPSAwO1xuJiM0MztcbiYjNDM7XHRXQVJOX09OQ0UobW9kZSBcdTAwMjYgIVNfSUFMTFVHTywgXCYjMzQ7bW9kZSBtdXN0IG9ubHkgaGF2ZSBwZXJtaXNzaW9uIGJpdHNcJiMzNDspO1xuJiM0MztcdGVycm9yID0gbG9va3VwX25vcGVybV9jb21tb24obGFzdCwgcGFyZW50LVx1MDAzZWRlbnRyeSk7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoZXJyb3IpO1xuJiM0MztcbiYjNDM7XHRmaWxlID0gYWxsb2NfZW1wdHlfZmlsZShvcGVuX2ZsYWcsIGN1cnJlbnRfY3JlZCgpKTtcbiYjNDM7XHRpZiAoSVNfRVJSKGZpbGUpKVxuJiM0MztcdFx0cmV0dXJuIGZpbGU7XG4mIzQzO1xuJiM0MztcdG5kLnBhdGggPSAqcGFyZW50O1xuJiM0MztcdG5kLmxhc3QgPSAqbGFzdDtcbiYjNDM7XHRuZC5mbGFncyA9IExPT0tVUF9PUEVOO1xuJiM0MztcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHtcbiYjNDM7XHRcdG5kLmZsYWdzIHw9IExPT0tVUF9DUkVBVEU7XG4mIzQzO1x0XHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpXG4mIzQzO1x0XHRcdG5kLmZsYWdzIHw9IExPT0tVUF9FWENMO1xuJiM0MztcdH1cbiYjNDM7XHRvcC5vcGVuX2ZsYWcgPSBvcGVuX2ZsYWc7XG4mIzQzO1x0b3AubW9kZSA9IFNfSUZSRUcgfCBtb2RlO1xuJiM0MztcdGRlbnRyeSA9IGxvb2t1cF9vcGVuKFx1MDAyNm5kLCBmaWxlLCBcdTAwMjZvcCk7XG4mIzQzO1xuJiM0MztcdGlmIChJU19FUlIoZGVudHJ5KSlcbiYjNDM7XHRcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xuJiM0MztcbiYjNDM7XHRpZiAoZF9yZWFsbHlfaXNfbmVnYXRpdmUoZGVudHJ5KSkge1xuJiM0MztcdFx0ZXJyb3IgPSAtRU5PRU5UO1xuJiM0MztcdH0gZWxzZSBpZiAoIShmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKSkge1xuJiM0MztcdFx0bmQucGF0aC5kZW50cnkgPSBkZW50cnk7XG4mIzQzO1x0XHRpZiAoIWRfaXNfcmVnKGRlbnRyeSkpXG4mIzQzO1x0XHRcdC8qXG4mIzQzO1x0XHRcdCAqIGFsbG93IGNhbGxlciB0byBzZWUgZGVudHJ5IGFuZCBjaG9vc2VcbiYjNDM7XHRcdFx0ICogY29ycmVjdCBlcnJvciBjb2RlXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRmaWxlLVx1MDAzZWZfZmxhZ3MgfD0gT19QQVRIO1xuJiM0MztcdFx0ZXJyb3IgPSB2ZnNfb3BlbihcdTAwMjZuZC5wYXRoLCBmaWxlKTtcbiYjNDM7XHR9XG4mIzQzO1x0ZHB1dChkZW50cnkpO1xuJiM0MztcbiYjNDM7XHRpZiAoZXJyb3IpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XG4mIzQzO1x0cmV0dXJuIG5vX2ZyZWVfcHRyKGZpbGUpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModmZzX2xvb2t1cF9vcGVuLCBcJiMzNDtuZnNkXCYjMzQ7KTtcbiYjNDM7XG4gc3RhdGljIGlubGluZSBib29sIHRyYWlsaW5nX3NsYXNoZXMoc3RydWN0IG5hbWVpZGF0YSAqbmQpXG4ge1xuIFx0cmV0dXJuIChib29sKW5kLVx1MDAzZWxhc3QubmFtZVtuZC1cdTAwM2VsYXN0Lmxlbl07XG5AQCAtNDU1NCwxMCAmIzQzOzQ2NzEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX2Zhc3RfZm9yX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIGludCBvcGVuX2ZsYWcpXG4gc3RhdGljIGNvbnN0IGNoYXIgKm9wZW5fbGFzdF9sb29rdXBzKHN0cnVjdCBuYW1laWRhdGEgKm5kLFxuIFx0XHQgICBzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wKVxuIHtcbi1cdHN0cnVjdCBkZWxlZ2F0ZWRfaW5vZGUgZGVsZWdhdGVkX2lub2RlID0geyB9O1xuLVx0c3RydWN0IGRlbnRyeSAqZGlyID0gbmQtXHUwMDNlcGF0aC5kZW50cnk7XG4gXHRpbnQgb3Blbl9mbGFnID0gb3AtXHUwMDNlb3Blbl9mbGFnO1xuLVx0Ym9vbCBnb3Rfd3JpdGUgPSBmYWxzZTtcbiBcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcbiBcdGNvbnN0IGNoYXIgKnJlcztcbiBcbkBAIC00NTg2LDQ0ICYjNDM7NDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXG4gXHRcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUNISUxEKTtcbiBcdFx0fVxuIFx0fVxuLXJldHJ5OlxuLVx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgKE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4tXHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4tXHRcdC8qXG4tXHRcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcbi1cdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UmIzM5O2xsIGJlXG4tXHRcdCAqIGRyb3BwaW5nIHRoaXMgb25lIGFueXdheS5cbi1cdFx0ICovXG4tXHR9XG4tXHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKVxuLVx0XHRpbm9kZV9sb2NrKGRpci1cdTAwM2VkX2lub2RlKTtcbi1cdGVsc2Vcbi1cdFx0aW5vZGVfbG9ja19zaGFyZWQoZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVx0ZGVudHJ5ID0gbG9va3VwX29wZW4obmQsIGZpbGUsIG9wLCBnb3Rfd3JpdGUsIFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XG4tXHRpZiAoIUlTX0VSUihkZW50cnkpKSB7XG4tXHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbi1cdFx0XHRmc25vdGlmeV9jcmVhdGUoZGlyLVx1MDAzZWRfaW5vZGUsIGRlbnRyeSk7XG4tXHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKVxuLVx0XHRcdGZzbm90aWZ5X29wZW4oZmlsZSk7XG4tXHR9XG4tXHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKVxuLVx0XHRpbm9kZV91bmxvY2soZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVx0ZWxzZVxuLVx0XHRpbm9kZV91bmxvY2tfc2hhcmVkKGRpci1cdTAwM2VkX2lub2RlKTtcbi1cbi1cdGlmIChnb3Rfd3JpdGUpXG4tXHRcdG1udF9kcm9wX3dyaXRlKG5kLVx1MDAzZXBhdGgubW50KTtcbiBcbi1cdGlmIChJU19FUlIoZGVudHJ5KSkge1xuLVx0XHRpZiAoaXNfZGVsZWdhdGVkKFx1MDAyNmRlbGVnYXRlZF9pbm9kZSkpIHtcbi1cdFx0XHRpbnQgZXJyb3IgPSBicmVha19kZWxlZ193YWl0KFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XG4tXG4tXHRcdFx0aWYgKCFlcnJvcilcbi1cdFx0XHRcdGdvdG8gcmV0cnk7XG4tXHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyb3IpO1xuLVx0XHR9XG4mIzQzO1x0ZGVudHJ5ID0gbG9va3VwX29wZW4obmQsIGZpbGUsIG9wKTtcbiYjNDM7XHRpZiAoSVNfRVJSKGRlbnRyeSkpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xuLVx0fVxuIFxuIFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiAoRk1PREVfT1BFTkVEIHwgRk1PREVfQ1JFQVRFRCkpIHtcbiBcdFx0ZHB1dChuZC1cdTAwM2VwYXRoLmRlbnRyeSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uYW1laS5oIGIvaW5jbHVkZS9saW51eC9uYW1laS5oXG5pbmRleCBlYmU2ZTI5ZjdlOTNiYS4uODZkNjU3YjI0ZmM2YTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25hbWVpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmFtZWkuaFxuQEAgLTk3LDYgJiM0Mzs5Nyw5IEBAIHN0cnVjdCBkZW50cnkgKnN0YXJ0X2NyZWF0aW5nX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4gc3RydWN0IGRlbnRyeSAqc3RhcnRfcmVtb3ZpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGRlbnRyeSAqY2hpbGQpO1xuIFxuJiM0MztzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LFxuJiM0MztcdFx0XHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSk7XG4mIzQzO1xuIC8qIGVuZF9jcmVhdGluZyAtIGZpbmlzaCBhY3Rpb24gc3RhcnRlZCB3aXRoIHN0YXJ0X2NyZWF0aW5nXG4gICogQGNoaWxkOiBkZW50cnkgcmV0dXJuZWQgYnkgc3RhcnRfY3JlYXRpbmcoKSBvciB2ZnNfbWtkaXIoKVxuICAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDt2ZnNfbG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7b3Blbl9sYXN0X2xvb2t1cHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNzFiNTE4ZmU2NTU5NTUxNGI3ODdmMDlmMWNkMjZiNWE1NzUyNDJkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwMDoxODoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDdlYWQzZGI1NWJlMjM5Li42MGRkZGY3Yjk3YWEyMiAxMDA2NDQKLS0tIGEvZnMvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9uYW1laS5jCkBAIC00Mzk3LDE5ICYjNDM7NDM5Nyw0MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeQogICogQW4gZXJyb3IgY29kZSBpcyByZXR1cm5lZCBvbiBmYWlsdXJlLgogICovCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAotCQkJCSAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wLAotCQkJCSAgYm9vbCBnb3Rfd3JpdGUsIHN0cnVjdCBkZWxlZ2F0ZWRfaW5vZGUgKmRlbGVnYXRlZF9pbm9kZSkKJiM0MzsJCQkJICBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3ApCiB7CiYjNDM7CXN0cnVjdCBkZWxlZ2F0ZWRfaW5vZGUgZGVsZWdhdGVkX2lub2RlID0geyB9OwogCXN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwOwogCXN0cnVjdCBkZW50cnkgKmRpciA9IG5kLSZndDtwYXRoLmRlbnRyeTsKIAlzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IGRpci0mZ3Q7ZF9pbm9kZTsKLQlpbnQgb3Blbl9mbGFnID0gb3AtJmd0O29wZW5fZmxhZzsKJiM0MzsJaW50IG9wZW5fZmxhZzsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7Ci0JaW50IGVycm9yLCBjcmVhdGVfZXJyb3IgPSAwOwotCXVtb2RlX3QgbW9kZSA9IG9wLSZndDttb2RlOwomIzQzOwlpbnQgZXJyb3IsIGNyZWF0ZV9lcnJvcjsKJiM0MzsJdW1vZGVfdCBtb2RlOwomIzQzOwlib29sIGdvdF93cml0ZTsKIAotCWlmICh1bmxpa2VseShJU19ERUFERElSKGRpcl9pbm9kZSkpKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKJiM0MztyZXRyeToKJiM0MzsJb3Blbl9mbGFnID0gb3AtJmd0O29wZW5fZmxhZzsKJiM0MzsJZ290X3dyaXRlID0gZmFsc2U7CiYjNDM7CW1vZGUgPSBvcC0mZ3Q7bW9kZTsKJiM0MzsJY3JlYXRlX2Vycm9yID0gMDsKJiM0MzsKJiM0MzsJaWYgKG9wZW5fZmxhZyAmYW1wOyAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHsKJiM0MzsJCWdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC0mZ3Q7cGF0aC5tbnQpOwomIzQzOwkJLyoKJiM0MzsJCSAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGgKJiM0MzsJCSAqIGEgZGlmZmVyZW50IGVycm9yOyBsZXQgbG9va3VwX29wZW4oKSBkZWNpZGU7IHdlJiMzOTtsbCBiZQomIzQzOwkJICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LgomIzQzOwkJICovCiYjNDM7CX0KJiM0MzsJaWYgKG9wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKQomIzQzOwkJaW5vZGVfbG9jayhkaXJfaW5vZGUpOwomIzQzOwllbHNlCiYjNDM7CQlpbm9kZV9sb2NrX3NoYXJlZChkaXJfaW5vZGUpOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSkgewomIzQzOwkJZGVudHJ5ID0gRVJSX1BUUigtRU5PRU5UKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAKIAlmaWxlLSZndDtmX21vZGUgJmFtcDs9IH5GTU9ERV9DUkVBVEVEOwogCWRlbnRyeSA9IGRfbG9va3VwKGRpciwgJmFtcDtuZC0mZ3Q7bGFzdCk7CkBAIC00NDE3LDcgJiM0Mzs0NDM5LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJaWYgKCFkZW50cnkpIHsKIAkJCWRlbnRyeSA9IGRfYWxsb2NfcGFyYWxsZWwoZGlyLCAmYW1wO25kLSZndDtsYXN0KTsKIAkJCWlmIChJU19FUlIoZGVudHJ5KSkKLQkJCQlyZXR1cm4gZGVudHJ5OwomIzQzOwkJCQlnb3RvIG91dDsKIAkJfQogCQlpZiAoZF9pbl9sb29rdXAoZGVudHJ5KSkKIAkJCWJyZWFrOwpAQCAtNDQzMyw3ICYjNDM7NDQ1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsCiAJfQogCWlmIChkZW50cnktJmd0O2RfaW5vZGUpIHsKIAkJLyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtJmd0O29wZW4gKi8KLQkJcmV0dXJuIGRlbnRyeTsKJiM0MzsJCWdvdG8gb3V0OwogCX0KIAogCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkKQEAgLTQ0NTQsNyAmIzQzOzQ0NzYsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkgewogCQlpZiAob3Blbl9mbGFnICZhbXA7IE9fRVhDTCkKIAkJCW9wZW5fZmxhZyAmYW1wOz0gfk9fVFJVTkM7Ci0JCW1vZGUgPSB2ZnNfcHJlcGFyZV9tb2RlKGlkbWFwLCBkaXItJmd0O2RfaW5vZGUsIG1vZGUsIG1vZGUsIG1vZGUpOwomIzQzOwkJbW9kZSA9IHZmc19wcmVwYXJlX21vZGUoaWRtYXAsIGRpcl9pbm9kZSwgbW9kZSwgbW9kZSwgbW9kZSk7CiAJCWlmIChsaWtlbHkoZ290X3dyaXRlKSkKIAkJCWNyZWF0ZV9lcnJvciA9IG1heV9vX2NyZWF0ZShpZG1hcCwgJmFtcDtuZC0mZ3Q7cGF0aCwKIAkJCQkJCSAgICBkZW50cnksIG1vZGUpOwpAQCAtNDQ2OSw3ICYjNDM7NDQ5MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsCiAJCWRlbnRyeSA9IGF0b21pY19vcGVuKCZhbXA7bmQtJmd0O3BhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTsKIAkJaWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgJmFtcDsmYW1wOyBkZW50cnkgPT0gRVJSX1BUUigtRU5PRU5UKSkKIAkJCWRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTsKLQkJcmV0dXJuIGRlbnRyeTsKJiM0MzsJCWdvdG8gb3V0OwogCX0KIAogCWlmIChkX2luX2xvb2t1cChkZW50cnkpKSB7CkBAIC00NDg5LDcgJiM0Mzs0NTExLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovCiAJaWYgKCFkZW50cnktJmd0O2RfaW5vZGUgJmFtcDsmYW1wOyAob3Blbl9mbGFnICZhbXA7IE9fQ1JFQVQpKSB7CiAJCS8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqLwotCQllcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7CiYjNDM7CQllcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsICZhbXA7ZGVsZWdhdGVkX2lub2RlKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfZHB1dDsKIApAQCAtNDUwOCwxMyAmIzQzOzQ1MzAsMTA4IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsCiAJCWVycm9yID0gY3JlYXRlX2Vycm9yOwogCQlnb3RvIG91dF9kcHV0OwogCX0KJiM0MztvdXQ6CiYjNDM7CWlmICghSVNfRVJSKGRlbnRyeSkpIHsKJiM0MzsJCWlmIChmaWxlLSZndDtmX21vZGUgJmFtcDsgRk1PREVfQ1JFQVRFRCkKJiM0MzsJCQlmc25vdGlmeV9jcmVhdGUoZGlyX2lub2RlLCBkZW50cnkpOwomIzQzOwkJaWYgKGZpbGUtJmd0O2ZfbW9kZSAmYW1wOyBGTU9ERV9PUEVORUQpCiYjNDM7CQkJZnNub3RpZnlfb3BlbihmaWxlKTsKJiM0MzsJfQomIzQzOwlpZiAoKG9wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKSB8fCBjcmVhdGVfZXJyb3IpCiYjNDM7CQlpbm9kZV91bmxvY2soZGlyX2lub2RlKTsKJiM0MzsJZWxzZQomIzQzOwkJaW5vZGVfdW5sb2NrX3NoYXJlZChkaXJfaW5vZGUpOwomIzQzOwomIzQzOwlpZiAoZ290X3dyaXRlKQomIzQzOwkJbW50X2Ryb3Bfd3JpdGUobmQtJmd0O3BhdGgubW50KTsKJiM0MzsKJiM0MzsJaWYgKGlzX2RlbGVnYXRlZCgmYW1wO2RlbGVnYXRlZF9pbm9kZSkpIHsKJiM0MzsJCS8qIE11c3QgaGF2ZSBjb21lIHRocm91Z2ggb3V0X2RwdXQ6IGRlbnRyeSBpcyBhbiBFUlJfUFRSKCkgKi8KJiM0MzsJCWVycm9yID0gYnJlYWtfZGVsZWdfd2FpdCgmYW1wO2RlbGVnYXRlZF9pbm9kZSk7CiYjNDM7CiYjNDM7CQlpZiAoIWVycm9yKQomIzQzOwkJCWdvdG8gcmV0cnk7CiYjNDM7CQlkZW50cnkgPSBFUlJfUFRSKGVycm9yKTsKJiM0MzsJfQomIzQzOwogCXJldHVybiBkZW50cnk7CiAKIG91dF9kcHV0OgogCWRwdXQoZGVudHJ5KTsKLQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiYjNDM7CWRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpOwomIzQzOwlnb3RvIG91dDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHZmc19sb29rdXBfb3BlbiAtIG9wZW4gYW5kIHBvc3NpYmx5IGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZQomIzQzOyAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGUKJiM0MzsgKiBAbGFzdDogZmluYWwgY29tcG9uZW50IG9mIGZpbGUgbmFtZQomIzQzOyAqIEBvcGVuX2ZsYWc6IE9fZmxhZ3MKJiM0MzsgKiBAbW9kZTogaW5pdGlhbCBwZXJtaXNzaW9ucyBmb3IgZmlsZQomIzQzOyAqCiYjNDM7ICogT3BlbiBhIGZpbGUgYWZ0ZXIgbG9va3VwIGFuZC9vciBjcmVhdGUuICBUaGlzIHByb3ZpZGVzIHNpbWlsYXIKJiM0MzsgKiBmdW5jdGlvbmFsaXR5IG9wZW5fbGFzdF9sb29rdXBzKCkgZm9yIGluLWtlcm5lbCB1c2VycywgcGFydGljdWxhcmx5CiYjNDM7ICogbmZzZC4KJiM0MzsgKiBJdCB1c2VzIC0mZ3Q7YXRvbWljX29wZW4gb3IgLSZndDtsb29rdXAgLyAtJmd0O2NyZWF0ZSAvIC0mZ3Q7b3BlbiBhcyBhcHByb3ByaWF0ZS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IHRoZSBvcGVuZWQgc3RydWN0IGZpbGUsIG9yIGFuIGVycm9yLgomIzQzOyAqICAgICBDYWxsZXIgc2hvdWxkIGNoZWNrIHRoYXQgdGhlIGZpbGUgb3BlbmVkIGlzIHJlZ3VsYXIsCiYjNDM7ICogICAgIGlmIHNvbWV0aGluZyBlbHNlIHdhcyBmb3VuZCwgYW4gT19QQVRIIGZpbGUgaXMgcHJvdmlkZWQuCiYjNDM7ICogICAgIENhbGxlciBzaG91bGQgdmFsaWRhdGUgRk1PREVfQ1JFQVRFRCBpZiBPX0VYQ0wgd2FzIHJlcXVlc3RlZC4KJiM0MzsgKi8KJiM0MztzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LAomIzQzOwkJCSAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKQomIzQzO3sKJiM0MzsJc3RydWN0IGZpbGUgKmZpbGUgX19mcmVlKGZwdXQpID0gTlVMTDsKJiM0MzsJc3RydWN0IG5hbWVpZGF0YSBuZCA9IHt9OwomIzQzOwlzdHJ1Y3Qgb3Blbl9mbGFncyBvcCA9IHt9OwomIzQzOwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiYjNDM7CWludCBlcnJvciA9IDA7CiYjNDM7CiYjNDM7CVdBUk5fT05DRShtb2RlICZhbXA7ICFTX0lBTExVR08sICYjMzQ7bW9kZSBtdXN0IG9ubHkgaGF2ZSBwZXJtaXNzaW9uIGJpdHMmIzM0Oyk7CiYjNDM7CWVycm9yID0gbG9va3VwX25vcGVybV9jb21tb24obGFzdCwgcGFyZW50LSZndDtkZW50cnkpOwomIzQzOwlpZiAoZXJyb3IpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiYjNDM7CiYjNDM7CWZpbGUgPSBhbGxvY19lbXB0eV9maWxlKG9wZW5fZmxhZywgY3VycmVudF9jcmVkKCkpOwomIzQzOwlpZiAoSVNfRVJSKGZpbGUpKQomIzQzOwkJcmV0dXJuIGZpbGU7CiYjNDM7CiYjNDM7CW5kLnBhdGggPSAqcGFyZW50OwomIzQzOwluZC5sYXN0ID0gKmxhc3Q7CiYjNDM7CW5kLmZsYWdzID0gTE9PS1VQX09QRU47CiYjNDM7CWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkgewomIzQzOwkJbmQuZmxhZ3MgfD0gTE9PS1VQX0NSRUFURTsKJiM0MzsJCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19FWENMKQomIzQzOwkJCW5kLmZsYWdzIHw9IExPT0tVUF9FWENMOwomIzQzOwl9CiYjNDM7CW9wLm9wZW5fZmxhZyA9IG9wZW5fZmxhZzsKJiM0MzsJb3AubW9kZSA9IFNfSUZSRUcgfCBtb2RlOwomIzQzOwlkZW50cnkgPSBsb29rdXBfb3BlbigmYW1wO25kLCBmaWxlLCAmYW1wO29wKTsKJiM0MzsKJiM0MzsJaWYgKElTX0VSUihkZW50cnkpKQomIzQzOwkJcmV0dXJuIEVSUl9DQVNUKGRlbnRyeSk7CiYjNDM7CiYjNDM7CWlmIChkX3JlYWxseV9pc19uZWdhdGl2ZShkZW50cnkpKSB7CiYjNDM7CQllcnJvciA9IC1FTk9FTlQ7CiYjNDM7CX0gZWxzZSBpZiAoIShmaWxlLSZndDtmX21vZGUgJmFtcDsgRk1PREVfT1BFTkVEKSkgewomIzQzOwkJbmQucGF0aC5kZW50cnkgPSBkZW50cnk7CiYjNDM7CQlpZiAoIWRfaXNfcmVnKGRlbnRyeSkpCiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBhbGxvdyBjYWxsZXIgdG8gc2VlIGRlbnRyeSBhbmQgY2hvb3NlCiYjNDM7CQkJICogY29ycmVjdCBlcnJvciBjb2RlCiYjNDM7CQkJICovCiYjNDM7CQkJZmlsZS0mZ3Q7Zl9mbGFncyB8PSBPX1BBVEg7CiYjNDM7CQllcnJvciA9IHZmc19vcGVuKCZhbXA7bmQucGF0aCwgZmlsZSk7CiYjNDM7CX0KJiM0MzsJZHB1dChkZW50cnkpOwomIzQzOwomIzQzOwlpZiAoZXJyb3IpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiYjNDM7CXJldHVybiBub19mcmVlX3B0cihmaWxlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sICYjMzQ7bmZzZCYjMzQ7KTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgYm9vbCB0cmFpbGluZ19zbGFzaGVzKHN0cnVjdCBuYW1laWRhdGEgKm5kKQogewogCXJldHVybiAoYm9vbCluZC0mZ3Q7bGFzdC5uYW1lW25kLSZndDtsYXN0Lmxlbl07CkBAIC00NTU0LDEwICYjNDM7NDY3MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfZmFzdF9mb3Jfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgaW50IG9wZW5fZmxhZykKIHN0YXRpYyBjb25zdCBjaGFyICpvcGVuX2xhc3RfbG9va3VwcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZCwKIAkJICAgc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcCkKIHsKLQlzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTsKLQlzdHJ1Y3QgZGVudHJ5ICpkaXIgPSBuZC0mZ3Q7cGF0aC5kZW50cnk7CiAJaW50IG9wZW5fZmxhZyA9IG9wLSZndDtvcGVuX2ZsYWc7Ci0JYm9vbCBnb3Rfd3JpdGUgPSBmYWxzZTsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJY29uc3QgY2hhciAqcmVzOwogCkBAIC00NTg2LDQ0ICYjNDM7NDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsCiAJCQkJcmV0dXJuIEVSUl9QVFIoLUVDSElMRCk7CiAJCX0KIAl9Ci1yZXRyeToKLQlpZiAob3Blbl9mbGFnICZhbXA7IChPX0NSRUFUIHwgT19UUlVOQyB8IE9fV1JPTkxZIHwgT19SRFdSKSkgewotCQlnb3Rfd3JpdGUgPSAhbW50X3dhbnRfd3JpdGUobmQtJmd0O3BhdGgubW50KTsKLQkJLyoKLQkJICogZG8gX25vdF8gZmFpbCB5ZXQgLSB3ZSBtaWdodCBub3QgbmVlZCB0aGF0IG9yIGZhaWwgd2l0aAotCQkgKiBhIGRpZmZlcmVudCBlcnJvcjsgbGV0IGxvb2t1cF9vcGVuKCkgZGVjaWRlOyB3ZSYjMzk7bGwgYmUKLQkJICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LgotCQkgKi8KLQl9Ci0JaWYgKG9wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKQotCQlpbm9kZV9sb2NrKGRpci0mZ3Q7ZF9pbm9kZSk7Ci0JZWxzZQotCQlpbm9kZV9sb2NrX3NoYXJlZChkaXItJmd0O2RfaW5vZGUpOwotCWRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCwgZ290X3dyaXRlLCAmYW1wO2RlbGVnYXRlZF9pbm9kZSk7Ci0JaWYgKCFJU19FUlIoZGVudHJ5KSkgewotCQlpZiAoZmlsZS0mZ3Q7Zl9tb2RlICZhbXA7IEZNT0RFX0NSRUFURUQpCi0JCQlmc25vdGlmeV9jcmVhdGUoZGlyLSZndDtkX2lub2RlLCBkZW50cnkpOwotCQlpZiAoZmlsZS0mZ3Q7Zl9tb2RlICZhbXA7IEZNT0RFX09QRU5FRCkKLQkJCWZzbm90aWZ5X29wZW4oZmlsZSk7Ci0JfQotCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkKLQkJaW5vZGVfdW5sb2NrKGRpci0mZ3Q7ZF9pbm9kZSk7Ci0JZWxzZQotCQlpbm9kZV91bmxvY2tfc2hhcmVkKGRpci0mZ3Q7ZF9pbm9kZSk7Ci0KLQlpZiAoZ290X3dyaXRlKQotCQltbnRfZHJvcF93cml0ZShuZC0mZ3Q7cGF0aC5tbnQpOwogCi0JaWYgKElTX0VSUihkZW50cnkpKSB7Ci0JCWlmIChpc19kZWxlZ2F0ZWQoJmFtcDtkZWxlZ2F0ZWRfaW5vZGUpKSB7Ci0JCQlpbnQgZXJyb3IgPSBicmVha19kZWxlZ193YWl0KCZhbXA7ZGVsZWdhdGVkX2lub2RlKTsKLQotCQkJaWYgKCFlcnJvcikKLQkJCQlnb3RvIHJldHJ5OwotCQkJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOwotCQl9CiYjNDM7CWRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCk7CiYjNDM7CWlmIChJU19FUlIoZGVudHJ5KSkKIAkJcmV0dXJuIEVSUl9DQVNUKGRlbnRyeSk7Ci0JfQogCiAJaWYgKGZpbGUtJmd0O2ZfbW9kZSAmYW1wOyAoRk1PREVfT1BFTkVEIHwgRk1PREVfQ1JFQVRFRCkpIHsKIAkJZHB1dChuZC0mZ3Q7cGF0aC5kZW50cnkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uYW1laS5oIGIvaW5jbHVkZS9saW51eC9uYW1laS5oCmluZGV4IGViZTZlMjlmN2U5M2JhLi44NmQ2NTdiMjRmYzZhMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uYW1laS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmFtZWkuaApAQCAtOTcsNiAmIzQzOzk3LDkgQEAgc3RydWN0IGRlbnRyeSAqc3RhcnRfY3JlYXRpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCwKIHN0cnVjdCBkZW50cnkgKnN0YXJ0X3JlbW92aW5nX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCQkJICAgICBzdHJ1Y3QgZGVudHJ5ICpjaGlsZCk7CiAKJiM0MztzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LAomIzQzOwkJCSAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKTsKJiM0MzsKIC8qIGVuZF9jcmVhdGluZyAtIGZpbmlzaCBhY3Rpb24gc3RhcnRlZCB3aXRoIHN0YXJ0X2NyZWF0aW5nCiAgKiBAY2hpbGQ6IGRlbnRyeSByZXR1cm5lZCBieSBzdGFydF9jcmVhdGluZygpIG9yIHZmc19ta2RpcigpCiAgKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFZGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvbmFtZWkuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L25hbWVpLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIGhvdyB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSBoYW5kbGVzIGxvb2t1cHMgYW5kIG9wZW5zLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEZyb20gd2hhdCBJIGNhbiBnYXRoZXIsIHRoZSBwYXRjaCBpbnRlcm5hbGl6ZXMgdGhlIGxvY2tpbmcsIHJldHJ5LCBhbmQgYGdvdF93cml0ZWAgbG9naWMgKndpdGhpbiogYGxvb2t1cF9vcGVuYC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZTsgZXNzZW50aWFsbHkgaXQmIzM5O3MgbW92aW5nIHJlc3BvbnNpYmlsaXR5LiBQcmV2aW91c2x5LCBgb3Blbl9sYXN0X2xvb2t1cHNgIHNlZW1zIHRvIGhhdmUgaGFuZGxlZCB0aGF0LCBidXQgbm93IGl0IHNlZW1zIHRvIGNhbGwgYGxvb2t1cF9vcGVuYCBkaXJlY3RseS4KClRoZSBiaWcgdGFrZWF3YXkgaGVyZSwgaG93ZXZlciwgaXMgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbmV3LCAqZXhwb3J0ZWQqIGZ1bmN0aW9uLCBgdmZzX2xvb2t1cF9vcGVuYC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBleHBvcnRlZCBtZWFucyBpdCYjMzk7cyBhdmFpbGFibGUgZm9yIG1vZHVsZXMgdG8gdXNlLCBhbmQgdGhlIGNvbW1lbnQgYWJvdXQgaXQgYmVpbmcgc3BlY2lmaWNhbGx5IGZvciAmIzM0O25mc2QmIzM0OyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IGltcGxpZXMgc29tZSBjaGFuZ2VzIHRvIGhvdyB0aGUgTmV0d29yayBGaWxlIFN5c3RlbSBEYWVtb24gd2lsbCBpbnRlcmFjdCB3aXRoIHRoZSBWRlMuIFRoaXMga2luZCBvZiBjaGFuZ2UgaXMgb2Z0ZW4gZGVsaWNhdGUsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBuZXcgZnVuY3Rpb24gdXNlZCBhbnl3aGVyZSAqZWxzZSogd2l0aGluIHRoZSBrZXJuZWw/IEkmIzM5O2xsIHJ1biBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSBgdmZzX2xvb2t1cF9vcGVuYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGFjdCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gVGhpcyBpcyBjb3JlIFZGUyBjb2RlLCBhZnRlciBhbGwsIHNvIEkmIzM5O2xsIHdhbnQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zmc19sb29rdXBfb3BlbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uYW1laS5jPTQzOTk9c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9uYW1laS5jLTQ1NjUtLyoqXG5mcy9uYW1laS5jOjQ1NjY6ICogdmZzX2xvb2t1cF9vcGVuIC0gb3BlbiBhbmQgcG9zc2libHkgY3JlYXRlIGEgcmVndWxhciBmaWxlXG5mcy9uYW1laS5jLTQ1NjctICogQHBhcmVudDogZGlyZWN0b3J5IHRvIGNvbnRhaW4gZmlsZVxuLS1cbmZzL25hbWVpLmMtNDU4MS0gKi9cbmZzL25hbWVpLmM6NDU4MjpzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LFxuZnMvbmFtZWkuYy00NTgzLVx0XHRcdCAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKVxuLS1cbmZzL25hbWVpLmMtNDYzMi19XG5mcy9uYW1laS5jOjQ2MzM6RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sIFwmIzM0O25mc2RcJiMzNDspO1xuZnMvbmFtZWkuYy00NjM0LVxuLS1cbmluY2x1ZGUvbGludXgvbmFtZWkuaD05Nz1zdHJ1Y3QgZGVudHJ5ICpzdGFydF9yZW1vdmluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuLS1cbmluY2x1ZGUvbGludXgvbmFtZWkuaC05OS1cbmluY2x1ZGUvbGludXgvbmFtZWkuaDoxMDA6c3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcbmluY2x1ZGUvbGludXgvbmFtZWkuaC0xMDEtXHRcdFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NDIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB2ZnNfbG9va3VwX29wZW5gKioKCkFscmlnaHQsIHNvIGB2ZnNfbG9va3VwX29wZW5gIGlzIGV4cG9ydGVkIHNwZWNpZmljYWxseSBmb3IgYG5mc2RgLiBJbnRlcmVzdGluZy4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtzIGEgZGVkaWNhdGVkIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCBwcm9iYWJseSBpc24mIzM5O3QgZ2VuZXJhbGl6ZWQgYmV5b25kIHRoYXQgdXNlIGNhc2UgeWV0LiBUaGF0IGV4cG9ydCBpcyBhIHN0cm9uZyBoaW50LiBIb3dldmVyLCBJIHNob3VsZCBhbHdheXMgYmUgbWV0aWN1bG91cywgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHN1c3BpY2lvbi4gVGltZSB0byBkb3VibGUtY2hlY2sgd2l0aGluIHRoZSBgZnMvbmZzZC9gIGRpcmVjdG9yeS4gTm8gcG9pbnQgaW4gbWFraW5nIGFzc3VtcHRpb25zIOKAkyBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzICphY3R1YWxseSogZW1wbG95ZWQgdGhlcmUgYW5kIG5vd2hlcmUgZWxzZSBpbiB0aGUgd2lkZXIga2VybmVsIGNvZGViYXNlIGJlZm9yZSBkcmF3aW5nIGFueSBzb2xpZCBjb25jbHVzaW9ucy4gVGhpcyBxdWljayBjaGVjayB3aWxsIGVpdGhlciBjb25maXJtIHRoZSBpbnRlbmRlZCB1c2FnZSBvciByZXZlYWwgYSBwb3RlbnRpYWwgcmVmYWN0b3Jpbmcgb3IgZnV0dXJlIHVzZS1jYXNlIEkgbWlnaHQgaGF2ZSBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZnNfbG9va3VwX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZnNkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgJmFtcDsgQ29yZSBGdW5jdGlvbmFsaXR5IEltcGFjdCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzbiYjMzk7dCAqZGlyZWN0bHkqIGltcGFjdGluZyBhbnl0aGluZyB3aXRoaW4gYGZzL25mc2RgIGF0IHRoZSBtb21lbnQsIHdoaWNoIGluaXRpYWxseSBnYXZlIG1lIGEgYml0IG9mIHBhdXNlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHNldHRpbmcgdGhlIHN0YWdlLCBpbnRyb2R1Y2luZyBhbiBBUEkgbGlrZWx5IGZvciBhIGZ1dHVyZSBwYXRjaCwgd2hpY2ggaXMgY29tbW9uLiBCdXQgdGhlbi4uLiBpdCBtb2RpZmllcyBgbG9va3VwX29wZW5gIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLiBCb3RoIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIFZGUyBmdW5jdGlvbnMsIGhlYXZpbHkgdXNlZCBjb3JlIGNvbXBvbmVudHMuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBrbm93IHRob3NlIGZ1bmN0aW9ucyBpbnRpbWF0ZWx5OyB0aGV5JiMzOTtyZSB0aGUgd29ya2hvcnNlcyB3aXRoaW4gdGhlIGBmcy9gIG5hbWVzcGFjZS4KClNwZWNpZmljYWxseSwgYG9wZW5fbGFzdF9sb29rdXBzYCBpcyByaWdodCBpbiB0aGUgdGhpY2sgb2YgdGhpbmdzIOKAkyBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIGBkb19maWxwX29wZW5gIGFuZCBieSBgcGF0aF9vcGVuYXRgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgbWlub3IgdHdlYWs7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMuIEl0IHRvdWNoZXMgdGhlIHZlcnkgd2F5IGZpbGVzIGFyZSBvcGVuZWQgYW5kIHBhdGhzIGFyZSByZXNvbHZlZC4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9uIHRoaXMuCgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXIuIFRpbWUgdG8gZGl2ZSBpbnRvIGBmcy9uYW1laS5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgY29kZSBpbiBib3RoIGBvcGVuX2xhc3RfbG9va3Vwc2AgYW5kIGBsb29rdXBfb3BlbmAgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGNoYW5nZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3Blbl9sYXN0X2xvb2t1cHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmM9NDM5OT1zdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL25hbWVpLmMtNDU3Mi0gKiBPcGVuIGEgZmlsZSBhZnRlciBsb29rdXAgYW5kL29yIGNyZWF0ZS4gIFRoaXMgcHJvdmlkZXMgc2ltaWxhclxuZnMvbmFtZWkuYzo0NTczOiAqIGZ1bmN0aW9uYWxpdHkgb3Blbl9sYXN0X2xvb2t1cHMoKSBmb3IgaW4ta2VybmVsIHVzZXJzLCBwYXJ0aWN1bGFybHlcbmZzL25hbWVpLmMtNDU3NC0gKiBuZnNkLlxuLS1cbmZzL25hbWVpLmM9NDY0MD1zdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX2Zhc3RfZm9yX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIGludCBvcGVuX2ZsYWcpXG4tLVxuZnMvbmFtZWkuYy00NjcwLVxuZnMvbmFtZWkuYzo0NjcxOnN0YXRpYyBjb25zdCBjaGFyICpvcGVuX2xhc3RfbG9va3VwcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZCxcbmZzL25hbWVpLmMtNDY3Mi1cdFx0ICAgc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcbi0tXG5mcy9uYW1laS5jPTQ5MTM9c3RhdGljIHN0cnVjdCBmaWxlICpwYXRoX29wZW5hdChzdHJ1Y3QgbmFtZWlkYXRhICpuZCxcbi0tXG5mcy9uYW1laS5jLTQ5MjktXHRcdHdoaWxlICghKGVycm9yID0gbGlua19wYXRoX3dhbGsocywgbmQpKSBcdTAwMjZcdTAwMjZcbmZzL25hbWVpLmM6NDkzMDpcdFx0ICAgICAgIChzID0gb3Blbl9sYXN0X2xvb2t1cHMobmQsIGZpbGUsIG9wKSkgIT0gTlVMTClcbmZzL25hbWVpLmMtNDkzMS1cdFx0XHQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk3OAoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiA3NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgUGF0aCBMb29rdXAgYW5kIEZpbGUgT3BlbmluZyoqCgpPa2F5LCBoZXJlJiMzOTtzIG15IGxpbmUgb2YgdGhpbmtpbmcgb24gaG93IHRvIGJlc3QgZnV6eiB0aGlzIHBhdGNoLiBGaXJzdCwgSSBzZWUgdGhhdCBgb3Blbl9sYXN0X2xvb2t1cHNgIGlzIGRlZmluaXRlbHkgcmVhY2hlZCBieSBgcGF0aF9vcGVuYXRgLiBHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucywgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGZvY3VzaW5nIG9uIGFyZSBgbG9va3VwX29wZW5gLCBgdmZzX2xvb2t1cF9vcGVuYCwgYW5kIGBvcGVuX2xhc3RfbG9va3Vwc2AuCgpUaGUgcmVhbCBkaWxlbW1hIGlzIHRoYXQgYm90aCBgb3Blbl9sYXN0X2xvb2t1cHNgIGFuZCBgbG9va3VwX29wZW5gIGFyZSAqaG90LXBhdGgqIGZ1bmN0aW9ucywgY2FsbGVkIG9uIGFsbW9zdCBldmVyeSBzaW5nbGUgZmlsZSBvcGVuLiBUaGF0JiMzOTtzIGEgcHJvYmxlbSwgYmVjYXVzZSBJIG5lZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emluZyBkaXN0cmlidXRpb24gdG93YXJkcyB0aGVzZSBnZW5lcmljIGZ1bmN0aW9ucy4gTGlzdGluZyB0aGVtIHdvdWxkIG1ha2Ugc3l6a2FsbGVyIHByaW9yaXRpemUgdGhlbSB0b28gaGVhdmlseSBhbmQgbWlnaHQgbWlzcyBtb3JlIGludGVyZXN0aW5nIGNvZGUgcGF0aHMuIFRoZSBwcm9tcHQgc2F5cyBJIHNob3VsZCBhdm9pZCB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnMuCgpJbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBub3QgbGlzdGluZyBhbnl0aGluZywgd2hpY2ggd291bGQgbGV0IHN5emthbGxlciBmdXp6IGFzIGl0IG5vcm1hbGx5IGRvZXMuICBCdXQgdGhlIHBhdGNoIGNsZWFybHkgY2VudGVycyBvbiBjaGFuZ2VzIHRvIGBsb29rdXBfb3BlbmAsIHdoaWNoIGFsc28gc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSB0YXJnZXQuIEkgY291bGQgbGlzdCBgdmZzX2xvb2t1cF9vcGVuYCwgc2luY2UgaXQmIzM5O3MgYSBuZXcgZnVuY3Rpb24gYWRkZWQgYnkgdGhlIHBhdGNoIGFuZCB3b24mIzM5O3QgYmUgaGl0IG90aGVyd2lzZS4gQnV0IGl0JiMzOTtzIGN1cnJlbnRseSB1bnVzZWQsIHNvIHN5emthbGxlciB3b24mIzM5O3QgZXZlbiB0b3VjaCBpdC4KCkkmIzM5O20gd3Jlc3RsaW5nIHdpdGggd2hldGhlciB0byBsaXN0IGBsb29rdXBfb3BlbmAgYXQgYWxsLiBMaXN0aW5nIGEgaG90IGZ1bmN0aW9uIGNhbiBza2V3IHRoaW5ncy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGxvb2t1cF9vcGVuYCBhbmQgYG9wZW5fbGFzdF9sb29rdXBzYCBhbmQgYWRkcyBgdmZzX2xvb2t1cF9vcGVuYC4gU2luY2UgdGhlIGBsb29rdXBfb3BlbmAgaXMgbW9kaWZpZWQgaXQmIzM5O3Mgc3RpbGwgdGhlIG1haW4gdGFyZ2V0LiBJIGNvdWxkIGp1c3QgbGlzdCBgdmZzX2xvb2t1cF9vcGVuYCBidXQgaXQgaXMgdW51c2VkLgoKVGhlIHBhdGNoIG1lbnRpb25zIHRoZSBmdW5jdGlvbnMgYGxvb2t1cF9vcGVuYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXAsIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLCBjYWxsZWQgZm9yIHRoZSBsYXN0IGNvbXBvbmVudCBvZiBhIHBhdGguCgpJJiMzOTt2ZSBnb3QgdG8gbWFrZSBhIGNob2ljZS4gSSBjb3VsZCBqdXN0IGxpc3QgYHZmc19sb29rdXBfb3BlbmAsIHdoaWNoIHdvbiYjMzk7dCBkbyBhbnl0aGluZyBiZWNhdXNlIGl0JiMzOTtzIHVudXNlZCwgb3IgSSBjb3VsZCBsaXN0IG5vdGhpbmcgYW5kIGxldCB0aGUgZnV6emVyIHdvcmsgYXMgaXQgZG9lcyBub3JtYWxseS4gQnV0IGBsb29rdXBfb3BlbmAgaXMgdGhlIGNvcmUgb2YgdGhpcyBwYXRjaCwgZXZlbiBpZiBpdCYjMzk7cyBob3QuIFRoZSBwcm9tcHQgc2F5cyB0byAmIzM0O2V4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuIFNob3VsZCBhdm9pZCBob3QtcGF0aCBmdW5jdGlvbnMmIzM0Oy4KSW4gdGhhdCBjYXNlLCBJIHdpbGwganVzdCBsaXN0IGB2ZnNfbG9va3VwX29wZW5gIGFzIG15IGZvY3VzIHN5bWJvbCwgZXZlbiBpZiBpdCYjMzk7cyBub3QgaGl0LCBqdXN0IHRvIGJlIGNvbnNlcnZhdGl2ZS4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgdGhlIGBsb29rdXBfb3BlbmAgZnVuY3Rpb24gaXMgc2lnbmlmaWNhbnRseSBjaGFuZ2VkLCBub3cgaGFuZGxpbmcgYGlub2RlX2xvY2tgLCBgbW50X3dhbnRfd3JpdGVgLCBgdHJ5X2JyZWFrX2RlbGVnYCwgZXRjLiBJdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgcGF0Y2gsIGV2ZW4gaWYgaXQmIzM5O3MgYSBsaXR0bGUgaG90LCBhbmQgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gZmlsZSBvcGVuaW5nLCBhbmQgbm90IGFzIGhvdCBhcyBga21hbGxvY2Agb3IgYHNwaW5fbG9ja2AuCgpJJiMzOTtsbCBpbmNsdWRlIGBsb29rdXBfb3BlbmAgaW4gdGhlIGxpc3QsIGFsb25nIHdpdGggYHZmc19sb29rdXBfb3BlbmAsIGFuZCB3aGlsZSBpdCBpcyBzb21ld2hhdCBvZiBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBJJiMzOTttIGNvbWZvcnRhYmxlIGluY2x1ZGluZyBpdC4gSXQgbWFrZXMgc2Vuc2UsIGFzIGEgaGlnaCB2YWx1ZSB0YXJnZXQuCgpUaGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG5lZWRlZCwgYmVjYXVzZSB0aGlzIGlzIGNvcmUgVkZTIGNvZGUuIEl0JiMzOTtzIGluIGBmcy9uYW1laS5jYC4KCioqTXkgRmluYWwgUmVjb21tZW5kYXRpb246KioKCkkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuCgpNeSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlOiAgYGxvb2t1cF9vcGVuYCwgYHZmc19sb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2AuCgpgRW5hYmxlQ29uZmlnc2AgcmVtYWlucyBhbiBlbXB0eSBsaXN0IGBbXWAuCgpNeSByZWFzb25pbmcgaXMgdGhpczogVGhpcyBwYXRjaCByZWZhY3RvcnMgY29yZSBWRlMgcGF0aCBsb29rdXAgYW5kIGZpbGUgb3BlbmluZyBsb2dpYy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyB0aGUgY2VudHJhbCBmdW5jdGlvbnMgYGxvb2t1cF9vcGVuYCBhbmQgYG9wZW5fbGFzdF9sb29rdXBzYCwgYW5kIGludHJvZHVjZXMgYSBuZXcgZXhwb3J0ZWQgZnVuY3Rpb24gYHZmc19sb29rdXBfb3BlbmAuIFRoaXMgZnVuZGFtZW50YWxseSBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzICphbGwqIGZpbGVzeXN0ZW1zLiBHaXZlbiB0aGVzZSBjaGFuZ2VzLCB0aGlzIHJlZmFjdG9yaW5nIGlzIGEgaGlnaC12YWx1ZSB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDt2ZnNfbG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7b3Blbl9sYXN0X2xvb2t1cHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xvb2t1cF9vcGVuJiMzNDssCiAgICAmIzM0O3Zmc19sb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDtvcGVuX2xhc3RfbG9va3VwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgY29yZSBWRlMgcGF0aCBsb29rdXAgYW5kIGZpbGUgb3BlbmluZyBsb2dpYyAoYGxvb2t1cF9vcGVuYCwgYG9wZW5fbGFzdF9sb29rdXBzYCkgYW5kIGludHJvZHVjZXMgYSBuZXcgZXhwb3J0ZWQgZnVuY3Rpb24gYHZmc19sb29rdXBfb3BlbmAuIFRoaXMgYWZmZWN0cyBmaWxlIGNyZWF0aW9uIGFuZCBvcGVuaW5nIGFjcm9zcyBhbGwgZmlsZXN5c3RlbXMgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMDoxODoyNi4wMTY5NjY3ODNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjczNTcyMzI1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29rdXBfb3BlblwiLFxuICAgIFwidmZzX2xvb2t1cF9vcGVuXCIsXG4gICAgXCJvcGVuX2xhc3RfbG9va3Vwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBjb3JlIFZGUyBwYXRoIGxvb2t1cCBhbmQgZmlsZSBvcGVuaW5nIGxvZ2ljIChgbG9va3VwX29wZW5gLCBgb3Blbl9sYXN0X2xvb2t1cHNgKSBhbmQgaW50cm9kdWNlcyBhIG5ldyBleHBvcnRlZCBmdW5jdGlvbiBgdmZzX2xvb2t1cF9vcGVuYC4gVGhpcyBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzIGFsbCBmaWxlc3lzdGVtcyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6MjYuMDE2OTcyOTEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI0OTExNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNzFiNTE4ZmU2NTU5NTUxNGI3ODdmMDlmMWNkMjZiNWE1NzUyNDJkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDA6MTg6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbmFtZWkuYyBiL2ZzL25hbWVpLmNcXG5pbmRleCA3ZWFkM2RiNTViZTIzOS4uNjBkZGRmN2I5N2FhMjIgMTAwNjQ0XFxuLS0tIGEvZnMvbmFtZWkuY1xcbisrKyBiL2ZzL25hbWVpLmNcXG5AQCAtNDM5NywxOSArNDM5Nyw0MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeVxcbiAgKiBBbiBlcnJvciBjb2RlIGlzIHJldHVybmVkIG9uIGZhaWx1cmUuXFxuICAqL1xcbiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbi1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcCxcXG4tXFx0XFx0XFx0XFx0ICBib29sIGdvdF93cml0ZSwgc3RydWN0IGRlbGVnYXRlZF9pbm9kZSAqZGVsZWdhdGVkX2lub2RlKVxcbitcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcXG4ge1xcbitcXHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcXG4gXFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXA7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmRpciA9IG5kLVxcdTAwM2VwYXRoLmRlbnRyeTtcXG4gXFx0c3RydWN0IGlub2RlICpkaXJfaW5vZGUgPSBkaXItXFx1MDAzZWRfaW5vZGU7XFxuLVxcdGludCBvcGVuX2ZsYWcgPSBvcC1cXHUwMDNlb3Blbl9mbGFnO1xcbitcXHRpbnQgb3Blbl9mbGFnO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XFxuLVxcdGludCBlcnJvciwgY3JlYXRlX2Vycm9yID0gMDtcXG4tXFx0dW1vZGVfdCBtb2RlID0gb3AtXFx1MDAzZW1vZGU7XFxuK1xcdGludCBlcnJvciwgY3JlYXRlX2Vycm9yO1xcbitcXHR1bW9kZV90IG1vZGU7XFxuK1xcdGJvb2wgZ290X3dyaXRlO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KElTX0RFQURESVIoZGlyX2lub2RlKSkpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xcbityZXRyeTpcXG4rXFx0b3Blbl9mbGFnID0gb3AtXFx1MDAzZW9wZW5fZmxhZztcXG4rXFx0Z290X3dyaXRlID0gZmFsc2U7XFxuK1xcdG1vZGUgPSBvcC1cXHUwMDNlbW9kZTtcXG4rXFx0Y3JlYXRlX2Vycm9yID0gMDtcXG4rXFxuK1xcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHtcXG4rXFx0XFx0Z290X3dyaXRlID0gIW1udF93YW50X3dyaXRlKG5kLVxcdTAwM2VwYXRoLm1udCk7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcXG4rXFx0XFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcXG4rXFx0XFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LlxcbitcXHRcXHQgKi9cXG4rXFx0fVxcbitcXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG4rXFx0XFx0aW5vZGVfbG9jayhkaXJfaW5vZGUpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGlub2RlX2xvY2tfc2hhcmVkKGRpcl9pbm9kZSk7XFxuK1xcbitcXHRpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSkge1xcbitcXHRcXHRkZW50cnkgPSBFUlJfUFRSKC1FTk9FTlQpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXG4gXFx0ZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjY9IH5GTU9ERV9DUkVBVEVEO1xcbiBcXHRkZW50cnkgPSBkX2xvb2t1cChkaXIsIFxcdTAwMjZuZC1cXHUwMDNlbGFzdCk7XFxuQEAgLTQ0MTcsNyArNDQzOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdGlmICghZGVudHJ5KSB7XFxuIFxcdFxcdFxcdGRlbnRyeSA9IGRfYWxsb2NfcGFyYWxsZWwoZGlyLCBcXHUwMDI2bmQtXFx1MDAzZWxhc3QpO1xcbiBcXHRcXHRcXHRpZiAoSVNfRVJSKGRlbnRyeSkpXFxuLVxcdFxcdFxcdFxcdHJldHVybiBkZW50cnk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKVxcbiBcXHRcXHRcXHRicmVhaztcXG5AQCAtNDQzMyw3ICs0NDU1LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0fVxcbiBcXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2lub2RlKSB7XFxuIFxcdFxcdC8qIENhY2hlZCBwb3NpdGl2ZSBkZW50cnk6IHdpbGwgb3BlbiBpbiBmX29wLVxcdTAwM2VvcGVuICovXFxuLVxcdFxcdHJldHVybiBkZW50cnk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG5AQCAtNDQ1NCw3ICs0NDc2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0aWYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpIHtcXG4gXFx0XFx0aWYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fRVhDTClcXG4gXFx0XFx0XFx0b3Blbl9mbGFnIFxcdTAwMjY9IH5PX1RSVU5DO1xcbi1cXHRcXHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyLVxcdTAwM2VkX2lub2RlLCBtb2RlLCBtb2RlLCBtb2RlKTtcXG4rXFx0XFx0bW9kZSA9IHZmc19wcmVwYXJlX21vZGUoaWRtYXAsIGRpcl9pbm9kZSwgbW9kZSwgbW9kZSwgbW9kZSk7XFxuIFxcdFxcdGlmIChsaWtlbHkoZ290X3dyaXRlKSlcXG4gXFx0XFx0XFx0Y3JlYXRlX2Vycm9yID0gbWF5X29fY3JlYXRlKGlkbWFwLCBcXHUwMDI2bmQtXFx1MDAzZXBhdGgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBkZW50cnksIG1vZGUpO1xcbkBAIC00NDY5LDcgKzQ0OTEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRkZW50cnkgPSBhdG9taWNfb3BlbihcXHUwMDI2bmQtXFx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXFx1MDAyNlxcdTAwMjYgZGVudHJ5ID09IEVSUl9QVFIoLUVOT0VOVCkpXFxuIFxcdFxcdFxcdGRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTtcXG4tXFx0XFx0cmV0dXJuIGRlbnRyeTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKSB7XFxuQEAgLTQ0ODksNyArNDUxMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdC8qIE5lZ2F0aXZlIGRlbnRyeSwganVzdCBjcmVhdGUgdGhlIGZpbGUgKi9cXG4gXFx0aWYgKCFkZW50cnktXFx1MDAzZWRfaW5vZGUgXFx1MDAyNlxcdTAwMjYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpKSB7XFxuIFxcdFxcdC8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqL1xcbi1cXHRcXHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7XFxuK1xcdFxcdGVycm9yID0gdHJ5X2JyZWFrX2RlbGVnKGRpcl9pbm9kZSwgTEVBU0VfQlJFQUtfRElSX0NSRUFURSwgXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XFxuIFxcdFxcdGlmIChlcnJvcilcXG4gXFx0XFx0XFx0Z290byBvdXRfZHB1dDtcXG4gXFxuQEAgLTQ1MDgsMTMgKzQ1MzAsMTA4IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdGVycm9yID0gY3JlYXRlX2Vycm9yO1xcbiBcXHRcXHRnb3RvIG91dF9kcHV0O1xcbiBcXHR9XFxuK291dDpcXG4rXFx0aWYgKCFJU19FUlIoZGVudHJ5KSkge1xcbitcXHRcXHRpZiAoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfQ1JFQVRFRClcXG4rXFx0XFx0XFx0ZnNub3RpZnlfY3JlYXRlKGRpcl9pbm9kZSwgZGVudHJ5KTtcXG4rXFx0XFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX09QRU5FRClcXG4rXFx0XFx0XFx0ZnNub3RpZnlfb3BlbihmaWxlKTtcXG4rXFx0fVxcbitcXHRpZiAoKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpIHx8IGNyZWF0ZV9lcnJvcilcXG4rXFx0XFx0aW5vZGVfdW5sb2NrKGRpcl9pbm9kZSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0aW5vZGVfdW5sb2NrX3NoYXJlZChkaXJfaW5vZGUpO1xcbitcXG4rXFx0aWYgKGdvdF93cml0ZSlcXG4rXFx0XFx0bW50X2Ryb3Bfd3JpdGUobmQtXFx1MDAzZXBhdGgubW50KTtcXG4rXFxuK1xcdGlmIChpc19kZWxlZ2F0ZWQoXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSkpIHtcXG4rXFx0XFx0LyogTXVzdCBoYXZlIGNvbWUgdGhyb3VnaCBvdXRfZHB1dDogZGVudHJ5IGlzIGFuIEVSUl9QVFIoKSAqL1xcbitcXHRcXHRlcnJvciA9IGJyZWFrX2RlbGVnX3dhaXQoXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XFxuK1xcbitcXHRcXHRpZiAoIWVycm9yKVxcbitcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbitcXHRcXHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIGRlbnRyeTtcXG4gXFxuIG91dF9kcHV0OlxcbiBcXHRkcHV0KGRlbnRyeSk7XFxuLVxcdHJldHVybiBFUlJfUFRSKGVycm9yKTtcXG4rXFx0ZGVudHJ5ID0gRVJSX1BUUihlcnJvcik7XFxuK1xcdGdvdG8gb3V0O1xcbiB9XFxuIFxcbisvKipcXG4rICogdmZzX2xvb2t1cF9vcGVuIC0gb3BlbiBhbmQgcG9zc2libHkgY3JlYXRlIGEgcmVndWxhciBmaWxlXFxuKyAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGVcXG4rICogQGxhc3Q6IGZpbmFsIGNvbXBvbmVudCBvZiBmaWxlIG5hbWVcXG4rICogQG9wZW5fZmxhZzogT19mbGFnc1xcbisgKiBAbW9kZTogaW5pdGlhbCBwZXJtaXNzaW9ucyBmb3IgZmlsZVxcbisgKlxcbisgKiBPcGVuIGEgZmlsZSBhZnRlciBsb29rdXAgYW5kL29yIGNyZWF0ZS4gIFRoaXMgcHJvdmlkZXMgc2ltaWxhclxcbisgKiBmdW5jdGlvbmFsaXR5IG9wZW5fbGFzdF9sb29rdXBzKCkgZm9yIGluLWtlcm5lbCB1c2VycywgcGFydGljdWxhcmx5XFxuKyAqIG5mc2QuXFxuKyAqIEl0IHVzZXMgLVxcdTAwM2VhdG9taWNfb3BlbiBvciAtXFx1MDAzZWxvb2t1cCAvIC1cXHUwMDNlY3JlYXRlIC8gLVxcdTAwM2VvcGVuIGFzIGFwcHJvcHJpYXRlLlxcbisgKlxcbisgKiBSZXR1cm5zOiB0aGUgb3BlbmVkIHN0cnVjdCBmaWxlLCBvciBhbiBlcnJvci5cXG4rICogICAgIENhbGxlciBzaG91bGQgY2hlY2sgdGhhdCB0aGUgZmlsZSBvcGVuZWQgaXMgcmVndWxhcixcXG4rICogICAgIGlmIHNvbWV0aGluZyBlbHNlIHdhcyBmb3VuZCwgYW4gT19QQVRIIGZpbGUgaXMgcHJvdmlkZWQuXFxuKyAqICAgICBDYWxsZXIgc2hvdWxkIHZhbGlkYXRlIEZNT0RFX0NSRUFURUQgaWYgT19FWENMIHdhcyByZXF1ZXN0ZWQuXFxuKyAqL1xcbitzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LFxcbitcXHRcXHRcXHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSlcXG4re1xcbitcXHRzdHJ1Y3QgZmlsZSAqZmlsZSBfX2ZyZWUoZnB1dCkgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgbmFtZWlkYXRhIG5kID0ge307XFxuK1xcdHN0cnVjdCBvcGVuX2ZsYWdzIG9wID0ge307XFxuK1xcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4rXFx0aW50IGVycm9yID0gMDtcXG4rXFxuK1xcdFdBUk5fT05DRShtb2RlIFxcdTAwMjYgIVNfSUFMTFVHTywgXFxcIm1vZGUgbXVzdCBvbmx5IGhhdmUgcGVybWlzc2lvbiBiaXRzXFxcIik7XFxuK1xcdGVycm9yID0gbG9va3VwX25vcGVybV9jb21tb24obGFzdCwgcGFyZW50LVxcdTAwM2VkZW50cnkpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKGVycm9yKTtcXG4rXFxuK1xcdGZpbGUgPSBhbGxvY19lbXB0eV9maWxlKG9wZW5fZmxhZywgY3VycmVudF9jcmVkKCkpO1xcbitcXHRpZiAoSVNfRVJSKGZpbGUpKVxcbitcXHRcXHRyZXR1cm4gZmlsZTtcXG4rXFxuK1xcdG5kLnBhdGggPSAqcGFyZW50O1xcbitcXHRuZC5sYXN0ID0gKmxhc3Q7XFxuK1xcdG5kLmZsYWdzID0gTE9PS1VQX09QRU47XFxuK1xcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiBPX0NSRUFUKSB7XFxuK1xcdFxcdG5kLmZsYWdzIHw9IExPT0tVUF9DUkVBVEU7XFxuK1xcdFxcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiBPX0VYQ0wpXFxuK1xcdFxcdFxcdG5kLmZsYWdzIHw9IExPT0tVUF9FWENMO1xcbitcXHR9XFxuK1xcdG9wLm9wZW5fZmxhZyA9IG9wZW5fZmxhZztcXG4rXFx0b3AubW9kZSA9IFNfSUZSRUcgfCBtb2RlO1xcbitcXHRkZW50cnkgPSBsb29rdXBfb3BlbihcXHUwMDI2bmQsIGZpbGUsIFxcdTAwMjZvcCk7XFxuK1xcbitcXHRpZiAoSVNfRVJSKGRlbnRyeSkpXFxuK1xcdFxcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xcbitcXG4rXFx0aWYgKGRfcmVhbGx5X2lzX25lZ2F0aXZlKGRlbnRyeSkpIHtcXG4rXFx0XFx0ZXJyb3IgPSAtRU5PRU5UO1xcbitcXHR9IGVsc2UgaWYgKCEoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfT1BFTkVEKSkge1xcbitcXHRcXHRuZC5wYXRoLmRlbnRyeSA9IGRlbnRyeTtcXG4rXFx0XFx0aWYgKCFkX2lzX3JlZyhkZW50cnkpKVxcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBhbGxvdyBjYWxsZXIgdG8gc2VlIGRlbnRyeSBhbmQgY2hvb3NlXFxuK1xcdFxcdFxcdCAqIGNvcnJlY3QgZXJyb3IgY29kZVxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0ZmlsZS1cXHUwMDNlZl9mbGFncyB8PSBPX1BBVEg7XFxuK1xcdFxcdGVycm9yID0gdmZzX29wZW4oXFx1MDAyNm5kLnBhdGgsIGZpbGUpO1xcbitcXHR9XFxuK1xcdGRwdXQoZGVudHJ5KTtcXG4rXFxuK1xcdGlmIChlcnJvcilcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyb3IpO1xcbitcXHRyZXR1cm4gbm9fZnJlZV9wdHIoZmlsZSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sIFxcXCJuZnNkXFxcIik7XFxuK1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgdHJhaWxpbmdfc2xhc2hlcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZClcXG4ge1xcbiBcXHRyZXR1cm4gKGJvb2wpbmQtXFx1MDAzZWxhc3QubmFtZVtuZC1cXHUwMDNlbGFzdC5sZW5dO1xcbkBAIC00NTU0LDEwICs0NjcxLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9mYXN0X2Zvcl9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBpbnQgb3Blbl9mbGFnKVxcbiBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXFxuIFxcdFxcdCAgIHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3ApXFxuIHtcXG4tXFx0c3RydWN0IGRlbGVnYXRlZF9pbm9kZSBkZWxlZ2F0ZWRfaW5vZGUgPSB7IH07XFxuLVxcdHN0cnVjdCBkZW50cnkgKmRpciA9IG5kLVxcdTAwM2VwYXRoLmRlbnRyeTtcXG4gXFx0aW50IG9wZW5fZmxhZyA9IG9wLVxcdTAwM2VvcGVuX2ZsYWc7XFxuLVxcdGJvb2wgZ290X3dyaXRlID0gZmFsc2U7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4gXFx0Y29uc3QgY2hhciAqcmVzO1xcbiBcXG5AQCAtNDU4Niw0NCArNDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXFxuIFxcdFxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FQ0hJTEQpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tcmV0cnk6XFxuLVxcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHtcXG4tXFx0XFx0Z290X3dyaXRlID0gIW1udF93YW50X3dyaXRlKG5kLVxcdTAwM2VwYXRoLm1udCk7XFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcXG4tXFx0XFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcXG4tXFx0XFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5Llxcbi1cXHRcXHQgKi9cXG4tXFx0fVxcbi1cXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG4tXFx0XFx0aW5vZGVfbG9jayhkaXItXFx1MDAzZWRfaW5vZGUpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdGlub2RlX2xvY2tfc2hhcmVkKGRpci1cXHUwMDNlZF9pbm9kZSk7XFxuLVxcdGRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCwgZ290X3dyaXRlLCBcXHUwMDI2ZGVsZWdhdGVkX2lub2RlKTtcXG4tXFx0aWYgKCFJU19FUlIoZGVudHJ5KSkge1xcbi1cXHRcXHRpZiAoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfQ1JFQVRFRClcXG4tXFx0XFx0XFx0ZnNub3RpZnlfY3JlYXRlKGRpci1cXHUwMDNlZF9pbm9kZSwgZGVudHJ5KTtcXG4tXFx0XFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX09QRU5FRClcXG4tXFx0XFx0XFx0ZnNub3RpZnlfb3BlbihmaWxlKTtcXG4tXFx0fVxcbi1cXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG4tXFx0XFx0aW5vZGVfdW5sb2NrKGRpci1cXHUwMDNlZF9pbm9kZSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0aW5vZGVfdW5sb2NrX3NoYXJlZChkaXItXFx1MDAzZWRfaW5vZGUpO1xcbi1cXG4tXFx0aWYgKGdvdF93cml0ZSlcXG4tXFx0XFx0bW50X2Ryb3Bfd3JpdGUobmQtXFx1MDAzZXBhdGgubW50KTtcXG4gXFxuLVxcdGlmIChJU19FUlIoZGVudHJ5KSkge1xcbi1cXHRcXHRpZiAoaXNfZGVsZWdhdGVkKFxcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpKSB7XFxuLVxcdFxcdFxcdGludCBlcnJvciA9IGJyZWFrX2RlbGVnX3dhaXQoXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XFxuLVxcbi1cXHRcXHRcXHRpZiAoIWVycm9yKVxcbi1cXHRcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbi1cXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XFxuLVxcdFxcdH1cXG4rXFx0ZGVudHJ5ID0gbG9va3VwX29wZW4obmQsIGZpbGUsIG9wKTtcXG4rXFx0aWYgKElTX0VSUihkZW50cnkpKVxcbiBcXHRcXHRyZXR1cm4gRVJSX0NBU1QoZGVudHJ5KTtcXG4tXFx0fVxcbiBcXG4gXFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IChGTU9ERV9PUEVORUQgfCBGTU9ERV9DUkVBVEVEKSkge1xcbiBcXHRcXHRkcHV0KG5kLVxcdTAwM2VwYXRoLmRlbnRyeSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmFtZWkuaCBiL2luY2x1ZGUvbGludXgvbmFtZWkuaFxcbmluZGV4IGViZTZlMjlmN2U5M2JhLi44NmQ2NTdiMjRmYzZhMSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L25hbWVpLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25hbWVpLmhcXG5AQCAtOTcsNiArOTcsOSBAQCBzdHJ1Y3QgZGVudHJ5ICpzdGFydF9jcmVhdGluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxcbiBzdHJ1Y3QgZGVudHJ5ICpzdGFydF9yZW1vdmluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkZW50cnkgKmNoaWxkKTtcXG4gXFxuK3N0cnVjdCBmaWxlICp2ZnNfbG9va3VwX29wZW4oc3RydWN0IHBhdGggKnBhcmVudCwgc3RydWN0IHFzdHIgKmxhc3QsXFxuK1xcdFxcdFxcdCAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKTtcXG4rXFxuIC8qIGVuZF9jcmVhdGluZyAtIGZpbmlzaCBhY3Rpb24gc3RhcnRlZCB3aXRoIHN0YXJ0X2NyZWF0aW5nXFxuICAqIEBjaGlsZDogZGVudHJ5IHJldHVybmVkIGJ5IHN0YXJ0X2NyZWF0aW5nKCkgb3IgdmZzX21rZGlyKClcXG4gICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6MjYuMzIwMTMxMzAyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQzMjU1Mjc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29rdXBfb3BlblwiLFxuICAgIFwidmZzX2xvb2t1cF9vcGVuXCIsXG4gICAgXCJvcGVuX2xhc3RfbG9va3Vwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBjb3JlIFZGUyBwYXRoIGxvb2t1cCBhbmQgZmlsZSBvcGVuaW5nIGxvZ2ljIChgbG9va3VwX29wZW5gLCBgb3Blbl9sYXN0X2xvb2t1cHNgKSBhbmQgaW50cm9kdWNlcyBhIG5ldyBleHBvcnRlZCBmdW5jdGlvbiBgdmZzX2xvb2t1cF9vcGVuYC4gVGhpcyBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzIGFsbCBmaWxlc3lzdGVtcyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNzFiNTE4ZmU2NTU5NTUxNGI3ODdmMDlmMWNkMjZiNWE1NzUyNDJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwMDoxODoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jXG5pbmRleCA3ZWFkM2RiNTViZTIzOS4uNjBkZGRmN2I5N2FhMjIgMTAwNjQ0XG4tLS0gYS9mcy9uYW1laS5jXG4rKysgYi9mcy9uYW1laS5jXG5AQCAtNDM5NywxOSArNDM5Nyw0MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeVxuICAqIEFuIGVycm9yIGNvZGUgaXMgcmV0dXJuZWQgb24gZmFpbHVyZS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3AsXG4tXHRcdFx0XHQgIGJvb2wgZ290X3dyaXRlLCBzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlICpkZWxlZ2F0ZWRfaW5vZGUpXG4rXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcbiB7XG4rXHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcbiBcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwO1xuIFx0c3RydWN0IGRlbnRyeSAqZGlyID0gbmQtXHUwMDNlcGF0aC5kZW50cnk7XG4gXHRzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IGRpci1cdTAwM2VkX2lub2RlO1xuLVx0aW50IG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbitcdGludCBvcGVuX2ZsYWc7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XG4tXHRpbnQgZXJyb3IsIGNyZWF0ZV9lcnJvciA9IDA7XG4tXHR1bW9kZV90IG1vZGUgPSBvcC1cdTAwM2Vtb2RlO1xuK1x0aW50IGVycm9yLCBjcmVhdGVfZXJyb3I7XG4rXHR1bW9kZV90IG1vZGU7XG4rXHRib29sIGdvdF93cml0ZTtcbiBcbi1cdGlmICh1bmxpa2VseShJU19ERUFERElSKGRpcl9pbm9kZSkpKVxuLVx0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbityZXRyeTpcbitcdG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbitcdGdvdF93cml0ZSA9IGZhbHNlO1xuK1x0bW9kZSA9IG9wLVx1MDAzZW1vZGU7XG4rXHRjcmVhdGVfZXJyb3IgPSAwO1xuK1xuK1x0aWYgKG9wZW5fZmxhZyBcdTAwMjYgKE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4rXHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4rXHRcdC8qXG4rXHRcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcbitcdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcbitcdFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LlxuK1x0XHQgKi9cbitcdH1cbitcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG4rXHRcdGlub2RlX2xvY2soZGlyX2lub2RlKTtcbitcdGVsc2VcbitcdFx0aW5vZGVfbG9ja19zaGFyZWQoZGlyX2lub2RlKTtcbitcbitcdGlmICh1bmxpa2VseShJU19ERUFERElSKGRpcl9pbm9kZSkpKSB7XG4rXHRcdGRlbnRyeSA9IEVSUl9QVFIoLUVOT0VOVCk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0ZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2PSB+Rk1PREVfQ1JFQVRFRDtcbiBcdGRlbnRyeSA9IGRfbG9va3VwKGRpciwgXHUwMDI2bmQtXHUwMDNlbGFzdCk7XG5AQCAtNDQxNyw3ICs0NDM5LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdFx0aWYgKCFkZW50cnkpIHtcbiBcdFx0XHRkZW50cnkgPSBkX2FsbG9jX3BhcmFsbGVsKGRpciwgXHUwMDI2bmQtXHUwMDNlbGFzdCk7XG4gXHRcdFx0aWYgKElTX0VSUihkZW50cnkpKVxuLVx0XHRcdFx0cmV0dXJuIGRlbnRyeTtcbitcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXHRcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTQ0MzMsNyArNDQ1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHR9XG4gXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbiBcdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXHUwMDNlb3BlbiAqL1xuLVx0XHRyZXR1cm4gZGVudHJ5O1xuK1x0XHRnb3RvIG91dDtcbiBcdH1cbiBcbiBcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG5AQCAtNDQ1NCw3ICs0NDc2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHtcbiBcdFx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19FWENMKVxuIFx0XHRcdG9wZW5fZmxhZyBcdTAwMjY9IH5PX1RSVU5DO1xuLVx0XHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyLVx1MDAzZWRfaW5vZGUsIG1vZGUsIG1vZGUsIG1vZGUpO1xuK1x0XHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyX2lub2RlLCBtb2RlLCBtb2RlLCBtb2RlKTtcbiBcdFx0aWYgKGxpa2VseShnb3Rfd3JpdGUpKVxuIFx0XHRcdGNyZWF0ZV9lcnJvciA9IG1heV9vX2NyZWF0ZShpZG1hcCwgXHUwMDI2bmQtXHUwMDNlcGF0aCxcbiBcdFx0XHRcdFx0XHQgICAgZGVudHJ5LCBtb2RlKTtcbkBAIC00NDY5LDcgKzQ0OTEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRkZW50cnkgPSBhdG9taWNfb3BlbihcdTAwMjZuZC1cdTAwM2VwYXRoLCBkZW50cnksIGZpbGUsIG9wZW5fZmxhZywgbW9kZSk7XG4gXHRcdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFx1MDAyNlx1MDAyNiBkZW50cnkgPT0gRVJSX1BUUigtRU5PRU5UKSlcbiBcdFx0XHRkZW50cnkgPSBFUlJfUFRSKGNyZWF0ZV9lcnJvcik7XG4tXHRcdHJldHVybiBkZW50cnk7XG4rXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDg5LDcgKzQ1MTEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0LyogTmVnYXRpdmUgZGVudHJ5LCBqdXN0IGNyZWF0ZSB0aGUgZmlsZSAqL1xuIFx0aWYgKCFkZW50cnktXHUwMDNlZF9pbm9kZSBcdTAwMjZcdTAwMjYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkpIHtcbiBcdFx0LyogYnV0IGJyZWFrIHRoZSBkaXJlY3RvcnkgbGVhc2UgZmlyc3QhICovXG4tXHRcdGVycm9yID0gdHJ5X2JyZWFrX2RlbGVnKGRpcl9pbm9kZSwgTEVBU0VfQlJFQUtfRElSX0NSRUFURSwgZGVsZWdhdGVkX2lub2RlKTtcbitcdFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpO1xuIFx0XHRpZiAoZXJyb3IpXG4gXHRcdFx0Z290byBvdXRfZHB1dDtcbiBcbkBAIC00NTA4LDEzICs0NTMwLDEwOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbiBcdFx0Z290byBvdXRfZHB1dDtcbiBcdH1cbitvdXQ6XG4rXHRpZiAoIUlTX0VSUihkZW50cnkpKSB7XG4rXHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbitcdFx0XHRmc25vdGlmeV9jcmVhdGUoZGlyX2lub2RlLCBkZW50cnkpO1xuK1x0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX09QRU5FRClcbitcdFx0XHRmc25vdGlmeV9vcGVuKGZpbGUpO1xuK1x0fVxuK1x0aWYgKChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHx8IGNyZWF0ZV9lcnJvcilcbitcdFx0aW5vZGVfdW5sb2NrKGRpcl9pbm9kZSk7XG4rXHRlbHNlXG4rXHRcdGlub2RlX3VubG9ja19zaGFyZWQoZGlyX2lub2RlKTtcbitcbitcdGlmIChnb3Rfd3JpdGUpXG4rXHRcdG1udF9kcm9wX3dyaXRlKG5kLVx1MDAzZXBhdGgubW50KTtcbitcbitcdGlmIChpc19kZWxlZ2F0ZWQoXHUwMDI2ZGVsZWdhdGVkX2lub2RlKSkge1xuK1x0XHQvKiBNdXN0IGhhdmUgY29tZSB0aHJvdWdoIG91dF9kcHV0OiBkZW50cnkgaXMgYW4gRVJSX1BUUigpICovXG4rXHRcdGVycm9yID0gYnJlYWtfZGVsZWdfd2FpdChcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpO1xuK1xuK1x0XHRpZiAoIWVycm9yKVxuK1x0XHRcdGdvdG8gcmV0cnk7XG4rXHRcdGRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIGRlbnRyeTtcbiBcbiBvdXRfZHB1dDpcbiBcdGRwdXQoZGVudHJ5KTtcbi1cdHJldHVybiBFUlJfUFRSKGVycm9yKTtcbitcdGRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpO1xuK1x0Z290byBvdXQ7XG4gfVxuIFxuKy8qKlxuKyAqIHZmc19sb29rdXBfb3BlbiAtIG9wZW4gYW5kIHBvc3NpYmx5IGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZVxuKyAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGVcbisgKiBAbGFzdDogZmluYWwgY29tcG9uZW50IG9mIGZpbGUgbmFtZVxuKyAqIEBvcGVuX2ZsYWc6IE9fZmxhZ3NcbisgKiBAbW9kZTogaW5pdGlhbCBwZXJtaXNzaW9ucyBmb3IgZmlsZVxuKyAqXG4rICogT3BlbiBhIGZpbGUgYWZ0ZXIgbG9va3VwIGFuZC9vciBjcmVhdGUuICBUaGlzIHByb3ZpZGVzIHNpbWlsYXJcbisgKiBmdW5jdGlvbmFsaXR5IG9wZW5fbGFzdF9sb29rdXBzKCkgZm9yIGluLWtlcm5lbCB1c2VycywgcGFydGljdWxhcmx5XG4rICogbmZzZC5cbisgKiBJdCB1c2VzIC1cdTAwM2VhdG9taWNfb3BlbiBvciAtXHUwMDNlbG9va3VwIC8gLVx1MDAzZWNyZWF0ZSAvIC1cdTAwM2VvcGVuIGFzIGFwcHJvcHJpYXRlLlxuKyAqXG4rICogUmV0dXJuczogdGhlIG9wZW5lZCBzdHJ1Y3QgZmlsZSwgb3IgYW4gZXJyb3IuXG4rICogICAgIENhbGxlciBzaG91bGQgY2hlY2sgdGhhdCB0aGUgZmlsZSBvcGVuZWQgaXMgcmVndWxhcixcbisgKiAgICAgaWYgc29tZXRoaW5nIGVsc2Ugd2FzIGZvdW5kLCBhbiBPX1BBVEggZmlsZSBpcyBwcm92aWRlZC5cbisgKiAgICAgQ2FsbGVyIHNob3VsZCB2YWxpZGF0ZSBGTU9ERV9DUkVBVEVEIGlmIE9fRVhDTCB3YXMgcmVxdWVzdGVkLlxuKyAqL1xuK3N0cnVjdCBmaWxlICp2ZnNfbG9va3VwX29wZW4oc3RydWN0IHBhdGggKnBhcmVudCwgc3RydWN0IHFzdHIgKmxhc3QsXG4rXHRcdFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXG4re1xuK1x0c3RydWN0IGZpbGUgKmZpbGUgX19mcmVlKGZwdXQpID0gTlVMTDtcbitcdHN0cnVjdCBuYW1laWRhdGEgbmQgPSB7fTtcbitcdHN0cnVjdCBvcGVuX2ZsYWdzIG9wID0ge307XG4rXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XG4rXHRpbnQgZXJyb3IgPSAwO1xuK1xuK1x0V0FSTl9PTkNFKG1vZGUgXHUwMDI2ICFTX0lBTExVR08sIFwibW9kZSBtdXN0IG9ubHkgaGF2ZSBwZXJtaXNzaW9uIGJpdHNcIik7XG4rXHRlcnJvciA9IGxvb2t1cF9ub3Blcm1fY29tbW9uKGxhc3QsIHBhcmVudC1cdTAwM2VkZW50cnkpO1xuK1x0aWYgKGVycm9yKVxuK1x0XHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XG4rXG4rXHRmaWxlID0gYWxsb2NfZW1wdHlfZmlsZShvcGVuX2ZsYWcsIGN1cnJlbnRfY3JlZCgpKTtcbitcdGlmIChJU19FUlIoZmlsZSkpXG4rXHRcdHJldHVybiBmaWxlO1xuK1xuK1x0bmQucGF0aCA9ICpwYXJlbnQ7XG4rXHRuZC5sYXN0ID0gKmxhc3Q7XG4rXHRuZC5mbGFncyA9IExPT0tVUF9PUEVOO1xuK1x0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkge1xuK1x0XHRuZC5mbGFncyB8PSBMT09LVVBfQ1JFQVRFO1xuK1x0XHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpXG4rXHRcdFx0bmQuZmxhZ3MgfD0gTE9PS1VQX0VYQ0w7XG4rXHR9XG4rXHRvcC5vcGVuX2ZsYWcgPSBvcGVuX2ZsYWc7XG4rXHRvcC5tb2RlID0gU19JRlJFRyB8IG1vZGU7XG4rXHRkZW50cnkgPSBsb29rdXBfb3BlbihcdTAwMjZuZCwgZmlsZSwgXHUwMDI2b3ApO1xuK1xuK1x0aWYgKElTX0VSUihkZW50cnkpKVxuK1x0XHRyZXR1cm4gRVJSX0NBU1QoZGVudHJ5KTtcbitcbitcdGlmIChkX3JlYWxseV9pc19uZWdhdGl2ZShkZW50cnkpKSB7XG4rXHRcdGVycm9yID0gLUVOT0VOVDtcbitcdH0gZWxzZSBpZiAoIShmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKSkge1xuK1x0XHRuZC5wYXRoLmRlbnRyeSA9IGRlbnRyeTtcbitcdFx0aWYgKCFkX2lzX3JlZyhkZW50cnkpKVxuK1x0XHRcdC8qXG4rXHRcdFx0ICogYWxsb3cgY2FsbGVyIHRvIHNlZSBkZW50cnkgYW5kIGNob29zZVxuK1x0XHRcdCAqIGNvcnJlY3QgZXJyb3IgY29kZVxuK1x0XHRcdCAqL1xuK1x0XHRcdGZpbGUtXHUwMDNlZl9mbGFncyB8PSBPX1BBVEg7XG4rXHRcdGVycm9yID0gdmZzX29wZW4oXHUwMDI2bmQucGF0aCwgZmlsZSk7XG4rXHR9XG4rXHRkcHV0KGRlbnRyeSk7XG4rXG4rXHRpZiAoZXJyb3IpXG4rXHRcdHJldHVybiBFUlJfUFRSKGVycm9yKTtcbitcdHJldHVybiBub19mcmVlX3B0cihmaWxlKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sIFwibmZzZFwiKTtcbitcbiBzdGF0aWMgaW5saW5lIGJvb2wgdHJhaWxpbmdfc2xhc2hlcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZClcbiB7XG4gXHRyZXR1cm4gKGJvb2wpbmQtXHUwMDNlbGFzdC5uYW1lW25kLVx1MDAzZWxhc3QubGVuXTtcbkBAIC00NTU0LDEwICs0NjcxLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9mYXN0X2Zvcl9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBpbnQgb3Blbl9mbGFnKVxuIHN0YXRpYyBjb25zdCBjaGFyICpvcGVuX2xhc3RfbG9va3VwcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZCxcbiBcdFx0ICAgc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcbiB7XG4tXHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcbi1cdHN0cnVjdCBkZW50cnkgKmRpciA9IG5kLVx1MDAzZXBhdGguZGVudHJ5O1xuIFx0aW50IG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbi1cdGJvb2wgZ290X3dyaXRlID0gZmFsc2U7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XG4gXHRjb25zdCBjaGFyICpyZXM7XG4gXG5AQCAtNDU4Niw0NCArNDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXG4gXHRcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUNISUxEKTtcbiBcdFx0fVxuIFx0fVxuLXJldHJ5OlxuLVx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgKE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4tXHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4tXHRcdC8qXG4tXHRcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcbi1cdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcbi1cdFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LlxuLVx0XHQgKi9cbi1cdH1cbi1cdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG4tXHRcdGlub2RlX2xvY2soZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVx0ZWxzZVxuLVx0XHRpbm9kZV9sb2NrX3NoYXJlZChkaXItXHUwMDNlZF9pbm9kZSk7XG4tXHRkZW50cnkgPSBsb29rdXBfb3BlbihuZCwgZmlsZSwgb3AsIGdvdF93cml0ZSwgXHUwMDI2ZGVsZWdhdGVkX2lub2RlKTtcbi1cdGlmICghSVNfRVJSKGRlbnRyeSkpIHtcbi1cdFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9DUkVBVEVEKVxuLVx0XHRcdGZzbm90aWZ5X2NyZWF0ZShkaXItXHUwMDNlZF9pbm9kZSwgZGVudHJ5KTtcbi1cdFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9PUEVORUQpXG4tXHRcdFx0ZnNub3RpZnlfb3BlbihmaWxlKTtcbi1cdH1cbi1cdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG4tXHRcdGlub2RlX3VubG9jayhkaXItXHUwMDNlZF9pbm9kZSk7XG4tXHRlbHNlXG4tXHRcdGlub2RlX3VubG9ja19zaGFyZWQoZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVxuLVx0aWYgKGdvdF93cml0ZSlcbi1cdFx0bW50X2Ryb3Bfd3JpdGUobmQtXHUwMDNlcGF0aC5tbnQpO1xuIFxuLVx0aWYgKElTX0VSUihkZW50cnkpKSB7XG4tXHRcdGlmIChpc19kZWxlZ2F0ZWQoXHUwMDI2ZGVsZWdhdGVkX2lub2RlKSkge1xuLVx0XHRcdGludCBlcnJvciA9IGJyZWFrX2RlbGVnX3dhaXQoXHUwMDI2ZGVsZWdhdGVkX2lub2RlKTtcbi1cbi1cdFx0XHRpZiAoIWVycm9yKVxuLVx0XHRcdFx0Z290byByZXRyeTtcbi1cdFx0XHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XG4tXHRcdH1cbitcdGRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCk7XG4rXHRpZiAoSVNfRVJSKGRlbnRyeSkpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xuLVx0fVxuIFxuIFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiAoRk1PREVfT1BFTkVEIHwgRk1PREVfQ1JFQVRFRCkpIHtcbiBcdFx0ZHB1dChuZC1cdTAwM2VwYXRoLmRlbnRyeSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uYW1laS5oIGIvaW5jbHVkZS9saW51eC9uYW1laS5oXG5pbmRleCBlYmU2ZTI5ZjdlOTNiYS4uODZkNjU3YjI0ZmM2YTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25hbWVpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmFtZWkuaFxuQEAgLTk3LDYgKzk3LDkgQEAgc3RydWN0IGRlbnRyeSAqc3RhcnRfY3JlYXRpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBzdHJ1Y3QgZGVudHJ5ICpzdGFydF9yZW1vdmluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgZGVudHJ5ICpjaGlsZCk7XG4gXG4rc3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcbitcdFx0XHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSk7XG4rXG4gLyogZW5kX2NyZWF0aW5nIC0gZmluaXNoIGFjdGlvbiBzdGFydGVkIHdpdGggc3RhcnRfY3JlYXRpbmdcbiAgKiBAY2hpbGQ6IGRlbnRyeSByZXR1cm5lZCBieSBzdGFydF9jcmVhdGluZygpIG9yIHZmc19ta2RpcigpXG4gICpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAwOjE4OjI2LjMyMDEzMzA5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2Njk4NTUwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZTIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvbmFtZWkuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L25hbWVpLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIGhvdyB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSBoYW5kbGVzIGxvb2t1cHMgYW5kIG9wZW5zLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEZyb20gd2hhdCBJIGNhbiBnYXRoZXIsIHRoZSBwYXRjaCBpbnRlcm5hbGl6ZXMgdGhlIGxvY2tpbmcsIHJldHJ5LCBhbmQgYGdvdF93cml0ZWAgbG9naWMgKndpdGhpbiogYGxvb2t1cF9vcGVuYC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlOyBlc3NlbnRpYWxseSBpdCdzIG1vdmluZyByZXNwb25zaWJpbGl0eS4gUHJldmlvdXNseSwgYG9wZW5fbGFzdF9sb29rdXBzYCBzZWVtcyB0byBoYXZlIGhhbmRsZWQgdGhhdCwgYnV0IG5vdyBpdCBzZWVtcyB0byBjYWxsIGBsb29rdXBfb3BlbmAgZGlyZWN0bHkuXG5cblRoZSBiaWcgdGFrZWF3YXkgaGVyZSwgaG93ZXZlciwgaXMgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbmV3LCAqZXhwb3J0ZWQqIGZ1bmN0aW9uLCBgdmZzX2xvb2t1cF9vcGVuYC4gVGhlIGZhY3QgdGhhdCBpdCdzIGV4cG9ydGVkIG1lYW5zIGl0J3MgYXZhaWxhYmxlIGZvciBtb2R1bGVzIHRvIHVzZSwgYW5kIHRoZSBjb21tZW50IGFib3V0IGl0IGJlaW5nIHNwZWNpZmljYWxseSBmb3IgXCJuZnNkXCIgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBpbXBsaWVzIHNvbWUgY2hhbmdlcyB0byBob3cgdGhlIE5ldHdvcmsgRmlsZSBTeXN0ZW0gRGFlbW9uIHdpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgVkZTLiBUaGlzIGtpbmQgb2YgY2hhbmdlIGlzIG9mdGVuIGRlbGljYXRlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBuZXcgZnVuY3Rpb24gdXNlZCBhbnl3aGVyZSAqZWxzZSogd2l0aGluIHRoZSBrZXJuZWw/IEknbGwgcnVuIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIGB2ZnNfbG9va3VwX29wZW5gIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wYWN0IGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLiBUaGlzIGlzIGNvcmUgVkZTIGNvZGUsIGFmdGVyIGFsbCwgc28gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGF0IHRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAwOjE4OjMwLjk4OTk4OTgzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzExOTUzODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmc19sb29rdXBfb3BlblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9uYW1laS5jPTQzOTk9c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL25hbWVpLmMtNDU2NS0vKipcXG5mcy9uYW1laS5jOjQ1NjY6ICogdmZzX2xvb2t1cF9vcGVuIC0gb3BlbiBhbmQgcG9zc2libHkgY3JlYXRlIGEgcmVndWxhciBmaWxlXFxuZnMvbmFtZWkuYy00NTY3LSAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGVcXG4tLVxcbmZzL25hbWVpLmMtNDU4MS0gKi9cXG5mcy9uYW1laS5jOjQ1ODI6c3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcXG5mcy9uYW1laS5jLTQ1ODMtXFx0XFx0XFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXFxuLS1cXG5mcy9uYW1laS5jLTQ2MzItfVxcbmZzL25hbWVpLmM6NDYzMzpFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHZmc19sb29rdXBfb3BlbiwgXFxcIm5mc2RcXFwiKTtcXG5mcy9uYW1laS5jLTQ2MzQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25hbWVpLmg9OTc9c3RydWN0IGRlbnRyeSAqc3RhcnRfcmVtb3ZpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmFtZWkuaC05OS1cXG5pbmNsdWRlL2xpbnV4L25hbWVpLmg6MTAwOnN0cnVjdCBmaWxlICp2ZnNfbG9va3VwX29wZW4oc3RydWN0IHBhdGggKnBhcmVudCwgc3RydWN0IHFzdHIgKmxhc3QsXFxuaW5jbHVkZS9saW51eC9uYW1laS5oLTEwMS1cXHRcXHRcXHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAwOjE4OjMzLjMwMTk0OTAzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODM2NTkzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYHZmc19sb29rdXBfb3BlbmAqKlxuXG5BbHJpZ2h0LCBzbyBgdmZzX2xvb2t1cF9vcGVuYCBpcyBleHBvcnRlZCBzcGVjaWZpY2FsbHkgZm9yIGBuZnNkYC4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGEgZGVkaWNhdGVkIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCBwcm9iYWJseSBpc24ndCBnZW5lcmFsaXplZCBiZXlvbmQgdGhhdCB1c2UgY2FzZSB5ZXQuIFRoYXQgZXhwb3J0IGlzIGEgc3Ryb25nIGhpbnQuIEhvd2V2ZXIsIEkgc2hvdWxkIGFsd2F5cyBiZSBtZXRpY3Vsb3VzLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgc3VzcGljaW9uLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB3aXRoaW4gdGhlIGBmcy9uZnNkL2AgZGlyZWN0b3J5LiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMg4oCTIEkgbmVlZCB0byBlbnN1cmUgaXQncyAqYWN0dWFsbHkqIGVtcGxveWVkIHRoZXJlIGFuZCBub3doZXJlIGVsc2UgaW4gdGhlIHdpZGVyIGtlcm5lbCBjb2RlYmFzZSBiZWZvcmUgZHJhd2luZyBhbnkgc29saWQgY29uY2x1c2lvbnMuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBlaXRoZXIgY29uZmlybSB0aGUgaW50ZW5kZWQgdXNhZ2Ugb3IgcmV2ZWFsIGEgcG90ZW50aWFsIHJlZmFjdG9yaW5nIG9yIGZ1dHVyZSB1c2UtY2FzZSBJIG1pZ2h0IGhhdmUgbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6MzYuNTg1NjEwMTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDE4NjcxMiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZzX2xvb2t1cF9vcGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25mc2QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMDoxODozNi44MTU4MDQwNDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM2NzE5MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBcdTAwMjYgQ29yZSBGdW5jdGlvbmFsaXR5IEltcGFjdCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXNuJ3QgKmRpcmVjdGx5KiBpbXBhY3RpbmcgYW55dGhpbmcgd2l0aGluIGBmcy9uZnNkYCBhdCB0aGUgbW9tZW50LCB3aGljaCBpbml0aWFsbHkgZ2F2ZSBtZSBhIGJpdCBvZiBwYXVzZS4gSXQgbG9va3MgbGlrZSBpdCdzIHNldHRpbmcgdGhlIHN0YWdlLCBpbnRyb2R1Y2luZyBhbiBBUEkgbGlrZWx5IGZvciBhIGZ1dHVyZSBwYXRjaCwgd2hpY2ggaXMgY29tbW9uLiBCdXQgdGhlbi4uLiBpdCBtb2RpZmllcyBgbG9va3VwX29wZW5gIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLiBCb3RoIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIFZGUyBmdW5jdGlvbnMsIGhlYXZpbHkgdXNlZCBjb3JlIGNvbXBvbmVudHMuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBrbm93IHRob3NlIGZ1bmN0aW9ucyBpbnRpbWF0ZWx5OyB0aGV5J3JlIHRoZSB3b3JraG9yc2VzIHdpdGhpbiB0aGUgYGZzL2AgbmFtZXNwYWNlLlxuXG5TcGVjaWZpY2FsbHksIGBvcGVuX2xhc3RfbG9va3Vwc2AgaXMgcmlnaHQgaW4gdGhlIHRoaWNrIG9mIHRoaW5ncyDigJMgaXQncyBjYWxsZWQgZHVyaW5nIGBkb19maWxwX29wZW5gIGFuZCBieSBgcGF0aF9vcGVuYXRgLiBUaGlzIGlzbid0IGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYy4gSXQgdG91Y2hlcyB0aGUgdmVyeSB3YXkgZmlsZXMgYXJlIG9wZW5lZCBhbmQgcGF0aHMgYXJlIHJlc29sdmVkLiBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb24gdGhpcy5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBUaW1lIHRvIGRpdmUgaW50byBgZnMvbmFtZWkuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUgaW4gYm90aCBgb3Blbl9sYXN0X2xvb2t1cHNgIGFuZCBgbG9va3VwX29wZW5gIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGNoYW5nZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6NDEuMjUyNTI0OTg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzIyMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9wZW5fbGFzdF9sb29rdXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25hbWVpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmFtZWkuYz00Mzk5PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9uYW1laS5jLTQ1NzItICogT3BlbiBhIGZpbGUgYWZ0ZXIgbG9va3VwIGFuZC9vciBjcmVhdGUuICBUaGlzIHByb3ZpZGVzIHNpbWlsYXJcXG5mcy9uYW1laS5jOjQ1NzM6ICogZnVuY3Rpb25hbGl0eSBvcGVuX2xhc3RfbG9va3VwcygpIGZvciBpbi1rZXJuZWwgdXNlcnMsIHBhcnRpY3VsYXJseVxcbmZzL25hbWVpLmMtNDU3NC0gKiBuZnNkLlxcbi0tXFxuZnMvbmFtZWkuYz00NjQwPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfZmFzdF9mb3Jfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgaW50IG9wZW5fZmxhZylcXG4tLVxcbmZzL25hbWVpLmMtNDY3MC1cXG5mcy9uYW1laS5jOjQ2NzE6c3RhdGljIGNvbnN0IGNoYXIgKm9wZW5fbGFzdF9sb29rdXBzKHN0cnVjdCBuYW1laWRhdGEgKm5kLFxcbmZzL25hbWVpLmMtNDY3Mi1cXHRcXHQgICBzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wKVxcbi0tXFxuZnMvbmFtZWkuYz00OTEzPXN0YXRpYyBzdHJ1Y3QgZmlsZSAqcGF0aF9vcGVuYXQoc3RydWN0IG5hbWVpZGF0YSAqbmQsXFxuLS1cXG5mcy9uYW1laS5jLTQ5MjktXFx0XFx0d2hpbGUgKCEoZXJyb3IgPSBsaW5rX3BhdGhfd2FsayhzLCBuZCkpIFxcdTAwMjZcXHUwMDI2XFxuZnMvbmFtZWkuYzo0OTMwOlxcdFxcdCAgICAgICAocyA9IG9wZW5fbGFzdF9sb29rdXBzKG5kLCBmaWxlLCBvcCkpICE9IE5VTEwpXFxuZnMvbmFtZWkuYy00OTMxLVxcdFxcdFxcdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6NDEuMzEyMjUyMTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0NDAzOTc2OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgUGF0aCBMb29rdXAgYW5kIEZpbGUgT3BlbmluZyoqXG5cbk9rYXksIGhlcmUncyBteSBsaW5lIG9mIHRoaW5raW5nIG9uIGhvdyB0byBiZXN0IGZ1enogdGhpcyBwYXRjaC4gRmlyc3QsIEkgc2VlIHRoYXQgYG9wZW5fbGFzdF9sb29rdXBzYCBpcyBkZWZpbml0ZWx5IHJlYWNoZWQgYnkgYHBhdGhfb3BlbmF0YC4gR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbnMsIHRoaXMgaXMgd29ydGggZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZSBgbG9va3VwX29wZW5gLCBgdmZzX2xvb2t1cF9vcGVuYCwgYW5kIGBvcGVuX2xhc3RfbG9va3Vwc2AuXG5cblRoZSByZWFsIGRpbGVtbWEgaXMgdGhhdCBib3RoIGBvcGVuX2xhc3RfbG9va3Vwc2AgYW5kIGBsb29rdXBfb3BlbmAgYXJlICpob3QtcGF0aCogZnVuY3Rpb25zLCBjYWxsZWQgb24gYWxtb3N0IGV2ZXJ5IHNpbmdsZSBmaWxlIG9wZW4uIFRoYXQncyBhIHByb2JsZW0sIGJlY2F1c2UgSSBuZWVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enppbmcgZGlzdHJpYnV0aW9uIHRvd2FyZHMgdGhlc2UgZ2VuZXJpYyBmdW5jdGlvbnMuIExpc3RpbmcgdGhlbSB3b3VsZCBtYWtlIHN5emthbGxlciBwcmlvcml0aXplIHRoZW0gdG9vIGhlYXZpbHkgYW5kIG1pZ2h0IG1pc3MgbW9yZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBUaGUgcHJvbXB0IHNheXMgSSBzaG91bGQgYXZvaWQgdGhlc2UgaG90LXBhdGggZnVuY3Rpb25zLlxuXG5Jbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBub3QgbGlzdGluZyBhbnl0aGluZywgd2hpY2ggd291bGQgbGV0IHN5emthbGxlciBmdXp6IGFzIGl0IG5vcm1hbGx5IGRvZXMuICBCdXQgdGhlIHBhdGNoIGNsZWFybHkgY2VudGVycyBvbiBjaGFuZ2VzIHRvIGBsb29rdXBfb3BlbmAsIHdoaWNoIGFsc28gc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSB0YXJnZXQuIEkgY291bGQgbGlzdCBgdmZzX2xvb2t1cF9vcGVuYCwgc2luY2UgaXQncyBhIG5ldyBmdW5jdGlvbiBhZGRlZCBieSB0aGUgcGF0Y2ggYW5kIHdvbid0IGJlIGhpdCBvdGhlcndpc2UuIEJ1dCBpdCdzIGN1cnJlbnRseSB1bnVzZWQsIHNvIHN5emthbGxlciB3b24ndCBldmVuIHRvdWNoIGl0LlxuXG5JJ20gd3Jlc3RsaW5nIHdpdGggd2hldGhlciB0byBsaXN0IGBsb29rdXBfb3BlbmAgYXQgYWxsLiBMaXN0aW5nIGEgaG90IGZ1bmN0aW9uIGNhbiBza2V3IHRoaW5ncy4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMuIFRoZSBwYXRjaCBtb2RpZmllcyBgbG9va3VwX29wZW5gIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgIGFuZCBhZGRzIGB2ZnNfbG9va3VwX29wZW5gLiBTaW5jZSB0aGUgYGxvb2t1cF9vcGVuYCBpcyBtb2RpZmllZCBpdCdzIHN0aWxsIHRoZSBtYWluIHRhcmdldC4gSSBjb3VsZCBqdXN0IGxpc3QgYHZmc19sb29rdXBfb3BlbmAgYnV0IGl0IGlzIHVudXNlZC5cblxuVGhlIHBhdGNoIG1lbnRpb25zIHRoZSBmdW5jdGlvbnMgYGxvb2t1cF9vcGVuYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXAsIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLCBjYWxsZWQgZm9yIHRoZSBsYXN0IGNvbXBvbmVudCBvZiBhIHBhdGguXG5cbkkndmUgZ290IHRvIG1ha2UgYSBjaG9pY2UuIEkgY291bGQganVzdCBsaXN0IGB2ZnNfbG9va3VwX29wZW5gLCB3aGljaCB3b24ndCBkbyBhbnl0aGluZyBiZWNhdXNlIGl0J3MgdW51c2VkLCBvciBJIGNvdWxkIGxpc3Qgbm90aGluZyBhbmQgbGV0IHRoZSBmdXp6ZXIgd29yayBhcyBpdCBkb2VzIG5vcm1hbGx5LiBCdXQgYGxvb2t1cF9vcGVuYCBpcyB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLCBldmVuIGlmIGl0J3MgaG90LiBUaGUgcHJvbXB0IHNheXMgdG8gXCJleHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLiBTaG91bGQgYXZvaWQgaG90LXBhdGggZnVuY3Rpb25zXCIuXG5JbiB0aGF0IGNhc2UsIEkgd2lsbCBqdXN0IGxpc3QgYHZmc19sb29rdXBfb3BlbmAgYXMgbXkgZm9jdXMgc3ltYm9sLCBldmVuIGlmIGl0J3Mgbm90IGhpdCwganVzdCB0byBiZSBjb25zZXJ2YXRpdmUuXG5cbk5vdywgd2FpdCBhIG1pbnV0ZSwgdGhlIGBsb29rdXBfb3BlbmAgZnVuY3Rpb24gaXMgc2lnbmlmaWNhbnRseSBjaGFuZ2VkLCBub3cgaGFuZGxpbmcgYGlub2RlX2xvY2tgLCBgbW50X3dhbnRfd3JpdGVgLCBgdHJ5X2JyZWFrX2RlbGVnYCwgZXRjLiBJdCdzIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCwgZXZlbiBpZiBpdCdzIGEgbGl0dGxlIGhvdCwgYW5kIGl0J3Mgc3BlY2lmaWMgdG8gZmlsZSBvcGVuaW5nLCBhbmQgbm90IGFzIGhvdCBhcyBga21hbGxvY2Agb3IgYHNwaW5fbG9ja2AuXG5cbkknbGwgaW5jbHVkZSBgbG9va3VwX29wZW5gIGluIHRoZSBsaXN0LCBhbG9uZyB3aXRoIGB2ZnNfbG9va3VwX29wZW5gLCBhbmQgd2hpbGUgaXQgaXMgc29tZXdoYXQgb2YgYSBob3QgcGF0aCBmdW5jdGlvbiwgSSdtIGNvbWZvcnRhYmxlIGluY2x1ZGluZyBpdC4gSXQgbWFrZXMgc2Vuc2UsIGFzIGEgaGlnaCB2YWx1ZSB0YXJnZXQuXG5cblRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZGVkLCBiZWNhdXNlIHRoaXMgaXMgY29yZSBWRlMgY29kZS4gSXQncyBpbiBgZnMvbmFtZWkuY2AuXG5cbioqTXkgRmluYWwgUmVjb21tZW5kYXRpb246KipcblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLlxuXG5NeSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlOiAgYGxvb2t1cF9vcGVuYCwgYHZmc19sb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2AuXG5cbmBFbmFibGVDb25maWdzYCByZW1haW5zIGFuIGVtcHR5IGxpc3QgYFtdYC5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IFRoaXMgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgdGhlIGNlbnRyYWwgZnVuY3Rpb25zIGBsb29rdXBfb3BlbmAgYW5kIGBvcGVuX2xhc3RfbG9va3Vwc2AsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGZ1bmRhbWVudGFsbHkgYWZmZWN0cyBmaWxlIGNyZWF0aW9uIGFuZCBvcGVuaW5nIGFjcm9zcyAqYWxsKiBmaWxlc3lzdGVtcy4gR2l2ZW4gdGhlc2UgY2hhbmdlcywgdGhpcyByZWZhY3RvcmluZyBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc4LCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMDoxODo1Mi43NTI2NTI1NDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJ2ZnNfbG9va3VwX29wZW5cIixcbiAgICBcIm9wZW5fbGFzdF9sb29rdXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJ2ZnNfbG9va3VwX29wZW5cIixcbiAgICBcIm9wZW5fbGFzdF9sb29rdXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 23:58:29 +0000 UTC FinishedAt: 2026-07-06 00:18:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b736449288972c6071c820596ef9a7d6ac73a8ae", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b736449288972c6071c820596ef9a7d6ac73a8ae", "config_name": "upstream-apparmor-kasan.config", "series_id": "43e37bd2-06cd-4004-be0a-8a77868d5873" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "lookup_open", "vfs_lookup_open", "open_last_lookups" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7dmZzX2xvb2t1cF9vcGVuJiMzNDssCiAgICAmIzM0O29wZW5fbGFzdF9sb29rdXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBjb3JlIFZGUyBwYXRoIGxvb2t1cCBhbmQgZmlsZSBvcGVuaW5nIGxvZ2ljIChgbG9va3VwX29wZW5gLCBgb3Blbl9sYXN0X2xvb2t1cHNgKSBhbmQgaW50cm9kdWNlcyBhIG5ldyBleHBvcnRlZCBmdW5jdGlvbiBgdmZzX2xvb2t1cF9vcGVuYC4gVGhpcyBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzIGFsbCBmaWxlc3lzdGVtcyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMDoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI3MWI1MThmZTY1NTk1NTE0Yjc4N2YwOWYxY2QyNmI1YTU3NTI0MmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDAwOjE4OjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jXG5pbmRleCA3ZWFkM2RiNTViZTIzOS4uNjBkZGRmN2I5N2FhMjIgMTAwNjQ0XG4tLS0gYS9mcy9uYW1laS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9uYW1laS5jXG5AQCAtNDM5NywxOSAmIzQzOzQzOTcsNDEgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmF0b21pY19vcGVuKGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnlcbiAgKiBBbiBlcnJvciBjb2RlIGlzIHJldHVybmVkIG9uIGZhaWx1cmUuXG4gICovXG4gc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wLFxuLVx0XHRcdFx0ICBib29sIGdvdF93cml0ZSwgc3RydWN0IGRlbGVnYXRlZF9pbm9kZSAqZGVsZWdhdGVkX2lub2RlKVxuJiM0MztcdFx0XHRcdCAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcbiBcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwO1xuIFx0c3RydWN0IGRlbnRyeSAqZGlyID0gbmQtXHUwMDNlcGF0aC5kZW50cnk7XG4gXHRzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IGRpci1cdTAwM2VkX2lub2RlO1xuLVx0aW50IG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbiYjNDM7XHRpbnQgb3Blbl9mbGFnO1xuIFx0c3RydWN0IGRlbnRyeSAqZGVudHJ5O1xuLVx0aW50IGVycm9yLCBjcmVhdGVfZXJyb3IgPSAwO1xuLVx0dW1vZGVfdCBtb2RlID0gb3AtXHUwMDNlbW9kZTtcbiYjNDM7XHRpbnQgZXJyb3IsIGNyZWF0ZV9lcnJvcjtcbiYjNDM7XHR1bW9kZV90IG1vZGU7XG4mIzQzO1x0Ym9vbCBnb3Rfd3JpdGU7XG4gXG4tXHRpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSlcbi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4mIzQzO3JldHJ5OlxuJiM0MztcdG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbiYjNDM7XHRnb3Rfd3JpdGUgPSBmYWxzZTtcbiYjNDM7XHRtb2RlID0gb3AtXHUwMDNlbW9kZTtcbiYjNDM7XHRjcmVhdGVfZXJyb3IgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAob3Blbl9mbGFnIFx1MDAyNiAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHtcbiYjNDM7XHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogZG8gX25vdF8gZmFpbCB5ZXQgLSB3ZSBtaWdodCBub3QgbmVlZCB0aGF0IG9yIGZhaWwgd2l0aFxuJiM0MztcdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UmIzM5O2xsIGJlXG4mIzQzO1x0XHQgKiBkcm9wcGluZyB0aGlzIG9uZSBhbnl3YXkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHR9XG4mIzQzO1x0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVClcbiYjNDM7XHRcdGlub2RlX2xvY2soZGlyX2lub2RlKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRpbm9kZV9sb2NrX3NoYXJlZChkaXJfaW5vZGUpO1xuJiM0MztcbiYjNDM7XHRpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSkge1xuJiM0MztcdFx0ZGVudHJ5ID0gRVJSX1BUUigtRU5PRU5UKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiBcbiBcdGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNj0gfkZNT0RFX0NSRUFURUQ7XG4gXHRkZW50cnkgPSBkX2xvb2t1cChkaXIsIFx1MDAyNm5kLVx1MDAzZWxhc3QpO1xuQEAgLTQ0MTcsNyAmIzQzOzQ0MzksNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRpZiAoIWRlbnRyeSkge1xuIFx0XHRcdGRlbnRyeSA9IGRfYWxsb2NfcGFyYWxsZWwoZGlyLCBcdTAwMjZuZC1cdTAwM2VsYXN0KTtcbiBcdFx0XHRpZiAoSVNfRVJSKGRlbnRyeSkpXG4tXHRcdFx0XHRyZXR1cm4gZGVudHJ5O1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXHRcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTQ0MzMsNyAmIzQzOzQ0NTUsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0fVxuIFx0aWYgKGRlbnRyeS1cdTAwM2VkX2lub2RlKSB7XG4gXHRcdC8qIENhY2hlZCBwb3NpdGl2ZSBkZW50cnk6IHdpbGwgb3BlbiBpbiBmX29wLVx1MDAzZW9wZW4gKi9cbi1cdFx0cmV0dXJuIGRlbnRyeTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuIFx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVClcbkBAIC00NDU0LDcgJiM0Mzs0NDc2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHtcbiBcdFx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19FWENMKVxuIFx0XHRcdG9wZW5fZmxhZyBcdTAwMjY9IH5PX1RSVU5DO1xuLVx0XHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyLVx1MDAzZWRfaW5vZGUsIG1vZGUsIG1vZGUsIG1vZGUpO1xuJiM0MztcdFx0bW9kZSA9IHZmc19wcmVwYXJlX21vZGUoaWRtYXAsIGRpcl9pbm9kZSwgbW9kZSwgbW9kZSwgbW9kZSk7XG4gXHRcdGlmIChsaWtlbHkoZ290X3dyaXRlKSlcbiBcdFx0XHRjcmVhdGVfZXJyb3IgPSBtYXlfb19jcmVhdGUoaWRtYXAsIFx1MDAyNm5kLVx1MDAzZXBhdGgsXG4gXHRcdFx0XHRcdFx0ICAgIGRlbnRyeSwgbW9kZSk7XG5AQCAtNDQ2OSw3ICYjNDM7NDQ5MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGRlbnRyeSA9IGF0b21pY19vcGVuKFx1MDAyNm5kLVx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTtcbiBcdFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXHUwMDI2XHUwMDI2IGRlbnRyeSA9PSBFUlJfUFRSKC1FTk9FTlQpKVxuIFx0XHRcdGRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTtcbi1cdFx0cmV0dXJuIGRlbnRyeTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDg5LDcgJiM0Mzs0NTExLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdC8qIE5lZ2F0aXZlIGRlbnRyeSwganVzdCBjcmVhdGUgdGhlIGZpbGUgKi9cbiBcdGlmICghZGVudHJ5LVx1MDAzZWRfaW5vZGUgXHUwMDI2XHUwMDI2IChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpKSB7XG4gXHRcdC8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqL1xuLVx0XHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7XG4mIzQzO1x0XHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XG4gXHRcdGlmIChlcnJvcilcbiBcdFx0XHRnb3RvIG91dF9kcHV0O1xuIFxuQEAgLTQ1MDgsMTMgJiM0Mzs0NTMwLDEwOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbiBcdFx0Z290byBvdXRfZHB1dDtcbiBcdH1cbiYjNDM7b3V0OlxuJiM0MztcdGlmICghSVNfRVJSKGRlbnRyeSkpIHtcbiYjNDM7XHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbiYjNDM7XHRcdFx0ZnNub3RpZnlfY3JlYXRlKGRpcl9pbm9kZSwgZGVudHJ5KTtcbiYjNDM7XHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKVxuJiM0MztcdFx0XHRmc25vdGlmeV9vcGVuKGZpbGUpO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAoKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkgfHwgY3JlYXRlX2Vycm9yKVxuJiM0MztcdFx0aW5vZGVfdW5sb2NrKGRpcl9pbm9kZSk7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0aW5vZGVfdW5sb2NrX3NoYXJlZChkaXJfaW5vZGUpO1xuJiM0MztcbiYjNDM7XHRpZiAoZ290X3dyaXRlKVxuJiM0MztcdFx0bW50X2Ryb3Bfd3JpdGUobmQtXHUwMDNlcGF0aC5tbnQpO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfZGVsZWdhdGVkKFx1MDAyNmRlbGVnYXRlZF9pbm9kZSkpIHtcbiYjNDM7XHRcdC8qIE11c3QgaGF2ZSBjb21lIHRocm91Z2ggb3V0X2RwdXQ6IGRlbnRyeSBpcyBhbiBFUlJfUFRSKCkgKi9cbiYjNDM7XHRcdGVycm9yID0gYnJlYWtfZGVsZWdfd2FpdChcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpO1xuJiM0MztcbiYjNDM7XHRcdGlmICghZXJyb3IpXG4mIzQzO1x0XHRcdGdvdG8gcmV0cnk7XG4mIzQzO1x0XHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0dXJuIGRlbnRyeTtcbiBcbiBvdXRfZHB1dDpcbiBcdGRwdXQoZGVudHJ5KTtcbi1cdHJldHVybiBFUlJfUFRSKGVycm9yKTtcbiYjNDM7XHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcbiYjNDM7XHRnb3RvIG91dDtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB2ZnNfbG9va3VwX29wZW4gLSBvcGVuIGFuZCBwb3NzaWJseSBjcmVhdGUgYSByZWd1bGFyIGZpbGVcbiYjNDM7ICogQHBhcmVudDogZGlyZWN0b3J5IHRvIGNvbnRhaW4gZmlsZVxuJiM0MzsgKiBAbGFzdDogZmluYWwgY29tcG9uZW50IG9mIGZpbGUgbmFtZVxuJiM0MzsgKiBAb3Blbl9mbGFnOiBPX2ZsYWdzXG4mIzQzOyAqIEBtb2RlOiBpbml0aWFsIHBlcm1pc3Npb25zIGZvciBmaWxlXG4mIzQzOyAqXG4mIzQzOyAqIE9wZW4gYSBmaWxlIGFmdGVyIGxvb2t1cCBhbmQvb3IgY3JlYXRlLiAgVGhpcyBwcm92aWRlcyBzaW1pbGFyXG4mIzQzOyAqIGZ1bmN0aW9uYWxpdHkgb3Blbl9sYXN0X2xvb2t1cHMoKSBmb3IgaW4ta2VybmVsIHVzZXJzLCBwYXJ0aWN1bGFybHlcbiYjNDM7ICogbmZzZC5cbiYjNDM7ICogSXQgdXNlcyAtXHUwMDNlYXRvbWljX29wZW4gb3IgLVx1MDAzZWxvb2t1cCAvIC1cdTAwM2VjcmVhdGUgLyAtXHUwMDNlb3BlbiBhcyBhcHByb3ByaWF0ZS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogdGhlIG9wZW5lZCBzdHJ1Y3QgZmlsZSwgb3IgYW4gZXJyb3IuXG4mIzQzOyAqICAgICBDYWxsZXIgc2hvdWxkIGNoZWNrIHRoYXQgdGhlIGZpbGUgb3BlbmVkIGlzIHJlZ3VsYXIsXG4mIzQzOyAqICAgICBpZiBzb21ldGhpbmcgZWxzZSB3YXMgZm91bmQsIGFuIE9fUEFUSCBmaWxlIGlzIHByb3ZpZGVkLlxuJiM0MzsgKiAgICAgQ2FsbGVyIHNob3VsZCB2YWxpZGF0ZSBGTU9ERV9DUkVBVEVEIGlmIE9fRVhDTCB3YXMgcmVxdWVzdGVkLlxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcbiYjNDM7XHRcdFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZmlsZSAqZmlsZSBfX2ZyZWUoZnB1dCkgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBuYW1laWRhdGEgbmQgPSB7fTtcbiYjNDM7XHRzdHJ1Y3Qgb3Blbl9mbGFncyBvcCA9IHt9O1xuJiM0MztcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcbiYjNDM7XHRpbnQgZXJyb3IgPSAwO1xuJiM0MztcbiYjNDM7XHRXQVJOX09OQ0UobW9kZSBcdTAwMjYgIVNfSUFMTFVHTywgXCYjMzQ7bW9kZSBtdXN0IG9ubHkgaGF2ZSBwZXJtaXNzaW9uIGJpdHNcJiMzNDspO1xuJiM0MztcdGVycm9yID0gbG9va3VwX25vcGVybV9jb21tb24obGFzdCwgcGFyZW50LVx1MDAzZWRlbnRyeSk7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoZXJyb3IpO1xuJiM0MztcbiYjNDM7XHRmaWxlID0gYWxsb2NfZW1wdHlfZmlsZShvcGVuX2ZsYWcsIGN1cnJlbnRfY3JlZCgpKTtcbiYjNDM7XHRpZiAoSVNfRVJSKGZpbGUpKVxuJiM0MztcdFx0cmV0dXJuIGZpbGU7XG4mIzQzO1xuJiM0MztcdG5kLnBhdGggPSAqcGFyZW50O1xuJiM0MztcdG5kLmxhc3QgPSAqbGFzdDtcbiYjNDM7XHRuZC5mbGFncyA9IExPT0tVUF9PUEVOO1xuJiM0MztcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHtcbiYjNDM7XHRcdG5kLmZsYWdzIHw9IExPT0tVUF9DUkVBVEU7XG4mIzQzO1x0XHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpXG4mIzQzO1x0XHRcdG5kLmZsYWdzIHw9IExPT0tVUF9FWENMO1xuJiM0MztcdH1cbiYjNDM7XHRvcC5vcGVuX2ZsYWcgPSBvcGVuX2ZsYWc7XG4mIzQzO1x0b3AubW9kZSA9IFNfSUZSRUcgfCBtb2RlO1xuJiM0MztcdGRlbnRyeSA9IGxvb2t1cF9vcGVuKFx1MDAyNm5kLCBmaWxlLCBcdTAwMjZvcCk7XG4mIzQzO1xuJiM0MztcdGlmIChJU19FUlIoZGVudHJ5KSlcbiYjNDM7XHRcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xuJiM0MztcbiYjNDM7XHRpZiAoZF9yZWFsbHlfaXNfbmVnYXRpdmUoZGVudHJ5KSkge1xuJiM0MztcdFx0ZXJyb3IgPSAtRU5PRU5UO1xuJiM0MztcdH0gZWxzZSBpZiAoIShmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKSkge1xuJiM0MztcdFx0bmQucGF0aC5kZW50cnkgPSBkZW50cnk7XG4mIzQzO1x0XHRpZiAoIWRfaXNfcmVnKGRlbnRyeSkpXG4mIzQzO1x0XHRcdC8qXG4mIzQzO1x0XHRcdCAqIGFsbG93IGNhbGxlciB0byBzZWUgZGVudHJ5IGFuZCBjaG9vc2VcbiYjNDM7XHRcdFx0ICogY29ycmVjdCBlcnJvciBjb2RlXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRmaWxlLVx1MDAzZWZfZmxhZ3MgfD0gT19QQVRIO1xuJiM0MztcdFx0ZXJyb3IgPSB2ZnNfb3BlbihcdTAwMjZuZC5wYXRoLCBmaWxlKTtcbiYjNDM7XHR9XG4mIzQzO1x0ZHB1dChkZW50cnkpO1xuJiM0MztcbiYjNDM7XHRpZiAoZXJyb3IpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XG4mIzQzO1x0cmV0dXJuIG5vX2ZyZWVfcHRyKGZpbGUpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVModmZzX2xvb2t1cF9vcGVuLCBcJiMzNDtuZnNkXCYjMzQ7KTtcbiYjNDM7XG4gc3RhdGljIGlubGluZSBib29sIHRyYWlsaW5nX3NsYXNoZXMoc3RydWN0IG5hbWVpZGF0YSAqbmQpXG4ge1xuIFx0cmV0dXJuIChib29sKW5kLVx1MDAzZWxhc3QubmFtZVtuZC1cdTAwM2VsYXN0Lmxlbl07XG5AQCAtNDU1NCwxMCAmIzQzOzQ2NzEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX2Zhc3RfZm9yX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIGludCBvcGVuX2ZsYWcpXG4gc3RhdGljIGNvbnN0IGNoYXIgKm9wZW5fbGFzdF9sb29rdXBzKHN0cnVjdCBuYW1laWRhdGEgKm5kLFxuIFx0XHQgICBzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wKVxuIHtcbi1cdHN0cnVjdCBkZWxlZ2F0ZWRfaW5vZGUgZGVsZWdhdGVkX2lub2RlID0geyB9O1xuLVx0c3RydWN0IGRlbnRyeSAqZGlyID0gbmQtXHUwMDNlcGF0aC5kZW50cnk7XG4gXHRpbnQgb3Blbl9mbGFnID0gb3AtXHUwMDNlb3Blbl9mbGFnO1xuLVx0Ym9vbCBnb3Rfd3JpdGUgPSBmYWxzZTtcbiBcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcbiBcdGNvbnN0IGNoYXIgKnJlcztcbiBcbkBAIC00NTg2LDQ0ICYjNDM7NDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXG4gXHRcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUNISUxEKTtcbiBcdFx0fVxuIFx0fVxuLXJldHJ5OlxuLVx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgKE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4tXHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4tXHRcdC8qXG4tXHRcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcbi1cdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UmIzM5O2xsIGJlXG4tXHRcdCAqIGRyb3BwaW5nIHRoaXMgb25lIGFueXdheS5cbi1cdFx0ICovXG4tXHR9XG4tXHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKVxuLVx0XHRpbm9kZV9sb2NrKGRpci1cdTAwM2VkX2lub2RlKTtcbi1cdGVsc2Vcbi1cdFx0aW5vZGVfbG9ja19zaGFyZWQoZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVx0ZGVudHJ5ID0gbG9va3VwX29wZW4obmQsIGZpbGUsIG9wLCBnb3Rfd3JpdGUsIFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XG4tXHRpZiAoIUlTX0VSUihkZW50cnkpKSB7XG4tXHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbi1cdFx0XHRmc25vdGlmeV9jcmVhdGUoZGlyLVx1MDAzZWRfaW5vZGUsIGRlbnRyeSk7XG4tXHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKVxuLVx0XHRcdGZzbm90aWZ5X29wZW4oZmlsZSk7XG4tXHR9XG4tXHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0NSRUFUKVxuLVx0XHRpbm9kZV91bmxvY2soZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVx0ZWxzZVxuLVx0XHRpbm9kZV91bmxvY2tfc2hhcmVkKGRpci1cdTAwM2VkX2lub2RlKTtcbi1cbi1cdGlmIChnb3Rfd3JpdGUpXG4tXHRcdG1udF9kcm9wX3dyaXRlKG5kLVx1MDAzZXBhdGgubW50KTtcbiBcbi1cdGlmIChJU19FUlIoZGVudHJ5KSkge1xuLVx0XHRpZiAoaXNfZGVsZWdhdGVkKFx1MDAyNmRlbGVnYXRlZF9pbm9kZSkpIHtcbi1cdFx0XHRpbnQgZXJyb3IgPSBicmVha19kZWxlZ193YWl0KFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XG4tXG4tXHRcdFx0aWYgKCFlcnJvcilcbi1cdFx0XHRcdGdvdG8gcmV0cnk7XG4tXHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyb3IpO1xuLVx0XHR9XG4mIzQzO1x0ZGVudHJ5ID0gbG9va3VwX29wZW4obmQsIGZpbGUsIG9wKTtcbiYjNDM7XHRpZiAoSVNfRVJSKGRlbnRyeSkpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xuLVx0fVxuIFxuIFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiAoRk1PREVfT1BFTkVEIHwgRk1PREVfQ1JFQVRFRCkpIHtcbiBcdFx0ZHB1dChuZC1cdTAwM2VwYXRoLmRlbnRyeSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uYW1laS5oIGIvaW5jbHVkZS9saW51eC9uYW1laS5oXG5pbmRleCBlYmU2ZTI5ZjdlOTNiYS4uODZkNjU3YjI0ZmM2YTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25hbWVpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmFtZWkuaFxuQEAgLTk3LDYgJiM0Mzs5Nyw5IEBAIHN0cnVjdCBkZW50cnkgKnN0YXJ0X2NyZWF0aW5nX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4gc3RydWN0IGRlbnRyeSAqc3RhcnRfcmVtb3ZpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGRlbnRyeSAqY2hpbGQpO1xuIFxuJiM0MztzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LFxuJiM0MztcdFx0XHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSk7XG4mIzQzO1xuIC8qIGVuZF9jcmVhdGluZyAtIGZpbmlzaCBhY3Rpb24gc3RhcnRlZCB3aXRoIHN0YXJ0X2NyZWF0aW5nXG4gICogQGNoaWxkOiBkZW50cnkgcmV0dXJuZWQgYnkgc3RhcnRfY3JlYXRpbmcoKSBvciB2ZnNfbWtkaXIoKVxuICAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDt2ZnNfbG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7b3Blbl9sYXN0X2xvb2t1cHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNzFiNTE4ZmU2NTU5NTUxNGI3ODdmMDlmMWNkMjZiNWE1NzUyNDJkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwMDoxODoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDdlYWQzZGI1NWJlMjM5Li42MGRkZGY3Yjk3YWEyMiAxMDA2NDQKLS0tIGEvZnMvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9uYW1laS5jCkBAIC00Mzk3LDE5ICYjNDM7NDM5Nyw0MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeQogICogQW4gZXJyb3IgY29kZSBpcyByZXR1cm5lZCBvbiBmYWlsdXJlLgogICovCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAotCQkJCSAgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wLAotCQkJCSAgYm9vbCBnb3Rfd3JpdGUsIHN0cnVjdCBkZWxlZ2F0ZWRfaW5vZGUgKmRlbGVnYXRlZF9pbm9kZSkKJiM0MzsJCQkJICBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3ApCiB7CiYjNDM7CXN0cnVjdCBkZWxlZ2F0ZWRfaW5vZGUgZGVsZWdhdGVkX2lub2RlID0geyB9OwogCXN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwOwogCXN0cnVjdCBkZW50cnkgKmRpciA9IG5kLSZndDtwYXRoLmRlbnRyeTsKIAlzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IGRpci0mZ3Q7ZF9pbm9kZTsKLQlpbnQgb3Blbl9mbGFnID0gb3AtJmd0O29wZW5fZmxhZzsKJiM0MzsJaW50IG9wZW5fZmxhZzsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7Ci0JaW50IGVycm9yLCBjcmVhdGVfZXJyb3IgPSAwOwotCXVtb2RlX3QgbW9kZSA9IG9wLSZndDttb2RlOwomIzQzOwlpbnQgZXJyb3IsIGNyZWF0ZV9lcnJvcjsKJiM0MzsJdW1vZGVfdCBtb2RlOwomIzQzOwlib29sIGdvdF93cml0ZTsKIAotCWlmICh1bmxpa2VseShJU19ERUFERElSKGRpcl9pbm9kZSkpKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKJiM0MztyZXRyeToKJiM0MzsJb3Blbl9mbGFnID0gb3AtJmd0O29wZW5fZmxhZzsKJiM0MzsJZ290X3dyaXRlID0gZmFsc2U7CiYjNDM7CW1vZGUgPSBvcC0mZ3Q7bW9kZTsKJiM0MzsJY3JlYXRlX2Vycm9yID0gMDsKJiM0MzsKJiM0MzsJaWYgKG9wZW5fZmxhZyAmYW1wOyAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHsKJiM0MzsJCWdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC0mZ3Q7cGF0aC5tbnQpOwomIzQzOwkJLyoKJiM0MzsJCSAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGgKJiM0MzsJCSAqIGEgZGlmZmVyZW50IGVycm9yOyBsZXQgbG9va3VwX29wZW4oKSBkZWNpZGU7IHdlJiMzOTtsbCBiZQomIzQzOwkJICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LgomIzQzOwkJICovCiYjNDM7CX0KJiM0MzsJaWYgKG9wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKQomIzQzOwkJaW5vZGVfbG9jayhkaXJfaW5vZGUpOwomIzQzOwllbHNlCiYjNDM7CQlpbm9kZV9sb2NrX3NoYXJlZChkaXJfaW5vZGUpOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSkgewomIzQzOwkJZGVudHJ5ID0gRVJSX1BUUigtRU5PRU5UKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAKIAlmaWxlLSZndDtmX21vZGUgJmFtcDs9IH5GTU9ERV9DUkVBVEVEOwogCWRlbnRyeSA9IGRfbG9va3VwKGRpciwgJmFtcDtuZC0mZ3Q7bGFzdCk7CkBAIC00NDE3LDcgJiM0Mzs0NDM5LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJaWYgKCFkZW50cnkpIHsKIAkJCWRlbnRyeSA9IGRfYWxsb2NfcGFyYWxsZWwoZGlyLCAmYW1wO25kLSZndDtsYXN0KTsKIAkJCWlmIChJU19FUlIoZGVudHJ5KSkKLQkJCQlyZXR1cm4gZGVudHJ5OwomIzQzOwkJCQlnb3RvIG91dDsKIAkJfQogCQlpZiAoZF9pbl9sb29rdXAoZGVudHJ5KSkKIAkJCWJyZWFrOwpAQCAtNDQzMyw3ICYjNDM7NDQ1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsCiAJfQogCWlmIChkZW50cnktJmd0O2RfaW5vZGUpIHsKIAkJLyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtJmd0O29wZW4gKi8KLQkJcmV0dXJuIGRlbnRyeTsKJiM0MzsJCWdvdG8gb3V0OwogCX0KIAogCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkKQEAgLTQ0NTQsNyAmIzQzOzQ0NzYsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLAogCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkgewogCQlpZiAob3Blbl9mbGFnICZhbXA7IE9fRVhDTCkKIAkJCW9wZW5fZmxhZyAmYW1wOz0gfk9fVFJVTkM7Ci0JCW1vZGUgPSB2ZnNfcHJlcGFyZV9tb2RlKGlkbWFwLCBkaXItJmd0O2RfaW5vZGUsIG1vZGUsIG1vZGUsIG1vZGUpOwomIzQzOwkJbW9kZSA9IHZmc19wcmVwYXJlX21vZGUoaWRtYXAsIGRpcl9pbm9kZSwgbW9kZSwgbW9kZSwgbW9kZSk7CiAJCWlmIChsaWtlbHkoZ290X3dyaXRlKSkKIAkJCWNyZWF0ZV9lcnJvciA9IG1heV9vX2NyZWF0ZShpZG1hcCwgJmFtcDtuZC0mZ3Q7cGF0aCwKIAkJCQkJCSAgICBkZW50cnksIG1vZGUpOwpAQCAtNDQ2OSw3ICYjNDM7NDQ5MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsCiAJCWRlbnRyeSA9IGF0b21pY19vcGVuKCZhbXA7bmQtJmd0O3BhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTsKIAkJaWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgJmFtcDsmYW1wOyBkZW50cnkgPT0gRVJSX1BUUigtRU5PRU5UKSkKIAkJCWRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTsKLQkJcmV0dXJuIGRlbnRyeTsKJiM0MzsJCWdvdG8gb3V0OwogCX0KIAogCWlmIChkX2luX2xvb2t1cChkZW50cnkpKSB7CkBAIC00NDg5LDcgJiM0Mzs0NTExLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkvKiBOZWdhdGl2ZSBkZW50cnksIGp1c3QgY3JlYXRlIHRoZSBmaWxlICovCiAJaWYgKCFkZW50cnktJmd0O2RfaW5vZGUgJmFtcDsmYW1wOyAob3Blbl9mbGFnICZhbXA7IE9fQ1JFQVQpKSB7CiAJCS8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqLwotCQllcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7CiYjNDM7CQllcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsICZhbXA7ZGVsZWdhdGVkX2lub2RlKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfZHB1dDsKIApAQCAtNDUwOCwxMyAmIzQzOzQ1MzAsMTA4IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsCiAJCWVycm9yID0gY3JlYXRlX2Vycm9yOwogCQlnb3RvIG91dF9kcHV0OwogCX0KJiM0MztvdXQ6CiYjNDM7CWlmICghSVNfRVJSKGRlbnRyeSkpIHsKJiM0MzsJCWlmIChmaWxlLSZndDtmX21vZGUgJmFtcDsgRk1PREVfQ1JFQVRFRCkKJiM0MzsJCQlmc25vdGlmeV9jcmVhdGUoZGlyX2lub2RlLCBkZW50cnkpOwomIzQzOwkJaWYgKGZpbGUtJmd0O2ZfbW9kZSAmYW1wOyBGTU9ERV9PUEVORUQpCiYjNDM7CQkJZnNub3RpZnlfb3BlbihmaWxlKTsKJiM0MzsJfQomIzQzOwlpZiAoKG9wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKSB8fCBjcmVhdGVfZXJyb3IpCiYjNDM7CQlpbm9kZV91bmxvY2soZGlyX2lub2RlKTsKJiM0MzsJZWxzZQomIzQzOwkJaW5vZGVfdW5sb2NrX3NoYXJlZChkaXJfaW5vZGUpOwomIzQzOwomIzQzOwlpZiAoZ290X3dyaXRlKQomIzQzOwkJbW50X2Ryb3Bfd3JpdGUobmQtJmd0O3BhdGgubW50KTsKJiM0MzsKJiM0MzsJaWYgKGlzX2RlbGVnYXRlZCgmYW1wO2RlbGVnYXRlZF9pbm9kZSkpIHsKJiM0MzsJCS8qIE11c3QgaGF2ZSBjb21lIHRocm91Z2ggb3V0X2RwdXQ6IGRlbnRyeSBpcyBhbiBFUlJfUFRSKCkgKi8KJiM0MzsJCWVycm9yID0gYnJlYWtfZGVsZWdfd2FpdCgmYW1wO2RlbGVnYXRlZF9pbm9kZSk7CiYjNDM7CiYjNDM7CQlpZiAoIWVycm9yKQomIzQzOwkJCWdvdG8gcmV0cnk7CiYjNDM7CQlkZW50cnkgPSBFUlJfUFRSKGVycm9yKTsKJiM0MzsJfQomIzQzOwogCXJldHVybiBkZW50cnk7CiAKIG91dF9kcHV0OgogCWRwdXQoZGVudHJ5KTsKLQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiYjNDM7CWRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpOwomIzQzOwlnb3RvIG91dDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHZmc19sb29rdXBfb3BlbiAtIG9wZW4gYW5kIHBvc3NpYmx5IGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZQomIzQzOyAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGUKJiM0MzsgKiBAbGFzdDogZmluYWwgY29tcG9uZW50IG9mIGZpbGUgbmFtZQomIzQzOyAqIEBvcGVuX2ZsYWc6IE9fZmxhZ3MKJiM0MzsgKiBAbW9kZTogaW5pdGlhbCBwZXJtaXNzaW9ucyBmb3IgZmlsZQomIzQzOyAqCiYjNDM7ICogT3BlbiBhIGZpbGUgYWZ0ZXIgbG9va3VwIGFuZC9vciBjcmVhdGUuICBUaGlzIHByb3ZpZGVzIHNpbWlsYXIKJiM0MzsgKiBmdW5jdGlvbmFsaXR5IG9wZW5fbGFzdF9sb29rdXBzKCkgZm9yIGluLWtlcm5lbCB1c2VycywgcGFydGljdWxhcmx5CiYjNDM7ICogbmZzZC4KJiM0MzsgKiBJdCB1c2VzIC0mZ3Q7YXRvbWljX29wZW4gb3IgLSZndDtsb29rdXAgLyAtJmd0O2NyZWF0ZSAvIC0mZ3Q7b3BlbiBhcyBhcHByb3ByaWF0ZS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IHRoZSBvcGVuZWQgc3RydWN0IGZpbGUsIG9yIGFuIGVycm9yLgomIzQzOyAqICAgICBDYWxsZXIgc2hvdWxkIGNoZWNrIHRoYXQgdGhlIGZpbGUgb3BlbmVkIGlzIHJlZ3VsYXIsCiYjNDM7ICogICAgIGlmIHNvbWV0aGluZyBlbHNlIHdhcyBmb3VuZCwgYW4gT19QQVRIIGZpbGUgaXMgcHJvdmlkZWQuCiYjNDM7ICogICAgIENhbGxlciBzaG91bGQgdmFsaWRhdGUgRk1PREVfQ1JFQVRFRCBpZiBPX0VYQ0wgd2FzIHJlcXVlc3RlZC4KJiM0MzsgKi8KJiM0MztzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LAomIzQzOwkJCSAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKQomIzQzO3sKJiM0MzsJc3RydWN0IGZpbGUgKmZpbGUgX19mcmVlKGZwdXQpID0gTlVMTDsKJiM0MzsJc3RydWN0IG5hbWVpZGF0YSBuZCA9IHt9OwomIzQzOwlzdHJ1Y3Qgb3Blbl9mbGFncyBvcCA9IHt9OwomIzQzOwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiYjNDM7CWludCBlcnJvciA9IDA7CiYjNDM7CiYjNDM7CVdBUk5fT05DRShtb2RlICZhbXA7ICFTX0lBTExVR08sICYjMzQ7bW9kZSBtdXN0IG9ubHkgaGF2ZSBwZXJtaXNzaW9uIGJpdHMmIzM0Oyk7CiYjNDM7CWVycm9yID0gbG9va3VwX25vcGVybV9jb21tb24obGFzdCwgcGFyZW50LSZndDtkZW50cnkpOwomIzQzOwlpZiAoZXJyb3IpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiYjNDM7CiYjNDM7CWZpbGUgPSBhbGxvY19lbXB0eV9maWxlKG9wZW5fZmxhZywgY3VycmVudF9jcmVkKCkpOwomIzQzOwlpZiAoSVNfRVJSKGZpbGUpKQomIzQzOwkJcmV0dXJuIGZpbGU7CiYjNDM7CiYjNDM7CW5kLnBhdGggPSAqcGFyZW50OwomIzQzOwluZC5sYXN0ID0gKmxhc3Q7CiYjNDM7CW5kLmZsYWdzID0gTE9PS1VQX09QRU47CiYjNDM7CWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkgewomIzQzOwkJbmQuZmxhZ3MgfD0gTE9PS1VQX0NSRUFURTsKJiM0MzsJCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19FWENMKQomIzQzOwkJCW5kLmZsYWdzIHw9IExPT0tVUF9FWENMOwomIzQzOwl9CiYjNDM7CW9wLm9wZW5fZmxhZyA9IG9wZW5fZmxhZzsKJiM0MzsJb3AubW9kZSA9IFNfSUZSRUcgfCBtb2RlOwomIzQzOwlkZW50cnkgPSBsb29rdXBfb3BlbigmYW1wO25kLCBmaWxlLCAmYW1wO29wKTsKJiM0MzsKJiM0MzsJaWYgKElTX0VSUihkZW50cnkpKQomIzQzOwkJcmV0dXJuIEVSUl9DQVNUKGRlbnRyeSk7CiYjNDM7CiYjNDM7CWlmIChkX3JlYWxseV9pc19uZWdhdGl2ZShkZW50cnkpKSB7CiYjNDM7CQllcnJvciA9IC1FTk9FTlQ7CiYjNDM7CX0gZWxzZSBpZiAoIShmaWxlLSZndDtmX21vZGUgJmFtcDsgRk1PREVfT1BFTkVEKSkgewomIzQzOwkJbmQucGF0aC5kZW50cnkgPSBkZW50cnk7CiYjNDM7CQlpZiAoIWRfaXNfcmVnKGRlbnRyeSkpCiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBhbGxvdyBjYWxsZXIgdG8gc2VlIGRlbnRyeSBhbmQgY2hvb3NlCiYjNDM7CQkJICogY29ycmVjdCBlcnJvciBjb2RlCiYjNDM7CQkJICovCiYjNDM7CQkJZmlsZS0mZ3Q7Zl9mbGFncyB8PSBPX1BBVEg7CiYjNDM7CQllcnJvciA9IHZmc19vcGVuKCZhbXA7bmQucGF0aCwgZmlsZSk7CiYjNDM7CX0KJiM0MzsJZHB1dChkZW50cnkpOwomIzQzOwomIzQzOwlpZiAoZXJyb3IpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CiYjNDM7CXJldHVybiBub19mcmVlX3B0cihmaWxlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sICYjMzQ7bmZzZCYjMzQ7KTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgYm9vbCB0cmFpbGluZ19zbGFzaGVzKHN0cnVjdCBuYW1laWRhdGEgKm5kKQogewogCXJldHVybiAoYm9vbCluZC0mZ3Q7bGFzdC5uYW1lW25kLSZndDtsYXN0Lmxlbl07CkBAIC00NTU0LDEwICYjNDM7NDY3MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfZmFzdF9mb3Jfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgaW50IG9wZW5fZmxhZykKIHN0YXRpYyBjb25zdCBjaGFyICpvcGVuX2xhc3RfbG9va3VwcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZCwKIAkJICAgc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcCkKIHsKLQlzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTsKLQlzdHJ1Y3QgZGVudHJ5ICpkaXIgPSBuZC0mZ3Q7cGF0aC5kZW50cnk7CiAJaW50IG9wZW5fZmxhZyA9IG9wLSZndDtvcGVuX2ZsYWc7Ci0JYm9vbCBnb3Rfd3JpdGUgPSBmYWxzZTsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJY29uc3QgY2hhciAqcmVzOwogCkBAIC00NTg2LDQ0ICYjNDM7NDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsCiAJCQkJcmV0dXJuIEVSUl9QVFIoLUVDSElMRCk7CiAJCX0KIAl9Ci1yZXRyeToKLQlpZiAob3Blbl9mbGFnICZhbXA7IChPX0NSRUFUIHwgT19UUlVOQyB8IE9fV1JPTkxZIHwgT19SRFdSKSkgewotCQlnb3Rfd3JpdGUgPSAhbW50X3dhbnRfd3JpdGUobmQtJmd0O3BhdGgubW50KTsKLQkJLyoKLQkJICogZG8gX25vdF8gZmFpbCB5ZXQgLSB3ZSBtaWdodCBub3QgbmVlZCB0aGF0IG9yIGZhaWwgd2l0aAotCQkgKiBhIGRpZmZlcmVudCBlcnJvcjsgbGV0IGxvb2t1cF9vcGVuKCkgZGVjaWRlOyB3ZSYjMzk7bGwgYmUKLQkJICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LgotCQkgKi8KLQl9Ci0JaWYgKG9wZW5fZmxhZyAmYW1wOyBPX0NSRUFUKQotCQlpbm9kZV9sb2NrKGRpci0mZ3Q7ZF9pbm9kZSk7Ci0JZWxzZQotCQlpbm9kZV9sb2NrX3NoYXJlZChkaXItJmd0O2RfaW5vZGUpOwotCWRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCwgZ290X3dyaXRlLCAmYW1wO2RlbGVnYXRlZF9pbm9kZSk7Ci0JaWYgKCFJU19FUlIoZGVudHJ5KSkgewotCQlpZiAoZmlsZS0mZ3Q7Zl9tb2RlICZhbXA7IEZNT0RFX0NSRUFURUQpCi0JCQlmc25vdGlmeV9jcmVhdGUoZGlyLSZndDtkX2lub2RlLCBkZW50cnkpOwotCQlpZiAoZmlsZS0mZ3Q7Zl9tb2RlICZhbXA7IEZNT0RFX09QRU5FRCkKLQkJCWZzbm90aWZ5X29wZW4oZmlsZSk7Ci0JfQotCWlmIChvcGVuX2ZsYWcgJmFtcDsgT19DUkVBVCkKLQkJaW5vZGVfdW5sb2NrKGRpci0mZ3Q7ZF9pbm9kZSk7Ci0JZWxzZQotCQlpbm9kZV91bmxvY2tfc2hhcmVkKGRpci0mZ3Q7ZF9pbm9kZSk7Ci0KLQlpZiAoZ290X3dyaXRlKQotCQltbnRfZHJvcF93cml0ZShuZC0mZ3Q7cGF0aC5tbnQpOwogCi0JaWYgKElTX0VSUihkZW50cnkpKSB7Ci0JCWlmIChpc19kZWxlZ2F0ZWQoJmFtcDtkZWxlZ2F0ZWRfaW5vZGUpKSB7Ci0JCQlpbnQgZXJyb3IgPSBicmVha19kZWxlZ193YWl0KCZhbXA7ZGVsZWdhdGVkX2lub2RlKTsKLQotCQkJaWYgKCFlcnJvcikKLQkJCQlnb3RvIHJldHJ5OwotCQkJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOwotCQl9CiYjNDM7CWRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCk7CiYjNDM7CWlmIChJU19FUlIoZGVudHJ5KSkKIAkJcmV0dXJuIEVSUl9DQVNUKGRlbnRyeSk7Ci0JfQogCiAJaWYgKGZpbGUtJmd0O2ZfbW9kZSAmYW1wOyAoRk1PREVfT1BFTkVEIHwgRk1PREVfQ1JFQVRFRCkpIHsKIAkJZHB1dChuZC0mZ3Q7cGF0aC5kZW50cnkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uYW1laS5oIGIvaW5jbHVkZS9saW51eC9uYW1laS5oCmluZGV4IGViZTZlMjlmN2U5M2JhLi44NmQ2NTdiMjRmYzZhMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uYW1laS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmFtZWkuaApAQCAtOTcsNiAmIzQzOzk3LDkgQEAgc3RydWN0IGRlbnRyeSAqc3RhcnRfY3JlYXRpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCwKIHN0cnVjdCBkZW50cnkgKnN0YXJ0X3JlbW92aW5nX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCQkJICAgICBzdHJ1Y3QgZGVudHJ5ICpjaGlsZCk7CiAKJiM0MztzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LAomIzQzOwkJCSAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKTsKJiM0MzsKIC8qIGVuZF9jcmVhdGluZyAtIGZpbmlzaCBhY3Rpb24gc3RhcnRlZCB3aXRoIHN0YXJ0X2NyZWF0aW5nCiAgKiBAY2hpbGQ6IGRlbnRyeSByZXR1cm5lZCBieSBzdGFydF9jcmVhdGluZygpIG9yIHZmc19ta2RpcigpCiAgKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFZGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvbmFtZWkuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L25hbWVpLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIGhvdyB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSBoYW5kbGVzIGxvb2t1cHMgYW5kIG9wZW5zLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEZyb20gd2hhdCBJIGNhbiBnYXRoZXIsIHRoZSBwYXRjaCBpbnRlcm5hbGl6ZXMgdGhlIGxvY2tpbmcsIHJldHJ5LCBhbmQgYGdvdF93cml0ZWAgbG9naWMgKndpdGhpbiogYGxvb2t1cF9vcGVuYC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZTsgZXNzZW50aWFsbHkgaXQmIzM5O3MgbW92aW5nIHJlc3BvbnNpYmlsaXR5LiBQcmV2aW91c2x5LCBgb3Blbl9sYXN0X2xvb2t1cHNgIHNlZW1zIHRvIGhhdmUgaGFuZGxlZCB0aGF0LCBidXQgbm93IGl0IHNlZW1zIHRvIGNhbGwgYGxvb2t1cF9vcGVuYCBkaXJlY3RseS4KClRoZSBiaWcgdGFrZWF3YXkgaGVyZSwgaG93ZXZlciwgaXMgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbmV3LCAqZXhwb3J0ZWQqIGZ1bmN0aW9uLCBgdmZzX2xvb2t1cF9vcGVuYC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBleHBvcnRlZCBtZWFucyBpdCYjMzk7cyBhdmFpbGFibGUgZm9yIG1vZHVsZXMgdG8gdXNlLCBhbmQgdGhlIGNvbW1lbnQgYWJvdXQgaXQgYmVpbmcgc3BlY2lmaWNhbGx5IGZvciAmIzM0O25mc2QmIzM0OyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IGltcGxpZXMgc29tZSBjaGFuZ2VzIHRvIGhvdyB0aGUgTmV0d29yayBGaWxlIFN5c3RlbSBEYWVtb24gd2lsbCBpbnRlcmFjdCB3aXRoIHRoZSBWRlMuIFRoaXMga2luZCBvZiBjaGFuZ2UgaXMgb2Z0ZW4gZGVsaWNhdGUsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBuZXcgZnVuY3Rpb24gdXNlZCBhbnl3aGVyZSAqZWxzZSogd2l0aGluIHRoZSBrZXJuZWw/IEkmIzM5O2xsIHJ1biBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSBgdmZzX2xvb2t1cF9vcGVuYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGFjdCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gVGhpcyBpcyBjb3JlIFZGUyBjb2RlLCBhZnRlciBhbGwsIHNvIEkmIzM5O2xsIHdhbnQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zmc19sb29rdXBfb3BlbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uYW1laS5jPTQzOTk9c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9uYW1laS5jLTQ1NjUtLyoqXG5mcy9uYW1laS5jOjQ1NjY6ICogdmZzX2xvb2t1cF9vcGVuIC0gb3BlbiBhbmQgcG9zc2libHkgY3JlYXRlIGEgcmVndWxhciBmaWxlXG5mcy9uYW1laS5jLTQ1NjctICogQHBhcmVudDogZGlyZWN0b3J5IHRvIGNvbnRhaW4gZmlsZVxuLS1cbmZzL25hbWVpLmMtNDU4MS0gKi9cbmZzL25hbWVpLmM6NDU4MjpzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LFxuZnMvbmFtZWkuYy00NTgzLVx0XHRcdCAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKVxuLS1cbmZzL25hbWVpLmMtNDYzMi19XG5mcy9uYW1laS5jOjQ2MzM6RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sIFwmIzM0O25mc2RcJiMzNDspO1xuZnMvbmFtZWkuYy00NjM0LVxuLS1cbmluY2x1ZGUvbGludXgvbmFtZWkuaD05Nz1zdHJ1Y3QgZGVudHJ5ICpzdGFydF9yZW1vdmluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuLS1cbmluY2x1ZGUvbGludXgvbmFtZWkuaC05OS1cbmluY2x1ZGUvbGludXgvbmFtZWkuaDoxMDA6c3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcbmluY2x1ZGUvbGludXgvbmFtZWkuaC0xMDEtXHRcdFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NDIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB2ZnNfbG9va3VwX29wZW5gKioKCkFscmlnaHQsIHNvIGB2ZnNfbG9va3VwX29wZW5gIGlzIGV4cG9ydGVkIHNwZWNpZmljYWxseSBmb3IgYG5mc2RgLiBJbnRlcmVzdGluZy4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtzIGEgZGVkaWNhdGVkIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCBwcm9iYWJseSBpc24mIzM5O3QgZ2VuZXJhbGl6ZWQgYmV5b25kIHRoYXQgdXNlIGNhc2UgeWV0LiBUaGF0IGV4cG9ydCBpcyBhIHN0cm9uZyBoaW50LiBIb3dldmVyLCBJIHNob3VsZCBhbHdheXMgYmUgbWV0aWN1bG91cywgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHN1c3BpY2lvbi4gVGltZSB0byBkb3VibGUtY2hlY2sgd2l0aGluIHRoZSBgZnMvbmZzZC9gIGRpcmVjdG9yeS4gTm8gcG9pbnQgaW4gbWFraW5nIGFzc3VtcHRpb25zIOKAkyBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzICphY3R1YWxseSogZW1wbG95ZWQgdGhlcmUgYW5kIG5vd2hlcmUgZWxzZSBpbiB0aGUgd2lkZXIga2VybmVsIGNvZGViYXNlIGJlZm9yZSBkcmF3aW5nIGFueSBzb2xpZCBjb25jbHVzaW9ucy4gVGhpcyBxdWljayBjaGVjayB3aWxsIGVpdGhlciBjb25maXJtIHRoZSBpbnRlbmRlZCB1c2FnZSBvciByZXZlYWwgYSBwb3RlbnRpYWwgcmVmYWN0b3Jpbmcgb3IgZnV0dXJlIHVzZS1jYXNlIEkgbWlnaHQgaGF2ZSBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZnNfbG9va3VwX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZnNkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgJmFtcDsgQ29yZSBGdW5jdGlvbmFsaXR5IEltcGFjdCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzbiYjMzk7dCAqZGlyZWN0bHkqIGltcGFjdGluZyBhbnl0aGluZyB3aXRoaW4gYGZzL25mc2RgIGF0IHRoZSBtb21lbnQsIHdoaWNoIGluaXRpYWxseSBnYXZlIG1lIGEgYml0IG9mIHBhdXNlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHNldHRpbmcgdGhlIHN0YWdlLCBpbnRyb2R1Y2luZyBhbiBBUEkgbGlrZWx5IGZvciBhIGZ1dHVyZSBwYXRjaCwgd2hpY2ggaXMgY29tbW9uLiBCdXQgdGhlbi4uLiBpdCBtb2RpZmllcyBgbG9va3VwX29wZW5gIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLiBCb3RoIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIFZGUyBmdW5jdGlvbnMsIGhlYXZpbHkgdXNlZCBjb3JlIGNvbXBvbmVudHMuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBrbm93IHRob3NlIGZ1bmN0aW9ucyBpbnRpbWF0ZWx5OyB0aGV5JiMzOTtyZSB0aGUgd29ya2hvcnNlcyB3aXRoaW4gdGhlIGBmcy9gIG5hbWVzcGFjZS4KClNwZWNpZmljYWxseSwgYG9wZW5fbGFzdF9sb29rdXBzYCBpcyByaWdodCBpbiB0aGUgdGhpY2sgb2YgdGhpbmdzIOKAkyBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIGBkb19maWxwX29wZW5gIGFuZCBieSBgcGF0aF9vcGVuYXRgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgbWlub3IgdHdlYWs7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMuIEl0IHRvdWNoZXMgdGhlIHZlcnkgd2F5IGZpbGVzIGFyZSBvcGVuZWQgYW5kIHBhdGhzIGFyZSByZXNvbHZlZC4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9uIHRoaXMuCgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXIuIFRpbWUgdG8gZGl2ZSBpbnRvIGBmcy9uYW1laS5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgY29kZSBpbiBib3RoIGBvcGVuX2xhc3RfbG9va3Vwc2AgYW5kIGBsb29rdXBfb3BlbmAgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGNoYW5nZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3Blbl9sYXN0X2xvb2t1cHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uYW1laS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25hbWVpLmM9NDM5OT1zdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL25hbWVpLmMtNDU3Mi0gKiBPcGVuIGEgZmlsZSBhZnRlciBsb29rdXAgYW5kL29yIGNyZWF0ZS4gIFRoaXMgcHJvdmlkZXMgc2ltaWxhclxuZnMvbmFtZWkuYzo0NTczOiAqIGZ1bmN0aW9uYWxpdHkgb3Blbl9sYXN0X2xvb2t1cHMoKSBmb3IgaW4ta2VybmVsIHVzZXJzLCBwYXJ0aWN1bGFybHlcbmZzL25hbWVpLmMtNDU3NC0gKiBuZnNkLlxuLS1cbmZzL25hbWVpLmM9NDY0MD1zdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX2Zhc3RfZm9yX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIGludCBvcGVuX2ZsYWcpXG4tLVxuZnMvbmFtZWkuYy00NjcwLVxuZnMvbmFtZWkuYzo0NjcxOnN0YXRpYyBjb25zdCBjaGFyICpvcGVuX2xhc3RfbG9va3VwcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZCxcbmZzL25hbWVpLmMtNDY3Mi1cdFx0ICAgc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcbi0tXG5mcy9uYW1laS5jPTQ5MTM9c3RhdGljIHN0cnVjdCBmaWxlICpwYXRoX29wZW5hdChzdHJ1Y3QgbmFtZWlkYXRhICpuZCxcbi0tXG5mcy9uYW1laS5jLTQ5MjktXHRcdHdoaWxlICghKGVycm9yID0gbGlua19wYXRoX3dhbGsocywgbmQpKSBcdTAwMjZcdTAwMjZcbmZzL25hbWVpLmM6NDkzMDpcdFx0ICAgICAgIChzID0gb3Blbl9sYXN0X2xvb2t1cHMobmQsIGZpbGUsIG9wKSkgIT0gTlVMTClcbmZzL25hbWVpLmMtNDkzMS1cdFx0XHQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk3OAoJCQkJCQkJb3V0cHV0OiAxMTAKCQkJCQkJCXRob3VnaHRzOiA3NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgUGF0aCBMb29rdXAgYW5kIEZpbGUgT3BlbmluZyoqCgpPa2F5LCBoZXJlJiMzOTtzIG15IGxpbmUgb2YgdGhpbmtpbmcgb24gaG93IHRvIGJlc3QgZnV6eiB0aGlzIHBhdGNoLiBGaXJzdCwgSSBzZWUgdGhhdCBgb3Blbl9sYXN0X2xvb2t1cHNgIGlzIGRlZmluaXRlbHkgcmVhY2hlZCBieSBgcGF0aF9vcGVuYXRgLiBHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucywgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGZvY3VzaW5nIG9uIGFyZSBgbG9va3VwX29wZW5gLCBgdmZzX2xvb2t1cF9vcGVuYCwgYW5kIGBvcGVuX2xhc3RfbG9va3Vwc2AuCgpUaGUgcmVhbCBkaWxlbW1hIGlzIHRoYXQgYm90aCBgb3Blbl9sYXN0X2xvb2t1cHNgIGFuZCBgbG9va3VwX29wZW5gIGFyZSAqaG90LXBhdGgqIGZ1bmN0aW9ucywgY2FsbGVkIG9uIGFsbW9zdCBldmVyeSBzaW5nbGUgZmlsZSBvcGVuLiBUaGF0JiMzOTtzIGEgcHJvYmxlbSwgYmVjYXVzZSBJIG5lZWQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emluZyBkaXN0cmlidXRpb24gdG93YXJkcyB0aGVzZSBnZW5lcmljIGZ1bmN0aW9ucy4gTGlzdGluZyB0aGVtIHdvdWxkIG1ha2Ugc3l6a2FsbGVyIHByaW9yaXRpemUgdGhlbSB0b28gaGVhdmlseSBhbmQgbWlnaHQgbWlzcyBtb3JlIGludGVyZXN0aW5nIGNvZGUgcGF0aHMuIFRoZSBwcm9tcHQgc2F5cyBJIHNob3VsZCBhdm9pZCB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnMuCgpJbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBub3QgbGlzdGluZyBhbnl0aGluZywgd2hpY2ggd291bGQgbGV0IHN5emthbGxlciBmdXp6IGFzIGl0IG5vcm1hbGx5IGRvZXMuICBCdXQgdGhlIHBhdGNoIGNsZWFybHkgY2VudGVycyBvbiBjaGFuZ2VzIHRvIGBsb29rdXBfb3BlbmAsIHdoaWNoIGFsc28gc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSB0YXJnZXQuIEkgY291bGQgbGlzdCBgdmZzX2xvb2t1cF9vcGVuYCwgc2luY2UgaXQmIzM5O3MgYSBuZXcgZnVuY3Rpb24gYWRkZWQgYnkgdGhlIHBhdGNoIGFuZCB3b24mIzM5O3QgYmUgaGl0IG90aGVyd2lzZS4gQnV0IGl0JiMzOTtzIGN1cnJlbnRseSB1bnVzZWQsIHNvIHN5emthbGxlciB3b24mIzM5O3QgZXZlbiB0b3VjaCBpdC4KCkkmIzM5O20gd3Jlc3RsaW5nIHdpdGggd2hldGhlciB0byBsaXN0IGBsb29rdXBfb3BlbmAgYXQgYWxsLiBMaXN0aW5nIGEgaG90IGZ1bmN0aW9uIGNhbiBza2V3IHRoaW5ncy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGxvb2t1cF9vcGVuYCBhbmQgYG9wZW5fbGFzdF9sb29rdXBzYCBhbmQgYWRkcyBgdmZzX2xvb2t1cF9vcGVuYC4gU2luY2UgdGhlIGBsb29rdXBfb3BlbmAgaXMgbW9kaWZpZWQgaXQmIzM5O3Mgc3RpbGwgdGhlIG1haW4gdGFyZ2V0LiBJIGNvdWxkIGp1c3QgbGlzdCBgdmZzX2xvb2t1cF9vcGVuYCBidXQgaXQgaXMgdW51c2VkLgoKVGhlIHBhdGNoIG1lbnRpb25zIHRoZSBmdW5jdGlvbnMgYGxvb2t1cF9vcGVuYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXAsIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLCBjYWxsZWQgZm9yIHRoZSBsYXN0IGNvbXBvbmVudCBvZiBhIHBhdGguCgpJJiMzOTt2ZSBnb3QgdG8gbWFrZSBhIGNob2ljZS4gSSBjb3VsZCBqdXN0IGxpc3QgYHZmc19sb29rdXBfb3BlbmAsIHdoaWNoIHdvbiYjMzk7dCBkbyBhbnl0aGluZyBiZWNhdXNlIGl0JiMzOTtzIHVudXNlZCwgb3IgSSBjb3VsZCBsaXN0IG5vdGhpbmcgYW5kIGxldCB0aGUgZnV6emVyIHdvcmsgYXMgaXQgZG9lcyBub3JtYWxseS4gQnV0IGBsb29rdXBfb3BlbmAgaXMgdGhlIGNvcmUgb2YgdGhpcyBwYXRjaCwgZXZlbiBpZiBpdCYjMzk7cyBob3QuIFRoZSBwcm9tcHQgc2F5cyB0byAmIzM0O2V4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuIFNob3VsZCBhdm9pZCBob3QtcGF0aCBmdW5jdGlvbnMmIzM0Oy4KSW4gdGhhdCBjYXNlLCBJIHdpbGwganVzdCBsaXN0IGB2ZnNfbG9va3VwX29wZW5gIGFzIG15IGZvY3VzIHN5bWJvbCwgZXZlbiBpZiBpdCYjMzk7cyBub3QgaGl0LCBqdXN0IHRvIGJlIGNvbnNlcnZhdGl2ZS4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgdGhlIGBsb29rdXBfb3BlbmAgZnVuY3Rpb24gaXMgc2lnbmlmaWNhbnRseSBjaGFuZ2VkLCBub3cgaGFuZGxpbmcgYGlub2RlX2xvY2tgLCBgbW50X3dhbnRfd3JpdGVgLCBgdHJ5X2JyZWFrX2RlbGVnYCwgZXRjLiBJdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgcGF0Y2gsIGV2ZW4gaWYgaXQmIzM5O3MgYSBsaXR0bGUgaG90LCBhbmQgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gZmlsZSBvcGVuaW5nLCBhbmQgbm90IGFzIGhvdCBhcyBga21hbGxvY2Agb3IgYHNwaW5fbG9ja2AuCgpJJiMzOTtsbCBpbmNsdWRlIGBsb29rdXBfb3BlbmAgaW4gdGhlIGxpc3QsIGFsb25nIHdpdGggYHZmc19sb29rdXBfb3BlbmAsIGFuZCB3aGlsZSBpdCBpcyBzb21ld2hhdCBvZiBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBJJiMzOTttIGNvbWZvcnRhYmxlIGluY2x1ZGluZyBpdC4gSXQgbWFrZXMgc2Vuc2UsIGFzIGEgaGlnaCB2YWx1ZSB0YXJnZXQuCgpUaGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG5lZWRlZCwgYmVjYXVzZSB0aGlzIGlzIGNvcmUgVkZTIGNvZGUuIEl0JiMzOTtzIGluIGBmcy9uYW1laS5jYC4KCioqTXkgRmluYWwgUmVjb21tZW5kYXRpb246KioKCkkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuCgpNeSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlOiAgYGxvb2t1cF9vcGVuYCwgYHZmc19sb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2AuCgpgRW5hYmxlQ29uZmlnc2AgcmVtYWlucyBhbiBlbXB0eSBsaXN0IGBbXWAuCgpNeSByZWFzb25pbmcgaXMgdGhpczogVGhpcyBwYXRjaCByZWZhY3RvcnMgY29yZSBWRlMgcGF0aCBsb29rdXAgYW5kIGZpbGUgb3BlbmluZyBsb2dpYy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyB0aGUgY2VudHJhbCBmdW5jdGlvbnMgYGxvb2t1cF9vcGVuYCBhbmQgYG9wZW5fbGFzdF9sb29rdXBzYCwgYW5kIGludHJvZHVjZXMgYSBuZXcgZXhwb3J0ZWQgZnVuY3Rpb24gYHZmc19sb29rdXBfb3BlbmAuIFRoaXMgZnVuZGFtZW50YWxseSBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzICphbGwqIGZpbGVzeXN0ZW1zLiBHaXZlbiB0aGVzZSBjaGFuZ2VzLCB0aGlzIHJlZmFjdG9yaW5nIGlzIGEgaGlnaC12YWx1ZSB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDAwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDt2ZnNfbG9va3VwX29wZW4mIzM0OywKICAgICYjMzQ7b3Blbl9sYXN0X2xvb2t1cHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xvb2t1cF9vcGVuJiMzNDssCiAgICAmIzM0O3Zmc19sb29rdXBfb3BlbiYjMzQ7LAogICAgJiMzNDtvcGVuX2xhc3RfbG9va3VwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgY29yZSBWRlMgcGF0aCBsb29rdXAgYW5kIGZpbGUgb3BlbmluZyBsb2dpYyAoYGxvb2t1cF9vcGVuYCwgYG9wZW5fbGFzdF9sb29rdXBzYCkgYW5kIGludHJvZHVjZXMgYSBuZXcgZXhwb3J0ZWQgZnVuY3Rpb24gYHZmc19sb29rdXBfb3BlbmAuIFRoaXMgYWZmZWN0cyBmaWxlIGNyZWF0aW9uIGFuZCBvcGVuaW5nIGFjcm9zcyBhbGwgZmlsZXN5c3RlbXMgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMDoxODoyNi4wMTY5NjY3ODNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjczNTcyMzI1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29rdXBfb3BlblwiLFxuICAgIFwidmZzX2xvb2t1cF9vcGVuXCIsXG4gICAgXCJvcGVuX2xhc3RfbG9va3Vwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBjb3JlIFZGUyBwYXRoIGxvb2t1cCBhbmQgZmlsZSBvcGVuaW5nIGxvZ2ljIChgbG9va3VwX29wZW5gLCBgb3Blbl9sYXN0X2xvb2t1cHNgKSBhbmQgaW50cm9kdWNlcyBhIG5ldyBleHBvcnRlZCBmdW5jdGlvbiBgdmZzX2xvb2t1cF9vcGVuYC4gVGhpcyBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzIGFsbCBmaWxlc3lzdGVtcyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6MjYuMDE2OTcyOTEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI0OTExNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNzFiNTE4ZmU2NTU5NTUxNGI3ODdmMDlmMWNkMjZiNWE1NzUyNDJkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDA6MTg6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbmFtZWkuYyBiL2ZzL25hbWVpLmNcXG5pbmRleCA3ZWFkM2RiNTViZTIzOS4uNjBkZGRmN2I5N2FhMjIgMTAwNjQ0XFxuLS0tIGEvZnMvbmFtZWkuY1xcbisrKyBiL2ZzL25hbWVpLmNcXG5AQCAtNDM5NywxOSArNDM5Nyw0MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeVxcbiAgKiBBbiBlcnJvciBjb2RlIGlzIHJldHVybmVkIG9uIGZhaWx1cmUuXFxuICAqL1xcbiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbi1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcCxcXG4tXFx0XFx0XFx0XFx0ICBib29sIGdvdF93cml0ZSwgc3RydWN0IGRlbGVnYXRlZF9pbm9kZSAqZGVsZWdhdGVkX2lub2RlKVxcbitcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcXG4ge1xcbitcXHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcXG4gXFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXA7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmRpciA9IG5kLVxcdTAwM2VwYXRoLmRlbnRyeTtcXG4gXFx0c3RydWN0IGlub2RlICpkaXJfaW5vZGUgPSBkaXItXFx1MDAzZWRfaW5vZGU7XFxuLVxcdGludCBvcGVuX2ZsYWcgPSBvcC1cXHUwMDNlb3Blbl9mbGFnO1xcbitcXHRpbnQgb3Blbl9mbGFnO1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XFxuLVxcdGludCBlcnJvciwgY3JlYXRlX2Vycm9yID0gMDtcXG4tXFx0dW1vZGVfdCBtb2RlID0gb3AtXFx1MDAzZW1vZGU7XFxuK1xcdGludCBlcnJvciwgY3JlYXRlX2Vycm9yO1xcbitcXHR1bW9kZV90IG1vZGU7XFxuK1xcdGJvb2wgZ290X3dyaXRlO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KElTX0RFQURESVIoZGlyX2lub2RlKSkpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xcbityZXRyeTpcXG4rXFx0b3Blbl9mbGFnID0gb3AtXFx1MDAzZW9wZW5fZmxhZztcXG4rXFx0Z290X3dyaXRlID0gZmFsc2U7XFxuK1xcdG1vZGUgPSBvcC1cXHUwMDNlbW9kZTtcXG4rXFx0Y3JlYXRlX2Vycm9yID0gMDtcXG4rXFxuK1xcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHtcXG4rXFx0XFx0Z290X3dyaXRlID0gIW1udF93YW50X3dyaXRlKG5kLVxcdTAwM2VwYXRoLm1udCk7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcXG4rXFx0XFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcXG4rXFx0XFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LlxcbitcXHRcXHQgKi9cXG4rXFx0fVxcbitcXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG4rXFx0XFx0aW5vZGVfbG9jayhkaXJfaW5vZGUpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGlub2RlX2xvY2tfc2hhcmVkKGRpcl9pbm9kZSk7XFxuK1xcbitcXHRpZiAodW5saWtlbHkoSVNfREVBRERJUihkaXJfaW5vZGUpKSkge1xcbitcXHRcXHRkZW50cnkgPSBFUlJfUFRSKC1FTk9FTlQpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXG4gXFx0ZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjY9IH5GTU9ERV9DUkVBVEVEO1xcbiBcXHRkZW50cnkgPSBkX2xvb2t1cChkaXIsIFxcdTAwMjZuZC1cXHUwMDNlbGFzdCk7XFxuQEAgLTQ0MTcsNyArNDQzOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdGlmICghZGVudHJ5KSB7XFxuIFxcdFxcdFxcdGRlbnRyeSA9IGRfYWxsb2NfcGFyYWxsZWwoZGlyLCBcXHUwMDI2bmQtXFx1MDAzZWxhc3QpO1xcbiBcXHRcXHRcXHRpZiAoSVNfRVJSKGRlbnRyeSkpXFxuLVxcdFxcdFxcdFxcdHJldHVybiBkZW50cnk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKVxcbiBcXHRcXHRcXHRicmVhaztcXG5AQCAtNDQzMyw3ICs0NDU1LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0fVxcbiBcXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2lub2RlKSB7XFxuIFxcdFxcdC8qIENhY2hlZCBwb3NpdGl2ZSBkZW50cnk6IHdpbGwgb3BlbiBpbiBmX29wLVxcdTAwM2VvcGVuICovXFxuLVxcdFxcdHJldHVybiBkZW50cnk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG5AQCAtNDQ1NCw3ICs0NDc2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0aWYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpIHtcXG4gXFx0XFx0aWYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fRVhDTClcXG4gXFx0XFx0XFx0b3Blbl9mbGFnIFxcdTAwMjY9IH5PX1RSVU5DO1xcbi1cXHRcXHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyLVxcdTAwM2VkX2lub2RlLCBtb2RlLCBtb2RlLCBtb2RlKTtcXG4rXFx0XFx0bW9kZSA9IHZmc19wcmVwYXJlX21vZGUoaWRtYXAsIGRpcl9pbm9kZSwgbW9kZSwgbW9kZSwgbW9kZSk7XFxuIFxcdFxcdGlmIChsaWtlbHkoZ290X3dyaXRlKSlcXG4gXFx0XFx0XFx0Y3JlYXRlX2Vycm9yID0gbWF5X29fY3JlYXRlKGlkbWFwLCBcXHUwMDI2bmQtXFx1MDAzZXBhdGgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBkZW50cnksIG1vZGUpO1xcbkBAIC00NDY5LDcgKzQ0OTEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRkZW50cnkgPSBhdG9taWNfb3BlbihcXHUwMDI2bmQtXFx1MDAzZXBhdGgsIGRlbnRyeSwgZmlsZSwgb3Blbl9mbGFnLCBtb2RlKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGNyZWF0ZV9lcnJvcikgXFx1MDAyNlxcdTAwMjYgZGVudHJ5ID09IEVSUl9QVFIoLUVOT0VOVCkpXFxuIFxcdFxcdFxcdGRlbnRyeSA9IEVSUl9QVFIoY3JlYXRlX2Vycm9yKTtcXG4tXFx0XFx0cmV0dXJuIGRlbnRyeTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKSB7XFxuQEAgLTQ0ODksNyArNDUxMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdC8qIE5lZ2F0aXZlIGRlbnRyeSwganVzdCBjcmVhdGUgdGhlIGZpbGUgKi9cXG4gXFx0aWYgKCFkZW50cnktXFx1MDAzZWRfaW5vZGUgXFx1MDAyNlxcdTAwMjYgKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpKSB7XFxuIFxcdFxcdC8qIGJ1dCBicmVhayB0aGUgZGlyZWN0b3J5IGxlYXNlIGZpcnN0ISAqL1xcbi1cXHRcXHRlcnJvciA9IHRyeV9icmVha19kZWxlZyhkaXJfaW5vZGUsIExFQVNFX0JSRUFLX0RJUl9DUkVBVEUsIGRlbGVnYXRlZF9pbm9kZSk7XFxuK1xcdFxcdGVycm9yID0gdHJ5X2JyZWFrX2RlbGVnKGRpcl9pbm9kZSwgTEVBU0VfQlJFQUtfRElSX0NSRUFURSwgXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XFxuIFxcdFxcdGlmIChlcnJvcilcXG4gXFx0XFx0XFx0Z290byBvdXRfZHB1dDtcXG4gXFxuQEAgLTQ1MDgsMTMgKzQ1MzAsMTA4IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdGVycm9yID0gY3JlYXRlX2Vycm9yO1xcbiBcXHRcXHRnb3RvIG91dF9kcHV0O1xcbiBcXHR9XFxuK291dDpcXG4rXFx0aWYgKCFJU19FUlIoZGVudHJ5KSkge1xcbitcXHRcXHRpZiAoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfQ1JFQVRFRClcXG4rXFx0XFx0XFx0ZnNub3RpZnlfY3JlYXRlKGRpcl9pbm9kZSwgZGVudHJ5KTtcXG4rXFx0XFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX09QRU5FRClcXG4rXFx0XFx0XFx0ZnNub3RpZnlfb3BlbihmaWxlKTtcXG4rXFx0fVxcbitcXHRpZiAoKG9wZW5fZmxhZyBcXHUwMDI2IE9fQ1JFQVQpIHx8IGNyZWF0ZV9lcnJvcilcXG4rXFx0XFx0aW5vZGVfdW5sb2NrKGRpcl9pbm9kZSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0aW5vZGVfdW5sb2NrX3NoYXJlZChkaXJfaW5vZGUpO1xcbitcXG4rXFx0aWYgKGdvdF93cml0ZSlcXG4rXFx0XFx0bW50X2Ryb3Bfd3JpdGUobmQtXFx1MDAzZXBhdGgubW50KTtcXG4rXFxuK1xcdGlmIChpc19kZWxlZ2F0ZWQoXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSkpIHtcXG4rXFx0XFx0LyogTXVzdCBoYXZlIGNvbWUgdGhyb3VnaCBvdXRfZHB1dDogZGVudHJ5IGlzIGFuIEVSUl9QVFIoKSAqL1xcbitcXHRcXHRlcnJvciA9IGJyZWFrX2RlbGVnX3dhaXQoXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XFxuK1xcbitcXHRcXHRpZiAoIWVycm9yKVxcbitcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbitcXHRcXHRkZW50cnkgPSBFUlJfUFRSKGVycm9yKTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIGRlbnRyeTtcXG4gXFxuIG91dF9kcHV0OlxcbiBcXHRkcHV0KGRlbnRyeSk7XFxuLVxcdHJldHVybiBFUlJfUFRSKGVycm9yKTtcXG4rXFx0ZGVudHJ5ID0gRVJSX1BUUihlcnJvcik7XFxuK1xcdGdvdG8gb3V0O1xcbiB9XFxuIFxcbisvKipcXG4rICogdmZzX2xvb2t1cF9vcGVuIC0gb3BlbiBhbmQgcG9zc2libHkgY3JlYXRlIGEgcmVndWxhciBmaWxlXFxuKyAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGVcXG4rICogQGxhc3Q6IGZpbmFsIGNvbXBvbmVudCBvZiBmaWxlIG5hbWVcXG4rICogQG9wZW5fZmxhZzogT19mbGFnc1xcbisgKiBAbW9kZTogaW5pdGlhbCBwZXJtaXNzaW9ucyBmb3IgZmlsZVxcbisgKlxcbisgKiBPcGVuIGEgZmlsZSBhZnRlciBsb29rdXAgYW5kL29yIGNyZWF0ZS4gIFRoaXMgcHJvdmlkZXMgc2ltaWxhclxcbisgKiBmdW5jdGlvbmFsaXR5IG9wZW5fbGFzdF9sb29rdXBzKCkgZm9yIGluLWtlcm5lbCB1c2VycywgcGFydGljdWxhcmx5XFxuKyAqIG5mc2QuXFxuKyAqIEl0IHVzZXMgLVxcdTAwM2VhdG9taWNfb3BlbiBvciAtXFx1MDAzZWxvb2t1cCAvIC1cXHUwMDNlY3JlYXRlIC8gLVxcdTAwM2VvcGVuIGFzIGFwcHJvcHJpYXRlLlxcbisgKlxcbisgKiBSZXR1cm5zOiB0aGUgb3BlbmVkIHN0cnVjdCBmaWxlLCBvciBhbiBlcnJvci5cXG4rICogICAgIENhbGxlciBzaG91bGQgY2hlY2sgdGhhdCB0aGUgZmlsZSBvcGVuZWQgaXMgcmVndWxhcixcXG4rICogICAgIGlmIHNvbWV0aGluZyBlbHNlIHdhcyBmb3VuZCwgYW4gT19QQVRIIGZpbGUgaXMgcHJvdmlkZWQuXFxuKyAqICAgICBDYWxsZXIgc2hvdWxkIHZhbGlkYXRlIEZNT0RFX0NSRUFURUQgaWYgT19FWENMIHdhcyByZXF1ZXN0ZWQuXFxuKyAqL1xcbitzdHJ1Y3QgZmlsZSAqdmZzX2xvb2t1cF9vcGVuKHN0cnVjdCBwYXRoICpwYXJlbnQsIHN0cnVjdCBxc3RyICpsYXN0LFxcbitcXHRcXHRcXHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSlcXG4re1xcbitcXHRzdHJ1Y3QgZmlsZSAqZmlsZSBfX2ZyZWUoZnB1dCkgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgbmFtZWlkYXRhIG5kID0ge307XFxuK1xcdHN0cnVjdCBvcGVuX2ZsYWdzIG9wID0ge307XFxuK1xcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4rXFx0aW50IGVycm9yID0gMDtcXG4rXFxuK1xcdFdBUk5fT05DRShtb2RlIFxcdTAwMjYgIVNfSUFMTFVHTywgXFxcIm1vZGUgbXVzdCBvbmx5IGhhdmUgcGVybWlzc2lvbiBiaXRzXFxcIik7XFxuK1xcdGVycm9yID0gbG9va3VwX25vcGVybV9jb21tb24obGFzdCwgcGFyZW50LVxcdTAwM2VkZW50cnkpO1xcbitcXHRpZiAoZXJyb3IpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKGVycm9yKTtcXG4rXFxuK1xcdGZpbGUgPSBhbGxvY19lbXB0eV9maWxlKG9wZW5fZmxhZywgY3VycmVudF9jcmVkKCkpO1xcbitcXHRpZiAoSVNfRVJSKGZpbGUpKVxcbitcXHRcXHRyZXR1cm4gZmlsZTtcXG4rXFxuK1xcdG5kLnBhdGggPSAqcGFyZW50O1xcbitcXHRuZC5sYXN0ID0gKmxhc3Q7XFxuK1xcdG5kLmZsYWdzID0gTE9PS1VQX09QRU47XFxuK1xcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiBPX0NSRUFUKSB7XFxuK1xcdFxcdG5kLmZsYWdzIHw9IExPT0tVUF9DUkVBVEU7XFxuK1xcdFxcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiBPX0VYQ0wpXFxuK1xcdFxcdFxcdG5kLmZsYWdzIHw9IExPT0tVUF9FWENMO1xcbitcXHR9XFxuK1xcdG9wLm9wZW5fZmxhZyA9IG9wZW5fZmxhZztcXG4rXFx0b3AubW9kZSA9IFNfSUZSRUcgfCBtb2RlO1xcbitcXHRkZW50cnkgPSBsb29rdXBfb3BlbihcXHUwMDI2bmQsIGZpbGUsIFxcdTAwMjZvcCk7XFxuK1xcbitcXHRpZiAoSVNfRVJSKGRlbnRyeSkpXFxuK1xcdFxcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xcbitcXG4rXFx0aWYgKGRfcmVhbGx5X2lzX25lZ2F0aXZlKGRlbnRyeSkpIHtcXG4rXFx0XFx0ZXJyb3IgPSAtRU5PRU5UO1xcbitcXHR9IGVsc2UgaWYgKCEoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfT1BFTkVEKSkge1xcbitcXHRcXHRuZC5wYXRoLmRlbnRyeSA9IGRlbnRyeTtcXG4rXFx0XFx0aWYgKCFkX2lzX3JlZyhkZW50cnkpKVxcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBhbGxvdyBjYWxsZXIgdG8gc2VlIGRlbnRyeSBhbmQgY2hvb3NlXFxuK1xcdFxcdFxcdCAqIGNvcnJlY3QgZXJyb3IgY29kZVxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0ZmlsZS1cXHUwMDNlZl9mbGFncyB8PSBPX1BBVEg7XFxuK1xcdFxcdGVycm9yID0gdmZzX29wZW4oXFx1MDAyNm5kLnBhdGgsIGZpbGUpO1xcbitcXHR9XFxuK1xcdGRwdXQoZGVudHJ5KTtcXG4rXFxuK1xcdGlmIChlcnJvcilcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyb3IpO1xcbitcXHRyZXR1cm4gbm9fZnJlZV9wdHIoZmlsZSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sIFxcXCJuZnNkXFxcIik7XFxuK1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgdHJhaWxpbmdfc2xhc2hlcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZClcXG4ge1xcbiBcXHRyZXR1cm4gKGJvb2wpbmQtXFx1MDAzZWxhc3QubmFtZVtuZC1cXHUwMDNlbGFzdC5sZW5dO1xcbkBAIC00NTU0LDEwICs0NjcxLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9mYXN0X2Zvcl9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBpbnQgb3Blbl9mbGFnKVxcbiBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXFxuIFxcdFxcdCAgIHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3ApXFxuIHtcXG4tXFx0c3RydWN0IGRlbGVnYXRlZF9pbm9kZSBkZWxlZ2F0ZWRfaW5vZGUgPSB7IH07XFxuLVxcdHN0cnVjdCBkZW50cnkgKmRpciA9IG5kLVxcdTAwM2VwYXRoLmRlbnRyeTtcXG4gXFx0aW50IG9wZW5fZmxhZyA9IG9wLVxcdTAwM2VvcGVuX2ZsYWc7XFxuLVxcdGJvb2wgZ290X3dyaXRlID0gZmFsc2U7XFxuIFxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4gXFx0Y29uc3QgY2hhciAqcmVzO1xcbiBcXG5AQCAtNDU4Niw0NCArNDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXFxuIFxcdFxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FQ0hJTEQpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tcmV0cnk6XFxuLVxcdGlmIChvcGVuX2ZsYWcgXFx1MDAyNiAoT19DUkVBVCB8IE9fVFJVTkMgfCBPX1dST05MWSB8IE9fUkRXUikpIHtcXG4tXFx0XFx0Z290X3dyaXRlID0gIW1udF93YW50X3dyaXRlKG5kLVxcdTAwM2VwYXRoLm1udCk7XFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcXG4tXFx0XFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcXG4tXFx0XFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5Llxcbi1cXHRcXHQgKi9cXG4tXFx0fVxcbi1cXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG4tXFx0XFx0aW5vZGVfbG9jayhkaXItXFx1MDAzZWRfaW5vZGUpO1xcbi1cXHRlbHNlXFxuLVxcdFxcdGlub2RlX2xvY2tfc2hhcmVkKGRpci1cXHUwMDNlZF9pbm9kZSk7XFxuLVxcdGRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCwgZ290X3dyaXRlLCBcXHUwMDI2ZGVsZWdhdGVkX2lub2RlKTtcXG4tXFx0aWYgKCFJU19FUlIoZGVudHJ5KSkge1xcbi1cXHRcXHRpZiAoZmlsZS1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfQ1JFQVRFRClcXG4tXFx0XFx0XFx0ZnNub3RpZnlfY3JlYXRlKGRpci1cXHUwMDNlZF9pbm9kZSwgZGVudHJ5KTtcXG4tXFx0XFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX09QRU5FRClcXG4tXFx0XFx0XFx0ZnNub3RpZnlfb3BlbihmaWxlKTtcXG4tXFx0fVxcbi1cXHRpZiAob3Blbl9mbGFnIFxcdTAwMjYgT19DUkVBVClcXG4tXFx0XFx0aW5vZGVfdW5sb2NrKGRpci1cXHUwMDNlZF9pbm9kZSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0aW5vZGVfdW5sb2NrX3NoYXJlZChkaXItXFx1MDAzZWRfaW5vZGUpO1xcbi1cXG4tXFx0aWYgKGdvdF93cml0ZSlcXG4tXFx0XFx0bW50X2Ryb3Bfd3JpdGUobmQtXFx1MDAzZXBhdGgubW50KTtcXG4gXFxuLVxcdGlmIChJU19FUlIoZGVudHJ5KSkge1xcbi1cXHRcXHRpZiAoaXNfZGVsZWdhdGVkKFxcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpKSB7XFxuLVxcdFxcdFxcdGludCBlcnJvciA9IGJyZWFrX2RlbGVnX3dhaXQoXFx1MDAyNmRlbGVnYXRlZF9pbm9kZSk7XFxuLVxcbi1cXHRcXHRcXHRpZiAoIWVycm9yKVxcbi1cXHRcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbi1cXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XFxuLVxcdFxcdH1cXG4rXFx0ZGVudHJ5ID0gbG9va3VwX29wZW4obmQsIGZpbGUsIG9wKTtcXG4rXFx0aWYgKElTX0VSUihkZW50cnkpKVxcbiBcXHRcXHRyZXR1cm4gRVJSX0NBU1QoZGVudHJ5KTtcXG4tXFx0fVxcbiBcXG4gXFx0aWYgKGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IChGTU9ERV9PUEVORUQgfCBGTU9ERV9DUkVBVEVEKSkge1xcbiBcXHRcXHRkcHV0KG5kLVxcdTAwM2VwYXRoLmRlbnRyeSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmFtZWkuaCBiL2luY2x1ZGUvbGludXgvbmFtZWkuaFxcbmluZGV4IGViZTZlMjlmN2U5M2JhLi44NmQ2NTdiMjRmYzZhMSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L25hbWVpLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25hbWVpLmhcXG5AQCAtOTcsNiArOTcsOSBAQCBzdHJ1Y3QgZGVudHJ5ICpzdGFydF9jcmVhdGluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxcbiBzdHJ1Y3QgZGVudHJ5ICpzdGFydF9yZW1vdmluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkZW50cnkgKmNoaWxkKTtcXG4gXFxuK3N0cnVjdCBmaWxlICp2ZnNfbG9va3VwX29wZW4oc3RydWN0IHBhdGggKnBhcmVudCwgc3RydWN0IHFzdHIgKmxhc3QsXFxuK1xcdFxcdFxcdCAgICAgaW50IG9wZW5fZmxhZywgdW1vZGVfdCBtb2RlKTtcXG4rXFxuIC8qIGVuZF9jcmVhdGluZyAtIGZpbmlzaCBhY3Rpb24gc3RhcnRlZCB3aXRoIHN0YXJ0X2NyZWF0aW5nXFxuICAqIEBjaGlsZDogZGVudHJ5IHJldHVybmVkIGJ5IHN0YXJ0X2NyZWF0aW5nKCkgb3IgdmZzX21rZGlyKClcXG4gICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6MjYuMzIwMTMxMzAyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQzMjU1Mjc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsb29rdXBfb3BlblwiLFxuICAgIFwidmZzX2xvb2t1cF9vcGVuXCIsXG4gICAgXCJvcGVuX2xhc3RfbG9va3Vwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBjb3JlIFZGUyBwYXRoIGxvb2t1cCBhbmQgZmlsZSBvcGVuaW5nIGxvZ2ljIChgbG9va3VwX29wZW5gLCBgb3Blbl9sYXN0X2xvb2t1cHNgKSBhbmQgaW50cm9kdWNlcyBhIG5ldyBleHBvcnRlZCBmdW5jdGlvbiBgdmZzX2xvb2t1cF9vcGVuYC4gVGhpcyBhZmZlY3RzIGZpbGUgY3JlYXRpb24gYW5kIG9wZW5pbmcgYWNyb3NzIGFsbCBmaWxlc3lzdGVtcyBhbmQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNzFiNTE4ZmU2NTU5NTUxNGI3ODdmMDlmMWNkMjZiNWE1NzUyNDJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwMDoxODoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jXG5pbmRleCA3ZWFkM2RiNTViZTIzOS4uNjBkZGRmN2I5N2FhMjIgMTAwNjQ0XG4tLS0gYS9mcy9uYW1laS5jXG4rKysgYi9mcy9uYW1laS5jXG5AQCAtNDM5NywxOSArNDM5Nyw0MSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqYXRvbWljX29wZW4oY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRlbnRyeVxuICAqIEFuIGVycm9yIGNvZGUgaXMgcmV0dXJuZWQgb24gZmFpbHVyZS5cbiAgKi9cbiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgb3Blbl9mbGFncyAqb3AsXG4tXHRcdFx0XHQgIGJvb2wgZ290X3dyaXRlLCBzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlICpkZWxlZ2F0ZWRfaW5vZGUpXG4rXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcbiB7XG4rXHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcbiBcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwO1xuIFx0c3RydWN0IGRlbnRyeSAqZGlyID0gbmQtXHUwMDNlcGF0aC5kZW50cnk7XG4gXHRzdHJ1Y3QgaW5vZGUgKmRpcl9pbm9kZSA9IGRpci1cdTAwM2VkX2lub2RlO1xuLVx0aW50IG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbitcdGludCBvcGVuX2ZsYWc7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XG4tXHRpbnQgZXJyb3IsIGNyZWF0ZV9lcnJvciA9IDA7XG4tXHR1bW9kZV90IG1vZGUgPSBvcC1cdTAwM2Vtb2RlO1xuK1x0aW50IGVycm9yLCBjcmVhdGVfZXJyb3I7XG4rXHR1bW9kZV90IG1vZGU7XG4rXHRib29sIGdvdF93cml0ZTtcbiBcbi1cdGlmICh1bmxpa2VseShJU19ERUFERElSKGRpcl9pbm9kZSkpKVxuLVx0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbityZXRyeTpcbitcdG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbitcdGdvdF93cml0ZSA9IGZhbHNlO1xuK1x0bW9kZSA9IG9wLVx1MDAzZW1vZGU7XG4rXHRjcmVhdGVfZXJyb3IgPSAwO1xuK1xuK1x0aWYgKG9wZW5fZmxhZyBcdTAwMjYgKE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4rXHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4rXHRcdC8qXG4rXHRcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcbitcdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcbitcdFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LlxuK1x0XHQgKi9cbitcdH1cbitcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG4rXHRcdGlub2RlX2xvY2soZGlyX2lub2RlKTtcbitcdGVsc2VcbitcdFx0aW5vZGVfbG9ja19zaGFyZWQoZGlyX2lub2RlKTtcbitcbitcdGlmICh1bmxpa2VseShJU19ERUFERElSKGRpcl9pbm9kZSkpKSB7XG4rXHRcdGRlbnRyeSA9IEVSUl9QVFIoLUVOT0VOVCk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0ZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2PSB+Rk1PREVfQ1JFQVRFRDtcbiBcdGRlbnRyeSA9IGRfbG9va3VwKGRpciwgXHUwMDI2bmQtXHUwMDNlbGFzdCk7XG5AQCAtNDQxNyw3ICs0NDM5LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdFx0aWYgKCFkZW50cnkpIHtcbiBcdFx0XHRkZW50cnkgPSBkX2FsbG9jX3BhcmFsbGVsKGRpciwgXHUwMDI2bmQtXHUwMDNlbGFzdCk7XG4gXHRcdFx0aWYgKElTX0VSUihkZW50cnkpKVxuLVx0XHRcdFx0cmV0dXJuIGRlbnRyeTtcbitcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXHRcdGlmIChkX2luX2xvb2t1cChkZW50cnkpKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTQ0MzMsNyArNDQ1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHR9XG4gXHRpZiAoZGVudHJ5LVx1MDAzZWRfaW5vZGUpIHtcbiBcdFx0LyogQ2FjaGVkIHBvc2l0aXZlIGRlbnRyeTogd2lsbCBvcGVuIGluIGZfb3AtXHUwMDNlb3BlbiAqL1xuLVx0XHRyZXR1cm4gZGVudHJ5O1xuK1x0XHRnb3RvIG91dDtcbiBcdH1cbiBcbiBcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG5AQCAtNDQ1NCw3ICs0NDc2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHtcbiBcdFx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19FWENMKVxuIFx0XHRcdG9wZW5fZmxhZyBcdTAwMjY9IH5PX1RSVU5DO1xuLVx0XHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyLVx1MDAzZWRfaW5vZGUsIG1vZGUsIG1vZGUsIG1vZGUpO1xuK1x0XHRtb2RlID0gdmZzX3ByZXBhcmVfbW9kZShpZG1hcCwgZGlyX2lub2RlLCBtb2RlLCBtb2RlLCBtb2RlKTtcbiBcdFx0aWYgKGxpa2VseShnb3Rfd3JpdGUpKVxuIFx0XHRcdGNyZWF0ZV9lcnJvciA9IG1heV9vX2NyZWF0ZShpZG1hcCwgXHUwMDI2bmQtXHUwMDNlcGF0aCxcbiBcdFx0XHRcdFx0XHQgICAgZGVudHJ5LCBtb2RlKTtcbkBAIC00NDY5LDcgKzQ0OTEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRkZW50cnkgPSBhdG9taWNfb3BlbihcdTAwMjZuZC1cdTAwM2VwYXRoLCBkZW50cnksIGZpbGUsIG9wZW5fZmxhZywgbW9kZSk7XG4gXHRcdGlmICh1bmxpa2VseShjcmVhdGVfZXJyb3IpIFx1MDAyNlx1MDAyNiBkZW50cnkgPT0gRVJSX1BUUigtRU5PRU5UKSlcbiBcdFx0XHRkZW50cnkgPSBFUlJfUFRSKGNyZWF0ZV9lcnJvcik7XG4tXHRcdHJldHVybiBkZW50cnk7XG4rXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuIFx0aWYgKGRfaW5fbG9va3VwKGRlbnRyeSkpIHtcbkBAIC00NDg5LDcgKzQ1MTEsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0LyogTmVnYXRpdmUgZGVudHJ5LCBqdXN0IGNyZWF0ZSB0aGUgZmlsZSAqL1xuIFx0aWYgKCFkZW50cnktXHUwMDNlZF9pbm9kZSBcdTAwMjZcdTAwMjYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkpIHtcbiBcdFx0LyogYnV0IGJyZWFrIHRoZSBkaXJlY3RvcnkgbGVhc2UgZmlyc3QhICovXG4tXHRcdGVycm9yID0gdHJ5X2JyZWFrX2RlbGVnKGRpcl9pbm9kZSwgTEVBU0VfQlJFQUtfRElSX0NSRUFURSwgZGVsZWdhdGVkX2lub2RlKTtcbitcdFx0ZXJyb3IgPSB0cnlfYnJlYWtfZGVsZWcoZGlyX2lub2RlLCBMRUFTRV9CUkVBS19ESVJfQ1JFQVRFLCBcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpO1xuIFx0XHRpZiAoZXJyb3IpXG4gXHRcdFx0Z290byBvdXRfZHB1dDtcbiBcbkBAIC00NTA4LDEzICs0NTMwLDEwOCBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRlcnJvciA9IGNyZWF0ZV9lcnJvcjtcbiBcdFx0Z290byBvdXRfZHB1dDtcbiBcdH1cbitvdXQ6XG4rXHRpZiAoIUlTX0VSUihkZW50cnkpKSB7XG4rXHRcdGlmIChmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQ1JFQVRFRClcbitcdFx0XHRmc25vdGlmeV9jcmVhdGUoZGlyX2lub2RlLCBkZW50cnkpO1xuK1x0XHRpZiAoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX09QRU5FRClcbitcdFx0XHRmc25vdGlmeV9vcGVuKGZpbGUpO1xuK1x0fVxuK1x0aWYgKChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpIHx8IGNyZWF0ZV9lcnJvcilcbitcdFx0aW5vZGVfdW5sb2NrKGRpcl9pbm9kZSk7XG4rXHRlbHNlXG4rXHRcdGlub2RlX3VubG9ja19zaGFyZWQoZGlyX2lub2RlKTtcbitcbitcdGlmIChnb3Rfd3JpdGUpXG4rXHRcdG1udF9kcm9wX3dyaXRlKG5kLVx1MDAzZXBhdGgubW50KTtcbitcbitcdGlmIChpc19kZWxlZ2F0ZWQoXHUwMDI2ZGVsZWdhdGVkX2lub2RlKSkge1xuK1x0XHQvKiBNdXN0IGhhdmUgY29tZSB0aHJvdWdoIG91dF9kcHV0OiBkZW50cnkgaXMgYW4gRVJSX1BUUigpICovXG4rXHRcdGVycm9yID0gYnJlYWtfZGVsZWdfd2FpdChcdTAwMjZkZWxlZ2F0ZWRfaW5vZGUpO1xuK1xuK1x0XHRpZiAoIWVycm9yKVxuK1x0XHRcdGdvdG8gcmV0cnk7XG4rXHRcdGRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIGRlbnRyeTtcbiBcbiBvdXRfZHB1dDpcbiBcdGRwdXQoZGVudHJ5KTtcbi1cdHJldHVybiBFUlJfUFRSKGVycm9yKTtcbitcdGRlbnRyeSA9IEVSUl9QVFIoZXJyb3IpO1xuK1x0Z290byBvdXQ7XG4gfVxuIFxuKy8qKlxuKyAqIHZmc19sb29rdXBfb3BlbiAtIG9wZW4gYW5kIHBvc3NpYmx5IGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZVxuKyAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGVcbisgKiBAbGFzdDogZmluYWwgY29tcG9uZW50IG9mIGZpbGUgbmFtZVxuKyAqIEBvcGVuX2ZsYWc6IE9fZmxhZ3NcbisgKiBAbW9kZTogaW5pdGlhbCBwZXJtaXNzaW9ucyBmb3IgZmlsZVxuKyAqXG4rICogT3BlbiBhIGZpbGUgYWZ0ZXIgbG9va3VwIGFuZC9vciBjcmVhdGUuICBUaGlzIHByb3ZpZGVzIHNpbWlsYXJcbisgKiBmdW5jdGlvbmFsaXR5IG9wZW5fbGFzdF9sb29rdXBzKCkgZm9yIGluLWtlcm5lbCB1c2VycywgcGFydGljdWxhcmx5XG4rICogbmZzZC5cbisgKiBJdCB1c2VzIC1cdTAwM2VhdG9taWNfb3BlbiBvciAtXHUwMDNlbG9va3VwIC8gLVx1MDAzZWNyZWF0ZSAvIC1cdTAwM2VvcGVuIGFzIGFwcHJvcHJpYXRlLlxuKyAqXG4rICogUmV0dXJuczogdGhlIG9wZW5lZCBzdHJ1Y3QgZmlsZSwgb3IgYW4gZXJyb3IuXG4rICogICAgIENhbGxlciBzaG91bGQgY2hlY2sgdGhhdCB0aGUgZmlsZSBvcGVuZWQgaXMgcmVndWxhcixcbisgKiAgICAgaWYgc29tZXRoaW5nIGVsc2Ugd2FzIGZvdW5kLCBhbiBPX1BBVEggZmlsZSBpcyBwcm92aWRlZC5cbisgKiAgICAgQ2FsbGVyIHNob3VsZCB2YWxpZGF0ZSBGTU9ERV9DUkVBVEVEIGlmIE9fRVhDTCB3YXMgcmVxdWVzdGVkLlxuKyAqL1xuK3N0cnVjdCBmaWxlICp2ZnNfbG9va3VwX29wZW4oc3RydWN0IHBhdGggKnBhcmVudCwgc3RydWN0IHFzdHIgKmxhc3QsXG4rXHRcdFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXG4re1xuK1x0c3RydWN0IGZpbGUgKmZpbGUgX19mcmVlKGZwdXQpID0gTlVMTDtcbitcdHN0cnVjdCBuYW1laWRhdGEgbmQgPSB7fTtcbitcdHN0cnVjdCBvcGVuX2ZsYWdzIG9wID0ge307XG4rXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XG4rXHRpbnQgZXJyb3IgPSAwO1xuK1xuK1x0V0FSTl9PTkNFKG1vZGUgXHUwMDI2ICFTX0lBTExVR08sIFwibW9kZSBtdXN0IG9ubHkgaGF2ZSBwZXJtaXNzaW9uIGJpdHNcIik7XG4rXHRlcnJvciA9IGxvb2t1cF9ub3Blcm1fY29tbW9uKGxhc3QsIHBhcmVudC1cdTAwM2VkZW50cnkpO1xuK1x0aWYgKGVycm9yKVxuK1x0XHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XG4rXG4rXHRmaWxlID0gYWxsb2NfZW1wdHlfZmlsZShvcGVuX2ZsYWcsIGN1cnJlbnRfY3JlZCgpKTtcbitcdGlmIChJU19FUlIoZmlsZSkpXG4rXHRcdHJldHVybiBmaWxlO1xuK1xuK1x0bmQucGF0aCA9ICpwYXJlbnQ7XG4rXHRuZC5sYXN0ID0gKmxhc3Q7XG4rXHRuZC5mbGFncyA9IExPT0tVUF9PUEVOO1xuK1x0aWYgKG9wZW5fZmxhZyBcdTAwMjYgT19DUkVBVCkge1xuK1x0XHRuZC5mbGFncyB8PSBMT09LVVBfQ1JFQVRFO1xuK1x0XHRpZiAob3Blbl9mbGFnIFx1MDAyNiBPX0VYQ0wpXG4rXHRcdFx0bmQuZmxhZ3MgfD0gTE9PS1VQX0VYQ0w7XG4rXHR9XG4rXHRvcC5vcGVuX2ZsYWcgPSBvcGVuX2ZsYWc7XG4rXHRvcC5tb2RlID0gU19JRlJFRyB8IG1vZGU7XG4rXHRkZW50cnkgPSBsb29rdXBfb3BlbihcdTAwMjZuZCwgZmlsZSwgXHUwMDI2b3ApO1xuK1xuK1x0aWYgKElTX0VSUihkZW50cnkpKVxuK1x0XHRyZXR1cm4gRVJSX0NBU1QoZGVudHJ5KTtcbitcbitcdGlmIChkX3JlYWxseV9pc19uZWdhdGl2ZShkZW50cnkpKSB7XG4rXHRcdGVycm9yID0gLUVOT0VOVDtcbitcdH0gZWxzZSBpZiAoIShmaWxlLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfT1BFTkVEKSkge1xuK1x0XHRuZC5wYXRoLmRlbnRyeSA9IGRlbnRyeTtcbitcdFx0aWYgKCFkX2lzX3JlZyhkZW50cnkpKVxuK1x0XHRcdC8qXG4rXHRcdFx0ICogYWxsb3cgY2FsbGVyIHRvIHNlZSBkZW50cnkgYW5kIGNob29zZVxuK1x0XHRcdCAqIGNvcnJlY3QgZXJyb3IgY29kZVxuK1x0XHRcdCAqL1xuK1x0XHRcdGZpbGUtXHUwMDNlZl9mbGFncyB8PSBPX1BBVEg7XG4rXHRcdGVycm9yID0gdmZzX29wZW4oXHUwMDI2bmQucGF0aCwgZmlsZSk7XG4rXHR9XG4rXHRkcHV0KGRlbnRyeSk7XG4rXG4rXHRpZiAoZXJyb3IpXG4rXHRcdHJldHVybiBFUlJfUFRSKGVycm9yKTtcbitcdHJldHVybiBub19mcmVlX3B0cihmaWxlKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyh2ZnNfbG9va3VwX29wZW4sIFwibmZzZFwiKTtcbitcbiBzdGF0aWMgaW5saW5lIGJvb2wgdHJhaWxpbmdfc2xhc2hlcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZClcbiB7XG4gXHRyZXR1cm4gKGJvb2wpbmQtXHUwMDNlbGFzdC5uYW1lW25kLVx1MDAzZWxhc3QubGVuXTtcbkBAIC00NTU0LDEwICs0NjcxLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9mYXN0X2Zvcl9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBpbnQgb3Blbl9mbGFnKVxuIHN0YXRpYyBjb25zdCBjaGFyICpvcGVuX2xhc3RfbG9va3VwcyhzdHJ1Y3QgbmFtZWlkYXRhICpuZCxcbiBcdFx0ICAgc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBvcGVuX2ZsYWdzICpvcClcbiB7XG4tXHRzdHJ1Y3QgZGVsZWdhdGVkX2lub2RlIGRlbGVnYXRlZF9pbm9kZSA9IHsgfTtcbi1cdHN0cnVjdCBkZW50cnkgKmRpciA9IG5kLVx1MDAzZXBhdGguZGVudHJ5O1xuIFx0aW50IG9wZW5fZmxhZyA9IG9wLVx1MDAzZW9wZW5fZmxhZztcbi1cdGJvb2wgZ290X3dyaXRlID0gZmFsc2U7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7XG4gXHRjb25zdCBjaGFyICpyZXM7XG4gXG5AQCAtNDU4Niw0NCArNDcwMCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqb3Blbl9sYXN0X2xvb2t1cHMoc3RydWN0IG5hbWVpZGF0YSAqbmQsXG4gXHRcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUNISUxEKTtcbiBcdFx0fVxuIFx0fVxuLXJldHJ5OlxuLVx0aWYgKG9wZW5fZmxhZyBcdTAwMjYgKE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX1JEV1IpKSB7XG4tXHRcdGdvdF93cml0ZSA9ICFtbnRfd2FudF93cml0ZShuZC1cdTAwM2VwYXRoLm1udCk7XG4tXHRcdC8qXG4tXHRcdCAqIGRvIF9ub3RfIGZhaWwgeWV0IC0gd2UgbWlnaHQgbm90IG5lZWQgdGhhdCBvciBmYWlsIHdpdGhcbi1cdFx0ICogYSBkaWZmZXJlbnQgZXJyb3I7IGxldCBsb29rdXBfb3BlbigpIGRlY2lkZTsgd2UnbGwgYmVcbi1cdFx0ICogZHJvcHBpbmcgdGhpcyBvbmUgYW55d2F5LlxuLVx0XHQgKi9cbi1cdH1cbi1cdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG4tXHRcdGlub2RlX2xvY2soZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVx0ZWxzZVxuLVx0XHRpbm9kZV9sb2NrX3NoYXJlZChkaXItXHUwMDNlZF9pbm9kZSk7XG4tXHRkZW50cnkgPSBsb29rdXBfb3BlbihuZCwgZmlsZSwgb3AsIGdvdF93cml0ZSwgXHUwMDI2ZGVsZWdhdGVkX2lub2RlKTtcbi1cdGlmICghSVNfRVJSKGRlbnRyeSkpIHtcbi1cdFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9DUkVBVEVEKVxuLVx0XHRcdGZzbm90aWZ5X2NyZWF0ZShkaXItXHUwMDNlZF9pbm9kZSwgZGVudHJ5KTtcbi1cdFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9PUEVORUQpXG4tXHRcdFx0ZnNub3RpZnlfb3BlbihmaWxlKTtcbi1cdH1cbi1cdGlmIChvcGVuX2ZsYWcgXHUwMDI2IE9fQ1JFQVQpXG4tXHRcdGlub2RlX3VubG9jayhkaXItXHUwMDNlZF9pbm9kZSk7XG4tXHRlbHNlXG4tXHRcdGlub2RlX3VubG9ja19zaGFyZWQoZGlyLVx1MDAzZWRfaW5vZGUpO1xuLVxuLVx0aWYgKGdvdF93cml0ZSlcbi1cdFx0bW50X2Ryb3Bfd3JpdGUobmQtXHUwMDNlcGF0aC5tbnQpO1xuIFxuLVx0aWYgKElTX0VSUihkZW50cnkpKSB7XG4tXHRcdGlmIChpc19kZWxlZ2F0ZWQoXHUwMDI2ZGVsZWdhdGVkX2lub2RlKSkge1xuLVx0XHRcdGludCBlcnJvciA9IGJyZWFrX2RlbGVnX3dhaXQoXHUwMDI2ZGVsZWdhdGVkX2lub2RlKTtcbi1cbi1cdFx0XHRpZiAoIWVycm9yKVxuLVx0XHRcdFx0Z290byByZXRyeTtcbi1cdFx0XHRyZXR1cm4gRVJSX1BUUihlcnJvcik7XG4tXHRcdH1cbitcdGRlbnRyeSA9IGxvb2t1cF9vcGVuKG5kLCBmaWxlLCBvcCk7XG4rXHRpZiAoSVNfRVJSKGRlbnRyeSkpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZW50cnkpO1xuLVx0fVxuIFxuIFx0aWYgKGZpbGUtXHUwMDNlZl9tb2RlIFx1MDAyNiAoRk1PREVfT1BFTkVEIHwgRk1PREVfQ1JFQVRFRCkpIHtcbiBcdFx0ZHB1dChuZC1cdTAwM2VwYXRoLmRlbnRyeSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uYW1laS5oIGIvaW5jbHVkZS9saW51eC9uYW1laS5oXG5pbmRleCBlYmU2ZTI5ZjdlOTNiYS4uODZkNjU3YjI0ZmM2YTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25hbWVpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmFtZWkuaFxuQEAgLTk3LDYgKzk3LDkgQEAgc3RydWN0IGRlbnRyeSAqc3RhcnRfY3JlYXRpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBzdHJ1Y3QgZGVudHJ5ICpzdGFydF9yZW1vdmluZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgZGVudHJ5ICpjaGlsZCk7XG4gXG4rc3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcbitcdFx0XHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSk7XG4rXG4gLyogZW5kX2NyZWF0aW5nIC0gZmluaXNoIGFjdGlvbiBzdGFydGVkIHdpdGggc3RhcnRfY3JlYXRpbmdcbiAgKiBAY2hpbGQ6IGRlbnRyeSByZXR1cm5lZCBieSBzdGFydF9jcmVhdGluZygpIG9yIHZmc19ta2RpcigpXG4gICpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAwOjE4OjI2LjMyMDEzMzA5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2Njk4NTUwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZTIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvbmFtZWkuY2AgYW5kIGBpbmNsdWRlL2xpbnV4L25hbWVpLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIGhvdyB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSBoYW5kbGVzIGxvb2t1cHMgYW5kIG9wZW5zLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEZyb20gd2hhdCBJIGNhbiBnYXRoZXIsIHRoZSBwYXRjaCBpbnRlcm5hbGl6ZXMgdGhlIGxvY2tpbmcsIHJldHJ5LCBhbmQgYGdvdF93cml0ZWAgbG9naWMgKndpdGhpbiogYGxvb2t1cF9vcGVuYC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlOyBlc3NlbnRpYWxseSBpdCdzIG1vdmluZyByZXNwb25zaWJpbGl0eS4gUHJldmlvdXNseSwgYG9wZW5fbGFzdF9sb29rdXBzYCBzZWVtcyB0byBoYXZlIGhhbmRsZWQgdGhhdCwgYnV0IG5vdyBpdCBzZWVtcyB0byBjYWxsIGBsb29rdXBfb3BlbmAgZGlyZWN0bHkuXG5cblRoZSBiaWcgdGFrZWF3YXkgaGVyZSwgaG93ZXZlciwgaXMgdGhlIGFkZGl0aW9uIG9mIHRoaXMgbmV3LCAqZXhwb3J0ZWQqIGZ1bmN0aW9uLCBgdmZzX2xvb2t1cF9vcGVuYC4gVGhlIGZhY3QgdGhhdCBpdCdzIGV4cG9ydGVkIG1lYW5zIGl0J3MgYXZhaWxhYmxlIGZvciBtb2R1bGVzIHRvIHVzZSwgYW5kIHRoZSBjb21tZW50IGFib3V0IGl0IGJlaW5nIHNwZWNpZmljYWxseSBmb3IgXCJuZnNkXCIgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBpbXBsaWVzIHNvbWUgY2hhbmdlcyB0byBob3cgdGhlIE5ldHdvcmsgRmlsZSBTeXN0ZW0gRGFlbW9uIHdpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgVkZTLiBUaGlzIGtpbmQgb2YgY2hhbmdlIGlzIG9mdGVuIGRlbGljYXRlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBuZXcgZnVuY3Rpb24gdXNlZCBhbnl3aGVyZSAqZWxzZSogd2l0aGluIHRoZSBrZXJuZWw/IEknbGwgcnVuIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIGB2ZnNfbG9va3VwX29wZW5gIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wYWN0IGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLiBUaGlzIGlzIGNvcmUgVkZTIGNvZGUsIGFmdGVyIGFsbCwgc28gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGF0IHRoaXMgZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAwOjE4OjMwLjk4OTk4OTgzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzExOTUzODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmc19sb29rdXBfb3BlblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9uYW1laS5jPTQzOTk9c3RhdGljIHN0cnVjdCBkZW50cnkgKmxvb2t1cF9vcGVuKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL25hbWVpLmMtNDU2NS0vKipcXG5mcy9uYW1laS5jOjQ1NjY6ICogdmZzX2xvb2t1cF9vcGVuIC0gb3BlbiBhbmQgcG9zc2libHkgY3JlYXRlIGEgcmVndWxhciBmaWxlXFxuZnMvbmFtZWkuYy00NTY3LSAqIEBwYXJlbnQ6IGRpcmVjdG9yeSB0byBjb250YWluIGZpbGVcXG4tLVxcbmZzL25hbWVpLmMtNDU4MS0gKi9cXG5mcy9uYW1laS5jOjQ1ODI6c3RydWN0IGZpbGUgKnZmc19sb29rdXBfb3BlbihzdHJ1Y3QgcGF0aCAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqbGFzdCxcXG5mcy9uYW1laS5jLTQ1ODMtXFx0XFx0XFx0ICAgICBpbnQgb3Blbl9mbGFnLCB1bW9kZV90IG1vZGUpXFxuLS1cXG5mcy9uYW1laS5jLTQ2MzItfVxcbmZzL25hbWVpLmM6NDYzMzpFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHZmc19sb29rdXBfb3BlbiwgXFxcIm5mc2RcXFwiKTtcXG5mcy9uYW1laS5jLTQ2MzQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25hbWVpLmg9OTc9c3RydWN0IGRlbnRyeSAqc3RhcnRfcmVtb3ZpbmdfZGVudHJ5KHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmFtZWkuaC05OS1cXG5pbmNsdWRlL2xpbnV4L25hbWVpLmg6MTAwOnN0cnVjdCBmaWxlICp2ZnNfbG9va3VwX29wZW4oc3RydWN0IHBhdGggKnBhcmVudCwgc3RydWN0IHFzdHIgKmxhc3QsXFxuaW5jbHVkZS9saW51eC9uYW1laS5oLTEwMS1cXHRcXHRcXHQgICAgIGludCBvcGVuX2ZsYWcsIHVtb2RlX3QgbW9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDAwOjE4OjMzLjMwMTk0OTAzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODM2NTkzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYHZmc19sb29rdXBfb3BlbmAqKlxuXG5BbHJpZ2h0LCBzbyBgdmZzX2xvb2t1cF9vcGVuYCBpcyBleHBvcnRlZCBzcGVjaWZpY2FsbHkgZm9yIGBuZnNkYC4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGEgZGVkaWNhdGVkIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCBwcm9iYWJseSBpc24ndCBnZW5lcmFsaXplZCBiZXlvbmQgdGhhdCB1c2UgY2FzZSB5ZXQuIFRoYXQgZXhwb3J0IGlzIGEgc3Ryb25nIGhpbnQuIEhvd2V2ZXIsIEkgc2hvdWxkIGFsd2F5cyBiZSBtZXRpY3Vsb3VzLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgc3VzcGljaW9uLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB3aXRoaW4gdGhlIGBmcy9uZnNkL2AgZGlyZWN0b3J5LiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMg4oCTIEkgbmVlZCB0byBlbnN1cmUgaXQncyAqYWN0dWFsbHkqIGVtcGxveWVkIHRoZXJlIGFuZCBub3doZXJlIGVsc2UgaW4gdGhlIHdpZGVyIGtlcm5lbCBjb2RlYmFzZSBiZWZvcmUgZHJhd2luZyBhbnkgc29saWQgY29uY2x1c2lvbnMuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBlaXRoZXIgY29uZmlybSB0aGUgaW50ZW5kZWQgdXNhZ2Ugb3IgcmV2ZWFsIGEgcG90ZW50aWFsIHJlZmFjdG9yaW5nIG9yIGZ1dHVyZSB1c2UtY2FzZSBJIG1pZ2h0IGhhdmUgbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6MzYuNTg1NjEwMTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDE4NjcxMiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZzX2xvb2t1cF9vcGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25mc2QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMDoxODozNi44MTU4MDQwNDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM2NzE5MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBcdTAwMjYgQ29yZSBGdW5jdGlvbmFsaXR5IEltcGFjdCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXNuJ3QgKmRpcmVjdGx5KiBpbXBhY3RpbmcgYW55dGhpbmcgd2l0aGluIGBmcy9uZnNkYCBhdCB0aGUgbW9tZW50LCB3aGljaCBpbml0aWFsbHkgZ2F2ZSBtZSBhIGJpdCBvZiBwYXVzZS4gSXQgbG9va3MgbGlrZSBpdCdzIHNldHRpbmcgdGhlIHN0YWdlLCBpbnRyb2R1Y2luZyBhbiBBUEkgbGlrZWx5IGZvciBhIGZ1dHVyZSBwYXRjaCwgd2hpY2ggaXMgY29tbW9uLiBCdXQgdGhlbi4uLiBpdCBtb2RpZmllcyBgbG9va3VwX29wZW5gIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLiBCb3RoIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIFZGUyBmdW5jdGlvbnMsIGhlYXZpbHkgdXNlZCBjb3JlIGNvbXBvbmVudHMuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBrbm93IHRob3NlIGZ1bmN0aW9ucyBpbnRpbWF0ZWx5OyB0aGV5J3JlIHRoZSB3b3JraG9yc2VzIHdpdGhpbiB0aGUgYGZzL2AgbmFtZXNwYWNlLlxuXG5TcGVjaWZpY2FsbHksIGBvcGVuX2xhc3RfbG9va3Vwc2AgaXMgcmlnaHQgaW4gdGhlIHRoaWNrIG9mIHRoaW5ncyDigJMgaXQncyBjYWxsZWQgZHVyaW5nIGBkb19maWxwX29wZW5gIGFuZCBieSBgcGF0aF9vcGVuYXRgLiBUaGlzIGlzbid0IGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYy4gSXQgdG91Y2hlcyB0aGUgdmVyeSB3YXkgZmlsZXMgYXJlIG9wZW5lZCBhbmQgcGF0aHMgYXJlIHJlc29sdmVkLiBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb24gdGhpcy5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBUaW1lIHRvIGRpdmUgaW50byBgZnMvbmFtZWkuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUgaW4gYm90aCBgb3Blbl9sYXN0X2xvb2t1cHNgIGFuZCBgbG9va3VwX29wZW5gIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGNoYW5nZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6NDEuMjUyNTI0OTg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzIyMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9wZW5fbGFzdF9sb29rdXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25hbWVpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmFtZWkuYz00Mzk5PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9uYW1laS5jLTQ1NzItICogT3BlbiBhIGZpbGUgYWZ0ZXIgbG9va3VwIGFuZC9vciBjcmVhdGUuICBUaGlzIHByb3ZpZGVzIHNpbWlsYXJcXG5mcy9uYW1laS5jOjQ1NzM6ICogZnVuY3Rpb25hbGl0eSBvcGVuX2xhc3RfbG9va3VwcygpIGZvciBpbi1rZXJuZWwgdXNlcnMsIHBhcnRpY3VsYXJseVxcbmZzL25hbWVpLmMtNDU3NC0gKiBuZnNkLlxcbi0tXFxuZnMvbmFtZWkuYz00NjQwPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpsb29rdXBfZmFzdF9mb3Jfb3BlbihzdHJ1Y3QgbmFtZWlkYXRhICpuZCwgaW50IG9wZW5fZmxhZylcXG4tLVxcbmZzL25hbWVpLmMtNDY3MC1cXG5mcy9uYW1laS5jOjQ2NzE6c3RhdGljIGNvbnN0IGNoYXIgKm9wZW5fbGFzdF9sb29rdXBzKHN0cnVjdCBuYW1laWRhdGEgKm5kLFxcbmZzL25hbWVpLmMtNDY3Mi1cXHRcXHQgICBzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgc3RydWN0IG9wZW5fZmxhZ3MgKm9wKVxcbi0tXFxuZnMvbmFtZWkuYz00OTEzPXN0YXRpYyBzdHJ1Y3QgZmlsZSAqcGF0aF9vcGVuYXQoc3RydWN0IG5hbWVpZGF0YSAqbmQsXFxuLS1cXG5mcy9uYW1laS5jLTQ5MjktXFx0XFx0d2hpbGUgKCEoZXJyb3IgPSBsaW5rX3BhdGhfd2FsayhzLCBuZCkpIFxcdTAwMjZcXHUwMDI2XFxuZnMvbmFtZWkuYzo0OTMwOlxcdFxcdCAgICAgICAocyA9IG9wZW5fbGFzdF9sb29rdXBzKG5kLCBmaWxlLCBvcCkpICE9IE5VTEwpXFxuZnMvbmFtZWkuYy00OTMxLVxcdFxcdFxcdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDA6MTg6NDEuMzEyMjUyMTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0NDAzOTc2OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgUGF0aCBMb29rdXAgYW5kIEZpbGUgT3BlbmluZyoqXG5cbk9rYXksIGhlcmUncyBteSBsaW5lIG9mIHRoaW5raW5nIG9uIGhvdyB0byBiZXN0IGZ1enogdGhpcyBwYXRjaC4gRmlyc3QsIEkgc2VlIHRoYXQgYG9wZW5fbGFzdF9sb29rdXBzYCBpcyBkZWZpbml0ZWx5IHJlYWNoZWQgYnkgYHBhdGhfb3BlbmF0YC4gR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbnMsIHRoaXMgaXMgd29ydGggZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZSBgbG9va3VwX29wZW5gLCBgdmZzX2xvb2t1cF9vcGVuYCwgYW5kIGBvcGVuX2xhc3RfbG9va3Vwc2AuXG5cblRoZSByZWFsIGRpbGVtbWEgaXMgdGhhdCBib3RoIGBvcGVuX2xhc3RfbG9va3Vwc2AgYW5kIGBsb29rdXBfb3BlbmAgYXJlICpob3QtcGF0aCogZnVuY3Rpb25zLCBjYWxsZWQgb24gYWxtb3N0IGV2ZXJ5IHNpbmdsZSBmaWxlIG9wZW4uIFRoYXQncyBhIHByb2JsZW0sIGJlY2F1c2UgSSBuZWVkIHRvIGF2b2lkIHNrZXdpbmcgdGhlIGZ1enppbmcgZGlzdHJpYnV0aW9uIHRvd2FyZHMgdGhlc2UgZ2VuZXJpYyBmdW5jdGlvbnMuIExpc3RpbmcgdGhlbSB3b3VsZCBtYWtlIHN5emthbGxlciBwcmlvcml0aXplIHRoZW0gdG9vIGhlYXZpbHkgYW5kIG1pZ2h0IG1pc3MgbW9yZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBUaGUgcHJvbXB0IHNheXMgSSBzaG91bGQgYXZvaWQgdGhlc2UgaG90LXBhdGggZnVuY3Rpb25zLlxuXG5Jbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBub3QgbGlzdGluZyBhbnl0aGluZywgd2hpY2ggd291bGQgbGV0IHN5emthbGxlciBmdXp6IGFzIGl0IG5vcm1hbGx5IGRvZXMuICBCdXQgdGhlIHBhdGNoIGNsZWFybHkgY2VudGVycyBvbiBjaGFuZ2VzIHRvIGBsb29rdXBfb3BlbmAsIHdoaWNoIGFsc28gc2VlbXMgbGlrZSB0aGUgcHJpbWFyeSB0YXJnZXQuIEkgY291bGQgbGlzdCBgdmZzX2xvb2t1cF9vcGVuYCwgc2luY2UgaXQncyBhIG5ldyBmdW5jdGlvbiBhZGRlZCBieSB0aGUgcGF0Y2ggYW5kIHdvbid0IGJlIGhpdCBvdGhlcndpc2UuIEJ1dCBpdCdzIGN1cnJlbnRseSB1bnVzZWQsIHNvIHN5emthbGxlciB3b24ndCBldmVuIHRvdWNoIGl0LlxuXG5JJ20gd3Jlc3RsaW5nIHdpdGggd2hldGhlciB0byBsaXN0IGBsb29rdXBfb3BlbmAgYXQgYWxsLiBMaXN0aW5nIGEgaG90IGZ1bmN0aW9uIGNhbiBza2V3IHRoaW5ncy4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMuIFRoZSBwYXRjaCBtb2RpZmllcyBgbG9va3VwX29wZW5gIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgIGFuZCBhZGRzIGB2ZnNfbG9va3VwX29wZW5gLiBTaW5jZSB0aGUgYGxvb2t1cF9vcGVuYCBpcyBtb2RpZmllZCBpdCdzIHN0aWxsIHRoZSBtYWluIHRhcmdldC4gSSBjb3VsZCBqdXN0IGxpc3QgYHZmc19sb29rdXBfb3BlbmAgYnV0IGl0IGlzIHVudXNlZC5cblxuVGhlIHBhdGNoIG1lbnRpb25zIHRoZSBmdW5jdGlvbnMgYGxvb2t1cF9vcGVuYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBmaWxlIGNyZWF0aW9uIGFuZCBsb29rdXAsIGFuZCBgb3Blbl9sYXN0X2xvb2t1cHNgLCBjYWxsZWQgZm9yIHRoZSBsYXN0IGNvbXBvbmVudCBvZiBhIHBhdGguXG5cbkkndmUgZ290IHRvIG1ha2UgYSBjaG9pY2UuIEkgY291bGQganVzdCBsaXN0IGB2ZnNfbG9va3VwX29wZW5gLCB3aGljaCB3b24ndCBkbyBhbnl0aGluZyBiZWNhdXNlIGl0J3MgdW51c2VkLCBvciBJIGNvdWxkIGxpc3Qgbm90aGluZyBhbmQgbGV0IHRoZSBmdXp6ZXIgd29yayBhcyBpdCBkb2VzIG5vcm1hbGx5LiBCdXQgYGxvb2t1cF9vcGVuYCBpcyB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLCBldmVuIGlmIGl0J3MgaG90LiBUaGUgcHJvbXB0IHNheXMgdG8gXCJleHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLiBTaG91bGQgYXZvaWQgaG90LXBhdGggZnVuY3Rpb25zXCIuXG5JbiB0aGF0IGNhc2UsIEkgd2lsbCBqdXN0IGxpc3QgYHZmc19sb29rdXBfb3BlbmAgYXMgbXkgZm9jdXMgc3ltYm9sLCBldmVuIGlmIGl0J3Mgbm90IGhpdCwganVzdCB0byBiZSBjb25zZXJ2YXRpdmUuXG5cbk5vdywgd2FpdCBhIG1pbnV0ZSwgdGhlIGBsb29rdXBfb3BlbmAgZnVuY3Rpb24gaXMgc2lnbmlmaWNhbnRseSBjaGFuZ2VkLCBub3cgaGFuZGxpbmcgYGlub2RlX2xvY2tgLCBgbW50X3dhbnRfd3JpdGVgLCBgdHJ5X2JyZWFrX2RlbGVnYCwgZXRjLiBJdCdzIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCwgZXZlbiBpZiBpdCdzIGEgbGl0dGxlIGhvdCwgYW5kIGl0J3Mgc3BlY2lmaWMgdG8gZmlsZSBvcGVuaW5nLCBhbmQgbm90IGFzIGhvdCBhcyBga21hbGxvY2Agb3IgYHNwaW5fbG9ja2AuXG5cbkknbGwgaW5jbHVkZSBgbG9va3VwX29wZW5gIGluIHRoZSBsaXN0LCBhbG9uZyB3aXRoIGB2ZnNfbG9va3VwX29wZW5gLCBhbmQgd2hpbGUgaXQgaXMgc29tZXdoYXQgb2YgYSBob3QgcGF0aCBmdW5jdGlvbiwgSSdtIGNvbWZvcnRhYmxlIGluY2x1ZGluZyBpdC4gSXQgbWFrZXMgc2Vuc2UsIGFzIGEgaGlnaCB2YWx1ZSB0YXJnZXQuXG5cblRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZGVkLCBiZWNhdXNlIHRoaXMgaXMgY29yZSBWRlMgY29kZS4gSXQncyBpbiBgZnMvbmFtZWkuY2AuXG5cbioqTXkgRmluYWwgUmVjb21tZW5kYXRpb246KipcblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLlxuXG5NeSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlOiAgYGxvb2t1cF9vcGVuYCwgYHZmc19sb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2AuXG5cbmBFbmFibGVDb25maWdzYCByZW1haW5zIGFuIGVtcHR5IGxpc3QgYFtdYC5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IFRoaXMgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgdGhlIGNlbnRyYWwgZnVuY3Rpb25zIGBsb29rdXBfb3BlbmAgYW5kIGBvcGVuX2xhc3RfbG9va3Vwc2AsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGZ1bmRhbWVudGFsbHkgYWZmZWN0cyBmaWxlIGNyZWF0aW9uIGFuZCBvcGVuaW5nIGFjcm9zcyAqYWxsKiBmaWxlc3lzdGVtcy4gR2l2ZW4gdGhlc2UgY2hhbmdlcywgdGhpcyByZWZhY3RvcmluZyBpcyBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc4LCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwMDoxODo1Mi43NTI2NTI1NDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJ2ZnNfbG9va3VwX29wZW5cIixcbiAgICBcIm9wZW5fbGFzdF9sb29rdXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxvb2t1cF9vcGVuXCIsXG4gICAgXCJ2ZnNfbG9va3VwX29wZW5cIixcbiAgICBcIm9wZW5fbGFzdF9sb29rdXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIGNvcmUgVkZTIHBhdGggbG9va3VwIGFuZCBmaWxlIG9wZW5pbmcgbG9naWMgKGBsb29rdXBfb3BlbmAsIGBvcGVuX2xhc3RfbG9va3Vwc2ApIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGV4cG9ydGVkIGZ1bmN0aW9uIGB2ZnNfbG9va3VwX29wZW5gLiBUaGlzIGFmZmVjdHMgZmlsZSBjcmVhdGlvbiBhbmQgb3BlbmluZyBhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[1] Phase: Succeeded StartedAt: 2026-07-06 00:19:04 +0000 UTC FinishedAt: 2026-07-06 00:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 00:19:04 +0000 UTC FinishedAt: 2026-07-06 00:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2] Phase: Succeeded StartedAt: 2026-07-06 00:19:04 +0000 UTC FinishedAt: 2026-07-06 04:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 00:19:04 +0000 UTC FinishedAt: 2026-07-06 04:30:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 00:19:04 +0000 UTC FinishedAt: 2026-07-06 00:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 00:19:04 +0000 UTC FinishedAt: 2026-07-06 00:19:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwv7l8/series-workflowwv7l8-convert-artifact-3544414816/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 00:19:14 +0000 UTC FinishedAt: 2026-07-06 00:47:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 00:19:14 +0000 UTC FinishedAt: 2026-07-06 00:47:45 +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:*2c506a5d-247f-494e-b494-531667e6f07c,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-workflowwv7l8/series-workflowwv7l8-convert-artifact-3544414816/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": "6875e6ef-fa08-4fee-b92e-cca62564756d", "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-workflowwv7l8/series-workflowwv7l8-build-action-3609979174/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 00:19:14 +0000 UTC FinishedAt: 2026-07-06 00:47:35 +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:*2c506a5d-247f-494e-b494-531667e6f07c,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-workflowwv7l8/series-workflowwv7l8-convert-artifact-3544414816/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": "6875e6ef-fa08-4fee-b92e-cca62564756d", "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-workflowwv7l8/series-workflowwv7l8-build-action-3609979174/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 00:47:45 +0000 UTC FinishedAt: 2026-07-06 00:47:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 00:47:45 +0000 UTC FinishedAt: 2026-07-06 00:47:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 00:47:45 +0000 UTC FinishedAt: 2026-07-06 00:47:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 00:47:45 +0000 UTC FinishedAt: 2026-07-06 00:47:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwv7l8/series-workflowwv7l8-convert-artifact-978796167/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 00:47:56 +0000 UTC FinishedAt: 2026-07-06 00:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 00:47:56 +0000 UTC FinishedAt: 2026-07-06 00:49:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6875e6ef-fa08-4fee-b92e-cca62564756d,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-workflowwv7l8/series-workflowwv7l8-build-action-3609979174/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-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 00:50:09 +0000 UTC FinishedAt: 2026-07-06 00:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 00:50:09 +0000 UTC FinishedAt: 2026-07-06 00:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 00:50:09 +0000 UTC FinishedAt: 2026-07-06 01:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 00:50:09 +0000 UTC FinishedAt: 2026-07-06 01:26:30 +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:*2c506a5d-247f-494e-b494-531667e6f07c,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-workflowwv7l8/series-workflowwv7l8-convert-artifact-978796167/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": "aab20f52-f770-46e1-a498-eccf8baa1e77", "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-workflowwv7l8/series-workflowwv7l8-build-action-3371249675/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 00:50:09 +0000 UTC FinishedAt: 2026-07-06 01:26:20 +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:*2c506a5d-247f-494e-b494-531667e6f07c,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-workflowwv7l8/series-workflowwv7l8-convert-artifact-978796167/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": "aab20f52-f770-46e1-a498-eccf8baa1e77", "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-workflowwv7l8/series-workflowwv7l8-build-action-3371249675/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 01:26:30 +0000 UTC FinishedAt: 2026-07-06 01:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 01:26:30 +0000 UTC FinishedAt: 2026-07-06 01:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 01:26:30 +0000 UTC FinishedAt: 2026-07-06 01:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 01:26:30 +0000 UTC FinishedAt: 2026-07-06 01:28:21 +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:*aab20f52-f770-46e1-a498-eccf8baa1e77,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-workflowwv7l8/series-workflowwv7l8-build-action-3371249675/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-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 04:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 04:30:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"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:*6875e6ef-fa08-4fee-b92e-cca62564756d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aab20f52-f770-46e1-a498-eccf8baa1e77,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-workflowwv7l8/series-workflowwv7l8-build-action-3609979174/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-workflowwv7l8/series-workflowwv7l8-build-action-3371249675/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 01:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 01:28:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"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-workflowwv7l8/series-workflowwv7l8-convert-artifact-1219244384/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 01:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 01:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 01:28:31 +0000 UTC FinishedAt: 2026-07-06 01:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 01:28:41 +0000 UTC FinishedAt: 2026-07-06 04:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwv7l8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["lookup_open","vfs_lookup_open","open_last_lookups"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b736449288972c6071c820596ef9a7d6ac73a8ae","config_name":"upstream-apparmor-kasan.config","series_id":"43e37bd2-06cd-4004-be0a-8a77868d5873","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 01:28:41 +0000 UTC FinishedAt: 2026-07-06 04:30:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6875e6ef-fa08-4fee-b92e-cca62564756d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aab20f52-f770-46e1-a498-eccf8baa1e77,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-workflowwv7l8/series-workflowwv7l8-build-action-3609979174/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-workflowwv7l8/series-workflowwv7l8-build-action-3371249675/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-workflowwv7l8/series-workflowwv7l8-convert-artifact-1219244384/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,}