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 DC35745B06 for ; Thu, 16 Mar 2023 20:38:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D3D6468C0C8; Thu, 16 Mar 2023 22:38:18 +0200 (EET) Received: from mail-qt1-f177.google.com (mail-qt1-f177.google.com [209.85.160.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A713A68C0A5 for ; Thu, 16 Mar 2023 22:38:12 +0200 (EET) Received: by mail-qt1-f177.google.com with SMTP id n2so3286884qtp.0 for ; Thu, 16 Mar 2023 13:38:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vimeo.com; s=google; t=1678999091; h=to:in-reply-to:references:message-id:date:subject:mime-version:from :content-transfer-encoding:from:to:cc:subject:date:message-id :reply-to; bh=PmKuJEOHGDhqYFwJcq+TK/Pli9WQbo6ZTvgQs3/WboE=; b=CUoqDH8LQEHM44aQLN9mwcDlf+C0LORUcHnNlaA1wXFz+o8o93aOO5RFN/KXgBPh5L RhCT6CCeqDF4C+7zaUffX0zJmde4tfQFfvF5CLQhigwGR9xuRPuuWexI0UrKY3jEURsp oBuzPZJ3VaB8dd085dTuGtbwnV5rC4/TjKmw4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678999091; h=to:in-reply-to:references:message-id:date:subject:mime-version:from :content-transfer-encoding:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=PmKuJEOHGDhqYFwJcq+TK/Pli9WQbo6ZTvgQs3/WboE=; b=n/xmXAJJsna0m1kIWyi2CPOcRr3X04VAS/sHCG3QPU3IHZVjff9mcsMo8CnyDaUn2w USpEUYdOy5hMzXgr7K1nKs5CitLLDad6t4aoRCqcm9DUKDu2O/R6j9q5nTjdaAlAuMti 6zeT0ZXXYeqV71Q/2RdZEO7/bmC3eP9Mefp1Vau5JWF08q5tD8NX35cZ5WJde1t52DCy fncltd1cE/vfQtcH7hFK/v+Jccvx0WiIjo3qzgkuAMBu0M5l8eRj7JR1l+XIhL7VtohJ q6iuVLaDb+Bt7fsXVBNm3m0UAHbn4BswyxE0cqq3effKwo3BkqSzXi5F/HJKwM94yshx 0pfw== X-Gm-Message-State: AO0yUKXooAklndv0AqWE6gfhuoUnlEQ2zM1EcXFAZd8j7HCviWVqaJw0 SpKqAFn6M2NktBfrM7rOGUpUQF2kc7kZcyM02oCHZw== X-Google-Smtp-Source: AK7set+3OMxRAAwcJo+eM52yaCBCky1mFd6ZZmqxogDWZpPn5eemPzBfbdf+bI1HOTIwN08rLqhjOg== X-Received: by 2002:ac8:5b87:0:b0:3b9:bcac:725b with SMTP id a7-20020ac85b87000000b003b9bcac725bmr9724887qta.22.1678999090629; Thu, 16 Mar 2023 13:38:10 -0700 (PDT) Received: from smtpclient.apple ([2600:4041:6c:7000:d43c:440d:41a2:742b]) by smtp.gmail.com with ESMTPSA id w2-20020ac87182000000b003b9a6d54b6csm69566qto.59.2023.03.16.13.38.10 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Mar 2023 13:38:10 -0700 (PDT) From: =?utf-8?Q?Rapha=C3=ABl_Zumer?= Mime-Version: 1.0 (1.0) Date: Thu, 16 Mar 2023 16:37:59 -0400 Message-Id: <8CFD0240-4196-4E6C-8918-9DCDAED2A648@vimeo.com> References: In-Reply-To: To: FFmpeg development discussions and patches X-Mailer: iPhone Mail (20D67) Subject: Re: [FFmpeg-devel] [PATCH v7 1/2] avcodec/avutil: move dynamic HDR10+ metadata parsing to libavutil 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: Cgo+IE9uIE1hciAxNiwgMjAyMywgYXQgMTY6MTksIEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVh cy5yaGVpbmhhcmR0QG91dGxvb2suY29tPiB3cm90ZToKPiAKPiDvu79SYXBoYcOrbCBadW1lcjoK Pj4gU2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgWnVtZXIgPHJ6dW1lckB0ZWJha28ubmV0Pgo+PiAt LS0KPj4gbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDYgKy0KPj4gbGliYXZj b2RlYy9hdjFkZWMuYyAgICAgICAgICAgICAgfCAgIDYgKy0KPj4gbGliYXZjb2RlYy9keW5hbWlj X2hkcjEwX3BsdXMuYyAgfCAxOTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiBs aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oICB8ICAzNSAtLS0tLS0KPj4gbGliYXZjb2Rl Yy9oMjY0NV9zZWkuYyAgICAgICAgICAgfCAgIDYgKy0KPj4gbGliYXZjb2RlYy9saWJkYXYxZC5j ICAgICAgICAgICAgfCAgIDYgKy0KPj4gbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMg fCAxODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gbGliYXZ1dGlsL2hkcl9keW5h bWljX21ldGFkYXRhLmggfCAgMTMgKysKPj4gOCBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9u cygrKSwgMjQ1IGRlbGV0aW9ucygtKQo+PiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9k eW5hbWljX2hkcjEwX3BsdXMuYwo+PiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5h bWljX2hkcjEwX3BsdXMuaAo+PiAKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUg Yi9saWJhdmNvZGVjL01ha2VmaWxlCj4+IGluZGV4IGFiYWU0OTA5ZDIuLjQwOGVjZDFlMzEgMTAw NjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPj4gKysrIGIvbGliYXZjb2RlYy9NYWtl ZmlsZQo+PiBAQCAtMTA0LDcgKzEwNCw3IEBAIE9CSlMtJChDT05GSUdfSDI2NF9TRUkpICAgICAg ICAgICAgICAgICs9IGgyNjRfc2VpLm8gaDI2NDVfc2VpLm8KPj4gT0JKUy0kKENPTkZJR19IRVZD UEFSU0UpICAgICAgICAgICAgICAgKz0gaGV2Y19wYXJzZS5vIGhldmNfcHMubyBoZXZjX2RhdGEu byBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyNjQ1ZGF0 YS5vIGgyNjQ1X3BhcnNlLm8gaDI2NDVfdnVpLm8KPj4gT0JKUy0kKENPTkZJR19IRVZDX1NFSSkg ICAgICAgICAgICAgICAgKz0gaGV2Y19zZWkubyBoMjY0NV9zZWkubyBcCj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljX2hkcjEwX3BsdXMubyBkeW5h bWljX2hkcl92aXZpZC5vCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkeW5hbWljX2hkcl92aXZpZC5vCj4+IE9CSlMtJChDT05GSUdfSFBFTERTUCkgICAgICAg ICAgICAgICAgICs9IGhwZWxkc3Aubwo+PiBPQkpTLSQoQ09ORklHX0hVRkZNQU4pICAgICAgICAg ICAgICAgICArPSBodWZmbWFuLm8KPj4gT0JKUy0kKENPTkZJR19IVUZGWVVWRFNQKSAgICAgICAg ICAgICAgKz0gaHVmZnl1dmRzcC5vCj4+IEBAIC0yNTAsNyArMjUwLDcgQEAgT0JKUy0kKENPTkZJ R19BVFJBQzNQQUxfREVDT0RFUikgICAgICAgKz0gYXRyYWMzcGx1c2RlYy5vIGF0cmFjM3BsdXMu byBcCj4+IE9CSlMtJChDT05GSUdfQVRSQUM5X0RFQ09ERVIpICAgICAgICAgICs9IGF0cmFjOWRl Yy5vCj4+IE9CSlMtJChDT05GSUdfQVVSQV9ERUNPREVSKSAgICAgICAgICAgICs9IGN5dXYubwo+ PiBPQkpTLSQoQ09ORklHX0FVUkEyX0RFQ09ERVIpICAgICAgICAgICArPSBhdXJhLm8KPj4gLU9C SlMtJChDT05GSUdfQVYxX0RFQ09ERVIpICAgICAgICAgICAgICs9IGF2MWRlYy5vIGR5bmFtaWNf aGRyMTBfcGx1cy5vCj4+ICtPQkpTLSQoQ09ORklHX0FWMV9ERUNPREVSKSAgICAgICAgICAgICAr PSBhdjFkZWMubwo+PiBPQkpTLSQoQ09ORklHX0FWMV9DVVZJRF9ERUNPREVSKSAgICAgICArPSBj dXZpZGRlYy5vCj4+IE9CSlMtJChDT05GSUdfQVYxX01FRElBQ09ERUNfREVDT0RFUikgICs9IG1l ZGlhY29kZWNkZWMubwo+PiBPQkpTLSQoQ09ORklHX0FWMV9OVkVOQ19FTkNPREVSKSAgICAgICAr PSBudmVuY19hdjEubyBudmVuYy5vCj4+IEBAIC0xMDgyLDcgKzEwODIsNyBAQCBPQkpTLSQoQ09O RklHX0xJQkFSSUJCMjRfREVDT0RFUikgICAgICAgICArPSBsaWJhcmliYjI0Lm8gYXNzLm8KPj4g T0JKUy0kKENPTkZJR19MSUJDRUxUX0RFQ09ERVIpICAgICAgICAgICAgKz0gbGliY2VsdF9kZWMu bwo+PiBPQkpTLSQoQ09ORklHX0xJQkNPREVDMl9ERUNPREVSKSAgICAgICAgICArPSBsaWJjb2Rl YzIubwo+PiBPQkpTLSQoQ09ORklHX0xJQkNPREVDMl9FTkNPREVSKSAgICAgICAgICArPSBsaWJj b2RlYzIubwo+PiAtT0JKUy0kKENPTkZJR19MSUJEQVYxRF9ERUNPREVSKSAgICAgICAgICAgKz0g bGliZGF2MWQubyBkeW5hbWljX2hkcjEwX3BsdXMubwo+PiArT0JKUy0kKENPTkZJR19MSUJEQVYx RF9ERUNPREVSKSAgICAgICAgICAgKz0gbGliZGF2MWQubwo+PiBPQkpTLSQoQ09ORklHX0xJQkRB VlMyX0RFQ09ERVIpICAgICAgICAgICArPSBsaWJkYXZzMi5vCj4+IE9CSlMtJChDT05GSUdfTElC RkRLX0FBQ19ERUNPREVSKSAgICAgICAgICs9IGxpYmZkay1hYWNkZWMubwo+PiBPQkpTLSQoQ09O RklHX0xJQkZES19BQUNfRU5DT0RFUikgICAgICAgICArPSBsaWJmZGstYWFjZW5jLm8KPj4gZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXYxZGVjLmMgYi9saWJhdmNvZGVjL2F2MWRlYy5jCj4+IGlu ZGV4IGE4MGUzN2UzM2YuLmRmMzkzZmUzZDAgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvYXYx ZGVjLmMKPj4gKysrIGIvbGliYXZjb2RlYy9hdjFkZWMuYwo+PiBAQCAtMjAsNiArMjAsNyBAQAo+ PiAKPj4gI2luY2x1ZGUgImNvbmZpZ19jb21wb25lbnRzLmgiCj4+IAo+PiArI2luY2x1ZGUgImxp YmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+PiAjaW5jbHVkZSAibGliYXZ1dGlsL2Zp bG1fZ3JhaW5fcGFyYW1zLmgiCj4+ICNpbmNsdWRlICJsaWJhdnV0aWwvbWFzdGVyaW5nX2Rpc3Bs YXlfbWV0YWRhdGEuaCIKPj4gI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCj4+IEBAIC0z MCw3ICszMSw2IEBACj4+ICNpbmNsdWRlICJieXRlc3RyZWFtLmgiCj4+ICNpbmNsdWRlICJjb2Rl Y19pbnRlcm5hbC5oIgo+PiAjaW5jbHVkZSAiZGVjb2RlLmgiCj4+IC0jaW5jbHVkZSAiZHluYW1p Y19oZHIxMF9wbHVzLmgiCj4+ICNpbmNsdWRlICJod2NvbmZpZy5oIgo+PiAjaW5jbHVkZSAicHJv ZmlsZXMuaCIKPj4gI2luY2x1ZGUgInRocmVhZC5oIgo+PiBAQCAtOTI1LDggKzkyNSw4IEBAIHN0 YXRpYyBpbnQgZXhwb3J0X2l0dXRfdDM1KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAq ZnJhbWUsCj4+ICAgICAgICAgaWYgKCFoZHJwbHVzKQo+PiAgICAgICAgICAgICByZXR1cm4gQVZF UlJPUihFTk9NRU0pOwo+PiAKPj4gLSAgICAgICAgcmV0ID0gZmZfcGFyc2VfaXR1X3RfdDM1X3Rv X2R5bmFtaWNfaGRyMTBfcGx1cyhoZHJwbHVzLCBnYi5idWZmZXIsCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0 X2J5dGVzX2xlZnQoJmdiKSk7Cj4+ICsgICAgICAgIHJldCA9IGF2X2R5bmFtaWNfaGRyX3BsdXNf ZnJvbV90MzUoaGRycGx1cywgZ2IuYnVmZmVyLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikpOwo+PiAg ICAgICAgIGlmIChyZXQgPCAwKQo+PiAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiAgICAgICAg IGJyZWFrOwo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYyBi L2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMKPj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDM0YTQ0YWFjNjUuLjAwMDAwMDAwMDAKPj4gLS0tIGEvbGliYXZjb2RlYy9k eW5hbWljX2hkcjEwX3BsdXMuYwo+PiArKysgL2Rldi9udWxsCj4+IEBAIC0xLDE5OCArMCwwIEBA Cj4+IC0vKgo+PiAtICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+PiAtICoKPj4gLSAq IEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK Pj4gLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKPj4gLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgo+PiAtICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+IC0gKgo+PiAtICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+IC0g KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo+PiAtICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPj4gLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCj4+IC0gKgo+PiAtICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+PiAtICogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ PiAtICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg Qm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+PiAtICovCj4+IC0KPj4gLSNpbmNsdWRlICJkeW5h bWljX2hkcjEwX3BsdXMuaCIKPj4gLSNpbmNsdWRlICJnZXRfYml0cy5oIgo+PiAtCj4+IC1zdGF0 aWMgY29uc3QgaW50NjRfdCBsdW1pbmFuY2VfZGVuID0gMTsKPj4gLXN0YXRpYyBjb25zdCBpbnQz Ml90IHBlYWtfbHVtaW5hbmNlX2RlbiA9IDE1Owo+PiAtc3RhdGljIGNvbnN0IGludDY0X3Qgcmdi X2RlbiA9IDEwMDAwMDsKPj4gLXN0YXRpYyBjb25zdCBpbnQzMl90IGZyYWN0aW9uX3BpeGVsX2Rl biA9IDEwMDA7Cj4+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBrbmVlX3BvaW50X2RlbiA9IDQwOTU7 Cj4+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBiZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7Cj4+IC1z dGF0aWMgY29uc3QgaW50MzJfdCBzYXR1cmF0aW9uX3dlaWdodF9kZW4gPSA4Owo+PiAtCj4+IC1p bnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQ bHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpCj4+IC17Cj4+IC0gICAgR2V0Qml0Q29udGV4 dCBnYmMsICpnYiA9ICZnYmM7Cj4+IC0gICAgaW50IHJldDsKPj4gLQo+PiAtICAgIGlmICghcykK Pj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4gLQo+PiAtICAgIHJldCA9IGlu aXRfZ2V0X2JpdHM4KGdiLCBkYXRhLCBzaXplKTsKPj4gLSAgICBpZiAocmV0IDwgMCkKPj4gLSAg ICAgICAgcmV0dXJuIHJldDsKPj4gLQo+PiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEw KQo+PiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gLQo+PiAtICAgIHMt PmFwcGxpY2F0aW9uX3ZlcnNpb24gPSBnZXRfYml0cyhnYiwgOCk7Cj4+IC0gICAgcy0+bnVtX3dp bmRvd3MgPSBnZXRfYml0cyhnYiwgMik7Cj4+IC0KPj4gLSAgICBpZiAocy0+bnVtX3dpbmRvd3Mg PCAxIHx8IHMtPm51bV93aW5kb3dzID4gMykgewo+PiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPj4gLSAgICB9Cj4+IC0KPj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikg PCAoKDE5ICogOCArIDEpICogKHMtPm51bV93aW5kb3dzIC0gMSkpKQo+PiAtICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gLQo+PiAtICAgIGZvciAoaW50IHcgPSAxOyB3IDwg cy0+bnVtX3dpbmRvd3M7IHcrKykgewo+PiAtICAgICAgICAvLyBUaGUgY29ybmVycyBhcmUgc2V0 IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzIGhlcmUuIFRoZXkgc2hvdWxkIGJlCj4+IC0gICAgICAg IC8vIGNvbnZlcnRlZCB0byB0aGUgcmVsYXRpdmUgY29vcmRpbmF0ZXMgKGluIFswLCAxXSkgaW4g dGhlIGRlY29kZXIuCj4+IC0gICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpw YXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+PiAtICAgICAgICBwYXJhbXMtPndpbmRvd191cHBlcl9s ZWZ0X2Nvcm5lcl94ID0KPj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg MTYpLCAxfTsKPj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9 Cj4+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4+IC0g ICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl94ID0KPj4gLSAgICAgICAg ICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPj4gLSAgICAgICAgcGFyYW1z LT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3kgPQo+PiAtICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxNiksIDF9Owo+PiAtCj4+IC0gICAgICAgIHBhcmFtcy0+Y2VudGVy X29mX2VsbGlwc2VfeCA9IGdldF9iaXRzKGdiLCAxNik7Cj4+IC0gICAgICAgIHBhcmFtcy0+Y2Vu dGVyX29mX2VsbGlwc2VfeSA9IGdldF9iaXRzKGdiLCAxNik7Cj4+IC0gICAgICAgIHBhcmFtcy0+ cm90YXRpb25fYW5nbGUgPSBnZXRfYml0cyhnYiwgOCk7Cj4+IC0gICAgICAgIHBhcmFtcy0+c2Vt aW1ham9yX2F4aXNfaW50ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4+IC0gICAg ICAgIHBhcmFtcy0+c2VtaW1ham9yX2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdi LCAxNik7Cj4+IC0gICAgICAgIHBhcmFtcy0+c2VtaW1pbm9yX2F4aXNfZXh0ZXJuYWxfZWxsaXBz ZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4+IC0gICAgICAgIHBhcmFtcy0+b3ZlcmxhcF9wcm9jZXNz X29wdGlvbiA9IGdldF9iaXRzMShnYik7Cj4+IC0gICAgfQo+PiAtCj4+IC0gICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgMjgpCj4+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB Owo+PiAtCj4+IC0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9sdW1pbmFu Y2UgPQo+PiAtICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHNfbG9uZyhnYiwgMjcpLCBsdW1p bmFuY2VfZGVufTsKPj4gLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVh a19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4+IC0KPj4gLSAgICBpZiAocy0+dGFy Z2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKPj4gLSAg ICAgICAgaW50IHJvd3MsIGNvbHM7Cj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 IDEwKQo+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+IC0gICAg ICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4+IC0gICAgICAgIGNvbHMgPSBnZXRfYml0cyhn YiwgNSk7Cj4+IC0gICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwgKChj b2xzIDwgMikgfHwgKGNvbHMgPiAyNSkpKSB7Cj4+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPj4gLSAgICAgICAgfQo+PiAtICAgICAgICBzLT5udW1fcm93c190YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOwo+PiAtICAg ICAgICBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1p bmFuY2UgPSBjb2xzOwo+PiAtCj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChy b3dzICogY29scyAqIDQpKQo+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Cj4+IC0KPj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKPj4g LSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4+IC0gICAgICAg ICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNl W2ldW2pdID0KPj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdi LCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsKPj4gLSAgICAgICAgICAgIH0KPj4gLSAgICAgICAg fQo+PiAtICAgIH0KPj4gLSAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3 KyspIHsKPj4gLSAgICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9 ICZzLT5wYXJhbXNbd107Cj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgzICog MTcgKyAxNyArIDQpKQo+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4+IC0KPj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKPj4gLSAgICAg ICAgICAgIHBhcmFtcy0+bWF4c2NsW2ldID0KPj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4+IC0gICAgICAgIH0KPj4gLSAgICAgICAg cGFyYW1zLT5hdmVyYWdlX21heHJnYiA9Cj4+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4+IC0gICAgICAgIHBhcmFtcy0+bnVtX2Rpc3RyaWJ1 dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMgPSBnZXRfYml0cyhnYiwgNCk7Cj4+IC0KPj4gLSAgICAg ICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwKPj4gLSAgICAgICAgICAgIChwYXJhbXMtPm51bV9k aXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzICogMjQpKQo+PiAtICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+IC0KPj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzOyBpKyspIHsK Pj4gLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdl ID0gZ2V0X2JpdHMoZ2IsIDcpOwo+PiAtICAgICAgICAgICAgcGFyYW1zLT5kaXN0cmlidXRpb25f bWF4cmdiW2ldLnBlcmNlbnRpbGUgPQo+PiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtn ZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKPj4gLSAgICAgICAgfQo+PiAtCj4+IC0gICAgICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQo+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7Cj4+IC0KPj4gLSAgICAgICAgcGFyYW1zLT5mcmFjdGlvbl9icmlnaHRf cGl4ZWxzID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksIGZyYWN0aW9uX3BpeGVsX2Rl bn07Cj4+IC0gICAgfQo+PiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4+IC0gICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiAtICAgIHMtPm1hc3RlcmluZ19kaXNw bGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPj4gLSAgICBp ZiAocy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKPj4g LSAgICAgICAgaW50IHJvd3MsIGNvbHM7Cj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEwKQo+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+IC0g ICAgICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4+IC0gICAgICAgIGNvbHMgPSBnZXRfYml0 cyhnYiwgNSk7Cj4+IC0gICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwg KChjb2xzIDwgMikgfHwgKGNvbHMgPiAyNSkpKSB7Cj4+IC0gICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPj4gLSAgICAgICAgfQo+PiAtICAgICAgICBzLT5udW1fcm93c19t YXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOwo+PiAtICAgICAg ICBzLT5udW1fY29sc19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSBj b2xzOwo+PiAtCj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChyb3dzICogY29s cyAqIDQpKQo+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+IC0K Pj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKPj4gLSAgICAgICAg ICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4+IC0gICAgICAgICAgICAgICAg cy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPj4gLSAg ICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0KSwgcGVha19sdW1p bmFuY2VfZGVufTsKPj4gLSAgICAgICAgICAgIH0KPj4gLSAgICAgICAgfQo+PiAtICAgIH0KPj4g LQo+PiAtICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+PiAt ICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFt c1t3XTsKPj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPj4gLSAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiAtCj4+IC0gICAgICAgIHBhcmFtcy0+ dG9uZV9tYXBwaW5nX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+PiAtICAgICAgICBpZiAocGFyYW1z LT50b25lX21hcHBpbmdfZmxhZykgewo+PiAtICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgMjgpCj4+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4+IC0KPj4gLSAgICAgICAgICAgIHBhcmFtcy0+a25lZV9wb2ludF94ID0KPj4gLSAgICAgICAg ICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwga25lZV9wb2ludF9kZW59Owo+ PiAtICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3kgPQo+PiAtICAgICAgICAgICAgICAg IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBrbmVlX3BvaW50X2Rlbn07Cj4+IC0gICAg ICAgICAgICBwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyA9IGdldF9iaXRzKGdiLCA0 KTsKPj4gLQo+PiAtICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHBhcmFtcy0+ bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApKQo+PiAtICAgICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiAtCj4+IC0gICAgICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzOyBpKyspIHsKPj4gLSAgICAg ICAgICAgICAgICBwYXJhbXMtPmJlemllcl9jdXJ2ZV9hbmNob3JzW2ldID0KPj4gLSAgICAgICAg ICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksIGJlemllcl9hbmNob3Jf ZGVufTsKPj4gLSAgICAgICAgICAgIH0KPj4gLSAgICAgICAgfQo+PiAtCj4+IC0gICAgICAgIGlm IChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPj4gLSAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdf ZmxhZyA9IGdldF9iaXRzMShnYik7Cj4+IC0gICAgICAgIGlmIChwYXJhbXMtPmNvbG9yX3NhdHVy YXRpb25fbWFwcGluZ19mbGFnKSB7Cj4+IC0gICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCA2KQo+PiAtICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ PiAtICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX3dlaWdodCA9Cj4+IC0gICAg ICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA2KSwgc2F0dXJhdGlvbl93ZWln aHRfZGVufTsKPj4gLSAgICAgICAgfQo+PiAtICAgIH0KPj4gLQo+PiAtICAgIHJldHVybiAwOwo+ PiAtfQo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaCBiL2xp YmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 Cj4+IGluZGV4IGNkN2FjZjA0MzIuLjAwMDAwMDAwMDAKPj4gLS0tIGEvbGliYXZjb2RlYy9keW5h bWljX2hkcjEwX3BsdXMuaAo+PiArKysgL2Rldi9udWxsCj4+IEBAIC0xLDM1ICswLDAgQEAKPj4g LS8qCj4+IC0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+IC0gKgo+PiAtICogRkZt cGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+PiAt ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwo+PiAtICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyCj4+IC0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4gLSAqCj4+IC0gKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gLSAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCj4+IC0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQo+PiAtICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPj4gLSAqCj4+IC0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+IC0gKiBMaWNlbnNlIGFs b25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4+IC0g KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4+IC0gKi8KPj4gLQo+PiAtI2lmbmRlZiBBVkNPREVDX0RZ TkFNSUNfSERSMTBfUExVU19ICj4+IC0jZGVmaW5lIEFWQ09ERUNfRFlOQU1JQ19IRFIxMF9QTFVT X0gKPj4gLQo+PiAtI2luY2x1ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ PiAtCj4+IC0vKioKPj4gLSAqIFBhcnNlIHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBU LjM1IHRvIEFWYnVmZmVyIChBVkR5bmFtaWNIRFJQbHVzKS4KPj4gLSAqIEBwYXJhbSBzIEEgcG9p bnRlciBjb250YWluaW5nIHRoZSBkZWNvZGVkIEFWRHluYW1pY0hEUlBsdXMgc3RydWN0dXJlLgo+ PiAtICogQHBhcmFtIGRhdGEgVGhlIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1U IFQuMzUgZGF0YS4KPj4gLSAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGRhdGEgYXJyYXkgaW4g Ynl0ZXMuCj4+IC0gKgo+PiAtICogQHJldHVybiAwIGlmIHN1Y2NlZWQuIE90aGVyd2lzZSwgcmV0 dXJucyB0aGUgYXBwcm9wcmlhdGUgQVZFUlJPUi4KPj4gLSAqLwo+PiAtaW50IGZmX3BhcnNlX2l0 dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3Qg dWludDhfdCAqZGF0YSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBzaXplKTsKPj4gLQo+PiAtI2VuZGlmIC8qIEFWQ09ERUNfRFlOQU1JQ19IRFIx MF9QTFVTX0ggKi8KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMgYi9saWJh dmNvZGVjL2gyNjQ1X3NlaS5jCj4+IGluZGV4IDZlNGE5YTFhZjIuLjYzYWI3MTFiYzkgMTAwNjQ0 Cj4+IC0tLSBhL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKPj4gKysrIGIvbGliYXZjb2RlYy9oMjY0 NV9zZWkuYwo+PiBAQCAtMjcsMTMgKzI3LDEzIEBACj4+IAo+PiAjaW5jbHVkZSAibGliYXZ1dGls L2FtYmllbnRfdmlld2luZ19lbnZpcm9ubWVudC5oIgo+PiAjaW5jbHVkZSAibGliYXZ1dGlsL2Rp c3BsYXkuaCIKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIK Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9maWxtX2dyYWluX3BhcmFtcy5oIgo+PiAjaW5jbHVkZSAi bGliYXZ1dGlsL3BpeGRlc2MuaCIKPj4gI2luY2x1ZGUgImxpYmF2dXRpbC9zdGVyZW8zZC5oIgo+ PiAKPj4gI2luY2x1ZGUgImF0c2NfYTUzLmgiCj4+ICNpbmNsdWRlICJhdmNvZGVjLmgiCj4+IC0j aW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCj4+ICNpbmNsdWRlICJkeW5hbWljX2hkcl92 aXZpZC5oIgo+PiAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKPj4gI2luY2x1ZGUgImdvbG9tYi5oIgo+ PiBAQCAtNTIsOCArNTIsOCBAQCBzdGF0aWMgaW50IGRlY29kZV9yZWdpc3RlcmVkX3VzZXJfZGF0 YV9keW5hbWljX2hkcl9wbHVzKEhFVkNTRUlEeW5hbWljSERSUGx1cyAqcwo+PiAgICAgaWYgKCFt ZXRhZGF0YSkKPj4gICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+PiAKPj4gLSAgICBl cnIgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKG1ldGFkYXRhLCBn Yi0+YnVmZmVyLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoZ2IpKTsKPj4gKyAgICBlcnIgPSBh dl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KG1ldGFkYXRhLCBnYi0+YnVmZmVyLAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVz X2xlZnQoZ2IpKTsKPj4gICAgIGlmIChlcnIgPCAwKSB7Cj4+ICAgICAgICAgYXZfZnJlZShtZXRh ZGF0YSk7Cj4+ICAgICAgICAgcmV0dXJuIGVycjsKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv bGliZGF2MWQuYyBiL2xpYmF2Y29kZWMvbGliZGF2MWQuYwo+PiBpbmRleCBlYjEyMjVlYTFhLi41 MGM0Y2VlZTQwIDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL2xpYmRhdjFkLmMKPj4gKysrIGIv bGliYXZjb2RlYy9saWJkYXYxZC5jCj4+IEBAIC0yNCw2ICsyNCw3IEBACj4+ICNpbmNsdWRlICJs aWJhdnV0aWwvYXZhc3NlcnQuaCIKPj4gI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKPj4gI2lu Y2x1ZGUgImxpYmF2dXRpbC9maWxtX2dyYWluX3BhcmFtcy5oIgo+PiArI2luY2x1ZGUgImxpYmF2 dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+PiAjaW5jbHVkZSAibGliYXZ1dGlsL21hc3Rl cmluZ19kaXNwbGF5X21ldGFkYXRhLmgiCj4+ICNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMu aCIKPj4gI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPj4gQEAgLTMzLDcgKzM0LDYgQEAKPj4g I2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKPj4gI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCj4+ ICNpbmNsdWRlICJkZWNvZGUuaCIKPj4gLSNpbmNsdWRlICJkeW5hbWljX2hkcjEwX3BsdXMuaCIK Pj4gI2luY2x1ZGUgImludGVybmFsLmgiCj4+IAo+PiAjZGVmaW5lIEZGX0RBVjFEX1ZFUlNJT05f QVRfTEVBU1QoeCx5KSBcCj4+IEBAIC01NTUsOCArNTU1LDggQEAgRkZfRU5BQkxFX0RFUFJFQ0FU SU9OX1dBUk5JTkdTCj4+ICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4+ICAgICAgICAgICAg IH0KPj4gCj4+IC0gICAgICAgICAgICByZXMgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1p Y19oZHIxMF9wbHVzKGhkcnBsdXMsIGdiLmJ1ZmZlciwKPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5 dGVzX2xlZnQoJmdiKSk7Cj4+ICsgICAgICAgICAgICByZXMgPSBhdl9keW5hbWljX2hkcl9wbHVz X2Zyb21fdDM1KGhkcnBsdXMsIGdiLmJ1ZmZlciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiKSk7 Cj4+ICAgICAgICAgICAgIGlmIChyZXMgPCAwKQo+PiAgICAgICAgICAgICAgICAgZ290byBmYWls Owo+PiAgICAgICAgICAgICBicmVhazsKPj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5jIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMKPj4gaW5k ZXggMGZhMWVlODJkZS4uNWVkOTAzZjQ3NSAxMDA2NDQKPj4gLS0tIGEvbGliYXZ1dGlsL2hkcl9k eW5hbWljX21ldGFkYXRhLmMKPj4gKysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRh LmMKPj4gQEAgLTIwLDYgKzIwLDE4IEBACj4+IAo+PiAjaW5jbHVkZSAiaGRyX2R5bmFtaWNfbWV0 YWRhdGEuaCIKPj4gI2luY2x1ZGUgIm1lbS5oIgo+PiArI2luY2x1ZGUgImxpYmF2Y29kZWMvZ2V0 X2JpdHMuaCIKPj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL3B1dF9iaXRzLmgiCj4+ICsKPj4gKyNk ZWZpbmUgVDM1X1BBWUxPQURfTUFYX1NJWkUgOTA3Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBpbnQ2 NF90IGx1bWluYW5jZV9kZW4gPSAxOwo+PiArc3RhdGljIGNvbnN0IGludDMyX3QgcGVha19sdW1p bmFuY2VfZGVuID0gMTU7Cj4+ICtzdGF0aWMgY29uc3QgaW50NjRfdCByZ2JfZGVuID0gMTAwMDAw Owo+PiArc3RhdGljIGNvbnN0IGludDMyX3QgZnJhY3Rpb25fcGl4ZWxfZGVuID0gMTAwMDsKPj4g K3N0YXRpYyBjb25zdCBpbnQzMl90IGtuZWVfcG9pbnRfZGVuID0gNDA5NTsKPj4gK3N0YXRpYyBj b25zdCBpbnQzMl90IGJlemllcl9hbmNob3JfZGVuID0gMTAyMzsKPj4gK3N0YXRpYyBjb25zdCBp bnQzMl90IHNhdHVyYXRpb25fd2VpZ2h0X2RlbiA9IDg7Cj4+IAo+PiBBVkR5bmFtaWNIRFJQbHVz ICphdl9keW5hbWljX2hkcl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6ZSkKPj4gewo+PiBAQCAtNDUs MyArNTcsMTc2IEBAIEFWRHluYW1pY0hEUlBsdXMgKmF2X2R5bmFtaWNfaGRyX3BsdXNfY3JlYXRl X3NpZGVfZGF0YShBVkZyYW1lICpmcmFtZSkKPj4gCj4+ICAgICByZXR1cm4gKEFWRHluYW1pY0hE UlBsdXMgKilzaWRlX2RhdGEtPmRhdGE7Cj4+IH0KPj4gKwo+PiAraW50IGF2X2R5bmFtaWNfaGRy X3BsdXNfZnJvbV90MzUoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKQo+PiArewo+ PiArICAgIHVpbnQ4X3QgcGFkZGVkX2J1ZltUMzVfUEFZTE9BRF9NQVhfU0laRSArIEFWX0lOUFVU X0JVRkZFUl9QQURESU5HX1NJWkVdOwo+PiArICAgIEdldEJpdENvbnRleHQgZ2JjLCAqZ2IgPSAm Z2JjOwo+PiArICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICBpZiAoIXMpCj4+ICsgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICsKPj4gKyAgICBtZW1jcHkocGFkZGVkX2J1ZiwgZGF0 YSwgc2l6ZSk7Cj4gCj4gWW91IGFyZSBwb3RlbnRpYWxseSBjb3B5aW5nIG1vcmUgdGhhbiBUMzVf UEFZTE9BRF9NQVhfU0laRSBieXRlcy4KPiBGdXJ0aGVybW9yZSwgeW91IGFyZSBub3QgemVyb2lu ZyB0aGUgcGFkZGluZzsgdGhpcyBtaWdodCBtYWtlIFZhbGdyaW5kCj4gY29tcGxhaW4uCgpHb29k IHBvaW50IG9uIHRoZSBzaXplIGlmIHRoZSB1c2VyIHNlbmRzIGFuIGluY29ycmVjdCB2YWx1ZSwg d2UgY2FuIHJldHVybiBBVkVSUk9SKEVJTlZBTCkgaW4gdGhhdCBjYXNlLiBJIGRpZCBydW4gaXQg dGhyb3VnaCBWYWxncmluZCBhbmQgZGlkIG5vdCBnZXQgYW4gZXJyb3IgZHVlIHRvIG5vdCB6ZXJv aW5nIHRoZSBwYWRkZWQgYnVmZmVyLiBJIGRvbuKAmXQgdGhpbmsgdGhhdCBzaG91bGQgYmUgbmVj ZXNzYXJ5IHNpbmNlIGl04oCZcyBjb250YWluZWQgd2l0aGluIHRoYXQgZnVuY3Rpb24gYW5kIHVu aW5pdGlhbGl6ZWQgYml0cyBzaG91bGQgbmV2ZXIgYmUgYWNjZXNzZWQsIGlzIHRoYXQgaW5jb3Jy ZWN0PwoKUloKCj4gCj4+ICsKPj4gKyAgICByZXQgPSBpbml0X2dldF9iaXRzOChnYiwgcGFkZGVk X2J1Ziwgc2l6ZSk7Cj4+ICsgICAgaWYgKHJldCA8IDApCj4+ICsgICAgICAgIHJldHVybiByZXQ7 Cj4+ICsKPj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPj4gKyAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ICsKPj4gKyAgICBzLT5hcHBsaWNhdGlvbl92ZXJz aW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwo+PiArICAgIHMtPm51bV93aW5kb3dzID0gZ2V0X2JpdHMo Z2IsIDIpOwo+PiArCj4+ICsgICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5udW1fd2lu ZG93cyA+IDMpIHsKPj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ICsg ICAgfQo+PiArCj4+ICsgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKCgxOSAqIDggKyAxKSAq IChzLT5udW1fd2luZG93cyAtIDEpKSkKPj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7Cj4+ICsKPj4gKyAgICBmb3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3 KyspIHsKPj4gKyAgICAgICAgLy8gVGhlIGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBjb29y ZGluYXRlcyBoZXJlLiBUaGV5IHNob3VsZCBiZQo+PiArICAgICAgICAvLyBjb252ZXJ0ZWQgdG8g dGhlIHJlbGF0aXZlIGNvb3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgo+PiAr ICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFt c1t3XTsKPj4gKyAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeCA9Cj4+ ICsgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4+ICsgICAg ICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kgPQo+PiArICAgICAgICAgICAg KEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9Owo+PiArICAgICAgICBwYXJhbXMtPndp bmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Cj4+ICsgICAgICAgICAgICAoQVZSYXRpb25hbCl7 Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4+ICsgICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2VyX3Jp Z2h0X2Nvcm5lcl95ID0KPj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg MTYpLCAxfTsKPj4gKwo+PiArICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3ggPSBn ZXRfYml0cyhnYiwgMTYpOwo+PiArICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kg PSBnZXRfYml0cyhnYiwgMTYpOwo+PiArICAgICAgICBwYXJhbXMtPnJvdGF0aW9uX2FuZ2xlID0g Z2V0X2JpdHMoZ2IsIDgpOwo+PiArICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2ludGVy bmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+PiArICAgICAgICBwYXJhbXMtPnNlbWlt YWpvcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+PiArICAgICAg ICBwYXJhbXMtPnNlbWltaW5vcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwg MTYpOwo+PiArICAgICAgICBwYXJhbXMtPm92ZXJsYXBfcHJvY2Vzc19vcHRpb24gPSBnZXRfYml0 czEoZ2IpOwo+PiArICAgIH0KPj4gKwo+PiArICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4 KQo+PiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gKwo+PiArICAgIHMt PnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVtaW5hbmNlID0KPj4gKyAgICAgICAg KEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNlX2Rlbn07Cj4+ICsg ICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcg PSBnZXRfYml0czEoZ2IpOwo+PiArCj4+ICsgICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNw bGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Cj4+ICsgICAgICAgIGludCByb3dzLCBj b2xzOwo+PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPj4gKyAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArICAgICAgICByb3dzID0gZ2V0X2Jp dHMoZ2IsIDUpOwo+PiArICAgICAgICBjb2xzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+PiArICAgICAg ICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xz ID4gMjUpKSkgewo+PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ ICsgICAgICAgIH0KPj4gKyAgICAgICAgcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKPj4gKyAgICAgICAgcy0+bnVtX2NvbHNf dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKPj4g Kwo+PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkK Pj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArCj4+ICsgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Cj4+ICsgICAgICAgICAgICBmb3Ig KGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+PiArICAgICAgICAgICAgICAgIHMtPnRhcmdl dGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Cj4+ICsgICAg ICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5h bmNlX2Rlbn07Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAgICAgIH0KPj4gKyAgICB9Cj4+ICsg ICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4+ICsgICAgICAg IEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+ PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkKPj4g KyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArCj4+ICsgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4+ICsgICAgICAgICAgICBwYXJhbXMtPm1h eHNjbFtpXSA9Cj4+ICsgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAx NyksIHJnYl9kZW59Owo+PiArICAgICAgICB9Cj4+ICsgICAgICAgIHBhcmFtcy0+YXZlcmFnZV9t YXhyZ2IgPQo+PiArICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJn Yl9kZW59Owo+PiArICAgICAgICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNl bnRpbGVzID0gZ2V0X2JpdHMoZ2IsIDQpOwo+PiArCj4+ICsgICAgICAgIGlmIChnZXRfYml0c19s ZWZ0KGdiKSA8Cj4+ICsgICAgICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJn Yl9wZXJjZW50aWxlcyAqIDI0KSkKPj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+PiArCj4+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1f ZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Cj4+ICsgICAgICAgICAgICBw YXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGFnZSA9IGdldF9iaXRzKGdiLCA3 KTsKPj4gKyAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50 aWxlID0KPj4gKyAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwg cmdiX2Rlbn07Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVm dChnYikgPCAxMCkKPj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ PiArCj4+ICsgICAgICAgIHBhcmFtcy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgMTApLCBmcmFjdGlvbl9waXhlbF9kZW59Owo+PiArICAgIH0KPj4g KyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQo+PiArICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPj4gKyAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19s dW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4+ICsgICAgaWYgKHMtPm1hc3RlcmluZ19k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Cj4+ICsgICAgICAgIGludCByb3dz LCBjb2xzOwo+PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPj4gKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArICAgICAgICByb3dzID0gZ2V0 X2JpdHMoZ2IsIDUpOwo+PiArICAgICAgICBjb2xzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+PiArICAg ICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChj b2xzID4gMjUpKSkgewo+PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgcy0+bnVtX3Jvd3NfbWFzdGVyaW5nX2Rpc3BsYXlf YWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKPj4gKyAgICAgICAgcy0+bnVtX2NvbHNfbWFz dGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKPj4gKwo+PiArICAg ICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKPj4gKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArCj4+ICsgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Cj4+ICsgICAgICAgICAgICBmb3IgKGludCBqID0g MDsgaiA8IGNvbHM7IGorKykgewo+PiArICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNw bGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Cj4+ICsgICAgICAgICAgICAgICAgICAg IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Cj4+ICsg ICAgICAgICAgICB9Cj4+ICsgICAgICAgIH0KPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBmb3IgKGlu dCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPj4gKyAgICAgICAgQVZIRFJQbHVz Q29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cj4+ICsgICAgICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPj4gKwo+PiArICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19mbGFn ID0gZ2V0X2JpdHMxKGdiKTsKPj4gKyAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9tYXBwaW5nX2Zs YWcpIHsKPj4gKyAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQo+PiArICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArCj4+ICsgICAgICAg ICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeCA9Cj4+ICsgICAgICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPj4gKyAgICAgICAgICAgIHBh cmFtcy0+a25lZV9wb2ludF95ID0KPj4gKyAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDEyKSwga25lZV9wb2ludF9kZW59Owo+PiArICAgICAgICAgICAgcGFyYW1zLT5u dW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4+ICsKPj4gKyAgICAg ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChwYXJhbXMtPm51bV9iZXppZXJfY3VydmVf YW5jaG9ycyAqIDEwKSkKPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPj4gKwo+PiArICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPm51 bV9iZXppZXJfY3VydmVfYW5jaG9yczsgaSsrKSB7Cj4+ICsgICAgICAgICAgICAgICAgcGFyYW1z LT5iZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9Cj4+ICsgICAgICAgICAgICAgICAgICAgIChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiZXppZXJfYW5jaG9yX2Rlbn07Cj4+ICsgICAgICAg ICAgICB9Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAxKQo+PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ICsg ICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcgPSBnZXRfYml0czEo Z2IpOwo+PiArICAgICAgICBpZiAocGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxh Zykgewo+PiArICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKPj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gKyAgICAgICAgICAgIHBh cmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl93ZWlnaHQgPQo+PiArICAgICAgICAgICAgICAgIChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgNiksIHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Cj4+ICsgICAg ICAgIH0KPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1cm4gMDsKPj4gK30KPj4gZGlmZiAtLWdp dCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIGIvbGliYXZ1dGlsL2hkcl9keW5h bWljX21ldGFkYXRhLmgKPj4gaW5kZXggMmQ3MmRlNTZhZS4uZmFhNGY0NmIwYiAxMDA2NDQKPj4g LS0tIGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgKPj4gKysrIGIvbGliYXZ1dGls L2hkcl9keW5hbWljX21ldGFkYXRhLmgKPj4gQEAgLTM0MCw0ICszNDAsMTcgQEAgQVZEeW5hbWlj SERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19hbGxvYyhzaXplX3QgKnNpemUpOwo+PiAgKi8K Pj4gQVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRh KEFWRnJhbWUgKmZyYW1lKTsKPj4gCj4+ICsvKioKPj4gKyAqIFBhcnNlIHRoZSB1c2VyIGRhdGEg cmVnaXN0ZXJlZCBJVFUtVCBULjM1IHRvIEFWYnVmZmVyIChBVkR5bmFtaWNIRFJQbHVzKS4KPj4g KyAqIFRoZSBULjM1IGJ1ZmZlciBtdXN0IGJlZ2luIHdpdGggdGhlIGFwcGxpY2F0aW9uIG1vZGUs IHNraXBwaW5nIHRoZQo+PiArICogY291bnRyeSBjb2RlLCB0ZXJtaW5hbCBwcm92aWRlciBjb2Rl cywgYW5kIGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuCj4+ICsgKiBAcGFyYW0gcyBBIHBvaW50ZXIg Y29udGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KPj4gKyAq IEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1 IGRhdGEuCj4+ICsgKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5dGVz Lgo+PiArICoKPj4gKyAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMg dGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCj4+ICsgKi8KPj4gK2ludCBhdl9keW5hbWljX2hkcl9w bHVzX2Zyb21fdDM1KEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSk7Cj4+ICsKPj4g I2VuZGlmIC8qIEFWVVRJTF9IRFJfRFlOQU1JQ19NRVRBREFUQV9IICovCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFp bGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcv bWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiAKPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQg bGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdp dGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==