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 40F5745504 for ; Thu, 2 Mar 2023 20:24:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C4EDE68B155; Thu, 2 Mar 2023 22:24:11 +0200 (EET) Received: from mail-il1-f178.google.com (mail-il1-f178.google.com [209.85.166.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A7D0D68A8A0 for ; Thu, 2 Mar 2023 22:24:04 +0200 (EET) Received: by mail-il1-f178.google.com with SMTP id p13so402257ilp.11 for ; Thu, 02 Mar 2023 12:24:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677788643; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=YP/igfWIwAekpJ27n0dVJp98sjPFgJ8SL9cX9Kgio9E=; b=kS7inFvecf+TEkDyykC4OIBbw0he2csxtrF/+QWD0TxG0NnWjdJzeXRmsvFj0qZ3yx jwvtI9Sx7sXvWAMNtdYuJbnnXsP1yg4QQ7Hf+hFsuPI535WM/AUav9Guk/GCQ2vdcH2G QtSMago4QhT0nYSdZyiSUUvjc4s+FUYi52Jie/tsLtSXjq9QqCr4nxbLnRst//hJwCcH VScISd2Gdgeoq90JGSMq4TQ1ov4ZI4Te18KBvGOT9UhU/bYaJ3DiCz2qHXCdaB80LCQL yQ2etlOG1+1NOjZC/r2AmIN0a3tuJ/uweWlKnxFouYaY782mCDOvIYw2rGBZFl9sI4lZ Pghg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677788643; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YP/igfWIwAekpJ27n0dVJp98sjPFgJ8SL9cX9Kgio9E=; b=CXgto1WFiQBINhH6fZ/ndX9jfj0RHjAAB1lEKQOsrS1fYdGBYaB2teBh7wGEyhY6JY XRR3qzV4wj3AsTyHP7elozzXqjmd5limHl7fQQ1rD/WrWxZDmtLUrmIsVWV0+d+AeF1i DTjHKvB3JYnYu+6ooZxXf4o0hMPbcV+0Rg8u2fwlw83wMjGwxxrMZt4SvnMWvommzHGO kuVUdz9eK1H3dufFSCu1zLwPrGPZYG6a/9rRshiUM/IOHgjdxndy0N3z+xiPZz9ATrgy I2CNXR3wARoC6ty9XLUCyYzdj0UieM+kTLh+RvzzhnE+75Hn63pb4hF8qssj5SoWQPCk CsCg== X-Gm-Message-State: AO0yUKXMZnvGYzFoof3w1fBb/wSd3zUfmDdSgkTBf73usB3fMorFSp3Z DQAOzRY3z5TUY/Qnouch1l1MyzIaiw+3lQ== X-Google-Smtp-Source: AK7set+Ur0HLa8uDGkkjPPmOjI0ABP1nUl8xNDJKjTwlkkcgL0SsdvoI91g4uKcDYcgZqTFT7dTIVA== X-Received: by 2002:a05:6e02:96f:b0:317:9d16:e6c7 with SMTP id q15-20020a056e02096f00b003179d16e6c7mr2712533ilt.3.1677788643057; Thu, 02 Mar 2023 12:24:03 -0800 (PST) Received: from [192.168.1.239] (d-75-118-216-66.oh.cpe.breezeline.net. [75.118.216.66]) by smtp.gmail.com with ESMTPSA id z3-20020a056638000300b003c508c54647sm154708jao.29.2023.03.02.12.24.02 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Mar 2023 12:24:02 -0800 (PST) Message-ID: Date: Thu, 2 Mar 2023 15:24:01 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 To: ffmpeg-devel@ffmpeg.org References: Content-Language: en-US From: Leo Izen In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 2/2] avutil: add HDR10+ dynamic metadata serialization function 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: T24gMy8yLzIzIDE0OjI1LCBSYXBoYcOrbCBadW1lciB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBS YXBoYcOrbCBadW1lciA8cnp1bWVyQHRlYmFrby5uZXQ+Cj4gLS0tCj4gICBsaWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuYyB8IDE0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gICBsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCB8ICAxMSArKysKPiAgIGxpYmF2 dXRpbC92ZXJzaW9uLmggICAgICAgICAgICAgIHwgICAyICstCj4gICAzIGZpbGVzIGNoYW5nZWQs IDE1OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCgpXaHkgbm90IHB1dCB0aGlzIGlu IGF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmM/IFlvdSByZWZlcmVuY2UgCnB1dF9iaXRzLmgg d2hpY2ggaXMgaW4gYXZjb2RlYywgc28gdGhhdCBjYW4gcG9zc2libHkgYmUgYW4gaXNzdWUsIGV2 ZW4gCnRob3VnaCBpdCBpcyBpbmxpbmVkIChpLmUuIGl0IHNlbmRzIHRoZSB3cm9uZyBtZXNzYWdl IHNpbmNlIGF2dXRpbCBpcyAKc3VwcG9zZWQgdG8gbm90IGRlcGVuZCBvbiBhdmNvZGVjKS4KCj4g ZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jIGIvbGliYXZ1dGls L2hkcl9keW5hbWljX21ldGFkYXRhLmMKPiBpbmRleCA5OGYzOTliMDMyLi4zOWE3ODg2YTJlIDEw MDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCj4gKysrIGIvbGli YXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMKPiBAQCAtMjI1LDMgKzIyNSwxNDkgQEAgaW50 IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3Qg dWludDhfdCAqZGF0YSwKPiAgIAo+ICAgICAgIHJldHVybiAwOwo+ICAgfQo+ICsKPiArQVZCdWZm ZXJSZWYgKmF2X2R5bmFtaWNfaGRyX3BsdXNfdG9fdDM1KEFWRHluYW1pY0hEUlBsdXMgKnMpCj4g K3sKCmF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUgcmV0dXJucyBhbiBpbnQgc3RhdHVzIGNv ZGUgYW5kIHRha2VzIGEgCnBvaW50ZXIgYXMgYW4gYXJndW1lbnQsIGlzIHRoZXJlIGFueSBwYXJ0 aWN1bGFyIHJlYXNvbiB5b3UgZGlkbid0IG1pcnJvciAKdXNlciBpbnRlcmZhY2UgaGVyZT8KCgo+ ICsgICAgQVZCdWZmZXJSZWYgKmJ1ZjsKPiArICAgIHNpemVfdCBzaXplX2JpdHMsIHNpemVfYnl0 ZXM7Cj4gKyAgICBQdXRCaXRDb250ZXh0IHBiYywgKnBiID0gJnBiYzsKPiArCj4gKyAgICBpZiAo IXMpCj4gKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKwo+ICsgICAgLy8gQnVmZmVyIHNpemUgcGVy IENUQS04NjEtSCBwLjI1My0yNTQ6Cj4gKyAgICBzaXplX2JpdHMgPQo+ICsgICAgLy8gNTYgYml0 cyBmb3IgdGhlIGhlYWRlciwgbWludXMgOC1iaXQgZXhjbHVkZWQgY291bnRyeSBjb2RlCj4gKyAg ICA0OCArCj4gKyAgICAvLyAyIGJpdHMgZm9yIG51bV93aW5kb3dzCj4gKyAgICAyICsKPiArICAg IC8vIDkzNyBiaXRzIGZvciB3aW5kb3cgZ2VvbWV0cnkgZm9yIGVhY2ggd2luZG93IGFib3ZlIDEK PiArICAgIEZGTUFYKChzLT5udW1fd2luZG93cyAtIDEpLCAwKSAqIDkzNyArCj4gKyAgICAvLyAy NyBiaXRzIGZvciB0YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZQo+ICsg ICAgMjcgKwo+ICsgICAgLy8gMS0zODU1IGJpdHMgZm9yIHRhcmdldGVkIHN5c3RlbSBkaXNwbGF5 IHBlYWsgbHVtaW5hbmNlIGluZm9ybWF0aW9uCj4gKyAgICAxICsgKHMtPnRhcmdldGVkX3N5c3Rl bV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID8gMTAgKwo+ICsgICAgICAgIHMt Pm51bV9yb3dzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSAq Cj4gKyAgICAgICAgcy0+bnVtX2NvbHNfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3Bl YWtfbHVtaW5hbmNlICogNCA6IDApICsKPiArICAgIC8vIDAtNDQyIGJpdHMgZm9yIGludHJhLXdp bmRvdyBwaXhlbCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24KPiArICAgIHMtPm51bV93aW5kb3dz ICogODI7CgpUaGlzIHNlcXVlbmNlIGFib3ZlIGlzIGRpZmZpY3VsdCB0byByZWFkIGR1ZSB0byB0 aGUgaW5saW5lIC8vIGNvbW1lbnRzLiAKSXQgc2hvdWxkIGJlIG1vcmUgcmVhZGFibGUgdG8ganVz dCBoYXZlIHRoZSBlbnRpcmUgZXhwcmVzc2lvbiBiZSAKY29udGlndW91cyB3aXRoIGEgLyogKi8g bXVsdGlsaW5lIGJsb2NrIGNvbW1lbnQgYWJvdmUgaXQgZXhwbGFpbmluZyBlYWNoIAppdGVtLgoK PiArICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+ICsgICAg ICAgIHNpemVfYml0cyArPSBzLT5wYXJhbXNbd10ubnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVy Y2VudGlsZXMgKiAyNDsKPiArICAgIH0KCkxpa2V3aXNlLCBhbm90aGVyIGNvZGUgc3R5bGUgaXNz dWUsIGRvbid0IHVzZSB7fSB0byBlbmNsb3NlIGEgc2luZ2xlIApsaW5lIHVubGVzcyBpdCdzIHVu YXZvaWRhYmxlLiBUaGlzIG9jY3VycyBpbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGlzIHBhdGNoLgoK PiArICAgIC8vIDEtMzg1NSBiaXRzIGZvciBtYXN0ZXJpbmcgZGlzcGxheSBwZWFrIGx1bWluYW5j ZSBpbmZvcm1hdGlvbgo+ICsgICAgc2l6ZV9iaXRzICs9IDEgKyAocy0+bWFzdGVyaW5nX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcgPyAxMCArCj4gKyAgICAgICAgcy0+bnVtX3Jv d3NfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlICoKPiArICAgICAgICBz LT5udW1fY29sc19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgKiA0IDog MCkgKwo+ICsgICAgLy8gMC01MzcgYml0cyBmb3IgcGVyLXdpbmRvdyB0b25lbWFwcGluZyBpbmZv cm1hdGlvbgo+ICsgICAgcy0+bnVtX3dpbmRvd3MgKiAxOwo+ICsgICAgZm9yIChpbnQgdyA9IDA7 IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4gKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS50 b25lX21hcHBpbmdfZmxhZykgewo+ICsgICAgICAgICAgICBzaXplX2JpdHMgKz0gMjggKyBzLT5w YXJhbXNbd10ubnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTA7Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsgICAgLy8gMC0yMSBiaXRzIGZvciBwZXItd2luZG93IGNvbG9yIHNhdHVyYXRpb24g bWFwcGluZyBpbmZvcm1hdGlvbgo+ICsgICAgc2l6ZV9iaXRzICs9IHMtPm51bV93aW5kb3dzICog MTsKPiArICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+ICsg ICAgICAgIGlmIChzLT5wYXJhbXNbd10uY29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsK PiArICAgICAgICAgICAgc2l6ZV9iaXRzICs9IDY7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsK PiArICAgIHNpemVfYnl0ZXMgPSAoc2l6ZV9iaXRzICsgNykgLyA4Owo+ICsKPiArICAgIGJ1ZiA9 IGF2X2J1ZmZlcl9hbGxvYyhzaXplX2J5dGVzKTsKPiArICAgIGlmICghYnVmKSB7Cj4gKyAgICAg ICAgcmV0dXJuIE5VTEw7Cj4gKyAgICAKCklmIHlvdSB1cGRhdGUgdGhpcyB0byBtYXRjaCB0aGUg c3RhdHVzIGNvZGUsIHRoaXMgYmVjb21lcyBBVkVSUk9SKEVOT01FTSk7CgoKPiArCj4gKyAgICBp bml0X3B1dF9iaXRzKHBiLCBidWYtPmRhdGEsIHNpemVfYnl0ZXMpOwo+ICsKPiArICAgIC8vIGl0 dV90X3QzNV9jb3VudHJ5X2NvZGUgc2hhbGwgYmUgMHhCNSAoVVNBKSAoZXhjbHVkZWQgZnJvbSB0 aGUgcGF5bG9hZCkKPiArICAgIC8vIGl0dV90X3QzNV90ZXJtaW5hbF9wcm92aWRlcl9jb2RlIHNo YWxsIGJlIDB4MDAzQwo+ICsgICAgcHV0X2JpdHMocGIsIDE2LCAweDAwM0MpOwo+ICsgICAgLy8g aXR1X3RfdDM1X3Rlcm1pbmFsX3Byb3ZpZGVyX29yaWVudGVkX2NvZGUgaXMgc2V0IHRvIFNUIDIw OTQtNDAKPiArICAgIHB1dF9iaXRzKHBiLCAxNiwgMHgwMDAxKTsKPiArICAgIC8vIGFwcGxpY2F0 aW9uX2lkZW50aWZpZXIgc2hhbGwgYmUgc2V0IHRvIDQKPiArICAgIHB1dF9iaXRzKHBiLCA4LCA0 KTsKPiArICAgIC8vIGFwcGxpY2F0aW9uX21vZGUgaXMgc2V0IHRvIEFwcGxpY2F0aW9uIFZlcnNp b24gMQo+ICsgICAgcHV0X2JpdHMocGIsIDgsIDEpOwo+ICsKPiArICAgIC8vIFBheWxvYWQgYXMg cGVyIENUQS04NjEtSCBwLjI1My0yNTQKPiArICAgIHB1dF9iaXRzKHBiLCAyLCBzLT5udW1fd2lu ZG93cyk7Cj4gKwo+ICsgICAgZm9yIChpbnQgdyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysr KSB7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10ud2luZG93X3VwcGVy X2xlZnRfY29ybmVyX3gubnVtIC8gcy0+cGFyYW1zW3ddLndpbmRvd191cHBlcl9sZWZ0X2Nvcm5l cl94LmRlbik7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10ud2luZG93 X3VwcGVyX2xlZnRfY29ybmVyX3kubnVtIC8gcy0+cGFyYW1zW3ddLndpbmRvd191cHBlcl9sZWZ0 X2Nvcm5lcl95LmRlbik7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10u d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl94Lm51bSAvIHMtPnBhcmFtc1t3XS53aW5kb3dfbG93 ZXJfcmlnaHRfY29ybmVyX3guZGVuKTsKPiArICAgICAgICBwdXRfYml0cyhwYiwgMTYsIHMtPnBh cmFtc1t3XS53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3kubnVtIC8gcy0+cGFyYW1zW3ddLndp bmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeS5kZW4pOwo+ICsgICAgICAgIHB1dF9iaXRzKHBiLCAx Niwgcy0+cGFyYW1zW3ddLmNlbnRlcl9vZl9lbGxpcHNlX3gpOwo+ICsgICAgICAgIHB1dF9iaXRz KHBiLCAxNiwgcy0+cGFyYW1zW3ddLmNlbnRlcl9vZl9lbGxpcHNlX3kpOwo+ICsgICAgICAgIHB1 dF9iaXRzKHBiLCA4LCBzLT5wYXJhbXNbd10ucm90YXRpb25fYW5nbGUpOwo+ICsgICAgICAgIHB1 dF9iaXRzKHBiLCAxNiwgcy0+cGFyYW1zW3ddLnNlbWltYWpvcl9heGlzX2ludGVybmFsX2VsbGlw c2UpOwo+ICsgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwgcy0+cGFyYW1zW3ddLnNlbWltYWpvcl9h eGlzX2V4dGVybmFsX2VsbGlwc2UpOwo+ICsgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwgcy0+cGFy YW1zW3ddLnNlbWltaW5vcl9heGlzX2V4dGVybmFsX2VsbGlwc2UpOwo+ICsgICAgICAgIHB1dF9i aXRzKHBiLCAxLCBzLT5wYXJhbXNbd10ub3ZlcmxhcF9wcm9jZXNzX29wdGlvbik7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgcHV0X2JpdHMocGIsIDI3LCBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9t YXhpbXVtX2x1bWluYW5jZS5udW0gKiBsdW1pbmFuY2VfZGVuIC8KPiArICAgICAgICBzLT50YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZS5kZW4pOwo+ICsgICAgcHV0X2Jp dHMocGIsIDEsIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZV9mbGFnKTsKPiArICAgIGlmIChzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVh a19sdW1pbmFuY2VfZmxhZykgewo+ICsgICAgICAgIHB1dF9iaXRzKHBiLCA1LCBzLT5udW1fcm93 c190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UpOwo+ICsgICAg ICAgIHB1dF9iaXRzKHBiLCA1LCBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9h Y3R1YWxfcGVha19sdW1pbmFuY2UpOwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+ bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlOyBp KyspIHsKPiArICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzLT5udW1fY29sc190YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2U7IGorKykgewo+ICsgICAg ICAgICAgICAgICAgcHV0X2JpdHMocGIsIDQsIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2Fj dHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXS5udW0gKiBwZWFrX2x1bWluYW5jZV9kZW4gLwo+ICsg ICAgICAgICAgICAgICAgICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFr X2x1bWluYW5jZVtpXVtqXS5kZW4pOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsKPiArICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykg ewo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gKyAgICAgICAgICAg IHB1dF9iaXRzKHBiLCAxNywgcy0+cGFyYW1zW3ddLm1heHNjbFtpXS5udW0gKiByZ2JfZGVuIC8g cy0+cGFyYW1zW3ddLm1heHNjbFtpXS5kZW4pOwo+ICsgICAgICAgIH0KPiArICAgICAgICBwdXRf Yml0cyhwYiwgMTcsIHMtPnBhcmFtc1t3XS5hdmVyYWdlX21heHJnYi5udW0gKiByZ2JfZGVuIC8g cy0+cGFyYW1zW3ddLmF2ZXJhZ2VfbWF4cmdiLmRlbik7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIs IDQsIHMtPnBhcmFtc1t3XS5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyk7Cj4g KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5wYXJhbXNbd10ubnVtX2Rpc3RyaWJ1dGlv bl9tYXhyZ2JfcGVyY2VudGlsZXM7IGkrKykgewo+ICsgICAgICAgICAgICBwdXRfYml0cyhwYiwg Nywgcy0+cGFyYW1zW3ddLmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGFnZSk7Cj4gKyAg ICAgICAgICAgIHB1dF9iaXRzKHBiLCAxNywgcy0+cGFyYW1zW3ddLmRpc3RyaWJ1dGlvbl9tYXhy Z2JbaV0ucGVyY2VudGlsZS5udW0gKiByZ2JfZGVuIC8KPiArICAgICAgICAgICAgICAgIHMtPnBh cmFtc1t3XS5kaXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRpbGUuZGVuKTsKPiArICAgICAg ICB9Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDEwLCBzLT5wYXJhbXNbd10uZnJhY3Rpb25fYnJp Z2h0X3BpeGVscy5udW0gKiBmcmFjdGlvbl9waXhlbF9kZW4gLwo+ICsgICAgICAgICAgICBzLT5w YXJhbXNbd10uZnJhY3Rpb25fYnJpZ2h0X3BpeGVscy5kZW4pOwo+ICsgICAgfQo+ICsKPiArICAg IHB1dF9iaXRzKHBiLCAxLCBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFu Y2VfZmxhZyk7Cj4gKyAgICBpZiAocy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVt aW5hbmNlX2ZsYWcpIHsKPiArICAgICAgICBwdXRfYml0cyhwYiwgNSwgcy0+bnVtX3Jvd3NfbWFz dGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlKTsKPiArICAgICAgICBwdXRfYml0 cyhwYiwgNSwgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5h bmNlKTsKPiArICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMtPm51bV9yb3dzX21hc3Rlcmlu Z19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsgaSsrKSB7Cj4gKyAgICAgICAgICAgIGZv ciAoaW50IGogPSAwOyBqIDwgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3Bl YWtfbHVtaW5hbmNlOyBqKyspIHsKPiArICAgICAgICAgICAgICAgIHB1dF9iaXRzKHBiLCA0LCBz LT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0ubnVtICogcGVh a19sdW1pbmFuY2VfZGVuIC8KPiArICAgICAgICAgICAgICAgICAgICBzLT5tYXN0ZXJpbmdfZGlz cGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0uZGVuKTsKPiArICAgICAgICAgICAgfQo+ ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51 bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAgICBwdXRfYml0cyhwYiwgMSwgcy0+cGFyYW1zW3dd LnRvbmVfbWFwcGluZ19mbGFnKTsKPiArICAgICAgICBpZiAocy0+cGFyYW1zW3ddLnRvbmVfbWFw cGluZ19mbGFnKSB7Cj4gKyAgICAgICAgICAgIHB1dF9iaXRzKHBiLCAxMiwgcy0+cGFyYW1zW3dd LmtuZWVfcG9pbnRfeC5udW0gKiBrbmVlX3BvaW50X2RlbiAvIHMtPnBhcmFtc1t3XS5rbmVlX3Bv aW50X3guZGVuKTsKPiArICAgICAgICAgICAgcHV0X2JpdHMocGIsIDEyLCBzLT5wYXJhbXNbd10u a25lZV9wb2ludF95Lm51bSAqIGtuZWVfcG9pbnRfZGVuIC8gcy0+cGFyYW1zW3ddLmtuZWVfcG9p bnRfeS5kZW4pOwo+ICsgICAgICAgICAgICBwdXRfYml0cyhwYiwgNCwgcy0+cGFyYW1zW3ddLm51 bV9iZXppZXJfY3VydmVfYW5jaG9ycyk7Cj4gKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcy0+cGFyYW1zW3ddLm51bV9iZXppZXJfY3VydmVfYW5jaG9yczsgaSsrKSB7Cj4gKyAgICAg ICAgICAgICAgICBwdXRfYml0cyhwYiwgMTAsIHMtPnBhcmFtc1t3XS5iZXppZXJfY3VydmVfYW5j aG9yc1tpXS5udW0gKiBiZXppZXJfYW5jaG9yX2RlbiAvCj4gKyAgICAgICAgICAgICAgICAgICAg cy0+cGFyYW1zW3ddLmJlemllcl9jdXJ2ZV9hbmNob3JzW2ldLmRlbik7Cj4gKyAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgcHV0X2JpdHMocGIsIDEsIHMtPnBhcmFtc1t3XS5jb2xvcl9zYXR1 cmF0aW9uX21hcHBpbmdfZmxhZyk7Cj4gKyAgICAgICAgICAgIGlmIChzLT5wYXJhbXNbd10uY29s b3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKPiArICAgICAgICAgICAgICAgIHB1dF9iaXRz KHBiLCA2LCBzLT5wYXJhbXNbd10uY29sb3Jfc2F0dXJhdGlvbl93ZWlnaHQubnVtICogc2F0dXJh dGlvbl93ZWlnaHRfZGVuIC8KPiArICAgICAgICAgICAgICAgICAgICBzLT5wYXJhbXNbd10uY29s b3Jfc2F0dXJhdGlvbl93ZWlnaHQuZGVuKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0K PiArICAgIH0KPiArCj4gKyAgICBmbHVzaF9wdXRfYml0cyhwYik7Cj4gKyAgICByZXR1cm4gYnVm Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIGIv bGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgKPiBpbmRleCAxZjk1M2VmMWY1Li43OTdh NWM2NGFlIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCj4g KysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgKPiBAQCAtMjEsNiArMjEsNyBA QAo+ICAgI2lmbmRlZiBBVlVUSUxfSERSX0RZTkFNSUNfTUVUQURBVEFfSAo+ICAgI2RlZmluZSBB VlVUSUxfSERSX0RZTkFNSUNfTUVUQURBVEFfSAo+ICAgCj4gKyNpbmNsdWRlICJidWZmZXIuaCIK PiAgICNpbmNsdWRlICJmcmFtZS5oIgo+ICAgI2luY2x1ZGUgInJhdGlvbmFsLmgiCj4gICAKPiBA QCAtMzUxLDQgKzM1MiwxNCBAQCBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hkcl9wbHVz X2NyZWF0ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUpOwo+ICAgaW50IGF2X2R5bmFtaWNfaGRy X3BsdXNfZnJvbV90MzUoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKTsKPiAgIAo+ICsv KioKPiArICogU2VyaWFsaXplIGR5bmFtaWMgSERSMTArIG1ldGFkYXRhIHRvIGEgdXNlciBkYXRh IHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSBidWZmZXIsCj4gKyAqIGV4Y2x1ZGluZyB0aGUgY291bnRy eSBjb2RlIGFuZCBiZWdpbm5pbmcgd2l0aCB0aGUgdGVybWluYWwgcHJvdmlkZXIgY29kZS4KPiAr ICogQHBhcmFtIHMgQSBwb2ludGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERS UGx1cyBzdHJ1Y3R1cmUuCj4gKyAqCj4gKyAqIEByZXR1cm4gUG9pbnRlciB0byBhbiBBVkJ1ZmZl clJlZiBjb250YWluaW5nIHRoZSByYXcgSVRVLVQgVC4zNSByZXByZXNlbnRhdGlvbgo+ICsgKiAg ICAgICAgIG9mIHRoZSBIRFIxMCsgbWV0YWRhdGEgaWYgc3VjY2VlZCwgb3IgTlVMTCBpZiBidWZm ZXIgYWxsb2NhdGlvbiBmYWlscy4KPiArICovCj4gK0FWQnVmZmVyUmVmICphdl9keW5hbWljX2hk cl9wbHVzX3RvX3QzNShBVkR5bmFtaWNIRFJQbHVzICpzKTsKPiArCj4gICAjZW5kaWYgLyogQVZV VElMX0hEUl9EWU5BTUlDX01FVEFEQVRBX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3Zl cnNpb24uaCBiL2xpYmF2dXRpbC92ZXJzaW9uLmgKPiBpbmRleCA5MDBiNzk4OTcxLi43NjM1Njcy OTg1IDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC92ZXJzaW9uLmgKPiArKysgYi9saWJhdnV0aWwv dmVyc2lvbi5oCj4gQEAgLTc5LDcgKzc5LDcgQEAKPiAgICAqLwo+ICAgCj4gICAjZGVmaW5lIExJ QkFWVVRJTF9WRVJTSU9OX01BSk9SICA1OAo+IC0jZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01J Tk9SICAgMwo+ICsjZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01JTk9SICAgNAo+ICAgI2RlZmlu ZSBMSUJBVlVUSUxfVkVSU0lPTl9NSUNSTyAxMDAKPiAgIAo+ICAgI2RlZmluZSBMSUJBVlVUSUxf VkVSU0lPTl9JTlQgICBBVl9WRVJTSU9OX0lOVChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiwgXAoK LSBMZW8gSXplbiAodGhlYm9tYnplbikKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==