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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDFD6C19F2A for ; Thu, 11 Aug 2022 21:53:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235884AbiHKVxw (ORCPT ); Thu, 11 Aug 2022 17:53:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32790 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233840AbiHKVxv (ORCPT ); Thu, 11 Aug 2022 17:53:51 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CDF19C2EF for ; Thu, 11 Aug 2022 14:53:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1660254829; x=1691790829; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=irYT8osmMXiHIbH+wvGyRvRks0P+hmPkbKXHY6RJ5mQ=; b=O8LPNfzOMgaR9Im+QTah8zpkKGPcfQvQZwYWmhmU90IPQBlY330kn0dd okoY0qWVlOT7sRoBaOtLj7Xln2prGOu5V4jZz24UClDg3peTaWhzSVYWl RZpuBITjeD2yJufxiG3646b8/nPSqWRSDFOsUGs5XooA2HcIGblK5WMrx bNnexeEeT2Kaxheby039VkQtyVA/7PEdY4BpoWFrPTAU/Cp1dOmV5XkJ1 jhFJ3R81rm02Z/18fUzJ7OVE6qdjAa/ANwrOEkDD83+NfIIg/hcM0m8IK Q3tV8sgNocF9JgbxYOC43rloKv391I/kXsF8N0uo/b8+k7VWpC600plTM w==; X-IronPort-AV: E=McAfee;i="6400,9594,10436"; a="292262341" X-IronPort-AV: E=Sophos;i="5.93,231,1654585200"; d="scan'208";a="292262341" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 14:53:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,231,1654585200"; d="scan'208";a="665564339" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP; 11 Aug 2022 14:53:48 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Thu, 11 Aug 2022 14:53:47 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28 via Frontend Transport; Thu, 11 Aug 2022 14:53:47 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Thu, 11 Aug 2022 14:53:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c9Mx5CkXMg1wCjbMW8dfHSyJy9F2tMAQOithvH8W2aplu3jw6kFkzjViNyG+Pt2tR+fM2Y9lAOjf70zdKs1kkJ9i+ikErosXVUUE3cTaOVFomDSSmAnwB96S747OEVPa5uHsYzc+mDCzxnJACbWc9ISVAvwjBbbJ2Cl2dZJwSsTS4SVopSU0dJOgjVVkYhc8OwIZPCsCi7hfnhg4H7od53km6/fO8aBcF0jzXVO9GejR/gUfDO9BX77Kz5/41A/97Ex+JnschC26F7bVbcMjRwLkaZxdpd7IyEoZmGpDUQ4ed4yzy6yhl5BKp+CdXvXDorPs6EL3FVzqLKzF7T3LkQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=irYT8osmMXiHIbH+wvGyRvRks0P+hmPkbKXHY6RJ5mQ=; b=FJscJbMsQ/oNPZkLGTTlpYXs4pYbQK4kTjdyGr9X2vwn1aaVeOJlKAUU4qj1G5k02Z+RqkOGgKbq9SN5JVxADkdVzVR3SGRRUpl8mcRKbokmMEGyiDMEKHcm8y2SPechz2vzA+JAwBdRDPivBec/tLp7KJvDt65aM+xFjFXxKoUxPv28pkiwuYI3rlDTHDK3G2Am55bsip7vOKCeSeAK8sv9ATVi5exC3dWvZSVqqbMEOesZ0IM8Cr6v6qdQ4w08fK6TfKEQk8kpvc+hKMu5sxyxNIabI37OhnUa1wN8gzmivc4tTj9OFzoxm0RvwDui7FKOseE1Z+P8Z82JKdUTiw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN2PR11MB3999.namprd11.prod.outlook.com (2603:10b6:208:154::32) by SN7PR11MB7114.namprd11.prod.outlook.com (2603:10b6:806:299::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Thu, 11 Aug 2022 21:53:36 +0000 Received: from MN2PR11MB3999.namprd11.prod.outlook.com ([fe80::1c88:c1bd:6295:cba4]) by MN2PR11MB3999.namprd11.prod.outlook.com ([fe80::1c88:c1bd:6295:cba4%7]) with mapi id 15.20.5504.020; Thu, 11 Aug 2022 21:53:36 +0000 From: "Verma, Vishal L" To: "Williams, Dan J" , "linux-cxl@vger.kernel.org" CC: "Schofield, Alison" , "Jiang, Dave" , "nvdimm@lists.linux.dev" , "Weiny, Ira" Subject: Re: [ndctl PATCH v2 06/10] cxl: add a 'create-region' command Thread-Topic: [ndctl PATCH v2 06/10] cxl: add a 'create-region' command Thread-Index: AQHYrQ5GBNUDrbpRYUelsiXXwbve/q2qGJIAgAAm7YA= Date: Thu, 11 Aug 2022 21:53:36 +0000 Message-ID: <128f99454b44519c6ab356b680206232b5e597ba.camel@intel.com> References: <20220810230914.549611-1-vishal.l.verma@intel.com> <20220810230914.549611-7-vishal.l.verma@intel.com> <62f559b843501_3ce6829439@dwillia2-xfh.jf.intel.com.notmuch> In-Reply-To: <62f559b843501_3ce6829439@dwillia2-xfh.jf.intel.com.notmuch> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4 (3.44.4-1.fc36) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9c98e735-4dde-4f7c-67e3-08da7be3f14f x-ms-traffictypediagnostic: SN7PR11MB7114:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: u1qAzJ1c4SecoUT729cHckmjIOCzwx5cA9Oa4WxoSuocMtdi2rR3FgJag19uyPX6oIV99fUux4XnvTMZEIZfKFFM2FpVagN2aWzS59U6rkMWyQM1YcMrePPaW+Ppg6At+d5K0eAVt75YaCGYGBJ5Hzu/8PUgBL+he30hBv+8vwqwukXRc8zQZ5zDjt22djk8SjGtRwIlGWyTDdQNMZ+uQE0lqzaRcdKa/iRV61bsEQjRr8HHAoOZqLnHu7Zjfkcis1TV/ljq4oVEb6jFhZW3fisLd+DakgsaEPvCtDBWEngROX78cxzhe64M9ToOtp3mAd6RCamkQbMZeb8rKnlijY5g2aBrQQ/QLLnIn85w8Fy8PHGrTjq/CChJZUr5K24iP2ZnuQpjwVSg7b9+cRv01GyhQi06pJ9G3+F/yl/LY7qoBLUTGwVQnDOK2B5yXjtk6w0BfQoW3QJnrT+qMr0fJM7NJMGjV49V+9C7dhs6M3+5H80EfT1x7VbiBkfoXmhNGOwCRLvA3R8WJltJ7rj4UWw9QifjMFk2wySo8DACcBBKdAIC4ltBomrWzuO+r//Gvp8ZG+cE3YYvOcRz26NRCs3the5DOECYR39pVFmof8eHJAZr4qsgeRHKA/6uQ5IDsMpyKww8Wmo0Z/Yw4mn8r2vmG5paMhdTo22GCUHqYCa5qjB/6Vh+f4oz8ikz7dSjW8Sj5sjTiY52+1/yfcfj5mkfV5T7gbpapnv+fqrPrY4BeAP8yxhhf66ezlMFaEjOXLyEpeur40TGAU8mR3lq9HuDH+oSZriPtBCueZK9pzKH4V08gpqq/fYTgyuBhj1zwsJxgcKSxoSjSlmbfA05vw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB3999.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(39860400002)(376002)(366004)(136003)(396003)(346002)(38100700002)(966005)(122000001)(478600001)(26005)(6486002)(8676002)(41300700001)(186003)(2906002)(107886003)(4326008)(2616005)(6506007)(6512007)(64756008)(66476007)(91956017)(66446008)(83380400001)(76116006)(316002)(36756003)(54906003)(110136005)(71200400001)(5660300002)(30864003)(8936002)(38070700005)(86362001)(82960400001)(66556008)(66946007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SVU4UllTLzdVb2tFOUhlOGthQ21ad2t6V1RjQVcva2F6OWRzRzQrTVgvSHpX?= =?utf-8?B?eDJxSWQxRTByeXgwTThaSXdsMkpOOHVlODlhbm5obEFnbU9DUysvNHlvMm04?= =?utf-8?B?ZDY2RVdXR3hWM1VVMnU0SkFYNGRmUUx2eHp1d3I4UkhKekFqMXQ2cll2WFc5?= =?utf-8?B?OXFEZnRTcWV5YmF3eUtxVCtsUm8wVWwxa2ZoQ3MrQ1R4ZGZnRHpvRm9Ic2pr?= =?utf-8?B?M1dOaE1rcjBkSWFSelJZcGlUZGV6cVRXczhKalAraXVaKzhMRUVzTmcxbElx?= =?utf-8?B?M3pEZWNrSmZTK0crb056TWQ4VktEbGFxZXV0eXAwd0k2cTg3QnZDbnlZWnVa?= =?utf-8?B?SENwMlhjaktLc25SUVVjcjlIN1g3c3dYRmNPK1RZS20zTzBsUm5TemdYbU9t?= =?utf-8?B?aW9GVzdpRUt2aEZ1KzRoaldVcW5oZllyTHhkeEZwNDE3ekw3bzMvUVFnaldu?= =?utf-8?B?Wkl3a2ZHbWd2bFMxSGl1SjYyWmc0YlFrRVQrZnRKTytmNG5TOVVnaVJvS0l3?= =?utf-8?B?aFh6T05ZQWFFQVdCaGVFQVRCcGV5Y0I5QzBWT1laeXhoWnBqZnQzVU9yRUx3?= =?utf-8?B?QUpyVGFjdlFkVGdONndLellmSjNtSHltbUovbzdnQldCakVhYzVPYzJ6Vjgx?= =?utf-8?B?V0V2QkJ1allHS3pRcWJCZjdmcHhmamk0YXJ5Q1VoZll6YWxIY1JmdHJPcVQ1?= =?utf-8?B?b0ZFYzZVZjVUSTRXL1NaTTZPdENNRjlNcmNmS1F6NVl5VkEzRlZid2FBVGZy?= =?utf-8?B?RlIzdC9QN0pXVytOckkxVkRDZFViSFh1bnZBb204cWVibDhlTmgwT1M2ZXM2?= =?utf-8?B?cjVJM2V1Z1F1UHZaMzFHditWT0hpUHhtby92cmJ5VzZjR0twT1ZLcmh5UTY3?= =?utf-8?B?cllEd25xN2RXbUJwZUpCVXhCN3QzMjhUbXNkWXRoMU5FWGt0dFBFd284NEYz?= =?utf-8?B?NkFVRGJpWkZHRFNBYTVZWkZwZEMwdHdKb3MzY3plWGl4b1liMFJNRGg5MmVN?= =?utf-8?B?M1pDdHFBRTdkaFV3L25EbE84NlkxM05mYnk5cmhINTIwcFJBYThlTWNjcTFL?= =?utf-8?B?KzBlaSs3eG12MksyT1NkU2ZReHhDZ25YcG5Qc2FjNEFENjVsMU9oaDVpaGhi?= =?utf-8?B?dUtYcHd6eWhHU3NML2lpM1JaT1IvMlVjeDNXQkJuWmFiUlZDNE41azZra1Zj?= =?utf-8?B?VDQzVkxpUFQvVmVIT0MvWGRERlNHckl2L1pRMXRzL2trajNDaWU0bERiR0J6?= =?utf-8?B?Z0RlOFcvU2pqRW1FMlRVWGs4MENwN1lDbnZTWmRDUnZLdk52bjhFNUp5Mjk2?= =?utf-8?B?MlcwVHl1UlowYXJjYWRNV2JTc3pJN05ZTGtnU1UyMDBCYlhiTENGdHVac1RY?= =?utf-8?B?ckxEMTd2aXJ5bUxHbnNBOHpYOVd2OVJRakQ1RjlQK3M4YTBmalI3QTh4eFJo?= =?utf-8?B?czhHWDNoclVIZWVReUtxajJCaHVIWE9YT1p2eHVhaFRPWHY1ZTJLKzdyc1Yv?= =?utf-8?B?NnNSZmxhWUtIemJzRDBtTTFoY285d3RQSDZQaEluUytHNG93eExUNWZxMThx?= =?utf-8?B?SXJaaGJ4WVN6TEV3a2dpUi9Bajl2OStQOTlUaDk1YjB6QjRJdFJRRmZCZHRR?= =?utf-8?B?OWNPVG1vWTlnU1U4V29MSWZoK2hzZ3BzL2tUVXJvaXhMOVlWK3pacEFaWExr?= =?utf-8?B?cTJzbjQ4K1RSSzE1M0xRMkNWd3VRbTJhdzdKc1IzK3F0aXFCR2QrWFpBa2dp?= =?utf-8?B?QmI1WjlMbWRkN1JFUXRxdUdWaW9wVFpGZUYvVkVGM3hqRDJQbUc3b01BVU9J?= =?utf-8?B?L0FFR1JxYnkzcWt6VDhTV2dzTHVLek1vM2F0TWQ1eTRmL3ZCQVJDT0FaZWJY?= =?utf-8?B?L1g4c3dNZ3greGhuazdld2Rmb3lLUE8rWEMwQndhM0lUZDNwUUFTOU1EbGFm?= =?utf-8?B?ampkSzcvRXkwbjRoaER4VkJMcDN6c1d3eGYwcHRPYndMazEzWjd5ZEpQUWhw?= =?utf-8?B?Kys0WHR0enNKclVreC9VRVlzd2hBOHQybGUvcE1JN1J2VDRxNzI4N0IvTDdM?= =?utf-8?B?QzE5NG9OTUtXWjdzNEF3WUVaQ2xHR1F3YUNZWTJqRFE0TUpuR1NYK0dTSVZh?= =?utf-8?B?NXBBemVUOGdPV043eWhKcU95eDk4YzhUTTRHY2xaaUdGcHA4c1ozZmZ3UUd2?= =?utf-8?B?emc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <198A9C7D30AE0F4DBD56A88D46030017@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB3999.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c98e735-4dde-4f7c-67e3-08da7be3f14f X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2022 21:53:36.2339 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0LssazUlJWXHPmpnHdSN09IfefnezXKKacNs/bfpcW5z8XxBgPPwHbNVyuVZ0ybO4hLImhE8ac2/q2dBntvPKjrzYqXg6nw/SyILeUQILa4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB7114 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-cxl@vger.kernel.org T24gVGh1LCAyMDIyLTA4LTExIGF0IDEyOjM0IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ IFZpc2hhbCBWZXJtYSB3cm90ZToNCj4gPiBBZGQgYSAnY3JlYXRlLXJlZ2lvbicgY29tbWFuZCB0 byBjeGwtY2xpIHRoYXQgd2Fsa3MgdGhlIHBsYXRmb3JtJ3MgQ1hMDQo+ID4gaGllcmFyY2h5IHRv IGZpbmQgYW4gYXBwcm9wcmlhdGUgcm9vdCBkZWNvZGVyIGJhc2VkIG9uIGFueSBvcHRpb25zDQo+ ID4gcHJvdmlkZWQsIGFuZCB1c2VzIGxpYmN4bCBBUElzIHRvIGNyZWF0ZSBhICdyZWdpb24nIHRo YXQgaXMgY29tcHJlaGVuZGVkDQo+ID4gYnkgbGlibnZkaW1tIGFuZCBuZGN0bC4NCj4gPiANCj4g PiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+DQo+ID4gU2lnbmVk LW9mZi1ieTogVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52ZXJtYUBpbnRlbC5jb20+DQo+ID4gLS0t DQo+ID4gwqBEb2N1bWVudGF0aW9uL2N4bC9idXMtb3B0aW9uLnR4dMKgwqDCoMKgwqDCoMKgwqAg fMKgwqAgNSArDQo+ID4gwqBEb2N1bWVudGF0aW9uL2N4bC9jeGwtY3JlYXRlLXJlZ2lvbi50eHTC oCB8IDExNCArKysrKw0KPiA+IMKgRG9jdW1lbnRhdGlvbi9jeGwvcmVnaW9uLWRlc2NyaXB0aW9u LnR4dCB8wqDCoCA3ICsNCj4gPiDCoGN4bC9idWlsdGluLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArDQo+ID4gwqBjeGwvZmls dGVyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqDCoCA0ICstDQo+ID4gwqBjeGwvY3hsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsNCj4gPiDCoGN4 bC9yZWdpb24uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNTk0ICsrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gwqBEb2N1bWVudGF0 aW9uL2N4bC9tZXNvbi5idWlsZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArDQo+ID4g wqBjeGwvbWVzb24uYnVpbGTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCAxICsNCj4gPiDCoDkgZmlsZXMgY2hhbmdlZCwgNzI4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0 aW9uL2N4bC9idXMtb3B0aW9uLnR4dA0KPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50 YXRpb24vY3hsL2N4bC1jcmVhdGUtcmVnaW9uLnR4dA0KPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0 IERvY3VtZW50YXRpb24vY3hsL3JlZ2lvbi1kZXNjcmlwdGlvbi50eHQNCj4gPiDCoGNyZWF0ZSBt b2RlIDEwMDY0NCBjeGwvcmVnaW9uLmMNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9jeGwvYnVzLW9wdGlvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2N4bC9idXMtb3B0aW9uLnR4 dA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMDJlMmYwOA0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9Eb2N1bWVudGF0aW9uL2N4bC9idXMtb3B0aW9u LnR4dA0KPiA+IEBAIC0wLDAgKzEsNSBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMA0KPiA+ICsNCj4gPiArLWI6Og0KPiA+ICstLWJ1cz06Og0KPiA+ICvCoMKgwqDC oMKgwqDCoFJlc3RyaWN0IHRoZSBvcGVyYXRpb24gdG8gdGhlIHNwZWNpZmllZCBidXMuDQo+ID4g ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3hsL2N4bC1jcmVhdGUtcmVnaW9uLnR4dCBiL0Rv Y3VtZW50YXRpb24vY3hsL2N4bC1jcmVhdGUtcmVnaW9uLnR4dA0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMTVkYzc0Mg0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9Eb2N1bWVudGF0aW9uL2N4bC9jeGwtY3JlYXRlLXJlZ2lvbi50eHQNCj4gPiBAQCAt MCwwICsxLDExNCBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0K PiA+ICsNCj4gPiArY3hsLWNyZWF0ZS1yZWdpb24oMSkNCj4gPiArPT09PT09PT09PT09PT09PT09 PT0NCj4gPiArDQo+ID4gK05BTUUNCj4gPiArLS0tLQ0KPiA+ICtjeGwtY3JlYXRlLXJlZ2lvbiAt IEFzc2VtYmxlIGEgQ1hMIHJlZ2lvbiBieSBzZXR0aW5nIHVwIGF0dHJpYnV0ZXMgb2YgaXRzDQo+ ID4gK2NvbnN0aXR1ZW50IENYTCBtZW1kZXZzLg0KPiA+ICsNCj4gPiArU1lOT1BTSVMNCj4gPiAr LS0tLS0tLS0NCj4gPiArW3ZlcnNlXQ0KPiA+ICsnY3hsIGNyZWF0ZS1yZWdpb24gWzxvcHRpb25z Pl0nDQo+ID4gKw0KPiA+ICtpbmNsdWRlOjpyZWdpb24tZGVzY3JpcHRpb24udHh0W10NCj4gPiAr DQo+ID4gK0ZvciBjcmVhdGUtcmVnaW9uLCBhIHNpemUgY2FuIG9wdGlvbmFsbHkgYmUgc3BlY2lm aWVkLCBidXQgaWYgbm90LCB0aGUgbWF4aW11bQ0KPiA+ICtwb3NzaWJsZSBzaXplIGZvciBlYWNo IG1lbWRldiB3aWxsIGJlIHVzZWQgdXAgdG8gdGhlIGF2YWlsYWJsZSBkZWNvZGUgY2FwYWNpdHkN Cj4gPiAraW4gdGhlIHN5c3RlbSBmb3IgdGhlIGdpdmVuIG1lbW9yeSB0eXBlLiBGb3IgcGVyc2lz dGVudCByZWdpb25zIGEgVVVJRCBjYW4NCj4gPiArb3B0aW9uYWxseSBiZSBzcGVjaWZpZWQsIGJ1 dCBpZiBub3QsIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC4NCj4gPiArDQo+ID4gK0lmIHRoZSByZWdp b24tY3JlYXRpb24gb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwsIGEgcmVnaW9uIG9iamVjdCB3aWxs IGJlDQo+ID4gK2VtaXR0ZWQgb24gc3Rkb3V0IGluIEpTT04gZm9ybWF0IChzZWUgZXhhbXBsZXMp LiBJZiB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cw0KPiA+ICtjYW5ub3QgYmUgc2F0aXNmaWVkIHdp dGggYSBsZWdhbCBjb25maWd1cmF0aW9uLCB0aGVuIGFuIGFwcHJvcHJpYXRlIGVycm9yIHdpbGwN Cj4gPiArYmUgZW1pdHRlZCBvbiBzdGRlcnIuDQo+ID4gKw0KPiA+ICtFWEFNUExFDQo+ID4gKy0t LS0tLS0NCj4gPiArLS0tLQ0KPiA+ICsjIGN4bCBjcmVhdGUtcmVnaW9uIC1tIC1kIGRlY29kZXIw LjEgLXcgMiAtZyAxMDI0IG1lbTAgbWVtMQ0KPiA+ICt7DQo+ID4gK8KgICJyZWdpb24iOiJyZWdp b24wIiwNCj4gPiArwqAgInJlc291cmNlIjoiMHhjOTAwMDAwMDAiLA0KPiA+ICvCoCAic2l6ZSI6 IjUxMi4wMCBNaUIgKDUzNi44NyBNQikiLA0KPiA+ICvCoCAiaW50ZXJsZWF2ZV93YXlzIjoyLA0K PiA+ICvCoCAiaW50ZXJsZWF2ZV9ncmFudWxhcml0eSI6MTAyNCwNCj4gPiArwqAgIm1hcHBpbmdz IjpbDQo+ID4gK8KgwqDCoCB7DQo+ID4gK8KgwqDCoMKgwqAgInBvc2l0aW9uIjoxLA0KPiA+ICvC oMKgwqDCoMKgICJkZWNvZGVyIjoiZGVjb2RlcjQuMCINCj4gPiArwqDCoMKgIH0sDQo+ID4gK8Kg wqDCoCB7DQo+ID4gK8KgwqDCoMKgwqAgInBvc2l0aW9uIjowLA0KPiA+ICvCoMKgwqDCoMKgICJk ZWNvZGVyIjoiZGVjb2RlcjMuMCINCj4gPiArwqDCoMKgIH0NCj4gPiArwqAgXQ0KPiA+ICt9DQo+ ID4gK2NyZWF0ZWQgMSByZWdpb24NCj4gPiArLS0tLQ0KPiA+ICsNCj4gPiArT1BUSU9OUw0KPiA+ ICstLS0tLS0tDQo+ID4gKzx0YXJnZXQocyk+OjoNCj4gPiArVGhlIENYTCB0YXJnZXRzIHRoYXQg c2hvdWxkIGJlIHVzZWQgdG8gZm9ybSB0aGUgcmVnaW9uLiBUaGlzIGlzIG9wdGlvbmFsLA0KPiA+ ICthcyB0aGV5IGNhbiBiZSBjaG9zZW4gYXV0b21hdGljYWxseSBiYXNlZCBvbiBvdGhlciBvcHRp b25zIGNob3Nlbi4gVGhlIG51bWJlciBvZg0KPiA+ICsndGFyZ2V0JyBhcmd1bWVudHMgbXVzdCBt YXRjaCB0aGUgJy0td2F5cycgb3B0aW9uIChpZiBwcm92aWRlZCkuIFRoZQ0KPiA+ICt0YXJnZXRz IG1heSBiZSBtZW1kZXZzLCBvciBlbmRwb2ludHMuIFRoZSBvcHRpb25zIGJlbG93IGNvbnRyb2wg d2hhdCB0eXBlIG9mDQo+ID4gK3RhcmdldHMgYXJlIGJlaW5nIHVzZWQuDQo+ID4gKw0KPiA+ICtp bmNsdWRlOjpidXMtb3B0aW9uLnR4dFtdDQo+ID4gKw0KPiA+ICstbTo6DQo+ID4gKy0tbWVtZGV2 czo6DQo+ID4gK8KgwqDCoMKgwqDCoMKgSW5kaWNhdGUgdGhhdCB0aGUgbm9uLW9wdGlvbiBhcmd1 bWVudHMgZm9yICd0YXJnZXQocyknIHJlZmVyIHRvIG1lbWRldg0KPiA+ICvCoMKgwqDCoMKgwqDC oG5hbWVzLg0KPiANCj4gQXJlIHRoZXkgbmFtZXMgb3IgZmlsdGVyIHBhcmFtZXRlcnMgYWxhICdj eGwgbGlzdCAtbSc/IEkuZS4gZG8geW91DQo+IGZvcmVzZWUgYmVpbmcgYWJsZSB0byBkbyBzb21l dGhpbmcgbGlrZToNCg0KSG0sIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoZXkgcmVh bGx5IGFyZSBqdXN0IG5hbWVzIC0gSSBqdXN0DQp1c2UgdGhlIHJlbWFpbmluZyBhcmd2W10gYXMg dGhlIHRhcmdldHMgYXJyYXksIGJ1dC4uDQoNCj4gDQo+ICJjeGwgY3JlYXRlLXJlZ2lvbiAtcCAk cG9ydCAtbSBhbGwiDQo+IA0KPiAuLi50byBqdXN0IHNlbGVjdCBhbGwgdGhlIG1lbWRldnMgdGhh dCBhcmUgZGVzY2VuZGFudHMgb2YgJHBvcnQgaW4gdGhlDQo+IGZ1dHVyZT8gTW9yZSBvZiBhIGN1 cmlvc2l0eSBhYm91dCBmdXR1cmUgcG9zc2liaWxpdGllcyB0aGVuIGEgcmVxdWVzdA0KPiBmb3Ig Y2hhbmdlLg0KDQpUaGlzIHNvdW5kcyBsaWtlIGEgdXNlZnVsIHRoaW5nIHRvIGRvIC0gcGVyaGFw cyB3aXRoIHRoZSBuZXh0IGJpdCBvZg0KcG9yY2VsYWluIGFkZGl0aW9ucy4NCg0KPiANCj4gPiAr DQo+ID4gKy1lOjoNCj4gPiArLS1lcC1kZWNvZGVyczo6DQo+ID4gK8KgwqDCoMKgwqDCoMKgSW5k aWNhdGUgdGhhdCB0aGUgbm9uLW9wdGlvbiBhcmd1bWVudHMgZm9yICd0YXJnZXQocyknIHJlZmVy IHRvIGVuZHBvaW50DQo+ID4gK8KgwqDCoMKgwqDCoMKgZGVjb2RlciBuYW1lcy4NCj4gDQo+IEkg d29uZGVyIGlmIHRoaXMgc2hvdWxkIGhhdmUgYSBub3RlIGFib3V0IGl0IGJlaW5nIGZvciB0ZXN0 LW9ubHkNCj4gcHVycG9zZXM/IEdpdmVuIHRoZSBzdHJpY3QgQ1hMIGRlY29kZXIgYWxsb2NhdGlv biBydWxlcyBJIHdvbmRlciBpZg0KPiBhbnlvbmUgY2FuIHVzZSB0aGlzIGluIHByYWN0aWNlPyBU aGVyZSBtaWdodCBiZSBzb21lIHN5bmVyZ3kgd2l0aCAnY3hsDQo+IHJlc2VydmUtZHBhJyB3aGVy ZSB0aGlzIG9wdGlvbiBjb3VsZCBiZSB1c2VkIHRvIHNheSAiZG8gbm90IGFsbG9jYXRlIG5ldw0K PiBkZWNvZGVycywgYW5kIGRvIG5vdCByZXNlcnZlIG1vcmUgRFBBLCBqdXN0IHRyeSB0byB1c2Ug dGhlIERQQSB0aGF0IHdhcw0KPiBhbHJlYWR5IHJlc2VydmVkIGluIHRoZSBmb2xsb3dpbmcgZGVj b2RlcnMiLg0KPiANCj4gV2UgbWlnaHQgZXZlbiBkZWxldGUgdGhpcyBvcHRpb24gZm9yIG5vdyB1 bmxlc3MgSSBhbSBtaXNzaW5nIHRoZSBtYXJxdWVlDQo+IHVzZSBjYXNlIGZvciBpdD8gQmVjYXVz ZSB1bmxlc3Mgc29tZW9uZSBrbm93cyB3aGF0IHRoZXkgYXJlIGRvaW5nIHRoZXkNCj4gYXJlIGFs bW9zdCBhbHdheXMgZ29pbmcgdG8gYmUgd3JvbmcuDQoNClllYWggSSBhZ3JlZSAtIGl0IGlzIGRl ZmluaXRlbHkgbm90IHN0cmFpZ2h0Zm9yd2FyZCB0byB1c2UsIGFuZCBJIGRvbid0DQpzZWUgYSBw cmFjdGljYWwgdXNlIGNhc2UuIEkgdGhpbmsgSSBvbmx5IGhhZCBpdCBiZWNhdXNlIHRoZSBBQkkg d2FudGVkDQpkZWNvZGVycywgYW5kIHZlcnkgZWFybHkgaW1wbGVtZW50YXRpb25zIGhhZCBtZSBl eHBsaWNpdGx5IGFza2luZyBmb3INCi9ldmVyeXRoaW5nLy4NCg0KSSdtIG9rYXkgYWRkaW5nIGEg bm90ZSB0aGF0IHRoaXMgc2hvdWxkbid0IG5vcm1hbGx5IGJlIHVzZWQsIG9yDQpyZW1vdmluZyBp dCBlbnRpcmVseS4NCg0KPiANCj4gPiArDQo+ID4gKy1zOjoNCj4gPiArLS1zaXplPTo6DQo+ID4g K8KgwqDCoMKgwqDCoMKgU3BlY2lmeSB0aGUgdG90YWwgc2l6ZSBmb3IgdGhlIG5ldyByZWdpb24u IFRoaXMgaXMgb3B0aW9uYWwsIGFuZCBieQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGRlZmF1bHQsIHRo ZSBtYXhpbXVtIHBvc3NpYmxlIHNpemUgd2lsbCBiZSB1c2VkLg0KPiANCj4gSG93IGFib3V0IGFk ZDoNCj4gDQo+ICJUaGUgbWF4aW11bSBwb3NzaWJsZSBzaXplIGlzIGdhdGVkIGJ5IGJvdGggdGhl IGNvbnRpZ3VvdXMgZnJlZSBIUEENCj4gc3BhY2UgcmVtYWluaW5nIGluIHRoZSByb290IGRlY29k ZXIsIGFuZCB0aGUgYXZhaWxhYmxlIERQQSBzcGFjZSBpbiB0aGUNCj4gY29tcG9uZW50IG1lbWRl dnMuIg0KDQpZZXAuDQoNCj4gDQo+ID4gKw0KPiA+ICstdDo6DQo+ID4gKy0tdHlwZT06Og0KPiA+ ICvCoMKgwqDCoMKgwqDCoFNwZWNpZnkgdGhlIHJlZ2lvbiB0eXBlIC0gJ3BtZW0nIG9yICdyYW0n LiBEZWZhdWx0cyB0byAncG1lbScuDQo+ID4gKw0KPiA+ICstVTo6DQo+ID4gKy0tdXVpZD06Og0K PiA+ICvCoMKgwqDCoMKgwqDCoFNwZWNpZnkgYSBVVUlEIGZvciB0aGUgbmV3IHJlZ2lvbi4gVGhp cyBzaG91bGRuJ3QgdXN1YWxseSBuZWVkIHRvIGJlDQo+ID4gK8KgwqDCoMKgwqDCoMKgc3BlY2lm aWVkLCBhcyBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgZGVmYXVsdC4NCj4gPiArDQo+ID4gKy13 OjoNCj4gPiArLS13YXlzPTo6DQo+ID4gK8KgwqDCoMKgwqDCoMKgVGhlIG51bWJlciBvZiBpbnRl cmxlYXZlIHdheXMgZm9yIHRoZSBuZXcgcmVnaW9uJ3MgaW50ZXJsZWF2ZS4gVGhpcw0KPiA+ICvC oMKgwqDCoMKgwqDCoHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIG1lbWRldnMgc3Bl Y2lmaWVkIGluIC0tbWVtZGV2cywgaWYNCj4gPiArwqDCoMKgwqDCoMKgwqAtLW1lbWRldnMgaXMg YmVpbmcgc3VwcGxpZWQuIElmIC0tbWVtZGV2cyBpcyBub3Qgc3BlY2lmaWVkLCBhbg0KPiA+ICvC oMKgwqDCoMKgwqDCoGFwcHJvcHJpYXRlIG51bWJlciBvZiBtZW1kZXZzIHdpbGwgYmUgY2hvc2Vu IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YNCj4gPiArwqDCoMKgwqDCoMKgwqB3YXlzIHNwZWNpZmll ZC4NCj4gDQo+IFRoZSByZXZlcnNlIGlzIGFsc28gdHJ1ZSwgcmlnaHQ/IFRoYXQgaWYgLXcgaXMg bm90IHNwZWNpZmllZCB0aGVuIHRoZQ0KPiBudW1iZXIgb2Ygd2F5cyBpcyBkZXRlcm1pbmVkIGJ5 IHRoZSBudW1iZXIgb2YgdGFyZ2V0cyBzcGVjaWZpZWQsIG9yIGJ5DQo+IG90aGVyIGRlZmF1bHQg dGFyZ2V0IHNlYXJjaGVzLiBJIGd1ZXNzIG5vdGVzIGFib3V0IHRob3NlIGVuaGFuY2VkDQo+IGRl ZmF1bHQgbW9kZXMgY2FuIHdhaXQgdW50aWwgbW9yZSAnY3JlYXRlLXJlZ2lvbicgcG9yY2VsYWlu IGFycml2ZXMuDQoNCkhtIGFjdHVhbGx5IGluIHRoZSBjdXJyZW50IHN0YXRlLCAvb25seS8gdGhl IHJldmVyc2UgaXMgdHJ1ZSwgc28gdGhpcw0KZGVzY3JpcHRpb24gd2FzIGNlcnRhaW5seSBhIGJp dCBmb3J3YXJkIGxvb2tpbmcuIEknbGwgZml4IHRvIHNheSB3aGF0DQppdCBhY3R1YWxseSBkb2Vz IHRvZGF5Lg0KDQo+IA0KPiA+ICsNCj4gPiArLWc6Og0KPiA+ICstLWdyYW51bGFyaXR5PTo6DQo+ ID4gK8KgwqDCoMKgwqDCoMKgVGhlIGludGVybGVhdmUgZ3JhbnVsYXJpdHkgZm9yIHRoZSBuZXcg cmVnaW9uLiBNdXN0IG1hdGNoIHRoZSBzZWxlY3RlZA0KPiA+ICvCoMKgwqDCoMKgwqDCoHJvb3Qg ZGVjb2RlcidzIChpZiBwcm92aWRlZCkgZ3JhbnVsYXJpdHkuDQo+IA0KPiBUaGlzIGp1c3QgaGFz IG1lIHRoaW5raW5nIHRoYXQgdGhlIGtlcm5lbCBuZWVkcyB0byB1cC1sZXZlbCBpdHMgY29kZQ0K PiBjb21tZW50cyBhbmQgY2hhbmdlbG9ncyBvbiB0aGUgIndoeSIgZm9yIHRoaXMgcmVzdHJpY3Rp b24gdG8gc29tZXdoZXJlDQo+IHRoaXMgbWFuIHBhZ2UgY2FuIHJlZmVyZW5jZS4NCj4gDQo+IEhv d2V2ZXIgc2Vjb25kIHNlbnRlbmNlIHNob3VsZCBiZToNCj4gDQo+ICJJZiB0aGUgcm9vdCBkZWNv ZGVyIGlzIGludGVybGVhdmVkIGFjcm9zcyBtb3JlIHRoYW4gb25lIGhvc3QtYnJpZGdlDQo+IHRo ZW4gdGhpcyB2YWx1ZSBtdXN0IG1hdGNoIHRoYXQgZ3JhbnVsYXJpdHkuIE90aGVyd2lzZSwgZm9y DQo+IG5vbi1pbnRlcmxlYXZlZCBkZWNvZGUgd2luZG93cywgYW55IGdyYW51bGFyaXR5IGNhbiBi ZQ0KPiBzcGVjaWZpZWQgYXMgbG9uZyBhcyBhbGwgZGV2aWNlcyBzdXBwb3J0IHRoYXQgc2V0dGlu Zy4iDQo+IA0KPiBBcyBJIHR5cGUgdGhhdCBpdCByYWlzZXMgMiBxdWVzdGlvbnM6DQo+IA0KPiAx LyBJZiBzb21lb25lIGRvZXMgImN4bCBjcmVhdGUtcmVnaW9uIC1nIDEwMjQiIHdpdGggbm8gb3Ro ZXIgYXJndW1lbnRzLA0KPiB3aWxsIGl0IGZhbGxiYWNrIHRvIGEgZGVjb2RlciB0aGF0IGNhbiBz dXBwb3J0IHRoYXQgc2V0dGluZyBpZiBpdHMgZmlyc3QNCj4gY2hvaWNlIGNhbiBub3Q/DQoNCldl bGwgdGhlcmUncyBubyBhdXRvbWF0aWMgcm9vdCBkZWNvZGVyIHNlbGVjdGlvbiBhdCBhbGwgaW4g dGhpcyBzZXJpZXMsDQpidXQgZm9yIGZ1dHVyZSBwb3JjZWxhaW4sIEknZCBpbWFnaW5lIGl0IHNo b3VsZCB0cnkgdG8gbWF0Y2ggZXhhY3RseQ0KYW55IGFyZ3MgdGhhdCB3ZXJlIHNwZWNpZmllZCwg YW5kIGZhaWwgaWYgL2FsbC8gb2YgdGhvc2UgY2FuJ3QgYmUNCm1hdGNoZWQuDQoNCmUuZy46DQpk ZWNvZGVyMSAtIDItd2F5IC0gSUc6MjU2LCBhbmQNCmRlY29kZXIyIC0gMS13YXkgLSBJRzoxMDI0 DQoNCmFuZCB3ZSBnZXQgJ2N4bCBjcmVhdGUtcmVnaW9uIC1nIDEwMjQnLCB3ZSBzaG91bGQgcGlj ayBkZWNvZGVyIDIsDQpjcmVhdGUgYSB4MSBpbnRlcmxlYXZlIHVuZGVyIGl0LiBEb2VzIHRoYXQg bWFrZSBzZW5zZT8NCg0KPiANCj4gMi8gUGVyIERhdmUncyByZWNlbnQgc2VyaWVzIFsxXSwgY3hs LWNsaSBpcyBtaXNzaW5nIGFueSBjb25zaWRlcmF0aW9uDQo+IHRoYXQgYSBnaXZlbiBlbmRwb2lu dCBtYXkgbm90IGhhdmUgdGhlIHN1cHBvcnQgZm9yIHRoZSBpbnRlcmxlYXZlDQo+IGFkZHJlc3Mg Yml0cyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIGEgZ2l2ZW4gJ2NyZWF0ZS1yZWdpb24nIHJlcXVl c3QuDQo+IERvZXMgbm90IG5lZWQgdG8gYmUgc29sdmVkIG5vdywgYnV0IHNob3VsZCBiZSBxdWV1 ZWQgdXAgbmV4dC4NCj4gDQo+IDJhLyBTYW1lIGZvciBpbnRlcmxlYXZlLXdheXMsIHRoZXJlIGFy ZSBlbmRwb2ludCBjYXBhYmlsaXRpZXMgdGhhdCBuZWVkDQo+IHRvIGJlIGFjY291bnRlZC4NCg0K WWVwIGFncmVlZC4NCg0KPiANCj4gWzFdOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1j eGwvMTY1OTk5MjQ0MjcyLjQ5MzEzMS4xOTc1NTEzMTgzMjI3Mzg5NjMzLnN0Z2l0QGRqaWFuZzUt ZGVzazQuamYuaW50ZWwuY29tLw0KPiANClsuLl0NCj4gPiANCj4gPiArDQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IHBhcnNlX2NyZWF0ZV9vcHRpb25zKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJn diwNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGFyc2VkX3BhcmFtcyAqcCkNCj4gPiArew0KPiA+ICvCoMKg wqDCoMKgwqDCoGludCBpOw0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIXBhcmFtLnJv b3RfZGVjb2Rlcikgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb2dfZXJy KCZybCwgIm5vIHJvb3QgZGVjb2RlciBzcGVjaWZpZWRcbiIpOw0KPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsNCj4gPiArwqDCoMKgwqDCoMKgwqB9DQo+ ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChwYXJhbS50eXBlKSB7DQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChzdHJjbXAocGFyYW0udHlwZSwgInJhbSIpID09IDAp DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwLT5t b2RlID0gQ1hMX0RFQ09ERVJfTU9ERV9SQU07DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGVsc2UgaWYgKHN0cmNtcChwYXJhbS50eXBlLCAidm9sYXRpbGUiKSA9PSAwKQ0KPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcC0+bW9kZSA9 IENYTF9ERUNPREVSX01PREVfUkFNOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlbHNlIGlmIChzdHJjbXAocGFyYW0udHlwZSwgInBtZW0iKSA9PSAwKQ0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcC0+bW9kZSA9IENYTF9ERUNP REVSX01PREVfUE1FTTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZSB7 DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb2df ZXJyKCZybCwgInVuc3VwcG9ydGVkIHR5cGU6ICVzXG4iLCBwYXJhbS50eXBlKTsNCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFM Ow0KPiANCj4gVGhpcyBwcm9iYWJseSB3YW50cyBhIGNvbW1vbiBoZWxwZXIgdGhhdCBjYW4gYmUg c2hhcmVkIHdpdGgNCj4gX19yZXNlcnZlX2RwYSgpIGFuZCBhZGRfY3hsX2RlY29kZXIoKSB0aGF0 IGRvIHRoZSBzYW1lIGNvbnZlcnNpb24uIEkuZS4NCj4gY3hsX2RlY29kZXJfbW9kZV9uYW1lKCkg bmVlZHMgYSBidWRkeS4gVGhhdCBjYW4gYmUgYSBmb2xsb3cgb24gY2hhbmdlLg0KPiBJU1RSIEkg bWlnaHQgaGF2ZSBhbHJlYWR5IG5vdGVkIHRoYXQsIHNvIGZvcmdpdmUgdGhlIGR1cGxpY2F0ZSBj b21tZW50Lg0KDQpBaCBJIGRvIHJlbWVtYmVyIHRoaXMsIEkgcHJvYmFibHkganVzdCBtaXNzZWQg dGhpcyBjbGVhbnVwIC0gSSdsbCBhZGQNCml0IGZvciB2My4NCg0KPiANCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ICvCoMKgwqDCoMKgwqDCoH0gZWxzZQ0KPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwLT5tb2RlID0gQ1hMX0RFQ09ERVJfTU9ERV9Q TUVNOw0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAocGFyYW0uc2l6ZSkgew0KPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwLT5zaXplID0gcGFyc2Vfc2l6ZTY0KHBhcmFt LnNpemUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocC0+c2l6ZSA9 PSBVTExPTkdfTUFYKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBsb2dfZXJyKCZybCwgIkludmFsaWQgc2l6ZTogJXNcbiIsIHBhcmFtLnNpemUp Ow0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiAr wqDCoMKgwqDCoMKgwqB9DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChwYXJhbS53YXlz KSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgd2F5 cyA9IHN0cnRvdWwocGFyYW0ud2F5cywgTlVMTCwgMCk7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAod2F5cyA9PSBVTE9OR19NQVggfHwgKGludCl3YXlzIDw9 IDApIHsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGxvZ19lcnIoJnJsLCAiSW52YWxpZCBpbnRlcmxlYXZlIHdheXM6ICVzXG4iLA0KPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHBhcmFtLndheXMpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0NCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcC0+d2F5cyA9IHdheXM7 DQo+ID4gK8KgwqDCoMKgwqDCoMKgfSBlbHNlIGlmIChhcmdjKSB7DQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHAtPndheXMgPSBhcmdjOw0KPiANCj4gVGhpcyBpcyB3aGVyZToN Cj4gDQo+IMKgwqDCoCBjeGwgY3JlYXRlLXJlZ2lvbiAtcCAkcG9ydCAtbSBhbGwNCj4gDQo+IC4u LndvdWxkIG5vdCB3b3JrLCBidXQgbWF5YmUgcmVxdWlyaW5nIGV4cGxpY2l0IHRhcmdldHMgaXMg b2suIFRoZXJlJ3MNCj4gc28gbWFueSBwb3RlbnRpYWwgbW92aW5nIHBpZWNlcyBpbiBhIENYTCB0 b3BvbG9neSBtYXliZSB3ZSBkbyBub3Qgd2FudA0KPiB0byBnbyB0aGVyZSB3aXRoIHRoaXMgZmxl eGliaWxpdHkuDQoNCkhtIHllYWggLSB0cnVlLiBJdCB3YXMgY2VydGFpbmx5IGNvbnZlbmllbnQg KGFiKXVzaW5nIGFyZ2MgYW5kIGFyZ3YgZm9yDQp0aGlzLCBidXQgaWYgd2UgZGlkIGFkZCB0aGUg ZmxleGliaWxpdHkgb2Ygc3BlY2lmeWluZyBhIGZpbHRlciwgb3IgZXZlbg0KbXVsdGlwbGUgZmls dGVycyBpbiB0aGUgZnV0dXJlLCB0aGUgdGFyZ2V0cyBhcnJheSB3b3VsZCBuZWVkIHByb3Blcg0K cmVjb25zdHJ1Y3Rpb24gYW55d2F5LCBhbmQgY291bnRpbmcgdGhlIG9iamVjdHMgaW4gaXQgd291 bGQgY29tZQ0KYWxvbmd3aXRoIGl0Lg0KDQo+IA0KPiA+IA0KWy4uXQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBjeGxfcmVnaW9uX2RldGVybWluZV9ncmFudWxhcml0eShzdHJ1Y3QgY3hsX3JlZ2lv biAqcmVnaW9uLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHBhcnNl ZF9wYXJhbXMgKnApDQo+ID4gK3sNCj4gPiArwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpkZXZu YW1lID0gY3hsX3JlZ2lvbl9nZXRfZGV2bmFtZShyZWdpb24pOw0KPiA+ICvCoMKgwqDCoMKgwqDC oHVuc2lnbmVkIGludCBncmFudWxhcml0eSwgd2F5czsNCj4gPiArDQo+ID4gK8KgwqDCoMKgwqDC oMKgLyogRGVmYXVsdCBncmFudWxhcml0eSB3aWxsIGJlIHRoZSByb290IGRlY29kZXIncyBncmFu dWxhcml0eSAqLw0KPiA+ICvCoMKgwqDCoMKgwqDCoGdyYW51bGFyaXR5ID0gY3hsX2RlY29kZXJf Z2V0X2ludGVybGVhdmVfZ3JhbnVsYXJpdHkocC0+cm9vdF9kZWNvZGVyKTsNCj4gPiArwqDCoMKg wqDCoMKgwqBpZiAoZ3JhbnVsYXJpdHkgPT0gMCB8fCBncmFudWxhcml0eSA9PSBVSU5UX01BWCkg ew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb2dfZXJyKCZybCwgIiVzOiB1 bmFibGUgdG8gZGV0ZXJtaW5lIHJvb3QgZGVjb2RlciBncmFudWxhcml0eVxuIiwNCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldm5hbWUpOw0KPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOWElPOw0KPiA+ICvCoMKg wqDCoMKgwqDCoH0NCj4gPiArDQo+ID4gK8KgwqDCoMKgwqDCoMKgLyogSWYgbm8gdXNlci1zdXBw bGllZCBncmFudWxhcml0eSwganVzdCB1c2UgdGhlIGRlZmF1bHQgKi8NCj4gPiArwqDCoMKgwqDC oMKgwqBpZiAoIXAtPmdyYW51bGFyaXR5KQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gZ3JhbnVsYXJpdHk7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoHdheXMg PSBjeGxfZGVjb2Rlcl9nZXRfaW50ZXJsZWF2ZV93YXlzKHAtPnJvb3RfZGVjb2Rlcik7DQo+ID4g K8KgwqDCoMKgwqDCoMKgaWYgKHdheXMgPT0gMCB8fCB3YXlzID09IFVJTlRfTUFYKSB7DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxvZ19lcnIoJnJsLCAiJXM6IHVuYWJsZSB0 byBkZXRlcm1pbmUgcm9vdCBkZWNvZGVyIHdheXNcbiIsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZuYW1lKTsNCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTlhJTzsNCj4gPiArwqDCoMKgwqDCoMKgwqB9DQo+ ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoC8qIEZvciB3YXlzID09IDEsIGFueSB1c2VyLXN1cHBs aWVkIGdyYW51bGFyaXR5IGlzIGZpbmUgKi8NCj4gDQo+IC4uLm1vZHVsbyBhIGZ1dHVyZSBwYXRj aCB0aGF0IGNoZWNrcyB0aGUgZGV2aWNlJ3MgaW50ZXJsZWF2ZSBjYXBhYmlsaXR5Lg0KPiANCj4g UmVzdCBvZiB0aGUgcGF0Y2ggbG9va3MgZ29vZC4gQWZ0ZXIgZml4aW5nIHVwIHRoZSBvcHRpb24g ZGVzY3JpcHRpb25zDQo+IHBlciBhYm92ZSB5b3UgY2FuIGFkZDoNCj4gDQo+IFJldmlld2VkLWJ5 OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4NCg0KVGhhbmtzIQ0KDQo=