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 391F5432B6 for ; Tue, 25 Apr 2023 14:28:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0ED8D68BEF5; Tue, 25 Apr 2023 17:28:42 +0300 (EEST) Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4C16968B4BB for ; Tue, 25 Apr 2023 17:28:35 +0300 (EEST) Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-1a686260adcso63140085ad.0 for ; Tue, 25 Apr 2023 07:28:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682432913; x=1685024913; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=vs6+J+LszRA2ViVcwy4W9XcO9mOVD1CxxEEFM+L7XGc=; b=k3xBJPJK5sdgWVWQn6qWc1zes4x62+f+uj3htiQJ7bvN4K2dQqDYqrHXRlevrMyQTc h2hVuMe0bdvPozxRS4PdcsihpYAULdJIwH8uVMV1uPNVso/n07iUgXHp/a9hGpa+WY+q 3HwGaUPjWBCUvMrjxNh8Dd4epXopJk02Q/87HsuD7T/ChsS2wB3+vwPuOe1VM2TKOcAj GlVtKnlFx1VN+VPSUAY26RfvSeCtqXSMHIQuI/WHYfc9b0GvNCBC9fWzuKk00i0LLDXr BaVvwmoBUxRGXZrtRgULErYtbyT1m2jnb4zDU5qpvOrjflCxy/i8/jwQdajT7hWIAjpC nKFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682432913; x=1685024913; 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=vs6+J+LszRA2ViVcwy4W9XcO9mOVD1CxxEEFM+L7XGc=; b=f+JlsoOk0oZ78e9gm3AkxN7zChER+u1lykMHoGs9UCDAzOyjshgcug8UcUrJirAfEA v9rtUe70Yqam6XpdSIYuIMkk7UsmEvvTGFZpKE0FqKvaKN8IZmAbUIrnPdNy8kTGMi8t mQPKsVl6MxBnabI9yagE+xpnxK0ik5URoLxKClV/lDGaE3iknazsnRZDAl+fKHYVqice cg8fpLbZWUHzRCb1UHdd2trDUy+qTaig14+TDeJA/+1gaqVxOahNjdSxqKDE5htovlPK Zc61jFAAUqBDBOkz0cMnDb8Ziid1W/A+5f2iA6BO2rtfvcOsiubIKKhSEuxM3dTuPx8U 96BA== X-Gm-Message-State: AAQBX9cY7WLWN4dqpqXvJv6mFH9wnInUISVyEeZ1Ml/uA4w39xr8gykZ V3xkErpxlVwIvegNPaqK5EgED6stebRpax/R5vVW47o+PXezzK5nFHh3xw== X-Google-Smtp-Source: AKy350boWIyEF2u5/NxYcYx9xvOf9+Dq88FGqNLrKrdDeombtTbzA0n+5sboSx6NF3o+lvXiTPF9yKG+ybBNpBXfrRg= X-Received: by 2002:a17:902:ba8a:b0:1a5:1b94:e63d with SMTP id k10-20020a170902ba8a00b001a51b94e63dmr16462603pls.65.1682432912906; Tue, 25 Apr 2023 07:28:32 -0700 (PDT) MIME-Version: 1.0 References: <1682087095-582-1-git-send-email-dheitmueller@ltnglobal.com> <1682087095-582-2-git-send-email-dheitmueller@ltnglobal.com> In-Reply-To: <1682087095-582-2-git-send-email-dheitmueller@ltnglobal.com> From: Lance Wang Date: Tue, 25 Apr 2023 22:28:21 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v3 1/5] 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: T24gRnJpLCBBcHIgMjEsIDIwMjMgYXQgOToyOeKAr1BNIERldmluIEhlaXRtdWVsbGVyIDwKZGV2 aW4uaGVpdG11ZWxsZXJAbHRuZ2xvYmFsLmNvbT4gd3JvdGU6Cgo+IFdoZW4gdHJhbnNjb2Rpbmcg dmlkZW8gdGhhdCBjb250YWlucyA3MDggY2xvc2VkIGNhcHRpb25zLCB0aGUKPiBjYXB0aW9uIGRh dGEgaXMgdGllZCB0byB0aGUgZnJhbWVzIGFzIHNpZGUgZGF0YS4gIFNpbXBseSBkcm9wcGluZwo+ IG9yIGFkZGluZyBmcmFtZXMgdG8gY2hhbmdlIHRoZSBmcmFtZXJhdGUgd2lsbCByZXN1bHQgaW4g bG9zcyBvZgo+IGRhdGEsIHNvIHRoZSBjYXB0aW9uIGRhdGEgbmVlZHMgdG8gYmUgcHJlc2VydmVk IGFuZCByZWZvcm1hdHRlZC4KPgo+IEZvciBleGFtcGxlLCB3aXRob3V0IHRoaXMgcGF0Y2ggY29u dmVydGluZyA3MjBwNTkgdG8gMTA4MGk1OQo+IHdvdWxkIHJlc3VsdCBpbiBsb3NzIG9mIDUwJSBv ZiB0aGUgY2FwdGlvbiBieXRlcywgcmVzdWx0aW5nIGluCj4gZ2FyYmxlZCA2MDggY2FwdGlvbnMg YW5kIDcwOCBwcm9iYWJseSB3b3VsZG4ndCByZW5kZXIgYXQgYWxsLgo+IEZ1cnRoZXIsIHRoZSBm cmFtZXMgdGhhdCBhcmUgdGhlcmUgd2lsbCBoYXZlIGFuIGlsbGVnYWwKPiBjY19jb3VudCBmb3Ig dGhlIHRhcmdldCBmcmFtZXJhdGUsIHNvIHNvbWUgZGVjb2RlcnMgbWF5IGlnbm9yZQo+IHRoZSBw YWNrZXRzIGVudGlyZWx5Lgo+Cj4gRXh0cmFjdCB0aGUgNjA4IGFuZCA3MDggdHVwbGVzIGFuZCBp bnNlcnQgdGhlbSBvbnRvIHF1ZXVlcy4gIFRoZW4KPiBhZnRlciBkcm9wcGluZy9hZGRpbmcgZnJh bWVzLCByZS13cml0ZSB0aGUgdHVwbGVzIGJhY2sgaW50byB0aGUKPiByZXN1bHRpbmcgZnJhbWVz IGF0IHRoZSBhcHByb3ByaWF0ZSByYXRlIGdpdmVuIHRoZSB0YXJnZXQKPiBmcmFtZXJhdGUuICBU aGlzIGluY2x1ZGVzIGJvdGggaGF2aW5nIHRoZSBjb3JyZWN0IGNjX2NvdW50IGFzCj4gd2VsbCBh cyBjbG9ja2luZyBvdXQgdGhlIDYwOCBwYWlycyBhdCB0aGUgYXBwcm9wcmlhdGUgcmF0ZS4KPgo+ IFNpZ25lZC1vZmYtYnk6IERldmluIEhlaXRtdWVsbGVyIDxkaGVpdG11ZWxsZXJAbHRuZ2xvYmFs LmNvbT4KPiAtLS0KPiAgbGliYXZmaWx0ZXIvTWFrZWZpbGUgfCAgIDEgKwo+ICBsaWJhdmZpbHRl ci9jY2ZpZm8uYyB8IDE5MQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICBsaWJhdmZpbHRlci9jY2ZpZm8uaCB8ICA4NSArKysrKysrKysrKysr KysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDI3NyBpbnNlcnRpb25zKCspCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9jY2ZpZm8uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZmaWx0ZXIvY2NmaWZvLmgKPgo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmls ZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gaW5kZXggNzFlMTk4Yi4uNjI4YWRlOCAxMDA2NDQK PiAtLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxl Cj4gQEAgLTE0LDYgKzE0LDcgQEAgT0JKUyA9IGFsbGZpbHRlcnMubwo+ICAgICAgICAgICAgICAg IFwKPiAgICAgICAgIGJ1ZmZlcnNpbmsubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgYnVmZmVyc3JjLm8gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICBjb2xv cnNwYWNlLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiArICAgICAgIGNjZmlmby5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgZHJhd3V0aWxzLm8gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICBm aWZvLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPiAgICAgICAgIGZvcm1hdHMubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9j Y2ZpZm8uYyBiL2xpYmF2ZmlsdGVyL2NjZmlmby5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi4zZjhiZTU3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2ZmlsdGVy L2NjZmlmby5jCj4gQEAgLTAsMCArMSwxOTEgQEAKPiArLyoKPiArICogQ0VBLTcwOCBDbG9zZWQg Q2FwdGlvbmluZyBGSUZPCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBMVE4gR2xvYmFsIENvbW11 bmljYXRpb25zCj4gKyAqCj4gKyAqIEF1dGhvcjogRGV2aW4gSGVpdG11ZWxsZXIgPGRoZWl0bXVl bGxlckBsdG5nbG9iYWwuY29tPgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4g KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExp Y2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v ciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImNj Zmlmby5oIgo+ICsKPiArc3RydWN0IEFWQ0NGaWZvIHsKPiArICAgIEFWRmlmbyAqY2NfNjA4X2Zp Zm87Cj4gKyAgICBBVkZpZm8gKmNjXzcwOF9maWZvOwo+ICsgICAgaW50IGV4cGVjdGVkX2NjX2Nv dW50Owo+ICsgICAgaW50IGV4cGVjdGVkXzYwODsKPiArICAgIGludCBjY19kZXRlY3RlZDsKPiAr ICAgIHZvaWQgKmxvZ19jdHg7Cj4gK307Cj4gKwo+ICsjZGVmaW5lIE1BWF9DQ19FTEVNRU5UUyAx MjgKPiArI2RlZmluZSBDQ19CWVRFU19QRVJfRU5UUlkgMwo+ICsKPiArc3RydWN0IGNjX2xvb2t1 cCB7Cj4gKyAgICBpbnQgbnVtOwo+ICsgICAgaW50IGRlbjsKPiArICAgIGludCBjY19jb3VudDsK PiArICAgIGludCBudW1fNjA4Owo+ICt9Owo+ICsKPiArY29uc3Qgc3RhdGljIHN0cnVjdCBjY19s b29rdXAgY2NfbG9va3VwX3ZhbHNbXSA9IHsKPiArICAgIHsgMTUsIDEsIDQwLCA0IH0sCj4gKyAg ICB7IDI0LCAxLCAyNSwgMyB9LAo+ICsgICAgeyAyNDAwMCwgMTAwMSwgMjUsIDMgfSwKPiArICAg IHsgMzAsIDEsIDIwLCAyIH0sCj4gKyAgICB7IDMwMDAwLCAxMDAxLCAyMCwgMn0sCj4gKyAgICB7 IDYwLCAxLCAxMCwgMSB9LAo+ICsgICAgeyA2MDAwMCwgMTAwMSwgMTAsIDF9LAo+ICt9Owo+ICsK PiArdm9pZCBmZl9jY2ZpZm9fZnJlZXAoQVZDQ0ZpZm8gKipjY2YpCj4gK3sKPiArICAgIGlmIChj Y2YgJiYgKmNjZikgewo+ICsgICAgICAgIEFWQ0NGaWZvICp0bXAgPSAqY2NmOwo+ICsgICAgICAg IGlmICh0bXAtPmNjXzYwOF9maWZvKQo+ICsgICAgICAgICAgICBhdl9maWZvX2ZyZWVwMigmdG1w LT5jY182MDhfZmlmbyk7Cj4gKyAgICAgICAgaWYgKHRtcC0+Y2NfNzA4X2ZpZm8pCj4gKyAgICAg ICAgICAgIGF2X2ZpZm9fZnJlZXAyKCZ0bXAtPmNjXzcwOF9maWZvKTsKPiArICAgICAgICBhdl9m cmVlcCgqY2NmKTsKPiArICAgIH0KPiArfQo+ICsKPiArQVZDQ0ZpZm8gKmZmX2NjZmlmb19hbGxv YyhBVlJhdGlvbmFsICpmcmFtZXJhdGUsIHZvaWQgKmxvZ19jdHgpCj4gK3sKPiArICAgIEFWQ0NG aWZvICpjY2Y7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBjY2YgPSBhdl9tYWxsb2N6KHNpemVv ZigqY2NmKSk7Cj4gKyAgICBpZiAoIWNjZikKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4g KyAgICBpZiAoIShjY2YtPmNjXzcwOF9maWZvID0gYXZfZmlmb19hbGxvYzIoTUFYX0NDX0VMRU1F TlRTLAo+IENDX0JZVEVTX1BFUl9FTlRSWSwgMCkpKQo+ICsgICAgICAgIGdvdG8gZXJyb3I7Cj4g Kwo+ICsgICAgaWYgKCEoY2NmLT5jY182MDhfZmlmbyA9IGF2X2ZpZm9fYWxsb2MyKE1BWF9DQ19F TEVNRU5UUywKPiBDQ19CWVRFU19QRVJfRU5UUlksIDApKSkKPiArICAgICAgICBnb3RvIGVycm9y Owo+ICsKPiArICAgIC8qIEJhc2VkIG9uIHRoZSB0YXJnZXQgRlBTLCBmaWd1cmUgb3V0IHRoZSBl eHBlY3RlZCBjY19jb3VudCBhbmQKPiBudW1iZXIgb2YKPiArICAgICAgIDYwOCB0dXBsZXMgcGVy IHBhY2tldC4gIFNlZSBBTlNJL0NUQS03MDgtRSBTZWMgNC4zLjYuMS4gKi8KPiArICAgIGZvciAo aSA9IDA7IGkgPCAoc2l6ZW9mKGNjX2xvb2t1cF92YWxzKSAvIHNpemVvZihzdHJ1Y3QgY2NfbG9v a3VwKSk7Cj4gaSsrKSB7Cj4KCkkgcHJlZmVyIHRvIHVzZSBGRl9BUlJBWV9FTEVNUyBoZXJlLgoK Cj4gKyAgICAgICAgaWYgKGZyYW1lcmF0ZS0+bnVtID09IGNjX2xvb2t1cF92YWxzW2ldLm51bSAm Jgo+ICsgICAgICAgICAgICBmcmFtZXJhdGUtPmRlbiA9PSBjY19sb29rdXBfdmFsc1tpXS5kZW4p IHsKPiArICAgICAgICAgICAgY2NmLT5leHBlY3RlZF9jY19jb3VudCA9IGNjX2xvb2t1cF92YWxz W2ldLmNjX2NvdW50Owo+ICsgICAgICAgICAgICBjY2YtPmV4cGVjdGVkXzYwOCA9IGNjX2xvb2t1 cF92YWxzW2ldLm51bV82MDg7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiAr ICAgIH0KPiArCj4gKyAgICBpZiAoY2NmLT5leHBlY3RlZF82MDggPT0gMCkgewo+ICsgICAgICAg IGF2X2xvZyhjY2YtPmxvZ19jdHgsIEFWX0xPR19XQVJOSU5HLCAiY2NfZmlmbyBjYW5ub3QgdHJh bnNjb2RlCj4gY2FwdGlvbnMgZnBzPSVkLyVkXG4iLAo+ICsgICAgICAgICAgICAgICBmcmFtZXJh dGUtPm51bSwgZnJhbWVyYXRlLT5kZW4pOwo+ICsgICAgICAgIHJldHVybiBOVUxMOwo+Cgp3aHkg bm90IHVzZSBnb3RvIGVycm9yPyAgSSBmZWVsIGNjZiBzaG91bGQgYmUgZnJlZWQuCgoKPiArICAg IH0KPiArCj4gKyAgICByZXR1cm4gY2NmOwo+ICsKPiArZXJyb3I6Cj4gKyAgICBmZl9jY2ZpZm9f ZnJlZXAoJmNjZik7Cj4gKyAgICByZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAraW50IGZmX2NjZmlm b19pbmplY3QoQVZDQ0ZpZm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpCj4gK3sKPiArICAgIEFWRnJh bWVTaWRlRGF0YSAqc2Q7Cj4gKyAgICBpbnQgY2NfZmlsbGVkID0gMDsKPiArICAgIGludCBpOwo+ ICsKPiArICAgIGlmICghY2NmKQo+ICsgICAgICAgIHJldHVybiAwOwo+CgorICogQHJldHVybiAg ICAgICAgICAgIFplcm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgorICogICAgICAg ICAgICAgICAgICAgIGNvZGUgb24gZmFpbHVyZS4KCiB3aHkgbm90IHJldHVybiBlcnJvciBjb2Rl PyAgdGhlIHNhbWUgdG8gb3RoZXIgZmFpbHVyZSBjb25kaXRpb24uCgorCj4gKyAgICBpZiAoY2Nm LT5jY19kZXRlY3RlZCA9PSAwIHx8IGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQgPT0gMCkKPiArICAg ICAgICByZXR1cm4gMDsKPiArCj4gKyAgICBzZCA9IGF2X2ZyYW1lX25ld19zaWRlX2RhdGEoZnJh bWUsIEFWX0ZSQU1FX0RBVEFfQTUzX0NDLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQgKgo+IENDX0JZVEVTX1BFUl9FTlRSWSk7Cj4gKyAg ICBpZiAoIXNkKQo+ICsgICAgICAgIHJldHVybiAwOwo+CgpzYW1lLgoKCj4gKwo+ICsgICAgZm9y IChpID0gMDsgaSA8IGNjZi0+ZXhwZWN0ZWRfNjA4OyBpKyspIHsKPiArICAgICAgICBpZiAoYXZf Zmlmb19jYW5fcmVhZChjY2YtPmNjXzYwOF9maWZvKSA+PSBDQ19CWVRFU19QRVJfRU5UUlkpIHsK PiArICAgICAgICAgICAgYXZfZmlmb19yZWFkKGNjZi0+Y2NfNjA4X2ZpZm8sICZzZC0+ZGF0YVtj Y19maWxsZWQgKgo+IENDX0JZVEVTX1BFUl9FTlRSWV0sCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBDQ19CWVRFU19QRVJfRU5UUlkpOwo+ICsgICAgICAgICAgICBjY19maWxsZWQrKzsKPiAr ICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAg ICB9Cj4gKwo+ICsgICAgLyogSW5zZXJ0IGFueSBhdmFpbGFibGUgZGF0YSBmcm9tIHRoZSA3MDgg RklGTyAqLwo+ICsgICAgd2hpbGUgKGNjX2ZpbGxlZCA8IGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQp IHsKPiArICAgICAgICBpZiAoYXZfZmlmb19jYW5fcmVhZChjY2YtPmNjXzcwOF9maWZvKSA+PSBD Q19CWVRFU19QRVJfRU5UUlkpIHsKPiArICAgICAgICAgICAgYXZfZmlmb19yZWFkKGNjZi0+Y2Nf NzA4X2ZpZm8sICZzZC0+ZGF0YVtjY19maWxsZWQgKgo+IENDX0JZVEVTX1BFUl9FTlRSWV0sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBDQ19CWVRFU19QRVJfRU5UUlkpOwo+ICsgICAgICAg ICAgICBjY19maWxsZWQrKzsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBicmVh azsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogSW5zZXJ0IDcwOCBwYWRkaW5n IGludG8gYW55IHJlbWFpbmluZyBmaWVsZHMgKi8KPiArICAgIHdoaWxlIChjY19maWxsZWQgPCBj Y2YtPmV4cGVjdGVkX2NjX2NvdW50KSB7Cj4gKyAgICAgICAgc2QtPmRhdGFbY2NfZmlsbGVkICog Q0NfQllURVNfUEVSX0VOVFJZXSAgICAgPSAweGZhOwo+ICsgICAgICAgIHNkLT5kYXRhW2NjX2Zp bGxlZCAqIENDX0JZVEVTX1BFUl9FTlRSWSArIDFdID0gMHgwMDsKPiArICAgICAgICBzZC0+ZGF0 YVtjY19maWxsZWQgKiBDQ19CWVRFU19QRVJfRU5UUlkgKyAyXSA9IDB4MDA7Cj4gKyAgICAgICAg Y2NfZmlsbGVkKys7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2lu dCBmZl9jY2ZpZm9fZXh0cmFjdChBVkNDRmlmbyAqY2NmLCBBVkZyYW1lICpmcmFtZSkKPiArewo+ ICsgICAgaW50IGk7Cj4gKwo+ICsgICAgaWYgKCFjY2YpCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4K CisgKiBAcmV0dXJuICAgICAgICAgICAgWmVybyBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBBVkVS Uk9SCisgKiAgICAgICAgICAgICAgICAgICAgY29kZSBvbiBmYWlsdXJlLgpzYW1lIHF1ZXN0aW9u LgoKCj4gKwo+ICsgICAgLyogUmVhZCB0aGUgQTUzIHNpZGUgZGF0YSwgZGlzY2FyZCBwYWRkaW5n LCBhbmQgcHV0IDYwOC83MDggaW50bwo+ICsgICAgICAgcXVldWVzIHNvIHdlIGNhbiBlbnN1cmUg dGhleSBnZXQgaW50byB0aGUgb3V0cHV0IGZyYW1lcyBhdAo+ICsgICAgICAgdGhlIGNvcnJlY3Qg cmF0ZS4uLiAqLwo+ICsgICAgaWYgKGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQgPiAwKSB7Cj4gKyAg ICAgICAgQVZGcmFtZVNpZGVEYXRhICpzaWRlX2RhdGEgPSBhdl9mcmFtZV9nZXRfc2lkZV9kYXRh KGZyYW1lLAo+IEFWX0ZSQU1FX0RBVEFfQTUzX0NDKTsKPiArICAgICAgICBpZiAoc2lkZV9kYXRh KSB7Cj4gKyAgICAgICAgICAgIHVpbnQ4X3QgKmNjX2J5dGVzID0gc2lkZV9kYXRhLT5kYXRhOwo+ ICsgICAgICAgICAgICBpbnQgY2NfY291bnQgPSBzaWRlX2RhdGEtPnNpemUgLyBDQ19CWVRFU19Q RVJfRU5UUlk7Cj4gKyAgICAgICAgICAgIGNjZi0+Y2NfZGV0ZWN0ZWQgPSAxOwo+ICsKPiArICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNjX2NvdW50OyBpKyspIHsKPiArICAgICAgICAgICAg ICAgIC8qIFNlZSBBTlNJL0NUQS03MDgtRSBTZWMgNC4zLCBUYWJsZSAzICovCj4gKyAgICAgICAg ICAgICAgICB1aW50OF90IGNjX3ZhbGlkID0gKGNjX2J5dGVzW0NDX0JZVEVTX1BFUl9FTlRSWSpp XSAmCj4gMHgwNCkgPj4gMjsKPiArICAgICAgICAgICAgICAgIHVpbnQ4X3QgY2NfdHlwZSA9IGNj X2J5dGVzW0NDX0JZVEVTX1BFUl9FTlRSWSppXSAmIDB4MDM7Cj4gKyAgICAgICAgICAgICAgICBp ZiAoY2NfdHlwZSA9PSAweDAwIHx8IGNjX3R5cGUgPT0gMHgwMSkgewo+ICsgICAgICAgICAgICAg ICAgICAgIGF2X2ZpZm9fd3JpdGUoY2NmLT5jY182MDhfZmlmbywKPiAmY2NfYnl0ZXNbQ0NfQllU RVNfUEVSX0VOVFJZKmldLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nf QllURVNfUEVSX0VOVFJZKTsKPiArICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2NfdmFsaWQg JiYgKGNjX3R5cGUgPT0gMHgwMiB8fCBjY190eXBlID09Cj4gMHgwMykpIHsKPiArICAgICAgICAg ICAgICAgICAgICBhdl9maWZvX3dyaXRlKGNjZi0+Y2NfNzA4X2ZpZm8sCj4gJmNjX2J5dGVzW0ND X0JZVEVTX1BFUl9FTlRSWSppXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENDX0JZVEVTX1BFUl9FTlRSWSk7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg IH0KPiArCj4gKyAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc2lkZSBkYXRhLCBhcyB3ZSB3aWxs IHJlLWNyZWF0ZSBpdCBvbiB0aGUKPiArICAgICAgICAgICAgICAgb3V0cHV0IGFzIG5lZWRlZCAq Lwo+ICsgICAgICAgICAgICBhdl9mcmFtZV9yZW1vdmVfc2lkZV9kYXRhKGZyYW1lLCBBVl9GUkFN RV9EQVRBX0E1M19DQyk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7Cj4g K30KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvY2NmaWZvLmggYi9saWJhdmZpbHRlci9jY2Zp Zm8uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzBlOGI5Ygo+IC0t LSAvZGV2L251bGwKPiArKysgYi9saWJhdmZpbHRlci9jY2ZpZm8uaAo+IEBAIC0wLDAgKzEsODUg QEAKPiArLyoKPiArICogQ0VBLTcwOCBDbG9zZWQgQ2FwdGlvbmluZyBGSUZPCj4gKyAqIENvcHly aWdodCAoYykgMjAyMyBMVE4gR2xvYmFsIENvbW11bmljYXRpb25zCj4gKyAqCj4gKyAqIEF1dGhv cjogRGV2aW4gSGVpdG11ZWxsZXIgPGRoZWl0bXVlbGxlckBsdG5nbG9iYWwuY29tPgo+ICsgKgo+ ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsg KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEg VVNBCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIEBmaWxlCj4gKyAqIENDIEZJRk8gQnVmZmVyCj4g KyAqLwo+ICsKPiArI2lmbmRlZiBBVlVUSUxfQ0NGSUZPX0gKPiArI2RlZmluZSBBVlVUSUxfQ0NG SUZPX0gKPgoKQVZVVElMIGlzIHdyb25nIGhlcmUKCgo+ICsKPiArI2luY2x1ZGUgImxpYmF2dXRp bC9hdnV0aWwuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9mcmFtZS5oIgo+ICsjaW5jbHVkZSAi bGliYXZ1dGlsL2ZpZm8uaCIKPiArCj4gK3R5cGVkZWYgc3RydWN0IEFWQ0NGaWZvIEFWQ0NGaWZv Owo+ICsKPiArLyoqCj4gKyAqIEFsbG9jYXRlIGFuIEFWQ0NGaWZvLgo+ICsgKgo+ICsgKiBAcGFy YW0gc2FtcGxlX2ZtdCAgc2FtcGxlIGZvcm1hdAo+ICsgKiBAcGFyYW0gY2hhbm5lbHMgICAgbnVt YmVyIG9mIGNoYW5uZWxzCj4gKyAqIEBwYXJhbSBuYl9zYW1wbGVzICBpbml0aWFsIGFsbG9jYXRp b24gc2l6ZSwgaW4gc2FtcGxlcwo+CgpUaGlzIGlzIG1pc21hdGNoIGNvbW1lbnRzCgoKPiArICog QHJldHVybiAgICAgICAgICAgIG5ld2x5IGFsbG9jYXRlZCBBVkNDRmlmbywgb3IgTlVMTCBvbiBl cnJvcgo+ICsgKi8KPiArQVZDQ0ZpZm8gKmZmX2NjZmlmb19hbGxvYyhBVlJhdGlvbmFsICpmcmFt ZXJhdGUsIHZvaWQgKmxvZ19jdHgpOwo+ICsKPiArLyoqCj4gKyAqIEZyZWUgYW4gQVZDQ0ZpZm8K PiArICoKPiArICogQHBhcmFtIGNjZiBQb2ludGVyIHRvIHRoZSBwb2ludGVyIHRvIHRoZSBBVkND RmlmbyB3aGljaCBzaG91bGQgYmUgZnJlZWQKPiArICogQG5vdGUgYCpwdHIgPSBOVUxMYCBpcyBz YWZlIGFuZCBsZWFkcyB0byBubyBhY3Rpb24uCj4gKyAqLwo+ICt2b2lkIGZmX2NjZmlmb19mcmVl cChBVkNDRmlmbyAqKmNjZik7Cj4gKwo+ICsKPiArLyoqCj4gKyAqIFJlYWQgYSBmcmFtZSBpbnRv IGEgQ0MgRmlmbwo+CgpJdCdzIG5vdCBjbGVhciBJIHRoaW5rLgoKCj4gKyAqCj4gKyAqIEV4dHJh Y3QgQ0MgYnl0ZXMgZnJvbSB0aGUgQVZGcmFtZSwgaW5zZXJ0IHRoZW0gaW50byBvdXIgcXVldWUs IGFuZAo+ICsgKiByZW1vdmUgdGhlIHNpZGUgZGF0YSBmcm9tIHRoZSBBVkZyYW1lLiAgVGhlIHNp ZGUgZGF0YSBpcyByZW1vdmVkCj4gKyAqIGFzIGl0IHdpbGwgYmUgcmUtaW5zZXJ0ZWQgYXQgdGhl IGFwcHJvcHJpYXRlIHJhdGUgbGF0ZXIgaW4gdGhlCj4gKyAqIGZpbHRlci4KPiArICoKPiArICog QHBhcmFtIGFmICAgICAgICAgIEFWQ0NGaWZvIHRvIHdyaXRlIHRvCj4gKyAqIEBwYXJhbSBmcmFt ZSAgICAgICBBVkZyYW1lIHdpdGggdGhlIHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPiArICog QHJldHVybiAgICAgICAgICAgIFplcm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgo+ ICsgKiAgICAgICAgICAgICAgICAgICAgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGZm X2NjZmlmb19leHRyYWN0KEFWQ0NGaWZvICphZiwgQVZGcmFtZSAqZnJhbWUpOwo+ICsKPiArLyoq Cj4gKyAqIEluc2VydCBDQyBkYXRhIGZyb20gdGhlIEZJRk8gaW50byBhbiBBVkZyYW1lIChhcyBz aWRlIGRhdGEpCj4gKyAqCj4gKyAqIERlcXVldWUgdGhlIGFwcHJvcHJpYXRlIG51bWJlciBvZiBD QyB0dXBsZXMgYmFzZWQgb24gdGhlCj4gKyAqIGZyYW1lIHJhdGUsIGFuZCBpbnNlcnQgdGhlbSBp bnRvIHRoZSBBVkZyYW1lCj4gKyAqCj4gKyAqIEBwYXJhbSBhZiAgICAgICAgICBBVkNDRmlmbyB0 byByZWFkIGZyb20KPiArICogQHBhcmFtIGZyYW1lICAgICAgIEFWRnJhbWUgd2l0aCB0aGUgdmlk ZW8gZnJhbWUgdG8gb3BlcmF0ZSBvbgo+ICsgKiBAcmV0dXJuICAgICAgICAgICAgWmVybyBvbiBz dWNjZXNzLCBvciBuZWdhdGl2ZSBBVkVSUk9SCj4gKyAqICAgICAgICAgICAgICAgICAgICBjb2Rl IG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZmZfY2NmaWZvX2luamVjdChBVkNDRmlmbyAqYWYs IEFWRnJhbWUgKmZyYW1lKTsKPiArCj4gKyNlbmRpZiAvKiBBVlVUSUxfQ0NGSUZPX0ggKi8KPiAt LQo+IDEuOC4zLjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4K PiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2 ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K