From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 2E47F4BCD7
	for <ffmpegdev@gitmailbox.com>; Fri,  4 Apr 2025 01:18:41 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4CC3D687DBE;
	Fri,  4 Apr 2025 04:18:39 +0300 (EEST)
Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com
 [209.85.214.170])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0A17F687D4F
 for <ffmpeg-devel@ffmpeg.org>; Fri,  4 Apr 2025 04:18:32 +0300 (EEST)
Received: by mail-pl1-f170.google.com with SMTP id
 d9443c01a7336-2260c915749so11409585ad.3
 for <ffmpeg-devel@ffmpeg.org>; Thu, 03 Apr 2025 18:18:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1743729509; x=1744334309; darn=ffmpeg.org;
 h=message-id:in-reply-to:to:references:date:subject:mime-version:from
 :from:to:cc:subject:date:message-id:reply-to;
 bh=nQH10WvGVS/pgyhR3OzMmwSMyxn/f0SU4IQyrbufVMM=;
 b=dlz8SMmQRo7VEsZefLmYWs65J9fTSdi7psdzmq9Crj+PNsavSnNJwuwAq4qqH0IA9K
 QJVDsKGIlzjuWHpCpaAMqTm0Qv4V9ssn4ClYgG41nq2kV3zw8jVb9cUFjFQPVcIClARn
 IvsfL5KY8DwFVcpNq62np29JB1xXdIjAibdE380WAcROETdjtmaibfNr4h4+3za486Gl
 K06Dr5wNBYDtjMByxdte5GTpnSQSE3HjjKqUkvkf2s3LsPR9Lz3A7I6evGWbRnzkWaNA
 GkAbCV283l6l/jrbb15QrvGHgNk3G5O0t6DFa2yyxie6VMiOBAudr3SXritRNNCa0aiW
 dNnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743729509; x=1744334309;
 h=message-id:in-reply-to:to:references:date:subject:mime-version:from
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=nQH10WvGVS/pgyhR3OzMmwSMyxn/f0SU4IQyrbufVMM=;
 b=ZCykpLH7bxNc3Gke+kMcZEUrS0KGPC3J5tzYgH/PhsN2V54355+JQSLYg431YJLXcJ
 wP5CdwL91xnxA/ciYk+iUMpqxKRyzfqjVzLekdBtseiKBogGIqJg68xHMoP5FTjMFZW6
 0fyI1S6sQZ+Pi16yAmv7oKZpvHiWalNsMoUPxGxnoLYi95Q28IIR579/fY6q19yUn4HI
 EnGBclFUFhA0oeaegfIUuiEhJnOqRghYht0hJSYdJrFHHJvCkLQPddPrEB/Z3DYbjOTu
 JnuF6Ao3E1OQl4RSv5OhOZwt8i1gRceASjiq5Q24cdTPuCbabgyk3pFEiMnYGAjwuERR
 4hsQ==
X-Gm-Message-State: AOJu0Yz88N4YNqGAYReWtlureGi1i6lfL/UDAU5E45POR3mg+EU+tqVM
 3NRJxABXeZL/5//NiPvuCMOL+il2tp7BTyqg7ndPY13bvBg8nAHFLo1JfvbDzkg=
X-Gm-Gg: ASbGnctyFupQeifdhBIkmh0rxvnd7RA5KurjrsvATZrGyX96zdMlatPI2pMEIiB4qLl
 ehk3/bmiPERm2tZdYPBzozImbhc1ccGIWrNzXwAnRCPJEzukwGk5tLivorfmF7GoW4C5lbkfsGP
 Oe/KEyCyVQFBNSNGE13fe+qzT7kvf8+WeOHvNXQl0HlLnEIlytXcBVF/itBmmG6d1iHxrfc3Yjn
 et8lSO1gn8ilghZgb6j0SjvSS92o0aeb30kclNrBceKU0yJ19Te7P48SR/7NgmVhqACK4sLlPml
 SGqq47DkP5cWxuIvPCwdm+np+3fdoyFdg7fJ13TugPC2PVUg5iAao3Jb0Pz3SyMmQg==
X-Google-Smtp-Source: AGHT+IFK1GFFf9X5me4Jl5WsCeqY3Q0P+++gszEY6QoPzXKIppjwiUYstaS6o7Dzk9JMTMdV0e1Zqw==
X-Received: by 2002:a17:903:1b2d:b0:216:7926:8d69 with SMTP id
 d9443c01a7336-22a8a8dd69emr12784285ad.47.1743729509047; 
 Thu, 03 Apr 2025 18:18:29 -0700 (PDT)
