Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3464624pxk; Mon, 28 Sep 2020 19:32:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwgIm7v2oabqkFZClrOwtWokO8hZ8Uf+kRR+NGiQ3KNcgbS1GfdhfBdRVPIiepx5k/HadFP X-Received: by 2002:a17:906:6a52:: with SMTP id n18mr1681704ejs.58.1601346738658; Mon, 28 Sep 2020 19:32:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601346738; cv=none; d=google.com; s=arc-20160816; b=tNa0LYOU0dKaxs0fW2Pm1rSfhZo486LNLr6A1D8XPesCtGbsOaL85jDO5pSYkG99yS 8DaxYjEmksBurX+RhlXdyhExLg643Icwmp0ip8Ba2no2qOaaYLVDdyCByrm4w998Gvi5 vodIwIg9OrKTG2+s3bV5wVw4tI8s29XyoJUx17sMWdYkY2HJDLQhD6J43RIGN0xLkkPk NIZAeugDVQehGcXfUzOzlvMiaMswquHY8AnqdpSEWgYCFyoaHi4E6NaOhpHbKeY8ef6a Z8s8tyBJ8aq8Si4/VOE2BTIe62IZ5LlO+4Lsgr+0iuC14Uknoh45eM5U7R7OFv4UzCqv /L7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=ptB+wogWeDHQ2MFtsCvTyyfANj2D7QXx6KzJUH772eg=; b=cith1RJmwKM41a2pir8FSJ2XQKfmTt5DY+72zusUtrQNtaRuE5nXLzvMN2FlKxhToF Mb4PxQrMjz9hecvxEKPVpO57Ynu7LzmeAI9BEaZ+hxe2RkVTjE/xODeJ8NcRmsjGoXBS hoOw8XRCDCLuBsz2cdydHo2RyVp4uWM1j7CP211CTIPQJeZkyqiVaTBrzzFenZEdZ/9R JPPS4hr2+FDdzd9TajwMwAWK92Hu1Lr4BfMRNiGNvIM01FlLqTwO4WEKNzOb6iw5m9kC GHkRm19kNMr4YYx5urOc6kBTxWqd1r27ZE9Xx3CQDsVzzRGiXK7zL+SwgPgJxi+cI3Nv eJpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=AGrEI1BF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ch15si1800978ejb.52.2020.09.28.19.31.46; Mon, 28 Sep 2020 19:32:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=AGrEI1BF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727329AbgI2C3x (ORCPT + 99 others); Mon, 28 Sep 2020 22:29:53 -0400 Received: from mailgw02.mediatek.com ([1.203.163.81]:7335 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727301AbgI2C3x (ORCPT ); Mon, 28 Sep 2020 22:29:53 -0400 X-UUID: 8312d77a2500477d83bd1fcd1a7e57cf-20200929 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=ptB+wogWeDHQ2MFtsCvTyyfANj2D7QXx6KzJUH772eg=; b=AGrEI1BFGGJ2gvAm+vJPlEO2hp+I7BGhVqOkanrILR3HDYla3k7LXHPItZYET9w/G6hXl7u/6PfRxx8/VrHA4H8hCJs0PEAk1Rw+zunUDCNABvkpkzcI3OzGaWQCJBKxtoJyBleafyLHD8lnfIt2uOwsRfjibQs1M9Xx9G1DsGg=; X-UUID: 8312d77a2500477d83bd1fcd1a7e57cf-20200929 Received: from mtkcas32.mediatek.inc [(172.27.4.253)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 985553933; Tue, 29 Sep 2020 10:29:22 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS33DR.mediatek.inc (172.27.6.106) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 29 Sep 2020 10:29:21 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 29 Sep 2020 10:29:19 +0800 Message-ID: <1601346406.29336.27.camel@mhfsdcap03> Subject: Re: [PATCH 6/8] usb: cdnsp: Device side header file for CDNSP driver From: Chunfeng Yun To: Pawel Laszczak CC: , , , , , , , , , , , , Date: Tue, 29 Sep 2020 10:26:46 +0800 In-Reply-To: <20200928122741.17884-7-pawell@cadence.com> References: <20200928122741.17884-1-pawell@cadence.com> <20200928122741.17884-7-pawell@cadence.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: D972D61652A8CDFB878A74170A0455F5602929627272650421CED8FDD6DF343F2000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDIwLTA5LTI4IGF0IDE0OjI3ICswMjAwLCBQYXdlbCBMYXN6Y3phayB3cm90ZToN Cj4gUGF0Y2ggZGVmaW5lcyBtYWNyb3MsIHJlZ2lzdGVycyBhbmQgc3RydWN0dXJlcyB1c2VkIGJ5 DQo+IERldmljZSBzaWRlIGRyaXZlci4NCj4gDQo+IEJlY2F1c2UgdGhlIHNpemUgb2YgbWFpbiBw YXRjaCBpcyB2ZXJ5IGJpZywgSeKAmXZlIGRlY2lkZWQgdG8gY3JlYXRlDQo+IHNlcGFyYXRlIHBh dGNoIGZvciBnYWRnZXQuaC4gSXQgc2hvdWxkIHNpbXBsaWZ5IHJldmlld2luZyB0aGUgY29kZS4N Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+ DQo+IC0tLQ0KPiAgZHJpdmVycy91c2IvY2Ruc3AvZ2FkZ2V0LmggfCAxNDU5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDE0NTkgaW5zZXJ0 aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnNwL2dhZGdldC5o DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2Ruc3AvZ2FkZ2V0LmggYi9kcml2ZXJz L3VzYi9jZG5zcC9nYWRnZXQuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwMDAuLmJmYzQxOTZjM2IxMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMv dXNiL2NkbnNwL2dhZGdldC5oDQo+IEBAIC0wLDAgKzEsMTQ1OSBAQA0KPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBDYWRlbmNlIENETlNQIERS RCBEcml2ZXIuDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDIwIENhZGVuY2UuDQo+ICsg Kg0KPiArICogQXV0aG9yOiBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPg0KPiAr ICoNCj4gKyAqIENvZGUgYmFzZWQgb24gTGludXggWEhDSSBkcml2ZXIuDQo+ICsgKiBPcmlnaW46 IENvcHlyaWdodCAoQykgMjAwOCBJbnRlbCBDb3JwLg0KPiArICovDQo+ICsjaWZuZGVmIF9fTElO VVhfQ0ROU1BfR0FER0VUX0gNCj4gKyNkZWZpbmUgX19MSU5VWF9DRE5TUF9HQURHRVRfSA0KPiAr DQo+ICsjaW5jbHVkZSA8bGludXgvaW8tNjQtbm9uYXRvbWljLWxvLWhpLmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvdXNiL2dhZGdldC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0KPiArDQo+ ICsvKiBNYXggbnVtYmVyIHNsb3RzIC0gb25seSAxIGlzIGFsbG93ZWQuICovDQo+ICsjZGVmaW5l IENETlNQX0RFVl9NQVhfU0xPVFMJMQ0KPiArDQo+ICsjZGVmaW5lIENETlNQX0VQMF9TRVRVUF9T SVpFCTUxMg0KPiArDQo+ICsvKjE2IGZvciBpbiBhbmQgMTYgZm9yIG91dC4gKi8NCj4gKyNkZWZp bmUgQ0ROU1BfRU5EUE9JTlRTX05VTQkzMg0KPiArDQo+ICsvKiBCZXN0IEVmZm9ydCBTZXJ2aWNl IExhdGVuY3kuICovDQo+ICsjZGVmaW5lIENETlNQX0RFRkFVTFRfQkVTTAkwDQo+ICsNCj4gKy8q IERldmljZSBDb250cm9sbGVyIGNvbW1hbmQgZGVmYXVsdCB0aW1lb3V0IHZhbHVlIGluIHVzICov DQo+ICsjZGVmaW5lIENETlNQX0NNRF9USU1FT1VUCSgxNSAqIDEwMDApDQo+ICsNCj4gKy8qIFVw IHRvIDE2IG1zIHRvIGhhbHQgYW4gZGV2aWNlIGNvbnRyb2xsZXIgKi8NCj4gKyNkZWZpbmUgQ0RO U1BfTUFYX0hBTFRfVVNFQwkoMTYgKiAxMDAwKQ0KPiArDQo+ICsjZGVmaW5lIENETlNQX0NUWF9T SVpFCTIxMTINCj4gKw0KPiArLyoNCj4gKyAqIENvbnRyb2xsZXIgcmVnaXN0ZXIgaW50ZXJmYWNl Lg0KPiArICovDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2NhcF9yZWdzIC0gQ0RO U1AgUmVnaXN0ZXJzLg0KPiArICogQGhjX2NhcGJhc2U6CUxlbmd0aCBvZiB0aGUgY2FwYWJpbGl0 aWVzIHJlZ2lzdGVyIGFuZCBjb250cm9sbGVyDQo+ICsgKiAgICAgICAgICAgICAgdmVyc2lvbiBu dW1iZXINCj4gKyAqIEBoY3NfcGFyYW1zMTogSENTUEFSQU1TMSAtIFN0cnVjdHVyYWwgUGFyYW1l dGVycyAxDQo+ICsgKiBAaGNzX3BhcmFtczI6IEhDU1BBUkFNUzIgLSBTdHJ1Y3R1cmFsIFBhcmFt ZXRlcnMgMg0KPiArICogQGhjc19wYXJhbXMzOiBIQ1NQQVJBTVMzIC0gU3RydWN0dXJhbCBQYXJh bWV0ZXJzIDMNCj4gKyAqIEBoY2NfcGFyYW1zOiBIQ0NQQVJBTVMgLSBDYXBhYmlsaXR5IFBhcmFt ZXRlcnMNCj4gKyAqIEBkYl9vZmY6IERCT0ZGIC0gRG9vcmJlbGwgYXJyYXkgb2Zmc2V0DQo+ICsg KiBAcnVuX3JlZ3Nfb2ZmOiBSVFNPRkYgLSBSdW50aW1lIHJlZ2lzdGVyIHNwYWNlIG9mZnNldA0K PiArICogQGhjY19wYXJhbXMyOiBIQ0NQQVJBTVMyIENhcGFiaWxpdHkgUGFyYW1ldGVycyAyLA0K PiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfY2FwX3JlZ3Mgew0KPiArCV9fbGUzMiBoY19jYXBiYXNl Ow0KPiArCV9fbGUzMiBoY3NfcGFyYW1zMTsNCj4gKwlfX2xlMzIgaGNzX3BhcmFtczI7DQo+ICsJ X19sZTMyIGhjc19wYXJhbXMzOw0KPiArCV9fbGUzMiBoY2NfcGFyYW1zOw0KPiArCV9fbGUzMiBk Yl9vZmY7DQo+ICsJX19sZTMyIHJ1bl9yZWdzX29mZjsNCj4gKwlfX2xlMzIgaGNjX3BhcmFtczI7 DQo+ICsJLyogUmVzZXJ2ZWQgdXAgdG8gKENBUExFTkdUSCAtIDB4MUMpICovDQo+ICt9Ow0KPiAr DQo+ICsvKiBoY19jYXBiYXNlIGJpdG1hc2tzLiAqLw0KPiArLyogYml0cyA3OjAgLSBob3cgbG9u ZyBpcyB0aGUgQ2FwYWJpbGl0aWVzIHJlZ2lzdGVyLiAqLw0KPiArI2RlZmluZSBIQ19MRU5HVEgo cCkJCSgoKHApID4+IDAwKSAmIEdFTk1BU0soNywgMCkpDQo+ICsvKiBiaXRzIDMxOjE2CSovDQo+ ICsjZGVmaW5lIEhDX1ZFUlNJT04ocCkJCSgoKHApID4+IDE2KSAmIEdFTk1BU0soMTUsIDEpKQ0K PiArDQo+ICsvKiBIQ1NQQVJBTVMxIC0gaGNzX3BhcmFtczEgLSBiaXRtYXNrcyAqLw0KPiArLyog Yml0cyAwOjcsIE1heCBEZXZpY2UgRW5kcG9pbnRzICovDQo+ICsjZGVmaW5lIEhDU19FTkRQT0lO VFNfTUFTSwlHRU5NQVNLKDcsIDApDQo+ICsjZGVmaW5lIEhDU19FTkRQT0lOVFMocCkJKCgocCkg JiBIQ1NfRU5EUE9JTlRTX01BU0spID4+IDApDQo+ICsNCj4gKy8qIEhDQ1BBUkFNUyBvZmZzZXQg ZnJvbSBQQ0kgYmFzZSBhZGRyZXNzICovDQo+ICsjZGVmaW5lIEhDQ19QQVJBTVNfT0ZGU0VUCTB4 MTANCj4gKw0KPiArLyogSENDUEFSQU1TIC0gaGNjX3BhcmFtcyAtIGJpdG1hc2tzICovDQo+ICsv KiB0cnVlOiBkZXZpY2UgY29udHJvbGxlciBjYW4gdXNlIDY0LWJpdCBhZGRyZXNzIHBvaW50ZXJz LiAqLw0KPiArI2RlZmluZSBIQ0NfNjRCSVRfQUREUihwKQkoKHApICYgQklUKDApKQ0KPiArLyog dHJ1ZTogZGV2aWNlIGNvbnRyb2xsZXIgdXNlcyA2NC1ieXRlIERldmljZSBDb250ZXh0IHN0cnVj dHVyZXMuICovDQo+ICsjZGVmaW5lIEhDQ182NEJZVEVfQ09OVEVYVChwKQkoKHApICYgQklUKDIp KQ0KPiArLyogTWF4IHNpemUgZm9yIFByaW1hcnkgU3RyZWFtIEFycmF5cyAtIDJeKG4rMSksIHdo ZXJlIG4gaXMgYml0cyAxMjoxNS4gKi8NCj4gKyNkZWZpbmUgSENDX01BWF9QU0EocCkJCSgoKChw KSA+PiAxMikgJiAweGYpICsgMSkNCj4gKy8qIEV4dGVuZGVkIENhcGFiaWxpdGllcyBwb2ludGVy IGZyb20gUENJIGJhc2UuICovDQo+ICsjZGVmaW5lIEhDQ19FWFRfQ0FQUyhwKQkJKCgocCkgJiBH RU5NQVNLKDMxLCAxNikpID4+IDE2KQ0KPiArDQo+ICsjZGVmaW5lIENUWF9TSVpFKF9oY2MpCQko SENDXzY0QllURV9DT05URVhUKF9oY2MpID8gNjQgOiAzMikNCj4gKw0KPiArLyogZGJfb2ZmIGJp dG1hc2sgLSBiaXRzIDA6MSByZXNlcnZlZC4gKi8NCj4gKyNkZWZpbmUgREJPRkZfTUFTSwlHRU5N QVNLKDMxLCAyKQ0KPiArDQo+ICsvKiBydW5fcmVnc19vZmYgYml0bWFzayAtIGJpdHMgMDo0IHJl c2VydmVkLiAqLw0KPiArI2RlZmluZSBSVFNPRkZfTUFTSwlHRU5NQVNLKDMxLCA1KQ0KPiArDQo+ ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9vcF9yZWdzIC0gRGV2aWNlIENvbnRyb2xsZXIgT3Bl cmF0aW9uYWwgUmVnaXN0ZXJzLg0KPiArICogQGNvbW1hbmQ6IFVTQkNNRCAtIENvbnRyb2xsZXIg Y29tbWFuZCByZWdpc3Rlci4NCj4gKyAqIEBzdGF0dXM6IFVTQlNUUyAtIENvbnRyb2xsZXIgc3Rh dHVzIHJlZ2lzdGVyLg0KPiArICogQHBhZ2Vfc2l6ZTogVGhpcyBpbmRpY2F0ZXMgdGhlIHBhZ2Ug c2l6ZSB0aGF0IHRoZSBkZXZpY2UgY29udHJvbGxlciBzdXBwb3J0cy4NCj4gKyAqICAgICAgICAg ICAgIElmIGJpdCBuIGlzIHNldCwgdGhlIGNvbnRyb2xsZXIgc3VwcG9ydHMgYSBwYWdlIHNpemUg b2YgMl4obisxMiksDQo+ICsgKiAgICAgICAgICAgICB1cCB0byBhIDEyOE1CIHBhZ2Ugc2l6ZS4g NEsgaXMgdGhlIG1pbmltdW0gcGFnZSBzaXplLg0KPiArICogQGRuY3RybDogRE5DVFJMIC0gRGV2 aWNlIG5vdGlmaWNhdGlvbiBjb250cm9sIHJlZ2lzdGVyLg0KPiArICogQGNtZF9yaW5nOiBDUlAg LSA2NC1iaXQgQ29tbWFuZCBSaW5nIFBvaW50ZXIuDQo+ICsgKiBAZGNiYWFfcHRyOiBEQ0JBQVAg LSA2NC1iaXQgRGV2aWNlIENvbnRleHQgQmFzZSBBZGRyZXNzIEFycmF5IFBvaW50ZXIuDQo+ICsg KiBAY29uZmlnX3JlZzoJQ09ORklHIC0gQ29uZmlndXJlIFJlZ2lzdGVyDQpOaXQ6IHVzZSBzcGFj ZSBhcyBvdGhlcnMsIGJ1dCBub3QgdGFiPw0KPiArICogQHBvcnRfcmVnX2Jhc2U6IFBPUlRTQ24g LSBiYXNlIGFkZHJlc3MgZm9yIFBvcnQgU3RhdHVzIGFuZCBDb250cm9sDQo+ICsgKiAgICAgICAg ICAgICAgICAgRWFjaCBwb3J0IGhhcyBhIFBvcnQgU3RhdHVzIGFuZCBDb250cm9sIHJlZ2lzdGVy LA0KPiArICogICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgUG9ydCBQb3dlciBNYW5hZ2Vt ZW50IFN0YXR1cyBhbmQgQ29udHJvbA0KPiArICogICAgICAgICAgICAgICAgIHJlZ2lzdGVyLCBh IFBvcnQgTGluayBJbmZvIHJlZ2lzdGVyLCBhbmQgYSByZXNlcnZlZA0KPiArICogICAgICAgICAg ICAgICAgIHJlZ2lzdGVyLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3Bfb3BfcmVncyB7DQo+ICsJ X19sZTMyIGNvbW1hbmQ7DQo+ICsJX19sZTMyIHN0YXR1czsNCj4gKwlfX2xlMzIgcGFnZV9zaXpl Ow0KPiArCV9fbGUzMiByZXNlcnZlZDE7DQo+ICsJX19sZTMyIHJlc2VydmVkMjsNCj4gKwlfX2xl MzIgZG5jdHJsOw0KPiArCV9fbGU2NCBjbWRfcmluZzsNCj4gKwkvKiByc3ZkOiBvZmZzZXQgMHgy MC0yRi4gKi8NCj4gKwlfX2xlMzIgcmVzZXJ2ZWQzWzRdOw0KPiArCV9fbGU2NCBkY2JhYV9wdHI7 DQo+ICsJX19sZTMyIGNvbmZpZ19yZWc7DQo+ICsJLyogcnN2ZDogb2Zmc2V0IDB4M0MtM0ZGLiAq Lw0KPiArCV9fbGUzMiByZXNlcnZlZDRbMjQxXTsNCj4gKwkvKiBwb3J0IDEgcmVnaXN0ZXJzLCB3 aGljaCBzZXJ2ZSBhcyBhIGJhc2UgYWRkcmVzcyBmb3Igb3RoZXIgcG9ydHMuICovDQo+ICsJX19s ZTMyIHBvcnRfcmVnX2Jhc2U7DQo+ICt9Ow0KPiArDQo+ICsvKiBOdW1iZXIgb2YgcmVnaXN0ZXJz IHBlciBwb3J0LiAqLw0KPiArI2RlZmluZSBOVU1fUE9SVF9SRUdTCTQNCj4gKw0KPiArLyoqDQo+ ICsgKiBzdHJ1Y3QgY2Ruc3BfcG9ydF9yZWdzIC0gUG9ydCBSZWdpc3RlcnMuDQo+ICsgKiBAcG9y dHNjOiBQT1JUU0MgLSBQb3J0IFN0YXR1cyBhbmQgQ29udHJvbCBSZWdpc3Rlci4NCj4gKyAqIEBw b3J0cG1zYzogUE9SVFBNU0MgLSBQb3J0IFBvd2VyIE1hbmFnZW1lbnRzIFN0YXR1cyBhbmQgQ29u dHJvbCBSZWdpc3Rlci4NCj4gKyAqIEBwb3J0bGk6IFBPUlRMSSAtIFBvcnQgTGluayBJbmZvIHJl Z2lzdGVyLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfcG9ydF9yZWdzIHsNCj4gKwlfX2xlMzIg cG9ydHNjOw0KPiArCV9fbGUzMiBwb3J0cG1zYzsNCj4gKwlfX2xlMzIgcG9ydGxpOw0KPiArCV9f bGUzMiByZXNlcnZlZDsNCj4gK307DQo+ICsNCj4gKy8qDQo+ICsgKiBUaGVzZSBiaXRzIGFyZSBS ZWFkIE9ubHkgKFJPKSBhbmQgc2hvdWxkIGJlIHNhdmVkIGFuZCB3cml0dGVuIHRvIHRoZQ0KPiAr ICogcmVnaXN0ZXJzOiAwIChjb25uZWN0IHN0YXR1cykgYW5kICAxMDoxMyAocG9ydCBzcGVlZCku DQo+ICsgKiBUaGVzZSBiaXRzIGFyZSBhbHNvIHN0aWNreSAtIG1lYW5pbmcgdGhleSdyZSBpbiB0 aGUgQVVYIHdlbGwgYW5kIHRoZXkgYXJlbid0DQo+ICsgKiBjaGFuZ2VkIGJ5IGEgaG90IGFuZCB3 YXJtLg0KPiArICovDQo+ICsjZGVmaW5lIENETlNQX1BPUlRfUk8JKFBPUlRfQ09OTkVDVCB8IERF Vl9TUEVFRF9NQVNLKQ0KPiArDQo+ICsvKg0KPiArICogVGhlc2UgYml0cyBhcmUgUlc7IHdyaXRp bmcgYSAwIGNsZWFycyB0aGUgYml0LCB3cml0aW5nIGEgMSBzZXRzIHRoZSBiaXQ6DQo+ICsgKiBi aXRzIDU6OCAobGluayBzdGF0ZSksIDI1OjI2ICAoIndha2Ugb24iIGVuYWJsZSBzdGF0ZSkNCj4g KyAqLw0KPiArI2RlZmluZSBDRE5TUF9QT1JUX1JXUwkoUE9SVF9QTFNfTUFTSyB8IFBPUlRfV0tD T05OX0UgfCBQT1JUX1dLRElTQ19FKQ0KPiArDQo+ICsvKg0KPiArICogVGhlc2UgYml0cyBhcmUg Ulc7IHdyaXRpbmcgYSAxIGNsZWFycyB0aGUgYml0LCB3cml0aW5nIGEgMCBoYXMgbm8gZWZmZWN0 Og0KPiArICogYml0cyAxIChwb3J0IGVuYWJsZS9kaXNhYmxlKSwgMTcgICggY29ubmVjdCBjaGFu Z2VkKSwNCj4gKyAqIDIxIChwb3J0IHJlc2V0IGNoYW5nZWQpICwgMjIgKFBvcnQgTGluayBTdGF0 ZSBDaGFuZ2UpLA0KPiArICovDQo+ICsjZGVmaW5lIENETlNQX1BPUlRfUlcxQ1MgKFBPUlRfUEVE IHwgUE9SVF9DU0MgfCBQT1JUX1JDIHwgUE9SVF9QTEMpDQo+ICsNCj4gKy8qIFVTQkNNRCAtIFVT QiBjb21tYW5kIC0gYml0bWFza3MuICovDQo+ICsvKiBSdW4vU3RvcCwgY29udHJvbGxlciBleGVj dXRpb24gLSBkbyBub3Qgd3JpdGUgdW5sZXNzIGNvbnRyb2xsZXIgaXMgaGFsdGVkLiovDQo+ICsj ZGVmaW5lIENNRF9SX1MJCUJJVCgwKQ0KPiArLyoNCj4gKyAqIFJlc2V0IGRldmljZSBjb250cm9s bGVyIC0gcmVzZXRzIGludGVybmFsIGNvbnRyb2xsZXIgc3RhdGUgbWFjaGluZSBhbmQgYWxsDQo+ ICsgKiByZWdpc3RlcnMgKGV4Y2VwdCBQQ0kgY29uZmlnIHJlZ3MpLg0KPiArICovDQo+ICsjZGVm aW5lIENNRF9SRVNFVAlCSVQoMSkNCj4gKy8qIEV2ZW50IEludGVycnVwdCBFbmFibGUgLSBhICcx JyBhbGxvd3MgaW50ZXJydXB0cyBmcm9tIHRoZSBjb250cm9sbGVyLiAqLw0KPiArI2RlZmluZSBD TURfSU5URQlCSVQoMikNCj4gKy8qDQo+ICsgKiBEZXZpY2UgU3lzdGVtIEVycm9yIEludGVycnVw dCBFbmFibGUgLSBnZXQgb3V0LW9mLWJhbmQgc2lnbmFsIGZvcg0KPiArICogY29udHJvbGxlciBl cnJvcnMuDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ01EX0RTRUlFCUJJVCgzKQ0KPiArLyogZGV2aWNl IGNvbnRyb2xsZXIgc2F2ZS9yZXN0b3JlIHN0YXRlLiAqLw0KPiArI2RlZmluZSBDTURfQ1NTCQlC SVQoOCkNCj4gKyNkZWZpbmUgQ01EX0NSUwkJQklUKDkpDQo+ICsvKg0KPiArICogRW5hYmxlIFdy YXAgRXZlbnQgLSAnMScgbWVhbnMgZGV2aWNlIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuIGV2ZW50 DQo+ICsgKiB3aGVuIE1GSU5ERVggd3JhcHMuDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ01EX0VXRQkJ QklUKDEwKQ0KPiArLypiaXQgMTMgQ0VNIEVuYWJsZSAoQ01FKSAqLw0KPiArI2RlZmluZSBDTURf REVWRU4JQklUKDE3KQ0KPiArLyogYml0cyAxNjozMSBhcmUgcmVzZXJ2ZWQgKGFuZCBzaG91bGQg YmUgcHJlc2VydmVkIG9uIHdyaXRlcykuICovDQo+ICsNCj4gKy8qIENvbW1hbmQgcmVnaXN0ZXIg dmFsdWVzIHRvIGRpc2FibGUgaW50ZXJydXB0cy4gKi8NCj4gKyNkZWZpbmUgQ0ROU1BfSVJRUwko Q01EX0lOVEUgfCBDTURfRFNFSUUgfCBDTURfRVdFKQ0KPiArDQo+ICsvKiBVU0JTVFMgLSBVU0Ig c3RhdHVzIC0gYml0bWFza3MgKi8NCj4gKy8qIGNvbnRyb2xsZXIgbm90IHJ1bm5pbmcgLSBzZXQg dG8gMSB3aGVuIHJ1bi9zdG9wIGJpdCBpcyBjbGVhcmVkLiAqLw0KPiArI2RlZmluZSBTVFNfSEFM VAlCSVQoMCkNCj4gKy8qDQo+ICsgKiBzZXJpb3VzIGVycm9yLCBlLmcuIFBDSSBwYXJpdHkgZXJy b3IuIFRoZSBjb250cm9sbGVyIHdpbGwgY2xlYXINCj4gKyAqIHRoZSBydW4vc3RvcCBiaXQuDQo+ ICsgKi8NCj4gKyNkZWZpbmUgU1RTX0ZBVEFMCUJJVCgyKQ0KPiArLyogZXZlbnQgaW50ZXJydXB0 IC0gY2xlYXIgdGhpcyBwcmlvciB0byBjbGVhcmluZyBhbnkgSVAgZmxhZ3MgaW4gSVIgc2V0Liov DQo+ICsjZGVmaW5lIFNUU19FSU5UCUJJVCgzKQ0KPiArLyogcG9ydCBjaGFuZ2UgZGV0ZWN0ICov DQo+ICsjZGVmaW5lIFNUU19QQ0QJCUJJVCg0KQ0KPiArLyogc2F2ZSBzdGF0ZSBzdGF0dXMgLSAn MScgbWVhbnMgZGV2aWNlIGNvbnRyb2xsZXIgaXMgc2F2aW5nIHN0YXRlLiAqLw0KPiArI2RlZmlu ZSBTVFNfU1NTCQlCSVQoOCkNCj4gKy8qIHJlc3RvcmUgc3RhdGUgc3RhdHVzIC0gJzEnIG1lYW5z IGNvbnRyb2xsZXJzIGlzIHJlc3RvcmluZyBzdGF0ZS4gKi8NCj4gKyNkZWZpbmUgU1RTX1JTUwkJ QklUKDkpDQo+ICsvKiB0cnVlOiBzYXZlIG9yIHJlc3RvcmUgZXJyb3IgKi8NCj4gKyNkZWZpbmUg U1RTX1NSRQkJQklUKDEwKQ0KPiArLyogdHJ1ZTogZGV2aWNlIE5vdCBSZWFkeSB0byBhY2NlcHQg ZG9vcmJlbGwgb3Igb3AgcmVnIHdyaXRlcyBhZnRlciByZXNldC4gKi8NCj4gKyNkZWZpbmUgU1RT X0NOUgkJQklUKDExKQ0KPiArLyogdHJ1ZTogaW50ZXJuYWwgRGV2aWNlIENvbnRyb2xsZXIgRXJy b3IuKi8NCj4gKyNkZWZpbmUgU1RTX0hDRQkJQklUKDEyKQ0KPiArDQo+ICsvKiBDUkNSIC0gQ29t bWFuZCBSaW5nIENvbnRyb2wgUmVnaXN0ZXIgLSBjbWRfcmluZyBiaXRtYXNrcy4gKi8NCj4gKy8q IGJpdCAwIGlzIHRoZSBjb21tYW5kIHJpbmcgY3ljbGUgc3RhdGUuICovDQo+ICsjZGVmaW5lIENN RF9SSU5HX0NTCQlCSVQoMCkNCj4gKy8qIHN0b3AgcmluZyBpbW1lZGlhdGVseSAtIGFib3J0IHRo ZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvbW1hbmQuICovDQo+ICsjZGVmaW5lIENNRF9SSU5HX0FC T1JUCQlCSVQoMikNCj4gKy8qDQo+ICsgKiBDb21tYW5kIFJpbmcgQnVzeS4NCj4gKyAqIFNldCB3 aGVuIERvb3JiZWxsIHJlZ2lzdGVyIGlzIHdyaXR0ZW4gd2l0aCBEQiBmb3IgY29tbWFuZCBhbmQg Y2xlYXJlZCB3aGVuDQo+ICsgKiB0aGUgY29udHJvbGxlciByZWFjaGVkIGVuZCBvZiBDUi4NCj4g KyAqLw0KPiArI2RlZmluZSBDTURfUklOR19CVVNZKHApCSgocCkgJiBCSVQoNCkpDQo+ICsvKiB0 cnVlOiBjb21tYW5kIHJpbmcgaXMgcnVubmluZyAqLw0KPiArI2RlZmluZSBDTURfUklOR19SVU5O SU5HCUJJVCgzKQ0KPiArLyogQ29tbWFuZCBSaW5nIHBvaW50ZXIgLSBiaXQgbWFzayBmb3IgdGhl IGxvd2VyIDMyIGJpdHMuICovDQo+ICsjZGVmaW5lIENNRF9SSU5HX1JTVkRfQklUUwlHRU5NQVNL KDUsIDApDQo+ICsNCj4gKy8qIENPTkZJRyAtIENvbmZpZ3VyZSBSZWdpc3RlciAtIGNvbmZpZ19y ZWcgYml0bWFza3MuICovDQo+ICsvKiBiaXRzIDA6NyAtIG1heGltdW0gbnVtYmVyIG9mIGRldmlj ZSBzbG90cyBlbmFibGVkLiAqLw0KPiArI2RlZmluZSBNQVhfREVWUwkJR0VOTUFTSyg3LCAwKQ0K PiArLyogYml0IDg6IFUzIEVudHJ5IEVuYWJsZWQsIGFzc2VydCBQTEMgd2hlbiBjb250cm9sbGVy IGVudGVycyBVMy4gKi8NCj4gKyNkZWZpbmUgQ09ORklHX1UzRQkJQklUKDgpDQo+ICsNCj4gKy8q IFBPUlRTQyAtIFBvcnQgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyIC0gcG9ydF9yZWdfYmFz ZSBiaXRtYXNrcyAqLw0KPiArLyogdHJ1ZTogZGV2aWNlIGNvbm5lY3RlZC4gKi8NCj4gKyNkZWZp bmUgUE9SVF9DT05ORUNUCQlCSVQoMCkNCj4gKy8qIHRydWU6IHBvcnQgZW5hYmxlZC4gKi8NCj4g KyNkZWZpbmUgUE9SVF9QRUQJCUJJVCgxKQ0KPiArLyogdHJ1ZTogcG9ydCByZXNldCBzaWduYWxp bmcgYXNzZXJ0ZWQuICovDQo+ICsjZGVmaW5lIFBPUlRfUkVTRVQJCUJJVCg0KQ0KPiArLyoNCj4g KyAqIFBvcnQgTGluayBTdGF0ZSAtIGJpdHMgNTo4DQo+ICsgKiBBIHJlYWQgZ2l2ZXMgdGhlIGN1 cnJlbnQgbGluayBQTSBzdGF0ZSBvZiB0aGUgcG9ydCwNCj4gKyAqIGEgd3JpdGUgd2l0aCBMaW5r IFN0YXRlIFdyaXRlIFN0cm9iZSBzZXQgc2V0cyB0aGUgbGluayBzdGF0ZS4NCj4gKyAqLw0KPiAr I2RlZmluZSBQT1JUX1BMU19NQVNLCQlHRU5NQVNLKDgsIDUpDQo+ICsjZGVmaW5lIFhERVZfVTAJ CQkoMHgwIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfVTEJCQkoMHgxIDw8IDUpDQo+ICsjZGVmaW5l IFhERVZfVTIJCQkoMHgyIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfVTMJCQkoMHgzIDw8IDUpDQo+ ICsjZGVmaW5lIFhERVZfRElTQUJMRUQJCSgweDQgPDwgNSkNCj4gKyNkZWZpbmUgWERFVl9SWERF VEVDVAkJKDB4NSA8PCA1KQ0KPiArI2RlZmluZSBYREVWX0lOQUNUSVZFCQkoMHg2IDw8IDUpDQo+ ICsjZGVmaW5lIFhERVZfUE9MTElORwkJKDB4NyA8PCA1KQ0KPiArI2RlZmluZSBYREVWX1JFQ09W RVJZCQkoMHg4IDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfSE9UX1JFU0VUCQkoMHg5IDw8IDUpDQo+ ICsjZGVmaW5lIFhERVZfQ09NUF9NT0RFCQkoMHhhIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfVEVT VF9NT0RFCQkoMHhiIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfUkVTVU1FCQkoMHhmIDw8IDUpDQo+ ICsvKiB0cnVlOiBwb3J0IGhhcyBwb3dlci4gKi8NCj4gKyNkZWZpbmUgUE9SVF9QT1dFUgkJQklU KDkpDQo+ICsvKg0KPiArICogYml0cyAxMDoxMyBpbmRpY2F0ZSBkZXZpY2Ugc3BlZWQ6DQo+ICsg KiAwIC0gdW5kZWZpbmVkIHNwZWVkIC0gcG9ydCBoYXNuJ3QgYmUgaW5pdGlhbGl6ZWQgYnkgYSBy ZXNldCB5ZXQNCj4gKyAqIDEgLSBmdWxsIHNwZWVkDQo+ICsgKiAyIC0gUmVzZXJ2ZWQgKExvdyBT cGVlZCBub3Qgc3VwcG9ydGVkDQo+ICsgKiAzIC0gaGlnaCBzcGVlZA0KPiArICogNCAtIHN1cGVy IHNwZWVkDQo+ICsgKiA1IC0gc3VwZXIgc3BlZWQNCj4gKyAqIDYtMTUgcmVzZXJ2ZWQNCj4gKyAq Lw0KPiArI2RlZmluZSBERVZfU1BFRURfTUFTSwkJR0VOTUFTSygxMywgMTApDQo+ICsjZGVmaW5l IFhERVZfRlMJCQkoMHgxIDw8IDEwKQ0KPiArI2RlZmluZSBYREVWX0hTCQkJKDB4MyA8PCAxMCkN Cj4gKyNkZWZpbmUgWERFVl9TUwkJCSgweDQgPDwgMTApDQo+ICsjZGVmaW5lIFhERVZfU1NQCQko MHg1IDw8IDEwKQ0KPiArI2RlZmluZSBERVZfVU5ERUZTUEVFRChwKQkoKChwKSAmIERFVl9TUEVF RF9NQVNLKSA9PSAoMHgwIDw8IDEwKSkNCj4gKyNkZWZpbmUgREVWX0ZVTExTUEVFRChwKQkoKChw KSAmIERFVl9TUEVFRF9NQVNLKSA9PSBYREVWX0ZTKQ0KPiArI2RlZmluZSBERVZfSElHSFNQRUVE KHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09IFhERVZfSFMpDQo+ICsjZGVmaW5lIERFVl9T VVBFUlNQRUVEKHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09IFhERVZfU1MpDQo+ICsjZGVm aW5lIERFVl9TVVBFUlNQRUVEUExVUyhwKQkoKChwKSAmIERFVl9TUEVFRF9NQVNLKSA9PSBYREVW X1NTUCkNCj4gKyNkZWZpbmUgREVWX1NVUEVSU1BFRURfQU5ZKHApCSgoKHApICYgREVWX1NQRUVE X01BU0spID49IFhERVZfU1MpDQo+ICsjZGVmaW5lIERFVl9QT1JUX1NQRUVEKHApCSgoKHApID4+ IDEwKSAmIDB4MGYpDQo+ICsvKiBQb3J0IExpbmsgU3RhdGUgV3JpdGUgU3Ryb2JlIC0gc2V0IHRo aXMgd2hlbiBjaGFuZ2luZyBsaW5rIHN0YXRlICovDQo+ICsjZGVmaW5lIFBPUlRfTElOS19TVFJP QkUJQklUKDE2KQ0KPiArLyogdHJ1ZTogY29ubmVjdCBzdGF0dXMgY2hhbmdlICovDQo+ICsjZGVm aW5lIFBPUlRfQ1NDCQlCSVQoMTcpDQo+ICsvKiB0cnVlOiB3YXJtIHJlc2V0IGZvciBhIFVTQiAz LjAgZGV2aWNlIGlzIGRvbmUuICovDQo+ICsjZGVmaW5lIFBPUlRfV1JDCQlCSVQoMTkpDQo+ICsv KiB0cnVlOiByZXNldCBjaGFuZ2UgLSAxIHRvIDAgdHJhbnNpdGlvbiBvZiBQT1JUX1JFU0VUICov DQo+ICsjZGVmaW5lIFBPUlRfUkMJCQlCSVQoMjEpDQo+ICsvKg0KPiArICogcG9ydCBsaW5rIHN0 YXR1cyBjaGFuZ2UgLSBzZXQgb24gc29tZSBwb3J0IGxpbmsgc3RhdGUgdHJhbnNpdGlvbnM6DQo+ ICsgKiBUcmFuc2l0aW9uCQkJUmVhc29uDQo+ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsg KiAtIFUzIHRvIFJlc3VtZQkJV2FrZXVwIHNpZ25hbGluZyBmcm9tIGEgZGV2aWNlDQo+ICsgKiAt IFJlc3VtZSB0byBSZWNvdmVyeSB0byBVMAlVU0IgMy4wIGRldmljZSByZXN1bWUNCj4gKyAqIC0g UmVzdW1lIHRvIFUwCQlVU0IgMi4wIGRldmljZSByZXN1bWUNCj4gKyAqIC0gVTMgdG8gUmVjb3Zl cnkgdG8gVTAJU29mdHdhcmUgcmVzdW1lIG9mIFVTQiAzLjAgZGV2aWNlIGNvbXBsZXRlDQo+ICsg KiAtIFUzIHRvIFUwCQkJU29mdHdhcmUgcmVzdW1lIG9mIFVTQiAyLjAgZGV2aWNlIGNvbXBsZXRl DQo+ICsgKiAtIFUyIHRvIFUwCQkJTDEgcmVzdW1lIG9mIFVTQiAyLjEgZGV2aWNlIGNvbXBsZXRl DQo+ICsgKiAtIFUwIHRvIFUwCQkJTDEgZW50cnkgcmVqZWN0aW9uIGJ5IFVTQiAyLjEgZGV2aWNl DQo+ICsgKiAtIFUwIHRvIGRpc2FibGVkCQlMMSBlbnRyeSBlcnJvciB3aXRoIFVTQiAyLjEgZGV2 aWNlDQo+ICsgKiAtIEFueSBzdGF0ZSB0byBpbmFjdGl2ZQlFcnJvciBvbiBVU0IgMy4wIHBvcnQN Cj4gKyAqLw0KPiArI2RlZmluZSBQT1JUX1BMQwkJQklUKDIyKQ0KPiArLyogUG9ydCBjb25maWd1 cmUgZXJyb3IgY2hhbmdlIC0gcG9ydCBmYWlsZWQgdG8gY29uZmlndXJlIGl0cyBsaW5rIHBhcnRu ZXIuICovDQo+ICsjZGVmaW5lIFBPUlRfQ0VDCQlCSVQoMjMpDQo+ICsvKiBXYWtlIG9uIGNvbm5l Y3QgKGVuYWJsZSkuICovDQo+ICsjZGVmaW5lIFBPUlRfV0tDT05OX0UJCUJJVCgyNSkNCj4gKy8q IFdha2Ugb24gZGlzY29ubmVjdCAoZW5hYmxlKS4gKi8NCj4gKyNkZWZpbmUgUE9SVF9XS0RJU0Nf RQkJQklUKDI2KQ0KPiArLyogSW5kaWNhdGVzIGlmIFdhcm0gUmVzZXQgaXMgYmVpbmcgcmVjZWl2 ZWQuICovDQo+ICsjZGVmaW5lIFBPUlRfV1IJCQlCSVQoMzEpDQo+ICsNCj4gKyNkZWZpbmUgUE9S VF9DSEFOR0VfQklUUyAoUE9SVF9DU0MgfCBQT1JUX1dSQyB8IFBPUlRfUkMgfCBQT1JUX1BMQyB8 IFBPUlRfQ0VDKQ0KPiArDQo+ICsvKiBQT1JUUE1TQ1VTQjMgLSBQb3J0IFBvd2VyIE1hbmFnZW1l bnQgU3RhdHVzIGFuZCBDb250cm9sIC0gYml0bWFza3MuICovDQo+ICsvKiAgRW5hYmxlcyBVMSBl bnRyeS4gKi8NCj4gKyNkZWZpbmUgUE9SVF9VMV9USU1FT1VUX01BU0sJR0VOTUFTSyg3LCAwKQ0K PiArI2RlZmluZSBQT1JUX1UxX1RJTUVPVVQocCkJKChwKSAmIFBPUlRfVTFfVElNRU9VVF9NQVNL KQ0KPiArLyogRW5hYmxlcyBVMiBlbnRyeSAuKi8NCj4gKyNkZWZpbmUgUE9SVF9VMl9USU1FT1VU X01BU0sJR0VOTUFTSygxNCwgOCkNCj4gKyNkZWZpbmUgUE9SVF9VMl9USU1FT1VUKHApCSgoKHAp IDw8IDgpICYgUE9SVF9VMl9USU1FT1VUX01BU0spDQo+ICsNCj4gKy8qIFBPUlRQTVNDVVNCMiAt IFBvcnQgUG93ZXIgTWFuYWdlbWVudCBTdGF0dXMgYW5kIENvbnRyb2wgLSBiaXRtYXNrcy4gKi8N Cj4gKyNkZWZpbmUgUE9SVF9MMVNfTUFTSwkJR0VOTUFTSygyLCAwKQ0KPiArI2RlZmluZSBQT1JU X0wxUyhwKQkJKChwKSAmIEdFTk1BU0soMiwgMCkpDQpOaXQ6IFVzZSBQT1JUX0wxU19NQVNLPw0K DQo+ICsjZGVmaW5lIFBPUlRfTDFTX0FDSwkJUE9SVF9MMVMoMSkNCj4gKyNkZWZpbmUgUE9SVF9M MVNfTllFVAkJUE9SVF9MMVMoMikNCj4gKyNkZWZpbmUgUE9SVF9MMVNfU1RBTEwJCVBPUlRfTDFT KDMpDQo+ICsjZGVmaW5lIFBPUlRfTDFTX1RJTUVPVVQJUE9SVF9MMVMoNCkNCj4gKy8qIFJlbW90 ZSBXYWtlIEVuYWJsZS4gKi8NCj4gKyNkZWZpbmUgUE9SVF9SV0UJCUJJVCgzKQ0KPiArLyogQmVz dCBFZmZvcnQgU2VydmljZSBMYXRlbmN5IChCRVNMKS4gKi8NCj4gKyNkZWZpbmUgUE9SVF9CRVNM KHApCQkoKChwKSA8PCA0KSAmIEdFTk1BU0soNywgNCkpDQo+ICsvKiBIYXJkd2FyZSBMUE0gRW5h YmxlIChITEUpLiAqLw0KPiArI2RlZmluZSBQT1JUX0hMRQkJQklUKDE2KQ0KPiArLyogUmVjZWl2 ZWQgQmVzdCBFZmZvcnQgU2VydmljZSBMYXRlbmN5IChCRVNMKS4gKi8NCj4gKyNkZWZpbmUgUE9S VF9SUkJFU0wocCkJCSgoKHApICYgR0VOTUFTSygyMCwgMTcpKSA+PiAxNykNCj4gKy8qIFBvcnQg VGVzdCBDb250cm9sLiAqLw0KPiArI2RlZmluZSBQT1JUX1RFU1RfTU9ERV9NQVNLCUdFTk1BU0so MzEsIDI4KQ0KPiArI2RlZmluZSBQT1JUX1RFU1RfTU9ERShwKQkoKChwKSA8PCAyOCkgJiBHRU5N QVNLKDMxLCAyOCkpDQpkaXR0bw0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9pbnRy X3JlZyAtIEludGVycnVwdCBSZWdpc3RlciBTZXQuDQo+ICsgKiBAaXJxX3BlbmRpbmc6IElNQU4g LSBJbnRlcnJ1cHQgTWFuYWdlbWVudCBSZWdpc3Rlci4gVXNlZCB0byBlbmFibGUNCj4gKyAqICAg ICAgICAgICAgICAgaW50ZXJydXB0cyBhbmQgY2hlY2sgZm9yIHBlbmRpbmcgaW50ZXJydXB0cy4N Cj4gKyAqIEBpcnFfY29udHJvbDogSU1PRCAtIEludGVycnVwdCBNb2RlcmF0aW9uIFJlZ2lzdGVy Lg0KPiArICogICAgICAgICAgICAgICBVc2VkIHRvIHRocm90dGxlIGludGVycnVwdHMuDQo+ICsg KiBAZXJzdF9zaXplOiBOdW1iZXIgb2Ygc2VnbWVudHMgaW4gdGhlIEV2ZW50IFJpbmcgU2VnbWVu dCBUYWJsZSAoRVJTVCkuDQo+ICsgKiBAZXJzdF9iYXNlOiBFUlNUIGJhc2UgYWRkcmVzcy4NCj4g KyAqIEBlcnN0X2RlcXVldWU6IEV2ZW50IHJpbmcgZGVxdWV1ZSBwb2ludGVyLg0KPiArICoNCj4g KyAqIEVhY2ggaW50ZXJydXB0ZXIgKGRlZmluZWQgYnkgYSBNU0ktWCB2ZWN0b3IpIGhhcyBhbiBl dmVudCByaW5nIGFuZCBhbiBFdmVudA0KPiArICogUmluZyBTZWdtZW50IFRhYmxlIChFUlNUKSBh c3NvY2lhdGVkIHdpdGggaXQuIFRoZSBldmVudCByaW5nIGlzIGNvbXByaXNlZCBvZg0KPiArICog bXVsdGlwbGUgc2VnbWVudHMgb2YgdGhlIHNhbWUgc2l6ZS4gVGhlIGNvbnRyb2xsZXIgcGxhY2Vz IGV2ZW50cyBvbiB0aGUgcmluZw0KPiArICogYW5kICJ1cGRhdGVzIHRoZSBDeWNsZSBiaXQgaW4g dGhlIFRSQnMgdG8gaW5kaWNhdGUgdG8gc29mdHdhcmUgdGhlIGN1cnJlbnQNCj4gKyAqIHBvc2l0 aW9uIG9mIHRoZSBFbnF1ZXVlIFBvaW50ZXIuIiBUaGUgZHJpdmVyIHByb2Nlc3NlcyB0aG9zZSBl dmVudHMgYW5kDQo+ICsgKiB1cGRhdGVzIHRoZSBkZXF1ZXVlIHBvaW50ZXIuDQo+ICsgKi8NCj4g K3N0cnVjdCBjZG5zcF9pbnRyX3JlZyB7DQo+ICsJX19sZTMyIGlycV9wZW5kaW5nOw0KPiArCV9f bGUzMiBpcnFfY29udHJvbDsNCj4gKwlfX2xlMzIgZXJzdF9zaXplOw0KPiArCV9fbGUzMiByc3Zk Ow0KPiArCV9fbGU2NCBlcnN0X2Jhc2U7DQo+ICsJX19sZTY0IGVyc3RfZGVxdWV1ZTsNCj4gK307 DQo+ICsNCj4gKy8qIElNQU4gLSBJbnRlcnJ1cHQgTWFuYWdlbWVudCBSZWdpc3RlciAtIGlycV9w ZW5kaW5nIGJpdG1hc2tzIGwuICovDQo+ICsjZGVmaW5lIElNQU5fSUUJCQlCSVQoMSkNCj4gKyNk ZWZpbmUgSU1BTl9JUAkJCUJJVCgwKQ0KPiArLyogYml0cyAyOjMxIG5lZWQgdG8gYmUgcHJlc2Vy dmVkICovDQo+ICsjZGVmaW5lIElNQU5fSUVfU0VUKHApCQkoKChwKSAmIElNQU5fSUUpIHwgMHgy KQ0KPiArI2RlZmluZSBJTUFOX0lFX0NMRUFSKHApCSgoKHApICYgSU1BTl9JRSkgJiB+KDB4Mikp DQo+ICsNCj4gKy8qIElNT0QgLSBJbnRlcnJ1cHRlciBNb2RlcmF0aW9uIFJlZ2lzdGVyIC0gaXJx X2NvbnRyb2wgYml0bWFza3MuICovDQo+ICsvKg0KPiArICogTWluaW11bSBpbnRlcnZhbCBiZXR3 ZWVuIGludGVycnVwdHMgKGluIDI1MG5zIGludGVydmFscykuIFRoZSBpbnRlcnZhbA0KPiArICog YmV0d2VlbiBpbnRlcnJ1cHRzIHdpbGwgYmUgbG9uZ2VyIGlmIHRoZXJlIGFyZSBubyBldmVudHMg b24gdGhlIGV2ZW50IHJpbmcuDQo+ICsgKiBEZWZhdWx0IGlzIDQwMDAgKDEgbXMpLg0KPiArICov DQo+ICsjZGVmaW5lIElNT0RfSU5URVJWQUxfTUFTSwlHRU5NQVNLKDE1LCAwKQ0KPiArLyogQ291 bnRlciB1c2VkIHRvIGNvdW50IGRvd24gdGhlIHRpbWUgdG8gdGhlIG5leHQgaW50ZXJydXB0IC0g SFcgdXNlIG9ubHkgKi8NCj4gKyNkZWZpbmUgSU1PRF9DT1VOVEVSX01BU0sJR0VOTUFTSygzMSwg MTYpDQo+ICsjZGVmaW5lIElNT0RfREVGQVVMVF9JTlRFUlZBTAkwDQo+ICsNCj4gKy8qIGVyc3Rf c2l6ZSBiaXRtYXNrcy4gKi8NCj4gKy8qIFByZXNlcnZlIGJpdHMgMTY6MzEgb2YgZXJzdF9zaXpl LiAqLw0KPiArI2RlZmluZSBFUlNUX1NJWkVfTUFTSwkJR0VOTUFTSygzMSwgMTYpDQo+ICsNCj4g Ky8qIGVyc3RfZGVxdWV1ZSBiaXRtYXNrcy4gKi8NCj4gKy8qDQo+ICsgKiBEZXF1ZXVlIEVSU1Qg U2VnbWVudCBJbmRleCAoREVTSSkgLSBTZWdtZW50IG51bWJlciAob3IgYWxpYXMpDQo+ICsgKiB3 aGVyZSB0aGUgY3VycmVudCBkZXF1ZXVlIHBvaW50ZXIgbGllcy4gVGhpcyBpcyBhbiBvcHRpb25h bCBIVyBoaW50Lg0KPiArICovDQo+ICsjZGVmaW5lIEVSU1RfREVTSV9NQVNLCQlHRU5NQVNLKDIs IDApDQo+ICsvKiBFdmVudCBIYW5kbGVyIEJ1c3kgKEVIQikgLSBpcyB0aGUgZXZlbnQgcmluZyBz Y2hlZHVsZWQgdG8gYmUgc2VydmljZWQuICovDQo+ICsjZGVmaW5lIEVSU1RfRUhCCQlCSVQoMykN Cj4gKyNkZWZpbmUgRVJTVF9QVFJfTUFTSwkJR0VOTUFTSygzLCAwKQ0KPiArDQo+ICsvKioNCj4g KyAqIHN0cnVjdCBjZG5zcF9ydW5fcmVncw0KPiArICogQG1pY3JvZnJhbWVfaW5kZXg6IE1GSU5E RVggLSBjdXJyZW50IG1pY3JvZnJhbWUgbnVtYmVyLg0KPiArICogQGlyX3NldDogQXJyYXkgb2Yg SW50ZXJydXB0ZXIgcmVnaXN0ZXJzLg0KPiArICoNCj4gKyAqIERldmljZSBDb250cm9sbGVyIFJ1 bnRpbWUgUmVnaXN0ZXJzOg0KPiArICogIlNvZnR3YXJlIHNob3VsZCByZWFkIGFuZCB3cml0ZSB0 aGVzZSByZWdpc3RlcnMgdXNpbmcgb25seSBEd29yZCAoMzIgYml0KQ0KPiArICogb3IgbGFyZ2Vy IGFjY2Vzc2VzIg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfcnVuX3JlZ3Mgew0KPiArCV9fbGUz MiBtaWNyb2ZyYW1lX2luZGV4Ow0KPiArCV9fbGUzMiByc3ZkWzddOw0KPiArCXN0cnVjdCBjZG5z cF9pbnRyX3JlZyBpcl9zZXRbMTI4XTsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogVVNCMi4w IFBvcnQgUGVyaXBoZXJhbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVycy4NCj4gKyAqIEBleHRfY2Fw OiBIZWFkZXIgcmVnaXN0ZXIgZm9yIEV4dGVuZGVkIENhcGFiaWxpdHkuDQo+ICsgKiBAcG9ydF9y ZWcxOiBUaW1lciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyLg0KPiArICogQHBvcnRfcmVnMjogVGlt ZXIgQ29uZmlndXJhdGlvbiBSZWdpc3Rlci4NCj4gKyAqIEBwb3J0X3JlZzM6IFRpbWVyIENvbmZp Z3VyYXRpb24gUmVnaXN0ZXIuDQo+ICsgKiBAcG9ydF9yZWc0OiBUaW1lciBDb25maWd1cmF0aW9u IFJlZ2lzdGVyLg0KPiArICogQHBvcnRfcmVnNTogVGltZXIgQ29uZmlndXJhdGlvbiBSZWdpc3Rl ci4NCj4gKyAqIEBwb3J0X3JlZzY6IENoaWNrZW4gYml0cyBmb3IgVVNCMjBQUFAuDQo+ICsgKi8N Cj4gK3N0cnVjdCBjZG5zcF8yMHBvcnRfY2FwIHsNCj4gKwlfX2xlMzIgZXh0X2NhcDsNCj4gKwlf X2xlMzIgcG9ydF9yZWcxOw0KPiArCV9fbGUzMiBwb3J0X3JlZzI7DQo+ICsJX19sZTMyIHBvcnRf cmVnMzsNCj4gKwlfX2xlMzIgcG9ydF9yZWc0Ow0KPiArCV9fbGUzMiBwb3J0X3JlZzU7DQo+ICsJ X19sZTMyIHBvcnRfcmVnNjsNCj4gK307DQo+ICsNCj4gKy8qIEV4dGVuZGVkIGNhcGFiaWxpdHkg cmVnaXN0ZXIgZmllbGRzICovDQo+ICsjZGVmaW5lIEVYVF9DQVBTX0lEKHApCQkJKCgocCkgPj4g MCkgJiBHRU5NQVNLKDcsIDApKQ0KPiArI2RlZmluZSBFWFRfQ0FQU19ORVhUKHApCQkoKChwKSA+ PiA4KSAmIEdFTk1BU0soNywgMCkpDQo+ICsvKiBFeHRlbmRlZCBjYXBhYmlsaXR5IElEcyAtIElE IDAgcmVzZXJ2ZWQgKi8NCj4gKyNkZWZpbmUgRVhUX0NBUFNfUFJPVE9DT0wJCTINCj4gKw0KPiAr LyogVVNCIDIuMCBQb3J0IFBlcmlwaGVyYWwgQ29uZmlndXJhdGlvbiBFeHRlbmRlZCBDYXBhYmls aXR5ICovDQo+ICsjZGVmaW5lIEVYVF9DQVBfQ0ZHX0RFVl8yMFBPUlRfQ0FQX0lECTB4QzENCj4g Ky8qDQo+ICsgKiBTZXR0aW5nIHRoaXMgYml0IHRvICcxJyBlbmFibGVzIGF1dG9tYXRpYyB3YWtl dXAgZnJvbSBMMSBzdGF0ZSBvbiB0cmFuc2Zlcg0KPiArICogVFJCIHByZXBhcmVkIHdoZW4gVVNC U1NQIG9wZXJhdGVzIGluIFVTQjIuMCBtb2RlLg0KPiArICovDQo+ICsjZGVmaW5lIFBPUlRfUkVH Nl9MMV9MMF9IV19FTgkJQklUKDEpDQo+ICsvKg0KPiArICogU2V0dGluZyB0aGlzIGJpdCB0byAn MScgZm9yY2VzIEZ1bGwgU3BlZWQgd2hlbiBVU0JTU1Agb3BlcmF0ZXMgaW4gVVNCMi4wDQo+ICsg KiBtb2RlIChkaXNhYmxlcyBIaWdoIFNwZWVkKS4NCj4gKyAqLw0KPiArI2RlZmluZSBQT1JUX1JF RzZfRk9SQ0VfRlMJCUJJVCgwKQ0KPiArDQo+ICsvKioNCj4gKyAqIFVTQjMueCBQb3J0IFBlcmlw aGVyYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMuDQo+ICsgKiBAZXh0X2NhcDogSGVhZGVyIHJl Z2lzdGVyIGZvciBFeHRlbmRlZCBDYXBhYmlsaXR5Lg0KPiArICogQG1vZGVfYWRkcjogTWlzY2Vs bGFuZW91cyAzeFBPUlQgb3BlcmF0aW9uIG1vZGUgY29uZmlndXJhdGlvbiByZWdpc3Rlci4NCj4g KyAqLw0KPiArc3RydWN0IGNkbnNwXzN4cG9ydF9jYXAgew0KPiArCV9fbGUzMiBleHRfY2FwOw0K PiArCV9fbGUzMiBtb2RlX2FkZHI7DQo+ICt9Ow0KPiArDQo+ICsvKiBFeHRlbmRlZCBDYXBhYmls aXR5IEhlYWRlciBmb3IgM1hQb3J0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzLiAqLw0KPiArI2Rl ZmluZSBEX1hFQ19DRkdfM1hQT1JUX0NBUAkJMHhDMA0KPiArI2RlZmluZSBDRkdfM1hQT1JUX1NT UF9TVVBQT1JUCQlCSVQoMzEpDQo+ICsNCj4gKy8qIFJldmlzaW9uIEV4dGVuZGVkIENhcGFiaWxp dHkgSUQgKi8NCj4gKyNkZWZpbmUgUlRMX1JFVl9DQVAJCQkweEM0DQo+ICsjZGVmaW5lIFJUTF9S RVZfQ0FQX1JYX0JVRkZfQ01EX1NJWkUJQklUTUFTSygzMSwgMjQpDQo+ICsjZGVmaW5lIFJUTF9S RVZfQ0FQX1JYX0JVRkZfU0laRQlCSVRNQVNLKDE1LCAwKQ0KPiArI2RlZmluZSBSVExfUkVWX0NB UF9UWF9CVUZGX0NNRF9TSVpFCUJJVE1BU0soMzEsIDI0KQ0KPiArI2RlZmluZSBSVExfUkVWX0NB UF9UWF9CVUZGX1NJWkUJQklUTUFTSygxNSwgMCkNCj4gKw0KPiArI2RlZmluZSBDRE5TUF9WRVJf MSAweDAwMDAwMDAwDQo+ICsjZGVmaW5lIENETlNQX1ZFUl8yIDB4MTAwMDAwMDANCj4gKw0KPiAr I2RlZmluZSBDRE5TUF9JRl9FUF9FWElTVChwZGV2LCBlcF9udW0sIGRpcikgKChwZGV2KS0+cmV2 X2NhcC5lcF9zdXBwb3J0ZWQgJiBcDQo+ICsJCQkgIChCSVQoZXBfbnVtKSA8PCAoZGlyID8gMCA6 IDE2KSkpDQphZGQgKCkgZG9yIGRpcj8NCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3Bf cmV2X2NhcCAtIGNvbnRyb2xsZXIgY2FwYWJpbGl0aWVzIC4NCj4gKyAqIEBleHRfY2FwOiBIZWFk ZXIgZm9yIFJUTCBSZXZpc2lvbiBFeHRlbmRlZCBDYXBhYmlsaXR5Lg0KPiArICogQHJ0bF9yZXZp c2lvbjogUlRMIHJldmlzaW9uLg0KPiArICogQHJ4X2J1ZmZfc2l6ZTogUnggYnVmZmVyIHNpemVz Lg0KPiArICogQHR4X2J1ZmZfc2l6ZTogVHggYnVmZmVyIHNpemVzLg0KPiArICogQGVwX3N1cHBv cnRlZDogU3VwcG9ydGVkIGVuZHBvaW50cy4NCj4gKyAqIEBjdHJsX3JldmlzaW9uOiBDb250cm9s bGVyIHJldmlzaW9uIElELg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfcmV2X2NhcCB7DQo+ICsJ X19sZTMyIGV4dF9jYXA7DQo+ICsJX19sZTMyIHJ0bF9yZXZpc2lvbjsNCj4gKwlfX2xlMzIgcnhf YnVmZl9zaXplOw0KPiArCV9fbGUzMiB0eF9idWZmX3NpemU7DQo+ICsJX19sZTMyIGVwX3N1cHBv cnRlZDsNCj4gKwlfX2xlMzIgY3RybF9yZXZpc2lvbjsNCj4gK307DQo+ICsNCj4gKy8qIFVTQjIu MCBQb3J0IFBlcmlwaGVyYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMuICovDQo+ICsjZGVmaW5l IERfWEVDX1BSRV9SRUdTX0NBUAkJMHhDOA0KPiArI2RlZmluZSBSRUdfQ0hJQ0tFTl9CSVRTXzJf T0ZGU0VUCTB4NDgNCj4gKyNkZWZpbmUgQ0hJQ0tFTl9YRE1BXzJfVFBfQ0FDSEVfRElTCUJJVCgy OCkNCj4gKw0KPiArLyogWEJVRiBFeHRlbmRlZCBDYXBhYmlsaXR5IElELiAqLw0KPiArI2RlZmlu ZSBYQlVGX0NBUF9JRAkJCTB4Q0INCj4gKyNkZWZpbmUgWEJVRl9SWF9UQUdfTUFTS18wX09GRlNF VAkweDFDDQo+ICsjZGVmaW5lIFhCVUZfUlhfVEFHX01BU0tfMV9PRkZTRVQJMHgyNA0KPiArI2Rl ZmluZSBYQlVGX1RYX0NNRF9PRkZTRVQJCTB4MkMNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3Qg Y2Ruc3BfZG9vcmJlbGxfYXJyYXkuDQo+ICsgKiBAY21kX2RiOiBDb21tYW5kIHJpbmcgZG9vcmJl bGwgcmVnaXN0ZXIuDQo+ICsgKiBAZXBfZGI6IEVuZHBvaW50IHJpbmcgZG9vcmJlbGwgcmVnaXN0 ZXIuDQo+ICsgKiAgICAgICAgIEJpdHMgMCAtIDc6IEVuZHBvaW50IHRhcmdldC4NCj4gKyAqICAg ICAgICAgQml0cyA4IC0gMTU6IFJzdmRaLg0KPiArICogICAgICAgICBCaXRzIDE2IC0gMzE6IFN0 cmVhbSBJRC4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2Rvb3JiZWxsX2FycmF5IHsNCj4gKwlf X2xlMzIgY21kX2RiOw0KPiArCV9fbGUzMiBlcF9kYjsNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUg REJfVkFMVUUoZXAsIHN0cmVhbSkJCSgoKChlcCkgKyAxKSAmIDB4ZmYpIHwgKChzdHJlYW0pIDw8 IDE2KSkNCj4gKyNkZWZpbmUgREJfVkFMVUVfRVAwX09VVChlcCwgc3RyZWFtKQkoKGVwKSAmIDB4 ZmYpDQo+ICsjZGVmaW5lIERCX1ZBTFVFX0NNRAkJCTB4MDAwMDAwMDANCj4gKw0KPiArLyoqDQo+ ICsgKiBzdHJ1Y3QgY2Ruc3BfY29udGFpbmVyX2N0eC4NCj4gKyAqIEB0eXBlOiBUeXBlIG9mIGNv bnRleHQuIFVzZWQgdG8gY2FsY3VsYXRlZCBvZmZzZXRzIHRvIGNvbnRhaW5lZCBjb250ZXh0cy4N Cj4gKyAqIEBzaXplOiBTaXplIG9mIHRoZSBjb250ZXh0IGRhdGEuDQo+ICsgKiBAY3R4X3NpemU6 IGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmUgc2l6ZSAtIDY0IG9yIDMyIGJpdHMuDQo+ICsgKiBAZG1h OiBkbWEgYWRkcmVzcyBvZiB0aGUgYnl0ZXMuDQo+ICsgKiBAYnl0ZXM6IFRoZSByYXcgY29udGV4 dCBkYXRhIGdpdmVuIHRvIEhXLg0KPiArICoNCj4gKyAqIFJlcHJlc2VudHMgZWl0aGVyIGEgRGV2 aWNlIG9yIElucHV0IGNvbnRleHQuIEhvbGRzIGEgcG9pbnRlciB0byB0aGUgcmF3DQo+ICsgKiBt ZW1vcnkgdXNlZCBmb3IgdGhlIGNvbnRleHQgKGJ5dGVzKSBhbmQgZG1hIGFkZHJlc3Mgb2YgaXQg KGRtYSkuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9jb250YWluZXJfY3R4IHsNCj4gKwl1bnNp Z25lZCBpbnQgdHlwZTsNCj4gKyNkZWZpbmUgQ0ROU1BfQ1RYX1RZUEVfREVWSUNFCTB4MQ0KPiAr I2RlZmluZSBDRE5TUF9DVFhfVFlQRV9JTlBVVAkweDINCj4gKwlpbnQgc2l6ZTsNCj4gKwlpbnQg Y3R4X3NpemU7DQo+ICsJZG1hX2FkZHJfdCBkbWE7DQo+ICsJdTggKmJ5dGVzOw0KPiArfTsNCj4g Kw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3Bfc2xvdF9jdHgNCj4gKyAqIEBkZXZfaW5mbzog RGV2aWNlIHNwZWVkLCBhbmQgbGFzdCB2YWxpZCBlbmRwb2ludC4NCj4gKyAqIEBkZXZfcG9ydDog RGV2aWNlIHBvcnQgbnVtYmVyIHRoYXQgaXMgbmVlZGVkIHRvIGFjY2VzcyB0aGUgVVNCIGRldmlj ZS4NCj4gKyAqIEBpbnRfdGFyZ2V0OiBJbnRlcnJ1cHRlciB0YXJnZXQgbnVtYmVyLg0KPiArICog QGRldl9zdGF0ZTogU2xvdCBzdGF0ZSBhbmQgZGV2aWNlIGFkZHJlc3MuDQo+ICsgKg0KPiArICog U2xvdCBDb250ZXh0IC0gVGhpcyBhc3N1bWVzIHRoZSBjb250cm9sbGVyIHVzZXMgMzItYnl0ZSBj b250ZXh0DQo+ICsgKiBzdHJ1Y3R1cmVzLiBJZiB0aGUgY29udHJvbGxlciB1c2VzIDY0LWJ5dGUg Y29udGV4dHMsIHRoZXJlIGlzIGFuIGFkZGl0aW9uYWwNCj4gKyAqIDMyIGJ5dGVzIHJlc2VydmVk IGF0IHRoZSBlbmQgb2YgdGhlIHNsb3QgY29udGV4dCBmb3IgY29udHJvbGxlciBpbnRlcm5hbCB1 c2UuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9zbG90X2N0eCB7DQo+ICsJX19sZTMyIGRldl9p bmZvOw0KPiArCV9fbGUzMiBkZXZfcG9ydDsNCj4gKwlfX2xlMzIgaW50X3RhcmdldDsNCj4gKwlf X2xlMzIgZGV2X3N0YXRlOw0KPiArCS8qIG9mZnNldCAweDEwIHRvIDB4MWYgcmVzZXJ2ZWQgZm9y IGNvbnRyb2xsZXIgaW50ZXJuYWwgdXNlLiAqLw0KPiArCV9fbGUzMiByZXNlcnZlZFs0XTsNCj4g K307DQo+ICsNCj4gKy8qIEJpdHMgMjA6MjMgaW4gdGhlIFNsb3QgQ29udGV4dCBhcmUgdGhlIHNw ZWVkIGZvciB0aGUgZGV2aWNlLiAqLw0KPiArI2RlZmluZSBTTE9UX1NQRUVEX0ZTCQkoWERFVl9G UyA8PCAxMCkNCj4gKyNkZWZpbmUgU0xPVF9TUEVFRF9IUwkJKFhERVZfSFMgPDwgMTApDQo+ICsj ZGVmaW5lIFNMT1RfU1BFRURfU1MJCShYREVWX1NTIDw8IDEwKQ0KPiArI2RlZmluZSBTTE9UX1NQ RUVEX1NTUAkJKFhERVZfU1NQIDw8IDEwKQ0KPiArDQo+ICsvKiBkZXZfaW5mbyBiaXRtYXNrcy4g Ki8NCj4gKy8qIERldmljZSBzcGVlZCAtIHZhbHVlcyBkZWZpbmVkIGJ5IFBPUlRTQyBEZXZpY2Ug U3BlZWQgZmllbGQgLSAyMDoyMy4gKi8NCj4gKyNkZWZpbmUgREVWX1NQRUVECQlHRU5NQVNLKDIz LCAyMCkNCj4gKyNkZWZpbmUgR0VUX0RFVl9TUEVFRChuKQkoKChuKSAmIERFVl9TUEVFRCkgPj4g MjApDQo+ICsvKiBJbmRleCBvZiB0aGUgbGFzdCB2YWxpZCBlbmRwb2ludCBjb250ZXh0IGluIHRo aXMgZGV2aWNlIGNvbnRleHQgLSAyNzozMS4gKi8NCj4gKyNkZWZpbmUgTEFTVF9DVFhfTUFTSwkJ R0VOTUFTSygzMSwgMjcpDQo+ICsjZGVmaW5lIExBU1RfQ1RYKHApCQkoKHApIDw8IDI3KQ0KPiAr I2RlZmluZSBMQVNUX0NUWF9UT19FUF9OVU0ocCkJKCgocCkgPj4gMjcpIC0gMSkNCj4gKyNkZWZp bmUgU0xPVF9GTEFHCQlCSVQoMCkNCj4gKyNkZWZpbmUgRVAwX0ZMQUcJCUJJVCgxKQ0KPiArDQo+ ICsvKiBkZXZfcG9ydCBiaXRtYXNrcyAqLw0KPiArLyogRGV2aWNlIHBvcnQgbnVtYmVyIHRoYXQg aXMgbmVlZGVkIHRvIGFjY2VzcyB0aGUgVVNCIGRldmljZS4gKi8NCj4gKyNkZWZpbmUgREVWX1BP UlQocCkJCSgoKHApICYgMHhmZikgPDwgMTYpDQo+ICsNCj4gKy8qIGRldl9zdGF0ZSBiaXRtYXNr cyAqLw0KPiArLyogVVNCIGRldmljZSBhZGRyZXNzIC0gYXNzaWduZWQgYnkgdGhlIGNvbnRyb2xs ZXIuICovDQo+ICsjZGVmaW5lIERFVl9BRERSX01BU0sJCUdFTk1BU0soNywgMCkNCj4gKy8qIFNs b3Qgc3RhdGUgKi8NCj4gKyNkZWZpbmUgU0xPVF9TVEFURQkJR0VOTUFTSygzMSwgMjcpDQo+ICsj ZGVmaW5lIEdFVF9TTE9UX1NUQVRFKHApCSgoKHApICYgKDB4MWYgPDwgMjcpKSA+PiAyNykNClVz ZSBTTE9UX1NUQVRFPyBvciAoKChwKSA+PiAyNykgJiAweDFmKT8NCj4gKw0KPiArI2RlZmluZSBT TE9UX1NUQVRFX0RJU0FCTEVECTANCj4gKyNkZWZpbmUgU0xPVF9TVEFURV9FTkFCTEVECVNMT1Rf U1RBVEVfRElTQUJMRUQNCj4gKyNkZWZpbmUgU0xPVF9TVEFURV9ERUZBVUxUCTENCj4gKyNkZWZp bmUgU0xPVF9TVEFURV9BRERSRVNTRUQJMg0KPiArI2RlZmluZSBTTE9UX1NUQVRFX0NPTkZJR1VS RUQJMw0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9lcF9jdHguDQo+ICsgKiBAZXBf aW5mbzogRW5kcG9pbnQgc3RhdGUsIHN0cmVhbXMsIG11bHQsIGFuZCBpbnRlcnZhbCBpbmZvcm1h dGlvbi4NCj4gKyAqIEBlcF9pbmZvMjogSW5mb3JtYXRpb24gb24gZW5kcG9pbnQgdHlwZSwgbWF4 IHBhY2tldCBzaXplLCBtYXggYnVyc3Qgc2l6ZSwNCj4gKyAqICAgICAgICAgICAgZXJyb3IgY291 bnQsIGFuZCB3aGV0aGVyIHRoZSBjb250cm9sbGVyIHdpbGwgZm9yY2UgYW4gZXZlbnQgZm9yDQo+ ICsgKiAgICAgICAgICAgIGFsbCB0cmFuc2FjdGlvbnMuDQo+ICsgKiBAZGVxOiA2NC1iaXQgcmlu ZyBkZXF1ZXVlIHBvaW50ZXIgYWRkcmVzcy4gSWYgdGhlIGVuZHBvaW50IG9ubHkNCj4gKyAqICAg ICAgIGRlZmluZXMgb25lIHN0cmVhbSwgdGhpcyBwb2ludHMgdG8gdGhlIGVuZHBvaW50IHRyYW5z ZmVyIHJpbmcuDQo+ICsgKiAgICAgICBPdGhlcndpc2UsIGl0IHBvaW50cyB0byBhIHN0cmVhbSBj b250ZXh0IGFycmF5LCB3aGljaCBoYXMgYQ0KPiArICogICAgICAgcmluZyBwb2ludGVyIGZvciBl YWNoIGZsb3cuDQo+ICsgKiBAdHhfaW5mbzogQXZlcmFnZSBUUkIgbGVuZ3RocyBmb3IgdGhlIGVu ZHBvaW50IHJpbmcgYW5kDQo+ICsgKgkgICAgIG1heCBwYXlsb2FkIHdpdGhpbiBhbiBFbmRwb2lu dCBTZXJ2aWNlIEludGVydmFsIFRpbWUgKEVTSVQpLg0KPiArICoNCj4gKyAqIEVuZHBvaW50IENv bnRleHQgLSBUaGlzIGFzc3VtZXMgdGhlIGNvbnRyb2xsZXIgdXNlcyAzMi1ieXRlIGNvbnRleHQN Cj4gKyAqIHN0cnVjdHVyZXMuIElmIHRoZSBjb250cm9sbGVyIHVzZXMgNjQtYnl0ZSBjb250ZXh0 cywgdGhlcmUgaXMgYW4gYWRkaXRpb25hbA0KPiArICogMzIgYnl0ZXMgcmVzZXJ2ZWQgYXQgdGhl IGVuZCBvZiB0aGUgZW5kcG9pbnQgY29udGV4dCBmb3IgY29udHJvbGxlciBpbnRlcm5hbA0KPiAr ICogdXNlLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfZXBfY3R4IHsNCj4gKwlfX2xlMzIgZXBf aW5mbzsNCj4gKwlfX2xlMzIgZXBfaW5mbzI7DQo+ICsJX19sZTY0IGRlcTsNCj4gKwlfX2xlMzIg dHhfaW5mbzsNCj4gKwkvKiBvZmZzZXQgMHgxNCAtIDB4MWYgcmVzZXJ2ZWQgZm9yIGNvbnRyb2xs ZXIgaW50ZXJuYWwgdXNlLiAqLw0KPiArCV9fbGUzMiByZXNlcnZlZFszXTsNCj4gK307DQo+ICsN Cj4gKy8qIGVwX2luZm8gYml0bWFza3MuICovDQo+ICsvKg0KPiArICogRW5kcG9pbnQgU3RhdGUg LSBiaXRzIDA6MjoNCj4gKyAqIDAgLSBkaXNhYmxlZA0KPiArICogMSAtIHJ1bm5pbmcNCj4gKyAq IDIgLSBoYWx0ZWQgZHVlIHRvIGhhbHQgY29uZGl0aW9uDQo+ICsgKiAzIC0gc3RvcHBlZA0KPiAr ICogNCAtIFRSQiBlcnJvcg0KPiArICogNS03IC0gcmVzZXJ2ZWQNCj4gKyAqLw0KPiArI2RlZmlu ZSBFUF9TVEFURV9NQVNLCQlHRU5NQVNLKDMsIDApDQo+ICsjZGVmaW5lIEVQX1NUQVRFX0RJU0FC TEVECTANCj4gKyNkZWZpbmUgRVBfU1RBVEVfUlVOTklORwkxDQo+ICsjZGVmaW5lIEVQX1NUQVRF X0hBTFRFRAkJMg0KPiArI2RlZmluZSBFUF9TVEFURV9TVE9QUEVECTMNCj4gKyNkZWZpbmUgRVBf U1RBVEVfRVJST1IJCTQNCj4gKyNkZWZpbmUgR0VUX0VQX0NUWF9TVEFURShjdHgpCShsZTMyX3Rv X2NwdSgoY3R4KS0+ZXBfaW5mbykgJiBFUF9TVEFURV9NQVNLKQ0KPiArDQo+ICsvKiBNdWx0IC0g TWF4IG51bWJlciBvZiBidXJzdCB3aXRoaW4gYW4gaW50ZXJ2YWwsIGluIEVQIGNvbXBhbmlvbiBk ZXNjLiAqLw0KPiArI2RlZmluZSBFUF9NVUxUKHApCQkJKCgocCkgPDwgOCkgJiBHRU5NQVNLKDks IDgpKQ0KPiArI2RlZmluZSBDVFhfVE9fRVBfTVVMVChwKQkJKCgocCkgJiBHRU5NQVNLKDksIDgp KSA+PiA4KQ0KPiArLyogYml0cyAxMDoxNCBhcmUgTWF4IFByaW1hcnkgU3RyZWFtcy4gKi8NCj4g Ky8qIGJpdCAxNSBpcyBMaW5lYXIgU3RyZWFtIEFycmF5LiAqLw0KPiArLyogSW50ZXJ2YWwgLSBw ZXJpb2QgYmV0d2VlbiByZXF1ZXN0cyB0byBhbiBlbmRwb2ludCAtIDEyNXUgaW5jcmVtZW50cy4g Ki8NCj4gKyNkZWZpbmUgRVBfSU5URVJWQUwocCkJCQkoKChwKSA8PCAxNikgJiBHRU5NQVNLKDIz LCAxNikpDQo+ICsjZGVmaW5lIEVQX0lOVEVSVkFMX1RPX1VGUkFNRVMocCkJKDEgPDwgKCgocCkg JiBHRU5NQVNLKDIzLCAxNikpID4+IDE2KSkNCj4gKyNkZWZpbmUgQ1RYX1RPX0VQX0lOVEVSVkFM KHApCQkoKChwKSAmIEdFTk1BU0soMjMsIDE2KSkgPj4gMTYpDQo+ICsjZGVmaW5lIEVQX01BWFBT VFJFQU1TX01BU0sJCUdFTk1BU0soMTQsIDEwKQ0KPiArI2RlZmluZSBFUF9NQVhQU1RSRUFNUyhw KQkJKCgocCkgPDwgMTApICYgRVBfTUFYUFNUUkVBTVNfTUFTSykNCj4gKyNkZWZpbmUgQ1RYX1RP X0VQX01BWFBTVFJFQU1TKHApCSgoKHApICYgRVBfTUFYUFNUUkVBTVNfTUFTSykgPj4gMTApDQo+ ICsvKiBFbmRwb2ludCBpcyBzZXQgdXAgd2l0aCBhIExpbmVhciBTdHJlYW0gQXJyYXkgKHZzLiBT ZWNvbmRhcnkgU3RyZWFtIEFycmF5KSAqLw0KPiArI2RlZmluZSBFUF9IQVNfTFNBCQkJQklUKDE1 KQ0KPiArDQo+ICsvKiBlcF9pbmZvMiBiaXRtYXNrcyAqLw0KPiArI2RlZmluZSBFUlJPUl9DT1VO VChwKQkJKCgocCkgJiAweDMpIDw8IDEpDQo+ICsjZGVmaW5lIENUWF9UT19FUF9UWVBFKHApCSgo KHApID4+IDMpICYgMHg3KQ0KPiArI2RlZmluZSBFUF9UWVBFKHApCQkoKHApIDw8IDMpDQo+ICsj ZGVmaW5lIElTT0NfT1VUX0VQCQkxDQo+ICsjZGVmaW5lIEJVTEtfT1VUX0VQCQkyDQo+ICsjZGVm aW5lIElOVF9PVVRfRVAJCTMNCj4gKyNkZWZpbmUgQ1RSTF9FUAkJCTQNCj4gKyNkZWZpbmUgSVNP Q19JTl9FUAkJNQ0KPiArI2RlZmluZSBCVUxLX0lOX0VQCQk2DQo+ICsjZGVmaW5lIElOVF9JTl9F UAkJNw0KPiArLyogYml0IDYgcmVzZXJ2ZWQuICovDQo+ICsvKiBiaXQgNyBpcyBEZXZpY2UgSW5p dGlhdGUgRGlzYWJsZSAtIGZvciBkaXNhYmxpbmcgc3RyZWFtIHNlbGVjdGlvbi4gKi8NCj4gKyNk ZWZpbmUgTUFYX0JVUlNUKHApCQkoKChwKSA8PCA4KSAmIEdFTk1BU0soMTUsIDgpKQ0KPiArI2Rl ZmluZSBDVFhfVE9fTUFYX0JVUlNUKHApCSgoKHApICYgR0VOTUFTSygxNSwgOCkpID4+IDgpDQo+ ICsjZGVmaW5lIE1BWF9QQUNLRVQocCkJCSgoKHApIDw8IDE2KSAmIEdFTk1BU0soMzEsIDE2KSkN Cj4gKyNkZWZpbmUgTUFYX1BBQ0tFVF9NQVNLCQlHRU5NQVNLKDMxLCAxNikNCj4gKyNkZWZpbmUg TUFYX1BBQ0tFVF9ERUNPREVEKHApCSgoKHApICYgR0VOTUFTSygzMSwgMTYpKSA+PiAxNikNCj4g Kw0KPiArLyogdHhfaW5mbyBiaXRtYXNrcy4gKi8NCj4gKyNkZWZpbmUgRVBfQVZHX1RSQl9MRU5H VEgocCkJCSgocCkgJiBHRU5NQVNLKDE1LCAwKSkNCj4gKyNkZWZpbmUgRVBfTUFYX0VTSVRfUEFZ TE9BRF9MTyhwKQkoKChwKSA8PCAxNikgJiBHRU5NQVNLKDMxLCAxNikpDQo+ICsjZGVmaW5lIEVQ X01BWF9FU0lUX1BBWUxPQURfSEkocCkJKCgoKHApICYgR0VOTUFTSygyMywgMTYpKSA+PiAxNikg PDwgMjQpDQo+ICsjZGVmaW5lIENUWF9UT19NQVhfRVNJVF9QQVlMT0FEX0xPKHApCSgoKHApICYg R0VOTUFTSygzMSwgMTYpKSA+PiAxNikNCj4gKyNkZWZpbmUgQ1RYX1RPX01BWF9FU0lUX1BBWUxP QURfSEkocCkJKCgocCkgJiBHRU5NQVNLKDMxLCAyNCkpID4+IDI0KQ0KPiArDQo+ICsvKiBkZXEg Yml0bWFza3MuICovDQo+ICsjZGVmaW5lIEVQX0NUWF9DWUNMRV9NQVNLCQlCSVQoMCkNCj4gKyNk ZWZpbmUgQ1RYX0RFUV9NQVNLCQkJKH4weGZMKQ0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBj ZG5zcF9pbnB1dF9jb250cm9sX2NvbnRleHQNCj4gKyAqIElucHV0IGNvbnRyb2wgY29udGV4dDsN Cj4gKyAqDQo+ICsgKiBAZHJvcF9jb250ZXh0OiBTZXQgdGhlIGJpdCBvZiB0aGUgZW5kcG9pbnQg Y29udGV4dCB5b3Ugd2FudCB0byBkaXNhYmxlLg0KPiArICogQGFkZF9jb250ZXh0OiBTZXQgdGhl IGJpdCBvZiB0aGUgZW5kcG9pbnQgY29udGV4dCB5b3Ugd2FudCB0byBlbmFibGUuDQo+ICsgKi8N Cj4gK3N0cnVjdCBjZG5zcF9pbnB1dF9jb250cm9sX2N0eCB7DQo+ICsJX19sZTMyIGRyb3BfZmxh Z3M7DQo+ICsJX19sZTMyIGFkZF9mbGFnczsNCj4gKwlfX2xlMzIgcnN2ZDJbNl07DQo+ICt9Ow0K PiArDQo+ICsvKioNCj4gKyAqIFJlcHJlc2VudHMgZXZlcnl0aGluZyB0aGF0IGlzIG5lZWRlZCB0 byBpc3N1ZSBhIGNvbW1hbmQgb24gdGhlIGNvbW1hbmQgcmluZy4NCj4gKyAqDQo+ICsgKiBAaW5f Y3R4OiBQb2ludGVyIHRvIGlucHV0IGNvbnRleHQgc3RydWN0dXJlLg0KPiArICogQHN0YXR1czog Q29tbWFuZCBDb21wbGV0aW9uIENvZGUgZm9yIGxhc3QgY29tbWFuZC4NCj4gKyAqIEBjb21tYW5k X3RyYjogUG9pbnRlciB0byBjb21tYW5kIFRSQi4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2Nv bW1hbmQgew0KPiArCS8qIElucHV0IGNvbnRleHQgZm9yIGNoYW5naW5nIGRldmljZSBzdGF0ZS4g Ki8NCj4gKwlzdHJ1Y3QgY2Ruc3BfY29udGFpbmVyX2N0eCAqaW5fY3R4Ow0KPiArCXUzMiBzdGF0 dXM7DQo+ICsJdW5pb24gY2Ruc3BfdHJiICpjb21tYW5kX3RyYjsNCj4gK307DQo+ICsNCj4gKy8q Kg0KPiArICogU3RyZWFtIGNvbnRleHQgc3RydWN0dXJlLg0KPiArICoNCj4gKyAqIEBzdHJlYW1f cmluZzogNjQtYml0IHN0cmVhbSByaW5nIGFkZHJlc3MsIGN5Y2xlIHN0YXRlLCBhbmQgc3RyZWFt IHR5cGUuDQo+ICsgKiBAcmVzZXJ2ZWQ6IG9mZnNldCAweDE0IC0gMHgxZiByZXNlcnZlZCBmb3Ig Y29udHJvbGxlciBpbnRlcm5hbCB1c2UuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9zdHJlYW1f Y3R4IHsNCj4gKwlfX2xlNjQgc3RyZWFtX3Jpbmc7DQo+ICsJX19sZTMyIHJlc2VydmVkWzJdOw0K PiArfTsNCj4gKw0KPiArLyogU3RyZWFtIENvbnRleHQgVHlwZXMgLSBiaXRzIDM6MSBvZiBzdHJl YW0gY3R4IGRlcSBwdHIuICovDQo+ICsjZGVmaW5lIFNDVF9GT1JfQ1RYKHApCQkoKChwKSA8PCAx KSAmIEdFTk1BU0soMywgMSkpDQo+ICsvKiBTZWNvbmRhcnkgc3RyZWFtIGFycmF5IHR5cGUsIGRl cXVldWUgcG9pbnRlciBpcyB0byBhIHRyYW5zZmVyIHJpbmcuICovDQo+ICsjZGVmaW5lIFNDVF9T RUNfVFIJCTANCj4gKy8qIFByaW1hcnkgc3RyZWFtIGFycmF5IHR5cGUsIGRlcXVldWUgcG9pbnRl ciBpcyB0byBhIHRyYW5zZmVyIHJpbmcuICovDQo+ICsjZGVmaW5lIFNDVF9QUklfVFIJCTENCj4g Kw0KPiArLyoqDQo+ICsgKiAgc3RydWN0IGNkbnNwX3N0cmVhbV9pbmZvOiBSZXByZXNlbnRpbmcg ZXZlcnl0aGluZyB0aGF0IGlzIG5lZWRlZCB0bw0KPiArICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3VwcG9ydHMgc3RyZWFtIGNhcGFibGUgZW5kcG9pbnRzLg0KPiArICogIEBzdHJlYW1f cmluZ3M6IEFycmF5IG9mIHBvaW50ZXJzIGNvbnRhaW5pbmcgVHJhbnNmZXIgcmluZ3MgZm9yIGFs bA0KPiArICogICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBzdHJlYW1zLg0KPiArICogIEBudW1f c3RyZWFtczogTnVtYmVyIG9mIHN0cmVhbXMsIGluY2x1ZGluZyBzdHJlYW0gMC4NCj4gKyAqICBA c3RyZWFtX2N0eF9hcnJheTogVGhlIHN0cmVhbSBjb250ZXh0IGFycmF5IG1heSBiZSBiaWdnZXIg dGhhbiB0aGUgbnVtYmVyDQo+ICsgKiAgICAgICAgICAgICAgICAgICAgIG9mIHN0cmVhbXMgdGhl IGRyaXZlciBhc2tlZCBmb3IuDQo+ICsgKiAgQG51bV9zdHJlYW1fY3R4czogTnVtYmVyIG9mIHN0 cmVhbXMuDQo+ICsgKiAgQGN0eF9hcnJheV9kbWE6IERtYSBhZGRyZXNzIG9mIENvbnRleHQgU3Ry ZWFtIEFycmF5Lg0KPiArICogIEB0cmJfYWRkcmVzc19tYXA6IEZvciBtYXBwaW5nIHBoeXNpY2Fs IFRSQiBhZGRyZXNzZXMgdG8gc2VnbWVudHMgaW4NCj4gKyAqICAgICAgICAgICAgICAgICAgICBz dHJlYW0gcmluZ3MuDQo+ICsgKiAgQHRkX2NvdW50OiBOdW1iZXIgb2YgVERzIGFzc29jaWF0ZWQg d2l0aCBlbmRwb2ludC4NCj4gKyAqICBAZmlyc3RfcHJpbWVfZGV0OiBGaXJzdCBQUklNRSBwYWNr ZXQgZGV0ZWN0ZWQuDQo+ICsgKiAgQGRyYmxzX2NvdW50OiBOdW1iZXIgb2YgYWxsb3dlZCBkb29y YmVsbHMuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9zdHJlYW1faW5mbyB7DQo+ICsJc3RydWN0 IGNkbnNwX3JpbmcgKipzdHJlYW1fcmluZ3M7DQo+ICsJdW5zaWduZWQgaW50IG51bV9zdHJlYW1z Ow0KPiArCXN0cnVjdCBjZG5zcF9zdHJlYW1fY3R4ICpzdHJlYW1fY3R4X2FycmF5Ow0KPiArCXVu c2lnbmVkIGludCBudW1fc3RyZWFtX2N0eHM7DQo+ICsJZG1hX2FkZHJfdCBjdHhfYXJyYXlfZG1h Ow0KPiArCXN0cnVjdCByYWRpeF90cmVlX3Jvb3QgdHJiX2FkZHJlc3NfbWFwOw0KPiArCWludCB0 ZF9jb3VudDsNCj4gKwl1OCBmaXJzdF9wcmltZV9kZXQ7DQo+ICsjZGVmaW5lIFNUUkVBTV9EUkJM X0ZJRk9fREVQVEggMg0KPiArCXU4IGRyYmxzX2NvdW50Ow0KPiArfTsNCj4gKw0KPiArI2RlZmlu ZSBTVFJFQU1fTE9HX1NUUkVBTVMgNA0KPiArI2RlZmluZSBTVFJFQU1fTlVNX1NUUkVBTVMgQklU KFNUUkVBTV9MT0dfU1RSRUFNUykNCj4gKw0KPiArI2lmIFNUUkVBTV9MT0dfU1RSRUFNUyA+IDE2 ICYmIFNUUkVBTV9MT0dfU1RSRUFNUyA8IDENCj4gKyNlcnJvciAiTm90IHN1dXBwb3J0ZWQgc3Ry ZWFtIHZhbHVlIg0KPiArI2VuZGlmDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2Vw IC0gZXh0ZW5kZWQgZGV2aWNlIHNpZGUgcmVwcmVzZW50YXRpb24gb2YgVVNCIGVuZHBvaW50Lg0K PiArICogQGVuZHBvaW50OiB1c2IgZW5kcG9pbnQNCj4gKyAqIEBwZW5kaW5nX3JlcV9saXN0OiBM aXN0IG9mIHJlcXVlc3RzIHF1ZXVpbmcgb24gdHJhbnNmZXIgcmluZy4NCj4gKyAqIEBwZGV2OiBE ZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZW5kcG9pbnQuDQo+ICsgKiBAbnVtYmVyOiBFbmRw b2ludCBudW1iZXIgKDEgLSAxNSkuDQo+ICsgKiBpZHg6IFRoZSBkZXZpY2UgY29udGV4dCBpbmRl eCAoRENJKS4NCj4gKyAqIGludGVydmFsOiBJbnRlcnZhbCBiZXR3ZWVuIHBhY2tldHMgdXNlZCBm b3IgSVNPQyBlbmRwb2ludC4NCj4gKyAqIEBuYW1lOiBBIGh1bWFuIHJlYWRhYmxlIG5hbWUgZS5n LiBlcDFvdXQuDQo+ICsgKiBAZGlyZWN0aW9uOiBFbmRwb2ludCBkaXJlY3Rpb24uDQo+ICsgKiBA YnVmZmVyaW5nOiBOdW1iZXIgb2Ygb24tY2hpcCBidWZmZXJzIHJlbGF0ZWQgdG8gZW5kcG9pbnQu DQo+ICsgKiBAYnVmZmVyaW5nX3BlcmlvZDsgTnVtYmVyIG9mIG9uLWNoaXAgYnVmZmVycyByZWxh dGVkIHRvIHBlcmlvZGljIGVuZHBvaW50Lg0KPiArICogQGluX2N0eDogUG9pbnRlciB0byBpbnB1 dCBlbmRwb2ludCBjb250ZXh0IHN0cnVjdHVyZS4NCj4gKyAqIEBvdXRfY3R4OiBQb2ludGVyIHRv IG91dHB1dCBlbmRwb2ludCBjb250ZXh0IHN0cnVjdHVyZS4NCj4gKyAqIEByaW5nOiBQb2ludGVy IHRvIHRyYW5zZmVyIHJpbmcuDQo+ICsgKiBAc3RyZWFtX2luZm86IEhvbGQgc3RyZWFtIGluZm9y bWF0aW9uLg0KPiArICogQGVwX3N0YXRlOiBDdXJyZW50IHN0YXRlIG9mIGVuZHBvaW50Lg0KPiAr ICogc2tpcDogU29tZXRpbWVzIHRoZSBjb250cm9sbGVyIGNhbiBub3QgcHJvY2VzcyBpc29jaHJv bm91cyBlbmRwb2ludCByaW5nDQo+ICsgKiAgICAgICBxdWlja2x5IGVub3VnaCwgYW5kIGl0IHdp bGwgbWlzcyBzb21lIGlzb2MgdGRzIG9uIHRoZSByaW5nIGFuZA0KPiArICogICAgICAgZ2VuZXJh dGUgTWlzc2VkIFNlcnZpY2UgRXJyb3IgRXZlbnQuDQo+ICsgKiAgICAgICBTZXQgc2tpcCBmbGFn IHdoZW4gcmVjZWl2ZSBhIE1pc3NlZCBTZXJ2aWNlIEVycm9yIEV2ZW50IGFuZA0KPiArICogICAg ICAgcHJvY2VzcyB0aGUgbWlzc2VkIHRkcyBvbiB0aGUgZW5kcG9pbnQgcmluZy4NCj4gKyAqLw0K PiArc3RydWN0IGNkbnNwX2VwIHsNCj4gKwlzdHJ1Y3QgdXNiX2VwIGVuZHBvaW50Ow0KPiArCXN0 cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19saXN0Ow0KPiArCXN0cnVjdCBjZG5zcF9kZXZpY2UgKnBk ZXY7DQo+ICsJdTggbnVtYmVyOw0KPiArCXU4IGlkeDsNCj4gKwl1MzIgaW50ZXJ2YWw7DQo+ICsJ Y2hhciBuYW1lWzIwXTsNCj4gKwl1OCBkaXJlY3Rpb247DQo+ICsJdTggYnVmZmVyaW5nOw0KPiAr CXU4IGJ1ZmZlcmluZ19wZXJpb2Q7DQo+ICsJc3RydWN0IGNkbnNwX2VwX2N0eCAqaW5fY3R4Ow0K PiArCXN0cnVjdCBjZG5zcF9lcF9jdHggKm91dF9jdHg7DQo+ICsJc3RydWN0IGNkbnNwX3Jpbmcg KnJpbmc7DQo+ICsJc3RydWN0IGNkbnNwX3N0cmVhbV9pbmZvIHN0cmVhbV9pbmZvOw0KPiArCXVu c2lnbmVkIGludCBlcF9zdGF0ZTsNCj4gKyNkZWZpbmUgRVBfRU5BQkxFRAkJQklUKDApDQo+ICsj ZGVmaW5lIEVQX0RJU19JTl9SUk9HUkVTUwlCSVQoMSkNCj4gKyNkZWZpbmUgRVBfSEFMVEVECQlC SVQoMikNCj4gKyNkZWZpbmUgRVBfU1RPUFBFRAkJQklUKDMpDQo+ICsjZGVmaW5lIEVQX1dFREdF CQlCSVQoNCkNCj4gKyNkZWZpbmUgRVAwX0hBTFRFRF9TVEFUVVMJQklUKDUpDQo+ICsjZGVmaW5l IEVQX0hBU19TVFJFQU1TCQlCSVQoNikNCj4gKw0KPiArCWJvb2wgc2tpcDsNCj4gK307DQo+ICsN Cj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2RldmljZV9jb250ZXh0X2FycmF5DQo+ICsgKiBA ZGV2X2NvbnRleHRfcHRyOiBBcnJheSBvZiA2NC1iaXQgRE1BIGFkZHJlc3NlcyBmb3IgZGV2aWNl IGNvbnRleHRzLg0KPiArICogQGRtYTogRE1BIGFkZHJlc3MgZm9yIGRldmljZSBjb250ZXh0cyBz dHJ1Y3R1cmUuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9kZXZpY2VfY29udGV4dF9hcnJheSB7 DQo+ICsJX19sZTY0IGRldl9jb250ZXh0X3B0cnNbQ0ROU1BfREVWX01BWF9TTE9UUyArIDFdOw0K PiArCWRtYV9hZGRyX3QgZG1hOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ru c3BfdHJhbnNmZXJfZXZlbnQuDQo+ICsgKiBAYnVmZmVyOiA2NC1iaXQgYnVmZmVyIGFkZHJlc3Ms IG9yIGltbWVkaWF0ZSBkYXRhLg0KPiArICogQHRyYW5zZmVyX2xlbjogRGF0YSBsZW5ndGggdHJh bnNmZXJyZWQuDQo+ICsgKiBAZmxhZ3M6IEZpZWxkIGlzIGludGVycHJldGVkIGRpZmZlcmVudGx5 IGJhc2VkIG9uIHRoZSB0eXBlIG9mIFRSQi4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3RyYW5z ZmVyX2V2ZW50IHsNCj4gKwlfX2xlNjQgYnVmZmVyOw0KPiArCV9fbGUzMiB0cmFuc2Zlcl9sZW47 DQo+ICsJX19sZTMyIGZsYWdzOw0KPiArfTsNCj4gKw0KPiArLyogSW52YWxpZGF0ZSBldmVudCBh ZnRlciBkaXNhYmxpbmcgZW5kcG9pbnQuICovDQo+ICsjZGVmaW5lIFRSQl9FVkVOVF9JTlZBTElE QVRFIDgNCj4gKw0KPiArLyogVHJhbnNmZXIgZXZlbnQgVFJCIGxlbmd0aCBiaXQgbWFzay4gKi8N Cj4gKy8qIGJpdHMgMDoyMyAqLw0KPiArI2RlZmluZSBFVkVOVF9UUkJfTEVOKHApCQkJKChwKSAm IEdFTk1BU0soMjMsIDApKQ0KPiArLyogQ29tcGxldGlvbiBDb2RlIC0gb25seSBhcHBsaWNhYmxl IGZvciBzb21lIHR5cGVzIG9mIFRSQnMgKi8NCj4gKyNkZWZpbmUgQ09NUF9DT0RFX01BU0sJCQkJ KDB4ZmYgPDwgMjQpDQo+ICsjZGVmaW5lIEdFVF9DT01QX0NPREUocCkJCQkoKChwKSAmIENPTVBf Q09ERV9NQVNLKSA+PiAyNCkNCj4gKyNkZWZpbmUgQ09NUF9JTlZBTElECQkJCTANCj4gKyNkZWZp bmUgQ09NUF9TVUNDRVNTCQkJCTENCj4gKyNkZWZpbmUgQ09NUF9EQVRBX0JVRkZFUl9FUlJPUgkJ CTINCj4gKyNkZWZpbmUgQ09NUF9CQUJCTEVfREVURUNURURfRVJST1IJCTMNCj4gKyNkZWZpbmUg Q09NUF9UUkJfRVJST1IJCQkJNQ0KPiArI2RlZmluZSBDT01QX1JFU09VUkNFX0VSUk9SCQkJNw0K PiArI2RlZmluZSBDT01QX05PX1NMT1RTX0FWQUlMQUJMRV9FUlJPUgkJOQ0KPiArI2RlZmluZSBD T01QX0lOVkFMSURfU1RSRUFNX1RZUEVfRVJST1IJCTEwDQo+ICsjZGVmaW5lIENPTVBfU0xPVF9O T1RfRU5BQkxFRF9FUlJPUgkJMTENCj4gKyNkZWZpbmUgQ09NUF9FTkRQT0lOVF9OT1RfRU5BQkxF RF9FUlJPUgkJMTINCj4gKyNkZWZpbmUgQ09NUF9TSE9SVF9QQUNLRVQJCQkxMw0KPiArI2RlZmlu ZSBDT01QX1JJTkdfVU5ERVJSVU4JCQkxNA0KPiArI2RlZmluZSBDT01QX1JJTkdfT1ZFUlJVTgkJ CTE1DQo+ICsjZGVmaW5lIENPTVBfVkZfRVZFTlRfUklOR19GVUxMX0VSUk9SCQkxNg0KPiArI2Rl ZmluZSBDT01QX1BBUkFNRVRFUl9FUlJPUgkJCTE3DQo+ICsjZGVmaW5lIENPTVBfQ09OVEVYVF9T VEFURV9FUlJPUgkJMTkNCj4gKyNkZWZpbmUgQ09NUF9FVkVOVF9SSU5HX0ZVTExfRVJST1IJCTIx DQo+ICsjZGVmaW5lIENPTVBfSU5DT01QQVRJQkxFX0RFVklDRV9FUlJPUgkJMjINCj4gKyNkZWZp bmUgQ09NUF9NSVNTRURfU0VSVklDRV9FUlJPUgkJMjMNCj4gKyNkZWZpbmUgQ09NUF9DT01NQU5E X1JJTkdfU1RPUFBFRAkJMjQNCj4gKyNkZWZpbmUgQ09NUF9DT01NQU5EX0FCT1JURUQJCQkyNQ0K PiArI2RlZmluZSBDT01QX1NUT1BQRUQJCQkJMjYNCj4gKyNkZWZpbmUgQ09NUF9TVE9QUEVEX0xF TkdUSF9JTlZBTElECQkyNw0KPiArI2RlZmluZSBDT01QX1NUT1BQRURfU0hPUlRfUEFDS0VUCQky OA0KPiArI2RlZmluZSBDT01QX01BWF9FWElUX0xBVEVOQ1lfVE9PX0xBUkdFX0VSUk9SCTI5DQo+ ICsjZGVmaW5lIENPTVBfSVNPQ0hfQlVGRkVSX09WRVJSVU4JCTMxDQo+ICsjZGVmaW5lIENPTVBf RVZFTlRfTE9TVF9FUlJPUgkJCTMyDQo+ICsjZGVmaW5lIENPTVBfVU5ERUZJTkVEX0VSUk9SCQkJ MzMNCj4gKyNkZWZpbmUgQ09NUF9JTlZBTElEX1NUUkVBTV9JRF9FUlJPUgkJMzQNCj4gKw0KPiAr LypUcmFuc2ZlciBFdmVudCBOUkRZIGJpdCBmaWVsZHMgKi8NCj4gKyNkZWZpbmUgVFJCX1RPX0RF Vl9TVFJFQU0ocCkJCQkoKHApICYgR0VOTUFTSygxNiwgMCkpDQo+ICsjZGVmaW5lIFRSQl9UT19I T1NUX1NUUkVBTShwKQkJCSgocCkgJiBHRU5NQVNLKDE2LCAwKSkNCj4gKyNkZWZpbmUgU1RSRUFN X1BSSU1FX0FDSwkJCTB4RkZGRQ0KPiArI2RlZmluZSBTVFJFQU1fUkVKRUNURUQJCQkJMHhGRkZG DQo+ICsNCj4gKy8qKiBUcmFuc2ZlciBFdmVudCBiaXQgZmllbGRzICoqLw0KPiArI2RlZmluZSBU UkJfVE9fRVBfSUQocCkJCQkJKCgocCkgJiBHRU5NQVNLKDIwLCAxNikpID4+IDE2KQ0KPiArDQo+ ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9saW5rX3RyYg0KPiArICogQHNlZ21lbnRfcHRyOiA2 NC1iaXQgc2VnbWVudCBwb2ludGVyLg0KPiArICogQGludHJfdGFyZ2V0OiBJbnRlcnJ1cHRlciB0 YXJnZXQuDQo+ICsgKiBAY29udHJvbDogRmxhZ3MuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9s aW5rX3RyYiB7DQo+ICsJX19sZTY0IHNlZ21lbnRfcHRyOw0KPiArCV9fbGUzMiBpbnRyX3Rhcmdl dDsNCj4gKwlfX2xlMzIgY29udHJvbDsNCj4gK307DQo+ICsNCj4gKy8qIGNvbnRyb2wgYml0Zmll bGRzICovDQo+ICsjZGVmaW5lIExJTktfVE9HR0xFCUJJVCgxKQ0KPiArDQo+ICsvKioNCj4gKyAq IHN0cnVjdCBjZG5zcF9ldmVudF9jbWQgLSBDb21tYW5kIGNvbXBsZXRpb24gZXZlbnQgVFJCLg0K PiArICogY21kX3RyYjogUG9pbnRlciB0byBjb21tYW5kIFRSQiwgb3IgdGhlIHZhbHVlIHBhc3Nl ZCBieSB0aGUgZXZlbnQgZGF0YSB0cmINCj4gKyAqIHN0YXR1czogQ29tbWFuZCBjb21wbGV0aW9u IHBhcmFtZXRlcnMgYW5kIGVycm9yIGNvZGUuDQo+ICsgKiBmbGFnczogRmxhZ3MuDQo+ICsgKi8N Cj4gK3N0cnVjdCBjZG5zcF9ldmVudF9jbWQgew0KPiArCV9fbGU2NCBjbWRfdHJiOw0KPiArCV9f bGUzMiBzdGF0dXM7DQo+ICsJX19sZTMyIGZsYWdzOw0KPiArfTsNCj4gKw0KPiArLyogZmxhZ3Mg Yml0bWFza3MgKi8NCj4gKw0KPiArLyogQWRkcmVzcyBkZXZpY2UgLSBkaXNhYmxlIFNldEFkZHJl c3MuICovDQo+ICsjZGVmaW5lIFRSQl9CU1IJCUJJVCg5KQ0KPiArDQo+ICsvKiBDb25maWd1cmUg RW5kcG9pbnQgLSBEZWNvbmZpZ3VyZS4gKi8NCj4gKyNkZWZpbmUgVFJCX0RDCQlCSVQoOSkNCj4g Kw0KPiArLyogRm9yY2UgSGVhZGVyICovDQo+ICsjZGVmaW5lIFRSQl9GSF9UT19QQUNLRVRfVFlQ RShwKQkoKHApICYgR0VOTUFTSyg0LCAwKSkNCj4gKyNkZWZpbmUgVFJCX0ZIX1RSX1BBQ0tFVAkJ MHg0DQo+ICsjZGVmaW5lIFRSQl9GSF9UT19ERVZJQ0VfQUREUkVTUyhwKQkoKChwKSA8PCAyNSkg JiBHRU5NQVNLKDMxLCAyNSkpDQo+ICsjZGVmaW5lIFRSQl9GSF9UUl9QQUNLRVRfREVWX05PVAkw eDYNCj4gKyNkZWZpbmUgVFJCX0ZIX1RPX05PVF9UWVBFKHApCQkoKChwKSA8PCA0KSAmIEdFTk1B U0soNywgNCkpDQo+ICsjZGVmaW5lIFRSQl9GSF9UUl9QQUNLRVRfRlVOQ1RJT05fV0FLRQkweDEN Cj4gKyNkZWZpbmUgVFJCX0ZIX1RPX0lOVEVSRkFDRShwKQkJKCgocCkgPDwgOCkgJiBHRU5NQVNL KDE1LCA4KSkNCj4gKw0KPiArZW51bSBjZG5zcF9zZXR1cF9kZXYgew0KPiArCVNFVFVQX0NPTlRF WFRfT05MWSwNCj4gKwlTRVRVUF9DT05URVhUX0FERFJFU1MsDQo+ICt9Ow0KPiArDQo+ICsvKiBi aXRzIDI0OjMxIGFyZSB0aGUgc2xvdCBJRC4gKi8NCj4gKyNkZWZpbmUgVFJCX1RPX1NMT1RfSUQo cCkJCSgoKHApICYgR0VOTUFTSygzMSwgMjQpKSA+PiAyNCkNCj4gKyNkZWZpbmUgU0xPVF9JRF9G T1JfVFJCKHApCQkoKChwKSA8PCAyNCkgJiBHRU5NQVNLKDMxLCAyNCkpDQo+ICsNCj4gKy8qIFN0 b3AgRW5kcG9pbnQgVFJCIC0gZXBfaW5kZXggdG8gZW5kcG9pbnQgSUQgZm9yIHRoaXMgVFJCLiAq Lw0KPiArI2RlZmluZSBUUkJfVE9fRVBfSU5ERVgocCkJCSgoKChwKSAmICgweDFmIDw8IDE2KSkg Pj4gMTYpKQ0KZGl0dG8NCj4gKw0KPiArI2RlZmluZSBFUF9JRF9GT1JfVFJCKHApCQkoKCgocCkg KyAxKSA8PCAxNikgJiBHRU5NQVNLKDIwLCAxNikpDQo+ICsNCj4gKyNkZWZpbmUgU1VTUEVORF9Q T1JUX0ZPUl9UUkIocCkJCSgoKHApICYgMSkgPDwgMjMpDQo+ICsjZGVmaW5lIFRSQl9UT19TVVNQ RU5EX1BPUlQocCkJCSgoKHApICYgKDEgPDwgMjMpKSA+PiAyMykNCmRpdHRvDQo+ICsjZGVmaW5l IExBU1RfRVBfSU5ERVgJCQkzMA0KPiArDQo+ICsvKiBTZXQgVFIgRGVxdWV1ZSBQb2ludGVyIGNv bW1hbmQgVFJCIGZpZWxkcy4gKi8NCj4gKyNkZWZpbmUgVFJCX1RPX1NUUkVBTV9JRChwKQkJKCgo KHApICYgR0VOTUFTSygzMSwgMTYpKSA+PiAxNikpDQo+ICsjZGVmaW5lIFNUUkVBTV9JRF9GT1Jf VFJCKHApCQkoKCgocCkpIDw8IDE2KSAmIEdFTk1BU0soMzEsIDE2KSkNCj4gKyNkZWZpbmUgU0NU X0ZPUl9UUkIocCkJCQkoKChwKSA8PCAxKSAmIDB4NykNCj4gKw0KPiArLyogTGluayBUUkIgc3Bl Y2lmaWMgZmllbGRzLiAqLw0KPiArI2RlZmluZSBUUkJfVEMJCQkJQklUKDEpDQo+ICsNCj4gKy8q IFBvcnQgU3RhdHVzIENoYW5nZSBFdmVudCBUUkIgZmllbGRzLiAqLw0KPiArLyogUG9ydCBJRCAt IGJpdHMgMzE6MjQuICovDQo+ICsjZGVmaW5lIEdFVF9QT1JUX0lEKHApCQkJKCgocCkgJiBHRU5N QVNLKDMxLCAyNCkpID4+IDI0KQ0KPiArI2RlZmluZSBTRVRfUE9SVF9JRChwKQkJCSgoKHApIDw8 IDI0KSAmIEdFTk1BU0soMzEsIDI0KSkNCj4gKyNkZWZpbmUgRVZFTlRfREFUQQkJCUJJVCgyKQ0K PiArDQo+ICsvKiBOb3JtYWwgVFJCIGZpZWxkcy4gKi8NCj4gKy8qIHRyYW5zZmVyX2xlbiBiaXRt YXNrcyAtIGJpdHMgMDoxNi4gKi8NCj4gKyNkZWZpbmUgVFJCX0xFTihwKQkJCSgocCkgJiBHRU5N QVNLKDE2LCAwKSkNCj4gKy8qIFREIFNpemUsIHBhY2tldHMgcmVtYWluaW5nIGluIHRoaXMgVEQs IGJpdHMgMjE6MTcgKDUgYml0cywgc28gbWF4IDMxKS4gKi8NCj4gKyNkZWZpbmUgVFJCX1REX1NJ WkUocCkJCQkobWluKChwKSwgKHUzMikzMSkgPDwgMTcpDQo+ICsjZGVmaW5lIEdFVF9URF9TSVpF KHApCQkJKCgocCkgJiBHRU5NQVNLKDIxLCAxNykpID4+IDE3KQ0KPiArLyoNCj4gKyAqIENvbnRy b2xsZXIgdXNlcyB0aGUgVERfU0laRSBmaWVsZCBmb3IgVEJDIGlmIEV4dGVuZGVkIFRCQw0KPiAr ICogaXMgZW5hYmxlZCAoRVRFKS4NCj4gKyAqLw0KPiArI2RlZmluZSBUUkJfVERfU0laRV9UQkMo cCkJCShtaW4oKHApLCAodTMyKTMxKSA8PCAxNykNCj4gKy8qIEludGVycnVwdGVyIFRhcmdldCAt IHdoaWNoIE1TSS1YIHZlY3RvciB0byB0YXJnZXQgdGhlIGNvbXBsZXRpb24gZXZlbnQgYXQuICov DQo+ICsjZGVmaW5lIFRSQl9JTlRSX1RBUkdFVChwKQkJKCgocCkgPDwgMjIpICYgR0VOTUFTSygz MSwgMjIpKQ0KPiArI2RlZmluZSBHRVRfSU5UUl9UQVJHRVQocCkJCSgoKHApICYgR0VOTUFTSygz MSwgMjIpKSA+PiAyMikNCj4gKy8qDQo+ICsgKiBUb3RhbCBidXJzdCBjb3VudCBmaWVsZCwgUnN2 ZHogb24gY29udHJvbGxlciB3aXRoIEV4dGVuZGVkIFRCQw0KPiArICogZW5hYmxlZCAoRVRFKS4N Cj4gKyAqLw0KPiArI2RlZmluZSBUUkJfVEJDKHApCQkJKCgocCkgJiAweDMpIDw8IDcpDQo+ICsj ZGVmaW5lIFRSQl9UTEJQQyhwKQkJCSgoKHApICYgMHhmKSA8PCAxNikNCj4gKw0KPiArLyogQ3lj bGUgYml0IC0gaW5kaWNhdGVzIFRSQiBvd25lcnNoaXAgYnkgZHJpdmVyIG9yIGRyaXZlci4qLw0K PiArI2RlZmluZSBUUkJfQ1lDTEUJCQlCSVQoMCkNCj4gKy8qDQo+ICsgKiBGb3JjZSBuZXh0IGV2 ZW50IGRhdGEgVFJCIHRvIGJlIGV2YWx1YXRlZCBiZWZvcmUgdGFzayBzd2l0Y2guDQo+ICsgKiBV c2VkIHRvIHBhc3MgT1MgZGF0YSBiYWNrIGFmdGVyIGEgVEQgY29tcGxldGVzLg0KPiArICovDQo+ ICsjZGVmaW5lIFRSQl9FTlQJCQkJQklUKDEpDQo+ICsvKiBJbnRlcnJ1cHQgb24gc2hvcnQgcGFj a2V0LiAqLw0KPiArI2RlZmluZSBUUkJfSVNQCQkJCUJJVCgyKQ0KPiArLyogU2V0IFBDSWUgbm8g c25vb3AgYXR0cmlidXRlLiAqLw0KPiArI2RlZmluZSBUUkJfTk9fU05PT1AJCQlCSVQoMykNCj4g Ky8qIENoYWluIG11bHRpcGxlIFRSQnMgaW50byBhIFRELiAqLw0KPiArI2RlZmluZSBUUkJfQ0hB SU4JCQlCSVQoNCkNCj4gKy8qIEludGVycnVwdCBvbiBjb21wbGV0aW9uLiAqLw0KPiArI2RlZmlu ZSBUUkJfSU9DCQkJCUJJVCg1KQ0KPiArLyogVGhlIGJ1ZmZlciBwb2ludGVyIGNvbnRhaW5zIGlt bWVkaWF0ZSBkYXRhLiAqLw0KPiArI2RlZmluZSBUUkJfSURUCQkJCUJJVCg2KQ0KPiArLyogMCAt IE5SRFkgZHVyaW5nIGRhdGEgc3RhZ2UsIDEgLSBOUkRZIGR1cmluZyBzdGF0dXMgc3RhZ2UgKG9u bHkgY29udHJvbCkuICovDQo+ICsjZGVmaW5lIFRSQl9TVEFUCQkJQklUKDcpDQo+ICsvKiBCbG9j ayBFdmVudCBJbnRlcnJ1cHQuICovDQo+ICsjZGVmaW5lIFRSQl9CRUkJCQkJQklUKDkpDQo+ICsN Cj4gKy8qIENvbnRyb2wgdHJhbnNmZXIgVFJCIHNwZWNpZmljIGZpZWxkcy4gKi8NCj4gKyNkZWZp bmUgVFJCX0RJUl9JTgkJCUJJVCgxNikNCj4gKw0KPiArLyogVFJCIGJpdCBtYXNrIGluIERhdGEg U3RhZ2UgVFJCICovDQo+ICsjZGVmaW5lIFRSQl9TRVRVUElEX0JJVE1BU0sJCUdFTk1BU0soOSwg OCkNCj4gKyNkZWZpbmUgVFJCX1NFVFVQSUQocCkJCQkoKHApIDw8IDgpDQo+ICsjZGVmaW5lIFRS Ql9TRVRVUElEX1RPX1RZUEUocCkJCSgoKHApICYgVFJCX1NFVFVQSURfQklUTUFTSykgPj4gOCkN Cj4gKw0KPiArI2RlZmluZSBUUkJfU0VUVVBfU1BFRURJRF9VU0IzCQkweDENCj4gKyNkZWZpbmUg VFJCX1NFVFVQX1NQRUVESURfVVNCMgkJMHgwDQo+ICsjZGVmaW5lIFRSQl9TRVRVUF9TUEVFRElE KHApCQkoKHApICYgKDEgPDwgNykpDQo+ICsNCj4gKyNkZWZpbmUgVFJCX1NFVFVQU1RBVF9BQ0sJ CTB4MQ0KPiArI2RlZmluZSBUUkJfU0VUVVBTVEFUX1NUQUxMCQkweDANCj4gKyNkZWZpbmUgVFJC X1NFVFVQU1RBVChwKQkJKChwKSA8PCA2KQ0KPiArDQo+ICsvKiBJc29jaHJvbm91cyBUUkIgc3Bl Y2lmaWMgZmllbGRzICovDQo+ICsjZGVmaW5lIFRSQl9TSUEJCQkJQklUKDMxKQ0KPiArI2RlZmlu ZSBUUkJfRlJBTUVfSUQocCkJCQkoKChwKSA8PCAyMCkgJiBHRU5NQVNLKDMwLCAyMCkpDQo+ICsN Cj4gK3N0cnVjdCBjZG5zcF9nZW5lcmljX3RyYiB7DQo+ICsJX19sZTMyIGZpZWxkWzRdOw0KPiAr fTsNCj4gKw0KPiArdW5pb24gY2Ruc3BfdHJiIHsNCj4gKwlzdHJ1Y3QgY2Ruc3BfbGlua190cmIg bGluazsNCj4gKwlzdHJ1Y3QgY2Ruc3BfdHJhbnNmZXJfZXZlbnQgdHJhbnNfZXZlbnQ7DQo+ICsJ c3RydWN0IGNkbnNwX2V2ZW50X2NtZCBldmVudF9jbWQ7DQo+ICsJc3RydWN0IGNkbnNwX2dlbmVy aWNfdHJiIGdlbmVyaWM7DQo+ICt9Ow0KPiArDQo+ICsvKiBUUkIgYml0IG1hc2suICovDQo+ICsj ZGVmaW5lIFRSQl9UWVBFX0JJVE1BU0sJR0VOTUFTSygxNSwgMTApDQo+ICsjZGVmaW5lIFRSQl9U WVBFKHApCQkoKHApIDw8IDEwKQ0KPiArI2RlZmluZSBUUkJfRklFTERfVE9fVFlQRShwKQkoKChw KSAmIFRSQl9UWVBFX0JJVE1BU0spID4+IDEwKQ0KPiArDQo+ICsvKiBUUkIgdHlwZSBJRHMuICov DQo+ICsvKiBidWxrLCBpbnRlcnJ1cHQsIGlzb2Mgc2NhdHRlci9nYXRoZXIsIGFuZCBjb250cm9s IGRhdGEgc3RhZ2UuICovDQo+ICsjZGVmaW5lIFRSQl9OT1JNQUwJCTENCj4gKy8qIFNldHVwIFN0 YWdlIGZvciBjb250cm9sIHRyYW5zZmVycy4gKi8NCj4gKyNkZWZpbmUgVFJCX1NFVFVQCQkyDQo+ ICsvKiBEYXRhIFN0YWdlIGZvciBjb250cm9sIHRyYW5zZmVycy4gKi8NCj4gKyNkZWZpbmUgVFJC X0RBVEEJCTMNCj4gKy8qIFN0YXR1cyBTdGFnZSBmb3IgY29udHJvbCB0cmFuc2ZlcnMuICovDQo+ ICsjZGVmaW5lIFRSQl9TVEFUVVMJCTQNCj4gKy8qIElTT0MgdHJhbnNmZXJzLiAqLw0KPiArI2Rl ZmluZSBUUkJfSVNPQwkJNQ0KPiArLyogVFJCIGZvciBsaW5raW5nIHJpbmcgc2VnbWVudHMuICov DQo+ICsjZGVmaW5lIFRSQl9MSU5LCQk2DQo+ICsjZGVmaW5lIFRSQl9FVkVOVF9EQVRBCQk3DQo+ ICsvKiBUcmFuc2ZlciBSaW5nIE5vLW9wIChub3QgZm9yIHRoZSBjb21tYW5kIHJpbmcpLiAqLw0K PiArI2RlZmluZSBUUkJfVFJfTk9PUAkJOA0KPiArDQo+ICsvKiBDb21tYW5kIFRSQnMgKi8NCj4g Ky8qIEVuYWJsZSBTbG90IENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9FTkFCTEVfU0xPVAkJ OQ0KPiArLyogRGlzYWJsZSBTbG90IENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9ESVNBQkxF X1NMT1QJMTANCj4gKy8qIEFkZHJlc3MgRGV2aWNlIENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRS Ql9BRERSX0RFVgkJMTENCj4gKy8qIENvbmZpZ3VyZSBFbmRwb2ludCBDb21tYW5kLiAqLw0KPiAr I2RlZmluZSBUUkJfQ09ORklHX0VQCQkxMg0KPiArLyogRXZhbHVhdGUgQ29udGV4dCBDb21tYW5k LiAqLw0KPiArI2RlZmluZSBUUkJfRVZBTF9DT05URVhUCTEzDQo+ICsvKiBSZXNldCBFbmRwb2lu dCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfUkVTRVRfRVAJCTE0DQo+ICsvKiBTdG9wIFRy YW5zZmVyIFJpbmcgQ29tbWFuZC4gKi8NCj4gKyNkZWZpbmUgVFJCX1NUT1BfUklORwkJMTUNCj4g Ky8qIFNldCBUcmFuc2ZlciBSaW5nIERlcXVldWUgUG9pbnRlciBDb21tYW5kLiAqLw0KPiArI2Rl ZmluZSBUUkJfU0VUX0RFUQkJMTYNCj4gKy8qIFJlc2V0IERldmljZSBDb21tYW5kLiAqLw0KPiAr I2RlZmluZSBUUkJfUkVTRVRfREVWCQkxNw0KPiArLyogRm9yY2UgRXZlbnQgQ29tbWFuZCAob3B0 KS4gKi8NCj4gKyNkZWZpbmUgVFJCX0ZPUkNFX0VWRU5UCQkxOA0KPiArLyogRm9yY2UgSGVhZGVy IENvbW1hbmQgLSBnZW5lcmF0ZSBhIHRyYW5zYWN0aW9uIG9yIGxpbmsgbWFuYWdlbWVudCBwYWNr ZXQuICovDQo+ICsjZGVmaW5lIFRSQl9GT1JDRV9IRUFERVIJMjINCj4gKy8qIE5vLW9wIENvbW1h bmQgLSBub3QgZm9yIHRyYW5zZmVyIHJpbmdzLiAqLw0KPiArI2RlZmluZSBUUkJfQ01EX05PT1AJ CTIzDQo+ICsvKiBUUkIgSURzIDI0LTMxIHJlc2VydmVkLiAqLw0KPiArDQo+ICsvKiBFdmVudCBU UkJTLiAqLw0KPiArLyogVHJhbnNmZXIgRXZlbnQuICovDQo+ICsjZGVmaW5lIFRSQl9UUkFOU0ZF UgkJMzINCj4gKy8qIENvbW1hbmQgQ29tcGxldGlvbiBFdmVudC4gKi8NCj4gKyNkZWZpbmUgVFJC X0NPTVBMRVRJT04JCTMzDQo+ICsvKiBQb3J0IFN0YXR1cyBDaGFuZ2UgRXZlbnQuICovDQo+ICsj ZGVmaW5lIFRSQl9QT1JUX1NUQVRVUwkJMzQNCj4gKy8qIERldmljZSBDb250cm9sbGVyIEV2ZW50 LiAqLw0KPiArI2RlZmluZSBUUkJfSENfRVZFTlQJCTM3DQo+ICsvKiBNRklOREVYIFdyYXAgRXZl bnQgLSBtaWNyb2ZyYW1lIGNvdW50ZXIgd3JhcHBlZC4gKi8NCj4gKyNkZWZpbmUgVFJCX01GSU5E RVhfV1JBUAkzOQ0KPiArLyogVFJCIElEcyA0MC00NyByZXNlcnZlZC4gKi8NCj4gKy8qIEVuZHBv aW50IE5vdCBSZWFkeSBFdmVudC4gKi8NCj4gKyNkZWZpbmUgVFJCX0VORFBPSU5UX05SRFkJNDgN Cj4gKy8qIFRSQiBJRHMgNDktNTMgcmVzZXJ2ZWQuICovDQo+ICsvKiBIYWx0IEVuZHBvaW50IENv bW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9IQUxUX0VORFBPSU5UCTU0DQo+ICsvKiBEb29yYmVs bCBPdmVyZmxvdyBFdmVudC4gKi8NCj4gKyNkZWZpbmUgVFJCX0RSQl9PVkVSRkxPVwk1Nw0KPiAr LyogRmx1c2ggRW5kcG9pbnQgQ29tbWFuZC4gKi8NCj4gKyNkZWZpbmUgVFJCX0ZMVVNIX0VORFBP SU5UCTU4DQo+ICsNCj4gKyNkZWZpbmUgVFJCX1RZUEVfTElOSyh4KQkoKCh4KSAmIFRSQl9UWVBF X0JJVE1BU0spID09IFRSQl9UWVBFKFRSQl9MSU5LKSkNCj4gKyNkZWZpbmUgVFJCX1RZUEVfTElO S19MRTMyKHgpCSgoKHgpICYgY3B1X3RvX2xlMzIoVFJCX1RZUEVfQklUTUFTSykpID09IFwNCj4g KwkJCQkJY3B1X3RvX2xlMzIoVFJCX1RZUEUoVFJCX0xJTkspKSkNCj4gKyNkZWZpbmUgVFJCX1RZ UEVfTk9PUF9MRTMyKHgpCSgoKHgpICYgY3B1X3RvX2xlMzIoVFJCX1RZUEVfQklUTUFTSykpID09 IFwNCj4gKwkJCQkJY3B1X3RvX2xlMzIoVFJCX1RZUEUoVFJCX1RSX05PT1ApKSkNCj4gKw0KPiAr LyoNCj4gKyAqIFRSQlNfUEVSX1NFR01FTlQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuDQo+ICsg KiBUaGUgY29tbWFuZCByaW5nIGlzIDY0LWJ5dGUgYWxpZ25lZCwgc28gaXQgbXVzdCBhbHNvIGJl IGdyZWF0ZXIgdGhhbiAxNi4NCj4gKyAqLw0KPiArI2RlZmluZSBUUkJTX1BFUl9TRUdNRU5UCQky NTYNCj4gKyNkZWZpbmUgVFJCU19QRVJfRVZFTlRfU0VHTUVOVAkJMjU2DQo+ICsjZGVmaW5lIFRS QlNfUEVSX0VWX0RFUV9VUERBVEUJCTEwMA0KPiArI2RlZmluZSBUUkJfU0VHTUVOVF9TSVpFCQko VFJCU19QRVJfU0VHTUVOVCAqIDE2KQ0KPiArI2RlZmluZSBUUkJfU0VHTUVOVF9TSElGVAkJKGls b2cyKFRSQl9TRUdNRU5UX1NJWkUpKQ0KPiArLyogVFJCIGJ1ZmZlciBwb2ludGVycyBjYW4ndCBj cm9zcyA2NEtCIGJvdW5kYXJpZXMuICovDQo+ICsjZGVmaW5lIFRSQl9NQVhfQlVGRl9TSElGVAkJ MTYNCj4gKyNkZWZpbmUgVFJCX01BWF9CVUZGX1NJWkUJCUJJVChUUkJfTUFYX0JVRkZfU0hJRlQp DQo+ICsvKiBIb3cgbXVjaCBkYXRhIGlzIGxlZnQgYmVmb3JlIHRoZSA2NEtCIGJvdW5kYXJ5PyAq Lw0KPiArI2RlZmluZSBUUkJfQlVGRl9MRU5fVVBfVE9fQk9VTkRBUlkoYWRkcikgKFRSQl9NQVhf QlVGRl9TSVpFIC0gXA0KPiArCQkJCQkoKGFkZHIpICYgKFRSQl9NQVhfQlVGRl9TSVpFIC0gMSkp KQ0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9zZWdtZW50IC0gc2VnbWVudCByZWxh dGVkIGRhdGEuDQo+ICsgKiBAdHJiczogQXJyYXkgb2YgVHJhbnNmZXIgUmVxdWVzdCBCbG9ja3Mu DQo+ICsgKiBAbmV4dDogUG9pbnRlciB0byB0aGUgbmV4dCBzZWdtZW50Lg0KPiArICogQGRtYTog RE1BIGFkZHJlc3Mgb2YgY3VycmVudCBzZWdtZW50Lg0KPiArICogQGJvdW5jZV9kbWE6IEJvdW5j ZSAgYnVmZmVyIERNQSBhZGRyZXNzIC4NCj4gKyAqIEBib3VuY2VfYnVmOiBCb3VuY2UgYnVmZmVy IHZpcnR1YWwgYWRkcmVzcy4NCj4gKyAqIGJvdW5jZV9vZmZzOiBCb3VuY2UgYnVmZmVyIG9mZnNl dC4NCj4gKyAqIGJvdW5jZV9sZW46IEJvdW5jZSBidWZmZXIgbGVuZ3RoLg0KPiArICovDQo+ICtz dHJ1Y3QgY2Ruc3Bfc2VnbWVudCB7DQo+ICsJdW5pb24gY2Ruc3BfdHJiICp0cmJzOw0KPiArCXN0 cnVjdCBjZG5zcF9zZWdtZW50ICpuZXh0Ow0KPiArCWRtYV9hZGRyX3QgZG1hOw0KPiArCS8qIE1h eCBwYWNrZXQgc2l6ZWQgYm91bmNlIGJ1ZmZlciBmb3IgdGQtZnJhZ21hbnQgYWxpZ25tZW50ICov DQo+ICsJZG1hX2FkZHJfdCBib3VuY2VfZG1hOw0KPiArCXZvaWQgKmJvdW5jZV9idWY7DQo+ICsJ dW5zaWduZWQgaW50IGJvdW5jZV9vZmZzOw0KPiArCXVuc2lnbmVkIGludCBib3VuY2VfbGVuOw0K PiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfdGQgLSBUcmFuc2ZlciBEZXNj cmlwdG9yIG9iamVjdC4NCj4gKyAqIEB0ZF9saXN0OiBVc2VkIGZvciBiaW5kaW5nIFREIHdpdGgg ZXBfcmluZy0+dGRfbGlzdC4NCj4gKyAqIEBwcmVxOiBSZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCB0 aGlzIFREDQo+ICsgKiBAc3RhcnRfc2VnOiBTZWdtZW50IGNvbnRhaW5pbmcgdGhlIGZpcnN0X3Ry YiBpbiBURC4NCj4gKyAqIEBmaXJzdF90cmI6IEZpcnN0IFRSQiBmb3IgdGhpcyBURC4NCj4gKyAq IEBsYXN0X3RyYjogTGFzdCBUUkIgcmVsYXRlZCB3aXRoIFRELg0KPiArICogQGJvdW5jZV9zZWc6 IEJvdW5jZSBzZWdtZW50IGZvciB0aGlzIFRELg0KPiArICogQHJlcXVlc3RfbGVuZ3RoX3NldDog YWN0dWFsX2xlbmd0aCBvZiB0aGUgcmVxdWVzdCBoYXMgYWxyZWFkeSBiZWVuIHNldC4NCj4gKyAq IEBkcmJsIC0gVEQgaGFzIGJlZW4gYWRkZWQgdG8gSFcgc2NoZWR1bGVyIC0gb25seSBmb3Igc3Ry ZWFtIGNhcGFibGUNCj4gKyAqICAgICAgICAgZW5kcG9pbnRzLg0KPiArICovDQo+ICtzdHJ1Y3Qg Y2Ruc3BfdGQgew0KPiArCXN0cnVjdCBsaXN0X2hlYWQgdGRfbGlzdDsNCj4gKwlzdHJ1Y3QgY2Ru c3BfcmVxdWVzdCAqcHJlcTsNCj4gKwlzdHJ1Y3QgY2Ruc3Bfc2VnbWVudCAqc3RhcnRfc2VnOw0K PiArCXVuaW9uIGNkbnNwX3RyYiAqZmlyc3RfdHJiOw0KPiArCXVuaW9uIGNkbnNwX3RyYiAqbGFz dF90cmI7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKmJvdW5jZV9zZWc7DQo+ICsJYm9vbCBy ZXF1ZXN0X2xlbmd0aF9zZXQ7DQo+ICsJYm9vbCBkcmJsOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ ICsgKiAgc3RydWN0IGNkbnNwX2RlcXVldWVfc3RhdGUgLSBOZXcgZGVxdWV1ZSBwb2ludGVyIGZv ciBUcmFuc2ZlciBSaW5nLg0KICAgIF5eIHJlbW92ZSBvbmUgYmxhbmsgc3BhY2UNCj4gKyAqIEBu ZXdfZGVxX3NlZzogTmV3IGRlcXVldWUgc2VnbWVudC4NCj4gKyAqIEBuZXdfZGVxX3B0cjogTmV3 IGRlcXVldWUgcG9pbnRlci4NCj4gKyAqIEBuZXdfY3ljbGVfc3RhdGU6IE5ldyBjeWNsZSBzdGF0 ZS4NCj4gKyAqIEBzdHJlYW1faWQ6IHN0cmVhbSBpZCBmb3Igd2hpY2ggbmV3IGRlcXVldWUgcG9p bnRlciBoYXMgYmVlbiBzZWxlY3RlZC4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2RlcXVldWVf c3RhdGUgew0KPiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpuZXdfZGVxX3NlZzsNCj4gKwl1bmlv biBjZG5zcF90cmIgKm5ld19kZXFfcHRyOw0KPiArCWludCBuZXdfY3ljbGVfc3RhdGU7DQo+ICsJ dW5zaWduZWQgaW50IHN0cmVhbV9pZDsNCj4gK307DQo+ICsNCj4gK2VudW0gY2Ruc3BfcmluZ190 eXBlIHsNCj4gKwlUWVBFX0NUUkwgPSAwLA0KPiArCVRZUEVfSVNPQywNCj4gKwlUWVBFX0JVTEss DQo+ICsJVFlQRV9JTlRSLA0KPiArCVRZUEVfU1RSRUFNLA0KPiArCVRZUEVfQ09NTUFORCwNCj4g KwlUWVBFX0VWRU5ULA0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3Bfcmlu ZyAtIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdHJhbnNmZXIsIGNvbW1hbmQgb3IgZXZlbnQgcmlu Zy4NCj4gKyAqIEBmaXJzdF9zZWc6IEZpcnN0IHNlZ21lbnQgb24gdHJhbnNmZXIgcmluZy4NCj4g KyAqIEBsYXN0X3NlZzogTGFzdCBzZWdtZW50IG9uIHRyYW5zZmVyIHJpbmcuDQo+ICsgKiBAZW5x dWV1ZTogU1cgZW5xdWV1ZSBwb2ludGVyIGFkZHJlc3MuDQo+ICsgKiBAZW5xX3NlZzogU1cgZW5x dWV1ZSBzZWdtZW50IGFkZHJlc3MuDQo+ICsgKiBAZGVxdWV1ZTogU1cgZGVxdWV1ZSBwb2ludGVy IGFkZHJlc3MuDQo+ICsgKiBAZGVxX3NlZzogU1cgZGVxdWV1ZSBzZWdtZW50IGFkZHJlc3MuDQo+ ICsgKiBAdGRfbGlzdDogdHJhbnNmZXIgZGVzY3JpcHRvciBsaXN0IGFzc29jaWF0ZWQgd2l0aCB0 aGlzIHJpbmcuDQo+ICsgKiBAY3ljbGVfc3RhdGU6IEN1cnJlbnQgY3ljbGUgYml0LiBXcml0ZSB0 aGUgY3ljbGUgc3RhdGUgaW50byB0aGUgVFJCIGN5Y2xlDQo+ICsgKiAgICAgICAgICAgICAgIGZp ZWxkIHRvIGdpdmUgb3duZXJzaGlwIG9mIHRoZSBUUkIgdG8gdGhlIGRldmljZSBjb250cm9sbGVy DQo+ICsgKiAgICAgICAgICAgICAgIChpZiB3ZSBhcmUgdGhlIHByb2R1Y2VyKSBvciB0byBjaGVj ayBpZiB3ZSBvd24gdGhlIFRSQg0KPiArICogICAgICAgICAgICAgICAoaWYgd2UgYXJlIHRoZSBj b25zdW1lcikuDQo+ICsgKiBAc3RyZWFtX2lkOiBTdHJlYW0gaWQNCj4gKyAqIEBzdHJlYW1fYWN0 aXZlOiBTdHJlYW0gaXMgYWN0aXZlIC0gUFJJTUUgcGFja2V0IGhhcyBiZWVuIGRldGVjdGVkLg0K PiArICogQHN0cmVhbV9yZWplY3RlZDogVGhpcyByaW5nIGhhcyBiZWVuIHJlamVjdGVkIGJ5IGhv c3QuDQo+ICsgKiBAbnVtX3RkczogTnVtYmVyIG9mIFREcyBhc3NvY2lhdGVkIHdpdGggcmluZy4N Cj4gKyAqIEBudW1fc2VnczogTnVtYmVyIG9mIHNlZ21lbnRzLg0KPiArICogQG51bV90cmJzX2Zy ZWU6IE51bWJlciBvZiBmcmVlIFRSQnMgb24gdGhlIHJpbmcuDQo+ICsgKiBAYm91bmNlX2J1Zl9s ZW46IExlbmd0aCBvZiBib3VuY2UgYnVmZmVyLg0KPiArICogQHR5cGU6IFJpbmcgdHlwZSAtIGV2 ZW50LCB0cmFuc2Zlciwgb3IgY29tbWFuZCByaW5nLg0KPiArICogQGxhc3RfdGRfd2FzX3Nob3J0 IC0gVEQgaXMgc2hvcnQgVEQuDQo+ICsgKiBAdHJiX2FkZHJlc3NfbWFwOiBGb3IgbWFwcGluZyBw aHlzaWNhbCBUUkIgYWRkcmVzc2VzIHRvIHNlZ21lbnRzIGluDQo+ICsgKiAgICAgICAgICAgICAg ICAgICBzdHJlYW0gcmluZ3MuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9yaW5nIHsNCj4gKwlz dHJ1Y3QgY2Ruc3Bfc2VnbWVudCAqZmlyc3Rfc2VnOw0KPiArCXN0cnVjdCBjZG5zcF9zZWdtZW50 ICpsYXN0X3NlZzsNCj4gKwl1bmlvbiBjZG5zcF90cmIJICplbnF1ZXVlOw0KPiArCXN0cnVjdCBj ZG5zcF9zZWdtZW50ICplbnFfc2VnOw0KPiArCXVuaW9uIGNkbnNwX3RyYgkgKmRlcXVldWU7DQo+ ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKmRlcV9zZWc7DQo+ICsJc3RydWN0IGxpc3RfaGVhZCB0 ZF9saXN0Ow0KPiArCXUzMiBjeWNsZV9zdGF0ZTsNCj4gKwl1bnNpZ25lZCBpbnQgc3RyZWFtX2lk Ow0KPiArCXVuc2lnbmVkIGludCBzdHJlYW1fYWN0aXZlOw0KPiArCXVuc2lnbmVkIGludCBzdHJl YW1fcmVqZWN0ZWQ7DQo+ICsJaW50IG51bV90ZHM7DQo+ICsJdW5zaWduZWQgaW50IG51bV9zZWdz Ow0KPiArCXVuc2lnbmVkIGludCBudW1fdHJic19mcmVlOw0KPiArCXVuc2lnbmVkIGludCBib3Vu Y2VfYnVmX2xlbjsNCj4gKwllbnVtIGNkbnNwX3JpbmdfdHlwZSB0eXBlOw0KPiArCWJvb2wgbGFz dF90ZF93YXNfc2hvcnQ7DQo+ICsJc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqdHJiX2FkZHJlc3Nf bWFwOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfZXJzdF9lbnRyeSAt IGV2ZW4gcmluZyBzZWdtZW50IHRhYmxlIGVudHJ5IG9iamVjdC4NCj4gKyAqIEBzZWdfYWRkcjog NjQtYml0IGV2ZW50IHJpbmcgc2VnbWVudCBhZGRyZXNzLg0KPiArICogc2VnX3NpemU6IE51bWJl ciBvZiBUUkJzIGluIHNlZ21lbnQuOw0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfZXJzdF9lbnRy eSB7DQo+ICsJX19sZTY0IHNlZ19hZGRyOw0KPiArCV9fbGUzMiBzZWdfc2l6ZTsNCj4gKwkvKiBT ZXQgdG8gemVybyAqLw0KPiArCV9fbGUzMiByc3ZkOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsg KiBzdHJ1Y3QgY2Ruc3BfZXJzdCAtIGV2ZW4gcmluZyBzZWdtZW50IHRhYmxlIGZvciBldmVudCBy aW5nLg0KPiArICogQGVudHJpZXM6IEFycmF5IG9mIGV2ZW50IHJpbmcgc2VnbWVudHMNCj4gKyAq IEBudW1fZW50cmllczogTnVtYmVyIG9mIHNlZ21lbnRzIGluIGVudHJpZXMgYXJyYXkuDQo+ICsg KiBAZXJzdF9kbWFfYWRkcjogRE1BIGFkZHJlc3MgZm9yIGVudHJpZXMgYXJyYXkuDQo+ICsgKi8N Cj4gK3N0cnVjdCBjZG5zcF9lcnN0IHsNCj4gKwlzdHJ1Y3QgY2Ruc3BfZXJzdF9lbnRyeSAqZW50 cmllczsNCj4gKwl1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7DQo+ICsJZG1hX2FkZHJfdCBlcnN0 X2RtYV9hZGRyOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfcmVxdWVz dCAtIGV4dGVuZGVkIGRldmljZSBzaWRlIHJlcHJlc2VudGF0aW9uIG9mIHVzYl9yZXF1ZXN0DQo+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCAuDQo+ICsgKiBAdGQ6IFRyYW5zZmVy IGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdC4NCj4gKyAqIEByZXF1ZXN0 OiBHZW5lcmljIHVzYl9yZXF1ZXN0IG9iamVjdCBkZXNjcmliaW5nIHNpbmdsZSBJL08gcmVxdWVz dC4NCj4gKyAqIEBsaXN0OiBVc2VkIHRvIGFkZGluZyByZXF1ZXN0IHRvIGVuZHBvaW50IHBlbmRp bmdfbGlzdC4NCj4gKyAqIEBwZXA6IEV4dGVuZGVkIHJlcHJlc2VudGF0aW9uIG9mIHVzYl9lcCBv YmplY3QNCj4gKyAqIEBlcG51bTogRW5kcG9pbnQgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB1c2Ig cmVxdWVzdC4NCj4gKyAqIEBkaXJlY3Rpb246IEVuZHBvaW50IGRpcmVjdGlvbiBmb3IgdXNiIHJl cXVlc3QuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9yZXF1ZXN0IHsNCj4gKwlzdHJ1Y3QJY2Ru c3BfdGQgdGQ7DQo+ICsJc3RydWN0IHVzYl9yZXF1ZXN0IHJlcXVlc3Q7DQo+ICsJc3RydWN0IGxp c3RfaGVhZCBsaXN0Ow0KPiArCXN0cnVjdCBjZG5zcF9lcAkgKnBlcDsNCj4gKwl1OCBlcG51bTsN Cj4gKwl1bnNpZ25lZCBkaXJlY3Rpb246MTsNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUJRVJTVF9O VU1fU0VHUwkxDQo+ICsNCj4gKy8qIFN0YWdlcyB1c2VkIGR1cmluZyBlbnVtZXJhdGlvbiBwcm9j ZXNzLiovDQo+ICtlbnVtIGNkbnNwX2VwMF9zdGFnZSB7DQo+ICsJQ0ROU1BfU0VUVVBfU1RBR0Us DQo+ICsJQ0ROU1BfREFUQV9TVEFHRSwNCj4gKwlDRE5TUF9TVEFUVVNfU1RBR0UsDQo+ICt9Ow0K PiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9wb3J0IC0gaG9sZHMgaW5mb3JtYXRpb24g YWJvdXQgZGV0ZWN0ZWQgcG9ydHMuDQo+ICsgKiBAcG9ydF9udW06IFBvcnQgbnVtYmVyLg0KPiAr ICogQGV4aXN0OiBJbmRpY2F0ZSBpZiBwb3J0IGV4aXN0Lg0KPiArICogbWFqX3JldjogTWFqb3Ig cmV2aXNpb24uDQo+ICsgKiBtaW5fcmV2OiBNaW5vciByZXZpc2lvbi4NCj4gKyAqLw0KPiArc3Ry dWN0IGNkbnNwX3BvcnQgew0KPiArCXN0cnVjdCBjZG5zcF9wb3J0X3JlZ3MgX19pb21lbSAqcmVn czsNCj4gKwl1OCBwb3J0X251bTsNCj4gKwl1OCBleGlzdDsNCj4gKwl1OCBtYWpfcmV2Ow0KPiAr CXU4IG1pbl9yZXY7DQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5lIENETlNQX0VYVF9QT1JUX01BSk9S KHgpCQkoKCh4KSA+PiAyNCkgJiAweGZmKQ0KPiArI2RlZmluZSBDRE5TUF9FWFRfUE9SVF9NSU5P Uih4KQkJKCgoeCkgPj4gMTYpICYgMHhmZikNCj4gKyNkZWZpbmUgQ0ROU1BfRVhUX1BPUlRfT0ZG KHgpCQkoKHgpICYgMHhmZikNCj4gKyNkZWZpbmUgQ0ROU1BfRVhUX1BPUlRfQ09VTlQoeCkJCSgo KHgpID4+IDgpICYgMHhmZikNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfZGV2aWNl IC0gcmVwcmVzZW50IFVTQiBkZXZpY2UuDQo+ICsgKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBz dHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aGl0IHRoaXMgY29udHJvbGxlci4NCj4gKyAqIEBnYWRnZXQ6 IERldmljZSBzaWRlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwZXJpcGhlcmFsIGNvbnRyb2xsZXIu DQo+ICsgKiBAZ2FkZ2V0X2RyaXZlcjogUG9pbnRlciB0byB0aGUgZ2FkZ2V0IGRyaXZlci4NCj4g KyAqIEBpcnE6IElSUSBsaW5lIG51bWJlciB1c2VkIGJ5IGRldmljZSBzaWRlLg0KPiArICogQHJl Z3M6SU8gZGV2aWNlIG1lbW9yeS4NCj4gKyAqIEBjYXBfcmVnczogQ2FwYWJpbGl0eSByZWdpc3Rl cnMuDQo+ICsgKiBAb3BfcmVnczogT3BlcmF0aW9uYWwgcmVnaXN0ZXJzLg0KPiArICogQHJ1bl9y ZWdzOiBSdW50aW1lIHJlZ2lzdGVycy4NCj4gKyAqIEBkYmE6IERldmljZSBiYXNlIGFkZHJlc3Mg cmVnaXN0ZXIuDQo+ICsgKiBAaXJfc2V0OiBDdXJyZW50IGludGVycnVwdGVyIHJlZ2lzdGVyIHNl dC4NCj4gKyAqIEBwb3J0MjBfcmVnczogUG9ydCAyLjAgUGVyaXBoZXJhbCBDb25maWd1cmF0aW9u IFJlZ2lzdGVycy4NCj4gKyAqIEBwb3J0M3hfcmVnczogVVNCMy54IFBvcnQgUGVyaXBoZXJhbCBD b25maWd1cmF0aW9uIFJlZ2lzdGVycy4NCj4gKyAqIEBoY3NfcGFyYW1zMTogQ2FjaGVkIHJlZ2lz dGVyIGNvcGllcyBvZiByZWFkLW9ubHkgSENTUEFSQU1TMQ0KPiArICogQGhjY19wYXJhbXM6IENh Y2hlZCByZWdpc3RlciBjb3BpZXMgb2YgcmVhZC1vbmx5IEhDQ1BBUkFNUzENCj4gKyAqIEByZXZf Y2FwOiBDb250cm9sbGVyIGNhcGFiaWxpdHkuDQo+ICsgKiBAc2V0dXA6IFRlbXBvcmFyeSBidWZm ZXIgZm9yIHNldHVwIHBhY2tldC4NCj4gKyAqIEBlcDBfcHJlcTogSW50ZXJuYWwgYWxsb2NhdGVk IHJlcXVlc3QgdXNlZCBkdXJpbmcgZW51bWVyYXRpb24uDQo+ICsgKiBAZXAwX3N0YWdlOiBlcDAg c3RhZ2UgZHVyaW5nIGVudW1lcmF0aW9uIHByb2Nlc3MuDQo+ICsgKiBAdGhyZWVfc3RhZ2Vfc2V0 dXA6IFRocmVlIHN0YXRlIG9yIHR3byBzdGF0ZSBzZXR1cC4NCj4gKyAqIEBlcDBfZXhwZWN0X2lu OiBEYXRhIElOIGV4cGVjdGVkIGZvciBjb250cm9sIHRyYW5zZmVyLg0KPiArICogQHNldHVwX2lk OiBTZXR1cCBpZGVudGlmaWVyLg0KPiArICogQHNldHVwX3NwZWVkIC0gU3BlZWQgZGV0ZWN0ZWQg Zm9yIGN1cnJlbnQgU0VUVVAgcGFja2V0Lg0KPiArICogQHNldHVwX2J1ZjogQnVmZmVyIGZvciBT RVRVUCBwYWNrZXQuDQo+ICsgKiBAZGV2aWNlX2FkZHJlc3M6IEN1cnJlbnQgZGV2aWNlIGFkZHJl c3MuDQo+ICsgKiBAbWF5X3dha2V1cDogcmVtb3RlIHdha2V1cCBlbmFibGVkL2Rpc2FibGVkLg0K PiArICogQGxvY2s6IExvY2sgdXNlZCBpbiBpbnRlcnJ1cHQgdGhyZWFkIGNvbnRleHQuDQo+ICsg KiBAaGNpX3ZlcnNpb246IGRldmljZSBjb250cm9sbGVyIHZlcnNpb24uDQo+ICsgKiBAZGNiYWE6 IERldmljZSBjb250ZXh0IGJhc2UgYWRkcmVzcyBhcnJheS4NCj4gKyAqIEBjbWRfcmluZzogQ29t bWFuZCByaW5nLg0KPiArICogQGNtZDogUmVwcmVzZW50IGFsbCB3aGF0IGlzIG5lZWRlZCB0byBp c3N1ZSBjb21tYW5kIG9uIENvbW1hbmQgUmluZy4NCj4gKyAqIEBldmVudF9yaW5nOiBFdmVudCBy aW5nLg0KPiArICogQGVyc3Q6IEV2ZW50IFJpbmcgU2VnbWVudCB0YWJsZQ0KPiArICogQHNsb3Rf aWQ6IEN1cnJlbnQgU2xvdCBJRC4gU2hvdWxkIGJlIDAgb3IgMS4NCj4gKyAqIEBvdXRfY3R4OiBP dXRwdXQgY29udGV4dC4NCj4gKyAqIEBpbl9jdHg6IElucHV0IGNvbnRleHQuDQo+ICsgKiBAZXBz OiBhcnJheSBvZiBlbmRwb2ludHMgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBkZXZpY2UuDQo+ICsg KiBAdXNiMl9od19scG1fY2FwYWJsZTogaGFyZHdhcmUgbHBtIGlzIGVuYWJsZWQ7DQo+ICsgKiBA dTFfYWxsb3dlZDogQWxsb3cgZGV2aWNlIHRyYW5zaXRpb24gdG8gVTEgc3RhdGUuDQo+ICsgKiBA dTJfYWxsb3dlZDogQWxsb3cgZGV2aWNlIHRyYW5zaXRpb24gdG8gVTIgc3RhdGUNCj4gKyAqIEBk ZXZpY2VfcG9vbDogRE1BIHBvb2wgZm9yIGFsbG9jYXRpbmcgaW5wdXQgYW5kIG91dHB1dCBjb250 ZXh0Lg0KPiArICogQHNlZ21lbnRfcG9vbDogRE1BIHBvb2wgZm9yIGFsbG9jYXRpbmcgbmV3IHNl Z21lbnRzLg0KPiArICogQGNkbnNwX3N0YXRlOiBDdXJyZW50IHN0YXRlIG9mIGNvbnRyb2xsZXIu DQo+ICsgKiBAbGlua19zdGF0ZTogQ3VycmVudCBsaW5rIHN0YXRlLg0KPiArICogQHVzYjJfcG9y dCAtIFBvcnQgVVNCIDIuMC4NCj4gKyAqIEB1c2IzX3BvcnQgLSBQb3J0IFVTQiAzLjAuDQo+ICsg KiBAYWN0aXZlX3BvcnQgLSBDdXJyZW50IHNlbGVjdGVkIFBvcnQuDQo+ICsgKiBAdGVzdF9tb2Rl OiBzZWxlY3RlZCBUZXN0IE1vZGUuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9kZXZpY2Ugew0K PiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gKwlzdHJ1Y3QgdXNiX2dhZGdldCBnYWRnZXQ7DQo+ ICsJc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyICpnYWRnZXRfZHJpdmVyOw0KPiArCXVuc2lnbmVk IGludCBpcnE7DQo+ICsJdm9pZCBfX2lvbWVtICpyZWdzOw0KPiArDQo+ICsJLyogUmVnaXN0ZXJz IG1hcCAqLw0KPiArCXN0cnVjdCBjZG5zcF9jYXBfcmVncyBfX2lvbWVtICpjYXBfcmVnczsNCj4g KwlzdHJ1Y3QgY2Ruc3Bfb3BfcmVncyBfX2lvbWVtICpvcF9yZWdzOw0KPiArCXN0cnVjdCBjZG5z cF9ydW5fcmVncyBfX2lvbWVtICpydW5fcmVnczsNCj4gKwlzdHJ1Y3QgY2Ruc3BfZG9vcmJlbGxf YXJyYXkgX19pb21lbSAqZGJhOw0KPiArCXN0cnVjdAljZG5zcF9pbnRyX3JlZyBfX2lvbWVtICpp cl9zZXQ7DQo+ICsJc3RydWN0IGNkbnNwXzIwcG9ydF9jYXAgX19pb21lbSAqcG9ydDIwX3JlZ3M7 DQo+ICsJc3RydWN0IGNkbnNwXzN4cG9ydF9jYXAgX19pb21lbSAqcG9ydDN4X3JlZ3M7DQo+ICsN Cj4gKwkvKiBDYWNoZWQgcmVnaXN0ZXIgY29waWVzIG9mIHJlYWQtb25seSBDRE5TUCBkYXRhICov DQo+ICsJX191MzIgaGNzX3BhcmFtczE7DQo+ICsJX191MzIgaGNzX3BhcmFtczM7DQo+ICsJX191 MzIgaGNjX3BhcmFtczsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmV2X2NhcCByZXZfY2FwOw0KPiArCS8q IExvY2sgdXNlZCBpbiBpbnRlcnJ1cHQgdGhyZWFkIGNvbnRleHQuICovDQo+ICsJc3BpbmxvY2tf dCBsb2NrOw0KPiArCXN0cnVjdCB1c2JfY3RybHJlcXVlc3Qgc2V0dXA7DQo+ICsJc3RydWN0IGNk bnNwX3JlcXVlc3QgZXAwX3ByZXE7DQo+ICsJZW51bSBjZG5zcF9lcDBfc3RhZ2UgZXAwX3N0YWdl Ow0KPiArCXU4IHRocmVlX3N0YWdlX3NldHVwOw0KPiArCXU4IGVwMF9leHBlY3RfaW47DQo+ICsJ dTggc2V0dXBfaWQ7DQo+ICsJdTggc2V0dXBfc3BlZWQ7DQo+ICsJdm9pZCAqc2V0dXBfYnVmOw0K PiArCXU4IGRldmljZV9hZGRyZXNzOw0KPiArCWludCBtYXlfd2FrZXVwOw0KPiArCXUxNiBoY2lf dmVyc2lvbjsNCj4gKw0KPiArCS8qIGRhdGEgc3RydWN0dXJlcyAqLw0KPiArCXN0cnVjdCBjZG5z cF9kZXZpY2VfY29udGV4dF9hcnJheSAqZGNiYWE7DQo+ICsJc3RydWN0IGNkbnNwX3JpbmcgKmNt ZF9yaW5nOw0KPiArCXN0cnVjdCBjZG5zcF9jb21tYW5kIGNtZDsNCj4gKwlzdHJ1Y3QgY2Ruc3Bf cmluZyAqZXZlbnRfcmluZzsNCj4gKwlzdHJ1Y3QgY2Ruc3BfZXJzdCBlcnN0Ow0KPiArCWludCBz bG90X2lkOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBDb21tYW5kcyB0byB0aGUgaGFyZHdhcmUgYXJl IHBhc3NlZCBhbiAiaW5wdXQgY29udGV4dCIgdGhhdA0KPiArCSAqIHRlbGxzIHRoZSBoYXJkd2Fy ZSB3aGF0IHRvIGNoYW5nZSBpbiBpdHMgZGF0YSBzdHJ1Y3R1cmVzLg0KPiArCSAqIFRoZSBoYXJk d2FyZSB3aWxsIHJldHVybiBjaGFuZ2VzIGluIGFuICJvdXRwdXQgY29udGV4dCIgdGhhdA0KPiAr CSAqIHNvZnR3YXJlIG11c3QgYWxsb2NhdGUgZm9yIHRoZSBoYXJkd2FyZS4gLg0KPiArCSAqLw0K PiArCXN0cnVjdCBjZG5zcF9jb250YWluZXJfY3R4IG91dF9jdHg7DQo+ICsJc3RydWN0IGNkbnNw X2NvbnRhaW5lcl9jdHggaW5fY3R4Ow0KPiArCXN0cnVjdCBjZG5zcF9lcCBlcHNbQ0ROU1BfRU5E UE9JTlRTX05VTV07DQo+ICsJdTggdXNiMl9od19scG1fY2FwYWJsZToxOw0KPiArCXU4IHUxX2Fs bG93ZWQ6MTsNCj4gKwl1OCB1Ml9hbGxvd2VkOjE7DQo+ICsNCj4gKwkvKiBETUEgcG9vbHMgKi8N Cj4gKwlzdHJ1Y3QgZG1hX3Bvb2wgKmRldmljZV9wb29sOw0KPiArCXN0cnVjdCBkbWFfcG9vbAkq c2VnbWVudF9wb29sOw0KPiArDQo+ICsjZGVmaW5lIENETlNQX1NUQVRFX0hBTFRFRAkJQklUKDEp DQo+ICsjZGVmaW5lIENETlNQX1NUQVRFX0RZSU5HCQlCSVQoMikNCj4gKyNkZWZpbmUgQ0ROU1Bf U1RBVEVfRElTQ09OTkVDVF9QRU5ESU5HCUJJVCgzKQ0KPiArI2RlZmluZSBDRE5TUF9XQUtFVVBf UEVORElORwkJQklUKDQpDQo+ICsJdW5zaWduZWQgaW50IGNkbnNwX3N0YXRlOw0KPiArCXVuc2ln bmVkIGludCBsaW5rX3N0YXRlOw0KPiArDQo+ICsJc3RydWN0IGNkbnNwX3BvcnQgdXNiMl9wb3J0 Ow0KPiArCXN0cnVjdCBjZG5zcF9wb3J0IHVzYjNfcG9ydDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcG9y dCAqYWN0aXZlX3BvcnQ7DQo+ICsJdTE2IHRlc3RfbW9kZTsNCj4gK307DQo+ICsNCj4gKyNlbmRp ZiAvKiBfX0xJTlVYX0NETlNQX0dBREdFVF9IICovDQoNCg==