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 3A45C466FA for ; Sat, 29 Jun 2024 19:35:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 901BB68D6F8; Sat, 29 Jun 2024 22:35:48 +0300 (EEST) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 019A068D6D2 for ; Sat, 29 Jun 2024 22:35:41 +0300 (EEST) Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-36743abace4so1782293f8f.1 for ; Sat, 29 Jun 2024 12:35:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719689740; x=1720294540; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:content-language:references :to:subject:from:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=LWljWsBn2cFp5H50Rhw5ErcxG4I6bF9Mxm0t9T096ik=; b=b3yU/MtEbdGqZydggos390LBv2Ag3lPGgGnNsxJP7ifalVkD/3/v2b9q9J4L9E9MwE CgoKcmaN5GIMhSZovqyHXFDqf3QXg6Fmam3KxF0983e/JZeLP7vzJXR03hicv8aToJlx qcRsSXP0RR7zTAV0+YBL+UrERZQxN3TCDMU4Pmq7xm8v93K4eDDaoDeDfL3tEAjP50J6 pXDGu0DsMNdFkk5XEGWrU0tieAhVP2JgQrtTNOPKajmqUN9PhnZTwq63rApj4SoIloF1 l6qredYoj8D2IHC1u1L64vIZJ27V2W+Y15ZoK81ZzvIDX9HFOIZbLptgfjFJOhegdXa/ pQgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719689740; x=1720294540; h=content-transfer-encoding:in-reply-to:content-language:references :to:subject:from:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LWljWsBn2cFp5H50Rhw5ErcxG4I6bF9Mxm0t9T096ik=; b=KAitAS68v59WN4OCYsptpI0FBpjtR4mFWgzu7ziitYesbC0jufn2lD4AiRxeI+5IiZ oVqE6mnnHblgY7d9+tyutevnUJ7eOrttDiOZCtxX9XwUZhwCF58LKYLHqkLTF/0P/huD 0yEU6KXoAqkkeVT0uBf85cYvpqNxG5P+PCIwd796HlQYJbeRZ8JubS2EAJL0XqGs1LgM 0G8w4N34HMf38/yMNKgg6J8+Iw+bnnm/vAC0Bp4Be43zVlqp0WAg7uWU0ijg9sQG35/C UruiIbFhCbSqlE1eB/yem7JBE/U8/9PvnteLF0mM3tN+3atspsfNsF+XA/k+quO3OmtN 0VMQ== X-Gm-Message-State: AOJu0YwxPRU9vNpyX10G+Rxz6sPvbq7oyUZGhhc0rtd1jC27pK7hUWm3 RJwoxNju5K53WB8KrdOOm1y3zwjpMaOO2ahkGcfzTdn0A1KcNlNaBS2DOA== X-Google-Smtp-Source: AGHT+IEK+gBEh5jZLDxi6AZA2UGgppMWHg09cU7UH20WNBYWhDFdhHVyZ/u/ALzGng/OxqlVBDfovg== X-Received: by 2002:adf:f188:0:b0:362:7b95:172c with SMTP id ffacd0b85a97d-36774f5fc30mr1815957f8f.8.1719689739852; Sat, 29 Jun 2024 12:35:39 -0700 (PDT) Received: from ?IPV6:2001:861:5102:3290:f88d:fc8b:a14:3fcb? ([2001:861:5102:3290:f88d:fc8b:a14:3fcb]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3675a0cd5f1sm5615350f8f.6.2024.06.29.12.35.39 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 29 Jun 2024 12:35:39 -0700 (PDT) Message-ID: <1f96eb24-1e09-4aed-bfdd-3fb8dff6d12c@gmail.com> Date: Sat, 29 Jun 2024 21:35:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: averne To: ffmpeg-devel@ffmpeg.org References: <000f9f24-a963-4a00-9a58-e78af043ee7b@jkqxz.net> Content-Language: en-US, fr In-Reply-To: <000f9f24-a963-4a00-9a58-e78af043ee7b@jkqxz.net> Subject: Re: [FFmpeg-devel] [PATCH 06/16] avutil: add nvtegra hwcontext 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: TGUgMDUvMDYvMjAyNCDDoCAyMjo0NywgTWFyayBUaG9tcHNvbiBhIMOpY3JpdCA6PiAKPiBPbiAz MC8wNS8yMDI0IDIwOjQzLCBhdmVybmUgd3JvdGU6Cj4+IFRoaXMgaW5jbHVkZXMgaHdkZXZpY2Ug YW5kIGh3ZnJhbWVzIG9iamVjdHMuCj4+IEFzIHRoZSBtdWx0aW1lZGlhIGVuZ2luZXMgd29yayB3 aXRoIHRpbGVkIHN1cmZhY2VzIChibG9jayBsaW5lYXIgaW4gbnZpZGlhIGphcmdvbiksIHR3byBm cmFtZSB0cmFuc2ZlciBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZC4KPj4gVGhlIGZpcnN0IG1ha2Vz IHVzZSBvZiB0aGUgVklDIHRvIHBlcmZvcm0gdGhlIGNvcHkuIFNpbmNlIHNvbWUgcmV2aXNpb25z IG9mIHRoZSBWSUMgKHN1Y2ggYXMgdGhlIG9uZSBmb3VuZCBpbiB0aGUgdGVncmEgWDEpIGRpZCBu b3Qgc3VwcG9ydCAxMCsgYml0IGZvcm1hdHMsIHRoZXNlIGdvIHRocm91Z2ggdHdvIHNlcGFyYXRl IGNvcHkgc3RlcHMgZm9yIHRoZSBsdW1hIGFuZCBjaHJvbWEgcGxhbmVzLgo+PiBUaGUgc2Vjb25k IG1ldGhvZCBjb3BpZXMgb24gdGhlIENQVSwgYW5kIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBpZiB0 aGUgVklDIGNvbnN0cmFpbnRzIGFyZSBub3Qgc2F0aXNmaWVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBhdmVybmUgPGF2ZXJuZTM4MUBnbWFpbC5jb20+Cj4+IC0tLQo+PiAgbGliYXZ1dGlsL01ha2Vm aWxlICAgICAgICAgICAgIHwgICA3ICstCj4+ICBsaWJhdnV0aWwvaHdjb250ZXh0LmMgICAgICAg ICAgfCAgIDQgKwo+PiAgbGliYXZ1dGlsL2h3Y29udGV4dC5oICAgICAgICAgIHwgICAxICsKPj4g IGxpYmF2dXRpbC9od2NvbnRleHRfaW50ZXJuYWwuaCB8ICAgMSArCj4+ICBsaWJhdnV0aWwvaHdj b250ZXh0X252dGVncmEuYyAgfCA4ODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4+ICBsaWJhdnV0aWwvaHdjb250ZXh0X252dGVncmEuaCAgfCAgODUgKysrKwo+PiAgNiBmaWxl cyBjaGFuZ2VkLCA5NzYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJhdnV0aWwvaHdjb250ZXh0X252dGVncmEuYwo+PiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2dXRpbC9od2NvbnRleHRfbnZ0ZWdyYS5oCj4+Cj4+IC4uLj4gKwo+PiArc3Rh dGljIGludCBudnRlZ3JhX3RyYW5zZmVyX2RhdGEoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCwgQVZG cmFtZSAqZHN0LCBjb25zdCBBVkZyYW1lICpzcmMpIHsKPj4gKyAgICBjb25zdCBBVkZyYW1lICpz d2ZyYW1lOwo+PiArICAgIGJvb2wgZnJvbTsKPj4gKyAgICBpbnQgbnVtX3BsYW5lcywgaTsKPj4g Kwo+PiArICAgIGZyb20gICAgPSAhZHN0LT5od19mcmFtZXNfY3R4Owo+PiArICAgIHN3ZnJhbWUg PSBmcm9tID8gZHN0IDogc3JjOwo+PiArCj4+ICsgICAgaWYgKHN3ZnJhbWUtPmh3X2ZyYW1lc19j dHgpCj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NZUyk7Cj4+ICsKPj4gKyAgICBudW1f cGxhbmVzID0gYXZfcGl4X2ZtdF9jb3VudF9wbGFuZXMoc3dmcmFtZS0+Zm9ybWF0KTsKPj4gKwo+ PiArICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcGxhbmVzOyArK2kpIHsKPj4gKyAgICAgICAgaWYg KCgodWludHB0cl90KXN3ZnJhbWUtPmRhdGFbaV0gJiAweGZmKSB8fCAoc3dmcmFtZS0+bGluZXNp emVbaV0gJiAweGZmKSkgewo+PiArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5J TkcsICJGcmFtZSBhZGRyZXNzL3BpdGNoIG5vdCBhbGlnbmVkIHRvIDI1NiwgIgo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgdG8gY3B1IHRy YW5zZmVyXG4iKTsKPj4gKyAgICAgICAgICAgIHJldHVybiBudnRlZ3JhX2NwdV90cmFuc2Zlcl9k YXRhKGN0eCwgZHN0LCBzcmMsIG51bV9wbGFuZXMsIGZyb20pOwo+Cj4gQXJlIHlvdSBkb2luZyBz b21ldGhpbmcgc29tZXdoZXJlIHRvIGF2b2lkIHRoaXMgY2FzZT8gIEl0IHNlZW1zIGxpa2UgaXQg c2hvdWxkIGJlIHRoZSBub3JtYWwgb25lIChnaXZlbiBhbGlnbm1lbnQgaXMgdHlwaWNhbGx5IHNl dCBzaWduZmljYW50bHkgbG93ZXIgdGhhbiAyNTYpLCBzbyB0aGlzIHdhcm5pbmcgd291bGQgYmUg dmVyeSBzcGFtbXkuCgpOb3RoaW5nIGlzIGRvbmUgb24gdGhlIEZGbXBlZyBzaWRlLiBJIGNvdWxk IHByaW50IHRoaXMgd2FybmluZyAKanVzdCBvbmNlIHBlciBmcmFtZXMgY29udGV4dC4KCj4+ICsg ICAgICAgIH0KPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1cm4gbnZ0ZWdyYV92aWNfdHJhbnNm ZXJfZGF0YShjdHgsIGRzdCwgc3JjLCBudW1fcGxhbmVzLCBmcm9tKTsKPj4gK30KPj4gKwo+PiAr Y29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9udnRlZ3JhID0gewo+PiArICAg IC50eXBlICAgICAgICAgICAgICAgICAgID0gQVZfSFdERVZJQ0VfVFlQRV9OVlRFR1JBLAo+PiAr ICAgIC5uYW1lICAgICAgICAgICAgICAgICAgID0gIm52dGVncmEiLAo+PiArCj4+ICsgICAgLmRl dmljZV9od2N0eF9zaXplICAgICAgPSBzaXplb2YoTlZUZWdyYURldmljZVByaXYpLAo+PiArICAg IC5kZXZpY2VfaHdjb25maWdfc2l6ZSAgID0gMCwKPj4gKyAgICAuZnJhbWVzX2h3Y3R4X3NpemUg ICAgICA9IDAsCj4+ICsKPj4gKyAgICAuZGV2aWNlX2NyZWF0ZSAgICAgICAgICA9ICZudnRlZ3Jh X2RldmljZV9jcmVhdGUsCj4+ICsgICAgLmRldmljZV9pbml0ICAgICAgICAgICAgPSAmbnZ0ZWdy YV9kZXZpY2VfaW5pdCwKPj4gKyAgICAuZGV2aWNlX3VuaW5pdCAgICAgICAgICA9ICZudnRlZ3Jh X2RldmljZV91bmluaXQsCj4+ICsKPj4gKyAgICAuZnJhbWVzX2dldF9jb25zdHJhaW50cyA9ICZu dnRlZ3JhX2ZyYW1lc19nZXRfY29uc3RyYWludHMsCj4+ICsgICAgLmZyYW1lc19pbml0ICAgICAg ICAgICAgPSAmbnZ0ZWdyYV9mcmFtZXNfaW5pdCwKPj4gKyAgICAuZnJhbWVzX3VuaW5pdCAgICAg ICAgICA9ICZudnRlZ3JhX2ZyYW1lc191bmluaXQsCj4+ICsgICAgLmZyYW1lc19nZXRfYnVmZmVy ICAgICAgPSAmbnZ0ZWdyYV9nZXRfYnVmZmVyLAo+PiArCj4+ICsgICAgLnRyYW5zZmVyX2dldF9m b3JtYXRzICAgPSAmbnZ0ZWdyYV90cmFuc2Zlcl9nZXRfZm9ybWF0cywKPj4gKyAgICAudHJhbnNm ZXJfZGF0YV90byAgICAgICA9ICZudnRlZ3JhX3RyYW5zZmVyX2RhdGEsCj4+ICsgICAgLnRyYW5z ZmVyX2RhdGFfZnJvbSAgICAgPSAmbnZ0ZWdyYV90cmFuc2Zlcl9kYXRhLAo+PiArCj4+ICsgICAg LnBpeF9mbXRzID0gKGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdFtdKSB7Cj4+ICsgICAgICAgIEFW X1BJWF9GTVRfTlZURUdSQSwKPj4gKyAgICAgICAgQVZfUElYX0ZNVF9OT05FLAo+PiArICAgIH0s Cj4+ICt9Owo+Cj4gV2hhdCBjb250cm9scyB3aGV0aGVyIGZyYW1lcyBhcmUgbGluZWFyIG9yIG5v dD8KPgo+IEl0IHNlZW1zIGxpa2UgdGhlIGxpbmVhciBjYXNlIGNvdWxkIGJlIGV4cG9zZWQgZGly ZWN0bHkgdG8gdGhlIHVzZXIgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHdyYXAgaXQgbGlrZSB0aGlz IC0gdGhlIGRlY29kZXIgY291bGQgcmV0dXJuIHJlYWQtb25seSBOVjEyIChvciB3aGF0ZXZlcikg ZnJhbWVzIGRpcmVjdGx5IGFuZCB0aGV5IHdvdWxkIHdvcmsgd2l0aCBvdGhlciBjb21wb25lbnRz LgoKTlZERUMgY2FuIG9ubHkgb3V0cHV0IGluIGJsb2NrIGxpbmVhciBmb3JtYXQgKHRpbGVkIGxh eW91dCkuIEknbSBub3QgCnZlcnkga2VlbiBvbiBleHBvc2luZyB0aGF0IGRhdGEsIGNvbnNpZGVy aW5nIGNhY2hlIG1hbmFnZW1lbnQgY2FuIGJlIApzb21ld2hhdCB0cmlja3kuIFR5cGljYWxseSwg YWZ0ZXIgYSBkZWNvZGUgb3BlcmF0aW9ucywgdGhlIENQVSBjYWNoZQptdXN0IGJlIGludmFsaWRh dGVkLiAKCj4+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdjb250ZXh0X252dGVncmEuaCBiL2xp YmF2dXRpbC9od2NvbnRleHRfbnZ0ZWdyYS5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGlu ZGV4IDAwMDAwMDAwMDAuLjhhMjM4M2QzMDQKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWJh dnV0aWwvaHdjb250ZXh0X252dGVncmEuaAo+PiBAQCAtMCwwICsxLDg1IEBACj4+ICsvKgo+PiAr ICogQ29weXJpZ2h0IChjKSAyMDI0IGF2ZXJuZSA8YXZlcm5lMzgxQGdtYWlsLmNvbT4KPj4gKyAq Cj4+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+ICsgKgo+PiArICogRkZtcGVn IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK Pj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cj4+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+PiArICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4gKyAqCj4+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ICsgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCj4+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ PiArICoKPj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCj4+ICsgKiB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAo+PiArICogNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KPj4g KyAqLwo+PiArCj4+ICsjaWZuZGVmIEFWVVRJTF9IV0NPTlRFWFRfTlZURUdSQV9ICj4+ICsjZGVm aW5lIEFWVVRJTF9IV0NPTlRFWFRfTlZURUdSQV9ICj4+ICsKPj4gKyNpbmNsdWRlIDxzdGRpbnQu aD4KPj4gKwo+PiArI2luY2x1ZGUgImh3Y29udGV4dC5oIgo+PiArI2luY2x1ZGUgImJ1ZmZlci5o Igo+PiArI2luY2x1ZGUgImZyYW1lLmgiCgpMZSAwNS8wNi8yMDI0IMOgIDIyOjQ3LCBNYXJrIFRo b21wc29uIGEgw6ljcml0IDoKPiBPbiAzMC8wNS8yMDI0IDIwOjQzLCBhdmVybmUgd3JvdGU6Cj4+ IFRoaXMgaW5jbHVkZXMgaHdkZXZpY2UgYW5kIGh3ZnJhbWVzIG9iamVjdHMuCj4+IEFzIHRoZSBt dWx0aW1lZGlhIGVuZ2luZXMgd29yayB3aXRoIHRpbGVkIHN1cmZhY2VzIChibG9jayBsaW5lYXIg aW4gbnZpZGlhIGphcmdvbiksIHR3byBmcmFtZSB0cmFuc2ZlciBtZXRob2RzIGFyZSBpbXBsZW1l bnRlZC4KPj4gVGhlIGZpcnN0IG1ha2VzIHVzZSBvZiB0aGUgVklDIHRvIHBlcmZvcm0gdGhlIGNv cHkuIFNpbmNlIHNvbWUgcmV2aXNpb25zIG9mIHRoZSBWSUMgKHN1Y2ggYXMgdGhlIG9uZSBmb3Vu ZCBpbiB0aGUgdGVncmEgWDEpIGRpZCBub3Qgc3VwcG9ydCAxMCsgYml0IGZvcm1hdHMsIHRoZXNl IGdvIHRocm91Z2ggdHdvIHNlcGFyYXRlIGNvcHkgc3RlcHMgZm9yIHRoZSBsdW1hIGFuZCBjaHJv bWEgcGxhbmVzLgo+PiBUaGUgc2Vjb25kIG1ldGhvZCBjb3BpZXMgb24gdGhlIENQVSwgYW5kIGlz IHVzZWQgYXMgYSBmYWxsYmFjayBpZiB0aGUgVklDIGNvbnN0cmFpbnRzIGFyZSBub3Qgc2F0aXNm aWVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBhdmVybmUgPGF2ZXJuZTM4MUBnbWFpbC5jb20+Cj4+ IC0tLQo+PiAgbGliYXZ1dGlsL01ha2VmaWxlICAgICAgICAgICAgIHwgICA3ICstCj4+ICBsaWJh dnV0aWwvaHdjb250ZXh0LmMgICAgICAgICAgfCAgIDQgKwo+PiAgbGliYXZ1dGlsL2h3Y29udGV4 dC5oICAgICAgICAgIHwgICAxICsKPj4gIGxpYmF2dXRpbC9od2NvbnRleHRfaW50ZXJuYWwuaCB8 ICAgMSArCj4+ICBsaWJhdnV0aWwvaHdjb250ZXh0X252dGVncmEuYyAgfCA4ODAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4+ICBsaWJhdnV0aWwvaHdjb250ZXh0X252dGVncmEu aCAgfCAgODUgKysrKwo+PiAgNiBmaWxlcyBjaGFuZ2VkLCA5NzYgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvaHdjb250ZXh0X252 dGVncmEuYwo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9od2NvbnRleHRfbnZ0ZWdy YS5oCj4+Cj4+IC4uLj4gKwo+PiArc3RhdGljIGludCBudnRlZ3JhX3RyYW5zZmVyX2RhdGEoQVZI V0ZyYW1lc0NvbnRleHQgKmN0eCwgQVZGcmFtZSAqZHN0LCBjb25zdCBBVkZyYW1lICpzcmMpIHsK Pj4gKyAgICBjb25zdCBBVkZyYW1lICpzd2ZyYW1lOwo+PiArICAgIGJvb2wgZnJvbTsKPj4gKyAg ICBpbnQgbnVtX3BsYW5lcywgaTsKPj4gKwo+PiArICAgIGZyb20gICAgPSAhZHN0LT5od19mcmFt ZXNfY3R4Owo+PiArICAgIHN3ZnJhbWUgPSBmcm9tID8gZHN0IDogc3JjOwo+PiArCj4+ICsgICAg aWYgKHN3ZnJhbWUtPmh3X2ZyYW1lc19jdHgpCj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVO T1NZUyk7Cj4+ICsKPj4gKyAgICBudW1fcGxhbmVzID0gYXZfcGl4X2ZtdF9jb3VudF9wbGFuZXMo c3dmcmFtZS0+Zm9ybWF0KTsKPj4gKwo+PiArICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcGxhbmVz OyArK2kpIHsKPj4gKyAgICAgICAgaWYgKCgodWludHB0cl90KXN3ZnJhbWUtPmRhdGFbaV0gJiAw eGZmKSB8fCAoc3dmcmFtZS0+bGluZXNpemVbaV0gJiAweGZmKSkgewo+PiArICAgICAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5JTkcsICJGcmFtZSBhZGRyZXNzL3BpdGNoIG5vdCBhbGln bmVkIHRvIDI1NiwgIgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJmYWxsaW5nIGJhY2sgdG8gY3B1IHRyYW5zZmVyXG4iKTsKPj4gKyAgICAgICAgICAgIHJldHVy biBudnRlZ3JhX2NwdV90cmFuc2Zlcl9kYXRhKGN0eCwgZHN0LCBzcmMsIG51bV9wbGFuZXMsIGZy b20pOwo+IAo+IEFyZSB5b3UgZG9pbmcgc29tZXRoaW5nIHNvbWV3aGVyZSB0byBhdm9pZCB0aGlz IGNhc2U/ICBJdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZSB0aGUgbm9ybWFsIG9uZSAoZ2l2ZW4g YWxpZ25tZW50IGlzIHR5cGljYWxseSBzZXQgc2lnbmZpY2FudGx5IGxvd2VyIHRoYW4gMjU2KSwg c28gdGhpcyB3YXJuaW5nIHdvdWxkIGJlIHZlcnkgc3BhbW15Lgo+IAo+PiArICAgICAgICB9Cj4+ ICsgICAgfQo+PiArCj4+ICsgICAgcmV0dXJuIG52dGVncmFfdmljX3RyYW5zZmVyX2RhdGEoY3R4 LCBkc3QsIHNyYywgbnVtX3BsYW5lcywgZnJvbSk7Cj4+ICt9Cj4+ICsKPj4gK2NvbnN0IEhXQ29u dGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfbnZ0ZWdyYSA9IHsKPj4gKyAgICAudHlwZSAgICAg ICAgICAgICAgICAgICA9IEFWX0hXREVWSUNFX1RZUEVfTlZURUdSQSwKPj4gKyAgICAubmFtZSAg ICAgICAgICAgICAgICAgICA9ICJudnRlZ3JhIiwKPj4gKwo+PiArICAgIC5kZXZpY2VfaHdjdHhf c2l6ZSAgICAgID0gc2l6ZW9mKE5WVGVncmFEZXZpY2VQcml2KSwKPj4gKyAgICAuZGV2aWNlX2h3 Y29uZmlnX3NpemUgICA9IDAsCj4+ICsgICAgLmZyYW1lc19od2N0eF9zaXplICAgICAgPSAwLAo+ PiArCj4+ICsgICAgLmRldmljZV9jcmVhdGUgICAgICAgICAgPSAmbnZ0ZWdyYV9kZXZpY2VfY3Jl YXRlLAo+PiArICAgIC5kZXZpY2VfaW5pdCAgICAgICAgICAgID0gJm52dGVncmFfZGV2aWNlX2lu aXQsCj4+ICsgICAgLmRldmljZV91bmluaXQgICAgICAgICAgPSAmbnZ0ZWdyYV9kZXZpY2VfdW5p bml0LAo+PiArCj4+ICsgICAgLmZyYW1lc19nZXRfY29uc3RyYWludHMgPSAmbnZ0ZWdyYV9mcmFt ZXNfZ2V0X2NvbnN0cmFpbnRzLAo+PiArICAgIC5mcmFtZXNfaW5pdCAgICAgICAgICAgID0gJm52 dGVncmFfZnJhbWVzX2luaXQsCj4+ICsgICAgLmZyYW1lc191bmluaXQgICAgICAgICAgPSAmbnZ0 ZWdyYV9mcmFtZXNfdW5pbml0LAo+PiArICAgIC5mcmFtZXNfZ2V0X2J1ZmZlciAgICAgID0gJm52 dGVncmFfZ2V0X2J1ZmZlciwKPj4gKwo+PiArICAgIC50cmFuc2Zlcl9nZXRfZm9ybWF0cyAgID0g Jm52dGVncmFfdHJhbnNmZXJfZ2V0X2Zvcm1hdHMsCj4+ICsgICAgLnRyYW5zZmVyX2RhdGFfdG8g ICAgICAgPSAmbnZ0ZWdyYV90cmFuc2Zlcl9kYXRhLAo+PiArICAgIC50cmFuc2Zlcl9kYXRhX2Zy b20gICAgID0gJm52dGVncmFfdHJhbnNmZXJfZGF0YSwKPj4gKwo+PiArICAgIC5waXhfZm10cyA9 IChjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXRbXSkgewo+PiArICAgICAgICBBVl9QSVhfRk1UX05W VEVHUkEsCj4+ICsgICAgICAgIEFWX1BJWF9GTVRfTk9ORSwKPj4gKyAgICB9LAo+PiArfTsKPiAK PiBXaGF0IGNvbnRyb2xzIHdoZXRoZXIgZnJhbWVzIGFyZSBsaW5lYXIgb3Igbm90Pwo+IAo+IEl0 IHNlZW1zIGxpa2UgdGhlIGxpbmVhciBjYXNlIGNvdWxkIGJlIGV4cG9zZWQgZGlyZWN0bHkgdG8g dGhlIHVzZXIgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHdyYXAgaXQgbGlrZSB0aGlzIC0gdGhlIGRl Y29kZXIgY291bGQgcmV0dXJuIHJlYWQtb25seSBOVjEyIChvciB3aGF0ZXZlcikgZnJhbWVzIGRp cmVjdGx5IGFuZCB0aGV5IHdvdWxkIHdvcmsgd2l0aCBvdGhlciBjb21wb25lbnRzLgo+IAo+PiBk aWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9udnRlZ3JhLmggYi9saWJhdnV0aWwvaHdj b250ZXh0X252dGVncmEuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAw MDAwLi44YTIzODNkMzA0Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbGliYXZ1dGlsL2h3Y29u dGV4dF9udnRlZ3JhLmgKPj4gQEAgLTAsMCArMSw4NSBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdo dCAoYykgMjAyNCBhdmVybmUgPGF2ZXJuZTM4MUBnbWFpbC5jb20+Cj4+ICsgKgo+PiArICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+PiArICoKPj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+ICsgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo+PiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCj4+ICsgKgo+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiArICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+PiArICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4gKyAqCj4+ICsg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhbG9uZwo+PiArICogd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKPj4gKyAqIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCj4+ICsgKi8KPj4gKwo+ PiArI2lmbmRlZiBBVlVUSUxfSFdDT05URVhUX05WVEVHUkFfSAo+PiArI2RlZmluZSBBVlVUSUxf SFdDT05URVhUX05WVEVHUkFfSAo+PiArCj4+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4+ICsKPj4g KyNpbmNsdWRlICJod2NvbnRleHQuaCIKPj4gKyNpbmNsdWRlICJidWZmZXIuaCIKPj4gKyNpbmNs dWRlICJmcmFtZS5oIgo+PiArI2luY2x1ZGUgInBpeGZtdC5oIgo+PiArCj4+ICsjaW5jbHVkZSAi bnZ0ZWdyYS5oIgo+PiArCj4+ICsvKgo+PiArICogRW5jb2RlIGEgaGFyZHdhcmUgcmV2aXNpb24g aW50byBhIHZlcnNpb24gbnVtYmVyCj4+ICsgKi8KPj4gKyNkZWZpbmUgQVZfTlZURUdSQV9FTkNP REVfUkVWKG1haiwgbWluKSAoKChtYWogJiAweGZmKSA8PCA4KSB8IChtaW4gJiAweGZmKSkKPj4g Kwo+PiArLyoKPj4gKyAqIERlY29kZSBhIHZlcnNpb24gbnVtYmVyCj4+ICsgKi8KPj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBhdl9udnRlZ3JhX2RlY29kZV9yZXYoaW50IHJldiwgaW50ICptYWosIGlu dCAqbWluKSB7Cj4+ICsgICAgKm1haiA9IChyZXYgPj4gOCkgJiAweGZmOwo+PiArICAgICptaW4g PSAocmV2ID4+IDApICYgMHhmZjsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBAZmlsZQo+PiAr ICogQVBJLXNwZWNpZmljIGhlYWRlciBmb3IgQVZfSFdERVZJQ0VfVFlQRV9OVlRFR1JBLgo+PiAr ICoKPj4gKyAqIEZvciB1c2VyLWFsbG9jYXRlZCBwb29scywgQVZIV0ZyYW1lc0NvbnRleHQucG9v bCBtdXN0IHJldHVybiBBVkJ1ZmZlclJlZnMKPj4gKyAqIHdpdGggdGhlIGRhdGEgcG9pbnRlciBz ZXQgdG8gYW4gQVZOVlRlZ3JhTWFwLgo+PiArICovCj4+ICsKPj4gK3R5cGVkZWYgc3RydWN0IEFW TlZUZWdyYURldmljZUNvbnRleHQgewo+PiArICAgIC8qCj4+ICsgICAgICogSGFyZHdhcmUgbXVs dGltZWRpYSBlbmdpbmVzCj4+ICsgICAgICovCj4+ICsgICAgQVZOVlRlZ3JhQ2hhbm5lbCBudmRl Y19jaGFubmVsLCBudmVuY19jaGFubmVsLCBudmpwZ19jaGFubmVsLCB2aWNfY2hhbm5lbDsKPiAK PiBEb2VzIGEgdXNlciBuZWVkIHRvIHN1cHBseSBhbGwgb2YgdGhlc2Ugd2hlbiBtYWtpbmcgYSBk ZXZpY2U/Cj4gCj4+ICsKPj4gKyAgICAvKgo+PiArICAgICAqIEhhcmR3YXJlIHJldmlzaW9ucyBm b3IgYXNzb2NpYXRlZCBlbmdpbmVzLCBvciAwIGlmIGludmFsaWQKPj4gKyAgICAgKi8KPj4gKyAg ICBpbnQgbnZkZWNfdmVyc2lvbiwgbnZlbmNfdmVyc2lvbiwgbnZqcGdfdmVyc2lvbiwgdmljX3Zl cnNpb247Cj4gCj4gV2h5IGRvZXMgYSB1c2VyIHNldHRpbmcgdXAgYSBkZXZpY2UgY29udGV4dCBu ZWVkIHRvIHN1cHBseSB0aGUgdmVyc2lvbiBudW1iZXJzIGZvciBlYWNoIHRoaW5nPwo+IAo+PiAr fSBBVk5WVGVncmFEZXZpY2VDb250ZXh0Owo+PiArCj4+ICt0eXBlZGVmIHN0cnVjdCBBVk5WVGVn cmFGcmFtZSB7Cj4+ICsgICAgLyoKPj4gKyAgICAgKiBSZWZlcmVuY2UgdG8gYW4gQVZOVlRlZ3Jh TWFwIG9iamVjdAo+PiArICAgICAqLwo+PiArICAgIEFWQnVmZmVyUmVmICptYXBfcmVmOwo+PiAr fSBBVk5WVGVncmFGcmFtZTsKPiAKPiBXaGF0IGlzIHRoZSBpbmRpcmVjdGlvbiBkb2luZyBoZXJl PyAgQ2FuJ3QgaXQgcmV0dXJuIHRoZSBidWZmZXIgaW5zaWRlIHRoaXMgc3RydWN0dXJlIGluc3Rl YWQgb2YgbWFraW5nIGFuIGludGVybWVkaWF0ZSBzdHJ1Y3R1cmU/Cj4gCj4+ICsKPj4gKy8qCj4+ ICsgKiBIZWxwZXIgdG8gcmV0cmlldmUgYSBtYXAgb2JqZWN0IGZyb20gdGhlIGNvcnJlc3BvbmRp bmcgZnJhbWUKPj4gKyAqLwo+PiArc3RhdGljIGlubGluZSBBVk5WVGVncmFNYXAgKmF2X252dGVn cmFfZnJhbWVfZ2V0X2ZidWZfbWFwKGNvbnN0IEFWRnJhbWUgKmZyYW1lKSB7Cj4+ICsgICAgcmV0 dXJuIChBVk5WVGVncmFNYXAgKikoKEFWTlZUZWdyYUZyYW1lICopZnJhbWUtPmJ1ZlswXS0+ZGF0 YSktPm1hcF9yZWYtPmRhdGE7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBDb252ZXJ0cyBhIHBp eGVsIGZvcm1hdCB0byB0aGUgZXF1aXZhbGVudCBjb2RlIGZvciB0aGUgVklDIGVuZ2luZQo+PiAr ICovCj4+ICtpbnQgYXZfbnZ0ZWdyYV9waXhmbXRfdG9fdmljKGVudW0gQVZQaXhlbEZvcm1hdCBm bXQpOwo+PiArCj4+ICsjZW5kaWYgLyogQVZVVElMX0hXQ09OVEVYVF9OVlRFR1JBX0ggKi8KPiAK PiBUaGUgbWl4IG9mIG5vcm1hbCBpbXBsZW1lbnRhdGlvbiBjb2RlIGFuZCB3ZWlyZCBzcGVjaWZp YyBkZXRhaWwgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIGlzIHByZXR0eSBuYXN0eS4gIEl0 IGRvZXMgc2VlbSBsaWtlIGV4cG9ydGluZyBtb3JlIG9mIHRoaXMgaW50byBhIHNlcGFyYXRlIGxp YnJhcnkgcmF0aGVyIHRoYW4gZW1iZWRkaW5nIGl0IGluIGZmbXBlZyB3b3VsZCBiZSBhIGdvb2Qg aWRlYS4KPiAKPiBUaGFua3MsCj4gCj4gLSBNYXJrCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZt cGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWwKPiAKPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5z dWJzY3JpYmUiLgo+PiArI2luY2x1ZGUgInBpeGZtdC5oIgo+PiArCj4+ICsjaW5jbHVkZSAibnZ0 ZWdyYS5oIgo+PiArCj4+ICsvKgo+PiArICogRW5jb2RlIGEgaGFyZHdhcmUgcmV2aXNpb24gaW50 byBhIHZlcnNpb24gbnVtYmVyCj4+ICsgKi8KPj4gKyNkZWZpbmUgQVZfTlZURUdSQV9FTkNPREVf UkVWKG1haiwgbWluKSAoKChtYWogJiAweGZmKSA8PCA4KSB8IChtaW4gJiAweGZmKSkKPj4gKwo+ PiArLyoKPj4gKyAqIERlY29kZSBhIHZlcnNpb24gbnVtYmVyCj4+ICsgKi8KPj4gK3N0YXRpYyBp bmxpbmUgdm9pZCBhdl9udnRlZ3JhX2RlY29kZV9yZXYoaW50IHJldiwgaW50ICptYWosIGludCAq bWluKSB7Cj4+ICsgICAgKm1haiA9IChyZXYgPj4gOCkgJiAweGZmOwo+PiArICAgICptaW4gPSAo cmV2ID4+IDApICYgMHhmZjsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBAZmlsZQo+PiArICog QVBJLXNwZWNpZmljIGhlYWRlciBmb3IgQVZfSFdERVZJQ0VfVFlQRV9OVlRFR1JBLgo+PiArICoK Pj4gKyAqIEZvciB1c2VyLWFsbG9jYXRlZCBwb29scywgQVZIV0ZyYW1lc0NvbnRleHQucG9vbCBt dXN0IHJldHVybiBBVkJ1ZmZlclJlZnMKPj4gKyAqIHdpdGggdGhlIGRhdGEgcG9pbnRlciBzZXQg dG8gYW4gQVZOVlRlZ3JhTWFwLgo+PiArICovCj4+ICsKPj4gK3R5cGVkZWYgc3RydWN0IEFWTlZU ZWdyYURldmljZUNvbnRleHQgewo+PiArICAgIC8qCj4+ICsgICAgICogSGFyZHdhcmUgbXVsdGlt ZWRpYSBlbmdpbmVzCj4+ICsgICAgICovCj4+ICsgICAgQVZOVlRlZ3JhQ2hhbm5lbCBudmRlY19j aGFubmVsLCBudmVuY19jaGFubmVsLCBudmpwZ19jaGFubmVsLCB2aWNfY2hhbm5lbDsKPgo+IERv ZXMgYSB1c2VyIG5lZWQgdG8gc3VwcGx5IGFsbCBvZiB0aGVzZSB3aGVuIG1ha2luZyBhIGRldmlj ZT8KClRoZXNlIGFyZSBmaWxsZWQgb3V0IGJ5IHRoZSBsaWJyYXJ5IHdoZW4gY3JlYXRpbmcgdGhl IGhhcmR3YXJlIGRldmljZS4gCgo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBIYXJkd2FyZSBy ZXZpc2lvbnMgZm9yIGFzc29jaWF0ZWQgZW5naW5lcywgb3IgMCBpZiBpbnZhbGlkCj4+ICsgICAg ICovCj4+ICsgICAgaW50IG52ZGVjX3ZlcnNpb24sIG52ZW5jX3ZlcnNpb24sIG52anBnX3ZlcnNp b24sIHZpY192ZXJzaW9uOwo+Cj4gV2h5IGRvZXMgYSB1c2VyIHNldHRpbmcgdXAgYSBkZXZpY2Ug Y29udGV4dCBuZWVkIHRvIHN1cHBseSB0aGUgdmVyc2lvbiBudW1iZXJzIGZvciBlYWNoIHRoaW5n PwoKU2FtZSBhcyBhYm92ZSwgdGhlIHZlcnNpb24gaXMgZmlsbGVkIHdoZW4gY3JlYXRpbmcgdGhl IGNvbnRleHQuCktub3dsZWRnZSBvZiB0aGUgaGFyZHdhcmUgcmV2aXNpb24gaXMgdXNlZnVsIHdo ZW4gZGV0ZXJtaW5pbmcgaGFyZHdhcmUKY2FwYWJpbGl0aWVzLgoKPj4gK30gQVZOVlRlZ3JhRGV2 aWNlQ29udGV4dDsKPj4gKwo+PiArdHlwZWRlZiBzdHJ1Y3QgQVZOVlRlZ3JhRnJhbWUgewo+PiAr ICAgIC8qCj4+ICsgICAgICogUmVmZXJlbmNlIHRvIGFuIEFWTlZUZWdyYU1hcCBvYmplY3QKPj4g KyAgICAgKi8KPj4gKyAgICBBVkJ1ZmZlclJlZiAqbWFwX3JlZjsKPj4gK30gQVZOVlRlZ3JhRnJh bWU7Cj4KPiBXaGF0IGlzIHRoZSBpbmRpcmVjdGlvbiBkb2luZyBoZXJlPyAgQ2FuJ3QgaXQgcmV0 dXJuIHRoZSBidWZmZXIgaW5zaWRlIHRoaXMgc3RydWN0dXJlIGluc3RlYWQgb2YgbWFraW5nIGFu IGludGVybWVkaWF0ZSBzdHJ1Y3R1cmU/CgpUaGF0J3MgYW4gYXJ0aWZhY3Qgb2YgYW4gb3B0aW1p emF0aW9uIHJlZ2FyZGluZyBteSBtcHYgZ3JhcGhpY3MgCmJhY2tlbmQuClNpbmNlIG1hcHBpbmcv dW5tYXBwaW5nIGRhdGEgaW4gdGhlIEdQVSBpcyBzb3J0IG9mIGV4cGVuc2l2ZSAoZ21tdSAKY29u ZmlndXJhdGlvbiksIHRoZSBtcHYgbWFwcGVyIHdvdWxkIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhl IGZyYW1lIApvYmplY3QgdG8gYXZvaWQgY29uc3RhbnRseSBkb2luZyBtYXBwaW5nIG9wZXJhdGlv bnMgb24gdGhlIHNhbWUgCm1lbW9yeSByYW5nZXMuCkknbGwgcmVtb3ZlIHRoYXQuCgo+PiArCj4+ ICsvKgo+PiArICogSGVscGVyIHRvIHJldHJpZXZlIGEgbWFwIG9iamVjdCBmcm9tIHRoZSBjb3Jy ZXNwb25kaW5nIGZyYW1lCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUgQVZOVlRlZ3JhTWFwICph dl9udnRlZ3JhX2ZyYW1lX2dldF9mYnVmX21hcChjb25zdCBBVkZyYW1lICpmcmFtZSkgewo+PiAr ICAgIHJldHVybiAoQVZOVlRlZ3JhTWFwICopKChBVk5WVGVncmFGcmFtZSAqKWZyYW1lLT5idWZb MF0tPmRhdGEpLT5tYXBfcmVmLT5kYXRhOwo+PiArfQo+PiArCj4+ICsvKgo+PiArICogQ29udmVy dHMgYSBwaXhlbCBmb3JtYXQgdG8gdGhlIGVxdWl2YWxlbnQgY29kZSBmb3IgdGhlIFZJQyBlbmdp bmUKPj4gKyAqLwo+PiAraW50IGF2X252dGVncmFfcGl4Zm10X3RvX3ZpYyhlbnVtIEFWUGl4ZWxG b3JtYXQgZm10KTsKPj4gKwo+PiArI2VuZGlmIC8qIEFWVVRJTF9IV0NPTlRFWFRfTlZURUdSQV9I ICovCj4KPiBUaGUgbWl4IG9mIG5vcm1hbCBpbXBsZW1lbnRhdGlvbiBjb2RlIGFuZCB3ZWlyZCBz cGVjaWZpYyBkZXRhaWwgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIGlzIHByZXR0eSBuYXN0 eS4gIEl0IGRvZXMgc2VlbSBsaWtlIGV4cG9ydGluZyBtb3JlIG9mIHRoaXMgaW50byBhIHNlcGFy YXRlIGxpYnJhcnkgcmF0aGVyIHRoYW4gZW1iZWRkaW5nIGl0IGluIGZmbXBlZyB3b3VsZCBiZSBh IGdvb2QgaWRlYS4KPgo+IFRoYW5rcywKPgo+IC0gTWFyawpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zm bXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu Cg==