From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id A98CA941DB0 for ; Mon, 6 Jan 2025 21:53:43 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=t1tJLZbMK6eqSH5q7BL8j0RELCuiUDnp12oBlaWW8i8=; c=relaxed/simple; d=groups.io; h=Subject:To:From:User-Agent:MIME-Version:Date:References:In-Reply-To:Message-ID:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type; s=20240830; t=1736200423; v=1; x=1736459622; b=gZ83fr+NOCzmgJMH+Y9TzbJjFAE9fTNqMorHoEjkJkrozlTC7PsxrotfNmZEiALazf4rTCxc vfkV0kqFGncjAEaQfnny0ELWx8dMW0f3NEUf8mLthcGpCmxdOE3V8askmFehEu0yxjS4M8VwnWK yzhRmi3lZIHnOzXjQUUYNgzUzN33UDhbQ4BHfQmC/PePZnsYeQOVEm5oHwoJu7ACQz21AKyjwpv 7zyD3JuhRZ64wXQsUErOd7/3Dwl7IZi4y/uw1EACdNjj/LF+8NLNbkAT+9VXUsCjLzi2PiTHaiA 61MQGSwsDVFNz4kRTW272PvYBYSQQNSnedbc6lO4AA7SQ== X-Received: by 127.0.0.2 with SMTP id uGEvYY7687511xAq1XU4n96q; Mon, 06 Jan 2025 13:53:42 -0800 Subject: =?UTF-8?B?UmU6IFtlZGsyLWRldmVsXSDlm57lpI06IFtlZGsyLWRldmVsXSDlm57lpI06IFtlZGsyLWRldmVsXSBbc3RhZ2luZy91c2JfaWFkXSBNZGVNb2R1bGVQa2cgVXNiQnVzRHhlOiBBZGQgc3VwcG9ydCBmb3IgVVNCIEludGVyZmFjZSBBc3NvY2lhdGlvbg==?= To: "gaoliming" , devel@edk2.groups.io From: "olegi via groups.io" X-Originating-Location: US (63.147.10.75) X-Originating-Platform: Windows Firefox 133 User-Agent: GROUPS.IO Web Poster MIME-Version: 1.0 Date: Mon, 06 Jan 2025 13:53:36 -0800 References: <02ed01db5e87$e72db590$b58920b0$@byosoft.com.cn> In-Reply-To: <02ed01db5e87$e72db590$b58920b0$@byosoft.com.cn> Message-ID: <25918.1736200416648086778@groups.io> Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,olegi@ami.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: dmTlMmMJP91x2a52j7LKAxUcx7686176AA= Content-Type: multipart/mixed; boundary="yqsbPmRJVuNHAq8vkCxt" X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240830 header.b=gZ83fr+N; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io --yqsbPmRJVuNHAq8vkCxt Content-Type: multipart/alternative; boundary="Qn9x2a0LweRC3TMAZHj2" --Qn9x2a0LweRC3TMAZHj2 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Attaching the USB Association IO consumer code sample.=C2=A0 This is the pr= ototype of the USB video class code driver prototype, it illustrates the us= age of USB Association IO protocol. Usb bus driver in MdeModulePkg implements this protocol (implementation is = also in the=C2=A0 patch). The definition is in MdePkg so that it can be imp= lemented by non-edk2 USB bus. Usb association is a part of USB specification, USB Association IO protocol= should be eventually added to UEFI specification. There are additional comments by Michael Kinney (@mdkinney) in https://gith= ub.com/tianocore/edk2/pull/10558 Please take a look and let me know how to proceed. Thanks, Oleg -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#120965): https://edk2.groups.io/g/devel/message/120965 Mute This Topic: https://groups.io/mt/110420476/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --Qn9x2a0LweRC3TMAZHj2 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable
Attaching the USB Association IO consumer code sample.  This is t= he prototype of the USB video class code driver prototype, it illustrates t= he usage of USB Association IO protocol.
 
Usb bus driver in MdeModulePkg implements this protocol (implementatio= n is also in the  patch). The definition is in MdePkg so that it can b= e implemented by non-edk2 USB bus.
Usb association is a part of USB specification, USB Association IO pro= tocol should be eventually added to UEFI specification.
There are additional comments by Michael Kinney (@mdkinney) in https://github.com/tianocore/edk2/pull/10558
 
Please take a look and let me know how to proceed.
 
Thanks,
Oleg
_._,_._,_

Groups.io Links:

=20 You receive all messages sent to this group. =20 =20

