From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E450C07542 for ; Mon, 27 May 2019 09:09:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B8EAC21734 for ; Mon, 27 May 2019 09:09:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="kQHrDDP9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726417AbfE0JJu (ORCPT ); Mon, 27 May 2019 05:09:50 -0400 Received: from dc2-smtprelay2.synopsys.com ([198.182.61.142]:35180 "EHLO smtprelay-out1.synopsys.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726338AbfE0JJt (ORCPT ); Mon, 27 May 2019 05:09:49 -0400 Received: from mailhost.synopsys.com (dc2-mailhost2.synopsys.com [10.12.135.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 94E45C0BBE; Mon, 27 May 2019 09:09:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1558948173; bh=3VN+RZyNkIZ2uO7YsE/o/Gbo1vU97958SdQNoio+yVg=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=kQHrDDP9NsgZJP/Jl3JPf0Cmb+yNLzx9uulJavGohEq4aO6wh31wUXSdWwhTzXX6P lfJplXtdmBF+NWqiQYaxxLu2eFVvOGJktl9G3Xm05WJ9fqOzJu8olKWByifiU2Kmvf G4+S1dxX/mYHuK2+HcISuPwlK+6yhXrZWPXMll7ikjMFRGr5O86SS01xsXdh+b3kUF id102xmp+DxbntU4TfmN/sZmk0g6Ra/w0CUf1V9gY/RoRmdnN1putON7EAIS687mKZ YqkBb/jPCA3SiXYOQDE28RF1hYVqYHGg4yDCh2tor/4NWjYZLU5zXgMyjsgtPKmleJ oqE0cojbFV88g== Received: from US01WXQAHTC1.internal.synopsys.com (us01wxqahtc1.internal.synopsys.com [10.12.238.230]) (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (No client certificate requested) by mailhost.synopsys.com (Postfix) with ESMTPS id 22CDBA009B; Mon, 27 May 2019 09:09:43 +0000 (UTC) Received: from DE02WEHTCB.internal.synopsys.com (10.225.19.94) by US01WXQAHTC1.internal.synopsys.com (10.12.238.230) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 27 May 2019 02:09:42 -0700 Received: from DE02WEMBXB.internal.synopsys.com ([fe80::95ce:118a:8321:a099]) by DE02WEHTCB.internal.synopsys.com ([::1]) with mapi id 14.03.0415.000; Mon, 27 May 2019 11:09:40 +0200 From: Gustavo Pimentel To: Alan Mikhak , Gustavo Pimentel CC: "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kishon@ti.com" , "lorenzo.pieralisi@arm.com" , "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "jingoohan1@gmail.com" , "bhelgaas@google.com" , "wen.yang99@zte.com.cn" , "kjlu@umn.edu" , "linux-riscv@lists.infradead.org" , "palmer@sifive.com" , "paul.walmsley@sifive.com" Subject: RE: [PATCH] PCI: endpoint: Add DMA to Linux PCI EP Framework Thread-Topic: [PATCH] PCI: endpoint: Add DMA to Linux PCI EP Framework Thread-Index: AQHVEbZo9i5IX7USPEy/Zr+iai91iqZ58mjggACaWYCABB98cA== Date: Mon, 27 May 2019 09:09:39 +0000 Message-ID: <305100E33629484CBB767107E4246BBB0A6FC308@DE02WEMBXB.internal.synopsys.com> References: <1558650258-15050-1-git-send-email-alan.mikhak@sifive.com> <305100E33629484CBB767107E4246BBB0A6FAFFD@DE02WEMBXB.internal.synopsys.com> In-Reply-To: Accept-Language: pt-PT, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: =?utf-8?B?UEcxbGRHRStQR0YwSUc1dFBTSmliMlI1TG5SNGRDSWdjRDBpWXpwY2RYTmxj?= =?utf-8?B?bk5jWjNWemRHRjJiMXhoY0hCa1lYUmhYSEp2WVcxcGJtZGNNRGxrT0RRNVlq?= =?utf-8?B?WXRNekprTXkwMFlUUXdMVGcxWldVdE5tSTROR0poTWpsbE16VmlYRzF6WjNO?= =?utf-8?B?Y2JYTm5MVEl6TURWa1l6ZzVMVGd3TldZdE1URmxPUzA1T0RneUxXWTRPVFJq?= =?utf-8?B?TWpjek9EQTBNbHhoYldVdGRHVnpkRnd5TXpBMVpHTTRZUzA0TURWbUxURXha?= =?utf-8?B?VGt0T1RnNE1pMW1PRGswWXpJM016Z3dOREppYjJSNUxuUjRkQ0lnYzNvOUlq?= =?utf-8?B?UXdNRGs0SWlCMFBTSXhNekl3TXpReU1UYzNOemczTWpFd09Ea2lJR2c5SWts?= =?utf-8?B?c1lqZDRXakYyVkdZNFdYQkdXRU14ZG1GTmREVlRiWEl5Y3owaUlHbGtQU0lp?= =?utf-8?B?SUdKc1BTSXdJaUJpYnowaU1TSWdZMms5SW1OQlFVRkJSVkpJVlRGU1UxSlZS?= =?utf-8?B?azVEWjFWQlFVSlJTa0ZCUWtKelpWaHZZWGhVVmtGWFIwSXpTVEpIZEZwR1Fs?= =?utf-8?B?bFpTR05xV1dFeGExVkZUMEZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRklRVUZCUVVOclEwRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGRlFVRlJRVUpCUVVGQlJuUmlRbkIzUVVGQlFVRkJRVUZCUVVGQlFVRkJT?= =?utf-8?B?alJCUVVGQ2JVRkhhMEZpWjBKb1FVYzBRVmwzUW14QlJqaEJZMEZDYzBGSFJV?= =?utf-8?B?RmlaMEoxUVVkclFXSm5RbTVCUmpoQlpIZENhRUZJVVVGYVVVSjVRVWN3UVZs?= =?utf-8?B?UlFubEJSM05CUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVWQlFVRkJRVUZCUVVG?= =?utf-8?B?QlowRkJRVUZCUVc1blFVRkJSMWxCWW5kQ01VRkhORUZhUVVKNVFVaHJRVmgz?= =?utf-8?B?UW5kQlIwVkJZMmRDTUVGSE5FRmFVVUo1UVVoTlFWaDNRbTVCUjFsQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRlJR?= =?utf-8?B?VUZCUVVGQlFVRkJRMEZCUVVGQlFVTmxRVUZCUVZwblFuWkJTRlZCWW1kQ2Ew?= =?utf-8?B?RklTVUZsVVVKbVFVaEJRVmxSUW5sQlNGRkJZbWRDYkVGSVNVRmpkMEptUVVo?= =?utf-8?B?TlFWbFJRblJCU0UxQlpGRkNkVUZIWTBGWWQwSnFRVWM0UVdKblFtMUJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZDUVVGQlFVRkJRVUZCUVVsQlFVRkJRVUZLTkVGQlFVSnRRVWM0?= =?utf-8?B?UVdSUlFuVkJSMUZCWTJkQ05VRkdPRUZqUVVKb1FVaEpRV1JCUW5WQlIxVkJZ?= =?utf-8?B?MmRDZWtGR09FRmpkMEpvUVVjd1FXTjNRakZCUnpSQlduZENaa0ZJU1VGYVVV?= =?utf-8?B?SjZRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlJVRkJRVUZCUVVGQlFVRm5RVUZCUVVGQmJt?= =?utf-8?B?ZEJRVUZIV1VGaWQwSXhRVWMwUVZwQlFubEJTR3RCV0hkQ2QwRkhSVUZqWjBJ?= =?utf-8?B?d1FVYzBRVnBSUW5sQlNFMUJXSGRDZWtGSE1FRmhVVUpxUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVkZCUVVGQlFVRkJRVUZE?= =?utf-8?B?UVVGQlFVRkJRMlZCUVVGQldtZENka0ZJVlVGaVowSnJRVWhKUVdWUlFtWkJT?= =?utf-8?B?RUZCV1ZGQ2VVRklVVUZpWjBKc1FVaEpRV04zUW1aQlNFMUJaRUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVKQlFV?= =?utf-8?B?RkJRVUZCUVVGQlNVRkJRVUZCUVVvMFFVRkJRbTFCUnpoQlpGRkNkVUZIVVVG?= =?utf-8?B?alowSTFRVVk0UVdOQlFtaEJTRWxCWkVGQ2RVRkhWVUZqWjBKNlFVWTRRV1JC?= =?utf-8?B?UW5wQlJ6QkJXWGRCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkZRVUZCUVVGQlFVRkJRV2RCUVVGQlFVRnVaMEZCUVVkWlFXSjNR?= =?utf-8?B?akZCUnpSQldrRkNlVUZJYTBGWWQwSjNRVWRGUVdOblFqQkJSelJCV2xGQ2VV?= =?utf-8?B?RklUVUZZZDBJeFFVY3dRVmwzUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCVVVGQlFVRkJRVUZCUVVOQlFVRkJRVUZEWlVG?= =?utf-8?B?QlFVRmFkMEl3UVVoTlFWaDNRbmRCU0VsQlluZENhMEZJVlVGWmQwSXdRVVk0?= =?utf-8?B?UVdSQlFubEJSMFZCWVZGQ2RVRkhhMEZpWjBKdVFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFrRkJRVUZCUVVGQlFVRkpR?= =?utf-8?B?VUZCUVVGQlNqUkJRVUZDZWtGSFJVRmlRVUpzUVVoTlFWaDNRbWhCUjAxQldY?= =?utf-8?B?ZENka0ZJVlVGaVowSXdRVVk0UVdOQlFuTkJSMFZCWW1kQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVVZCUVVG?= =?utf-8?B?QlFVRkJRVUZCWjBGQlFVRkJRVzVuUVVGQlNFMUJXVkZDYzBGSFZVRmpkMEpt?= =?utf-8?B?UVVoRlFXUlJRblpCU0ZGQldsRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGUlFVRkJRVUZCUVVGQlEwRkJRVUZCUVVObFFVRkJRV04zUW5WQlNF?= =?utf-8?B?RkJZM2RDWmtGSGQwRmhVVUpxUVVkVlFXSm5RbnBCUjFWQldIZENNRUZIVlVG?= =?utf-8?B?alowSjBRVVk0UVUxUlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkNRVUZCUVVGQlFVRkJRVWxCUVVGQlFVRktORUZC?= =?utf-8?B?UVVKNlFVYzBRV05CUW5wQlJqaEJZa0ZDY0VGSFRVRmFVVUoxUVVoTlFWcFJR?= =?utf-8?B?bVpCU0ZGQldsRkNlVUZITUVGWWQwSjZRVWhSUVdSUlFtdEJSMVZCWW1kQ01F?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUlVGQlFVRkJRVUZCUVVGblFV?= =?utf-8?B?RkJRVUZCYm1kQlFVRklXVUZhZDBKbVFVZHpRVnBSUWpWQlNHTkJZbmRDZVVG?= =?utf-8?B?SFVVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFWRkJRVUZC?= =?utf-8?Q?QUFBQUFDQUFBQUFBQT0iLz48L21ldGE+?= x-originating-ip: [10.107.25.131] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org T24gRnJpLCBNYXkgMjQsIDIwMTkgYXQgMjA6NDI6NDMsIEFsYW4gTWlraGFrIDxhbGFuLm1pa2hh a0BzaWZpdmUuY29tPiANCndyb3RlOg0KDQpIaSBBbGFuLA0KDQo+IE9uIEZyaSwgTWF5IDI0LCAy MDE5IGF0IDE6NTkgQU0gR3VzdGF2byBQaW1lbnRlbA0KPiA8R3VzdGF2by5QaW1lbnRlbEBzeW5v cHN5cy5jb20+IHdyb3RlOg0KPiA+DQo+ID4gSGkgQWxhbiwNCj4gPg0KPiA+IFRoaXMgcGF0Y2gg aW1wbGVtZW50YXRpb24gaXMgdmVyeSBIVyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgYW5kDQo+ ID4gcmVxdWlyZXMgdGhlIERNQSB0byBleHBvc2VkIHRocm91Z2ggUENJZSBCQVJzLCB3aGljaCBh cmVuJ3QgYWx3YXlzIHRoZQ0KPiA+IGNhc2UuIEJlc2lkZXMsIHlvdSBhcmUgZGVmaW5pbmcgc29t ZSBjb250cm9sIGJpdHMgb24NCj4gPiBpbmNsdWRlL2xpbnV4L3BjaS1lcGMuaCB0aGF0IG1heSBu b3QgaGF2ZSBhbnkgbWVhbmluZyB0byBvdGhlciB0eXBlcyBvZg0KPiA+IERNQS4NCj4gPg0KPiA+ IEkgZG9uJ3QgdGhpbmsgdGhpcyB3YXMgd2hhdCBLaXNob24gaGFkIGluIG1pbmQgd2hlbiBoZSBk ZXZlbG9wZWQgdGhlDQo+ID4gcGNpdGVzdCwgYnV0IGxldCBzZWUgd2hhdCBLaXNob24gd2FzIHRv IHNheSBhYm91dCBpdC4NCj4gPg0KPiA+IEkndmUgZGV2ZWxvcGVkIGEgRE1BIGRyaXZlciBmb3Ig RFdDIFBDSSB1c2luZyBMaW51eCBLZXJuZWwgRE1BZW5naW5lIEFQSQ0KPiA+IGFuZCB3aGljaCBJ IHN1Ym1pdHRlZCBzb21lIGRheXMgYWdvLg0KPiA+IEJ5IGhhdmluZyBhIERNQSBkcml2ZXIgd2hp Y2ggaW1wbGVtZW50ZWQgdXNpbmcgRE1BZW5naW5lIEFQSSwgbWVhbnMgdGhlDQo+ID4gcGNpdGVz dCBjYW4gdXNlIHRoZSBETUFlbmdpbmUgY2xpZW50IEFQSSwgd2hpY2ggd2lsbCBiZSBjb21wbGV0 ZWx5DQo+ID4gZ2VuZXJpYyB0byBhbnkgb3RoZXIgRE1BIGltcGxlbWVudGF0aW9uLg0KPiA+DQo+ ID4gTXkgRE1BIGRyaXZlciBmb3IgRFdDIFBDSSB3YXMgZG9uZSB0aGlua2luZyBvbiBteSB1c2Ug Y2FzZSwgd2hpY2ggaXMgd2FzDQo+ID4gaW50ZXJhY3RpbmcgZnJvbSB0aGUgUm9vdCBDb21wbGV4 IHNpZGUgd2l0aCBETUEgSVAgaW1wbGVtZW50ZWQgb24gdGhlDQo+ID4gRW5kcG9pbnQsIHdoaWNo IHdhcyBleHBvc2VkIHRocm91Z2ggUENJIEJBUnMuIEhvd2V2ZXIsIEkgdGhpbmsgaXQgd291bGQN Cj4gPiBiZSBwb3NzaWJsZSB0byByZXVzZSB0aGUgc2FtZSBjb3JlIGNvZGUgYW5kIGluc3RlYWQg b2YgdXNpbmcgdGhlIFBDSS1nbHVlDQo+ID4gdG8gYWRhcHQgaXQgYW5kIGJlIHVzZWQgZWFzaWx5 IG9uIHRoZSBFbmRwb2ludCBzaWRlIGFuZCB0byBiZSB0cmlnZ2VyZWQNCj4gPiB0aGVyZS4NCj4g Pg0KPiA+IEd1c3Rhdm8NCj4gDQo+IEhpIEd1c3Rhdm8sDQo+IA0KPiBJIHNhdyB5b3VyIHBhdGNo ZXMgZm9yIHRoZSBETUEgZHJpdmVyIGZvciBEV0MgUENJIHdoaWNoIGFkZGVkIHRoZSBFRERBDQo+ IGRyaXZlciB0byBwY2lfZW5kcG9pbnRfdGVzdC5jIG9uIHRoZSBob3N0IHNpZGUuIFRoaXMgc3Vn Z2VzdGVkIHRvIG1lDQo+IHRoYXQgdGhlIHVzZXIgd291bGQgaW52b2tlIHBjaXRlc3Qgb24gdGhl IGhvc3Qgc2lkZSB0byBleGVyY2lzZSB5b3VyDQo+IGRyaXZlciBvbiB0aGUgZW5kcG9pbnQuDQo+ IA0KPiBIb3dldmVyLCBJIGRpZG4ndCBzZWUgYW55IGNoYW5nZXMgdG8gcGNpLWVwZi10ZXN0LmMg dG8gbW9kaWZ5IHRoZQ0KPiBwY2lfZXBmX3Rlc3Rfd3JpdGUoKSBhbmQgcGNpX2VwZl90ZXN0X3Jl YWQoKSBmdW5jdGlvbnMgdG8gdXNlIERNQQ0KPiBpbnN0ZWFkIG9mIG1lbWNweV90b2lvKCkgYW5k IG1lbWNweV9mcm9taW8oKSwgcmVzcGVjdGl2ZWx5Lg0KDQpJIGRpZG4ndCBhZGQgdGhlIERNQSBl bmdpbmUgY2xpZW50IEFQSSB0byB0aGUgcGNpdGVzdCB5ZXQuIEkgd2FzIHdhaXRpbmcgDQpmb3Ig dGhlIGVETUEgZHJpdmVyIHRvIGJlIGludGVncmF0ZWQgb24gS2VybmVsIGJlZm9yZSBkb2luZyBh bnkgb24gDQpwY2l0ZXN0Lg0KDQo+IA0KPiBJIGhhdmUgZm91ciBzZXBhcmF0ZSBETUEgcmVxdWly ZW1lbnRzIGluIG1pbmQgYXMgbW90aXZhdGlvbiBmb3IgdGhpcyBwYXRjaC4NCj4gDQo+IFRoZSBm b2xsb3dpbmcgdHdvIHJlcXVpcmVtZW50cyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhpcyBwYXRjaDoN Cj4gTG9jYWwgRE1BIHdyaXRlIG9yIHJlYWQgdHJhbnNmZXIgaW5pdGlhdGVkIGJ5IGVuZHBvaW50 IHVuZGVyIHVzZXINCj4gY29tbWFuZCBmcm9tIHRoZSBob3N0IGJldHdlZW4gc3lzdGVtIGFuZCBl bmRwb2ludCBtZW1vcnkgYnVmZmVycyB1c2luZw0KPiB0aGUgZW5kcG9pbnQgRE1BIGNvbnRyb2xs ZXIgd2l0aCBhIGxvY2FsIGludGVycnVwdC4NCj4gMSkgc2luZ2xlIGJsb2NrDQo+IDIpIGxpbmtl ZC1saXN0IG1vZGUNCg0KSG93ZXZlciwgaW4gbW9zdCBjYXNlcywgeW91IHdpbGwgbm90IGhhdmUg dGhlIERNQSBibG9jayByZWdpc3RlcnMgb3IgDQpsaW5rZWQgbGlzdCBtZW1vcnkgYWNjZXNzaWJs ZSBvciBkZWZpbmVkIG9uIFBDSSBCQVJzIGFuZCBiYXNlZCBvbiBJIGhhdmUgDQpzZWVuIGluIHlv dXIgcGF0Y2gsIHRoZSB3aG9sZSBwYXRjaCBpcyBiYXNlZCBvbiB0aGF0IHByZW1pc2UuIFRoZSBj dXJyZW50IA0KaW1wbGVtZW50YXRpb24gaXMgbm90IGdlbmVyaWMgYW5kIGhpZ2hseSBkZXBlbmRl bnQgb24gSVAgYW5kIGRlc2lnbi4NCkkgc3Ryb25nbHkgYmVsaWV2ZSB3aXRoIHNvbWUgc2xpZ2h0 IG1vZGlmaWNhdGlvbnMgaXQgd291bGQgYmUgcG9zc2libGUgdG8gDQpydW4gdGhlIERNQSBlbmdp bmUgY29udHJvbGxlciBkcml2ZXIgd2l0aCBhIHBsYXRmb3JtIGdsdWUtbG9naWMgb24gdGhlIA0K RW5kcG9pbnQgc2lkZSwgd2hpY2ggY291bGQgaW50ZXJhY3Qgd2l0aCBwY2lfZXBmX3Rlc3QgZHJp dmVyLiBUaGlzIHdheSANCnRoZSBwY2l0ZXN0IHdvdWxkIGJlIGFsd2F5cyBnZW5lcmljIHRvIGFs bCBwcm9kdWN0cy4NCg0KPiANCj4gVGhpcyBwYXRjaCBhbnRpY2lwYXRlcyB0d28gbW9yZSByZXF1 aXJlbWVudHMgeWV0IHRvIGJlIGltcGxlbWVudGVkIGluDQo+IGZ1dHVyZSBwYXRjaGVzOg0KPiBS ZW1vdGUgRE1BIHdyaXRlIG9yIHJlYWQgdHJhbnNmZXIgaW5pdGlhdGVkIGJ5IGhvc3QgYmV0d2Vl biBzeXN0ZW0gYW5kDQo+IGVuZHBvaW50IG1lbW9yeSBidWZmZXJzIHVzaW5nIHRoZSBlbmRwb2lu dCBETUEgY29udHJvbGxlciB3aXRoIGEgbG9jYWwNCj4gaW50ZXJydXB0IHRvIHRoZSBlbmRwb2lu dCBwcm9jZXNzb3IgYW5kIGEgcmVtb3RlIGludGVycnVwdCB0byB0aGUgaG9zdA0KPiBwcm9jZXNz Lg0KPiAxKSBzaW5nbGUgYmxvY2sNCj4gMikgbGlua2VkLWxpc3QgbW9kZQ0KDQpUaGF0J3Mgd2hh dCB0aGUgc3VibWl0dGVkIHBhdGNoIGRyaXZlciBkb2VzLiBJIGRpZG4ndCBkZXZlbG9wIHRoZSAN CmludGVyYWN0aW9uIHdpdGggdG8gcGNpdGVzdCwgaG93ZXZlciwgd2hpbGUgZGV2ZWxvcGluZyBE VyBlRE1BIElQIGRyaXZlciwgDQpJJ3ZlIHNlbnQgaW4gc29tZSBhbiBSRkMgcGF0Y2ggY29udGFp bmluZyBkdy1lZG1hLXRlc3QgZHJpdmVyIHRoYXQgDQpzdGltdWxhdGVzIHRoZSBEVyBlRE1BLg0K DQo+IA0KPiBUaGUgZGVzY3JpcHRvciBmb3JtYXQgZGVmaW5lZCBpbiBwY2ktZXBjLmggYWxsb3dz IGZvciBwY2ktZXBmLXRlc3QuYw0KPiB0byBiZSBleHBhbmRlZCBvdmVyIHRpbWUgdG8gaW5pdGlh dGUgbW9yZSBlbGFib3JhdGUgRE1BIHRlc3RzIHRvDQo+IGV4ZXJjaXNlIG90aGVyIGVuZHBvaW50 IERNQSBzY2VuYXJpb3MuDQoNClllcywgYnV0IHRoYXQncyBub3QgdGhlIG9yaWdpbmFsIGlzc3Vl IGJlZW4gZGlzY3Vzc2VkIGhlcmUuIEJ1dCBsZXQncyBzZWUgDQp3aGF0IEtpc2hvbiBhcyB0byBz YXksIEluIHRoZSBlbmQsIGhlIGlzIHRoZSBtYWludGFpbmVyIG9mIHRoaXMgdG9vbC4NCg0KUmVn YXJkcywNCkd1c3Rhdm8NCg0KPiANCj4gVGhlIGZvbGxvd2luZyBpcyBhIHNhbXBsZSBvdXRwdXQg b2YgdGhlIHBjaXRlc3QgdXNhZ2UgZm9yIGV4ZXJjaXNpbmcNCj4gRE1BIG9wZXJhdGlvbnMgb24g dGhlIGVuZHBvaW50Og0KPiANCj4gJCBwY2l0ZXN0IC1yIC1kDQo+IFJFQUQgKCAxMDI0MDAgYnl0 ZXMpOiBPS0FZDQo+ICQgcGNpdGVzdCAtdyAtZA0KPiBXUklURSAoIDEwMjQwMCBieXRlcyk6IE9L QVkNCj4gJCBwY2l0ZXN0IC13IC1kIC1MDQo+IFdSSVRFICggMTAyNDAwIGJ5dGVzKTogT0tBWQ0K PiAkIHBjaXRlc3QgLXIgLWQgLUwNCj4gUkVBRCAoIDEwMjQwMCBieXRlcyk6IE9LQVkNCj4gDQo+ IFRoZSBhYm92ZSBhcmUgZXhlY3V0ZWQgdXNpbmcgRE1BIG9wZXJhdGlvbnMgYXMgb3Bwb3NlZCB0 byB0aGUNCj4gZm9sbG93aW5nIHdoaWNoIHVzZSBtZW1jcHlfdG9pbygpIGFuZCBtZW1jcHlfZnJv bWlvKCkuDQo+IA0KPiAkIHBjaXRlc3QgLXINCj4gUkVBRCAoIDEwMjQwMCBieXRlcyk6IE9LQVkN Cj4gJCBwY2l0ZXN0IC13DQo+IFdSSVRFICggMTAyNDAwIGJ5dGVzKTogT0tBWQ0KPiANCj4gUmVn YXJkcywNCj4gQWxhbiBNaWtoYWsNCj4gDQo+IA0KPiANCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogQWxhbiBNaWtoYWsgPGFsYW4ubWlraGFrQHNpZml2ZS5j b20+DQo+ID4NCj4gPiBTZW50OiAyMyBkZSBtYWlvIGRlIDIwMTkgMjM6MjQNCj4gPiBUbzogbGlu dXgtcGNpQHZnZXIua2VybmVsLm9yZzsNCj4gPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn OyBraXNob25AdGkuY29tOyBsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29tOw0KPiA+IGFybmRAYXJu ZGIuZGU7IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBqaW5nb29oYW4xQGdtYWlsLmNvbTsN Cj4gPiBndXN0YXZvLnBpbWVudGVsQHN5bm9wc3lzLmNvbTsgYmhlbGdhYXNAZ29vZ2xlLmNvbTsN Cj4gPiB3ZW4ueWFuZzk5QHp0ZS5jb20uY247IGtqbHVAdW1uLmVkdTsgbGludXgtcmlzY3ZAbGlz dHMuaW5mcmFkZWFkLm9yZzsNCj4gPiBwYWxtZXJAc2lmaXZlLmNvbTsgcGF1bC53YWxtc2xleUBz aWZpdmUuY29tDQo+ID4gQ2M6IEFsYW4gTWlraGFrDQo+ID4gPGFsYW4ubWlraGFrQHNpZml2ZS5j b20+DQo+ID4gU3ViamVjdDogW1BBVENIXSBQQ0k6IGVuZHBvaW50OiBBZGQgRE1BIHRvIExpbnV4 DQo+ID4gUENJIEVQIEZyYW1ld29yaw0KPiA+DQo+ID4gVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHBh dGNoIHRoZSBmb2xsb3dpbmcgcGF0Y2hlczoNCj4gPiBbUEFUQ0ggdjIgMS8yXSB0b29sczogUENJ OiBGaXggYnJva2VuIHBjaXRlc3QgY29tcGlsYXRpb24NCj4gPiBbUEFUQ0ggdjIgMi8yXSB0b29s czogUENJOiBGaXggY29tcGlsZXIgd2FybmluZyBpbiBwY2l0ZXN0DQo+ID4NCj4gPiBUaGUgTGlu dXggUENJIEVuZHBvaW50IEZyYW1ld29yayBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBpbml0 aWF0aW9uIG9mDQo+ID4gRE1BIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2gg ZXh0ZW5kcyB0aGUgTGludXggUENJIEVuZHBvaW50DQo+ID4gRnJhbWV3b3JrIGJ5IGFkZGluZyBz dXBwb3J0IGZvciB0aGUgdXNlciBvZiBwY2l0ZXN0IHRvIGluaXRpdGF0ZSBETUENCj4gPiByZWFk IGFuZCB3cml0ZSBvcGVyYXRpb25zIHZpYSBQQ0llIGVuZHBvaW50IGNvbnRyb2xsZXIgZHJpdmVy cy4gVGhpcw0KPiA+IHBhdGNoDQo+ID4gcHJvdmlkZXMgdGhlIG1lYW5zIGJ1dCBsZWF2ZXMgaXQg dXAgdG8gaW5kaXZpZHVhbCBQQ0llIGVuZHBvaW50DQo+ID4gY29udHJvbGxlcg0KPiA+IGRyaXZl cnMgdG8gaW1wbGVtZW50IERNQSBzdXBwb3J0LCBpZiBkZXNpcmVkLg0KPiA+DQo+ID4gVGhpcyBw YXRjaCBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgcGNpdGVzdCB1c2VyIHRvIGluc3RydWN0IHRo ZSBlbmRwb2ludA0KPiA+IHRvIGluaXRpYXRlIGxvY2FsIERNQSB0cmFuc2ZlcnMgY29uc2lzdGlu ZyBvZiBzaW5nbGUgb3IgbGlua2VkLWxpc3QNCj4gPiBibG9ja3MNCj4gPiBpbnRvIGVuZHBvaW50 IGJ1ZmZlcnMgdXNpbmcgdGhlIGVuZHBvaW50IERNQSBjb250cm9sbGVyLiBJdCBhbnRpY2lwYXRl cw0KPiA+IHRoYXQgZnV0dXJlIHBhdGNoZXMgd291bGQgYWRkIHN1cHBvcnQgZm9yIHRoZSBwY2l0 ZXN0IHVzZXIgdG8gaW5zdHJ1Y3QNCj4gPiB0aGUgZW5kcG9pbnQgdG8gcGFydGljaXBhdGUgaW4g cmVtb3RlIERNQSB0cmFuc2ZlcnMgaW5pdGlhdGVkIGZyb20gdGhlDQo+ID4gcm9vdCBjb21wbGV4 IGludG8gZW5kcG9pbnQgYnVmZmVycyB1c2luZyB0aGUgZW5kcG9pbnQgRE1BIGNvbnRyb2xsZXIu DQo+ID4NCj4gPiBUaGlzIHBhdGNoIGRlcGVuZHMgb24gdGhlIGZpcnN0IHR3byBwYXRjaGVzIGlu IGl0cyBwYXRjaHNldCB0byByZXNvbHZlDQo+ID4gYSBwcmUtZXhpc3RpbmcgcGNpdGVzdCBjb21w aWxhdGlvbiBlcnJvci4NCj4gPg0KPiA+ICogQWRkIC1kIGZsYWcgdG8gcGNpdGVzdCBjb21tYW5k IGxpbmUgb3B0aW9ucyBzbyB1c2VyIGNhbiBzcGVjaWZ5DQo+ID4gdGhhdCBhIHJlYWQgb3Igd3Jp dGUgY29tbWFuZCBzaG91bGQgZXhlY3V0ZSB1c2luZyBsb2NhbCBETUEgdG8gYmUNCj4gPiBpbml0 aWF0ZWQgYnkgZW5kcG9pbnQuDQo+ID4NCj4gPiAqIEFkZCAtTCBmbGFnIHRvIHBjaXRlc3QgY29t bWFuZCBsaW5lIG9wdGlvbnMgc28gdXNlciBjYW4gc3BlY2lmeQ0KPiA+IHRoYXQgRE1BIG9wZXJh dGlvbiBzaG91bGQgZXhlY3V0ZSBpbiBsaW5rZWQtbGlzdCBtb2RlLg0KPiA+DQo+ID4gKiBBZGQg c3RydWN0IHBjaXRlc3RfZG1hIGZvciBwY2l0ZXN0IHRvIGNvbW11bmljYXRlIERNQSBvcHRpb25z DQo+ID4gZnJvbSBob3N0IHVzZXJzcGFjZSB0byBwY2lfZW5kcG9pbnRfdGVzdCBkcml2ZXIgaW4g aG9zdCBrZXJuZWwNCj4gPiB2aWEgdHdvIG5ldyBpb2N0bHMgUENJVEVTVF9XUklURV9ETUEgYW5k IFBDSVRFU1RfUkVBRF9ETUEuDQo+ID4NCj4gPiAqIEFkZCBjb21tYW5kIGZsYWdzIHNvIHBjaV9l bmRwb2ludF90ZXN0IGRyaXZlciBydW5uaW5nIG9uIGhvc3QNCj4gPiBjYW4gY29tbXVuaWNhdGUg RE1BIHJlYWQgYW5kIHdyaXRlIG9wdGlvbnMgYWNyb3NzIHRoZSBQQ0kgYnVzDQo+ID4gdG8gcGNp LWVwZi10ZXN0IGRyaXZlciBydW5uaW5nIG9uIGVuZHBvaW50Lg0KPiA+DQo+ID4gKiBBZGQgc3Ry dWN0IHBjaV9lcGNfZG1hIHNvIHBjaS1lcGYtdGVzdCBkcml2ZXIgY2FuIGNyZWF0ZSBETUENCj4g PiByZWFkIGFuZCB3cml0ZSBkZXNjcmlwdG9ycyBmb3Igc2luZ2xlIG9yIGxpbmtlZC1saXN0IERN QSBvcGVyYXRpb25zDQo+ID4gYW5kIHBhc3Mgc3VjaCBkZXNjcmlwdG9ycyB0byBwY2ktZXBjLWNv cmUgdmlhIG5ldyBmdW5jdGlvbnMNCj4gPiBwY2lfZXBjX2RtYV9yZWFkKCkgYW5kIHBjaV9lcGNf ZG1hX3dyaXRlKCkuDQo+ID4NCj4gPiAqIEFkZCBmb3VyIG5ldyBmdW5jdGlvbnMgaW4gcGNpLWVw Zi10ZXN0IGRyaXZlciB0byBpbXBsZW1lbnQNCj4gPiBuZXcgRE1BIHJlYWQgYW5kIHdyaXRlIHRl c3RzIGJ5IGluaXRpYXRpbmcgbG9jYWwgRE1BIHRyYW5zZmVycw0KPiA+IGluIGxpbmtlZC1saXN0 IGFuZCBzaW5nbGUgbW9kZXMgdmlhIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlcg0KPiA+IGRyaXZl cnM6IHBjaV9lcGZfdGVzdF9yZWFkX2RtYSgpLCBwY2lfZXBmX3Rlc3RfcmVhZF9kbWFfbGlzdCgp LA0KPiA+IHBjaV9lcGZfdGVzdF93cml0ZV9kbWEoKSwgYW5kIHBjaV9lcGZfdGVzdF93cml0ZV9k bWFfbGlzdCgpLg0KPiA+DQo+ID4gKiBBZGQgZG1hX3JlYWQgYW5kIGRtYV93cml0ZSBmdW5jdGlv bnMgdG8gc3RydWN0IHBjaV9lcGNfb3BzDQo+ID4gc28gcGNpX2VwY19kbWFfcmVhZCgpIGFuZCBw Y2lfZXBjX2RtYV93cml0ZSgpIGZ1bmN0aW9ucyBjYW4NCj4gPiBwYXNzIERNQSBkZXNjcmlwdG9y cyBkb3duIHRoZSBzdGFjayB0byBwY2llLWRlc2lnbndhcmUtZXAgbGF5ZXIuDQo+ID4NCj4gPiAq IEFkZCBkbWFfcmVhZCBhbmQgZG1hX3dyaXRlIGZ1bmN0aW9ucyB0byBzdHJ1Y3QgZHdfcGNpZV9l cF9vcHMNCj4gPiBzbyBwY2llLWRlc2lnbndhcmUtZXAgbGF5ZXIgY2FuIGNvbW11bmljYXRlIERN QSBkZXNjcmlwdG9ycyBkb3duDQo+ID4gdGhlIHN0YWNrIHRvIHZlbmRvciBQQ0llIGVuZHBvaW50 IGNvbnRyb2xsZXIgZHJpdmVycy4NCj4gPg0KPiA+ICogQWRkIGRtYV9iYXNlIHBvaW50ZXIgdG8g c3RydWN0IGR3X3BjaWUgZm9yIHZlbmRvciBQQ0llIGVuZHBvaW50DQo+ID4gY29udHJvbGxlciBk cml2ZXIgdG8gc2V0IGlmIGl0IGltcGxlbWVudHMgRE1BIG9wZXJhdGlvbnMuDQo+ID4NCj4gPiAq IEFkZCB0d28gY29tbW9uIHBjaWUtZGVzaWdud2FyZSBmdW5jdGlvbnMgZHdfcGNpZV93cml0ZWxf ZG1hKCkNCj4gPiBhbmQgZHdfcGNpZV9yZWFkbF9kbWEoKSBmb3IgdXNlIGJ5IHZlbmRvciBQQ0ll IGVuZHBvaW50DQo+ID4gY29udHJvbGxlcnMgdG8gYWNjZXNzIERNQSByZWdpc3RlcnMgdmlhIHRo ZSBkbWFfYmFzZSBwb2ludGVyLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWxhbiBNaWtoYWsg PGFsYW4ubWlraGFrQHNpZml2ZS5jb20+DQo+ID4gLS0tDQo+ID4NCj4gPiBkcml2ZXJzL21pc2Mv cGNpX2VuZHBvaW50X3Rlc3QuYyAgICAgICAgICAgICAgICB8ICA3MiArKysrKysrLQ0KPiA+ICBk cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYyB8ICAyMiArKysN Cj4gPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmggICAgfCAg MTMgKysNCj4gPiAgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdGVzdC5j ICAgfCAyMTENCj4gPiArKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgZHJpdmVycy9wY2kv ZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMgICAgICAgICAgICAgfCAgNDYgKysrKysrDQo+ID4gIGlu Y2x1ZGUvbGludXgvcGNpLWVwYy5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrKysr DQo+ID4gIGluY2x1ZGUvdWFwaS9saW51eC9wY2l0ZXN0LmggICAgICAgICAgICAgICAgICAgIHwg ICA3ICsNCj4gPiAgdG9vbHMvcGNpL3BjaXRlc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMjkgKysrLQ0KPiA+ICA4IGZpbGVzIGNoYW5nZWQsIDQzMiBpbnNlcnRpb25zKCspLCAx MyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvcGNpX2Vu ZHBvaW50X3Rlc3QuYw0KPiA+IGIvZHJpdmVycy9taXNjL3BjaV9lbmRwb2ludF90ZXN0LmMNCj4g PiBpbmRleCA3YjAxNWYyYTFjNmYuLjYzYjg2ZDgxYTZiNSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2 ZXJzL21pc2MvcGNpX2VuZHBvaW50X3Rlc3QuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbWlzYy9wY2lf ZW5kcG9pbnRfdGVzdC5jDQo+ID4gQEAgLTM0LDYgKzM0LDcgQEANCj4gPiAgI2luY2x1ZGUgPGxp bnV4L3BjaV9yZWdzLmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUgPHVhcGkvbGludXgvcGNpdGVzdC5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPg0KPiA+DQo+ID4gICNkZWZpbmUgRFJW X01PRFVMRV9OQU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGNpLWVuZHBvaW50 LXRlc3QiDQo+ID4NCj4gPiBAQCAtNTEsNiArNTIsMjUgQEANCj4gPiAgI2RlZmluZSBDT01NQU5E X1JFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMykNCj4gPiAgI2RlZmluZSBDT01N QU5EX1dSSVRFICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNCkNCj4gPiAgI2RlZmluZSBD T01NQU5EX0NPUFkgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNSkNCj4gPiArI2RlZmlu ZSBDT01NQU5EX0ZMQUcyICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMzApDQo+ID4gKyNk ZWZpbmUgQ09NTUFORF9GTEFHMSAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKDMxKQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBDT01NQU5EX0ZMQUdTICAgICAgICAgICAgICAgICAgICAgICAgICAo Q09NTUFORF9GTEFHMSB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ09NTUFORF9GTEFHMikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ09NTUFO RF9GTEFHX05PTkUgICAgICAgICAgICAgICAgICAgICAgMA0KPiA+ICsjZGVmaW5lIENPTU1BTkRf RkxBR19ETUEgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkRfRkxBRzENCj4gPiArI2RlZmlu ZSBDT01NQU5EX0ZMQUdfRE1BX0xJU1QgICAgICAgICAgICAgICAgICBDT01NQU5EX0ZMQUcyDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIENPTU1BTkRfUkVBRF9ETUEgICAgICAgICAgICAgICAgICAgICAg IChDT01NQU5EX1JFQUQgfCBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENPTU1BTkRfRkxBR19ETUEpDQo+ID4gKyNkZWZpbmUgQ09NTUFORF9S RUFEX0RNQV9MSVNUICAgICAgICAgICAgICAgICAgKENPTU1BTkRfUkVBRF9ETUEgfCBcDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkRf RkxBR19ETUFfTElTVCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ09NTUFORF9XUklURV9ETUEgICAg ICAgICAgICAgICAgICAgICAgKENPTU1BTkRfV1JJVEUgfCBcDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkRfRkxBR19ETUEpDQo+ID4g KyNkZWZpbmUgQ09NTUFORF9XUklURV9ETUFfTElTVCAgICAgICAgICAgICAgICAgKENPTU1BTkRf V1JJVEVfRE1BIHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDT01NQU5EX0ZMQUdfRE1BX0xJU1QpDQo+ID4NCj4gPiAgI2RlZmluZSBQQ0lf RU5EUE9JTlRfVEVTVF9TVEFUVVMgICAgICAgICAgICAgICAweDgNCj4gPiAgI2RlZmluZSBTVEFU VVNfUkVBRF9TVUNDRVNTICAgICAgICAgICAgICAgICAgICBCSVQoMCkNCj4gPiBAQCAtNDI1LDcg KzQ0NSw5IEBAIHN0YXRpYyBib29sIHBjaV9lbmRwb2ludF90ZXN0X2NvcHkoc3RydWN0DQo+ID4g cGNpX2VuZHBvaW50X3Rlc3QgKnRlc3QsIHNpemVfdCBzaXplKQ0KPiA+ICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gLXN0YXRpYyBib29sIHBjaV9lbmRwb2ludF90ZXN0X3dy aXRlKHN0cnVjdCBwY2lfZW5kcG9pbnRfdGVzdCAqdGVzdCwNCj4gPiBzaXplX3Qgc2l6ZSkNCj4g PiArc3RhdGljIGJvb2wgcGNpX2VuZHBvaW50X3Rlc3Rfd3JpdGUoc3RydWN0IHBjaV9lbmRwb2lu dF90ZXN0ICp0ZXN0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCBzaXplLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBm bGFncykNCj4gPiAgew0KPiA+ICAgICAgICAgYm9vbCByZXQgPSBmYWxzZTsNCj4gPiAgICAgICAg IHUzMiByZWc7DQo+ID4gQEAgLTQ4MCw3ICs1MDIsNyBAQCBzdGF0aWMgYm9vbCBwY2lfZW5kcG9p bnRfdGVzdF93cml0ZShzdHJ1Y3QNCj4gPiBwY2lfZW5kcG9pbnRfdGVzdCAqdGVzdCwgc2l6ZV90 IHNpemUpDQo+ID4gICAgICAgICBwY2lfZW5kcG9pbnRfdGVzdF93cml0ZWwodGVzdCwgUENJX0VO RFBPSU5UX1RFU1RfSVJRX1RZUEUsIGlycV90eXBlKTsNCj4gPiAgICAgICAgIHBjaV9lbmRwb2lu dF90ZXN0X3dyaXRlbCh0ZXN0LCBQQ0lfRU5EUE9JTlRfVEVTVF9JUlFfTlVNQkVSLCAxKTsNCj4g PiAgICAgICAgIHBjaV9lbmRwb2ludF90ZXN0X3dyaXRlbCh0ZXN0LCBQQ0lfRU5EUE9JTlRfVEVT VF9DT01NQU5ELA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkRf UkVBRCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NTUFORF9SRUFE IHwgZmxhZ3MpOw0KPiA+DQo+ID4gICAgICAgICB3YWl0X2Zvcl9jb21wbGV0aW9uKCZ0ZXN0LT5p cnFfcmFpc2VkKTsNCj4gPg0KPiA+IEBAIC00OTQsNyArNTE2LDI0IEBAIHN0YXRpYyBib29sIHBj aV9lbmRwb2ludF90ZXN0X3dyaXRlKHN0cnVjdA0KPiA+IHBjaV9lbmRwb2ludF90ZXN0ICp0ZXN0 LCBzaXplX3Qgc2l6ZSkNCj4gPiAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+ IC1zdGF0aWMgYm9vbCBwY2lfZW5kcG9pbnRfdGVzdF9yZWFkKHN0cnVjdCBwY2lfZW5kcG9pbnRf dGVzdCAqdGVzdCwNCj4gPiBzaXplX3Qgc2l6ZSkNCj4gPiArc3RhdGljIGJvb2wgcGNpX2VuZHBv aW50X3Rlc3Rfd3JpdGVfZG1hKHN0cnVjdCBwY2lfZW5kcG9pbnRfdGVzdCAqdGVzdCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmcp DQo+ID4gK3sNCj4gPiArICAgICAgIHUzMiBmbGFncyA9IENPTU1BTkRfRkxBR19ETUE7DQo+ID4g KyAgICAgICBzdHJ1Y3QgcGNpdGVzdF9kbWEgZG1hOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChj b3B5X2Zyb21fdXNlcigmZG1hLCAodm9pZCAqKWFyZywgc2l6ZW9mKHN0cnVjdCBwY2l0ZXN0X2Rt YSkpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVBQ0NFUzsNCj4gPiArDQo+ID4gKyAg ICAgICBpZiAoZG1hLmxpc3QpDQo+ID4gKyAgICAgICAgICAgICAgIGZsYWdzIHw9IENPTU1BTkRf RkxBR19ETUFfTElTVDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcGNpX2VuZHBvaW50X3Rl c3Rfd3JpdGUodGVzdCwgZG1hLnNpemUsIGZsYWdzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGJvb2wgcGNpX2VuZHBvaW50X3Rlc3RfcmVhZChzdHJ1Y3QgcGNpX2VuZHBvaW50X3Rlc3Qg KnRlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6 ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBmbGFncykNCj4g PiAgew0KPiA+ICAgICAgICAgYm9vbCByZXQgPSBmYWxzZTsNCj4gPiAgICAgICAgIHZvaWQgKmFk ZHI7DQo+ID4gQEAgLTU0Miw3ICs1ODEsNyBAQCBzdGF0aWMgYm9vbCBwY2lfZW5kcG9pbnRfdGVz dF9yZWFkKHN0cnVjdA0KPiA+IHBjaV9lbmRwb2ludF90ZXN0ICp0ZXN0LCBzaXplX3Qgc2l6ZSkN Cj4gPiAgICAgICAgIHBjaV9lbmRwb2ludF90ZXN0X3dyaXRlbCh0ZXN0LCBQQ0lfRU5EUE9JTlRf VEVTVF9JUlFfVFlQRSwgaXJxX3R5cGUpOw0KPiA+ICAgICAgICAgcGNpX2VuZHBvaW50X3Rlc3Rf d3JpdGVsKHRlc3QsIFBDSV9FTkRQT0lOVF9URVNUX0lSUV9OVU1CRVIsIDEpOw0KPiA+ICAgICAg ICAgcGNpX2VuZHBvaW50X3Rlc3Rfd3JpdGVsKHRlc3QsIFBDSV9FTkRQT0lOVF9URVNUX0NPTU1B TkQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NTUFORF9XUklURSk7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NTUFORF9XUklURSB8IGZs YWdzKTsNCj4gPg0KPiA+ICAgICAgICAgd2FpdF9mb3JfY29tcGxldGlvbigmdGVzdC0+aXJxX3Jh aXNlZCk7DQo+ID4NCj4gPiBAQCAtNTU1LDYgKzU5NCwyMSBAQCBzdGF0aWMgYm9vbCBwY2lfZW5k cG9pbnRfdGVzdF9yZWFkKHN0cnVjdA0KPiA+IHBjaV9lbmRwb2ludF90ZXN0ICp0ZXN0LCBzaXpl X3Qgc2l6ZSkNCj4gPiAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0 aWMgYm9vbCBwY2lfZW5kcG9pbnRfdGVzdF9yZWFkX2RtYShzdHJ1Y3QgcGNpX2VuZHBvaW50X3Rl c3QgKnRlc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBhcmcpDQo+ID4gK3sNCj4gPiArICAgICAgIHUzMiBmbGFncyA9IENPTU1BTkRf RkxBR19ETUE7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcGNpdGVzdF9kbWEgZG1hOw0KPiA+ICsNCj4g PiArICAgICAgIGlmIChjb3B5X2Zyb21fdXNlcigmZG1hLCAodm9pZCAqKWFyZywgc2l6ZW9mKHN0 cnVjdCBwY2l0ZXN0X2RtYSkpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVBQ0NFUzsN Cj4gPiArDQo+ID4gKyAgICAgICBpZiAoZG1hLmxpc3QpDQo+ID4gKyAgICAgICAgICAgICAgIGZs YWdzIHw9IENPTU1BTkRfRkxBR19ETUFfTElTVDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4g cGNpX2VuZHBvaW50X3Rlc3RfcmVhZCh0ZXN0LCBkbWEuc2l6ZSwgZmxhZ3MpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICBzdGF0aWMgYm9vbCBwY2lfZW5kcG9pbnRfdGVzdF9zZXRfaXJxKHN0cnVjdCBw Y2lfZW5kcG9pbnRfdGVzdCAqdGVzdCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCByZXFfaXJxX3R5cGUpDQo+ID4gIHsNCj4gPiBAQCAtNjEyLDExICs2NjYs MTcgQEAgc3RhdGljIGxvbmcgcGNpX2VuZHBvaW50X3Rlc3RfaW9jdGwoc3RydWN0IGZpbGUNCj4g PiAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwNCj4gPiAgICAgICAgIGNhc2UgUENJVEVTVF9NU0lY Og0KPiA+ICAgICAgICAgICAgICAgICByZXQgPSBwY2lfZW5kcG9pbnRfdGVzdF9tc2lfaXJxKHRl c3QsIGFyZywgY21kID09IFBDSVRFU1RfTVNJWCk7DQo+ID4gICAgICAgICAgICAgICAgIGJyZWFr Ow0KPiA+ICsgICAgICAgY2FzZSBQQ0lURVNUX1dSSVRFX0RNQToNCj4gPiArICAgICAgICAgICAg ICAgcmV0ID0gcGNpX2VuZHBvaW50X3Rlc3Rfd3JpdGVfZG1hKHRlc3QsIGFyZyk7DQo+ID4gKyAg ICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBQQ0lURVNUX1JFQURfRE1BOg0K PiA+ICsgICAgICAgICAgICAgICByZXQgPSBwY2lfZW5kcG9pbnRfdGVzdF9yZWFkX2RtYSh0ZXN0 LCBhcmcpOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIGNhc2UgUENJ VEVTVF9XUklURToNCj4gPiAtICAgICAgICAgICAgICAgcmV0ID0gcGNpX2VuZHBvaW50X3Rlc3Rf d3JpdGUodGVzdCwgYXJnKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0gcGNpX2VuZHBvaW50 X3Rlc3Rfd3JpdGUodGVzdCwgYXJnLCBDT01NQU5EX0ZMQUdfTk9ORSk7DQo+ID4gICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgY2FzZSBQQ0lURVNUX1JFQUQ6DQo+ID4gLSAgICAg ICAgICAgICAgIHJldCA9IHBjaV9lbmRwb2ludF90ZXN0X3JlYWQodGVzdCwgYXJnKTsNCj4gPiAr ICAgICAgICAgICAgICAgcmV0ID0gcGNpX2VuZHBvaW50X3Rlc3RfcmVhZCh0ZXN0LCBhcmcsIENP TU1BTkRfRkxBR19OT05FKTsNCj4gPiAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gICAgICAg ICBjYXNlIFBDSVRFU1RfQ09QWToNCj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gcGNpX2VuZHBv aW50X3Rlc3RfY29weSh0ZXN0LCBhcmcpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9j b250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYw0KPiA+IGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMNCj4gPiBpbmRleCAyYmY1YTM1YzA1NzAu LjdlMjVjMGY1ZWRmMSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3 Yy9wY2llLWRlc2lnbndhcmUtZXAuYw0KPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL3BjaWUtZGVzaWdud2FyZS1lcC5jDQo+ID4gQEAgLTM2Niw2ICszNjYsMjYgQEAgZHdfcGNp ZV9lcF9nZXRfZmVhdHVyZXMoc3RydWN0IHBjaV9lcGMgKmVwYywgdTgNCj4gPiBmdW5jX25vKQ0K PiA+ICAgICAgICAgcmV0dXJuIGVwLT5vcHMtPmdldF9mZWF0dXJlcyhlcCk7DQo+ID4gIH0NCj4g Pg0KPiA+ICtzdGF0aWMgaW50IGR3X3BjaWVfZXBfZG1hX3JlYWQoc3RydWN0IHBjaV9lcGMgKmVw Yywgc3RydWN0IHBjaV9lcGNfZG1hDQo+ID4gKmRtYSkNCj4gPiArew0KPiA+ICsgICAgICAgc3Ry dWN0IGR3X3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKCFlcC0+b3BzLT5kbWFfcmVhZCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGVwLT5vcHMtPmRtYV9yZWFkKGVw LCBkbWEpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGR3X3BjaWVfZXBfZG1hX3dy aXRlKHN0cnVjdCBwY2lfZXBjICplcGMsIHN0cnVjdCBwY2lfZXBjX2RtYQ0KPiA+ICpkbWEpDQo+ ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBkd19wY2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0 YShlcGMpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICghZXAtPm9wcy0+ZG1hX3dyaXRlKQ0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gZXAtPm9wcy0+ZG1hX3dyaXRlKGVwLCBkbWEpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0 aWMgY29uc3Qgc3RydWN0IHBjaV9lcGNfb3BzIGVwY19vcHMgPSB7DQo+ID4gICAgICAgICAud3Jp dGVfaGVhZGVyICAgICAgICAgICA9IGR3X3BjaWVfZXBfd3JpdGVfaGVhZGVyLA0KPiA+ICAgICAg ICAgLnNldF9iYXIgICAgICAgICAgICAgICAgPSBkd19wY2llX2VwX3NldF9iYXIsDQo+ID4gQEAg LTM4MCw2ICs0MDAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcGNfb3BzIGVwY19vcHMg PSB7DQo+ID4gICAgICAgICAuc3RhcnQgICAgICAgICAgICAgICAgICA9IGR3X3BjaWVfZXBfc3Rh cnQsDQo+ID4gICAgICAgICAuc3RvcCAgICAgICAgICAgICAgICAgICA9IGR3X3BjaWVfZXBfc3Rv cCwNCj4gPiAgICAgICAgIC5nZXRfZmVhdHVyZXMgICAgICAgICAgID0gZHdfcGNpZV9lcF9nZXRf ZmVhdHVyZXMsDQo+ID4gKyAgICAgICAuZG1hX3JlYWQgICAgICAgICAgICAgICA9IGR3X3BjaWVf ZXBfZG1hX3JlYWQsDQo+ID4gKyAgICAgICAuZG1hX3dyaXRlICAgICAgICAgICAgICA9IGR3X3Bj aWVfZXBfZG1hX3dyaXRlDQo+ID4gIH07DQo+ID4NCj4gPiAgaW50IGR3X3BjaWVfZXBfcmFpc2Vf bGVnYWN5X2lycShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsIHU4IGZ1bmNfbm8pDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4g Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuaA0KPiA+IGluZGV4 IGI4OTkzZjJiNzhkZi4uMTFkNDRlYzhhY2M3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+ID4gKysrIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmgNCj4gPiBAQCAtMTk3LDYgKzE5Nyw4IEBA IHN0cnVjdCBkd19wY2llX2VwX29wcyB7DQo+ID4gICAgICAgICBpbnQgICAgICgqcmFpc2VfaXJx KShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsIHU4IGZ1bmNfbm8sDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIHBjaV9lcGNfaXJxX3R5cGUgdHlwZSwgdTE2IGludGVycnVwdF9u dW0pOw0KPiA+ICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9lcGNfZmVhdHVyZXMqICgqZ2V0X2Zl YXR1cmVzKShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXApOw0KPiA+ICsgICAgICAgaW50ICAgICAoKmRt YV9yZWFkKShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsIHN0cnVjdCBwY2lfZXBjX2RtYSAqZG1hKTsN Cj4gPiArICAgICAgIGludCAgICAgKCpkbWFfd3JpdGUpKHN0cnVjdCBkd19wY2llX2VwICplcCwg c3RydWN0IHBjaV9lcGNfZG1hICpkbWEpOw0KPiA+ICB9Ow0KPiA+DQo+ID4gIHN0cnVjdCBkd19w Y2llX2VwIHsNCj4gPiBAQCAtMjM4LDYgKzI0MCw3IEBAIHN0cnVjdCBkd19wY2llIHsNCj4gPiAg ICAgICAgIHZvaWQgX19pb21lbSAgICAgICAgICAgICpkYmlfYmFzZTI7DQo+ID4gICAgICAgICAv KiBVc2VkIHdoZW4gaWF0dV91bnJvbGxfZW5hYmxlZCBpcyB0cnVlICovDQo+ID4gICAgICAgICB2 b2lkIF9faW9tZW0gICAgICAgICAgICAqYXR1X2Jhc2U7DQo+ID4gKyAgICAgICB2b2lkIF9faW9t ZW0gICAgICAgICAgICAqZG1hX2Jhc2U7DQo+ID4gICAgICAgICB1MzIgICAgICAgICAgICAgICAg ICAgICBudW1fdmlld3BvcnQ7DQo+ID4gICAgICAgICB1OCAgICAgICAgICAgICAgICAgICAgICBp YXR1X3Vucm9sbF9lbmFibGVkOw0KPiA+ICAgICAgICAgc3RydWN0IHBjaWVfcG9ydCAgICAgICAg cHA7DQo+ID4gQEAgLTMyMyw2ICszMjYsMTYgQEAgc3RhdGljIGlubGluZSB1MzIgZHdfcGNpZV9y ZWFkbF9hdHUoc3RydWN0IGR3X3BjaWUNCj4gPiAqcGNpLCB1MzIgcmVnKQ0KPiA+ICAgICAgICAg cmV0dXJuIF9fZHdfcGNpZV9yZWFkX2RiaShwY2ksIHBjaS0+YXR1X2Jhc2UsIHJlZywgMHg0KTsN Cj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkd19wY2llX3dyaXRlbF9kbWEo c3RydWN0IGR3X3BjaWUgKnBjaSwgdTMyIHJlZywgdTMyDQo+ID4gdmFsKQ0KPiA+ICt7DQo+ID4g KyAgICAgICBfX2R3X3BjaWVfd3JpdGVfZGJpKHBjaSwgcGNpLT5kbWFfYmFzZSwgcmVnLCAweDQs IHZhbCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdTMyIGR3X3BjaWVfcmVh ZGxfZG1hKHN0cnVjdCBkd19wY2llICpwY2ksIHUzMiByZWcpDQo+ID4gK3sNCj4gPiArICAgICAg IHJldHVybiBfX2R3X3BjaWVfcmVhZF9kYmkocGNpLCBwY2ktPmRtYV9iYXNlLCByZWcsIDB4NCk7 DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZCBkd19wY2llX2RiaV9yb193 cl9lbihzdHJ1Y3QgZHdfcGNpZSAqcGNpKQ0KPiA+ICB7DQo+ID4gICAgICAgICB1MzIgcmVnOw0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi10 ZXN0LmMNCj4gPiBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXRlc3Qu Yw0KPiA+IGluZGV4IDI3ODA2OTg3ZTkzYi4uMzkxMDA3MzcxMmU5IDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXRlc3QuYw0KPiA+ICsrKyBi L2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXRlc3QuYw0KPiA+IEBAIC0y OCw2ICsyOCwyNSBAQA0KPiA+ICAjZGVmaW5lIENPTU1BTkRfUkVBRCAgICAgICAgICAgICAgICAg ICBCSVQoMykNCj4gPiAgI2RlZmluZSBDT01NQU5EX1dSSVRFICAgICAgICAgICAgICAgICAgQklU KDQpDQo+ID4gICNkZWZpbmUgQ09NTUFORF9DT1BZICAgICAgICAgICAgICAgICAgIEJJVCg1KQ0K PiA+ICsjZGVmaW5lIENPTU1BTkRfRkxBRzIgICAgICAgICAgICAgICAgICBCSVQoMzApDQo+ID4g KyNkZWZpbmUgQ09NTUFORF9GTEFHMSAgICAgICAgICAgICAgICAgIEJJVCgzMSkNCj4gPiArDQo+ ID4gKyNkZWZpbmUgQ09NTUFORF9GTEFHUyAgICAgICAgICAgICAgICAgIChDT01NQU5EX0ZMQUcx IHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NTUFO RF9GTEFHMikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQ09NTUFORF9GTEFHX05PTkUgICAgICAgICAg ICAgIDANCj4gPiArI2RlZmluZSBDT01NQU5EX0ZMQUdfRE1BICAgICAgICAgICAgICAgQ09NTUFO RF9GTEFHMQ0KPiA+ICsjZGVmaW5lIENPTU1BTkRfRkxBR19ETUFfTElTVCAgICAgICAgICBDT01N QU5EX0ZMQUcyDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENPTU1BTkRfUkVBRF9ETUEgICAgICAgICAg ICAgICAoQ09NTUFORF9SRUFEIHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ09NTUFORF9GTEFHX0RNQSkNCj4gPiArI2RlZmluZSBDT01NQU5EX1JFQURf RE1BX0xJU1QgICAgICAgICAgKENPTU1BTkRfUkVBRF9ETUEgfCBcDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT01NQU5EX0ZMQUdfRE1BX0xJU1QpDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIENPTU1BTkRfV1JJVEVfRE1BICAgICAgICAgICAgICAoQ09NTUFORF9X UklURSB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENP TU1BTkRfRkxBR19ETUEpDQo+ID4gKyNkZWZpbmUgQ09NTUFORF9XUklURV9ETUFfTElTVCAgICAg ICAgIChDT01NQU5EX1dSSVRFX0RNQSB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENPTU1BTkRfRkxBR19ETUFfTElTVCkNCj4gPg0KPiA+ICAjZGVmaW5l IFNUQVRVU19SRUFEX1NVQ0NFU1MgICAgICAgICAgICBCSVQoMCkNCj4gPiAgI2RlZmluZSBTVEFU VVNfUkVBRF9GQUlMICAgICAgICAgICAgICAgQklUKDEpDQo+ID4gQEAgLTE4Nyw2ICsyMDYsOTMg QEAgc3RhdGljIGludCBwY2lfZXBmX3Rlc3RfcmVhZChzdHJ1Y3QgcGNpX2VwZl90ZXN0DQo+ID4g KmVwZl90ZXN0KQ0KPiA+ICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0 YXRpYyBpbnQgcGNpX2VwZl90ZXN0X3JlYWRfZG1hKHN0cnVjdCBwY2lfZXBmX3Rlc3QgKmVwZl90 ZXN0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgcmV0ID0gLUVOT01FTTsNCj4gPiArICAgICAg IHN0cnVjdCBwY2lfZXBmICplcGYgPSBlcGZfdGVzdC0+ZXBmOw0KPiA+ICsgICAgICAgc3RydWN0 IGRldmljZSAqZGV2ID0gJmVwZi0+ZGV2Ow0KPiA+ICsgICAgICAgc3RydWN0IHBjaV9lcGMgKmVw YyA9IGVwZi0+ZXBjOw0KPiA+ICsgICAgICAgZW51bSBwY2lfYmFybm8gdGVzdF9yZWdfYmFyID0g ZXBmX3Rlc3QtPnRlc3RfcmVnX2JhcjsNCj4gPiArICAgICAgIHN0cnVjdCBwY2lfZXBmX3Rlc3Rf cmVnICpyZWcgPSBlcGZfdGVzdC0+cmVnW3Rlc3RfcmVnX2Jhcl07DQo+ID4gKyAgICAgICBzdHJ1 Y3QgcGNpX2VwY19kbWEgZG1hOw0KPiA+ICsgICAgICAgdTMyIGNyYzMyOw0KPiA+ICsgICAgICAg dm9pZCAqYnVmOw0KPiA+ICsNCj4gPiArICAgICAgIGJ1ZiA9IGt6YWxsb2MocmVnLT5zaXplLCBH RlBfS0VSTkVMKTsNCj4gPiArICAgICAgIGlmIChidWYpIHsNCj4gPiArICAgICAgICAgICAgICAg ZG1hLmNvbnRyb2wgPSBQQ0lfRVBDX0RNQV9DT05UUk9MX0xJRTsNCj4gPiArICAgICAgICAgICAg ICAgZG1hLnNpemUgPSByZWctPnNpemU7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYS5zYXIgPSBy ZWctPnNyY19hZGRyOw0KPiA+ICsgICAgICAgICAgICAgICBkbWEuZGFyID0gdmlydF90b19waHlz KGJ1Zik7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBwY2lfZXBjX2RtYV9yZWFk KGVwYywgJmRtYSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInBjaV9lcGNfZG1hX3JlYWQgJWRcbiIsIHJl dCk7DQo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgY3JjMzIgPSBjcmMzMl9sZSh+MCwgYnVmLCByZWctPnNpemUpOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlmIChjcmMzMiAhPSByZWctPmNoZWNrc3VtKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTzsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAga2ZyZWUoYnVmKTsNCj4gPiArICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IHBjaV9lcGZfdGVzdF9yZWFkX2RtYV9saXN0KHN0cnVjdCBwY2lfZXBmX3Rlc3QgKmVw Zl90ZXN0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpbnQgcmV0ID0gLUVOT01FTTsNCj4gPiArICAg ICAgIHN0cnVjdCBwY2lfZXBmICplcGYgPSBlcGZfdGVzdC0+ZXBmOw0KPiA+ICsgICAgICAgc3Ry dWN0IGRldmljZSAqZGV2ID0gJmVwZi0+ZGV2Ow0KPiA+ICsgICAgICAgc3RydWN0IHBjaV9lcGMg KmVwYyA9IGVwZi0+ZXBjOw0KPiA+ICsgICAgICAgZW51bSBwY2lfYmFybm8gdGVzdF9yZWdfYmFy ID0gZXBmX3Rlc3QtPnRlc3RfcmVnX2JhcjsNCj4gPiArICAgICAgIHN0cnVjdCBwY2lfZXBmX3Rl c3RfcmVnICpyZWcgPSBlcGZfdGVzdC0+cmVnW3Rlc3RfcmVnX2Jhcl07DQo+ID4gKyAgICAgICBz dHJ1Y3QgcGNpX2VwY19kbWEgKmRtYTsNCj4gPiArICAgICAgIHUzMiBjcmMzMjsNCj4gPiArICAg ICAgIHZvaWQgKmJ1ZjsNCj4gPiArDQo+ID4gKyAgICAgICBkbWEgPSBrY2FsbG9jKDMsIHNpemVv ZigqZG1hKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBpZiAoZG1hKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIGJ1ZiA9IGt6YWxsb2MocmVnLT5zaXplLCBHRlBfS0VSTkVMKTsNCj4gPiArICAg ICAgICAgICAgICAgaWYgKGJ1Zikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBo YWxmX3NpemUgPSByZWctPnNpemUgPj4gMTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBw aHlzX2FkZHJfdCBwaHlzX2FkZHIgPSB2aXJ0X3RvX3BoeXMoYnVmKTsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgZG1hWzBdLmNvbnRyb2wgPSBQQ0lfRVBDX0RNQV9DT05UUk9M X0NCOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYVswXS5zaXplID0gaGFsZl9zaXpl ID8gaGFsZl9zaXplIDogMTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFbMF0uc2Fy ID0gcmVnLT5zcmNfYWRkcjsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFbMF0uZGFy ID0gcGh5c19hZGRyOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFbMV0u Y29udHJvbCA9IFBDSV9FUENfRE1BX0NPTlRST0xfQ0IgfA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUENJX0VQQ19ETUFfQ09OVFJPTF9MSUU7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgZG1hWzFdLnNpemUgPSByZWctPnNpemUgLSBoYWxmX3NpemU7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hWzFdLnNhciA9IHJlZy0+c3JjX2FkZHIg KyBoYWxmX3NpemU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hWzFdLmRhciA9IHBo eXNfYWRkciArIGhhbGZfc2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ZG1hWzJdLmNvbnRyb2wgPSBQQ0lfRVBDX0RNQV9DT05UUk9MX0VPTDsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBkbWFbMl0uc2l6ZSA9IDA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZG1hWzJdLnNhciA9IHZpcnRfdG9fcGh5cyhkbWEpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGRtYVsyXS5kYXIgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZXQgPSBwY2lfZXBjX2RtYV9yZWFkKGVwYywgZG1hKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgInBjaV9lcGNfZG1hX3JlYWQgJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNyYzMyID0gY3JjMzJfbGUofjAsIGJ1ZiwgcmVnLT5zaXplKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmMzMiAhPSByZWctPmNoZWNrc3VtKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRUlPOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAga2ZyZWUoYnVmKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAga2ZyZWUoZG1hKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IHBjaV9lcGZfdGVzdF93 cml0ZShzdHJ1Y3QgcGNpX2VwZl90ZXN0ICplcGZfdGVzdCkNCj4gPiAgew0KPiA+ICAgICAgICAg aW50IHJldDsNCj4gPiBAQCAtMjQ0LDYgKzM1MCw4NyBAQCBzdGF0aWMgaW50IHBjaV9lcGZfdGVz dF93cml0ZShzdHJ1Y3QgcGNpX2VwZl90ZXN0DQo+ID4gKmVwZl90ZXN0KQ0KPiA+ICAgICAgICAg cmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgcGNpX2VwZl90ZXN0X3dy aXRlX2RtYShzdHJ1Y3QgcGNpX2VwZl90ZXN0ICplcGZfdGVzdCkNCj4gPiArew0KPiA+ICsgICAg ICAgaW50IHJldCA9IC1FTk9NRU07DQo+ID4gKyAgICAgICBzdHJ1Y3QgcGNpX2VwZiAqZXBmID0g ZXBmX3Rlc3QtPmVwZjsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZlcGYtPmRl djsNCj4gPiArICAgICAgIHN0cnVjdCBwY2lfZXBjICplcGMgPSBlcGYtPmVwYzsNCj4gPiArICAg ICAgIGVudW0gcGNpX2Jhcm5vIHRlc3RfcmVnX2JhciA9IGVwZl90ZXN0LT50ZXN0X3JlZ19iYXI7 DQo+ID4gKyAgICAgICBzdHJ1Y3QgcGNpX2VwZl90ZXN0X3JlZyAqcmVnID0gZXBmX3Rlc3QtPnJl Z1t0ZXN0X3JlZ19iYXJdOw0KPiA+ICsgICAgICAgc3RydWN0IHBjaV9lcGNfZG1hIGRtYTsNCj4g PiArICAgICAgIHZvaWQgKmJ1ZjsNCj4gPiArDQo+ID4gKyAgICAgICBidWYgPSBremFsbG9jKHJl Zy0+c2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBpZiAoYnVmKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIGdldF9yYW5kb21fYnl0ZXMoYnVmLCByZWctPnNpemUpOw0KPiA+ICsgICAgICAg ICAgICAgICByZWctPmNoZWNrc3VtID0gY3JjMzJfbGUofjAsIGJ1ZiwgcmVnLT5zaXplKTsNCj4g PiArDQo+ID4gKyAgICAgICAgICAgICAgIGRtYS5jb250cm9sID0gUENJX0VQQ19ETUFfQ09OVFJP TF9MSUU7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYS5zaXplID0gcmVnLT5zaXplOw0KPiA+ICsg ICAgICAgICAgICAgICBkbWEuc2FyID0gdmlydF90b19waHlzKGJ1Zik7DQo+ID4gKyAgICAgICAg ICAgICAgIGRtYS5kYXIgPSByZWctPmRzdF9hZGRyOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgcmV0ID0gcGNpX2VwY19kbWFfd3JpdGUoZXBjLCAmZG1hKTsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInBj aV9lcGNfZG1hX3dyaXRlICVkXG4iLCByZXQpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg a2ZyZWUoYnVmKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0 Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHBjaV9lcGZfdGVzdF93cml0ZV9kbWFf bGlzdChzdHJ1Y3QgcGNpX2VwZl90ZXN0ICplcGZfdGVzdCkNCj4gPiArew0KPiA+ICsgICAgICAg aW50IHJldCA9IC1FTk9NRU07DQo+ID4gKyAgICAgICBzdHJ1Y3QgcGNpX2VwZiAqZXBmID0gZXBm X3Rlc3QtPmVwZjsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZlcGYtPmRldjsN Cj4gPiArICAgICAgIHN0cnVjdCBwY2lfZXBjICplcGMgPSBlcGYtPmVwYzsNCj4gPiArICAgICAg IGVudW0gcGNpX2Jhcm5vIHRlc3RfcmVnX2JhciA9IGVwZl90ZXN0LT50ZXN0X3JlZ19iYXI7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgcGNpX2VwZl90ZXN0X3JlZyAqcmVnID0gZXBmX3Rlc3QtPnJlZ1t0 ZXN0X3JlZ19iYXJdOw0KPiA+ICsgICAgICAgc3RydWN0IHBjaV9lcGNfZG1hICpkbWE7DQo+ID4g KyAgICAgICB2b2lkICpidWY7DQo+ID4gKw0KPiA+ICsgICAgICAgZG1hID0ga2NhbGxvYygzLCBz aXplb2YoKmRtYSksIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgICAgaWYgKGRtYSkgew0KPiA+ICsg ICAgICAgICAgICAgICBidWYgPSBremFsbG9jKHJlZy0+c2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ID4g KyAgICAgICAgICAgICAgIGlmIChidWYpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBp bnQgaGFsZl9zaXplID0gcmVnLT5zaXplID4+IDE7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgcGh5c19hZGRyX3QgcGh5c19hZGRyID0gdmlydF90b19waHlzKGJ1Zik7DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdldF9yYW5kb21fYnl0ZXMoYnVmLCByZWctPnNpemUp Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZy0+Y2hlY2tzdW0gPSBjcmMzMl9sZSh+ MCwgYnVmLCByZWctPnNpemUpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBk bWFbMF0uY29udHJvbCA9IFBDSV9FUENfRE1BX0NPTlRST0xfQ0I7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZG1hWzBdLnNpemUgPSBoYWxmX3NpemUgPyBoYWxmX3NpemUgOiAxOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYVswXS5zYXIgPSBwaHlzX2FkZHI7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgZG1hWzBdLmRhciA9IHJlZy0+ZHN0X2FkZHI7DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYVsxXS5jb250cm9sID0gUENJX0VQQ19ETUFf Q09OVFJPTF9DQiB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQQ0lfRVBDX0RNQV9DT05UUk9MX0xJRTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBk bWFbMV0uc2l6ZSA9IHJlZy0+c2l6ZSAtIGhhbGZfc2l6ZTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBkbWFbMV0uc2FyID0gcGh5c19hZGRyICsgaGFsZl9zaXplOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGRtYVsxXS5kYXIgPSByZWctPmRzdF9hZGRyICsgaGFsZl9zaXplOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFbMl0uY29udHJvbCA9IFBDSV9F UENfRE1BX0NPTlRST0xfRU9MOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYVsyXS5z aXplID0gMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFbMl0uc2FyID0gdmlydF90 b19waHlzKGRtYSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hWzJdLmRhciA9IDA7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHBjaV9lcGNfZG1hX3dy aXRlKGVwYywgZG1hKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJwY2lfZXBjX2Rt YV93cml0ZSAlZFxuIiwgcmV0KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg a2ZyZWUoYnVmKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgICAga2ZyZWUoZG1hKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgdm9pZCBwY2lfZXBmX3Rlc3RfcmFp c2VfaXJxKHN0cnVjdCBwY2lfZXBmX3Rlc3QgKmVwZl90ZXN0LCB1OA0KPiA+IGlycV90eXBlLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTE2IGlycSkNCj4gPiAgew0K PiA+IEBAIC0zMDMsMTggKzQ5MCwzNCBAQCBzdGF0aWMgdm9pZCBwY2lfZXBmX3Rlc3RfY21kX2hh bmRsZXIoc3RydWN0DQo+ID4gd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gICAgICAgICB9DQo+ID4N Cj4gPiAgICAgICAgIGlmIChjb21tYW5kICYgQ09NTUFORF9XUklURSkgew0KPiA+IC0gICAgICAg ICAgICAgICByZXQgPSBwY2lfZXBmX3Rlc3Rfd3JpdGUoZXBmX3Rlc3QpOw0KPiA+IC0gICAgICAg ICAgICAgICBpZiAocmV0KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJlZy0+c3RhdHVz IHw9IFNUQVRVU19XUklURV9GQUlMOw0KPiA+ICsgICAgICAgICAgICAgICBjb21tYW5kICY9IChD T01NQU5EX1dSSVRFIHwgQ09NTUFORF9GTEFHUyk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChj b21tYW5kID09IENPTU1BTkRfV1JJVEUpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 ID0gcGNpX2VwZl90ZXN0X3dyaXRlKGVwZl90ZXN0KTsNCj4gPiArICAgICAgICAgICAgICAgZWxz ZSBpZiAoY29tbWFuZCA9PSBDT01NQU5EX1dSSVRFX0RNQSkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXQgPSBwY2lfZXBmX3Rlc3Rfd3JpdGVfZG1hKGVwZl90ZXN0KTsNCj4gPiArICAg ICAgICAgICAgICAgZWxzZSBpZiAoY29tbWFuZCA9PSBDT01NQU5EX1dSSVRFX0RNQV9MSVNUKQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHBjaV9lcGZfdGVzdF93cml0ZV9kbWFf bGlzdChlcGZfdGVzdCk7DQo+ID4gICAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoIXJl dCkNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICByZWctPnN0YXR1cyB8PSBTVEFUVVNfV1JJ VEVfU1VDQ0VTUzsNCj4gPiArICAgICAgICAgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJlZy0+c3RhdHVzIHw9IFNUQVRVU19XUklURV9GQUlMOw0KPiA+ICAgICAgICAg ICAgICAgICBwY2lfZXBmX3Rlc3RfcmFpc2VfaXJxKGVwZl90ZXN0LCByZWctPmlycV90eXBlLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZy0+aXJxX251bWJl cik7DQo+ID4gICAgICAgICAgICAgICAgIGdvdG8gcmVzZXRfaGFuZGxlcjsNCj4gPiAgICAgICAg IH0NCj4gPg0KPiA+ICAgICAgICAgaWYgKGNvbW1hbmQgJiBDT01NQU5EX1JFQUQpIHsNCj4gPiAt ICAgICAgICAgICAgICAgcmV0ID0gcGNpX2VwZl90ZXN0X3JlYWQoZXBmX3Rlc3QpOw0KPiA+ICsg ICAgICAgICAgICAgICBjb21tYW5kICY9IChDT01NQU5EX1JFQUQgfCBDT01NQU5EX0ZMQUdTKTsN Cj4gPiArICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgPT0gQ09NTUFORF9SRUFEKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHBjaV9lcGZfdGVzdF9yZWFkKGVwZl90ZXN0KTsN Cj4gPiArICAgICAgICAgICAgICAgZWxzZSBpZiAoY29tbWFuZCA9PSBDT01NQU5EX1JFQURfRE1B KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHBjaV9lcGZfdGVzdF9yZWFkX2Rt YShlcGZfdGVzdCk7DQo+ID4gKyAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbW1hbmQgPT0gQ09N TUFORF9SRUFEX0RNQV9MSVNUKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHBj aV9lcGZfdGVzdF9yZWFkX2RtYV9saXN0KGVwZl90ZXN0KTsNCj4gPiArICAgICAgICAgICAgICAg ZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7DQo+ID4gICAg ICAgICAgICAgICAgIGlmICghcmV0KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZy0+ c3RhdHVzIHw9IFNUQVRVU19SRUFEX1NVQ0NFU1M7DQo+ID4gICAgICAgICAgICAgICAgIGVsc2UN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMNCj4g PiBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jDQo+ID4gaW5kZXggZTQ3MTJh MGYyNDljLi5hNTdlNTAxZDRhYmMgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9wY2kvZW5kcG9p bnQvcGNpLWVwYy1jb3JlLmMNCj4gPiArKysgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBj LWNvcmUuYw0KPiA+IEBAIC0xMDcsNiArMTA3LDUyIEBAIHVuc2lnbmVkIGludCBwY2lfZXBjX2dl dF9maXJzdF9mcmVlX2Jhcihjb25zdCBzdHJ1Y3QNCj4gPiBwY2lfZXBjX2ZlYXR1cmVzDQo+ID4g IEVYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfZ2V0X2ZpcnN0X2ZyZWVfYmFyKTsNCj4gPg0KPiA+ ICAvKioNCj4gPiArICogcGNpX2VwY19kbWFfd3JpdGUoKSAtIERNQSBhIGJsb2NrIG9mIG1lbW9y eSB0byByZW1vdGUgYWRkcmVzcw0KPiA+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSBvbiB3aGlj aCB0byBwZXJmb3JtIERNQSB0cmFuc2Zlcg0KPiA+ICsgKiBAZG1hOiBETUEgZGVzY3JpcHRvcnMg YXJyYXkNCj4gPiArICoNCj4gPiArICogV3JpdGUgY29udGVudHMgb2YgbG9jYWwgbWVtb3J5IHRv IHJlbW90ZSBtZW1vcnkgYnkgRE1BLg0KPiA+ICsgKi8NCj4gPiAraW50IHBjaV9lcGNfZG1hX3dy aXRlKHN0cnVjdCBwY2lfZXBjICplcGMsIHN0cnVjdCBwY2lfZXBjX2RtYSAqZG1hKQ0KPiA+ICt7 DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsN Cj4gPiArDQo+ID4gKyAgICAgICBpZiAoSVNfRVJSKGVwYykgfHwgIWVwYy0+b3BzLT5kbWFfd3Jp dGUpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArICAg ICAgIHNwaW5fbG9ja19pcnFzYXZlKCZlcGMtPmxvY2ssIGZsYWdzKTsNCj4gPiArICAgICAgIHJl dCA9IGVwYy0+b3BzLT5kbWFfd3JpdGUoZXBjLCBkbWEpOw0KPiA+ICsgICAgICAgc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZXBjLT5sb2NrLCBmbGFncyk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0 dXJuIHJldDsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX2RtYV93cml0 ZSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogcGNpX2VwY19kbWFfcmVhZCgpIC0gRE1BIGEg YmxvY2sgb2YgbWVtb3J5IGZyb20gcmVtb3RlIGFkZHJlc3MNCj4gPiArICogQGVwYzogdGhlIEVQ QyBkZXZpY2Ugb24gd2hpY2ggdG8gcGVyZm9ybSBETUEgdHJhbnNmZXINCj4gPiArICogQGRtYTog RE1BIGRlc2NyaXB0b3JzIGFycmF5DQo+ID4gKyAqDQo+ID4gKyAqIFJlYWQgY29udGVudHMgb2Yg cmVtb3RlIG1lbW9yeSBpbnRvIGxvY2FsIG1lbW9yeSBieSBETUEuDQo+ID4gKyAqLw0KPiA+ICtp bnQgcGNpX2VwY19kbWFfcmVhZChzdHJ1Y3QgcGNpX2VwYyAqZXBjLCBzdHJ1Y3QgcGNpX2VwY19k bWEgKmRtYSkNCj4gPiArew0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArICAgICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKElTX0VSUihlcGMpIHx8ICFl cGMtPm9wcy0+ZG1hX3JlYWQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ICsNCj4gPiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZlcGMtPmxvY2ssIGZsYWdzKTsN Cj4gPiArICAgICAgIHJldCA9IGVwYy0+b3BzLT5kbWFfcmVhZChlcGMsIGRtYSk7DQo+ID4gKyAg ICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlcGMtPmxvY2ssIGZsYWdzKTsNCj4gPiArDQo+ ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHBj aV9lcGNfZG1hX3JlYWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gICAqIHBjaV9lcGNfZ2V0X2Zl YXR1cmVzKCkgLSBnZXQgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSBFUEMNCj4gPiAgICogQGVw YzogdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSAqdGhpcyogRVBDIGRldmljZSB3aWxsIGJlIHJl dHVybmVkDQo+ID4gICAqIEBmdW5jX25vOiB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBF UEMgZGV2aWNlIHNwZWNpZmljIHRvIHRoZQ0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L3BjaS1lcGMuaCBiL2luY2x1ZGUvbGludXgvcGNpLWVwYy5oDQo+ID4gaW5kZXggZjY0MWJhZGMy YzYxLi5kODQ1ZjEzZDBiYWYgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9wY2ktZXBj LmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3BjaS1lcGMuaA0KPiA+IEBAIC0yMSw2ICsyMSw0 NSBAQCBlbnVtIHBjaV9lcGNfaXJxX3R5cGUgew0KPiA+ICB9Ow0KPiA+DQo+ID4gIC8qKg0KPiA+ ICsgKiBzdHJ1Y3QgcGNpX2VwY19kbWEgLSBkZXNjcmlwdG9yIGZvciBhIERNQSB0cmFuc2ZlciBl bGVtZW50DQo+ID4gKyAqIEBjb250cm9sOiBETUEgY2hhbm5lbCBjb250cm9sIGJpdHMgZm9yIHJl YWQgb3Igd3JpdGUgdHJhbnNmZXINCj4gPiArICogQHNpemU6IHNpemUgb2YgRE1BIHRyYW5zZmVy IGVsZW1lbnQNCj4gPiArICogQHNhcjogc291cmNlIGFkZHJlZXMgZm9yIERNQSB0cmFuc2ZlciBl bGVtZW50DQo+ID4gKyAqIEBkYXI6IGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIERNQSB0cmFuc2Zl ciBlbGVtZW50DQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArc3RydWN0IHBjaV9lcGNfZG1hIHsNCj4g PiArICAgICAgIHUzMiAgICAgY29udHJvbDsNCj4gPiArICAgICAgIHUzMiAgICAgc2l6ZTsNCj4g PiArICAgICAgIHU2NCAgICAgc2FyOw0KPiA+ICsgICAgICAgdTY0ICAgICBkYXI7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFBDSV9FUENfRE1BX0NPTlRST0xfQ0IgICAgICAgICAgKEJJ VCgwKSkNCj4gPiArI2RlZmluZSBQQ0lfRVBDX0RNQV9DT05UUk9MX1RDQiAgICAgICAgIChCSVQo MSkpDQo+ID4gKyNkZWZpbmUgUENJX0VQQ19ETUFfQ09OVFJPTF9MTFAgICAgICAgICAoQklUKDIp KQ0KPiA+ICsjZGVmaW5lIFBDSV9FUENfRE1BX0NPTlRST0xfTElFICAgICAgICAgKEJJVCgzKSkN Cj4gPiArI2RlZmluZSBQQ0lfRVBDX0RNQV9DT05UUk9MX1JJRSAgICAgICAgIChCSVQoNCkpDQo+ ID4gKyNkZWZpbmUgUENJX0VQQ19ETUFfQ09OVFJPTF9DUyAgICAgICAgICAoQklUKDUpIHwgQklU KDYpKQ0KPiA+ICsjZGVmaW5lIFBDSV9FUENfRE1BX0NPTlRST0xfQ0NTICAgICAgICAgKEJJVCg4 KSkNCj4gPiArI2RlZmluZSBQQ0lfRVBDX0RNQV9DT05UUk9MX0xMRSAgICAgICAgIChCSVQoOSkp DQo+ID4gKyNkZWZpbmUgUENJX0VQQ19ETUFfQ09OVFJPTF9GVU5DICAgICAgICAoQklUKDEyKSB8 IEJJVCgxMykgfCBCSVQoMTQpIHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQklUKDE1KSB8IEJJVCgxNikpDQo+ID4gKyNkZWZpbmUgUENJX0VQQ19ETUFf Q09OVFJPTF9OU19EU1QgICAgICAoQklUKDIzKSkNCj4gPiArI2RlZmluZSBQQ0lfRVBDX0RNQV9D T05UUk9MX05TX1NSQyAgICAgIChCSVQoMjQpKQ0KPiA+ICsjZGVmaW5lIFBDSV9FUENfRE1BX0NP TlRST0xfUk8gICAgICAgICAgKEJJVCgyNSkpDQo+ID4gKyNkZWZpbmUgUENJX0VQQ19ETUFfQ09O VFJPTF9UQyAgICAgICAgICAoQklUKDI3KSB8IEJJVCgyOCkgfCBCSVQoMjkpKQ0KPiA+ICsjZGVm aW5lIFBDSV9FUENfRE1BX0NPTlRST0xfQVQgICAgICAgICAgKEJJVCgzMCkgfCBCSVQoMzEpKQ0K PiA+ICsNCj4gPiArI2RlZmluZSBQQ0lfRVBDX0RNQV9DT05UUk9MX0VPTCAgICAgICAgIChQQ0lf RVBDX0RNQV9DT05UUk9MX1RDQiB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBDSV9FUENfRE1BX0NPTlRST0xfTExQKQ0KPiA+ICsNCj4gPiArI2RlZmlu ZSBQQ0lfRVBDX0RNQV9DT05UUk9MX0xJU1QgICAgICAgIChQQ0lfRVBDX0RNQV9DT05UUk9MX0NC IHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0VQ Q19ETUFfQ09OVFJPTF9FT0x8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBDSV9FUENfRE1BX0NPTlRST0xfQ0NTIHwgXA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0VQQ19ETUFfQ09OVFJPTF9MTEUpDQo+ID4g Kw0KPiA+ICsvKioNCj4gPiAgICogc3RydWN0IHBjaV9lcGNfb3BzIC0gc2V0IG9mIGZ1bmN0aW9u IHBvaW50ZXJzIGZvciBwZXJmb3JtaW5nIEVQQw0KPiA+IG9wZXJhdGlvbnMNCj4gPiAgICogQHdy aXRlX2hlYWRlcjogb3BzIHRvIHBvcHVsYXRlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaGVhZGVyDQo+ ID4gICAqIEBzZXRfYmFyOiBvcHMgdG8gY29uZmlndXJlIHRoZSBCQVINCj4gPiBAQCAtMzgsNiAr NzcsOCBAQCBlbnVtIHBjaV9lcGNfaXJxX3R5cGUgew0KPiA+ICAgKiBAcmFpc2VfaXJxOiBvcHMg dG8gcmFpc2UgYSBsZWdhY3ksIE1TSSBvciBNU0ktWCBpbnRlcnJ1cHQNCj4gPiAgICogQHN0YXJ0 OiBvcHMgdG8gc3RhcnQgdGhlIFBDSSBsaW5rDQo+ID4gICAqIEBzdG9wOiBvcHMgdG8gc3RvcCB0 aGUgUENJIGxpbmsNCj4gPiArICogQGRtYV9yZWFkOiBvcHMgdG8gcmVhZCByZW1vdGUgbWVtb3J5 IGludG8gbG9jYWwgbWVtb3J5IGJ5IERNQQ0KPiA+ICsgKiBAZG1hX3dyaXRlOiBvcHMgdG8gd3Jp dGUgbG9jYWwgbWVtb3J5IHRvIHJlbW90ZSBtZW1vcnkgYnkgRE1BDQo+ID4gICAqIEBvd25lcjog dGhlIG1vZHVsZSBvd25lciBjb250YWluaW5nIHRoZSBvcHMNCj4gPiAgICovDQo+ID4gIHN0cnVj dCBwY2lfZXBjX29wcyB7DQo+ID4gQEAgLTYxLDYgKzEwMiw4IEBAIHN0cnVjdCBwY2lfZXBjX29w cyB7DQo+ID4gICAgICAgICB2b2lkICAgICgqc3RvcCkoc3RydWN0IHBjaV9lcGMgKmVwYyk7DQo+ ID4gICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2VwY19mZWF0dXJlcyogKCpnZXRfZmVhdHVyZXMp KHN0cnVjdCBwY2lfZXBjICplcGMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHU4IGZ1bmNfbm8pOw0KPiA+ICsgICAgICAgaW50ICAg ICAoKmRtYV9yZWFkKShzdHJ1Y3QgcGNpX2VwYyAqZXBjLCBzdHJ1Y3QgcGNpX2VwY19kbWEgKmRt YSk7DQo+ID4gKyAgICAgICBpbnQgICAgICgqZG1hX3dyaXRlKShzdHJ1Y3QgcGNpX2VwYyAqZXBj LCBzdHJ1Y3QgcGNpX2VwY19kbWEgKmRtYSk7DQo+ID4gICAgICAgICBzdHJ1Y3QgbW9kdWxlICpv d25lcjsNCj4gPiAgfTsNCj4gPg0KPiA+IEBAIC0xNTIsNiArMTk1LDggQEAgdm9pZCBwY2lfZXBj X2Rlc3Ryb3koc3RydWN0IHBjaV9lcGMgKmVwYyk7DQo+ID4gIGludCBwY2lfZXBjX2FkZF9lcGYo c3RydWN0IHBjaV9lcGMgKmVwYywgc3RydWN0IHBjaV9lcGYgKmVwZik7DQo+ID4gIHZvaWQgcGNp X2VwY19saW5rdXAoc3RydWN0IHBjaV9lcGMgKmVwYyk7DQo+ID4gIHZvaWQgcGNpX2VwY19yZW1v dmVfZXBmKHN0cnVjdCBwY2lfZXBjICplcGMsIHN0cnVjdCBwY2lfZXBmICplcGYpOw0KPiA+ICtp bnQgcGNpX2VwY19kbWFfcmVhZChzdHJ1Y3QgcGNpX2VwYyAqZXBjLCBzdHJ1Y3QgcGNpX2VwY19k bWEgKmRtYSk7DQo+ID4gK2ludCBwY2lfZXBjX2RtYV93cml0ZShzdHJ1Y3QgcGNpX2VwYyAqZXBj LCBzdHJ1Y3QgcGNpX2VwY19kbWEgKmRtYSk7DQo+ID4gIGludCBwY2lfZXBjX3dyaXRlX2hlYWRl cihzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcGNpX2VwZl9oZWFkZXIgKmhkcik7DQo+ID4gIGludCBwY2lfZXBjX3Nl dF9iYXIoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywNCj4gPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2xpbnV4L3BjaXRlc3QuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wY2l0ZXN0 LmgNCj4gPiBpbmRleCBjYmY0MjJlNTY2OTYuLjUwNWY0YTM4MTFjMiAxMDA2NDQNCj4gPiAtLS0g YS9pbmNsdWRlL3VhcGkvbGludXgvcGNpdGVzdC5oDQo+ID4gKysrIGIvaW5jbHVkZS91YXBpL2xp bnV4L3BjaXRlc3QuaA0KPiA+IEBAIC0xMCwxMSArMTAsMTggQEANCj4gPiAgI2lmbmRlZiBfX1VB UElfTElOVVhfUENJVEVTVF9IDQo+ID4gICNkZWZpbmUgX19VQVBJX0xJTlVYX1BDSVRFU1RfSA0K PiA+DQo+ID4gK3N0cnVjdCBwY2l0ZXN0X2RtYSB7DQo+ID4gKyAgICAgICBzaXplX3QgIHNpemU7 DQo+ID4gKyAgICAgICBib29sICAgIGxpc3Q7DQo+ID4gK307DQo+ID4gKw0KPiA+ICAjZGVmaW5l IFBDSVRFU1RfQkFSICAgICAgICAgICAgX0lPKCdQJywgMHgxKQ0KPiA+ICAjZGVmaW5lIFBDSVRF U1RfTEVHQUNZX0lSUSAgICAgX0lPKCdQJywgMHgyKQ0KPiA+ICAjZGVmaW5lIFBDSVRFU1RfTVNJ ICAgICAgICAgICAgX0lPVygnUCcsIDB4MywgaW50KQ0KPiA+ICAjZGVmaW5lIFBDSVRFU1RfV1JJ VEUgICAgICAgICAgX0lPVygnUCcsIDB4NCwgdW5zaWduZWQgbG9uZykNCj4gPiArI2RlZmluZSBQ Q0lURVNUX1dSSVRFX0RNQSAgICAgIF9JT1coJ1AnLCAweDQsIHN0cnVjdCBwY2l0ZXN0X2RtYSkN Cj4gPiAgI2RlZmluZSBQQ0lURVNUX1JFQUQgICAgICAgICAgIF9JT1coJ1AnLCAweDUsIHVuc2ln bmVkIGxvbmcpDQo+ID4gKyNkZWZpbmUgUENJVEVTVF9SRUFEX0RNQSAgICAgICBfSU9XKCdQJywg MHg1LCBzdHJ1Y3QgcGNpdGVzdF9kbWEpDQo+ID4gICNkZWZpbmUgUENJVEVTVF9DT1BZICAgICAg ICAgICBfSU9XKCdQJywgMHg2LCB1bnNpZ25lZCBsb25nKQ0KPiA+ICAjZGVmaW5lIFBDSVRFU1Rf TVNJWCAgICAgICAgICAgX0lPVygnUCcsIDB4NywgaW50KQ0KPiA+ICAjZGVmaW5lIFBDSVRFU1Rf U0VUX0lSUVRZUEUgICAgX0lPVygnUCcsIDB4OCwgaW50KQ0KPiA+IGRpZmYgLS1naXQgYS90b29s cy9wY2kvcGNpdGVzdC5jIGIvdG9vbHMvcGNpL3BjaXRlc3QuYw0KPiA+IGluZGV4IDZmMTMwMzEw NGQ4NC4uNjZjZDE5YWNmMThjIDEwMDY0NA0KPiA+IC0tLSBhL3Rvb2xzL3BjaS9wY2l0ZXN0LmMN Cj4gPiArKysgYi90b29scy9wY2kvcGNpdGVzdC5jDQo+ID4gQEAgLTQ0LDExICs0NCwxNCBAQCBz dHJ1Y3QgcGNpX3Rlc3Qgew0KPiA+ICAgICAgICAgYm9vbCAgICAgICAgICAgIHJlYWQ7DQo+ID4g ICAgICAgICBib29sICAgICAgICAgICAgd3JpdGU7DQo+ID4gICAgICAgICBib29sICAgICAgICAg ICAgY29weTsNCj4gPiArICAgICAgIGJvb2wgICAgICAgICAgICBkbWE7DQo+ID4gKyAgICAgICBi b29sICAgICAgICAgICAgZG1hX2xpc3Q7DQo+ID4gICAgICAgICB1bnNpZ25lZCBsb25nICAgc2l6 ZTsNCj4gPiAgfTsNCj4gPg0KPiA+ICBzdGF0aWMgaW50IHJ1bl90ZXN0KHN0cnVjdCBwY2lfdGVz dCAqdGVzdCkNCj4gPiAgew0KPiA+ICsgICAgICAgc3RydWN0IHBjaXRlc3RfZG1hIGRtYTsNCj4g PiAgICAgICAgIGludCByZXQgPSAtRUlOVkFMOw0KPiA+ICAgICAgICAgaW50IGZkOw0KPiA+DQo+ ID4gQEAgLTExMyw3ICsxMTYsMTMgQEAgc3RhdGljIGludCBydW5fdGVzdChzdHJ1Y3QgcGNpX3Rl c3QgKnRlc3QpDQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIGlmICh0ZXN0LT53cml0 ZSkgew0KPiA+IC0gICAgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgUENJVEVTVF9XUklURSwg dGVzdC0+c2l6ZSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICh0ZXN0LT5kbWEpIHsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBkbWEuc2l6ZSA9IHRlc3QtPnNpemU7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZG1hLmxpc3QgPSB0ZXN0LT5kbWFfbGlzdDsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgUENJVEVTVF9XUklURV9ETUEsICZkbWEp Ow0KPiA+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIHJldCA9IGlvY3RsKGZkLCBQQ0lURVNUX1dSSVRFLCB0ZXN0LT5zaXplKTsNCj4gPiArICAg ICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIldSSVRF ICglN2xkIGJ5dGVzKTpcdFx0IiwgdGVzdC0+c2l6ZSk7DQo+ID4gICAgICAgICAgICAgICAgIGlm IChyZXQgPCAwKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAi VEVTVCBGQUlMRURcbiIpOw0KPiA+IEBAIC0xMjIsNyArMTMxLDEzIEBAIHN0YXRpYyBpbnQgcnVu X3Rlc3Qoc3RydWN0IHBjaV90ZXN0ICp0ZXN0KQ0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gICAg ICAgICBpZiAodGVzdC0+cmVhZCkgew0KPiA+IC0gICAgICAgICAgICAgICByZXQgPSBpb2N0bChm ZCwgUENJVEVTVF9SRUFELCB0ZXN0LT5zaXplKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHRl c3QtPmRtYSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYS5zaXplID0gdGVzdC0+ c2l6ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWEubGlzdCA9IHRlc3QtPmRtYV9s aXN0Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBQQ0lURVNU X1JFQURfRE1BLCAmZG1hKTsNCj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgUENJVEVTVF9SRUFELCB0ZXN0LT5z aXplKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICBmcHJpbnRm KHN0ZG91dCwgIlJFQUQgKCU3bGQgYnl0ZXMpOlx0XHQiLCB0ZXN0LT5zaXplKTsNCj4gPiAgICAg ICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZnBy aW50ZihzdGRvdXQsICJURVNUIEZBSUxFRFxuIik7DQo+ID4gQEAgLTE2Myw3ICsxNzgsNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gICAgICAgICAvKiBzZXQgZGVmYXVs dCBlbmRwb2ludCBkZXZpY2UgKi8NCj4gPiAgICAgICAgIHRlc3QtPmRldmljZSA9ICIvZGV2L3Bj aS1lbmRwb2ludC10ZXN0LjAiOw0KPiA+DQo+ID4gLSAgICAgICB3aGlsZSAoKGMgPSBnZXRvcHQo YXJnYywgYXJndiwgIkQ6YjptOng6aTpJbGhyd2NzOiIpKSAhPSBFT0YpDQo+ID4gKyAgICAgICB3 aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgIkQ6YjptOng6aTpJbGhyd2NkTHM6IikpICE9 IEVPRikNCj4gPiAgICAgICAgIHN3aXRjaCAoYykgew0KPiA+ICAgICAgICAgY2FzZSAnRCc6DQo+ ID4gICAgICAgICAgICAgICAgIHRlc3QtPmRldmljZSA9IG9wdGFyZzsNCj4gPiBAQCAtMjA0LDYg KzIxOSwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gICAgICAgICBj YXNlICdjJzoNCj4gPiAgICAgICAgICAgICAgICAgdGVzdC0+Y29weSA9IHRydWU7DQo+ID4gICAg ICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgY2FzZSAnZCc6DQo+ID4gKyAgICAg ICAgICAgICAgIHRlc3QtPmRtYSA9IHRydWU7DQo+ID4gKyAgICAgICAgICAgICAgIGNvbnRpbnVl Ow0KPiA+ICsgICAgICAgY2FzZSAnTCc6DQo+ID4gKyAgICAgICAgICAgICAgIHRlc3QtPmRtYV9s aXN0ID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gICAgICAgICBj YXNlICdzJzoNCj4gPiAgICAgICAgICAgICAgICAgdGVzdC0+c2l6ZSA9IHN0cnRvdWwob3B0YXJn LCBOVUxMLCAwKTsNCj4gPiAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gQEAgLTIyMyw2 ICsyNDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgIlx0LXIgICAgICAgICAgICAgICAgICAgUmVhZCBidWZmZXIgdGVzdFxu Ig0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICJcdC13ICAgICAgICAgICAgICAgICAgIFdy aXRlIGJ1ZmZlciB0ZXN0XG4iDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIlx0LWMgICAg ICAgICAgICAgICAgICAgQ29weSBidWZmZXIgdGVzdFxuIg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICJcdC1kICAgICAgICAgICAgICAgICAgIERNQSBtb2RlIGZvciByZWFkIG9yIHdyaXRl IHRlc3RcbiINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAiXHQtTCAgICAgICAgICAgICAg ICAgICBMaW5rZWQtTGlzdCBETUEgZmxhZyBmb3IgRE1BIG1vZGVcbiINCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAiXHQtcyA8c2l6ZT4gICAgICAgICAgICBTaXplIG9mIGJ1ZmZlciB7ZGVm YXVsdDogMTAwS0J9XG4iDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIlx0LWggICAgICAg ICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2VcbiIsDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgYXJndlswXSk7DQo+ID4gLS0NCj4gPiAyLjcuNA0KPiA+DQoNCg0K