From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web12.3408.1617777069152012446 for ; Tue, 06 Apr 2021 23:31:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=gm7efn6S; spf=pass (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=07314ed417=abner.chang@hpe.com) Received: from pps.filterd (m0150241.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1376SbTu012600; Wed, 7 Apr 2021 06:31:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=+Ecl5u1AhC8khLe02pY7MsoUQuayEBV/TTpWlWeaVAo=; b=gm7efn6Sjb3g44AbAhZqn5YHLYNuuUo4e40fKhBpbQ5DT+/KBvrO3Stf47LImcBvzom4 appVRMEURghVBMKS+FgVEPyW8EAc3Y3zO2rU/Tn2Zl6F50/3DFXLe+s/XvV2dPYs9e5C ZvzEP3QgcPwEjcHQFGa/O88dvNh70KdgZ2kzHzj13lDYE1o1IkVw1UD2rcdATFWGYNU0 IpAqrhj0GVWmvTuDhkKxrVMpZcgBQjlfoCqEnKV6aXBkkeOz4f2xsDLdewTSiiuklRtb /tztqnG9hr95eHuBA32TYcYFWps7hAgZAsdBDbdULn/cMnhsH8C4JRblVCV1NQAGUYXK VA== Received: from g2t2352.austin.hpe.com (g2t2352.austin.hpe.com [15.233.44.25]) by mx0a-002e3701.pphosted.com with ESMTP id 37rvd53x7r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 07 Apr 2021 06:31:03 +0000 Received: from G4W9121.americas.hpqcorp.net (exchangepmrr1.us.hpecorp.net [16.210.21.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2352.austin.hpe.com (Postfix) with ESMTPS id 029B062; Wed, 7 Apr 2021 06:31:01 +0000 (UTC) Received: from G2W6310.americas.hpqcorp.net (2002:10c5:4034::10c5:4034) by G4W9121.americas.hpqcorp.net (2002:10d2:1510::10d2:1510) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 7 Apr 2021 06:31:01 +0000 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (15.241.52.11) by G2W6310.americas.hpqcorp.net (16.197.64.52) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 7 Apr 2021 06:31:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M0QK0J+vLuLt5uTtM7HvUQUQUrtXnvCNCsqGr1l1PctUOg65lf/q2Uo0o6S63Soi9kUYyZATagTe5KNAm+QZDjqcB4i2hZqh19KITbPp9l6CxqwfcooYPbCWgWevr2dO5TvGVwWtSVKLFfhmH/8CZ2R0Qd7UhJZ5ovWtLdgEdIqfe/THlbSSz1TeQ7dyw8iuFTeCNCVX4tKfakW7L4dCZ2dg7I2GR8pRdC/s0EIe+s5z0/vOHsAdq7ygo7IjZUSGm7tSIeeWvxw4W7rgVF60evD+inYEfKq63dUkHw5wcqFbYcfAZD93Mp03zAj4V1FukTtsWVU1LX7EUsbJMLzCbw== 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=l5oHfkmzLc8bo1MAvqz3j2PlLobzOFh65q0G9lrcG2M=; b=G9meaDkN6HTjQjLt23rdMBKK7PTk+hbDNIiuEiTgxVB9RUgKO5ztTUfGc0clZd4dTRbTUdKSYAdf3HQqc71c3aGsE0h6DmoIR7doFPYbYBepv7/qQx/DX64MgXZMOVm2u4UkW6KCG7SEeyyxlTLN38dBPYuyDQnyKFu0RhfFh6zXxuKFZJF5Le6Eu1VCGCElMDDbaqjmwx7RSbsOvCgB5txuzLEDzG3/nP9MB2njJk2RhK6dacVdRXIQEkgb6zlLp8cigxmbIBHfoGkHCXynWcf6FMf3D+md5eKre05QwBXtB9nMmkVI6j1ecNdZBcF2wv+orZI62FLxd6/LLHuvzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB1048.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:750d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.29; Wed, 7 Apr 2021 06:30:58 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::28f5:3e45:17cf:9231]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::28f5:3e45:17cf:9231%10]) with mapi id 15.20.4020.016; Wed, 7 Apr 2021 06:30:58 +0000 From: "Abner Chang" To: gaoliming , "devel@edk2.groups.io" CC: "Wang, Nickle (HPS SW)" Subject: Re: [edk2-devel] [PATCH] RedfishPkg/RedfishConfigHandler: EDKII RedfishConfigHandler Protocol Thread-Topic: [edk2-devel] [PATCH] RedfishPkg/RedfishConfigHandler: EDKII RedfishConfigHandler Protocol Thread-Index: AQFGfLPcVwxew15zSbygHxA9BtejaKvJ4gwggAATNVA= Date: Wed, 7 Apr 2021 06:30:58 +0000 Message-ID: References: <20210326055520.23823-1-abner.chang@hpe.com> <008b01d72b6d$c6f6ed60$54e4c820$@byosoft.com.cn> In-Reply-To: <008b01d72b6d$c6f6ed60$54e4c820$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: byosoft.com.cn; dkim=none (message not signed) header.d=none;byosoft.com.cn; dmarc=none action=none header.from=hpe.com; x-originating-ip: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c6812ac2-c1ba-41f1-c401-08d8f98eb4c7 x-ms-traffictypediagnostic: CS1PR8401MB1048: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:248; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: NCCR6VfMOdKYMVhHKTu69xIhzVg9fSoCjklCDKqipKZlNM4rsMbzUGvnjg/hriJdCTPp8senXNKnRTZ1835Q2tc5gTgzA0s6BiLrF/+9ZCvKl0EvyUt4YEnkLYxRN2tusaCTKNml3DccmAbPyYS/bpmzH+Iw0Z2r79pFebonb5Td8XS4lS9y0OCHqvMIOsV8WEVU/6t0vEM9kRuWEEsEb6HJGMl1aUwFi7Nx5UMcgtNtlzYHz5v6XaLcvStzotEl/QFuTjiBwm+zHqDQXb27pkuM4Y2d+nzDgbgHUE+66LNhOcjRx36HwirzRjaP7oaYRUNa8YpwNWmGUW4KPjxGdlzyAWISNTu3YA1vLgOJn6MVfXh4IwRM6hsULRCKdg4kORrWzNVBK3kCbbXAdXbK5Z0uo7QdQ3zDAwaB6YZqdQMXg6XL+Aunr/FELSOwS2obvRBsY+kW/ubcFQ0WvtQSAb9q93Bdy/tTkWMPS2N+GYE+03HHb6rPEsQ+g6GrF9SYhczqeCiZJd2j6SZSveTtb7LSowJ3GPlxO+pveWa/jjN1QgEzv6UfNq86b5AQb2POHXpUfxilVtAUKtBOyiT2x9asfqPpyXqtpnMZoDGgaI1UBASffzphOssKxmdoDL9lR/uO3y3KB9SkWifWhYGQIdtAvSpwY1eMg7hkw6EY3WDtvjrX119oie8unDqIt5vZK+KWj4cTTB/Dz551B5pj5NLXFdyjfBwH8Is+nBAbk2gzNLGI0cFWO/HLru1VtL1Y x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(136003)(396003)(39850400004)(366004)(346002)(376002)(316002)(66946007)(110136005)(76116006)(55016002)(5660300002)(66476007)(71200400001)(478600001)(8936002)(38100700001)(966005)(4326008)(8676002)(52536014)(7696005)(9686003)(6506007)(53546011)(66556008)(64756008)(66446008)(19627235002)(2906002)(30864003)(86362001)(83380400001)(33656002)(26005)(186003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?bExOaFBSTkE5aWRScDYzWW5wanFjR1k2WVFTWDBPeWJGNDdzN0wwQXpzOVJt?= =?gb2312?B?Mjc3STUrN2l4eTcvYys5bVVBem1IM1RTUUtkNGhsSWlIaE9BTklTUFJTZXdJ?= =?gb2312?B?YXhTcmlLNTBDVy9yZEF5QWZtOWZ0eWVldE5qMFErVjYybzZXMDRieVNQZVlI?= =?gb2312?B?OGVKd3czSk5OSzQzVy9odCtPTjZYYXUyTVg3bkNNVXpELzBDYVgxeFVWdk9o?= =?gb2312?B?MXZpc3lRcmRHbm1zNkpxbzg1dFB4N08vNHhRRFZKMUNVZ2tPSmZYMjFvNldK?= =?gb2312?B?UUtUTDI2T21sNEE2UWpkTHJGZkcvb0J5M1ZrUmlOWFpIYVFlQUxvZzgzS2lO?= =?gb2312?B?U3o0YkExb1F5d0FZTU1rOVVaR01Cd0JqcTJJMEFTU0pTbnNRdTNpZjJKOTh3?= =?gb2312?B?bjIvWjBTYk51Ky9lbVNnaytzc1ZTU3lwRkN6SzhoamRUWUFoWjhkcFFyYTNV?= =?gb2312?B?TzdyRCtMdE9hYnhSdXB0bUNzYTk5R2lkWXZtMWc2OUJmNjhnZGo5MWZCYmto?= =?gb2312?B?WGxDeGFVYVdpWDRnS1hYMDV6SFhRa2NxRTMrM2htdXI0dmpXR2xlejNFRzNu?= =?gb2312?B?SkU5RzBKaWlLSVorc2R1U0tMY0QxemFhK2JiVTNMU1o1NkVvT1A4bjJJd1A2?= =?gb2312?B?SkpkV0tIRCt0eVZtT0dBUlRXR1pxdXdLaWFkZjl2b09UTGY5ZDFqV3M5L2dZ?= =?gb2312?B?ZDhQd1o4dTlVcW1uVzN2b29tOWFCSFdWZVFXQTNRNFZZTWEwZEJ4eXVHbWN4?= =?gb2312?B?V3d0OEhSTTY0TDBValF6SVVibjlxc005b0UyTmU3SGV0bnBKd3BSM1FnWG5L?= =?gb2312?B?am1DM2o3eWtacTdnRmEvSEMyN0NPNUsvQy9PU0VCeUpNTkVuTEd1WVBwMElI?= =?gb2312?B?VUkyVEtjVUxvNW9QcWNvMjhPYllFZjlYamRoeHoydWdCZXF2VHZna0V4NWFr?= =?gb2312?B?WEc1ajV3Q09OSk1CeWFKSG9iRkg5U3EwbzBTVVpOSUxvdDJZRlZwcmZCbGJH?= =?gb2312?B?ZzBteDRoUmxLMWprWDloOFVabUptQlZZenczL0dOblEzRGUxR1ltTWNtaHNC?= =?gb2312?B?YlBsNGtlM1hiQ0VwTFAwN0pXeVFBSEt2VklMaHlNRTk0bEhhWisxOVlJUDRt?= =?gb2312?B?YWdia3NvdXhYZmZEeUFvSklZcmpvS0NZaDdsOHRzeFNKTE52aUUxUklyNTJS?= =?gb2312?B?WUdibDBUR0pJb3Vkd1lCdGt4dC9yaURkYnFyTHdXajBVNmZMb1liZ3pVQXVM?= =?gb2312?B?WWUyMkRUMW5BUENEUGtVUTdlaDRMUDFGR01ZUWhpQ3dOL1FsYjhHOUhlZ0FV?= =?gb2312?B?K3VLZVkxQ0M1N1pQZ1lLV3l1Rk1LdE95YTJlYkY4b0hEMCtYOUY4ZGhocEd3?= =?gb2312?B?V25GaDB4UnJqQThIYzJ4NDF5OTg1QURGWE05d2J4NXZPeFVVQzFCamVPUDdZ?= =?gb2312?B?Y1hkd29aTEUzbUVqcURxbmFaWm1lQzZqbDFZbWJUNzIybGJUb25KMWVZR1JE?= =?gb2312?B?VWFFUmdWVkd4S0pYd1RTNlNUTHdJOG82eks3Y2p6YjV2NTBwSzUvZHYxWjdD?= =?gb2312?B?K1Fsa0Y5N1dDUXRtTGRLQXozaFpYeHNPSlE3WXllSTE5Zm94T2hTcU9LMWo4?= =?gb2312?B?d3hNSUN3V2lnclpNWEJFYWtBTGlGUU0vdzNpSWRVenZ5M2JuQ1BGZmxHTTRW?= =?gb2312?B?OEpkMnkzMW5FVmdwQnJyd2ZrcHZUY0tEcEpTRlp5cm40TldCNHk1dUsxSWc1?= =?gb2312?Q?4x+mgjzupIXQUfzdlAfZC2ZP+AjccgNNp99folI?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: c6812ac2-c1ba-41f1-c401-08d8f98eb4c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2021 06:30:58.4948 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: s51H62wq3PicOS9nJNrX+HvY3dyUjRACuCjqouBgM/M/RkxmBWSZdWtgRJCaeA527RdWcdGEEw2k9wZtiDGnEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB1048 X-OriginatorOrg: hpe.com X-Proofpoint-ORIG-GUID: 1fPHsaKuu4TZjSGedl3jaqYl_YV09IGC X-Proofpoint-GUID: 1fPHsaKuu4TZjSGedl3jaqYl_YV09IGC X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-04-07_03:2021-04-06,2021-04-07 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 spamscore=0 mlxscore=0 bulkscore=0 adultscore=0 clxscore=1015 phishscore=0 mlxlogscore=999 lowpriorityscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104060000 definitions=main-2104070046 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 aXQgd2FzIGNyZWF0ZWQgYmVmb3JlLiBJIGp1c3QgcmV2aXNlZCB0aGUgdGl0bGUgdG8gRURLSUkg UmVkZmlzaCBDb25maWcgSGFuZGxlciBQcm90b2NvbCBpbnN0ZWFkIG9mIHVzaW5nIEVGSSBhcyB0 aGUgcHJlZml4Lg0KaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9p ZD0yOTExDQoNCldpbGwgYWRkIEJaIyB0byB0aGUgY29tbWl0IG1lc3NhZ2UuDQpUaGFua3MNCg0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGdhb2xpbWluZyBbbWFpbHRv Omdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbl0NCj4gU2VudDogV2VkbmVzZGF5LCBBcHJpbCA3LCAy MDIxIDE6MjEgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgKEhQ UyBTVy9GVyBUZWNobm9sb2dpc3QpDQo+IDxhYm5lci5jaGFuZ0BocGUuY29tPg0KPiBDYzogV2Fu ZywgTmlja2xlIChIUFMgU1cpIDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiBTdWJqZWN0OiC72Li0 OiBbZWRrMi1kZXZlbF0gW1BBVENIXSBSZWRmaXNoUGtnL1JlZGZpc2hDb25maWdIYW5kbGVyOg0K PiBFREtJSSBSZWRmaXNoQ29uZmlnSGFuZGxlciBQcm90b2NvbA0KPiANCj4gQWJuZXI6DQo+ICAg VGhpcyBpcyBhIG5ldyBmZWF0dXJlLiBDYW4geW91IHN1Ym1pdCBvbmUgQlogZm9yIGl0Pw0KPiAN Cj4gVGhhbmtzDQo+IExpbWluZw0KPiA+IC0tLS0t08q8/tStvP4tLS0tLQ0KPiA+ILeivP7Iyzog ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiC0+rHtIEFibmVyDQo+ IENoYW5nDQo+ID4gt6LLzcqxvOQ6IDIwMjHE6jPUwjI2yNUgMTM6NTUNCj4gPiDK1bz+yMs6IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gs63LzTogTmlja2xlIFdhbmcgPG5pY2tsZS53YW5nQGhw ZS5jb20+DQo+ID4g1vfM4jogW2VkazItZGV2ZWxdIFtQQVRDSF0gUmVkZmlzaFBrZy9SZWRmaXNo Q29uZmlnSGFuZGxlcjogRURLSUkNCj4gPiBSZWRmaXNoQ29uZmlnSGFuZGxlciBQcm90b2NvbA0K PiA+DQo+ID4gVGhlIGRyaXZlciBpcyB1c2VkIHRvIG1hbmFnZSBFREsyIFJlZGZpc2ggQ29uZmln dXJhdGlvbiBIYW5kbGVyDQo+ID4gUHJvdG9jb2wgaW5zdGFsbGVkIGJ5IEVESzIgUmVkZmlzaCBm ZWF0dXJlIGRyaXZlcnMuDQo+ID4gVGhpcyBpcyB0aGUgRURLMiBSZWRmaXNoIGNsaWVudCBkcml2 ZXIgd3JpdHRlbiBiYXNlZCBvbiB0aGUgRURLMg0KPiA+IFJlZGZpc2ggZm91bmRhdGlvbiB0byBp bml0aWFsaXplIEVESzIgUmVkZmlzaCBmZWF0dXJlIGRyaXZlcnMuDQo+ID4NCj4gPiBFREsyIFJl ZGZpc2ggZmVhdHVyZSBkcml2ZXJzIGFyZSB1c2VkIHRvIHByb3Zpc2lvbi9jb25zdW1lL3VwZGF0 ZQ0KPiA+IHRoZSBmaXJtd2FyZSBvd25zIFJlZGZpc2ggcHJvcGVydGllcyBkdXJpbmcgc3lzdGVt IHBvd2VyIG9uDQo+ID4gaW5pdGlhbGl6YXRpb24uDQo+ID4NCj4gPiBSZWRmaXNoQ29uZmlnSGFu ZGxlckNvbW1vbi5jIGhhcyB0aGUgY29tbW9uIGNvZGUgZm9yIHRoZSBkcml2ZXINCj4gPiBpbnN0 YW5jZXMgdXNlZCBpbiBkaWZmZXJlbnQgRURLMiBib290IHBoYXNlcyBvciB1c2VkIGJ5IGRpZmZl cmVudA0KPiA+IGRyaXZlciBtb2RlbHMgaW4gdGhlIGZ1dHVyZSBjb250cmlidXRpb24uDQo+ID4N Cj4gPiBTaWduZWQtb2ZmLWJ5OiBKaWF4aW4gV3UgPGppYXhpbi53dUBpbnRlbC5jb20+DQo+ID4g U2lnbmVkLW9mZi1ieTogU2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IEZhbiBXYW5nIDxmYW4ud2FuZ0BpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1i eTogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGhwZS5jb20+DQo+ID4NCj4gPiBDYzogTmlja2xl IFdhbmcgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4gLS0tDQo+ID4gIFJlZGZpc2hQa2cvUmVk ZmlzaENvbXBvbmVudHMuZHNjLmluYyAgICAgICAgICB8ICAgMyArLQ0KPiA+ICBSZWRmaXNoUGtn L1JlZGZpc2guZmRmLmluYyAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0NCj4gPiAgLi4uL1Jl ZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmluZiAgICAgICAgICAgIHwgIDYwICsrDQo+ID4gIC4u Li9SZWRmaXNoQ29uZmlnSGFuZGxlckNvbW1vbi5oICAgICAgICAgICAgICB8IDEwMSArKysNCj4g PiAgLi4uL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmggICAgICAgICAgICAgIHwgMTU5ICsr KysrDQo+ID4gIC4uLi9SZWRmaXNoQ29uZmlnSGFuZGxlckNvbW1vbi5jICAgICAgICAgICAgICB8 IDI2NSArKysrKysrKw0KPiA+ICAuLi4vUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYyAgICAg ICAgICAgICAgfCA1ODcNCj4gPiArKysrKysrKysrKysrKysrKysNCj4gPiAgNyBmaWxlcyBjaGFu Z2VkLCAxMTc2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZp Z0hhbmRsZXJEcml2ZXIuaW5mDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQ a2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJDb21tb24uaA0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL1JlZGZpc2hDb25maWdIYW5kbGVy L1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ ID4gUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckNv bW1vbi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvUmVkZmlzaENv bmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYw0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL1JlZGZpc2hQa2cvUmVkZmlzaENvbXBvbmVudHMuZHNjLmluYw0KPiA+IGIvUmVkZmlz aFBrZy9SZWRmaXNoQ29tcG9uZW50cy5kc2MuaW5jDQo+ID4gaW5kZXggMDhmMWQzYmMzMi4uZDAx MTZmMDY1YyAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hDb21wb25lbnRzLmRz Yy5pbmMNCj4gPiArKysgYi9SZWRmaXNoUGtnL1JlZGZpc2hDb21wb25lbnRzLmRzYy5pbmMNCj4g PiBAQCAtNiw3ICs2LDcgQEANCj4gPiAgIyBvZiBFREtJSSBSZWRmaXNoIGRyaXZlcnMgYWNjb3Jk aW5nIHRvIHRoZSB2YWx1ZSBvZiBmbGFncyBkZXNjcmliZWQgaW4NCj4gPiAgIyAiUmVkZmlzaERl ZmluZXMuZHNjLmluYyIuDQo+ID4gICMNCj4gPiAtIyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0 dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKyMgKEMpIENvcHly aWdodCAyMDIxIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiA+ICAjDQo+ID4gICMgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiAgIw0KPiA+IEBAIC0xNyw0ICsxNyw1IEBADQo+ID4gICAgUmVkZmlzaFBrZy9S ZWRmaXNoSG9zdEludGVyZmFjZUR4ZS9SZWRmaXNoSG9zdEludGVyZmFjZUR4ZS5pbmYNCj4gPiAg ICBSZWRmaXNoUGtnL1JlZGZpc2hSZXN0RXhEeGUvUmVkZmlzaFJlc3RFeER4ZS5pbmYNCj4gPiAg ICBSZWRmaXNoUGtnL1JlZGZpc2hDcmVkZW50aWFsRHhlL1JlZGZpc2hDcmVkZW50aWFsRHhlLmlu Zg0KPiA+ICsgIFJlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hh bmRsZXJEcml2ZXIuaW5mDQo+ID4gICFlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtn L1JlZGZpc2guZmRmLmluYyBiL1JlZGZpc2hQa2cvUmVkZmlzaC5mZGYuaW5jDQo+ID4gaW5kZXgg YTY0ZmQxMTlhOS4uOTY3MzI0NmIzZiAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZp c2guZmRmLmluYw0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaC5mZGYuaW5jDQo+ID4gQEAg LTUsNyArNSw3IEBADQo+ID4gICMgYnkgdXNpbmcgIiFpbmNsdWRlIFJlZGZpc2hQa2cvUmVkZmlz TGlicy5mZGYuaW5jIiB0byBzcGVjaWZ5IHRoZSBtb2R1bGUNCj4gPiBpbnN0YW5jZXMNCj4gPiAg IyB0byBiZSBidWlsdCBpbiB0aGUgZmlybXdhcmUgdm9sdW1lLg0KPiA+ICAjDQo+ID4gLSMgKEMp IENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQ PEJSPg0KPiA+ICsjIChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlz ZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiAgIw0KPiA+ICAjICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gICMNCj4gPiBAQCAtMTUsNCArMTUsNSBA QA0KPiA+ICAgIElORiBSZWRmaXNoUGtnL1JlZGZpc2hIb3N0SW50ZXJmYWNlRHhlL1JlZGZpc2hI b3N0SW50ZXJmYWNlRHhlLmluZg0KPiA+ICAgIElORiBSZWRmaXNoUGtnL1JlZGZpc2hSZXN0RXhE eGUvUmVkZmlzaFJlc3RFeER4ZS5pbmYNCj4gPiAgICBJTkYgUmVkZmlzaFBrZy9SZWRmaXNoQ3Jl ZGVudGlhbER4ZS9SZWRmaXNoQ3JlZGVudGlhbER4ZS5pbmYNCj4gPiArICBJTkYgUmVkZmlzaFBr Zy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5pbmYNCj4g PiAgIWVuZGlmDQo+ID4gZGlmZiAtLWdpdA0KPiBhL1JlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hh bmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuaW5mDQo+ID4gYi9SZWRmaXNoUGtnL1Jl ZGZpc2hDb25maWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmluZg0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZGVmOTFjNzUzMQ0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL1JlZGZpc2hDb25maWdIYW5kbGVy L1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmluZg0KPiA+IEBAIC0wLDAgKzEsNjAgQEANCj4g PiArIyMgQGZpbGUNCj4gPiArIyAgSU5GIGZpbGUgZm9yIHRoZSBVRUZJIGRyaXZlciBtb2RlbCBS ZWRmaXNoIENvbmZpZ3VyYXRpb24gSGFuZGxlcg0KPiA+ICsjICBEcml2ZXIuDQo+ID4gKyMNCj4g PiArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gKyMgIChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQg RW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArIw0KPiA+ICsjICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsjDQo+ID4gKyMjDQo+ID4g Kw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgID0gMHgw MDAxMDAwYg0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgPSBSZWRmaXNoQ29uZmln SGFuZGxlckRyaXZlcg0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgPQ0KPiA+IDZl ODgxMDAwLTU3NDktMTFlOC05YmYwLThjZGNkNDI2Yzk3Mw0KPiA+ICsgIE1PRFVMRV9UWVBFICAg ICAgICAgICAgICAgPSBVRUZJX0RSSVZFUg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAg ICAgPSAxLjANCj4gPiArICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgID0gUmVkZmlzaENvbmZp Z0hhbmRsZXJEcml2ZXJFbnRyeVBvaW50DQo+ID4gKyAgVU5MT0FEX0lNQUdFICAgICAgICAgICAg ICA9IFJlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyVW5sb2FkDQo+ID4gKw0KPiA+ICsjDQo+ID4g KyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICA9IElBMzIgWDY0IEFSTSBBQVJDSDY0IFJJU0NW NjQNCj4gPiArIw0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cu ZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArICBOZXR3b3Jr UGtnL05ldHdvcmtQa2cuZGVjDQo+ID4gKyAgUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRlYw0KPiA+ ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuaA0K PiA+ICsgIFJlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4gPiArICBSZWRmaXNoQ29uZmln SGFuZGxlckNvbW1vbi5oDQo+ID4gKyAgUmVkZmlzaENvbmZpZ0hhbmRsZXJDb21tb24uYw0KPiA+ ICsNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBCYXNlTWVt b3J5TGliDQo+ID4gKyAgRGVidWdMaWINCj4gPiArICBVZWZpTGliDQo+ID4gKyAgTWVtb3J5QWxs b2NhdGlvbkxpYg0KPiA+ICsgIE5ldExpYg0KPiA+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxp Yg0KPiA+ICsgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQo+ID4gKw0KPiA+ICtbUHJvdG9jb2xzXQ0K PiA+ICsgIGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1aWQgICAgICAgICAjIyBDT05TVU1F Uw0KPiA+ICsgIGdFZmlSZXN0RXhTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZA0KPiA+ICsgIGdF ZmlSZXN0RXhQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ICsg IGdFZGtJSVJlZGZpc2hDcmVkZW50aWFsUHJvdG9jb2xHdWlkICAgICAjIyBDT05TVU1FUw0KPiA+ ICsgIGdFZGtJSVJlZGZpc2hDb25maWdIYW5kbGVyUHJvdG9jb2xHdWlkICAjIyBDT05TVU1FUw0K PiA+ICsNCj4gPiArW0d1aWRzXQ0KPiA+ICsgIGdFZmlFdmVudEV4aXRCb290U2VydmljZXNHdWlk ICAgICAgICAgICAjIyBDT05TVU1FUyAjIyBFdmVudA0KPiA+ICsgIGdFZmlFbmRPZkR4ZUV2ZW50 R3JvdXBHdWlkICAgICAgICAgICAgICAjIyBDT05TVU1FUyAjIyBFdmVudA0KPiA+ICsNCj4gPiAr W0RlcGV4XQ0KPiA+ICsgIFRSVUUNCj4gPiArDQo+ID4gZGlmZiAtLWdpdA0KPiBhL1JlZGZpc2hQ a2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJDb21tb24uaA0KPiA+ IGIvUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckNv bW1vbi5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi41 ZTQ2YzQyMjE5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlz aENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJDb21tb24uaA0KPiA+IEBAIC0wLDAg KzEsMTAxIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIENvbW1vbiBIZWFkZXIgZmlsZSBmb3Ig UmVkZmlzaCBDb25maWd1cmF0aW9uIEhhbmRsZXIgVUVGSSBkcml2ZXINCj4gPiArICBhbmQgRFhF IGRyaXZlci4NCj4gPiArDQo+ID4gKyAgKEMpIENvcHlyaWdodCAyMDIxIEhld2xldHQgUGFja2Fy ZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4g Kw0KPiA+ICsjaWZuZGVmIEVGSV9SRURGSVNIX0NPTkZJR19IQU5ETEVSX0NPTU1PTl9IXw0KPiA+ ICsjZGVmaW5lIEVGSV9SRURGSVNIX0NPTkZJR19IQU5ETEVSX0NPTU1PTl9IXw0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIExpYnJhcmllcw0K PiA+ICsvLw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ ICsjaW5jbHVkZSA8TGlicmFyeS9OZXRMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlEcml2 ZXJFbnRyeVBvaW50Lmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiAr DQo+ID4gKy8vDQo+ID4gKy8vIENvbnN1bWVkIFByb3RvY29scw0KPiA+ICsvLw0KPiA+ICsjaW5j bHVkZSA8UHJvdG9jb2wvRWRrSUlSZWRmaXNoQ3JlZGVudGlhbC5oPg0KPiA+ICsjaW5jbHVkZSA8 UHJvdG9jb2wvRWRrSUlSZWRmaXNoQ29uZmlnSGFuZGxlci5oPg0KPiA+ICsNCj4gPiArLy8NCj4g PiArLy8gRHJpdmVyIFZlcnNpb24NCj4gPiArLy8NCj4gPiArI2RlZmluZSBSRURGSVNIX0NPTkZJ R19WRVJTSU9OICAweDAwMDAwMDAxDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vICBJbnRlcm5h bCBzdHJ1Y3R1cmUgdXNlZCBieSBSZWRmaXNoIENvbmZpZyBEWEUgZHJpdmVyLg0KPiA+ICsvLy8N Cj4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlQzMiAgICAgICAgQ2FsbGVySWQ7ICAv Ly88IENhbGxlciBJRCB1c2VkIHRvIGluZGljYXRlIFJlZGZpc2ggQ29uZmlnDQo+ID4gSGFuZGxl cg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGhhcyBiZWVuIGluaXRpYXRl ZA0KPiA+ICsgIEVGSV9IQU5ETEUgICAgSW1hZ2U7ICAgICAvLy88IEltYWdlIGhhbmRsZSBvZiBS ZWRmaXNoIENvbmZpZyBEcml2ZXINCj4gPiArICBFRklfRVZFTlQgICAgIEV2ZW50OyAgICAgLy8v PCBFdmVudCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBvZg0KPiA+IEVGSV9SRURGSVNIX0NPTkZJR19I QU5ETEVSX1BST1RPQ09MDQo+ID4gKyAgUkVERklTSF9DT05GSUdfU0VSVklDRV9JTkZPUk1BVElP TiBSZWRmaXNoU2VydmljZUluZm87IC8vLw0KPiA+IFJlZGZpc2ggU2VydmljZSBpbmZvcm1hdGlv biBkaXNjb3ZlcmVkDQo+ID4gK30gUkVERklTSF9DT05GSUdfRFJJVkVSX0RBVEE7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBDb21tb24gY29kZSBvZiB1bmxvYWRpbmcgaW1hZ2UgZm9yIGJvdGgg VUVGSS9EWEUgUmVkZmlzaA0KPiBDb25maWd1cmF0aW9uDQo+ID4gZHJpdmVycy4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgICAgICAgSGFuZGxlIHRoYXQgaWRlbnRpZmll cyB0aGUgaW1hZ2UgdG8NCj4gPiBiZSB1bmxvYWRlZC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGltYWdlIGhhcyBiZWVuIHVubG9hZGVkLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArUmVkZmlzaENvbmZpZ0RyaXZlckNvbW1v blVubG9hZCAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgSW1hZ2VIYW5kbGUNCj4gPiArICApOw0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBpcyB0aGUgY29tbW9uIGNvZGUgZm9yIFJlZGZp c2ggY29uZmlndXJhdGlvbiBVRUZJIGFuZCBEWEUgZHJpdmVyDQo+ID4gKyAgaW5pdGlhbGl6YXRp b24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxlICAgICAgIFRoZSBmaXJt d2FyZSBhbGxvY2F0ZWQgaGFuZGxlIGZvcg0KPiA+IHRoZSBVRUZJIGltYWdlLg0KPiA+ICsgIEBw YXJhbVtpbl0gIFN5c3RlbVRhYmxlICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJIFN5c3RlbSBU YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG9w ZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAg ICAgICAgICAgICAgIEFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQuDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK1JlZGZpc2hDb25maWdDb21tb25Jbml0ICgNCj4gPiArICBJTiBF RklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxF ICAqU3lzdGVtVGFibGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBp cyB0aGUgY29tbW9uIGNvZGUgdG8gc3RvcCBFREsyIFJlZGZpc2ggZmVhdHVyZSBkcml2ZXIuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgQWxsIEVESzIgUmVkZmlzaCBmZWF0 dXJlIGRyaXZlcnMgYXJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcGVkLg0K PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJl ZC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArUmVkZmlzaENvbmZpZ0NvbW1vblN0 b3AgKA0KPiA+ICsgIFZPSUQNCj4gPiArKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENhbGxi YWNrIGZ1bmN0aW9uIGV4ZWN1dGVkIHdoZW4gYSBSZWRmaXNoIENvbmZpZyBIYW5kbGVyIFByb3Rv Y29sIGlzDQo+ID4gaW5zdGFsbGVkDQo+ID4gKyAgYnkgRURLMiBSZWRmaXNoIEZlYXR1cmUgRHJp dmVycy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK1JlZGZpc2hDb25maWdIYW5k bGVySW5pdGlhbGl6YXRpb24gKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiAr I2VuZGlmDQo+ID4gZGlmZiAtLWdpdA0KPiBhL1JlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRs ZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuaA0KPiA+IGIvUmVkZmlzaFBrZy9SZWRmaXNo Q29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi41ODIwMmM0MWUyDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlz aENvbmZpZ0hhbmRsZXJEcml2ZXIuaA0KPiA+IEBAIC0wLDAgKzEsMTU5IEBADQo+ID4gKy8qKiBA ZmlsZQ0KPiA+ICsgIEhlYWRlciBmaWxlIG9mIFJlZGZpc2ggQ29uZmlndXJhdGlvbiBIYW5kbGVy IFVFRkkgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICAoQykgQ29weXJpZ2h0 IDIwMjEgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4g Kw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgRUZJX1JFREZJU0hfQ09ORklHX0hB TkRMRVJfRFJJVkVSX0hfDQo+ID4gKyNkZWZpbmUgRUZJX1JFREZJU0hfQ09ORklHX0hBTkRMRVJf RFJJVkVSX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiUmVkZmlzaENvbmZpZ0hhbmRsZXJDb21t b24uaCINCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFVFRkkgRHJpdmVyIE1vZGVsIFByb3RvY29s cw0KPiA+ICsvLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL0RyaXZlckJpbmRpbmcu aD4NCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL1JlZGZpc2hEaXNjb3Zlci5oPg0KPiA+ICsjaW5j bHVkZSA8UHJvdG9jb2wvUmVzdEV4Lmg+DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBQcm90b2Nv bCBpbnN0YW5jZXMNCj4gPiArLy8NCj4gPiArZXh0ZXJuIEVGSV9EUklWRVJfQklORElOR19QUk9U T0NPTCAgZ1JlZGZpc2hDb25maWdEcml2ZXJCaW5kaW5nOw0KPiA+ICsNCj4gPiArZXh0ZXJuIFJF REZJU0hfQ09ORklHX0RSSVZFUl9EQVRBICAgICAgICBnUmVkZmlzaENvbmZpZ0RhdGE7DQo+ID4g K2V4dGVybiBFREtJSV9SRURGSVNIX0NSRURFTlRJQUxfUFJPVE9DT0wgKmdDcmVkZW50aWFsOw0K PiA+ICtleHRlcm4gRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgIGdFbmRPZkR4ZUV2 ZW50Ow0KPiA+ICtleHRlcm4gRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgIGdFeGl0 Qm9vdFNlcnZpY2VFdmVudDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRlc3RzIHRvIHNlZSBp ZiB0aGlzIGRyaXZlciBzdXBwb3J0cyBhIGdpdmVuIGNvbnRyb2xsZXIuIElmIGEgY2hpbGQNCj4g ZGV2aWNlIGlzDQo+ID4gcHJvdmlkZWQsDQo+ID4gKyAgaXQgZnVydGhlciB0ZXN0cyB0byBzZWUg aWYgdGhpcyBkcml2ZXIgc3VwcG9ydHMgY3JlYXRpbmcgYSBoYW5kbGUgZm9yDQo+IHRoZQ0KPiA+ IHNwZWNpZmllZCBjaGlsZCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2hl Y2tzIHRvIHNlZSBpZiB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIHN1cHBvcnRzDQo+IHRo ZQ0KPiA+IGRldmljZSBzcGVjaWZpZWQgYnkNCj4gPiArICBDb250cm9sbGVySGFuZGxlLiBEcml2 ZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGUgZGV2aWNlIHBhdGggYXR0YWNoZWQNCj4gdG8NCj4g PiArICBDb250cm9sbGVySGFuZGxlIGFuZC9vciB0aGUgc2VydmljZXMgZnJvbSB0aGUgYnVzIEkv TyBhYnN0cmFjdGlvbg0KPiA+IGF0dGFjaGVkIHRvDQo+ID4gKyAgQ29udHJvbGxlckhhbmRsZSB0 byBkZXRlcm1pbmUgaWYgdGhlIGRyaXZlciBzdXBwb3J0cyBDb250cm9sbGVySGFuZGxlLg0KPiA+ IFRoaXMgZnVuY3Rpb24NCj4gPiArICBtYXkgYmUgY2FsbGVkIG1hbnkgdGltZXMgZHVyaW5nIHBs YXRmb3JtIGluaXRpYWxpemF0aW9uLiBJbiBvcmRlciB0bw0KPiByZWR1Y2UNCj4gPiBib290IHRp bWVzLCB0aGUgdGVzdHMNCj4gPiArICBwZXJmb3JtZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0IGJl IHZlcnkgc21hbGwsIGFuZCB0YWtlIGFzIGxpdHRsZSB0aW1lDQo+IGFzDQo+ID4gcG9zc2libGUg dG8gZXhlY3V0ZS4gVGhpcw0KPiA+ICsgIGZ1bmN0aW9uIG11c3Qgbm90IGNoYW5nZSB0aGUgc3Rh dGUgb2YgYW55IGhhcmR3YXJlIGRldmljZXMsIGFuZCB0aGlzDQo+ID4gZnVuY3Rpb24gbXVzdCBi ZSBhd2FyZSB0aGF0IHRoZQ0KPiA+ICsgIGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhh bmRsZSBtYXkgYWxyZWFkeSBiZSBtYW5hZ2VkIGJ5IHRoZQ0KPiA+IHNhbWUgZHJpdmVyIG9yIGEN Cj4gPiArICBkaWZmZXJlbnQgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIG11c3QgbWF0Y2ggaXRzIGNh bGxzIHRvIEFsbG9jYXRlUGFnZXMoKQ0KPiB3aXRoDQo+ID4gRnJlZVBhZ2VzKCksDQo+ID4gKyAg QWxsb2NhdGVQb29sKCkgd2l0aCBGcmVlUG9vbCgpLCBhbmQgT3BlblByb3RvY29sKCkgd2l0aA0K PiBDbG9zZVByb3RvY29sKCkuDQo+ID4gKyAgQmVjYXVzZSBDb250cm9sbGVySGFuZGxlIG1heSBo YXZlIGJlZW4gcHJldmlvdXNseSBzdGFydGVkIGJ5IHRoZQ0KPiBzYW1lDQo+ID4gZHJpdmVyLCBp ZiBhIHByb3RvY29sIGlzDQo+ID4gKyAgYWxyZWFkeSBpbiB0aGUgb3BlbmVkIHN0YXRlLCB0aGVu IGl0IG11c3Qgbm90IGJlIGNsb3NlZCB3aXRoDQo+ID4gQ2xvc2VQcm90b2NvbCgpLiBUaGlzIGlz IHJlcXVpcmVkDQo+ID4gKyAgdG8gZ3VhcmFudGVlIHRoZSBzdGF0ZSBvZiBDb250cm9sbGVySGFu ZGxlIGlzIG5vdCBtb2RpZmllZCBieSB0aGlzDQo+ID4gZnVuY3Rpb24uDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gPiBF RklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAg Q29udHJvbGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byB0ZXN0 Lg0KPiA+IFRoaXMgaGFuZGxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wNCj4gPiBpbnRlcmZhY2UgdGhhdCBzdXBwbGllcw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIEkvTyBhYnN0cmFjdGlv biB0byB0aGUgZHJpdmVyLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0RldmljZVBhdGgg IEEgcG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24NCj4gPiBvZiBhIGRldmljZSBwYXRo LiAgVGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRl ciBpcyBpZ25vcmVkIGJ5IGRldmljZQ0KPiA+IGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3Ig YnVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy4gRm9y IGJ1cyBkcml2ZXJzLCBpZiB0aGlzDQo+ID4gcGFyYW1ldGVyIGlzIG5vdCBOVUxMLCB0aGVuDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1cyBkcml2ZXIgbXVz dCBkZXRlcm1pbmUgaWYNCj4gPiB0aGUgYnVzIGNvbnRyb2xsZXIgc3BlY2lmaWVkDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQg dGhlDQo+ID4gY2hpbGQgY29udHJvbGxlciBzcGVjaWZpZWQNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBieSBSZW1haW5pbmdEZXZpY2VQYXRoIGFyZQ0KPiA+IGJvdGgg c3VwcG9ydGVkIGJ5IHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBidXMgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBieQ0KPiA+IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0 aCBpcw0KPiA+IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVk IGJ5DQo+ID4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIGFscmVhZHkNCj4gPiBiZWluZyBt YW5hZ2VkIGJ5IHRoZSBkcml2ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gPiArICBAcmV0dmFsIEVGSV9BQ0NFU1NfREVOSUVE ICAgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBieQ0KPiA+IENvbnRyb2xsZXJIYW5kbGUgYW5k DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNl UGF0aCBpcyBhbHJlYWR5DQo+ID4gYmVpbmcgbWFuYWdlZCBieSBhIGRpZmZlcmVudA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBvciBhbiBhcHBsaWNhdGlv biB0aGF0DQo+ID4gcmVxdWlyZXMgZXhjbHVzaXZlIGFjY2Vzcy4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHkgbm90IGltcGxlbWVudGVkLg0KPiA+ICsg IEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5 DQo+ID4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIG5vdA0KPiA+IHN1cHBvcnRlZCBieSB0 aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArUmVkZmlzaENvbmZpZ0RyaXZlckJpbmRpbmdTdXBwb3J0ZWQgKA0K PiA+ICsgIElOIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgKlRoaXMsDQo+ID4gKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ICsgIElO IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgKlJlbWFpbmluZ0RldmljZVBhdGggT1BUSU9O QUwNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU3RhcnRzIGEgZGV2aWNlIGNv bnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgVGhlIFN0YXJ0KCkg ZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9vdA0KPiBz ZXJ2aWNlDQo+ID4gQ29ubmVjdENvbnRyb2xsZXIoKS4NCj4gPiArICBBcyBhIHJlc3VsdCwgbXVj aCBvZiB0aGUgZXJyb3IgY2hlY2tpbmcgb24gdGhlIHBhcmFtZXRlcnMgdG8gU3RhcnQoKQ0KPiBo YXMNCj4gPiBiZWVuIG1vdmVkIGludG8gdGhpcw0KPiA+ICsgIGNvbW1vbiBib290IHNlcnZpY2Uu IEl0IGlzIGxlZ2FsIHRvIGNhbGwgU3RhcnQoKSBmcm9tIG90aGVyIGxvY2F0aW9ucywNCj4gPiAr ICBidXQgdGhlIGZvbGxvd2luZyBjYWxsaW5nIHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxvd2Vk LCBvciB0aGUgc3lzdGVtDQo+ID4gYmVoYXZpb3Igd2lsbCBub3QgYmUgZGV0ZXJtaW5pc3RpYy4N Cj4gPiArICAxLiBDb250cm9sbGVySGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklfSEFORExFLg0K PiA+ICsgIDIuIElmIFJlbWFpbmluZ0RldmljZVBhdGggaXMgbm90IE5VTEwsIHRoZW4gaXQgbXVz dCBiZSBhIHBvaW50ZXIgdG8gYQ0KPiA+IG5hdHVyYWxseSBhbGlnbmVkDQo+ID4gKyAgICAgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MLg0KPiA+ICsgIDMuIFByaW9yIHRvIGNhbGxpbmcgU3RhcnQo KSwgdGhlIFN1cHBvcnRlZCgpIGZ1bmN0aW9uIGZvciB0aGUgZHJpdmVyDQo+IHNwZWNpZmllZA0K PiA+IGJ5IFRoaXMgbXVzdA0KPiA+ICsgICAgIGhhdmUgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc2Ft ZSBjYWxsaW5nIHBhcmFtZXRlcnMsIGFuZCBTdXBwb3J0ZWQoKQ0KPiA+IG11c3QgaGF2ZSByZXR1 cm5lZCBFRklfU1VDQ0VTUy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAg ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9EUklWRVJfQklORElOR19QUk9UT0NP TCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVySGFuZGxlICAgICBUaGUg aGFuZGxlIG9mIHRoZSBjb250cm9sbGVyIHRvIHN0YXJ0Lg0KPiA+IFRoaXMgaGFuZGxlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBzdXBwb3J0IGEgcHJvdG9j b2wNCj4gPiBpbnRlcmZhY2UgdGhhdCBzdXBwbGllcw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFuIEkvTyBhYnN0cmFjdGlvbiB0byB0aGUgZHJpdmVyLg0KPiA+ICsg IEBwYXJhbVtpbl0gIFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRlciB0byB0aGUgcmVtYWlu aW5nIHBvcnRpb24NCj4gPiBvZiBhIGRldmljZSBwYXRoLiAgVGhpcw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpcyBpZ25vcmVkIGJ5IGRldmljZQ0K PiA+IGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy4gRm9yIGEgYnVzIGRyaXZlciwgaWYgdGhpcw0K PiA+IHBhcmFtZXRlciBpcyBOVUxMLCB0aGVuIGhhbmRsZXMNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIHRoZSBjaGlsZHJlbiBvZiBDb250cm9sbGVyDQo+ ID4gYXJlIGNyZWF0ZWQgYnkgdGhpcyBkcml2ZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IE5VTEwNCj4gPiBhbmQgdGhl IGZpcnN0IERldmljZSBQYXRoIE5vZGUgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBub3QgdGhlIEVuZCBvZiBEZXZpY2UgUGF0aCBOb2RlLA0KPiA+IHRoZW4gb25s eSB0aGUgaGFuZGxlIGZvciB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGlsZCBkZXZpY2Ugc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdA0KPiA+IERldmljZSBQYXRo IE5vZGUgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1haW5p bmdEZXZpY2VQYXRoIGlzIGNyZWF0ZWQNCj4gPiBieSB0aGlzIGRyaXZlci4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmlyc3QgRGV2aWNlIFBhdGggTm9k ZSBvZg0KPiA+IFJlbWFpbmluZ0RldmljZVBhdGggaXMNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGUgRW5kIG9mIERldmljZSBQYXRoIE5vZGUsIG5vDQo+ID4gY2hp bGQgaGFuZGxlIGlzIGNyZWF0ZWQgYnkgdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRyaXZlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgICAgVGhlIGRyaXZlciBpcyBzdGFydGVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0FM UkVBRFlfU1RBUlRFRCAgICAgIFRoZSBkcml2ZXIgd2FzIGFscmVhZHkgc3RhcnRlZC4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtSZWRmaXNoQ29u ZmlnRHJpdmVyQmluZGluZ1N0YXJ0ICgNCj4gPiArICBJTiBFRklfRFJJVkVSX0JJTkRJTkdfUFJP VE9DT0wgICpUaGlzLA0KPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgQ29u dHJvbGxlckhhbmRsZSwNCj4gPiArICBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICpS ZW1haW5pbmdEZXZpY2VQYXRoIE9QVElPTkFMDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFN0b3BzIGEgZGV2aWNlIGNvbnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxlci4NCj4g PiArDQo+ID4gKyAgVGhlIFN0b3AoKSBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbnZva2Vk IGZyb20gdGhlIEVGSSBib290IHNlcnZpY2UNCj4gPiBEaXNjb25uZWN0Q29udHJvbGxlcigpLg0K PiA+ICsgIEFzIGEgcmVzdWx0LCBtdWNoIG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFy YW1ldGVycyB0byBTdG9wKCkgaGFzDQo+ID4gYmVlbiBtb3ZlZA0KPiA+ICsgIGludG8gdGhpcyBj b21tb24gYm9vdCBzZXJ2aWNlLiBJdCBpcyBsZWdhbCB0byBjYWxsIFN0b3AoKSBmcm9tIG90aGVy DQo+IGxvY2F0aW9ucywNCj4gPiArICBidXQgdGhlIGZvbGxvd2luZyBjYWxsaW5nIHJlc3RyaWN0 aW9ucyBtdXN0IGJlIGZvbGxvd2VkLCBvciB0aGUgc3lzdGVtDQo+ID4gYmVoYXZpb3Igd2lsbCBu b3QgYmUgZGV0ZXJtaW5pc3RpYy4NCj4gPiArICAxLiBDb250cm9sbGVySGFuZGxlIG11c3QgYmUg YSB2YWxpZCBFRklfSEFORExFIHRoYXQgd2FzIHVzZWQgb24gYQ0KPiA+IHByZXZpb3VzIGNhbGwg dG8gdGhpcw0KPiA+ICsgICAgIHNhbWUgZHJpdmVyJ3MgU3RhcnQoKSBmdW5jdGlvbi4NCj4gPiAr ICAyLiBUaGUgZmlyc3QgTnVtYmVyT2ZDaGlsZHJlbiBoYW5kbGVzIG9mIENoaWxkSGFuZGxlQnVm ZmVyIG11c3QgYWxsIGJlDQo+IGENCj4gPiB2YWxpZA0KPiA+ICsgICAgIEVGSV9IQU5ETEUuIElu IGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkDQo+ ID4gaW4gdGhpcyBkcml2ZXIncw0KPiA+ICsgICAgIFN0YXJ0KCkgZnVuY3Rpb24sIGFuZCB0aGUg U3RhcnQoKSBmdW5jdGlvbiBtdXN0IGhhdmUgY2FsbGVkDQo+ID4gT3BlblByb3RvY29sKCkgb24N Cj4gPiArICAgICBDb250cm9sbGVySGFuZGxlIHdpdGggYW4gQXR0cmlidXRlIG9mDQo+ID4gRUZJ X09QRU5fUFJPVE9DT0xfQllfQ0hJTERfQ09OVFJPTExFUi4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgVGhpcyAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9EUklWRVJf QklORElOR19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVy SGFuZGxlICBBIGhhbmRsZSB0byB0aGUgZGV2aWNlIGJlaW5nIHN0b3BwZWQuDQo+ID4gVGhlIGhh bmRsZSBtdXN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBh IGJ1cyBzcGVjaWZpYyBJL08gcHJvdG9jb2wNCj4gPiBmb3IgdGhlIGRyaXZlcg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSB0byBzdG9wIHRoZSBkZXZpY2UuDQo+ ID4gKyAgQHBhcmFtW2luXSAgTnVtYmVyT2ZDaGlsZHJlbiAgVGhlIG51bWJlciBvZiBjaGlsZCBk ZXZpY2UgaGFuZGxlcyBpbg0KPiA+IENoaWxkSGFuZGxlQnVmZmVyLg0KPiA+ICsgIEBwYXJhbVtp bl0gIENoaWxkSGFuZGxlQnVmZmVyIEFuIGFycmF5IG9mIGNoaWxkIGhhbmRsZXMgdG8gYmUgZnJl ZWQuDQo+ID4gTWF5IGJlIE5VTEwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBOdW1iZXJPZkNoaWxkcmVuIGlzIDAuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN0b3BwZWQuDQo+ID4gKyAgQHJldHZhbCBF RklfREVWSUNFX0VSUk9SICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RvcHBlZCBkdWUN Cj4gPiB0byBhIGRldmljZSBlcnJvci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VGSUFQSQ0KPiA+ICtSZWRmaXNoQ29uZmlnRHJpdmVyQmluZGluZ1N0b3AgKA0KPiA+ ICsgIElOICBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgKlRoaXMsDQo+ID4gKyAgSU4gIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZDaGlsZHJlbiwNCj4gPiArICBJTiAg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICpDaGlsZEhhbmRsZUJ1ZmZlciBPUFRJT05BTA0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gYS9SZWRmaXNoUGtnL1Jl ZGZpc2hDb25maWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyQ29tbW9uLmMNCj4gPiBiL1Jl ZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJDb21tb24u Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZmY0NjVk OWZmMw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL1JlZGZpc2hDb25m aWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyQ29tbW9uLmMNCj4gPiBAQCAtMCwwICsxLDI2 NSBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBUaGUgY29tbW9uIGNvZGUgb2YgRURLSUkgUmVk ZmlzaCBDb25maWd1cmF0aW9uIEhhbmRsZXIgZHJpdmVyLg0KPiA+ICsNCj4gPiArICAoQykgQ29w eXJpZ2h0IDIwMjEgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+ DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJSZWRmaXNoQ29uZmln SGFuZGxlckNvbW1vbi5oIg0KPiA+ICsNCj4gPiArUkVERklTSF9DT05GSUdfRFJJVkVSX0RBVEEg ICAgICBnUmVkZmlzaENvbmZpZ0RhdGE7IC8vIE9ubHkgb25lDQo+ID4gUmVkZmlzaCBzZXJ2aWNl IHN1cHByb3RlZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gb24NCj4gPiBwbGF0Zm9ybSBmb3IgdGhlIEJJT1MNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZGZpc2gN Cj4gPiBjb25maWd1cmF0aW9uLg0KPiA+ICtFRklfRVZFTlQgIGdFbmRPZkR4ZUV2ZW50ID0gTlVM TDsNCj4gPiArRUZJX0VWRU5UICBnRXhpdEJvb3RTZXJ2aWNlRXZlbnQgPSBOVUxMOw0KPiA+ICtF REtJSV9SRURGSVNIX0NSRURFTlRJQUxfUFJPVE9DT0wgKmdDcmVkZW50aWFsID0gTlVMTDsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIENhbGxiYWNrIGZ1bmN0aW9uIGV4ZWN1dGVkIHdoZW4gdGhl IEVuZE9mRHhlIGV2ZW50IGdyb3VwIGlzIHNpZ25hbGVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dICAgRXZlbnQgICAgRXZlbnQgd2hvc2Ugbm90aWZpY2F0aW9uIGZ1bmN0aW9uIGlzIGJlaW5n DQo+ID4gaW52b2tlZC4NCj4gPiArICBAcGFyYW1bb3V0XSAgQ29udGV4dCAgUG9pbnRlciB0byB0 aGUgQ29udGV4dCBidWZmZXIuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklB UEkNCj4gPiArUmVkZmlzaENvbmZpZ09uRW5kT2ZEeGUgKA0KPiA+ICsgIElOICBFRklfRVZFTlQg IEV2ZW50LA0KPiA+ICsgIE9VVCBWT0lEICAgICAgICpDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ ICsNCj4gPiArICBTdGF0dXMgPSBnQ3JlZGVudGlhbC0+U3RvcFNlcnZpY2UgKGdDcmVkZW50aWFs LA0KPiA+IFNlcnZpY2VTdG9wVHlwZVNlY3VyZUJvb3REaXNhYmxlZCk7DQo+ID4gKyAgaWYgKEVG SV9FUlJPUihTdGF0dXMpICYmIFN0YXR1cyAhPSBFRklfVU5TVVBQT1JURUQpIHsNCj4gPiArICAg IERFQlVHICgoREVCVUdfRVJST1IsICJSZWRmaXNoIGNyZWRlbnRpYWwgcHJvdG9jb2wgZmFpZWQg dG8gc3RvcA0KPiA+IHNlcnZpY2Ugb24gRW5kT2ZEeGU6ICVyIiwgU3RhdHVzKSk7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENsb3NlIGV2ZW50LCBzbyBpdCB3aWxsIG5v dCBiZSBpbnZva2VkIGFnYWluLg0KPiA+ICsgIC8vDQo+ID4gKyAgZ0JTLT5DbG9zZUV2ZW50IChn RW5kT2ZEeGVFdmVudCk7DQo+ID4gKyAgZ0VuZE9mRHhlRXZlbnQgPSBOVUxMOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCB3aGVuIHRo ZSBFeGl0Qm9vdFNlcnZpY2UgZXZlbnQgZ3JvdXAgaXMNCj4gPiBzaWduYWxlZC4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSAgIEV2ZW50ICAgIEV2ZW50IHdob3NlIG5vdGlmaWNhdGlvbiBmdW5j dGlvbiBpcyBiZWluZw0KPiA+IGludm9rZWQuDQo+ID4gKyAgQHBhcmFtW291dF0gIENvbnRleHQg IFBvaW50ZXIgdG8gdGhlIENvbnRleHQgYnVmZmVyDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9J RA0KPiA+ICtFRklBUEkNCj4gPiArUmVkZmlzaENvbmZpZ09uRXhpdEJvb3RTZXJ2aWNlICgNCj4g PiArICBJTiAgRUZJX0VWRU5UICBFdmVudCwNCj4gPiArICBPVVQgVk9JRCAgICAgICAqQ29udGV4 dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0NyZWRlbnRpYWwtPlN0b3BT ZXJ2aWNlIChnQ3JlZGVudGlhbCwNCj4gPiBTZXJ2aWNlU3RvcFR5cGVFeGl0Qm9vdFNlcnZpY2Up Ow0KPiA+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSAmJiBTdGF0dXMgIT0gRUZJX1VOU1VQUE9S VEVEKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiUmVkZmlzaCBjcmVkZW50aWFs IHByb3RvY29sIGZhaWVkIHRvIHN0b3ANCj4gPiBzZXJ2aWNlIG9uIEV4aXRCb290U2VydmljZTog JXIiLCBTdGF0dXMpKTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFVubG9hZHMgYW4gaW1hZ2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxl ICAgICAgIEhhbmRsZSB0aGF0IGlkZW50aWZpZXMgdGhlIGltYWdlIHRvDQo+ID4gYmUgdW5sb2Fk ZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBpbWFn ZSBoYXMgYmVlbiB1bmxvYWRlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK1JlZGZpc2hDb25maWdEcml2ZXJDb21tb25VbmxvYWQgKA0KPiA+ICsgIElOIEVGSV9IQU5E TEUgIEltYWdlSGFuZGxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKGdFbmRPZkR4ZUV2 ZW50ICE9IE5VTEwpIHsNCj4gPiArICAgIGdCUy0+Q2xvc2VFdmVudCAoZ0VuZE9mRHhlRXZlbnQp Ow0KPiA+ICsgICAgZ0VuZE9mRHhlRXZlbnQgPSBOVUxMOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgaWYgKGdFeGl0Qm9vdFNlcnZpY2VFdmVudCAhPSBOVUxMKSB7DQo+ID4gKyAgICBnQlMtPkNs b3NlRXZlbnQgKGdFeGl0Qm9vdFNlcnZpY2VFdmVudCk7DQo+ID4gKyAgICBnRXhpdEJvb3RTZXJ2 aWNlRXZlbnQgPSBOVUxMOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKGdSZWRmaXNoQ29u ZmlnRGF0YS5FdmVudCAhPSBOVUxMKSB7DQo+ID4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKGdSZWRm aXNoQ29uZmlnRGF0YS5FdmVudCk7DQo+ID4gKyAgICBnUmVkZmlzaENvbmZpZ0RhdGEuRXZlbnQg PSBOVUxMOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGlzIHRoZSBjb21tb24gY29kZSBmb3Ig UmVkZmlzaCBjb25maWd1cmF0aW9uIFVFRkkgYW5kIERYRSBkcml2ZXINCj4gPiArICBpbml0aWFs aXphdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgICAgICAgVGhl IGZpcm13YXJlIGFsbG9jYXRlZCBoYW5kbGUgZm9yDQo+ID4gdGhlIFVFRkkgaW1hZ2UuDQo+ID4g KyAgQHBhcmFtW2luXSAgU3lzdGVtVGFibGUgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRkkgU3lz dGVtIFRhYmxlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICAgICAgQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZC4NCj4gPiArKiov DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArUmVkZmlzaENvbmZpZ0NvbW1vbkluaXQgKA0KPiA+ICsg IElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ICsgIElOIEVGSV9TWVNURU1f VEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMg U3RhdHVzOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTG9jYXRlIFJlZGZpc2ggQ3JlZGVudGlhbCBQ cm90b2NvbCB0byBnZXQgY3JlZGVudGlhbCBmb3INCj4gPiArICAvLyBhY2Nlc3NpbmcgdG8gUmVk ZmlzaCBzZXJ2aWNlLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90 b2NvbCAoJmdFZGtJSVJlZGZpc2hDcmVkZW50aWFsUHJvdG9jb2xHdWlkLA0KPiA+IE5VTEwsIChW T0lEICoqKSAmZ0NyZWRlbnRpYWwpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBObyBSZWRmaXNoIENyZWRlbnRpYWwg UHJvdG9jb2wgaXMgaW5zdGFsbGVkDQo+ID4gb24gc3lzdGVtLiIsIF9fRlVOQ1RJT05fXykpOw0K PiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBD cmVhdGUgRW5kT2ZEeGUgRXZlbnQuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBnQlMtPkNy ZWF0ZUV2ZW50RXggKA0KPiA+ICsgICAgICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwN Cj4gPiArICAgICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ICsgICAgICAgICAgICAg ICAgICBSZWRmaXNoQ29uZmlnT25FbmRPZkR4ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVM TCwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdFZmlFbmRPZkR4ZUV2ZW50R3JvdXBHdWlkLA0K PiA+ICsgICAgICAgICAgICAgICAgICAmZ0VuZE9mRHhlRXZlbnQNCj4gPiArICAgICAgICAgICAg ICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWwgdG8gcmVnaXN0ZXIgRW5kIE9mIERYRSBldmVudC4i LA0KPiA+IF9fRlVOQ1RJT05fXykpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9 DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDcmVhdGUgRXhpdCBCb290IFNlcnZpY2UgZXZlbnQuDQo+ ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2ZW50RXggKA0KPiA+ICsgICAg ICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCj4gPiArICAgICAgICAgICAgICAgICAg VFBMX0NBTExCQUNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICBSZWRmaXNoQ29uZmlnT25FeGl0 Qm9vdFNlcnZpY2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICZnRWZpRXZlbnRFeGl0Qm9vdFNlcnZpY2VzR3VpZCwNCj4gPiArICAgICAgICAg ICAgICAgICAgJmdFeGl0Qm9vdFNlcnZpY2VFdmVudA0KPiA+ICsgICAgICAgICAgICAgICAgICAp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIGdCUy0+Q2xvc2VF dmVudCAoZ0VuZE9mRHhlRXZlbnQpOw0KPiA+ICsgICAgZ0VuZE9mRHhlRXZlbnQgPSBOVUxMOw0K PiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIHJlZ2lzdGVyIEV4aXQg Qm9vdCBTZXJ2aWNlIGV2ZW50LiIsDQo+ID4gX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30N Cj4gPiArLyoqDQo+ID4gKyAgVGhpcyBpcyB0aGUgY29tbW9uIGNvZGUgdG8gc3RvcCBFREsyIFJl ZGZpc2ggZmVhdHVyZSBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgQWxsIEVESzIgUmVkZmlzaCBmZWF0dXJlIGRyaXZlcnMgYXJlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBzdG9wcGVkLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgQW4g dW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArUmVkZmlzaENvbmZpZ0NvbW1vblN0b3AgKA0KPiA+ICsgIFZPSUQNCj4gPiArKQ0KPiA+ICt7 DQo+ID4gKyAgRUZJX1NUQVRVUyAgIFN0YXR1czsNCj4gPiArICBFRklfSEFORExFICAqSGFuZGxl QnVmZmVyOw0KPiA+ICsgIFVJTlROICAgICAgICBOdW1iZXJPZkhhbmRsZXM7DQo+ID4gKyAgVUlO VE4gICAgICAgIEluZGV4Ow0KPiA+ICsgIEVES0lJX1JFREZJU0hfQ09ORklHX0hBTkRMRVJfUFJP VE9DT0wgKkNvbmZpZ0hhbmRsZXI7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRl SGFuZGxlQnVmZmVyICgNCj4gPiArICAgICAgICAgICAgICAgICAgQnlQcm90b2NvbCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgJmdFZGtJSVJlZGZpc2hDb25maWdIYW5kbGVyUHJvdG9jb2xHdWlk LA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAm TnVtYmVyT2ZIYW5kbGVzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmSGFuZGxlQnVmZmVyDQo+ ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSAm JiBTdGF0dXMgIT0gRUZJX05PVF9GT1VORCkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ICsgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IE51bWJlck9mSGFuZGxlczsgSW5kZXgrKykgew0KPiA+ICsgICAg U3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IEhhbmRsZUJ1ZmZlcltJbmRleF0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICZnRWRrSUlS ZWRmaXNoQ29uZmlnSGFuZGxlclByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgKFZPSUQqKikgJkNvbmZpZ0hhbmRsZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgICAgU3Rh dHVzID0gQ29uZmlnSGFuZGxlci0+U3RvcCAoQ29uZmlnSGFuZGxlcik7DQo+ID4gKyAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpICYmIFN0YXR1cyAhPSBFRklfVU5TVVBQT1JURUQpIHsNCj4gPiAr ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBGYWlsZWQgdG8gc3RvcCBSZWRmaXNo IGNvbmZpZw0KPiA+IGhhbmRsZXIgJXAuXG4iLCBDb25maWdIYW5kbGVyKSk7DQo+ID4gKyAgICAg IGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ ICt9DQo+ID4gKy8qKg0KPiA+ICsgIENhbGxiYWNrIGZ1bmN0aW9uIGV4ZWN1dGVkIHdoZW4gYSBS ZWRmaXNoIENvbmZpZyBIYW5kbGVyIFByb3RvY29sIGlzDQo+ID4gaW5zdGFsbGVkDQo+ID4gKyAg YnkgRURLMiBSZWRmaXNoIEZlYXR1cmUgRHJpdmVycy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtW T0lEDQo+ID4gK1JlZGZpc2hDb25maWdIYW5kbGVySW5pdGlhbGl6YXRpb24gKA0KPiA+ICsgIFZP SUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpIYW5kbGVCdWZmZXI7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOdW1iZXJPZkhhbmRsZXM7DQo+ID4gKyAgRURLSUlfUkVERklTSF9DT05GSUdf SEFORExFUl9QUk9UT0NPTCAqQ29uZmlnSGFuZGxlcjsNCj4gPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWQ7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRl SGFuZGxlQnVmZmVyICgNCj4gPiArICAgICAgICAgICAgICAgICAgQnlQcm90b2NvbCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgJmdFZGtJSVJlZGZpc2hDb25maWdIYW5kbGVyUHJvdG9jb2xHdWlk LA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAm TnVtYmVyT2ZIYW5kbGVzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmSGFuZGxlQnVmZmVyDQo+ ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChJbmRleCA9 IDA7IEluZGV4IDwgTnVtYmVyT2ZIYW5kbGVzOyBJbmRleCsrKSB7DQo+ID4gKyAgICBTdGF0dXMg PSBnQlMtPkhhbmRsZVByb3RvY29sICgNCj4gPiArICAgICAgICAgICAgICAgICAgICBIYW5kbGVC dWZmZXIgW0luZGV4XSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAmZ0VmaUNhbGxlcklkR3Vp ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJklkDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgKTsNCj4gPiArICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFN0YXR1cyA9IGdC Uy0+SGFuZGxlUHJvdG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBIYW5kbGVCdWZm ZXIgW0luZGV4XSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgJmdFZGtJSVJlZGZpc2hDb25m aWdIYW5kbGVyUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAoVk9JRCoq KSAmQ29uZmlnSGFuZGxlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgICAg QVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICAgIFN0YXR1cyA9IENvbmZpZ0hhbmRs ZXItPkluaXQgKENvbmZpZ0hhbmRsZXIsDQo+ID4gJmdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNo U2VydmljZUluZm8pOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSAmJiBTdGF0dXMg IT0gRUZJX0FMUkVBRFlfU1RBUlRFRCkgew0KPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiRVJST1I6IEZhaWxlZCB0byBpbml0IFJlZGZpc2ggY29uZmlnDQo+ID4gaGFuZGxlciAlcC5c biIsIENvbmZpZ0hhbmRsZXIpKTsNCj4gPiArICAgIH0NCj4gPiArICAgIC8vDQo+ID4gKyAgICAv LyBJbnN0YWxsIGNhbGxlciBJRCB0byBpbmRpY2F0ZSBSZWRmaXNoIENvbmZpZ3VyZSBIYW5kbGVy IGlzDQo+IGluaXRpYWxpemVkLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIFN0YXR1cyA9IGdCUy0+ SW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiArICAgICAgICAgICAgICAgICAgJkhhbmRs ZUJ1ZmZlciBbSW5kZXhdLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaUNhbGxlcklkR3Vp ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgRUZJX05BVElWRV9JTlRFUkZBQ0UsDQo+ID4gKyAg ICAgICAgICAgICAgICAgIChWT0lEICopJmdSZWRmaXNoQ29uZmlnRGF0YS5DYWxsZXJJZA0KPiA+ ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVz KTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9SZWRmaXNo Q29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5jDQo+ID4gYi9SZWRmaXNo UGtnL1JlZGZpc2hDb25maWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjUxMzc4ZGZmNGYN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmlnSGFu ZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5jDQo+ID4gQEAgLTAsMCArMSw1ODcgQEAN Cj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgVGhlIFVFRkkgZHJpdmVyIG1vZGVsIGRyaXZlciB3aGlj aCBpcyByZXNwb25zaWJsZSBmb3IgbG9jYXRpbmcgdGhlDQo+ID4gKyAgUmVkZmlzaCBzZXJ2aWNl IHRocm91Z2ggUmVkZmlzaCBob3N0IGludGVyZmFjZSBhbmQgZXhlY3V0aW5nIEVES0lJDQo+ID4g KyAgUmVkZmlzaCBmZWF0dXJlIGRyaXZlcnMuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsg IChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVu dCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlJlZGZp c2hDb25maWdIYW5kbGVyRHJpdmVyLmgiDQo+ID4gKw0KPiA+ICtFRklfRVZFTlQgIGdFZmlSZWRm aXNoRGlzY292ZXJQcm90b2NvbEV2ZW50ID0gTlVMTDsNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8v IFZhcmlhYmxlcyBmb3IgdXNpbmcgUkZJIFJlZGZpc2ggRGlzY292ZXIgUHJvdG9jb2wNCj4gPiAr Ly8NCj4gPiArVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmdFZmlSZWRmaXNoRGlz Y292ZXJSZWdpc3RyYXRpb247DQo+ID4gK0VGSV9IQU5ETEUNCj4gPiBnRWZpUmVkZmlzaERpc2Nv dmVyQ29udHJvbGxlckhhbmRsZSA9IE5VTEw7DQo+ID4gK0VGSV9SRURGSVNIX0RJU0NPVkVSX1BS T1RPQ09MICAgICpnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wgPQ0KPiA+IE5VTEw7DQo+ID4g K0JPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgIGdSZWRmaXNoRGlzY292ZXJBY3RpdmF0 ZWQgPQ0KPiA+IEZBTFNFOw0KPiA+ICtCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBn UmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkID0NCj4gPiBGQUxTRTsNCj4gPiArLy8NCj4gPiArLy8g TmV0d29yayBpbnRlcmZhY2VzIGRpc2NvdmVyZWQgYnkgRUZJIFJlZGZpc2ggRGlzY292ZXIgUHJv dG9jb2wuDQo+ID4gKy8vDQo+ID4gK1VJTlRODQo+ID4gZ051bWJlck9mTmV0d29ya0ludGVyZmFj ZXM7DQo+ID4gK0VGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFDQo+ID4gKmdO ZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzID0gTlVMTDsNCj4gPiArRUZJX1JFREZJU0hfRElTQ09W RVJFRF9UT0tFTg0KPiA+ICpnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IE5VTEw7DQo+ID4gKw0K PiA+ICsvLy8NCj4gPiArLy8vIERyaXZlciBCaW5kaW5nIFByb3RvY29sIGluc3RhbmNlDQo+ID4g Ky8vLw0KPiA+ICtFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgZ1JlZGZpc2hDb25maWdEcml2 ZXJCaW5kaW5nID0gew0KPiA+ICsgIFJlZGZpc2hDb25maWdEcml2ZXJCaW5kaW5nU3VwcG9ydGVk LA0KPiA+ICsgIFJlZGZpc2hDb25maWdEcml2ZXJCaW5kaW5nU3RhcnQsDQo+ID4gKyAgUmVkZmlz aENvbmZpZ0RyaXZlckJpbmRpbmdTdG9wLA0KPiA+ICsgIFJFREZJU0hfQ09ORklHX1ZFUlNJT04s DQo+ID4gKyAgTlVMTCwNCj4gPiArICBOVUxMDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBTdG9wIGFjcXVpcmluZyBSZWRmaXNoIHNlcnZpY2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArVk9JRA0KPiA+ICtSZWRmaXNoQ29uZmlnU3RvcFJlZGZpc2hEaXNjb3ZlcnkgKA0KPiA+ICsg IFZPSUQNCj4gPiArKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKGdSZWRmaXNoRGlzY292ZXJBY3RpdmF0 ZWQpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBObyBtb3JlIEVGSSBEaXNjb3ZlciBQcm90 b2NvbC4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3Rv Y29sRXZlbnQgIT0gTlVMTCkgew0KPiA+ICsgICAgICBnQlMtPkNsb3NlRXZlbnQgKGdFZmlSZWRm aXNoRGlzY292ZXJQcm90b2NvbEV2ZW50KTsNCj4gPiArICAgIH0NCj4gPiArICAgIC8vDQo+ID4g KyAgICAvLyBTdG9wIFJlZGZpc2ggc2VydmljZSBkaXNjb3ZlcnkuDQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sLT5BYm9ydEFjcXVpcmVSZWRmaXNoU2Vy dmljZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0VmaVJlZGZp c2hEaXNjb3ZlclByb3RvY29sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIGdFZmlSZWRmaXNoRGlzY292ZXJDb250cm9sbGVy SGFuZGxlID0gTlVMTDsNCj4gPiArICAgIGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCA9IE5V TEw7DQo+ID4gKyAgICBnUmVkZmlzaERpc2NvdmVyQWN0aXZhdGVkID0gRkFMU0U7DQo+ID4gKyAg ICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkID0gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCB3aGVuIGEg UmVkZmlzaCBDb25maWcgSGFuZGxlciBQcm90b2NvbCBpcw0KPiA+IGluc3RhbGxlZC4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSAgRXZlbnQgICAgRXZlbnQgd2hvc2Ugbm90aWZpY2F0aW9uIGZ1 bmN0aW9uIGlzIGJlaW5nDQo+ID4gaW52b2tlZC4NCj4gPiArICBAcGFyYW1baW5dICBDb250ZXh0 ICBQb2ludGVyIHRvIHRoZSBSRURGSVNIX0NPTkZJR19EUklWRVJfREFUQQ0KPiA+IGJ1ZmZlci4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtSZWRmaXNoQ29u ZmlnSGFuZGxlckluc3RhbGxlZENhbGxiYWNrICgNCj4gPiArICBJTiBFRklfRVZFTlQgIEV2ZW50 LA0KPiA+ICsgIElOIFZPSUQgICAgICAgKkNvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBpZiAoIWdSZWRmaXNoRGlzY292ZXJBY3RpdmF0ZWQpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAg ICAvLyBObyBSZWRmaXNoIHNlcnZpY2UgaXMgZGlzY292ZXJlZCB5ZXQuDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUmVkZmlzaENvbmZpZ0hh bmRsZXJJbml0aWFsaXphdGlvbiAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg VGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGEgZ2l2ZW4gY29udHJvbGxlci4g SWYgYSBjaGlsZA0KPiBkZXZpY2UgaXMNCj4gPiBwcm92aWRlZCwNCj4gPiArICBpdCBmdXJ0aGVy IHRlc3RzIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBzdXBwb3J0cyBjcmVhdGluZyBhIGhhbmRsZSBm b3INCj4gdGhlDQo+ID4gc3BlY2lmaWVkIGNoaWxkIGRldmljZS4NCj4gPiArDQo+ID4gKyAgVGhp cyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMg c3VwcG9ydHMNCj4gdGhlDQo+ID4gZGV2aWNlIHNwZWNpZmllZCBieQ0KPiA+ICsgIENvbnRyb2xs ZXJIYW5kbGUuIERyaXZlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoZSBkZXZpY2UgcGF0aCBhdHRh Y2hlZA0KPiB0bw0KPiA+ICsgIENvbnRyb2xsZXJIYW5kbGUgYW5kL29yIHRoZSBzZXJ2aWNlcyBm cm9tIHRoZSBidXMgSS9PIGFic3RyYWN0aW9uDQo+ID4gYXR0YWNoZWQgdG8NCj4gPiArICBDb250 cm9sbGVySGFuZGxlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzIENvbnRyb2xs ZXJIYW5kbGUuDQo+ID4gVGhpcyBmdW5jdGlvbg0KPiA+ICsgIG1heSBiZSBjYWxsZWQgbWFueSB0 aW1lcyBkdXJpbmcgcGxhdGZvcm0gaW5pdGlhbGl6YXRpb24uIEluIG9yZGVyIHRvDQo+IHJlZHVj ZQ0KPiA+IGJvb3QgdGltZXMsIHRoZSB0ZXN0cw0KPiA+ICsgIHBlcmZvcm1lZCBieSB0aGlzIGZ1 bmN0aW9uIG11c3QgYmUgdmVyeSBzbWFsbCwgYW5kIHRha2UgYXMgbGl0dGxlIHRpbWUNCj4gYXMN Cj4gPiBwb3NzaWJsZSB0byBleGVjdXRlLiBUaGlzDQo+ID4gKyAgZnVuY3Rpb24gbXVzdCBub3Qg Y2hhbmdlIHRoZSBzdGF0ZSBvZiBhbnkgaGFyZHdhcmUgZGV2aWNlcywgYW5kIHRoaXMNCj4gPiBm dW5jdGlvbiBtdXN0IGJlIGF3YXJlIHRoYXQgdGhlDQo+ID4gKyAgZGV2aWNlIHNwZWNpZmllZCBi eSBDb250cm9sbGVySGFuZGxlIG1heSBhbHJlYWR5IGJlIG1hbmFnZWQgYnkgdGhlDQo+ID4gc2Ft ZSBkcml2ZXIgb3IgYQ0KPiA+ICsgIGRpZmZlcmVudCBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gbXVz dCBtYXRjaCBpdHMgY2FsbHMgdG8gQWxsb2NhdGVQYWdlcygpDQo+IHdpdGgNCj4gPiBGcmVlUGFn ZXMoKSwNCj4gPiArICBBbGxvY2F0ZVBvb2woKSB3aXRoIEZyZWVQb29sKCksIGFuZCBPcGVuUHJv dG9jb2woKSB3aXRoDQo+IENsb3NlUHJvdG9jb2woKS4NCj4gPiArICBCZWNhdXNlIENvbnRyb2xs ZXJIYW5kbGUgbWF5IGhhdmUgYmVlbiBwcmV2aW91c2x5IHN0YXJ0ZWQgYnkgdGhlDQo+IHNhbWUN Cj4gPiBkcml2ZXIsIGlmIGEgcHJvdG9jb2wgaXMNCj4gPiArICBhbHJlYWR5IGluIHRoZSBvcGVu ZWQgc3RhdGUsIHRoZW4gaXQgbXVzdCBub3QgYmUgY2xvc2VkIHdpdGgNCj4gPiBDbG9zZVByb3Rv Y29sKCkuIFRoaXMgaXMgcmVxdWlyZWQNCj4gPiArICB0byBndWFyYW50ZWUgdGhlIHN0YXRlIG9m IENvbnRyb2xsZXJIYW5kbGUgaXMgbm90IG1vZGlmaWVkIGJ5IHRoaXMNCj4gPiBmdW5jdGlvbi4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAgQSBwb2ludGVy IHRvIHRoZQ0KPiA+IEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiAr ICBAcGFyYW1baW5dICBDb250cm9sbGVySGFuZGxlICAgICBUaGUgaGFuZGxlIG9mIHRoZSBjb250 cm9sbGVyIHRvIHRlc3QuDQo+ID4gVGhpcyBoYW5kbGUNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtdXN0IHN1cHBvcnQgYSBwcm90b2NvbA0KPiA+IGludGVyZmFjZSB0 aGF0IHN1cHBsaWVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4g SS9PIGFic3RyYWN0aW9uIHRvIHRoZSBkcml2ZXIuDQo+ID4gKyAgQHBhcmFtW2luXSAgUmVtYWlu aW5nRGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIHRoZSByZW1haW5pbmcgcG9ydGlvbg0KPiA+IG9m IGEgZGV2aWNlIHBhdGguICBUaGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkgZGV2aWNlDQo+ID4gZHJpdmVycywgYW5kIGlz IG9wdGlvbmFsIGZvciBidXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkcml2ZXJzLiBGb3IgYnVzIGRyaXZlcnMsIGlmIHRoaXMNCj4gPiBwYXJhbWV0ZXIgaXMgbm90 IE5VTEwsIHRoZW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUg YnVzIGRyaXZlciBtdXN0IGRldGVybWluZSBpZg0KPiA+IHRoZSBidXMgY29udHJvbGxlciBzcGVj aWZpZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBDb250cm9s bGVySGFuZGxlIGFuZCB0aGUNCj4gPiBjaGlsZCBjb250cm9sbGVyIHNwZWNpZmllZA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IFJlbWFpbmluZ0RldmljZVBhdGgg YXJlDQo+ID4gYm90aCBzdXBwb3J0ZWQgYnkgdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1cyBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+ID4gQ29udHJvbGxl ckhhbmRsZSBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1h aW5pbmdEZXZpY2VQYXRoIGlzDQo+ID4gc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgc3BlY2lmaWVk IGJ5IFRoaXMuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgVGhlIGRl dmljZSBzcGVjaWZpZWQgYnkNCj4gPiBDb250cm9sbGVySGFuZGxlIGFuZA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgbm90DQo+ ID4gc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtSZWRmaXNoQ29uZmlnRHJpdmVyQmlu ZGluZ1N1cHBvcnRlZCAoDQo+ID4gKyAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAq VGhpcywNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJI YW5kbGUsDQo+ID4gKyAgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAqUmVtYWluaW5n RGV2aWNlUGF0aCBPUFRJT05BTA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9SRVNUX0VY X1BST1RPQ09MICAgICAgICAgICAgICpSZXN0RXg7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgIENoaWxkSGFuZGxlOw0KPiA+ICsNCj4gPiArICBDaGlsZEhhbmRsZSA9IE5VTEw7DQo+ ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2hlY2sgaWYgUkVTVCBFWCBpcyByZWFkeS4gVGhp cyBqdXN0IG1ha2VzIHN1cmUNCj4gPiArICAvLyB0aGUgbmV0d29yayBzdGFjayBpcyBicm91Z2h0 IHVwLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gTmV0TGliQ3JlYXRlU2VydmljZUNoaWxk ICgNCj4gPiArICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gKyAgICAgICAgICAg ICBUaGlzLT5JbWFnZUhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICZnRWZpUmVzdEV4U2Vydmlj ZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAmQ2hpbGRIYW5kbGUNCj4g PiArICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8v DQo+ID4gKyAgLy8gVGVzdCBpZiBSRVNUIEVYIHByb3RvY29sIGlzIHJlYWR5Lg0KPiA+ICsgIC8v DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2woDQo+ID4gKyAgICAgICAgICAgICAg ICAgIENoaWxkSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVJlc3RFeFByb3Rv Y29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQqKikgJlJlc3RFeCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgRUZJ X09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgU3RhdHVzID0gRUZJX1VO U1VQUE9SVEVEOw0KPiA+ICsgIH0NCj4gPiArICBOZXRMaWJEZXN0cm95U2VydmljZUNoaWxkICgN Cj4gPiArICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gKyAgICBUaGlzLT5JbWFnZUhhbmRsZSwN Cj4gPiArICAgICZnRWZpUmVzdEV4U2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gKyAg ICBDaGlsZEhhbmRsZQ0KPiA+ICsgICAgKTsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTdGFydHMgYSBkZXZpY2UgY29udHJvbGxlciBvciBh IGJ1cyBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBUaGUgU3RhcnQoKSBmdW5jdGlvbiBpcyBk ZXNpZ25lZCB0byBiZSBpbnZva2VkIGZyb20gdGhlIEVGSSBib290DQo+IHNlcnZpY2UNCj4gPiBD b25uZWN0Q29udHJvbGxlcigpLg0KPiA+ICsgIEFzIGEgcmVzdWx0LCBtdWNoIG9mIHRoZSBlcnJv ciBjaGVja2luZyBvbiB0aGUgcGFyYW1ldGVycyB0byBTdGFydCgpDQo+IGhhcw0KPiA+IGJlZW4g bW92ZWQgaW50byB0aGlzDQo+ID4gKyAgY29tbW9uIGJvb3Qgc2VydmljZS4gSXQgaXMgbGVnYWwg dG8gY2FsbCBTdGFydCgpIGZyb20gb3RoZXIgbG9jYXRpb25zLA0KPiA+ICsgIGJ1dCB0aGUgZm9s bG93aW5nIGNhbGxpbmcgcmVzdHJpY3Rpb25zIG11c3QgYmUgZm9sbG93ZWQsIG9yIHRoZSBzeXN0 ZW0NCj4gPiBiZWhhdmlvciB3aWxsIG5vdCBiZSBkZXRlcm1pbmlzdGljLg0KPiA+ICsgIDEuIENv bnRyb2xsZXJIYW5kbGUgbXVzdCBiZSBhIHZhbGlkIEVGSV9IQU5ETEUuDQo+ID4gKyAgMi4gSWYg UmVtYWluaW5nRGV2aWNlUGF0aCBpcyBub3QgTlVMTCwgdGhlbiBpdCBtdXN0IGJlIGEgcG9pbnRl ciB0byBhDQo+ID4gbmF0dXJhbGx5IGFsaWduZWQNCj4gPiArICAgICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wuDQo+ID4gKyAgMy4gUHJpb3IgdG8gY2FsbGluZyBTdGFydCgpLCB0aGUgU3VwcG9y dGVkKCkgZnVuY3Rpb24gZm9yIHRoZSBkcml2ZXINCj4gc3BlY2lmaWVkDQo+ID4gYnkgVGhpcyBt dXN0DQo+ID4gKyAgICAgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGNhbGxpbmcgcGFy YW1ldGVycywgYW5kIFN1cHBvcnRlZCgpDQo+ID4gbXVzdCBoYXZlIHJldHVybmVkIEVGSV9TVUND RVNTLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlDQo+ID4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MIGluc3RhbmNlLg0K PiA+ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgIFRoZSBoYW5kbGUgb2YgdGhl IGNvbnRyb2xsZXIgdG8gc3RhcnQuDQo+ID4gVGhpcyBoYW5kbGUNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtdXN0IHN1cHBvcnQgYSBwcm90b2NvbA0KPiA+IGludGVy ZmFjZSB0aGF0IHN1cHBsaWVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZSBkcml2ZXIuDQo+ID4gKyAgQHBhcmFtW2luXSAg UmVtYWluaW5nRGV2aWNlUGF0aCAgQSBwb2ludGVyIHRvIHRoZSByZW1haW5pbmcgcG9ydGlvbg0K PiA+IG9mIGEgZGV2aWNlIHBhdGguICBUaGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkgZGV2aWNlDQo+ID4gZHJpdmVycywg YW5kIGlzIG9wdGlvbmFsIGZvciBidXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkcml2ZXJzLiBGb3IgYSBidXMgZHJpdmVyLCBpZiB0aGlzDQo+ID4gcGFyYW1ldGVy IGlzIE5VTEwsIHRoZW4gaGFuZGxlcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZvciBhbGwgdGhlIGNoaWxkcmVuIG9mIENvbnRyb2xsZXINCj4gPiBhcmUgY3JlYXRl ZCBieSB0aGlzIGRyaXZlci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgTlVMTA0KPiA+IGFuZCB0aGUgZmlyc3QgRGV2aWNl IFBhdGggTm9kZSBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v dCB0aGUgRW5kIG9mIERldmljZSBQYXRoIE5vZGUsDQo+ID4gdGhlbiBvbmx5IHRoZSBoYW5kbGUg Zm9yIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkIGRl dmljZSBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0DQo+ID4gRGV2aWNlIFBhdGggTm9kZSBvZg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGgg aXMgY3JlYXRlZA0KPiA+IGJ5IHRoaXMgZHJpdmVyLg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElmIHRoZSBmaXJzdCBEZXZpY2UgUGF0aCBOb2RlIG9mDQo+ID4gUmVt YWluaW5nRGV2aWNlUGF0aCBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBFbmQgb2YgRGV2aWNlIFBhdGggTm9kZSwgbm8NCj4gPiBjaGlsZCBoYW5kbGUgaXMg Y3JlYXRlZCBieSB0aGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZHJpdmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBU aGUgZHJpdmVyIGlzIHN0YXJ0ZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVE ICAgICAgVGhlIGRyaXZlciB3YXMgYWxyZWFkeSBzdGFydGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1JlZGZpc2hDb25maWdEcml2ZXJCaW5k aW5nU3RhcnQgKA0KPiA+ICsgIElOIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgKlRoaXMs DQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxl LA0KPiA+ICsgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgKlJlbWFpbmluZ0Rldmlj ZVBhdGggT1BUSU9OQUwNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBWT0lEICpDb25maWdIYW5k bGVyUmVnaXN0cmF0aW9uOw0KPiA+ICsNCj4gPiArICBpZiAoZ1JlZGZpc2hDb25maWdEYXRhLkV2 ZW50ICE9IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfQUxSRUFEWV9TVEFSVEVEOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgZ1JlZGZpc2hDb25maWdEYXRhLkV2ZW50ID0gRWZpQ3JlYXRl UHJvdG9jb2xOb3RpZnlFdmVudCAoDQo+ID4gKw0KPiA+ICZnRWRrSUlSZWRmaXNoQ29uZmlnSGFu ZGxlclByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU UExfQ0FMTEJBQ0ssDQo+ID4gKw0KPiA+IFJlZGZpc2hDb25maWdIYW5kbGVySW5zdGFsbGVkQ2Fs bGJhY2ssDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikmZ1Jl ZGZpc2hDb25maWdEYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZD b25maWdIYW5kbGVyUmVnaXN0cmF0aW9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFN0b3BzIGEgZGV2aWNlIGNvbnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxl ci4NCj4gPiArDQo+ID4gKyAgVGhlIFN0b3AoKSBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBp bnZva2VkIGZyb20gdGhlIEVGSSBib290IHNlcnZpY2UNCj4gPiBEaXNjb25uZWN0Q29udHJvbGxl cigpLg0KPiA+ICsgIEFzIGEgcmVzdWx0LCBtdWNoIG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0 aGUgcGFyYW1ldGVycyB0byBTdG9wKCkgaGFzDQo+ID4gYmVlbiBtb3ZlZA0KPiA+ICsgIGludG8g dGhpcyBjb21tb24gYm9vdCBzZXJ2aWNlLiBJdCBpcyBsZWdhbCB0byBjYWxsIFN0b3AoKSBmcm9t IG90aGVyDQo+IGxvY2F0aW9ucywNCj4gPiArICBidXQgdGhlIGZvbGxvd2luZyBjYWxsaW5nIHJl c3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxvd2VkLCBvciB0aGUgc3lzdGVtDQo+ID4gYmVoYXZpb3Ig d2lsbCBub3QgYmUgZGV0ZXJtaW5pc3RpYy4NCj4gPiArICAxLiBDb250cm9sbGVySGFuZGxlIG11 c3QgYmUgYSB2YWxpZCBFRklfSEFORExFIHRoYXQgd2FzIHVzZWQgb24gYQ0KPiA+IHByZXZpb3Vz IGNhbGwgdG8gdGhpcw0KPiA+ICsgICAgIHNhbWUgZHJpdmVyJ3MgU3RhcnQoKSBmdW5jdGlvbi4N Cj4gPiArICAyLiBUaGUgZmlyc3QgTnVtYmVyT2ZDaGlsZHJlbiBoYW5kbGVzIG9mIENoaWxkSGFu ZGxlQnVmZmVyIG11c3QgYWxsIGJlDQo+IGENCj4gPiB2YWxpZA0KPiA+ICsgICAgIEVGSV9IQU5E TEUuIEluIGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVh dGVkDQo+ID4gaW4gdGhpcyBkcml2ZXIncw0KPiA+ICsgICAgIFN0YXJ0KCkgZnVuY3Rpb24sIGFu ZCB0aGUgU3RhcnQoKSBmdW5jdGlvbiBtdXN0IGhhdmUgY2FsbGVkDQo+ID4gT3BlblByb3RvY29s KCkgb24NCj4gPiArICAgICBDb250cm9sbGVySGFuZGxlIHdpdGggYW4gQXR0cmlidXRlIG9mDQo+ ID4gRUZJX09QRU5fUFJPVE9DT0xfQllfQ0hJTERfQ09OVFJPTExFUi4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiA+IEVGSV9E UklWRVJfQklORElOR19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBDb250 cm9sbGVySGFuZGxlICBBIGhhbmRsZSB0byB0aGUgZGV2aWNlIGJlaW5nIHN0b3BwZWQuDQo+ID4g VGhlIGhhbmRsZSBtdXN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw cG9ydCBhIGJ1cyBzcGVjaWZpYyBJL08gcHJvdG9jb2wNCj4gPiBmb3IgdGhlIGRyaXZlcg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSB0byBzdG9wIHRoZSBkZXZp Y2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgTnVtYmVyT2ZDaGlsZHJlbiAgVGhlIG51bWJlciBvZiBj aGlsZCBkZXZpY2UgaGFuZGxlcyBpbg0KPiA+IENoaWxkSGFuZGxlQnVmZmVyLg0KPiA+ICsgIEBw YXJhbVtpbl0gIENoaWxkSGFuZGxlQnVmZmVyIEFuIGFycmF5IG9mIGNoaWxkIGhhbmRsZXMgdG8g YmUgZnJlZWQuDQo+ID4gTWF5IGJlIE5VTEwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBOdW1iZXJPZkNoaWxkcmVuIGlzIDAuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN0b3BwZWQuDQo+ID4gKyAgQHJl dHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RvcHBl ZCBkdWUNCj4gPiB0byBhIGRldmljZSBlcnJvci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtSZWRmaXNoQ29uZmlnRHJpdmVyQmluZGluZ1N0b3Ag KA0KPiA+ICsgIElOIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgKlRoaXMsDQo+ID4gKyAg SU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ICsg IElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZDaGlsZHJlbiwNCj4gPiAr ICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICpDaGlsZEhhbmRsZUJ1ZmZlciBPUFRJ T05BTA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPiAr DQo+ID4gKyAgaWYgKENvbnRyb2xsZXJIYW5kbGUgPT0gZ0VmaVJlZGZpc2hEaXNjb3ZlckNvbnRy b2xsZXJIYW5kbGUpIHsNCj4gPiArICAgIFJlZGZpc2hDb25maWdTdG9wUmVkZmlzaERpc2NvdmVy eSAoKTsNCj4gPiArICB9DQo+ID4gKyAgZ0JTLT5DbG9zZVByb3RvY29sICgNCj4gPiArICAgICAg ICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiArICAgICAgICAgJmdFZmlSZWRmaXNoRGlzY292ZXJQ cm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5JbWFnZSwNCj4g PiArICAgICAgICAgZ1JlZGZpc2hDb25maWdEYXRhLkltYWdlDQo+ID4gKyAgICAgICAgICk7DQo+ ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFJlZGZpc2hDb25maWdDb21tb25TdG9wICgpOw0KPiA+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBFRklfREVWSUNFX0VS Uk9SOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKGdSZWRmaXNoQ29uZmlnRGF0YS5FdmVu dCAhPSBOVUxMKSB7DQo+ID4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKGdSZWRmaXNoQ29uZmlnRGF0 YS5FdmVudCk7DQo+ID4gKyAgICBnUmVkZmlzaENvbmZpZ0RhdGEuRXZlbnQgPSBOVUxMOw0KPiA+ ICsgIH0NCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIENhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gUmVkZmlzaCBzZXJ2aWNlIGlzIGRpc2Nv dmVyZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICBFdmVudCAgICBFdmVudCB3aG9zZSBu b3RpZmljYXRpb24gZnVuY3Rpb24gaXMgYmVpbmcNCj4gPiBpbnZva2VkLg0KPiA+ICsgIEBwYXJh bVtvdXRdICBDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBDb250ZXh0IGJ1ZmZlcg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1JlZGZpc2hTZXJ2aWNlRGlzY292 ZXJlZENhbGxiYWNrICgNCj4gPiArICBJTiAgRUZJX0VWRU5UICBFdmVudCwNCj4gPiArICBPVVQg Vk9JRCAgICAgICAqQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9SRURGSVNI X0RJU0NPVkVSRURfVE9LRU4gKlJlZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+ID4gKyAgRUZJX1JF REZJU0hfRElTQ09WRVJFRF9JTlNUQU5DRSAqUmVkZmlzaEluc3RhbmNlOw0KPiA+ICsNCj4gPiAr ICBpZiAoZ1JlZGZpc2hTZXJ2aWNlRGlzY292ZXJlZCkgew0KPiA+ICsgICAgLy8NCj4gPiArICAg IC8vIE9ubHkgc3VwcG9ydCBvbmUgUmVkZmlzaCBzZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiA+ICsg ICAgLy8NCj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFJlZGZpc2hE aXNjb3ZlcmVkVG9rZW4gPSAoRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTg0KPiAqKUNvbnRl eHQ7DQo+ID4gKyAgUmVkZmlzaEluc3RhbmNlID0NCj4gPiBSZWRmaXNoRGlzY292ZXJlZFRva2Vu LT5EaXNjb3Zlckxpc3QuUmVkZmlzaEluc3RhbmNlczsNCj4gPiArICAvLw0KPiA+ICsgIC8vIE9u bHkgcGljayB1cCB0aGUgZmlyc3QgZm91bmQgUmVkZmlzaCBzZXJ2aWNlLg0KPiA+ICsgIC8vDQo+ ID4gKyAgaWYgKFJlZGZpc2hJbnN0YW5jZS0+U3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQo+ID4g KyAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNl UmVzdEV4SGFuZGxlID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlJlZGZpc2hS ZXN0RXhIYW5kbGU7DQo+ID4gKyAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJ bmZvLlJlZGZpc2hTZXJ2aWNlVmVyc2lvbiAgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPklu Zm9ybWF0aW9uLlJlZGZpc2hWZXJzaW9uOw0KPiA+ICsgICAgZ1JlZGZpc2hDb25maWdEYXRhLlJl ZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZUxvY2F0aW9uICAgICA9DQo+ID4gUmVkZmlz aEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Mb2NhdGlvbjsNCj4gPiArICAgIGdSZWRmaXNoQ29uZmln RGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VVdWlkICAgICAgICAgPQ0KPiA+ IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uVXVpZDsNCj4gPiArICAgIGdSZWRmaXNoQ29u ZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VPcyAgICAgICAgICAgPQ0K PiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3M7DQo+ID4gKyAgICBnUmVkZmlzaENv bmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlT3NWZXJzaW9uICAgID0N Cj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLk9zVmVyc2lvbjsNCj4gPiArICAgIGdS ZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQcm9kdWN0 ICAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVjdDsNCj4gPiAr ICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQ cm9kdWN0VmVyICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVjdFZl cjsNCj4gPiArICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlz aFNlcnZpY2VVc2VIdHRwcyAgICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24u VXNlSHR0cHM7DQo+ID4gKyAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkID0gVFJVRTsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSW52b2tlIFJlZGZpc2hDb25maWdI YW5kbGVySW5zdGFsbGVkQ2FsbGJhY2sgdG8gZXhlY3V0ZQ0KPiA+ICsgIC8vIHRoZSBpbml0aWFs aXphdGlvbiBvZiBSZWRmaXNoIENvbmZpZ3VyZSBIYW5kbGVyIGluc3RhbmNlLg0KPiA+ICsgIC8v DQo+ID4gKyAgUmVkZmlzaENvbmZpZ0hhbmRsZXJJbnN0YWxsZWRDYWxsYmFjayAoZ1JlZGZpc2hD b25maWdEYXRhLkV2ZW50LA0KPiA+ICZnUmVkZmlzaENvbmZpZ0RhdGEpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCB3aGVuIHRoZQ0K PiBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTA0KPiA+ICsgIHByb3RvY29sIGludGVyZmFj ZSBpcyBpbnN0YWxsZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICBFdmVudCAgICBFdmVu dCB3aG9zZSBub3RpZmljYXRpb24gZnVuY3Rpb24gaXMgYmVpbmcNCj4gPiBpbnZva2VkLg0KPiA+ ICsgIEBwYXJhbVtvdXRdICBDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBDb250ZXh0IGJ1ZmZlcg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1JlZGZpc2hEaXNj b3ZlclByb3RvY29sSW5zdGFsbGVkICgNCj4gPiArICBJTiAgRUZJX0VWRU5UICBFdmVudCwNCj4g PiArICBPVVQgVk9JRCAgICAgICAqQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVG SV9TVEFUVVMgU3RhdHVzOw0KPiA+ICsgIFVJTlROIEJ1ZmZlclNpemU7DQo+ID4gKyAgRUZJX0hB TkRMRSBIYW5kbGVCdWZmZXI7DQo+ID4gKyAgVUlOVE4gTmV0d29ya0ludGVyZmFjZUluZGV4Ow0K PiA+ICsgIEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFICpUaGlzTmV0d29y a0ludGVyZmFjZTsNCj4gPiArICBFRklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VODQo+ID4gKlRo aXNSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+ICsNCj4gPiArICBERUJVRygoREVCVUdfSU5G TywgIiVhOiBOZXcgbmV0d29yayBpbnRlcmZhY2UgaXMgaW5zdGFsbGVkIG9uDQo+IHN5c3RlbQ0K PiA+IGJ5IEVGSSBSZWRmaXNoIGRpc2NvdmVyIGRyaXZlci5cbiIsIF9fRlVOQ1RJT05fXykpOw0K PiA+ICsNCj4gPiArICBCdWZmZXJTaXplID0gc2l6ZW9mIChFRklfSEFORExFKTsNCj4gPiArICBT dGF0dXMgPSBnQlMtPkxvY2F0ZUhhbmRsZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgIEJ5UmVn aXN0ZXJOb3RpZnksDQo+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAg ICAgICAgICAgIGdFZmlSZWRmaXNoRGlzY292ZXJSZWdpc3RyYXRpb24sDQo+ID4gKyAgICAgICAg ICAgICAgICAgICZCdWZmZXJTaXplLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmSGFuZGxlQnVm ZmVyDQo+ID4gKyAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIERFQlVHKChERUJVR19FUlJPUiwgIiVhOiBDYW4ndCBsb2NhdGUgaGFu ZGxlIHdpdGgNCj4gPiBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCBpbnN0YWxsZWQuXG4i LCBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICB9DQo+ID4gKyAgZ1JlZGZpc2hEaXNjb3ZlckFjdGl2 YXRlZCA9IFRSVUU7DQo+ID4gKyAgaWYgKGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCA9PSBO VUxMKSB7DQo+ID4gKyAgICAgZ0VmaVJlZGZpc2hEaXNjb3ZlckNvbnRyb2xsZXJIYW5kbGUgPSBI YW5kbGVCdWZmZXI7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gRmlyc3QgdGltZSB0byBvcGVu IEVGSV9SRURGSVNIX0RJU0NPVkVSX1BST1RPQ09MLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIFN0 YXR1cyA9IGdCUy0+T3BlblByb3RvY29sKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZ0Vm aVJlZGZpc2hEaXNjb3ZlckNvbnRyb2xsZXJIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAmZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIChWT0lEICoqKSZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuSW1hZ2UsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuSW1hZ2UsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCj4gPiArICAgICAgICAg ICAgICAgICAgICApOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsg ICAgICBnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wgPSBOVUxMOw0KPiA+ICsgICAgICBnUmVk ZmlzaERpc2NvdmVyQWN0aXZhdGVkID0gRkFMU0U7DQo+ID4gKyAgICAgIERFQlVHKChERUJVR19F UlJPUiwgIiVhOiBDYW4ndCBsb2NhdGUNCj4gPiBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NP TC5cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ICsgICAgICByZXR1cm47DQo+ID4gKyAgICB9DQo+ ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2hlY2sgdGhlIG5ldyBmb3VuZCBuZXR3b3Jr IGludGVyZmFjZS4NCj4gPiArICAvLw0KPiA+ICsgIGlmIChnTmV0d29ya0ludGVyZmFjZUluc3Rh bmNlcyAhPSBOVUxMKSB7DQo+ID4gKyAgICBGcmVlUG9vbCAoZ05ldHdvcmtJbnRlcmZhY2VJbnN0 YW5jZXMpOw0KPiA+ICsgIH0NCj4gPiArICBTdGF0dXMgPSBnRWZpUmVkZmlzaERpc2NvdmVyUHJv dG9jb2wtPkdldE5ldHdvcmtJbnRlcmZhY2VMaXN0KA0KPiA+ICsNCj4gPiBnRWZpUmVkZmlzaERp c2NvdmVyUHJvdG9jb2wsDQo+ID4gKw0KPiA+IGdSZWRmaXNoQ29uZmlnRGF0YS5JbWFnZSwNCj4g PiArDQo+ID4gJmdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzLA0KPiA+ICsNCj4gPiAmZ05ldHdv cmtJbnRlcmZhY2VJbnN0YW5jZXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IGdOdW1iZXJP Zk5ldHdvcmtJbnRlcmZhY2VzID09IDApIHsNCj4gPiArICAgIERFQlVHKChERUJVR19FUlJPUiwg IiVhOiBObyBuZXR3b3JrIGludGVyZmFjZXMgZm91bmQgb24gdGhlDQo+ID4gaGFuZGxlLlxuIiwg X19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IEFsbG9jYXRlWmVyb1Bvb2wNCj4gPiAoZ051bWJl ck9mTmV0d29ya0ludGVyZmFjZXMgKiBzaXplb2YNCj4gPiAoRUZJX1JFREZJU0hfRElTQ09WRVJF RF9UT0tFTikpOw0KPiA+ICsgIGlmIChnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9PSBOVUxMKSB7 DQo+ID4gKyAgICBERUJVRygoREVCVUdfRVJST1IsICIlYTogTm90IGVub3VnaCBtZW1vcnkgZm9y DQo+ID4gRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTi5cbiIsIF9fRlVOQ1RJT05fXykpOw0K PiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgVGhpc05ldHdvcmtJbnRl cmZhY2UgPSBnTmV0d29ya0ludGVyZmFjZUluc3RhbmNlczsNCj4gPiArICBUaGlzUmVkZmlzaERp c2NvdmVyZWRUb2tlbiA9IGdSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gTG9vcCB0byBkaXNjb3ZlciBSZWRmaXNoIHNlcnZpY2Ugb24gZWFjaCBuZXR3b3JrIGlu dGVyZmFjZS4NCj4gPiArICAvLw0KPiA+ICsgIGZvciAoTmV0d29ya0ludGVyZmFjZUluZGV4ID0g MDsgTmV0d29ya0ludGVyZmFjZUluZGV4IDwNCj4gPiBnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNl czsgTmV0d29ya0ludGVyZmFjZUluZGV4ICsrKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8g SW5pdGlhbCB0aGlzIFJlZGZpc2ggRGlzY292ZXJlZCBUb2tlbg0KPiA+ICsgICAgLy8NCj4gPiAr ICAgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAg IEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFD SywNCj4gPiArICAgICAgICAgICAgICAgICAgICBSZWRmaXNoU2VydmljZURpc2NvdmVyZWRDYWxs YmFjaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKVRoaXNSZWRmaXNoRGlzY292 ZXJlZFRva2VuLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICZUaGlzUmVkZmlzaERpc2NvdmVy ZWRUb2tlbi0+RXZlbnQNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiJWE6 IEZhaWxlZCB0byBjcmVhdGUgZXZlbnQgZm9yIFJlZGZpc2gNCj4gPiBkaXNjb3ZlcmVkIHRva2Vu LlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICAgIGdvdG8gRXJyb3JSZXR1cm47DQo+ID4g KyAgICB9DQo+ID4gKyAgICBUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbi0+U2lnbmF0dXJlID0N Cj4gPiBSRURGSVNIX0RJU0NPVkVSX1RPS0VOX1NJR05BVFVSRTsNCj4gPiArICAgIFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuLT5EaXNjb3Zlckxpc3QuTnVtYmVyT2ZTZXJ2aWNlRm91bmQgPSAw Ow0KPiA+ICsgICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkRpc2NvdmVyTGlzdC5SZWRm aXNoSW5zdGFuY2VzID0gTlVMTDsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBBY3F1aXJlIGZv ciBSZWRmaXNoIHNlcnZpY2Ugd2hpY2ggaXMgcmVwb3J0ZWQgYnkNCj4gPiArICAgIC8vIFJlZGZp c2ggSG9zdCBJbnRlcmZhY2UuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0gZ0VmaVJl ZGZpc2hEaXNjb3ZlclByb3RvY29sLT5BY3F1aXJlUmVkZmlzaFNlcnZpY2UoDQo+ID4gKw0KPiA+ IGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCwNCj4gPiArDQo+ID4gZ1JlZGZpc2hDb25maWdE YXRhLkltYWdlLA0KPiA+ICsNCj4gPiBUaGlzTmV0d29ya0ludGVyZmFjZSwNCj4gPiArDQo+ID4g RUZJX1JFREZJU0hfRElTQ09WRVJfSE9TVF9JTlRFUkZBQ0UsDQo+ID4gKw0KPiA+IFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ID4gKyAgICBUaGlzTmV0d29ya0ludGVyZmFjZSArKzsNCj4gPiAr ICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuICsrOw0KPiA+ICsgIH0NCj4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRygoREVCVUdfRVJST1IsICIlYTog QWNxdWlyZSBSZWRmaXNoIHNlcnZpY2UgZmFpbC5cbiIsDQo+ID4gX19GVU5DVElPTl9fKSk7DQo+ ID4gKyAgICBnb3RvIEVycm9yUmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm47DQo+ID4g Kw0KPiA+ICtFcnJvclJldHVybjoNCj4gPiArICBpZiAoZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4g IT0gTlVMTCkgew0KPiA+ICsgICAgRnJlZVBvb2woZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pOw0K PiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVW5sb2FkcyBhbiBpbWFn ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgICAgICAgSGFuZGxlIHRo YXQgaWRlbnRpZmllcyB0aGUgaW1hZ2UgdG8NCj4gPiBiZSB1bmxvYWRlZC4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGltYWdlIGhhcyBiZWVuIHVubG9h ZGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4g K1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyVW5sb2FkICgNCj4gPiArICBJTiBFRklfSEFORExF ICBJbWFnZUhhbmRsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9SRURGSVNIX0RJU0NP VkVSRURfVE9LRU4gKlRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+ICsgIFVJTlROIE51 bWJlck9mTmV0d29ya0ludGVyZmFjZXNJbmRleDsNCj4gPiArDQo+ID4gKyAgUmVkZmlzaENvbmZp Z0RyaXZlckNvbW1vblVubG9hZCAoSW1hZ2VIYW5kbGUpOw0KPiA+ICsNCj4gPiArICBSZWRmaXNo Q29uZmlnU3RvcFJlZGZpc2hEaXNjb3ZlcnkgKCk7DQo+ID4gKyAgaWYgKGdSZWRmaXNoRGlzY292 ZXJlZFRva2VuICE9IE5VTEwpIHsNCj4gPiArICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2Vu ID0gZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+ID4gKyAgICBmb3IgKE51bWJlck9mTmV0d29y a0ludGVyZmFjZXNJbmRleCA9IDA7DQo+ID4gTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlc0luZGV4 IDwgZ051bWJlck9mTmV0d29ya0ludGVyZmFjZXM7DQo+ID4gTnVtYmVyT2ZOZXR3b3JrSW50ZXJm YWNlc0luZGV4ICsrKSB7DQo+ID4gKyAgICAgIGlmIChUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tl bi0+RXZlbnQgIT0gTlVMTCkgew0KPiA+ICsgICAgICAgIGdCUy0+Q2xvc2VFdmVudCAoVGhpc1Jl ZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50KTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBG cmVlUG9vbCAoVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pOw0KPiA+ICsgICAgICBUaGlzUmVk ZmlzaERpc2NvdmVyZWRUb2tlbiArKzsNCj4gPiArICAgIH0NCj4gPiArICAgIGdSZWRmaXNoRGlz Y292ZXJlZFRva2VuID0gTlVMTDsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGlzIHRoZSBkZWNsYXJhdGlv biBvZiBhbiBFRkkgaW1hZ2UgZW50cnkgcG9pbnQuIFRoaXMgZW50cnkgcG9pbnQNCj4gaXMNCj4g PiArICB0aGUgc2FtZSBmb3IgVUVGSSBBcHBsaWNhdGlvbnMsIFVFRkkgT1MgTG9hZGVycywgYW5k IFVFRkkgRHJpdmVycw0KPiA+IGluY2x1ZGluZw0KPiA+ICsgIGJvdGggZGV2aWNlIGRyaXZlcnMg YW5kIGJ1cyBkcml2ZXJzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBJbWFnZUhhbmRsZSAg ICAgICBUaGUgZmlybXdhcmUgYWxsb2NhdGVkIGhhbmRsZSBmb3INCj4gPiB0aGUgVUVGSSBpbWFn ZS4NCj4gPiArICBAcGFyYW1baW5dICBTeXN0ZW1UYWJsZSAgICAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSSBTeXN0ZW0gVGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBvcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0 dmFsIE90aGVycyAgICAgICAgICAgICAgICBBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkLg0K PiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUmVkZmlzaENvbmZp Z0hhbmRsZXJEcml2ZXJFbnRyeVBvaW50ICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgIFN0YXR1czsNCj4gPiArDQo+ID4g KyAgWmVyb01lbSAoKFZPSUQgKikmZ1JlZGZpc2hDb25maWdEYXRhLCBzaXplb2YNCj4gPiAoUkVE RklTSF9DT05GSUdfRFJJVkVSX0RBVEEpKTsNCj4gPiArICBnUmVkZmlzaENvbmZpZ0RhdGEuSW1h Z2UgPSBJbWFnZUhhbmRsZTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFJlZ2lzdGVyIGV2ZW50IGZv ciBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCBwcm90b2NvbCBpbnN0YWxsDQo+ID4gKyAg Ly8gbm90aWZpY2F0aW9uLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVF dmVudEV4ICgNCj4gPiArICAgICAgICAgICAgICAgICAgRVZUX05PVElGWV9TSUdOQUwsDQo+ID4g KyAgICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gPiArICAgICAgICAgICAgICAgICAg UmVkZmlzaERpc2NvdmVyUHJvdG9jb2xJbnN0YWxsZWQsDQo+ID4gKyAgICAgICAgICAgICAgICAg IE5VTEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9j b2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3Rv Y29sRXZlbnQNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWwgdG8g Y3JlYXRlIGV2ZW50IGZvciB0aGUgaW5zdGFsbGF0aW9uDQo+ID4gb2YgRUZJX1JFREZJU0hfRElT Q09WRVJfUFJPVE9DT0wuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVz Ow0KPiA+ICsgIH0NCj4gPiArICBTdGF0dXMgPSBnQlMtPlJlZ2lzdGVyUHJvdG9jb2xOb3RpZnkg KA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sR3Vp ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sRXZl bnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUmVnaXN0cmF0 aW9uDQo+ID4gKyAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRmFpbCB0byByZWdpc3Rl ciBldmVudCBmb3IgdGhlIGluc3RhbGxhdGlvbg0KPiA+IG9mIEVGSV9SRURGSVNIX0RJU0NPVkVS X1BST1RPQ09MLiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFJlZGZpc2hDb25maWdDb21tb25Jbml0IChJ bWFnZUhhbmRsZSwgU3lzdGVtVGFibGUpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiArICAgIGdCUy0+Q2xvc2VFdmVudCAoZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29s RXZlbnQpOw0KPiA+ICsgICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sRXZlbnQgPSBOVUxM Ow0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gSW5zdGFsbCBVRUZJIERyaXZlciBNb2RlbCBwcm90b2NvbChzKS4NCj4gPiArICAv Lw0KPiA+ICsgIFN0YXR1cyA9IEVmaUxpYkluc3RhbGxEcml2ZXJCaW5kaW5nICgNCj4gPiArICAg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgU3lzdGVtVGFibGUsDQo+ ID4gKyAgICAgICAgICAgICAmZ1JlZGZpc2hDb25maWdEcml2ZXJCaW5kaW5nLA0KPiA+ICsgICAg ICAgICAgICAgSW1hZ2VIYW5kbGUNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgZ0JTLT5DbG9zZUV2ZW50IChnRW5kT2ZEeGVF dmVudCk7DQo+ID4gKyAgICBnRW5kT2ZEeGVFdmVudCA9IE5VTEw7DQo+ID4gKyAgICBnQlMtPkNs b3NlRXZlbnQgKGdFeGl0Qm9vdFNlcnZpY2VFdmVudCk7DQo+ID4gKyAgICBnRXhpdEJvb3RTZXJ2 aWNlRXZlbnQgPSBOVUxMOw0KPiA+ICsgICAgZ0JTLT5DbG9zZUV2ZW50IChnRWZpUmVkZmlzaERp c2NvdmVyUHJvdG9jb2xFdmVudCk7DQo+ID4gKyAgICBnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9j b2xFdmVudCA9IE5VTEw7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWwg dG8gaW5zdGFsbCBFRkkgQmluZGluZyBQcm90b2NvbCBvZiBFRkkNCj4gPiBSZWRmaXNoIENvbmZp ZyBkcml2ZXIuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICsgIH0NCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+IC0tDQo+ID4g Mi4xNy4xDQo+ID4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCj4gDQo+IA0KDQo=