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 00BCB42C64 for ; Mon, 2 May 2022 22:11:50 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BFF8A68B2ED; Tue, 3 May 2022 01:11:47 +0300 (EEST) Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 66E6268B22C for ; Tue, 3 May 2022 01:11:41 +0300 (EEST) Received: by mail-wm1-f52.google.com with SMTP id r1-20020a1c2b01000000b00394398c5d51so318438wmr.2 for ; Mon, 02 May 2022 15:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=CJdSPgjFd9U1fIcpnvhLuRMvGpdepU3ChfiPDmE5Wc8=; b=RkR+S8+Az8Rlmj3ECao/GC2zcEtWdf7jNHOBX1/pIwSOWP3UjlsfwmjLHf+ii/SqdP BlkHJdB0BKYjYh10JHYfqhd9wYTwMU1smB9N01vWBc1vx9UI1vHpYjj7HOX0BWszBKS8 Jl6FR/wpUarsZEL3pI79GgkQtUKFQWAUnCDylvPEvBWyd5VFXuZBLOi0wtN4G3zw/fcz Rs7aJEb3fUv+Nnqb5ZIqrtW5Oz1690uTShHS/JmDID8+wG6I2+7Im8wq03+Osj/TM2wn r4gGlUagesa1124y+J7yfParuVBcsHI4REuStwtIZEUtx86REwA24TcpAvS+NCfQbdsd 3SXQ== 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=CJdSPgjFd9U1fIcpnvhLuRMvGpdepU3ChfiPDmE5Wc8=; b=xaOb+nwHu2z2RIxyGm7it4EehwEpmouGeiRLNGCeJWUl9/HlTQDFj0P+Vpb6uuD2wW qe1K/90YwOkQJZKeEd4CcORSEJuz0YCtGdoO3Hj9thUQlQUMO3z1zSkBavW1DoTyvThZ SmH/iiW3RllSMMvrZFddARldICH0hHf8W+2fgCIl7OOLCBDldxJH54/f1SRv3JYKvymr McU92gRfmhn8PUv7m7LwdsxX9pP/92zoCiWUucXNBetK4b7i2ZOqV0zNZW34gCrYq/Ib /0Ntt7PyNnEDNZaTmm8Md7JmEGbc4k+znkRS/ILlOD7W/bNCr3U1QAZcyWkMmbUm5kgj uL8g== X-Gm-Message-State: AOAM533/NSZfX6kP4wuZTuqqFJhUSefNQBjlEOwemGtxGgNVrUHxL6pL 2yKaCG/irqnIEvxleGrciidrEqdWqcz5iwfh X-Google-Smtp-Source: ABdhPJyRSz8t0ObIXqVrc6n7ic6dN2eRnS2l7k+4Z3JMqCRsriky5Q6981JdJMvcrohI5Rz6xRRs0A== X-Received: by 2002:a05:600c:4f93:b0:394:3fe6:4b3f with SMTP id n19-20020a05600c4f9300b003943fe64b3fmr878304wmq.158.1651529500650; Mon, 02 May 2022 15:11:40 -0700 (PDT) Received: from [192.168.0.14] (cpc91222-cmbg18-2-0-cust46.5-4.cable.virginm.net. [81.106.30.47]) by smtp.gmail.com with ESMTPSA id p3-20020adfaa03000000b0020c5253d8dcsm8343811wrd.40.2022.05.02.15.11.39 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 May 2022 15:11:40 -0700 (PDT) Message-ID: <33e93072-cde1-437b-bf60-e78250f26692@jkqxz.net> Date: Mon, 2 May 2022 23:11:44 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <85ff784b6ff80d4f2e0f724d0b93472e50d2c256.1651349262.git.ffmpegagent@gmail.com> <994ee7a9-ab91-4d13-9538-ed4502c73bd6@jkqxz.net> From: Mark Thompson In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 1/3] avutils/hwcontext: add derive-device function which searches for existing devices in both directions 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: T24gMDIvMDUvMjAyMiAwOToxNCwgU29mdCBXb3JrcyB3cm90ZToKPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0KPj4gRnJvbTogZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0Bm Zm1wZWcub3JnPiBPbiBCZWhhbGYgT2YgTWFyawo+PiBUaG9tcHNvbgo+PiBTZW50OiBNb25kYXks IE1heSAyLCAyMDIyIDEyOjAxIEFNCj4+IFRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+PiBT dWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIDEvM10gYXZ1dGlscy9od2NvbnRleHQ6 IGFkZCBkZXJpdmUtCj4+IGRldmljZSBmdW5jdGlvbiB3aGljaCBzZWFyY2hlcyBmb3IgZXhpc3Rp bmcgZGV2aWNlcyBpbiBib3RoIGRpcmVjdGlvbnMKPiAKPiBbLi5dCj4gCj4+Pj4gKiBUaGUgdGhy ZWFkLXNhZmV0eSBwcm9wZXJ0aWVzIG9mIHRoZSBod2NvbnRleHQgQVBJIGhhdmUgYmVlbiBsb3N0 Cj4+IC0KPj4+PiB5b3UgY2FuIG5vIGxvbmdlciBvcGVyYXRlIG9uIGRldmljZXMgaW5kZXBlbmRl bnRseSBhY3Jvc3MgdGhyZWFkcwo+Pj4+IChpbnNvZmFyIGFzIHRoZSB1bmRlcmx5aW5nIEFQSSBh bGxvd3MgdGhhdCkuCj4+Pj4gICAgICBNYXliZSB0aGVyZSBpcyBhbiBhcmd1bWVudCB0aGF0IGRl cml2YXRpb24gaXMgc29tZXRoaW5nIHdoaWNoCj4+Pj4gc2hvdWxkIGhhcHBlbiBlYXJseSBvbiBh bmQgdGhlcmVmb3JlIGRvY3VtZW50aW5nIGl0IGFzIHRocmVhZC0KPj4gdW5zYWZlCj4+Pj4gaXMg b2ssIGJ1dCB3aGVuIGh3dXBsb2FkL2h3bWFwIGNhbiB1c2UgaXQgaW5zaWRlIGZpbHRlcmdyYXBo cyB0aGF0Cj4+Pj4ganVzdCBpc24ndCBnb2luZyB0byBoYXBwZW4gKGFuZCB3aWxsIGJlIHZpb2xh dGVkIGluIHRoZSBGRm1wZWcKPj4gdXRpbGl0eQo+Pj4+IGlmIGZpbHRlcnMgZ2V0IHRocmVhZGVk LCBhcyBpcyBiZWluZyB3b3JrZWQgb24pLgo+Pj4KPj4+ICAgRnJvbSBteSB1bmRlcnN0YW5kaW5n IHRoZXJlIHdpbGwgYmUgYSBzaW5nbGUgc2VwYXJhdGUgdGhyZWFkIHdoaWNoCj4+PiBoYW5kbGVz IGFsbCBmaWx0ZXJncmFwaCBvcGVyYXRpb25zLgo+Pj4gSSBkb24ndCB0aGluayBpdCB3b3VsZCBl dmVuIGJlIHBvc3NpYmxlICh3aXRob3V0IG1hc3NpdmUgY2hhbmdlcykKPj4+IHRvIGFyYml0cmF0 ZSBmaWx0ZXIgcHJvY2Vzc2luZyBpbiBwYXJhbGxlbC4KPj4+IEJ1dCBldmVuIGlmIHRoaXMgd291 bGQgYmUgaW1wbGVtZW50ZWQ6IHRoZSBmaWx0ZXJncmFwaCBzZXR1cCAoaW5pdCwKPj4+IHVuaW5p dCwgcXVlcnlfZm9ybWF0cywgZXRjLikgd291bGQgc3VyZWx5IGhhcHBlbiBvbiBhIHNpbmdsZSB0 aHJlYWQuCj4+Cj4+IFRoZSBmZm1wZWcgdXRpbGl0eSBjcmVhdGVzIGZpbHRlcmdyYXBocyBkeW5h bWljYWxseSB3aGVuIHRoZSBmaXJzdAo+PiBmcmFtZSBpcyBhdmFpbGFibGUgZnJvbSB0aGVpciBp bnB1dHMsIHNvIEkgZG9uJ3Qgc2VlIHdoeSB5b3Ugd291bGRuJ3QKPj4gYWxsb3cgbXVsdGlwbGUg b2YgdGhlbSB0byBiZSBjcmVhdGVkIGluIHBhcmFsbGVsIGluIHRoYXQgY2FzZS4KPj4KPj4gSWYg eW91IGNyZWF0ZSBhbGwgZGV2aWNlcyBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGVuIGdpdmUgcmVm ZXJlbmNlcyB0bwo+PiB0aGVtIHRvIHRoZSB2YXJpb3VzIGZpbHRlcnMgd2hpY2ggbmVlZCB0aGVt IChzbyBuZXZlciBtYW5pcHVsYXRlCj4+IGRldmljZXMgZHluYW1pY2FsbHkgd2l0aGluIHRoZSBn cmFwaCkgdGhlbiBpdCB3b3VsZCBiZSBvaywgYnV0IEkgdGhpbmsKPj4geW91J3ZlIGFscmVhZHkg cmVqZWN0ZWQgdGhhdCBhcHByb2FjaC4KPiAKPiBQbGVhc2UgbGV0J3Mgbm90IGJyZWFrIG91dCBv ZiB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaHNldC4KPiBUaGlzIHBhdGNoc2V0IGlzIG5vdCBhYm91 dCByZS1kb2luZyBkZXZpY2UgZGVyaXZhdGlvbi4gVGhlIG9ubHkKPiBzbWFsbCBjaGFuZ2UgdGhh dCBpdCBkb2VzIGlzIHRoYXQgaXQgcmV0dXJucyBhbiBleGlzdGluZyBkZXZpY2UKPiBpbnN0ZWFk IG9mIGNyZWF0aW5nIGEgbmV3IG9uZSB3aGVuIHN1Y2ggZGV2aWNlIGFscmVhZHkgZXhpc3RzCj4g aW4gdGhlIHNhbWUoISkgY2hhaW4uCj4gCj4gVGhlIGNoYW5nZSBpdCBtYWtlcyBoYXMgcmVhbGx5 IG5vdGhpbmcgdG8gZG8gd2l0aCB0aHJlYWRpbmcgb3IKPiBhbnl0aGluZyBhcm91bmQgaXQuCgpU aGUgY2hhbmdlIG1ha2VzIGV4aXN0aW5nIHRocmVhZC1zYWZlIGh3Y29udGV4dCBBUElzIHVuc2Fm ZS4gIFRoYXQgaXMgZGVmaW5pdGVseSBub3QgIm5vdGhpbmcgdG8gZG8gd2l0aCB0aHJlYWRpbmci LCBhbmQgaGFzIHRvIGJlIHJlc29sdmVkIHNpbmNlIHRoZXkgY2FuIGN1cnJlbnRseSBiZSBjYWxs ZWQgZnJvbSBjb250ZXh0cyB3aGljaCBleHBlY3QgdGhyZWFkLXNhZmV0eSAoc3VjaCBhcyBtYWtp bmcgZmlsdGVyZ3JhcGhzKS4KCj4+Pj4gKiBJJ20gbm90IHN1cmUgdGhhdCBpdCBpcyByZWFzb25h YmxlIHRvIGlnbm9yZSBvcHRpb25zLiAgSWYgYW4KPj4+PiB1bnJlbGF0ZWQgY29tcG9uZW50IGRl cml2ZWQgYSBkZXZpY2UgYmVmb3JlIHlvdSB3aXRoIHNwZWNpYWwKPj4gb3B0aW9ucywKPj4+PiB5 b3UgbWlnaHQgZ2V0IHRoYXQgZGV2aWNlIGV2ZW4gaWYgeW91IGhhdmUgaW5jb21wYXRpYmxlIGRp ZmZlcmVudAo+Pj4+IG9wdGlvbnMuCj4+Pgo+Pj4gSSB1bmRlcnN0YW5kIHdoYXQgeW91IG1lYW4s IGJ1dCB0aGlzIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mCj4+PiB0aGlzIHBhdGNoc2V0LCBiZWNh dXNlIHdoZW4geW91IHdvdWxkIHdhbnQgdG8gZG8gdGhpcywgaXQKPj4+IHdvdWxkIG5lZWQgdG8g YmUgaW1wbGVtZW50ZWQgZm9yIGRlcml2YXRpb24gaW4gZ2VuZXJhbCwgbm90Cj4+PiBpbiB0aGlz IHBhdGNoc2V0IHdoaWNoIG9ubHkgYWRkcyByZXZlcnNlLXNlYXJjaCB0byB0aGUKPj4+IGV4aXN0 aW5nIGRlcml2YXRpb24gZnVuY3Rpb25hbGl0eS4KPj4KPj4gSSdtIG5vdCBzdXJlIHdoYXQgeW91 IG1lYW4gYnkgdGhhdD8gIFRoZSBmZWF0dXJlIGFscmVhZHkgZXhpc3RzOyBoZXJlCj4+IGlzIGEg Y29uY3JldGUgZXhhbXBsZSBvZiB3aGVyZSB5b3Ugd291bGQgZ2V0IHRoZSB3cm9uZyByZXN1bHQ6 Cj4+Cj4+IFN0YXJ0IHdpdGggVkFBUEkgZGV2aWNlIEEuCj4+Cj4+IENvbXBvbmVudCBQIGRlcml2 ZXMgVnVsa2FuIGRldmljZSBCIHdpdGggc29tZSBleHRlbnNpb24gb3B0aW9ucyBYLgo+Pgo+PiBD b21wb25lbnQgUSB3YW50cyB0aGUgc2FtZSBkZXZpY2UgYXMgUCwgc28gaXQgZGVyaXZlcyBhZ2Fp biB3aXRoCj4+IGV4dGVuc2lvbiBvcHRpb25zIFggYW5kIGdldHMgQi4KPj4KPj4gRXZlcnl0aGlu ZyB3b3JrcyBmaW5lIGZvciBhIHdoaWxlLgo+Pgo+PiBMYXRlciwgdW5yZWxhdGVkIGNvbXBvbmVu dCBSIGlzIGluc2VydGVkIGJlZm9yZSBQIGFuZCBRLiAgSXQgd2FudHMgYQo+PiBWdWxrYW4gZGV2 aWNlIEMgd2l0aCBleHRlbnNpb24gb3B0aW9ucyBZLCBzbyBpdCBkZXJpdmVzIHRoYXQuCj4+Cj4+ IE5vdyBjb21wb25lbnQgUSBpcyBicm9rZW4gYmVjYXVzZSBpdCBnZXRzIEMgaW5zdGVhZCBvZiBC IGFuZCBoYXMgdGhlCj4+IHdyb25nIGV4dGVuc2lvbnMgZW5hYmxlZC4KPiAKPiBBcyBwZXIgeW91 ciByZXF1ZXN0LCB0aGlzIHBhdGNoc2V0J3MgY2hhbmdlcyBhcmUgbm93IGxpbWl0ZWQgdG8KPiB1 c2UgZmZtcGVnIGNsaS4gQW5kIHRoZXJlIGlzIGN1cnJlbnRseSBubyBzdXBwb3J0IGZvciAiZXh0 ZW5zaW9uCj4gb3B0aW9ucyIgd2hlbiBkZXJpdmluZyBhIGRldmljZS4KClllcyB0aGVyZSBpcyAt IHNlZSB0aGUgImluc3RhbmNlX2V4dGVuc2lvbnMiIGFuZCAiZGV2aWNlX2V4dGVuc2lvbnMiIG9w dGlvbnMgdG8gVnVsa2FuIGRldmljZSBkZXJpdmF0aW9uLiAgKEhlbmNlIHRoZSBWQUFQSStWdWxr YW4gZXhhbXBsZS4pCgo+IFdoYXQgSSBtZWFudCBhYm92ZSBpcyB0aGlzOgo+IAo+IEFzc3VtZSB0 aGlzIHBhdGNoc2V0IHdvdWxkbid0IGJlIGFwcGxpZWQsIGJ1dCBhIHBhdGNoc2V0IHdvdWxkCj4g YmUgYXBwbGllZCB0aGF0IGFsbG93cyB0byBzcGVjaWZ5ICJleHRlbnNpb24gb3B0aW9ucyIuCj4g VGhlbiwgZXZlbiB3aXRob3V0IHRoaXMgcGF0Y2hzZXQsIEkgY291bGQgY29uc3RydWN0IGEgc2lt aWxhcgo+IGV4YW1wbGUsIHdoZXJlIHlvdSB3b3VsZCBnZXQgdGhlIHNhbWUgZGV2aWNlIHdoZW4g ZGVyaXZpbmcKPiB0d28gdGltZXMgZnJvbSB0aGUgc2FtZSBkZXZpY2UgYnV0IHdpdGggZGlmZmVy ZW50IGV4dGVuc2lvbgo+IG9wdGlvbnMuCgpIb3c/CgpUaGUgZXhpc3RpbmcgZGVyaXZhdGlvbiBz ZXR1cCBhbHdheXMgbWFrZXMgYSBuZXcgZGV2aWNlLCBzbyB5b3UgY2FuJ3QgYWNjaWRlbnRhbGx5 IGdldCBhbiBvbGQgb25lLgoKVGhlIGV4aXN0aW5nIHdheSBvZiByZXVzaW5nIGRldmljZXMgaXMg dG8ga2VlcCB0aGUgcmVmZXJlbmNlIGFuZCByZXVzZSBpdCBkaXJlY3RseSwgd2hpY2ggbWVhbnMg eW91IG5lZWQgdG8gcGFzcyB0aGUgcmVmZXJlbmNlIGFyb3VuZCBleHBsaWNpdGx5IGFuZCB0aGVy ZSBpcyBubyBwcm9ibGVtLgoKPiBUaGF0J3Mgd2h5IEkgc2FpZDogeWVzLCBJIHVuZGVyc3RhbmQg dGhlIGNhc2UgeW91IGFyZSB0YWxraW5nCj4gYWJvdXQuIEJ1dCBpdCB3b3VsZCByZXF1aXJlIHR3 byBzZXBhcmF0ZSBwYXRjaGVzLCBvbmUgZm9yCj4gZW5hYmxpbmcgZXh0ZW5zaW9uIG9wdGlvbnMg YW5kIGFub3RoZXIgb25lIGZvciBtYXRjaGluZwo+IGV4dGVuc2lvbiBvcHRpb25zIHdoZW4gZGVy aXZpbmcgYSBkZXZpY2UuIFRoaXMgd291bGQgbWFrZQo+IHNlbnNlLCBidXQ6Cj4gCj4gSXQgaGFz IG5vdGhpbmcgdG8gZG8gd2l0aCB0aGlzIHBhdGNoc2V0Lgo+IChpdCBjb3VsZCBiZSBkb25lIGJl Zm9yZSBvciBhZnRlcndhcmRzKQo+IAo+IEknbSBvcGVuIHRvIGRpc2N1c3MgdGhpcyAoc2VwYXJh dGVseSksIGJlY2F1c2UgaXQgb3BlbnMgdXAKPiBhIHJhbmdlIG9mIHF1ZXN0aW9ucyBob3cgaXQg Y291bGQgYmUgZG9uZS4KPiAKPj4+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHQu YyBiL2xpYmF2dXRpbC9od2NvbnRleHQuYwo+Pj4+PiBpbmRleCBhYjlhZDM3MDNlLi4xYWVhN2Rk NWMzIDEwMDY0NAo+Pj4+PiAtLS0gYS9saWJhdnV0aWwvaHdjb250ZXh0LmMKPj4+Pj4gKysrIGIv bGliYXZ1dGlsL2h3Y29udGV4dC5jCj4+Pj4+IEBAIC0xMjMsNiArMTIzLDcgQEAgc3RhdGljIGNv bnN0IEFWQ2xhc3MgaHdkZXZpY2VfY3R4X2NsYXNzID0gewo+Pj4+PiAgICAgc3RhdGljIHZvaWQg aHdkZXZpY2VfY3R4X2ZyZWUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRhKQo+Pj4+PiAgICAg ewo+Pj4+PiAgICAgICAgIEFWSFdEZXZpY2VDb250ZXh0ICpjdHggPSAoQVZIV0RldmljZUNvbnRl eHQqKWRhdGE7Cj4+Pj4+ICsgICAgaW50IGk7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgLyogdW5pbml0 IG1pZ2h0IHN0aWxsIHdhbnQgYWNjZXNzIHRoZSBodyBjb250ZXh0IGFuZCB0aGUKPj4gdXNlcgo+ Pj4+PiAgICAgICAgICAqIGZyZWUoKSBjYWxsYmFjayBtaWdodCBkZXN0cm95IGl0LCBzbyB1bmlu aXQgaGFzIHRvIGJlCj4+Pj4gY2FsbGVkIGZpcnN0ICovCj4+Pj4+IEBAIC0xMzMsNiArMTM0LDgg QEAgc3RhdGljIHZvaWQgaHdkZXZpY2VfY3R4X2ZyZWUodm9pZCAqb3BhcXVlLAo+Pj4+IHVpbnQ4 X3QgKmRhdGEpCj4+Pj4+ICAgICAgICAgICAgIGN0eC0+ZnJlZShjdHgpOwo+Pj4+Pgo+Pj4+PiAg ICAgICAgIGF2X2J1ZmZlcl91bnJlZigmY3R4LT5pbnRlcm5hbC0+c291cmNlX2RldmljZSk7Cj4+ Pj4+ICsgICAgZm9yIChpID0gMDsgaSA8IEFWX0hXREVWSUNFX1RZUEVfTkI7IGkrKykKPj4+Pj4g KyAgICAgICAgYXZfYnVmZmVyX3VucmVmKCZjdHgtPmludGVybmFsLT5kZXJpdmVkX2RldmljZXNb aV0pOwo+Pj4+Pgo+Pj4+PiAgICAgICAgIGF2X2ZyZWVwKCZjdHgtPmh3Y3R4KTsKPj4+Pj4gICAg ICAgICBhdl9mcmVlcCgmY3R4LT5pbnRlcm5hbC0+cHJpdik7Cj4+Pj4+IEBAIC02NDQsMTAgKzY0 NywzMSBAQCBmYWlsOgo+Pj4+PiAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4+ICAgICB9Cj4+Pj4+ Cj4+Pj4+IC1pbnQgYXZfaHdkZXZpY2VfY3R4X2NyZWF0ZV9kZXJpdmVkX29wdHMoQVZCdWZmZXJS ZWYKPj4gKipkc3RfcmVmX3B0ciwKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnVtIEFWSFdEZXZpY2VUeXBlIHR5cGUsCj4+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZCdWZmZXJSZWYgKnNyY19yZWYsCj4+Pj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZEaWN0aW9uYXJ5ICpvcHRp b25zLAo+PiBpbnQKPj4+PiBmbGFncykKPj4+Pj4gK3N0YXRpYyBBVkJ1ZmZlclJlZiogZmluZF9k ZXJpdmVkX2h3ZGV2aWNlX2N0eChBVkJ1ZmZlclJlZgo+PiAqc3JjX3JlZiwKPj4+PiBlbnVtIEFW SFdEZXZpY2VUeXBlIHR5cGUpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgQVZCdWZmZXJSZWYgKnRtcF9y ZWY7Cj4+Pj4+ICsgICAgQVZIV0RldmljZUNvbnRleHQgKnNyY19jdHg7Cj4+Pj4+ICsgICAgaW50 IGk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICBzcmNfY3R4ID0gKEFWSFdEZXZpY2VDb250ZXh0KilzcmNf cmVmLT5kYXRhOwo+Pj4+PiArICAgIGlmIChzcmNfY3R4LT50eXBlID09IHR5cGUpCj4+Pj4+ICsg ICAgICAgIHJldHVybiBzcmNfcmVmOwo+Pj4+PiArCj4+Pj4+ICsgICAgZm9yIChpID0gMDsgaSA8 IEFWX0hXREVWSUNFX1RZUEVfTkI7IGkrKykKPj4+Pj4gKyAgICAgICAgaWYgKHNyY19jdHgtPmlu dGVybmFsLT5kZXJpdmVkX2RldmljZXNbaV0pIHsKPj4+Pj4gKyAgICAgICAgICAgIHRtcF9yZWYg PSBmaW5kX2Rlcml2ZWRfaHdkZXZpY2VfY3R4KHNyY19jdHgtCj4+PiBpbnRlcm5hbC0KPj4+Pj4g ZGVyaXZlZF9kZXZpY2VzW2ldLCB0eXBlKTsKPj4+Pj4gKyAgICAgICAgICAgIGlmICh0bXBfcmVm KQo+Pj4+PiArICAgICAgICAgICAgICAgIHJldHVybiB0bXBfcmVmOwo+Pj4+PiArICAgICAgICB9 Cj4+Pj4+ICsKPj4+Pj4gKyAgICByZXR1cm4gTlVMTDsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAr c3RhdGljIGludCBod2RldmljZV9jdHhfY3JlYXRlX2Rlcml2ZWQoQVZCdWZmZXJSZWYgKipkc3Rf cmVmX3B0ciwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gQVZIV0RldmljZVR5cGUgdHlwZSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFWQnVmZmVyUmVmICpzcmNfcmVmLAo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQVZEaWN0aW9uYXJ5ICpvcHRpb25zLCBpbnQKPj4+PiBm bGFncywKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBn ZXRfZXhpc3RpbmcpCj4+Pj4+ICAgICB7Cj4+Pj4+ICAgICAgICAgQVZCdWZmZXJSZWYgKmRzdF9y ZWYgPSBOVUxMLCAqdG1wX3JlZjsKPj4+Pj4gICAgICAgICBBVkhXRGV2aWNlQ29udGV4dCAqZHN0 X2N0eCwgKnRtcF9jdHg7Cj4+Pj4+IEBAIC02NjcsNiArNjkxLDE4IEBAIGludAo+Pj4+IGF2X2h3 ZGV2aWNlX2N0eF9jcmVhdGVfZGVyaXZlZF9vcHRzKEFWQnVmZmVyUmVmICoqZHN0X3JlZl9wdHIs Cj4+Pj4+ICAgICAgICAgICAgIHRtcF9yZWYgPSB0bXBfY3R4LT5pbnRlcm5hbC0+c291cmNlX2Rl dmljZTsKPj4+Pj4gICAgICAgICB9Cj4+Pj4+Cj4+Pj4+ICsgICAgaWYgKGdldF9leGlzdGluZykg ewo+Pj4+PiArICAgICAgICB0bXBfcmVmID0gZmluZF9kZXJpdmVkX2h3ZGV2aWNlX2N0eChzcmNf cmVmLCB0eXBlKTsKPj4+Pj4gKyAgICAgICAgaWYgKHRtcF9yZWYpIHsKPj4+Pj4gKyAgICAgICAg ICAgIGRzdF9yZWYgPSBhdl9idWZmZXJfcmVmKHRtcF9yZWYpOwo+Pj4+PiArICAgICAgICAgICAg aWYgKCFkc3RfcmVmKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9N RU0pOwo+Pj4+PiArICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPj4+Pj4gKyAgICAgICAgICAg IH0KPj4+Pj4gKyAgICAgICAgICAgIGdvdG8gZG9uZTsKPj4+Pj4gKyAgICAgICAgfQo+Pj4+PiAr ICAgIH0KPj4+Pj4gKwo+Pj4+PiAgICAgICAgIGRzdF9yZWYgPSBhdl9od2RldmljZV9jdHhfYWxs b2ModHlwZSk7Cj4+Pj4+ICAgICAgICAgaWYgKCFkc3RfcmVmKSB7Cj4+Pj4+ICAgICAgICAgICAg IHJldCA9IEFWRVJST1IoRU5PTUVNKTsKPj4+Pj4gQEAgLTY4OCw2ICs3MjQsMTMgQEAgaW50Cj4+ Pj4gYXZfaHdkZXZpY2VfY3R4X2NyZWF0ZV9kZXJpdmVkX29wdHMoQVZCdWZmZXJSZWYgKipkc3Rf cmVmX3B0ciwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9N RU0pOwo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4+Pj4+ICAgICAg ICAgICAgICAgICAgICAgfQo+Pj4+PiArICAgICAgICAgICAgICAgIGlmICghdG1wX2N0eC0+aW50 ZXJuYWwtPmRlcml2ZWRfZGV2aWNlc1t0eXBlXSkgewo+Pj4+Cj4+Pj4gSSB3b25kZXIgd2hldGhl ciB5b3Ugb25seSB3YW50IHRvIGRvIHRoaXMgd2hlbiB0aGUgdXNlciBtYWRlIHRoZQo+PiBuZXcK Pj4+PiBjYWxsLCBub3QgdGhlIG9sZCBvbmU/Cj4+Pj4KPj4+PiBUaGUgc2VtYW50aWNzIHdvdWxk IHBlcmhhcHMgZmVlbCBjbGVhcmVyIGFzICJnZXQgb3IgY3JlYXRlIHRoZQo+PiBzaGFyZWQKPj4+ PiBkZXJpdmVkIGRldmljZSIgcmF0aGVyIHRoYW4gImdldCB0aGUgZmlyc3QgZGV2aWNlIGRlcml2 ZWQgb3IgY3JlYXRlCj4+IGEKPj4+PiBuZXcgb25lIGlmIG5vdCIuCj4+Pgo+Pj4gSSd2ZSBiZWVu IHRoZXJlIGZvciBhIG1vbWVudCwgYW5kIHRoZW4gSSB0aG91Z2h0IHRoYXQgd2hlbiB0aGUgQVBJ Cj4+PiBjb25zdW1lciB3b3VsZCBtaXggQVBJIGNhbGxzLCBlLmcuIGZpcnN0IHdpdGhvdXQgJ2dl dCcgYW5kIHNlY29uZAo+Pj4gd2l0aCAnZ2V0JywgdGhlbiB0aGUgc2Vjb25kIGNhbGwgd291bGQg bm90IHByb2R1Y2UgdGhlIGV4cGVjdGVkCj4+PiByZXN1bHQuCj4+Pgo+Pj4gTGV0IG1lIGtub3cg d2hhdCB5b3UgdGhpbmssIEkgaGF2ZSBubyBzdHJvbmcgb3BpbmlvbiBhYm91dCB0aGlzLgo+Pgo+ PiBDYW4geW91IGV4cGxhaW4geW91ciBleGFtcGxlIGZ1cnRoZXI/Cj4gCj4gTWF5YmUgd2Ugc2hv dWxkIGdldCBjbGVhciBhYm91dCB3aGF0IHRoaXMgcGF0Y2hzZXQgZG9lcyBleGFjdGx5Lgo+IExl dCdzIGxvb2sgYXQgdGhlIGZvbGxvd2luZyBkZXJpdmF0aW9uIGNoYWluIG9mIGRldmljZXM6Cj4g Cj4gQQo+IOKUnOKUgCBYCj4g4pSCICDilJTilIAgWQo+IOKUnOKUgCBCCj4g4pSCICDilJTilIAg Qwo+IOKUlOKUgCBWCj4gICAgIOKUlOKUgCBXCj4gCj4gVGhlIG1lYW5pbmcgaXM6Cj4gCj4gLSBZ IGlzIGRlcml2ZWQgZnJvbSBYLCBYIGlzIGRlcml2ZWQgZnJvbSBBCj4gLSBDIGlzIGRlcml2ZWQg ZnJvbSBCLCBCIGlzIGRlcml2ZWQgZnJvbSBBCj4gLSBXIGlzIGRlcml2ZWQgZnJvbSBWLCBWIGlz IGRlcml2ZWQgZnJvbSBBCj4gCj4gSW4gdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLCBlYWNo IGRldmljZSAia25vd3MiIGl0cyBwYXJlbnQKPiAodmlhIHRoZSAnc291cmNlX2RldmljZScgZmll bGQpLgo+IAo+IFdoZW4geW91IGNhbGwgYXZfaHdkZXZpY2VfY3R4X2NyZWF0ZV9kZXJpdmVkKCkg YW5kIHNwZWNpZnkgIkMiCj4gYXMgdGhlIHNvdXJjZSBkZXZpY2UsIHRoZW4gaXQgd2lsbCBpdGVy YXRlIHRoZSB0cmVlIHVwd2FyZHMsCj4gc28gd2hlbiBCIGlzIG9mIHRoZSByZXF1ZXN0ZWQgdHlw ZSwgaXQgd2lsbCByZXR1cm4gQiBvciBpZgo+IEEgaXMgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLCBp dCB3aWxsIHJldHVybiBBLgo+IE90aGVyd2lzZSwgaXQgd2lsbCBjcmVhdGUgYSBuZXcgZGV2aWNl IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZQo+IGFuZCBzZXRzIEMgYXMgaXRzIHBhcmVudC4KPiAKPiBC dXQgaXQgZG9lc24ndCByZXR1cm4gWCwgWSwgViBvciBXICh3aGVuIGFueSB3b3VsZCBtYXRjaCB0 aGUKPiByZXF1ZXN0ZWQgdHlwZSkuCj4gCj4gVGhpcyBpcyB0aGUgY3VycmVudCBiZWhhdmlvci4K PiAKPiAKPiBXaGF0IHRoaXMgcGF0Y2hzZXQgZG9lcyBpcyB0aGF0IHdlIGFsc28gc3RvcmUgdGhl IGRlcml2ZWQKPiBjaGlsZHJlbiBmb3IgZWFjaCBkZXZpY2UgKGRlcml2ZWRfZGV2aWNlcyBhcnJh eSkuCj4gCj4gSW4gdGhlIGV4YW1wbGUgYWJvdmUsIGl0IG1lYW5zIGhhdCBBIGhhcyByZWZlcmVu Y2VzIHRvCj4gWCwgQiBhbmQgVi4gWCB0byBZLCBCIHRvIEMgYW5kIFYgdG8gVy4KPiAKPiBUaGUg YmVoYXZpb3Igb2YgdGhlIG5ldyBmdW5jdGlvbiBpcyBhcyBmb2xsb3dzOgo+IAo+IFdoZW4geW91 IGNhbGwgYXZfaHdkZXZpY2VfY3R4X2dldF9vcl9jcmVhdGVfZGVyaXZlZCgpIGFuZCBzcGVjaWZ5 ICJDIgo+IGFzIHRoZSBzb3VyY2UgZGV2aWNlLCB0aGVuIGl0IHdpbGwgaXRlcmF0ZSB0aGUgdHJl ZSB1cHdhcmRzLAo+IHNvIHdoZW4gQiBpcyBvZiB0aGUgcmVxdWVzdGVkIHR5cGUsIGl0IHdpbGwg cmV0dXJuIEIgb3IgaWYKPiBBIGlzIG9mIHRoZSByZXF1ZXN0ZWQgdHlwZSwgaXQgd2lsbCByZXR1 cm4gQSAobGlrZSBiZWZvcmUpLgo+IAo+IEFkZGl0aW9uYWxseSwgaXQgd2lsbCBhbHNvIGl0ZXJh dGUgYWxsIHRocm91Z2ggb3RoZXIgY2hpbGRyZW4KPiBvZiBCIGFuZCBvdGhlciBjaGlsZHJlbiBv ZiBBLiBXaGljaCBtZWFucyB0aGF0IGlmIFgsIFksIFYgb3IgVwo+IG1hdGNoZXMgdGhlIHJlcXVl c3RlZCB0eXBlLCBpdCB3b3VsZCByZXR1cm4gaXQuCgpObyBpdCBkb2Vzbid0PyAgWW91ciBuZXcg ZnVuY3Rpb24gZmluZF9kZXJpdmVkX2h3ZGV2aWNlX2N0eCgpIGlzIGNhbGxlZCBvbmx5IGZvciB0 aGUgb3JpZ2luYWwgc291cmNlIGRldmljZSwgYW5kIHJlY3Vyc2VzIGludG8gaXRzICh0cmFuc2l0 aXZlKSBjaGlsZHJlbi4gIEl0IGNhbid0IHJldHVybiBhbnkgb2YgWCwgWSwgViBvciBXIHdoZW4g c3RhcnRpbmcgZnJvbSBDLgoKPiBPdGhlcndpc2UsIGl0IHdpbGwgY3JlYXRlIGEgbmV3IGRldmlj ZSBvZiB0aGUgcmVxdWVzdGVkIHR5cGUKPiBhbmQgc2V0cyBDIGFzIGl0cyBwYXJlbnQuCj4gCj4g VGhpcyBpcyB0aGUgYmVoYXZpb3Igb2YgdGhlIG5ldyBmdW5jdGlvbi4KPiBBbGwgdGhhdCBpdCBj aGFuZ2VzIGlzIHRoYXQgaXQgc2VhcmNoZXMgdGhlIGZ1bGwgdHJlZSBpbnN0ZWFkCj4gb2YgdGhl IHBhcmVudHMgb25seS4KID4KPiBOb3cgYmFjayB0byB5b3VyIG9yaWdpbmFsIHF1ZXN0aW9uOgo+ IAo+Pj4+ICsgICAgICAgICAgICAgICAgaWYgKCF0bXBfY3R4LT5pbnRlcm5hbC0+ZGVyaXZlZF9k ZXZpY2VzW3R5cGVdKSB7Cj4+Pgo+Pj4gSSB3b25kZXIgd2hldGhlciB5b3Ugb25seSB3YW50IHRv IGRvIHRoaXMgd2hlbiB0aGUgdXNlciBtYWRlIHRoZSBuZXcKPj4+IGNhbGwsIG5vdCB0aGUgb2xk IG9uZT8KPj4+Cj4+PiBUaGUgc2VtYW50aWNzIHdvdWxkIHBlcmhhcHMgZmVlbCBjbGVhcmVyIGFz ICJnZXQgb3IgY3JlYXRlIHRoZSBzaGFyZWQKPj4+IGRlcml2ZWQgZGV2aWNlIiByYXRoZXIgdGhh biAiZ2V0IHRoZSBmaXJzdCBkZXZpY2UgZGVyaXZlZCBvciBjcmVhdGUgYQo+Pj4gbmV3IG9uZSBp ZiBub3QiLgo+IAo+IFRoZSBsaW5lIG9mIGNvZGUgeW91IGNvbW1lbnRlZCBvbiwgaXMgYWJvdXQg YWRkaW5nIGEgbmV3bHkgY3JlYXRlZAo+IGRlcml2ZWQgZGV2aWNlIHRvIHRoZSBjaGlsZCBjb2xs ZWN0aW9uIG9mIGl0cyBwYXJlbnQuCgpZZXMsIGV4YWN0bHkgLSBJJ20gc3VnZ2VzdGluZyBvbmx5 IHNoYXJpbmcgdGhlIGRldmljZSB3aGVuIGFza2VkIHRvIHNoYXJlIGRldmljZXMuCgo+Pj4gSSB3 b25kZXIgd2hldGhlciB5b3Ugb25seSB3YW50IHRvIGRvIHRoaXMgd2hlbiB0aGUgdXNlciBtYWRl IHRoZSBuZXcKPj4+IGNhbGwsIG5vdCB0aGUgb2xkIG9uZT8KPiAKPiBUaGUgZGlmZmVyZW5jZSBi ZXR3ZWVuIG9sZCBhbmQgbmV3IGlzIHRoYXQgb2xkIHNlYXJjaGVzIG9ubHkgcGFyZW50cwo+IGFu ZCBuZXcgc2VhcmNoZXMgdGhlIGZ1bGwgdHJlZS4KPiBCdXQgc2hvdWxkIGNhbGxpbmcgdGhlIG9s ZCBmdW5jdGlvbiBhbHNvIGNvbnRyb2wgd2hldGhlciBhIG5ld2x5IGNyZWF0ZWQKPiBkZXJpdmVk IGRldmljZSBpcyBhZGRlZCB0byB0aGUgY2hpbGQgY29sbGVjdGlvbiBvZiBpdHMgcGFyZW50Pwo+ IAo+IEl0IG1pZ2h0IGJlIGNvbmZ1c2luZyBiZWhhdmlvciB3aGVuIHlvdSBmaXJzdCBjYWxsIHRo ZSBvbGQgZnVuY3Rpb24KPiBhbmQgbGF0ZXIgY2FsbCB0aGUgbmV3IGZ1bmN0aW9uIGJ1dCB5b3Ug d291bGQgZ2V0IHRoZSBkZXZpY2Ugb25seQo+IHdoZW4gaXQncyBhIHBhcmVudCBidXQgbm90IHdo ZW4gaXQncyBhIGRvd24tdHJlZS1jaGlsZCBvZiBhbnkgcGFyZW50Lgo+IAo+IEFuZCB0aGF0J3Mg d2hlcmUgSSBzYWlkOgo+IAo+PiBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluaywgSSBoYXZlIG5v IHN0cm9uZyBvcGluaW9uIGFib3V0IHRoaXMuCj4gCj4gQmVzdCByZWdhcmRzLAo+IHNvZnR3b3Jr egotIE1hcmsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczov L2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJl LCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcu b3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=