From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTP id 2CD2B48FDB
	for <ffmpegdev@gitmailbox.com>; Mon,  1 Apr 2024 16:17:03 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EF35568CDEA;
	Mon,  1 Apr 2024 19:17:00 +0300 (EEST)
Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com
 [209.85.208.170])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9745B68C308
 for <ffmpeg-devel@ffmpeg.org>; Mon,  1 Apr 2024 19:16:54 +0300 (EEST)
Received: by mail-lj1-f170.google.com with SMTP id
 38308e7fff4ca-2d485886545so69508911fa.2
 for <ffmpeg-devel@ffmpeg.org>; Mon, 01 Apr 2024 09:16:54 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1711988213; x=1712593013;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=Ep7M6tcr2uAdmNeXreyStuwauaesKcE0kdpHXBSuCCw=;
 b=xOk6BfaIMAH2+SHA3fLn98BSL2cg1iNNY/lllzW3jcjQwtt1lPjtZ6JxkUCFQE8FDQ
 dLsIAOx7f2AnXD4o0/8CYZiQcdOjJL8gij4xT6ptjl9AXlZPBf+wWhuQYCHd8ft+ZwbO
 RndmTITxKG/VoyGoW4tv2L+ewJ50t4zUXcvJp/d5BM2wZKayjEZx2L8Z1oC1QAxjYoDB
 FrzcZZNw+Mdj1eOMDs5fe0UImiTPmAaYBaLWjNRSGA9Tko4RARYKR9biHFa4rE1dtz2t
 eGDEjwfjILJfF9Z/Q0vQYHCLz5ryxNwhOS+yizae1fqSjq25BGxBOvtx/Q1BU0eMTsiu
 uXDg==
X-Gm-Message-State: AOJu0YwNQSryp+ro4Q2rPJ4wHfjAfyFgv3WUkZTajOD13T2HvJ+EGamJ
 xO7A753pruTA0n3soWFC3xfiR1Qd49pQxcjdM7Dh5/VTK7MK2XFMKRlstRBLD4lKLsfsocQyPaE
 4
X-Google-Smtp-Source: AGHT+IF3MUSz9guK5MP+W+Jcrzw+MCWtritcMUw1gSAfI5l/Jh5mVZ1woRUroOJdOgXpZ06i+mkwkA==
X-Received: by 2002:a2e:a4d8:0:b0:2d4:7455:89f6 with SMTP id
 p24-20020a2ea4d8000000b002d4745589f6mr6813090ljm.40.1711988213298; 
 Mon, 01 Apr 2024 09:16:53 -0700 (PDT)
Received: from Denniss-MBP.fritz.box
 (ip-088-152-103-184.um26.pools.vodafone-ip.de. [88.152.103.184])
 by smtp.gmail.com with ESMTPSA id
 kf16-20020a17090776d000b00a46bf6d890bsm5491341ejc.91.2024.04.01.09.16.52
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Mon, 01 Apr 2024 09:16:52 -0700 (PDT)
To: ffmpeg-devel@ffmpeg.org
Date: Mon,  1 Apr 2024 18:16:49 +0200
Message-Id: <20240401161650.34063-1-dennis@obsproject.com>
X-Mailer: git-send-email 2.39.3 (Apple Git-146)
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH 1/2] avformat/flvenc: Implement support for
 multi-track video
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
From: =?utf-8?q?Dennis_S=C3=A4dtler_via_ffmpeg-devel?=
 <ffmpeg-devel@ffmpeg.org>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: =?UTF-8?q?Dennis=20S=C3=A4dtler?= <dennis@obsproject.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20240401161650.34063-1-dennis@obsproject.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

