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 62CC944D66 for ; Fri, 23 Dec 2022 12:52:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8C31868BAB3; Fri, 23 Dec 2022 14:52:14 +0200 (EET) Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4C2796806E2 for ; Fri, 23 Dec 2022 14:52:07 +0200 (EET) Received: by mail-lf1-f53.google.com with SMTP id bp15so6958616lfb.13 for ; Fri, 23 Dec 2022 04:52:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BLQ1bYlvkilNG5W1kqWtQaPw32tRBL+iNEaY+3p7dmw=; b=i6WKUzJpxEORzVpbAD5R4OO3rke0k3UKQWz8t4PHm1rZS6SGf6PapiX2/3/o+4G8Bl 78L8RvwR4ezAQ4e9MKrImkDnx+2371SD7/Gd92EPJeriKbtnd6mwHBOjr0wSiR8sd3j1 ypW2mbTjilwreXvNSY1AbXNpe4px/TD6z/hIumTJrQse1WmxVgrJ7AbzBSHrzue3mXY9 7lLei8i7T541QDzQ9w3M9DCRURa1xow5i261luzZKXBbE9uCLZoFRzcbcX07+ZEzry7R GZEqZcMnEw+0yBcxvgOSe+sVZMiP87xUZdxVuQt3mddQv6nvshnamHtx75+HYxfUBzNR oaGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BLQ1bYlvkilNG5W1kqWtQaPw32tRBL+iNEaY+3p7dmw=; b=nTdjYUhZ6dv5bXWAsvoP+3UKNhnZUoLKZ6FAqJP/vpYxpc3dJ43S9MQPPxFCmjRMy2 zKnGQ3ex0Nuf9xso+kBMTCd5iFKwFqG0dfVMnKxrKx2EtWUJwigClcqHIrTLAWYsOkbV Oemvk5y7eG2w/k6Qa9uwhSKcntqQ5rAqWiWwhyP/lU6aLqavFiRk7CPIMGSnI+8FDCWI qsJCOP90mm3l6hjkuKSOmnBep5AKztoxT52rW6i8HpOP3ZYxt+b2M7GhgkqxPCCR6tzI JmF+oYwpAyGz5fT7R6VqAwzT4fmy30qHwxowdWmUJSsMOcaaAwLJmCXgT1yt1LqbpExr pLew== X-Gm-Message-State: AFqh2kqOhRzatOQ61Q/obbymvTAcTZIYVT2IJfmAge7DVmO+MqwZLCJ1 z9jKONuWEJ+udZ9txqUhP+qh1a/7HeI= X-Google-Smtp-Source: AMrXdXtN0FhUHtpeyia4bDAQUY9Rro8nblt6kxNi9trZJnEyaJGLZUYFSB/mWgO1ikZJxCfSGIHK0w== X-Received: by 2002:a05:6512:3c89:b0:4b6:fddc:1fcd with SMTP id h9-20020a0565123c8900b004b6fddc1fcdmr4766903lfv.23.1671799926504; Fri, 23 Dec 2022 04:52:06 -0800 (PST) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id x14-20020a056512078e00b004b4f1ea713csm512600lfr.73.2022.12.23.04.52.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Dec 2022 04:52:05 -0800 (PST) From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 23 Dec 2022 14:51:57 +0200 Message-Id: <20221223125157.83340-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221223125157.83340-1-jeebjp@gmail.com> References: <20221223125157.83340-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/movenc: add support for fragmented TTML muxing 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: RnJvbTogSmFuIEVrc3Ryw7ZtIDxqYW4uZWtzdHJvbUAyNGkuY29tPgoKQXR0ZW1wdHMgdG8gYmFz ZSB0aGUgZnJhZ21lbnRhdGlvbiB0aW1pbmcgb24gb3RoZXIgc3RyZWFtcwphcyBtb3N0IHJlY2Vp dmVycyBleHBlY3QgbWVkaWEgZnJhZ21lbnRzIHRvIGJlIG1vcmUgb3IgbGVzcwphbGlnbmVkLgoK Q3VycmVudGx5IGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnRhdGlvbiBvbiBzdWJ0aXRsZSB0cmFj awpvbmx5LCBhcyB0aGUgc3VidGl0bGUgcGFja2V0IHF1ZXVlIHRpbWluZ3Mgd291bGQgaGF2ZSB0 byBiZQpjaGVja2VkIGluIGFkZGl0aW9uIHRvIHRoZSBjdXJyZW50IGZyYWdtZW50YXRpb24gdGlt aW5nIGxvZ2ljLgoKU2lnbmVkLW9mZi1ieTogSmFuIEVrc3Ryw7ZtIDxqYW4uZWtzdHJvbUAyNGku Y29tPgotLS0KIGxpYmF2Zm9ybWF0L21vdmVuYy5jICAgICAgfCAgIDkgLS0tCiBsaWJhdmZvcm1h dC9tb3ZlbmNfdHRtbC5jIHwgMTYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiAyIGZpbGVzIGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tb3ZlbmMuYyBiL2xpYmF2Zm9ybWF0L21vdmVuYy5j CmluZGV4IDdkNDk4OTIyODMuLmU5YTc5ODRmOGEgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21v dmVuYy5jCisrKyBiL2xpYmF2Zm9ybWF0L21vdmVuYy5jCkBAIC03MTg4LDE1ICs3MTg4LDYgQEAg c3RhdGljIGludCBtb3ZfaW5pdChBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgICAgICAgICAgICAg dHJhY2stPnNxdWFzaF9mcmFnbWVudF9zYW1wbGVzX3RvX29uZSA9CiAgICAgICAgICAgICAgICAg ICAgIGZmX2lzX3R0bWxfc3RyZWFtX3BhcmFncmFwaF9iYXNlZCh0cmFjay0+cGFyKTsKIAotICAg ICAgICAgICAgICAgIGlmIChtb3YtPmZsYWdzICYgRkZfTU9WX0ZMQUdfRlJBR01FTlQgJiYKLSAg ICAgICAgICAgICAgICAgICAgdHJhY2stPnNxdWFzaF9mcmFnbWVudF9zYW1wbGVzX3RvX29uZSkg ewotICAgICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkZyYWdtZW50YXRpb24gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0 ZWQgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJUVE1MIGluIE1QNC9JU01WICh0 cmFjayBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAic3VidGl0bGVzIGFuZCBvdGhlciBtZWRpYSBpcyBub3QgeWV0IGltcGxlbWVudGVkKSFcbiIp OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Ci0gICAg ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2RlICE9IE1PREVf SVNNICYmCiAgICAgICAgICAgICAgICAgICAgIHRyYWNrLT5wYXItPmNvZGVjX3RhZyA9PSBNT1Zf SVNNVl9UVE1MX1RBRyAmJgogICAgICAgICAgICAgICAgICAgICBzLT5zdHJpY3Rfc3RkX2NvbXBs aWFuY2UgPiBGRl9DT01QTElBTkNFX1VOT0ZGSUNJQUwpIHsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L21vdmVuY190dG1sLmMgYi9saWJhdmZvcm1hdC9tb3ZlbmNfdHRtbC5jCmluZGV4IDZkZWFl NDk2NTcuLjI3ZWM3ZDk0ODcgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21vdmVuY190dG1sLmMK KysrIGIvbGliYXZmb3JtYXQvbW92ZW5jX3R0bWwuYwpAQCAtNTQsNiArNTQsNTAgQEAgc3RhdGlj IGludCBtb3ZfaW5pdF90dG1sX3dyaXRlcihNT1ZUcmFjayAqdHJhY2ssIEFWRm9ybWF0Q29udGV4 dCAqKm91dF9jdHgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIG1vdl9jYWxjdWxh dGVfc3RhcnRfYW5kX2VuZF9vZl9vdGhlcl90cmFja3MoCisgICAgQVZGb3JtYXRDb250ZXh0ICpz LCBNT1ZUcmFjayAqdHJhY2ssIGludDY0X3QgKnN0YXJ0X3B0cywgaW50NjRfdCAqZW5kX3B0cykK K3sKKyAgICBNT1ZNdXhDb250ZXh0ICptb3YgPSBzLT5wcml2X2RhdGE7CisKKyAgICAvLyBJbml0 aWFsaXplIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGRvY3VtZW50L2ZyYWdtZW50LCB3aGlj aCBpcyBOT1BUUworICAgIC8vIHVudGlsIHRoZSBmaXJzdCBmcmFnbWVudCBpcyBjcmVhdGVkLgor ICAgIGludDY0X3QgbWF4X3RyYWNrX2VuZF9kdHMgPSAqc3RhcnRfcHRzID0gdHJhY2stPmVuZF9w dHM7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHMtPm5iX3N0cmVhbXM7IGkr KykgeworICAgICAgICBNT1ZUcmFjayAqb3RoZXJfdHJhY2sgPSAmbW92LT50cmFja3NbaV07CisK KyAgICAgICAgLy8gU2tpcCBvdXIgb3duIHRyYWNrLCBhbnkgb3RoZXIgdHJhY2sgdGhhdCBuZWVk cyBzcXVhc2hpbmcsCisgICAgICAgIC8vIG9yIGFueSB0cmFjayB3aGljaCBzdGlsbCBoYXMgaXRz IHN0YXJ0X2R0cyBhdCBOT1BUUyBvcgorICAgICAgICAvLyBhbnkgdHJhY2sgdGhhdCBkaWQgbm90 IHlldCBnZXQgYW55IHBhY2tldHMuCisgICAgICAgIGlmICh0cmFjayA9PSBvdGhlcl90cmFjayB8 fAorICAgICAgICAgICAgb3RoZXJfdHJhY2stPnNxdWFzaF9mcmFnbWVudF9zYW1wbGVzX3RvX29u ZSB8fAorICAgICAgICAgICAgb3RoZXJfdHJhY2stPnN0YXJ0X2R0cyA9PSBBVl9OT1BUU19WQUxV RSB8fAorICAgICAgICAgICAgIW90aGVyX3RyYWNrLT5lbnRyeSkgeworICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBpbnQ2NF90IHBpY2tl ZF9zdGFydCA9IGF2X3Jlc2NhbGVfcV9ybmQob3RoZXJfdHJhY2stPmNsdXN0ZXJbMF0uZHRzICsg b3RoZXJfdHJhY2stPmNsdXN0ZXJbMF0uY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyX3RyYWNrLT5zdC0+dGltZV9iYXNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLT5z dC0+dGltZV9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFWX1JPVU5EX05FQVJfSU5GIHwgQVZfUk9VTkRfUEFTU19NSU5NQVgpOworICAg ICAgICAgICAgaW50NjRfdCBwaWNrZWRfZW5kICAgPSBhdl9yZXNjYWxlX3Ffcm5kKG90aGVyX3Ry YWNrLT5lbmRfcHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG90aGVyX3RyYWNrLT5zdC0+dGltZV9iYXNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLT5zdC0+dGltZV9iYXNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX1JP VU5EX05FQVJfSU5GIHwgQVZfUk9VTkRfUEFTU19NSU5NQVgpOworCisgICAgICAgICAgICBpZiAo KnN0YXJ0X3B0cyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgICAgICAgICAqc3RhcnRfcHRz ID0gcGlja2VkX3N0YXJ0OworICAgICAgICAgICAgZWxzZSBpZiAocGlja2VkX3N0YXJ0ID49IHRy YWNrLT5lbmRfcHRzKQorICAgICAgICAgICAgICAgICpzdGFydF9wdHMgPSBGRk1JTigqc3RhcnRf cHRzLCBwaWNrZWRfc3RhcnQpOworCisgICAgICAgICAgICBtYXhfdHJhY2tfZW5kX2R0cyA9IEZG TUFYKG1heF90cmFja19lbmRfZHRzLCBwaWNrZWRfZW5kKTsKKyAgICAgICAgfQorICAgIH0KKwor ICAgICplbmRfcHRzID0gbWF4X3RyYWNrX2VuZF9kdHM7Cit9CisKIHN0YXRpYyBpbnQgbW92X3dy aXRlX3R0bWxfZG9jdW1lbnRfZnJvbV9xdWV1ZShBVkZvcm1hdENvbnRleHQgKnMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZGb3JtYXRDb250ZXh0ICp0 dG1sX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN T1ZUcmFjayAqdHJhY2ssCkBAIC02NSwxMyArMTA5LDg3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRl X3R0bWxfZG9jdW1lbnRfZnJvbV9xdWV1ZShBVkZvcm1hdENvbnRleHQgKnMsCiAgICAgaW50NjRf dCBzdGFydF90cyA9IHRyYWNrLT5zdGFydF9kdHMgPT0gQVZfTk9QVFNfVkFMVUUgPwogICAgICAg ICAgICAgICAgICAgICAgICAwIDogKHRyYWNrLT5zdGFydF9kdHMgKyB0cmFjay0+dHJhY2tfZHVy YXRpb24pOwogICAgIGludDY0X3QgZW5kX3RzICAgPSBzdGFydF90czsKKyAgICB1bnNpZ25lZCBp bnQgdGltZV9saW1pdGVkID0gMDsKKyAgICBQYWNrZXRMaXN0IGJhY2tfdG9fcXVldWVfbGlzdCA9 IHsgMCB9OworCisgICAgaWYgKCpvdXRfc3RhcnRfdHMgIT0gQVZfTk9QVFNfVkFMVUUpIHsKKyAg ICAgICAgLy8gd2UgaGF2ZSBub24tbm9wdHMgdmFsdWVzIGhlcmUsIHRodXMgd2UgaGF2ZSBiZWVu IGdpdmVuIGEgdGltZSByYW5nZQorICAgICAgICB0aW1lX2xpbWl0ZWQgPSAxOworICAgICAgICBz dGFydF90cyA9ICpvdXRfc3RhcnRfdHM7CisgICAgICAgIGVuZF90cyAgID0gKm91dF9zdGFydF90 cyArICpvdXRfZHVyYXRpb247CisgICAgfQogCiAgICAgaWYgKChyZXQgPSBhdmZvcm1hdF93cml0 ZV9oZWFkZXIodHRtbF9jdHgsIE5VTEwpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIHJldDsKICAg ICB9CiAKICAgICB3aGlsZSAoIWF2cHJpdl9wYWNrZXRfbGlzdF9nZXQoJnRyYWNrLT5zcXVhc2hl ZF9wYWNrZXRfcXVldWUsIHBrdCkpIHsKLSAgICAgICAgZW5kX3RzID0gRkZNQVgoZW5kX3RzLCBw a3QtPnB0cyArIHBrdC0+ZHVyYXRpb24pOworICAgICAgICB1bnNpZ25lZCBpbnQgc3RvcF9hdF9j dXJyZW50X3BhY2tldCA9IDA7CisgICAgICAgIGludDY0X3QgcHRzX2JlZm9yZSAgICAgID0gcGt0 LT5wdHM7CisgICAgICAgIGludDY0X3QgZHVyYXRpb25fYmVmb3JlID0gcGt0LT5kdXJhdGlvbjsK KworICAgICAgICBpZiAodGltZV9saW1pdGVkKSB7CisgICAgICAgICAgICAvLyBzcGVjaWFsIGNh c2VzIGZpcnN0OgorICAgICAgICAgICAgaWYgKHBrdC0+cHRzICsgcGt0LT5kdXJhdGlvbiA8IHN0 YXJ0X3RzKSB7CisgICAgICAgICAgICAgICAgLy8gdG9vIGxhdGUgZm9yIG91ciBmcmFnbWVudCwg dW5mb3J0dW5hdGVseQorICAgICAgICAgICAgICAgIC8vIHVucmVmIGFuZCBwcm9jZWVkIHRvIG5l eHQgcGFja2V0IGluIHF1ZXVlLgorICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfV0FS TklORywKKyAgICAgICAgICAgICAgICAgICAgICAgIlZlcnkgbGF0ZSBUVE1MIHBhY2tldCBpbiBx dWV1ZSwgZHJvcHBpbmcgcGFja2V0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAicHRz OiAlIlBSSWQ2NCIsIGR1cmF0aW9uOiAlIlBSSWQ2NCJcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgIHBrdC0+cHRzLCBwa3QtPmR1cmF0aW9uKTsKKyAgICAgICAgICAgICAgICBhdl9wYWNrZXRf dW5yZWYocGt0KTsKKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfaXRlcmF0aW9uOworICAgICAg ICAgICAgfSBlbHNlIGlmIChwa3QtPnB0cyA+PSBlbmRfdHMpIHsKKyAgICAgICAgICAgICAgICAv LyBzdGFydHMgYWZ0ZXIgdGhpcyBmcmFnbWVudCwgcHV0IGJhY2sgdG8gb3JpZ2luYWwgcXVldWUK KyAgICAgICAgICAgICAgICByZXQgPSBhdnByaXZfcGFja2V0X2xpc3RfcHV0KCZ0cmFjay0+c3F1 YXNoZWRfcGFja2V0X3F1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGt0LCBhdl9wYWNrZXRfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRkZfUEFDS0VUTElTVF9GTEFHX1BSRVBFTkQpOworICAgICAgICAg ICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CisK KyAgICAgICAgICAgICAgICBzdG9wX2F0X2N1cnJlbnRfcGFja2V0ID0gMTsKKyAgICAgICAgICAg ICAgICBnb3RvIG5leHRfaXRlcmF0aW9uOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv LyBsaW1pdCBwYWNrZXQgcHRzIHRvIHN0YXJ0X3RzCisgICAgICAgICAgICBpZiAocGt0LT5wdHMg PCBzdGFydF90cykgeworICAgICAgICAgICAgICAgIHBrdC0+ZHVyYXRpb24gLT0gc3RhcnRfdHMg LSBwa3QtPnB0czsKKyAgICAgICAgICAgICAgICBwa3QtPnB0cyA9IHN0YXJ0X3RzOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICBpZiAocGt0LT5wdHMgKyBwa3QtPmR1cmF0aW9uID4gZW5k X3RzKSB7CisgICAgICAgICAgICAgICAgLy8gZ29lcyBvdmVyIG91ciBjdXJyZW50IGZyYWdtZW50 LCBjcmVhdGUgZHVwbGljYXRlIGFuZAorICAgICAgICAgICAgICAgIC8vIHB1dCBpdCBiYWNrIHRv IGxpc3QgYWZ0ZXIgaXRlcmF0aW9uIGhhcyBmaW5pc2hlZCBpbgorICAgICAgICAgICAgICAgIC8v IG9yZGVyIHRvIGhhbmRsZSBtdWx0aXBsZSBzdWJ0aXRsZXMgYXQgdGhlIHNhbWUgdGltZS4KKyAg ICAgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IGVuZF90cyAtIHBrdC0+cHRzOworCisgICAg ICAgICAgICAgICAgcmV0ID0gYXZwcml2X3BhY2tldF9saXN0X3B1dCgmYmFja190b19xdWV1ZV9s aXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGt0LCBh dl9wYWNrZXRfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRkZfUEFDS0VUTElTVF9GTEFHX1BSRVBFTkQpOworICAgICAgICAgICAgICAgIGlmIChyZXQg PCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAgICAgICAgICAg ICBiYWNrX3RvX3F1ZXVlX2xpc3QuaGVhZC0+cGt0LnB0cyA9CisgICAgICAgICAgICAgICAgYmFj a190b19xdWV1ZV9saXN0LmhlYWQtPnBrdC5kdHMgPQorICAgICAgICAgICAgICAgIGJhY2tfdG9f cXVldWVfbGlzdC5oZWFkLT5wa3QucHRzICsgb2Zmc2V0OworICAgICAgICAgICAgICAgIGJhY2tf dG9fcXVldWVfbGlzdC5oZWFkLT5wa3QuZHVyYXRpb24gLT0gb2Zmc2V0OworCisgICAgICAgICAg ICAgICAgLy8gYW5kIGZvciBvdXIgbm9ybWFsIHBhY2tldCB3ZSBqdXN0IHNldCBkdXJhdGlvbiB0 byBvZmZzZXQKKyAgICAgICAgICAgICAgICBwa3QtPmR1cmF0aW9uID0gb2Zmc2V0OworICAgICAg ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW5kX3RzID0gRkZNQVgoZW5k X3RzLCBwa3QtPnB0cyArIHBrdC0+ZHVyYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgYXZf bG9nKHMsIEFWX0xPR19UUkFDRSwKKyAgICAgICAgICAgICAgICJUVE1MIHBhY2tldCB3cml0ZW91 dDogcHRzOiAlIlBSSWQ2NCIgKCUiUFJJZDY0IiksICIKKyAgICAgICAgICAgICAgICJkdXJhdGlv bjogJSJQUklkNjQiXG4iLAorICAgICAgICAgICAgICAgcGt0LT5wdHMsIHBrdC0+cHRzIC0gc3Rh cnRfdHMsIHBrdC0+ZHVyYXRpb24pOworICAgICAgICBpZiAocGt0LT5wdHMgIT0gcHRzX2JlZm9y ZSB8fCBwa3QtPmR1cmF0aW9uICE9IGR1cmF0aW9uX2JlZm9yZSkgeworICAgICAgICAgICAgYXZf bG9nKHMsIEFWX0xPR19UUkFDRSwKKyAgICAgICAgICAgICAgICAgICAiQWRqdXN0bWVudHM6IHB0 czogJSJQUklkNjQiLCBkdXJhdGlvbjogJSJQUklkNjQiXG4iLAorICAgICAgICAgICAgICAgICAg IHBrdC0+cHRzIC0gcHRzX2JlZm9yZSwgcGt0LT5kdXJhdGlvbiAtIGR1cmF0aW9uX2JlZm9yZSk7 CisgICAgICAgIH0KIAogICAgICAgICAvLyBpbiBjYXNlIG9mIHRoZSAnZGZ4cCcgbXV4aW5nIG1v ZGUsIGVhY2ggd3JpdHRlbiBkb2N1bWVudCBpcyBvZmZzZXQKICAgICAgICAgLy8gdG8gaXRzIGNv bnRhaW5pbmcgc2FtcGxlJ3MgYmVnaW5uaW5nLgpAQCAtODksNiArMjA3LDEwIEBAIHN0YXRpYyBp bnQgbW92X3dyaXRlX3R0bWxfZG9jdW1lbnRfZnJvbV9xdWV1ZShBVkZvcm1hdENvbnRleHQgKnMs CiAgICAgICAgIH0KIAogICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKKworbmV4dF9pdGVy YXRpb246CisgICAgICAgIGlmIChzdG9wX2F0X2N1cnJlbnRfcGFja2V0KQorICAgICAgICAgICAg YnJlYWs7CiAgICAgfQogCiAgICAgaWYgKChyZXQgPSBhdl93cml0ZV90cmFpbGVyKHR0bWxfY3R4 KSkgPCAwKQpAQCAtMTAwLDE1ICsyMjIsMzAgQEAgc3RhdGljIGludCBtb3Zfd3JpdGVfdHRtbF9k b2N1bWVudF9mcm9tX3F1ZXVlKEFWRm9ybWF0Q29udGV4dCAqcywKICAgICByZXQgPSAwOwogCiBj bGVhbnVwOgorICAgIHdoaWxlICghYXZwcml2X3BhY2tldF9saXN0X2dldCgmYmFja190b19xdWV1 ZV9saXN0LCBwa3QpKSB7CisgICAgICAgIHJldCA9IGF2cHJpdl9wYWNrZXRfbGlzdF9wdXQoJnRy YWNrLT5zcXVhc2hlZF9wYWNrZXRfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGt0LCBhdl9wYWNrZXRfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZGX1BBQ0tFVExJU1RfRkxBR19QUkVQRU5EKTsKKworICAgICAgICAvLyB1bnJl bGF0ZWQgdG8gd2hldGhlciB3ZSBzdWNjZWVkIG9yIG5vdCwgd2UgdW5yZWYgdGhlIHBhY2tldAor ICAgICAgICAvLyByZWNlaXZlZCBmcm9tIHRoZSB0ZW1wb3JhcnkgbGlzdC4KKyAgICAgICAgYXZf cGFja2V0X3VucmVmKHBrdCk7CisKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAg IGF2cHJpdl9wYWNrZXRfbGlzdF9mcmVlKCZiYWNrX3RvX3F1ZXVlX2xpc3QpOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIAogaW50IGZm X21vdl9nZW5lcmF0ZV9zcXVhc2hlZF90dG1sX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PVlRyYWNrICp0cmFjaywg QVZQYWNrZXQgKnBrdCkKIHsKKyAgICBNT1ZNdXhDb250ZXh0ICptb3YgPSBzLT5wcml2X2RhdGE7 CiAgICAgQVZGb3JtYXRDb250ZXh0ICp0dG1sX2N0eCA9IE5VTEw7CiAgICAgLy8gdmFsdWVzIGZv ciB0aGUgZ2VuZXJhdGVkIEFWUGFja2V0Ci0gICAgaW50NjRfdCBzdGFydF90cyA9IDA7CisgICAg aW50NjRfdCBzdGFydF90cyA9IEFWX05PUFRTX1ZBTFVFOwogICAgIGludDY0X3QgZHVyYXRpb24g PSAwOwogCiAgICAgaW50IHJldCA9IEFWRVJST1JfQlVHOwpAQCAtMTE5LDEyICsyNTYsMzAgQEAg aW50IGZmX21vdl9nZW5lcmF0ZV9zcXVhc2hlZF90dG1sX3BhY2tldChBVkZvcm1hdENvbnRleHQg KnMsCiAgICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CiAKKyAgICBpZiAobW92LT5mbGFncyAm IEZGX01PVl9GTEFHX0ZSQUdNRU5UKSB7CisgICAgICAgIGludDY0X3QgY2FsY3VsYXRlZF9zdGFy dCA9IEFWX05PUFRTX1ZBTFVFOworICAgICAgICBpbnQ2NF90IGNhbGN1bGF0ZWRfZW5kID0gQVZf Tk9QVFNfVkFMVUU7CisKKyAgICAgICAgbW92X2NhbGN1bGF0ZV9zdGFydF9hbmRfZW5kX29mX290 aGVyX3RyYWNrcyhzLCB0cmFjaywgJmNhbGN1bGF0ZWRfc3RhcnQsICZjYWxjdWxhdGVkX2VuZCk7 CisKKyAgICAgICAgaWYgKGNhbGN1bGF0ZWRfc3RhcnQgIT0gQVZfTk9QVFNfVkFMVUUpIHsKKyAg ICAgICAgICAgIHN0YXJ0X3RzID0gY2FsY3VsYXRlZF9zdGFydDsKKyAgICAgICAgICAgIGR1cmF0 aW9uID0gY2FsY3VsYXRlZF9lbmQgLSBjYWxjdWxhdGVkX3N0YXJ0OworICAgICAgICAgICAgYXZf bG9nKHMsIEFWX0xPR19WRVJCT1NFLAorICAgICAgICAgICAgICAgICAgICJDYWxjdWxhdGVkIHN1 YnRpdGxlIGZyYWdtZW50IHN0YXJ0OiAlIlBSSWQ2NCIsICIKKyAgICAgICAgICAgICAgICAgICAi ZHVyYXRpb246ICUiUFJJZDY0IlxuIiwKKyAgICAgICAgICAgICAgICAgICBzdGFydF90cywgZHVy YXRpb24pOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCF0cmFjay0+c3F1YXNoZWRfcGFj a2V0X3F1ZXVlLmhlYWQpIHsKICAgICAgICAgLy8gZW1wdHkgcXVldWUsIHdyaXRlIG1pbmltYWwg ZW1wdHkgZG9jdW1lbnQgd2l0aCB6ZXJvIGR1cmF0aW9uCiAgICAgICAgIGF2aW9fd3JpdGUodHRt bF9jdHgtPnBiLCBlbXB0eV90dG1sX2RvY3VtZW50LAogICAgICAgICAgICAgICAgICAgIHNpemVv ZihlbXB0eV90dG1sX2RvY3VtZW50KSAtIDEpOwotICAgICAgICBzdGFydF90cyA9IDA7Ci0gICAg ICAgIGR1cmF0aW9uID0gMDsKKyAgICAgICAgaWYgKHN0YXJ0X3RzID09IEFWX05PUFRTX1ZBTFVF KSB7CisgICAgICAgICAgICBzdGFydF90cyA9IDA7CisgICAgICAgICAgICBkdXJhdGlvbiA9IDA7 CisgICAgICAgIH0KICAgICAgICAgZ290byBnZW5lcmF0ZV9wYWNrZXQ7CiAgICAgfQogCi0tIAoy LjM4LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K