From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 1E1E64C5F5 for <ffmpegdev@gitmailbox.com>; Mon, 26 May 2025 07:57:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id DEDFA68D37F; Mon, 26 May 2025 10:57:14 +0300 (EEST) Received: from SY5PR01CU010.outbound.protection.outlook.com (mail-australiaeastazolkn19012050.outbound.protection.outlook.com [52.103.72.50]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id B496A68CEEE for <ffmpeg-devel@ffmpeg.org>; Mon, 26 May 2025 10:57:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MUBHc7DXdp3H9G/NPEYp+ktbu1en+UBJuPu/K2vtznv/kyTfhOpoEcJ2mJ/0tWLvVfyweup5mTz/Dfnhuhl5HEcAduWXFc7mOL9qiCJch/77PlTdMAVJiQOFYDbc06e40gOV7N2ZqEjL6tK6PqFhiIZwqd/xzCVHTZOWZOXcj8muxGfsaubpKh7/Tp4ekBQmgoYljv0+ZhdHHqaJCftawEdA+3ydkJWA70MHOXcQZyD2b9EHzgHIQIR35cHlSHnqr06+TSKJ85cTCincOQpAJ6JZVUZ09IENdAPNbBqsRREPYHHQoMizzhVm6CeOZuO4vRDnYoSLbjBtqP2C1JkhFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=xsG6Hbr/NAPqVvvmE0+SDV53cSE9PF7qM6Jjoi3fZwk=; b=TZG+gWZBDKHGsfVG2QsYbJiminswgy6zKPjZWtHo+mpdQXaIO6JkEnobHX6Yk96Pqe6zwv5Wr0EtGaLn8In8Dgeug5kDOG2WpY4qm47RjvJr7QE4qvKUurNRU4JnQe1de3qCOz6ZWMUbpIzvHq3oG9WNeIVaq1Wc3k8fryEZMQPjBO7aTZEEBeiV9iPPW9w9YBLrxQ+mlkJUo9Sw8qKPLosqujzaZGNpu0wBW8owHoHML+eaevZWzWJkzLONSP8sTt6WchyHmvWkQIumT7sf+RtTBa0Ch9Pp9olSHsICeLDk7q3Qn6pgE1Mzkq1L/Sbmy/Hq8+ks27wWj4hwIyaqhw== 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=xsG6Hbr/NAPqVvvmE0+SDV53cSE9PF7qM6Jjoi3fZwk=; b=E6YKRpcSyXXfvcL3/suAtO3njujGbbhi5W3BFp51GUaBHM5e/bDCLctr7Ir0J7ycP770vB/xCRfpuSrKV7rn/3JcilnHRCMUDzrdk3RBV5/j6GU3dLbd0S4MbWlUvsv6fgNAATTTKwmVXFuTfdYTvXTpENlSRf/lpUVVZmApD7OTEnkcbsmlF6P+t+lyz+xSqQgEEc666rdRW7JPNOG6FIZLdIEYnIcT3SCY6AWmlRnRdVbr8IV7kkzdm/MN5t//l7zhJYyP35WTTJpZnDVnFINXh1y2/jCk54fgR1nxuhiIPS+0u+fUQ/L/TZwfILvSSw80u3/s9QBEXmR0vWdLrA== Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:be::15) by SY7P282MB4373.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:274::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.24; Mon, 26 May 2025 07:57:00 +0000 Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM ([fe80::dc32:4068:a067:92b8]) by MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM ([fe80::dc32:4068:a067:92b8%3]) with mapi id 15.20.8769.025; Mon, 26 May 2025 07:57:00 +0000 From: Yibo Fang <blueybf777@outlook.com> To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org> Thread-Topic: [FFmpeg-devel, v3, 0/2] avfilter: add PCM dumping between filters for audio debugging Thread-Index: AQHbzhPCX8Qk88yzh0S698qKwaBHyw== Date: Mon, 26 May 2025 07:57:00 +0000 Message-ID: <MEYP282MB18789A571C9E5354D966D4A08865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> References: <MEYP282MB18784DCA03D764E54E08FC8D88BB2@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> <AS8P250MB0744B9A650221901E60022778F842@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> <MEYP282MB1878FF228716762A576B6BD38865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> <MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> In-Reply-To: <MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> Accept-Language: en-GB, zh-CN, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MEYP282MB1878:EE_|SY7P282MB4373:EE_ x-ms-office365-filtering-correlation-id: c7fe1987-2bd9-469e-b715-08dd9c2ae55d x-microsoft-antispam: BCL:0; ARA:14566002|8062599006|8060799009|7092599006|9400799033|12050799012|41001999006|19110799006|15080799009|15030799003|461199028|26104999006|440099028|3412199025|12091999003|10035399007|56899033|102099032; x-microsoft-antispam-message-info: =?big5?B?Wkl3QTdPQWtlUzRDUllaQnVUR1VrMDRtVTZQMEU0VEQwclNHZXdsTVZvQ3BOVkwr?= =?big5?B?OHpTWmJudmQ5Skk2clYvYUxzd2p2ZmMvY1N4THlGRnpoVkRYbUE0WklXVVc3c0d0?= =?big5?B?R2hjMTltOWpWc05qZXNHdndsaTJqWHQ3dFozdzJJWTVnNi9jMk9uTFlNM2psd0FS?= =?big5?B?N0RySTVpWmNIRENPTGtSWjdTOHZacjY5RS95MmFEem41VFpJUWwzQTR5TGVUaGoy?= =?big5?B?QkEvaTkzWko5YWQvWXljVFhSY0pyaVU0eGNDS1YzeTU0QWp5b1B2OEhiTS93SFoz?= =?big5?B?c2NlLzlROWs5NS9TTU1saVAxRnFUNElmS2dyVElIVUpuYlkxak5DRUw2KzV6eG5Z?= =?big5?B?b3Fqbk9zN3ZvNnUraTJwL0l0YVdyL2RaM1lvdnpDTlBwcmJ2Y0kxM2lma3k3SkpT?= =?big5?B?YWJjNTJVOFUxWGp3Yy8zSFpIZHZpK1pSTkhyOGRvbktxNXhWUVlzWGI0cWlFZVNr?= =?big5?B?bmhqZkkwWDlEZE00Vld6UlFyanN3TERuTjAvSldGZDF6RFBRY3l4VnpIeUlvSDZW?= =?big5?B?VHN4a3E4MzNONUEyS0lWZU94MkJZSCtTTlBwbko2Wmw0T050VWVWaXdvUVVHTG53?= =?big5?B?dWdTakhaa0IzbktTWlVDb2ZMekFoZnpvV2ZVK0RLUWZvM1U2cHdia3hyR0lldkNl?= =?big5?B?d3gzQjFHY3ZENmVZOHcrSFBrY2JOOGRId01RbnRCdDdEM1JjWlZaQWhCaWU2MWNw?= =?big5?B?WmFEcEF2RGxqdmdqL2tic2s5clhuL0lmcFQzK3RsQ2FiUUFaZWZFMmxweW96NDFX?= =?big5?B?ajRQQ3ZZKzlQTm14eUo3bEtWSHZjZkVJTnFSQzFqYmw5OXlQZytKNnZCNTBudG11?= =?big5?B?V0h2R2NoTjZoL2I1QlJ1RVdZdFFWQlovQnh3bFpKY1crWERYRHJ5aGRydlo2azBD?= =?big5?B?VlNnbUtUd3QreTgyMWxyZ3kzY1lPRnFCOFRNOU93YUpGbmZTYUE2SkI4ckFQNGVj?= =?big5?B?RGpjdUtNRlFCWTM1NWNhcUs5MG05ZDZQRGcyYWFRWGlBVm5TNDBWWU13TWVHWFpk?= =?big5?B?dFBxZnlrdW5qYTNXSUVMNDlMeXdVQTFhQUtWSWRMRS9namRpd24rN3VyVElBTjE5?= =?big5?B?eHVmZkphdGNvVmJ2NFE1T2dXRTF3QUg5b3grNHpuNnR4TU81WS9aQlgrNE55T3FZ?= =?big5?B?QWFYbjdMVnNER0FMY0p0M09GU0crTGFldDBGRWdKVEFyV0xUNGczNitPbkg5NEp3?= =?big5?B?d2pjMUNQVXA1NFV6OUNON1hhaXZ2NEFZRFRtMUVBamFrOUQyTnl3djhwK3l5dXBU?= =?big5?B?anhSR0VFdEowazVGYlk3RUNwRmZ4eUd6eTB3bFdaTGpBT1ZLaFpCYTRIaXFCRkI1?= =?big5?B?SXpGTW9HOEdqN0hwWnQvU0lHcmtTMUp0MnZYN0MvZ0k0bmoyNENoeFVFN08vaFhT?= =?big5?B?a0E0NUdyMXBFczlNcWh2cis3VmRMRFdKeGRudTl3ZWhQekwyNFNVWnhRc0phME1V?= =?big5?B?c080TW16UEQ1UWVSQktESlNvcy9wVjdSSFRZRWhGMzhTK2p3SUdUU0xva3RIcCsr?= =?big5?B?RWVaSE8vZk4ydW0zbTJEZkxKd3FZdWxlRlY3YXI4VTBDWFhibThwd1M2b0phNm5U?= =?big5?B?cjdHb1RGVkJyRnFGcVJJSVFuMTRJalNXS1N5WENoMmY2b1hvZUYvaW5Da2ZUM0xR?= =?big5?B?dEhCZ3NGWHJ4NmZaeXAxdjJtNWRJenJ4RzE3THl2czdxTFBFWm5KeUoyQTFJaEpQ?= =?big5?B?Q0k5TW0rT29zSmJzNlFRTGpadE9RNWlPRmE4OXR6NURkN216TVR0QlZ6bFBmRWp5?= =?big5?B?cVI5anVyWjZ4TlhXYWI4SkszMUg0UzZJY2o1WFJ3eXVVNjkrZHc9PQ==?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?big5?B?VStQak8xeXNpQUVFbU9pZFM2WmhQbG5wYkwrU1hWOWZHNCtLb3ZFZitNOUhzdUdJ?= =?big5?B?S2pPTHJvTDBvbll4YUtPOWk4L0s4QzE3dFBlODhnbkJiRzFXdFJwcU1YSG1GNDZ4?= =?big5?B?TkdHZmlrcUpEVElkSkp3Z3BQN0RDQi95RU0yK09tZmV4Q1RpYVRKTFlIU0pJU1Ax?= =?big5?B?dWZOMDdWSmh2TU5rM2xaV1JNYkJTcG1QTHRGNGl6dUNSZ1N4cit3UlJzQmF4QkI4?= =?big5?B?czRvYW5McUxuRUVyQ1dudktMa2NWTWVZeEVJd1RyU2NqVGdrbTQzaDJRWFVxQ0xa?= =?big5?B?MEl6VFREUWlKTEljQnJWSXJyNVRTeG1HRDdEcEowaEl4Rkc3UjBuTVg1engyOWU4?= =?big5?B?MnVwdU9WRTRUdkt0aHQxQSs1SExLS2ViSDJZRnNxVStrM0VDN3ZReU9FOENqeXJy?= =?big5?B?cXRncHNNS2lDSUN2VjlxQXJmbEEwMDFHQTZHZ2htSjZnRisvRldPME8zekRONlVi?= =?big5?B?ekJ6U3RjOFVuMzY0QTZFMG5SVTQ2OEJvRjRuS3dPRkxTY29Za2gyTWNKQ1RHb3pl?= =?big5?B?cm9pQTR4OHlIWFNkZVlkSDkwQ2FQTlRnNXRXNDIvcTRYNmZwRDJ3cGhsb3FXOGls?= =?big5?B?SFRFYkpjcVR0WFc5dVVPMGpIT2Z3N0dUVmMvVm9HTUtVUW5HUWk2K3VlQmdGU3Ns?= =?big5?B?NVJEN2REWDQvRWdPVWFLQThlT05OVEpIdFNMT2JIMEwwZEpXRXBJQzhlUWVVZ3Fz?= =?big5?B?clpxUnhWQkdwSFJ3RWZadklxTUQvU1RvUDZzT0lwZUZDNG54d0NQTWVVa2o4N0R2?= =?big5?B?aVhwVVNZYWVoSFhxQUs2dERIcUlxdW80MnFUcjgvc24zWGtIZTNzVEpYOW0vaDBT?= =?big5?B?ME02TUxFZHJJQ3F1blpkUHljNDZ5dzQya2h1bVZOVWRack1mYkxjY3g5ZWgxVHpD?= =?big5?B?RWpMc1V3L0VTRzVjNUZNWUJ0OFoyUDhLTjJZcjdWMUx5V0haZkloSWFObzFYTFlw?= =?big5?B?VXRQdXpSS0lUZTlQYzUwVHF3YXNDMFY2UWtQUDUyV0twZytlT2Y4cStsZTVnK2hp?= =?big5?B?U2xjUnpLOWZZSFhVNTFkQmo5TzFaT1lvaGQ2Q1B4dENqZmIrSkFKY242UHpoVmM2?= =?big5?B?N3JmK2trZjU3d3lkVHZFRkhWa3BNTFhLQTlVajNlNnQwUFFUWXkvdVVzSzY5akFV?= =?big5?B?RW8rdy9UclFNTStCTysxZjlvQlBaYWlHVm5jV1RNWUNRQVpuR3hmWFphT1MzdkhR?= =?big5?B?eFlLWTFYODVyaFhCUmczYmFXVUlaYWNRWUYwdEZpU0txRFl4UTJDb2laSFd3MFNY?= =?big5?B?RTh3MVh6akxpeEdXNDY2QWNTRUh2Q1BpS2hOeHJ2UUhKNUpHMzh6T3dQQ2k1UFdi?= =?big5?B?WjNtdVhUTWVTU0lKQm9yT3lzMkxZckVzZVp4UG9kbCtVdDR6TU5Tb01yYUIvYUFw?= =?big5?B?aDVHdWN4MGtNSHE1UGpOSVk3UmIvS2YrbnNsVmNtQVpLS2RXRGlRR2dZL0tGZ0hR?= =?big5?B?N1Nad1hGaDRoeGlYc05LTzhSeGJLalVFcDFFSGhiUnd6SjVMS2E5VmhmS1RMOWhW?= =?big5?B?cGFuYVB3ZzVmc0FrUEthYW42c3EvSHVIZTFEMG5Eek5rSXFqdkkrR0NsS3g0YmMv?= =?big5?Q?vJr66sZ8HHw=3D?= MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: c7fe1987-2bd9-469e-b715-08dd9c2ae55d X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2025 07:57:00.6587 (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: SY7P282MB4373 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [FFmpeg-devel, v3, 0/2] avfilter: add PCM dumping between filters for audio debugging X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/MEYP282MB18789A571C9E5354D966D4A08865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> DQpGcm9tOiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+DQpTdWJqZWN0OiBbRkZt cGVnLWRldmVsLHYzLDAvMl0gYXZmaWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRl cnMgZm9yIGF1ZGlvIGRlYnVnZ2luZw0KRGF0ZTogV2VkLCAyMyBBcHIgMjAyNSAxMDo1NzowMCAr MDgwMA0KTWVzc2FnZS1JZDogPGNvdmVyLjAuMkBmZm1wZWc+DQoNClRoaXMgc2VyaWVzIGFkZHMg YSBkZWJ1Z2dpbmcgZmVhdHVyZSB0aGF0IGxldHMgZGV2ZWxvcGVycyBkdW1wIHJhdw0KUENNIGF1 ZGlvIGJldHdlZW4gZmlsdGVycy4gIFRoZSBkYXRhIGFyZSB3cml0dGVuIHRvIGZpbGVzIGluIGEg dXNlci0NCnNlbGVjdGVkIGRpcmVjdG9yeSB2aWEgdHdvIG5ldyBjb21tYW5kczoNCg0KICAgIGR1 bXBfcmF3X3N0YXJ0IGZpbGU9L3BhdGgvdG8vZGlyLw0KICAgIGR1bXBfcmF3X3N0b3ANCg0KUGxh bmFyIGF1ZGlvIGlzIGF1dG9tYXRpY2FsbHkgaW50ZXJsZWF2ZWQ7IG9ubHkgYXVkaW8gbGlua3Mg YXJlDQphZmZlY3RlZC4gIFBhdGNoIDEvMiBpbXBsZW1lbnRzIHRoZSBmZWF0dXJlLCBwYXRjaCAy LzIgZG9jdW1lbnRzIGl0Lg0KDQpSZWdhcmRzLA0KWWlibyBGYW5nDQoNCi0tLQ0KDQpGcm9tIDJk ZjU2ZTc0MjczZDQ3N2FlMjcwMDNlMDk4MTIyMDc0OWE2YjU4Y2YgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxDQpGcm9tOiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+DQpEYXRlOiBX ZWQsIDIzIEFwciAyMDI1IDEwOjU4OjU1ICswODAwDQpTdWJqZWN0OiBbUEFUQ0ggMS8yXSBhdmZp bHRlcjogYWRkIFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8NCiBkZWJ1Z2dp bmcNCg0KVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFBDTSBkdW1waW5nIHN1cHBvcnQgYmV0d2VlbiBB VkZpbHRlciBsaW5rcywNCmludGVuZGVkIGZvciBhdWRpbyBkZWJ1Z2dpbmcgYW5kIGZpbHRlci1n cmFwaCBpbnNwZWN0aW9uLg0KDQpUd28gZmlsdGVyIGNvbW1hbmRzIGFyZSBhZGRlZDoNCg0KICAg IGR1bXBfcmF3X3N0YXJ0IGZpbGU9L3BhdGgvdG8vb3V0cHV0L2Rpci8NCiAgICBkdW1wX3Jhd19z dG9wDQoNCldoZW4gZHVtcGluZyBpcyBlbmFibGVkLCBhdWRpbyBsZWF2aW5nIHRoZSBzZWxlY3Rl ZCBmaWx0ZXIgb3V0cHV0IGlzDQp3cml0dGVuIHRvIGFuIGF1dG9tYXRpY2FsbHkgbmFtZWQgZmls ZToNCg0KICAgIDxzcmNfZmlsdGVyPi08ZHN0X2ZpbHRlcj4ucGNtDQoNClBsYW5hciBmb3JtYXRz IGFyZSBjb252ZXJ0ZWQgdG8gcGFja2VkLiAgRmlsZSBkZXNjcmlwdG9ycyBhcmUgb3BlbmVkDQpv biBkZW1hbmQgYW5kIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiAgV29ya3Mgb25seSBvbiBhdWRpbyBs aW5rcy4NCg0KRXhhbXBsZSAoQyBBUEkpOg0KICAgIGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChm aWx0ZXIsICJkdW1wX3Jhd19zdGFydCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm aWxlPS90bXAvIiwgTlVMTCwgMCwgMCk7DQoNClNpZ25lZC1vZmYtYnk6IFlpYm8gRmFuZyA8Ymx1 ZXliZjc3N0BvdXRsb29rLmNvbT4NCi0tLQ0KIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgfCAxNDQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBsaWJhdmZpbHRlci9h dmZpbHRlci5oIHwgICA1ICsrDQogMiBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKQ0K DQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYyBiL2xpYmF2ZmlsdGVyL2F2Zmls dGVyLmMNCmluZGV4IDY0YzEwNzVjNDAuLmI3MDM0NTY5ZGIgMTAwNjQ0DQotLS0gYS9saWJhdmZp bHRlci9hdmZpbHRlci5jDQorKysgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jDQpAQCAtMTksNiAr MTksOSBAQA0KICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0ENCiAgKi8NCg0KKyNpbmNsdWRlIDxmY250 bC5oPg0KKyNpbmNsdWRlIDx1bmlzdGQuaD4NCisNCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNz ZXJ0LmgiDQogI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIg0KICNpbmNsdWRlICJsaWJh dnV0aWwvYnByaW50LmgiDQpAQA0KICAgICByZXR1cm4gMDsNCiB9DQoNCisvKiAtLS0tLS0tLS0t IFBDTSBkdW1wIGhlbHBlcnMgLS0tLS0tLS0tLSAqLw0KKw0KK3N0YXRpYyBhdl9jb2xkIHZvaWQg bGlua191bmluaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KK3sNCisgICAgaWYgKGxp bmstPmR1bXBfcGNtX2Zkcykgew0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxp bmstPm5iX2R1bXBfcGNtX2ZkczsgaSsrKQ0KKyAgICAgICAgICAgIGlmIChsaW5rLT5kdW1wX3Bj bV9mZHNbaV0gPj0gMCkNCisgICAgICAgICAgICAgICAgY2xvc2UobGluay0+ZHVtcF9wY21fZmRz W2ldKTsNCisgICAgICAgIGF2X2ZyZWVwKCZsaW5rLT5kdW1wX3BjbV9mZHMpOw0KKyAgICAgICAg bGluay0+bmJfZHVtcF9wY21fZmRzID0gMDsNCisgICAgfQ0KKyAgICBhdl9mcmVlcCgmbGluay0+ ZHVtcF9wY21fcGF0aCk7DQorICAgIGxpbmstPmR1bXBfcGNtID0gMDsNCit9DQorDQorc3RhdGlj IGF2X2NvbGQgaW50IGxpbmtfaW5pdF9kdW1wX3BjbShBVkZpbHRlckxpbmsgKmxpbmspDQorew0K KyAgICAvKiBidWlsZCBmdWxsIHBhdGggIjxkaXI+LzxzcmM+LTxkc3Q+LnBjbSIgKi8NCisgICAg Y29uc3QgY2hhciAqZGlyID0gbGluay0+ZHVtcF9wY21fcGF0aDsNCisgICAgY29uc3QgY2hhciAq c2VwID0gZGlyW3N0cmxlbihkaXIpIC0gMV0gPT0gJy8nID8gIiIgOiAiLyI7DQorICAgIGNoYXIg cGF0aFs0MDk2XTsNCisgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMlcyUuMTZz LSUuOHMucGNtIiwNCisgICAgICAgICAgICAgZGlyLCBzZXAsIGxpbmstPnNyYy0+bmFtZSwgbGlu ay0+ZHN0LT5uYW1lKTsNCisNCisgICAgbGluay0+bmJfZHVtcF9wY21fZmRzID0gMTsNCisgICAg bGluay0+ZHVtcF9wY21fZmRzID0gYXZfbWFsbG9jKHNpemVvZihpbnQpKTsNCisgICAgaWYgKCFs aW5rLT5kdW1wX3BjbV9mZHMpDQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKw0K KyAgICBpbnQgZmQgPSBvcGVuKHBhdGgsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMgfCBP X0VYQ0wsIDA2NDQpOw0KKyAgICBpZiAoZmQgPCAwKSB7DQorICAgICAgICBsaW5rX3VuaW5pdF9k dW1wX3BjbShsaW5rKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKGVycm5vKTsNCisgICAgfQ0K KyAgICBsaW5rLT5kdW1wX3BjbV9mZHNbMF0gPSBmZDsNCisgICAgYXZfbG9nKGxpbmstPmRzdCwg QVZfTE9HX0lORk8sICJQQ00gZHVtcCBmaWxlOiAlc1xuIiwgcGF0aCk7DQorICAgIHJldHVybiAw Ow0KK30NCisNCitzdGF0aWMgaW50IGZpbHRlcl9zZXRfZHVtcF9wY20oQVZGaWx0ZXJDb250ZXh0 ICpmLCBjb25zdCBjaGFyICphcmcsIGludCBzZXQpDQorew0KKyAgICBjb25zdCBjaGFyICpwcmVm aXggPSAiZmlsZT0iOw0KKyAgICBpZiAoIWFyZyB8fCBhdl9zdHJuY2FzZWNtcChhcmcsIHByZWZp eCwgc3RybGVuKHByZWZpeCkpKSB7DQorICAgICAgICBhdl9sb2coZiwgQVZfTE9HX0VSUk9SLA0K KyAgICAgICAgICAgICAgICJkdW1wX3Jhd18qIGV4cGVjdHMgYXJndW1lbnQgZmlsZT0vZGlyL1xu Iik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KKyAgICB9DQorICAgIGNvbnN0 IGNoYXIgKmRpciA9IGFyZyArIHN0cmxlbihwcmVmaXgpOw0KKw0KKyAgICBmb3IgKGludCBpID0g MDsgaSA8IGYtPm5iX291dHB1dHM7IGkrKykgew0KKyAgICAgICAgQVZGaWx0ZXJMaW5rICpsID0g Zi0+b3V0cHV0c1tpXTsNCisgICAgICAgIGlmIChsLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJ TykNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIGlmIChzZXQpIHsNCisgICAgICAg ICAgICBhdl9mcmVlcCgmbC0+ZHVtcF9wY21fcGF0aCk7DQorICAgICAgICAgICAgbC0+ZHVtcF9w Y21fcGF0aCA9IGF2X3N0cmR1cChkaXIpOw0KKyAgICAgICAgICAgIGlmICghbC0+ZHVtcF9wY21f cGF0aCkNCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgICAg ICAgICBsLT5kdW1wX3BjbSA9IDE7DQorICAgICAgICB9IGVsc2UNCisgICAgICAgICAgICBsaW5r X3VuaW5pdF9kdW1wX3BjbShsKTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorDQorLyog d3JpdGUgb25lIGZyYW1lICovDQorc3RhdGljIGludCBsaW5rX2R1bXBfZnJhbWUoQVZGaWx0ZXJM aW5rICpsaW5rLCBBVkZyYW1lICpmcmFtZSkNCit7DQorICAgIGludCByZXQ7DQorICAgIGlmICgh bGluay0+ZHVtcF9wY21fZmRzICYmDQorICAgICAgICAocmV0ID0gbGlua19pbml0X2R1bXBfcGNt KGxpbmspKSA8IDApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICBjb25zdCBpbnQgY2gg ICAgID0gZnJhbWUtPmNoX2xheW91dC5uYl9jaGFubmVsczsNCisgICAgY29uc3QgaW50IGJwcyAg ICA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKGZyYW1lLT5mb3JtYXQpOw0KKyAgICBjb25zdCBp bnQgbnMgICAgID0gZnJhbWUtPm5iX3NhbXBsZXM7DQorICAgIGNvbnN0IGludCB0b3RsZW4gPSBj aCAqIG5zICogYnBzOw0KKw0KKyAgICAvKiBpbnRlcmxlYXZlIHBsYW5hciB0byBwYWNrZWQgaWYg bmVjZXNzYXJ5ICovDQorICAgIGlmIChhdl9zYW1wbGVfZm10X2lzX3BsYW5hcihmcmFtZS0+Zm9y bWF0KSkgew0KKyAgICAgICAgdWludDhfdCAqYnVmID0gYXZfbWFsbG9jKHRvdGxlbik7DQorICAg ICAgICBpZiAoIWJ1ZikNCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKyAg ICAgICAgZm9yIChpbnQgcyA9IDA7IHMgPCBuczsgcysrKQ0KKyAgICAgICAgICAgIGZvciAoaW50 IGMgPSAwOyBjIDwgY2g7IGMrKykNCisgICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZiArIChzKmNo ICsgYykqYnBzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QqKWZyYW1lLT5leHRl bmRlZF9kYXRhW2NdICsgcypicHMsDQorICAgICAgICAgICAgICAgICAgICAgICBicHMpOw0KKyAg ICAgICAgcmV0ID0gd3JpdGUobGluay0+ZHVtcF9wY21fZmRzWzBdLCBidWYsIHRvdGxlbik7DQor ICAgICAgICBhdl9mcmVlKGJ1Zik7DQorICAgIH0gZWxzZQ0KKyAgICAgICAgcmV0ID0gd3JpdGUo bGluay0+ZHVtcF9wY21fZmRzWzBdLCBmcmFtZS0+ZGF0YVswXSwgdG90bGVuKTsNCisNCisgICAg aWYgKHJldCA8IDApIHsNCisgICAgICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19FUlJPUiwg IlBDTSBkdW1wIHdyaXRlIGZhaWxlZDogJXNcbiIsDQorICAgICAgICAgICAgICAgYXZfZXJyMnN0 cihyZXQpKTsNCisgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmspOw0KKyAgICAgICAg cmV0dXJuIHJldDsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorDQogc3RhdGljIHZvaWQg bGlua19mcmVlKEFWRmlsdGVyTGluayAqKmxpbmspDQogew0KQEANCg0KIGludCBhdmZpbHRlcl9w cm9jZXNzX2NvbW1hbmQoQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXIsIGNvbnN0IGNoYXIgKmNtZCwN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFyZywgY2hhciAqcmVz LCBpbnQgcmVzX2xlbiwgaW50IGZsYWdzKQ0KIHsNCkBADQotICAgICAgICBpZiAocmVzID09IGxv Y2FsX3JlcykNCi0gICAgICAgICAgICBhdl9sb2coZmlsdGVyLCBBVl9MT0dfSU5GTywgIiVzIiwg cmVzKTsNCi0gICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMp DQorICAgICAgICAgICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICIlcyIsIHJlcyk7DQor ICAgICAgICByZXR1cm4gMDsNCisgICAgfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImR1bXBfcmF3 X3N0YXJ0IikpIHsNCisgICAgICAgIHJldHVybiBmaWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwg YXJnLCAxKTsNCisgICAgfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImR1bXBfcmF3X3N0b3AiKSkg ew0KKyAgICAgICAgcmV0dXJuIGZpbHRlcl9zZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDApOw0K ICAgICB9IGVsc2UgaWYoIXN0cmNtcChjbWQsICJlbmFibGUiKSkgew0KICAgICAgICAgcmV0dXJu IHNldF9lbmFibGVfZXhwcihmZmZpbHRlcmN0eChmaWx0ZXIpLCBhcmcpOw0KQEANCiAgICAgLyog Li4uIGV4aXN0aW5nIGNvZGUgLi4uICovDQoNCisgICAgaWYgKGxpbmstPmR1bXBfcGNtICYmIGxp bmstPnR5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7DQorICAgICAgICByZXQgPSBsaW5rX2R1 bXBfZnJhbWUobGluaywgZnJhbWUpOw0KKyAgICAgICAgaWYgKHJldCA8IDApDQorICAgICAgICAg ICAgYXZfbG9nKGxpbmstPmRzdCwgQVZfTE9HX0VSUk9SLA0KKyAgICAgICAgICAgICAgICAgICAi UENNIGR1bXAgZmFpbGVkIHdpdGggJXNcbiIsIGF2X2VycjJzdHIocmV0KSk7DQorICAgIH0NCisN CiAgICAgbGktPmZyYW1lX2Jsb2NrZWRfaW4gPSBsaS0+ZnJhbWVfd2FudGVkX291dCA9IDA7DQpA QA0KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggYi9saWJhdmZpbHRlci9hdmZp bHRlci5oDQppbmRleCBhODlkM2NmNjU4Li4wZDRjOTFiYjZiIDEwMDY0NA0KLS0tIGEvbGliYXZm aWx0ZXIvYXZmaWx0ZXIuaA0KKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KQEANCiAgICAg QVZDaGFubmVsTGF5b3V0IGNoX2xheW91dDsgIC8vLzwgY2hhbm5lbCBsYXlvdXQgb2YgY3VycmVu dCBidWZmZXINCg0KKyAgICBpbnQgICAgICBkdW1wX3BjbTsgICAgICAgICAgLy8vPCBlbmFibGUg ZHVtcGluZyBvbiB0aGlzIGxpbmsNCisgICAgaW50ICAgICAqZHVtcF9wY21fZmRzOyAgICAgIC8v Lzwgb25lIEZEIHBlciBsaW5rIChjdXJyZW50bHkgMSkNCisgICAgdW5zaWduZWQgbmJfZHVtcF9w Y21fZmRzOyAgIC8vLzwgbnVtYmVyIG9mIEZEcw0KKyAgICBjaGFyICAgICpkdW1wX3BjbV9wYXRo OyAgICAgLy8vPCB1c2VyLXN1cHBsaWVkIGRpcmVjdG9yeQ0KKw0KICAgICAvKioNCiAgICAgICog RGVmaW5lIHRoZSB0aW1lIGJhc2UgdXNlZCBieSB0aGUgUFRTIG9mIHRoZSBmcmFtZXMvc2FtcGxl cw0KICAgICAgKiB3aGljaCB3aWxsIHBhc3MgdGhyb3VnaCB0aGlzIGxpbmsuDQotLQ0KMi4zNC4x DQoNCi0tLQ0KDQpGcm9tIDhjZjdiZmE1MmExMGJlODdlMGYxN2I5NzgzMTU5YjBlODNmOTYwZjcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxDQpGcm9tOiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0 bG9vay5jb20+DQpEYXRlOiBXZWQsIDIzIEFwciAyMDI1IDEyOjM4OjAwICswODAwDQpTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBkb2MvZmlsdGVyczogZG9jdW1lbnQgZHVtcF9yYXdfc3RhcnQgYW5kIGR1 bXBfcmF3X3N0b3ANCiBjb21tYW5kcw0KDQpTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5 YmY3NzdAb3V0bG9vay5jb20+DQotLS0NCiBkb2MvZmlsdGVycy50ZXhpIHwgNDUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMSBmaWxlIGNoYW5nZWQsIDQ1 IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmls dGVycy50ZXhpDQppbmRleCA0NWIzZTAzZTVlLi42YTJkMjNkZjNmIDEwMDY0NA0KLS0tIGEvZG9j L2ZpbHRlcnMudGV4aQ0KKysrIGIvZG9jL2ZpbHRlcnMudGV4aQ0KQEANCiBAc2VjdGlvbiBhZHVt cHBjbQ0KDQogRHVtcCByYXcgUENNIGF1ZGlvIGRhdGEgZm9yIGRlYnVnZ2luZyBiZXR3ZWVuIGZp bHRlcnMuDQoNCiBUaGlzIGZpbHRlciBhbGxvd3Mgd3JpdGluZyByYXcgYXVkaW8gZGF0YSB0byBk aXNrIGZyb20gYW55IGF1ZGlvIGxpbmsNCiBpbiB0aGUgZmlsdGVyZ3JhcGggZm9yIGluc3BlY3Rp b24uIEl0IHN1cHBvcnRzIHBsYW5hciBhbmQgcGFja2VkIGZvcm1hdHMsDQogYXV0b21hdGljYWxs eSBpbnRlcmxlYXZpbmcgcGxhbmFyIGRhdGEgZm9yIHdyaXRpbmcuDQoNCiBAc3Vic2VjdGlvbiBT eW50YXgNCg0KIEBleGFtcGxlDQogZHVtcF9yYXdfc3RhcnQ9ZmlsZT0veW91ci9kdW1wL2RpcmVj dG9yeS8NCiBAZW5kIGV4YW1wbGUNCg0KIEBzdWJzZWN0aW9uIFVzYWdlDQoNCiBUbyBlbmFibGUg ZHVtcGluZywgdXNlIHRoZSBAY29kZXtkdW1wX3Jhd19zdGFydH0gY29tbWFuZDoNCg0KIEBleGFt cGxlDQogZmZtcGVnIC1pIGlucHV0LndhdiAtYWYgInZvbHVtZSxhc2VuZGNtZD0nMC4wIGR1bXBf cmF3X3N0YXJ0IGZpbGU9L3RtcC9wY20vJyIgLWYgbnVsbCAtDQogQGVuZCBleGFtcGxlDQoNCiBU byBzdG9wIGR1bXBpbmc6DQoNCiBAZXhhbXBsZQ0KIGFzZW5kY21kPSc1LjAgZHVtcF9yYXdfc3Rv cCcNCiBAZW5kIGV4YW1wbGUNCg0KIEBzdWJzZWN0aW9uIE9wdGlvbnMNCg0KIEB0YWJsZSBAb3B0 aW9uDQogQGl0ZW0gZmlsZQ0KIFNwZWNpZnkgYSBkaXJlY3RvcnkgcGF0aCAobm90IGEgZmlsZW5h bWUpIHdoZXJlIFBDTSBkYXRhIHdpbGwgYmUgZHVtcGVkLg0KIFRoZSBkdW1wZWQgZmlsZSBpcyBu YW1lZCBAY29kZXs8c3JjPi08ZHN0Pi5wY219IGFuZCB3aWxsIGJlIG92ZXJ3cml0dGVuIGlmIGl0 IGFscmVhZHkgZXhpc3RzLg0KIEBlbmQgdGFibGUNCi0tDQoyLjM0LjENCg0KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18NCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29r LmNvbT4NClNlbnQ6IDI2IE1heSAyMDI1IDE1OjQ5DQpUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPg0KU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxd IFtQQVRDSF0gYXZmaWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1 ZGlvIGRlYnVnZ2luZw0KDQpbRkZtcGVnLWRldmVsLHYyLDAvMl0gYXZmaWx0ZXI6IGFkZCBQQ00g ZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvIGRlYnVnZ2luZw0KRnJvbTogWWlibyBG YW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KU3ViamVjdDogW0ZGbXBlZy1kZXZlbCx2Miww LzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBk ZWJ1Z2dpbmcNCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTc6MDAgKzA4MDANCk1lc3NhZ2Ut SWQ6IDxjb3Zlci4wLjJAZmZtcGVnPg0KDQpUaGlzIHNlcmllcyBhZGRzIGEgZGVidWdnaW5nIGZl YXR1cmUgdGhhdCBsZXRzIGRldmVsb3BlcnMgZHVtcCByYXcNClBDTSBhdWRpbyBiZXR3ZWVuIGZp bHRlcnMuICBUaGUgZGF0YSBhcmUgd3JpdHRlbiB0byBmaWxlcyBpbiBhIHVzZXItDQpzZWxlY3Rl ZCBkaXJlY3RvcnkgdmlhIHR3byBuZXcgY29tbWFuZHM6DQoNCiAgICBkdW1wX3Jhd19zdGFydCBm aWxlPS9wYXRoL3RvL2Rpci8NCiAgICBkdW1wX3Jhd19zdG9wDQoNClBsYW5hciBhdWRpbyBpcyBh dXRvbWF0aWNhbGx5IGludGVybGVhdmVkOyBvbmx5IGF1ZGlvIGxpbmtzIGFyZQ0KYWZmZWN0ZWQu ICBQYXRjaCAxLzIgaW1wbGVtZW50cyB0aGUgZmVhdHVyZSwgcGF0Y2ggMi8yIGRvY3VtZW50cyBp dC4NCg0KUmVnYXJkcywNCllpYm8gRmFuZw0KDQotLS0NCg0KRnJvbSAyZGY1NmU3NDI3M2Q0Nzdh ZTI3MDAzZTA5ODEyMjA3NDlhNmI1OGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTog WWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0ZTogV2VkLCAyMyBBcHIgMjAy NSAxMDo1ODo1NSArMDgwMA0KU3ViamVjdDogW1BBVENIIDEvMl0gYXZmaWx0ZXI6IGFkZCBQQ00g ZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvDQogZGVidWdnaW5nDQoNClRoaXMgcGF0 Y2ggaW50cm9kdWNlcyBQQ00gZHVtcGluZyBzdXBwb3J0IGJldHdlZW4gQVZGaWx0ZXIgbGlua3Ms DQppbnRlbmRlZCBmb3IgYXVkaW8gZGVidWdnaW5nIGFuZCBmaWx0ZXItZ3JhcGggaW5zcGVjdGlv bi4NCg0KVHdvIGZpbHRlciBjb21tYW5kcyBhcmUgYWRkZWQ6DQoNCiAgICBkdW1wX3Jhd19zdGFy dCBmaWxlPS9wYXRoL3RvL291dHB1dC9kaXIvDQogICAgZHVtcF9yYXdfc3RvcA0KDQpXaGVuIGR1 bXBpbmcgaXMgZW5hYmxlZCwgYXVkaW8gbGVhdmluZyB0aGUgc2VsZWN0ZWQgZmlsdGVyIG91dHB1 dCBpcw0Kd3JpdHRlbiB0byBhbiBhdXRvbWF0aWNhbGx5IG5hbWVkIGZpbGU6DQoNCiAgICA8c3Jj X2ZpbHRlcj4tPGRzdF9maWx0ZXI+LnBjbQ0KDQpQbGFuYXIgZm9ybWF0cyBhcmUgY29udmVydGVk IHRvIHBhY2tlZC4gIEZpbGUgZGVzY3JpcHRvcnMgYXJlIG9wZW5lZA0Kb24gZGVtYW5kIGFuZCBj bG9zZWQgYXV0b21hdGljYWxseS4gIFdvcmtzIG9ubHkgb24gYXVkaW8gbGlua3MuDQoNCkV4YW1w bGUgKEMgQVBJKToNCiAgICBhdmZpbHRlcl9wcm9jZXNzX2NvbW1hbmQoZmlsdGVyLCAiZHVtcF9y YXdfc3RhcnQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0vdG1wLyIsIE5V TEwsIDAsIDApOw0KDQpTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9v ay5jb20+DQotLS0NCiBsaWJhdmZpbHRlci9hdmZpbHRlci5jIHwgMTQ0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCB8ICAg NSArKw0KIDIgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jDQppbmRleCA2 NGMxMDc1YzQwLi5iNzAzNDU2OWRiIDEwMDY0NA0KLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIu Yw0KKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KQEAgLTE5LDYgKzE5LDkgQEANCiAgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLTEzMDEgVVNBDQogICovDQoNCisjaW5jbHVkZSA8ZmNudGwuaD4NCisjaW5jbHVk ZSA8dW5pc3RkLmg+DQorDQogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KICNpbmNs dWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2JwcmludC5o Ig0KQEANCiAgICAgcmV0dXJuIDA7DQogfQ0KDQorLyogLS0tLS0tLS0tLSBQQ00gZHVtcCBoZWxw ZXJzIC0tLS0tLS0tLS0gKi8NCisNCitzdGF0aWMgYXZfY29sZCB2b2lkIGxpbmtfdW5pbml0X2R1 bXBfcGNtKEFWRmlsdGVyTGluayAqbGluaykNCit7DQorICAgIGlmIChsaW5rLT5kdW1wX3BjbV9m ZHMpIHsNCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5rLT5uYl9kdW1wX3Bj bV9mZHM7IGkrKykNCisgICAgICAgICAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzW2ldID49IDAp DQorICAgICAgICAgICAgICAgIGNsb3NlKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSk7DQorICAgICAg ICBhdl9mcmVlcCgmbGluay0+ZHVtcF9wY21fZmRzKTsNCisgICAgICAgIGxpbmstPm5iX2R1bXBf cGNtX2ZkcyA9IDA7DQorICAgIH0NCisgICAgYXZfZnJlZXAoJmxpbmstPmR1bXBfcGNtX3BhdGgp Ow0KKyAgICBsaW5rLT5kdW1wX3BjbSA9IDA7DQorfQ0KKw0KK3N0YXRpYyBhdl9jb2xkIGludCBs aW5rX2luaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KK3sNCisgICAgLyogYnVpbGQg ZnVsbCBwYXRoICI8ZGlyPi88c3JjPi08ZHN0Pi5wY20iICovDQorICAgIGNvbnN0IGNoYXIgKmRp ciA9IGxpbmstPmR1bXBfcGNtX3BhdGg7DQorICAgIGNvbnN0IGNoYXIgKnNlcCA9IGRpcltzdHJs ZW4oZGlyKSAtIDFdID09ICcvJyA/ICIiIDogIi8iOw0KKyAgICBjaGFyIHBhdGhbNDA5Nl07DQor ICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzJXMlLjE2cy0lLjhzLnBjbSIsDQor ICAgICAgICAgICAgIGRpciwgc2VwLCBsaW5rLT5zcmMtPm5hbWUsIGxpbmstPmRzdC0+bmFtZSk7 DQorDQorICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IDE7DQorICAgIGxpbmstPmR1bXBfcGNt X2ZkcyA9IGF2X21hbGxvYyhzaXplb2YoaW50KSk7DQorICAgIGlmICghbGluay0+ZHVtcF9wY21f ZmRzKQ0KKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisNCisgICAgaW50IGZkID0g b3BlbihwYXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19FWENMLCAwNjQ0KTsN CisgICAgaWYgKGZkIDwgMCkgew0KKyAgICAgICAgbGlua191bmluaXRfZHVtcF9wY20obGluayk7 DQorICAgICAgICByZXR1cm4gQVZFUlJPUihlcnJubyk7DQorICAgIH0NCisgICAgbGluay0+ZHVt cF9wY21fZmRzWzBdID0gZmQ7DQorICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19JTkZPLCAi UENNIGR1bXAgZmlsZTogJXNcbiIsIHBhdGgpOw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBmaWx0ZXJfc2V0X2R1bXBfcGNtKEFWRmlsdGVyQ29udGV4dCAqZiwgY29uc3QgY2hh ciAqYXJnLCBpbnQgc2V0KQ0KK3sNCisgICAgY29uc3QgY2hhciAqcHJlZml4ID0gImZpbGU9IjsN CisgICAgaWYgKCFhcmcgfHwgYXZfc3RybmNhc2VjbXAoYXJnLCBwcmVmaXgsIHN0cmxlbihwcmVm aXgpKSkgew0KKyAgICAgICAgYXZfbG9nKGYsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAg ICAiZHVtcF9yYXdfKiBleHBlY3RzIGFyZ3VtZW50IGZpbGU9L2Rpci9cbiIpOw0KKyAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBh cmcgKyBzdHJsZW4ocHJlZml4KTsNCisNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmLT5uYl9v dXRwdXRzOyBpKyspIHsNCisgICAgICAgIEFWRmlsdGVyTGluayAqbCA9IGYtPm91dHB1dHNbaV07 DQorICAgICAgICBpZiAobC0+dHlwZSAhPSBBVk1FRElBX1RZUEVfQVVESU8pDQorICAgICAgICAg ICAgY29udGludWU7DQorICAgICAgICBpZiAoc2V0KSB7DQorICAgICAgICAgICAgYXZfZnJlZXAo JmwtPmR1bXBfcGNtX3BhdGgpOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtX3BhdGggPSBhdl9z dHJkdXAoZGlyKTsNCisgICAgICAgICAgICBpZiAoIWwtPmR1bXBfcGNtX3BhdGgpDQorICAgICAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICAgICAgbC0+ZHVtcF9w Y20gPSAxOw0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgbGlua191bmluaXRfZHVtcF9w Y20obCk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qIHdyaXRlIG9uZSBmcmFt ZSAqLw0KK3N0YXRpYyBpbnQgbGlua19kdW1wX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZG cmFtZSAqZnJhbWUpDQorew0KKyAgICBpbnQgcmV0Ow0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNt X2ZkcyAmJg0KKyAgICAgICAgKHJldCA9IGxpbmtfaW5pdF9kdW1wX3BjbShsaW5rKSkgPCAwKQ0K KyAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgY29uc3QgaW50IGNoICAgICA9IGZyYW1lLT5j aF9sYXlvdXQubmJfY2hhbm5lbHM7DQorICAgIGNvbnN0IGludCBicHMgICAgPSBhdl9nZXRfYnl0 ZXNfcGVyX3NhbXBsZShmcmFtZS0+Zm9ybWF0KTsNCisgICAgY29uc3QgaW50IG5zICAgICA9IGZy YW1lLT5uYl9zYW1wbGVzOw0KKyAgICBjb25zdCBpbnQgdG90bGVuID0gY2ggKiBucyAqIGJwczsN CisNCisgICAgLyogaW50ZXJsZWF2ZSBwbGFuYXIgdG8gcGFja2VkIGlmIG5lY2Vzc2FyeSAqLw0K KyAgICBpZiAoYXZfc2FtcGxlX2ZtdF9pc19wbGFuYXIoZnJhbWUtPmZvcm1hdCkpIHsNCisgICAg ICAgIHVpbnQ4X3QgKmJ1ZiA9IGF2X21hbGxvYyh0b3RsZW4pOw0KKyAgICAgICAgaWYgKCFidWYp DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgICAgIGZvciAoaW50 IHMgPSAwOyBzIDwgbnM7IHMrKykNCisgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNo OyBjKyspDQorICAgICAgICAgICAgICAgIG1lbWNweShidWYgKyAocypjaCArIGMpKmJwcywNCisg ICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90KilmcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjXSAr IHMqYnBzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgYnBzKTsNCisgICAgICAgIHJldCA9IHdy aXRlKGxpbmstPmR1bXBfcGNtX2Zkc1swXSwgYnVmLCB0b3RsZW4pOw0KKyAgICAgICAgYXZfZnJl ZShidWYpOw0KKyAgICB9IGVsc2UNCisgICAgICAgIHJldCA9IHdyaXRlKGxpbmstPmR1bXBfcGNt X2Zkc1swXSwgZnJhbWUtPmRhdGFbMF0sIHRvdGxlbik7DQorDQorICAgIGlmIChyZXQgPCAwKSB7 DQorICAgICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJST1IsICJQQ00gZHVtcCB3cml0 ZSBmYWlsZWQ6ICVzXG4iLA0KKyAgICAgICAgICAgICAgIGF2X2VycjJzdHIocmV0KSk7DQorICAg ICAgICBsaW5rX3VuaW5pdF9kdW1wX3BjbShsaW5rKTsNCisgICAgICAgIHJldHVybiByZXQ7DQor ICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIGxpbmtfZnJlZShBVkZp bHRlckxpbmsgKipsaW5rKQ0KIHsNCkBADQoNCiBpbnQgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5k KEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyLCBjb25zdCBjaGFyICpjbWQsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphcmcsIGNoYXIgKnJlcywgaW50IHJlc19sZW4s IGludCBmbGFncykNCiB7DQpAQA0KLSAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMpDQotICAg ICAgICAgICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICIlcyIsIHJlcyk7DQotICAgICAg ICByZXR1cm4gMDsNCisgICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KKyAgICAgICAgICAg IGF2X2xvZyhmaWx0ZXIsIEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KKyAgICAgICAgcmV0dXJu IDA7DQorICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdGFydCIpKSB7DQor ICAgICAgICByZXR1cm4gZmlsdGVyX3NldF9kdW1wX3BjbShmaWx0ZXIsIGFyZywgMSk7DQorICAg IH0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdG9wIikpIHsNCisgICAgICAgIHJl dHVybiBmaWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwgYXJnLCAwKTsNCiAgICAgfSBlbHNlIGlm KCFzdHJjbXAoY21kLCAiZW5hYmxlIikpIHsNCiAgICAgICAgIHJldHVybiBzZXRfZW5hYmxlX2V4 cHIoZmZmaWx0ZXJjdHgoZmlsdGVyKSwgYXJnKTsNCkBADQogICAgIC8qIC4uLiBleGlzdGluZyBj b2RlIC4uLiAqLw0KDQorICAgIGlmIChsaW5rLT5kdW1wX3BjbSAmJiBsaW5rLT50eXBlID09IEFW TUVESUFfVFlQRV9BVURJTykgew0KKyAgICAgICAgcmV0ID0gbGlua19kdW1wX2ZyYW1lKGxpbmss IGZyYW1lKTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgIGF2X2xvZyhsaW5r LT5kc3QsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAgICAgIlBDTSBkdW1wIGZhaWxl ZCB3aXRoICVzXG4iLCBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICB9DQorDQogICAgIGxpLT5mcmFt ZV9ibG9ja2VkX2luID0gbGktPmZyYW1lX3dhbnRlZF9vdXQgPSAwOw0KQEANCmRpZmYgLS1naXQg YS9saWJhdmZpbHRlci9hdmZpbHRlci5oIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KaW5kZXgg YTg5ZDNjZjY1OC4uMGQ0YzkxYmI2YiAxMDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVy LmgNCisrKyBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCkBADQogICAgIEFWQ2hhbm5lbExheW91 dCBjaF9sYXlvdXQ7ICAvLy88IGNoYW5uZWwgbGF5b3V0IG9mIGN1cnJlbnQgYnVmZmVyDQoNCisg ICAgaW50ICAgICAgZHVtcF9wY207ICAgICAgICAgIC8vLzwgZW5hYmxlIGR1bXBpbmcgb24gdGhp cyBsaW5rDQorICAgIGludCAgICAgKmR1bXBfcGNtX2ZkczsgICAgICAvLy88IG9uZSBGRCBwZXIg bGluayAoY3VycmVudGx5IDEpDQorICAgIHVuc2lnbmVkIG5iX2R1bXBfcGNtX2ZkczsgICAvLy88 IG51bWJlciBvZiBGRHMNCisgICAgY2hhciAgICAqZHVtcF9wY21fcGF0aDsgICAgIC8vLzwgdXNl ci1zdXBwbGllZCBkaXJlY3RvcnkNCisNCiAgICAgLyoqDQogICAgICAqIERlZmluZSB0aGUgdGlt ZSBiYXNlIHVzZWQgYnkgdGhlIFBUUyBvZiB0aGUgZnJhbWVzL3NhbXBsZXMNCiAgICAgICogd2hp Y2ggd2lsbCBwYXNzIHRocm91Z2ggdGhpcyBsaW5rLg0KLS0NCjIuMzQuMQ0KDQotLS0NCg0KRnJv bSA4Y2Y3YmZhNTJhMTBiZTg3ZTBmMTdiOTc4MzE1OWIwZTgzZjk2MGY3IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQ0KRnJvbTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0 ZTogV2VkLCAyMyBBcHIgMjAyNSAxMjozODowMCArMDgwMA0KU3ViamVjdDogW1BBVENIIDIvMl0g ZG9jL2ZpbHRlcnM6IGRvY3VtZW50IGR1bXBfcmF3X3N0YXJ0IGFuZCBkdW1wX3Jhd19zdG9wDQog Y29tbWFuZHMNCg0KU2lnbmVkLW9mZi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2su Y29tPg0KLS0tDQogZG9jL2ZpbHRlcnMudGV4aSB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCsp DQoNCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQ0KaW5k ZXggNDViM2UwM2U1ZS4uNmEyZDIzZGYzZiAxMDA2NDQNCi0tLSBhL2RvYy9maWx0ZXJzLnRleGkN CisrKyBiL2RvYy9maWx0ZXJzLnRleGkNCkBADQogQHNlY3Rpb24gYWR1bXBwY20NCg0KIER1bXAg cmF3IFBDTSBhdWRpbyBkYXRhIGZvciBkZWJ1Z2dpbmcgYmV0d2VlbiBmaWx0ZXJzLg0KDQogVGhp cyBmaWx0ZXIgYWxsb3dzIHdyaXRpbmcgcmF3IGF1ZGlvIGRhdGEgdG8gZGlzayBmcm9tIGFueSBh dWRpbyBsaW5rDQogaW4gdGhlIGZpbHRlcmdyYXBoIGZvciBpbnNwZWN0aW9uLiBJdCBzdXBwb3J0 cyBwbGFuYXIgYW5kIHBhY2tlZCBmb3JtYXRzLA0KIGF1dG9tYXRpY2FsbHkgaW50ZXJsZWF2aW5n IHBsYW5hciBkYXRhIGZvciB3cml0aW5nLg0KDQogQHN1YnNlY3Rpb24gU3ludGF4DQoNCiBAZXhh bXBsZQ0KIGR1bXBfcmF3X3N0YXJ0PWZpbGU9L3lvdXIvZHVtcC9kaXJlY3RvcnkvDQogQGVuZCBl eGFtcGxlDQoNCiBAc3Vic2VjdGlvbiBVc2FnZQ0KDQogVG8gZW5hYmxlIGR1bXBpbmcsIHVzZSB0 aGUgQGNvZGV7ZHVtcF9yYXdfc3RhcnR9IGNvbW1hbmQ6DQoNCiBAZXhhbXBsZQ0KIGZmbXBlZyAt aSBpbnB1dC53YXYgLWFmICJ2b2x1bWUsYXNlbmRjbWQ9JzAuMCBkdW1wX3Jhd19zdGFydCBmaWxl PS90bXAvcGNtLyciIC1mIG51bGwgLQ0KIEBlbmQgZXhhbXBsZQ0KDQogVG8gc3RvcCBkdW1waW5n Og0KDQogQGV4YW1wbGUNCiBhc2VuZGNtZD0nNS4wIGR1bXBfcmF3X3N0b3AnDQogQGVuZCBleGFt cGxlDQoNCiBAc3Vic2VjdGlvbiBPcHRpb25zDQoNCiBAdGFibGUgQG9wdGlvbg0KIEBpdGVtIGZp bGUNCiBTcGVjaWZ5IGEgZGlyZWN0b3J5IHBhdGggKG5vdCBhIGZpbGVuYW1lKSB3aGVyZSBQQ00g ZGF0YSB3aWxsIGJlIGR1bXBlZC4NCiBUaGUgZHVtcGVkIGZpbGUgaXMgbmFtZWQgQGNvZGV7PHNy Yz4tPGRzdD4ucGNtfSBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0 cy4NCiBAZW5kIHRhYmxlDQotLQ0KMi4zNC4xDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fDQpGcm9tOiBGYW5nIFlpYm8gPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+DQpTZW50OiAy NiBNYXkgMjAyNSAxNTo0Mw0KVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnIDxmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZz4NClN1YmplY3Q6IKZezmA6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSF0gYXZm aWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvIGRlYnVnZ2lu Zw0KDQpSZTogW0ZGbXBlZy1kZXZlbCx2MiwwLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcg YmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dpbmcNCg0KRnJvbTogWWlibyBGYW5nIDxi bHVleWJmNzc3QG91dGxvb2suY29tPg0KU3ViamVjdDogW0ZGbXBlZy1kZXZlbCx2MiwwLzJdIGF2 ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dp bmcNCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTc6MDAgKzA4MDANCk1lc3NhZ2UtSWQ6IDxj b3Zlci4wLjJAZmZtcGVnPg0KDQpUaGlzIHNlcmllcyBhZGRzIGEgZGVidWdnaW5nIGZlYXR1cmUg dGhhdCBsZXRzIGRldmVsb3BlcnMgZHVtcCByYXcNClBDTSBhdWRpbyBiZXR3ZWVuIGZpbHRlcnMu ICBUaGUgZGF0YSBhcmUgd3JpdHRlbiB0byBmaWxlcyBpbiBhIHVzZXItDQpzZWxlY3RlZCBkaXJl Y3RvcnkgdmlhIHR3byBuZXcgY29tbWFuZHM6DQoNCiAgICBkdW1wX3Jhd19zdGFydCBmaWxlPS9w YXRoL3RvL2Rpci8NCiAgICBkdW1wX3Jhd19zdG9wDQoNClBsYW5hciBhdWRpbyBpcyBhdXRvbWF0 aWNhbGx5IGludGVybGVhdmVkOyBvbmx5IGF1ZGlvIGxpbmtzIGFyZQ0KYWZmZWN0ZWQuICBQYXRj aCAxLzIgaW1wbGVtZW50cyB0aGUgZmVhdHVyZSwgcGF0Y2ggMi8yIGRvY3VtZW50cyBpdC4NCg0K UmVnYXJkcywNCllpYm8gRmFuZw0KDQotLS0NCg0KRnJvbSAyZGY1NmU3NDI3M2Q0NzdhZTI3MDAz ZTA5ODEyMjA3NDlhNmI1OGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogWWlibyBG YW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0ZTogV2VkLCAyMyBBcHIgMjAyNSAxMDo1 ODo1NSArMDgwMA0KU3ViamVjdDogW1BBVENIIDEvMl0gYXZmaWx0ZXI6IGFkZCBQQ00gZHVtcGlu ZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvDQogZGVidWdnaW5nDQoNClRoaXMgcGF0Y2ggaW50 cm9kdWNlcyBQQ00gZHVtcGluZyBzdXBwb3J0IGJldHdlZW4gQVZGaWx0ZXIgbGlua3MsDQppbnRl bmRlZCBmb3IgYXVkaW8gZGVidWdnaW5nIGFuZCBmaWx0ZXItZ3JhcGggaW5zcGVjdGlvbi4NCg0K VHdvIGZpbHRlciBjb21tYW5kcyBhcmUgYWRkZWQ6DQoNCiAgICBkdW1wX3Jhd19zdGFydCBmaWxl PS9wYXRoL3RvL291dHB1dC9kaXIvDQogICAgZHVtcF9yYXdfc3RvcA0KDQpXaGVuIGR1bXBpbmcg aXMgZW5hYmxlZCwgYXVkaW8gbGVhdmluZyB0aGUgc2VsZWN0ZWQgZmlsdGVyIG91dHB1dCBpcw0K d3JpdHRlbiB0byBhbiBhdXRvbWF0aWNhbGx5IG5hbWVkIGZpbGU6DQoNCiAgICA8c3JjX2ZpbHRl cj4tPGRzdF9maWx0ZXI+LnBjbQ0KDQpQbGFuYXIgZm9ybWF0cyBhcmUgY29udmVydGVkIHRvIHBh Y2tlZC4gIEZpbGUgZGVzY3JpcHRvcnMgYXJlIG9wZW5lZA0Kb24gZGVtYW5kIGFuZCBjbG9zZWQg YXV0b21hdGljYWxseS4gIFdvcmtzIG9ubHkgb24gYXVkaW8gbGlua3MuDQoNCkV4YW1wbGUgKEMg QVBJKToNCiAgICBhdmZpbHRlcl9wcm9jZXNzX2NvbW1hbmQoZmlsdGVyLCAiZHVtcF9yYXdfc3Rh cnQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0vdG1wLyIsIE5VTEwsIDAs IDApOw0KDQpTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+ DQotLS0NCiBsaWJhdmZpbHRlci9hdmZpbHRlci5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCB8ICAgNSArKw0K IDIgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2xpYmF2 ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jDQppbmRleCA2NGMxMDc1 YzQwLi5iNzAzNDU2OWRiIDEwMDY0NA0KLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KKysr IGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KQEAgLTE5LDYgKzE5LDkgQEANCiAgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy MTEwLTEzMDEgVVNBDQogICovDQoNCisjaW5jbHVkZSA8ZmNudGwuaD4NCisjaW5jbHVkZSA8dW5p c3RkLmg+DQorDQogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KICNpbmNsdWRlICJs aWJhdnV0aWwvYXZzdHJpbmcuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2JwcmludC5oIg0KQEAN CiAgICAgcmV0dXJuIDA7DQogfQ0KDQorLyogLS0tLS0tLS0tLSBQQ00gZHVtcCBoZWxwZXJzIC0t LS0tLS0tLS0gKi8NCisNCitzdGF0aWMgYXZfY29sZCB2b2lkIGxpbmtfdW5pbml0X2R1bXBfcGNt KEFWRmlsdGVyTGluayAqbGluaykNCit7DQorICAgIGlmIChsaW5rLT5kdW1wX3BjbV9mZHMpIHsN CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5rLT5uYl9kdW1wX3BjbV9mZHM7 IGkrKykNCisgICAgICAgICAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzW2ldID49IDApDQorICAg ICAgICAgICAgICAgIGNsb3NlKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSk7DQorICAgICAgICBhdl9m cmVlcCgmbGluay0+ZHVtcF9wY21fZmRzKTsNCisgICAgICAgIGxpbmstPm5iX2R1bXBfcGNtX2Zk cyA9IDA7DQorICAgIH0NCisgICAgYXZfZnJlZXAoJmxpbmstPmR1bXBfcGNtX3BhdGgpOw0KKyAg ICBsaW5rLT5kdW1wX3BjbSA9IDA7DQorfQ0KKw0KK3N0YXRpYyBhdl9jb2xkIGludCBsaW5rX2lu aXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KK3sNCisgICAgLyogYnVpbGQgZnVsbCBw YXRoICI8ZGlyPi88c3JjPi08ZHN0Pi5wY20iICovDQorICAgIGNvbnN0IGNoYXIgKmRpciA9IGxp bmstPmR1bXBfcGNtX3BhdGg7DQorICAgIGNvbnN0IGNoYXIgKnNlcCA9IGRpcltzdHJsZW4oZGly KSAtIDFdID09ICcvJyA/ICIiIDogIi8iOw0KKyAgICBjaGFyIHBhdGhbNDA5Nl07DQorICAgIHNu cHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzJXMlLjE2cy0lLjhzLnBjbSIsDQorICAgICAg ICAgICAgIGRpciwgc2VwLCBsaW5rLT5zcmMtPm5hbWUsIGxpbmstPmRzdC0+bmFtZSk7DQorDQor ICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IDE7DQorICAgIGxpbmstPmR1bXBfcGNtX2ZkcyA9 IGF2X21hbGxvYyhzaXplb2YoaW50KSk7DQorICAgIGlmICghbGluay0+ZHVtcF9wY21fZmRzKQ0K KyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisNCisgICAgaW50IGZkID0gb3Blbihw YXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19FWENMLCAwNjQ0KTsNCisgICAg aWYgKGZkIDwgMCkgew0KKyAgICAgICAgbGlua191bmluaXRfZHVtcF9wY20obGluayk7DQorICAg ICAgICByZXR1cm4gQVZFUlJPUihlcnJubyk7DQorICAgIH0NCisgICAgbGluay0+ZHVtcF9wY21f ZmRzWzBdID0gZmQ7DQorICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19JTkZPLCAiUENNIGR1 bXAgZmlsZTogJXNcbiIsIHBhdGgpOw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGlu dCBmaWx0ZXJfc2V0X2R1bXBfcGNtKEFWRmlsdGVyQ29udGV4dCAqZiwgY29uc3QgY2hhciAqYXJn LCBpbnQgc2V0KQ0KK3sNCisgICAgY29uc3QgY2hhciAqcHJlZml4ID0gImZpbGU9IjsNCisgICAg aWYgKCFhcmcgfHwgYXZfc3RybmNhc2VjbXAoYXJnLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKSkg ew0KKyAgICAgICAgYXZfbG9nKGYsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAiZHVt cF9yYXdfKiBleHBlY3RzIGFyZ3VtZW50IGZpbGU9L2Rpci9cbiIpOw0KKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBhcmcgKyBz dHJsZW4ocHJlZml4KTsNCisNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmLT5uYl9vdXRwdXRz OyBpKyspIHsNCisgICAgICAgIEFWRmlsdGVyTGluayAqbCA9IGYtPm91dHB1dHNbaV07DQorICAg ICAgICBpZiAobC0+dHlwZSAhPSBBVk1FRElBX1RZUEVfQVVESU8pDQorICAgICAgICAgICAgY29u dGludWU7DQorICAgICAgICBpZiAoc2V0KSB7DQorICAgICAgICAgICAgYXZfZnJlZXAoJmwtPmR1 bXBfcGNtX3BhdGgpOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtX3BhdGggPSBhdl9zdHJkdXAo ZGlyKTsNCisgICAgICAgICAgICBpZiAoIWwtPmR1bXBfcGNtX3BhdGgpDQorICAgICAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICAgICAgbC0+ZHVtcF9wY20gPSAx Ow0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgbGlua191bmluaXRfZHVtcF9wY20obCk7 DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qIHdyaXRlIG9uZSBmcmFtZSAqLw0K K3N0YXRpYyBpbnQgbGlua19kdW1wX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAq ZnJhbWUpDQorew0KKyAgICBpbnQgcmV0Ow0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcyAm Jg0KKyAgICAgICAgKHJldCA9IGxpbmtfaW5pdF9kdW1wX3BjbShsaW5rKSkgPCAwKQ0KKyAgICAg ICAgcmV0dXJuIHJldDsNCisNCisgICAgY29uc3QgaW50IGNoICAgICA9IGZyYW1lLT5jaF9sYXlv dXQubmJfY2hhbm5lbHM7DQorICAgIGNvbnN0IGludCBicHMgICAgPSBhdl9nZXRfYnl0ZXNfcGVy X3NhbXBsZShmcmFtZS0+Zm9ybWF0KTsNCisgICAgY29uc3QgaW50IG5zICAgICA9IGZyYW1lLT5u Yl9zYW1wbGVzOw0KKyAgICBjb25zdCBpbnQgdG90bGVuID0gY2ggKiBucyAqIGJwczsNCisNCisg ICAgLyogaW50ZXJsZWF2ZSBwbGFuYXIgdG8gcGFja2VkIGlmIG5lY2Vzc2FyeSAqLw0KKyAgICBp ZiAoYXZfc2FtcGxlX2ZtdF9pc19wbGFuYXIoZnJhbWUtPmZvcm1hdCkpIHsNCisgICAgICAgIHVp bnQ4X3QgKmJ1ZiA9IGF2X21hbGxvYyh0b3RsZW4pOw0KKyAgICAgICAgaWYgKCFidWYpDQorICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgICAgIGZvciAoaW50IHMgPSAw OyBzIDwgbnM7IHMrKykNCisgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNoOyBjKysp DQorICAgICAgICAgICAgICAgIG1lbWNweShidWYgKyAocypjaCArIGMpKmJwcywNCisgICAgICAg ICAgICAgICAgICAgICAgICh1aW50OF90KilmcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjXSArIHMqYnBz LA0KKyAgICAgICAgICAgICAgICAgICAgICAgYnBzKTsNCisgICAgICAgIHJldCA9IHdyaXRlKGxp bmstPmR1bXBfcGNtX2Zkc1swXSwgYnVmLCB0b3RsZW4pOw0KKyAgICAgICAgYXZfZnJlZShidWYp Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIHJldCA9IHdyaXRlKGxpbmstPmR1bXBfcGNtX2Zkc1sw XSwgZnJhbWUtPmRhdGFbMF0sIHRvdGxlbik7DQorDQorICAgIGlmIChyZXQgPCAwKSB7DQorICAg ICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJST1IsICJQQ00gZHVtcCB3cml0ZSBmYWls ZWQ6ICVzXG4iLA0KKyAgICAgICAgICAgICAgIGF2X2VycjJzdHIocmV0KSk7DQorICAgICAgICBs aW5rX3VuaW5pdF9kdW1wX3BjbShsaW5rKTsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0N CisgICAgcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIGxpbmtfZnJlZShBVkZpbHRlckxp bmsgKipsaW5rKQ0KIHsNCkBADQoNCiBpbnQgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKEFWRmls dGVyQ29udGV4dCAqZmlsdGVyLCBjb25zdCBjaGFyICpjbWQsDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICphcmcsIGNoYXIgKnJlcywgaW50IHJlc19sZW4sIGludCBm bGFncykNCiB7DQpAQA0KLSAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMpDQotICAgICAgICAg ICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICIlcyIsIHJlcyk7DQotICAgICAgICByZXR1 cm4gMDsNCisgICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KKyAgICAgICAgICAgIGF2X2xv ZyhmaWx0ZXIsIEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KKyAgICAgICAgcmV0dXJuIDA7DQor ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdGFydCIpKSB7DQorICAgICAg ICByZXR1cm4gZmlsdGVyX3NldF9kdW1wX3BjbShmaWx0ZXIsIGFyZywgMSk7DQorICAgIH0gZWxz ZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdG9wIikpIHsNCisgICAgICAgIHJldHVybiBm aWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwgYXJnLCAwKTsNCiAgICAgfSBlbHNlIGlmKCFzdHJj bXAoY21kLCAiZW5hYmxlIikpIHsNCiAgICAgICAgIHJldHVybiBzZXRfZW5hYmxlX2V4cHIoZmZm aWx0ZXJjdHgoZmlsdGVyKSwgYXJnKTsNCkBADQogICAgIC8qIC4uLiBleGlzdGluZyBjb2RlIC4u LiAqLw0KDQorICAgIGlmIChsaW5rLT5kdW1wX3BjbSAmJiBsaW5rLT50eXBlID09IEFWTUVESUFf VFlQRV9BVURJTykgew0KKyAgICAgICAgcmV0ID0gbGlua19kdW1wX2ZyYW1lKGxpbmssIGZyYW1l KTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgIGF2X2xvZyhsaW5rLT5kc3Qs IEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAgICAgIlBDTSBkdW1wIGZhaWxlZCB3aXRo ICVzXG4iLCBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICB9DQorDQogICAgIGxpLT5mcmFtZV9ibG9j a2VkX2luID0gbGktPmZyYW1lX3dhbnRlZF9vdXQgPSAwOw0KQEANCmRpZmYgLS1naXQgYS9saWJh dmZpbHRlci9hdmZpbHRlci5oIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KaW5kZXggYTg5ZDNj ZjY1OC4uMGQ0YzkxYmI2YiAxMDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCisr KyBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCkBADQogICAgIEFWQ2hhbm5lbExheW91dCBjaF9s YXlvdXQ7ICAvLy88IGNoYW5uZWwgbGF5b3V0IG9mIGN1cnJlbnQgYnVmZmVyDQoNCisgICAgaW50 ICAgICAgZHVtcF9wY207ICAgICAgICAgIC8vLzwgZW5hYmxlIGR1bXBpbmcgb24gdGhpcyBsaW5r DQorICAgIGludCAgICAgKmR1bXBfcGNtX2ZkczsgICAgICAvLy88IG9uZSBGRCBwZXIgbGluayAo Y3VycmVudGx5IDEpDQorICAgIHVuc2lnbmVkIG5iX2R1bXBfcGNtX2ZkczsgICAvLy88IG51bWJl ciBvZiBGRHMNCisgICAgY2hhciAgICAqZHVtcF9wY21fcGF0aDsgICAgIC8vLzwgdXNlci1zdXBw bGllZCBkaXJlY3RvcnkNCisNCiAgICAgLyoqDQogICAgICAqIERlZmluZSB0aGUgdGltZSBiYXNl IHVzZWQgYnkgdGhlIFBUUyBvZiB0aGUgZnJhbWVzL3NhbXBsZXMNCiAgICAgICogd2hpY2ggd2ls bCBwYXNzIHRocm91Z2ggdGhpcyBsaW5rLg0KLS0NCjIuMzQuMQ0KDQotLS0NCg0KRnJvbSA4Y2Y3 YmZhNTJhMTBiZTg3ZTBmMTdiOTc4MzE1OWIwZTgzZjk2MGY3IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQ0KRnJvbTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0ZTogV2Vk LCAyMyBBcHIgMjAyNSAxMjozODowMCArMDgwMA0KU3ViamVjdDogW1BBVENIIDIvMl0gZG9jL2Zp bHRlcnM6IGRvY3VtZW50IGR1bXBfcmF3X3N0YXJ0IGFuZCBkdW1wX3Jhd19zdG9wDQogY29tbWFu ZHMNCg0KU2lnbmVkLW9mZi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0K LS0tDQogZG9jL2ZpbHRlcnMudGV4aSB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspDQoNCmRp ZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQ0KaW5kZXggNDVi M2UwM2U1ZS4uNmEyZDIzZGYzZiAxMDA2NDQNCi0tLSBhL2RvYy9maWx0ZXJzLnRleGkNCisrKyBi L2RvYy9maWx0ZXJzLnRleGkNCkBADQogQHNlY3Rpb24gYWR1bXBwY20NCg0KIER1bXAgcmF3IFBD TSBhdWRpbyBkYXRhIGZvciBkZWJ1Z2dpbmcgYmV0d2VlbiBmaWx0ZXJzLg0KDQogVGhpcyBmaWx0 ZXIgYWxsb3dzIHdyaXRpbmcgcmF3IGF1ZGlvIGRhdGEgdG8gZGlzayBmcm9tIGFueSBhdWRpbyBs aW5rDQogaW4gdGhlIGZpbHRlcmdyYXBoIGZvciBpbnNwZWN0aW9uLiBJdCBzdXBwb3J0cyBwbGFu YXIgYW5kIHBhY2tlZCBmb3JtYXRzLA0KIGF1dG9tYXRpY2FsbHkgaW50ZXJsZWF2aW5nIHBsYW5h ciBkYXRhIGZvciB3cml0aW5nLg0KDQogQHN1YnNlY3Rpb24gU3ludGF4DQoNCiBAZXhhbXBsZQ0K IGR1bXBfcmF3X3N0YXJ0PWZpbGU9L3lvdXIvZHVtcC9kaXJlY3RvcnkvDQogQGVuZCBleGFtcGxl DQoNCiBAc3Vic2VjdGlvbiBVc2FnZQ0KDQogVG8gZW5hYmxlIGR1bXBpbmcsIHVzZSB0aGUgQGNv ZGV7ZHVtcF9yYXdfc3RhcnR9IGNvbW1hbmQ6DQoNCiBAZXhhbXBsZQ0KIGZmbXBlZyAtaSBpbnB1 dC53YXYgLWFmICJ2b2x1bWUsYXNlbmRjbWQ9JzAuMCBkdW1wX3Jhd19zdGFydCBmaWxlPS90bXAv cGNtLyciIC1mIG51bGwgLQ0KIEBlbmQgZXhhbXBsZQ0KDQogVG8gc3RvcCBkdW1waW5nOg0KDQog QGV4YW1wbGUNCiBhc2VuZGNtZD0nNS4wIGR1bXBfcmF3X3N0b3AnDQogQGVuZCBleGFtcGxlDQoN CiBAc3Vic2VjdGlvbiBPcHRpb25zDQoNCiBAdGFibGUgQG9wdGlvbg0KIEBpdGVtIGZpbGUNCiBT cGVjaWZ5IGEgZGlyZWN0b3J5IHBhdGggKG5vdCBhIGZpbGVuYW1lKSB3aGVyZSBQQ00gZGF0YSB3 aWxsIGJlIGR1bXBlZC4NCiBUaGUgZHVtcGVkIGZpbGUgaXMgbmFtZWQgQGNvZGV7PHNyYz4tPGRz dD4ucGNtfSBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0cy4NCiBA ZW5kIHRhYmxlDQotLQ0KMi4zNC4xDQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KRnJvbTogZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn PiBvbiBiZWhhbGYgb2YgQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0 bG9vay5jb20+DQpTZW50OiAyNiBBcHJpbCAyMDI1IDM6MDANClRvOiBmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+DQpTdWJqZWN0OiBSZTogW0ZGbXBlZy1k ZXZlbF0gW1BBVENIXSBhdmZpbHRlcjogYWRkIFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBm b3IgYXVkaW8gZGVidWdnaW5nDQoNCqRApXWkaiCqzj86DQo+IFRoaXMgcGF0Y2ggaW50cm9kdWNl cyBQQ00gZHVtcGluZyBzdXBwb3J0IGJldHdlZW4gQVZGaWx0ZXIgbGlua3MsIGludGVuZGVkIGZv ciBhdWRpbyBkZWJ1Z2dpbmcuDQo+DQo+IEl0IGFkZHMgYSBjb25maWd1cmUtdGltZSBvcHRpb24g YC0tZHVtcGRpcj1QQVRIYCB0byBzcGVjaWZ5IHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciByYXcg UENNIGRhdGEgKGRlZmF1bHQ6IC90bXAvKS4NCj4NCj4gVHdvIGNvbW1hbmRzIGFyZSBleHBvc2Vk IHRvIGNvbnRyb2wgZHVtcGluZzoNCj4gICAtIGR1bXBfcmF3X3N0YXJ0IDxkc3RfZmlsdGVyX25h bWU+DQo+ICAgLSBkdW1wX3Jhd19zdG9wIDxkc3RfZmlsdGVyX25hbWU+DQo+DQo+IER1bXAgZmls ZXMgYXJlIHdyaXR0ZW4gYXM6IHNyY25hbWUtZHN0bmFtZS1jaGFubmVsLnBjbQ0KPg0KPiBTdXBw b3J0cyBwYWNrZWQgYW5kIHBsYW5hciBmb3JtYXRzLiBGaWxlIGRlc2NyaXB0b3JzIGFyZSBtYW5h Z2VkIGF1dG9tYXRpY2FsbHkgYW5kIHdvcmsgb25seSBvbiBhdWRpbyBsaW5rcy4NCj4NCj4gRXhh bXBsZSB1c2FnZToNCj4gICAgIGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChmaWx0ZXIsICJkdW1w X3Jhd19zdGFydCIsICJ2b2x1bWUiLCBOVUxMLCAwLCAwKTsNCj4NCj4gVGhpcyBmZWF0dXJlIGhl bHBzIGRldmVsb3BlcnMgZGVidWcgZmlsdGVyIGJlaGF2aW9yIGJ5IGluc3BlY3RpbmcgaW50ZXJt ZWRpYXRlIGF1ZGlvIGRhdGEuDQo+IC0tLQ0KPiBGcm9tIDZhMzFjODVhZmQyODAwYzA5MDc2YzFl MmI3YzczNGM3YjcxOWY3M2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxDQo+IEZyb206IFlpYm8g RmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCj4gRGF0ZTogV2VkLCAyMyBBcHIgMjAyNSAw OToxNzo1MSArMDgwMA0KPiBTdWJqZWN0OiBbUEFUQ0ggMS8xXSBhdmZpbHRlcjogYWRkIFBDTSBk dW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8NCj4gIGRlYnVnZ2luZw0KPg0KPiBUaGlz IHBhdGNoIGFkZHMgdGhlIGFiaWxpdHkgdG8gZHVtcCByYXcgUENNIGF1ZGlvIGRhdGEgYmV0d2Vl biBBVkZpbHRlciBsaW5rcy4NCj4gSXQgaW50cm9kdWNlcyBhIGNvbmZpZ3VyZS10aW1lIG9wdGlv biBgLS1kdW1wZGlyPVBBVEhgIHRvIGNvbnRyb2wgdGhlIG91dHB1dA0KPiBkaXJlY3Rvcnkgb2Yg ZHVtcCBmaWxlcyAoZGVmYXVsdDogL3RtcC8pLiBUaGlzIGZlYXR1cmUgaXMgaGVscGZ1bCBmb3Ig ZGVidWdnaW5nDQo+IGZpbHRlciBiZWhhdmlvciBhbmQgdmVyaWZ5aW5nIGF1ZGlvIHByb2Nlc3Np bmcuDQo+DQo+IFR3byBmaWx0ZXIgY29tbWFuZHMgYXJlIGFkZGVkOg0KPiAgIC0gZHVtcF9yYXdf c3RhcnQgPGRzdF9maWx0ZXJfbmFtZT4NCj4gICAtIGR1bXBfcmF3X3N0b3AgPGRzdF9maWx0ZXJf bmFtZT4NCj4NCj4gVGhlIFBDTSBmaWxlcyBhcmUgd3JpdHRlbiBpbiB0aGUgZm9ybWF0OiBzcmNu YW1lLWRzdG5hbWUtPGNoYW5uZWw+LnBjbS4NCj4NCj4gU3VwcG9ydHMgYm90aCBwYWNrZWQgYW5k IHBsYW5hciBmb3JtYXRzLiBGaWxlIGRlc2NyaXB0b3JzIGFyZSBhdXRvbWF0aWNhbGx5DQo+IG1h bmFnZWQuIFdvcmtzIG9ubHkgb24gYXVkaW8gbGlua3MuDQo+DQo+IEV4YW1wbGUgdXNhZ2U6DQo+ ICAgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwgInZv bHVtZSIsIE5VTEwsIDAsIDApOw0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5 YmY3NzdAb3V0bG9vay5jb20+DQo+IC0tLQ0KPiAgY29uZmlndXJlICAgICAgICAgICAgICB8ICAg NyArKysNCj4gIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgfCAxMTAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysNCj4gIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggfCAgIDQg KysNCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKykNCj4NCj4gZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQ0KPiBpbmRleCBjOTRiOGVhYzQzLi4zODE2MzM3NDlk IDEwMDc1NQ0KPiAtLS0gYS9jb25maWd1cmUNCj4gKysrIGIvY29uZmlndXJlDQo+IEBAIC01MjQs NiArNTI0LDcgQEAgRGV2ZWxvcGVyIG9wdGlvbnMgKHVzZWZ1bCB3aGVuIHdvcmtpbmcgb24gRkZt cGVnIGl0c2VsZik6DQo+ICAgIC0tZGlzYWJsZS1sYXJnZS10ZXN0cyAgICBkaXNhYmxlIHRlc3Rz IHRoYXQgdXNlIGEgbGFyZ2UgYW1vdW50IG9mIG1lbW9yeQ0KPiAgICAtLWRpc2FibGUtcHR4LWNv bXByZXNzaW9uIGRvbid0IGNvbXByZXNzIENVREEgUFRYIGNvZGUgZXZlbiB3aGVuIHBvc3NpYmxl DQo+ICAgIC0tZGlzYWJsZS12ZXJzaW9uLXRyYWNraW5nIGRvbid0IGluY2x1ZGUgdGhlIGdpdC9y ZWxlYXNlIHZlcnNpb24gaW4gdGhlIGJ1aWxkDQo+ICsgIC0tZHVtcGRpcj1QQVRIICAgICAgICAg ICBsb2NhdGlvbiBvZiBwY20gZHVtcCBmaWxlcyB0byBzYXZlLg0KPg0KPiAgTk9URTogT2JqZWN0 IGZpbGVzIGFyZSBidWlsdCBhdCB0aGUgcGxhY2Ugd2hlcmUgY29uZmlndXJlIGlzIGxhdW5jaGVk Lg0KPiAgRU9GDQo+IEBAIC0yNjkwLDYgKzI2OTEsNyBAQCBQQVRIU19MSVNUPSINCj4gICAgICBw cmVmaXgNCj4gICAgICBzaGxpYmRpcg0KPiAgICAgIGluc3RhbGxfbmFtZV9kaXINCj4gKyAgICBk dW1wZGlyDQo+ICAiDQo+DQo+ICBDTURMSU5FX1NFVD0iDQo+IEBAIC00MTIzLDYgKzQxMjUsOSBA QCBpbmNkaXJfZGVmYXVsdD0nJHtwcmVmaXh9L2luY2x1ZGUnDQo+ICBsaWJkaXJfZGVmYXVsdD0n JHtwcmVmaXh9L2xpYicNCj4gIG1hbmRpcl9kZWZhdWx0PScke3ByZWZpeH0vc2hhcmUvbWFuJw0K Pg0KPiArIyBydW50aW1lIHBhdGgNCj4gK2R1bXBkaXJfZGVmYXVsdD0nL3RtcC8nDQo+ICsNCj4g ICMgdG9vbGNoYWluDQo+ICBhcl9kZWZhdWx0PSJhciINCj4gIGNjX2RlZmF1bHQ9ImdjYyINCj4g QEAgLTgxMTgsNiArODEyMyw3IEBAIERPQ0RJUj1cJChERVNURElSKSRkb2NkaXINCj4gIE1BTkRJ Uj1cJChERVNURElSKSRtYW5kaXINCj4gIFBLR0NPTkZJR0RJUj1cJChERVNURElSKSRwa2djb25m aWdkaXINCj4gIElOU1RBTExfTkFNRV9ESVI9JGluc3RhbGxfbmFtZV9kaXINCj4gK0RVTVBESVI9 JGR1bXBkaXINCj4gIFNSQ19QQVRIPSRzb3VyY2VfcGF0aA0KPiAgU1JDX0xJTks9JHNvdXJjZV9s aW5rDQo+ICBpZm5kZWYgTUFJTl9NQUtFRklMRQ0KPiBAQCAtODI2Nyw2ICs4MjczLDcgQEAgY2F0 ID4gJFRNUEggPDxFT0YNCj4gICNkZWZpbmUgQ09ORklHX1RISVNfWUVBUiAyMDI1DQo+ICAjZGVm aW5lIEZGTVBFR19EQVRBRElSICIkKGV2YWwgY19lc2NhcGUgJGRhdGFkaXIpIg0KPiAgI2RlZmlu ZSBBVkNPTlZfREFUQURJUiAiJChldmFsIGNfZXNjYXBlICRkYXRhZGlyKSINCj4gKyNkZWZpbmUg RkZNUEVHX0RVTVBESVIgIiQoZXZhbCBjX2VzY2FwZSAkZHVtcGRpcikiDQo+ICAjZGVmaW5lIEND X0lERU5UICIkKGNfZXNjYXBlICR7Y2NfaWRlbnQ6LVVua25vd24gY29tcGlsZXJ9KSINCj4gICNk ZWZpbmUgT1NfTkFNRSAkdGFyZ2V0X29zDQo+ICAjZGVmaW5lIEVYVEVSTl9QUkVGSVggIiR7ZXh0 ZXJuX3ByZWZpeH0iDQo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZpbHRlci5jIGIvbGli YXZmaWx0ZXIvYXZmaWx0ZXIuYw0KPiBpbmRleCA2NGMxMDc1YzQwLi45ZmM2MzA4NTQ0IDEwMDY0 NA0KPiAtLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlci5jDQo+ICsrKyBiL2xpYmF2ZmlsdGVyL2F2 ZmlsdGVyLmMNCj4gQEAgLTE5LDYgKzE5LDkgQEANCj4gICAqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EN Cj4gICAqLw0KPg0KPiArI2luY2x1ZGUgPGZjbnRsLmg+DQo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+ DQo+ICsNCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCINCj4gICNpbmNsdWRlICJs aWJhdnV0aWwvYXZzdHJpbmcuaCINCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiDQo+ IEBAIC0xOTUsNiArMTk4LDY2IEBAIGludCBhdmZpbHRlcl9saW5rKEFWRmlsdGVyQ29udGV4dCAq c3JjLCB1bnNpZ25lZCBzcmNwYWQsDQo+ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+DQo+ICtzdGF0 aWMgYXZfY29sZCB2b2lkIGxpbmtfdW5pbml0X2R1bXBfcGNtKEFWRmlsdGVyTGluayAqbGluaywg aW50IHN0b3ApDQo+ICt7DQo+ICsgICAgaWYgKGxpbmstPmR1bXBfcGNtX2Zkcykgew0KPiArICAg ICAgICBpbnQgaTsNCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxpbmstPm5iX2R1bXBfcGNt X2ZkczsgaSsrKSB7DQo+ICsgICAgICAgICAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzW2ldKQ0K PiArICAgICAgICAgICAgICAgIGNsb3NlKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSk7DQo+ICsgICAg ICAgIH0NCj4gKyAgICAgICAgYXZfZnJlZShsaW5rLT5kdW1wX3BjbV9mZHMpOw0KPiArICAgICAg ICBsaW5rLT5kdW1wX3BjbV9mZHMgICAgPSBOVUxMOw0KPiArICAgICAgICBsaW5rLT5uYl9kdW1w X3BjbV9mZHMgPSAwOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChzdG9wKQ0KPiArICAgICAg ICBsaW5rLT5kdW1wX3BjbSA9IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBhdl9jb2xkIGludCBs aW5rX2luaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KPiArew0KPiArICAgIGNoYXIg cGF0aFs0MDk2XTsNCj4gKyAgICBpbnQgZmQsIGk7DQo+ICsNCj4gKyAgICBsaW5rLT5uYl9kdW1w X3BjbV9mZHMgPSBhdl9zYW1wbGVfZm10X2lzX3BsYW5hcihsaW5rLT5mb3JtYXQpPyBsaW5rLT5j aF9sYXlvdXQubmJfY2hhbm5lbHMgOiAxOw0KPiArICAgIGxpbmstPmR1bXBfcGNtX2ZkcyA9IGF2 X21hbGxvY19hcnJheShsaW5rLT5uYl9kdW1wX3BjbV9mZHMsIHNpemVvZihpbnQpKTsNCj4gKyAg ICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcykNCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P TUVNKTsNCj4gKw0KPiArICAgIGZvciAoaSA9IDA7IGkgPCBsaW5rLT5uYl9kdW1wX3BjbV9mZHM7 IGkrKykgew0KPiArICAgICAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksIEZGTVBFR19E VU1QRElSIiUuMTZzLSUuOHMtJWQucGNtIiwgbGluay0+c3JjLT5uYW1lLCBsaW5rLT5kc3QtPm5h bWUsIGkpOw0KPiArICAgICAgICBmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkgfCBPX0NSRUFUIHwg T19UUlVOQywgMDY0NCk7DQo+ICsgICAgICAgIGlmIChmZCA8IDApIHsNCj4gKyAgICAgICAgICAg IGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmssIDEpOw0KPiArICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoZXJybm8pOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIGxpbmstPmR1bXBfcGNtX2Zk c1tpXSA9IGZkOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IGZpbHRlcl9zZXRfZHVtcF9wY20oQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXIs IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHNldCkNCj4gK3sNCj4gKyAgICBpbnQgaTsNCj4gKw0K PiArICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm5iX291dHB1dHM7IGkrKykgew0KPiArICAg ICAgICBBVkZpbHRlckxpbmsgKmxpbmsgPSBmaWx0ZXItPm91dHB1dHNbaV07DQo+ICsgICAgICAg IGlmICghdGFyZ2V0IHx8ICFzdHJjbXAobGluay0+ZHN0LT5uYW1lLCB0YXJnZXQpKSB7DQo+ICsg ICAgICAgICAgICBpZiAoc2V0KSB7DQo+ICsgICAgICAgICAgICAgICAgbGluay0+ZHVtcF9wY20g PSAxOw0KPiArICAgICAgICAgICAgfSBlbHNlDQo+ICsgICAgICAgICAgICAgICAgbGlua191bmlu aXRfZHVtcF9wY20obGluaywgMSk7DQo+ICsNCj4gKyAgICAgICAgICAgIGlmICh0YXJnZXQpDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+ICsN Cj4gKyAgICByZXR1cm4gdGFyZ2V0ID8gQVZFUlJPUihFSU5WQUwpIDogMDsNCj4gK30NCj4gKw0K PiAgc3RhdGljIHZvaWQgbGlua19mcmVlKEFWRmlsdGVyTGluayAqKmxpbmspDQo+ICB7DQo+ICAg ICAgRmlsdGVyTGlua0ludGVybmFsICpsaTsNCj4gQEAgLTIwOCw2ICsyNzEsOCBAQCBzdGF0aWMg dm9pZCBsaW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykNCj4gICAgICBhdl9jaGFubmVsX2xh eW91dF91bmluaXQoJigqbGluayktPmNoX2xheW91dCk7DQo+ICAgICAgYXZfZnJhbWVfc2lkZV9k YXRhX2ZyZWUoJigqbGluayktPnNpZGVfZGF0YSwgJigqbGluayktPm5iX3NpZGVfZGF0YSk7DQo+ DQo+ICsgICAgbGlua191bmluaXRfZHVtcF9wY20oKmxpbmssIDEpOw0KPiArDQo+ICAgICAgYXZf YnVmZmVyX3VucmVmKCZsaS0+bC5od19mcmFtZXNfY3R4KTsNCj4NCj4gICAgICBhdl9mcmVlcChs aW5rKTsNCj4gQEAgLTYxNyw2ICs2ODIsMTAgQEAgaW50IGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFu ZChBVkZpbHRlckNvbnRleHQgKmZpbHRlciwgY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGENCj4g ICAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMpDQo+ICAgICAgICAgICAgICBhdl9sb2coZmls dGVyLCBBVl9MT0dfSU5GTywgIiVzIiwgcmVzKTsNCj4gICAgICAgICAgcmV0dXJuIDA7DQo+ICsg ICAgfWVsc2UgaWYoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdGFydCIpKSB7DQo+ICsgICAgICAg IHJldHVybiBmaWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwgYXJnLCAxKTsNCj4gKyAgICB9ZWxz ZSBpZighc3RyY21wKGNtZCwgImR1bXBfcmF3X3N0b3AiKSkgew0KPiArICAgICAgICByZXR1cm4g ZmlsdGVyX3NldF9kdW1wX3BjbShmaWx0ZXIsIGFyZywgMCk7DQo+ICAgICAgfWVsc2UgaWYoIXN0 cmNtcChjbWQsICJlbmFibGUiKSkgew0KPiAgICAgICAgICByZXR1cm4gc2V0X2VuYWJsZV9leHBy KGZmZmlsdGVyY3R4KGZpbHRlciksIGFyZyk7DQo+ICAgICAgfWVsc2UgaWYgKGZmZmlsdGVyKGZp bHRlci0+ZmlsdGVyKS0+cHJvY2Vzc19jb21tYW5kKSB7DQo+IEBAIC0xMDUwLDYgKzExMTksNDEg QEAgZmFpbDoNCj4gICAgICByZXR1cm4gcmV0Ow0KPiAgfQ0KPg0KPiArc3RhdGljIGludCBsaW5r X2R1bXBfZnJhbWUoQVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZyYW1lICpmcmFtZSkNCj4gK3sNCj4g KyAgICBpbnQgc2FtcGxlc19zaXplLCByZXQ7DQo+ICsNCj4gKyAgICBpZiAoIWxpbmstPmR1bXBf cGNtX2Zkcykgew0KPiArICAgICAgICByZXQgPSBsaW5rX2luaXRfZHVtcF9wY20obGluayk7DQo+ ICsgICAgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAg ICB9DQo+ICsNCj4gKyAgICBzYW1wbGVzX3NpemUgPSBhdl9nZXRfYnl0ZXNfcGVyX3NhbXBsZShm cmFtZS0+Zm9ybWF0KSAqIGZyYW1lLT5uYl9zYW1wbGVzOw0KPiArICAgIGlmIChhdl9zYW1wbGVf Zm10X2lzX3BsYW5hcihmcmFtZS0+Zm9ybWF0KSkgew0KPiArICAgICAgICBpbnQgaTsNCj4gKyAg ICAgICAgZm9yIChpID0gMDsgaSA8IGxpbmstPm5iX2R1bXBfcGNtX2ZkcyAmJiBpIDwgZnJhbWUt PmNoX2xheW91dC5uYl9jaGFubmVsczsgaSsrKSB7DQo+ICsgICAgICAgICAgICBpZiAoaSA8IEFW X05VTV9EQVRBX1BPSU5URVJTKSB7DQo+ICsgICAgICAgICAgICAgICAgcmV0ID0gd3JpdGUobGlu ay0+ZHVtcF9wY21fZmRzW2ldLCBmcmFtZS0+ZGF0YVtpXSwgc2FtcGxlc19zaXplKTsNCj4gKyAg ICAgICAgICAgIH0gZWxzZQ0KPiArICAgICAgICAgICAgICAgIHJldCA9IHdyaXRlKGxpbmstPmR1 bXBfcGNtX2Zkc1tpXSwgZnJhbWUtPmV4dGVuZGVkX2RhdGFbaSAtIEFWX05VTV9EQVRBX1BPSU5U RVJTXSwgc2FtcGxlc19zaXplKTsNCj4gKw0KPiArICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+ ICsgICAgICAgICAgICAgICAgZ290byBlcnI7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9IGVsc2Ug ew0KPiArICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNbMF0sIGZyYW1lLT5k YXRhWzBdLCBzYW1wbGVzX3NpemUgKiBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzKTsNCj4g KyAgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICBnb3RvIGVycjsNCj4gKw0KPiAr ICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArZXJyOg0KPiArICAgIGxpbmtfdW5pbml0 X2R1bXBfcGNtKGxpbmssIDEpOw0KPiArICAgIHJldHVybiBBVkVSUk9SKGVycm5vKTsNCj4gK30N Cj4gKw0KPiAgaW50IGZmX2ZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUg KmZyYW1lKQ0KPiAgew0KPiAgICAgIEZpbHRlckxpbmtJbnRlcm5hbCAqIGNvbnN0IGxpID0gZmZf bGlua19pbnRlcm5hbChsaW5rKTsNCj4gQEAgLTEwODcsNiArMTE5MSwxMiBAQCBpbnQgZmZfZmls dGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqZnJhbWUpDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLT50aW1lX2Jhc2UpOw0KPiAgICAg IH0NCj4NCj4gKyAgICBpZiAobGluay0+ZHVtcF9wY20gJiYgbGluay0+dHlwZSA9PSBBVk1FRElB X1RZUEVfQVVESU8pIHsNCj4gKyAgICAgICAgcmV0ID0gbGlua19kdW1wX2ZyYW1lKGxpbmssIGZy YW1lKTsNCj4gKyAgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICBhdl9sb2cobGlu ay0+ZHN0LCBBVl9MT0dfRVJST1IsICJEdW1wIHBjbSBmaWxlcyBmYWlsZWQgd2l0aCAlZFxuIiwg cmV0KTsNCj4gKyAgICB9DQo+ICsNCj4gICAgICBsaS0+ZnJhbWVfYmxvY2tlZF9pbiA9IGxpLT5m cmFtZV93YW50ZWRfb3V0ID0gMDsNCj4gICAgICBsaS0+bC5mcmFtZV9jb3VudF9pbisrOw0KPiAg ICAgIGxpLT5sLnNhbXBsZV9jb3VudF9pbiArPSBmcmFtZS0+bmJfc2FtcGxlczsNCj4gZGlmZiAt LWdpdCBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggYi9saWJhdmZpbHRlci9hdmZpbHRlci5oDQo+ IGluZGV4IGE4OWQzY2Y2NTguLjZkMDRiOWRhNzcgMTAwNjQ0DQo+IC0tLSBhL2xpYmF2ZmlsdGVy L2F2ZmlsdGVyLmgNCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KPiBAQCAtNDA0LDYg KzQwNCwxMCBAQCBzdHJ1Y3QgQVZGaWx0ZXJMaW5rIHsNCj4gICAgICBpbnQgc2FtcGxlX3JhdGU7 ICAgICAgICAgICAgLy8vPCBzYW1wbGVzIHBlciBzZWNvbmQNCj4gICAgICBBVkNoYW5uZWxMYXlv dXQgY2hfbGF5b3V0OyAgLy8vPCBjaGFubmVsIGxheW91dCBvZiBjdXJyZW50IGJ1ZmZlciAoc2Vl IGxpYmF2dXRpbC9jaGFubmVsX2xheW91dC5oKQ0KPg0KPiArICAgIGludCAgICAgICAgZHVtcF9w Y207ICAgICAgIC8vLzwgZmxhZyB0byBkdW1wIHBjbQ0KPiArICAgIGludCAgICAgICAgKmR1bXBf cGNtX2ZkczsgICAvLy88IGR1bXAgZmlsZXMNCj4gKyAgICB1bnNpZ25lZCBuYl9kdW1wX3BjbV9m ZHM7ICAgLy8vPCBudW1iZXIgb2YgZHVtcCBmaWxlDQo+ICsNCj4gICAgICAvKioNCj4gICAgICAg KiBEZWZpbmUgdGhlIHRpbWUgYmFzZSB1c2VkIGJ5IHRoZSBQVFMgb2YgdGhlIGZyYW1lcy9zYW1w bGVzDQo+ICAgICAgICogd2hpY2ggd2lsbCBwYXNzIHRocm91Z2ggdGhpcyBsaW5rLg0KPiAtLQ0K PiAyLjM0LjENCj4NCg0KQ2FuJ3QgeW91IHVzZSB0aGUgYXNwbGl0IGZpbHRlciB0byBkdXBsaWNh dGUgdGhlIGF1ZGlvPw0KDQotIEFuZHJlYXMNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18NCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QNCmZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnDQpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwNCg0KVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsDQpm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUi Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVn LWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBl Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNp dCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdp dGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=