QmFzZWQgb24gZW5oYW5jZWQtcnRtcCB2MiBzcGVjIHB1Ymxpc2hlZCBieSBWZW92ZXJhOgpodHRw
czovL3Zlb3ZlcmEuZ2l0aHViLmlvL2VuaGFuY2VkLXJ0bXAvZG9jcy9lbmhhbmNlZC9lbmhhbmNl
ZC1ydG1wLXYyCgpUaGlzIGltcGxlbWVudGF0aW9uIG1haW50YWlucyBzb21lIGJhY2t3YXJkcyBj
b21wYXRpYmlsaXR5IGJ5IG9ubHkKd3JpdGluZyB0aGUgdHJhY2sgaW5mb3JtYXRpb24gZm9yIHRy
YWNrIGluZGljZXMgPiAwLiBUaGlzIG1lYW5zIHRoYXQKb2xkZXIgRkZtcGVnIHZlcnNpb25zIC0g
YW5kIHBvc3NpYmx5IG90aGVyIHNvZnR3YXJlIC0gY2FuIHN0aWxsIHJlYWQgdGhlCmZpcnN0IHZp
ZGVvIHRyYWNrIHByb3Blcmx5IGFuZCBza2lwIG92ZXIgdW5zdXBwb3J0ZWQgcGFja2V0cy4KClNp
Z25lZC1vZmYtYnk6IERlbm5pcyBTw6RkdGxlciA8ZGVubmlzQG9ic3Byb2plY3QuY29tPgotLS0K
IGxpYmF2Zm9ybWF0L2Zsdi5oICAgIHwgICA3ICsrCiBsaWJhdmZvcm1hdC9mbHZlbmMuYyB8IDE2
MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNo
YW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9s
aWJhdmZvcm1hdC9mbHYuaCBiL2xpYmF2Zm9ybWF0L2Zsdi5oCmluZGV4IGY3MTA5NjNiOTIuLjY1
M2MyYmM4MmMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2Zsdi5oCisrKyBiL2xpYmF2Zm9ybWF0
L2Zsdi5oCkBAIC0xMjUsNiArMTI1LDEzIEBAIGVudW0gewogICAgIFBhY2tldFR5cGVDb2RlZEZy
YW1lc1ggICAgICAgICAgPSAzLAogICAgIFBhY2tldFR5cGVNZXRhZGF0YSAgICAgICAgICAgICAg
PSA0LAogICAgIFBhY2tldFR5cGVNUEVHMlRTU2VxdWVuY2VTdGFydCAgPSA1LAorICAgIFBhY2tl
dFR5cGVNdWx0aXRyYWNrICAgICAgICAgICAgPSA2LAorfTsKKworZW51bSB7CisJTXVsdGl0cmFj
a1R5cGVPbmVUcmFjayAgICAgICAgICAgICA9IDB4MDAsCisJTXVsdGl0cmFja1R5cGVNYW55VHJh
Y2tzICAgICAgICAgICA9IDB4MTAsCisJTXVsdGl0cmFja1R5cGVNYW55VHJhY2tzTWFueUNvZGVj
cyA9IDB4MjAsCiB9OwogCiBlbnVtIHsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5j
IGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKaW5kZXggYWJhMWQ3ZDgwYi4uODJmMjc1Nzc3ZiAxMDA2
NDQKLS0tIGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMKKysrIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMK
QEAgLTEyNSw4ICsxMjUsOSBAQCB0eXBlZGVmIHN0cnVjdCBGTFZDb250ZXh0IHsKICAgICBBVkNv
ZGVjUGFyYW1ldGVycyAqZGF0YV9wYXI7CiAKICAgICBpbnQgZmxhZ3M7Ci0gICAgaW50NjRfdCBs
YXN0X3RzW0ZMVl9TVFJFQU1fVFlQRV9OQl07Ci0gICAgaW50IG1ldGFkYXRhX3BrdF93cml0dGVu
OworICAgIGludDY0X3QgKmxhc3RfdHM7CisgICAgaW50ICptZXRhZGF0YV9wa3Rfd3JpdHRlbjsK
KyAgICBpbnQgKnZpZGVvX3RyYWNrX2lkeF9tYXA7CiB9IEZMVkNvbnRleHQ7CiAKIHN0YXRpYyBp
bnQgZ2V0X2F1ZGlvX2ZsYWdzKEFWRm9ybWF0Q29udGV4dCAqcywgQVZDb2RlY1BhcmFtZXRlcnMg
KnBhcikKQEAgLTQ4NCw3ICs0ODUsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9tZXRhZGF0YShBVkZv
cm1hdENvbnRleHQgKnMsIHVuc2lnbmVkIGludCB0cykKICAgICBhdmlvX3diMzIocGIsIGZsdi0+
bWV0YWRhdGFfdG90YWxzaXplICsgMTEpOwogfQogCi1zdGF0aWMgdm9pZCBmbHZfd3JpdGVfbWV0
YWRhdGFfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZDb2RlY1BhcmFtZXRlcnMgKnBhciwg
dW5zaWduZWQgaW50IHRzKQorc3RhdGljIHZvaWQgZmx2X3dyaXRlX21ldGFkYXRhX3BhY2tldChB
VkZvcm1hdENvbnRleHQgKnMsIEFWQ29kZWNQYXJhbWV0ZXJzICpwYXIsIHVuc2lnbmVkIGludCB0
cywgaW50IHN0cmVhbV9pZHgpCiB7CiAgICAgQVZJT0NvbnRleHQgKnBiID0gcy0+cGI7CiAgICAg
RkxWQ29udGV4dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwpAQCAtNDk0LDcgKzQ5NSw5IEBAIHN0YXRp
YyB2b2lkIGZsdl93cml0ZV9tZXRhZGF0YV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVkNv
ZGVjUGFyYW1ldGVycyAqcGFyCiAgICAgaW50NjRfdCB0b3RhbF9zaXplID0gMDsKICAgICBjb25z
dCBBVlBhY2tldFNpZGVEYXRhICpzaWRlX2RhdGEgPSBOVUxMOwogCi0gICAgaWYgKGZsdi0+bWV0
YWRhdGFfcGt0X3dyaXR0ZW4pIHJldHVybjsKKyAgICBpZiAoZmx2LT5tZXRhZGF0YV9wa3Rfd3Jp
dHRlbltzdHJlYW1faWR4XSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIGlmIChwYXItPmNv
ZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J
RF9BVjEgfHwKICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKICAg
ICAgICAgaW50IGZsYWdzX3NpemUgPSA1OwpAQCAtNjE2LDcgKzYxOSw3IEBAIHN0YXRpYyB2b2lk
IGZsdl93cml0ZV9tZXRhZGF0YV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVkNvZGVjUGFy
YW1ldGVycyAqcGFyCiAgICAgICAgIGF2aW9fd2IyNChwYiwgdG90YWxfc2l6ZSk7CiAgICAgICAg
IGF2aW9fc2tpcChwYiwgdG90YWxfc2l6ZSArIDEwIC0gMyk7CiAgICAgICAgIGF2aW9fd2IzMihw
YiwgdG90YWxfc2l6ZSArIDExKTsgLy8gcHJldmlvdXMgdGFnIHNpemUKLSAgICAgICAgZmx2LT5t
ZXRhZGF0YV9wa3Rfd3JpdHRlbiA9IDE7CisgICAgICAgIGZsdi0+bWV0YWRhdGFfcGt0X3dyaXR0
ZW5bc3RyZWFtX2lkeF0gPSAxOwogICAgIH0KIH0KIApAQCAtNjMxLDcgKzYzNCw3IEBAIHN0YXRp
YyBpbnQgdW5zdXBwb3J0ZWRfY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLAogICAgIHJldHVybiBB
VkVSUk9SKEVOT1NZUyk7CiB9CiAKLXN0YXRpYyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIo
QVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1ldGVycyogcGFyLCBpbnQ2NF90IHRzKSB7
CitzdGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywg
QVZDb2RlY1BhcmFtZXRlcnMqIHBhciwgaW50NjRfdCB0cywgaW50IHN0cmVhbV9pbmRleCkgewog
ICAgIGludDY0X3QgZGF0YV9zaXplOwogICAgIEFWSU9Db250ZXh0ICpwYiA9IHMtPnBiOwogICAg
IEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0YTsKQEAgLTY4MSwxMiArNjg0LDMyIEBAIHN0
YXRpYyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNv
ZGVjUGFyYW1ldGVycyogcGFyLCBpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdmlvX3dy
aXRlKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZD
KSB7Ci0gICAgICAgICAgICAgICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tl
dFR5cGVTZXF1ZW5jZVN0YXJ0IHwgRkxWX0ZSQU1FX0tFWSk7IC8vIEV4VmlkZW9UYWdIZWFkZXIg
bW9kZSB3aXRoIFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0Ci0gICAgICAgICAgICAgICAgYXZpb193
cml0ZShwYiwgImh2YzEiLCA0KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19p
ZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkp
IHsKLSAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0
VHlwZVNlcXVlbmNlU3RhcnQgfCBGTFZfRlJBTUVfS0VZKTsKLSAgICAgICAgICAgICAgICBhdmlv
X3dyaXRlKHBiLCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSA/ICJhdjAxIiA6ICJ2
cDA5IiwgNCk7CisgICAgICAgICAgICBpbnQgdHJhY2tfaWR4ID0gZmx2LT52aWRlb190cmFja19p
ZHhfbWFwW3N0cmVhbV9pbmRleF07CisgICAgICAgICAgICAvLyBJZiB2aWRlbyBzdHJlYW0gaGFz
IHRyYWNrX2lkeCA+IDAgd2UgbmVlZCB0byBzZW5kIEguMjY0IGFzIGV4dGVuZGVkIHZpZGVvIHBh
Y2tldAorICAgICAgICAgICAgaW50IGV4dGVuZGVkX2ZsdiA9IChwYXItPmNvZGVjX2lkID09IEFW
X0NPREVDX0lEX0gyNjQgJiYgdHJhY2tfaWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE
X0FWMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19p
ZCA9PSBBVl9DT0RFQ19JRF9WUDk7CisKKyAgICAgICAgICAgIGlmIChleHRlbmRlZF9mbHYpIHsK
KyAgICAgICAgICAgICAgICBpZiAodHJhY2tfaWR4KSB7CisgICAgICAgICAgICAgICAgICAgIGF2
aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlTXVsdGl0cmFjayB8IEZMVl9G
UkFNRV9LRVkpOworICAgICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBNdWx0aXRyYWNrVHlw
ZU9uZVRyYWNrIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIg
fCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCB8IEZMVl9GUkFNRV9LRVkpOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE
X0gyNjQpCisgICAgICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJhdmMxIiwgNCk7Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZD
KQorICAgICAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKQorICAg
ICAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAiYXYwMSIsIDQpOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorICAgICAgICAg
ICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAidnAwOSIsIDQpOworCisgICAgICAgICAgICAgICAg
aWYgKHRyYWNrX2lkeCkKKyAgICAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgdHJhY2tfaWR4
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgcGFy
LT5jb2RlY190YWcgfCBGTFZfRlJBTUVfS0VZKTsgLy8gZmxhZ3MKICAgICAgICAgICAgICAgICBh
dmlvX3c4KHBiLCAwKTsgLy8gQVZDIHNlcXVlbmNlIGhlYWRlcgpAQCAtNzY5LDEzICs3OTIsMTIg
QEAgc3RhdGljIGludCBzaGlmdF9kYXRhKEFWRm9ybWF0Q29udGV4dCAqcykKIHN0YXRpYyBpbnQg
Zmx2X2luaXQoc3RydWN0IEFWRm9ybWF0Q29udGV4dCAqcykKIHsKICAgICBpbnQgaTsKKyAgICBp
bnQgdmlkZW9fY3RyID0gMDsKICAgICBGTFZDb250ZXh0ICpmbHYgPSBzLT5wcml2X2RhdGE7Ci0K
LSAgICBpZiAocy0+bmJfc3RyZWFtcyA+IEZMVl9TVFJFQU1fVFlQRV9OQikgewotICAgICAgICBh
dl9sb2cocywgQVZfTE9HX0VSUk9SLCAiaW52YWxpZCBudW1iZXIgb2Ygc3RyZWFtcyAlZFxuIiwK
LSAgICAgICAgICAgICAgICBzLT5uYl9zdHJlYW1zKTsKLSAgICAgICAgcmV0dXJuIEFWRVJST1Io
RUlOVkFMKTsKLSAgICB9CisgICAgCisgICAgZmx2LT5sYXN0X3RzID0gYXZfbWFsbG9jeihzaXpl
b2YoKmZsdi0+bGFzdF90cykgKiBzLT5uYl9zdHJlYW1zKTsKKyAgICBmbHYtPm1ldGFkYXRhX3Br
dF93cml0dGVuID0gYXZfbWFsbG9jeihzaXplb2YoKmZsdi0+bWV0YWRhdGFfcGt0X3dyaXR0ZW4p
ICogcy0+bmJfc3RyZWFtcyk7CisgICAgZmx2LT52aWRlb190cmFja19pZHhfbWFwID0gYXZfbWFs
bG9jeihzaXplb2YoKmZsdi0+dmlkZW9fdHJhY2tfaWR4X21hcCkgKiBzLT5uYl9zdHJlYW1zKTsK
IAogICAgIGZvciAoaSA9IDA7IGkgPCBzLT5uYl9zdHJlYW1zOyBpKyspIHsKICAgICAgICAgQVZD
b2RlY1BhcmFtZXRlcnMgKnBhciA9IHMtPnN0cmVhbXNbaV0tPmNvZGVjcGFyOwpAQCAtNzg2LDEy
ICs4MDgsMTcgQEAgc3RhdGljIGludCBmbHZfaW5pdChzdHJ1Y3QgQVZGb3JtYXRDb250ZXh0ICpz
KQogICAgICAgICAgICAgICAgIHMtPnN0cmVhbXNbaV0tPmF2Z19mcmFtZV9yYXRlLm51bSkgewog
ICAgICAgICAgICAgICAgIGZsdi0+ZnJhbWVyYXRlID0gYXZfcTJkKHMtPnN0cmVhbXNbaV0tPmF2
Z19mcmFtZV9yYXRlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmbHYtPnZpZGVv
X3BhcikgeworICAgICAgICAgICAgZmx2LT52aWRlb190cmFja19pZHhfbWFwW2ldID0gdmlkZW9f
Y3RyKys7CisgICAgICAgICAgICBpZiAoZmx2LT52aWRlb19wYXIgJiYgZmx2LT5mbGFncyAmIEZM
Vl9BRERfS0VZRlJBTUVfSU5ERVgpIHsKICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9H
X0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAiYXQgbW9zdCBvbmUgdmlkZW8gc3RyZWFt
IGlzIHN1cHBvcnRlZCBpbiBmbHZcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAiYXQgbW9z
dCBvbmUgdmlkZW8gc3RyZWFtIGlzIHN1cHBvcnRlZCBpbiBmbHYgd2l0aCBrZXlmcmFtZSBpbmRl
eFxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZmx2LT52aWRlb19wYXIpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2co
cywgQVZfTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHRoYW4gb25l
IHZpZGVvIHN0cmVhbSBpcyBub3Qgc3VwcG9ydGVkIGJ5IG1vc3QgZmx2IGRlbXV4ZXJzLlxuIik7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmbHYtPnZpZGVvX3BhciA9IHBhcjsKKyAgICAg
ICAgICAgIGlmICghZmx2LT52aWRlb19wYXIpCisgICAgICAgICAgICAgICAgZmx2LT52aWRlb19w
YXIgPSBwYXI7CiAgICAgICAgICAgICBpZiAoIWZmX2NvZGVjX2dldF90YWcoZmx2X3ZpZGVvX2Nv
ZGVjX2lkcywgcGFyLT5jb2RlY19pZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHVuc3VwcG9y
dGVkX2NvZGVjKHMsICJWaWRlbyIsIHBhci0+Y29kZWNfaWQpOwogCkBAIC04ODEsNyArOTA4LDcg
QEAgc3RhdGljIGludCBmbHZfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICB9
CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bmJfc3RyZWFtczsgaSsrKSB7Ci0gICAgICAgIGZs
dl93cml0ZV9jb2RlY19oZWFkZXIocywgcy0+c3RyZWFtc1tpXS0+Y29kZWNwYXIsIDApOworICAg
ICAgICBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKHMsIHMtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLCAw
LCBpKTsKICAgICB9CiAKICAgICBmbHYtPmRhdGFzdGFydF9vZmZzZXQgPSBhdmlvX3RlbGwocGIp
OwpAQCAtOTg5LDYgKzEwMTYsNyBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3Jt
YXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgIHVpbnQ4X3QgZnJhbWV0eXBlID0gcGt0
LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSA/IEZMVl9GUkFNRV9LRVkgOiBGTFZfRlJBTUVfSU5U
RVI7CiAgICAgaW50IGZsYWdzID0gLTEsIGZsYWdzX3NpemUsIHJldCA9IDA7CiAgICAgaW50NjRf
dCBjdXJfb2Zmc2V0ID0gYXZpb190ZWxsKHBiKTsKKyAgICBpbnQgdHJhY2tfaWR4ID0gZmx2LT52
aWRlb190cmFja19pZHhfbWFwW3BrdC0+c3RyZWFtX2luZGV4XTsKIAogICAgIGlmIChwYXItPmNv
ZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPICYmICFwa3QtPnNpemUpIHsKICAgICAgICAg
YXZfbG9nKHMsIEFWX0xPR19XQVJOSU5HLCAiRW1wdHkgYXVkaW8gUGFja2V0XG4iKTsKQEAgLTEw
MDUsNyArMTAzMywxMiBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250
ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgIGVsc2UKICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDE7
CiAKLSAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDICYmIHBrdC0+cHRz
ICE9IHBrdC0+ZHRzKQorICAgIGlmIChwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJ
REVPICYmIHRyYWNrX2lkeCkKKyAgICAgICAgZmxhZ3Nfc2l6ZSArPSAyOyAvLyBhZGRpdGlvbmFs
IGhlYWRlciBieXRlcyBmb3IgbXVsdGktdHJhY2sgdmlkZW8KKworICAgIGlmICgocGFyLT5jb2Rl
Y19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8CisgICAgICAgIChwYXItPmNvZGVjX2lkID09IEFW
X0NPREVDX0lEX0gyNjQgJiYgdHJhY2tfaWR4KSkKKyAgICAgICAgICAgICYmIHBrdC0+cHRzICE9
IHBrdC0+ZHRzKQogICAgICAgICBmbGFnc19zaXplICs9IDM7CiAKICAgICBpZiAocGFyLT5jb2Rl
Y19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I
MjY0CkBAIC0xMDE4LDkgKzEwNTEsOSBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZG
b3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgICAgICAgICAgaWYgKHJldCA8IDAp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgICAgIG1lbWNweShwYXItPmV4
dHJhZGF0YSwgc2lkZSwgc2lkZV9zaXplKTsKLSAgICAgICAgICAgIGZsdl93cml0ZV9jb2RlY19o
ZWFkZXIocywgcGFyLCBwa3QtPmR0cyk7CisgICAgICAgICAgICBmbHZfd3JpdGVfY29kZWNfaGVh
ZGVyKHMsIHBhciwgcGt0LT5kdHMsIHBrdC0+c3RyZWFtX2luZGV4KTsKICAgICAgICAgfQotICAg
ICAgICBmbHZfd3JpdGVfbWV0YWRhdGFfcGFja2V0KHMsIHBhciwgcGt0LT5kdHMpOworICAgICAg
ICBmbHZfd3JpdGVfbWV0YWRhdGFfcGFja2V0KHMsIHBhciwgcGt0LT5kdHMsIHBrdC0+c3RyZWFt
X2luZGV4KTsKICAgICB9CiAKICAgICBpZiAoZmx2LT5kZWxheSA9PSBBVl9OT1BUU19WQUxVRSkK
QEAgLTExNDIsMzIgKzExNzUsNTkgQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFWRm9y
bWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKICAgICAgICAgYXZpb19zZWVrKHBiLCBkYXRh
X3NpemUgKyAxMCAtIDMsIFNFRUtfQ1VSKTsKICAgICAgICAgYXZpb193YjMyKHBiLCBkYXRhX3Np
emUgKyAxMSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXZfYXNzZXJ0MShmbGFncz49MCk7Ci0g
ICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSAgICAgICAg
ICAgIGludCBwa3R0eXBlID0gKHBrdC0+cHRzICE9IHBrdC0+ZHRzKSA/IFBhY2tldFR5cGVDb2Rl
ZEZyYW1lcyA6IFBhY2tldFR5cGVDb2RlZEZyYW1lc1g7Ci0gICAgICAgICAgICBhdmlvX3c4KHBi
LCBGTFZfSVNfRVhfSEVBREVSIHwgcGt0dHlwZSB8IGZyYW1ldHlwZSk7IC8vIEV4VmlkZW9UYWdI
ZWFkZXIgbW9kZSB3aXRoIFBhY2tldFR5cGVDb2RlZEZyYW1lcyhYKQotICAgICAgICAgICAgYXZp
b193cml0ZShwYiwgImh2YzEiLCA0KTsKLSAgICAgICAgICAgIGlmIChwa3R0eXBlID09IFBhY2tl
dFR5cGVDb2RlZEZyYW1lcykKKyAgICAgICAgaW50IGV4dGVuZGVkX2ZsdiA9IChwYXItPmNvZGVj
X2lkID09IEFWX0NPREVDX0lEX0gyNjQgJiYgdHJhY2tfaWR4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J
RF9BVjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9
PSBBVl9DT0RFQ19JRF9WUDk7CisKKyAgICAgICAgaWYgKGV4dGVuZGVkX2ZsdikgeworICAgICAg
ICAgICAgaW50IGgyNjQ1ID0gcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkM7
CisgICAgICAgICAgICBpbnQgcGt0dHlwZSA9IFBhY2tldFR5cGVDb2RlZEZyYW1lczsKKyAgICAg
ICAgICAgIC8vIE9wdGltaXNhdGlvbiBmb3IgSEVWQy9IMjY0OiBEbyBub3Qgc2VuZCBjb21wb3Np
dGlvbiB0aW1lIGlmIERUUyA9PSBQVFMKKyAgICAgICAgICAgIGlmIChoMjY0NSAmJiBwa3QtPnB0
cyA9PSBwa3QtPmR0cykKKyAgICAgICAgICAgICAgICBwa3R0eXBlID0gUGFja2V0VHlwZUNvZGVk
RnJhbWVzWDsKKworICAgICAgICAgICAgaWYgKHRyYWNrX2lkeCkgeworICAgICAgICAgICAgICAg
IGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlTXVsdGl0cmFjayB8IGZy
YW1ldHlwZSk7CisgICAgICAgICAgICAgICAgYXZpb193OChwYiwgTXVsdGl0cmFja1R5cGVPbmVU
cmFjayB8IHBrdHR5cGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBh
dmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgcGt0dHlwZSB8IGZyYW1ldHlwZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09
IEFWX0NPREVDX0lEX0gyNjQpCisgICAgICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImF2YzEi
LCA0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf
SEVWQykKKyAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOworICAgICAg
ICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpCisgICAgICAg
ICAgICAgICAgYXZpb193cml0ZShwYiwgImF2MDEiLCA0KTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorICAgICAgICAgICAgICAgIGF2aW9f
d3JpdGUocGIsICJ2cDA5IiwgNCk7CisKKyAgICAgICAgICAgIGlmICh0cmFja19pZHgpCisgICAg
ICAgICAgICAgICAgYXZpb193OChwYiwgdHJhY2tfaWR4KTsKKyAgICAgICAgICAgIGlmIChoMjY0
NSAmJiBwa3R0eXBlID09IFBhY2tldFR5cGVDb2RlZEZyYW1lcykKICAgICAgICAgICAgICAgICBh
dmlvX3diMjQocGIsIHBrdC0+cHRzIC0gcGt0LT5kdHMpOwotICAgICAgICB9IGVsc2UgaWYgKHBh
ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E
RUNfSURfVlA5KSB7Ci0gICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwg
UGFja2V0VHlwZUNvZGVkRnJhbWVzIHwgZnJhbWV0eXBlKTsKLSAgICAgICAgICAgIGF2aW9fd3Jp
dGUocGIsIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxID8gImF2MDEiIDogInZwMDki
LCA0KTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF2X2Fzc2VydDEoZmxhZ3M+PTAp
OwogICAgICAgICAgICAgYXZpb193OChwYiwgZmxhZ3MpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNikKLSAgICAgICAgICAgIGF2aW9fdzgo
cGIsMCk7Ci0gICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkYgfHwg
cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDZBKSB7Ci0gICAgICAgICAgICBpZiAocGFy
LT5leHRyYWRhdGFfc2l6ZSkKLSAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmV4dHJh
ZGF0YVswXSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXZpb193OChwYiwg
KChGRkFMSUdOKHBhci0+d2lkdGgsICAxNikgLSBwYXItPndpZHRoKSA8PCA0KSB8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGRkFMSUdOKHBhci0+aGVpZ2h0LCAxNikgLSBwYXItPmhl
aWdodCkpOwotICAgICAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf
QUFDKQotICAgICAgICAgICAgYXZpb193OChwYiwgMSk7IC8vIEFBQyByYXcKLSAgICAgICAgZWxz
ZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQg
PT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKLSAgICAgICAgICAgIGF2aW9fdzgocGIsIDEpOyAvLyBB
VkMgTkFMVQotICAgICAgICAgICAgYXZpb193YjI0KHBiLCBwa3QtPnB0cyAtIHBrdC0+ZHRzKTsK
KworICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2KSB7Cisg
ICAgICAgICAgICAgICAgYXZpb193OChwYiwwKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGFy
LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDZGIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkEpIHsKKyAgICAgICAgICAgICAgICBp
ZiAocGFyLT5leHRyYWRhdGFfc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgYXZpb193OChwYiwg
cGFyLT5leHRyYWRhdGFbMF0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgYXZpb193OChwYiwgKChGRkFMSUdOKHBhci0+d2lkdGgsICAxNikgLSBwYXItPndpZHRo
KSA8PCA0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGRkFMSUdOKHBhci0+
aGVpZ2h0LCAxNikgLSBwYXItPmhlaWdodCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChwYXIt
PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQykgeworICAgICAgICAgICAgICAgIGF2aW9fdzgo
cGIsIDEpOyAvLyBBQUMgcmF3CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQg
PT0gQVZfQ09ERUNfSURfSDI2NCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyLT5jb2Rl
Y19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgeworICAgICAgICAgICAgICAgIGF2aW9fdzgocGIs
IDEpOyAvLyBBVkMgTkFMVQorICAgICAgICAgICAgICAgIGF2aW9fd2IyNChwYiwgcGt0LT5wdHMg
LSBwa3QtPmR0cyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBhdmlvX3dy
aXRlKHBiLCBkYXRhID8gZGF0YSA6IHBrdC0+ZGF0YSwgc2l6ZSk7CkBAIC0xMjM0LDYgKzEyOTQs
MTAgQEAgc3RhdGljIHZvaWQgZmx2X2RlaW5pdChBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgfQog
ICAgIGZsdi0+ZmlsZXBvc2l0aW9ucyA9IGZsdi0+aGVhZF9maWxlcG9zaXRpb25zID0gTlVMTDsK
ICAgICBmbHYtPmZpbGVwb3NpdGlvbnNfY291bnQgPSAwOworICAgIAorICAgIGF2X2ZyZWVwKCZm
bHYtPmxhc3RfdHMpOworICAgIGF2X2ZyZWVwKCZmbHYtPm1ldGFkYXRhX3BrdF93cml0dGVuKTsK
KyAgICBhdl9mcmVlcCgmZmx2LT52aWRlb190cmFja19pZHhfbWFwKTsKIH0KIAogc3RhdGljIGNv
bnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKLS0gCjIuMzkuMyAoQXBwbGUgR2l0LTE0NikKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZl
bCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3Jn
L21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGlu
ayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1
YmplY3QgInVuc3Vic2NyaWJlIi4K