From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/librtas] rawhide: - Update to 2.0.7 Date: Tue, 02 Jun 2026 09:52:13 GMT Message-ID: <178039393368.1.592960971308940753.rpms-librtas-e5c1a827fcbf@fedoraproject.org> List-ID: X-Git-Repo: rpms/librtas X-Git-Branch: rawhide X-Git-Rev: e5c1a827fcbf2fb92589aa86681b59cf1cf8fc4a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbGlicnRhcwogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAgICAg ICAgIENvbW1pdCA6IGU1YzFhODI3ZmNiZjJmYjkyNTg5YWE4NjY4MWI1OWNmMWNmOGZjNGEKICAg ICAgICAgICAgQXV0aG9yIDogVGhhbiBOZ28gPHRoYW5AcmVkaGF0LmNvbT4KICAgICAgICAgICAg RGF0ZSAgIDogMjAyNi0wNi0wMlQxMTo1MjowNSswMjowMAogICAgICAgICAgICBTdGF0cyAgOiAr OC8tMTgyMiBpbiAxNCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZl ZG9yYXByb2plY3Qub3JnL3JwbXMvbGlicnRhcy9jL2U1YzFhODI3ZmNiZjJmYjkyNTg5YWE4NjY4 MWI1OWNmMWNmOGZjNGE/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAgICAgICAg ICAgLSBVcGRhdGUgdG8gMi4wLjcKLSBSZW1vdmUgdGhlIHBhdGNoZXMsIHdoaWNoIGFyZSBpbmNs dWRlZCBpbiB1cHN0cmVhbQoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9y ZQppbmRleCA2YjgwY2U3Li5jZjRhMDAzIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5n aXRpZ25vcmUKQEAgLTE1LDMgKzE1LDQgQEAgbGlicnRhcy0xLjMuNC50YXIuZ3oKIC9saWJydGFz LTIuMC40LnRhci5negogL2xpYnJ0YXMtMi4wLjUudGFyLmd6CiAvbGlicnRhcy0yLjAuNi50YXIu Z3oKKy9saWJydGFzLTIuMC43LnRhci5negoKZGlmZiAtLWdpdCBhL2xpYnJ0YXMtMDEtbG9ja2Rv d24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2ggYi9saWJydGFzLTAxLWxvY2tkb3duLWNvbXBh dGlibGUtYWJpLXBoYXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjY0 ZjM0Li4wMDAwMDAwCi0tLSBhL2xpYnJ0YXMtMDEtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhh c2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotY29tbWl0IDA3ZjQ5OTI0 MGQwYTM3M2ZhYzhlMDI1ZGFjZTVmODQ2NzM4MTFkNmQKLUF1dGhvcjogSGFyZW4gTXluZW5pIDxo YXJlbkBsaW51eC5pYm0uY29tPgotRGF0ZTogICBUdWUgQXByIDI5IDIwOjEwOjExIDIwMjUgLTA3 MDAKLQotICAgIGxpYnJ0YXM6IE1vdmUgcGxhdGZvcm0tZHVtcCBydGFzIGNhbGwgY29kZSB0byBz ZXBhcmF0ZSBmaWxlCi0gICAgCi0gICAgTmV3IGtlcm5lbCBpbnRlcmZhY2VzIHRvIHN1cHBvcnQg c3lzdGVtIGxvY2tkb3duIHdpbGwgYmUgYWRkZWQgZm9yCi0gICAgdGhpcyBSVEFTIGNhbGwuIFNv IG1vdmUgdGhlIHBsYXRmb3JtLWR1bXAgcnRhcyBjYWxsIGNvZGUgdG8KLSAgICBzZXBhcmF0ZSBm aWxlIHRvIGFkZCBjb2RlIGZvciBuZXcgaW50ZXJmYWNlcy4KLSAgICAKLSAgICBTaWduZWQtb2Zm LWJ5OiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci0gICAgU2lnbmVkLW9mZi1i eTogVHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgotCi1kaWZmIC0tZ2l0IGEv TWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNjcyNTdlMy4uNzk5N2U0NiAxMDA2NDQK LS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTI5LDYgKzI5LDcgQEAg bGliX0xUTElCUkFSSUVTICs9IGxpYnJ0YXMubGEKLSBsaWJydGFzX2xhX0xERkxBR1MgPSAtdmVy c2lvbi1pbmZvICQoTElCUlRBU19MSUJSQVJZX1ZFUlNJT04pIC1scHRocmVhZAotIGxpYnJ0YXNf bGFfU09VUkNFUyA9IFwKLSAJbGlicnRhc19zcmMvdnBkLmMgXAotKwlsaWJydGFzX3NyYy9wbGF0 Zm9ybS1kdW1wLmMgXAotIAlsaWJydGFzX3NyYy9vZmR0LmMgXAotIAlsaWJydGFzX3NyYy9zeXNj YWxsX2NhbGxzLmMgXAotIAlsaWJydGFzX3NyYy9zeXNjYWxsX3Jtby5jIFwKLWRpZmYgLS1naXQg YS9saWJydGFzX3NyYy9wbGF0Zm9ybS1kdW1wLmMgYi9saWJydGFzX3NyYy9wbGF0Zm9ybS1kdW1w LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hNTRjNGVlCi0tLS0gL2Rl di9udWxsCi0rKysgYi9saWJydGFzX3NyYy9wbGF0Zm9ybS1kdW1wLmMKLUBAIC0wLDAgKzEsOTUg QEAKLSsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjEtb3ItbGF0ZXIKLSsKLSsv LyBTdXBwb3J0IGZvciBhY2Nlc3NpbmcgSUJNIFBvd2VyIHN5c3RlbXMgVml0YWwgUHJvZHVjdCBE YXRhIChWUEQpCi0rLy8gdmlhIC9kZXYvcGFwci1wbGF0Zm9ybS1kdW1wIG9yIHRoZSBsZWdhY3kg cnRhcygpIHN5c2NhbGwuCi0rCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGludHR5 cGVzLmg+Ci0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0rI2lu Y2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8dW5pc3Rk Lmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5o PgotKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotKwotKyNpbmNsdWRlICJpbnRlcm5hbC5oIgot KyNpbmNsdWRlICJsaWJydGFzLmgiCi0rCi0rCi0rLyoqCi0rICogcnRhc19wbGF0Zm9ybV9kdW1w Ci0rICogSW50ZXJmYWNlIHRvIHRoZSBpYm0scGxhdGZvcm0tZHVtcCBydGFzIGNhbGwKLSsgKgot KyAqIEBwYXJhbSBkdW1wX3RhZwotKyAqIEBwYXJhbSBzZXF1ZW5jZQotKyAqIEBwYXJhbSBidWZm ZXIgYnVmZmVyIHRvIHdyaXRlIGR1bXAgdG8KLSsgKiBAcGFyYW0gbGVuZ3RoIGJ1ZmZlciBsZW5n dGgKLSsgKiBAcGFyYW0gbmV4dF9zZXEKLSsgKiBAcGFyYW0gYnl0ZXNfcmV0Ci0rICogQHJldHVy biAwIG9uIHN1Y2Nlc3MsICEwIG90aHdlcndpc2UKLSsgKi8KLStpbnQgcnRhc19wbGF0Zm9ybV9k dW1wKHVpbnQ2NF90IGR1bXBfdGFnLCB1aW50NjRfdCBzZXF1ZW5jZSwgdm9pZCAqYnVmZmVyLAot KwkJICAgICAgIHNpemVfdCBsZW5ndGgsIHVpbnQ2NF90ICpzZXFfbmV4dCwgdWludDY0X3QgKmJ5 dGVzX3JldCkKLSt7Ci0rCXVpbnQ2NF90IGVsYXBzZWQgPSAwOwotKwl1aW50MzJfdCBrZXJuYnVm X3BhID0gMDsKLSsJdWludDMyX3QgbmV4dF9oaSwgbmV4dF9sbzsKLSsJdWludDMyX3QgYnl0ZXNf aGksIGJ5dGVzX2xvOwotKwl1aW50MzJfdCBkdW1wX3RhZ19oaSwgZHVtcF90YWdfbG87Ci0rCXZv aWQgKmtlcm5idWYgPSBOVUxMOwotKwlpbnQgcmMsIHN0YXR1czsKLSsKLSsJcmMgPSBzYW5pdHlf Y2hlY2soKTsKLSsJaWYgKHJjKQotKwkJcmV0dXJuIHJjOwotKwotKwlpZiAoYnVmZmVyKSB7Ci0r CQlyYyA9IHJ0YXNfZ2V0X3Jtb19idWZmZXIobGVuZ3RoLCAma2VybmJ1ZiwgJmtlcm5idWZfcGEp OwotKwkJaWYgKHJjKQotKwkJCXJldHVybiByYzsKLSsJfQotKwotKwkvKiBDb252ZXJ0aW5nIGEg NjRiaXQgaG9zdCB2YWx1ZSB0byAzMmJpdCBCRSwgX2hpIGFuZCBfbG8KLSsJICogcGFpciBpcyB0 cmlja3k6IHdlIHNob3VsZCBjb252ZXJ0IHRoZSBfaGkgYW5kIF9sbyAzMmJpdHMKLSsJICogb2Yg dGhlIDY0Yml0IGhvc3QgdmFsdWUuCi0rCSAqLwotKwlkdW1wX3RhZ19oaSA9IGh0b2JlMzIoQklU UzMyX0hJKGR1bXBfdGFnKSk7Ci0rCWR1bXBfdGFnX2xvID0gaHRvYmUzMihCSVRTMzJfTE8oZHVt cF90YWcpKTsKLSsKLSsJbmV4dF9oaSA9IGh0b2JlMzIoQklUUzMyX0hJKHNlcXVlbmNlKSk7Ci0r CW5leHRfbG8gPSBodG9iZTMyKEJJVFMzMl9MTyhzZXF1ZW5jZSkpOwotKwotKwlkbyB7Ci0rCQly YyA9IHJ0YXNfY2FsbF9ub19kZWxheSgiaWJtLHBsYXRmb3JtLWR1bXAiLCA2LCA1LCBkdW1wX3Rh Z19oaSwKLSsJCQkJCWR1bXBfdGFnX2xvLCBuZXh0X2hpLCBuZXh0X2xvLAotKwkJCQkJaHRvYmUz MihrZXJuYnVmX3BhKSwgaHRvYmUzMihsZW5ndGgpLAotKwkJCQkJJnN0YXR1cywgJm5leHRfaGks ICZuZXh0X2xvLAotKwkJCQkJJmJ5dGVzX2hpLCAmYnl0ZXNfbG8pOwotKwkJaWYgKHJjIDwgMCkK LSsJCQlicmVhazsKLSsKLSsJCXNlcXVlbmNlID0gQklUUzY0KGJlMzJ0b2gobmV4dF9oaSksIGJl MzJ0b2gobmV4dF9sbykpOwotKwkJZGJnKCIlczogc2VxX25leHQgPSAweCUiIFBSSXg2NCAiXG4i LCBfX0ZVTkNUSU9OX18sIHNlcXVlbmNlKTsKLSsKLSsJCXJjID0gaGFuZGxlX2RlbGF5KHN0YXR1 cywgJmVsYXBzZWQpOwotKwl9IHdoaWxlIChyYyA9PSBDQUxMX0FHQUlOKTsKLSsKLSsJaWYgKGJ1 ZmZlciAmJiAocmMgPT0gMCkpCi0rCQltZW1jcHkoYnVmZmVyLCBrZXJuYnVmLCBsZW5ndGgpOwot KwotKwlpZiAoa2VybmJ1ZikKLSsJCSh2b2lkKXJ0YXNfZnJlZV9ybW9fYnVmZmVyKGtlcm5idWYs IGtlcm5idWZfcGEsIGxlbmd0aCk7Ci0rCi0rCSpzZXFfbmV4dCA9IHNlcXVlbmNlOwotKwlieXRl c19oaSA9IGJlMzJ0b2goYnl0ZXNfaGkpOwotKwlieXRlc19sbyA9IGJlMzJ0b2goYnl0ZXNfbG8p OwotKwkqYnl0ZXNfcmV0ID0gQklUUzY0KGJ5dGVzX2hpLCBieXRlc19sbyk7Ci0rCi0rCWRiZygi KDB4JSJQUkl4NjQiLCAweCUiUFJJeDY0IiwgJXAsICV6dSwgJXAsICVwKSA9ICVkLCAweCUiUFJJ eDY0IiwgMHglIlBSSXg2NCJcbiIsCi0rCSAgICAgZHVtcF90YWcsIHNlcXVlbmNlLCBidWZmZXIs IGxlbmd0aCwgc2VxX25leHQsIGJ5dGVzX3JldCwKLSsJICAgICByYyA/IHJjIDogc3RhdHVzLCAq c2VxX25leHQsICpieXRlc19yZXQpOwotKwlyZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLSt9Ci0r Ci1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvc3lzY2FsbF9jYWxscy5jIGIvbGlicnRhc19zcmMv c3lzY2FsbF9jYWxscy5jCi1pbmRleCAwZjE1ODI3Li45OTYzNTg4IDEwMDY0NAotLS0tIGEvbGli cnRhc19zcmMvc3lzY2FsbF9jYWxscy5jCi0rKysgYi9saWJydGFzX3NyYy9zeXNjYWxsX2NhbGxz LmMKLUBAIC03NjgsODAgKzc2OCw2IEBAIGludCBydGFzX2xwYXJfcGVyZnRvb2xzKGludCBzdWJm dW5jLCBjaGFyICp3b3JrYXJlYSwgdW5zaWduZWQgaW50IGxlbmd0aCwKLSAJICAgIGxlbmd0aCwg c2VxdWVuY2UsIHNlcV9uZXh0LCByYyA/IHJjIDogc3RhdHVzLCAqc2VxX25leHQpOwotIAlyZXR1 cm4gcmMgPyByYyA6IHN0YXR1czsKLSB9Ci0tLyoqCi0tICogcnRhc19wbGF0Zm9ybV9kdW1wCi0t ICogSW50ZXJmYWNlIHRvIHRoZSBpYm0scGxhdGZvcm0tZHVtcCBydGFzIGNhbGwKLS0gKgotLSAq IEBwYXJhbSBkdW1wX3RhZwotLSAqIEBwYXJhbSBzZXF1ZW5jZQotLSAqIEBwYXJhbSBidWZmZXIg YnVmZmVyIHRvIHdyaXRlIGR1bXAgdG8KLS0gKiBAcGFyYW0gbGVuZ3RoIGJ1ZmZlciBsZW5ndGgK LS0gKiBAcGFyYW0gbmV4dF9zZXEKLS0gKiBAcGFyYW0gYnl0ZXNfcmV0Ci0tICogQHJldHVybiAw IG9uIHN1Y2Nlc3MsICEwIG90aHdlcndpc2UKLS0gKi8KLS1pbnQgcnRhc19wbGF0Zm9ybV9kdW1w KHVpbnQ2NF90IGR1bXBfdGFnLCB1aW50NjRfdCBzZXF1ZW5jZSwgdm9pZCAqYnVmZmVyLAotLQkJ ICAgICAgIHNpemVfdCBsZW5ndGgsIHVpbnQ2NF90ICpzZXFfbmV4dCwgdWludDY0X3QgKmJ5dGVz X3JldCkKLS17Ci0tCXVpbnQ2NF90IGVsYXBzZWQgPSAwOwotLQl1aW50MzJfdCBrZXJuYnVmX3Bh ID0gMDsKLS0JdWludDMyX3QgbmV4dF9oaSwgbmV4dF9sbzsKLS0JdWludDMyX3QgYnl0ZXNfaGks IGJ5dGVzX2xvOwotLQl1aW50MzJfdCBkdW1wX3RhZ19oaSwgZHVtcF90YWdfbG87Ci0tCXZvaWQg Kmtlcm5idWYgPSBOVUxMOwotLQlpbnQgcmMsIHN0YXR1czsKLS0KLS0JcmMgPSBzYW5pdHlfY2hl Y2soKTsKLS0JaWYgKHJjKQotLQkJcmV0dXJuIHJjOwotLQotLQlpZiAoYnVmZmVyKSB7Ci0tCQly YyA9IHJ0YXNfZ2V0X3Jtb19idWZmZXIobGVuZ3RoLCAma2VybmJ1ZiwgJmtlcm5idWZfcGEpOwot LQkJaWYgKHJjKQotLQkJCXJldHVybiByYzsKLS0JfQotLQotLQkvKiBDb252ZXJ0aW5nIGEgNjRi aXQgaG9zdCB2YWx1ZSB0byAzMmJpdCBCRSwgX2hpIGFuZCBfbG8KLS0JICogcGFpciBpcyB0cmlj a3k6IHdlIHNob3VsZCBjb252ZXJ0IHRoZSBfaGkgYW5kIF9sbyAzMmJpdHMKLS0JICogb2YgdGhl IDY0Yml0IGhvc3QgdmFsdWUuCi0tCSAqLwotLQlkdW1wX3RhZ19oaSA9IGh0b2JlMzIoQklUUzMy X0hJKGR1bXBfdGFnKSk7Ci0tCWR1bXBfdGFnX2xvID0gaHRvYmUzMihCSVRTMzJfTE8oZHVtcF90 YWcpKTsKLS0KLS0JbmV4dF9oaSA9IGh0b2JlMzIoQklUUzMyX0hJKHNlcXVlbmNlKSk7Ci0tCW5l eHRfbG8gPSBodG9iZTMyKEJJVFMzMl9MTyhzZXF1ZW5jZSkpOwotLQotLQlkbyB7Ci0tCQlyYyA9 IHJ0YXNfY2FsbF9ub19kZWxheSgiaWJtLHBsYXRmb3JtLWR1bXAiLCA2LCA1LCBkdW1wX3RhZ19o aSwKLS0JCQkJCWR1bXBfdGFnX2xvLCBuZXh0X2hpLCBuZXh0X2xvLAotLQkJCQkJaHRvYmUzMihr ZXJuYnVmX3BhKSwgaHRvYmUzMihsZW5ndGgpLAotLQkJCQkJJnN0YXR1cywgJm5leHRfaGksICZu ZXh0X2xvLAotLQkJCQkJJmJ5dGVzX2hpLCAmYnl0ZXNfbG8pOwotLQkJaWYgKHJjIDwgMCkKLS0J CQlicmVhazsKLS0KLS0JCXNlcXVlbmNlID0gQklUUzY0KGJlMzJ0b2gobmV4dF9oaSksIGJlMzJ0 b2gobmV4dF9sbykpOwotLQkJZGJnKCIlczogc2VxX25leHQgPSAweCUiIFBSSXg2NCAiXG4iLCBf X0ZVTkNUSU9OX18sIHNlcXVlbmNlKTsKLS0KLS0JCXJjID0gaGFuZGxlX2RlbGF5KHN0YXR1cywg JmVsYXBzZWQpOwotLQl9IHdoaWxlIChyYyA9PSBDQUxMX0FHQUlOKTsKLS0KLS0JaWYgKGJ1ZmZl ciAmJiAocmMgPT0gMCkpCi0tCQltZW1jcHkoYnVmZmVyLCBrZXJuYnVmLCBsZW5ndGgpOwotLQot LQlpZiAoa2VybmJ1ZikKLS0JCSh2b2lkKXJ0YXNfZnJlZV9ybW9fYnVmZmVyKGtlcm5idWYsIGtl cm5idWZfcGEsIGxlbmd0aCk7Ci0tCi0tCSpzZXFfbmV4dCA9IHNlcXVlbmNlOwotLQlieXRlc19o aSA9IGJlMzJ0b2goYnl0ZXNfaGkpOwotLQlieXRlc19sbyA9IGJlMzJ0b2goYnl0ZXNfbG8pOwot LQkqYnl0ZXNfcmV0ID0gQklUUzY0KGJ5dGVzX2hpLCBieXRlc19sbyk7Ci0tCi0tCWRiZygiKDB4 JSJQUkl4NjQiLCAweCUiUFJJeDY0IiwgJXAsICV6dSwgJXAsICVwKSA9ICVkLCAweCUiUFJJeDY0 IiwgMHglIlBSSXg2NCJcbiIsCi0tCSAgICAgZHVtcF90YWcsIHNlcXVlbmNlLCBidWZmZXIsIGxl bmd0aCwgc2VxX25leHQsIGJ5dGVzX3JldCwKLS0JICAgICByYyA/IHJjIDogc3RhdHVzLCAqc2Vx X25leHQsICpieXRlc19yZXQpOwotLQlyZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLS19Ci0gCi0g LyoqCi0gICogcnRhc19yZWFkX3Nsb3RfcmVzZXQKCmRpZmYgLS1naXQgYS9saWJydGFzLTAyLWxv Y2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoIGIvbGlicnRhcy0wMi1sb2NrZG93bi1j b21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg YWI1MzE1Yi4uMDAwMDAwMAotLS0gYS9saWJydGFzLTAyLWxvY2tkb3duLWNvbXBhdGlibGUtYWJp LXBoYXNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLWNvbW1pdCAwMTAy YzU3NmQ3M2U3Y2ZhM2Q2MTEyOGNlMzlkNDI4MzNhNDVhOTg3Ci1BdXRob3I6IEhhcmVuIE15bmVu aSA8aGFyZW5AbGludXguaWJtLmNvbT4KLURhdGU6ICAgVHVlIEFwciAyOSAyMDoxMDoxMiAyMDI1 IC0wNzAwCi0KLSAgICBsaWJydGFzL3BsYXRmb3JtLWR1bXA6IHByZWZlciAvZGV2L3BhcHItcGxh dGZvcm0tZHVtcCB3aGVuIGF2YWlsYWJsZQotICAgIAotICAgIHJ0YXNfcGxhdGZvcm1fZHVtcCgp IHVzZXMgc3lzX3J0YXMoKSBjYWxsIHRvIG9idGFpbiBwbGF0Zm9ybSBkdW1wLgotICAgIEJ1dCBp dCBuZWVkcyAvZGV2L21lbSBhY2Nlc3MgaW4gdGhlIHVzZXIgc3BhY2Ugd2hpY2ggaXMgcmVzdHJp Y3RlZAotICAgIHVuZGVyIHN5c3RlbSBsb2NrZG93bi4gU28gdGhpcyBwYXRjaCBhZGRzIGNoYW5n ZXMgdG8gdXNlIG5ldyBrZXJuZWwKLSAgICBBQkkgZm9yIHN5c3RlbSBsb2NrZG93biBmZWF0dXJl LgotICAgIAotICAgIEtlcm5lbCBwcm92aWRlcyBuZXcgaW50ZXJmYWNlcyBzdWNoIGFzIG9wZW4v aW9jdGwvcmVhZCB3aXRoCi0gICAgL2Rldi9wYXByLXBsYXRmb3JtLWR1bXAgY2hhciBiYXNlZCBk cml2ZXIuIEZvciB0aGUgZmlyc3QgaW52b2NhdGlvbgotICAgIG9mIHJ0YXNfcGxhdGZvcm1fZHVt cCgpIGNhbGwsIGluaXRpYWxpemUgYW4gaW50ZXJuYWwgZnVuY3Rpb24KLSAgICBwb2ludGVyIGRl cGVuZHMgb24gdGhlIHByZXNlbmNlIG9mIGFib3ZlIGRldmljZSBub2RlLiBJZiBub3QKLSAgICBm YWxsYmFjayB0byB0aGUgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uIHB0aHJlYWRfb25jZSgp IGlzIHVzZWQKLSAgICB0byB0aGlzIHNldHVwIGlzIGRvbmUgb25seSBvbmNlLgotICAgIAotICAg IE9wZW4gL2Rldi9wYXByLXBsYXRmb3JtLWR1bXAgYW5kIG9idGFpbiBGRCB3aXRoCi0gICAgUEFQ Ul9QTEFURk9STV9EVU1QX0lPQ19DUkVBVEVfSEFORExFIGlvY3RsIGNvbW1hbmQuIFRoaXMgZmls ZQotICAgIGRlc2NyaXB0b3IgaXMgcmVmZXJlbmNlIHRvIHRoZSBkdW1wIHNlcXVlbmNlIG9idGFp bmVkIHdpdGggdGhlCi0gICAgc3BlY2lmaWVkIGR1bXAgdGFnLiBUaGVuIHJlYWQoKSBjYWxsIGZv ciBlYWNoIHJ0YXNfcGxhdGZvcm1fZHVtcCgpCi0gICAgd2l0aCB0aGUgRkQgcmV0cmlldmVzIHRo ZSBkdW1wIGRhdGEgYXMgYSBzZXF1ZW5jZSB1bnRpbCB0aGUgcmVhZCgpCi0gICAgcmV0dXJucyAw LgotICAgIAotICAgIFRoZSBoeXBlcnZpc29yIHVzZXMgc2VxdWVuY2UgbnVtYmVyIHBhc3NlZCB3 aXRoIGlibSxwbGF0Zm9ybS1kdW1wCi0gICAgUlRBUyBjYWxsIHRvIG1ha2Ugc3VyZSB0aGUgY29t cGxldGUgZHVtcCBpcyB0cmFuc2ZlcnJlZC4gRmlyc3QKLSAgICBSVEFTIGNhbGwgaXMgaW52b2tl ZCB3aXRoIHNlcXVlbmNlIG51bWJlciAwIHRvIHN0YXJ0IG9idGFpbmluZyB0aGUKLSAgICBkdW1w IGFuZCB0aGVuIFJUQVMgYWR2YW5jZXMgdGhlIHNlcXVlbmNlIG51bWJlciBieSBhIGZpeGVkIGlu dGVydmFsCi0gICAgb24gZWFjaCBjYWxsIGluIGEgc2VxdWVuY2UgdW50aWwgdGhlIGR1bXAgaXMg Y29tcGxldGVkLiBUaGUgY3VycmVudAotICAgIGltcGxlbWVudGF0aW9uIGluIHRoZSB1c2VyIHNw YWNlIHRyYWNrcyB0aGlzIHNlcXVlbmNlIG51bWJlcgotICAgIHJldHVybmVkIGZvciBlYWNoIFJU QVMgYW5kIHBhc3NlcyB0byB0aGUgbmV4dCBSVEFTLiBXaGVyZWFzIHdpdGgKLSAgICB0aGUgbmV3 IEFCSSwgdGhlIGtlcm5lbCB1c2VzIGl0IGludGVybmFsbHkgZm9yIHRoZSBjb3JyZXNwb25kaW5n Ci0gICAgZHVtcCB0YWcgYW5kIGxpYnJ0YXMgdXNlcyBpdCBhcyBhIEZEIGZvciB0aGUgc3Vic2Vx dWVudCByZWFkIGNhbGxzLgotICAgIAotICAgIEFsc28gYWRkZWQgdGhlIGNvcHkgb2Yga2VybmVs IHVhcGkgaGVhZGVyIHBhcHItcGxhdGZvcm0tZHVtcC5oLgotICAgIAotICAgIFNpZ25lZC1vZmYt Ynk6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5 OiBUeXJlbCBEYXR3eWxlciA8dHlyZWxkQGxpbnV4LmlibS5jb20+Ci0KLWRpZmYgLS1naXQgYS9N YWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA3OTk3ZTQ2Li4xNTZhNjhiIDEwMDY0NAot LS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDAsNyArNDAsOCBAQCBu b2luc3RfSEVBREVSUyArPSBcCi0gCWxpYnJ0YXNfc3JjL2ludGVybmFsLmggXAotIAlsaWJydGFz X3NyYy9wYXByLW1pc2NkZXYuaCBcCi0gCWxpYnJ0YXNfc3JjL3BhcHItc3lzcGFybS5oIFwKLS0J bGlicnRhc19zcmMvcGFwci12cGQuaAotKwlsaWJydGFzX3NyYy9wYXByLXZwZC5oIFwKLSsJbGli cnRhc19zcmMvcGFwci1wbGF0Zm9ybS1kdW1wLmgKLSAKLSAjIFNlZSAiVXBkYXRpbmcgbGlicmFy eSB2ZXJzaW9uIGluZm9ybWF0aW9uIiBpbiB0aGUgbGlidG9vbCBtYW51YWwgZm9yCi0gIyBob3cg dG8gbWFpbnRhaW4gdGhlc2UgdmFsdWVzLiBUaGV5IGFyZSAqbm90KiB0aWVkIHRvIHRoZSByZWxl YXNlCi1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvcGFwci1wbGF0Zm9ybS1kdW1wLmggYi9saWJy dGFzX3NyYy9wYXByLXBsYXRmb3JtLWR1bXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjU2ZDUwOWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnJ0YXNfc3JjL3BhcHIt cGxhdGZvcm0tZHVtcC5oCi1AQCAtMCwwICsxLDE5IEBACi0rLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUKLSsjaWZuZGVmIF9VQVBJX1BB UFJfUExBVEZPUk1fRFVNUF9IXwotKyNkZWZpbmUgX1VBUElfUEFQUl9QTEFURk9STV9EVU1QX0hf Ci0rCi0rI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGFzbS9pb2N0bC5oPgot KyNpbmNsdWRlICJwYXByLW1pc2NkZXYuaCIKLSsKLSsvKgotKyAqIGlvY3RsIGZvciAvZGV2L3Bh cHItcGxhdGZvcm0tZHVtcC4gUmV0dXJucyBhIHBsYXRmb3JtLWR1bXAgaGFuZGxlCi0rICogZmQg Y29ycmVzcG9uZGluZyB0byB0aGUgZHVtcCB0YWcKLSsgKi8KLSsjZGVmaW5lIFBBUFJfUExBVEZP Uk1fRFVNUF9JT0NfQ1JFQVRFX0hBTkRMRQlfSU9XKFBBUFJfTUlTQ0RFVl9JT0NfSUQsIDYsIF9f dTY0KQotKy8qCi0rICogaW9jdGwgZm9yIC9kZXYvcGFwci1wbGF0Zm9ybS1kdW1wIHRvIGludmFs aWRhdGUgcGxhdGZvcm0gZHVtcAotKyAqIGFmdGVyIGR1bXAgY29tcGxldGVkLiBVc2VzIEZEIHJl dHVybmVkIGZyb20gdGhlIGFib3ZlIGlvY3RsLgotKyAqLwotKyNkZWZpbmUgUEFQUl9QTEFURk9S TV9EVU1QX0lPQ19JTlZBTElEQVRFCV9JT1coUEFQUl9NSVNDREVWX0lPQ19JRCwgNywgX191NjQp Ci0rI2VuZGlmIC8qIF9VQVBJX1BBUFJfUExBVEZPUk1fRFVNUF9IXyAqLwotZGlmZiAtLWdpdCBh L2xpYnJ0YXNfc3JjL3BsYXRmb3JtLWR1bXAuYyBiL2xpYnJ0YXNfc3JjL3BsYXRmb3JtLWR1bXAu YwotaW5kZXggYTU0YzRlZS4uZDQ1NjQ0NSAxMDA2NDQKLS0tLSBhL2xpYnJ0YXNfc3JjL3BsYXRm b3JtLWR1bXAuYwotKysrIGIvbGlicnRhc19zcmMvcGxhdGZvcm0tZHVtcC5jCi1AQCAtNSw2ICs1 LDEwIEBACi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0r I2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDxwdGhy ZWFkLmg+Ci0rI2luY2x1ZGUgPHNlYXJjaC5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5j bHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0xMywxMCArMTcsMTIg QEAKLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+ Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNp bmNsdWRlIDxzeXMvc3RhdC5oPgotIAotICNpbmNsdWRlICJpbnRlcm5hbC5oIgotICNpbmNsdWRl ICJsaWJydGFzLmgiCi0tCi0rI2luY2x1ZGUgInBhcHItcGxhdGZvcm0tZHVtcC5oIgotIAotIC8q KgotICAqIHJ0YXNfcGxhdGZvcm1fZHVtcAotQEAgLTMwLDcgKzM2LDcgQEAKLSAgKiBAcGFyYW0g Ynl0ZXNfcmV0Ci0gICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG90aHdlcndpc2UKLSAgKi8K LS1pbnQgcnRhc19wbGF0Zm9ybV9kdW1wKHVpbnQ2NF90IGR1bXBfdGFnLCB1aW50NjRfdCBzZXF1 ZW5jZSwgdm9pZCAqYnVmZmVyLAotK2ludCBwbGF0Zm9ybV9kdW1wX3VzZXIodWludDY0X3QgZHVt cF90YWcsIHVpbnQ2NF90IHNlcXVlbmNlLCB2b2lkICpidWZmZXIsCi0gCQkgICAgICAgc2l6ZV90 IGxlbmd0aCwgdWludDY0X3QgKnNlcV9uZXh0LCB1aW50NjRfdCAqYnl0ZXNfcmV0KQotIHsKLSAJ dWludDY0X3QgZWxhcHNlZCA9IDA7Ci1AQCAtOTMsMyArOTksMTIzIEBAIGludCBydGFzX3BsYXRm b3JtX2R1bXAodWludDY0X3QgZHVtcF90YWcsIHVpbnQ2NF90IHNlcXVlbmNlLCB2b2lkICpidWZm ZXIsCi0gCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotIH0KLSAKLStzdGF0aWMgYm9vbCBwbGF0 Zm9ybV9kdW1wX2Nhbl91c2VfY2hhcmRldih2b2lkKQotK3sKLSsJc3RydWN0IHN0YXQgc3RhdGJ1 ZjsKLSsKLSsJaWYgKHN0YXQoIi9kZXYvcGFwci1wbGF0Zm9ybS1kdW1wIiwgJnN0YXRidWYpKQot KwkJcmV0dXJuIGZhbHNlOwotKwotKwlpZiAoIVNfSVNDSFIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSsJ CXJldHVybiBmYWxzZTsKLSsKLSsJaWYgKGNsb3NlKG9wZW4oIi9kZXYvcGFwci1wbGF0Zm9ybS1k dW1wIiwgT19SRE9OTFkpKSkKLSsJCXJldHVybiBmYWxzZTsKLSsKLSsJcmV0dXJuIHRydWU7Ci0r fQotKwotKyNkZWZpbmUgREVWUEFUSCAiL2Rldi9wYXByLXBsYXRmb3JtLWR1bXAiCi0rCi0rc3Rh dGljIGludCBwbGF0Zm9ybV9kdW1wX2ZkX25ldyh1aW50NjRfdCBkdW1wX3RhZykKLSt7Ci0rCWNv bnN0IGludCBkZXZmZCA9IG9wZW4oREVWUEFUSCwgT19XUk9OTFkpOwotKwlpbnQgZmQgPSAtMTsK LSsKLSsJaWYgKGRldmZkIDwgMCkKLSsJCXJldHVybiAtMTsKLSsKLSsJZmQgPSBpb2N0bChkZXZm ZCwgUEFQUl9QTEFURk9STV9EVU1QX0lPQ19DUkVBVEVfSEFORExFLCAmZHVtcF90YWcpOwotKwot KwljbG9zZShkZXZmZCk7Ci0rCXJldHVybiBmZDsKLSt9Ci0rCi0raW50IHBsYXRmb3JtX2R1bXBf a2VybmVsKHVpbnQ2NF90IGR1bXBfdGFnLCB1aW50NjRfdCBzZXF1ZW5jZSwgdm9pZCAqYnVmZmVy LAotKwkJc2l6ZV90IGxlbmd0aCwgdWludDY0X3QgKnNlcV9uZXh0LCB1aW50NjRfdCAqYnl0ZXNf cmV0KQotK3sKLSsJaW50IGZkID0gKHNlcXVlbmNlID09IDApID8gcGxhdGZvcm1fZHVtcF9mZF9u ZXcoZHVtcF90YWcpCi0rCQkJCTogKGludClzZXF1ZW5jZTsKLSsJaW50IHJ0YXNfc3RhdHVzID0g MDsKLSsJc3NpemVfdCBzaXplOwotKwotKwkvKiBTeW50aGVzaXplIGlibSxnZXQtcGxhdGZyb20t ZHVtcCAicGFyYW1ldGVyIGVycm9yIiAqLwotKwlpZiAoZmQgPCAwKQotKwkJcmV0dXJuIC0zOwot KwotKwkvKgotKwkgKiBydGFzX3BsYXRmb3JtX2R1bXAoKSBpcyBjYWxsZWQgd2l0aCBidWYgPSBO VUxMIGFuZCBsZW5ndGggPSAwCi0rCSAqIGZvciAiZHVtcCBjb21wbGV0ZSIgUlRBUyBjYWxsIHRv IGludmFsaWRhdGUgZHVtcC4KLSsJICogRm9yIGtlcm5lbCBpbnRlcmZhY2UsIHJlYWQoKSB3aWxs IGJlIGNvbnRpbnVlZCB1bnRpbCB0aGUKLSsJICogcmV0dXJuIHZhbHVlID0gMC4gTWVhbnMga2Vy bmVsIEFQSSB3aWxsIHJldHVybiB0aGlzIHZhbHVlIG9ubHkKLSsJICogYWZ0ZXIgdGhlIGtlcm5l bCBSVEFTIGNhbGwgcmV0dXJuZWQgImR1bXAgY29tcGxldGUiIHN0YXR1cwotKwkgKiBhbmQgdGhl IGh5cGVydmlzb3IgZXhwZWN0cyBsYXN0IFJUQVMgY2FsbCB0byBpbnZhbGlkYXRlIGR1bXAuCi0r CSAqIFNvIGlzc3VlIHRoZSBmb2xsb3dpbmcgaW9jdGwgQVBJIHdoaWNoIGludmFsaWRhdGVzIHRo ZSBkdW1wCi0rCSAqIHdpdGggdGhlIGxhc3QgUlRBUyBjYWxsLgotKwkgKi8KLSsJaWYgKGJ1ZmZl ciA9PSBOVUxMKSB7Ci0rCQlydGFzX3N0YXR1cyA9IGlvY3RsKGZkLCBQQVBSX1BMQVRGT1JNX0RV TVBfSU9DX0lOVkFMSURBVEUsCi0rCQkJCSZkdW1wX3RhZyk7Ci0rCQljbG9zZShmZCk7Ci0rCQly ZXR1cm4gcnRhc19zdGF0dXM7Ci0rCX0KLSsKLSsJLyoKLSsJICogRW5zdXJlIHdlIHJldHVybiBh IGZkID4gMCBpbiBzZXFfbmV4dC4KLSsJICovCi0rCWlmIChmZCA9PSAwKSB7Ci0rCQlpbnQgbmV3 ZmQgPSBkdXAoZmQpOwotKwkJY2xvc2UoZmQpOwotKwkJZmQgPSBuZXdmZDsKLSsJfQotKwotKwlz aXplID0gcmVhZChmZCwgYnVmZmVyLCBsZW5ndGgpOwotKwlpZiAoc2l6ZSA8IDApIHsKLSsJCS8q IFN5bnRoZXNpemUgaWJtLGdldC1wbGF0ZnJvbS1kdW1wICJoYXJkd2FyZSBlcnJvciIgKi8KLSsJ CWNsb3NlKGZkKTsKLSsJCXJldHVybiAtMTsKLSsJfSBlbHNlIGlmIChzaXplID4gMCkgewotKwkJ cnRhc19zdGF0dXMgPSAxOyAvKiBNb3JlIGRhdGEgYXZhaWxhYmxlLCBjYWxsIGFnYWluICovCi0r CX0KLSsKLSsJaWYgKHNlcV9uZXh0KQotKwkJKnNlcV9uZXh0ID0gZmQ7Ci0rCWlmIChieXRlc19y ZXQpCi0rCQkqYnl0ZXNfcmV0ID0gc2l6ZTsKLSsKLSsJcmV0dXJuIHJ0YXNfc3RhdHVzOwotK30K LSsKLStzdGF0aWMgaW50ICgqcGxhdGZvcm1fZHVtcF9mbikodWludDY0X3QgZHVtcF90YWcsIHVp bnQ2NF90IHNlcXVlbmNlLAotKwkJCQl2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsCi0rCQkJ CXVpbnQ2NF90ICpzZXFfbmV4dCwgdWludDY0X3QgKmJ5dGVzX3JldCk7Ci0rCi0rc3RhdGljIHZv aWQgcGxhdGZvcm1fZHVtcF9mbl9zZXR1cCh2b2lkKQotK3sKLSsJcGxhdGZvcm1fZHVtcF9mbiA9 IHBsYXRmb3JtX2R1bXBfY2FuX3VzZV9jaGFyZGV2KCkgPwotKwkJcGxhdGZvcm1fZHVtcF9rZXJu ZWwgOiBwbGF0Zm9ybV9kdW1wX3VzZXI7Ci0rfQotKwotKy8qKgotKyAqIHJ0YXNfcGxhdGZvcm1f ZHVtcAotKyAqIEludGVyZmFjZSB0byB0aGUgaWJtLHBsYXRmb3JtLWR1bXAgcnRhcyBjYWxsCi0r ICoKLSsgKiBAcGFyYW0gZHVtcF90YWcKLSsgKiBAcGFyYW0gc2VxdWVuY2UKLSsgKiBAcGFyYW0g YnVmZmVyIGJ1ZmZlciB0byB3cml0ZSBkdW1wIHRvCi0rICogQHBhcmFtIGxlbmd0aCBidWZmZXIg bGVuZ3RoCi0rICogQHBhcmFtIG5leHRfc2VxCi0rICogQHBhcmFtIGJ5dGVzX3JldAotKyAqIEBy ZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvdGh3ZXJ3aXNlCi0rICovCi0raW50IHJ0YXNfcGxhdGZv cm1fZHVtcCh1aW50NjRfdCBkdW1wX3RhZywgdWludDY0X3Qgc2VxdWVuY2UsIHZvaWQgKmJ1ZmZl ciwKLSsJCQlzaXplX3QgbGVuZ3RoLCB1aW50NjRfdCAqc2VxX25leHQsIHVpbnQ2NF90ICpieXRl c19yZXQpCi0rewotKwlzdGF0aWMgcHRocmVhZF9vbmNlX3QgcGxhdGZvcm1fZHVtcF9mbl9vbmNl ID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci0rCi0rCXB0aHJlYWRfb25jZSgmcGxhdGZvcm1fZHVtcF9m bl9vbmNlLCBwbGF0Zm9ybV9kdW1wX2ZuX3NldHVwKTsKLSsKLSsJcmV0dXJuIHBsYXRmb3JtX2R1 bXBfZm4oZHVtcF90YWcsIHNlcXVlbmNlLCBidWZmZXIsIGxlbmd0aCwgc2VxX25leHQsCi0rCQkJ Ynl0ZXNfcmV0KTsKLSt9Ci0rCgpkaWZmIC0tZ2l0IGEvbGlicnRhcy0wMy1sb2NrZG93bi1jb21w YXRpYmxlLWFiaS1waGFzZS5wYXRjaCBiL2xpYnJ0YXMtMDMtbG9ja2Rvd24tY29tcGF0aWJsZS1h YmktcGhhc2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMThmY2MuLjAw MDAwMDAKLS0tIGEvbGlicnRhcy0wMy1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi1jb21taXQgZWYyNTVhM2NiNTUwZGIz NmM0ZWE0OTQwYTI5Y2EwMTAyOWUzM2M0OQotQXV0aG9yOiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxp bnV4LmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBBcHIgMjkgMjA6MTA6MTMgMjAyNSAtMDcwMAotCi0g ICAgbGlicnRhczogbW92ZSBnZXQvc2V0IGluZGljZXMgUlRBUyBjYWxscyBjb2RlIHRvIHNlcGFy YXRlIGZpbGUKLSAgICAKLSAgICBUaGlzIGNvZGUgd2lsbCBnYWluIHRoZSBhYmlsaXR5IHRvIGFj Y2VzcyBpbmRpY2VzIChpbmRpY2F0b3IgYW5kCi0gICAgc2Vuc29yKSB1c2luZyBkaWZmZXJlbnQg aW50ZXJmYWNlcyBleHBvc2VkIGJ5IG5ld2VyIGtlcm5lbHMuIFRoaXMKLSAgICB3aWxsIGludm9s dmUgYWRkaW5nIGEgbm9udHJpdmlhbCBhbW91bnQgb2YgY29kZSwgc28gbW92ZSBpdCBvdXQgb2YK LSAgICBzeXNjYWxsX2NhbGxzLmMuCi0gICAgCi0gICAgU28gbW92aW5nIHRoZSBmb2xsb3dpbmcg UlRBUyBjYWxscyBjb2RlOgotICAgIGlibSxnZXQtaW5kaWNlcwotICAgIGlibSxzZXQtZHluYW1p Yy1pbmRpY2F0b3IKLSAgICBpYm0sZ2V0LWR5bmFtaWMtc2Vuc29yLXN0YXRlCi0gICAgCi0gICAg U2lnbmVkLW9mZi1ieTogSGFyZW4gTXluZW5pIDxoYXJlbkBsaW51eC5pYm0uY29tPgotICAgIFNp Z25lZC1vZmYtYnk6IFR5cmVsIERhdHd5bGVyIDx0eXJlbGRAbGludXguaWJtLmNvbT4KLQotZGlm ZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDE1NmE2OGIuLmI2N2I5 M2YgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0zMyw3 ICszMyw4IEBAIGxpYnJ0YXNfbGFfU09VUkNFUyA9IFwKLSAJbGlicnRhc19zcmMvb2ZkdC5jIFwK LSAJbGlicnRhc19zcmMvc3lzY2FsbF9jYWxscy5jIFwKLSAJbGlicnRhc19zcmMvc3lzY2FsbF9y bW8uYyBcCi0tCWxpYnJ0YXNfc3JjL3N5c3Bhcm0uYwotKwlsaWJydGFzX3NyYy9zeXNwYXJtLmMg XAotKwlsaWJydGFzX3NyYy9pbmRpY2VzLmMKLSAKLSBsaWJyYXJ5X2luY2x1ZGVfSEVBREVSUyAr PSBsaWJydGFzX3NyYy9saWJydGFzLmgKLSBub2luc3RfSEVBREVSUyArPSBcCi1kaWZmIC0tZ2l0 IGEvbGlicnRhc19zcmMvaW5kaWNlcy5jIGIvbGlicnRhc19zcmMvaW5kaWNlcy5jCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGRmZjY3ZAotLS0tIC9kZXYvbnVsbAotKysr IGIvbGlicnRhc19zcmMvaW5kaWNlcy5jCi1AQCAtMCwwICsxLDE0MSBAQAotKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMS1vci1sYXRlcgotKwotKy8vIFN1cHBvcnQgZm9yIGFj Y2Vzc2luZyBJQk0gUG93ZXIgc3lzdGVtcyBpbmRpY2VzIChpbmRpY2F0b3IgYW5kIHNlbnNvcikK LSsvLyBkYXRhIHZpYSAvZGV2L3BhcHItaW5kaWNlcyBvciB0aGUgbGVnYWN5IHJ0YXMoKSBzeXNj YWxscy4KLSsKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNp bmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNpbmNsdWRlIDxsaW51 eC91bmlzdGQuaD4KLSsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3N5 c2NhbGwuaD4KLSsKLSsjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAibGlicnRhcy5o IgotKwotKy8qKgotKyAqIHJ0YXNfZ2V0X2R5bmFtaWNfc2Vuc29yCi0rICogQGJyaWVmIEludGVy ZmFjZSB0byBpYm0sZ2V0LWR5bmFtaWMtc2Vuc29yLXN0YXRlIHJ0YXMgY2FsbAotKyAqCi0rICog T24gc3VjY2VzcyB0aGUgdmFyaWFibGUgcmVmZXJlbmNlZCBieSB0aGUgc3RhdGUgcGFyYW1ldGVy IHdpbGwgY29udGFpbgotKyAqIHRoZSBzdGF0ZSBvZiB0aGUgc2Vuc29yCi0rICoKLSsgKiBAcGFy YW0gc2Vuc29yIHNlbnNvciB0byByZXRyaWV2ZQotKyAqIEBwYXJhbSBsb2NfY29kZSBsb2NhdGlv biBjb2RlIG9mIHRoZSBzZW5zb3IKLSsgKiBAcGFyYW0gc3RhdGUgcmVmZXJlbmNlIHRvIHN0YXRl IHZhcmlhYmxlCi0rICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG90aGVyd2lzZQotKyAqLwot K2ludCBydGFzX2dldF9keW5hbWljX3NlbnNvcihpbnQgc2Vuc29yLCB2b2lkICpsb2NfY29kZSwg aW50ICpzdGF0ZSkKLSt7Ci0rCXVpbnQzMl90IGxvY19wYSA9IDA7Ci0rCXZvaWQgKmxvY2J1ZjsK LSsJdWludDMyX3Qgc2l6ZTsKLSsJX19iZTMyIGJlX3N0YXRlOwotKwlpbnQgcmMsIHN0YXR1czsK LSsKLSsJcmMgPSBzYW5pdHlfY2hlY2soKTsKLSsJaWYgKHJjKQotKwkJcmV0dXJuIHJjOwotKwot KwlzaXplID0gYmUzMnRvaCgqKHVpbnQzMl90ICopbG9jX2NvZGUpICsgc2l6ZW9mKHVpbnQzMl90 KTsKLSsKLSsJcmMgPSBydGFzX2dldF9ybW9fYnVmZmVyKHNpemUsICZsb2NidWYsICZsb2NfcGEp OwotKwlpZiAocmMpCi0rCQlyZXR1cm4gcmM7Ci0rCi0rCW1lbWNweShsb2NidWYsIGxvY19jb2Rl LCBzaXplKTsKLSsKLSsJcmMgPSBydGFzX2NhbGwoImlibSxnZXQtZHluYW1pYy1zZW5zb3Itc3Rh dGUiLCAyLCAyLAotKwkJICAgICAgIGh0b2JlMzIoc2Vuc29yKSwgaHRvYmUzMihsb2NfcGEpLCAm c3RhdHVzLCAmYmVfc3RhdGUpOwotKwotKwkodm9pZCkgcnRhc19mcmVlX3Jtb19idWZmZXIobG9j YnVmLCBsb2NfcGEsIHNpemUpOwotKwotKwkqc3RhdGUgPSBiZTMydG9oKGJlX3N0YXRlKTsKLSsK LSsJZGJnKCIoJWQsICVzLCAlcCkgPSAlZCwgJWRcbiIsIHNlbnNvciwgKGNoYXIgKilsb2NfY29k ZSwgc3RhdGUsCi0rCSAgICByYyA/IHJjIDogc3RhdHVzLCAqc3RhdGUpOwotKwlyZXR1cm4gcmMg PyByYyA6IHN0YXR1czsKLSt9Ci0rCi0rLyoqCi0rICogcnRhc19zZXRfZHluYW1pY19pbmRpY2F0 b3IKLSsgKiBAYnJpZWYgSW50ZXJmYWNlIHRvIHRoZSBpYm0sc2V0LWR5bmFtaWMtaW5kaWNhdG9y IHJ0YXMgY2FsbAotKyAqCi0rICogQHBhcmFtIGluZGljYXRvciBpbmRpY2F0b3IgdG8gc2V0Ci0r ICogQHBhcmFtIG5ld192YWx1ZSB2YWx1ZSB0byBzZXQgdGhlIGluZGljYXRvciB0bwotKyAqIEBw YXJhbSBsb2NfY29kZQotKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvdGhlcndpc2UKLSsg Ki8KLStpbnQgcnRhc19zZXRfZHluYW1pY19pbmRpY2F0b3IoaW50IGluZGljYXRvciwgaW50IG5l d192YWx1ZSwgdm9pZCAqbG9jX2NvZGUpCi0rewotKwl1aW50MzJfdCBsb2NfcGEgPSAwOwotKwl2 b2lkICpsb2NidWY7Ci0rCXVpbnQzMl90IHNpemU7Ci0rCWludCByYywgc3RhdHVzOwotKwotKwly YyA9IHNhbml0eV9jaGVjaygpOwotKwlpZiAocmMpCi0rCQlyZXR1cm4gcmM7Ci0rCi0rCXNpemUg PSBiZTMydG9oKCoodWludDMyX3QgKilsb2NfY29kZSkgKyBzaXplb2YodWludDMyX3QpOwotKwot KwlyYyA9IHJ0YXNfZ2V0X3Jtb19idWZmZXIoc2l6ZSwgJmxvY2J1ZiwgJmxvY19wYSk7Ci0rCWlm IChyYykKLSsJCXJldHVybiByYzsKLSsKLSsJbWVtY3B5KGxvY2J1ZiwgbG9jX2NvZGUsIHNpemUp OwotKwotKwlyYyA9IHJ0YXNfY2FsbCgiaWJtLHNldC1keW5hbWljLWluZGljYXRvciIsIDMsIDEs IGh0b2JlMzIoaW5kaWNhdG9yKSwKLSsJCSAgICAgICBodG9iZTMyKG5ld192YWx1ZSksIGh0b2Jl MzIobG9jX3BhKSwgJnN0YXR1cyk7Ci0rCi0rCSh2b2lkKSBydGFzX2ZyZWVfcm1vX2J1ZmZlcihs b2NidWYsIGxvY19wYSwgc2l6ZSk7Ci0rCi0rCWRiZygiKCVkLCAlZCwgJXMpID0gJWRcbiIsIGlu ZGljYXRvciwgbmV3X3ZhbHVlLCAoY2hhciAqKWxvY19jb2RlLAotKwkgICAgcmMgPyByYyA6IHN0 YXR1cyk7Ci0rCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotK30KLSsKLSsvKioKLSsgKiBydGFz X2dldF9pbmRpY2VzCi0rICogQGJyaWVmIEludGVyZmFjZSB0byB0aGUgaWJtLGdldC1pbmRpY2Vz IHJ0YXMgY2FsbAotKyAqCi0rICogQHBhcmFtIGlzX3NlbnNvciBpcyB0aGlzIGluZGV4IGEgc2Vu c29yPwotKyAqIEBwYXJhbSB0eXBlCi0rICogQHBhcmFtIHdvcmthcmVhIGFkZGl0aW9uYWwgYXJn cyB0byB0aGUgcnRhcyBjYWxsCi0rICogQHBhcmFtIHNpemUKLSsgKiBAcGFyYW0gc3RhcnQKLSsg KiBAcGFyYW0gbmV4dAotKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvdGhlcndpc2UKLSsg Ki8KLStpbnQgcnRhc19nZXRfaW5kaWNlcyhpbnQgaXNfc2Vuc29yLCBpbnQgdHlwZSwgY2hhciAq d29ya2FyZWEsIHNpemVfdCBzaXplLAotKwkJICAgICBpbnQgc3RhcnQsIGludCAqbmV4dCkKLSt7 Ci0rCXVpbnQzMl90IGtlcm5idWZfcGE7Ci0rCV9fYmUzMiBiZV9uZXh0OwotKwl2b2lkICprZXJu YnVmOwotKwlpbnQgcmMsIHN0YXR1czsKLSsKLSsJcmMgPSBzYW5pdHlfY2hlY2soKTsKLSsJaWYg KHJjKQotKwkJcmV0dXJuIHJjOwotKwotKwlyYyA9IHJ0YXNfZ2V0X3Jtb19idWZmZXIoc2l6ZSwg Jmtlcm5idWYsICZrZXJuYnVmX3BhKTsKLSsJaWYgKHJjKQotKwkJcmV0dXJuIHJjOwotKwotKwly YyA9IHJ0YXNfY2FsbCgiaWJtLGdldC1pbmRpY2VzIiwgNSwgMiwgaHRvYmUzMihpc19zZW5zb3Ip LAotKwkJICAgICAgIGh0b2JlMzIodHlwZSksIGh0b2JlMzIoa2VybmJ1Zl9wYSksIGh0b2JlMzIo c2l6ZSksCi0rCQkgICAgICAgaHRvYmUzMihzdGFydCksICZzdGF0dXMsICZiZV9uZXh0KTsKLSsK LSsJaWYgKHJjID09IDApCi0rCQltZW1jcHkod29ya2FyZWEsIGtlcm5idWYsIHNpemUpOwotKwot Kwkodm9pZClydGFzX2ZyZWVfcm1vX2J1ZmZlcihrZXJuYnVmLCBrZXJuYnVmX3BhLCBzaXplKTsK LSsKLSsJKm5leHQgPSBiZTMydG9oKGJlX25leHQpOwotKwotKwlkYmcoIiglZCwgJWQsICVwLCAl enUsICVkLCAlcCkgPSAlZCwgJWRcbiIsIGlzX3NlbnNvciwgdHlwZSwgd29ya2FyZWEsCi0rCSAg ICAgc2l6ZSwgc3RhcnQsIG5leHQsIHJjID8gcmMgOiBzdGF0dXMsICpuZXh0KTsKLSsJcmV0dXJu IHJjID8gcmMgOiBzdGF0dXM7Ci0rfQotZGlmZiAtLWdpdCBhL2xpYnJ0YXNfc3JjL3N5c2NhbGxf Y2FsbHMuYyBiL2xpYnJ0YXNfc3JjL3N5c2NhbGxfY2FsbHMuYwotaW5kZXggOTk2MzU4OC4uNTcz YTRjMyAxMDA2NDQKLS0tLSBhL2xpYnJ0YXNfc3JjL3N5c2NhbGxfY2FsbHMuYwotKysrIGIvbGli cnRhc19zcmMvc3lzY2FsbF9jYWxscy5jCi1AQCAtNTI1LDk0ICs1MjUsNiBAQCBpbnQgcnRhc19n ZXRfY29uZmlnX2FkZHJfaW5mbzIodWludDMyX3QgY29uZmlnX2FkZHIsIHVpbnQ2NF90IHBoYl9p ZCwKLSAJcmV0dXJuIHJjID8gcmMgOiBzdGF0dXM7Ci0gfQotIAotLS8qKgotLSAqIHJ0YXNfZ2V0 X2R5bmFtaWNfc2Vuc29yCi0tICogQGJyaWVmIEludGVyZmFjZSB0byBpYm0sZ2V0LWR5bmFtaWMt c2Vuc29yLXN0YXRlIHJ0YXMgY2FsbAotLSAqCi0tICogT24gc3VjY2VzcyB0aGUgdmFyaWFibGUg cmVmZXJlbmNlZCBieSB0aGUgc3RhdGUgcGFyYW1ldGVyIHdpbGwgY29udGFpbgotLSAqIHRoZSBz dGF0ZSBvZiB0aGUgc2Vuc29yCi0tICoKLS0gKiBAcGFyYW0gc2Vuc29yIHNlbnNvciB0byByZXRy aWV2ZQotLSAqIEBwYXJhbSBsb2NfY29kZSBsb2NhdGlvbiBjb2RlIG9mIHRoZSBzZW5zb3IKLS0g KiBAcGFyYW0gc3RhdGUgcmVmZXJlbmNlIHRvIHN0YXRlIHZhcmlhYmxlCi0tICogQHJldHVybiAw IG9uIHN1Y2Nlc3MsICEwIG90aGVyd2lzZQotLSAqLwotLWludCBydGFzX2dldF9keW5hbWljX3Nl bnNvcihpbnQgc2Vuc29yLCB2b2lkICpsb2NfY29kZSwgaW50ICpzdGF0ZSkKLS17Ci0tCXVpbnQz Ml90IGxvY19wYSA9IDA7Ci0tCXZvaWQgKmxvY2J1ZjsKLS0JdWludDMyX3Qgc2l6ZTsKLS0JX19i ZTMyIGJlX3N0YXRlOwotLQlpbnQgcmMsIHN0YXR1czsKLS0KLS0JcmMgPSBzYW5pdHlfY2hlY2so KTsKLS0JaWYgKHJjKQotLQkJcmV0dXJuIHJjOwotLQotLQlzaXplID0gYmUzMnRvaCgqKHVpbnQz Ml90ICopbG9jX2NvZGUpICsgc2l6ZW9mKHVpbnQzMl90KTsKLS0KLS0JcmMgPSBydGFzX2dldF9y bW9fYnVmZmVyKHNpemUsICZsb2NidWYsICZsb2NfcGEpOwotLQlpZiAocmMpCi0tCQlyZXR1cm4g cmM7Ci0tCi0tCW1lbWNweShsb2NidWYsIGxvY19jb2RlLCBzaXplKTsKLS0KLS0JcmMgPSBydGFz X2NhbGwoImlibSxnZXQtZHluYW1pYy1zZW5zb3Itc3RhdGUiLCAyLCAyLAotLQkJICAgICAgIGh0 b2JlMzIoc2Vuc29yKSwgaHRvYmUzMihsb2NfcGEpLCAmc3RhdHVzLCAmYmVfc3RhdGUpOwotLQot LQkodm9pZCkgcnRhc19mcmVlX3Jtb19idWZmZXIobG9jYnVmLCBsb2NfcGEsIHNpemUpOwotLQot LQkqc3RhdGUgPSBiZTMydG9oKGJlX3N0YXRlKTsKLS0KLS0JZGJnKCIoJWQsICVzLCAlcCkgPSAl ZCwgJWRcbiIsIHNlbnNvciwgKGNoYXIgKilsb2NfY29kZSwgc3RhdGUsCi0tCSAgICByYyA/IHJj IDogc3RhdHVzLCAqc3RhdGUpOwotLQlyZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLS19Ci0tCi0t LyoqCi0tICogcnRhc19nZXRfaW5kaWNlcwotLSAqIEBicmllZiBJbnRlcmZhY2UgdG8gdGhlIGli bSxnZXQtaW5kaWNlcyBydGFzIGNhbGwKLS0gKgotLSAqIEBwYXJhbSBpc19zZW5zb3IgaXMgdGhp cyBpbmRleCBhIHNlbnNvcj8KLS0gKiBAcGFyYW0gdHlwZQotLSAqIEBwYXJhbSB3b3JrYXJlYSBh ZGRpdGlvbmFsIGFyZ3MgdG8gdGhlIHJ0YXMgY2FsbAotLSAqIEBwYXJhbSBzaXplCi0tICogQHBh cmFtIHN0YXJ0Ci0tICogQHBhcmFtIG5leHQKLS0gKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgITAg b3RoZXJ3aXNlCi0tICovCi0taW50IHJ0YXNfZ2V0X2luZGljZXMoaW50IGlzX3NlbnNvciwgaW50 IHR5cGUsIGNoYXIgKndvcmthcmVhLCBzaXplX3Qgc2l6ZSwKLS0JCSAgICAgaW50IHN0YXJ0LCBp bnQgKm5leHQpCi0tewotLQl1aW50MzJfdCBrZXJuYnVmX3BhOwotLQlfX2JlMzIgYmVfbmV4dDsK LS0Jdm9pZCAqa2VybmJ1ZjsKLS0JaW50IHJjLCBzdGF0dXM7Ci0tCi0tCXJjID0gc2FuaXR5X2No ZWNrKCk7Ci0tCWlmIChyYykKLS0JCXJldHVybiByYzsKLS0KLS0JcmMgPSBydGFzX2dldF9ybW9f YnVmZmVyKHNpemUsICZrZXJuYnVmLCAma2VybmJ1Zl9wYSk7Ci0tCWlmIChyYykKLS0JCXJldHVy biByYzsKLS0KLS0JcmMgPSBydGFzX2NhbGwoImlibSxnZXQtaW5kaWNlcyIsIDUsIDIsIGh0b2Jl MzIoaXNfc2Vuc29yKSwKLS0JCSAgICAgICBodG9iZTMyKHR5cGUpLCBodG9iZTMyKGtlcm5idWZf cGEpLCBodG9iZTMyKHNpemUpLAotLQkJICAgICAgIGh0b2JlMzIoc3RhcnQpLCAmc3RhdHVzLCAm YmVfbmV4dCk7Ci0tCi0tCWlmIChyYyA9PSAwKQotLQkJbWVtY3B5KHdvcmthcmVhLCBrZXJuYnVm LCBzaXplKTsKLS0KLS0JKHZvaWQpcnRhc19mcmVlX3Jtb19idWZmZXIoa2VybmJ1Ziwga2VybmJ1 Zl9wYSwgc2l6ZSk7Ci0tCi0tCSpuZXh0ID0gYmUzMnRvaChiZV9uZXh0KTsKLS0KLS0JZGJnKCIo JWQsICVkLCAlcCwgJXp1LCAlZCwgJXApID0gJWQsICVkXG4iLCBpc19zZW5zb3IsIHR5cGUsIHdv cmthcmVhLAotLQkgICAgIHNpemUsIHN0YXJ0LCBuZXh0LCByYyA/IHJjIDogc3RhdHVzLCAqbmV4 dCk7Ci0tCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotLX0KLS0KLSAvKioKLSAgKiBydGFzX2dl dF9wb3dlcl9sZXZlbAotICAqIEBicmllZiBJbnRlcmZhY2UgdG8gdGhlIGdldC1wb3dlci1sZXZl bCBydGFzIGNhbGwKLUBAIC04NDgsNDQgKzc2MCw2IEBAIGludCBydGFzX3NldF9kZWJ1ZyhpbnQg bGV2ZWwpCi0gCXJldHVybiAwOwotIH0KLSAKLS0vKioKLS0gKiBydGFzX3NldF9keW5hbWljX2lu ZGljYXRvcgotLSAqIEBicmllZiBJbnRlcmZhY2UgdG8gdGhlIGlibSxzZXQtZHluYW1pYy1pbmRp Y2F0b3IgcnRhcyBjYWxsCi0tICoKLS0gKiBAcGFyYW0gaW5kaWNhdG9yIGluZGljYXRvciB0byBz ZXQKLS0gKiBAcGFyYW0gbmV3X3ZhbHVlIHZhbHVlIHRvIHNldCB0aGUgaW5kaWNhdG9yIHRvCi0t ICogQHBhcmFtIGxvY19jb2RlCi0tICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsICEwIG90aGVyd2lz ZQotLSAqLwotLWludCBydGFzX3NldF9keW5hbWljX2luZGljYXRvcihpbnQgaW5kaWNhdG9yLCBp bnQgbmV3X3ZhbHVlLCB2b2lkICpsb2NfY29kZSkKLS17Ci0tCXVpbnQzMl90IGxvY19wYSA9IDA7 Ci0tCXZvaWQgKmxvY2J1ZjsKLS0JdWludDMyX3Qgc2l6ZTsKLS0JaW50IHJjLCBzdGF0dXM7Ci0t Ci0tCXJjID0gc2FuaXR5X2NoZWNrKCk7Ci0tCWlmIChyYykKLS0JCXJldHVybiByYzsKLS0KLS0J c2l6ZSA9IGJlMzJ0b2goKih1aW50MzJfdCAqKWxvY19jb2RlKSArIHNpemVvZih1aW50MzJfdCk7 Ci0tCi0tCXJjID0gcnRhc19nZXRfcm1vX2J1ZmZlcihzaXplLCAmbG9jYnVmLCAmbG9jX3BhKTsK LS0JaWYgKHJjKQotLQkJcmV0dXJuIHJjOwotLQotLQltZW1jcHkobG9jYnVmLCBsb2NfY29kZSwg c2l6ZSk7Ci0tCi0tCXJjID0gcnRhc19jYWxsKCJpYm0sc2V0LWR5bmFtaWMtaW5kaWNhdG9yIiwg MywgMSwgaHRvYmUzMihpbmRpY2F0b3IpLAotLQkJICAgICAgIGh0b2JlMzIobmV3X3ZhbHVlKSwg aHRvYmUzMihsb2NfcGEpLCAmc3RhdHVzKTsKLS0KLS0JKHZvaWQpIHJ0YXNfZnJlZV9ybW9fYnVm ZmVyKGxvY2J1ZiwgbG9jX3BhLCBzaXplKTsKLS0KLS0JZGJnKCIoJWQsICVkLCAlcykgPSAlZFxu IiwgaW5kaWNhdG9yLCBuZXdfdmFsdWUsIChjaGFyICopbG9jX2NvZGUsCi0tCSAgICByYyA/IHJj IDogc3RhdHVzKTsKLS0JcmV0dXJuIHJjID8gcmMgOiBzdGF0dXM7Ci0tfQotLQotIC8qKgotICAq IHJ0YXNfc2V0X2VlaF9vcHRpb24KLSAgKiBAYnJpZWYgSW5lcmZhY2UgdG8gdGhlIGlibSxzZXQt ZWVoLW9wdGlvbiBydGFzIGNhbGwKCmRpZmYgLS1naXQgYS9saWJydGFzLTA0LWxvY2tkb3duLWNv bXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoIGIvbGlicnRhcy0wNC1sb2NrZG93bi1jb21wYXRpYmxl LWFiaS1waGFzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcyNDQxZC4u MDAwMDAwMAotLS0gYS9saWJydGFzLTA0LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotY29tbWl0IDczYzMyNTg2NjE0ZjI0 NzZkOTczNTY5MjhlYWFjYmE4YTk3OGExOTYKLUF1dGhvcjogSGFyZW4gTXluZW5pIDxoYXJlbkBs aW51eC5pYm0uY29tPgotRGF0ZTogICBUdWUgQXByIDI5IDIwOjEwOjE0IDIwMjUgLTA3MDAKLQot ICAgIGxpYnJ0YXM6IEFkZCBrZXJuZWwgdWFwaSBoZWFkZXIgcGFwci1pbmRpY2VzLmgKLSAgICAK LSAgICBUaGlzIGhlYWRlciBmaWxlIHByb3ZpZGVzIGlvY3RscyBmb3IgdGhlIGZvbGxvd2luZyBS VEFTIGNhbGxzIHRvCi0gICAgdXNlIG5ldyBrZXJuZWwgaW50ZXJmYWNlcyBpZiAvZGV2L3BhcHIt aW5kaWNlcyBpcyBhdmFpbGFibGU6Ci0gICAgaWJtLGdldC1pbmRpY2VzCi0gICAgaWJtLHNldC1k eW5hbWljLWluZGljYXRvcgotICAgIGlibSxnZXQtZHluYW1pYy1zZW5zb3Itc3RhdGUKLSAgICAK LSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJlbiBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci0g ICAgU2lnbmVkLW9mZi1ieTogVHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgot Ci1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvcGFwci1pbmRpY2VzLmggYi9saWJydGFzX3NyYy9w YXByLWluZGljZXMuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmRiNDdl NjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnJ0YXNfc3JjL3BhcHItaW5kaWNlcy5oCi1AQCAt MCwwICsxLDQyIEBACi0rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBM aW51eC1zeXNjYWxsLW5vdGUgKi8KLSsjaWZuZGVmIF9VQVBJX1BBUFJfSU5ESUNFU19IXwotKyNk ZWZpbmUgX1VBUElfUEFQUl9JTkRJQ0VTX0hfCi0rCi0rI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ Ci0rI2luY2x1ZGUgPGFzbS9pb2N0bC5oPgotKyNpbmNsdWRlICJwYXByLW1pc2NkZXYuaCIKLSsK LSsjZGVmaW5lIFNaXzRLCQkJCTB4MDAwMDEwMDAKLSsjZGVmaW5lIExPQ19DT0RFX1NJWkUJCQk4 MAotKyNkZWZpbmUgUlRBU19HRVRfSU5ESUNFU19CVUZfU0laRQlTWl80SwotKwotK3N0cnVjdCBw YXByX2luZGljZXNfaW9fYmxvY2sgewotKwl1bmlvbiB7Ci0rCQlzdHJ1Y3QgewotKwkJCV9fdTgg aXNfc2Vuc29yOyAvKiAwIGZvciBpbmRpY2F0b3IgYW5kIDEgZm9yIHNlbnNvciAqLwotKwkJCV9f dTMyIGluZGljZV90eXBlOwotKwkJfSBpbmRpY2VzOwotKwkJc3RydWN0IHsKLSsJCQlfX3UzMiB0 b2tlbjsgLyogU2Vuc29yIG9yIGluZGljYXRvciB0b2tlbiAqLwotKwkJCV9fdTMyIHN0YXRlOyAv KiBnZXQgLyBzZXQgc3RhdGUgKi8KLSsJCQkvKgotKwkJCSAqIFBBUFIrIDEyLjMuMi40IENvbnZl cmdlZCBMb2NhdGlvbiBDb2RlIFJ1bGVzIC0KLSsJCQkgKiBMZW5ndGggUmVzdHJpY3Rpb25zLiA3 OSBjaGFyYWN0ZXJzIHBsdXMgbnVsbC4KLSsJCQkgKi8KLSsJCQljaGFyIGxvY2F0aW9uX2NvZGVf c3RyW0xPQ19DT0RFX1NJWkVdOyAvKiBsb2NhdGlvbiBjb2RlICovCi0rCQl9IGR5bmFtaWNfcGFy YW07Ci0rCX07Ci0rfTsKLSsKLSsvKgotKyAqIGlvY3RscyBmb3IgL2Rldi9wYXByLWluZGljZXMu Ci0rICogUEFQUl9JTkRJQ0VTX0lPQ19HRVQ6CVJldHVybnMgYSBnZXQtaW5kaWNlcyBoYW5kbGUg ZmQgdG8gcmVhZCBkYXRhCi0rICogUEFQUl9EWU5BTUlDX1NFTlNPUl9JT0NfR0VUOglHZXRzIHRo ZSBzdGF0ZSBvZiB0aGUgaW5wdXQgc2Vuc29yCi0rICogUEFQUl9EWU5BTUlDX0lORElDQVRPUl9J T0NfU0VUOiBTZXRzIHRoZSBuZXcgc3RhdGUgZm9yIHRoZSBpbnB1dCBpbmRpY2F0b3IKLSsgKi8K LSsjZGVmaW5lIFBBUFJfSU5ESUNFU19JT0NfR0VUCQlfSU9XKFBBUFJfTUlTQ0RFVl9JT0NfSUQs IDMsIHN0cnVjdCBwYXByX2luZGljZXNfaW9fYmxvY2spCi0rI2RlZmluZSBQQVBSX0RZTkFNSUNf U0VOU09SX0lPQ19HRVQJX0lPV1IoUEFQUl9NSVNDREVWX0lPQ19JRCwgNCwgc3RydWN0IHBhcHJf aW5kaWNlc19pb19ibG9jaykKLSsjZGVmaW5lIFBBUFJfRFlOQU1JQ19JTkRJQ0FUT1JfSU9DX1NF VAlfSU9XKFBBUFJfTUlTQ0RFVl9JT0NfSUQsIDUsIHN0cnVjdCBwYXByX2luZGljZXNfaW9fYmxv Y2spCi0rCi0rCi0rI2VuZGlmIC8qIF9VQVBJX1BBUFJfSU5ESUNFU19IXyAqLwoKZGlmZiAtLWdp dCBhL2xpYnJ0YXMtMDUtbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2ggYi9saWJy dGFzLTA1LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA4NTViZGJmLi4wMDAwMDAwCi0tLSBhL2xpYnJ0YXMtMDUtbG9ja2Rv d24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAs MCBAQAotY29tbWl0IDFlMjU0ZWRlMWMyMjY4ZDJkYmYwM2UyYjYwMmEwNGFmMmM4YWQ4YzYKLUF1 dGhvcjogSGFyZW4gTXluZW5pIDxoYXJlbkBsaW51eC5pYm0uY29tPgotRGF0ZTogICBUdWUgQXBy IDI5IDIwOjEwOjE1IDIwMjUgLTA3MDAKLQotICAgIGxpYnJ0YXM6IFVzZSAvZGV2L3BhcHItaW5k aWNlcyB3aGVuIGF2YWlsYWJsZSBmb3IgaWJtLGdldC1pbmRpY2VzCi0gICAgCi0gICAgcnRhc19n ZXRfaW5kaWNlcygpIHVzZXMgc3lzX3J0YXMoKSBjYWxsIHRvIG9idGFpbiBpbmRpY2VzCi0gICAg YW5kIGxvY2F0aW9uIGNvZGVzIGZvciBhIHNwZWNpZmllZCBpbmRpY2F0b3Igb3Igc2Vuc29yIHRv a2VuLgotICAgIEJ1dCB0aGlzIFJUQVMgZnVuY3Rpb24gbmVlZHMgUk1PIGJ1ZmZlciBhbGxvY2F0 aW9uIHdoaWNoIGlzCi0gICAgcHJvaGliaXRlZCB1bmRlciBzeXN0ZW0gbG9ja2Rvd24uIFRoaXMg cGF0Y2ggYWRkcyBjaGFuZ2VzIHRvCi0gICAgdXNlIG5ldyBrZXJuZWwgaW50ZXJmYWNlcyBzdWNo IGFzIG9wZW4vaW9jdGwvcmVhZCB3aGVuCi0gICAgL2Rldi9wYXByLWluZGljZXMgaXMgYXZhaWxh YmxlLgotICAgIAotICAgIEZvciB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIHJ0YXNfZ2V0X2luZGlj ZXMoKSwgaW5pdGlhbGl6ZSBhbgotICAgIGludGVybmFsIGZ1bmN0aW9uIHBvaW50ZXIgYW5kIHVz ZSB0aGUgbmV3IGludGVyZmFjZXMgZGVwZW5kcyBvbgotICAgIHRoZSBwcmVzZW5jZSBvZiBhYm92 ZSBkZXZpY2Ugbm9kZS4KLSAgICAKLSAgICBPcGVuIC9kZXYvcGFwci1pbmRpY2VzIGFuZCBvYnRh aW4gRkQgd2l0aCBQQVBSX0lORElDRVNfSU9DX0dFVAotICAgIGlvY3RsIGNvbW1hbmQuIFRoZSBr ZXJuZWwgb2J0YWluZWQgYWxsIGluZGljZXMgZGF0YSB1bmRlciBpb2N0bCgpCi0gICAgYW5kIGV4 cG9zZWQgdG8gdXNlciBzcGFjZSB3aXRoIHRoaXMgZmlsZSBkZXNjcmlwdG9yLiBUaGUgaHlwZXJ2 aXNvcgotICAgIHJldHVybnMgaW5kaWNlcyBkYXRhIGluIGNlcnRhaW4gZm9ybWF0IGRlcGVuZHMg b24gdGhlIFJUQVMgY2FsbAotICAgIGJ1ZmZlciBhbmQgdGhlIGtlcm5lbCBleHBlY3RzIHRoZSB1 c2VyIHNwYWNlIHRvIHBhcnNlIHRoaXMgZGF0YS4KLSAgICBIZW5jZSB0aGUga2VybmVsIHJldHVy bnMgUlRBU19HRVRfSU5ESUNFU19CVUZfU0laRSAoNDA5NikgYnVmZmVyCi0gICAgZm9yIGVhY2gg cmVhZCgpLiBUaGVuIHJlYWQoKSBmb3IgZWFjaCBydGFzX2dldF9pbmRpY2VzKCkgY29udGludW91 cwotICAgIHVudGlsIHRoZSByZWFkKCkgcmV0dXJucyAwIHdoaWNoIG1lYW5zIGVuZCBvZiBrZXJu ZWwgYnVmZmVyLgotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmVuIE15bmVuaSA8aGFyZW5A bGludXguaWJtLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUeXJlbCBEYXR3eWxlciA8dHlyZWxk QGxpbnV4LmlibS5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFt Ci1pbmRleCBiNjdiOTNmLi4wMmQ2MTg0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBi L01ha2VmaWxlLmFtCi1AQCAtNDIsNyArNDIsOCBAQCBub2luc3RfSEVBREVSUyArPSBcCi0gCWxp YnJ0YXNfc3JjL3BhcHItbWlzY2Rldi5oIFwKLSAJbGlicnRhc19zcmMvcGFwci1zeXNwYXJtLmgg XAotIAlsaWJydGFzX3NyYy9wYXByLXZwZC5oIFwKLS0JbGlicnRhc19zcmMvcGFwci1wbGF0Zm9y bS1kdW1wLmgKLSsJbGlicnRhc19zcmMvcGFwci1wbGF0Zm9ybS1kdW1wLmggXAotKwlsaWJydGFz X3NyYy9wYXByLWluZGljZXMuaAotIAotICMgU2VlICJVcGRhdGluZyBsaWJyYXJ5IHZlcnNpb24g aW5mb3JtYXRpb24iIGluIHRoZSBsaWJ0b29sIG1hbnVhbCBmb3IKLSAjIGhvdyB0byBtYWludGFp biB0aGVzZSB2YWx1ZXMuIFRoZXkgYXJlICpub3QqIHRpZWQgdG8gdGhlIHJlbGVhc2UKLWRpZmYg LS1naXQgYS9saWJydGFzX3NyYy9pbmRpY2VzLmMgYi9saWJydGFzX3NyYy9pbmRpY2VzLmMKLWlu ZGV4IDRkZmY2N2QuLjY3NzQ0YzkgMTAwNjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9pbmRpY2VzLmMK LSsrKyBiL2xpYnJ0YXNfc3JjL2luZGljZXMuYwotQEAgLTcsMTIgKzcsMjAgQEAKLSAjaW5jbHVk ZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+ Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8 c3RkYm9vbC5oPgotICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLSAjaW5jbHVkZSA8bGludXgv dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsjaW5jbHVkZSA8c3lzL2lvY3Rs Lmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gCi0gI2luY2x1ZGUgImludGVybmFsLmgiCi0g I2luY2x1ZGUgImxpYnJ0YXMuaCIKLSsjaW5jbHVkZSAicGFwci1pbmRpY2VzLmgiCi0rCi0rc3Rh dGljIGNvbnN0IGNoYXIgaW5kaWNlc19kZXZwYXRoW10gPSAiL2Rldi9wYXByLWluZGljZXMiOwot IAotIC8qKgotICAqIHJ0YXNfZ2V0X2R5bmFtaWNfc2Vuc29yCi1AQCAtMTA4LDcgKzExNiw3IEBA IGludCBydGFzX3NldF9keW5hbWljX2luZGljYXRvcihpbnQgaW5kaWNhdG9yLCBpbnQgbmV3X3Zh bHVlLCB2b2lkICpsb2NfY29kZSkKLSAgKiBAcGFyYW0gbmV4dAotICAqIEByZXR1cm4gMCBvbiBz dWNjZXNzLCAhMCBvdGhlcndpc2UKLSAgKi8KLS1pbnQgcnRhc19nZXRfaW5kaWNlcyhpbnQgaXNf c2Vuc29yLCBpbnQgdHlwZSwgY2hhciAqd29ya2FyZWEsIHNpemVfdCBzaXplLAotK2ludCBnZXRf aW5kaWNlc19mYWxsYmFjayhpbnQgaXNfc2Vuc29yLCBpbnQgdHlwZSwgY2hhciAqd29ya2FyZWEs IHNpemVfdCBzaXplLAotIAkJICAgICBpbnQgc3RhcnQsIGludCAqbmV4dCkKLSB7Ci0gCXVpbnQz Ml90IGtlcm5idWZfcGE7Ci1AQCAtMTM5LDMgKzE0NywxMDkgQEAgaW50IHJ0YXNfZ2V0X2luZGlj ZXMoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmthcmVhLCBzaXplX3Qgc2l6ZSwK LSAJICAgICBzaXplLCBzdGFydCwgbmV4dCwgcmMgPyByYyA6IHN0YXR1cywgKm5leHQpOwotIAly ZXR1cm4gcmMgPyByYyA6IHN0YXR1czsKLSB9Ci0rCi0rc3RhdGljIGludCBnZXRfaW5kaWNlc19m ZF9uZXcoaW50IGlzX3NlbnNvciwgaW50IHR5cGUpCi0rewotKwlzdHJ1Y3QgcGFwcl9pbmRpY2Vz X2lvX2Jsb2NrIGJ1ZiA9IHt9OwotKwljb25zdCBpbnQgZmQgPSBvcGVuKGluZGljZXNfZGV2cGF0 aCwgT19XUk9OTFkpOwotKwlpbnQgZGV2ZmQgPSAtMTsKLSsKLSsJaWYgKGZkIDwgMCkKLSsJCXJl dHVybiAtMTsKLSsKLSsJYnVmLmluZGljZXMuaXNfc2Vuc29yID0gaXNfc2Vuc29yOwotKwlidWYu aW5kaWNlcy5pbmRpY2VfdHlwZSA9IHR5cGU7Ci0rCWRldmZkID0gaW9jdGwoZmQsIFBBUFJfSU5E SUNFU19JT0NfR0VULCAmYnVmKTsKLSsJY2xvc2UoZmQpOwotKwotKwlyZXR1cm4gZGV2ZmQ7Ci0r fQotKwotK3N0YXRpYyBpbnQgZ2V0X2luZGljZXNfY2hhcmRldihpbnQgaXNfc2Vuc29yLCBpbnQg dHlwZSwgY2hhciAqd29ya2FyZWEsCi0rCQkJCXNpemVfdCBzaXplLCBpbnQgc3RhcnQsIGludCAq bmV4dCkKLSt7Ci0rCWludCBmZCwgcnRhc19zdGF0dXMgPSAwOwotKwlzc2l6ZV90IHJlczsKLSsK LSsJaWYgKHNpemUgIT0gUlRBU19HRVRfSU5ESUNFU19CVUZfU0laRSkgewotKwkJZGJnKCJJbnZh bGlkIGJ1ZmZlciBzaXplICVsdSBleHBlY3RzICVkXG4iLAotKwkJCQlzaXplLCBSVEFTX0dFVF9J TkRJQ0VTX0JVRl9TSVpFKTsKLSsJCXJldHVybiAtRUlOVkFMOwotKwl9Ci0rCi0rCWZkID0gKHN0 YXJ0ID09IDEpID8gZ2V0X2luZGljZXNfZmRfbmV3KGlzX3NlbnNvciwgdHlwZSkKLSsJCQkJOiAo aW50KXN0YXJ0OwotKwkvKgotKwkgKiBFbnN1cmUgd2UgcmV0dXJuIGEgZmQgPiAwIGluIHNlcV9u ZXh0LgotKwkgKi8KLSsJaWYgKGZkID09IDEpIHsKLSsJCWludCBuZXdmZCA9IGR1cChmZCk7Ci0r CQljbG9zZShmZCk7Ci0rCQlmZCA9IG5ld2ZkOwotKwl9Ci0rCi0rCWlmIChmZCA8IDApCi0rCQly ZXR1cm4gLTM7IC8qIFN5bnRoZXNpemUgaWJtLGdldC12cGQgInBhcmFtZXRlciBlcnJvciIgKi8K LSsKLSsJcmVzID0gcmVhZChmZCwgd29ya2FyZWEsIHNpemUpOwotKwlpZiAocmVzIDwgMCkgewot KwkJLyogU3ludGhlc2l6ZSBpYm0sZ2V0LXBsYXRmcm9tLWR1bXAgImhhcmR3YXJlIGVycm9yIiAq LwotKwkJcnRhc19zdGF0dXMgPSAtMTsKLSsJCWNsb3NlKGZkKTsKLSsJfSBlbHNlIGlmIChyZXMg PT0gMCkgewotKwkJLyoKLSsJCSAqIHJlYWQoKSByZXR1cm5zIDAgYXQgdGhlIGVuZCBvZiByZWFk Ci0rCQkgKiBTbyByZXNldCB0aGUgZmlyc3QgMzIgYml0IHZhbHVlIChudW1iZXIgb2YgaW5kaWNl cykKLSsJCSAqIGluIHRoZSBidWZmZXIgd2hpY2ggdGVsbHMgbm8gZGF0YSBhdmFpbGFibGUgdG8g dGhlCi0rCQkgKiBjYWxsZXIgb2YgcnRhc19nZXRfaW5kaWNlcygpLgotKwkJICovCi0rCQkqKHVp bnQzMl90ICopd29ya2FyZWEgPSAwOwotKwkJcnRhc19zdGF0dXMgPSAwOyAvKiBEb25lIHdpdGgg c2VxdWVuY2UsIG5vIG1vcmUgZGF0YSAqLwotKwkJY2xvc2UoZmQpOwotKwkJaWYgKG5leHQpCi0r CQkJKm5leHQgPSAxOwotKwl9IGVsc2UgewotKwkJcnRhc19zdGF0dXMgPSAxOyAvKiBNb3JlIGRh dGEgYXZhaWxhYmxlLCBjYWxsIGFnYWluICovCi0rCQlpZiAobmV4dCkKLSsJCQkqbmV4dCA9IGZk OwotKwl9Ci0rCi0rCXJldHVybiBydGFzX3N0YXR1czsKLSt9Ci0rCi0rc3RhdGljIGJvb2wgaW5k aWNlc19jYW5fdXNlX2NoYXJkZXYodm9pZCkKLSt7Ci0rCXN0cnVjdCBzdGF0IHN0YXRidWY7Ci0r Ci0rCWlmIChzdGF0KGluZGljZXNfZGV2cGF0aCwgJnN0YXRidWYpKQotKwkJcmV0dXJuIGZhbHNl OwotKwotKwlpZiAoIVNfSVNDSFIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSsJCXJldHVybiBmYWxzZTsK LSsKLSsJaWYgKGNsb3NlKG9wZW4oaW5kaWNlc19kZXZwYXRoLCBPX1JET05MWSkpKQotKwkJcmV0 dXJuIGZhbHNlOwotKwotKwlyZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rc3RhdGljIGludCAoKmdldF9p bmRpY2VzX2ZuKShpbnQgaXNfc2Vuc29yLCBpbnQgdHlwZSwgY2hhciAqd29ya2FyZWEsCi0rCQkJ CXNpemVfdCBzaXplLCBpbnQgc3RhcnQsIGludCAqbmV4dCk7Ci0rCi0rc3RhdGljIHZvaWQgaW5k aWNlc19mbl9zZXR1cCh2b2lkKQotK3sKLSsJY29uc3QgYm9vbCB1c2VfY2hhcmRldiA9IGluZGlj ZXNfY2FuX3VzZV9jaGFyZGV2KCk7Ci0rCi0rCWdldF9pbmRpY2VzX2ZuID0gdXNlX2NoYXJkZXYg PwotKwkJZ2V0X2luZGljZXNfY2hhcmRldiA6IGdldF9pbmRpY2VzX2ZhbGxiYWNrOwotK30KLSsK LStzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5kaWNlc19mbl9zZXR1cF9vbmNlID0gUFRIUkVBRF9P TkNFX0lOSVQ7Ci0rCi0raW50IHJ0YXNfZ2V0X2luZGljZXMoaW50IGlzX3NlbnNvciwgaW50IHR5 cGUsIGNoYXIgKndvcmthcmVhLCBzaXplX3Qgc2l6ZSwKLSsJCQlpbnQgc3RhcnQsIGludCAqbmV4 dCkKLSt7Ci0rCXB0aHJlYWRfb25jZSgmaW5kaWNlc19mbl9zZXR1cF9vbmNlLCBpbmRpY2VzX2Zu X3NldHVwKTsKLSsJcmV0dXJuIGdldF9pbmRpY2VzX2ZuKGlzX3NlbnNvciwgdHlwZSwgd29ya2Fy ZWEsIHNpemUsCi0rCQkJCXN0YXJ0LCBuZXh0KTsKLSt9CgpkaWZmIC0tZ2l0IGEvbGlicnRhcy0w Ni1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaCBiL2xpYnJ0YXMtMDYtbG9ja2Rv d24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDk1Zjc1OWMuLjAwMDAwMDAKLS0tIGEvbGlicnRhcy0wNi1sb2NrZG93bi1jb21wYXRpYmxl LWFiaS1waGFzZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi1jb21taXQg MjU5ZDUyZGUzMjlkY2EyN2VjNmYwYTg0OTVjOTAxODMzMzliYmZkMQotQXV0aG9yOiBIYXJlbiBN eW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBBcHIgMjkgMjA6MTA6MTYg MjAyNSAtMDcwMAotCi0gICAgbGlicnRhczogVXNlIC9kZXYvcGFwci1pbmRpY2VzIHdoZW4gYXZh aWxhYmxlIGZvciBnZXQtZHluYW1pYy1zZW5zb3Itc3RhdGUKLSAgICAKLSAgICBUaGUgY3VycmVu dCBydGFzX2dldF9keW5hbWljX3NlbnNvcigpIGFsbG9jYXRlcyBSVEFTIHdvcmsgYXJlYQotICAg IGFuZCBpbnZva2VzIHN5c19ydGFzKCkgaW4gdGhlIHVzZXIgc3BhY2UuIEJ1dCB0aGlzIGludGVy ZmFjZSB3aWxsCi0gICAgbm90IHdvcmsgdW5kZXIgc3lzdGVtIGxvY2tkb3duIGR1ZSB0byByZXN0 cmljdGVkIGFjY2VzcyB0byAvZGV2L21lbS4KLSAgICAKLSAgICBUaGlzIHBhdGNoIGFkZCBjaGFu Z2VzIHRvIHVzZSBuZXcga2VybmVsIGludGVyZmFjZSBwcm92aWRlZCBieQotICAgIC9kZXYvcGFw ci1pbmRpY2VzIGVudHJ5IHdpdGggUEFQUl9EWU5BTUlDX1NFTlNPUl9JT0NfR0VUIGlvY3RsLgot ICAgIFRoZSBuZXcgc3RhdGUgb2Ygc2Vuc29yIHRva2VuIHdpbGwgYmUgcmV0dXJuZWQgZnJvbSB0 aGUgdXNlcgotICAgIHBhc3NlZCBwYXByX2luZGljZXNfaW9fYmxvY2sgdG8gdGhlIGlvY3RsLgot ICAgIAotICAgIElmIC9kZXYvcGFwci1pbmRpY2VzIGVudHJ5IGlzIGF2YWlsYWJsZSwgdGhlIG5l dyBrZXJuZWwgaW50ZXJmYWNlCi0gICAgaXMgdXNlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvZ3Jh bW1pbmcgbW9kZWw6Ci0gICAgCi0gICAgIGZkID0gb3BlbigiL2Rldi9wYXByLWluZGljZXMiLCBP X1JEV1IpOwotICAgICBjb3B5IGxvY2F0aW9uLWNvZGUgdG8KLSAgICAgICAgICAgIHBhcHJfaW5k aWNlc19pb19ibG9jay5keW5hbWljX3BhcmFtLmxvY2F0aW9uX2NvZGVfc3RyCi0gICAgIHBhcHJf aW5kaWNlc19pb19ibG9jay5keW5hbWljX3BhcmFtLnRva2VuID0gdG9rZW4tdmFsOwotICAgICBy ZXQgPSBpb2N0bChmZCwgUEFQUl9EWU5BTUlDX1NFTlNPUl9JT0NfR0VULAotICAgICAgICAgICAg cGFwcl9pbmRpY2VzX2lvX2Jsb2NrKTsKLSAgICAgc3RhdGUgPSBwYXByX2luZGljZXNfaW9fYmxv Y2suZHluYW1pY19wYXJhbS5zdGF0ZQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmVuIE15 bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUeXJlbCBEYXR3 eWxlciA8dHlyZWxkQGxpbnV4LmlibS5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWJydGFzX3NyYy9p bmRpY2VzLmMgYi9saWJydGFzX3NyYy9pbmRpY2VzLmMKLWluZGV4IDY3NzQ0YzkuLjI3ZDUzN2Mg MTAwNjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9pbmRpY2VzLmMKLSsrKyBiL2xpYnJ0YXNfc3JjL2lu ZGljZXMuYwotQEAgLTM0LDcgKzM0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgaW5kaWNlc19kZXZw YXRoW10gPSAiL2Rldi9wYXByLWluZGljZXMiOwotICAqIEBwYXJhbSBzdGF0ZSByZWZlcmVuY2Ug dG8gc3RhdGUgdmFyaWFibGUKLSAgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgITAgb3RoZXJ3aXNl Ci0gICovCi0taW50IHJ0YXNfZ2V0X2R5bmFtaWNfc2Vuc29yKGludCBzZW5zb3IsIHZvaWQgKmxv Y19jb2RlLCBpbnQgKnN0YXRlKQotK2ludCBnZXRfZHluYW1pY19zZW5zb3JfZmFsbGJhY2soaW50 IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGludCAqc3RhdGUpCi0gewotIAl1aW50MzJfdCBsb2Nf cGEgPSAwOwotIAl2b2lkICpsb2NidWY7Ci1AQCAtMjE3LDYgKzIxNyw4NSBAQCBzdGF0aWMgaW50 IGdldF9pbmRpY2VzX2NoYXJkZXYoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmth cmVhLAotIAlyZXR1cm4gcnRhc19zdGF0dXM7Ci0gfQotIAotKy8qCi0rICogT25seSB0byBiZSB1 c2VkIHdoZW4gY29udmVydGluZyBhbiBhY3R1YWwgZXJyb3IgZnJvbSBhIHN5c2NhbGwuCi0rICov Ci0rc3RhdGljIGludCBjaGFyZGV2X2JhY2tjb252ZXJ0X2Vycm5vKGludCBzYXZlZF9lcnJubykK LSt7Ci0rCWNvbnN0IHN0cnVjdCB7Ci0rCQlpbnQgbGludXhfZXJybm87Ci0rCQlpbnQgcnRhc19z dGF0dXM7Ci0rCX0gbWFwW10gPSB7Ci0rI2RlZmluZSBlcnJub190b19zdGF0dXMoZSwgcykgeyAu bGludXhfZXJybm8gPSAoZSksIC5ydGFzX3N0YXR1cyA9IChzKSwgfQotKwkJZXJybm9fdG9fc3Rh dHVzKEVJTlZBTCwgICAgIC05OTk5KSwKLSsJCWVycm5vX3RvX3N0YXR1cyhFUEVSTSwgICAgICAt OTAwMiksCi0rCQllcnJub190b19zdGF0dXMoRU9QTk9UU1VQUCwgICAgLTMpLAotKwkJZXJybm9f dG9fc3RhdHVzKEVJTywgICAgICAgICAgIC0xKSwKLSsJCWVycm5vX3RvX3N0YXR1cyhFRkFVTFQs ICAgICAgICAtMSksCi0rI3VuZGVmIGVycm5vX3RvX3N0YXR1cwotKwl9OwotKwotKwlmb3IgKHNp emVfdCBpID0gMDsgaSA8IHNpemVvZihtYXApIC8gc2l6ZW9mKG1hcFswXSk7ICsraSkKLSsJCWlm IChtYXBbaV0ubGludXhfZXJybm8gPT0gc2F2ZWRfZXJybm8pCi0rCQkJcmV0dXJuIG1hcFtpXS5y dGFzX3N0YXR1czsKLSsJcmV0dXJuIC0xOwotK30KLSsKLStzdGF0aWMgaW50IGR5bmFtaWNfY29t bW9uX2lvX3NldHVwKHVuc2lnbmVkIGxvbmcgaW9jdGFsdmFsLAotKwkJCQl2b2lkICpsb2NfY29k ZSwKLSsJCQkJc3RydWN0IHBhcHJfaW5kaWNlc19pb19ibG9jayAqYnVmKQotK3sKLSsJc2l6ZV90 IGxlbmd0aDsKLSsJY2hhciAqbG9jX3N0cjsKLSsJaW50IGZkLCByZXQgPSAtRUlOVkFMOwotKwot KwlmZCA9IG9wZW4oaW5kaWNlc19kZXZwYXRoLCBPX1JEV1IpOwotKwlpZiAoZmQgPCAwKSB7Ci0r CQkvKgotKwkJICogU2hvdWxkIG5vdCBiZSBoZXJlLiBNYXkgYmUgL2Rldi9wYXByLWluZGljZXMg cmVtb3ZlZAotKwkJICovCi0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJbGVuZ3RoID0gYmUzMnRv aCgqKHVpbnQzMl90ICopbG9jX2NvZGUpOwotKwotKwlpZiAobGVuZ3RoIDwgMSkgewotKwkJZGJn KCJJbnZhbGlkIGxlbmd0aCglbHUpIG9mIGxvY2F0aW9uIGNvZGUgc3RyaW5nXG4iLCBsZW5ndGgp OwotKwkJZ290byBvdXQ7Ci0rCX0KLSsKLSsJbG9jX3N0ciA9IChjaGFyICopKChjaGFyICopbG9j X2NvZGUgKyBzaXplb2YodWludDMyX3QpKTsKLSsJaWYgKHN0cmxlbihsb2Nfc3RyKSAhPSAobGVu Z3RoIC0gMSkpIHsKLSsJCWRiZygibG9jYXRpb24gY29kZSBzdHJpbmcgbGVuZ3RoIGlzIG5vdCBt YXRjaGVkIHdpdGggdGhlIHBhc3NlZCBsZW5ndGgoJWx1KVxuIiwgbGVuZ3RoKTsKLSsJCWdvdG8g b3V0OwotKwl9Ci0rCi0rCW1lbWNweSgmYnVmLT5keW5hbWljX3BhcmFtLmxvY2F0aW9uX2NvZGVf c3RyLCBsb2Nfc3RyLCBsZW5ndGgpOwotKwotKwlyZXQgPSBpb2N0bChmZCwgaW9jdGFsdmFsLCBi dWYpOwotKwlpZiAocmV0ICE9IDApCi0rCQlyZXQgPSBjaGFyZGV2X2JhY2tjb252ZXJ0X2Vycm5v KGVycm5vKTsKLStvdXQ6Ci0rCWNsb3NlKGZkKTsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3Rh dGljIGludCBnZXRfZHluYW1pY19zZW5zb3JfY2hhcmRldihpbnQgc2Vuc29yLCB2b2lkICpsb2Nf Y29kZSwgaW50ICpzdGF0ZSkKLSt7Ci0rCXN0cnVjdCBwYXByX2luZGljZXNfaW9fYmxvY2sgYnVm ID0ge307Ci0rCWludCByZXQ7Ci0rCi0rCWJ1Zi5keW5hbWljX3BhcmFtLnRva2VuID0gc2Vuc29y OwotKwlyZXQgPSBkeW5hbWljX2NvbW1vbl9pb19zZXR1cChQQVBSX0RZTkFNSUNfU0VOU09SX0lP Q19HRVQsCi0rCQkJCWxvY19jb2RlLCAmYnVmKTsKLSsJaWYgKHJldCAhPSAwKQotKwkJcmV0dXJu IHJldDsKLSsKLSsJKnN0YXRlID0gYnVmLmR5bmFtaWNfcGFyYW0uc3RhdGU7Ci0rCi0rCXJldHVy biAwOwotK30KLSsKLSBzdGF0aWMgYm9vbCBpbmRpY2VzX2Nhbl91c2VfY2hhcmRldih2b2lkKQot IHsKLSAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLUBAIC0yMzUsNiArMzE0LDcgQEAgc3RhdGljIGJv b2wgaW5kaWNlc19jYW5fdXNlX2NoYXJkZXYodm9pZCkKLSAKLSBzdGF0aWMgaW50ICgqZ2V0X2lu ZGljZXNfZm4pKGludCBpc19zZW5zb3IsIGludCB0eXBlLCBjaGFyICp3b3JrYXJlYSwKLSAJCQkJ c2l6ZV90IHNpemUsIGludCBzdGFydCwgaW50ICpuZXh0KTsKLStzdGF0aWMgaW50ICgqZ2V0X2R5 bmFtaWNfc2Vuc29yX2ZuKShpbnQgc2Vuc29yLCB2b2lkICpsb2NfY29kZSwgaW50ICpzdGF0ZSk7 Ci0gCi0gc3RhdGljIHZvaWQgaW5kaWNlc19mbl9zZXR1cCh2b2lkKQotIHsKLUBAIC0yNDIsNiAr MzIyLDggQEAgc3RhdGljIHZvaWQgaW5kaWNlc19mbl9zZXR1cCh2b2lkKQotIAotIAlnZXRfaW5k aWNlc19mbiA9IHVzZV9jaGFyZGV2ID8KLSAJCWdldF9pbmRpY2VzX2NoYXJkZXYgOiBnZXRfaW5k aWNlc19mYWxsYmFjazsKLSsJZ2V0X2R5bmFtaWNfc2Vuc29yX2ZuID0gdXNlX2NoYXJkZXYgPwot KwkJZ2V0X2R5bmFtaWNfc2Vuc29yX2NoYXJkZXYgOiBnZXRfZHluYW1pY19zZW5zb3JfZmFsbGJh Y2s7Ci0gfQotIAotIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbmRpY2VzX2ZuX3NldHVwX29uY2Ug PSBQVEhSRUFEX09OQ0VfSU5JVDsKLUBAIC0yNTMsMyArMzM1LDkgQEAgaW50IHJ0YXNfZ2V0X2lu ZGljZXMoaW50IGlzX3NlbnNvciwgaW50IHR5cGUsIGNoYXIgKndvcmthcmVhLCBzaXplX3Qgc2l6 ZSwKLSAJcmV0dXJuIGdldF9pbmRpY2VzX2ZuKGlzX3NlbnNvciwgdHlwZSwgd29ya2FyZWEsIHNp emUsCi0gCQkJCXN0YXJ0LCBuZXh0KTsKLSB9Ci0rCi0raW50IHJ0YXNfZ2V0X2R5bmFtaWNfc2Vu c29yKGludCBzZW5zb3IsIHZvaWQgKmxvY19jb2RlLCBpbnQgKnN0YXRlKQotK3sKLSsJcHRocmVh ZF9vbmNlKCZpbmRpY2VzX2ZuX3NldHVwX29uY2UsIGluZGljZXNfZm5fc2V0dXApOwotKwlyZXR1 cm4gZ2V0X2R5bmFtaWNfc2Vuc29yX2ZuKHNlbnNvciwgbG9jX2NvZGUsIHN0YXRlKTsKLSt9Cgpk aWZmIC0tZ2l0IGEvbGlicnRhcy0wNy1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRj aCBiL2xpYnJ0YXMtMDctbG9ja2Rvd24tY29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MzM1NGIuLjAwMDAwMDAKLS0tIGEvbGlicnRhcy0w Ny1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDg4ICswLDAgQEAKLWNvbW1pdCA1Y2U0NjhhOTIxOTM2N2VhM2YxZjllMmM4N2ViMzQzMWE2Y2Jh NTVmCi1BdXRob3I6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLURhdGU6ICAg VHVlIEFwciAyOSAyMDoxMDoxNyAyMDI1IC0wNzAwCi0KLSAgICBsaWJydGFzOiBVc2UgL2Rldi9w YXByLWluZGljZXMgd2hlbiBhdmFpbGFibGUgZm9yIHNldC1keW5hbWljLWluZGljYXRvcgotICAg IAotICAgIENoYW5nZXMgZm9yIHJ0YXNfc2V0X2R5bmFtaWNfaW5kaWNhdG9yKCkgdG8gdXNlIG5l dyBrZXJuZWwKLSAgICBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgL2Rldi9wYXByLWluZGljZXMgZW50 cnkuIFRoZSBrZXJuZWwgcHJvdmlkZXMKLSAgICBQQVBSX0RZTkFNSUNfSU5ESUNBVE9SX0lPQ19T RVQgaW9jdGwgZm9yIC9kZXYvcGFwci1pbmRpY2VzIHRvCi0gICAgZXhlY3V0ZSBpYm0sc2V0LWR5 bmFtaWMtaW5kaWNhdG9yIFJUQVMgQ2FsbC4KLSAgICAKLSAgICBJZiAvZGV2L3BhcHItaW5kaWNl cyBlbnRyeSBpcyBhdmFpbGFibGUsIHRoZSBuZXcga2VybmVsIGludGVyZmFjZQotICAgIGlzIHVz ZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb2dyYW1taW5nIG1vZGVsOgotICAgIAotICAgICBmZCA9 IG9wZW4oIi9kZXYvcGFwci1pbmRpY2VzIiwgT19SRFdSKTsKLSAgICAgY29weSBsb2NhdGlvbi1j b2RlIHRvCi0gICAgICAgICAgICBwYXByX2luZGljZXNfaW9fYmxvY2suZHluYW1pY19wYXJhbS5s b2NhdGlvbl9jb2RlX3N0cgotICAgICBwYXByX2luZGljZXNfaW9fYmxvY2suZHluYW1pY19wYXJh bS50b2tlbiA9IHRva2VuLXZhbDsKLSAgICAgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrLmR5bmFtaWNf cGFyYW0uc3RhdGUgPSBuZXctc3RhdGU7Ci0gICAgIHJldCA9IGlvY3RsKGZkLCBQQVBSX0RZTkFN SUNfSU5ESUNBVE9SX0lPQ19TRVQsCi0gICAgICAgICAgICBwYXByX2luZGljZXNfaW9fYmxvY2sp OwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJt LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUeXJlbCBEYXR3eWxlciA8dHlyZWxkQGxpbnV4Lmli bS5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWJydGFzX3NyYy9pbmRpY2VzLmMgYi9saWJydGFzX3Ny Yy9pbmRpY2VzLmMKLWluZGV4IDI3ZDUzN2MuLjg3NWM1NzYgMTAwNjQ0Ci0tLS0gYS9saWJydGFz X3NyYy9pbmRpY2VzLmMKLSsrKyBiL2xpYnJ0YXNfc3JjL2luZGljZXMuYwotQEAgLTc1LDcgKzc1 LDcgQEAgaW50IGdldF9keW5hbWljX3NlbnNvcl9mYWxsYmFjayhpbnQgc2Vuc29yLCB2b2lkICps b2NfY29kZSwgaW50ICpzdGF0ZSkKLSAgKiBAcGFyYW0gbG9jX2NvZGUKLSAgKiBAcmV0dXJuIDAg b24gc3VjY2VzcywgITAgb3RoZXJ3aXNlCi0gICovCi0taW50IHJ0YXNfc2V0X2R5bmFtaWNfaW5k aWNhdG9yKGludCBpbmRpY2F0b3IsIGludCBuZXdfdmFsdWUsIHZvaWQgKmxvY19jb2RlKQotK2lu dCBzZXRfZHluYW1pY19pbmRpY2F0b3JfZmFsbGJhY2soaW50IGluZGljYXRvciwgaW50IG5ld192 YWx1ZSwgdm9pZCAqbG9jX2NvZGUpCi0gewotIAl1aW50MzJfdCBsb2NfcGEgPSAwOwotIAl2b2lk ICpsb2NidWY7Ci1AQCAtMjk2LDYgKzI5NiwyMCBAQCBzdGF0aWMgaW50IGdldF9keW5hbWljX3Nl bnNvcl9jaGFyZGV2KGludCBzZW5zb3IsIHZvaWQgKmxvY19jb2RlLCBpbnQgKnN0YXRlKQotIAly ZXR1cm4gMDsKLSB9Ci0gCi0rc3RhdGljIGludCBzZXRfZHluYW1pY19pbmRpY2F0b3JfY2hhcmRl dihpbnQgaW5kaWNhdG9yLCBpbnQgbmV3X3ZhbHVlLAotKwkJCQkJdm9pZCAqbG9jX2NvZGUpCi0r ewotKwlzdHJ1Y3QgcGFwcl9pbmRpY2VzX2lvX2Jsb2NrIGJ1ZiA9IHt9OwotKwlpbnQgcmV0Owot KwotKwlidWYuZHluYW1pY19wYXJhbS50b2tlbiA9IGluZGljYXRvcjsKLSsJYnVmLmR5bmFtaWNf cGFyYW0uc3RhdGUgPSBuZXdfdmFsdWU7Ci0rCXJldCA9IGR5bmFtaWNfY29tbW9uX2lvX3NldHVw KFBBUFJfRFlOQU1JQ19JTkRJQ0FUT1JfSU9DX1NFVCwKLSsJCQkJCWxvY19jb2RlLCAmYnVmKTsK LSsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0gc3RhdGljIGJvb2wgaW5kaWNlc19jYW5fdXNlX2No YXJkZXYodm9pZCkKLSB7Ci0gCXN0cnVjdCBzdGF0IHN0YXRidWY7Ci1AQCAtMzE1LDYgKzMyOSw4 IEBAIHN0YXRpYyBib29sIGluZGljZXNfY2FuX3VzZV9jaGFyZGV2KHZvaWQpCi0gc3RhdGljIGlu dCAoKmdldF9pbmRpY2VzX2ZuKShpbnQgaXNfc2Vuc29yLCBpbnQgdHlwZSwgY2hhciAqd29ya2Fy ZWEsCi0gCQkJCXNpemVfdCBzaXplLCBpbnQgc3RhcnQsIGludCAqbmV4dCk7Ci0gc3RhdGljIGlu dCAoKmdldF9keW5hbWljX3NlbnNvcl9mbikoaW50IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGlu dCAqc3RhdGUpOwotK3N0YXRpYyBpbnQgKCpzZXRfZHluYW1pY19pbmRpY2F0b3JfZm4pKGludCBp bmRpY2F0b3IsIGludCBuZXdfdmFsdWUsCi0rCQkJCXZvaWQgKmxvY19jb2RlKTsKLSAKLSBzdGF0 aWMgdm9pZCBpbmRpY2VzX2ZuX3NldHVwKHZvaWQpCi0gewotQEAgLTMyNCw2ICszNDAsOSBAQCBz dGF0aWMgdm9pZCBpbmRpY2VzX2ZuX3NldHVwKHZvaWQpCi0gCQlnZXRfaW5kaWNlc19jaGFyZGV2 IDogZ2V0X2luZGljZXNfZmFsbGJhY2s7Ci0gCWdldF9keW5hbWljX3NlbnNvcl9mbiA9IHVzZV9j aGFyZGV2ID8KLSAJCWdldF9keW5hbWljX3NlbnNvcl9jaGFyZGV2IDogZ2V0X2R5bmFtaWNfc2Vu c29yX2ZhbGxiYWNrOwotKwlzZXRfZHluYW1pY19pbmRpY2F0b3JfZm4gPSB1c2VfY2hhcmRldiA/ Ci0rCQlzZXRfZHluYW1pY19pbmRpY2F0b3JfY2hhcmRldiA6IHNldF9keW5hbWljX2luZGljYXRv cl9mYWxsYmFjazsKLSsKLSB9Ci0gCi0gc3RhdGljIHB0aHJlYWRfb25jZV90IGluZGljZXNfZm5f c2V0dXBfb25jZSA9IFBUSFJFQURfT05DRV9JTklUOwotQEAgLTM0MSwzICszNjAsOSBAQCBpbnQg cnRhc19nZXRfZHluYW1pY19zZW5zb3IoaW50IHNlbnNvciwgdm9pZCAqbG9jX2NvZGUsIGludCAq c3RhdGUpCi0gCXB0aHJlYWRfb25jZSgmaW5kaWNlc19mbl9zZXR1cF9vbmNlLCBpbmRpY2VzX2Zu X3NldHVwKTsKLSAJcmV0dXJuIGdldF9keW5hbWljX3NlbnNvcl9mbihzZW5zb3IsIGxvY19jb2Rl LCBzdGF0ZSk7Ci0gfQotKwotK2ludCBydGFzX3NldF9keW5hbWljX2luZGljYXRvcihpbnQgaW5k aWNhdG9yLCBpbnQgbmV3X3ZhbHVlLCB2b2lkICpsb2NfY29kZSkKLSt7Ci0rCXB0aHJlYWRfb25j ZSgmaW5kaWNlc19mbl9zZXR1cF9vbmNlLCBpbmRpY2VzX2ZuX3NldHVwKTsKLSsJcmV0dXJuIHNl dF9keW5hbWljX2luZGljYXRvcl9mbihpbmRpY2F0b3IsIG5ld192YWx1ZSwgbG9jX2NvZGUpOwot K30KCmRpZmYgLS1naXQgYS9saWJydGFzLTA4LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNl LnBhdGNoIGIvbGlicnRhcy0wOC1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVmYzhhZi4uMDAwMDAwMAotLS0gYS9saWJy dGFzLTA4LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTgyICswLDAgQEAKLWNvbW1pdCBkZmRjYjQxNDQ5ODMyYmY4YTEwZDBlMjFmYzc5NDM1 YTg3MTkyNzEyCi1BdXRob3I6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLURh dGU6ICAgVHVlIEFwciAyOSAyMDoxMDoxOCAyMDI1IC0wNzAwCi0KLSAgICBsaWJydGFzOiBNb3Zl IHBoeXNpY2FsLWF0dGVzdGF0aW9uIHJ0YXMgY2FsbCBjb2RlIHRvIHNlcGFyYXRlIGZpbGUKLSAg ICAKLSAgICBOZXcga2VybmVsIGludGVyZmFjZXMgdG8gc3VwcG9ydCBzeXN0ZW0gbG9ja2Rvd24g d2lsbCBiZSBhZGRlZCBmb3IKLSAgICB0aGlzIFJUQVMgY2FsbC4gU28gbW92ZSB0aGUgcGh5c2lj YWwtYXR0ZXN0YXRpb24gcnRhcyBjYWxsIGNvZGUgdG8KLSAgICBzZXBhcmF0ZSBmaWxlIHRvIGFk ZCBjb2RlIGZvciBuZXcgaW50ZXJmYWNlcy4KLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJl biBNeW5lbmkgPGhhcmVuQGxpbnV4LmlibS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHlyZWwg RGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUu YW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMDJkNjE4NC4uZTYwNWQ5OCAxMDA2NDQKLS0tLSBhL01h a2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTM0LDcgKzM0LDggQEAgbGlicnRhc19s YV9TT1VSQ0VTID0gXAotIAlsaWJydGFzX3NyYy9zeXNjYWxsX2NhbGxzLmMgXAotIAlsaWJydGFz X3NyYy9zeXNjYWxsX3Jtby5jIFwKLSAJbGlicnRhc19zcmMvc3lzcGFybS5jIFwKLS0JbGlicnRh c19zcmMvaW5kaWNlcy5jCi0rCWxpYnJ0YXNfc3JjL2luZGljZXMuYyBcCi0rCWxpYnJ0YXNfc3Jj L3BoeXNpY2FsLWF0dGVzdGF0aW9uLmMKLSAKLSBsaWJyYXJ5X2luY2x1ZGVfSEVBREVSUyArPSBs aWJydGFzX3NyYy9saWJydGFzLmgKLSBub2luc3RfSEVBREVSUyArPSBcCi1kaWZmIC0tZ2l0IGEv bGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYyBiL2xpYnJ0YXNfc3JjL3BoeXNpY2Fs LWF0dGVzdGF0aW9uLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zZTM2 YWYzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJydGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlv bi5jCi1AQCAtMCwwICsxLDc4IEBACi0rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwt Mi4xLW9yLWxhdGVyCi0rICAKLSsvLyBTdXBwb3J0IGZvciBhY2Nlc3NpbmcgaWJtLHBoeXNpY2Fs LWF0dGVzdGF0aW9uIGRhdGEKLSsvLyB2aWEgL2Rldi9wYXByLXBoeS1hdHRlc3RhdGlvbiBvciB0 aGUgbGVnYWN5IHJ0YXMoKSBzeXNjYWxsLgotKwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5j bHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVz Lmg+Ci0rI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5o PgotKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotKyNpbmNsdWRlICJpbnRlcm5hbC5oIgotKyNp bmNsdWRlICJsaWJydGFzLmgiCi0rCi0rLyoqCi0rICogcnRhc19waHlzaWNhbF9hdHRlc3RhdGlv bgotKyAqIEBicmllZiBJbnRlcmZhY2UgZm9yIGlibSxwaHlzaWNhbC1hdHRlc3RhdGlvbiBydGFz IGNhbGwuCi0rICoKLSsgKiBAcGFyYW0gd29ya2FyZWEgaW5wdXQvb3V0cHV0IHdvcmsgYXJlYSBm b3IgcnRhcyBjYWxsCi0rICogQHBhcmFtIHNlcV9udW0gc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBy dGFzIGNhbGwKLSsgKiBAcGFyYW0gbmV4dF9zZXFfbnVtIG5leHQgc2VxdWVuY2UgbnVtYmVyCi0r ICogQHBhcmFtIHdvcmtfYXJlYV9ieXRlcyBzaXplIG9mIHdvcmsgYXJlYQotKyAqIEByZXR1cm4g MCBvbiBzdWNjZXNzLCAhMCBvbiBmYWlsdXJlCi0rICovCi0raW50IHJ0YXNfcGh5c2ljYWxfYXR0 ZXN0YXRpb24oY2hhciAqd29ya2FyZWEsIGludCBzZXFfbnVtLCBpbnQgKm5leHRfc2VxX251bSwK LSsJCQkgICAgICBpbnQgKndvcmtfYXJlYV9ieXRlcykKLSt7Ci0rCXVpbnQzMl90IHdvcmthcmVh X3BhOwotKwl1aW50NjRfdCBlbGFwc2VkID0gMDsKLSsJdm9pZCAqa2VybmJ1ZjsKLSsJaW50IGti dWZfc3ogPSBXT1JLX0FSRUFfU0laRTsKLSsJaW50IHJjLCBzdGF0dXM7Ci0rCWludCByZXNwX2J5 dGVzID0gKndvcmtfYXJlYV9ieXRlczsKLSsKLSsJcmMgPSBzYW5pdHlfY2hlY2soKTsKLSsJaWYg KHJjKQotKwkJcmV0dXJuIHJjOwotKwotKwkvKiBDYWxsZXIgcHJvdmlkZWQgbW9yZSBkYXRhIHRo YW4gRlcgY2FuIGhhbmRsZSAqLwotKwlpZiAoKndvcmtfYXJlYV9ieXRlcyA9PSAwIHx8Ci0rCSAg ICAqd29ya19hcmVhX2J5dGVzID4ga2J1Zl9zeikKLSsJCXJldHVybiBSVEFTX0lPX0FTU0VSVDsK LSsKLSsJcmMgPSBydGFzX2dldF9ybW9fYnVmZmVyKGtidWZfc3osICZrZXJuYnVmLCAmd29ya2Fy ZWFfcGEpOwotKwlpZiAocmMpCi0rCQlyZXR1cm4gcmM7Ci0rCW1lbWNweShrZXJuYnVmLCB3b3Jr YXJlYSwgKndvcmtfYXJlYV9ieXRlcyk7Ci0rCi0rCWRvIHsKLSsJCXJjID0gcnRhc19jYWxsKCJp Ym0scGh5c2ljYWwtYXR0ZXN0YXRpb24iLCAzLCAzLAotKwkJCSAgICAgICBodG9iZTMyKHdvcmth cmVhX3BhKSwgaHRvYmUzMihrYnVmX3N6KSwKLSsJCQkgICAgICAgaHRvYmUzMihzZXFfbnVtKSwK LSsJCQkgICAgICAgJnN0YXR1cywgbmV4dF9zZXFfbnVtLCAmcmVzcF9ieXRlcyk7Ci0rCQlpZiAo cmMgPCAwKQotKwkJCWJyZWFrOwotKwotKwkJcmMgPSBoYW5kbGVfZGVsYXkoc3RhdHVzLCAmZWxh cHNlZCk7Ci0rCX0gd2hpbGUgKHJjID09IENBTExfQUdBSU4pOwotKwotKwkqbmV4dF9zZXFfbnVt ID0gYmUzMnRvaCgqbmV4dF9zZXFfbnVtKTsKLSsKLSsJLyogRlcgcmV0dXJuZWQgbW9yZSBkYXRh IHRoYW4gd2UgY2FuIGhhbmRsZSAqLwotKwlpZiAoYmUzMnRvaChyZXNwX2J5dGVzKSA+ICh1bnNp Z25lZCBpbnQpKndvcmtfYXJlYV9ieXRlcykgewotKwkJKHZvaWQpcnRhc19mcmVlX3Jtb19idWZm ZXIoa2VybmJ1Ziwgd29ya2FyZWFfcGEsIGtidWZfc3opOwotKwkJcmV0dXJuIFJUQVNfSU9fQVNT RVJUOwotKwl9Ci0rCi0rCSp3b3JrX2FyZWFfYnl0ZXMgPSBiZTMydG9oKHJlc3BfYnl0ZXMpOwot KwotKwlpZiAocmMgPT0gMCkKLSsJCW1lbWNweSh3b3JrYXJlYSwga2VybmJ1ZiwgKndvcmtfYXJl YV9ieXRlcyk7Ci0rCi0rCSh2b2lkKXJ0YXNfZnJlZV9ybW9fYnVmZmVyKGtlcm5idWYsIHdvcmth cmVhX3BhLCBrYnVmX3N6KTsKLSsKLSsJcmV0dXJuIHJjID8gcmMgOiBzdGF0dXM7Ci0rfQotKwot ZGlmZiAtLWdpdCBhL2xpYnJ0YXNfc3JjL3N5c2NhbGxfY2FsbHMuYyBiL2xpYnJ0YXNfc3JjL3N5 c2NhbGxfY2FsbHMuYwotaW5kZXggNTczYTRjMy4uYzFkM2E5YyAxMDA2NDQKLS0tLSBhL2xpYnJ0 YXNfc3JjL3N5c2NhbGxfY2FsbHMuYwotKysrIGIvbGlicnRhc19zcmMvc3lzY2FsbF9jYWxscy5j Ci1AQCAtOTkwLDY2ICs5OTAsMyBAQCBpbnQgcnRhc191cGRhdGVfcHJvcGVydGllcyhjaGFyICp3 b3JrYXJlYSwgdW5zaWduZWQgaW50IHNjb3BlKQotIAlkYmcoIiglcCkgJXUgPSAlZFxuIiwgd29y a2FyZWEsIHNjb3BlLCByYyA/IHJjIDogc3RhdHVzKTsKLSAJcmV0dXJuIHJjID8gcmMgOiBzdGF0 dXM7Ci0gfQotLQotLS8qKgotLSAqIHJ0YXNfcGh5c2ljYWxfYXR0ZXN0YXRpb24KLS0gKiBAYnJp ZWYgSW50ZXJmYWNlIGZvciBpYm0scGh5c2ljYWwtYXR0ZXN0YXRpb24gcnRhcyBjYWxsLgotLSAq Ci0tICogQHBhcmFtIHdvcmthcmVhIGlucHV0L291dHB1dCB3b3JrIGFyZWEgZm9yIHJ0YXMgY2Fs bAotLSAqIEBwYXJhbSBzZXFfbnVtIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgcnRhcyBjYWxsCi0t ICogQHBhcmFtIG5leHRfc2VxX251bSBuZXh0IHNlcXVlbmNlIG51bWJlcgotLSAqIEBwYXJhbSB3 b3JrX2FyZWFfYnl0ZXMgc2l6ZSBvZiB3b3JrIGFyZWEKLS0gKiBAcmV0dXJuIDAgb24gc3VjY2Vz cywgITAgb24gZmFpbHVyZQotLSAqLwotLWludCBydGFzX3BoeXNpY2FsX2F0dGVzdGF0aW9uKGNo YXIgKndvcmthcmVhLCBpbnQgc2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0tCQkJICAgICAg aW50ICp3b3JrX2FyZWFfYnl0ZXMpCi0tewotLQl1aW50MzJfdCB3b3JrYXJlYV9wYTsKLS0JdWlu dDY0X3QgZWxhcHNlZCA9IDA7Ci0tCXZvaWQgKmtlcm5idWY7Ci0tCWludCBrYnVmX3N6ID0gV09S S19BUkVBX1NJWkU7Ci0tCWludCByYywgc3RhdHVzOwotLQlpbnQgcmVzcF9ieXRlcyA9ICp3b3Jr X2FyZWFfYnl0ZXM7Ci0tCi0tCXJjID0gc2FuaXR5X2NoZWNrKCk7Ci0tCWlmIChyYykKLS0JCXJl dHVybiByYzsKLS0KLS0JLyogQ2FsbGVyIHByb3ZpZGVkIG1vcmUgZGF0YSB0aGFuIEZXIGNhbiBo YW5kbGUgKi8KLS0JaWYgKCp3b3JrX2FyZWFfYnl0ZXMgPT0gMCB8fAotLQkgICAgKndvcmtfYXJl YV9ieXRlcyA+IGtidWZfc3opCi0tCQlyZXR1cm4gUlRBU19JT19BU1NFUlQ7Ci0tCi0tCXJjID0g cnRhc19nZXRfcm1vX2J1ZmZlcihrYnVmX3N6LCAma2VybmJ1ZiwgJndvcmthcmVhX3BhKTsKLS0J aWYgKHJjKQotLQkJcmV0dXJuIHJjOwotLQltZW1jcHkoa2VybmJ1Ziwgd29ya2FyZWEsICp3b3Jr X2FyZWFfYnl0ZXMpOwotLQotLQlkbyB7Ci0tCQlyYyA9IHJ0YXNfY2FsbCgiaWJtLHBoeXNpY2Fs LWF0dGVzdGF0aW9uIiwgMywgMywKLS0JCQkgICAgICAgaHRvYmUzMih3b3JrYXJlYV9wYSksIGh0 b2JlMzIoa2J1Zl9zeiksCi0tCQkJICAgICAgIGh0b2JlMzIoc2VxX251bSksCi0tCQkJICAgICAg ICZzdGF0dXMsIG5leHRfc2VxX251bSwgJnJlc3BfYnl0ZXMpOwotLQkJaWYgKHJjIDwgMCkKLS0J CQlicmVhazsKLS0KLS0JCXJjID0gaGFuZGxlX2RlbGF5KHN0YXR1cywgJmVsYXBzZWQpOwotLQl9 IHdoaWxlIChyYyA9PSBDQUxMX0FHQUlOKTsKLS0KLS0JKm5leHRfc2VxX251bSA9IGJlMzJ0b2go Km5leHRfc2VxX251bSk7Ci0tCi0tCS8qIEZXIHJldHVybmVkIG1vcmUgZGF0YSB0aGFuIHdlIGNh biBoYW5kbGUgKi8KLS0JaWYgKGJlMzJ0b2gocmVzcF9ieXRlcykgPiAodW5zaWduZWQgaW50KSp3 b3JrX2FyZWFfYnl0ZXMpIHsKLS0JCSh2b2lkKXJ0YXNfZnJlZV9ybW9fYnVmZmVyKGtlcm5idWYs IHdvcmthcmVhX3BhLCBrYnVmX3N6KTsKLS0JCXJldHVybiBSVEFTX0lPX0FTU0VSVDsKLS0JfQot LQotLQkqd29ya19hcmVhX2J5dGVzID0gYmUzMnRvaChyZXNwX2J5dGVzKTsKLS0KLS0JaWYgKHJj ID09IDApCi0tCQltZW1jcHkod29ya2FyZWEsIGtlcm5idWYsICp3b3JrX2FyZWFfYnl0ZXMpOwot LQotLQkodm9pZClydGFzX2ZyZWVfcm1vX2J1ZmZlcihrZXJuYnVmLCB3b3JrYXJlYV9wYSwga2J1 Zl9zeik7Ci0tCi0tCXJldHVybiByYyA/IHJjIDogc3RhdHVzOwotLX0KCmRpZmYgLS1naXQgYS9s aWJydGFzLTA5LWVuZC1sb2NrZG93bi1jb21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaCBiL2xpYnJ0 YXMtMDktZW5kLWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBkZTc4ZjhmLi4wMDAwMDAwCi0tLSBhL2xpYnJ0YXMtMDktZW5k LWxvY2tkb3duLWNvbXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjQ3ICswLDAgQEAKLWNvbW1pdCBjYWMxYzI5MmJlNTZhYTlhYTg5ZDk2NDkwODAxMjg1YzcwNzAw NWM3Ci1BdXRob3I6IEhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KLURhdGU6ICAg VHVlIEFwciAyOSAyMDoxMDoxOSAyMDI1IC0wNzAwCi0KLSAgICBsaWJydGFzOiBVc2Uga2VybmVs IGludGVyZmFjZSB3aGVuIGF2YWlsYWJsZSBmb3IgaWJtLHBoeXNpY2FsLWF0dGVzdGF0aW9uCi0g ICAgCi0gICAgcnRhc19waHlzaWNhbF9hdHRlc3RhdGlvbigpIHVzZXMgc3lzX3J0YXMoKSB0byBv YnRhaW4gcmVzcG9uc2UKLSAgICBidWZmZXIgZm9yIGVhY2ggYXR0ZXN0YXRpb24gY29tbWFuZC4g VGhpcyBSVEFTIGZ1bmN0aW9uIHBhc3NlcwotICAgIFJUQVMgd29yayBhcmVhIHRvIHNlbmQgaW5w dXQgYXR0ZXN0YXRpb24gY29tbWFuZCBhbmQgdG8gcmV0cmlldmUKLSAgICByZXNwb25zZSBidWZm ZXIuIEJ1dCB0aGUgYWxsb2NhdGlvbiBvZiB3b3JrIGFyZWEgaXMgcHJvaGliaXRlZAotICAgIHVu ZGVyIHN5c3RlbSBsb2NrZG93bi4KLSAgICAKLSAgICBUaGlzIHBhdGNoIGFkZHMgY2hhbmdlcyB0 byB1c2UgbmV3IGtlcm5lbCBBQkkgaWYKLSAgICAvZGV2L3BhcHItcGh5c2ljYWwtYXR0ZXN0YXRp b24gaXMgYXZhaWxhYmxlLiBGaXJzdCBleGVjdXRpb24gb2YKLSAgICBydGFzX3BoeXNpY2FsX2F0 dGVzdGF0aW9uKCkgc2V0cyB0aGUgbmV3IEFQSSBpZiB0aGUgZGV2aWNlIG5vZGUKLSAgICBpcyBh dmFpbGFibGUsIG90aGVyaXNlIGV4ZWN1dGUgdXNlciBzcGFjZSBpbnRlcmZhY2UuCi0gICAgCi0g ICAgT3BlbiAvZGV2L3BhcHItcGh5c2ljYWwtYXR0ZXN0YXRpb24gYW5kIG9idGFpbiBGRCB3aXRo Ci0gICAgUEFQUl9QSFlfQVRURVNUX0lPQ19IQU5ETEUgaW9jdGwuIFRoZSBrZXJuZWwgY29tcGxl dGVzIHRoZSBSVEFTCi0gICAgc2VxdWVuY2UgaW4gdGhpcyBpb2N0bCBhbmQgZXhwb3NlcyB0aGUg cmVwb25zZSBidWZmZXIgd2l0aCB0aGlzCi0gICAgRkQuIFRoZSB1c2VyIHNwYWNlIHJlYWRzIHRo ZSBjb21wbGV0ZSBidWZmZXIgd2l0aCByZWFkKCkgY2FsbHMuCi0gICAgCi0gICAgU2lnbmVkLW9m Zi1ieTogSGFyZW4gTXluZW5pIDxoYXJlbkBsaW51eC5pYm0uY29tPgotICAgIFNpZ25lZC1vZmYt Ynk6IFR5cmVsIERhdHd5bGVyIDx0eXJlbGRAbGludXguaWJtLmNvbT4KLQotZGlmZiAtLWdpdCBh L01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGU2MDVkOTguLmNjZDdlZTcgMTAwNjQ0 Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00NCw3ICs0NCw4IEBA IG5vaW5zdF9IRUFERVJTICs9IFwKLSAJbGlicnRhc19zcmMvcGFwci1zeXNwYXJtLmggXAotIAls aWJydGFzX3NyYy9wYXByLXZwZC5oIFwKLSAJbGlicnRhc19zcmMvcGFwci1wbGF0Zm9ybS1kdW1w LmggXAotLQlsaWJydGFzX3NyYy9wYXByLWluZGljZXMuaAotKwlsaWJydGFzX3NyYy9wYXByLWlu ZGljZXMuaCBcCi0rCWxpYnJ0YXNfc3JjL3BhcHItcGh5c2ljYWwtYXR0ZXN0YXRpb24uaAotIAot ICMgU2VlICJVcGRhdGluZyBsaWJyYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24iIGluIHRoZSBsaWJ0 b29sIG1hbnVhbCBmb3IKLSAjIGhvdyB0byBtYWludGFpbiB0aGVzZSB2YWx1ZXMuIFRoZXkgYXJl ICpub3QqIHRpZWQgdG8gdGhlIHJlbGVhc2UKLWRpZmYgLS1naXQgYS9saWJydGFzX3NyYy9wYXBy LXBoeXNpY2FsLWF0dGVzdGF0aW9uLmggYi9saWJydGFzX3NyYy9wYXByLXBoeXNpY2FsLWF0dGVz dGF0aW9uLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMmI0YmFlCi0t LS0gL2Rldi9udWxsCi0rKysgYi9saWJydGFzX3NyYy9wYXByLXBoeXNpY2FsLWF0dGVzdGF0aW9u LmgKLUBAIC0wLDAgKzEsMzEgQEAKLSsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLwotKyNpZm5kZWYgX1VBUElfUEFQUl9QSFlTSUNB TF9BVFRFU1RBVElPTl9IXwotKyNkZWZpbmUgX1VBUElfUEFQUl9QSFlTSUNBTF9BVFRFU1RBVElP Tl9IXwotKwotKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotKyNpbmNsdWRlIDxhc20vaW9jdGwu aD4KLSsjaW5jbHVkZSAicGFwci1taXNjZGV2LmgiCi0rCi0rI2RlZmluZSBQQVBSX1BIWUFUVEVT VF9NQVhfSU5QVVQgNDA4NCAvKiBNYXggNEsgYnVmZmVyOiA0Sy0xMiAqLwotKwotKy8qCi0rICog RGVmaW5lZCBpbiBQQVBSIDIuMTMrIDIxLjYgQXR0ZXN0YXRpb24gQ29tbWFuZCBTdHJ1Y3R1cmVz LgotKyAqIFVzZXIgc3BhY2UgcGFzcyB0aGlzIHN0cnVjdCBhbmQgdGhlIG1heCBzaXplIHNob3Vs ZCBiZSA0Sy4KLSsgKi8KLStzdHJ1Y3QgcGFwcl9waHlfYXR0ZXN0X2lvX2Jsb2NrIHsKLSsJX191 OCB2ZXJzaW9uOwotKwlfX3U4IGNvbW1hbmQ7Ci0rCV9fdTggVENHX21ham9yX3ZlcjsKLSsJX191 OCBUQ0dfbWlub3JfdmVyOwotKwlfX2JlMzIgbGVuZ3RoOwotKwlfX2JlMzIgY29ycmVsYXRvcjsK LSsJX191OCBwYXlsb2FkW1BBUFJfUEhZQVRURVNUX01BWF9JTlBVVF07Ci0rfTsKLSsKLSsvKgot KyAqIGlvY3RsIGZvciAvZGV2L3BhcHItcGh5c2ljYWwtYXR0ZXN0YXRpb24uIFJldHVybnMgYSBh dHRlc3RhdGlvbgotKyAqIGNvbW1hbmQgZmQgaGFuZGxlCi0rICovCi0rI2RlZmluZSBQQVBSX1BI WV9BVFRFU1RfSU9DX0hBTkRMRSBfSU9XKFBBUFJfTUlTQ0RFVl9JT0NfSUQsIDgsIHN0cnVjdCBw YXByX3BoeV9hdHRlc3RfaW9fYmxvY2spCi0rCi0rI2VuZGlmIC8qIF9VQVBJX1BBUFJfUEhZU0lD QUxfQVRURVNUQVRJT05fSF8gKi8KLWRpZmYgLS1naXQgYS9saWJydGFzX3NyYy9waHlzaWNhbC1h dHRlc3RhdGlvbi5jIGIvbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYwotaW5kZXgg M2UzNmFmMy4uNDgxMDhhMCAxMDA2NDQKLS0tLSBhL2xpYnJ0YXNfc3JjL3BoeXNpY2FsLWF0dGVz dGF0aW9uLmMKLSsrKyBiL2xpYnJ0YXNfc3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9uLmMKLUBAIC0x LDIxICsxLDI3IEBACi0gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9yLWxh dGVyCi0tICAKLSsKLSAvLyBTdXBwb3J0IGZvciBhY2Nlc3NpbmcgaWJtLHBoeXNpY2FsLWF0dGVz dGF0aW9uIGRhdGEKLSAvLyB2aWEgL2Rldi9wYXByLXBoeS1hdHRlc3RhdGlvbiBvciB0aGUgbGVn YWN5IHJ0YXMoKSBzeXNjYWxsLgotIAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2lu Y2x1ZGUgPHB0aHJlYWQuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjaW5jbHVkZSA8c3Rk Ym9vbC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4K LSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1 ZGUgPGxpbnV4L3VuaXN0ZC5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotICNpbmNsdWRl ICJpbnRlcm5hbC5oIgotICNpbmNsdWRlICJsaWJydGFzLmgiCi0rI2luY2x1ZGUgInBhcHItcGh5 c2ljYWwtYXR0ZXN0YXRpb24uaCIKLSAKLSAvKioKLS0gKiBydGFzX3BoeXNpY2FsX2F0dGVzdGF0 aW9uCi0tICogQGJyaWVmIEludGVyZmFjZSBmb3IgaWJtLHBoeXNpY2FsLWF0dGVzdGF0aW9uIHJ0 YXMgY2FsbC4KLSsgKiBpYm0scGh5c2ljYWwtYXR0ZXN0YXRpb24gUlRBUyBjYWxsIGZyb20gdXNl ciBzcGFjZQotICAqCi0gICogQHBhcmFtIHdvcmthcmVhIGlucHV0L291dHB1dCB3b3JrIGFyZWEg Zm9yIHJ0YXMgY2FsbAotICAqIEBwYXJhbSBzZXFfbnVtIHNlcXVlbmNlIG51bWJlciBvZiB0aGUg cnRhcyBjYWxsCi1AQCAtMjMsNyArMjksNyBAQAotICAqIEBwYXJhbSB3b3JrX2FyZWFfYnl0ZXMg c2l6ZSBvZiB3b3JrIGFyZWEKLSAgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgITAgb24gZmFpbHVy ZQotICAqLwotLWludCBydGFzX3BoeXNpY2FsX2F0dGVzdGF0aW9uKGNoYXIgKndvcmthcmVhLCBp bnQgc2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0raW50IHBoeV9hdHRlc3RhdGlvbl91c2Vy KGNoYXIgKndvcmthcmVhLCBpbnQgc2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0gCQkJICAg ICAgaW50ICp3b3JrX2FyZWFfYnl0ZXMpCi0gewotIAl1aW50MzJfdCB3b3JrYXJlYV9wYTsKLUBA IC03NiwzICs4MiwxMjYgQEAgaW50IHJ0YXNfcGh5c2ljYWxfYXR0ZXN0YXRpb24oY2hhciAqd29y a2FyZWEsIGludCBzZXFfbnVtLCBpbnQgKm5leHRfc2VxX251bSwKLSAJcmV0dXJuIHJjID8gcmMg OiBzdGF0dXM7Ci0gfQotIAotK3N0YXRpYyBib29sIHBoeV9hdHRlc3RfY2FuX3VzZV9jaGFyZGV2 KHZvaWQpCi0rewotKwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotKwotKwlpZiAoc3RhdCgiL2Rldi9w YXByLXBoeXNpY2FsLWF0dGVzdGF0aW9uIiwgJnN0YXRidWYpKQotKwkJcmV0dXJuIGZhbHNlOwot KwotKwlpZiAoIVNfSVNDSFIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSsJCXJldHVybiBmYWxzZTsKLSsK LSsJaWYgKGNsb3NlKG9wZW4oIi9kZXYvcGFwci1waHlzaWNhbC1hdHRlc3RhdGlvbiIsIE9fUkRP TkxZKSkpCi0rCQlyZXR1cm4gZmFsc2U7Ci0rCi0rCXJldHVybiB0cnVlOwotK30KLSsKLSsjZGVm aW5lIERFVlBBVEggIi9kZXYvcGFwci1waHlzaWNhbC1hdHRlc3RhdGlvbiIKLSsKLStzdGF0aWMg aW50IHBoeV9hdHRlc3RfZmRfbmV3KGNvbnN0IGNoYXIgKmF0dGVzdF9jbWQsIHVuc2lnbmVkIGlu dCBzaXplKQotK3sKLSsJY29uc3QgaW50IGRldmZkID0gb3BlbihERVZQQVRILCBPX1dST05MWSk7 Ci0rCXN0cnVjdCBwYXByX3BoeV9hdHRlc3RfaW9fYmxvY2sgY21kID0ge307Ci0rCWludCBmZCA9 IC0xOwotKwotKwlpZiAoZGV2ZmQgPCAwKQotKwkJcmV0dXJuIC0xOwotKwotKwkvKgotKwkgKiBT aXplIG9mIGVhY2ggY29tbWFuZCBzdHJ1Y3QgaGFzIHRvIGJlIHRoZSAgYnVmZmVyIHNpemUKLSsJ ICogKFdPUktfQVJFQV9TSVpFIC0gNEspIHBhc3NlZCBieSB0aGUgdXNlci4KLSsJICovCi0rCWlm IChzaXplICE9IHNpemVvZihzdHJ1Y3QgcGFwcl9waHlfYXR0ZXN0X2lvX2Jsb2NrKSkgewotKwkJ ZmQgPSBSVEFTX0lPX0FTU0VSVDsKLSsJCWdvdG8gY2xvc2VfZGV2ZmQ7Ci0rCX0KLSsKLSsJbWVt Y3B5KCZjbWQsIGF0dGVzdF9jbWQsIHNpemVvZihzdHJ1Y3QgcGFwcl9waHlfYXR0ZXN0X2lvX2Js b2NrKSk7Ci0rCWZkID0gaW9jdGwoZGV2ZmQsIFBBUFJfUEhZX0FUVEVTVF9JT0NfSEFORExFLCAm Y21kKTsKLSsKLStjbG9zZV9kZXZmZDoKLSsJY2xvc2UoZGV2ZmQpOwotKwlyZXR1cm4gZmQ7Ci0r fQotKwotK3N0YXRpYyBpbnQKLStwaHlfYXR0ZXN0YXRpb25fa2VybmVsKGNoYXIgKndvcmthcmVh LCBpbnQgc2VxX251bSwgaW50ICpuZXh0X3NlcV9udW0sCi0rCQkJaW50ICp3b3JrX2FyZWFfYnl0 ZXMpCi0rewotKwlpbnQgc2l6ZSA9ICp3b3JrX2FyZWFfYnl0ZXM7Ci0rCWludCBmZCA9IChzZXFf bnVtID09IDEpID8gcGh5X2F0dGVzdF9mZF9uZXcod29ya2FyZWEsIHNpemUpCi0rCQk6IChpbnQp c2VxX251bTsKLSsKLSsJLyoKLSsJICogRW5zdXJlIHdlIHJldHVybiBhIGZkID4gMCBpbiBuZXh0 X3NlcV9udW0uCi0rCSAqLwotKwlpZiAoZmQgPT0gMSkgewotKwkJaW50IG5ld2ZkID0gZHVwKGZk KTsKLSsJCWNsb3NlKGZkKTsKLSsJCWZkID0gbmV3ZmQ7Ci0rCX0KLSsKLSsJaWYgKGZkIDwgMCkK LSsJCXJldHVybiAtMzsgLyogU3ludGhlc2l6ZSBpYm0sZ2V0LXZwZCAicGFyYW1ldGVyIGVycm9y IiAqLwotKwotKwkvKiBDYWxsZXIgcHJvdmlkZWQgbW9yZSBkYXRhIHRoYW4gRlcgY2FuIGhhbmRs ZSAqLwotKwlpZiAoc2l6ZSA9PSAwIHx8IHNpemUgPiBXT1JLX0FSRUFfU0laRSkgewotKwkJY2xv c2UoZmQpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gUlRBU19JT19BU1NFUlQ7Ci0rCX0KLSsK LSsKLSsJaW50IHJ0YXNfc3RhdHVzID0gMDsKLSsJc3NpemVfdCByZXMgPSByZWFkKGZkLCB3b3Jr YXJlYSwgKndvcmtfYXJlYV9ieXRlcyk7Ci0rCWlmIChyZXMgPCAwKSB7Ci0rCQlydGFzX3N0YXR1 cyA9IC0xOyAvKiBTeW50aGVzaXplIGlibSxnZXQtdnBkICJoYXJkd2FyZSBlcnJvciIgKi8KLSsJ CWNsb3NlKGZkKTsKLSsJfSBlbHNlIGlmIChyZXMgPT0gMCB8fCByZXMgPCAoc3NpemVfdClzaXpl KSB7Ci0rCQlydGFzX3N0YXR1cyA9IDA7IC8qIERvbmUgd2l0aCBzZXF1ZW5jZSwgbm8gbW9yZSBk YXRhICovCi0rCQljbG9zZShmZCk7Ci0rCQlpZiAobmV4dF9zZXFfbnVtKQotKwkJCSpuZXh0X3Nl cV9udW0gPSAxOwotKwkJaWYgKHdvcmtfYXJlYV9ieXRlcykKLSsJCQkqd29ya19hcmVhX2J5dGVz ID0gcmVzOwotKwl9IGVsc2UgewotKwkJcnRhc19zdGF0dXMgPSAxOyAvKiBNb3JlIGRhdGEgYXZh aWxhYmxlLCBjYWxsIGFnYWluICovCi0rCQlpZiAobmV4dF9zZXFfbnVtKQotKwkJCSpuZXh0X3Nl cV9udW0gPSBmZDsKLSsJCWlmICh3b3JrX2FyZWFfYnl0ZXMpCi0rCQkJKndvcmtfYXJlYV9ieXRl cyA9IHJlczsKLSsJfQotKwotKwlyZXR1cm4gcnRhc19zdGF0dXM7Ci0rfQotKwotK3N0YXRpYyBp bnQgKCpwaHlfYXR0ZXN0YXRpb25fZm4pKGNoYXIgKndvcmthcmVhLCBpbnQgc2VxX251bSwKLSsJ CQlpbnQgKm5leHRfc2VxX251bSwgaW50ICp3b3JrX2FyZWFfYnl0ZXMpOwotKwotK3N0YXRpYyB2 b2lkIHBoeV9hdHRlc3RhdGlvbl9mbl9zZXR1cCh2b2lkKQotK3sKLSsJcGh5X2F0dGVzdGF0aW9u X2ZuID0gcGh5X2F0dGVzdF9jYW5fdXNlX2NoYXJkZXYoKSA/Ci0rCQkJcGh5X2F0dGVzdGF0aW9u X2tlcm5lbCA6IHBoeV9hdHRlc3RhdGlvbl91c2VyOwotK30KLSsKLSsvKioKLSsgKiBydGFzX3Bo eXNpY2FsX2F0dGVzdGF0aW9uCi0rICogQGJyaWVmIEludGVyZmFjZSBmb3IgaWJtLHBoeXNpY2Fs LWF0dGVzdGF0aW9uIHJ0YXMgY2FsbC4KLSsgKgotKyAqIEBwYXJhbSB3b3JrYXJlYSBpbnB1dC9v dXRwdXQgd29yayBhcmVhIGZvciBydGFzIGNhbGwKLSsgKiBAcGFyYW0gc2VxX251bSBzZXF1ZW5j ZSBudW1iZXIgb2YgdGhlIHJ0YXMgY2FsbAotKyAqIEBwYXJhbSBuZXh0X3NlcV9udW0gbmV4dCBz ZXF1ZW5jZSBudW1iZXIKLSsgKiBAcGFyYW0gd29ya19hcmVhX2J5dGVzIHNpemUgb2YgaW5wdXQv b3V0cHV0IHdvcmsgYXJlYQotKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAhMCBvbiBmYWlsdXJl Ci0rICovCi0raW50IHJ0YXNfcGh5c2ljYWxfYXR0ZXN0YXRpb24oY2hhciAqd29ya2FyZWEsIGlu dCBzZXFfbnVtLCBpbnQgKm5leHRfc2VxX251bSwKLSsJCQkJaW50ICp3b3JrX2FyZWFfYnl0ZXMp Ci0rewotKwlzdGF0aWMgcHRocmVhZF9vbmNlX3QgcGh5X2F0dGVzdGF0aW9uX2ZuX29uY2UgPSBQ VEhSRUFEX09OQ0VfSU5JVDsKLSsKLSsJcHRocmVhZF9vbmNlKCZwaHlfYXR0ZXN0YXRpb25fZm5f b25jZSwgcGh5X2F0dGVzdGF0aW9uX2ZuX3NldHVwKTsKLSsKLSsJcmV0dXJuIHBoeV9hdHRlc3Rh dGlvbl9mbih3b3JrYXJlYSwgc2VxX251bSwgbmV4dF9zZXFfbnVtLAotKwkJCXdvcmtfYXJlYV9i eXRlcyk7Ci0rfQoKZGlmZiAtLWdpdCBhL2xpYnJ0YXMtY2hlY2std2FybmluZy1udWxsLXBvaW50 ZXIucGF0Y2ggYi9saWJydGFzLWNoZWNrLXdhcm5pbmctbnVsbC1wb2ludGVyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTQyNGYxLi4wMDAwMDAwCi0tLSBhL2xpYnJ0YXMt Y2hlY2std2FybmluZy1udWxsLXBvaW50ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyAr MCwwIEBACi1jb21taXQgZDg3MTA2OTYyMTIwOWE2YWNjMGMyZmY2ZWFhYmE4OGM4NTgzZDZiMQot QXV0aG9yOiBUeXJlbCBEYXR3eWxlciA8dHlyZWxkQGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIEZy aSBKdW4gMjAgMTY6NDY6MjkgMjAyNSAtMDcwMAotCi0gICAgcGh5c2ljYWwtYXR0ZXN0YXRpb246 IGNoZWNrIHdvcmtfYXJlYV9ieXRlcyBmb3IgbnVsbCBwcmlvciB0byBkZXJlZmVyZW5jZQotICAg IAotICAgIENJIHN0YXRpYyBjaGVja2VyIHdhcm5zIG9mIHBvc3NpYmxlIE5VTEwgcG9pbnRlciBk ZXJlZmVyZW5jZS4KLSAgICAKLSAgICBsaWJydGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlvbi5j OjEzMzoxNDogd2FybmluZzogRWl0aGVyIHRoZSBjb25kaXRpb24gJ3dvcmtfYXJlYV9ieXRlcycg aXMgcmVkdW5kYW50IG9yIHRoZXJlIGlzIHBvc3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5j ZTogd29ya19hcmVhX2J5dGVzLiBbbnVsbFBvaW50ZXJSZWR1bmRhbnRDaGVja10KLSAgICAgaW50 IHNpemUgPSAqd29ya19hcmVhX2J5dGVzOwotICAgICAgICAgICAgICAgICBeCi0gICAgbGlicnRh c19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYzoxNjY6Nzogbm90ZTogQXNzdW1pbmcgdGhhdCBj b25kaXRpb24gJ3dvcmtfYXJlYV9ieXRlcycgaXMgbm90IHJlZHVuZGFudAotICAgICAgaWYgKHdv cmtfYXJlYV9ieXRlcykKLSAgICAgICAgICBeCi0gICAgbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0 ZXN0YXRpb24uYzoxMzM6MTQ6IG5vdGU6IE51bGwgcG9pbnRlciBkZXJlZmVyZW5jZQotICAgICBp bnQgc2l6ZSA9ICp3b3JrX2FyZWFfYnl0ZXM7Ci0gICAgICAgICAgICAgICAgIF4KLSAgICBsaWJy dGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlvbi5jOjE1NzozNjogd2FybmluZzogRWl0aGVyIHRo ZSBjb25kaXRpb24gJ3dvcmtfYXJlYV9ieXRlcycgaXMgcmVkdW5kYW50IG9yIHRoZXJlIGlzIHBv c3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZTogd29ya19hcmVhX2J5dGVzLiBbbnVsbFBv aW50ZXJSZWR1bmRhbnRDaGVja10KLSAgICAgc3NpemVfdCByZXMgPSByZWFkKGZkLCB3b3JrYXJl YSwgKndvcmtfYXJlYV9ieXRlcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCi0gICAgbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYzoxNjY6Nzogbm90 ZTogQXNzdW1pbmcgdGhhdCBjb25kaXRpb24gJ3dvcmtfYXJlYV9ieXRlcycgaXMgbm90IHJlZHVu ZGFudAotICAgICAgaWYgKHdvcmtfYXJlYV9ieXRlcykKLSAgICAgICAgICBeCi0gICAgbGlicnRh c19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYzoxNTc6MzY6IG5vdGU6IE51bGwgcG9pbnRlciBk ZXJlZmVyZW5jZQotICAgICBzc2l6ZV90IHJlcyA9IHJlYWQoZmQsIHdvcmthcmVhLCAqd29ya19h cmVhX2J5dGVzKTsKLSAgICAKLSAgICBGaXggYnkgdGVzdGluZyB3b3JrX2FyZWFfYnl0ZXMgcHJp b3IgdG8gdGhlIGZpcnN0IHBvaW50ZXIgZGVyZWZlcmVuY2UuCi0gICAgVGhlIGxhdGVyIHBvaW50 ZXIgY2hlY2tzIGFyZSByZWR1bmRhbnQgYW5kIGNhbiBiZSByZW1vdmVkIGFzIHNpemU9MCB3aWxs Ci0gICAgcmVzdWx0IGluIFJUQVNfSU9fQVNTRVJUIGVycm9yIGJlaW5nIHJldHVybmVkIHByaW9y LgotICAgIAotICAgIEZpeGVzOiBjYWMxYzI5MmJlNTZhICgibGlicnRhczogVXNlIGtlcm5lbCBp bnRlcmZhY2Ugd2hlbiBhdmFpbGFibGUgZm9yIGlibSxwaHlzaWNhbC1hdHRlc3RhdGlvbiIpCi0g ICAgU2lnbmVkLW9mZi1ieTogVHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgot Ci1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvcGh5c2ljYWwtYXR0ZXN0YXRpb24uYyBiL2xpYnJ0 YXNfc3JjL3BoeXNpY2FsLWF0dGVzdGF0aW9uLmMKLWluZGV4IDQ4MTA4YTAuLjBkMzk3NWMgMTAw NjQ0Ci0tLS0gYS9saWJydGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlvbi5jCi0rKysgYi9saWJy dGFzX3NyYy9waHlzaWNhbC1hdHRlc3RhdGlvbi5jCi1AQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRp YyBpbnQKLSBwaHlfYXR0ZXN0YXRpb25fa2VybmVsKGNoYXIgKndvcmthcmVhLCBpbnQgc2VxX251 bSwgaW50ICpuZXh0X3NlcV9udW0sCi0gCQkJaW50ICp3b3JrX2FyZWFfYnl0ZXMpCi0gewotLQlp bnQgc2l6ZSA9ICp3b3JrX2FyZWFfYnl0ZXM7Ci0rCWludCBzaXplID0gKHdvcmtfYXJlYV9ieXRl cykgPyAqd29ya19hcmVhX2J5dGVzIDogMDsKLSAJaW50IGZkID0gKHNlcV9udW0gPT0gMSkgPyBw aHlfYXR0ZXN0X2ZkX25ldyh3b3JrYXJlYSwgc2l6ZSkKLSAJCTogKGludClzZXFfbnVtOwotIAot QEAgLTE2MywxNCArMTYzLDEyIEBAIHBoeV9hdHRlc3RhdGlvbl9rZXJuZWwoY2hhciAqd29ya2Fy ZWEsIGludCBzZXFfbnVtLCBpbnQgKm5leHRfc2VxX251bSwKLSAJCWNsb3NlKGZkKTsKLSAJCWlm IChuZXh0X3NlcV9udW0pCi0gCQkJKm5leHRfc2VxX251bSA9IDE7Ci0tCQlpZiAod29ya19hcmVh X2J5dGVzKQotLQkJCSp3b3JrX2FyZWFfYnl0ZXMgPSByZXM7Ci0rCQkqd29ya19hcmVhX2J5dGVz ID0gcmVzOwotIAl9IGVsc2UgewotIAkJcnRhc19zdGF0dXMgPSAxOyAvKiBNb3JlIGRhdGEgYXZh aWxhYmxlLCBjYWxsIGFnYWluICovCi0gCQlpZiAobmV4dF9zZXFfbnVtKQotIAkJCSpuZXh0X3Nl cV9udW0gPSBmZDsKLS0JCWlmICh3b3JrX2FyZWFfYnl0ZXMpCi0tCQkJKndvcmtfYXJlYV9ieXRl cyA9IHJlczsKLSsJCSp3b3JrX2FyZWFfYnl0ZXMgPSByZXM7Ci0gCX0KLSAKLSAJcmV0dXJuIHJ0 YXNfc3RhdHVzOwoKZGlmZiAtLWdpdCBhL2xpYnJ0YXMtZm9ybWF0LW1pc21hdGNoLXNpemVfdC5w YXRjaCBiL2xpYnJ0YXMtZm9ybWF0LW1pc21hdGNoLXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMGIwMDM4Mi4uMDAwMDAwMAotLS0gYS9saWJydGFzLWZvcm1hdC1t aXNtYXRjaC1zaXplX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1jb21t aXQgODI4ZDIwNjFmNzg0YTZiZmMzZGRmYjA1YjFlYzFiM2E0NTYwM2M0NgotQXV0aG9yOiBUeXJl bCBEYXR3eWxlciA8dHlyZWxkQGxpbnV4LmlibS5jb20+Ci1EYXRlOiAgIEZyaSBKdW4gMjAgMTY6 MzU6MTYgMjAyNSAtMDcwMAotCi0gICAgbGlicnRhczogZml4IGZvcm1hdCBzcGVjaWZpZXIgbWlz bWF0Y2ggZm9yIHNpemVfdCBpbiBpbmRpY2VzLmMKLSAgICAKLSAgICBDSSBjb21wbGFpbnMgb2Yg c2V2ZXJhbCAlbHUgZm9ybWF0IHNwZWNpZmllciBtaXNtYXRjaGVzIHRvIGFyZ3VtZW50cyBvZgot ICAgIHNpemVfdCBpbiBpbmRpY2VzLmMuIFRoaXMgaXMgYSByZXN1bHQgb2Ygc2l6ZV90IGJlaW5n IGVpdGhlciA0IGJ5dGVzIG9yCi0gICAgOCBieXRlcyBkZXBlbmRpbmcgb24gaWYgdGhlIHBhY2th Z2VzIGlzIGJ1aWx0IG9uIGEgMzJiaXQgb3IgNjRiaXQKLSAgICBhcmNoaXRlY3R1cmUgcmVzcGVj dGl2ZWx5LgotICAgIAotICAgIEZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBwcmludGYgc2l6ZV90IGZv cm1hdCBzcGVjaWZpZXIgJXp1IGluc3RlYWQuCi0gICAgCi0gICAgRml4ZXM6IDFlMjU0ZWRlMWMy MjYgKCJsaWJydGFzOiBVc2UgL2Rldi9wYXByLWluZGljZXMgd2hlbiBhdmFpbGFibGUgZm9yIGli bSxnZXQtaW5kaWNlcyIpCi0gICAgU2lnbmVkLW9mZi1ieTogVHlyZWwgRGF0d3lsZXIgPHR5cmVs ZEBsaW51eC5pYm0uY29tPgotCi1kaWZmIC0tZ2l0IGEvbGlicnRhc19zcmMvaW5kaWNlcy5jIGIv bGlicnRhc19zcmMvaW5kaWNlcy5jCi1pbmRleCA4NzVjNTc2Li4yNWEwYjExIDEwMDY0NAotLS0t IGEvbGlicnRhc19zcmMvaW5kaWNlcy5jCi0rKysgYi9saWJydGFzX3NyYy9pbmRpY2VzLmMKLUBA IC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGludCBnZXRfaW5kaWNlc19jaGFyZGV2KGludCBpc19z ZW5zb3IsIGludCB0eXBlLCBjaGFyICp3b3JrYXJlYSwKLSAJc3NpemVfdCByZXM7Ci0gCi0gCWlm IChzaXplICE9IFJUQVNfR0VUX0lORElDRVNfQlVGX1NJWkUpIHsKLS0JCWRiZygiSW52YWxpZCBi dWZmZXIgc2l6ZSAlbHUgZXhwZWN0cyAlZFxuIiwKLSsJCWRiZygiSW52YWxpZCBidWZmZXIgc2l6 ZSAlenUgZXhwZWN0cyAlZFxuIiwKLSAJCQkJc2l6ZSwgUlRBU19HRVRfSU5ESUNFU19CVUZfU0la RSk7Ci0gCQlyZXR1cm4gLUVJTlZBTDsKLSAJfQotQEAgLTI2MCwxMyArMjYwLDEzIEBAIHN0YXRp YyBpbnQgZHluYW1pY19jb21tb25faW9fc2V0dXAodW5zaWduZWQgbG9uZyBpb2N0YWx2YWwsCi0g CWxlbmd0aCA9IGJlMzJ0b2goKih1aW50MzJfdCAqKWxvY19jb2RlKTsKLSAKLSAJaWYgKGxlbmd0 aCA8IDEpIHsKLS0JCWRiZygiSW52YWxpZCBsZW5ndGgoJWx1KSBvZiBsb2NhdGlvbiBjb2RlIHN0 cmluZ1xuIiwgbGVuZ3RoKTsKLSsJCWRiZygiSW52YWxpZCBsZW5ndGgoJXp1KSBvZiBsb2NhdGlv biBjb2RlIHN0cmluZ1xuIiwgbGVuZ3RoKTsKLSAJCWdvdG8gb3V0OwotIAl9Ci0gCi0gCWxvY19z dHIgPSAoY2hhciAqKSgoY2hhciAqKWxvY19jb2RlICsgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gCWlm IChzdHJsZW4obG9jX3N0cikgIT0gKGxlbmd0aCAtIDEpKSB7Ci0tCQlkYmcoImxvY2F0aW9uIGNv ZGUgc3RyaW5nIGxlbmd0aCBpcyBub3QgbWF0Y2hlZCB3aXRoIHRoZSBwYXNzZWQgbGVuZ3RoKCVs dSlcbiIsIGxlbmd0aCk7Ci0rCQlkYmcoImxvY2F0aW9uIGNvZGUgc3RyaW5nIGxlbmd0aCBpcyBu b3QgbWF0Y2hlZCB3aXRoIHRoZSBwYXNzZWQgbGVuZ3RoKCV6dSlcbiIsIGxlbmd0aCk7Ci0gCQln b3RvIG91dDsKLSAJfQotIAoKZGlmZiAtLWdpdCBhL2xpYnJ0YXMuc3BlYyBiL2xpYnJ0YXMuc3Bl YwppbmRleCBjZGM1NDc2Li5hMjFkYmIwIDEwMDY0NAotLS0gYS9saWJydGFzLnNwZWMKKysrIGIv bGlicnRhcy5zcGVjCkBAIC0xLDI1ICsxLDEyIEBACiBTdW1tYXJ5OiBMaWJyYXJpZXMgdG8gcHJv dmlkZSBhY2Nlc3MgdG8gUlRBUyBjYWxscyBhbmQgUlRBUyBldmVudHMKIE5hbWU6ICAgIGxpYnJ0 YXMKLVZlcnNpb246IDIuMC42Ci1SZWxlYXNlOiA2JXs/ZGlzdH0KK1ZlcnNpb246IDIuMC43CitS ZWxlYXNlOiAxJXs/ZGlzdH0KIFVSTDogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tcG93ZXIt dXRpbGl0aWVzL2xpYnJ0YXMKIExpY2Vuc2U6IExHUEwtMi4wLW9yLWxhdGVyCiAKIFNvdXJjZTA6 IGh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tcG93ZXItdXRpbGl0aWVzLyV7bmFtZX0vYXJjaGl2ZS92 JXt2ZXJzaW9ufS8le25hbWV9LSV7dmVyc2lvbn0udGFyLmd6CiAKLSMgdXBzdHJlYW0gZml4ZXMg Zm9yIExvY2tkb3duLWNvbXBhdGlibGUgQUJJCi1QYXRjaDE6IGxpYnJ0YXMtMDEtbG9ja2Rvd24t Y29tcGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKLVBhdGNoMjogbGlicnRhcy0wMi1sb2NrZG93bi1j b21wYXRpYmxlLWFiaS1waGFzZS5wYXRjaAotUGF0Y2gzOiBsaWJydGFzLTAzLWxvY2tkb3duLWNv bXBhdGlibGUtYWJpLXBoYXNlLnBhdGNoCi1QYXRjaDQ6IGxpYnJ0YXMtMDQtbG9ja2Rvd24tY29t cGF0aWJsZS1hYmktcGhhc2UucGF0Y2gKLVBhdGNoNTogbGlicnRhcy0wNS1sb2NrZG93bi1jb21w YXRpYmxlLWFiaS1waGFzZS5wYXRjaAotUGF0Y2g2OiBsaWJydGFzLTA2LWxvY2tkb3duLWNvbXBh dGlibGUtYWJpLXBoYXNlLnBhdGNoCi1QYXRjaDc6IGxpYnJ0YXMtMDctbG9ja2Rvd24tY29tcGF0 aWJsZS1hYmktcGhhc2UucGF0Y2gKLVBhdGNoODogbGlicnRhcy0wOC1sb2NrZG93bi1jb21wYXRp YmxlLWFiaS1waGFzZS5wYXRjaAotUGF0Y2g5OiBsaWJydGFzLTA5LWVuZC1sb2NrZG93bi1jb21w YXRpYmxlLWFiaS1waGFzZS5wYXRjaAotUGF0Y2gxMDogbGlicnRhcy1jaGVjay13YXJuaW5nLW51 bGwtcG9pbnRlci5wYXRjaAotUGF0Y2gxMTogbGlicnRhcy1mb3JtYXQtbWlzbWF0Y2gtc2l6ZV90 LnBhdGNoCi0KIEJ1aWxkUmVxdWlyZXM6IGF1dG9jb25mCiBCdWlsZFJlcXVpcmVzOiBsaWJ0b29s CiBCdWlsZFJlcXVpcmVzOiBtYWtlCkBAIC03Nyw2ICs2NCwxMCBAQCBybSAtZiAgJXtidWlsZHJv b3R9LyV7X2RvY2Rpcn0vbGlicnRhcy8qCiAle19pbmNsdWRlZGlyfS9saWJydGFzZXZlbnRfdjYu aAogCiAlY2hhbmdlbG9nCisqIFR1ZSBKdW4gMDIgMjAyNiBUaGFuIE5nbyA8dGhhbkByZWRoYXQu Y29tPiAtIDIuMC43LTEKKy0gVXBkYXRlIHRvIDIuMC43CistIFJlbW92ZSB0aGUgcGF0Y2hlcywg d2hpY2ggYXJlIGluY2x1ZGVkIGluIHVwc3RyZWFtCisKICogRnJpIEphbiAxNiAyMDI2IEZlZG9y YSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMi4wLjYt NgogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0 X01hc3NfUmVidWlsZAogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggYTgy ZjgxNC4uNmNkYTcxYyAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsx IEBACi1TSEE1MTIgKGxpYnJ0YXMtMi4wLjYudGFyLmd6KSA9IGFkMmU4YjRjOGUzMmJhZTcwOGU1 MjQzNjI1ZWFhNjMwMjNmOTNkMjNlYWE0ZDY2NzVjNDZlYjY4NzY2YWJjYWE5MGY5NTU1ZDZhM2M3 OWQyYTU2NGZhZDEzMmQzNWE4YWZjNDAzNWQ0NGM3NmE2M2M2NGRjYjNiMjVlMTVhMGM0CitTSEE1 MTIgKGxpYnJ0YXMtMi4wLjcudGFyLmd6KSA9IGY1YzY0NmJkNmYyZjJmMzUxZGU2MzI0NTY5NGNh Y2UzYzZjNzkyMTk2Njg2ZGQwZGNmNmJkMDA0NjI1YTBjOTkzMDc5MzBkZmU4NjI5ODNlNDkzOGQ3 ZjE1Mjc5ZWJiOGI2MjhjYzNlZmEwYjhlNTU0NWZiNWI0ODVkYzFhYWFhCg==