From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.7403.1680034833051120653 for ; Tue, 28 Mar 2023 13:20:33 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Xv7YPCM3; spf=pass (domain: intel.com, ip: 192.55.52.136, 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=1680034833; x=1711570833; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=mn1/LMSqRBtH9ZTAwt/tWktY0bs2/lZ/8ysiJR8CbTY=; b=Xv7YPCM33Jc5zJNbN9NB25OQKl+Gqr/xLajNGYnbGaVQFZ4QvGqiJYsa 0V46KGMjI95k+c9j9ZI0wvRW3eRRvw6J0IW7jcpIXiB/2FAH9vIhQFdop XrndJhD89zh2aXDXm0tGRGIXk1HcKBsTIa5Xfl8zWgl74sjDuq5nXKKvp 3a0ka3J2mtunyfKDEYM7LDOQbOfVOFiGfauYz4FGRquYC6kHLxrKFQA5D GRbqFofEyS2XescR9olmTXgamSBFY4q5esJb5N5LbQ/8j73vgTWQU6Djw WvIuZ2m/d4wvZHT6KvMBU2/sYBTjA6ILNwq83jUgbQhGf3qj9evfI/GIm w==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="320335904" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="320335904" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 13:20:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="1013703930" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="1013703930" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP; 28 Mar 2023 13:20:32 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:20:32 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:20:31 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 28 Mar 2023 13:20:31 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) 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.2507.21; Tue, 28 Mar 2023 13:20:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WQsOSNzgHA0w7tS/KZPC9FPdwyXyUD22I3jp/I0BEHtzV99ccZyp2j0rCpi/2S8DQH5yhM8B54xvE/uysKutYz6a4uUxcYynNlSjVARvcSQJQ2RYD+fDlcxCAtIVzgsVQb+A1MLjDQAVC/pbrMfC5ZQ4HDCBzYilMF3UM0gs10rdzZ8DuwOSfYRMgWXgRVqCnsC2pS9LQOlVgQs01ONmqFbqtveEMvby71Bo2ZTr1V8q9cakbjYDPXR67tDzWQUORRgLngw4ZCt0wRwME+SIBa5jcGjAnCdskxKtLu/GkCAMmJy80xfgq7Ow25VB57lORkmvj1CARX+f636qOx94nA== 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=mn1/LMSqRBtH9ZTAwt/tWktY0bs2/lZ/8ysiJR8CbTY=; b=CNQJAU2nr9XrODQ7Gz54e99N+hAZMATk7Rc+LLnTsFKn2XrwaEKJm0hLVWC59FsCpoPtZvhF191IgtXvEOrjJjKluUaxgKeEnk/XzhCUxysWIGpBsORSmFrXPNdlI6WPqoOK7Y5xgA7coM7+IprSZIq1pGJLsl55TrUi1RYeSIDB84NXPzb6d2TQUVOTr6tyPAc6R1a/+6TnpQjn7ZOwIpBXkmmRGlYHB3uEj06De+n/SD3Z/7T3/gsgSSXaNq0wn/valokmhzhXAbrLIVeHSrPbLXhXgOrlh+Cy+ZJ7bo7kkEJ5P7+JfH1GT6LfZNdlMFALxPmB8YPdDIkvvzVofw== 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 IA1PR11MB8224.namprd11.prod.outlook.com (2603:10b6:208:44f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Tue, 28 Mar 2023 20:20:27 +0000 Received: from PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1]) by PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1%4]) with mapi id 15.20.6222.033; Tue, 28 Mar 2023 20:20:26 +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+cWFggAAClwCAAArmAIAQbaEAgAHLPOCAAAPLAIAAAXBw Date: Tue, 28 Mar 2023 20:20:26 +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_|IA1PR11MB8224:EE_ x-ms-office365-filtering-correlation-id: 1e8cb12e-52e5-4aaa-85a3-08db2fc9de36 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: fgUv5iVxFMkz/MH3snQdK7L/B623vBfeBMtdOSwTtJT7JCEXv/vHnGSzKFpmT5hWOFHbFokMXnj46Q8zt/l9zSB/JRbt+DoUtivGRINkf5Q13YHEkjCNg2zzXQ/ZGlzxAPwlB1ZIlzKZbaWYV74+Pux1qT1XAJnrA4St/dZvYpplc8bZchSFedB1j+UW8ssdXSGWxznRyJMIuS5qu+n3x9ZaLXCwGJ+jhHF8d/d/O7aOTWnI3lRd760uGTHR8Woj53oOkLliLq2uxlKbKTTLFyBfd+HyXPV977ZyT4AJFvCzFZhphmlis2j3uFkf0fzzKVdZ/BTSigQU7H5e35DIQpkYRerXOKBGcxux1laYRjvFxxeC9vUGs4huY5X8W/dwVVrRc340cCHZhIxoJYQ2lNWTXAYvUlgafg7PRtHwl3WOwCygvMAYo/7tFtFCFl+Q/wYRk38OtJ/sk4BE9i3GpzrIce4FQB7kpM2/80e90ldH7GGJCrvhh80W5CmVZeeCiynFDJK7hbxaOBpr+hulvES2B7Tn2ALEwfTz/dcIbFM8PJnEUkBWKXLX4mwSQn8ULwIbXX8jrnROqIYX3gHRWvPOwTLKjjlNRNS0DM5PuxEg755qC97b60JjTWTFGNat 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:(13230028)(376002)(366004)(396003)(39860400002)(136003)(346002)(451199021)(83380400001)(186003)(33656002)(26005)(6506007)(53546011)(9686003)(107886003)(478600001)(71200400001)(7696005)(54906003)(110136005)(316002)(86362001)(41300700001)(4326008)(64756008)(8676002)(66446008)(8936002)(82960400001)(66476007)(66556008)(66946007)(76116006)(122000001)(52536014)(55016003)(5660300002)(2906002)(30864003)(38100700002)(38070700005)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QmJ5TkliNS8wNFZXM25QMUFNV2MwNTZyZUdqNlNpOTBjaXNVSGdvSEZ1Wmo3?= =?utf-8?B?K3JyQTNqQ3lpbE41cnM3eE9DQmY2VEpZbXMxOVN6M0lhRzY5WDRmWU5GbFZ0?= =?utf-8?B?d3h3MGs1M0dSdG0zVFU3dG94S0hLK0p2Qlc3Mlp4MEZORFpmbHpVZ1FkbUFC?= =?utf-8?B?ZS9uZVdaUFR6ZG9RY1hhOWQxeFhXanZUbVVXVWNVZ2JWTENCVDh0a2tIeUxo?= =?utf-8?B?M01iVjNkUEcwMGZ3ZVgxV0tnTm5NUDU3eUNjV2pkN1FZakF4RHJsblI2QVFP?= =?utf-8?B?cUp0OVM0aDAwUjFuTkdYWjhLOUpLTEpIeThVUTJjMWV4YWhCajZqSTU5bmRx?= =?utf-8?B?eERLbVhmdnZQb0VhNVpmTm92VzVicWJhZ2g2eUFncWthQmE1WE9mUWVOSDh0?= =?utf-8?B?WUdQR3VEb3FsTjdhcXpxc1FMOWx6YkNJMkttMGk5d0oxQS9COEtONWQwbWY4?= =?utf-8?B?WmcwWEZMaVp0OTJZNllMcTM3eEdLbldsTHI3Y09sd1N2NUZXQVFTSVVlY1Nq?= =?utf-8?B?bjZaZXFtT2VWN2V5NGVKSjNJWmRIWm9qU0k4RWZLdTgvbEpJQWtwU0F2eHZu?= =?utf-8?B?aEVuMzcyZzR4SHYzc3V2dnFJREEzWWVpSGFNLzRINnRkN08yUlhLblpPTWYv?= =?utf-8?B?bjNuK0xNN2RXTURiUFpYMXVtSDNIZmtUcmFiMWQ1T0dUcERxTkx6MzJFVnhI?= =?utf-8?B?eGRPK0s1SXkvcjhYY01DOXYwT2tvcEZCOHpJUVNzOVNQbDc3MWhTOFBwQmE0?= =?utf-8?B?c1p0Vk55cktkOStpTFJ5cktkOWFMV1RmOEY0Sk9qOXFvOTdkZkFzVUhDQ25O?= =?utf-8?B?a2hUdkV5ZUlkZk1FdEYyMEszeFhVUHRwOEt2RE5QdGtpcmRhS0Y2Z1RSNEFk?= =?utf-8?B?Y3JyWjQyWnVYOFlHNEVpb2o5Kzh2R1ZQWEwzVUtIZjJOZkpMdE9ZbVMzTmZC?= =?utf-8?B?UVhoajZLYzVDVjhybTFiY1N2bVQrdkN4ZndJYmtxUTQ4Qk12Sjl4Um94c1Ja?= =?utf-8?B?YlMxWFNEcnFxUnBOTHFBRURjSm1WdDFEd1R6UENoMGZKb0tKTCtJWmJ3RjFK?= =?utf-8?B?Z2hGNEM0K2JlRGNwTkNmUVRkQlJmYWpkcUtDKzl5OTRqdlV0Rkk2bXVWcTE3?= =?utf-8?B?Wjc4Vm9QdVBTaWdTVTd6YnIwNEdwNzlPU0tpdVZNcjN1R3VWcU9vek1tN0gx?= =?utf-8?B?WE5neEZkeFVMVDJLYk4vV1J3QXZMUnAyV3FMUS80MEVnbktQRXRqdGNvQ2t6?= =?utf-8?B?aktURTRGSVozakZ5U1N1MmJBWTVwV05xaE1BRjR1Z0FBcXFqN0J2VzN6T2ZC?= =?utf-8?B?Y29yVm92aWs5RWdMM1BZamhwOUppM3p0Z1pzdWYxb0I4L2dRbXJ1ZXNKVkZs?= =?utf-8?B?SFlJb2gxRFdWTVJVT3BYNVVYMlRDNk8wRm4yZjdnMDNLa3NLR1RydER2RTlo?= =?utf-8?B?T3pyYzBLZTdqOVNWbHZuZGVhYlNuU1Y5amgxV0FkNTJydFlXcnpVREpaV1FW?= =?utf-8?B?M1A3Z0ZTK2MvWlJRck16ZEJvaDNhUU5veEFBci85ZFhOV01TY1haakR0Z25W?= =?utf-8?B?TG1VWldJUFBrWWZvclo3SU9sSmRhaXBXaVRWTnNOdytjSXh2SzcvTy9tdGhX?= =?utf-8?B?NjUxZWRFOHVrNzVvNUF2QTUrZ2dHeWpDY1JLNFhKdVUyYWJMWlZQRVVHeUJu?= =?utf-8?B?K0kydEVnc1YyclZjUWNhclNycVRyZ24wSkpFNFJtSmNkcjdvcHNpLzdnVVZh?= =?utf-8?B?NEN1bUQ2WEtzVmcrcHJ5QytQcjlkRnUwWlhBMFI0dGpJandnMXIyY2hOb29w?= =?utf-8?B?V3NYamNOSEtRZUlQcUZHT0lJQ0tJSU9iTnl5TkM3SXZqYW12MkZ2WENFL0p1?= =?utf-8?B?UGxDS3ZKRlBZdlJWUG9GaVJSUlRWK0hZRVVac3dHSUdnQ3BUS0ZFOUpacFpG?= =?utf-8?B?Y1VpYVNVK3h1Qms3anpRMkpHWCtMR3ZwYmx3K3VjTTRwMG9pVUs2dDNKZUty?= =?utf-8?B?NEVIbGtoNHo1d0ZhN0J2NEZhSXNLK2ZLc3kwRXprYk9iVitKQWNVblpyWmpL?= =?utf-8?B?RFg4NnpDdkZ1eko1cjNrL0FZYW4rZWtJMEVHYmh0aFFDeFZINk9RcnVLd1pP?= =?utf-8?B?Y0RIbmh4ZmpiVHdEUXhJSk9jT2IyUStNVlJwUzNBTk5xOVdyQmQyUzF0citp?= =?utf-8?B?ZWc9PQ==?= 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: 1e8cb12e-52e5-4aaa-85a3-08db2fc9de36 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2023 20:20:26.5840 (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: zF7Uz71evFSLrB0mb+2gQynlw15v9A5EIcjQt0OnhLLV+h17up/rwsW4plm/4+lqxjbARfajgCNtxAZqwuOoTIIboQyJB3gIyPzX90IWvos= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB8224 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 U28gSSdkIGJlIGluIHN1cHBvcnQgb2YgZm9ybWFsbHkgZGVmaW5pbmcgYSBQcmVQaSBwcmVmaXgu IElmIHdlIGdvIHdpdGggU2VjLCB0aGVuIHdlJ2QgaGF2ZSB0byBjb21lIHVwIHdpdGggc29tZSBv dGhlciB3YXkgb2YgZGlzYW1iaWd1YXRpbmcgImhhbmQgb2ZmIHRvIFBFSSIgdnMgImhhbmQgb2Zm IHRvIERYRSIsIGFuZCBpdCBzZWVtcyBsaWtlIFByZVBpIGlzIGFscmVhZHkgdGhhdC4NCg0KV2hh dCBkbyB5b3UgZW50YWlsIHRoZSBwcm9jZXNzIHRvIGJlIGZvbGxvd2VkIGhlcmU/IElzIHRoZXJl IHZhbHVlIGluIGRlZmluaW5nIGEgZGVkaWNhdGVkIFByZVBpIG1vZHVsZSB0eXBlIChsaWtlIFNF Qyk/IEknZCBiZSBoYXBweSB0byBwcm9wb3NlIHRoZSBlZGsyIGNoYW5nZXMgdG8gc3VwcG9ydCB0 aGF0LiBDYW4gd2UgZGVjb3VwbGUgdGhpcyB3b3JrIGZyb20gdGhlc2Ugc3BlY2lmaWMgU2VyaWFs UG9ydExpYiBjb250cmlidXRpb25zPw0KDQpBDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQpGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+IA0K U2VudDogVHVlc2RheSwgTWFyY2ggMjgsIDIwMjMgMzoxMCBQTQ0KVG86IFdhcmtlbnRpbiwgQW5k cmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpD YzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3Vhbmcg PHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSRTogW1BBVENIIHY1IDIvM10gTWRlUGtnOiBhZGQg U0JJLWJhc2VkIFNlcmlhbFBvcnRMaWIgZm9yIFJJU0MtVg0KDQpJIGFncmVlIHRoYXQgbW92aW5n IGludG8gRW1iZWRkZWRQa2cgZG9lcyBub3QgbWFrZSBzZW5zZS4NCg0KRW1iZWRkZWRQa2cgaXMg dmVyeSBvbGQgd2l0aG91dCBtYW55IHVwZGF0ZXMuICBUaGF0IHBhY2thZ2UgaXMgbm90IHRoZSBi ZXN0IHRvIHVzZSBmb3IgZXhhbXBsZXMuDQoNCkkgdGhpbmsgeW91IGFyZSBzdWdnZXN0aW5nIHRo YXQgdGhlcmUgaXMgYSBkaWZmZXJlbmNlIGluIGEgbGlicmFyeSB0aGF0IHJ1bnMgaW4gYW4gU0VD IGVudiB3aXRoIGludGVudCB0byBoYW5kIG9mZiB0byBQRUkgYW5kIGEgbGlicmFyeSB0aGF0IHJ1 bnMgaW4gYW4gU0VDIGVudiB3aXRoIGludGVudCB0byBoYW5kb2ZmIHRvIERYRS4gIFRoZXkgYXJl IGJvdGggU0VDIG1vZHVsZSB0eXBlcyBhbmQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBpcyB0 aGUgc2FtZS4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgaG93IHRoZXkgcHJlcGFyZSBmb3IgdGhl IGhhbmRvZmYuDQoNCk15IGludGVyZXN0IGhlcmUgaXMgdG8gbWFrZSBzdXJlIHRoZSBwcmVmaXhl cyBhcmUgdXNlZCBjb25zaXN0ZW50bHkgYW5kIGlmIHdlIHRydWx5IGhhdmUgYSBuZXcgcHJlZml4 IHR5cGUsIHRoZW4gdG8gY2xlYXJseSBkZWZpbmUgaXQgc28gaXQgY2FuIGJlIHVzZWQgY29uc2lz dGVudGx5IGdvaW5nIGZvcndhcmQuDQoNCk1pa2UgDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwu Y29tPg0KPiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyOCwgMjAyMyAxOjAwIFBNDQo+IFRvOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyANCj4gZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gQ2M6IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+ OyBMaXUsIFpoaWd1YW5nIA0KPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gU3ViamVjdDog UkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZv ciANCj4gUklTQy1WDQo+IA0KPiBTZWMgaXNuJ3QgYSBnb29kIGZpdCwgYmVjYXVzZSBpdCBoYXMg aW1wbGljYXRpb25zIG9uIHRoZSBlbnZpcm9ubWVudCwgDQo+IHdoaWNoIGlzIHdoeSB0aGUgY29u dHJpYnV0aW9uIGFsc28gaW5jbHVkZXMgYSBzZXBhcmF0ZSBTZWNQZWkgdmFyaWFudCBhcyB3ZWxs Lg0KPiANCj4gSW4gbmFtaW5nLCBJIGZvbGxvd2VkIG90aGVyIGVkazIgZXhhbXBsZXMgc3VjaCBh cyANCj4gLi9FbWJlZGRlZFBrZy9MaWJyYXJ5L1ByZVBpRXh0cmFjdEd1aWRlZFNlY3Rpb25MaWIg YW5kIA0KPiAuL0VtYmVkZGVkUGtnL0xpYnJhcnkvUHJlUGlNZW1vcnlBbGxvY2F0aW9uTGkuIEkg d291bGQgcHJlZmVyIG5vdCB0byBtb3ZlIG9uZSBvZiB0aGVzZSBsaWJyYXJpZXMgaW50byBFbWJl ZGRlZFBrZyAtIHRoYXQgd291bGRuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIG1lIChlc3AuIHNpbmNl IHRoZXJlJ3Mgbm90aGluZyAiZW1iZWRkZWQiIGFib3V0IHRoZSBhcHByb2FjaCBwZXIgc2UsIGl0 IGNhbiBiZSB1c2VkIG9uIGFueSBpbXBsZW1lbnRhdGlvbikuDQo+IA0KPiBBDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4NCj4gU2VudDogTW9uZGF5LCBNYXJjaCAyNywgMjAyMyAxMTozMiBB TQ0KPiBUbzogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPjsg DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5 b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZyANCj4gPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+ OyBLaW5uZXksIE1pY2hhZWwgRCANCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBT dWJqZWN0OiBSRTogW1BBVENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBv cnRMaWIgZm9yIA0KPiBSSVNDLVYNCj4gDQo+IEkgdGhpbmsgdGhhdCB3b3VsZCBzdGlsbCBiZSBj YWxsZWQgU2VjLiAgQXJlIHRoZXJlIGFueSBpc3N1ZXMgd2l0aCB1c2luZyBTZWMgcHJlZml4Pw0K PiANCj4gTWlrZQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206 IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT4NCj4gPiBTZW50 OiBUaHVyc2RheSwgTWFyY2ggMTYsIDIwMjMgMTA6NDUgUE0NCj4gPiBUbzogS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgDQo+ID4gZGV2ZWxAZWRrMi5ncm91 cHMuaW8NCj4gPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExp dSwgWmhpZ3VhbmcgDQo+ID4gPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDog UkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZv ciANCj4gPiBSSVNDLVYNCj4gPg0KPiA+IFByZVBpIHJlZmVycyB0byBhIFNFQy1saWtlIHN0YWdl IGluIGEgVGlhbm8gaW1wbGVtZW50YXRpb24gdGhhdCANCj4gPiBza2lwcyB0aGUgUEVJIHN0YWdl LiBSZWFzb25zIGZvciBza2lwcGluZyBQRUkgdXN1YWxseSBjZW50ZXIgYXJvdW5kIA0KPiA+IG1l bW9yeSBpbml0aWFsaXphdGlvbiBiZWluZyBkb25lIGF0IGFuIGVhcmxpZXIgc3RhZ2Ugb2YgZmly bXdhcmUgDQo+ID4gaW5pdGlhbGl6YXRpb24gLSBmb3IgZXhhbXBsZSwgcHJpb3Igb3IgcGFydCBv ZiBURi1BIGZpcm13YXJlIG9uDQo+ID4gQUFyY2g2NCBvciBwcmlvciBvciBwYXJ0IG9mIFNCSSBp bXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYuDQo+ID4NCj4gPiBFLmcuIEFybVZpcnRQa2cvUHJlUGkg YW5kIE92bWZQa2cvUmlzY1ZWaXJ0L1NlYy4gVGhlIGxhdGVyIGlzIG5vdCBhIA0KPiA+ICJTRUMi IGluIHRoZSBzZW5kIG9mIGhhbmRpbmcgb2ZmIHRvIFBlaUNvcmUsIGJ1dCBpbnN0ZWFkIGhhbmRz IG9mZiB0byBEeGVDb3JlLg0KPiA+DQo+ID4gVGhlcmUgaXMgbm8gYmFzZSB0eXBlIGZvciBQcmVQ aS4gVGhlIHR5cGUgaXMgc3RpbGwgU0VDLiBCdXQgaXQgYSkgYXNzdW1lcyBSQU0gaXMgYXZhaWxh YmxlIGIpIGJ1aWxkcyBIT0JzIGFuZCBoYW5kcy1vZmYgdG8gRFhFLg0KPiA+DQo+ID4gVGhlIG5h bWUgaGFzIGJlZW4gYXJvdW5kIGZvciBhdCBsZWFzdCBoYWxmIGEgZGVjYWRlIG5vdyBhbmQgbWFr aW5nIA0KPiA+IGl0IGEgcGFydCBvZiB0aGUgU2VyaWFsUG9ydExpYiBjb21wb25lbnQgbmFtZSBp cyBpbXBvcnRhbnQgYXMgaXQgc2lnbmlmaWVzIHRoZSBzY2VuYXJpbyB3aGVyZSB0aGUgY29kZSBj YW4gYXBwbHkuDQo+ID4NCj4gPiBBDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gPiBTZW50OiBGcmlkYXksIE1hcmNoIDE3LCAyMDIzIDEyOjAxIEFNDQo+ID4gVG86IFdh cmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT47IA0KPiA+IGRldmVs QGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+OyBMaXUsIFpoaWd1YW5nIA0KPiA+IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgS2lu bmV5LCBNaWNoYWVsIEQgDQo+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFN1 YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9y dExpYiBmb3IgDQo+ID4gUklTQy1WDQo+ID4NCj4gPiBXaGF0IGlzIHRoZSBkZWZpbml0aW9uIG9m ICJQcmVQSSI/ICBUaGF0IGlzIG5vdCBhIHByZWZpeCBJIGhhdmUgc2VlbiB1c2VkIGJlZm9yZS4N Cj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+IEZyb206IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT4N Cj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAxNiwgMjAyMyA5OjUzIFBNDQo+ID4gPiBUbzog ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyANCj4gPiA+IDxnYW9saW1pbmdAYnlv c29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+ ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJp YWxQb3J0TGliIA0KPiA+ID4gZm9yIFJJU0MtVg0KPiA+ID4NCj4gPiA+IEhpIGZvbGtzLA0KPiA+ ID4NCj4gPiA+IENhbiBJIGdldCBhIHJldmlldyBmb3IgdGhlIGNoYW5nZXMgdG8gTWRlUGtnLmRz YyB0byBpbmNsdWRlIHRoZSANCj4gPiA+IG5ldyBsaWJzIG9uIFJJU0MtVj8gVGhhdCdzIHRoZSBt aW5vciB0aGluZyBwcmV2ZW50aW5nIHRoaXMgcGF0Y2ggc2V0IGZyb20gYmVpbmcgbWVyZ2VkIPCf mIouDQo+ID4gPg0KPiA+ID4gQQ0KPiA+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gPiBGcm9tOiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRl bC5jb20+DQo+ID4gPiBTZW50OiBGcmlkYXksIE1hcmNoIDEwLCAyMDIzIDExOjA1IEFNDQo+ID4g PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBXYXJrZW50aW4sIEFuZHJlaSA8 YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+OyBEYW5pZWwgDQo+ID4gPiBTY2hhZWZlciA8Z2l0 QGRhbmllbHNjaGFlZmVyLm1lPjsgU3VuaWwgViBMIA0KPiA+ID4gPHN1bmlsdmxAdmVudGFuYW1p Y3JvLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIA0KPiA+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPjsgR2FvLCBMaW1pbmcgDQo+ID4gPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsg TGl1LCBaaGlndWFuZyANCj4gPiA+IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgR2VyZCBIb2Zm bWFubiA8a3JheGVsQHJlZGhhdC5jb20+DQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjUgMi8zXSBN ZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgDQo+ID4gPiBSSVNDLVYNCj4g PiA+DQo+ID4gPiBUaGVzZSBhcmUgaW1wbGVtZW50YXRpb25zIG9mIFNlcmlhbFBvcnRMaWIgdXNp bmcgU0JJIGNvbnNvbGUgc2VydmljZXMuDQo+ID4gPiAtIFNlY1BlaVJpc2NWU2VyaWFsUG9ydExp YlNiaSBpcyBhcHByb3ByaWF0ZSBmb3IgU0VDL1BFSSAoWElQKSANCj4gPiA+IGVudmlyb25tZW50 cw0KPiA+ID4gLSBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaSBpcyBhcHByb3ByaWF0ZSBm b3IgUHJlUEkvRFhFIA0KPiA+ID4gZW52aXJvbm1lbnRzDQo+ID4gPg0KPiA+ID4gVGVzdGVkIHdp dGg6DQo+ID4gPiAtIFFlbXUgUmlzY1ZWaXJ0IChub24tREJDTiBjYXNlLCBiYWNrZWQgYnkgVUFS VCkNCj4gPiA+IC0gVGlueUVNVSArIFJpc2NWVmlydCAobm9uLURCQ04gY2FzZSwgSFRJRikNCj4g PiA+IC0gVGlueUVNVSArIFJpc2NWVmlydCAoREJDTiBjYXNlLCBIVElGKQ0KPiA+ID4NCj4gPiA+ IENjOiBEYW5pZWwgU2NoYWVmZXIgPGdpdEBkYW5pZWxzY2hhZWZlci5tZT4NCj4gPiA+IENjOiBT dW5pbCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4NCj4gPiA+IENjOiBNaWNoYWVsIEQg S2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+IENjOiBMaW1pbmcgR2Fv IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4gPiBDYzogWmhpZ3VhbmcgTGl1IDx6aGln dWFuZy5saXVAaW50ZWwuY29tPg0KPiA+ID4gQWNrZWQtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhl bEByZWRoYXQuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5kcmVpIFdhcmtlbnRpbiA8YW5k cmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBNZGVQa2cvTWRlUGtn LmRzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKw0KPiA+ID4gIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJp YWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmluZiB8ICAzNiArKysN Cj4gPiA+ICBNZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVp UmlzY1ZTZXJpYWxQb3J0TGliU2JpLmluZiAgICAgfCAgMzkgKysrDQo+ID4gPiAgTWRlUGtnL0xp YnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBv cnRMaWJTYmkuYyAgIHwgMjg4ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gPiAgTWRlUGtnL0xp YnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExp YlNiaS5jICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKysNCj4gPiA+ICBNZGVQa2cvTGlicmFy eS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExp YlNiaS51bmkgfCAgMTYgKysNCj4gPiA+ICBNZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlh bFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaSAgICAgfCAgMTYgKysN Cj4gPiA+ICA3IGZpbGVzIGNoYW5nZWQsIDYzMCBpbnNlcnRpb25zKCspDQo+ID4gPg0KPiA+ID4g ZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuZHNjIGIvTWRlUGtnL01kZVBrZy5kc2MgaW5kZXgg DQo+ID4gPiAwYWM3NjE4YjQ2MjMuLmZiMzEzNDkwNDJmYiAxMDA2NDQNCj4gPiA+IC0tLSBhL01k ZVBrZy9NZGVQa2cuZHNjDQo+ID4gPiArKysgYi9NZGVQa2cvTWRlUGtnLmRzYw0KPiA+ID4gQEAg LTE5Miw1ICsxOTIsNyBAQCBbQ29tcG9uZW50cy5BUk0sIENvbXBvbmVudHMuQUFSQ0g2NF0NCj4g PiA+DQo+ID4gPiAgW0NvbXBvbmVudHMuUklTQ1Y2NF0NCj4gPiA+ICAgIE1kZVBrZy9MaWJyYXJ5 L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlzY1ZTYmlMaWIuaW5mDQo+ID4gPiArDQo+ID4gPiArIE1k ZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlh bFBvcnQNCj4gPiA+ICsgTGkNCj4gPiA+ICsgYlMNCj4gPiA+ICsgYmkNCj4gPiA+ICsgLmluZg0K PiA+ID4gKyBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQ aUR4ZVJpc2NWU2VyaWFsDQo+ID4gPiArIFBvDQo+ID4gPiArIHJ0DQo+ID4gPiArIExpDQo+ID4g PiArIGJTYmkuaW5mDQo+ID4gPg0KPiA+ID4gIFtCdWlsZE9wdGlvbnNdDQo+ID4gPiBkaWZmIC0t Z2l0DQo+ID4gPiBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2Jp L1ByZVBpRHhlUmlzY1ZTZXJpYWwNCj4gPiA+IFBvDQo+ID4gPiBydA0KPiA+ID4gTGliU2JpLmlu Zg0KPiA+ID4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9Q cmVQaUR4ZVJpc2NWU2VyaWFsDQo+ID4gPiBQbw0KPiA+ID4gcnQNCj4gPiA+IExpYlNiaS5pbmYN Cj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjFk ODU0NDc1NmJiOQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJh cnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlDQo+ID4gPiAr KysgcmkNCj4gPiA+ICsrKyBhbA0KPiA+ID4gKysrIFBvDQo+ID4gPiArKysgcnRMaWJTYmkuaW5m DQo+ID4gPiBAQCAtMCwwICsxLDM2IEBADQo+ID4gPiArIyMgQGZpbGUNCj4gPiA+ICsjICBTZXJp YWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4gPiA+ICsjDQo+ID4gPiAr IyAgTWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzICh3aGVyZSBnbG9iYWxzIGFy ZSBhbGxvd2VkKS4NCj4gPiA+ICtTZWUgIyAgU2VjUGVpU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZv ciBhIHJlZHVjZWQgdmFyaWFudCANCj4gPiA+ICthcHByb3ByaWF0ZSBmb3IgU0VDICMgIGFuZCBQ RUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiA+ID4gKyMNCj4gPiA+ICsjICBDb3B5cmlnaHQgKGMp IDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiA+ID4gK3Jlc2VydmVkLjxC Uj4gIyAjDQo+ID4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQgIyAjICMjDQo+ID4gPiArDQo+ID4gPiArW0RlZmluZXNdDQo+ID4gPiArICBJTkZfVkVSU0lP TiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDFCDQo+ID4gPiArICBCQVNFX05BTUUgICAg ICAgICAgICAgICAgICAgICAgPSBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaQ0KPiA+ID4g KyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0gUHJlUGlEeGVSaXNjVlNlcmlhbFBv cnRMaWJTYmkudW5pDQo+ID4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA4 NzJhZjc0My1hYjU2LTQ1YjQtYTA2NS02MDI1NjdmNDgyMGMNCj4gPiA+ICsgIE1PRFVMRV9UWVBF ICAgICAgICAgICAgICAgICAgICA9IEJBU0UNCj4gPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAg ICAgICAgICAgICA9IDEuMA0KPiA+ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAg ID0gU2VyaWFsUG9ydExpYiB8IFNFQyBEWEVfQ09SRSBEWEVfRFJJVkVSIERYRV9SVU5USU1FX0RS SVZFUiBVRUZJX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9ODQo+ID4gPiArDQo+ID4gPiArDQo+ID4g PiArIw0KPiA+ID4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gUklTQ1Y2NA0K PiA+ID4gKyMNCj4gPiA+ICsNCj4gPiA+ICtbU291cmNlc10NCj4gPiA+ICsgIFByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gPiA+ICsNCj4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gKw0KPiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g PiA+ICsgIFJpc2NWU2JpTGliDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL01kZVBrZy9MaWJy YXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4g PiA+IExpDQo+ID4gPiBiUw0KPiA+ID4gYmkuaW5mDQo+ID4gPiBiL01kZVBrZy9MaWJyYXJ5L1Nl Y1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gPiA+IExp DQo+ID4gPiBiUw0KPiA+ID4gYmkuaW5mDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YmM3Y2Q0N2MxMWMNCj4gPiA+IC0tLSAvZGV2L251bGwN Cj4gPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9T ZWNQZWlSaXNjVlNlcmlhbA0KPiA+ID4gKysrIFBvDQo+ID4gPiArKysgcnQNCj4gPiA+ICsrKyBM aQ0KPiA+ID4gKysrIGJTYmkuaW5mDQo+ID4gPiBAQCAtMCwwICsxLDM5IEBADQo+ID4gPiArIyMg QGZpbGUNCj4gPiA+ICsjICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29s ZS4NCj4gPiA+ICsjDQo+ID4gPiArIyAgTWVhbnQgZm9yIFNFQyBhbmQgUEVJIChYSVApIGVudmly b25tZW50cy4NCj4gPiA+ICsjDQo+ID4gPiArIyAgRHVlIHRvIGxpbWl0YXRpb25zIG9mIFNCSSBj b25zb2xlIGludGVyZmFjZSBhbmQgWElQIA0KPiA+ID4gK2Vudmlyb25tZW50cyAjIChvbiB1c2Ug b2YgZ2xvYmFscyksIHRoaXMgbGlicmFyeSBpbnN0YW5jZSBkb2VzIA0KPiA+ID4gK25vdCBpbXBs ZW1lbnQgcmVhZGluZyAjIGFuZCBwb2xsaW5nIHRoZSBzZXJpYWwgcG9ydC4gU2VlIA0KPiA+ID4g K1ByZVBpRHhlU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciAjIHRoZSBmdWxsLWZlYXR1cmVkIHZh cmlhbnQgbWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzLg0KPiA+ID4gKyMNCj4g PiA+ICsjICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IA0KPiA+ID4gK3Jlc2VydmVkLjxCUj4gIyAjDQo+ID4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjICMjDQo+ID4gPiArDQo+ID4gPiArW0RlZmluZXNd DQo+ID4gPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDFCDQo+ ID4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBTZWNQZWlSaXNjVlNlcmlh bFBvcnRMaWJTYmkNCj4gPiA+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9IFNl Y1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkNCj4gPiA+ICsgIEZJTEVfR1VJRCAgICAgICAg ICAgICAgICAgICAgICA9IDYzOWZhZDM4LTRiZmQtNGViOS05ZjA5LWU5N2M3OTQ3ZDQ4MA0KPiA+ ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+ID4gKyAgVkVS U0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gPiArICBMSUJSQVJZX0NMQVNT ICAgICAgICAgICAgICAgICAgPSBTZXJpYWxQb3J0TGliIHwgU0VDIFBFSV9DT1JFIFBFSU0NCj4g PiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsjDQo+ID4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAg ICAgICAgICAgPSBSSVNDVjY0DQo+ID4gPiArIw0KPiA+ID4gKw0KPiA+ID4gK1tTb3VyY2VzXQ0K PiA+ID4gKyAgU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gPiA+ICsNCj4gPiA+ICtb UGFja2FnZXNdDQo+ID4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gKw0KPiA+ID4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ICsgIFJpc2NWU2JpTGliDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ ID4gPiBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBp RHhlUmlzY1ZTZXJpYWwNCj4gPiA+IFBvDQo+ID4gPiBydA0KPiA+ID4gTGliU2JpLmMNCj4gPiA+ IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVS aXNjVlNlcmlhbA0KPiA+ID4gUG8NCj4gPiA+IHJ0DQo+ID4gPiBMaWJTYmkuYw0KPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDU4YTY1NzNlZjJk DQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2UNCj4gPiA+ICsrKyByaQ0KPiA+ ID4gKysrIGFsDQo+ID4gPiArKysgUG8NCj4gPiA+ICsrKyBydExpYlNiaS5jDQo+ID4gPiBAQCAt MCwwICsxLDI4OCBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgU2VyaWFsIFBvcnQgTGli cmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gPiArDQo+ID4gPiArICBNZWFudCBmb3Ig UHJlUGkgYW5kIERYRSBlbnZpcm9ubWVudHMgKHdoZXJlIGdsb2JhbHMgYXJlIGFsbG93ZWQpLg0K PiA+ID4gKyBTZWUgU2VjUGVpU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciBhIHJlZHVjZWQgdmFy aWFudCANCj4gPiA+ICsgYXBwcm9wcmlhdGUgZm9yIFNFQyBhbmQgUEVJIChYSVApIGVudmlyb25t ZW50cy4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICsNCj4gPiA+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Nl cmlhbFBvcnRMaWIuaD4gI2luY2x1ZGUgDQo+ID4gPiArPExpYnJhcnkvQmFzZVJpc2NWU2JpTGli Lmg+DQo+ID4gPiArDQo+ID4gPiArU1RBVElDIEJPT0xFQU4gIG1IYXZlRGJjbiAgICAgICAgICA9 IEZBTFNFOw0KPiA+ID4gK1NUQVRJQyBCT09MRUFOICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBGQUxT RTsgU1RBVElDIEJPT0xFQU4gDQo+ID4gPiArbUhhdmVMZWdhY3lHZXRjaGFyID0gRkFMU0U7DQo+ ID4gPiArU1RBVElDIElOVDY0ICAgIG1MYXN0R2V0Q2hhciAgICAgICA9IC0xOw0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgSW5pdGlhbGl6ZSB0aGUgc2VyaWFsIGRldmljZSBoYXJkd2Fy ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIG5vIGluaXRpYWxpemF0aW9uIGlzIHJlcXVpcmVkLCB0 aGVuIHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNl IHdhcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNT Lg0KPiA+ID4gKyAgSWYgdGhlIHNlcmlhbCBkZXZpY2UgY291bGQgbm90IGJlIGluaXRpYWxpemVk LCB0aGVuIHJldHVybiBSRVRVUk5fREVWSUNFX0VSUk9SLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxp emVkLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBk ZXZpY2UgY291bGQgbm90IGJlIGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQb3J0SW5pdGlh bGl6ZSAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgU0JJ X1JFVCAgUmV0Ow0KPiA+ID4gKw0KPiA+ID4gKyAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNF LCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLCANCj4gPiA+ICsgU0JJX0VYVF9EQkNOKTsgIGlm ICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ID4gPiAr ICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gPiA+ICsgIHsNCj4gPiA+ICsgICAgbUhhdmVEYmNu ID0gVFJVRTsNCj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiArICAgIFJldCA9IFNiaUNhbGwgKFNC SV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VYVF8wXzFfQ09OU09M RV9QVVRDSEFSKTsNCj4gPiA+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9 PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ICsgICAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4g PiArICAgIHsNCj4gPiA+ICsgICAgICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBUUlVFOw0KPiA+ID4g KyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwg U0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VYVF8wXzFfQ09OU09MRV9HRVRDSEFSKTsN Cj4gPiA+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VT UykgJiYNCj4gPiA+ICsgICAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4gPiArICAgIHsNCj4g PiA+ICsgICAgICBtSGF2ZUxlZ2FjeUdldGNoYXIgPSBUUlVFOw0KPiA+ID4gKyAgICB9DQo+ID4g PiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gPiAr fQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV3JpdGUgZGF0YSBmcm9tIGJ1ZmZlciB0 byBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIE51bWJlck9mQnl0ZXMg ZGF0YSBieXRlcyBmcm9tIEJ1ZmZlciB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIFRo ZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZSBp cyByZXR1cm5lZC4NCj4gPiA+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51 bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiArICBJ ZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsgIElmIE51bWJlck9mQnl0 ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQnVm ZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXIgdG8gYmUgd3JpdHRl bi4NCj4gPiA+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVz IHRvIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dmFsIDAgICAgICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcyBpcyAwLg0KPiA+ID4gKyAgQHJldHZh bCA+MCAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgc2Vy aWFsIGRldmljZS4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHZh bHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSB3cml0ZSBvcGVyYXRpb24g ZmFpbGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJ DQo+ID4gPiArU2VyaWFsUG9ydFdyaXRlICgNCj4gPiA+ICsgIElOIFVJTlQ4ICAqQnVmZmVyLA0K PiA+ID4gKyAgSU4gVUlOVE4gIE51bWJlck9mQnl0ZXMNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ ID4gPiArICBVSU5UTiAgSW5kZXg7DQo+ID4gPiArDQo+ID4gPiArICBpZiAobUhhdmVEYmNuKSB7 DQo+ID4gPiArICAgIFNCSV9SRVQgIFJldDsNCj4gPiA+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ ID4gPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOLA0KPiA+ID4gKyAgICAgICAgICAgIFNCSV9F WFRfREJDTl9XUklURSwNCj4gPiA+ICsgICAgICAgICAgICAzLA0KPiA+ID4gKyAgICAgICAgICAg IE51bWJlck9mQnl0ZXMsDQo+ID4gPiArICAgICAgICAgICAgKChVSU5UTilCdWZmZXIpLA0KPiA+ ID4gKyAgICAgICAgICAgIDANCj4gPiA+ICsgICAgICAgICAgICApOw0KPiA+ID4gKyAgICBpZiAo VHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiA+ICsgICAg ICByZXR1cm4gMDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICByZXR1cm4gUmV0 LlZhbHVlOw0KPiA+ID4gKyAgfSBlbHNlIGlmIChtSGF2ZUxlZ2FjeVB1dGNoYXIpIHsNCj4gPiA+ ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTnVtYmVyT2ZCeXRlczsgSW5kZXgrKykgew0K PiA+ID4gKyAgICAgIFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUiwgMCwgMSwg QnVmZmVyW0luZGV4XSk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgcmV0dXJu IEluZGV4Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLyoNCj4gPiA+ICsgICAqIE5l aXRoZXIgREJDTiBvciBsZWdhY3kgZXh0ZW5zaW9uIHdlcmUgcHJlc2VudC4NCj4gPiA+ICsgICAq Lw0KPiA+ID4gKyAgcmV0dXJuIE51bWJlck9mQnl0ZXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUmVhZCBkYXRhIGZyb20gc2VyaWFsIGRldmljZSBhbmQgc2F2ZSB0 aGUgZGF0YXMgaW4gYnVmZmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgTnVtYmVyT2ZCeXRl cyBkYXRhIGJ5dGVzIGZyb20gYSBzZXJpYWwgZGV2aWNlIGludG8gdGhlIA0KPiA+ID4gKyBidWZm ZXIgc3BlY2lmaWVkIGJ5IEJ1ZmZlci4gVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFk IGlzIHJldHVybmVkLg0KPiA+ID4gKyAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNzIHRoYW4g TnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgcmVzdCBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ID4gKyAg SWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBOdW1iZXJPZkJ5 dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIEJ1 ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0b3JlIHRo ZSBkYXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIEBwYXJhbSAgTnVt YmVyT2ZCeXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoIHdpbGwgYmUgcmVhZC4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVk OyBObyBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ID4gPiArICBAcmV0dmFsID4wICAgICAgICAgICAg ICAgVGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHNlcmlhbCBkZXZpY2UuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtT ZXJpYWxQb3J0UmVhZCAoDQo+ID4gPiArICBPVVQgVUlOVDggICpCdWZmZXIsDQo+ID4gPiArICBJ TiAgVUlOVE4gIE51bWJlck9mQnl0ZXMNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBV SU5UTiAgSW5kZXg7DQo+ID4gPiArDQo+ID4gPiArICBJbmRleCA9IDA7DQo+ID4gPiArICB3aGls ZSAoKEluZGV4IDwgTnVtYmVyT2ZCeXRlcykgJiYgU2VyaWFsUG9ydFBvbGwgKCkpIHsNCj4gPiA+ ICsgICAgQnVmZmVyW0luZGV4KytdID0gKFVJTlQ4KW1MYXN0R2V0Q2hhcjsNCj4gPiA+ICsgICAg bUxhc3RHZXRDaGFyICAgID0gLTE7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1 cm4gSW5kZXg7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUG9sbHMg YSBzZXJpYWwgZGV2aWNlIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZGF0YSB3YWl0aW5nIHRvIGJl IHJlYWQuDQo+ID4gPiArDQo+ID4gPiArICBQb2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlm IHRoZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4gPiA+ICsgIElmIHRoZXJl IGlzIGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4g VFJVRSBpcyByZXR1cm5lZC4NCj4gPiA+ICsgIElmIHRoZXJlIGlzIG5vIGRhdGEgd2FpdGluZyB0 byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gRkFMU0UgaXMgcmV0dXJuZWQu DQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgICAgRGF0YSBpcyB3YWl0 aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIEByZXR2YWwg RkFMU0UgICAgICAgICAgICBUaGVyZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9t IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQb3J0UG9sbCAoDQo+ID4gPiArICBWT0lEDQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgLyoNCj4gPiA+ICsgICAqIENhcmVmdWwuIE9w ZW5TQkkgd2l0aCBIVElGIGNvbnNvbGUgd2lsbCByZXR1cm4gLTEgZm9sbG93ZWQgYnkgLTINCj4g PiA+ICsgICAqIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciByZWNlaXZlZC4gU28ganVzdCBjaGVj ayBmb3IgdmFsdWVzID49IDAuDQo+ID4gPiArICAgKi8NCj4gPiA+ICsNCj4gPiA+ICsgIGlmICht TGFzdEdldENoYXIgPj0gMCkgew0KPiA+ID4gKyAgICByZXR1cm4gVFJVRTsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIGlmIChtSGF2ZURiY24pIHsNCj4gPiA+ICsgICAgVUlOVDggICAg QnVmZmVyOw0KPiA+ID4gKyAgICBTQklfUkVUICBSZXQ7DQo+ID4gPiArDQo+ID4gPiArICAgIFJl dCA9IFNiaUNhbGwgKA0KPiA+ID4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTiwNCj4gPiA+ICsg ICAgICAgICAgICBTQklfRVhUX0RCQ05fUkVBRCwNCj4gPiA+ICsgICAgICAgICAgICAzLA0KPiA+ ID4gKyAgICAgICAgICAgIDEsDQo+ID4gPiArICAgICAgICAgICAgKChVSU5UTikmQnVmZmVyKSwN Cj4gPiA+ICsgICAgICAgICAgICAwDQo+ID4gPiArICAgICAgICAgICAgKTsNCj4gPiA+ICsgICAg aWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ ICsgICAgICAgIChSZXQuVmFsdWUgPT0gMSkpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICBt TGFzdEdldENoYXIgPSBCdWZmZXI7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0gZWxzZSBpZiAo bUhhdmVMZWdhY3lHZXRjaGFyKSB7DQo+ID4gPiArICAgIG1MYXN0R2V0Q2hhciA9IChJTlQ2NClT YmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX0dFVENIQVIsIA0KPiA+ID4gKyAwLCAwKS5FcnJv cjsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBtTGFzdEdldENoYXIgPj0gMDsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXRzIHRoZSBjb250cm9sIGJpdHMg b24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtIENvbnRyb2wgICAg ICAgICAgICAgICAgU2V0cyB0aGUgYml0cyBvZiBDb250cm9sIHRoYXQgYXJlIHNldHRhYmxlLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIG5ldyBj b250cm9sIGJpdHMgd2VyZSBzZXQgb24gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArICBAcmV0 dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBw b3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9S ICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4g PiArU2VyaWFsUG9ydFNldENvbnRyb2wgKA0KPiA+ID4gKyAgSU4gVUlOVDMyICBDb250cm9sDQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJldHJpZXZlIHRoZSBzdGF0dXMg b2YgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW0gQ29udHJvbCAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gcmV0dXJuIHRoZSBj dXJyZW50IGNvbnRyb2wgc2lnbmFscyBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIGNvbnRyb2wgYml0cyB3 ZXJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJO X1VOU1VQUE9SVEVEICAgIFRoZSBzZXJpYWwgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBv cGVyYXRpb24uDQo+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2Vy aWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQ b3J0R2V0Q29udHJvbCAoDQo+ID4gPiArICBPVVQgVUlOVDMyICAqQ29udHJvbA0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgICpDb250cm9sID0gMDsNCj4gPiA+ICsgIHJldHVybiBSRVRV Uk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXRz IHRoZSBiYXVkIHJhdGUsIHJlY2VpdmUgRklGTyBkZXB0aCwgdHJhbnNtaXQvcmVjZWljZSB0aW1l IA0KPiA+ID4gK291dCwgcGFyaXR5LA0KPiA+ID4gKyAgZGF0YSBiaXRzLCBhbmQgc3RvcCBiaXRz IG9uIGEgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSBCYXVkUmF0ZSAg ICAgICAgICAgVGhlIHJlcXVlc3RlZCBiYXVkIHJhdGUuIEEgQmF1ZFJhdGUgdmFsdWUgb2YgMCB3 aWxsIHVzZSB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlJ3Mg ZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBS ZXZlaXZlRmlmb0RlcHRoICAgVGhlIHJlcXVlc3RlZCBkZXB0aCBvZiB0aGUgRklGTyBvbiB0aGUg cmVjZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUgb2YgMCB3aWxsIHVzZQ0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBG SUZPIGRlcHRoLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQs IHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBAcGFyYW0gVGltZW91dCAgICAgICAg ICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBtaWNy b3NlY29uZHMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGltZW91 dCBhcHBsaWVzIHRvIGJvdGggdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4gQSBUaW1lb3V0IHZh bHVlIG9mIDAgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgdGltZQ0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ICsg IEBwYXJhbSBQYXJpdHkgICAgICAgICAgICAgVGhlIHR5cGUgb2YgcGFyaXR5IHRvIHVzZSBvbiB0 aGlzIHNlcmlhbCBkZXZpY2UuIEEgUGFyaXR5IHZhbHVlIG9mDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1 bHQgcGFyaXR5IHZhbHVlLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBv dXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBAcGFyYW0gRGF0YUJpdHMg ICAgICAgICAgIFRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIHRvIHVzZSBvbiB0aGUgc2VyaWFsIGRl dmljZS4gQSBEYXRhQml0cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXVs ZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFj dHVhbGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBTdG9wQml0cyAgICAgICAgICAgVGhlIG51bWJl ciBvZiBzdG9wIGJpdHMgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRldmljZS4gQSBTdG9wQml0cw0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBEZWZhdWx0U3RvcEJp dHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVyIG9mDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIFRoZSBuZXcgYXR0cmli dXRlcyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIEByZXR2YWwgUkVU VVJOX1VOU1VQUE9SVEVEICAgICAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0 IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1bnN1cHBvcnRlZCB2YWx1 ZS4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgICAgICBUaGUgc2VyaWFs IGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQb3J0 U2V0QXR0cmlidXRlcyAoDQo+ID4gPiArICBJTiBPVVQgVUlOVDY0ICAgICAgICAgICAgICAqQmF1 ZFJhdGUsDQo+ID4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAgICAqUmVjZWl2ZUZpZm9E ZXB0aCwNCj4gPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpUaW1lb3V0LA0KPiA+ ID4gKyAgSU4gT1VUIEVGSV9QQVJJVFlfVFlQRSAgICAgKlBhcml0eSwNCj4gPiA+ICsgIElOIE9V VCBVSU5UOCAgICAgICAgICAgICAgICpEYXRhQml0cywNCj4gPiA+ICsgIElOIE9VVCBFRklfU1RP UF9CSVRTX1RZUEUgICpTdG9wQml0cw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJl dHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBh L01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNl cmlhbFBvcnQNCj4gPiA+IExpDQo+ID4gPiBiUw0KPiA+ID4gYmkuYw0KPiA+ID4gYi9NZGVQa2cv TGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0 DQo+ID4gPiBMaQ0KPiA+ID4gYlMNCj4gPiA+IGJpLmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBhZDU5MzFiZTNhZQ0KPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0 TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsDQo+ID4gPiArKysgUG8NCj4gPiA+ICsrKyBydA0KPiA+ ID4gKysrIExpDQo+ID4gPiArKysgYlNiaS5jDQo+ID4gPiBAQCAtMCwwICsxLDIzMyBAQA0KPiA+ ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJ IGNvbnNvbGUuDQo+ID4gPiArDQo+ID4gPiArICBNZWFudCBmb3IgU0VDIGFuZCBQRUkgKFhJUCkg ZW52aXJvbm1lbnRzLg0KPiA+ID4gKw0KPiA+ID4gKyAgRHVlIHRvIGxpbWl0YXRpb25zIG9mIFNC SSBjb25zb2xlIGludGVyZmFjZSBhbmQgWElQIA0KPiA+ID4gKyBlbnZpcm9ubWVudHMgKG9uIHVz ZSBvZiBnbG9iYWxzKSwgdGhpcyBsaWJyYXJ5IGluc3RhbmNlIGRvZXMgbm90IA0KPiA+ID4gKyBp bXBsZW1lbnQgcmVhZGluZyAgYW5kIHBvbGxpbmcgdGhlIHNlcmlhbCBwb3J0LiBTZWUgDQo+ID4g PiArIFByZVBpRHhlU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciAgdGhlIGZ1bGwtZmVhdHVyZWQg dmFyaWFudCBtZWFudCBmb3IgUHJlUGkgYW5kIERYRSBlbnZpcm9ubWVudHMuDQo+ID4gPiArDQo+ ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1 ZGUgPEJhc2UuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9TZXJpYWxQb3J0TGliLmg+ICNp bmNsdWRlIA0KPiA+ID4gKzxMaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi5oPg0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgSW5pdGlhbGl6ZSB0aGUgc2VyaWFsIGRldmljZSBoYXJkd2FyZS4N Cj4gPiA+ICsNCj4gPiA+ICsgIElmIG5vIGluaXRpYWxpemF0aW9uIGlzIHJlcXVpcmVkLCB0aGVu IHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIHdh cyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0K PiA+ID4gKyAgSWYgdGhlIHNlcmlhbCBkZXZpY2UgY291bGQgbm90IGJlIGluaXRpYWxpemVkLCB0 aGVuIHJldHVybiBSRVRVUk5fREVWSUNFX0VSUk9SLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZh bCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxpemVk Lg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZp Y2UgY291bGQgbm90IGJlIGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQb3J0SW5pdGlhbGl6 ZSAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJu IFJFVFVSTl9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFdyaXRlIGRhdGEgZnJvbSBidWZmZXIgdG8gc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ ICsgIFdyaXRlcyBOdW1iZXJPZkJ5dGVzIGRhdGEgYnl0ZXMgZnJvbSBCdWZmZXIgdG8gdGhlIHNl cmlhbCBkZXZpY2UuDQo+ID4gPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0 ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ID4gPiArICBJZiB0aGUgcmV0 dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSB3cml0ZSBvcGVy YXRpb24gZmFpbGVkLg0KPiA+ID4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCku DQo+ID4gPiArICBJZiBOdW1iZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ID4g PiArDQo+ID4gPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhl IGRhdGEgYnVmZmVyIHRvIGJlIHdyaXR0ZW4uDQo+ID4gPiArICBAcGFyYW0gIE51bWJlck9mQnl0 ZXMgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byB3cml0dGVuIHRvIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAwICAgICAgICAgICAgICAgIE51bWJlck9mQnl0 ZXMgaXMgMC4NCj4gPiA+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9m IGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgSWYgdGhpcyB2YWx1ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywg dGhlbiB0aGUgd3JpdGUgb3BlcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4g PiA+ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1NlcmlhbFBvcnRXcml0ZSAoDQo+ID4g PiArICBJTiBVSU5UOCAgKkJ1ZmZlciwNCj4gPiA+ICsgIElOIFVJTlROICBOdW1iZXJPZkJ5dGVz DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgU0JJX1JFVCAgUmV0Ow0KPiA+ID4gKyAg VUlOVE4gICAgSW5kZXg7DQo+ID4gPiArDQo+ID4gPiArICBSZXQgPSBTYmlDYWxsIChTQklfRVhU X0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEsIA0KPiA+ID4gKyBTQklfRVhUX0RCQ04p OyAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4g PiA+ICsgICAgICAoUmV0LlZhbHVlICE9IDApKQ0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICBSZXQg PSBTYmlDYWxsICgNCj4gPiA+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ID4gPiArICAg ICAgICAgICAgU0JJX0VYVF9EQkNOX1dSSVRFLA0KPiA+ID4gKyAgICAgICAgICAgIDMsDQo+ID4g PiArICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcywNCj4gPiA+ICsgICAgICAgICAgICAoKFVJTlRO KUJ1ZmZlciksDQo+ID4gPiArICAgICAgICAgICAgMA0KPiA+ID4gKyAgICAgICAgICAgICk7DQo+ ID4gPiArICAgIGlmIChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSAhPSBFRklfU1VDQ0VTUykg ew0KPiA+ID4gKyAgICAgIHJldHVybiAwOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiAr ICAgIHJldHVybiBSZXQuVmFsdWU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBSZXQg PSBTYmlDYWxsIChTQklfRVhUX0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEsIA0KPiA+ ID4gKyBTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIpOyAgaWYgKChUcmFuc2xhdGVFcnJvciAo UmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ICsgICAgICAoUmV0LlZhbHVlICE9 IDApKQ0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1i ZXJPZkJ5dGVzOyBJbmRleCsrKSB7DQo+ID4gPiArICAgICAgU2JpQ2FsbCAoU0JJX0VYVF8wXzFf Q09OU09MRV9QVVRDSEFSLCAwLCAxLCBCdWZmZXJbSW5kZXhdKTsNCj4gPiA+ICsgICAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgICByZXR1cm4gSW5kZXg7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4g PiArICAvKg0KPiA+ID4gKyAgICogTmVpdGhlciBEQkNOIG9yIGxlZ2FjeSBleHRlbnNpb24gd2Vy ZSBwcmVzZW50Lg0KPiA+ID4gKyAgICovDQo+ID4gPiArICByZXR1cm4gTnVtYmVyT2ZCeXRlczsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkIGRhdGEgZnJvbSBz ZXJpYWwgZGV2aWNlIGFuZCBzYXZlIHRoZSBkYXRhcyBpbiBidWZmZXIuDQo+ID4gPiArDQo+ID4g PiArICBSZWFkcyBOdW1iZXJPZkJ5dGVzIGRhdGEgYnl0ZXMgZnJvbSBhIHNlcmlhbCBkZXZpY2Ug aW50byB0aGUgDQo+ID4gPiArIGJ1ZmZlciBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVy IG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ID4gPiArICBJZiB0aGUgcmV0 dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSByZXN0IG9wZXJh dGlvbiBmYWlsZWQuDQo+ID4gPiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4N Cj4gPiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUg ZGF0YSBidWZmZXIgdG8gc3RvcmUgdGhlIGRhdGEgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiA+ID4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMg d2hpY2ggd2lsbCBiZSByZWFkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAwICAgICAgICAg ICAgICAgIFJlYWQgZGF0YSBmYWlsZWQ7IE5vIGRhdGEgaXMgdG8gYmUgcmVhZC4NCj4gPiA+ICsg IEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFk IGZyb20gc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UTg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1NlcmlhbFBvcnRSZWFkICgNCj4gPiA+ICsgIE9VVCBVSU5U OCAgKkJ1ZmZlciwNCj4gPiA+ICsgIElOICBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhlcmUgaXMg YW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiA+ID4gKw0KPiA+ID4gKyAgUG9sbHMgYSBz ZXJpYWwgZGV2aWNlIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZGF0YSB3YWl0aW5nIHRvIGJlIHJl YWQuDQo+ID4gPiArICBJZiB0aGVyZSBpcyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRo ZSBzZXJpYWwgZGV2aWNlLCB0aGVuIFRSVUUgaXMgcmV0dXJuZWQuDQo+ID4gPiArICBJZiB0aGVy ZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0 aGVuIEZBTFNFIGlzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgICAgIERhdGEgaXMgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZp Y2UuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgICAgVGhlcmUgaXMgbm8gZGF0YSB3 YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArU2VyaWFsUG9ydFBv bGwgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVy biBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXRzIHRo ZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtIENvbnRyb2wgICAgICAgICAgICAgICAgU2V0cyB0aGUgYml0cyBvZiBDb250cm9sIHRoYXQg YXJlIHNldHRhYmxlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAg ICAgICAgVGhlIG5ldyBjb250cm9sIGJpdHMgd2VyZSBzZXQgb24gdGhlIHNlcmlhbCBkZXZpY2Uu DQo+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmlj ZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRV Uk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNv cnJlY3RseS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4g PiArRUZJQVBJDQo+ID4gPiArU2VyaWFsUG9ydFNldENvbnRyb2wgKA0KPiA+ID4gKyAgSU4gVUlO VDMyICBDb250cm9sDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIFJFVFVS Tl9TVUNDRVNTOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJldHJp ZXZlIHRoZSBzdGF0dXMgb2YgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW0gQ29udHJvbCAgICAgICAgICAgICAgICBBIHBvaW50ZXIg dG8gcmV0dXJuIHRoZSBjdXJyZW50IGNvbnRyb2wgc2lnbmFscyBmcm9tIHRoZSBzZXJpYWwgZGV2 aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhl IGNvbnRyb2wgYml0cyB3ZXJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsg IEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgIFRoZSBzZXJpYWwgZGV2aWNlIGRvZXMgbm90 IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0Vf RVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0K PiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtTZXJpYWxQb3J0R2V0Q29udHJvbCAoDQo+ID4gPiArICBPVVQgVUlOVDMyICAqQ29u dHJvbA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgICpDb250cm9sID0gMDsNCj4gPiA+ ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBTZXRzIHRoZSBiYXVkIHJhdGUsIHJlY2VpdmUgRklGTyBkZXB0aCwgdHJhbnNt aXQvcmVjZWljZSB0aW1lIA0KPiA+ID4gK291dCwgcGFyaXR5LA0KPiA+ID4gKyAgZGF0YSBiaXRz LCBhbmQgc3RvcCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBw YXJhbSBCYXVkUmF0ZSAgICAgICAgICAgVGhlIHJlcXVlc3RlZCBiYXVkIHJhdGUuIEEgQmF1ZFJh dGUgdmFsdWUgb2YgMCB3aWxsIHVzZSB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2aWNlJ3MgZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4g PiA+ICsgIEBwYXJhbSBSZXZlaXZlRmlmb0RlcHRoICAgVGhlIHJlcXVlc3RlZCBkZXB0aCBvZiB0 aGUgRklGTyBvbiB0aGUgcmVjZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUg b2YgMCB3aWxsIHVzZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2 aWNlJ3MgZGVmYXVsdCBGSUZPIGRlcHRoLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBAcGFyYW0g VGltZW91dCAgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xlIGNo YXJhY3RlciBpbiBtaWNyb3NlY29uZHMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRoaXMgdGltZW91dCBhcHBsaWVzIHRvIGJvdGggdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZl IHNpZGUgb2YgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFj ZS4gQSBUaW1lb3V0IHZhbHVlIG9mIDAgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgdGlt ZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5 IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBQYXJpdHkgICAgICAgICAgICAgVGhlIHR5cGUgb2YgcGFy aXR5IHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZpY2UuIEEgUGFyaXR5IHZhbHVlIG9mDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhl IGRldmljZSdzIGRlZmF1bHQgcGFyaXR5IHZhbHVlLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBA cGFyYW0gRGF0YUJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIHRvIHVzZSBv biB0aGUgc2VyaWFsIGRldmljZS4gQSBEYXRhQml0cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IGRhdGEg Yml0IHNldHRpbmcuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1 dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBTdG9wQml0cyAgICAg ICAgICAgVGhlIG51bWJlciBvZiBzdG9wIGJpdHMgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRldmlj ZS4gQSBTdG9wQml0cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBv ZiBEZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVyIG9m DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkg c2V0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAg IFRoZSBuZXcgYXR0cmlidXRlcyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgICAgICBUaGUgc2VyaWFsIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1 bnN1cHBvcnRlZCB2YWx1ZS4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAg ICAgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtTZXJpYWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ID4gPiArICBJTiBPVVQgVUlOVDY0ICAg ICAgICAgICAgICAqQmF1ZFJhdGUsDQo+ID4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAg ICAqUmVjZWl2ZUZpZm9EZXB0aCwNCj4gPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAg ICpUaW1lb3V0LA0KPiA+ID4gKyAgSU4gT1VUIEVGSV9QQVJJVFlfVFlQRSAgICAgKlBhcml0eSwN Cj4gPiA+ICsgIElOIE9VVCBVSU5UOCAgICAgICAgICAgICAgICpEYXRhQml0cywNCj4gPiA+ICsg IElOIE9VVCBFRklfU1RPUF9CSVRTX1RZUEUgICpTdG9wQml0cw0KPiA+ID4gKyAgKQ0KPiA+ID4g K3sNCj4gPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiBkaWZm IC0tZ2l0DQo+ID4gPiBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGli U2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWwNCj4gPiA+IFBvDQo+ID4gPiBydA0KPiA+ID4gTGliU2Jp LnVuaQ0KPiA+ID4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNi aS9QcmVQaUR4ZVJpc2NWU2VyaWFsDQo+ID4gPiBQbw0KPiA+ID4gcnQNCj4gPiA+IExpYlNiaS51 bmkNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LjdiMjJjYWE1YTA5MA0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvTWRlUGtnL0xp YnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlDQo+ID4g PiArKysgcmkNCj4gPiA+ICsrKyBhbA0KPiA+ID4gKysrIFBvDQo+ID4gPiArKysgcnRMaWJTYmku dW5pDQo+ID4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gPiArLy8gLyoqIEBmaWxlDQo+ID4gPiAr Ly8gU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gPiArLy8N Cj4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4g PiA+ICsvLw0KPiA+ID4gKy8vIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgDQo+ID4gPiArcmVzZXJ2ZWQuPEJSPiAvLyAvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCANCj4gPiA+ICsvLyAvLyAqKi8NCj4gPiA+ICsN Cj4gPiA+ICsNCj4gPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29s ZSINCj4gPiA+ICsNCj4gPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29u c29sZS4iDQo+ID4gPiArDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL01kZVBrZy9MaWJyYXJ5 L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gPiA+ IExpDQo+ID4gPiBiUw0KPiA+ID4gYmkudW5pDQo+ID4gPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1Bl aVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gPiA+IExpDQo+ ID4gPiBiUw0KPiA+ID4gYmkudW5pDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g aW5kZXggMDAwMDAwMDAwMDAwLi43YjIyY2FhNWEwOTANCj4gPiA+IC0tLSAvZGV2L251bGwNCj4g PiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQ ZWlSaXNjVlNlcmlhbA0KPiA+ID4gKysrIFBvDQo+ID4gPiArKysgcnQNCj4gPiA+ICsrKyBMaWJT YmkudW5pDQo+ID4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gPiArLy8gLyoqIEBmaWxlDQo+ID4g PiArLy8gU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gPiAr Ly8NCj4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4N Cj4gPiA+ICsvLw0KPiA+ID4gKy8vIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgDQo+ID4gPiArcmVzZXJ2ZWQuPEJSPiAvLyAvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCANCj4gPiA+ICsvLyAvLyAqKi8NCj4gPiA+ ICsNCj4gPiA+ICsNCj4gPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29u c29sZSINCj4gPiA+ICsNCj4gPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAg ICAgICAgI2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkg Y29uc29sZS4iDQo+ID4gPiArDQo+ID4gPiAtLQ0KPiA+ID4gMi4yNS4xDQoNCg==