Received: from smtpclient.apple ([2a00:79e1:abc:12d:cd00:47c0:6be8:c827])
 by smtp.gmail.com with ESMTPSA id
 d9443c01a7336-2297866e633sm21151105ad.195.2025.04.03.18.18.28
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 03 Apr 2025 18:18:28 -0700 (PDT)
From: Peter Xia <aattyy@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.500.181.1.5\))
Date: Thu, 3 Apr 2025 18:18:17 -0700
References: <20250401102902.89332-1-aattyy@gmail.com>
 <13759e52-d981-48e4-801e-eb5d55315e66@gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
In-Reply-To: <13759e52-d981-48e4-801e-eb5d55315e66@gmail.com>
Message-Id: <E0E4D77E-D7D0-4AAD-AEB1-55EA047D4D6D@gmail.com>
X-Mailer: Apple Mail (2.3826.500.181.1.5)
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: Re: [FFmpeg-devel] [PATCH] avcodec/libwebpdec: Add libwebp WebP
 decoder.
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/E0E4D77E-D7D0-4AAD-AEB1-55EA047D4D6D@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

SGkgTGVvbiwgCgpUaGFua3MgZm9yIHRoZSBmZWVkYmFjayEgSeKAmXZlIHNlbmQgYSB2MiBvZiB0
aGlzIHBhdGNoLgoKUGV0ZXIKCj4gT24gQXByIDMsIDIwMjUsIGF0IDEyOjEx4oCvQU0sIExlb24g
R3J1dHRlcnMgPGdydXR0ZXJzbGVvbmJvdDJAZ21haWwuY29tPiB3cm90ZToKPiAKPiBPbiA0LzEv
MjUgMTI6MjkgUE0sIFBldGVyIFhpYSB3cm90ZToKPj4gQWRkcyBzdXBwb3J0IG9mIGRlY29kaW5n
IGFuaW1hdGVkIHdlYnAuCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBYaWEgPGFhdHR5eUBn
bWFpbC5jb20+Cj4+IC0tLQo+PiAgQ2hhbmdlbG9nICAgICAgICAgICAgICAgICB8ICAgMSArCj4+
ICBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICA0ICstCj4+ICBkb2MvZ2VuZXJhbF9jb250
ZW50cy50ZXhpIHwgICAyICstCj4+ICBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgIHwgICAxICsK
Pj4gIGxpYmF2Y29kZWMvYWxsY29kZWNzLmMgICAgfCAgIDMgKy0KPj4gIGxpYmF2Y29kZWMvbGli
d2VicGRlYy5jICAgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
Pj4gIGxpYmF2Y29kZWMvdmVyc2lvbi5oICAgICAgfCAgIDIgKy0KPj4gIDcgZmlsZXMgY2hhbmdl
ZCwgMjA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4+ICBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliYXZjb2RlYy9saWJ3ZWJwZGVjLmMKPj4gCj4+IGRpZmYgLS1naXQgYS9DaGFuZ2Vsb2cg
Yi9DaGFuZ2Vsb2cKPj4gaW5kZXggYTAzYTc5ZDE3YS4uNDYzNWUxNmMwNSAxMDA2NDQKPj4gLS0t
IGEvQ2hhbmdlbG9nCj4+ICsrKyBiL0NoYW5nZWxvZwo+PiBAQCAtMTIsNiArMTIsNyBAQCB2ZXJz
aW9uIDxuZXh0PjoKPj4gIC0gQW5pbWF0ZWQgSlBFRyBYTCBlbmNvZGluZyAodmlhIGxpYmp4bCkK
Pj4gIC0gVlZDIGluIE1hdHJvc2thCj4+ICAtIENFTkMgQVYxIHN1cHBvcnQgaW4gTVA0IG11eGVy
Cj4+ICstIEFuaW1hdGVkIFdlYlAgZGVjb2RpbmcKPj4gICAgdmVyc2lvbiA3LjE6Cj4+ICAtIFJh
dyBDYXB0aW9ucyB3aXRoIFRpbWUgKFJDV1QpIGNsb3NlZCBjYXB0aW9uIGRlbXV4ZXIKPj4gZGlm
ZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+PiBpbmRleCA0NTU5OTYyYTRhLi4yOGE1
MzI2NDFiIDEwMDc1NQo+PiAtLS0gYS9jb25maWd1cmUKPj4gKysrIGIvY29uZmlndXJlCj4+IEBA
IC0zNjExLDYgKzM2MTEsNyBAQCBsaWJ2cHhfdnA5X2VuY29kZXJfZGVwcz0ibGlidnB4Igo+PiAg
bGlidnZlbmNfZW5jb2Rlcl9kZXBzPSJsaWJ2dmVuYyIKPj4gIGxpYndlYnBfZW5jb2Rlcl9kZXBz
PSJsaWJ3ZWJwIgo+PiAgbGlid2VicF9hbmltX2VuY29kZXJfZGVwcz0ibGlid2VicCIKPj4gK2xp
YndlYnBfZGVjb2Rlcl9kZXBzPSJsaWJ3ZWJwIgo+PiAgbGlieDI2Ml9lbmNvZGVyX2RlcHM9Imxp
YngyNjIiCj4+ICBsaWJ4MjY0X2VuY29kZXJfZGVwcz0ibGlieDI2NCIKPj4gIGxpYngyNjRfZW5j
b2Rlcl9zZWxlY3Q9ImF0c2NfYTUzIGdvbG9tYiIKPj4gQEAgLTcwODEsNyArNzA4Miw4IEBAIGVu
YWJsZWQgbGlidnB4ICAgICAgICAgICAgJiYgewo+PiAgZW5hYmxlZCBsaWJ2dmVuYyAgICAgICAg
ICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlidnZlbmMgImxpYnZ2ZW5jID49IDEuNi4xIiAidnZl
bmMvdnZlbmMuaCIgdnZlbmNfZ2V0X3ZlcnNpb24KPj4gIGVuYWJsZWQgbGlid2VicCAgICAgICAg
ICAgJiYgewo+PiAgICAgIGVuYWJsZWQgbGlid2VicF9lbmNvZGVyICAgICAgJiYgcmVxdWlyZV9w
a2dfY29uZmlnIGxpYndlYnAgImxpYndlYnAgPj0gMC4yLjAiIHdlYnAvZW5jb2RlLmggV2ViUEdl
dEVuY29kZXJWZXJzaW9uCj4+IC0gICAgZW5hYmxlZCBsaWJ3ZWJwX2FuaW1fZW5jb2RlciAmJiBj
aGVja19wa2dfY29uZmlnIGxpYndlYnBfYW5pbV9lbmNvZGVyICJsaWJ3ZWJwbXV4ID49IDAuNC4w
IiB3ZWJwL211eC5oIFdlYlBBbmltRW5jb2Rlck9wdGlvbnNJbml0OyB9Cj4+ICsgICAgZW5hYmxl
ZCBsaWJ3ZWJwX2FuaW1fZW5jb2RlciAmJiBjaGVja19wa2dfY29uZmlnIGxpYndlYnBfYW5pbV9l
bmNvZGVyICJsaWJ3ZWJwbXV4ID49IDAuNC4wIiB3ZWJwL211eC5oIFdlYlBBbmltRW5jb2Rlck9w
dGlvbnNJbml0Cj4+ICsgICAgZW5hYmxlZCBsaWJ3ZWJwX2RlY29kZXIgICAgICAmJiBjaGVja19w
a2dfY29uZmlnIGxpYndlYnBfZGVjb2RlciAibGlid2VicGRlbXV4ID49IDEuNS4wIiB3ZWJwL2Rl
bXV4LmggV2ViUEFuaW1EZWNvZGVyT3B0aW9uc0luaXRJbnRlcm5hbDsgfQo+PiAgZW5hYmxlZCBs
aWJ4MjY0ICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlieDI2NCB4MjY0ICJzdGRp
bnQuaCB4MjY0LmgiIHgyNjRfZW5jb2Rlcl9lbmNvZGUgJiYKPj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWlyZV9jcHBfY29uZGl0aW9uIGxpYngyNjQgeDI2NC5oICJYMjY0X0JV
SUxEID49IDE1NSIgJiYgewo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICIkdG9v
bGNoYWluIiAhPSAibXN2YyIgXSB8fAo+PiBkaWZmIC0tZ2l0IGEvZG9jL2dlbmVyYWxfY29udGVu
dHMudGV4aSBiL2RvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkKPj4gaW5kZXggNWZhZjg5ODE1Yi4u
NGYxMGMzZTM0YSAxMDA2NDQKPj4gLS0tIGEvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQo+PiAr
KysgYi9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpCj4+IEBAIC04NTcsNyArODU3LDcgQEAgZm9s
bG93aW5nIGltYWdlIGZvcm1hdHMgYXJlIHN1cHBvcnRlZDoKPj4gIEBpdGVtIFdCTVAgICAgICAg
ICBAdGFiIFggQHRhYiBYCj4+ICAgICAgQHRhYiBXaXJlbGVzcyBBcHBsaWNhdGlvbiBQcm90b2Nv
bCBCaXRtYXAgaW1hZ2UgZm9ybWF0Cj4+ICBAaXRlbSBXZWJQICAgICAgICAgQHRhYiBFIEB0YWIg
WAo+PiAtICAgIEB0YWIgV2ViUCBpbWFnZSBmb3JtYXQsIGVuY29kaW5nIHN1cHBvcnRlZCB0aHJv
dWdoIGV4dGVybmFsIGxpYnJhcnkgbGlid2VicAo+PiArICAgIEB0YWIgV2ViUCBpbWFnZSBmb3Jt
YXQsIHN1cHBvcnRlZCB0aHJvdWdoIGV4dGVybmFsIGxpYnJhcnkgbGlid2VicAo+PiAgQGl0ZW0g
WEJNICBAdGFiIFggQHRhYiBYCj4+ICAgICAgQHRhYiBYIEJpdE1hcCBpbWFnZSBmb3JtYXQKPj4g
IEBpdGVtIFhGYWNlIEB0YWIgWCBAdGFiIFgKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFr
ZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4+IGluZGV4IGIyNDIwMWIxYWYuLmM5NjM3YTIx
MTQgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPj4gKysrIGIvbGliYXZjb2Rl
Yy9NYWtlZmlsZQo+PiBAQCAtMTE3OSw2ICsxMTc5LDcgQEAgT0JKUy0kKENPTkZJR19MSUJWUFhf
VlA5X0VOQ09ERVIpICAgICAgICAgKz0gbGlidnB4ZW5jLm8KPj4gIE9CSlMtJChDT05GSUdfTElC
VlZFTkNfRU5DT0RFUikgICAgICAgICAgICs9IGxpYnZ2ZW5jLm8KPj4gIE9CSlMtJChDT05GSUdf
TElCV0VCUF9FTkNPREVSKSAgICAgICAgICAgICs9IGxpYndlYnBlbmNfY29tbW9uLm8gbGlid2Vi
cGVuYy5vCj4+ICBPQkpTLSQoQ09ORklHX0xJQldFQlBfQU5JTV9FTkNPREVSKSAgICAgICArPSBs
aWJ3ZWJwZW5jX2NvbW1vbi5vIGxpYndlYnBlbmNfYW5pbWVuY29kZXIubwo+PiArT0JKUy0kKENP
TkZJR19MSUJXRUJQX0RFQ09ERVIpICAgICAgICAgICAgKz0gbGlid2VicGRlYy5vCj4+ICBPQkpT
LSQoQ09ORklHX0xJQlgyNjJfRU5DT0RFUikgICAgICAgICAgICArPSBsaWJ4MjY0Lm8KPj4gIE9C
SlMtJChDT05GSUdfTElCWDI2NF9FTkNPREVSKSAgICAgICAgICAgICs9IGxpYngyNjQubwo+PiAg
T0JKUy0kKENPTkZJR19MSUJYMjY1X0VOQ09ERVIpICAgICAgICAgICAgKz0gbGlieDI2NS5vCj4+
IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxjb2Rl
Y3MuYwo+PiBpbmRleCBmMTA1MTk2MTdlLi41ZjhmNjgyMTExIDEwMDY0NAo+PiAtLS0gYS9saWJh
dmNvZGVjL2FsbGNvZGVjcy5jCj4+ICsrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKPj4gQEAg
LTgxMCw4ICs4MTAsOSBAQCBleHRlcm4gRkZDb2RlYyBmZl9saWJ2cHhfdnA5X2VuY29kZXI7Cj4+
ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ2cHhfdnA5X2RlY29kZXI7Cj4+ICBleHRlcm4g
Y29uc3QgRkZDb2RlYyBmZl9saWJ2dmVuY19lbmNvZGVyOwo+PiAgLyogcHJlZmVycmVkIG92ZXIg
bGlid2VicCAqLwo+PiAtZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlid2VicF9hbmltX2VuY29k
ZXI7Cj4+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ3ZWJwX2VuY29kZXI7Cj4+ICtleHRl
cm4gY29uc3QgRkZDb2RlYyBmZl9saWJ3ZWJwX2FuaW1fZW5jb2RlcjsKPj4gK2V4dGVybiBjb25z
dCBGRkNvZGVjIGZmX2xpYndlYnBfZGVjb2RlcjsKPj4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZm
X2xpYngyNjJfZW5jb2RlcjsKPj4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYngyNjRfZW5j
b2RlcjsKPj4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYngyNjRyZ2JfZW5jb2RlcjsKPj4g
ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGlid2VicGRlYy5jIGIvbGliYXZjb2RlYy9saWJ3ZWJw
ZGVjLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMC4uOWVjM2I2
MDcwOQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2xpYmF2Y29kZWMvbGlid2VicGRlYy5jCj4+
IEBAIC0wLDAgKzEsMjAwIEBACj4+ICsvKgo+PiArICogTGliV2ViUCBkZWNvZGVyCj4+ICsgKiBD
b3B5cmlnaHQgKGMpIDIwMjUgUGV0ZXIgWGlhCj4+ICsgKgo+PiArICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgRkZtcGVnLgo+PiArICoKPj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4gKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+PiArICogdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCj4+ICsgKgo+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiArICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPj4gKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+ICsgKgo+
PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwo+PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+PiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+PiAr
ICovCj4+ICsKPj4gKy8qKgo+PiArICogQGZpbGUKPj4gKyAqIExpYldlYlAgZGVjb2Rlcgo+PiAr
ICovCj4+ICsKPj4gKyNpbmNsdWRlICJkZWNvZGUuaCIKPj4gKyNpbmNsdWRlICJjb2RlY19pbnRl
cm5hbC5oIgo+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnV0aWwuaCIKPj4gKyNpbmNsdWRlICJs
aWJhdnV0aWwvb3B0LmgiCj4+ICsjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKPj4g
KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmlvLmgiCj4+ICsKPj4gKyNpbmNsdWRlIDx3ZWJwL2Rl
bXV4Lmg+Cj4+ICsjaW5jbHVkZSA8d2VicC9kZWNvZGUuaD4KPj4gKwo+PiArdHlwZWRlZiBzdHJ1
Y3QgQW5pbWF0ZWRXZWJQQ29udGV4dAo+PiArewo+PiArICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNz
Owo+PiArICAgIFdlYlBBbmltRGVjb2Rlck9wdGlvbnMgZGVjX29wdGlvbnM7Cj4+ICsgICAgV2Vi
UEFuaW1EZWNvZGVyICpkZWM7Cj4+ICsgICAgQVZCdWZmZXJSZWYgKmZpbGVfY29udGVudDsKPj4g
KyAgICBXZWJQRGF0YSB3ZWJwX2RhdGE7IC8vIHJlZmVyZW5jZXMgfGZpbGVfY29udGVudHwKPj4g
KyAgICB1aW50MzJfdCBsb29wX3RvX3NlbmQ7Cj4+ICsgICAgdWludDMyX3QgbG9vcF9zZW50Owo+
PiArCj4+ICsgICAgLy8gLS0tIE9wdGlvbnMgLS0tCj4+ICsgICAgaW50IGlnbm9yZV9sb29wOwo+
PiArfSBBbmltYXRlZFdlYlBDb250ZXh0Owo+PiArCj4+ICsvLyBJbml0aWFsaXplIHRoZSBkZWNv
ZGVyIGNvbnRleHQKPj4gK3N0YXRpYyBhdl9jb2xkIGludCBkZWNvZGVfbGlid2VicF9pbml0KEFW
Q29kZWNDb250ZXh0ICphdmN0eCkKPj4gK3sKPj4gKyAgICBBbmltYXRlZFdlYlBDb250ZXh0ICpz
ID0gYXZjdHgtPnByaXZfZGF0YTsKPj4gKwo+PiArICAgIGlmICghV2ViUEFuaW1EZWNvZGVyT3B0
aW9uc0luaXQoJnMtPmRlY19vcHRpb25zKSkKPj4gKyAgICB7Cj4gQnJhY2VzIGZvciBpZi1zdGF0
ZW1lbnRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBpZi1zdGF0ZW1lbnQKPj4g
KyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJDYW5ub3QgaW5pdGlhbGl6ZSBX
ZWJQQW5pbURlY29kZXJPcHRpb25zXG4iKTsKPj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P
TUVNKTsKPj4gKyAgICB9Cj4+ICsgICAgcy0+ZGVjX29wdGlvbnMuY29sb3JfbW9kZSA9IE1PREVf
UkdCQTsKPj4gKyAgICBzLT5kZWNfb3B0aW9ucy51c2VfdGhyZWFkcyA9IDE7Cj4+ICsgICAgcy0+
ZmlsZV9jb250ZW50ID0gTlVMTDsKPj4gKyAgICBzLT5sb29wX3NlbnQgPSAwOwo+PiArCj4+ICsg
ICAgYXZjdHgtPnBpeF9mbXQgPSBBVl9QSVhfRk1UX1JHQkE7Cj4+ICsgICAgYXZjdHgtPnBrdF90
aW1lYmFzZSA9IGF2X21ha2VfcSgxLCAxMDAwKTsKPj4gKyAgICBhdmN0eC0+ZnJhbWVyYXRlID0g
YXZfbWFrZV9xKDEsIDApOwo+PiArCj4+ICsgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcs
ICJBbmltYXRlZCBXZWJQIGRlY29kZXIgaW5pdGlhbGl6ZWQuXG4iKTsKPj4gKyAgICByZXR1cm4g
MDsgLy8gU3VjY2Vzcwo+PiArfQo+PiArCj4+ICsvLyBEZWNvZGUgb25lIGZyYW1lIG9mIHRoZSBh
bmltYXRlZCBXZWJQCj4+ICsvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG11bHRpcGxl
IHRpbWVzIGJ5IEZGbXBlZy4KPj4gKy8vIFRoZSBmaXJzdCBjYWxsIHJlY2VpdmVzIHRoZSBBVlBh
Y2tldCB3aXRoIHRoZSBmdWxsIFdlYlAgZmlsZS4KPj4gKy8vIFN1YnNlcXVlbnQgY2FsbHMgcmVj
ZWl2ZSBlbXB0eSBBVlBhY2tldCB1bnRpbCBhbGwgZnJhbWVzIGFyZSBkZWNvZGVkLgo+IFRoZXNl
IGNvbW1lbnRzIHNob3VsZCBwcm9iYWJseSBiZSBpbiBKYXZhZG9jIGZvcm1hdAo+PiArc3RhdGlj
IGludCBkZWNvZGVfbGlid2VicF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUg
KnAsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZ290X2ZyYW1lLCBB
VlBhY2tldCAqYXZwa3QpCj4+ICt7Cj4+ICsgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfSU5GTywg
ImRlY29kZV9saWJ3ZWJwX2ZyYW1lKClcbiIpOwo+PiArCj4+ICsgICAgV2ViUEFuaW1JbmZvIGFu
aW1faW5mbzsKPiBUaGlzIGdpdmVzIGEgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgd2Fy
bmluZwo+ICh0aG91Z2ggdGhhdCB3b3VsZG4ndCBtYXR0ZXIgaWYKPiBodHRwczovL3BhdGNod29y
ay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL3BhdGNoL0FTOFAyNTBNQjA3NDQ2QUU4QzdDRERE
MUFDNzk1REQ1NjhGQTIyQEFTOFAyNTBNQjA3NDQuRVVSUDI1MC5QUk9ELk9VVExPT0suQ09NLwo+
IGlzIG1lcmdlZCkKPj4gKyAgICB1aW50OF90ICpmcmFtZV9yZ2JhOwo+PiArICAgIGludCB0aW1l
c3RhbXBfbXM7Cj4+ICsKPj4gKyAgICBBbmltYXRlZFdlYlBDb250ZXh0ICpzID0gYXZjdHgtPnBy
aXZfZGF0YTsKPj4gKyAgICBpbnQgcmV0ID0gYXZwa3QtPnNpemU7Cj4+ICsKPj4gKyAgICAvLyBJ
bml0aWFsaXphdGlvbiBQaGFzZSAoRmlyc3QgQ2FsbCkKPj4gKyAgICAvLyB8YXZwa3R8IGNvbnRh
aW5zIHRoZSBlbnRpcmUgZmlsZS4KPj4gKyAgICBpZiAoIXMtPmRlYykKPj4gKyAgICB7Cj4+ICsg
ICAgICAgIGlmICghYXZwa3QgfHwgYXZwa3QtPnNpemUgPD0gMCkKPj4gKyAgICAgICAgewo+PiAr
ICAgICAgICAgICAgLy8gU2hvdWxkIG5vdCBoYXBwZW4gb24gdGhlIGZpcnN0IGNhbGwsIGJ1dCBj
aGVjayBhbnl3YXkuCj4+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwg
Ik5vIGlucHV0IGRhdGEgcHJvdmlkZWQgb24gZmlyc3QgY2FsbC5cbiIpOwo+PiArICAgICAgICAg
ICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAg
IC8vIFN0b3JlIGVudGlyZSBXZWJQIGZpbGUgaW4gbWVtb3J5Lgo+PiArICAgICAgICBzLT5maWxl
X2NvbnRlbnQgPSBhdl9idWZmZXJfcmVmKGF2cGt0LT5idWYpOwo+PiArICAgICAgICBzLT53ZWJw
X2RhdGEuYnl0ZXMgPSBzLT5maWxlX2NvbnRlbnQtPmRhdGE7Cj4+ICsgICAgICAgIHMtPndlYnBf
ZGF0YS5zaXplID0gcy0+ZmlsZV9jb250ZW50LT5zaXplOwo+PiArCj4+ICsgICAgICAgIHMtPmRl
YyA9IFdlYlBBbmltRGVjb2Rlck5ldygmcy0+d2VicF9kYXRhLCAmcy0+ZGVjX29wdGlvbnMpOwo+
PiArICAgICAgICBpZiAoIXMtPmRlYykKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgYXZf
bG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJFcnJvciBjcmVhdGluZyBXZWJQQW5pbURlY29kZXIu
XG4iKTsKPj4gKyAgICAgICAgICAgIGF2X2J1ZmZlcl91bnJlZigmcy0+ZmlsZV9jb250ZW50KTsK
Pj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICsgICAgICAgIH0KPj4g
Kwo+PiArICAgICAgICBXZWJQQW5pbURlY29kZXJHZXRJbmZvKHMtPmRlYywgJmFuaW1faW5mbyk7
Cj4+ICsKPj4gKyAgICAgICAgcy0+bG9vcF90b19zZW5kID0gcy0+aWdub3JlX2xvb3AgPyAxIDog
YW5pbV9pbmZvLmxvb3BfY291bnQ7Cj4+ICsgICAgICAgIGF2Y3R4LT53aWR0aCA9IGFuaW1faW5m
by5jYW52YXNfd2lkdGg7Cj4+ICsgICAgICAgIGF2Y3R4LT5jb2RlZF93aWR0aCA9IGFuaW1faW5m
by5jYW52YXNfd2lkdGg7Cj4+ICsgICAgICAgIGF2Y3R4LT5oZWlnaHQgPSBhbmltX2luZm8uY2Fu
dmFzX2hlaWdodDsKPj4gKyAgICAgICAgYXZjdHgtPmNvZGVkX2hlaWdodCA9IGFuaW1faW5mby5j
YW52YXNfaGVpZ2h0Owo+PiArICAgICAgICBhdmN0eC0+ZnJhbWVyYXRlID0gYXZfbWFrZV9xKDEs
IDApOwo+PiArICAgIH0KPj4gKwo+PiArICAgIGlmICghV2ViUEFuaW1EZWNvZGVySGFzTW9yZUZy
YW1lcyhzLT5kZWMpKQo+PiArICAgIHsKPj4gKyAgICAgICAgcy0+bG9vcF9zZW50Kys7Cj4+ICsg
ICAgICAgIFdlYlBBbmltRGVjb2RlclJlc2V0KHMtPmRlYyk7Cj4+ICsgICAgfQo+PiArCj4+ICsg
ICAgaWYgKHMtPmxvb3Bfc2VudCA+PSBzLT5sb29wX3RvX3NlbmQpCj4+ICsgICAgewo+PiArICAg
ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkVuZCBvZiBhbmltYXRlZCBXZWJQIHN0
cmVhbS5cbiIpOwo+PiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7Cj4+ICsgICAgfQo+PiAr
Cj4+ICsKPj4gKyAgICBpZiAoIVdlYlBBbmltRGVjb2RlckdldE5leHQocy0+ZGVjLCAmZnJhbWVf
cmdiYSwgJnRpbWVzdGFtcF9tcykpCj4+ICsgICAgewo+PiArICAgICAgICBhdl9sb2coYXZjdHgs
IEFWX0xPR19FUlJPUiwgIkVycm9yIGdldHRpbmcgbmV4dCBmcmFtZSBmcm9tIFdlYlBBbmltRGVj
b2Rlci5cbiIpOwo+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+PiArICAgIH0K
Pj4gKwo+PiArICAgIHJldCA9IGZmX2dldF9idWZmZXIoYXZjdHgsIHAsIDApOwo+PiArICAgIGlm
IChyZXQpCj4+ICsgICAgewo+PiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwg
IkZhaWxlZCB0byBhbGxvY2F0ZWQgYnVmZmVyLlxuIik7Cj4+ICsgICAgICAgIHJldHVybiBBVkVS
Uk9SKEVOT01FTSk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgcC0+d2lkdGggPSBhdmN0eC0+d2lk
dGg7Cj4+ICsgICAgcC0+aGVpZ2h0ID0gYXZjdHgtPmhlaWdodDsKPj4gKyAgICBwLT5mb3JtYXQg
PSBBVl9QSVhfRk1UX1JHQkE7Cj4+ICsgICAgcC0+cHRzID0gdGltZXN0YW1wX21zOwo+PiArICAg
IHAtPnBrdF9kdHMgPSAwOwo+PiArICAgIHAtPnBpY3RfdHlwZSA9IEFWX1BJQ1RVUkVfVFlQRV9J
Owo+PiArCj4+ICsgICAgbWVtY3B5KHAtPmRhdGFbMF0sIGZyYW1lX3JnYmEsIHAtPndpZHRoICog
cC0+aGVpZ2h0ICogNCk7Cj4+ICsKPj4gKyAgICAqZ290X2ZyYW1lID0gMTsKPj4gKyAgICByZXR1
cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgYXZfY29sZCBpbnQgZGVjb2RlX2xpYndlYnBf
Y2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+PiArewo+PiArICAgIEFuaW1hdGVkV2ViUENv
bnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+PiArICAgIGF2X2J1ZmZlcl91bnJlZigmcy0+
ZmlsZV9jb250ZW50KTsKPj4gKyAgICBpZiAocy0+ZGVjKQo+PiArICAgIHsKPj4gKyAgICAgICAg
V2ViUEFuaW1EZWNvZGVyRGVsZXRlKHMtPmRlYyk7Cj4+ICsgICAgICAgIHMtPmRlYyA9IE5VTEw7
Cj4+ICsgICAgfQo+PiArICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qg
QVZPcHRpb24gb3B0aW9uc1tdID0gewo+PiArICAgIHsiaWdub3JlX2xvb3AiLCAiaWdub3JlIGxv
b3Agc2V0dGluZyAobmV0c2NhcGUgZXh0ZW5zaW9uKSIsIG9mZnNldG9mKEFuaW1hdGVkV2ViUENv
bnRleHQsIGlnbm9yZV9sb29wKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQgPSAxfSwgMCwgMSwg
QVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFSQU19LAo+PiArICAgIHtOVUxMfX07Cj4gVGhpcyBjbG9z
aW5nIGJyYWNlIHNob3VsZCBiZSBvbiBpdHMgbGluZQo+PiArCj4+ICtzdGF0aWMgY29uc3QgQVZD
bGFzcyBsaWJ3ZWJwX2RlY29kZXJfY2xhc3MgPSB7Cj4+ICsgICAgLmNsYXNzX25hbWUgPSAibGli
d2VicF9kZWNvZGVyIiwKPj4gKyAgICAuaXRlbV9uYW1lID0gYXZfZGVmYXVsdF9pdGVtX25hbWUs
Cj4+ICsgICAgLm9wdGlvbiA9IG9wdGlvbnMsCj4+ICsgICAgLnZlcnNpb24gPSBMSUJBVlVUSUxf
VkVSU0lPTl9JTlQsCj4+ICsgICAgLmNhdGVnb3J5ID0gQVZfQ0xBU1NfQ0FURUdPUllfREVDT0RF
UiwKPj4gK307Cj4+ICsKPj4gKy8vIERlZmluZSB0aGUgQVZDb2RlYyBzdHJ1Y3R1cmUgZm9yIEZG
bXBlZwo+PiArY29uc3QgRkZDb2RlYyBmZl9saWJ3ZWJwX2RlY29kZXIgPSB7Cj4+ICsgICAgLnAu
bmFtZSAgICAgICAgID0gImxpYndlYnAiLAo+PiArICAgIENPREVDX0xPTkdfTkFNRSgibGlid2Vi
cCBpbWFnZS9hbmltYXRpb24gZGVjb2RlciIpLAo+PiArICAgIC5wLnR5cGUgICAgICAgICA9IEFW
TUVESUFfVFlQRV9WSURFTywKPj4gKyAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9X
RUJQLAo+PiArICAgIC5wLnByaXZfY2xhc3MgICA9ICZsaWJ3ZWJwX2RlY29kZXJfY2xhc3MsCj4+
ICsgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKEFuaW1hdGVkV2ViUENvbnRleHQpLAo+PiAr
ICAgIC5wLndyYXBwZXJfbmFtZSA9ICJsaWJ3ZWJwIiwKPj4gKyAgICAuaW5pdCAgICAgICAgICAg
PSBkZWNvZGVfbGlid2VicF9pbml0LAo+PiArICAgIEZGX0NPREVDX0RFQ09ERV9DQihkZWNvZGVf
bGlid2VicF9mcmFtZSksCj4+ICsgICAgLmNsb3NlICAgICAgICAgID0gZGVjb2RlX2xpYndlYnBf
Y2xvc2UsCj4+ICsgICAgLnAuY2FwYWJpbGl0aWVzID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NP
REVDX0NBUF9ERUxBWSwKPj4gK307Cj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZlcnNpb24u
aCBiL2xpYmF2Y29kZWMvdmVyc2lvbi5oCj4+IGluZGV4IDhjM2Q0NzYwMDMuLjU5NTcwMDk0NTcg
MTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oCj4+ICsrKyBiL2xpYmF2Y29kZWMv
dmVyc2lvbi5oCj4gVGhpcyBwYXRjaCBkb2Vzbid0IGFwcGx5IGFueW1vcmUgYmVjYXVzZSBvZiBh
IG1lcmdlIGNvbmZsaWN0Cj4gaW4gdGhpcyBmaWxlIHNpbmNlIDgzOWI0MTkKPiAob2YgY291cnNl
IHRoYXQncyBub3QgeW91ciBmYXVsdCwgYnV0IGp1c3QgYSBoZWFkcyB1cCEpCj4+IEBAIC0yOSw3
ICsyOSw3IEBACj4+ICAgICNpbmNsdWRlICJ2ZXJzaW9uX21ham9yLmgiCj4+ICAtI2RlZmluZSBM
SUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgICAwCj4+ICsjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lP
Tl9NSU5PUiAgIDEKPj4gICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JQ1JPIDEwMAo+PiAg
ICAjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgIEFWX1ZFUlNJT05fSU5UKExJQkFWQ09E
RUNfVkVSU0lPTl9NQUpPUiwgXAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnIDxtYWlsdG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Cj4gaHR0cHM6
Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4gCj4gVG8gdW5zdWJz
Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RA
ZmZtcGVnLm9yZyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc+IHdpdGgg
c3ViamVjdCAidW5zdWJzY3JpYmUiLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZt
cGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK
ClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwt
cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=