From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2047.outbound.protection.outlook.com [40.107.21.47]) by sourceware.org (Postfix) with ESMTPS id F3976386FC1E for ; Mon, 24 May 2021 08:07:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F3976386FC1E Received: from AM5PR0402CA0021.eurprd04.prod.outlook.com (2603:10a6:203:90::31) by AM0PR08MB3076.eurprd08.prod.outlook.com (2603:10a6:208:5c::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 08:07:50 +0000 Received: from AM5EUR03FT019.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:90:cafe::22) by AM5PR0402CA0021.outlook.office365.com (2603:10a6:203:90::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 08:07:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT019.mail.protection.outlook.com (10.152.16.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Mon, 24 May 2021 08:07:50 +0000 Received: ("Tessian outbound 6c8a2be3c2e7:v92"); Mon, 24 May 2021 08:07:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 9e9d3f8c53b0a182 X-CR-MTA-TID: 64aa7808 Received: from b1025962fab4.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F49EDA3B-70CD-400B-BFC4-315D8DC1E08F.1; Mon, 24 May 2021 08:07:08 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b1025962fab4.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 24 May 2021 08:07:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fba59R8z8Z8tX2kzm9f7w/cmDha1oE/20hmiywJRKWWcleRBybq0Nun25zxGJ0DH3uH4Blnq8+gFwV17FERCurKpmR4Taoaxq2bF9SX8tCg2KjBcFbDL12LGHvI6F2+RBmjUv1/lVY9d50dTw65EliwrX+UMMjq0Pp8NPqsfJArcFztYguQYw229eJ4p0lb7GWSKbL9qrvmx+CWgZOKHh1c9P+ZWxtOQIWmgN+fRh+4govBH130zQs7FZzxpK2yE16B2V708UfA/z8TfUvdVTBVPDj23FsyxGh5XaVD28lYxQFDdUVNltsaAHIJViUsWryQs0pdks0uYk0CmetZJZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9WlIzJ0VPTr471+FlTqn6Qehdfen36dz5wknXqs8fxk=; b=kVZz1Sw+O9Z0kMJ+A/lwzC6Z9WhlOYVHMe1bD0OdRHrc0Hmqavrn2YAEee5VjQeoMpsHjN+1/f/KjM1Oaw1QNxycE2tVPQQPbQCOrB4+abI2cEKrtj80wBFuyHhvfTyMvsU/04gPqESYDjcplP2GwLj/a74AvNwfYDbsfU/HFaM9WZgqu/ALDBbcI1HcF0dRVDF2cEIla/zke7wLoUZANvaA6ZbCShBb8HS0sebbeRwQRa6/ae+6VjKrjcWSkkH1eDw8AxaVF6pw8JY9SOo5kbF5khkVgEp18jpFwXQVZu9vZ8OUUiSyPz8EBwr508kg+jvGdKLyGRdbiNZrt2nFyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from AM6PR08MB3957.eurprd08.prod.outlook.com (2603:10a6:20b:a2::14) by AM6PR08MB5079.eurprd08.prod.outlook.com (2603:10a6:20b:e8::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 08:07:05 +0000 Received: from AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::50f9:fd86:ade3:c4aa]) by AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::50f9:fd86:ade3:c4aa%4]) with mapi id 15.20.4150.027; Mon, 24 May 2021 08:07:05 +0000 From: Alan Hayward To: Luis Machado CC: "gdb-patches\\@sourceware.org" , "jhb@freebsd.org" , "david.spickett@linaro.org" , Catalin Marinas , nd Subject: Re: [PATCH] [AArch64] MTE corefile support Thread-Topic: [PATCH] [AArch64] MTE corefile support Thread-Index: AQHXTCNRQpQ8UorZG02DWJufm5So06ruDz+AgAAE1YCABDsygA== Date: Mon, 24 May 2021 08:07:03 +0000 Message-ID: References: <20210518202047.3492211-1-luis.machado@linaro.org> <8214C923-1DC2-4996-B070-FF248FE1669C@arm.com> <5b09fe6a-3d94-c355-8c81-6d7327760cb6@linaro.org> In-Reply-To: <5b09fe6a-3d94-c355-8c81-6d7327760cb6@linaro.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3654.80.0.2.43) Authentication-Results-Original: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.24.190.200] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 179e3a04-cff1-44eb-9300-08d91e8b061b x-ms-traffictypediagnostic: AM6PR08MB5079:|AM0PR08MB3076: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:268;OLM:268; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 1F5yrmoIfo6Sg/vMw1/IdIXB3OPS1GlRunSF818FtX7aEcHvHsFZ1gP6Xwwia9BD1UKwf/3aZrfkBFEUynwvh1iEy1SAgy2h0nw87v2tM4pnVTneM068HjPVg0kPnu3qRF1EYYmElB/e6wEuEABK3CyKGqbrdloMXIcvmqbc/AdfvlFgQHzJ+HNEvqm0mKrBgILvIprlabeNDmYPeCdJhoHCNiDZh2WpOKHwlIaJpnltkA0j5urjk8mfxL2IjZQ+UHzOOG/d/x3hsx8tFyg1FM8Cy0AZ6eT8FrZEr65nRejThUnDGZptihIkbIrVjY1Dq2otjEccS8C6ya3W6Z+WCcrIWr9PpXLT7vr5ubXEFepaj7QbUW7YUKRbOU4jwLAioIPSRB7xxa82cfR6sqpNjekGo5ZOWXdc+C3wgvH9H8Xdj8DOhoSbJHxv4rlfhow+EOBRls1tZyn2XuB+7I5Ck5j06WxrS8GgNKunPHthvlohgK1SqOfhPaPbXAprb0hHag/nG68nMx8t3OoKYotzvm/PUcyPTjoh+UOys6W6lNwucr7nJN9trl0morXJdKY0yCJ2cYEB31ZQZy3dvJue27zzf+58vNL/7y+OqZsBoXa65xdbo6cuZP8XxxEp82hG2xlYx26MZ3rneXBleJE9CN7+QRiFFB0F0x1YYb/td8sHLji9D7FEEhdyt1PsvSAWM1TRQG6UcypB2+QlX6bg5szaCqZHTVQV3ohmgNiSfGb5vodCF3UkEQKryjS4UNzTKpHOfqGwhqNi1sT1qYj8cMsrONP/K46Dkrg0SyPEmZo= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3957.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(39860400002)(136003)(396003)(346002)(38100700002)(2616005)(36756003)(30864003)(6512007)(166002)(122000001)(2906002)(6916009)(54906003)(8936002)(91956017)(66946007)(71200400001)(83380400001)(53546011)(6506007)(186003)(4326008)(76116006)(66476007)(5660300002)(66446008)(64756008)(478600001)(8676002)(316002)(26005)(86362001)(66556008)(6486002)(33656002)(2004002)(45980500001)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?WFJrY0FJMHpHRlpBVU04cGlhM0hybVNnciszQ1lQbmJxeTMzaTVYUWowN1J1?= =?utf-8?B?aHd1aDRYVG54aXdCZ05SZjdrN0R1RlFZV3dVWWZreHlwWWdYS0tlZ2liV0x3?= =?utf-8?B?OTkrcFJXaXBHVXhPUWdQOEZUZThTRVIwWlltcmc1ZXVISFVqRmhiMU82R3Vp?= =?utf-8?B?Q0RldVlXclk4bVRYWENma0NvMytBamltS21STFpUNDFtbnpHQW1GMEp4TFBF?= =?utf-8?B?Tm5uRC9pQjgyTzE4VkRrMGVLYWJMTTlkUHh5NjhHWnpCaGYyYTVOQlZvQ0dS?= =?utf-8?B?UktNZDhpYUFMTnkvZXFVK0IwSWY0SXlXcmcxeitIQXhYYVFIZXZnL0V1ZDB4?= =?utf-8?B?cURZY3JzbkJud0V6OHlmcDZlbGhMRnBTb003VDE2bmpIU0tSNlEvOThFcDVK?= =?utf-8?B?eDJoZ3FhVzFnYStpRU8xYUhIcDlIMTU0aWVaZnhSYWlJQldjRllQelcxVTMr?= =?utf-8?B?NUI4eWgwK0tWVVRMUXVQdVNWbDB2K2ZnNS9SV1VsdHRkVitBd2RXS00wYVB2?= =?utf-8?B?UjFROTlJWUJETmZaa1FOeGI1blFKdk90VTJUSFJsaDREbXlQVkpDRnczUkdm?= =?utf-8?B?UUlQcXV4c1ZwRkRYY1VOYXd4czBNUWFQaEw1dlErNE5HSUFsSUFQQ2s2eldp?= =?utf-8?B?a0hUbXFYSUZ1R0F0Y2pKUnR0eHFpSStFMCtEVXlKc0VrWEFGdUg1Qzdsc1hO?= =?utf-8?B?dUVTSnVIQnBQa293ZllpdHZxSGZjWURpcTl3NnYreHBMMmxMSHNQbGFnb1c4?= =?utf-8?B?cmZ0SmNUU2JpQ2JmamNiVWwvUTl1R3d1bWNZYWsxd1A4UmlGdXE5Q2gzNTJW?= =?utf-8?B?U1FhSzI3SERyOTg4eU40Yndqby80eGFQcmtIOWxKWlZvenprQzkwcE4vWENo?= =?utf-8?B?c0ZTbTdaU2Jhek9TUGx0UjNMTFl2MzdjL25XZjlzZytwMGpnRG52WWZ0ODBQ?= =?utf-8?B?bnNuUS9UY2NwSXFONUxyTHAxVkRwOU90RGNiMmw2ZkwxNFdzMGxYZWwycE16?= =?utf-8?B?OUdodGI3S1N1UTR5NUxVU2ZUWmpQL2hjL056aWNuV3lCTWdWdmV2NVNaRnNl?= =?utf-8?B?TzFLYVRQdHhiZHNvQm8xY0hiRHBlNVJZYWdPVHRCTjZKME5OT09MbjFTRHJ6?= =?utf-8?B?QmhhU241WjQwY3JmbTYwb0lVcUlGclBXSE9QOU9CdXlNYUYva2dKTUNuSDVi?= =?utf-8?B?WmFZamhsME5IVmYzdjc1Rk9MZ1hDN2xNbVROKzlQZkRFVy9IMzBhZUNhL2Nu?= =?utf-8?B?RlZEeGlxeVN6MVFNUjEvMjhUL3A5V0VwbnYySFdaNjVVSVpiYU1vNnJSN1g2?= =?utf-8?B?c3d0VVZ5Z2ljYW83RHg5M1FTbERKL25wM3BXV0pDMUVPS0xoUGlZY1pRNC9T?= =?utf-8?B?Sldsdk1qeHA4bnZLOFFZSTV6U01mTnZmQzM2RlNFYUh6Mk1PUTZZTXk0dE5V?= =?utf-8?B?cmdWRERYNmdxbDB0dGx1dzFGc1QxOUZpSWQxVDJlOUN0WVdrajhsZWN4UVF3?= =?utf-8?B?TEJIZjhFMHNCR0JZYXZhaVB5TmJ2Tk9Gb1R2ZU9XOFR2bVNGdE8wclVsL1Vm?= =?utf-8?B?TzExODBiVDl2M2ZmNEZaTFpnWGtDdU96Si93Nk5pRlpIYk1uN2pXNjVWbkhz?= =?utf-8?B?VmxCMlRPbjFTU0RYUzZDTXpuWXVUcFV3azZlamU5aFhwV1lvV3dyT3dJK0pW?= =?utf-8?B?SmNVUUhHcjhsNG55a2FGc0Q3bzlMTkNQOEl4YnlUSk1yUVVIY01taHFuWFk1?= =?utf-8?Q?YDWJ12XzMeCtKEfIL2CKAfUCHmI+BYTnXf5/tgV?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5079 Original-Authentication-Results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: b2d27a3b-6358-4b4b-cf92-08d91e8aeb4b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: noaMY9q8LN29Tfr/ibJBnX9Asd+GWc76NAJg9ZkOl/WAKrL+VgCzMpArax7uJN0LPaiKMghf/YRWwAfmePv/cRvtVLuB8rUnHGNIl2zvZGgx0drDOAtuL0djcSidROCfwc6X2MD5HUf2WxeNLfemdw6DlqetDCFo6nUso7wJb8jM4xyjhLKBAOFNHl9LWd9PkMsAAGi0SXpZa595BV6nO1Ni97Ybw/p0dfWbt0FhRjU+I4gIjuV1mBADOzJAOcGUXPgm54qim07Jy67A+Gq/3uO62+c1TeoCW+O+I1Sez7iguhOZoP6UX2jxbbwusvsFzDTiz/aQI+NEsU5ck0FR0Z8ZM3MS2PO50k30aP8RQHR8wqOQJ0RItJAArwKCRNijM9wQELzfzVGgHr7W+DOIg/Z1kUn21hRYrKBeZnb1a6uK/bq4bpw6d8m59lSUHi1+IewSVpVWfFMBqH/CMw5NkjURn/CK2NDIeuqjg/IpgDZhTGinEcaEkDTHoiGgeaJKKt6xSQit46SnOF0/0Vl4ysMXHAHlC0Tec9w2n+u0bV8R0DyDO14II59w2dh2zvGRj/h1gvp+qbsSC+kPvSrK0eR3nfCMTnea+oUxINJcc/BFR5SlmBgwNWUL1yS7ea8eIWg2MKqFMa+3WfybiVfWsQpAjBt3ySEO2Hescijcf0Ems5oLZMpi1qdj50uSfuhvH+3Z3bprXoxVPuZP57eysxWtogehM+WNSa/4V2jqubtXY/l+6lzdCpi0Y6xm3D6vBD64eyY7HbHEJdNyP/SOY5wNX3iQ4DwXlyIMf7FvAr4= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(396003)(136003)(346002)(39860400002)(46966006)(36840700001)(8676002)(26005)(82740400003)(478600001)(5660300002)(81166007)(36860700001)(36756003)(54906003)(6506007)(316002)(4326008)(33656002)(33964004)(30864003)(336012)(2906002)(53546011)(82310400003)(6486002)(166002)(6512007)(70206006)(6862004)(356005)(70586007)(8936002)(45080400002)(186003)(86362001)(2616005)(47076005)(83380400001)(2004002)(579004)(559001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 08:07:50.0624 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 179e3a04-cff1-44eb-9300-08d91e8b061b X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3076 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2021 08:08:04 -0000 DQoNCk9uIDIxIE1heSAyMDIxLCBhdCAxNjozMCwgTHVpcyBNYWNoYWRvIDxsdWlzLm1hY2hhZG9A bGluYXJvLm9yZzxtYWlsdG86bHVpcy5tYWNoYWRvQGxpbmFyby5vcmc+PiB3cm90ZToNCg0KSGkg QWxhbiwNCg0KT24gNS8yMS8yMSAxMjoxMiBQTSwgQWxhbiBIYXl3YXJkIHdyb3RlOg0KT24gMTgg TWF5IDIwMjEsIGF0IDIxOjIwLCBMdWlzIE1hY2hhZG8gPGx1aXMubWFjaGFkb0BsaW5hcm8ub3Jn PG1haWx0bzpsdWlzLm1hY2hhZG9AbGluYXJvLm9yZz4+IHdyb3RlOg0KDQpUZWFjaCBHREIgaG93 IHRvIGR1bXAgbWVtb3J5IHRhZ3Mgd2hlbiB1c2luZyB0aGUgZ2NvcmUgY29tbWFuZCBhbmQgaG93 DQp0byByZWFkIHRoZW0gYmFjayBmcm9tIGEgY29yZSBmaWxlIGdlbmVyYXRlZCB2aWEgZ2NvcmUg b3IgdGhlIGtlcm5lbC4NCg0KRWFjaCB0YWdnZWQgbWVtb3J5IHJhbmdlIChsaXN0ZWQgaW4gL3By b2MvPHBpZD4vc21hcHMpIGdldHMgZHVtcGVkIHRvIGl0cw0Kb3duIE5UX01FTVRBRyBub3RlLiBB IHNlY3Rpb24gbmFtZWQgIi5tZW10YWciIGlzIGNyZWF0ZWQgZm9yIGVhY2ggb2YgdGhvc2UNCndo ZW4gcmVhZGluZyB0aGUgY29yZSBmaWxlIGJhY2suDQoNCkR1bXBpbmcgbWVtb3J5IHRhZ3MNCi0N Cg0KV2hlbiB1c2luZyB0aGUgZ2NvcmUgY29tbWFuZCB0byBkdW1wIGEgY29yZSBmaWxlLCBHREIg d2lsbCBnbyB0aHJvdWdoIHRoZSBtYXBzDQppbiAvcHJvYy88cGlkPi9zbWFwcyBsb29raW5nIGZv ciB0YWdnZWQgcmFuZ2VzLiBFYWNoIG9mIHRob3NlIGVudHJpZXMgZ2V0cw0KcGFzc2VkIHRvIGFu IGFyY2gtc3BlY2lmaWMgZ2RiYXJjaCBob29rIHRoYXQgZ2VuZXJhdGVzIGEgdmVjdG9yIG9mIGJs b2JzIG9mDQptZW1vcnkgdGFnIGRhdGEgdGhhdCBhcmUgYmxpbmRseSBwdXQgaW50byBhIE5UX01F TVRBRyBub3RlLg0KDQpUaGUgdmVjdG9yIGlzIHVzZWQgYmVjYXVzZSB3ZSBtYXkgaGF2ZSwgaW4g dGhlIGZ1dHVyZSwgIG11bHRpcGxlIHRhZyB0eXBlcyBmb3INCmEgcGFydGljdWxhciBtZW1vcnkg cmFuZ2UuDQoNCkVhY2ggb2YgdGhlIE5UX01FTVRBRyBub3RlcyBoYXZlIGEgZ2VuZXJpYyBoZWFk ZXIgYW5kIGEgYXJjaC1zcGVjaWZpYyBoZWFkZXIsDQpsaWtlIHNvOg0KDQpzdHJ1Y3QgdGFnX2R1 bXBfaGVhZGVyDQp7DQogdWludDE2X3QgZm9ybWF0OyAvLyBPbmx5IE5UX01FTVRBR19UWVBFX0FB UkNIX01URSBhdCBwcmVzZW50DQogdWludDY0X3Qgc3RhcnRfdm1hOw0KIHVpbnQ2NF90IGVuZF92 bWE7DQp9Ow0KDQpzdHJ1Y3QgdGFnX2R1bXBfbXRlDQp7DQogdWludDE2X3QgZ3JhbnVsZV9ieXRl X3NpemU7DQogdWludDE2X3QgdGFnX2JpdF9zaXplOw0KIHVpbnQxNl90IF9fdW51c2VkOw0KfTsN Cg0KVGhlIG9ubHkgYml0cyBtZWFudCB0byBiZSBnZW5lcmljIGFyZSB0aGUgdGFnX2R1bXBfZm9y bWF0LCBzdGFydF92bWEgYW5kDQplbmRfdm1hIGZpZWxkcy4NCg0KVGhlIGZvcm1hdC1zcGVjaWZp YyBkYXRhIGlzIHN1cHBvc2VkIHRvIGJlIG9wYXF1ZSBhbmQgb25seSB1c2VmdWwgZm9yIHRoZQ0K YXJjaC1zcGVjaWZpYyBjb2RlLg0KDQpXZSBjYW4gZXh0ZW5kIHRoZSBmb3JtYXQgaW4gdGhlIGZ1 dHVyZSB0byBtYWtlIHJvb20gZm9yIG90aGVyIG1lbW9yeSB0YWcNCmxheW91dHMuDQoNClRoaXMg aXMgYSB3aWRlciBxdWVzdGlvbiB0aGFuIHRoaXMgcGF0Y2ggLSBidXQgaXMgdGhlcmUgc29tZXBs YWNlIHRoaXMgZm9ybWF0IHdpbGwNCmJlIGRvY3VtZW50ZWQ/IElkZWFsbHkgZWl0aGVyIExpbnV4 IG9yIEdEQiBuZWVkcyBzb21ldGhpbmcgd3JpdHRlbiBkb3duIGluDQp0ZXh0IGZvcm1hdC4NCkEg ZmV3IG5pdHMgYmVsb3cgdG9vLCBidXQgbW9zdGx5IGxvb2tzIGZpbmUuDQoNClllcy4gSSdtIHN0 aWxsIHRoaW5raW5nIHdoZXRoZXIgdGhpcyBzaG91bGQgZ28gaW50byB0aGUgTGludXggS2VybmVs J3MgZG9jdW1lbnRhdGlvbiBvciBzb21ld2hlcmUgaW4gdGhlIEdEQiBtYW51YWwuDQoNCkdpdmVu IEdEQiByZWFkcyBjb3JlIGZpbGVzIGdlbmVyYXRlZCBieSB0aGUgTGludXggS2VybmVsIGFuZCBh bHNvIGNyZWF0ZXMgY29yZXMgZmlsZXMgaXRzZWxmLCBJJ20gdGhpbmtpbmcgaXQgbWF5IGJlIGJl c3QgdG8gcHV0IGl0IGluIHRoZSBHREIgbWFudWFsLg0KDQpJIHdhbnQgdG8gd2FpdCBmb3IgcG9z c2libGUgZmVlZGJhY2tzIGFib3V0IHRoZSBmb3JtYXQgYmVmb3JlIHdlIGRvY3VtZW50IGhvdyBp dCB3aWxsIGxvb2sgbGlrZSBpbiB0aGUgbWFudWFsLg0KDQpSZWFkaW5nIG1lbW9yeSB0YWdzDQot DQoNCldoZW4gcmVhZGluZyBhIGNvcmUgZmlsZSB0aGF0IGNvbnRhaW5zIE5UX01FTVRBRyBlbnRy aWVzLCBHREIgd2lsbCB1c2UNCmEgZGlmZmVyZW50IGFwcHJvYWNoIHRvIGNoZWNrIGZvciB0YWdn ZWQgbWVtb3J5IHJhbmdlLiBSYXRoZXIgdGhhbiBsb29raW5nDQphdCAvcHJvYy88cGlkPi9zbWFw cywgaXQgd2lsbCBub3cgbG9vayBmb3IgIi5tZW10YWciIHNlY3Rpb25zIHdpdGggdGhlIHJpZ2h0 DQptZW1vcnkgcmFuZ2UuDQoNCldoZW4gcmVhZGluZyB0YWdzLCBHREIgd2lsbCBub3cgdXNlIHRo ZSBjb3JlIHRhcmdldCdzIGltcGxlbWVudGF0aW9uIG9mDQpmZXRjaF9tZW10YWdzIChzdG9yZV9t ZW10YWdzIGRvZXNuJ3QgZXhpc3QgZm9yIGNvcmUgdGFyZ2V0cykuIFRoZW4gdGhlIGRhdGENCmlz IGZlZCBpbnRvIGFuIGFyY2gtc3BlY2lmaWMgaG9vayB0aGF0IHdpbGwgZGVjb2RlIHRoZSBtZW1v cnkgdGFnIGZvcm1hdCBhbmQNCnJldHVybiBhIHZlY3RvciBvZiB0YWdzLg0KDQpJJ3ZlIGFkZGVk IGEgdGVzdCB0byBleGVyY2lzZSB3cml0aW5nIGFuZCByZWFkaW5nIG9mIG1lbW9yeSB0YWdzIGlu IGNvcmUNCmZpbGVzLg0KDQpnZGIvQ2hhbmdlTG9nOg0KDQpZWVlZLU1NLUREICBMdWlzIE1hY2hh ZG8gIDxsdWlzLm1hY2hhZG9AbGluYXJvLm9yZzxtYWlsdG86bHVpcy5tYWNoYWRvQGxpbmFyby5v cmc+Pg0KDQoqIGFhcmNoNjQtbGludXgtdGRlcC5jOiBJbmNsdWRlIGVsZi9jb21tb24uaC4NCihN QVhfVEFHU19UT19UUkFOU0ZFUik6IE5ldyBjb25zdGFudC4NCihhYXJjaDY0X2xpbnV4X2NyZWF0 ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSk6IE5ldyBmdW5jdGlvbi4NCihhYXJjaDY0X2xpbnV4 X2RlY29kZV9tZW10YWdfbm90ZSk6IExpa2V3aXNlLg0KKGFhcmNoNjRfbGludXhfaW5pdF9hYmkp OiBSZWdpc3RlciBuZXcgY29yZSBmaWxlIGhvb2tzLg0KKiBhcmNoL2FhcmNoNjQtbXRlLWxpbnV4 LmggKEFBUkNINjRfTVRFX1RBR19CSVRfU0laRSk6IE5ldyBjb25zdGFudC4NCihzdHJ1Y3QgdGFn X2R1bXBfaGVhZGVyKTogTmV3IHN0cnVjdC4NCihzdHJ1Y3QgdGFnX2R1bXBfbXRlKTogTmV3IHN0 cnVjdC4NCihNRU1UQUdfTk9URV9IRUFERVJfU0laRSk6IE5ldyBjb25zdGFudC4NCiogY29yZWxv dy5jIChjb3JlX3RhcmdldCkgPHN1cHBvcnRzX21lbW9yeV90YWdnaW5nLCBmZXRjaF9tZW10YWdz PjogTmV3DQptZXRob2Qgb3ZlcnJpZGVzLg0KKiBnZGJhcmNoLmM6IFJlZ2VuZXJhdGUuDQoqIGdk YmFyY2guaDogTGlrZXdpc2UuDQoqIGdkYmFyY2guc2ggKGNyZWF0ZV9tZW10YWdfbm90ZXNfZnJv bV9yYW5nZSk6IE5ldyBob29rLg0KKGRlY29kZV9tZW10YWdfbm90ZSk6IExpa2V3aXNlLg0KKiBs aW51eC10ZGVwLmMgKGxpbnV4X2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UpOiBSZW5hbWVkIHRvLi4u DQoobGludXhfcHJvY2Vzc19hZGRyZXNzX2luX21lbXRhZ19wYWdlKTogLi4uIHRoaXMuDQoobGlu dXhfY29yZV9maWxlX2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UpOiBOZXcgZnVuY3Rpb24uDQoobGlu dXhfYWRkcmVzc19pbl9tZW10YWdfcGFnZSk6IExpa2V3aXNlLg0KKGxpbnV4X21ha2VfbWVtdGFn X2NvcmVmaWxlX25vdGVzKTogTGlrZXdpc2UuDQoobGludXhfbWFrZV9jb3JlZmlsZV9ub3Rlcyk6 IEhhbmRsZSBtZW1vcnkgdGFnIG5vdGVzLg0KKiBORVdTOiBNZW50aW9uIGNvcmUgZmlsZSBzdXBw b3J0IGZvciBtZW1vcnkgdGFnZ2luZy4NCg0KZ2RiL2RvYy9DaGFuZ2VMb2c6DQoNCllZWVktTU0t REQgIEx1aXMgTWFjaGFkbyAgPGx1aXMubWFjaGFkb0BsaW5hcm8ub3JnPG1haWx0bzpsdWlzLm1h Y2hhZG9AbGluYXJvLm9yZz4+DQoNCiogZ2RiLnRleGluZm8gKEFBcmNoNjQgTWVtb3J5IFRhZ2dp bmcgRXh0ZW5zaW9uKTogTWVudGlvbiBzdXBwb3J0DQpmb3IgbWVtb3J5IHRhZ2dpbmcgaW4gY29y ZSBmaWxlcy4NCg0KZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQoNCllZWVktTU0tREQgIEx1aXMg TWFjaGFkbyAgPGx1aXMubWFjaGFkb0BsaW5hcm8ub3JnPG1haWx0bzpsdWlzLm1hY2hhZG9AbGlu YXJvLm9yZz4+DQoNCiogZ2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUuYzogTmV3IGZpbGUuDQoq IGdkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3JlLmV4cDogTmV3IGZpbGUuDQotLS0NCmdkYi9ORVdT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsNCmdkYi9hYXJjaDY0 LWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgICAgIHwgMTc5ICsrKysrKysrKysrKysrKysr KysNCmdkYi9hcmNoL2FhcmNoNjQtbXRlLWxpbnV4LmggICAgICAgICAgICAgICAgIHwgIDI5ICsr Kw0KZ2RiL2NvcmVsb3cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgODggKysr KysrKysrDQpnZGIvZG9jL2dkYi50ZXhpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NCArDQpnZGIvZ2RiYXJjaC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2NCAr KysrKysrDQpnZGIvZ2RiYXJjaC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx NiArKw0KZ2RiL2dkYmFyY2guc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYg Kw0KZ2RiL2xpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDEgKysr KysrKysrKysrKystDQpnZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3JlLmMg ICB8ICA5MyArKysrKysrKysrDQpnZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdj b3JlLmV4cCB8IDExNSArKysrKysrKysrKysNCjExIGZpbGVzIGNoYW5nZWQsIDczNiBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQ0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUv Z2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUuYw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUuZXhwDQoNCmRpZmYgLS1naXQgYS9nZGIv TkVXUyBiL2dkYi9ORVdTDQppbmRleCBhYjY3OGFjZWM4Yi4uNThiOWY3MzlkNGYgMTAwNjQ0DQot LS0gYS9nZGIvTkVXUw0KKysrIGIvZ2RiL05FV1MNCkBAIC0zLDYgKzMsMTAgQEANCg0KKioqIENo YW5nZXMgc2luY2UgR0RCIDEwDQoNCisqIEdEQiBub3cgc3VwcG9ydHMgZHVtcGluZyBtZW1vcnkg dGFnIGRhdGEgZm9yIEFBcmNoNjQgTVRFLiAgSXQgYWxzbyBzdXBwb3J0cw0KKyAgcmVhZGluZyBt ZW1vcnkgdGFnIGRhdGEgZm9yIEFBcmNoNjQgTVRFIGZyb20gY29yZSBmaWxlcyBnZW5lcmF0ZWQg YnkNCisgIHRoZSBnY29yZSBjb21tYW5kIG9yIHRoZSBMaW51eCBrZXJuZWwuDQorDQoqIEdEQiBu b3cgc3VwcG9ydHMgZ2VuZXJhbCBtZW1vcnkgdGFnZ2luZyBmdW5jdGlvbmFsaXR5IGlmIHRoZSB1 bmRlcmx5aW5nDQogIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyB0aGUgcHJvcGVyIHByaW1pdGl2ZXMg YW5kIGhvb2tzLiAgQ3VycmVudGx5IHRoaXMgaXMNCiAgZW5hYmxlZCBvbmx5IGZvciBBQXJjaDY0 IE1URS4NCmRpZmYgLS1naXQgYS9nZGIvYWFyY2g2NC1saW51eC10ZGVwLmMgYi9nZGIvYWFyY2g2 NC1saW51eC10ZGVwLmMNCmluZGV4IGU5NzYxZWQyMTg5Li42NjNkMGUxYTIxNSAxMDA2NDQNCi0t LSBhL2dkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYw0KKysrIGIvZ2RiL2FhcmNoNjQtbGludXgtdGRl cC5jDQpAQCAtNTMsNiArNTMsOCBAQA0KDQojaW5jbHVkZSAiZ2Ric3VwcG9ydC9zZWxmdGVzdC5o Ig0KDQorI2luY2x1ZGUgImVsZi9jb21tb24uaCINCisNCi8qIFNpZ25hbCBmcmFtZSBoYW5kbGlu Zy4NCg0KICAgICAgKy0tLS0tLS0tLS0tLSsgIF4NCkBAIC0xNzc5LDYgKzE3ODEsMTcyIEBAIGFh cmNoNjRfbGludXhfcmVwb3J0X3NpZ25hbF9pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwN CiAgICB9DQp9DQoNCisvKiBNYXhpbXVtIG51bWJlciBvZiB0YWdzIHRvIHJlcXVlc3QuICAqLw0K KyNkZWZpbmUgTUFYX1RBR1NfVE9fVFJBTlNGRVIgMTAyNA0KKw0KKy8qIEFBcmNoNjQgTGludXgg aW1wbGVtZW50YXRpb24gb2YgdGhlIGFhcmNoNjRfY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3Jh bmdlDQorICAgZ2RiYXJjaCBob29rLiAgQ3JlYXRlIGNvcmUgZmlsZSBub3RlcyBmb3IgbWVtb3J5 IHRhZ3MuICAqLw0KKw0KK3N0YXRpYyBzdGQ6OnZlY3RvcjxnZGI6OmJ5dGVfdmVjdG9yPg0KK2Fh cmNoNjRfbGludXhfY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwNCisgICAgICAgQ09SRV9BRERSIHN0YXJ0X2FkZHJlc3MsDQorICAgICAgIENP UkVfQUREUiBlbmRfYWRkcmVzcykNCit7DQorICAvKiBXZSBvbmx5IGhhbmRsZSBNVEUgdGFncyBm b3Igbm93LiAgKi8NCisNCisgIC8qIEZpZ3VyZSBvdXQgaG93IG1hbnkgdGFncyB3ZSBuZWVkIHRv IHN0b3JlIGluIHRoaXMgbWVtb3J5IHJhbmdlLiAgKi8NCisgIGludCBncmFudWxlcyA9IGFhcmNo NjRfbXRlX2dldF90YWdfZ3JhbnVsZXMgKHN0YXJ0X2FkZHJlc3MsDQorICAgICAgICBlbmRfYWRk cmVzcyAtIHN0YXJ0X2FkZHJlc3MsDQorICAgICAgICBBQVJDSDY0X01URV9HUkFOVUxFX1NJWkUp Ow0KKw0KKyAgLyogVmVjdG9yIG9mIG1lbW9yeSB0YWcgbm90ZXMuIEFkZCB0aGUgTVRFIG5vdGUg KHdlIG9ubHkgaGF2ZSBNVEUgdGFncw0KKyAgICAgYXQgdGhlIG1vbWVudCkuICAqLw0KKyAgc3Rk Ojp2ZWN0b3I8Z2RiOjpieXRlX3ZlY3Rvcj4gbm90ZXMgKDEpOw0KKw0KKyAgLyogSWYgdGhlcmUg YXJlIG5vIHRhZyBncmFudWxlcyB0byBmZXRjaCwganVzdCByZXR1cm4uICAqLw0KKyAgaWYgKGdy YW51bGVzID09IDApDQorICAgIHJldHVybiBub3RlczsNCisNCisgIC8qIEFkanVzdCB0aGUgTVRF IG5vdGUgc2l6ZSB0byBob2xkIHRoZSBoZWFkZXIgKyB0YWdzLiAgKi8NCisgIG5vdGVzWzBdLnJl c2l6ZSAoTUVNVEFHX05PVEVfSEVBREVSX1NJWkUgKyBncmFudWxlcyk7DQorDQorICBDT1JFX0FE RFIgYWRkcmVzcyA9IHN0YXJ0X2FkZHJlc3M7DQorICAvKiBWZWN0b3Igb2YgdGFncy4gICovDQor ICBnZGI6OmJ5dGVfdmVjdG9yIHRhZ3M7DQorDQorICB3aGlsZSAoZ3JhbnVsZXMgPiAwKQ0KKyAg ICB7DQorICAgICAgLyogVHJhbnNmZXIgdGFncyBpbiBjaHVua3MuICAqLw0KKyAgICAgIGdkYjo6 Ynl0ZV92ZWN0b3IgdGFnc19yZWFkOw0KKyAgICAgIHNpemVfdCB4ZmVyX2xlbg0KKyA9IChncmFu dWxlcyA+PSBNQVhfVEFHU19UT19UUkFOU0ZFUik/DQorICAgTUFYX1RBR1NfVE9fVFJBTlNGRVIg KiBBQVJDSDY0X01URV9HUkFOVUxFX1NJWkUgOg0KKyAgIGdyYW51bGVzICogQUFSQ0g2NF9NVEVf R1JBTlVMRV9TSVpFOw0KKw0KKyAgICAgIGlmICghdGFyZ2V0X2ZldGNoX21lbXRhZ3MgKGFkZHJl c3MsIHhmZXJfbGVuLCB0YWdzX3JlYWQsDQorICBzdGF0aWNfY2FzdDxpbnQ+IChtZW10YWdfdHlw ZTo6YWxsb2NhdGlvbikpKQ0KKyB7DQorICAgd2FybmluZyAoXygiRmFpbGVkIHRvIHJlYWQgTVRF IHRhZ3MgZnJvbSBtZW1vcnkgcmFuZ2UgWyVzLCVzXS4iKSwNCisgICAgICBwaGV4X256IChzdGFy dF9hZGRyZXNzLCBzaXplb2YgKHN0YXJ0X2FkZHJlc3MpKSwNCisgICAgICBwaGV4X256IChlbmRf YWRkcmVzcywgc2l6ZW9mIChlbmRfYWRkcmVzcykpKTsNCisgICBub3Rlcy5yZXNpemUgKDApOw0K KyAgIHJldHVybiBub3RlczsNCisgfQ0KKw0KKyAgICAgIC8qIFRyYW5zZmVyIG92ZXIgdGhlIHRh Z3MgdGhhdCBoYXZlIGJlZW4gcmVhZC4gICovDQorICAgICAgdGFncy5pbnNlcnQgKHRhZ3MuZW5k ICgpLCB0YWdzX3JlYWQuYmVnaW4gKCksIHRhZ3NfcmVhZC5lbmQgKCkpOw0KKw0KKyAgICAgIC8q IEFkanVzdCB0aGUgcmVtYWluaW5nIGdyYW51bGVzIGFuZCBzdGFydGluZyBhZGRyZXNzLiAgKi8N CisgICAgICBncmFudWxlcyAtPSB0YWdzX3JlYWQuc2l6ZSAoKTsNCisgICAgICBhZGRyZXNzICs9 IHRhZ3NfcmVhZC5zaXplICgpICogQUFSQ0g2NF9NVEVfR1JBTlVMRV9TSVpFOw0KKyAgICB9DQor DQorICAvKiBDcmVhdGUgdGhlIGhlYWRlci4gICovDQorICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9v cmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7DQorICBnZGJfYnl0ZSAqYnVmID0g bm90ZXNbMF0uZGF0YSAoKTsNCisNCisgIC8qIEdlbmVyaWMgaGVhZGVyLiAgKi8NCisgIC8qIFRh ZyBkdW1wIGZvcm1hdCAqLw0KKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXplb2Yg KHVpbnQxNl90KSwgYnl0ZV9vcmRlciwNCisgICBOVF9NRU1UQUdfVFlQRV9BQVJDSF9NVEUpOw0K KyAgYnVmICs9IHNpemVvZiAodWludDE2X3QpOw0KKw0KKyAgLyogU3RhcnQgYWRkcmVzcyAqLw0K KyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXplb2YgKHVpbnQ2NF90KSwgYnl0ZV9v cmRlciwgc3RhcnRfYWRkcmVzcyk7DQorICBidWYgKz0gc2l6ZW9mICh1aW50NjRfdCk7DQorDQor ICAvKiBFbmQgYWRkcmVzcyAqLw0KKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXpl b2YgKHVpbnQ2NF90KSwgYnl0ZV9vcmRlciwgZW5kX2FkZHJlc3MpOw0KKyAgYnVmICs9IHNpemVv ZiAodWludDY0X3QpOw0KKw0KKyAgLyogTVRFLXNwZWNpZmljIGhlYWRlci4gICovDQorICAvKiBH cmFudWxlIGJ5dGUgc2l6ZSAqLw0KKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXpl b2YgKHVpbnQxNl90KSwgYnl0ZV9vcmRlciwNCisgICBBQVJDSDY0X01URV9HUkFOVUxFX1NJWkUp Ow0KKyAgYnVmICs9IHNpemVvZiAodWludDE2X3QpOw0KKw0KKyAgLyogVGFnIGJpdCBzaXplICov DQorICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChidWYsIHNpemVvZiAodWludDE2X3QpLCBieXRl X29yZGVyLA0KKyAgIEFBUkNINjRfTVRFX1RBR19CSVRfU0laRSk7DQorICBidWYgKz0gc2l6ZW9m ICh1aW50MTZfdCk7DQorDQorICAvKiBVbnVzZWQgdmFsdWUgKi8NCisgIHN0b3JlX3Vuc2lnbmVk X2ludGVnZXIgKGJ1Ziwgc2l6ZW9mICh1aW50MTZfdCksIGJ5dGVfb3JkZXIsIDApOw0KKw0KKyAg LyogU3RvcmUgdGhlIHRhZ3MuICAqLw0KKyAgbWVtY3B5IChub3Rlc1swXS5kYXRhICgpICsgTUVN VEFHX05PVEVfSEVBREVSX1NJWkUsIHRhZ3MuZGF0YSAoKSwNCisgICB0YWdzLnNpemUgKCkpOw0K Kw0KKyAgcmV0dXJuIG5vdGVzOw0KK30NCisNCisvKiBBQXJjaDY0IExpbnV4IGltcGxlbWVudGF0 aW9uIG9mIHRoZSBkZWNvZGVfbWVtdGFnX25vdGUgZ2RiYXJjaA0KKyAgIGhvb2suICBEZWNvZGUg YSBtZW1vcnkgdGFnIG5vdGUgYW5kIHJldHVybiB0aGUgcmVxdWVzdCB0YWdzLiAgKi8NCisNCitz dGF0aWMgZ2RiOjpieXRlX3ZlY3Rvcg0KK2FhcmNoNjRfbGludXhfZGVjb2RlX21lbXRhZ19ub3Rl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCisgICBnZGI6OmFycmF5X3ZpZXcgPGNvbnN0IGdk Yl9ieXRlPiBub3RlLA0KKyAgIENPUkVfQUREUiBhZGRyZXNzLCBzaXplX3QgbGVuZ3RoKQ0KK3sN CisgIGdkYjo6Ynl0ZV92ZWN0b3IgdGFnczsNCisNCisgIC8qIFJlYWQgdGhlIGdlbmVyaWMgaGVh ZGVyLiAgKi8NCisgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29y ZGVyIChnZGJhcmNoKTsNCisgIHN0cnVjdCB0YWdfZHVtcF9oZWFkZXIgaGVhZGVyOw0KKyAgY29u c3QgZ2RiX2J5dGUgKmJ1ZiA9IG5vdGUuZGF0YSAoKTsNCisNCisgIGhlYWRlci5mb3JtYXQNCisg ICAgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1Ziwgc2l6ZW9mICh1aW50MTZfdCksIGJ5 dGVfb3JkZXIpOw0KKyAgYnVmICs9IHNpemVvZiAodWludDE2X3QpOw0KKw0KKyAgaGVhZGVyLnN0 YXJ0X3ZtYQ0KKyAgICA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXplb2YgKHVp bnQ2NF90KSwgYnl0ZV9vcmRlcik7DQorICBidWYgKz0gc2l6ZW9mICh1aW50NjRfdCk7DQorDQor ICBoZWFkZXIuZW5kX3ZtYQ0KKyAgICA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBz aXplb2YgKHVpbnQ2NF90KSwgYnl0ZV9vcmRlcik7DQorICBidWYgKz0gc2l6ZW9mICh1aW50NjRf dCk7DQorDQorICAvKiBTYW5pdHkgY2hlY2sgICovDQorICBpZiAoaGVhZGVyLmZvcm1hdCAhPSBO VF9NRU1UQUdfVFlQRV9BQVJDSF9NVEUpDQorICAgIHsNCisgICAgICB3YXJuaW5nIChfKCJVbmV4 cGVjdGVkIG1lbW9yeSB0YWcgbm90ZSBmb3JtYXQgKCV4KS5cbiIpLCBoZWFkZXIuZm9ybWF0KTsN CisgICAgICByZXR1cm4gdGFnczsNCisgICAgfQ0KKw0KKyAgLyogQ2FsY3VsYXRlIGhvdyBtYW55 IGdyYW51bGVzIHdlIG5lZWQgdG8gc2tpcCB0byBnZXQgdG8gdGhlIGdyYW51bGUgb2YNCisgICAg IEFERFJFU1MuICBBbGlnbiBib3RoIHRoZSBzdGFydCBhZGRyZXNzIGFuZCB0aGUgcmVxdWVzdGVk IGFkZHJlc3MNCisgICAgIHNvIGl0IGlzIGVhc2llciB0byBnZXQgdGhlIG51bWJlciBvZiBncmFu dWxlcyB0byBza2lwLiAgVGhpcyB3YXkgd2UNCisgICAgIGRvbid0IG5lZWQgdG8gY29uc2lkZXIg Y2FzZXMgd2hlcmUgQUREUkVTUyBmYWxscyBpbiB0aGUgbWlkZGxlIG9mIGENCisgICAgIHRhZyBn cmFudWxlIHJhbmdlLiAgKi8NCisgIENPUkVfQUREUiBhbGlnbmVkX3N0YXJ0X2FkZHJlc3MNCisg ICAgPSBhbGlnbl9kb3duIChoZWFkZXIuc3RhcnRfdm1hLCBBQVJDSDY0X01URV9HUkFOVUxFX1NJ WkUpOw0KKyAgQ09SRV9BRERSIGFsaWduZWRfYWRkcmVzcyA9IGFsaWduX2Rvd24gKGFkZHJlc3Ms IEFBUkNINjRfTVRFX0dSQU5VTEVfU0laRSk7DQorDQorICBpbnQgc2tpcHBlZF9ncmFudWxlcw0K KyAgICA9IGFhcmNoNjRfbXRlX2dldF90YWdfZ3JhbnVsZXMgKGFsaWduZWRfc3RhcnRfYWRkcmVz cywNCisgICAgIGFsaWduZWRfYWRkcmVzcyAtIGFsaWduZWRfc3RhcnRfYWRkcmVzcywNCisgICAg IEFBUkNINjRfTVRFX0dSQU5VTEVfU0laRSk7DQorDQorICAvKiBUaGUgYW1vdW50IG9mIG1lbW9y eSB0YWcgZ3JhbnVsZXMgd2UgbmVlZCB0byBmZXRjaC4gICovDQorICBpbnQgZ3JhbnVsZXMNCisg ICAgPSBhYXJjaDY0X210ZV9nZXRfdGFnX2dyYW51bGVzIChhZGRyZXNzLCBsZW5ndGgsIEFBUkNI NjRfTVRFX0dSQU5VTEVfU0laRSk7DQorDQorICAvKiBJZiB0aGVyZSBhcmUgbm8gdGFnIGdyYW51 bGVzIHRvIGRlY29kZSwganVzdCByZXR1cm4uICAqLw0KKyAgaWYgKGdyYW51bGVzID09IDApDQor ICAgIHJldHVybiB0YWdzOw0KKw0KKyAgLyogUG9pbnQgdG8gdGhlIGJsb2NrIG9mIGRhdGEgdGhh dCBjb250YWlucyB0aGUgZmlyc3QgZ3JhbnVsZSB3ZSBhcmUNCisgICAgIGludGVyZXN0ZWQgaW4u ICAqLw0KKyAgY29uc3QgZ2RiX2J5dGUgKnRhZ3NfZGF0YSA9IG5vdGUuZGF0YSAoKSArIHNpemVv ZiAoaGVhZGVyKSArIHNraXBwZWRfZ3JhbnVsZXM7DQorDQorICAvKiBSZWFkIHRoZSB0YWcgZ3Jh bnVsZXMuICAqLw0KKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBncmFudWxlczsgaSsr KQ0KKyAgICAgIHRhZ3MucHVzaF9iYWNrICh0YWdzX2RhdGFbaV0pOw0KKw0KKyAgcmV0dXJuIHRh Z3M7DQorfQ0KKw0Kc3RhdGljIHZvaWQNCmFhcmNoNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBn ZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQp7DQpAQCAtMTg2Miw2 ICsyMDMwLDE3IEBAIGFhcmNoNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8g aW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQoNCiAgICAgIHNldF9nZGJhcmNoX3JlcG9y dF9zaWduYWxfaW5mbyAoZ2RiYXJjaCwNCiAgICAgIGFhcmNoNjRfbGludXhfcmVwb3J0X3NpZ25h bF9pbmZvKTsNCisNCisgICAgICAvKiBDb3JlIGZpbGUgaGVscGVycy4gICovDQorDQorICAgICAg LyogQ29yZSBmaWxlIGhlbHBlciB0byBjcmVhdGUgbWVtb3J5IHRhZyBub3RlcyBmb3IgYSBwYXJ0 aWN1bGFyIHJhbmdlIG9mDQorICBhZGRyZXNzZXMuICAqLw0KKyAgICAgIHNldF9nZGJhcmNoX2Ny ZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSAoZ2RiYXJjaCwNCisgICBhYXJjaDY0X2xpbnV4 X2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSk7DQorDQorICAgICAgLyogQ29yZSBmaWxl IGhlbHBlciB0byBkZWNvZGUgYSBtZW1vcnkgdGFnIG5vdGUuICAqLw0KKyAgICAgIHNldF9nZGJh cmNoX2RlY29kZV9tZW10YWdfbm90ZSAoZ2RiYXJjaCwNCisgICAgICAgYWFyY2g2NF9saW51eF9k ZWNvZGVfbWVtdGFnX25vdGUpOw0KICAgIH0NCg0KICAvKiBJbml0aWFsaXplIHRoZSBhYXJjaDY0 X2xpbnV4X3JlY29yZF90ZGVwLiAgKi8NCmRpZmYgLS1naXQgYS9nZGIvYXJjaC9hYXJjaDY0LW10 ZS1saW51eC5oIGIvZ2RiL2FyY2gvYWFyY2g2NC1tdGUtbGludXguaA0KaW5kZXggMmFhOTdlYjg2 MWEuLmE0YTI2NjI4ODQ3IDEwMDY0NA0KLS0tIGEvZ2RiL2FyY2gvYWFyY2g2NC1tdGUtbGludXgu aA0KKysrIGIvZ2RiL2FyY2gvYWFyY2g2NC1tdGUtbGludXguaA0KQEAgLTMyLDYgKzMyLDcgQEAN Cg0KLyogV2UgaGF2ZSBvbmUgdGFnIHBlciAxNiBieXRlcyBvZiBtZW1vcnkuICAqLw0KI2RlZmlu ZSBBQVJDSDY0X01URV9HUkFOVUxFX1NJWkUgMTYNCisjZGVmaW5lIEFBUkNINjRfTVRFX1RBR19C SVRfU0laRSA0DQojZGVmaW5lIEFBUkNINjRfTVRFX0xPR0lDQUxfVEFHX1NUQVJUX0JJVCA1Ng0K I2RlZmluZSBBQVJDSDY0X01URV9MT0dJQ0FMX01BWF9WQUxVRSAweGYNCg0KQEAgLTcxLDQgKzcy LDMyIEBAIGV4dGVybiBDT1JFX0FERFIgYWFyY2g2NF9tdGVfc2V0X2x0YWcgKENPUkVfQUREUiBh ZGRyZXNzLCBDT1JFX0FERFIgdGFnKTsNCiAgIEl0IGlzIGFsd2F5cyBwb3NzaWJsZSB0byBnZXQg dGhlIGxvZ2ljYWwgdGFnLiAgKi8NCmV4dGVybiBDT1JFX0FERFIgYWFyY2g2NF9tdGVfZ2V0X2x0 YWcgKENPUkVfQUREUiBhZGRyZXNzKTsNCg0KKy8qIEhlYWRlcnMgZm9yIHRoZSBOVF9NRU1UQUcg bm90ZXMuICAqLw0KKw0KKy8qIEdlbmVyaWMgTlRfTUVNVEFHIGhlYWRlci4gICovDQorc3RydWN0 IHRhZ19kdW1wX2hlYWRlcg0KK3sNCisgIC8qIFRhZyBmb3JtYXQuICAqLw0KKyAgdWludDE2X3Qg Zm9ybWF0Ow0KKyAgLyogU3RhcnQgYWRkcmVzcyBvZiB0aGUgdGFnZ2VkIHJhbmdlLiAgKi8NCisg IHVpbnQ2NF90IHN0YXJ0X3ZtYTsNCisgIC8qIEVuZCBhZGRyZXNzIG9mIHRoZSB0YWdnZWQgcmFu Z2UuICAqLw0KKyAgdWludDY0X3QgZW5kX3ZtYTsNCit9Ow0KKw0KKy8qIE1URS1zcGVjaWZpYyBO VF9NRU1UQUcgaGVhZGVyLiAgKi8NCitzdHJ1Y3QgdGFnX2R1bXBfbXRlDQorew0KKyAgLyogU2l6 ZSBvZiB0aGUgdGFnIGdyYW51bGUgaW4gYnl0ZXMuICAqLw0KKyAgdWludDE2X3QgZ3JhbnVsZV9i eXRlX3NpemU7DQorICAvKiBTaXplIG9mIHRoZSB0YWcgaW4gYml0cy4gICovDQorICB1aW50MTZf dCB0YWdfYml0X3NpemU7DQorICAvKiBSZXNlcnZlZCBmaWVsZCBmb3IgdGhlIGZ1dHVyZS4gICov DQorICB1aW50MTZfdCBfX3VudXNlZDsNCit9Ow0KKw0KKy8qIE1lbW9yeSB0YWcgbm90ZSBoZWFk ZXIgc2l6ZS4gIEluY2x1ZGVzIGJvdGggdGhlIGdlbmVyaWMgYW5kIHRoZQ0KKyAgIGFyY2gtc3Bl Y2lmaWMgcGFydHMuICAqLw0KKyNkZWZpbmUgTUVNVEFHX05PVEVfSEVBREVSX1NJWkUgKDIgKyA4 ICsgOCArIDIgKyAyICsgMikNClRoaXMgc2hvdWxkIGNvbXBpbGUgZG93biB0byBhIGNvbnN0YW50 IHZhbHVlOiA/DQojZGVmaW5lIE1FTVRBR19OT1RFX0hFQURFUl9TSVpFIChzaXplb2YodGFnX2R1 bXBfaGVhZGVyKStzaXplb2YodGFnX2R1bXBfbXRlKSkNCg0KUmlnaHQuIEJ1dCB0aGVyZSBtYXkg YmUgcGFkZGluZyBiZXR3ZWVuIHRoZSBtZW1iZXJzIG9mIHRoZSBzdHJ1Y3QsIGFuZCB3ZSBkb24n dCB3YW50IHRvIHJlbHkgb24gd2hhdCB0aGUgY29tcGlsZXIgaXMgZG9pbmcuIFdlIGNvdWxkIGZv cmNlIHRoaXMgdG8gYmUgInBhY2tlZCIgbWF5YmU/DQoNClNob3VsZCB0aGUgZGF0YSBpbnNpZGUg dGhlIGNvcmUgZmlsZSBiZSBwYWNrZWQ/DQpQYWNrZWQgc2F2ZXMgdGhlIHNwYWNlLCBidXQgcGFk ZGVkIGVuc3VyZXMgdGhlIGZpbGUgaXMgYWxpZ25lZCBhbmQgbWF5YmUgZWFzaWVyIHRvIGNvcHku DQoNCg0KKw0KI2VuZGlmIC8qIEFSQ0hfQUFSQ0g2NF9MSU5VWF9IICovDQpkaWZmIC0tZ2l0IGEv Z2RiL2NvcmVsb3cuYyBiL2dkYi9jb3JlbG93LmMNCmluZGV4IDQ1MmI0ZGQ0ZjlhLi4zM2QxNmI3 MjIwYSAxMDA2NDQNCi0tLSBhL2dkYi9jb3JlbG93LmMNCisrKyBiL2dkYi9jb3JlbG93LmMNCkBA IC0xMDAsNiArMTAwLDEzIEBAIGNsYXNzIGNvcmVfdGFyZ2V0IGZpbmFsIDogcHVibGljIHByb2Nl c3Nfc3RyYXR1bV90YXJnZXQNCg0KICBib29sIGluZm9fcHJvYyAoY29uc3QgY2hhciAqLCBlbnVt IGluZm9fcHJvY193aGF0KSBvdmVycmlkZTsNCg0KKyAgYm9vbCBzdXBwb3J0c19tZW1vcnlfdGFn Z2luZyAoKSBvdmVycmlkZTsNCisNCisgIC8qIENvcmUgZmlsZSBpbXBsZW1lbnRhdGlvbiBvZiBm ZXRjaF9tZW10YWdzLiAgRmV0Y2ggdGhlIG1lbW9yeSB0YWdzIGZyb20NCisgICAgIGNvcmUgZmls ZSBub3Rlcy4gICovDQorICBib29sIGZldGNoX21lbXRhZ3MgKENPUkVfQUREUiBhZGRyZXNzLCBz aXplX3QgbGVuLA0KKyAgICAgICBnZGI6OmJ5dGVfdmVjdG9yICZ0YWdzLCBpbnQgdHlwZSkgb3Zl cnJpZGU7DQorDQogIC8qIEEgZmV3IGhlbHBlcnMuICAqLw0KDQogIC8qIEdldHRlciwgc2VlIHZh cmlhYmxlIGRlZmluaXRpb24uICAqLw0KQEAgLTExMTUsNiArMTEyMiw4NyBAQCBjb3JlX3Rhcmdl dDo6aW5mb19wcm9jIChjb25zdCBjaGFyICphcmdzLCBlbnVtIGluZm9fcHJvY193aGF0IHJlcXVl c3QpDQogIHJldHVybiB0cnVlOw0KfQ0KDQorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJzdXBw b3J0c19tZW1vcnlfdGFnZ2luZyIgdGFyZ2V0X29wcyBtZXRob2QuICAqLw0KKw0KK2Jvb2wNCitj b3JlX3RhcmdldDo6c3VwcG9ydHNfbWVtb3J5X3RhZ2dpbmcgKCkNCit7DQorICAvKiBMb29rIGZv ciBtZW1vcnkgdGFnIG5vdGVzLiAgSWYgdGhleSBleGlzdCwgdGhhdCBtZWFucyB0aGlzIGNvcmUg ZmlsZQ0KKyAgICAgc3VwcG9ydHMgbWVtb3J5IHRhZ2dpbmcuICAqLw0KKyAgaWYgKGJmZF9nZXRf c2VjdGlvbl9ieV9uYW1lIChjb3JlX2JmZCwgIi5tZW10YWciKSA9PSBudWxscHRyKQ0KKyAgICBy ZXR1cm4gZmFsc2U7DQorDQorICByZXR1cm4gdHJ1ZTsNCit9DQorDQorLyogSW1wbGVtZW50YXRp b24gb2YgdGhlICJmZXRjaF9tZW10YWdzIiB0YXJnZXRfb3BzIG1ldGhvZC4gICovDQorDQorYm9v bA0KK2NvcmVfdGFyZ2V0OjpmZXRjaF9tZW10YWdzIChDT1JFX0FERFIgYWRkcmVzcywgc2l6ZV90 IGxlbiwNCisgICAgIGdkYjo6Ynl0ZV92ZWN0b3IgJnRhZ3MsIGludCB0eXBlKQ0KK3sNCisgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gdGFyZ2V0X2dkYmFyY2ggKCk7DQorDQorICAvKiBNYWtl IHN1cmUgd2UgaGF2ZSBhIHdheSB0byBkZWNvZGUgdGhlIG1lbW9yeSB0YWcgbm90ZXMuICAqLw0K KyAgaWYgKCFnZGJhcmNoX2RlY29kZV9tZW10YWdfbm90ZV9wIChnZGJhcmNoKSkNCisgICAgd2Fy bmluZyAoXygiZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGUgbm90IGltcGxlbWVudGVkIGZvciB0 aGlzICINCisgICAgICAgICJhcmNoaXRlY3R1cmUuIikpOw0KKw0KKyAgYXNlY3Rpb24gKnNlY3Rp b24NCisgICAgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoY29yZV9iZmQsICIubWVtdGFnIik7 DQorDQorICAvKiBSZW1vdmUgdGhlIHRvcCBieXRlIGZvciB0aGUgbWVtb3J5IHJhbmdlIGNoZWNr LiAgKi8NCisgIGFkZHJlc3MgPSBhZGRyZXNzX3NpZ25pZmljYW50IChnZGJhcmNoLCBhZGRyZXNz KTsNCisNCisgIC8qIEdvIHRocm91Z2ggYWxsIHRoZSBtZW10YWcgc2VjdGlvbnMgYW5kIGZpZ3Vy ZSBvdXQgaWYgQUREUkVTUw0KKyAgICAgZmFsbHMgd2l0aGluIG9uZSBvZiB0aGUgbWVtb3J5IHJh bmdlcyB0aGF0IGNvbnRhaW4gdGFncy4gICovDQorICB3aGlsZSAoc2VjdGlvbiAhPSBudWxscHRy KQ0KKyAgICB7DQorICAgICAgc2l6ZV90IG5vdGVfc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUgKHNl Y3Rpb24pOw0KKw0KKyAgICAgIC8qIElmIHRoZSBub3RlIGlzIHNtYWxsZXIgdGhhbiB0aGUgc2l6 ZSBvZiB0aGUgaGVhZGVyLCB0aGlzIGNvcmUgbm90ZQ0KKyAgaXMgbWFsZm9ybWVkLiAgKi8NCisg ICAgICBpZiAobm90ZV9zaXplIDwgMiAqIHNpemVvZiAodWludDY0X3QpICsgc2l6ZW9mICh1aW50 MTZfdCkpDQpJ4oCZbSBub3Qgc3VyZSB3aHkgNjQrMTYgPw0KDQpBY3R1YWxseSAyICogOCArIDIu IFR3byA2NC1iaXQgZW50cmllcyBhbmQgYSAxNi1iaXQgZW50cnkgaW4gdGhlIGdlbmVyaWMgaGVh ZGVyLg0KDQpEb2VzIHRoYXQgbWFrZSBzZW5zZT8NCg0KSSBjb21wbGV0ZWx5IG1pc3NlZCB0aGUg Mi4NCkRvZXMgdGhpcyBuZWVkIGEgI2RlZmluZSBUQUdfTk9URV9TSVpFIHRoZW4/IChBbmQgdXNl IGl0IGluIHRoZQ0KTUVNVEFHX05PVEVfSEVBREVSX1NJWkUpDQoNCg0KKyB7DQorICAgd2Fybmlu ZyAoXygibWFsZm9ybWVkIGNvcmUgbm90ZSAtIHRvbyBzaG9ydCBmb3IgaGVhZGVyIikpOw0KKyAg IHJldHVybiBmYWxzZTsNCisgfQ0KKw0KKyAgICAgIGdkYjo6Ynl0ZV92ZWN0b3Igbm90ZSAobm90 ZV9zaXplKTsNCisNCisgICAgICAvKiBGZXRjaCB0aGUgY29udGVudHMgb2YgdGhpcyBwYXJ0aWN1 bGFyIG1lbXRhZyBub3RlLiAgKi8NCisgICAgICBpZiAoIWJmZF9nZXRfc2VjdGlvbl9jb250ZW50 cyAoY29yZV9iZmQsIHNlY3Rpb24sDQorICAgICAgbm90ZS5kYXRhICgpLCAwLCBub3RlX3NpemUp KQ0KKyB7DQorICAgd2FybmluZyAoXygiY291bGQgbm90IGdldCBjb3JlIG5vdGUgY29udGVudHMu IikpOw0KKyAgIHJldHVybiBmYWxzZTsNCisgfQ0KKw0KKyAgICAgIC8qIFJlYWQgdGhlIGdlbmVy aWMgaGVhZGVyIG9mIHRoZSBub3RlLiAgVGhvcyBjb250YWlucyB0aGUgZm9ybWF0LA0KKyAgc3Rh cnQgYWRkcmVzcyBhbmQgZW5kIGFkZHJlc3MuICAqLw0KKyAgICAgIHVpbnQ2NF90IHN0YXJ0X2Fk ZHJlc3MNCisgPSBiZmRfZ2V0XzY0IChjb3JlX2JmZCwgbm90ZS5kYXRhICgpICsgc2l6ZW9mICh1 aW50MTZfdCkpOw0KKyAgICAgIHVpbnQ2NF90IGVuZF9hZGRyZXNzDQorID0gYmZkX2dldF82NCAo Y29yZV9iZmQsIG5vdGUuZGF0YSAoKSArIHNpemVvZiAodWludDE2X3QpDQorICsgc2l6ZW9mICh1 aW50NjRfdCkpOw0KKw0KKyAgICAgIC8qIElzIHRoZSBhZGRyZXNzIHdpdGhpbiBbc3RhcnRfYWRk cmVzcywgZW5kX2FkZHJlc3MpPyAgKi8NCisgICAgICBpZiAoYWRkcmVzcyA+PSBzdGFydF9hZGRy ZXNzDQorICAgJiYgYWRkcmVzcyA8IGVuZF9hZGRyZXNzKQ0KKyB7DQorICAgLyogRGVjb2RlIHRo ZSBtZW1vcnkgdGFnIG5vdGUgYW5kIHJldHVybiB0aGUgdGFncy4gICovDQorICAgdGFncyA9IGdk YmFyY2hfZGVjb2RlX21lbXRhZ19ub3RlIChnZGJhcmNoLCBub3RlLCBhZGRyZXNzLCBsZW4pOw0K KyAgIHJldHVybiB0cnVlOw0KKyB9DQorDQorICAgICAgLyogVGhlIHJlcXVlc3RlZCBhZGRyZXNz IGxpZXMgb3V0c2lkZSB0aGlzIHBhcnRpY3VsYXIgbWVtdGFnIG5vdGUuICBLZWVwDQorICBsb29r aW5nIGFuZCBnZXQgdGhlIG5leHQgc2VjdGlvbi4gICovDQorICAgICAgc2VjdGlvbiA9IGJmZF9n ZXRfbmV4dF9zZWN0aW9uX2J5X25hbWUgKGNvcmVfYmZkLCBzZWN0aW9uKTsNCisgICAgfQ0KKw0K KyAgcmV0dXJuIGZhbHNlOw0KK30NCisNCi8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQg Y29yZSB0YXJnZXQuICBJZiBub3QgY29ubmVjdGVkIHRvIGENCiAgIGNvcmUgdGFyZ2V0LCByZXR1 cm4gTlVMTC4gICovDQoNCmRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbw0KaW5kZXggNTZmMzdlYjIyODguLjczOGNiM2I1NmViIDEwMDY0NA0KLS0t IGEvZ2RiL2RvYy9nZGIudGV4aW5mbw0KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbw0KQEAgLTI1 MjU3LDYgKzI1MjU3LDEwIEBAIG9wdGlvbnMgdGhhdCBjYW4gYmUgY29udHJvbGxlZCBhdCBydW50 aW1lIGFuZCBlbXVsYXRlcyB0aGUgQGNvZGV7cHJjdGx9DQpvcHRpb24gQGNvZGV7UFJfU0VUX1RB R0dFRF9BRERSX0NUUkx9LiAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHNlZSB0aGUNCmRvY3Vt ZW50YXRpb24gaW4gdGhlIExpbnV4IGtlcm5lbC4NCg0KK0B2YWx1ZXtHREJOfSBzdXBwb3J0cyBk dW1waW5nIG1lbW9yeSB0YWcgZGF0YSB0byBjb3JlIGZpbGVzIHRocm91Z2ggdGhlDQorQGNvbW1h bmR7Z2NvcmV9IGNvbW1hbmQgYW5kIHJlYWRpbmcgbWVtb3J5IHRhZyBkYXRhIGZyb20gY29yZSBm aWxlcyBnZW5lcmF0ZWQNCitieSB0aGUgQGNvbW1hbmR7Z2NvcmV9IGNvbW1hbmQgb3IgdGhlIExp bnV4IGtlcm5lbC4NCisNCkBub2RlIGkzODYNCkBzdWJzZWN0aW9uIHg4NiBBcmNoaXRlY3R1cmUt c3BlY2lmaWMgSXNzdWVzDQoNCmRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC5jIGIvZ2RiL2dkYmFy Y2guYw0KaW5kZXggMjA4Y2Y0YjVhYWEuLmRlMzg0ZGEyZTlhIDEwMDY0NA0KLS0tIGEvZ2RiL2dk YmFyY2guYw0KKysrIGIvZ2RiL2dkYmFyY2guYw0KQEAgLTI4Myw2ICsyODMsOCBAQCBzdHJ1Y3Qg Z2RiYXJjaA0KICBnZGJhcmNoX2l0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnNfZnR5cGUgKml0 ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnM7DQogIGdkYmFyY2hfbWFrZV9jb3JlZmlsZV9ub3Rl c19mdHlwZSAqbWFrZV9jb3JlZmlsZV9ub3RlczsNCiAgZ2RiYXJjaF9maW5kX21lbW9yeV9yZWdp b25zX2Z0eXBlICpmaW5kX21lbW9yeV9yZWdpb25zOw0KKyAgZ2RiYXJjaF9jcmVhdGVfbWVtdGFn X25vdGVzX2Zyb21fcmFuZ2VfZnR5cGUgKmNyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZTsN CisgIGdkYmFyY2hfZGVjb2RlX21lbXRhZ19ub3RlX2Z0eXBlICpkZWNvZGVfbWVtdGFnX25vdGU7 DQogIGdkYmFyY2hfY29yZV94ZmVyX3NoYXJlZF9saWJyYXJpZXNfZnR5cGUgKmNvcmVfeGZlcl9z aGFyZWRfbGlicmFyaWVzOw0KICBnZGJhcmNoX2NvcmVfeGZlcl9zaGFyZWRfbGlicmFyaWVzX2Fp eF9mdHlwZSAqY29yZV94ZmVyX3NoYXJlZF9saWJyYXJpZXNfYWl4Ow0KICBnZGJhcmNoX2NvcmVf cGlkX3RvX3N0cl9mdHlwZSAqY29yZV9waWRfdG9fc3RyOw0KQEAgLTY2Nyw2ICs2NjksOCBAQCB2 ZXJpZnlfZ2RiYXJjaCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQogIC8qIFNraXAgdmVyaWZ5 IG9mIGl0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnMsIGhhcyBwcmVkaWNhdGUuICAqLw0KICAv KiBTa2lwIHZlcmlmeSBvZiBtYWtlX2NvcmVmaWxlX25vdGVzLCBoYXMgcHJlZGljYXRlLiAgKi8N CiAgLyogU2tpcCB2ZXJpZnkgb2YgZmluZF9tZW1vcnlfcmVnaW9ucywgaGFzIHByZWRpY2F0ZS4g ICovDQorICAvKiBTa2lwIHZlcmlmeSBvZiBjcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2Us IGhhcyBwcmVkaWNhdGUuICAqLw0KKyAgLyogU2tpcCB2ZXJpZnkgb2YgZGVjb2RlX21lbXRhZ19u b3RlLCBoYXMgcHJlZGljYXRlLiAgKi8NCiAgLyogU2tpcCB2ZXJpZnkgb2YgY29yZV94ZmVyX3No YXJlZF9saWJyYXJpZXMsIGhhcyBwcmVkaWNhdGUuICAqLw0KICAvKiBTa2lwIHZlcmlmeSBvZiBj b3JlX3hmZXJfc2hhcmVkX2xpYnJhcmllc19haXgsIGhhcyBwcmVkaWNhdGUuICAqLw0KICAvKiBT a2lwIHZlcmlmeSBvZiBjb3JlX3BpZF90b19zdHIsIGhhcyBwcmVkaWNhdGUuICAqLw0KQEAgLTky NSw2ICs5MjksMTggQEAgZ2RiYXJjaF9kdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3Ry dWN0IHVpX2ZpbGUgKmZpbGUpDQogIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwNCiAgICAgICAg ICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBjb3JlX3hmZXJfc2lnaW5mbyA9IDwlcz5cbiIs DQogICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+ Y29yZV94ZmVyX3NpZ2luZm8pKTsNCisgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwNCisgICAg ICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9jcmVhdGVfbWVtdGFnX25v dGVzX2Zyb21fcmFuZ2VfcCgpID0gJWRcbiIsDQorICAgICAgICAgICAgICAgICAgICAgIGdkYmFy Y2hfY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlX3AgKGdkYmFyY2gpKTsNCisgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZmlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVt cDogY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlID0gPCVzPlxuIiwNCisgICAgICAgICAg ICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+Y3JlYXRlX21lbXRh Z19ub3Rlc19mcm9tX3JhbmdlKSk7DQorICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsDQorICAg ICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfZGVjb2RlX21lbXRhZ19u b3RlX3AoKSA9ICVkXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX2RlY29kZV9t ZW10YWdfbm90ZV9wIChnZGJhcmNoKSk7DQorICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsDQor ICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGRlY29kZV9tZW10YWdfbm90ZSA9 IDwlcz5cbiIsDQorICAgICAgICAgICAgICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcg KGdkYmFyY2gtPmRlY29kZV9tZW10YWdfbm90ZSkpOw0KICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZp bGUsDQogICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogZGVjcl9wY19hZnRlcl9i cmVhayA9ICVzXG4iLA0KICAgICAgICAgICAgICAgICAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdf bnogKGdkYmFyY2gtPmRlY3JfcGNfYWZ0ZXJfYnJlYWspKTsNCkBAIC0zODk4LDYgKzM5MTQsNTQg QEAgc2V0X2dkYmFyY2hfZmluZF9tZW1vcnlfcmVnaW9ucyAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsDQogIGdkYmFyY2gtPmZpbmRfbWVtb3J5X3JlZ2lvbnMgPSBmaW5kX21lbW9yeV9yZWdpb25z Ow0KfQ0KDQorYm9vbA0KK2dkYmFyY2hfY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlX3Ag KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQ0KK3sNCisgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0g TlVMTCk7DQorICByZXR1cm4gZ2RiYXJjaC0+Y3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3Jhbmdl ICE9IE5VTEw7DQorfQ0KKw0KK3N0ZDo6dmVjdG9yPGdkYjo6Ynl0ZV92ZWN0b3I+DQorZ2RiYXJj aF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBDT1JFX0FERFIgc3RhcnRfYWRkcmVzcywgQ09SRV9BRERSIGVuZF9hZGRyZXNzKQ0KK3sNCisg IGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7DQorICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5j cmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgIT0gTlVMTCk7DQorICBpZiAoZ2RiYXJjaF9k ZWJ1ZyA+PSAyKQ0KKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNo X2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSBjYWxsZWRcbiIpOw0KKyAgcmV0dXJuIGdk YmFyY2gtPmNyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSAoZ2RiYXJjaCwgc3RhcnRfYWRk cmVzcywgZW5kX2FkZHJlc3MpOw0KK30NCisNCit2b2lkDQorc2V0X2dkYmFyY2hfY3JlYXRlX21l bXRhZ19ub3Rlc19mcm9tX3JhbmdlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfY3JlYXRlX21lbXRh Z19ub3Rlc19mcm9tX3JhbmdlX2Z0eXBlIGNyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSkN Cit7DQorICBnZGJhcmNoLT5jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgPSBjcmVhdGVf bWVtdGFnX25vdGVzX2Zyb21fcmFuZ2U7DQorfQ0KKw0KK2Jvb2wNCitnZGJhcmNoX2RlY29kZV9t ZW10YWdfbm90ZV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkNCit7DQorICBnZGJfYXNzZXJ0 IChnZGJhcmNoICE9IE5VTEwpOw0KKyAgcmV0dXJuIGdkYmFyY2gtPmRlY29kZV9tZW10YWdfbm90 ZSAhPSBOVUxMOw0KK30NCisNCitnZGI6OmJ5dGVfdmVjdG9yDQorZ2RiYXJjaF9kZWNvZGVfbWVt dGFnX25vdGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBnZGI6OmFycmF5X3ZpZXc8Y29uc3Qg Z2RiX2J5dGU+IG5vdGUsIENPUkVfQUREUiBhZGRyZXNzLCBzaXplX3QgbGVuZ3RoKQ0KK3sNCisg IGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7DQorICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5k ZWNvZGVfbWVtdGFnX25vdGUgIT0gTlVMTCk7DQorICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQ0K KyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX2RlY29kZV9tZW10 YWdfbm90ZSBjYWxsZWRcbiIpOw0KKyAgcmV0dXJuIGdkYmFyY2gtPmRlY29kZV9tZW10YWdfbm90 ZSAoZ2RiYXJjaCwgbm90ZSwgYWRkcmVzcywgbGVuZ3RoKTsNCit9DQorDQordm9pZA0KK3NldF9n ZGJhcmNoX2RlY29kZV9tZW10YWdfbm90ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX2RlY29kZV9tZW10YWdfbm90ZV9m dHlwZSBkZWNvZGVfbWVtdGFnX25vdGUpDQorew0KKyAgZ2RiYXJjaC0+ZGVjb2RlX21lbXRhZ19u b3RlID0gZGVjb2RlX21lbXRhZ19ub3RlOw0KK30NCisNCmJvb2wNCmdkYmFyY2hfY29yZV94ZmVy X3NoYXJlZF9saWJyYXJpZXNfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQp7DQpkaWZmIC0t Z2l0IGEvZ2RiL2dkYmFyY2guaCBiL2dkYi9nZGJhcmNoLmgNCmluZGV4IDcxNTdlNTU5NmZkLi44 MGUyNDQ2MjRkZSAxMDA2NDQNCi0tLSBhL2dkYi9nZGJhcmNoLmgNCisrKyBiL2dkYi9nZGJhcmNo LmgNCkBAIC05ODAsNiArOTgwLDIyIEBAIHR5cGVkZWYgaW50IChnZGJhcmNoX2ZpbmRfbWVtb3J5 X3JlZ2lvbnNfZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZmluZF9tDQpleHRlcm4g aW50IGdkYmFyY2hfZmluZF9tZW1vcnlfcmVnaW9ucyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IGZpbmRfbWVtb3J5X3JlZ2lvbl9mdHlwZSBmdW5jLCB2b2lkICpkYXRhKTsNCmV4dGVybiB2b2lk IHNldF9nZGJhcmNoX2ZpbmRfbWVtb3J5X3JlZ2lvbnMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBnZGJhcmNoX2ZpbmRfbWVtb3J5X3JlZ2lvbnNfZnR5cGUgKmZpbmRfbWVtb3J5X3JlZ2lvbnMp Ow0KDQorLyogQ3JlYXRlIG1lbW9yeSB0YWcgY29yZSBmaWxlIG5vdGVzIGdpdmVuIGEgcmFuZ2Ug b2YgYWRkcmVzc2VzLiAqLw0KKw0KK2V4dGVybiBib29sIGdkYmFyY2hfY3JlYXRlX21lbXRhZ19u b3Rlc19mcm9tX3JhbmdlX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsNCisNCit0eXBlZGVm IHN0ZDo6dmVjdG9yPGdkYjo6Ynl0ZV92ZWN0b3I+IChnZGJhcmNoX2NyZWF0ZV9tZW10YWdfbm90 ZXNfZnJvbV9yYW5nZV9mdHlwZSkgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIg c3RhcnRfYWRkcmVzcywgQ09SRV9BRERSIGVuZF9hZGRyZXNzKTsNCitleHRlcm4gc3RkOjp2ZWN0 b3I8Z2RiOjpieXRlX3ZlY3Rvcj4gZ2RiYXJjaF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFu Z2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgc3RhcnRfYWRkcmVzcywgQ09S RV9BRERSIGVuZF9hZGRyZXNzKTsNCitleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9jcmVhdGVfbWVt dGFnX25vdGVzX2Zyb21fcmFuZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBnZGJhcmNoX2Ny ZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZV9mdHlwZSAqY3JlYXRlX21lbXRhZ19ub3Rlc19m cm9tX3JhbmdlKTsNCisNCisvKiBEZWNvZGUgYSBtZW1vcnkgdGFnIG5vdGUgYW5kIHJldHVybiB0 aGUgdGFncyB0aGF0IGl0IGNvbnRhaW5zLiAqLw0KKw0KK2V4dGVybiBib29sIGdkYmFyY2hfZGVj b2RlX21lbXRhZ19ub3RlX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsNCisNCit0eXBlZGVm IGdkYjo6Ynl0ZV92ZWN0b3IgKGdkYmFyY2hfZGVjb2RlX21lbXRhZ19ub3RlX2Z0eXBlKSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYjo6YXJyYXlfdmlldzxjb25zdCBnZGJfYnl0ZT4gbm90 ZSwgQ09SRV9BRERSIGFkZHJlc3MsIHNpemVfdCBsZW5ndGgpOw0KK2V4dGVybiBnZGI6OmJ5dGVf dmVjdG9yIGdkYmFyY2hfZGVjb2RlX21lbXRhZ19ub3RlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgZ2RiOjphcnJheV92aWV3PGNvbnN0IGdkYl9ieXRlPiBub3RlLCBDT1JFX0FERFIgYWRkcmVz cywgc2l6ZV90IGxlbmd0aCk7DQorZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfZGVjb2RlX21lbXRh Z19ub3RlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25v dGVfZnR5cGUgKmRlY29kZV9tZW10YWdfbm90ZSk7DQorDQovKiBSZWFkIG9mZnNldCBPRkZTRVQg b2YgVEFSR0VUX09CSkVDVF9MSUJSQVJJRVMgZm9ybWF0dGVkIHNoYXJlZCBsaWJyYXJpZXMgbGlz dCBmcm9tDQogICBjb3JlIGZpbGUgaW50byBidWZmZXIgUkVBREJVRiB3aXRoIGxlbmd0aCBMRU4u ICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkDQogICAoemVybyBpbmRpY2F0ZXMgZmFp bHVyZSkuDQpkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2guc2ggYi9nZGIvZ2RiYXJjaC5zaA0KaW5k ZXggNDNlNTEzNDFmOTcuLjdjNWVlZDA3ODBjIDEwMDc1NQ0KLS0tIGEvZ2RiL2dkYmFyY2guc2gN CisrKyBiL2dkYi9nZGJhcmNoLnNoDQpAQCAtNzQ1LDYgKzc0NSwxMiBAQCBNO2dkYjo6dW5pcXVl X3htYWxsb2NfcHRyPGNoYXI+O21ha2VfY29yZWZpbGVfbm90ZXM7YmZkICpvYmZkLCBpbnQgKm5v dGVfc2l6ZTtvYg0KIyBGaW5kIGNvcmUgZmlsZSBtZW1vcnkgcmVnaW9ucw0KTTtpbnQ7ZmluZF9t ZW1vcnlfcmVnaW9ucztmaW5kX21lbW9yeV9yZWdpb25fZnR5cGUgZnVuYywgdm9pZCAqZGF0YTtm dW5jLCBkYXRhDQoNCisjIENyZWF0ZSBtZW1vcnkgdGFnIGNvcmUgZmlsZSBub3RlcyBnaXZlbiBh IHJhbmdlIG9mIGFkZHJlc3Nlcy4NCitNO3N0ZDo6dmVjdG9yPGdkYjo6Ynl0ZV92ZWN0b3I+O2Ny ZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZTtDT1JFX0FERFIgc3RhcnRfYWRkcmVzcywgQ09S RV9BRERSIGVuZF9hZGRyZXNzO3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRyZXNzDQorDQorIyBEZWNv ZGUgYSBtZW1vcnkgdGFnIG5vdGUgYW5kIHJldHVybiB0aGUgdGFncyB0aGF0IGl0IGNvbnRhaW5z Lg0KK007Z2RiOjpieXRlX3ZlY3RvcjtkZWNvZGVfbWVtdGFnX25vdGU7Z2RiOjphcnJheV92aWV3 PGNvbnN0IGdkYl9ieXRlPiBub3RlLCBDT1JFX0FERFIgYWRkcmVzcywgc2l6ZV90IGxlbmd0aDtu b3RlLCBhZGRyZXNzLCBsZW5ndGgNCisNCiMgUmVhZCBvZmZzZXQgT0ZGU0VUIG9mIFRBUkdFVF9P QkpFQ1RfTElCUkFSSUVTIGZvcm1hdHRlZCBzaGFyZWQgbGlicmFyaWVzIGxpc3QgZnJvbQ0KIyBj b3JlIGZpbGUgaW50byBidWZmZXIgUkVBREJVRiB3aXRoIGxlbmd0aCBMRU4uICBSZXR1cm4gdGhl IG51bWJlciBvZiBieXRlcyByZWFkDQojICh6ZXJvIGluZGljYXRlcyBmYWlsdXJlKS4NCmRpZmYg LS1naXQgYS9nZGIvbGludXgtdGRlcC5jIGIvZ2RiL2xpbnV4LXRkZXAuYw0KaW5kZXggOTI3ZTY5 YmYxZTEuLmY0ZmY1N2RlYzg3IDEwMDY0NA0KLS0tIGEvZ2RiL2xpbnV4LXRkZXAuYw0KKysrIGIv Z2RiL2xpbnV4LXRkZXAuYw0KQEAgLTE0MzgsMTAgKzE0MzgsMTEgQEAgcGFyc2Vfc21hcHNfZGF0 YSAoY29uc3QgY2hhciAqZGF0YSwNCiAgcmV0dXJuIHNtYXBzOw0KfQ0KDQotLyogU2VlIGxpbnV4 LXRkZXAuaC4gICovDQorLyogSGVscGVyIHRoYXQgY2hlY2tzIGlmIGFuIGFkZHJlc3MgaXMgaW4g YSBtZW1vcnkgdGFnIHBhZ2UgZm9yIGEgbGl2ZQ0KKyAgIHByb2Nlc3MuICAqLw0KDQotYm9vbA0K LWxpbnV4X2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UgKENPUkVfQUREUiBhZGRyZXNzKQ0KK3N0YXRp YyBib29sDQorbGludXhfcHJvY2Vzc19hZGRyZXNzX2luX21lbXRhZ19wYWdlIChDT1JFX0FERFIg YWRkcmVzcykNCnsNCiAgaWYgKGN1cnJlbnRfaW5mZXJpb3IgKCktPmZha2VfcGlkX3ApDQogICAg cmV0dXJuIGZhbHNlOw0KQEAgLTE0NzMsNiArMTQ3NCwxMzcgQEAgbGludXhfYWRkcmVzc19pbl9t ZW10YWdfcGFnZSAoQ09SRV9BRERSIGFkZHJlc3MpDQogIHJldHVybiBmYWxzZTsNCn0NCg0KKy8q IEhlbHBlciB0aGF0IGNoZWNrcyBpZiBhbiBhZGRyZXNzIGlzIGluIGEgbWVtb3J5IHRhZyBwYWdl IGZvciBhIGNvcmUgZmlsZQ0KKyAgIHByb2Nlc3MuICAqLw0KKw0KK3N0YXRpYyBib29sDQorbGlu dXhfY29yZV9maWxlX2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UgKENPUkVfQUREUiBhZGRyZXNzKQ0K K3sNCisgIGlmIChjb3JlX2JmZCA9PSBudWxscHRyKQ0KKyAgICByZXR1cm4gZmFsc2U7DQorDQor ICBhc2VjdGlvbiAqc2VjdGlvbg0KKyAgICA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChjb3Jl X2JmZCwgIi5tZW10YWciKTsNCisNCisgIC8qIEdvIHRocm91Z2ggYWxsIHRoZSBtZW10YWcgc2Vj dGlvbnMgYW5kIGZpZ3VyZSBvdXQgaWYgQUREUkVTUw0KKyAgICAgZmFsbHMgd2l0aGluIG9uZSBv ZiB0aGUgbWVtb3J5IHJhbmdlcyB0aGF0IGNvbnRhaW4gdGFncy4gICovDQorICB3aGlsZSAoc2Vj dGlvbiAhPSBudWxscHRyKQ0KKyAgICB7DQorICAgICAgc2l6ZV90IG5vdGVfc2l6ZSA9IGJmZF9z ZWN0aW9uX3NpemUgKHNlY3Rpb24pOw0KKw0KKyAgICAgIC8qIElmIHRoZSBub3RlIGlzIHNtYWxs ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyLCB0aGlzIGNvcmUgbm90ZQ0KKyAgaXMgbWFs Zm9ybWVkLiAgKi8NCisgICAgICBpZiAobm90ZV9zaXplIDwgMiAqIHNpemVvZiAodWludDY0X3Qp ICsgc2l6ZW9mICh1aW50MTZfdCkpDQorIHsNCisgICB3YXJuaW5nIChfKCJtYWxmb3JtZWQgY29y ZSBub3RlIC0gdG9vIHNob3J0IGZvciBoZWFkZXIiKSk7DQorICAgcmV0dXJuIGZhbHNlOw0KKyB9 DQorDQorICAgICAgZ2RiOjpieXRlX3ZlY3RvciBub3RlIChub3RlX3NpemUpOw0KKw0KKyAgICAg IC8qIEZldGNoIHRoZSBjb250ZW50cyBvZiB0aGlzIHBhcnRpY3VsYXIgbWVtdGFnIG5vdGUuICAq Lw0KKyAgICAgIGlmICghYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChjb3JlX2JmZCwgc2VjdGlv biwNCisgICAgICBub3RlLmRhdGEgKCksIDAsIG5vdGVfc2l6ZSkpDQorIHsNCisgICB3YXJuaW5n IChfKCJjb3VsZCBub3QgZ2V0IGNvcmUgbm90ZSBjb250ZW50cy4iKSk7DQorICAgcmV0dXJuIGZh bHNlOw0KKyB9DQorDQorICAgICAgLyogUmVhZCB0aGUgZ2VuZXJpYyBoZWFkZXIgb2YgdGhlIG5v dGUuICBUaG9zZSBjb250YWluIHRoZSBmb3JtYXQsDQorICBzdGFydCBhZGRyZXNzIGFuZCBlbmQg YWRkcmVzcy4gICovDQorICAgICAgdWludDY0X3Qgc3RhcnRfYWRkcmVzcw0KKyA9IGJmZF9nZXRf NjQgKGNvcmVfYmZkLCBub3RlLmRhdGEgKCkgKyBzaXplb2YgKHVpbnQxNl90KSk7DQorICAgICAg dWludDY0X3QgZW5kX2FkZHJlc3MNCisgPSBiZmRfZ2V0XzY0IChjb3JlX2JmZCwgbm90ZS5kYXRh ICgpICsgc2l6ZW9mICh1aW50MTZfdCkNCisgKyBzaXplb2YgKHVpbnQ2NF90KSk7DQorDQorICAg ICAgLyogSXMgdGhlIGFkZHJlc3Mgd2l0aGluIFtzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzcyk/ ICAqLw0KKyAgICAgIGlmIChhZGRyZXNzID49IHN0YXJ0X2FkZHJlc3MNCisgICAmJiBhZGRyZXNz IDwgZW5kX2FkZHJlc3MpDQorIHJldHVybiB0cnVlOw0KKw0KKyAgICAgIC8qIFRoZSByZXF1ZXN0 ZWQgYWRkcmVzcyBsaWVzIG91dHNpZGUgdGhpcyBwYXJ0aWN1bGFyIG1lbXRhZyBub3RlLiAgS2Vl cA0KKyAgbG9va2luZyBhbmQgZ2V0IHRoZSBuZXh0IHNlY3Rpb24uICAqLw0KKyAgICAgIHNlY3Rp b24gPSBiZmRfZ2V0X25leHRfc2VjdGlvbl9ieV9uYW1lIChjb3JlX2JmZCwgc2VjdGlvbik7DQor ICAgIH0NCisNCisgIHJldHVybiBmYWxzZTsNCit9DQorDQorLyogU2VlIGxpbnV4LXRkZXAuaC4g ICovDQorDQorYm9vbA0KK2xpbnV4X2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UgKENPUkVfQUREUiBh ZGRyZXNzKQ0KK3sNCisgIGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24gKCkpDQorICAgIHJldHVy biBsaW51eF9jb3JlX2ZpbGVfYWRkcmVzc19pbl9tZW10YWdfcGFnZSAoYWRkcmVzcyk7DQorDQor ICByZXR1cm4gbGludXhfcHJvY2Vzc19hZGRyZXNzX2luX21lbXRhZ19wYWdlIChhZGRyZXNzKTsN Cit9DQorDQorLyogRm9yIGVhY2ggbWVtb3J5IG1hcCBlbnRyeSB0aGF0IGhhcyBtZW1vcnkgdGFn Z2luZyBlbmFibGVkLCBjcmVhdGUgYSBuZXcNCisgICBjb3JlIGZpbGUgbm90ZSB0aGF0IGNvbnRh aW5zIGFsbCBvZiBpdHMgbWVtb3J5IHRhZ3MuICBTYXZlIHRoZSBkYXRhIHRvDQorICAgTk9URV9E QVRBIGFuZCB1cGRhdGUgTk9URV9TSVpFIGFjY29yZGluZ2x5LiAgKi8NCisNCitzdGF0aWMgdm9p ZA0KK2xpbnV4X21ha2VfbWVtdGFnX2NvcmVmaWxlX25vdGVzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgYmZkICpvYmZkLA0KKyAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+ICZub3Rl X2RhdGEsDQorICAgaW50ICpub3RlX3NpemUpDQorew0KKyAgaWYgKGN1cnJlbnRfaW5mZXJpb3Ig KCktPmZha2VfcGlkX3ApDQorICAgIHJldHVybjsNCisNCisgIC8qIElmIHRoZSBhcmNoaXRlY3R1 cmUgZG9lc24ndCBoYXZlIGEgaG9vayB0byByZXR1cm4gbWVtb3J5IHRhZyBub3RlcywNCisgICAg IHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBkby4gICovDQorICBpZiAoIWdkYmFyY2hfY3JlYXRl X21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlX3AgKGdkYmFyY2gpKQ0KKyAgICByZXR1cm47DQorDQor ICBwaWRfdCBwaWQgPSBjdXJyZW50X2luZmVyaW9yICgpLT5waWQ7DQorDQorICBzdGQ6OnN0cmlu ZyBzbWFwc19maWxlID0gc3RyaW5nX3ByaW50ZiAoIi9wcm9jLyVkL3NtYXBzIiwgcGlkKTsNCisN CisgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGRhdGENCisgICAgPSB0YXJnZXRfZmls ZWlvX3JlYWRfc3RyYWxsb2MgKE5VTEwsIHNtYXBzX2ZpbGUuY19zdHIgKCkpOw0KKw0KKyAgaWYg KGRhdGEgPT0gbnVsbHB0cikNCisgICAgcmV0dXJuOw0KKw0KKyAgc3RkOjp2ZWN0b3I8c3RydWN0 IHNtYXBzX2RhdGE+IHNtYXBzOw0KKw0KKyAgLyogUGFyc2UgdGhlIGNvbnRlbnRzIG9mIHNtYXBz IGludG8gYSB2ZWN0b3IuICAqLw0KKyAgc21hcHMgPSBwYXJzZV9zbWFwc19kYXRhIChkYXRhLmdl dCAoKSwgc21hcHNfZmlsZSk7DQorDQorICBmb3IgKGNvbnN0IHNtYXBzX2RhdGEgJm1hcCA6IHNt YXBzKQ0KKyAgICB7DQorICAgICAgLyogRG9lcyB0aGlzIG1hcHBpbmcgaGF2ZSBtZW1vcnkgdGFn Z2luZyBlbmFibGVkPyBJZiBzbywgc2F2ZSB0aGUNCisgIG1lbW9yeSB0YWdzIHRvIHRoZSBjb3Jl IGZpbGUgbm90ZS4gICovDQorICAgICAgaWYgKG1hcC52bWZsYWdzLm1lbW9yeV90YWdnaW5nID09 IDApDQorIGNvbnRpbnVlOw0KKw0KKyAgICAgIC8qIEFzayB0aGUgYXJjaGl0ZWN0dXJlIHRvIGNy ZWF0ZSAob25lIG9yIG1vcmUpIE5UX01FTVRBRyBub3RlcyBmb3INCisgIHRoaXMgcGFydGljdWxh ciBtZW1vcnkgcmFuZ2UsIGluY2x1ZGluZyB0aGUgaGVhZGVyLg0KKw0KKyAgSWYgdGhlIG5vdGVz IGFyZSB0b28gYmlnLCB3ZSBtYXkgbmVlZCB0byBicmVhayB1cCB0aGUgdHJhbnNmZXINCisgIGlu dG8gc21hbGxlciBjaHVua3MuDQorDQorICBJZiB0aGUgYXJjaGl0ZWN0dXJlIHJldHVybnMgYW4g ZW1wdHkgdmVjdG9yLCB0aGF0IG1lYW5zIHRoZXJlIGFyZQ0KKyAgbm8gbWVtb3J5IHRhZyBub3Rl cyB0byB3cml0ZS4gICovDQorICAgICAgc3RkOjp2ZWN0b3I8Z2RiOjpieXRlX3ZlY3Rvcj4gbWVt b3J5X3RhZ19ub3RlczsNCisgICAgICBtZW1vcnlfdGFnX25vdGVzDQorID0gZ2RiYXJjaF9jcmVh dGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgKGdkYmFyY2gsDQorICAgbWFwLnN0YXJ0X2FkZHJl c3MsDQorICAgbWFwLmVuZF9hZGRyZXNzKTsNCisgICAgICAvKiBXcml0ZSBub3RlcyB0byB0aGUg Y29yZSBmaWxlLiAgKi8NCisgICAgICBmb3IgKGdkYjo6Ynl0ZV92ZWN0b3Igbm90ZSA6IG1lbW9y eV90YWdfbm90ZXMpDQorIHsNCisgICBub3RlX2RhdGEucmVzZXQgKGVsZmNvcmVfd3JpdGVfbm90 ZSAob2JmZCwgbm90ZV9kYXRhLnJlbGVhc2UgKCksDQorICAgICAgICBub3RlX3NpemUsICJDT1JF IiwNCisgICAgICAgIE5UX01FTVRBRywgbm90ZS5kYXRhICgpLA0KKyAgICAgICAgbm90ZS5zaXpl ICgpKSk7DQorIH0NCisgICAgfQ0KK30NCisNCi8qIExpc3QgbWVtb3J5IHJlZ2lvbnMgaW4gdGhl IGluZmVyaW9yIGZvciBhIGNvcmVmaWxlLiAgKi8NCg0Kc3RhdGljIGludA0KQEAgLTIwNTEsNiAr MjE4Myw5IEBAIGxpbnV4X21ha2VfY29yZWZpbGVfbm90ZXMgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBiZmQgKm9iZmQsIGludCAqbm90ZV9zaXplKQ0KcmV0dXJuIE5VTEw7DQogICAgfQ0KDQor ICAvKiBEdW1wIHRoZSBtZW1vcnkgdGFncywgaWYgYW55LiAgKi8NCisgIGxpbnV4X21ha2VfbWVt dGFnX2NvcmVmaWxlX25vdGVzIChnZGJhcmNoLCBvYmZkLCBub3RlX2RhdGEsIG5vdGVfc2l6ZSk7 DQorDQogIC8qIEZpbGUgbWFwcGluZ3MuICAqLw0KICBsaW51eF9tYWtlX21hcHBpbmdzX2NvcmVm aWxlX25vdGVzIChnZGJhcmNoLCBvYmZkLCBub3RlX2RhdGEsIG5vdGVfc2l6ZSk7DQoNCmRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3JlLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3JlLmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uYjIwZWJjZmY0MjQNCi0tLSAvZGV2L251bGwNCisrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUuYw0KQEAgLTAsMCArMSw5 MyBAQA0KKy8qIFRoaXMgdGVzdCBwcm9ncmFtIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLg0KKw0KKyAgIENvcHlyaWdodCAyMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j Lg0KKw0KKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorDQorICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YNCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlDQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4NCisNCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCisNCisvKiBF eGVyY2lzZSBBQXJjaDY0J3MgTWVtb3J5IFRhZ2dpbmcgRXh0ZW5zaW9uIHdpdGggdGFnZ2VkIHBv aW50ZXJzLiAgKi8NCisNCisvKiBUaGlzIHRlc3Qgd2FzIGJhc2VkIG9uIHRoZSBkb2N1bWVudGF0 aW9uIGZvciB0aGUgQUFyY2g2NCBNZW1vcnkgVGFnZ2luZw0KKyAgIEV4dGVuc2lvbiBmcm9tIHRo ZSBMaW51eCBLZXJuZWwsIGZvdW5kIGluIHRoZSBzb3VyY2VzIGluDQorICAgRG9jdW1lbnRhdGlv bi9hcm02NC9tZW1vcnktdGFnZ2luZy1leHRlbnNpb24ucnN0LiAgKi8NCisNCisjaW5jbHVkZSA8 ZXJybm8uaD4NCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2lu Y2x1ZGUgPHVuaXN0ZC5oPg0KKyNpbmNsdWRlIDxzeXMvYXV4di5oPg0KKyNpbmNsdWRlIDxzeXMv bW1hbi5oPg0KKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4NCisNCisvKiBGcm9tIGFyY2gvYXJtNjQv aW5jbHVkZS91YXBpL2FzbS9od2NhcC5oICovDQorI2RlZmluZSBIV0NBUDJfTVRFICAgICAgICAg ICAgICAoMSA8PCAxOCkNCisNCisvKiBGcm9tIGFyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9t bWFuLmggKi8NCisjZGVmaW5lIFBST1RfTVRFICAweDIwDQorDQorLyogRnJvbSBpbmNsdWRlL3Vh cGkvbGludXgvcHJjdGwuaCAqLw0KKyNkZWZpbmUgUFJfU0VUX1RBR0dFRF9BRERSX0NUUkwgNTUN CisjZGVmaW5lIFBSX0dFVF9UQUdHRURfQUREUl9DVFJMIDU2DQorI2RlZmluZSBQUl9UQUdHRURf QUREUl9FTkFCTEUgKDFVTCA8PCAwKQ0KKyNkZWZpbmUgUFJfTVRFX1RDRl9TSElGVCAxDQorI2Rl ZmluZSBQUl9NVEVfVENGX1NZTkMgKDFVTCA8PCBQUl9NVEVfVENGX1NISUZUKQ0KKyNkZWZpbmUg UFJfTVRFX1RBR19TSElGVCAzDQorDQordm9pZA0KK2FjY2Vzc19tZW1vcnkgKHVuc2lnbmVkIGNo YXIgKnRhZ2dlZF9wdHIpDQorew0KKyAgdGFnZ2VkX3B0clswXSA9ICdhJzsNCit9DQorDQoraW50 DQorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KK3sNCisgIHVuc2lnbmVkIGNoYXIgKnRh Z2dlZF9wdHI7DQorICB1bnNpZ25lZCBsb25nIHBhZ2Vfc3ogPSBzeXNjb25mIChfU0NfUEFHRVNJ WkUpOw0KKyAgdW5zaWduZWQgbG9uZyBod2NhcDIgPSBnZXRhdXh2YWwoQVRfSFdDQVAyKTsNCisN CisgIC8qIEJhaWwgb3V0IGlmIE1URSBpcyBub3Qgc3VwcG9ydGVkLiAgKi8NCisgIGlmICghKGh3 Y2FwMiAmIEhXQ0FQMl9NVEUpKQ0KKyAgICByZXR1cm4gMTsNCisNCisgIC8qIEVuYWJsZSB0aGUg dGFnZ2VkIGFkZHJlc3MgQUJJLCBzeW5jaHJvbm91cyBNVEUgdGFnIGNoZWNrIGZhdWx0cyBhbmQN CisgICAgIGFsbG93IGFsbCBub24temVybyB0YWdzIGluIHRoZSByYW5kb21seSBnZW5lcmF0ZWQg c2V0LiAgKi8NCisgIGlmIChwcmN0bCAoUFJfU0VUX1RBR0dFRF9BRERSX0NUUkwsDQorICAgICAg UFJfVEFHR0VEX0FERFJfRU5BQkxFIHwgUFJfTVRFX1RDRl9TWU5DDQorICAgICAgfCAoMHhmZmZl IDw8IFBSX01URV9UQUdfU0hJRlQpLA0KKyAgICAgIDAsIDAsIDApKQ0KKyAgICB7DQorICAgICAg cGVycm9yICgicHJjdGwgKCkgZmFpbGVkIik7DQorICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisN CisgIC8qIENyZWF0ZSBhIG1hcHBpbmcgdGhhdCB3aWxsIGhhdmUgUFJPVF9NVEUgc2V0LiAgKi8N CisgIHRhZ2dlZF9wdHIgPSBtbWFwICgwLCBwYWdlX3N6LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF LA0KKyAgICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApOw0KKyAgaWYgKHRh Z2dlZF9wdHIgPT0gTUFQX0ZBSUxFRCkNCisgICAgew0KKyAgICAgIHBlcnJvciAoIm1tYXAgKCkg ZmFpbGVkIik7DQorICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisNCisgIC8qIEVuYWJsZSBNVEUg b24gdGhlIGFib3ZlIGFub255bW91cyBtbWFwLiAgKi8NCisgIGlmIChtcHJvdGVjdCAodGFnZ2Vk X3B0ciwgcGFnZV9zeiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfTVRFKSkNCisgICAg ew0KKyAgICAgIHBlcnJvciAoIm1wcm90ZWN0ICgpIGZhaWxlZCIpOw0KKyAgICAgIHJldHVybiAx Ow0KKyAgICB9DQorDQorICBhY2Nlc3NfbWVtb3J5ICh0YWdnZWRfcHRyKTsNCisNCisgIHJldHVy biAwOw0KK30NCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRl LWdjb3JlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUuZXhw DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmJiNTI5YThiMzY5DQot LS0gL2Rldi9udWxsDQorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdj b3JlLmV4cA0KQEAgLTAsMCArMSwxMTUgQEANCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KMjAxOD8NCg0KSSByZWFsbHkgY29waWVkIHRo ZSB0ZW1wbGF0ZSBmcm9tIGFuIGV4aXN0aW5nIGZpbGUuIFRoZSBydWxlLCBBRkFJUiwgaXMgdG8g a2VlcCB0aGUgY29weXJpZ2h0IHllYXJzIGZyb20gdGhlIG9yaWdpbmFsIGZpbGUuDQoNCk9rDQoN Cg0KKyMNCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCisjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorIw0KKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zg0KKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQ0KKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCisjDQorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQorDQorIyBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4NCisNCisjIFRlc3QgZ2VuZXJhdGluZyBhbmQgcmVh ZGluZyBhIGNvcmUgZmlsZSB3aXRoIE1URSBtZW1vcnkgdGFncy4NCisNCitpZiB7IVtpc19hYXJj aDY0X3RhcmdldF19IHsNCisgICAgdmVyYm9zZSAiU2tpcHBpbmcgJHtnZGJfdGVzdF9maWxlX25h bWV9LiINCisgICAgcmV0dXJuDQorfQ0KKw0KK3N0YW5kYXJkX3Rlc3RmaWxlDQoraWYgeyBbcHJl cGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUiICR7dGVzdGZpbGV9ICR7c3JjZmls ZX1dIH0gew0KKyAgICByZXR1cm4gLTENCit9DQorDQoraWYgIVtydW50b19tYWluXSB7DQorICAg IHVudGVzdGVkICJjb3VsZCBub3QgcnVuIHRvIG1haW4iDQorICAgIHJldHVybiAtMQ0KK30NCisN CisjIFRhcmdldHMgdGhhdCBkb24ndCBzdXBwb3J0IG1lbW9yeSB0YWdnaW5nIHNob3VsZCBub3Qg ZXhlY3V0ZSB0aGUNCisjIHJ1bnRpbWUgbWVtb3J5IHRhZ2dpbmcgdGVzdHMuDQoraWYgeyFbc3Vw cG9ydHNfbWVtdGFnXX0gew0KKyAgICB1bnN1cHBvcnRlZCAibWVtb3J5IHRhZ2dpbmcgdW5zdXBw b3J0ZWQiDQorICAgIHJldHVybiAtMQ0KK30NCisNCitnZGJfYnJlYWtwb2ludCAiYWNjZXNzX21l bW9yeSINCisNCitpZiBbZ2RiX2NvbnRpbnVlICJhY2Nlc3NfbWVtb3J5Il0gew0KKyAgICByZXR1 cm4gLTENCit9DQorDQorIyBTZXQgZWFjaCB0YWcgZ3JhbnVsZSB0byBhIGRpZmZlcmVudCB0YWcg dmFsdWUsIGZyb20gMHgwIHRvIDB4Zi4NCitzZXQgYXRhZ19tc2cgIkFsbG9jYXRpb24gdGFnXFwo c1xcKSB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwuIg0KK2ZvciB7c2V0IGkgMTV9IHskaSA+PSAwfSB7 aW5jciBpIC0xfSB7DQorICAgIHNldCBpbmRleCBbZXhwciBbZXhwciAxNSAtICRpXSAqIDE2XQ0K KyAgICBzZXQgdGFnIFtmb3JtYXQgIiUwMngiICRpXQ0KKyAgICBnZGJfdGVzdCAibWVtb3J5LXRh ZyBzZXQtYWxsb2NhdGlvbi10YWcgJnRhZ2dlZF9wdHJcWyRpbmRleFxdIDEgJHRhZyIgXA0KKyAg ICAgICRhdGFnX21zZyBcDQorICAgICAgInNldCBtZW1vcnkgdGFnIG9mICZ0YWdnZWRfcHRyXFsk aW5kZXhcXSB0byAkdGFnIg0KK30NCisNCisjIFJ1biB1bnRpbCBhIGNyYXNoIGFuZCBjb25maXJt IEdEQiBkaXNwbGF5cyBtZW1vcnkgdGFnIHZpb2xhdGlvbg0KKyMgaW5mb3JtYXRpb24uDQorZ2Ri X3Rlc3QgImNvbnRpbnVlIiBcDQorICAgIFttdWx0aV9saW5lIFwNCisgIlByb2dyYW0gcmVjZWl2 ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdCIgXA0KKyAiTWVtb3J5IHRhZyB2 aW9sYXRpb24gd2hpbGUgYWNjZXNzaW5nIGFkZHJlc3MgJGhleCIgXA0KKyAiQWxsb2NhdGlvbiB0 YWcgJGhleCIgXA0KKyAiTG9naWNhbCB0YWcgJGhleFwuIiBcDQorICIkaGV4IGluIGFjY2Vzc19t ZW1vcnkgXFwoLipcXCkgYXQgLioiIFwNCisgIi4qdGFnZ2VkX3B0clxcXFswXFxcXSA9ICdhJzsi XSBcDQorICAiZGlzcGxheSB0YWcgdmlvbGF0aW9uIGluZm9ybWF0aW9uIGZvciBsaXZlIHByb2Nl c3MiDQorDQorIyBHZW5lcmF0ZSB0aGUgY29yZSBmaWxlLg0KK3NldCBjb3JlX2ZpbGVuYW1lIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAiJHRlc3RmaWxlLmNvcmUiXQ0KK3NldCBjb3JlX2dlbmVyYXRl ZCBbZ2RiX2djb3JlX2NtZCAiJGNvcmVfZmlsZW5hbWUiICJnZW5lcmF0ZSBjb3JlIGZpbGUiXQ0K Kw0KK2lmIHsgISRjb3JlX2dlbmVyYXRlZCB9IHsNCisgICAgcmV0dXJuIC0xDQorfQ0KKw0KK2Ns ZWFuX3Jlc3RhcnQNCisNCisjIExvYWQgdGhlIHByb2dyYW0gZmlsZS4NCitzZXQgcHJvZ3JhbV9m aWxlbmFtZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHRlc3RmaWxlXQ0KK3NldCBwcm9ncmFtX2xv YWRlZCBbZ2RiX2ZpbGVfY21kICRwcm9ncmFtX2ZpbGVuYW1lXQ0KKw0KK2lmIHsgJHByb2dyYW1f bG9hZGVkIH0gew0KKyAgICByZXR1cm4gLTENCit9DQorDQorIyBMb2FkIHRoZSBjb3JlIGZpbGUg YW5kIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHRhZyB2aW9sYXRpb24gZmF1bHQNCisjIGluZm9ybWF0 aW9uLg0KK2dkYl90ZXN0ICJjb3JlICRjb3JlX2ZpbGVuYW1lIiBcDQorICAgIFttdWx0aV9saW5l IFwNCisgIkNvcmUgd2FzIGdlbmVyYXRlZCBieS4qXC4iIFwNCisgIlByb2dyYW0gdGVybWluYXRl ZCB3aXRoIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHQiIFwNCisgIk1lbW9yeSB0 YWcgdmlvbGF0aW9uIHdoaWxlIGFjY2Vzc2luZyBhZGRyZXNzICRoZXgiIFwNCisgIkFsbG9jYXRp b24gdGFnIDB4ZiIgXA0KKyAiTG9naWNhbCB0YWcgMHgwXC4iIFwNCisgIiMwLiokaGV4IGluIGFj Y2Vzc19tZW1vcnkgXFwoLipcXCkgYXQgLioiIFwNCisgIi4qdGFnZ2VkX3B0clxcXFswXFxcXSA9 ICdhJzsiXSBcDQorICAiY29yZSBmaWxlIHNob3dzIHRhZyB2aW9sYXRpb24gaW5mb3JtYXRpb24i DQorDQorIyBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgdGFnX2N0bCByZWdpc3Rlci4NCitnZGJfdGVz dCAiaW5mbyByZWdpc3RlciB0YWdfY3RsIiBcDQorICAidGFnX2N0bC4qJGhleC4qJHs6OmRlY2lt YWx9IiBcDQorICAidGFnX2N0bCBpcyBhdmFpbGFibGUiDQorDQorIyBDaGVjayBpZiB0aGUgdGFn IGdyYW51bGVzIGhhdmUgdGhlIGV4cGVjdGVkIHZhbHVlcy4gIElmIHRoZXkgZG8sIHRoYXQNCisj IG1lYW5zIHRoZSBjb3JlIGZpbGUgc2F2ZWQgdGhlIHRhZ3MgcHJvcGVybHkgYW5kIEdEQiBoYXMg cmVhZCB0aGVtDQorIyBjb3JyZWN0bHkuDQorZm9yIHtzZXQgaSAxNX0geyRpID49IDB9IHtpbmNy IGkgLTF9IHsNCisgICAgc2V0IGluZGV4IFtleHByIFtleHByIDE1IC0gJGldICogMTZdDQorICAg IHNldCB0YWcgW2Zvcm1hdCAiJXgiICRpXQ0KKyAgICBnZGJfdGVzdCAibWVtb3J5LXRhZyBwcmlu dC1hbGxvY2F0aW9uLXRhZyAmdGFnZ2VkX3B0clxbJGluZGV4XF0iIFwNCisgICAgICAiPSAweCR0 YWciIFwNCisgICAgICAibWVtb3J5IHRhZyBvZiAmdGFnZ2VkX3B0clxbJGluZGV4XF0gaXMgY29y cmVjdCINCit9DQotLQ0KMi4yNS4xDQoNCg==