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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Import 5 upstream gdb-7.8 branch fixes (async fix by Pedro Alves). Date: Thu, 23 Jul 2026 18:31:35 GMT Message-ID: <178483149502.1.11465233713443723104.rpms-gdb-8a983520e39c@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 8a983520e39c3919c58a7b2dbbf7453d75c6853e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogOGE5ODM1MjBlMzljMzkxOWM1OGE3YjJkYmJmNzQ1M2Q3 NWM2ODUzZQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxNC0xMC0xOVQxODo0NDoyMCswMjowMApTdGF0cyAgOiArMTcyOS8tMjEg aW4gNCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv Z2RiL2MvOGE5ODM1MjBlMzljMzkxOWM1OGE3YjJkYmJmNzQ1M2Q3NWM2ODUzZT9icmFuY2g9Zml4 LWR1cC1wYXRjaAoKTG9nOgpJbXBvcnQgNSB1cHN0cmVhbSBnZGItNy44IGJyYW5jaCBmaXhlcyAo YXN5bmMgZml4IGJ5IFBlZHJvIEFsdmVzKS4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5w YXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggNDhmMGI4Yy4uZDZjOGUzOCAxMDA2NDQKLS0t IGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0zNSwyMSArMzUs MjEgQEAgSW5kZXg6IGdkYi03LjgvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gZ2RiLTcuOC5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgky MDE0LTA3LTI5IDE5OjI5OjAyLjY2NTk3OTY1NSArMDIwMAogKysrIGdkYi03LjgvZ2RiL2RhdGEt ZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTQtMDctMjkgMTk6Mjk6MzMuMDUzMDIyNDg2ICswMjAw Ci1AQCAtNjYsNiArNjYsOCBAQCBQWVRIT05fRklMRV9MSVNUID0gXAorQEAgLTY1LDYgKzY1LDgg QEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKKyAJZ2RiL3Byb21wdC5weSBcCiAgCWdkYi94bWV0aG9k LnB5IFwKLSAJZ2RiL2NvbW1hbmQvYm91bmRfcmVnaXN0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQv X19pbml0X18ucHkgXAogKwlnZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IFwKICsJZ2RiL2Nv bW1hbmQvcGFob2xlLnB5IFwKICAJZ2RiL2NvbW1hbmQveG1ldGhvZHMucHkgXAogIAlnZGIvY29t bWFuZC9mcmFtZV9maWx0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVycy5weSBc Ci1AQCAtNzMsNyArNzUsMTAgQEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKLSAJZ2RiL2NvbW1hbmQv cHJvbXB0LnB5IFwKLSAJZ2RiL2NvbW1hbmQvZXhwbG9yZS5weSBcCitAQCAtNzQsNyArNzYsMTAg QEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKICAJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwKLS0J Z2RiL2Z1bmN0aW9uL3N0cmZucy5weQotKwlnZGIvZnVuY3Rpb24vc3RyZm5zLnB5IFwKKyAJZ2Ri L2Z1bmN0aW9uL3N0cmZucy5weSBcCisgCWdkYi9wcmludGVyL19faW5pdF9fLnB5IFwKKy0JZ2Ri L3ByaW50ZXIvYm91bmRfcmVnaXN0ZXJzLnB5CisrCWdkYi9wcmludGVyL2JvdW5kX3JlZ2lzdGVy cy5weSBcCiArCWdkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkgXAogKwlnZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkgXAogKwlnZGIvdHlwZXMucHkKCmRpZmYgLS1naXQgYS9nZGItZHRzLXJoZWw2LXB5 dGhvbi1jb21wYXQucGF0Y2ggYi9nZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2gKaW5k ZXggMzY4ODcxMy4uYTgxZTk0MiAxMDA2NDQKLS0tIGEvZ2RiLWR0cy1yaGVsNi1weXRob24tY29t cGF0LnBhdGNoCisrKyBiL2dkYi1kdHMtcmhlbDYtcHl0aG9uLWNvbXBhdC5wYXRjaApAQCAtMSwx MCArMSwxMCBAQAogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0x MDIwMDA0CiAKLUluZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kYXRhLWRpcmVjdG9yeS9N YWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjgvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9kYXRhLWRpcmVj dG9yeS9NYWtlZmlsZS5pbgkyMDE0LTA2LTEzIDIzOjAyOjM3LjU5NzExNTc4NyArMDIwMAotKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTQt MDYtMTMgMjM6MDM6MjEuMjg1MTYzOTA5ICswMjAwCi1AQCAtNjAsNiArNjAsOCBAQCBQWVRIT05f RklMRVMgPSBcCistLS0gZ2RiLTcuOC5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgkyMDE0LTEwLTE5IDE4OjI1OjM0LjE4NzExMDI2MSArMDIwMAorKysrIGdkYi03LjgvZ2RiL2Rh dGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTQtMTAtMTkgMTg6MjU6NTEuMDkyMTIxNzA2ICsw MjAwCitAQCAtNjAsNiArNjAsOCBAQCBQWVRIT05fRklMRV9MSVNUID0gXAogIAlnZGIvZnJhbWVz LnB5IFwKICAJZ2RiL0ZyYW1lSXRlcmF0b3IucHkgXAogIAlnZGIvRnJhbWVEZWNvcmF0b3IucHkg XApAQCAtMTMsMTggKzEzLDE4IEBAIEluZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kYXRh LWRpcmVjdG9yeS9NYWtlZmlsZS5pbgogIAlnZGIvdHlwZXMucHkgXAogIAlnZGIvcHJpbnRpbmcu cHkgXAogIAlnZGIvcHJvbXB0LnB5IFwKLUBAIC03NCw2ICs3Niw3IEBAIFBZVEhPTl9GSUxFUyA9 IFwKK0BAIC03Myw2ICs3NSw3IEBAIFBZVEhPTl9GSUxFX0xJU1QgPSBcCiAgCWdkYi9jb21tYW5k L3ByZXR0eV9wcmludGVycy5weSBcCiAgCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCiAgCWdkYi9j b21tYW5kL2V4cGxvcmUucHkgXAogKwlnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgXAogIAlnZGIv ZnVuY3Rpb24vX19pbml0X18ucHkgXAogIAlnZGIvZnVuY3Rpb24vc3RyZm5zLnB5IFwKLSAJZ2Ri L2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBcCi1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv cHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CisgCWdkYi9wcmludGVyL19faW5pdF9fLnB5 IFwKK0luZGV4OiBnZGItNy44L2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBw ZXIucHkJMjAxNC0wNi0xMyAyMzowMjozNy41OTgxMTU3ODggKzAyMDAKKysrKyBnZGItNy44L2dk Yi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkJMjAxNC0xMC0xOSAxODoyNTozNi44MDgx MTIwMzEgKzAyMDAKIEBAIC0wLDAgKzEsMTIyIEBACiArIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVz LgogKwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQogKwogKyAgICBkZWYgX19nZXRhdHRyX18g KHNlbGYsIG5hbWUpOgogKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNlbGYuZnJhbWUsIG5hbWUp Ci1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNl LnB5CitJbmRleDogZ2RiLTcuOC9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5CiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5 CTIwMTQtMDYtMTMgMjM6MDI6MzcuNTk4MTE1Nzg4ICswMjAwCisrKysgZ2RiLTcuOC9nZGIvcHl0 aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5CTIwMTQtMTAtMTkgMTg6MjU6MzYuODA4MTEyMDMxICsw MjAwCiBAQCAtMCwwICsxLDQyIEBACiArIyBGaWx0ZXJpbmcgYmFja3RyYWNlLgogKwpAQCAtMTk1 LDEwICsxOTUsMTAgQEAgSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3B5dGhvbi9saWIv Z2RiL2JhY2t0cmFjZS5weQogKyAgICAgICAgcmV0dXJuIGl0ZXIKICsgICAgcmV0dXJuIG9sZF9m cmFtZV9maWx0ZXIgKGl0ZXIpCiArCi1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKK0luZGV4OiBnZGItNy44L2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL2JhY2t0cmFjZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CTIwMTQtMDYtMTMg MjM6MDI6MzcuNTk4MTE1Nzg4ICswMjAwCisrKysgZ2RiLTcuOC9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9iYWNrdHJhY2UucHkJMjAxNC0xMC0xOSAxODoyNTozNi44MDgxMTIwMzEgKzAyMDAK IEBAIC0wLDAgKzEsMTA2IEBACiArIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCiArCgpkaWZmIC0t Z2l0IGEvZ2RiLXVwc3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCmluZGV4IDAyOGZl N2EuLjlkMmJhYzggMTAwNjQ0Ci0tLSBhL2dkYi11cHN0cmVhbS5wYXRjaAorKysgYi9nZGItdXBz dHJlYW0ucGF0Y2gKQEAgLTY1LDMgKzY1LDE3MDggQEAgaW5kZXggMGUwMjAyZC4uZDg0OWI0YyAx MDA2NDQKICAjIGdkYnNlcnZlciBkb2VzIG5vdCBoYXZlIHRoaXMgaXNzdWUuCiAgaWYgIVtpc19y ZW1vdGUgdGFyZ2V0XSB7CiAgICAgIHNldHVwX2tmYWlsICIqLSotKiIgZ2RiLzE1OTM0CitGcm9t IDYzZmNjOGJjZDk4YThjZDk2NzJkZDg2NzJmNjYzNjYyZjhjYWE4MTEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBQZWRybyBBbHZlcyA8cGFsdmVzQHJlZGhhdC5jb20+CitEYXRlOiBX ZWQsIDEgT2N0IDIwMTQgMTA6NDQ6MDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8zN10gQWFy Y2g2NDogTWFrZSBDUFNSIGEgMzItYml0IHJlZ2lzdGVyIGFnYWluIGluIHRoZQorIHRhcmdldCBk ZXNjcmlwdGlvbgorCitUaGlzIHJldmVydHMgY29tbWl0IGE0ZDliYTg1IC0gJ0FBUkNINjQ6IENo YW5nZSBjcHNyIHR5cGUgdG8gYmUKKzY0Yml0LicuCisKK0V2ZW4gdGhvdWdoIExpbnV4J3MgcHRy YWNlIGV4cG9zZXMgQ1BTUiBhcyA2NC1iaXQsIENQU1IgaXMgcmVhbGx5CiszMi1iaXQsIGFuZCBi YXNpbmcgR0RCJ3MgZnVuZGFtZW50YWxzIG9uIGEgcGFydGljdWxhciBPUydzIHB0cmFjZSgyKQor aW1wbGVtZW50YXRpb24gaXMgYSBiYWQgaWRlYS4KKworSW4gYWRkaXRpb24sIHdoaWxlIHRoYXQg Y29tbWl0IGludGVuZGVkIHRvIGZpeCBiaWcgZW5kaWFuIEFhcmNoNjQsIGl0CitlbmRlZCB1cCBi cmVha2luZyBmbG9hdGluZyBwb2ludCBkZWJ1Z2dpbmcgYWdhaW5zdCBHREJzZXJ2ZXIsIGZvciBi b3RoCitiaWcgYW5kIGxpdHRsZSBlbmRpYW4sIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgQ1BTUiB0 byBiZSA2NC1iaXQgaW4gdGhlCitmZWF0dXJlcy9hYXJjaDY0LWNvcmUueG1sIGZpbGUsIGJ1dCBt aXNzZWQgcmVnZW5lcmF0aW5nIHRoZQorcmVnZm9ybWF0cy9hYXJjaDY0LmRhdCBmaWxlLiAgSWYg d2UgZ2VuZXJhdGUgaXQgbm93LCB3ZSBzZWUgdGhpczoKKworICBkaWZmIC0tZ2l0IGMvZ2RiL3Jl Z2Zvcm1hdHMvYWFyY2g2NC5kYXQgdy9nZGIvcmVnZm9ybWF0cy9hYXJjaDY0LmRhdAorICBpbmRl eCBhZmUxMDI4Li4wZDMyMTgzIDEwMDY0NAorICAtLS0gYy9nZGIvcmVnZm9ybWF0cy9hYXJjaDY0 LmRhdAorICArKysgdy9nZGIvcmVnZm9ybWF0cy9hYXJjaDY0LmRhdAorICBAQCAtMzUsNyArMzUs NyBAQCBleHBlZGl0ZTp4Mjksc3AscGMKKyAgIDY0OngzMAorICAgNjQ6c3AKKyAgIDY0OnBjCisg IC0zMjpjcHNyCisgICs2NDpjcHNyCisgICAxMjg6djAKKyAgIDEyODp2MQorICAgMTI4OnYyCisK K0lPVywgdGhhdCBjb21taXQgbGVmdCByZWdmb3JtYXRzL2FhcmNoNjQuZGF0IHN0aWxsIGNvbnNp ZGVyaW5nIENQU1IgYXMKKzMyLWJpdHMuICByZWdmb3JtYXRzL2FhcmNoNjQuZGF0IGlzIHVzZWQg YnkgR0RCc2VydmVyIGZvciBpdHMgaW50ZXJuYWwKK3JlZ2NhY2hlIGxheW91dCwgYW5kIGZvciB0 aGUgZy9HIHBhY2tldCByZWdpc3RlciBibG9jay4gIFNlZSB0aGUKK2dlbmVyYXRlZCBhYXJjaDY0 LmMgZmlsZSBpbiBHREJzZXJ2ZXIncyBidWlsZCBkaXIuCisKK1NvIHRoZSB0YXJnZXQgZGVzY3Jp cHRpb24geG1sIGZpbGUgdGhhdCBHREJzZXJ2ZXIgcmVwb3J0cyB0byBHREIgaXMKK25vdyBjbGFp bWluZyB0aGF0IENQU1IgaXMgNjQtYml0LCBidXQgd2hhdCBHREJzZXJ2ZXIgYWN0dWFsbHkgcHV0 cyBpbgordGhlIGcvRyByZWdpc3RlciBwYWNrZXRzIGlzIDMyLWJpdHMuICBCZWNhdXNlIEdEQiB0 aGlua3MgQ1BTUiBpcworNjQtYml0IChiZWNhdXNlIHRoYXQncyB3aGF0IHRoZSBYTUwgZGVzY3Jp cHRpb24gc2F5cyksIEdEQiB3aWxsIGJlCityZWFkaW5nIHRoZSByZW1haW5pbmcgMzItYml0IGJp dHMgb2YgQ1BTUiBvdXQgb2YgdjAgKHRoZSByZWdpc3RlcgoraW1tZWRpYXRlbHkgYWZ0ZXJ3YXJk cyksIGFuZCB0aGVuIGFsbCB0aGUgcmVnaXN0ZXJzIHRoYXQgZm9sbG93IENQU1IKK2luIHRoZSBy ZWdpc3RlciBwYWNrZXQgZW5kIHVwIHdyb25nIGluIEdEQiwgYmVjYXVzZSB0aGV5J3JlIGJlaW5n IHJlYWQKK2Zyb20gdGhlIHdyb25nIG9mZnNldHMuLi4KKworZ2RiLworMjAxNC0xMC0wMSAgUGVk cm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKworCSogZmVhdHVyZXMvYWFyY2g2NC1jb3Jl LnhtbCAoY3Bzcik6IENoYW5nZSBiYWNrIHRvIDMyLWJpdC4KKwkqIGZlYXR1cmVzL2FhcmNoNjQu YzogUmVnZW5lcmF0ZS4KKy0tLQorIGdkYi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgNSAr KysrKworIGdkYi9mZWF0dXJlcy9hYXJjaDY0LWNvcmUueG1sIHwgMiArLQorIGdkYi9mZWF0dXJl cy9hYXJjaDY0LmMgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQorCisjIyMgYS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9nZGIvQ2hh bmdlTG9nCisjIyAtMSwzICsxLDggQEAKKysyMDE0LTEwLTAxICBQZWRybyBBbHZlcyAgPHBhbHZl c0ByZWRoYXQuY29tPgorKworKwkqIGZlYXR1cmVzL2FhcmNoNjQtY29yZS54bWwgKGNwc3IpOiBD aGFuZ2UgYmFjayB0byAzMi1iaXQuCisrCSogZmVhdHVyZXMvYWFyY2g2NC5jOiBSZWdlbmVyYXRl LgorKworIDIwMTQtMDktMTEgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisgCisg CVBSIGdkYi8xNzM0NworLS0tIGEvZ2RiL2ZlYXR1cmVzL2FhcmNoNjQtY29yZS54bWwKKysrKyBi L2dkYi9mZWF0dXJlcy9hYXJjaDY0LWNvcmUueG1sCitAQCAtNDIsNSArNDIsNSBAQAorICAgPHJl ZyBuYW1lPSJzcCIgYml0c2l6ZT0iNjQiIHR5cGU9ImRhdGFfcHRyIi8+CisgCisgICA8cmVnIG5h bWU9InBjIiBiaXRzaXplPSI2NCIgdHlwZT0iY29kZV9wdHIiLz4KKy0gIDxyZWcgbmFtZT0iY3Bz ciIgYml0c2l6ZT0iNjQiLz4KKysgIDxyZWcgbmFtZT0iY3BzciIgYml0c2l6ZT0iMzIiLz4KKyA8 L2ZlYXR1cmU+CistLS0gYS9nZGIvZmVhdHVyZXMvYWFyY2g2NC5jCisrKysgYi9nZGIvZmVhdHVy ZXMvYWFyY2g2NC5jCitAQCAtNTAsNyArNTAsNyBAQCBpbml0aWFsaXplX3RkZXNjX2FhcmNoNjQg KHZvaWQpCisgICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieDMwIiwgMzAsIDEsIE5VTEws IDY0LCAiaW50Iik7CisgICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3AiLCAzMSwgMSwg TlVMTCwgNjQsICJkYXRhX3B0ciIpOworICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInBj IiwgMzIsIDEsIE5VTEwsIDY0LCAiY29kZV9wdHIiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJjcHNyIiwgMzMsIDEsIE5VTEwsIDY0LCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAiY3BzciIsIDMzLCAxLCBOVUxMLCAzMiwgImludCIpOworIAorICAgZmVh dHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5hYXJjaDY0 LmZwdSIpOworICAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpZWVl X2RvdWJsZSIpOworLS0gCisxLjkuMworCitGcm9tIDI0NGZlODJiOWM2NTQyNTU3YTFjMmQ0ZDIx YWYxMDkyNjkyZDM3N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEb3VnIEV2YW5z IDxkamVAZ29vZ2xlLmNvbT4KK0RhdGU6IFdlZCwgMTUgT2N0IDIwMTQgMTM6MjM6MjMgLTA3MDAK K1N1YmplY3Q6IFtQQVRDSCAyOS8zN10gUFIgcHl0aG9uLzE3MzY0CisKK2dkYi9DaGFuZ2VMb2c6 CisKKwkqIHB5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5IChwYWNrYWdlcyk6IEFkZCAicHJpbnRl ciIuCisJKiBweXRob24vbGliL2dkYi9jb21tYW5kL2JvdW5kX3JlZ2lzdGVycy5weTogTW92ZWQg dG8gLi4uCisJKiBweXRob24vbGliL2dkYi9wcmludGVyL2JvdW5kX3JlZ2lzdGVycy5weTogLi4u IGhlcmUuCisJQWRkIHByaW50ZXIgdG8gZ2xvYmFsIHNldCBvZiBidWlsdGluIHByaW50ZXJzLiAg UmVuYW1lIHByaW50ZXIgZnJvbQorCSJib3VuZCIgdG8gIm1weF9ib3VuZDEyOCIuCisJKiBweXRo b24vbGliL2dkYi9wcmludGluZy5weSAoX2J1aWx0aW5fcHJldHR5X3ByaW50ZXJzKTogTmV3IGds b2JhbCwKKwlyZWdpc3RlcmVkIGFzIGdsb2JhbCAiYnVpbHRpbiIgcHJpbnRlci4KKwkoYWRkX2J1 aWx0aW5fcHJldHR5X3ByaW50ZXIpOiBOZXcgZnVuY3Rpb24uCisJKiBkYXRhLWRpcmVjdG9yeS9N YWtlZmlsZS5pbiAoUFlUSE9OX0ZJTEVfTElTVCk6IFVwZGF0ZSwgYW5kIGFkZAorCWdkYi9wcmlu dGVyL19faW5pdF9fLnB5LgorLS0tCisgZ2RiL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMTUgKysrKysrKysrCisgZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxl LmluICAgICAgICAgICAgICAgIHwgIDUgKy0tCisgZ2RiL3B5dGhvbi9saWIvZ2RiL19faW5pdF9f LnB5ICAgICAgICAgICAgICAgIHwgIDMgKy0KKyBnZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9i b3VuZF9yZWdpc3RlcnMucHkgfCA0NSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBnZGIv cHl0aG9uL2xpYi9nZGIvcHJpbnRlci9fX2luaXRfXy5weSAgICAgICAgfCAxNCArKysrKysrKysK KyBnZGIvcHl0aG9uL2xpYi9nZGIvcHJpbnRlci9ib3VuZF9yZWdpc3RlcnMucHkgfCAzNiArKysr KysrKysrKysrKysrKysrKysKKyBnZGIvcHl0aG9uL2xpYi9nZGIvcHJpbnRpbmcucHkgICAgICAg ICAgICAgICAgfCAxNCArKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMo KyksIDQ4IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBnZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9ib3VuZF9yZWdpc3RlcnMucHkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3B5 dGhvbi9saWIvZ2RiL3ByaW50ZXIvX19pbml0X18ucHkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Ri L3B5dGhvbi9saWIvZ2RiL3ByaW50ZXIvYm91bmRfcmVnaXN0ZXJzLnB5CisKKyMjIyBhL2dkYi9D aGFuZ2VMb2cKKyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDMgKzEsMTggQEAKKysyMDE0LTEw LTE1ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+CisrCSAgICBXYWxmcmVkIFRlZGVzY2hp ICA8d2FsZnJlZC50ZWRlc2NoaUBpbnRlbC5jb20+CisrCisrCVBSIHB5dGhvbi8xNzM2NAorKwkq IHB5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5IChwYWNrYWdlcyk6IEFkZCAicHJpbnRlciIuCisr CSogcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9ib3VuZF9yZWdpc3RlcnMucHk6IE1vdmVkIHRvIC4u LgorKwkqIHB5dGhvbi9saWIvZ2RiL3ByaW50ZXIvYm91bmRfcmVnaXN0ZXJzLnB5OiAuLi4gaGVy ZS4KKysJQWRkIHByaW50ZXIgdG8gZ2xvYmFsIHNldCBvZiBidWlsdGluIHByaW50ZXJzLiAgUmVu YW1lIHByaW50ZXIgZnJvbQorKwkiYm91bmQiIHRvICJtcHhfYm91bmQxMjgiLgorKwkqIHB5dGhv bi9saWIvZ2RiL3ByaW50aW5nLnB5IChfYnVpbHRpbl9wcmV0dHlfcHJpbnRlcnMpOiBOZXcgZ2xv YmFsLAorKwlyZWdpc3RlcmVkIGFzIGdsb2JhbCAiYnVpbHRpbiIgcHJpbnRlci4KKysJKGFkZF9i dWlsdGluX3ByZXR0eV9wcmludGVyKTogTmV3IGZ1bmN0aW9uLgorKwkqIGRhdGEtZGlyZWN0b3J5 L01ha2VmaWxlLmluIChQWVRIT05fRklMRV9MSVNUKTogVXBkYXRlLCBhbmQgYWRkCisrCWdkYi9w cmludGVyL19faW5pdF9fLnB5LgorKworIDIwMTQtMTAtMDEgIFBlZHJvIEFsdmVzICA8cGFsdmVz QHJlZGhhdC5jb20+CisgCisgCSogZmVhdHVyZXMvYWFyY2g2NC1jb3JlLnhtbCAoY3Bzcik6IENo YW5nZSBiYWNrIHRvIDMyLWJpdC4KKy0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgorKysrIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCitAQCAtNjQsNyArNjQsNiBA QCBQWVRIT05fRklMRV9MSVNUID0gXAorIAlnZGIvcHJpbnRpbmcucHkgXAorIAlnZGIvcHJvbXB0 LnB5IFwKKyAJZ2RiL3htZXRob2QucHkgXAorLQlnZGIvY29tbWFuZC9ib3VuZF9yZWdpc3RlcnMu cHkgXAorIAlnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCisgCWdkYi9jb21tYW5kL3htZXRob2Rz LnB5IFwKKyAJZ2RiL2NvbW1hbmQvZnJhbWVfZmlsdGVycy5weSBcCitAQCAtNzMsNyArNzIsOSBA QCBQWVRIT05fRklMRV9MSVNUID0gXAorIAlnZGIvY29tbWFuZC9wcm9tcHQucHkgXAorIAlnZGIv Y29tbWFuZC9leHBsb3JlLnB5IFwKKyAJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwKKy0JZ2Ri L2Z1bmN0aW9uL3N0cmZucy5weQorKwlnZGIvZnVuY3Rpb24vc3RyZm5zLnB5IFwKKysJZ2RiL3By aW50ZXIvX19pbml0X18ucHkgXAorKwlnZGIvcHJpbnRlci9ib3VuZF9yZWdpc3RlcnMucHkKKyAK KyBASEFWRV9QWVRIT05fVFJVRUBQWVRIT05fRklMRVMgPSAkKFBZVEhPTl9GSUxFX0xJU1QpCisg QEhBVkVfUFlUSE9OX0ZBTFNFQFBZVEhPTl9GSUxFUyA9CistLS0gYS9nZGIvcHl0aG9uL2xpYi9n ZGIvX19pbml0X18ucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQorQEAg LTgxLDcgKzgxLDggQEAgUFlUSE9ORElSID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFt ZShfX2ZpbGVfXykpCisgCisgcGFja2FnZXMgPSBbCisgICAgICdmdW5jdGlvbicsCistICAgICdj b21tYW5kJworKyAgICAnY29tbWFuZCcsCisrICAgICdwcmludGVyJworIF0KKyAKKyAjIHBrZ3V0 aWwuaXRlcl9tb2R1bGVzIGlzIG5vdCBhdmFpbGFibGUgcHJpb3IgdG8gUHl0aG9uIDIuNi4gIElu c3RlYWQsCistLS0gYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9ib3VuZF9yZWdpc3RlcnMu cHkKKysrKyAvZGV2L251bGwKK0BAIC0xLDQ1ICswLDAgQEAKKy0jIFByZXR0eS1wcmludGVyIHV0 aWxpdGllcy4KKy0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorLQorLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK Ky0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0KKy1pbXBvcnQg Z2RiLnByaW50aW5nCistCistY2xhc3MgQm91bmRQcmludGVyOgorLSAgICAiIiJBZGRzIHNpemUg ZmllbGQgdG8gYSBfcmF3Ym91bmQxMjggdHlwZS4iIiIKKy0KKy0gICAgZGVmIF9faW5pdF9fIChz ZWxmLCB2YWwpOgorLSAgICAgICAgc2VsZi52YWwgPSB2YWwKKy0KKy0gICAgZGVmIHRvX3N0cmlu ZyAoc2VsZik6CistICAgICAgICB1cHBlciA9IHNlbGYudmFsWyJ1Ym91bmQiXQorLSAgICAgICAg bG93ZXIgPSBzZWxmLnZhbFsibGJvdW5kIl0KKy0gICAgICAgIHNpemUgID0gKGxvbmcpICgodXBw ZXIpIC0gKGxvd2VyKSkKKy0gICAgICAgIGlmIHNpemUgPiAtMToKKy0gICAgICAgICAgICBzaXpl ID0gc2l6ZSArIDEKKy0gICAgICAgIHJlc3VsdCA9ICd7bGJvdW5kID0gJXMsIHVib3VuZCA9ICVz fSA6IHNpemUgJXMnICUgKGxvd2VyLCB1cHBlciwgc2l6ZSkKKy0gICAgICAgIHJldHVybiByZXN1 bHQKKy0KKy0jIFRoZXJlIGFyZSB0d28gcGF0dGVybiBtYXRjaGluZyB1c2VkOiBmaXJzdCBvbmUg aXMgcmVsYXRlZCB0byBhIGxpYnJhcnkKKy0jIHNlY29uZCBpcyByZWxhdGVkIHRvIHRoZSB0eXBl LiBTaW5jZSB3ZSBhcmUgZGlzcGxheWluZyBhIHJlZ2lzdGVyIGFsbAorLSMgbGlicmFyaWVzIGFy ZSBhY2NlcHRlZC4gVHlwZSB0byBiZSBwcm9jZXNzZWQgaXMgdGhlIHNhbWUgcHJlc2VudAorLSMg aW4gdGhlIHhtbCBmaWxlLgorLQorLWRlZiBidWlsZF9wcmV0dHlfcHJpbnRlciAoKToKKy0gICAg cHAgPSBnZGIucHJpbnRpbmcuUmVnZXhwQ29sbGVjdGlvblByZXR0eVByaW50ZXIgKCIuKiIpCist ICAgIHBwLmFkZF9wcmludGVyICgnYm91bmQnLCAnXl9fZ2RiX2J1aWx0aW5fdHlwZV9ib3VuZDEy OCcsIEJvdW5kUHJpbnRlcikKKy0gICAgcmV0dXJuIHBwCistCistZ2RiLnByaW50aW5nLnJlZ2lz dGVyX3ByZXR0eV9wcmludGVyIChnZGIuY3VycmVudF9vYmpmaWxlICgpLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfcHJldHR5X3ByaW50ZXIgKCkpCistLS0g L2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvcHJpbnRlci9fX2luaXRfXy5weQor QEAgLTAsMCArMSwxNCBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0tLSAvZGV2 L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9wcmludGVyL2JvdW5kX3JlZ2lzdGVycy5w eQorQEAgLTAsMCArMSwzNiBAQAorKyMgUHJldHR5LXByaW50ZXJzIGZvciBib3VuZHMgcmVnaXN0 ZXJzLgorKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2ltcG9ydCBnZGIu cHJpbnRpbmcKKysKKytjbGFzcyBNcHhCb3VuZDEyOFByaW50ZXI6CisrICAgICIiIkFkZHMgc2l6 ZSBmaWVsZCB0byBhIG1weCBfX2dkYl9idWlsdGluX3R5cGVfYm91bmQxMjggdHlwZS4iIiIKKysK KysgICAgZGVmIF9faW5pdF9fIChzZWxmLCB2YWwpOgorKyAgICAgICAgc2VsZi52YWwgPSB2YWwK KysKKysgICAgZGVmIHRvX3N0cmluZyAoc2VsZik6CisrICAgICAgICB1cHBlciA9IHNlbGYudmFs WyJ1Ym91bmQiXQorKyAgICAgICAgbG93ZXIgPSBzZWxmLnZhbFsibGJvdW5kIl0KKysgICAgICAg IHNpemUgID0gKGxvbmcpICgodXBwZXIpIC0gKGxvd2VyKSkKKysgICAgICAgIGlmIHNpemUgPiAt MToKKysgICAgICAgICAgICBzaXplID0gc2l6ZSArIDEKKysgICAgICAgIHJlc3VsdCA9ICd7bGJv dW5kID0gJXMsIHVib3VuZCA9ICVzfSA6IHNpemUgJXMnICUgKGxvd2VyLCB1cHBlciwgc2l6ZSkK KysgICAgICAgIHJldHVybiByZXN1bHQKKysKKytnZGIucHJpbnRpbmcuYWRkX2J1aWx0aW5fcHJl dHR5X3ByaW50ZXIgKCdtcHhfYm91bmQxMjgnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ15fX2dkYl9idWlsdGluX3R5cGVfYm91bmQxMjgnLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXB4Qm91bmQxMjhQcmludGVyKQorLS0t IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL3ByaW50aW5nLnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvcHJpbnRpbmcucHkKK0BAIC0yNjMsMyArMjYzLDE3IEBAIGNsYXNzIEZsYWdFbnVtZXJhdGlv blByaW50ZXIoUHJldHR5UHJpbnRlcik6CisgICAgICAgICAgICAgcmV0dXJuIF9FbnVtSW5zdGFu Y2Uoc2VsZi5lbnVtZXJhdG9ycywgdmFsKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBy ZXR1cm4gTm9uZQorKworKworKyMgQnVpbHRpbiBwcmV0dHktcHJpbnRlcnMuCisrIyBUaGUgc2V0 IGlzIGRlZmluZWQgYXMgZW1wdHksIGFuZCBmaWxlcyBpbiBwcmludGluZy8qLnB5IGFkZCB0aGVp ciBwcmludGVycworKyMgdG8gdGhpcyB3aXRoIGFkZF9idWlsdGluX3ByZXR0eV9wcmludGVyLgor KworK19idWlsdGluX3ByZXR0eV9wcmludGVycyA9IFJlZ2V4cENvbGxlY3Rpb25QcmV0dHlQcmlu dGVyKCJidWlsdGluIikKKysKKytyZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcihOb25lLCBfYnVpbHRp bl9wcmV0dHlfcHJpbnRlcnMpCisrCisrIyBBZGQgYSBidWlsdGluIHByZXR0eS1wcmludGVyLgor KworK2RlZiBhZGRfYnVpbHRpbl9wcmV0dHlfcHJpbnRlcihuYW1lLCByZWdleHAsIHByaW50ZXIp OgorKyAgICBfYnVpbHRpbl9wcmV0dHlfcHJpbnRlcnMuYWRkX3ByaW50ZXIobmFtZSwgcmVnZXhw LCBwcmludGVyKQorLS0gCisxLjkuMworCitGcm9tIDkyZTA4YzBkMTkxOTA4YjczMTU2MDM1NTgy MjZjN2NhMGJmYTg2YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZWRybyBBbHZl cyA8cGFsdmVzQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDE3IE9jdCAyMDE0IDEzOjQ5OjI4ICsw MTAwCitTdWJqZWN0OiBbUEFUQ0ggMzIvMzddIE1ha2UgY29tbW9uIGNvZGUgaGFuZGxlIHRhcmdl dF90ZXJtaW5hbF8qIGlkZW1wb3RlbmN5CisKK0kgZm91bmQgYSBwbGFjZSB0aGF0IHNob3VsZCBi ZSBnaXZpbmcgYmFjayB0aGUgdGVybWluYWwgdG8gdGhlIHRhcmdldCwKK2J1dCBvbmx5IGlmIHRo ZSB0YXJnZXQgd2FzIGFscmVhZHkgb3duaW5nIGl0LiAgU28gSSBuZWVkIHRvIGFkZCBhCitnZXR0 ZXIgZm9yIHdobyBvd25zIHRoZSB0ZXJtaW5hbC4KKworVGhlIHRyb3VibGUgaXMgdGhhdCBzZXZl cmFsIHBsYWNlcy90YXJnZXQgaGF2ZSB0aGVpciBvd24gZ2xvYmFscyB0bwordHJhY2sgdGhpcyBz dGF0ZToKKworIC0gaW5mbG93LmM6dGVybWluYWxfaXNfb3VycworIC0gcmVtb3RlLmM6cmVtb3Rl X2FzeW5jX3Rlcm1pbmFsX291cnNfcAorIC0gbGludXgtbmF0LmM6YXN5bmNfdGVybWluYWxfaXNf b3VycworIC0gZ28zMi1uYXQuYzp0ZXJtaW5hbF9pc19vdXJzCisKK1doaWxlIG9uZSBtaWdodCB0 aGluayBvZiBhZGRpbmcgYSBuZXcgdGFyZ2V0X29wcyBtZXRob2QgdG8gcXVlcnkgdGhpcywKK2Nv bmNlcHR1YWxseSwgdGhpcyBzdGF0ZSBpc24ndCByZWFsbHkgcGFydCBvZiBhIHBhcnRpY3VsYXIg dGFyZ2V0X29wcy4KK0NvbnNpZGVyaW5nIG11bHRpLXRhcmdldCwgdGhlIGNvcmUgc2hvdWxkbid0 IGhhdmUgdG8gYXNrIGFsbCB0YXJnZXRzCit0byBrbm93IHdoZXRoZXIgaXQncyBHREIgdGhhdCBv d25zIHRoZSB0ZXJtaW5hbC4gIFRoZXJlJ3Mgb25seSBvbmUgR0RCCisob3IgcmF0aGVyLCBvbmx5 IG9uZSB0b3AgbGV2ZWwgaW50ZXJwcmV0ZXIpLgorCitTbyB3aGF0IHRoaXMgY29tbWVudCBkb2Vz IGlzIGFkZCBhIG5ldyBnbG9iYWwgdGhhdCBpcyB0cmFja2VkIGJ5IHRoZQorY29yZSBpbnN0ZWFk LiAgQSBzdWJzZXF1ZW50IHBhc3MgbWF5IGxhdGVyIHJlbW92ZSB0aGUgb3RoZXIgZ2xvYmFscy4K KworVGVzdGVkIG9uIHg4Nl82NCBGZWRvcmEgMjAsIG5hdGl2ZSBhbmQgZ2Ric2VydmVyLgorCitn ZGIvCisyMDE0LTEwLTE3ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorCisJKiB0 YXJnZXQuYyAoZW51bSB0ZXJtaW5hbF9zdGF0ZSk6IE5ldyBlbnVtLgorCSh0ZXJtaW5hbF9zdGF0 ZSk6IE5ldyBnbG9iYWwuCisJKHRhcmdldF90ZXJtaW5hbF9pbml0KTogTmV3IGZ1bmN0aW9uLgor CSh0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IpOiBTa2lwIGlmIGluZmVyaW9yIGFscmVhZHkgb3du cyB0aGUKKwl0ZXJtaW5hbC4KKwkodGFyZ2V0X3Rlcm1pbmFsX291cnMsIHRhcmdldF90ZXJtaW5h bF9vdXJzX2Zvcl9vdXRwdXQpOiBOZXcKKwlmdW5jdGlvbnMuCisJKiB0YXJnZXQuaCAodGFyZ2V0 X3Rlcm1pbmFsX2luaXQpOiBDb252ZXJ0IHRvIGZ1bmN0aW9uIHByb3RvdHlwZS4KKwkodGFyZ2V0 X3Rlcm1pbmFsX291cnNfZm9yX291dHB1dCk6IENvbnZlcnQgdG8gZnVuY3Rpb24gcHJvdG90eXBl CisJYW5kIHR3ZWFrIGNvbW1lbnQuCisJKHRhcmdldF90ZXJtaW5hbF9vdXJzKTogQ29udmVydCB0 byBmdW5jdGlvbiBwcm90b3R5cGUgYW5kIHR3ZWFrCisJY29tbWVudC4KKwkqIHdpbmRvd3MtbmF0 LmMgKGRvX2luaXRpYWxfd2luZG93c19zdHVmZik6IENhbGwKKwl0YXJnZXRfdGVybWluYWxfaW5p dCBpbnN0ZWFkIG9mIGNoaWxkX3Rlcm1pbmFsX2luaXRfd2l0aF9wZ3JwLgorLS0tCisgZ2RiL0No YW5nZUxvZyAgICAgfCAxNyArKysrKysrKysrKysrKysrKworIGdkYi90YXJnZXQuYyAgICAgIHwg NTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KworIGdkYi90YXJnZXQuaCAgICAgIHwgMjAgKysrKysrKy0tLS0tLS0tLS0tLS0KKyBnZGIvd2lu ZG93cy1uYXQuYyB8ICAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCAx NCBkZWxldGlvbnMoLSkKKworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxv ZworIyMgLTEsMyArMSwyMCBAQAorKzIwMTQtMTAtMTcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJl ZGhhdC5jb20+CisrCisrCSogdGFyZ2V0LmMgKGVudW0gdGVybWluYWxfc3RhdGUpOiBOZXcgZW51 bS4KKysJKHRlcm1pbmFsX3N0YXRlKTogTmV3IGdsb2JhbC4KKysJKHRhcmdldF90ZXJtaW5hbF9p bml0KTogTmV3IGZ1bmN0aW9uLgorKwkodGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yKTogU2tpcCBp ZiBpbmZlcmlvciBhbHJlYWR5IG93bnMgdGhlCisrCXRlcm1pbmFsLgorKwkodGFyZ2V0X3Rlcm1p bmFsX291cnMsIHRhcmdldF90ZXJtaW5hbF9vdXJzX2Zvcl9vdXRwdXQpOiBOZXcKKysJZnVuY3Rp b25zLgorKwkqIHRhcmdldC5oICh0YXJnZXRfdGVybWluYWxfaW5pdCk6IENvbnZlcnQgdG8gZnVu Y3Rpb24gcHJvdG90eXBlLgorKwkodGFyZ2V0X3Rlcm1pbmFsX291cnNfZm9yX291dHB1dCk6IENv bnZlcnQgdG8gZnVuY3Rpb24gcHJvdG90eXBlCisrCWFuZCB0d2VhayBjb21tZW50LgorKwkodGFy Z2V0X3Rlcm1pbmFsX291cnMpOiBDb252ZXJ0IHRvIGZ1bmN0aW9uIHByb3RvdHlwZSBhbmQgdHdl YWsKKysJY29tbWVudC4KKysJKiB3aW5kb3dzLW5hdC5jIChkb19pbml0aWFsX3dpbmRvd3Nfc3R1 ZmYpOiBDYWxsCisrCXRhcmdldF90ZXJtaW5hbF9pbml0IGluc3RlYWQgb2YgY2hpbGRfdGVybWlu YWxfaW5pdF93aXRoX3BncnAuCisrCisgMjAxNC0xMC0xNSAgRG91ZyBFdmFucyAgPGRqZUBnb29n bGUuY29tPgorIAkgICAgV2FsZnJlZCBUZWRlc2NoaSAgPHdhbGZyZWQudGVkZXNjaGlAaW50ZWwu Y29tPgorIAorLS0tIGEvZ2RiL3RhcmdldC5jCisrKysgYi9nZGIvdGFyZ2V0LmMKK0BAIC00ODIs NiArNDgyLDM1IEBAIHRhcmdldF9sb2FkIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAgICgq Y3VycmVudF90YXJnZXQudG9fbG9hZCkgKCZjdXJyZW50X3RhcmdldCwgYXJnLCBmcm9tX3R0eSk7 CisgfQorIAorKy8qIFBvc3NpYmxlIHRlcm1pbmFsIHN0YXRlcy4gICovCisrCisrZW51bSB0ZXJt aW5hbF9zdGF0ZQorKyAgeworKyAgICAvKiBUaGUgaW5mZXJpb3IncyB0ZXJtaW5hbCBzZXR0aW5n cyBhcmUgaW4gZWZmZWN0LiAgKi8KKysgICAgdGVybWluYWxfaXNfaW5mZXJpb3IgPSAwLAorKwor KyAgICAvKiBTb21lIG9mIG91ciB0ZXJtaW5hbCBzZXR0aW5ncyBhcmUgaW4gZWZmZWN0LCBlbm91 Z2ggdG8gZ2V0CisrICAgICAgIHByb3BlciBvdXRwdXQuICAqLworKyAgICB0ZXJtaW5hbF9pc19v dXJzX2Zvcl9vdXRwdXQgPSAxLAorKworKyAgICAvKiBPdXIgdGVybWluYWwgc2V0dGluZ3MgYXJl IGluIGVmZmVjdCwgZm9yIG91dHB1dCBhbmQgaW5wdXQuICAqLworKyAgICB0ZXJtaW5hbF9pc19v dXJzID0gMgorKyAgfTsKKysKKytzdGF0aWMgZW51bSB0ZXJtaW5hbF9zdGF0ZSB0ZXJtaW5hbF9z dGF0ZTsKKysKKysvKiBTZWUgdGFyZ2V0LmguICAqLworKworK3ZvaWQKKyt0YXJnZXRfdGVybWlu YWxfaW5pdCAodm9pZCkKKyt7CisrICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3Rlcm1pbmFsX2luaXQp ICgmY3VycmVudF90YXJnZXQpOworKworKyAgdGVybWluYWxfc3RhdGUgPSB0ZXJtaW5hbF9pc19v dXJzOworK30KKysKKysvKiBTZWUgdGFyZ2V0LmguICAqLworKworIHZvaWQKKyB0YXJnZXRfdGVy bWluYWxfaW5mZXJpb3IgKHZvaWQpCisgeworQEAgLTQ5Miw5ICs1MjEsMzYgQEAgdGFyZ2V0X3Rl cm1pbmFsX2luZmVyaW9yICh2b2lkKQorICAgaWYgKHRhcmdldF9jYW5fYXN5bmNfcCAoKSAmJiAh c3luY19leGVjdXRpb24pCisgICAgIHJldHVybjsKKyAKKysgIGlmICh0ZXJtaW5hbF9zdGF0ZSA9 PSB0ZXJtaW5hbF9pc19pbmZlcmlvcikKKysgICAgcmV0dXJuOworKworICAgLyogSWYgR0RCIGlz IHJlc3VtaW5nIHRoZSBpbmZlcmlvciBpbiB0aGUgZm9yZWdyb3VuZCwgaW5zdGFsbAorICAgICAg aW5mZXJpb3IncyB0ZXJtaW5hbCBtb2Rlcy4gICovCisgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3Rl cm1pbmFsX2luZmVyaW9yKSAoJmN1cnJlbnRfdGFyZ2V0KTsKKysgIHRlcm1pbmFsX3N0YXRlID0g dGVybWluYWxfaXNfaW5mZXJpb3I7CisrfQorKworKy8qIFNlZSB0YXJnZXQuaC4gICovCisrCisr dm9pZAorK3RhcmdldF90ZXJtaW5hbF9vdXJzICh2b2lkKQorK3sKKysgIGlmICh0ZXJtaW5hbF9z dGF0ZSA9PSB0ZXJtaW5hbF9pc19vdXJzKQorKyAgICByZXR1cm47CisrCisrICAoKmN1cnJlbnRf dGFyZ2V0LnRvX3Rlcm1pbmFsX291cnMpICgmY3VycmVudF90YXJnZXQpOworKyAgdGVybWluYWxf c3RhdGUgPSB0ZXJtaW5hbF9pc19vdXJzOworK30KKysKKysvKiBTZWUgdGFyZ2V0LmguICAqLwor KworK3ZvaWQKKyt0YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0cHV0ICh2b2lkKQorK3sKKysg IGlmICh0ZXJtaW5hbF9zdGF0ZSAhPSB0ZXJtaW5hbF9pc19pbmZlcmlvcikKKysgICAgcmV0dXJu OworKyAgKCpjdXJyZW50X3RhcmdldC50b190ZXJtaW5hbF9vdXJzX2Zvcl9vdXRwdXQpICgmY3Vy cmVudF90YXJnZXQpOworKyAgdGVybWluYWxfc3RhdGUgPSB0ZXJtaW5hbF9pc19vdXJzX2Zvcl9v dXRwdXQ7CisgfQorIAorIHN0YXRpYyB2b2lkCistLS0gYS9nZGIvdGFyZ2V0LmgKKysrKyBiL2dk Yi90YXJnZXQuaAorQEAgLTEzNTksMzEgKzEzNTksMjUgQEAgZXh0ZXJuIGludCB0YXJnZXRfcmVt b3ZlX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIC8qIEluaXRpYWxpemUg dGhlIHRlcm1pbmFsIHNldHRpbmdzIHdlIHJlY29yZCBmb3IgdGhlIGluZmVyaW9yLAorICAgIGJl Zm9yZSB3ZSBhY3R1YWxseSBydW4gdGhlIGluZmVyaW9yLiAgKi8KKyAKKy0jZGVmaW5lIHRhcmdl dF90ZXJtaW5hbF9pbml0KCkgXAorLSAgICAgKCpjdXJyZW50X3RhcmdldC50b190ZXJtaW5hbF9p bml0KSAoJmN1cnJlbnRfdGFyZ2V0KQorK2V4dGVybiB2b2lkIHRhcmdldF90ZXJtaW5hbF9pbml0 ICh2b2lkKTsKKyAKKyAvKiBQdXQgdGhlIGluZmVyaW9yJ3MgdGVybWluYWwgc2V0dGluZ3MgaW50 byBlZmZlY3QuCisgICAgVGhpcyBpcyBwcmVwYXJhdGlvbiBmb3Igc3RhcnRpbmcgb3IgcmVzdW1p bmcgdGhlIGluZmVyaW9yLiAgKi8KKyAKKyBleHRlcm4gdm9pZCB0YXJnZXRfdGVybWluYWxfaW5m ZXJpb3IgKHZvaWQpOworIAorLS8qIFB1dCBzb21lIG9mIG91ciB0ZXJtaW5hbCBzZXR0aW5ncyBp bnRvIGVmZmVjdCwKKy0gICBlbm91Z2ggdG8gZ2V0IHByb3BlciByZXN1bHRzIGZyb20gb3VyIG91 dHB1dCwKKy0gICBidXQgZG8gbm90IGNoYW5nZSBpbnRvIG9yIG91dCBvZiBSQVcgbW9kZQorLSAg IHNvIHRoYXQgbm8gaW5wdXQgaXMgZGlzY2FyZGVkLgorKy8qIFB1dCBzb21lIG9mIG91ciB0ZXJt aW5hbCBzZXR0aW5ncyBpbnRvIGVmZmVjdCwgZW5vdWdoIHRvIGdldCBwcm9wZXIKKysgICByZXN1 bHRzIGZyb20gb3VyIG91dHB1dCwgYnV0IGRvIG5vdCBjaGFuZ2UgaW50byBvciBvdXQgb2YgUkFX IG1vZGUKKysgICBzbyB0aGF0IG5vIGlucHV0IGlzIGRpc2NhcmRlZC4gIFRoaXMgaXMgYSBuby1v cCBpZiB0ZXJtaW5hbF9vdXJzCisrICAgd2FzIG1vc3QgcmVjZW50bHkgY2FsbGVkLiAgKi8KKyAK Ky0gICBBZnRlciBkb2luZyB0aGlzLCBlaXRoZXIgdGVybWluYWxfb3VycyBvciB0ZXJtaW5hbF9p bmZlcmlvcgorLSAgIHNob3VsZCBiZSBjYWxsZWQgdG8gZ2V0IGJhY2sgdG8gYSBub3JtYWwgc3Rh dGUgb2YgYWZmYWlycy4gICovCistCistI2RlZmluZSB0YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jf b3V0cHV0KCkgXAorLSAgICAgKCpjdXJyZW50X3RhcmdldC50b190ZXJtaW5hbF9vdXJzX2Zvcl9v dXRwdXQpICgmY3VycmVudF90YXJnZXQpCisrZXh0ZXJuIHZvaWQgdGFyZ2V0X3Rlcm1pbmFsX291 cnNfZm9yX291dHB1dCAodm9pZCk7CisgCisgLyogUHV0IG91ciB0ZXJtaW5hbCBzZXR0aW5ncyBp bnRvIGVmZmVjdC4KKyAgICBGaXJzdCByZWNvcmQgdGhlIGluZmVyaW9yJ3MgdGVybWluYWwgc2V0 dGluZ3MKKyAgICBzbyB0aGV5IGNhbiBiZSByZXN0b3JlZCBwcm9wZXJseSBsYXRlci4gICovCisg CistI2RlZmluZSB0YXJnZXRfdGVybWluYWxfb3VycygpIFwKKy0gICAgICgqY3VycmVudF90YXJn ZXQudG9fdGVybWluYWxfb3VycykgKCZjdXJyZW50X3RhcmdldCkKKytleHRlcm4gdm9pZCB0YXJn ZXRfdGVybWluYWxfb3VycyAodm9pZCk7CisgCisgLyogU2F2ZSBvdXIgdGVybWluYWwgc2V0dGlu Z3MuCisgICAgVGhpcyBpcyBjYWxsZWQgZnJvbSBUVUkgYWZ0ZXIgZW50ZXJpbmcgb3IgbGVhdmlu ZyB0aGUgY3Vyc2VzCistLS0gYS9nZGIvd2luZG93cy1uYXQuYworKysrIGIvZ2RiL3dpbmRvd3Mt bmF0LmMKK0BAIC0xNzQ0LDcgKzE3NDQsNyBAQCBkb19pbml0aWFsX3dpbmRvd3Nfc3R1ZmYgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsIERXT1JEIHBpZCwgaW50IGF0dGFjaGluZykKKyAgICAgIGN1 cnJlbnQgdGhyZWFkIHVudGlsIHdlIHJlcG9ydCBhbiBldmVudCBvdXQgb2Ygd2luZG93c193YWl0 LiAgKi8KKyAgIGluZmVyaW9yX3B0aWQgPSBwaWRfdG9fcHRpZCAocGlkKTsKKyAKKy0gIGNoaWxk X3Rlcm1pbmFsX2luaXRfd2l0aF9wZ3JwIChwaWQpOworKyAgdGFyZ2V0X3Rlcm1pbmFsX2luaXQg KCk7CisgICB0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7CisgCisgICB3aW5kb3dzX2luaXRp YWxpemF0aW9uX2RvbmUgPSAwOworLS0gCisxLjkuMworCitGcm9tIDA0ZjA1MTU3MDJhNmU1NzEx ZDcxMjAzZmNjMGVhNDg4MTYxYmEwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQ ZWRybyBBbHZlcyA8cGFsdmVzQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDE3IE9jdCAyMDE0IDEz OjMxOjI1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMzMvMzddIFBSIGdkYi8xNzQ3MjogV2l0aCBh bm5vdGF0aW9ucywgaW5wdXQgd2hpbGUgZXhlY3V0aW5nCisgaW4gdGhlIGZvcmVncm91bmQgY3Jh c2hlcyByZWFkbGluZS9HREIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKwor SmFuIGNhdWdodCBhbiBpbnRlcm1pdHRlbnQgR0RCIGNyYXNoIHdpdGggdGhlIGFubm90YTEuZXhw IHRlc3Q6CisKKyBTdGFydGluZyBwcm9ncmFtOiAuLi4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9h bm5vdGExIF5NCisgWy4uLl0KKyBGQUlMOiBnZGIuYmFzZS9hbm5vdGExLmV4cDogcnVuIHVudGls IG1haW4gYnJlYWtwb2ludCAodGltZW91dCkKKyBbLi4uXQorIHJlYWRsaW5lOiByZWFkbGluZV9j YWxsYmFja19yZWFkX2NoYXIoKSBjYWxsZWQgd2l0aCBubyBoYW5kbGVyIV5NCisgRVJST1I6IFBy b2Nlc3Mgbm8gbG9uZ2VyIGV4aXN0cworCitBbGwgd2UgbmVlZCB0byBpcyB0byBjb250aW51ZSB0 aGUgaW5mZXJpb3IgaW4gdGhlIGZvcmVncm91bmQsIGFuZCB0eXBlCithIGNvbW1hbmQgd2hpbGUg dGhlIGluZmVyaW9yIGlzIHJ1bm5pbmcuICBFLmcuOgorCisgKGdkYikgc2V0IGFubm90YXRlIDIK KworIOKWkuKWknByZS1wcm9tcHQKKyAoZ2RiKQorIOKWkuKWknByb21wdAorIGMKKworIOKWkuKW knBvc3QtcHJvbXB0CisgQ29udGludWluZy4KKworIOKWkuKWknN0YXJ0aW5nCisKKyDilpLilpJm cmFtZXMtaW52YWxpZAorCisgKmluZmVyaW9yIGlzIHJ1bm5pbmcgbm93KgorCisgcCAxPHJldD4K KworIHJlYWRsaW5lOiByZWFkbGluZV9jYWxsYmFja19yZWFkX2NoYXIoKSBjYWxsZWQgd2l0aCBu byBoYW5kbGVyIQorIEFib3J0ZWQgKGNvcmUgZHVtcGVkKQorICQKKworCitXaGVuIHdlIHJ1biBh IGZvcmVncm91bmQgZXhlY3V0aW9uIGNvbW1hbmQgd2UgY2FsbAordGFyZ2V0X3Rlcm1pbmFsX2lu ZmVyaW9yIHRvIHN0b3AgR0RCIGZyb20gcHJvY2Vzc2luZyBpbnB1dCwgYW5kIHRvIHB1dAordGhl IGluZmVyaW9yJ3MgdGVybWluYWwgc2V0dGluZ3MgaW4gZWZmZWN0LiAgVGhlbiB3ZSB0ZWxsIHJl YWRsaW5lIHRvCitoaWRlIHRoZSBwcm9tcHQgd2l0aCBkaXNwbGF5X2dkYl9wcm9tcHQsIHdoaWNo IGNsZWFycyByZWFkbGluZSdzIGlucHV0CitjYWxsYmFjayB0b28uICBXaGVuIHRoZSB0YXJnZXQg c3RvcHMsIHdlIGNhbGwgdGFyZ2V0X3Rlcm1pbmFsX291cnMsCit3aGljaCByZS1pbnN0YWxscyBz dGRpbiBpbiB0aGUgZXZlbnQgbG9vcCwgYW5kIHRoZW4gd2UgcmVkaXNwbGF5IHRoZQorcHJvbXB0 LCByZWluc3RhbGxpbmcgdGhlIHJlYWRsaW5lIGNhbGxiYWNrcy4KKworSG93ZXZlciwgd2hlbiBh bm5vdGF0aW9ucyBhcmUgaW4gZWZmZWN0LCB0aGUgImZyYW1lcy1pbnZhbGlkIgorYW5ub3RhdGlv biBjb2RlIGNhbGxzIHRhcmdldF90ZXJtaW5hbF9vdXJzIGFmdGVyICdyZXN1bWUnIGhhZCBhbHJl YWR5CitjYWxsZWQgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yOgorCisgKHRvcC1nZGIpIGJ0Cisg IzAgIDB4MDAwMDAwMDAwMDU2YjgyZiBpbiBhbm5vdGF0ZV9mcmFtZXNfaW52YWxpZCAoKSBhdCBn ZGIvYW5ub3RhdGUuYzoyMTkKKyAjMSAgMHgwMDAwMDAwMDAwNzJlNmNjIGluIHJlaW5pdF9mcmFt ZV9jYWNoZSAoKSBhdCBnZGIvZnJhbWUuYzoxNzA1CisgIzIgIDB4MDAwMDAwMDAwMDU5NGJiOSBp biByZWdpc3RlcnNfY2hhbmdlZF9wdGlkIChwdGlkPS4uLikgYXQgZ2RiL3JlZ2NhY2hlLmM6NjEy CisgIzMgIDB4MDAwMDAwMDAwMDY0Y2NhMSBpbiB0YXJnZXRfcmVzdW1lIChwdGlkPS4uLiwgc3Rl cD0xLCBzaWduYWw9R0RCX1NJR05BTF8wKSBhdCBnZGIvdGFyZ2V0LmM6MjEzNgorICM0ICAweDAw MDAwMDAwMDA1ZjU3YWYgaW4gcmVzdW1lIChzdGVwPTEsIHNpZz1HREJfU0lHTkFMXzApIGF0IGdk Yi9pbmZydW4uYzoyMjYzCisgIzUgIDB4MDAwMDAwMDAwMDVmNjA1MSBpbiBwcm9jZWVkIChhZGRy PTE4NDQ2NzQ0MDczNzA5NTUxNjE1LCBzaWdnbmFsPUdEQl9TSUdOQUxfREVGQVVMVCwgc3RlcD0x KSBhdCBnZGIvaW5mcnVuLmM6MjYxMworCitBbmQgdGhlbiBvbmNlIHdlIGhpZGUgdGhlIHByb21w dCBhbmQgcmVtb3ZlIHJlYWRsaW5lJ3MgaW5wdXQgaGFuZGxlcgorY2FsbGJhY2ssIHdlJ3JlIGlu IGEgYmFkIHN0YXRlLiAgV2UgZW5kIHVwIHdpdGggdGhlIHRhcmdldCBydW5uaW5nCitzdXBwb3Nl ZGx5IGluIHRoZSBmb3JlZ3JvdW5kLCBidXQgd2l0aCBzdGRpbiBzdGlsbCBpbnN0YWxsZWQgb24g dGhlCitldmVudCBsb29wLiAgQW55IGlucHV0IHRoZW4gY2FsbHMgaW50byByZWFkbGluZSwgd2hp Y2ggYWJvcnRzIGJlY2F1c2UKK25vIHJsX2xpbmVmdW5jIGNhbGxiYWNrIGhhbmRsZXIgaXMgaW5z dGFsbGVkOgorCisgUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHQUJSVCwgQWJvcnRlZC4KKyAw eDAwMDAwMDNiMzZhMzU4NzcgaW4gX19HSV9yYWlzZSAoc2lnPXNpZ0BlbnRyeT02KSBhdCAuLi9u cHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3JhaXNlLmM6NTYKKyA1NiAgICAgICAgcmV0dXJu IElOTElORV9TWVNDQUxMICh0Z2tpbGwsIDMsIHBpZCwgc2VsZnRpZCwgc2lnKTsKKworICh0b3At Z2RiKSBidAorICMwICAweDAwMDAwMDNiMzZhMzU4NzcgaW4gX19HSV9yYWlzZSAoc2lnPXNpZ0Bl bnRyeT02KSBhdCAuLi9ucHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3JhaXNlLmM6NTYKKyAj MSAgMHgwMDAwMDAzYjM2YTM2ZjY4IGluIF9fR0lfYWJvcnQgKCkgYXQgYWJvcnQuYzo4OQorIER1 cmluZyBzeW1ib2wgcmVhZGluZywgZGVidWcgaW5mbyBnaXZlcyBzb3VyY2UgOSBpbmNsdWRlZCBm cm9tIGZpbGUgYXQgemVybyBsaW5lIDAuCisgRHVyaW5nIHN5bWJvbCByZWFkaW5nLCBkZWJ1ZyBp bmZvIGdpdmVzIGNvbW1hbmQtbGluZSBtYWNybyBkZWZpbml0aW9uIHdpdGggbm9uLXplcm8gbGlu ZSAxOTogX1NURENfUFJFREVGX0ggMS4KKyAjMiAgMHgwMDAwMDAwMDAwNzg0YTI1IGluIHJsX2Nh bGxiYWNrX3JlYWRfY2hhciAoKSBhdCBzcmMvcmVhZGxpbmUvY2FsbGJhY2suYzoxMTYKKyAjMyAg MHgwMDAwMDAwMDAwNjE5MTExIGluIHJsX2NhbGxiYWNrX3JlYWRfY2hhcl93cmFwcGVyIChjbGll bnRfZGF0YT0weDApIGF0IHNyYy9nZGIvZXZlbnQtdG9wLmM6MTY3CisgIzQgIDB4MDAwMDAwMDAw MDYxOTRlNyBpbiBzdGRpbl9ldmVudF9oYW5kbGVyIChlcnJvcj0wLCBjbGllbnRfZGF0YT0weDAp IGF0IHNyYy9nZGIvZXZlbnQtdG9wLmM6MzczCisgIzUgIDB4MDAwMDAwMDAwMDYxODBkYSBpbiBo YW5kbGVfZmlsZV9ldmVudCAoZGF0YT0uLi4pIGF0IHNyYy9nZGIvZXZlbnQtbG9vcC5jOjc2Mwor ICM2ICAweDAwMDAwMDAwMDA2MTc1YzEgaW4gcHJvY2Vzc19ldmVudCAoKSBhdCBzcmMvZ2RiL2V2 ZW50LWxvb3AuYzozNDAKKyAjNyAgMHgwMDAwMDAwMDAwNjE3Njg4IGluIGdkYl9kb19vbmVfZXZl bnQgKCkgYXQgc3JjL2dkYi9ldmVudC1sb29wLmM6NDA0CisgIzggIDB4MDAwMDAwMDAwMDYxNzZk OCBpbiBzdGFydF9ldmVudF9sb29wICgpIGF0IHNyYy9nZGIvZXZlbnQtbG9vcC5jOjQyOQorICM5 ICAweDAwMDAwMDAwMDA2MTkxNDMgaW4gY2xpX2NvbW1hbmRfbG9vcCAoZGF0YT0weDApIGF0IHNy Yy9nZGIvZXZlbnQtdG9wLmM6MTgyCisgIzEwIDB4MDAwMDAwMDAwMDYwZjRjOCBpbiBjdXJyZW50 X2ludGVycF9jb21tYW5kX2xvb3AgKCkgYXQgc3JjL2dkYi9pbnRlcnBzLmM6MzE4CisgIzExIDB4 MDAwMDAwMDAwMDYxMDY5MSBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AgKGRhdGE9MHgwKSBhdCBz cmMvZ2RiL21haW4uYzozMjMKKyAjMTIgMHgwMDAwMDAwMDAwNjBjMzg1IGluIGNhdGNoX2Vycm9y cyAoZnVuYz0weDYxMDY3NiA8Y2FwdHVyZWRfY29tbWFuZF9sb29wPiwgZnVuY19hcmdzPTB4MCwg ZXJyc3RyaW5nPTB4OTAwMjQxICIiLCBtYXNrPVJFVFVSTl9NQVNLX0FMTCkKKyAgICAgYXQgc3Jj L2dkYi9leGNlcHRpb25zLmM6MjM3CisgIzEzIDB4MDAwMDAwMDAwMDYxMWI4ZiBpbiBjYXB0dXJl ZF9tYWluIChkYXRhPTB4N2ZmZmZmZmZkN2IwKSBhdCBzcmMvZ2RiL21haW4uYzoxMTUxCisgIzE0 IDB4MDAwMDAwMDAwMDYwYzM4NSBpbiBjYXRjaF9lcnJvcnMgKGZ1bmM9MHg2MTBhOGUgPGNhcHR1 cmVkX21haW4+LCBmdW5jX2FyZ3M9MHg3ZmZmZmZmZmQ3YjAsIGVycnN0cmluZz0weDkwMDI0MSAi IiwgbWFzaz1SRVRVUk5fTUFTS19BTEwpCisgICAgIGF0IHNyYy9nZGIvZXhjZXB0aW9ucy5jOjIz NworICMxNSAweDAwMDAwMDAwMDA2MTFiYjggaW4gZ2RiX21haW4gKGFyZ3M9MHg3ZmZmZmZmZmQ3 YjApIGF0IHNyYy9nZGIvbWFpbi5jOjExNTkKKyAjMTYgMHgwMDAwMDAwMDAwNDVlZjU3IGluIG1h aW4gKGFyZ2M9MywgYXJndj0weDdmZmZmZmZmZDhiOCkgYXQgc3JjL2dkYi9nZGIuYzozMgorCitU aGUgZml4IGlzIHRvIG1ha2UgdGhlIGFubm90YXRpb24gY29kZSBjYWxsIHRhcmdldF90ZXJtaW5h bF9pbmZlcmlvcgorYWdhaW4gYWZ0ZXIgcHJpbnRpbmcsIGlmIHRoZSBpbmZlcmlvcidzIHNldHRp bmdzIHdlcmUgaW4gZWZmZWN0LgorCitXaGlsZSBhdCBpdCwgd2hlbiB3ZSdyZSBkb2luZyBvdXRw dXQgb25seSwgaW5zdGVhZCBvZgordGFyZ2V0X3Rlcm1pbmFsX291cnMsIHdlIHNob3VsZCBjYWxs IHRhcmdldF90ZXJtaW5hbF9vdXJzX2Zvcl9vdXRwdXQuCitUaGUgbGF0dGVyIGRvZXNuJ3QgYWN0 dWFsbHkgcmVtb3ZlIHN0ZGluIGZyb20gdGhlIGV2ZW50IGxvb3AsIGFuZCBhbHNvCitsZWF2ZXMg U0lHSU5UIGZvcndhcmRlZCB0byB0aGUgdGFyZ2V0LgorCitOZXcgdGVzdCBpbmNsdWRlZC4KKwor VGVzdGVkIG9uIHg4Nl82NCBGZWRvcmEgMjAsIG5hdGl2ZSBhbmQgZ2Ric2VydmVyLgorCitnZGIv CisyMDE0LTEwLTE3ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorCisJUFIgZ2Ri LzE3NDcyCisJKiBhbm5vdGF0ZS5jIChhbm5vdGF0ZV9icmVha3BvaW50c19pbnZhbGlkKTogVXNl CisJdGFyZ2V0X3Rlcm1pbmFsX291cl9mb3Jfb3V0cHV0IGluc3RlYWQgb2YgdGFyZ2V0X3Rlcm1p bmFsX291cnMuCisJR2l2ZSBiYWNrIHRoZSB0ZXJtaW5hbCB0byB0aGUgdGFyZ2V0LgorCShhbm5v dGF0ZV9mcmFtZXNfaW52YWxpZCk6IExpa2V3aXNlLgorCitnZGIvdGVzdHN1aXRlLworMjAxNC0x MC0xNyAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKworCVBSIGdkYi8xNzQ3Mgor CSogZ2RiLmJhc2UvYW5ub3RhLWlucHV0LXdoaWxlLXJ1bm5pbmcuYzogTmV3IGZpbGUuCisJKiBn ZGIuYmFzZS9hbm5vdGEtaW5wdXQtd2hpbGUtcnVubmluZy5leHA6IE5ldyBmaWxlLgorLS0tCisg Z2RiL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgg KysKKyBnZGIvYW5ub3RhdGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyMiArKystCisgZ2RiL3RhcmdldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDggKysKKyBnZGIvdGFyZ2V0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNSArCisgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDYgKworIC4uLi9nZGIuYmFzZS9hbm5vdGEtaW5wdXQtd2hpbGUt cnVubmluZy5jICAgICAgICAgIHwgIDI1ICsrKysKKyAuLi4vZ2RiLmJhc2UvYW5ub3RhLWlucHV0 LXdoaWxlLXJ1bm5pbmcuZXhwICAgICAgICB8IDEzMCArKysrKysrKysrKysrKysrKysrKysKKyA3 IGZpbGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YS1pbnB1dC13aGlsZS1y dW5uaW5nLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5v dGEtaW5wdXQtd2hpbGUtcnVubmluZy5leHAKKworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIv Z2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxMyBAQAorIDIwMTQtMTAtMTcgIFBlZHJvIEFsdmVz ICA8cGFsdmVzQHJlZGhhdC5jb20+CisgCisrCVBSIGdkYi8xNzQ3MgorKwkqIGFubm90YXRlLmMg KGFubm90YXRlX2JyZWFrcG9pbnRzX2ludmFsaWQpOiBVc2UKKysJdGFyZ2V0X3Rlcm1pbmFsX291 cl9mb3Jfb3V0cHV0IGluc3RlYWQgb2YgdGFyZ2V0X3Rlcm1pbmFsX291cnMuCisrCUdpdmUgYmFj ayB0aGUgdGVybWluYWwgdG8gdGhlIHRhcmdldC4KKysJKGFubm90YXRlX2ZyYW1lc19pbnZhbGlk KTogTGlrZXdpc2UuCisrCisrMjAxNC0xMC0xNyAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0 LmNvbT4KKysKKyAJKiB0YXJnZXQuYyAoZW51bSB0ZXJtaW5hbF9zdGF0ZSk6IE5ldyBlbnVtLgor IAkodGVybWluYWxfc3RhdGUpOiBOZXcgZ2xvYmFsLgorIAkodGFyZ2V0X3Rlcm1pbmFsX2luaXQp OiBOZXcgZnVuY3Rpb24uCistLS0gYS9nZGIvYW5ub3RhdGUuYworKysrIGIvZ2RiL2Fubm90YXRl LmMKK0BAIC03Miw4ICs3MiwxNyBAQCBhbm5vdGF0ZV9icmVha3BvaW50c19pbnZhbGlkICh2b2lk KQorICAgICAgICYmICghYnJlYWtwb2ludHNfaW52YWxpZF9lbWl0dGVkCisgCSAgfHwgYXN5bmNf YmFja2dyb3VuZF9leGVjdXRpb25fcCAoKSkpCisgICAgIHsKKy0gICAgICB0YXJnZXRfdGVybWlu YWxfb3VycyAoKTsKKysgICAgICAvKiBJZiB0aGUgaW5mZXJpb3Igb3ducyB0aGUgdGVybWluYWwg KGUuZy4sIHdlJ3JlIHJlc3VtaW5nKSwKKysJIG1ha2Ugc3VyZSB0byBsZWF2ZSB3aXRoIHRoZSBp bmZlcmlvciBzdGlsbCBvd25pbmcgaXQuICAqLworKyAgICAgIGludCB3YXNfaW5mZXJpb3IgPSB0 YXJnZXRfdGVybWluYWxfaXNfaW5mZXJpb3IgKCk7CisrCisrICAgICAgdGFyZ2V0X3Rlcm1pbmFs X291cnNfZm9yX291dHB1dCAoKTsKKysKKyAgICAgICBwcmludGZfdW5maWx0ZXJlZCAoKCJcblww MzJcMDMyYnJlYWtwb2ludHMtaW52YWxpZFxuIikpOworKworKyAgICAgIGlmICh3YXNfaW5mZXJp b3IpCisrCXRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKysKKyAgICAgICBicmVha3BvaW50 c19pbnZhbGlkX2VtaXR0ZWQgPSAxOworICAgICB9CisgfQorQEAgLTIxMCw4ICsyMTksMTcgQEAg YW5ub3RhdGVfZnJhbWVzX2ludmFsaWQgKHZvaWQpCisgICAgICAgJiYgKCFmcmFtZXNfaW52YWxp ZF9lbWl0dGVkCisgCSAgfHwgYXN5bmNfYmFja2dyb3VuZF9leGVjdXRpb25fcCAoKSkpCisgICAg IHsKKy0gICAgICB0YXJnZXRfdGVybWluYWxfb3VycyAoKTsKKysgICAgICAvKiBJZiB0aGUgaW5m ZXJpb3Igb3ducyB0aGUgdGVybWluYWwgKGUuZy4sIHdlJ3JlIHJlc3VtaW5nKSwKKysJIG1ha2Ug c3VyZSB0byBsZWF2ZSB3aXRoIHRoZSBpbmZlcmlvciBzdGlsbCBvd25pbmcgaXQuICAqLworKyAg ICAgIGludCB3YXNfaW5mZXJpb3IgPSB0YXJnZXRfdGVybWluYWxfaXNfaW5mZXJpb3IgKCk7Cisr CisrICAgICAgdGFyZ2V0X3Rlcm1pbmFsX291cnNfZm9yX291dHB1dCAoKTsKKysKKyAgICAgICBw cmludGZfdW5maWx0ZXJlZCAoKCJcblwwMzJcMDMyZnJhbWVzLWludmFsaWRcbiIpKTsKKysKKysg ICAgICBpZiAod2FzX2luZmVyaW9yKQorKwl0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7Cisr CisgICAgICAgZnJhbWVzX2ludmFsaWRfZW1pdHRlZCA9IDE7CisgICAgIH0KKyB9CistLS0gYS9n ZGIvdGFyZ2V0LmMKKysrKyBiL2dkYi90YXJnZXQuYworQEAgLTUxMSw2ICs1MTEsMTQgQEAgdGFy Z2V0X3Rlcm1pbmFsX2luaXQgKHZvaWQpCisgCisgLyogU2VlIHRhcmdldC5oLiAgKi8KKyAKKytp bnQKKyt0YXJnZXRfdGVybWluYWxfaXNfaW5mZXJpb3IgKHZvaWQpCisreworKyAgcmV0dXJuICh0 ZXJtaW5hbF9zdGF0ZSA9PSB0ZXJtaW5hbF9pc19pbmZlcmlvcik7CisrfQorKworKy8qIFNlZSB0 YXJnZXQuaC4gICovCisrCisgdm9pZAorIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAodm9pZCkK KyB7CistLS0gYS9nZGIvdGFyZ2V0LmgKKysrKyBiL2dkYi90YXJnZXQuaAorQEAgLTEzNTYsNiAr MTM1NiwxMSBAQCBleHRlcm4gaW50IHRhcmdldF9pbnNlcnRfYnJlYWtwb2ludCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisgZXh0ZXJuIGludCB0YXJnZXRfcmVtb3ZlX2JyZWFrcG9pbnQgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIAkJCQkgICAgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAq YnBfdGd0KTsKKyAKKysvKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRlcm1pbmFsIHNldHRpbmdzIG9m IHRoZSBpbmZlcmlvciBhcmUgaW4KKysgICBlZmZlY3QuICAqLworKworK2V4dGVybiBpbnQgdGFy Z2V0X3Rlcm1pbmFsX2lzX2luZmVyaW9yICh2b2lkKTsKKysKKyAvKiBJbml0aWFsaXplIHRoZSB0 ZXJtaW5hbCBzZXR0aW5ncyB3ZSByZWNvcmQgZm9yIHRoZSBpbmZlcmlvciwKKyAgICBiZWZvcmUg d2UgYWN0dWFsbHkgcnVuIHRoZSBpbmZlcmlvci4gICovCisgCisjIyMgYS9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDMgKzEsOSBA QAorKzIwMTQtMTAtMTcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisrCisrCVBS IGdkYi8xNzQ3MgorKwkqIGdkYi5iYXNlL2Fubm90YS1pbnB1dC13aGlsZS1ydW5uaW5nLmM6IE5l dyBmaWxlLgorKwkqIGdkYi5iYXNlL2Fubm90YS1pbnB1dC13aGlsZS1ydW5uaW5nLmV4cDogTmV3 IGZpbGUuCisrCisgMjAxNC0wOS0xMSAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4K KyAKKyAJUFIgZ2RiLzE3MzQ3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2Fubm90YS1pbnB1dC13aGlsZS1ydW5uaW5nLmMKK0BAIC0wLDAgKzEsMjUgQEAKKysv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAg IENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8dW5pc3Rk Lmg+CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBzbGVlcCAoNSk7CisrICByZXR1cm4g MDsgLyogc2V0IGJyZWFrIGhlcmUgKi8KKyt9CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2Fubm90YS1pbnB1dC13aGlsZS1ydW5uaW5nLmV4cAorQEAgLTAsMCAr MSwxMzAgQEAKKysjIENvcHlyaWdodCAxOTk5LTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCB0aGF0 IGFubm90YXRpb25zIHN1cHBvcnQgZG9lc24ndCBsZWF2ZSBHREIncyB0ZXJtaW5hbCBzZXR0aW5n cworKyMgaW50byBlZmZlY3Qgd2hlbiB3ZSBydW4gYSBmb3JlZ3JvdW5kIGNvbW1hbmQuCisrCisr aWYgW2lzX3JlbW90ZSB0YXJnZXRdIHRoZW4geworKyAgICAjIFdlIGNhbm5vdCB1c2UgcnVudG9f bWFpbiBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbnQgcHJvbXB0IHdlIGdldAorKyAgICAjIHdoZW4g dXNpbmcgYW5ub3RhdGlvbiBsZXZlbCAyLgorKyAgICByZXR1cm4gMAorK30KKysKKytzdGFuZGFy ZF90ZXN0ZmlsZQorKworK2lmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBh cmUiICR0ZXN0ZmlsZSAkc3JjZmlsZSBkZWJ1Z10gPT0gLTF9IHsKKysgICAgcmV0dXJuIC0xCisr fQorKworKyMgQnJlYWsgYXQgbWFpbgorKworK2dkYl90ZXN0ICJicmVhayBtYWluIiBcCisrICAg ICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZS4qXFwuIiBcCisrICAgICJicmVha3Bv aW50IG1haW4iCisrCisrIyBOT1RFOiB0aGlzIHByb21wdCBpcyBPSyBvbmx5IHdoZW4gdGhlIGFu bm90YXRpb24gbGV2ZWwgaXMgPiAxCisrIyBOT1RFOiBXaGVuIHRoaXMgcHJvbXB0IGlzIGluIHVz ZSB0aGUgZ2RiX3Rlc3QgcHJvY2VkdXJlIGNhbm5vdCBiZQorKyMgdXNlZCBiZWNhdXNlIGl0IGFz c3VtZXMgdGhhdCB0aGUgbGFzdCBjaGFyIGFmdGVyIHRoZSBnZGJfcHJvbXB0IGlzIGEKKysjIHdo aXRlIHNwYWNlLiAgVGhpcyBpcyBub3QgdHJ1ZSB3aXRoIHRoaXMgYW5ub3RhdGVkIHByb21wdC4g IFNvIHdlCisrIyBtdXN0IHVzZSB0aGUgZ2RiX2Fubm90YV90ZXN0IHJlcGxhY2VtZW50IGJlbG93 LCBvcgorKyMgZ2RiX3Rlc3RfbXVsdGlwbGUuCisrCisrc2V0IG9sZF9nZGJfcHJvbXB0ICRnZGJf cHJvbXB0Cisrc2V0IGdkYl9wcm9tcHQgIlxyXG5cMDMyXDAzMnByZS1wcm9tcHRcclxuJGdkYl9w cm9tcHQgXHJcblwwMzJcMDMycHJvbXB0XHJcbiIKKysKKysjIExpa2UgZ2RiX3Rlc3QsIGJ1dCBj b3BlIHdpdGggdGhlIGFubm90YXRpb24gcHJvbXB0LgorK3Byb2MgZ2RiX2Fubm90YV90ZXN0IHtj b21tYW5kIHBhdHRlcm4gbWVzc2FnZX0geworKyAgICBnbG9iYWwgZ2RiX3Byb21wdAorKworKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAkY29tbWFuZCAkbWVzc2FnZSB7CisrCS1yZSAiJHBhdHRlcm4k Z2RiX3Byb21wdCQiIHsKKysJICAgIHBhc3MgIiRtZXNzYWdlIgorKwl9CisrCS1yZSAiJGdkYl9w cm9tcHQkIiB7CisrCSAgICBmYWlsICIkbWVzc2FnZSIKKysJfQorKyAgICB9CisrfQorKworKyMg U2V0IHRoZSBhbm5vdGF0aW9uIGxldmVsIHRvIDIuCisrCisrc2V0IHRlc3QgImFubm90YXRpb24g c2V0IGF0IGxldmVsIDIiCisrZ2RiX2Fubm90YV90ZXN0ICJzZXQgYW5ub3RhdGUgMiIgIi4qIiAi YW5ub3RhdGlvbiBzZXQgYXQgbGV2ZWwgMiIKKysKKysjIFJ1biB0byBtYWluLgorKworK2dkYl9h bm5vdGFfdGVzdCAicnVuIiBcCisrICAgICJcclxuXDAzMlwwMzJwb3N0LXByb21wdC4qXHJcblxy XG5cMDMyXDAzMnN0b3BwZWQuKiIgXAorKyAgICAicnVuIHVudGlsIG1haW4gYnJlYWtwb2ludCIK KysKKytzZXQgdGVzdCAiZGVsZXRlIGJyZWFrcG9pbnRzIgorK2dkYl90ZXN0X211bHRpcGxlICJk ZWxldGUiICR0ZXN0IHsKKysgICAgLXJlICJEZWxldGUgYWxsIGJyZWFrcG9pbnRzLiAueSBvciBu LiIgeworKwlzZW5kX2dkYiAieVxuIgorKwlleHBfY29udGludWUKKysgICAgfQorKyAgICAtcmUg IiRnZGJfcHJvbXB0JCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9CisrCisrIyBTZXQgdGhl IHRhcmdldCBydW5uaW5nLCBhbmQgdGhlbiB0eXBlIHNvbWV0aGluZy4gIEdEQiB1c2VkIHRvIGhh dmUgYQorKyMgYnVnIHdoZXJlIGl0J2QgYmUgYWNjZXB0aW5nIGlucHV0IGV2ZW4gdGhvdWdoIHRo ZSB0YXJnZXQgd2FzCisrIyBzdXBwb3NlZGx5IHJlc3VtZWQgaW4gdGhlIGZvcmVncm91bmQuICBU aGlzIHVsdGltYXRlbHkgcmVzdWx0ZWQgaW4KKysjIHJlYWRsaW5lIGFib3J0aW5nLgorKworK3Nl dCBsaW5lbnVtIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWsgaGVyZSJdCisrCisrZ2Ri X2Fubm90YV90ZXN0ICJicmVhayAkbGluZW51bSIgXAorKyAgICAiQnJlYWtwb2ludCAuKiRzcmNm aWxlLCBsaW5lIC4qIiBcCisrICAgICJicmVhayBhZnRlciBzbGVlcCIKKysKKysjIENvbnRpbnVl LCBhbmQgd2FpdCBhIGJpdCB0byBtYWtlIHN1cmUgdGhlIGluZmVyaW9yIHJlYWxseSBzdGFydHMK KysjIHJ1bm5pbmcuICBXYWl0IGxlc3MgdGhhbiBtdWNoIHRoZSBwcm9ncmFtIHNsZWVwcywgd2hp Y2ggaXMgNQorKyMgc2Vjb25kcywgdGhvdWdoLgorK3NldCBzYXdfY29udGludWluZyAwCisrc2V0 IHRlc3QgImNvbnRpbnVlIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAg LXRpbWVvdXQgMgorKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4iIHsKKysJc2V0IHNhd19jb250aW51 aW5nIDEKKysJZXhwX2NvbnRpbnVlCisrICAgIH0KKysgICAgdGltZW91dCB7CisrCWdkYl9hc3Nl cnQgJHNhd19jb250aW51aW5nICR0ZXN0CisrICAgIH0KKyt9CisrCisrIyBUeXBlIHNvbWV0aGlu Zy4KKytzZW5kX2dkYiAicHJpbnQgMVxuIgorKworKyMgUG9vciBidWdneSBHREIgd291bGQgY3Jh c2ggYmVmb3JlIHRoZSBicmVha3BvaW50IHdhcyBoaXQuCisrc2V0IHRlc3QgImJyZWFrcG9pbnQg aGl0IgorK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAgLXJlICJzdG9wcGVkXHJc biRnZGJfcHJvbXB0IiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKytzZXQgdGVzdCAi cHJpbnQgY29tbWFuZCByZXN1bHQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAg ICAtcmUgIlxyXG4xXHJcblxyXG5cMDMyXDAzMnZhbHVlLWhpc3RvcnktZW5kXHJcbiRnZGJfcHJv bXB0IiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKysjIFJlc3RvcmUgdGhlIG9yaWdp bmFsIHByb21wdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHRlc3RzdWl0ZS4KKysKKytzZXQgZ2RiX3By b21wdCAkb2xkX2dkYl9wcm9tcHQKKy0tIAorMS45LjMKKworRnJvbSBlMzc5NTFkYzEwZGE2OTQw ZWYzNTRmMDYyZmM0M2VlMDM2ODdjNTcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog UGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxNyBPY3QgMjAxNCAx MzozMToyNSArMDEwMAorU3ViamVjdDogW1BBVENIIDM0LzM3XSBQUiBnZGIvMTczMDA6IElucHV0 IGFmdGVyICJjIC1hIiBjcmFzaGVzIHJlYWRsaW5lL0dEQgorCitJZiBhbGwgdGhyZWFkcyBpbiB0 aGUgdGFyZ2V0IHdlcmUgYWxyZWFkeSBydW5uaW5nIHdoZW4gdGhlIHVzZXIgZG9lcworImMgLWEi LCBub3RoaW5nIHB1dHMgdGhlIGluZmVyaW9yJ3MgdGVybWluYWwgc2V0dGluZ3MgaW4gZWZmZWN0 IGFuZAorcmVtb3ZlcyBzdGRpbiBmcm9tIHRoZSBldmVudCBsb29wLCB3aGljaCB3ZSBtdXN0IHdo ZW4gcnVubmluZyBhCitmb3JlZ3JvdW5kIGNvbW1hbmQuICBUaGUgcmVzdWx0IGlzIHRoYXQgdXNl ciBpbnB1dCBhZnRlcndhcmRzIGNyYXNoZXMKK3JlYWRsaW5lL2dkYjoKKworIChnZGIpIHN0YXJ0 CisgVGVtcG9yYXJ5IGJyZWFrcG9pbnQgMSBhdCAweDQwMDVkNDogZmlsZSBjb250aW51ZS1hbGwt YWxyZWFkeS1ydW5uaW5nLmMsIGxpbmUgMjMuCisgU3RhcnRpbmcgcHJvZ3JhbTogY29udGludWUt YWxsLWFscmVhZHktcnVubmluZworCisgVGVtcG9yYXJ5IGJyZWFrcG9pbnQgMSwgbWFpbiAoKSBh dCBjb250aW51ZS1hbGwtYWxyZWFkeS1ydW5uaW5nLmM6MjMKKyAyMyAgICAgICAgc2xlZXAgKDEw KTsKKyAoZ2RiKSBjIC1hJgorIENvbnRpbnVpbmcuCisgKGdkYikgYyAtYQorIENvbnRpbnVpbmcu CisgcCAxCisgcmVhZGxpbmU6IHJlYWRsaW5lX2NhbGxiYWNrX3JlYWRfY2hhcigpIGNhbGxlZCB3 aXRoIG5vIGhhbmRsZXIhCisgQWJvcnRlZCAoY29yZSBkdW1wZWQpCisgJAorCitCYWNrdHJhY2U6 CisKKyBQcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdBQlJULCBBYm9ydGVkLgorIDB4MDAwMDAw M2IzNmEzNTg3NyBpbiBfX0dJX3JhaXNlIChzaWc9c2lnQGVudHJ5PTYpIGF0IC4uL25wdGwvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvcmFpc2UuYzo1NgorIDU2ICAgICAgICByZXR1cm4gSU5MSU5F X1NZU0NBTEwgKHRna2lsbCwgMywgcGlkLCBzZWxmdGlkLCBzaWcpOworICh0b3AtZ2RiKSBwIDEK KyAkMSA9IDEKKyAodG9wLWdkYikgYnQKKyAjMCAgMHgwMDAwMDAzYjM2YTM1ODc3IGluIF9fR0lf cmFpc2UgKHNpZz1zaWdAZW50cnk9NikgYXQgLi4vbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9yYWlzZS5jOjU2CisgIzEgIDB4MDAwMDAwM2IzNmEzNmY2OCBpbiBfX0dJX2Fib3J0ICgpIGF0 IGFib3J0LmM6ODkKKyAjMiAgMHgwMDAwMDAwMDAwNzg0YWE5IGluIHJsX2NhbGxiYWNrX3JlYWRf Y2hhciAoKSBhdCByZWFkbGluZS9jYWxsYmFjay5jOjExNgorICMzICAweDAwMDAwMDAwMDA2MTkx ODEgaW4gcmxfY2FsbGJhY2tfcmVhZF9jaGFyX3dyYXBwZXIgKGNsaWVudF9kYXRhPTB4MCkgYXQg Z2RiL2V2ZW50LXRvcC5jOjE2NworICM0ICAweDAwMDAwMDAwMDA2MTk1NTcgaW4gc3RkaW5fZXZl bnRfaGFuZGxlciAoZXJyb3I9MCwgY2xpZW50X2RhdGE9MHgwKSBhdCBnZGIvZXZlbnQtdG9wLmM6 MzczCisgIzUgIDB4MDAwMDAwMDAwMDYxODE0YSBpbiBoYW5kbGVfZmlsZV9ldmVudCAoZGF0YT0u Li4pIGF0IGdkYi9ldmVudC1sb29wLmM6NzYzCisgIzYgIDB4MDAwMDAwMDAwMDYxNzYzMSBpbiBw cm9jZXNzX2V2ZW50ICgpIGF0IGdkYi9ldmVudC1sb29wLmM6MzQwCisgIzcgIDB4MDAwMDAwMDAw MDYxNzZmOCBpbiBnZGJfZG9fb25lX2V2ZW50ICgpIGF0IGdkYi9ldmVudC1sb29wLmM6NDA0Cisg IzggIDB4MDAwMDAwMDAwMDYxNzc0OCBpbiBzdGFydF9ldmVudF9sb29wICgpIGF0IGdkYi9ldmVu dC1sb29wLmM6NDI5CisgIzkgIDB4MDAwMDAwMDAwMDYxOTFiMyBpbiBjbGlfY29tbWFuZF9sb29w IChkYXRhPTB4MCkgYXQgZ2RiL2V2ZW50LXRvcC5jOjE4MgorICMxMCAweDAwMDAwMDAwMDA2MGY1 MzggaW4gY3VycmVudF9pbnRlcnBfY29tbWFuZF9sb29wICgpIGF0IGdkYi9pbnRlcnBzLmM6MzE4 CisgIzExIDB4MDAwMDAwMDAwMDYxMDcwMSBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AgKGRhdGE9 MHgwKSBhdCBnZGIvbWFpbi5jOjMyMworICMxMiAweDAwMDAwMDAwMDA2MGMzZjUgaW4gY2F0Y2hf ZXJyb3JzIChmdW5jPTB4NjEwNmU2IDxjYXB0dXJlZF9jb21tYW5kX2xvb3A+LCBmdW5jX2FyZ3M9 MHgwLCBlcnJzdHJpbmc9MHg5MDAyYzEgIiIsIG1hc2s9UkVUVVJOX01BU0tfQUxMKQorICAgICBh dCBnZGIvZXhjZXB0aW9ucy5jOjIzNworICMxMyAweDAwMDAwMDAwMDA2MTFiZmYgaW4gY2FwdHVy ZWRfbWFpbiAoZGF0YT0weDdmZmZmZmZmZDc4MCkgYXQgZ2RiL21haW4uYzoxMTUxCisgIzE0IDB4 MDAwMDAwMDAwMDYwYzNmNSBpbiBjYXRjaF9lcnJvcnMgKGZ1bmM9MHg2MTBhZmUgPGNhcHR1cmVk X21haW4+LCBmdW5jX2FyZ3M9MHg3ZmZmZmZmZmQ3ODAsIGVycnN0cmluZz0weDkwMDJjMSAiIiwg bWFzaz1SRVRVUk5fTUFTS19BTEwpCisgICAgIGF0IGdkYi9leGNlcHRpb25zLmM6MjM3CisgIzE1 IDB4MDAwMDAwMDAwMDYxMWMyOCBpbiBnZGJfbWFpbiAoYXJncz0weDdmZmZmZmZmZDc4MCkgYXQg Z2RiL21haW4uYzoxMTU5CisgIzE2IDB4MDAwMDAwMDAwMDQ1ZWY5NyBpbiBtYWluIChhcmdjPTUs IGFyZ3Y9MHg3ZmZmZmZmZmQ4ODgpIGF0IGdkYi9nZGIuYzozMgorICh0b3AtZ2RiKQorCitUZXN0 ZWQgb24geDg2XzY0IEZlZG9yYSAyMCwgbmF0aXZlIGFuZCBnZGJzZXJ2ZXIuCisKK2dkYi8KKzIw MTQtMTAtMTcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisKKwlQUiBnZGIvMTcz MDAKKwkqIGluZmNtZC5jIChjb250aW51ZV8xKTogSWYgY29udGludWluZyBhbGwgdGhyZWFkcyBp biB0aGUKKwlmb3JlZ3JvdW5kLCBtYWtlIHN1cmUgdGhlIGluZmVyaW9yJ3MgdGVybWluYWwgc2V0 dGluZ3MgYXJlIHB1dCBpbgorCWVmZmVjdC4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMTQtMTAtMTcg IFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisKKwlQUiBnZGIvMTczMDAKKwkqIGdk Yi5iYXNlL2NvbnRpbnVlLWFsbC1hbHJlYWR5LXJ1bm5pbmcuYzogTmV3IGZpbGUuCisJKiBnZGIu YmFzZS9jb250aW51ZS1hbGwtYWxyZWFkeS1ydW5uaW5nLmV4cDogTmV3IGZpbGUuCistLS0KKyBn ZGIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsr CisgZ2RiL2luZmNtZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx OCArKysrKworIGdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDYgKysKKyAuLi4vZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHktcnVubmluZy5j ICAgICAgICB8IDI1ICsrKysrKysKKyAuLi4vZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHkt cnVubmluZy5leHAgICAgICB8IDc5ICsrKysrKysrKysrKysrKysrKysrKysKKyA1IGZpbGVzIGNo YW5nZWQsIDEzNSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHktcnVubmluZy5jCisgY3JlYXRlIG1vZGUg MTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHktcnVubmlu Zy5leHAKKworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEs NSArMSwxMiBAQAorIDIwMTQtMTAtMTcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+ CisgCisrCVBSIGdkYi8xNzMwMAorKwkqIGluZmNtZC5jIChjb250aW51ZV8xKTogSWYgY29udGlu dWluZyBhbGwgdGhyZWFkcyBpbiB0aGUKKysJZm9yZWdyb3VuZCwgbWFrZSBzdXJlIHRoZSBpbmZl cmlvcidzIHRlcm1pbmFsIHNldHRpbmdzIGFyZSBwdXQgaW4KKysJZWZmZWN0LgorKworKzIwMTQt MTAtMTcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisrCisgCVBSIGdkYi8xNzQ3 MgorIAkqIGFubm90YXRlLmMgKGFubm90YXRlX2JyZWFrcG9pbnRzX2ludmFsaWQpOiBVc2UKKyAJ dGFyZ2V0X3Rlcm1pbmFsX291cl9mb3Jfb3V0cHV0IGluc3RlYWQgb2YgdGFyZ2V0X3Rlcm1pbmFs X291cnMuCistLS0gYS9nZGIvaW5mY21kLmMKKysrKyBiL2dkYi9pbmZjbWQuYworQEAgLTczOCw2 ICs3MzgsMjQgQEAgY29udGludWVfMSAoaW50IGFsbF90aHJlYWRzKQorIAorICAgICAgIGl0ZXJh dGVfb3Zlcl90aHJlYWRzIChwcm9jZWVkX3RocmVhZF9jYWxsYmFjaywgTlVMTCk7CisgCisrICAg ICAgaWYgKHN5bmNfZXhlY3V0aW9uKQorKwl7CisrCSAgLyogSWYgYWxsIHRocmVhZHMgaW4gdGhl IHRhcmdldCB3ZXJlIGFscmVhZHkgcnVubmluZywKKysJICAgICBwcm9jZWVkX3RocmVhZF9jYWxs YmFjayBlbmRzIHVwIG5ldmVyIGNhbGxpbmcgcHJvY2VlZCwKKysJICAgICBhbmQgc28gbm90aGlu ZyBjYWxscyB0aGlzIHRvIHB1dCB0aGUgaW5mZXJpb3IncyB0ZXJtaW5hbAorKwkgICAgIHNldHRp bmdzIGluIGVmZmVjdCBhbmQgcmVtb3ZlIHN0ZGluIGZyb20gdGhlIGV2ZW50IGxvb3AsCisrCSAg ICAgd2hpY2ggd2UgbXVzdCB3aGVuIHJ1bm5pbmcgYSBmb3JlZ3JvdW5kIGNvbW1hbmQuICBFLmcu OgorKworKwkgICAgICAoZ2RiKSBjIC1hJgorKwkgICAgICBDb250aW51aW5nLgorKwkgICAgICA8 YWxsIHRocmVhZHMgYXJlIHJ1bm5pbmcgbm93PgorKwkgICAgICAoZ2RiKSBjIC1hCisrCSAgICAg IENvbnRpbnVpbmcuCisrCSAgICAgIDxubyB0aHJlYWQgd2FzIHJlc3VtZWQsIGJ1dCB0aGUgaW5m ZXJpb3Igbm93IG93bnMgdGhlIHRlcm1pbmFsPgorKwkgICovCisrCSAgdGFyZ2V0X3Rlcm1pbmFs X2luZmVyaW9yICgpOworKwl9CisrCisgICAgICAgLyogUmVzdG9yZSBzZWxlY3RlZCBwdGlkLiAg Ki8KKyAgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAgICAgfQorIyMjIGEvZ2RiL3Rl c3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIyBiL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisjIyAtMSw1 ICsxLDExIEBACisgMjAxNC0xMC0xNyAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4K KyAKKysJUFIgZ2RiLzE3MzAwCisrCSogZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHktcnVu bmluZy5jOiBOZXcgZmlsZS4KKysJKiBnZGIuYmFzZS9jb250aW51ZS1hbGwtYWxyZWFkeS1ydW5u aW5nLmV4cDogTmV3IGZpbGUuCisrCisrMjAxNC0xMC0xNyAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNA cmVkaGF0LmNvbT4KKysKKyAJUFIgZ2RiLzE3NDcyCisgCSogZ2RiLmJhc2UvYW5ub3RhLWlucHV0 LXdoaWxlLXJ1bm5pbmcuYzogTmV3IGZpbGUuCisgCSogZ2RiLmJhc2UvYW5ub3RhLWlucHV0LXdo aWxlLXJ1bm5pbmcuZXhwOiBOZXcgZmlsZS4KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHktcnVubmluZy5jCitAQCAtMCwwICsx LDI1IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KKysKKysgICBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1 ZGUgPHVuaXN0ZC5oPgorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgc2xlZXAgKDEwKTsK KysgIHJldHVybiAwOyAvKiBzZXQgYnJlYWsgaGVyZSAqLworK30KKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29udGludWUtYWxsLWFscmVhZHktcnVubmluZy5l eHAKK0BAIC0wLDAgKzEsNzkgQEAKKysjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr IyBUZXN0IHRoYXQgImMgLWEiIGRvZXNuJ3QgbGVhdmUgR0RCIHByb2Nlc3NpbmcgaW5wdXQsIGV2 ZW4gaWYgYWxsCisrIyB0aHJlYWRzIHdlcmUgYWxyZWFkeSBydW5uaW5nLiAgUFIgZ2RiLzE3MzAw LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAk e3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHNyY2ZpbGVdIH0geworKyAgICByZXR1cm4gLTEK Kyt9CisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgbm9uLXN0b3Agb24iCisrCisraWYgIVty dW50b19tYWluXSB7CisrICAgIHJldHVybgorK30KKysKKytzZXQgbGluZW51bSBbZ2RiX2dldF9s aW5lX251bWJlciAic2V0IGJyZWFrIGhlcmUiXQorK2dkYl9icmVha3BvaW50ICIkbGluZW51bSIK KysKKytnZGJfdGVzdCAiYyAtYSYiICJDb250aW51aW5nXFwuIgorKworK3NldCB0ZXN0ICJubyBz dG9wIgorK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAgLXRpbWVvdXQgMQorKyAg ICB0aW1lb3V0IHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworKyMgUGFyYW5vaWEuICBD aGVjayB0aGF0IGlucHV0IHdvcmtzIGFmdGVyIGJnIGNvbW1hbmQuCisrZ2RiX3Rlc3QgInByaW50 IDEiICIgPSAxIgorKworKyMgQ29udGludWUgaW4gdGhlIGZvcmVncm91bmQsIGFuZCB3YWl0IG9u ZSBzZWNvbmQgdG8gbWFrZSBzdXJlIHRoZQorKyMgaW5mZXJpb3IgcmVhbGx5IHN0YXJ0cyBydW5u aW5nLiAgSWYgd2UgZ2V0IGEgcHJvbXB0IHRvIHNvb24gKGUuZy4sCisrIyB0aGUgcHJvZ3JhbSBz dG9wcyksIHRoaXMgaXNzdWVzIGEgZmFpbC4KKytzZXQgc2F3X2NvbnRpbnVpbmcgMAorK3NldCB0 ZXN0ICJjIC1hIgorK2dkYl90ZXN0X211bHRpcGxlICJjIC1hIiAkdGVzdCB7CisrICAgIC10aW1l b3V0IDEKKysgICAgLXJlICJDb250aW51aW5nXFwuIiB7CisrCXNldCBzYXdfY29udGludWluZyAx CisrCWV4cF9jb250aW51ZQorKyAgICB9CisrICAgIHRpbWVvdXQgeworKwlnZGJfYXNzZXJ0ICRz YXdfY29udGludWluZyAkdGVzdAorKyAgICB9CisrfQorKworKyMgVHlwZSBzb21ldGhpbmcgd2hp bGUgdGhlIGluZmVyaW9yIGlzIHJ1bm5pbmcgaW4gdGhlIGZvcmVncm91bmQuCisrc2VuZF9nZGIg InByaW50IDJcbiIKKysKKysjIFBvb3IgYnVnZ3kgR0RCIHdvdWxkIGNyYXNoIGJlZm9yZSB0aGUg YnJlYWtwb2ludCB3YXMgaGl0LgorK3NldCB0ZXN0ICJicmVha3BvaW50IGhpdCIKKytnZGJfdGVz dF9tdWx0aXBsZSAiIiAkdGVzdCB7CisrICAgIC1yZSAic2V0IGJyZWFrIGhlcmUgLi5cclxuJGdk Yl9wcm9tcHQgIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKytzZXQgdGVzdCAicHJp bnQgY29tbWFuZCByZXN1bHQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAgICAt cmUgIiA9IDJcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9Cist LSAKKzEuOS4zCisKK0Zyb20gMzZjNTdhM2NlZWIyMjYwOTEzZjdkMmQzNDllOTk0ZGQ4NDRjYmNh ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVk aGF0LmNvbT4KK0RhdGU6IEZyaSwgMTcgT2N0IDIwMTQgMTM6MzE6MjYgKzAxMDAKK1N1YmplY3Q6 IFtQQVRDSCAzNS8zN10gUFIgZ2RiLzE3NDcxOiBSZXBlYXRpbmcgYSBiYWNrZ3JvdW5kIGNvbW1h bmQgbWFrZXMgaXQKKyBmb3JlZ3JvdW5kCisKK1doZW4gd2UgcmVwZWF0IGEgY29tbWFuZCwgYnkg anVzdCBwcmVzc2luZyA8cmV0PiwgdGhlIGlucHV0IGZyb20gdGhlCitwcmV2aW91cyBjb21tYW5k IGlzIHJldXNlZCBmb3IgdGhlIG5ldyBjb21tYW5kIGludm9jYXRpb24uCisKK1doZW4gYW4gZXhl Y3V0aW9uIGNvbW1hbmQgc3RyaXBzIHRoZSAiJiIgb3V0IG9mIGl0cyBpbmNvbWluZyBhcmd1bWVu dAorc3RyaW5nLCB0byBkZXRlY3QgYmFja2dyb3VuZCBleGVjdXRpb24sIHdlIHBva2UgYSAnXDAn IGRpcmVjdGx5IHRvIHRoZQoraW5jb21pbmcgYXJndW1lbnQgc3RyaW5nLgorCitDb21iaW5lIGJv dGgsIGFuZCBhIHJlcGVhdCBvZiBhIGJhY2tncm91bmQgY29tbWFuZCBsb3NlcyB0aGUgIiYiLgor CitUaGlzIGlzIGFjdHVhbGx5IG9ubHkgdmlzaWJsZSBpZiBhcmdzIG90aGVyIHRoYW4gIiYiIGFy ZSBzcGVjaWZpZWQKKyhlLmcuLCAiYyAxJiIgb3IgIm5leHQgMiYiIG9yICJjIC1hJiIpLCBhcyBp biB0aGUgc3BlY2lhbCBjYXNlIG9mICImIgorYWxvbmUgKGUuZy4gImMmIikgZG9lc24ndCBhY3R1 YWxseSBjbG9iYmVyIHRoZSBpbmNvbWluZyBzdHJpbmcuCisKK0ZpeCB0aGlzIGJ5IG1ha2luZyBz dHJpcF9iZ19jaGFyIHJldHVybiBhIG5ldyBzdHJpbmcgaW5zdGVhZCBvZiBwb2tpbmcKK2EgaG9s ZSBpbiB0aGUgaW5wdXQgc3RyaW5nLgorCitOZXcgdGVzdCBpbmNsdWRlZC4KKworVGVzdGVkIG9u IHg4Nl82NCBGZWRvcmEgMjAsIG5hdGl2ZSBhbmQgZ2Ric2VydmVyLgorCitnZGIvCisyMDE0LTEw LTE3ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorCisJUFIgZ2RiLzE3NDcxCisJ KiBpbmZjbWQuYyAoc3RyaXBfYmdfY2hhcik6IENoYW5nZSBwcm90b3R5cGUgYW5kIHJld3JpdGUu ICBOb3cKKwlyZXR1cm5zIGEgY29weSBvZiB0aGUgaW5wdXQuCisJKHJ1bl9jb21tYW5kXzEsIGNv bnRpbnVlX2NvbW1hbmQsIHN0ZXBfMSwganVtcF9jb21tYW5kKQorCShzaWduYWxfY29tbWFuZCwg dW50aWxfY29tbWFuZCwgYWR2YW5jZV9jb21tYW5kLCBmaW5pc2hfY29tbWFuZCkKKwkoYXR0YWNo X2NvbW1hbmQpOiBBZGp1c3QgYW5kIGluc3RhbGwgYSBjbGVhbnVwIHRvIGZyZWUgdGhlCisJc3Ry aXBwZWQgYXJncy4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMTQtMTAtMTcgIFBlZHJvIEFsdmVzICA8 cGFsdmVzQHJlZGhhdC5jb20+CisKKwlQUiBnZGIvMTc0NzEKKwkqIGdkYi5iYXNlL2JnLWV4ZWN1 dGlvbi1yZXBlYXQuYzogTmV3IGZpbGUuCisJKiBnZGIuYmFzZS9iZy1leGVjdXRpb24tcmVwZWF0 LmV4cDogTmV3IGZpbGUuCistLS0KKyBnZGIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDEwICsrCisgZ2RiL2luZmNtZC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE0MiArKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgZ2RiL3Rlc3Rz dWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArKworIGdkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYmctZXhlY3V0aW9uLXJlcGVhdC5jICAgfCAgMzMgKysrKysrCisgZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9iZy1leGVjdXRpb24tcmVwZWF0LmV4cCB8ICA4NiArKysrKysr KysrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlv bnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9iZy1leGVj dXRpb24tcmVwZWF0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9iZy1leGVjdXRpb24tcmVwZWF0LmV4cAorCisjIyMgYS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9n ZGIvQ2hhbmdlTG9nCisjIyAtMSw1ICsxLDE1IEBACisgMjAxNC0xMC0xNyAgUGVkcm8gQWx2ZXMg IDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKysJUFIgZ2RiLzE3NDcxCisrCSogaW5mY21kLmMgKHN0 cmlwX2JnX2NoYXIpOiBDaGFuZ2UgcHJvdG90eXBlIGFuZCByZXdyaXRlLiAgTm93CisrCXJldHVy bnMgYSBjb3B5IG9mIHRoZSBpbnB1dC4KKysJKHJ1bl9jb21tYW5kXzEsIGNvbnRpbnVlX2NvbW1h bmQsIHN0ZXBfMSwganVtcF9jb21tYW5kKQorKwkoc2lnbmFsX2NvbW1hbmQsIHVudGlsX2NvbW1h bmQsIGFkdmFuY2VfY29tbWFuZCwgZmluaXNoX2NvbW1hbmQpCisrCShhdHRhY2hfY29tbWFuZCk6 IEFkanVzdCBhbmQgaW5zdGFsbCBhIGNsZWFudXAgdG8gZnJlZSB0aGUKKysJc3RyaXBwZWQgYXJn cy4KKysKKysyMDE0LTEwLTE3ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorKwor IAlQUiBnZGIvMTczMDAKKyAJKiBpbmZjbWQuYyAoY29udGludWVfMSk6IElmIGNvbnRpbnVpbmcg YWxsIHRocmVhZHMgaW4gdGhlCisgCWZvcmVncm91bmQsIG1ha2Ugc3VyZSB0aGUgaW5mZXJpb3In cyB0ZXJtaW5hbCBzZXR0aW5ncyBhcmUgcHV0IGluCistLS0gYS9nZGIvaW5mY21kLmMKKysrKyBi L2dkYi9pbmZjbWQuYworQEAgLTEwNyw4ICsxMDcsNiBAQCBzdGF0aWMgdm9pZCBydW5fbm9fYXJn c19jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOworIAorIHN0YXRpYyB2b2lkIGdv X2NvbW1hbmQgKGNoYXIgKmxpbmVfbm8sIGludCBmcm9tX3R0eSk7CisgCistc3RhdGljIGludCBz dHJpcF9iZ19jaGFyIChjaGFyICoqKTsKKy0KKyB2b2lkIF9pbml0aWFsaXplX2luZmNtZCAodm9p ZCk7CisgCisgI2RlZmluZSBFUlJPUl9OT19JTkZFUklPUiBcCitAQCAtMzczLDM1ICszNzEsNDAg QEAgY29uc3RydWN0X2luZmVyaW9yX2FyZ3VtZW50cyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor IH0KKyAMCisgCistLyogVGhpcyBmdW5jdGlvbiBkZXRlY3RzIHdoZXRoZXIgb3Igbm90IGEgJyYn IGNoYXJhY3RlciAoaW5kaWNhdGluZworLSAgIGJhY2tncm91bmQgZXhlY3V0aW9uKSBoYXMgYmVl biBhZGRlZCBhcyAqdGhlIGxhc3QqIG9mIHRoZSBhcmd1bWVudHMgQVJHUworLSAgIG9mIGEgY29t bWFuZC4gIElmIGl0IGhhcywgaXQgcmVtb3ZlcyBpdCBhbmQgcmV0dXJucyAxLiAgT3RoZXJ3aXNl IGl0CistICAgZG9lcyBub3RoaW5nIGFuZCByZXR1cm5zIDAuICAqLworKy8qIFRoaXMgZnVuY3Rp b24gc3RyaXBzIHRoZSAnJicgY2hhcmFjdGVyIChpbmRpY2F0aW5nIGJhY2tncm91bmQKKysgICBl eGVjdXRpb24pIHRoYXQgaXMgYWRkZWQgYXMgKnRoZSBsYXN0KiBvZiB0aGUgYXJndW1lbnRzIEFS R1Mgb2YgYQorKyAgIGNvbW1hbmQuICBBIGNvcHkgb2YgdGhlIGluY29taW5nIEFSR1Mgd2l0aG91 dCB0aGUgJyYnIGlzIHJldHVybmVkLAorKyAgIHVubGVzcyB0aGUgcmVzdWx0aW5nIHN0cmluZyBh ZnRlciBzdHJpcHBpbmcgaXMgZW1wdHksIGluIHdoaWNoIGNhc2UKKysgICBOVUxMIGlzIHJldHVy bmVkLiAgKkJHX0NIQVJfUCBpcyBhbiBvdXRwdXQgYm9vbGVhbiB0aGF0IGluZGljYXRlcworKyAg IHdoZXRoZXIgdGhlICcmJyBjaGFyYWN0ZXIgd2FzIGZvdW5kLiAgKi8KKyAKKy1zdGF0aWMgaW50 Cistc3RyaXBfYmdfY2hhciAoY2hhciAqKmFyZ3MpCisrc3RhdGljIGNoYXIgKgorK3N0cmlwX2Jn X2NoYXIgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCAqYmdfY2hhcl9wKQorIHsKKy0gIGNoYXIgKnAg PSBOVUxMOworKyAgY29uc3QgY2hhciAqcDsKKyAKKy0gIHAgPSBzdHJjaHIgKCphcmdzLCAnJicp OworKyAgaWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAnXDAnKQorKyAgICB7CisrICAgICAg KmJnX2NoYXJfcCA9IDA7CisrICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKyAKKy0gIGlmIChw KQorKyAgcCA9IGFyZ3MgKyBzdHJsZW4gKGFyZ3MpOworKyAgaWYgKHBbLTFdID09ICcmJykKKyAg ICAgeworLSAgICAgIGlmIChwID09ICgqYXJncyArIHN0cmxlbiAoKmFyZ3MpIC0gMSkpCistCXsK Ky0JICBpZiAoc3RybGVuICgqYXJncykgPiAxKQorLQkgICAgeworLQkgICAgICBkbworLQkJcC0t OworLQkgICAgICB3aGlsZSAoKnAgPT0gJyAnIHx8ICpwID09ICdcdCcpOworLQkgICAgICAqKHAg KyAxKSA9ICdcMCc7CistCSAgICB9CistCSAgZWxzZQorLQkgICAgKmFyZ3MgPSAwOworLQkgIHJl dHVybiAxOworLQl9CisrICAgICAgcC0tOworKyAgICAgIHdoaWxlIChwID4gYXJncyAmJiBpc3Nw YWNlIChwWy0xXSkpCisrCXAtLTsKKysKKysgICAgICAqYmdfY2hhcl9wID0gMTsKKysgICAgICBp ZiAocCAhPSBhcmdzKQorKwlyZXR1cm4gc2F2ZXN0cmluZyAoYXJncywgcCAtIGFyZ3MpOworKyAg ICAgIGVsc2UKKysJcmV0dXJuIE5VTEw7CisgICAgIH0KKy0gIHJldHVybiAwOworKworKyAgKmJn X2NoYXJfcCA9IDA7CisrICByZXR1cm4geHN0cmR1cCAoYXJncyk7CisgfQorIAorIC8qIENvbW1v biBhY3Rpb25zIHRvIHRha2UgYWZ0ZXIgY3JlYXRpbmcgYW55IHNvcnQgb2YgaW5mZXJpb3IsIGJ5 IGFueQorQEAgLTUzMCw3ICs1MzMsOCBAQCBydW5fY29tbWFuZF8xIChjaGFyICphcmdzLCBpbnQg ZnJvbV90dHksIGludCB0YnJlYWtfYXRfbWFpbikKKyAgIHB0aWRfdCBwdGlkOworICAgc3RydWN0 IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworICAgc3RydWN0IHRhcmdldF9vcHMgKnJ1 bl90YXJnZXQ7CistICBpbnQgYXN5bmNfZXhlYyA9IDA7CisrICBpbnQgYXN5bmNfZXhlYzsKKysg IHN0cnVjdCBjbGVhbnVwICphcmdzX2NoYWluOworIAorICAgZG9udF9yZXBlYXQgKCk7CisgCitA QCAtNTUzLDggKzU1Nyw4IEBAIHJ1bl9jb21tYW5kXzEgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSwgaW50IHRicmVha19hdF9tYWluKQorICAgcmVvcGVuX2V4ZWNfZmlsZSAoKTsKKyAgIHJlcmVh ZF9zeW1ib2xzICgpOworIAorLSAgaWYgKGFyZ3MgIT0gTlVMTCkKKy0gICAgYXN5bmNfZXhlYyA9 IHN0cmlwX2JnX2NoYXIgKCZhcmdzKTsKKysgIGFyZ3MgPSBzdHJpcF9iZ19jaGFyIChhcmdzLCAm YXN5bmNfZXhlYyk7CisrICBhcmdzX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJncyk7 CisgCisgICAvKiBEbyB2YWxpZGF0aW9uIGFuZCBwcmVwYXJhdGlvbiBiZWZvcmUgcG9zc2libHkg Y2hhbmdpbmcgYW55dGhpbmcKKyAgICAgIGluIHRoZSBpbmZlcmlvci4gICovCitAQCAtNjAwLDYg KzYwNCw5IEBAIHJ1bl9jb21tYW5kXzEgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgaW50IHRi cmVha19hdF9tYWluKQorICAgICAgIHVpX291dF9mbHVzaCAodWlvdXQpOworICAgICB9CisgCisr ICAvKiBEb25lIHdpdGggQVJHUy4gICovCisrICBkb19jbGVhbnVwcyAoYXJnc19jaGFpbik7Cisr CisgICAvKiBXZSBjYWxsIGdldF9pbmZlcmlvcl9hcmdzKCkgYmVjYXVzZSB3ZSBtaWdodCBuZWVk IHRvIGNvbXB1dGUKKyAgICAgIHRoZSB2YWx1ZSBub3cuICAqLworICAgcnVuX3RhcmdldC0+dG9f Y3JlYXRlX2luZmVyaW9yIChydW5fdGFyZ2V0LCBleGVjX2ZpbGUsIGdldF9pbmZlcmlvcl9hcmdz ICgpLAorQEAgLTc3MywxMyArNzgwLDE1IEBAIGNvbnRpbnVlXzEgKGludCBhbGxfdGhyZWFkcykK KyBzdGF0aWMgdm9pZAorIGNvbnRpbnVlX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSkKKyB7CistICBpbnQgYXN5bmNfZXhlYyA9IDA7CisrICBpbnQgYXN5bmNfZXhlYzsKKyAgIGlu dCBhbGxfdGhyZWFkcyA9IDA7CisrICBzdHJ1Y3QgY2xlYW51cCAqYXJnc19jaGFpbjsKKysKKyAg IEVSUk9SX05PX0lORkVSSU9SOworIAorICAgLyogRmluZCBvdXQgd2hldGhlciB3ZSBtdXN0IHJ1 biBpbiB0aGUgYmFja2dyb3VuZC4gICovCistICBpZiAoYXJncyAhPSBOVUxMKQorLSAgICBhc3lu Y19leGVjID0gc3RyaXBfYmdfY2hhciAoJmFyZ3MpOworKyAgYXJncyA9IHN0cmlwX2JnX2NoYXIg KGFyZ3MsICZhc3luY19leGVjKTsKKysgIGFyZ3NfY2hhaW4gPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBhcmdzKTsKKyAKKyAgIHByZXBhcmVfZXhlY3V0aW9uX2NvbW1hbmQgKCZjdXJyZW50X3Rhcmdl dCwgYXN5bmNfZXhlYyk7CisgCitAQCAtODQzLDYgKzg1Miw5IEBAIGNvbnRpbnVlX2NvbW1hbmQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyAJfQorICAgICB9CisgCisrICAvKiBEb25lIHdp dGggQVJHUy4gICovCisrICBkb19jbGVhbnVwcyAoYXJnc19jaGFpbik7CisrCisgICBpZiAoZnJv bV90dHkpCisgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiQ29udGludWluZy5cbiIpKTsKKyAKK0BA IC05MDIsMjEgKzkxNCwyNSBAQCBzdGVwXzEgKGludCBza2lwX3N1YnJvdXRpbmVzLCBpbnQgc2lu Z2xlX2luc3QsIGNoYXIgKmNvdW50X3N0cmluZykKKyB7CisgICBpbnQgY291bnQgPSAxOworICAg c3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOworLSAgaW50IGFzeW5jX2V4ZWMgPSAwOworKyAgaW50IGFzeW5jX2V4ZWM7CisgICBpbnQg dGhyZWFkID0gLTE7CisrICBzdHJ1Y3QgY2xlYW51cCAqYXJnc19jaGFpbjsKKyAKKyAgIEVSUk9S X05PX0lORkVSSU9SOworICAgZW5zdXJlX25vdF90ZmluZF9tb2RlICgpOworICAgZW5zdXJlX3Zh bGlkX3RocmVhZCAoKTsKKyAgIGVuc3VyZV9ub3RfcnVubmluZyAoKTsKKyAKKy0gIGlmIChjb3Vu dF9zdHJpbmcpCistICAgIGFzeW5jX2V4ZWMgPSBzdHJpcF9iZ19jaGFyICgmY291bnRfc3RyaW5n KTsKKysgIGNvdW50X3N0cmluZyA9IHN0cmlwX2JnX2NoYXIgKGNvdW50X3N0cmluZywgJmFzeW5j X2V4ZWMpOworKyAgYXJnc19jaGFpbiA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGNvdW50X3N0cmlu Zyk7CisgCisgICBwcmVwYXJlX2V4ZWN1dGlvbl9jb21tYW5kICgmY3VycmVudF90YXJnZXQsIGFz eW5jX2V4ZWMpOworIAorICAgY291bnQgPSBjb3VudF9zdHJpbmcgPyBwYXJzZV9hbmRfZXZhbF9s b25nIChjb3VudF9zdHJpbmcpIDogMTsKKyAKKysgIC8qIERvbmUgd2l0aCBBUkdTLiAgKi8KKysg IGRvX2NsZWFudXBzIChhcmdzX2NoYWluKTsKKysKKyAgIGlmICghc2luZ2xlX2luc3QgfHwgc2tp cF9zdWJyb3V0aW5lcykJCS8qIExlYXZlIHNpIGNvbW1hbmQgYWxvbmUuICAqLworICAgICB7Cisg ICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKK0BAIC0x MTM3LDcgKzExNTMsOCBAQCBqdW1wX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor ICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CisgICBzdHJ1Y3Qgc3ltYm9sICpmbjsKKyAg IHN0cnVjdCBzeW1ib2wgKnNmbjsKKy0gIGludCBhc3luY19leGVjID0gMDsKKysgIGludCBhc3lu Y19leGVjOworKyAgc3RydWN0IGNsZWFudXAgKmFyZ3NfY2hhaW47CisgCisgICBFUlJPUl9OT19J TkZFUklPUjsKKyAgIGVuc3VyZV9ub3RfdGZpbmRfbW9kZSAoKTsKK0BAIC0xMTQ1LDggKzExNjIs OCBAQCBqdW1wX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorICAgZW5zdXJlX25v dF9ydW5uaW5nICgpOworIAorICAgLyogRmluZCBvdXQgd2hldGhlciB3ZSBtdXN0IHJ1biBpbiB0 aGUgYmFja2dyb3VuZC4gICovCistICBpZiAoYXJnICE9IE5VTEwpCistICAgIGFzeW5jX2V4ZWMg PSBzdHJpcF9iZ19jaGFyICgmYXJnKTsKKysgIGFyZyA9IHN0cmlwX2JnX2NoYXIgKGFyZywgJmFz eW5jX2V4ZWMpOworKyAgYXJnc19jaGFpbiA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFyZyk7Cisg CisgICBwcmVwYXJlX2V4ZWN1dGlvbl9jb21tYW5kICgmY3VycmVudF90YXJnZXQsIGFzeW5jX2V4 ZWMpOworIAorQEAgLTExNjIsNiArMTE3OSw5IEBAIGp1bXBfY29tbWFuZCAoY2hhciAqYXJnLCBp bnQgZnJvbV90dHkpCisgICBzYWwgPSBzYWxzLnNhbHNbMF07CisgICB4ZnJlZSAoc2Fscy5zYWxz KTsKKyAKKysgIC8qIERvbmUgd2l0aCBBUkdTLiAgKi8KKysgIGRvX2NsZWFudXBzIChhcmdzX2No YWluKTsKKysKKyAgIGlmIChzYWwuc3ltdGFiID09IDAgJiYgc2FsLnBjID09IDApCisgICAgIGVy cm9yIChfKCJObyBzb3VyY2UgZmlsZSBoYXMgYmVlbiBzcGVjaWZpZWQuIikpOworIAorQEAgLTEy MzAsNyArMTI1MCw4IEBAIHN0YXRpYyB2b2lkCisgc2lnbmFsX2NvbW1hbmQgKGNoYXIgKnNpZ251 bV9leHAsIGludCBmcm9tX3R0eSkKKyB7CisgICBlbnVtIGdkYl9zaWduYWwgb3Vyc2lnOworLSAg aW50IGFzeW5jX2V4ZWMgPSAwOworKyAgaW50IGFzeW5jX2V4ZWM7CisrICBzdHJ1Y3QgY2xlYW51 cCAqYXJnc19jaGFpbjsKKyAKKyAgIGRvbnRfcmVwZWF0ICgpOwkJLyogVG9vIGRhbmdlcm91cy4g ICovCisgICBFUlJPUl9OT19JTkZFUklPUjsKK0BAIC0xMjM5LDggKzEyNjAsOCBAQCBzaWduYWxf Y29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwgaW50IGZyb21fdHR5KQorICAgZW5zdXJlX25vdF9y dW5uaW5nICgpOworIAorICAgLyogRmluZCBvdXQgd2hldGhlciB3ZSBtdXN0IHJ1biBpbiB0aGUg YmFja2dyb3VuZC4gICovCistICBpZiAoc2lnbnVtX2V4cCAhPSBOVUxMKQorLSAgICBhc3luY19l eGVjID0gc3RyaXBfYmdfY2hhciAoJnNpZ251bV9leHApOworKyAgc2lnbnVtX2V4cCA9IHN0cmlw X2JnX2NoYXIgKHNpZ251bV9leHAsICZhc3luY19leGVjKTsKKysgIGFyZ3NfY2hhaW4gPSBtYWtl X2NsZWFudXAgKHhmcmVlLCBzaWdudW1fZXhwKTsKKyAKKyAgIHByZXBhcmVfZXhlY3V0aW9uX2Nv bW1hbmQgKCZjdXJyZW50X3RhcmdldCwgYXN5bmNfZXhlYyk7CisgCitAQCAtMTM3Miw3ICsxMzkz LDggQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCisgc3RhdGljIHZvaWQKKyB1 bnRpbF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyB7CistICBpbnQgYXN5bmNf ZXhlYyA9IDA7CisrICBpbnQgYXN5bmNfZXhlYzsKKysgIHN0cnVjdCBjbGVhbnVwICphcmdzX2No YWluOworIAorICAgRVJST1JfTk9fSU5GRVJJT1I7CisgICBlbnN1cmVfbm90X3RmaW5kX21vZGUg KCk7CitAQCAtMTM4MCw4ICsxNDAyLDggQEAgdW50aWxfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHkpCisgICBlbnN1cmVfbm90X3J1bm5pbmcgKCk7CisgCisgICAvKiBGaW5kIG91dCB3 aGV0aGVyIHdlIG11c3QgcnVuIGluIHRoZSBiYWNrZ3JvdW5kLiAgKi8KKy0gIGlmIChhcmcgIT0g TlVMTCkKKy0gICAgYXN5bmNfZXhlYyA9IHN0cmlwX2JnX2NoYXIgKCZhcmcpOworKyAgYXJnID0g c3RyaXBfYmdfY2hhciAoYXJnLCAmYXN5bmNfZXhlYyk7CisrICBhcmdzX2NoYWluID0gbWFrZV9j bGVhbnVwICh4ZnJlZSwgYXJnKTsKKyAKKyAgIHByZXBhcmVfZXhlY3V0aW9uX2NvbW1hbmQgKCZj dXJyZW50X3RhcmdldCwgYXN5bmNfZXhlYyk7CisgCitAQCAtMTM4OSwxMiArMTQxMSwxNiBAQCB1 bnRpbF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAgICAgdW50aWxfYnJlYWtf Y29tbWFuZCAoYXJnLCBmcm9tX3R0eSwgMCk7CisgICBlbHNlCisgICAgIHVudGlsX25leHRfY29t bWFuZCAoZnJvbV90dHkpOworKworKyAgLyogRG9uZSB3aXRoIEFSR1MuICAqLworKyAgZG9fY2xl YW51cHMgKGFyZ3NfY2hhaW4pOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIGFkdmFuY2VfY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCisgeworLSAgaW50IGFzeW5jX2V4ZWMgPSAwOwor KyAgaW50IGFzeW5jX2V4ZWM7CisrICBzdHJ1Y3QgY2xlYW51cCAqYXJnc19jaGFpbjsKKyAKKyAg IEVSUk9SX05PX0lORkVSSU9SOworICAgZW5zdXJlX25vdF90ZmluZF9tb2RlICgpOworQEAgLTE0 MDUsMTIgKzE0MzEsMTUgQEAgYWR2YW5jZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0 eSkKKyAgICAgZXJyb3Jfbm9fYXJnIChfKCJhIGxvY2F0aW9uIikpOworIAorICAgLyogRmluZCBv dXQgd2hldGhlciB3ZSBtdXN0IHJ1biBpbiB0aGUgYmFja2dyb3VuZC4gICovCistICBpZiAoYXJn ICE9IE5VTEwpCistICAgIGFzeW5jX2V4ZWMgPSBzdHJpcF9iZ19jaGFyICgmYXJnKTsKKysgIGFy ZyA9IHN0cmlwX2JnX2NoYXIgKGFyZywgJmFzeW5jX2V4ZWMpOworKyAgYXJnc19jaGFpbiA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIGFyZyk7CisgCisgICBwcmVwYXJlX2V4ZWN1dGlvbl9jb21tYW5k ICgmY3VycmVudF90YXJnZXQsIGFzeW5jX2V4ZWMpOworIAorICAgdW50aWxfYnJlYWtfY29tbWFu ZCAoYXJnLCBmcm9tX3R0eSwgMSk7CisrCisrICAvKiBEb25lIHdpdGggQVJHUy4gICovCisrICBk b19jbGVhbnVwcyAoYXJnc19jaGFpbik7CisgfQorIAwKKyAvKiBSZXR1cm4gdGhlIHZhbHVlIG9m IHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBhdCB0aGUgZW5kIG9mIGEgJ2ZpbmlzaCcKK0BAIC0x Njg2LDggKzE3MTUsOCBAQCBmaW5pc2hfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkp CisgeworICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOworICAgc3RydWN0IHN5bWJvbCAqZnVu Y3Rpb247CistCistICBpbnQgYXN5bmNfZXhlYyA9IDA7CisrICBpbnQgYXN5bmNfZXhlYzsKKysg IHN0cnVjdCBjbGVhbnVwICphcmdzX2NoYWluOworIAorICAgRVJST1JfTk9fSU5GRVJJT1I7Cisg ICBlbnN1cmVfbm90X3RmaW5kX21vZGUgKCk7CitAQCAtMTY5NSwxNCArMTcyNCwxNyBAQCBmaW5p c2hfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCisgICBlbnN1cmVfbm90X3J1bm5p bmcgKCk7CisgCisgICAvKiBGaW5kIG91dCB3aGV0aGVyIHdlIG11c3QgcnVuIGluIHRoZSBiYWNr Z3JvdW5kLiAgKi8KKy0gIGlmIChhcmcgIT0gTlVMTCkKKy0gICAgYXN5bmNfZXhlYyA9IHN0cmlw X2JnX2NoYXIgKCZhcmcpOworKyAgYXJnID0gc3RyaXBfYmdfY2hhciAoYXJnLCAmYXN5bmNfZXhl Yyk7CisrICBhcmdzX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJnKTsKKyAKKyAgIHBy ZXBhcmVfZXhlY3V0aW9uX2NvbW1hbmQgKCZjdXJyZW50X3RhcmdldCwgYXN5bmNfZXhlYyk7Cisg CisgICBpZiAoYXJnKQorICAgICBlcnJvciAoXygiVGhlIFwiZmluaXNoXCIgY29tbWFuZCBkb2Vz IG5vdCB0YWtlIGFueSBhcmd1bWVudHMuIikpOworIAorKyAgLyogRG9uZSB3aXRoIEFSR1MuICAq LworKyAgZG9fY2xlYW51cHMgKGFyZ3NfY2hhaW4pOworKworICAgZnJhbWUgPSBnZXRfcHJldl9m cmFtZSAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChfKCJObyBzZWxlY3RlZCBmcmFtZS4iKSkpOworICAg aWYgKGZyYW1lID09IDApCisgICAgIGVycm9yIChfKCJcImZpbmlzaFwiIG5vdCBtZWFuaW5nZnVs IGluIHRoZSBvdXRlcm1vc3QgZnJhbWUuIikpOworQEAgLTI0NzYsNyArMjUwOCw4IEBAIGF0dGFj aF9jb21tYW5kX2NvbnRpbnVhdGlvbl9mcmVlX2FyZ3MgKHZvaWQgKmFyZ3MpCisgdm9pZAorIGF0 dGFjaF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgeworLSAgaW50IGFzeW5j X2V4ZWMgPSAwOworKyAgaW50IGFzeW5jX2V4ZWM7CisrICBzdHJ1Y3QgY2xlYW51cCAqYXJnc19j aGFpbjsKKyAgIHN0cnVjdCB0YXJnZXRfb3BzICphdHRhY2hfdGFyZ2V0OworIAorICAgZG9udF9y ZXBlYXQgKCk7CQkvKiBOb3QgZm9yIHRoZSBmYWludCBvZiBoZWFydCAqLworQEAgLTI0OTcsOCAr MjUzMCw4IEBAIGF0dGFjaF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAg ICB0aGlzIGZ1bmN0aW9uIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCBpbnRvIHRhcmdldF9wcmVf aW5mZXJpb3IuICAqLworICAgdGFyZ2V0X3ByZV9pbmZlcmlvciAoZnJvbV90dHkpOworIAorLSAg aWYgKGFyZ3MgIT0gTlVMTCkKKy0gICAgYXN5bmNfZXhlYyA9IHN0cmlwX2JnX2NoYXIgKCZhcmdz KTsKKysgIGFyZ3MgPSBzdHJpcF9iZ19jaGFyIChhcmdzLCAmYXN5bmNfZXhlYyk7CisrICBhcmdz X2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJncyk7CisgCisgICBhdHRhY2hfdGFyZ2V0 ID0gZmluZF9hdHRhY2hfdGFyZ2V0ICgpOworIAorQEAgLTI1MTIsNiArMjU0NSw5IEBAIGF0dGFj aF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAgICBzaG91bGRuJ3QgcmVm ZXIgdG8gYXR0YWNoX3RhcmdldCBhZ2Fpbi4gICovCisgICBhdHRhY2hfdGFyZ2V0ID0gTlVMTDsK KyAKKysgIC8qIERvbmUgd2l0aCBBUkdTLiAgKi8KKysgIGRvX2NsZWFudXBzIChhcmdzX2NoYWlu KTsKKysKKyAgIC8qIFNldCB1cCB0aGUgInNhdmVkIHRlcm1pbmFsIG1vZGVzIiBvZiB0aGUgaW5m ZXJpb3IKKyAgICAgIGJhc2VkIG9uIHdoYXQgbW9kZXMgd2UgYXJlIHN0YXJ0aW5nIGl0IHdpdGgu ICAqLworICAgdGFyZ2V0X3Rlcm1pbmFsX2luaXQgKCk7CisjIyMgYS9nZGIvdGVzdHN1aXRlL0No YW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTEgQEAK KyAyMDE0LTEwLTE3ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorIAorKwlQUiBn ZGIvMTc0NzEKKysJKiBnZGIuYmFzZS9iZy1leGVjdXRpb24tcmVwZWF0LmM6IE5ldyBmaWxlLgor KwkqIGdkYi5iYXNlL2JnLWV4ZWN1dGlvbi1yZXBlYXQuZXhwOiBOZXcgZmlsZS4KKysKKysyMDE0 LTEwLTE3ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorKworIAlQUiBnZGIvMTcz MDAKKyAJKiBnZGIuYmFzZS9jb250aW51ZS1hbGwtYWxyZWFkeS1ydW5uaW5nLmM6IE5ldyBmaWxl LgorIAkqIGdkYi5iYXNlL2NvbnRpbnVlLWFsbC1hbHJlYWR5LXJ1bm5pbmcuZXhwOiBOZXcgZmls ZS4KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYmctZXhlY3V0 aW9uLXJlcGVhdC5jCitAQCAtMCwwICsxLDMzIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKworK2ludAorK2ZvbyAodm9p ZCkKKyt7CisrICByZXR1cm4gMDsgLyogc2V0IGJyZWFrIGhlcmUgKi8KKyt9CisrCisraW50Cisr bWFpbiAodm9pZCkKKyt7CisrICBmb28gKCk7CisrICBzbGVlcCAoNSk7CisrICBmb28gKCk7Cisr ICByZXR1cm4gMDsKKyt9CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2JnLWV4ZWN1dGlvbi1yZXBlYXQuZXhwCitAQCAtMCwwICsxLDg2IEBACisrIyBDb3B5cmln aHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCB0aGF0IHJlcGVhdGluZyBhIGJhY2tncm91 bmQgY29tbWFuZCBkb2Vzbid0IGxvc2UgdGhlICImIiBpbiB0aGUKKysjIHJlcGVhdCwgdHVybmlu ZyBhIGJhY2tncm91bmQgY29tbWFuZCBpbnRvIGEgZm9yZWdyb3VuZCBjb21tYW5kLiAgU2VlCisr IyBQUiBnZGIvMTc0NzEuCisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKysKKytpZiB7IFtidWlsZF9l eGVjdXRhYmxlICJmYWlsZWQgdG8gcHJlcGFyZSIgJHt0ZXN0ZmlsZX0gJHNyY2ZpbGVdIH0gewor KyAgICByZXR1cm4gLTEKKyt9CisrCisrc2V0IGxpbmVudW0gW2dkYl9nZXRfbGluZV9udW1iZXIg InNldCBicmVhayBoZXJlIl0KKysKKysjIFJ1biB0aGUgdGVzdCBwcm9wZXIuICBDT05USU5VRV9D TUQgaXMgdGhlIGJhY2tncm91bmQgY29udGludWUKKysjIGNvbW1hbmQgdG8gaXNzdWUuCisrCisr cHJvYyB0ZXN0IHtjb250aW51ZV9jbWR9IHsKKysgICAgZ2xvYmFsIGdkYl9wcm9tcHQKKysgICAg Z2xvYmFsIGJpbmZpbGUKKysgICAgZ2xvYmFsIGxpbmVudW0KKysKKysgICAgY2xlYW5fcmVzdGFy dCAkYmluZmlsZQorKworKyAgICBpZiAhW3J1bnRvX21haW5dIHsKKysJcmV0dXJuCisrICAgIH0K KysKKysgICAgZ2RiX2JyZWFrcG9pbnQgIiRsaW5lbnVtIgorKworKyAgICBzZXQgdGVzdCAkY29u dGludWVfY21kCisrICAgIGdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysJLXJlICJD b250aW51aW5nXFwuXHJcbiRnZGJfcHJvbXB0ICIgeworKwkgICAgIyBOb3RlIG5vIGVuZCBhbmNo b3IuICBJZiB0aGUgYnJlYWtwb2ludCB0cmlnZ2VycyBzb29uIGVub3VnaAorKwkgICAgIyBlbm91 Z2ggd2Ugc2VlIGZ1cnRoZXIgb3V0cHV0IGFmdGVyIHRoZSBwcm9tcHQuCisrCSAgICBwYXNzICR0 ZXN0CisrCX0KKysgICAgfQorKworKyAgICAjIFdhaXQgZm9yIHRoZSBzdG9wLiAgRG9uJ3QgZXhw ZWN0IGEgcHJvbXB0LCBhcyB3ZSBoYWQgcmVzdW1lZCB0aGUKKysgICAgIyBpbmZlcmlvciBpbiB0 aGUgYmFja2dyb3VuZC4KKysgICAgc2V0IHRlc3QgImJyZWFrcG9pbnQgaGl0IDEiCisrICAgIGdk Yl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKKysJLXJlICJzZXQgYnJlYWsgaGVyZSIgeworKwkg ICAgcGFzcyAkdGVzdAorKwl9CisrICAgIH0KKysKKysgICAgIyBUcmlnZ2VyIGEgcmVwZWF0LiAg QnVnZ3kgR0RCIHVzZWQgdG8gbG9zZSB0aGUgIiYiLCBtYWtpbmcgdGhpcyBhCisrICAgICMgZm9y ZWdyb3VuZCBjb21tYW5kLi4uCisrICAgIHNlbmRfZ2RiICJcbiIKKysgICAgZ2RiX3Rlc3QgIiIg IkNvbnRpbnVpbmdcXC4iICJyZXBlYXQgYmcgY29tbWFuZCIKKysKKysgICAgIyAuLi4gYW5kIHRo dXMgZnVydGhlciBpbnB1dCB3b3VsZG4ndCBiZSBwcm9jZXNzZWQgdW50aWwgdGhlIHRhcmdldAor KyAgICAjIHN0b3BwZWQuCisrICAgIGdkYl90ZXN0ICJwcmludCAxIiAiID0gMSIgImlucHV0IHN0 aWxsIGFjY2VwdGVkIgorKworKyAgICAjIE1ha2Ugc3VyZSB3ZSBzZWUgYSBzdG9wIGFmdGVyIHRo ZSBwcmludCwgYW5kIG5vdCBiZWZvcmUuICBEb24ndAorKyAgICAjIGV4cGVjdCBhIHByb21wdCwg YXMgd2UgaGFkIHJlc3VtZWQgdGhlIGluZmVyaW9yIGluIHRoZSBiYWNrZ3JvdW5kLgorKyAgICBz ZXQgdGVzdCAiYnJlYWtwb2ludCBoaXQgMiIKKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRl c3QgeworKwktcmUgInNldCBicmVhayBoZXJlIC4uXHJcbiIgeworKwkgICAgcGFzcyAkdGVzdAor Kwl9CisrICAgIH0KKyt9CisrCisrIyBUZXN0IHdpdGggYW5kIHdpdGhvdXQgZXh0cmEgYXJndW1l bnRzLgorK2ZvcmVhY2ggY21kIHsiYyYiICJjIDEmIn0geworKyAgICB3aXRoX3Rlc3RfcHJlZml4 ICRjbWQgeworKwl0ZXN0ICRjbWQKKysgICAgfQorK30KKy0tIAorMS45LjMKKwoKZGlmZiAtLWdp dCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggNDIwZDE2Ny4uNzg3ZTgzZSAxMDA2NDQKLS0t IGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTI2LDcgKzI2LDcgQEAgVmVyc2lvbjogNy44 CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1i ZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScg dG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5n LgotUmVsZWFzZTogMjUlez9kaXN0fQorUmVsZWFzZTogMjYlez9kaXN0fQogCiBMaWNlbnNlOiBH UEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdp dGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9t YWluIGFuZCBHRkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC03MjIsOCArNzIy LDggQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICMgTWF0Y2ggdGhlIEZlZG9y YSdzIHZlcnNpb24gaW5mby4KICVwYXRjaDIgLXAxCiAKLSVwYXRjaDM0OSAtcDEKICVwYXRjaDIz MiAtcDEKKyVwYXRjaDM0OSAtcDEKICVwYXRjaDg4OCAtcDEKICVwYXRjaDkxMiAtcDEKICVwYXRj aDg4OSAtcDEKQEAgLTEzMzksNiArMTMzOSw5IEBAIHRoZW4KIGZpCiAKICVjaGFuZ2Vsb2cKKyog U3VuIE9jdCAxOSAyMDE0IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PiAtIDcuOC0yNi5mYzIxCistIEltcG9ydCA1IHVwc3RyZWFtIGdkYi03LjggYnJhbmNoIGZpeGVz IChhc3luYyBmaXggYnkgUGVkcm8gQWx2ZXMpLgorCiAqIEZyaSBPY3QgMDMgMjAxNCBTZXJnaW8g RHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+IC0gNy44LTI1LmZjMjEKIC0gRml4 ICdTbG93IGdzdGFjayBwZXJmb3JtYW5jZScgKFJIIEJaIDExMDM4OTQsIEphbiBLcmF0b2Nodmls KS4KIAo=