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 922D34234F for ; Fri, 17 Dec 2021 18:12:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EA1AB68AE9A; Fri, 17 Dec 2021 20:12:27 +0200 (EET) Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 159F268A98A for ; Fri, 17 Dec 2021 20:12:21 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 89927E64DC for ; Fri, 17 Dec 2021 19:12:20 +0100 (CET) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 37I5KZtolRwj for ; Fri, 17 Dec 2021 19:12:17 +0100 (CET) Received: from iq (iq [217.27.212.140]) by iq.passwd.hu (Postfix) with ESMTPS id 7B07AE622E for ; Fri, 17 Dec 2021 19:12:17 +0100 (CET) Date: Fri, 17 Dec 2021 19:12:17 +0100 (CET) From: Marton Balint To: FFmpeg development discussions and patches In-Reply-To: Message-ID: References: <20211203095742.16108-1-marc-antoine.arnaud@luminvent.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 1/2] avformat/mxf: support MCA audio information 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: CgpPbiBGcmksIDE3IERlYyAyMDIxLCBNYXJjLUFudG9pbmUgQVJOQVVEIHdyb3RlOgoKPiBIaSBh bGwsCj4KPiBDYW4gSSBoYXZlIGFuIHVwZGF0ZSBvbiB0aGlzIHBhdGNoIHN1Ym1pc3Npb24gPwo+ IElzIHNvbWV0aGluZyByZXF1aXJlZCB0byBiZSBkb25lIGJlZm9yZSBpdCBjYW4gYmUgbWVyZ2Vk ID8KCk5ldyBjaGFubmVsIGxheW91dCBBUEkgaXMgb24gaXRzIHdheSwgd2hpY2ggbWFrZXMgaW4t ZGVtdXhlciBjaGFubmVsIApyZW9yZGVyaW5nIHVuZWVkZWQuIFRoZXJlZm9yZSB0aGUgcmVvcmRl cmluZyBvcHRpb24gc2hvdWxkIG5vdCBiZSBhZGRlZCAKYXMgaXQgaXMgaW4gdGhpcyBwYXRjaC4g SSBjYW4gcmV3b3JrIHRoZSBwYXRjaCBhZnRlciB0aGUgY2hhbm5lbCBsYXlvdXQgCkFQSSBpcyBp bi4gKHNob3VsZCBoYXBwZW4gaW4gYSBjb3VwbGUgb2Ygd2Vla3MgYXQgbW9zdCkuCgpSZWdhcmRz LApNYXJ0b24KCj4KPiBUaGFua3MgeW91LAo+IE1hcmMtQW50b2luZQo+Cj4KPiBMZSB2ZW4uIDMg ZMOpYy4gMjAyMSDDoCAxMDo1NywgTWFyYy1BbnRvaW5lIEFybmF1ZAo+IDxtYXJjLWFudG9pbmUu YXJuYXVkQGx1bWludmVudC5jb20+IGEgw6ljcml0IDoKPj4KPj4gLS0tCj4+ICBkb2MvZGVtdXhl cnMudGV4aSAgICAgfCAgMTAgKysKPj4gIGxpYmF2Zm9ybWF0L214Zi5oICAgICB8ICAgMyArCj4+ ICBsaWJhdmZvcm1hdC9teGZkZWMuYyAgfCAzMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCj4+ICBsaWJhdmZvcm1hdC92ZXJzaW9uLmggfCAgIDIgKy0KPj4gIDQg ZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Cj4+IGRp ZmYgLS1naXQgYS9kb2MvZGVtdXhlcnMudGV4aSBiL2RvYy9kZW11eGVycy50ZXhpCj4+IGluZGV4 IGNhYjhhNzA3MmMuLjIzYjY3NTM2MDIgMTAwNjQ0Cj4+IC0tLSBhL2RvYy9kZW11eGVycy50ZXhp Cj4+ICsrKyBiL2RvYy9kZW11eGVycy50ZXhpCj4+IEBAIC03NzAsNiArNzcwLDE2IEBAIE1KUEVH IHN0cmVhbS4gVHVybmluZyB0aGlzIG9wdGlvbiBvbiBieSBzZXR0aW5nIGl0IHRvIDEgd2lsbCBy ZXN1bHQgaW4gYSBzdHJpY3RlCj4+ICBvZiB0aGUgYm91bmRhcnkgdmFsdWUuCj4+ICBAZW5kIHRh YmxlCj4+Cj4+ICtAc2VjdGlvbiBteGYKPj4gKwo+PiArTVhGIGRlbXV4ZXIuCj4+ICsKPj4gK0B0 YWJsZSBAb3B0aW9uCj4+ICsKPj4gK0BpdGVtIC1za2lwX2F1ZGlvX3Jlb3JkZXJpbmcgQHZhcnti b29sfQo+PiArVGhpcyBvcHRpb24gd2lsbCBkaXNhYmxlIHRoZSBhdWRpbyByZW9yZGVyaW5nIGJh c2VkIG9uIE11bHRpLUNoYW5uZWwgQXVkaW8gKE1DQSkgbGFiZWxsaW5nIChTTVBURSBTVC0zNzct NCkuCj4+ICtAZW5kIHRhYmxlCj4+ICsKPj4gIEBzZWN0aW9uIHJhd3ZpZGVvCj4+Cj4+ICBSYXcg dmlkZW8gZGVtdXhlci4KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L214Zi5oIGIvbGliYXZm b3JtYXQvbXhmLmgKPj4gaW5kZXggZmU5YzUyNzMyYy4uZDUzYTE2ZGY1MSAxMDA2NDQKPj4gLS0t IGEvbGliYXZmb3JtYXQvbXhmLmgKPj4gKysrIGIvbGliYXZmb3JtYXQvbXhmLmgKPj4gQEAgLTUw LDYgKzUwLDkgQEAgZW51bSBNWEZNZXRhZGF0YVNldFR5cGUgewo+PiAgICAgIFRhZ2dlZFZhbHVl LAo+PiAgICAgIFRhcGVEZXNjcmlwdG9yLAo+PiAgICAgIEFWQ1N1YkRlc2NyaXB0b3IsCj4+ICsg ICAgQXVkaW9DaGFubmVsTGFiZWxTdWJEZXNjcmlwdG9yLAo+PiArICAgIFNvdW5kZmllbGRHcm91 cExhYmVsU3ViRGVzY3JpcHRvciwKPj4gKyAgICBHcm91cE9mU291bmRmaWVsZEdyb3Vwc0xhYmVs U3ViRGVzY3JpcHRvciwKPj4gIH07Cj4+Cj4+ICBlbnVtIE1YRkZyYW1lTGF5b3V0IHsKPj4gZGlm ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKPj4g aW5kZXggYWY5ZDMzZjc5Ni4uNmUxZGE3NTU0MiAxMDA2NDQKPj4gLS0tIGEvbGliYXZmb3JtYXQv bXhmZGVjLmMKPj4gKysrIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKPj4gQEAgLTUxLDExICs1MSwx NCBAQAo+PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5o Igo+PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9tYXRoZW1hdGljcy5oIgo+PiAgI2luY2x1ZGUgImxp YmF2Y29kZWMvYnl0ZXN0cmVhbS5oIgo+PiArI2luY2x1ZGUgImxpYmF2Y29kZWMvaW50ZXJuYWwu aCIKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaCIKPj4gICNpbmNsdWRl ICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCj4+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3BhcnNl dXRpbHMuaCIKPj4gICNpbmNsdWRlICJsaWJhdnV0aWwvdGltZWNvZGUuaCIKPj4gICNpbmNsdWRl ICJsaWJhdnV0aWwvb3B0LmgiCj4+ICAjaW5jbHVkZSAiYXZmb3JtYXQuaCIKPj4gKyNpbmNsdWRl ICJhdmxhbmd1YWdlLmgiCj4+ICAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPj4gICNpbmNsdWRlICJt eGYuaCIKPj4KPj4gQEAgLTE3Nyw2ICsxODAsOCBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4+ICAgICAg aW50IGJvZHlfc2lkOwo+PiAgICAgIE1YRldyYXBwaW5nU2NoZW1lIHdyYXBwaW5nOwo+PiAgICAg IGludCBlZGl0X3VuaXRzX3Blcl9wYWNrZXQ7IC8qIGhvdyBtYW55IGVkaXQgdW5pdHMgdG8gcmVh ZCBhdCBhIHRpbWUgKFBDTSwgQ2xpcFdyYXBwZWQpICovCj4+ICsgICAgaW50IHJlcXVpcmVfcmVv cmRlcmluZzsKPj4gKyAgICBpbnQgY2hhbm5lbF9vcmRlcmluZ1tGRl9TQU5FX05CX0NIQU5ORUxT XTsKPj4gIH0gTVhGVHJhY2s7Cj4+Cj4+ICB0eXBlZGVmIHN0cnVjdCBNWEZEZXNjcmlwdG9yIHsK Pj4gQEAgLTIwNSw2ICsyMTAsOCBAQCB0eXBlZGVmIHN0cnVjdCBNWEZEZXNjcmlwdG9yIHsKPj4g ICAgICB1bnNpZ25lZCBpbnQgdmVydF9zdWJzYW1wbGluZzsKPj4gICAgICBVSUQgKmZpbGVfZGVz Y3JpcHRvcnNfcmVmczsKPj4gICAgICBpbnQgZmlsZV9kZXNjcmlwdG9yc19jb3VudDsKPj4gKyAg ICBVSUQgKnN1Yl9kZXNjcmlwdG9yc19yZWZzOwo+PiArICAgIGludCBzdWJfZGVzY3JpcHRvcnNf Y291bnQ7Cj4+ICAgICAgaW50IGxpbmtlZF90cmFja19pZDsKPj4gICAgICB1aW50OF90ICpleHRy YWRhdGE7Cj4+ICAgICAgaW50IGV4dHJhZGF0YV9zaXplOwo+PiBAQCAtMjE3LDYgKzIyNCwxOCBA QCB0eXBlZGVmIHN0cnVjdCBNWEZEZXNjcmlwdG9yIHsKPj4gICAgICBzaXplX3QgY29sbF9zaXpl Owo+PiAgfSBNWEZEZXNjcmlwdG9yOwo+Pgo+PiArdHlwZWRlZiBzdHJ1Y3QgTVhGTUNBU3ViRGVz Y3JpcHRvciB7Cj4+ICsgICAgTVhGTWV0YWRhdGFTZXQgbWV0YTsKPj4gKyAgICBVSUQgdWlkOwo+ PiArICAgIFVJRCBtY2FfbGlua19pZDsKPj4gKyAgICBVSUQgc291bmRmaWVsZF9ncm91cF9saW5r X2lkOwo+PiArICAgIFVJRCAqZ3JvdXBfb2Zfc291bmRmaWVsZF9ncm91cHNfbGlua19pZF9yZWZz Owo+PiArICAgIGludCBncm91cF9vZl9zb3VuZGZpZWxkX2dyb3Vwc19saW5rX2lkX2NvdW50Owo+ PiArICAgIFVJRCBtY2FfbGFiZWxfZGljdGlvbmFyeV9pZDsKPj4gKyAgICBpbnQgbWNhX2NoYW5u ZWxfaWQ7Cj4+ICsgICAgY2hhciAqbGFuZ3VhZ2U7Cj4+ICt9IE1YRk1DQVN1YkRlc2NyaXB0b3I7 Cj4+ICsKPj4gIHR5cGVkZWYgc3RydWN0IE1YRkluZGV4VGFibGVTZWdtZW50IHsKPj4gICAgICBN WEZNZXRhZGF0YVNldCBtZXRhOwo+PiAgICAgIGludCBlZGl0X3VuaXRfYnl0ZV9jb3VudDsKPj4g QEAgLTI5MCw2ICszMDksNyBAQCB0eXBlZGVmIHN0cnVjdCBNWEZDb250ZXh0IHsKPj4gICAgICBp bnQgbmJfaW5kZXhfdGFibGVzOwo+PiAgICAgIE1YRkluZGV4VGFibGUgKmluZGV4X3RhYmxlczsK Pj4gICAgICBpbnQgZWlhNjA4X2V4dHJhY3Q7Cj4+ICsgICAgaW50IHNraXBfYXVkaW9fcmVvcmRl cmluZzsKPj4gIH0gTVhGQ29udGV4dDsKPj4KPj4gIC8qIE5PVEU6IGtsdl9vZmZzZXQgaXMgbm90 IHNldCAoLTEpIGZvciBsb2NhbCBrZXlzICovCj4+IEBAIC0zMTEsNiArMzMxLDcgQEAgc3RhdGlj IGNvbnN0IHVpbnQ4X3QgbXhmX3N5c3RlbV9pdGVtX2tleV9jcFtdICAgICAgICAgICAgICA9IHsg MHgwNiwweDBlLDB4MmIsMHgKPj4gIHN0YXRpYyBjb25zdCB1aW50OF90IG14Zl9zeXN0ZW1faXRl bV9rZXlfZ2NbXSAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUz LDB4MDEsMHgwMSwweDBkLDB4MDEsMHgwMywweDAxLDB4MTQgfTsKPj4gIHN0YXRpYyBjb25zdCB1 aW50OF90IG14Zl9rbHZfa2V5W10gICAgICAgICAgICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgw ZSwweDJiLDB4MzQgfTsKPj4gIHN0YXRpYyBjb25zdCB1aW50OF90IG14Zl9hcHBsZV9jb2xsX3By ZWZpeFtdICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4 MDEsMHgwZSwweDBlLDB4MjAsMHgwNCwweDAxLDB4MDUsMHgwMywweDAxIH07Cj4+ICsKPj4gIC8q IGNvbXBsZXRlIGtleXMgdG8gbWF0Y2ggKi8KPj4gIHN0YXRpYyBjb25zdCB1aW50OF90IG14Zl9j cnlwdG9fc291cmNlX2NvbnRhaW5lcl91bFtdICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQs MHgwMSwweDAxLDB4MDEsMHgwOSwweDA2LDB4MDEsMHgwMSwweDAyLDB4MDIsMHgwMCwweDAwLDB4 MDAgfTsKPj4gIHN0YXRpYyBjb25zdCB1aW50OF90IG14Zl9lbmNyeXB0ZWRfdHJpcGxldF9rZXlb XSAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDA0LDB4MDEsMHgwNyww eDBkLDB4MDEsMHgwMywweDAxLDB4MDIsMHg3ZSwweDAxLDB4MDAgfTsKPj4gQEAgLTMyMyw2ICsz NDQsMTcgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX2luZGlyZWN0X3ZhbHVlX3V0ZjE2YmVb XSAgICAgICAgICA9IHsgMHg0MiwweDAxLDB4MTAsMHgKPj4gIHN0YXRpYyBjb25zdCB1aW50OF90 IG14Zl9hcHBsZV9jb2xsX21heF9jbGxbXSAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJi LDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDBlLDB4MjAsMHgwNCwweDAxLDB4MDUsMHgwMyww eDAxLDB4MDEgfTsKPj4gIHN0YXRpYyBjb25zdCB1aW50OF90IG14Zl9hcHBsZV9jb2xsX21heF9m YWxsW10gICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEs MHgwZSwweDBlLDB4MjAsMHgwNCwweDAxLDB4MDUsMHgwMywweDAxLDB4MDIgfTsKPj4KPj4gK3N0 YXRpYyBjb25zdCB1aW50OF90IG14Zl9tY2FfbGFiZWxfZGljdGlvbmFyeV9pZFtdICAgICAgICAg PSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgw NywweDAxLDB4MDEsMHgwMCwweDAwLDB4MDAgfTsKPj4gK3N0YXRpYyBjb25zdCB1aW50OF90IG14 Zl9tY2FfdGFnX3N5bWJvbFtdICAgICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4 MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgwNywweDAxLDB4MDIsMHgwMCwweDAw LDB4MDAgfTsKPj4gK3N0YXRpYyBjb25zdCB1aW50OF90IG14Zl9tY2FfdGFnX25hbWVbXSAgICAg ICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgw ZSwweDAxLDB4MDMsMHgwNywweDAxLDB4MDMsMHgwMCwweDAwLDB4MDAgfTsKPj4gK3N0YXRpYyBj b25zdCB1aW50OF90IG14Zl9ncm91cF9vZl9zb3VuZGZpZWxkX2dyb3Vwc19saW5rX2lkW10gPSB7 IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgwNyww eDAxLDB4MDQsMHgwMCwweDAwLDB4MDAgfTsKPj4gK3N0YXRpYyBjb25zdCB1aW50OF90IG14Zl9t Y2FfbGlua19pZFtdICAgICAgICAgICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQs MHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgwNywweDAxLDB4MDUsMHgwMCwweDAwLDB4 MDAgfTsKPj4gK3N0YXRpYyBjb25zdCB1aW50OF90IG14Zl9tY2FfY2hhbm5lbF9pZFtdICAgICAg ICAgICAgICAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSww eDAxLDB4MDMsMHgwNCwweDBhLDB4MDAsMHgwMCwweDAwLDB4MDAgfTsKPj4gK3N0YXRpYyBjb25z dCB1aW50OF90IG14Zl9zb3VuZGZpZWxkX2dyb3VwX2xpbmtfaWRbXSAgICAgICAgPSB7IDB4MDYs MHgwZSwweDJiLDB4MzQsMHgwMSwweDAxLDB4MDEsMHgwZSwweDAxLDB4MDMsMHgwNywweDAxLDB4 MDYsMHgwMCwweDAwLDB4MDAgfTsKPj4gK3N0YXRpYyBjb25zdCB1aW50OF90IG14Zl9tY2FfcmZj NTY0Nl9zcG9rZW5fbGFuZ3VhZ2VbXSAgICAgPSB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMSww eDAxLDB4MDEsMHgwZCwweDAzLDB4MDEsMHgwMSwweDAyLDB4MDMsMHgxNSwweDAwLDB4MDAgfTsK Pj4gKwo+PiArc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXhmX3N1Yl9kZXNjcmlwdG9yW10gICAgICAg ICAgICAgICAgICA9IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAxLDB4MDEsMHgwMSwweDA5LDB4 MDYsMHgwMSwweDAxLDB4MDQsMHgwNiwweDEwLDB4MDAsMHgwMCB9Owo+PiArCj4+ICBzdGF0aWMg Y29uc3QgdWludDhfdCBteGZfbWFzdGVyaW5nX2Rpc3BsYXlfcHJlZml4WzEzXSAgICAgID0geyBG Rl9NWEZfTWFzdGVyaW5nRGlzcGxheV9QUkVGSVggfTsKPj4gIHN0YXRpYyBjb25zdCB1aW50OF90 IG14Zl9tYXN0ZXJpbmdfZGlzcGxheV91bHNbNF1bMTZdID0gewo+PiAgICAgIEZGX01YRl9NYXN0 ZXJpbmdEaXNwbGF5UHJpbWFyaWVzLAo+PiBAQCAtMzQzLDYgKzM3NSwxMyBAQCBzdGF0aWMgdm9p ZCBteGZfZnJlZV9tZXRhZGF0YXNldChNWEZNZXRhZGF0YVNldCAqKmN0eCwgaW50IGZyZWVjdHgp Cj4+ICAgICAgICAgIGF2X2ZyZWVwKCYoKE1YRkRlc2NyaXB0b3IgKikqY3R4KS0+bWFzdGVyaW5n KTsKPj4gICAgICAgICAgYXZfZnJlZXAoJigoTVhGRGVzY3JpcHRvciAqKSpjdHgpLT5jb2xsKTsK Pj4gICAgICAgICAgYXZfZnJlZXAoJigoTVhGRGVzY3JpcHRvciAqKSpjdHgpLT5maWxlX2Rlc2Ny aXB0b3JzX3JlZnMpOwo+PiArICAgICAgICBhdl9mcmVlcCgmKChNWEZEZXNjcmlwdG9yICopKmN0 eCktPnN1Yl9kZXNjcmlwdG9yc19yZWZzKTsKPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsgICAgY2Fz ZSBBdWRpb0NoYW5uZWxMYWJlbFN1YkRlc2NyaXB0b3I6Cj4+ICsgICAgY2FzZSBTb3VuZGZpZWxk R3JvdXBMYWJlbFN1YkRlc2NyaXB0b3I6Cj4+ICsgICAgY2FzZSBHcm91cE9mU291bmRmaWVsZEdy b3Vwc0xhYmVsU3ViRGVzY3JpcHRvcjoKPj4gKyAgICAgICAgYXZfZnJlZXAoJigoTVhGTUNBU3Vi RGVzY3JpcHRvciAqKSpjdHgpLT5sYW5ndWFnZSk7Cj4+ICsgICAgICAgIGF2X2ZyZWVwKCYoKE1Y Rk1DQVN1YkRlc2NyaXB0b3IgKikqY3R4KS0+Z3JvdXBfb2Zfc291bmRmaWVsZF9ncm91cHNfbGlu a19pZF9yZWZzKTsKPj4gICAgICAgICAgYnJlYWs7Cj4+ICAgICAgY2FzZSBTZXF1ZW5jZToKPj4g ICAgICAgICAgYXZfZnJlZXAoJigoTVhGU2VxdWVuY2UgKikqY3R4KS0+c3RydWN0dXJhbF9jb21w b25lbnRzX3JlZnMpOwo+PiBAQCAtOTA2LDYgKzk0NSwzMCBAQCBzdGF0aWMgaW50IG14Zl9yZWFk X3N0cm9uZ19yZWZfYXJyYXkoQVZJT0NvbnRleHQgKnBiLCBVSUQgKipyZWZzLCBpbnQgKmNvdW50 KQo+PiAgICAgIHJldHVybiAwOwo+PiAgfQo+Pgo+PiArc3RhdGljIGlubGluZSBpbnQgbXhmX3Jl YWRfdXNfYXNjaWlfc3RyaW5nKEFWSU9Db250ZXh0ICpwYiwgaW50IHNpemUsIGNoYXIqKiBzdHIp Cj4+ICt7Cj4+ICsgICAgaW50IHJldDsKPj4gKyAgICBzaXplX3QgYnVmX3NpemU7Cj4+ICsKPj4g KyAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+IElOVF9NQVggLSAxKQo+PiArICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOwo+PiArCj4+ICsgICAgYnVmX3NpemUgPSBzaXplICsgMTsKPj4g KyAgICBhdl9mcmVlKCpzdHIpOwo+PiArICAgICpzdHIgPSBhdl9tYWxsb2MoYnVmX3NpemUpOwo+ PiArICAgIGlmICghKnN0cikKPj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4g Kwo+PiArICAgIHJldCA9IGF2aW9fZ2V0X3N0cihwYiwgc2l6ZSwgKnN0ciwgYnVmX3NpemUpOwo+ PiArCj4+ICsgICAgaWYgKHJldCA8IDApIHsKPj4gKyAgICAgICAgYXZfZnJlZXAoc3RyKTsKPj4g KyAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1cm4gcmV0Owo+ PiArfQo+PiArCj4+ICBzdGF0aWMgaW5saW5lIGludCBteGZfcmVhZF91dGYxNl9zdHJpbmcoQVZJ T0NvbnRleHQgKnBiLCBpbnQgc2l6ZSwgY2hhcioqIHN0ciwgaW50IGJlKQo+PiAgewo+PiAgICAg IGludCByZXQ7Cj4+IEBAIC0xMzYwLDExICsxNDIzLDQwIEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRf Z2VuZXJpY19kZXNjcmlwdG9yKHZvaWQgKmFyZywgQVZJT0NvbnRleHQgKnBiLCBpbnQgdGFnLCBp bnQKPj4gICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLT5jb2xsLT5NYXhGQUxMID0gYXZpb19y YjE2KHBiKTsKPj4gICAgICAgICAgICAgIH0KPj4gICAgICAgICAgfQo+PiArCj4+ICsgICAgICAg IGlmIChJU19LTFZfS0VZKHVpZCwgbXhmX3N1Yl9kZXNjcmlwdG9yKSkKPj4gKyAgICAgICAgICAg IHJldHVybiBteGZfcmVhZF9zdHJvbmdfcmVmX2FycmF5KHBiLCAmZGVzY3JpcHRvci0+c3ViX2Rl c2NyaXB0b3JzX3JlZnMsICZkZXNjcmlwdG9yLT5zdWJfZGVzY3JpcHRvcnNfY291bnQpOwo+PiAr Cj4+ICAgICAgICAgIGJyZWFrOwo+PiAgICAgIH0KPj4gICAgICByZXR1cm4gMDsKPj4gIH0KPj4K Pj4gK3N0YXRpYyBpbnQgbXhmX3JlYWRfbWNhX3N1Yl9kZXNjcmlwdG9yKHZvaWQgKmFyZywgQVZJ T0NvbnRleHQgKnBiLCBpbnQgdGFnLCBpbnQgc2l6ZSwgVUlEIHVpZCwgaW50NjRfdCBrbHZfb2Zm c2V0KQo+PiArewo+PiArICAgIE1YRk1DQVN1YkRlc2NyaXB0b3IgKm1jYV9zdWJfZGVzY3JpcHRv ciA9IGFyZzsKPj4gKwo+PiArICAgIGlmIChJU19LTFZfS0VZKHVpZCwgbXhmX21jYV9sYWJlbF9k aWN0aW9uYXJ5X2lkKSkKPj4gKyAgICAgICAgYXZpb19yZWFkKHBiLCBtY2Ffc3ViX2Rlc2NyaXB0 b3ItPm1jYV9sYWJlbF9kaWN0aW9uYXJ5X2lkLCAxNik7Cj4+ICsKPj4gKyAgICBpZiAoSVNfS0xW X0tFWSh1aWQsIG14Zl9tY2FfbGlua19pZCkpCj4+ICsgICAgICAgIGF2aW9fcmVhZChwYiwgbWNh X3N1Yl9kZXNjcmlwdG9yLT5tY2FfbGlua19pZCwgMTYpOwo+PiArCj4+ICsgICAgaWYgKElTX0tM Vl9LRVkodWlkLCBteGZfc291bmRmaWVsZF9ncm91cF9saW5rX2lkKSkKPj4gKyAgICAgICAgYXZp b19yZWFkKHBiLCBtY2Ffc3ViX2Rlc2NyaXB0b3ItPnNvdW5kZmllbGRfZ3JvdXBfbGlua19pZCwg MTYpOwo+PiArCj4+ICsgICAgaWYgKElTX0tMVl9LRVkodWlkLCBteGZfZ3JvdXBfb2Zfc291bmRm aWVsZF9ncm91cHNfbGlua19pZCkpCj4+ICsgICAgICAgIHJldHVybiBteGZfcmVhZF9zdHJvbmdf cmVmX2FycmF5KHBiLCAmbWNhX3N1Yl9kZXNjcmlwdG9yLT5ncm91cF9vZl9zb3VuZGZpZWxkX2dy b3Vwc19saW5rX2lkX3JlZnMsICZtY2Ffc3ViX2Rlc2NyaXB0b3ItPmdyb3VwX29mX3NvdW5kZmll bGRfZ3JvdXBzX2xpbmtfaWRfY291bnQpOwo+PiArCj4+ICsgICAgaWYgKElTX0tMVl9LRVkodWlk LCBteGZfbWNhX2NoYW5uZWxfaWQpKQo+PiArICAgICAgICBtY2Ffc3ViX2Rlc2NyaXB0b3ItPm1j YV9jaGFubmVsX2lkID0gYXZpb19yYjMyKHBiKTsKPj4gKwo+PiArICAgIGlmIChJU19LTFZfS0VZ KHVpZCwgbXhmX21jYV9yZmM1NjQ2X3Nwb2tlbl9sYW5ndWFnZSkpCj4+ICsgICAgICAgIHJldHVy biBteGZfcmVhZF91c19hc2NpaV9zdHJpbmcocGIsIHNpemUsICZtY2Ffc3ViX2Rlc2NyaXB0b3It Pmxhbmd1YWdlKTsKPj4gKwo+PiArICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICBzdGF0aWMg aW50IG14Zl9yZWFkX2luZGlyZWN0X3ZhbHVlKHZvaWQgKmFyZywgQVZJT0NvbnRleHQgKnBiLCBp bnQgc2l6ZSkKPj4gIHsKPj4gICAgICBNWEZUYWdnZWRWYWx1ZSAqdGFnZ2VkX3ZhbHVlID0gYXJn Owo+PiBAQCAtMTQ5NCw2ICsxNTg2LDUwIEBAIHN0YXRpYyBjb25zdCBNWEZDb2RlY1VMIG14Zl9k YXRhX2Vzc2VuY2VfY29udGFpbmVyX3Vsc1tdID0gewo+PiAgICAgIHsgeyAweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwIH0sICAwLCBBVl9DT0RFQ19JRF9OT05FIH0sCj4+ICB9Owo+Pgo+PiArdHlwZWRl ZiBzdHJ1Y3QgTVhGQ2hhbm5lbE9yZGVyaW5nVUwgewo+PiArICAgIFVJRCB1aWQ7Cj4+ICsgICAg dWludDY0X3QgbGF5b3V0X21hc2s7Cj4+ICsgICAgZW51bSBBVkF1ZGlvU2VydmljZVR5cGUgc2Vy dmljZV90eXBlOwo+PiArfSBNWEZDaGFubmVsT3JkZXJpbmdVTDsKPj4gKwo+PiArc3RhdGljIGNv bnN0IE1YRkNoYW5uZWxPcmRlcmluZ1VMIG14Zl9jaGFubmVsX29yZGVyaW5nW10gPSB7Cj4+ICsg ICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIs MHgwMSwweDAxLDB4MDAsMHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hfRlJPTlRfTEVGVCwgICAgICAg ICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBMZWZ0Cj4+ICsgICAgeyB7IDB4 MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDAy LDB4MDAsMHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hfRlJPTlRfUklHSFQsICAgICAgICAgICBBVl9B VURJT19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBSaWdodAo+PiArICAgIHsgeyAweDA2LDB4MGUs MHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgwMywweDAwLDB4 MDAsMHgwMCwweDAwIH0sIEFWX0NIX0ZST05UX0NFTlRFUiwgICAgICAgICAgQVZfQVVESU9fU0VS VklDRV9UWVBFX01BSU4gfSwgLy8gQ2VudGVyCj4+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4 MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDA0LDB4MDAsMHgwMCwweDAw LDB4MDAgfSwgQVZfQ0hfTE9XX0ZSRVFVRU5DWSwgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZ UEVfTUFJTiB9LCAvLyBMb3cgRnJlcXVlbmN5IEVmZmVjdHMKPj4gKyAgICB7IHsgMHgwNiwweDBl LDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MDUsMHgwMCww eDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9TSURFX0xFRlQsICAgICAgICAgICAgIEFWX0FVRElPX1NF UlZJQ0VfVFlQRV9NQUlOIH0sIC8vIExlZnQgU3Vycm91bmQKPj4gKyAgICB7IHsgMHgwNiwweDBl LDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MDYsMHgwMCww eDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9TSURFX1JJR0hULCAgICAgICAgICAgIEFWX0FVRElPX1NF UlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IFN1cnJvdW5kCj4+ICsgICAgeyB7IDB4MDYsMHgw ZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDA3LDB4MDAs MHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hfU0lERV9MRUZULCAgICAgICAgICAgICBBVl9BVURJT19T RVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBMZWZ0IFNpZGUgU3Vycm91bmQKPj4gKyAgICB7IHsgMHgw NiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MDgs MHgwMCwweDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9TSURFX1JJR0hULCAgICAgICAgICAgIEFWX0FV RElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IFNpZGUgU3Vycm91bmQKPj4gKyAgICB7 IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAx LDB4MDksMHgwMCwweDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9CQUNLX0xFRlQsICAgICAgICAgICAg IEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIExlZnQgUmVhciBTdXJyb3VuZAo+PiAr ICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAy LDB4MDEsMHgwYSwweDAwLDB4MDAsMHgwMCwweDAwIH0sIEFWX0NIX0JBQ0tfUklHSFQsICAgICAg ICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gUmlnaHQgUmVhciBTdXJyb3Vu ZAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgw MywweDAyLDB4MDEsMHgwYiwweDAwLDB4MDAsMHgwMCwweDAwIH0sIEFWX0NIX0ZST05UX0xFRlRf T0ZfQ0VOVEVSLCAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gTGVmdCBDZW50ZXIK Pj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMs MHgwMiwweDAxLDB4MGMsMHgwMCwweDAwLDB4MDAsMHgwMCB9LCBBVl9DSF9GUk9OVF9SSUdIVF9P Rl9DRU5URVIsIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IENlbnRlcgo+ PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMyww eDAyLDB4MDEsMHgwZCwweDAwLDB4MDAsMHgwMCwweDAwIH0sIEFWX0NIX0JBQ0tfQ0VOVEVSLCAg ICAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gQ2VudGVyIFN1cnJvdW5k Cj4+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAz LDB4MDIsMHgwMSwweDBlLDB4MDAsMHgwMCwweDAwLDB4MDAgfSwgQVZfQ0hfRlJPTlRfQ0VOVEVS LCAgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfVklTVUFMTFlfSU1QQUlSRUQgfSwgLy8g SGVhcmluZyBpbXBhaXJlZCBhdWRpbyBjaGFubmVsCj4+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJi LDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDBmLDB4MDAsMHgwMCww eDAwLDB4MDAgfSwgQVZfQ0hfRlJPTlRfQ0VOVEVSLCAgICAgICAgICBBVl9BVURJT19TRVJWSUNF X1RZUEVfSEVBUklOR19JTVBBSVJFRCB9LCAvLyBWaXN1YWxseSBpbXBhaXJlZCBuYXJyYXRpdmUg YXVkaW8gY2hhbm5lbAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSww eDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4MDEsMHgwMCwweDAwIH0sIEFWX0NI X1RPUF9GUk9OVF9MRUZULCAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8g TGVmdCBIZWlnaHQKPj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgw MSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDAyLDB4MDAsMHgwMCB9LCBBVl9DSF9U T1BfRlJPTlRfUklHSFQsICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJp Z2h0IEhlaWdodAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAx LDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4MDMsMHgwMCwweDAwIH0sIEFWX0NIX1RP UF9GUk9OVF9DRU5URVIsICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gQ2Vu dGVyIEhlaWdodAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAx LDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4MDQsMHgwMCwweDAwIH0sIEFWX0NIX1RP UF9TSURFX0xFRlQsICAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gTGVm dCBTdXJyb3VuZCBIZWlnaHQKPj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4 MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDA1LDB4MDAsMHgwMCB9LCBB Vl9DSF9UT1BfU0lERV9SSUdIVCwgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0s IC8vIFJpZ2h0IFN1cnJvdW5kIEhlaWdodAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0 LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4MDYsMHgwMCww eDAwIH0sIEFWX0NIX1RPUF9TSURFX0xFRlQsICAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBF X01BSU4gfSwgLy8gTGVmdCBTaWRlIFN1cnJvdW5kIEhlaWdodAo+PiArICAgIHsgeyAweDA2LDB4 MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAx LDB4MDcsMHgwMCwweDAwIH0sIEFWX0NIX1RPUF9TSURFX1JJR0hULCAgICAgICAgQVZfQVVESU9f U0VSVklDRV9UWVBFX01BSU4gfSwgLy8gUmlnaHQgU2lkZSBTdXJyb3VuZCBIZWlnaHQKPj4gKyAg ICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiww eDAxLDB4MzAsMHgwMSwweDA4LDB4MDAsMHgwMCB9LCBBVl9DSF9UT1BfQkFDS19MRUZULCAgICAg ICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIExlZnQgUmVhciBTdXJyb3VuZCBI ZWlnaHQKPj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBk LDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDA5LDB4MDAsMHgwMCB9LCBBVl9DSF9UT1BfQkFD S19SSUdIVCwgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IFJl YXIgU3Vycm91bmQgSGVpZ2h0Cj4+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwNCww eDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgwYSwweDAwLDB4MDAgfSwg QVZfQ0hfVE9QX1NJREVfTEVGVCwgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZUEVfTUFJTiB9 LCAvLyBMZWZ0IFRvcCBTdXJyb3VuZAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4 MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEsMHgzMCwweDAxLDB4MGIsMHgwMCwweDAw IH0sIEFWX0NIX1RPUF9TSURFX1JJR0hULCAgICAgICAgQVZfQVVESU9fU0VSVklDRV9UWVBFX01B SU4gfSwgLy8gUmlnaHQgVG9wIFN1cnJvdW5kCj4+ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4 MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgwYywweDAw LDB4MDAgfSwgQVZfQ0hfVE9QX0NFTlRFUiwgICAgICAgICAgICBBVl9BVURJT19TRVJWSUNFX1RZ UEVfTUFJTiB9LCAvLyBUb3AgU3Vycm91bmQKPj4gKyAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgz NCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAsMHgwMSwweDBkLDB4MDAs MHgwMCB9LCBBVl9DSF9MT1dfRlJFUVVFTkNZLCAgICAgICAgIEFWX0FVRElPX1NFUlZJQ0VfVFlQ RV9NQUlOIH0sIC8vIExlZnQgRnJvbnQgU3Vid29vZmVyCj4+ICsgICAgeyB7IDB4MDYsMHgwZSww eDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4MDEsMHgw ZSwweDAwLDB4MDAgfSwgQVZfQ0hfTE9XX0ZSRVFVRU5DWV8yLCAgICAgICBBVl9BVURJT19TRVJW SUNFX1RZUEVfTUFJTiB9LCAvLyBSaWdodCBGcm9udCBTdWJ3b29mZXIKPj4gKyAgICB7IHsgMHgw NiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAs MHgwMSwweDBmLDB4MDAsMHgwMCB9LCBBVl9DSF9UT1BfQkFDS19DRU5URVIsICAgICAgIEFWX0FV RElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIENlbnRlciBSZWFyIEhlaWdodAo+PiArICAgIHsg eyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDQsMHgwMSwweDAxLDB4MGQsMHgwMywweDAyLDB4MDEs MHgzMCwweDAxLDB4MTAsMHgwMCwweDAwIH0sIEFWX0NIX0JBQ0tfQ0VOVEVSLCAgICAgICAgICAg QVZfQVVESU9fU0VSVklDRV9UWVBFX01BSU4gfSwgLy8gQ2VudGVyIFJlYXIKPj4gKyAgICB7IHsg MHgwNiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4 MzAsMHgwMSwweDExLDB4MDAsMHgwMCB9LCBBVl9DSF9CT1RUT01fRlJPTlRfTEVGVCwgICAgIEFW X0FVRElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIExlZnQgQmVsb3cKPj4gKyAgICB7IHsgMHgw NiwweDBlLDB4MmIsMHgzNCwweDA0LDB4MDEsMHgwMSwweDBkLDB4MDMsMHgwMiwweDAxLDB4MzAs MHgwMSwweDEyLDB4MDAsMHgwMCB9LCBBVl9DSF9CT1RUT01fRlJPTlRfUklHSFQsICAgIEFWX0FV RElPX1NFUlZJQ0VfVFlQRV9NQUlOIH0sIC8vIFJpZ2h0IEJlbG93Cj4+ICsgICAgeyB7IDB4MDYs MHgwZSwweDJiLDB4MzQsMHgwNCwweDAxLDB4MDEsMHgwZCwweDAzLDB4MDIsMHgwMSwweDMwLDB4 MDEsMHgxMywweDAwLDB4MDAgfSwgQVZfQ0hfQk9UVE9NX0ZST05UX0NFTlRFUiwgICBBVl9BVURJ T19TRVJWSUNFX1RZUEVfTUFJTiB9LCAvLyBDZW50ZXIgQmVsb3cKPj4gKyAgICB7IHsgMHgwMCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCB9LCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0FVRElP X1NFUlZJQ0VfVFlQRV9OQiB9LAo+PiArfTsKPj4gKwo+PiAgc3RhdGljIE1YRldyYXBwaW5nU2No ZW1lIG14Zl9nZXRfd3JhcHBpbmdfa2luZChVSUQgKmVzc2VuY2VfY29udGFpbmVyX3VsKQo+PiAg ewo+PiAgICAgIGludCB2YWw7Cj4+IEBAIC0yMjkyLDYgKzI0MjgsMTU2IEBAIHN0YXRpYyBlbnVt IEFWQ29sb3JSYW5nZSBteGZfZ2V0X2NvbG9yX3JhbmdlKE1YRkNvbnRleHQgKm14ZiwgTVhGRGVz Y3JpcHRvciAqZGVzCj4+ICAgICAgcmV0dXJuIEFWQ09MX1JBTkdFX1VOU1BFQ0lGSUVEOwo+PiAg fQo+Pgo+PiArc3RhdGljIGludCBpc19wY20oZW51bSBBVkNvZGVjSUQgY29kZWNfaWQpCj4+ICt7 Cj4+ICsgICAgLyogd2Ugb25seSBjYXJlIGFib3V0ICJub3JtYWwiIFBDTSBjb2RlY3MgdW50aWwg d2UgZ2V0IHNhbXBsZXMgKi8KPj4gKyAgICByZXR1cm4gY29kZWNfaWQgPj0gQVZfQ09ERUNfSURf UENNX1MxNkxFICYmIGNvZGVjX2lkIDwgQVZfQ09ERUNfSURfUENNX1MyNERBVUQ7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgc2V0X2xhbmd1YWdlKEFWRm9ybWF0Q29udGV4dCAqcywgY29uc3Qg Y2hhciAqcmZjNTY0NiwgQVZEaWN0aW9uYXJ5ICoqbWV0KQo+PiArewo+PiArICAgIC8vIGxhbmd1 YWdlIGFiYnIgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgMiBjaGFycwo+PiArICAgIGlmIChyZmM1 NjQ2ICYmIHN0cmxlbihyZmM1NjQ2KSA+IDEpIHsKPj4gKyAgICAgICAgY2hhciBwcmltYXJ5X3Rh Z1s0XSA9Cj4+ICsgICAgICAgICAgICB7cmZjNTY0NlswXSwgcmZjNTY0NlsxXSwgcmZjNTY0Nlsy XSAhPSAnLScgPyByZmM1NjQ2WzJdIDogJ1wwJywgJ1wwJ307Cj4+ICsKPj4gKyAgICAgICAgY29u c3QgY2hhciAqaXNvNjM5MiAgICAgICA9IGZmX2NvbnZlcnRfbGFuZ190byhwcmltYXJ5X3RhZywK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBVl9MQU5HX0lTTzYzOV8yX0JJQkwpOwo+PiArICAgICAgICBpZiAoaXNvNjM5MikKPj4gKyAg ICAgICAgICAgIHJldHVybihhdl9kaWN0X3NldChtZXQsICJsYW5ndWFnZSIsIGlzbzYzOTIsIDAp KTsKPj4gKyAgICB9Cj4+ICsgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBNWEZN Q0FTdWJEZXNjcmlwdG9yICpmaW5kX21jYV9saW5rX2lkKE1YRkNvbnRleHQgKm14ZiwgZW51bSBN WEZNZXRhZGF0YVNldFR5cGUgdHlwZSwgVUlEICptY2FfbGlua19pZCkKPj4gK3sKPj4gKyAgICBm b3IgKGludCBrID0gMDsgayA8IG14Zi0+bWV0YWRhdGFfc2V0c19jb3VudDsgaysrKSB7Cj4+ICsg ICAgICAgIE1YRk1DQVN1YkRlc2NyaXB0b3IgKmdyb3VwID0gKE1YRk1DQVN1YkRlc2NyaXB0b3Iq KW14Zi0+bWV0YWRhdGFfc2V0c1trXTsKPj4gKyAgICAgICAgaWYgKGdyb3VwLT5tZXRhLnR5cGUg PT0gdHlwZSAmJiAhbWVtY21wKCZncm91cC0+bWNhX2xpbmtfaWQsIG1jYV9saW5rX2lkLCAxNikp Cj4+ICsgICAgICAgICAgICByZXR1cm4gZ3JvdXA7Cj4+ICsgICAgfQo+PiArICAgIHJldHVybiBO VUxMOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHBhcnNlX21jYV9sYWJlbHMoTVhGQ29udGV4 dCAqbXhmLCBNWEZUcmFjayAqc291cmNlX3RyYWNrLCBNWEZEZXNjcmlwdG9yICpkZXNjcmlwdG9y LCBBVlN0cmVhbSAqc3QpCj4+ICt7Cj4+ICsgICAgdWludDY0X3Qgcm91dGluZ1tGRl9TQU5FX05C X0NIQU5ORUxTXSA9IHswfTsKPj4gKyAgICBjaGFyICpsYW5ndWFnZSA9IE5VTEw7Cj4+ICsgICAg aW50IGFtYmlnb3VzX2xhbmd1YWdlID0gMDsKPj4gKyAgICBlbnVtIEFWQXVkaW9TZXJ2aWNlVHlw ZSBzZXJ2aWNlX3R5cGUgPSBBVl9BVURJT19TRVJWSUNFX1RZUEVfTkI7Cj4+ICsgICAgaW50IGFt Ymlnb3VzX3NlcnZpY2VfdHlwZSA9IDA7Cj4+ICsgICAgaW50IGhhc19jaGFubmVsX2xhYmVsID0g MDsKPj4gKwo+PiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVzY3JpcHRvci0+c3ViX2Rlc2Ny aXB0b3JzX2NvdW50OyBpKyspIHsKPj4gKyAgICAgICAgY2hhciAqY2hhbm5lbF9sYW5ndWFnZTsK Pj4gKwo+PiArICAgICAgICBNWEZNQ0FTdWJEZXNjcmlwdG9yICpsYWJlbCA9IG14Zl9yZXNvbHZl X3N0cm9uZ19yZWYobXhmLCAmZGVzY3JpcHRvci0+c3ViX2Rlc2NyaXB0b3JzX3JlZnNbaV0sIEF1 ZGlvQ2hhbm5lbExhYmVsU3ViRGVzY3JpcHRvcik7Cj4+ICsgICAgICAgIGlmIChsYWJlbCA9PSBO VUxMKQo+PiArICAgICAgICAgICAgY29udGludWU7Cj4+ICsKPj4gKyAgICAgICAgaGFzX2NoYW5u ZWxfbGFiZWwgPSAxOwo+PiArICAgICAgICBmb3IgKGNvbnN0IE1YRkNoYW5uZWxPcmRlcmluZ1VM KiBjaGFubmVsX29yZGVyaW5nID0gbXhmX2NoYW5uZWxfb3JkZXJpbmc7IGNoYW5uZWxfb3JkZXJp bmctPnVpZFswXTsgY2hhbm5lbF9vcmRlcmluZysrKSB7Cj4+ICsgICAgICAgICAgICBpZiAoSVNf S0xWX0tFWShjaGFubmVsX29yZGVyaW5nLT51aWQsIGxhYmVsLT5tY2FfbGFiZWxfZGljdGlvbmFy eV9pZCkpIHsKPj4gKyAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2NoYW5uZWwgPSBsYWJlbC0+ bWNhX2NoYW5uZWxfaWQ7Cj4+ICsgICAgICAgICAgICAgICAgaWYgKHRhcmdldF9jaGFubmVsID09 IDAgJiYgZGVzY3JpcHRvci0+Y2hhbm5lbHMgPT0gMSkKPj4gKyAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X2NoYW5uZWwgPSAxOwo+PiArICAgICAgICAgICAgICAgIGlmICh0YXJnZXRfY2hhbm5l bCA8PSAwIHx8IHRhcmdldF9jaGFubmVsID4gZGVzY3JpcHRvci0+Y2hhbm5lbHMpIHsKPj4gKyAg ICAgICAgICAgICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19FUlJPUiwgIkF1ZGlvQ2hh bm5lbExhYmVsU3ViRGVzY3JpcHRvciBoYXMgaW52YWxpZCBNQ0EgY2hhbm5lbCBJRCAlZFxuIiwg dGFyZ2V0X2NoYW5uZWwpOwo+PiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgcm91 dGluZ1t0YXJnZXRfY2hhbm5lbCAtIDFdID0gY2hhbm5lbF9vcmRlcmluZy0+bGF5b3V0X21hc2s7 Cj4+ICsgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VfdHlwZSA9PSBBVl9BVURJT19TRVJWSUNF X1RZUEVfTkIpCj4+ICsgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VfdHlwZSA9IGNoYW5uZWxf b3JkZXJpbmctPnNlcnZpY2VfdHlwZTsKPj4gKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXJ2 aWNlX3R5cGUgIT0gY2hhbm5lbF9vcmRlcmluZy0+c2VydmljZV90eXBlKQo+PiArICAgICAgICAg ICAgICAgICAgICBhbWJpZ291c19zZXJ2aWNlX3R5cGUgPSAxOwo+PiArICAgICAgICAgICAgICAg IGJyZWFrOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAg Y2hhbm5lbF9sYW5ndWFnZSA9IGxhYmVsLT5sYW5ndWFnZTsKPj4gKyAgICAgICAgaWYgKCFjaGFu bmVsX2xhbmd1YWdlKSB7Cj4+ICsgICAgICAgICAgICBNWEZNQ0FTdWJEZXNjcmlwdG9yICpncm91 cCA9IGZpbmRfbWNhX2xpbmtfaWQobXhmLCBTb3VuZGZpZWxkR3JvdXBMYWJlbFN1YkRlc2NyaXB0 b3IsICZsYWJlbC0+c291bmRmaWVsZF9ncm91cF9saW5rX2lkKTsKPj4gKyAgICAgICAgICAgIGlm IChncm91cCkgewo+PiArICAgICAgICAgICAgICAgIGNoYW5uZWxfbGFuZ3VhZ2UgPSBncm91cC0+ bGFuZ3VhZ2U7Cj4+ICsgICAgICAgICAgICAgICAgaWYgKCFjaGFubmVsX2xhbmd1YWdlICYmIGdy b3VwLT5ncm91cF9vZl9zb3VuZGZpZWxkX2dyb3Vwc19saW5rX2lkX2NvdW50KSB7Cj4+ICsgICAg ICAgICAgICAgICAgICAgIE1YRk1DQVN1YkRlc2NyaXB0b3IgKnN1cGVyZ3JvdXAgPSBmaW5kX21j YV9saW5rX2lkKG14ZiwgR3JvdXBPZlNvdW5kZmllbGRHcm91cHNMYWJlbFN1YkRlc2NyaXB0b3Is Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdyb3VwLT5ncm91cF9vZl9zb3VuZGZpZWxkX2dyb3Vwc19saW5r X2lkX3JlZnMpOwo+PiArICAgICAgICAgICAgICAgICAgICBpZiAoc3VwZXJncm91cCkKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfbGFuZ3VhZ2UgPSBzdXBlcmdyb3VwLT5sYW5n dWFnZTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAgICAg IH0KPj4gKyAgICAgICAgaWYgKGNoYW5uZWxfbGFuZ3VhZ2UpIHsKPj4gKyAgICAgICAgICAgIGlm IChsYW5ndWFnZSAmJiBzdHJjbXAobGFuZ3VhZ2UsIGNoYW5uZWxfbGFuZ3VhZ2UpKQo+PiArICAg ICAgICAgICAgICAgIGFtYmlnb3VzX2xhbmd1YWdlID0gMTsKPj4gKyAgICAgICAgICAgIGVsc2UK Pj4gKyAgICAgICAgICAgICAgICBsYW5ndWFnZSA9IGNoYW5uZWxfbGFuZ3VhZ2U7Cj4+ICsgICAg ICAgIH0KPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpZiAobGFuZ3VhZ2UgJiYgIWFtYmlnb3VzX2xh bmd1YWdlKSB7Cj4+ICsgICAgICAgaW50IHJldCA9IHNldF9sYW5ndWFnZShteGYtPmZjLCBsYW5n dWFnZSwgJnN0LT5tZXRhZGF0YSk7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApCj4+ICsgICAgICAg ICAgIHJldHVybiByZXQ7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgaWYgKHNlcnZpY2VfdHlwZSAh PSBBVl9BVURJT19TRVJWSUNFX1RZUEVfTkIgJiYgc2VydmljZV90eXBlICE9IEFWX0FVRElPX1NF UlZJQ0VfVFlQRV9NQUlOICYmICFhbWJpZ291c19zZXJ2aWNlX3R5cGUpIHsKPj4gKyAgICAgICAg ZW51bSBBVkF1ZGlvU2VydmljZVR5cGUgKmFzdDsKPj4gKyAgICAgICAgdWludDhfdCogc2lkZV9k YXRhID0gYXZfc3RyZWFtX25ld19zaWRlX2RhdGEoc3QsIEFWX1BLVF9EQVRBX0FVRElPX1NFUlZJ Q0VfVFlQRSwgc2l6ZW9mKCphc3QpKTsKPj4gKyAgICAgICAgaWYgKCFzaWRlX2RhdGEpCj4+ICsg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+PiArICAgICAgICBhc3QgPSAoZW51 bSBBVkF1ZGlvU2VydmljZVR5cGUqKXNpZGVfZGF0YTsKPj4gKyAgICAgICAgKmFzdCA9IHNlcnZp Y2VfdHlwZTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpZiAoaGFzX2NoYW5uZWxfbGFiZWwpIHsK Pj4gKyAgICAgICAgdWludDY0X3QgY2hhbm5lbF9sYXlvdXQgPSAwOwo+PiArICAgICAgICBpbnQg cmVxdWlyZV9yZW9yZGVyID0gMDsKPj4gKwo+PiArICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IGRlc2NyaXB0b3ItPmNoYW5uZWxzOyBpKyspIHsKPj4gKyAgICAgICAgICAgIGlmICghcm91dGlu Z1tpXSkgewo+PiArICAgICAgICAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfV0FSTklO RywgIkRlc2lnbmF0aW9uIG9mIGF1ZGlvIGNoYW5uZWwgJWQgaW4gc3RyZWFtICMlZCBpcyB1bmtu b3duIG9yIHVuc3VwcG9ydGVkLCAiCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIHRvIHVua25vd24gY2hhbm5lbCBsYXlvdXRc biIsIHN0LT5pbmRleCwgaSk7Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAg ICAgICAgICB9Cj4+ICsgICAgICAgICAgICBpZiAoY2hhbm5lbF9sYXlvdXQgJiByb3V0aW5nW2ld KSB7Cj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19XQVJOSU5HLCAi JXMgYXVkaW8gY2hhbm5lbCBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHN0cmVhbSAjJWQsICIK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWxs aW5nIGJhY2sgdG8gdW5rbm93biBjaGFubmVsIGxheW91dFxuIiwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2X2dldF9jaGFubmVsX25hbWUocm91 dGluZ1tpXSksIHN0LT5pbmRleCk7Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsg ICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICBpZiAocm91dGluZ1tpXSA8IGNoYW5uZWxfbGF5 b3V0KQo+PiArICAgICAgICAgICAgICAgIHJlcXVpcmVfcmVvcmRlciA9IDE7Cj4+ICsgICAgICAg ICAgICBjaGFubmVsX2xheW91dCB8PSByb3V0aW5nW2ldOwo+PiArICAgICAgICB9Cj4+ICsKPj4g KyAgICAgICAgYXZfYXNzZXJ0MChkZXNjcmlwdG9yLT5jaGFubmVscyA9PSBhdl9nZXRfY2hhbm5l bF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpKTsKPj4gKwo+PiArICAgICAgICBp ZiAocmVxdWlyZV9yZW9yZGVyKSB7Cj4+ICsgICAgICAgICAgICBpZiAobXhmLT5za2lwX2F1ZGlv X3Jlb3JkZXJpbmcpCj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgICAg ICBpZiAoIWlzX3BjbShzdC0+Y29kZWNwYXItPmNvZGVjX2lkKSkgewo+PiArICAgICAgICAgICAg ICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfV0FSTklORywgIkF1ZGlvIGNoYW5uZWwgcmVvcmRl cmluZyBmb3Igc3RyZWFtICMlZCBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgaXMgdXNpbmcg YSBub24tUENNIGNvZGVjLCAiCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIHRvIHVua25vd24gY2hhbm5lbCBsYXlvdXRcbiIs IHN0LT5pbmRleCk7Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgICAg ICB9Cj4+ICsgICAgICAgICAgICBhdl9sb2cobXhmLT5mYywgQVZfTE9HX1ZFUkJPU0UsICJNQ0Eg bWFwcGluZyBmb3Igc3RyZWFtICMlZDogIiwgc3QtPmluZGV4KTsKPj4gKyAgICAgICAgICAgIGZv ciAoaW50IGogPSAwOyBqIDwgZGVzY3JpcHRvci0+Y2hhbm5lbHM7IGorKykgewo+PiArICAgICAg ICAgICAgICAgIGludCByZW9yZGVyZWRfY2hhbm5lbCA9IGF2X2dldF9jaGFubmVsX2xheW91dF9j aGFubmVsX2luZGV4KGNoYW5uZWxfbGF5b3V0LCByb3V0aW5nW2pdKTsKPj4gKyAgICAgICAgICAg ICAgICBhdl9hc3NlcnQwKHJlb3JkZXJlZF9jaGFubmVsID49IDAgJiYgcmVvcmRlcmVkX2NoYW5u ZWwgPCBkZXNjcmlwdG9yLT5jaGFubmVscyk7Cj4+ICsgICAgICAgICAgICAgICAgc291cmNlX3Ry YWNrLT5jaGFubmVsX29yZGVyaW5nW2pdID0gcmVvcmRlcmVkX2NoYW5uZWw7Cj4+ICsgICAgICAg ICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19WRVJCT1NFLCAiJXMlczogJWQtPiVkIiwg aiA/ICIsICIgOiAiIiwgYXZfZ2V0X2NoYW5uZWxfbmFtZShyb3V0aW5nW2pdKSwgaiwgcmVvcmRl cmVkX2NoYW5uZWwpOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgYXZfbG9nKG14 Zi0+ZmMsIEFWX0xPR19WRVJCT1NFLCAiXG4iKTsKPj4gKyAgICAgICAgICAgIHNvdXJjZV90cmFj ay0+cmVxdWlyZV9yZW9yZGVyaW5nID0gMTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAg IHN0LT5jb2RlY3Bhci0+Y2hhbm5lbF9sYXlvdXQgPSBjaGFubmVsX2xheW91dDsKPj4gKyAgICB9 Cj4+ICsKPj4gKyAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGludCBteGZfcGFy c2Vfc3RydWN0dXJhbF9tZXRhZGF0YShNWEZDb250ZXh0ICpteGYpCj4+ICB7Cj4+ICAgICAgTVhG UGFja2FnZSAqbWF0ZXJpYWxfcGFja2FnZSA9IE5VTEw7Cj4+IEBAIC0yNjg4LDYgKzI5NzQsMTUg QEAgc3RhdGljIGludCBteGZfcGFyc2Vfc3RydWN0dXJhbF9tZXRhZGF0YShNWEZDb250ZXh0ICpt eGYpCj4+ICAgICAgICAgICAgICAgICAgc3RpLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJT RV9GVUxMOwo+PiAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5i aXRzX3Blcl9jb2RlZF9zYW1wbGUgPSBhdl9nZXRfYml0c19wZXJfc2FtcGxlKHN0LT5jb2RlY3Bh ci0+Y29kZWNfaWQpOwo+PiArCj4+ICsgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci0+Y2hhbm5l bHMgPD0gMCB8fCBkZXNjcmlwdG9yLT5jaGFubmVscyA+PSBGRl9TQU5FX05CX0NIQU5ORUxTKSB7 Cj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19FUlJPUiwgIkludmFs aWQgbnVtYmVyIG9mIGNoYW5uZWxzICVkLCBtdXN0IGJlIGxlc3MgdGhhbiAlZFxuIiwgZGVzY3Jp cHRvci0+Y2hhbm5lbHMsIEZGX1NBTkVfTkJfQ0hBTk5FTFMpOwo+PiArICAgICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+PiArICAgICAgICAgICAgfQo+PiArCj4+ICsg ICAgICAgICAgICByZXQgPSBwYXJzZV9tY2FfbGFiZWxzKG14Ziwgc291cmNlX3RyYWNrLCBkZXNj cmlwdG9yLCBzdCk7Cj4+ICsgICAgICAgICAgICBpZiAocmV0IDwgMCkKPj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+PiAgICAgICAgICB9IGVsc2UgaWYgKHN0LT5jb2RlY3Bhci0+Y29k ZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfREFUQSkgewo+PiAgICAgICAgICAgICAgZW51bSBBVk1l ZGlhVHlwZSB0eXBlOwo+PiAgICAgICAgICAgICAgY29udGFpbmVyX3VsID0gbXhmX2dldF9jb2Rl Y191bChteGZfZGF0YV9lc3NlbmNlX2NvbnRhaW5lcl91bHMsIGVzc2VuY2VfY29udGFpbmVyX3Vs KTsKPj4gQEAgLTI4ODgsNiArMzE4Myw5IEBAIHN0YXRpYyBjb25zdCBNWEZNZXRhZGF0YVJlYWRU YWJsZUVudHJ5IG14Zl9tZXRhZGF0YV9yZWFkX3RhYmxlW10gPSB7Cj4+ICAgICAgeyB7IDB4MDYs MHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBkLDB4MDEsMHgwMSwweDAxLDB4 MDEsMHgwMSwweDVjLDB4MDAgfSwgbXhmX3JlYWRfZ2VuZXJpY19kZXNjcmlwdG9yLCBzaXplb2Yo TVhGRGVzY3JpcHRvciksIERlc2NyaXB0b3IgfSwgLyogVkFOQy9WQkkgLSBTTVBURSA0MzZNICov Cj4+ICAgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBk LDB4MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDVlLDB4MDAgfSwgbXhmX3JlYWRfZ2VuZXJpY19k ZXNjcmlwdG9yLCBzaXplb2YoTVhGRGVzY3JpcHRvciksIERlc2NyaXB0b3IgfSwgLyogTVBFRzJB dWRpb0Rlc2NyaXB0b3IgKi8KPj4gICAgICB7IHsgMHgwNiwweDBlLDB4MmIsMHgzNCwweDAyLDB4 NTMsMHgwMSwweDAxLDB4MGQsMHgwMSwweDAxLDB4MDEsMHgwMSwweDAxLDB4NjQsMHgwMCB9LCBt eGZfcmVhZF9nZW5lcmljX2Rlc2NyaXB0b3IsIHNpemVvZihNWEZEZXNjcmlwdG9yKSwgRGVzY3Jp cHRvciB9LCAvKiBEQyBUaW1lZCBUZXh0IERlc2NyaXB0b3IgKi8KPj4gKyAgICB7IHsgMHgwNiww eDBlLDB4MmIsMHgzNCwweDAyLDB4NTMsMHgwMSwweDAxLDB4MGQsMHgwMSwweDAxLDB4MDEsMHgw MSwweDAxLDB4NmIsMHgwMCB9LCBteGZfcmVhZF9tY2Ffc3ViX2Rlc2NyaXB0b3IsIHNpemVvZihN WEZNQ0FTdWJEZXNjcmlwdG9yKSwgQXVkaW9DaGFubmVsTGFiZWxTdWJEZXNjcmlwdG9yIH0sCj4+ ICsgICAgeyB7IDB4MDYsMHgwZSwweDJiLDB4MzQsMHgwMiwweDUzLDB4MDEsMHgwMSwweDBkLDB4 MDEsMHgwMSwweDAxLDB4MDEsMHgwMSwweDZjLDB4MDAgfSwgbXhmX3JlYWRfbWNhX3N1Yl9kZXNj cmlwdG9yLCBzaXplb2YoTVhGTUNBU3ViRGVzY3JpcHRvciksIFNvdW5kZmllbGRHcm91cExhYmVs U3ViRGVzY3JpcHRvciB9LAo+PiArICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDIsMHg1 MywweDAxLDB4MDEsMHgwZCwweDAxLDB4MDEsMHgwMSwweDAxLDB4MDEsMHg2ZCwweDAwIH0sIG14 Zl9yZWFkX21jYV9zdWJfZGVzY3JpcHRvciwgc2l6ZW9mKE1YRk1DQVN1YkRlc2NyaXB0b3IpLCBH cm91cE9mU291bmRmaWVsZEdyb3Vwc0xhYmVsU3ViRGVzY3JpcHRvciB9LAo+PiAgICAgIHsgeyAw eDA2LDB4MGUsMHgyYiwweDM0LDB4MDIsMHg1MywweDAxLDB4MDEsMHgwZCwweDAxLDB4MDEsMHgw MSwweDAxLDB4MDEsMHgzQSwweDAwIH0sIG14Zl9yZWFkX3RyYWNrLCBzaXplb2YoTVhGVHJhY2sp LCBUcmFjayB9LCAvKiBTdGF0aWMgVHJhY2sgKi8KPj4gICAgICB7IHsgMHgwNiwweDBlLDB4MmIs MHgzNCwweDAyLDB4NTMsMHgwMSwweDAxLDB4MGQsMHgwMSwweDAxLDB4MDEsMHgwMSwweDAxLDB4 M0IsMHgwMCB9LCBteGZfcmVhZF90cmFjaywgc2l6ZW9mKE1YRlRyYWNrKSwgVHJhY2sgfSwgLyog R2VuZXJpYyBUcmFjayAqLwo+PiAgICAgIHsgeyAweDA2LDB4MGUsMHgyYiwweDM0LDB4MDIsMHg1 MywweDAxLDB4MDEsMHgwZCwweDAxLDB4MDEsMHgwMSwweDAxLDB4MDEsMHgxNCwweDAwIH0sIG14 Zl9yZWFkX3RpbWVjb2RlX2NvbXBvbmVudCwgc2l6ZW9mKE1YRlRpbWVjb2RlQ29tcG9uZW50KSwg VGltZWNvZGVDb21wb25lbnQgfSwKPj4gQEAgLTMxODcsMTIgKzM0ODUsNiBAQCBzdGF0aWMgdm9p ZCBteGZfY29tcHV0ZV9lc3NlbmNlX2NvbnRhaW5lcnMoQVZGb3JtYXRDb250ZXh0ICpzKQo+PiAg ICAgIH0KPj4gIH0KPj4KPj4gLXN0YXRpYyBpbnQgaXNfcGNtKGVudW0gQVZDb2RlY0lEIGNvZGVj X2lkKQo+PiAtewo+PiAtICAgIC8qIHdlIG9ubHkgY2FyZSBhYm91dCAibm9ybWFsIiBQQ00gY29k ZWNzIHVudGlsIHdlIGdldCBzYW1wbGVzICovCj4+IC0gICAgcmV0dXJuIGNvZGVjX2lkID49IEFW X0NPREVDX0lEX1BDTV9TMTZMRSAmJiBjb2RlY19pZCA8IEFWX0NPREVDX0lEX1BDTV9TMjREQVVE Owo+PiAtfQo+PiAtCj4+ICBzdGF0aWMgTVhGSW5kZXhUYWJsZSAqbXhmX2ZpbmRfaW5kZXhfdGFi bGUoTVhGQ29udGV4dCAqbXhmLCBpbnQgaW5kZXhfc2lkKQo+PiAgewo+PiAgICAgIGludCBpOwo+ PiBAQCAtMzYxOSw2ICszOTExLDI1IEBAIHN0YXRpYyBpbnQgbXhmX3NldF9wdHMoTVhGQ29udGV4 dCAqbXhmLCBBVlN0cmVhbSAqc3QsIEFWUGFja2V0ICpwa3QpCj4+ICAgICAgcmV0dXJuIDA7Cj4+ ICB9Cj4+Cj4+ICtzdGF0aWMgaW50IG14Zl9hdWRpb19yZW1hcHBpbmcoaW50KiBjaGFubmVsX29y ZGVyaW5nLCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSwgaW50IHNhbXBsZV9zaXplLCBpbnQgY2hh bm5lbHMpCj4+ICt7Cj4+ICsgICAgaW50IHNhbXBsZV9vZmZzZXQgPSBjaGFubmVscyAqIHNhbXBs ZV9zaXplOwo+PiArICAgIGludCBudW1iZXJfb2Zfc2FtcGxlcyA9IHNpemUgLyBzYW1wbGVfb2Zm c2V0Owo+PiArICAgIHVpbnQ4X3QgdG1wW0ZGX1NBTkVfTkJfQ0hBTk5FTFMgKiA0XTsKPj4gKyAg ICB1aW50OF90KiBkYXRhX3B0ciA9IGRhdGE7Cj4+ICsKPj4gKyAgICBmb3IgKGludCBzYW1wbGUg PSAwOyBzYW1wbGUgPCBudW1iZXJfb2Zfc2FtcGxlczsgKytzYW1wbGUpIHsKPj4gKyAgICAgICAg bWVtY3B5KHRtcCwgZGF0YV9wdHIsIHNhbXBsZV9vZmZzZXQpOwo+PiArCj4+ICsgICAgICAgIGZv ciAoaW50IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7ICsrY2hhbm5lbCkgewo+PiAr ICAgICAgICAgICAgbWVtY3B5KCZkYXRhX3B0cltzYW1wbGVfc2l6ZSAqIGNoYW5uZWxfb3JkZXJp bmdbY2hhbm5lbF1dLCAmdG1wW3NhbXBsZV9zaXplICogY2hhbm5lbF0sIHNhbXBsZV9zaXplKTsK Pj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIGRhdGFfcHRyICs9IHNhbXBsZV9vZmZzZXQ7 Cj4+ICsgICAgfQo+PiArICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgaW50IG14 Zl9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCj4+ICB7Cj4+ ICAgICAgS0xWUGFja2V0IGtsdjsKPj4gQEAgLTM3MzMsNiArNDA0NCwxNSBAQCBzdGF0aWMgaW50 IG14Zl9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCj4+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gICAgICAgICAgICAgIH0KPj4KPj4gKyAgICAg ICAgICAgIC8vIGZvciBhdWRpbywgcHJvY2VzcyBhdWRpbyByZW1hcHBpbmcgaWYgTUNBIGxhYmVs IHJlcXVpcmVzIGl0Cj4+ICsgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9BVURJTyAmJiB0cmFjay0+cmVxdWlyZV9yZW9yZGVyaW5nKSB7Cj4+ ICsgICAgICAgICAgICAgICAgaW50IGJ5dGVfcGVyX3NhbXBsZSA9IHN0LT5jb2RlY3Bhci0+Yml0 c19wZXJfY29kZWRfc2FtcGxlIC8gODsKPj4gKyAgICAgICAgICAgICAgICByZXQgPSBteGZfYXVk aW9fcmVtYXBwaW5nKHRyYWNrLT5jaGFubmVsX29yZGVyaW5nLCBwa3QtPmRhdGEsIHBrdC0+c2l6 ZSwgYnl0ZV9wZXJfc2FtcGxlLCBzdC0+Y29kZWNwYXItPmNoYW5uZWxzKTsKPj4gKyAgICAgICAg ICAgICAgICBpZiAocmV0IDwgMCkgewo+PiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+PiArICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIH0KPj4gKwo+PiAgICAgICAg ICAgICAgLyogc2VlayBmb3IgdHJ1bmNhdGVkIHBhY2tldHMgKi8KPj4gICAgICAgICAgICAgIGF2 aW9fc2VlayhzLT5wYiwga2x2Lm5leHRfa2x2LCBTRUVLX1NFVCk7Cj4+Cj4+IEBAIC0zOTIwLDYg KzQyNDAsOSBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0gewo+PiAgICAgIHsg ImVpYTYwOF9leHRyYWN0IiwgImV4dHJhY3QgZWlhIDYwOCBjYXB0aW9ucyBmcm9tIHM0MzZtIHRy YWNrIiwKPj4gICAgICAgIG9mZnNldG9mKE1YRkNvbnRleHQsIGVpYTYwOF9leHRyYWN0KSwgQVZf T1BUX1RZUEVfQk9PTCwgey5pNjQgPSAwfSwgMCwgMSwKPj4gICAgICAgIEFWX09QVF9GTEFHX0RF Q09ESU5HX1BBUkFNIH0sCj4+ICsgICAgeyAic2tpcF9hdWRpb19yZW9yZGVyaW5nIiwgInNraXAg YXVkaW8gcmVvcmRlcmluZyBiYXNlZCBvbiBNdWx0aS1DaGFubmVsIEF1ZGlvIGxhYmVsbGluZyIs Cj4+ICsgICAgICBvZmZzZXRvZihNWEZDb250ZXh0LCBza2lwX2F1ZGlvX3Jlb3JkZXJpbmcpLCBB Vl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDB9LCAwLCAxLAo+PiArICAgICAgQVZfT1BUX0ZMQUdf REVDT0RJTkdfUEFSQU0gfSwKPj4gICAgICB7IE5VTEwgfSwKPj4gIH07Cj4+Cj4+IGRpZmYgLS1n aXQgYS9saWJhdmZvcm1hdC92ZXJzaW9uLmggYi9saWJhdmZvcm1hdC92ZXJzaW9uLmgKPj4gaW5k ZXggMDcwNWVlNDExMi4uMjFjYTZlZDA5NiAxMDA2NDQKPj4gLS0tIGEvbGliYXZmb3JtYXQvdmVy c2lvbi5oCj4+ICsrKyBiL2xpYmF2Zm9ybWF0L3ZlcnNpb24uaAo+PiBAQCAtMzMsNyArMzMsNyBA QAo+PiAgLy8gQWxzbyBwbGVhc2UgYWRkIGFueSB0aWNrZXQgbnVtYmVycyB0aGF0IHlvdSBiZWxp ZXZlIG1pZ2h0IGJlIGFmZmVjdGVkIGhlcmUKPj4gICNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lP Tl9NQUpPUiAgNTkKPj4gICNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5PUiAgIDkKPj4g LSNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSUNSTyAxMDIKPj4gKyNkZWZpbmUgTElCQVZG T1JNQVRfVkVSU0lPTl9NSUNSTyAxMDMKPj4KPj4gICNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lP Tl9JTlQgQVZfVkVSU0lPTl9JTlQoTElCQVZGT1JNQVRfVkVSU0lPTl9NQUpPUiwgXAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJBVkZPUk1BVF9W RVJTSU9OX01JTk9SLCBcCj4+IC0tCj4+IDIuMzMuMQo+Pgo+Cj4KPiAtLSAKPiBNYXJjLUFudG9p bmUgQVJOQVVECj4gQ0VPICYgRm91bmRlcgo+Cj4gbW9iaWxlOiAgKzMzIDYgODQgNzEgODQgNDUK PiBlbWFpbDogICAgIGFybmF1ZC5tYXJjLWFudG9pbmVAbHVtaW52ZW50LmNvbQo+IHdlYnNpdGU6 ICBsdW1pbnZlbnQuY29tCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK Pgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1k ZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K