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 180AF4557A for ; Wed, 1 Feb 2023 15:34:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CDDFD68BE60; Wed, 1 Feb 2023 17:34:24 +0200 (EET) Received: from out203-205-251-72.mail.qq.com (out203-205-251-72.mail.qq.com [203.205.251.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0778D68BDDD for ; Wed, 1 Feb 2023 17:34:16 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1675265651; bh=fm6KRnz5u+HAPzzwI29nD/QCPoMwklFL5N3oveC+DJg=; h=From:Subject:Date:References:To:In-Reply-To; b=f4UuveQ2vlWmTkqIkCd16qWBKE1sVzQQI/JaKRLHLZbMNDTLZgEEviBPZSFn+yA4D jDQn5KCpwemvqXR2NRehR5xXlfxrgppBim5qwybPGiqrFFnW5gtqSLmePW7Z6cvJwO /N08D30zH9OD5uufEUJEIv9k4fMdNOe9VgJA8YjA= Received: from smtpclient.apple ([113.118.105.253]) by newxmesmtplogicsvrsza2-0.qq.com (NewEsmtp) with SMTP id 88A21646; Wed, 01 Feb 2023 23:34:10 +0800 X-QQ-mid: xmsmtpt1675265650tagd68wqc Message-ID: X-QQ-XMAILINFO: OEgU9iHXvJ5FdFxoEsE0kifBAoB+wGNlT7lvd/shDGvhR1wkIAHG7HeJaoSVOf o3BZOX0MEEJkyO5BE/1qcqU+IfAMGE9JELt7/Gc+FQLKQmwKng1X3sgcvsxjRKzqQvzzSY6K6yM/ SRm3D9FCAoYaCReFe++VpAMv7H2mjI6FYDDw5n4nqSVedbmfB6rUyJiebEAbNAfGmR3axclTM83d JBX106bZ0LPdQzdPjf6NNd+uhuegqjDria8bLconUEeQ48wDx0rhMaXDqEbvUaIXnbRxzLejIEXb tOgAn2u+hJNBSV/xyiKqkoqrNNiskPwQE1ChtgFVKJ/0uijw2tUz1lQ0SgSK0wbZDDpPj/MNnHe8 h7g7F4T7YMx6xnCpkhuyK0Z7Ynm9HrCW4+xJFeBV2T0xt28D9TnExqMCemBDvE+VKyygVEcnrvEP ckr/i4rLzCtE6WX5IwlaCsalumbAhA/upfzngbcVZ8c2E5kcVviVcB9A1vIDTHjmWy3xPUEBcmk0 QiPlxgQCvog+U3h4h/mfS5frmrboTbsqN85TstjptFeJBqdO2rT5yCAUEuN+Hjs0JFX/Nzs/Itwp A1xmVtXpfaPuaQBE1If5xVYyAYMnHudThdDiVY460LSARj9+HF5X7TKPIGSF4L3NUHNi3rLWUrRd yHKoy9ObWDiK5hLq/Lsr4/54x7nXRq9/qbrF2u6LlWrireVhYKw1gStA8KlJMVnbG1Hxrnhb0znP WoQrCX02JymDgSuWcBzxji9dsKfuWSrj9T8Anf4m/kJ7G9vdIgJ7ihTVFDW2ueRmHKUHAiQzWuc/ dN+g+Hq+2u029cdmofk5Td4uv+owHu+KQWeIlhPPdAmdLa319PBYwlFl41rOuaRv2la8w9JW6BEv Tkuuk/uOVvHKBpyFYMVotE1/XzzyrqBSH7UNfMWGY/8rDe5wqBiqqQganTfmVmp2GzfH42T2aR5G AdFLxZxCQDhPsTQHssCEVJYsQGhhq3pNxAdGw0T58RK69p+u455qpeaSarZMTGmSe2iecOzOU= From: =?utf-8?B?emhpbGl6aGFvKOi1teW/l+eriyk=?= Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Date: Wed, 1 Feb 2023 23:34:09 +0800 References: <20230103134040.41140-1-thomas.ff@spin-digital.com> <20230103134040.41140-5-thomas.ff@spin-digital.com> To: FFmpeg development discussions and patches In-Reply-To: <20230103134040.41140-5-thomas.ff@spin-digital.com> X-OQ-MSGID: X-Mailer: Apple Mail (2.3696.120.41.1.1) Subject: Re: [FFmpeg-devel] [PATCH v5 04/10] avcodec: add MP4 to annexb support for H266/VVC 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: Cgo+IE9uIEphbiAzLCAyMDIzLCBhdCAyMTo0MCwgVGhvbWFzIFNpZWRlbCA8dGhvbWFzLmZmQHNw aW4tZGlnaXRhbC5jb20+IHdyb3RlOgo+IAo+IEFkZCBwYXJzZXIgZm9yIFZWQyBNUDQgdG8gQW5u ZXggQiBieXRlIHN0cmVhbSBmb3JtYXQuCj4gCj4gQ28tYXV0aG9yZWQtYnk6IE51byBNaSA8bnVv bWkyMDIxQGdtYWlsLmNvbT4KPiAtLS0KPiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCj4gbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKwo+IGxp YmF2Y29kZWMvYml0c3RyZWFtX2ZpbHRlcnMuYyAgIHwgICAyICsKPiBsaWJhdmNvZGVjL2gyNjZf bWV0YWRhdGFfYnNmLmMgICB8IDE0NiArKysrKysrKysrKysrKwo+IGxpYmF2Y29kZWMvdnZjX21w NHRvYW5uZXhiX2JzZi5jIHwgMzI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKClBs ZWFzZSBhZGQgdGhlc2UgYnNmcyBpbiBzZXBhcmF0ZSBwYXRjaGVzLgoKPiA1IGZpbGVzIGNoYW5n ZWQsIDQ4MCBpbnNlcnRpb25zKCspCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvaDI2 Nl9tZXRhZGF0YV9ic2YuYwo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Y19tcDR0 b2FubmV4Yl9ic2YuYwoKSSBkb27igJl0IGtub3cgdGhlIHJlYXNvbiBiZWhpbmQgaDI2NV9tZXRh ZGF0YV9ic2YvaGV2Y19tcDR0b2FubmV4Yl9ic2YsCmJ1dCBJIHByZWZlciB1c2UgdGhlIHNhbWUg cHJlZml4IHVubGVzcyB0aGVyZSBhcmUgdGVjaG5pY2FsIHJlYXNvbnMuClN1Y2ggYWxpYXMgaXMg YW5ub3lpbmcgd2hlbiBicm93c2luZyBhbmQgc2VhcmNoaW5nIHRoZSBzb3VyY2UgY29kZS4KCj4g Cj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGluZGV4IDI0MDhkY2EwZjUu Ljc3NmE5NzI2NjMgMTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysrIGIvY29uZmlndXJlCj4g QEAgLTMyODYsNiArMzI4Niw3IEBAIG1qcGVnMmpwZWdfYnNmX3NlbGVjdD0ianBlZ3RhYmxlcyIK PiBtcGVnMl9tZXRhZGF0YV9ic2Zfc2VsZWN0PSJjYnNfbXBlZzIiCj4gdHJhY2VfaGVhZGVyc19i c2Zfc2VsZWN0PSJjYnMiCj4gdnA5X21ldGFkYXRhX2JzZl9zZWxlY3Q9ImNic192cDkiCj4gK3Z2 Y19tZXRhZGF0YV9ic2Zfc2VsZWN0PSJjYnNfaDI2NiIKPiAKPiAjIGV4dGVybmFsIGxpYnJhcmll cwo+IGFhY19hdF9kZWNvZGVyX2RlcHM9ImF1ZGlvdG9vbGJveCIKPiBkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiBpbmRleCAzZTg1OGIyMDBi Li4yZGVlMDk5ZjI1IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiArKysgYi9s aWJhdmNvZGVjL01ha2VmaWxlCj4gQEAgLTEyMzYsNiArMTIzNiw4IEBAIE9CSlMtJChDT05GSUdf VlA5X01FVEFEQVRBX0JTRikgICAgICAgICAgICs9IHZwOV9tZXRhZGF0YV9ic2Yubwo+IE9CSlMt JChDT05GSUdfVlA5X1JBV19SRU9SREVSX0JTRikgICAgICAgICs9IHZwOV9yYXdfcmVvcmRlcl9i c2Yubwo+IE9CSlMtJChDT05GSUdfVlA5X1NVUEVSRlJBTUVfQlNGKSAgICAgICAgICs9IHZwOV9z dXBlcmZyYW1lX2JzZi5vCj4gT0JKUy0kKENPTkZJR19WUDlfU1VQRVJGUkFNRV9TUExJVF9CU0Yp ICAgKz0gdnA5X3N1cGVyZnJhbWVfc3BsaXRfYnNmLm8KPiArT0JKUy0kKENPTkZJR19WVkNfTUVU QURBVEFfQlNGKSAgICAgICAgICAgKz0gaDI2Nl9tZXRhZGF0YV9ic2Yubwo+ICtPQkpTLSQoQ09O RklHX1ZWQ19NUDRUT0FOTkVYQl9CU0YpICAgICAgICArPSB2dmNfbXA0dG9hbm5leGJfYnNmLm8K PiAKPiAjIHRocmVhZCBsaWJyYXJpZXMKPiBPQkpTLSQoSEFWRV9MSUJDX01TVkNSVCkgICAgICAg ICAgICAgICArPSBmaWxlX29wZW4ubwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2JpdHN0cmVh bV9maWx0ZXJzLmMgYi9saWJhdmNvZGVjL2JpdHN0cmVhbV9maWx0ZXJzLmMKPiBpbmRleCBhM2Jl YmVmZTVmLi40MDM4ODRmM2Q3IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvYml0c3RyZWFtX2Zp bHRlcnMuYwo+ICsrKyBiL2xpYmF2Y29kZWMvYml0c3RyZWFtX2ZpbHRlcnMuYwo+IEBAIC02NCw2 ICs2NCw4IEBAIGV4dGVybiBjb25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl92cDlfbWV0YWRhdGFf YnNmOwo+IGV4dGVybiBjb25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl92cDlfcmF3X3Jlb3JkZXJf YnNmOwo+IGV4dGVybiBjb25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl92cDlfc3VwZXJmcmFtZV9i c2Y7Cj4gZXh0ZXJuIGNvbnN0IEZGQml0U3RyZWFtRmlsdGVyIGZmX3ZwOV9zdXBlcmZyYW1lX3Nw bGl0X2JzZjsKPiArZXh0ZXJuIGNvbnN0IEZGQml0U3RyZWFtRmlsdGVyIGZmX3Z2Y19tcDR0b2Fu bmV4Yl9ic2Y7Cj4gK2V4dGVybiBjb25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl92dmNfbWV0YWRh dGFfYnNmOwoKUGxlYXNlIHNvcnQgYnkgYWxwaGFiZXRpY2FsIG9yZGVyLgoKPiAKPiAjaW5jbHVk ZSAibGliYXZjb2RlYy9ic2ZfbGlzdC5jIgo+IAo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gy NjZfbWV0YWRhdGFfYnNmLmMgYi9saWJhdmNvZGVjL2gyNjZfbWV0YWRhdGFfYnNmLmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLmYyYmQyZjMxZjMKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvbGliYXZjb2RlYy9oMjY2X21ldGFkYXRhX2JzZi5jCj4gQEAgLTAsMCAr MSwxNDYgQEAKPiArLyoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25n IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2NvbW1v bi5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgo+ICsKPiArI2luY2x1ZGUgImJzZi5o Igo+ICsjaW5jbHVkZSAiYnNmX2ludGVybmFsLmgiCj4gKyNpbmNsdWRlICJjYnMuaCIKPiArI2lu Y2x1ZGUgImNic19ic2YuaCIKPiArI2luY2x1ZGUgImNic19oMjY2LmgiCj4gKyNpbmNsdWRlICJ2 dmMuaCIKPiArCj4gKyNkZWZpbmUgSVNfU0xJQ0UobnV0KSAobnV0IDw9IFZWQ19SQVNMX05VVCB8 fCAobnV0ID49IFZWQ19JRFJfV19SQURMICYmIG51dCA8PSBWVkNfR0RSX05VVCkpCj4gKyNkZWZp bmUgSVNfUEgobnV0KSAobnV0ID09IFZWQ19QSF9OVVQpCgpUaGV5IGFyZSBkdXBsaWNhdGVkIGlu c2lkZSB2dmNfcGFyc2VyLmMuIEhvdyBhYm91dCBhZGQgYSBwcmVmaXggYW5kIHNoYXJlIHRoZXNl IG1hY3Jvcz8KCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBWVkNNZXRhZGF0YUNvbnRleHQgewo+ICsg ICAgQ0JTQlNGQ29udGV4dCBjb21tb247Cj4gKwo+ICsgICAgSDI2NlJhd0FVRCBhdWRfbmFsOwo+ ICsKPiArICAgIGludCBhdWQ7Cj4gK30gVlZDTWV0YWRhdGFDb250ZXh0Owo+ICsKPiArc3RhdGlj IGludCBoMjY2X21ldGFkYXRhX3VwZGF0ZV9mcmFnbWVudChBVkJTRkNvbnRleHQgKmJzZiwgQVZQ YWNrZXQgKnBrdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD b2RlZEJpdHN0cmVhbUZyYWdtZW50ICpwdSkKPiArewo+ICsgICAgVlZDTWV0YWRhdGFDb250ZXh0 ICpjdHggPSBic2YtPnByaXZfZGF0YTsKPiArICAgIGludCBlcnIsIGk7Cj4gKwo+ICsgICAgLy8g SWYgYW4gQVVEIGlzIHByZXNlbnQsIGl0IG11c3QgYmUgdGhlIGZpcnN0IE5BTCB1bml0Lgo+ICsg ICAgaWYgKHB1LT51bml0c1swXS50eXBlID09IFZWQ19BVURfTlVUKSB7Cj4gKyAgICAgICAgaWYg KGN0eC0+YXVkID09IEJTRl9FTEVNRU5UX1JFTU9WRSkKPiArICAgICAgICAgICAgZmZfY2JzX2Rl bGV0ZV91bml0KHB1LCAwKTsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgaWYgKGN0eC0+YXVk ID09IEJTRl9FTEVNRU5UX0lOU0VSVCkgewoKU2hvdWxkIGNoZWNrIHBrdCAhPSBOVUxMIGhlcmUu CgpgZWxzZSBpZmAgY2FuIHNhdmUgb25lIGxldmVsIG9mIGluZGVudGF0aW9uLgoKPiArICAgICAg ICAgICAgY29uc3QgSDI2NlJhd1NsaWNlICpmaXJzdF9zbGljZSA9IE5VTEw7Cj4gKyAgICAgICAg ICAgIGNvbnN0IEgyNjZSYXdQSCAqcGggPSBOVUxMOwo+ICsgICAgICAgICAgICBIMjY2UmF3QVVE ICphdWQgPSAmY3R4LT5hdWRfbmFsOwo+ICsgICAgICAgICAgICBpbnQgcGljX3R5cGUgPSAwLCB0 ZW1wb3JhbF9pZCA9IDgsIGxheWVyX2lkID0gMDsKPiArICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IHB1LT5uYl91bml0czsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICBjb25zdCBIMjY2UmF3 TkFMVW5pdEhlYWRlciAqbmFsID0gcHUtPnVuaXRzW2ldLmNvbnRlbnQ7Cj4gKyAgICAgICAgICAg ICAgICBpZiAoIW5hbCkKPiArICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAg ICAgICAgICAgIGlmIChuYWwtPm51aF90ZW1wb3JhbF9pZF9wbHVzMSA8IHRlbXBvcmFsX2lkICsg MSkKPiArICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhbF9pZCA9IG5hbC0+bnVoX3RlbXBvcmFs X2lkX3BsdXMxIC0gMTsKPiArICAgICAgICAgICAgICAgIGlmIChJU19QSChuYWwtPm5hbF91bml0 X3R5cGUpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcGggPSBwdS0+dW5pdHNbaV0uY29udGVu dDsKPiArICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfU0xJQ0UobmFsLT5uYWxfdW5pdF90 eXBlKSkgewo+ICsgICAgICAgICAgICAgICAgICAgIGNvbnN0IEgyNjZSYXdTbGljZSAqc2xpY2Ug PSBwdS0+dW5pdHNbaV0uY29udGVudDsKPiArICAgICAgICAgICAgICAgICAgICBsYXllcl9pZCA9 IG5hbC0+bnVoX2xheWVyX2lkOwo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChzbGljZS0+aGVh ZGVyLnNoX3NsaWNlX3R5cGUgPT0gVlZDX1NMSUNFX1RZUEVfQiAmJgo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBwaWNfdHlwZSA8IDIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY190 eXBlID0gMjsKPiArICAgICAgICAgICAgICAgICAgICBpZiAoc2xpY2UtPmhlYWRlci5zaF9zbGlj ZV90eXBlID09IFZWQ19TTElDRV9UWVBFX1AgJiYKPiArICAgICAgICAgICAgICAgICAgICAgICAg cGljX3R5cGUgPCAxKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdHlwZSA9IDE7Cj4g KyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdF9zbGljZSkgewo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBmaXJzdF9zbGljZSA9IHNsaWNlOwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZmlyc3Rfc2xpY2UtPmhlYWRlci4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNoX3BpY3R1cmVfaGVhZGVyX2luX3NsaWNlX2hlYWRlcl9mbGFnKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGggPSAmZmlyc3Rfc2xpY2UtPmhlYWRlci5zaF9waWN0dXJlX2hlYWRl cjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXBoKQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAg ICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGlmICghcGgpIHsK PiArICAgICAgICAgICAgICAgIGF2X2xvZyhic2YsIEFWX0xPR19FUlJPUiwgIm5vIGF2YWxpYWJs ZSBwaWN0dXJlIGhlYWRlciIpOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGF1ZC0+bmFsX3Vu aXRfaGVhZGVyID0gKEgyNjZSYXdOQUxVbml0SGVhZGVyKSB7Cj4gKyAgICAgICAgICAgICAgICAu bmFsX3VuaXRfdHlwZSAgICAgICAgID0gVlZDX0FVRF9OVVQsCj4gKyAgICAgICAgICAgICAgICAu bnVoX2xheWVyX2lkICAgICAgICAgID0gbGF5ZXJfaWQsCj4gKyAgICAgICAgICAgICAgICAubnVo X3RlbXBvcmFsX2lkX3BsdXMxID0gdGVtcG9yYWxfaWQgKyAxLAo+ICsgICAgICAgICAgICB9Owo+ ICsgICAgICAgICAgICBhdWQtPmF1ZF9waWNfdHlwZSA9IHBpY190eXBlOwo+ICsgICAgICAgICAg ICBhdWQtPmF1ZF9pcmFwX29yX2dkcl9mbGFnID0gcGgtPnBoX2dkcl9vcl9pcmFwX3BpY19mbGFn Owo+ICsKPiArICAgICAgICAgICAgZXJyID0gZmZfY2JzX2luc2VydF91bml0X2NvbnRlbnQocHUs IDAsIFZWQ19BVURfTlVULCBhdWQsIE5VTEwpOwo+ICsgICAgICAgICAgICBpZiAoZXJyIDwgMCkg ewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGJzZiwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRv IGluc2VydCBBVUQuXG4iKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gKyAgICAg ICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IENCU0JTRlR5cGUgaDI2Nl9tZXRhZGF0YV90eXBlID0gewo+ICsgICAg LmNvZGVjX2lkICAgICAgICA9IEFWX0NPREVDX0lEX1ZWQywKPiArICAgIC5mcmFnbWVudF9uYW1l ICAgPSAiYWNjZXNzIHVuaXQiLAo+ICsgICAgLnVuaXRfbmFtZSAgICAgICA9ICJOQUwgdW5pdCIs Cj4gKyAgICAudXBkYXRlX2ZyYWdtZW50ID0gJmgyNjZfbWV0YWRhdGFfdXBkYXRlX2ZyYWdtZW50 LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCB2dmNfbWV0YWRhdGFfaW5pdChBVkJTRkNvbnRleHQg KmJzZikKPiArewo+ICsgICAgcmV0dXJuIGZmX2Nic19ic2ZfZ2VuZXJpY19pbml0KGJzZiwgJmgy NjZfbWV0YWRhdGFfdHlwZSk7Cj4gK30KPiArCj4gKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9m KFZWQ01ldGFkYXRhQ29udGV4dCwgeCkKPiArI2RlZmluZSBGTEFHUyAoQVZfT1BUX0ZMQUdfVklE RU9fUEFSQU18QVZfT1BUX0ZMQUdfQlNGX1BBUkFNKQo+ICtzdGF0aWMgY29uc3QgQVZPcHRpb24g dnZjX21ldGFkYXRhX29wdGlvbnNbXSA9IHsKPiArICAgIEJTRl9FTEVNRU5UX09QVElPTlNfUElS KCJhdWQiLCAiQWNjZXNzIFVuaXQgRGVsaW1pdGVyIE5BTCB1bml0cyIsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdWQsIEZMQUdTKSwKPiArCj4gKyAgICB7IE5VTEwgfQo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IEFWQ2xhc3MgdnZjX21ldGFkYXRhX2NsYXNzID0gewo+ICsgICAg LmNsYXNzX25hbWUgPSAidnZjX21ldGFkYXRhX2JzZiIsCj4gKyAgICAuaXRlbV9uYW1lICA9IGF2 X2RlZmF1bHRfaXRlbV9uYW1lLAo+ICsgICAgLm9wdGlvbiAgICAgPSB2dmNfbWV0YWRhdGFfb3B0 aW9ucywKPiArICAgIC52ZXJzaW9uICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IGVudW0gQVZDb2RlY0lEIHZ2Y19tZXRhZGF0YV9jb2RlY19pZHNb XSA9IHsKPiArICAgIEFWX0NPREVDX0lEX1ZWQywgQVZfQ09ERUNfSURfTk9ORSwKPiArfTsKPiAr Cj4gK2NvbnN0IEZGQml0U3RyZWFtRmlsdGVyIGZmX3Z2Y19tZXRhZGF0YV9ic2YgPSB7Cj4gKyAg ICAucC5uYW1lICAgICAgICAgPSAidnZjX21ldGFkYXRhIiwKPiArICAgIC5wLmNvZGVjX2lkcyAg ICA9IHZ2Y19tZXRhZGF0YV9jb2RlY19pZHMsCj4gKyAgICAucC5wcml2X2NsYXNzICAgPSAmdnZj X21ldGFkYXRhX2NsYXNzLAo+ICsgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFZWQ01ldGFk YXRhQ29udGV4dCksCj4gKyAgICAuaW5pdCAgICAgICAgICAgPSAmdnZjX21ldGFkYXRhX2luaXQs Cj4gKyAgICAuY2xvc2UgICAgICAgICAgPSAmZmZfY2JzX2JzZl9nZW5lcmljX2Nsb3NlLAo+ICsg ICAgLmZpbHRlciAgICAgICAgID0gJmZmX2Nic19ic2ZfZ2VuZXJpY19maWx0ZXIsCj4gK307CgpU aGUgZnVuY3Rpb24gb2YgdnZjX21ldGFkYXRhIGlzIHZlcnkgbGltaXRlZCwgSeKAmWQgbGlrZSB0 byBzdWdnZXN0CmFkZCBtb3JlIGZlYXR1cmVzIHdpdGggdjIuIEl0IGNhbiBiZSBkb25lIGFmdGVy IG90aGVyIHBhdGNoZXMuCgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Y19tcDR0b2FubmV4 Yl9ic2YuYyBiL2xpYmF2Y29kZWMvdnZjX21wNHRvYW5uZXhiX2JzZi5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi5iZGY0MGI1MzFmCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2xpYmF2Y29kZWMvdnZjX21wNHRvYW5uZXhiX2JzZi5jCj4gQEAgLTAsMCArMSwzMjkg QEAKPiArLyoKPiArICogVlZDIE1QNCB0byBBbm5leCBCIGJ5dGUgc3RyZWFtIGZvcm1hdCBmaWx0 ZXIKPiArICogQ29weXJpZ2h0IChjKSAyMDIyLCBUaG9tYXMgU2llZGVsCj4gKyAqCj4gKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4g KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9p bnRyZWFkd3JpdGUuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKPiArCj4gKyNpbmNs dWRlICJhdmNvZGVjLmgiCj4gKyNpbmNsdWRlICJic2YuaCIKPiArI2luY2x1ZGUgImJzZl9pbnRl cm5hbC5oIgo+ICsjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgo+ICsjaW5jbHVkZSAidnZjLmgiCj4g Kwo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0cy5oIgo+ICsKPiArI2RlZmluZSBNSU5f VlZDQ19MRU5HVEggMjMKPiArCj4gK3R5cGVkZWYgc3RydWN0IFZWQ0JTRkNvbnRleHQgewo+ICsg ICAgdWludDhfdCBsZW5ndGhfc2l6ZTsKPiArICAgIGludCBleHRyYWRhdGFfcGFyc2VkOwo+ICt9 IFZWQ0JTRkNvbnRleHQ7Cj4gKwo+ICtzdGF0aWMgaW50IHZ2Y19leHRyYWRhdGFfdG9fYW5uZXhi KEFWQlNGQ29udGV4dCAqY3R4KQo+ICt7Cj4gKyAgICBHZXRCeXRlQ29udGV4dCBnYjsKPiArICAg IGludCBsZW5ndGhfc2l6ZSwgbnVtX2FycmF5cywgaSwgajsKPiArICAgIGludCByZXQgPSAwOwo+ ICsgICAgaW50IHRlbXAgPSAwOwo+ICsgICAgaW50IHB0bF9wcmVzZW50Owo+ICsKPiArICAgIHVp bnQ4X3QgKm5ld19leHRyYWRhdGEgPSBOVUxMOwo+ICsgICAgc2l6ZV90IG5ld19leHRyYWRhdGFf c2l6ZSA9IDA7Cj4gKwo+ICsgICAgaW50IG1heF9waWN0dXJlX3dpZHRoID0gMDsKPiArICAgIGlu dCBtYXhfcGljdHVyZV9oZWlnaHQgPSAwOwo+ICsgICAgaW50IGF2Z19mcmFtZV9yYXRlID0gMDsK PiArCj4gKyAgICBieXRlc3RyZWFtMl9pbml0KCZnYiwgY3R4LT5wYXJfaW4tPmV4dHJhZGF0YSwg Y3R4LT5wYXJfaW4tPmV4dHJhZGF0YV9zaXplKTsKPiArICAgIHRlbXAgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZSgmZ2IpOwo+ICsgICAgbGVuZ3RoX3NpemUgPSAoKHRlbXAgJiA2KSA+PiAxKSArIDE7 Cj4gKyAgICBwdGxfcHJlc2VudCA9IHRlbXAgJiAxOwo+ICsgICAgaWYgKHB0bF9wcmVzZW50KSB7 Cj4gKyAgICAgICAgaW50IG51bV9ieXRlc19jb25zdHJhaW50X2luZm87Cj4gKyAgICAgICAgaW50 IGdlbmVyYWxfcHJvZmlsZV9pZGM7Cj4gKyAgICAgICAgaW50IGdlbmVyYWxfdGllcl9mbGFnOwo+ ICsgICAgICAgIGludCBnZW5lcmFsX2xldmVsX2lkYzsKPiArICAgICAgICBpbnQgcHRsX2ZyYW1l X29ubHlfY29uc3RyYWludF9mbGFnOwo+ICsgICAgICAgIGludCBwdGxfbXVsdGlfbGF5ZXJfZW5h YmxlZF9mbGFnOwo+ICsgICAgICAgIGludCBwdGxfbnVtX3N1Yl9wcm9maWxlczsKPiArICAgICAg ICBpbnQgdGVtcDMsIHRlbXA0LCB0ZW1wNTsKPiArICAgICAgICBpbnQgdGVtcDIgPSBieXRlc3Ry ZWFtMl9nZXRfYmUxNigmZ2IpOwo+ICsgICAgICAgIGludCBvbHNfaWR4ID0gKHRlbXAyID4+IDcp ICYgMHgxZmY7Cj4gKyAgICAgICAgaW50IG51bV9zdWJsYXllcnMgPSAodGVtcDIgPj4gNCkgJiAw eDc7Cj4gKyAgICAgICAgaW50IGNvbnN0YW50X2ZyYW1lX3JhdGUgPSAodGVtcDIgPj4gMikgJiAw eDM7Cj4gKyAgICAgICAgaW50IGNocm9tYV9mb3JtYXRfaWRjID0gdGVtcDIgJiAweDM7Cj4gKyAg ICAgICAgaW50IGJpdF9kZXB0aF9taW51czggPSAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmdiKSA+ PiA1KSAmIDB4NzsKPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsCj4gKyAgICAg ICAgICAgICAgICJiaXRfZGVwdGhfbWludXM4ICVkIGNocm9tYV9mb3JtYXRfaWRjICVkXG4iLCBi aXRfZGVwdGhfbWludXM4LAo+ICsgICAgICAgICAgICAgICBjaHJvbWFfZm9ybWF0X2lkYyk7Cj4g KyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0RFQlVHLCAiY29uc3RhbnRfZnJhbWVfcmF0ZSAl ZCwgb2xzX2lkeCAlZFxuIiwKPiArICAgICAgICAgICAgICAgY29uc3RhbnRfZnJhbWVfcmF0ZSwg b2xzX2lkeCk7Cj4gKyAgICAgICAgLy8gVnZjUFRMUmVjb3JkKG51bV9zdWJsYXllcnMpIG5hdGl2 ZV9wdGwKPiArICAgICAgICB0ZW1wMyA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZnYik7Cj4gKyAg ICAgICAgbnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mbyA9ICh0ZW1wMykgJiAweDNmOwo+ICsgICAg ICAgIHRlbXA0ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmdiKTsKPiArICAgICAgICBnZW5lcmFs X3Byb2ZpbGVfaWRjID0gKHRlbXA0ID4+IDEpICYgMHg3ZjsKPiArICAgICAgICBnZW5lcmFsX3Rp ZXJfZmxhZyA9ICh0ZW1wNCkgJiAxOwo+ICsgICAgICAgIGdlbmVyYWxfbGV2ZWxfaWRjID0gYnl0 ZXN0cmVhbTJfZ2V0X2J5dGUoJmdiKTsKPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVC VUcsCj4gKyAgICAgICAgICAgICAgICJnZW5lcmFsX3Byb2ZpbGVfaWRjICVkLCBnZW5lcmFsX3Rp ZXJfZmxhZyAlZCwgZ2VuZXJhbF9sZXZlbF9pZGMgJWQsIG51bV9zdWJsYXllcnMgJWQgbnVtX2J5 dGVzX2NvbnN0cmFpbnRfaW5mbyAlZFxuIiwKPiArICAgICAgICAgICAgICAgZ2VuZXJhbF9wcm9m aWxlX2lkYywgZ2VuZXJhbF90aWVyX2ZsYWcsIGdlbmVyYWxfbGV2ZWxfaWRjLAo+ICsgICAgICAg ICAgICAgICBudW1fc3VibGF5ZXJzLCBudW1fYnl0ZXNfY29uc3RyYWludF9pbmZvKTsKPiArCj4g KyAgICAgICAgdGVtcDUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZSgmZ2IpOwo+ICsgICAgICAgIHB0 bF9mcmFtZV9vbmx5X2NvbnN0cmFpbnRfZmxhZyA9ICh0ZW1wNSA+PiA3KSAmIDB4MTsKPiArICAg ICAgICBwdGxfbXVsdGlfbGF5ZXJfZW5hYmxlZF9mbGFnICAgPSAodGVtcDUgPj4gNikgJiAweDE7 Cj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9ieXRlc19jb25zdHJhaW50X2luZm8gLSAx OyBpKyspIHsKPiArICAgICAgICAgICAgLy8gdW5zaWduZWQgaW50KDgqbnVtX2J5dGVzX2NvbnN0 cmFpbnRfaW5mbyAtIDIpIGdlbmVyYWxfY29uc3RyYWludF9pbmZvOwo+ICsgICAgICAgICAgICBi eXRlc3RyZWFtMl9nZXRfYnl0ZSgmZ2IpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0RFQlVHLAo+ICsgICAgICAgICAgICAgICAicHRsX211bHRpX2xheWVy X2VuYWJsZWRfZmxhZyAlZCwgcHRsX2ZyYW1lX29ubHlfY29uc3RyYWludF9mbGFnICVkXG4iLAo+ ICsgICAgICAgICAgICAgICBwdGxfbXVsdGlfbGF5ZXJfZW5hYmxlZF9mbGFnLCBwdGxfZnJhbWVf b25seV9jb25zdHJhaW50X2ZsYWcpOwo+ICsKPiArICAgICAgICBpZiAobnVtX3N1YmxheWVycyA+ IDEpIHsKPiArICAgICAgICAgICAgaW50IHRlbXA2ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmdi KTsKPiArICAgICAgICAgICAgdWludDhfdCBwdGxfc3VibGF5ZXJfbGV2ZWxfcHJlc2VudF9mbGFn WzhdID0geyAwIH07Cj4gKyAgICAgICAgICAgIC8vdWludDhfdCBzdWJsYXllcl9sZXZlbF9pZGNb OF0gPSB7MH07Cj4gKyAgICAgICAgICAgIGZvciAoaSA9IG51bV9zdWJsYXllcnMgLSAyOyBpID49 IDA7IGktLSkgewo+ICsgICAgICAgICAgICAgICAgcHRsX3N1YmxheWVyX2xldmVsX3ByZXNlbnRf ZmxhZ1tpXSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgKHRlbXA2ID4+ICg3IC0gKG51bV9zdWJs YXllcnMgLSAyIC0gaSkpKSAmIDB4MDE7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg Ly8gZm9yIChqPW51bV9zdWJsYXllcnM7IGo8PTggJiYgbnVtX3N1YmxheWVycyA+IDE7IGorKykK PiArICAgICAgICAgICAgLy8gICAgIGJpdCgxKSBwdGxfcmVzZXJ2ZWRfemVyb19iaXQgPSAwOwo+ ICsgICAgICAgICAgICBmb3IgKGkgPSBudW1fc3VibGF5ZXJzIC0gMjsgaSA+PSAwOyBpLS0pIHsK PiArICAgICAgICAgICAgICAgIGlmIChwdGxfc3VibGF5ZXJfbGV2ZWxfcHJlc2VudF9mbGFnW2ld KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgLy9zdWJsYXllcl9sZXZlbF9pZGNbaV0gPSBieXRl c3RyZWFtMl9nZXRfYnl0ZSgmZ2IpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg ICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBwdGxfbnVtX3N1Yl9wcm9maWxlcyA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRlKCZnYik7Cj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHB0bF9u dW1fc3ViX3Byb2ZpbGVzOyBqKyspIHsKPiArICAgICAgICAgICAgLy8gdW5zaWduZWQgaW50KDMy KSBnZW5lcmFsX3N1Yl9wcm9maWxlX2lkY1tqXTsKPiArICAgICAgICAgICAgYnl0ZXN0cmVhbTJf Z2V0X2JlMTYoJmdiKTsKPiArICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2JlMTYoJmdiKTsK PiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIG1heF9waWN0dXJlX3dpZHRoID0gYnl0ZXN0cmVh bTJfZ2V0X2JlMTYoJmdiKTsgIC8vIHVuc2lnbmVkX2ludCgxNikgbWF4X3BpY3R1cmVfd2lkdGg7 Cj4gKyAgICAgICAgbWF4X3BpY3R1cmVfaGVpZ2h0ID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMTYoJmdi KTsgLy8gdW5zaWduZWRfaW50KDE2KSBtYXhfcGljdHVyZV9oZWlnaHQ7Cj4gKyAgICAgICAgYXZn X2ZyYW1lX3JhdGUgPSBieXRlc3RyZWFtMl9nZXRfYmUxNigmZ2IpOyAgICAgLy8gdW5zaWduZWQg aW50KDE2KSBhdmdfZnJhbWVfcmF0ZTsgfQo+ICsgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19E RUJVRywKPiArICAgICAgICAgICAgICAgIm1heF9waWN0dXJlX3dpZHRoICVkLCBtYXhfcGljdHVy ZV9oZWlnaHQgJWQsIGF2Z19mcmFtZV9yYXRlICVkXG4iLAo+ICsgICAgICAgICAgICAgICBtYXhf cGljdHVyZV93aWR0aCwgbWF4X3BpY3R1cmVfaGVpZ2h0LCBhdmdfZnJhbWVfcmF0ZSk7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgbnVtX2FycmF5cyA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZnYik7Cj4g Kwo+ICsgICAgZm9yIChpID0gMDsgaSA8IG51bV9hcnJheXM7IGkrKykgewo+ICsgICAgICAgIGlu dCBjbnQ7Cj4gKyAgICAgICAgaW50IHR5cGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZSgmZ2IpICYg MHgxZjsKPiArCj4gKyAgICAgICAgaWYgKHR5cGUgPT0gVlZDX09QSV9OVVQgfHwgdHlwZSA9PSBW VkNfRENJX05VVCkKPiArICAgICAgICAgICAgY250ID0gMTsKPiArICAgICAgICBlbHNlCj4gKyAg ICAgICAgICAgIGNudCA9IGJ5dGVzdHJlYW0yX2dldF9iZTE2KCZnYik7Cj4gKwo+ICsgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIm5hbHVfdHlwZSAlZCBjbnQgJWRcbiIsIHR5cGUs IGNudCk7Cj4gKwo+ICsgICAgICAgIGlmICghKHR5cGUgPT0gVlZDX09QSV9OVVQgfHwgdHlwZSA9 PSBWVkNfRENJX05VVCB8fAo+ICsgICAgICAgICAgICAgIHR5cGUgPT0gVlZDX1ZQU19OVVQgfHwg dHlwZSA9PSBWVkNfU1BTX05VVCB8fCB0eXBlID09IFZWQ19QUFNfTlVUCj4gKyAgICAgICAgICAg ICAgfHwgdHlwZSA9PSBWVkNfUFJFRklYX1NFSV9OVVQgfHwgdHlwZSA9PSBWVkNfU1VGRklYX1NF SV9OVVQpKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKPiArICAg ICAgICAgICAgICAgICAgICJJbnZhbGlkIE5BTCB1bml0IHR5cGUgaW4gZXh0cmFkYXRhOiAlZFxu IiwgdHlwZSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAg ICAgICAgICAgIGdvdG8gZmFpbDsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGZvciAoaiA9 IDA7IGogPCBjbnQ7IGorKykgewo+ICsgICAgICAgICAgICBpbnQgbmFsdV9sZW4gPSBieXRlc3Ry ZWFtMl9nZXRfYmUxNigmZ2IpOwo+ICsKPiArICAgICAgICAgICAgaWYgKDQgKyBBVl9JTlBVVF9C VUZGRVJfUEFERElOR19TSVpFICsgbmFsdV9sZW4gPgo+ICsgICAgICAgICAgICAgICAgU0laRV9N QVggLSBuZXdfZXh0cmFkYXRhX3NpemUpIHsKPiArICAgICAgICAgICAgICAgIHJldCA9IEFWRVJS T1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gKyAgICAgICAg ICAgIH0KPiArICAgICAgICAgICAgcmV0ID0gYXZfcmVhbGxvY3AoJm5ld19leHRyYWRhdGEsIG5l d19leHRyYWRhdGFfc2l6ZSArIG5hbHVfbGVuICsgNAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwo+ICsgICAgICAgICAgICBp ZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiArCj4gKyAgICAgICAg ICAgIEFWX1dCMzIobmV3X2V4dHJhZGF0YSArIG5ld19leHRyYWRhdGFfc2l6ZSwgMSk7IC8vIGFk ZCB0aGUgc3RhcnRjb2RlCj4gKyAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9idWZmZXIoJmdi LCBuZXdfZXh0cmFkYXRhICsgbmV3X2V4dHJhZGF0YV9zaXplICsgNCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYWx1X2xlbik7Cj4gKyAgICAgICAgICAgIG5ld19leHRy YWRhdGFfc2l6ZSArPSA0ICsgbmFsdV9sZW47Cj4gKyAgICAgICAgICAgIG1lbXNldChuZXdfZXh0 cmFkYXRhICsgbmV3X2V4dHJhZGF0YV9zaXplLCAwLAo+ICsgICAgICAgICAgICAgICAgICAgQVZf SU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiAr ICAgIGF2X2ZyZWVwKCZjdHgtPnBhcl9vdXQtPmV4dHJhZGF0YSk7Cj4gKyAgICBjdHgtPnBhcl9v dXQtPmV4dHJhZGF0YSA9IG5ld19leHRyYWRhdGE7Cj4gKyAgICBjdHgtPnBhcl9vdXQtPmV4dHJh ZGF0YV9zaXplID0gbmV3X2V4dHJhZGF0YV9zaXplOwo+ICsKPiArICAgIGlmICghbmV3X2V4dHJh ZGF0YV9zaXplKQo+ICsgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19XQVJOSU5HLCAiTm8gcGFy YW1ldGVyIHNldHMgaW4gdGhlIGV4dHJhZGF0YVxuIik7Cj4gKwo+ICsgICAgcmV0dXJuIGxlbmd0 aF9zaXplOwo+ICsgIGZhaWw6Cj4gKyAgICBhdl9mcmVlcCgmbmV3X2V4dHJhZGF0YSk7Cj4gKyAg ICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZ2Y19tcDR0b2FubmV4Yl9pbml0 KEFWQlNGQ29udGV4dCAqY3R4KQo+ICt7Cj4gKyAgICBWVkNCU0ZDb250ZXh0ICpzID0gY3R4LT5w cml2X2RhdGE7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIGlmIChjdHgtPnBhcl9pbi0+ZXh0 cmFkYXRhX3NpemUgPCBNSU5fVlZDQ19MRU5HVEggfHwKPiArICAgICAgICBBVl9SQjI0KGN0eC0+ cGFyX2luLT5leHRyYWRhdGEpID09IDEgfHwKPiArICAgICAgICBBVl9SQjMyKGN0eC0+cGFyX2lu LT5leHRyYWRhdGEpID09IDEpIHsKPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9T RSwKPiArICAgICAgICAgICAgICAgIlRoZSBpbnB1dCBsb29rcyBsaWtlIGl0IGlzIEFubmV4IEIg YWxyZWFkeVxuIik7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIHJldCA9IHZ2Y19leHRyYWRh dGFfdG9fYW5uZXhiKGN0eCk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gKyAgICAgICAgcy0+bGVuZ3RoX3NpemUgPSByZXQ7Cj4gKyAgICAgICAg cy0+ZXh0cmFkYXRhX3BhcnNlZCA9IDE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgdnZjX21wNHRvYW5uZXhiX2ZpbHRlcihBVkJTRkNvbnRleHQg KmN0eCwgQVZQYWNrZXQgKm91dCkKPiArewo+ICsgICAgVlZDQlNGQ29udGV4dCAqcyA9IGN0eC0+ cHJpdl9kYXRhOwo+ICsgICAgQVZQYWNrZXQgKmluOwo+ICsgICAgR2V0Qnl0ZUNvbnRleHQgZ2I7 Cj4gKwo+ICsgICAgaW50IGlzX2lyYXAgPSAwOwo+ICsgICAgaW50IGFkZGVkX2V4dHJhID0gMDsK PiArICAgIGludCBpLCByZXQgPSAwOwo+ICsKPiArICAgIHJldCA9IGZmX2JzZl9nZXRfcGFja2V0 KGN0eCwgJmluKTsKPiArICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4g Kwo+ICsgICAgaWYgKCFzLT5leHRyYWRhdGFfcGFyc2VkKSB7Cj4gKyAgICAgICAgYXZfcGFja2V0 X21vdmVfcmVmKG91dCwgaW4pOwo+ICsgICAgICAgIGF2X3BhY2tldF9mcmVlKCZpbik7Cj4gKyAg ICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgYnl0ZXN0cmVhbTJfaW5pdCgmZ2Is IGluLT5kYXRhLCBpbi0+c2l6ZSk7Cj4gKwo+ICsgICAgLyogY2hlY2sgaWYgdGhpcyBwYWNrZXQg Y29udGFpbnMgYW4gSVJBUC4gVGhlIGV4dHJhZGF0YSB3aWxsIG5lZWQgdG8gYmUgYWRkZWQgYmVm b3JlIGFueSBwb3RlbnRpYWwgUEhfTlVUICovCj4gKyAgICB3aGlsZSAoYnl0ZXN0cmVhbTJfZ2V0 X2J5dGVzX2xlZnQoJmdiKSkgewo+ICsgICAgICAgIHVpbnQzMl90IG5hbHVfc2l6ZSA9IDA7Cj4g KyAgICAgICAgaW50IG5hbHVfdHlwZTsKPiArCj4gKyAgICAgICAgaWYgKGJ5dGVzdHJlYW0yX2dl dF9ieXRlc19sZWZ0KCZnYikgPCBzLT5sZW5ndGhfc2l6ZSkgewo+ICsgICAgICAgICAgICByZXQg PSBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gKyAgICAg ICAgfQo+ICsKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bGVuZ3RoX3NpemU7IGkrKykK PiArICAgICAgICAgICAgbmFsdV9zaXplID0gKG5hbHVfc2l6ZSA8PCA4KSB8IGJ5dGVzdHJlYW0y X2dldF9ieXRlKCZnYik7Cj4gKwo+ICsgICAgICAgIGlmIChuYWx1X3NpemUgPCAyIHx8IG5hbHVf c2l6ZSA+IGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikpIHsKPiArICAgICAgICAgICAg cmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICAgICAgZ290byBmYWlsOwo+ICsg ICAgICAgIH0KPiArCj4gKyAgICAgICAgbmFsdV90eXBlID0gKGJ5dGVzdHJlYW0yX3BlZWtfYmUx NigmZ2IpID4+IDMpICYgMHgxZjsKPiArICAgICAgICBpc19pcmFwID0gbmFsdV90eXBlID49IFZW Q19JRFJfV19SQURMICYmIG5hbHVfdHlwZSA8PSBWVkNfUlNWX0lSQVBfMTE7Cj4gKyAgICAgICAg aWYgKGlzX2lyYXApIHsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsgICAg ICAgIGJ5dGVzdHJlYW0yX3NlZWsoJmdiLCBuYWx1X3NpemUsIFNFRUtfQ1VSKTsKPiArICAgIH0K PiArCj4gKyAgICBieXRlc3RyZWFtMl9zZWVrKCZnYiwgMCwgU0VFS19TRVQpOwo+ICsgICAgd2hp bGUgKGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikpIHsKPiArICAgICAgICB1aW50MzJf dCBuYWx1X3NpemUgPSAwOwo+ICsgICAgICAgIGludCBuYWx1X3R5cGU7Cj4gKyAgICAgICAgaW50 IGFkZF9leHRyYWRhdGEsIGV4dHJhX3NpemUsIHByZXZfc2l6ZTsKPiArCj4gKyAgICAgICAgaWYg KGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikgPCBzLT5sZW5ndGhfc2l6ZSkgewo+ICsg ICAgICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgICAgICBnb3Rv IGZhaWw7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bGVu Z3RoX3NpemU7IGkrKykKPiArICAgICAgICAgICAgbmFsdV9zaXplID0gKG5hbHVfc2l6ZSA8PCA4 KSB8IGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZnYik7Cj4gKwo+ICsgICAgICAgIGlmIChuYWx1X3Np emUgPCAyIHx8IG5hbHVfc2l6ZSA+IGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikpIHsK PiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICAgICAg Z290byBmYWlsOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgbmFsdV90eXBlID0gKGJ5dGVz dHJlYW0yX3BlZWtfYmUxNigmZ2IpID4+IDMpICYgMHgxZjsKPiArCj4gKyAgICAgICAgLyogcHJl cGVuZCBleHRyYWRhdGEgdG8gSVJBUCBmcmFtZXMgKi8KPiArICAgICAgICBhZGRfZXh0cmFkYXRh ID0gaXNfaXJhcCAmJiBuYWx1X3R5cGUgIT0gVlZDX0FVRF9OVVQgJiYgIWFkZGVkX2V4dHJhOwo+ ICsgICAgICAgIGV4dHJhX3NpemUgPSBhZGRfZXh0cmFkYXRhICogY3R4LT5wYXJfb3V0LT5leHRy YWRhdGFfc2l6ZTsKPiArICAgICAgICBhZGRlZF9leHRyYSB8PSBhZGRfZXh0cmFkYXRhOwo+ICsK PiArICAgICAgICBpZiAoRkZNSU4oSU5UX01BWCwgU0laRV9NQVgpIDwgNFVMTCArIG5hbHVfc2l6 ZSArIGV4dHJhX3NpemUpIHsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFU QTsKPiArICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAg cHJldl9zaXplID0gb3V0LT5zaXplOwo+ICsKPiArICAgICAgICByZXQgPSBhdl9ncm93X3BhY2tl dChvdXQsIDQgKyBuYWx1X3NpemUgKyBleHRyYV9zaXplKTsKPiArICAgICAgICBpZiAocmV0IDwg MCkKPiArICAgICAgICAgICAgZ290byBmYWlsOwo+ICsKPiArICAgICAgICBpZiAoZXh0cmFfc2l6 ZSkKPiArICAgICAgICAgICAgbWVtY3B5KG91dC0+ZGF0YSArIHByZXZfc2l6ZSwgY3R4LT5wYXJf b3V0LT5leHRyYWRhdGEsIGV4dHJhX3NpemUpOwo+ICsgICAgICAgIEFWX1dCMzIob3V0LT5kYXRh ICsgcHJldl9zaXplICsgZXh0cmFfc2l6ZSwgMSk7Cj4gKyAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0 X2J1ZmZlcigmZ2IsIG91dC0+ZGF0YSArIHByZXZfc2l6ZSArIDQgKyBleHRyYV9zaXplLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFsdV9zaXplKTsKPiArICAgIH0KPiArCj4g KyAgICByZXQgPSBhdl9wYWNrZXRfY29weV9wcm9wcyhvdXQsIGluKTsKPiArICAgIGlmIChyZXQg PCAwKQo+ICsgICAgICAgIGdvdG8gZmFpbDsKPiArCj4gKyAgZmFpbDoKPiArICAgIGlmIChyZXQg PCAwKQo+ICsgICAgICAgIGF2X3BhY2tldF91bnJlZihvdXQpOwo+ICsgICAgYXZfcGFja2V0X2Zy ZWUoJmluKTsKPiArCj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg ZW51bSBBVkNvZGVjSUQgY29kZWNfaWRzW10gPSB7Cj4gKyAgICBBVl9DT0RFQ19JRF9WVkMsIEFW X0NPREVDX0lEX05PTkUsCj4gK307Cj4gKwo+ICtjb25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl92 dmNfbXA0dG9hbm5leGJfYnNmID0gewo+ICsgICAgLnAubmFtZSAgICAgICAgID0gInZ2Y19tcDR0 b2FubmV4YiIsCj4gKyAgICAucC5jb2RlY19pZHMgICAgPSBjb2RlY19pZHMsCj4gKyAgICAucHJp dl9kYXRhX3NpemUgPSBzaXplb2YoVlZDQlNGQ29udGV4dCksCj4gKyAgICAuaW5pdCAgICAgICAg ICAgPSB2dmNfbXA0dG9hbm5leGJfaW5pdCwKPiArICAgIC5maWx0ZXIgICAgICAgICA9IHZ2Y19t cDR0b2FubmV4Yl9maWx0ZXIsCj4gK307Cj4gLS0gCj4gMi4yNS4xCj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFp bG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiAKPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGlu ayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGgg c3ViamVjdCAidW5zdWJzY3JpYmUiLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK ClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=