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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, 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 94AB6C433FF for ; Mon, 12 Aug 2019 12:45:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3C0D1208C2 for ; Mon, 12 Aug 2019 12:45:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="f2xgxpua"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="OHqC0AjW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726498AbfHLMpH (ORCPT ); Mon, 12 Aug 2019 08:45:07 -0400 Received: from mail-eopbgr70051.outbound.protection.outlook.com ([40.107.7.51]:20295 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726496AbfHLMpG (ORCPT ); Mon, 12 Aug 2019 08:45:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XlKAIbnR+lQnaUYoERDI7m34Tp/ka5v0wKdB8gzhTK8=; b=f2xgxpuaTqyW5n15VVQblmx56igLTP5OehSsNnxsT4CaiemmWP5qq/APYjC0AWRSVVIt35xADnmeSbcncaidZkzdSBuRd+RtjRSPLU5cZ873yy2JtTnIO6SUVu2fI1TSz4fM7VuxgQxI0mx5pckor/5P7zTBdStmVT12Gcw17x0= Received: from VI1PR0802CA0026.eurprd08.prod.outlook.com (2603:10a6:800:a9::12) by VI1PR0801MB1853.eurprd08.prod.outlook.com (2603:10a6:800:5a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2157.13; Mon, 12 Aug 2019 12:43:53 +0000 Received: from VE1EUR03FT053.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::208) by VI1PR0802CA0026.outlook.office365.com (2603:10a6:800:a9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2157.15 via Frontend Transport; Mon, 12 Aug 2019 12:43:53 +0000 Authentication-Results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; vger.kernel.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;vger.kernel.org; dmarc=temperror action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT053.mail.protection.outlook.com (10.152.19.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2052.18 via Frontend Transport; Mon, 12 Aug 2019 12:43:51 +0000 Received: ("Tessian outbound 40a263b748b4:v26"); Mon, 12 Aug 2019 12:43:46 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: e33b2f2528b00249 X-CR-MTA-TID: 64aa7808 Received: from 41dbed09ee76.1 (cr-mta-lb-1.cr-mta-net [104.47.13.50]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id 94187E55-FA8D-4A91-841E-18B9B47B5520.1; Mon, 12 Aug 2019 12:43:41 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2050.outbound.protection.outlook.com [104.47.13.50]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 41dbed09ee76.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 12 Aug 2019 12:43:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Sw3vfVk37qAdNujamg8dvj4wNwuGlfku8njM+yN79vTTaRlW8JDNhB9fQQJKkxn6lMK3aKQTc4UnmiCGQfTIF3EXRAd+I9pAwQo5UtYf0UJe56oyqkFiuMyBqWSNz0BZ1dgnXAP5TMrSu4O3HCbRBH33nUhrmeblz8wGVWXehG0ADL+OrfQUqMtfl+R0w+J54eng5IBqjgVYBtSfagaa2SD9i8ZH2gUulaC1PLfkFNtpbARu4Z2w5Sdw7MfmoeGzPTSjJI6DIk3Grd1ZUqNdgwR89Mt/ELDBsdufaPptpp1Mh3ds6l7r5FUYr+hFCp7b+8CYqM8v8kHhk4AW3JX9Jg== 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=nIf8j6Vab5hKtoMM8+wjuqn5zc2o1vLeFY3Hm0IHYh0=; b=QzEHpsjDMbOnQLwHrcjOvyMNxTtNz/ohof0Sf1Y1kC1/Hi2T6vODFZr4uA9Z1hzY/Qd1b+uRIykImC98i41jTciZ2m1Rg+T23E64KSMLOg8HoEvoPHloPxmIe2c2p1DhGoRBn4vRGkzw+Ak/UX0QAgreh4XpSjHMY6P+NG5gnN3G7OkgU9FruaTkyFZRS6YTbtqXtuWYzCRxp5YJCF/jt95c9FaU7BefxaT70q/RZ3sEaXIQzbfmJCLwZLIRdIKWQTWfbG/BdARZlnwjXRb6GsMQTLjHAxcoB8kYvwaUCRxL6Yd/EVb/lXxDj4rsfqSi1jDdUnQWGI0ub79QvrP6qw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nIf8j6Vab5hKtoMM8+wjuqn5zc2o1vLeFY3Hm0IHYh0=; b=OHqC0AjWIIn8NjThTOfle0F3lgomg2BOgMg1S83wWulpYkWaDKu7amgwhXpmzx9yK91EaDMwJZmmO7D8gYa8MEn0wDdeKHr6uk+Jt9Zfhd8tkg6IOlRerprDxOvyZs+CLDPeBuHc7q0sIGQncMonXGAUvF39OHERDV6oiRlBO9Q= Received: from AM5PR0801MB1636.eurprd08.prod.outlook.com (10.169.246.150) by AM5PR0801MB1876.eurprd08.prod.outlook.com (10.168.153.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2157.13; Mon, 12 Aug 2019 12:43:38 +0000 Received: from AM5PR0801MB1636.eurprd08.prod.outlook.com ([fe80::ad15:83f1:7912:7e26]) by AM5PR0801MB1636.eurprd08.prod.outlook.com ([fe80::ad15:83f1:7912:7e26%10]) with mapi id 15.20.2157.022; Mon, 12 Aug 2019 12:43:38 +0000 From: Amit Kachhap To: Cristian Marussi , "linux-kselftest@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "shuah@kernel.org" CC: "andreyknvl@google.com" , Dave P Martin Subject: Re: [PATCH v3 02/11] kselftest: arm64: adds first test and common utils Thread-Topic: [PATCH v3 02/11] kselftest: arm64: adds first test and common utils Thread-Index: AQHVUQuQTCbomRqZeUKP5KPM31XITg== Date: Mon, 12 Aug 2019 12:43:38 +0000 Message-ID: <23e44146-92cc-73de-0eab-a1e7b82ea3bc@arm.com> References: <20190802170300.20662-1-cristian.marussi@arm.com> <20190802170300.20662-3-cristian.marussi@arm.com> In-Reply-To: <20190802170300.20662-3-cristian.marussi@arm.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: PN1PR01CA0083.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c00:1::23) To AM5PR0801MB1636.eurprd08.prod.outlook.com (2603:10a6:203:3a::22) Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Amit.Kachhap@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [217.140.105.40] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 00dbb21d-8a70-4104-24f6-08d71f22baa4 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam-Untrusted: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:AM5PR0801MB1876; X-MS-TrafficTypeDiagnostic: AM5PR0801MB1876:|VI1PR0801MB1853: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:538;OLM:538; x-forefront-prvs: 012792EC17 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4636009)(346002)(39860400002)(136003)(396003)(366004)(376002)(199004)(189003)(478600001)(81166006)(81156014)(30864003)(31686004)(36756003)(7736002)(102836004)(99286004)(316002)(53546011)(6506007)(386003)(305945005)(2201001)(86362001)(8676002)(31696002)(8936002)(71200400001)(71190400001)(52116002)(76176011)(5660300002)(186003)(26005)(14454004)(6246003)(2501003)(4326008)(66476007)(229853002)(66446008)(66066001)(256004)(44832011)(66556008)(446003)(110136005)(11346002)(54906003)(64756008)(486006)(2616005)(476003)(53936002)(6436002)(53946003)(66946007)(6512007)(6116002)(6486002)(14444005)(3846002)(2906002)(25786009)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM5PR0801MB1876;H:AM5PR0801MB1636.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info-Original: 4ca9QzsTNCztUSO/Y/8ZEOe2OdIaKT+Fn4PnfkYZJAzgH1uaUHdOi0yn7WtNinLqstWAYJXd62GdlYy+Gr3fDFFAXbZuFz4nRKc+pen6EG56udIHtr0ERzA0YlWBXmexdYKjhqd5e68px0rP0HUwJ4w4QJG272NS+gFI7/GwNzZ8UXRjxKlq/nGii5fY2A16wR5UfRWG4lRbqUo1/Ulsrv4119BwRSPwK7UNaf7xZQ5wb01/LavgskMUeD5Qb+CDkCDohvAaqI/UdXyfLtgYsALmuAFzbKcn7vvpOiOHNp97C4rbiS67+nIrUU4sSxtZ0pMIO4nFxLpQFaR6zLYgbrf9f7VbCl3nkZWarwAPZhfGOixkjk1knlVe5G1KcZs3uzOiFvsUhsLh500lkO3HHCJ0Nuia720NGlV0cl/J8DQ= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1876 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Amit.Kachhap@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT053.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;IPV:CAL;SCL:-1;CTRY:IE;EFV:NLI;SFV:NSPM;SFS:(10009020)(4636009)(136003)(39860400002)(346002)(396003)(376002)(2980300002)(199004)(189003)(40434004)(6246003)(14454004)(6512007)(36756003)(30864003)(81156014)(81166006)(23676004)(25786009)(86362001)(229853002)(2486003)(76176011)(26826003)(102836004)(436003)(6116002)(3846002)(478600001)(336012)(2201001)(2906002)(2616005)(76130400001)(8676002)(476003)(5660300002)(126002)(31696002)(8936002)(446003)(11346002)(31686004)(99286004)(36906005)(186003)(22756006)(53946003)(47776003)(66066001)(14444005)(70586007)(4326008)(70206006)(316002)(2501003)(305945005)(486006)(63370400001)(63350400001)(54906003)(386003)(26005)(50466002)(356004)(6486002)(53546011)(6506007)(110136005)(7736002)(5024004)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0801MB1853;H:64aa7808-outbound-1.mta.getcheckrecipient.com;FPR:;SPF:TempError;LANG:en;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;A:1;MX:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 6c3de390-46e5-4786-f493-08d71f22b2a3 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(710020)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:VI1PR0801MB1853; X-Forefront-PRVS: 012792EC17 X-Microsoft-Antispam-Message-Info: r/fvGOg9vkGLfkspW075RPy+yGVXXoU0lrs7MYbTpaogFX5BH+7L23+xvuqQ8bPq1ujiKqRZCT9L7FszoNGPt/B+rjm3sXJeLBKJG4tppBUC9IobO5CkzPQ2Nl1KJq2n+cyN2yKOMN8P2vNtbA9HrsS0LiIOwhgrIZl+Pf3pUNBh8y/ckr4+VypKdhUAGbstqugr2KNNDJOoIdW2bnNNYaRdnGGrPgUCIsFxth9LvqjCPTiWCt+86J19WJ8s4z51L29OHAZ012upOWmhp5rn9iAFWLaXsPzAyAsWk5Wyyy7OfQ+YdzmGgCgvGXSLDPKES1pKL22AKSvvAW3//0Pwb36yOFHsSnwa9cKsI2kBw2MsWkMgeVgE8u2WRm09b6VnL62CSdPhwtczfdIkCXmqmJHkiSubKToGpG+qNJ4orxA= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Aug 2019 12:43:51.5191 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 00dbb21d-8a70-4104-24f6-08d71f22baa4 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-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1853 Sender: linux-kselftest-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org SGkgQ3Jpc3RpYW4sDQoNCk9uIDgvMi8xOSAxMDozMiBQTSwgQ3Jpc3RpYW4gTWFydXNzaSB3cm90 ZToNCj4gQWRkZWQgc29tZSBhcm02NC9zaWduYWwgc3BlY2lmaWMgYm9pbGVycGxhdGUgYW5kIHV0 aWxpdHkgY29kZSB0byBoZWxwDQo+IGZ1cnRoZXIgdGVzdGNhc2UgZGV2ZWxvcG1lbnQuDQo+DQo+ IEEgc2ltcGxlIHRlc3RjYXNlIGFuZCByZWxhdGVkIGhlbHBlcnMgYXJlIGFsc28gaW50cm9kdWNl ZCBpbiB0aGlzIGNvbW1pdDoNCj4gbWFuZ2xlX3BzdGF0ZV9pbnZhbGlkX2NvbXBhdF90b2dnbGUg aXMgYSBzaW1wbGUgbWFuZ2xlIHRlc3RjYXNlIHdoaWNoDQo+IG1lc3NlcyB3aXRoIHRoZSB1Y29u dGV4dF90IGZyb20gd2l0aGluIHRoZSBzaWdfaGFuZGxlciwgdHJ5aW5nIHRvIHRvZ2dsZQ0KPiBQ U1RBVEUgc3RhdGUgYml0cyB0byBzd2l0Y2ggdGhlIHN5c3RlbSBiZXR3ZWVuIDMyYml0LzY0Yml0 IGV4ZWN1dGlvbiBzdGF0ZS4NCj4gRXhwZWN0cyBTSUdTRUdWIG9uIHRlc3QgUEFTUy4NCj4NCj4g U2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gTWFydXNzaSA8Y3Jpc3RpYW4ubWFydXNzaUBhcm0uY29t Pg0KPiAtLS0NCj4gQSBmZXcgZml4ZXM6DQo+IC0gdGVzdF9hcm02NF9zaWduYWxzLnNoIHJ1bm5l ciBzY3JpcHQgZ2VuZXJhdGlvbiBoYXMgYmVlbiByZXZpZXdlZCBpbiBvcmRlciB0bw0KPiAgICBi ZSBzYWZlIGFnYWluc3QgdGhlIC5naXRpZ25vcmUNCj4gLSB1c2luZyBrc2VsZnRlc3QuaCBvZmZp Y2lhbGx5IHByb3ZpZGVkIGRlZmluZXMgZm9yIHRlc3RzJyByZXR1cm4gdmFsdWVzDQo+IC0gcmVt b3ZlZCBTQUZFX1dSSVRFKCkvZHVtcF91YygpDQo+IC0gbG9va2luZyBmb3Igc2lfY29kZT09U0VH Vl9BQ0NFUlIgb24gU0VHViB0ZXN0IGNhc2VzIHRvIGJldHRlciB1bmRlcnN0YW5kIGlmDQo+ICAg IHRoZSBzaWdmYXVsdCBoYWQgYmVlbiBkaXJlY3RseSB0cmlnZ2VyZWQgYnkgS2VybmVsDQo+IC0t LQ0KPiAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L01ha2VmaWxlICAgICAgICB8ICAg MiArLQ0KPiAgIC4uLi90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvLmdpdGlnbm9yZSB8 ICAgNiArDQo+ICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL01ha2VmaWxl IHwgIDg4ICsrKysrKw0KPiAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC9S RUFETUUgICB8ICA1OSArKysrDQo+ICAgLi4uL2FybTY0L3NpZ25hbC90ZXN0X2FybTY0X3NpZ25h bHMuc3JjX3NoZWxsIHwgIDU1ICsrKysNCj4gICAuLi4vc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90 ZXN0X3NpZ25hbHMuYyAgICAgfCAgMjYgKysNCj4gICAuLi4vc2VsZnRlc3RzL2FybTY0L3NpZ25h bC90ZXN0X3NpZ25hbHMuaCAgICAgfCAxMzcgKysrKysrKysrDQo+ICAgLi4uL2FybTY0L3NpZ25h bC90ZXN0X3NpZ25hbHNfdXRpbHMuYyAgICAgICAgIHwgMjYxICsrKysrKysrKysrKysrKysrKw0K PiAgIC4uLi9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmggICAgICAgICB8ICAxMyAr DQo+ICAgLi4uL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvLmdpdGlnbm9yZSAgICAgICAgIHwgICAx ICsNCj4gICAuLi4vbWFuZ2xlX3BzdGF0ZV9pbnZhbGlkX2NvbXBhdF90b2dnbGUuYyAgICAgfCAg MjUgKysNCj4gICAuLi4vYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy90ZXN0Y2FzZXMuYyAgICAgICAg fCAxNTAgKysrKysrKysrKw0KPiAgIC4uLi9hcm02NC9zaWduYWwvdGVzdGNhc2VzL3Rlc3RjYXNl cy5oICAgICAgICB8ICA4MyArKysrKysNCj4gICAxMyBmaWxlcyBjaGFuZ2VkLCA5MDUgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvLmdpdGlnbm9yZQ0KPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvTWFrZWZpbGUNCj4gICBj cmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL1JF QURNRQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02 NC9zaWduYWwvdGVzdF9hcm02NF9zaWduYWxzLnNyY19zaGVsbA0KPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzLmMN Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2ln bmFsL3Rlc3Rfc2lnbmFscy5oDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0X3NpZ25hbHNfdXRpbHMuYw0KPiAgIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWdu YWxzX3V0aWxzLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy8uZ2l0aWdub3JlDQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvbWFuZ2xl X3BzdGF0ZV9pbnZhbGlkX2NvbXBhdF90b2dnbGUuYw0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdGNhc2VzL3Rlc3RjYXNlcy5j DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3Np Z25hbC90ZXN0Y2FzZXMvdGVzdGNhc2VzLmgNCj4NCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL2FybTY0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJt NjQvTWFrZWZpbGUNCj4gaW5kZXggMDNhMGQ0ZjcxMjE4Li5hZjU5ZGM3NGUwZGMgMTAwNjQ0DQo+ IC0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L01ha2VmaWxlDQo+ICsrKyBiL3Rv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L01ha2VmaWxlDQo+IEBAIC02LDcgKzYsNyBAQCBB UkNIID89ICQoc2hlbGwgdW5hbWUgLW0pDQo+ICAgQVJDSCA6PSAkKHNoZWxsIGVjaG8gJChBUkNI KSB8IHNlZCAtZSBzL2FhcmNoNjQvYXJtNjQvKQ0KPg0KPiAgIGlmZXEgKCJ4JChBUkNIKSIsICJ4 YXJtNjQiKQ0KPiAtU1VCRElSUyA6PQ0KPiArU1VCRElSUyA6PSBzaWduYWwNCj4gICBlbHNlDQo+ ICAgU1VCRElSUyA6PQ0KPiAgIGVuZGlmDQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9hcm02NC9zaWduYWwvLmdpdGlnbm9yZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L2FybTY0L3NpZ25hbC8uZ2l0aWdub3JlDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNDM0ZjY1YzE1ZjAzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsLy5naXRpZ25vcmUNCj4gQEAgLTAsMCAr MSw2IEBADQo+ICsjIEhlbHBlciBzY3JpcHQncyBpbnRlcm5hbCB0ZXN0Y2FzZXMgbGlzdCAoVFBS T0dTKSBpcyByZWdlbmVyYXRlZA0KPiArIyBlYWNoIHRpbWUgYnkgTWFrZWZpbGUgb24gc3RhbmRh bG9uZSAobm9uIEtTRlQgZHJpdmVuKSBydW5zLg0KPiArIyBDb21taXR0aW5nIHN1Y2ggbGlzdCBj cmVhdGVzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRlc3RjYXNlcw0KPiArIyBwYXRjaGVzIHN1Y2gg dGhhdCB0aGV5IGFyZSBubyBtb3JlIGVhc2lseSByZXZlcnRhYmxlLiBKdXN0IGlnbm9yZS4NCj4g K3Rlc3RfYXJtNjRfc2lnbmFscy5zcmNfc2hlbGwNCj4gK3Rlc3RfYXJtNjRfc2lnbmFscy5zaA0K PiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL01ha2Vm aWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL01ha2VmaWxlDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOGM4ZDA4YmU0YjBkDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2ln bmFsL01ha2VmaWxlDQo+IEBAIC0wLDAgKzEsODggQEANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4gKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFSTSBMaW1pdGVkDQo+ICsN Cj4gKyMgU3VwcG9ydHMgYWxzbyBzdGFuZGFsb25lIGludm9rYXRpb24gb3V0IG9mIEtTRlQtdHJl ZQ0KPiArIyBDb21waWxlIHN0YW5kYWxvbmUgYW5kIHJ1biBvbiB5b3VyIGRldmljZSB3aXRoOg0K PiArIw0KPiArIyAgJCBtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25h bCBJTlNUQUxMX1BBVEg9PHlvdXItZGlyPiBpbnN0YWxsDQo+ICsjDQo+ICsjIFJ1biBzdGFuZGFs b25lIG9uIGRldmljZSB3aXRoOg0KPiArIw0KPiArIyAgJCA8eW91ci1kZXZpY2UtaW5zdGRpcj4v dGVzdF9hcm02NF9zaWduYWxzLnNoIFsta3wtdl0NCj4gKyMNCj4gKyMgSWYgSU5TVEFMTF9QQVRI PSBpcyBOT1QgcHJvdmlkZWQgaXQgd2lsbCBkZWZhdWx0IHRvIC4vaW5zdGFsbA0KPiArDQo+ICsj IEEgcHJvcGVyIHRvcF9zcmNkaXIgaXMgbmVlZGVkIGJvdGggYnkgS1NGVChsaWIubWspDQo+ICsj IGFuZCBzdGFuZGFsb25lIGJ1aWxkcw0KPiArdG9wX3NyY2RpciA9IC4uLy4uLy4uLy4uLy4uDQo+ ICsNCj4gK0NGTEFHUyArPSAtc3RkPWdudTk5IC1JLiAtSSQodG9wX3NyY2RpcikvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvDQo+ICtTUkNTIDo9ICQoZmlsdGVyLW91dCB0ZXN0Y2FzZXMvdGVzdGNh c2VzLmMsJCh3aWxkY2FyZCB0ZXN0Y2FzZXMvKi5jKSkNCj4gK1BST0dTIDo9ICQocGF0c3Vic3Qg JS5jLCUsJChTUkNTKSkNCj4gKw0KPiArIyBHdWVzc2luZyBhcyBiZXN0IGFzIHdlIGNhbiB3aGVy ZSB0aGUgS2VybmVsIGhlYWRlcnMNCj4gKyMgY291bGQgaGF2ZSBiZWVuIGluc3RhbGxlZCBkZXBl bmRpbmcgb24gRU5WIGNvbmZpZyBhbmQNCj4gKyMgdHlwZSBvZiBpbnZvY2F0aW9uLg0KPiAraWZl cSAoJChLQlVJTERfT1VUUFVUKSwpDQo+ICtraGRyX2RpciA9ICQodG9wX3NyY2RpcikvdXNyL2lu Y2x1ZGUNCj4gK2Vsc2UNCj4gK2lmZXEgKDAsJChNQUtFTEVWRUwpKQ0KPiAra2hkcl9kaXIgPSAk KEtCVUlMRF9PVVRQVVQpL3Vzci9pbmNsdWRlDQo+ICtlbHNlDQo+ICsjIHRoZSBLU0ZUIHByZWZl cnJlZCBsb2NhdGlvbiB3aGVuIEtCVUlMRF9PVVRQVVQgaXMgc2V0DQo+ICtraGRyX2RpciA9ICQo S0JVSUxEX09VVFBVVCkva3NlbGZ0ZXN0L3Vzci9pbmNsdWRlDQo+ICtlbmRpZg0KPiArZW5kaWYN Cj4gKw0KPiArQ0ZMQUdTICs9IC1JJChraGRyX2RpcikNCj4gKw0KPiArIyBTdGFuZGFsb25lIHJ1 bg0KPiAraWZlcSAoMCwkKE1BS0VMRVZFTCkpDQo+ICtDQyA6PSAkKENST1NTX0NPTVBJTEUpZ2Nj DQo+ICtSVU5ORVJfU1JDID0gdGVzdF9hcm02NF9zaWduYWxzLnNyY19zaGVsbA0KPiArUlVOTkVS ID0gdGVzdF9hcm02NF9zaWduYWxzLnNoDQo+ICtJTlNUQUxMX1BBVEggPz0gaW5zdGFsbC8NCj4g Kw0KPiArYWxsOiAkKFJVTk5FUikNCj4gKw0KPiArJChSVU5ORVIpOiAkKFBST0dTKQ0KPiArICAg ICBjcCAkKFJVTk5FUl9TUkMpICQoUlVOTkVSKQ0KPiArICAgICBzZWQgLWkgLWUgJ3MjUFJPR1M9 LiojUFJPR1M9IiQoUFJPR1MpIiMnICRADQo+ICsNCj4gK2luc3RhbGw6IGFsbA0KPiArICAgICBt a2RpciAtcCAkKElOU1RBTExfUEFUSCkvdGVzdGNhc2VzDQo+ICsgICAgIGNwICQoUFJPR1MpICQo SU5TVEFMTF9QQVRIKS90ZXN0Y2FzZXMNCj4gKyAgICAgY3AgJChSVU5ORVIpICQoSU5TVEFMTF9Q QVRIKS8NCj4gKw0KPiArLlBIT05ZIGNsZWFuOg0KPiArICAgICBybSAtZiAkKFBST0dTKQ0KPiAr IyBLU0ZUIHJ1bg0KPiArZWxzZQ0KPiArIyBHZW5lcmF0ZWQgYmluYXJpZXMgdG8gYmUgaW5zdGFs bGVkIGJ5IHRvcCBLU0ZUIHNjcmlwdA0KPiArVEVTVF9HRU5fUFJPR1MgOj0gJChub3RkaXIgJChQ Uk9HUykpDQo+ICsNCj4gKyMgR2V0IEtlcm5lbCBoZWFkZXJzIGluc3RhbGxlZCBhbmQgdXNlIHRo ZW0uDQo+ICtLU0ZUX0tIRFJfSU5TVEFMTCA6PSAxDQo+ICsNCj4gKyMgVGhpcyBpbmNsdWRlIG1r IHdpbGwgYWxzbyBtYW5nbGUgdGhlIFRFU1RfR0VOX1BST0dTIGxpc3QNCj4gKyMgdG8gYWNjb3Vu dCBmb3IgYW55IE9VVFBVVCB0YXJnZXQtZGlycyBvcHRpb25hbGx5IHByb3ZpZGVkDQo+ICsjIGJ5 IHRoZSB0b3BsZXZlbCBtYWtlZmlsZQ0KPiAraW5jbHVkZSAuLi8uLi9saWIubWsNCj4gKw0KPiAr JChURVNUX0dFTl9QUk9HUyk6ICQoUFJPR1MpDQo+ICsgICAgIGNwICQoUFJPR1MpICQoT1VUUFVU KS8NCj4gKw0KPiArY2xlYW46DQo+ICsgICAgICQoQ0xFQU4pDQo+ICsgICAgIHJtIC1mICQoUFJP R1MpDQo+ICtlbmRpZg0KPiArDQo+ICsjIENvbW1vbiB0ZXN0LXVuaXQgdGFyZ2V0cyB0byBidWls ZCBjb21tb24tbGF5b3V0IHRlc3QtY2FzZXMgZXhlY3V0YWJsZXMNCj4gKyMgTmVlZHMgc2Vjb25k YXJ5IGV4cGFuc2lvbiB0byBwcm9wZXJseSBpbmNsdWRlIHRoZSB0ZXN0Y2FzZSBjLWZpbGUgaW4g cHJlLXJlcXMNCj4gKy5TRUNPTkRFWFBBTlNJT046DQo+ICskKFBST0dTKTogdGVzdF9zaWduYWxz LmMgdGVzdF9zaWduYWxzX3V0aWxzLmMgdGVzdGNhc2VzL3Rlc3RjYXNlcy5jICQkQC5jIHRlc3Rf c2lnbmFscy5oIHRlc3Rfc2lnbmFsc191dGlscy5oIHRlc3RjYXNlcy90ZXN0Y2FzZXMuaA0KDQpJ IHN1cHBvc2UgKi5oIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHRhcmdldHMgaGVyZS4NCg0KDQo+ ICsgICAgIEBpZiBbICEgLWQgJChraGRyX2RpcikgXTsgdGhlbiBcDQo+ICsgICAgICAgICAgICAg ZWNobyAtbiAiXG4hISEgV0FSTklORzogJChraGRyX2RpcikgTk9UIEZPVU5ELiI7IFwNCj4gKyAg ICAgICAgICAgICBlY2hvICI9PT0+ICBBcmUgeW91IHN1cmUgS2VybmVsIEhlYWRlcnMgaGF2ZSBi ZWVuIGluc3RhbGxlZCBwcm9wZXJseSA/XG4iOyBcDQo+ICsgICAgIGZpDQo+ICsgICAgICQoQ0Mp ICQoQ0ZMQUdTKSAkXiAtbyAkQA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL1JFQURNRSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3Np Z25hbC9SRUFETUUNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw Li41M2YwMDVmNzkxMGENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9hcm02NC9zaWduYWwvUkVBRE1FDQo+IEBAIC0wLDAgKzEsNTkgQEANCj4gK0tTZWxm VGVzdCBhcm02NC9zaWduYWwvDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtT aWduYWxzIFRlc3RzDQo+ICsrKysrKysrKysrKysrDQo+ICsNCj4gKy0gVGVzdHMgYXJlIGJ1aWx0 IGFyb3VuZCBhIGNvbW1vbiBtYWluIGNvbXBpbGF0aW9uIHVuaXQ6IHN1Y2ggc2hhcmVkIG1haW4N Cj4gKyAgZW5mb3JjZXMgYSBzdGFuZGFyZCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIG5lZWRlZCB0 byBwZXJmb3JtIGEgc2luZ2xlDQo+ICsgIHNpZ25hbC10ZXN0IChzZXR1cC90cmlnZ2VyL3J1bi9y ZXN1bHQvY2xlYW51cCkNCj4gKw0KPiArLSBUaGUgYWJvdmUgbWVudGlvbmVkIG9wcyBhcmUgY29u ZmlndXJhYmxlIG9uIGEgdGVzdC1ieS10ZXN0IGJhc2lzOiBlYWNoIHRlc3QNCj4gKyAgaXMgZGVz Y3JpYmVkIChhbmQgY29uZmlndXJlZCkgdXNpbmcgdGhlIGRlc2NyaXB0b3Igc2lnbmFscy5oOjpz dHJ1Y3QgdGRlc2NyDQo+ICsNCj4gKy0gRWFjaCBzaWduYWwgdGVzdGNhc2UgaXMgY29tcGlsZWQg aW50byBpdHMgb3duIGV4ZWN1dGFibGU6IGEgc2VwYXJhdGUNCj4gKyAgZXhlY3V0YWJsZSBpcyB1 c2VkIGZvciBlYWNoIHRlc3Qgc2luY2UgbWFueSB0ZXN0cyBjb21wbGV0ZSBzdWNjZXNzZnVsbHkN Cj4gKyAgYnkgcmVjZWl2aW5nIHNvbWUga2luZCBvZiBmYXRhbCBzaWduYWwgZnJvbSB0aGUgS2Vy bmVsLCBzbyBpdCdzIHNhZmVyDQo+ICsgIHRvIHJ1biBlYWNoIHRlc3QgdW5pdCBpbiBpdHMgb3du IHN0YW5kYWxvbmUgcHJvY2Vzcywgc28gYXMgdG8gc3RhcnQgZWFjaA0KPiArICB0ZXN0IGZyb20g YSBjbGVhbiBzbGF0ZS4NCj4gKw0KPiArLSBOZXcgdGVzdHMgY2FuIGJlIHNpbXBseSBkZWZpbmVk IGluIHRlc3RjYXNlcy8gZGlyIHByb3ZpZGluZyBhIHByb3BlciBzdHJ1Y3QNCj4gKyAgdGRlc2Ny IG92ZXJyaWRpbmcgYWxsIHRoZSBkZWZhdWx0cyB3ZSB3aXNoIHRvIGNoYW5nZSAoYXMgb2Ygbm93 IHByb3ZpZGluZyBhDQo+ICsgIGN1c3RvbSBydW4gbWV0aG9kIGlzIG1hbmRhdG9yeSB0aG91Z2gp DQo+ICsNCj4gKy0gU2lnbmFscycgdGVzdC1jYXNlcyBoZXJlYWZ0ZXIgZGVmaW5lZCBiZWxvbmcg Y3VycmVudGx5IHRvIHR3bw0KPiArICBwcmluY2lwYWwgZmFtaWxpZXM6DQo+ICsNCj4gKyAgLSAn bWFuZ2xlXycgdGVzdHM6IGEgcmVhbCBzaWduYWwgKFNJR1VTUjEpIGlzIHJhaXNlZCBhbmQgdXNl ZCBhcyBhIHRyaWdnZXINCj4gKyAgICBhbmQgdGhlbiB0aGUgdGVzdCBjYXNlIGNvZGUgbWVzc2Vz LXVwIHdpdGggdGhlIHNpZ2ZyYW1lIHVjb250ZXh0X3QgZnJvbQ0KPiArICAgIGluc2lkZSB0aGUg c2lnaGFuZGxlciBpdHNlbGYuDQo+ICsNCj4gKyAgLSAnZmFrZV9zaWdyZXR1cm5fJyB0ZXN0czog YSBicmFuZCBuZXcgY3VzdG9tIGFydGlmaWNpYWwgc2lnZnJhbWUgc3RydWN0dXJlDQo+ICsgICAg aXMgcGxhY2VkIG9uIHRoZSBzdGFjayBhbmQgYSBzaWdyZXR1cm4gc3lzY2FsbCBpcyBjYWxsZWQg dG8gc2ltdWxhdGUgYQ0KPiArICAgIHJlYWwgc2lnbmFsIHJldHVybi4gVGhpcyBraW5kIG9mIHRl c3RzIGRvZXMgbm90IHVzZSBhIHRyaWdnZXIgdXN1YWxseSBhbmQNCj4gKyAgICB0aGV5IGFyZSBq dXN0IGZpcmVkIHVzaW5nIHNvbWUgc2ltcGxlIGluY2x1ZGVkIGFzc2VtYmx5IHRyYW1wb2xpbmUg Y29kZS4NCj4gKw0KPiArIC0gTW9zdCBvZiB0aGVzZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bGx5IHBh c3NpbmcgaWYgdGhlIHByb2Nlc3MgZ2V0cyBraWxsZWQgYnkNCj4gKyAgIHNvbWUgZmF0YWwgc2ln bmFsOiB1c3VhbGx5IFNJR1NFR1Ygb3IgU0lHQlVTLiBTaW5jZSB3aGlsZSB3cml0aW5nIHRoaXMN Cj4gKyAgIGtpbmQgb2YgdGVzdHMgaXQgaXMgZXh0cmVtZWx5IGVhc3kgaW4gZmFjdCB0byBlbmQt dXAgaW5qZWN0aW5nIG90aGVyDQo+ICsgICB1bnJlbGF0ZWQgU0VHViBidWdzIGluIHRoZSB0ZXN0 Y2FzZXMsIGl0IGJlY29tZXMgZXh0cmVtZWx5IHRyaWNreSB0bw0KPiArICAgYmUgcmVhbGx5IHN1 cmUgdGhhdCB0aGUgdGVzdHMgYXJlIHJlYWxseSBhZGRyZXNzaW5nIHdoYXQgdGhleSBhcmUgbWVh bnQNCj4gKyAgIHRvIGFkZHJlc3MgYW5kIHRoZXkgYXJlIG5vdCBpbnN0ZWFkIGZhbGxpbmcgYXBh cnQgZHVlIHRvIHVucGxhbm5lZCBidWdzDQo+ICsgICBpbiB0aGUgdGVzdCBjb2RlLg0KPiArICAg SW4gb3JkZXIgdG8gYWxsZXZpYXRlIHRoZSBtaXNlcnkgb2YgdGhlIGxpZmUgb2Ygc3VjaCB0ZXN0 LWRldmVsb3BlciwgYSBmZXcNCj4gKyAgIGhlbHBlcnMgYXJlIHByb3ZpZGVkOg0KPiArDQo+ICsg ICAtIGEgY291cGxlIG9mIEFTU0VSVF9CQUQvR09PRF9DT05URVhUKCkgbWFjcm9zIHRvIGVhc2ls eSBwYXJzZSBhIHVjb250ZXh0X3QNCj4gKyAgICAgYW5kIHZlcmlmeSBpZiBpdCBpcyBpbmRlZWQg R09PRCBvciBCQUQgKGRlcGVuZGluZyBvbiB3aGF0IHdlIHdlcmUNCj4gKyAgICAgZXhwZWN0aW5n KSwgdXNpbmcgdGhlIHNhbWUgbG9naWMvcGVyc3BlY3RpdmUgYXMgaW4gdGhlIGFybTY0IEtlcm5l bCBzaWduYWxzDQo+ICsgICAgIHJvdXRpbmVzLg0KPiArDQo+ICsgICAtIGEgc2FuaXR5IG1lY2hh bmlzbSB0byBiZSB1c2VkIGluICdmYWtlX3NpZ3JldHVybl8nLWFsaWtlIHRlc3RzOiBlbmFibGVk IGJ5DQo+ICsgICAgIGRlZmF1bHQgaXQgdGFrZXMgY2FyZSB0byB2ZXJpZnkgdGhhdCB0aGUgdGVz dC1leGVjdXRpb24gaGFkIGF0IGxlYXN0DQo+ICsgICAgIHN1Y2Nlc3NmdWxseSBwcm9ncmVzc2Vk IHVwIHRvIHRoZSBzdGFnZSBvZiB0cmlnZ2VyaW5nIHRoZSBmYWtlIHNpZ3JldHVybg0KPiArICAg ICBjYWxsLg0KPiArDQo+ICsgIEluIGJvdGggY2FzZXMgdGVzdCByZXN1bHRzIGFyZSBleHBlY3Rl ZCBpbiB0ZXJtcyBvZjoNCj4gKyAgIC0gc29tZSBmYXRhbCBzaWduYWwgc2VudCBieSB0aGUgS2Vy bmVsIHRvIHRoZSB0ZXN0IHByb2Nlc3MNCj4gKyAgb3INCj4gKyAgLSBhbmFseXppbmcgc29tZSBm aW5hbCByZWdzIHN0YXRlDQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9h cm02NC9zaWduYWwvdGVzdF9hcm02NF9zaWduYWxzLnNyY19zaGVsbCBiL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0X2FybTY0X3NpZ25hbHMuc3JjX3NoZWxsDQo+IG5l dyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTYzZTk0MWUyOTk3DQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2ln bmFsL3Rlc3RfYXJtNjRfc2lnbmFscy5zcmNfc2hlbGwNCj4gQEAgLTAsMCArMSw1NSBAQA0KPiAr IyEvYmluL3NoDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsjIENv cHlyaWdodCAoQykgMjAxOSBBUk0gTGltaXRlZA0KPiArDQo+ICtyZXQ9MA0KPiAra2VlcF9vbl9m YWlsPTANCj4gK2Vycl9vdXQ9IjI+IC9kZXYvbnVsbCINCj4gKw0KPiArdXNhZ2UoKSB7DQo+ICsg ICAgIGVjaG8gIlVzYWdlOiBgYmFzZW5hbWUgJDBgIFstdl0gWy1rXSINCj4gKyAgICAgZXhpdCAx DQo+ICt9DQo+ICsNCj4gKyMgYXZvaWRpbmcgZ2V0b3B0IHRvIGF2b2lkIGNvbXBhdGliaWxpdHkg aXNzdWVzIG9uIHRhcmdldHMNCj4gKyMgd2l0aCBsaW1pdGVkIHJlc291cmNlcw0KPiArd2hpbGUg WyAkIyAtZ3QgMCBdDQo+ICtkbw0KPiArICAgICBjYXNlICQxIGluDQo+ICsgICAgICAgICAgICAg Ii1rIikNCj4gKyAgICAgICAgICAgICAgICAgICAgIGtlZXBfb25fZmFpbD0xDQo+ICsgICAgICAg ICAgICAgICAgICAgICA7Ow0KPiArICAgICAgICAgICAgICItdiIpDQo+ICsgICAgICAgICAgICAg ICAgICAgICBlcnJfb3V0PQ0KPiArICAgICAgICAgICAgICAgICAgICAgOzsNCj4gKyAgICAgICAg ICAgICAqKQ0KPiArICAgICAgICAgICAgICAgICAgICAgdXNhZ2UNCj4gKyAgICAgICAgICAgICAg ICAgICAgIDs7DQo+ICsgICAgIGVzYWMNCj4gKyAgICAgc2hpZnQNCj4gK2RvbmUNCj4gKw0KPiAr VFBST0dTPQ0KPiArDQo+ICt0b3Q9JChlY2hvICRUUFJPR1MgfCB3YyAtdykNCj4gKw0KPiArIyBU ZXN0cyBhcmUgZXhwZWN0ZWQgaW4gdGVzdGNhc2VzLyBzdWJkaXIgaW5zaWRlIHRoZSBpbnN0YWxs YXRpb24gcGF0aA0KPiArd29ya2Rpcj0iYGRpcm5hbWUgJDAgMj4vZGV2L251bGxgIg0KPiArWyAt biAkd29ya2RpciBdICYmIGNkICR3b3JrZGlyDQo+ICsNCj4gK3Bhc3NlZD0wDQo+ICtydW49MA0K PiArZm9yIHRlc3QgaW4gJFRQUk9HUw0KPiArZG8NCj4gKyAgICAgcnVuPSQoKHJ1biArIDEpKQ0K PiArICAgICBldmFsIC4vJHRlc3QgJGVycl9vdXQNCj4gKyAgICAgaWYgWyAkPyAhPSAwIF07IHRo ZW4NCj4gKyAgICAgICAgICAgICBbICRrZWVwX29uX2ZhaWwgPSAwIF0gJiYgZWNobyAiPT09Pj4+ IEZBSUxFRDo6ICR0ZXN0IDw8PD09PSIgJiYgcmV0PTEgJiYgYnJlYWsNCj4gKyAgICAgZWxzZQ0K PiArICAgICAgICAgICAgIHBhc3NlZD0kKChwYXNzZWQgKyAxKSkNCj4gKyAgICAgZmkNCj4gK2Rv bmUNCj4gKw0KPiArZWNobyAiPT0+PiBQQVNTRUQ6ICRwYXNzZWQvJHJ1biBvbiAkdG90IGF2YWls YWJsZSB0ZXN0cy4iDQo+ICsNCj4gK2V4aXQgJHJldA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFscy5jIGIvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFscy5jDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzQ0N2Q3MDExYWVjDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2ln bmFscy5jDQo+IEBAIC0wLDAgKzEsMjYgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovDQo+ICsvKiBDb3B5cmlnaHQgKEMpIDIwMTkgQVJNIExpbWl0ZWQgKi8NCj4g Kw0KPiArI2luY2x1ZGUgPGtzZWxmdGVzdC5oPg0KPiArDQo+ICsjaW5jbHVkZSAidGVzdF9zaWdu YWxzLmgiDQo+ICsjaW5jbHVkZSAidGVzdF9zaWduYWxzX3V0aWxzLmgiDQo+ICsNCj4gK3N0cnVj dCB0ZGVzY3IgKmN1cnJlbnQ7DQo+ICtleHRlcm4gc3RydWN0IHRkZXNjciB0ZGU7DQo+ICsNCj4g K2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ICt7DQo+ICsgICAgIGN1cnJlbnQg PSAmdGRlOw0KPiArDQo+ICsgICAgIGtzZnRfcHJpbnRfbXNnKCIlcyA6OiAlcyAtIFNJR19UUklH OiVkICBTSUdfT0s6JWQgLS0gY3VycmVudDolcFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAg Y3VycmVudC0+bmFtZSwgY3VycmVudC0+ZGVzY3IsIGN1cnJlbnQtPnNpZ190cmlnLA0KPiArICAg ICAgICAgICAgICAgICAgICBjdXJyZW50LT5zaWdfb2ssIGN1cnJlbnQpOw0KPiArICAgICBpZiAo dGVzdF9zZXR1cChjdXJyZW50KSkgew0KPiArICAgICAgICAgICAgIGlmICh0ZXN0X3J1bihjdXJy ZW50KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0KGN1cnJlbnQpOw0KPiAr ICAgICAgICAgICAgIHRlc3RfY2xlYW51cChjdXJyZW50KTsNCj4gKyAgICAgfQ0KPiArDQo+ICsg ICAgIHJldHVybiBjdXJyZW50LT5wYXNzID8gS1NGVF9QQVNTIDogS1NGVF9GQUlMOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rf c2lnbmFscy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2ln bmFscy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uODVk YjNhYzQ0YjMyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFscy5oDQo+IEBAIC0wLDAgKzEsMTM3IEBADQo+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiArLyogQ29weXJpZ2h0IChD KSAyMDE5IEFSTSBMaW1pdGVkICovDQo+ICsNCj4gKyNpZm5kZWYgX19URVNUX1NJR05BTFNfSF9f DQo+ICsjZGVmaW5lIF9fVEVTVF9TSUdOQUxTX0hfXw0KPiArDQo+ICsjaW5jbHVkZSA8YXNzZXJ0 Lmg+DQo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiArI2luY2x1ZGUgPHNpZ25hbC5oPg0KPiAr I2luY2x1ZGUgPHVjb250ZXh0Lmg+DQo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQpIZWFkZXJzIGNh biBiZSBhZGRlZCBpbiBhbHBoYWJldGljYWxseSBvcmRlci4NCg0KVGhhbmtzLA0KQW1pdCBEDQo+ ICsNCj4gKy8qDQo+ICsgKiBVc2luZyBBUkNIIHNwZWNpZmljIGFuZCBzYW5pdGl6ZWQgS2VybmVs IGhlYWRlcnMgaW5zdGFsbGVkIGJ5IEtTRlQNCj4gKyAqIGZyYW1ld29yayBzaW5jZSB3ZSBhc2tl ZCBmb3IgaXQgYnkgc2V0dGluZyBmbGFnIEtTRlRfS0hEUl9JTlNUQUxMDQo+ICsgKiBpbiBvdXIg TWFrZWZpbGUuDQo+ICsgKi8NCj4gKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+DQo+ICsjaW5jbHVk ZSA8YXNtL2h3Y2FwLmg+DQo+ICsNCj4gKy8qIHBhc3RlZCBmcm9tIGluY2x1ZGUvbGludXgvc3Ry aW5naWZ5LmggKi8NCj4gKyNkZWZpbmUgX19zdHJpbmdpZnlfMSh4Li4uKSAgI3gNCj4gKyNkZWZp bmUgX19zdHJpbmdpZnkoeC4uLikgICAgX19zdHJpbmdpZnlfMSh4KQ0KPiArDQo+ICsvKg0KPiAr ICogUmVhZHMgYSBzeXNyZWcgdXNpbmcgdGhlLCBwb3NzaWJseSBwcm92aWRlZCwgUzNfIGVuY29k aW5nIGluIG9yZGVyIHRvDQo+ICsgKiBhdm9pZCBpbmplY3QgYW55IGRlcGVuZGVuY3kgb24gdGhl IHVzZWQgdG9vbGNoYWluIHJlZ2FyZGluZyBwb3NzaWJseQ0KPiArICogc3RpbGwgdW5zdXBwb3J0 ZWQgQVJNdjggZXh0ZW5zaW9ucy4NCj4gKyAqDQo+ICsgKiBVc2luZyBhIHN0YW5kYXJkIG1uZW1v bmljIGhlcmUgdG8gaW5kaWNhdGUgdGhlIHNwZWNpZmljIHN5c3JlZyAobGlrZSBTU0JTKQ0KPiAr ICogd291bGQgaW50cm9kdWNlIGEgY29tcGlsZS10aW1lIGRlcGVuZGVuY3kgb24gcG9zc2libHkg dW5zdXBwb3J0ZWQgQVJNdjgNCj4gKyAqIEV4dGVuc2lvbnM6IHlvdSBjb3VsZCBlbmQtdXAgZmFp bGluZyB0byBidWlsZCB0aGUgdGVzdCBkZXBlbmRpbmcgb24gdGhlDQo+ICsgKiBhdmFpbGFibGUg dG9vbGNoYWluLg0KPiArICogVGhpcyBpcyB1bmRlc2lyYWJsZSBzaW5jZSBzb21lIHRlc3RzLCBl dmVuIGlmIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhdCBzb21lDQo+ICsgKiBBUk12OCBFeHRlbnNp b25zLCBjYW4gYmUgcGxhdXNpYmx5IHJ1biBldmVuIG9uIGhhcmR3YXJlIGxhY2tpbmcgdGhlIGFi b3ZlDQo+ICsgKiBvcHRpb25hbCBBUk0gZmVhdHVyZXMuIChTU0JTIGJpdCBwcmVzZXJ2YXRpb24g aXMgYW4gZXhhbXBsZTogS2VybmVsIGhhbmRsZXMNCj4gKyAqIGl0IHRyYW5zcGFyZW50bHkgbm90 IGNhcmluZyBhdCBhbGwgYWJvdXQgdGhlIGVmZmVjdGl2ZSBzZXQgb2Ygc3VwcG9ydGVkDQo+ICsg KiBmZWF0dXJlcykuDQo+ICsgKiBPbiB0aGUgb3RoZXIgc2lkZSB3ZSB3aWxsIGV4cGVjdCB0byBv YnNlcnZlIGRpZmZlcmVudCBiZWhhdmlvdXJzIGlmIHRoZQ0KPiArICogZmVhdHVyZSBpcyBzdXBw b3J0ZWQgb3Igbm90OiB1c3VhbGx5IGdldHRpbmcgYSBTSUdJTEwgd2hlbiB0cnlpbmcgdG8gdXNl DQo+ICsgKiB1bnN1cHBvcnRlZCBmZWF0dXJlcy4gRm9yIHRoaXMgcmVhc29uIHdlIGhhdmUgYW55 d2F5IGluIHBsYWNlIHNvbWUNCj4gKyAqIHByZWxpbWluYXJ5IHJ1bi10aW1lIGNoZWNrcyBhYm91 dCB0aGUgY3B1IGVmZmVjdGl2ZWx5IHN1cHBvcnRlZCBmZWF0dXJlcy4NCj4gKyAqDQo+ICsgKiBU aGlzIGhlbHBlciBtYWNybyBpcyBtZWFudCB0byBiZSB1c2VkIGZvciByZWdzIHJlYWRhYmxlIGF0 IEVMMCwgQlVUIHNvbWUNCj4gKyAqIEVMMSBzeXNyZWdzIGFyZSBpbmRlZWQgcmVhZGFibGUgdG9v IHRocm91Z2ggTVJTIGVtdWxhdGlvbiBLZXJuZWwtbWVjaGFuaXNtDQo+ICsgKiBpZiB0aGUgcmVx dWlyZWQgcmVnIGlzIGluY2x1ZGVkIGluIHRoZSBzdXBwb3J0ZWQgZW5jb2Rpbmcgc3BhY2U6DQo+ ICsgKg0KPiArICogIERvY3VtZW50YXRpb24vYXJtNjQvY3B1LWZlYXR1cmUtcmVnc2l0ZXJzLnR4 dA0KPiArICoNCj4gKyAqICAiVGhlIGluZnJhc3RydWN0dXJlIGVtdWxhdGVzIG9ubHkgdGhlIGZv bGxvd2luZyBzeXN0ZW0gcmVnaXN0ZXIgc3BhY2U6DQo+ICsgKiAgICAgICAgICAgT3AwPTMsIE9w MT0wLCBDUm49MCwgQ1JtPTAsNCw1LDYsNw0KPiArICovDQo+ICsjZGVmaW5lIGdldF9yZWd2YWwo cmVnbmFtZSwgb3V0KSBcDQo+ICsgICAgIGFzbSB2b2xhdGlsZSgibXJzICUwLCAiIF9fc3RyaW5n aWZ5KHJlZ25hbWUpIDogIj1yIiAob3V0KSA6OiAibWVtb3J5IikNCj4gKw0KPiArLyogUmVncyBl bmNvZGluZyBhbmQgbWFza3MgbmFtaW5nIGNvcGllZCBpbiBmcm9tIHN5c3JlZy5oICovDQo+ICsj ZGVmaW5lIFNZU19JRF9BQTY0TU1GUjFfRUwxIFMzXzBfQzBfQzdfMSAgICAvKiBNUlMgRW11bGF0 ZWQgKi8NCj4gKyNkZWZpbmUgU1lTX0lEX0FBNjRNTUZSMl9FTDEgUzNfMF9DMF9DN18yICAgIC8q IE1SUyBFbXVsYXRlZCAqLw0KPiArI2RlZmluZSBJRF9BQTY0TU1GUjFfUEFOX1NISUZUICAgICAg IDIwDQo+ICsjZGVmaW5lIElEX0FBNjRNTUZSMl9VQU9fU0hJRlQgICAgICAgNA0KPiArDQo+ICsv KiBMb2NhbCBIZWxwZXJzICovDQo+ICsjZGVmaW5lIElTX1BBTl9TVVBQT1JURUQodmFsKSBcDQo+ ICsgICAgICghISgodmFsKSAmICgweGZVTCA8PCBJRF9BQTY0TU1GUjFfUEFOX1NISUZUKSkpDQo+ ICsjZGVmaW5lIElTX1VBT19TVVBQT1JURUQodmFsKSBcDQo+ICsgICAgICghISgodmFsKSAmICgw eGZVTCA8PCBJRF9BQTY0TU1GUjJfVUFPX1NISUZUKSkpDQo+ICsNCj4gKyNkZWZpbmUgUzNfTVJT X1NTQlNfU1lTUkVHICAgICAgICAgICBTM18zX0M0X0MyXzYgICAgLyogRUwwIHN1cHBvcnRlZCAq Lw0KPiArDQo+ICsvKg0KPiArICogRmVhdHVyZSBmbGFncyB1c2VkIGluIHRkZXNjci5mZWF0c19y ZXF1aXJlZCB0byBzcGVjaWZ5DQo+ICsgKiBhbnkgZmVhdHVyZSBieSB0aGUgdGVzdA0KPiArICov DQo+ICtlbnVtIHsNCj4gKyAgICAgRlNTQlNfQklULA0KPiArICAgICBGUEFOX0JJVCwNCj4gKyAg ICAgRlVBT19CSVQsDQo+ICsgICAgIEZNQVhfRU5EDQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5lIEZF QVRfU1NCUyAgICAgICAgICAgICgxVUwgPDwgRlNTQlNfQklUKQ0KPiArI2RlZmluZSBGRUFUX1BB TiAgICAgICAgICAgICAoMVVMIDw8IEZQQU5fQklUKQ0KPiArI2RlZmluZSBGRUFUX1VBTyAgICAg ICAgICAgICAoMVVMIDw8IEZVQU9fQklUKQ0KPiArDQo+ICsvKg0KPiArICogQSBkZXNjcmlwdG9y IHVzZWQgdG8gZGVzY3JpYmUgYW5kIGNvbmZpZ3VyZSBhIHRlc3QgY2FzZS4NCj4gKyAqIEZpZWxk cyB3aXRoIGEgbm9uLXRyaXZpYWwgbWVhbmluZyBhcmUgZGVzY3JpYmVkIGlubGluZSBpbiB0aGUg Zm9sbG93aW5nLg0KPiArICovDQo+ICtzdHJ1Y3QgdGRlc2NyIHsNCj4gKyAgICAgLyogS0VFUCBU SElTIEZJRUxEIEZJUlNUIGZvciBlYXNpZXIgbG9va3VwIGZyb20gYXNzZW1ibHkgKi8NCj4gKyAg ICAgdm9pZCAgICAgICAgICAgICp0b2tlbjsNCj4gKyAgICAgLyogd2hlbiBkaXNhYmxlZCB0b2tl biBiYXNlZCBzYW5pdHkgY2hlY2tpbmcgaXMgc2tpcHBlZCBpbiBoYW5kbGVyICovDQo+ICsgICAg IGJvb2wgICAgICAgICAgICBzYW5pdHlfZGlzYWJsZWQ7DQo+ICsgICAgIC8qIGp1c3QgYSBuYW1l IGZvciB0aGUgdGVzdC1jYXNlOyBtYW5hZGF0b3J5IGZpZWxkICovDQo+ICsgICAgIGNoYXIgICAg ICAgICAgICAqbmFtZTsNCj4gKyAgICAgY2hhciAgICAgICAgICAgICpkZXNjcjsNCj4gKyAgICAg dW5zaWduZWQgbG9uZyAgIGZlYXRzX3JlcXVpcmVkOw0KPiArICAgICAvKiBiaXRtYXNrIG9mIGVm ZmVjdGl2ZWx5IHN1cHBvcnRlZCBmZWF0czogcG9wdWxhdGVkIGF0IHJ1bi10aW1lICovDQo+ICsg ICAgIHVuc2lnbmVkIGxvbmcgICBmZWF0c19zdXBwb3J0ZWQ7DQo+ICsgICAgIGJvb2wgICAgICAg ICAgICBmZWF0c19vazsNCj4gKyAgICAgYm9vbCAgICAgICAgICAgIGluaXRpYWxpemVkOw0KPiAr ICAgICB1bnNpZ25lZCBpbnQgICAgbWluc2lnc3Rrc3o7DQo+ICsgICAgIC8qIHNpZ251bSB1c2Vk IGFzIGEgdGVzdCB0cmlnZ2VyLiBaZXJvIGlmIG5vIHRyaWdnZXItc2lnbmFsIGlzIHVzZWQgKi8N Cj4gKyAgICAgaW50ICAgICAgICAgICAgIHNpZ190cmlnOw0KPiArICAgICAvKg0KPiArICAgICAg KiBzaWdudW0gY29uc2lkZXJlZCBhcyBhIHN1Y2Nlc3NmdWwgdGVzdCBjb21wbGV0aW9uLg0KPiAr ICAgICAgKiBaZXJvIHdoZW4gbm8gc2lnbmFsIGlzIGV4cGVjdGVkIG9uIHN1Y2Nlc3MNCj4gKyAg ICAgICovDQo+ICsgICAgIGludCAgICAgICAgICAgICBzaWdfb2s7DQo+ICsgICAgIC8qIHNpZ251 bSBleHBlY3RlZCBvbiB1bnN1cHBvcnRlZCBDUFUgZmVhdHVyZXMuICovDQo+ICsgICAgIGludCAg ICAgICAgICAgICBzaWdfdW5zdXBwOw0KPiArICAgICAvKiBhIHRpbWVvdXQgaW4gc2Vjb25kIGZv ciB0ZXN0IGNvbXBsZXRpb24gKi8NCj4gKyAgICAgdW5zaWduZWQgaW50ICAgIHRpbWVvdXQ7DQo+ ICsgICAgIGJvb2wgICAgICAgICAgICB0cmlnZ2VyZWQ7DQo+ICsgICAgIGJvb2wgICAgICAgICAg ICBwYXNzOw0KPiArICAgICAvKiBvcHRpb25hbCBzYV9mbGFncyBmb3IgdGhlIGluc3RhbGxlZCBo YW5kbGVyICovDQo+ICsgICAgIGludCAgICAgICAgICAgICBzYV9mbGFnczsNCj4gKyAgICAgdWNv bnRleHRfdCAgICAgIHNhdmVkX3VjOw0KPiArDQo+ICsgICAgIC8qIGEgc2V0dXAgZnVuY3Rpb24g dG8gYmUgY2FsbGVkIGJlZm9yZSB0ZXN0IHN0YXJ0cyAqLw0KPiArICAgICBpbnQgKCpzZXR1cCko c3RydWN0IHRkZXNjciAqdGQpOw0KPiArICAgICB2b2lkICgqY2xlYW51cCkoc3RydWN0IHRkZXNj ciAqdGQpOw0KPiArDQo+ICsgICAgIC8qIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGJlIHVzZWQg YXMgYSB0cmlnZ2VyIGZvciB0ZXN0IHN0YXJ0aW5nICovDQo+ICsgICAgIGludCAoKnRyaWdnZXIp KHN0cnVjdCB0ZGVzY3IgKnRkKTsNCj4gKyAgICAgLyoNCj4gKyAgICAgICogdGhlIGFjdHVhbCB0 ZXN0LWNvcmU6IGludm9rZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZQ0KPiArICAgICAg KiBwcmVzZW5jZSBvZiB0aGUgdHJpZ2dlciBmdW5jdGlvbiBhYm92ZTsgdGhpcyBpcyBtYW5kYXRv cnkNCj4gKyAgICAgICovDQo+ICsgICAgIGludCAoKnJ1bikoc3RydWN0IHRkZXNjciAqdGQsIHNp Z2luZm9fdCAqc2ksIHVjb250ZXh0X3QgKnVjKTsNCj4gKw0KPiArICAgICAvKiBhbiBvcHRpb25h bCBmdW5jdGlvbiBmb3IgY3VzdG9tIHJlc3VsdHMnIHByb2Nlc3NpbmcgKi8NCj4gKyAgICAgdm9p ZCAoKmNoZWNrX3Jlc3VsdCkoc3RydWN0IHRkZXNjciAqdGQpOw0KPiArDQo+ICsgICAgIHZvaWQg KnByaXY7DQo+ICt9Ow0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmMgYi90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYzAwNTVmNjM0MGINCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVz dF9zaWduYWxzX3V0aWxzLmMNCj4gQEAgLTAsMCArMSwyNjEgQEANCj4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ICsvKiBDb3B5cmlnaHQgKEMpIDIwMTkgQVJNIExp bWl0ZWQgKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ICsjaW5jbHVkZSA8c3RkbGli Lmg+DQo+ICsjaW5jbHVkZSA8c2lnbmFsLmg+DQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsj aW5jbHVkZSA8dW5pc3RkLmg+DQo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+DQo+ICsjaW5jbHVkZSA8 c3lzL2F1eHYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9hdXh2ZWMuaD4NCj4gKyNpbmNsdWRlIDx1 Y29udGV4dC5oPg0KPiArDQo+ICsjaW5jbHVkZSAidGVzdF9zaWduYWxzLmgiDQo+ICsjaW5jbHVk ZSAidGVzdF9zaWduYWxzX3V0aWxzLmgiDQo+ICsjaW5jbHVkZSAidGVzdGNhc2VzL3Rlc3RjYXNl cy5oIg0KPiArDQo+ICtleHRlcm4gc3RydWN0IHRkZXNjciAqY3VycmVudDsNCj4gKw0KPiArc3Rh dGljIGNoYXIgKmZlYXRzX3N0b3JlW0ZNQVhfRU5EXSA9IHsNCj4gKyAgICAgIlNTQlMiLA0KPiAr ICAgICAiUEFOIiwNCj4gKyAgICAgIlVBTyINCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgTUFYX0ZF QVRTX1NaIDEyOA0KPiArc3RhdGljIGlubGluZSBjaGFyICpmZWF0c190b19zdHJpbmcodW5zaWdu ZWQgbG9uZyBmZWF0cykNCj4gK3sNCj4gKyAgICAgc3RhdGljIGNoYXIgZmVhdHNfc3RyaW5nW01B WF9GRUFUU19TWl07DQo+ICsNCj4gKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGTUFYX0VORCAm JiBmZWF0c19zdG9yZVtpXVswXTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgaWYgKGZlYXRzICYg MVVMIDw8IGkpDQo+ICsgICAgICAgICAgICAgICAgICAgICBzbnByaW50ZihmZWF0c19zdHJpbmcs IE1BWF9GRUFUU19TWiAtIDEsICIlcyAlcyAiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmVhdHNfc3RyaW5nLCBmZWF0c19zdG9yZVtpXSk7DQo+ICsgICAgIH0NCj4gKw0KPiAr ICAgICByZXR1cm4gZmVhdHNfc3RyaW5nOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB1bmJs b2NrX3NpZ25hbChpbnQgc2lnbnVtKQ0KPiArew0KPiArICAgICBzaWdzZXRfdCBzc2V0Ow0KPiAr DQo+ICsgICAgIHNpZ2VtcHR5c2V0KCZzc2V0KTsNCj4gKyAgICAgc2lnYWRkc2V0KCZzc2V0LCBz aWdudW0pOw0KPiArICAgICBzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNzZXQsIE5VTEwpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkZWZhdWx0X3Jlc3VsdChzdHJ1Y3QgdGRlc2NyICp0 ZCwgYm9vbCBmb3JjZV9leGl0KQ0KPiArew0KPiArICAgICBpZiAodGQtPnBhc3MpDQo+ICsgICAg ICAgICAgICAgZnByaW50ZihzdGRlcnIsICI9PT4+IGNvbXBsZXRlZC4gUEFTUygxKVxuIik7DQo+ ICsgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIj09Pj4gY29tcGxl dGVkLiBGQUlMKDApXG4iKTsNCj4gKyAgICAgaWYgKGZvcmNlX2V4aXQpDQo+ICsgICAgICAgICAg ICAgZXhpdCh0ZC0+cGFzcyA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRSk7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmVfZmVhdHNfb2soc3RydWN0IHRkZXNjciAqdGQp DQo+ICt7DQo+ICsgICAgIHJldHVybiB0ZCA/IHRkLT5mZWF0c19yZXF1aXJlZCA9PSB0ZC0+ZmVh dHNfc3VwcG9ydGVkIDogMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZGVmYXVsdF9oYW5k bGVyKGludCBzaWdudW0sIHNpZ2luZm9fdCAqc2ksIHZvaWQgKnVjKQ0KPiArew0KPiArICAgICBp ZiAoY3VycmVudC0+c2lnX3RyaWcgJiYgc2lnbnVtID09IGN1cnJlbnQtPnNpZ190cmlnKSB7DQo+ ICsgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJIYW5kbGluZyBTSUdfVFJJR1xuIik7DQo+ ICsgICAgICAgICAgICAgY3VycmVudC0+dHJpZ2dlcmVkID0gMTsNCj4gKyAgICAgICAgICAgICAv KiAtPnJ1biB3YXMgYXNzZXJ0ZWQgTk9OLU5VTEwgaW4gdGVzdF9zZXR1cCgpIGFscmVhZHkgKi8N Cj4gKyAgICAgICAgICAgICBjdXJyZW50LT5ydW4oY3VycmVudCwgc2ksIHVjKTsNCj4gKyAgICAg fSBlbHNlIGlmIChzaWdudW0gPT0gU0lHSUxMICYmICFjdXJyZW50LT5pbml0aWFsaXplZCkgew0K PiArICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICogQSBTSUdJTEwgaGVyZSB3aGls ZSBzdGlsbCBub3QgaW5pdGlhbGl6ZWQgbWVhbnMgd2UgZmFpbGVkDQo+ICsgICAgICAgICAgICAg ICogZXZlbiB0byBhc3NlcyB0aGUgZXhpc3RlbmNlIG9mIGZlYXR1cmVzIGR1cmluZyBpbml0DQo+ ICsgICAgICAgICAgICAgICovDQo+ICsgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAiR290IFNJR0lMTCB0ZXN0X2luaXQuIE1hcmtpbmcgQUxMIGZl YXR1cmVzIFVOU1VQUE9SVEVELlxuIik7DQo+ICsgICAgICAgICAgICAgY3VycmVudC0+ZmVhdHNf c3VwcG9ydGVkID0gMDsNCj4gKyAgICAgfSBlbHNlIGlmIChjdXJyZW50LT5zaWdfb2sgJiYgc2ln bnVtID09IGN1cnJlbnQtPnNpZ19vaykgew0KPiArICAgICAgICAgICAgIC8qIGl0J3MgYSBidWcg aW4gdGhlIHRlc3QgY29kZSB3aGVuIHRoaXMgYXNzZXJ0IGZhaWwgKi8NCj4gKyAgICAgICAgICAg ICBhc3NlcnQoIWN1cnJlbnQtPnNpZ190cmlnIHx8IGN1cnJlbnQtPnRyaWdnZXJlZCk7DQo+ICsg ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAiU0lH X09LIC0tIFNQOiVwICBzaV9hZGRyQDoweCVwICBzaV9jb2RlOiVkICB0b2tlbkA6MHglcCAgb2Zm c2V0OiVsZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICgodWNvbnRleHRfdCAqKXVjKS0+ dWNfbWNvbnRleHQuc3AsDQo+ICsgICAgICAgICAgICAgICAgICAgICBzaS0+c2lfYWRkciwgc2kt PnNpX2NvZGUsIGN1cnJlbnQtPnRva2VuLA0KPiArICAgICAgICAgICAgICAgICAgICAgY3VycmVu dC0+dG9rZW4gLSBzaS0+c2lfYWRkcik7DQo+ICsgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAg ICAgICAgKiBmYWtlX3NpZ3JldHVybiB0ZXN0cywgd2hpY2ggaGF2ZSBzYW5pdHlfZW5hYmxlZD0x LCBzZXQsIGF0DQo+ICsgICAgICAgICAgICAgICogdGhlIHZlcnkgbGFzdCB0aW1lLCB0aGUgdG9r ZW4gZmllbGQgdG8gdGhlIFNQIGFkZHJlc3MgdXNlZA0KPiArICAgICAgICAgICAgICAqIHRvIHBs YWNlIHRoZSBmYWtlIHNpZ2ZyYW1lOiBzbyB0b2tlbj09MCBtZWFucyB3ZSBuZXZlciBtYWRlDQo+ ICsgICAgICAgICAgICAgICogaXQgdG8gdGhlIGVuZCwgc2VnZmF1bHRpbmcgd2VsbC1iZWZvcmUs IGFuZCB0aGUgdGVzdCBpcw0KPiArICAgICAgICAgICAgICAqIHBvc3NpYmx5IGJyb2tlbi4NCj4g KyAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICBpZiAoIWN1cnJlbnQtPnNhbml0eV9k aXNhYmxlZCAmJiAhY3VycmVudC0+dG9rZW4pIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGZw cmludGYoc3Rkb3V0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VycmVudC0+ dG9rZW4gWkVST0VELi4udGVzdCBpcyBwcm9iYWJseSBicm9rZW4hXG4iKTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIGFzc2VydCgwKTsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAg ICAgLyoNCj4gKyAgICAgICAgICAgICAgKiBUcnlpbmcgdG8gbmFycm93IGRvd24gdGhlIFNFR1Yg dG8gdGhlIG9uZXMgZ2VuZXJhdGVkIGJ5DQo+ICsgICAgICAgICAgICAgICogS2VybmVsIGl0c2Vs ZiB2aWEgYXJtNjRfbm90aWZ5X3NlZ2ZhdWx0KCkNCj4gKyAgICAgICAgICAgICAgKi8NCj4gKyAg ICAgICAgICAgICBpZiAoY3VycmVudC0+c2lnX29rID09IFNJR1NFR1YgJiYgc2ktPnNpX2NvZGUg IT0gU0VHVl9BQ0NFUlIpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2lfY29kZSAhPSBTRUdWX0FDQ0VS Ui4uLnRlc3QgaXMgcHJvYmFibHkgYnJva2VuIVxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAg ICBhc3NlcnQoMCk7DQo+ICsgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiSGFuZGxpbmcgU0lHX09LXG4iKTsNCj4gKyAgICAgICAgICAgICBjdXJyZW50LT5w YXNzID0gMTsNCj4gKyAgICAgICAgICAgICAvKg0KPiArICAgICAgICAgICAgICAqIFNvbWUgdGVz dHMgY2FuIGxlYWQgdG8gU0VHViBsb29wczogaW4gc3VjaCBhIGNhc2Ugd2Ugd2FudA0KPiArICAg ICAgICAgICAgICAqIHRvIHRlcm1pbmF0ZSBpbW1lZGlhdGVseSBleGl0aW5nIHN0cmFpZ2h0IGF3 YXkNCj4gKyAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICBkZWZhdWx0X3Jlc3VsdChj dXJyZW50LCAxKTsNCj4gKyAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICBpZiAoc2lnbnVt ID09IGN1cnJlbnQtPnNpZ191bnN1cHAgJiYgIWFyZV9mZWF0c19vayhjdXJyZW50KSkgew0KPiAr ICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLSBSWCBTSUdfVU5TVVBQIG9u IHVuc3VwcG9ydGVkIGZlYXR1cmUuLi5PS1xuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICBj dXJyZW50LT5wYXNzID0gMTsNCj4gKyAgICAgICAgICAgICB9IGVsc2UgaWYgKHNpZ251bSA9PSBT SUdBTFJNICYmIGN1cnJlbnQtPnRpbWVvdXQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiLS0gVGltZW91dCAhXG4iKTsNCj4gKyAgICAgICAgICAgICB9IGVsc2Ug ew0KPiArICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICItLSBSWCBVTkVYUEVDVEVEIFNJR05BTDogJWRcbiIsIHNpZ251 bSk7DQo+ICsgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgIGRlZmF1bHRfcmVzdWx0KGN1 cnJlbnQsIDEpOw0KPiArICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZGVmYXVsdF9z ZXR1cChzdHJ1Y3QgdGRlc2NyICp0ZCkNCj4gK3sNCj4gKyAgICAgc3RydWN0IHNpZ2FjdGlvbiBz YTsNCj4gKw0KPiArICAgICBzYS5zYV9zaWdhY3Rpb24gPSBkZWZhdWx0X2hhbmRsZXI7DQo+ICsg ICAgIHNhLnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsNCj4gKyAgICAgaWYgKHRkLT5zYV9mbGFncykN Cj4gKyAgICAgICAgICAgICBzYS5zYV9mbGFncyB8PSB0ZC0+c2FfZmxhZ3M7DQo+ICsgICAgIHNp Z2VtcHR5c2V0KCZzYS5zYV9tYXNrKTsNCj4gKyAgICAgLyogdW5jYXRjaGFibGUgc2lnbmFscyBu YXR1cmFsbHkgc2tpcHBlZCAuLi4gKi8NCj4gKyAgICAgZm9yIChpbnQgc2lnID0gMTsgc2lnIDwg MzI7IHNpZysrKQ0KPiArICAgICAgICAgICAgIHNpZ2FjdGlvbihzaWcsICZzYSwgTlVMTCk7DQo+ ICsgICAgIC8qDQo+ICsgICAgICAqIFJUIFNpZ25hbHMgZGVmYXVsdCBkaXNwb3NpdGlvbiBpcyBU ZXJtIGJ1dCB0aGV5IGNhbm5vdCBiZQ0KPiArICAgICAgKiBnZW5lcmF0ZWQgYnkgdGhlIEtlcm5l bCBpbiByZXNwb25zZSB0byBvdXIgdGVzdHM7IHNvIGp1c3QgY2F0Y2gNCj4gKyAgICAgICogdGhl bSBhbGwgYW5kIHJlcG9ydCB0aGVtIGFzIFVORVhQRUNURUQgc2lnbmFscy4NCj4gKyAgICAgICov DQo+ICsgICAgIGZvciAoaW50IHNpZyA9IFNJR1JUTUlOOyBzaWcgPD0gU0lHUlRNQVg7IHNpZysr KQ0KPiArICAgICAgICAgICAgIHNpZ2FjdGlvbihzaWcsICZzYSwgTlVMTCk7DQo+ICsNCj4gKyAg ICAgLyoganVzdCBpbiBjYXNlLi4udW5ibG9jayBleHBsaWNpdGx5IGFsbCB3ZSBuZWVkICovDQo+ ICsgICAgIGlmICh0ZC0+c2lnX3RyaWcpDQo+ICsgICAgICAgICAgICAgdW5ibG9ja19zaWduYWwo dGQtPnNpZ190cmlnKTsNCj4gKyAgICAgaWYgKHRkLT5zaWdfb2spDQo+ICsgICAgICAgICAgICAg dW5ibG9ja19zaWduYWwodGQtPnNpZ19vayk7DQo+ICsgICAgIGlmICh0ZC0+c2lnX3Vuc3VwcCkN Cj4gKyAgICAgICAgICAgICB1bmJsb2NrX3NpZ25hbCh0ZC0+c2lnX3Vuc3VwcCk7DQo+ICsNCj4g KyAgICAgaWYgKHRkLT50aW1lb3V0KSB7DQo+ICsgICAgICAgICAgICAgdW5ibG9ja19zaWduYWwo U0lHQUxSTSk7DQo+ICsgICAgICAgICAgICAgYWxhcm0odGQtPnRpbWVvdXQpOw0KPiArICAgICB9 DQo+ICsgICAgIGZwcmludGYoc3RkZXJyLCAiUmVnaXN0ZXJlZCBoYW5kbGVycyBmb3IgYWxsIHNp Z25hbHMuXG4iKTsNCj4gKw0KPiArICAgICByZXR1cm4gMTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGlubGluZSBpbnQgZGVmYXVsdF90cmlnZ2VyKHN0cnVjdCB0ZGVzY3IgKnRkKQ0KPiArew0KPiAr ICAgICByZXR1cm4gIXJhaXNlKHRkLT5zaWdfdHJpZyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgdGVzdF9pbml0KHN0cnVjdCB0ZGVzY3IgKnRkKQ0KPiArew0KPiArICAgICB0ZC0+bWluc2ln c3Rrc3ogPSBnZXRhdXh2YWwoQVRfTUlOU0lHU1RLU1opOw0KPiArICAgICBpZiAoIXRkLT5taW5z aWdzdGtzeikNCj4gKyAgICAgICAgICAgICB0ZC0+bWluc2lnc3Rrc3ogPSBNSU5TSUdTVEtTWjsN Cj4gKyAgICAgZnByaW50ZihzdGRlcnIsICJEZXRlY3RlZCBNSU5TVEtTSUdTWjolZFxuIiwgdGQt Pm1pbnNpZ3N0a3N6KTsNCj4gKw0KPiArICAgICBpZiAodGQtPmZlYXRzX3JlcXVpcmVkKSB7DQo+ ICsgICAgICAgICAgICAgYm9vbCBmZWF0c19vayA9IGZhbHNlOw0KPiArICAgICAgICAgICAgIHRk LT5mZWF0c19zdXBwb3J0ZWQgPSAwOw0KPiArICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAg ICAgICogQ2hlY2tpbmcgZm9yIENQVSByZXF1aXJlZCBmZWF0dXJlcyB1c2luZyBib3RoIHRoZQ0K PiArICAgICAgICAgICAgICAqIGF1eHZhbCBhbmQgdGhlIGFybTY0IE1SUyBFbXVsYXRpb24gdG8g cmVhZCBzeXNyZWdzLg0KPiArICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgIGlmIChn ZXRhdXh2YWwoQVRfSFdDQVApICYgSFdDQVBfQ1BVSUQpIHsNCj4gKyAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IHZhbCA9IDA7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmICh0 ZC0+ZmVhdHNfcmVxdWlyZWQgJiBGRUFUX1NTQlMpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogVXNlcyBIV0NBUCB0byBjaGVjayBjYXBhYmlsaXR5ICovDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRhdXh2YWwoQVRfSFdDQVApICYgSFdDQVBfU1NC UykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+ZmVhdHNfc3Vw cG9ydGVkIHw9IEZFQVRfU1NCUzsNCj4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAg ICAgICAgICAgICAgICAgIGlmICh0ZC0+ZmVhdHNfcmVxdWlyZWQgJiBGRUFUX1BBTikgew0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVc2VzIE1SUyBlbXVsYXRpb24gdG8gY2hl Y2sgY2FwYWJpbGl0eSAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcmVn dmFsKFNZU19JRF9BQTY0TU1GUjFfRUwxLCB2YWwpOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoSVNfUEFOX1NVUFBPUlRFRCh2YWwpKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRkLT5mZWF0c19zdXBwb3J0ZWQgfD0gRkVBVF9QQU47DQo+ICsg ICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAodGQtPmZl YXRzX3JlcXVpcmVkICYgRkVBVF9VQU8pIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogVXNlcyBNUlMgZW11bGF0aW9uIHRvIGNoZWNrIGNhcGFiaWxpdHkgKi8NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3JlZ3ZhbChTWVNfSURfQUE2NE1NRlIyX0VMMSAs IHZhbCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19VQU9fU1VQUE9S VEVEKHZhbCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmZl YXRzX3N1cHBvcnRlZCB8PSBGRUFUX1VBTzsNCj4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4g KyAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIV0NBUF9DUFVJRCBOT1Qg YXZhaWxhYmxlLiBNYXJrIEFMTCBmZWF0cyBVTlNVUFBPUlRFRC5cbiIpOw0KPiArICAgICAgICAg ICAgIH0NCj4gKyAgICAgICAgICAgICBmZWF0c19vayA9IGFyZV9mZWF0c19vayh0ZCk7DQo+ICsg ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAiUmVx dWlyZWQgRmVhdHVyZXM6IFslc10gJXNzdXBwb3J0ZWRcbiIsDQo+ICsgICAgICAgICAgICAgICAg ICAgICBmZWF0c19vayA/IGZlYXRzX3RvX3N0cmluZyh0ZC0+ZmVhdHNfc3VwcG9ydGVkKSA6DQo+ ICsgICAgICAgICAgICAgICAgICAgICBmZWF0c190b19zdHJpbmcodGQtPmZlYXRzX3JlcXVpcmVk IF4gdGQtPmZlYXRzX3N1cHBvcnRlZCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAhZmVhdHNf b2sgPyAiTk9UICIgOiAiIik7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICB0ZC0+aW5pdGlhbGl6 ZWQgPSAxOw0KPiArICAgICByZXR1cm4gMTsNCj4gK30NCj4gKw0KPiAraW50IHRlc3Rfc2V0dXAo c3RydWN0IHRkZXNjciAqdGQpDQo+ICt7DQo+ICsgICAgIC8qIGFzc2VydCBjb3JlIGludmFyaWFu dHMgc3ltcHRvbSBvZiBhIHJvdHRlbiB0ZXN0Y2FzZSAqLw0KPiArICAgICBhc3NlcnQoY3VycmVu dCk7DQo+ICsgICAgIGFzc2VydCh0ZCk7DQo+ICsgICAgIGFzc2VydCh0ZC0+bmFtZSk7DQo+ICsg ICAgIGFzc2VydCh0ZC0+cnVuKTsNCj4gKw0KPiArICAgICBpZiAoIXRlc3RfaW5pdCh0ZCkpDQo+ ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsNCj4gKyAgICAgaWYgKHRkLT5zZXR1cCkNCj4g KyAgICAgICAgICAgICByZXR1cm4gdGQtPnNldHVwKHRkKTsNCj4gKyAgICAgZWxzZQ0KPiArICAg ICAgICAgICAgIHJldHVybiBkZWZhdWx0X3NldHVwKHRkKTsNCj4gK30NCj4gKw0KPiAraW50IHRl c3RfcnVuKHN0cnVjdCB0ZGVzY3IgKnRkKQ0KPiArew0KPiArICAgICBpZiAodGQtPnNpZ190cmln KSB7DQo+ICsgICAgICAgICAgICAgaWYgKHRkLT50cmlnZ2VyKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHRkLT50cmlnZ2VyKHRkKTsNCj4gKyAgICAgICAgICAgICBlbHNlDQo+ICsg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF90cmlnZ2VyKHRkKTsNCj4gKyAgICAg fSBlbHNlIHsNCj4gKyAgICAgICAgICAgICByZXR1cm4gdGQtPnJ1bih0ZCwgTlVMTCwgTlVMTCk7 DQo+ICsgICAgIH0NCj4gK30NCj4gKw0KPiArdm9pZCB0ZXN0X3Jlc3VsdChzdHJ1Y3QgdGRlc2Ny ICp0ZCkNCj4gK3sNCj4gKyAgICAgaWYgKHRkLT5jaGVja19yZXN1bHQpDQo+ICsgICAgICAgICAg ICAgdGQtPmNoZWNrX3Jlc3VsdCh0ZCk7DQo+ICsgICAgIGRlZmF1bHRfcmVzdWx0KHRkLCAwKTsN Cj4gK30NCj4gKw0KPiArdm9pZCB0ZXN0X2NsZWFudXAoc3RydWN0IHRkZXNjciAqdGQpDQo+ICt7 DQo+ICsgICAgIGlmICh0ZC0+Y2xlYW51cCkNCj4gKyAgICAgICAgICAgICB0ZC0+Y2xlYW51cCh0 ZCk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9z aWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02 NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAwMDAwLi44NjU4ZDFhN2Q0YjkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxz LmgNCj4gQEAgLTAsMCArMSwxMyBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAgKi8NCj4gKy8qIENvcHlyaWdodCAoQykgMjAxOSBBUk0gTGltaXRlZCAqLw0KPiArDQo+ ICsjaWZuZGVmIF9fVEVTVF9TSUdOQUxTX1VUSUxTX0hfXw0KPiArI2RlZmluZSBfX1RFU1RfU0lH TkFMU19VVElMU19IX18NCj4gKw0KPiArI2luY2x1ZGUgInRlc3Rfc2lnbmFscy5oIg0KPiArDQo+ ICtpbnQgdGVzdF9zZXR1cChzdHJ1Y3QgdGRlc2NyICp0ZCk7DQo+ICt2b2lkIHRlc3RfY2xlYW51 cChzdHJ1Y3QgdGRlc2NyICp0ZCk7DQo+ICtpbnQgdGVzdF9ydW4oc3RydWN0IHRkZXNjciAqdGQp Ow0KPiArdm9pZCB0ZXN0X3Jlc3VsdChzdHJ1Y3QgdGRlc2NyICp0ZCk7DQo+ICsjZW5kaWYNCj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2Fz ZXMvLmdpdGlnbm9yZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0 Y2FzZXMvLmdpdGlnbm9yZQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwMDAuLjg2NTEyNzJlM2NmYw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvLmdpdGlnbm9yZQ0KPiBAQCAtMCww ICsxIEBADQo+ICttYW5nbGVfcHN0YXRlX2ludmFsaWRfY29tcGF0X3RvZ2dsZQ0KPiBkaWZmIC0t Z2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy9tYW5n bGVfcHN0YXRlX2ludmFsaWRfY29tcGF0X3RvZ2dsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy9tYW5nbGVfcHN0YXRlX2ludmFsaWRfY29tcGF0X3Rv Z2dsZS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTcx MTkzZTc1MDFiDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy9tYW5nbGVfcHN0YXRlX2ludmFsaWRfY29tcGF0X3Rv Z2dsZS5jDQo+IEBAIC0wLDAgKzEsMjUgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovDQo+ICsvKiBDb3B5cmlnaHQgKEMpIDIwMTkgQVJNIExpbWl0ZWQgKi8NCj4g Kw0KPiArI2luY2x1ZGUgInRlc3Rfc2lnbmFsc191dGlscy5oIg0KPiArI2luY2x1ZGUgInRlc3Rj YXNlcy5oIg0KPiArDQo+ICtzdGF0aWMgaW50IG1hbmdsZV9pbnZhbGlkX3BzdGF0ZV9ydW4oc3Ry dWN0IHRkZXNjciAqdGQsIHNpZ2luZm9fdCAqc2ksDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWNvbnRleHRfdCAqdWMpDQo+ICt7DQo+ICsgICAgIEFTU0VSVF9HT09EX0NP TlRFWFQodWMpOw0KPiArDQo+ICsgICAgIC8qIFRoaXMgY29uZmlnIHNob3VsZCB0cmlnZ2VyIGEg U0lHU0VHViBieSBLZXJuZWwgKi8NCj4gKyAgICAgdWMtPnVjX21jb250ZXh0LnBzdGF0ZSBePSBQ U1JfTU9ERTMyX0JJVDsNCj4gKw0KPiArICAgICByZXR1cm4gMTsNCj4gK30NCj4gKw0KPiArc3Ry dWN0IHRkZXNjciB0ZGUgPSB7DQo+ICsgICAgICAgICAgICAgLnNhbml0eV9kaXNhYmxlZCA9IHRy dWUsDQo+ICsgICAgICAgICAgICAgLm5hbWUgPSAiTUFOR0xFX1BTVEFURV9JTlZBTElEX1NUQVRF X1RPR0dMRSIsDQo+ICsgICAgICAgICAgICAgLmRlc2NyID0gIk1hbmdsaW5nIHVjX21jb250ZXh0 IHdpdGggSU5WQUxJRCBTVEFURV9UT0dHTEUiLA0KPiArICAgICAgICAgICAgIC5zaWdfdHJpZyA9 IFNJR1VTUjEsDQo+ICsgICAgICAgICAgICAgLnNpZ19vayA9IFNJR1NFR1YsDQo+ICsgICAgICAg ICAgICAgLnJ1biA9IG1hbmdsZV9pbnZhbGlkX3BzdGF0ZV9ydW4sDQo+ICt9Ow0KPiBkaWZmIC0t Z2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy90ZXN0 Y2FzZXMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMv dGVzdGNhc2VzLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw Li5hNTk3ODUwOTJlMWYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdGNhc2VzL3Rlc3RjYXNlcy5jDQo+IEBAIC0wLDAgKzEs MTUwIEBADQo+ICsjaW5jbHVkZSAidGVzdGNhc2VzLmgiDQo+ICsNCj4gK3N0cnVjdCBfYWFyY2g2 NF9jdHggKmdldF9oZWFkZXIoc3RydWN0IF9hYXJjaDY0X2N0eCAqaGVhZCwgdWludDMyX3QgbWFn aWMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZXN2X3N6LCBzaXpl X3QgKm9mZnNldCkNCj4gK3sNCj4gKyAgICAgc2l6ZV90IG9mZnMgPSAwOw0KPiArICAgICBzdHJ1 Y3QgX2FhcmNoNjRfY3R4ICpmb3VuZCA9IE5VTEw7DQo+ICsNCj4gKyAgICAgaWYgKCFoZWFkIHx8 IHJlc3Zfc3ogPCBIRFJfU1opDQo+ICsgICAgICAgICAgICAgcmV0dXJuIGZvdW5kOw0KPiArDQo+ ICsgICAgIGRvIHsNCj4gKyAgICAgICAgICAgICBpZiAoaGVhZC0+bWFnaWMgPT0gbWFnaWMpIHsN Cj4gKyAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gaGVhZDsNCj4gKyAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICBvZmZzICs9 IGhlYWQtPnNpemU7DQo+ICsgICAgICAgICAgICAgaGVhZCA9IEdFVF9SRVNWX05FWFRfSEVBRCho ZWFkKTsNCj4gKyAgICAgfSB3aGlsZSAob2ZmcyA8IHJlc3Zfc3ogLSBIRFJfU1opOw0KPiArDQo+ ICsgICAgIGlmIChvZmZzZXQpDQo+ICsgICAgICAgICAgICAgKm9mZnNldCA9IG9mZnM7DQo+ICsN Cj4gKyAgICAgcmV0dXJuIGZvdW5kOw0KPiArfQ0KPiArDQo+ICtib29sIHZhbGlkYXRlX2V4dHJh X2NvbnRleHQoc3RydWN0IGV4dHJhX2NvbnRleHQgKmV4dHJhLCBjaGFyICoqZXJyKQ0KPiArew0K PiArICAgICBzdHJ1Y3QgX2FhcmNoNjRfY3R4ICp0ZXJtOw0KPiArDQo+ICsgICAgIGlmICghZXh0 cmEgfHwgIWVycikNCj4gKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICAg ZnByaW50ZihzdGRlcnIsICJWYWxpZGF0aW5nIEVYVFJBLi4uXG4iKTsNCj4gKyAgICAgdGVybSA9 IEdFVF9SRVNWX05FWFRfSEVBRChleHRyYSk7DQo+ICsgICAgIGlmICghdGVybSB8fCB0ZXJtLT5t YWdpYyB8fCB0ZXJtLT5zaXplKSB7DQo+ICsgICAgICAgICAgICAgKmVyciA9ICJVTi1UZXJtaW5h dGVkIEVYVFJBIGNvbnRleHQiOw0KPiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gKyAg ICAgfQ0KPiArICAgICBpZiAoZXh0cmEtPmRhdGFwICYgMHgwZlVMKQ0KPiArICAgICAgICAgICAg ICplcnIgPSAiRXh0cmEgREFUQVAgbWlzYWxpZ25lZCI7DQo+ICsgICAgIGVsc2UgaWYgKGV4dHJh LT5zaXplICYgMHgwZlVMKQ0KPiArICAgICAgICAgICAgICplcnIgPSAiRXh0cmEgU0laRSBtaXNh bGlnbmVkIjsNCj4gKyAgICAgZWxzZSBpZiAoZXh0cmEtPmRhdGFwICE9ICh1aW50NjRfdCl0ZXJt ICsgc2l6ZW9mKCp0ZXJtKSkNCj4gKyAgICAgICAgICAgICAqZXJyID0gIkV4dHJhIERBVEFQIG1p c3BsYWNlZCAobm90IGNvbnRpZ3VvcykiOw0KPiArICAgICBpZiAoKmVycikNCj4gKyAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsN Cj4gK2Jvb2wgdmFsaWRhdGVfcmVzZXJ2ZWQodWNvbnRleHRfdCAqdWMsIHNpemVfdCByZXN2X3N6 LCBjaGFyICoqZXJyKQ0KPiArew0KPiArICAgICBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsNCj4g KyAgICAgc2l6ZV90IG9mZnMgPSAwOw0KPiArICAgICBpbnQgZmxhZ3MgPSAwOw0KPiArICAgICBz dHJ1Y3QgZXh0cmFfY29udGV4dCAqZXh0cmEgPSBOVUxMOw0KPiArICAgICBzdHJ1Y3QgX2FhcmNo NjRfY3R4ICpoZWFkID0NCj4gKyAgICAgICAgICAgICAoc3RydWN0IF9hYXJjaDY0X2N0eCAqKXVj LT51Y19tY29udGV4dC5fX3Jlc2VydmVkOw0KPiArDQo+ICsgICAgIGlmICghZXJyKQ0KPiArICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gKyAgICAgLyogV2FsayB0aWxsIHRoZSBlbmQgdGVy bWluYXRvciB2ZXJpZnlpbmcgX19yZXNlcnZlZCBjb250ZW50cyAqLw0KPiArICAgICB3aGlsZSAo aGVhZCAmJiAhdGVybWluYXRlZCAmJiBvZmZzIDwgcmVzdl9zeikgew0KPiArICAgICAgICAgICAg IGlmICgodWludDY0X3QpaGVhZCAmIDB4MGZVTCkgew0KPiArICAgICAgICAgICAgICAgICAgICAg KmVyciA9ICJNaXNhbGlnbmVkIEhFQUQiOw0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOw0KPiArICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgIHN3aXRjaCAo aGVhZC0+bWFnaWMpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWQtPnNpemUpDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKmVyciA9ICJCYWQgc2l6ZSBmb3IgTUFHSUMwIjsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGNhc2UgRlBTSU1E X01BR0lDOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGUFNJ TURfQ1RYKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnIgPSAi TXVsdGlwbGUgRlBTSU1EX01BR0lDIjsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZSBpZiAoaGVhZC0+c2l6ZSAhPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2Yoc3RydWN0IGZwc2ltZF9jb250ZXh0KSkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqZXJyID0gIkJhZCBzaXplIGZvciBmcHNpbWRfY29udGV4 dCI7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZQU0lNRF9DVFg7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAg ICAgICAgICAgY2FzZSBFU1JfTUFHSUM6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChoZWFkLT5zaXplICE9IHNpemVvZihzdHJ1Y3QgZXNyX2NvbnRleHQpKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBzaXplIGZvciBlc3Jf Y29udGV4dCBpcyBub3QgYW4gZXJyb3IuLi5qdXN0IGlnbm9yZS5cbiIpOw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGNhc2Ug U1ZFX01BR0lDOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBT VkVfQ1RYKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnIgPSAi TXVsdGlwbGUgU1ZFX01BR0lDIjsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZSBpZiAoaGVhZC0+c2l6ZSAhPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2Yoc3RydWN0IHN2ZV9jb250ZXh0KSkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqZXJyID0gIkJhZCBzaXplIGZvciBzdmVfY29udGV4dCI7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFNWRV9DVFg7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICAgY2Fz ZSBFWFRSQV9NQUdJQzoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdz ICYgRVhUUkFfQ1RYKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpl cnIgPSAiTXVsdGlwbGUgRVhUUkFfTUFHSUMiOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbHNlIGlmIChoZWFkLT5zaXplICE9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgZXh0cmFfY29udGV4dCkpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmVyciA9ICJCYWQgc2l6ZSBmb3IgZXh0cmFfY29u dGV4dCI7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEVYVFJBX0NU WDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEgPSAoc3RydWN0IGV4dHJh X2NvbnRleHQgKiloZWFkOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsN Cj4gKyAgICAgICAgICAgICAgICAgICAgIGNhc2UgS1NGVF9CQURfTUFHSUM6DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIFRoaXMgaXMgYSBCQUQgbWFnaWMgaGVhZGVyIGRlZmluZWQNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICogYXJ0aWZpY2lhbGx5IGJ5IGEgdGVzdGNhc2UgYW5kIHN1cmVseQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1bmtub3duIHRvIHRoZSBLZXJuZWwg cGFyc2VfdXNlcl9zaWdmcmFtZSgpLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KiBJdCBNVVNUIGNhdXNlIGEgS2VybmVsIGluZHVjZWQgU0VHVg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmVyciA9 ICJCQUQgTUFHSUMgISI7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K PiArICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQSBzdGlsbCB1 bmtub3duIE1hZ2ljOiBwb3RlbnRpYWxseSBmcmVzaGx5IGFkZGVkDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqIHRvIHRoZSBLZXJuZWwgY29kZSBhbmQgc3RpbGwgdW5rbm93biB0 byB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGVzdHMuDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmcHJpbnRmKHN0ZG91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiU0tJUCBVbmtub3duIE1BR0lDOiAweCVYIC0gSXMgS1NGVCBhcm02NC9zaWduYWwgdXAg dG8gZGF0ZSA/XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl YWQtPm1hZ2ljKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsg ICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgaWYgKCplcnIpDQo+ICsgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICAgICAgICAgICBvZmZzICs9 IGhlYWQtPnNpemU7DQo+ICsgICAgICAgICAgICAgaWYgKHJlc3Zfc3ogLSBvZmZzIDwgc2l6ZW9m KCpoZWFkKSkgew0KPiArICAgICAgICAgICAgICAgICAgICAgKmVyciA9ICJIRUFEIE92ZXJydW4i Ow0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAgICAgICAg IH0NCj4gKw0KPiArICAgICAgICAgICAgIGlmIChmbGFncyAmIEVYVFJBX0NUWCkNCj4gKyAgICAg ICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXh0cmFfY29udGV4dChleHRyYSwgZXJyKSkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsg ICAgICAgICAgICAgaGVhZCA9IEdFVF9SRVNWX05FWFRfSEVBRChoZWFkKTsNCj4gKyAgICAgfQ0K PiArDQo+ICsgICAgIGlmICh0ZXJtaW5hdGVkICYmICEoZmxhZ3MgJiBGUFNJTURfQ1RYKSkgew0K PiArICAgICAgICAgICAgICplcnIgPSAiTWlzc2luZyBGUFNJTUQiOw0KPiArICAgICAgICAgICAg IHJldHVybiBmYWxzZTsNCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIHJldHVybiB0cnVlOw0KPiAr fQ0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rl c3RjYXNlcy90ZXN0Y2FzZXMuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25h bC90ZXN0Y2FzZXMvdGVzdGNhc2VzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwLi42MjQ3MTdjNzFiMWQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdGNhc2VzL3Rlc3RjYXNlcy5oDQo+ IEBAIC0wLDAgKzEsODMgQEANCj4gKyNpZm5kZWYgX19URVNUQ0FTRVNfSF9fDQo+ICsjZGVmaW5l IF9fVEVTVENBU0VTX0hfXw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4gKyNpbmNsdWRl IDxzdGRib29sLmg+DQo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ICsjaW5jbHVkZSA8dW5pc3Rk Lmg+DQo+ICsjaW5jbHVkZSA8dWNvbnRleHQuaD4NCj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4NCj4g Kw0KPiArLyogQXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNpZ2ZyYW1lIGRlZmluaXRpb25zICovDQo+ ICsjaW5jbHVkZSA8YXNtL3NpZ2NvbnRleHQuaD4NCj4gKw0KPiArI2RlZmluZSBGUFNJTURfQ1RY ICAgKDEgPDwgMCkNCj4gKyNkZWZpbmUgU1ZFX0NUWCAgICAgICAgICAgICAgKDEgPDwgMSkNCj4g KyNkZWZpbmUgRVhUUkFfQ1RYICAgICgxIDw8IDIpDQo+ICsNCj4gKyNkZWZpbmUgS1NGVF9CQURf TUFHSUMgICAgICAgMHhkZWFkYmVlZg0KPiArDQo+ICsjZGVmaW5lIEhEUl9TWiBcDQo+ICsgICAg IHNpemVvZihzdHJ1Y3QgX2FhcmNoNjRfY3R4KQ0KPiArDQo+ICsjZGVmaW5lIEdFVF9TRl9SRVNW X0hFQUQoc2YpIFwNCj4gKyAgICAgKHN0cnVjdCBfYWFyY2g2NF9jdHggKikoJihzZikudWMudWNf bWNvbnRleHQuX19yZXNlcnZlZCkNCj4gKw0KPiArI2RlZmluZSBHRVRfU0ZfUkVTVl9TSVpFKHNm KSBcDQo+ICsgICAgIHNpemVvZigoc2YpLnVjLnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQpDQo+ICsN Cj4gKyNkZWZpbmUgR0VUX1VDUF9SRVNWX1NJWkUodWNwKSBcDQo+ICsgICAgIHNpemVvZigodWNw KS0+dWNfbWNvbnRleHQuX19yZXNlcnZlZCkNCj4gKw0KPiArI2RlZmluZSBBU1NFUlRfQkFEX0NP TlRFWFQodWMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICBjaGFyICplcnIgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgICBhc3NlcnQoIXZhbGlkYXRlX3Jlc2VydmVkKCh1YyksIEdFVF9V Q1BfUkVTVl9TSVpFKCh1YykpLCAmZXJyKSk7XA0KPiArICAgICBpZiAoZXJyKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgIlVzaW5nIGJhZGx5IGJ1aWx0IGNvbnRl eHQgLSBFUlI6ICVzXG4iLCBlcnIpOyAgXA0KPiArfSB3aGlsZSgwKQ0KPiArDQo+ICsjZGVmaW5l IEFTU0VSVF9HT09EX0NPTlRFWFQodWMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgICBjaGFyICplcnIgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgaWYgKCF2YWxpZGF0ZV9yZXNlcnZl ZCgodWMpLCBHRVRfVUNQX1JFU1ZfU0laRSgodWMpKSwgJmVycikpIHsgICBcDQo+ICsgICAgICAg ICAgICAgaWYgKGVycikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkRldGVjdGVkIEJBRCBjb250ZXh0IC0gRVJSOiAlc1xuIiwgZXJyKTtcDQo+ICsgICAgICAg ICAgICAgYXNzZXJ0KDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgInVjIGNvbnRleHQgdmFsaWRhdGVkLlxuIik7ICAgICAgICAgICAgICBcDQo+ICsgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArfSB3aGlsZSgwKQ0KPiArDQo+ICsvKiBoZWFkLT5zaXplIGFjY291bnRzIGJv dGggZm9yIHBheWxvYWQgYW5kIGhlYWRlciBfYWFyY2g2NF9jdHggc2l6ZSAhICovDQo+ICsjZGVm aW5lIEdFVF9SRVNWX05FWFRfSEVBRChoKSBcDQo+ICsgICAgIChzdHJ1Y3QgX2FhcmNoNjRfY3R4 ICopKChjaGFyICopKGgpICsgKGgpLT5zaXplKQ0KPiArDQo+ICtzdHJ1Y3QgZmFrZV9zaWdmcmFt ZSB7DQo+ICsgICAgIHNpZ2luZm9fdCAgICAgICBpbmZvOw0KPiArICAgICB1Y29udGV4dF90ICAg ICAgdWM7DQo+ICt9Ow0KPiArDQo+ICsNCj4gK2Jvb2wgdmFsaWRhdGVfcmVzZXJ2ZWQodWNvbnRl eHRfdCAqdWMsIHNpemVfdCByZXN2X3N6LCBjaGFyICoqZXJyKTsNCj4gKw0KPiArYm9vbCB2YWxp ZGF0ZV9leHRyYV9jb250ZXh0KHN0cnVjdCBleHRyYV9jb250ZXh0ICpleHRyYSwgY2hhciAqKmVy cik7DQo+ICsNCj4gK3N0cnVjdCBfYWFyY2g2NF9jdHggKmdldF9oZWFkZXIoc3RydWN0IF9hYXJj aDY0X2N0eCAqaGVhZCwgdWludDMyX3QgbWFnaWMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCByZXN2X3N6LCBzaXplX3QgKm9mZnNldCk7DQo+ICsNCj4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IF9hYXJjaDY0X2N0eCAqZ2V0X3Rlcm1pbmF0b3Ioc3RydWN0IF9hYXJjaDY0 X2N0eCAqaGVhZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IHJlc3Zfc3osDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCAqb2Zmc2V0KQ0KPiArew0KPiArICAgICByZXR1cm4gZ2V0 X2hlYWRlcihoZWFkLCAwLCByZXN2X3N6LCBvZmZzZXQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW5saW5lIHZvaWQgd3JpdGVfdGVybWluYXRvcl9yZWNvcmQoc3RydWN0IF9hYXJjaDY0X2N0eCAq dGFpbCkNCj4gK3sNCj4gKyAgICAgaWYgKHRhaWwpIHsNCj4gKyAgICAgICAgICAgICB0YWlsLT5t YWdpYyA9IDA7DQo+ICsgICAgICAgICAgICAgdGFpbC0+c2l6ZSA9IDA7DQo+ICsgICAgIH0NCj4g K30NCj4gKyNlbmRpZg0KPg0KSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMg ZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBi ZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVh c2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUg Y29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Ig c3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K