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 3F95644FBE for ; Sun, 15 Jan 2023 09:48:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7518868BBF1; Sun, 15 Jan 2023 11:48:16 +0200 (EET) Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3C38A68B35D for ; Sun, 15 Jan 2023 11:48:10 +0200 (EET) Received: by mail-vk1-f177.google.com with SMTP id c21so3949867vkn.10 for ; Sun, 15 Jan 2023 01:48:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=b3o5Y+/RFkN4HTOL/uhBTVRyViJLHjfAbUnmbyyOfuk=; b=kge04kAlF7VchPhnQ8C4cwKH/jmyYVjEdm29rmJduSbwtpxETLYPkE5vumka/9oDAJ MNWhKqsO7CmLrthWnmYpBFC8qVsQXfk0NHR3DOe2E2Mw5AA10NBez7pM6cWkTWHQWdRK 7Zz3ZfqPXuLU2l7ZdO77p4zIDNyO9IzA38LF8jpi58h7AcmtpUnx5TQgKeVSZuf5YRgi 1zPtv9hCu9+AgBCsuy2f7PQnAS/Z7W51mwpn+WZGBc7EbW9V+6yl4NQvmEed7MlkwBtZ Lm71+vYQgHvQkDBGpLImsasRx44sVAr/V9frYYa26ruhVllZG5eMS4LljExNp7kCx7RZ HnoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=b3o5Y+/RFkN4HTOL/uhBTVRyViJLHjfAbUnmbyyOfuk=; b=YI/oD5vQ2YTaDXlsWrvf5DIcO4eGzTY5uQLBcrpUpRyasclBNDzihCkcGcG0O5Sfi0 aFLTQWWRV1WQpkn7+dG6c8pG9zr/kAPBpw0Ay9fNq8jh55nr+RpXxPrczw7iKBqTl+Qc Gf4SygLlo8jXP4fzyL+IEGDOZfwFuJ/DmpfKKIhduXEpwZHG36EcAnvIXoJn5o0uQWFj QViROHfgy1MHyfmph4E7IokJO0rkEk8NT9ABFNiw5lAroN8ixWOWesLgEKk4zTUCr8mI fpE/3inRSA7uq0wG78/woqQsl2mD9entZWf7+hoYQpjTtJMr503f3DosIDOI51J1MgT6 MZQA== X-Gm-Message-State: AFqh2kqjylAmybPzV+mo0W6bnYsHdl38K7Xs1rwYN7kD66kBwRrdTNXI GCSqpYlp3SDTWp9rTY5jdgXOEKjXZ04V9OxMqHDuiMYP X-Google-Smtp-Source: AMrXdXsPG952Yn3A6raUqoZCGRx4eWe0pD1YMP/YYz34QSgGOPxzp6mY2YRaUqPJ1/kSTBx+u3peXKLAJxRx5Gykdr4= X-Received: by 2002:a1f:414e:0:b0:3d9:98d3:3902 with SMTP id o75-20020a1f414e000000b003d998d33902mr4645522vka.39.1673776088236; Sun, 15 Jan 2023 01:48:08 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Sun, 15 Jan 2023 01:48:07 -0800 (PST) From: Paul B Mahol Date: Sun, 15 Jan 2023 10:48:07 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000002c6c0505f24a5d2a" Subject: [FFmpeg-devel] [PATCH] avfilter: add FIR equalizer coefficients source filter 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --0000000000002c6c0505f24a5d2a Content-Type: text/plain; charset="UTF-8" Patch attached --0000000000002c6c0505f24a5d2a Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avfilter-add-FIR-equalizer-coefficients-source-filte.patch" Content-Disposition: attachment; filename="0001-avfilter-add-FIR-equalizer-coefficients-source-filte.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 RnJvbSA1ZTIyYjliYzA4ZjcwMTU4NTNjYzkzYTA3ZTE2NTE1NTYwMWI4N2ZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMTMgSmFuIDIwMjMgMTM6MzI6MjYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBhdmZpbHRl cjogYWRkIEZJUiBlcXVhbGl6ZXIgY29lZmZpY2llbnRzIHNvdXJjZSBmaWx0ZXIKClNpZ25lZC1v ZmYtYnk6IFBhdWwgQiBNYWhvbCA8b25lbWRhQGdtYWlsLmNvbT4KLS0tCiBkb2MvZmlsdGVycy50 ZXhpICAgICAgICAgICB8ICA2MSArKysrKysrKysKIGxpYmF2ZmlsdGVyL01ha2VmaWxlICAgICAg IHwgICAxICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgIHwgICAxICsKIGxpYmF2ZmlsdGVy L2FzcmNfYWZpcnNyYy5jIHwgMjQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KIDQgZmlsZXMgY2hhbmdlZCwgMzA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkKaW5kZXggYmU3 MGEyMzk2Yi4uYzg2ZjQ0ZDI5NCAxMDA2NDQKLS0tIGEvZG9jL2ZpbHRlcnMudGV4aQorKysgYi9k b2MvZmlsdGVycy50ZXhpCkBAIC03NTQ2LDYgKzc1NDYsNjcgQEAgU3BlY2lmaWVzIHRoZSBjaGFu bmVsIGxheW91dCwgYW5kIGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBjaGFubmVsIGxh eW91dC4KIFRoZSBkZWZhdWx0IHZhbHVlIG9mIEB2YXJ7Y2hhbm5lbF9sYXlvdXR9IGlzICJzdGVy ZW8iLgogQGVuZCB0YWJsZQogCitAc2VjdGlvbiBhZmlyZXFzcmMKKworR2VuZXJhdGUgYSBGSVIg ZXF1YWxpemVyIGNvZWZmaWNpZW50cy4KKworVGhlIHJlc3VsdGluZyBzdHJlYW0gY2FuIGJlIHVz ZWQgd2l0aCBAcmVme2FmaXJ9IGZpbHRlciBmb3IgZmlsdGVyaW5nIHRoZSBhdWRpbyBzaWduYWwu CisKK1RoZSBmaWx0ZXIgYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CisKK0B0YWJsZSBA b3B0aW9uCitAaXRlbSBwcmVzZXQsIHAKK1NldCBlcXVhbGl6ZXIgcHJlc2V0LgorRGVmYXVsdCBw cmVzZXQgaXMgQGNvZGV7ZmxhdH0uCisKK0F2YWlsYWJsZSBwcmVzZXRzIGFyZToKK0B0YWJsZSBA c2FtcAorQGl0ZW0gY3VzdG9tCitAaXRlbSBmbGF0CitAaXRlbSBhY291c3RpYworQGl0ZW0gYmFz cworQGl0ZW0gYmVhdHMKK0BpdGVtIGNsYXNzaWMKK0BpdGVtIGNsZWFyCitAaXRlbSBkZWVwIGJh c3MKK0BpdGVtIGR1YnN0ZXAKK0BpdGVtIGVsZWN0cm9uaWMKK0BpdGVtIGhhcmQtc3R5bGUKK0Bp dGVtIGhpcC1ob3AKK0BpdGVtIGphenoKK0BpdGVtIG1ldGFsCitAaXRlbSBtb3ZpZQorQGl0ZW0g cG9wCitAaXRlbSByJmIKK0BpdGVtIHJvY2sKK0BpdGVtIHZvY2FsIGJvb3N0ZXIKK0BlbmQgdGFi bGUKKworQGl0ZW0gZ2FpbnMsIGcKK1NldCBjdXN0b20gZ2FpbnMgZm9yIGVhY2ggYmFuZC4gT25s eSB1c2VkIGlmIHRoZSBwcmVzZXQgb3B0aW9uIGlzIHNldCB0byBAY29kZXtjdXN0b219LgorR2Fp bnMgYXJlIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZXMgYW5kIGVhY2ggZ2FpbiBpcyBzZXQgaW4g ZEJGUy4KK0RlZmF1bHQgaXMgQGNvZGV7MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMH0u CisKK0BpdGVtIGJhbmRzLCBiCitTZXQgdGhlIGN1c3RvbSBiYW5kcyBmcm9tIHdoZXJlIGN1c3Rv biBlcXVhbGl6ZXIgZ2FpbnMgYXJlIHNldC4KK1RoaXMgbXVzdCBiZSBpbiBzdHJpY3RseSBpbmNy ZWFzaW5nIG9yZGVyLiBPbmx5IHVzZWQgaWYgdGhlIHByZXNldCBvcHRpb24gaXMgc2V0IHRvIEBj b2Rle2N1c3RvbX0uCitCYW5kcyBhcmUgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlcyBhbmQgZWFj aCBiYW5kIHJlcHJlc2VudCBmcmVxdWVuY3kgaW4gSHouCitEZWZhdWx0IGlzIEBjb2RlezI1IDQw IDYzIDEwMCAxNjAgMjUwIDQwMCA2MzAgMTAwMCAxNjAwIDI1MDAgNDAwMCA2MzAwIDEwMDAwIDE2 MDAwIDI0MDAwfS4KKworQGl0ZW0gdGFwcywgdAorU2V0IG51bWJlciBvZiBmaWx0ZXIgY29lZmZp Y2VudHMgaW4gb3V0cHV0IGF1ZGlvIHN0cmVhbS4KK0RlZmF1bHQgdmFsdWUgaXMgQGNvZGV7NDA5 Nn0uCisKK0BpdGVtIHNhbXBsZV9yYXRlLCByCitTZXQgc2FtcGxlIHJhdGUgb2Ygb3V0cHV0IGF1 ZGlvIHN0cmVhbSwgZGVmYXVsdCBpcyBAY29kZXs0NDEwMH0uCisKK0BpdGVtIG5iX3NhbXBsZXMs IG4KK1NldCBudW1iZXIgb2Ygc2FtcGxlcyBwZXIgZWFjaCBmcmFtZSBpbiBvdXRwdXQgYXVkaW8g c3RyZWFtLiBEZWZhdWx0IGlzIEBjb2RlezEwMjR9LgorCitAaXRlbSBpbnRlcnAsIGkKK1NldCBp bnRlcnBvbGF0aW9uIG1ldGhvZCBmb3IgRklSIGVxdWFsaXplciBjb2VmZmljaWVudHMuIENhbiBi ZSBAY29kZXtsaW5lYXJ9IG9yIEBjb2Rle2N1YmljfS4KK0BlbmQgdGFibGUKKwogQHNlY3Rpb24g YWZpcnNyYwogCiBHZW5lcmF0ZSBhIEZJUiBjb2VmZmljaWVudHMgdXNpbmcgZnJlcXVlbmN5IHNh bXBsaW5nIG1ldGhvZC4KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlIGIvbGliYXZm aWx0ZXIvTWFrZWZpbGUKaW5kZXggYTljODM1NDc0ZS4uMjg1ZWY3NDA2OCAxMDA2NDQKLS0tIGEv bGliYXZmaWx0ZXIvTWFrZWZpbGUKKysrIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKQEAgLTE3NCw2 ICsxNzQsNyBAQCBPQkpTLSQoQ09ORklHX1ZPTFVNRURFVEVDVF9GSUxURVIpICAgICAgICAgICAr PSBhZl92b2x1bWVkZXRlY3QubwogCiBPQkpTLSQoQ09ORklHX0FFVkFMU1JDX0ZJTFRFUikgICAg ICAgICAgICAgICArPSBhZXZhbC5vCiBPQkpTLSQoQ09ORklHX0FGREVMQVlTUkNfRklMVEVSKSAg ICAgICAgICAgICArPSBhc3JjX2FmZGVsYXlzcmMubworT0JKUy0kKENPTkZJR19BRklSRVFTUkNf RklMVEVSKSAgICAgICAgICAgICAgKz0gYXNyY19hZmlyc3JjLm8KIE9CSlMtJChDT05GSUdfQUZJ UlNSQ19GSUxURVIpICAgICAgICAgICAgICAgICs9IGFzcmNfYWZpcnNyYy5vCiBPQkpTLSQoQ09O RklHX0FOT0lTRVNSQ19GSUxURVIpICAgICAgICAgICAgICArPSBhc3JjX2Fub2lzZXNyYy5vCiBP QkpTLSQoQ09ORklHX0FOVUxMU1JDX0ZJTFRFUikgICAgICAgICAgICAgICArPSBhc3JjX2FudWxs c3JjLm8KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyBiL2xpYmF2ZmlsdGVy L2FsbGZpbHRlcnMuYwppbmRleCAxYzcyOTA5MGUzLi5jMWZhYWZjYTRhIDEwMDY0NAotLS0gYS9s aWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKKysrIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCkBA IC0xNjIsNiArMTYyLDcgQEAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FmX3ZvbHVtZWRldGVj dDsKIAogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FzcmNfYWV2YWxzcmM7CiBleHRlcm4gY29u c3QgQVZGaWx0ZXIgZmZfYXNyY19hZmRlbGF5c3JjOworZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X2FzcmNfYWZpcmVxc3JjOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2FzcmNfYWZpcnNyYzsK IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hc3JjX2Fub2lzZXNyYzsKIGV4dGVybiBjb25zdCBB VkZpbHRlciBmZl9hc3JjX2FudWxsc3JjOwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXNyY19h Zmlyc3JjLmMgYi9saWJhdmZpbHRlci9hc3JjX2FmaXJzcmMuYwppbmRleCBkMmVhOTJjNDFjLi4x YmM2NDUxNTY1IDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9hc3JjX2FmaXJzcmMuYworKysgYi9s aWJhdmZpbHRlci9hc3JjX2FmaXJzcmMuYwpAQCAtMTgsNyArMTgsOSBAQAogICogNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQogICovCiAK KyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL2NoYW5uZWxf bGF5b3V0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ZmbWF0aC5oIgogI2luY2x1ZGUgImxpYmF2 dXRpbC9ldmFsLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgogI2luY2x1ZGUgImxpYmF2 dXRpbC90eC5oIgpAQCAtMzgsNiArNDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBBdWRpb0ZJUlNvdXJj ZUNvbnRleHQgewogICAgIGludCBzYW1wbGVfcmF0ZTsKICAgICBpbnQgbmJfc2FtcGxlczsKICAg ICBpbnQgd2luX2Z1bmM7CisgICAgaW50IHByZXNldDsKKyAgICBpbnQgaW50ZXJwOwogCiAgICAg QVZDb21wbGV4RmxvYXQgKmNvbXBsZXhmOwogICAgIGZsb2F0ICpmcmVxOwpAQCAtMTMxLDcgKzEz NSw3IEBAIHN0YXRpYyBpbnQgcGFyc2Vfc3RyaW5nKGNoYXIgKnN0ciwgZmxvYXQgKippdGVtcywg aW50ICpuYl9pdGVtcywgaW50ICppdGVtc19zaXplCiAgICAgZmxvYXQgKm5ld19pdGVtczsKICAg ICBjaGFyICp0YWlsOwogCi0gICAgbmV3X2l0ZW1zID0gYXZfZmFzdF9yZWFsbG9jKE5VTEwsIGl0 ZW1zX3NpemUsIDEgKiBzaXplb2YoZmxvYXQpKTsKKyAgICBuZXdfaXRlbXMgPSBhdl9mYXN0X3Jl YWxsb2MoTlVMTCwgaXRlbXNfc2l6ZSwgc2l6ZW9mKGZsb2F0KSk7CiAgICAgaWYgKCFuZXdfaXRl bXMpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgKml0ZW1zID0gbmV3X2l0 ZW1zOwpAQCAtMTQyLDcgKzE0Niw3IEBAIHN0YXRpYyBpbnQgcGFyc2Vfc3RyaW5nKGNoYXIgKnN0 ciwgZmxvYXQgKippdGVtcywgaW50ICpuYl9pdGVtcywgaW50ICppdGVtc19zaXplCiAKICAgICBk byB7CiAgICAgICAgICgqaXRlbXMpWygqbmJfaXRlbXMpKytdID0gYXZfc3RydG9kKHRhaWwsICZ0 YWlsKTsKLSAgICAgICAgbmV3X2l0ZW1zID0gYXZfZmFzdF9yZWFsbG9jKCppdGVtcywgaXRlbXNf c2l6ZSwgKCpuYl9pdGVtcyArIDEpICogc2l6ZW9mKGZsb2F0KSk7CisgICAgICAgIG5ld19pdGVt cyA9IGF2X2Zhc3RfcmVhbGxvYygqaXRlbXMsIGl0ZW1zX3NpemUsICgqbmJfaXRlbXMgKyAyKSAq IHNpemVvZihmbG9hdCkpOwogICAgICAgICBpZiAoIW5ld19pdGVtcykKICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgICAgICppdGVtcyA9IG5ld19pdGVtczsKQEAgLTMw MCwzICszMDQsMjQyIEBAIGNvbnN0IEFWRmlsdGVyIGZmX2FzcmNfYWZpcnNyYyA9IHsKICAgICBG SUxURVJfUVVFUllfRlVOQyhxdWVyeV9mb3JtYXRzKSwKICAgICAucHJpdl9jbGFzcyAgICA9ICZh Zmlyc3JjX2NsYXNzLAogfTsKKworI2RlZmluZSBERUZBVUxUX0JBTkRTICIyNSA0MCA2MyAxMDAg MTYwIDI1MCA0MDAgNjMwIDEwMDAgMTYwMCAyNTAwIDQwMDAgNjMwMCAxMDAwMCAxNjAwMCAyNDAw MCIKKwordHlwZWRlZiBzdHJ1Y3QgRXFQcmVzZXQgeworICAgIGNoYXIgbmFtZVsxNl07CisgICAg ZmxvYXQgZ2FpbnNbMTZdOworfSBFcVByZXNldDsKKworc3RhdGljIGNvbnN0IEVxUHJlc2V0IGVx X3ByZXNldHNbXSA9IHsKKyAgICB7ICJmbGF0IiwgICAgICAgICAgeyAwLCAwLCAwLCAwLCAwLCAw LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0gfSwKKyAgICB7ICJhY291c3RpYyIsICAgICAg eyA1LjAsIDQuNSwgNC4wLCAzLjUsIDEuNSwgMS4wLCAxLjUsIDEuNSwgMi4wLCAzLjAsIDMuNSwg NC4wLCAzLjcsIDMuMCwgMy4wIH0gfSwKKyAgICB7ICJiYXNzIiwgICAgICAgICAgeyAxMC4wLCA4 LjgsIDguNSwgNi41LCAyLjUsIDEuNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IH0sCisg ICAgeyAiYmVhdHMiLCAgICAgICAgIHsgLTUuNSwgLTUuMCwgLTQuNSwgLTQuMiwgLTMuNSwgLTMu MCwgLTEuOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IH0sCisgICAgeyAiY2xhc3NpYyIsICAg ICAgIHsgLTAuMywgMC4zLCAtMy41LCAtOS4wLCAtMS4wLCAwLjAsIDEuOCwgMi4xLCAwLjAsIDAu MCwgMC4wLCA0LjQsIDkuMCwgOS4wLCA5LjAgfSB9LAorICAgIHsgImNsZWFyIiwgICAgICAgICB7 IDMuNSwgNS41LCA2LjUsIDkuNSwgOC4wLCA2LjUsIDMuNSwgMi41LCAxLjMsIDUuMCwgNy4wLCA5 LjAsIDEwLjAsIDExLjAsIDkuMCB9IH0sCisgICAgeyAiZGVlcCBiYXNzIiwgICAgIHsgMTIuMCwg OC4wLCAwLjAsIC02LjcsIC0xMi4wLCAtOS4wLCAtMy41LCAtMy41LCAtNi4xLCAwLjAsIC0zLjAs IC01LjAsIDAuMCwgMS4yLCAzLjAgfSB9LAorICAgIHsgImR1YnN0ZXAiLCAgICAgICB7IDEyLjAs IDEwLjAsIDAuNSwgLTEuMCwgLTMuMCwgLTUuMCwgLTUuMCwgLTQuOCwgLTQuNSwgLTIuNSwgLTEu MCwgMC4wLCAtMi41LCAtMi41LCAwLjAgfSB9LAorICAgIHsgImVsZWN0cm9uaWMiLCAgICB7IDQu MCwgNC4wLCAzLjUsIDEuMCwgMC4wLCAtMC41LCAtMi4wLCAwLjAsIDIuMCwgMC4wLCAwLjAsIDEu MCwgMy4wLCA0LjAsIDQuNSB9IH0sCisgICAgeyAiaGFyZHN0eWxlIiwgICAgIHsgNi4xLCA3LjAs IDEyLjAsIDYuMSwgLTUuMCwgLTEyLjAsIC0yLjUsIDMuMCwgNi41LCAwLjAsIC0yLjIsIC00LjUs IC02LjEsIC05LjIsIC0xMC4wIH0gfSwKKyAgICB7ICJoaXAtaG9wIiwgICAgICAgeyA0LjUsIDQu MywgNC4wLCAyLjUsIDEuNSwgMy4wLCAtMS4wLCAtMS41LCAtMS41LCAxLjUsIDAuMCwgLTEuMCwg MC4wLCAxLjUsIDMuMCB9IH0sCisgICAgeyAiamF6eiIsICAgICAgICAgIHsgMC4wLCAwLjAsIDAu MCwgMi4wLCA0LjAsIDUuOSwgLTUuOSwgLTQuNSwgLTIuNSwgMi41LCAxLjAsIC0wLjgsIC0wLjgs IC0wLjgsIC0wLjggfSB9LAorICAgIHsgIm1ldGFsIiwgICAgICAgICB7IDEwLjUsIDEwLjUsIDcu NSwgMC4wLCAyLjAsIDUuNSwgMC4wLCAwLjAsIDAuMCwgNi4xLCAwLjAsIDAuMCwgNi4xLCAxMC4w LCAxMi4wIH0gfSwKKyAgICB7ICJtb3ZpZSIsICAgICAgICAgeyAzLjAsIDMuMCwgNi4xLCA4LjUs IDkuMCwgNy4wLCA2LjEsIDYuMSwgNS4wLCA4LjAsIDMuNSwgMy41LCA4LjAsIDEwLjAsIDguMCB9 IH0sCisgICAgeyAicG9wIiwgICAgICAgICAgIHsgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEu MywgMi4wLCAyLjUsIDUuMCwgLTEuNSwgLTIuMCwgLTMuMCwgLTMuMCwgLTMuMCwgLTMuMCB9IH0s CisgICAgeyAiciZiIiwgICAgICAgICAgIHsgMy4wLCAzLjAsIDcuMCwgNi4xLCA0LjUsIDEuNSwg LTEuNSwgLTIuMCwgLTEuNSwgMi4wLCAyLjUsIDMuMCwgMy41LCAzLjgsIDQuMCB9IH0sCisgICAg eyAicm9jayIsICAgICAgICAgIHsgMC4wLCAwLjAsIDAuMCwgMy4wLCAzLjAsIC0xMC4wLCAtNC4w LCAtMS4wLCAwLjgsIDMuMCwgMy4wLCAzLjAsIDMuMCwgMy4wLCAzLjAgfSB9LAorICAgIHsgInZv Y2FsIGJvb3N0ZXIiLCB7IC0xLjUsIC0yLjAsIC0zLjAsIC0zLjAsIC0wLjUsIDEuNSwgMy41LCAz LjUsIDMuNSwgMy4wLCAyLjAsIDEuNSwgMC4wLCAwLjAsIC0xLjUgfSB9LAorfTsKKworc3RhdGlj IGNvbnN0IEFWT3B0aW9uIGFmaXJlcXNyY19vcHRpb25zW10gPSB7CisgICAgeyAicHJlc2V0Iiwi c2V0IGVxdWFsaXplciBwcmVzZXQiLCBPRkZTRVQocHJlc2V0KSwgQVZfT1BUX1RZUEVfSU5ULCB7 Lmk2ND0wfSwgLTEsIEZGX0FSUkFZX0VMRU1TKGVxX3ByZXNldHMpLTEsIEZMQUdTLCAicHJlc2V0 IiB9LAorICAgIHsgInAiLCAgICAgInNldCBlcXVhbGl6ZXIgcHJlc2V0IiwgT0ZGU0VUKHByZXNl dCksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQ9MH0sIC0xLCBGRl9BUlJBWV9FTEVNUyhlcV9wcmVz ZXRzKS0xLCBGTEFHUywgInByZXNldCIgfSwKKyAgICB7ICJjdXN0b20iLCAgICAgICAgICAgIE5V TEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND0tMX0sIDAsIDAsIEZMQUdTLCAicHJlc2V0 IiB9LAorICAgIHsgZXFfcHJlc2V0c1sgMF0ubmFtZSwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09O U1QsIHsuaTY0PSAwfSwgMCwgMCwgRkxBR1MsICJwcmVzZXQiIH0sCisgICAgeyBlcV9wcmVzZXRz WyAxXS5uYW1lLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9IDF9LCAwLCAwLCBG TEFHUywgInByZXNldCIgfSwKKyAgICB7IGVxX3ByZXNldHNbIDJdLm5hbWUsIE5VTEwsIDAsIEFW X09QVF9UWVBFX0NPTlNULCB7Lmk2ND0gMn0sIDAsIDAsIEZMQUdTLCAicHJlc2V0IiB9LAorICAg IHsgZXFfcHJlc2V0c1sgM10ubmFtZSwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0 PSAzfSwgMCwgMCwgRkxBR1MsICJwcmVzZXQiIH0sCisgICAgeyBlcV9wcmVzZXRzWyA0XS5uYW1l LCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9IDR9LCAwLCAwLCBGTEFHUywgInBy ZXNldCIgfSwKKyAgICB7IGVxX3ByZXNldHNbIDVdLm5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBF X0NPTlNULCB7Lmk2ND0gNX0sIDAsIDAsIEZMQUdTLCAicHJlc2V0IiB9LAorICAgIHsgZXFfcHJl c2V0c1sgNl0ubmFtZSwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0PSA2fSwgMCwg MCwgRkxBR1MsICJwcmVzZXQiIH0sCisgICAgeyBlcV9wcmVzZXRzWyA3XS5uYW1lLCBOVUxMLCAw LCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9IDd9LCAwLCAwLCBGTEFHUywgInByZXNldCIgfSwK KyAgICB7IGVxX3ByZXNldHNbIDhdLm5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7 Lmk2ND0gOH0sIDAsIDAsIEZMQUdTLCAicHJlc2V0IiB9LAorICAgIHsgZXFfcHJlc2V0c1sgOV0u bmFtZSwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0PSA5fSwgMCwgMCwgRkxBR1Ms ICJwcmVzZXQiIH0sCisgICAgeyBlcV9wcmVzZXRzWzEwXS5uYW1lLCBOVUxMLCAwLCBBVl9PUFRf VFlQRV9DT05TVCwgey5pNjQ9MTB9LCAwLCAwLCBGTEFHUywgInByZXNldCIgfSwKKyAgICB7IGVx X3ByZXNldHNbMTFdLm5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND0xMX0s IDAsIDAsIEZMQUdTLCAicHJlc2V0IiB9LAorICAgIHsgZXFfcHJlc2V0c1sxMl0ubmFtZSwgTlVM TCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0PTEyfSwgMCwgMCwgRkxBR1MsICJwcmVzZXQi IH0sCisgICAgeyBlcV9wcmVzZXRzWzEzXS5uYW1lLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05T VCwgey5pNjQ9MTN9LCAwLCAwLCBGTEFHUywgInByZXNldCIgfSwKKyAgICB7IGVxX3ByZXNldHNb MTRdLm5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND0xNH0sIDAsIDAsIEZM QUdTLCAicHJlc2V0IiB9LAorICAgIHsgZXFfcHJlc2V0c1sxNV0ubmFtZSwgTlVMTCwgMCwgQVZf T1BUX1RZUEVfQ09OU1QsIHsuaTY0PTE1fSwgMCwgMCwgRkxBR1MsICJwcmVzZXQiIH0sCisgICAg eyBlcV9wcmVzZXRzWzE2XS5uYW1lLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9 MTZ9LCAwLCAwLCBGTEFHUywgInByZXNldCIgfSwKKyAgICB7IGVxX3ByZXNldHNbMTddLm5hbWUs IE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND0xN30sIDAsIDAsIEZMQUdTLCAicHJl c2V0IiB9LAorICAgIHsgImdhaW5zIiwgInNldCBnYWluIHZhbHVlcyBwZXIgYmFuZCIsIE9GRlNF VChtYWduaXR1ZGVfc3RyKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCJ9LCAwLCAwLCBGTEFHUyB9LAorICAgIHsgImciLCAgICAgInNl dCBnYWluIHZhbHVlcyBwZXIgYmFuZCIsIE9GRlNFVChtYWduaXR1ZGVfc3RyKSwgQVZfT1BUX1RZ UEVfU1RSSU5HLCB7LnN0cj0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCJ9LCAwLCAw LCBGTEFHUyB9LAorICAgIHsgImJhbmRzIiwgInNldCBjZW50cmFsIGZyZXF1ZW5jeSB2YWx1ZXMg cGVyIGJhbmQiLCBPRkZTRVQoZnJlcV9wb2ludHNfc3RyKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7 LnN0cj1ERUZBVUxUX0JBTkRTfSwgMCwgMCwgRkxBR1MgfSwKKyAgICB7ICJiIiwgICAgICJzZXQg Y2VudHJhbCBmcmVxdWVuY3kgdmFsdWVzIHBlciBiYW5kIiwgT0ZGU0VUKGZyZXFfcG9pbnRzX3N0 ciksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9REVGQVVMVF9CQU5EU30sIDAsIDAsIEZMQUdT IH0sCisgICAgeyAidGFwcyIsICJzZXQgbnVtYmVyIG9mIHRhcHMiLCBPRkZTRVQobmJfdGFwcyks IEFWX09QVF9UWVBFX0lOVCwgey5pNjQ9NDA5Nn0sIDE2LCBVSU5UMTZfTUFYLCBGTEFHUyB9LAor ICAgIHsgInQiLCAgICAic2V0IG51bWJlciBvZiB0YXBzIiwgT0ZGU0VUKG5iX3RhcHMpLCBBVl9P UFRfVFlQRV9JTlQsIHsuaTY0PTQwOTZ9LCAxNiwgVUlOVDE2X01BWCwgRkxBR1MgfSwKKyAgICB7 ICJzYW1wbGVfcmF0ZSIsICJzZXQgc2FtcGxlIHJhdGUiLCBPRkZTRVQoc2FtcGxlX3JhdGUpLCBB Vl9PUFRfVFlQRV9JTlQsIHsuaTY0PTQ0MTAwfSwgIDEsIElOVF9NQVgsICAgIEZMQUdTIH0sCisg ICAgeyAiciIsICAgICAgICAgICAic2V0IHNhbXBsZSByYXRlIiwgT0ZGU0VUKHNhbXBsZV9yYXRl KSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2ND00NDEwMH0sICAxLCBJTlRfTUFYLCAgICBGTEFHUyB9 LAorICAgIHsgIm5iX3NhbXBsZXMiLCAic2V0IHRoZSBudW1iZXIgb2Ygc2FtcGxlcyBwZXIgcmVx dWVzdGVkIGZyYW1lIiwgT0ZGU0VUKG5iX3NhbXBsZXMpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0 ID0gMTAyNH0sIDEsIElOVF9NQVgsIEZMQUdTIH0sCisgICAgeyAibiIsICAgICAgICAgICJzZXQg dGhlIG51bWJlciBvZiBzYW1wbGVzIHBlciByZXF1ZXN0ZWQgZnJhbWUiLCBPRkZTRVQobmJfc2Ft cGxlcyksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSAxMDI0fSwgMSwgSU5UX01BWCwgRkxBR1Mg fSwKKyAgICB7ICJpbnRlcnAiLCJzZXQgdGhlIGludGVycG9sYXRpb24iLCBPRkZTRVQoaW50ZXJw KSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2ND0wfSwgMCwgMSwgRkxBR1MsICJpbnRlcnAiIH0sCisg ICAgeyAiaSIsICAgICAic2V0IHRoZSBpbnRlcnBvbGF0aW9uIiwgT0ZGU0VUKGludGVycCksIEFW X09QVF9UWVBFX0lOVCwgey5pNjQ9MH0sIDAsIDEsIEZMQUdTLCAiaW50ZXJwIiB9LAorICAgIHsg ImxpbmVhciIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND0wfSwgMCwgMCwgRkxB R1MsICJpbnRlcnAiIH0sCisgICAgeyAiY3ViaWMiLCAgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09O U1QsIHsuaTY0PTF9LCAwLCAwLCBGTEFHUywgImludGVycCIgfSwKKyAgICB7TlVMTH0KK307CisK K0FWRklMVEVSX0RFRklORV9DTEFTUyhhZmlyZXFzcmMpOworCitzdGF0aWMgdm9pZCBlcV9pbnRl cnAoQVZDb21wbGV4RmxvYXQgKmNvbXBsZXhmLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGZsb2F0ICpmcmVxLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICptYWduaXR1 ZGUsCisgICAgICAgICAgICAgICAgICAgICAgaW50IG0sIGludCBpbnRlcnAsIGludCBtaW50ZXJw LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZhY3RvcikKK3sKKyAgICBjb21w bGV4ZlswXS5yZSA9IG1hZ25pdHVkZVswXTsKKyAgICBjb21wbGV4ZlswXS5pbSA9IDA7CisKKyAg ICBmb3IgKGludCBpID0gMTsgaSA8IG1pbnRlcnA7IGkrKykgeworICAgICAgICBmb3IgKGludCBq ID0gMDsgaiA8IG07IGorKykgeworICAgICAgICAgICAgY29uc3QgZmxvYXQgeCA9IGZhY3RvciAq IGk7CisKKyAgICAgICAgICAgIGlmICh4IDw9IGZyZXFbaisxXSkgeworICAgICAgICAgICAgICAg IGZsb2F0IGc7CisKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJwID09IDApIHsKKyAgICAgICAg ICAgICAgICAgICAgY29uc3QgZmxvYXQgZCAgPSBmcmVxW2orMV0gLSBmcmVxW2pdOworICAgICAg ICAgICAgICAgICAgICBjb25zdCBmbG9hdCBkMCA9IHggLSBmcmVxW2pdOworICAgICAgICAgICAg ICAgICAgICBjb25zdCBmbG9hdCBkMSA9IGZyZXFbaisxXSAtIHg7CisgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGZsb2F0IGcwID0gbWFnbml0dWRlW2pdOworICAgICAgICAgICAgICAgICAgICBj b25zdCBmbG9hdCBnMSA9IG1hZ25pdHVkZVtqKzFdOworCisgICAgICAgICAgICAgICAgICAgIGlm IChkMCAmJiBkMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZyA9IChkMCAqIGcxICsgZDEg KiBnMCkgLyBkOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGQwKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICBnID0gZzE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICBnID0gZzA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoeCA8PSBmcmVx W2pdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnID0gbWFnbml0dWRlW2pdOworICAgICAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeDEs IHgyLCB4MzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGEsIGIsIGMsIGQ7CisgICAg ICAgICAgICAgICAgICAgICAgICBmbG9hdCBtMCwgbTEsIG0yLCBtc3VtOworICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZmxvYXQgdW5pdCA9IGZyZXFbaisxXSAtIGZyZXFbal07CisKKyAg ICAgICAgICAgICAgICAgICAgICAgIG0wID0gaiAhPSAwID8gdW5pdCAqIChtYWduaXR1ZGVbal0g LSBtYWduaXR1ZGVbai0xXSkgLyAoZnJlcVtqXSAtIGZyZXFbai0xXSkgOiAwOworICAgICAgICAg ICAgICAgICAgICAgICAgbTEgPSBtYWduaXR1ZGVbaisxXSAtIG1hZ25pdHVkZVtqXTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIG0yID0gaiAhPSBtaW50ZXJwIC0gMSA/IHVuaXQgKiAobWFnbml0 dWRlW2orMl0gLSBtYWduaXR1ZGVbaisxXSkgLyAoZnJlcVtqKzJdIC0gZnJlcVtqKzFdKSA6IDA7 CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zdW0gPSBmYWJzZihtMCkgKyBmYWJzZihtMSk7 CisgICAgICAgICAgICAgICAgICAgICAgICBtMCA9IG1zdW0gPiAwLmYgPyAoZmFic2YobTApICog bTEgKyBmYWJzZihtMSkgKiBtMCkgLyBtc3VtIDogMC5mOworICAgICAgICAgICAgICAgICAgICAg ICAgbXN1bSA9IGZhYnNmKG0xKSArIGZhYnNmKG0yKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IG0xID0gbXN1bSA+IDAuZiA/IChmYWJzZihtMSkgKiBtMiArIGZhYnNmKG0yKSAqIG0xKSAvIG1z dW0gOiAwLmY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBtYWduaXR1ZGVbal07Cisg ICAgICAgICAgICAgICAgICAgICAgICBjID0gbTA7CisgICAgICAgICAgICAgICAgICAgICAgICBi ID0gMy5mICogbWFnbml0dWRlW2orMV0gLSBtMSAtIDIuZiAqIGMgLSAzLmYgKiBkOworICAgICAg ICAgICAgICAgICAgICAgICAgYSA9IG1hZ25pdHVkZVtqKzFdIC0gYiAtIGMgLSBkOworCisgICAg ICAgICAgICAgICAgICAgICAgICB4MSA9ICh4IC0gZnJlcVtqXSkgLyB1bml0OworICAgICAgICAg ICAgICAgICAgICAgICAgeDIgPSB4MSAqIHgxOworICAgICAgICAgICAgICAgICAgICAgICAgeDMg PSB4MiAqIHgxOworCisgICAgICAgICAgICAgICAgICAgICAgICBnID0gYSAqIHgzICsgYiAqIHgy ICsgYyAqIHgxICsgZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K KworICAgICAgICAgICAgICAgIGNvbXBsZXhmW2ldLnJlID0gZzsKKyAgICAgICAgICAgICAgICBj b21wbGV4ZltpXS5pbSA9IDA7CisgICAgICAgICAgICAgICAgY29tcGxleGZbbWludGVycCAqIDIg LSBpXS5yZSA9IGc7CisgICAgICAgICAgICAgICAgY29tcGxleGZbbWludGVycCAqIDIgLSBpXS5p bSA9IDA7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgIH0KK30KKworc3RhdGljIGF2X2NvbGQgaW50IGNvbmZpZ19lcV9vdXRwdXQoQVZGaWx0 ZXJMaW5rICpvdXRsaW5rKQoreworICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+ c3JjOworICAgIEF1ZGlvRklSU291cmNlQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBpbnQg ZmZ0X3NpemUsIG1pZGRsZSwgYXNpemUsIHJldDsKKyAgICBmbG9hdCBzY2FsZSwgZmFjdG9yOwor CisgICAgcy0+bmJfZnJlcSA9IHMtPm5iX21hZ25pdHVkZSA9IDA7CisgICAgaWYgKHMtPnByZXNl dCA8IDApIHsKKyAgICAgICAgcmV0ID0gcGFyc2Vfc3RyaW5nKHMtPmZyZXFfcG9pbnRzX3N0ciwg JnMtPmZyZXEsICZzLT5uYl9mcmVxLCAmcy0+ZnJlcV9zaXplKTsKKyAgICAgICAgaWYgKHJldCA8 IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHJldCA9IHBhcnNlX3N0cmlu ZyhzLT5tYWduaXR1ZGVfc3RyLCAmcy0+bWFnbml0dWRlLCAmcy0+bmJfbWFnbml0dWRlLCAmcy0+ bWFnbml0dWRlX3NpemUpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVy biByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hhciAqZnJlcV9zdHI7CisKKyAgICAgICAg cy0+bmJfbWFnbml0dWRlID0gRkZfQVJSQVlfRUxFTVMoZXFfcHJlc2V0c1tzLT5wcmVzZXRdLmdh aW5zKTsKKworICAgICAgICBmcmVxX3N0ciA9IGF2X3N0cmR1cChERUZBVUxUX0JBTkRTKTsKKyAg ICAgICAgaWYgKCFmcmVxX3N0cikKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7 CisKKyAgICAgICAgcmV0ID0gcGFyc2Vfc3RyaW5nKGZyZXFfc3RyLCAmcy0+ZnJlcSwgJnMtPm5i X2ZyZXEsICZzLT5mcmVxX3NpemUpOworICAgICAgICBhdl9mcmVlKGZyZXFfc3RyKTsKKyAgICAg ICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHMtPm1h Z25pdHVkZSA9IGF2X2NhbGxvYyhzLT5uYl9tYWduaXR1ZGUsIHNpemVvZigqcy0+bWFnbml0dWRl KSk7CisgICAgICAgIGlmICghcy0+bWFnbml0dWRlKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PTUVNKTsKKyAgICAgICAgbWVtY3B5KHMtPm1hZ25pdHVkZSwgZXFfcHJlc2V0c1tzLT5w cmVzZXRdLmdhaW5zLCBzaXplb2YoKnMtPm1hZ25pdHVkZSkgKiBzLT5uYl9tYWduaXR1ZGUpOwor ICAgIH0KKworICAgIGlmIChzLT5uYl9mcmVxICE9IHMtPm5iX21hZ25pdHVkZSB8fCBzLT5uYl9m cmVxIDwgMikgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJOdW1iZXIgb2Yg YmFuZHMgYW5kIGdhaW5zIG11c3QgYmUgc2FtZSBhbmQgPj0gMi5cbiIpOworICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHMtPmZyZXFbcy0+bmJfZnJlcV0gPSBv dXRsaW5rLT5zYW1wbGVfcmF0ZSAqIDAuNWY7CisgICAgcy0+bWFnbml0dWRlW3MtPm5iX2ZyZXFd ID0gcy0+bWFnbml0dWRlW3MtPm5iX2ZyZXEtMV07CisKKyAgICBmZnRfc2l6ZSA9IHMtPm5iX3Rh cHMgKiAyOworICAgIGZhY3RvciA9IEZGTUlOKG91dGxpbmstPnNhbXBsZV9yYXRlICogMC41Ziwg cy0+ZnJlcVtzLT5uYl9mcmVxIC0gMV0pIC8gKGZsb2F0KWZmdF9zaXplOworICAgIGFzaXplID0g RkZBTElHTihmZnRfc2l6ZSwgYXZfY3B1X21heF9hbGlnbigpKTsKKyAgICBzLT5jb21wbGV4ZiA9 IGF2X2NhbGxvYyhhc2l6ZSAqIDIsIHNpemVvZigqcy0+Y29tcGxleGYpKTsKKyAgICBpZiAoIXMt PmNvbXBsZXhmKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgc2NhbGUg PSAxLmY7CisgICAgcmV0ID0gYXZfdHhfaW5pdCgmcy0+dHhfY3R4LCAmcy0+dHhfZm4sIEFWX1RY X0ZMT0FUX0ZGVCwgMCwgZmZ0X3NpemUsICZzY2FsZSwgMCk7CisgICAgaWYgKHJldCA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBzLT50YXBzID0gYXZfY2FsbG9jKHMtPm5iX3RhcHMs IHNpemVvZigqcy0+dGFwcykpOworICAgIGlmICghcy0+dGFwcykKKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKKworICAgIGVxX2ludGVycChzLT5jb21wbGV4Ziwgcy0+ZnJlcSwgcy0+ bWFnbml0dWRlLCBzLT5uYl9mcmVxLCBzLT5pbnRlcnAsIHMtPm5iX3RhcHMsIGZhY3Rvcik7CisK KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFzaXplICogMjsgaSsrKQorICAgICAgICBzLT5jb21w bGV4ZltpXS5yZSA9IGZmX2V4cDEwZihzLT5jb21wbGV4ZltpXS5yZSAvIDIwLmYpOworCisgICAg cy0+dHhfZm4ocy0+dHhfY3R4LCBzLT5jb21wbGV4ZiArIGFzaXplLCBzLT5jb21wbGV4Ziwgc2l6 ZW9mKGZsb2F0KSk7CisKKyAgICBtaWRkbGUgPSBzLT5uYl90YXBzIC8gMjsKKyAgICBmb3IgKGlu dCBpID0gMDsgaSA8IG1pZGRsZTsgaSsrKSB7CisgICAgICAgIHMtPnRhcHNbbWlkZGxlIC0gaV0g PSAocy0+Y29tcGxleGZbaSArIGFzaXplXS5yZSAtIHMtPmNvbXBsZXhmW2kgKyBhc2l6ZV0uaW0p IC8gZmZ0X3NpemU7CisgICAgICAgIHMtPnRhcHNbbWlkZGxlICsgaV0gPSAocy0+Y29tcGxleGZb aSArIGFzaXplXS5yZSAtIHMtPmNvbXBsZXhmW2kgKyBhc2l6ZV0uaW0pIC8gZmZ0X3NpemU7Cisg ICAgfQorCisgICAgcy0+cHRzID0gMDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29u c3QgQVZGaWx0ZXJQYWQgYWZpcmVxc3JjX291dHB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5u YW1lICAgICAgICAgID0gImRlZmF1bHQiLAorICAgICAgICAudHlwZSAgICAgICAgICA9IEFWTUVE SUFfVFlQRV9BVURJTywKKyAgICAgICAgLmNvbmZpZ19wcm9wcyAgPSBjb25maWdfZXFfb3V0cHV0 LAorICAgIH0sCit9OworCitjb25zdCBBVkZpbHRlciBmZl9hc3JjX2FmaXJlcXNyYyA9IHsKKyAg ICAubmFtZSAgICAgICAgICA9ICJhZmlyZXFzcmMiLAorICAgIC5kZXNjcmlwdGlvbiAgID0gTlVM TF9JRl9DT05GSUdfU01BTEwoIkdlbmVyYXRlIGEgRklSIGVxdWFsaXplciBjb2VmZmljaWVudHMg YXVkaW8gc3RyZWFtLiIpLAorICAgIC51bmluaXQgICAgICAgID0gdW5pbml0LAorICAgIC5hY3Rp dmF0ZSAgICAgID0gYWN0aXZhdGUsCisgICAgLnByaXZfc2l6ZSAgICAgPSBzaXplb2YoQXVkaW9G SVJTb3VyY2VDb250ZXh0KSwKKyAgICAuaW5wdXRzICAgICAgICA9IE5VTEwsCisgICAgRklMVEVS X09VVFBVVFMoYWZpcmVxc3JjX291dHB1dHMpLAorICAgIEZJTFRFUl9RVUVSWV9GVU5DKHF1ZXJ5 X2Zvcm1hdHMpLAorICAgIC5wcml2X2NsYXNzICAgID0gJmFmaXJlcXNyY19jbGFzcywKK307Ci0t IAoyLjM3LjIKCg== --0000000000002c6c0505f24a5d2a Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --0000000000002c6c0505f24a5d2a--