View/Reply Online (#120965) | =20 | Mute= This Topic | New Topic
Your Subscriptio= n | Contact Group Owner | Unsubscribe [rebecca@openfw.io]

_._,_._,_
--Qn9x2a0LweRC3TMAZHj2-- --yqsbPmRJVuNHAq8vkCxt Content-Type: application/octet-stream; name="diff.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff.patch" ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9Db21wb25l bnROYW1lLmMgYi9NZGVNb2R1bGVQa2cvQXBwbGljYXRpb24vVXNiVmlkZW9EeGUvQ29tcG9uZW50 TmFtZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ4YjI2ZTdhYjcK LS0tIC9kZXYvbnVsbAorKysgYi9NZGVNb2R1bGVQa2cvQXBwbGljYXRpb24vVXNiVmlkZW9EeGUv Q29tcG9uZW50TmFtZS5jCkBAIC0wLDAgKzEsMjk4IEBACisvKiogQGZpbGUNCisNCisgIFVFRkkg Q29tcG9uZW50IE5hbWUoMikgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gZm9yIFVzYiBWaWRlbyBk cml2ZXIuDQorDQorQ29weXJpZ2h0IChjKSAyMDI0LCBBbWVyaWNhbiBNZWdhdHJlbmRzIExMQy4N CitTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKw0KKyoqLw0K Kw0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisjaW5jbHVkZSA8UGlEeGUuaD4NCisj aW5jbHVkZSA8UHJvdG9jb2wvQ29tcG9uZW50TmFtZS5oPg0KKyNpbmNsdWRlIDxQcm90b2NvbC9D b21wb25lbnROYW1lMi5oPg0KKw0KKy8qKg0KKyAgUmV0cmlldmVzIGEgVW5pY29kZSBzdHJpbmcg dGhhdCBpcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIHRoZSBkcml2ZXIuDQorDQorICBUaGlz IGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIGEgZHJpdmVyIGlu IHRoZSBmb3JtIG9mIGENCisgIFVuaWNvZGUgc3RyaW5nLiBJZiB0aGUgZHJpdmVyIHNwZWNpZmll ZCBieSBUaGlzIGhhcyBhIHVzZXIgcmVhZGFibGUgbmFtZSBpbg0KKyAgdGhlIGxhbmd1YWdlIHNw ZWNpZmllZCBieSBMYW5ndWFnZSwgdGhlbiBhIHBvaW50ZXIgdG8gdGhlIGRyaXZlciBuYW1lIGlz DQorICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLCBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQu IElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkDQorICBieSBUaGlzIGRvZXMgbm90IHN1cHBvcnQgdGhl IGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwNCisgIHRoZW4gRUZJX1VOU1VQUE9SVEVE IGlzIHJldHVybmVkLg0KKw0KKyAgQHBhcmFtICBUaGlzW2luXSAgICAgICAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBFRklfQ09NUE9ORU5UX05BTUUyX1BST1RPQ09MIG9yDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wgaW5zdGFuY2Uu DQorDQorICBAcGFyYW0gIExhbmd1YWdlW2luXSAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBOdWxs LXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcnJheSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZS4gVGhpcyBpcyB0aGUNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlIG9mIHRoZSBkcml2ZXIgbmFtZSB0aGF0IHRo ZSBjYWxsZXIgaXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rpbmcs IGFuZCBpdCBtdXN0IG1hdGNoIG9uZSBvZiB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhbmd1YWdlcyBzcGVjaWZpZWQgaW4gU3VwcG9ydGVkTGFuZ3VhZ2VzLiBUaGUNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBsYW5ndWFnZXMgc3VwcG9y dGVkIGJ5IGEgZHJpdmVyIGlzIHVwDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 byB0aGUgZHJpdmVyIHdyaXRlci4gTGFuZ3VhZ2UgaXMgc3BlY2lmaWVkDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbiBSRkMgNDY0NiBvciBJU08gNjM5LTIgbGFuZ3VhZ2UgY29k ZSBmb3JtYXQuDQorDQorICBAcGFyYW0gIERyaXZlck5hbWVbb3V0XSAgICAgICBBIHBvaW50ZXIg dG8gdGhlIFVuaWNvZGUgc3RyaW5nIHRvIHJldHVybi4NCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoaXMgVW5pY29kZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgdGhlDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaW4gdGhl IGxhbmd1YWdlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkg TGFuZ3VhZ2UuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgVW5pY29k ZSBzdHJpbmcgZm9yIHRoZSBEcml2ZXIgc3BlY2lmaWVkIGJ5DQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUaGlzIGFuZCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdl IHdhcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgaW4gRHJpdmVy TmFtZS4NCisNCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIExhbmd1YWdlIGlzIE5V TEwuDQorDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBEcml2ZXJOYW1lIGlzIE5V TEwuDQorDQorICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgZHJpdmVyIHNwZWNp ZmllZCBieSBUaGlzIGRvZXMgbm90IHN1cHBvcnQNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UuDQorDQorKiovDQorRUZJ X1NUQVRVUw0KK0VGSUFQSQ0KK1VzYlZpZGVvQ29tcG9uZW50TmFtZUdldERyaXZlck5hbWUgKA0K KyAgSU4gIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgKlRoaXMsDQorICBJTiAgQ0hBUjgg ICAgICAgICAgICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQorICBPVVQgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAqKkRyaXZlck5hbWUNCisgICk7DQorDQorLyoqDQorICBSZXRyaWV2ZXMg YSBVbmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGNv bnRyb2xsZXINCisgIHRoYXQgaXMgYmVpbmcgbWFuYWdlZCBieSBhIGRyaXZlci4NCisNCisgIFRo aXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGNvbnRy b2xsZXIgc3BlY2lmaWVkIGJ5DQorICBDb250cm9sbGVySGFuZGxlIGFuZCBDaGlsZEhhbmRsZSBp biB0aGUgZm9ybSBvZiBhIFVuaWNvZGUgc3RyaW5nLiBJZiB0aGUNCisgIGRyaXZlciBzcGVjaWZp ZWQgYnkgVGhpcyBoYXMgYSB1c2VyIHJlYWRhYmxlIG5hbWUgaW4gdGhlIGxhbmd1YWdlIHNwZWNp ZmllZCBieQ0KKyAgTGFuZ3VhZ2UsIHRoZW4gYSBwb2ludGVyIHRvIHRoZSBjb250cm9sbGVyIG5h bWUgaXMgcmV0dXJuZWQgaW4gQ29udHJvbGxlck5hbWUsDQorICBhbmQgRUZJX1NVQ0NFU1MgaXMg cmV0dXJuZWQuICBJZiB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGlzIG5vdCBjdXJyZW50 bHkNCisgIG1hbmFnaW5nIHRoZSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBDb250cm9sbGVySGFu ZGxlIGFuZCBDaGlsZEhhbmRsZSwNCisgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVk LiAgSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBkb2VzIG5vdA0KKyAgc3VwcG9ydCB0 aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLCB0aGVuIEVGSV9VTlNVUFBPUlRFRCBp cyByZXR1cm5lZC4NCisNCisgIEBwYXJhbSAgVGhpc1tpbl0gICAgICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCBvcg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGluc3RhbmNlLg0K Kw0KKyAgQHBhcmFtICBDb250cm9sbGVySGFuZGxlW2luXSAgVGhlIGhhbmRsZSBvZiBhIGNvbnRy b2xsZXIgdGhhdCB0aGUgZHJpdmVyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cGVjaWZpZWQgYnkgVGhpcyBpcyBtYW5hZ2luZy4gIFRoaXMgaGFuZGxlDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIGNvbnRyb2xsZXIgd2hvc2UgbmFtZSBp cyB0byBiZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQuDQorDQor ICBAcGFyYW0gIENoaWxkSGFuZGxlW2luXSAgICAgICBUaGUgaGFuZGxlIG9mIHRoZSBjaGlsZCBj b250cm9sbGVyIHRvIHJldHJpZXZlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGUgbmFtZSBvZi4gIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1heSBiZSBOVUxMLiAgSXQgd2lsbCBiZSBOVUxMIGZv ciBkZXZpY2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMuICBJdCB3 aWxsIGFsc28gYmUgTlVMTCBmb3IgYSBidXMgZHJpdmVycw0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhhdCB3aXNoIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBidXMNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuICBJdCB3aWxsIG5vdCBi ZSBOVUxMIGZvciBhIGJ1cw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVy IHRoYXQgd2lzaGVzIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIGENCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoaWxkIGNvbnRyb2xsZXIuDQorDQorICBAcGFyYW0gIExhbmd1YWdl W2luXSAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBOdWxsLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5n DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSBpbmRpY2F0aW5nIHRoZSBs YW5ndWFnZS4gIFRoaXMgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs YW5ndWFnZSBvZiB0aGUgZHJpdmVyIG5hbWUgdGhhdCB0aGUgY2FsbGVyIGlzDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0aW5nLCBhbmQgaXQgbXVzdCBtYXRjaCBvbmUg b2YgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZXMgc3BlY2lm aWVkIGluIFN1cHBvcnRlZExhbmd1YWdlcy4gVGhlDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudW1iZXIgb2YgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBhIGRyaXZlciBpcyB1cA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGRyaXZlciB3cml0ZXIuIExh bmd1YWdlIGlzIHNwZWNpZmllZCBpbg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UkZDIDQ2NDYgb3IgSVNPIDYzOS0yIGxhbmd1YWdlIGNvZGUgZm9ybWF0Lg0KKw0KKyAgQHBhcmFt ICBDb250cm9sbGVyTmFtZVtvdXRdICAgQSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIHN0cmluZyB0 byByZXR1cm4uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIFVuaWNvZGUg c3RyaW5nIGlzIHRoZSBuYW1lIG9mIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENoaWxkSGFuZGxlIGluIHRoZSBsYW5ndWFnZSBzcGVj aWZpZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIGZyb20g dGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGRyaXZlcg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgVW5pY29kZSBzdHJpbmcgZm9yIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgaW4N CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQg YnkgTGFuZ3VhZ2UgZm9yIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJp dmVyIHNwZWNpZmllZCBieSBUaGlzIHdhcyByZXR1cm5lZCBpbg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRHJpdmVyTmFtZS4NCisNCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIENvbnRyb2xsZXJIYW5kbGUgaXMgTlVMTC4NCisNCisgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSIENoaWxkSGFuZGxlIGlzIG5vdCBOVUxMIGFuZCBpdCBpcyBub3QgYSB2YWxp ZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0hBTkRMRS4NCisNCisgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIExhbmd1YWdlIGlzIE5VTEwuDQorDQorICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBDb250cm9sbGVyTmFtZSBpcyBOVUxMLg0KKw0KKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhp cyBpcyBub3QgY3VycmVudGx5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5h Z2luZyB0aGUgY29udHJvbGxlciBzcGVjaWZpZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUgYW5kIENoaWxkSGFuZGxlLg0KKw0KKyAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBkb2Vz IG5vdCBzdXBwb3J0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3Vh Z2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkN CitVc2JWaWRlb0NvbXBvbmVudE5hbWVHZXRDb250cm9sbGVyTmFtZSAoDQorICBJTiAgRUZJX0NP TVBPTkVOVF9OQU1FX1BST1RPQ09MICAqVGhpcywNCisgIElOICBFRklfSEFORExFICAgICAgICAg ICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQorICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICAgICBDaGlsZEhhbmRsZSAgICAgICAgT1BUSU9OQUwsDQorICBJTiAgQ0hBUjggICAgICAg ICAgICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQorICBPVVQgQ0hBUjE2ICAgICAgICAgICAgICAg ICAgICAgICAqKkNvbnRyb2xsZXJOYW1lDQorICApOw0KKw0KKy8vDQorLy8gRUZJIENvbXBvbmVu dCBOYW1lIFByb3RvY29sDQorLy8NCitHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBFRklf Q09NUE9ORU5UX05BTUVfUFJPVE9DT0wgIGdVc2JWaWRlb0NvbXBvbmVudE5hbWUgPSB7DQorICBV c2JWaWRlb0NvbXBvbmVudE5hbWVHZXREcml2ZXJOYW1lLA0KKyAgVXNiVmlkZW9Db21wb25lbnRO YW1lR2V0Q29udHJvbGxlck5hbWUsDQorICAiZW5nIg0KK307DQorDQorLy8NCisvLyBFRkkgQ29t cG9uZW50IE5hbWUgMiBQcm90b2NvbA0KKy8vDQorR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5D RUQgRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCAgZ1VzYlZpZGVvQ29tcG9uZW50TmFtZTIg PSB7DQorICAoRUZJX0NPTVBPTkVOVF9OQU1FMl9HRVRfRFJJVkVSX05BTUUpVXNiVmlkZW9Db21w b25lbnROYW1lR2V0RHJpdmVyTmFtZSwNCisgIChFRklfQ09NUE9ORU5UX05BTUUyX0dFVF9DT05U Uk9MTEVSX05BTUUpVXNiVmlkZW9Db21wb25lbnROYW1lR2V0Q29udHJvbGxlck5hbWUsDQorICAi ZW4iDQorfTsNCisNCitHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBFRklfVU5JQ09ERV9T VFJJTkdfVEFCTEUgIGdVc2JWaWRlb0RyaXZlck5hbWVUYWJsZVtdID0gew0KKyAgeyAiZW5nO2Vu IiwgTCJVc2IgVmlkZW8gRHJpdmVyIiB9LA0KKyAgeyBOVUxMLCAgICAgTlVMTCAgICAgICAgICAg ICAgfQ0KK307DQorDQorLyoqDQorICBSZXRyaWV2ZXMgYSBVbmljb2RlIHN0cmluZyB0aGF0IGlz IHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGRyaXZlci4NCisNCisgIFRoaXMgZnVuY3Rp b24gcmV0cmlldmVzIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2YgYSBkcml2ZXIgaW4gdGhlIGZv cm0gb2YgYQ0KKyAgVW5pY29kZSBzdHJpbmcuIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRo aXMgaGFzIGEgdXNlciByZWFkYWJsZSBuYW1lIGluDQorICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVk IGJ5IExhbmd1YWdlLCB0aGVuIGEgcG9pbnRlciB0byB0aGUgZHJpdmVyIG5hbWUgaXMNCisgIHJl dHVybmVkIGluIERyaXZlck5hbWUsIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gSWYgdGhl IGRyaXZlciBzcGVjaWZpZWQNCisgIGJ5IFRoaXMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbGFuZ3Vh Z2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLA0KKyAgdGhlbiBFRklfVU5TVVBQT1JURUQgaXMgcmV0 dXJuZWQuDQorDQorICBAcGFyYW0gIFRoaXNbaW5dICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8g dGhlIEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCisNCisg IEBwYXJhbSAgTGFuZ3VhZ2VbaW5dICAgICAgICAgIEEgcG9pbnRlciB0byBhIE51bGwtdGVybWlu YXRlZCBBU0NJSSBzdHJpbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5 IGluZGljYXRpbmcgdGhlIGxhbmd1YWdlLiBUaGlzIGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhlIGNhbGxl ciBpcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGluZywgYW5kIGl0 IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGFuZ3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkg YSBkcml2ZXIgaXMgdXANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBk cml2ZXIgd3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluIFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1h dC4NCisNCisgIEBwYXJhbSAgRHJpdmVyTmFtZVtvdXRdICAgICAgIEEgcG9pbnRlciB0byB0aGUg VW5pY29kZSBzdHJpbmcgdG8gcmV0dXJuLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGhpcyBVbmljb2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0aGUNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBpbiB0aGUgbGFuZ3Vh Z2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBMYW5ndWFn ZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBVbmljb2RlIHN0cmlu ZyBmb3IgdGhlIERyaXZlciBzcGVjaWZpZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRoaXMgYW5kIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2Ugd2FzDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLg0K Kw0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgTGFuZ3VhZ2UgaXMgTlVMTC4NCisN CisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIERyaXZlck5hbWUgaXMgTlVMTC4NCisN CisgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5 IFRoaXMgZG9lcyBub3Qgc3VwcG9ydA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZS4NCisNCisqKi8NCitFRklfU1RBVFVT DQorRUZJQVBJDQorVXNiVmlkZW9Db21wb25lbnROYW1lR2V0RHJpdmVyTmFtZSAoDQorICBJTiAg RUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MICAqVGhpcywNCisgIElOICBDSEFSOCAgICAgICAg ICAgICAgICAgICAgICAgICpMYW5ndWFnZSwNCisgIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAg ICAgICAgICoqRHJpdmVyTmFtZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBMb29rdXBVbmljb2RlU3Ry aW5nMiAoDQorICAgICAgICAgICBMYW5ndWFnZSwNCisgICAgICAgICAgIFRoaXMtPlN1cHBvcnRl ZExhbmd1YWdlcywNCisgICAgICAgICAgIGdVc2JWaWRlb0RyaXZlck5hbWVUYWJsZSwNCisgICAg ICAgICAgIERyaXZlck5hbWUsDQorICAgICAgICAgICAoQk9PTEVBTikoVGhpcyA9PSAmZ1VzYlZp ZGVvQ29tcG9uZW50TmFtZSkNCisgICAgICAgICAgICk7DQorfQ0KKw0KKy8qKg0KKyAgUmV0cmll dmVzIGEgVW5pY29kZSBzdHJpbmcgdGhhdCBpcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIHRo ZSBjb250cm9sbGVyDQorICB0aGF0IGlzIGJlaW5nIG1hbmFnZWQgYnkgYSBkcml2ZXIuDQorDQor ICBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIHRoZSBj b250cm9sbGVyIHNwZWNpZmllZCBieQ0KKyAgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5k bGUgaW4gdGhlIGZvcm0gb2YgYSBVbmljb2RlIHN0cmluZy4gSWYgdGhlDQorICBkcml2ZXIgc3Bl Y2lmaWVkIGJ5IFRoaXMgaGFzIGEgdXNlciByZWFkYWJsZSBuYW1lIGluIHRoZSBsYW5ndWFnZSBz cGVjaWZpZWQgYnkNCisgIExhbmd1YWdlLCB0aGVuIGEgcG9pbnRlciB0byB0aGUgY29udHJvbGxl ciBuYW1lIGlzIHJldHVybmVkIGluIENvbnRyb2xsZXJOYW1lLA0KKyAgYW5kIEVGSV9TVUNDRVNT IGlzIHJldHVybmVkLiAgSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBpcyBub3QgY3Vy cmVudGx5DQorICBtYW5hZ2luZyB0aGUgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxl ckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUsDQorICB0aGVuIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1 cm5lZC4gIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3QNCisgIHN1cHBv cnQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwgdGhlbiBFRklfVU5TVVBQT1JU RUQgaXMgcmV0dXJuZWQuDQorDQorICBAcGFyYW0gIFRoaXNbaW5dICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlIEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgb3INCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5j ZS4NCisNCisgIEBwYXJhbSAgQ29udHJvbGxlckhhbmRsZVtpbl0gIFRoZSBoYW5kbGUgb2YgYSBj b250cm9sbGVyIHRoYXQgdGhlIGRyaXZlcg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbWFuYWdpbmcuICBUaGlzIGhhbmRsZQ0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBjb250cm9sbGVyIHdob3NlIG5h bWUgaXMgdG8gYmUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLg0K Kw0KKyAgQHBhcmFtICBDaGlsZEhhbmRsZVtpbl0gICAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY2hp bGQgY29udHJvbGxlciB0byByZXRyaWV2ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIG5hbWUgb2YuICBUaGlzIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgTlVMTC4gIEl0IHdpbGwgYmUgTlVM TCBmb3IgZGV2aWNlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLiAg SXQgd2lsbCBhbHNvIGJlIE5VTEwgZm9yIGEgYnVzIGRyaXZlcnMNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoYXQgd2lzaCB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgYnVz DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLiAgSXQgd2lsbCBu b3QgYmUgTlVMTCBmb3IgYSBidXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy aXZlciB0aGF0IHdpc2hlcyB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiBhDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGlsZCBjb250cm9sbGVyLg0KKw0KKyAgQHBhcmFtICBMYW5n dWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkIEFTQ0lJIHN0 cmluZw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgaW5kaWNhdGluZyB0 aGUgbGFuZ3VhZ2UuICBUaGlzIGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhlIGNhbGxlciBpcw0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGluZywgYW5kIGl0IG11c3QgbWF0Y2gg b25lIG9mIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHNw ZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVtYmVyIG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgYSBkcml2ZXIgaXMg dXANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVy LiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQgaW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1hdC4NCisNCisgIEBw YXJhbSAgQ29udHJvbGxlck5hbWVbb3V0XSAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBzdHJp bmcgdG8gcmV0dXJuLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBVbmlj b2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUgYW5kDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGlsZEhhbmRsZSBpbiB0aGUgbGFuZ3VhZ2Ug c3BlY2lmaWVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSBm cm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBkcml2ZXINCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNwZWNpZmllZCBieSBUaGlzLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIFVuaWNvZGUgc3RyaW5nIGZvciB0aGUgdXNlciByZWFkYWJsZSBuYW1l IGluDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lm aWVkIGJ5IExhbmd1YWdlIGZvciB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyB3YXMgcmV0dXJuZWQgaW4NCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERyaXZlck5hbWUuDQorDQorICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBDb250cm9sbGVySGFuZGxlIGlzIG5vdCBhIHZhbGlkIEVGSV9IQU5ETEUuDQor DQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBDaGlsZEhhbmRsZSBpcyBub3QgTlVM TCBhbmQgaXQgaXMgbm90IGEgdmFsaWQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVGSV9IQU5ETEUuDQorDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBMYW5ndWFn ZSBpcyBOVUxMLg0KKw0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ29udHJvbGxl ck5hbWUgaXMgTlVMTC4NCisNCisgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBk cml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbm90IGN1cnJlbnRseQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWFuYWdpbmcgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5DQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlIGFuZCBDaGls ZEhhbmRsZS4NCisNCisgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBkcml2ZXIg c3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3Qgc3VwcG9ydA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZS4NCisNCisqKi8N CitFRklfU1RBVFVTDQorRUZJQVBJDQorVXNiVmlkZW9Db21wb25lbnROYW1lR2V0Q29udHJvbGxl ck5hbWUgKA0KKyAgSU4gIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgKlRoaXMsDQorICBJ TiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KKyAgSU4g IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgQ2hpbGRIYW5kbGUgICAgICAgIE9QVElPTkFM LA0KKyAgSU4gIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlLA0KKyAgT1VU IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgKipDb250cm9sbGVyTmFtZQ0KKyAgKQ0KK3sN CisgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQorfQ0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBr Zy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9Vc2JWaWRlb0R4ZS5jIGIvTWRlTW9kdWxlUGtnL0Fw cGxpY2F0aW9uL1VzYlZpZGVvRHhlL1VzYlZpZGVvRHhlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNTdkNTMxNTNlNgotLS0gL2Rldi9udWxsCisrKyBiL01kZU1vZHVs ZVBrZy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9Vc2JWaWRlb0R4ZS5jCkBAIC0wLDAgKzEsMjIy IEBACisvKiogQGZpbGUNCisNCisgIFVzYiBWaWRlbyBkcml2ZXIgcHJvdmlkZXMgc2VydmljZXMg Zm9yIFVzYiB2aWRlbyBkZXZpY2UNCisNCisgIChDKSBDb3B5cmlnaHQgMjAxMS0yMDI0LCBBbWVy aWNhbiBNZWdhdHJlbmRzIEludGVybmF0aW9uYWwgTExDPEJSPg0KKyAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisNCisqKi8NCisNCisjaW5jbHVkZSA8UHJv dG9jb2wvVXNiQXNzb2NpYXRpb25Jby5oPg0KKyNpbmNsdWRlICJVc2JWaWRlb0R4ZS5oIg0KKw0K Ky8vDQorLy8gVVNCIEtleWJvYXJkIERyaXZlciBHbG9iYWwgVmFyaWFibGVzDQorLy8NCitFRklf RFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgIGdVc2JWaWRlb0RyaXZlckJpbmRpbmcgPSB7DQorICBV c2JWaWRlb0RyaXZlckJpbmRpbmdTdXBwb3J0ZWQsDQorICBVc2JWaWRlb0RyaXZlckJpbmRpbmdT dGFydCwNCisgIFVzYlZpZGVvRHJpdmVyQmluZGluZ1N0b3AsDQorICAweGEsDQorICBOVUxMLA0K KyAgTlVMTA0KK307DQorDQorLyoqDQorICBDaGVjayB3aGV0aGVyIFVTQiB2aWRlbyBkcml2ZXIg c3VwcG9ydHMgdGhpcyBkZXZpY2UuDQorDQorICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAg ICAgVGhlIFVTQiB2aWRlbyBkcml2ZXIgYmluZGluZyBwcm90b2NvbC4NCisgIEBwYXJhbSAgQ29u dHJvbGxlciAgICAgICAgICAgICBUaGUgY29udHJvbGxlciBoYW5kbGUgdG8gY2hlY2suDQorICBA cGFyYW0gIFJlbWFpbmluZ0RldmljZVBhdGggICAgVGhlIHJlbWFpbmluZyBkZXZpY2UgcGF0aC4N CisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZHJpdmVyIHN1cHBvcnRz IHRoaXMgY29udHJvbGxlci4NCisgIEByZXR2YWwgb3RoZXIgICAgICAgICAgICAgICAgICBUaGlz IGRldmljZSBpc24ndCBzdXBwb3J0ZWQuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0K K1VzYlZpZGVvRHJpdmVyQmluZGluZ1N1cHBvcnRlZCAoDQorICBJTiBFRklfRFJJVkVSX0JJTkRJ TkdfUFJPVE9DT0wgICpUaGlzLA0KKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBD b250cm9sbGVyLA0KKyAgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAqUmVtYWluaW5n RGV2aWNlUGF0aA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KKyAgRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fUFJPVE9D T0wgICAqVXNiSWFJbzsNCisgIEVGSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0NSSVBU T1IgIERlc2M7DQorDQorICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQorICAgICAgICAg ICAgICAgICAgQ29udHJvbGxlciwNCisgICAgICAgICAgICAgICAgICAmZ0VmaVVzYkludGVyZmFj ZUFzc29jaWF0aW9uUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZV c2JJYUlvLA0KKyAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQor ICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCisgICAgICAgICAgICAgICAgICBFRklfT1BF Tl9QUk9UT0NPTF9CWV9EUklWRVINCisgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgU3RhdHVz ID0gVXNiSWFJby0+VXNiSWFHZXRBc3NvY2lhdGlvbkRlc2NyaXB0b3IgKFVzYklhSW8sICZEZXNj KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisg IH0NCisNCisgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQorICAgICAgICBDb250cm9sbGVyLA0KKyAg ICAgICAgJmdFZmlVc2JJbnRlcmZhY2VBc3NvY2lhdGlvblByb3RvY29sR3VpZCwNCisgICAgICAg IFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQorICAgICAgICBDb250cm9sbGVyDQorICAgICAg ICApOw0KKw0KKyAgaWYgKChEZXNjLkZ1bmN0aW9uQ2xhc3MgPT0gVVNCX1ZJREVPX0NMQVNTKSAm JiAoRGVzYy5GdW5jdGlvblN1YmNsYXNzID09IFVTQl9WSURFT19JTlRFUkZBQ0VfQ09MTEVDVElP Tl9TVUJDTEFTUykpIHsNCisgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgfQ0KKw0KKyAgcmV0 dXJuIEVGSV9OT1RfRk9VTkQ7DQorfQ0KKw0KKy8qKg0KKyAgU3RhcnRzIHRoZSBVU0IgdmlkZW8g ZGV2aWNlIHdpdGggdGhpcyBkcml2ZXIuDQorDQorICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAg ICAgICAgVGhlIFVTQiB2aWRlbyBkcml2ZXIgYmluZGluZyBpbnN0YW5jZS4NCisgIEBwYXJhbSAg Q29udHJvbGxlciAgICAgICAgICAgICBIYW5kbGUgb2YgZGV2aWNlIHRvIGJpbmQgZHJpdmVyIHRv Lg0KKyAgQHBhcmFtICBSZW1haW5pbmdEZXZpY2VQYXRoICAgIE9wdGlvbmFsIHBhcmFtZXRlciB1 c2UgdG8gcGljayBhIHNwZWNpZmljIGNoaWxkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2aWNlIHRvIHN0YXJ0Lg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgIFRoZSBjb250cm9sbGVyIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHVzYiB2aWRlbyBkcml2ZXIu DQorICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgTm8gaW50ZXJydXB0IGVuZHBvaW50 IGNhbiBiZSBmb3VuZC4NCisgIEByZXR2YWwgT3RoZXIgICAgICAgICAgICAgICAgICBUaGlzIGNv bnRyb2xsZXIgY2Fubm90IGJlIHN0YXJ0ZWQuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQ SQ0KK1VzYlZpZGVvRHJpdmVyQmluZGluZ1N0YXJ0ICgNCisgIElOIEVGSV9EUklWRVJfQklORElO R19QUk9UT0NPTCAgKlRoaXMsDQorICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgIENv bnRyb2xsZXIsDQorICBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICpSZW1haW5pbmdE ZXZpY2VQYXRoDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KKyAgRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fUFJPVE9D T0wgICAgKlVzYklhSW87DQorICBFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDUklQ VE9SICBBc3NvY0Rlc2M7DQorICBFRklfVVNCX0lOVEVSRkFDRV9ERVNDUklQVE9SICAgICAgICAg ICAgICBJbnRyZkRlc2M7DQorICBFRklfVVNCX0lPX1BST1RPQ09MICAgICAgICAgICAgICAgICAg ICAgICAqVXNiSW87DQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZk51bTsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl dHRpbmdDb3VudDsNCisNCisgIFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCisgICAgICAg ICAgICAgICAgICBDb250cm9sbGVyLA0KKyAgICAgICAgICAgICAgICAgICZnRWZpVXNiSW50ZXJm YWNlQXNzb2NpYXRpb25Qcm90b2NvbEd1aWQsDQorICAgICAgICAgICAgICAgICAgKFZPSUQgKiop JlVzYklhSW8sDQorICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwN CisgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KKyAgICAgICAgICAgICAgICAgIEVGSV9P UEVOX1BST1RPQ09MX0JZX0RSSVZFUg0KKyAgICAgICAgICAgICAgICAgICk7DQorICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICBTdGF0 dXMgPSBVc2JJYUlvLT5Vc2JJYUdldEFzc29jaWF0aW9uRGVzY3JpcHRvciAoVXNiSWFJbywgJkFz c29jRGVzYyk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBTdGF0 dXM7DQorICB9DQorDQorICBmb3IgKElmTnVtID0gQXNzb2NEZXNjLkZpcnN0SW50ZXJmYWNlOyBJ Zk51bSA8IChBc3NvY0Rlc2MuRmlyc3RJbnRlcmZhY2UgKyBBc3NvY0Rlc2MuSW50ZXJmYWNlQ291 bnQpOyBJZk51bSsrKSB7DQorICAgIFN0YXR1cyA9IFVzYklhSW8tPlVzYklhR2V0QXNzb2NpYXRl U2V0dGluZ3MgKFVzYklhSW8sIElmTnVtLCAmVXNiSW8sICZTZXR0aW5nQ291bnQpOw0KKyAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAgY29udGludWU7DQorICAgIH0NCisgICAg U3RhdHVzID0gVXNiSW8tPlVzYkdldEludGVyZmFjZURlc2NyaXB0b3IgKFVzYklvLCAmSW50cmZE ZXNjKTsNCisgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCisgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KKyAgICAgIHJldHVybiBTdGF0dXM7DQorICAgIH0NCisgICAgaWYgKElu dHJmRGVzYy5JbnRlcmZhY2VDbGFzcyA9PSBVU0JfVklERU9fQ0xBU1MpIHsNCisgICAgICBpZiAo SW50cmZEZXNjLkludGVyZmFjZVN1YkNsYXNzID09IFVTQl9WSURFT0NPTlRST0xfU1VCQ0xBU1Mp IHsNCisgICAgICAgIC8vIGZvdW5kIHZpZGVvIGNvbnRyb2wgVXNiSW8sIHN0b3JlIGl0IGluIHRo ZSBkZXZpY2UgZm9yIGZ1dHVyZSB1c2UNCisgICAgICAgIC8vIFRCRA0KKyAgICAgICAgLy8NCisg ICAgICB9DQorICAgICAgaWYgKEludHJmRGVzYy5JbnRlcmZhY2VTdWJDbGFzcyA9PSBVU0JfVklE RU9TVFJFQU1JTkdfU1VCQ0xBU1MpIHsNCisgICAgICAgIC8vIGZvdW5kIHZpZGVvIHN0cmVhbWlu ZyBVc2JJbywgc3RvcmUgaXQgaW4gdGhlIGRldmljZSBmb3IgZnV0dXJlIHVzZQ0KKyAgICAgICAg Ly8gVEJEDQorICAgICAgICAvLw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKyAgaWYgKElmTnVt ID09IChBc3NvY0Rlc2MuRmlyc3RJbnRlcmZhY2UgKyBBc3NvY0Rlc2MuSW50ZXJmYWNlQ291bnQp KSB7DQorICAgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQorICAgICAgICAgIENvbnRyb2xsZXIsDQor ICAgICAgICAgICZnRWZpVXNiSW50ZXJmYWNlQXNzb2NpYXRpb25Qcm90b2NvbEd1aWQsDQorICAg ICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQorICAgICAgICAgIENvbnRyb2xsZXIN CisgICAgICAgICAgKTsNCisgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQorICB9DQorDQorICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKw0KKy8qKg0KKyAgU3RvcHMgdGhlIFVTQiB2aWRl byBkZXZpY2UgaGFuZGxlZCBieSB0aGlzIGRyaXZlci4NCisNCisgIEBwYXJhbSAgVGhpcyAgICAg ICAgICAgICAgICAgICBUaGUgVVNCIHZpZGVvIGRyaXZlciBiaW5kaW5nIHByb3RvY29sLg0KKyAg QHBhcmFtICBDb250cm9sbGVyICAgICAgICAgICAgIFRoZSBjb250cm9sbGVyIHRvIHJlbGVhc2Uu DQorICBAcGFyYW0gIE51bWJlck9mQ2hpbGRyZW4gICAgICAgVGhlIG51bWJlciBvZiBoYW5kbGVz IGluIENoaWxkSGFuZGxlQnVmZmVyLg0KKyAgQHBhcmFtICBDaGlsZEhhbmRsZUJ1ZmZlciAgICAg IFRoZSBhcnJheSBvZiBjaGlsZCBoYW5kbGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgVGhlIGRldmljZSB3YXMgc3RvcHBlZC4NCisgIEByZXR2YWwgRUZJX1VOU1VQUE9S VEVEICAgICAgICBTaW1wbGUgVGV4dCBJbiBQcm90b2NvbCBvciBTaW1wbGUgVGV4dCBJbiBFeCBQ cm90b2NvbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBpbnN0YWxs ZWQgb24gQ29udHJvbGxlci4NCisgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICBUaGUg ZGV2aWNlIGNvdWxkIG5vdCBiZSBzdG9wcGVkIGR1ZSB0byBhIGRldmljZSBlcnJvci4NCisgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgICBGYWlsIHRvIHVuaW5zdGFsbCBwcm90b2NvbHMg YXR0YWNoZWQgb24gdGhlIGRldmljZS4NCisNCisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQor VXNiVmlkZW9Ecml2ZXJCaW5kaW5nU3RvcCAoDQorICBJTiAgRUZJX0RSSVZFUl9CSU5ESU5HX1BS T1RPQ09MICAqVGhpcywNCisgIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgIENvbnRy b2xsZXIsDQorICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZkNoaWxk cmVuLA0KKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgKkNoaWxkSGFuZGxlQnVm ZmVyDQorICApDQorew0KKyAgZ0JTLT5DbG9zZVByb3RvY29sICgNCisgICAgICAgIENvbnRyb2xs ZXIsDQorICAgICAgICAmZ0VmaVVzYkludGVyZmFjZUFzc29jaWF0aW9uUHJvdG9jb2xHdWlkLA0K KyAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCisgICAgICAgIENvbnRyb2xsZXIN CisgICAgICAgICk7DQorDQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKw0KKy8qKg0K KyAgVGhlIFVTQiB2aWRlbyBkcml2ZXIgZW50cnkgcG9pbnRlci4NCisNCisgIEBwYXJhbSBJbWFn ZUhhbmRsZSAgICAgICBUaGUgZHJpdmVyIGltYWdlIGhhbmRsZS4NCisgIEBwYXJhbSBTeXN0ZW1U YWJsZSAgICAgICBUaGUgc3lzdGVtIHRhYmxlLg0KKw0KKyAgQHJldHVybiBFRklfU1VDQ0VTUyAg ICAgIFRoZSBjb21wb25lbnQgbmFtZSBwcm90b2NvbCBpcyBpbnN0YWxsZWQuDQorICBAcmV0dXJu IE90aGVycyAgICAgICAgICAgRmFpbGVkIHRvIGluaXQgdGhlIHVzYiBkcml2ZXIuDQorDQorKiov DQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1VzYlZpZGVvRHhlRW50cnlQb2ludCAoDQorICBJTiBF RklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCisgIElOIEVGSV9TWVNURU1fVEFCTEUgICpT eXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBFZmlMaWJJbnN0YWxsRHJpdmVyQmluZGlu Z0NvbXBvbmVudE5hbWUyICgNCisgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgICAgICAgICAg U3lzdGVtVGFibGUsDQorICAgICAgICAgICAmZ1VzYlZpZGVvRHJpdmVyQmluZGluZywNCisgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KKyAgICAgICAgICAgJmdVc2JWaWRlb0NvbXBvbmVudE5hbWUs DQorICAgICAgICAgICAmZ1VzYlZpZGVvQ29tcG9uZW50TmFtZTINCisgICAgICAgICAgICk7DQor fQ0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9Vc2JW aWRlb0R4ZS5oIGIvTWRlTW9kdWxlUGtnL0FwcGxpY2F0aW9uL1VzYlZpZGVvRHhlL1VzYlZpZGVv RHhlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTM3NzllNjkxYgot LS0gL2Rldi9udWxsCisrKyBiL01kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9V c2JWaWRlb0R4ZS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKiogQGZpbGUNCisgIEhlYWRlciBmaWxl IGZvciBVU0IgVmlkZW8gRHJpdmVyJ3MgRGF0YSBTdHJ1Y3R1cmVzLg0KKw0KK0NvcHlyaWdodCAo YykgMjAyNSwgQW1lcmljYW4gTWVnYXRyZW5kcyBMTEMuDQorU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisNCisqKi8NCisNCisjaWZuZGVmIF9FRklfVVNCX1ZJ REVPX0hfDQorI2RlZmluZSBfRUZJX1VTQl9WSURFT19IXw0KKw0KKyNpbmNsdWRlIDxVZWZpLmg+ DQorI2luY2x1ZGUgPFByb3RvY29sL0RyaXZlckJpbmRpbmcuaD4NCisjaW5jbHVkZSA8TGlicmFy eS9VZWZpRHJpdmVyRW50cnlQb2ludC5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2Vy dmljZXNUYWJsZUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KKyNpbmNsdWRlIDxQaUR4ZS5oPg0KKw0KKyNkZWZpbmUg VVNCX1ZJREVPX0NMQVNTICAgICAgICAgICAgICAgICAgICAgICAgICAweEUNCisjZGVmaW5lIFVT Ql9WSURFT19JTlRFUkZBQ0VfQ09MTEVDVElPTl9TVUJDTEFTUyAgMHgzDQorI2RlZmluZSBVU0Jf VklERU9DT05UUk9MX1NVQkNMQVNTICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVVNCX1ZJ REVPU1RSRUFNSU5HX1NVQkNMQVNTICAgICAgICAgICAgICAweDINCisNCisNCit0eXBlZGVmIHN0 cnVjdCBfVVNCX1ZJREVPX0RFVklDRSB7DQorICBFRklfVVNCX0lPX1BST1RPQ09MICpWaWRlb0N0 bElvOw0KK30gVVNCX1ZJREVPX0RFVklDRTsNCisNCitleHRlcm4gRUZJX0NPTVBPTkVOVF9OQU1F X1BST1RPQ09MICAgZ1VzYlZpZGVvQ29tcG9uZW50TmFtZTsNCitleHRlcm4gRUZJX0NPTVBPTkVO VF9OQU1FMl9QUk9UT0NPTCAgZ1VzYlZpZGVvQ29tcG9uZW50TmFtZTI7DQorDQorLy8NCisvLyBG dW5jdGlvbnMgb2YgRHJpdmVyIEJpbmRpbmcgUHJvdG9jb2wNCisvLw0KKw0KKy8qKg0KKyAgQ2hl Y2sgd2hldGhlciBVU0IgdmlkZW8gZHJpdmVyIHN1cHBvcnRzIHRoaXMgZGV2aWNlLg0KKw0KKyAg QHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgIFRoZSBVU0IgdmlkZW8gZHJpdmVyIGJpbmRp bmcgcHJvdG9jb2wuDQorICBAcGFyYW0gIENvbnRyb2xsZXIgICAgICAgICAgICAgVGhlIGNvbnRy b2xsZXIgaGFuZGxlIHRvIGNoZWNrLg0KKyAgQHBhcmFtICBSZW1haW5pbmdEZXZpY2VQYXRoICAg IFRoZSByZW1haW5pbmcgZGV2aWNlIHBhdGguDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgVGhlIGRyaXZlciBzdXBwb3J0cyB0aGlzIGNvbnRyb2xsZXIuDQorICBAcmV0dmFs IG90aGVyICAgICAgICAgICAgICAgICAgVGhpcyBkZXZpY2UgaXNuJ3Qgc3VwcG9ydGVkLg0KKw0K KyoqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitVc2JWaWRlb0RyaXZlckJpbmRpbmdTdXBwb3J0 ZWQgKA0KKyAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAqVGhpcywNCisgIElOIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCisgIElOIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgICAgKlJlbWFpbmluZ0RldmljZVBhdGgNCisgICk7DQorDQorLyoqDQor ICBTdGFydHMgdGhlIFVTQiB2aWRlbyBkZXZpY2Ugd2l0aCB0aGlzIGRyaXZlci4NCisNCisgIEBw YXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgICBUaGUgVVNCIHZpZGVvIGRyaXZlciBiaW5kaW5n IGluc3RhbmNlLg0KKyAgQHBhcmFtICBDb250cm9sbGVyICAgICAgICAgICAgIEhhbmRsZSBvZiBk ZXZpY2UgdG8gYmluZCBkcml2ZXIgdG8uDQorICBAcGFyYW0gIFJlbWFpbmluZ0RldmljZVBhdGgg ICAgT3B0aW9uYWwgcGFyYW1ldGVyIHVzZSB0byBwaWNrIGEgc3BlY2lmaWMgY2hpbGQNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgdG8gc3RhcnQuDQorDQorICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIGNvbnRyb2xsZXIgaXMgY29udHJvbGxlZCBi eSB0aGUgdXNiIHZpZGVvIGRyaXZlci4NCisgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAg ICBObyBpbnRlcnJ1cHQgZW5kcG9pbnQgY2FuIGJlIGZvdW5kLg0KKyAgQHJldHZhbCBPdGhlciAg ICAgICAgICAgICAgICAgIFRoaXMgY29udHJvbGxlciBjYW5ub3QgYmUgc3RhcnRlZC4NCisNCisq Ki8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorVXNiVmlkZW9Ecml2ZXJCaW5kaW5nU3RhcnQgKA0K KyAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAqVGhpcywNCisgIElOIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCisgIElOIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgICAgKlJlbWFpbmluZ0RldmljZVBhdGgNCisgICk7DQorDQorLyoqDQorICBTdG9w cyB0aGUgVVNCIHZpZGVvIGRldmljZSBoYW5kbGVkIGJ5IHRoaXMgZHJpdmVyLg0KKw0KKyAgQHBh cmFtICBUaGlzICAgICAgICAgICAgICAgICAgIFRoZSBVU0IgdmlkZW8gZHJpdmVyIGJpbmRpbmcg cHJvdG9jb2wuDQorICBAcGFyYW0gIENvbnRyb2xsZXIgICAgICAgICAgICAgVGhlIGNvbnRyb2xs ZXIgdG8gcmVsZWFzZS4NCisgIEBwYXJhbSAgTnVtYmVyT2ZDaGlsZHJlbiAgICAgICBUaGUgbnVt YmVyIG9mIGhhbmRsZXMgaW4gQ2hpbGRIYW5kbGVCdWZmZXIuDQorICBAcGFyYW0gIENoaWxkSGFu ZGxlQnVmZmVyICAgICAgVGhlIGFycmF5IG9mIGNoaWxkIGhhbmRsZS4NCisNCisgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZGV2aWNlIHdhcyBzdG9wcGVkLg0KKyAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgIFNpbXBsZSBUZXh0IEluIFByb3RvY29sIG9yIFNpbXBs ZSBUZXh0IEluIEV4IFByb3RvY29sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aXMgbm90IGluc3RhbGxlZCBvbiBDb250cm9sbGVyLg0KKyAgQHJldHZhbCBFRklfREVWSUNFX0VS Uk9SICAgICAgIFRoZSBkZXZpY2UgY291bGQgbm90IGJlIHN0b3BwZWQgZHVlIHRvIGEgZGV2aWNl IGVycm9yLg0KKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgIEZhaWwgdG8gdW5pbnN0 YWxsIHByb3RvY29scyBhdHRhY2hlZCBvbiB0aGUgZGV2aWNlLg0KKw0KKyoqLw0KK0VGSV9TVEFU VVMNCitFRklBUEkNCitVc2JWaWRlb0RyaXZlckJpbmRpbmdTdG9wICgNCisgIElOICBFRklfRFJJ VkVSX0JJTkRJTkdfUFJPVE9DT0wgICpUaGlzLA0KKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgICAgQ29udHJvbGxlciwNCisgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg IE51bWJlck9mQ2hpbGRyZW4sDQorICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAq Q2hpbGRIYW5kbGVCdWZmZXINCisgICk7DQorDQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvTWRl TW9kdWxlUGtnL0FwcGxpY2F0aW9uL1VzYlZpZGVvRHhlL1VzYlZpZGVvRHhlLmluZiBiL01kZU1v ZHVsZVBrZy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9Vc2JWaWRlb0R4ZS5pbmYKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2ZhN2ZhYzkwMQotLS0gL2Rldi9udWxsCisr KyBiL01kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9Vc2JWaWRlb0R4ZS9Vc2JWaWRlb0R4ZS5pbmYK QEAgLTAsMCArMSw0NCBAQAorIyMgQGZpbGUNCisjIFVzYiBWaWRlbyBkcml2ZXIgcHJvdmlkZXMg c2VydmljZXMgZm9yIFVzYiB2aWRlbyBkZXZpY2UNCisjDQorIyBDb3B5cmlnaHQgKGMpIDIwMjUs IEFtZXJpY2FuIE1lZ2F0cmVuZHMgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCisjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorIw0KKyMjDQorDQor W0RlZmluZXNdDQorICBJTkZfVkVSU0lPTiAgICAgPSAweDAwMDEwMDA1DQorICBCQVNFX05BTUUg ICAgICAgPSBVc2JWaWRlb0R4ZQ0KKyAgRklMRV9HVUlEICAgICAgID0gNDEzNEExRkQtRDlEQi00 MDVFLTk4NzYtN0U1OERCM0I3OTA4DQorICBNT0RVTEVfVFlQRSAgICAgPSBVRUZJX0RSSVZFUg0K KyAgVkVSU0lPTl9TVFJJTkcgID0gMS4wDQorICBFTlRSWV9QT0lOVCAgICAgPSBVc2JWaWRlb0R4 ZUVudHJ5UG9pbnQNCisgICAgDQorIw0KKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBm b3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQgdG9vbHMuDQor Iw0KKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQNCisjDQorDQor W1NvdXJjZXNdDQorICBVc2JWaWRlb0R4ZS5jDQorICBVc2JWaWRlb0R4ZS5oDQorICBDb21wb25l bnROYW1lLmMNCisNCitbUGFja2FnZXNdDQorICBNZGVQa2cvTWRlUGtnLmRlYw0KKw0KK1tMaWJy YXJ5Q2xhc3Nlc10NCisgIE1lbW9yeUFsbG9jYXRpb25MaWINCisgIERldmljZVBhdGhMaWINCisg IFVlZmlMaWINCisgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaURyaXZlckVudHJ5 UG9pbnQNCisgIEJhc2VNZW1vcnlMaWINCisgIERlYnVnTGliDQorICBSZXBvcnRTdGF0dXNDb2Rl TGliDQorDQorW1Byb3RvY29sc10NCisgIGdFZmlVc2JJb1Byb3RvY29sR3VpZA0KKyAgZ0VmaVVz YkludGVyZmFjZUFzc29jaWF0aW9uUHJvdG9jb2xHdWlkDQorICAgIApcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9V c2JCdXMuaCBiL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JCdXMuaAppbmRleCAy MWEyNDIxOGZjLi5mNzM0NDQyNzM3IDEwMDY0NAotLS0gYS9NZGVNb2R1bGVQa2cvQnVzL1VzYi9V c2JCdXNEeGUvVXNiQnVzLmgKKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1Vz YkJ1cy5oCkBAIC0zLDYgKzMsNyBAQAogICAgIFVzYiBCdXMgRHJpdmVyIEJpbmRpbmcgYW5kIEJ1 cyBJTyBQcm90b2NvbC4NCiANCiBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE4LCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorQ29weXJpZ2h0IChjKSAyMDI1LCBB bWVyaWNhbiBNZWdhdHJlbmRzIEludGVybmF0aW9uYWwsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAN CiAqKi8NCkBAIC0xNSw2ICsxNiw3IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50CiAjaW5jbHVkZSA8UHJvdG9jb2wvVXNiMkhvc3RDb250cm9sbGVyLmg+DQog I2luY2x1ZGUgPFByb3RvY29sL1VzYkhvc3RDb250cm9sbGVyLmg+DQogI2luY2x1ZGUgPFByb3Rv Y29sL1VzYklvLmg+DQorI2luY2x1ZGUgPFByb3RvY29sL1VzYkFzc29jaWF0aW9uSW8uaD4NCiAj aW5jbHVkZSA8UHJvdG9jb2wvRGV2aWNlUGF0aC5oPg0KIA0KICNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VMaWIuaD4NCkBAIC0yOSwxMCArMzEsMTEgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQKIA0KICNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1VzYi5oPg0K IA0KLXR5cGVkZWYgc3RydWN0IF9VU0JfREVWSUNFICAgICBVU0JfREVWSUNFOw0KLXR5cGVkZWYg c3RydWN0IF9VU0JfSU5URVJGQUNFICBVU0JfSU5URVJGQUNFOw0KLXR5cGVkZWYgc3RydWN0IF9V U0JfQlVTICAgICAgICBVU0JfQlVTOw0KLXR5cGVkZWYgc3RydWN0IF9VU0JfSFVCX0FQSSAgICBV U0JfSFVCX0FQSTsNCit0eXBlZGVmIHN0cnVjdCBfVVNCX0RFVklDRSAgICAgICBVU0JfREVWSUNF Ow0KK3R5cGVkZWYgc3RydWN0IF9VU0JfSU5URVJGQUNFICAgIFVTQl9JTlRFUkZBQ0U7DQordHlw ZWRlZiBzdHJ1Y3QgX1VTQl9CVVMgICAgICAgICAgVVNCX0JVUzsNCit0eXBlZGVmIHN0cnVjdCBf VVNCX0hVQl9BUEkgICAgICBVU0JfSFVCX0FQSTsNCit0eXBlZGVmIHN0cnVjdCBfVVNCX0FTU09D SUFUSU9OICBVU0JfQVNTT0NJQVRJT047DQogDQogI2luY2x1ZGUgIlVzYlV0aWxpdHkuaCINCiAj aW5jbHVkZSAiVXNiRGVzYy5oIg0KQEAgLTEzMiw4ICsxMzUsOSBAQCB0eXBlZGVmIHN0cnVjdCBf VVNCX0hVQl9BUEkgICAgVVNCX0hVQl9BUEk7CiAvLw0KICNkZWZpbmUgIFVTQl9CVVNfVFBMICBU UExfTk9USUZZDQogDQotI2RlZmluZSAgVVNCX0lOVEVSRkFDRV9TSUdOQVRVUkUgIFNJR05BVFVS RV8zMiAoJ1UnLCAnUycsICdCJywgJ0knKQ0KLSNkZWZpbmUgIFVTQl9CVVNfU0lHTkFUVVJFICAg ICAgICBTSUdOQVRVUkVfMzIgKCdVJywgJ1MnLCAnQicsICdCJykNCisjZGVmaW5lICBVU0JfSU5U RVJGQUNFX1NJR05BVFVSRSAgICBTSUdOQVRVUkVfMzIgKCdVJywgJ1MnLCAnQicsICdJJykNCisj ZGVmaW5lICBVU0JfQlVTX1NJR05BVFVSRSAgICAgICAgICBTSUdOQVRVUkVfMzIgKCdVJywgJ1Mn LCAnQicsICdCJykNCisjZGVmaW5lICBVU0JfQVNTT0NJQVRJT05fU0lHTkFUVVJFICBTSUdOQVRV UkVfMzIgKCdVJywgJ1MnLCAnQicsICdBJykNCiANCiAjZGVmaW5lIFVTQl9CSVQoYSkgICAgICAg ICAgICAgICAgICgoVUlOVE4pKDEgPDwgKGEpKSkNCiAjZGVmaW5lIFVTQl9CSVRfSVNfU0VUKERh dGEsIEJpdCkgICgoQk9PTEVBTikoKChEYXRhKSAmIChCaXQpKSA9PSAoQml0KSkpDQpAQCAtMTQx LDYgKzE0NSw5IEBAIHR5cGVkZWYgc3RydWN0IF9VU0JfSFVCX0FQSSAgICBVU0JfSFVCX0FQSTsK ICNkZWZpbmUgVVNCX0lOVEVSRkFDRV9GUk9NX1VTQklPKGEpIFwNCiAgICAgICAgICAgQ1IoYSwg VVNCX0lOVEVSRkFDRSwgVXNiSW8sIFVTQl9JTlRFUkZBQ0VfU0lHTkFUVVJFKQ0KIA0KKyNkZWZp bmUgVVNCX0FTU09DSUFUSU9OX0ZST01fVVNCSUEoYSkgXA0KKyAgICAgICAgICBDUihhLCBVU0Jf QVNTT0NJQVRJT04sIFVzYklhUHJvdG9jb2wsIFVTQl9BU1NPQ0lBVElPTl9TSUdOQVRVUkUpDQor DQogI2RlZmluZSBVU0JfQlVTX0ZST01fVEhJUyhhKSBcDQogICAgICAgICAgIENSKGEsIFVTQl9C VVMsIEJ1c0lkLCBVU0JfQlVTX1NJR05BVFVSRSkNCiANCkBAIC0xNzYsNiArMTgzLDkgQEAgc3Ry dWN0IF9VU0JfREVWSUNFIHsKICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMYW5nSWRbVVNCX01BWF9MQU5HX0lEXTsNCiAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVG90YWxMYW5nSWQ7DQogDQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE51bU9mQXNzb2NpYXRpb247DQorICBVU0JfQVNTT0NJQVRJT04gICAgICAg ICAgICAgICAgICAgICAgICpBc3NvY2lhdGlvbnNbVVNCX01BWF9BU1NPQ0lBVElPTl07DQorDQog ICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bU9mSW50ZXJmYWNlOw0K ICAgVVNCX0lOVEVSRkFDRSAgICAgICAgICAgICAgICAgICAgICAgICAqSW50ZXJmYWNlc1tVU0Jf TUFYX0lOVEVSRkFDRV07DQogDQpAQCAtMjMwLDYgKzI0MCwyMyBAQCBzdHJ1Y3QgX1VTQl9JTlRF UkZBQ0UgewogICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgTWF4U3BlZWQ7DQogfTsNCiAN CisvLw0KKy8vIFN0YW5kcyBmb3IgYSBmdW5jdGlvbiBpbXBsZW1lbnRlZCB1c2luZyBpbnRlcmZh Y2UgYXNzb2NpYXRpb24NCisvLw0KK3N0cnVjdCBfVVNCX0FTU09DSUFUSU9OIHsNCisgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmU7DQorICBVU0JfREVWSUNFICAg ICAgICAgICAgICAgICAgICAgICAgKkRldmljZTsNCisgIFVTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJ T05fREVTQyAgICAqSWFEZXNjOw0KKw0KKyAgLy8NCisgIC8vIEhhbmRsZXMgYW5kIHByb3RvY29s cw0KKyAgLy8NCisgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5k bGU7DQorICBFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgVXNiSWFQcm90 b2NvbDsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICAqRGV2aWNl UGF0aDsNCisgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc01hbmFn ZWQ7DQorfTsNCisNCiAvLw0KIC8vIFN0YW5kcyBmb3IgdGhlIGN1cnJlbnQgVVNCIEJ1cw0KIC8v DQpAQCAtNzUxLDkgKzc3OCwxMCBAQCBVc2JCdXNDb250cm9sbGVyRHJpdmVyU3RvcCAoCiAgIElO IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgKkNoaWxkSGFuZGxlQnVmZmVyDQogICApOw0K IA0KLWV4dGVybiBFRklfVVNCX0lPX1BST1RPQ09MICAgICAgICAgICBtVXNiSW9Qcm90b2NvbDsN Ci1leHRlcm4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAgbVVzYkJ1c0RyaXZlckJpbmRp bmc7DQotZXh0ZXJuIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgIG1Vc2JCdXNDb21wb25l bnROYW1lOw0KLWV4dGVybiBFRklfQ09NUE9ORU5UX05BTUUyX1BST1RPQ09MICBtVXNiQnVzQ29t cG9uZW50TmFtZTI7DQorZXh0ZXJuIEVGSV9VU0JfSU9fUFJPVE9DT0wgICAgICAgICAgICAgICAg ICAgICBtVXNiSW9Qcm90b2NvbDsNCitleHRlcm4gRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJ T05fUFJPVE9DT0wgIG1Vc2JJYVByb3RvY29sOw0KK2V4dGVybiBFRklfRFJJVkVSX0JJTkRJTkdf UFJPVE9DT0wgICAgICAgICAgICAgbVVzYkJ1c0RyaXZlckJpbmRpbmc7DQorZXh0ZXJuIEVGSV9D T01QT05FTlRfTkFNRV9QUk9UT0NPTCAgICAgICAgICAgICBtVXNiQnVzQ29tcG9uZW50TmFtZTsN CitleHRlcm4gRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCAgICAgICAgICAgIG1Vc2JCdXND b21wb25lbnROYW1lMjsNCiANCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvQnVz L1VzYi9Vc2JCdXNEeGUvVXNiQnVzRHhlLmluZiBiL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1 c0R4ZS9Vc2JCdXNEeGUuaW5mCmluZGV4IGRkODU4OTQzNDYuLmZkYjQwZjkxMTAgMTAwNjQ0Ci0t LSBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JCdXNEeGUuaW5mCisrKyBiL01k ZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JCdXNEeGUuaW5mCkBAIC0yLDYgKzIsNyBA QAogIyAgVGhlIFVzYiBCdXMgRHhlIGRyaXZlciBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbmQgbWFu YWdlIGFsbCBhdHRhY2hlZCB1c2IgZGV2aWNlcy4NCiAjDQogIyAgQ29weXJpZ2h0IChjKSAyMDA2 IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKyMg IENvcHlyaWdodCAoYykgMjAyNSwgQW1lcmljYW4gTWVnYXRyZW5kcyBJbnRlcm5hdGlvbmFsLCBM TEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICMNCiAjICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KICMNCkBAIC00MCw2ICs0MSw3IEBACiAgIFVzYlV0 aWxpdHkuYw0KICAgVXNiRGVzYy5oDQogICBVc2JCdXMuaA0KKyAgVXNiSW50ZkFzc29jLmMNCiAN CiBbUGFja2FnZXNdDQogICBNZGVQa2cvTWRlUGtnLmRlYw0KQEAgLTU4LDYgKzYwLDcgQEAKIA0K IFtQcm90b2NvbHNdDQogICBnRWZpVXNiSW9Qcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAg ICAgICAgIyMgQllfU1RBUlQNCisgIGdFZmlVc2JJbnRlcmZhY2VBc3NvY2lhdGlvblByb3RvY29s R3VpZA0KICAgIyMgVE9fU1RBUlQNCiAgICMjIEJZX1NUQVJUDQogICBnRWZpRGV2aWNlUGF0aFBy b3RvY29sR3VpZA0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9V c2JEZXNjLmMgYi9NZGVNb2R1bGVQa2cvQnVzL1VzYi9Vc2JCdXNEeGUvVXNiRGVzYy5jCmluZGV4 IDhiMDc4ZTdlNDkuLmY5NmRmMTFlOTkgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBrZy9CdXMvVXNi L1VzYkJ1c0R4ZS9Vc2JEZXNjLmMKKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhl L1VzYkRlc2MuYwpAQCAtMyw2ICszLDcgQEAKICAgICBNYW5hZ2UgVXNiIERlc2NyaXB0b3IgTGlz dA0KIA0KIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCitDb3B5cmlnaHQgKGMpIDIwMjUsIEFtZXJpY2FuIE1lZ2F0 cmVuZHMgSW50ZXJuYXRpb25hbCwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KIA0KICoqLw0KQEAgLTQ2 LDYgKzQ3LDI0IEBAIFVzYkZyZWVJbnRlcmZhY2VEZXNjICgKICAgRnJlZVBvb2wgKFNldHRpbmcp Ow0KIH0NCiANCisvKioNCisgIEZyZWUgdGhlIGludGVyZmFjZSBhc3NvY2lhdGlvbiBkZXNjcmlw dG9yDQorDQorICBAcGFyYW0gIElhZCAgICAgICAgICAgICAgIFRoZSBpbnRlcmZhY2UgYXNzb2Np YXRpb24gZGVzY3JpcHRvciB0byBmcmVlLg0KKw0KKyoqLw0KK1ZPSUQNCitVc2JGcmVlSW50ZXJm YWNlQXNzb2NpYXRpb25EZXNjICgNCisgIElOIFVTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVT QyAgKklhZA0KKyAgKQ0KK3sNCisgIGlmIChJYWQtPkludGVyZmFjZXMgIT0gTlVMTCkgew0KKyAg ICBGcmVlUG9vbCAoSWFkLT5JbnRlcmZhY2VzKTsNCisgIH0NCisNCisgIEZyZWVQb29sIChJYWQp Ow0KK30NCisNCiAvKioNCiAgIEZyZWUgYSBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3Igd2l0aCBp dHMgaW50ZXJmYWNlDQogICBkZXNjcmlwdG9ycy4gSXQgbWF5IGJlIGluaXRpYWxpemVkIHBhcnRp YWxseS4NCkBAIC0xNjcsNiArMTg2LDExIEBAIFVzYkNyZWF0ZURlc2MgKAogICAgICAgQ3RybExl biA9IHNpemVvZiAoVVNCX0VORFBPSU5UX0RFU0MpOw0KICAgICAgIGJyZWFrOw0KIA0KKyAgICBj YXNlIFVTQl9ERVNDX1RZUEVfSU5URVJGQUNFX0FTU09DSUFUSU9OOg0KKyAgICAgIERlc2NMZW4g PSBzaXplb2YgKEVGSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0NSSVBUT1IpOw0KKyAg ICAgIEN0cmxMZW4gPSBzaXplb2YgKFVTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVTQyk7DQor ICAgICAgYnJlYWs7DQorDQogICAgIGRlZmF1bHQ6DQogICAgICAgQVNTRVJUIChGQUxTRSk7DQog ICAgICAgcmV0dXJuIE5VTEw7DQpAQCAtMjMxLDYgKzI1NSw3IEBAIFVzYkNyZWF0ZURlc2MgKAog ICAgIHJldHVybiBOVUxMOw0KICAgfQ0KIA0KKyAgQVNTRVJUIChDdHJsTGVuID49IERlc2NMZW4p Ow0KICAgQ29weU1lbSAoRGVzYywgSGVhZCwgKFVJTlROKURlc2NMZW4pOw0KIA0KICAgKkNvbnN1 bWVkID0gT2Zmc2V0Ow0KQEAgLTMxOSw2ICszNDQsODUgQEAgT05fRVJST1I6CiAgIHJldHVybiBO VUxMOw0KIH0NCiANCisvKioNCisgIFBhcnNlIGFuIGludGVyZmFjZSBhc3NvY2lhdGlvbiBhbmQg aXRzIGludGVyZmFjZXMuDQorDQorICBAcGFyYW0gIERlc2NCdWYgICAgICAgICAgICAgICBUaGUg YnVmZmVyIG9mIHJhdyBpbnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvci4NCisgIEBwYXJh bSAgTGVuICAgICAgICAgICAgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIHJhdyBkZXNjcmlwdG9y IGJ1ZmZlci4NCisgIEBwYXJhbSAgQ29uZmlnICAgICAgICAgICAgICAgIFRoZSBkZXZpY2UgY29u ZmlndXJhdGlvbiBidWZmZXIuDQorICBAcGFyYW0gIENvbnN1bWVkICAgICAgICAgICAgICBUaGUg bnVtYmVyIG9mIHJhdyBkZXNjcmlwdG9yIGNvbnN1bWVkLg0KKw0KKyAgQHJldHVybiBUaGUgY3Jl YXRlZCBpbnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvciBvciBOVUxMIGlmIGZhaWxlZC4N CisNCisqKi8NCitVU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0MgKg0KK1VzYlBhcnNlSW50 ZXJmYWNlQXNzb2NpYXRpb25EZXNjICgNCisgIElOIFVJTlQ4ICAgICAgICAgICAgKkRlc2NCdWYs DQorICBJTiBVSU5UTiAgICAgICAgICAgIExlbiwNCisgIElOIFVTQl9DT05GSUdfREVTQyAgKkNv bmZpZywNCisgIE9VVCBVSU5UTiAgICAgICAgICAgKkNvbnN1bWVkDQorICApDQorew0KKyAgVVNC X0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDICAqSWFkOw0KKyAgVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleDsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAg SWZJbmRleDsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsNCisgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtSWY7DQorICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgIFVzZWQ7DQorDQorICAqQ29uc3VtZWQgPSAwOw0KKyAgSWFkICAgICAgID0g VXNiQ3JlYXRlRGVzYyAoRGVzY0J1ZiwgTGVuLCBVU0JfREVTQ19UWVBFX0lOVEVSRkFDRV9BU1NP Q0lBVElPTiwgJlVzZWQpOw0KKw0KKyAgaWYgKElhZCA9PSBOVUxMKSB7DQorICAgIHJldHVybiBO VUxMOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIENyZWF0ZSBhbiBhcnJheSB0byBob2xkIHRoZSBh c3NvY2lhdGlvbidzIGludGVyZmFjZXMNCisgIC8vDQorICBOdW1JZiA9IElhZC0+RGVzYy5JbnRl cmZhY2VDb3VudDsNCisNCisgIERFQlVHICgoDQorICAgIERFQlVHX0lORk8sDQorICAgICJVc2JQ YXJzZUludGVyZmFjZUFzc29jaWF0aW9uRGVzYzogaW50ZXJmYWNlIGFzc29jaWF0aW9uIGhhcyAl ZCBpbnRlcmZhY2VzXG4iLA0KKyAgICAoVUlOVDMyKU51bUlmDQorICAgICkpOw0KKw0KKyAgQVNT RVJUIChOdW1JZiA+IDApOw0KKyAgaWYgKE51bUlmID09IDApIHsNCisgICAgREVCVUcgKChERUJV R19FUlJPUiwgIlVzYlBhcnNlSW50ZXJmYWNlQXNzb2NpYXRpb25EZXNjOiBubyBpbnRlcmZhY2Vz IGFyZSByZXBvcnRlZCBmb3IgdGhpcyBhc3NvY2lhdGlvbi5cbiIpKTsNCisgICAgZ290byBPTl9F UlJPUjsNCisgIH0NCisNCisgIElhZC0+SW50ZXJmYWNlcyA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNp emVvZiAoVVNCX0lOVEVSRkFDRV9ERVNDICopICogTnVtSWYpOw0KKw0KKyAgLy8NCisgIC8vIFBv cHVsYXRlIGludGVyZmFjZXMgZm9yIHRoaXMgYXNzb2NpYXRpb24NCisgIC8vDQorICBJZkluZGV4 ID0gMDsNCisgIGZvciAoSW5kZXggPSBJYWQtPkRlc2MuRmlyc3RJbnRlcmZhY2U7IEluZGV4IDwg KElhZC0+RGVzYy5GaXJzdEludGVyZmFjZSArIElhZC0+RGVzYy5JbnRlcmZhY2VDb3VudCk7IElu ZGV4KyspIHsNCisgICAgZm9yIChpID0gMDsgaSA8IENvbmZpZy0+RGVzYy5OdW1JbnRlcmZhY2Vz OyBpKyspIHsNCisgICAgICBpZiAoSW5kZXggPT0gQ29uZmlnLT5JbnRlcmZhY2VzW2ldLT5TZXR0 aW5nc1swXS0+RGVzYy5JbnRlcmZhY2VOdW1iZXIpIHsNCisgICAgICAgIGJyZWFrOw0KKyAgICAg IH0NCisgICAgfQ0KKw0KKyAgICBpZiAoaSA9PSBDb25maWctPkRlc2MuTnVtSW50ZXJmYWNlcykg ew0KKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJVc2JQYXJzZUludGVyZmFjZUFzc29jaWF0 aW9uRGVzYzogaW50ZXJmYWNlICVkIG5vdCBmb3VuZC5cbiIsIEluZGV4KSk7DQorICAgICAgZ290 byBPTl9FUlJPUjsNCisgICAgfQ0KKw0KKyAgICBJYWQtPkludGVyZmFjZXNbSWZJbmRleCsrXSA9 IENvbmZpZy0+SW50ZXJmYWNlc1tpXTsNCisgIH0NCisNCisgICpDb25zdW1lZCA9IFVzZWQ7DQor ICByZXR1cm4gSWFkOw0KKw0KK09OX0VSUk9SOg0KKyAgVXNiRnJlZUludGVyZmFjZUFzc29jaWF0 aW9uRGVzYyAoSWFkKTsNCisgIHJldHVybiBOVUxMOw0KK30NCisNCiAvKioNCiAgIFBhcnNlIHRo ZSBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3IgYW5kIGl0cyBpbnRlcmZhY2VzLg0KIA0KQEAgLTMz NCwxNiArNDM4LDIyIEBAIFVzYlBhcnNlQ29uZmlnRGVzYyAoCiAgIElOIFVJTlROICBMZW4NCiAg ICkNCiB7DQotICBVU0JfQ09ORklHX0RFU0MgICAgICAgICpDb25maWc7DQotICBVU0JfSU5URVJG QUNFX1NFVFRJTkcgICpTZXR0aW5nOw0KLSAgVVNCX0lOVEVSRkFDRV9ERVNDICAgICAqSW50ZXJm YWNlOw0KLSAgVUlOVE4gICAgICAgICAgICAgICAgICBJbmRleDsNCi0gIFVJTlROICAgICAgICAg ICAgICAgICAgTnVtSWY7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgIENvbnN1bWVkOw0KKyAg VVNCX0NPTkZJR19ERVNDICAgICAgICAgICAgICAgICAqQ29uZmlnOw0KKyAgVVNCX0lOVEVSRkFD RV9TRVRUSU5HICAgICAgICAgICAqU2V0dGluZzsNCisgIFVTQl9JTlRFUkZBQ0VfREVTQyAgICAg ICAgICAgICAgKkludGVyZmFjZTsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXg7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bUlmOw0KKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1lZDsNCisgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgKkJ1ZmZlcjsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGVuZ3RoOw0KKyAgVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDICAqSWFkOw0K IA0KICAgQVNTRVJUIChEZXNjQnVmICE9IE5VTEwpOw0KIA0KLSAgQ29uZmlnID0gVXNiQ3JlYXRl RGVzYyAoRGVzY0J1ZiwgTGVuLCBVU0JfREVTQ19UWVBFX0NPTkZJRywgJkNvbnN1bWVkKTsNCisg IEJ1ZmZlciA9IERlc2NCdWY7DQorICBMZW5ndGggPSBMZW47DQorDQorICBDb25maWcgPSBVc2JD cmVhdGVEZXNjIChCdWZmZXIsIExlbmd0aCwgVVNCX0RFU0NfVFlQRV9DT05GSUcsICZDb25zdW1l ZCk7DQogDQogICBpZiAoQ29uZmlnID09IE5VTEwpIHsNCiAgICAgcmV0dXJuIE5VTEw7DQpAQCAt Mzg0LDE1ICs0OTQsMTUgQEAgVXNiUGFyc2VDb25maWdEZXNjICgKICAgLy8gc2V0dGluZyAxfGlu dGVyZmFjZSAxLCBzZXR0aW5nIDB8aW50ZXJmYWNlIDIsIHNldHRpbmcgMHwuIENoZWNrDQogICAv LyBVU0IyLjAgc3BlYywgcGFnZSAyNjcuDQogICAvLw0KLSAgRGVzY0J1ZiArPSBDb25zdW1lZDsN Ci0gIExlbiAgICAgLT0gQ29uc3VtZWQ7DQorICBCdWZmZXIgKz0gQ29uc3VtZWQ7DQorICBMZW5n dGggLT0gQ29uc3VtZWQ7DQogDQogICAvLw0KICAgLy8gTWFrZSBhbGxvd2FuY2VzIGZvciBkZXZp Y2VzIHRoYXQgcmV0dXJuIGV4dHJhIGRhdGEgYXQgdGhlDQogICAvLyBlbmQgb2YgdGhlaXIgY29u ZmlnIGRlc2NyaXB0b3JzDQogICAvLw0KLSAgd2hpbGUgKExlbiA+PSBzaXplb2YgKEVGSV9VU0Jf SU5URVJGQUNFX0RFU0NSSVBUT1IpKSB7DQotICAgIFNldHRpbmcgPSBVc2JQYXJzZUludGVyZmFj ZURlc2MgKERlc2NCdWYsIExlbiwgJkNvbnN1bWVkKTsNCisgIHdoaWxlIChMZW5ndGggPj0gc2l6 ZW9mIChFRklfVVNCX0lOVEVSRkFDRV9ERVNDUklQVE9SKSkgew0KKyAgICBTZXR0aW5nID0gVXNi UGFyc2VJbnRlcmZhY2VEZXNjIChCdWZmZXIsIExlbmd0aCwgJkNvbnN1bWVkKTsNCiANCiAgICAg aWYgKFNldHRpbmcgPT0gTlVMTCkgew0KICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJVc2JQ YXJzZUNvbmZpZ0Rlc2M6IHdhcm5pbmc6IGZhaWxlZCB0byBnZXQgaW50ZXJmYWNlIHNldHRpbmcs IHN0b3AgcGFyc2luZyBub3cuXG4iKSk7DQpAQCAtNDE2LDggKzUyNiwzNiBAQCBVc2JQYXJzZUNv bmZpZ0Rlc2MgKAogICAgIEludGVyZmFjZS0+U2V0dGluZ3NbSW50ZXJmYWNlLT5OdW1PZlNldHRp bmddID0gU2V0dGluZzsNCiAgICAgSW50ZXJmYWNlLT5OdW1PZlNldHRpbmcrKzsNCiANCi0gICAg RGVzY0J1ZiArPSBDb25zdW1lZDsNCi0gICAgTGVuICAgICAtPSBDb25zdW1lZDsNCisgICAgQnVm ZmVyICs9IENvbnN1bWVkOw0KKyAgICBMZW5ndGggLT0gQ29uc3VtZWQ7DQorICB9DQorDQorICAv Lw0KKyAgLy8gUHJvY2VzcyBpbnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvcnMuDQorICAv Lw0KKyAgQnVmZmVyID0gRGVzY0J1ZjsNCisgIExlbmd0aCA9IExlbjsNCisNCisgIHdoaWxlIChM ZW5ndGggPj0gc2l6ZW9mIChFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDUklQVE9S KSkgew0KKyAgICBJYWQgPSBVc2JQYXJzZUludGVyZmFjZUFzc29jaWF0aW9uRGVzYyAoQnVmZmVy LCBMZW5ndGgsIENvbmZpZywgJkNvbnN1bWVkKTsNCisNCisgICAgaWYgKElhZCA9PSBOVUxMKSB7 DQorICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgLy8NCisgICAgLy8gSW5zZXJ0IHRoZSBh c3NvY2lhdGlvbiBkZXNjcmlwdG9yIHRvIHRoZSBjb3JyZXNwb25kaW5nIHNldC4NCisgICAgLy8N CisgICAgaWYgKENvbmZpZy0+TnVtT2ZJYWRzID49IFVTQl9NQVhfQVNTT0NJQVRJT04pIHsNCisg ICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVXNiUGFyc2VDb25maWdEZXNjOiB0b28gbWFueSBp bnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvcnMgaW4gdGhpcyBjb25maWd1cmF0aW9uLlxu IikpOw0KKyAgICAgIGdvdG8gT05fRVJST1I7DQorICAgIH0NCisNCisgICAgQ29uZmlnLT5JYWRz W0NvbmZpZy0+TnVtT2ZJYWRzXSA9IElhZDsNCisgICAgQ29uZmlnLT5OdW1PZklhZHMrKzsNCisN CisgICAgQnVmZmVyICs9IENvbnN1bWVkOw0KKyAgICBMZW5ndGggLT0gQ29uc3VtZWQ7DQogICB9 DQogDQogICByZXR1cm4gQ29uZmlnOw0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVXNi L1VzYkJ1c0R4ZS9Vc2JEZXNjLmggYi9NZGVNb2R1bGVQa2cvQnVzL1VzYi9Vc2JCdXNEeGUvVXNi RGVzYy5oCmluZGV4IGNlMjA1ZTcwNmQuLjAzZjM4YzdhZmEgMTAwNjQ0Ci0tLSBhL01kZU1vZHVs ZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JEZXNjLmgKKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9V c2IvVXNiQnVzRHhlL1VzYkRlc2MuaApAQCAtMyw2ICszLDcgQEAKICAgICBNYW5hZ2UgVXNiIERl c2NyaXB0b3IgTGlzdA0KIA0KIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTQsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCitDb3B5cmlnaHQgKGMpIDIwMjUsIEFt ZXJpY2FuIE1lZ2F0cmVuZHMgSW50ZXJuYXRpb25hbCwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KIA0K ICoqLw0KQEAgLTExLDYgKzEyLDcgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQKICNkZWZpbmUgX1VTQl9ERVNDUklQVE9SX0hfDQogDQogI2RlZmluZSBVU0Jf TUFYX0lOVEVSRkFDRV9TRVRUSU5HICAyNTYNCisjZGVmaW5lIFVTQl9NQVhfQVNTT0NJQVRJT04g ICAgICAgIDE2DQogDQogLy8NCiAvLyBUaGUgUmVxdWVzdFR5cGUgaW4gRUZJX1VTQl9ERVZJQ0Vf UkVRVUVTVCBpcyBjb21wb3NlZCBvZg0KQEAgLTYyLDggKzY0LDE1IEBAIHR5cGVkZWYgc3RydWN0 IHsKIH0gVVNCX0lOVEVSRkFDRV9ERVNDOw0KIA0KIHR5cGVkZWYgc3RydWN0IHsNCi0gIEVGSV9V U0JfQ09ORklHX0RFU0NSSVBUT1IgICAgRGVzYzsNCi0gIFVTQl9JTlRFUkZBQ0VfREVTQyAgICAg ICAgICAgKipJbnRlcmZhY2VzOw0KKyAgRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVT Q1JJUFRPUiAgICBEZXNjOw0KKyAgVVNCX0lOVEVSRkFDRV9ERVNDICAgICAgICAgICAgICAgICAg ICAgICAgICAqKkludGVyZmFjZXM7DQorfSBVU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0M7 DQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgRUZJX1VTQl9DT05GSUdfREVTQ1JJUFRPUiAgICAg ICAgIERlc2M7DQorICBVU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0MgICAgKklhZHNbVVNC X01BWF9BU1NPQ0lBVElPTl07DQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TnVtT2ZJYWRzOw0KKyAgVVNCX0lOVEVSRkFDRV9ERVNDICAgICAgICAgICAgICAgICoqSW50ZXJm YWNlczsNCiB9IFVTQl9DT05GSUdfREVTQzsNCiANCiB0eXBlZGVmIHN0cnVjdCB7DQpkaWZmIC0t Z2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkVudW1lci5jIGIvTWRlTW9k dWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkVudW1lci5jCmluZGV4IGIzYTQwNjM5ZjIuLjY0 Nzg2NjAzYzMgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JF bnVtZXIuYworKysgYi9NZGVNb2R1bGVQa2cvQnVzL1VzYi9Vc2JCdXNEeGUvVXNiRW51bWVyLmMK QEAgLTMsNiArMyw3IEBACiAgICAgVXNiIGJ1cyBlbnVtZXJhdGlvbiBzdXBwb3J0Lg0KIA0KIENv cHlyaWdodCAoYykgMjAwNyAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCitDb3B5cmlnaHQgKGMpIDIwMjUsIEFtZXJpY2FuIE1lZ2F0cmVuZHMgSW50 ZXJuYXRpb25hbCwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KIA0KICoqLw0KQEAgLTQxLDYgKzQyLDQx IEBAIFVzYkdldEVuZHBvaW50RGVzYyAoCiAgIHJldHVybiBOVUxMOw0KIH0NCiANCisvKioNCisg IENoZWNrIGlmIGdpdmVuIFVzYiBpbnRlcmZhY2UgaXMgYSBwYXJ0IG9mIFVzYiBhc3NvY2lhdGlv bi4NCisNCisgIEBwYXJhbVtpbl0gIERldmljZSAgICBUaGUgZGV2aWNlIG1heSBoYXZlIHRoZSBp bnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvci4NCisgIEBwYXJhbVtpbl0gIElmRGVzYyAg ICBUaGUgaW50ZXJmYWNlIGRlc2NyaXB0b3IgdG8gY2hlY2sgZm9yLg0KKyAgQHBhcmFtW291dF0g SWZBc3NvYyAgIFRoZSBVU0IgYXNzb2NpYXRpb24gZGV2aWNlIHBvaW50ZXIuDQorDQorICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgSWZEZXNjIGlzIGZvdW5kIHdpdGhpbiBhc3NvY2lhdGlvbnMsIElm QXNzb2MgaGFzIHZhbGlkIHBvaW50ZXIuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgSWZEZXNj IGRvZXMgbm8gYmVsb25nIHRvIGFueSBhc3NvY2lhdGlvbi4NCisNCisqKi8NCitFRklfU1RBVFVT DQorR2V0SW50ZXJmYWNlQXNzb2NpYXRpb24gKA0KKyAgSU4gVVNCX0RFVklDRSAgICAgICAgICAq RGV2aWNlLA0KKyAgSU4gVVNCX0lOVEVSRkFDRV9ERVNDICAqSWZEZXNjLA0KKyAgT1VUIFVTQl9B U1NPQ0lBVElPTiAgICAqKklmQXNzb2MNCisgICkNCit7DQorICBVSU5UTiAgICAgICAgICAgIElu ZGV4Ow0KKyAgVUlOVE4gICAgICAgICAgICBpOw0KKyAgVVNCX0FTU09DSUFUSU9OICAqSWE7DQor DQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBEZXZpY2UtPk51bU9mQXNzb2NpYXRpb247IElu ZGV4KyspIHsNCisgICAgSWEgPSBEZXZpY2UtPkFzc29jaWF0aW9uc1tJbmRleF07DQorICAgIGZv ciAoaSA9IDA7IGkgPCBJYS0+SWFEZXNjLT5EZXNjLkludGVyZmFjZUNvdW50OyBpKyspIHsNCisg ICAgICBpZiAoSWZEZXNjLT5TZXR0aW5nc1swXS0+RGVzYy5JbnRlcmZhY2VOdW1iZXIgPT0gSWEt PklhRGVzYy0+SW50ZXJmYWNlc1tpXS0+U2V0dGluZ3NbMF0tPkRlc2MuSW50ZXJmYWNlTnVtYmVy KSB7DQorICAgICAgICAqSWZBc3NvYyA9IElhOw0KKyAgICAgICAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQor fQ0KKw0KIC8qKg0KICAgRnJlZSB0aGUgcmVzb3VyY2UgdXNlZCBieSBVU0IgaW50ZXJmYWNlLg0K IA0KQEAgLTU0LDkgKzkwLDI1IEBAIFVzYkZyZWVJbnRlcmZhY2UgKAogICBJTiBVU0JfSU5URVJG QUNFICAqVXNiSWYNCiAgICkNCiB7DQotICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBFRklfU1RB VFVTICAgICAgIFN0YXR1czsNCisgIFVTQl9BU1NPQ0lBVElPTiAgKlVzYklhOw0KIA0KLSAgVXNi Q2xvc2VIb3N0UHJvdG9CeUNoaWxkIChVc2JJZi0+RGV2aWNlLT5CdXMsIFVzYklmLT5IYW5kbGUp Ow0KKyAgU3RhdHVzID0gR2V0SW50ZXJmYWNlQXNzb2NpYXRpb24gKFVzYklmLT5EZXZpY2UsIFVz YklmLT5JZkRlc2MsICZVc2JJYSk7DQorDQorICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K KyAgICAvLw0KKyAgICAvLyBDbG9zZSBVU0IgSW50ZXJmYWNlIEFzc29jaWF0aW9uIFByb3RvY29s IGJ5IENoaWxkDQorICAgIC8vDQorICAgIFN0YXR1cyA9IGdCUy0+Q2xvc2VQcm90b2NvbCAoDQor ICAgICAgICAgICAgICAgICAgICBVc2JJYS0+SGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAg JmdFZmlVc2JJbnRlcmZhY2VBc3NvY2lhdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAg ICAgICAgIG1Vc2JCdXNEcml2ZXJCaW5kaW5nLkRyaXZlckJpbmRpbmdIYW5kbGUsDQorICAgICAg ICAgICAgICAgICAgICBVc2JJZi0+SGFuZGxlDQorICAgICAgICAgICAgICAgICAgICApOw0KKyAg ICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JGcmVlSW50ZXJmYWNlOiBjbG9zZSBJQUQgcHJvdG9j b2wgYnkgY2hpbGQsICVyXG4iLCBTdGF0dXMpKTsNCisgIH0gZWxzZSB7DQorICAgIFVzYkNsb3Nl SG9zdFByb3RvQnlDaGlsZCAoVXNiSWYtPkRldmljZS0+QnVzLCBVc2JJZi0+SGFuZGxlKTsNCisg IH0NCiANCiAgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFj ZXMgKA0KICAgICAgICAgICAgICAgICAgIFVzYklmLT5IYW5kbGUsDQpAQCAtNzMsNyArMTI1LDY2 IEBAIFVzYkZyZWVJbnRlcmZhY2UgKAogDQogICAgIEZyZWVQb29sIChVc2JJZik7DQogICB9IGVs c2Ugew0KLSAgICBVc2JPcGVuSG9zdFByb3RvQnlDaGlsZCAoVXNiSWYtPkRldmljZS0+QnVzLCBV c2JJZi0+SGFuZGxlKTsNCisgICAgU3RhdHVzID0gR2V0SW50ZXJmYWNlQXNzb2NpYXRpb24gKFVz YklmLT5EZXZpY2UsIFVzYklmLT5JZkRlc2MsICZVc2JJYSk7DQorDQorICAgIGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQorICAgICAgLy8NCisgICAgICAvLyBSZW9wZW4gVVNCIEludGVyZmFj ZSBBc3NpY2lhdGlvbiBQcm90b2NvbCBieSBDaGlsZA0KKyAgICAgIC8vDQorICAgICAgU3RhdHVz ID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KKyAgICAgICAgICAgICAgICAgICAgICBVc2JJYS0+SGFu ZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAmZ0VmaVVzYkludGVyZmFjZUFzc29jaWF0aW9u UHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmVXNiSWEsDQor ICAgICAgICAgICAgICAgICAgICAgIG1Vc2JCdXNEcml2ZXJCaW5kaW5nLkRyaXZlckJpbmRpbmdI YW5kbGUsDQorICAgICAgICAgICAgICAgICAgICAgIFVzYklmLT5IYW5kbGUsDQorICAgICAgICAg ICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0NISUxEX0NPTlRST0xMRVINCisgICAg ICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JGcmVl SW50ZXJmYWNlOiByZW9wZW4gSUFEIGZvciBjaGlsZCwgU3RhdHVzID0gJXJcbiIsIFN0YXR1cykp Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgIC8vDQorICAgICAgLy8gUmVvcGVuIFVTQiBIb3N0IENv bnRyb2xsZXIgUHJvdG9jb2wgYnkgQ2hpbGQNCisgICAgICAvLw0KKyAgICAgIFN0YXR1cyA9IFVz Yk9wZW5Ib3N0UHJvdG9CeUNoaWxkIChVc2JJZi0+RGV2aWNlLT5CdXMsIFVzYklmLT5IYW5kbGUp Ow0KKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYkZyZWVJbnRlcmZhY2U6IHJlb3BlbiBo b3N0IGNvbnRyb2xsZXIgZm9yIGNoaWxkLCBTdGF0dXMgPSAlclxuIiwgU3RhdHVzKSk7DQorICAg IH0NCisgIH0NCisNCisgIHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKy8qKg0KKyAgRnJlZSB0aGUg cmVzb3VyY2UgdXNlZCBieSBVU0IgYXNzb2NpYXRpb24uDQorDQorICBAcGFyYW0gIFVzYklhICAg ICAgICAgICAgICAgICBUaGUgVVNCIGFzc29jaWF0aW9uIHRvIGZyZWUuDQorDQorICBAcmV0dmFs IEVGSV9BQ0NFU1NfREVOSUVEICAgICBUaGUgVXNiIGFzc29jaWF0aW9uIHJlc291cmNlIGlzIHN0 aWxsIG9jY3VwaWVkLg0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFVzYiBh c3NvY2lhdGlvbiByZXNvdXJjZSBpcyBmcmVlZC4NCisNCisqKi8NCitFRklfU1RBVFVTDQorVXNi RnJlZUFzc29jaWF0aW9uICgNCisgIElOIFVTQl9BU1NPQ0lBVElPTiAgKlVzYklhDQorICApDQor ew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKw0KKyAgU3RhdHVzID0gZ0JTLT5Vbmluc3RhbGxN dWx0aXBsZVByb3RvY29sSW50ZXJmYWNlcyAoDQorICAgICAgICAgICAgICAgICAgVXNiSWEtPkhh bmRsZSwNCisgICAgICAgICAgICAgICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQor ICAgICAgICAgICAgICAgICAgVXNiSWEtPkRldmljZVBhdGgsDQorICAgICAgICAgICAgICAgICAg JmdFZmlVc2JJbnRlcmZhY2VBc3NvY2lhdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAg ICAgICAmVXNiSWEtPlVzYklhUHJvdG9jb2wsDQorICAgICAgICAgICAgICAgICAgTlVMTA0KKyAg ICAgICAgICAgICAgICAgICk7DQorDQorICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAg ICBpZiAoVXNiSWEtPkRldmljZVBhdGggIT0gTlVMTCkgew0KKyAgICAgIEZyZWVQb29sIChVc2JJ YS0+RGV2aWNlUGF0aCk7DQorICAgIH0NCisNCisgICAgRnJlZVBvb2wgKFVzYklhKTsNCisgIH0g ZWxzZSB7DQorICAgIFVzYk9wZW5Ib3N0UHJvdG9CeUNoaWxkIChVc2JJYS0+RGV2aWNlLT5CdXMs IFVzYklhLT5IYW5kbGUpOw0KICAgfQ0KIA0KICAgcmV0dXJuIFN0YXR1czsNCkBAIC04Miw2ICsx OTMsNyBAQCBVc2JGcmVlSW50ZXJmYWNlICgKIC8qKg0KICAgQ3JlYXRlIGFuIGludGVyZmFjZSBm b3IgdGhlIGRlc2NyaXB0b3IgSWZEZXNjLiBFYWNoDQogICBkZXZpY2UncyBjb25maWd1cmF0aW9u IGNhbiBoYXZlIHNldmVyYWwgaW50ZXJmYWNlcy4NCisgIEludGVyZmFjZSBtYXkgYmVsb25nIHRv IGludGVyZmFjZSBhc3NvY2lhdGlvbi4NCiANCiAgIEBwYXJhbSAgRGV2aWNlICAgICAgICAgICAg ICAgIFRoZSBkZXZpY2UgaGFzIHRoZSBpbnRlcmZhY2UgZGVzY3JpcHRvci4NCiAgIEBwYXJhbSAg SWZEZXNjICAgICAgICAgICAgICAgIFRoZSBpbnRlcmZhY2UgZGVzY3JpcHRvci4NCkBAIC05NSwx MCArMjA3LDEyIEBAIFVzYkNyZWF0ZUludGVyZmFjZSAoCiAgIElOIFVTQl9JTlRFUkZBQ0VfREVT QyAgKklmRGVzYw0KICAgKQ0KIHsNCi0gIFVTQl9ERVZJQ0VfUEFUSCAgVXNiTm9kZTsNCi0gIFVT Ql9JTlRFUkZBQ0UgICAgKlVzYklmOw0KLSAgVVNCX0lOVEVSRkFDRSAgICAqSHViSWY7DQotICBF RklfU1RBVFVTICAgICAgIFN0YXR1czsNCisgIFVTQl9ERVZJQ0VfUEFUSCAgICAgICAgICAgVXNi Tm9kZTsNCisgIFVTQl9JTlRFUkZBQ0UgICAgICAgICAgICAgKlVzYklmOw0KKyAgVVNCX0lOVEVS RkFDRSAgICAgICAgICAgICAqSHViSWY7DQorICBVU0JfQVNTT0NJQVRJT04gICAgICAgICAgICpV c2JJYTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKkRldmljZVBhdGhQcm90b2NvbDsN CisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KIA0KICAgVXNiSWYgPSBBbGxv Y2F0ZVplcm9Qb29sIChzaXplb2YgKFVTQl9JTlRFUkZBQ0UpKTsNCiANCkBAIC0xMjgsMTAgKzI0 MiwxNyBAQCBVc2JDcmVhdGVJbnRlcmZhY2UgKAogDQogICBTZXREZXZpY2VQYXRoTm9kZUxlbmd0 aCAoJlVzYk5vZGUuSGVhZGVyLCBzaXplb2YgKFVzYk5vZGUpKTsNCiANCi0gIEh1YklmID0gRGV2 aWNlLT5QYXJlbnRJZjsNCi0gIEFTU0VSVCAoSHViSWYgIT0gTlVMTCk7DQorICBTdGF0dXMgPSBH ZXRJbnRlcmZhY2VBc3NvY2lhdGlvbiAoRGV2aWNlLCBJZkRlc2MsICZVc2JJYSk7DQorDQorICBp ZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBEZXZpY2VQYXRoUHJvdG9jb2wgPSBVc2JJ YS0+RGV2aWNlUGF0aDsNCisgIH0gZWxzZSB7DQorICAgIEh1YklmID0gRGV2aWNlLT5QYXJlbnRJ ZjsNCisgICAgQVNTRVJUIChIdWJJZiAhPSBOVUxMKTsNCisgICAgRGV2aWNlUGF0aFByb3RvY29s ID0gSHViSWYtPkRldmljZVBhdGg7DQorICB9DQogDQotICBVc2JJZi0+RGV2aWNlUGF0aCA9IEFw cGVuZERldmljZVBhdGhOb2RlIChIdWJJZi0+RGV2aWNlUGF0aCwgJlVzYk5vZGUuSGVhZGVyKTsN CisgIFVzYklmLT5EZXZpY2VQYXRoID0gQXBwZW5kRGV2aWNlUGF0aE5vZGUgKERldmljZVBhdGhQ cm90b2NvbCwgJlVzYk5vZGUuSGVhZGVyKTsNCiANCiAgIGlmIChVc2JJZi0+RGV2aWNlUGF0aCA9 PSBOVUxMKSB7DQogICAgIERFQlVHICgoREVCVUdfRVJST1IsICJVc2JDcmVhdGVJbnRlcmZhY2U6 IGZhaWxlZCB0byBjcmVhdGUgZGV2aWNlIHBhdGhcbiIpKTsNCkBAIC0xNTQsMTAgKzI3NSwyOCBA QCBVc2JDcmVhdGVJbnRlcmZhY2UgKAogICAgIGdvdG8gT05fRVJST1I7DQogICB9DQogDQotICAv Lw0KLSAgLy8gT3BlbiBVU0IgSG9zdCBDb250cm9sbGVyIFByb3RvY29sIGJ5IENoaWxkDQotICAv Lw0KLSAgU3RhdHVzID0gVXNiT3Blbkhvc3RQcm90b0J5Q2hpbGQgKERldmljZS0+QnVzLCBVc2JJ Zi0+SGFuZGxlKTsNCisgIFN0YXR1cyA9IEdldEludGVyZmFjZUFzc29jaWF0aW9uIChEZXZpY2Us IElmRGVzYywgJlVzYklhKTsNCisNCisgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAg IC8vDQorICAgIC8vIE9wZW4gVVNCIEludGVyZmFjZSBBc3NpY2lhdGlvbiBQcm90b2NvbCBieSBD aGlsZA0KKyAgICAvLw0KKyAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQorICAgICAg ICAgICAgICAgICAgICBVc2JJYS0+SGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgJmdFZmlV c2JJbnRlcmZhY2VBc3NvY2lhdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAgICAg IChWT0lEICoqKSZVc2JJYSwNCisgICAgICAgICAgICAgICAgICAgIG1Vc2JCdXNEcml2ZXJCaW5k aW5nLkRyaXZlckJpbmRpbmdIYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICBVc2JJZi0+SGFu ZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfQllfQ0hJTERfQ09O VFJPTExFUg0KKyAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgREVCVUcgKChERUJVR19JTkZP LCAiVXNiQ3JlYXRlSW50ZXJmYWNlOiBvcGVuIElBRCBmb3IgY2hpbGQsIFN0YXR1cyA9ICVyXG4i LCBTdGF0dXMpKTsNCisgIH0gZWxzZSB7DQorICAgIC8vDQorICAgIC8vIE9wZW4gVVNCIEhvc3Qg Q29udHJvbGxlciBQcm90b2NvbCBieSBDaGlsZA0KKyAgICAvLw0KKyAgICBTdGF0dXMgPSBVc2JP cGVuSG9zdFByb3RvQnlDaGlsZCAoRGV2aWNlLT5CdXMsIFVzYklmLT5IYW5kbGUpOw0KKyAgICBE RUJVRyAoKERFQlVHX0lORk8sICJVc2JDcmVhdGVJbnRlcmZhY2U6IG9wZW4gaG9zdCBjb250cm9s bGVyIGZvciBjaGlsZCwgU3RhdHVzID0gJXJcbiIsIFN0YXR1cykpOw0KKyAgfQ0KIA0KICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KICAgICBnQlMtPlVuaW5zdGFsbE11bHRpcGxlUHJvdG9j b2xJbnRlcmZhY2VzICgNCkBAIC0xODQsNiArMzIzLDExMiBAQCBPTl9FUlJPUjoKICAgcmV0dXJu IE5VTEw7DQogfQ0KIA0KKy8qKg0KKyAgQ3JlYXRlIGFuIGludGVyZmFjZSBhc3NvY2lhdGlvbiBp bnN0YW5jZSBhbmQgaW5zdGFsbCBwcm90b2NvbHMgdG8gbWFuYWdlIGl0Lg0KKw0KKyAgQHBhcmFt ICBEZXZpY2UgICAgICAgIFRoZSBVc2IgZGV2aWNlIHRoYXQgaGFzIHRoZSBpbnRlcmZhY2UgYXNz b2NpYXRpb24uDQorICBAcGFyYW0gIEluZGV4ICAgICAgICAgVGhlIGludGVyZmFjZSBhc3NvY2lh dGlvbiBpbmRleCB3aXRoaW4gRGV2aWNlLg0KKyAgQHBhcmFtICBJZkFzc29jRGVzYyAgIFRoZSBp bnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvci4NCisNCisgIEByZXR1cm4gVGhlIGNyZWF0 ZWQgVVNCIGludGVyZmFjZSBhc3NvY2lhdGlvbiwgb3IgTlVMTC4NCisNCisqKi8NCitVU0JfQVNT T0NJQVRJT04gKg0KK1VzYkNyZWF0ZUFzc29jaWF0aW9uICgNCisgIElOIFVTQl9ERVZJQ0UgICAg ICAgICAgICAgICAgICAgICAgKkRldmljZSwNCisgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXgsDQorICBJTiBVU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0MgICpJ ZkFzc29jRGVzYw0KKyAgKQ0KK3sNCisgIFVTQl9ERVZJQ0VfUEFUSCAgVXNiTm9kZTsNCisgIFVT Ql9BU1NPQ0lBVElPTiAgKlVzYkFzc29jOw0KKyAgRUZJX1NUQVRVUyAgICAgICBTdGF0dXM7DQor DQorICBVc2JBc3NvYyA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVVNCX0FTU09DSUFUSU9O KSk7DQorDQorICBpZiAoVXNiQXNzb2MgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gTlVMTDsNCisg IH0NCisNCisgIFVzYkFzc29jLT5TaWduYXR1cmUgPSBVU0JfQVNTT0NJQVRJT05fU0lHTkFUVVJF Ow0KKyAgVXNiQXNzb2MtPkRldmljZSAgICA9IERldmljZTsNCisgIFVzYkFzc29jLT5JYURlc2Mg ICAgPSBJZkFzc29jRGVzYzsNCisNCisgIENvcHlNZW0gKA0KKyAgICAmKFVzYkFzc29jLT5Vc2JJ YVByb3RvY29sKSwNCisgICAgJm1Vc2JJYVByb3RvY29sLA0KKyAgICBzaXplb2YgKEVGSV9VU0Jf SU5URVJGQUNFX0FTU09DSUFUSU9OX1BST1RPQ09MKQ0KKyAgICApOw0KKw0KKyAgLy8NCisgIC8v IEluc3RhbGwgVVNCIGFzc29jaWF0aW9uIHByb3RvY29scw0KKyAgLy8NCisgIC8vIERldmljZSBw YXRoIHByb3RvY29sIGZvciB0aGUgYXNzb2NpYXRpb24gaGFzIHRoZSBVU0Igbm9kZSBzaW1pbGFy IHRvIHRoZQ0KKyAgLy8gb25lIGluc3RhbGxlZCBmb3IgVVNCIGludGVyZmFjZS4NCisgIC8vDQor DQorICBVc2JOb2RlLkhlYWRlci5UeXBlICAgICAgPSBNRVNTQUdJTkdfREVWSUNFX1BBVEg7DQor ICBVc2JOb2RlLkhlYWRlci5TdWJUeXBlICAgPSBNU0dfVVNCX0RQOw0KKyAgVXNiTm9kZS5QYXJl bnRQb3J0TnVtYmVyID0gRGV2aWNlLT5QYXJlbnRQb3J0Ow0KKyAgVXNiTm9kZS5JbnRlcmZhY2VO dW1iZXIgID0gSW5kZXg7DQorDQorICBTZXREZXZpY2VQYXRoTm9kZUxlbmd0aCAoJlVzYk5vZGUu SGVhZGVyLCBzaXplb2YgKFVzYk5vZGUpKTsNCisNCisgIEFTU0VSVCAoRGV2aWNlLT5QYXJlbnRJ ZiAhPSBOVUxMKTsNCisNCisgIFVzYkFzc29jLT5EZXZpY2VQYXRoID0gQXBwZW5kRGV2aWNlUGF0 aE5vZGUgKERldmljZS0+UGFyZW50SWYtPkRldmljZVBhdGgsICZVc2JOb2RlLkhlYWRlcik7DQor DQorICBpZiAoVXNiQXNzb2MtPkRldmljZVBhdGggPT0gTlVMTCkgew0KKyAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiVXNiQ3JlYXRlQXNzb2NpYXRpb246IGZhaWxlZCB0byBjcmVhdGUgZGV2aWNl IHBhdGhcbiIpKTsNCisNCisgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAg IGdvdG8gT05fRVJST1I7DQorICB9DQorDQorICBTdGF0dXMgPSBnQlMtPkluc3RhbGxNdWx0aXBs ZVByb3RvY29sSW50ZXJmYWNlcyAoDQorICAgICAgICAgICAgICAgICAgJlVzYkFzc29jLT5IYW5k bGUsDQorICAgICAgICAgICAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KKyAg ICAgICAgICAgICAgICAgIFVzYkFzc29jLT5EZXZpY2VQYXRoLA0KKyAgICAgICAgICAgICAgICAg ICZnRWZpVXNiSW50ZXJmYWNlQXNzb2NpYXRpb25Qcm90b2NvbEd1aWQsDQorICAgICAgICAgICAg ICAgICAgJlVzYkFzc29jLT5Vc2JJYVByb3RvY29sLA0KKyAgICAgICAgICAgICAgICAgIE5VTEwN CisgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVXNiQ3JlYXRlQXNzb2NpYXRpb246IGZhaWxlZCB0 byBpbnN0YWxsIFVzYklhZCAtICVyXG4iLCBTdGF0dXMpKTsNCisgICAgZ290byBPTl9FUlJPUjsN CisgIH0NCisNCisgIC8vDQorICAvLyBPcGVuIFVTQiBIb3N0IENvbnRyb2xsZXIgUHJvdG9jb2wg YnkgQ2hpbGQNCisgIC8vDQorICBTdGF0dXMgPSBVc2JPcGVuSG9zdFByb3RvQnlDaGlsZCAoRGV2 aWNlLT5CdXMsIFVzYkFzc29jLT5IYW5kbGUpOw0KKw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KKyAgICBnQlMtPlVuaW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzICgNCisg ICAgICAgICAgIFVzYkFzc29jLT5IYW5kbGUsDQorICAgICAgICAgICAmZ0VmaURldmljZVBhdGhQ cm90b2NvbEd1aWQsDQorICAgICAgICAgICBVc2JBc3NvYy0+RGV2aWNlUGF0aCwNCisgICAgICAg ICAgICZnRWZpVXNiSW50ZXJmYWNlQXNzb2NpYXRpb25Qcm90b2NvbEd1aWQsDQorICAgICAgICAg ICAmVXNiQXNzb2MtPlVzYklhUHJvdG9jb2wsDQorICAgICAgICAgICBOVUxMDQorICAgICAgICAg ICApOw0KKw0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVXNiQ3JlYXRlQXNzb2NpYXRpb246 IGZhaWxlZCB0byBvcGVuIGhvc3QgZm9yIGNoaWxkIC0gJXJcbiIsIFN0YXR1cykpOw0KKyAgICBn b3RvIE9OX0VSUk9SOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIFVzYkFzc29jOw0KKw0KK09OX0VSUk9S Og0KKyAgaWYgKFVzYkFzc29jLT5EZXZpY2VQYXRoICE9IE5VTEwpIHsNCisgICAgRnJlZVBvb2wg KFVzYkFzc29jLT5EZXZpY2VQYXRoKTsNCisgIH0NCisNCisgIEZyZWVQb29sIChVc2JBc3NvYyk7 DQorICByZXR1cm4gTlVMTDsNCit9DQorDQogLyoqDQogICBGcmVlIHRoZSByZXNvdXJjZSB1c2Vk IGJ5IHRoaXMgVVNCIGRldmljZS4NCiANCkBAIC0yMzYsNiArNDgxLDQxIEBAIFVzYkNyZWF0ZURl dmljZSAoCiAgIHJldHVybiBEZXZpY2U7DQogfQ0KIA0KKy8qKg0KKyAgQ29ubmVjdCBVU0IgY29u dHJvbGxlciBhdCBUUExfQ0FMTEJBQ0sNCisNCisgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlu IGJvdGggVXNiSW9Db250cm9sVHJhbnNmZXIgYW5kDQorICB0aGUgdGltZXIgY2FsbGJhY2sgaW4g aHViIGVudW1lcmF0aW9uLiBTbywgYXQgbGVhc3QgaXQgaXMNCisgIGNhbGxlZCBhdCBUUExfQ0FM TEJBQ0suIFNvbWUgZHJpdmVyIHNpdHRpbmcgb24gVVNCIGhhcw0KKyAgdHdpc3RlZCBUUEwgdXNl ZC4gSXQgc2hvdWxkIGJlIG5vIHByb2JsZW0gZm9yIHVzIHRvIGNvbm5lY3QNCisgIG9yIGRpc2Nv bm5lY3QgYXQgQ0FMTEJBQ0suDQorDQorICBAcGFyYW0gIEhhbmRsZSAgICAgICAgQ29udHJvbGxl ciBoYW5kbGUgdG8gYmUgY29ubmVjdGVkDQorDQorKiovDQorRUZJX1NUQVRVUw0KK1VzYkNvbm5l Y3RDb250cm9sbGVyICgNCisgIEVGSV9IQU5ETEUgIEhhbmRsZQ0KKyAgKQ0KK3sNCisgIEVGSV9T VEFUVVMgIFN0YXR1czsNCisgIEVGSV9UUEwgICAgIE9sZFRwbDsNCisNCisgIE9sZFRwbCA9IFVz YkdldEN1cnJlbnRUcGwgKCk7DQorICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JDb25uZWN0RHJp dmVyOiBUUEwgYmVmb3JlIGNvbm5lY3QgaXMgJWQsICVwXG4iLCAoVUlOVDMyKU9sZFRwbCwgSGFu ZGxlKSk7DQorDQorICBnQlMtPlJlc3RvcmVUUEwgKFRQTF9DQUxMQkFDSyk7DQorDQorICBTdGF0 dXMgPSBnQlMtPkNvbm5lY3RDb250cm9sbGVyIChIYW5kbGUsIE5VTEwsIE5VTEwsIFRSVUUpOw0K Kw0KKyAgREVCVUcgKChERUJVR19JTkZPLCAiVXNiQ29ubmVjdERyaXZlcjogVFBMIGFmdGVyIGNv bm5lY3QgaXMgJWRcbiIsIChVSU5UMzIpVXNiR2V0Q3VycmVudFRwbCAoKSkpOw0KKyAgQVNTRVJU IChVc2JHZXRDdXJyZW50VHBsICgpID09IFRQTF9DQUxMQkFDSyk7DQorDQorICBnQlMtPlJhaXNl VFBMIChPbGRUcGwpOw0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQogLyoqDQogICBDb25u ZWN0IHRoZSBVU0IgaW50ZXJmYWNlIHdpdGggaXRzIGRyaXZlci4gRUZJIFVTQiBidXMgd2lsbA0K ICAgY3JlYXRlIGEgVVNCIGludGVyZmFjZSBmb3IgZWFjaCBzZXBhcmF0ZSBpbnRlcmZhY2UgZGVz Y3JpcHRvci4NCkBAIC0yNTIsNyArNTMyLDYgQEAgVXNiQ29ubmVjdERyaXZlciAoCiAgICkNCiB7 DQogICBFRklfU1RBVFVTICBTdGF0dXM7DQotICBFRklfVFBMICAgICBPbGRUcGw7DQogDQogICBT dGF0dXMgPSBFRklfU1VDQ0VTUzsNCiANCkBAIC0yNjQsMzAgKzU0MywxMiBAQCBVc2JDb25uZWN0 RHJpdmVyICgKICAgICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JDb25uZWN0RHJpdmVyOiBmb3Vu ZCBhIGh1YiBkZXZpY2VcbiIpKTsNCiAgICAgU3RhdHVzID0gbVVzYkh1YkFwaS5Jbml0IChVc2JJ Zik7DQogICB9IGVsc2Ugew0KLSAgICAvLw0KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCBpbiBib3RoIFVzYklvQ29udHJvbFRyYW5zZmVyIGFuZA0KLSAgICAvLyB0aGUgdGltZXIgY2Fs bGJhY2sgaW4gaHViIGVudW1lcmF0aW9uLiBTbywgYXQgbGVhc3QgaXQgaXMNCi0gICAgLy8gY2Fs bGVkIGF0IFRQTF9DQUxMQkFDSy4gU29tZSBkcml2ZXIgc2l0dGluZyBvbiBVU0IgaGFzDQotICAg IC8vIHR3aXN0ZWQgVFBMIHVzZWQuIEl0IHNob3VsZCBiZSBubyBwcm9ibGVtIGZvciB1cyB0byBj b25uZWN0DQotICAgIC8vIG9yIGRpc2Nvbm5lY3QgYXQgQ0FMTEJBQ0suDQotICAgIC8vDQotDQog ICAgIC8vDQogICAgIC8vIE9ubHkgcmVjdXJzaXZlbHkgd2FudGVkIHVzYiBjaGlsZCBkZXZpY2UN CiAgICAgLy8NCiAgICAgaWYgKFVzYkJ1c0lzV2FudGVkVXNiSU8gKFVzYklmLT5EZXZpY2UtPkJ1 cywgVXNiSWYpKSB7DQotICAgICAgT2xkVHBsID0gVXNiR2V0Q3VycmVudFRwbCAoKTsNCi0gICAg ICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JDb25uZWN0RHJpdmVyOiBUUEwgYmVmb3JlIGNvbm5l Y3QgaXMgJWQsICVwXG4iLCAoVUlOVDMyKU9sZFRwbCwgVXNiSWYtPkhhbmRsZSkpOw0KLQ0KLSAg ICAgIGdCUy0+UmVzdG9yZVRQTCAoVFBMX0NBTExCQUNLKTsNCi0NCi0gICAgICBTdGF0dXMgICAg ICAgICAgID0gZ0JTLT5Db25uZWN0Q29udHJvbGxlciAoVXNiSWYtPkhhbmRsZSwgTlVMTCwgTlVM TCwgVFJVRSk7DQorICAgICAgU3RhdHVzICAgICAgICAgICA9IFVzYkNvbm5lY3RDb250cm9sbGVy IChVc2JJZi0+SGFuZGxlKTsNCiAgICAgICBVc2JJZi0+SXNNYW5hZ2VkID0gKEJPT0xFQU4pICFF RklfRVJST1IgKFN0YXR1cyk7DQotDQotICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiVXNiQ29u bmVjdERyaXZlcjogVFBMIGFmdGVyIGNvbm5lY3QgaXMgJWRcbiIsIChVSU5UMzIpVXNiR2V0Q3Vy cmVudFRwbCAoKSkpOw0KLSAgICAgIEFTU0VSVCAoVXNiR2V0Q3VycmVudFRwbCAoKSA9PSBUUExf Q0FMTEJBQ0spOw0KLQ0KLSAgICAgIGdCUy0+UmFpc2VUUEwgKE9sZFRwbCk7DQogICAgIH0NCiAg IH0NCiANCkBAIC0zNzgsNiArNjM5LDcgQEAgVXNiU2VsZWN0Q29uZmlnICgKICAgVVNCX0lOVEVS RkFDRSAgICAgICAqVXNiSWY7DQogICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCiAgIFVJ TlQ4ICAgICAgICAgICAgICAgSW5kZXg7DQorICBVU0JfQVNTT0NJQVRJT04gICAgICpVc2JJYTsN CiANCiAgIC8vDQogICAvLyBMb2NhdGUgdGhlIGFjdGl2ZSBjb25maWcsIHRoZW4gc2V0IHRoZSBk ZXZpY2UncyBwb2ludGVyDQpAQCAtMzkzLDcgKzY1NSw3IEBAIFVzYlNlbGVjdENvbmZpZyAoCiAg ICAgfQ0KICAgfQ0KIA0KLSAgaWYgKEluZGV4ID09IERldkRlc2MtPkRlc2MuTnVtQ29uZmlndXJh dGlvbnMpIHsNCisgIGlmICgoQ29uZmlnRGVzYyA9PSBOVUxMKSB8fCAoSW5kZXggPT0gRGV2RGVz Yy0+RGVzYy5OdW1Db25maWd1cmF0aW9ucykpIHsNCiAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7 DQogICB9DQogDQpAQCAtNDA2LDYgKzY2OCwxOSBAQCBVc2JTZWxlY3RDb25maWcgKAogICAgIERl dmljZS0+QWRkcmVzcw0KICAgICApKTsNCiANCisgIC8vDQorICAvLyBDcmVhdGUgaW50ZXJmYWNl cyBmb3IgZWFjaCBVU0IgaW50ZXJmYWNlIGFzc29jaWF0aW9uIGRlc2NyaXB0b3IuDQorICAvLw0K KyAgRGV2aWNlLT5OdW1PZkFzc29jaWF0aW9uID0gQ29uZmlnRGVzYy0+TnVtT2ZJYWRzOw0KKw0K KyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQ29uZmlnRGVzYy0+TnVtT2ZJYWRzOyBJbmRleCsr KSB7DQorICAgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYlNlbGVjdENvbmZpZzogcHJvY2VzcyBJ QUQgJWRcbiIsIEluZGV4KSk7DQorDQorICAgIFVzYklhID0gVXNiQ3JlYXRlQXNzb2NpYXRpb24g KERldmljZSwgSW5kZXgsIENvbmZpZ0Rlc2MtPklhZHNbSW5kZXhdKTsNCisgICAgQVNTRVJUIChJ bmRleCA8IFVTQl9NQVhfQVNTT0NJQVRJT04pOw0KKyAgICBEZXZpY2UtPkFzc29jaWF0aW9uc1tJ bmRleF0gPSBVc2JJYTsNCisgIH0NCisNCiAgIC8vDQogICAvLyBDcmVhdGUgaW50ZXJmYWNlcyBm b3IgZWFjaCBVU0IgaW50ZXJmYWNlIGRlc2NyaXB0b3IuDQogICAvLw0KQEAgLTQ0OCw5ICs3MjMs NTUgQEAgVXNiU2VsZWN0Q29uZmlnICgKIA0KICAgRGV2aWNlLT5OdW1PZkludGVyZmFjZSA9IElu ZGV4Ow0KIA0KKyAgLy8NCisgIC8vIENvbm5lY3QgYXNzb2NpYXRpb24gZGV2aWNlIGRyaXZlcnMu IENvbm5lY3Rpb24gbWF5IGZhaWwgaWYgaWYgZGV2aWNlIGRyaXZlciBoYXMgYmVlbiBhbHJlYWR5 DQorICAvLyBzdGFydGVkIGZvciBhbnkgVXNiSW8gdGhhdCBiZWxvbmdzIHRvIHRoZSBhc3NvY2lh dGlvbi4NCisgIC8vDQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBEZXZpY2UtPk51bU9mQXNz b2NpYXRpb247IEluZGV4KyspIHsNCisgICAgU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSBnQlMtPkNvbm5lY3RDb250cm9sbGVyIChEZXZpY2UtPkFzc29jaWF0aW9uc1tJ bmRleF0tPkhhbmRsZSwgTlVMTCwgTlVMTCwgVFJVRSk7DQorICAgIERldmljZS0+QXNzb2NpYXRp b25zW0luZGV4XS0+SXNNYW5hZ2VkID0gKEJPT0xFQU4pICFFRklfRVJST1IgKFN0YXR1cyk7DQor DQorICAgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYlNlbGVjdENvbmZpZzogYXNzb2NpYXRpb24g ZHJpdmVyIGNvbm5lY3Q6ICVyXG4iLCBTdGF0dXMpKTsNCisgIH0NCisNCiAgIHJldHVybiBFRklf U1VDQ0VTUzsNCiB9DQogDQorLyoqDQorICBEaXNjb25uZWN0IFVTQiBjb250cm9sbGVyIGF0IFRQ TF9DQUxMQkFDSw0KKw0KKyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gYm90aCBVc2JJb0Nv bnRyb2xUcmFuc2ZlciBhbmQNCisgIHRoZSB0aW1lciBjYWxsYmFjayBpbiBodWIgZW51bWVyYXRp b24uIFNvLCBhdCBsZWFzdCBpdCBpcw0KKyAgY2FsbGVkIGF0IFRQTF9DQUxMQkFDSy4gU29tZSBk cml2ZXIgc2l0dGluZyBvbiBVU0IgaGFzDQorICB0d2lzdGVkIFRQTCB1c2VkLiBJdCBzaG91bGQg YmUgbm8gcHJvYmxlbSBmb3IgdXMgdG8gY29ubmVjdA0KKyAgb3IgZGlzY29ubmVjdCBhdCBDQUxM QkFDSy4NCisNCisgIEBwYXJhbSAgSGFuZGxlICAgICAgICBDb250cm9sbGVyIGhhbmRsZSB0byBi ZSBkaXNjb25uZWN0ZWQNCisNCisqKi8NCitFRklfU1RBVFVTDQorVXNiRGlzY29ubmVjdENvbnRy b2xsZXIgKA0KKyAgRUZJX0hBTkRMRSAgSGFuZGxlDQorICApDQorew0KKyAgRUZJX1RQTCAgICAg T2xkVHBsOw0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKw0KKyAgT2xkVHBsID0gVXNiR2V0Q3Vy cmVudFRwbCAoKTsNCisgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYkRpc2Nvbm5lY3REcml2ZXI6 IG9sZCBUUEwgaXMgJWQsICVwXG4iLCAoVUlOVDMyKU9sZFRwbCwgSGFuZGxlKSk7DQorDQorICBn QlMtPlJlc3RvcmVUUEwgKFRQTF9DQUxMQkFDSyk7DQorDQorICBTdGF0dXMgPSBnQlMtPkRpc2Nv bm5lY3RDb250cm9sbGVyIChIYW5kbGUsIE5VTEwsIE5VTEwpOw0KKw0KKyAgREVCVUcgKChERUJV R19JTkZPLCAiVXNiRGlzY29ubmVjdERyaXZlcjogVFBMIGFmdGVyIGRpc2Nvbm5lY3QgaXMgJWQs ICVkXG4iLCAoVUlOVDMyKVVzYkdldEN1cnJlbnRUcGwgKCksIFN0YXR1cykpOw0KKyAgQVNTRVJU IChVc2JHZXRDdXJyZW50VHBsICgpID09IFRQTF9DQUxMQkFDSyk7DQorDQorICBnQlMtPlJhaXNl VFBMIChPbGRUcGwpOw0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQogLyoqDQogICBEaXNj b25uZWN0IHRoZSBVU0IgaW50ZXJmYWNlIHdpdGggaXRzIGRyaXZlci4NCiANCkBAIC00NjIsNyAr NzgzLDYgQEAgVXNiRGlzY29ubmVjdERyaXZlciAoCiAgIElOIFVTQl9JTlRFUkZBQ0UgICpVc2JJ Zg0KICAgKQ0KIHsNCi0gIEVGSV9UUEwgICAgIE9sZFRwbDsNCiAgIEVGSV9TVEFUVVMgIFN0YXR1 czsNCiANCiAgIC8vDQpAQCAtNDczLDI3ICs3OTMsMTEgQEAgVXNiRGlzY29ubmVjdERyaXZlciAo CiAgIGlmIChVc2JJZi0+SXNIdWIpIHsNCiAgICAgU3RhdHVzID0gVXNiSWYtPkh1YkFwaS0+UmVs ZWFzZSAoVXNiSWYpOw0KICAgfSBlbHNlIGlmIChVc2JJZi0+SXNNYW5hZ2VkKSB7DQotICAgIC8v DQotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGJvdGggVXNiSW9Db250cm9sVHJh bnNmZXIgYW5kDQotICAgIC8vIHRoZSB0aW1lciBjYWxsYmFjayBpbiBodWIgZW51bWVyYXRpb24u IFNvLCBhdCBsZWFzdCBpdCBpcw0KLSAgICAvLyBjYWxsZWQgYXQgVFBMX0NBTExCQUNLLiBTb21l IGRyaXZlciBzaXR0aW5nIG9uIFVTQiBoYXMNCi0gICAgLy8gdHdpc3RlZCBUUEwgdXNlZC4gSXQg c2hvdWxkIGJlIG5vIHByb2JsZW0gZm9yIHVzIHRvIGNvbm5lY3QNCi0gICAgLy8gb3IgZGlzY29u bmVjdCBhdCBDQUxMQkFDSy4NCi0gICAgLy8NCi0gICAgT2xkVHBsID0gVXNiR2V0Q3VycmVudFRw bCAoKTsNCi0gICAgREVCVUcgKChERUJVR19JTkZPLCAiVXNiRGlzY29ubmVjdERyaXZlcjogb2xk IFRQTCBpcyAlZCwgJXBcbiIsIChVSU5UMzIpT2xkVHBsLCBVc2JJZi0+SGFuZGxlKSk7DQorICAg IFN0YXR1cyA9IFVzYkRpc2Nvbm5lY3RDb250cm9sbGVyIChVc2JJZi0+SGFuZGxlKTsNCiANCi0g ICAgZ0JTLT5SZXN0b3JlVFBMIChUUExfQ0FMTEJBQ0spOw0KLQ0KLSAgICBTdGF0dXMgPSBnQlMt PkRpc2Nvbm5lY3RDb250cm9sbGVyIChVc2JJZi0+SGFuZGxlLCBOVUxMLCBOVUxMKTsNCiAgICAg aWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgICBVc2JJZi0+SXNNYW5hZ2VkID0gRkFM U0U7DQogICAgIH0NCi0NCi0gICAgREVCVUcgKChERUJVR19JTkZPLCAiVXNiRGlzY29ubmVjdERy aXZlcjogVFBMIGFmdGVyIGRpc2Nvbm5lY3QgaXMgJWQsICVkXG4iLCAoVUlOVDMyKVVzYkdldEN1 cnJlbnRUcGwgKCksIFN0YXR1cykpOw0KLSAgICBBU1NFUlQgKFVzYkdldEN1cnJlbnRUcGwgKCkg PT0gVFBMX0NBTExCQUNLKTsNCi0NCi0gICAgZ0JTLT5SYWlzZVRQTCAoT2xkVHBsKTsNCiAgIH0N CiANCiAgIHJldHVybiBTdGF0dXM7DQpAQCAtNTEwLDEwICs4MTQsMTEgQEAgVXNiUmVtb3ZlQ29u ZmlnICgKICAgSU4gVVNCX0RFVklDRSAgKkRldmljZQ0KICAgKQ0KIHsNCi0gIFVTQl9JTlRFUkZB Q0UgICpVc2JJZjsNCi0gIFVJTlROICAgICAgICAgIEluZGV4Ow0KLSAgRUZJX1NUQVRVUyAgICAg U3RhdHVzOw0KLSAgRUZJX1NUQVRVUyAgICAgUmV0dXJuU3RhdHVzOw0KKyAgVVNCX0lOVEVSRkFD RSAgICAqVXNiSWY7DQorICBVU0JfQVNTT0NJQVRJT04gICpVc2JJYTsNCisgIFVJTlROICAgICAg ICAgICAgSW5kZXg7DQorICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsNCisgIEVGSV9TVEFUVVMg ICAgICAgUmV0dXJuU3RhdHVzOw0KIA0KICAgLy8NCiAgIC8vIFJlbW92ZSBlYWNoIGludGVyZmFj ZSBvZiB0aGUgZGV2aWNlDQpAQCAtNTQzLDYgKzg0OCwzNSBAQCBVc2JSZW1vdmVDb25maWcgKAog ICB9DQogDQogICBEZXZpY2UtPkFjdGl2ZUNvbmZpZyA9IE5VTEw7DQorDQorICBpZiAoRUZJX0VS Uk9SIChSZXR1cm5TdGF0dXMpKSB7DQorICAgIHJldHVybiBSZXR1cm5TdGF0dXM7DQorICB9DQor DQorICAvLyBSZXR1cm5TdGF0dXMgaXMgRUZJX1NVQ0NFU1MNCisNCisgIC8vDQorICAvLyBSZW1v dmUgZWFjaCBpbnRlcmZhY2UgYXNzb2NpYXRpb24NCisgIC8vDQorICBmb3IgKEluZGV4ID0gMDsg SW5kZXggPCBEZXZpY2UtPk51bU9mQXNzb2NpYXRpb247IEluZGV4KyspIHsNCisgICAgVXNiSWEg PSBEZXZpY2UtPkFzc29jaWF0aW9uc1tJbmRleF07DQorDQorICAgIFN0YXR1cyA9IFVzYkRpc2Nv bm5lY3RDb250cm9sbGVyIChVc2JJYS0+SGFuZGxlKTsNCisgICAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCisgICAgICBTdGF0dXMgPSBVc2JGcmVlQXNzb2NpYXRpb24gKFVzYklhKTsNCisg ICAgICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JSZW1vdmVDb25maWc6IGZyZWUgYXNzb2NpYXRp b246ICVyXG4iLCBTdGF0dXMpKTsNCisgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQor ICAgICAgICBVc2JDb25uZWN0Q29udHJvbGxlciAoVXNiSWEtPkhhbmRsZSk7DQorICAgICAgfQ0K KyAgICB9DQorDQorICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAgRGV2aWNl LT5Bc3NvY2lhdGlvbnNbSW5kZXhdID0gTlVMTDsNCisgICAgfSBlbHNlIHsNCisgICAgICBSZXR1 cm5TdGF0dXMgPSBTdGF0dXM7DQorICAgIH0NCisgIH0NCisNCiAgIHJldHVybiBSZXR1cm5TdGF0 dXM7DQogfQ0KIA0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9V c2JJbnRmQXNzb2MuYyBiL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JJbnRmQXNz b2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44NzIxODcwNWI4Ci0t LSAvZGV2L251bGwKKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkludGZB c3NvYy5jCkBAIC0wLDAgKzEsMTUzIEBACisvKiogQGZpbGUNCisNCisgIFVzYiBJbnRlcmZhY2Ug QXNzb2NpYXRpb24gUHJvdG9jb2wgaW1wbGVtZW50YXRpb24uDQorDQorQ29weXJpZ2h0IChjKSAy MDI1LCBBbWVyaWNhbiBNZWdhdHJlbmRzIEludGVybmF0aW9uYWwsIExMQy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQorU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCisNCisqKi8NCisNCisjaW5jbHVkZSAiVXNiQnVzLmgiDQorDQorLyoqDQorICBHZXQgdGhl IGludGVyZmFjZSBmcm9tIGludGVyZmFjZSBhc3NvY2lhdGlvbi4NCisNCisgIEBwYXJhbVtpbl0g IFVzYklhICAgQSBwb2ludGVyIHRvIHRoZSBpbnRlcmZhY2UgYXNzb2NpYXRpb24gZGF0YS4NCisg IEBwYXJhbVtpbl0gIEludGVyZmFjZU51bWJlciBJbnRlcmZhY2UgdG8gbG9vayBmb3IgaW5zaWRl IHRoZSBhc3NvY2lhdGlvbi4NCisNCisgIEByZXR2YWwgQSBwb2ludGVyIHRvIHRoZSBpbnRlcmZh Y2UgZGF0YQ0KKyAgQHJldHZhbCBOVUxMICBJbnRlcmZhY2UgaXMgbm90IGZvdW5kIGluIHRoZSBh c3NvY2lhdGlvbi4NCisNCisqKi8NCitVU0JfSU5URVJGQUNFX0RFU0MgKg0KK1VzYkFzc29jRmlu ZEludGVyZmFjZSAoDQorICBJTiBVU0JfQVNTT0NJQVRJT04gICpVc2JJYSwNCisgIElOIFVJTlQ4 ICAgICAgICAgICAgSW50ZXJmYWNlTnVtYmVyDQorICApDQorew0KKyAgVUlOVDggIEluZGV4Ow0K KyAgVUlOVDggIEludHJmOw0KKw0KKyAgSW50cmYgPSBVc2JJYS0+SWFEZXNjLT5EZXNjLkZpcnN0 SW50ZXJmYWNlOw0KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgVXNiSWEtPklhRGVzYy0+RGVz Yy5JbnRlcmZhY2VDb3VudDsgSW5kZXgrKykgew0KKyAgICBpZiAoSW50ZXJmYWNlTnVtYmVyID09 IEludHJmKSB7DQorICAgICAgcmV0dXJuIFVzYklhLT5JYURlc2MtPkludGVyZmFjZXNbSW5kZXhd Ow0KKyAgICB9DQorDQorICAgIEludHJmKys7DQorICB9DQorDQorICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiVXNiQXNzb2NGaW5kSW50ZXJmYWNlOiBpbnRlcmZhY2UgMHgleCBkb2VzIG5vdCBiZWxv bmcgdG8gdGhpcyBhc3NvY2lhdGlvblxuIiwgSW50ZXJmYWNlTnVtYmVyKSk7DQorICByZXR1cm4g TlVMTDsNCit9DQorDQorLyoqDQorICBHZXQgdGhlIFVTQiBJbnRlcmZhY2UgQXNzb2NpYXRpb24g RGVzY3JpcHRvciBmcm9tIHRoZSBjdXJyZW50IFVTQiBjb25maWd1cmF0aW9uLg0KKw0KKyAgQHBh cmFtW2luXSBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9VU0JfSU5URVJG QUNFX0FTU09DSUFUSU9OX1BST1RPQ09MIGluc3RhbmNlLg0KKyAgQHBhcmFtW291dF0gRGVzY3Jp cHRvciAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGNhbGxlciBhbGxvY2F0ZWQgVVNCIEludGVyZmFj ZSBBc3NvY2lhdGlvbiBEZXNjcmlwdG9yLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIGRlc2NyaXB0b3Igd2FzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuDQorICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBEZXNjcmlwdG9yIGlzIE5VTEwuDQorDQorKiovDQor RUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1VzYklhR2V0QXNzb2NpYXRpb25EZXNjcmlwdG9yICgNCisg IElOICBFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgICAqVGhpcywNCisg IE9VVCBFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDUklQVE9SICAqRGVzY3JpcHRv cg0KKyAgKQ0KK3sNCisgIFVTQl9BU1NPQ0lBVElPTiAgKlVzYklhOw0KKyAgRUZJX1RQTCAgICAg ICAgICBPbGRUcGw7DQorICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsNCisNCisgIE9sZFRwbCA9 IGdCUy0+UmFpc2VUUEwgKFVTQl9CVVNfVFBMKTsNCisNCisgIFN0YXR1cyA9IEVGSV9TVUNDRVNT Ow0KKw0KKyAgQVNTRVJUIChEZXNjcmlwdG9yICE9IE5VTEwpOw0KKyAgaWYgKERlc2NyaXB0b3Ig PT0gTlVMTCkgew0KKyAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICAgIGdv dG8gT05fRVhJVDsNCisgIH0NCisNCisgIFVzYklhID0gVVNCX0FTU09DSUFUSU9OX0ZST01fVVNC SUEgKFRoaXMpOw0KKyAgQ29weU1lbSAoRGVzY3JpcHRvciwgJihVc2JJYS0+SWFEZXNjLT5EZXNj KSwgc2l6ZW9mIChFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDUklQVE9SKSk7DQor DQorT05fRVhJVDoNCisgIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBsKTsNCisNCisgIHJldHVybiBT dGF0dXM7DQorfQ0KKw0KKy8qKg0KKyAgUmV0cmlldmUgdGhlIGRldGFpbHMgb2YgdGhlIHJlcXVl c3RlZCBpbnRlcmZhY2UgdGhhdCBiZWxvbmdzIHRvIFVTQiBhc3NvY2lhdGlvbi4NCisNCisgIEBw YXJhbVtpbl0gVGhpcyAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfVVNCX0lOVEVS RkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0gSW50ZXJm YWNlTnVtYmVyICAgSW50ZXJmYWNlIG51bWJlci4NCisgIEBwYXJhbVtvdXRdIFVzYklvICAgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBjYWxsZXIgYWxsb2NhdGVkIFVzYklvIHByb3RvY29sLg0K KyAgQHBhcmFtW291dF0gU2V0dGluZ3NDb3VudCAgICBBIHBvaW50ZXIgdG8gdGhlIGNhbGxlciBh bGxvY2F0ZWQgbnVtYmVyIG9mIHNldHRpbmdzIGZvciB0aGlzIGludGVyZmFjZS4NCisNCisgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIE91dHB1dCBwYXJhbWV0ZXJzIHdlcmUgdXBkYXRl ZCBzdWNjZXNzZnVsbHkuDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBVc2JJbyBv ciBTZXR0dW50c0NvdW50IGlzIE5VTEwuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAg ICBJbnRlcmZhY2UgZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgaW50ZXJmYWNlIGFzc29jaWF0aW9u Lg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitVc2JJYUdldEFzc29jaWF0ZVNldHRp bmdzICgNCisgIElOICBFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgKlRo aXMsDQorICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVy ZmFjZU51bWJlciwNCisgIE9VVCBFRklfVVNCX0lPX1BST1RPQ09MICAgICAgICAgICAgICAgICAg ICAgKipVc2JJbywNCisgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKlNldHRpbmdzQ291bnQNCisgICkNCit7DQorICBVU0JfQVNTT0NJQVRJT04gICAgICpVc2JJ YTsNCisgIEVGSV9UUEwgICAgICAgICAgICAgT2xkVHBsOw0KKyAgVUlOVDggICAgICAgICAgICAg ICBJbmRleDsNCisgIEVGSV9TVEFUVVMgICAgICAgICAgU3RhdHVzOw0KKyAgVVNCX0RFVklDRSAg ICAgICAgICAqRGV2aWNlOw0KKyAgVVNCX0lOVEVSRkFDRV9ERVNDICAqSWZEZXNjOw0KKw0KKyAg T2xkVHBsID0gZ0JTLT5SYWlzZVRQTCAoVVNCX0JVU19UUEwpOw0KKw0KKyAgQVNTRVJUICgoVXNi SW8gIT0gTlVMTCkgJiYgKFNldHRpbmdzQ291bnQgIT0gTlVMTCkpOw0KKyAgaWYgKChVc2JJbyA9 PSBOVUxMKSB8fCAoU2V0dGluZ3NDb3VudCA9PSBOVUxMKSkgew0KKyAgICBTdGF0dXMgPSAgRUZJ X0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgICBnb3RvICBPTl9FWElUOw0KKyAgfQ0KKw0KKyAgVXNi SWEgPSBVU0JfQVNTT0NJQVRJT05fRlJPTV9VU0JJQSAoVGhpcyk7DQorDQorICBJZkRlc2MgPSBV c2JBc3NvY0ZpbmRJbnRlcmZhY2UgKFVzYklhLCBJbnRlcmZhY2VOdW1iZXIpOw0KKyAgaWYgKElm RGVzYyA9PSBOVUxMKSB7DQorICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQorICAgIGdvdG8g T05fRVhJVDsNCisgIH0NCisNCisgICpTZXR0aW5nc0NvdW50ID0gSWZEZXNjLT5OdW1PZlNldHRp bmcgLSAxOw0KKw0KKyAgLy8NCisgIC8vIEZpbmQgVXNiSW8gcHJvdG9jb2wgZm9yIHRoaXMgaW50 ZXJmYWNlDQorICAvLw0KKyAgRGV2aWNlID0gVXNiSWEtPkRldmljZTsNCisgIFN0YXR1cyA9IEVG SV9OT1RfRk9VTkQ7DQorDQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBEZXZpY2UtPk51bU9m SW50ZXJmYWNlOyBJbmRleCsrKSB7DQorICAgIGlmIChEZXZpY2UtPkludGVyZmFjZXNbSW5kZXhd LT5JZlNldHRpbmctPkRlc2MuSW50ZXJmYWNlTnVtYmVyID09IEludGVyZmFjZU51bWJlcikgew0K KyAgICAgICpVc2JJbyA9ICZEZXZpY2UtPkludGVyZmFjZXNbSW5kZXhdLT5Vc2JJbzsNCisgICAg ICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgfQ0KKw0K K09OX0VYSVQ6DQorICBnQlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7DQorICByZXR1cm4gU3RhdHVz Ow0KK30NCisNCitFRklfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgbVVzYklh UHJvdG9jb2wgPSB7DQorICBVc2JJYUdldEFzc29jaWF0aW9uRGVzY3JpcHRvciwNCisgIFVzYklh R2V0QXNzb2NpYXRlU2V0dGluZ3MNCit9Ow0KZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL1By b3RvY29sL1VzYkFzc29jaWF0aW9uSW8uaCBiL01kZVBrZy9JbmNsdWRlL1Byb3RvY29sL1VzYkFz c29jaWF0aW9uSW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44Y2U2 NjIwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvTWRlUGtnL0luY2x1ZGUvUHJvdG9jb2wvVXNiQXNz b2NpYXRpb25Jby5oCkBAIC0wLDAgKzEsODEgQEAKKy8qKiBAZmlsZQ0KKyAgRUZJIFVzYiBJbnRl cmZhY2UgQXNzb2NpYXRpb24gcHJvdG9jb2wuDQorDQorICBUaGlzIHByb3RvY29sIGlzIHVzZWQg YnkgVVNCIGRyaXZlcnMsIHJ1bm5pbmcgaW4gdGhlIEVGSSBib290IHNlcnZpY2VzDQorICBlbnZp cm9ubWVudCB0byBhY2Nlc3MgVVNCIGRldmljZXMgdGhhdCBpbXBsZW1lbnQgdGhlaXIgY29uZmln dXJhdGlvbnMNCisgIHVzaW5nIGludGVyZmFjZSBhc3NvY2lhdGlvbjogVVNCIGNhbWVyYXMsIFVT QiBhdWRpbyBkZXZpY2VzLCBVU0IgbW9kZW1zLCBldGMuDQorDQorICBDb3B5cmlnaHQgKGMpIDIw MjUsIEFtZXJpY2FuIE1lZ2F0cmVuZHMgSW50ZXJuYXRpb25hbCBMTEMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCisNCisqKi8NCisNCisjaWZuZGVmIF9fVVNCX0FTU09DSUFUSU9OX0lPX0hfXw0KKyNkZWZp bmUgX19VU0JfQVNTT0NJQVRJT05fSU9fSF9fDQorDQorI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvVXNiLmg+DQorI2luY2x1ZGUgPFByb3RvY29sL1VzYklvLmg+DQorDQordHlwZWRlZiBVU0Jf SU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0NSSVBUT1IgIEVGSV9VU0JfSU5URVJGQUNFX0FTU09D SUFUSU9OX0RFU0NSSVBUT1I7DQorDQorLy8NCisvLyBHbG9iYWwgSUQgZm9yIHRoZSBVU0IgSUFE IFByb3RvY29sDQorLy8NCisjZGVmaW5lIEVGSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX1BS T1RPQ09MX0dVSUQgXA0KKyAgeyBcDQorICAgIDB4ZjQyNzlmYjEsIDB4ZWYxZSwgMHg0MzQ2LCB7 IDB4YWIsIDB4MzIsIDB4M2YsIDB4ZTMsIDB4ODYsIDB4ZWUsIDB4YjQsIDB4NTIgfSBcDQorICB9 DQorDQordHlwZWRlZiBzdHJ1Y3QgX0VGSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX1BST1RP Q09MIEVGSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX1BST1RPQ09MOw0KKw0KKy8qKg0KKyAg R2V0IHRoZSBVU0IgSW50ZXJmYWNlIEFzc29jaWF0aW9uIERlc2NyaXB0b3IgZnJvbSB0aGUgY3Vy cmVudCBVU0IgY29uZmlndXJhdGlvbi4NCisNCisgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAg ICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1VTQl9JQV9QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBw YXJhbVtvdXRdICBEZXNjcmlwdG9yICAgICAgIEEgcG9pbnRlciB0byB0aGUgY2FsbGVyIGFsbG9j YXRlZCBVU0IgSW50ZXJmYWNlIEFzc29jaWF0aW9uIERlc2NyaXB0b3IuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZGVzY3JpcHRvciB3YXMgcmV0cmlldmVkIHN1Y2Nl c3NmdWxseS4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIERlc2NyaXB0b3IgaXMg TlVMTC4NCisNCisqKi8NCit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKkVGSV9VU0Jf SUFfR0VUX0FTU09DSUFUSU9OX0RFU0NSSVBUT1IpKA0KKyAgSU4gIEVGSV9VU0JfSU5URVJGQUNF X0FTU09DSUFUSU9OX1BST1RPQ09MICAgICpUaGlzLA0KKyAgT1VUIEVGSV9VU0JfSU5URVJGQUNF X0FTU09DSUFUSU9OX0RFU0NSSVBUT1IgICpEZXNjcmlwdG9yDQorICApOw0KKw0KKy8qKg0KKyAg UmV0cmlldmUgdGhlIGRldGFpbHMgb2YgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2UgdGhhdCBiZWxv bmdzIHRvIFVTQiBhc3NvY2lhdGlvbi4NCisNCisgIEBwYXJhbVtpbl0gVGhpcyAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSBFRklfVVNCX0lBX1BST1RPQ09MIGluc3RhbmNlLg0KKyAgQHBh cmFtW2luXSBJbnRlcmZhY2VOdW1iZXIgICBJbnRlcmZhY2UgbnVtYmVyLg0KKyAgQHBhcmFtW291 dF0gVXNiSW8gICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGNhbGxlciBhbGxvY2F0ZWQgVXNi SW8gcHJvdG9jb2wuDQorICBAcGFyYW1bb3V0XSBTZXR0aW5nc0NvdW50ICAgIEEgcG9pbnRlciB0 byB0aGUgY2FsbGVyIGFsbG9jYXRlZCBudW1iZXIgb2Ygc2V0dGluZ3MgZm9yIHRoaXMgaW50ZXJm YWNlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgT3V0cHV0IHBhcmFtZXRl cnMgd2VyZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIFVzYklvIG9yIFNldHR1bnRzQ291bnQgaXMgTlVMTC4NCisgIEByZXR2YWwgRUZJX05P VF9GT1VORCAgICAgICAgIEludGVyZmFjZSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBpbnRlcmZh Y2UgYXNzb2NpYXRpb24uDQorDQorKiovDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJ ICpFRklfVVNCX0lBX0dFVF9BU1NPQ0lBVEVfU0VUVElOR1MpKA0KKyAgSU4gIEVGSV9VU0JfSU5U RVJGQUNFX0FTU09DSUFUSU9OX1BST1RPQ09MICAqVGhpcywNCisgIElOICBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlTnVtYmVyLA0KKyAgT1VUIEVGSV9V U0JfSU9fUFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICAqKlVzYklvLA0KKyAgT1VUIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU2V0dGluZ3NDb3VudA0KKyAgKTsN CisNCisvKioNCisgIFVTQiBpbnRlcmZhY2UgYXNzb2NpYXRpb24gcHJvdG9jb2wgZnVuY3Rpb25z Lg0KKw0KKyoqLw0KK3N0cnVjdCBfRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fUFJPVE9D T0wgew0KKyAgRUZJX1VTQl9JQV9HRVRfQVNTT0NJQVRJT05fREVTQ1JJUFRPUiAgVXNiSWFHZXRB c3NvY2lhdGlvbkRlc2NyaXB0b3I7DQorICBFRklfVVNCX0lBX0dFVF9BU1NPQ0lBVEVfU0VUVElO R1MgICAgICBVc2JJYUdldEFzc29jaWF0ZVNldHRpbmdzOw0KK307DQorDQorZXh0ZXJuIEVGSV9H VUlEICBnRWZpVXNiSW50ZXJmYWNlQXNzb2NpYXRpb25Qcm90b2NvbEd1aWQ7DQorDQorI2VuZGlm DQpkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtnLmRlYwppbmRl eCBmNGE2MGU1Y2M3Li4zZmMzMGMyM2I5IDEwMDY0NAotLS0gYS9NZGVQa2cvTWRlUGtnLmRlYwor KysgYi9NZGVQa2cvTWRlUGtnLmRlYwpAQCAtMTk5MSw2ICsxOTkxLDkgQEAKICAgIyMgSW5jbHVk ZS9Qcm90b2NvbC9TaGVsbER5bmFtaWNDb21tYW5kLmgNCiAgIGdFZmlTaGVsbER5bmFtaWNDb21t YW5kUHJvdG9jb2xHdWlkICA9IHsgMHgzYzcyMDBlOSwgMHgwMDVmLCAweDRlYTQsIHsweDg3LCAw eGRlLCAweGEzLCAweGRmLCAweGFjLCAweDhhLCAweDI3LCAweGMzIH19DQogDQorICAjIyBJbmNs dWRlL1Byb3RvY29sL1VzYkFzc29jaWF0aW9uSW8uaA0KKyAgZ0VmaVVzYkludGVyZmFjZUFzc29j aWF0aW9uUHJvdG9jb2xHdWlkID0geyAweGY0Mjc5ZmIxLCAweGVmMWUsIDB4NDM0NiwgeyAweGFi LCAweDMyLCAweDNmLCAweGUzLCAweDg2LCAweGVlLCAweGI0LCAweDUyIH19DQorDQogIw0KICMg W0Vycm9yLmdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZF0NCiAjICAgMHg4MDAwMDAwMSB8IEludmFs aWQgdmFsdWUgcHJvdmlkZWQuDQo= --yqsbPmRJVuNHAq8vkCxt--