From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.12975.1679031885327201878 for ; Thu, 16 Mar 2023 22:44:46 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=hrSLwbB8; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: andrei.warkentin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679031885; x=1710567885; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dejZOu7n98FAXSEeGuZ2++GtWL8L/1VNxyUwshxJy/k=; b=hrSLwbB87HaGjm0OCuzZ5mqiu5rfoVh6co3/6zILtJeVIH8cH5gq5TpT siuUsodVDO+Lz00fpZtjgfheBC8yTOxbvxwW+3o2slRorp9757wS+8VWg fB01Pt6uKp/Fb586wjNHWqCaDsea9kka8XiVnzDMU9s/k1HYOP8z7509z xXqrmZNupyXECP6EaWYxk+MZdB/vW/zKLwhQ6or48kp8Z0nMTTwwH6TC2 vcaFSdo/1m+/KP+LyLDutXij7tIM0cH367PdiWVo+ffQ527ORsnF8pJ31 yuCiq8da64qb3xlEPuyuptVE06tW0MXWBYJ7ZI5/diarjMflhGqo2ZOLh w==; X-IronPort-AV: E=McAfee;i="6600,9927,10651"; a="336881153" X-IronPort-AV: E=Sophos;i="5.98,268,1673942400"; d="scan'208";a="336881153" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2023 22:44:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10651"; a="630170011" X-IronPort-AV: E=Sophos;i="5.98,268,1673942400"; d="scan'208";a="630170011" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga003.jf.intel.com with ESMTP; 16 Mar 2023 22:44:44 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Thu, 16 Mar 2023 22:44:44 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Thu, 16 Mar 2023 22:44:43 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Thu, 16 Mar 2023 22:44:43 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.42) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Thu, 16 Mar 2023 22:44:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I5PmC3gLa+aAlb4EyPWhJeAkedHWbFfb/7b9lEz8Z7gtk0mjP0t0J5bAj55Ro5iwm89z6DrVBbOc3Avg5aAcxzE+OURtrffzRMDqYKLCrZhKQVXtf7xZUCfK6p1MOrPL9n7SqR8EIzgK5SOZfxEzfZVgR83IHSfx/fg/GYTSnisqG7n2tvEpj0RBIBrvhgZHpV5PnXolyxA1EKuUNS7nDJF0Ii0c76Vo37stOCwTmHPMCFV9vthvCCYc/6LTtJgGgoPIjjR+rE1E0JmGv+1tI0JNPy1md8Oy4+vBGSuwIobu0iGS0YCl/0s6RPD3YT5E8+NB4tmO4pwsmMSljOcA6w== 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=dejZOu7n98FAXSEeGuZ2++GtWL8L/1VNxyUwshxJy/k=; b=IGr6hfgWpyLT1kK6CLUBCnnIuwXcCLR4h5NA3joyHr5rPrsW65kdzWa7ADlYvfGK/GQX3GHLTMj+Cklh+KEGwNOBHE63fvYoPT3Vlc3TmLLFkg2kMmnRihkb0zSuXpj815hRmT+TIhoaaJIjBp4cMCy1SNek64tlykgFtrlEd5wxLoye1GKqKYXbEPdlIxdWYuy2vSzr/0kYnhzwK+vw/vU26vYWg9bJAoMc0bt56FdRtAdZPvwR58Rq7SVOte4EnmMT0P+WDjKtCg9wL1Ro4TppE/ONEaMHVTC/pxvGjIOBX6YQK8uIVw8SkpwGdTmIY7FAhabrY1lAnmFFO/wysA== 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 PH8PR11MB6856.namprd11.prod.outlook.com (2603:10b6:510:22b::7) by CH0PR11MB5313.namprd11.prod.outlook.com (2603:10b6:610:bc::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.35; Fri, 17 Mar 2023 05:44:40 +0000 Received: from PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1]) by PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1%6]) with mapi id 15.20.6178.024; Fri, 17 Mar 2023 05:44:40 +0000 From: "Andrei Warkentin" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" Subject: Re: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Topic: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Index: AQHZU3KAVGzPlaHoyEG7qZm8cJJIT67+cWFggAAClwCAAArmAA== Date: Fri, 17 Mar 2023 05:44:40 +0000 Message-ID: References: <20230310170456.5230-1-andrei.warkentin@intel.com> <20230310170456.5230-3-andrei.warkentin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH8PR11MB6856:EE_|CH0PR11MB5313:EE_ x-ms-office365-filtering-correlation-id: e6a11d56-e569-4d50-a77c-08db26aab3cf 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: Xxf98pO3/8my9R6/ruqFAE83MjTgJEcnXxp2JxsTilfFXI/zycFw683d5CBQq+d0Gg53XCEy1SgISFKHDKzDiC+dD9uvIePe5AJhTeO2eyTvySj07bg/daIylT5QZD/CnrDCOrdEVghSLZ6Uutl9ddfPb1COUHCI8gpy/zFujimy0P7Di4s6hpzKf6eXSxC2YbtG/e/oDMh8ihnnnAmZuyB/dM+CiAeKOZlHva/PKpk1WvUspJ7VZAzF0b8G7aj/t0sHuXTY5dd9PMZ5s0j+I9yYDWkS2fBGUnp2KUN33kfGC0eR41KYzxqxt8GW14PmJxPTLTBlN2scLofWoH+tgU5jB+eVarGX/4Kt0172cWQ03oLlK87YDaXctE/SL1AKuJPVa99G9z8DjhBHNY6AhyF+e1RiXa/dEXguDsqpBULLJdW8Oxr3iK/o3bh5sfxmVRU4z6jUd4BeAM7o9K1uwhX2i1kLzgmxCczcEPHRDxdTjNcsZXM3Zpuk8c7xcYAbgsZttrh9BNk3aicPGVy8lAJxIF2eWtq0dFlwH/HyfJj981Bdd++lHD/B2oeia/m7TDM8c2GB9ZgCCJQd/6j4mtAQ45LbEzDZuNIxToq4l0+hDHSW1mi/ACzAuZz0TzwaTrBolq+sv27MM04J/HEZmMAXKF4uZtj1BKhYs0ifzMHjlA64GSNt2yln3GbEFeQekwJBxjybRlXpgk2jfeLJWQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR11MB6856.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(136003)(39860400002)(376002)(346002)(396003)(366004)(451199018)(7696005)(478600001)(122000001)(54906003)(4326008)(38100700002)(2906002)(110136005)(8676002)(316002)(66476007)(66556008)(66946007)(76116006)(64756008)(66446008)(38070700005)(186003)(9686003)(53546011)(6506007)(26005)(83380400001)(55016003)(82960400001)(71200400001)(52536014)(41300700001)(33656002)(30864003)(107886003)(8936002)(86362001)(5660300002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V2IrWFVrNytaaDVVeXVMOGtqRDJnRnN5bFg1dGwwMmF2aC9TNkFabTgzWUQz?= =?utf-8?B?R01MWmk5azFqeWl3M0w1UVdsYXRiazNxOWYzK05hUkZkblFSUGtTU0JpZ0ZY?= =?utf-8?B?OUhEbHNha3Z0c0hOSTRxQlJSSjVTUGJqZlJBMkRCU1BML1B1Wk9tUWhVZmpk?= =?utf-8?B?ZjFiMDUrS1dmSktJQlJ3NnV5MGxoVWhaU2VZUkNwUzFzaVZQVkJYT2hxQkov?= =?utf-8?B?QUY0K1FlUnNweEU4MzAxVjBSbEc1QVBsRTNhUy9rbSswS3AxWTNsSUp0cjFV?= =?utf-8?B?KzdlQnJFQXJBYzVYbUNONDhhejhvVkpTcU5qTTZBWGZkaHgvcVArUlNWd3Fi?= =?utf-8?B?c1FQVXdtVE1KK1Y1eFY0cDlWNUhZTFl5S2FnWnVQaWZ3WitNaWMrOWdCRG5p?= =?utf-8?B?SGJ4V0U1aXpwdFRndUdrdUNITmo3MGhCMjB5WlFXMStSS1k4UE5nWWVJWG1E?= =?utf-8?B?MTg3TEQzdFphRll6c3RXMURSOE5PV0Yxb0RuRGpJU1c0YmZUNmVZRjdhZ0xj?= =?utf-8?B?Y3NqS05IMUtKNFVvVi9rTWlZT1RRQjhTMG1iMDJyVzlwemE4RmtMWUpJd3E1?= =?utf-8?B?K1l6cHJJOC96dUxQQi9YK0thT2Z5a2EzeFllR0ZvWkNDb0sxM1NHSmhKTlJ3?= =?utf-8?B?WUxOeU1oN3NBTENyVWZDWjlIdFhGS2FlUi9HOFZqaURmN1JjemJVMmZmb1R6?= =?utf-8?B?bW9Ha3ptMHphRldqN3V3LzROWGxSN3dXb1VDVWhlTERkU2VVSThENjIrNmwz?= =?utf-8?B?b2dKeXZIWWx0aVRkZmUyV2I3THFyVitiVjFNU3ljdVBGcnV6K0YyVHVlWUhX?= =?utf-8?B?MGFJOW5RWmhOZTI3K2U2T0RLbXhRMHlIR2tjU2YweXNTL0dDV1BvdWF4Unk1?= =?utf-8?B?OEhUYWE1QlBiQjVFZXdENUc1ZVZWbWVLeGR2L3h4aEJvQWgwdklNaSs1ZkNX?= =?utf-8?B?bm9wUW5ZTGpqNHVxL0tPREJyZTZVS2t4VGFLRGIvTVVYYk5wM2NXZktyYXRr?= =?utf-8?B?eHRObi9idlNMVWl3OERjTjVXZmhTL3FQQTM5ZHlOYWw0L2FVZytPN282c1pF?= =?utf-8?B?MTZBM2tpanY2b3hJYjV0OXovNnVOWWdSU21SMU5ZU3d2cUVUOW9iWWVvRWFJ?= =?utf-8?B?SU9yK1k3Q0djT3pXdTAySjRKQmcyUjl1NWswV0ZBSmtrNkYvS2g1S2FKTURx?= =?utf-8?B?YXlQSXlKZHV2cDVVR0NiY0RxTTRHZDRhOGkrZWc1VGo3UHF2NDQrdG1QTVhU?= =?utf-8?B?OUFubk5ES1lFcFJzTlBtdDRsMGpDQ0l6SzJJcE9DcG9LZkVpUmtGaW14VXg0?= =?utf-8?B?TkpjL01Ed1dMYjhZVmxud09HTTVXZVdRcm1vNUcvbGhLeHdadDhDRFdodVpN?= =?utf-8?B?bHFSOS9VV3kwQ0NMNzQyNHVyTTA4K0NZS1VjL3VxTFJIWjdyMnlKdUw2VXhR?= =?utf-8?B?TFJFeVJJUTZ1eXZyV2VXbGZiS1hyb25DbWFBMWIxcERqMERjVjF4SHRVTFRQ?= =?utf-8?B?VzY1V2NvaWJGVVUrVXRPR2JQSFk3a0dxbmZqcElLeEhqM2ZhMzNYNWRnOS9B?= =?utf-8?B?eDVRRjNBdGZLajFoSitTYmY0ZVVQQ2FmcmVxMGU1NVIxaWZScjN3RFlEZzRW?= =?utf-8?B?bHY2M2k5Z0F6cEZEUmRZUG5wQTBmQVZQdmQxaGVheUlhYkh4RnpYME1qOXYr?= =?utf-8?B?dUhjZFN1TGlaVHZqQk9kb2pxK1k2OEkzakoxYUJmY0d1Znc3OHBNc29kMWtl?= =?utf-8?B?WHQyZEFSbzlFdXVDK1JlSU5Xc0hYelY3alBWZHBNQU9CMmF6NGJXMFJZaUNr?= =?utf-8?B?NmtWcmswdFdQbVU3YUxSMmh2Y1VXaFltbHRkTWVXSy90QWl1bnl1UUZUaHlk?= =?utf-8?B?RVQ0Y0NwMit4MklyOEYycVg0bWwwdFVGbFAyc05NOENibThXdDZHQVlnb2Qx?= =?utf-8?B?WVh3OTlBU0txWDZpL1NtV3hBNmZyZFRqOU5TMU9GbWhnN3NWR0xSS3NxTk9a?= =?utf-8?B?dkVZR3MwWmNXSENvbXFpMzBXZXVQeGFuY0twTUl4TDhuSU5ZYmYrNHV5cERR?= =?utf-8?B?VWdROGtOVkkxZGdJVWQ0UU1ZbDBVbjlMTDczU1JSQUx6SjFjL2hseXMwa0ZX?= =?utf-8?B?ZzA2U05VTVNTOHdqREJoUExndytwLzYxS054K1JXbVdyV0pqZ0I4QldCMUZZ?= =?utf-8?B?OVE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH8PR11MB6856.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6a11d56-e569-4d50-a77c-08db26aab3cf X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Mar 2023 05:44:40.5614 (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: m/afHrQ8Q9pBzIXmKF0+SN2l0uFG39oxut/XRRQyRFEk8PdikK8Of9nmwWQ8kj14qdaZGTvzClbSzBRnTbFhqvtCrt7x4A4aPrxTHOjoQ0g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5313 Return-Path: andrei.warkentin@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UHJlUGkgcmVmZXJzIHRvIGEgU0VDLWxpa2Ugc3RhZ2UgaW4gYSBUaWFubyBpbXBsZW1lbnRhdGlv biB0aGF0IHNraXBzIHRoZSBQRUkgc3RhZ2UuIFJlYXNvbnMgZm9yIHNraXBwaW5nIFBFSSB1c3Vh bGx5IGNlbnRlciBhcm91bmQgbWVtb3J5IGluaXRpYWxpemF0aW9uIGJlaW5nIGRvbmUgYXQgYW4g ZWFybGllciBzdGFnZSBvZiBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiAtIGZvciBleGFtcGxlLCBw cmlvciBvciBwYXJ0IG9mIFRGLUEgZmlybXdhcmUgb24gQUFyY2g2NCBvciBwcmlvciBvciBwYXJ0 IG9mIFNCSSBpbXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYuDQoNCkUuZy4gQXJtVmlydFBrZy9QcmVQ aSBhbmQgT3ZtZlBrZy9SaXNjVlZpcnQvU2VjLiBUaGUgbGF0ZXIgaXMgbm90IGEgIlNFQyIgaW4g dGhlIHNlbmQgb2YgaGFuZGluZyBvZmYgdG8gUGVpQ29yZSwgYnV0IGluc3RlYWQgaGFuZHMgb2Zm IHRvIER4ZUNvcmUuDQoNClRoZXJlIGlzIG5vIGJhc2UgdHlwZSBmb3IgUHJlUGkuIFRoZSB0eXBl IGlzIHN0aWxsIFNFQy4gQnV0IGl0IGEpIGFzc3VtZXMgUkFNIGlzIGF2YWlsYWJsZSBiKSBidWls ZHMgSE9CcyBhbmQgaGFuZHMtb2ZmIHRvIERYRS4NCg0KVGhlIG5hbWUgaGFzIGJlZW4gYXJvdW5k IGZvciBhdCBsZWFzdCBoYWxmIGEgZGVjYWRlIG5vdyBhbmQgbWFraW5nIGl0IGEgcGFydCBvZiB0 aGUgU2VyaWFsUG9ydExpYiBjb21wb25lbnQgbmFtZSBpcyBpbXBvcnRhbnQgYXMgaXQgc2lnbmlm aWVzIHRoZSBzY2VuYXJpbyB3aGVyZSB0aGUgY29kZSBjYW4gYXBwbHkuDQoNCkENCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4gDQpTZW50OiBGcmlkYXksIE1hcmNoIDE3LCAyMDIzIDEyOjAxIEFN DQpUbzogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCkNjOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29t LmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEtpbm5leSwgTWlj aGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NClN1YmplY3Q6IFJFOiBbUEFUQ0gg djUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklTQy1WDQoN CldoYXQgaXMgdGhlIGRlZmluaXRpb24gb2YgIlByZVBJIj8gIFRoYXQgaXMgbm90IGEgcHJlZml4 IEkgaGF2ZSBzZWVuIHVzZWQgYmVmb3JlLg0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50 ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMTYsIDIwMjMgOTo1MyBQTQ0KPiBUbzog ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nIA0KPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29t LmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gU3ViamVjdDog UkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZv ciANCj4gUklTQy1WDQo+IA0KPiBIaSBmb2xrcywNCj4gDQo+IENhbiBJIGdldCBhIHJldmlldyBm b3IgdGhlIGNoYW5nZXMgdG8gTWRlUGtnLmRzYyB0byBpbmNsdWRlIHRoZSBuZXcgDQo+IGxpYnMg b24gUklTQy1WPyBUaGF0J3MgdGhlIG1pbm9yIHRoaW5nIHByZXZlbnRpbmcgdGhpcyBwYXRjaCBz ZXQgZnJvbSBiZWluZyBtZXJnZWQg8J+Yii4NCj4gDQo+IEENCj4gDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGlu QGludGVsLmNvbT4NCj4gU2VudDogRnJpZGF5LCBNYXJjaCAxMCwgMjAyMyAxMTowNSBBTQ0KPiBU bzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWku d2Fya2VudGluQGludGVsLmNvbT47IERhbmllbCBTY2hhZWZlciANCj4gPGdpdEBkYW5pZWxzY2hh ZWZlci5tZT47IFN1bmlsIFYgTCA8c3VuaWx2bEB2ZW50YW5hbWljcm8uY29tPjsgS2lubmV5LCAN Cj4gTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nIA0K PiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1 QGludGVsLmNvbT47IA0KPiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gU3Vi amVjdDogW1BBVENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBvcnRMaWIg Zm9yIFJJU0MtVg0KPiANCj4gVGhlc2UgYXJlIGltcGxlbWVudGF0aW9ucyBvZiBTZXJpYWxQb3J0 TGliIHVzaW5nIFNCSSBjb25zb2xlIHNlcnZpY2VzLg0KPiAtIFNlY1BlaVJpc2NWU2VyaWFsUG9y dExpYlNiaSBpcyBhcHByb3ByaWF0ZSBmb3IgU0VDL1BFSSAoWElQKSANCj4gZW52aXJvbm1lbnRz DQo+IC0gUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkgaXMgYXBwcm9wcmlhdGUgZm9yIFBy ZVBJL0RYRSANCj4gZW52aXJvbm1lbnRzDQo+IA0KPiBUZXN0ZWQgd2l0aDoNCj4gLSBRZW11IFJp c2NWVmlydCAobm9uLURCQ04gY2FzZSwgYmFja2VkIGJ5IFVBUlQpDQo+IC0gVGlueUVNVSArIFJp c2NWVmlydCAobm9uLURCQ04gY2FzZSwgSFRJRikNCj4gLSBUaW55RU1VICsgUmlzY1ZWaXJ0IChE QkNOIGNhc2UsIEhUSUYpDQo+IA0KPiBDYzogRGFuaWVsIFNjaGFlZmVyIDxnaXRAZGFuaWVsc2No YWVmZXIubWU+DQo+IENjOiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4NCj4g Q2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzog TGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiBDYzogWmhpZ3VhbmcgTGl1 IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiBBY2tlZC1ieTogR2VyZCBIb2ZmbWFubiA8a3Jh eGVsQHJlZGhhdC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBXYXJrZW50aW4gPGFuZHJl aS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiAtLS0NCj4gIE1kZVBrZy9NZGVQa2cuZHNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArDQo+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9Q cmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5pbmYgfCAgMzYgKysrDQo+ICBNZGVQa2cvTGli cmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGli U2JpLmluZiAgICAgfCAgMzkgKysrDQo+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jICAgfCAyODggKysr KysrKysrKysrKysrKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9y dExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYyAgICAgICB8IDIzMyArKysrKysr KysrKysrKysrDQo+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNi aS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkgfCAgMTYgKysNCj4gIE1kZVBrZy9M aWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRM aWJTYmkudW5pICAgICB8ICAxNiArKw0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA2MzAgaW5zZXJ0aW9u cygrKQ0KPiANCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuZHNjIGIvTWRlUGtnL01kZVBr Zy5kc2MgaW5kZXggDQo+IDBhYzc2MThiNDYyMy4uZmIzMTM0OTA0MmZiIDEwMDY0NA0KPiAtLS0g YS9NZGVQa2cvTWRlUGtnLmRzYw0KPiArKysgYi9NZGVQa2cvTWRlUGtnLmRzYw0KPiBAQCAtMTky LDUgKzE5Miw3IEBAIFtDb21wb25lbnRzLkFSTSwgQ29tcG9uZW50cy5BQVJDSDY0XQ0KPiANCj4g IFtDb21wb25lbnRzLlJJU0NWNjRdDQo+ICAgIE1kZVBrZy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxp Yi9CYXNlUmlzY1ZTYmlMaWIuaW5mDQo+ICsNCj4gKyBNZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNj VlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliUw0KPiArIGJpDQo+ICsg LmluZg0KPiArIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1By ZVBpRHhlUmlzY1ZTZXJpYWxQb3J0DQo+ICsgTGkNCj4gKyBiU2JpLmluZg0KPiANCj4gIFtCdWls ZE9wdGlvbnNdDQo+IGRpZmYgLS1naXQgDQo+IGEvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNj VlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnQNCj4gTGliU2JpLmluZiAN Cj4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydA0KPiBMaWJTYmkuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMWQ4NTQ0NzU2YmI5DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVS aXNjVlNlcmlhbA0KPiArKysgUG8NCj4gKysrIHJ0TGliU2JpLmluZg0KPiBAQCAtMCwwICsxLDM2 IEBADQo+ICsjIyBAZmlsZQ0KPiArIyAgU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJ IGNvbnNvbGUuDQo+ICsjDQo+ICsjICBNZWFudCBmb3IgUHJlUGkgYW5kIERYRSBlbnZpcm9ubWVu dHMgKHdoZXJlIGdsb2JhbHMgYXJlIGFsbG93ZWQpLg0KPiArU2VlICMgIFNlY1BlaVNlcmlhbFBv cnRMaWJSaXNjVlNiaSBmb3IgYSByZWR1Y2VkIHZhcmlhbnQgYXBwcm9wcmlhdGUgDQo+ICtmb3Ig U0VDICMgIGFuZCBQRUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiArIw0KPiArIyAgQ29weXJpZ2h0 IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ICMg DQo+ICsjDQo+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAj ICMgIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMUINCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0g UHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkNCj4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAg ICAgICAgICAgID0gUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5pDQo+ICsgIEZJTEVf R1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDg3MmFmNzQzLWFiNTYtNDViNC1hMDY1LTYwMjU2 N2Y0ODIwYw0KPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+ICsg IFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNT ICAgICAgICAgICAgICAgICAgPSBTZXJpYWxQb3J0TGliIHwgU0VDIERYRV9DT1JFIERYRV9EUklW RVIgRFhFX1JVTlRJTUVfRFJJVkVSIFVFRklfRFJJVkVSIFVFRklfQVBQTElDQVRJT04NCj4gKw0K PiArDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IFJJU0NWNjQN Cj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGli U2JpLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArDQo+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFJpc2NWU2JpTGliDQo+IGRpZmYgLS1naXQgDQo+IGEv TWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2Vy aWFsUG9ydExpYlMNCj4gYmkuaW5mIA0KPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+IGJpLmluZg0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdiYzdjZDQ3YzExYw0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9y dExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gKysrIExpDQo+ICsrKyBiU2JpLmluZg0K PiBAQCAtMCwwICsxLDM5IEBADQo+ICsjIyBAZmlsZQ0KPiArIyAgU2VyaWFsIFBvcnQgTGlicmFy eSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsjDQo+ICsjICBNZWFudCBmb3IgU0VDIGFuZCBQ RUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiArIw0KPiArIyAgRHVlIHRvIGxpbWl0YXRpb25zIG9m IFNCSSBjb25zb2xlIGludGVyZmFjZSBhbmQgWElQIGVudmlyb25tZW50cyAjIA0KPiArKG9uIHVz ZSBvZiBnbG9iYWxzKSwgdGhpcyBsaWJyYXJ5IGluc3RhbmNlIGRvZXMgbm90IGltcGxlbWVudCBy ZWFkaW5nIA0KPiArIyBhbmQgcG9sbGluZyB0aGUgc2VyaWFsIHBvcnQuIFNlZSBQcmVQaUR4ZVNl cmlhbFBvcnRMaWJSaXNjVlNiaSBmb3IgDQo+ICsjIHRoZSBmdWxsLWZlYXR1cmVkIHZhcmlhbnQg bWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzLg0KPiArIw0KPiArIyAgQ29weXJp Z2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ ICMgDQo+ICsjDQo+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dCAjICMgIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAg ICAgICAgICA9IDB4MDAwMTAwMUINCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAg ID0gU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpDQo+ICsgIE1PRFVMRV9VTklfRklMRSAgICAg ICAgICAgICAgICA9IFNlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkNCj4gKyAgRklMRV9H VUlEICAgICAgICAgICAgICAgICAgICAgID0gNjM5ZmFkMzgtNGJmZC00ZWI5LTlmMDktZTk3Yzc5 NDdkNDgwDQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IEJBU0UNCj4gKyAg VkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIExJQlJBUllfQ0xBU1Mg ICAgICAgICAgICAgICAgICA9IFNlcmlhbFBvcnRMaWIgfCBTRUMgUEVJX0NPUkUgUEVJTQ0KPiAr DQo+ICsNCj4gKyMNCj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gUklTQ1Y2 NA0KPiArIw0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGli U2JpLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArDQo+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFJpc2NWU2JpTGliDQo+IGRpZmYgLS1naXQgDQo+IGEv TWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNj VlNlcmlhbFBvcnQNCj4gTGliU2JpLmMgDQo+IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNj VlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnQNCj4gTGliU2JpLmMNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNThhNjU3M2VmMmQN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsDQo+ICsrKyBQbw0KPiArKysgcnRMaWJT YmkuYw0KPiBAQCAtMCwwICsxLDI4OCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFNlcmlhbCBQb3J0 IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiArDQo+ICsgIE1lYW50IGZvciBQcmVQ aSBhbmQgRFhFIGVudmlyb25tZW50cyAod2hlcmUgZ2xvYmFscyBhcmUgYWxsb3dlZCkuIA0KPiAr IFNlZSBTZWNQZWlTZXJpYWxQb3J0TGliUmlzY1ZTYmkgZm9yIGEgcmVkdWNlZCB2YXJpYW50IGFw cHJvcHJpYXRlIA0KPiArIGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ICsN Cj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZVJp c2NWU2JpTGliLmg+DQo+ICsNCj4gK1NUQVRJQyBCT09MRUFOICBtSGF2ZURiY24gICAgICAgICAg PSBGQUxTRTsNCj4gK1NUQVRJQyBCT09MRUFOICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBGQUxTRTsg U1RBVElDIEJPT0xFQU4gDQo+ICttSGF2ZUxlZ2FjeUdldGNoYXIgPSBGQUxTRTsNCj4gK1NUQVRJ QyBJTlQ2NCAgICBtTGFzdEdldENoYXIgICAgICAgPSAtMTsNCj4gKw0KPiArLyoqDQo+ICsgIElu aXRpYWxpemUgdGhlIHNlcmlhbCBkZXZpY2UgaGFyZHdhcmUuDQo+ICsNCj4gKyAgSWYgbm8gaW5p dGlhbGl6YXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiAr ICBJZiB0aGUgc2VyaWFsIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLCB0aGVu IHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gKyAgSWYgdGhlIHNlcmlhbCBkZXZpY2UgY291bGQg bm90IGJlIGluaXRpYWxpemVkLCB0aGVuIHJldHVybiBSRVRVUk5fREVWSUNFX0VSUk9SLg0KPiAr DQo+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIHdh cyBpbml0aWFsaXplZC4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNl cmlhbCBkZXZpY2UgY291bGQgbm90IGJlIGluaXRpYWxpemVkLg0KPiArDQo+ICsqKi8NCj4gK1JF VFVSTl9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9ydEluaXRpYWxpemUgKA0KPiArICBW T0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgU0JJX1JFVCAgUmV0Ow0KPiArDQo+ICsgIFJldCA9IFNi aUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgDQo+ICsgU0JJ X0VYVF9EQkNOKTsgIGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NF U1MpICYmDQo+ICsgICAgICAoUmV0LlZhbHVlICE9IDApKQ0KPiArICB7DQo+ICsgICAgbUhhdmVE YmNuID0gVFJVRTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBSZXQgPSBTYmlDYWxsIChTQklfRVhU X0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEsIFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVU Q0hBUik7DQo+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VD Q0VTUykgJiYNCj4gKyAgICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gKyAgICB7DQo+ICsgICAg ICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBUUlVFOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFJldCA9 IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VY VF8wXzFfQ09OU09MRV9HRVRDSEFSKTsNCj4gKyAgICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQu RXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiArICAgICAgICAoUmV0LlZhbHVlICE9IDApKQ0K PiArICAgIHsNCj4gKyAgICAgIG1IYXZlTGVnYWN5R2V0Y2hhciA9IFRSVUU7DQo+ICsgICAgfQ0K PiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgV3JpdGUgZGF0YSBmcm9tIGJ1ZmZlciB0byBzZXJpYWwgZGV2aWNlLg0KPiArDQo+ ICsgIFdyaXRlcyBOdW1iZXJPZkJ5dGVzIGRhdGEgYnl0ZXMgZnJvbSBCdWZmZXIgdG8gdGhlIHNl cmlhbCBkZXZpY2UuDQo+ICsgIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiB0 byB0aGUgc2VyaWFsIGRldmljZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgdGhlIHJldHVybiB2YWx1 ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3BlcmF0aW9uIGZh aWxlZC4NCj4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsgIElmIE51 bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gKw0KPiArICBAcGFyYW0gIEJ1 ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIGJlIHdyaXR0 ZW4uDQo+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRv IHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsNCj4gKyAgQHJldHZhbCAwICAgICAg ICAgICAgICAgIE51bWJlck9mQnl0ZXMgaXMgMC4NCj4gKyAgQHJldHZhbCA+MCAgICAgICAgICAg ICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgdmFsdWUgaXMgbGVzcyB0aGFuIE51 bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBmYWlsZWQuDQo+ICsNCj4gKyoq Lw0KPiArVUlOVE4NCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9ydFdyaXRlICgNCj4gKyAgSU4gVUlO VDggICpCdWZmZXIsDQo+ICsgIElOIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ICsgICkNCj4gK3sN Cj4gKyAgVUlOVE4gIEluZGV4Ow0KPiArDQo+ICsgIGlmIChtSGF2ZURiY24pIHsNCj4gKyAgICBT QklfUkVUICBSZXQ7DQo+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ICsgICAgICAgICAgICBTQklf RVhUX0RCQ04sDQo+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ05fV1JJVEUsDQo+ICsgICAgICAg ICAgICAzLA0KPiArICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcywNCj4gKyAgICAgICAgICAgICgo VUlOVE4pQnVmZmVyKSwNCj4gKyAgICAgICAgICAgIDANCj4gKyAgICAgICAgICAgICk7DQo+ICsg ICAgaWYgKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpICE9IEVGSV9TVUNDRVNTKSB7DQo+ICsg ICAgICByZXR1cm4gMDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gUmV0LlZhbHVlOw0K PiArICB9IGVsc2UgaWYgKG1IYXZlTGVnYWN5UHV0Y2hhcikgew0KPiArICAgIGZvciAoSW5kZXgg PSAwOyBJbmRleCA8IE51bWJlck9mQnl0ZXM7IEluZGV4KyspIHsNCj4gKyAgICAgIFNiaUNhbGwg KFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUiwgMCwgMSwgQnVmZmVyW0luZGV4XSk7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIEluZGV4Ow0KPiArICB9DQo+ICsNCj4gKyAgLyoNCj4g KyAgICogTmVpdGhlciBEQkNOIG9yIGxlZ2FjeSBleHRlbnNpb24gd2VyZSBwcmVzZW50Lg0KPiAr ICAgKi8NCj4gKyAgcmV0dXJuIE51bWJlck9mQnl0ZXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiAr ICBSZWFkIGRhdGEgZnJvbSBzZXJpYWwgZGV2aWNlIGFuZCBzYXZlIHRoZSBkYXRhcyBpbiBidWZm ZXIuDQo+ICsNCj4gKyAgUmVhZHMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gYSBzZXJp YWwgZGV2aWNlIGludG8gdGhlIGJ1ZmZlciANCj4gKyBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUg bnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZSBy ZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJlc3Qgb3Bl cmF0aW9uIGZhaWxlZC4NCj4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gKw0KPiArICBA cGFyYW0gIEJ1ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRv IHN0b3JlIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHBhcmFt ICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSByZWFk Lg0KPiArDQo+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVkOyBO byBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUg YWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmljZS4NCj4gKw0KPiAr KiovDQo+ICtVSU5UTg0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0UmVhZCAoDQo+ICsgIE9VVCBV SU5UOCAgKkJ1ZmZlciwNCj4gKyAgSU4gIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ICsgICkNCj4g K3sNCj4gKyAgVUlOVE4gIEluZGV4Ow0KPiArDQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUg KChJbmRleCA8IE51bWJlck9mQnl0ZXMpICYmIFNlcmlhbFBvcnRQb2xsICgpKSB7DQo+ICsgICAg QnVmZmVyW0luZGV4KytdID0gKFVJTlQ4KW1MYXN0R2V0Q2hhcjsNCj4gKyAgICBtTGFzdEdldENo YXIgICAgPSAtMTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBJbmRleDsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55 IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiArDQo+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmlj ZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiArICBJ ZiB0aGVyZSBpcyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNl LCB0aGVuIFRSVUUgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vIGRhdGEgd2FpdGlu ZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gRkFMU0UgaXMgcmV0dXJu ZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgICAgIERhdGEgaXMgd2FpdGluZyB0 byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgICAgICBUaGVyZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJp YWwgZGV2aWNlLg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArU2VyaWFs UG9ydFBvbGwgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgLyoNCj4gKyAgICogQ2Fy ZWZ1bC4gT3BlblNCSSB3aXRoIEhUSUYgY29uc29sZSB3aWxsIHJldHVybiAtMSBmb2xsb3dlZCBi eSAtMg0KPiArICAgKiBpZiB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgcmVjZWl2ZWQuIFNvIGp1c3Qg Y2hlY2sgZm9yIHZhbHVlcyA+PSAwLg0KPiArICAgKi8NCj4gKw0KPiArICBpZiAobUxhc3RHZXRD aGFyID49IDApIHsNCj4gKyAgICByZXR1cm4gVFJVRTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICht SGF2ZURiY24pIHsNCj4gKyAgICBVSU5UOCAgICBCdWZmZXI7DQo+ICsgICAgU0JJX1JFVCAgUmV0 Ow0KPiArDQo+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ICsgICAgICAgICAgICBTQklfRVhUX0RC Q04sDQo+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ05fUkVBRCwNCj4gKyAgICAgICAgICAgIDMs DQo+ICsgICAgICAgICAgICAxLA0KPiArICAgICAgICAgICAgKChVSU5UTikmQnVmZmVyKSwNCj4g KyAgICAgICAgICAgIDANCj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKChUcmFuc2xhdGVF cnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gKyAgICAgICAgKFJldC5WYWx1 ZSA9PSAxKSkNCj4gKyAgICB7DQo+ICsgICAgICBtTGFzdEdldENoYXIgPSBCdWZmZXI7DQo+ICsg ICAgfQ0KPiArICB9IGVsc2UgaWYgKG1IYXZlTGVnYWN5R2V0Y2hhcikgew0KPiArICAgIG1MYXN0 R2V0Q2hhciA9IChJTlQ2NClTYmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX0dFVENIQVIsIDAs IA0KPiArIDApLkVycm9yOyAgfQ0KPiArDQo+ICsgIHJldHVybiBtTGFzdEdldENoYXIgPj0gMDsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlh bCBkZXZpY2UuDQo+ICsNCj4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgU2V0cyB0 aGUgYml0cyBvZiBDb250cm9sIHRoYXQgYXJlIHNldHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg UkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBuZXcgY29udHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRo ZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUg c2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiArICBAcmV0 dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rp b25pbmcgY29ycmVjdGx5Lg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArU2VyaWFsUG9ydFNldENvbnRyb2wgKA0KPiArICBJTiBVSU5UMzIgIENvbnRyb2wNCj4g KyAgKQ0KPiArew0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBSZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sIGJpdHMgb24gYSBzZXJp YWwgZGV2aWNlLg0KPiArDQo+ICsgIEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIEEgcG9p bnRlciB0byByZXR1cm4gdGhlIGN1cnJlbnQgY29udHJvbCBzaWduYWxzIGZyb20gdGhlIHNlcmlh bCBkZXZpY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIGNv bnRyb2wgYml0cyB3ZXJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHJldHZh bCBSRVRVUk5fVU5TVVBQT1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9y dCB0aGlzIG9wZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhl IHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gKw0KPiArKiov DQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRHZXRDb250cm9sICgN Cj4gKyAgT1VUIFVJTlQzMiAgKkNvbnRyb2wNCj4gKyAgKQ0KPiArew0KPiArICAqQ29udHJvbCA9 IDA7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsg IFNldHMgdGhlIGJhdWQgcmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0cmFuc21pdC9yZWNlaWNl IHRpbWUgb3V0LCANCj4gK3Bhcml0eSwNCj4gKyAgZGF0YSBiaXRzLCBhbmQgc3RvcCBiaXRzIG9u IGEgc2VyaWFsIGRldmljZS4NCj4gKw0KPiArICBAcGFyYW0gQmF1ZFJhdGUgICAgICAgICAgIFRo ZSByZXF1ZXN0ZWQgYmF1ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVlIG9mIDAgd2lsbCB1c2UgdGhl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlJ3MgZGVmYXVsdCBpbnRlcmZh Y2Ugc3BlZWQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUg dmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gUmV2ZWl2ZUZpZm9EZXB0aCAgIFRoZSBy ZXF1ZXN0ZWQgZGVwdGggb2YgdGhlIEZJRk8gb24gdGhlIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVG aWZvRGVwdGggdmFsdWUgb2YgMCB3aWxsIHVzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBkZXZpY2UncyBkZWZhdWx0IEZJRk8gZGVwdGguDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFy YW0gVGltZW91dCAgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xl IGNoYXJhY3RlciBpbiBtaWNyb3NlY29uZHMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGhpcyB0aW1lb3V0IGFwcGxpZXMgdG8gYm90aCB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUg c2lkZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UuIEEg VGltZW91dCB2YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHRpbWUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBA cGFyYW0gUGFyaXR5ICAgICAgICAgICAgIFRoZSB0eXBlIG9mIHBhcml0eSB0byB1c2Ugb24gdGhp cyBzZXJpYWwgZGV2aWNlLiBBIFBhcml0eSB2YWx1ZSBvZg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgcGFy aXR5IHZhbHVlLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhl IHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKyAgQHBhcmFtIERhdGFCaXRzICAgICAgICAgICBUaGUg bnVtYmVyIG9mIGRhdGEgYml0cyB0byB1c2Ugb24gdGhlIHNlcmlhbCBkZXZpY2UuIEEgRGF0YUJp dHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNlIHRo ZSBkZXZpY2UncyBkZWZhdWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFy YW0gU3RvcEJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzIHRvIHVzZSBvbiB0 aGlzIHNlcmlhbCBkZXZpY2UuIEEgU3RvcEJpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2YWx1ZSBvZiBEZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1 bHQgbnVtYmVyIG9mDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBiaXRzLg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVh bGx5IHNldC4NCj4gKw0KPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAgVGhl IG5ldyBhdHRyaWJ1dGVzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0 dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qg c3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1bnN1cHBvcnRlZCB2 YWx1ZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgICAgIFRoZSBzZXJpYWwg ZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ICsNCj4gKyoqLw0KPiArUkVU VVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ICsg IElOIE9VVCBVSU5UNjQgICAgICAgICAgICAgICpCYXVkUmF0ZSwNCj4gKyAgSU4gT1VUIFVJTlQz MiAgICAgICAgICAgICAgKlJlY2VpdmVGaWZvRGVwdGgsDQo+ICsgIElOIE9VVCBVSU5UMzIgICAg ICAgICAgICAgICpUaW1lb3V0LA0KPiArICBJTiBPVVQgRUZJX1BBUklUWV9UWVBFICAgICAqUGFy aXR5LA0KPiArICBJTiBPVVQgVUlOVDggICAgICAgICAgICAgICAqRGF0YUJpdHMsDQo+ICsgIElO IE9VVCBFRklfU1RPUF9CSVRTX1RZUEUgICpTdG9wQml0cw0KPiArICApDQo+ICt7DQo+ICsgIHJl dHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdCANCj4gYS9NZGVQa2cvTGli cmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGli Uw0KPiBiaS5jIA0KPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNi aS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+IGJpLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wYWQ1OTMxYmUzYWUNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVp UmlzY1ZTZXJpYWxQb3J0DQo+ICsrKyBMaQ0KPiArKysgYlNiaS5jDQo+IEBAIC0wLDAgKzEsMjMz IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJ IGNvbnNvbGUuDQo+ICsNCj4gKyAgTWVhbnQgZm9yIFNFQyBhbmQgUEVJIChYSVApIGVudmlyb25t ZW50cy4NCj4gKw0KPiArICBEdWUgdG8gbGltaXRhdGlvbnMgb2YgU0JJIGNvbnNvbGUgaW50ZXJm YWNlIGFuZCBYSVAgZW52aXJvbm1lbnRzICANCj4gKyAob24gdXNlIG9mIGdsb2JhbHMpLCB0aGlz IGxpYnJhcnkgaW5zdGFuY2UgZG9lcyBub3QgaW1wbGVtZW50IA0KPiArIHJlYWRpbmcgIGFuZCBw b2xsaW5nIHRoZSBzZXJpYWwgcG9ydC4gU2VlIA0KPiArIFByZVBpRHhlU2VyaWFsUG9ydExpYlJp c2NWU2JpIGZvciAgdGhlIGZ1bGwtZmVhdHVyZWQgdmFyaWFudCBtZWFudCBmb3IgUHJlUGkgYW5k IERYRSBlbnZpcm9ubWVudHMuDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5j bHVkZSA8QmFzZS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQmFzZVJpc2NWU2JpTGliLmg+DQo+ICsNCj4gKy8qKg0KPiArICBJ bml0aWFsaXplIHRoZSBzZXJpYWwgZGV2aWNlIGhhcmR3YXJlLg0KPiArDQo+ICsgIElmIG5vIGlu aXRpYWxpemF0aW9uIGlzIHJlcXVpcmVkLCB0aGVuIHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4g KyAgSWYgdGhlIHNlcmlhbCBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCwgdGhl biByZXR1cm4gUkVUVVJOX1NVQ0NFU1MuDQo+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIGNvdWxk IG5vdCBiZSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVUVVJOX0RFVklDRV9FUlJPUi4NCj4g Kw0KPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUgc2VyaWFsIGRldmljZSB3 YXMgaW5pdGlhbGl6ZWQuDQo+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgIFRoZSBz ZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4NCj4gKw0KPiArKiovDQo+ICtS RVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRJbml0aWFsaXplICgNCj4gKyAg Vk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIFdyaXRlIGRhdGEgZnJvbSBidWZmZXIgdG8gc2VyaWFsIGRldmljZS4N Cj4gKw0KPiArICBXcml0ZXMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRv IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdy aXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZSByZXR1 cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJh dGlvbiBmYWlsZWQuDQo+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiAr ICBJZiBOdW1iZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ICsNCj4gKyAgQHBh cmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZlciB0byBi ZSB3cml0dGVuLg0KPiArICBAcGFyYW0gIE51bWJlck9mQnl0ZXMgICAgVGhlIG51bWJlciBvZiBi eXRlcyB0byB3cml0dGVuIHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArDQo+ICsgIEByZXR2YWwg MCAgICAgICAgICAgICAgICBOdW1iZXJPZkJ5dGVzIGlzIDAuDQo+ICsgIEByZXR2YWwgPjAgICAg ICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZp Y2UuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIGxlc3Mg dGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiAr DQo+ICsqKi8NCj4gK1VJTlRODQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRXcml0ZSAoDQo+ICsg IElOIFVJTlQ4ICAqQnVmZmVyLA0KPiArICBJTiBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiArICAp DQo+ICt7DQo+ICsgIFNCSV9SRVQgIFJldDsNCj4gKyAgVUlOVE4gICAgSW5kZXg7DQo+ICsNCj4g KyAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAx LCANCj4gKyBTQklfRVhUX0RCQ04pOyAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9 PSBFRklfU1VDQ0VTUykgJiYNCj4gKyAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ICsgIHsNCj4g KyAgICBSZXQgPSBTYmlDYWxsICgNCj4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTiwNCj4gKyAg ICAgICAgICAgIFNCSV9FWFRfREJDTl9XUklURSwNCj4gKyAgICAgICAgICAgIDMsDQo+ICsgICAg ICAgICAgICBOdW1iZXJPZkJ5dGVzLA0KPiArICAgICAgICAgICAgKChVSU5UTilCdWZmZXIpLA0K PiArICAgICAgICAgICAgMA0KPiArICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoVHJhbnNsYXRl RXJyb3IgKFJldC5FcnJvcikgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gKyAgICAgIHJldHVybiAwOw0K PiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiBSZXQuVmFsdWU7DQo+ICsgIH0NCj4gKw0KPiAr ICBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEs IA0KPiArIFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUik7ICBpZiAoKFRyYW5zbGF0ZUVycm9y IChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiArICAgICAgKFJldC5WYWx1ZSAhPSAw KSkNCj4gKyAgew0KPiArICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IE51bWJlck9mQnl0ZXM7 IEluZGV4KyspIHsNCj4gKyAgICAgIFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hB UiwgMCwgMSwgQnVmZmVyW0luZGV4XSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIElu ZGV4Ow0KPiArICB9DQo+ICsNCj4gKyAgLyoNCj4gKyAgICogTmVpdGhlciBEQkNOIG9yIGxlZ2Fj eSBleHRlbnNpb24gd2VyZSBwcmVzZW50Lg0KPiArICAgKi8NCj4gKyAgcmV0dXJuIE51bWJlck9m Qnl0ZXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkIGRhdGEgZnJvbSBzZXJpYWwgZGV2 aWNlIGFuZCBzYXZlIHRoZSBkYXRhcyBpbiBidWZmZXIuDQo+ICsNCj4gKyAgUmVhZHMgTnVtYmVy T2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gYSBzZXJpYWwgZGV2aWNlIGludG8gdGhlIGJ1ZmZlciAN Cj4gKyBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJl YWQgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51 bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJlc3Qgb3BlcmF0aW9uIGZhaWxlZC4NCj4gKyAgSWYgQnVm ZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVy bywgdGhlbiByZXR1cm4gMC4NCj4gKw0KPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgVGhl IHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBkYXRhIHJlYWQgZnJvbSB0 aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1i ZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSByZWFkLg0KPiArDQo+ICsgIEByZXR2YWwgMCAgICAg ICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVkOyBObyBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ICsg IEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFk IGZyb20gc2VyaWFsIGRldmljZS4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0KPiArRUZJQVBJDQo+ ICtTZXJpYWxQb3J0UmVhZCAoDQo+ICsgIE9VVCBVSU5UOCAgKkJ1ZmZlciwNCj4gKyAgSU4gIFVJ TlROICBOdW1iZXJPZkJ5dGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBQb2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlz IGFueSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4gKw0KPiArICBQb2xscyBhIHNlcmlhbCBk ZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4g KyAgSWYgdGhlcmUgaXMgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRl dmljZSwgdGhlbiBUUlVFIGlzIHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBpcyBubyBkYXRhIHdh aXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0aGVuIEZBTFNFIGlzIHJl dHVybmVkLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICAgICBEYXRhIGlzIHdhaXRp bmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgICAgVGhlcmUgaXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUg c2VyaWFsIGRldmljZS4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1Nl cmlhbFBvcnRQb2xsICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBGQUxT RTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNl cmlhbCBkZXZpY2UuDQo+ICsNCj4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgU2V0 cyB0aGUgYml0cyBvZiBDb250cm9sIHRoYXQgYXJlIHNldHRhYmxlLg0KPiArDQo+ICsgIEByZXR2 YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBuZXcgY29udHJvbCBiaXRzIHdlcmUgc2V0IG9u IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBU aGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiArICBA cmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVu Y3Rpb25pbmcgY29ycmVjdGx5Lg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArU2VyaWFsUG9ydFNldENvbnRyb2wgKA0KPiArICBJTiBVSU5UMzIgIENvbnRyb2wN Cj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4g Ky8qKg0KPiArICBSZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sIGJpdHMgb24gYSBz ZXJpYWwgZGV2aWNlLg0KPiArDQo+ICsgIEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIEEg cG9pbnRlciB0byByZXR1cm4gdGhlIGN1cnJlbnQgY29udHJvbCBzaWduYWxzIGZyb20gdGhlIHNl cmlhbCBkZXZpY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhl IGNvbnRyb2wgYml0cyB3ZXJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHJl dHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3Vw cG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAg VGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gKw0KPiAr KiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRHZXRDb250cm9s ICgNCj4gKyAgT1VUIFVJTlQzMiAgKkNvbnRyb2wNCj4gKyAgKQ0KPiArew0KPiArICAqQ29udHJv bCA9IDA7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ ICsgIFNldHMgdGhlIGJhdWQgcmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0cmFuc21pdC9yZWNl aWNlIHRpbWUgb3V0LCANCj4gK3Bhcml0eSwNCj4gKyAgZGF0YSBiaXRzLCBhbmQgc3RvcCBiaXRz IG9uIGEgc2VyaWFsIGRldmljZS4NCj4gKw0KPiArICBAcGFyYW0gQmF1ZFJhdGUgICAgICAgICAg IFRoZSByZXF1ZXN0ZWQgYmF1ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVlIG9mIDAgd2lsbCB1c2Ug dGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlJ3MgZGVmYXVsdCBpbnRl cmZhY2Ugc3BlZWQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0 aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gUmV2ZWl2ZUZpZm9EZXB0aCAgIFRo ZSByZXF1ZXN0ZWQgZGVwdGggb2YgdGhlIEZJRk8gb24gdGhlIHJlY2VpdmUgc2lkZSBvZiB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2Vp dmVGaWZvRGVwdGggdmFsdWUgb2YgMCB3aWxsIHVzZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoZSBkZXZpY2UncyBkZWZhdWx0IEZJRk8gZGVwdGguDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBA cGFyYW0gVGltZW91dCAgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2lu Z2xlIGNoYXJhY3RlciBpbiBtaWNyb3NlY29uZHMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGhpcyB0aW1lb3V0IGFwcGxpZXMgdG8gYm90aCB0aGUgdHJhbnNtaXQgYW5kIHJlY2Vp dmUgc2lkZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2Uu IEEgVGltZW91dCB2YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHRpbWUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiAr ICBAcGFyYW0gUGFyaXR5ICAgICAgICAgICAgIFRoZSB0eXBlIG9mIHBhcml0eSB0byB1c2Ugb24g dGhpcyBzZXJpYWwgZGV2aWNlLiBBIFBhcml0eSB2YWx1ZSBvZg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQg cGFyaXR5IHZhbHVlLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwg dGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKyAgQHBhcmFtIERhdGFCaXRzICAgICAgICAgICBU aGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0byB1c2Ugb24gdGhlIHNlcmlhbCBkZXZpY2UuIEEgRGF0 YUJpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNl IHRoZSBkZXZpY2UncyBkZWZhdWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBA cGFyYW0gU3RvcEJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzIHRvIHVzZSBv biB0aGlzIHNlcmlhbCBkZXZpY2UuIEEgU3RvcEJpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZSBvZiBEZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRl ZmF1bHQgbnVtYmVyIG9mDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBiaXRz Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFj dHVhbGx5IHNldC4NCj4gKw0KPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAg VGhlIG5ldyBhdHRyaWJ1dGVzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBA cmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBu b3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1bnN1cHBvcnRl ZCB2YWx1ZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgICAgIFRoZSBzZXJp YWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ICsNCj4gKyoqLw0KPiAr UkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ ICsgIElOIE9VVCBVSU5UNjQgICAgICAgICAgICAgICpCYXVkUmF0ZSwNCj4gKyAgSU4gT1VUIFVJ TlQzMiAgICAgICAgICAgICAgKlJlY2VpdmVGaWZvRGVwdGgsDQo+ICsgIElOIE9VVCBVSU5UMzIg ICAgICAgICAgICAgICpUaW1lb3V0LA0KPiArICBJTiBPVVQgRUZJX1BBUklUWV9UWVBFICAgICAq UGFyaXR5LA0KPiArICBJTiBPVVQgVUlOVDggICAgICAgICAgICAgICAqRGF0YUJpdHMsDQo+ICsg IElOIE9VVCBFRklfU1RPUF9CSVRTX1RZUEUgICpTdG9wQml0cw0KPiArICApDQo+ICt7DQo+ICsg IHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdCANCj4gYS9NZGVQa2cv TGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFs UG9ydA0KPiBMaWJTYmkudW5pIA0KPiBiL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJp YWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0DQo+IExpYlNiaS51bmkNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi43YjIyY2FhNWEwOTANCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFs UG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsDQo+ICsrKyBQbw0KPiArKysgcnRMaWJTYmku dW5pDQo+IEBAIC0wLDAgKzEsMTYgQEANCj4gKy8vIC8qKiBAZmlsZQ0KPiArLy8gU2VyaWFsIFBv cnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsvLw0KPiArLy8gU2VyaWFsIFBv cnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsvLw0KPiArLy8gQ29weXJpZ2h0 IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+IC8v IA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgLy8g Ly8gKiovDQo+ICsNCj4gKw0KPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNv bnNvbGUiDQo+ICsNCj4gKyNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgIlNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xl LiINCj4gKw0KPiBkaWZmIC0tZ2l0IA0KPiBhL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+IGJpLnVuaSANCj4gYi9N ZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJp YWxQb3J0TGliUw0KPiBiaS51bmkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAwLi43YjIyY2FhNWEwOTANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cv TGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0 DQo+ICsrKyBMaWJTYmkudW5pDQo+IEBAIC0wLDAgKzEsMTYgQEANCj4gKy8vIC8qKiBAZmlsZQ0K PiArLy8gU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsvLw0K PiArLy8gU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsvLw0K PiArLy8gQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+IC8vIA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQgLy8gLy8gKiovDQo+ICsNCj4gKw0KPiArI3N0cmluZyBTVFJfTU9EVUxFX0FC U1RSQUNUICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBi YWNrZWQgYnkgU0JJIGNvbnNvbGUiDQo+ICsNCj4gKyNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQ VElPTiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2Vk IGJ5IFNCSSBjb25zb2xlLiINCj4gKw0KPiAtLQ0KPiAyLjI1LjENCg0K