Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp74294lqe; Fri, 5 Apr 2024 13:06:24 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUC6W79BrpGTIjrAqKrjMM2NHuwN1Pzi4q128JQiZdH1b7/b2fKour+7nqU4UwRDar9E/KlAO4odGT04IKP/2vLKzZYyYYCV1nL1Meb/w== X-Google-Smtp-Source: AGHT+IHjME4+o0RLQd7S4oNhVIGSjlyqKnmBbifzxYWPxaKI5iHG/+dARGa6iX1fE1otbKS2CaOJ X-Received: by 2002:a17:902:d4d1:b0:1e3:d4a2:3899 with SMTP id o17-20020a170902d4d100b001e3d4a23899mr458722plg.17.1712347584552; Fri, 05 Apr 2024 13:06:24 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712347584; cv=pass; d=google.com; s=arc-20160816; b=Os2HpaJjTnrdTeAMAbRpLNJcIXuLQkSs6e7+XZzwfjAEgy8DLak1DXaHqfQ8TJxVQy zjKLkOElSVTIJ1P7cC8Nl00VT1FsKeh4lR4dRIIxq0d/NQKNkfvtSCZpoX/OCGGHSdy9 cWq753KAQQpbUqzLlT05hLYFSSMo62V7za1j0wSSlPcE2RyzhEFnh1C62EIrniD2+Wt9 u2MrtwbLRMhmvJdb7hAGK7SwqOJ0kqNgvPDY8rTYHObwDkCSM37C5410Ts5DDKk7bcU2 dEHg2pw6Cm9jXmGeTarsp7bsNM2wtVaGwtOTJquZas57RqjXLd2lnuEasX0a4WcKMQ/6 sBXQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:content-id:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :cc:to:from:thread-topic:subject:dkim-signature; bh=euQkJ98ZCMkpzQJfRErU+YVkLCjzZGATCjhrKap70dM=; fh=lfeYy1c+w7iI6zT7oJb54VX2JPDId2ORf2IMFYrHSL4=; b=E//86NOC56wUj/T/fYpEpsvelr6vzBnSyyYNDi72tu3FrEMOwDplF7PcSbWnTL6Kaw AHNqTvZSUbC/bglwlGfE7/8Gp53R8W3JxfJJBDCUitCgyHkTAWW7WKB/8JwspW2ZRuWo p2jCEDEF+GcKgrwhw88yqf83hutqyye62Z7JBWb0b27GlZ5BZQEL43urFLCBwKl3cfGw hX13qzqZUs8UK3JVlVBJJH9g07n0jVohzFIijJv0u2+Yvx5CTOvORyhjLdnkSeou9htw U6umJXnNJOKNs3BaNXvoaxjs0cHXRd8hK8hJzt3ybYPQ9A1H8WOskTKaB5S0OnrFksLd b6dQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=eBHnQhB2; arc=pass (i=1 spf=pass spfdomain=amazon.com dkim=pass dkdomain=amazon.com dmarc=pass fromdomain=amazon.com); spf=pass (google.com: domain of linux-kernel+bounces-133547-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-133547-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id im16-20020a170902bb1000b001e23779a9edsi1008460plb.512.2024.04.05.13.06.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Apr 2024 13:06:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-133547-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=eBHnQhB2; arc=pass (i=1 spf=pass spfdomain=amazon.com dkim=pass dkdomain=amazon.com dmarc=pass fromdomain=amazon.com); spf=pass (google.com: domain of linux-kernel+bounces-133547-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-133547-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3B5522833D7 for ; Fri, 5 Apr 2024 20:06:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D7B24174EC4; Fri, 5 Apr 2024 20:05:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="eBHnQhB2" Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com [52.119.213.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 268D817333B; Fri, 5 Apr 2024 20:05:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=52.119.213.154 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712347552; cv=none; b=qmTiBoQOgiYwMXh8OGH9ObSiktV4zLMgYvsrTV4fqTC/JXRfghPz9l8E7MPduwT0XpjpAkSEq4FndZ/YJwghCLNaCbqUy0c6P2VG2SslaTq/Kom7tK3nilUqQWc+D9Jy1edYM1Tw1t8QyZYekx6vri6DJtuAYIa4Nh7noQ2rtdM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712347552; c=relaxed/simple; bh=euQkJ98ZCMkpzQJfRErU+YVkLCjzZGATCjhrKap70dM=; h=Subject:From:To:CC:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=kw+UERjVJWJJlfJW1y/NbAnvV+/HyElNAtTW6qUxGFvaRlt2oWbhxEwKpUnNbWDJCJ/F99mnnbjEWDjWhAoIFR4KOuHh29T0xMsyAELgGyAquOvA/dV2VugIB+YlfLL6Ibm4oM25Auu9XbWFV/AXP9sK2Ty3D/bNPvuLtS2/vWw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.com; spf=pass smtp.mailfrom=amazon.com; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b=eBHnQhB2; arc=none smtp.client-ip=52.119.213.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1712347551; x=1743883551; h=from:to:cc:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version:subject; bh=euQkJ98ZCMkpzQJfRErU+YVkLCjzZGATCjhrKap70dM=; b=eBHnQhB2PWq01ovS+15zznLLIuNvDOBpICnoPYHABJkMbadrsKSQxAbo XDp2Bykw2cv137g5Je2cGrXzdWcCbomvBBkC2Ded4XDZ2b3zUcZbKdpR0 ii+si0QXiggqVRJ6vXzwpdxC337KImeSz9GSuRsQ8j7ZwY5e7NgkVkEd6 c=; X-IronPort-AV: E=Sophos;i="6.07,182,1708387200"; d="scan'208";a="196816027" Subject: Re: [PATCH 3/3] arm64: cpuidle: Add arm_poll_idle Thread-Topic: [PATCH 3/3] arm64: cpuidle: Add arm_poll_idle Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev) ([10.43.8.2]) by smtp-border-fw-52004.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2024 20:05:48 +0000 Received: from EX19MTAUWC001.ant.amazon.com [10.0.38.20:27925] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.59.87:2525] with esmtp (Farcaster) id 30190c67-a54a-4195-9bc2-b1a5f548f3b5; Fri, 5 Apr 2024 20:05:47 +0000 (UTC) X-Farcaster-Flow-ID: 30190c67-a54a-4195-9bc2-b1a5f548f3b5 Received: from EX19D002UWA003.ant.amazon.com (10.13.138.235) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Fri, 5 Apr 2024 20:05:46 +0000 Received: from EX19D001UWA003.ant.amazon.com (10.13.138.211) by EX19D002UWA003.ant.amazon.com (10.13.138.235) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.28; Fri, 5 Apr 2024 20:05:45 +0000 Received: from EX19D001UWA003.ant.amazon.com ([fe80::256a:26de:3ee6:48a2]) by EX19D001UWA003.ant.amazon.com ([fe80::256a:26de:3ee6:48a2%7]) with mapi id 15.02.1258.028; Fri, 5 Apr 2024 20:05:45 +0000 From: "Okanovic, Haris" To: "mark.rutland@arm.com" CC: "Silver, Brian" , "peterz@infradead.org" , "linux-pm@vger.kernel.org" , "Saidi, Ali" , "linux-kernel@vger.kernel.org" , "linux-assembly@vger.kernel.org" , "Blake, Geoff" Thread-Index: AQHahJ/D8+a2/m+FEk+Q2bqBNHXo/LFVO5iAgATkcYA= Date: Fri, 5 Apr 2024 20:05:45 +0000 Message-ID: References: <20240402014706.3969151-1-harisokn@amazon.com> <20240402014706.3969151-3-harisokn@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 T24gVHVlLCAyMDI0LTA0LTAyIGF0IDE4OjIzICswMTAwLCBNYXJrIFJ1dGxhbmQgd3JvdGU6DQo+ IENBVVRJT046IFRoaXMgZW1haWwgb3JpZ2luYXRlZCBmcm9tIG91dHNpZGUgb2YgdGhlIG9yZ2Fu aXphdGlvbi4gRG8NCj4gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNz IHlvdSBjYW4gY29uZmlybSB0aGUgc2VuZGVyDQo+IGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNh ZmUuDQo+IA0KPiANCj4gDQo+IE9uIE1vbiwgQXByIDAxLCAyMDI0IGF0IDA4OjQ3OjA2UE0gLTA1 MDAsIEhhcmlzIE9rYW5vdmljIHdyb3RlOg0KPiA+IEFuIGFybTY0IGNwdWlkbGUgZHJpdmVyIHdp dGggdHdvIHN0YXRlczogKDEpIEZpcnN0IHBvbGxzIGZvciBuZXcNCj4gPiBydW5hYmxlDQo+ID4g dGFza3MgdXAgdG8gMTAwIHVzIChieSBkZWZhdWx0KSBiZWZvcmUgKDIpIGEgd2ZpIGlkbGUgYW5k IGF3b2tlbiBieQ0KPiA+IGludGVycnVwdCAodGhlIGN1cnJlbnQgYXJtNjQgYmVoYXZpb3IpLiBJ dCBhbGxvd3MgQ1BVcyB0byByZXR1cm4NCj4gPiBmcm9tDQo+ID4gaWRsZSBtb3JlIHF1aWNrbHkg YnkgYXZvaWRpbmcgdGhlIGxvbmdlciBpbnRlcnJ1cHQgd2FrZXVwIHBhdGgsDQo+ID4gd2hpY2gN Cj4gPiBtYXkgcmVxdWlyZSBFTDEvRUwyIHRyYW5zaXRpb24gaW4gY2VydGFpbiBWTSBzY2VuYXJp b3MuDQo+IA0KPiBQbGVhc2Ugc3RhcnQgb2ZmIHdpdGggYW4gZXhwbGFuYXRpb24gb2YgdGhlIHBy b2JsZW0geW91J3JlIHRyeWluZyB0bw0KPiBzb2x2ZQ0KPiAod2hpY2ggSUlVQyBpcyB0byB3YWtl IHVwIG1vcmUgcXVpY2tseSBpbiBjZXJ0YWluIGNhc2VzKSwgYmVmb3JlDQo+IGRlc2NyaWJpbmcg dGhlDQo+IHNvbHV0aW9uLiBUaGF0IG1ha2VzIGl0ICpzaWduaWZpY2FudGx5KiBlYXNpZXIgZm9y IHBlb3BsZSB0byByZXZpZXcNCj4gdGhpcywgc2luY2UNCj4gb25jZSB5b3UgaGF2ZSB0aGUgcHJv YmxlbSBzdGF0ZW1lbnQgaW4gbWluZCBpdCdzIG11Y2ggZWFzaWVyIHRvDQo+IHVuZGVyc3RhbmQg aG93DQo+IHRoZSBzb2x1dGlvbiBzcGFjZSBmb2xsb3dzIGZyb20gdGhhdC4NCg0KSGkgTWFyaywN Cg0KSSdsbCB0cnkgdG8gY2xhcmlmeToNCg0KVGhpcyBjaGFuZ2UgaW1wcm92ZXMgcGVyZm9ybWFu Y2Ugb2YgY2VydGFpbiBtdWx0aXRocmVhZGVkIHdvcmtsb2Fkcw0KdGhhdCByYXBpZGx5IGN5Y2xl cyB0aHJvdWdoIGJsb2NrZWQvcnVubmluZyBzdGF0ZXMsIGJ5IGF2b2lkaW5nIGENCnJlbGF0aXZl bHkgY29zdGx5IElQSSB3YWtldXAgcGF0aC4NCg0KT25lIGV4YW1wbGUgaXMgVGVuc29yZmxvdyBh cyBkZW1vbnN0YXRlZCBieSB0aGUgYmVuY2htYXJrIHNoYXJlZA0KZWFybGllci4gSXQgZ2VuZXJh dGVzIDI1MGsgcmVzY2hlZHVsZSBJUElzIHBlciBzZWMgb24gQVdTIG03Zy4xNnhsYXJnZQ0KKEdy YXZpdG9uMyBTb0MpIGluIExpbnV4IDYuOS4wLXJjMiwgd2hpY2ggZHJvcHMgdG8gMTIway9zZWMg d2l0aCB0aGlzDQpjaGFuZ2UgYW5kIGEgfjMlIGdhaW4gaW4gdGhyb3VnaHB1dC4NCg0KU29tZSBK YXZhIHdvcmtsb2FkcyBoYXZlIGEgc2ltaWxhciBwYXR0ZXJuLiBGb3IgZXhhbXBsZSwgUmVuaXNz YW5jZQ0KUmVhY3RvcnMgYmVuY2htYXJrIChSZWFjdG9ycy5JTyBmcmFtZXdvcmsgYXBwKSBkcm9w cyBmcm9tIDM3MGsgdG8gODBrDQpJUElzIGFuZCBzZWVzIGEgfjI1JSBsYXRlbmN5IGRyb3AuDQoN ClJlbmlzc2FuY2UgUmVhY3RvcnMgcmVwcm8gc3RlcHMgb24gVWJ1bnR1IDIyLjA0IG9uIEFXUzoN CnN1ZG8gYXB0LWdldCBpbnN0YWxsIGphdmEtY29tbW9uDQp3Z2V0DQpodHRwczovL2NvcnJldHRv LmF3cy9kb3dubG9hZHMvbGF0ZXN0L2FtYXpvbi1jb3JyZXR0by0xNy1hYXJjaDY0LWxpbnV4LWpk ay5kZWINCnN1ZG8gZHBrZyAtaSBhbWF6b24tY29ycmV0dG8tMTctYWFyY2g2NC1saW51eC1qZGsu ZGViDQp3Z2V0DQpodHRwczovL2dpdGh1Yi5jb20vcmVuYWlzc2FuY2UtYmVuY2htYXJrcy9yZW5h aXNzYW5jZS9yZWxlYXNlcy9kb3dubG9hZC92MC4xNS4wL3JlbmFpc3NhbmNlLWdwbC0wLjE1LjAu amFyDQpqYXZhIC1qYXIgcmVuYWlzc2FuY2UtZ3BsLTAuMTUuMC5qYXIgcmVhY3RvcnMg4oCUcmVw ZXRpdGlvbnMgMQ0KDQo+IA0KPiA+IFBvbGwgZHVyYXRpb24gaXMgb3B0aW9uYWxseSBjb25maWd1 cmVkIGF0IGxvYWQgdGltZSB2aWEgdGhlDQo+ID4gcG9sbF9saW1pdA0KPiA+IG1vZHVsZSBwYXJh bWV0ZXIuDQo+IA0KPiBXaHkgc2hvdWxkIHRoaXMgYmUgYSBjb25maWd1cmFibGUgcGFyYW1ldGVy Pw0KPiANCj4gKG5vdGUsIGF0IHRoaXMgcG9pbnQgeW91IGhhdmVuJ3QgaW50cm9kdWNlZCBhbnkg b2YgdGhlIGRhdGEgYmVsb3csIHNvDQo+IHRoZQ0KPiB0cmFkZS1vZmYgaXNuJ3QgY2xlYXIgdG8g YW55b25lKS4NCg0KU29tZSBhcHBsaWNhdGlvbnMgY291bGQgaW1wcm92ZSB3aXRoIGhpZ2hlciBw b2xsIHBlcmlvZHMuIEZvciBleGFtcGxlLA0KVGVuc29yZmxvdyB0aHJvdWdocHV0IGltcHJvdmVz IH4zJSBhdCBhIDEwMHVzKyBwb2xsIGxpbWl0IGFuZCB+MSUgYXQNCjEwdXMgbGltaXQuIEEgY29u ZmlndXJhYmxlIGtub2IgYWxsb3dzIHVzZXJzIHRvIGV4cGVyaW1lbnQgbW9yZSBlYXNpbHkuDQoN ClRoZXJl4oCZcyBhbHNvIG5vIHBlcmZvcm1hbmNlIHBlbmF0bHkgZm9yIGhhdmluZyB0aGUgb3B0 aW9uLiBOZXcgdmFsdWVzDQphcmUgcGF0Y2hlZCBkdXJpbmcgbG9hZCBhbmQgYWxsIG90aGVyIGNv ZGUgcGF0aHMgcmVtYWluIHRoZSBzYW1lLg0KDQo+IA0KPiA+IFRoZSBkZWZhdWx0IDEwMCB1cyBk dXJhdGlvbiB3YXMgZXhwZXJpbWVudGFsbHkgY2hvc2VuLCBieSBtZWFzdXJpbmcNCj4gPiBRUFMN Cj4gPiAocXVlcmllcyBwZXIgc2VjKSBvZiB0aGUgTUxQZXJmIGJlcnQgaW5mZXJlbmNlIGJlbmNo bWFyaywgd2hpY2gNCj4gPiBzZWVtcw0KPiA+IHBhcnRpY3VsYXJseSBzdXNjZXB0aWJsZSB0byB0 aGlzIGNoYW5nZTsgc2VlIHByb2NlZHVyZSBiZWxvdy4gMTAwDQo+ID4gdXMgaXMNCj4gPiB0aGUg aW5mbGVjdGlvbiBwb2ludCB3aGVyZSBRUFMgc3RvcHBlZCBncm93aW5nIGluIGEgcmFuZ2Ugb2Yg dGVzdGVkDQo+ID4gdmFsdWVzLiBBbGwgcmVzdWx0cyBhcmUgZnJvbSBBV1MgbTdnLjE2eGxhcmdl IGluc3RhbmNlcyAoR3Jhdml0b24zDQo+ID4gU29DKQ0KPiA+IHdpdGggZGVkaWNhdGVkIHRlbmFu Y3kgKGRlZGljYXRlZCBoYXJkd2FyZSkuDQo+ID4gDQo+ID4gPiBiZWZvcmUgfCAxMHVzwqAgfCAy NXVzIHwgNTB1cyB8IDEwMHVzIHwgMTI1dXMgfCAxNTB1cyB8IDIwMHVzIHwNCj4gPiA+IDMwMHVz IHwNCj4gPiA+IDUuODfCoMKgIHwgNS45McKgIHwgNS45NiB8IDYuMDEgfCA2LjA2wqAgfCA2LjA3 wqAgfCA2LjA2wqAgfCA2LjA2wqAgfA0KPiA+ID4gNi4wNsKgIHwNCj4gPiANCj4gPiBQZXJmJ3Mg c2NoZWR1bGVyIGJlbmNobWFya3MgYWxzbyBpbXByb3ZlIHdpdGggYSByYW5nZSBvZiBwb2xsX2xp bWl0DQo+ID4gdmFsdWVzID49IDEwIHVzLiBIaWdoZXIgbGltaXRzIHByb2R1Y2UgbmVhciBpZGVu dGljYWwgcmVzdWx0cw0KPiA+IHdpdGhpbiBhDQo+ID4gMyUgbm9pc2UgbWFyZ2luLiBUaGUgZm9s bG93aW5nIHRhYmxlcyBhcmUgYHBlcmYgYmVuY2ggc2NoZWRgDQo+ID4gcmVzdWx0cywNCj4gPiBy dW4gdGltZXMgaW4gc2Vjb25kcy4NCj4gPiANCj4gPiBgcGVyZiBiZW5jaCBzY2hlZCBtZXNzYWdp bmcgLWwgODAwMDBgDQo+ID4gPiBBV1MgaW5zdGFuY2XCoCB8IFNvQ8KgwqDCoMKgwqDCoCB8IEJl Zm9yZSB8IEFmdGVywqAgfCAlIENoYW5nZSB8DQo+ID4gPiBjNmcuMTZ4bCAoVk0pIHwgR3Jhdml0 b24yIHwgMTguOTc0IHwgMTguNDAwIHwgbm9uZcKgwqDCoMKgIHwNCj4gPiA+IGM3Zy4xNnhsIChW TSkgfCBHcmF2aXRvbjMgfCAxMy44NTIgfCAxMy44NTkgfCBub25lwqDCoMKgwqAgfA0KPiA+ID4g YzZnLm1ldGFswqDCoMKgwqAgfCBHcmF2aXRvbjIgfCAxNy42MjEgfCAxNi43NDQgfCBub25lwqDC oMKgwqAgfA0KPiA+ID4gYzdnLm1ldGFswqDCoMKgwqAgfCBHcmF2aXRvbjMgfCAxMy40MzAgfCAx My40MDQgfCBub25lwqDCoMKgwqAgfA0KPiA+IA0KPiA+IGBwZXJmIGJlbmNoIHNjaGVkIHBpcGUg LWwgMjUwMDAwMGANCj4gPiA+IEFXUyBpbnN0YW5jZcKgIHwgU29DwqDCoMKgwqDCoMKgIHwgQmVm b3JlIHwgQWZ0ZXLCoCB8ICUgQ2hhbmdlIHwNCj4gPiA+IGM2Zy4xNnhsIChWTSkgfCBHcmF2aXRv bjIgfCAzMC4xNTggfCAxNS4xODEgfCAtNTAlwqDCoMKgwqAgfA0KPiA+ID4gYzdnLjE2eGwgKFZN KSB8IEdyYXZpdG9uMyB8IDE4LjI4OSB8IDEyLjA2NyB8IC0zNCXCoMKgwqDCoCB8DQo+ID4gPiBj NmcubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMiB8IDE3LjYwOSB8IDE1LjE3MCB8IC0xNCXCoMKg wqDCoCB8DQo+ID4gPiBjN2cubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMyB8IDE0LjEwMyB8IDEy LjMwNCB8IC0xMyXCoMKgwqDCoCB8DQo+ID4gDQo+ID4gYHBlcmYgYmVuY2ggc2NoZWQgc2VjY29t cC1ub3RpZnkgLWwgMjUwMDAwMGANCj4gPiA+IEFXUyBpbnN0YW5jZcKgIHwgU29DwqDCoMKgwqDC oMKgIHwgQmVmb3JlIHwgQWZ0ZXLCoCB8ICUgQ2hhbmdlIHwNCj4gPiA+IGM2Zy4xNnhsIChWTSkg fCBHcmF2aXRvbjIgfCAyOC43ODQgfCAxMy43NTQgfCAtNTIlwqDCoMKgwqAgfA0KPiA+ID4gYzdn LjE2eGwgKFZNKSB8IEdyYXZpdG9uMyB8IDE2Ljk2NCB8IDExLjQzMCB8IC0zMyXCoMKgwqDCoCB8 DQo+ID4gPiBjNmcubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMiB8IDE1LjcxNyB8IDEzLjUzNiB8 IC0xNCXCoMKgwqDCoCB8DQo+ID4gPiBjN2cubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMyB8IDEz LjMwMSB8IDExLjQ5MSB8IC0xNCXCoMKgwqDCoCB8DQo+IA0KPiBPaywgc28gcGVyZiBudW1iZXJz IGZvciBhIGJ1c3kgd29ya2xvYWQgZ28gdXAuDQo+IA0KPiBXaGF0IGhhcHBlbnMgZm9yIGlkbGUg c3RhdGUgcmVzaWRlbmN5IG9uIGEgbW9zdGx5IGlkbGUgc3lzdGVtPw0KDQpJdCBkZWNyZWFzZXMg YnkgYWJvdXQgMC4wMDUlIG9uIEFXUyBtN2cuMTZ4bGFyZ2UgKEdyYXZpdG9uMyBTb0MpLg0KDQo+ IA0KPiA+IFN0ZXBzIHRvIHJ1biBNTFBlcmYgYmVydCBpbmZlcmVuY2Ugb24gVWJ1bnR1IDIyLjA0 Og0KPiA+IMKgc3VkbyBhcHQgaW5zdGFsbCBidWlsZC1lc3NlbnRpYWwgcHl0aG9uMyBweXRob24z LXBpcA0KPiA+IMKgcGlwIGluc3RhbGwgInB5YmluZDExW2dsb2JhbF0iIHRlbnNvcmZsb3fCoCB0 cmFuc2Zvcm1lcnMNCj4gPiDCoGV4cG9ydCBURl9FTkFCTEVfT05FRE5OX09QVFM9MQ0KPiA+IMKg ZXhwb3J0IEROTkxfREVGQVVMVF9GUE1BVEhfTU9ERT1CRjE2DQo+ID4gwqBnaXQgY2xvbmUgaHR0 cHM6Ly9naXRodWIuY29tL21sY29tbW9ucy9pbmZlcmVuY2UuZ2l0wqAtLXJlY3Vyc2l2ZQ0KPiA+ IMKgY2QgaW5mZXJlbmNlDQo+ID4gwqBnaXQgY2hlY2tvdXQgdjIuMA0KPiA+IMKgY2QgbG9hZGdl bg0KPiA+IMKgQ0ZMQUdTPSItc3RkPWMrKzE0IiBweXRob24zIHNldHVwLnB5IGJkaXN0X3doZWVs DQo+ID4gwqBwaXAgaW5zdGFsbCBkaXN0Lyoud2hsDQo+ID4gwqBjZCAuLi9sYW5ndWFnZS9iZXJ0 DQo+ID4gwqBtYWtlIHNldHVwDQo+ID4gwqBweXRob24zIHJ1bi5weSAtLWJhY2tlbmQ9dGYgLS1z Y2VuYXJpbz1TaW5nbGVTdHJlYW0NCj4gPiANCj4gPiBTdWdnZXN0ZWQtYnk6IEFsaSBTYWlkaSA8 YWxpc2FpZGlAYW1hem9uLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogQWxpIFNhaWRpIDxhbGlzYWlk aUBhbWF6b24uY29tPg0KPiA+IFJldmlld2VkLWJ5OiBHZW9mZiBCbGFrZSA8Ymxha2dlb2ZAYW1h em9uLmNvbT4NCj4gPiBDYzogQnJpYW4gU2lsdmVyIDxzaWx2ZXJickBhbWF6b24uY29tPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IEhhcmlzIE9rYW5vdmljIDxoYXJpc29rbkBhbWF6b24uY29tPg0KPiA+ IC0tLQ0KPiA+IMKgZHJpdmVycy9jcHVpZGxlL0tjb25maWcuYXJtwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDEzICsrDQo+ID4gwqBkcml2ZXJzL2NwdWlkbGUvTWFrZWZpbGXCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoCAxICsNCj4gPiDCoGRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFy bS1wb2xsaW5nLmMgfCAxNzENCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+IMKg MyBmaWxlcyBjaGFuZ2VkLCAxODUgaW5zZXJ0aW9ucygrKQ0KPiA+IMKgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiANCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9jcHVpZGxlL0tjb25maWcuYXJtDQo+ID4gYi9kcml2ZXJzL2NwdWlk bGUvS2NvbmZpZy5hcm0NCj4gPiBpbmRleCBhMWVlNDc1ZDE4MGQuLjQ4NDY2NmRkYTM4ZCAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy5hcm0NCj4gPiArKysgYi9kcml2 ZXJzL2NwdWlkbGUvS2NvbmZpZy5hcm0NCj4gPiBAQCAtMTQsNiArMTQsMTkgQEAgY29uZmlnIEFS TV9DUFVJRExFDQo+ID4gwqDCoMKgwqDCoMKgwqAgaW5pdGlhbGl6ZWQgYnkgY2FsbGluZyB0aGUg Q1BVIG9wZXJhdGlvbnMgaW5pdCBpZGxlIGhvb2sNCj4gPiDCoMKgwqDCoMKgwqDCoCBwcm92aWRl ZCBieSBhcmNoaXRlY3R1cmUgY29kZS4NCj4gPiANCj4gPiArY29uZmlnIEFSTV9QT0xMX0NQVUlE TEUNCj4gPiArwqDCoMKgwqAgYm9vbCAiQVJNNjQgQ1BVIGlkbGUgRHJpdmVyIHdpdGggcG9sbGlu ZyINCj4gPiArwqDCoMKgwqAgZGVwZW5kcyBvbiBBUk02NA0KPiA+ICvCoMKgwqDCoCBkZXBlbmRz IG9uIEFSTV9BUkNIX1RJTUVSX0VWVFNUUkVBTQ0KPiA+ICvCoMKgwqDCoCBzZWxlY3QgQ1BVX0lE TEVfTVVMVElQTEVfRFJJVkVSUw0KPiA+ICvCoMKgwqDCoCBoZWxwDQo+ID4gK8KgwqDCoMKgwqDC oCBTZWxlY3QgdGhpcyB0byBlbmFibGUgYSBwb2xsaW5nIGNwdWlkbGUgZHJpdmVyIGZvciBBUk02 NDoNCj4gPiArwqDCoMKgwqDCoMKgIFRoZSBmaXJzdCBzdGF0ZSBwb2xscyBUSUZfTkVFRF9SRVND SEVEIGZvciBiZXN0IGxhdGVuY3kgb24NCj4gPiBzaG9ydA0KPiA+ICvCoMKgwqDCoMKgwqAgc2xl ZXAgaW50ZXJ2YWxzLiBUaGUgc2Vjb25kIHN0YXRlIGZhbGxzIGJhY2sgdG8NCj4gPiBhcmNoX2Nw dV9pZGxlKCkgdG8NCj4gPiArwqDCoMKgwqDCoMKgIHdhaXQgZm9yIGludGVycnVwdC4gVGhpcyBp cyBjYW4gYmUgaGVscGZ1bCBpbiB3b3JrbG9hZHMNCj4gPiB0aGF0DQo+ID4gK8KgwqDCoMKgwqDC oCBmcmVxdWVudGx5IGJsb2NrL3dha2UgYXQgc2hvcnQgaW50ZXJ2YWxzIG9yIFZNcyB3aGVyZQ0K PiA+IHdha2V1cCBJUElzDQo+ID4gK8KgwqDCoMKgwqDCoCBhcmUgbW9yZSBleHBlbnNpdmUuDQo+ IA0KPiBXaHkgaXMgdGhpcyBhIHNlcGFyYXRlIGRyaXZlciByYXRoZXIgdGhhbiBhbiBvcHRpb25h bCBmZWF0dXJlIGluIHRoZQ0KPiBleGlzdGluZw0KPiBkcml2ZXI/DQo+IA0KPiBUaGUgZmFjdCB0 aGF0IHRoaXMgZHVwbGljYXRlcyBhIGJ1bmNoIG9mIGNvZGUgaW5kaWNhdGVzIHRvIG1lIHRoYXQN Cj4gdGhpcyBzaG91bGQNCj4gbm90IGJlIGEgc2VwYXJhdGUgZHJpdmVyLg0KDQpJJ2xsIGV4cGxv cmUgdXNpbmcgQW5rdXIgQXJvcmHigJlzIGhhbHRwb2xsIGNoYW5nZXMgb24gQVdTIEdyYXZpdG9u OyBzZWUNCnJlbGF0ZWQgdGhyZWFkLg0KDQo+IA0KPiA+ICsNCj4gPiDCoGNvbmZpZyBBUk1fUFND SV9DUFVJRExFDQo+ID4gwqDCoMKgwqDCoCBib29sICJQU0NJIENQVSBpZGxlIERyaXZlciINCj4g PiDCoMKgwqDCoMKgIGRlcGVuZHMgb24gQVJNX1BTQ0lfRlcNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9jcHVpZGxlL01ha2VmaWxlIGIvZHJpdmVycy9jcHVpZGxlL01ha2VmaWxlDQo+ID4gaW5k ZXggZDEwMzM0MmI3Y2ZjLi4yM2MyMTQyMjc5MmQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9j cHVpZGxlL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9jcHVpZGxlL01ha2VmaWxlDQo+ID4g QEAgLTIyLDYgKzIyLDcgQEAgb2JqLSQoQ09ORklHX0FSTV9VODUwMF9DUFVJRExFKcKgwqDCoMKg wqDCoMKgwqAgKz0NCj4gPiBjcHVpZGxlLXV4NTAwLm8NCj4gPiDCoG9iai0kKENPTkZJR19BUk1f QVQ5MV9DUFVJRExFKcKgwqDCoMKgwqDCoMKgwqDCoCArPSBjcHVpZGxlLWF0OTEubw0KPiA+IMKg b2JqLSQoQ09ORklHX0FSTV9FWFlOT1NfQ1BVSURMRSnCoMKgwqDCoMKgwqDCoCArPSBjcHVpZGxl LWV4eW5vcy5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJNX0NQVUlETEUpwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCArPSBjcHVpZGxlLWFybS5vDQo+ID4gK29iai0kKENPTkZJR19BUk1fUE9MTF9DUFVJ RExFKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gY3B1aWRsZS1hcm0tDQo+ID4gcG9s bGluZy5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJNX1BTQ0lfQ1BVSURMRSnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICs9IGNwdWlkbGUtcHNjaS5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJN X1BTQ0lfQ1BVSURMRV9ET01BSU4pwqDCoMKgwqDCoMKgwqAgKz0gY3B1aWRsZS1wc2NpLQ0KPiA+ IGRvbWFpbi5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJNX1RFR1JBX0NQVUlETEUpwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKz0gY3B1aWRsZS10ZWdyYS5vDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiBiL2RyaXZlcnMvY3B1aWRs ZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uYmNhMTI4NTY4MTE0DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2RyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiBAQCAtMCwwICsx LDE3MSBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsv Kg0KPiA+ICsgKiBBUk02NCBDUFUgaWRsZSBkcml2ZXIgdXNpbmcgd2ZlIHBvbGxpbmcNCj4gPiAr ICoNCj4gPiArICogQ29weXJpZ2h0IDIwMjQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxp YXRlcy4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLg0KPiA+ICsgKg0KPiA+ICsgKiBBdXRob3Jz Og0KPiA+ICsgKsKgwqAgSGFyaXMgT2thbm92aWMgPGhhcmlzb2tuQGFtYXpvbi5jb20+DQo+ID4g KyAqwqDCoCBCcmlhbiBTaWx2ZXIgPHNpbHZlcmJyQGFtYXpvbi5jb20+DQo+ID4gKyAqDQo+ID4g KyAqIEJhc2VkIG9uIGNwdWlkbGUtYXJtLmMNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE0IEFS TSBMdGQuDQo+ID4gKyAqIEF1dGhvcjogTG9yZW56byBQaWVyYWxpc2kgPGxvcmVuem8ucGllcmFs aXNpQGFybS5jb20+DQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2NwdS5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY3B1X2Nvb2xpbmcuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2NwdWlkbGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkL2Nsb2NrLmg+DQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSA8YXNtL2NwdWlkbGUuaD4NCj4gPiArI2luY2x1ZGUgPGFzbS9yZWFk ZXguaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJkdF9pZGxlX3N0YXRlcy5oIg0KPiA+ICsNCj4g PiArLyogTWF4IGR1cmF0aW9uIG9mIHRoZSB3ZmUoKSBwb2xsIGxvb3AgaW4gdXMsIGJlZm9yZSB0 cmFuc2l0aW9uaW5nDQo+ID4gdG8NCj4gPiArICogYXJjaF9jcHVfaWRsZSgpL3dmaSgpIHNsZWVw Lg0KPiA+ICsgKi8NCj4gDQo+IC8qDQo+IMKgKiBDb21tZW50cyBzaG91bGQgaGF2ZSB0aGUgbGVh ZGluZyAnLyonIG9uIGEgc2VwYXJhdGUgbGluZS4NCj4gwqAqIFNlZQ0KPiBodHRwczovL3d3dy5r ZXJuZWwub3JnL2RvYy9odG1sL3Y2LjgvcHJvY2Vzcy9jb2Rpbmctc3R5bGUuaHRtbCNjb21tZW50 aW5nDQo+IMKgKi8NCj4gDQo+ID4gKyNkZWZpbmUgREVGQVVMVF9QT0xMX0xJTUlUX1VTIDEwMA0K PiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IHBvbGxfbGltaXQgX19yZWFkX21vc3RseSA9DQo+ID4g REVGQVVMVF9QT0xMX0xJTUlUX1VTOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogYXJtX2lkbGVf d2ZlX3BvbGwgLSBQb2xscyBzdGF0ZSBpbiB3ZmUgbG9vcCB1bnRpbCByZXNjaGVkdWxlIGlzDQo+ ID4gKyAqIG5lZWRlZCBvciB0aW1lb3V0DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IF9fY3B1 aWRsZSBhcm1faWRsZV93ZmVfcG9sbChzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldiwNCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnYsIGludCBpZHgpDQo+ID4gK3sNCj4gPiArwqDCoMKg wqAgdTY0IHRpbWVfc3RhcnQsIHRpbWVfbGltaXQ7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCB0aW1l X3N0YXJ0ID0gbG9jYWxfY2xvY2soKTsNCj4gPiArwqDCoMKgwqAgZGV2LT5wb2xsX3RpbWVfbGlt aXQgPSBmYWxzZTsNCj4gPiArDQo+ID4gK8KgwqDCoMKgIGxvY2FsX2lycV9lbmFibGUoKTsNCj4g DQo+IFdoeSBlbmFibGUgSVJRcyBoZXJlPyBXZSBkb24ndCBkbyB0aGF0IGluIHRoZSByZWd1bGFy IGNwdWlkbGUtYXJtDQo+IGRyaXZlciwgbm9yDQo+IHRoZSBjcHVpZGxlLXBzY2kgZHJpdmVyLCBh bmQgdGhlcmUncyBubyBleHBsYW5hdGlvbiBoZXJlIG9yIGluIHRoZQ0KPiBjb21taXQgbWVzc2Fn ZS4NCj4gDQo+IEhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBSQ1U/IElzIHRoYXQgc3RpbGwg d2F0Y2hpbmcgb3IgYXJlIHdlIGluDQo+IGFuDQo+IGV4dGVuZGVkIHF1aWVzY2VudCBzdGF0ZT8g Rm9yIFBTQ0kgaWRsZSBzdGF0ZXMgd2UgZW50ZXIgYW4gRVFTLCBhbmQNCj4gaXQgc2VlbXMNCj4g bGlrZSB3ZSBwcm9iYWJseSBzaG91bGQgaGVyZS4uLg0KDQpJJ2xsIGNpcmNsZSBiYWNrIHRvIHlv dXIgY29kZSBjb21tZW50cyAoaGVyZSBhbmQgZWxzZXdoZXJlKSBpZiB3ZQ0KcHJvY2VlZGUgd2l0 aCB0aGlzIHBhdGNoIGluc3RlYWQgb2YgQW5rdXIncy4NCg0KPiANCj4gPiArDQo+ID4gK8KgwqDC oMKgIGlmIChjdXJyZW50X3NldF9wb2xsaW5nX2FuZF90ZXN0KCkpDQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIGVuZDsNCj4gPiArDQo+ID4gK8KgwqDCoMKgIHRpbWVfbGltaXQg PSBjcHVpZGxlX3BvbGxfdGltZShkcnYsIGRldik7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCBkbyB7 DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBleGNsdXNpdmUgcmVhZCBhcm1zIHRo ZSBtb25pdG9yIGZvciB3ZmUNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChfX1JF QURfT05DRV9FWChjdXJyZW50X3RocmVhZF9pbmZvKCktPmZsYWdzKSAmDQo+ID4gX1RJRl9ORUVE X1JFU0NIRUQpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z290byBlbmQ7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gbWF5IGV4 aXQgcHJlbWF0dXJlbHksIHNlZSBBUk1fQVJDSF9USU1FUl9FVlRTVFJFQU0NCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHdmZSgpOw0KPiA+ICvCoMKgwqDCoCB9IHdoaWxlIChsb2NhbF9j bG9jaygpIC0gdGltZV9zdGFydCA8IHRpbWVfbGltaXQpOw0KPiANCj4gLi4uIGFuZCBpZiB0aGUg RVZUU1RSRUFNIGlzIGRpc2FibGVkLCB3ZSdsbCBzaXQgaW4gV0ZFIGZvcmV2ZXIgcmF0aGVyDQo+ IHRoYW4NCj4gZW50ZXJpbmcgYSBkZWVwZXIgaWRsZSBzdGF0ZSwgd2hpY2ggZG9lc24ndCBzZWVt IGRlc2lyYWJsZS4NCg0KSSB0b29rIGEgZGVwZG5lbmN5IG9uIEFSTV9BUkNIX1RJTUVSX0VWVFNU UkVBTSBpbiBLY29uZmlnLmFybSB0byBlbnN1cmUNCmV2ZW50IHN0cmVhbSBpcyBlbmFibGVkLg0K DQo+IA0KPiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IG5vdyB0aGF0IHdlIGhhdmUgV0ZFVCwgd2Un bGwgcHJvYmFibHkgd2FudCB0bw0KPiBkaXNhYmxlDQo+IHRoZSBFVlRTVFJFQU0gYnkgZGVmYXVs dCBhdCBzb21lIHBvaW50LCBhdCBsZWFzdCBpbiBzb21lDQo+IGNvbmZpZ3VyYXRpb25zLCBzaW5j ZQ0KPiB0aGF0J2xsIGJlIGFibGUgdG8gc2l0IGluIGEgV0ZFIHN0YXRlIGZvciBsb25nZXIgd2hp bGUgYWxzbyByZWxpYWJseQ0KPiB3YWtpbmcgdXANCj4gd2hlbiByZXF1aXJlZC4NCj4gDQo+IEkg c3VzcGVjdCB3ZSB3YW50IHNvbWV0aGluZyBsaWtlIGFuIHNtcF9sb2FkX2FjcXVpcmVfdGltZW91 dCgpIGhlcmUNCj4gdG8gZG8gdGhlDQo+IHdhaXQgaW4gYXJjaCBjb2RlIChhbGxvd2luZyB1cyB0 byB1c2UgV0ZFVCksIGFuZCBlbmFibGluZyB0aGlzIHN0YXRlDQo+IHdpbGwNCj4gZGVwZW5kIG9u IGVpdGhlciBoYXZpbmcgV0ZFVCBvciBFVlRTVFJFQU0uDQo+IA0KPiA+ICsNCj4gPiArwqDCoMKg wqAgZGV2LT5wb2xsX3RpbWVfbGltaXQgPSB0cnVlOw0KPiA+ICsNCj4gPiArZW5kOg0KPiA+ICvC oMKgwqDCoCBjdXJyZW50X2Nscl9wb2xsaW5nKCk7DQo+ID4gK8KgwqDCoMKgIHJldHVybiBpZHg7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIGFybV9pZGxlX3dmaSAtIFBsYWNlcyBj cHUgaW4gbG93ZXIgcG93ZXIgc3RhdGUgdW50aWwgaW50ZXJydXB0LA0KPiA+ICsgKiBhIGZhbGxi YWNrIHRvIHBvbGxpbmcNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgX19jcHVpZGxlIGFybV9p ZGxlX3dmaShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldiwNCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGNwdWlkbGVf ZHJpdmVyICpkcnYsIGludCBpZHgpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqAgaWYgKGN1cnJlbnRf Y2xyX3BvbGxpbmdfYW5kX3Rlc3QoKSkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bG9jYWxfaXJxX2VuYWJsZSgpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IGlkeDsNCj4gPiArwqDCoMKgwqAgfQ0KPiANCj4gU2FtZSBhcyBhYm92ZSwgd2h5IGVuYWJsZSBJ UlFzIGhlcmU/DQo+IA0KPiA+ICvCoMKgwqDCoCBhcmNoX2NwdV9pZGxlKCk7DQo+ID4gK8KgwqDC oMKgIHJldHVybiBpZHg7DQo+IA0KPiAuLi4gYW5kIGlmIHdlIG5lZWQgdG8gZW5hYmxlIElSUXMg aW4gdGhlIG90aGVyIGNhc2VzIGFib3ZlLCB3aHkgZG8gd2UNCj4gKm5vdCoNCj4gbmVlZCB0byBl bmFibGUgdGhlbSBoZXJlPw0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBj cHVpZGxlX2RyaXZlciBhcm1fcG9sbF9pZGxlX2RyaXZlciBfX2luaXRkYXRhID0gew0KPiA+ICvC oMKgwqDCoCAubmFtZSA9ICJhcm1fcG9sbF9pZGxlIiwNCj4gPiArwqDCoMKgwqAgLm93bmVyID0g VEhJU19NT0RVTEUsDQo+ID4gK8KgwqDCoMKgIC5zdGF0ZXMgPSB7DQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLmVudGVywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGFybV9pZGxl X3dmZV9wb2xsLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC5leGl0X2xhdGVuY3nCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDAsDQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnRhcmdldF9yZXNpZGVuY3nCoMKgwqDCoMKg wqAgPSAwLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5l eGl0X2xhdGVuY3lfbnPCoMKgwqDCoMKgwqDCoCA9IDAsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnBvd2VyX3VzYWdlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA9IFVJTlRfTUFYLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5mbGFnc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPQ0KPiA+IENQVUlE TEVfRkxBR19QT0xMSU5HLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5uYW1lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gIldGRSIs DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRlc2PCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAiQVJNIFdGRSIsDQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgew0K PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5lbnRlcsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBhcm1faWRsZV93ZmksDQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmV4aXRfbGF0ZW5jecKgwqDCoMKg wqDCoMKgwqDCoMKgID0NCj4gPiBERUZBVUxUX1BPTExfTElNSVRfVVMsDQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnRhcmdldF9yZXNpZGVuY3nCoMKgwqDC oMKgwqAgPQ0KPiA+IERFRkFVTFRfUE9MTF9MSU1JVF9VUywNCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAucG93ZXJfdXNhZ2XCoMKgwqDCoMKgwqDCoMKgwqDC oMKgID0gVUlOVF9NQVgsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLm5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAiV0ZJIiwN Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZGVzY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9ICJBUk0gV0ZJIiwNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+ID4gK8KgwqDCoMKgIH0sDQo+ID4gK8KgwqDCoMKgIC5z dGF0ZV9jb3VudCA9IDIsDQo+ID4gK307DQo+IA0KPiBIb3cgZG9lcyB0aGlzIGludGVyYWN0IHdp dGggdGhlIGV4aXN0aW5nIGRyaXZlcj8NCj4gDQo+IEhvdyBkb2VzIERFRkFVTFRfUE9MTF9MSU1J VF9VUyBjb21wYXJlIHdpdGggUFNDSSBpZGxlIHN0YXRlcz8NCj4gDQo+ID4gKw0KPiA+ICsvKg0K PiA+ICsgKiBhcm1fcG9sbF9pbml0X2NwdSAtIEluaXRpYWxpemVzIGFybSBjcHVpZGxlIHBvbGxp bmcgZHJpdmVyIGZvcg0KPiA+IG9uZSBjcHUNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgX19p bml0IGFybV9wb2xsX2luaXRfY3B1KGludCBjcHUpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqAgaW50 IHJldDsNCj4gPiArwqDCoMKgwqAgc3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnY7DQo+ID4gKw0K PiA+ICvCoMKgwqDCoCBkcnYgPSBrbWVtZHVwKCZhcm1fcG9sbF9pZGxlX2RyaXZlciwgc2l6ZW9m KCpkcnYpLA0KPiA+IEdGUF9LRVJORUwpOw0KPiA+ICvCoMKgwqDCoCBpZiAoIWRydikNCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArwqDC oMKgwqAgZHJ2LT5jcHVtYXNrID0gKHN0cnVjdCBjcHVtYXNrICopY3B1bWFza19vZihjcHUpOw0K PiA+ICvCoMKgwqDCoCBkcnYtPnN0YXRlc1sxXS5leGl0X2xhdGVuY3kgPSBwb2xsX2xpbWl0Ow0K PiA+ICvCoMKgwqDCoCBkcnYtPnN0YXRlc1sxXS50YXJnZXRfcmVzaWRlbmN5ID0gcG9sbF9saW1p dDsNCj4gPiArDQo+ID4gK8KgwqDCoMKgIHJldCA9IGNwdWlkbGVfcmVnaXN0ZXIoZHJ2LCBOVUxM KTsNCj4gPiArwqDCoMKgwqAgaWYgKHJldCkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcHJfZXJyKCJmYWlsZWQgdG8gcmVnaXN0ZXIgZHJpdmVyOiAlZCwgY3B1ICVkXG4iLA0KPiA+ IHJldCwgY3B1KTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2tmcmVl X2RydjsNCj4gPiArwqDCoMKgwqAgfQ0KPiA+ICsNCj4gPiArwqDCoMKgwqAgcHJfaW5mbygicmVn aXN0ZXJlZCBkcml2ZXIgY3B1ICVkXG4iLCBjcHUpOw0KPiANCj4gVGhpcyBkb2VzIG5vdCBuZWVk IHRvIGJlIHByaW50ZWQgZm9yIGVhY2ggQ1BVLg0KPiANCj4gTWFyay4NCj4gDQo+ID4gKw0KPiA+ ICvCoMKgwqDCoCBjcHVpZGxlX2Nvb2xpbmdfcmVnaXN0ZXIoZHJ2KTsNCj4gPiArDQo+ID4gK8Kg wqDCoMKgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArb3V0X2tmcmVlX2RydjoNCj4gPiArwqDCoMKg wqAga2ZyZWUoZHJ2KTsNCj4gPiArwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoNCj4gPiArICogYXJtX3BvbGxfaW5pdCAtIEluaXRpYWxpemVzIGFybSBjcHVpZGxl IHBvbGxpbmcgZHJpdmVyDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IF9faW5pdCBhcm1fcG9s bF9pbml0KHZvaWQpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqAgaW50IGNwdSwgcmV0Ow0KPiA+ICvC oMKgwqDCoCBzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRydjsNCj4gPiArwqDCoMKgwqAgc3RydWN0 IGNwdWlkbGVfZGV2aWNlICpkZXY7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCBmb3JfZWFjaF9wb3Nz aWJsZV9jcHUoY3B1KSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBhcm1f cG9sbF9pbml0X2NwdShjcHUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJl dCkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91 dF9mYWlsOw0KPiA+ICvCoMKgwqDCoCB9DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCByZXR1cm4gMDsN Cj4gPiArDQo+ID4gK291dF9mYWlsOg0KPiA+ICvCoMKgwqDCoCBwcl9pbmZvKCJkZS1yZWdpc3Rl ciBhbGwiKTsNCj4gPiArwqDCoMKgwqAgd2hpbGUgKC0tY3B1ID49IDApIHsNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRldiA9IHBlcl9jcHUoY3B1aWRsZV9kZXZpY2VzLCBjcHUpOw0K PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJ2ID0gY3B1aWRsZV9nZXRfY3B1X2RyaXZl cihkZXYpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3B1aWRsZV91bnJlZ2lzdGVy KGRydik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShkcnYpOw0KPiA+ICvC oMKgwqDCoCB9DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICttb2R1bGVfcGFyYW0ocG9sbF9saW1pdCwgdWludCwgMDQ0NCk7DQo+ID4gK2Rldmlj ZV9pbml0Y2FsbChhcm1fcG9sbF9pbml0KTsNCj4gPiAtLQ0KPiA+IDIuMzQuMQ0KPiA+IA0KPiA+ IA0KDQpUaGFua3MsDQpIYXJpcyBPa2Fub3ZpYw0KDQo=