From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3422443452 for ; Wed, 13 Jul 2022 10:50:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D402168B92F; Wed, 13 Jul 2022 13:50:38 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3DEC168B380 for ; Wed, 13 Jul 2022 13:50:32 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 6D3E4240179 for ; Wed, 13 Jul 2022 12:50:31 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id kmGNSJX5Bc00 for ; Wed, 13 Jul 2022 12:50:29 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 48F2A2400F5 for ; Wed, 13 Jul 2022 12:50:29 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 1C2C93A030D; Wed, 13 Jul 2022 12:50:29 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 13 Jul 2022 12:50:28 +0200 Message-Id: <20220713105028.24396-1-anton@khirnov.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220623100406.31710-1-anton@khirnov.net> References: <20220623100406.31710-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] fftools/ffmpeg: rework -shortest implementation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhlIC1zaG9ydGVzdCBvcHRpb24gKHdoaWNoIGZpbmlzaGVzIHRoZSBvdXRwdXQgZmlsZSBhdCB0 aGUgdGltZSB0aGUKc2hvcnRlc3Qgc3RyZWFtIGVuZHMpIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRl ZCBieSBmYWtpbmcgdGhlIC10IG9wdGlvbgp3aGVuIGFuIG91dHB1dCBzdHJlYW0gZW5kcy4gVGhp cyBhcHByb2FjaCBpcyBmcmFnaWxlLCBzaW5jZSBpdCBkZXBlbmRzCm9uIHRoZSBmcmFtZXMvcGFj a2V0cyBiZWluZyBwcm9jZXNzZWQgaW4gYSBzcGVjaWZpYyBvcmRlci4gRS5nLiB0aGVyZQphcmUg Y3VycmVudGx5IHNvbWUgc2l0dWF0aW9ucyBpbiB3aGljaCB0aGUgb3V0cHV0IGZpbGUgbGVuZ3Ro IHdpbGwKZGVwZW5kIHVucHJlZGljdGFibHkgb24gdW5yZWxhdGVkIGZhY3RvcnMgbGlrZSBlbmNv ZGVyIGRlbGF5LiBNb3JlCmltcG9ydGFudGx5LCB0aGUgcHJlc2VudCB3b3JrIGFpbWluZyBhdCBz cGxpdHRpbmcgdmFyaW91cyBmZm1wZWcKY29tcG9uZW50cyBpbnRvIGRpZmZlcmVudCB0aHJlYWRz IHdpbGwgbWFrZSB0aGlzIGFwcHJvYWNoIGNvbXBsZXRlbHkKdW53b3JrYWJsZSwgc2luY2UgdGhl IGZyYW1lcy9wYWNrZXRzIHdpbGwgYXJyaXZlIGluIGVmZmVjdGl2ZWx5IHJhbmRvbQpvcmRlci4K ClRoaXMgY29tbWl0IGludHJvZHVjZXMgYSAic3luYyBxdWV1ZSIsIHdoaWNoIGlzIGVzc2VudGlh bGx5IGEgY29sbGVjdGlvbgpvZiBGSUZPcywgb25lIHBlciBzdHJlYW0uIEZyYW1lcy9wYWNrZXRz IGFyZSBzdWJtaXR0ZWQgdG8gdGhlc2UgRklGT3MKYW5kIGFyZSB0aGVuIHJlbGVhc2VkIGZvciBm dXJ0aGVyIHByb2Nlc3NpbmcgKGVuY29kaW5nIG9yIG11eGluZykgd2hlbgppdCBpcyBlbnN1cmVk IHRoYXQgdGhlIGZyYW1lIGluIHF1ZXN0aW9uIHdpbGwgbm90IGNhdXNlIGl0cyBzdHJlYW0gdG8K Z2V0IGFoZWFkIG9mIHRoZSBvdGhlciBzdHJlYW1zICh0aGUgbG9naWMgaXMgc2ltaWxhciB0byBs aWJhdmZvcm1hdCdzCmludGVybGVhdmluZyBxdWV1ZSkuCgpUaGVzZSBzeW5jIHF1ZXVlcyBhcmUg dGhlbiB1c2VkIGZvciBlbmNvZGluZyBhbmQvb3IgbXV4aW5nIHdoZW4gdGhlCi1zaG9ydGVzdCBv cHRpb24gaXMgc3BlY2lmaWVkLgoKQSBuZXcgb3B0aW9uIOKAkyAtc2hvcnRlc3RfYnVmX2R1cmF0 aW9uIOKAkyBjb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YKcXVldWVkIHBhY2tldHMsIHRv IGF2b2lkIHJ1bmF3YXkgbWVtb3J5IHVzYWdlLgoKVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgcmVz dWx0cyBvZiB0aGUgZm9sbG93aW5nIHRlc3RzOgotIGNvcHktc2hvcnRlc3RbMTJdOiB0aGUgbGFz dCBhdWRpbyBmcmFtZSBpcyBub3cgZ29uZS4gVGhpcyBpcwogIGNvcnJlY3QsIHNpbmNlIGl0IGFj dHVhbGx5IG91dGxhc3RzIHRoZSBsYXN0IHZpZGVvIGZyYW1lLgotIHNob3J0ZXN0LXN1YjogdGhl IHZpZGVvIHBhY2tldHMgZm9sbG93aW5nIHRoZSBsYXN0IHN1YnRpdGxlIHBhY2tldCBhcmUKICBu b3cgZ29uZS4gVGhpcyBpcyBhbHNvIGNvcnJlY3QuCi0tLQpOb3cgc2V0dGluZyB2aWRlbyBmcmFt ZSBkdXJhdGlvbnMgaW4gZG9fdmlkZW9fb3V0KCksIHNvIHRoZSBzeW5jIHF1ZXVlCmNhbiBhY2Nv dW50IGZvciB0aGVtIGNvcnJlY3RseS4KLS0tCiBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBkb2MvZmZtcGVnLnRleGkgICAgICAgICAgICAgICB8ICAxNiArKwogZmZ0b29s cy9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKwogZmZ0b29scy9mZm1wZWcuYyAgICAgICAg ICAgICAgfCAxMDkgKysrKysrLS0tCiBmZnRvb2xzL2ZmbXBlZy5oICAgICAgICAgICAgICB8ICAg OSArCiBmZnRvb2xzL2ZmbXBlZ19tdXguYyAgICAgICAgICB8ICA2NyArKysrKy0KIGZmdG9vbHMv ZmZtcGVnX29wdC5jICAgICAgICAgIHwgIDgyICsrKysrKysKIGZmdG9vbHMvc3luY19xdWV1ZS5j ICAgICAgICAgIHwgNDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGZmdG9v bHMvc3luY19xdWV1ZS5oICAgICAgICAgIHwgMTAwICsrKysrKysrCiB0ZXN0cy9mYXRlL2ZmbXBl Zy5tYWsgICAgICAgICB8ICAgMiArLQogdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEgfCAg IDEgLQogdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDIgfCAgIDEgLQogdGVzdHMvcmVmL2Zh dGUvc2hvcnRlc3Qtc3ViICAgfCAgIDQgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDc3OCBpbnNlcnRp b25zKCspLCA0MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBmZnRvb2xzL3N5bmNf cXVldWUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGZmdG9vbHMvc3luY19xdWV1ZS5oCgpkaWZmIC0t Z2l0IGEvQ2hhbmdlbG9nIGIvQ2hhbmdlbG9nCmluZGV4IGJhNjc5YWE2NGUuLjlmMGFmODZjOWIg MTAwNjQ0Ci0tLSBhL0NoYW5nZWxvZworKysgYi9DaGFuZ2Vsb2cKQEAgLTIzLDYgKzIzLDcgQEAg dmVyc2lvbiA1LjE6CiAtIHZpcnR1YWxiYXNzIGF1ZGlvIGZpbHRlcgogLSBWRFBBVSBBVjEgaHdh Y2NlbAogLSBQSE0gaW1hZ2UgZm9ybWF0IHN1cHBvcnQKKy0gZmZtcGVnIC1zaG9ydGVzdF9idWZf ZHVyYXRpb24gb3B0aW9uCiAKIAogdmVyc2lvbiA1LjA6CmRpZmYgLS1naXQgYS9kb2MvZmZtcGVn LnRleGkgYi9kb2MvZmZtcGVnLnRleGkKaW5kZXggMWE1MzRmZjFjYy4uZTAxODZhYmNjMiAxMDA2 NDQKLS0tIGEvZG9jL2ZmbXBlZy50ZXhpCisrKyBiL2RvYy9mZm1wZWcudGV4aQpAQCAtMTc1MCw2 ICsxNzUwLDIyIEBAIERlZmF1bHQgdmFsdWUgaXMgMC4KIEVuYWJsZSBiaXRleGFjdCBtb2RlIGZv ciAoZGUpbXV4ZXIgYW5kIChkZS9lbiljb2RlcgogQGl0ZW0gLXNob3J0ZXN0IChAZW1waHtvdXRw dXR9KQogRmluaXNoIGVuY29kaW5nIHdoZW4gdGhlIHNob3J0ZXN0IG91dHB1dCBzdHJlYW0gZW5k cy4KKworTm90ZSB0aGF0IHRoaXMgb3B0aW9uIG1heSByZXF1aXJlIGJ1ZmZlcmluZyBmcmFtZXMs IHdoaWNoIGludHJvZHVjZXMgZXh0cmEKK2xhdGVuY3kuIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0 aGlzIGxhdGVuY3kgbWF5IGJlIGNvbnRyb2xsZWQgd2l0aCB0aGUKK0Bjb2Rley1zaG9ydGVzdF9i dWZfZHVyYXRpb259IG9wdGlvbi4KKworQGl0ZW0gLXNob3J0ZXN0X2J1Zl9kdXJhdGlvbiBAdmFy e2R1cmF0aW9ufSAoQGVtcGh7b3V0cHV0fSkKK1RoZSBAY29kZXstc2hvcnRlc3R9IG9wdGlvbiBt YXkgcmVxdWlyZSBidWZmZXJpbmcgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50cworb2YgZGF0YSB3 aGVuIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3RyZWFtcyBpcyAic3BhcnNlIiAoaS5lLiBoYXMgbGFy Z2UgZ2FwcworYmV0d2VlbiBmcmFtZXMg4oCTIHRoaXMgaXMgdHlwaWNhbGx5IHRoZSBjYXNlIGZv ciBzdWJ0aXRsZXMpLgorCitUaGlzIG9wdGlvbiBjb250cm9scyB0aGUgbWF4aW11bSBkdXJhdGlv biBvZiBidWZmZXJlZCBmcmFtZXMgaW4gc2Vjb25kcy4KK0xhcmdlciB2YWx1ZXMgbWF5IGFsbG93 IHRoZSBAY29kZXstc2hvcnRlc3R9IG9wdGlvbiB0byBwcm9kdWNlIG1vcmUgYWNjdXJhdGUKK3Jl c3VsdHMsIGJ1dCBpbmNyZWFzZSBtZW1vcnkgdXNlIGFuZCBsYXRlbmN5LgorCitUaGUgZGVmYXVs dCB2YWx1ZSBpcyAxMCBzZWNvbmRzLgorCiBAaXRlbSAtZHRzX2RlbHRhX3RocmVzaG9sZAogVGlt ZXN0YW1wIGRpc2NvbnRpbnVpdHkgZGVsdGEgdGhyZXNob2xkLgogQGl0ZW0gLWR0c19lcnJvcl90 aHJlc2hvbGQgQHZhcntzZWNvbmRzfQpkaWZmIC0tZ2l0IGEvZmZ0b29scy9NYWtlZmlsZSBiL2Zm dG9vbHMvTWFrZWZpbGUKaW5kZXggODFhZDZjNGY0Zi4uYmM1N2ViZTc0OCAxMDA2NDQKLS0tIGEv ZmZ0b29scy9NYWtlZmlsZQorKysgYi9mZnRvb2xzL01ha2VmaWxlCkBAIC0xNCw2ICsxNCw4IEBA IE9CSlMtZmZtcGVnICs9ICAgICAgICAgICAgICAgICAgXAogICAgIGZmdG9vbHMvZmZtcGVnX2h3 Lm8gICAgICAgICBcCiAgICAgZmZ0b29scy9mZm1wZWdfbXV4Lm8gICAgICAgIFwKICAgICBmZnRv b2xzL2ZmbXBlZ19vcHQubyAgICAgICAgXAorICAgIGZmdG9vbHMvb2JqcG9vbC5vICAgICAgICAg ICBcCisgICAgZmZ0b29scy9zeW5jX3F1ZXVlLm8gICAgICAgIFwKIAogZGVmaW5lIERPRkZUT09M CiBPQkpTLSQoMSkgKz0gZmZ0b29scy9jbWR1dGlscy5vIGZmdG9vbHMvb3B0X2NvbW1vbi5vIGZm dG9vbHMvJCgxKS5vICQoT0JKUy0kKDEpLXllcykKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVn LmMgYi9mZnRvb2xzL2ZmbXBlZy5jCmluZGV4IDlkZGQyOTI1MTIuLmI2OWY0MGNjOGUgMTAwNjQ0 Ci0tLSBhL2ZmdG9vbHMvZmZtcGVnLmMKKysrIGIvZmZ0b29scy9mZm1wZWcuYwpAQCAtMTA0LDYg KzEwNCw3IEBACiAKICNpbmNsdWRlICJmZm1wZWcuaCIKICNpbmNsdWRlICJjbWR1dGlscy5oIgor I2luY2x1ZGUgInN5bmNfcXVldWUuaCIKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5o IgogCkBAIC01NjksNiArNTcwLDcgQEAgc3RhdGljIHZvaWQgZmZtcGVnX2NsZWFudXAoaW50IHJl dCkKICAgICAgICAgYXZfYnNmX2ZyZWUoJm9zdC0+YnNmX2N0eCk7CiAKICAgICAgICAgYXZfZnJh bWVfZnJlZSgmb3N0LT5maWx0ZXJlZF9mcmFtZSk7CisgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJm9z dC0+c3FfZnJhbWUpOwogICAgICAgICBhdl9mcmFtZV9mcmVlKCZvc3QtPmxhc3RfZnJhbWUpOwog ICAgICAgICBhdl9wYWNrZXRfZnJlZSgmb3N0LT5wa3QpOwogICAgICAgICBhdl9kaWN0X2ZyZWUo Jm9zdC0+ZW5jb2Rlcl9vcHRzKTsKQEAgLTY5MSwxMyArNjkzLDEwIEBAIHN0YXRpYyB2b2lkIHVw ZGF0ZV9iZW5jaG1hcmsoY29uc3QgY2hhciAqZm10LCAuLi4pCiBzdGF0aWMgdm9pZCBjbG9zZV9v dXRwdXRfc3RyZWFtKE91dHB1dFN0cmVhbSAqb3N0KQogewogICAgIE91dHB1dEZpbGUgKm9mID0g b3V0cHV0X2ZpbGVzW29zdC0+ZmlsZV9pbmRleF07Ci0gICAgQVZSYXRpb25hbCB0aW1lX2Jhc2Ug PSBvc3QtPnN0cmVhbV9jb3B5ID8gb3N0LT5tdXhfdGltZWJhc2UgOiBvc3QtPmVuY19jdHgtPnRp bWVfYmFzZTsKLQogICAgIG9zdC0+ZmluaXNoZWQgfD0gRU5DT0RFUl9GSU5JU0hFRDsKLSAgICBp ZiAob2YtPnNob3J0ZXN0KSB7Ci0gICAgICAgIGludDY0X3QgZW5kID0gYXZfcmVzY2FsZV9xKG9z dC0+c3luY19vcHRzIC0gb3N0LT5maXJzdF9wdHMsIHRpbWVfYmFzZSwgQVZfVElNRV9CQVNFX1Ep OwotICAgICAgICBvZi0+cmVjb3JkaW5nX3RpbWUgPSBGRk1JTihvZi0+cmVjb3JkaW5nX3RpbWUs IGVuZCk7Ci0gICAgfQorCisgICAgaWYgKG9zdC0+c3FfaWR4X2VuY29kZSA+PSAwKQorICAgICAg ICBzcV9zZW5kKG9mLT5zcV9lbmNvZGUsIG9zdC0+c3FfaWR4X2VuY29kZSwgU1FGUkFNRShOVUxM KSk7CiB9CiAKIC8qCkBAIC03MjYsMTAgKzcyNSwxNSBAQCBzdGF0aWMgdm9pZCBvdXRwdXRfcGFj a2V0KE91dHB1dEZpbGUgKm9mLCBBVlBhY2tldCAqcGt0LAogICAgICAgICAgICAgZ290byBmaW5p c2g7CiAgICAgICAgIHdoaWxlICgocmV0ID0gYXZfYnNmX3JlY2VpdmVfcGFja2V0KG9zdC0+YnNm X2N0eCwgcGt0KSkgPj0gMCkKICAgICAgICAgICAgIG9mX3N1Ym1pdF9wYWNrZXQob2YsIHBrdCwg b3N0KTsKKyAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRikKKyAgICAgICAgICAgIG9mX3N1 Ym1pdF9wYWNrZXQob2YsIE5VTEwsIG9zdCk7CiAgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUihF QUdBSU4pKQogICAgICAgICAgICAgcmV0ID0gMDsKLSAgICB9IGVsc2UgaWYgKCFlb2YpCi0gICAg ICAgIG9mX3N1Ym1pdF9wYWNrZXQob2YsIHBrdCwgb3N0KTsKKyAgICB9IGVsc2UKKyAgICAgICAg b2Zfc3VibWl0X3BhY2tldChvZiwgZW9mID8gTlVMTCA6IHBrdCwgb3N0KTsKKworICAgIGlmIChl b2YpCisgICAgICAgIG9zdC0+ZmluaXNoZWQgfD0gTVVYRVJfRklOSVNIRUQ7CiAKIGZpbmlzaDoK ICAgICBpZiAocmV0IDwgMCAmJiByZXQgIT0gQVZFUlJPUl9FT0YpIHsKQEAgLTg5MSw2ICs4OTUs NyBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShPdXRwdXRGaWxlICpvZiwgT3V0cHV0U3RyZWFt ICpvc3QsIEFWRnJhbWUgKmZyYW1lKQogCiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIG9zdC0+ ZnJhbWVzX2VuY29kZWQrKzsKKyAgICAgICAgb3N0LT5zYW1wbGVzX2VuY29kZWQgKz0gZnJhbWUt Pm5iX3NhbXBsZXM7CiAKICAgICAgICAgaWYgKGRlYnVnX3RzKSB7CiAgICAgICAgICAgICBhdl9s b2coTlVMTCwgQVZfTE9HX0lORk8sICJlbmNvZGVyIDwtIHR5cGU6JXMgIgpAQCAtOTYzLDYgKzk2 OCw1MiBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShPdXRwdXRGaWxlICpvZiwgT3V0cHV0U3Ry ZWFtICpvc3QsIEFWRnJhbWUgKmZyYW1lKQogICAgIGF2X2Fzc2VydDAoMCk7CiB9CiAKK3N0YXRp YyBpbnQgc3VibWl0X2VuY29kZV9mcmFtZShPdXRwdXRGaWxlICpvZiwgT3V0cHV0U3RyZWFtICpv c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZGcmFtZSAqZnJhbWUpCit7Cisg ICAgaW50IHJldDsKKworICAgIGlmIChvc3QtPnNxX2lkeF9lbmNvZGUgPCAwKQorICAgICAgICBy ZXR1cm4gZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIGZyYW1lKTsKKworICAgIGlmIChmcmFtZSkgewor ICAgICAgICByZXQgPSBhdl9mcmFtZV9yZWYob3N0LT5zcV9mcmFtZSwgZnJhbWUpOworICAgICAg ICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIGZyYW1lID0g b3N0LT5zcV9mcmFtZTsKKyAgICB9CisKKyAgICByZXQgPSBzcV9zZW5kKG9mLT5zcV9lbmNvZGUs IG9zdC0+c3FfaWR4X2VuY29kZSwKKyAgICAgICAgICAgICAgICAgIFNRRlJBTUUoZnJhbWUpKTsK KyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgICBhdl9m cmFtZV91bnJlZihmcmFtZSk7CisgICAgICAgIGlmIChyZXQgIT0gQVZFUlJPUl9FT0YpCisgICAg ICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIEFW RnJhbWUgKmVuY19mcmFtZSA9IG9zdC0+c3FfZnJhbWU7CisKKyAgICAgICAgcmV0ID0gc3FfcmVj ZWl2ZShvZi0+c3FfZW5jb2RlLCBvc3QtPnNxX2lkeF9lbmNvZGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU1FGUkFNRShlbmNfZnJhbWUpKTsKKyAgICAgICAgaWYgKHJldCA9PSBB VkVSUk9SX0VPRikgeworICAgICAgICAgICAgZW5jX2ZyYW1lID0gTlVMTDsKKyAgICAgICAgfSBl bHNlIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gKHJldCA9PSBBVkVSUk9SKEVB R0FJTikpID8gMCA6IHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IGVuY29kZV9mcmFt ZShvZiwgb3N0LCBlbmNfZnJhbWUpOworICAgICAgICBpZiAoZW5jX2ZyYW1lKQorICAgICAgICAg ICAgYXZfZnJhbWVfdW5yZWYoZW5jX2ZyYW1lKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAg ICAgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUl9FT0YpCisgICAgICAgICAgICAgICAgY2xvc2Vf b3V0cHV0X3N0cmVhbShvc3QpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQor ICAgIH0KK30KKwogc3RhdGljIHZvaWQgZG9fYXVkaW9fb3V0KE91dHB1dEZpbGUgKm9mLCBPdXRw dXRTdHJlYW0gKm9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBBVkZyYW1lICpmcmFtZSkK IHsKQEAgLTk3NiwxMCArMTAyNyw5IEBAIHN0YXRpYyB2b2lkIGRvX2F1ZGlvX291dChPdXRwdXRG aWxlICpvZiwgT3V0cHV0U3RyZWFtICpvc3QsCiAgICAgaWYgKGZyYW1lLT5wdHMgPT0gQVZfTk9Q VFNfVkFMVUUgfHwgYXVkaW9fc3luY19tZXRob2QgPCAwKQogICAgICAgICBmcmFtZS0+cHRzID0g b3N0LT5zeW5jX29wdHM7CiAgICAgb3N0LT5zeW5jX29wdHMgPSBmcmFtZS0+cHRzICsgZnJhbWUt Pm5iX3NhbXBsZXM7Ci0gICAgb3N0LT5zYW1wbGVzX2VuY29kZWQgKz0gZnJhbWUtPm5iX3NhbXBs ZXM7CiAKLSAgICByZXQgPSBlbmNvZGVfZnJhbWUob2YsIG9zdCwgZnJhbWUpOwotICAgIGlmIChy ZXQgPCAwKQorICAgIHJldCA9IHN1Ym1pdF9lbmNvZGVfZnJhbWUob2YsIG9zdCwgZnJhbWUpOwor ICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBBVkVSUk9SX0VPRikKICAgICAgICAgZXhpdF9wcm9n cmFtKDEpOwogfQogCkBAIC0xMTQzLDE1ICsxMTkzLDE4IEBAIHN0YXRpYyB2b2lkIGRvX3ZpZGVv X291dChPdXRwdXRGaWxlICpvZiwKICAgICAgICAgICAgICAgICBpZiAoZGVsdGEwID4gMS4xKQog ICAgICAgICAgICAgICAgICAgICBuYjBfZnJhbWVzID0gbGxyaW50ZihkZWx0YTAgLSAwLjYpOwog ICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV4dF9waWN0dXJlLT5wa3RfZHVyYXRpb24gPSAx OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVlNZTkNfVkZSOgogICAgICAgICAg ICAgaWYgKGRlbHRhIDw9IC0wLjYpCiAgICAgICAgICAgICAgICAgbmJfZnJhbWVzID0gMDsKICAg ICAgICAgICAgIGVsc2UgaWYgKGRlbHRhID4gMC42KQogICAgICAgICAgICAgICAgIG9zdC0+c3lu Y19vcHRzID0gbGxyaW50KHN5bmNfaXB0cyk7CisgICAgICAgICAgICBuZXh0X3BpY3R1cmUtPnBr dF9kdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug VlNZTkNfRFJPUDoKICAgICAgICAgY2FzZSBWU1lOQ19QQVNTVEhST1VHSDoKKyAgICAgICAgICAg IG5leHRfcGljdHVyZS0+cGt0X2R1cmF0aW9uID0gZHVyYXRpb247CiAgICAgICAgICAgICBvc3Qt PnN5bmNfb3B0cyA9IGxscmludChzeW5jX2lwdHMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGRlZmF1bHQ6CkBAIC0xMjY1LDggKzEzMTgsOCBAQCBzdGF0aWMgdm9pZCBkb192aWRlb19v dXQoT3V0cHV0RmlsZSAqb2YsCiAgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0RFQlVH LCAiRm9yY2VkIGtleWZyYW1lIGF0IHRpbWUgJWZcbiIsIHB0c190aW1lKTsKICAgICAgICAgfQog Ci0gICAgICAgIHJldCA9IGVuY29kZV9mcmFtZShvZiwgb3N0LCBpbl9waWN0dXJlKTsKLSAgICAg ICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldCA9IHN1Ym1pdF9lbmNvZGVfZnJhbWUob2YsIG9z dCwgaW5fcGljdHVyZSk7CisgICAgICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBBVkVSUk9SX0VP RikKICAgICAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKIAogICAgICAgICBvc3QtPnN5bmNfb3B0 cysrOwpAQCAtMTI3OCwxOSArMTMzMSw2IEBAIHN0YXRpYyB2b2lkIGRvX3ZpZGVvX291dChPdXRw dXRGaWxlICpvZiwKICAgICAgICAgYXZfZnJhbWVfbW92ZV9yZWYob3N0LT5sYXN0X2ZyYW1lLCBu ZXh0X3BpY3R1cmUpOwogfQogCi1zdGF0aWMgdm9pZCBmaW5pc2hfb3V0cHV0X3N0cmVhbShPdXRw dXRTdHJlYW0gKm9zdCkKLXsKLSAgICBPdXRwdXRGaWxlICpvZiA9IG91dHB1dF9maWxlc1tvc3Qt PmZpbGVfaW5kZXhdOwotICAgIEFWUmF0aW9uYWwgdGltZV9iYXNlID0gb3N0LT5zdHJlYW1fY29w eSA/IG9zdC0+bXV4X3RpbWViYXNlIDogb3N0LT5lbmNfY3R4LT50aW1lX2Jhc2U7Ci0KLSAgICBv c3QtPmZpbmlzaGVkID0gRU5DT0RFUl9GSU5JU0hFRCB8IE1VWEVSX0ZJTklTSEVEOwotCi0gICAg aWYgKG9mLT5zaG9ydGVzdCkgewotICAgICAgICBpbnQ2NF90IGVuZCA9IGF2X3Jlc2NhbGVfcShv c3QtPnN5bmNfb3B0cyAtIG9zdC0+Zmlyc3RfcHRzLCB0aW1lX2Jhc2UsIEFWX1RJTUVfQkFTRV9R KTsKLSAgICAgICAgb2YtPnJlY29yZGluZ190aW1lID0gRkZNSU4ob2YtPnJlY29yZGluZ190aW1l LCBlbmQpOwotICAgIH0KLX0KLQogLyoqCiAgKiBHZXQgYW5kIGVuY29kZSBuZXcgb3V0cHV0IGZy b20gYW55IG9mIHRoZSBmaWx0ZXJncmFwaHMsIHdpdGhvdXQgY2F1c2luZwogICogYWN0aXZpdHku CkBAIC0xNzU4LDcgKzE3OTgsNyBAQCBzdGF0aWMgdm9pZCBmbHVzaF9lbmNvZGVycyh2b2lkKQog ICAgICAgICAgICAgICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAgICAgICAgICAgICAgfQog Ci0gICAgICAgICAgICAgICAgZmluaXNoX291dHB1dF9zdHJlYW0ob3N0KTsKKyAgICAgICAgICAg ICAgICBvdXRwdXRfcGFja2V0KG9mLCBvc3QtPnBrdCwgb3N0LCAxKTsKICAgICAgICAgICAgIH0K IAogICAgICAgICAgICAgaW5pdF9vdXRwdXRfc3RyZWFtX3dyYXBwZXIob3N0LCBOVUxMLCAxKTsK QEAgLTE3NjcsNyArMTgwNyw3IEBAIHN0YXRpYyB2b2lkIGZsdXNoX2VuY29kZXJzKHZvaWQpCiAg ICAgICAgIGlmIChlbmMtPmNvZGVjX3R5cGUgIT0gQVZNRURJQV9UWVBFX1ZJREVPICYmIGVuYy0+ Y29kZWNfdHlwZSAhPSBBVk1FRElBX1RZUEVfQVVESU8pCiAgICAgICAgICAgICBjb250aW51ZTsK IAotICAgICAgICByZXQgPSBlbmNvZGVfZnJhbWUob2YsIG9zdCwgTlVMTCk7CisgICAgICAgIHJl dCA9IHN1Ym1pdF9lbmNvZGVfZnJhbWUob2YsIG9zdCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXQg IT0gQVZFUlJPUl9FT0YpCiAgICAgICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAgfQpAQCAt MzA3OCw2ICszMTE4LDkgQEAgc3RhdGljIGludCBpbml0X291dHB1dF9zdHJlYW1fZW5jb2RlKE91 dHB1dFN0cmVhbSAqb3N0LCBBVkZyYW1lICpmcmFtZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog CisgICAgaWYgKG9zdC0+c3FfaWR4X2VuY29kZSA+PSAwKQorICAgICAgICBzcV9zZXRfdGIob2Yt PnNxX2VuY29kZSwgb3N0LT5zcV9pZHhfZW5jb2RlLCBlbmNfY3R4LT50aW1lX2Jhc2UpOworCiAg ICAgb3N0LT5tdXhfdGltZWJhc2UgPSBlbmNfY3R4LT50aW1lX2Jhc2U7CiAKICAgICByZXR1cm4g MDsKQEAgLTMwODYsNiArMzEyOSw3IEBAIHN0YXRpYyBpbnQgaW5pdF9vdXRwdXRfc3RyZWFtX2Vu Y29kZShPdXRwdXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUpCiBzdGF0aWMgaW50IGluaXRf b3V0cHV0X3N0cmVhbShPdXRwdXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICplcnJvciwgaW50IGVycm9yX2xlbikKIHsKKyAg ICBPdXRwdXRGaWxlICpvZiA9IG91dHB1dF9maWxlc1tvc3QtPmZpbGVfaW5kZXhdOwogICAgIGlu dCByZXQgPSAwOwogCiAgICAgaWYgKG9zdC0+ZW5jb2RpbmdfbmVlZGVkKSB7CkBAIC0zMjE4LDYg KzMyNjIsOSBAQCBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRTdHJlYW0gKm9z dCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7 CiAKKyAgICBpZiAob3N0LT5zcV9pZHhfbXV4ID49IDApCisgICAgICAgIHNxX3NldF90YihvZi0+ c3FfbXV4LCBvc3QtPnNxX2lkeF9tdXgsIG9zdC0+bXV4X3RpbWViYXNlKTsKKwogICAgIG9zdC0+ aW5pdGlhbGl6ZWQgPSAxOwogCiAgICAgcmV0ID0gb2ZfY2hlY2tfaW5pdChvdXRwdXRfZmlsZXNb b3N0LT5maWxlX2luZGV4XSk7CkBAIC0zOTIyLDggKzM5NjksMTAgQEAgc3RhdGljIGludCBwcm9j ZXNzX2lucHV0KGludCBmaWxlX2luZGV4KQogICAgICAgICAgICAgICAgIE91dHB1dFN0cmVhbSAq b3N0ID0gb3V0cHV0X3N0cmVhbXNbal07CiAKICAgICAgICAgICAgICAgICBpZiAob3N0LT5zb3Vy Y2VfaW5kZXggPT0gaWZpbGUtPmlzdF9pbmRleCArIGkgJiYKLSAgICAgICAgICAgICAgICAgICAg KG9zdC0+c3RyZWFtX2NvcHkgfHwgb3N0LT5lbmMtPnR5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJ VExFKSkKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoX291dHB1dF9zdHJlYW0ob3N0KTsKKyAg ICAgICAgICAgICAgICAgICAgKG9zdC0+c3RyZWFtX2NvcHkgfHwgb3N0LT5lbmMtPnR5cGUgPT0g QVZNRURJQV9UWVBFX1NVQlRJVExFKSkgeworICAgICAgICAgICAgICAgICAgICBPdXRwdXRGaWxl ICpvZiA9IG91dHB1dF9maWxlc1tvc3QtPmZpbGVfaW5kZXhdOworICAgICAgICAgICAgICAgICAg ICBvdXRwdXRfcGFja2V0KG9mLCBvc3QtPnBrdCwgb3N0LCAxKTsKKyAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvZmZ0b29scy9mZm1wZWcu aCBiL2ZmdG9vbHMvZmZtcGVnLmgKaW5kZXggMDEzNWQyOGU4OS4uNDIyM2M5OTU4YyAxMDA2NDQK LS0tIGEvZmZ0b29scy9mZm1wZWcuaAorKysgYi9mZnRvb2xzL2ZmbXBlZy5oCkBAIC0yNiw2ICsy Niw3IEBACiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKICNpbmNsdWRlICJjbWR1dGlscy5oIgorI2lu Y2x1ZGUgInN5bmNfcXVldWUuaCIKIAogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmgi CiAjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZpby5oIgpAQCAtMTUwLDYgKzE1MSw3IEBAIHR5cGVk ZWYgc3RydWN0IE9wdGlvbnNDb250ZXh0IHsKICAgICBpbnQ2NF90IGxpbWl0X2ZpbGVzaXplOwog ICAgIGZsb2F0IG11eF9wcmVsb2FkOwogICAgIGZsb2F0IG11eF9tYXhfZGVsYXk7CisgICAgZmxv YXQgc2hvcnRlc3RfYnVmX2R1cmF0aW9uOwogICAgIGludCBzaG9ydGVzdDsKICAgICBpbnQgYml0 ZXhhY3Q7CiAKQEAgLTQ4Miw2ICs0ODQsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRTdHJlYW0g ewogICAgIGludDY0X3QgbWF4X2ZyYW1lczsKICAgICBBVkZyYW1lICpmaWx0ZXJlZF9mcmFtZTsK ICAgICBBVkZyYW1lICpsYXN0X2ZyYW1lOworICAgIEFWRnJhbWUgKnNxX2ZyYW1lOwogICAgIEFW UGFja2V0ICpwa3Q7CiAgICAgaW50NjRfdCBsYXN0X2Ryb3BwZWQ7CiAgICAgaW50NjRfdCBsYXN0 X25iMF9mcmFtZXNbM107CkBAIC01NzMsNiArNTc2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0 U3RyZWFtIHsKIAogICAgIC8qIGZyYW1lIGVuY29kZSBzdW0gb2Ygc3F1YXJlZCBlcnJvciB2YWx1 ZXMgKi8KICAgICBpbnQ2NF90IGVycm9yWzRdOworCisgICAgaW50IHNxX2lkeF9lbmNvZGU7Cisg ICAgaW50IHNxX2lkeF9tdXg7CiB9IE91dHB1dFN0cmVhbTsKIAogdHlwZWRlZiBzdHJ1Y3QgTXV4 ZXIgTXV4ZXI7CkBAIC01ODMsNiArNTg5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0RmlsZSB7 CiAgICAgTXV4ZXIgICAgICAgICAgICAgICAgKm11eDsKICAgICBjb25zdCBBVk91dHB1dEZvcm1h dCAqZm9ybWF0OwogCisgICAgU3luY1F1ZXVlICpzcV9lbmNvZGU7CisgICAgU3luY1F1ZXVlICpz cV9tdXg7CisKICAgICBBVkZvcm1hdENvbnRleHQgKmN0eDsKICAgICBpbnQgb3N0X2luZGV4OyAg ICAgICAvKiBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyZWFtIGluIG91dHB1dF9zdHJlYW1zICovCiAg ICAgaW50NjRfdCByZWNvcmRpbmdfdGltZTsgIC8vLzwgZGVzaXJlZCBsZW5ndGggb2YgdGhlIHJl c3VsdGluZyBmaWxlIGluIG1pY3Jvc2Vjb25kcyA9PSBBVl9USU1FX0JBU0UgdW5pdHMKZGlmZiAt LWdpdCBhL2ZmdG9vbHMvZmZtcGVnX211eC5jIGIvZmZ0b29scy9mZm1wZWdfbXV4LmMKaW5kZXgg YTMzNTBhNzNlOS4uNDUzY2NhYzkxMiAxMDA2NDQKLS0tIGEvZmZ0b29scy9mZm1wZWdfbXV4LmMK KysrIGIvZmZ0b29scy9mZm1wZWdfbXV4LmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlIDxz dHJpbmcuaD4KIAogI2luY2x1ZGUgImZmbXBlZy5oIgorI2luY2x1ZGUgInN5bmNfcXVldWUuaCIK IAogI2luY2x1ZGUgImxpYmF2dXRpbC9maWZvLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJl YWR3cml0ZS5oIgpAQCAtNTYsNiArNTcsOCBAQCBzdHJ1Y3QgTXV4ZXIgewogICAgIGludDY0X3Qg bGltaXRfZmlsZXNpemU7CiAgICAgaW50NjRfdCBmaW5hbF9maWxlc2l6ZTsKICAgICBpbnQgaGVh ZGVyX3dyaXR0ZW47CisKKyAgICBBVlBhY2tldCAqc3FfcGt0OwogfTsKIAogc3RhdGljIGludCB3 YW50X3NkcCA9IDE7CkBAIC03MiwxMyArNzUsMTQgQEAgc3RhdGljIHZvaWQgY2xvc2VfYWxsX291 dHB1dF9zdHJlYW1zKE91dHB1dFN0cmVhbSAqb3N0LCBPU1RGaW5pc2hlZCB0aGlzX3N0cmVhbSwK IHN0YXRpYyBpbnQgcXVldWVfcGFja2V0KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9z dCwgQVZQYWNrZXQgKnBrdCkKIHsKICAgICBNdXhTdHJlYW0gKm1zID0gJm9mLT5tdXgtPnN0cmVh bXNbb3N0LT5pbmRleF07Ci0gICAgQVZQYWNrZXQgKnRtcF9wa3Q7CisgICAgQVZQYWNrZXQgKnRt cF9wa3QgPSBOVUxMOwogICAgIGludCByZXQ7CiAKICAgICBpZiAoIWF2X2ZpZm9fY2FuX3dyaXRl KG1zLT5tdXhpbmdfcXVldWUpKSB7CiAgICAgICAgIHNpemVfdCBjdXJfc2l6ZSA9IGF2X2ZpZm9f Y2FuX3JlYWQobXMtPm11eGluZ19xdWV1ZSk7CisgICAgICAgIHNpemVfdCBwa3Rfc2l6ZSA9IHBr dCA/IHBrdC0+c2l6ZSA6IDA7CiAgICAgICAgIHVuc2lnbmVkIGludCBhcmVfd2Vfb3Zlcl9zaXpl ID0KLSAgICAgICAgICAgIChtcy0+bXV4aW5nX3F1ZXVlX2RhdGFfc2l6ZSArIHBrdC0+c2l6ZSkg PiBvc3QtPm11eGluZ19xdWV1ZV9kYXRhX3RocmVzaG9sZDsKKyAgICAgICAgICAgIChtcy0+bXV4 aW5nX3F1ZXVlX2RhdGFfc2l6ZSArIHBrdF9zaXplKSA+IG9zdC0+bXV4aW5nX3F1ZXVlX2RhdGFf dGhyZXNob2xkOwogICAgICAgICBzaXplX3QgbGltaXQgICAgPSBhcmVfd2Vfb3Zlcl9zaXplID8g b3N0LT5tYXhfbXV4aW5nX3F1ZXVlX3NpemUgOiBTSVpFX01BWDsKICAgICAgICAgc2l6ZV90IG5l d19zaXplID0gRkZNSU4oMiAqIGN1cl9zaXplLCBsaW1pdCk7CiAKQEAgLTkzLDYgKzk3LDcgQEAg c3RhdGljIGludCBxdWV1ZV9wYWNrZXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0 LCBBVlBhY2tldCAqcGt0KQogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKKyAgICBp ZiAocGt0KSB7CiAgICAgcmV0ID0gYXZfcGFja2V0X21ha2VfcmVmY291bnRlZChwa3QpOwogICAg IGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMTAzLDYgKzEwOCw3IEBAIHN0 YXRpYyBpbnQgcXVldWVfcGFja2V0KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwg QVZQYWNrZXQgKnBrdCkKIAogICAgIGF2X3BhY2tldF9tb3ZlX3JlZih0bXBfcGt0LCBwa3QpOwog ICAgIG1zLT5tdXhpbmdfcXVldWVfZGF0YV9zaXplICs9IHRtcF9wa3QtPnNpemU7CisgICAgfQog ICAgIGF2X2ZpZm9fd3JpdGUobXMtPm11eGluZ19xdWV1ZSwgJnRtcF9wa3QsIDEpOwogCiAgICAg cmV0dXJuIDA7CkBAIC0xOTIsMTEgKzE5OCw0NCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9wYWNrZXQo T3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0LCBBVlBhY2tldCAqcGt0KQogICAgIH0K IH0KIAorc3RhdGljIHZvaWQgc3VibWl0X3BhY2tldChPdXRwdXRGaWxlICpvZiwgT3V0cHV0U3Ry ZWFtICpvc3QsIEFWUGFja2V0ICpwa3QpCit7CisgICAgaWYgKG9zdC0+c3FfaWR4X211eCA+PSAw KSB7CisgICAgICAgIGludCByZXQgPSBzcV9zZW5kKG9mLT5zcV9tdXgsIG9zdC0+c3FfaWR4X211 eCwgU1FQS1QocGt0KSk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICBpZiAo cGt0KQorICAgICAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihwa3QpOworICAgICAgICAgICAg aWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworICAgICAgICAgICAgICAgIG9zdC0+ZmluaXNoZWQg fD0gTVVYRVJfRklOSVNIRUQ7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg fSBlbHNlCisgICAgICAgICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOworICAgICAgICB9CisKKyAg ICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIHJldCA9IHNxX3JlY2VpdmUob2YtPnNxX211 eCwgLTEsIFNRUEtUKG9mLT5tdXgtPnNxX3BrdCkpOworICAgICAgICAgICAgaWYgKHJldCA9PSBB VkVSUk9SX0VPRiB8fCByZXQgPT0gQVZFUlJPUihFQUdBSU4pKQorICAgICAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJldCA8IDApCisgICAgICAgICAgICAgICAgZXhp dF9wcm9ncmFtKDEpOworCisgICAgICAgICAgICB3cml0ZV9wYWNrZXQob2YsIG91dHB1dF9zdHJl YW1zW29mLT5vc3RfaW5kZXggKyByZXRdLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mLT5t dXgtPnNxX3BrdCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocGt0KQor ICAgICAgICAgICAgd3JpdGVfcGFja2V0KG9mLCBvc3QsIHBrdCk7CisgICAgICAgIGVsc2UKKyAg ICAgICAgICAgIG9zdC0+ZmluaXNoZWQgfD0gTVVYRVJfRklOSVNIRUQ7CisgICAgfQorfQorCiB2 b2lkIG9mX3N1Ym1pdF9wYWNrZXQoT3V0cHV0RmlsZSAqb2YsIEFWUGFja2V0ICpwa3QsIE91dHB1 dFN0cmVhbSAqb3N0KQogewogICAgIEFWU3RyZWFtICpzdCA9IG9zdC0+c3Q7CiAgICAgaW50IHJl dDsKIAorICAgIGlmIChwa3QpIHsKICAgICAvKgogICAgICAqIEF1ZGlvIGVuY29kZXJzIG1heSBz cGxpdCB0aGUgcGFja2V0cyAtLSAgI2ZyYW1lcyBpbiAhPSAjcGFja2V0cyBvdXQuCiAgICAgICog QnV0IHRoZXJlIGlzIG5vIHJlb3JkZXJpbmcsIHNvIHdlIGNhbiBsaW1pdCB0aGUgbnVtYmVyIG9m IG91dHB1dCBwYWNrZXRzCkBAIC0yMTEsOSArMjUwLDEwIEBAIHZvaWQgb2Zfc3VibWl0X3BhY2tl dChPdXRwdXRGaWxlICpvZiwgQVZQYWNrZXQgKnBrdCwgT3V0cHV0U3RyZWFtICpvc3QpCiAgICAg ICAgIH0KICAgICAgICAgb3N0LT5mcmFtZV9udW1iZXIrKzsKICAgICB9CisgICAgfQogCiAgICAg aWYgKG9mLT5tdXgtPmhlYWRlcl93cml0dGVuKSB7Ci0gICAgICAgIHdyaXRlX3BhY2tldChvZiwg b3N0LCBwa3QpOworICAgICAgICBzdWJtaXRfcGFja2V0KG9mLCBvc3QsIHBrdCk7CiAgICAgfSBl bHNlIHsKICAgICAgICAgLyogdGhlIG11eGVyIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQsIGJ1ZmZl ciB0aGUgcGFja2V0ICovCiAgICAgICAgIHJldCA9IHF1ZXVlX3BhY2tldChvZiwgb3N0LCBwa3Qp OwpAQCAtMzIxLDkgKzM2MSwxMSBAQCBpbnQgb2ZfY2hlY2tfaW5pdChPdXRwdXRGaWxlICpvZikK ICAgICAgICAgICAgIG9zdC0+bXV4X3RpbWViYXNlID0gb3N0LT5zdC0+dGltZV9iYXNlOwogCiAg ICAgICAgIHdoaWxlIChhdl9maWZvX3JlYWQobXMtPm11eGluZ19xdWV1ZSwgJnBrdCwgMSkgPj0g MCkgewotICAgICAgICAgICAgbXMtPm11eGluZ19xdWV1ZV9kYXRhX3NpemUgLT0gcGt0LT5zaXpl OwotICAgICAgICAgICAgd3JpdGVfcGFja2V0KG9mLCBvc3QsIHBrdCk7Ci0gICAgICAgICAgICBh dl9wYWNrZXRfZnJlZSgmcGt0KTsKKyAgICAgICAgICAgIHN1Ym1pdF9wYWNrZXQob2YsIG9zdCwg cGt0KTsKKyAgICAgICAgICAgIGlmIChwa3QpIHsKKyAgICAgICAgICAgICAgICBtcy0+bXV4aW5n X3F1ZXVlX2RhdGFfc2l6ZSAtPSBwa3QtPnNpemU7CisgICAgICAgICAgICAgICAgYXZfcGFja2V0 X2ZyZWUoJnBrdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4Myw2 ICs0MjUsOCBAQCBzdGF0aWMgdm9pZCBtdXhfZnJlZShNdXhlciAqKnBtdXgsIGludCBuYl9zdHJl YW1zKQogICAgIGF2X2ZyZWVwKCZtdXgtPnN0cmVhbXMpOwogICAgIGF2X2RpY3RfZnJlZSgmbXV4 LT5vcHRzKTsKIAorICAgIGF2X3BhY2tldF9mcmVlKCZtdXgtPnNxX3BrdCk7CisKICAgICBhdl9m cmVlcChwbXV4KTsKIH0KIApAQCAtMzk0LDYgKzQzOCw5IEBAIHZvaWQgb2ZfY2xvc2UoT3V0cHV0 RmlsZSAqKnBvZikKICAgICBpZiAoIW9mKQogICAgICAgICByZXR1cm47CiAKKyAgICBzcV9mcmVl KCZvZi0+c3FfZW5jb2RlKTsKKyAgICBzcV9mcmVlKCZvZi0+c3FfbXV4KTsKKwogICAgIHMgPSBv Zi0+Y3R4OwogCiAgICAgbXV4X2ZyZWUoJm9mLT5tdXgsIHMgPyBzLT5uYl9zdHJlYW1zIDogMCk7 CkBAIC00MzcsNiArNDg0LDE0IEBAIGludCBvZl9tdXhlcl9pbml0KE91dHB1dEZpbGUgKm9mLCBB VkRpY3Rpb25hcnkgKm9wdHMsIGludDY0X3QgbGltaXRfZmlsZXNpemUpCiAgICAgaWYgKHN0cmNt cChvZi0+Zm9ybWF0LT5uYW1lLCAicnRwIikpCiAgICAgICAgIHdhbnRfc2RwID0gMDsKIAorICAg IGlmIChvZi0+c3FfbXV4KSB7CisgICAgICAgIG11eC0+c3FfcGt0ID0gYXZfcGFja2V0X2FsbG9j KCk7CisgICAgICAgIGlmICghbXV4LT5zcV9wa3QpIHsKKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRU5PTUVNKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgIH0KKwog ICAgIC8qIHdyaXRlIHRoZSBoZWFkZXIgZm9yIGZpbGVzIHdpdGggbm8gc3RyZWFtcyAqLwogICAg IGlmIChvZi0+Zm9ybWF0LT5mbGFncyAmIEFWRk1UX05PU1RSRUFNUyAmJiBvZi0+Y3R4LT5uYl9z dHJlYW1zID09IDApIHsKICAgICAgICAgcmV0ID0gb2ZfY2hlY2tfaW5pdChvZik7CmRpZmYgLS1n aXQgYS9mZnRvb2xzL2ZmbXBlZ19vcHQuYyBiL2ZmdG9vbHMvZmZtcGVnX29wdC5jCmluZGV4IGQx ZTljMDUwNWIuLmJlODg3NDM0NjMgMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMvZmZtcGVnX29wdC5jCisr KyBiL2ZmdG9vbHMvZmZtcGVnX29wdC5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiZm9w ZW5fdXRmOC5oIgogI2luY2x1ZGUgImNtZHV0aWxzLmgiCiAjaW5jbHVkZSAib3B0X2NvbW1vbi5o IgorI2luY2x1ZGUgInN5bmNfcXVldWUuaCIKIAogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9y bWF0LmgiCiAKQEAgLTIzNSw2ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBpbml0X29wdGlvbnMoT3B0 aW9uc0NvbnRleHQgKm8pCiAgICAgby0+Y2hhcHRlcnNfaW5wdXRfZmlsZSA9IElOVF9NQVg7CiAg ICAgby0+YWNjdXJhdGVfc2VlayAgPSAxOwogICAgIG8tPnRocmVhZF9xdWV1ZV9zaXplID0gLTE7 CisgICAgby0+c2hvcnRlc3RfYnVmX2R1cmF0aW9uID0gMTAuZjsKIH0KIAogc3RhdGljIGludCBz aG93X2h3YWNjZWxzKHZvaWQgKm9wdGN0eCwgY29uc3QgY2hhciAqb3B0LCBjb25zdCBjaGFyICph cmcpCkBAIC0yMzMxLDYgKzIzMzMsNzggQEAgc3RhdGljIGludCBpbml0X2NvbXBsZXhfZmlsdGVy cyh2b2lkKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNldHVwX3N5bmNfcXVldWVz KE91dHB1dEZpbGUgKm9mLCBBVkZvcm1hdENvbnRleHQgKm9jLCBpbnQ2NF90IGJ1Zl9zaXplX3Vz KQoreworICAgIGludCBuYl9hdl9lbmMgPSAwLCBuYl9pbnRlcmxlYXZlZCA9IDA7CisKKyNkZWZp bmUgSVNfQVZfRU5DKG9zdCwgdHlwZSkgIFwKKyAgICAob3N0LT5lbmNvZGluZ19uZWVkZWQgJiYg KHR5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPIHx8IHR5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElP KSkKKyNkZWZpbmUgSVNfSU5URVJMRUFWRUQodHlwZSkgKHR5cGUgIT0gQVZNRURJQV9UWVBFX0FU VEFDSE1FTlQpCisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG9jLT5uYl9zdHJlYW1zOyBpKysp IHsKKyAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QgPSBvdXRwdXRfc3RyZWFtc1tvZi0+b3N0X2lu ZGV4ICsgaV07CisgICAgICAgIGVudW0gQVZNZWRpYVR5cGUgdHlwZSA9IG9zdC0+c3QtPmNvZGVj cGFyLT5jb2RlY190eXBlOworCisgICAgICAgIG9zdC0+c3FfaWR4X2VuY29kZSA9IC0xOworICAg ICAgICBvc3QtPnNxX2lkeF9tdXggICAgPSAtMTsKKworICAgICAgICBuYl9pbnRlcmxlYXZlZCAr PSBJU19JTlRFUkxFQVZFRCh0eXBlKTsKKyAgICAgICAgbmJfYXZfZW5jICAgICAgKz0gSVNfQVZf RU5DKG9zdCwgdHlwZSk7CisgICAgfQorCisgICAgaWYgKCEobmJfaW50ZXJsZWF2ZWQgPiAxICYm IG9mLT5zaG9ydGVzdCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogaWYgd2UgaGF2ZSBt b3JlIHRoYW4gb25lIGVuY29kZWQgYXVkaW8vdmlkZW8gc3RyZWFtcywgdGhlbiB3ZQorICAgICAq IHN5bmNocm9uaXplIHRoZW0gYmVmb3JlIGVuY29kaW5nICovCisgICAgaWYgKG5iX2F2X2VuYyA+ IDEpIHsKKyAgICAgICAgb2YtPnNxX2VuY29kZSA9IHNxX2FsbG9jKFNZTkNfUVVFVUVfRlJBTUVT LCBidWZfc2l6ZV91cyk7CisgICAgICAgIGlmICghb2YtPnNxX2VuY29kZSkKKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBv Yy0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgICAgICBPdXRwdXRTdHJlYW0gKm9zdCA9IG91 dHB1dF9zdHJlYW1zW29mLT5vc3RfaW5kZXggKyBpXTsKKyAgICAgICAgICAgIGVudW0gQVZNZWRp YVR5cGUgdHlwZSA9IG9zdC0+c3QtPmNvZGVjcGFyLT5jb2RlY190eXBlOworCisgICAgICAgICAg ICBpZiAoIUlTX0FWX0VOQyhvc3QsIHR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor CisgICAgICAgICAgICBvc3QtPnNxX2lkeF9lbmNvZGUgPSBzcV9hZGRfc3RyZWFtKG9mLT5zcV9l bmNvZGUpOworICAgICAgICAgICAgaWYgKG9zdC0+c3FfaWR4X2VuY29kZSA8IDApCisgICAgICAg ICAgICAgICAgcmV0dXJuIG9zdC0+c3FfaWR4X2VuY29kZTsKKworICAgICAgICAgICAgb3N0LT5z cV9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgICAgICAgICAgICBpZiAoIW9zdC0+c3FfZnJh bWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIC8qIGlmIHRoZXJlIGFyZSBhbnkgYWRkaXRpb25hbCBpbnRlcmxlYXZlZCBz dHJlYW1zLCB0aGVuIEFMTCB0aGUgc3RyZWFtcworICAgICAqIGFyZSBhbHNvIHN5bmNocm9uaXpl ZCBiZWZvcmUgc2VuZGluZyB0aGVtIHRvIHRoZSBtdXhlciAqLworICAgIGlmIChuYl9pbnRlcmxl YXZlZCA+IG5iX2F2X2VuYykgeworICAgICAgICBvZi0+c3FfbXV4ID0gc3FfYWxsb2MoU1lOQ19R VUVVRV9QQUNLRVRTLCBidWZfc2l6ZV91cyk7CisgICAgICAgIGlmICghb2YtPnNxX211eCkKKyAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBvYy0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgICAgICBPdXRwdXRTdHJlYW0g Km9zdCA9IG91dHB1dF9zdHJlYW1zW29mLT5vc3RfaW5kZXggKyBpXTsKKyAgICAgICAgICAgIGVu dW0gQVZNZWRpYVR5cGUgdHlwZSA9IG9zdC0+c3QtPmNvZGVjcGFyLT5jb2RlY190eXBlOworCisg ICAgICAgICAgICBpZiAoIUlTX0lOVEVSTEVBVkVEKHR5cGUpKQorICAgICAgICAgICAgICAgIGNv bnRpbnVlOworCisgICAgICAgICAgICBvc3QtPnNxX2lkeF9tdXggPSBzcV9hZGRfc3RyZWFtKG9m LT5zcV9tdXgpOworICAgICAgICAgICAgaWYgKG9zdC0+c3FfaWR4X211eCA8IDApCisgICAgICAg ICAgICAgICAgcmV0dXJuIG9zdC0+c3FfaWR4X211eDsKKyAgICAgICAgfQorICAgIH0KKworI3Vu ZGVmIElTX0FWX0VOQworI3VuZGVmIElTX0lOVEVSTEVBVkVECisKKyAgICByZXR1cm4gMDsKK30K Kwogc3RhdGljIGludCBvcGVuX291dHB1dF9maWxlKE9wdGlvbnNDb250ZXh0ICpvLCBjb25zdCBj aGFyICpmaWxlbmFtZSkKIHsKICAgICBBVkZvcm1hdENvbnRleHQgKm9jOwpAQCAtMjk2OCw2ICsz MDQyLDEyIEBAIGxvb3BfZW5kOgogICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAgfQogCisg ICAgZXJyID0gc2V0dXBfc3luY19xdWV1ZXMob2YsIG9jLCBvLT5zaG9ydGVzdF9idWZfZHVyYXRp b24gKiBBVl9USU1FX0JBU0UpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIGF2X2xvZyhO VUxMLCBBVl9MT0dfRkFUQUwsICJFcnJvciBzZXR0aW5nIHVwIG91dHB1dCBzeW5jIHF1ZXVlc1xu Iik7CisgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKKyAgICB9CisKICAgICBlcnIgPSBvZl9tdXhl cl9pbml0KG9mLCBmb3JtYXRfb3B0cywgby0+bGltaXRfZmlsZXNpemUpOwogICAgIGlmIChlcnIg PCAwKSB7CiAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRkFUQUwsICJFcnJvciBpbml0aWFs aXppbmcgaW50ZXJuYWwgbXV4aW5nIHN0YXRlXG4iKTsKQEAgLTM2ODAsNiArMzc2MCw4IEBAIGNv bnN0IE9wdGlvbkRlZiBvcHRpb25zW10gPSB7CiAgICAgeyAic2hvcnRlc3QiLCAgICAgICBPUFRf Qk9PTCB8IE9QVF9FWFBFUlQgfCBPUFRfT0ZGU0VUIHwKICAgICAgICAgICAgICAgICAgICAgICAg IE9QVF9PVVRQVVQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLm9mZiA9IE9G RlNFVChzaG9ydGVzdCkgfSwKICAgICAgICAgImZpbmlzaCBlbmNvZGluZyB3aXRoaW4gc2hvcnRl c3QgaW5wdXQiIH0sCisgICAgeyAic2hvcnRlc3RfYnVmX2R1cmF0aW9uIiwgSEFTX0FSRyB8IE9Q VF9GTE9BVCB8IE9QVF9FWFBFUlQgfCBPUFRfT0ZGU0VUIHwgT1BUX09VVFBVVCwgeyAub2ZmID0g T0ZGU0VUKHNob3J0ZXN0X2J1Zl9kdXJhdGlvbikgfSwKKyAgICAgICAgIm1heGltdW0gYnVmZmVy aW5nIGR1cmF0aW9uIChpbiBzZWNvbmRzKSBmb3IgdGhlIC1zaG9ydGVzdCBvcHRpb24iIH0sCiAg ICAgeyAiYml0ZXhhY3QiLCAgICAgICBPUFRfQk9PTCB8IE9QVF9FWFBFUlQgfCBPUFRfT0ZGU0VU IHwKICAgICAgICAgICAgICAgICAgICAgICAgIE9QVF9PVVRQVVQgfCBPUFRfSU5QVVQsICAgICAg ICAgICAgICAgICAgICAgIHsgLm9mZiA9IE9GRlNFVChiaXRleGFjdCkgfSwKICAgICAgICAgImJp dGV4YWN0IG1vZGUiIH0sCmRpZmYgLS1naXQgYS9mZnRvb2xzL3N5bmNfcXVldWUuYyBiL2ZmdG9v bHMvc3luY19xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFi NjU0Y2E3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9mZnRvb2xzL3N5bmNfcXVldWUuYwpAQCAtMCww ICsxLDQyNSBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5j bHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJsaWJhdnV0 aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvZXJyb3IuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvZmlmby5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9tYXRoZW1hdGljcy5oIgorI2lu Y2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKKworI2luY2x1ZGUgIm9ianBvb2wuaCIKKyNpbmNsdWRl ICJzeW5jX3F1ZXVlLmgiCisKK3R5cGVkZWYgc3RydWN0IFN5bmNRdWV1ZVN0cmVhbSB7CisgICAg QVZGaWZvICAgICAgICAgICpmaWZvOworICAgIEFWUmF0aW9uYWwgICAgICAgdGI7CisKKyAgICAv KiBzdHJlYW0gaGVhZDogbGFyZ2VzdCB0aW1lc3RhbXAgc2VlbiAqLworICAgIGludDY0X3QgICAg ICAgICAgaGVhZF90czsKKyAgICAvKiBubyBtb3JlIGZyYW1lcyB3aWxsIGJlIHNlbnQgZm9yIHRo aXMgc3RyZWFtICovCisgICAgaW50ICAgICAgICAgICAgICBmaW5pc2hlZDsKK30gU3luY1F1ZXVl U3RyZWFtOworCitzdHJ1Y3QgU3luY1F1ZXVlIHsKKyAgICBlbnVtIFN5bmNRdWV1ZVR5cGUgdHlw ZTsKKworICAgIC8qIG5vIG1vcmUgZnJhbWVzIHdpbGwgYmUgc2VudCBmb3IgYW55IHN0cmVhbSAq LworICAgIGludCBmaW5pc2hlZDsKKyAgICAvKiBzeW5jIGhlYWQ6IHRoZSBzdHJlYW0gd2l0aCB0 aGUgX3NtYWxsZXN0XyBoZWFkIHRpbWVzdGFtcAorICAgICAqIHRoaXMgc3RyZWFtIGRldGVybWlu ZXMgd2hpY2ggZnJhbWVzIGNhbiBiZSBvdXRwdXQgKi8KKyAgICBpbnQgaGVhZF9zdHJlYW07Cisg ICAgLyogdGhlIGZpbmlzaGVkIHN0cmVhbSB3aXRoIHRoZSBzbWFsbGVzdCBmaW5pc2ggdGltZXN0 YW1wIG9yIC0xICovCisgICAgaW50IGhlYWRfZmluaXNoZWRfc3RyZWFtOworCisgICAgLy8gbWF4 aW11bSBidWZmZXJpbmcgZHVyYXRpb24gaW4gbWljcm9zZWNvbmRzCisgICAgaW50NjRfdCBidWZf c2l6ZV91czsKKworICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3RyZWFtczsKKyAgICB1bnNpZ25lZCBp bnQgIG5iX3N0cmVhbXM7CisKKyAgICAvLyBwb29sIG9mIHByZWFsbG9jYXRlZCBmcmFtZXMgdG8g YXZvaWQgY29uc3RhbnQgYWxsb2NhdGlvbnMKKyAgICBPYmpQb29sICpwb29sOworfTsKKworc3Rh dGljIHZvaWQgZnJhbWVfbW92ZShjb25zdCBTeW5jUXVldWUgKnNxLCBTeW5jUXVldWVGcmFtZSBk c3QsCisgICAgICAgICAgICAgICAgICAgICAgIFN5bmNRdWV1ZUZyYW1lIHNyYykKK3sKKyAgICBp ZiAoc3EtPnR5cGUgPT0gU1lOQ19RVUVVRV9QQUNLRVRTKQorICAgICAgICBhdl9wYWNrZXRfbW92 ZV9yZWYoZHN0LnAsIHNyYy5wKTsKKyAgICBlbHNlCisgICAgICAgIGF2X2ZyYW1lX21vdmVfcmVm KGRzdC5mLCBzcmMuZik7Cit9CisKK3N0YXRpYyBpbnQ2NF90IGZyYW1lX3RzKGNvbnN0IFN5bmNR dWV1ZSAqc3EsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQoreworICAgIHJldHVybiAoc3EtPnR5cGUg PT0gU1lOQ19RVUVVRV9QQUNLRVRTKSA/CisgICAgICAgICAgIGZyYW1lLnAtPnB0cyArIGZyYW1l LnAtPmR1cmF0aW9uIDoKKyAgICAgICAgICAgZnJhbWUuZi0+cHRzICsgZnJhbWUuZi0+cGt0X2R1 cmF0aW9uOworfQorCitzdGF0aWMgaW50IGZyYW1lX251bGwoY29uc3QgU3luY1F1ZXVlICpzcSwg U3luY1F1ZXVlRnJhbWUgZnJhbWUpCit7CisgICAgcmV0dXJuIChzcS0+dHlwZSA9PSBTWU5DX1FV RVVFX1BBQ0tFVFMpID8gKGZyYW1lLnAgPT0gTlVMTCkgOiAoZnJhbWUuZiA9PSBOVUxMKTsKK30K Kworc3RhdGljIHZvaWQgZmluaXNoX3N0cmVhbShTeW5jUXVldWUgKnNxLCB1bnNpZ25lZCBpbnQg c3RyZWFtX2lkeCkKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0gKnN0ID0gJnNxLT5zdHJlYW1zW3N0 cmVhbV9pZHhdOworCisgICAgc3QtPmZpbmlzaGVkID0gMTsKKworICAgIGlmIChzdC0+aGVhZF90 cyAhPSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAvKiBjaGVjayBpZiB0aGlzIHN0cmVhbSBp cyB0aGUgbmV3IGZpbmlzaGVkIGhlYWQgKi8KKyAgICAgICAgaWYgKHNxLT5oZWFkX2ZpbmlzaGVk X3N0cmVhbSA8IDAgfHwKKyAgICAgICAgICAgIGF2X2NvbXBhcmVfdHMoc3QtPmhlYWRfdHMsIHN0 LT50YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3EtPnN0cmVhbXNbc3EtPmhlYWRfZmlu aXNoZWRfc3RyZWFtXS5oZWFkX3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcS0+c3Ry ZWFtc1tzcS0+aGVhZF9maW5pc2hlZF9zdHJlYW1dLnRiKSA8IDApIHsKKyAgICAgICAgICAgIHNx LT5oZWFkX2ZpbmlzaGVkX3N0cmVhbSA9IHN0cmVhbV9pZHg7CisgICAgICAgIH0KKworICAgICAg ICAvKiBtYXJrIGFzIGZpbmlzaGVkIGFsbCBzdHJlYW1zIHRoYXQgc2hvdWxkIG5vIGxvbmdlciBy ZWNlaXZlIG5ldyBmcmFtZXMsCisgICAgICAgICAqIGR1ZSB0byB0aGVtIGJlaW5nIGFoZWFkIG9m IHNvbWUgZmluaXNoZWQgc3RyZWFtICovCisgICAgICAgIHN0ID0gJnNxLT5zdHJlYW1zW3NxLT5o ZWFkX2ZpbmlzaGVkX3N0cmVhbV07CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp IDwgc3EtPm5iX3N0cmVhbXM7IGkrKykgeworICAgICAgICAgICAgU3luY1F1ZXVlU3RyZWFtICpz dDEgPSAmc3EtPnN0cmVhbXNbaV07CisgICAgICAgICAgICBpZiAoc3QgIT0gc3QxICYmIHN0MS0+ aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAgICAgICAgICAgIGF2X2NvbXBhcmVf dHMoc3QtPmhlYWRfdHMsIHN0LT50Yiwgc3QxLT5oZWFkX3RzLCBzdDEtPnRiKSA8PSAwKQorICAg ICAgICAgICAgICAgIHN0MS0+ZmluaXNoZWQgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAg LyogbWFyayB0aGUgd2hvbGUgcXVldWUgYXMgZmluaXNoZWQgaWYgYWxsIHN0cmVhbXMgYXJlIGZp bmlzaGVkICovCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFt czsgaSsrKSB7CisgICAgICAgIGlmICghc3EtPnN0cmVhbXNbaV0uZmluaXNoZWQpCisgICAgICAg ICAgICByZXR1cm47CisgICAgfQorICAgIHNxLT5maW5pc2hlZCA9IDE7Cit9CisKK3N0YXRpYyB2 b2lkIHF1ZXVlX2hlYWRfdXBkYXRlKFN5bmNRdWV1ZSAqc3EpCit7CisgICAgaWYgKHNxLT5oZWFk X3N0cmVhbSA8IDApIHsKKyAgICAgICAgLyogd2FpdCBmb3Igb25lIHRpbWVzdGFtcCBpbiBlYWNo IHN0cmVhbSBiZWZvcmUgZGV0ZXJtaW5pbmcKKyAgICAgICAgICogdGhlIHF1ZXVlIGhlYWQgKi8K KyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsr KSB7CisgICAgICAgICAgICBTeW5jUXVldWVTdHJlYW0gKnN0ID0gJnNxLT5zdHJlYW1zW2ldOwor ICAgICAgICAgICAgaWYgKHN0LT5oZWFkX3RzID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgICAg ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHBsYWNlaG9sZGVyIHZhbHVl LCBjb3JyZWN0IG9uZSB3aWxsIGJlIGZvdW5kIGJlbG93CisgICAgICAgIHNxLT5oZWFkX3N0cmVh bSA9IDA7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJf c3RyZWFtczsgaSsrKSB7CisgICAgICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3RfaGVhZCAgPSAmc3Et PnN0cmVhbXNbc3EtPmhlYWRfc3RyZWFtXTsKKyAgICAgICAgU3luY1F1ZXVlU3RyZWFtICpzdF9v dGhlciA9ICZzcS0+c3RyZWFtc1tpXTsKKyAgICAgICAgaWYgKHN0X290aGVyLT5oZWFkX3RzICE9 IEFWX05PUFRTX1ZBTFVFICYmCisgICAgICAgICAgICBhdl9jb21wYXJlX3RzKHN0X290aGVyLT5o ZWFkX3RzLCBzdF9vdGhlci0+dGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0X2hlYWQt PmhlYWRfdHMsICBzdF9oZWFkLT50YikgPCAwKQorICAgICAgICAgICAgc3EtPmhlYWRfc3RyZWFt ID0gaTsKKyAgICB9Cit9CisKKy8qIHVwZGF0ZSB0aGlzIHN0cmVhbSdzIGhlYWQgdGltZXN0YW1w ICovCitzdGF0aWMgdm9pZCBzdHJlYW1fdXBkYXRlX3RzKFN5bmNRdWV1ZSAqc3EsIHVuc2lnbmVk IGludCBzdHJlYW1faWR4LCBpbnQ2NF90IHRzKQoreworICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3Qg PSAmc3EtPnN0cmVhbXNbc3RyZWFtX2lkeF07CisKKyAgICBpZiAodHMgPT0gQVZfTk9QVFNfVkFM VUUgfHwKKyAgICAgICAgKHN0LT5oZWFkX3RzICE9IEFWX05PUFRTX1ZBTFVFICYmIHN0LT5oZWFk X3RzID49IHRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3QtPmhlYWRfdHMgPSB0czsKKwor ICAgIC8qIGlmIHRoaXMgc3RyZWFtIGlzIG5vdyBhaGVhZCBvZiBzb21lIGZpbmlzaGVkIHN0cmVh bSwgdGhlbgorICAgICAqIHRoaXMgc3RyZWFtIGlzIGFsc28gZmluaXNoZWQgKi8KKyAgICBpZiAo c3EtPmhlYWRfZmluaXNoZWRfc3RyZWFtID49IDAgJiYKKyAgICAgICAgYXZfY29tcGFyZV90cyhz cS0+c3RyZWFtc1tzcS0+aGVhZF9maW5pc2hlZF9zdHJlYW1dLmhlYWRfdHMsCisgICAgICAgICAg ICAgICAgICAgICAgc3EtPnN0cmVhbXNbc3EtPmhlYWRfZmluaXNoZWRfc3RyZWFtXS50YiwKKyAg ICAgICAgICAgICAgICAgICAgICB0cywgc3QtPnRiKSA8PSAwKQorICAgICAgICBmaW5pc2hfc3Ry ZWFtKHNxLCBzdHJlYW1faWR4KTsKKworICAgIC8qIHVwZGF0ZSB0aGUgb3ZlcmFsbCBoZWFkIHRp bWVzdGFtcCBpZiBpdCBjb3VsZCBoYXZlIGNoYW5nZWQgKi8KKyAgICBpZiAoc3EtPmhlYWRfc3Ry ZWFtIDwgMCB8fCBzcS0+aGVhZF9zdHJlYW0gPT0gc3RyZWFtX2lkeCkKKyAgICAgICAgcXVldWVf aGVhZF91cGRhdGUoc3EpOworfQorCisvKiBJZiB0aGUgcXVldWUgZm9yIHRoZSBnaXZlbiBzdHJl YW0gKG9yIGFsbCBzdHJlYW1zIHdoZW4gc3RyZWFtX2lkeD0tMSkKKyAqIGlzIG92ZXJmbG93aW5n LCB0cmlnZ2VyIGEgZmFrZSBoZWFydGJlYXQgb24gbGFnZ2luZyBzdHJlYW1zLgorICoKKyAqIEBy ZXR1cm4gMSBpZiBoZWFydGJlYXQgdHJpZ2dlcmVkLCAwIG90aGVyd2lzZQorICovCitzdGF0aWMg aW50IG92ZXJmbG93X2hlYXJ0YmVhdChTeW5jUXVldWUgKnNxLCBpbnQgc3RyZWFtX2lkeCkKK3sK KyAgICBTeW5jUXVldWVTdHJlYW0gKnN0OworICAgIFN5bmNRdWV1ZUZyYW1lIGZyYW1lOworICAg IGludDY0X3QgdGFpbF90cyA9IEFWX05PUFRTX1ZBTFVFOworCisgICAgLyogaWYgbm8gc3RyZWFt IHNwZWNpZmllZCwgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdCBhaGVhZCAqLworICAgIGlmIChz dHJlYW1faWR4IDwgMCkgeworICAgICAgICBpbnQ2NF90IHRzID0gQVZfTk9QVFNfVkFMVUU7CisK KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAg ICAgICAgICBzdCA9ICZzcS0+c3RyZWFtc1tpXTsKKyAgICAgICAgICAgIGlmIChzdC0+aGVhZF90 cyAhPSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAgICAgICAgICAgICh0cyA9PSBBVl9OT1BUU19W QUxVRSB8fAorICAgICAgICAgICAgICAgICBhdl9jb21wYXJlX3RzKHRzLCBzcS0+c3RyZWFtc1tz dHJlYW1faWR4XS50YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+aGVhZF90 cywgc3QtPnRiKSA8IDApKSB7CisgICAgICAgICAgICAgICAgdHMgPSBzdC0+aGVhZF90czsKKyAg ICAgICAgICAgICAgICBzdHJlYW1faWR4ID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICAgICAvKiBubyBzdHJlYW0gaGFzIGEgdGltZXN0YW1wIHlldCAtPiBub3RoaW5nIHRvIGRv ICovCisgICAgICAgIGlmIChzdHJlYW1faWR4IDwgMCkKKyAgICAgICAgICAgIHJldHVybiAwOwor ICAgIH0KKworICAgIHN0ID0gJnNxLT5zdHJlYW1zW3N0cmVhbV9pZHhdOworCisgICAgLyogZ2V0 IHRoZSBjaG9zZW4gc3RyZWFtJ3MgdGFpbCB0aW1lc3RhbXAgKi8KKyAgICBmb3IgKHNpemVfdCBp ID0gMDsgdGFpbF90cyA9PSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAgICAgICAgICAgICAgICAg ICBhdl9maWZvX3BlZWsoc3QtPmZpZm8sICZmcmFtZSwgMSwgaSkgPj0gMDsgaSsrKQorICAgICAg ICB0YWlsX3RzID0gZnJhbWVfdHMoc3EsIGZyYW1lKTsKKworICAgIC8qIG92ZXJmbG93IHRyaWdn ZXJzIHdoZW4gdGhlIHRhaWwgaXMgb3ZlciBzcGVjaWZpZWQgZHVyYXRpb24gYmVoaW5kIHRoZSBo ZWFkICovCisgICAgaWYgKHRhaWxfdHMgPT0gQVZfTk9QVFNfVkFMVUUgfHwgdGFpbF90cyA+PSBz dC0+aGVhZF90cyB8fAorICAgICAgICBhdl9yZXNjYWxlX3Eoc3QtPmhlYWRfdHMgLSB0YWlsX3Rz LCBzdC0+dGIsIEFWX1RJTUVfQkFTRV9RKSA8IHNxLT5idWZfc2l6ZV91cykKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICAvKiBzaWduYWwgYSBmYWtlIHRpbWVzdGFtcCBmb3IgYWxsIHN0cmVhbXMg dGhhdCBwcmV2ZW50IHRhaWxfdHMgZnJvbSBiZWluZyBvdXRwdXQgKi8KKyAgICB0YWlsX3RzKys7 CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7 CisgICAgICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3QxID0gJnNxLT5zdHJlYW1zW2ldOworICAgICAg ICBpbnQ2NF90IHRzOworCisgICAgICAgIGlmIChzdCA9PSBzdDEgfHwgc3QxLT5maW5pc2hlZCB8 fAorICAgICAgICAgICAgKHN0MS0+aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAg ICAgICAgIGF2X2NvbXBhcmVfdHModGFpbF90cywgc3QtPnRiLCBzdDEtPmhlYWRfdHMsIHN0MS0+ dGIpIDw9IDApKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdHMgPSBhdl9yZXNj YWxlX3EodGFpbF90cywgc3QtPnRiLCBzdDEtPnRiKTsKKyAgICAgICAgaWYgKHN0MS0+aGVhZF90 cyAhPSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgICAgIHRzID0gRkZNQVgoc3QxLT5oZWFkX3Rz ICsgMSwgdHMpOworCisgICAgICAgIHN0cmVhbV91cGRhdGVfdHMoc3EsIGksIHRzKTsKKyAgICB9 CisKKyAgICByZXR1cm4gMTsKK30KKworaW50IHNxX3NlbmQoU3luY1F1ZXVlICpzcSwgdW5zaWdu ZWQgaW50IHN0cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQoreworICAgIFN5bmNRdWV1 ZVN0cmVhbSAqc3Q7CisgICAgU3luY1F1ZXVlRnJhbWUgZHN0OworICAgIGludDY0X3QgdHM7Cisg ICAgaW50IHJldDsKKworICAgIGF2X2Fzc2VydDAoc3RyZWFtX2lkeCA8IHNxLT5uYl9zdHJlYW1z KTsKKyAgICBzdCA9ICZzcS0+c3RyZWFtc1tzdHJlYW1faWR4XTsKKworICAgIGF2X2Fzc2VydDAo c3QtPnRiLm51bSA+IDAgJiYgc3QtPnRiLmRlbiA+IDApOworCisgICAgaWYgKGZyYW1lX251bGwo c3EsIGZyYW1lKSkgeworICAgICAgICBmaW5pc2hfc3RyZWFtKHNxLCBzdHJlYW1faWR4KTsKKyAg ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChzdC0+ZmluaXNoZWQpCisgICAgICAgIHJl dHVybiBBVkVSUk9SX0VPRjsKKworICAgIHJldCA9IG9ianBvb2xfZ2V0KHNxLT5wb29sLCAodm9p ZCoqKSZkc3QpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAg ZnJhbWVfbW92ZShzcSwgZHN0LCBmcmFtZSk7CisKKyAgICB0cyA9IGZyYW1lX3RzKHNxLCBkc3Qp OworCisgICAgcmV0ID0gYXZfZmlmb193cml0ZShzdC0+ZmlmbywgJmRzdCwgMSk7CisgICAgaWYg KHJldCA8IDApIHsKKyAgICAgICAgZnJhbWVfbW92ZShzcSwgZnJhbWUsIGRzdCk7CisgICAgICAg IG9ianBvb2xfcmVsZWFzZShzcS0+cG9vbCwgKHZvaWQqKikmZHN0KTsKKyAgICAgICAgcmV0dXJu IHJldDsKKyAgICB9CisKKyAgICBzdHJlYW1fdXBkYXRlX3RzKHNxLCBzdHJlYW1faWR4LCB0cyk7 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCByZWNlaXZlX2Zvcl9zdHJlYW0oU3lu Y1F1ZXVlICpzcSwgdW5zaWduZWQgaW50IHN0cmVhbV9pZHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTeW5jUXVldWVGcmFtZSBmcmFtZSkKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0g KnN0X2hlYWQgPSBzcS0+aGVhZF9zdHJlYW0gPj0gMCA/CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnNxLT5zdHJlYW1zW3NxLT5oZWFkX3N0cmVhbV0gOiBOVUxMOworICAgIFN5bmNR dWV1ZVN0cmVhbSAqc3Q7CisKKyAgICBhdl9hc3NlcnQwKHN0cmVhbV9pZHggPCBzcS0+bmJfc3Ry ZWFtcyk7CisgICAgc3QgPSAmc3EtPnN0cmVhbXNbc3RyZWFtX2lkeF07CisKKyAgICBpZiAoYXZf Zmlmb19jYW5fcmVhZChzdC0+ZmlmbykpIHsKKyAgICAgICAgU3luY1F1ZXVlRnJhbWUgcGVlazsK KyAgICAgICAgaW50NjRfdCB0czsKKyAgICAgICAgaW50IGNtcCA9IDE7CisKKyAgICAgICAgYXZf Zmlmb19wZWVrKHN0LT5maWZvLCAmcGVlaywgMSwgMCk7CisgICAgICAgIHRzID0gZnJhbWVfdHMo c3EsIHBlZWspOworCisgICAgICAgIC8qIGNoZWNrIGlmIHRoaXMgc3RyZWFtJ3MgdGFpbCB0aW1l c3RhbXAgZG9lcyBub3Qgb3ZlcnRha2UKKyAgICAgICAgICogdGhlIG92ZXJhbGwgcXVldWUgaGVh ZCAqLworICAgICAgICBpZiAodHMgIT0gQVZfTk9QVFNfVkFMVUUgJiYgc3RfaGVhZCkKKyAgICAg ICAgICAgIGNtcCA9IGF2X2NvbXBhcmVfdHModHMsIHN0LT50Yiwgc3RfaGVhZC0+aGVhZF90cywg c3RfaGVhZC0+dGIpOworCisgICAgICAgIC8qIFdlIGNhbiByZWxlYXNlIGZyYW1lcyB0aGF0IGRv IG5vdCBlbmQgYWZ0ZXIgdGhlIHF1ZXVlIGhlYWQuCisgICAgICAgICAqIEZyYW1lcyB3aXRoIG5v IHRpbWVzdGFtcHMgYXJlIGp1c3QgcGFzc2VkIHRocm91Z2ggd2l0aCBubyBjb25kaXRpb25zLgor ICAgICAgICAgKi8KKyAgICAgICAgaWYgKGNtcCA8PSAwIHx8IHRzID09IEFWX05PUFRTX1ZBTFVF KSB7CisgICAgICAgICAgICBmcmFtZV9tb3ZlKHNxLCBmcmFtZSwgcGVlayk7CisgICAgICAgICAg ICBvYmpwb29sX3JlbGVhc2Uoc3EtPnBvb2wsICh2b2lkKiopJnBlZWspOworICAgICAgICAgICAg YXZfZmlmb19kcmFpbjIoc3QtPmZpZm8sIDEpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gKHNxLT5maW5pc2hlZCB8fCAoc3QtPmZpbmlzaGVk ICYmICFhdl9maWZvX2Nhbl9yZWFkKHN0LT5maWZvKSkpID8KKyAgICAgICAgICAgIEFWRVJST1Jf RU9GIDogQVZFUlJPUihFQUdBSU4pOworfQorCitzdGF0aWMgaW50IHJlY2VpdmVfaW50ZXJuYWwo U3luY1F1ZXVlICpzcSwgaW50IHN0cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQorewor ICAgIGludCBuYl9lb2YgPSAwOworICAgIGludCByZXQ7CisKKyAgICAvKiByZWFkIGEgZnJhbWUg Zm9yIGEgc3BlY2lmaWMgc3RyZWFtICovCisgICAgaWYgKHN0cmVhbV9pZHggPj0gMCkgeworICAg ICAgICByZXQgPSByZWNlaXZlX2Zvcl9zdHJlYW0oc3EsIHN0cmVhbV9pZHgsIGZyYW1lKTsKKyAg ICAgICAgcmV0dXJuIChyZXQgPCAwKSA/IHJldCA6IHN0cmVhbV9pZHg7CisgICAgfQorCisgICAg LyogcmVhZCBhIGZyYW1lIGZvciBhbnkgc3RyZWFtIHdpdGggYXZhaWxhYmxlIG91dHB1dCAqLwor ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3EtPm5iX3N0cmVhbXM7IGkrKykgewor ICAgICAgICByZXQgPSByZWNlaXZlX2Zvcl9zdHJlYW0oc3EsIGksIGZyYW1lKTsKKyAgICAgICAg aWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7CisgICAg ICAgICAgICBuYl9lb2YgKz0gKHJldCA9PSBBVkVSUk9SX0VPRik7CisgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHJldCA8IDApID8gcmV0IDogaTsKKyAg ICB9CisKKyAgICByZXR1cm4gKG5iX2VvZiA9PSBzcS0+bmJfc3RyZWFtcykgPyBBVkVSUk9SX0VP RiA6IEFWRVJST1IoRUFHQUlOKTsKK30KKworaW50IHNxX3JlY2VpdmUoU3luY1F1ZXVlICpzcSwg aW50IHN0cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQoreworICAgIGludCByZXQgPSBy ZWNlaXZlX2ludGVybmFsKHNxLCBzdHJlYW1faWR4LCBmcmFtZSk7CisKKyAgICAvKiB0cnkgYWdh aW4gaWYgdGhlIHF1ZXVlIG92ZXJmbG93ZWQgYW5kIHRyaWdnZXJlZCBhIGZha2UgaGVhcnRiZWF0 CisgICAgICogZm9yIGxhZ2dpbmcgc3RyZWFtcyAqLworICAgIGlmIChyZXQgPT0gQVZFUlJPUihF QUdBSU4pICYmIG92ZXJmbG93X2hlYXJ0YmVhdChzcSwgc3RyZWFtX2lkeCkpCisgICAgICAgIHJl dCA9IHJlY2VpdmVfaW50ZXJuYWwoc3EsIHN0cmVhbV9pZHgsIGZyYW1lKTsKKworICAgIHJldHVy biByZXQ7Cit9CisKK2ludCBzcV9hZGRfc3RyZWFtKFN5bmNRdWV1ZSAqc3EpCit7CisgICAgU3lu Y1F1ZXVlU3RyZWFtICp0bXAsICpzdDsKKworICAgIHRtcCA9IGF2X3JlYWxsb2NfYXJyYXkoc3Et PnN0cmVhbXMsIHNxLT5uYl9zdHJlYW1zICsgMSwgc2l6ZW9mKCpzcS0+c3RyZWFtcykpOworICAg IGlmICghdG1wKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIHNxLT5zdHJl YW1zID0gdG1wOworCisgICAgc3QgPSAmc3EtPnN0cmVhbXNbc3EtPm5iX3N0cmVhbXNdOworICAg IG1lbXNldChzdCwgMCwgc2l6ZW9mKCpzdCkpOworCisgICAgc3QtPmZpZm8gPSBhdl9maWZvX2Fs bG9jMigxLCBzaXplb2YoU3luY1F1ZXVlRnJhbWUpLCBBVl9GSUZPX0ZMQUdfQVVUT19HUk9XKTsK KyAgICBpZiAoIXN0LT5maWZvKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisg ICAgLyogd2Ugc2V0IGEgdmFsaWQgZGVmYXVsdCwgc28gdGhhdCBhIHBhdGhvbG9naWNhbCBzdHJl YW0gdGhhdCBuZXZlcgorICAgICAqIHJlY2VpdmVzIGV2ZW4gYSByZWFsIHRpbWViYXNlIChhbmQg bm8gZnJhbWVzKSB3b24ndCBzdGFsbCBhbGwgb3RoZXIKKyAgICAgKiBzdHJlYW1zIGZvcmV2ZXI7 IGNmLiBvdmVyZmxvd19oZWFydGJlYXQoKSAqLworICAgIHN0LT50YiAgICAgID0gKEFWUmF0aW9u YWwpeyAxLCAxIH07CisgICAgc3QtPmhlYWRfdHMgPSBBVl9OT1BUU19WQUxVRTsKKworICAgIHJl dHVybiBzcS0+bmJfc3RyZWFtcysrOworfQorCit2b2lkIHNxX3NldF90YihTeW5jUXVldWUgKnNx LCB1bnNpZ25lZCBpbnQgc3RyZWFtX2lkeCwgQVZSYXRpb25hbCB0YikKK3sKKyAgICBTeW5jUXVl dWVTdHJlYW0gKnN0OworCisgICAgYXZfYXNzZXJ0MChzdHJlYW1faWR4IDwgc3EtPm5iX3N0cmVh bXMpOworICAgIHN0ID0gJnNxLT5zdHJlYW1zW3N0cmVhbV9pZHhdOworCisgICAgYXZfYXNzZXJ0 MCghYXZfZmlmb19jYW5fcmVhZChzdC0+ZmlmbykpOworCisgICAgaWYgKHN0LT5oZWFkX3RzICE9 IEFWX05PUFRTX1ZBTFVFKQorICAgICAgICBzdC0+aGVhZF90cyA9IGF2X3Jlc2NhbGVfcShzdC0+ aGVhZF90cywgc3QtPnRiLCB0Yik7CisKKyAgICBzdC0+dGIgPSB0YjsKK30KKworU3luY1F1ZXVl ICpzcV9hbGxvYyhlbnVtIFN5bmNRdWV1ZVR5cGUgdHlwZSwgaW50NjRfdCBidWZfc2l6ZV91cykK K3sKKyAgICBTeW5jUXVldWUgKnNxID0gYXZfbWFsbG9jeihzaXplb2YoKnNxKSk7CisKKyAgICBp ZiAoIXNxKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNxLT50eXBlICAgICAgICAgICAg ICAgICA9IHR5cGU7CisgICAgc3EtPmJ1Zl9zaXplX3VzICAgICAgICAgID0gYnVmX3NpemVfdXM7 CisKKyAgICBzcS0+aGVhZF9zdHJlYW0gICAgICAgICAgPSAtMTsKKyAgICBzcS0+aGVhZF9maW5p c2hlZF9zdHJlYW0gPSAtMTsKKworICAgIHNxLT5wb29sID0gKHR5cGUgPT0gU1lOQ19RVUVVRV9Q QUNLRVRTKSA/IG9ianBvb2xfYWxsb2NfcGFja2V0cygpIDoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpwb29sX2FsbG9jX2ZyYW1lcygpOworICAgIGlm ICghc3EtPnBvb2wpIHsKKyAgICAgICAgYXZfZnJlZXAoJnNxKTsKKyAgICAgICAgcmV0dXJuIE5V TEw7CisgICAgfQorCisgICAgcmV0dXJuIHNxOworfQorCit2b2lkIHNxX2ZyZWUoU3luY1F1ZXVl ICoqcHNxKQoreworICAgIFN5bmNRdWV1ZSAqc3EgPSAqcHNxOworCisgICAgaWYgKCFzcSkKKyAg ICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJf c3RyZWFtczsgaSsrKSB7CisgICAgICAgIFN5bmNRdWV1ZUZyYW1lIGZyYW1lOworICAgICAgICB3 aGlsZSAoYXZfZmlmb19yZWFkKHNxLT5zdHJlYW1zW2ldLmZpZm8sICZmcmFtZSwgMSkgPj0gMCkK KyAgICAgICAgICAgIG9ianBvb2xfcmVsZWFzZShzcS0+cG9vbCwgKHZvaWQqKikmZnJhbWUpOwor CisgICAgICAgIGF2X2ZpZm9fZnJlZXAyKCZzcS0+c3RyZWFtc1tpXS5maWZvKTsKKyAgICB9CisK KyAgICBhdl9mcmVlcCgmc3EtPnN0cmVhbXMpOworCisgICAgb2JqcG9vbF9mcmVlKCZzcS0+cG9v bCk7CisKKyAgICBhdl9mcmVlcChwc3EpOworfQpkaWZmIC0tZ2l0IGEvZmZ0b29scy9zeW5jX3F1 ZXVlLmggYi9mZnRvb2xzL3N5bmNfcXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5lMDg3ODBiN2JmCi0tLSAvZGV2L251bGwKKysrIGIvZmZ0b29scy9zeW5jX3F1 ZXVlLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB CisgKi8KKworI2lmbmRlZiBGRlRPT0xTX1NZTkNfUVVFVUVfSAorI2RlZmluZSBGRlRPT0xTX1NZ TkNfUVVFVUVfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJsaWJhdmNvZGVj L3BhY2tldC5oIgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2ZyYW1lLmgiCisKK2VudW0gU3luY1F1 ZXVlVHlwZSB7CisgICAgU1lOQ19RVUVVRV9QQUNLRVRTLAorICAgIFNZTkNfUVVFVUVfRlJBTUVT LAorfTsKKwordHlwZWRlZiB1bmlvbiBTeW5jUXVldWVGcmFtZSB7CisgICAgQVZGcmFtZSAgKmY7 CisgICAgQVZQYWNrZXQgKnA7Cit9IFN5bmNRdWV1ZUZyYW1lOworCisjZGVmaW5lIFNRRlJBTUUo ZnJhbWUpICgoU3luY1F1ZXVlRnJhbWUpeyAuZiA9IChmcmFtZSkgfSkKKyNkZWZpbmUgU1FQS1Qo cGt0KSAgICAgKChTeW5jUXVldWVGcmFtZSl7IC5wID0gKHBrdCkgfSkKKwordHlwZWRlZiBzdHJ1 Y3QgU3luY1F1ZXVlIFN5bmNRdWV1ZTsKKworLyoqCisgKiBBbGxvY2F0ZSBhIHN5bmMgcXVldWUg b2YgdGhlIGdpdmVuIHR5cGUuCisgKgorICogQHBhcmFtIGJ1Zl9zaXplX3VzIG1heGltdW0gZHVy YXRpb24gdGhhdCB3aWxsIGJlIGJ1ZmZlcmVkIGluIG1pY3Jvc2Vjb25kcworICovCitTeW5jUXVl dWUgKnNxX2FsbG9jKGVudW0gU3luY1F1ZXVlVHlwZSB0eXBlLCBpbnQ2NF90IGJ1Zl9zaXplX3Vz KTsKK3ZvaWQgICAgICAgc3FfZnJlZShTeW5jUXVldWUgKipzcSk7CisKKy8qKgorICogQWRkIGEg bmV3IHN0cmVhbSB0byB0aGUgc3luYyBxdWV1ZS4KKyAqCisgKiBAcmV0dXJuCisgKiAtIGEgbm9u LW5lZ2F0aXZlIHN0cmVhbSBpbmRleCBvbiBzdWNjZXNzCisgKiAtIGEgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvbiBlcnJvcgorICovCitpbnQgc3FfYWRkX3N0cmVhbShTeW5jUXVldWUgKnNxKTsKKwor LyoqCisgKiBTZXQgdGhlIHRpbWViYXNlIGZvciB0aGUgc3RyZWFtIHdpdGggaW5kZXggc3RyZWFt X2lkeC4gU2hvdWxkIGJlIGNhbGxlZAorICogYmVmb3JlIHNlbmRpbmcgYW55IGZyYW1lcyBmb3Ig dGhpcyBzdHJlYW0uCisgKi8KK3ZvaWQgc3Ffc2V0X3RiKFN5bmNRdWV1ZSAqc3EsIHVuc2lnbmVk IGludCBzdHJlYW1faWR4LCBBVlJhdGlvbmFsIHRiKTsKKworLyoqCisgKiBTdWJtaXQgYSBmcmFt ZSBmb3IgdGhlIHN0cmVhbSB3aXRoIGluZGV4IHN0cmVhbV9pZHguCisgKgorICogT24gc3VjY2Vz cywgdGhlIHN5bmMgcXVldWUgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBmcmFtZSBhbmQgd2lsbCBy ZXNldCB0aGUKKyAqIGNvbnRlbnRzIG9mIHRoZSBzdXBwbGllZCBmcmFtZS4gT24gZmFpbHVyZSwg dGhlIGZyYW1lIHJlbWFpbnMgb3duZWQgYnkgdGhlCisgKiBjYWxsZXIuCisgKgorICogU2VuZGlu ZyBhIGZyYW1lIHdpdGggTlVMTCBjb250ZW50cyBtYXJrcyB0aGUgc3RyZWFtIGFzIGZpbmlzaGVk LgorICoKKyAqIEByZXR1cm4KKyAqIC0gMCBvbiBzdWNjZXNzCisgKiAtIEFWRVJST1JfRU9GIHdo ZW4gbm8gbW9yZSBmcmFtZXMgc2hvdWxkIGJlIHN1Ym1pdHRlZCBmb3IgdGhpcyBzdHJlYW0KKyAq IC0gYW5vdGhlciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZQorICovCitpbnQgc3Ff c2VuZChTeW5jUXVldWUgKnNxLCB1bnNpZ25lZCBpbnQgc3RyZWFtX2lkeCwgU3luY1F1ZXVlRnJh bWUgZnJhbWUpOworCisvKioKKyAqIFJlYWQgYSBmcmFtZSBmcm9tIHRoZSBxdWV1ZS4KKyAqCisg KiBAcGFyYW0gc3RyZWFtX2lkeCBpbmRleCBvZiB0aGUgc3RyZWFtIHRvIHJlYWQgYSBmcmFtZSBm b3IuIE1heSBiZSAtMSwgdGhlbgorICogICAgICAgICAgICAgICAgICAgdHJ5IHRvIHJlYWQgYSBm cmFtZSBmcm9tIGFueSBzdHJlYW0gdGhhdCBpcyByZWFkeSBmb3IKKyAqICAgICAgICAgICAgICAg ICAgIG91dHB1dC4KKyAqIEBwYXJhbSBmcmFtZSBvdXRwdXQgZnJhbWUgd2lsbCBiZSB3cml0dGVu IGhlcmUgb24gc3VjY2Vzcy4gVGhlIGZyYW1lIGlzIG93bmVkCisgKiAgICAgICAgICAgICAgYnkg dGhlIGNhbGxlci4KKyAqCisgKiBAcmV0dXJuCisgKiAtIGEgbm9uLW5lZ2F0aXZlIGluZGV4IG9m IHRoZSBzdHJlYW0gdG8gd2hpY2ggdGhlIHJldHVybmVkIGZyYW1lIGJlbG9uZ3MKKyAqIC0gQVZF UlJPUihFQUdBSU4pIHdoZW4gbW9yZSBmcmFtZXMgbmVlZCB0byBiZSBzdWJtaXR0ZWQgdG8gdGhl IHF1ZXVlCisgKiAtIEFWRVJST1JfRU9GIHdoZW4gbm8gbW9yZSBmcmFtZXMgd2lsbCBiZSBhdmFp bGFibGUgZm9yIHRoaXMgc3RyZWFtIChmb3IgYW55CisgKiAgICAgICAgICAgICAgIHN0cmVhbSBp ZiBzdHJlYW1faWR4IGlzIC0xKQorICogLSBhbm90aGVyIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24g ZmFpbHVyZQorICovCitpbnQgc3FfcmVjZWl2ZShTeW5jUXVldWUgKnNxLCBpbnQgc3RyZWFtX2lk eCwgU3luY1F1ZXVlRnJhbWUgZnJhbWUpOworCisjZW5kaWYgLy8gRkZUT09MU19TWU5DX1FVRVVF X0gKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZhdGUvZmZtcGVnLm1hayBiL3Rlc3RzL2ZhdGUvZmZtcGVn Lm1hawppbmRleCAxNTRhZjJmYWM4Li4zOGExYWU3ZWQ1IDEwMDY0NAotLS0gYS90ZXN0cy9mYXRl L2ZmbXBlZy5tYWsKKysrIGIvdGVzdHMvZmF0ZS9mZm1wZWcubWFrCkBAIC0xMDUsNyArMTA1LDcg QEAgRkFURV9TQU1QTEVTX0ZGTVBFRy0kKGNhbGwgQUxMWUVTLCBDT0xPUl9GSUxURVIsIFZPQlNV Ql9ERU1VWEVSLCBNQVRST1NLQV9ERU1VWEUKIGZhdGUtc2hvcnRlc3Qtc3ViOiBDTUQgPSBlbmNf ZGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgdm9ic3ViICQoVEFSR0VUX1NBTVBMRVMpL3N1Yi92 b2JzdWIuaWR4IG1hdHJvc2thICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgIi1maWx0ZXJfY29tcGxleCAnY29sb3I9cz0xeDE6cmF0ZT0xOmR1 cmF0aW9uPTQwMCcgLXBpeF9mbXQgcmdiMjQgLWFsbG93X3Jhd192ZncgMSAtYzpzIGNvcHkgLWM6 diByYXd2aWRlbyIgIFwKLSAgICAgICAgZnJhbWVjcmMgIi1tYXAgMCAtYyBjb3B5IC1zaG9ydGVz dCIKKyAgICAgICAgZnJhbWVjcmMgIi1tYXAgMCAtYyBjb3B5IC1zaG9ydGVzdCAtc2hvcnRlc3Rf YnVmX2R1cmF0aW9uIDQwIgogCiAjIEJhc2ljIHRlc3QgZm9yIGZpeF9zdWJfZHVyYXRpb24sIHdo aWNoIGNhbGN1bGF0ZXMgZHVyYXRpb24gYmFzZWQgb24gdGhlCiAjIGZvbGxvd2luZyBzdWJ0aXRs ZSdzIHB0cy4KZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL2NvcHktc2hvcnRlc3QxIGIvdGVz dHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEKaW5kZXggNTAzODk3M2U0ZS4uODdiZWU0YzQxZiAx MDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEKKysrIGIvdGVzdHMvcmVm L2ZhdGUvY29weS1zaG9ydGVzdDEKQEAgLTEyMCw0ICsxMjAsMyBAQAogMCwgICAgICA5ODMwNCwg ICAgICA5ODMwNCwgICAgIDIwNDgsICAgIDExMTgyLCBlMzVhMmFiODQ2MDI5ZWZmZGJjYTBlNDM2 Mzk3MTdmMgogMSwgICAgICA4NTc2MCwgICAgICA4NTc2MCwgICAgIDE1MzYsICAgICAgNDE4LCBj ZjUyZWE3ZmM2OWU0YzViYzhmNzViMzU0ZGZlNjBhZgogMCwgICAgIDEwMDM1MiwgICAgIDEwMDM1 MiwgICAgIDIwNDgsICAgICAxNDIzLCBmNDgwMjcyYzdkMGI5NzgzNGJjOGVhMzZjY2VjYTYxZAot MSwgICAgICA4NzI5NiwgICAgICA4NzI5NiwgICAgIDE1MzYsICAgICAgNDE4LCA3OGFiMjI2NTdh MWI2YzhhMGU1Yjg2MTJjZWI4MDgxZApkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvY29weS1z aG9ydGVzdDIgYi90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0MgppbmRleCA1MDM4OTczZTRl Li44N2JlZTRjNDFmIDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0Mgor KysgYi90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0MgpAQCAtMTIwLDQgKzEyMCwzIEBACiAw LCAgICAgIDk4MzA0LCAgICAgIDk4MzA0LCAgICAgMjA0OCwgICAgMTExODIsIGUzNWEyYWI4NDYw MjllZmZkYmNhMGU0MzYzOTcxN2YyCiAxLCAgICAgIDg1NzYwLCAgICAgIDg1NzYwLCAgICAgMTUz NiwgICAgICA0MTgsIGNmNTJlYTdmYzY5ZTRjNWJjOGY3NWIzNTRkZmU2MGFmCiAwLCAgICAgMTAw MzUyLCAgICAgMTAwMzUyLCAgICAgMjA0OCwgICAgIDE0MjMsIGY0ODAyNzJjN2QwYjk3ODM0YmM4 ZWEzNmNjZWNhNjFkCi0xLCAgICAgIDg3Mjk2LCAgICAgIDg3Mjk2LCAgICAgMTUzNiwgICAgICA0 MTgsIDc4YWIyMjY1N2ExYjZjOGEwZTViODYxMmNlYjgwODFkCmRpZmYgLS1naXQgYS90ZXN0cy9y ZWYvZmF0ZS9zaG9ydGVzdC1zdWIgYi90ZXN0cy9yZWYvZmF0ZS9zaG9ydGVzdC1zdWIKaW5kZXgg YmUwOTIyZmQ1Ni4uMGRhNGJhMmU5NSAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvc2hvcnRl c3Qtc3ViCisrKyBiL3Rlc3RzL3JlZi9mYXRlL3Nob3J0ZXN0LXN1YgpAQCAtMSw0ICsxLDQgQEAK IDE0NWI5YjQ4ZDU2ZjljOTY2YmY0MTY1N2Y3NTY5OTU0ICp0ZXN0cy9kYXRhL2ZhdGUvc2hvcnRl c3Qtc3ViLm1hdHJvc2thCiAxMzkyMzIgdGVzdHMvZGF0YS9mYXRlL3Nob3J0ZXN0LXN1Yi5tYXRy b3NrYQotZDcxZjVkMzU5ZWY3ODhlYTY4OTQxNWJjMWU0YTkwZGYgKnRlc3RzL2RhdGEvZmF0ZS9z aG9ydGVzdC1zdWIub3V0LmZyYW1lY3JjCi1zdGRkZXY6MTE1NDEuMTIgUFNOUjogMTUuMDggTUFY RElGRjoyMjg1NCBieXRlczogICAgIDI1OTEvICAgIDI2MDU1Cis4NzZhYzNmYTUyZTQ2NzA1MGFi ODQzOTY5ZDRjZjM0MyAqdGVzdHMvZGF0YS9mYXRlL3Nob3J0ZXN0LXN1Yi5vdXQuZnJhbWVjcmMK K3N0ZGRldjoxMTU0MS4xMiBQU05SOiAxNS4wOCBNQVhESUZGOjIyODU0IGJ5dGVzOiAgICAgMjU5 MS8gICAgMjM3MzUKLS0gCjIuMzQuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZm bXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVs CgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVs LXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K