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 526864805E for ; Sun, 10 Dec 2023 12:56:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 18A8F68D12C; Sun, 10 Dec 2023 14:54:18 +0200 (EET) Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2254168D0D4 for ; Sun, 10 Dec 2023 14:54:16 +0200 (EET) Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-2ca0d14976aso46550431fa.2 for ; Sun, 10 Dec 2023 04:54:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702212855; x=1702817655; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=YpsirjxQeZTZYt/6OnXp28zRUT98KYYChwrho6PZuPk=; b=fLxQ815hoAVFmMjQf+T9gA7zWrIAcP/Q/4/w1u8mWxlkfSeHpe7d9/MFbvIOI6Z+4Q KIHue2FqejFbxUJ1PTH3XFRXdthR/uukKyrvc45qAdzdCZ+LeUyIA2t54Snv1K9yru8s tRdaYgQ9Tt9BSW3iXO1/uwqQ8hQRNLskpkpxnRYv6fCUMwxm0dxxsHZ0bRtw6yItsesy gQX7Shsi2Ts3Z+t3jvNUiT3C5/QKhBs2OlAt1rbkcC4K/sLERSIjHsyzget338tidOaF 3EtA2wUnt9+5WcbGKxWAy6FRMbEDPKAMqRlYUeNq3k8AypE/QWKgIVaJ51PzExIZf34k 9MTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702212855; x=1702817655; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YpsirjxQeZTZYt/6OnXp28zRUT98KYYChwrho6PZuPk=; b=ws5XvDElJ4D/TqXkRHZzTJwlxCLuXNQ3X4kQyV8Yx29dEbluiV32tEDJEzWBLqsfP9 hRucfcH/JK3d9c1J2Sm8jAFtmZ4sFKMht2wWn9gkjEfYzYstW8PuA5KRbnLR3LkqdWjU mu2n+vLK0PyeToRecytVvB+mzAE2xmMaoUpNmN3PlAwmSeKepNJ3ut95t8kQEypx+sZp GPrsdd/cH3eMXGAnljxLT34JWMhpvHCxc5j6MhjHpN9+x287esUCFS4iTLSzoxsqwuR2 h44f/02bb6h273xfSNqLLE88OV8WaTsc0tzjCBhPka0uPSNyeK6Wba4zf88f8kO8nt64 BgRQ== X-Gm-Message-State: AOJu0YzPvMeB2/W+weOZ4eNEpwJ5mhLw+AQLHYb85UHifo3k+6GIb9+l 5JWfobLxkKf5wS5im3aDfZuFZkCZH7rurDuP1TApsuBZ X-Google-Smtp-Source: AGHT+IHtbcaZd/dMjCsCW6rHa/6tok2EkHSY91Qf2hx+nKye4SPmQoC231cYu0EmQZX2RUNIzp4hhPh5O/CGYa5nU7g= X-Received: by 2002:a05:6512:4026:b0:50b:fe58:d6f1 with SMTP id br38-20020a056512402600b0050bfe58d6f1mr1646875lfb.87.1702212855288; Sun, 10 Dec 2023 04:54:15 -0800 (PST) MIME-Version: 1.0 References: <20231205144519.7334-1-nuomi2021@gmail.com> In-Reply-To: From: Nuo Mi Date: Sun, 10 Dec 2023 20:54:06 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v6 14/14] vvcdec: add full vvc decoder 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: T24gU2F0LCBEZWMgOSwgMjAyMyBhdCAxOjEz4oCvUE0gQW5kcmVhcyBSaGVpbmhhcmR0IDwKYW5k cmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPiB3cm90ZToKCj4gTnVvIE1pOgo+ID4gSGkgQW5k cmVhcywKPiA+IHRoYW5rIHlvdSBmb3IgdGhlIHJldmlldy4KPiA+IE9uIEZyaSwgRGVjIDgsIDIw MjMgYXQgODoxN+KAr1BNIEFuZHJlYXMgUmhlaW5oYXJkdCA8Cj4gPiBhbmRyZWFzLnJoZWluaGFy ZHRAb3V0bG9vay5jb20+IHdyb3RlOgo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50 IG1pbl9wdV9hcnJheXNfaW5pdChWVkNGcmFtZUNvbnRleHQgKmZjLCBjb25zdCBpbnQKPiA+PiBw aWNfc2l6ZV9pbl9taW5fcHUpCj4gPj4+ICt7Cj4gPj4+ICsgICAgaWYgKGZjLT50YWIucGljX3Np emVfaW5fbWluX3B1ICE9IHBpY19zaXplX2luX21pbl9wdSkgewo+ID4+PiArICAgICAgICBtaW5f cHVfYXJyYXlzX2ZyZWUoZmMpOwo+ID4+PiArICAgICAgICBmYy0+dGFiLm1zZiAgPSBhdl9tYWxs b2N6KHBpY19zaXplX2luX21pbl9wdSk7Cj4gPj4+ICsgICAgICAgIGZjLT50YWIuaWFmICA9IGF2 X21hbGxvY3oocGljX3NpemVfaW5fbWluX3B1KTsKPiA+Pj4gKyAgICAgICAgZmMtPnRhYi5tbWkg ID0gYXZfbWFsbG9jeihwaWNfc2l6ZV9pbl9taW5fcHUpOwo+ID4+PiArICAgICAgICBmYy0+dGFi Lm12ZiAgPSBhdl9tYWxsb2N6KHBpY19zaXplX2luX21pbl9wdSAqCj4gPj4gc2l6ZW9mKCpmYy0+ dGFiLm12ZikpOwo+ID4+Cj4gPj4gRG8gdGhlc2UgaGF2ZSB0byBiZSBzZXBhcmF0ZSBhbGxvY2F0 aW9ucz8gSWYgdGhlcmUgd2VyZSBhbGxvY2F0ZWQKPiA+PiBqb2ludGx5LCBvbmUgbWVtc2V0IGJl bG93IHdvdWxkIHN1ZmZpY2UuCj4gPj4KPiA+IFRoZXkgYXJlIHNlcGFyYXRlIGZsYWdzLCBpZiB3 ZSBjb21iaW5lIHRoZW0uIFdlIGNhbid0IHVzZSBtZW1zZXQgdG8gc2V0Cj4gPiBmbGFncyBmb3Ig YSBibG9jay4KPiA+Cj4KPiBJIGRpc2FncmVlOiBZb3Ugd291bGQgc3RpbGwgYmUgYWJsZSB0byB1 c2UgZGlmZmVyZW50IHBvaW50ZXJzIGZvcgo+IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgbGFyZ2Ug YWxsb2NhdGVkIGJsb2NrLCBpdCBpcyBqdXN0IHRoYXQgeW91IGFsc28KPiBzYXZlIHNvbWUgdW5u ZWNlc3NhcnkgYWxsb2NhdGlvbnMgKGFuZCBmcmVlcyBhbmQgZXJyb3JzIGNoZWNrcyBmb3IgdGhl Cj4gYWxsb2NhdGlvbnMpIGFuZCBhbHNvIGdhaW4gdGhlIGFiaWxpdHkgdG8gbWVtc2V0IHRoZW0g dmlhIG9uZSBtZW1zZXQKPiBjYWxsIGluIGNhc2Ugb25lIHdhbnRzIHRvIHNldCB0aGVtIHRvIHRo ZSBzYW1lIHZhbHVlLgo+Ckdvb2QgaWRlYS4gZG9uZQoKPgo+ID4+Cj4gPj4+ICsKPiA+Pj4gK3N0 YXRpYyBpbnQgaW5pdF9zbGljZV9jb250ZXh0KFNsaWNlQ29udGV4dCAqc2MsIFZWQ0ZyYW1lQ29u dGV4dCAqZmMsCj4gPj4gY29uc3QgSDI2NDVOQUwgKm5hbCwgY29uc3QgQ29kZWRCaXRzdHJlYW1V bml0ICp1bml0KQo+ID4+PiArewo+ID4+PiArICAgIGNvbnN0IFZWQ1NIICpzaCAgICAgICAgICAg ICA9ICZzYy0+c2g7Cj4gPj4+ICsgICAgY29uc3QgSDI2NlJhd1NsaWNlICpzbGljZSAgID0gKGNv bnN0IEgyNjZSYXdTbGljZSAqKXVuaXQtPmNvbnRlbnQ7Cj4gPj4KPiA+PiBQbGVhc2Ugbm8gcG9p bnRsZXNzIGNhc3RzLiBBbHNvLCB3aHkgaXMgdGhlcmUgdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZSBp bgo+ID4+IGZyb250IG9mICc9Jz8KPiA+Pgo+ID4gRml4IGhlcmUgYW5kIHNlcnZhbCBvdGhlciBw bGFjZXMKPiA+IFRoZSB3aGl0ZXNwYWNlIHdpbGwgbWFrZSBhbGwgPSBpbiBhIGNvbC4KPiA+Cj4K PiBCdXQgdGhlcmUgaXMgbm90aGluZyB0aGF0IG5lZWRzIHRoYXQgbXVjaCB3aGl0ZXNwYWNlLgo+ Cj4gPj4+ICsKPiA+Pj4gK3N0YXRpYyBhdl9jb2xkIGludCBmcmFtZV9jb250ZXh0X2luaXQoVlZD RnJhbWVDb250ZXh0ICpmYywKPiA+PiBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCj4gPj4+ICt7Cj4g Pj4+ICsKPiA+Pj4gKyAgICBmYy0+YXZjdHggPSBhdl9tZW1kdXAoYXZjdHgsIHNpemVvZigqYXZj dHgpKTsKPiA+Pgo+ID4+IFdoZW4gSSByZWFkIHRoaXMsIEkgcHJlc3VtZWQgeW91IGFyZSB1c2lu ZyBtdWx0aXBsZSBBVkNvZGVjQ29udGV4dHMgdG8KPiA+PiBzdG9yZSB0aGUgZXZlciBjaGFuZ2lu ZyBzdGF0ZSBvZiB0aGUgQVZDb2RlY0NvbnRleHQgZmllbGRzIHNpbWlsYXJseSB0bwo+ID4+IHVw ZGF0ZV9jb250ZXh0X2Zyb21fdGhyZWFkKCkgaW4gcHRocmVhZF9mcmFtZS5jLiBCdXQgaXQgc2Vl bXMgeW91IGRvbid0Lgo+ID4+IFRoZXNlIGNvbnRleHRzIGFyZSBvbmx5IHVzZWQgYXMgYSkgbG9n Y29udGV4dHMgKHdoZXJlIHRoZSBhY3R1YWwKPiA+PiB1c2VyLWZhY2luZyBBVkNvZGVjQ29udGV4 dCBzaG91bGQgYmUgdXNlZCwgc28gdGhhdCB0aGUgdXNlciBjYW4gbWFrZQo+ID4+IHNlbnNlIG9m IHRoZSBsb2dtZXNzYWdlcyEpLCBiKSBpbiBmZl90aHJlYWRfZ2V0X2J1ZmZlcigpIGFuZCBjKSBp bgo+ID4+IGV4cG9ydF9mcmFtZV9wYXJhbXMoKSB3aGVyZSBvbmx5IHNvbWUgYmFzaWMgZmllbGRz Cj4gPj4gKGRpbWVuc2lvbi1yZWxhdGVkK3BpeF9mbXQpIGlzIHNldC4gUHJlc3VtYWJseSBjKSBp cyBkb25lIGZvciBiKS4KPiA+Pgo+ID4gSSByZW1lbWJlciBpZiBpIGRpZCBub3QgdXNlIGEgbG9j YWwgQVZDb2RlY0NvbnRleHQgIGl0IHdvdWxkIHRyaWdnZXIgc29tZQo+ID4gYXNzZXJ0IHdoZW4g cmVzb2x1dGlvbiBjaGFuZ2VkLgo+ID4KPgo+IENhbiB5b3UgYmUgbW9yZSBzcGVjaWZpYyBhYm91 dCB3aGF0IGFzc2VydCBoYXMgYmVlbiB0cmlnZ2VyZWQ/IEFuZCBoYXZlCj4geW91IHNldCB0aGUg QVZGcmFtZSBmaWVsZHMgZGlyZWN0bHkgYmVmb3JlIGZmX3RocmVhZF9nZXRfYnVmZmVyKCk/Cj4K aG1tLCB0aGlzIGhhcyBub3QgaGFwcGVuZWQgbm93LgpMZXQgdXMgcmVtb3ZlIHRoZSBtZW1kdXAK Cj4KPiA+Pgo+ID4+IEJ1dCB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgcHJvdmlk ZWQgY2FsbGJhY2tzIGluIHRoZSBtYXN0ZXIKPiA+PiBjb250ZXh0IGF0IGFueSB0aW1lLiBFLmcu IHRoZSBjYWxsIHRvIGZmX3RocmVhZF9nZXRfYnVmZmVyKCkgaW4KPiA+PiB2dmNfcmVmcy5jIGN1 cnJlbnRseSB1c2VzIHRoZSBWVkNGcmFtZUNvbnRleHQgYW5kIHRoZXJlZm9yZSB1c2VzIHRoZQo+ ID4+IGdldF9idWZmZXIyIGNhbGxiYWNrIGluIHBsYWNlIG5vdyAoZHVyaW5nIGF2X21lbWR1cCgp KS4gVGhpcyBpcyB3cm9uZy4KPiA+Pgo+ID4gVGhpcyB3aWxsIG5vdCBoYXBwZW4uIGF2X21lbWR1 cCBvbmx5IGhhcHBlbnMgaW4gdnZjX2RlY29kZV9pbml0Lgo+ID4gTm9ib2R5IHdpbGwgY2FsbCBm Zl90aHJlYWRfZ2V0X2J1ZmZlciBhdCB0aGlzIHRpbWUKPiA+Cj4KPiBZb3UgbWlzc2VkIHRoZSBw b2ludDogSWYgdGhlIHVzZXIgY2hhbmdlcyB0aGUgZ2V0X2J1ZmZlcjIgY2FsbGJhY2sgYWZ0ZXIK PiBpbml0LCB0aGUgbmV3IGNhbGxiYWNrIHdpbGwgbm90IGJlIHVzZWQgYXQgYWxsLgo+CmZpeGVk LgoKPgo+ID4+Cj4gPj4gSSB0aGluayB5b3UgY2FuIGp1c3QgcmVtb3ZlIFZWQ0ZyYW1lQ29udGV4 dC5hdmN0eCBhbmQgdXNlIHRoZQo+ID4+IHVzZXItZmFjaW5nIEFWQ29kZWNDb250ZXh0IGlmIHlv dSBzZXQgdGhlIEFWRnJhbWUgcHJvcGVydGllcyB0aGF0IGFyZQo+ID4+IG5vcm1hbGx5IGRlcml2 ZWQgZnJvbSB0aGUgQVZDb2RlY0NvbnRleHQgZGlyZWN0bHkgb24gdGhlIEFWRnJhbWUgYmVmb3Jl Cj4gPj4gZmZfdGhyZWFkX2dldF9idWZmZXIoKS4KPiA+Cj4gPiBDb3VsZCB5b3UgZXhwbGFpbiBt b3JlIGFib3V0IGhvdyB0byBjcmVhdGUgYSB1c2VyLWZhY2luZyAgQVZDb2RlY0NvbnRleHQ/Cj4g Pgo+Cj4gWW91IGRvIG5vdCBjcmVhdGUgYSB1c2VyLWZhY2luZyBBVkNvZGVjQ29udGV4dCwgdGhl IHVzZXIgZG9lcyAoYW5kIGNhbGxzCj4gYXZjb2RlY19zZW5kX3BhY2tldCgpL2F2Y29kZWNfcmVj ZWl2ZV9mcmFtZSgpIHdpdGggaXQpLgoKCj4gPj4KPiA+Pj4gKwo+ID4+PiArc3RhdGljIGludCBk ZWNvZGVfbmFsX3VuaXQoVlZDQ29udGV4dCAqcywgVlZDRnJhbWVDb250ZXh0ICpmYywgY29uc3QK PiA+PiBIMjY0NU5BTCAqbmFsLCBjb25zdCBDb2RlZEJpdHN0cmVhbVVuaXQgKnVuaXQpCj4gPj4+ ICt7Cj4gPj4+ICsgICAgaW50ICByZXQ7Cj4gPj4+ICsKPiA+Pj4gKyAgICBzLT50ZW1wb3JhbF9p ZCAgID0gbmFsLT50ZW1wb3JhbF9pZDsKPiA+Pj4gKwo+ID4+PiArICAgIHN3aXRjaCAodW5pdC0+ dHlwZSkgewo+ID4+PiArICAgIGNhc2UgVlZDX1ZQU19OVVQ6Cj4gPj4+ICsgICAgY2FzZSBWVkNf U1BTX05VVDoKPiA+Pj4gKyAgICBjYXNlIFZWQ19QUFNfTlVUOgo+ID4+PiArICAgICAgICAvKiB2 cHMsIHNwcywgc3BzIGNhY2hlZCBieSBzLT5jYmMgKi8KPiA+Pj4gKyAgICAgICAgYnJlYWs7Cj4g Pj4+ICsgICAgY2FzZSBWVkNfVFJBSUxfTlVUOgo+ID4+PiArICAgIGNhc2UgVlZDX1NUU0FfTlVU Ogo+ID4+PiArICAgIGNhc2UgVlZDX1JBRExfTlVUOgo+ID4+PiArICAgIGNhc2UgVlZDX1JBU0xf TlVUOgo+ID4+PiArICAgIGNhc2UgVlZDX0lEUl9XX1JBREw6Cj4gPj4+ICsgICAgY2FzZSBWVkNf SURSX05fTFA6Cj4gPj4+ICsgICAgY2FzZSBWVkNfQ1JBX05VVDoKPiA+Pj4gKyAgICBjYXNlIFZW Q19HRFJfTlVUOgo+ID4+PiArICAgICAgICByZXQgPSBkZWNvZGVfc2xpY2UocywgZmMsIG5hbCwg dW5pdCk7Cj4gPj4+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ID4+PiArICAgICAgICAgICAgZ290 byBmYWlsOwo+ID4+PiArICAgICAgICBicmVhazsKPiA+Pj4gKyAgICBjYXNlIFZWQ19QUkVGSVhf QVBTX05VVDoKPiA+Pj4gKyAgICBjYXNlIFZWQ19TVUZGSVhfQVBTX05VVDoKPiA+Pj4gKyAgICAg ICAgcmV0ID0gZmZfdnZjX2RlY29kZV9hcHMoJnMtPnBzLCB1bml0KTsKPiA+Pj4gKyAgICAgICAg aWYgKHJldCA8IDApCj4gPj4+ICsgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gPj4+ICsgICAgICAg IGJyZWFrOwo+ID4+PiArICAgIGRlZmF1bHQ6Cj4gPj4+ICsgICAgICAgIGF2X2xvZyhzLT5hdmN0 eCwgQVZfTE9HX0lORk8sCj4gPj4+ICsgICAgICAgICAgICAgICAiU2tpcHBpbmcgTkFMIHVuaXQg JWRcbiIsIHVuaXQtPnR5cGUpOwo+ID4+Cj4gPj4gVGhpcyB3aWxsIHByb2JhYmx5IGJlIHZlcnkg bm9pc3kgKGFuZCB3YXJuIGZvciBldmVyeSBTRUkpLiBJIGRvbid0IHRoaW5rCj4gPj4gaXQgaXMg ZXZlbiBuZWVkZWQsIGFzIGgyNjQ1X3BhcnNlLmMgYWxyZWFkeSBjb250YWlucyBkZWJ1ZyBsb2cg bWVzc2FnZXMKPiA+PiB0byBkaXNwbGF5IHRoZSB1bml0IHR5cGUuCj4gPj4KPiA+IEl0J3MgY29w aWVkIGZyb20gaGV2Y2RlYy4gSXQgbWVhbnMgd2UgZGlkIG5vdCBoYW5kbGUgdGhlIG5hbCBkaWZm cmVudAo+IHRoYW4KPiA+IGgyNjQ1X3BhcnNlci5jIG1lc3NhZ2VzCj4gPgo+Cj4gMS4gVGhlIG1l c3NhZ2UgaXMgdW5uZWNlc3NhcnksIGJlY2F1c2UgYSB1c2VyIHdobyB3YW50cyB0byBrbm93IHdo aWNoCj4gTkFMIHVuaXRzIGhhdmUgYmVlbiBoYW5kbGVkIG9yIG5vdCBjYW4gZ2V0IHRoZSBpbmZv IGFib3V0IHdoaWNoIHVuaXRzCj4gYXJlIHByZXNlbnQgZnJvbSBoMjY0NV9wYXJzZS5jIGFuZCB0 aGVuIGxvb2sgdXAgaW4gdGhpcyBsaXN0IHdoZXRoZXIKPiB0aGlzIHR5cGUgaXMgcHJvY2Vzc2Vk Lgo+IDIuIGhldmNkZWMuYyBkb2VzICJoYW5kbGUiIHF1aXRlIGEgbG90IG1vcmUgTkFMIHVuaXRz OyBlLmcuIGl0IGFjdHVhbGx5Cj4gaGFuZGxlcyBTRUkgbWVzc2FnZXMgYW5kIGl0IGlnbm9yZXMg ZS5nLiBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJzIGFzIHdlbGwKPiBhcyBIRVZDX05BTF9VTlNQRUM2 Mi4gV2hlcmVhcyB5b3UgZG8gbm90Lgo+CnJlbW92ZWQKCj4KPiA+IEEgZmFpbCB0aGF0IGlzIG9u bHkgInJldHVybiByZXQiIGlzIHBvaW50bGVzcyAobm90IG9ubHkgaGVyZSkuCj4gPj4KPiA+IEF0 IHNvbWVkYXkgaWYgd2UgbmVlZCB0byBhZGQgc29tZSBjbGVhbnVwIGNvZGUuIHdlIGRvIG5vdCBu ZWVkIHRvIGNoYW5nZQo+ID4gYWxsIHJldHVybnMgdG8gZ290by4KPiA+Cj4KPiBJTU8gYSBnb3Rv IGZhaWwgc2hvdWxkIGJlIGFkZGVkIGlmIGFuZCB3aGVuIGl0IGlzIGFjdHVhbGx5IGJlbmVmaWNp YWwuCj4KZml4ZWQKCj4KPiA+Pj4gKwo+ID4+PiArICAgIGlmIChvdXRwdXQpIHsKPiA+Pj4gKyAg ICAgICAgd2hpbGUgKHMtPm5iX2RlbGF5ZWQpIHsKPiA+Pj4gKyAgICAgICAgICAgIHdhaXRfZGVs YXllZF9mcmFtZShzLCBvdXRwdXQsICZnb3Rfb3V0cHV0KTsKPiA+Pj4gKyAgICAgICAgICAgIGlm IChnb3Rfb3V0cHV0KSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgYXZfZnJhbWVfdW5yZWYob3V0 cHV0KTsKPiA+Pj4gKyAgICAgICAgICAgIH0KPiA+Pj4gKyAgICAgICAgfQo+ID4+PiArICAgICAg ICBhdl9mcmFtZV9mcmVlKCZvdXRwdXQpOwo+ID4+PiArICAgIH0KPiA+Pj4gIH0KPiA+Pj4KPiA+ Pj4gIHN0YXRpYyBhdl9jb2xkIGludCB2dmNfZGVjb2RlX2ZyZWUoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4KQo+ID4+PiAgewo+ID4+PiArICAgIFZWQ0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRh Owo+ID4+PiArICAgIGludCBpOwo+ID4+PiArCj4gPj4+ICsgICAgZmZfY2JzX2ZyYWdtZW50X2Zy ZWUoJnMtPmN1cnJlbnRfZnJhbWUpOwo+ID4+Cj4gPj4gSXMgaXQgc3VyZSB0aGF0IHRoZSBmcmFn bWVudCBpcyBub3QgaW4gdXNlIChnaXZlbiB0aGF0IG90aGVyIHRocmVhZHMgbWF5Cj4gPj4gYmUg cnVubmluZyBub3cgYmVmb3JlIHZ2Y19kZWNvZGVfZmx1c2goKSk/Cj4gPj4KPiA+IERvIHlvdSBt ZWFuIHRoZSBleGVjdXRvciB0aHJlYWRzPyBJZiB0aGV5IHdhbnQgdG8gdXNlIHNvbWUgZGF0YSwg dGhleQo+IHdpbGwKPiA+IHRha2UgdGhlaXIgb3duIGhpcC4KPiA+IHNlZSBmZl9yZWZzdHJ1Y3Rf cmVwbGFjZSgmc3BzLT5yLCByc3BzKTsKPiA+Cj4KPiAiaGlwIj8KPgo6KQoKPgo+IEkgaGF2ZSBu b3cgbm90aWNlZCB0aGF0IHRoZSBTbGljZUNvbnRleHRzIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8g dGhlCj4gcGFja2V0J3MgZGF0YSB2aWEgVlZDU0gtPkgyNjZSYXdTbGljZUhlYWRlciwgd2hpY2gg aW4gcmVhbGl0eSBwb2ludHMgdG8KPiBhIEgyNjZSYXdTbGljZSB3aGljaCBjb250YWlucyBhIHJl ZmVyZW5jZSB0byB0aGUgYWN0dWFsIGRhdGEsIHNvIHRoaXMKPiBwb2ludCBpcyBtb290LiBCdXQg dXNpbmcgSDI2NlJhd1NsaWNlSGVhZGVyKiBmb3IgYSBIMjY2UmF3U2xpY2UqIGlzIG5vdAo+IG5p Y2UuCj4KT2ssIGxldCBtZSB0YWtlIGEgIHJlZmVyZW5jZSB0byBIMjY2UmF3U2xpY2UuCgo+Cj4g Pj4KPiA+Pj4gKwo+ID4+PiArICAgIHMtPm5iX2ZjcyA9IChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RF Q19GTEFHX0xPV19ERUxBWSkgPyAxIDoKPiA+PiBGRk1JTihhdl9jcHVfY291bnQoKSwgVlZDX01B WF9GUk1BRV9ERUxBWSk7Cj4gPj4KPiA+PiBUaGlzIG1heSBldmFsdWF0ZSBhdl9jcHVfY291bnQo KSBtdWx0aXBsZSB0aW1lcy4gRnVydGhlcm1vcmUgSSBkb24ndAo+ID4+IGtub3cgd2h5IHRoaXMg ZGVmaW5lIGlzIHVzZWQgaGVyZSBhdCBhbGw6IFdpdGggZnJhbWUgdGhyZWFkaW5nLCB0aGUKPiA+ PiBudW1iZXIgb2YgZnJhbWUgdGhyZWFkcyBpcyBub3QgbGltaXRlZCBieSB0aGUgZGVsYXkvbnVt YmVyIG9mIHJlb3JkZXJpbmcKPiA+PiBmcmFtZXMgYXQgYWxsICh3ZSBldmVuIGhhdmUgZnJhbWUt dGhyZWFkaW5nIGZvciBkZWNvZGVycyB3aXRob3V0Cj4gPj4gZnJhbWUtcmVvcmRlcmluZyBhdCBh bGwpLgo+ID4+Cj4gPiAgdnZjX2RlY29kZV9mcmFtZSBvbmx5IGFsbG93cyAxIGZyYW1lIGluIDEg ZnJhbWUgb3V0LiBXZSBjYW4gcmVtb3ZlIHRoZQo+ID4gZGVsYXkgaWYgd2Ugc3dpdGNoIHRvIEZG Q29kZWMtPnJlY2VpdmVfZnJhbWUsCj4gPgo+Cj4gSSBkbyBub3QgZ2V0IGhvdyB0aGlzIGlzIHN1 cHBvc2VkIHRvIGFkZHJlc3MgbXkgcG9pbnQuCj4KPiA+Pgo+ID4+IEJ1dCB3b3JzdCBvZiB0aGlz IGlzIHRoYXQgeW91IGRvIG5vdCBjaGVjayBhdmN0eC0+dGhyZWFkX2NvdW50IGF0IGFsbC4KPiA+ Pgo+ID4gd2UgZG8gbm90IHVzZSBhdmN0eC0+dGhyZWFkX2NvdW50LiAgd2UgdXNlIHRoZSBleGVj dXRvciB0byBtYW5hZ2UKPiB0aHJlYWRzLgo+ID4KPgo+IFRoaXMgaXMgY29tcGxldGUgbm9uc2Vu c2U6IEl0IGlzIHRoZSB1c2VyIHdobyBzcGVjaWZpZXMgaG93IG1hbnkgdGhyZWFkcwo+IHRvIHVz ZSwgcmVnYXJkbGVzcyBvZiB3aGljaCBtZWNoYW5pc20gaXMgdXNlZCB0byBtYW5hZ2UgdGhyZWFk cy4KPgpmaXhlZAoKPgo+ID4+Cj4gPj4+ICsgICAgcy0+ZmNzID0gYXZfY2FsbG9jKHMtPm5iX2Zj cywgc2l6ZW9mKCpzLT5mY3MpKTsKPiA+Pj4gKyAgICBpZiAoIXMtPmZjcykKPiA+Pj4gKyAgICAg ICAgZ290byBmYWlsOwo+ID4+PiArCj4gPj4+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5u Yl9mY3M7IGkrKykgewo+ID4+PiArICAgICAgICBWVkNGcmFtZUNvbnRleHQgKmZjID0gcy0+ZmNz ICsgaTsKPiA+Pj4gKyAgICAgICAgcmV0ID0gZnJhbWVfY29udGV4dF9pbml0KGZjLCBhdmN0eCk7 Cj4gPj4+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ID4+PiArICAgICAgICAgICAgZ290byBmYWls Owo+ID4+PiArICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgIHMtPmV4ZWN1dG9yID0gZmZfdnZjX2V4 ZWN1dG9yX2FsbG9jKHMsIHMtPm5iX2Zjcyk7Cj4gPj4+ICsgICAgaWYgKCFzLT5leGVjdXRvcikK PiA+Pj4gKyAgICAgICAgZ290byBmYWlsOwo+ID4+PiArCj4gPj4+ICsgICAgcy0+ZW9zID0gMTsK PiA+Pj4gKyAgICBHRFJfU0VUX1JFQ09WRVJFRChzKTsKPiA+Pj4gKyAgICBtZW1zZXQoJmZmX3Z2 Y19kZWZhdWx0X3NjYWxlX20sIDE2LAo+IHNpemVvZihmZl92dmNfZGVmYXVsdF9zY2FsZV9tKSk7 Cj4gPj4KPiA+PiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgb25jZSAoaS5lLiBwcm90ZWN0ZWQgYnkg YW4gQVZPbmNlKSBhbmQgbm90IGV2ZXJ5Cj4gPj4gdGltZSBhIGRlY29kZXIgaXMgc2V0IHVwLiBP dGhlcndpc2UgdGhlcmUgbWlnaHQgYmUgZGF0YSByYWNlcy4KPiA+Pgo+ID4gSXQncyBub3QgcmVh ZCBhbmQgc2V0LCBpdCB3aWxsIG5vIGRhdGEgcmFjZXM6KSwgSSBjYW4gY2hhbmdlIGl0IHRvCj4g QVZPbmNlCj4gPiAuCj4KPiBUaGlzIGlzIHdyb25nOiBJdCBpcyBzZXQgaGVyZSBhbmQgcHJlc3Vt YWJseSBpdCB3aWxsIGJlIHJlYWQgc29tZXdoZXJlLAo+IHNvIHRoZXJlIGFic29sdXRlbHkgY2Fu IGJlIGRhdGEgcmFjZXMuCj4gSWYgeW91IGJlbGlldmUgdGhhdCB0aGVyZSBpcyBubyBkYXRhIHJh Y2UgYmVjYXVzZSBldmVyeSBtZW1zZXQgc2V0cyBpdAo+IHRvIHRoZSBzYW1lIHZhbHVlLCB0aGVu IHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCB0aGUgQyBzcGVjaWZpY2F0aW9uCj4gZGlzYWdyZWVz IHdpdGggeW91IChhbGwgcmVmZXJlbmNlcyBhcmUgdG8gdGhlIEMxMSBzcGVjKToKPgo+IGEpIDUu MS4yLjQgMjU6ICJUaGUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSBjb250YWlucyBhIGRhdGEgcmFj ZSBpZiBpdAo+IGNvbnRhaW5zIHR3byBjb25mbGljdGluZyBhY3Rpb25zIGluIGRpZmZlcmVudCB0 aHJlYWRzLCBhdCBsZWFzdCBvbmUgb2YKPiB3aGljaCBpcyBub3QgYXRvbWljLCBhbmQgbmVpdGhl ciBoYXBwZW5zIGJlZm9yZSB0aGUgb3RoZXIuIEFueSBzdWNoIGRhdGEKPiByYWNlIHJlc3VsdHMg aW4gdW5kZWZpbmVkIGJlaGF2aW9yLiIKPiBiKSA1LjEuMi40IDQ6ICJUd28gZXhwcmVzc2lvbiBl dmFsdWF0aW9ucyBjb25mbGljdCBpZiBvbmUgb2YgdGhlbQo+IG1vZGlmaWVzIGEgbWVtb3J5IGxv Y2F0aW9uIGFuZCB0aGUgb3RoZXIgb25lIHJlYWRzIG9yIG1vZGlmaWVzIHRoZSBzYW1lCj4gbWVt b3J5IGxvY2F0aW9uLiIKPiBjKSBOb3RlIDIgaW4gMy4xICh0byB0aGUgZGVmaW5pdGlvbiBvZiAi YWNjZXNzIik6Cj4gIuKAmOKAmE1vZGlmeeKAmeKAmSBpbmNsdWRlcyB0aGUgY2FzZSB3aGVyZSB0 aGUgbmV3IHZhbHVlIGJlaW5nIHN0b3JlZCBpcyB0aGUKPiBzYW1lIGFzIHRoZSBwcmV2aW91cyB2 YWx1ZS4iCj4KPiBXaXRoIHRoZSBjdXJyZW50IGNvZGUgZGF0YSByYWNlcyB3aWxsIGhhcHBlbiBp ZiBhKSB0d28gZGlmZmVyZW50IGRlY29kZXIKPiBpbnN0YW5jZXMgYXJlIGluaXRpYWxpemVkIHdp dGhvdXQgc3luY2hyb25pc2F0aW9uIChnaXZlbiB0aGF0IGxhdmMgZG9lcwo+IG5vdCBzZXJpYWxp emUgaW5pdGlhbGl6YXRpb24gb2YgY29kZWNzIChleGNlcHQgaW4gcmFyZSBjYXNlcyBiYXNlZCB1 cG9uCj4gYSBmbGFnIHdoaWNoIHRoaXMgZGVjb2RlciBkb2VzIG5vdCBzZXQpLCB0aGlzIHN5bmNo cm9uaXphdGlvbiB3b3VsZCBoYXZlCj4gdG8gYmUgcGVyZm9ybWVkIGJ5IHRoZSB1c2VyLCBidXQg d2UgZG8gbm90IHJlcXVpcmUgb3VyIHVzZXJzIHRvIGRvIHRoaXMpCj4gb3IgYikgYSBkZWNvZGVy IGlzIGluaXRpYWxpemVkIHdoaWxlIGFub3RoZXIgZGVjb2RlciBydW5zIGFuZCByZWFkcyBmcm9t Cj4gZmZfdnZjX2RlZmF1bHRfc2NhbGVfbToKPgo+IEJlY2F1c2UgdGhlIGFjY2Vzc2VzIHBlcmZv cm1lZCBieSB0aGUgaW5pdGluZyB0aHJlYWQgYXJlIGFsd2F5cwo+IG1vZGlmaWNhdGlvbnMgYWNj b3JkaW5nIHRvIGMpLCB0aGUgYWNjZXNzZXMgYnkgdGhlIGRpZmZlcmVudCB0aHJlYWRzCj4gY29u ZmxpY3QgYnkgZGVmaW5pdGlvbiBiKS4gbWVtc2V0KCkgaXMgbm90IHJlcXVpcmVkIHRvIHBlcmZv cm0gYXRvbWljCj4gbW9kaWZpY2F0aW9ucyAoYW5kIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQg YXRvbWljIG1vZGlmaWNhdGlvbnMgY2FuCj4gb25seSBoYXBwZW4gd2l0aCBhdG9taWMgb2JqZWN0 cywgd2hpY2ggZmZfdnZjX2RlZmF1bHRfc2NhbGVfbSBpcyBub3QpCj4gYW5kIGJ5IG91ciBhc3N1 bXB0aW9uIHRoZXJlIGlzIG5vIHN5bmNocm9uaXNhdGlvbiBiZXR3ZWVuIHRoZXNlIGFjdGlvbnMs Cj4gc28gaXQgaXMgYSBkYXRhIHJhY2UgYWNjb3JkaW5nIHRvIGEpLiBBbmQgZGF0YSByYWNlcyBh cmUgdW5kZWZpbmVkCj4gYmVoYXZpb3VyLgo+Cj4gVGhpcyBjbGF1c2UgYWxsb3dzIGNvbXBpbGVy cyB0byBvcHRpbWl6ZSBsb3RzIG9mIGNvZGUgYXMgaWYgdGhlIHByb2dyYW0KPiB3ZXJlIHNpbmds ZS10aHJlYWRlZCAoYmVjYXVzZSBjb25jdXJyZW50IGFjY2Vzc2VzIHdlcmUgVUIsIHNvIHByZXN1 bWFibHkKPiB0aGV5IGRvbid0IGhhcHBlbikuIEluIHBhcnRpY3VsYXIsIHNwZWN1bGF0aXZlIHdy aXRlcyBhcmUgbGVnYWwgKGFuZAo+IGhhcHBlbiBzb21ldGltZXMsIGJ1dCBwcm9iYWJseSBub3Qg aW4gbWVtc2V0KS4gSW4gZmFjdCwgaXQgd291bGQgYmUKPiBsZWdhbCBmb3IgbWVtc2V0IHRvIGFs d2F5cyB6ZXJvIHRoZSBtZW1vcnkgaXQgaXMgc3VwcG9zZWQgdG8gc2V0IGFuZAo+IHRoZW4gb3Zl cndyaXRlIGl0IHdpdGggdGhlIGZpbmFsIHZhbHVlLgo+CgpUaGFua3MgZm9yIHRoZSBleHBsYW5h dGlvbi4gZml4ZWQKCj4KPiAtIEFuZHJlYXMKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8v ZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1h aWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJz Y3JpYmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6 Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmli ZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K