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 C071D40FA8 for ; Sun, 2 Jan 2022 12:46:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C5EF868B153; Sun, 2 Jan 2022 14:45:57 +0200 (EET) Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D154468B10B for ; Sun, 2 Jan 2022 14:45:51 +0200 (EET) Received: by mail-qt1-f179.google.com with SMTP id p19so27900427qtw.12 for ; Sun, 02 Jan 2022 04:45:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=85gr01mUAEtrR/kHUO+6Dl4L+FJngTck8W36BzjBGjE=; b=AXOWb/uDjLkh2qW3dSOHZ9DyJ2sfrHT/6tFLYbm1tBqkZ56ZHkvkcPzROUbYIQqKFx xRbIcr/WnlJ+85eUR4HO/se2RpNGWo8UTf6UbBQ+o5HJhuIvVkp44z6maDkJU1EwI2Gr PmtfWPyFcCzMTkj3xa5bnWDXhzNYm5nea/NX1aYzmAwE2QzbW2bZVw6YAegbntqTZOar d5n370AbSD28K+Mo22pAV2slDEmGInSOLQbXOQF7x6mHg0bAfEktmhpKkKoZT7Sq8QUS 4MfvlP+UGyx2BTijcIIylADQOIuVFZIJG3o5fMYCVsAkjdZzJZastadJk2mj+Y9wLzFW Kcog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=85gr01mUAEtrR/kHUO+6Dl4L+FJngTck8W36BzjBGjE=; b=bOR3ubT7oa9LoGrHvB8kj9vafplBGAnQMuVX55xItoq9GLnCyLx8Vy2Z8agapEJ6FE opDisfnJgky3hbJoFJQf0wXK8LO0g5W4Z515Ci8YPzNse/B5JV/8AwEu2RIc/AW/CNlP 2+w4IOd3VP2SBKN+F56QAnVvlneg64oD+SBq48A5Dp4kkFk+uUN9QSyqKXRTVPb0AbJK tGHBN5GZKhryMOs0vw2kS/fgE43bj9rWepp6TcvQ79hS4H/YQZEkvgOJCR+keDL2ZK3d G7ysiQrfRXtwICwUJB3MFTIijPNBRrw7GVqdn8GR89ulJpivBa7TThxx6aAe1RV8Bbko U6Og== X-Gm-Message-State: AOAM533MqzD9crWskpaiUoyJVVm7JZ/BtLZCCGCa868f2q39PmfO/6lh rYx7ff7UhhJ83Y4zrE0VFVtjRn5DwHs= X-Google-Smtp-Source: ABdhPJyjETMQI9dz/6WQxlOH0wfUe3q889TnvbW6X33E9IHoVFNryQeEQSp0c9Cvd0pXJNEnfmsYMg== X-Received: by 2002:ac8:46d8:: with SMTP id h24mr33000943qto.348.1641127549030; Sun, 02 Jan 2022 04:45:49 -0800 (PST) Received: from [192.168.1.55] ([191.83.210.83]) by smtp.gmail.com with ESMTPSA id n19sm27002110qta.78.2022.01.02.04.45.47 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 02 Jan 2022 04:45:48 -0800 (PST) Message-ID: <9f82e52a-f19d-a8dc-795a-a7845e184d64@gmail.com> Date: Sun, 2 Jan 2022 09:45:46 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20211222151447.57681-1-ffmpeg@haasn.xyz> <20211222151447.57681-4-ffmpeg@haasn.xyz> From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH v9 4/6] lavc: Implement Dolby Vision RPU parsing 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gMS8yLzIwMjIgMToxOCBBTSwgQW5kcmVhcyBSaGVpbmhhcmR0IHdyb3RlOgo+IE5pa2xhcyBI YWFzOgo+PiBGcm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KPj4KPj4gQmFzZWQgb24g YSBtaXh0dXJlIG9mIGd1ZXNzd29yaywgcGFydGlhbCBkb2N1bWVudGF0aW9uIGluIHBhdGVudHMs IGFuZAo+PiByZXZlcnNlIGVuZ2luZWVyaW5nIG9mIHJlYWwtd29ybGQgc2FtcGxlcy4gQ29uZmly bWVkIHdvcmtpbmcgZm9yIGFsbCB0aGUKPj4gc2FtcGxlcyBJJ3ZlIHRocm93biBhdCBpdC4KPj4K Pj4gQ29udGFpbnMgc29tZSBhbm5veWluZyBtYWNoaW5lcnkgdG8gcGVyc2lzdCB0aGVzZSB2YWx1 ZXMgaW4gYmV0d2Vlbgo+PiBmcmFtZXMsIHdoaWNoIGlzIG5lZWRlZCBpbiB0aGVvcnkgZXZlbiB0 aG91Z2ggSSd2ZSBuZXZlciBhY3R1YWxseSBzZWVuIGEKPj4gc2FtcGxlIHRoYXQgcmVsaWVzIG9u IGl0IGluIHByYWN0aWNlLiBNYXkgb3IgbWF5IG5vdCB3b3JrLgo+Pgo+PiBTaW5jZSB0aGUgZGlz dGluY3Rpb24gbWF0dGVycyBncmVhdGx5IGZvciBwYXJzaW5nIHRoZSBjb2xvciBtYXRyaXgKPj4g dmFsdWVzLCB0aGlzIGluY2x1ZGVzIGEgc21hbGwgaGVscGVyIGZ1bmN0aW9uIHRvIGd1ZXNzIHRo ZSByaWdodCBwcm9maWxlCj4+IGZyb20gdGhlIFJQVSBpdHNlbGYgaW4gY2FzZSB0aGUgdXNlciBo YXMgZm9yZ290dGVuIHRvIGZvcndhcmQgdGhlIGRvdmkKPj4gY29uZmlndXJhdGlvbiByZWNvcmQg dG8gdGhlIGRlY29kZXIuIChXaGljaCBpbiBwcmFjdGljZSwgb25seSBmZm1wZWcuYwo+PiBhbmQg ZmZwbGF5IGRvLi4pCj4+Cj4+IE5vdGFibGUgb21pc3Npb25zIC8gZGV2aWF0aW9uczoKPj4gLSBD UkMzMiB2ZXJpZmljYXRpb24uIFRoaXMgaXMgYmFzZWQgb24gdGhlIE1QRUcyIENSQzMyIHR5cGUs IHdoaWNoIGRvZXMKPj4gICAgbm90IHNlZW0gdG8gYmUgaW1wbGVtZW50ZWQgaW4gbGF2dS4gKEFu ZCBJIGRvbid0IGNhcmUgZW5vdWdoIHRvIGRvIHNvKQo+PiAtIExpbmVhciBpbnRlcnBvbGF0aW9u IHN1cHBvcnQuIE5vdGhpbmcgZG9jdW1lbnRzIHRoaXMgKGJleW9uZCBpdHMKPj4gICAgZXhpc3Rl bmNlKSBhbmQgbm8gc2FtcGxlcyB1c2UgaXQsIHNvIGltcG9zc2libGUgdG8gaW1wbGVtZW50Lgo+ PiAtIEFsbCBvZiB0aGUgZXh0ZW5zaW9uIG1ldGFkYXRhIGJsb2NrcywgYnV0IHRoZXNlIGNvbnRh aW4gdmFsdWVzIHRoYXQKPj4gICAgc2VlbSBsYXJnZWx5IGNvbmdydWVudCB3aXRoIFNUMjA5NCwg SERSMTAsIG9yIG90aGVyIGV4aXN0aW5nIGZvcm1zIG9mCj4+ICAgIHNpZGUgZGF0YSwgc28gSSB3 aWxsIGRlZmVyIHBhcnNpbmcvYXR0YWNoaW5nIHRoZW0gdG8gYSBmdXR1cmUgY29tbWl0Lgo+PiAt IFRoZSBwYXRlbnQgZGVzY3JpYmVzIGEgbWVjaGFuaXNtIGZvciBwcmVkaWN0aW5nIGNvZWZmaWNp ZW50cyBmcm9tCj4+ICAgIHByZXZpb3VzIFJQVXMsIGJ1dCB0aGUgYml0IGZvciB0aGUgZmxhZyB3 aGV0aGVyIHRvIHVzZSB0aGUKPj4gICAgcHJlZGljdGlvbiBkZWx0YXMgb3Igc2lnbmFsIGVudGly ZWx5IG5ldyBjb2VmZmljaWVudHMgZG9lcyBub3Qgc2VlbSB0bwo+PiAgICBiZSBwcmVzZW50IGlu IGFjdHVhbCBSUFVzLCBzbyB3ZSBpZ25vcmUgdGhpcyBzdWJzeXN0ZW0gZW50aXJlbHkuCj4+IC0g SW4gdGhlIHBhdGVudCdzIHNwZWMsIHRoZSBOTFEgc3Vic3lzdGVtIGFsc28gbG9vcHMgb3Zlcgo+ PiAgICBudW1fbmxxX3Bpdm90cywgYnV0IGV2ZW4gaW4gdGhlIHBhdGVudCB0aGUgbnVtYmVyIGlz IGhhcmQtY29kZWQgdG8gb25lCj4+ICAgIGl0ZXJhdGlvbiByYXRoZXIgdGhhbiBzaWduYWxsZWQu IFNvIHdlIG9ubHkgc3RvcmUgb25lIHNldCBvZiBjb2Vmcy4KPj4KPj4gSGVhdmlseSBpbmZsdWVu Y2VkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9xdWlldHZvaWQvZG92aV90b29sCj4+IERvY3VtZW50 YXRpb24gZHJhd24gZnJvbSBVUyBQYXRlbnQgMTAsNzAxLDM5OSBCMiBhbmQgRVRTSSBHUyBDQ00g MDAxCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2Pgo+PiAt LS0KPj4gICBjb25maWd1cmUgICAgICAgICAgICAgfCAgIDIgKwo+PiAgIGxpYmF2Y29kZWMvTWFr ZWZpbGUgICB8ICAgMSArCj4+ICAgbGliYXZjb2RlYy9kb3ZpX3JwdS5jIHwgNDMwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGxpYmF2Y29kZWMvZG92aV9y cHUuaCB8ICA3MSArKysrKysrCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA1MDQgaW5zZXJ0aW9ucygr KQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2RvdmlfcnB1LmMKPj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9kb3ZpX3JwdS5oCj4+Cj4+IGRpZmYgLS1naXQgYS9j b25maWd1cmUgYi9jb25maWd1cmUKPj4gaW5kZXggMGNjZDNiZGExMS4uNjg2NThhODQ3ZiAxMDA3 NTUKPj4gLS0tIGEvY29uZmlndXJlCj4+ICsrKyBiL2NvbmZpZ3VyZQo+PiBAQCAtMjQzNCw2ICsy NDM0LDcgQEAgQ09ORklHX0VYVFJBPSIKPj4gICAgICAgY2JzX3ZwOQo+PiAgICAgICBkaXJhY19w YXJzZQo+PiAgICAgICBkbm4KPj4gKyAgICBkb3ZpX3JwdQo+PiAgICAgICBkdnByb2ZpbGUKPj4g ICAgICAgZXhpZgo+PiAgICAgICBmYWFuZGN0Cj4+IEBAIC0yNzA2LDYgKzI3MDcsNyBAQCBjYnNf bXBlZzJfc2VsZWN0PSJjYnMiCj4+ICAgY2JzX3ZwOV9zZWxlY3Q9ImNicyIKPj4gICBkY3Rfc2Vs ZWN0PSJyZGZ0Igo+PiAgIGRpcmFjX3BhcnNlX3NlbGVjdD0iZ29sb21iIgo+PiArZG92aV9ycHVf c2VsZWN0PSJnb2xvbWIiCj4+ICAgZG5uX3N1Z2dlc3Q9ImxpYnRlbnNvcmZsb3cgbGlib3BlbnZp bm8iCj4+ICAgZG5uX2RlcHM9ImF2Zm9ybWF0IHN3c2NhbGUiCj4+ICAgZXJyb3JfcmVzaWxpZW5j ZV9zZWxlY3Q9Im1lX2NtcCIKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9s aWJhdmNvZGVjL01ha2VmaWxlCj4+IGluZGV4IGZiOTBlY2VhODQuLjczNjRjN2E5MWYgMTAwNjQ0 Cj4+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPj4gKysrIGIvbGliYXZjb2RlYy9NYWtlZmls ZQo+PiBAQCAtNzcsNiArNzcsNyBAQCBPQkpTLSQoQ09ORklHX0NCU19NUEVHMikgICAgICAgICAg ICAgICArPSBjYnNfbXBlZzIubwo+PiAgIE9CSlMtJChDT05GSUdfQ0JTX1ZQOSkgICAgICAgICAg ICAgICAgICs9IGNic192cDkubwo+PiAgIE9CSlMtJChDT05GSUdfQ1JZU1RBTEhEKSAgICAgICAg ICAgICAgICs9IGNyeXN0YWxoZC5vCj4+ICAgT0JKUy0kKENPTkZJR19EQ1QpICAgICAgICAgICAg ICAgICAgICAgKz0gZGN0Lm8gZGN0MzJfZml4ZWQubyBkY3QzMl9mbG9hdC5vCj4+ICtPQkpTLSQo Q09ORklHX0RPVklfUlBVKSAgICAgICAgICAgICAgICArPSBkb3ZpX3JwdS5vCj4+ICAgT0JKUy0k KENPTkZJR19FUlJPUl9SRVNJTElFTkNFKSAgICAgICAgKz0gZXJyb3JfcmVzaWxpZW5jZS5vCj4+ ICAgT0JKUy0kKENPTkZJR19FWElGKSAgICAgICAgICAgICAgICAgICAgKz0gZXhpZi5vIHRpZmZf Y29tbW9uLm8KPj4gICBPQkpTLSQoQ09ORklHX0ZBQU5EQ1QpICAgICAgICAgICAgICAgICArPSBm YWFuZGN0Lm8KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZG92aV9ycHUuYyBiL2xpYmF2Y29k ZWMvZG92aV9ycHUuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAw Li5mYzJlMWZiMmExCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbGliYXZjb2RlYy9kb3ZpX3Jw dS5jCj4+IEBAIC0wLDAgKzEsNDMwIEBACj4+ICsvKgo+PiArICogRG9sYnkgVmlzaW9uIFJQVSBk ZWNvZGVyCj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChDKSAyMDIxIEphbiBFa3N0csO2bQo+PiAr ICogQ29weXJpZ2h0IChDKSAyMDIxIE5pa2xhcyBIYWFzCj4+ICsgKgo+PiArICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgo+PiArICoKPj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4gKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+PiAr ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCj4+ICsgKgo+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiArICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK Pj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+ ICsgKgo+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYwo+PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+PiArICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT QQo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYnVmZmVyLmgiCj4+ICsKPj4g KyNpbmNsdWRlICJkb3ZpX3JwdS5oIgo+PiArI2luY2x1ZGUgImdvbG9tYi5oIgo+PiArI2luY2x1 ZGUgImdldF9iaXRzLmgiCj4+ICsKPj4gK2VudW0gewo+PiArICAgIFJQVV9DT0VGRl9GSVhFRCA9 IDAsCj4+ICsgICAgUlBVX0NPRUZGX0ZMT0FUID0gMSwKPj4gK307Cj4+ICsKPj4gKy8qKgo+PiAr ICogUHJpdmF0ZSBjb250ZW50cyBvZiB2ZHJfcmVmLgo+PiArICovCj4+ICt0eXBlZGVmIHN0cnVj dCBET1ZJVmRyUmVmIHsKPj4gKyAgICBBVkRPVklEYXRhTWFwcGluZyBtYXBwaW5nOwo+PiArICAg IEFWRE9WSUNvbG9yTWV0YWRhdGEgY29sb3I7Cj4+ICt9IERPVklWZHJSZWY7Cj4+ICsKPj4gK3Zv aWQgZmZfZG92aV9jdHhfdW5yZWYoRE9WSUNvbnRleHQgKnMpCj4+ICt7Cj4+ICsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhzLT52ZHJfcmVmKTsgaSsrKQo+PiArICAgICAg ICBhdl9idWZmZXJfdW5yZWYoJnMtPnZkcl9yZWZbaV0pOwo+PiArCj4+ICsgICAgLyogUHJlc2Vy dmUgdGhlIHVzZXItcHJvdmlkZWQgZmllbGRzIGV4cGxpY2l0bHksIHJlc2V0IGV2ZXJ5dGhpbmcg ZWxzZSAqLwo+PiArICAgICpzID0gKERPVklDb250ZXh0KSB7Cj4+ICsgICAgICAgIC5sb2djdHgg PSBzLT5sb2djdHgsCj4+ICsgICAgICAgIC5jb25maWcgPSBzLT5jb25maWcsCj4+ICsgICAgfTsK Pj4gK30KPj4gKwo+PiAraW50IGZmX2RvdmlfY3R4X3JlcGxhY2UoRE9WSUNvbnRleHQgKnMsIGNv bnN0IERPVklDb250ZXh0ICpzMCkKPj4gK3sKPj4gKyAgICBpbnQgcmV0Owo+PiArICAgIHMtPmxv Z2N0eCA9IHMwLT5sb2djdHg7Cj4+ICsgICAgcy0+Y29uZmlnID0gczAtPmNvbmZpZzsKPj4gKyAg ICBzLT5tYXBwaW5nID0gczAtPm1hcHBpbmc7Cj4+ICsgICAgcy0+Y29sb3IgPSBzMC0+Y29sb3I7 Cj4+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBET1ZJX01BWF9ETV9JRDsgaSsrKSB7Cj4+ICsg ICAgICAgIGlmICgocmV0ID0gYXZfYnVmZmVyX3JlcGxhY2UoJnMtPnZkcl9yZWZbaV0sIHMwLT52 ZHJfcmVmW2ldKSkgPCAwKQo+PiArICAgICAgICAgICAgZ290byBmYWlsOwo+PiArICAgIH0KPj4g Kwo+PiArICAgIHJldHVybiAwOwo+PiArCj4+ICtmYWlsOgo+PiArICAgIGZmX2RvdmlfY3R4X3Vu cmVmKHMpOwo+PiArICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK2ludCBmZl9kb3ZpX2F0 dGFjaF9zaWRlX2RhdGEoRE9WSUNvbnRleHQgKnMsIEFWRnJhbWUgKmZyYW1lKQo+PiArewo+PiAr ICAgIEFWRnJhbWVTaWRlRGF0YSAqc2Q7Cj4+ICsgICAgQVZCdWZmZXJSZWYgKmJ1ZjsKPj4gKyAg ICBBVkRPVklNZXRhZGF0YSAqZG92aTsKPj4gKyAgICBzaXplX3QgZG92aV9zaXplOwo+PiArCj4+ ICsgICAgaWYgKCFzLT5tYXBwaW5nIHx8ICFzLT5jb2xvcikKPj4gKyAgICAgICAgcmV0dXJuIDA7 IC8qIGluY29tcGxldGUgZG92aSBtZXRhZGF0YSAqLwo+PiArCj4+ICsgICAgZG92aSA9IGF2X2Rv dmlfbWV0YWRhdGFfYWxsb2MoJmRvdmlfc2l6ZSk7Cj4+ICsgICAgaWYgKCFkb3ZpKQo+PiArICAg ICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+PiArCj4+ICsgICAgYnVmID0gYXZfYnVmZmVy X2NyZWF0ZSgodWludDhfdCAqKSBkb3ZpLCBkb3ZpX3NpemUsIE5VTEwsIE5VTEwsIDApOwo+PiAr ICAgIGlmICghYnVmKSB7Cj4+ICsgICAgICAgIGF2X2ZyZWUoZG92aSk7Cj4+ICsgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgc2QgPSBhdl9mcmFt ZV9uZXdfc2lkZV9kYXRhX2Zyb21fYnVmKGZyYW1lLCBBVl9GUkFNRV9EQVRBX0RPVklfTUVUQURB VEEsIGJ1Zik7Cj4+ICsgICAgaWYgKCFzZCkgewo+PiArICAgICAgICBhdl9idWZmZXJfdW5yZWYo JmJ1Zik7Cj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICsgICAgfQo+PiAr Cj4+ICsgICAgbWVtY3B5KGF2X2RvdmlfZ2V0X2hlYWRlcihkb3ZpKSwgJnMtPmhlYWRlciwgc2l6 ZW9mKHMtPmhlYWRlcikpOwo+PiArICAgIG1lbWNweShhdl9kb3ZpX2dldF9tYXBwaW5nKGRvdmkp LCBzLT5tYXBwaW5nLCBzaXplb2YoKnMtPm1hcHBpbmcpKTsKPj4gKyAgICBtZW1jcHkoYXZfZG92 aV9nZXRfY29sb3IoZG92aSksIHMtPmNvbG9yLCBzaXplb2YoKnMtPmNvbG9yKSk7Cj4gCj4gVGhl c2UgYXJlIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGR1ZSB0byB0cmFpbGluZyBwYWRkaW5nIGlu IHRoZQo+IHN0cnVjdHVyZXMuIFRoaXMgdHJhaWxpbmcgcGFkZGluZyBtaWdodCBiZWNvbWUgdmFs aWQgZmllbGRzIGluIG5ld2VyCj4gdmVyc2lvbnMgb2YgdGhpcyBzdHJ1Y3R1cmUuIEUuZy4gYXZf ZG92aV9tZXRhZGF0YV9hbGxvYygpIG1pZ2h0Cj4gaW50ZW50aW9uYWxseSBzZXQgdGhlIGRlZmF1 bHQgdmFsdWVzIG9mIHRoZXNlIG5ldyBmaWVsZHMgdG8gaW52YWxpZAo+IHZhbHVlcy4gWWV0IGxh dmMgKHdpdGggdGhlIG9sZCBzdHJ1Y3R1cmUpIHNlZXMgdGhlbSBhcyBwYWRkaW5nLCBhbGxvd2lu Zwo+IHRoZSBjb21waWxlciB0byB0cmFzaCB0aGVzZSB2YWx1ZXMgb24gZXZlcnkgd3JpdGUgdG8g dGhlc2Ugc3RydWN0dXJlcy4KPiBNb3JlIGxpa2VseSB0aG91Z2ggaXMgdGhhdCB0aGV5IHdpbGwg bmV2ZXIgYmUgdG91Y2hlZCBhdCBhbGwgYW5kCj4gdGhlcmVmb3JlIHJldGFpbiB0aGVpciBkZWZh dWx0ICh6ZXJvKSBpbml0aWFsaXphdGlvbi4gV2hpY2ggbWlnaHQKPiBjb25mbGljdCB3aXRoIHRo ZSBkZWZhdWx0IHZhbHVlIG9mIHRoZXNlIGZpZWxkcy4KPiBUaGlzIGNhbiBiZSBmaXhlZCBieSBv bmx5IGNvcHlpbmcgZXZlcnl0aGluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQo+IGxhc3QgZmll bGQgdGhhdCB3ZSBrbm93IG9mIGZvciBldmVyeSBvZiB0aGVzZSBzdHJ1Y3R1cmVzLiBUaGlzIHdp bGwKPiB1bmZvcnR1bmF0ZWx5IGluY3JlYXNlIHRoZSBtYWludGFpbmVuY2UgYnVyZGVuIGEgYml0 LgoKSSBtZWFuLCBib3RoIHNpemVvZihBVkRPVklScHVEYXRhSGVhZGVyKSBhbmQgc2l6ZW9mKEFW RE9WSURhdGFNYXBwaW5nKSAKYXJlIGRlZmluZWQgYXMgbm90IGJlaW5nIHBhcnQgb2YgdGhlIEFC SSAoYnV0IApzaXplb2YoQVZET1ZJQ29sb3JNZXRhZGF0YSkgaXM/IElzIHRoYXQgaW50ZW5kZWQ/ KSwgc28gdGhlaXIgdXNhZ2UgaW4gCnRoaXMgcGF0Y2ggaXMgd3JvbmcgdG8gYmVnaW4gd2l0aC4K Cj4gCj4+ICsgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZ3Vlc3NfcHJv ZmlsZShjb25zdCBBVkRPVklScHVEYXRhSGVhZGVyICpoZHIpCj4+ICt7Cj4+ICsgICAgc3dpdGNo IChoZHItPnZkcl9ycHVfcHJvZmlsZSkgewo+PiArICAgIGNhc2UgMDoKPj4gKyAgICAgICAgaWYg KGhkci0+YmxfdmlkZW9fZnVsbF9yYW5nZV9mbGFnKQo+PiArICAgICAgICAgICAgcmV0dXJuIDU7 Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArICAgIGNhc2UgMToKPj4gKyAgICAgICAgaWYgKGhkci0+ ZWxfc3BhdGlhbF9yZXNhbXBsaW5nX2ZpbHRlcl9mbGFnICYmICFoZHItPmRpc2FibGVfcmVzaWR1 YWxfZmxhZykgewo+PiArICAgICAgICAgICAgaWYgKGhkci0+dmRyX2JpdF9kZXB0aCA9PSAxMikg ewo+PiArICAgICAgICAgICAgICAgIHJldHVybiA3Owo+PiArICAgICAgICAgICAgfSBlbHNlIHsK Pj4gKyAgICAgICAgICAgICAgICByZXR1cm4gNDsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAg ICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgIHJldHVybiA4Owo+PiArICAgICAgICB9Cj4+ICsg ICAgfQo+PiArCj4+ICsgICAgcmV0dXJuIDA7IC8qIHVua25vd24gKi8KPj4gK30KPj4gKwo+PiAr c3RhdGljIGlubGluZSB1aW50NjRfdCBnZXRfdWVfY29lZihHZXRCaXRDb250ZXh0ICpnYiwgY29u c3QgQVZET1ZJUnB1RGF0YUhlYWRlciAqaGRyKQo+PiArewo+PiArICAgIHVpbnQ2NF90IGlwYXJ0 Owo+PiArICAgIHVuaW9uIHsgdWludDMyX3QgdTMyOyBmbG9hdCBmMzI7IH0gZnBhcnQ7Cj4+ICsK Pj4gKyAgICBzd2l0Y2ggKGhkci0+Y29lZl9kYXRhX3R5cGUpIHsKPj4gKyAgICBjYXNlIFJQVV9D T0VGRl9GSVhFRDoKPj4gKyAgICAgICAgaXBhcnQgPSBnZXRfdWVfZ29sb21iX2xvbmcoZ2IpOwo+ PiArICAgICAgICBmcGFydC51MzIgPSBnZXRfYml0c19sb25nKGdiLCBoZHItPmNvZWZfbG9nMl9k ZW5vbSk7Cj4+ICsgICAgICAgIHJldHVybiAoaXBhcnQgPDwgaGRyLT5jb2VmX2xvZzJfZGVub20p ICsgZnBhcnQudTMyOwo+IAo+IEhlcmUgYW5kIGluIGdldF9zZV9jb2VmIGJlbG93IHRoZSBmMzIg bWVtYmVyIG9mIHRoZSB1bmlvbiBpcyBub3QgdXNlZAo+IHdpdGggUlBVX0NPRUZGX0ZJWEVELCBz byB1c2luZyB0aGUgdW5pb24gc2VlbXMgdW5uZWNlc3NhcnkuIEl0IGlzIGFsc28KPiBzbGlnaHRs eSBjb25mdXNpbmcsIGJlY2F1c2UgdXBvbiBzZWVpbmcgdGhpcyBhbmQgc2VlaW5nIHRoYXQgdGhl IHVuaW9uCj4gaXMgdXNlZCB3aXRoIFJQVV9DT0VGRl9GSVhFRCwgSSBleHBlY3QgaXQgdG8gYmUg dXNlZCBmb3IgdHlwZS1wdW5uaW5nLgo+IAo+PiArCj4+ICsgICAgY2FzZSBSUFVfQ09FRkZfRkxP QVQ6Cj4+ICsgICAgICAgIGZwYXJ0LnUzMiA9IGdldF9iaXRzX2xvbmcoZ2IsIDMyKTsKPj4gKyAg ICAgICAgcmV0dXJuIGZwYXJ0LmYzMiAqICgxIDw8IGhkci0+Y29lZl9sb2cyX2Rlbm9tKTsKPiAK PiBZb3UgY291bGQganVzdCB1c2UgYXZfaW50MmZsb2F0KCkgaGVyZSBpbnN0ZWFkIG9mIGFkZGlu ZyB0aGUgdW5pb24geW91cnNlbGYuCj4gCj4+ICsgICAgfQo+PiArCj4+ICsgICAgcmV0dXJuIDA7 IC8qIHVucmVhY2hhYmxlICovCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgaW50NjRfdCBn ZXRfc2VfY29lZihHZXRCaXRDb250ZXh0ICpnYiwgY29uc3QgQVZET1ZJUnB1RGF0YUhlYWRlciAq aGRyKQo+PiArewo+PiArICAgIGludDY0X3QgaXBhcnQ7Cj4+ICsgICAgdW5pb24geyB1aW50MzJf dCB1MzI7IGZsb2F0IGYzMjsgfSBmcGFydDsKPj4gKwo+PiArICAgIHN3aXRjaCAoaGRyLT5jb2Vm X2RhdGFfdHlwZSkgewo+PiArICAgIGNhc2UgUlBVX0NPRUZGX0ZJWEVEOgo+PiArICAgICAgICBp cGFydCA9IGdldF9zZV9nb2xvbWJfbG9uZyhnYik7Cj4+ICsgICAgICAgIGZwYXJ0LnUzMiA9IGdl dF9iaXRzX2xvbmcoZ2IsIGhkci0+Y29lZl9sb2cyX2Rlbm9tKTsKPj4gKyAgICAgICAgcmV0dXJu IChpcGFydCA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSkgKyBmcGFydC51MzI7Cj4+ICsKPj4gKyAg ICBjYXNlIFJQVV9DT0VGRl9GTE9BVDoKPj4gKyAgICAgICAgZnBhcnQudTMyID0gZ2V0X2JpdHNf bG9uZyhnYiwgMzIpOwo+PiArICAgICAgICByZXR1cm4gZnBhcnQuZjMyICogKDEgPDwgaGRyLT5j b2VmX2xvZzJfZGVub20pOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAwOyAvKiB1bnJl YWNoYWJsZSAqLwo+PiArfQo+PiArCj4+ICsjZGVmaW5lIFZBTElEQVRFKFZBUiwgTUlOLCBNQVgp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAg ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+PiArICAgICAgICBpZiAoVkFSIDwgTUlOIHx8IFZBUiA+ IE1BWCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsg ICAgICAgICAgICBhdl9sb2cocy0+bG9nY3R4LCBBVl9MT0dfRVJST1IsICJSUFUgdmFsaWRhdGlv biBmYWlsZWQ6ICIgICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAgICAjTUlOIiA8PSAi I1ZBUiIgPSAlZCA8PSAiI01BWCJcbiIsIChpbnQpIFZBUik7ICAgICAgICAgICAgICAgXAo+PiAr ICAgICAgICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4g KyAgICB9IHdoaWxlICgwKQo+PiArCj4+ICtpbnQgZmZfZG92aV9ycHVfcGFyc2UoRE9WSUNvbnRl eHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnJwdSwgc2l6ZV90IHJwdV9zaXplKQo+PiArewo+PiArICAg IEFWRE9WSVJwdURhdGFIZWFkZXIgKmhkciA9ICZzLT5oZWFkZXI7Cj4+ICsgICAgR2V0Qml0Q29u dGV4dCAqZ2IgPSAmKEdldEJpdENvbnRleHQpezB9Owo+PiArICAgIERPVklWZHJSZWYgKnZkcjsK Pj4gKyAgICBpbnQgcmV0Owo+PiArCj4+ICsgICAgdWludDhfdCBuYWxfcHJlZml4Owo+PiArICAg IHVpbnQ4X3QgcnB1X3R5cGU7Cj4+ICsgICAgdWludDhfdCB2ZHJfc2VxX2luZm9fcHJlc2VudDsK Pj4gKyAgICB1aW50OF90IHZkcl9kbV9tZXRhZGF0YV9wcmVzZW50Owo+PiArICAgIHVpbnQ4X3Qg dXNlX3ByZXZfdmRyX3JwdTsKPj4gKyAgICB1aW50OF90IHVzZV9ubHE7Cj4+ICsgICAgdWludDhf dCBwcm9maWxlOwo+PiArICAgIGlmICgocmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIHJwdSwgcnB1 X3NpemUpKSA8IDApCj4gCj4gTm90aWNlIHRoYXQgcnB1X3NpemUgaXMgY29udmVydGVkIHRvIGlu dCBiZWZvcmUgaW5pdF9nZXRfYml0czgoKSBpcwo+IGNhbGxlZC4gKEl0IGlzIG5vdCBwcm9ibGVt YXRpYyB3aXRoIHRoZSB1c2UgaW4gNi82IGJlY2F1c2UgdGhlIHNpemUgaGFzCj4gYWxyZWFkeSBi ZWVuIGNoZWNrZWQgaW4gdGhpcyBjYXNlLikKPiAKPj4gKyAgICAgICAgcmV0dXJuIHJldDsKPj4g Kwo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6 Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4gCj4gVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QK ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGlu Zm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1h aWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2Ny aWJlIi4K