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 71DF44627A for ; Thu, 11 May 2023 14:14:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5B89C68C118; Thu, 11 May 2023 17:14:34 +0300 (EEST) Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 305E668C041 for ; Thu, 11 May 2023 17:14:28 +0300 (EEST) Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-6439b410679so5676978b3a.0 for ; Thu, 11 May 2023 07:14:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683814466; x=1686406466; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=FiWsJLktEx7UsJmENaQ+duZ72AaxAGVH7sX+/6FQBcM=; b=MYSsD2YWLohdey4G3OiXXVASSm8s9tdEmCqmuURouyRUD1ivGouqF7C2jGSdAd30hK URJ21vO8PlC99TeUm1jy+iS3i9XgnLX4xw69/AMeHmSVwkYVdDJ9w2NTn71/hcv0jWMr pEA+KJB3l5zKET3KwGSBMHme9zXfwdGOTQ5+9j5VIhjhJGl/S5pjmnEvbHqarOIvwerM BbmNmdzco9jDGOaWSfXi658r1i62MzyxQdBYh0vpkzA9YDhYursd5VKm4UO1Tr1Uu22P TYb9smM2XyAjtGavC2SlGxH/EVYAc+PZwDvjdaD0c6hAGWMPod8P6JpziSAH7oeyZ77R oBqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683814466; x=1686406466; 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=FiWsJLktEx7UsJmENaQ+duZ72AaxAGVH7sX+/6FQBcM=; b=OiaJdJiQsjz0bRMjvDckvTRvl0SnIY5e3jhvEGgIUJtf9evHiRRwhnqxMIIAbcQAwW 29QwNeGX9oljXAdYWZ4EW/2etTSOGAO3rTwuFQhNpO8Yaoxhw4++1aHdRwfoKx2JECis L2EmKilWVbxNTnLVQqftilG2RQRA96IzQk2BZLjsPcuOd/vwj7SHZtd9k170kKFODMUy VAjhW8LVlQnbNku+sFvVNyTJWoXzydzH3vUDUOaz82Yk9J7oR/DWLeWZX4KizgYTUbTY YrzQ8LFB8OElryTs+083qXOrlkTrOddirvvrk7luOuZqYffH3zToxxctoWvT+b8d6Cv7 qEkQ== X-Gm-Message-State: AC+VfDywWEKyIk0DvHasI/iXsPQr4LjZSgsYBZw/reNZiuUXUnYp62kI zwQbCHh3XPCE0aUe43CSDZPOT4PUxgOZdRECc02CmeqM+AHrBpzb X-Google-Smtp-Source: ACHHUZ7dO27/x+3dTq8CQDodxHWi6a0ZRGXnny2Rda5jDPVuKxqTTwRCSKD6i/McRGj0FmIBvqW/mUanbiFtS/+wXbY= X-Received: by 2002:a05:6a20:728d:b0:100:47a5:d754 with SMTP id o13-20020a056a20728d00b0010047a5d754mr20489509pzk.23.1683814465862; Thu, 11 May 2023 07:14:25 -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: Lance Wang Date: Thu, 11 May 2023 22:14:14 +0800 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: T24gV2VkLCBNYXkgMTAsIDIwMjMgYXQgNzowOOKAr1BNIExhbmNlIFdhbmcgPGxhbmNlLmxtd2Fu Z0BnbWFpbC5jb20+IHdyb3RlOgoKPgo+Cj4gT24gU3VuLCBNYXkgNywgMjAyMyBhdCAzOjAz4oCv UE0gTGFuY2UgV2FuZyA8bGFuY2UubG13YW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPj4gTEdUTSBm b3IgdGhlIHBhdGNoc2V0Lgo+Pgo+Pgo+IEkgd2lsbCBoZWxwIHRvIGFwcGx5IHRoZSBwYXRjaHNl dCB0b21vcnJvdyBpZiBubyBmdXJ0aGVyIGNvbW1lbnRzLiB0aHguCj4KCmFwcGxpZWQsIHRoYW5r cyBmb3IgdGhlIGVmZm9ydC4KCgo+Cj4KPj4gT24gU2F0LCBNYXkgNiwgMjAyMyBhdCAyOjEz4oCv QU0gRGV2aW4gSGVpdG11ZWxsZXIgPAo+PiBkZXZpbi5oZWl0bXVlbGxlckBsdG5nbG9iYWwuY29t PiB3cm90ZToKPj4KPj4+IFdoZW4gdHJhbnNjb2RpbmcgdmlkZW8gdGhhdCBjb250YWlucyA3MDgg Y2xvc2VkIGNhcHRpb25zLCB0aGUKPj4+IGNhcHRpb24gZGF0YSBpcyB0aWVkIHRvIHRoZSBmcmFt ZXMgYXMgc2lkZSBkYXRhLiAgU2ltcGx5IGRyb3BwaW5nCj4+PiBvciBhZGRpbmcgZnJhbWVzIHRv IGNoYW5nZSB0aGUgZnJhbWVyYXRlIHdpbGwgcmVzdWx0IGluIGxvc3Mgb2YKPj4+IGRhdGEsIHNv IHRoZSBjYXB0aW9uIGRhdGEgbmVlZHMgdG8gYmUgcHJlc2VydmVkIGFuZCByZWZvcm1hdHRlZC4K Pj4+Cj4+PiBGb3IgZXhhbXBsZSwgd2l0aG91dCB0aGlzIHBhdGNoIGNvbnZlcnRpbmcgNzIwcDU5 IHRvIDEwODBpNTkKPj4+IHdvdWxkIHJlc3VsdCBpbiBsb3NzIG9mIDUwJSBvZiB0aGUgY2FwdGlv biBieXRlcywgcmVzdWx0aW5nIGluCj4+PiBnYXJibGVkIDYwOCBjYXB0aW9ucyBhbmQgNzA4IHBy b2JhYmx5IHdvdWxkbid0IHJlbmRlciBhdCBhbGwuCj4+PiBGdXJ0aGVyLCB0aGUgZnJhbWVzIHRo YXQgYXJlIHRoZXJlIHdpbGwgaGF2ZSBhbiBpbGxlZ2FsCj4+PiBjY19jb3VudCBmb3IgdGhlIHRh cmdldCBmcmFtZXJhdGUsIHNvIHNvbWUgZGVjb2RlcnMgbWF5IGlnbm9yZQo+Pj4gdGhlIHBhY2tl dHMgZW50aXJlbHkuCj4+Pgo+Pj4gRXh0cmFjdCB0aGUgNjA4IGFuZCA3MDggdHVwbGVzIGFuZCBp bnNlcnQgdGhlbSBvbnRvIHF1ZXVlcy4gIFRoZW4KPj4+IGFmdGVyIGRyb3BwaW5nL2FkZGluZyBm cmFtZXMsIHJlLXdyaXRlIHRoZSB0dXBsZXMgYmFjayBpbnRvIHRoZQo+Pj4gcmVzdWx0aW5nIGZy YW1lcyBhdCB0aGUgYXBwcm9wcmlhdGUgcmF0ZSBnaXZlbiB0aGUgdGFyZ2V0Cj4+PiBmcmFtZXJh dGUuICBUaGlzIGluY2x1ZGVzIGJvdGggaGF2aW5nIHRoZSBjb3JyZWN0IGNjX2NvdW50IGFzCj4+ PiB3ZWxsIGFzIGNsb2NraW5nIG91dCB0aGUgNjA4IHBhaXJzIGF0IHRoZSBhcHByb3ByaWF0ZSBy YXRlLgo+Pj4KPj4+IFRoYW5rcyB0byBMYW5jZSBXYW5nIDxsYW5jZS5sbXdhbmdAZ21haWwuY29t PiwgQW50b24KPj4+IEtoaXJub3YgPGFudG9uQGtoaXJub3YubmV0PiwgYW5kIE1pY2hhZWwgTmll ZGVybWF5ZXIgPAo+Pj4gbWljaGFlbEBuaWVkZXJtYXllci5jYz4KPj4+IGZvciBwcm92aWRpbmcg cmV2aWV3L2ZlZWRiYWNrLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IERldmluIEhlaXRtdWVsbGVy IDxkaGVpdG11ZWxsZXJAbHRuZ2xvYmFsLmNvbT4KPj4+IC0tLQo+Pj4gIGxpYmF2ZmlsdGVyL01h a2VmaWxlIHwgICAxICsKPj4+ICBsaWJhdmZpbHRlci9jY2ZpZm8uYyB8IDIyNAo+Pj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgbGliYXZm aWx0ZXIvY2NmaWZvLmggfCAxMTAgKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gIDMgZmls ZXMgY2hhbmdlZCwgMzM1IGluc2VydGlvbnMoKykKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZmaWx0ZXIvY2NmaWZvLmMKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvY2Nm aWZvLmgKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUgYi9saWJhdmZp bHRlci9NYWtlZmlsZQo+Pj4gaW5kZXggNDgyYWVhZi4uNjhjOGYxNCAxMDA2NDQKPj4+IC0tLSBh L2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4+PiArKysgYi9saWJhdmZpbHRlci9NYWtlZmlsZQo+Pj4g QEAgLTE0LDYgKzE0LDcgQEAgT0JKUyA9IGFsbGZpbHRlcnMubwo+Pj4gICAgICAgICAgICAgICAg ICBcCj4+PiAgICAgICAgIGJ1ZmZlcnNpbmsubwo+Pj4gIFwKPj4+ICAgICAgICAgYnVmZmVyc3Jj Lm8KPj4+IFwKPj4+ICAgICAgICAgY29sb3JzcGFjZS5vCj4+PiAgXAo+Pj4gKyAgICAgICBjY2Zp Zm8ubwo+Pj4gIFwKPj4+ICAgICAgICAgZHJhd3V0aWxzLm8KPj4+IFwKPj4+ICAgICAgICAgZmlm by5vCj4+PiAgXAo+Pj4gICAgICAgICBmb3JtYXRzLm8KPj4+IFwKPj4+IGRpZmYgLS1naXQgYS9s aWJhdmZpbHRlci9jY2ZpZm8uYyBiL2xpYmF2ZmlsdGVyL2NjZmlmby5jCj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uNWZiNjhjZQo+Pj4gLS0tIC9kZXYvbnVsbAo+ Pj4gKysrIGIvbGliYXZmaWx0ZXIvY2NmaWZvLmMKPj4+IEBAIC0wLDAgKzEsMjI0IEBACj4+PiAr LyoKPj4+ICsgKiBDRUEtNzA4IENsb3NlZCBDYXB0aW9uaW5nIEZJRk8KPj4+ICsgKiBDb3B5cmln aHQgKGMpIDIwMjMgTFROIEdsb2JhbCBDb21tdW5pY2F0aW9ucwo+Pj4gKyAqCj4+PiArICogQXV0 aG9yOiBEZXZpbiBIZWl0bXVlbGxlciA8ZGhlaXRtdWVsbGVyQGx0bmdsb2JhbC5jb20+Cj4+PiAr ICoKPj4+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+PiArICoKPj4+ICsgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4+ PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+Pj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgo+Pj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+Pj4gKyAqCj4+PiArICogRkZt cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKPj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+Pj4gKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+PiArICoKPj4+ICsgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+PiAr ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQo+Pj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEKPj4+IDAyMTEwLTEzMDEgVVNBCj4+PiArICovCj4+PiArCj4+ PiArI2luY2x1ZGUgImNjZmlmby5oIgo+Pj4gKwo+Pj4gK3N0cnVjdCBBVkNDRmlmbyB7Cj4+PiAr ICAgIEFWRmlmbyAqY2NfNjA4X2ZpZm87Cj4+PiArICAgIEFWRmlmbyAqY2NfNzA4X2ZpZm87Cj4+ PiArICAgIEFWUmF0aW9uYWwgZnJhbWVyYXRlOwo+Pj4gKyAgICBpbnQgZXhwZWN0ZWRfY2NfY291 bnQ7Cj4+PiArICAgIGludCBleHBlY3RlZF82MDg7Cj4+PiArICAgIGludCBjY19kZXRlY3RlZDsK Pj4+ICsgICAgaW50IHBhc3N0aHJvdWdoOwo+Pj4gKyAgICBpbnQgcGFzc3Rocm91Z2hfd2Fybmlu ZzsKPj4+ICsgICAgdm9pZCAqbG9nX2N0eDsKPj4+ICt9Owo+Pj4gKwo+Pj4gKyNkZWZpbmUgTUFY X0NDX0VMRU1FTlRTIDEyOAo+Pj4gKyNkZWZpbmUgQ0NfQllURVNfUEVSX0VOVFJZIDMKPj4+ICsK Pj4+ICtzdHJ1Y3QgY2NfbG9va3VwIHsKPj4+ICsgICAgaW50IG51bTsKPj4+ICsgICAgaW50IGRl bjsKPj4+ICsgICAgaW50IGNjX2NvdW50Owo+Pj4gKyAgICBpbnQgbnVtXzYwODsKPj4+ICt9Owo+ Pj4gKwo+Pj4gK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgY2NfbG9va3VwIGNjX2xvb2t1cF92YWxzW10g PSB7Cj4+PiArICAgIHsgMTUsIDEsIDQwLCA0IH0sCj4+PiArICAgIHsgMjQsIDEsIDI1LCAzIH0s Cj4+PiArICAgIHsgMjQwMDAsIDEwMDEsIDI1LCAzIH0sCj4+PiArICAgIHsgMzAsIDEsIDIwLCAy IH0sCj4+PiArICAgIHsgMzAwMDAsIDEwMDEsIDIwLCAyfSwKPj4+ICsgICAgeyA2MCwgMSwgMTAs IDEgfSwKPj4+ICsgICAgeyA2MDAwMCwgMTAwMSwgMTAsIDF9LAo+Pj4gK307Cj4+PiArCj4+PiAr dm9pZCBmZl9jY2ZpZm9fZnJlZXAoQVZDQ0ZpZm8gKipjY2YpCj4+PiArewo+Pj4gKyAgICBBVkND RmlmbyAqdG1wID0gKmNjZjsKPj4+ICsgICAgaWYgKHRtcCkgewo+Pj4gKyAgICAgICAgYXZfZmlm b19mcmVlcDIoJnRtcC0+Y2NfNjA4X2ZpZm8pOwo+Pj4gKyAgICAgICAgYXZfZmlmb19mcmVlcDIo JnRtcC0+Y2NfNzA4X2ZpZm8pOwo+Pj4gKyAgICB9Cj4+PiArICAgIGF2X2ZyZWVwKGNjZik7Cj4+ PiArfQo+Pj4gKwo+Pj4gK0FWQ0NGaWZvICpmZl9jY2ZpZm9fYWxsb2MoQVZSYXRpb25hbCBmcmFt ZXJhdGUsIHZvaWQgKmxvZ19jdHgpCj4+PiArewo+Pj4gKyAgICBBVkNDRmlmbyAqY2NmOwo+Pj4g KyAgICBpbnQgaTsKPj4+ICsKPj4+ICsgICAgY2NmID0gYXZfbWFsbG9jeihzaXplb2YoKmNjZikp Owo+Pj4gKyAgICBpZiAoIWNjZikKPj4+ICsgICAgICAgIHJldHVybiBOVUxMOwo+Pj4gKwo+Pj4g KyAgICBjY2YtPmxvZ19jdHggPSBsb2dfY3R4Owo+Pj4gKyAgICBjY2YtPmZyYW1lcmF0ZSA9IGZy YW1lcmF0ZTsKPj4+ICsKPj4+ICsgICAgaWYgKCEoY2NmLT5jY183MDhfZmlmbyA9IGF2X2ZpZm9f YWxsb2MyKE1BWF9DQ19FTEVNRU5UUywKPj4+IENDX0JZVEVTX1BFUl9FTlRSWSwgMCkpKQo+Pj4g KyAgICAgICAgZ290byBlcnJvcjsKPj4+ICsKPj4+ICsgICAgaWYgKCEoY2NmLT5jY182MDhfZmlm byA9IGF2X2ZpZm9fYWxsb2MyKE1BWF9DQ19FTEVNRU5UUywKPj4+IENDX0JZVEVTX1BFUl9FTlRS WSwgMCkpKQo+Pj4gKyAgICAgICAgZ290byBlcnJvcjsKPj4+ICsKPj4+ICsgICAgLyogQmFzZWQg b24gdGhlIHRhcmdldCBGUFMsIGZpZ3VyZSBvdXQgdGhlIGV4cGVjdGVkIGNjX2NvdW50IGFuZAo+ Pj4gbnVtYmVyIG9mCj4+PiArICAgICAgIDYwOCB0dXBsZXMgcGVyIHBhY2tldC4gIFNlZSBBTlNJ L0NUQS03MDgtRSBTZWMgNC4zLjYuMS4gKi8KPj4+ICsgICAgZm9yIChpID0gMDsgaSA8IEZGX0FS UkFZX0VMRU1TKGNjX2xvb2t1cF92YWxzKTsgaSsrKSB7Cj4+PiArICAgICAgICBpZiAoZnJhbWVy YXRlLm51bSA9PSBjY19sb29rdXBfdmFsc1tpXS5udW0gJiYKPj4+ICsgICAgICAgICAgICBmcmFt ZXJhdGUuZGVuID09IGNjX2xvb2t1cF92YWxzW2ldLmRlbikgewo+Pj4gKyAgICAgICAgICAgIGNj Zi0+ZXhwZWN0ZWRfY2NfY291bnQgPSBjY19sb29rdXBfdmFsc1tpXS5jY19jb3VudDsKPj4+ICsg ICAgICAgICAgICBjY2YtPmV4cGVjdGVkXzYwOCA9IGNjX2xvb2t1cF92YWxzW2ldLm51bV82MDg7 Cj4+PiArICAgICAgICAgICAgYnJlYWs7Cj4+PiArICAgICAgICB9Cj4+PiArICAgIH0KPj4+ICsK Pj4+ICsgICAgaWYgKGNjZi0+ZXhwZWN0ZWRfNjA4ID09IDApIHsKPj4+ICsgICAgICAgIC8qIFdl IGRpZG4ndCBmaW5kIGFuIG91dHB1dCBmcmFtZSB3ZSBzdXBwb3J0LiAgV2UnbGwgbGV0IHRoZQo+ Pj4gY2FsbCBzdWNjZWVkCj4+PiArICAgICAgICAgICBhbmQgdGhlIEZJRk8gdG8gYmUgYWxsb2Nh dGVkLCBidXQgdGhlIGV4dHJhY3QvaW5qZWN0Cj4+PiBmdW5jdGlvbnMgd2lsbCBzaW1wbHkKPj4+ ICsgICAgICAgICAgIGxlYXZlIGV2ZXJ5dGhpbmcgdGhlIHdheSBpdCBpcyAqLwo+Pj4gKyAgICAg ICAgY2NmLT5wYXNzdGhyb3VnaCA9IDE7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgcmV0dXJu IGNjZjsKPj4+ICsKPj4+ICtlcnJvcjoKPj4+ICsgICAgZmZfY2NmaWZvX2ZyZWVwKCZjY2YpOwo+ Pj4gKyAgICByZXR1cm4gTlVMTDsKPj4+ICt9Cj4+PiArCj4+PiAraW50IGZmX2NjZmlmb19nZXRv dXRwdXRzaXplKEFWQ0NGaWZvICpjY2YpCj4+PiArewo+Pj4gKyAgICByZXR1cm4gY2NmLT5leHBl Y3RlZF9jY19jb3VudCAqIENDX0JZVEVTX1BFUl9FTlRSWTsKPj4+ICt9Cj4+PiArCj4+PiAraW50 IGZmX2NjZmlmb19jY2RldGVjdGVkKEFWQ0NGaWZvICpjY2YpCj4+PiArewo+Pj4gKyAgICByZXR1 cm4gY2NmLT5jY19kZXRlY3RlZDsKPj4+ICt9Cj4+PiArCj4+PiAraW50IGZmX2NjZmlmb19pbmpl Y3RieXRlcyhBVkNDRmlmbyAqY2NmLCB1aW50OF90ICpjY19kYXRhLCBzaXplX3QgbGVuKQo+Pj4g K3sKPj4+ICsgICAgaW50IGNjXzYwOF90dXBsZXMgPSAwOwo+Pj4gKyAgICBpbnQgY2NfNzA4X3R1 cGxlcyA9IDA7Cj4+PiArICAgIGludCBjY19maWxsZWQgPSAwOwo+Pj4gKwo+Pj4gKyAgICBpZiAo Y2NmLT5wYXNzdGhyb3VnaCkgewo+Pj4gKyAgICAgICAgcmV0dXJuIDA7Cj4+PiArICAgIH0KPj4+ ICsKPj4+ICsgICAgaWYgKGxlbiA8IGZmX2NjZmlmb19nZXRvdXRwdXRzaXplKGNjZikpIHsKPj4+ ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsg ICAgLyogSW5zZXJ0IGFueSBhdmFpbGFibGUgZGF0YSBmcm9tIHRoZSA2MDggRklGTyAqLwo+Pj4g KyAgICBpZiAoY2NmLT5leHBlY3RlZF82MDggPD0gYXZfZmlmb19jYW5fcmVhZChjY2YtPmNjXzYw OF9maWZvKSkKPj4+ICsgICAgICAgIGNjXzYwOF90dXBsZXMgPSBjY2YtPmV4cGVjdGVkXzYwODsK Pj4+ICsgICAgZWxzZQo+Pj4gKyAgICAgICAgY2NfNjA4X3R1cGxlcyA9IGF2X2ZpZm9fY2FuX3Jl YWQoY2NmLT5jY182MDhfZmlmbyk7Cj4+PiArICAgIGF2X2ZpZm9fcmVhZChjY2YtPmNjXzYwOF9m aWZvLCBjY19kYXRhLCBjY182MDhfdHVwbGVzKTsKPj4+ICsgICAgY2NfZmlsbGVkICs9IGNjXzYw OF90dXBsZXM7Cj4+PiArCj4+PiArICAgIC8qIEluc2VydCBhbnkgYXZhaWxhYmxlIGRhdGEgZnJv bSB0aGUgNzA4IEZJRk8gKi8KPj4+ICsgICAgaWYgKChjY2YtPmV4cGVjdGVkX2NjX2NvdW50IC0g Y2NfZmlsbGVkKSA8PQo+Pj4gYXZfZmlmb19jYW5fcmVhZChjY2YtPmNjXzcwOF9maWZvKSkKPj4+ ICsgICAgICAgIGNjXzcwOF90dXBsZXMgPSBjY2YtPmV4cGVjdGVkX2NjX2NvdW50IC0gY2NfZmls bGVkOwo+Pj4gKyAgICBlbHNlCj4+PiArICAgICAgICBjY183MDhfdHVwbGVzID0gYXZfZmlmb19j YW5fcmVhZChjY2YtPmNjXzcwOF9maWZvKTsKPj4+ICsgICAgYXZfZmlmb19yZWFkKGNjZi0+Y2Nf NzA4X2ZpZm8sICZjY19kYXRhW2NjX2ZpbGxlZCAqCj4+PiBDQ19CWVRFU19QRVJfRU5UUlldLCBj Y183MDhfdHVwbGVzKTsKPj4+ICsgICAgY2NfZmlsbGVkICs9IGNjXzcwOF90dXBsZXM7Cj4+PiAr Cj4+PiArICAgIC8qIEluc2VydCA3MDggcGFkZGluZyBpbnRvIGFueSByZW1haW5pbmcgZmllbGRz ICovCj4+PiArICAgIHdoaWxlIChjY19maWxsZWQgPCBjY2YtPmV4cGVjdGVkX2NjX2NvdW50KSB7 Cj4+PiArICAgICAgICBjY19kYXRhW2NjX2ZpbGxlZCAqIENDX0JZVEVTX1BFUl9FTlRSWV0gICAg ID0gMHhmYTsKPj4+ICsgICAgICAgIGNjX2RhdGFbY2NfZmlsbGVkICogQ0NfQllURVNfUEVSX0VO VFJZICsgMV0gPSAweDAwOwo+Pj4gKyAgICAgICAgY2NfZGF0YVtjY19maWxsZWQgKiBDQ19CWVRF U19QRVJfRU5UUlkgKyAyXSA9IDB4MDA7Cj4+PiArICAgICAgICBjY19maWxsZWQrKzsKPj4+ICsg ICAgfQo+Pj4gKwo+Pj4gKyAgICByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiAraW50IGZmX2Nj Zmlmb19pbmplY3QoQVZDQ0ZpZm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpCj4+PiArewo+Pj4gKyAg ICBBVkZyYW1lU2lkZURhdGEgKnNkOwo+Pj4gKyAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAgICBp ZiAoY2NmLT5wYXNzdGhyb3VnaCA9PSAxIHx8IGNjZi0+Y2NfZGV0ZWN0ZWQgPT0gMCkKPj4+ICsg ICAgICAgIHJldHVybiAwOwo+Pj4gKwo+Pj4gKyAgICBzZCA9IGF2X2ZyYW1lX25ld19zaWRlX2Rh dGEoZnJhbWUsIEFWX0ZSQU1FX0RBVEFfQTUzX0NDLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmZfY2NmaWZvX2dldG91dHB1dHNpemUoY2NmKSk7Cj4+PiArICAgIGlmIChz ZCkgewo+Pj4gKyAgICAgICAgcmV0ID0gZmZfY2NmaWZvX2luamVjdGJ5dGVzKGNjZiwgc2QtPmRh dGEsIHNkLT5zaXplKTsKPj4+ICsgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4+PiArICAgICAgICAg ICAgYXZfZnJhbWVfcmVtb3ZlX3NpZGVfZGF0YShmcmFtZSwgQVZfRlJBTUVfREFUQV9BNTNfQ0Mp Owo+Pj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgICAgICB9Cj4+PiArICAgIH0K Pj4+ICsKPj4+ICsgICAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCBmZl9jY2ZpZm9f ZXh0cmFjdGJ5dGVzKEFWQ0NGaWZvICpjY2YsIHVpbnQ4X3QgKmNjX2J5dGVzLCBzaXplX3QgbGVu KQo+Pj4gK3sKPj4+ICsgICAgaW50IGNjX2NvdW50ID0gbGVuIC8gQ0NfQllURVNfUEVSX0VOVFJZ Owo+Pj4gKwo+Pj4gKyAgICBpZiAoY2NmLT5wYXNzdGhyb3VnaCA9PSAxKSB7Cj4+PiArICAgICAg ICBhdl9sb2dfb25jZShjY2YtPmxvZ19jdHgsIEFWX0xPR19XQVJOSU5HLCBBVl9MT0dfREVCVUcs Cj4+PiAmY2NmLT5wYXNzdGhyb3VnaF93YXJuaW5nLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ImNjX2ZpZm8gY2Fubm90IHRyYW5zY29kZSBjYXB0aW9ucyBmcHM9JWQvJWRcbiIsCj4+PiArICAg ICAgICAgICAgICAgICAgICBjY2YtPmZyYW1lcmF0ZS5udW0sIGNjZi0+ZnJhbWVyYXRlLmRlbik7 Cj4+PiArICAgICAgICByZXR1cm4gMDsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBjY2YtPmNj X2RldGVjdGVkID0gMTsKPj4+ICsKPj4+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjY19jb3Vu dDsgaSsrKSB7Cj4+PiArICAgICAgICAvKiBTZWUgQU5TSS9DVEEtNzA4LUUgU2VjIDQuMywgVGFi bGUgMyAqLwo+Pj4gKyAgICAgICAgdWludDhfdCBjY192YWxpZCA9IChjY19ieXRlc1tDQ19CWVRF U19QRVJfRU5UUlkqaV0gJiAweDA0KSA+PiAyOwo+Pj4gKyAgICAgICAgdWludDhfdCBjY190eXBl ID0gY2NfYnl0ZXNbQ0NfQllURVNfUEVSX0VOVFJZKmldICYgMHgwMzsKPj4+ICsgICAgICAgIGlm IChjY190eXBlID09IDB4MDAgfHwgY2NfdHlwZSA9PSAweDAxKSB7Cj4+PiArICAgICAgICAgICAg YXZfZmlmb193cml0ZShjY2YtPmNjXzYwOF9maWZvLAo+Pj4gJmNjX2J5dGVzW0NDX0JZVEVTX1BF Ul9FTlRSWSppXSwgMSk7Cj4+PiArICAgICAgICB9IGVsc2UgaWYgKGNjX3ZhbGlkICYmIChjY190 eXBlID09IDB4MDIgfHwgY2NfdHlwZSA9PSAweDAzKSkgewo+Pj4gKyAgICAgICAgICAgIGF2X2Zp Zm9fd3JpdGUoY2NmLT5jY183MDhfZmlmbywKPj4+ICZjY19ieXRlc1tDQ19CWVRFU19QRVJfRU5U UlkqaV0sIDEpOwo+Pj4gKyAgICAgICAgfQo+Pj4gKyAgICB9Cj4+PiArICAgIHJldHVybiAwOwo+ Pj4gK30KPj4+ICsKPj4+ICsvKiBSZWFkIHRoZSBBNTMgc2lkZSBkYXRhLCBkaXNjYXJkIHBhZGRp bmcsIGFuZCBwdXQgNjA4LzcwOCBpbnRvCj4+PiArICAgcXVldWVzIHNvIHdlIGNhbiBlbnN1cmUg dGhleSBnZXQgaW50byB0aGUgb3V0cHV0IGZyYW1lcyBhdAo+Pj4gKyAgIHRoZSBjb3JyZWN0IHJh dGUuLi4gKi8KPj4+ICtpbnQgZmZfY2NmaWZvX2V4dHJhY3QoQVZDQ0ZpZm8gKmNjZiwgQVZGcmFt ZSAqZnJhbWUpCj4+PiArewo+Pj4gKyAgICBBVkZyYW1lU2lkZURhdGEgKnNpZGVfZGF0YSA9IGF2 X2ZyYW1lX2dldF9zaWRlX2RhdGEoZnJhbWUsCj4+PiBBVl9GUkFNRV9EQVRBX0E1M19DQyk7Cj4+ PiArICAgIGlmIChzaWRlX2RhdGEpIHsKPj4+ICsgICAgICAgIGZmX2NjZmlmb19leHRyYWN0Ynl0 ZXMoY2NmLCBzaWRlX2RhdGEtPmRhdGEsIHNpZGVfZGF0YS0+c2l6ZSk7Cj4+PiArCj4+PiArICAg ICAgICAvKiBSZW1vdmUgdGhlIHNpZGUgZGF0YSwgYXMgd2Ugd2lsbCByZS1jcmVhdGUgaXQgb24g dGhlCj4+PiArICAgICAgICAgICBvdXRwdXQgYXMgbmVlZGVkICovCj4+PiArICAgICAgICBpZiAo IWNjZi0+cGFzc3Rocm91Z2gpCj4+PiArICAgICAgICAgICAgYXZfZnJhbWVfcmVtb3ZlX3NpZGVf ZGF0YShmcmFtZSwgQVZfRlJBTUVfREFUQV9BNTNfQ0MpOwo+Pj4gKyAgICB9Cj4+PiArICAgIHJl dHVybiAwOwo+Pj4gK30KPj4+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9jY2ZpZm8uaCBiL2xp YmF2ZmlsdGVyL2NjZmlmby5oCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAw MDAwMC4uNDRjOTI0NQo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvbGliYXZmaWx0ZXIvY2Nm aWZvLmgKPj4+IEBAIC0wLDAgKzEsMTEwIEBACj4+PiArLyoKPj4+ICsgKiBDRUEtNzA4IENsb3Nl ZCBDYXB0aW9uaW5nIEZJRk8KPj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgTFROIEdsb2JhbCBD b21tdW5pY2F0aW9ucwo+Pj4gKyAqCj4+PiArICogQXV0aG9yOiBEZXZpbiBIZWl0bXVlbGxlciA8 ZGhlaXRtdWVsbGVyQGx0bmdsb2JhbC5jb20+Cj4+PiArICoKPj4+ICsgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiBGRm1wZWcuCj4+PiArICoKPj4+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4+PiArICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+Pj4gKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+Pj4g KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgo+Pj4gKyAqCj4+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQo+Pj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCj4+PiArICoKPj4+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZG bXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+Pj4gKyAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKPj4+ IDAyMTEwLTEzMDEgVVNBCj4+PiArICovCj4+PiArCj4+PiArLyoqCj4+PiArICogQGZpbGUKPj4+ ICsgKiBDQyBGSUZPIEJ1ZmZlcgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpZm5kZWYgQVZGSUxURVJf Q0NGSUZPX0gKPj4+ICsjZGVmaW5lIEFWRklMVEVSX0NDRklGT19ICj4+PiArCj4+PiArI2luY2x1 ZGUgImxpYmF2dXRpbC9hdnV0aWwuaCIKPj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2ZyYW1lLmgi Cj4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9maWZvLmgiCj4+PiArCj4+PiArdHlwZWRlZiBzdHJ1 Y3QgQVZDQ0ZpZm8gQVZDQ0ZpZm87Cj4+PiArCj4+PiArLyoqCj4+PiArICogQWxsb2NhdGUgYW4g QVZDQ0ZpZm8uCj4+PiArICoKPj4+ICsgKiBAcGFyYW0gZnJhbWVyYXRlICAgb3V0cHV0IGZyYW1l cmF0ZQo+Pj4gKyAqIEBwYXJhbSBsb2dfY3R4ICAgICB1c2VkIGZvciBhbnkgYXZfbG9nKCkgY2Fs bHMKPj4+ICsgKiBAcmV0dXJuICAgICAgICAgICAgbmV3bHkgYWxsb2NhdGVkIEFWQ0NGaWZvLCBv ciBOVUxMIG9uIGVycm9yCj4+PiArICovCj4+PiArQVZDQ0ZpZm8gKmZmX2NjZmlmb19hbGxvYyhB VlJhdGlvbmFsIGZyYW1lcmF0ZSwgdm9pZCAqbG9nX2N0eCk7Cj4+PiArCj4+PiArLyoqCj4+PiAr ICogRnJlZSBhbiBBVkNDRmlmbwo+Pj4gKyAqCj4+PiArICogQHBhcmFtIGNjZiBQb2ludGVyIHRv IHRoZSBwb2ludGVyIHRvIHRoZSBBVkNDRmlmbyB3aGljaCBzaG91bGQgYmUKPj4+IGZyZWVkCj4+ PiArICogQG5vdGUgYCpwdHIgPSBOVUxMYCBpcyBzYWZlIGFuZCBsZWFkcyB0byBubyBhY3Rpb24u Cj4+PiArICovCj4+PiArdm9pZCBmZl9jY2ZpZm9fZnJlZXAoQVZDQ0ZpZm8gKipjY2YpOwo+Pj4g Kwo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIEV4dHJhY3QgQ0MgZGF0YSBmcm9tIGFuIEFWRnJhbWUK Pj4+ICsgKgo+Pj4gKyAqIEV4dHJhY3QgQ0MgYnl0ZXMgZnJvbSB0aGUgQVZGcmFtZSwgaW5zZXJ0 IHRoZW0gaW50byBvdXIgcXVldWUsIGFuZAo+Pj4gKyAqIHJlbW92ZSB0aGUgc2lkZSBkYXRhIGZy b20gdGhlIEFWRnJhbWUuICBUaGUgc2lkZSBkYXRhIGlzIHJlbW92ZWQKPj4+ICsgKiBhcyBpdCB3 aWxsIGJlIHJlLWluc2VydGVkIGF0IHRoZSBhcHByb3ByaWF0ZSByYXRlIGxhdGVyIGluIHRoZQo+ Pj4gKyAqIGZpbHRlci4KPj4+ICsgKgo+Pj4gKyAqIEBwYXJhbSBhZiAgICAgICAgICBBVkNDRmlm byB0byB3cml0ZSB0bwo+Pj4gKyAqIEBwYXJhbSBmcmFtZSAgICAgICBBVkZyYW1lIHdpdGggdGhl IHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPj4+ICsgKiBAcmV0dXJuICAgICAgICAgICAgWmVy byBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBBVkVSUk9SCj4+PiArICogICAgICAgICAgICAgICAg ICAgIGNvZGUgb24gZmFpbHVyZS4KPj4+ICsgKi8KPj4+ICtpbnQgZmZfY2NmaWZvX2V4dHJhY3Qo QVZDQ0ZpZm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpOwo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqSnVz dCBsaWtlIGZmX2NjZmlmb19leHRyYWN0KCksIGJ1dCB0YWtlcyB0aGUgcmF3IGJ5dGVzIGluc3Rl YWQgb2YgYW4KPj4+IEFWRnJhbWUKPj4+ICsgKi8KPj4+ICtpbnQgZmZfY2NmaWZvX2V4dHJhY3Ri eXRlcyhBVkNDRmlmbyAqY2NmLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuKTsKPj4+ICsKPj4+ ICsvKioKPj4+ICsgKiBQcm92aWRlIHRoZSBzaXplIGluIGJ5dGVzIG9mIGFuIG91dHB1dCBidWZm ZXIgdG8gYWxsb2NhdGUKPj4+ICsgKgo+Pj4gKyAqIEFzayBmb3IgaG93IG1hbnkgYnl0ZXMgdGhl IG91dHB1dCB3aWxsIGNvbnRhaW4sIHNvIHRoZSBjYWxsZXIgY2FuCj4+PiBhbGxvY2F0ZQo+Pj4g KyAqIGFuIGFwcHJvcHJpYXRlbHkgc2l6ZWQgYnVmZmVyIGFuZCBwYXNzIGl0IHRvIGZmX2NjZmlm b19pbmplY3RieXRlcygpCj4+PiArICoKPj4+ICsgKi8KPj4+ICtpbnQgZmZfY2NmaWZvX2dldG91 dHB1dHNpemUoQVZDQ0ZpZm8gKmNjZik7Cj4+PiArCj4+PiArLyoqCj4+PiArICogSW5zZXJ0IEND IGRhdGEgZnJvbSB0aGUgRklGTyBpbnRvIGFuIEFWRnJhbWUgKGFzIHNpZGUgZGF0YSkKPj4+ICsg Kgo+Pj4gKyAqIERlcXVldWUgdGhlIGFwcHJvcHJpYXRlIG51bWJlciBvZiBDQyB0dXBsZXMgYmFz ZWQgb24gdGhlCj4+PiArICogZnJhbWUgcmF0ZSwgYW5kIGluc2VydCB0aGVtIGludG8gdGhlIEFW RnJhbWUKPj4+ICsgKgo+Pj4gKyAqIEBwYXJhbSBhZiAgICAgICAgICBBVkNDRmlmbyB0byByZWFk IGZyb20KPj4+ICsgKiBAcGFyYW0gZnJhbWUgICAgICAgQVZGcmFtZSB3aXRoIHRoZSB2aWRlbyBm cmFtZSB0byBvcGVyYXRlIG9uCj4+PiArICogQHJldHVybiAgICAgICAgICAgIFplcm8gb24gc3Vj Y2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgo+Pj4gKyAqICAgICAgICAgICAgICAgICAgICBjb2Rl IG9uIGZhaWx1cmUuCj4+PiArICovCj4+PiAraW50IGZmX2NjZmlmb19pbmplY3QoQVZDQ0ZpZm8g KmNjZiwgQVZGcmFtZSAqZnJhbWUpOwo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIEp1c3QgbGlrZSBm Zl9jY2ZpZm9faW5qZWN0KCksIGJ1dCB0YWtlcyB0aGUgcmF3IGJ5dGVzIHRvIGluc2VydCB0aGUK Pj4+IENDIGRhdGEKPj4+ICsgKiBpbnQgcmF0aGVyIHRoYW4gYW4gQVZGcmFtZQo+Pj4gKyAqLwo+ Pj4gK2ludCBmZl9jY2ZpZm9faW5qZWN0Ynl0ZXMoQVZDQ0ZpZm8gKmNjZiwgdWludDhfdCAqZGF0 YSwgc2l6ZV90IGxlbik7Cj4+PiArCj4+PiArLyoqCj4+PiArICogUmV0dXJucyAxIGlmIGNhcHRp b25zIGhhdmUgYmVlbiBmb3VuZCBhcyBhIHByaW9yIGNhbGwKPj4+ICsgKiB0byBmZl9jY2ZpZm9f ZXh0cmFjdCgpIG9yIGZmX2NjZmlmb19leHRyYWN0Ynl0ZXMoKQo+Pj4gKyAqLwo+Pj4gK2ludCBm Zl9jY2ZpZm9fY2NkZXRlY3RlZChBVkNDRmlmbyAqY2NmKTsKPj4+ICsKPj4+ICsjZW5kaWYgLyog QVZGSUxURVJfQ0NGSUZPX0ggKi8KPj4+IC0tCj4+PiAxLjguMy4xCj4+Pgo+Pj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+IGZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKPj4+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+PiBodHRwczovL2ZmbXBl Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPj4+Cj4+PiBUbyB1bnN1YnNjcmli ZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPj4+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4+Pgo+PgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==