From: "Yugui (Yuki Sonoda)" Date: 2008-10-01T17:46:04+09:00 Subject: [ruby-dev:36649] Embedding struct RArray This is a multi-part message in MIME format. --------------020900060100050401080104 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Yuguiです。 3要素以下の配列をRVALUEに埋め込むパッチを書きました。object, struct, string, hashと合わせて、これで一通りのオブジェクト埋め込みが終わると認識 します。 1.9.0-5リリース後、ABIフリーズの前に取り込みたいと思いますが、いかがで しょうか。 - -- Yugui http://yugui.jp 私は私をDumpする -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkjjOQsACgkQOXzH5JLb/AVUHwCfZo+CpQFILqEImqTTaAbxUR2c yMUAnA0YiRcenkdK5HhVN20v7GMTN1oH =7Iwi -----END PGP SIGNATURE----- --------------020900060100050401080104 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="0001-embedding-struct-RArray.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="0001-embedding-struct-RArray.patch" RnJvbSA3MGJmMDBhNmY5Yzg4YTU1YmZkOTJkY2NjYTRhZTUyN2I3NTRiNDRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBZdWtpIFNvbm9kYSAoWXVndWkpIDx5dWd1aUB5dWd1 aS5qcD4KRGF0ZTogV2VkLCAxIE9jdCAyMDA4IDE3OjQyOjI4ICswOTAwClN1YmplY3Q6IFtQ QVRDSF0gZW1iZWRkaW5nIHN0cnVjdCBSQXJyYXkuCgotLS0KIC5nZGJpbml0ICAgICAgICAg ICAgfCAgIDI5ICsrKystCiBhcnJheS5jICAgICAgICAgICAgIHwgIDQxNyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGV4dC90ay90Y2x0 a2xpYi5jICAgfCAgICA4ICstCiBnYy5jICAgICAgICAgICAgICAgIHwgICAgMiArLQogaW5j bHVkZS9ydWJ5L3J1YnkuaCB8ICAgMzMgKysrLQogcGFyc2UueSAgICAgICAgICAgICB8ICAg IDIgKy0KIHByb2MuYyAgICAgICAgICAgICAgfCAgICA2ICstCiA3IGZpbGVzIGNoYW5nZWQs IDM0NyBpbnNlcnRpb25zKCspLCAxNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvLmdk YmluaXQgYi8uZ2RiaW5pdAppbmRleCA4NTk4Y2YwLi45NmUwMzNmIDEwMDY0NAotLS0gYS8u Z2RiaW5pdAorKysgYi8uZ2RiaW5pdApAQCAtMTA0LDkgKzEwNCwzNCBAQCBkZWZpbmUgcnAK ICAgICBwcmludCAoc3RydWN0IFJSZWdleHAgKikkYXJnMAogICBlbHNlCiAgIGlmICgkZmxh Z3MgJiBSVUJZX1RfTUFTSykgPT0gUlVCWV9UX0FSUkFZCi0gICAgcHJpbnRmICJUX0FSUkFZ OiBsZW49JWxkICIsICgoc3RydWN0IFJBcnJheSopJGFyZzApLT5sZW4KKyAgICBpZiAoJGZs YWdzICYgUlVCWV9GTF9VU0VSMSkKKyAgICAgIHNldCAkbGVuID0gKCgkZmxhZ3MgJiAoUlVC WV9GTF9VU0VSM3xSVUJZX0ZMX1VTRVI0KSkgPj4gKFJVQllfRkxfVVNISUZUKzMpKQorICAg ICAgcHJpbnRmICJUX0FSUkFZOiBsZW49JWxkICIsICRsZW4KKyAgICAgIHByaW50ZiAiKGVt YmVkKSAiCisgICAgICBpZiAoJGxlbiA9PSAwKQorCXByaW50ZiAieyhlbXB0eSl9ICIKKyAg ICAgIGVsc2UKKwlvdXRwdXQveCAqKChWQUxVRSopKChzdHJ1Y3QgUkFycmF5KikkYXJnMCkt PmFzLmFyeSkgQCAkbGVuCisJcHJpbnRmICIgIgorICAgICAgZW5kCisgICAgZWxzZQorICAg ICAgc2V0ICRsZW4gPSAoKHN0cnVjdCBSQXJyYXkqKSRhcmcwKS0+YXMuaGVhcC5sZW4KKyAg ICAgIHByaW50ZiAiVF9BUlJBWTogbGVuPSVsZCAiLCAkbGVuCisgICAgICBpZiAoJGZsYWdz ICYgUlVCWV9GTF9VU0VSMikKKwlwcmludGYgIihzaGFyZWQpIHNoYXJlZD0iCisJb3V0cHV0 L3ggKChzdHJ1Y3QgUkFycmF5KikkYXJnMCktPmFzLmhlYXAuYXV4LnNoYXJlZAorCXByaW50 ZiAiICIKKyAgICAgIGVsc2UKKwlwcmludGYgIihvd25lcnNoaXApIGNhcGE9JWxkICIsICgo c3RydWN0IFJBcnJheSopJGFyZzApLT5hcy5oZWFwLmF1eC5jYXBhCisgICAgICBlbmQKKyAg ICAgIGlmICgkbGVuID09IDApCisJcHJpbnRmICJ7KGVtcHR5KX0gIgorICAgICAgZWxzZQor CW91dHB1dC94ICooKFZBTFVFKikoKHN0cnVjdCBSQXJyYXkqKSRhcmcwKS0+YXMuaGVhcC5w dHIpIEAgJGxlbgorCXByaW50ZiAiICIKKyAgICAgIGVuZAorICAgIGVuZAogICAgIHByaW50 IChzdHJ1Y3QgUkFycmF5ICopJGFyZzAKLSAgICB4L3h3ICgoc3RydWN0IFJBcnJheSopJGFy ZzApLT5wdHIKICAgZWxzZQogICBpZiAoJGZsYWdzICYgUlVCWV9UX01BU0spID09IFJVQllf VF9GSVhOVU0KICAgICBwcmludGYgIlRfRklYTlVNOiAiCmRpZmYgLS1naXQgYS9hcnJheS5j IGIvYXJyYXkuYwppbmRleCBlMzNjN2JjLi40YWE2ZGJlIDEwMDY0NAotLS0gYS9hcnJheS5j CisrKyBiL2FycmF5LmMKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJydWJ5L3J1Ynku aCIKICNpbmNsdWRlICJydWJ5L3V0aWwuaCIKICNpbmNsdWRlICJydWJ5L3N0LmgiCisjaW5j bHVkZSA8YXNzZXJ0Lmg+CiAKIFZBTFVFIHJiX2NBcnJheTsKIApAQCAtMzgsMTggKzM5LDEy MCBAQCBtZW1maWxsKHJlZ2lzdGVyIFZBTFVFICptZW0sIHJlZ2lzdGVyIGxvbmcgc2l6ZSwg cmVnaXN0ZXIgVkFMVUUgdmFsKQogICAgIH0KIH0KIAotI2RlZmluZSBBUllfU0hBUkVEX1Ao YSkgRkxfVEVTVChhLCBFTFRTX1NIQVJFRCkKKyMgZGVmaW5lIEFSWV9TSEFSRURfUChhcnkp IFwKKyAgICAoYXNzZXJ0KCFGTF9URVNUKGFyeSwgRUxUU19TSEFSRUQpIHx8ICFGTF9URVNU KGFyeSwgUkFSUkFZX0VNQkVEX0ZMQUcpKSwgXAorICAgICBGTF9URVNUKGFyeSxFTFRTX1NI QVJFRCkpCisjIGRlZmluZSBBUllfRU1CRURfUChhcnkpIFwKKyAgICAoYXNzZXJ0KCFGTF9U RVNUKGFyeSwgRUxUU19TSEFSRUQpIHx8ICFGTF9URVNUKGFyeSwgUkFSUkFZX0VNQkVEX0ZM QUcpKSwgXAorICAgICBGTF9URVNUKGFyeSwgUkFSUkFZX0VNQkVEX0ZMQUcpKQogCisjZGVm aW5lIEFSWV9IRUFQX1BUUihhKSAoYXNzZXJ0KCFBUllfRU1CRURfUChhKSksIFJBUlJBWShh KS0+YXMuaGVhcC5wdHIpCisjZGVmaW5lIEFSWV9IRUFQX0xFTihhKSAoYXNzZXJ0KCFBUllf RU1CRURfUChhKSksIFJBUlJBWShhKS0+YXMuaGVhcC5sZW4pCisjZGVmaW5lIEFSWV9FTUJF RF9QVFIoYSkgKGFzc2VydChBUllfRU1CRURfUChhKSksIFJBUlJBWShhKS0+YXMuYXJ5KQor I2RlZmluZSBBUllfRU1CRURfTEVOKGEpIFwKKyAgICAoYXNzZXJ0KEFSWV9FTUJFRF9QKGEp KSwgXAorICAgICAobG9uZykoKFJCQVNJQyhhKS0+ZmxhZ3MgPj4gUkFSUkFZX0VNQkVEX0xF Tl9TSElGVCkgJiBcCisJIChSQVJSQVlfRU1CRURfTEVOX01BU0sgPj4gUkFSUkFZX0VNQkVE X0xFTl9TSElGVCkpKQorCisjZGVmaW5lIEFSWV9PV05TX0hFQVBfUChhKSAoIUZMX1RFU1Qo YSwgRUxUU19TSEFSRUR8UkFSUkFZX0VNQkVEX0ZMQUcpKQorI2RlZmluZSBGTF9TRVRfRU1C RUQoYSkgZG8geyBcCisgICAgYXNzZXJ0KCFBUllfU0hBUkVEX1AoYSkpOyBcCisgICAgYXNz ZXJ0KCFPQkpfRlJPWkVOKGEpKTsgXAorICAgIEZMX1NFVChhLCBSQVJSQVlfRU1CRURfRkxB Ryk7IFwKK30gd2hpbGUgKDApCisjZGVmaW5lIEZMX1VOU0VUX0VNQkVEKGFyeSkgRkxfVU5T RVQoYXJ5LCBSQVJSQVlfRU1CRURfRkxBR3xSQVJSQVlfRU1CRURfTEVOX01BU0spCisjZGVm aW5lIEZMX1NFVF9TSEFSRUQoYXJ5KSBkbyB7IFwKKyAgICBhc3NlcnQoIUFSWV9FTUJFRF9Q KGFyeSkpOyBcCisgICAgRkxfU0VUKGFyeSwgRUxUU19TSEFSRUQpOyBcCit9IHdoaWxlICgw KQorI2RlZmluZSBGTF9VTlNFVF9TSEFSRUQoYXJ5KSBGTF9VTlNFVChhcnksIEVMVFNfU0hB UkVEKQorCisjZGVmaW5lIEFSWV9TRVRfUFRSKGFyeSwgcCkgZG8geyBcCisgICAgYXNzZXJ0 KCFBUllfRU1CRURfUChhcnkpKTsgXAorICAgIGFzc2VydCghT0JKX0ZST1pFTihhcnkpKTsg XAorICAgIFJBUlJBWShhcnkpLT5hcy5oZWFwLnB0ciA9IChwKTsgXAorfSB3aGlsZSAoMCkK KyNkZWZpbmUgQVJZX1NFVF9FTUJFRF9MRU4oYXJ5LCBuKSBkbyB7IFwKKyAgICBsb25nIHRt cF9uID0gbjsgXAorICAgIGFzc2VydChBUllfRU1CRURfUChhcnkpKTsgXAorICAgIGFzc2Vy dCghT0JKX0ZST1pFTihhcnkpKTsgXAorICAgIFJCQVNJQyhhcnkpLT5mbGFncyAmPSB+UkFS UkFZX0VNQkVEX0xFTl9NQVNLOyBcCisgICAgUkJBU0lDKGFyeSktPmZsYWdzIHw9ICh0bXBf bikgPDwgUkFSUkFZX0VNQkVEX0xFTl9TSElGVDsgXAorfSB3aGlsZSAoMCkKKyNkZWZpbmUg QVJZX1NFVF9IRUFQX0xFTihhcnksIG4pIGRvIHsgXAorICAgIGFzc2VydCghQVJZX0VNQkVE X1AoYXJ5KSk7IFwKKyAgICBSQVJSQVkoYXJ5KS0+YXMuaGVhcC5sZW4gPSBuOyBcCit9IHdo aWxlICgwKQogI2RlZmluZSBBUllfU0VUX0xFTihhcnksIG4pIGRvIHsgXAotICAgIFJBUlJB WShhcnkpLT5sZW4gPSAobik7XAorICAgIGlmIChBUllfRU1CRURfUChhcnkpKSB7IFwKKyAg ICAgICAgQVJZX1NFVF9FTUJFRF9MRU4oYXJ5LCBuKTsgXAorICAgIH0gXAorICAgIGVsc2Ug eyBcCisgICAgICAgIEFSWV9TRVRfSEVBUF9MRU4oYXJ5LCBuKTsgXAorICAgIH0gXAorICAg IGFzc2VydChSQVJSQVlfTEVOKGFyeSkgPT0gbik7IFwKIH0gd2hpbGUgKDApIAorI2RlZmlu ZSBBUllfSU5DUkVBU0VfUFRSKGFyeSwgbikgZG8gIHsgXAorICAgIGFzc2VydCghQVJZX0VN QkVEX1AoYXJ5KSk7IFwKKyAgICBhc3NlcnQoIU9CSl9GUk9aRU4oYXJ5KSk7IFwKKyAgICBS QVJSQVkoYXJ5KS0+YXMuaGVhcC5wdHIgKz0gbjsgXAorfSB3aGlsZSAoMCkKKyNkZWZpbmUg QVJZX0lOQ1JFQVNFX0xFTihhcnksIG4pIGRvICB7IFwKKyAgICBhc3NlcnQoIU9CSl9GUk9a RU4oYXJ5KSk7IFwKKyAgICBpZiAoQVJZX0VNQkVEX1AoYXJ5KSkgeyBcCisgICAgICAgIEFS WV9TRVRfRU1CRURfTEVOKGFyeSwgUkFSUkFZX0xFTihhcnkpK24pOyBcCisgICAgfSBcCisg ICAgZWxzZSB7IFwKKyAgICAgICAgUkFSUkFZKGFyeSktPmFzLmhlYXAubGVuICs9IG47IFwK KyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgQVJZX0NBUEEoYXJ5KSAoQVJZX0VN QkVEX1AoYXJ5KSA/IFJBUlJBWV9FTUJFRF9MRU5fTUFYIDogUkFSUkFZKGFyeSktPmFzLmhl YXAuYXV4LmNhcGEpCisjZGVmaW5lIEFSWV9TRVRfQ0FQQShhcnksIG4pIGRvIHsgXAorICAg IGFzc2VydCghQVJZX0VNQkVEX1AoYXJ5KSk7IFwKKyAgICBhc3NlcnQoIUFSWV9TSEFSRURf UChhcnkpKTsgXAorICAgIGFzc2VydCghT0JKX0ZST1pFTihhcnkpKTsgXAorICAgIFJBUlJB WShhcnkpLT5hcy5oZWFwLmF1eC5jYXBhID0gKG4pOyBcCit9IHdoaWxlICgwKQogCi0jZGVm aW5lIEFSWV9DQVBBKGFyeSkgUkFSUkFZKGFyeSktPmF1eC5jYXBhCi0jZGVmaW5lIFJFU0la RV9DQVBBKGFyeSxjYXBhY2l0eSkgZG8ge1wKLSAgICBSRUFMTE9DX04oUkFSUkFZKGFyeSkt PnB0ciwgVkFMVUUsIChjYXBhY2l0eSkpO1wKLSAgICBSQVJSQVkoYXJ5KS0+YXV4LmNhcGEg PSAoY2FwYWNpdHkpO1wKKyNkZWZpbmUgQVJZX1NIQVJFRChhcnkpIChhc3NlcnQoQVJZX1NI QVJFRF9QKGFyeSkpLCBSQVJSQVkoYXJ5KS0+YXMuaGVhcC5hdXguc2hhcmVkKQorI2RlZmlu ZSBBUllfU0VUX1NIQVJFRChhcnksIHZhbHVlKSBkbyB7IFwKKyAgICBhc3NlcnQoIUFSWV9F TUJFRF9QKGFyeSkpOyBcCisgICAgYXNzZXJ0KEFSWV9TSEFSRURfUChhcnkpKTsgXAorICAg IFJBUlJBWShhcnkpLT5hcy5oZWFwLmF1eC5zaGFyZWQgPSAodmFsdWUpOyBcCiB9IHdoaWxl ICgwKQogCitzdGF0aWMgdm9pZAorUkVTSVpFX0NBUEEoVkFMVUUgYXJ5LCBsb25nIGNhcGFj aXR5KQoreworICAgIGFzc2VydCghT0JKX0ZST1pFTihhcnkpKTsgCisgICAgYXNzZXJ0KCFB UllfU0hBUkVEX1AoYXJ5KSk7IAorICAgIGlmIChjYXBhY2l0eSA+IFJBUlJBWV9FTUJFRF9M RU5fTUFYKSB7CisgICAgICAgIGlmIChBUllfRU1CRURfUChhcnkpKSB7CisgICAgICAgICAg ICBsb25nIGxlbiA9IEFSWV9FTUJFRF9MRU4oYXJ5KTsgCisgICAgICAgICAgICBWQUxVRSAq cHRyID0gQUxMT0NfTihWQUxVRSwgKGNhcGFjaXR5KSk7CisgICAgICAgICAgICBNRU1DUFko cHRyLCBBUllfRU1CRURfUFRSKGFyeSksIFZBTFVFLCBsZW4pOyAKKyAgICAgICAgICAgIEZM X1VOU0VUX0VNQkVEKGFyeSk7IAorICAgICAgICAgICAgQVJZX1NFVF9QVFIoYXJ5LCBwdHIp OyAKKyAgICAgICAgICAgIEFSWV9TRVRfSEVBUF9MRU4oYXJ5LCBsZW4pOyAKKyAgICAgICAg fQorICAgICAgICBlbHNlIHsgCisgICAgICAgICAgICBSRUFMTE9DX04oUkFSUkFZKGFyeSkt PmFzLmhlYXAucHRyLCBWQUxVRSwgKGNhcGFjaXR5KSk7CisgICAgICAgIH0KKyAgICAgICAg QVJZX1NFVF9DQVBBKGFyeSwgKGNhcGFjaXR5KSk7IAorICAgIH0KKyAgICBlbHNlIHsKKyAg ICAgICAgaWYgKCFBUllfRU1CRURfUChhcnkpKSB7CisgICAgICAgICAgICBsb25nIGxlbiA9 IFJBUlJBWV9MRU4oYXJ5KTsgCisgICAgICAgICAgICBWQUxVRSAqcHRyID0gUkFSUkFZX1BU UihhcnkpOyAKKyAgICAgICAgICAgIE1FTUNQWShSQVJSQVkoYXJ5KS0+YXMuYXJ5LCBwdHIs IFZBTFVFLCBsZW4pOyAKKyAgICAgICAgICAgIEZMX1NFVF9FTUJFRChhcnkpOyAKKyAgICAg ICAgICAgIEFSWV9TRVRfTEVOKGFyeSwgbGVuKTsgCisgICAgICAgICAgICB4ZnJlZShwdHIp OyAKKyAgICAgICAgfQorICAgIH0KK30KKwogc3RhdGljIGlubGluZSB2b2lkCiByYl9hcnlf bW9kaWZ5X2NoZWNrKFZBTFVFIGFyeSkKIHsKQEAgLTYxLDE1ICsxNjQsMjMgQEAgcmJfYXJ5 X21vZGlmeV9jaGVjayhWQUxVRSBhcnkpCiBzdGF0aWMgdm9pZAogcmJfYXJ5X21vZGlmeShW QUxVRSBhcnkpCiB7Ci0gICAgVkFMVUUgKnB0cjsKLQogICAgIHJiX2FyeV9tb2RpZnlfY2hl Y2soYXJ5KTsKICAgICBpZiAoQVJZX1NIQVJFRF9QKGFyeSkpIHsKLQlwdHIgPSBBTExPQ19O KFZBTFVFLCBSQVJSQVlfTEVOKGFyeSkpOwotCUZMX1VOU0VUKGFyeSwgRUxUU19TSEFSRUQp OwotCVJBUlJBWShhcnkpLT5hdXguY2FwYSA9IFJBUlJBWV9MRU4oYXJ5KTsKLQlNRU1DUFko cHRyLCBSQVJSQVlfUFRSKGFyeSksIFZBTFVFLCBSQVJSQVlfTEVOKGFyeSkpOwotCVJBUlJB WShhcnkpLT5wdHIgPSBwdHI7CisgICAgICAgIGxvbmcgbGVuID0gUkFSUkFZX0xFTihhcnkp OworICAgICAgICBpZiAobGVuIDw9IFJBUlJBWV9FTUJFRF9MRU5fTUFYKSB7CisgICAgICAg ICAgICBWQUxVRSAqcHRyID0gQVJZX0hFQVBfUFRSKGFyeSk7CisgICAgICAgICAgICBGTF9V TlNFVF9TSEFSRUQoYXJ5KTsKKyAgICAgICAgICAgIEZMX1NFVF9FTUJFRChhcnkpOworICAg ICAgICAgICAgTUVNQ1BZKEFSWV9FTUJFRF9QVFIoYXJ5KSwgcHRyLCBWQUxVRSwgbGVuKTsK KyAgICAgICAgICAgIEFSWV9TRVRfRU1CRURfTEVOKGFyeSwgbGVuKTsKKyAgICAgICAgfQor ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZBTFVFICpwdHIgPSBBTExPQ19OKFZBTFVF LCBsZW4pOworICAgICAgICAgICAgRkxfVU5TRVRfU0hBUkVEKGFyeSk7CisgICAgICAgICAg ICBBUllfU0VUX0NBUEEoYXJ5LCBsZW4pOworICAgICAgICAgICAgTUVNQ1BZKHB0ciwgUkFS UkFZX1BUUihhcnkpLCBWQUxVRSwgbGVuKTsKKyAgICAgICAgICAgIEFSWV9TRVRfUFRSKGFy eSwgcHRyKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtOTksMTAgKzIxMCw4IEBAIGFy eV9hbGxvYyhWQUxVRSBrbGFzcykKIHsKICAgICBORVdPQkooYXJ5LCBzdHJ1Y3QgUkFycmF5 KTsKICAgICBPQkpTRVRVUChhcnksIGtsYXNzLCBUX0FSUkFZKTsKLQotICAgIGFyeS0+bGVu ID0gMDsKLSAgICBhcnktPnB0ciA9IDA7Ci0gICAgYXJ5LT5hdXguY2FwYSA9IDA7CisgICAg RkxfU0VUX0VNQkVEKChWQUxVRSlhcnkpOworICAgIEFSWV9TRVRfRU1CRURfTEVOKChWQUxV RSlhcnksIDApOwogCiAgICAgcmV0dXJuIChWQUxVRSlhcnk7CiB9CkBAIC0xMTksOSArMjI4 LDEyIEBAIGFyeV9uZXcoVkFMVUUga2xhc3MsIGxvbmcgbGVuKQogCXJiX3JhaXNlKHJiX2VB cmdFcnJvciwgImFycmF5IHNpemUgdG9vIGJpZyIpOwogICAgIH0KICAgICBhcnkgPSBhcnlf YWxsb2Moa2xhc3MpOwotICAgIGlmIChsZW4gPT0gMCkgbGVuKys7Ci0gICAgUkFSUkFZKGFy eSktPnB0ciA9IEFMTE9DX04oVkFMVUUsIGxlbik7Ci0gICAgUkFSUkFZKGFyeSktPmF1eC5j YXBhID0gbGVuOworICAgIGlmIChsZW4gPiBSQVJSQVlfRU1CRURfTEVOX01BWCkgeworICAg ICAgICBGTF9VTlNFVF9FTUJFRChhcnkpOworICAgICAgICBBUllfU0VUX1BUUihhcnksIEFM TE9DX04oVkFMVUUsIGxlbikpOworICAgICAgICBBUllfU0VUX0NBUEEoYXJ5LCBsZW4pOwor ICAgICAgICBBUllfU0VUX0hFQVBfTEVOKGFyeSwgMCk7CisgICAgfQogCiAgICAgcmV0dXJu IGFyeTsKIH0KQEAgLTEzNiw3ICsyNDgsNyBAQCByYl9hcnlfbmV3Mihsb25nIGxlbikKIFZB TFVFCiByYl9hcnlfbmV3KHZvaWQpCiB7Ci0gICAgcmV0dXJuIHJiX2FyeV9uZXcyKEFSWV9E RUZBVUxUX1NJWkUpOworICAgIHJldHVybiByYl9hcnlfbmV3MihSQVJSQVlfRU1CRURfTEVO X01BWCk7CiB9CiAKICNpbmNsdWRlIDxzdGRhcmcuaD4KQEAgLTE1Niw3ICsyNjgsNyBAQCBy Yl9hcnlfbmV3Myhsb25nIG4sIC4uLikKICAgICB9CiAgICAgdmFfZW5kKGFyKTsKIAotICAg IFJBUlJBWShhcnkpLT5sZW4gPSBuOworICAgIEFSWV9TRVRfTEVOKGFyeSwgbik7CiAgICAg cmV0dXJuIGFyeTsKIH0KIApAQCAtMTY4LDcgKzI4MCw3IEBAIHJiX2FyeV9uZXc0KGxvbmcg biwgY29uc3QgVkFMVUUgKmVsdHMpCiAgICAgYXJ5ID0gcmJfYXJ5X25ldzIobik7CiAgICAg aWYgKG4gPiAwICYmIGVsdHMpIHsKIAlNRU1DUFkoUkFSUkFZX1BUUihhcnkpLCBlbHRzLCBW QUxVRSwgbik7Ci0JUkFSUkFZKGFyeSktPmxlbiA9IG47CisJQVJZX1NFVF9MRU4oYXJ5LCBu KTsKICAgICB9CiAKICAgICByZXR1cm4gYXJ5OwpAQCAtMTgzLDMxICsyOTUsNDggQEAgcmJf YXJ5X3RtcF9uZXcobG9uZyBsZW4pCiB2b2lkCiByYl9hcnlfZnJlZShWQUxVRSBhcnkpCiB7 Ci0gICAgaWYgKCFBUllfU0hBUkVEX1AoYXJ5KSkgewotCXhmcmVlKFJBUlJBWShhcnkpLT5w dHIpOworICAgIGlmIChBUllfT1dOU19IRUFQX1AoYXJ5KSkgeworCXhmcmVlKFJBUlJBWV9Q VFIoYXJ5KSk7CiAgICAgfQogfQogCiBzdGF0aWMgVkFMVUUKIGFyeV9tYWtlX3NoYXJlZChW QUxVRSBhcnkpCiB7CisgICAgYXNzZXJ0KCFBUllfRU1CRURfUChhcnkpKTsKICAgICBpZiAo QVJZX1NIQVJFRF9QKGFyeSkpIHsKLQlyZXR1cm4gUkFSUkFZKGFyeSktPmF1eC5zaGFyZWQ7 CisJcmV0dXJuIEFSWV9TSEFSRUQoYXJ5KTsKICAgICB9CiAgICAgZWxzZSB7CiAJTkVXT0JK KHNoYXJlZCwgc3RydWN0IFJBcnJheSk7CiAJT0JKU0VUVVAoc2hhcmVkLCAwLCBUX0FSUkFZ KTsKKyAgICAgICAgRkxfVU5TRVRfRU1CRUQoc2hhcmVkKTsKIAotCXNoYXJlZC0+bGVuID0g UkFSUkFZKGFyeSktPmxlbjsKLQlzaGFyZWQtPnB0ciA9IFJBUlJBWShhcnkpLT5wdHI7Ci0J c2hhcmVkLT5hdXguY2FwYSA9IFJBUlJBWShhcnkpLT5hdXguY2FwYTsKLQlSQVJSQVkoYXJ5 KS0+YXV4LnNoYXJlZCA9IChWQUxVRSlzaGFyZWQ7Ci0JRkxfU0VUKGFyeSwgRUxUU19TSEFS RUQpOworICAgICAgICBBUllfU0VUX0xFTigoVkFMVUUpc2hhcmVkLCBSQVJSQVlfTEVOKGFy eSkpOworICAgICAgICBBUllfU0VUX1BUUigoVkFMVUUpc2hhcmVkLCBSQVJSQVlfUFRSKGFy eSkpOworICAgICAgICBBUllfU0VUX0NBUEEoKFZBTFVFKXNoYXJlZCwgQVJZX0NBUEEoYXJ5 KSk7CisJRkxfU0VUX1NIQVJFRChhcnkpOworCUFSWV9TRVRfU0hBUkVEKGFyeSwgKFZBTFVF KXNoYXJlZCk7CiAJT0JKX0ZSRUVaRShzaGFyZWQpOwogCXJldHVybiAoVkFMVUUpc2hhcmVk OwogICAgIH0KIH0KIAorCitzdGF0aWMgVkFMVUUKK2FyeV9tYWtlX3N1YnN0aXR1dGlvbihW QUxVRSBhcnkpCit7CisgICAgaWYgKFJBUlJBWV9MRU4oYXJ5KSA8PSBSQVJSQVlfRU1CRURf TEVOX01BWCkgeworICAgICAgICBWQUxVRSBzdWJzdCA9IHJiX2FyeV9uZXcyKFJBUlJBWV9M RU4oYXJ5KSk7CisgICAgICAgIE1FTUNQWShBUllfRU1CRURfUFRSKHN1YnN0KSwgUkFSUkFZ X1BUUihhcnkpLCBWQUxVRSwgUkFSUkFZX0xFTihhcnkpKTsKKyAgICAgICAgQVJZX1NFVF9F TUJFRF9MRU4oc3Vic3QsIFJBUlJBWV9MRU4oYXJ5KSk7CisgICAgICAgIHJldHVybiBzdWJz dDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBhcnlfbWFrZV9zaGFyZWQo YXJ5KTsKKyAgICB9Cit9CisKIFZBTFVFCiByYl9hc3NvY19uZXcoVkFMVUUgY2FyLCBWQUxV RSBjZHIpCiB7CkBAIC0yOTgsMTAgKzQyNywxMiBAQCByYl9hcnlfaW5pdGlhbGl6ZShpbnQg YXJnYywgVkFMVUUgKmFyZ3YsIFZBTFVFIGFyeSkKIAogICAgIHJiX2FyeV9tb2RpZnkoYXJ5 KTsKICAgICBpZiAoYXJnYyA9PSAgMCkgewotCWlmIChSQVJSQVlfUFRSKGFyeSkgJiYgIUFS WV9TSEFSRURfUChhcnkpKSB7Ci0JICAgIHhmcmVlKFJBUlJBWShhcnkpLT5wdHIpOworCWlm IChBUllfT1dOU19IRUFQX1AoYXJ5KSAmJiBSQVJSQVlfUFRSKGFyeSkpIHsKKwkgICAgeGZy ZWUoUkFSUkFZX1BUUihhcnkpKTsKIAl9Ci0JUkFSUkFZKGFyeSktPmxlbiA9IDA7CisgICAg ICAgIEZMX1VOU0VUX1NIQVJFRChhcnkpOworICAgICAgICBGTF9TRVRfRU1CRUQoYXJ5KTsK KwlBUllfU0VUX0VNQkVEX0xFTihhcnksIDApOwogCWlmIChyYl9ibG9ja19naXZlbl9wKCkp IHsKIAkgICAgcmJfd2FybmluZygiZ2l2ZW4gYmxvY2sgbm90IHVzZWQiKTsKIAl9CkBAIC0z MzMsMTIgKzQ2NCwxMiBAQCByYl9hcnlfaW5pdGlhbGl6ZShpbnQgYXJnYywgVkFMVUUgKmFy Z3YsIFZBTFVFIGFyeSkKIAl9CiAJZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKIAkgICAgcmJf YXJ5X3N0b3JlKGFyeSwgaSwgcmJfeWllbGQoTE9ORzJOVU0oaSkpKTsKLQkgICAgUkFSUkFZ KGFyeSktPmxlbiA9IGkgKyAxOworCSAgICBBUllfU0VUX0xFTihhcnksIGkgKyAxKTsKIAl9 CiAgICAgfQogICAgIGVsc2UgewogCW1lbWZpbGwoUkFSUkFZX1BUUihhcnkpLCBsZW4sIHZh bCk7Ci0JUkFSUkFZKGFyeSktPmxlbiA9IGxlbjsKKwlBUllfU0VUX0xFTihhcnksIGxlbik7 CiAgICAgfQogICAgIHJldHVybiBhcnk7CiB9CkBAIC0zNTUsMTUgKzQ4NiwxMSBAQCByYl9h cnlfaW5pdGlhbGl6ZShpbnQgYXJnYywgVkFMVUUgKmFyZ3YsIFZBTFVFIGFyeSkKIHN0YXRp YyBWQUxVRQogcmJfYXJ5X3NfY3JlYXRlKGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUg a2xhc3MpCiB7Ci0gICAgVkFMVUUgYXJ5ID0gYXJ5X2FsbG9jKGtsYXNzKTsKLQotICAgIGlm IChhcmdjIDwgMCkgewotCXJiX3JhaXNlKHJiX2VBcmdFcnJvciwgIm5lZ2F0aXZlIGFycmF5 IHNpemUiKTsKKyAgICBWQUxVRSBhcnkgPSBhcnlfbmV3KGtsYXNzLCBhcmdjKTsKKyAgICBp ZiAoYXJnYyA+IDAgJiYgYXJndikgeworICAgICAgICBNRU1DUFkoUkFSUkFZX1BUUihhcnkp LCBhcmd2LCBWQUxVRSwgYXJnYyk7CisgICAgICAgIEFSWV9TRVRfTEVOKGFyeSwgYXJnYyk7 CiAgICAgfQotICAgIFJBUlJBWShhcnkpLT5wdHIgPSBBTExPQ19OKFZBTFVFLCBhcmdjKTsK LSAgICBSQVJSQVkoYXJ5KS0+YXV4LmNhcGEgPSBhcmdjOwotICAgIE1FTUNQWShSQVJSQVlf UFRSKGFyeSksIGFyZ3YsIFZBTFVFLCBhcmdjKTsKLSAgICBSQVJSQVkoYXJ5KS0+bGVuID0g YXJnYzsKIAogICAgIHJldHVybiBhcnk7CiB9CkBAIC00MDEsMjggKzUyOCw0MSBAQCByYl9h cnlfc3RvcmUoVkFMVUUgYXJ5LCBsb25nIGlkeCwgVkFMVUUgdmFsKQogICAgIH0KIAogICAg IGlmIChpZHggPj0gUkFSUkFZX0xFTihhcnkpKSB7Ci0JUkFSUkFZKGFyeSktPmxlbiA9IGlk eCArIDE7CisJQVJZX1NFVF9MRU4oYXJ5LCBpZHggKyAxKTsKICAgICB9CiAgICAgUkFSUkFZ X1BUUihhcnkpW2lkeF0gPSB2YWw7CiB9CiAKIHN0YXRpYyBWQUxVRQotYXJ5X3NoYXJlZF9h cnJheShWQUxVRSBrbGFzcywgVkFMVUUgYXJ5KQorYXJ5X21ha2VfcGFydGlhbDAoVkFMVUUg YXJ5LCBsb25nIG9mZnNldCwgbG9uZyBsZW4pCiB7Ci0gICAgVkFMVUUgdmFsID0gYXJ5X2Fs bG9jKGtsYXNzKTsKKyAgICBhc3NlcnQob2Zmc2V0ID49IDApOworICAgIGFzc2VydChsZW4g Pj0gMCk7CisgICAgYXNzZXJ0KG9mZnNldCtsZW4gPD0gUkFSUkFZX0xFTihhcnkpKTsKIAot ICAgIGFyeV9tYWtlX3NoYXJlZChhcnkpOwotICAgIFJBUlJBWSh2YWwpLT5wdHIgPSBSQVJS QVkoYXJ5KS0+cHRyOwotICAgIFJBUlJBWSh2YWwpLT5sZW4gPSBSQVJSQVkoYXJ5KS0+bGVu OwotICAgIFJBUlJBWSh2YWwpLT5hdXguc2hhcmVkID0gUkFSUkFZKGFyeSktPmF1eC5zaGFy ZWQ7Ci0gICAgRkxfU0VUKHZhbCwgRUxUU19TSEFSRUQpOwotICAgIHJldHVybiB2YWw7Cisg ICAgaWYgKGxlbiA8PSBSQVJSQVlfRU1CRURfTEVOX01BWCkgeworICAgICAgICByZXR1cm4g cmJfYXJ5X25ldzQobGVuLCBSQVJSQVlfUFRSKGFyeSkgKyBvZmZzZXQpOworICAgIH0KKyAg ICBlbHNlIHsKKyAgICAgICAgVkFMVUUgc2hhcmVkLCByZXN1bHQgPSBhcnlfYWxsb2MocmJf b2JqX2NsYXNzKGFyeSkpOworICAgICAgICBGTF9VTlNFVF9FTUJFRChyZXN1bHQpOworCisg ICAgICAgIHNoYXJlZCA9IGFyeV9tYWtlX3NoYXJlZChhcnkpOworICAgICAgICBBUllfU0VU X1BUUihyZXN1bHQsIFJBUlJBWV9QVFIoYXJ5KSk7CisgICAgICAgIEFSWV9TRVRfTEVOKHJl c3VsdCwgUkFSUkFZX0xFTihhcnkpKTsKKyAgICAgICAgRkxfU0VUX1NIQVJFRChyZXN1bHQp OworICAgICAgICBBUllfU0VUX1NIQVJFRChyZXN1bHQsIHNoYXJlZCk7CisKKyAgICAgICAg QVJZX0lOQ1JFQVNFX1BUUihyZXN1bHQsIG9mZnNldCk7CisgICAgICAgIEFSWV9TRVRfTEVO KHJlc3VsdCwgbGVuKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiB9CiAKIHN0 YXRpYyBWQUxVRQotYXJ5X3NoYXJlZF9maXJzdChpbnQgYXJnYywgVkFMVUUgKmFyZ3YsIFZB TFVFIGFyeSwgaW50IGxhc3QpCithcnlfbWFrZV9wYXJ0aWFsKGludCBhcmdjLCBWQUxVRSAq YXJndiwgVkFMVUUgYXJ5LCBpbnQgbGFzdCkKIHsKLSAgICBWQUxVRSBudiwgcmVzdWx0Owor ICAgIFZBTFVFIG52OwogICAgIGxvbmcgbjsKICAgICBsb25nIG9mZnNldCA9IDA7CiAKQEAg LTQzNywxMSArNTc3LDcgQEAgYXJ5X3NoYXJlZF9maXJzdChpbnQgYXJnYywgVkFMVUUgKmFy Z3YsIFZBTFVFIGFyeSwgaW50IGxhc3QpCiAgICAgaWYgKGxhc3QpIHsKIAlvZmZzZXQgPSBS QVJSQVlfTEVOKGFyeSkgLSBuOwogICAgIH0KLSAgICByZXN1bHQgPSBhcnlfc2hhcmVkX2Fy cmF5KHJiX2NBcnJheSwgYXJ5KTsKLSAgICBSQVJSQVkocmVzdWx0KS0+cHRyICs9IG9mZnNl dDsKLSAgICBSQVJSQVkocmVzdWx0KS0+bGVuID0gbjsKLQotICAgIHJldHVybiByZXN1bHQ7 CisgICAgcmV0dXJuIGFyeV9tYWtlX3BhcnRpYWwwKGFyeSwgb2Zmc2V0LCBuKTsKIH0KIAog LyoKQEAgLTQ5MiwxNCArNjI4LDE0IEBAIHJiX2FyeV9wb3AoVkFMVUUgYXJ5KQogICAgIGxv bmcgbjsKICAgICByYl9hcnlfbW9kaWZ5X2NoZWNrKGFyeSk7CiAgICAgaWYgKFJBUlJBWV9M RU4oYXJ5KSA9PSAwKSByZXR1cm4gUW5pbDsKLSAgICBpZiAoIUFSWV9TSEFSRURfUChhcnkp ICYmCisgICAgaWYgKEFSWV9PV05TX0hFQVBfUChhcnkpICYmCiAJUkFSUkFZX0xFTihhcnkp ICogMyA8IEFSWV9DQVBBKGFyeSkgJiYKIAlBUllfQ0FQQShhcnkpID4gQVJZX0RFRkFVTFRf U0laRSkKICAgICB7CiAJUkVTSVpFX0NBUEEoYXJ5LCBSQVJSQVlfTEVOKGFyeSkgKiAyKTsK ICAgICB9CiAgICAgbiA9IFJBUlJBWV9MRU4oYXJ5KS0xOwotICAgIFJBUlJBWShhcnkpLT5s ZW4gPSBuOworICAgIEFSWV9TRVRfTEVOKGFyeSwgbik7CiAgICAgcmV0dXJuIFJBUlJBWV9Q VFIoYXJ5KVtuXTsKIH0KIApAQCAtNTMwLDggKzY2Niw4IEBAIHJiX2FyeV9wb3BfbShpbnQg YXJnYywgVkFMVUUgKmFyZ3YsIFZBTFVFIGFyeSkKICAgICB9CiAKICAgICByYl9hcnlfbW9k aWZ5X2NoZWNrKGFyeSk7Ci0gICAgcmVzdWx0ID0gYXJ5X3NoYXJlZF9maXJzdChhcmdjLCBh cmd2LCBhcnksIFF0cnVlKTsKLSAgICBSQVJSQVkoYXJ5KS0+bGVuIC09IFJBUlJBWV9MRU4o cmVzdWx0KTsKKyAgICByZXN1bHQgPSBhcnlfbWFrZV9wYXJ0aWFsKGFyZ2MsIGFyZ3YsIGFy eSwgUXRydWUpOworICAgIEFSWV9JTkNSRUFTRV9MRU4oYXJ5LCAtUkFSUkFZX0xFTihyZXN1 bHQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC01NDYsMTQgKzY4MiwxNiBAQCBy Yl9hcnlfc2hpZnQoVkFMVUUgYXJ5KQogICAgIGlmICghQVJZX1NIQVJFRF9QKGFyeSkpIHsK IAlpZiAoUkFSUkFZX0xFTihhcnkpIDwgQVJZX0RFRkFVTFRfU0laRSkgewogCSAgICBNRU1N T1ZFKFJBUlJBWV9QVFIoYXJ5KSwgUkFSUkFZX1BUUihhcnkpKzEsIFZBTFVFLCBSQVJSQVlf TEVOKGFyeSktMSk7Ci0JICAgIFJBUlJBWShhcnkpLT5sZW4tLTsKKyAgICAgICAgICAgIEFS WV9JTkNSRUFTRV9MRU4oYXJ5LCAtMSk7CiAJICAgIHJldHVybiB0b3A7CiAJfQorICAgICAg ICBhc3NlcnQoIUFSWV9FTUJFRF9QKGFyeSkpOyAvKiBBUllfRU1CRURfTEVOX01BWCA8IEFS WV9ERUZBVUxUX1NJWkUgKi8KKwogCVJBUlJBWV9QVFIoYXJ5KVswXSA9IFFuaWw7CiAJYXJ5 X21ha2Vfc2hhcmVkKGFyeSk7CiAgICAgfQotICAgIFJBUlJBWShhcnkpLT5wdHIrKzsJCS8q IHNoaWZ0IHB0ciAqLwotICAgIFJBUlJBWShhcnkpLT5sZW4tLTsKKyAgICBBUllfSU5DUkVB U0VfUFRSKGFyeSwgMSk7CQkvKiBzaGlmdCBwdHIgKi8KKyAgICBBUllfSU5DUkVBU0VfTEVO KGFyeSwgLTEpOwogCiAgICAgcmV0dXJuIHRvcDsKIH0KQEAgLTU5MCwxNiArNzI4LDE1IEBA IHJiX2FyeV9zaGlmdF9tKGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgYXJ5KQogICAg IH0KIAogICAgIHJiX2FyeV9tb2RpZnlfY2hlY2soYXJ5KTsKLSAgICByZXN1bHQgPSBhcnlf c2hhcmVkX2ZpcnN0KGFyZ2MsIGFyZ3YsIGFyeSwgUWZhbHNlKTsKKyAgICByZXN1bHQgPSBh cnlfbWFrZV9wYXJ0aWFsKGFyZ2MsIGFyZ3YsIGFyeSwgUWZhbHNlKTsKICAgICBuID0gUkFS UkFZX0xFTihyZXN1bHQpOwogICAgIGlmIChBUllfU0hBUkVEX1AoYXJ5KSkgewotCVJBUlJB WShhcnkpLT5wdHIgKz0gbjsKLQlSQVJSQVkoYXJ5KS0+bGVuIC09IG47Ci0JfQorICAgICAg ICBBUllfSU5DUkVBU0VfUFRSKGFyeSwgbik7CisgICAgfQogICAgIGVsc2UgewogCU1FTU1P VkUoUkFSUkFZX1BUUihhcnkpLCBSQVJSQVlfUFRSKGFyeSkrbiwgVkFMVUUsIFJBUlJBWV9M RU4oYXJ5KS1uKTsKLQlSQVJSQVkoYXJ5KS0+bGVuIC09IG47CiAgICAgfQorICAgIEFSWV9J TkNSRUFTRV9MRU4oYXJ5LCAtbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjIz LDE0ICs3NjAsMTQgQEAgcmJfYXJ5X3Vuc2hpZnRfbShpbnQgYXJnYywgVkFMVUUgKmFyZ3Ys IFZBTFVFIGFyeSkKIAogICAgIGlmIChhcmdjID09IDApIHJldHVybiBhcnk7CiAgICAgcmJf YXJ5X21vZGlmeShhcnkpOwotICAgIGlmIChSQVJSQVkoYXJ5KS0+YXV4LmNhcGEgPD0gKGxl biA9IFJBUlJBWShhcnkpLT5sZW4pICsgYXJnYykgeworICAgIGlmIChBUllfQ0FQQShhcnkp IDw9IChsZW4gPSBSQVJSQVlfTEVOKGFyeSkpICsgYXJnYykgewogCVJFU0laRV9DQVBBKGFy eSwgbGVuICsgYXJnYyArIEFSWV9ERUZBVUxUX1NJWkUpOwogICAgIH0KIAogICAgIC8qIHNs aWRpbmcgaXRlbXMgKi8KLSAgICBNRU1NT1ZFKFJBUlJBWShhcnkpLT5wdHIgKyBhcmdjLCBS QVJSQVkoYXJ5KS0+cHRyLCBWQUxVRSwgbGVuKTsKLSAgICBNRU1DUFkoUkFSUkFZKGFyeSkt PnB0ciwgYXJndiwgVkFMVUUsIGFyZ2MpOwotICAgIFJBUlJBWShhcnkpLT5sZW4gKz0gYXJn YzsKKyAgICBNRU1NT1ZFKFJBUlJBWV9QVFIoYXJ5KSArIGFyZ2MsIFJBUlJBWV9QVFIoYXJ5 KSwgVkFMVUUsIGxlbik7CisgICAgTUVNQ1BZKFJBUlJBWV9QVFIoYXJ5KSwgYXJndiwgVkFM VUUsIGFyZ2MpOworICAgIEFSWV9JTkNSRUFTRV9MRU4oYXJ5LCBhcmdjKTsKICAgICAKICAg ICByZXR1cm4gYXJ5OwogfQpAQCAtNjY0LDggKzgwMSw3IEBAIHJiX2FyeV9lbnRyeShWQUxV RSBhcnksIGxvbmcgb2Zmc2V0KQogVkFMVUUKIHJiX2FyeV9zdWJzZXEoVkFMVUUgYXJ5LCBs b25nIGJlZywgbG9uZyBsZW4pCiB7Ci0gICAgVkFMVUUga2xhc3MsIGFyeTIsIHNoYXJlZDsK LSAgICBWQUxVRSAqcHRyOworICAgIFZBTFVFIGtsYXNzOwogCiAgICAgaWYgKGJlZyA+IFJB UlJBWV9MRU4oYXJ5KSkgcmV0dXJuIFFuaWw7CiAgICAgaWYgKGJlZyA8IDAgfHwgbGVuIDwg MCkgcmV0dXJuIFFuaWw7CkBAIC02NzYsMTUgKzgxMiw3IEBAIHJiX2FyeV9zdWJzZXEoVkFM VUUgYXJ5LCBsb25nIGJlZywgbG9uZyBsZW4pCiAgICAga2xhc3MgPSByYl9vYmpfY2xhc3Mo YXJ5KTsKICAgICBpZiAobGVuID09IDApIHJldHVybiBhcnlfbmV3KGtsYXNzLCAwKTsKIAot ICAgIHNoYXJlZCA9IGFyeV9tYWtlX3NoYXJlZChhcnkpOwotICAgIHB0ciA9IFJBUlJBWV9Q VFIoYXJ5KTsKLSAgICBhcnkyID0gYXJ5X2FsbG9jKGtsYXNzKTsKLSAgICBSQVJSQVkoYXJ5 MiktPnB0ciA9IHB0ciArIGJlZzsKLSAgICBSQVJSQVkoYXJ5MiktPmxlbiA9IGxlbjsKLSAg ICBSQVJSQVkoYXJ5MiktPmF1eC5zaGFyZWQgPSBzaGFyZWQ7Ci0gICAgRkxfU0VUKGFyeTIs IEVMVFNfU0hBUkVEKTsKLQotICAgIHJldHVybiBhcnkyOworICAgIHJldHVybiBhcnlfbWFr ZV9wYXJ0aWFsMChhcnksIGJlZywgbGVuKTsKIH0KIAogLyogCkBAIC03OTQsNyArOTIyLDcg QEAgcmJfYXJ5X2ZpcnN0KGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgYXJ5KQogCXJl dHVybiBSQVJSQVlfUFRSKGFyeSlbMF07CiAgICAgfQogICAgIGVsc2UgewotCXJldHVybiBh cnlfc2hhcmVkX2ZpcnN0KGFyZ2MsIGFyZ3YsIGFyeSwgUWZhbHNlKTsKKwlyZXR1cm4gYXJ5 X21ha2VfcGFydGlhbChhcmdjLCBhcmd2LCBhcnksIFFmYWxzZSk7CiAgICAgfQogfQogCkBA IC04MTksNyArOTQ3LDcgQEAgcmJfYXJ5X2xhc3QoaW50IGFyZ2MsIFZBTFVFICphcmd2LCBW QUxVRSBhcnkpCiAJcmV0dXJuIFJBUlJBWV9QVFIoYXJ5KVtSQVJSQVlfTEVOKGFyeSktMV07 CiAgICAgfQogICAgIGVsc2UgewotCXJldHVybiBhcnlfc2hhcmVkX2ZpcnN0KGFyZ2MsIGFy Z3YsIGFyeSwgUXRydWUpOworCXJldHVybiBhcnlfbWFrZV9wYXJ0aWFsKGFyZ2MsIGFyZ3Ys IGFyeSwgUXRydWUpOwogICAgIH0KIH0KIApAQCAtMTAwMyw3ICsxMTMxLDcgQEAgcmJfYXJ5 X3NwbGljZShWQUxVRSBhcnksIGxvbmcgYmVnLCBsb25nIGxlbiwgVkFMVUUgcnBsKQogCWlm IChybGVuID4gMCkgewogCSAgICBNRU1DUFkoUkFSUkFZX1BUUihhcnkpICsgYmVnLCBSQVJS QVlfUFRSKHJwbCksIFZBTFVFLCBybGVuKTsKIAl9Ci0JUkFSUkFZKGFyeSktPmxlbiA9IGxl bjsKKwlBUllfU0VUX0xFTihhcnksIGxlbik7CiAgICAgfQogICAgIGVsc2UgewogCWxvbmcg YWxlbjsKQEAgLTEwMjAsNyArMTE0OCw3IEBAIHJiX2FyeV9zcGxpY2UoVkFMVUUgYXJ5LCBs b25nIGJlZywgbG9uZyBsZW4sIFZBTFVFIHJwbCkKIAlpZiAobGVuICE9IHJsZW4pIHsKIAkg ICAgTUVNTU9WRShSQVJSQVlfUFRSKGFyeSkgKyBiZWcgKyBybGVuLCBSQVJSQVlfUFRSKGFy eSkgKyBiZWcgKyBsZW4sCiAJCSAgICBWQUxVRSwgUkFSUkFZX0xFTihhcnkpIC0gKGJlZyAr IGxlbikpOwotCSAgICBSQVJSQVkoYXJ5KS0+bGVuID0gYWxlbjsKKwkgICAgQVJZX1NFVF9M RU4oYXJ5LCBhbGVuKTsKIAl9CiAJaWYgKHJsZW4gPiAwKSB7CiAJICAgIE1FTU1PVkUoUkFS UkFZX1BUUihhcnkpICsgYmVnLCBSQVJSQVlfUFRSKHJwbCksIFZBTFVFLCBybGVuKTsKQEAg LTEyMzgsMTAgKzEzNjYsMTEgQEAgVkFMVUUKIHJiX2FyeV9kdXAoVkFMVUUgYXJ5KQogewog ICAgIFZBTFVFIGR1cCA9IHJiX2FyeV9uZXcyKFJBUlJBWV9MRU4oYXJ5KSk7Ci0KKyAgICBp bnQgaXNfZW1iZWQgPSBBUllfRU1CRURfUChkdXApOwogICAgIERVUFNFVFVQKGR1cCwgYXJ5 KTsKKyAgICBpZiAoaXNfZW1iZWQpIEZMX1NFVF9FTUJFRChkdXApOwogICAgIE1FTUNQWShS QVJSQVlfUFRSKGR1cCksIFJBUlJBWV9QVFIoYXJ5KSwgVkFMVUUsIFJBUlJBWV9MRU4oYXJ5 KSk7Ci0gICAgUkFSUkFZKGR1cCktPmxlbiA9IFJBUlJBWV9MRU4oYXJ5KTsKKyAgICBBUllf U0VUX0xFTihkdXAsIFJBUlJBWV9MRU4oYXJ5KSk7CiAKICAgICByZXR1cm4gZHVwOwogfQpA QCAtMTU0OCw4ICsxNjc3LDkgQEAgVkFMVUUKIHJiX2FyeV9zb3J0X2JhbmcoVkFMVUUgYXJ5 KQogewogICAgIHJiX2FyeV9tb2RpZnkoYXJ5KTsKKyAgICBhc3NlcnQoIUFSWV9TSEFSRURf UChhcnkpKTsKICAgICBpZiAoUkFSUkFZX0xFTihhcnkpID4gMSkgewotCVZBTFVFIHRtcCA9 IGFyeV9tYWtlX3NoYXJlZChhcnkpOworCVZBTFVFIHRtcCA9IGFyeV9tYWtlX3N1YnN0aXR1 dGlvbihhcnkpOyAvKiBvbmx5IGFyeSByZWZlcnMgdG1wICovCiAJc3RydWN0IGFyeV9zb3J0 X2RhdGEgZGF0YTsKIAogCVJCQVNJQyh0bXApLT5rbGFzcyA9IDA7CkBAIC0xNTU4LDE4ICsx Njg4LDM5IEBAIHJiX2FyeV9zb3J0X2JhbmcoVkFMVUUgYXJ5KQogCWRhdGEub3B0X2luaXRl ZCA9IDA7CiAJcnVieV9xc29ydChSQVJSQVlfUFRSKHRtcCksIFJBUlJBWV9MRU4odG1wKSwg c2l6ZW9mKFZBTFVFKSwKIAkJICAgcmJfYmxvY2tfZ2l2ZW5fcCgpP3NvcnRfMTpzb3J0XzIs ICZkYXRhKTsKLQlpZiAoUkFSUkFZKGFyeSktPnB0ciAhPSBSQVJSQVkodG1wKS0+cHRyKSB7 Ci0JICAgIGlmICghQVJZX1NIQVJFRF9QKGFyeSkpIHhmcmVlKFJBUlJBWShhcnkpLT5wdHIp OwotCSAgICBSQVJSQVkoYXJ5KS0+cHRyID0gUkFSUkFZKHRtcCktPnB0cjsKLQkgICAgUkFS UkFZKGFyeSktPmxlbiA9IFJBUlJBWSh0bXApLT5sZW47Ci0JICAgIFJBUlJBWShhcnkpLT5h dXguY2FwYSA9IFJBUlJBWSh0bXApLT5hdXguY2FwYTsKLQkgICAgRkxfU0VUKGFyeSwgRUxU U19TSEFSRUQpOwotCX07Ci0JRkxfVU5TRVQoYXJ5LCBFTFRTX1NIQVJFRCk7Ci0JUkFSUkFZ KHRtcCktPnB0ciA9IDA7Ci0JUkFSUkFZKHRtcCktPmxlbiA9IDA7Ci0JUkFSUkFZKHRtcCkt PmF1eC5jYXBhID0gMDsKLQlSQkFTSUModG1wKS0+a2xhc3MgPSByYl9jQXJyYXk7CisKKyAg ICAgICAgaWYgKEFSWV9FTUJFRF9QKGFyeSkgfHwgQVJZX0VNQkVEX1AodG1wKSkgeworICAg ICAgICAgICAgYXNzZXJ0KEFSWV9FTUJFRF9QKHRtcCkpOworICAgICAgICAgICAgTUVNQ1BZ KFJBUlJBWV9QVFIoYXJ5KSwgQVJZX0VNQkVEX1BUUih0bXApLCBWQUxVRSwgQVJZX0VNQkVE X0xFTih0bXApKTsKKyAgICAgICAgICAgIEFSWV9TRVRfTEVOKGFyeSwgQVJZX0VNQkVEX0xF Tih0bXApKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2Vy dCghQVJZX0VNQkVEX1AoYXJ5KSk7CisgICAgICAgICAgICBhc3NlcnQoIUFSWV9FTUJFRF9Q KHRtcCkpOworICAgICAgICAgICAgaWYgKFJBUlJBWV9QVFIoYXJ5KSAhPSBSQVJSQVlfUFRS KHRtcCkpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIUFSWV9TSEFSRURfUCh0bXApKTsK KyAgICAgICAgICAgICAgICBpZiAoQVJZX1NIQVJFRF9QKGFyeSkpIHsKKyAgICAgICAgICAg ICAgICAgICAgRkxfVU5TRVRfU0hBUkVEKGFyeSk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB4ZnJlZShBUllfSEVB UF9QVFIoYXJ5KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFSWV9T RVRfUFRSKGFyeSwgUkFSUkFZX1BUUih0bXApKTsKKyAgICAgICAgICAgICAgICBBUllfU0VU X0hFQVBfTEVOKGFyeSwgUkFSUkFZX0xFTih0bXApKTsKKyAgICAgICAgICAgICAgICBBUllf U0VUX0NBUEEoYXJ5LCBBUllfQ0FQQSh0bXApKTsKKyAgICAgICAgICAgIH0gCisgICAgICAg ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBGTF9VTlNFVF9TSEFSRUQoYXJ5KTsKKyAg ICAgICAgICAgICAgICBBUllfU0VUX0NBUEEoYXJ5LCBBUllfQ0FQQSh0bXApKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIC8qIHRtcCB3YXMgbG9zdCBvd25lcnNoaXAgZm9yIHRo ZSBwdHIgKi8KKyAgICAgICAgICAgIEZMX1VOU0VUKHRtcCwgRkxfRlJFRVpFKTsKKyAgICAg ICAgICAgIEZMX1NFVF9FTUJFRCh0bXApOworICAgICAgICAgICAgQVJZX1NFVF9FTUJFRF9M RU4odG1wLCAwKTsKKyAgICAgICAgICAgIEZMX1NFVCh0bXAsIEZMX0ZSRUVaRSk7CisJfQor ICAgICAgICAvKiB0bXAgd2lsbCBiZSBHQydlZC4gKi8KKyAgICAgICAgUkJBU0lDKHRtcCkt PmtsYXNzID0gcmJfY0FycmF5OwogICAgIH0KICAgICByZXR1cm4gYXJ5OwogfQpAQCAtMTc3 OCw3ICsxOTI5LDcgQEAgcmJfYXJ5X2RlbGV0ZShWQUxVRSBhcnksIFZBTFVFIGl0ZW0pCiAK ICAgICByYl9hcnlfbW9kaWZ5KGFyeSk7CiAgICAgaWYgKFJBUlJBWV9MRU4oYXJ5KSA+IGky KSB7Ci0JUkFSUkFZKGFyeSktPmxlbiA9IGkyOworCUFSWV9TRVRfTEVOKGFyeSwgaTIpOwog CWlmIChpMiAqIDIgPCBBUllfQ0FQQShhcnkpICYmCiAJICAgIEFSWV9DQVBBKGFyeSkgPiBB UllfREVGQVVMVF9TSVpFKSB7CiAJICAgIFJFU0laRV9DQVBBKGFyeSwgaTIqMik7CkBAIC0x ODA0LDcgKzE5NTUsNyBAQCByYl9hcnlfZGVsZXRlX2F0KFZBTFVFIGFyeSwgbG9uZyBwb3Mp CiAgICAgZGVsID0gUkFSUkFZX1BUUihhcnkpW3Bvc107CiAgICAgTUVNTU9WRShSQVJSQVlf UFRSKGFyeSkrcG9zLCBSQVJSQVlfUFRSKGFyeSkrcG9zKzEsIFZBTFVFLAogCSAgICBSQVJS QVlfTEVOKGFyeSktcG9zLTEpOwotICAgIFJBUlJBWShhcnkpLT5sZW4tLTsKKyAgICBBUllf SU5DUkVBU0VfTEVOKGFyeSwgLTEpOwogCiAgICAgcmV0dXJuIGRlbDsKIH0KQEAgLTE5MjEs NyArMjA3Miw3IEBAIHJiX2FyeV9yZWplY3RfYmFuZyhWQUxVRSBhcnkpCiAKICAgICBpZiAo UkFSUkFZX0xFTihhcnkpID09IGkyKSByZXR1cm4gUW5pbDsKICAgICBpZiAoaTIgPCBSQVJS QVlfTEVOKGFyeSkpCi0JUkFSUkFZKGFyeSktPmxlbiA9IGkyOworCUFSWV9TRVRfTEVOKGFy eSwgaTIpOwogICAgIHJldHVybiBhcnk7CiB9CiAKQEAgLTIwODksMjIgKzIyNDAsMzAgQEAg cmJfYXJ5X3RyYW5zcG9zZShWQUxVRSBhcnkpCiBWQUxVRQogcmJfYXJ5X3JlcGxhY2UoVkFM VUUgY29weSwgVkFMVUUgb3JpZykKIHsKLSAgICBWQUxVRSBzaGFyZWQ7Ci0gICAgVkFMVUUg KnB0cjsKLQogICAgIG9yaWcgPSB0b19hcnkob3JpZyk7CiAgICAgcmJfYXJ5X21vZGlmeV9j aGVjayhjb3B5KTsKICAgICBpZiAoY29weSA9PSBvcmlnKSByZXR1cm4gY29weTsKLSAgICBz aGFyZWQgPSBhcnlfbWFrZV9zaGFyZWQob3JpZyk7Ci0gICAgaWYgKCFBUllfU0hBUkVEX1Ao Y29weSkpIHsKLQlwdHIgPSBSQVJSQVkoY29weSktPnB0cjsKLQl4ZnJlZShwdHIpOwotICAg IH0KLSAgICBSQVJSQVkoY29weSktPnB0ciA9IFJBUlJBWShvcmlnKS0+cHRyOwotICAgIFJB UlJBWShjb3B5KS0+bGVuID0gUkFSUkFZKG9yaWcpLT5sZW47Ci0gICAgUkFSUkFZKGNvcHkp LT5hdXguc2hhcmVkID0gc2hhcmVkOwotICAgIEZMX1NFVChjb3B5LCBFTFRTX1NIQVJFRCk7 CiAKKyAgICBpZiAoUkFSUkFZX0xFTihvcmlnKSA8PSBSQVJSQVlfRU1CRURfTEVOX01BWCkg eworICAgICAgICBWQUxVRSAqcHRyOworICAgICAgICBpZiAoQVJZX09XTlNfSEVBUF9QKGNv cHkpKSB4ZnJlZShSQVJSQVlfUFRSKGNvcHkpKTsKKyAgICAgICAgRkxfVU5TRVRfU0hBUkVE KGNvcHkpOworICAgICAgICBGTF9TRVRfRU1CRUQoY29weSk7CisgICAgICAgIHB0ciA9IFJB UlJBWV9QVFIob3JpZyk7CisgICAgICAgIE1FTUNQWShSQVJSQVlfUFRSKGNvcHkpLCBwdHIs IFZBTFVFLCBSQVJSQVlfTEVOKG9yaWcpKTsKKyAgICAgICAgQVJZX1NFVF9MRU4oY29weSwg UkFSUkFZX0xFTihvcmlnKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBWQUxVRSBz aGFyZWQgPSBhcnlfbWFrZV9zaGFyZWQob3JpZyk7CisgICAgICAgIGlmIChBUllfT1dOU19I RUFQX1AoY29weSkpIHsKKyAgICAgICAgICAgIHhmcmVlKFJBUlJBWV9QVFIoY29weSkpOwor ICAgICAgICB9CisgICAgICAgIEZMX1VOU0VUX0VNQkVEKGNvcHkpOworICAgICAgICBGTF9T RVRfU0hBUkVEKGNvcHkpOworICAgICAgICBBUllfU0VUX1BUUihjb3B5LCBSQVJSQVlfUFRS KG9yaWcpKTsKKyAgICAgICAgQVJZX1NFVF9MRU4oY29weSwgUkFSUkFZX0xFTihvcmlnKSk7 CisgICAgICAgIEFSWV9TRVRfU0hBUkVEKGNvcHksIHNoYXJlZCk7CisgICAgfQogICAgIHJl dHVybiBjb3B5OwogfQogCkBAIC0yMTIyLDcgKzIyODEsNyBAQCBWQUxVRQogcmJfYXJ5X2Ns ZWFyKFZBTFVFIGFyeSkKIHsKICAgICByYl9hcnlfbW9kaWZ5KGFyeSk7Ci0gICAgUkFSUkFZ KGFyeSktPmxlbiA9IDA7CisgICAgQVJZX1NFVF9MRU4oYXJ5LCAwKTsKICAgICBpZiAoQVJZ X0RFRkFVTFRfU0laRSAqIDIgPCBBUllfQ0FQQShhcnkpKSB7CiAJUkVTSVpFX0NBUEEoYXJ5 LCBBUllfREVGQVVMVF9TSVpFICogMik7CiAgICAgfQpAQCAtMjIwMSw3ICsyMzYwLDcgQEAg cmJfYXJ5X2ZpbGwoaW50IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxVRSBhcnkpCiAJICAgIFJF U0laRV9DQVBBKGFyeSwgZW5kKTsKIAl9CiAJcmJfbWVtX2NsZWFyKFJBUlJBWV9QVFIoYXJ5 KSArIFJBUlJBWV9MRU4oYXJ5KSwgZW5kIC0gUkFSUkFZX0xFTihhcnkpKTsKLQlSQVJSQVko YXJ5KS0+bGVuID0gZW5kOworCUFSWV9TRVRfTEVOKGFyeSwgZW5kKTsKICAgICB9CiAKICAg ICBpZiAoYmxvY2tfcCkgewpAQCAtMjI0NSw3ICsyNDA0LDcgQEAgcmJfYXJ5X3BsdXMoVkFM VUUgeCwgVkFMVUUgeSkKICAgICB6ID0gcmJfYXJ5X25ldzIobGVuKTsKICAgICBNRU1DUFko UkFSUkFZX1BUUih6KSwgUkFSUkFZX1BUUih4KSwgVkFMVUUsIFJBUlJBWV9MRU4oeCkpOwog ICAgIE1FTUNQWShSQVJSQVlfUFRSKHopICsgUkFSUkFZX0xFTih4KSwgUkFSUkFZX1BUUih5 KSwgVkFMVUUsIFJBUlJBWV9MRU4oeSkpOwotICAgIFJBUlJBWSh6KS0+bGVuID0gbGVuOwor ICAgIEFSWV9TRVRfTEVOKHosIGxlbik7CiAgICAgcmV0dXJuIHo7CiB9CiAKQEAgLTIzMDcs NyArMjQ2Niw3IEBAIHJiX2FyeV90aW1lcyhWQUxVRSBhcnksIFZBTFVFIHRpbWVzKQogICAg IGxlbiAqPSBSQVJSQVlfTEVOKGFyeSk7CiAKICAgICBhcnkyID0gYXJ5X25ldyhyYl9vYmpf Y2xhc3MoYXJ5KSwgbGVuKTsKLSAgICBSQVJSQVkoYXJ5MiktPmxlbiA9IGxlbjsKKyAgICBB UllfU0VUX0xFTihhcnkyLCBsZW4pOwogCiAgICAgZm9yIChpPTA7IGk8bGVuOyBpKz1SQVJS QVlfTEVOKGFyeSkpIHsKIAlNRU1DUFkoUkFSUkFZX1BUUihhcnkyKStpLCBSQVJSQVlfUFRS KGFyeSksIFZBTFVFLCBSQVJSQVlfTEVOKGFyeSkpOwpAQCAtMjcxNiw3ICsyODc1LDcgQEAg cmJfYXJ5X3VuaXFfYmFuZyhWQUxVRSBhcnkpCiAJICAgIHJiX2FyeV9zdG9yZShhcnksIGor Kywgdik7CiAJfQogICAgIH0KLSAgICBSQVJSQVkoYXJ5KS0+bGVuID0gajsKKyAgICBBUllf U0VUX0xFTihhcnksIGopOwogCiAgICAgcmV0dXJuIGFyeTsKIH0KQEAgLTI3NzEsNyArMjkz MCw3IEBAIHJiX2FyeV9jb21wYWN0X2JhbmcoVkFMVUUgYXJ5KQogICAgIGlmIChuICogMiA8 IEFSWV9DQVBBKGFyeSkgJiYgQVJZX0RFRkFVTFRfU0laRSAqIDIgPCBBUllfQ0FQQShhcnkp KSB7CiAJUkVTSVpFX0NBUEEoYXJ5LCBuICogMik7CiAgICAgfQotICAgIFJBUlJBWShhcnkp LT5sZW4gPSBuOworICAgIEFSWV9TRVRfTEVOKGFyeSwgbik7CiAKICAgICByZXR1cm4gYXJ5 OwogfQpAQCAtMzE2OCw3ICszMzI3LDcgQEAgcGVybXV0ZTAobG9uZyBuLCBsb25nIHIsIGxv bmcgKnAsIGxvbmcgaW5kZXgsIGludCAqdXNlZCwgVkFMVUUgdmFsdWVzKQogCQljb25zdCBW QUxVRSAqdmFsdWVzX2FycmF5ID0gUkFSUkFZX1BUUih2YWx1ZXMpOwogCiAJCWZvciAoaiA9 IDA7IGogPCByOyBqKyspIHJlc3VsdF9hcnJheVtqXSA9IHZhbHVlc19hcnJheVtwW2pdXTsK LQkJUkFSUkFZKHJlc3VsdCktPmxlbiA9IHI7CisJCUFSWV9TRVRfTEVOKHJlc3VsdCwgcik7 CiAJCXJiX3lpZWxkKHJlc3VsdCk7CiAJICAgIH0KIAl9CkBAIC0zMjI4LDcgKzMzODcsNyBA QCByYl9hcnlfcGVybXV0YXRpb24oaW50IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxVRSBhcnkp CiAJbG9uZyAqcCA9IChsb25nKilSU1RSSU5HX1BUUih0MCk7CiAJdm9sYXRpbGUgVkFMVUUg dDEgPSB0bXBidWYobixzaXplb2YoaW50KSk7CiAJaW50ICp1c2VkID0gKGludCopUlNUUklO R19QVFIodDEpOwotCVZBTFVFIGFyeTAgPSBhcnlfbWFrZV9zaGFyZWQoYXJ5KTsgLyogcHJp dmF0ZSBkZWZlbnNpdmUgY29weSBvZiBhcnkgKi8KKwlWQUxVRSBhcnkwID0gYXJ5X21ha2Vf c3Vic3RpdHV0aW9uKGFyeSk7IC8qIHByaXZhdGUgZGVmZW5zaXZlIGNvcHkgb2YgYXJ5ICov CiAKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB1c2VkW2ldID0gMDsgLyogaW5pdGlhbGl6 ZSBhcnJheSAqLwogCmRpZmYgLS1naXQgYS9leHQvdGsvdGNsdGtsaWIuYyBiL2V4dC90ay90 Y2x0a2xpYi5jCmluZGV4IDE5NDYyNzIuLjFkMzEyZTUgMTAwNjQ0Ci0tLSBhL2V4dC90ay90 Y2x0a2xpYi5jCisrKyBiL2V4dC90ay90Y2x0a2xpYi5jCkBAIC0zMDkwLDcgKzMwOTAsNyBA QCBpcF9ydWJ5X2NtZChjbGllbnREYXRhLCBpbnRlcnAsIGFyZ2MsIGFyZ3YpCiAgICAgLyog Z2V0IGFyZ3MgKi8KICAgICBhcmdzID0gcmJfYXJ5X25ldzIoYXJnYyAtIDIpOwogI2lmZGVm IEhBVkVfU1RSVUNUX1JBUlJBWV9MRU4KLSAgICBSQVJSQVkoYXJncyktPmxlbiA9IDA7Cisg ICAgUkFSUkFZKGFyZ3MpLT5hcy5oZWFwLmxlbiA9IDA7CiAjZW5kaWYKICAgICBmb3IoaSA9 IDM7IGkgPCBhcmdjOyBpKyspIHsKICNpZiBUQ0xfTUFKT1JfVkVSU0lPTiA+PSA4CkBAIC0z MDk5LDE0ICszMDk5LDE0IEBAIGlwX3J1YnlfY21kKGNsaWVudERhdGEsIGludGVycCwgYXJn YywgYXJndikKICNpZm5kZWYgSEFWRV9TVFJVQ1RfUkFSUkFZX0xFTgogCXJiX2FyeV9wdXNo KGFyZ3MsIHJiX3RhaW50ZWRfc3RyX25ldyhzdHIsIGxlbikpOwogI2Vsc2UKLSAgICAgICAg UkFSUkFZKGFyZ3MpLT5wdHJbUkFSUkFZKGFyZ3MpLT5sZW4rK10gPSByYl90YWludGVkX3N0 cl9uZXcoc3RyLCBsZW4pOworICAgICAgICBSQVJSQVkoYXJncyktPmFzLmhlYXAucHRyW1JB UlJBWShhcmdzKS0+YXMuaGVhcC5sZW4rK10gPSByYl90YWludGVkX3N0cl9uZXcoc3RyLCBs ZW4pOwogI2VuZGlmCiAjZWxzZSAvKiBUQ0xfTUFKT1JfVkVSU0lPTiA8IDggKi8KICAgICAg ICAgRFVNUDIoImFyZzolcyIsYXJndltpXSk7CiAjaWZuZGVmIEhBVkVfU1RSVUNUX1JBUlJB WV9MRU4KIAlyYl9hcnlfcHVzaChhcmdzLCByYl90YWludGVkX3N0cl9uZXcyKGFyZ3ZbaV0p KTsKICNlbHNlCi0gICAgICAgIFJBUlJBWShhcmdzKS0+cHRyW1JBUlJBWShhcmdzKS0+bGVu KytdID0gcmJfdGFpbnRlZF9zdHJfbmV3Mihhcmd2W2ldKTsKKyAgICAgICAgUkFSUkFZKGFy Z3MpLT5hcy5oZWFwLnB0cltSQVJSQVkoYXJncyktPmFzLmhlYXAubGVuKytdID0gcmJfdGFp bnRlZF9zdHJfbmV3Mihhcmd2W2ldKTsKICNlbmRpZgogI2VuZGlmCiAgICAgfQpAQCAtODI5 OCw3ICs4Mjk4LDcgQEAgaXBfaW52b2tlX3dpdGhfcG9zaXRpb24oYXJnYywgYXJndiwgb2Jq LCBwb3NpdGlvbikKICAgICBEVU1QMigiYmFjayBmcm9tIGhhbmRsZXIgKGN1cnJlbnQgdGhy ZWFkOiVseCkiLCBjdXJyZW50KTsKIAogICAgIC8qIGdldCByZXN1bHQgJiBmcmVlIGFsbG9j YXRlZCBtZW1vcnkgKi8KLSAgICByZXQgPSBSQVJSQVkocmVzdWx0KS0+cHRyWzBdOworICAg IHJldCA9IFJBUlJBWShyZXN1bHQpLT5hcy5oZWFwLnB0clswXTsKICNpZiAwIC8qIHVzZSBU Y2xfRXZlbnR1YWxseUZyZWUgKi8KICAgICBUY2xfRXZlbnR1YWxseUZyZWUoKENsaWVudERh dGEpYWxsb2NfZG9uZSwgVENMX0RZTkFNSUMpOyAvKiBYWFhYWFhYWCAqLwogI2Vsc2UKZGlm ZiAtLWdpdCBhL2djLmMgYi9nYy5jCmluZGV4IDYxMTdjYWYuLjNkODlkMTggMTAwNjQ0Ci0t LSBhL2djLmMKKysrIGIvZ2MuYwpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgZ2NfbWFya19jaGls ZHJlbihyYl9vYmpzcGFjZV90ICpvYmpzcGFjZSwgVkFMVUUgcHRyLCBpbnQgbGV2KQogCiAg ICAgICBjYXNlIFRfQVJSQVk6CiAJaWYgKEZMX1RFU1Qob2JqLCBFTFRTX1NIQVJFRCkpIHsK LQkgICAgcHRyID0gb2JqLT5hcy5hcnJheS5hdXguc2hhcmVkOworCSAgICBwdHIgPSBvYmot PmFzLmFycmF5LmFzLmhlYXAuYXV4LnNoYXJlZDsKIAkgICAgZ290byBhZ2FpbjsKIAl9CiAJ ZWxzZSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3J1YnkvcnVieS5oIGIvaW5jbHVkZS9ydWJ5 L3J1YnkuaAppbmRleCBjZGIyNTIyLi5mOTBjZjc2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3J1 YnkvcnVieS5oCisrKyBiL2luY2x1ZGUvcnVieS9ydWJ5LmgKQEAgLTUwOSw3ICs1MDksNyBA QCBWQUxVRSByYl9uZXdvYmoodm9pZCk7CiAgICAgaWYgKEZMX1RFU1Qob2JqLCBGTF9FWElW QVIpKSByYl9jb3B5X2dlbmVyaWNfaXZhcigoVkFMVUUpY2xvbmUsKFZBTFVFKW9iaik7XAog fSB3aGlsZSAoMCkKICNkZWZpbmUgRFVQU0VUVVAoZHVwLG9iaikgZG8ge1wKLSAgICBPQkpT RVRVUChkdXAscmJfb2JqX2NsYXNzKG9iaiksKFJCQVNJQyhvYmopLT5mbGFncykmKFRfTUFT S3xGTF9FWElWQVJ8RkxfVEFJTlR8RkxfVU5UUlVTVEVEKSk7XAorICAgIE9CSlNFVFVQKGR1 cCxyYl9vYmpfY2xhc3Mob2JqKSwgKFJCQVNJQyhvYmopLT5mbGFncykmKFRfTUFTS3xGTF9F WElWQVJ8RkxfVEFJTlR8RkxfVU5UUlVTVEVEKSk7IFwKICAgICBpZiAoRkxfVEVTVChvYmos IEZMX0VYSVZBUikpIHJiX2NvcHlfZ2VuZXJpY19pdmFyKChWQUxVRSlkdXAsKFZBTFVFKW9i aik7XAogfSB3aGlsZSAoMCkKIApAQCAtNjAxLDE3ICs2MDEsMzQgQEAgc3RydWN0IFJTdHJp bmcgewogICAgICBSU1RSSU5HKHN0ciktPmFzLmhlYXAucHRyKQogI2RlZmluZSBSU1RSSU5H X0VORChzdHIpIChSU1RSSU5HX1BUUihzdHIpK1JTVFJJTkdfTEVOKHN0cikpCiAKKyNkZWZp bmUgUkFSUkFZX0VNQkVEX0xFTl9NQVggMwogc3RydWN0IFJBcnJheSB7CiAgICAgc3RydWN0 IFJCYXNpYyBiYXNpYzsKLSAgICBsb25nIGxlbjsKICAgICB1bmlvbiB7Ci0JbG9uZyBjYXBh OwotCVZBTFVFIHNoYXJlZDsKLSAgICB9IGF1eDsKLSAgICBWQUxVRSAqcHRyOworCXN0cnVj dCB7CisJICAgIGxvbmcgbGVuOworCSAgICB1bmlvbiB7CisJCWxvbmcgY2FwYTsKKwkJVkFM VUUgc2hhcmVkOworCSAgICB9IGF1eDsKKwkgICAgVkFMVUUgKnB0cjsKKwl9IGhlYXA7CisJ VkFMVUUgYXJ5W1JBUlJBWV9FTUJFRF9MRU5fTUFYXTsKKyAgICB9IGFzOwogfTsKLSNkZWZp bmUgUkFSUkFZX0xFTihhKSBSQVJSQVkoYSktPmxlbgotI2RlZmluZSBSQVJSQVlfUFRSKGEp IFJBUlJBWShhKS0+cHRyCisjZGVmaW5lIFJBUlJBWV9FTUJFRF9GTEFHIEZMX1VTRVIxCisv KiBGTF9VU0VSMiBpcyBmb3IgRUxUU19TSEFSRUQgKi8KKyNkZWZpbmUgUkFSUkFZX0VNQkVE X0xFTl9NQVNLIChGTF9VU0VSNHxGTF9VU0VSMykKKyNkZWZpbmUgUkFSUkFZX0VNQkVEX0xF Tl9TSElGVCAoRkxfVVNISUZUKzMpCisjZGVmaW5lIFJBUlJBWV9MRU4oYSkgXAorICAgICgo UkJBU0lDKGEpLT5mbGFncyAmIFJBUlJBWV9FTUJFRF9GTEFHKSA/IFwKKyAgICAgKGxvbmcp KChSQkFTSUMoYSktPmZsYWdzID4+IFJBUlJBWV9FTUJFRF9MRU5fU0hJRlQpICYgXAorCSAo UkFSUkFZX0VNQkVEX0xFTl9NQVNLID4+IFJBUlJBWV9FTUJFRF9MRU5fU0hJRlQpKSA6IFwK KyAgICAgUkFSUkFZKGEpLT5hcy5oZWFwLmxlbikKKyNkZWZpbmUgUkFSUkFZX1BUUihhKSBc CisgICAgKChSQkFTSUMoYSktPmZsYWdzICYgUkFSUkFZX0VNQkVEX0ZMQUcpID8gXAorICAg ICBSQVJSQVkoYSktPmFzLmFyeSA6IFwKKyAgICAgUkFSUkFZKGEpLT5hcy5oZWFwLnB0cikK IAogc3RydWN0IFJSZWdleHAgewogICAgIHN0cnVjdCBSQmFzaWMgYmFzaWM7CmRpZmYgLS1n aXQgYS9wYXJzZS55IGIvcGFyc2UueQppbmRleCA2YjI5MTQyLi5iNDBhNDMwIDEwMDY0NAot LS0gYS9wYXJzZS55CisrKyBiL3BhcnNlLnkKQEAgLTQ5NDUsNyArNDk0NSw3IEBAIGNvdmVy YWdlKGNvbnN0IGNoYXIgKmYsIGludCBuKQogCWludCBpOwogCVJCQVNJQyhsaW5lcyktPmts YXNzID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSBSQVJSQVlfUFRSKGxpbmVzKVtp XSA9IFFuaWw7Ci0JUkFSUkFZKGxpbmVzKS0+bGVuID0gbjsKKwlSQVJSQVkobGluZXMpLT5h cy5oZWFwLmxlbiA9IG47CiAJcmJfaGFzaF9hc2V0KGNvdmVyYWdlcywgZm5hbWUsIGxpbmVz KTsKIAlyZXR1cm4gbGluZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvcHJvYy5jIGIvcHJvYy5j CmluZGV4IDcwNWE3NjQuLjQ5MDdkODAgMTAwNjQ0Ci0tLSBhL3Byb2MuYworKysgYi9wcm9j LmMKQEAgLTE2NzQsMTEgKzE2NzQsNyBAQCBzdGF0aWMgVkFMVUUgY3VycnkoVkFMVUUgZHVt bXksIFZBTFVFIGFyZ3MsIGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgcGFzc2VkXwog c3RhdGljIFZBTFVFCiBtYWtlX2N1cnJ5X3Byb2MoVkFMVUUgcHJvYywgVkFMVUUgcGFzc2Vk LCBWQUxVRSBhcml0eSkKIHsKLSAgICBWQUxVRSBhcmdzID0gcmJfYXJ5X25ldzIoMyk7Ci0g ICAgUkFSUkFZX1BUUihhcmdzKVswXSA9IHByb2M7Ci0gICAgUkFSUkFZX1BUUihhcmdzKVsx XSA9IHBhc3NlZDsKLSAgICBSQVJSQVlfUFRSKGFyZ3MpWzJdID0gYXJpdHk7Ci0gICAgUkFS UkFZX0xFTihhcmdzKSA9IDM7CisgICAgVkFMVUUgYXJncyA9IHJiX2FyeV9uZXczKDMsIHBy b2MsIHBhc3NlZCwgYXJpdHkpOwogICAgIHJiX2FyeV9mcmVlemUocGFzc2VkKTsKICAgICBy Yl9hcnlfZnJlZXplKGFyZ3MpOwogICAgIHJldHVybiByYl9wcm9jX25ldyhjdXJyeSwgYXJn cyk7Ci0tIAoxLjYuMC4xCgo= --------------020900060100050401080104 Content-Type: application/octet-stream; x-mac-type="0"; x-mac-creator="0"; name="0001-embedding-struct-RArray.patch.sig" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-embedding-struct-RArray.patch.sig" iEYEABECAAYFAkjjOQsACgkQOXzH5JLb/AWo+QCfaNpY6qOvwIDiebFkGAmaUFqwLjIAn1m6 4XdEWvKX0P5qwT6PrNfqvdno --------------020900060100050401080104--