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 9107E423D3 for ; Thu, 14 Apr 2022 16:52:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0FD4768B477; Thu, 14 Apr 2022 19:52:07 +0300 (EEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-oln040092064066.outbound.protection.outlook.com [40.92.64.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8FA8B68B10F for ; Thu, 14 Apr 2022 19:52:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E8NsSuc37SRyShSncTpDrWUbommufcIGIfaNB/7L1j5lt+wCKVYbZuBWLHsclBTfaxdaVNfTAxCrPL/V+1HvgCJfEDs48kf2FMmhaZm45iX537HGmAdHJpXFxCoWMQta2QQIYUXcdyzkneTMy5zwAemC2axi4CSEgww2KwWPYcOLA8EUOobZtT0dMajmTA/txp/iYbDEzgZngZacX3tmKmSxxspAcyIW7lYlq3pE0UxhJs3xv/CdCv9c7QzLr2PlADG7MSRcgbkeeT4RVb58jigMiMABcEyEIK4y7q6j/D39osCpwnMukY1CBXbsCCxnyfXXqRTf26ejuXDhbXuMxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PVQrw7KsY4hN6ZoNvnXFi6/SrAa31KO6Z0MnKK9p944=; b=X/bs+kpYG4WbK26ax7Cd/N5WsDhZj5no+O4QKLm/d0thRx533ZJ7vjeQjO8qOyzBMRo5Vdq8n0o1CIgqk3i0GZupJALXGL/MLZiQeD2lnectISuWMAON5UJKYSwcxIjjEG8XcISfrT3MFF5owuj8ShxIogKoPw2ZifciuYFLIrOO84w6Hc/yvAfiPzE9TYGH/TUfiGbmoLZ1YwHO+FCllcEGNDAJ8tNS3kbXFjcZQC8nWW9OuKYUg984P8g1h6f96L7UMd6scTlIQ2zXfXcUBUVR4QpEG7CqYU+TnqrdsLTlA4Rsj1wfLM5mbi9E+ZolSY/rNMRvZTtdmRKGxEgkBg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PVQrw7KsY4hN6ZoNvnXFi6/SrAa31KO6Z0MnKK9p944=; b=DmrmGUryDuPe0mK0vNDm+vXGvRBMUIjBVAlylamDFmwvjbRd8YGUhnkQqgyDXLNJJ4r2/zQBfNLMX6QvrgpFAZ9iPOvPwxlByJhg7iyo7lOB63svht7xkrZJznxrCh5dRcZFH9XaeP9PUCFV13qlt+cU6Dwzgvkr5XcO9xbvkBvVtSk6DibGLINmIv9iSjHRqaMEKGxkKbp+aQC6wl5SB1wndkSFG0RmKzbA1TL7dHI7Fa48vkbxdgEuAxHQA4vdCpZDplGxK1WSnsJOBNJhJ2mZ6m7wOMIC+e1zF9z0JqmsppDcv2g9CYkY3BIa0REnz55EiJUoqsMrj3AMGXAJ7Q== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by AM9PR01MB8151.eurprd01.prod.exchangelabs.com (2603:10a6:20b:3df::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.18; Thu, 14 Apr 2022 16:51:59 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::fcc3:1285:374c:9b2]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::fcc3:1285:374c:9b2%5]) with mapi id 15.20.5164.020; Thu, 14 Apr 2022 16:51:59 +0000 Message-ID: Date: Thu, 14 Apr 2022 18:51:57 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <9e9f836e-3426-216d-c2e9-4b006293128e@gmail.com> From: Andreas Rheinhardt In-Reply-To: <9e9f836e-3426-216d-c2e9-4b006293128e@gmail.com> X-TMN: [a/nRGAUNZr1FICfAQRPxtMQnSPcZ9UzZ] X-ClientProxiedBy: AM5PR1001CA0016.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:2::29) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: <85b609fa-1d46-630e-adcb-4c720d93e1d7@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c056d69d-8b30-49bd-4f67-08da1e371753 X-MS-TrafficTypeDiagnostic: AM9PR01MB8151:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7gnlhtXp/V18qvKhFn4CKQ/DrvgLkfH/wgm+btkWtXPxxTo9pqYKTJF+posgO569uv22y9CLoGoXVFvyiKkjqQFzjXl1Nk6HJV461MV+sgnN/oNwGtlsAJGWSRCzvGjoeLeXUjMMcYJqG6cQoBrYgEuW7d0SrG09nGVoXUj5DdECiJbXnWqWqPdnxhtLwWxU7LaFkxAysqcTC3TtBOUPefzjfrYR4/cnDKpYslz04E2NH4MU4wD664Tf/lV3BrnrUe7KMUSVu3s0c6eOpEqTA1YlnEjZuZCtsa9yl2YXe/BsrVxeSG3hMGUJ4czOtYNcy56msczdOQn77l77vXhnL4INx/i+1wBuEEXCN79USu4kTVHoOdFaKqr68xlkAd4mrMgp+7R8s/wHF2DZMdpbXck4rYBq/CQaTD179UIRSRCN83LVDWS5ZWtrhI18F5siqqCdq+NTTgP9Rir7avQFLf+83CeLWcBH46H//fqTzLo/Y7tnhXb7M8RzieeR6aRXW8z4jgP3LUt9Uujmm6r+HDrkLjKl7Zv1qLRg2WXUZRd4L0kXIonJ5Vhqfdwdyfu2L5Ttm7qPnuBCtbtH4J2JtY132sK1bGBi4ii/EhQuT4ZbjLhQ/8zRgTwj0NfFvP0c X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bnlFOTdUVDZYMWJIWXRCUkdhMHhhaG1iTUpqbkdLbllQbzZaSDhpVEZhZEJj?= =?utf-8?B?NHg3V1RQczF0UlQrOXJyNW5XWVFKaEUxRThIYTh4K0VieFplK2NZNUhESno4?= =?utf-8?B?WVdUejRjTUJZOTdkd1BiclhRbmtLQ09yNURMSWtUK3hjWGR6VHgxL1dTOXIv?= =?utf-8?B?akloSFZUdHR1UnlleUkyUHN1Q3FQNWpzOVZIbXpoZEdUUWJsUWF1OG5YVzNH?= =?utf-8?B?WHN3OWpWcXdsNy9pTlhNRGd4M0pDU0ZqeWxmcmxqVC9PNzFla3ljaFkyOTUz?= =?utf-8?B?eE15VWtVMmkySWpnckpHMEY1NWtEQjZJOXBLVDRBSjlIcy8zS1hvTlA4QmYw?= =?utf-8?B?UFAxT0p4RklzTEtrOXdiV2E5bGM3QVlDNUJNQlVVcGMvdXU3TDlSazlmS0Y2?= =?utf-8?B?eWNlRng4ZFI4WDZwUWJ0d2E3Zk00cFZCMURPdkNqQzNTdnhPQmlVNFlSc2hR?= =?utf-8?B?L1NXRnZsRTNWcjYzM3JJcDVOTS9xNWZ3MTBJNUdoL3RrbkhkS0dxSDZLbTln?= =?utf-8?B?QXdYTnk1aUFHMk9zTG44b1gyM0d2ZlFBSmsvNDRldTZseHFxZjZaVVFVZ2lm?= =?utf-8?B?N2RlK3RVakIzME1McVQ4a3R0SXdaZXppdDNtRGNIdkJEUEtraTZyTTdWd1Fy?= =?utf-8?B?V3d0aW1EcTk4dWVIZTlsREwyTk0vT29iZHIyRWJLL1paQ24vangyd00vaWxs?= =?utf-8?B?enFXSFF0UThEYmtxWVJHc1lSV3VmMitnZUFOM2VuakJKK2NOMTE3MnM1M3Fm?= =?utf-8?B?dGloK1ByMXZBVnhsU0dqeGdidEFQRXV6MWFNeXZXZkRnYmZobWZrU0xlRlRv?= =?utf-8?B?M1lxcGxjQmhhTmdibVB4Mk9sanBJblpLU1Y1OTZYVmROMWdPNFBON2NDWUxO?= =?utf-8?B?YTUxYTJmWXJkMDBZNFlPR2F3NUFKeXNlcVB6US9RTUxzZC9vQ21MckhiZFU5?= =?utf-8?B?Y25pQlh0Z2NXaHpadGJ0b0cyTUpNaFFGV2hnL0ZUMXFsQ283RXpORi92ZVZy?= =?utf-8?B?UWNOYlMwcjhZY0ZFTUdadUhkZ2ZTb3JybkNzWFJlZ3NMZVZpRVNoMlY4U21o?= =?utf-8?B?cmk3YXdGZHptUVphb2JqNXJ4cE52OUprKzI2K29uM2ZWMDBaSEhSTGw2V1ND?= =?utf-8?B?SUthV0lYMENUYkpuY2FIZThXOXluOUVLYlBRTFlqNzlYc0dZUkdlK1hPcy9W?= =?utf-8?B?akNjNUVKb2N1TXVWV1YrNmgzQ3V0N084NnlGSTVBU0NMV2VBSDFYZFk2S0FR?= =?utf-8?B?dndpOVdndXBxWXJsbFRlaHhiK2JhcTM2NnRjZ3NyNjRhSmZnSjJaVG52M2JL?= =?utf-8?B?UGJNMVloZzc0SGMvaE93ZVQrY1ZSLzR0dXRDVUp6QUs4ZWRLQSs1b1FpbXBR?= =?utf-8?B?N04xVXF3Zm9WN0s4SkN3WjlnMDV3RW9ieXBEWnRlcVJ2bjQ2MkYvWmVTSHF2?= =?utf-8?B?QjROamxQZjdtK0JFSTZ3YjJFa1pVck1wRWJ1dzJMVVdSMDAzb1ZBMEwvQkxN?= =?utf-8?B?Qy9lQUlURG50dlVuZTBkc014WCtrT0I4QkZ4OEZXMjdwd1hGS3VMM1J5bFZq?= =?utf-8?B?YThIWVkvRUNmQW1BdHV0dkdsaFovYkhOSHZMOUFxbnFiRTV4NlpXbGJwUmRP?= =?utf-8?B?MHpNbStWdjlldE1BM3RmUHBjQ1JEYmg1SFp3VjdvaGkwRmU3OFRrUlUyQ3JG?= =?utf-8?B?T0l1d1FHTmg5NlgwQXpYazhSakJ4WkVndTZxUHN1KzY4Y2NLRDErR3pobVBa?= =?utf-8?B?ZmduVGpSY0J2UEgwcDY1clBEck9KWTdjR2NwMFZXQnZzbTZyK0JscGZBWEw0?= =?utf-8?B?V2dPK3ZTdGlkMVZhK0wycDlnZlBKRGg5SEY3YnZudzZvOGZpOVZEUmwzZlp1?= =?utf-8?B?R0tVa21NaFlpSXpsMFljVFY2bVVXNU42bGFOZWVyK0Y5eUpGRGs0SlI3aWlP?= =?utf-8?Q?gs5mHc62tMUZ+jtkx5qdXswsP0y7nEt4?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c056d69d-8b30-49bd-4f67-08da1e371753 X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2022 16:51:59.1591 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR01MB8151 Subject: Re: [FFmpeg-devel] [PATCH 2/5] avcodec/mjpegdec: Don't create unnecessary AVFrame reference 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: SmFtZXMgQWxtZXI6Cj4gCj4gCj4gT24gNC8xNC8yMDIyIDE6NDMgUE0sIEFuZHJlYXMgUmhlaW5o YXJkdCB3cm90ZToKPj4gSmFtZXMgQWxtZXI6Cj4+PiBPbiA0LzE0LzIwMjIgMTI6NTcgUE0sIEFu ZHJlYXMgUmhlaW5oYXJkdCB3cm90ZToKPj4+PiBNSlBFRyBpcyBhbiBpbnRyYS1jb2RlYywgc28g aXQgbWFrZXMgbm8gc2Vuc2UgdG8ga2VlcCB0aGUgcmVmZXJlbmNlLgo+Pj4+IEl0IGlzIGJhc2lj YWxseSB1bnVzZWQgbGF0ZXJvbiBhbnl3YXkuCj4+Pgo+Pj4gV291bGRuJ3QgdGhpcyBtZWFuIHlv dSBjYW4gcmVtb3ZlIHRoZSBBVl9HRVRfQlVGRkVSX0ZMQUdfUkVGIGZsYWcgZnJvbQo+Pj4gdGhl IGZmX2dldF9idWZmZXIoKSBjYWxsPwo+Pj4KPj4KPj4gTm90IGluIGNhc2Ugb2YgU01WLiBUaGUg c212IGNvZGUga2VlcHMgYSByZWZlcmVuY2UgYW5kIHJldXNlcyBpdC4gU2VlCj4+IHNtdl9wcm9j ZXNzX2ZyYW1lLgo+IAo+IE1ha2UgaXQgQVZfR0VUX0JVRkZFUl9GTEFHX1JFRiAqIChzLT5hdmN0 eC0+Y29kZWNfaWQgPT0KPiBBVl9DT0RFQ19JRF9TTVZKUEVHKSB0aGVuLgo+IAoKTm90IHdvcnRo IHRoZSBicmFuY2guCgo+Pgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhh cmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Cj4+Pj4gLS0tCj4+Pj4gwqDCoCBs aWJhdmNvZGVjL21qcGVnZGVjLmMgfCA0NQo+Pj4+ICsrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPj4+PiDCoMKgIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21q cGVnZGVjLmMgYi9saWJhdmNvZGVjL21qcGVnZGVjLmMKPj4+PiBpbmRleCAwZTc2YmY0YzI2Li45 MzlkZWRjZTMzIDEwMDY0NAo+Pj4+IC0tLSBhL2xpYmF2Y29kZWMvbWpwZWdkZWMuYwo+Pj4+ICsr KyBiL2xpYmF2Y29kZWMvbWpwZWdkZWMuYwo+Pj4+IEBAIC0yNTg5LDggKzI1ODksNyBAQCBlb2lf cGFyc2VyOgo+Pj4+IMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9m cmVlcCgmcy0+aHdhY2NlbF9waWN0dXJlX3ByaXZhdGUpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgocmV0ID0gYXZf ZnJhbWVfcmVmKGZyYW1lLCBzLT5waWN0dXJlX3B0cikpIDwgMCkKPj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXZfZnJhbWVfbW92ZV9yZWYoZnJhbWUsIHMtPnBpY3R1cmVfcHRyKTsKPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPmdvdF9waWN0dXJlID0gMDsKPj4+PiDCoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyYW1lLT5wa3RfZHRzID0gcy0+cGt0LT5kdHM7Cj4+Pj4g QEAgLTI2NzUsOSArMjY3NCw5IEBAIHRoZV9lbmQ6Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKHJldCkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ Pj4gwqDCoCAtwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5uYl9jb21wb25lbnRzID09Cj4+ Pj4gYXZfcGl4X2ZtdF9jb3VudF9wbGFuZXMocy0+cGljdHVyZV9wdHItPmZvcm1hdCkpOwo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBhdl9hc3NlcnQwKHMtPm5iX2NvbXBvbmVudHMgPT0KPj4+PiBhdl9w aXhfZm10X2NvdW50X3BsYW5lcyhmcmFtZS0+Zm9ybWF0KSk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqAgZm9yIChwID0gMDsgcDxzLT5uYl9jb21wb25lbnRzOyBwKyspIHsKPj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpsaW5lID0gcy0+cGljdHVyZV9wdHItPmRhdGFbcF07 Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDhfdCAqbGluZSA9IGZyYW1lLT5kYXRh W3BdOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHcgPSBzLT53aWR0aDsK Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBoID0gcy0+aGVpZ2h0Owo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFzLT51cHNjYWxlX2hbcF0pCj4+Pj4g QEAgLTI3MzcsNyArMjczNiw3IEBAIHRoZV9lbmQ6Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKHJldCkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ Pj4gwqDCoCAtwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5uYl9jb21wb25lbnRzID09Cj4+ Pj4gYXZfcGl4X2ZtdF9jb3VudF9wbGFuZXMocy0+cGljdHVyZV9wdHItPmZvcm1hdCkpOwo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBhdl9hc3NlcnQwKHMtPm5iX2NvbXBvbmVudHMgPT0KPj4+PiBhdl9w aXhfZm10X2NvdW50X3BsYW5lcyhmcmFtZS0+Zm9ybWF0KSk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqAgZm9yIChwID0gMDsgcCA8IHMtPm5iX2NvbXBvbmVudHM7IHArKykgewo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDhfdCAqZHN0Owo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IHcgPSBzLT53aWR0aDsKPj4+PiBAQCAtMjc0OCwxMCArMjc0Nywx MCBAQCB0aGVfZW5kOgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3 ID0gQVZfQ0VJTF9SU0hJRlQodywgaHNoaWZ0KTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaCA9IEFWX0NFSUxfUlNISUZUKGgsIHZzaGlmdCk7Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHN0 ID0gJigodWludDhfdCAqKXMtPnBpY3R1cmVfcHRyLT5kYXRhW3BdKVsoaCAtIDEpICoKPj4+PiBz LT5saW5lc2l6ZVtwXV07Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHN0ID0gJmZyYW1l LT5kYXRhW3BdWyhoIC0gMSkgKiBzLT5saW5lc2l6ZVtwXV07Cj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmb3IgKGkgPSBoIC0gMTsgaTsgaS0tKSB7Cj4+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpzcmMxID0gJigodWludDhfdAo+Pj4+ICopcy0+ cGljdHVyZV9wdHItPmRhdGFbcF0pW2kgKiBzLT51cHNjYWxlX3ZbcF0gLyAocy0+dXBzY2FsZV92 W3BdICsgMSkKPj4+PiAqIHMtPmxpbmVzaXplW3BdXTsKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVpbnQ4X3QgKnNyYzIgPSAmKCh1aW50OF90Cj4+Pj4gKilzLT5waWN0dXJl X3B0ci0+ZGF0YVtwXSlbKGkgKyAxKSAqIHMtPnVwc2NhbGVfdltwXSAvCj4+Pj4gKHMtPnVwc2Nh bGVfdltwXSArIDEpICogcy0+bGluZXNpemVbcF1dOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdWludDhfdCAqc3JjMSA9ICZmcmFtZS0+ZGF0YVtwXVsgacKgwqDCoMKgwqAg Kgo+Pj4+IHMtPnVwc2NhbGVfdltwXSAvIChzLT51cHNjYWxlX3ZbcF0gKyAxKSAqIHMtPmxpbmVz aXplW3BdXTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ4X3QgKnNy YzIgPSAmZnJhbWUtPmRhdGFbcF1bKGkgKyAxKSAqCj4+Pj4gcy0+dXBzY2FsZV92W3BdIC8gKHMt PnVwc2NhbGVfdltwXSArIDEpICogcy0+bGluZXNpemVbcF1dOwo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocy0+dXBzY2FsZV92W3BdICE9IDIgJiYgKHNyYzEg PT0gc3JjMiB8fCBpID09IGgKPj4+PiAtIDEpKSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5KGRzdCwgc3JjMSwgdyk7Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+Pj4gQEAgLTI3NjgsMzYg KzI3NjcsMzYgQEAgdGhlX2VuZDoKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQo+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+PiDCoMKgIC3C oMKgwqDCoMKgwqDCoCBhdl9hc3NlcnQwKHMtPm5iX2NvbXBvbmVudHMgPT0KPj4+PiBhdl9waXhf Zm10X2NvdW50X3BsYW5lcyhzLT5waWN0dXJlX3B0ci0+Zm9ybWF0KSk7Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGF2X2Fzc2VydDAocy0+bmJfY29tcG9uZW50cyA9PQo+Pj4+IGF2X3BpeF9mbXRfY291 bnRfcGxhbmVzKGZyYW1lLT5mb3JtYXQpKTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3Ig KGluZGV4PTA7IGluZGV4PHMtPm5iX2NvbXBvbmVudHM7IGluZGV4KyspIHsKPj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpkc3QgPSBzLT5waWN0dXJlX3B0ci0+ZGF0YVtpbmRl eF07Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHcgPSBzLT5waWN0dXJlX3B0ci0+ d2lkdGg7Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGggPSBzLT5waWN0dXJlX3B0 ci0+aGVpZ2h0Owo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ4X3QgKmRzdCA9IGZy YW1lLT5kYXRhW2luZGV4XTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdyA9IGZy YW1lLT53aWR0aDsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgaCA9IGZyYW1lLT5o ZWlnaHQ7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZihpbmRleCAmJiBpbmRl eDwzKXsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdyA9IEFWX0NF SUxfUlNISUZUKHcsIGhzaGlmdCk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGggPSBBVl9DRUlMX1JTSElGVChoLCB2c2hpZnQpOwo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYoZHN0 KXsKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ4X3QgKmRzdDIgPSBk c3QgKwo+Pj4+IHMtPnBpY3R1cmVfcHRyLT5saW5lc2l6ZVtpbmRleF0qKGgtMSk7Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpkc3QyID0gZHN0ICsgZnJhbWUt PmxpbmVzaXplW2luZGV4XSooaC0xKTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpPTA7IGk8aC8yOyBpKyspIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGo9MDsgajx3OyBqKyspCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGRlNXQVAoaW50 LCBkc3Rbal0sIGRzdDJbal0pOwo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkc3TCoCArPSBzLT5waWN0dXJlX3B0ci0+bGluZXNpemVbaW5kZXhdOwo+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkc3QyIC09IHMtPnBpY3R1cmVf cHRyLT5saW5lc2l6ZVtpbmRleF07Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRzdMKgICs9IGZyYW1lLT5saW5lc2l6ZVtpbmRleF07Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdDIgLT0gZnJhbWUtPmxpbmVzaXplW2lu ZGV4XTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0K Pj4+PiDCoMKgwqDCoMKgwqAgfQo+Pj4+IMKgwqDCoMKgwqDCoCBpZiAocy0+YWRvYmVfdHJhbnNm b3JtID09IDAgJiYgcy0+YXZjdHgtPnBpeF9mbXQgPT0KPj4+PiBBVl9QSVhfRk1UX0dCUkFQKSB7 Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGludCB3ID0gcy0+cGljdHVyZV9wdHItPndpZHRoOwo+Pj4+ IC3CoMKgwqDCoMKgwqDCoCBpbnQgaCA9IHMtPnBpY3R1cmVfcHRyLT5oZWlnaHQ7Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGludCB3ID0gZnJhbWUtPndpZHRoOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBp bnQgaCA9IGZyYW1lLT5oZWlnaHQ7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0 MChzLT5uYl9jb21wb25lbnRzID09IDQpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAo aT0wOyBpPGg7IGkrKykgewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGo7 Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpkc3RbNF07Cj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGluZGV4PTA7IGluZGV4PDQ7IGluZGV4 KyspIHsKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdFtpbmRleF0gPcKg wqAgcy0+cGljdHVyZV9wdHItPmRhdGFbaW5kZXhdCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICsgcy0+cGljdHVyZV9wdHItPmxp bmVzaXplW2luZGV4XSppOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHN0 W2luZGV4XSA9wqDCoCBmcmFtZS0+ZGF0YVtpbmRleF0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKyBmcmFtZS0+bGluZXNpemVb aW5kZXhdKmk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGo9MDsgajx3OyBqKyspIHsKPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGsgPSBkc3RbM11bal07Cj4+Pj4gQEAg LTI4MTIsMTUgKzI4MTEsMTUgQEAgdGhlX2VuZDoKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4+Pj4gwqDCoMKgwqDCoMKgIH0KPj4+PiDCoMKgwqDCoMKgwqAgaWYgKHMtPmFkb2JlX3RyYW5z Zm9ybSA9PSAyICYmIHMtPmF2Y3R4LT5waXhfZm10ID09Cj4+Pj4gQVZfUElYX0ZNVF9ZVVZBNDQ0 UCkgewo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBpbnQgdyA9IHMtPnBpY3R1cmVfcHRyLT53aWR0aDsK Pj4+PiAtwqDCoMKgwqDCoMKgwqAgaW50IGggPSBzLT5waWN0dXJlX3B0ci0+aGVpZ2h0Owo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpbnQgdyA9IGZyYW1lLT53aWR0aDsKPj4+PiArwqDCoMKgwqDCoMKg wqAgaW50IGggPSBmcmFtZS0+aGVpZ2h0Owo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2X2Fz c2VydDAocy0+bmJfY29tcG9uZW50cyA9PSA0KTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm b3IgKGk9MDsgaTxoOyBpKyspIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlu dCBqOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDhfdCAqZHN0WzRdOwo+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpbmRleD0wOyBpbmRleDw0OyBp bmRleCsrKSB7Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkc3RbaW5kZXhd ID3CoMKgIHMtPnBpY3R1cmVfcHRyLT5kYXRhW2luZGV4XQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArIHMtPnBpY3R1cmVfcHRy LT5saW5lc2l6ZVtpbmRleF0qaTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRzdFtpbmRleF0gPcKgwqAgZnJhbWUtPmRhdGFbaW5kZXhdCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICsgZnJhbWUtPmxpbmVz aXplW2luZGV4XSppOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChqPTA7IGo8dzsgaisrKSB7Cj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBrID0gZHN0WzNdW2pdOwo+PiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBmZm1wZWct ZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+IGh0dHBzOi8v ZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Pgo+PiBUbyB1bnN1YnNj cmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPj4gZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+IAo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi b3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8g dW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==