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 0E0054276A for ; Wed, 30 Mar 2022 12:21:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E6DF068B21E; Wed, 30 Mar 2022 15:20:09 +0300 (EEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-oln040092069073.outbound.protection.outlook.com [40.92.69.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9735D68B290 for ; Wed, 30 Mar 2022 15:20:08 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a0XX14cvkOyOloryFMAr2WGNoYl6vpCeKQ//cIUBdKekc4Oyr06GXFAOltmzCaR7dixtxzZbxEMrQeO2uw1vim837cv2kkFArfPthwYo/hUfXv0HKv5UScdpguR86zswm6iX9Oc8i5Ume+dgAZUu89SuTcBW3P5s1ArFcCIzJlHc7LSIsyXXTBAri0jGLf7d/a5veDC9wWSz2pdHqJd5svmrAJ5FgEN9JdAY03z/OECzknPcd0qdrsaSZWDexW6LxvWdmU8hGStyN4lf5Yvj4fIvT+JVBC1DMSvISP+tyv8RyIwlFlAGsMSyxDFvydVepSTxuyAs3YMH7E4U73oFxw== 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=nToWIgY/k/kFVUbg5w3wWDkjuYVO+ml9ZEPE7VUc/vs=; b=GYTAeBddC6byLLezn/tT9fjeITVc9XwQHnP94mntLL5O/t14W61QQJszMRtXtDI6j6uaqMaI79AAzZOWlIxJ4V1YSJVgbBevC4LW6bUGNRt6B2nt6HLDaxeGs9522sFOBL6RFH6h3HyRnZESVmtYY4yw1prEYZsacn3zBmED7mySNAndoi3PsS0WV72QxmNqsqCcN656FlShgqw5a9FjRhIi8WKsVvE0jUiGNhSoUbHKH2Ek1TQA62zN5X4qg581TP8FIDnU1CWVBWrzzSL8t+V44tZGn+CstcwuIKNA/AbJck55NL0OrgbQuZiGVG4skyARgqFmTh92mlkiwZPIgg== 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=nToWIgY/k/kFVUbg5w3wWDkjuYVO+ml9ZEPE7VUc/vs=; b=kxMldKsx5hDkJX+XBt7EEd/Igt7lsI19KVhbyZccl7/37/wjjdyE1DkaWOvSGILME6kIKLeKqk8NSDq/0LHhugLWZksJgfknpVIvp+lczg21WZnOdgy2idWVeebRtEzjrobFEUzwDNxVaHeMGPgruWUiLGusG9mBY9Z8VTaGRFcSHlYZEgTJDKjyXsIPzxN5vGOjfMfYfUezxKHyUKAqVRFt0uVlBMOFR7NdWkde+hzZQxxctDckwTwMbaBEkCaeDRQxeOJzP8aYV/mDteL1gQEWZCadytNhKXSYgn8TDS/yyOngX0G2KuDB9b3tBmeajUVRlVEZK+IJPxdrjO9ZoA== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by VI1PR01MB4702.eurprd01.prod.exchangelabs.com (2603:10a6:803:ac::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.21; Wed, 30 Mar 2022 12:20:06 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%3]) with mapi id 15.20.5102.022; Wed, 30 Mar 2022 12:20:06 +0000 Message-ID: Date: Wed, 30 Mar 2022 14:20:05 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220330114039.69510-1-markg85@gmail.com> <20220330114039.69510-2-markg85@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220330114039.69510-2-markg85@gmail.com> X-TMN: [R2+EE9y3g7jWGpiFz2F+9AiqWyiC46vs] X-ClientProxiedBy: AM5PR0201CA0005.eurprd02.prod.outlook.com (2603:10a6:203:3d::15) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <70956e05-41fc-537a-bd3d-e1a91117ea8a@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b48567ec-6f38-42aa-f6fe-08da12479fdd X-MS-TrafficTypeDiagnostic: VI1PR01MB4702:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /Tw5EO2CHevaOMo4SoUEgp4j9zgc8ZWiI0TE7GDkm3LsKXXUt1N2y/4x9lRDYsyDxyMzDh6y646prPA0ZfVagCx6Ejln5VzBg8dDLtbgHTUsESsWGhiFknQPbDh1stFIkTmqm7oP8hPtu/ACaDvXAl0YdqHBoj0p0Hee+9kuIFMVANbm3/Xx9TT+d8VJBDuuaX/SFYXAIqDE1Zf36vADx+6NTX4yCQafy0AQ3C76gJNF74EW8bYmK/maQ584vj1gUqYH6Z2RmYTwBEmUYv2PIvv/k06H/8y2ewO5E9eM1f1EHQoXH/8i3uzlBB2fswi3LMoo57UiZQgC32T801mLs8zxw9tuwIDC1i0hMGjDy5UWSAgWVxQraHCI8vC+/hV+Jgb9WWJuG9cHOL4mwl4Ze7Bb1cxqN60OkhzbtOcevWpJ6Yz2N15fMIbb9Msxlyxf9WHA/lYXCb60ifvcsMERtukdwjudR9VG8qdGc/QreZ30KaqSA1qghghxASRbvnVq4ZuYEozGCnbHIrwc31lhcmlYBnqfQ9j3R/vmLPVRlJ4OSz7Q4RtJWzpj5z+nuPZntcPtPzlEbZ54vcinBbDXENI22Xb1Y+ODCx63TG3n31qT8nUk5sKmGg8JWCV1nAbv X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dnNVMVl3cTg5WVpIeENwQTVSQzF3YndLVFByanVXakl1bkpQWGQ2QVMwKzNr?= =?utf-8?B?N1J6N0RXZDZSYUt1NFdoTlo4dngrb0FJZy9hR29lYUpBU2dpbHdTZTVVM29T?= =?utf-8?B?eHVIZVdJekE3Y1ArQjY5TE1RckFUYlNlVG9wRm1TTUxheTFadTc1WitsbW1N?= =?utf-8?B?MjVhZmlTNm9iMGFXb3VsZUVYSkhzTVB4ZkNGRTNGZzVZeXFHanZrdEdKbTJL?= =?utf-8?B?UElBTGF3NlNmUUJONnRndHpEcjdhdjhaQTFERDc0UzkyNTNhKytGQ0lhMm5Y?= =?utf-8?B?Q3oyMFh5OEc2WVJodUZmdU5SeU00eW5veFVsa0l3WGZEZ3pzcnp0WmlDdGdi?= =?utf-8?B?TVpsN3FIcEpVcndmZ1R3Ulh0cUhNb3Z5TVg1RVFoc250WCs1NzFGZlc5NExR?= =?utf-8?B?RjJlT1AwSWZETTJIaEdSN3U1TDJIWmdJMDQzOEI3bW4vUXd4VTZ1VitRWFlQ?= =?utf-8?B?UEY1NUg1dTJWSWtnVWpDRW1oYlVDV1M5RUtrWTJ5eFJKTjlURkdSM01LelF1?= =?utf-8?B?clMzZ1RtSVR6MEkwZ2V3R1ZBcCtnZWNGSll6b0F0T0FZUDRBQ1lkNVhLQXlj?= =?utf-8?B?YVFTQy9VbFFiQ0pkK2I2QzV3SWxvdjBGdC9zbFd1VXh0Qy9ZZEl2cXFLa2Ix?= =?utf-8?B?M29FU2l0WTBZM3NKUFdEOUxJT0FaTHp2anBqQWZLYUdmNDdjM0UvN0FwVE5K?= =?utf-8?B?RnlXRS9zSE9MeWY4THBYb2NIaWtGajB2R2NaSy9GZ0pXdFlnNHkzNFpxN3A0?= =?utf-8?B?eTFJWVp3cjUwU0pmeXlYWGIyMFlIOGpxREU4SWtYK3lkdk16YnlPSlNDbVlU?= =?utf-8?B?bHlWYnBiU1RWMythQndBVE5zUEdVRHgrSmx4MjVHZW5hRVNDLzFKN2pKZC9m?= =?utf-8?B?WHkrVHRqTnl2V09rc2d5YkJzTU9aemlHTmg0b0Y2TmRzTzF4SFFtb2tPb3lz?= =?utf-8?B?ZzE3d3hHL01ETHdxYlNjVWNqT1pqZHp0VXlFQVltZ08wR0RyMjJMcGpKZW0z?= =?utf-8?B?VmtIbHp2MTZRRXN1Qnovb0RGWFRoK2ZzOEs2WEtaaVhlYkhnNW1aNGNBeFVD?= =?utf-8?B?ejBsalErOGpwcFNoV21XZE5mU0lITjJ6cmc5WmlZbytqWW9nZnFMeCtrVWhw?= =?utf-8?B?SFNnelFJbUEyckxjU0kwVWJxWnVNbk5ZeXh6QjJsb2oydFZPeHJoQnhJT0pO?= =?utf-8?B?Q3M2S3N0VnlaL0ZDL0lKNUpDYjFWaGNvRFlVOHFpcVhxSnZzSk5rZDR6aHFD?= =?utf-8?B?U1NpMnNtbjhVQW1tQ3VmaXFPWU5USTAxcTdjZDJzVEt1ZXVlSk5VK2h4OTBZ?= =?utf-8?B?OEtKei9YNTRpNlQ3WXdwMmdkV1Zka3JwaEwzUnI0bWFnWERMbXlKVlptRGJJ?= =?utf-8?B?WGxyQVJPcnIyTDNOT2hqdmJpU3ZQZlhBWkhWUzNXaUoyMGNqN21obklRZ1oy?= =?utf-8?B?djJHVC9tV3BNSWJZUzg2TnZnYlZlT0dySmVMMUhuRzVWdzVFMzNVTEkwdzFm?= =?utf-8?B?ak84Ni8wU0xsRXdCaG5CdUFKWFZJOXJCSjlndUhMMW9GV0thT1o5QnRNRXFq?= =?utf-8?B?SFlUb3Y5aE9PTDRFQTNhd1grbExzNXgvTmVNdjlTK3RNT0JoL1YyMGQ2Y01B?= =?utf-8?B?c2c4Ni84TldwbTNtNFlwVHpOa203WDhzUkxSRlZhVXlZbG1JKzB4U3VTZjBm?= =?utf-8?B?c0QxV2JLeHNNYjh4QmhLTUo1eFBlS0d0VVFsMG4yVUtZNkticUZaSzVZcFNN?= =?utf-8?B?TkdjczlsaHlGeWZoelVFRnZkY3p1ZnNYbnRIdnd5bjdWbGY2ZmlTNDRSdGJM?= =?utf-8?B?VlZSbmQybndhMmgyNFQxTXMzcUIrQXVaODBuTG9pNzdmQVpJTTRYcm9DVnZO?= =?utf-8?B?KzVka3lIN3NGNHlzUDByamVSWERWZnpudHV4UmhUZWxuMFE1bUJYdnhsR1Ur?= =?utf-8?B?bVk4c2dQS1JNcE9GRmJoZ2ZnWTk0aE9qZzhyT0tEa3MrYkY4dWlNN1d2MUY5?= =?utf-8?B?QUdNVDZFVHFBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b48567ec-6f38-42aa-f6fe-08da12479fdd X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2022 12:20:06.2322 (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: VI1PR01MB4702 Subject: Re: [FFmpeg-devel] [PATCH v10 1/1] avformat: Add IPFS protocol support. 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: TWFyayBHYWlzZXI6Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgo+IC0gZmZwbGF5IGlw ZnM6Ly88Y2lkPgo+IC0gZmZwbGF5IGlwbnM6Ly88Y2lkPgo+IAo+IElQRlMgZGF0YSBjYW4gYmUg cGxheWVkIGZyb20gc28gY2FsbGVkICJpcGZzIGdhdGV3YXlzIi4KPiBBIGdhdGV3YXkgaXMgZXNz ZW50aWFsbHkgYSB3ZWJzZXJ2ZXIgdGhhdCBnaXZlcyBhY2Nlc3MgdG8gdGhlCj4gZGlzdHJpYnV0 ZWQgSVBGUyBuZXR3b3JrLgo+IAo+IFRoaXMgcHJvdG9jb2wgc3VwcG9ydCAoaXBmcyBhbmQgaXBu cykgdGhlcmVmb3JlIHRyYW5zbGF0ZXMKPiBpcGZzOi8vIGFuZCBpcG5zOi8vIHRvIGEgaHR0cDov LyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwo+IHRoZW4gaGFuZGxlZCBieSB0aGUgaHR0cCBw cm90b2NvbC4gSXQgY291bGQgYWxzbyBiZSBodHRwcwo+IGRlcGVuZGluZyBvbiB0aGUgZ2F0ZXdh eSBwcm92aWRlZC4KPiAKPiBUbyB1c2UgdGhpcyBwcm90b2NvbCwgYSBnYXRld2F5IG11c3QgYmUg cHJvdmlkZWQuCj4gSWYgeW91IGRvIG5vdGhpbmcgaXQgd2lsbCB0cnkgdG8gZmluZCBpdCBpbiB5 b3VyCj4gJEhPTUUvLmlwZnMvZ2F0ZXdheSBmaWxlLiBUaGUgd2F5cyB0byBzZXQgaXQgbWFudWFs bHkgYXJlOgo+IDEuIERlZmluZSBhIC1nYXRld2F5IDx1cmw+IHRvIHRoZSBnYXRld2F5Lgo+IDIu IERlZmluZSAkSVBGU19HQVRFV0FZIHdpdGggdGhlIGZ1bGwgaHR0cCBsaW5rIHRvIHRoZSBnYXRl d2F5Lgo+IDMuIERlZmluZSAkSVBGU19QQVRIIGFuZCBwb2ludCBpdCB0byB0aGUgSVBGUyBkYXRh IHBhdGguCj4gNC4gSGF2ZSBJUEZTIHJ1bm5pbmcgaW4geW91ciBsb2NhbCB1c2VyIGZvbGRlciAo dW5kZXIgJEhPTUUvLmlwZnMpLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJr Zzg1QGdtYWlsLmNvbT4KPiAtLS0KPiAgY29uZmlndXJlICAgICAgICAgICAgICAgICB8ICAgMiAr Cj4gIGRvYy9wcm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwo+ICBsaWJhdmZvcm1hdC9N YWtlZmlsZSAgICAgIHwgICAyICsKPiAgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYyB8IDMwOSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWJhdmZvcm1hdC9wcm90 b2NvbHMuYyAgIHwgICAyICsKPiAgNSBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5zZXJ0aW9ucygrKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+IAo+IGRpZmYg LS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPiBpbmRleCBlNGQzNmFhNjM5Li41NWFmOTA5 NTdhIDEwMDc1NQo+IC0tLSBhL2NvbmZpZ3VyZQo+ICsrKyBiL2NvbmZpZ3VyZQo+IEBAIC0zNTc5 LDYgKzM1NzksOCBAQCB1ZHBfcHJvdG9jb2xfc2VsZWN0PSJuZXR3b3JrIgo+ICB1ZHBsaXRlX3By b3RvY29sX3NlbGVjdD0ibmV0d29yayIKPiAgdW5peF9wcm90b2NvbF9kZXBzPSJzeXNfdW5faCIK PiAgdW5peF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4gK2lwZnNfcHJvdG9jb2xfc2VsZWN0 PSJodHRwc19wcm90b2NvbCIKPiAraXBuc19wcm90b2NvbF9zZWxlY3Q9Imh0dHBzX3Byb3RvY29s Igo+ICAKPiAgIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwo+ICBsaWJhbXFwX3Byb3RvY29s X2RlcHM9ImxpYnJhYmJpdG1xIgo+IGRpZmYgLS1naXQgYS9kb2MvcHJvdG9jb2xzLnRleGkgYi9k b2MvcHJvdG9jb2xzLnRleGkKPiBpbmRleCBkMjA3ZGYwYjUyLi43YzljMGE0ODA4IDEwMDY0NAo+ IC0tLSBhL2RvYy9wcm90b2NvbHMudGV4aQo+ICsrKyBiL2RvYy9wcm90b2NvbHMudGV4aQo+IEBA IC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgo+ICAKPiAgQGVuZCB0YWJsZQo+ ICAKPiArQHNlY3Rpb24gaXBmcwo+ICsKPiArSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQ RlMpIHByb3RvY29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzIHN0b3JlZCAKPiArb24g dGhlIElQRlMgbmV0d29yayB0aHJvdWdoIHNvIGNhbGxlZCBnYXRld2F5cy4gVGhvc2UgYXJlIGh0 dHAocykgZW5kcG9pbnRzLgo+ICtUaGlzIHByb3RvY29sIHdyYXBzIHRoZSBJUEZTIG5hdGl2ZSBw cm90b2NvbHMgKGlwZnM6Ly8gYW5kIGlwbnM6Ly8pIHRvIGJlIHNlbmQgCj4gK3RvIHN1Y2ggYSBn YXRld2F5LiBVc2VycyBjYW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2gg bWVhbnMgdGhpcyAKPiArcHJvdG9jb2wgd2lsbCB1c2UgeW91ciBsb2NhbCBtYWNoaW5lIGdhdGV3 YXkgdG8gYWNjZXNzIGZpbGVzIG9uIHRoZSBJUEZTIG5ldHdvcmsuCj4gKwo+ICtJZiBhIHVzZXIg ZG9lc24ndCBoYXZlIGEgbm9kZSBvZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkg ZHdlYi5saW5rIGlzIAo+ICt1c2VkIGJ5IGRlZmF1bHQuCj4gKwo+ICtZb3UgY2FuIHVzZSB0aGlz IHByb3RvY29sIGluIDIgd2F5cy4gVXNpbmcgSVBGUzoKPiArQGV4YW1wbGUKPiArZmZwbGF5IGlw ZnM6Ly9RbWJHdEpnMjNza2h2Rm11OW1KaWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4gK0Bl bmQgZXhhbXBsZQo+ICsKPiArT3IgdGhlIElQTlMgcHJvdG9jb2wgKElQTlMgaXMgbXV0YWJsZSBJ UEZTKToKPiArQGV4YW1wbGUKPiArZmZwbGF5IGlwbnM6Ly9RbWJHdEpnMjNza2h2Rm11OW1KaWVQ VkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4gK0BlbmQgZXhhbXBsZQo+ICsKPiArWW91IGNhbiBh bHNvIGNoYW5nZSB0aGUgZ2F0ZXdheSB0byBiZSB1c2VkOgo+ICsKPiArQHRhYmxlIEBvcHRpb24K PiArCj4gK0BpdGVtIGdhdGV3YXkKPiArRGVmaW5lcyB0aGUgZ2F0ZXdheSB0byB1c2UuIFdoZW4g bm90aGluZyBpcyBwcm92aWRlZCB0aGUgcHJvdG9jb2wgd2lsbCBmaXJzdCB0cnkgCj4gK3lvdXIg bG9jYWwgZ2F0ZXdheS4gSWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2VkLgo+ICsK PiArQGVuZCB0YWJsZQo+ICAKPiAgQGMgbWFuIGVuZCBQUk9UT0NPTFMKPiBkaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQo+IGluZGV4IGQ3MTgy ZDZiZDguLmUzMjMzZmQ3YWMgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiAr KysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQo+IEBAIC02NjAsNiArNjYwLDggQEAgT0JKUy0kKENP TkZJR19TUlRQX1BST1RPQ09MKSAgICAgICAgICAgICArPSBzcnRwcHJvdG8ubyBzcnRwLm8KPiAg T0JKUy0kKENPTkZJR19TVUJGSUxFX1BST1RPQ09MKSAgICAgICAgICArPSBzdWJmaWxlLm8KPiAg T0JKUy0kKENPTkZJR19URUVfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRl ZV9jb21tb24ubwo+ICBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NPTCkgICAgICAgICAgICAgICs9 IHRjcC5vCj4gK09CSlMtJChDT05GSUdfSVBGU19QUk9UT0NPTCkgICAgICAgICAgICAgKz0gaXBm c2dhdGV3YXkubwo+ICtPQkpTLSQoQ09ORklHX0lQTlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9 IGlwZnNnYXRld2F5Lm8KPiAgVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAgICAgICAgICAgICAg ICArPSB0bHNfZ251dGxzLm8KPiAgVExTLU9CSlMtJChDT05GSUdfTElCVExTKSAgICAgICAgICAg ICAgICArPSB0bHNfbGlidGxzLm8KPiAgVExTLU9CSlMtJChDT05GSUdfTUJFRFRMUykgICAgICAg ICAgICAgICArPSB0bHNfbWJlZHRscy5vCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2lwZnNn YXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwLi4xYTAzOTU4OWMwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPiBAQCAtMCwwICsxLDMwOSBAQAo+ICsvKgo+ICsg KiBJUEZTIGFuZCBJUE5TIHByb3RvY29sIHN1cHBvcnQgdGhyb3VnaCBJUEZTIEdhdGV3YXkuCj4g KyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+ICsgKi8KPiArCj4g KyNpbmNsdWRlICJhdmZvcm1hdC5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0Lmgi CgpVbnVzZWQuCgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gKyNpbmNsdWRl ICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiAr I2luY2x1ZGUgImxpYmF2dXRpbC90cmVlLmgiCgo/Cgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiAr I2lmIEhBVkVfSU9fSAo+ICsjaW5jbHVkZSA8aW8uaD4KPiArI2VuZGlmCj4gKyNpZiBIQVZFX1VO SVNURF9ICj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2VuZGlmCj4gKyNpbmNsdWRlICJvc19z dXBwb3J0LmgiCj4gKyNpbmNsdWRlICJ1cmwuaCIKPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsj aW5jbHVkZSA8c3lzL3N0YXQuaD4KPiArCj4gK3R5cGVkZWYgc3RydWN0IElQRlNHYXRld2F5Q29u dGV4dCB7Cj4gKyAgICBBVkNsYXNzICpjbGFzczsKPiArICAgIFVSTENvbnRleHQgKmlubmVyOwo+ ICsgICAgLy8gSXMgZmlsbGVkIGJ5IHRoZSAtZ2F0ZXdheSBhcmd1bWVudCBhbmQgbm90IGNoYW5n ZWQgYWZ0ZXIuCj4gKyAgICBjaGFyICpnYXRld2F5Owo+ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdh dGV3YXkgaXMgbm9uIG51bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcyBidWZmZXIuCj4g KyAgICAvLyBFbHNlIHRoaXMgYnVmZmVyIHdpbGwgY29udGFpbiB0aGUgYXV0byBkZXRlY3RlZCBn YXRld2F5Lgo+ICsgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHRoZSBnYXRld2F5IHRvIHVzZSB3aWxs IGJlIGluIHRoaXMgYnVmZmVyLgo+ICsgICAgY2hhciBnYXRld2F5X2J1ZmZlcltQQVRIX01BWF07 Cj4gK30gSVBGU0dhdGV3YXlDb250ZXh0Owo+ICsKPiArLy8gQSBiZXN0LWVmZm9ydCB3YXkgdG8g ZmluZCB0aGUgSVBGUyBnYXRld2F5Lgo+ICsvLyBPbmx5IHRoZSBtb3N0IGFwcHJvcGlhdGUgZ2F0 ZXdheSBpcyBzZXQuIEl0J3Mgbm90IGFjdHVhbGx5IHJlcXVlc3RlZAo+ICsvLyAoaHR0cCBjYWxs KSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHNsb3dkb3duIGluIHN0YXJ0dXAuIEEgcG90ZW50aWFs IHRpbWVvdXQKPiArLy8gaXMgaGFuZGxlZCBieSB0aGUgSFRUUCBwcm90b2NvbC4KPiArc3RhdGlj IGludCBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoVVJMQ29udGV4dCAqaCkKPiArewo+ICsgICAgSVBG U0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+ICsgICAgY2hhciBpcGZzX2Z1bGxf ZGF0YV9mb2xkZXJbUEFUSF9NQVhdOwo+ICsgICAgY2hhciBpcGZzX2dhdGV3YXlfZmlsZVtQQVRI X01BWF07Cj4gKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKPiArICAgIGludCBzdGF0X3JldCA9IDA7Cj4g KyAgICBpbnQgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgRklMRSAqZ2F0ZXdheV9maWxl ID0gTlVMTDsKPiArCj4gKyAgICAvLyBUZXN0ICRJUEZTX0dBVEVXQVkuCj4gKyAgICBpZiAoZ2V0 ZW52KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7Cj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGMt PmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAo+ICsgICAg ICAgICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfR0FURVdBWSIpKSA+PSBzaXplb2YoYy0+Z2F0 ZXdheV9idWZmZXIpKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlRoZSBJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQgdmFyaWFibGUgZXhjZWVkcyB0aGUgbWF4aW11 bSBsZW5ndGguIFdlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLCBzaXplb2YoYy0+ Z2F0ZXdheV9idWZmZXIpKTsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ ICsgICAgICAgICAgICBnb3RvIGVycjsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIHJldCA9 IDE7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9IGVsc2UKPiArICAgICAgICBhdl9sb2co aCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdBWSBpcyBlbXB0eS5cbiIpOwo+ICsKPiArICAg IC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgSVBGUyBmb2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVh ZCB0aGUgY29udGVudHMgb2YKPiArICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGljaCB3b3Vs ZCB0ZWxsIHVzIHRoZSBnYXRld2F5IHRvIHVzZS4KPiArICAgIGlmIChnZXRlbnYoIklQRlNfUEFU SCIpID09IE5VTEwpIHsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNf UEFUSCBpcyBlbXB0eS5cbiIpOwo+ICsKPiArICAgICAgICAvLyBUcnkgdmlhIHRoZSBob21lIGZv bGRlci4KPiArICAgICAgICBpZiAoZ2V0ZW52KCJIT01FIikgPT0gTlVMTCkgewo+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5 LlxuIik7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAg ICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvLyBWZXJpZnkgdGhlIGNv bXBvc2VkIHBhdGggZml0cy4KPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFf Zm9sZGVyLCBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwKPiArICAgICAgICAgICAgICAg ICAgICAgIiVzLy5pcGZzLyIsIGdldGVudigiSE9NRSIpKSA+PSBzaXplb2YoaXBmc19mdWxsX2Rh dGFfZm9sZGVyKSkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJU aGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUgbWF4IHBhdGggbGVuZ3RoICglenUpXG4iLCBz aXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsKPiAr ICAgICAgICAvLyBTdGF0IHRoZSBmb2xkZXIuCj4gKyAgICAgICAgLy8gSXQgc2hvdWxkIGV4aXN0 IGluIGEgZGVmYXVsdCBJUEZTIHNldHVwIHdoZW4gcnVuIGFzIGxvY2FsIHVzZXIuCj4gKyNpZm5k ZWYgX1dJTjMyCj4gKyAgICAgICAgc3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRl ciwgJnN0KTsKPiArI2Vsc2UKPiArICAgICAgICBzdGF0X3JldCA9IHdpbjMyX3N0YXQoaXBmc19m dWxsX2RhdGFfZm9sZGVyLCAmc3QpOwo+ICsjZW5kaWYKPiArICAgICAgICBpZiAoc3RhdF9yZXQg PCAwKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlVuYWJsZSB0byBm aW5kIElQRlMgZm9sZGVyLiBXZSB0cmllZDpcbiIpOwo+ICsgICAgICAgICAgICBhdl9sb2coaCwg QVZfTE9HX0lORk8sICItICRJUEZTX1BBVEgsIHdoaWNoIHdhcyBlbXB0eS5cbiIpOwo+ICsgICAg ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRIT01FLy5pcGZzIChmdWxsIHVyaTog JXMpIHdoaWNoIGRvZXNuJ3QgZXhpc3QuXG4iLCBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpOwo+ICsg ICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJy Owo+ICsgICAgICAgIH0KPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlw ZnNfZnVsbF9kYXRhX2ZvbGRlciwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksICIlcyIs Cj4gKyAgICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkgPj0gc2l6ZW9mKGlwZnNf ZnVsbF9kYXRhX2ZvbGRlcikpIHsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVGhlIElQRlNfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBleGNlZWRzIHRoZSBtYXhp bXVtIGxlbmd0aC4gV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsIHNpemVvZihj LT5nYXRld2F5X2J1ZmZlcikpOwo+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7 Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICB9Cj4gKwo+ ICsgICAgLy8gQ29weSB0aGUgZnVsbHkgY29tcG9zZWQgZ2F0ZXdheSBwYXRoIGludG8gaXBmc19n YXRld2F5X2ZpbGUuCj4gKyAgICBpZiAoc25wcmludGYoaXBmc19nYXRld2F5X2ZpbGUsIHNpemVv ZihpcGZzX2dhdGV3YXlfZmlsZSksICIlc2dhdGV3YXkiLAo+ICsgICAgICAgICAgICAgICAgIGlw ZnNfZnVsbF9kYXRhX2ZvbGRlcikgPj0gc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSkgewo+ICsg ICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSBw YXRoIGV4Y2VlZHMgdGhlIG1heCBwYXRoIGxlbmd0aCAoJXp1KVxuIiwgc2l6ZW9mKGlwZnNfZ2F0 ZXdheV9maWxlKSk7Cj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+ICsgICAgICAg IGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIEdldCB0aGUgY29udGVudHMgb2YgdGhl IGdhdGV3YXkgZmlsZS4KPiArICAgIGdhdGV3YXlfZmlsZSA9IGF2X2ZvcGVuX3V0ZjgoaXBmc19n YXRld2F5X2ZpbGUsICJyIik7Cj4gKyAgICBpZiAoIWdhdGV3YXlfZmlsZSkgewo+ICsgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1 cmk6ICVzKSBkb2Vzbid0IGV4aXN0LiBJcyB0aGUgZ2F0ZXdheSBlbmFibGVkP1xuIiwgaXBmc19n YXRld2F5X2ZpbGUpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiArICAgICAg ICBnb3RvIGVycjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBSZWFkIGEgc2luZ2xlIGxpbmUgKGZn ZXRzIHN0b3BzIGF0IG5ldyBsaW5lIG1hcmspLgo+ICsgICAgZmdldHMoYy0+Z2F0ZXdheV9idWZm ZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLCBnYXRld2F5X2ZpbGUpOwo+ICsKPiAr ICAgIC8vIFJlcGxhY2UgdGhlIGxhc3QgY2hhciB3aXRoIFwwCj4gKyAgICBjLT5nYXRld2F5X2J1 ZmZlcltzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpIC0gMV0gPSAwOwo+ICsKPiArICAgIC8vIFJl cGxhY2UgZmlyc3Qgb2NjdXJlbmNlIG9mIGVuZCBvZiBsaW5lIHdpdGggXDAKPiArICAgIGMtPmdh dGV3YXlfYnVmZmVyW3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZmZXIsICJcciIpXSA9IDA7Cj4gKyAg ICBjLT5nYXRld2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXG4iKV0gPSAw OwoKSWYgdGhlIGJ1ZmZlciBjb250YWlucyBib3RoIFxyIGFuZCBcbiBhbmQgdGhlIGZpcnN0IFxu IHByZWNlZGVzIHRoZQpmaXJzdCBcciwgdGhlbiB0aGUgYWJvdmUgemVyb2VzIGJvdGggdGhlIGZp cnN0IFxyIGFuZCB0aGUgZmlyc3QgXG4uIElmCml0IGlzIGVub3VnaCB0byBvbmx5IHplcm8gdGhl IGZpcnN0IG5ld2xpbmUsIHRoZW4gdGhpcyBjYW4gYmUgc2ltcGxpZmllZAp0byAiYy0+Z2F0ZXdh eV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxyXG4iKV0gPSAwOyIuCgo+ICsK PiArICAgIC8vIElmIHN0cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3Rl cnMgdGhlbiB3ZSBoYXZlIGEKPiArICAgIC8vIHBvdGVudGlhbCBnYXRld2F5IHVybC4KPiArICAg IGlmIChzdHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpIDwgMSkgewoKaWYgKCpjLT5nYXRld2F5X2J1 ZmZlciA9PSAnXDAnKQoKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUg SVBGUyBnYXRld2F5IGZpbGUgKGZ1bGwgdXJpOiAlcykgYXBwZWFycyB0byBiZSBlbXB0eS4gSXMg dGhlIGdhdGV3YXkgc3RhcnRlZD9cbiIsIGlwZnNfZ2F0ZXdheV9maWxlKTsKPiArICAgICAgICBy ZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9IGVsc2Ug ewo+ICsgICAgICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29t ZXRoaW5nIHRoYXQgbG9va3MgdmFsaWQuCj4gKyAgICAgICAgcmV0ID0gMTsKPiArICAgICAgICBn b3RvIGVycjsKPiArICAgIH0KPiArCj4gK2VycjoKPiArICAgIGlmIChnYXRld2F5X2ZpbGUpCj4g KyAgICAgICAgZmNsb3NlKGdhdGV3YXlfZmlsZSk7Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIGludCB0cmFuc2xhdGVfaXBmc190b19odHRwKFVSTENvbnRleHQgKmgs IGNvbnN0IGNoYXIgKnVyaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBmbGFncywgQVZEaWN0aW9uYXJ5ICoqb3B0aW9ucykKPiArewo+ICsgICAgY29uc3QgY2hhciAq aXBmc19jaWQ7Cj4gKyAgICBjaGFyICpmdWxsdXJpID0gTlVMTDsKPiArICAgIGludCByZXQ7Cj4g KyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gKwo+ICsgICAgLy8g VGVzdCBmb3IgaXBmczovLywgaXBmczosIGlwbnM6Ly8gYW5kIGlwbnM6LiBUaGlzIHByZWZpeCBp cyBzdHJpcHBlZCBmcm9tCj4gKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcganVzdCB0aGUgQ0lE IGluIGlwZnNfY2lkLgo+ICsgICAgaW50IGlzX2lwZnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBm czovLyIsICZpcGZzX2NpZCk7Cj4gKyAgICBpbnQgaXNfaXBucyA9IGF2X3N0cmlzdGFydCh1cmks ICJpcG5zOi8vIiwgJmlwZnNfY2lkKTsKPiArCj4gKyAgICAvLyBXZSBtdXN0IGhhdmUgZWl0aGVy IGlwbnMgb3IgaXBmcy4KPiArICAgIGlmICghaXNfaXBmcyAmJiAhaXNfaXBucykgewo+ICsgICAg ICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dB Uk5JTkcsICJVbnN1cHBvcnRlZCB1cmwgJXNcbiIsIHVyaSk7Cj4gKyAgICAgICAgZ290byBlcnI7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gSWYgdGhlIENJRCBoYXMgYSBsZW5ndGggZ3JlYXRlciB0 aGVuIDAgdGhlbiB3ZSBhc3N1bWUgd2UgaGF2ZSBhIHByb3BlciB3b3JraW5nIG9uZS4KPiArICAg IC8vIEl0IGNvdWxkIHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkg c2hvdWxkIHNhdmUgdXMgYW5kCj4gKyAgICAvLyBydXR1cm4gYSA0MDMgZXJyb3IuIFRoZSBodHRw IHByb3RvY29sIGhhbmRsZXMgdGhpcy4KPiArICAgIGlmIChzdHJsZW4oaXBmc19jaWQpIDwgMSkg ewo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3QgYmUgcHJv dmlkZWQuXG4iKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gKyAgICAgICAg Z290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZm ZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBjLT5nYXRld2F5Cj4gKyAgICBpZiAoYy0+Z2F0ZXdheSAh PSBOVUxMKSB7Cj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXpl b2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAo+ICsgICAgICAgICAgICAgICAgICAgICBjLT5n YXRld2F5KSA+PSBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKSB7Cj4gKyAgICAgICAgICAgIGF2 X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJhbWV0ZXIgaXMgdG9vIGxv bmcuIFdlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLCBzaXplb2YoYy0+Z2F0ZXdh eV9idWZmZXIpKTsKCldlIHR5cGljYWxseSB1c2UgU0laRV9TUEVDSUZJRVIgaW5zdGVhZCBvZiB6 IGZvciBjb21wYXRpYmlsaXR5IHdpdGgKYW5jaWVudCB2ZXJzaW9ucyBvZiBNU1ZDLgooSSBkb24n dCBrbm93IHdoZXRoZXIgdGhlcmUgaXMgYW55IHN1cHBvcnRlZCB2ZXJzaW9uIG9mIE1TVkMgdGhh dApkb2Vzbid0IHN1cHBvcnQgejsgSSBkb24ndCB1c2UgTVNWQyBteXNlbGYuKQoKPiArICAgICAg ICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgICAgICBnb3RvIGVycjsKPiAr ICAgICAgICB9Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIC8vIFBvcHVsYXRlIHRoZSBJUEZT IGdhdGV3YXkgaWYgd2UgaGF2ZSBhbnkuCj4gKyAgICAgICAgLy8gSWYgbm90LCBpbmZvcm0gdGhl IHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBvbmUuCj4gKyAgICAgICAgcmV0ID0gcG9wdWxhdGVf aXBmc19nYXRld2F5KGgpOwo+ICsKPiArICAgICAgICBpZiAocmV0IDwgMSkgewo+ICsgICAgICAg ICAgICAvLyBXZSBmYWxsYmFjayBvbiBkd2ViLmxpbmsgKG1hbmFnZWQgYnkgUHJvdG9jb2wgTGFi cykuCj4gKyAgICAgICAgICAgIHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+ Z2F0ZXdheV9idWZmZXIpLCAiaHR0cHM6Ly9kd2ViLmxpbmsiKTsKPiArCj4gKyAgICAgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIklQRlMgZG9lcyBub3QgYXBwZWFyIHRvIGJlIHJ1 bm5pbmcuIFlvdeKAmXJlIG5vdyB1c2luZyB0aGUgcHVibGljIGdhdGV3YXkgYXQgZHdlYi5saW5r LlxuIik7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIkluc3RhbGxpbmcg SVBGUyBsb2NhbGx5IGlzIHJlY29tbWVuZGVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIHJl bGlhYmlsaXR5LCBhbmQgbm90IHNoYXJlIGFsbCB5b3VyIGFjdGl2aXR5IHdpdGggYSBzaW5nbGUg SVBGUyBnYXRld2F5LlxuIik7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywg IlRoZXJlIGFyZSBtdWx0aXBsZSBvcHRpb25zIHRvIGRlZmluZSB0aGlzIGdhdGV3YXkuXG4iKTsK PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMS4gQ2FsbCBmZm1wZWcgd2l0 aCBhIGdhdGV3YXkgcGFyYW0sIHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaDogLWdhdGV3YXkgPHVy bD4uXG4iKTsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMi4gRGVmaW5l IGFuICRJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCB0aGUgZnVsbCBIVFRQ IFVSTCB0byB0aGUgZ2F0ZXdheSB3aXRob3V0IHRyYWlsaW5nIGZvcndhcmQgc2xhc2guXG4iKTsK PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMy4gRGVmaW5lIGFuICRJUEZT X1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEg cGF0aCAtIHRoaXMgaXMgdHlwaWNhbGx5IH4vLmlwZnNcbiIpOwoKQWxsIHRob3NlIEFWX0xPR19J TkZPIGNhbiBiZSBjb21iaW5lZCB3aGljaCBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IHRoZQpsb2dz IGNhbid0IGJlIHRlYXJlZCBhcGFydCAod2hpY2ggdGhleSBjYW4gbm93IGlmIHNvbWV0aGluZyBl bHNlIGxvZ3MgYXQKdGhlIHNhbWUgdGltZSk7IGZ1cnRoZXJtb3JlLCB0aGlzIHdvdWxkIGFsc28g ZGVjcmVhc2UgY29kZXNpemUuCgo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICAvLyBU ZXN0IGlmIHRoZSBnYXRld2F5IHN0YXJ0cyB3aXRoIGVpdGhlciBodHRwOi8vIG9yIGh0dHBzOi8v Cj4gKyAgICBpZiAoYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cDovLyIsIE5V TEwpID09IDAKPiArICAgICAgICAmJiBhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJo dHRwczovLyIsIE5VTEwpID09IDApIHsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgZ2F0ZXdheSBVUkwgZGlkbid0IHN0YXJ0IHdpdGggaHR0cDovLyBvciBodHRwczov LyBhbmQgaXMgdGhlcmVmb3JlIGludmFsaWQuXG4iKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9S KEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gQ29u Y2F0ZW5hdGUgdGhlIHVybC4KPiArICAgIC8vIFRoaXMgZW5kcyB1cCB3aXRoIHNvbWV0aGluZyBs aWtlOiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBmcy9RbS4uLi4uCj4gKyAgICAvLyBUaGUgZm9y bWF0IG9mICIlcyVzJXMlcyIgaXMgdGhlIGZvbGxvd2luZzoKPiArICAgIC8vIDFzdCAlcyA9IFRo ZSBnYXRld2F5Lgo+ICsgICAgLy8gMm5kICVzID0gSWYgdGhlIGdhdGV3YXkgZGlkbid0IGVuZCBp biBhIHNsYXNoLCBhZGQgYSAiLyIuIE90aGVyd2lzZSBpdCdzIGFuIGVtcHR5IHN0cmluZwo+ICsg ICAgLy8gM3JkICVzID0gRWl0aGVyIGlwbnMvIG9yIGlwZnMvLgo+ICsgICAgLy8gNHRoICVzID0g VGhlIElQRlMgQ0lEIChRbS4uLiwgYmFmeS4uLiwgLi4uKS4KPiArICAgIGZ1bGx1cmkgPSBhdl9h c3ByaW50ZigiJXMlcyVzJXMiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3 YXlfYnVmZmVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIChjLT5nYXRld2F5X2J1ZmZl cltzdHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpIC0gMV0gPT0gJy8nKSA/ICIiIDogIi8iLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pcG5zKSA/ICJpcG5zLyIgOiAiaXBmcy8iLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGlwZnNfY2lkKTsKCk1pc3NpbmcgYWxsb2NhdGlv biBjaGVjay4KCj4gKwo+ICsgICAgLy8gUGFzcyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJv dG9jb2wgaGFuZGxlci4KPiArICAgIGlmICgocmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMt PmlubmVyLCBmdWxsdXJpLCBmbGFncywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmgtPmludGVycnVwdF9jYWxsYmFjaywgb3B0aW9ucywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2NvbF9ibGFja2xpc3QsIGgpKQo+ICsg ICAgICAgIDwgMCkgewoKV2VpcmQgZm9ybWF0dGluZzsgd2h5IGRvbid0IHlvdSBqdXN0IHVzZQpy ZXQgPSBmZnVybF9vcGVuX3doaXRlbGlzdCguLi4pOwppZiAocmV0IDwgMCkgewoKPiArICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gb3BlbiByZXNvdXJjZTogJXNc biIsIGZ1bGx1cmkpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArZXJyOgo+ ICsgICAgYXZfZnJlZShmdWxsdXJpKTsKPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgaXBmc19yZWFkKFVSTENvbnRleHQgKmgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50 IHNpemUpCj4gK3sKPiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsK PiArICAgIHJldHVybiBmZnVybF9yZWFkKGMtPmlubmVyLCBidWYsIHNpemUpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50NjRfdCBpcGZzX3NlZWsoVVJMQ29udGV4dCAqaCwgaW50NjRfdCBwb3MsIGlu dCB3aGVuY2UpCj4gK3sKPiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0 YTsKPiArICAgIHJldHVybiBmZnVybF9zZWVrKGMtPmlubmVyLCBwb3MsIHdoZW5jZSk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgaXBmc19jbG9zZShVUkxDb250ZXh0ICpoKQo+ICt7Cj4gKyAgICBJ UEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gKyAgICByZXR1cm4gZmZ1cmxf Y2xvc2VwKCZjLT5pbm5lcik7Cj4gK30KPiArCj4gKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9m KElQRlNHYXRld2F5Q29udGV4dCwgeCkKPiArCj4gK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRp b25zW10gPSB7Cj4gKyAgICB7ImdhdGV3YXkiLCAiVGhlIGdhdGV3YXkgdG8gYXNrIGZvciBJUEZT IGRhdGEuIiwgT0ZGU0VUKGdhdGV3YXkpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyID0gTlVM TH0sIDAsIDAsIEFWX09QVF9GTEFHX0RFQ09ESU5HX1BBUkFNfSwKPiArICAgIHtOVUxMfSwKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBBVkNsYXNzIGlwZnNfY29udGV4dF9jbGFzcyA9IHsKPiAr ICAgIC5jbGFzc19uYW1lICAgPSAiSVBGUyIsCj4gKyAgICAuaXRlbV9uYW1lICAgID0gYXZfZGVm YXVsdF9pdGVtX25hbWUsCj4gKyAgICAub3B0aW9uICAgICAgID0gb3B0aW9ucywKPiArICAgIC52 ZXJzaW9uICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4gK307Cj4gKwo+ICtjb25zdCBV UkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sID0gewo+ICsgICAgLm5hbWUgICAgICAgICAgICAg PSAiaXBmcyIsCj4gKyAgICAudXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9pcGZzX3RvX2h0 dHAsCj4gKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKPiArICAgIC51cmxfc2Vl ayAgICAgICAgID0gaXBmc19zZWVrLAo+ICsgICAgLnVybF9jbG9zZSAgICAgICAgPSBpcGZzX2Ns b3NlLAo+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0 KSwKPiArICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29udGV4dF9jbGFzcywKPiArfTsK PiArCj4gK2NvbnN0IFVSTFByb3RvY29sIGZmX2lwbnNfcHJvdG9jb2wgPSB7Cj4gKyAgICAubmFt ZSAgICAgICAgICAgICA9ICJpcG5zIiwKPiArICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNs YXRlX2lwZnNfdG9faHR0cCwKPiArICAgIC51cmxfcmVhZCAgICAgICAgID0gaXBmc19yZWFkLAo+ ICsgICAgLnVybF9zZWVrICAgICAgICAgPSBpcGZzX3NlZWssCj4gKyAgICAudXJsX2Nsb3NlICAg ICAgICA9IGlwZnNfY2xvc2UsCj4gKyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihJUEZT R2F0ZXdheUNvbnRleHQpLAo+ICsgICAgLnByaXZfZGF0YV9jbGFzcyAgPSAmaXBmc19jb250ZXh0 X2NsYXNzLAo+ICt9Owo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYyBiL2xp YmF2Zm9ybWF0L3Byb3RvY29scy5jCj4gaW5kZXggZDA3NTYzY2QwYy4uNmVlNjJhNTk4YSAxMDA2 NDQKPiAtLS0gYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+ICsrKyBiL2xpYmF2Zm9ybWF0L3By b3RvY29scy5jCj4gQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZm X2xpYnNydF9wcm90b2NvbDsKPiAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNzaF9w cm90b2NvbDsKPiAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNtYmNsaWVudF9wcm90 b2NvbDsKPiAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnptcV9wcm90b2NvbDsKPiAr ZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2w7Cj4gK2V4dGVybiBjb25z dCBVUkxQcm90b2NvbCBmZl9pcG5zX3Byb3RvY29sOwo+ICAKPiAgI2luY2x1ZGUgImxpYmF2Zm9y bWF0L3Byb3RvY29sX2xpc3QuYyIKPiAgCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==