From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.6415.1622802308403002448 for ; Fri, 04 Jun 2021 03:25:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=a5Qwmj9z; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: jiewen.yao@intel.com) IronPort-SDR: au7Z4y88QCWKI0MEBIypRaokEiaq7uMLMXzJ3wtk3WFni7Y82QPQ11t4mqtZ3fLYzqChAo4naP VjRR4KFAkLwQ== X-IronPort-AV: E=McAfee;i="6200,9189,10004"; a="225579944" X-IronPort-AV: E=Sophos;i="5.83,248,1616482800"; d="scan'208";a="225579944" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2021 03:25:06 -0700 IronPort-SDR: bAV6eHZlwMoH7YPaQSR0uAl3r4M4SJ9koTICfl+f6UEhv5gdUoYYuOuMBquHoTfAqdwn4ZySuX mDIvQG5CUIFw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,248,1616482800"; d="scan'208";a="412323104" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga007.fm.intel.com with ESMTP; 04 Jun 2021 03:25:06 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Fri, 4 Jun 2021 03:25:05 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) 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.2242.4; Fri, 4 Jun 2021 03:25:05 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Fri, 4 Jun 2021 03:25:05 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Fri, 4 Jun 2021 03:24:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XYMMuXYydtxO9qpTvgY6jWajwHi5h6haUQqj3qZhlllYxGKP159k+AlktGF3hkpetKnHW+2NScE6A7RhBIYRJWyZnSj5zHih5xotTNwBoc6vBNPrfH+MB+J8pMp8dJkMgmRgIC7FljEPK26lTSfo1HtwiR93Ia+ZkH3YxZ1gO9Xa5RyT7LKwEgyWPabekP0PGk3QqkfEV51z3J36ELobLWi1sVeHKq1Cqa6Bq4hRx5VpWImXGEUi247IDebTkcm4ZsS3hx3ojkiP65vuzXRTumXcK+NkSAq8Gd+5FzRruQOiD8y9Np0wO9Rf0pcJwWrhcf0LFcQmc9VAEmPl5lGnkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7UZO7G+JOdtN+B1CA+ng9fbI2nq2lKS3pDHYpG2jR6E=; b=VBf2nrq/mANG4qB1mBe2YgU1/EhfD6Z9WLID8eFkfqiGyPcubttz/IROkdll86p5+MAeqjMcN2fhUVJH1fLCH2ECXzX/vui6zjrPXAcrNoRnwy+jQaN87ZHMzqt1bD4CIL+w4hgm2D+XSPAT294PlcTsFP628FzKYYN/KtTLevAdmbGHhODzJfdVAOaOcWdFwT6adjf529JY5JGmzfnqwACXWnZtsOGu0Ytj7H+GnuamPNDtZBzHXn1Mtoja+dDYmaTStAk0G7C3pIBmWnhGWD0hnVMd8mfVjBdr5ryVfaiOAz5ESDfEjivCwJMZ80P5FOY5/HI/cSrNsHjRELbegg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7UZO7G+JOdtN+B1CA+ng9fbI2nq2lKS3pDHYpG2jR6E=; b=a5Qwmj9znSq+zL3IHvXc/D0zdW78BO0GhB0kmbicdIJ3ECYI6ioZ6fruwT16K3WfcoBfR9NcMrnB4L/WOJYRJTGi4nuGevzMwevj8hGu79tRRakSjYgH7wpUVjVRM3SOHKycGeqp62XZ8SNURfiX0syEu1pCk3TohP0LtQyxIj8= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB5208.namprd11.prod.outlook.com (2603:10b6:510:3b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.20; Fri, 4 Jun 2021 10:24:32 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::547d:4eb3:f37e:dac4]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::547d:4eb3:f37e:dac4%9]) with mapi id 15.20.4195.024; Fri, 4 Jun 2021 10:24:32 +0000 From: "Yao, Jiewen" To: "rfc@edk2.groups.io" , "lersek@redhat.com" CC: "devel@edk2.groups.io" , "jejb@linux.ibm.com" , Brijesh Singh , Tom Lendacky , "erdemaktas@google.com" , "cho@microsoft.com" , "bret.barkelew@microsoft.com" , Jon Lange , Karen Noel , Paolo Bonzini , Nathaniel McCallum , "Dr. David Alan Gilbert" , Ademar de Souza Reis Jr. Subject: Re: [edk2-rfc] [edk2-devel] RFC: design review for TDVF in OVMF Thread-Topic: [edk2-rfc] [edk2-devel] RFC: design review for TDVF in OVMF Thread-Index: AddYf4DUPECuZ9ubQaOwhq0M0PgYbAAE6sKAAA50MlAAFz5kgAAAdioe Date: Fri, 4 Jun 2021 10:24:32 +0000 Message-ID: References: , In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [2409:891e:9344:2eca:30f8:1cb6:b654:3747] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 493f6f8b-2d99-4474-d9f5-08d92742f192 x-ms-traffictypediagnostic: PH0PR11MB5208: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2276; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: J2ZBVoL1vi9c2xJHOJHH3T3gufbPhGtaRXAOmpWDmjG04FW04kPnoSUbCqW9ddeKGJtI4OX0Rv3njwOHm1W/nfkh526UY+KctSGfHbpaXKxZ5POOWhO2yx93nskZwLFsMKbXnr3JvB3puHY4bxITezxv07FdbY2UOEu5HyBfEmD6ISW8hyZho94bGx/5MI9XNr68CMw9QCDWvc2uPL/L4YyVRsqd1xjGMlVff9izbdJH2U8jVSWgdzrQ04lbeVCEnspD/D3jDLoWQRewRTk0jsZNQgA4uUKSVXYKJBkejTBjkdFPQnI2VzjUQFrFkg87zf4IdHv3jG8goYxz+2mxGKS/66mMw4Bn589xugdpyFyJpl02uKe7TyR4AJmhAQuz1pOw5ZSucVNYGJTuWmPwv7pZVGzYqo0VmkqfHv29JW9TPV0woXIJcpWZ6uhgigYBPx15W5tBt/kt3G/hV8nNFboC/m0nCtaB1Fzbgfi1NIODXIobk5jsftmKQPn1vemH4BF9K4x8dnRnz43w99BrUTy/tiXc98idNbxp0k1zR8hUH/i8BUm9xgeQaAIm7FIH6YTi5sAndkmCoaeEv4dwhXr2LC/RS/sUSyfXvIxH9hOP6hzUPqQNgRgP3DB4U1PGeu7mkfVPfOiSrEHcR1cH6gnh8Ap6EpP8dZSO8dljsN3hfqTZEN8ATXK7ixZ1U6tTsZVC1Mf/wtCyUKv4JEtPNlwySN4EkbA3szXh3RAP1+wIE/+7DHmGIDf0eHx1ZAHKmJ1XSvKuBVDrj+anNQltstYgnXodwKFq+dsA835b3PqcKx049DyEA4F5xwMR7z5h x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(39860400002)(346002)(396003)(136003)(376002)(366004)(2616005)(19627235002)(4326008)(186003)(66446008)(33656002)(71200400001)(8936002)(966005)(66556008)(66476007)(66946007)(86362001)(6506007)(64756008)(316002)(38100700002)(91956017)(54906003)(76116006)(110136005)(8676002)(122000001)(53546011)(7416002)(36756003)(5660300002)(6486002)(2906002)(45080400002)(478600001)(83380400001)(6512007)(30864003)(45980500001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 7k0xzXrARPSDlRQ3z6HTdLofI3obU4VL8tz3l8yTyyo8C+1Z/VhiaED0wAuLYxEW1R+3ZKw9cpeDcdLz13Vcgl2a0D0xTCyJdapThr8LbCZZXnqExtRkG7dlY3OOXWN6SVAO3QZ+QrECLPazoO/WKAhq4YFIAcQBuNEBc/4//RfHPMEARgdThOcC1w3FxqqBGByCYEb2pTq7MU8TqVpt8Mk0TY2ZDeqNo99OK3W6MkQgJaGwb6fDeP6TDZgREoqx8r3xjcOx2anqxJ9kQEeBakptWAn2EcVDfhPRYPxUs4dd7kTT1cY3Yd54jqsEnzUbLoUPaHv5FGZ3Knxzdw9wH5SeRNJx0ksQCfNFHbxegaZ9fDV2opm/8K7gZUQP64ylc3Me0WO4HX17N4xUJY3tmF0w1cJsUAmL2Tzrm6w158Kv75086oZUzgpTeuJnpXSn0cN8Ws6lQ+/ltxeOyQ/2YCufUIQ+CQjYj0Ir3AynZQXdCzxV0c+f3gAXBlvQTG5UPR335RrXi1HUAvHMMzit2MLGQgTFdDEGHiw5vepM4k+GtDbq/LpYRHWi79ruDKKeUZEPoWFg0x15EudSRfs21ukRBfQHfZQGswaUnPWbLkWxx7MCEzVYgk7+kfXDEHa02ttlnPmEcI/LelrUNWwpilvrDN11NpbqB8PI6nLZ/8PJC5iG8JScSnZdkBpN4rilTpievqAEuscyxgg06OC8dPNrt1hVyLQUfLTJyoNMBcQRuOSuHMaBTqgomWO6V06wHu8etTKiw/DQu8xgHOOLCgXhafi2NlnY3GA9LD4OKOIhCBICT1U9YNWz/McoQhtg x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 493f6f8b-2d99-4474-d9f5-08d92742f192 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2021 10:24:32.2509 (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: j9/gpjDbyyc0EwnD7Md8wnMXf4hiH62yNpI/H3hEmTFmU8kJA6niuzJHybrOLPjdS5Pd9i1XafhbINA8TNe4HQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5208 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: zh-CN Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 dGhhbmsgeW91IExhc3psby4gWW91ciBmZWVkYmFjayBpcyByZWNlaXZlZC4NCkkgYW0gd2FpdGlu ZyBmb3IgY29tbWVudCBmcm9tIG90aGVyIHBlb3BsZS4gDQoNCnRoYW5rIHlvdSENCllhbywgSmll d2VuDQoNCg0KPiDlnKggMjAyMeW5tDbmnIg05pel77yM5LiL5Y2INjoxMe+8jExhc3psbyBFcnNl ayA8bGVyc2VrQHJlZGhhdC5jb20+IOWGmemBk++8mg0KPiANCj4g77u/T24gMDYvMDQvMjEgMDE6 MTksIFlhbywgSmlld2VuIHdyb3RlOg0KPj4gSGkgTGFzemxvLg0KPj4gDQo+PiBUbyBjbGFyaWZ5 IHlvdXIgIm9uZSBiaW5hcnkiIGZlZWRiYWNrIGJlbG93LCBkbyB5b3UgbWVhbiB5b3Ugc3VnZ2Vz dCBBKSBjcmVhdGUgYSBzZXBhcmF0ZSBEU0MgKGZvciBleGFtcGxlIE92bWZQa2cvQ29uZmlkZW50 aWFsQ29tcHV0aW5nLmRzYykgZm9yIGEgZnVsbCBzb2x1dGlvbiBpbmNsdWRpbmcgQU1EIFNFQyAr IEludGVsIFREWCArIE5vbkNvbmZpZGVudGlhbENvbXB1dGluZz8NCj4+IE9yIEIpIHRvIGNyZWF0 ZSBhIHN0YW5kYWxvbmUgRFNDIGZvciBJbnRlbCBURFggKGZvciBleGFtcGxlLCBjcmVhdGUgYSBP dm1mUGtnL0ludGVsVGR4L0ludGVsVGR4WFM2NC5kc2MpID8NCj4+IA0KPj4gVG8gbWUsIEEpIGRv ZXMgbm90IGNoYW5nZSB0b28gbXVjaCwgd2UganVzdCBjcmVhdGUgYW5vdGhlciBEU0MgZmlsZSAt IHRoYXQgaXMgaXQuDQo+PiBUaGVuIHRoZSBvcmlnaW5hbCBPdm1mUGtnWDY0LmRzYyB3aWxsIG9u bHkgYmUgdXNlZCBmb3IgUE9DL1Rlc3RpbmcgcHVycG9zZS4gSXQgZG9lcyBub3QgcHJvdmlkZSBh bnkgc2VjdXJpdHkgZ3VhcmFudGVlLg0KPj4gKFRoZSB0aHJlYXQgbW9kZWwgaXM6IHdlIGRvbid0 IHRydXN0IFZNTS4gV2l0aG91dCBhdHRlc3RhdGlvbiwgeW91IGRvbid0IGtub3cgaWYgVk1NIG1v ZGlmaWVkIHRoZSBPVk1GLikNCj4+IA0KPj4gSSBkb24ndCBrbm93IGhvdyAic2ltcGx5IiBpdCBt ZWFucy4gVG8gZW5hYmxlIFREWCB0byBtYWtlIGl0IHdvcmsgaXMgbm90IGEgc2ltcGxlIHdvcmsu DQo+PiBTb21lIGFyY2hpdGVjdHVyZSBjaGFuZ2VzIGFyZSBtYW5kYXRvcnksIHN1Y2ggYXMgcmVz ZXQgdmVjdG9yLCBJTy9NTUlPIGFjY2VzcywgI1ZFIGhhbmRsZXIsIElPTU1VIGJhc2VkIHNoYXJl ZCBtZW1vcnkgYWNjZXNzLCBldGMuIEkgdGhpbmsgQU1EIFNFViBhbHJlYWR5IGRpZCB0aG9zZS4N Cj4gDQo+IEkgbWVhbiBvcHRpb24gKEIpLiBDcmVhdGUgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIERT QytGREYgZm9yIEludGVsIFREWC4NCj4gDQo+IEluIG15IG1pbmQsIHRoZXJlIGFyZSB0d28gKHZl cnkgaGlnaCBsZXZlbCkgc3RhZ2VzIGZvciBkZXZlbG9waW5nIHRoZQ0KPiAiQ29uZmlkZW50aWFs IENvbXB1dGluZyB3aXRoIFREWCIgZmVhdHVyZSBpbiBlZGsyLg0KPiANCj4gU3RhZ2UgMTogYWxs b3cgYSBndWVzdCB0byBydW4gaW4gYSBURFggZG9tYWluLiAiR3Vlc3Qgb3duZXIiIGFuZCAiQ2xv dWQNCj4gb3duZXIiIGFyZSAqbm90KiBzZXBhcmF0ZSBjb25jZXB0cyBpbiB0aGlzIHN0YWdlLg0K PiANCj4gU3RhZ2UgMjogZW5hYmxlIHN1Y2ggYSBndWVzdCB0byBiZSBkZXBsb3llZCByZW1vdGVs eSB0byBhbiB1bnRydXN0ZWQNCj4gY2xvdWQsIGFuZCBlbnN1cmUgaXRzIGludGVncml0eSB2aWEg cmVtb3RlIGF0dGVzdGF0aW9uLg0KPiANCj4gDQo+IFN0YWdlIDEgaXMgKmh1Z2VseSBkaWZmZXJl bnQqIGJldHdlZW4gQU1EIFNFViogdGVjaG5vbG9naWVzIGFuZCBJbnRlbA0KPiBURFguIFRoYXQn cyB3aHkgd2UgbmVlZCwgaW4gbXkgb3BpbmlvbiwgYSBzZXBhcmF0ZSBEU0MrRkRGIGZvciBJbnRl bCBURFgNCj4gcmlnaHQgZnJvbSB0aGUgc3RhcnQuIFRoaXMgZG9lcyBub3QgbmVjZXNzYXJpbHkg bWVhbiB0aGF0IHdlIG5lZWQgdG8NCj4gZHVwbGljYXRlIGV2ZXJ5IHNpbmdsZSBtb2R1bGUgKGxp YnJhcnksIFBFSU0sIERYRSBkcml2ZXIsIGV0YykgZm9yIEludGVsDQo+IFREWC4gV2hlcmV2ZXIg aXQgbWFrZXMgc2Vuc2UsIGFuZCB0aGUgY2hhbmdlcyBhcmUgbm90IHZlcnkgaW50cnVzaXZlIG9y DQo+IHdhc3RlZnVsIChjb25zaWRlcmluZyBiaW5hcnkgY29kZSB0aGF0IGJlY29tZXMgImRlYWQi IG9uIGluIGEgVERYDQo+IGd1ZXN0KSwgd2UgY2FuIG1vZGlmeSAoZXh0ZW5kKSBleGlzdGVudCBt b2R1bGVzIGluLXBsYWNlLg0KPiANCj4gU3RhZ2UgMSBpcyBjb21wbGV0ZSBmb3IgQU1EIFNFViBh bmQgQU1EIFNFVi1FUy4gQU1EIFNFVi1TTlAgaXMgaW4NCj4gcHJvZ3Jlc3MuIFRoZXNlIEFNRCBT RVYqIHRlY2hub2xvZ2llcyBoYXZlIGJlZW4gcG9zc2libGUgdG8gaW50ZWdyYXRlDQo+ICh0aHVz IGZhcikgaW50byB0aGUgZXhpc3RpbmcgIk92bWZQa2cvT3ZtZlBrZ1g2NC5kc2MiIHBsYXRmb3Jt LiBCdXQNCj4gSW50ZWwgVERYIGlzIHZlcnkgZGlmZmVyZW50IGZyb20gdGhhdCwgZXZlbiBpbiBT dGFnZSAxLg0KPiANCj4gDQo+IFN0YWdlIDIgaXMgZmFyIG91dCBpbiB0aGUgZnV0dXJlLCBmb3Ig SW50ZWwgVERYLiBJIGhhdmUgbm8gaWRlYSBhYm91dA0KPiBpdCwgYnV0IHdoYXRldmVyIGl0J3Mg Z29pbmcgdG8gbG9vayBsaWtlLCBpdCB3aWxsIGJlIGJhc2VkIG9uIFN0YWdlIDEuDQo+IA0KPiBU aGUgIk92bWZQa2cvQW1kU2V2L0FtZFNldlg2NC5kc2MiIHBsYXRmb3JtIGlzICpvbmUgYXBwcm9h Y2gqIGZvcg0KPiBpbXBsZW1lbnRpbmcgU3RhZ2UgMi4gQW5kIHRoaXMgcGxhdGZvcm0gdXRpbGl6 ZXMgQU1EIFNFViogdGVjaG5vbG9naWVzDQo+IG9ubHkgKHRodXMgZmFyKS4gKklmKiBhbmQgKmhv dyBtdWNoKiB0aGUgYXBwcm9hY2ggb2YNCj4gIk92bWZQa2cvQW1kU2V2L0FtZFNldlg2NC5kc2Mi IHdpbGwgYXBwbHkgdG8gSW50ZWwgVERYIC0tIG9uY2UgU3RhZ2UgMQ0KPiBvZiBJbnRlbCBURFgg aXMgY29tcGxldGUgLS0sIEkgY2Fubm90IHByZWRpY3QuDQo+IA0KPiANCj4gVGhlIHVuZGVybHlp bmcgcGh5c2ljYWwgaGFyZHdhcmUgZmVhdHVyZXMgYXJlIGNvbXBsZXRlbHkgZGlmZmVyZW50DQo+ IGJldHdlZW4gQU1EIFNFViogYW5kIEludGVsIFREWCwgYXMgbXVjaCBhcyBJIGNhbiB0ZWxsLiBJ dCBtYWtlcyB6ZXJvDQo+IHNlbnNlIHRvIG1lIHRvIHN0YXJ0IGZyb20gYSB1bmlmaWVkIHBlcnNw ZWN0aXZlLCBhbmQgc2hvZWhvcm4gZXZlcnl0aGluZw0KPiBwb3NzaWJsZSAoYW5kIGltcG9zc2li bGUpIGludG8gYSBjb21tb24gYmxvYiBhbmQgZnJhbWV3b3JrLiBUaGF0DQo+IGFwcHJvYWNoIGhh cyBuZXZlciAqZXZlciogd29ya2VkIGZvciBtZSwgbm90IGV2ZW4gd2hlbiBJIHN0YXJ0ZWQgd29y a2luZw0KPiBvbiB0aGUgdmlydGlvIGRyaXZlcnMgZm9yIE9WTUYgOSB5ZWFycyBhZ28uIEkgZXh0 cmFjdGVkIFZpcnRpb0xpYiBvbmx5DQo+IHdoZW4gSSB3b3JrZWQgb24gdGhlIHNlY29uZCB2aXJ0 aW8gZHJpdmVyIC0tIHRoYXQgaXMsIHdoZW4gSSB3YXMgYWJvdXQNCj4gdG8gaGF2ZSAqd29ya2lu ZyBjb2RlKiBmb3IgdHdvICpkaXN0aW5jdCogdmlydGlvIGRldmljZXMsIGFuZCBpdCB3YXMNCj4g cG9zc2libGUgdG8gaWRlbnRpZnkgY29tbW9uYWxpdGllcyBiZXR3ZWVuIHRoZSBkcml2ZXJzLCBh bmQgdG8gZXh0cmFjdA0KPiB0aG9zZSBjb21tb25hbGl0aWVzLiBUaGUgZmFjdCB0aGF0IEkga25l dywgaW4gYWR2YW5jZSwgdGhhdCBteSAiZW5kDQo+IGdvYWwiIHdhcyB0aGUgc2FtZSB3aXRoIHRo ZXNlIGRldmljZXMsIG5hbWVseSB0byAiYm9vdCBmcm9tIHRoZW0iLCBtYWRlDQo+IG5vIGRpZmZl cmVuY2Ugd2hhdHNvZXZlci4gSSBzdGlsbCBJIGhhZCB0byBzdGFydCBpbXBsZW1lbnRpbmcgdGhl bSBpbg0KPiBzZXBhcmF0ZSBzYW5kYm94ZXMuIFNvb24gZW5vdWdoLCBWaXJ0aW9MaWIgZW1lcmdl ZCwgYW5kIGxhdGVyDQo+IFZJUlRJT19ERVZJQ0VfUFJPVE9DT0wgZW1lcmdlZCBldmVuLg0KPiAN Cj4gSSdtIDEwMCUgaW5jYXBhYmxlIG9mIGRlYWxpbmcgd2l0aCBhIHRvcC1kb3duIGFwcHJvYWNo IGhlcmUuIE9ubHkNCj4gYm90dG9tLXVwIHdvcmtzIGZvciBtZS4NCj4gDQo+IA0KPiBNb3N0IGlt cG9ydGFudGx5LCB0aGUgT3ZtZlBrZ0lhMzIsIE92bWZQa2dJYTMyWDY0LCBPdm1mUGtnWDY0IHBs YXRmb3Jtcw0KPiBtdXN0IGJlIGtlcHQgcmVncmVzc2lvbi1mcmVlLCBhbmQgcHJlZmVyYWJseSB0 aGVpciBjb21wbGV4aXR5IHNob3VsZCBiZQ0KPiBrZXB0IG1hbmFnZWFibGUgZm9yIG1haW50ZW5h bmNlIHRvby4gVGhlc2UgcGxhdGZvcm1zIGFyZSAqZW50aXJlbHkNCj4gaXJyZWxldmFudCogZm9y IFN0YWdlIDIgKHJlZ2FyZGxlc3Mgb2YgdW5kZXJseWluZyBzZWN1cml0eSB0ZWNobm9sb2d5KS4N Cj4gVGhleSAqaGFwcGVuKiB0byBiZSByZWxldmFudCBmb3IgU3RhZ2UgMSBvZiBBTUQgU0VWKiwg cHVyZWx5IGJlY2F1c2UgU0VWDQo+IHByb3ZlZCBwb3NzaWJsZSB0byBpbnRlZ3JhdGUgaW50byB0 aGVtLCBpbiB2ZXJ5IHNtYWxsLCB3ZWxsIGlzb2xhdGVkLA0KPiBzdXJnaWNhbCBhZHZhbmNlcywg d2l0aG91dCB1cHNldHRpbmcgZXZlcnl0aGluZy4gQnV0IEkgY2FuIHRlbGwgdXBmcm9udA0KPiB0 aGF0IEludGVsIFREWCBpcyB3YXkgbW9yZSBpbnRydXNpdmUgdGhhbiBhbnl0aGluZyBJJ3ZlIHNl ZW4gdGh1cyBmYXIgaW4NCj4gQU1EIFNFViouIFNvIEkgd2FudCBJbnRlbCBURFggdG8gZXhpc3Qg aW4gYSBicmFuZCBuZXcgcGxhdGZvcm0sIGV2ZW4gYXMNCj4gU3RhZ2UgMS4gQW5kLCB0byByZWl0 ZXJhdGUsIGp1c3QgYmVjYXVzZSBDb25maWRlbnRpYWwgQ29tcHV0aW5nIGlzIHRoZQ0KPiBuZXcg aG90IHRoaW5nLCB0aGUgdXNlIGNhc2VzIGZvciBPdm1mUGtnSWEzMiwgT3ZtZlBrZ0lhMzJYNjQs IE92bWZQa2dYNjQNCj4gZG8gbm90IGRpc2FwcGVhci4gUmVncmVzc2luZyB0aGVtLCBvciBtYWtp bmcgdGhlbSB1bm1haW50YWluYWJsZSBkdWUgdG8NCj4gc2t5cm9ja2V0aW5nIGNvbXBsZXhpdHks IGlzIG5vdCBhY2NlcHRhYmxlLg0KPiANCj4gVGhhbmtzDQo+IExhc3psbw0KPiANCj4+IA0KPj4g PT09PT09PT09PT09PT09PT09PQ0KPj4gTXkgcG9pbnQgaXMgdGhhdCB0aGUgIm9uZSBiaW5hcnki IHRoYXQgdGhlIHNsaWRlIGRlY2sgcmVmZXJzIHRvIChpLmUuLA0KPj4gT3ZtZlBrZ1g2NC5kc2Mp IG1pZ2h0IHByb3ZlIE9LIGZvciB1dGlsaXppbmcgdGhlIEludGVsIFREWCAqdGVjaG5vbG9neSoN Cj4+IGluIGl0c2VsZi4gU2ltcGx5IGVuYWJsaW5nIE9WTUYgKyBhIGd1ZXN0IE9TIHRvIGJvb3Qg aW4gYSBURFggZG9tYWluLg0KPj4gDQo+PiBCdXQgIk92bWZQa2dYNjQuZHNjIiBpcyAqbm90KiB0 aGUgIm9uZSBiaW5hcnkiIHRoYXQgaXMgc3VpdGFibGUgZm9yDQo+PiByZW1vdGUgYXR0ZXN0YXRp b24sIHdoaWNoIGhhcyBhIG11Y2ggYnJvYWRlciBzY29wZSwgaW52b2x2aW5nIG11bHRpcGxlDQo+ PiBjb21wdXRlcnMsIG5ldHdvcmtpbmcsIGRlcGxveW1lbnQsIGd1ZXN0LW93bmVyL2hvc3Qtb3du ZXIgc2VwYXJhdGlvbiwNCj4+IHdoYXRldmVyLiBGb3IgdGhlIGxhdHRlciwgd2UgbmVlZGVkIGEg c2VwYXJhdGUgcGxhdGZvcm0gYW55d2F5LCBldmVuDQo+PiB3aXRoIG9ubHkgU0VWIGluIG1pbmQ7 IHRoYXQncyB3aHkgIk92bWZQa2cvQW1kU2V2L0FtZFNldlg2NC5kc2MiIGV4aXN0cy4NCj4+ID09 PT09PT09PT09PT09PT09PT0NCj4+IA0KPj4gVGhhbmsgeW91DQo+PiBZYW8gSmlld2VuDQo+PiAN Cj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+IEZyb206IHJmY0BlZGsyLmdyb3Vw cy5pbyA8cmZjQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgTGFzemxvIEVyc2VrDQo+Pj4g U2VudDogRnJpZGF5LCBKdW5lIDQsIDIwMjEgMTI6MTIgQU0NCj4+PiBUbzogWWFvLCBKaWV3ZW4g PGppZXdlbi55YW9AaW50ZWwuY29tPjsgcmZjQGVkazIuZ3JvdXBzLmlvOw0KPj4+IGRldmVsQGVk azIuZ3JvdXBzLmlvDQo+Pj4gQ2M6IGplamJAbGludXguaWJtLmNvbTsgQnJpamVzaCBTaW5naCA8 YnJpamVzaC5zaW5naEBhbWQuY29tPjsgVG9tDQo+Pj4gTGVuZGFja3kgPHRob21hcy5sZW5kYWNr eUBhbWQuY29tPjsgZXJkZW1ha3Rhc0Bnb29nbGUuY29tOw0KPj4+IGNob0BtaWNyb3NvZnQuY29t OyBicmV0LmJhcmtlbGV3QG1pY3Jvc29mdC5jb207IEpvbiBMYW5nZQ0KPj4+IDxqbGFuZ2VAbWlj cm9zb2Z0LmNvbT47IEthcmVuIE5vZWwgPGtub2VsQHJlZGhhdC5jb20+OyBQYW9sbyBCb256aW5p DQo+Pj4gPHBib256aW5pQHJlZGhhdC5jb20+OyBOYXRoYW5pZWwgTWNDYWxsdW0gPG5wbWNjYWxs dW1AcmVkaGF0LmNvbT47DQo+Pj4gRHIuIERhdmlkIEFsYW4gR2lsYmVydCA8ZGdpbGJlcnRAcmVk aGF0LmNvbT47IEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyLg0KPj4+IDxhcmVpc0ByZWRoYXQuY29t Pg0KPj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1yZmNdIFtlZGsyLWRldmVsXSBSRkM6IGRlc2lnbiBy ZXZpZXcgZm9yIFREVkYgaW4gT1ZNRg0KPj4+IA0KPj4+PiBPbiAwNi8wMy8yMSAxNTo1MSwgWWFv LCBKaWV3ZW4gd3JvdGU6DQo+Pj4+PiBIaSwgQWxsDQo+Pj4+PiBXZSBwbGFuIHRvIGRvIGEgZGVz aWduIHJldmlldyBmb3IgVERWRiBpbiBPVk1GIHBhY2thZ2UuDQo+Pj4+PiANCj4+Pj4+IA0KPj4+ Pj4gVGhlIFREVkYgRGVzaWduIHNsaWRlcyBmb3IgVGluYW9Db3JlIERlc2lnbiBSZXZpZXcgTWVl dGluZyAoSnVuIDExKSBpcw0KPj4+Pj4gbm93IGF2YWlsYWJsZSBpbiBibG93IGxpbms6DQo+Pj4+ PiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvZmlsZXMvRGVzaWducy8yMDIxLzA2MTEu DQo+Pj4+PiANCj4+Pj4+IFRoZSBCdWd6aWxsYSBpcyBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29y ZS5vcmcvc2hvd19idWcuY2dpP2lkPTM0MjkNCj4+Pj4+IA0KPj4+Pj4gDQo+Pj4+PiANCj4+Pj4+ IFlvdSBjYW4gaGF2ZSBhbiBvZmZsaW5lIHJldmlldyBmaXJzdC4gWW91IGNvbW1lbnRzIHdpbGwg YmUgd2FybWx5DQo+Pj4+PiB3ZWxjb21lZCBhbmQgd2Ugd2lsbCBjb250aW51b3VzbHkgdXBkYXRl IHRoZSBzbGlkZXMgYmFzZWQgb24gdGhlDQo+Pj4+PiBmZWVkYmFja3MuDQo+Pj4gDQo+Pj4gUmVz ZW5kaW5nIG15IGVhcmxpZXIgY29tbWVudHMgaW4gdGhpcyBtYWlsaW5nIGxpc3QgdGhyZWFkLCB3 aXRoIHRoZQ0KPj4+IGZlZWRiYWNrIGluc2VydGVkIGF0IHRoZSBwcm9wZXIgc3BvdHMgdGhhdCBo YXMgYmVlbiBnaXZlbiBpbiB0aGUNCj4+PiBvZmYtbGlzdCB0aHJlYWQgc2luY2UgdGhlbjoNCj4+ PiANCj4+PiANCj4+PiAqKiogU2xpZGVzIDQsIDYsIDc6IHRoZSAib25lIGJpbmFyeSByZXF1aXJl bWVudCIuDQo+Pj4gDQo+Pj4gKDEpIFRoZSBwcmVzZW50YXRpb24gcmVmZXJzIHRvICJPdm1mUGtn WDY0LmRzYyIgYXMgInRoZSBvbmUiIG9uIHNsaWRlIzQsDQo+Pj4gYnV0IHRoZW4gdGhlIGV4cGxh bmF0aW9uIGZvciB0aGUgcmVxdWlyZW1lbnQsIGdpdmVuIG9uIHNsaWRlIDcsIHNwZWFrcw0KPj4+ IGFib3V0ICJjb21tb24gYXR0ZXN0YXRpb24gaW50ZXJmYWNlIi4NCj4+PiANCj4+PiBJIHRoaW5r IHdlIGhhdmUgYSBtaXN1bmRlcnN0YW5kaW5nIGhlcmUuIFRoZSAiT3ZtZlBrZ1g2NC5kc2MiIHBs YXRmb3JtDQo+Pj4gaW5kZWVkIGNvbnRhaW5zIFNFViwgU0VWLUVTLCBhbmQgKGluIHRoZSBmdXR1 cmUsIHdpbGwgY29udGFpbikgU0VWLVNOUA0KPj4+IHN1cHBvcnQuIEluIHRoYXQgc2Vuc2UsIGFk ZGluZyBURFggc3VwcG9ydCB0byB0aGUgc2FtZSBwbGF0Zm9ybSBzaG91bGQNCj4+PiBiZSAoaG9w ZWZ1bGx5KSBwb3NzaWJsZSwgYXQgdGhlIGNvc3Qgb2YgdWdseSBneW1uYXN0aWNzIGluIHRoZSBy ZXNldA0KPj4+IHZlY3Rvci4NCj4+PiANCj4+PiBCdXQgIk92bWZQa2dYNjQuZHNjIiBpcyAqYWxy ZWFkeSogZGlmZmVyZW50IGZyb20gdGhlIHJlbW90ZWx5IGF0dGVzdGVkDQo+Pj4gT1ZNRiBwbGF0 Zm9ybSwgbmFtZWx5ICJPdm1mUGtnL0FtZFNldi9BbWRTZXZYNjQuZHNjIi4NCj4+PiANCj4+PiBU aGUgbGF0dGVyIGhhcyBzb21lIGFkZGl0aW9uYWwgbW9kdWxlcyAoc2VjcmV0IFBFSU0gYW5kIERY RSBkcml2ZXIpLCBpdA0KPj4+IGhhcyB0aGUgR3J1YiBiaW5hcnkgYnVpbHQgaW4sIGFuZCAtLSBw cm9iYWJseSBtb3N0IGltcG9ydGFudGx5IC0tIGl0DQo+Pj4gdHJ1c3RzIGhvc3Qtb3JpZ2luYXRl ZCBpbmZvcm1hdGlvbiBsZXNzIHRoYW4gIk92bWZQa2dYNjQuZHNjIi4NCj4+PiANCj4+PiBGb3Ig ZXhhbXBsZSwgIk92bWZQa2cvQW1kU2V2L0FtZFNldlg2NC5kc2MiIGhhcyBhIGRlZGljYXRlZA0K Pj4+IFBsYXRmb3JtQm9vdE1hbmFnZXJMaWIgaW5zdGFuY2UsIG9uZSB0aGF0IGlnbm9yZXMgdGhl IG5vbi12b2xhdGlsZSBVRUZJDQo+Pj4gdmFyaWFibGVzIEJvb3QjIyMjIGFuZCBCb290T3JkZXIs IGFuZCBpZ25vcmVzICh0aHVzIGZhcikgdGhlIGZ3X2NmZw0KPj4+IG9yaWdpbmF0ZWQga2VybmVs L2luaXRyZC9jbWRsaW5lIGFzIHdlbGwuDQo+Pj4gDQo+Pj4gSXQgcmVtYWlucyBhbiAiYXJlYSBv ZiByZXNlYXJjaCIgdG8gc2VlIHdoYXQgZWxzZSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tDQo+Pj4g dGhlIHRyYWRpdGlvbmFsIGhvc3QtZ3Vlc3QgaW50ZWdyYXRpb24gKHdoaWNoIGludGVncmF0aW9u IGlzIHVzdWFsbHkNCj4+PiBkZXNpcmFibGUgZm9yIG1hbmFnZW1lbnQgYW5kIGNvbnZlbmllbmNl KSwgaW4gdGhlIHJlbW90ZWx5LWF0dGVzdGVkIGJvb3QNCj4+PiBzY2VuYXJpby4gU2VlIGUuZy4N Cj4+PiA8aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgw Pi4NCj4+PiANCj4+PiBNeSBwb2ludCBpcyB0aGF0IHRoZSAib25lIGJpbmFyeSIgdGhhdCB0aGUg c2xpZGUgZGVjayByZWZlcnMgdG8gKGkuZS4sDQo+Pj4gT3ZtZlBrZ1g2NC5kc2MpIG1pZ2h0IHBy b3ZlIE9LIGZvciB1dGlsaXppbmcgdGhlIEludGVsIFREWCAqdGVjaG5vbG9neSoNCj4+PiBpbiBp dHNlbGYuIFNpbXBseSBlbmFibGluZyBPVk1GICsgYSBndWVzdCBPUyB0byBib290IGluIGEgVERY IGRvbWFpbi4NCj4+PiANCj4+PiBCdXQgIk92bWZQa2dYNjQuZHNjIiBpcyAqbm90KiB0aGUgIm9u ZSBiaW5hcnkiIHRoYXQgaXMgc3VpdGFibGUgZm9yDQo+Pj4gcmVtb3RlIGF0dGVzdGF0aW9uLCB3 aGljaCBoYXMgYSBtdWNoIGJyb2FkZXIgc2NvcGUsIGludm9sdmluZyBtdWx0aXBsZQ0KPj4+IGNv bXB1dGVycywgbmV0d29ya2luZywgZGVwbG95bWVudCwgZ3Vlc3Qtb3duZXIvaG9zdC1vd25lciBz ZXBhcmF0aW9uLA0KPj4+IHdoYXRldmVyLiBGb3IgdGhlIGxhdHRlciwgd2UgbmVlZGVkIGEgc2Vw YXJhdGUgcGxhdGZvcm0gYW55d2F5LCBldmVuDQo+Pj4gd2l0aCBvbmx5IFNFViBpbiBtaW5kOyB0 aGF0J3Mgd2h5ICJPdm1mUGtnL0FtZFNldi9BbWRTZXZYNjQuZHNjIg0KPj4+IGV4aXN0cy4NCj4+ PiANCj4+PiANCj4+PiAqKiogU2xpZGVzIDgtOTogZ2VuZXJhbCBib290IGZsb3cgLS0gVERWRjsg VERWRiBGbG93DQo+Pj4gDQo+Pj4gSSdtIGxpa2VseSBtaXNzaW5nIGEgYmlnIGJ1bmNoIG9mIGJh Y2tncm91bmQgaGVyZSwgc28ganVzdCBhIGZldw0KPj4+IHF1ZXN0aW9uczoNCj4+PiANCj4+PiAo MikgTm90IHN1cmUgd2hhdCBSVE1SIGlzLCBidXQgaXQncyBhc3NvY2lhdGVkIHdpdGggIkVuYWJs ZSBUcnVzdGVkQm9vdCINCj4+PiAtLSBzbyBpcyBhIHZpcnR1YWwgVFBNIGEgaGFyZCByZXF1aXJl bWVudD8NCj4+PiANCj4+PiAuLi4gQmFjayBmcm9tIHNsaWRlIDEwOiAiVENHIG1lYXN1cmVtZW50 IGFuZCBldmVudCBsb2cgZnJhbWV3b3JrIHcvbw0KPj4+IFRQTSIgLS0gdGhhdCdzIGN1cmlvdXMu DQo+Pj4gDQo+Pj4gW3Jlc3BvbnNlIGZyb20gRGF2ZSBHaWxiZXJ0Ol0NCj4+Pj4gTXkgcmVhZGlu ZyBvZiB0aGlzIGlzIHRoYXQgdGhlIFJUTVIgKGFuZCBhbm90aGVyIHNldCBvZiBzaW1pbGFyDQo+ Pj4+IHJlZ2lzdGVycykgYXJlIGEgVERYIHRoaW5nIHRoYXQgaXMgbGlrZSB0aGUgUENScyBmcm9t IGEgVFBNIGJ1dA0KPj4+PiB3aXRob3V0IHRoZSByZXN0IG9mIHRoZSBUUE0gZmVhdHVyZXM7ICBz byB5b3UgY2FuIGRvIHRoZSBvbmUtd2F5DQo+Pj4+IG1lYXN1cmVtZW50IGludG8gdGhlIFJUTVJz IGp1c3QgbGlrZSB5b3UgZG8gaW50byBhIFRQTSBQQ1IsIGFuZCB0aGUNCj4+Pj4gbWVhc3VyZW1l bnRzIHBvcCBvdXQgc29tZXdoZXJlIGluIHRoZSBURFggcXVvdGUuICBKdXN0IGxpa2UgYSBUUE0g eW91DQo+Pj4+IG5lZWQgdGhlIGV2ZW50IGxvZyB0byBtYWtlIGFueSBzZW5zZSBvZiBob3cgdGhl IGZpbmFsIGhhc2hlZCB2YWx1ZQ0KPj4+PiBzdXBwb3NlZGx5IGdvdCB0byB3aGVyZSBpdCBkaWQu DQo+Pj4gDQo+Pj4gW3Jlc3BvbnNlIGZyb20gRXJkZW0gQWt0YXM6XQ0KPj4+PiArMSB0byBEYXZp ZCBvbiB0aGlzLiBURFggcHJvdmlkZXMgMiBraW5kcyBvZiBtZWFzdXJlbWVudCByZWdpc3RlcnM6 DQo+Pj4+IE1SVERzIGFuZCBSVE1Scw0KPj4+PiANCj4+PiAoaHR0cHM6Ly9zb2Z0d2FyZS5pbnRl bC5jb20vY29udGVudC9kYW0vZGV2ZWxvcC9leHRlcm5hbC91cy9lbi9kb2N1bWUNCj4+PiBudHMv dGR4LW1vZHVsZS0xZWFzLXYwLjg1LjAzOS5wZGYNCj4+Pj4gc2VjdGlvbiAxMC4xLjIpIC4gTVJU RHMgYXJlIGJ1aWxkLXRpbWUgbWVhc3VyZW1lbnQgcmVnaXN0ZXJzIHdoaWNoIGFyZQ0KPj4+PiB1 cGRhdGVkIHdoZW4gVERYIGlzIGJlaW5nIGNyZWF0ZWQuIE9uY2UgVERYIGlzIGZpbmFsaXplZCAo YmVmb3JlIHRoZQ0KPj4+PiBmaXJzdCBydW4pLCB0aGUgTVJURHMgYXJlIGZpbmFsaXplZCBhbmQg Y2Fubm90IGJlIHVwZGF0ZWQgYW55bW9yZS4gT24NCj4+Pj4gdGhlIG90aGVyIGhhbmQsIHdoaWxl IHRoZSBURCBpcyBydW5uaW5nLCBURCBjYW4gZXh0ZW5kIFJUTVJzIHRocm91Z2gNCj4+Pj4gVERD QUxMcyB3aGljaCB3aWxsIHByb3ZpZGUgVFBNIFBDUiBraW5kIG9mIGNhcGFiaWxpdGllcy4NCj4+ PiANCj4+PiAuLi4gQmFjayBmcm9tIHNsaWRlIDQzOiBmZWVsIGZyZWUgdG8gc2tpcCB0aGlzIG5v dzsgSSB3aWxsIGNvbW1lbnQgaW4NCj4+PiBtb3JlIGRldGFpbCBiZWxvdy4NCj4+PiANCj4+PiAo MykgUHJlcGFyZSBBY3BpVGFibGUgLS0gT1ZNRiBmZXRjaGVzIEFDUEkgdGFibGVzIGZyb20gUUVN VTsgaXMgdGhpcyBhDQo+Pj4gbmV3IChmaXJtd2FyZSBvcmlnaW5hdGVkKSB0YWJsZSB0aGF0IGlz IGluc3RhbGxlZCBpbiBhZGRpdGlvbiwgb3IgZG9lcw0KPj4+IGl0IHJlcGxhY2UgUUVNVSdzIHRh Ymxlcz8NCj4+PiANCj4+PiAuLi4gSWdub3JlIGZvciBub3csIHdpbGwgY29tbWVudCBvbiB0aGUg TUFEVCBzdHVmZiBsYXRlci4NCj4+PiANCj4+PiAoNCkgRG9lcyBETUEgbWFuYWdlbWVudCBtZWFu IGEgZGlmZmVyZW50IElPTU1VIHByb3RvY29sPyBUaGF0IGlzDQo+Pj4gZ29pbmcNCj4+PiB0byBj b25mbGljdCB3aXRoIHRoZSBTRVYgSU9NTVUgcHJvdG9jb2wuIERlcGV4ZXMgaW4gT1ZNRiBleHBl Y3Qgb25lIG9yDQo+Pj4gemVybyBJT01NVSBwcm90b2NvbHMgdG8gYmUgcHJlc2VudC4NCj4+PiAN Cj4+PiAuLi4gQmFjayBmcm9tIHNsaWRlIDQwOiBmZWVsIGZyZWUgdG8gc2tpcCB0aGlzIG5vdzsg SSdsbCBjb21tZW50IG9uIHRoaXMNCj4+PiBzZXBhcmF0ZWx5LCBiZWxvdy4NCj4+PiANCj4+PiAo NSkgRW51bWVyYXRlIFZpcnRJTyAtLSB2aXJ0aW8gZW51bWVyYXRpb24gaXMgUENJIGJhc2VkIG9u IHg4Ni4gQnV0IEkNCj4+PiBzZWUgbm8gbWVudGlvbiBvZiBQQ0kuIElmIHlvdSBtZWFuIFZpcnRp b01taW9EZXZpY2VMaWIsIHRoYXQncyBubyBnb29kLA0KPj4+IGJlY2F1c2UgaXQgZG9lcyBub3Qg c3VwcG9ydCB2aXJ0aW8tMS4wLCBvbmx5IHZpcnRpby0wLjkuNS4NCj4+PiANCj4+PiAuLi4gQmFj ayBmcm9tIHNsaWRlIDQyOiBJIGdvdCBteSBhbnN3ZXIgdG8gdGhpcyBvbiBzbGlkZSA0Miwgc28g ZG9uJ3QNCj4+PiB3b3JyeSBhYm91dCB0aGlzIHBvaW50Lg0KPj4+IA0KPj4+ICg2KSBUaGUgUEVJ IHBoYXNlIGlzIHNraXBwZWQgYXMgYSB3aG9sZS4gSSBkb24ndCBzZWUgaG93IHRoYXQgY2FuIGJl DQo+Pj4gcmVhc29uYWJseSBicm91Z2h0IHRvZ2V0aGVyIHdpdGggZWl0aGVyICJPdm1mUGtnWDY0 LmRzYyIgb3INCj4+PiAiT3ZtZlBrZy9BbWRTZXYvQW1kU2V2WDY0LmRzYyIuIEkgZ3Vlc3MgeW91 IGNhbiBhbHdheXMgbW9kaWZ5IFNFQyB0bw0KPj4+IGp1bXAgaW50byBEWEUgZGlyZWN0bHksIGJ1 dCB0aGVuIHdoeSBrZWVwIHRoZSBQRUkgY29yZSBhbmQgYSBidW5jaCBvZg0KPj4+IFBFSU1zIGlu IHRoZSBmaXJtd2FyZSBiaW5hcnk/DQo+Pj4gDQo+Pj4gQWxzbyB0b3VjaGVkIG9uIGJ5IHNsaWRl IDksIFREVkYgRmxvdyAtLSBQRUkgaXMgZWxpbWluYXRlZCBidXQgU0VDDQo+Pj4gYmVjb21lcyBt b3JlIGhlYXZ5LXdlaWdodC4NCj4+PiANCj4+PiBXb3VsZG4ndCB0aGlzIGRlc2VydmUgYSBkZWRp Y2F0ZWQsIHNlcGFyYXRlIHBsYXRmb3JtIERTQz8gVGhlDQo+Pj4gOC1iaXQvMzItYml0IGJyYW5j aGluZyBhdCB0aGUgZnJvbnQgb2YgdGhlIHJlc2V0IHZlY3RvciBpcyBhIHNtYWxsZXINCj4+PiBj b21wbGljYXRpb24gaW4gY29tcGFyaXNvbi4NCj4+PiANCj4+PiBTbGlkZSA2IHJlZmVyZW5jZXMg dGhlIG1haWxpbmcgbGlzdCBhcmNoaXZlOg0KPj4+IA0KPj4+ICBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvdG9waWMvODE5Njk0OTQjNzQzMTkNCj4+PiANCj4+PiBhbmQgaW4gdGhhdCBt ZXNzYWdlLCBJIHdyb3RlOg0KPj4+IA0KPj4+ICAgIEknbSBkb3VidGZ1bCB0aGF0IHRoaXMgaXMg YSB1bmlxdWUgcHJvYmxlbSAoImp1c3QgZml4IHRoZSByZXNldA0KPj4+ICAgIHZlY3RvciIpIHRo ZSBsaWtlcyBvZiB3aGljaCB3aWxsIHN1cHBvc2VkbHkgbmV2ZXIgcmV0dXJuIGR1cmluZyB0aGUN Cj4+PiAgICBpbnRlZ3JhdGlvbiBvZiBTRVYgYW5kIFREWA0KPj4+IA0KPj4+IFNlZSBhbHNvOg0K Pj4+IA0KPj4+ICBodHRwczovL2xpc3RtYW4ucmVkaGF0LmNvbS9hcmNoaXZlcy9lZGsyLWRldmVs LWFyY2hpdmUvMjAyMS0NCj4+PiBBcHJpbC9tc2cwMDc4NC5odG1sDQo+Pj4gDQo+Pj4gd2hlcmUg SSBzYWlkOg0KPj4+IA0KPj4+ICAgIEl0J3Mgbm90IGxvc3Qgb24gbWUgdGhhdCB3ZSdyZSB0YWxr aW5nIGFib3V0IH4zIGluc3RydWN0aW9ucy4NCj4+PiANCj4+PiAgICBMZXQncyBrZWVwIGEgY2xv c2UgZXllIG9uIGZ1cnRoZXIgInBvbHltb3JwaGlzbXMiIHRoYXQgd291bGQgcmVxdWlyZQ0KPj4+ ICAgIGhhY2tzLg0KPj4+IA0KPj4+IFRoZSBmaXJzdCA5IHNsaWRlcyBpbiB0aGUgcHJlc2VudGF0 aW9uIGludHJvZHVjZSBtdWNoLW11Y2ggbW9yZQ0KPj4+IGludHJ1c2l2ZSBwcm9ibGVtcyB0aGFu IHRoZSAicG9seW1vcnBoaXNtIiBvZiB0aGUgcmVzZXQgdmVjdG9yLiBXb3VsZCBJDQo+Pj4gYmUg Y29ycmVjdCB0byBzYXkgdGhhdCBteSBjb25jZXJuIGluIHRoZSBhYm92ZSBtZXNzYWdlcyB3YXMg cmlnaHQ/IEkNCj4+PiB0aGluayBJIHdhcyBvbmx5IGdpdmVuIGEgZnJhY3Rpb24gb2YgdGhlIG5l Y2Vzc2FyeSBpbmZvcm1hdGlvbiB3aGVuIEkNCj4+PiB3YXMgYXNrZWQgImRvIHlvdSBhZ3JlZSAn b25lIGJpbmFyeScgaXMgdmlhYmxlIi4NCj4+PiANCj4+PiBbcmVzcG9uc2UgZnJvbSBFcmRlbSBB a3RhczpdDQo+Pj4+IExldCdzIG5vdCB3b3JyeSBhYm91dCB0aGlzIGZvciBub3cuIFdlIHdhbnQg dGhlIG9uZSBiaW5hcnkgc29sdXRpb24NCj4+Pj4gZm9yIHByYWN0aWNhbCByZWFzb25zIGFuZCBh bHNvIGZvciBzaW1wbGljaXR5LiAgSW4gdGhlIGVuZCwgd2Ugd2FudCB0bw0KPj4+PiBkbyB3aGF0 IGlzIHJpZ2h0IGFuZCBnb29kIGZvciBldmVyeW9uZS4NCj4+Pj4gVGhvc2UgYXJlIGxlZ2l0IGNv bmNlcm5zIGFuZCBJIHRoaW5rIHdoYXQgSW50ZWwgaXMgdHJ5aW5nIHRvIGRvIChzb3JyeQ0KPj4+ PiBmb3IgbWluZCByZWFkaW5nKSBpcyB0byBkaXNjdXNzIGFsbCB0aG9zZSBjb25jZXJucyBhbmQg cXVlc3Rpb25zIHRvDQo+Pj4+IG1ha2UgdGhlIHJpZ2h0IGRlY2lzaW9uLiBJIHJlYWxseSBhcHBy ZWNpYXRlIHRoZWlyIGVmZm9ydCBvbiBwcmVwYXJpbmcNCj4+Pj4gdGhvc2Ugc2xpZGVzIGFuZCBi cmluZ2luZyBpdCB0byB0aGUgY29tbXVuaXR5IHRvIHJldmlldy4NCj4+Pj4gDQo+Pj4+IEkgd2ls bCBhbHNvIHJlYWQgeW91ciBjb21tZW50cyBtb3JlIGNhcmVmdWxseSBhbmQgcHJvdmlkZSBteSB0 aG91Z2h0cw0KPj4+PiBvbiB0aGVtLg0KPj4+PiBTb3JyeSBmb3IgYmVpbmcgYSBsaXR0bGUgc2xv dyBvbiB0aGlzLg0KPj4+IA0KPj4+IA0KPj4+ICoqKiBTbGlkZSAxMCAtLSBLZXkgaW1wYWN0IHRv IGZpcm13YXJlDQo+Pj4gDQo+Pj4gKDcpICJDUFVzIGFyZSBsZWZ0IHJ1bm5pbmcgaW4gbG9uZyBt b2RlIGFmdGVyIGV4aXRpbmcgZmlybXdhcmUiIC0tIHdoYXQNCj4+PiBraW5kIG9mICJwZW4iIGFy ZSB3ZSB0YWxraW5nIGFib3V0PyBEb2VzIGEgSExUIGxvb3Agc3RpbGwgd29yaz8NCj4+PiANCj4+ PiAoOCkgIkkvTywgTU1JTywgTVNSIGFjY2Vzc2VzIGFyZSBkaWZmZXJlbnQiIC0tIHRob3NlIGFy ZSBpbXBsZW1lbnRlZCBieQ0KPj4+IGxvdy1sZXZlbCBsaWJyYXJpZXMgaW4gZWRrMjsgaG93IGNh biB0aGV5IGJlIGNvbmZpZ3VyZWQgZHluYW1pY2FsbHk/DQo+Pj4gDQo+Pj4gLi4uIEJhY2sgZnJv bSBzbGlkZSA1MzogSSdsbCBjb21tZW50IG9uIHNsaWRlIDUzIHNlcGFyYXRlbHk7IGlnbm9yZQ0K Pj4+IHRoaXMuDQo+Pj4gDQo+Pj4gDQo+Pj4gKioqIFNsaWRlIDExIC0tIFREVkYgSW1hZ2UgKDEp DQo+Pj4gDQo+Pj4gKDkpIENGViAtLSBDb25maWd1cmF0aW9uIEZpcm13YXJlIFZvbHVtZSAoVmFy U3RvcmUuZmRmLmluYyksDQo+Pj4gY29udGFpbmluZyBTQiBrZXlzIC0tIGhvdyBpcyB0aGlzIGZp cm13YXJlIHZvbHVtZSBwb3B1bGF0ZWQgKGF0IGJ1aWxkDQo+Pj4gdGltZSk/IElzIHRoaXMgYSBo ZXhkdW1wPw0KPj4+IA0KPj4+IC4uLiBCYWNrIGZyb20gc2xpZGUgMTY6IGl0IHNlZW1zIGxpa2Ug Q0ZWIGlzIGEgcmF3IGhleGR1bXAgaW5kZWVkOyBob3cNCj4+PiBpcyB0aGF0IG1hbmFnZWQgd2hl biBrZXlzIGNoYW5nZSAoYXQgYnVpbGQgdGltZSk/DQo+Pj4gDQo+Pj4gKDEwKSBUaGlzIHNsaWRl IChzbGlkZSAxMSkgYmFzaWNhbGx5IGRlc2NyaWJlcyBhbiBpbnRydXNpdmUNCj4+PiByZW9yZ2Fu aXphdGlvbiBvZiAiT3ZtZlBrZ1g2NC5mZGYiLiBJIGRvbid0IHRoaW5rIEkgY2FuIGFncmVlIHRv IHRoYXQuDQo+Pj4gV2hpbGUgY29uZmlkZW50aWFsIGNvbXB1dGluZyBpcyBpbXBvcnRhbnQsIGl0 IGlzIG5vdCByZWxldmFudCBmb3IgbWFueQ0KPj4+IHVzZXJzLiBFdmVuIGlmIHdlIGRvbid0IGNh dXNlIG91dHJpZ2h0IHJlZ3Jlc3Npb25zIGZvciBleGlzdGVudCBzZXR1cHMsDQo+Pj4gdGhlIG1h aW50ZW5hbmNlIGNvc3Qgb2YgdGhlIHRyYWRpdGlvbmFsIE9WTUYgcGxhdGZvcm0gd2lsbCBza3ly b2NrZXQuDQo+Pj4gDQo+Pj4gVGhlIGJpZyBidW5jaCBvZiBhcmVhcyB0aGF0IFNFVi1FUyBpbnRy b2R1Y2VkIHRvIE1FTUZEIGlzIGFscmVhZHkgYSBiaWcNCj4+PiBjb21wbGljYXRpb24uIEknZCBm ZWVsIG11Y2ggYmV0dGVyIGlmIHdlIGNvdWxkIGlzb2xhdGUgYWxsIHRoYXQgdG8gYQ0KPj4+IGRl ZGljYXRlZCAicmVtb3RlIGF0dGVzdGVkIGJvb3QiIGZpcm13YXJlIHBsYXRmb3JtLCBhbmQgbm90 IHJpc2sgdGhlDQo+Pj4gZnVuY3Rpb25hbGl0eSBhbmQgbWFpbnRlbmFuY2Ugb2YgdGhlIHRyYWRp dGlvbmFsIHBsYXRmb3JtLiBJIHRoaW5rIHRoaXMNCj4+PiB0aWVzIGluIHdpdGggbXkgY29tbWVu dCAoMSkuDQo+Pj4gDQo+Pj4gRm9yIGV4YW1wbGUsIHNlZWluZyBhIGNvbmZpZ3VyYXRpb24gZmly bXdhcmUgdm9sdW1lIChDRlYpIHdpdGggc2VjdXJlDQo+Pj4gYm9vdCBrZXlzIGVtYmVkZGVkLCBp biB0aGUgInVzdWFsIiBGREYsIHdpbGwgY29uZnVzZSBsb3RzIG9mIHBlb3BsZSwgbWUNCj4+PiBp bmNsdWRlZC4gSW4gdGhlIHRyYWRpdGlvbmFsIE9WTUYgdXNlIGNhc2UsIHdlIHVzZSBhIGRpZmZl cmVudCBtZXRob2Q6DQo+Pj4gbmFtZWx5IE92bWZQa2cvRW5yb2xsRGVmYXVsdEtleXMsIGZvciAi cHJpbWluZyIgYSB2YXJpYWJsZSBzdG9yZQ0KPj4+IHRlbXBsYXRlLCBpbiB0aGUgYnVpbGQgZW52 aXJvbm1lbnQuDQo+Pj4gDQo+Pj4gRWRrMiAoYW5kIFBJIGFuZCBVRUZJKSBhcmUgZGVmaW5pdGVs eSBmbGV4aWJsZSBlbm91Z2ggZm9yIGFjY29tbW9kYXRpbmcNCj4+PiBURFgsIGJ1dCB0aGUgZXhp c3RlbnQsIHRyYWRpdGlvbmFsIE9WTUYgcGxhdGZvcm1zIGFyZSBhIGJhZCBmaXQuIEluIG15DQo+ Pj4gb3Bpbmlvbi4NCj4+PiANCj4+PiANCj4+PiAqKiogU2xpZGUgMTI6IFREVkYgSW1hZ2UgKDIp DQo+Pj4gDQo+Pj4gKDExKSAiUGFnZSB0YWJsZSBzaG91bGQgc3VwcG9ydCBib3RoIDQtbGV2ZWwg YW5kIDUtbGV2ZWwgcGFnZSB0YWJsZSINCj4+PiANCj4+PiBBcyBhIGdlbmVyYWwgZGV2ZWxvcG1l bnQgc3RyYXRlZ3ksIEkgd291bGQgc3VnZ2VzdCBidWlsZGluZyBURFggc3VwcG9ydA0KPj4+IGlu IHNtYWxsLCB3ZWxsLWlzb2xhdGVkIGxheWVycy4gNS1sZXZlbCBwYWdpbmcgaXMgbm90IGVuYWJs ZWQgKGhhcyBuZXZlcg0KPj4+IGJlZW4gdGVzdGVkLCB0byBteSBrbm93bGVkZ2UpIHdpdGggT1ZN RiBvbiBRRU1VL0tWTSwgcmVnYXJkbGVzcyBvZg0KPj4+IGNvbmZpZGVudGlhbCBjb21wdXRpbmcs IGZvciBzdGFydGVycy4gSWYgNS1sZXZlbCBwYWdpbmcgaXMgYSBzdHJpY3QNCj4+PiByZXF1aXJl bWVudCBmb3IgVERYLCB0aGVuIGl0IGFyZ3VhYmx5IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkDQo+ Pj4gaW5kZXBlbmRlbnRseSBvZiBURFgsIGF0IGZpcnN0LiBTbyB0aGF0IHRoZSBjb21tb24gZWRr MiBhcmNoaXRlY3R1cmUgYmUNCj4+PiBhdCBsZWFzdCB0ZXN0YWJsZSBvbiBRRU1VL0tWTSB3aXRo IDUtbGV2ZWwgcGFnaW5nIGVuYWJsZWQuDQo+Pj4gDQo+Pj4gDQo+Pj4gKioqIFNsaWRlIDEzOg0K Pj4+IA0KPj4+ICgxMikgTXkgY29tbWVudCBpcyB0aGF0IHRoZSBHVUlELWVkIHN0cnVjdHVyZSBj aGFpbiBhbHJlYWR5IHN0YXJ0cyBhdCBhDQo+Pj4gZml4ZWQgR1BBICh0aGUgIkFNRCBTRVYgb3B0 aW9uIikuIE9yZGVyaW5nIGJldHdlZW4gR1VJRC1lZCBzdHJ1Y3R1cmVzIGlzDQo+Pj4gaXJyZWxl dmFudCwgc28gYW55IFREWC1zcGVjaWZpYyBzdHJ1Y3R1cmVzIHNob3VsZCBiZSBlbGlnaWJsZSBm b3INCj4+PiBhcHBlbmRpbmcgdG8sIHByZXBlbmRpbmcgdG8sIG9yIGludGVybWl4aW5nIHdpdGgs IG90aGVyIChwb3NzaWJseQ0KPj4+IFNFVi1zcGVjaWZpYykgc3RydWN0dXJlcy4gVGhlcmUgbmVl ZCBub3QgYmUgYSBzZXBhcmF0ZSBlbnRyeSBwb2ludCwganVzdA0KPj4+IGRpZmZlcmVudCBHVUlE Uy4NCj4+PiANCj4+PiAoMTMpIFJlZ2FyZGluZyAiNEctMHgyMFsweDEwXSBpcyBPVk1GIEFQIHJl c2V0IHZlY3RvciAodXNlZCBpbiBPVk1GDQo+Pj4gaW1wbGVtZW50YXRpb24pIiAtLSBJIHRoaW5r IHRoaXMgaXMgYSB0eXBvOiB0aGlzICJBUCByZXNldCB2ZWN0b3IiIGlzDQo+Pj4gKm5vdCogdXNl ZCBpbiBPVk1GLiBUbyBteSBrbm93bGVkZ2UsIGl0IGlzIGEgdmVzdGlnZSBmcm9tIHRoZSBVZWZp Q3B1UGtnDQo+Pj4gcmVzZXQgdmVjdG9yLiBJbiBPVk1GLCBBUHMgYXJlIGJvb3RlZCB2aWEgTXBJ bml0TGliIChpbiBtdWx0aXBsZQ0KPj4+IGZpcm13YXJlIHBoYXNlcyksIHVzaW5nIElOSVQtU0lQ SS1TSVBJLCBhbmQgdGhlIHJlc2V0IHZlY3RvciBmb3IgdGhlDQo+Pj4gQVBzLCBwb3NpdGVkIHRo cm91Z2ggdGhvc2UgSVBJcywgaXMgcHJlcGFyZWQgaW4gbG93IFJBTS4NCj4+PiANCj4+PiANCj4+ PiAqKiogU2xpZGVzIDE0IHRocm91Z2ggMTY6DQo+Pj4gDQo+Pj4gSSBjb25zaWRlciB0aGVzZSBU RFZGIGZpcm13YXJlIGltYWdlIGludGVybmFscywgaW1wbGVtZW50YXRpb24gZGV0YWlscw0KPj4+ IC0tIGRvIHdoYXRldmVyIHlvdSBuZWVkIHRvIGRvLCBqdXN0IGRvbid0IGludGVyZmVyZSB3aXRo IGV4aXN0aW5nDQo+Pj4gcGxhdGZvcm1zIC8gdXNlIGNhc2VzLiBTZWUgbXkgY29tbWVudCAoMTAp IGFib3ZlLg0KPj4+IA0KPj4+IA0KPj4+ICoqKiBTbGlkZXMgMTctMjE6DQo+Pj4gDQo+Pj4gKDE0 KSBBZ2FpbiwgYSB2ZXJ5IGJpZyBkaWZmZXJlbmNlIGZyb20gdHJhZGl0aW9uYWwgT1ZNRjogQVBz IG5ldmVyIGVudGVyDQo+Pj4gU0VDIGluIHRyYWRpdGlvbmFsIE9WTUYuIEkgYXNzdW1lIHRoaXMg bmV3IGZ1bmN0aW9uYWxpdHkgaXMgcGFydCBvZg0KPj4+IFRkeFN0YXJ0dXBMaWIgKGZyb20gc2xp ZGUgMTgpIC0tIHdpbGwgdGhlcmUgYmUgYSBOdWxsIGluc3RhbmNlIG9mIHRoYXQ/DQo+Pj4gDQo+ Pj4gTGFzdCB3ZWVrIEkgcG9zdGVkIGEgNDMtcGFydCBwYXRjaCBzZXJpZXMgdG8gZWRrMi1kZXZl bCwgZm9yIHNlcGFyYXRpbmcNCj4+PiBvdXQgdGhlIGR5bmFtaWMgWGVuIGVubGlnaHRlbm1lbnRz IGZyb20gdGhlIElBMzIsIElBMzJYNjQsIFg2NA0KPj4+IHBsYXRmb3JtcywgaW4gZmF2b3Igb2Yg dGhlIGRlZGljYXRlZCBPdm1mWGVuIHBsYXRmb3JtLiBURFggc2VlbXMgdG8NCj4+PiBicmluZyBp biBpbmNvbXBhcmFibHkgbW9yZSBjb21wbGljYXRpb25zIHRoYW4gWGVuLCBhbmQgdGhlIE92bWZQ a2cNCj4+PiBtYWludGFpbmVycyBoYXZlIGZvdW5kIGV2ZW4gdGhlIFhlbiBjb21wbGljYXRpb25z IHRyb3VibGVzb21lIGluIHRoZQ0KPj4+IGxvbmcgdGVybS4NCj4+PiANCj4+PiBJZiBJIGhhZCBo YWQgYWNjZXNzIHRvIGFsbCB0aGlzIGluZm9ybWF0aW9uIHdoZW4gd2UgZmlyc3QgZGlzY3Vzc2Vk ICJvbmUNCj4+PiBiaW5hcnkiIG9uIHRoZSBtYWlsaW5nIGxpc3QsIEknZCBoYXZlIG5ldmVyIGFn cmVlZCB0byAib25lIGJpbmFyeSIuIEknbQ0KPj4+IE9LIHdpdGggYXR0ZW1wdGluZyBvbmUgZmly bXdhcmUgYmluYXJ5IGZvciAiY29uZmlkZW50aWFsIGNvbXB1dGluZyIsIGJ1dA0KPj4+IHRoYXQg Im9uZSBwbGF0Zm9ybSIgY2Fubm90IGJlICJPdm1mUGtnWDY0LmRzYyIuDQo+Pj4gDQo+Pj4gRXZl biBpZiBJIG1ha2UgYSBjb21wYXJpc29uIHdpdGgganVzdCB0aGUgInRlY2hub2xvZ3kiIChub3Qg dGhlDQo+Pj4gcmVtb3RlbHktYXR0ZXN0ZWQgZGVwbG95bWVudCkgb2YgU0VWIGFuZCBTRVYtRVMs IGFzIGl0IGlzIGluY2x1ZGVkIGluDQo+Pj4gIk92bWZQa2dYNjQuZHNjIiwgVERYIGlzIGh1Z2Vs eSBtb3JlIGNvbXBsaWNhdGVkIGFuZCBpbnRydXNpdmUgdGhhbg0KPj4+IHRoYXQuIFNFViBwcm92 ZWQgcG9zc2libGUgdG8gaW50ZWdyYXRlIGludG8gZXhpc3RpbmcgbW9kdWxlcywgaW50byB0aGUN Cj4+PiBleGlzdGluZyBib290IGZsb3csIG1heWJlIHRocm91Z2ggdGhlIGFkZGl0aW9uIG9mIHNv bWUgbmV3IGRyaXZlcnMgKHN1Y2gNCj4+PiBhcyBhIG5ldyBJT01NVSBwcm90b2NvbCBpbXBsZW1l bnRhdGlvbiwgYW5kIHNvbWUgImNsZXZlciIgZGVwZXhlcykuDQo+Pj4gQnV0DQo+Pj4gd2UgbmV2 ZXIgaGFkIHRvIHJlc3RydWN0dXJlIHRoZSBGRCBsYXlvdXQsIGVsaW1pbmF0ZSB3aG9sZSBmaXJt d2FyZQ0KPj4+IHBoYXNlcywgb3IgdGhpbmsgYWJvdXQgbXVsdGlwcm9jZXNzaW5nIGluIHRoZSBy ZXNldCB2ZWN0b3Igb3IgdGhlIFNFQw0KPj4+IHBoYXNlLg0KPj4+IA0KPj4+IEluIG9yZGVyIHRv IGJyaW5nIGFuIGV4YW1wbGUgZnJvbSB0aGUgQVJNIHdvcmxkLCBwbGVhc2Ugbm90ZSB0aGF0DQo+ Pj4gcGxhdGZvcm1zIHRoYXQgdXNlIGEgUEVJIHBoYXNlLCBhbmQgcGxhdGZvcm1zIHRoYXQgZG9u J3QsIGFyZSBkaXN0aW5jdA0KPj4+IHBsYXRmb3Jtcy4gSW4gQXJtVmlydFBrZywgdHdvIGV4YW1w bGVzIGFyZSBBcm1WaXJ0UWVtdSBhbmQNCj4+PiBBcm1WaXJ0UWVtdUtlcm5lbC4gVGhlIGxhdHRl ciBkb2VzIG5vdCBpbmNsdWRlIHRoZSBQRUkgQ29yZS4NCj4+PiANCj4+PiANCj4+PiAqKiogU2xp ZGVzIDIyIHRocm91Z2ggMzQ6DQo+Pj4gDQo+Pj4gKDE1KSBBbGwgdGhlc2UgZXh0cmEgdGFza3Mg YW5kIGNvbXBsaWNhdGlvbnMgYXJlIHBlcmZlY3RseSBmaW5lLCBhcyBsb25nDQo+Pj4gYXMgdGhl eSBleGlzdCBwZWFjZWZ1bGx5ICpzZXBhcmF0ZWx5KiBmcm9tIHRoZSB0cmFkaXRpb25hbCAoImxl Z2FjeSIpDQo+Pj4gT1ZNRiBwbGF0Zm9ybXMuDQo+Pj4gDQo+Pj4gSG9uZXN0bHksIGluIHRoZSB2 aXJ0dWFsIHdvcmxkLCBwaWNraW5nIHlvdXIgZmlybXdhcmUgYmluYXJ5IGlzIGVhc3kuDQo+Pj4g VGhlIGFwcHJvYWNoIGhlcmUgcmVtaW5kcyBtZSBvZiBhIHBoeXNpY2FsIGZpcm13YXJlIGJpbmFy eSB0aGF0IGluY2x1ZGVzDQo+Pj4gZXZlcnl0aGluZyBwb3NzaWJsZSBmcm9tICJlZGsyLXBsYXRm b3Jtcy9GZWF0dXJlcy9JbnRlbCIsIGp1c3Qgc28gaXQgY2FuDQo+Pj4gYmUgZGVwbG95ZWQgdG8g YW55IHBoeXNpY2FsIGJvYXJkIGltYWdpbmFibGUuIFRoYXQncyBub3QgaG93IEludGVsDQo+Pj4g YnVpbGRzIHBoeXNpY2FsIGZpcm13YXJlLCByaWdodD8gV2UgaGF2ZSAiZWRrMi1wbGF0Zm9ybXMv UGxhdGZvcm0vSW50ZWwiDQo+Pj4gYW5kICJlZGsyLXBsYXRmb3Jtcy9TaWxpY29uL0ludGVsIiB3 aXRoIG1hbnktbWFueSBzZXBhcmF0ZSBEU0MgZmlsZXMuDQo+Pj4gDQo+Pj4gDQo+Pj4gKioqIFNs aWRlIDM1LTM2OiBEWEUgcGhhc2UNCj4+PiANCj4+PiAoMTYpICJTb21lIERYRSBEcml2ZXJzIG5v dCBhbGxvd2VkIHRvIGxvYWQvc3RhcnQgaW4gVGQgZ3Vlc3QgLS0gTmV0d29yaw0KPj4+IHN0YWNr LCBSTkcsIC4uLiINCj4+PiANCj4+PiBTYW1lIGNvbW1lbnQgYXMgKHNldmVyYWwgdGltZXMpIGFi b3ZlLiBUaGUgTGludXhib290IHByb2plY3QgaXMgYSBnb29kDQo+Pj4gZXhhbXBsZSBmb3IgZWxp bWluYXRpbmcgY3J1ZnQgZnJvbSBEWEVGViAoaW4gZmFjdCwgZm9yIGVsaW1pbmF0aW5nIG1vc3QN Cj4+PiBvZiB0aGUgRFhFIHBoYXNlKS4gSW4gYSBURFggZW52aXJvbm1lbnQsIHdoeSBpbmNsdWRl IGRyaXZlcnMgaW4gdGhlDQo+Pj4gZmlybXdhcmUgYmluYXJ5IHRoYXQgYXJlIG5ldmVyIHVzZWQ/ IE1lYW53aGlsZSwgRFhFRlYgaW4gT1ZNRiBncm93cyBieQ0KPj4+IGENCj4+PiBNQiBldmVyeSAx LjUgeWVhcnMgb3Igc28uIEFnYWluLCByZW1vdmUgdGhlc2UgZHJpdmVycyBmcm9tIHRoZSBEU0Mv RkRGDQo+Pj4gdGhlbiwgYW5kIGl0IG5lZWRzIHRvIGJlIGEgc2VwYXJhdGUgcGxhdGZvcm0uDQo+ Pj4gDQo+Pj4gKDE3KSAiT3RoZXIgRFhFIFBoYXNlIGRyaXZlcnMgLS0gWy4uLl0gQWNwaVBsYXRm b3JtRHhlIg0KPj4+IA0KPj4+IEknbSBub3Qgc3VyZSB3aGF0IHRoaXMgc2VjdGlvbiBpcyBzdXBw b3NlZCB0byBtZWFuLiBPdGhlciBEWEUgcGhhc2UNCj4+PiBkcml2ZXJzIGluY2x1ZGVkLCBvciBl eGNsdWRlZD8gV2l0aG91dCBBY3BpUGxhdGZvcm1EeGUsIHRoZSBndWVzdCBPUw0KPj4+IHdpbGwg bm90IHNlZSBRRU1VJ3MgQUNQSSBjb250ZW50LCBhbmQgd2lsbCBhbG1vc3QgY2VydGFpbmx5IG1h bGZ1bmN0aW9uLg0KPj4+IA0KPj4+IC4uLiBCYWNrIGZyb20gc2xpZGUgNDg6IGlnbm9yZSB0aGlz IGZvciBub3csIEknbGwgY29tbWVudCBpbiBtb3JlIGRldGFpbA0KPj4+IGxhdGVyLg0KPj4+IA0K Pj4+IA0KPj4+ICoqKiBTbGlkZSAzNzogRFhFIENvcmUNCj4+PiANCj4+PiAoMTgpIHNheXMgIlNN TSBpcyBub3Qgc3VwcG9ydGVkIGluIFRkIGd1ZXN0IiAtLSBob3cgaXMgdGhlIHZhcmlhYmxlDQo+ Pj4gc3RvcmUgcHJvdGVjdGVkIGZyb20gZGlyZWN0IGhhcmR3YXJlIChwZmxhc2gpIGFjY2VzcyBm cm9tIHRoZSBndWVzdCBPUz8NCj4+PiBXaXRob3V0IFNNTSwgdGhlIGd1ZXN0IE9TIG5lZWQgbm90 IGdvIHRocm91Z2ggZ1JULT5TZXRWYXJpYWJsZSgpIHRvDQo+Pj4gdXBkYXRlIGF1dGhlbnRpY2F0 ZWQgbm9uLXZvbGF0aWxlIFVFRkkgdmFyaWFibGVzLCBhbmQgdGhhdCB1bmRlcm1pbmVzDQo+Pj4g U2VjdXJlIEJvb3QuDQo+Pj4gDQo+Pj4gTm90ZSB0aGF0LCB3aGlsZSBTRVYtRVMgaGFzIHRoZSBz YW1lIGxpbWl0YXRpb24gd3J0LiBTTU0sIHRoZQ0KPj4+ICJPdm1mUGtnL0FtZFNldi9BbWRTZXZY NjQuZHNjIiBwbGF0Zm9ybSBkb2Vzbid0IGV2ZW4gaW5jbHVkZSB0aGUNCj4+PiBTZWN1cmUNCj4+ PiBCb290IGZpcm13YXJlIGZlYXR1cmUuIEZvciBhbm90aGVyIGV4YW1wbGUsIHRoZSBPVk1GIGZp cm13YXJlIGJpbmFyeSBpbg0KPj4+IFJIRUwgdGhhdCdzIGdvaW5nIHRvIHN1cHBvcnQgU0VWLUVT IGlzIHN1Y2ggYSBidWlsZCBvZiAiT3ZtZlBrZ1g2NC5kc2MiDQo+Pj4gdGhhdCBkb2VzIG5vdCBp bmNsdWRlIHRoZSBTZWN1cmUgQm9vdCBmZWF0dXJlIGVpdGhlci4NCj4+PiANCj4+PiBCdXQgaW4g dGhpcyBURFggc2xpZGUgZGVjaywgU2VjdXJlIEJvb3QgY2VydGlmaWNhdGVzIGFyZSBlbWJlZGRl ZCBpbiB0aGUNCj4+PiBDRlYgKGNvbmZpZ3VyYXRpb24gZmlybXdhcmUgdm9sdW1lKSAtLSBzZWUg c2xpZGUgMTEgYW5kIHNsaWRlIDE2IC0tLA0KPj4+IHdoaWNoIHN1Z2dlc3RzIHRoYXQgdGhpcyBw bGF0Zm9ybSBkb2VzIHdhbnQgc2VjdXJlIGJvb3QuDQo+Pj4gDQo+Pj4gLi4uIEJhY2sgZnJvbSBz bGlkZSA0ODogSSdtIGdvaW5nIHRvIG1ha2UgKmFkZGl0aW9uYWwqIGNvbW1lbnRzIG9uIHRoaXMs DQo+Pj4gd2hlbiBJJ20gYXQgc2xpZGUgNDgsIHRvby4NCj4+PiANCj4+PiBUaGUgcmVzdCBvZiB0 aGlzIHNsaWRlIChzbGlkZSAzNykgbG9va3MgcmVhc29uYWJsZSAoZ2VuZXJpYyBEWEUgQ29yZQ0K Pj4+IGNoYW5nZXMgLS0gcG9zc2libHkgUEkgc3BlYyBjaGFuZ2VzIHRvbykuDQo+Pj4gDQo+Pj4g DQo+Pj4gKioqIFNsaWRlcyAzOCB0aHJvdWdoIDM5Og0KPj4+IA0KPj4+IFRoZXNlIHNlZW0gcmVh c29uYWJsZSAoVGR4RHhlIGFzc3VtZXMgc29tZSByZXNwb25zaWJpbGl0aWVzIG9mDQo+Pj4gT3Zt ZlBrZy9QbGF0Zm9ybVBlaSkNCj4+PiANCj4+PiANCj4+PiAqKiogU2xpZGVzIDQwIHRocm91Z2gg NDI6DQo+Pj4gDQo+Pj4gKklmKiB5b3UgcmVhbGx5IGNhbiBpbXBsZW1lbnQgVERYIHN1cHBvcnQg Zm9yIHRoZSBJT01NVSBkcml2ZXIgKnRoaXMqDQo+Pj4gc3VyZ2ljYWxseSwgdGhlbiBJJ20gT0sg d2l0aCBpdC4gVGhlIGdlbmVyYWwgbG9naWMgaW4gdGhlIElPTU1VIGRyaXZlcg0KPj4+IHdhcyB0 cnVseSBkaWZmaWN1bHQgdG8gd3JpdGUsIGFuZCBJJ2QgYmUgc2VyaW91c2x5IGNvbmNlcm5lZCBp ZiB0aG9zZQ0KPj4+IHBhcnRzIHdvdWxkIGhhdmUgdG8gYmUgbW9kaWZpZWQuIEN1c3RvbWl6aW5n IGp1c3QgdGhlIHBhZ2UNCj4+PiBlbmNyeXB0aW9uL2RlY3J5cHRpb24gcHJpbWl0aXZlcyBmb3Ig VERYIHZzLiBTRVYgaXMgT0suDQo+Pj4gDQo+Pj4gDQo+Pj4gKioqIFNsaWRlcyA0MyB0aHJvdWdo IDQ3Og0KPj4+IA0KPj4+ICgxOSkgU2xpZGUgNDYgYW5kIHNsaWRlIDQ3IGFyZSBhbG1vc3QgaWRl bnRpY2FsLiBQbGVhc2UgY29uc29saWRhdGUgdGhlbQ0KPj4+IGludG8gYSBzaW5nbGUgc2xpZGUu DQo+Pj4gDQo+Pj4gKDIwKSB0aGUgVFBNMiBpbmZyYXN0cnVjdHVyZSBpbiBlZGsyIGlzIGJhcm9x dWUgKG92ZXItZW5naW5lZXJlZCksIGluIG15DQo+Pj4gb3Bpbmlvbi4gSXQgaGFzIHNvIG1hbnkg bGF5ZXJzIHRoYXQgSSBjYW4gbmV2ZXIga2VlcCB0aGVtIGluIG1pbmQuIFdoZW4NCj4+PiB3ZSBh ZGRlZCBUUE0gc3VwcG9ydCB0byBPVk1GLCBJIHJlcXVpcmVkIGNvbW1pdCBtZXNzYWdlcyB0aGF0 IHdvdWxkDQo+Pj4gaGVscA0KPj4+IHVzIHJlY2FsbCB0aGUgbGF5ZXJpbmcuIEluIHBhcnRpY3Vs YXIsIHBsZWFzZSByZWZlciB0byBjb21taXQNCj4+PiAwYzBhNTBkNmIzZmYgKCJPdm1mUGtnOiBp bmNsdWRlIFRjZzJEeGUgbW9kdWxlIiwgMjAxOC0wMy0wOSkuIEhlcmUncyBhbg0KPj4+IGV4Y2Vy cHQ6DQo+Pj4gDQo+Pj4gICAgICAgICAgIFRQTSAyIGNvbnN1bWVyIGRyaXZlcg0KPj4+ICAgICAg ICAgICAgICAgICAgICB8DQo+Pj4gICAgICAgICAgICAgICAgICAgIHYNCj4+PiAgICAgIFRwbTJE ZXZpY2VMaWIgY2xhc3M6IFRwbTJEZXZpY2VMaWJUY2cyIGluc3RhbmNlDQo+Pj4gICAgICAgICAg ICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgdg0KPj4+ICAgICAgICAgICAgIFRD RzIgcHJvdG9jb2wgaW50ZXJmYWNlDQo+Pj4gICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAg ICAgICAgICAgICAgICAgdg0KPj4+ICAgICAgVENHMiBwcm90b2NvbCBwcm92aWRlcjogVGNnMkR4 ZS5pbmYgZHJpdmVyDQo+Pj4gICAgICAgICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAg ICAgICAgdg0KPj4+ICAgICAgVHBtMkRldmljZUxpYiBjbGFzczogVHBtMkRldmljZUxpYlJvdXRl ciBpbnN0YW5jZQ0KPj4+ICAgICAgICAgICAgICAgICAgICB8DQo+Pj4gICAgICAgICAgICAgICAg ICAgIHYNCj4+PiAgICAgICAgIE5VTEwgY2xhc3M6IFRwbTJJbnN0YW5jZUxpYkRUcG0gaW5zdGFu Y2UNCj4+PiAgICAgICAgICAgICh2aWEgZWFybGllciByZWdpc3RyYXRpb24pDQo+Pj4gICAgICAg ICAgICAgICAgICAgIHwNCj4+PiAgICAgICAgICAgICAgICAgICAgdg0KPj4+ICAgICAgICAgICBU UE0yIGNoaXAgKGFjdHVhbCBoYXJkd2FyZSkNCj4+PiANCj4+PiBUaGUgc2xpZGUgZGVjayBzYXlz IHRoYXQgRUZJX1REX1BST1RPQ09MIGlzIHN1cHBvc2VkIHRvIHJldXNlIHRoZQ0KPj4+IEVGSV9U Q0cyX1BST1RPQ09MIGRlZmluaXRpb24uIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiB3aHkgZG9u J3Qgd2UgcHVzaA0KPj4+IHRoZSBURFggc3BlY2lmaWNzIChtb3JlIG9yIGxlc3M6IHRoZSByZXBs YWNlbWVudCBvZiBQQ1JzIHdpdGggUlRNUikgZG93bg0KPj4+IHRvIHRoZSBsb3dlc3QgcG9zc2li bGUgbGV2ZWw/DQo+Pj4gDQo+Pj4gQ2FuIHdlIGhhdmUgIlRwbTJJbnN0YW5jZUxpYlRkeFJ0bXIi LCBwbHVnZ2VkIGludG8gdGhlIHNhbWUgVGNnMkR4ZS5pbmYNCj4+PiBkcml2ZXI/DQo+Pj4gDQo+ Pj4gSWYgbm90LCBjYW4gd2UgaGF2ZSBhIG5ldyBUZFRjZzJEeGUuaW5mIGRyaXZlciwgYnV0IG1h a2UgaXQgc28gdGhhdCBpdA0KPj4+IGluc3RhbGwgdGhlIHNhbWUgcHJvdG9jb2wgYXMgYmVmb3Jl IChFRklfVENHMl9QUk9UT0NPTCAtLSBzYW1lIG9sZA0KPj4+IHByb3RvY29sIEdVSUQpPyBUaGVu IER4ZVRwbU1lYXN1cmVtZW50TGliIGRvZXNuJ3QgaGF2ZSB0byBjaGFuZ2UuDQo+Pj4gDQo+Pj4g QXMgbG9uZyBhcyB0aGVyZSBpcyAqYXQgbW9zdCogb25lIEVGSV9UQ0cyX1BST1RPQ09MIGluc3Rh bmNlIHB1Ymxpc2hlZA0KPj4+IGluIHRoZSBwcm90b2NvbCBkYXRhYmFzZSwgRHhlVHBtTWVhc3Vy ZW1lbnRMaWIgc2hvdWxkIGJlIGZpbmUuIEluIFNFVioNCj4+PiBndWVzdHMsIHRoZSBzdGFuZGFy ZCBUY2cyRHhlIGRyaXZlciBwcm92aWRlcyB0aGF0IHByb3RvY29sLiBJbiBURFgNCj4+PiBndWVz dHMsIFRkVGNnMkR4ZS5pbmYgc2hvdWxkIHByb3ZpZGUgdGhlIHByb3RvY29sLiBBcmJpdHJhdGlv biBiZXR3ZWVuDQo+Pj4gdGhlIHR3byBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aCB0aGUgcGF0dGVy biBzZWVuIGluIHRoZSBmb2xsb3dpbmcNCj4+PiBjb21taXRzOg0KPj4+IA0KPj4+IDEgIDA1ZGIw OTQ4Y2M2MCBFbWJlZGRlZFBrZzogaW50cm9kdWNlIEVES0lJIFBsYXRmb3JtIEhhcyBBQ1BJIEdV SUQNCj4+PiAyICA3ODZmNDc2MzIzYTYgRW1iZWRkZWRQa2c6IGludHJvZHVjZSBQbGF0Zm9ybUhh c0FjcGlMaWINCj4+PiAzICA2NWE2OWIyMTQ4NDAgRW1iZWRkZWRQa2c6IGludHJvZHVjZSBFREtJ SSBQbGF0Zm9ybSBIYXMgRGV2aWNlIFRyZWUNCj4+PiAgICAgICAgICAgICAgICAgR1VJRA0KPj4+ IDQgIDI1NThiZmUzZTkwNyBBcm1WaXJ0UGtnOiBhZGQgUGxhdGZvcm1IYXNBY3BpRHREeGUNCj4+ PiANCj4+PiBUaGUgYmFzaWMgaWRlYSBpcyB0aGF0IFRjZzJEeGUgY2FuIGhhdmUgYSBkZXBleCBv biBhIG5ldyAicnVubmluZyBpbg0KPj4+IFNFViIgcHJvdG9jb2wgR1VJRCwgYW5kIFRkVGNnMkR4 ZSBjYW4gaGF2ZSBhIGRlcGV4IG9uIGEgbmV3ICJydW5uaW5nIGluDQo+Pj4gVERYIiBwcm90b2Nv bCBHVUlELiBBIHNlcGFyYXRlIHBsYXRmb3JtIGRyaXZlciBjYW4gaW5zdGFsbCB0aGUgcHJvcGVy DQo+Pj4gR1VJRCAtLSBwb3NzaWJseSAqbmVpdGhlciogb2YgdGhvc2UgR1VJRHMuDQo+Pj4gDQo+ Pj4gQW5kLCB3ZSBkb24ndCBoYXZlIHRvIGNoYW5nZSB0aGUgZGVwZXggc2VjdGlvbiBvZg0KPj4+ ICJTZWN1cml0eVBrZy9UY2cvVGNnMkR4ZS9UY2cyRHhlLmluZiIgZm9yIHRoaXM7IHdlIGNhbiBp bXBsZW1lbnQgYQ0KPj4+IGxpYnJhcnkgaW5zdGFuY2Ugd2l0aCBhbiBlbXB0eSBjb25zdHJ1Y3Rv ciwgYnV0IGEgbm9uLWVtcHR5IGRlcGV4LCBhbmQNCj4+PiB0aGVuIGhvb2sgdGhpcyBsaWIgaW5z dGFuY2UgaW50byBUY2cyRHhlLmluZiB2aWEgbW9kdWxlIHNjb3BlIE5VTEwgbGliDQo+Pj4gY2xh c3Mgb3ZlcnJpZGUgaW4gdGhlIERTQyBmaWxlLiBCYXNpY2FsbHkgd2UgY291bGQgZm9yY2libHkg cmVzdHJpY3QNCj4+PiBUY2cyRHhlJ3MgREVQRVggYnkgbWFraW5nIGl0IGluaGVyaXQgdGhlIG5l dyBERVBFWCBmcm9tIHRoZSBsaWJyYXJ5Lg0KPj4+IA0KPj4+IA0KPj4+ICoqKiBTbGlkZSA0ODog RFhFIFBoYXNlIC0tIE90aGVyIE1vZHVsZXMNCj4+PiANCj4+PiBSZWdhcmRpbmcgSW5jb21wYXRp YmxlUGNpRGV2aWNlU3VwcG9ydER4ZTogdGhlIHByb3Bvc2VkIHVwZGF0ZSBzb3VuZHMNCj4+PiBw bGF1c2libGUgYW5kIHNpbXBsZSBlbm91Z2guDQo+Pj4gDQo+Pj4gKDIxKSAiQWNwaVBsYXRmb3Jt RHhlOiBTdXBwb3J0IGZvciBNQURUL0FDUEkgYWRkaXRpb24gdG8gcmVwb3J0IFRkDQo+Pj4gTWFp bGJveCBlbnRyeSINCj4+PiANCj4+PiBGaXJtd2FyZS1vd25lZCB0YWJsZXMgbXVzdCBub3QgYmUg aW5zdGFsbGVkIGZyb20gdGhpcyBkcml2ZXIuDQo+Pj4gDQo+Pj4gUGxlYXNlIHJlZmVyIHRvIG15 ICJYZW4gcmVtb3ZhbCIgcGF0Y2ggc2V0IGFnYWluLCBmb3INCj4+PiA8aHR0cHM6Ly9idWd6aWxs YS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIyPiwgd2hpY2ggSSBtZW50aW9uDQo+ Pj4gYWJvdmUgaW4gcG9pbnQgKDE0KS4gQXMgcGFydCBvZiB0aGUgWGVuIHJlbW92YWwsIHRoZSBB Y3BpUGxhdGZvcm1EeGUNCj4+PiBkcml2ZXIgaW4gT3ZtZlBrZyBpcyBzaWduaWZpY2FudGx5IHRy aW1tZWQ6IGFsbCB1bnVzZWQgKGRlYWQpIGNydWZ0IGlzDQo+Pj4gcmVtb3ZlZCwgaW5jbHVkaW5n IGFueSBBQ1BJIHRhYmxlIHRlbXBsYXRlcyB0aGF0IGFyZSBidWlsdCBpbnRvIHRoZQ0KPj4+IGZp cm13YXJlLg0KPj4+IA0KPj4+IE92bWZQa2cvQWNwaVBsYXRmb3JtRHhlIGlzIHJlc3BvbnNpYmxl ICpzb2xlbHkqIGZvciBpbXBsZW1lbnRpbmcgdGhlDQo+Pj4gY2xpZW50IHNpZGUgb2YgdGhlIFFF TVUgQUNQSSBsaW5rZXIvbG9hZGVyLg0KPj4+IA0KPj4+IElmIHlvdSBuZWVkIHRvIHByZXBhcmUg JiBpbnN0YWxsIGRpZmZlcmVudCBBQ1BJIHRhYmxlcywgcGxlYXNlIGRvIGl0DQo+Pj4gZWxzZXdo ZXJlLCBpbiBhbm90aGVyIERYRSBkcml2ZXIuIEEgYnVuY2ggb2Ygb3RoZXIgZmlybXdhcmUgbW9k dWxlcyBkbw0KPj4+IHRoYXQgKE5GSVQsIElCRlQsIEJHUlQsIC4uLikuDQo+Pj4gDQo+Pj4gRm9y IGV4YW1wbGUsIHRoZSBPdm1mUGtnL1RkeER4ZSBEWEVfRFJJVkVSIGlzIHN1cHBvc2VkIHRvIGJl IGxhdW5jaGVkDQo+Pj4gZWFybHkgaW4gdGhlIERYRSBwaGFzZSwgdmlhIEFQUklPUkkgc2VjdGlv biAtLSBwbGVhc2UgY29uc2lkZXINCj4+PiByZWdpc3RlcmluZyBhIHByb3RvY29sIG5vdGlmeSBp biB0aGF0IGRyaXZlciwgZm9yDQo+Pj4gRUZJX0FDUElfVEFCTEVfUFJPVE9DT0wsIGFuZCB3aGVu IGl0IGJlY29tZXMgYXZhaWxhYmxlLCBpbnN0YWxsDQo+Pj4gd2hhdGV2ZXINCj4+PiAqZXh0cmEq IHRhYmxlcyB5b3UgbmVlZC4NCj4+PiANCj4+PiBOb3RlIHRoYXQgaWYgeW91IG5lZWQgdG8gKmN1 c3RvbWl6ZSogYW4gQUNQSSB0YWJsZSB0aGF0IFFFTVUgYWxyZWFkeQ0KPj4+IHByb3ZpZGVzLCB0 aGVuIHlvdSB3aWxsIGhhdmUgdG8gbW9kaWZ5IHRoZSBBQ1BJIGdlbmVyYXRvciBvbiB0aGUgUUVN VQ0KPj4+IHNpZGUuIEl0IGlzIGEgZGVzaWduIHRlbmV0IGJldHdlZW4gUUVNVSBhbmQgT1ZNRiB0 aGF0IE9WTUYgaW5jbHVkZSBubw0KPj4+IGJ1c2luZXNzIGxvZ2ljIGZvciBlaXRoZXIgcGFyc2lu ZyBvciBmaXhpbmcgdXAgQUNQSSB0YWJsZXMgdGhhdCBRRU1VDQo+Pj4gcHJvdmlkZXMuIEFjcGlQ bGF0Zm9ybUR4ZSBjb250YWlucyB0aGUgbWluaW11bSAod2hpY2ggaXMgYWxyZWFkeSBhIHdob2xl DQo+Pj4gbG90LCB1bmZvcnR1bmF0ZWx5KSB0aGF0J3MgbmVjZXNzYXJ5IGZvciBpbXBsZW1lbnRp bmcgdGhlIFFFTVUgQUNQSQ0KPj4+IGxpbmtlci9sb2FkZXIgY2xpZW50IGluIHRoZSBVRUZJIGVu dmlyb25tZW50Lg0KPj4+IA0KPj4+IFRoZSBzbGlkZSBkZWNrIG1lbnRpb25zIE1BRFQsIHdoaWNo IGlzIGFsc28ga25vd24gYXMgdGhlICJBUElDIiB0YWJsZSAtLQ0KPj4+IGFuZCBpbmRlZWQsIFFF TVUgZG9lcyBwcm92aWRlIHRoYXQuIChTZWUgYWNwaV9idWlsZF9tYWR0KCkNCj4+PiBbaHcvaTM4 Ni9hY3BpLWNvbW1vbi5jXS4pIFNvIGlmIFREWCBuZWVkcyBNQURUIGN1c3RvbWl6YXRpb25zLCB0 aGF0DQo+Pj4gc2hvdWxkIGdvIGludG8gUUVNVS4NCj4+PiANCj4+PiAoMjIpIEVtdVZhcmlhYmxl RnZiUnVudGltZUR4ZQ0KPj4+IA0KPj4+IE91Y2gsIHRoaXMgaXMgYW4gdW5wbGVhc2FudCBzdXJw cmlzZS4NCj4+PiANCj4+PiBGaXJzdCwgaWYgeW91IGtub3cgZm9yIGEgZmFjdCB0aGF0IHBmbGFz aCBpcyBub3QgcGFydCBvZiB0aGUgKmJvYXJkKiBpbg0KPj4+IGFueSBURFggc2V0dXAsIHRoZW4g cHVsbGluZw0KPj4+IA0KPj4+ICBPdm1mUGtnL1FlbXVGbGFzaEZ2YlNlcnZpY2VzUnVudGltZUR4 ZS9GdmJTZXJ2aWNlc1J1bnRpbWVEeGUuaW5mDQo+Pj4gDQo+Pj4gaW50byB0aGUgZmlybXdhcmUg cGxhdGZvcm0gaXMgdXNlbGVzcywgYXMgaXQgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGgNCj4+ PiANCj4+PiAgT3ZtZlBrZy9FbXVWYXJpYWJsZUZ2YlJ1bnRpbWVEeGUvRnZiLmluZg0KPj4+IA0K Pj4+ICh2aWEgZHluYW1pYyBtZWFucyAtLSBhIGR5bmFtaWMgUENEKS4NCj4+PiANCj4+PiBOb3Rl IHRoYXQgdGhlIEZERiBmaWxlIHBsYWNlcyBRZW11Rmxhc2hGdmJTZXJ2aWNlc1J1bnRpbWVEeGUg aW4gQVBSSU9SSQ0KPj4+IERYRSB3aGVuIFNNTV9SRVFVSVJFIGlzIEZBTFNFLiBUaGlzIGRyaXZl ciBjaGVja3MgZm9yIHBmbGFzaCBwcmVzZW5jZSwNCj4+PiBhbmQgbGV0cyBFbXVWYXJpYWJsZUZ2 YlJ1bnRpbWVEeGUgcGVyZm9ybSBpdHMgaW4tUkFNIGZsYXNoIGVtdWxhdGlvbg0KPj4+IG9ubHkg aW4gY2FzZSBwZmxhc2ggaXMgbm90IGZvdW5kLg0KPj4+IA0KPj4+IFNvIHRoaXMgaXMgYWdhaW4g aW4gZmF2b3Igb2YgYSBzZXBhcmF0ZSBwbGF0Zm9ybSAtLSBpZiB3ZSBrbm93IHBmbGFzaCBpcw0K Pj4+IG5ldmVyIHBhcnQgb2YgdGhlIGJvYXJkLCB0aGVuIFFlbXVGbGFzaEZ2YlNlcnZpY2VzUnVu dGltZUR4ZSBpcyBuZXZlcg0KPj4+IG5lZWRlZCwgYnV0IHlvdSBjYW5ub3QgcmVtb3ZlIGl0IGZy b20gdGhlIHRyYWRpdGlvbmFsIERTQy9GREYgZmlsZXMuDQo+Pj4gDQo+Pj4gU2Vjb25kLCBFbXVW YXJpYWJsZUZ2YlJ1bnRpbWVEeGUgY29uc3VtZXMgdGhlIFBsYXRmb3JtRnZiTGliIGNsYXNzLA0K Pj4+IGZvcg0KPj4+IHRoZSBQbGF0Zm9ybUZ2YkRhdGFXcml0dGVuKCkgQVBJIChhbW9uZyBvdGhl ciB0aGluZ3MpLiBUaGlzIGxpYiBjbGFzcyBpcw0KPj4+IGltcGxlbWVudGVkIGJ5IHR3byBpbnN0 YW5jZXMgaW4gT3ZtZlBrZywgUGxhdGZvcm1GdmJMaWJOdWxsIGFuZA0KPj4+IEVtdVZhcmlhYmxl RnZiTGliLiBUaGUgbGF0dGVyIGluc3RhbmNlIGFsbG93cyBQbGF0Zm9ybSBCRFMgdG8gaG9vayBh bg0KPj4+IGV2ZW50IChmb3Igc2lnbmFsaW5nKSB2aWEgIlBjZEVtdVZhcmlhYmxlRXZlbnQiIGlu dG8gdGhlDQo+Pj4gRW11VmFyaWFibGVGdmJSdW50aW1lRHhlIGRyaXZlci4NCj4+PiANCj4+PiBJ biBvbGQgKHZlcnkgb2xkKSBRRU1VIGJvYXJkIGNvbmZpZ3VyYXRpb25zLCBuYW1lbHkgdGhvc2Ug d2l0aG91dA0KPj4+IHBmbGFzaCwgdGhpcyAobWlzKWZlYXR1cmUgaXMgdXNlZCBieSBPVk1GJ3Mg UGxhdGZvcm1Cb290TWFuYWdlckxpYiB0bw0KPj4+IHdyaXRlIG91dCBhbGwgdmFyaWFibGVzIHRv IHRoZSBFRkkgc3lzdGVtIHBhcnRpdGlvbiBpbiBhIHJlZ3VsYXIgZmlsZQ0KPj4+IGNhbGxlZCBc TnZWYXJzLCB3aXRoIHRoZSBoZWxwIG9mIE52VmFyc0ZpbGVMaWIsIHdoZW5ldmVyDQo+Pj4gRW11 VmFyaWFibGVGdmJSdW50aW1lRHhlIHdyaXRlcyBvdXQgYW4gZW11bGF0ZWQgImZsYXNoIiBibG9j ay4gRm9yIHRoaXMNCj4+PiBwdXJwb3NlLCB0aGUgdHJhZGl0aW9uYWwgT1ZNRiBEU0MgZmlsZXMg bGluayBFbXVWYXJpYWJsZUZ2YkxpYiBpbnRvDQo+Pj4gRW11VmFyaWFibGVGdmJSdW50aW1lRHhl Lg0KPj4+IA0KPj4+IEJ1dCBpdCBjb3VudHMgYXMgYW4gYWJzb2x1dGUgZGlzYXN0ZXIgbm93YWRh eXMsIGFuZCBzaG91bGQgbm90IGJlDQo+Pj4gcmV2aXZlZCBpbiBhbnkgcGxhdGZvcm0uIElmIHlv dSBkb24ndCBoYXZlIHBmbGFzaCBpbiBURFggZ3Vlc3RzLCBqdXN0DQo+Pj4gYWNjZXB0IHRoYXQg eW91IHdvbid0IGhhdmUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcy4gQW5kIGxpbmsNCj4+PiBQbGF0 Zm9ybUZ2YkxpYk51bGwgaW50byBFbXVWYXJpYWJsZUZ2YlJ1bnRpbWVEeGUuIFlvdSdyZSBnb2lu ZyB0byBuZWVkDQo+Pj4gYQ0KPj4+IHNlcGFyYXRlIFBsYXRmb3JtQm9vdE1hbmFnZXJMaWIgaW5z dGFuY2UgYW55d2F5Lg0KPj4+IA0KPj4+IChXZSBzaG91bGQgaGF2ZSByZW1vdmVkIEVtdVZhcmlh YmxlRnZiUnVudGltZUR4ZSBhIGxvbmcgdGltZSBhZ28NCj4+PiBmcm9tDQo+Pj4gdGhlIHRyYWRp dGlvbmFsIE9WTUYgcGxhdGZvcm1zLCBpLmUuIG1hZGUgcGZsYXNoIGEgaGFyZCByZXF1aXJlbWVu dCwNCj4+PiBldmVuIHdoZW4gU01NIGlzIG5vdCBidWlsdCBpbnRvIHRoZSBwbGF0Zm9ybSAtLSBi dXQgd2hlbmV2ZXIgSSB0cmllZA0KPj4+IHRoYXQsIEpvcmRhbiBhbHdheXMgc2hvdCBtZSBkb3du LikNCj4+PiANCj4+PiBNeSBwb2ludCBpczogdXNpbmcgRW11VmFyaWFibGVGdmJSdW50aW1lRHhl IGluIHRoZSBURFggcGxhdGZvcm0gbWF5IGJlDQo+Pj4gZGVmZW5zaWJsZSBwZXIgc2UsIGJ1dCB3 ZSBtdXN0IGJlIHZlcnkgY2xlYXIgdGhhdCBpdCB3aWxsIG5ldmVyIHByb3ZpZGUNCj4+PiBhIHN0 YW5kYXJkcy1jb25mb3JtYW50IHNlcnZpY2UgZm9yIG5vbi12b2xhdGlsZSBVRUZJIHZhcmlhYmxl cywgYW5kIHdlDQo+Pj4gbXVzdCBrZWVwIGFzIG11Y2ggb2YgdGhlIFxOdlZhcnMgbWVzcyBvdXQg b2YgRW11VmFyaWFibGVGdmJSdW50aW1lRHhlDQo+Pj4gYXMNCj4+PiBwb3NzaWJsZS4gVGhpcyB3 aWxsIHJlcXVpcmUgYSBzZXBhcmF0ZSBQbGF0Zm9ybUJvb3RNYW5hZ2VyTGliIGluc3RhbmNlDQo+ Pj4gZm9yIFREWCBhbnl3YXkgKG9yIG1heWJlIHNoYXJlIFBsYXRmb3JtQm9vdE1hbmFnZXJMaWJH cnViIHdpdGgNCj4+PiAiT3ZtZlBrZy9BbWRTZXYvQW1kU2V2WDY0LmRzYyIpLg0KPj4+IA0KPj4+ IEFwYXJ0IGZyb20gdGhlIHZvbGF0aWxpdHkgYXNwZWN0LCBsZXQncyBhc3N1bWUgd2UgaGF2ZSB0 aGlzIGluLVJBTQ0KPj4+IGVtdWxhdGVkICJmbGFzaCBkZXZpY2UiLCBzdG9yaW5nIGF1dGhlbnRp Y2F0ZWQgVUVGSSB2YXJpYWJsZXMgZm9yIFNlY3VyZQ0KPj4+IEJvb3QgcHVycG9zZXMuIEFuZCB3 ZSBkb24ndCBoYXZlIFNNTS4NCj4+PiANCj4+PiBXaGF0IHByb3RlY3RzIHRoaXMgaW4tUkFNIHZh cmlhYmxlIHN0b3JlIGZyb20gdGFtcGVyaW5nIGJ5IHRoZSBndWVzdCBPUz8NCj4+PiBJdCdzIGFs bCBndWVzdCBSQU0gb25seSwgYWZ0ZXIgYWxsLiBXaGF0IHByb3ZpZGVzIHRoZSBwcml2aWxlZ2Ug YmFycmllcg0KPj4+IGJldHdlZW4gdGhlIGd1ZXN0IGZpcm13YXJlIGFuZCB0aGUgZ3Vlc3QgT1M/ DQo+Pj4gDQo+Pj4gDQo+Pj4gKioqIFNsaWRlIDUwOiBMaWJyYXJ5DQo+Pj4gDQo+Pj4gKDIzKSBT aG91bGQgd2UgaW50cm9kdWNlIE51bGwgaW5zdGFuY2VzIGZvciBhbGwgKG9yIG1vc3QpIG5ldyBs aWINCj4+PiBjbGFzc2VzIGhlcmU/IENvZGUgc2l6ZSBpcyBhIGNvbmNlcm4gKHN0YXRpYyBsaW5r aW5nKS4gSWYgd2UgZXh0ZW5kIGENCj4+PiBjb21tb24gT3ZtZlBrZyBtb2R1bGUgd2l0aCBuZXcg aG9vayBwb2ludHMsIGl0J3Mgb25lIHRoaW5nIHRvIHJldHVybg0KPj4+IGZyb20gdGhhdCBob29r IHBvaW50IGVhcmx5ICpkeW5hbWljYWxseSosIGJ1dCBpdCdzIGV2ZW4gYmV0dGVyIChnaXZlbg0K Pj4+IHNlcGFyYXRlIHBsYXRmb3JtcykgdG8gYWxsb3cgdGhlIHRyYWRpdGlvbmFsIHBsYXRmb3Jt IGZpcm13YXJlIHRvIHVzZSBhDQo+Pj4gTnVsbCBsaWIgaW5zdGFuY2UsIHRvIGN1dCBvdXQgYWxs IHRoZSBkZWFkIGNvZGUgc3RhdGljYWxseS4NCj4+PiANCj4+PiANCj4+PiAqKiogU2xpZGVzIDUx IHRocm91Z2ggNTINCj4+PiANCj4+PiBTZWVtcyBPSy4NCj4+PiANCj4+PiANCj4+PiAqKiogU2xp ZGUgNTM6DQo+Pj4gDQo+Pj4gKDI0KSBJdCBtaWdodCBiZSB3b3J0aCBub3RpbmcgdGhhdCBCYXNl SW9MaWJJbnRyaW5zaWMgYWxyZWFkeSBoYXMgc29tZQ0KPj4+IFNFViBlbmxpZ2h0ZW5tZW50LCBh cyB0aGUgRklGTyBJTyBwb3J0IG9wZXJhdGlvbnMgKHdoaWNoIG5vcm1hbGx5IHVzZQ0KPj4+IHRo ZSBSRVAgcHJlZml4KSBhcmUgbm90IGhhbmRsZWQgb24gU0VWLiBJIGRvbid0IGhhdmUgYW4gaW1t ZWRpYXRlIGlkZWENCj4+PiB3aHkgdGhpcyBtaWdodCBtYXR0ZXIsIHdlIHNob3VsZCBqdXN0IG1p bmltaXplIGNvZGUgZHVwbGljYXRpb24gaWYNCj4+PiBwb3NzaWJsZS4NCj4+PiANCj4+PiANCj4+ PiAqKiogU2xpZGVzIDU0LTU2Og0KPj4+IA0KPj4+IE5vICBjb21tZW50cywgdGhpcyBzdHVmZiBz ZWVtcyByZWFzb25hYmxlLg0KPj4+IA0KPj4+IA0KPj4+ICoqKiBTbGlkZSA1NzogTXBJbml0TGli DQo+Pj4gDQo+Pj4gSSBkb24ndCBrbm93IGVub3VnaCB0byBnaXZlIGEgc3VtbWFyeSBqdWRnZW1l bnQuDQo+Pj4gDQo+Pj4gDQo+Pj4gQWxsIGluIGFsbCwgSSBzZWUgdGhlIGNvbnRyb3ZlcnNpYWwg LyBtZXNzeSBwYXJ0cyBpbiB0aGUgcGxhdGZvcm0NCj4+PiBicmluZ3VwLCBhbmQgaG93IGFsbCB0 aGF0IGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgKCJsZWdhY3kiKSBPVk1GDQo+Pj4gcGxh dGZvcm1zLiBJIGFkbWl0IEkgKm1heSogYmUgYmlhc2VkIGluIGZhdm9yIG9mIFNFViwgcG9zc2li bHkgYmVjYXVzZQ0KPj4+IFNFViBsYW5kZWQgZmlyc3QgLS0gaWYgeW91IGZpbmQgc2lnbnMgb2Yg c3VjaCBhIGJpYXMgaW4gbXkgY29tbWVudHMsDQo+Pj4gcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRv IGRlYnVuayB0aG9zZSBwb2ludHMuIFlldCBteSBnZW5lcmFsIGltcHJlc3Npb24NCj4+PiBpcyB0 aGF0IHRoZSBlYXJseSBicmluZ3VwIHN0dWZmIGlzIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZy b20NCj4+PiBldmVyeXRoaW5nIGJlZm9yZSwgYW5kIGJlY2F1c2Ugb2YgdGhpcywgYSBzZXBhcmF0 ZSBwbGF0Zm9ybSBpcw0KPj4+IGp1c3RpZmllZC4NCj4+PiANCj4+PiBEZWZpbml0ZWx5IHNlcGFy YXRlIGZyb20gdGhlIHRyYWRpdGlvbmFsIE9WTUYgSUEzMiwgSUEzMlg2NCwgYW5kIFg2NA0KPj4+ IHBsYXRmb3JtcywgYW5kICpwb3NzaWJseSogc2VwYXJhdGUgZnJvbSB0aGUgInJlbW90ZSBhdHRl c3RhdGlvbiINCj4+PiBBbWRTZXZYNjQuZHNjIHBsYXRmb3JtLiBJIHdvdWxkIGFwcHJvYWNoIHRo ZSBURFggZmVhdHVyZS1zZXQgaW4gY29tcGxldGUNCj4+PiBpc29sYXRpb24gKGV4YWN0bHkgaG93 IEludGVsIGNvbW1lbmNlZCB0aGUgd29yaywgaWYgSSB1bmRlcnN0YW5kDQo+Pj4gY29ycmVjdGx5 KSwgbW9kdWxvIG9idmlvdXNseSBzaGFyZWFibGUgLyByZXVzYWJsZSBwYXJ0cywgYW5kIHRoZW4g c2xvd2x5DQo+Pj4gJiBncmFkdWFsbHkgd29yayBvbiBleHRyYWN0aW5nIC8gcmVmYWN0b3Jpbmcg Y29tbW9uYWxpdGllcy4NCj4+PiANCj4+PiAoQnV0LCBnaXZlbiBteSBzdGFuY2Ugb24gWGVuIGZv ciBleGFtcGxlLCBJIGNvdWxkIGRpc2FncmVlIGV2ZW4gd2l0aCB0aGUNCj4+PiBsYXR0ZXIsIHJl dHJvYWN0aXZlIGtpbmQgb2YgdW5pZmljYXRpb24gLS0gaXQgYWxsIGJvaWxzIGRvd24gdG8gc2hh cmVkDQo+Pj4gZGV2ZWxvcGVyIGFuZCB1c2VyIGJhc2UuIENvbXBvbmVudCBzaGFyaW5nIHNob3Vs ZCByZWZsZWN0IHRoZSBjb21tdW5pdHkNCj4+PiBzdHJ1Y3R1cmUsIG90aGVyd2lzZSBtYWludGVu YW5jZSB3aWxsIGJlIGEgbmlnaHRtYXJlLikNCj4+PiANCj4+PiBUaGFua3MNCj4+PiBMYXN6bG8N Cj4+PiANCj4+PiANCj4+PiANCj4+PiANCj4+PiANCj4+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+ IA0K