From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13325 invoked by alias); 27 May 2010 21:37:55 -0000 Received: (qmail 13317 invoked by uid 22791); 27 May 2010 21:37:54 -0000 X-SWARE-Spam-Status: No, hits=-1.4 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.stmi.com (HELO mail.stmi.com) (70.169.254.5) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 27 May 2010 21:37:50 +0000 X-Ninja-PIM: Scanned by Ninja X-Ninja-AttachmentFiltering: (no action) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01CAFDE5.163A7E53" Subject: RE: AT91 ADC support Date: Thu, 27 May 2010 21:37:00 -0000 Message-ID: In-Reply-To: References: <4BFE76A4.1010702@dallaway.org.uk> <4BFE860D.3060702@dallaway.org.uk> From: "Christophe Coutand" To: "Sergei Gavrikov" Cc: "John Dallaway" , "eCos Patches" X-IsSubscribed: yes Mailing-List: contact ecos-patches-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-patches-owner@ecos.sourceware.org X-SW-Source: 2010-05/txt/msg00052.txt.bz2 This is a multi-part message in MIME format. ------_=_NextPart_001_01CAFDE5.163A7E53 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 1812 Hi Sergei, Here is the updated driver for supporting dual ADC. Let me know if this is the way to go. Regards, Christophe -----Original Message----- From: Sergei Gavrikov [mailto:sergei.gavrikov@gmail.com]=20 Sent: 27. mai 2010 18:38 To: Christophe Coutand Cc: John Dallaway; eCos Patches Subject: RE: AT91 ADC support On Thu, 27 May 2010, Christophe Coutand wrote: > Hi John, > > It's pretty easy to add the required definition for the AT91M55800A > targets. The only thing I see now is that this device contains 2 ADCs > which I have not considered before. I guess there are several ways out > of this: > > 1- Update the actual AT91 ADC driver to make full use of the > AT91M55800A targets. I guess should be done by loading a second ADC > instance (one for each ADC. I have not been through all the thinking > here...). > > 2- or limit the AT91 driver to use only ADC0 of the AT91M55800A target > for the time being. > > 3- or exclude AT91M55800A targets for the time being. > > IMO #1 is best but I cannot give any time frame for completing it. Hi Christophe, John I would prefer #1, if you want I can add that in AT91/ADC CDL/sources. One thing: I won't be able to test it on real hardware (only build process can be tested me). John, what do you think: Can we add the second ADC instance without a testing? > One additional weakness of the driver is that it is made for up to 8 > channels. It is defined nowhere what the targeted CPU can actually > handle, this is left to the user when configuring eCos. I believe this > is pretty fine since the user must anyway know which signal he wants to > sample but you might disagree on that one. I know only one target which would use all 8 channels :-) That's eCos i386/Linux synthetic target. Thanks for collaboration. Sergei > Regards, > Christophe ------_=_NextPart_001_01CAFDE5.163A7E53 Content-Type: application/octet-stream; name="at91_adc_v3" Content-Transfer-Encoding: base64 Content-Description: at91_adc_v3 Content-Disposition: attachment; filename="at91_adc_v3" Content-length: 72875 ZGlmZiAtciBhZTgxNmM4M2YwODIgcGFja2FnZXMvZGV2cy9hZGMvYXJtL2F0 OTEvY3VycmVudC9DaGFuZ2VMb2cKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvcGFja2FnZXMvZGV2cy9hZGMv YXJtL2F0OTEvY3VycmVudC9DaGFuZ2VMb2cJVGh1IE1heSAyNyAyMzoyNDo1 MiAyMDEwICswMjAwCkBAIC0wLDAgKzEsMzEgQEAKKzIwMTAtMDUtMTggIGNj b3V0YW5kICA8Y2NvdXRhbmRAc3RtaS5jb20+CisKKyAgICAgICAgKiBBVDkx IEFEQyBkcml2ZXIgcGFja2FnZSBjcmVhdGVkCisgICAgICAgICogY2RsL2Fk Y19hdDkxLmNkbAorICAgICAgICAqIHNyYy9hZGNfYXQ5MS5jCisgICAgICAg ICogaW5jbHVkZS9hZGNfYXQ5MS5pbmwKKyAgICAgICAgKiB0ZXN0cy9hdDkx X2FkY190ZXN0LmMKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy8vICMjIyNHUExDT1BZUklHSFRCRUdJTiMjIyMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy8vIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIGVDb3MsIHRoZSBFbWJlZGRlZCBDb25maWd1cmFibGUgT3BlcmF0aW5n IFN5c3RlbS4gICAKKy8vIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAK Ky8vCisvLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgICAgCisvLyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSAgICAgCisvLyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9yIChhdCB5b3VyIG9w dGlvbikgYW55ICAgCisvLyBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisvLworLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICAgIAorLy8gV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiAgICAgICAgICAgICAgIAorLy8gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgICAgICAgIAorLy8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLy8KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAgICAKKy8vIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy8vIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCAgICAgICAg ICAgICAgICAgICAgICAKKy8vIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw MjExMC0xMzAxLCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy8vICMjIyNH UExDT1BZUklHSFRFTkQjIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy8vPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CmRpZmYgLXIgYWU4MTZjODNmMDgyIHBhY2thZ2VzL2Rl dnMvYWRjL2FybS9hdDkxL2N1cnJlbnQvY2RsL2FkY19hdDkxLmNkbAotLS0g L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysg Yi9wYWNrYWdlcy9kZXZzL2FkYy9hcm0vYXQ5MS9jdXJyZW50L2NkbC9hZGNf YXQ5MS5jZGwJVGh1IE1heSAyNyAyMzoyNDo1OSAyMDEwICswMjAwCkBAIC0w LDAgKzEsMzU0IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisj ICAgICAgYWRjX2F0OTEuY2RsCisjCisjICAgICAgZUNvcyBBVDkxIEFEQyBj b25maWd1cmF0aW9uIGRhdGEKKyMKKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKyMjICMjIyNFQ09TR1BMQ09QWVJJR0hUQkVHSU4jIyMjICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyMjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyMjIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIGVDb3MsIHRoZSBFbWJlZGRlZCBDb25maWd1cmFibGUgT3BlcmF0aW5n IFN5c3RlbS4gICAKKyMjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAK KyMjCisjIyBlQ29zIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgICAgCisjIyB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSAgICAgCisjIyBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyICAgICAgCisjIyB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisjIworIyMgZUNvcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCAgICAgIAorIyMgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yICAgIAorIyMgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlICAgIAorIyMgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorIyMKKyMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAgICAKKyMjIGFs b25nIHdpdGggZUNvczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCAgICAKKyMjIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVT QS4gICAgICAgICAgICAKKyMjCisjIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSB0ZW1wbGF0ZXMgb3IgdXNl ICAgICAgCisjIyBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRo aXMgZmlsZSwgb3IgeW91IGNvbXBpbGUgdGhpcyBmaWxlICAgICAgCisjIyBh bmQgbGluayBpdCB3aXRoIG90aGVyIHdvcmtzIHRvIHByb2R1Y2UgYSB3b3Jr IGJhc2VkIG9uIHRoaXMgZmlsZSwgICAgICAgCisjIyB0aGlzIGZpbGUgZG9l cyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgd29yayB0byBi ZSBjb3ZlcmVkIGJ5ICAgCisjIyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UuIEhvd2V2ZXIgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIGZpbGUg ICAgCisjIyBtdXN0IHN0aWxsIGJlIG1hZGUgYXZhaWxhYmxlIGluIGFjY29y ZGFuY2Ugd2l0aCBzZWN0aW9uICgzKSBvZiB0aGUgR05VICAgCisjIyBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHYyLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisjIworIyMgVGhpcyBleGNlcHRp b24gZG9lcyBub3QgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkg YSB3b3JrIGJhc2VkICAgIAorIyMgb24gdGhpcyBmaWxlIG1pZ2h0IGJlIGNv dmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgICAg ICAgIAorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIyMgIyMj I0VDT1NHUExDT1BZUklHSFRFTkQjIyMjICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyMjIyMjREVTQ1JJUFRJT05CRUdJTiMjIyMKKyMKKyMgQXV0 aG9yKHMpOiAgICAgIGNjb3V0YW5kQHN0bWkuY29tCisjIENvbnRyaWJ1dG9y czogICAKKyMgRGF0ZTogICAgICAgICAgIDIwMTAtMDItMTIKKyMKKyMjIyMj REVTQ1JJUFRJT05FTkQjIyMjCisjCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKKworY2RsX3BhY2thZ2UgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkx IHsKKyAgICBkaXNwbGF5ICAgICAiQURDIGhhcmR3YXJlIGRldmljZSBkcml2 ZXIgZm9yIEFUOTEgZmFtaWx5IG9mIEFSTSBjb250cm9sbGVycyIKKyAgICAK KyAgICBwYXJlbnQgICAgICBDWUdQS0dfSU9fQURDX0RFVklDRVMKKyAgICBh Y3RpdmVfaWYgICBDWUdQS0dfSU9fQURDX0RFVklDRVMKKyAgICBhY3RpdmVf aWYgICBDWUdQS0dfSEFMX0FSTV9BVDkxCisgICAgZGVzY3JpcHRpb24gIiAK KyAgICAgICAgICAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgZ2VuZXJpYyBB REMgZGV2aWNlIGRyaXZlciBmb3IgdGhlIG9uLWNoaXAKKyAgICAgICAgICAg QURDIHBlcmlwaGVyYWxzIGluIEFUOTEgcHJvY2Vzc29ycy4iCisgICAgICAg ICAgIAorICAgIGluY2x1ZGVfZGlyIGN5Zy9pbworICAgIGNvbXBpbGUgICAg IC1saWJyYXJ5PWxpYmV4dHJhcy5hIGFkY19hdDkxLmMKKyAgICAKKyAgICBk ZWZpbmVfcHJvYyB7CisgICAgICBwdXRzICQ6OmNkbF9zeXN0ZW1faGVhZGVy ICIjZGVmaW5lIENZR0RBVF9ERVZTX0FEQ19BUk1fQVQ5MV9JTkwgPGN5Zy9p by9hZGNfYXQ5MS5pbmw+IgorICAgIH0KKyAgICAKKyAgICAjIAorICAgICMg UHJpbWFyeSBBREMgKCBBREMwICkKKyAgICAjCisgICAgY2RsX2NvbXBvbmVu dCBDWUdQS0dfREVWU19BRENfQVJNX0FUOTFfQURDMCB7CisgICAgICAgZGlz cGxheSAgICAgICAiQXRtZWwgQVQ5MSBBREMgcG9ydCAwIGRyaXZlciIKKyAg ICAgICBmbGF2b3IgICAgICAgIGJvb2wKKyAgICAgICBkZWZhdWx0X3ZhbHVl IDEKKyAgICAgICBkZXNjcmlwdGlvbiAiCisgICAgICAgICAgIFRoaXMgb3B0 aW9uIGluY2x1ZGVzIHRoZSBkZXZpY2UgZHJpdmVyIGZvciB0aGUgb24tY2hp cCBBREMgMCBvZiB0aGUKKyAgICAgICAgICAgQVQ5MSBwcm9jZXNzb3JzIgor ICAgIAorICAgIAorICAgICAgIGNkbF9pbnRlcmZhY2UgQ1lHSU5UX0RFVlNf QURDX0FSTV9BVDkxX0FEQzBfQ0hBTk5FTFMgeworICAgICAgICAgIGRpc3Bs YXkgIk51bWJlciBvZiBBREMwIGNoYW5uZWxzIgorICAgICAgIH0gIAorICAg CisgICAgICAgY2RsX29wdGlvbiBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFf QURDMF9TRUxFQ1RfVElNRVIgeworICAgICAgICAgIGRpc3BsYXkgICAgICAg IkludGVycnVwdCBwcmlvcml0eSIKKyAgICAgICAgICBmbGF2b3IgICAgICAg IGRhdGEKKyAgICAgICAgICBsZWdhbF92YWx1ZXMgezAgMSAyfQorICAgICAg ICAgIGRlZmF1bHRfdmFsdWUgMQorICAgICAgICAgIGRlc2NyaXB0aW9uICAg IgorICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBzZWxlY3RzIHRoZSB0aW1l ciBjaGFubmVsIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICAgICAgICBnZW5l cmF0aW5nIHRoZSBzYW1wbGluZyBpbnRlcnZhbC4gVGltZXIgY2hhbm5lbCAw IGNhbiAKKyAgICAgICAgICAgICAgYmUgYXNzaWduZWQgYXMgUmVhbCBUaW1l IEtlcm5lbCBjbG9jayBzbyB0aW1lciBjaGFubmVsIAorICAgICAgICAgICAg ICAxIGlzIHNldCB0byBiZSB0aGUgZGVmYXVsdCB2YWx1ZS4iCisgICAgICAg fQorCisgICAgICAgY2RsX29wdGlvbiBDWUdOVU1fREVWU19BRENfQVJNX0FU OTFfQURDMF9QUkVTQ0FMIHsKKyAgICAgICAgICAgZGlzcGxheSAgICAgICAi QURDIGNsb2NrIHNldHRpbmciCisgICAgICAgICAgIGZsYXZvciAgICAgICAg ZGF0YQorICAgICAgICAgICBsZWdhbF92YWx1ZXMgIDAgdG8gMjU1CisgICAg ICAgICAgIGRlZmF1bHRfdmFsdWUgMTI4CisgICAgICAgICAgIGRlc2NyaXB0 aW9uICAgIgorICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gc2V0cyB0aGUg QVQ5MSBBREMgUFJFU0NBTCB2YWx1ZS4gCisgICAgICAgICAgICAgICBBREND bG9jayA9IE1DSyAvICgoUFJFU0NBTCArIDEpICogMikiCisgICAgICAgfQor CisgICAgICAgY2RsX29wdGlvbiBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFf QURDMF9TVEFSVFVQX1RJTUUgeworICAgICAgICAgICBkaXNwbGF5ICAgICAg ICJBREMgc3RhcnQtdXAgdGltZSIKKyAgICAgICAgICAgZmxhdm9yICAgICAg ICBkYXRhCisgICAgICAgICAgIGxlZ2FsX3ZhbHVlcyAgMCB0byAyNTUKKyAg ICAgICAgICAgZGVmYXVsdF92YWx1ZSAxMjgKKyAgICAgICAgICAgZGVzY3Jp cHRpb24gICAiCisgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBzZXRzIHRo ZSBBVDkxIEFEQyBzdGFydC11cCB0aW1lIHZhbHVlLiAKKyAgICAgICAgICAg ICAgIEFEQyBzdGFydC11cCB0aW1lID0gKFNUQVJUVVArMSkgKiA4IC8gQURD Q2xvY2siCisgICAgICAgfQorCisgICAgICAgY2RsX29wdGlvbiBDWUdOVU1f REVWU19BRENfQVJNX0FUOTFfQURDMF9TSFRJTSB7CisgICAgICAgICAgIGRp c3BsYXkgICAgICAgIkFEQyBzdGFydCB1cCB0aW1lIgorICAgICAgICAgICBm bGF2b3IgICAgICAgIGRhdGEKKyAgICAgICAgICAgbGVnYWxfdmFsdWVzICAw IHRvIDE1CisgICAgICAgICAgIGRlZmF1bHRfdmFsdWUgNworICAgICAgICAg ICBkZXNjcmlwdGlvbiAgICIKKyAgICAgICAgICAgICAgIFRoaXMgb3B0aW9u IHNldHMgdGhlIEFUOTEgQURDIFNhbXBsZSBhbmQgSG9sZCBUaW1lLiAKKyAg ICAgICAgICAgICAgIFNhbXBsZSBhbmQgSG9sZCBUaW1lID0gU0hUSU0gLyBB RENDbG9jayIKKyAgICAgICB9CisKKyAgICAgICBjZGxfb3B0aW9uIENZR05V TV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMwX0lOVFBSSU8geworICAgICAgICAg ICBkaXNwbGF5ICAgICAgICJJbnRlcnJ1cHQgcHJpb3JpdHkiCisgICAgICAg ICAgIGZsYXZvciAgICAgICAgZGF0YQorICAgICAgICAgICBsZWdhbF92YWx1 ZXMgIDAgdG8gMTUKKyAgICAgICAgICAgZGVmYXVsdF92YWx1ZSAxNQorICAg ICAgICAgICBkZXNjcmlwdGlvbiAgICIKKyAgICAgICAgICAgICAgIFRoaXMg b3B0aW9uIHNlbGVjdHMgdGhlIGludGVycnVwdCBwcmlvcml0eSBmb3IgdGhl IEFEQworICAgICAgICAgICAgICAgaW50ZXJydXB0cy4gIFRpbWVyIHggaXMg dXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgc2FtcGxlCisgICAgICAgICAgICAg ICBjbG9jay4gU28gdGhpcyBvcHRpb24gY29uZmlndXJlcyB0aGUgaW50ZXJy dXB0IHByaW9yaXR5CisgICAgICAgICAgICAgICBmb3IgdGltZXIgeC4gVGhl cmUgYXJlIDE2IHByaW9yaXR5IGxldmVscyBjb3JyZXNwb25kaW5nIHRvCisg ICAgICAgICAgICAgICB0aGUgdmFsdWVzIDAgdGhyb3VnaCAxNSBkZWNpbWFs LCBvZiB3aGljaCAxNSBpcyB0aGUgbG93ZXN0CisgICAgICAgICAgICAgICBw cmlvcml0eS4gVGhlIHJlc2V0IHZhbHVlIG9mIHRoZXNlIHJlZ2lzdGVycyBk ZWZhdWx0cyBhbGwKKyAgICAgICAgICAgICAgIGludGVycnVwdHMgdG8gdGhl IGxvd2VzdCBwcmlvcml0eSwgYWxsb3dpbmcgYSBzaW5nbGUgd3JpdGUKKyAg ICAgICAgICAgICAgIHRvIGVsZXZhdGUgdGhlIHByaW9yaXR5IG9mIGFuIGlu ZGl2aWR1YWwgaW50ZXJydXB0LiIKKyAgICAgICB9CisKKyAgICAgICBjZGxf b3B0aW9uIENZR05VTV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMwX0RFRkFVTFRf UkFURSB7CisgICAgICAgICAgIGRpc3BsYXkgIkRlZmF1bHQgc2FtcGxlIHJh dGUiCisgICAgICAgICAgIGZsYXZvciAgIGRhdGEKKyAgICAgICAgICAgbGVn YWxfdmFsdWVzIDEgdG8gMTAwMDAKKyAgICAgICAgICAgZGVmYXVsdF92YWx1 ZSAxMDAKKyAgICAgICAgICAgZGVzY3JpcHRpb24gIgorICAgICAgICAgICAg ICAgVGhlIGRyaXZlciB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggdGhlIGRl ZmF1bHQgc2FtcGxlIHJhdGUuCisgICAgICAgICAgICAgICBJZiB5b3UgcmFp c2UgdGhlIGRlZmF1bHQgc2FtcGxlIHJhdGUgeW91IG1pZ2h0IG5lZWQgdG8g aW5jcmVhc2UKKyAgICAgICAgICAgICAgIHRoZSBidWZmZXIgc2l6ZSBmb3Ig ZWFjaCBjaGFubmVsLiIKKyAgICAgICB9CisgICAgICAgICAgICAgICAgCisg ICAgICAgIyBTdXBwb3J0IHVwIHRvIDggQURDIGNoYW5uZWxzCisgICAgICAg Zm9yIHsgc2V0IDo6Y2hhbm5lbCAwIH0geyAkOjpjaGFubmVsIDwgOCB9IHsg aW5jciA6OmNoYW5uZWwgfSB7ICAKKyAgICAKKyAgICAgICAgICAgY2RsX2Nv bXBvbmVudCBDWUdQS0dfREVWU19BRENfQVJNX0FUOTFfQURDMF9DSEFOTkVM W3NldCA6OmNoYW5uZWxdIHsKKyAgICAgICAgICAgICAgIGRpc3BsYXkgICAg ICAgICJBY2Nlc3MgQURDIGNoYW5uZWwgW3NldCA6OmNoYW5uZWxdIgorICAg ICAgICAgICAgICAgZmxhdm9yICAgICAgICAgIGJvb2wKKyAgICAgICAgICAg ICAgIGRlZmF1bHRfdmFsdWUgICBbc2V0IDo6Y2hhbm5lbF0gPT0gMAorICAg ICAgICAgICAgICAgaW1wbGVtZW50cyAgICAgIENZR0lOVF9ERVZTX0FEQ19B Uk1fQVQ5MV9BREMwX0NIQU5ORUxTCisgICAgICAgICAgICAgICBkZXNjcmlw dGlvbiAiCisgICAgICAgICAgICAgICAgICAgSWYgdGhlIGFwcGxpY2F0aW9u IG5lZWRzIHRvIGFjY2VzcyB0aGUgb24tY2hpcCBBREMKKyAgICAgICAgICAg ICAgICAgICBjaGFubmVsIFtzZXQgOjpjaGFubmVsXSB2aWEgYW4gZUNvcyBB REMgZHJpdmVyIHRoZW4KKyAgICAgICAgICAgICAgICAgICB0aGlzIG9wdGlv biBzaG91bGQgYmUgZW5hYmxlZC4iCisgICAgIAorICAgICAgICAgICAgICAg Y2RsX29wdGlvbiBDWUdEQVRfREVWU19BRENfQVJNX0FUOTFfQURDMF9DSEFO TkVMW3NldCA6OmNoYW5uZWxdX05BTUUgeworICAgICAgICAgICAgICAgICAg IGRpc3BsYXkgIkRldmljZSBuYW1lIgorICAgICAgICAgICAgICAgICAgIGZs YXZvciAgICAgIGRhdGEKKyAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3Zh bHVlICAgW2Zvcm1hdCB7IlwiL2Rldi9hZGMwJWRcIiJ9ICQ6OmNoYW5uZWxd CisgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIgorICAgICAgICAg ICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBjb250cm9scyB0aGUgbmFtZSB0 aGF0IGFuIGVDb3MgYXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgc2hvdWxkIHVzZSB0byBhY2Nlc3MgdGhpcyBkZXZpY2UgdmlhIGN5Z19p b19sb29rdXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgb3BlbigpLCBv ciBzaW1pbGFyIGNhbGxzLiIKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAg CisgICAgICAgICAgICAgICBjZGxfb3B0aW9uIENZR0RBVF9ERVZTX0FEQ19B Uk1fQVQ5MV9BREMwX0NIQU5ORUxbc2V0IDo6Y2hhbm5lbF1fQlVGU0laRSB7 CisgICAgICAgICAgICAgICAgICAgZGlzcGxheSAiU2l6ZSBvZiBkYXRhIGJ1 ZmZlciIKKyAgICAgICAgICAgICAgICAgICBmbGF2b3IgIGRhdGEKKyAgICAg ICAgICAgICAgICAgICBsZWdhbF92YWx1ZXMgIDB4MDEgdG8gMHgyMDAwMDAw CisgICAgICAgICAgICAgICAgICAgZGVmYXVsdF92YWx1ZSA1MTIKKyAgICAg ICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiCisgICAgICAgICAgICAgICAg ICAgICAgIFRoaXMgb3B0aW9uIGNvbnRyb2xzIHRoZSBudW1iZXIgb2Ygc2Ft cGxlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyIGNhbiBz dG9yZS4gVGhlIHJlcXVpcmVkIFJBTSBkZXBlbmRzIG9uIHRoZQorICAgICAg ICAgICAgICAgICAgICAgICBzYW1wbGUgc2l6ZSBhbmQgb24gdGhlIG51bWJl ciBvZiBzYW1wbGVzLiBJZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAg c2FtcGxlIHNpemUgaXMgPD0gOCBiaXQgdGhlIHRoZSByZXF1aXJlZCBSQU0g PQorICAgICAgICAgICAgICAgICAgICAgICBzaXplIG9mIGRhdGEgYnVmZmVy LiBJZiB0aGUgc2FtcGxlIHNpemUgaXMgOSBvciAxMAorICAgICAgICAgICAg ICAgICAgICAgICBiaXQgdGhlbiByZXF1aXJlZCBSQU0gPSBzaXplIG9mIGRh dGEgYnVmZmVyICogMi4iCisgICAgICAgICAgICAgICB9IAorICAgICAgICAg ICB9IAorICAgICAgICB9CisgICAgIH0KKyAgICAgCisgICAgIyAKKyAgICAj IEFEQzEKKyAgICAjCisgICAgY2RsX2NvbXBvbmVudCBDWUdQS0dfREVWU19B RENfQVJNX0FUOTFfQURDMSB7CisgICAgICAgZGlzcGxheSAgICAgICAiQXRt ZWwgQVQ5MSBBREMgcG9ydCAxIGRyaXZlciIKKyAgICAgICBmbGF2b3IgICAg ICAgIGJvb2wKKyAgICAgICBkZWZhdWx0X3ZhbHVlIDAKKyAgICAgICAKKyAg ICAgICByZXF1aXJlcyAgICAgIHsgQ1lHSFdSX0hBTF9BUk1fQVQ5MSA9PSAi TTU1ODAwQSIgfQorICAgICAgIAorICAgICAgIGRlc2NyaXB0aW9uICIKKyAg ICAgICAgICAgVGhpcyBvcHRpb24gaW5jbHVkZXMgdGhlIGRldmljZSBkcml2 ZXIgZm9yIHRoZSBvbi1jaGlwIEFEQyAxIG9mIHRoZQorICAgICAgICAgICBB VDkxIHByb2Nlc3NvcnMiCisgICAgCisgICAgCisgICAgICAgY2RsX2ludGVy ZmFjZSBDWUdJTlRfREVWU19BRENfQVJNX0FUOTFfQURDMV9DSEFOTkVMUyB7 CisgICAgICAgICAgZGlzcGxheSAiTnVtYmVyIG9mIEFEQzEgY2hhbm5lbHMi CisgICAgICAgfSAgCisgICAKKyAgICAgICBjZGxfb3B0aW9uIENZR05VTV9E RVZTX0FEQ19BUk1fQVQ5MV9BREMxX1NFTEVDVF9USU1FUiB7CisgICAgICAg ICAgZGlzcGxheSAgICAgICAiSW50ZXJydXB0IHByaW9yaXR5IgorICAgICAg ICAgIGZsYXZvciAgICAgICAgZGF0YQorICAgICAgICAgIGxlZ2FsX3ZhbHVl cyB7MCAxIDJ9CisgICAgICAgICAgZGVmYXVsdF92YWx1ZSAyCisgICAgICAg ICAgZGVzY3JpcHRpb24gICAiCisgICAgICAgICAgICAgIFRoaXMgb3B0aW9u IHNlbGVjdHMgdGhlIHRpbWVyIGNoYW5uZWwgdG8gYmUgdXNlZCBmb3IgCisg ICAgICAgICAgICAgIGdlbmVyYXRpbmcgdGhlIHNhbXBsaW5nIGludGVydmFs LiBUaW1lciBjaGFubmVsIDAgY2FuIAorICAgICAgICAgICAgICBiZSBhc3Np Z25lZCBhcyBSZWFsIFRpbWUgS2VybmVsIGNsb2NrIHNvIHRpbWVyIGNoYW5u ZWwgCisgICAgICAgICAgICAgIDEgaXMgc2V0IHRvIGJlIHRoZSBkZWZhdWx0 IHZhbHVlLiIKKyAgICAgICB9CisKKyAgICAgICBjZGxfb3B0aW9uIENZR05V TV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMxX1BSRVNDQUwgeworICAgICAgICAg ICBkaXNwbGF5ICAgICAgICJBREMgY2xvY2sgc2V0dGluZyIKKyAgICAgICAg ICAgZmxhdm9yICAgICAgICBkYXRhCisgICAgICAgICAgIGxlZ2FsX3ZhbHVl cyAgMCB0byAyNTUKKyAgICAgICAgICAgZGVmYXVsdF92YWx1ZSAxMjgKKyAg ICAgICAgICAgZGVzY3JpcHRpb24gICAiCisgICAgICAgICAgICAgICBUaGlz IG9wdGlvbiBzZXRzIHRoZSBBVDkxIEFEQyBQUkVTQ0FMIHZhbHVlLiAKKyAg ICAgICAgICAgICAgIEFEQ0Nsb2NrID0gTUNLIC8gKChQUkVTQ0FMICsgMSkg KiAyKSIKKyAgICAgICB9CisKKyAgICAgICBjZGxfb3B0aW9uIENZR05VTV9E RVZTX0FEQ19BUk1fQVQ5MV9BREMxX1NUQVJUVVBfVElNRSB7CisgICAgICAg ICAgIGRpc3BsYXkgICAgICAgIkFEQyBzdGFydC11cCB0aW1lIgorICAgICAg ICAgICBmbGF2b3IgICAgICAgIGRhdGEKKyAgICAgICAgICAgbGVnYWxfdmFs dWVzICAwIHRvIDI1NQorICAgICAgICAgICBkZWZhdWx0X3ZhbHVlIDEyOAor ICAgICAgICAgICBkZXNjcmlwdGlvbiAgICIKKyAgICAgICAgICAgICAgIFRo aXMgb3B0aW9uIHNldHMgdGhlIEFUOTEgQURDIHN0YXJ0LXVwIHRpbWUgdmFs dWUuIAorICAgICAgICAgICAgICAgQURDIHN0YXJ0LXVwIHRpbWUgPSAoU1RB UlRVUCsxKSAqIDggLyBBRENDbG9jayIKKyAgICAgICB9CisKKyAgICAgICBj ZGxfb3B0aW9uIENZR05VTV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMxX1NIVElN IHsKKyAgICAgICAgICAgZGlzcGxheSAgICAgICAiQURDIHN0YXJ0IHVwIHRp bWUiCisgICAgICAgICAgIGZsYXZvciAgICAgICAgZGF0YQorICAgICAgICAg ICBsZWdhbF92YWx1ZXMgIDAgdG8gMTUKKyAgICAgICAgICAgZGVmYXVsdF92 YWx1ZSA3CisgICAgICAgICAgIGRlc2NyaXB0aW9uICAgIgorICAgICAgICAg ICAgICAgVGhpcyBvcHRpb24gc2V0cyB0aGUgQVQ5MSBBREMgU2FtcGxlIGFu ZCBIb2xkIFRpbWUuIAorICAgICAgICAgICAgICAgU2FtcGxlIGFuZCBIb2xk IFRpbWUgPSBTSFRJTSAvIEFEQ0Nsb2NrIgorICAgICAgIH0KKworICAgICAg IGNkbF9vcHRpb24gQ1lHTlVNX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfSU5U UFJJTyB7CisgICAgICAgICAgIGRpc3BsYXkgICAgICAgIkludGVycnVwdCBw cmlvcml0eSIKKyAgICAgICAgICAgZmxhdm9yICAgICAgICBkYXRhCisgICAg ICAgICAgIGxlZ2FsX3ZhbHVlcyAgMCB0byAxNQorICAgICAgICAgICBkZWZh dWx0X3ZhbHVlIDE1CisgICAgICAgICAgIGRlc2NyaXB0aW9uICAgIgorICAg ICAgICAgICAgICAgVGhpcyBvcHRpb24gc2VsZWN0cyB0aGUgaW50ZXJydXB0 IHByaW9yaXR5IGZvciB0aGUgQURDCisgICAgICAgICAgICAgICBpbnRlcnJ1 cHRzLiAgVGltZXIgeCBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSBzYW1w bGUKKyAgICAgICAgICAgICAgIGNsb2NrLiBTbyB0aGlzIG9wdGlvbiBjb25m aWd1cmVzIHRoZSBpbnRlcnJ1cHQgcHJpb3JpdHkKKyAgICAgICAgICAgICAg IGZvciB0aW1lciB4LiBUaGVyZSBhcmUgMTYgcHJpb3JpdHkgbGV2ZWxzIGNv cnJlc3BvbmRpbmcgdG8KKyAgICAgICAgICAgICAgIHRoZSB2YWx1ZXMgMCB0 aHJvdWdoIDE1IGRlY2ltYWwsIG9mIHdoaWNoIDE1IGlzIHRoZSBsb3dlc3QK KyAgICAgICAgICAgICAgIHByaW9yaXR5LiBUaGUgcmVzZXQgdmFsdWUgb2Yg dGhlc2UgcmVnaXN0ZXJzIGRlZmF1bHRzIGFsbAorICAgICAgICAgICAgICAg aW50ZXJydXB0cyB0byB0aGUgbG93ZXN0IHByaW9yaXR5LCBhbGxvd2luZyBh IHNpbmdsZSB3cml0ZQorICAgICAgICAgICAgICAgdG8gZWxldmF0ZSB0aGUg cHJpb3JpdHkgb2YgYW4gaW5kaXZpZHVhbCBpbnRlcnJ1cHQuIgorICAgICAg IH0KKworICAgICAgIGNkbF9vcHRpb24gQ1lHTlVNX0RFVlNfQURDX0FSTV9B VDkxX0FEQzFfREVGQVVMVF9SQVRFIHsKKyAgICAgICAgICAgZGlzcGxheSAi RGVmYXVsdCBzYW1wbGUgcmF0ZSIKKyAgICAgICAgICAgZmxhdm9yICAgZGF0 YQorICAgICAgICAgICBsZWdhbF92YWx1ZXMgMSB0byAxMDAwMAorICAgICAg ICAgICBkZWZhdWx0X3ZhbHVlIDEwMAorICAgICAgICAgICBkZXNjcmlwdGlv biAiCisgICAgICAgICAgICAgICBUaGUgZHJpdmVyIHdpbGwgYmUgaW5pdGlh bGl6ZWQgd2l0aCB0aGUgZGVmYXVsdCBzYW1wbGUgcmF0ZS4KKyAgICAgICAg ICAgICAgIElmIHlvdSByYWlzZSB0aGUgZGVmYXVsdCBzYW1wbGUgcmF0ZSB5 b3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZQorICAgICAgICAgICAgICAgdGhl IGJ1ZmZlciBzaXplIGZvciBlYWNoIGNoYW5uZWwuIgorICAgICAgIH0KKyAg ICAgICAgICAgICAgICAKKyAgICAgICAjIFN1cHBvcnQgdXAgdG8gOCBBREMg Y2hhbm5lbHMKKyAgICAgICBmb3IgeyBzZXQgOjpjaGFubmVsIDAgfSB7ICQ6 OmNoYW5uZWwgPCA4IH0geyBpbmNyIDo6Y2hhbm5lbCB9IHsgIAorICAgIAor ICAgICAgICAgICBjZGxfY29tcG9uZW50IENZR1BLR19ERVZTX0FEQ19BUk1f QVQ5MV9BREMxX0NIQU5ORUxbc2V0IDo6Y2hhbm5lbF0geworICAgICAgICAg ICAgICAgZGlzcGxheSAgICAgICAgIkFjY2VzcyBBREMgY2hhbm5lbCBbc2V0 IDo6Y2hhbm5lbF0iCisgICAgICAgICAgICAgICBmbGF2b3IgICAgICAgICAg Ym9vbAorICAgICAgICAgICAgICAgZGVmYXVsdF92YWx1ZSAgIFtzZXQgOjpj aGFubmVsXSA9PSAwCisgICAgICAgICAgICAgICBpbXBsZW1lbnRzICAgICAg Q1lHSU5UX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfQ0hBTk5FTFMKKyAgICAg ICAgICAgICAgIGRlc2NyaXB0aW9uICIKKyAgICAgICAgICAgICAgICAgICBJ ZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gYWNjZXNzIHRoZSBvbi1jaGlw IEFEQworICAgICAgICAgICAgICAgICAgIGNoYW5uZWwgW3NldCA6OmNoYW5u ZWxdIHZpYSBhbiBlQ29zIEFEQyBkcml2ZXIgdGhlbgorICAgICAgICAgICAg ICAgICAgIHRoaXMgb3B0aW9uIHNob3VsZCBiZSBlbmFibGVkLiIKKyAgICAg CisgICAgICAgICAgICAgICBjZGxfb3B0aW9uIENZR0RBVF9ERVZTX0FEQ19B Uk1fQVQ5MV9BREMxX0NIQU5ORUxbc2V0IDo6Y2hhbm5lbF1fTkFNRSB7Cisg ICAgICAgICAgICAgICAgICAgZGlzcGxheSAiRGV2aWNlIG5hbWUiCisgICAg ICAgICAgICAgICAgICAgZmxhdm9yICAgICAgZGF0YQorICAgICAgICAgICAg ICAgICAgIGRlZmF1bHRfdmFsdWUgICBbZm9ybWF0IHsiXCIvZGV2L2FkYzEl ZFwiIn0gJDo6Y2hhbm5lbF0KKyAgICAgICAgICAgICAgICAgICBkZXNjcmlw dGlvbiAiCisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGNv bnRyb2xzIHRoZSBuYW1lIHRoYXQgYW4gZUNvcyBhcHBsaWNhdGlvbgorICAg ICAgICAgICAgICAgICAgICAgICBzaG91bGQgdXNlIHRvIGFjY2VzcyB0aGlz IGRldmljZSB2aWEgY3lnX2lvX2xvb2t1cCgpLAorICAgICAgICAgICAgICAg ICAgICAgICBvcGVuKCksIG9yIHNpbWlsYXIgY2FsbHMuIgorICAgICAgICAg ICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgICAgIGNkbF9vcHRpb24g Q1lHREFUX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfQ0hBTk5FTFtzZXQgOjpj aGFubmVsXV9CVUZTSVpFIHsKKyAgICAgICAgICAgICAgICAgICBkaXNwbGF5 ICJTaXplIG9mIGRhdGEgYnVmZmVyIgorICAgICAgICAgICAgICAgICAgIGZs YXZvciAgZGF0YQorICAgICAgICAgICAgICAgICAgIGxlZ2FsX3ZhbHVlcyAg MHgwMSB0byAweDIwMDAwMDAKKyAgICAgICAgICAgICAgICAgICBkZWZhdWx0 X3ZhbHVlIDUxMgorICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICIK KyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gY29udHJvbHMg dGhlIG51bWJlciBvZiBzYW1wbGVzIHRoZQorICAgICAgICAgICAgICAgICAg ICAgICBidWZmZXIgY2FuIHN0b3JlLiBUaGUgcmVxdWlyZWQgUkFNIGRlcGVu ZHMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZSBzaXpl IGFuZCBvbiB0aGUgbnVtYmVyIG9mIHNhbXBsZXMuIElmIHRoZQorICAgICAg ICAgICAgICAgICAgICAgICBzYW1wbGUgc2l6ZSBpcyA8PSA4IGJpdCB0aGUg dGhlIHJlcXVpcmVkIFJBTSA9CisgICAgICAgICAgICAgICAgICAgICAgIHNp emUgb2YgZGF0YSBidWZmZXIuIElmIHRoZSBzYW1wbGUgc2l6ZSBpcyA5IG9y IDEwCisgICAgICAgICAgICAgICAgICAgICAgIGJpdCB0aGVuIHJlcXVpcmVk IFJBTSA9IHNpemUgb2YgZGF0YSBidWZmZXIgKiAyLiIKKyAgICAgICAgICAg ICAgIH0gCisgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICAgfSAgICAg CisgICAgIAorICAgICBjZGxfb3B0aW9uIENZR1BLR19ERVZTX0FEQ19BUk1f QVQ5MV9ERUJVR19MRVZFTCB7CisgICAgICAgICBkaXNwbGF5ICJEcml2ZXIg ZGVidWcgb3V0cHV0IGxldmVsIgorICAgICAgICAgZmxhdm9yICBkYXRhCisg ICAgICAgICBsZWdhbF92YWx1ZXMgezAgMX0KKyAgICAgICAgIGRlZmF1bHRf dmFsdWUgMAorICAgICAgICAgZGVzY3JpcHRpb24gICAiCisgICAgICAgICAg ICAgIFRoaXMgb3B0aW9uIHNwZWNpZmllcyB0aGUgbGV2ZWwgb2YgZGVidWcg ZGF0YSBvdXRwdXQgYnkKKyAgICAgICAgICAgICAgdGhlIEFUOTEgQURDIGRl dmljZSBkcml2ZXIuIEEgdmFsdWUgb2YgMCBzaWduaWZpZXMKKyAgICAgICAg ICAgICAgbm8gZGVidWcgZGF0YSBvdXRwdXQ7IDEgc2lnbmlmaWVzIG5vcm1h bCBkZWJ1ZyBkYXRhCisgICAgICAgICAgICAgIG91dHB1dC4gSWYgYW4gb3Zl cnJ1biBvY2N1cnJlZCB0aGVuIHRoaXMgY2FuIG9ubHkgYmUKKyAgICAgICAg ICAgICAgZGV0ZWN0ZWQgYnkgZGVidWcgb3V0cHV0IG1lc3NhZ2VzLiIgICAg ICAgICAKKyAgICAgfSAgICAgCisKKyAgICAgY2RsX2NvbXBvbmVudCBDWUdT RU1fREVWU19BRENfQVJNX0FUOTFfU0FNUExFX1NJWkVfTElNSVQgeworICAg ICAgICAgZGlzcGxheSAgICAgICAiU2FtcGxlIHNpemUgbGltaXQiCisgICAg ICAgICBmbGF2b3IgICAgICAgICAgYm9vbAorICAgICAgICAgY2FsY3VsYXRl ZCAgICAxCisgICAgICAgICByZXF1aXJlcyAgICAgIHsgKCBDWUdOVU1fSU9f QURDX1NBTVBMRV9TSVpFID09IDggKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHx8ICggQ1lHTlVNX0lPX0FEQ19TQU1QTEVfU0laRSA9PSAxMCAp IH0KKyAgICAgICAgIGRlc2NyaXB0aW9uICAgIgorICAgICAgICAgICAgIFRl bGwgdXNlciBhYm91dCBBVDkxIEFEQyBzYW1wbGUgc2l6ZSBsaW1pdGF0aW9u LiIKKyAgICAgfQorCisgICAgY2RsX29wdGlvbiBDWUdQS0dfREVWU19BRENf QVJNX0FUOTFfVEVTVFMgeworICAgICAgICBkaXNwbGF5ICJUZXN0cyBmb3Ig QVQ5MSBBREMgZHJpdmVyIgorICAgICAgICBmbGF2b3IgIGRhdGEKKyAgICAg ICAgbm9fZGVmaW5lCisgICAgICAgIGNhbGN1bGF0ZWQgeyAidGVzdHMvYXQ5 MV9hZGNfdGVzdCIgfQorICAgICAgICBkZXNjcmlwdGlvbiAgICIKKyAgICAg ICAgICAgIFRoaXMgb3B0aW9uIHNwZWNpZmllcyB0aGUgc2V0IG9mIHRlc3Rz IGZvciB0aGUgQVQ5MQorICAgICAgICAgICAgQURDIGRldmljZSBkcml2ZXIu IgorICAgIH0KKworfQpkaWZmIC1yIGFlODE2YzgzZjA4MiBwYWNrYWdlcy9k ZXZzL2FkYy9hcm0vYXQ5MS9jdXJyZW50L2luY2x1ZGUvYWRjX2F0OTEuaW5s Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw CisrKyBiL3BhY2thZ2VzL2RldnMvYWRjL2FybS9hdDkxL2N1cnJlbnQvaW5j bHVkZS9hZGNfYXQ5MS5pbmwJVGh1IE1heSAyNyAyMzoyNTowOSAyMDEwICsw MjAwCkBAIC0wLDAgKzEsMjAwIEBACisvLz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisvLworLy8gICAgICBhZGNfYXQ5MS5pbmwKKy8vCisvLyAg ICAgIEFEQyBkcml2ZXIgZm9yIEFUOTEgb24gY2hpcCBBREMKKy8vCisvLz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAjIyMjRUNPU0dQTENP UFlSSUdIVEJFR0lOIyMjIworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2Yg ZUNvcywgdGhlIEVtYmVkZGVkIENvbmZpZ3VyYWJsZSBPcGVyYXRpbmcgU3lz dGVtLgorLy8gQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorLy8KKy8vIGVDb3MgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRl cgorLy8gdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKy8vIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIKKy8vIHZlcnNpb24uCisvLworLy8gZUNvcyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQgV0lUSE9VVAorLy8gQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisvLyBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy8vIGZvciBtb3JlIGRldGFpbHMu CisvLworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy8vIGFsb25nIHdpdGgg ZUNvczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLAorLy8gNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwgVVNBLgorLy8KKy8vIEFz IGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRp YXRlIHRlbXBsYXRlcyBvciB1c2UKKy8vIG1hY3JvcyBvciBpbmxpbmUgZnVu Y3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZSB0aGlzIGZp bGUKKy8vIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgd29ya3MgdG8gcHJvZHVj ZSBhIHdvcmsgYmFzZWQgb24gdGhpcyBmaWxlLAorLy8gdGhpcyBmaWxlIGRv ZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIHdvcmsgdG8g YmUgY292ZXJlZCBieQorLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLiBIb3dldmVyIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhpcyBmaWxlCisv LyBtdXN0IHN0aWxsIGJlIG1hZGUgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ug d2l0aCBzZWN0aW9uICgzKSBvZiB0aGUgR05VCisvLyBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHYyLgorLy8KKy8vIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90 IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IGEgd29yayBiYXNl ZAorLy8gb24gdGhpcyBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIyMjI0VDT1NHUExD T1BZUklHSFRFTkQjIyMjCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisvLyMjIyMjREVTQ1JJUFRJT05CRUdJTiMjIyMKKy8vCisvLyBBdXRo b3Iocyk6ICAgIEF0bWVsIEFUOTEgb24tY2hpcCBBREMgZGV2aWNlIGRyaXZl ciwgY2NvdXRhbmQKKy8vICAgICAgICAgICAgICAKKy8vIENvbnRyaWJ1dG9y czoKKy8vIERhdGU6ICAgICAgICAgMjAxMC0wNS0yNworLy8gUHVycG9zZToK Ky8vIERlc2NyaXB0aW9uOgorLy8KKy8vIyMjI0RFU0NSSVBUSU9ORU5EIyMj IworLy8KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworI2lm bmRlZiBDWUdPTkNFX0RFVlNfQURDX0FSTV9BVDkxX0lOTAorI2RlZmluZSBD WUdPTkNFX0RFVlNfQURDX0FSTV9BVDkxX0lOTAorCisvLyBTb21lIEFUOTEg SEFMIGFyZSBkZWZpbmluZyB0aGUgdGltZXIgMCB2ZWN0b3IgYXMgVEMwIGFu ZCBvdGhlciBhcyBUSU1FUjAKKyNpZm5kZWYgQ1lHTlVNX0hBTF9JTlRFUlJV UFRfVEMwCisjZGVmaW5lIENZR05VTV9IQUxfSU5URVJSVVBUX1RDMCBDWUdO VU1fSEFMX0lOVEVSUlVQVF9USU1FUjAKKyNlbmRpZgorCisvLyBEZWNsYXJl IEFEQzAKKyNpZmRlZiBDWUdQS0dfREVWU19BRENfQVJNX0FUOTFfQURDMAor CitzdGF0aWMgYXQ5MV9hZGNfaW5mbyBhdDkxX2FkYzBfaW5mbyA9Cit7Cisg ICAgLmFkY19iYXNlICAgICAgICAgPSBBVDkxX0FEQywKKyAgICAudGltZXJf YmFzZSAgICAgICA9IEFUOTFfVEMsCisgICAgLnRjX2Jhc2UgICAgICAgICAg PSBBVDkxX1RDICsgKEFUOTFfVENfVENfU0laRSAqIENZR05VTV9ERVZTX0FE Q19BUk1fQVQ5MV9BREMwX1NFTEVDVF9USU1FUiksCisgICAgLnRpbWVyX3Zl Y3RvciAgICAgPSBDWUdOVU1fSEFMX0lOVEVSUlVQVF9UQzAgKyBDWUdOVU1f REVWU19BRENfQVJNX0FUOTFfQURDMF9TRUxFQ1RfVElNRVIsCisgICAgLnRp bWVyX2ludHByaW8gICAgPSBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFfQURD MF9JTlRQUklPLAorICAgIC50aW1lcl9pZCAgICAgICAgID0gQ1lHTlVNX0RF VlNfQURDX0FSTV9BVDkxX0FEQzBfU0VMRUNUX1RJTUVSLAorICAgIC5pbnRf aGFuZGxlICAgICAgID0gMCwKKyAgICAuYWRjX3ByZXNjYWwgICAgICA9IENZ R05VTV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMwX1BSRVNDQUwsCisgICAgLmFk Y19zdGFydHVwX3RpbWUgPSBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFfQURD MF9TVEFSVFVQX1RJTUUsCisgICAgLmFkY19zaHRpbSAgICAgICAgPSBDWUdO VU1fREVWU19BRENfQVJNX0FUOTFfQURDMF9TSFRJTSwKKyNpZiBDWUdOVU1f SU9fQURDX1NBTVBMRV9TSVpFID4gOAorICAgICAucmVzb2x1dGlvbiAgICAg ID0gQVQ5MV9BRENfTVJfTE9XUkVDXzEwQklUUywKKyNlbHNlCisgICAgIC5y ZXNvbHV0aW9uICAgICAgPSBBVDkxX0FEQ19NUl9MT1dSRVNfOEJJVFMsCisj ZW5kaWYKKyAgICAuY2hhbl9tYXNrICAgICAgICA9IDAKK307CisKK0NZR19B RENfREVWSUNFKCBhdDkxX2FkYzBfZGV2aWNlLAorICAgICAgICAgICAgICAg ICZhdDkxX2FkY19mdW5zLAorICAgICAgICAgICAgICAgICZhdDkxX2FkYzBf aW5mbywKKyAgICAgICAgICAgICAgICBDWUdOVU1fREVWU19BRENfQVJNX0FU OTFfQURDMF9ERUZBVUxUX1JBVEUpOworCisjZGVmaW5lIEFUOTFfQURDMF9D SEFOTkVMKCBfX2NoYW4gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCitDWUdfQURDX0NIQU5ORUwoIGF0OTFfYWRjMF9jaGFu bmVsIyNfX2NoYW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgICAgICAgICAgIF9fY2hhbiwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICAgICAgIENZR0RBVF9ERVZTX0FEQ19BUk1fQVQ5MV9BREMwX0NIQU5ORUwj I19fY2hhbiMjX0JVRlNJWkUsICBcCisgICAgICAgICAgICAgICAgICZhdDkx X2FkYzBfZGV2aWNlICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor REVWVEFCX0VOVFJZKCBhdDkxX2FkYzBfY2hhbm5lbCMjX19jaGFuIyNfZGV2 aWNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICBDWUdEQVRfREVWU19BRENfQVJNX0FUOTFfQURDMF9DSEFOTkVMIyNfX2No YW4jI19OQU1FLCAgICAgICAgXAorICAgICAgICAgICAgICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgICAmY3lnX2lvX2FkY19kZXZpbywgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICBhdDkxX2FkY19pbml0LCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBh dDkxX2FkY19sb29rdXAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAmYXQ5MV9hZGMwX2No YW5uZWwjI19fY2hhbiApOworCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FS TV9BVDkxX0FEQzBfQ0hBTk5FTDAKK0FUOTFfQURDMF9DSEFOTkVMKDApOwor I2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzBf Q0hBTk5FTDEKK0FUOTFfQURDMF9DSEFOTkVMKDEpOworI2VuZGlmCisjaWZk ZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzBfQ0hBTk5FTDIKK0FU OTFfQURDMF9DSEFOTkVMKDIpOworI2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RF VlNfQURDX0FSTV9BVDkxX0FEQzBfQ0hBTk5FTDMKK0FUOTFfQURDMF9DSEFO TkVMKDMpOworI2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9B VDkxX0FEQzBfQ0hBTk5FTDQKK0FUOTFfQURDMF9DSEFOTkVMKDQpOworI2Vu ZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzBfQ0hB Tk5FTDUKK0FUOTFfQURDMF9DSEFOTkVMKDUpOworI2VuZGlmCisjaWZkZWYg Q1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzBfQ0hBTk5FTDYKK0FUOTFf QURDMF9DSEFOTkVMKDYpOworI2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNf QURDX0FSTV9BVDkxX0FEQzBfQ0hBTk5FTDcKK0FUOTFfQURDMF9DSEFOTkVM KDcpOworI2VuZGlmCisKKyNlbmRpZiAvLyBDWUdQS0dfREVWU19BRENfQVJN X0FUOTFfQURDMAorCisKKworLy8gRGVjbGFyZSBBREMxCisjaWZkZWYgQ1lH UEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzEKKworc3RhdGljIGF0OTFfYWRj X2luZm8gYXQ5MV9hZGMxX2luZm8gPQoreworICAgIC5hZGNfYmFzZSAgICAg ICAgID0gQVQ5MV9BREMxLAorICAgIC50aW1lcl9iYXNlICAgICAgID0gQVQ5 MV9UQywKKyAgICAudGNfYmFzZSAgICAgICAgICA9IEFUOTFfVEMgKyAoQVQ5 MV9UQ19UQ19TSVpFICogQ1lHTlVNX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFf U0VMRUNUX1RJTUVSKSwKKyAgICAudGltZXJfdmVjdG9yICAgICA9IENZR05V TV9IQUxfSU5URVJSVVBUX1RDMCArIENZR05VTV9ERVZTX0FEQ19BUk1fQVQ5 MV9BREMxX1NFTEVDVF9USU1FUiwKKyAgICAudGltZXJfaW50cHJpbyAgICA9 IENZR05VTV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMxX0lOVFBSSU8sCisgICAg LnRpbWVyX2lkICAgICAgICAgPSBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFf QURDMV9TRUxFQ1RfVElNRVIsCisgICAgLmludF9oYW5kbGUgICAgICAgPSAw LAorICAgIC5hZGNfcHJlc2NhbCAgICAgID0gQ1lHTlVNX0RFVlNfQURDX0FS TV9BVDkxX0FEQzFfUFJFU0NBTCwKKyAgICAuYWRjX3N0YXJ0dXBfdGltZSA9 IENZR05VTV9ERVZTX0FEQ19BUk1fQVQ5MV9BREMxX1NUQVJUVVBfVElNRSwK KyAgICAuYWRjX3NodGltICAgICAgICA9IENZR05VTV9ERVZTX0FEQ19BUk1f QVQ5MV9BREMxX1NIVElNLAorI2lmIENZR05VTV9JT19BRENfU0FNUExFX1NJ WkUgPiA4CisgICAgIC5yZXNvbHV0aW9uICAgICAgPSBBVDkxX0FEQ19NUl9M T1dSRUNfMTBCSVRTLAorI2Vsc2UKKyAgICAgLnJlc29sdXRpb24gICAgICA9 IEFUOTFfQURDX01SX0xPV1JFU184QklUUywKKyNlbmRpZgorICAgIC5jaGFu X21hc2sgICAgICAgID0gMAorfTsKK0NZR19BRENfREVWSUNFKCBhdDkxX2Fk YzFfZGV2aWNlLAorICAgICAgICAgICAgICAgICZhdDkxX2FkY19mdW5zLAor ICAgICAgICAgICAgICAgICZhdDkxX2FkYzFfaW5mbywKKyAgICAgICAgICAg ICAgICBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFfQURDMV9ERUZBVUxUX1JB VEUpOworCisjZGVmaW5lIEFUOTFfQURDMV9DSEFOTkVMKCBfX2NoYW4gKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitDWUdf QURDX0NIQU5ORUwoIGF0OTFfYWRjMV9jaGFubmVsIyNfX2NoYW4sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg IF9fY2hhbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIENZR0RBVF9ERVZT X0FEQ19BUk1fQVQ5MV9BREMxX0NIQU5ORUwjI19fY2hhbiMjX0JVRlNJWkUs ICBcCisgICAgICAgICAgICAgICAgICZhdDkxX2FkYzFfZGV2aWNlICk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorREVWVEFCX0VOVFJZKCBhdDkx X2FkYzFfY2hhbm5lbCMjX19jaGFuIyNfZGV2aWNlLCAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgICBDWUdEQVRfREVWU19BRENf QVJNX0FUOTFfQURDMV9DSEFOTkVMIyNfX2NoYW4jI19OQU1FLCAgICAgICAg XAorICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg ICAgICAmY3lnX2lvX2FkY19kZXZpbywgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBhdDkxX2Fk Y19pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICBhdDkxX2FkY19sb29rdXAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAmYXQ5MV9hZGMxX2NoYW5uZWwjI19fY2hhbiApOwor CisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfQ0hBTk5F TDAKK0FUOTFfQURDMV9DSEFOTkVMKDApOworI2VuZGlmCisjaWZkZWYgQ1lH UEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfQ0hBTk5FTDEKK0FUOTFfQURD MV9DSEFOTkVMKDEpOworI2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURD X0FSTV9BVDkxX0FEQzFfQ0hBTk5FTDIKK0FUOTFfQURDMV9DSEFOTkVMKDIp OworI2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FE QzFfQ0hBTk5FTDMKK0FUOTFfQURDMV9DSEFOTkVMKDMpOworI2VuZGlmCisj aWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfQ0hBTk5FTDQK K0FUOTFfQURDMV9DSEFOTkVMKDQpOworI2VuZGlmCisjaWZkZWYgQ1lHUEtH X0RFVlNfQURDX0FSTV9BVDkxX0FEQzFfQ0hBTk5FTDUKK0FUOTFfQURDMV9D SEFOTkVMKDUpOworI2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FS TV9BVDkxX0FEQzFfQ0hBTk5FTDYKK0FUOTFfQURDMV9DSEFOTkVMKDYpOwor I2VuZGlmCisjaWZkZWYgQ1lHUEtHX0RFVlNfQURDX0FSTV9BVDkxX0FEQzFf Q0hBTk5FTDcKK0FUOTFfQURDMV9DSEFOTkVMKDcpOworI2VuZGlmCisKKyNl bmRpZiAvLyBDWUdQS0dfREVWU19BRENfQVJNX0FUOTFfQURDMQorCisjZW5k aWYgLy8gQ1lHT05DRV9ERVZTX0FEQ19BUk1fQVQ5MV9JTkwKZGlmZiAtciBh ZTgxNmM4M2YwODIgcGFja2FnZXMvZGV2cy9hZGMvYXJtL2F0OTEvY3VycmVu dC9zcmMvYWRjX2F0OTEuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6 MDA6MDAgMTk3MCArMDAwMAorKysgYi9wYWNrYWdlcy9kZXZzL2FkYy9hcm0v YXQ5MS9jdXJyZW50L3NyYy9hZGNfYXQ5MS5jCVRodSBNYXkgMjcgMjM6MjU6 MTQgMjAxMCArMDIwMApAQCAtMCwwICsxLDQ1NyBAQAorLy89PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLy8KKy8vICAgICAgYWRjX2F0OTEuYwor Ly8KKy8vICAgICAgQURDIGRyaXZlciBmb3IgQVQ5MSBvbiBjaGlwIEFEQwor Ly8KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICMjIyNF Q09TR1BMQ09QWVJJR0hUQkVHSU4jIyMjCisvLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGlzIGZpbGUgaXMg cGFydCBvZiBlQ29zLCB0aGUgRW1iZWRkZWQgQ29uZmlndXJhYmxlIE9wZXJh dGluZyBTeXN0ZW0uCisvLyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gZUNvcyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyCisvLyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorLy8gU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlcgorLy8gdmVyc2lvbi4KKy8vCisvLyBlQ29z IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dCBXSVRIT1VUCisvLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLy8gZm9yIG1vcmUg ZGV0YWlscy4KKy8vCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLy8gYWxv bmcgd2l0aCBlQ29zOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4sCisvLyA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCisv LworLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMg aW5zdGFudGlhdGUgdGVtcGxhdGVzIG9yIHVzZQorLy8gbWFjcm9zIG9yIGlu bGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxl IHRoaXMgZmlsZQorLy8gYW5kIGxpbmsgaXQgd2l0aCBvdGhlciB3b3JrcyB0 byBwcm9kdWNlIGEgd29yayBiYXNlZCBvbiB0aGlzIGZpbGUsCisvLyB0aGlz IGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcg d29yayB0byBiZSBjb3ZlcmVkIGJ5CisvLyB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UuIEhvd2V2ZXIgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlz IGZpbGUKKy8vIG11c3Qgc3RpbGwgYmUgbWFkZSBhdmFpbGFibGUgaW4gYWNj b3JkYW5jZSB3aXRoIHNlY3Rpb24gKDMpIG9mIHRoZSBHTlUKKy8vIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdjIuCisvLworLy8gVGhpcyBleGNlcHRpb24g ZG9lcyBub3QgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgYSB3 b3JrIGJhc2VkCisvLyBvbiB0aGlzIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBi eSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisvLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAjIyMj RUNPU0dQTENPUFlSSUdIVEVORCMjIyMKKy8vPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy8vIyMjIyNERVNDUklQVElPTkJFR0lOIyMjIworLy8K Ky8vIEF1dGhvcihzKTogICBVd2UgS2luZGxlciA8dXdlX2tpbmRsZXJAd2Vi LmRlPgorLy8gICAgICAgICAgICAgIFVwZGF0ZWQgZm9yIEF0bWVsIEFUOTEg ZGV2aWNlLCBjY291dGFuZCA8Y2NvdXRhbmRAc3RtaS5jb20+CisvLyBDb250 cmlidXRvcnM6CisvLyBEYXRlOiAgICAgICAgIDIwMTAtMDItMTUKKy8vIFB1 cnBvc2U6CisvLyBEZXNjcmlwdGlvbjoKKy8vCisvLyMjIyNERVNDUklQVElP TkVORCMjIyMKKy8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNMVURFUworLy89PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorI2luY2x1ZGUgPHBrZ2NvbmYv c3lzdGVtLmg+CisjaW5jbHVkZSA8cGtnY29uZi9kZXZzX2FkY19hcm1fYXQ5 MS5oPgorCisjaW5jbHVkZSA8Y3lnL2luZnJhL2N5Z190eXBlLmg+CisjaW5j bHVkZSA8Y3lnL2luZnJhL2N5Z19hc3MuaD4KKyNpbmNsdWRlIDxjeWcvaW5m cmEvZGlhZy5oPgorI2luY2x1ZGUgPGN5Zy9pby9hZGMuaD4KKyNpbmNsdWRl IDxjeWcvaGFsL2hhbF9hcmNoLmg+CisjaW5jbHVkZSA8Y3lnL2hhbC9oYWxf aW8uaD4KKyNpbmNsdWRlIDxjeWcvaGFsL2hhbF9pbnRyLmg+CisjaW5jbHVk ZSA8Y3lnL2hhbC9kcnZfYXBpLmg+CisKKyNpZiBDWUdQS0dfREVWU19BRENf QVJNX0FUOTFfREVCVUdfTEVWRUwgPiAwCisgICAjZGVmaW5lIGF0OTFfYWRj X3ByaW50ZihhcmdzLi4uKSBkaWFnX3ByaW50ZihhcmdzKQorI2Vsc2UKKyAg ICNkZWZpbmUgYXQ5MV9hZGNfcHJpbnRmKGFyZ3MuLi4pCisjZW5kaWYKKwor I2RlZmluZSBBVDkxX0FEQ19DSEVSX0NIeChfY2hfKSAgKDB4MSA8PCBfY2hf KQorI2RlZmluZSBBVDkxX0FEQ19DSEVSX0NEUngoX2NoXykgKF9jaF8gPDwg MikKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQSBUWVBFUworLy89 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordHlwZWRlZiBzdHJ1Y3Qg YXQ5MV9hZGNfaW5mbworeworICAgIGN5Z191aW50MzIgICAgICAgICAgICAg IGFkY19iYXNlOyAgICAgICAgICAvLyBiYXNlIGFkZHJlc3Mgb2YgQURDIHBl cmlwaGVyYWwKKyAgICBjeWdfdWludDggICAgICAgICAgICAgICBhZGNfcHJl c2NhbDsgICAgICAgLy8gQURDIHByZXNjYWwgdmFsdWUKKyAgICBjeWdfdWlu dDggICAgICAgICAgICAgICBhZGNfc3RhcnR1cF90aW1lOyAgLy8gQURDIFN0 YXJ0dXAgVGltZSB2YWx1ZQorICAgIGN5Z191aW50OCAgICAgICAgICAgICAg IGFkY19zaHRpbTsgICAgICAgICAvLyBBREMgU0hUSU0gdmFsdWUKKyAgICBj eWdfdWludDggICAgICAgICAgICAgICB0aW1lcl9pZDsgICAgICAgICAgLy8g c2VsZWN0IHRpbWVyCisgICAgY3lnX3VpbnQzMiAgICAgICAgICAgICAgdGlt ZXJfYmFzZTsgICAgICAgIC8vIGJhc2UgYWRkcmVzcyBvZiBUaW1lciBwZXJp cGhlcmFsCisgICAgY3lnX3VpbnQzMiAgICAgICAgICAgICAgdGNfYmFzZTsg ICAgICAgICAgIC8vIGJhc2UgYWRkcmVzcyBvZiBUaW1lciBjaGFubmVsCisg ICAgY3lnX3ZlY3Rvcl90ICAgICAgICAgICAgdGltZXJfdmVjdG9yOyAgICAg IC8vIGludGVycnVwdCB2ZWN0b3IgbnVtYmVyCisgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgdGltZXJfaW50cHJpbzsgICAgIC8vIGludGVycnVwdCBw cmlvcml0eSBvZiBBREMgaW50ZXJydXB0CisgICAgY3lnX3VpbnQzMiAgICAg ICAgICAgICAgdGltZXJfY250OyAgICAgICAgIC8vIFRpbWVyIHZhbHVlCisg ICAgY3lnX3VpbnQ4ICAgICAgICAgICAgICAgdGltZXJfY2xrOyAgICAgICAg IC8vIFRpbWVyIGNsb2NrIHNldHRpbmcKKyAgICBjeWdfdWludDMyICAgICAg ICAgICAgICByZXNvbHV0aW9uOworICAgIGN5Z19oYW5kbGVfdCAgICAgICAg ICAgIGludF9oYW5kbGU7ICAgICAgICAvLyBGb3IgaW5pdGlhbGl6aW5nIHRo ZSBpbnRlcnJ1cHQKKyAgICBjeWdfaW50ZXJydXB0ICAgICAgICAgICBpbnRf ZGF0YTsKKyAgICBzdHJ1Y3QgY3lnX2FkY19jaGFubmVsICpjaGFubmVsW0FU OTFfTUFYX0FEQ19DSEFOXTsgLy8gc3RvcmVzIHJlZmVyZW5jZXMgdG8gY2hh bm5lbCBvYmplY3RzCisgICAgY3lnX3VpbnQ4ICAgICAgICAgICAgICAgY2hh bl9tYXNrOyAgICAgICAgIC8vIG1hc2sgdGhhdCBpbmRpY2F0ZXMgY2hhbm5l bHMgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBieSBBREMgZHJpdmVyCit9IGF0OTFfYWRjX2luZm87 CisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgREVDTEFSQVRJT05TCisvLz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CitzdGF0aWMgYm9vbCBhdDkx X2FkY19pbml0KHN0cnVjdCBjeWdfZGV2dGFiX2VudHJ5ICp0YWIpOworc3Rh dGljIEN5Z19FcnJObyBhdDkxX2FkY19sb29rdXAoc3RydWN0IGN5Z19kZXZ0 YWJfZW50cnkgKip0YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY3lnX2RldnRhYl9lbnRyeSAgKnN1Yl90YWIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICAgICAgICAgICAgICAgKm5hbWUpOworc3RhdGljIHZvaWQgYXQ5MV9hZGNf ZW5hYmxlKCBjeWdfYWRjX2NoYW5uZWwgKmNoYW4gKTsKK3N0YXRpYyB2b2lk IGF0OTFfYWRjX2Rpc2FibGUoIGN5Z19hZGNfY2hhbm5lbCAqY2hhbiApOwor c3RhdGljIHZvaWQgYXQ5MV9hZGNfc2V0X3JhdGUoIGN5Z19hZGNfY2hhbm5l bCAqY2hhbiwgY3lnX3VpbnQzMiByYXRlICk7CitzdGF0aWMgY3lnX3VpbnQz MiBhdDkxX2FkY19pc3IoY3lnX3ZlY3Rvcl90IHZlY3RvciwgY3lnX2FkZHJ3 b3JkX3QgZGF0YSk7CitzdGF0aWMgdm9pZCBhdDkxX2FkY19kc3IoY3lnX3Zl Y3Rvcl90IHZlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj eWdfdWNvdW50MzIgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3lnX2FkZHJ3b3JkX3QgZGF0YSk7CisKKy8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy8vIERyaXZlciBmdW5jdGlvbnM6CitDWUdfQURD X0ZVTkNUSU9OUyggYXQ5MV9hZGNfZnVucywKKyAgICAgICAgICAgICAgICAg ICBhdDkxX2FkY19lbmFibGUsCisgICAgICAgICAgICAgICAgICAgYXQ5MV9h ZGNfZGlzYWJsZSwKKyAgICAgICAgICAgICAgICAgICBhdDkxX2FkY19zZXRf cmF0ZSApOworCisKKyNpbmNsdWRlIENZR0RBVF9ERVZTX0FEQ19BUk1fQVQ5 MV9JTkwgLy8gSW5zdGFudGlhdGUgQURDcworCisvLz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBm cm9tIHRoZSBkZXZpY2UgSU8gaW5mcmFzdHJ1Y3R1cmUgdG8gaW5pdGlhbGl6 ZQorLy8gdGhlIGRldmljZS4gSXQgc2hvdWxkIHBlcmZvcm0gYW55IHdvcmsg bmVlZGVkIHRvIHN0YXJ0IHVwIHRoZSBkZXZpY2UsCisvLyBzaG9ydCBvZiBh Y3R1YWxseSBzdGFydGluZyB0aGUgZ2VuZXJhdGlvbiBvZiBzYW1wbGVzLiBU aGlzIGZ1bmN0aW9uIHdpbGwKKy8vIGJlIGNhbGxlZCBmb3IgZWFjaCBjaGFu bmVsLCBzbyBpZiB0aGVyZSBpcyBpbml0aWFsaXphdGlvbiB0aGF0IG9ubHkg bmVlZHMKKy8vIHRvIGJlIGRvbmUgb25jZSwgc3VjaCBhcyBjcmVhdGluZyBh bmQgaW50ZXJydXB0IG9iamVjdCwgdGhlbiBjYXJlIHNob3VsZAorLy8gYmUg dGFrZW4gdG8gZG8gdGhpcy4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYWxzbyBj YWxsIGN5Z19hZGNfZGV2aWNlX2luaXQoKQorLy8gdG8gaW5pdGlhbGl6ZSB0 aGUgZ2VuZXJpYyBwYXJ0cyBvZiB0aGUgZHJpdmVyLgorLy89PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorc3RhdGljIGJvb2wgYXQ5MV9hZGNfaW5p dChzdHJ1Y3QgY3lnX2RldnRhYl9lbnRyeSAqdGFiKQoreworICAgIGN5Z19h ZGNfY2hhbm5lbCAqY2hhbiAgID0gKGN5Z19hZGNfY2hhbm5lbCAqKXRhYi0+ cHJpdjsKKyAgICBjeWdfYWRjX2RldmljZSAqZGV2aWNlICA9IGNoYW4tPmRl dmljZTsKKyAgICBhdDkxX2FkY19pbmZvICppbmZvICAgICA9IGRldmljZS0+ ZGV2X3ByaXY7CisgICAgY3lnX3VpbnQzMiByZWd2YWw7CisKKyAgICBpZiAo IWluZm8tPmludF9oYW5kbGUpCisgICAgeworICAgICAgIGN5Z19kcnZfaW50 ZXJydXB0X2NyZWF0ZShpbmZvLT50aW1lcl92ZWN0b3IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT50aW1lcl9pbnRwcmlvLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3lnX2FkZHJ3b3Jk X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm YXQ5MV9hZGNfaXNyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmYXQ5MV9hZGNfZHNyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmKGluZm8tPmludF9oYW5kbGUpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmKGluZm8tPmludF9kYXRhKSk7CisgICAgICAgY3ln X2Rydl9pbnRlcnJ1cHRfYXR0YWNoKGluZm8tPmludF9oYW5kbGUpOworICAg ICAgIGN5Z19kcnZfaW50ZXJydXB0X21hc2soaW5mby0+dGltZXJfdmVjdG9y KTsKKworICAgICAgIC8vIFJlc2V0IEFEQworICAgICAgIEhBTF9XUklURV9V SU5UMzIoKGluZm8tPmFkY19iYXNlICsgQVQ5MV9BRENfQ1IpLCBBVDkxX0FE Q19DUl9TV1JTVCk7CisKKyAgICAgICAvLyBEaXNhYmxlIGNvdW50ZXIgaW50 ZXJydXB0cworICAgICAgIEhBTF9XUklURV9VSU5UMzIoaW5mby0+dGNfYmFz ZStBVDkxX1RDX0NDUiwgQVQ5MV9UQ19DQ1JfQ0xLRElTKTsKKyAgICAgICBI QUxfV1JJVEVfVUlOVDMyKGluZm8tPnRjX2Jhc2UrQVQ5MV9UQ19JRFIsIDB4 ZmZmZmZmZmYpOworCisgICAgICAgLy8gQ2xlYXIgc3RhdHVzIGJpdAorICAg ICAgIEhBTF9SRUFEX1VJTlQzMihpbmZvLT50Y19iYXNlICsgQVQ5MV9UQ19T UiwgcmVndmFsKTsKKworICAgICAgIC8vIEVuYWJsZSBwZXJpcGhlcmFsIGNs b2NrcyBmb3IgVEMKKyAgICAgICBIQUxfV1JJVEVfVUlOVDMyKEFUOTFfUE1D K0FUOTFfUE1DX1BDRVIsICBcCisgICAgICAgICAgICAgKChBVDkxX1BNQ19Q Q0VSX1RDMCkgPDwgaW5mby0+dGltZXJfaWQpKTsKKworICAgICAgIC8vCisg ICAgICAgLy8gRGlzYWJsZSBhbGwgaW50ZXJydXB0cywgYWxsIGNoYW5uZWxz CisgICAgICAgLy8KKyAgICAgICBIQUxfV1JJVEVfVUlOVDMyKChpbmZvLT5h ZGNfYmFzZSArIEFUOTFfQURDX0NIRFIpLCBcCisgICAgICAgICAgICAgICAg ICAgICBBVDkxX0FEQ19DSEVSX0NIMCAgfFwKKyAgICAgICAgICAgICAgICAg ICAgIEFUOTFfQURDX0NIRVJfQ0gxICB8XAorICAgICAgICAgICAgICAgICAg ICAgQVQ5MV9BRENfQ0hFUl9DSDIgIHxcCisgICAgICAgICAgICAgICAgICAg ICBBVDkxX0FEQ19DSEVSX0NIMyAgfFwKKyAgICAgICAgICAgICAgICAgICAg IEFUOTFfQURDX0NIRVJfQ0g0ICB8XAorICAgICAgICAgICAgICAgICAgICAg QVQ5MV9BRENfQ0hFUl9DSDUgIHxcCisgICAgICAgICAgICAgICAgICAgICBB VDkxX0FEQ19DSEVSX0NINiAgfFwKKyAgICAgICAgICAgICAgICAgICAgIEFU OTFfQURDX0NIRVJfQ0g3KTsKKyAgICAgICBIQUxfV1JJVEVfVUlOVDMyKChp bmZvLT5hZGNfYmFzZSArIEFUOTFfQURDX0lEUiksIFwKKyAgICAgICAgICAg ICAgICAgICAgIEFUOTFfQURDX0NIRVJfQ0gwICB8XAorICAgICAgICAgICAg ICAgICAgICAgQVQ5MV9BRENfQ0hFUl9DSDEgIHxcCisgICAgICAgICAgICAg ICAgICAgICBBVDkxX0FEQ19DSEVSX0NIMiAgfFwKKyAgICAgICAgICAgICAg ICAgICAgIEFUOTFfQURDX0NIRVJfQ0gzICB8XAorICAgICAgICAgICAgICAg ICAgICAgQVQ5MV9BRENfQ0hFUl9DSDQgIHxcCisgICAgICAgICAgICAgICAg ICAgICBBVDkxX0FEQ19DSEVSX0NINSAgfFwKKyAgICAgICAgICAgICAgICAg ICAgIEFUOTFfQURDX0NIRVJfQ0g2ICB8XAorICAgICAgICAgICAgICAgICAg ICAgQVQ5MV9BRENfQ0hFUl9DSDcpOworCisgICAgICAgLy8KKyAgICAgICAv LyBzZXR1cCB0aGUgZGVmYXVsdCBzYW1wbGUgcmF0ZQorICAgICAgIC8vCisg ICAgICAgYXQ5MV9hZGNfc2V0X3JhdGUoY2hhbiwgY2hhbi0+ZGV2aWNlLT5j b25maWcucmF0ZSk7CisKKyAgICAgICAvLyBzZXR1cCBBREMgbW9kZQorICAg ICAgIEhBTF9XUklURV9VSU5UMzIoKGluZm8tPmFkY19iYXNlICsgQVQ5MV9B RENfTVIpLCBcCisgICAgICAgICAgICAgICAgICAgICggKCBpbmZvLT5hZGNf cHJlc2NhbCAgPDwgQVQ5MV9BRENfTVJfUFJFU0NBTF9TSElGVCApICYgXAor ICAgICAgICAgICAgICAgICAgICAgICAgQVQ5MV9BRENfTVJfUFJFU0NBTF9N QVNLICkgfCBcCisgICAgICAgICAgICAgICAgICAgICggKCBpbmZvLT5hZGNf c3RhcnR1cF90aW1lICAgPDwgQVQ5MV9BRENfTVJfU1RBUlRVUF9TSElGVCAp ICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgQVQ5MV9BRENfTVJfU1RB UlRVUF9NQVNLICkgfCBcCisgICAgICAgICAgICAgICAgICAgICggKCAgaW5m by0+YWRjX3NodGltIDw8IEFUOTFfQURDX01SX1NIVElNX1NISUZUICkgJiBc CisgICAgICAgICAgICAgICAgICAgICAgICBBVDkxX0FEQ19NUl9TSFRJTV9N QVNLICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICBBVDkxX0FEQ19N Ul9UUkdTRUxfVElPQTAgIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAg aW5mby0+cmVzb2x1dGlvbik7CisKKworICAgIH0gLy8gaWYgKCFpbmZvLT5p bnRfaGFuZGxlKQorCisgICAgY3lnX2FkY19kZXZpY2VfaW5pdChkZXZpY2Up OyAvLyBpbml0aWFsaXplIGdlbmVyaWMgcGFydHMgb2YgZHJpdmVyCisKKyAg ICByZXR1cm4gdHJ1ZTsKK30KKworCisvLz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEg Y2xpZW50IGxvb2tzIHVwIG9yIG9wZW5zIGEgY2hhbm5lbC4gSXQKKy8vIHNo b3VsZCBjYWxsIGN5Z19hZGNfY2hhbm5lbF9pbml0KCkgdG8gaW5pdGlhbGl6 ZSB0aGUgZ2VuZXJpYyBwYXJ0IG9mCisvLyB0aGUgY2hhbm5lbC4gSXQgc2hv dWxkIGFsc28gcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyBuZWVkZWQgdG8gc3Rh cnQgdGhlCisvLyBjaGFubmVsIGdlbmVyYXRpbmcgc2FtcGxlcy4KKy8vPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3N0YXRpYyBDeWdfRXJyTm8g YXQ5MV9hZGNfbG9va3VwKHN0cnVjdCBjeWdfZGV2dGFiX2VudHJ5ICoqdGFi LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGN5Z19kZXZ0YWJfZW50cnkgICpzdWJfdGFiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICAgICAg ICpuYW1lKQoreworICAgIGN5Z19hZGNfY2hhbm5lbCAgKmNoYW4gICAgID0g KGN5Z19hZGNfY2hhbm5lbCAqKSgqdGFiKS0+cHJpdjsKKyAgICBhdDkxX2Fk Y19pbmZvICppbmZvICAgICA9IGNoYW4tPmRldmljZS0+ZGV2X3ByaXY7CisK KyAgICBpbmZvLT5jaGFubmVsW2NoYW4tPmNoYW5uZWxdID0gY2hhbjsKKyAg ICBjeWdfYWRjX2NoYW5uZWxfaW5pdChjaGFuKTsgLy8gaW5pdGlhbGl6ZSBn ZW5lcmljIHBhcnRzIG9mIGNoYW5uZWwKKworICAgIC8vCisgICAgLy8gVGhl IGdlbmVyaWMgQURDIG1hbnVhbCBzYXlzOiBXaGVuIGEgY2hhbm5lbCBpcyBm aXJzdCBsb29rZWQgdXAgb3IKKyAgICAvLyBvcGVuZWQsIHRoZW4gaXQgaXMg YXV0b21hdGljYWxseSBlbmFibGVkIGFuZCBzYW1wbGVzIHN0YXJ0IHRvCisg ICAgLy8gYWNjdW11bGF0ZSAtIHNvIHdlIHN0YXJ0IHRoZSBjaGFubmVsIG5v dworICAgIC8vCisgICAgY2hhbi0+ZW5hYmxlZCA9IHRydWU7CisgICAgYXQ5 MV9hZGNfZW5hYmxlKGNoYW4pOworCisgICAgcmV0dXJuIEVOT0VSUjsKK30K KworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBUaGlz IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBnZW5lcmljIEFEQyBwYWNr YWdlIHRvIGVuYWJsZSB0aGUKKy8vIGNoYW5uZWwgaW4gcmVzcG9uc2UgdG8g YSBDWUdfSU9fU0VUX0NPTkZJR19BRENfRU5BQkxFIGNvbmZpZyBvcGVyYXRp b24uCisvLyBJdCBzaG91bGQgdGFrZSBhbnkgc3RlcHMgbmVlZGVkIHRvIHN0 YXJ0IHRoZSBjaGFubmVsIGdlbmVyYXRpbmcgc2FtcGxlcworLy89PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorc3RhdGljIHZvaWQgYXQ5MV9hZGNf ZW5hYmxlKGN5Z19hZGNfY2hhbm5lbCAqY2hhbikKK3sKKyAgICBhdDkxX2Fk Y19pbmZvICppbmZvICAgICAgPSBjaGFuLT5kZXZpY2UtPmRldl9wcml2Owor CisgICAgLy8gRW5hYmxlIHRoZSBjaGFubmVsCisgICAgSEFMX1dSSVRFX1VJ TlQzMigoaW5mby0+YWRjX2Jhc2UgKyBBVDkxX0FEQ19DSEVSKSwgXAorICAg ICAgICAgICAgICAgICAgICAgIEFUOTFfQURDX0NIRVJfQ0h4KGNoYW4tPmNo YW5uZWwpKTsKKworICAgIC8vCisgICAgLy8gVW5tYXNrIGludGVycnVwdCBh cyBzb29uIGFzIDEgY2hhbm5lbCBpcyBlbmFibGUKKyAgICAvLworICAgIGlm ICghaW5mby0+Y2hhbl9tYXNrKQorICAgIHsKKyAgICAgICBjeWdfZHJ2X2lu dGVycnVwdF91bm1hc2soaW5mby0+dGltZXJfdmVjdG9yKTsKKworICAgICAg IC8vIEVuYWJsZSB0aW1lciBpbnRlcnJ1cHQKKyAgICAgICBIQUxfV1JJVEVf VUlOVDMyKGluZm8tPnRjX2Jhc2UrQVQ5MV9UQ19JRVIsIEFUOTFfVENfSUVS X0NQQyk7CisKKyAgICAgICAvLyBFbmFibGUgdGhlIGNsb2NrCisgICAgICAg SEFMX1dSSVRFX1VJTlQzMihpbmZvLT50Y19iYXNlK0FUOTFfVENfQ0NSLCBB VDkxX1RDX0NDUl9UUklHIHwgQVQ5MV9UQ19DQ1JfQ0xLRU4pOworCisgICAg ICAgLy8gU3RhcnQgdGltZXIKKyAgICAgICBIQUxfV1JJVEVfVUlOVDMyKGlu Zm8tPnRjX2Jhc2UrQVQ5MV9UQ19DQ1IsICBBVDkxX1RDX0NDUl9UUklHKTsK KworICAgICAgIC8vIFN0YXJ0IEFEQyBzYW1wbGluZworICAgICAgIEhBTF9X UklURV9VSU5UMzIoKGluZm8tPmFkY19iYXNlICsgQVQ5MV9BRENfQ1IpLCBB VDkxX0FEQ19DUl9TVEFSVCk7CisKKyAgICB9CisKKyAgICBpbmZvLT5jaGFu X21hc2sgfD0gQVQ5MV9BRENfQ0hFUl9DSHgoY2hhbi0+Y2hhbm5lbCk7CisK K30KKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBU aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBnZW5lcmljIEFEQyBw YWNrYWdlIHRvIGVuYWJsZSB0aGUKKy8vIGNoYW5uZWwgaW4gcmVzcG9uc2Ug dG8gYSBDWUdfSU9fU0VUX0NPTkZJR19BRENfRElTQUJMRSBjb25maWcgb3Bl cmF0aW9uLgorLy8gSXQgc2hvdWxkIHRha2UgYW55IHN0ZXBzIG5lZWRlZCB0 byBzdG9wIHRoZSBjaGFubmVsIGdlbmVyYXRpbmcgc2FtcGxlcy4KKy8vPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3N0YXRpYyB2b2lkIGF0OTFf YWRjX2Rpc2FibGUoY3lnX2FkY19jaGFubmVsICpjaGFuKQoreworICAgIGF0 OTFfYWRjX2luZm8gKmluZm8gID0gY2hhbi0+ZGV2aWNlLT5kZXZfcHJpdjsK KyAgICBjeWdfdWludDMyIHNyOworCisgICAgaW5mby0+Y2hhbl9tYXNrICY9 IH4gQVQ5MV9BRENfQ0hFUl9DSHgoY2hhbi0+Y2hhbm5lbCk7CisKKyAgICAv LyBEaXNhYmxlIHRoZSBjaGFubmVsCisgICAgSEFMX1dSSVRFX1VJTlQzMigo aW5mby0+YWRjX2Jhc2UgKyBBVDkxX0FEQ19DSERSKSwgXAorICAgICAgICAg ICAgICAgICAgICAgIEFUOTFfQURDX0NIRVJfQ0h4KGNoYW4tPmNoYW5uZWwp KTsKKworICAgIC8vCisgICAgLy8gSWYgbm8gY2hhbm5lbCBpcyBlbmFibGVk IHRoZSB3ZSBkaXNhYmxlIGludGVycnVwdHMgbm93CisgICAgLy8KKyAgICBp ZiAoIWluZm8tPmNoYW5fbWFzaykKKyAgICB7CisgICAgICAgY3lnX2Rydl9p bnRlcnJ1cHRfbWFzayhpbmZvLT50aW1lcl92ZWN0b3IpOworCisgICAgICAg Ly8gQ2xlYXIgaW50ZXJydXB0CisgICAgICAgSEFMX1JFQURfVUlOVDMyKGlu Zm8tPnRjX2Jhc2UrQVQ5MV9UQ19TUiwgc3IpOworCisgICAgICAgLy8gRGlz YWJsZSAgdGltZXIgaW50ZXJydXB0CisgICAgICAgSEFMX1dSSVRFX1VJTlQz MihpbmZvLT50Y19iYXNlK0FUOTFfVENfSURSLCBBVDkxX1RDX0lFUl9DUEMp OworCisgICAgICAgLy8gRGlzYWJsZSB0aGUgY2xvY2sKKyAgICAgICBIQUxf V1JJVEVfVUlOVDMyKGluZm8tPnRjX2Jhc2UrQVQ5MV9UQ19DQ1IsIEFUOTFf VENfQ0NSX0NMS0RJUyk7CisKKyAgICB9Cit9CisKKworLy89PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgZnJvbSB0aGUgZ2VuZXJpYyBBREMgcGFja2FnZSB0byBlbmFibGUgdGhl CisvLyBjaGFubmVsIGluIHJlc3BvbnNlIHRvIGEgQ1lHX0lPX1NFVF9DT05G SUdfQURDX1JBVEUgY29uZmlnIG9wZXJhdGlvbi4KKy8vIEl0IHNob3VsZCB0 YWtlIGFueSBzdGVwcyBuZWVkZWQgdG8gY2hhbmdlIHRoZSBzYW1wbGUgcmF0 ZSBvZiB0aGUgY2hhbm5lbCwKKy8vIG9yIG9mIHRoZSBlbnRpcmUgZGV2aWNl LgorLy8gV2UgdXNlIGEgdGltZXIgY2hhbm5lbCB0byBnZW5lcmF0ZSB0aGUg aW50ZXJydXB0cyBmb3Igc2FtcGxpbmcgdGhlCisvLyBhbmFsb2cgY2hhbm5l bHMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3N0YXRpYyB2 b2lkIGF0OTFfYWRjX3NldF9yYXRlKCBjeWdfYWRjX2NoYW5uZWwgKmNoYW4s IGN5Z191aW50MzIgcmF0ZSkKK3sKKyAgICBjeWdfYWRjX2RldmljZSAgICpk ZXZpY2UgPSBjaGFuLT5kZXZpY2U7CisgICAgYXQ5MV9hZGNfaW5mbyAqaW5m byAgID0gKGF0OTFfYWRjX2luZm8gKilkZXZpY2UtPmRldl9wcml2OworICAg IGN5Z191aW50OCB0aW1lcl9jbGsgICA9IEFUOTFfVENfQ01SX0NMS1NfTUNL MjsKKyAgICBjeWdfdWludDMyIHRtcl9wZXJpb2QgPSBDWUdOVU1fSEFMX0FS TV9BVDkxX0NMT0NLX1NQRUVEIC8gKCByYXRlIDw8IDEpOworCisgICAgaWYo IHRtcl9wZXJpb2QgPiAweGZmZmYgKQorICAgIHsKKyAgICAgICB0bXJfcGVy aW9kID0gQ1lHTlVNX0hBTF9BUk1fQVQ5MV9DTE9DS19TUEVFRCAvICggcmF0 ZSA8PCA1KTsKKyAgICAgICB0aW1lcl9jbGsgID0gQVQ5MV9UQ19DTVJfQ0xL U19NQ0szMjsKKyAgICB9CisKKyAgICBpZiggdG1yX3BlcmlvZCA+IDB4ZmZm ZiApCisgICAgeworICAgICAgIHRtcl9wZXJpb2QgPSBDWUdOVU1fSEFMX0FS TV9BVDkxX0NMT0NLX1NQRUVEIC8gKCByYXRlIDw8IDcpOworICAgICAgIHRp bWVyX2NsayAgPSBBVDkxX1RDX0NNUl9DTEtTX01DSzEyODsKKyAgICB9CisK KyAgICBpZiggdG1yX3BlcmlvZCA+IDB4ZmZmZiApCisgICAgeworICAgICAg IHRtcl9wZXJpb2QgPSBDWUdOVU1fSEFMX0FSTV9BVDkxX0NMT0NLX1NQRUVE IC8gKCByYXRlIDw8IDEwKTsKKyAgICAgICB0aW1lcl9jbGsgID0gQVQ5MV9U Q19DTVJfQ0xLU19NQ0sxMDI0OworICAgIH0KKworICAgIGlmKCB0bXJfcGVy aW9kID4gMHhmZmZmICkKKyAgICB7CisgICAgICAgdG1yX3BlcmlvZCA9IDB4 ZmZmZjsKKyAgICAgICB0aW1lcl9jbGsgID0gQVQ5MV9UQ19DTVJfQ0xLU19N Q0sxMDI0OworICAgICAgIGF0OTFfYWRjX3ByaW50ZigiQVQ5MSBBREMgdGlt ZXIsIHJhdGUgdG9vIGhpZ2ghIik7CisgICAgfQorCisgICAgZGV2aWNlLT5j b25maWcucmF0ZSA9IHJhdGU7CisgICAgaW5mby0+dGltZXJfY2xrID0gdGlt ZXJfY2xrOworICAgIGluZm8tPnRpbWVyX2NudCA9IHRtcl9wZXJpb2Q7CisK KyAgICAvLyBTZXQgdGltZXIgdmFsdWVzCisgICAgSEFMX1dSSVRFX1VJTlQz MihpbmZvLT50Y19iYXNlK0FUOTFfVENfQ01SLCAgQVQ5MV9UQ19DTVJfQ1BD VFJHIHwgaW5mby0+dGltZXJfY2xrKTsKKyAgICBIQUxfV1JJVEVfVUlOVDMy KGluZm8tPnRjX2Jhc2UrQVQ5MV9UQ19SQywgIGluZm8tPnRpbWVyX2NudCk7 CisKKyAgICBhdDkxX2FkY19wcmludGYoIkFUOTEgQURDIFRpbWVyIHNldHRp bmdzICVkLCAlZCIsIGluZm8tPnRpbWVyX2NsaywgaW5mby0+dGltZXJfY250 KTsKKworICAgIHJldHVybjsKK30KKworCisvLz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisvLyBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBJU1IgYXR0 YWNoZWQgdG8gdGhlIEFEQyBkZXZpY2UncyBpbnRlcnJ1cHQgdmVjdG9yLgor Ly8gSXQgaXMgcmVzcG9uc2libGUgZm9yIHJlYWRpbmcgc2FtcGxlcyBmcm9t IHRoZSBjaGFubmVscyBhbmQgcGFzc2luZyB0aGVtCisvLyBvbiB0byB0aGUg Z2VuZXJpYyBsYXllci4gSXQgbmVlZHMgdG8gY2hlY2sgZWFjaCBjaGFubmVs IGZvciBkYXRhLCBhbmQgY2FsbAorLy8gY3lnX2FkY19yZWNlaXZlX3NhbXBs ZSgpIGZvciBlYWNoIG5ldyBzYW1wbGUgYXZhaWxhYmxlLCBhbmQgdGhlbiBy ZWFkeSB0aGUKKy8vIGRldmljZSBmb3IgdGhlIG5leHQgaW50ZXJydXB0Lgor Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorc3RhdGljIGN5Z191 aW50MzIgYXQ5MV9hZGNfaXNyKGN5Z192ZWN0b3JfdCB2ZWN0b3IsIGN5Z19h ZGRyd29yZF90IGRhdGEpCit7CisgICAgY3lnX2FkY19kZXZpY2UgICAqZGV2 aWNlID0gKGN5Z19hZGNfZGV2aWNlICopIGRhdGE7CisgICAgYXQ5MV9hZGNf aW5mbyAqaW5mbyAgID0gKGF0OTFfYWRjX2luZm8gKilkZXZpY2UtPmRldl9w cml2OworICAgIGN5Z191aW50MzIgICAgICAgIHJlZ3ZhbCwgIGFkY19zdGF0 dXM7CisgICAgY3lnX3VpbnQzMiAgICAgICAgcmVzID0gMDsKKyAgICBjeWdf YWRjX3NhbXBsZV90ICBhZGNkYXRhOworICAgIGN5Z191aW50MzIgc3I7CisK KyAgICBjeWdfdWludDggYWN0aXZlX2NoYW5uZWxzID0gaW5mby0+Y2hhbl9t YXNrOworICAgIGN5Z191aW50OCBjaGFubmVsX25vID0gMDsKKworICAgIC8v IENsZWFyIHRpbWVyIGludGVycnVwdAorICAgIEhBTF9SRUFEX1VJTlQzMihp bmZvLT50Y19iYXNlK0FUOTFfVENfU1IsIHNyKTsKKworICAgIC8vIENoZWNr IG9uIGNoYW5uZWwgY29udmVyc2lvbiBkb25lCisgICAgSEFMX1JFQURfVUlO VDMyKGluZm8tPmFkY19iYXNlICsgQVQ5MV9BRENfU1IsIGFkY19zdGF0dXMp OworCisgICAgd2hpbGUgKGFjdGl2ZV9jaGFubmVscykKKyAgICB7CisgICAg ICAgIGlmIChhY3RpdmVfY2hhbm5lbHMgJiAweDAxKQorICAgICAgICB7Cisg ICAgICAgICAgICAvLyBJZiBBREMgY29udmVyc2lvbiBkb25lLCBzYXZlIHNh bXBsZQorICAgICAgICAgICAgaWYoYWRjX3N0YXR1cyAmIEFUOTFfQURDX0NI RVJfQ0h4KGNoYW5uZWxfbm8pKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBIQUxfUkVBRF9VSU5UMzIoKGluZm8tPmFkY19iYXNlICsgQVQ5MV9B RENfQ0RSMCArIEFUOTFfQURDX0NIRVJfQ0RSeChjaGFubmVsX25vKSksIHJl Z3ZhbCk7CisgICAgICAgICAgICAgIGFkY2RhdGEgPSByZWd2YWwgJiAweDNG RjsKKyAgICAgICAgICAgICAgcmVzIHw9IENZR19JU1JfSEFORExFRAorICAg ICAgICAgICAgICAgIHwgIGN5Z19hZGNfcmVjZWl2ZV9zYW1wbGUoaW5mby0+ Y2hhbm5lbFtjaGFubmVsX25vXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkY2RhdGEpOworICAgICAgICAgICAgfQor ICAgICAgICB9IC8vIGlmIChhY3RpdmVfY2hhbm5lbHMgJiAweDAxKQorICAg ICAgICBhY3RpdmVfY2hhbm5lbHMgPj49IDE7CisgICAgICAgIGNoYW5uZWxf bm8rKzsKKyAgICB9IC8vIHdoaWxlIChhY3RpdmVfY2hhbm5lbHMpCisKKyAg ICAvLyBSZXN0YXJ0IHNhbXBsaW5nCisgICAgSEFMX1dSSVRFX1VJTlQzMigo aW5mby0+YWRjX2Jhc2UgKyBBVDkxX0FEQ19DUiksIEFUOTFfQURDX0NSX1NU QVJUKTsKKworICAgIGN5Z19kcnZfaW50ZXJydXB0X2Fja25vd2xlZGdlKGlu Zm8tPnRpbWVyX3ZlY3Rvcik7CisKKyAgICByZXR1cm4gcmVzOworfQorCisK Ky8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRoaXMgZnVu Y3Rpb24gaXMgdGhlIERTUiBhdHRhY2hlZCB0byB0aGUgQURDIGRldmljZSdz IGludGVycnVwdCB2ZWN0b3IuCisvLyBJdCBpcyBjYWxsZWQgYnkgdGhlIGtl cm5lbCBpZiB0aGUgSVNSIHJldHVybiB2YWx1ZSBjb250YWlucyB0aGUKKy8v IENZR19JU1JfSEFORExFRCBiaXQuIEl0IG5lZWRzIHRvIGNhbGwgY3lnX2Fk Y193YWtldXAoKSBmb3IgZWFjaCBjaGFubmVsCisvLyB0aGF0IGhhcyBpdHMg d2FrZXVwIGZpZWxkIHNldC4KKy8vPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK3N0YXRpYyB2b2lkIGF0OTFfYWRjX2RzcihjeWdfdmVjdG9yX3Qg dmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5Z191Y291 bnQzMiBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeWdf YWRkcndvcmRfdCBkYXRhKQoreworICAgIGN5Z19hZGNfZGV2aWNlICAgKmRl dmljZSAgICAgICAgICA9IChjeWdfYWRjX2RldmljZSAqKSBkYXRhOworICAg IGF0OTFfYWRjX2luZm8gKmluZm8gICAgICAgICAgICA9IGRldmljZS0+ZGV2 X3ByaXY7CisgICAgY3lnX3VpbnQ4ICAgICAgICAgYWN0aXZlX2NoYW5uZWxz ID0gaW5mby0+Y2hhbl9tYXNrOworICAgIGN5Z191aW50OCAgICAgICAgIGNo YW5fbm8gICAgICAgICA9IDA7CisKKyAgICB3aGlsZSAoYWN0aXZlX2NoYW5u ZWxzKQorICAgIHsKKyAgICAgICAgaWYgKGFjdGl2ZV9jaGFubmVscyAmIDB4 MDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKGluZm8tPmNoYW5uZWxb Y2hhbl9ub10tPndha2V1cCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBjeWdfYWRjX3dha2V1cChpbmZvLT5jaGFubmVsW2NoYW5fbm9dKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjaGFuX25vKys7 CisgICAgICAgIGFjdGl2ZV9jaGFubmVscyA+Pj0gMTsKKyAgICB9Cit9CisK KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGVvZiBh ZGNfYXQ5MS5jCmRpZmYgLXIgYWU4MTZjODNmMDgyIHBhY2thZ2VzL2RldnMv YWRjL2FybS9hdDkxL2N1cnJlbnQvdGVzdHMvYXQ5MV9hZGNfdGVzdC5jCi0t LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisr KyBiL3BhY2thZ2VzL2RldnMvYWRjL2FybS9hdDkxL2N1cnJlbnQvdGVzdHMv YXQ5MV9hZGNfdGVzdC5jCVRodSBNYXkgMjcgMjM6MjU6MTkgMjAxMCArMDIw MApAQCAtMCwwICsxLDI5MCBAQAorLy89PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLy8KKy8vICAgICAgYXQ5MV9hZGNfdGVzdC5jCisvLworLy8g ICAgICBBREMgZHJpdmVyIGZvciBBVDkxIG9uIGNoaXAgQURDCisvLworLy89 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gIyMjI0VDT1NHUExD T1BZUklHSFRCRUdJTiMjIyMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IGVDb3MsIHRoZSBFbWJlZGRlZCBDb25maWd1cmFibGUgT3BlcmF0aW5nIFN5 c3RlbS4KKy8vIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKy8vCisvLyBlQ29zIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIKKy8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisvLyBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyCisvLyB2ZXJzaW9uLgorLy8KKy8vIGVDb3MgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0IFdJVEhPVVQKKy8vIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorLy8g RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisvLyBmb3IgbW9yZSBkZXRhaWxz LgorLy8KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisvLyBhbG9uZyB3aXRo IGVDb3M7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiwKKy8vIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KKy8vCisvLyBB cyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50 aWF0ZSB0ZW1wbGF0ZXMgb3IgdXNlCisvLyBtYWNyb3Mgb3IgaW5saW5lIGZ1 bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUgdGhpcyBm aWxlCisvLyBhbmQgbGluayBpdCB3aXRoIG90aGVyIHdvcmtzIHRvIHByb2R1 Y2UgYSB3b3JrIGJhc2VkIG9uIHRoaXMgZmlsZSwKKy8vIHRoaXMgZmlsZSBk b2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyB3b3JrIHRv IGJlIGNvdmVyZWQgYnkKKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZS4gSG93ZXZlciB0aGUgc291cmNlIGNvZGUgZm9yIHRoaXMgZmlsZQor Ly8gbXVzdCBzdGlsbCBiZSBtYWRlIGF2YWlsYWJsZSBpbiBhY2NvcmRhbmNl IHdpdGggc2VjdGlvbiAoMykgb2YgdGhlIEdOVQorLy8gR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2Mi4KKy8vCisvLyBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5v dCBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSBhIHdvcmsgYmFz ZWQKKy8vIG9uIHRoaXMgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKy8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICMjIyNFQ09TR1BM Q09QWVJJR0hURU5EIyMjIworLy89PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLy8jIyMjI0RFU0NSSVBUSU9OQkVHSU4jIyMjCisvLworLy8gQXV0 aG9yKHMpOiAgVXdlIEtpbmRsZXIgPHV3ZV9raW5kbGVyQHdlYi5kZT4KKy8v ICAgICAgICAgICAgIFVwZGF0ZWQgZm9yIEF0bWVsIEFUOTEgZGV2aWNlLCBj Y291dGFuZCA8Y2NvdXRhbmRAc3RtaS5jb20+CisvLyBDb250cmlidXRvcnM6 CisvLyBEYXRlOiAgICAgICAgIDIwMTAtMDItMTUKKy8vIFB1cnBvc2U6Cisv LyBEZXNjcmlwdGlvbjoKKy8vCisvLyMjIyNERVNDUklQVElPTkVORCMjIyMK Ky8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyNpbmNs dWRlIDxwa2djb25mL3N5c3RlbS5oPgorCisjaW5jbHVkZSA8Y3lnL2luZnJh L3Rlc3RjYXNlLmg+ICAgICAgICAgLy8gdGVzdCBtYWNyb3MKKyNpbmNsdWRl IDxjeWcvaW5mcmEvY3lnX2Fzcy5oPiAgICAgICAgICAvLyBhc3NlcnRpb24g bWFjcm9zCisjaW5jbHVkZSA8Y3lnL2luZnJhL2RpYWcuaD4KKyNpbmNsdWRl IDxjeWcvaGFsL2hhbF9kaWFnLmg+CisjaW5jbHVkZSA8Y3lnL2hhbC9oYWxf YXJjaC5oPiAgICAgICAgICAgLy8gQ1lHTlVNX0hBTF9TVEFDS19TSVpFX1RZ UElDQUwKKworLy8gUGFja2FnZSByZXF1aXJlbWVudHMKKyNpZiBkZWZpbmVk KENZR1BLR19JT19BREMpICYmIGRlZmluZWQoQ1lHUEtHX0tFUk5FTCkKKwor I2luY2x1ZGUgPHBrZ2NvbmYva2VybmVsLmg+CisjaW5jbHVkZSA8Y3lnL2lv L2lvLmg+CisjaW5jbHVkZSA8Y3lnL2lvL2FkYy5oPgorI2luY2x1ZGUgPHBr Z2NvbmYvZGV2c19hZGNfYXJtX2F0OTEuaD4KKworLy8gUGFja2FnZSBvcHRp b24gcmVxdWlyZW1lbnRzCisjaWYgZGVmaW5lZChDWUdGVU5fS0VSTkVMX0FQ SV9DKQorCisjaW5jbHVkZSA8Y3lnL2tlcm5lbC9rYXBpLmg+CisKKyNpZiBD WUdJTlRfREVWU19BRENfQVJNX0FUOTFfQURDMF9DSEFOTkVMUyA+IDAKKwor I2RlZmluZSBNQVhfQURDX0NIQU5ORUxfVE9fVEVTVCA0CisKKy8vPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEQVRBIFRZUEVTCisvLz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQordHlwZWRlZiBzdHJ1Y3Qgc3RfdGhyZWFkX2RhdGEK K3sKKyAgICBjeWdfdGhyZWFkICAgb2JqOworICAgIGxvbmcgICAgICAgICBz dGFja1tDWUdOVU1fSEFMX1NUQUNLX1NJWkVfVFlQSUNBTF07CisgICAgY3ln X2hhbmRsZV90IGhkbDsKK30gdGhyZWFkX2RhdGFfdDsKKworCisvLz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMT0NBTCBEQVRBCisvLz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorY3lnX3RocmVhZF9lbnRyeV90IGFkY190aHJlYWQ7 Cit0aHJlYWRfZGF0YV90ICAgICAgYWRjX3RocmVhZF9kYXRhOworCisKKy8v PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQURDIFRIUkVBRAorLy89PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KK3ZvaWQgYWRjX3RocmVhZChjeWdfYWRkcndv cmRfdCBkYXRhKQoreworICAgIGludCAgICAgICAgICAgICByZXM7CisgICAg Y3lnX2lvX2hhbmRsZV90IGhhbmRsZVs4XSAgICAgPSB7MCwgMCwgMCwgMCwg MCwgMCwgMCwgMH07CisgICAgY3lnX3VpbnQzMiAgICAgIHNhbXBsZV9jbnRb OF0gPSB7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH07CisgICAgY3lnX3VpbnQz MiAgICAgIGNmZ19kYXRhOworICAgIGN5Z191aW50MzIgICAgICBsZW47Cisg ICAgY3lnX3VpbnQzMiAgICAgIHN0YXJ0X3RpbWU7CisgICAgY3lnX3VpbnQz MiAgICAgIGVuZF90aW1lOworICAgIGludCAgICAgICAgICAgICBpOworICAg IGN5Z191aW50OCAgICAgICBzZWNvbmRzID0gMDsKKyAgICBmbG9hdCAgICAg ICAgICAgZmluYWxfc2Vjb25kczsKKyAgICBjeWdfdWludDMyICAgICAgc2Ft cGxlc19leHBlY3RlZDsKKworCisgICAgZGlhZ19wcmludGYoIlRoaXMgdGVz dCByZWFkcyBzYW1wbGVzIGZyb20gYWxsIGVuYWJsZWQgQURDIGNoYW5uZWxz LlxuIgorICAgICAgICAgICAgICAgICJFYWNoIHNlY29uZCB0aGUgbnVtYmVy IG9mIGFscmVhZHkgYWNxdWlyZWQgc2FtcGxlc1xuIgorICAgICAgICAgICAg ICAgICJ3aWxsIGJlIHByaW50ZWQuIEFmdGVyIDEwIHNlY29uZHMgYWxsIEFE QyBjaGFubmVsc1xuIgorICAgICAgICAgICAgICAgICJ3aWxsIGJlIHN0b3Bw ZWQgYW5kIGVhY2ggQURDIGJ1ZmZlciB3aWxsIGJlIHJlYWQgdW50aWxcbiIK KyAgICAgICAgICAgICAgICAiaXQgaXMgZW1wdHkuIElmIHRoZSBudW1iZXIg b2YgYWNxdWlyZWQgc2FtcGxlcyBpcyBtdWNoXG4iCisgICAgICAgICAgICAg ICAgInNtYWxsZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIHNhbXBs ZXMsIHRoZW4geW91XG4iCisgICAgICAgICAgICAgICAgInNob3VsZCBsb3dl ciB0aGUgc2FtcGxlIHJhdGUuXG5cbiIpOworCisgICAgLy8gR2V0IGEgaGFu ZGxlIGZvciBBREMgZGV2aWNlIDAgY2hhbm5lbCAwIC0gMyAobG9va3VwIGFs c28gdHJpZ2dlciBhIGNoYW5uZWwgZW5hYmxlKQorICAgIHJlcyA9IGN5Z19p b19sb29rdXAoICIvZGV2L2FkYzAwIiwgJmhhbmRsZVswXSk7CisgICAgcmVz ID0gY3lnX2lvX2xvb2t1cCggIi9kZXYvYWRjMDEiLCAmaGFuZGxlWzFdKTsK KyAgICByZXMgPSBjeWdfaW9fbG9va3VwKCAiL2Rldi9hZGMwMiIsICZoYW5k bGVbMl0pOworICAgIHJlcyA9IGN5Z19pb19sb29rdXAoICIvZGV2L2FkYzAz IiwgJmhhbmRsZVszXSk7CisKKyAgICAvLworICAgIC8vIHN3aXRjaCBhbGwg Y2hhbm5lbHMgdG8gbm9uIGJsb2NraW5nCisgICAgLy8KKyAgICBmb3IgKGkg PSAwOyBpIDwgTUFYX0FEQ19DSEFOTkVMX1RPX1RFU1Q7ICsraSkKKyAgICB7 CisgICAgICAgIGlmIChoYW5kbGVbaV0pCisgICAgICAgIHsKKyAgICAgICAg ICAgIGNmZ19kYXRhID0gMDsKKyAgICAgICAgICAgIGxlbiA9IHNpemVvZihj ZmdfZGF0YSk7CisgICAgICAgICAgICByZXMgPSBjeWdfaW9fc2V0X2NvbmZp ZyhoYW5kbGVbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDWUdfSU9fU0VUX0NPTkZJR19SRUFEX0JMT0NLSU5HLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNmZ19kYXRhLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlbik7CisgICAg ICAgICAgICBpZiAoRU5PRVJSICE9IHJlcykKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICBDWUdfVEVTVF9GQUlMX0ZJTklTSCgiRXJyb3Igc3dp dGNoaW5nIEFEQyBjaGFubmVsIHRvIG5vbiBibG9ja2luZyIpOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgc2FtcGxlX2NudFtpXSA9IDA7CisgICAg ICAgIH0KKyAgICB9CisKKyAgICBzdGFydF90aW1lID0gY3lnX2N1cnJlbnRf dGltZSgpOworICAgIGRvCisgICAgeworICAgICAgICBmb3IgKGkgPSAwOyBp IDwgTUFYX0FEQ19DSEFOTkVMX1RPX1RFU1Q7ICsraSkKKyAgICAgICAgewor ICAgICAgICAgICAgaWYgKGhhbmRsZVtpXSkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICBjeWdfYWRjX3NhbXBsZV90IHNhbXBsZTsKKworICAg ICAgICAgICAgICAgIC8vIHJlYWQgYSBzYW1wbGUgZnJvbSB0aGUgY2hhbm5l bAorICAgICAgICAgICAgICAgIGRvCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICBjeWdfdWludDMyIGxlbiA9IHNpemVvZihzYW1w bGUpOworICAgICAgICAgICAgICAgICAgICByZXMgPSBjeWdfaW9fcmVhZCgg aGFuZGxlW2ldLCAmc2FtcGxlLCAmbGVuICk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIHdoaWxlICgtRUFHQUlOID09IHJlcyk7Cisg ICAgICAgICAgICAgICAgaWYgKEVOT0VSUiA9PSByZXMpCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzYW1wbGVfY250W2ldKys7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAvLyBpZiAoaGFu ZGxlW2ldKQorICAgICAgICB9CisgICAgICAgIC8vCisgICAgICAgIC8vIHBy aW50IG51bWJlciBvZiBhY3F1aXJlZCBzYW1wbGVzIC0gaWYgb25lIHNlY29u ZCBpcyBleHBpcmVkLgorICAgICAgICAvLyB3ZSBleHBlY3QgdGhhdCB0aGUg bnVtYmVyIG9mIGFjcXVpcmVkIHNhbXBsZXMgaXMgbmVhcmx5IHRoZQorICAg ICAgICAvLyBzYW1wbGUgcmF0ZQorICAgICAgICAvLworICAgICAgICBlbmRf dGltZSA9IGN5Z19jdXJyZW50X3RpbWUoKTsKKyAgICAgICAgaWYgKChlbmRf dGltZSAtIHN0YXJ0X3RpbWUpID49IDEwMCkKKyAgICAgICAgeworICAgICAg ICAgICAgc3RhcnRfdGltZSA9IGVuZF90aW1lOworICAgICAgICAgICAgZGlh Z19wcmludGYoIiVkXHQgJWRcdCAlZFx0ICVkXG4iLAorICAgICAgICAgICAg ICAgICAgICAgICAgc2FtcGxlX2NudFswXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNhbXBsZV9jbnRbMV0sCisgICAgICAgICAgICAgICAgICAgICAg ICBzYW1wbGVfY250WzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Ft cGxlX2NudFszXSk7CisgICAgICAgICAgICBzZWNvbmRzKys7CisgICAgICAg IH0gLy8gaWYgKChlbmRfdGltZSAtIHN0YXJ0X3RpbWUpID49IDEwMCkKKyAg ICB9IHdoaWxlIChzZWNvbmRzIDwgMTApOworCisgICAgLy8KKyAgICAvLyBO b3cgc3RvcCBhbGwgY2hhbm5lbHMKKyAgICAvLworICAgIGZvciAoaSA9IDA7 IGkgPCBNQVhfQURDX0NIQU5ORUxfVE9fVEVTVDsgKytpKQorICAgIHsKKyAg ICAgICAgaWYgKGhhbmRsZVtpXSkKKyAgICAgICAgeworICAgICAgICAgICAg cmVzID0gY3lnX2lvX3NldF9jb25maWcoaGFuZGxlW2ldLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1lHX0lPX1NFVF9DT05GSUdf QURDX0RJU0FCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCk7CisgICAgICAgICAgICBpZiAoRU5PRVJSICE9IHJlcykKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICBDWUdfVEVTVF9GQUlMX0ZJTklTSCgi RXJyb3IgZGlzYWJsaW5nIEFEQyBjaGFubmVsIik7CisgICAgICAgICAgICB9 CisgICAgICAgIH0gLy8gaWYgKGhhbmRsZVtpXSkKKyAgICB9CisgICAgZW5k X3RpbWUgPSBjeWdfY3VycmVudF90aW1lKCk7CisgICAgZW5kX3RpbWUgPSBz ZWNvbmRzICogMTAwMCArIChlbmRfdGltZSAtIHN0YXJ0X3RpbWUpICogMTA7 CisgICAgZmluYWxfc2Vjb25kcyA9IGVuZF90aW1lIC8gMTAwMC4wOworCisg ICAgLy8KKyAgICAvLyBOb3cgcmVhZCBhbGwgcmVtYWluaW5nIHNhbXBsZXMg ZnJvbSBidWZmZXIKKyAgICAvLworICAgIGZvciAoaSA9IDA7IGkgPCBNQVhf QURDX0NIQU5ORUxfVE9fVEVTVDsgKytpKQorICAgIHsKKyAgICAgICAgaWYg KGhhbmRsZVtpXSkKKyAgICAgICAgeworICAgICAgICAgICAgZG8KKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjeWdfYWRjX3NhbXBsZV90IHNh bXBsZTsKKyAgICAgICAgICAgICAgICBjeWdfdWludDMyIGxlbiA9IHNpemVv ZihzYW1wbGUpOworICAgICAgICAgICAgICAgIHJlcyA9IGN5Z19pb19yZWFk KCBoYW5kbGVbaV0sICZzYW1wbGUsICZsZW4gKTsKKyAgICAgICAgICAgICAg ICBpZiAoRU5PRVJSID09IHJlcykKKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgIHNhbXBsZV9jbnRbaV0rKzsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9IHdoaWxlIChFTk9FUlIgPT0gcmVzKTsK KyAgICAgICAgfSAvLyBpZiAoaGFuZGxlW2ldKQorICAgIH0KKworICAgIGRp YWdfcHJpbnRmKCJcblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLVxuIik7CisgICAgc2FtcGxlc19leHBlY3RlZCA9IGZpbmFs X3NlY29uZHMgKiBDWUdOVU1fREVWU19BRENfQVJNX0FUOTFfQURDMF9ERUZB VUxUX1JBVEU7CisgICAgZGlhZ19wcmludGYoIlNhbXBsZXMgZXhwZWN0ZWQg YWZ0ZXIgJWQgbWlsbGlzZWNvbmRzOiAlZFxuIiwKKyAgICAgICAgICAgICAg ICBlbmRfdGltZSwgc2FtcGxlc19leHBlY3RlZCk7CisgICAgZGlhZ19wcmlu dGYoIlNhbXBsZXMgcmVhZCAocGVyIGNoYW5uZWwpOlxuIik7CisgICAgZGlh Z19wcmludGYoIiVkXHQgJWRcdCAlZFx0ICVkXG4iLAorICAgICAgICAgICAg ICAgIHNhbXBsZV9jbnRbMF0sCisgICAgICAgICAgICAgICAgc2FtcGxlX2Nu dFsxXSwKKyAgICAgICAgICAgICAgICBzYW1wbGVfY250WzJdLAorICAgICAg ICAgICAgICAgIHNhbXBsZV9jbnRbM10pOworCisgICAgQ1lHX1RFU1RfUEFT U19GSU5JU0goIkFEQyB0ZXN0IE9LIik7Cit9CisKKwordm9pZAorY3lnX3N0 YXJ0KHZvaWQpCit7CisgICAgQ1lHX1RFU1RfSU5JVCgpOworCisgICAgLy8K KyAgICAvLyBjcmVhdGUgdGhlIG1haW4gQURDIHRlc3QgdGhyZWFkCisgICAg Ly8KKyAgICBjeWdfdGhyZWFkX2NyZWF0ZSg0LCBhZGNfdGhyZWFkLAorICAg ICAgICAgICAgICAgICAgICAgIChjeWdfYWRkcndvcmRfdCkgMCwKKyAgICAg ICAgICAgICAgICAgICAgICAiYXQ5MV9hZGNfdGhyZWFkIiwKKyAgICAgICAg ICAgICAgICAgICAgICAodm9pZCAqKSBhZGNfdGhyZWFkX2RhdGEuc3RhY2ss CisgICAgICAgICAgICAgICAgICAgICAgMTAyNCAqIHNpemVvZihsb25nKSwK KyAgICAgICAgICAgICAgICAgICAgICAmYWRjX3RocmVhZF9kYXRhLmhkbCwK KyAgICAgICAgICAgICAgICAgICAgICAmYWRjX3RocmVhZF9kYXRhLm9iaik7 CisKKyAgICBjeWdfdGhyZWFkX3Jlc3VtZShhZGNfdGhyZWFkX2RhdGEuaGRs KTsKKworICAgIGN5Z19zY2hlZHVsZXJfc3RhcnQoKTsKK30KKyNlbHNlIC8v IENZR0lOVF9ERVZTX0FEQ19BUk1fQVQ5MV9DSEFOTkVMUyA+IDAKKyNkZWZp bmUgTl9BX01TRyAiTmVlZHMgYXQgbGVhc3Qgb25lIGVuYWJsZWQgQURDIGNo YW5uZWwiCisjZW5kaWYKKworI2Vsc2UgLy8gQ1lHRlVOX0tFUk5FTF9BUElf QworI2RlZmluZSBOX0FfTVNHICJOZWVkcyBrZXJuZWwgQyBBUEkiCisjZW5k aWYKKworI2Vsc2UgLy8gQ1lHUEtHX0lPX0FEQyAmJiBDWUdQS0dfS0VSTkVM CisjZGVmaW5lIE5fQV9NU0cgIk5lZWRzIEtlcm5lbCBhbmQgQURDIHN1cHBv cnQiCisjZW5kaWYKKworI2lmZGVmIE5fQV9NU0cKK3ZvaWQKK2N5Z19zdGFy dCggdm9pZCApCit7CisgICAgQ1lHX1RFU1RfSU5JVCgpOworICAgIENZR19U RVNUX05BKE5fQV9NU0cpOworfQorI2VuZGlmIC8vIE5fQV9NU0cKKworCisv LyBFT0YgY2FuX3R4LmMKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy8vIGVvZiBhdDkxX2FkY190ZXN0LmMK ------_=_NextPart_001_01CAFDE5.163A7E53--