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 753FE46298 for ; Thu, 11 May 2023 16:23:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4F7DF68C118; Thu, 11 May 2023 19:23:00 +0300 (EEST) Received: from mail-vk1-f169.google.com (mail-vk1-f169.google.com [209.85.221.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 77FA768BB11 for ; Thu, 11 May 2023 19:22:53 +0300 (EEST) Received: by mail-vk1-f169.google.com with SMTP id 71dfb90a1353d-44ff6a049a7so3118664e0c.2 for ; Thu, 11 May 2023 09:22:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683822172; x=1686414172; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=r3SiJmxH/HPkKSjaJHe4l3hD4KJRTzPxmqmS5jebhKU=; b=oOX9ymX7tO4Jz9IoPa7tsqUZi0qob/kuITeC0BMo77aSbcXkNBwMJqvw2RgbJg1UjQ BezEEQWEve7ViCm0ENMusPcSV2vLee84c9Z9xlR8iZd4lsufV/uG7sIjBqc6SRnckREY l0QBC09MgNrgoe7SNGV1H2edZCezvWzOtl+w46GBmtXAoQEZ5G/TC8ru9/uxf+jCe6ww NfZFKX8du6xSTU+sgioq7im28WPBrzib0IWk46WZMDEvnur360DCCx//HE1yjHiB7d6v efhAyK7nQ2pLhvGgJ4dPDoAIsyU4KojDpjl1TCOljwfhPE5OunNq6JIyqe0+xH5dx+Q3 4zhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683822172; x=1686414172; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=r3SiJmxH/HPkKSjaJHe4l3hD4KJRTzPxmqmS5jebhKU=; b=T1RTgtJyVAtWf9MoNON3L2wotctt2HHiBDEmwK7UPYlXi77BQmN1+lmlrggKVlH22o +Sgq4T9fmP3YuqHI57cEp96JLH/xJfKqnc92/d42IAOKg3F8TnR8GzTyZqxSsQEUlsUL fHjkpsJHu7n7V8j2AUAKzi4MplcBtD0jNvKbGSZRYJs6GWAwsSDmda04zwqQR1wmWeXh 60LXUNmVek00aAEEaS4BgIfdii/cf5kmQ/ItOHHV8cECpUShWaQEVggd4J7aY/JdLrVJ u7L2SYPZZmvnFHmlfRxeuZFIOTZXGGhlskOQJq+PGp8nugUOvzLKfXd7vZyv52dApCdY RF5g== X-Gm-Message-State: AC+VfDz9aYWd+VCGQCOpiYKtL/UpzEFp4i86Ojt5/IgIrqg0g7ol7mVW bufeQqQArrYNVqYwraHQjX/QVTC56XMid70zoteDgE6h X-Google-Smtp-Source: ACHHUZ6Op7joKGY9n2FnmaMMCosxCcOCP4zHlhZK+7UcqF2PmLzb+UlIKNYuMAWACVxKiZ0MUEnk4B4fqaLHiDOe4ss= X-Received: by 2002:a1f:6081:0:b0:44f:fc8e:9837 with SMTP id u123-20020a1f6081000000b0044ffc8e9837mr7095473vkb.14.1683822171845; Thu, 11 May 2023 09:22:51 -0700 (PDT) MIME-Version: 1.0 References: <1683313747-3775-1-git-send-email-dheitmueller@ltnglobal.com> <1683313747-3775-2-git-send-email-dheitmueller@ltnglobal.com> In-Reply-To: From: Paul B Mahol Date: Thu, 11 May 2023 18:22:20 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v6 1/6] ccfifo: Properly handle CEA-708 captions through framerate conversion 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: T24gVGh1LCBNYXkgMTEsIDIwMjMgYXQgNDoxNOKAr1BNIExhbmNlIFdhbmcgPGxhbmNlLmxtd2Fu Z0BnbWFpbC5jb20+IHdyb3RlOgoKPiBPbiBXZWQsIE1heSAxMCwgMjAyMyBhdCA3OjA44oCvUE0g TGFuY2UgV2FuZyA8bGFuY2UubG13YW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiA+Cj4gPgo+ID4g T24gU3VuLCBNYXkgNywgMjAyMyBhdCAzOjAz4oCvUE0gTGFuY2UgV2FuZyA8bGFuY2UubG13YW5n QGdtYWlsLmNvbT4KPiB3cm90ZToKPiA+Cj4gPj4gTEdUTSBmb3IgdGhlIHBhdGNoc2V0Lgo+ID4+ Cj4gPj4KPiA+IEkgd2lsbCBoZWxwIHRvIGFwcGx5IHRoZSBwYXRjaHNldCB0b21vcnJvdyBpZiBu byBmdXJ0aGVyIGNvbW1lbnRzLiB0aHguCj4gPgo+Cj4gYXBwbGllZCwgdGhhbmtzIGZvciB0aGUg ZWZmb3J0Lgo+CgpCcmVha3MgYnVpbGQuCgoKPgo+Cj4gPgo+ID4KPiA+PiBPbiBTYXQsIE1heSA2 LCAyMDIzIGF0IDI6MTPigK9BTSBEZXZpbiBIZWl0bXVlbGxlciA8Cj4gPj4gZGV2aW4uaGVpdG11 ZWxsZXJAbHRuZ2xvYmFsLmNvbT4gd3JvdGU6Cj4gPj4KPiA+Pj4gV2hlbiB0cmFuc2NvZGluZyB2 aWRlbyB0aGF0IGNvbnRhaW5zIDcwOCBjbG9zZWQgY2FwdGlvbnMsIHRoZQo+ID4+PiBjYXB0aW9u IGRhdGEgaXMgdGllZCB0byB0aGUgZnJhbWVzIGFzIHNpZGUgZGF0YS4gIFNpbXBseSBkcm9wcGlu Zwo+ID4+PiBvciBhZGRpbmcgZnJhbWVzIHRvIGNoYW5nZSB0aGUgZnJhbWVyYXRlIHdpbGwgcmVz dWx0IGluIGxvc3Mgb2YKPiA+Pj4gZGF0YSwgc28gdGhlIGNhcHRpb24gZGF0YSBuZWVkcyB0byBi ZSBwcmVzZXJ2ZWQgYW5kIHJlZm9ybWF0dGVkLgo+ID4+Pgo+ID4+PiBGb3IgZXhhbXBsZSwgd2l0 aG91dCB0aGlzIHBhdGNoIGNvbnZlcnRpbmcgNzIwcDU5IHRvIDEwODBpNTkKPiA+Pj4gd291bGQg cmVzdWx0IGluIGxvc3Mgb2YgNTAlIG9mIHRoZSBjYXB0aW9uIGJ5dGVzLCByZXN1bHRpbmcgaW4K PiA+Pj4gZ2FyYmxlZCA2MDggY2FwdGlvbnMgYW5kIDcwOCBwcm9iYWJseSB3b3VsZG4ndCByZW5k ZXIgYXQgYWxsLgo+ID4+PiBGdXJ0aGVyLCB0aGUgZnJhbWVzIHRoYXQgYXJlIHRoZXJlIHdpbGwg aGF2ZSBhbiBpbGxlZ2FsCj4gPj4+IGNjX2NvdW50IGZvciB0aGUgdGFyZ2V0IGZyYW1lcmF0ZSwg c28gc29tZSBkZWNvZGVycyBtYXkgaWdub3JlCj4gPj4+IHRoZSBwYWNrZXRzIGVudGlyZWx5Lgo+ ID4+Pgo+ID4+PiBFeHRyYWN0IHRoZSA2MDggYW5kIDcwOCB0dXBsZXMgYW5kIGluc2VydCB0aGVt IG9udG8gcXVldWVzLiAgVGhlbgo+ID4+PiBhZnRlciBkcm9wcGluZy9hZGRpbmcgZnJhbWVzLCBy ZS13cml0ZSB0aGUgdHVwbGVzIGJhY2sgaW50byB0aGUKPiA+Pj4gcmVzdWx0aW5nIGZyYW1lcyBh dCB0aGUgYXBwcm9wcmlhdGUgcmF0ZSBnaXZlbiB0aGUgdGFyZ2V0Cj4gPj4+IGZyYW1lcmF0ZS4g IFRoaXMgaW5jbHVkZXMgYm90aCBoYXZpbmcgdGhlIGNvcnJlY3QgY2NfY291bnQgYXMKPiA+Pj4g d2VsbCBhcyBjbG9ja2luZyBvdXQgdGhlIDYwOCBwYWlycyBhdCB0aGUgYXBwcm9wcmlhdGUgcmF0 ZS4KPiA+Pj4KPiA+Pj4gVGhhbmtzIHRvIExhbmNlIFdhbmcgPGxhbmNlLmxtd2FuZ0BnbWFpbC5j b20+LCBBbnRvbgo+ID4+PiBLaGlybm92IDxhbnRvbkBraGlybm92Lm5ldD4sIGFuZCBNaWNoYWVs IE5pZWRlcm1heWVyIDwKPiA+Pj4gbWljaGFlbEBuaWVkZXJtYXllci5jYz4KPiA+Pj4gZm9yIHBy b3ZpZGluZyByZXZpZXcvZmVlZGJhY2suCj4gPj4+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IERldmlu IEhlaXRtdWVsbGVyIDxkaGVpdG11ZWxsZXJAbHRuZ2xvYmFsLmNvbT4KPiA+Pj4gLS0tCj4gPj4+ ICBsaWJhdmZpbHRlci9NYWtlZmlsZSB8ICAgMSArCj4gPj4+ICBsaWJhdmZpbHRlci9jY2ZpZm8u YyB8IDIyNAo+ID4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiA+Pj4gIGxpYmF2ZmlsdGVyL2NjZmlmby5oIHwgMTEwICsrKysrKysrKysrKysr KysrKysrKysrKysKPiA+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgMzM1IGluc2VydGlvbnMoKykKPiA+ Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9jY2ZpZm8uYwo+ID4+PiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL2NjZmlmby5oCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQg YS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gPj4+IGluZGV4 IDQ4MmFlYWYuLjY4YzhmMTQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2xpYmF2ZmlsdGVyL01ha2VmaWxl Cj4gPj4+ICsrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gPj4+IEBAIC0xNCw2ICsxNCw3IEBA IE9CSlMgPSBhbGxmaWx0ZXJzLm8KPiA+Pj4gICAgICAgICAgICAgICAgICBcCj4gPj4+ICAgICAg ICAgYnVmZmVyc2luay5vCj4gPj4+ICBcCj4gPj4+ICAgICAgICAgYnVmZmVyc3JjLm8KPiA+Pj4g XAo+ID4+PiAgICAgICAgIGNvbG9yc3BhY2Uubwo+ID4+PiAgXAo+ID4+PiArICAgICAgIGNjZmlm by5vCj4gPj4+ICBcCj4gPj4+ICAgICAgICAgZHJhd3V0aWxzLm8KPiA+Pj4gXAo+ID4+PiAgICAg ICAgIGZpZm8ubwo+ID4+PiAgXAo+ID4+PiAgICAgICAgIGZvcm1hdHMubwo+ID4+PiBcCj4gPj4+ IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9jY2ZpZm8uYyBiL2xpYmF2ZmlsdGVyL2NjZmlmby5j Cj4gPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4+IGluZGV4IDAwMDAwMDAuLjVmYjY4Y2UK PiA+Pj4gLS0tIC9kZXYvbnVsbAo+ID4+PiArKysgYi9saWJhdmZpbHRlci9jY2ZpZm8uYwo+ID4+ PiBAQCAtMCwwICsxLDIyNCBAQAo+ID4+PiArLyoKPiA+Pj4gKyAqIENFQS03MDggQ2xvc2VkIENh cHRpb25pbmcgRklGTwo+ID4+PiArICogQ29weXJpZ2h0IChjKSAyMDIzIExUTiBHbG9iYWwgQ29t bXVuaWNhdGlvbnMKPiA+Pj4gKyAqCj4gPj4+ICsgKiBBdXRob3I6IERldmluIEhlaXRtdWVsbGVy IDxkaGVpdG11ZWxsZXJAbHRuZ2xvYmFsLmNvbT4KPiA+Pj4gKyAqCj4gPj4+ICsgKiBUaGlzIGZp bGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gPj4+ICsgKgo+ID4+PiArICogRkZtcGVnIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ID4+PiArICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ID4+ PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCj4gPj4+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiA+Pj4gKyAqCj4gPj4+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiA+Pj4g KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCj4gPj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ID4+PiArICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+Pj4gKyAqCj4gPj4+ICsgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Cj4gPj4+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCj4gPj4+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gPj4+IDAyMTEwLTEzMDEgVVNBCj4gPj4+ ICsgKi8KPiA+Pj4gKwo+ID4+PiArI2luY2x1ZGUgImNjZmlmby5oIgo+ID4+PiArCj4gPj4+ICtz dHJ1Y3QgQVZDQ0ZpZm8gewo+ID4+PiArICAgIEFWRmlmbyAqY2NfNjA4X2ZpZm87Cj4gPj4+ICsg ICAgQVZGaWZvICpjY183MDhfZmlmbzsKPiA+Pj4gKyAgICBBVlJhdGlvbmFsIGZyYW1lcmF0ZTsK PiA+Pj4gKyAgICBpbnQgZXhwZWN0ZWRfY2NfY291bnQ7Cj4gPj4+ICsgICAgaW50IGV4cGVjdGVk XzYwODsKPiA+Pj4gKyAgICBpbnQgY2NfZGV0ZWN0ZWQ7Cj4gPj4+ICsgICAgaW50IHBhc3N0aHJv dWdoOwo+ID4+PiArICAgIGludCBwYXNzdGhyb3VnaF93YXJuaW5nOwo+ID4+PiArICAgIHZvaWQg KmxvZ19jdHg7Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsjZGVmaW5lIE1BWF9DQ19FTEVNRU5U UyAxMjgKPiA+Pj4gKyNkZWZpbmUgQ0NfQllURVNfUEVSX0VOVFJZIDMKPiA+Pj4gKwo+ID4+PiAr c3RydWN0IGNjX2xvb2t1cCB7Cj4gPj4+ICsgICAgaW50IG51bTsKPiA+Pj4gKyAgICBpbnQgZGVu Owo+ID4+PiArICAgIGludCBjY19jb3VudDsKPiA+Pj4gKyAgICBpbnQgbnVtXzYwODsKPiA+Pj4g K307Cj4gPj4+ICsKPiA+Pj4gK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgY2NfbG9va3VwIGNjX2xvb2t1 cF92YWxzW10gPSB7Cj4gPj4+ICsgICAgeyAxNSwgMSwgNDAsIDQgfSwKPiA+Pj4gKyAgICB7IDI0 LCAxLCAyNSwgMyB9LAo+ID4+PiArICAgIHsgMjQwMDAsIDEwMDEsIDI1LCAzIH0sCj4gPj4+ICsg ICAgeyAzMCwgMSwgMjAsIDIgfSwKPiA+Pj4gKyAgICB7IDMwMDAwLCAxMDAxLCAyMCwgMn0sCj4g Pj4+ICsgICAgeyA2MCwgMSwgMTAsIDEgfSwKPiA+Pj4gKyAgICB7IDYwMDAwLCAxMDAxLCAxMCwg MX0sCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICt2b2lkIGZmX2NjZmlmb19mcmVlcChBVkNDRmlm byAqKmNjZikKPiA+Pj4gK3sKPiA+Pj4gKyAgICBBVkNDRmlmbyAqdG1wID0gKmNjZjsKPiA+Pj4g KyAgICBpZiAodG1wKSB7Cj4gPj4+ICsgICAgICAgIGF2X2ZpZm9fZnJlZXAyKCZ0bXAtPmNjXzYw OF9maWZvKTsKPiA+Pj4gKyAgICAgICAgYXZfZmlmb19mcmVlcDIoJnRtcC0+Y2NfNzA4X2ZpZm8p Owo+ID4+PiArICAgIH0KPiA+Pj4gKyAgICBhdl9mcmVlcChjY2YpOwo+ID4+PiArfQo+ID4+PiAr Cj4gPj4+ICtBVkNDRmlmbyAqZmZfY2NmaWZvX2FsbG9jKEFWUmF0aW9uYWwgZnJhbWVyYXRlLCB2 b2lkICpsb2dfY3R4KQo+ID4+PiArewo+ID4+PiArICAgIEFWQ0NGaWZvICpjY2Y7Cj4gPj4+ICsg ICAgaW50IGk7Cj4gPj4+ICsKPiA+Pj4gKyAgICBjY2YgPSBhdl9tYWxsb2N6KHNpemVvZigqY2Nm KSk7Cj4gPj4+ICsgICAgaWYgKCFjY2YpCj4gPj4+ICsgICAgICAgIHJldHVybiBOVUxMOwo+ID4+ PiArCj4gPj4+ICsgICAgY2NmLT5sb2dfY3R4ID0gbG9nX2N0eDsKPiA+Pj4gKyAgICBjY2YtPmZy YW1lcmF0ZSA9IGZyYW1lcmF0ZTsKPiA+Pj4gKwo+ID4+PiArICAgIGlmICghKGNjZi0+Y2NfNzA4 X2ZpZm8gPSBhdl9maWZvX2FsbG9jMihNQVhfQ0NfRUxFTUVOVFMsCj4gPj4+IENDX0JZVEVTX1BF Ul9FTlRSWSwgMCkpKQo+ID4+PiArICAgICAgICBnb3RvIGVycm9yOwo+ID4+PiArCj4gPj4+ICsg ICAgaWYgKCEoY2NmLT5jY182MDhfZmlmbyA9IGF2X2ZpZm9fYWxsb2MyKE1BWF9DQ19FTEVNRU5U UywKPiA+Pj4gQ0NfQllURVNfUEVSX0VOVFJZLCAwKSkpCj4gPj4+ICsgICAgICAgIGdvdG8gZXJy b3I7Cj4gPj4+ICsKPiA+Pj4gKyAgICAvKiBCYXNlZCBvbiB0aGUgdGFyZ2V0IEZQUywgZmlndXJl IG91dCB0aGUgZXhwZWN0ZWQgY2NfY291bnQgYW5kCj4gPj4+IG51bWJlciBvZgo+ID4+PiArICAg ICAgIDYwOCB0dXBsZXMgcGVyIHBhY2tldC4gIFNlZSBBTlNJL0NUQS03MDgtRSBTZWMgNC4zLjYu MS4gKi8KPiA+Pj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoY2NfbG9va3Vw X3ZhbHMpOyBpKyspIHsKPiA+Pj4gKyAgICAgICAgaWYgKGZyYW1lcmF0ZS5udW0gPT0gY2NfbG9v a3VwX3ZhbHNbaV0ubnVtICYmCj4gPj4+ICsgICAgICAgICAgICBmcmFtZXJhdGUuZGVuID09IGNj X2xvb2t1cF92YWxzW2ldLmRlbikgewo+ID4+PiArICAgICAgICAgICAgY2NmLT5leHBlY3RlZF9j Y19jb3VudCA9IGNjX2xvb2t1cF92YWxzW2ldLmNjX2NvdW50Owo+ID4+PiArICAgICAgICAgICAg Y2NmLT5leHBlY3RlZF82MDggPSBjY19sb29rdXBfdmFsc1tpXS5udW1fNjA4Owo+ID4+PiArICAg ICAgICAgICAgYnJlYWs7Cj4gPj4+ICsgICAgICAgIH0KPiA+Pj4gKyAgICB9Cj4gPj4+ICsKPiA+ Pj4gKyAgICBpZiAoY2NmLT5leHBlY3RlZF82MDggPT0gMCkgewo+ID4+PiArICAgICAgICAvKiBX ZSBkaWRuJ3QgZmluZCBhbiBvdXRwdXQgZnJhbWUgd2Ugc3VwcG9ydC4gIFdlJ2xsIGxldCB0aGUK PiA+Pj4gY2FsbCBzdWNjZWVkCj4gPj4+ICsgICAgICAgICAgIGFuZCB0aGUgRklGTyB0byBiZSBh bGxvY2F0ZWQsIGJ1dCB0aGUgZXh0cmFjdC9pbmplY3QKPiA+Pj4gZnVuY3Rpb25zIHdpbGwgc2lt cGx5Cj4gPj4+ICsgICAgICAgICAgIGxlYXZlIGV2ZXJ5dGhpbmcgdGhlIHdheSBpdCBpcyAqLwo+ ID4+PiArICAgICAgICBjY2YtPnBhc3N0aHJvdWdoID0gMTsKPiA+Pj4gKyAgICB9Cj4gPj4+ICsK PiA+Pj4gKyAgICByZXR1cm4gY2NmOwo+ID4+PiArCj4gPj4+ICtlcnJvcjoKPiA+Pj4gKyAgICBm Zl9jY2ZpZm9fZnJlZXAoJmNjZik7Cj4gPj4+ICsgICAgcmV0dXJuIE5VTEw7Cj4gPj4+ICt9Cj4g Pj4+ICsKPiA+Pj4gK2ludCBmZl9jY2ZpZm9fZ2V0b3V0cHV0c2l6ZShBVkNDRmlmbyAqY2NmKQo+ ID4+PiArewo+ID4+PiArICAgIHJldHVybiBjY2YtPmV4cGVjdGVkX2NjX2NvdW50ICogQ0NfQllU RVNfUEVSX0VOVFJZOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtpbnQgZmZfY2NmaWZvX2NjZGV0 ZWN0ZWQoQVZDQ0ZpZm8gKmNjZikKPiA+Pj4gK3sKPiA+Pj4gKyAgICByZXR1cm4gY2NmLT5jY19k ZXRlY3RlZDsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAraW50IGZmX2NjZmlmb19pbmplY3RieXRl cyhBVkNDRmlmbyAqY2NmLCB1aW50OF90ICpjY19kYXRhLCBzaXplX3QgbGVuKQo+ID4+PiArewo+ ID4+PiArICAgIGludCBjY182MDhfdHVwbGVzID0gMDsKPiA+Pj4gKyAgICBpbnQgY2NfNzA4X3R1 cGxlcyA9IDA7Cj4gPj4+ICsgICAgaW50IGNjX2ZpbGxlZCA9IDA7Cj4gPj4+ICsKPiA+Pj4gKyAg ICBpZiAoY2NmLT5wYXNzdGhyb3VnaCkgewo+ID4+PiArICAgICAgICByZXR1cm4gMDsKPiA+Pj4g KyAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICBpZiAobGVuIDwgZmZfY2NmaWZvX2dldG91dHB1dHNp emUoY2NmKSkgewo+ID4+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ID4+PiAr ICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgIC8qIEluc2VydCBhbnkgYXZhaWxhYmxlIGRhdGEgZnJv bSB0aGUgNjA4IEZJRk8gKi8KPiA+Pj4gKyAgICBpZiAoY2NmLT5leHBlY3RlZF82MDggPD0gYXZf Zmlmb19jYW5fcmVhZChjY2YtPmNjXzYwOF9maWZvKSkKPiA+Pj4gKyAgICAgICAgY2NfNjA4X3R1 cGxlcyA9IGNjZi0+ZXhwZWN0ZWRfNjA4Owo+ID4+PiArICAgIGVsc2UKPiA+Pj4gKyAgICAgICAg Y2NfNjA4X3R1cGxlcyA9IGF2X2ZpZm9fY2FuX3JlYWQoY2NmLT5jY182MDhfZmlmbyk7Cj4gPj4+ ICsgICAgYXZfZmlmb19yZWFkKGNjZi0+Y2NfNjA4X2ZpZm8sIGNjX2RhdGEsIGNjXzYwOF90dXBs ZXMpOwo+ID4+PiArICAgIGNjX2ZpbGxlZCArPSBjY182MDhfdHVwbGVzOwo+ID4+PiArCj4gPj4+ ICsgICAgLyogSW5zZXJ0IGFueSBhdmFpbGFibGUgZGF0YSBmcm9tIHRoZSA3MDggRklGTyAqLwo+ ID4+PiArICAgIGlmICgoY2NmLT5leHBlY3RlZF9jY19jb3VudCAtIGNjX2ZpbGxlZCkgPD0KPiA+ Pj4gYXZfZmlmb19jYW5fcmVhZChjY2YtPmNjXzcwOF9maWZvKSkKPiA+Pj4gKyAgICAgICAgY2Nf NzA4X3R1cGxlcyA9IGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQgLSBjY19maWxsZWQ7Cj4gPj4+ICsg ICAgZWxzZQo+ID4+PiArICAgICAgICBjY183MDhfdHVwbGVzID0gYXZfZmlmb19jYW5fcmVhZChj Y2YtPmNjXzcwOF9maWZvKTsKPiA+Pj4gKyAgICBhdl9maWZvX3JlYWQoY2NmLT5jY183MDhfZmlm bywgJmNjX2RhdGFbY2NfZmlsbGVkICoKPiA+Pj4gQ0NfQllURVNfUEVSX0VOVFJZXSwgY2NfNzA4 X3R1cGxlcyk7Cj4gPj4+ICsgICAgY2NfZmlsbGVkICs9IGNjXzcwOF90dXBsZXM7Cj4gPj4+ICsK PiA+Pj4gKyAgICAvKiBJbnNlcnQgNzA4IHBhZGRpbmcgaW50byBhbnkgcmVtYWluaW5nIGZpZWxk cyAqLwo+ID4+PiArICAgIHdoaWxlIChjY19maWxsZWQgPCBjY2YtPmV4cGVjdGVkX2NjX2NvdW50 KSB7Cj4gPj4+ICsgICAgICAgIGNjX2RhdGFbY2NfZmlsbGVkICogQ0NfQllURVNfUEVSX0VOVFJZ XSAgICAgPSAweGZhOwo+ID4+PiArICAgICAgICBjY19kYXRhW2NjX2ZpbGxlZCAqIENDX0JZVEVT X1BFUl9FTlRSWSArIDFdID0gMHgwMDsKPiA+Pj4gKyAgICAgICAgY2NfZGF0YVtjY19maWxsZWQg KiBDQ19CWVRFU19QRVJfRU5UUlkgKyAyXSA9IDB4MDA7Cj4gPj4+ICsgICAgICAgIGNjX2ZpbGxl ZCsrOwo+ID4+PiArICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgIHJldHVybiAwOwo+ID4+PiArfQo+ ID4+PiArCj4gPj4+ICtpbnQgZmZfY2NmaWZvX2luamVjdChBVkNDRmlmbyAqY2NmLCBBVkZyYW1l ICpmcmFtZSkKPiA+Pj4gK3sKPiA+Pj4gKyAgICBBVkZyYW1lU2lkZURhdGEgKnNkOwo+ID4+PiAr ICAgIGludCByZXQ7Cj4gPj4+ICsKPiA+Pj4gKyAgICBpZiAoY2NmLT5wYXNzdGhyb3VnaCA9PSAx IHx8IGNjZi0+Y2NfZGV0ZWN0ZWQgPT0gMCkKPiA+Pj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gPj4+ ICsKPiA+Pj4gKyAgICBzZCA9IGF2X2ZyYW1lX25ld19zaWRlX2RhdGEoZnJhbWUsIEFWX0ZSQU1F X0RBVEFfQTUzX0NDLAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZl9j Y2ZpZm9fZ2V0b3V0cHV0c2l6ZShjY2YpKTsKPiA+Pj4gKyAgICBpZiAoc2QpIHsKPiA+Pj4gKyAg ICAgICAgcmV0ID0gZmZfY2NmaWZvX2luamVjdGJ5dGVzKGNjZiwgc2QtPmRhdGEsIHNkLT5zaXpl KTsKPiA+Pj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsKPiA+Pj4gKyAgICAgICAgICAgIGF2X2Zy YW1lX3JlbW92ZV9zaWRlX2RhdGEoZnJhbWUsIEFWX0ZSQU1FX0RBVEFfQTUzX0NDKTsKPiA+Pj4g KyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+ICsgICAgICAgIH0KPiA+Pj4gKyAgICB9Cj4g Pj4+ICsKPiA+Pj4gKyAgICByZXR1cm4gMDsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAraW50IGZm X2NjZmlmb19leHRyYWN0Ynl0ZXMoQVZDQ0ZpZm8gKmNjZiwgdWludDhfdCAqY2NfYnl0ZXMsIHNp emVfdAo+IGxlbikKPiA+Pj4gK3sKPiA+Pj4gKyAgICBpbnQgY2NfY291bnQgPSBsZW4gLyBDQ19C WVRFU19QRVJfRU5UUlk7Cj4gPj4+ICsKPiA+Pj4gKyAgICBpZiAoY2NmLT5wYXNzdGhyb3VnaCA9 PSAxKSB7Cj4gPj4+ICsgICAgICAgIGF2X2xvZ19vbmNlKGNjZi0+bG9nX2N0eCwgQVZfTE9HX1dB Uk5JTkcsIEFWX0xPR19ERUJVRywKPiA+Pj4gJmNjZi0+cGFzc3Rocm91Z2hfd2FybmluZywKPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgImNjX2ZpZm8gY2Fubm90IHRyYW5zY29kZSBjYXB0aW9u cyBmcHM9JWQvJWRcbiIsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgIGNjZi0+ZnJhbWVyYXRl Lm51bSwgY2NmLT5mcmFtZXJhdGUuZGVuKTsKPiA+Pj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gPj4+ ICsgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgY2NmLT5jY19kZXRlY3RlZCA9IDE7Cj4gPj4+ICsK PiA+Pj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNjX2NvdW50OyBpKyspIHsKPiA+Pj4gKyAg ICAgICAgLyogU2VlIEFOU0kvQ1RBLTcwOC1FIFNlYyA0LjMsIFRhYmxlIDMgKi8KPiA+Pj4gKyAg ICAgICAgdWludDhfdCBjY192YWxpZCA9IChjY19ieXRlc1tDQ19CWVRFU19QRVJfRU5UUlkqaV0g JiAweDA0KSA+Pgo+IDI7Cj4gPj4+ICsgICAgICAgIHVpbnQ4X3QgY2NfdHlwZSA9IGNjX2J5dGVz W0NDX0JZVEVTX1BFUl9FTlRSWSppXSAmIDB4MDM7Cj4gPj4+ICsgICAgICAgIGlmIChjY190eXBl ID09IDB4MDAgfHwgY2NfdHlwZSA9PSAweDAxKSB7Cj4gPj4+ICsgICAgICAgICAgICBhdl9maWZv X3dyaXRlKGNjZi0+Y2NfNjA4X2ZpZm8sCj4gPj4+ICZjY19ieXRlc1tDQ19CWVRFU19QRVJfRU5U UlkqaV0sIDEpOwo+ID4+PiArICAgICAgICB9IGVsc2UgaWYgKGNjX3ZhbGlkICYmIChjY190eXBl ID09IDB4MDIgfHwgY2NfdHlwZSA9PSAweDAzKSkgewo+ID4+PiArICAgICAgICAgICAgYXZfZmlm b193cml0ZShjY2YtPmNjXzcwOF9maWZvLAo+ID4+PiAmY2NfYnl0ZXNbQ0NfQllURVNfUEVSX0VO VFJZKmldLCAxKTsKPiA+Pj4gKyAgICAgICAgfQo+ID4+PiArICAgIH0KPiA+Pj4gKyAgICByZXR1 cm4gMDsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiArLyogUmVhZCB0aGUgQTUzIHNpZGUgZGF0YSwg ZGlzY2FyZCBwYWRkaW5nLCBhbmQgcHV0IDYwOC83MDggaW50bwo+ID4+PiArICAgcXVldWVzIHNv IHdlIGNhbiBlbnN1cmUgdGhleSBnZXQgaW50byB0aGUgb3V0cHV0IGZyYW1lcyBhdAo+ID4+PiAr ICAgdGhlIGNvcnJlY3QgcmF0ZS4uLiAqLwo+ID4+PiAraW50IGZmX2NjZmlmb19leHRyYWN0KEFW Q0NGaWZvICpjY2YsIEFWRnJhbWUgKmZyYW1lKQo+ID4+PiArewo+ID4+PiArICAgIEFWRnJhbWVT aWRlRGF0YSAqc2lkZV9kYXRhID0gYXZfZnJhbWVfZ2V0X3NpZGVfZGF0YShmcmFtZSwKPiA+Pj4g QVZfRlJBTUVfREFUQV9BNTNfQ0MpOwo+ID4+PiArICAgIGlmIChzaWRlX2RhdGEpIHsKPiA+Pj4g KyAgICAgICAgZmZfY2NmaWZvX2V4dHJhY3RieXRlcyhjY2YsIHNpZGVfZGF0YS0+ZGF0YSwgc2lk ZV9kYXRhLT5zaXplKTsKPiA+Pj4gKwo+ID4+PiArICAgICAgICAvKiBSZW1vdmUgdGhlIHNpZGUg ZGF0YSwgYXMgd2Ugd2lsbCByZS1jcmVhdGUgaXQgb24gdGhlCj4gPj4+ICsgICAgICAgICAgIG91 dHB1dCBhcyBuZWVkZWQgKi8KPiA+Pj4gKyAgICAgICAgaWYgKCFjY2YtPnBhc3N0aHJvdWdoKQo+ ID4+PiArICAgICAgICAgICAgYXZfZnJhbWVfcmVtb3ZlX3NpZGVfZGF0YShmcmFtZSwgQVZfRlJB TUVfREFUQV9BNTNfQ0MpOwo+ID4+PiArICAgIH0KPiA+Pj4gKyAgICByZXR1cm4gMDsKPiA+Pj4g K30KPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2NjZmlmby5oIGIvbGliYXZmaWx0ZXIv Y2NmaWZvLmgKPiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+Pj4gaW5kZXggMDAwMDAwMC4u NDRjOTI0NQo+ID4+PiAtLS0gL2Rldi9udWxsCj4gPj4+ICsrKyBiL2xpYmF2ZmlsdGVyL2NjZmlm by5oCj4gPj4+IEBAIC0wLDAgKzEsMTEwIEBACj4gPj4+ICsvKgo+ID4+PiArICogQ0VBLTcwOCBD bG9zZWQgQ2FwdGlvbmluZyBGSUZPCj4gPj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgTFROIEds b2JhbCBDb21tdW5pY2F0aW9ucwo+ID4+PiArICoKPiA+Pj4gKyAqIEF1dGhvcjogRGV2aW4gSGVp dG11ZWxsZXIgPGRoZWl0bXVlbGxlckBsdG5nbG9iYWwuY29tPgo+ID4+PiArICoKPiA+Pj4gKyAq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+Pj4gKyAqCj4gPj4+ICsgKiBGRm1wZWcg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gPj4+ICsg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCj4gPj4+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIKPiA+Pj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4+PiArICoKPiA+Pj4gKyAq IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAo+ID4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKPiA+Pj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPj4+ICsgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ID4+PiArICoKPiA+Pj4gKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKPiA+Pj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiA+Pj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKPiA+Pj4gMDIxMTAtMTMwMSBV U0EKPiA+Pj4gKyAqLwo+ID4+PiArCj4gPj4+ICsvKioKPiA+Pj4gKyAqIEBmaWxlCj4gPj4+ICsg KiBDQyBGSUZPIEJ1ZmZlcgo+ID4+PiArICovCj4gPj4+ICsKPiA+Pj4gKyNpZm5kZWYgQVZGSUxU RVJfQ0NGSUZPX0gKPiA+Pj4gKyNkZWZpbmUgQVZGSUxURVJfQ0NGSUZPX0gKPiA+Pj4gKwo+ID4+ PiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnV0aWwuaCIKPiA+Pj4gKyNpbmNsdWRlICJsaWJhdnV0 aWwvZnJhbWUuaCIKPiA+Pj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvZmlmby5oIgo+ID4+PiArCj4g Pj4+ICt0eXBlZGVmIHN0cnVjdCBBVkNDRmlmbyBBVkNDRmlmbzsKPiA+Pj4gKwo+ID4+PiArLyoq Cj4gPj4+ICsgKiBBbGxvY2F0ZSBhbiBBVkNDRmlmby4KPiA+Pj4gKyAqCj4gPj4+ICsgKiBAcGFy YW0gZnJhbWVyYXRlICAgb3V0cHV0IGZyYW1lcmF0ZQo+ID4+PiArICogQHBhcmFtIGxvZ19jdHgg ICAgIHVzZWQgZm9yIGFueSBhdl9sb2coKSBjYWxscwo+ID4+PiArICogQHJldHVybiAgICAgICAg ICAgIG5ld2x5IGFsbG9jYXRlZCBBVkNDRmlmbywgb3IgTlVMTCBvbiBlcnJvcgo+ID4+PiArICov Cj4gPj4+ICtBVkNDRmlmbyAqZmZfY2NmaWZvX2FsbG9jKEFWUmF0aW9uYWwgZnJhbWVyYXRlLCB2 b2lkICpsb2dfY3R4KTsKPiA+Pj4gKwo+ID4+PiArLyoqCj4gPj4+ICsgKiBGcmVlIGFuIEFWQ0NG aWZvCj4gPj4+ICsgKgo+ID4+PiArICogQHBhcmFtIGNjZiBQb2ludGVyIHRvIHRoZSBwb2ludGVy IHRvIHRoZSBBVkNDRmlmbyB3aGljaCBzaG91bGQgYmUKPiA+Pj4gZnJlZWQKPiA+Pj4gKyAqIEBu b3RlIGAqcHRyID0gTlVMTGAgaXMgc2FmZSBhbmQgbGVhZHMgdG8gbm8gYWN0aW9uLgo+ID4+PiAr ICovCj4gPj4+ICt2b2lkIGZmX2NjZmlmb19mcmVlcChBVkNDRmlmbyAqKmNjZik7Cj4gPj4+ICsK PiA+Pj4gKwo+ID4+PiArLyoqCj4gPj4+ICsgKiBFeHRyYWN0IENDIGRhdGEgZnJvbSBhbiBBVkZy YW1lCj4gPj4+ICsgKgo+ID4+PiArICogRXh0cmFjdCBDQyBieXRlcyBmcm9tIHRoZSBBVkZyYW1l LCBpbnNlcnQgdGhlbSBpbnRvIG91ciBxdWV1ZSwgYW5kCj4gPj4+ICsgKiByZW1vdmUgdGhlIHNp ZGUgZGF0YSBmcm9tIHRoZSBBVkZyYW1lLiAgVGhlIHNpZGUgZGF0YSBpcyByZW1vdmVkCj4gPj4+ ICsgKiBhcyBpdCB3aWxsIGJlIHJlLWluc2VydGVkIGF0IHRoZSBhcHByb3ByaWF0ZSByYXRlIGxh dGVyIGluIHRoZQo+ID4+PiArICogZmlsdGVyLgo+ID4+PiArICoKPiA+Pj4gKyAqIEBwYXJhbSBh ZiAgICAgICAgICBBVkNDRmlmbyB0byB3cml0ZSB0bwo+ID4+PiArICogQHBhcmFtIGZyYW1lICAg ICAgIEFWRnJhbWUgd2l0aCB0aGUgdmlkZW8gZnJhbWUgdG8gb3BlcmF0ZSBvbgo+ID4+PiArICog QHJldHVybiAgICAgICAgICAgIFplcm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgo+ ID4+PiArICogICAgICAgICAgICAgICAgICAgIGNvZGUgb24gZmFpbHVyZS4KPiA+Pj4gKyAqLwo+ ID4+PiAraW50IGZmX2NjZmlmb19leHRyYWN0KEFWQ0NGaWZvICpjY2YsIEFWRnJhbWUgKmZyYW1l KTsKPiA+Pj4gKwo+ID4+PiArLyoqCj4gPj4+ICsgKkp1c3QgbGlrZSBmZl9jY2ZpZm9fZXh0cmFj dCgpLCBidXQgdGFrZXMgdGhlIHJhdyBieXRlcyBpbnN0ZWFkIG9mIGFuCj4gPj4+IEFWRnJhbWUK PiA+Pj4gKyAqLwo+ID4+PiAraW50IGZmX2NjZmlmb19leHRyYWN0Ynl0ZXMoQVZDQ0ZpZm8gKmNj ZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbik7Cj4gPj4+ICsKPiA+Pj4gKy8qKgo+ID4+PiAr ICogUHJvdmlkZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhbiBvdXRwdXQgYnVmZmVyIHRvIGFsbG9j YXRlCj4gPj4+ICsgKgo+ID4+PiArICogQXNrIGZvciBob3cgbWFueSBieXRlcyB0aGUgb3V0cHV0 IHdpbGwgY29udGFpbiwgc28gdGhlIGNhbGxlciBjYW4KPiA+Pj4gYWxsb2NhdGUKPiA+Pj4gKyAq IGFuIGFwcHJvcHJpYXRlbHkgc2l6ZWQgYnVmZmVyIGFuZCBwYXNzIGl0IHRvCj4gZmZfY2NmaWZv X2luamVjdGJ5dGVzKCkKPiA+Pj4gKyAqCj4gPj4+ICsgKi8KPiA+Pj4gK2ludCBmZl9jY2ZpZm9f Z2V0b3V0cHV0c2l6ZShBVkNDRmlmbyAqY2NmKTsKPiA+Pj4gKwo+ID4+PiArLyoqCj4gPj4+ICsg KiBJbnNlcnQgQ0MgZGF0YSBmcm9tIHRoZSBGSUZPIGludG8gYW4gQVZGcmFtZSAoYXMgc2lkZSBk YXRhKQo+ID4+PiArICoKPiA+Pj4gKyAqIERlcXVldWUgdGhlIGFwcHJvcHJpYXRlIG51bWJlciBv ZiBDQyB0dXBsZXMgYmFzZWQgb24gdGhlCj4gPj4+ICsgKiBmcmFtZSByYXRlLCBhbmQgaW5zZXJ0 IHRoZW0gaW50byB0aGUgQVZGcmFtZQo+ID4+PiArICoKPiA+Pj4gKyAqIEBwYXJhbSBhZiAgICAg ICAgICBBVkNDRmlmbyB0byByZWFkIGZyb20KPiA+Pj4gKyAqIEBwYXJhbSBmcmFtZSAgICAgICBB VkZyYW1lIHdpdGggdGhlIHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPiA+Pj4gKyAqIEByZXR1 cm4gICAgICAgICAgICBaZXJvIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIEFWRVJST1IKPiA+Pj4g KyAqICAgICAgICAgICAgICAgICAgICBjb2RlIG9uIGZhaWx1cmUuCj4gPj4+ICsgKi8KPiA+Pj4g K2ludCBmZl9jY2ZpZm9faW5qZWN0KEFWQ0NGaWZvICpjY2YsIEFWRnJhbWUgKmZyYW1lKTsKPiA+ Pj4gKwo+ID4+PiArLyoqCj4gPj4+ICsgKiBKdXN0IGxpa2UgZmZfY2NmaWZvX2luamVjdCgpLCBi dXQgdGFrZXMgdGhlIHJhdyBieXRlcyB0byBpbnNlcnQgdGhlCj4gPj4+IENDIGRhdGEKPiA+Pj4g KyAqIGludCByYXRoZXIgdGhhbiBhbiBBVkZyYW1lCj4gPj4+ICsgKi8KPiA+Pj4gK2ludCBmZl9j Y2ZpZm9faW5qZWN0Ynl0ZXMoQVZDQ0ZpZm8gKmNjZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxl bik7Cj4gPj4+ICsKPiA+Pj4gKy8qKgo+ID4+PiArICogUmV0dXJucyAxIGlmIGNhcHRpb25zIGhh dmUgYmVlbiBmb3VuZCBhcyBhIHByaW9yIGNhbGwKPiA+Pj4gKyAqIHRvIGZmX2NjZmlmb19leHRy YWN0KCkgb3IgZmZfY2NmaWZvX2V4dHJhY3RieXRlcygpCj4gPj4+ICsgKi8KPiA+Pj4gK2ludCBm Zl9jY2ZpZm9fY2NkZXRlY3RlZChBVkNDRmlmbyAqY2NmKTsKPiA+Pj4gKwo+ID4+PiArI2VuZGlm IC8qIEFWRklMVEVSX0NDRklGT19IICovCj4gPj4+IC0tCj4gPj4+IDEuOC4zLjEKPiA+Pj4KPiA+ Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+Pj4g ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+ID4+PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+ ID4+PiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiA+ Pj4KPiA+Pj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gPj4+ IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmli ZSIuCj4gPj4+Cj4gPj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+ Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRl dmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwg bWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCg==