Non-Intel CPU support patch

Mike Jagdis (mike@roan.co.uk)
Tue, 20 May 1997 09:56:04 +0100 (GMT/BST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--279709697-2034450396-864118563=:71
Content-Type: TEXT/PLAIN; charset=US-ASCII

This is the patch for Cyrix/AMD processors (again) against 2.1.39.
New in this release is a correction for swapped feature flags
on the AMD K5 model 0. If you have an AMD K5 model 0 please
check that (a) it boots (if global pages don't actually work on
the K5 model 0 it probably won't :-) ) and (b) that the flags
field in /proc/cpuinfo includes "pge" (I may have got it wrong...)

If the above works this should be pretty final. Or at least
final enough to go in the kernel proper...

Mike

-- 
.----------------------------------------------------------------------.
|  Mike Jagdis                  |  Internet:  mailto:mike@roan.co.uk   |
|  Roan Technology Ltd.         |                                      |
|  54A Peach Street, Wokingham  |  Telephone:  +44 118 989 0403        |
|  RG40 1XG, ENGLAND            |  Fax:        +44 118 989 1195        |
`----------------------------------------------------------------------'

--279709697-2034450396-864118563=:71 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="cy2139.pch" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.3.91.970520095603.71B@toaster.roan.co.uk> Content-Description: The Patch

SW5kZXg6IERvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHANCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvdXNyL0NWUy9saW51eC9Eb2N1 bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwLHYNCnJldHJpZXZpbmcgcmV2aXNp b24gMS4xLjIuMzINCmRpZmYgLXUgLXUgLXIxLjEuMi4zMiBDb25maWd1cmUu aGVscA0KLS0tIENvbmZpZ3VyZS5oZWxwCTE5OTcvMDUvMTQgMjM6Mjg6NDQJ MS4xLjIuMzINCisrKyBDb25maWd1cmUuaGVscAkxOTk3LzA1LzE5IDIzOjMw OjA5DQpAQCAtNzk1LDExICs3OTUsMTEgQEANCiAgIHdpbGwgYmUgY2FsbGVk IGJpbmZtdF9qYXZhLm8uIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gYW5z d2VyIGF0DQogICB0aGlzIHBvaW50IHRoZW4gYW5zd2VyIFkuDQogDQotUHJv Y2Vzc29yIHR5cGUNCitQcm9jZXNzb3IgZmFtaWx5DQogQ09ORklHX00zODYN CiAgIFRoaXMgaXMgdGhlIHByb2Nlc3NvciB0eXBlIG9mIHlvdXIgQ1BVLiBU aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yDQogICBvcHRpbWl6aW5nIHB1 cnBvc2VzLiBJbiBvcmRlciB0byBjb21waWxlIGEga2VybmVsIHRoYXQgY2Fu IHJ1biBvbg0KLSAgYWxsIEludGVsIENQVSB0eXBlcyAoYWxiZWl0IG5vdCBv cHRpbWFsbHkgZmFzdCksIHlvdSBjYW4gc3BlY2lmeQ0KKyAgYWxsIHg4NiBD UFUgdHlwZXMgKGFsYmVpdCBub3Qgb3B0aW1hbGx5IGZhc3QpLCB5b3UgY2Fu IHNwZWNpZnkNCiAgICIzODYiIGhlcmUuICBJZiB5b3Ugc3BlY2lmeSBvbmUg b2YgIjQ4NiIgb3IgIlBlbnRpdW0iIG9yICJQUHJvIiwNCiAgIHRoZW4gdGhl IGtlcm5lbCB3aWxsIHJ1biBvbiBhbGwgb2YgdGhlc2UgQ1BVczogNDg2IGFu ZCBQZW50aXVtDQogICAoPTU4NikgYW5kIFBlbnRpdW0gUHJvICg9Njg2KS4g SW4gcmFyZSBjYXNlcywgaXQgY2FuIG1ha2Ugc2Vuc2UgdG8NCkBAIC00ODQz LDYgKzQ4NDMsODcgQEANCiAgIGNhbGxlZCBBUDEwMDArLiBGb3IgZGV0YWls cyBvbiBvdXIgZWZmb3J0cyB0byBwb3J0IExpbnV4IHRvIHRoaXMNCiAgIG1h Y2hpbmUgc2VlIGh0dHA6Ly9jYXAuYW51LmVkdS5hdS9jYXAvcHJvamVjdHMv bGludXggb3IgbWFpbCB0bw0KICAgaGFja2Vyc0BjYWZlLmFudS5lZHUuYXUN CisNCitTdXBwb3J0IGZvciBDeXJpeCBwcm9jZXNzb3JzDQorQ09ORklHX0NZ UklYDQorICBUaGlzIGVuYWJsZXMgcmVjb2duaXRpb24gb2YgQ3lyaXggcHJv Y2Vzc29ycy4gV2l0aG91dCBpdA0KKyAgL3Byb2MvY3B1aW5mbyB3aWxsIGxp c3QgeW91ciBwcm9jZXNzb3IgYXMgYW4gdW5rbm93biBtb2RlbA0KKyAgb2Yg Q3lyaXguIFdpdGggaXQgaXQgd2lsbCBsaXN0IHRoZSBjb3JyZWN0IGRldGFp bHMuIEl0IHNob3VsZA0KKyAgYmUgc2FmZSB0byBzYXkgWSBoZXJlIHJlZ2Fy ZGxlc3Mgb2Ygd2hhdCBwcm9jZXNzb3IgeW91IGFyZQ0KKyAgYWN0dWFsbHkg dXNpbmcuIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBlbmFibGVkIG5vbmUgb2Yg dGhlDQorICBDeXJpeCBmZWF0dXJlIG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4N CisNCitFbmFibGUgc3VzcGVuZCBvbiBoYWx0IHBvd2VyIHNhdmluZyBmZWF0 dXJlDQorQ09ORklHX0NZUklYX1NVU1BfSExUDQorICBTdXNwZW5kIG9uIGhh bHQgY2F1c2VzIHRoZSBwcm9jZXNzb3IgdG8gZW50ZXIgYSBsb3cgcG93ZXIg c3RhdGUNCisgIHdoZW4gdGhlICJobHQiIGluc3RydWN0aW9uIGlzIGV4ZWN1 dGVkLiBUaGlzIGlzIGRpc2FibGVkIGF0DQorICBwb3dlciB1cCBhbmQgbWFu eSBCSU9TcyBsZWF2ZSBpdCB0aGF0IHdheS4gWW91IHByb2JhYmx5IHdhbnQg aXQNCisgIGVuYWJsZWQgc2luY2UgaXQgZHJhbWF0aWNhbGx5IHJlZHVjZXMg dGhlIG9wZXJhdGluZyB0ZW1wZXJhdHVyZQ0KKyAgb2YgdGhlIHByb2Nlc3Nv ci4gSW4gYSBmZXcgcmFyZSBjYXNlcyB0aGVyZSBtYXkgYmUgcHJvYmxlbXMN CisgIHdpdGggc29tZSBidXMgbWFzdGVyIERNQSBjYXJkcyBpZiB0aGlzIGlz IGVuYWJsZWQuDQorDQorTm8gSS9PIHJlY292ZXJ5IGRlbGF5cw0KK0NPTkZJ R19DWVJJWF9GQVNUX0lPDQorICBIaXN0b3JpY2FsbHkgcHJvZ3JhbW1lcnMg dXNlZCAiam1wICQrMiIgaW5zdHJ1Y3Rpb25zIHRvIGNyZWF0ZQ0KKyAgZGVs YXlzIGJldHdlZW4gSS9PIGluc3RydWN0aW9ucy4gVGhlIGJyYW5jaCBwcmVk aWN0aW9uIG9mIDV4ODYNCisgIGFuZCBoaWdoZXIgcHJvY2Vzc29ycyByZW5k ZXJzIHRoaXMgaW5lZmZlY3RpdmUgYW5kIHNvIGEgc2VsZWN0YWJsZQ0KKyAg ZGVsYXkgaXMgaW1wbGVtZW50ZWQgZm9yIEkvTyBpbnN0cnVjdGlvbnMgaW4g dGhlIHByb2Nlc3Nvci4gTGludXgNCisgIHVzZXMgZHVtbXkgSS9PIGluc3Ry dWN0aW9ucyB3aGVyZSBuZWNlc3NhcnkgcmF0aGVyIHRoYW4ganVtcHMNCisg IGFuZCBzbyB0aGUgZXh0cmEgcHJvY2Vzc29yIGltcG9zZWQgZGVsYXkgc2hv dWxkIG5vdCBiZSBuZWNlc3NhcnkuDQorICBFbmFibGluZyB0aGlzIG9wdGlv biByZW1vdmVzIHRoaXMgZGVsYXkuDQorDQorNXg4NiBwZXJmb3JtYW5jZSBm ZWF0dXJlcw0KK0NPTkZJR19DWVJJWF81WDg2DQorICBUaGUgQ3lyaXggNXg4 NiBoYXMgc2V2ZXJhbCBwZXJmb3JtYW5jZSBmZWF0dXJlIHdoaWNoIGFyZSBl bmFibGVkDQorICB1c2luZyBvbi1jaGlwIHJlZ2lzdGVycy4gVGhpcyBjb2Rl IGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IHRoZQ0KKyAgdXNlZnVsIGZlYXR1 cmVzIGFyZSBzZXQgdG8gc3VpdCBMaW51eC4gUmVhZCBEb2N1bWVudGF0aW9u L0N5cml4DQorICBiZWZvcmUgZW5hYmxpbmcgdGhpcy4NCisgICAgV0FSTklO RzogSWYgdGhpcyBpcyBlbmFibGVkIHlvdSBtYXkgZmluZCB0aGF0IHRoZSBv bmx5IHdheSB0bw0KKyAgcmVib290IGlzIHRvIHBvd2VyIGN5Y2xlIHRoZSBt YWNoaW5lLiBFdmVuIGEgaGFyZCByZWJvb3Qgc2VlbXMNCisgIHRvIGZhaWwg b24gc29tZSBzeXN0ZW1zLg0KKw0KKzZ4ODYgcGVyZm9ybWFuY2UgZmVhdHVy ZXMNCitDT05GSUdfQ1lSSVhfNlg4Ng0KKyAgVGhlIEN5cml4IDZ4ODYgaGFz IHNldmVyYWwgcGVyZm9ybWFuY2UgZmVhdHVyZSB3aGljaCBhcmUgZW5hYmxl ZA0KKyAgdXNpbmcgb24tY2hpcCByZWdpc3RlcnMuIE1vc3QgYXJlIG5vcm1h bGx5IGVuYWJsZWQgYnkgdGhlIEJJT1MNCisgIGhvd2V2ZXIgdGhpcyBjb2Rl IGVuc3VyZXMgdGhhdCBhbGwgdGhlIHVzZWZ1bCBvbmVzIGFyZSBzZXQgdG8N CisgIHN1aXQgTGludXguIFJlYWQgRG9jdW1lbnRhdGlvbi9DeXJpeCBiZWZv cmUgZW5hYmxpbmcgdGhpcy4NCisNCitBdm9pZCB1bm5lY2Vzc2FyeSBsb2Nr ZWQgY3ljbGVzDQorQ09ORklHX0NZUklYXzZYODZfTk9MT0NLDQorICBFbmFi bGluZyB0aGlzIG9wdGlvbiBjYXVzZXMgdGhlIDZ4ODYgbm90IHRvIHVzZSBs b2NrZWQgYnVzIGN5Y2xlcw0KKyAgZXhjZXB0IGZvciBwYWdlIHRhYmxlIGFj Y2VzcyBhbmQgaW50ZXJydXB0IGFja25vd2xlZGdlIGN5Y2xlcy4NCisgIFRo aXMgYWxsb3dzIHRoZSBkYXRhIHVzZWQgYnkgZGVzY3JpcHRvciB0YWJsZXMs IHhjaGcgaW5zdHJ1Y3Rpb25zDQorICBhbmQgaW5zdHJ1Y3Rpb25zIHByZWNl ZWRlZCBieSB0aGUgTE9DSyBwcmVmaXggdG8gYmUgY2FjaGVkIGxlYWRpbmcN CisgIHRvIGltcHJvdmVkIHBlcmZvcm1hbmNlLiBFbmFibGluZyB0aGlzIG9w dGlvbiBoYXMgbm8gZWZmZWN0IGlmDQorICBhbiBTTVAga2VybmVsIGlzIGJl aW5nIGJ1aWx0IC0gU01QIHJlcXVpcmVzIGxvY2tlZCBjeWNsZXMgdG8NCisg IGd1YXJhbnRlZSBwcm9jZXNzb3Igc3luY2hyb25pemF0aW9uLg0KKw0KK0Fs bG9jYXRlIEwxIGNhY2hlIGxpbmVzIG9uIHdyaXRlIG1pc3Nlcw0KK0NPTkZJ R19DWVJJWF82WDg2X1dUQUxMT0MNCisgIElmIHRoaXMgaXMgZW5hYmxlZCBM MSBjYWNoZSB3cml0ZSBtaXNzZXMgd2lsbCBjYXVzZSBhIGNhY2hlIGxpbmUN CisgIHRvIGJlIGFsbG9jYXRlZC4gVGhpcyBtYXkgcmVzdWx0IGluIGluY3Jl YXNlZCBwZXJmb3JtYW5jZS4gT24gdGhlDQorICBvdGhlciBoYW5kIGl0IG1h eSBjYXVzZSBleGNlc3NpdmUgdHJhc2hpbmcgb2YgdGhlIEwxIGNhY2hlIHdo ZW4NCisgIGNvcHlpbmcgb3IgemVyb2luZyBwYWdlcy4NCisNCitCcmFuY2gg VGFyZ2V0IEJ1ZmZlciBmZWF0dXJlcw0KK0NPTkZJR19DWVJJWF82WDg2X0JU Qg0KKyAgVGhlIEN5cml4IDZ4ODYgaGFzIGJyYW5jaCBwcmVkaWN0aW9uIGxv Z2ljIHdoaWNoIGlzIG5vcm1hbGx5DQorICBvbmx5IHNldCB0byBoYW5kbGUg c2hvcnQgYnJhbmNoZXMgKGFzIGluIHNtYWxsIGxvb3BzIGFuZCBpZnMpLg0K KyAgVGhpcyBjb2RlIGF0dGVtcHRzIG9uIGNvbmZpZ3VyZSB0aGUgYnJhbmNo IHByZWRpY3Rpb24gbG9naWMNCisgIGFwcHJvcmlhdGVseS4gUmVhZCBEb2N1 bWVudGF0aW9uL0N5cml4IGJlZm9yZSBlbmFibGluZyB0aGlzLg0KKw0KK1Zh cmlhYmxlIHNpemVkIHBhZ2luZyBtZWNoYW5pc20gKFZTUE0pDQorQ09ORklH X0NZUklYXzZYODZfVlNQTQ0KKyAgVmFyaWFibGUgc2l6ZWQgcGFnaW5nIG1l Y2hhbmlzbSAoVlNQTSkgaXMgYSBmZWF0dXJlIG9mIHRoZSBDeXJpeA0KKyAg Nng4NiBmYW1pbHkgb2YgcHJvY2Vzc29ycyB0aGF0IGFsbG93cyBsYXJnZSBy ZWdpb25zIG9mIG1lbW9yeQ0KKyAgdG8gYmUgbWFwcGVkIGluIG9uZSBnbywg c2lnbmlmaWNhbnRseSByZWR1Y2luZyB0aGUgYW1vdW50IG9mIHdvcmsNCisg IHRoZSBNTVUgaGFzIHRvIGRvIGNvbXBhcmVkIHdpdGggdHJhZGl0aW9uYWwg cGFnaW5nLiBIb3dldmVyIFZTUE0NCisgIGlzIGtub3duIHRvIGJlIGJ1Z2d5 IGluIG1hbnkgNng4NiBjaGlwIHJldmlzaW9ucy4gUGxlYXNlIHJlYWQNCisg IERvY3VtZW50YXRpb24vQ3lyaXggYmVmb3JlIGVuYWJsaW5nIHRoaXMuDQor ICAgIFdBUk5JTkc6IElmIHRoaXMgaXMgZW5hYmxlZCB5b3UgbWF5IGZpbmQg dGhhdCB0aGUgb25seSB3YXkgdG8NCisgIHJlYm9vdCBpcyB0byBwb3dlciBj eWNsZSB0aGUgbWFjaGluZS4gRXZlbiBhIGhhcmQgcmVib290IHNlZW1zDQor ICB0byBmYWlsIG9uIHNvbWUgc3lzdGVtcy4NCiANCiBTcGFyYyBFU1AgU0NT SSBzdXBwb3J0DQogQ09ORklHX1NDU0lfU1VORVNQDQpJbmRleDogRG9jdW1l bnRhdGlvbi9DeXJpeA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IEN5cml4DQpkaWZmIC1OIEN5cml4DQotLS0gL2Rldi9udWxsCVNhdCBE ZWMgMjEgMTc6NTY6MDYgMTk5Ng0KKysrIEN5cml4CVR1ZSBNYXkgMjAgMDA6 MzA6MDkgMTk5Nw0KQEAgLTAsMCArMSwxNDggQEANCisgICAgICAgICAgICAg ICAgICAgICAgICBDeXJpeCBQcm9jZXNzb3IgU3VwcG9ydA0KKyAgICAgICAg ICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQor UHJvY2Vzc29yIFJlY29nbml0aW9uDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorDQorQ3lyaXggcHJvY2Vzc29ycyBwcmlvciB0byB0aGUgTTIgcG93ZXIg dXAgaW4gYSBkZWZhdWx0IG1vZGUgd2hpY2gNCitpcyBkZXNpZ25lZCB0byBh dm9pZCBjb21wYXRpYmlsaXR5IHByb2JsZW1zIHdpdGggc29mdHdhcmUgdGhh dA0KK21ha2VzIGFzc3VtcHRpb25zIGFib3V0IHByb2Nlc3NvciBjYXBhYmls aXRpZXMgYmFzZWQgc29sZWx5IG9uDQordGhlIGFwcGFyZW50IGZhbWlseSBv ZiBwcm9jZXNzb3IuIFVubGVzcyBzcGVjaWFsIGhhbmRsaW5nIGlzDQorcHJv dmlkZWQgQ3lyaXggY2hpcHMgd2lsbCBiZSBpZGVudGlmaWVkIGFzIHNvbWUg dW5rbm93biBtb2RlbA0KK29mIDQ4Ni4NCisNCisgIFRoZSBDeXJpeCBwcm9j ZXNzb3IgcmVjb2duaXRpb24ga2VybmVsIGJ1aWxkIG9wdGlvbiBjb21waWxl cw0KK2luIGNvZGUgdGhhdCBlbmFibGVzIHRoZSBDUFVJRCBpbnN0cnVjdGlv biBvbiBDeXJpeCBwcm9jZXNzb3JzDQorYW5kIHRoYXQgdXNlcyB0aGUgQ3ly aXggc3BlY2lmaWMgREVWSUQgZmVhdHVyZSB0byBpZGVudGlmeSB0aGUNCitw YXJ0aWN1bGFyIHR5cGUgb2YgQ3lyaXggY2hpcCBwcmVzZW50Lg0KKw0KKyAg VGhlIE0yIGFuZCBsYXRlciBwcm9jZXNzb3JzIGhhdmUgQ1BVSUQgZW5hYmxl ZCBieSBkZWZhdWx0DQoraG93ZXZlciBzcGVjaWFsIGhhbmRsaW5nIGlzIHN0 aWxsIHJlcXVpcmVkIHRvIHJlYWQgdGhlIHNwZWNpZmljDQorcHJvY2Vzc29y IHR5cGUgdXNpbmcgREVWSUQgc2luY2UgdGhlIENQVUlEIGluZm9ybWF0aW9u IGdpdmVzDQorZmFtaWx5IDYsIG1vZGVsIDAgLSBpLmUuIGFuIEEgc3RlcCBQ UHJvLg0KKw0KKyAgVGhlIGNvbWJpbmF0aW9uIG9mIENQVUlEIGFuZCBERVZJ RCBhbGxvd3MgYWxsIGN1cnJlbnQgQ3lyaXgNCitwcm9jZXNzb3JzIHRvIGJl IHJlY29nbmlzZWQgYW5kIGxpc3RlZCBjb3JyZWN0bHkgaW4gL3Byb2MvY3B1 aW5mby4NCitUaGlzIGluY2x1ZGVzIEN4NDg2LCA1eDg2LCA2eDg2LCBHeDg2 IChha2EgTWVkaWFHeCkgYW5kIE0yLg0KKw0KKyAgUHJvY2Vzc29yIHJlY29n bml0aW9uIGlzIHJlcXVpcmVkIGZvciBhbGwgb3RoZXIgQ3lyaXggc3BlY2lm aWMNCitvcHRpb25zLg0KKw0KKw0KK1N1c3BlbmQgb24gSGFsdCBQb3dlciBT YXZpbmcNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorVGhl IHN1c3BlbmQgb24gaGFsdCBwb3dlciBzYXZpbmcgZmVhdHVyZSBhbGxvd3Mg dGhlIHByb2Nlc3NvciB0bw0KK2VudGVyIGEgbG93IHBvd2VyIG1vZGUgd2hl biB0aGUgImhsdCIgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQuIFRoaXMNCity ZXN1bHRzIGluIGRyYW1hdGljYWxseSByZWR1Y2VkIG9wZXJhdGluZyB0ZW1w ZXJhdHVyZXMgaWYgeW91IGRvDQorbm90IHNwZW5kIGxvbmcgcGVyaW9kcyBv ZiB0aW1lIHJ1bm5pbmcgcHJvY2Vzc29yIGludGVuc2l2ZSB0YXNrcy4NCitD eXJpeCBwcm9jZXNzb3JzIGFsbG93IHRoaXMgZmVhdHVyZSB0byBiZSBlbmFi bGVkIGFuIGRpc2FibGVkDQordGhyb3VnaCB0aGVpciBjb25maWd1cmF0aW9u IHJlZ2lzdGVycy4gVGhlIGRlZmF1bHQgc3RhdGUgb24gcmVzZXQNCitpcyBk aXNhYmxlZCBhbmQgbWFueSAobW9zdD8pIEJJT1NzIGxlYXZlIGl0IGRpc2Fi bGVkIGhlbmNlIGENCitrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMg cHJvdmlkZWQgdGhhdCBhZGRzIGNvZGUgdG8gZXhwbGljaXRseQ0KK2VuYWJs ZWQgc3VzcGVuZCBvbiBoYWx0IHdoZW4gTGludXggYm9vdHMuDQorDQorICBI b3dldmVyIHRoZXJlIGFwcGVhciB0byBiZSBhIGZldyByYXJlIGNhc2VzIGlu IHdoaWNoIHRoZQ0KK2NvbWJpbmF0aW9uIG9mIHN1c3BlbmQgb24gaGFsdCBh bmQgc29tZSBidXMgbWFzdGVyIERNQSBjYXJkcyBjYW4NCitjYXVzZSB0aGUg c3lzdGVtIHRvIGxvY2sgdXAuIElmIHRoaXMgYXBwZWFycyB0byBoYXBwZW4g eW91IG1heQ0KK25lZWQgdG8gbGVhdmUgc3VzcGVuZCBvbiBoYWx0IGluIGl0 cyBkZWZhdWx0IHN0YXRlLiAoTm90ZSB0aGF0DQorYW4gb3B0aW9uIHRvIF9k aXNhYmxlXyBzdXNwZW5kIG9uIGhhbHQgaXMgbm90IHByb3ZpZGVkLiBJZiB5 b3VyDQorQklPUyBlbmFibGVzIGl0IHlvdSBoYXZlIHRvIGxpdmUgd2l0aCBp dCkNCisNCisNCis1eDg2IFBlcmZvcm1hbmNlIEZlYXR1cmVzDQorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1RoZSA1eDg2IGNvbnRhaW5zIGEg cGVyZm9ybWFuY2UgY29udHJvbCByZWdpc3RlciB0aGF0IGFsbG93cw0KK3Nl dmVyYWwgcGVyZm9ybWFuY2UgZW5oYW5jaW5nIGZlYXR1cmVzIHRvIGJlIHR1 cm5lZCBvbi4gVW5mb3J0dW5hdGVseQ0KK21hbnkgb2YgdGhlc2UgZmVhdHVy ZXMgZG8gbm90IGFwcGVhciB0byB3b3JrIGNvcnJlY3RseS4gVGhlIDV4ODYN CitwZXJmb3JtYW5jZSBmZWF0dXJlcyBrZXJuZWwgYnVpbGQgb3B0aW9uIHdp bGwgYXR0ZW1wdCB0byBzZXQNCit0aGUgcGVyZm9ybWFuY2UgY29udHJvbCBy ZWdpc3RlciBhcHByb3ByaWF0ZWx5IGJ1dCBpdCBpcw0KK2ltcG9zc2libGUg dG8gZ3VhcmFudGVlIHRoYXQgZXZlbiB0aGVzZSBjb25zZXJ2YXRpdmUgc2V0 dGluZ3MNCit3aWxsIHdvcmsgb24gYWxsIGNoaXBzLg0KKw0KKyAgV0FSTklO RzogSWYgdGhpcyBpcyBlbmFibGVkIHlvdSBtYXkgZmluZCB0aGF0IHRoZSBv bmx5IHdheSB0bw0KK3JlYm9vdCBpcyB0byBwb3dlciBjeWNsZSB0aGUgbWFj aGluZS4gRXZlbiBhIGhhcmQgcmVib290IHNlZW1zDQordG8gZmFpbCBvbiBz b21lIHN5c3RlbXMuDQorDQorDQorNng4NiBQZXJmb3JtYW5jZSBGZWF0dXJl cw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitMaWtlIHRoZSA1 eDg2IHRoZSA2eDg2IGhhcyBzZXZlcmFsIEN5cml4IHNwZWNpZmljIHBlcmZv cm1hbmNlDQorZmVhdHVyZXMuIE5vcm1hbGx5IGEgNng4NiBhd2FyZSBCSU9T IHdpbGwgc2V0IHRoZXNlIHRvIHJlYXNvbmFibGUsDQoraWYgbm90IGZ1bGx5 IG9wdGltYWwsIHNldHRpbmdzLiBUaGUgNng4NiBwZXJmb3JtYW5jZSBmZWF0 dXJlcw0KK2tlcm5lbCBidWlsZCBvcHRpb24gbW9zdGx5IGp1c3QgZmluZSB0 dW5lcyB0aGVtLg0KKw0KKw0KKzZ4ODYgQnJhbmNoIFByZWRpY3Rpb24NCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorVGhlIDZ4ODYgdXNlcyBzcGVj dWxhdGl2ZSBleGVjdXRpb24gY291cGxlZCB3aXRoIHNldmVyYWwgbGV2ZWxz DQorb2YgYnJhbmNoIHByZWRpY3Rpb24gdG8gbWF4aW1pc2UgcHJvY2Vzc2lu ZyBzcGVlZC4gV2hpbGUgdGhlDQorZGVmYXVsdCBwb3dlciB1cCBzdGF0ZSBp cyByZWFzb25hYmxlIHRoZSBicmFuY2ggcHJlZGljdGlvbiBsb2dpYw0KK2lz IGNvbmZpZ3VyYWJsZSBhbmQgdGhlcmUgbWF5IGJlIHNvbWUgYmVuZWZpdCBp biBmaW5lIHR1bmluZyBpdC4NCisNCisgIFVuZm9ydHVuYXRlbHkgQ3lyaXgg b2ZmZXIgbm8gZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gY29uZmlndXJlDQor YnJhbmNoIHByZWRpY3Rpb24gYW5kIElCTSBoYXZlIG9ubHkgcGFydGlhbCBk b2N1bWVudGF0aW9uIGF2YWlsYWJsZS4NCitGdXJ0aGVyIGRldGFpbCBhbmQg c3BlY3VsYXRpb24gaXMgYXZhaWxhYmxlIGZyb20gdGhlIDZ4ODZvcHQgcGFj a2FnZQ0KK2J5IE1pa2FlbCBKb2hhbnNzb24gPE1pa2FlbC5Kb2hhbnNzb25A aGVsc2lua2kuZmk+Lg0KKw0KKyAgVGhlIGluaXRpYWwgcG93ZXIgdXAgc3Rh dGUgb2YgdGhlIDZ4ODYgY29uZmlndXJlcyB0aGUgYnJhbmNoDQorcHJlZGlj dGlvbiBsb2dpYyB0byBoYW5kbGUgc2hvcnQgYnJhbmNoZXMuIFRoZSA2eDg2 IGJyYW5jaCB0YXJnZXQNCitidWZmZXIgZmVhdHVyZXMga2VybmVsIGJ1aWxk IG9wdGlvbiBlbmFibGVzIGNvZGUgdGhhdCBlbmFibGVzDQoraGFuZGxpbmcg b2YgbG9uZyBicmFuY2hlcyBhcyB3ZWxsLiBJdCBpcyBub3QgY2xlYXIgaWYg dGhpcyB3aWxsDQorYmVuZWZpdCBpbiB5b3VyIHBhcnRpY3VsYXIgY2FzZSBv ciBub3QuDQorDQorDQorNng4NiBWYXJpYWJsZSBTaXplZCBQYWdpbmcgTWVj aGFuaXNtDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorDQorVGhlIHZhcmlhYmxlIHNpemVkIHBhZ2luZyBtZWNoYW5pc20gKFZT UE0pIGlzIGEgZmVhdHVyZSBvZiB0aGUgQ3lyaXgNCis2eDg2IGZhbWlseSBv ZiBwcm9jZXNzb3JzIHRoYXQgYWxsb3dzIGxhcmdlIHJlZ2lvbnMgb2YgbWVt b3J5DQordG8gYmUgbWFwcGVkIHVzaW5nIGEgc2luZ2xlIE1NVSBlbnRyeSBy YXRoZXIgdGhhbiBtYW55IGluZGl2aWR1YWwNCitwYWdlIHNpemVkIGVudHJp ZXMuIFRoaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VzIHRoZSBvdmVyaGVhZCBp bg0KK2FjY2Vzc2luZyBzdWNoIHJlZ2lvbnMuIEl0IGlzIGFsc28gaWRlYWxs eSBzdWl0ZWQgdG8gdXNlIGZvciB0aGUNCitsaW5lYXIgbWFwcGluZyBvZiBw aHlzaWNhbCBtZW1vcnkgdG8ga2VybmVsIG1lbW9yeSB1c2VkIGJ5IExpbnV4 Lg0KKw0KKyAgVGhlIEN5cml4IGRvY3VtZW5hdGlvbiBvZmZlcnMgb25seSBh IGJyaWVmIHBhcmFncmFwaCBvZiBleHBsYW5hdGlvbi4NCitVbmZvcnR1bmF0 ZWx5IHRoZSBvYnNlcnZlZCBiZWhhdmlvdXIgb2YgVlNQTSBzdWdnZXN0cyB0 aGF0IGV2ZW4NCit0aGlzIGxpdHRsZSBpbmZvcm1hdGlvbiBpcyBub3QgZW50 aXJlbHkgY29ycmVjdC4gV29yc2Ugc3RpbGwsIG5vIG9uZQ0KK2F0IEN5cml4 IGlzIGFibGUgdG8gYW5zd2VyIHF1ZXN0aW9ucyBjb25jZXJuaW5nIFZTUE0u IEdpdmVuIHRoYXQNCitldmVyeSByZXZpc2lvbiBvZiA2eDg2IGhhcyAqZGlm ZmVyZW50KiBWU1BNIGJ1Z3MgdGhpcyBpcyBub3QgZW50aXJlbHkNCitzdXJw cmlzaW5nISBXb3JrIGFyb3VuZHMgYXJlIGluIHBsYWNlIGZvciB0aGUga25v d24gYnVncyBpbiBzdGVwIDEsDQorcmV2aXNpb25zIDQsIDUgYW5kIDYgY2hp cHMuIFJldmlzaW9uIDcgaXMgYWxzbyBiZWxpZXZlZCB0byB3b3JrLg0KKw0K KyAgV0FSTklORzogVGhlcmUgYXBwZWFycyB0byBiZSBubyB3YXkgdG8gZGlz YWJsZSBhIFZTUE0gZW50cnkgb25jZQ0KK2l0IGhhcyBiZWVuIGNyZWF0ZWQg c2hvcnQgb2YgYSBoYXJkIHJlc2V0ICh3aGljaCBtYXkgbWVhbiBhIHBvd2Vy DQorY3ljbGUpLiBGYWlsdXJlIHRvIGNsZWFyIHRoZSBWU1BNIGVudHJpZXMg bWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0DQordXNlIHZpcnR1YWwgbWVtb3J5 IGxheW91dHMgZGlmZmVyZW50IGZyb20gTGludXggd2lsbCBjcmFzaCB1bmV4 cGVjdGVkbHkNCithZnRlciBMaW51eCBoYXMgYmVlbiBydW5uaW5nLiBUaGlz IGluY2x1ZGVzIFdpbmRvd3MgTlQvOTUsIHByb2dyYW1zDQordGhhdCB1c2Ug RE9TIGV4dGVuZGVycyBldGMuDQorDQorICBCeSBleHBlcmltZW50Og0KKw0K KyAgKiBWU1BNIHBhZ2VzIG11c3QgYmUgcG93ZXIgb2YgdHdvIHNpemVzLiBB IHNpbmdsZSAyNE1CIHBhZ2UgZmFpbHMuDQorICAgIFRoaXMgaXMgbm90IGVu dGlyZWx5IHN1cnByaXNpbmcgYnV0IHRoZSBkb2N1bWVudGF0aW9uIGNvdWxk IGdpdmUNCisgICAgdGhlIGltcHJlc3Npb24gdGhhdCBWU1BNIHN1cHBvcnRz IGFyYml0cmFyeSBzaXplcy4NCisNCisgICogRG9jdW1lbnRhdGlvbiBzdWdn ZXN0cyB0aGVyZSBhcmUgOCBWU1BNIHNsb3RzICgzIGJpdCBpbmRleCkgYnV0 DQorICAgIHRlc3RzIHNob3cgdGhlIHVwcGVyIGZvdXIgc2xvdHMgbWlycm9y IHRoZSBsb3dlciBmb3VyLg0KKw0KKyAgKiBXaXRoIGEgMTZNQiBwYWdlIGZv bGxvd2VkIGJ5IGFuIDhNQiBwYWdlIEkgYWx3YXlzIGdldCBhIHdyaXRlDQor ICAgIGZhdWx0IG9uIHRoZSBsYXN0IDRrIG9mIHRoZSA4TUIgcGFnZS4gV2l0 aCA4TUIgcGx1cyA0TUIgSSBjYW4ndA0KKyAgICBldmVuIGJvb3QuDQorICAg ICAgSWYgd2UgaGF2ZSBzdWNoIGEgbWVtb3J5IHNpemUgd2UgbWFwIHRoZSBm aXJzdCBwb3dlciBvZiB0d28NCisgICAgd2l0aCBhIFZTUE0gZW50cnkgYW5k IHVzZSB0cmFkaXRpb25hbCBwYWdpbmcgZm9yIHRoZSByZXN0Lg0KKw0KKyAg KiBWU1BNIGVudHJpZXMgYXBwZWFyIHRvIG92ZXJyaWRlIHRyYWRpdGlvbmFs IHBhZ2UgdGFibGUgZW50cmllcw0KKyAgICBzbyB3ZSBtdXN0IG5vdCBvdmVy bGFwIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyByZWdpb24uDQorDQorICAq IERvIG5vdCB0cnkgYW5kIGNyZWF0ZSBhIG1hcHBpbmcgd2l0aCBkaXJ0eSBh bmQgYWNjZXNzZWQgZmxhZ3MNCisgICAgY2xlYXIgLSBhIHN0ZXAgMSByZXYg NSBjaGlwIHdpbGwgY3Jhc2guDQorDQorICAqIFRoZSB2YWxpZCBiaXQgaW4g YSBWU1BNIGVudHJ5IGlzIG5vbi1mdW5jdGlvbmFsLiBUaGVyZSBpcyBubyB3 YXkNCisgICAgdG8gaW52YWxpZGF0ZSBhIFZTUE0gZW50cnkgb25jZSBpdCBo YXMgYmVlbiB3cml0dGVuLg0KKw0KKyAgKiBBdHRlbXB0aW5nIHRvIHJlcGxh Y2UgYSBWU1BNIGVudHJ5IHdpdGggb25lIHRoYXQgbWFwcyBhIHplcm8NCisg ICAgc2l6ZWQgcmVnaW9uIGZyb20gMCB0byAwIGNyYXNoZXMgdGhlIENQVS4N CkluZGV4OiBhcmNoL2kzODYvY29uZmlnLmluDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpSQ1MgZmlsZTogL3Vzci9DVlMvbGludXgvYXJjaC9pMzg2L2Nv bmZpZy5pbix2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjYNCmRpZmYg LXUgLXUgLXIxLjEuMi42IGNvbmZpZy5pbg0KLS0tIGNvbmZpZy5pbgkxOTk3 LzA0LzExIDIyOjEwOjE4CTEuMS4yLjYNCisrKyBjb25maWcuaW4JMTk5Ny8w NS8xOSAyMzozMDowOQ0KQEAgLTksNiArOSwzNCBAQA0KIGJvb2wgJ1Byb21w dCBmb3IgZGV2ZWxvcG1lbnQgYW5kL29yIGluY29tcGxldGUgY29kZS9kcml2 ZXJzJyBDT05GSUdfRVhQRVJJTUVOVEFMDQogZW5kbWVudQ0KIA0KK2Nob2lj ZSAnUHJvY2Vzc29yIGZhbWlseScgXA0KKwkiMzg2CQlDT05GSUdfTTM4Nglc DQorCSA0ODYJCUNPTkZJR19NNDg2CVwNCisJIFBlbnRpdW0JQ09ORklHX001 ODYJXA0KKwkgUFBybwkJQ09ORklHX002ODYiIFBlbnRpdW0NCisNCittYWlu bWVudV9vcHRpb24gbmV4dF9jb21tZW50DQorY29tbWVudCAnUHJvY2Vzc29y IGZlYXR1cmVzJw0KKw0KK2NvbW1lbnQgJ1NvbWUgb3IgYWxsIG9mIHRoZSBm b2xsb3dpbmcgbWF5IGNhdXNlIHByb2JsZW1zJw0KK2NvbW1lbnQgJ3dpdGgg c29tZSBkcml2ZXJzIG9yIGhhcmR3YXJlLiBQbGVhc2UgcmVhZCB0aGUnDQor Y29tbWVudCAnaGVscCB0ZXh0IGFuZCBEb2N1bWVudGF0aW9uL0N5cml4IGJl Zm9yZSBlbmFibGluZycNCitjb21tZW50ICdhbnkgb2YgdGhlc2Ugb3B0aW9u cy4nDQorYm9vbCAnQ3lyaXggcHJvY2Vzc29yIHJlY29nbml0aW9uJyBDT05G SUdfQ1lSSVgNCitpZiBbICIkQ09ORklHX0NZUklYIiA9ICJ5IiBdOyB0aGVu DQorICBib29sICdFbmFibGUgc3VzcGVuZCBvbiBoYWx0IHBvd2VyIHNhdmlu ZycgQ09ORklHX0NZUklYX1NVU1BfSExUDQorICBib29sICdObyBJL08gcmVj b3ZlcnkgZGVsYXlzJyBDT05GSUdfQ1lSSVhfRkFTVF9JTw0KKyAgYm9vbCAn NXg4NiBwZXJmb3JtYW5jZSBmZWF0dXJlcycgQ09ORklHX0NZUklYXzVYODYN CisgIGJvb2wgJzZ4ODYgcGVyZm9ybWFuY2UgZmVhdHVyZXMnIENPTkZJR19D WVJJWF82WDg2DQorICBpZiBbICIkQ09ORklHX0NZUklYXzZYODYiID0gInki IF07IHRoZW4NCisgICAgYm9vbCAnICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBs b2NrZWQgY3ljbGVzJyBDT05GSUdfQ1lSSVhfNlg4Nl9OT0xPQ0sNCisgICAg Ym9vbCAnICAgICBBbGxvY2F0ZSBMMSBjYWNoZSBsaW5lcyBvbiB3cml0ZSBt aXNzZXMnIENPTkZJR19DWVJJWF82WDg2X1dUQUxMT0MNCisgICAgYm9vbCAn ICAgICBCcmFuY2ggVGFyZ2V0IEJ1ZmZlciBmZWF0dXJlcycgQ09ORklHX0NZ UklYXzZYODZfQlRCDQorICAgIGJvb2wgJyAgICAgVmFyaWFibGUgc2l6ZWQg cGFnaW5nIG1lY2hhbmlzbSAoVlNQTSknIENPTkZJR19DWVJJWF82WDg2X1ZT UE0NCisgIGZpDQorZmkNCitlbmRtZW51DQorDQogbWFpbm1lbnVfb3B0aW9u IG5leHRfY29tbWVudA0KIGNvbW1lbnQgJ0xvYWRhYmxlIG1vZHVsZSBzdXBw b3J0Jw0KIGJvb2wgJ0VuYWJsZSBsb2FkYWJsZSBtb2R1bGUgc3VwcG9ydCcg Q09ORklHX01PRFVMRVMNCkBAIC0zOCwxMSArNjYsNiBAQA0KICAgdHJpc3Rh dGUgJ0tlcm5lbCBzdXBwb3J0IGZvciBKQVZBIGJpbmFyaWVzJyBDT05GSUdf QklORk1UX0pBVkENCiBmaQ0KIA0KLWNob2ljZSAnUHJvY2Vzc29yIHR5cGUn IFwNCi0JIjM4NgkJQ09ORklHX00zODYJXA0KLQkgNDg2CQlDT05GSUdfTTQ4 NglcDQotCSBQZW50aXVtCUNPTkZJR19NNTg2CVwNCi0JIFBQcm8JCUNPTkZJ R19NNjg2IiBQZW50aXVtDQogYm9vbCAnVmlkZW8gbW9kZSBzZWxlY3Rpb24g c3VwcG9ydCcgQ09ORklHX1ZJREVPX1NFTEVDVA0KIA0KIHRyaXN0YXRlICdQ YXJhbGxlbCBwb3J0IHN1cHBvcnQnIENPTkZJR19QTlBfUEFSUE9SVA0KSW5k ZXg6IGFyY2gvaTM4Ni9kZWZjb25maWcNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NClJDUyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kzODYvZGVmY29u ZmlnLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMjANCmRpZmYgLXUg LXUgLXIxLjEuMi4yMCBkZWZjb25maWcNCi0tLSBkZWZjb25maWcJMTk5Ny8w NS8xNCAyMzoyOTowMQkxLjEuMi4yMA0KKysrIGRlZmNvbmZpZwkxOTk3LzA1 LzE5IDIzOjMwOjA5DQpAQCAtOCw2ICs4LDIzIEBADQogIyBDT05GSUdfRVhQ RVJJTUVOVEFMIGlzIG5vdCBzZXQNCiANCiAjDQorIyBQcm9jZXNzb3Igb3B0 aW9ucw0KKyMNCisjIENPTkZJR19NMzg2IGlzIG5vdCBzZXQNCisjIENPTkZJ R19NNDg2IGlzIG5vdCBzZXQNCisjIENPTkZJR19NNTg2IGlzIG5vdCBzZXQN CitDT05GSUdfTTY4Nj15DQorQ09ORklHX0NZUklYPXkNCitDT05GSUdfQ1lS SVhfU1VTUF9ITFQ9eQ0KKyMgQ09ORklHX0NZUklYX0ZBU1RfSU8gaXMgbm90 IHNldA0KKyMgQ09ORklHX0NZUklYXzVYODYgaXMgbm90IHNldA0KKyMgQ09O RklHX0NZUklYXzZYODYgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZUklYXzZY ODZfTk9MT0NLIGlzIG5vdCBzZXQNCisjIENPTkZJR19DWVJJWF82WDg2X1dU QUxMT0MgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZUklYXzZYODZfQlRCIGlz IG5vdCBzZXQNCisjIENPTkZJR19DWVJJWF82WDg2X1ZTUE0gaXMgbm90IHNl dA0KKw0KKyMNCiAjIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0DQogIw0KIENP TkZJR19NT0RVTEVTPXkNCkBAIC0yNSwxMCArNDIsNiBAQA0KIENPTkZJR19T WVNDVEw9eQ0KIENPTkZJR19CSU5GTVRfQU9VVD15DQogQ09ORklHX0JJTkZN VF9FTEY9eQ0KLSMgQ09ORklHX00zODYgaXMgbm90IHNldA0KLSMgQ09ORklH X000ODYgaXMgbm90IHNldA0KLSMgQ09ORklHX001ODYgaXMgbm90IHNldA0K LUNPTkZJR19NNjg2PXkNCiAjIENPTkZJR19WSURFT19TRUxFQ1QgaXMgbm90 IHNldA0KICMgQ09ORklHX1BOUF9QQVJQT1JUIGlzIG5vdCBzZXQNCiANCklu ZGV4OiBhcmNoL2kzODYva2VybmVsL2hlYWQuUw0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC91c3IvQ1ZTL2xpbnV4L2FyY2gvaTM4Ni9r ZXJuZWwvaGVhZC5TLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuNQ0K ZGlmZiAtdSAtdSAtcjEuMS4yLjUgaGVhZC5TDQotLS0gaGVhZC5TCTE5OTcv MDUvMTQgMjM6Mjk6MDMJMS4xLjIuNQ0KKysrIGhlYWQuUwkxOTk3LzA1LzE5 IDIzOjMwOjEwDQpAQCAtMTM1LDEzICsxMzUsODAgQEANCiBjaGVja0NQVXR5 cGU6DQogI2VuZGlmDQogDQorCW1vdmwgJC0xLFNZTUJPTF9OQU1FKGhhdmVf Y3B1aWQpCSMgIC0xIGZvciBubyBDUFVJRCBpbml0aWFsbHkNCisNCiAvKiBj aGVjayBpZiBpdCBpcyA0ODYgb3IgMzg2LiAqLw0KIC8qDQogICogWFhYIC0g dGhpcyBkb2VzIGEgbG90IG9mIHVubmVjZXNzYXJ5IHNldHVwLiAgQWxpZ25t ZW50IGNoZWNrcyBkb24ndA0KICAqIGFwcGx5IGF0IG91ciBjcGwgb2YgMCBh bmQgdGhlIHN0YWNrIG91Z2h0IHRvIGJlIGFsaWduZWQgYWxyZWFkeSwgYW5k DQogICogd2UgZG9uJ3QgbmVlZCB0byBwcmVzZXJ2ZSBlZmxhZ3MuDQogICov DQotCW1vdmwgJDMsIFNZTUJPTF9OQU1FKHg4NikNCisJLyoNCisJICogQSBD eXJpeCBwcmVzZXJ2ZXMgZmxhZ3MgaW4gY2FzZXMgd2hlcmUgb3RoZXIgQ1BV cyBjaGFuZ2UNCisJICogdGhlbSBpbiB1bmRlZmluZWQgd2F5cy4gV2UgbmVl ZCB0byBrbm93IHRoaXMgc2luY2Ugd2UgbWF5DQorCSAqIG5lZWQgdG8gZW5h YmxlIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiBhdCBsZWFzdC4gKEN5cml4IGNo aXBzDQorCSAqIHByaW9yIHRvIE0yIGhhdmUgQ1BVSUQgZGlzYWJsZWQgYnkg ZGVmYXVsdCwgdGhlIEN4NDg2cw0KKwkgKiBkaWRuJ3QgaGF2ZSBpdCBhdCBh bGwuKQ0KKwkgKi8NCisJeG9yICVheCwlYXgNCisJc2FoZg0KKwltb3ZiICQ1 LCVheA0KKwltb3ZiICQyLCVieA0KKwlkaXYgJWJsDQorCWxhaGYNCisJY21w YiAkMiwlYWgNCisJam5lIG5jeXJpeA0KKw0KKwkvKg0KKwkgKiBJdCBiZWhh dmVzIGxpa2UgYSBDeXJpeCBzbyBwdXQgIkN5cml4IiBpbiB0aGUgdmVuZG9y IGlkDQorCSAqIGZpZWxkLiBJdCBtYXkgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIg d2l0aCB0aGUgcmVhbCB0aGluZw0KKwkgKiBpZiBDUFVJRCB3b3Jrcy4NCisJ ICovDQorCW1vdmwgJDB4Njk3Mjc5NDMsU1lNQk9MX05BTUUoeDg2X3ZlbmRv cl9pZCkJIyBsb3cgNCBjaGFycw0KKwltb3ZsICQweDAwMDAwMDc4LFNZTUJP TF9OQU1FKHg4Nl92ZW5kb3JfaWQpKzQJIyBuZXh0IDQgY2hhcnMNCisNCisj aWZkZWYgQ09ORklHX0NZUklYDQorCS8qDQorCSAqIE4uQi4gVGhlIHBhdHRl cm4gb2YgYWNjZXNzZXMgdG8gMHgyMiBhbmQgMHgyMyBpcyAqaW1wb3J0YW50 Kg0KKwkgKiAgICAgIHNvIGRvIG5vdCB0cnkgYW5kICJvcHRpbWlzZSIgaXQh IEZvciB0aGUgc2FtZSByZWFzb24gd2UNCisJICoJZG8gYWxsIHRoaXMgd2l0 aCBpbnRlcnJ1cHRzIG9mZiBqdXN0IHRvIGJlIHN1cmUuDQorCSAqLw0KKyNk ZWZpbmUgc2V0Q3g4NihyZWcsIHZhbCkgXA0KKwltb3ZiIHJlZywlYXg7CVwN CisJb3V0YiAlYXgsJDB4MjI7CVwNCisJbW92YiB2YWwsJWF4OwlcDQorCW91 dGIgJWF4LCQweDIzDQorDQorI2RlZmluZSBnZXRDeDg2KHJlZykgXA0KKwlt b3ZiIHJlZywlYXg7CVwNCisJb3V0YiAlYXgsJDB4MjI7CVwNCisJaW5iICQw eDIzLCVheA0KKw0KKwljbGkNCisJZ2V0Q3g4NigkMHhjMykJCSMgZ2V0IEND UjMNCisJbW92YiAlYXgsJWN4CQkjIFNhdmUgb2xkIHZhbHVlDQorCW1vdmIg JWF4LCVieA0KKwlhbmRiICQweDBmLCVieAkJIyBFbmFibGUgYWxsIGNvbmZp ZyByZWdpc3RlcnMgKGZvciBDQ1I0IGFjY2VzcykNCisJb3JiICQweDEwLCVi eA0KKwlzZXRDeDg2KCQweGMzLCVieCkNCisNCisjaWZkZWYgQ09ORklHX0NZ UklYX1NVU1BfSExUDQorCWdldEN4ODYoJDB4YzIpCQkjIENDUjIgfD0gU1VT UF9ITFQNCisJb3JiICQ4LCVheA0KKwltb3ZiICVheCwlYngNCisJc2V0Q3g4 NigkMHhjMiwlYngpDQorI2VuZGlmDQorDQorCWdldEN4ODYoJDB4ZTgpCQkj IENDUjQgfD0gQ1BVSUQgfCBEVEVfRU4NCisJb3JiICQweDkwLCVheA0KKwlt b3ZiICVheCwlYngNCisJc2V0Q3g4NigkMHhlOCwlYngpDQorDQorCXNldEN4 ODYoJDB4YzMsJWN4KQkjIFJlc3RvcmUgb2xkIENDUjMNCisJc3RpDQorI2Vu ZGlmIC8qIENPTkZJR19DWVJJWCAqLw0KKw0KK25jeXJpeDoJbW92bCAkMywg U1lNQk9MX05BTUUoeDg2KSMgYXQgbGVhc3QgMzg2DQogCXB1c2hmbAkJCSMg cHVzaCBFRkxBR1MNCiAJcG9wbCAlZWF4CQkjIGdldCBFRkxBR1MNCiAJbW92 bCAlZWF4LCVlY3gJCSMgc2F2ZSBvcmlnaW5hbCBFRkxBR1MNCkBAIC0xNTMs NyArMjIwLDggQEANCiAJeG9ybCAlZWN4LCVlYXgJCSMgY2hhbmdlIGluIGZs YWdzDQogCWFuZGwgJDB4NDAwMDAsJWVheAkjIGNoZWNrIGlmIEFDIGJpdCBj aGFuZ2VkDQogCWplIGlzMzg2DQotCW1vdmwgJDQsU1lNQk9MX05BTUUoeDg2 KQ0KKw0KKwltb3ZsICQ0LFNZTUJPTF9OQU1FKHg4NikjIGF0IGxlYXN0IDQ4 Ng0KIAltb3ZsICVlY3gsJWVheA0KIAl4b3JsICQweDIwMDAwMCwlZWF4CSMg Y2hlY2sgSUQgZmxhZw0KIAlwdXNobCAlZWF4DQpAQCAtMTYxLDE0ICsyMjks MjMgQEANCiAJcHVzaGZsCQkJIyA0ODdTWCB3ZSBjYW4ndCBjaGFuZ2UgaXQN CiAJcG9wbCAlZWF4DQogCXhvcmwgJWVjeCwlZWF4DQotCWFuZGwgJDB4MjAw MDAwLCVlYXgNCi0JamUgaXM0ODYNCi1pc25ldzoJcHVzaGwgJWVjeAkJIyBy ZXN0b3JlIG9yaWdpbmFsIEVGTEFHUw0KKwlwdXNobCAlZWN4CQkjIHJlc3Rv cmUgb3JpZ2luYWwgRUZMQUdTDQogCXBvcGZsDQotCWluY2wgU1lNQk9MX05B TUUoaGF2ZV9jcHVpZCkJIyB3ZSBoYXZlIENQVUlEDQorCWFuZGwgJDB4MjAw MDAwLCVlYXgNCisJamUgbm9jcHVpZA0KKw0KKwkvKiBnZXQgdmVuZG9yIGlu Zm8gKi8NCisJeG9ybCAlZWF4LCAlZWF4CQkJIyBjYWxsIENQVUlEIHdpdGgg MCAtPiByZXR1cm4gdmVuZG9yIElEDQorCS5ieXRlIDB4MGYsIDB4YTIJCSMg Q1BVSUQNCisJbW92bCAlZWF4LFNZTUJPTF9OQU1FKGhhdmVfY3B1aWQpCSMg c2F2ZSBDUFVJRCBsZXZlbA0KKwltb3ZsICVlYngsU1lNQk9MX05BTUUoeDg2 X3ZlbmRvcl9pZCkJIyBsbyA0IGNoYXJzDQorCW1vdmwgJWVkeCxTWU1CT0xf TkFNRSh4ODZfdmVuZG9yX2lkKSs0CSMgbmV4dCA0IGNoYXJzDQorCW1vdmwg JWVjeCxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKSs4CSMgbGFzdCA0IGNo YXJzDQorDQorCWNtcGwgJDAsJWVheAkJCSMgZG8gd2UgaGF2ZSBwcm9jZXNz b3IgaW5mbyBhcyB3ZWxsPw0KKwlqZSBub2NwdWlkDQorDQogCS8qIGdldCBw cm9jZXNzb3IgdHlwZSAqLw0KLQkJCQkjIExJTlVTIFdFIEhBVkUgQSBCVUcg SEVSRSAtIE1VU1QgQ0hFQ0sgV0lUSA0KLQkJCQkjIENQVUlEIzAgVEhBVCBD UFVJRCMxIElTIFNVUFBPUlRFRC4uLg0KIAltb3ZsICQxLCAlZWF4CQkjIFVz ZSB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gdG8gDQogCS5ieXRlIDB4MGYsIDB4 YTIJIyBjaGVjayB0aGUgcHJvY2Vzc29yIHR5cGUNCiAJbW92YiAlYWwsICVj bAkJIyBzYXZlIHJlZyBmb3IgZnV0dXJlIHVzZQ0KQEAgLTE4MCwyMyArMjU3 LDE2MiBAQA0KIAlhbmRiICQweDBmLCAlY2wJCSMgbWFzayBtYXNrIHJldmlz aW9uDQogCW1vdmIgJWNsLFNZTUJPTF9OQU1FKHg4Nl9tYXNrKQ0KIAltb3Zs ICVlZHgsU1lNQk9MX05BTUUoeDg2X2NhcGFiaWxpdHkpDQotCS8qIGdldCB2 ZW5kb3IgaW5mbyAqLw0KLQl4b3JsICVlYXgsICVlYXgJCQkjIGNhbGwgQ1BV SUQgd2l0aCAwIC0+IHJldHVybiB2ZW5kb3IgSUQNCi0JLmJ5dGUgMHgwZiwg MHhhMgkJIyBDUFVJRA0KLQltb3ZsICVlYngsU1lNQk9MX05BTUUoeDg2X3Zl bmRvcl9pZCkJIyBsbyA0IGNoYXJzDQotCW1vdmwgJWVkeCxTWU1CT0xfTkFN RSh4ODZfdmVuZG9yX2lkKSs0CSMgbmV4dCA0IGNoYXJzDQotCW1vdmwgJWVj eCxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKSs4CSMgbGFzdCA0IGNoYXJz DQogDQotCW1vdmwgJWNyMCwlZWF4CQkjIDQ4NisNCi0JYW5kbCAkMHg4MDAw MDAxMSwlZWF4CSMgU2F2ZSBQRyxQRSxFVA0KLQlvcmwgJDB4NTAwMjIsJWVh eAkjIHNldCBBTSwgV1AsIE5FIGFuZCBNUA0KLQlqbXAgMmYNCi1pczQ4NjoJ cHVzaGwgJWVjeAkJIyByZXN0b3JlIG9yaWdpbmFsIEVGTEFHUw0KLQlwb3Bm bA0KLQltb3ZsICVjcjAsJWVheAkJIyA0ODYNCisJY21wbCAkMHg0NDRkNDE2 MyxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKSs4CSMgIltBdXRoZW50aV1j QU1EIj8NCisJam5lIG5vY3B1aWQNCisNCisJb3JiICQweDIwLFNZTUJPTF9O QU1FKHg4NikJCSMgRmxhZyBhcyBBTUQNCisJY21wYiAkMHgyNSxTWU1CT0xf TkFNRSh4ODYpCQkjIEs1IG1vZGVsIDAgaGFzIHN3YXBwZWQNCisJam5lIGlz NDg2CQkJCSMgZmVhdHVyZSBmbGFncw0KKwlhbmRsICQweDAwMDAwMjAwLCVl ZHgJCQkjIG1vdmUgYml0IDkgdG8gYml0IDEzDQorCXJvbGwgJDQsJWVkeAkJ CQkjIGFuZCBjbGVhciBiaXQgOQ0KKwlvcmwgJWVkeCxTWU1CT0xfTkFNRSh4 ODZfY2FwYWJpbGl0eSkNCisJYW5kbCAkMHhmZmZmZmRmZixTWU1CT0xfTkFN RSh4ODZfY2FwYWJpbGl0eSkNCisJam1wIGlzNDg2DQorDQorbm9jcHVpZDoN CisJLyoNCisJICogRXZlbiBpZiB3ZSBoYWQgQ1BVSUQgQ3lyaXggdHJpZXMg dG8gbG9vayBjb21wYXRpYmxlIHdpdGgNCisJICogSW50ZWwgc28gd2UgaGF2 ZSB0byBnbyBlbHNld2hlcmUgZm9yIHRoZSBuaXR0eSBncml0dHkuDQorCSAq Lw0KKwljbXBsICQweDY5NzI3OTQzLFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3Jf aWQpCSMgIkN5cmlbeC4qXSI/DQorCWpuZSBpczQ4NgkJCQkJIyBtYXliZSAu Li4NCisNCitjaGtkZXZpZDoNCisJb3JiICQweDEwLFNZTUJPTF9OQU1FKHg4 NikJCSMgRmxhZyBhcyBDeXJpeA0KKwltb3ZiICQweGZlLFNZTUJPTF9OQU1F KHg4Nl9tb2RlbCkJIyBHZW5lcmljIEN4NDg2Pw0KKwltb3ZiICQwLFNZTUJP TF9OQU1FKHg4Nl9tYXNrKQ0KKw0KKyNpZmRlZiBDT05GSUdfQ1lSSVgNCisJ Y2xpCQkJIyBUZXN0IGZvciBERVZJRA0KKwlnZXRDeDg2KCQweGMzKQkJIyBi eSB3cml0aW5nIENDUjMNCisJbW92YiAlYXgsJWN4DQorCW1vdmIgJWF4LCVi eA0KKwlvcmIgJDB4ODAsJWJ4DQorCXNldEN4ODYoJDB4YzMsJWJ4KQ0KKwln ZXRDeDg2KCQweGMwKQkJIyBkdW1teSB0byBjaGFuZ2UgYnVzDQorCWdldEN4 ODYoJDB4YzMpDQorCXN0aQ0KKwljbXAgJWF4LCVjeA0KKwlqZSBpczQ4NgkJ IyBub3Qgd3JpdGFibGUgPT0gbm8gREVWSUQNCisNCisJY2xpDQorCXNldEN4 ODYoJDB4YzMsJWN4KQkjIHJlc3RvcmUgQ0NSMw0KKw0KKwlnZXRDeDg2KCQw eGZmKQkJIyBnZXQgREVWSUQgaW4gcHJlZmVyZW5jZSB0byBhbnkgQ1BVSUQN CisJbW92YiAlYWwsU1lNQk9MX05BTUUoeDg2X21hc2spDQorCWdldEN4ODYo JDB4ZmUpDQorCW1vdmIgJWFsLFNZTUJPTF9OQU1FKHg4Nl9tb2RlbCkNCisJ c3RpDQorDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYXzVYODYpIHx8IGRl ZmluZWQoQ09ORklHX0NZUklYXzZYODYpDQorCWFuZGIgJDB4ZjAsJWFsDQor IyAgaWZkZWYgQ09ORklHX0NZUklYXzZYODYNCisJY21wYiAkMHgzMCwlYWwN CisJamUgaXM2eDg2DQorIyAgZW5kaWYNCisjICBpZmRlZiBDT05GSUdfQ1lS SVhfNVg4Ng0KKwljbXBiICQweDIwLCVhbA0KKwlqZSBpczV4ODYNCisjICBl bmRpZg0KKwkvKiBDeDQ4NiBvciBzb21ldGhpbmcgYmV5b25kIGEgNng4NiAo TTIgb3IgYmV0dGVyKS4gTm90ZSB0aGF0DQorCSAqIHRoZSBDeDQ4NiBhbHNv IGhhdmUgcGVyZm9ybWFuY2UgZmVhdHVyZXMgd2UgY291bGQgdHdlYWsNCisJ ICogYnV0IGdpdmVuIHRoZSBwcm9ibGVtcyB3aXRoIFs1Nl14ODYsIHRoZSBu dW1iZXIgb2YgQ3g0ODYNCisJICogdmFyaWFudHMsIHRoZSBmYWN0IHRoYXQg dGhlIEN4NDg2IGlzIHByZXR0eSB3ZWxsIGRlYWQNCisJICogbm93IGFuZCB0 aGUgZmFjdCB0aGF0IEkgaGF2ZSBubyBDeDQ4NiBteXNlbGYgSSBoYXZlbid0 DQorCSAqIHJpc2tlZCBpdC4gTm9yIGhhdmUgSSBsb29rZWQgYXQgdGhlIE0y IGluIGFueSBkZXRhaWwgeWV0Lg0KKwkgKi8NCisJam1wIGlzNDg2DQorI2Vu ZGlmDQorDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYXzVYODYpIHx8IGRl ZmluZWQoQ09ORklHX0NZUklYX0ZBU1RfSU8pDQorCS8qIFNwZWNpYWwgc2V0 IHVwIGZvciA1eDg2ICovDQoraXM1eDg2Og0KKwljbGkNCisJbW92YiAlY3gs JWJ4DQorCWFuZGIgJDB4MGYsJWJ4CQkjIEVuYWJsZSBhbGwgY29uZmlnIHJl Z2lzdGVycw0KKwlvcmIgJDB4MTAsJWJ4DQorCXNldEN4ODYoJDB4YzMsJWJ4 KQ0KKw0KKwlnZXRDeDg2KCQweDIwKQkJIyBQQ1IwIHw9IExTU0VSIHwgQlRC X0VODQorCW9yYiAkMHg4MiwlYXgJCSMgTE9PUF9FTiBpcyBicm9rZW4sIFJT VEtfRU4gc2hvd3Mgbm8gYmVuZWZpdA0KKwltb3ZiICVheCwlYngJCSMgYW5k IExTU0VSPTAgY291bGQgYnJlYWsgbWVtb3J5IG1hcHBlZA0KKwlzZXRDeDg2 KCQweDIwLCVieCkJIyBkZXZpY2VzIC0gd2UgaGF2ZSBubyB3YXkgb2Yga25v d2luZykNCisNCisjaWZkZWYgQ09ORklHX0NZUklYX0ZBU1RfSU8NCisJZ2V0 Q3g4NigkMHhlOCkJCSMgQ0NSNDogSU9SVD0wIChub2RlbGF5KQ0KKwlhbmRi ICQweGYxLCVheA0KKwltb3ZiICVheCwlYngNCisJc2V0Q3g4NigkMHhlOCwl YngpDQorI2VuZGlmDQorDQorCXNldEN4ODYoJDB4YzMsJWN4KQkjIHJlc3Rv cmUgQ0NSMw0KKwlzdGkNCisJam1wIGlzNDg2DQorI2VuZGlmDQorDQorI2lm IGRlZmluZWQoQ09ORklHX0NZUklYXzZYODYpIHx8IGRlZmluZWQoQ09ORklH X0NZUklYX0ZBU1RfSU8pDQorCS8qIFNwZWNpYWwgc2V0IHVwIGZvciA2eDg2 ICovDQoraXM2eDg2Og0KKwljbGkNCisJbW92YiAlY3gsJWJ4DQorCWFuZGIg JDB4MGYsJWJ4CQkjIEVuYWJsZSBhbGwgY29uZmlnIHJlZ2lzdGVycw0KKwlv cmIgJDB4MTAsJWJ4DQorCXNldEN4ODYoJDB4YzMsJWJ4KQ0KKw0KKyNpZiAh ZGVmaW5lZChfX1NNUF9fKSAmJiBkZWZpbmVkKENPTkZJR19DWVJJWF82WDg2 X05PTE9DSykNCisJZ2V0Q3g4NigkMHhjMSkJCSMgQ0NSMSB8PSBOT19MT0NL DQorCW9yYiAkMHgxMCwlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNldEN4ODYo JDB4ZTgsJWJ4KQ0KKyNlbmRpZg0KKw0KKyNpZmRlZiBDT05GSUdfQ1lSSVhf RkFTVF9JTw0KKwlnZXRDeDg2KCQweGU4KQkJIyBDQ1I0OiBJT1JUPTcgKG5v ZGVsYXkpDQorCW9yYiAkMHg5NywlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNl dEN4ODYoJDB4ZTgsJWJ4KQ0KKyNlbmRpZg0KKw0KKwlnZXRDeDg2KCQweGU5 KQkJIyBDQ1I1ICY9IH5TTE9QDQorCWFuZGIgJDB4ZmQsJWF4DQorI2lmZGVm IENPTkZJR19DWVJJWF82WDg2X1dUQUxMT0MNCisJb3JiICQweDAxLCVheAkJ IyBDQ1I1IHw9IFdUX0FMTE9DDQorI2VuZGlmDQorCW1vdmIgJWF4LCVieA0K KwlzZXRDeDg2KCQweGU5LCVieCkNCisNCisjaWZkZWYgQ09ORklHX0NZUklY XzZYODZfQlRCCSMgSUJNIGRvY3VtZW50YXRpb24sIG5vIEN5cml4IGRvY3MN CisJZ2V0Q3g4NigkMHgzMCkJCSMgRW5hYmxlIHRlc3QgcmVnaXN0ZXIgb3Bj b2Rlcw0KKwltb3ZiICVheCwlZHgNCisJb3JiICQweDQwLCVheA0KKwltb3Zi ICVheCwlYngNCisJc2V0Q3g4NigkMHgzMCwlYngpDQorDQorCW1vdiAkMHgy OCwlZWJ4CQkjIEVuYWJsZSBGQVIgQ09GcyBpbiBCVEINCisJLmJ5dGUgMHgw ZiwweDI2LDB4Y2IJIyBtb3YgJWVieCwldHIxDQorCS5ieXRlIDB4MGYsMHgy NCwweGQwCSMgbW92ICV0cjIsJWVheA0KKyNpZiAwDQorCWFuZCAkMHhmZmZm ZmZmZCwlZWF4CSMgYWNjb3JkaW5nIHRvIEN5cml4L0lCTSBkb2N1bWVudGF0 aW9uDQorI2Vsc2UNCisJYW5kICQweGZmZmZmZmY4LCVlYXgJIyBhY2NvcmRp bmcgdG8gNng4Nm9wdA0KKwlvciAgJDB4MDAwMDAwNzAsJWVheA0KKyNlbmRp Zg0KKwkuYnl0ZSAweDBmLDB4MjYsMHhkMAkjIG1vdiAlZWF4LCV0cjINCisN CisJc2V0Q3g4NigkMHgzMCwlZHgpCSMgRGlzYWJsZSB0ZXN0IHJlZ2lzdGVy IG9wY29kZXMNCisjZW5kaWYgLyogQ09ORklHX0NZUklYXzZYODZfQlRCICov DQorDQorCXNldEN4ODYoJDB4YzMsJWN4KQkjIHJlc3RvcmUgQ0NSMw0KKwlz dGkNCisjZW5kaWYgLyogQ09ORklHX0NZUklYXzZYODYgb3IgQ09ORklHX0NZ UklYX0ZBU1RfSU8gKi8NCisjZW5kaWYgLyogQ09ORklHX0NZUklYICovDQor DQoraXM0ODY6CW1vdmwgJWNyMCwlZWF4CQkjIDQ4NiBvciBiZXR0ZXINCiAJ YW5kbCAkMHg4MDAwMDAxMSwlZWF4CSMgU2F2ZSBQRyxQRSxFVA0KIAlvcmwg JDB4NTAwMjIsJWVheAkjIHNldCBBTSwgV1AsIE5FIGFuZCBNUA0KIAlqbXAg MmYNCisNCiBpczM4NjoJcHVzaGwgJWVjeAkJIyByZXN0b3JlIG9yaWdpbmFs IEVGTEFHUw0KIAlwb3BmbA0KIAltb3ZsICVjcjAsJWVheAkJIyAzODYNCklu ZGV4OiBhcmNoL2kzODYva2VybmVsL3NldHVwLmMNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NClJDUyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kzODYv a2VybmVsL3NldHVwLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMi45 DQpkaWZmIC11IC11IC1yMS4xLjIuOSBzZXR1cC5jDQotLS0gc2V0dXAuYwkx OTk3LzA1LzE5IDIyOjQ3OjU0CTEuMS4yLjkNCisrKyBzZXR1cC5jCTE5OTcv MDUvMTkgMjM6MzY6NDANCkBAIC00Miw3ICs0Miw3IEBADQogY2hhciB4ODZf bWFzayA9IDA7CQkvKiBzZXQgYnkga2VybmVsL2hlYWQuUyAqLw0KIGludCB4 ODZfY2FwYWJpbGl0eSA9IDA7CQkvKiBzZXQgYnkga2VybmVsL2hlYWQuUyAq Lw0KIGludCBmZGl2X2J1ZyA9IDA7CQkvKiBzZXQgaWYgUGVudGl1bShUTSkg d2l0aCBGUCBidWcgKi8NCi1pbnQgaGF2ZV9jcHVpZCA9IDA7ICAgICAgICAg ICAgIC8qIHNldCBpZiBDUFVJRCBpbnN0cnVjdGlvbiB3b3JrcyAqLw0KK2lu dCBoYXZlX2NwdWlkID0gLTE7ICAgICAgICAgICAgLyogQ1BVSUQgbGV2ZWwg KC0xIGlmIG5vIENQVUlEKSAqLw0KIA0KIGNoYXIgeDg2X3ZlbmRvcl9pZFsx M10gPSAidW5rbm93biI7DQogDQpAQCAtMjU0LDExICsyNTQsODMgQEANCiAJ cmV0dXJuIE5VTEw7DQogfQ0KIA0KLXN0YXRpYyBjb25zdCBjaGFyICogZ2V0 bW9kZWwoaW50IHg4NiwgaW50IG1vZGVsKQ0KK3N0YXRpYyBjb25zdCBjaGFy ICogY3lyaXhtb2RlbCh1bnNpZ25lZCBpbnQgbnIpDQorew0KKwlzdGF0aWMg Y2hhciBuYnVmWzMyXTsNCisNCisJLyogTm90ZSB0aGF0IHNvbWUgb2YgdGhl IHBvc3NpYmlsaXRpZXMgdGhpcyBkZWNvZGluZyBhbGxvd3MNCisJICogaGF2 ZSBuZXZlciBhY3R1YWxseSBiZWVuIG1hbnVmYWN0dXJlZCAtIGJ1dCB0aG9z ZSB0aGF0DQorCSAqIGRvIGFjdHVhbGx5IGV4aXN0IGFyZSBjb3JyZWN0bHkg ZGVjb2RlZC4NCisJICovDQorCWlmIChuciA8IDB4MjApIHsNCisJCXN0cmNw eShuYnVmLCAiQ3g0ODYiKTsNCisJCWlmICghKG5yICYgMHgxMCkpIHsNCisJ CQlzcHJpbnRmKG5idWYrNSwgIiVjJXMlYyIsDQorCQkJCShuciAmIDB4MDEp ID8gJ0QnIDogJ1MnLA0KKwkJCQkobnIgJiAweDA0KSA/ICJSeCIgOiAiTEMi LA0KKwkJCQkobnIgJiAweDAyKSA/ICcyJyA6ICdcMDAwJyk7DQorCQl9IGVs c2UgaWYgKCEobnIgJiAweDA4KSkgew0KKwkJCXNwcmludGYobmJ1Zis1LCAi UyVzJWMiLA0KKwkJCQkobnIgJiAweDAxKSA/ICIyIiA6ICIiLA0KKwkJCQko bnIgJiAweDAyKSA/ICdlJyA6ICdcMDAwJyk7DQorCQl9IGVsc2Ugew0KKwkJ CXNwcmludGYobmJ1Zis1LCAiRFglYyIsDQorCQkJCW5yID09IDB4MWIgPyAn MicNCisJCQkJCTogKG5yID09IDB4MWYgPyAnNCcgOiAnXDAwMCcpKTsNCisJ CX0NCisJCXJldHVybiBuYnVmOw0KKwl9IGVsc2UgaWYgKG5yID49IDB4MjAg JiYgbnIgPD0gMHg0ZikgewkvKiA1eDg2LCA2eDg2IG9yIEd4ODYgKi8NCisJ CXNwcmludGYobmJ1ZiwgIiVjeDg2ICVjeCBDb3JlL0J1cyBDbG9jayIsDQor CQkJIj8/NTZHIltucj4+NF0sDQorCQkJIjEyPz80MyJbbnIgJiAweDA1XSk7 DQorCQlyZXR1cm4gbmJ1ZjsNCisJfSBlbHNlIGlmIChuciA+PSAweDUwICYm IG5yIDw9IDB4NWYpIHsJLyogQ3lyaXggTTIgKi8NCisJCXNwcmludGYobmJ1 ZiwgIk0yICVjJXN4IENvcmUvQnVzIENsb2NrIiwNCisJCQkiMTIyMzM0NDUi W25yICYgMHgwN10sDQorCQkJKG5yICYmICEobnImMSkpID8gIi41IiA6ICIi KTsNCisJCXJldHVybiBuYnVmOw0KKwl9DQorDQorCS8qIFByb2JhYmx5IDB4 ZmQgKEN4NDg2W1NEXUxDIHdpdGggbm8gSUQgcmVnaXN0ZXIpDQorCSAqIG9y IDB4ZmUgKEN4NDg2IEEgc3RlcCB3aXRoIG5vIElEIHJlZ2lzdGVyKS4NCisJ ICovDQorCXJldHVybiAiQ3g0ODYiOw0KK30NCisNCitzdGF0aWMgY29uc3Qg Y2hhciAqIGdldG1vZGVsKGludCB4ODYsIGludCBtb2RlbCwgaW50IGhhdmVf Y3B1aWQpDQogew0KICAgICAgICAgY29uc3QgY2hhciAqcCA9IE5VTEw7DQot ICAgICAgICBzdGF0aWMgY2hhciBuYnVmWzEyXTsNCi0Jc3dpdGNoICh4ODYp IHsNCisgICAgICAgIHN0YXRpYyBjaGFyIG5idWZbNDldOw0KKw0KKwlpZiAo KHg4NiAmIDB4ZjApID09IDB4MTApIHsJCS8qIEN5cml4ICovDQorCQlwID0g Y3lyaXhtb2RlbChtb2RlbCk7DQorCX0gZWxzZSBpZiAoKHg4NiAmIDB4ZjAp ID09IDB4MjApIHsJLyogQU1EICovDQorCQkvKiBBY3R1YWxseSB3ZSBtdXN0 IGhhdmUgY3B1aWQgb3Igd2UgY291bGQgbmV2ZXIgaGF2ZQ0KKwkJICogZmln dXJlZCBvdXQgdGhhdCB0aGlzIHdhcyBBTUQgZnJvbSB0aGUgdmVuZG9yIGlu Zm8gOi0pLg0KKwkJICovDQorCQlpZiAoaGF2ZV9jcHVpZCA8IDApDQorCQkJ cCA9ICJBbTQ4NiI7DQorCQllbHNlIHsNCisJCQlpbnQgbiwgZHVtbXk7DQor CQkJY3B1aWQoMHg4MDAwMDAwMCwgJm4sICZkdW1teSwgJmR1bW15LCAmZHVt bXkpOw0KKwkJCWlmICghbikgew0KKwkJCQlpZiAoKHg4NiAmIDB4MGYpID09 IDQpDQorCQkJCQlwID0gaTQ4Nm1vZGVsKG1vZGVsKTsNCisJCQkJZWxzZSBp ZiAoKHg4NiAmIDB4MGYpID09IDUpDQorCQkJCQlwID0gIkFNRC1LNSAoTW9k ZWwgMCkiOw0KKwkJCX0gZWxzZSB7DQorCQkJCWludCAqdiA9IChpbnQgKilu YnVmOw0KKwkJCQljcHVpZCgweDgwMDAwMDAyLCAmdlswXSwgJnZbMV0sICZ2 WzJdLCAmdlszXSk7DQorCQkJCWNwdWlkKDB4ODAwMDAwMDMsICZ2WzRdLCAm dls1XSwgJnZbNl0sICZ2WzddKTsNCisJCQkJY3B1aWQoMHg4MDAwMDAwNCwg JnZbOF0sICZ2WzldLCAmdlsxMF0sICZ2WzExXSk7DQorCQkJCW5idWZbNDhd ID0gJ1wwJzsNCisJCQkJcCA9IG5idWY7DQorCQkJfQ0KKwkJfQ0KKwl9IGVs c2Ugc3dpdGNoICh4ODYpIHsJCQkvKiBJbnRlbCAqLw0KKwkJY2FzZSAwOg0K KwkJCXAgPSAidW5rbm93biI7DQorCQkJYnJlYWs7DQogCQljYXNlIDQ6DQog CQkJcCA9IGk0ODZtb2RlbChtb2RlbCk7DQogCQkJYnJlYWs7DQpAQCAtMzA1 LDI4ICszNzcsMzEgQEANCiAjZW5kaWYNCiANCiAgICAgICAgICAgICAgICAg ICAgICAgICBsZW4gKz0gc3ByaW50ZihidWZmZXIrbGVuLCJwcm9jZXNzb3Jc dDogJWRcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiY3B1XHRcdDogJWM4NlxuIg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJjcHUgZmFtaWx5XHQ6ICVjXG4iDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVsXHRc dDogJXNcbiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAidmVuZG9yX2lkXHQ6ICVzXG4iLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENQVU4sDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ0QoeDg2KSsnMCcsDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0QoaGF2ZV9jcHVp ZCkgPyANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdldG1vZGVsKENEKHg4NiksIENEKHg4Nl9tb2RlbCkpIDoNCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3du IiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Q0QoeDg2KSAmIDB4MGYpKycwJywNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZXRtb2RlbChDRCh4ODYpLCBDRCh4ODZfbW9k ZWwpLCBDRChoYXZlX2NwdWlkKSksDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ0QoeDg2X3ZlbmRvcl9pZCkpOw0KICAgICAg ICAgDQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENEKHg4Nl9tYXNr KSkNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiArPSBz cHJpbnRmKGJ1ZmZlcitsZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAic3RlcHBpbmdcdDogJWRcbiIsDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDRCh4ODZfbWFzaykpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVs c2UNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ0QoeDg2X21hc2sp KSB7DQorCQkJCWlmICgoQ0QoeDg2KSAmIDB4ZjApID09IDB4MTApDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJbGVuICs9IHNwcmludGYo YnVmZmVyK2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAkic3RlcHBpbmdcdDogJWQgcmV2ICVkXG4iLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCUNEKHg4Nl9tYXNrKSA+PiA0LA0KKwkJCQkJCUNEKHg4Nl9tYXNrKSAm IDB4MGYpOw0KKwkJCQllbHNlDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAJbGVuICs9IHNwcmludGYoYnVmZmVyK2xlbiwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkic3Rl cHBpbmdcdDogJWRcbiIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAJQ0QoeDg2X21hc2spKTsNCisgICAgICAg ICAgICAgICAgICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxlbiArPSBzcHJpbnRmKGJ1ZmZlcitsZW4sIA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InN0ZXBwaW5nXHQ6IHVua25vd25cbiIpOw0KIA0KLQkJCXNlcF9idWcgPSBD RChoYXZlX2NwdWlkKSAmJg0KKwkJCXNlcF9idWcgPSBDRCh4ODYpID09IDB4 MDYgJiYgLyogSW50ZWwgZmFtaWx5IDYgKi8NCisJCQkJICBDRChoYXZlX2Nw dWlkKSA+PSAwICYmDQogCQkJICAgICAgICAgIChDRCh4ODZfY2FwYWJpbGl0 eSkgJiAweDgwMCkgJiYNCi0JCQkgICAgICAgICAgIW1lbWNtcCh4ODZfdmVu ZG9yX2lkLCAiR2VudWluZUludGVsIiwgMTIpICYmDQotCQkJICAgICAgICAg IENEKHg4NikgPT0gNiAmJg0KIAkJCSAgICAgICAgICBDRCh4ODZfbW9kZWwp IDwgMyAmJg0KIAkJCSAgICAgICAgICBDRCh4ODZfbWFzaykgPCAzOw0KICAg ICAgICAgDQpAQCAtMzM2LDcgKzQxMSw3IEBADQogCQkJCSAgICAgICAic2Vw X2J1Z1x0XHQ6ICVzXG4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImZwdVx0XHQ6ICVzXG4iDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImZwdV9leGNlcHRpb25cdDogJXNc biINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Y3B1aWRcdFx0OiAlc1xuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJjcHVpZCBsZXZlbFx0OiAlZFxuIg0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cFx0XHQ6ICVzXG4i DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZs YWdzXHRcdDoiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENEKGZkaXZfYnVnKSA/ICJ5ZXMiIDogIm5vIiwNCkBAIC0zNDUs NyArNDIwLDcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDRChoYXJkX21hdGgpID8gInllcyIgOiAibm8iLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDRChoYXJkX21h dGgpICYmIGlnbm9yZV9pcnExMykNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID8gInllcyIgOiAibm8iLA0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENEKGhhdmVfY3B1aWQp ID8gInllcyIgOiAibm8iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENEKGhhdmVfY3B1aWQpLA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENEKHdwX3dvcmtzX29rKSA/ICJ5 ZXMiIDogIm5vIik7DQogICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgKCBpID0gMCA7IGkgPCAzMiA7IGkrKyApIHsNCkluZGV4OiBh cmNoL2kzODYvbW0vaW5pdC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3Vzci9DVlMvbGludXgvYXJjaC9pMzg2L21tL2luaXQuYyx2 DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjEyDQpkaWZmIC11IC11IC1y MS4xLjIuMTIgaW5pdC5jDQotLS0gaW5pdC5jCTE5OTcvMDUvMTQgMjM6Mjk6 MTIJMS4xLjIuMTINCisrKyBpbml0LmMJMTk5Ny8wNS8xOSAyMzozMDoxMA0K QEAgLTE3MSw2ICsxNzEsNjcgQEANCiAJdW5zaWduZWQgbG9uZyB0bXA7DQog CXVuc2lnbmVkIGxvbmcgYWRkcmVzczsNCiANCisjaWYgZGVmaW5lZChDT05G SUdfQ1lSSVgpICYmIGRlZmluZWQoQ09ORklHX0NZUklYXzZYODZfVlNQTSkg JiYgIWRlZmluZWQoX19TTVBfXykNCisJdW5zaWduZWQgbG9uZyB2c3BtX21h eCA9IF9fdmEoMCk7DQorDQorCS8qIElmIHRoaXMgaXMgYSBDeXJpeCA2eDg2 IHdlIHVzZSB0aGUgdmFyaWFibGUgc2l6ZSBwYWdpbmcNCisJICogbWVjaGFu aXNtIChWU1BNKSB0byBtYXAgcGh5c2ljYWwgbWVtb3J5IGF0IDB4YzAwMDAw MDAuDQorCSAqIE5vdGUgdGhhdCBWU1BNIHBhZ2VzIGFyZSBzdG9yZWQgb24g dGhlIENQVSBvbmx5IHNvIHRoaXMNCisJICogbmVlZHMgdG8gYmUgZG9uZSBm b3IgZWFjaCBwcm9jZXNzb3IgaW4gYSBtdWx0aS1wcm9jZXNzb3INCisJICog c3lzdGVtLiBJZiB3ZSBoYXZlIGEgbWl4dHVyZSBvZiBwcm9jZXNzb3JzIHdl IHdvdWxkIGFsc28NCisJICogbmVlZCB0byBzZXQgdXAgdGhlIHRyYWRpdGlv bmFsIHBhZ2UgdGFibGVzIGZvciB0aGVtLg0KKwkgKiBOb3RlIGFsc28gdGhh dCBWU1BNIHBhZ2VzIHdpbGwgYmUgZ2xvYmFsIHRvIGFsbCBtZW1vcnkNCisJ ICogc3BhY2VzIHNpbmNlIHRoZXkgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIG5v cm1hbCBwYWdlDQorCSAqIGRpcmVjdG9yaWVzLg0KKwkgKi8NCisJaWYgKCh4 ODYgJiAweGYwKSA9PSAweDEwICYmICh4ODZfbW9kZWwgJiAweGYwKSA9PSAw eDMwKSB7DQorCQlpbnQgdnNwbV9pbmRleCA9IDA7DQorDQorCQlkbyB7DQor CQkJdW5zaWduZWQgbG9uZyBtZW1fc2l6ZTsNCisNCisJCQltZW1fc2l6ZSA9 IDQwOTY7DQorCQkJd2hpbGUgKHZzcG1fbWF4K21lbV9zaXplIDwgZW5kX21l bSkNCisJCQkJbWVtX3NpemUgPDw9IDE7DQorCQkJaWYgKHZzcG1fbWF4K21l bV9zaXplID4gZW5kX21lbSkNCisJCQkJaWYgKChtZW1fc2l6ZSA+Pj0gMSkg PCA0MDk2KQ0KKwkJCQkJYnJlYWs7DQorDQorCQkJYXNtKAkibW92bCAlMCwl JWVheFxuIg0KKwkJCQkibW92bCAlJWVheCwlJXRyN1xuIg0KKwkJCQkibW92 bCAkMHgwMDAwMDAwNCwlJWVheFxuIg0KKwkJCQkibW92bCAlJWVheCwlJXRy NlxuIg0KKwkJCQkibW92bCAlMSwlJWVheFxuIg0KKwkJCQkibW92bCAlJWVh eCwlJXRyN1xuIg0KKwkJCQkibW92bCAlMiwlJWVheFxuIg0KKwkJCQkibW92 bCAlJWVheCwlJXRyNlxuIg0KKwkJCTogLyogbm8gb3V0cHV0cyAqLw0KKwkJ CTogImciICgoKChtZW1fc2l6ZS0xKSAmIDB4ZmZmZmYwMDApKSB8ICh2c3Bt X2luZGV4PDw3KSksDQorCQkJICAiZyIgKChfX3BhKHZzcG1fbWF4KSAmIDB4 ZmZmZmYwMDApIHwgKHZzcG1faW5kZXg8PDcpKSwNCisJCQkgICJnIiAoKHZz cG1fbWF4ICYgMHhmZmZmZjAwMCkgfCAweDAwMDAwY2Q2KQ0KKwkJCTogImVh eCIsICJjYyINCisJCQkpOw0KKw0KKwkJCXZzcG1fbWF4ICs9IG1lbV9zaXpl Ow0KKw0KKyNpZiAxDQorCQkJLyogSnVzdCB1c2Ugb25lIFZTUE0gcGFnZSBm b3Igbm93LCBhbnl0aGluZw0KKwkJCSAqIG92ZXIgd2lsbCBiZSB0cmFkaXRp b25hbGx5IHBhZ2VkLg0KKwkJCSAqIChTZWUgRG9jdW1lbnRhdGlvbi9DeXJp eC4pDQorCQkJICovDQorCQkJYnJlYWs7DQorI2VuZGlmDQorCQl9IHdoaWxl ICh2c3BtX21heCA8IGVuZF9tZW0gJiYgdnNwbV9pbmRleCsrIDwgNCk7DQor DQorCQkvKiBXcml0ZSBwcm90ZWN0IGRvZXMgd29yayBjb3JyZWN0bHkgYnV0 IHRoZSB0ZXN0DQorCQkgKiB3aWxsIGZhaWwgYmVjYXVzZSB3ZSBjYW4ndCBt YXAganVzdCBwYWdlIDAgcmVhZA0KKwkJICogb25seSBmcm9tIHVuZGVyIHRo ZSBWU1BNIGJpZyBwYWdlLiBJZiB3ZSBkaWRuJ3QNCisJCSAqIGtub3cgYmVm b3JlIHdlIGRvIG5vdy4NCisJCSAqLw0KKwkJd3Bfd29ya3Nfb2sgPSAxOw0K Kwl9DQorI2VuZGlmDQorDQogLyoNCiAgKiBQaHlzaWNhbCBwYWdlIDAgaXMg c3BlY2lhbDsgaXQncyBub3QgdG91Y2hlZCBieSBMaW51eCBzaW5jZSBCSU9T DQogICogYW5kIFNNTSAoZm9yIGxhcHRvcHMgd2l0aCBbMzRdODYvU0wgY2hp cHMpIG1heSBuZWVkIGl0LiAgSXQgaXMgcmVhZA0KQEAgLTIzNSw2ICsyOTYs MTcgQEANCiAJCQlhZGRyZXNzICs9IDQqMTAyNCoxMDI0Ow0KIAkJCWNvbnRp bnVlOw0KIAkJfQ0KKw0KKyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWCkgJiYg ZGVmaW5lZChDT05GSUdfQ1lSSVhfNlg4Nl9WU1BNKSAmJiAhZGVmaW5lZChf X1NNUF9fKQ0KKwkJaWYgKCh4ODYgJiAweGYwKSA9PSAweDEwCS8qIEN5cml4 ICovDQorCQkmJiAoeDg2X21vZGVsICYgMHhmMCkgPT0gMHgzMAkvKiA2eDg2 ICovDQorCQkmJiAoYWRkcmVzcyArIFBBR0VfU0laRSpQVFJTX1BFUl9QVEUp IDwgdnNwbV9tYXgpIHsgLyogd2l0aGluIFZTUE0gbWFwcGluZ3MgKi8NCisJ CQlwZ19kaXIrKzsNCisJCQlhZGRyZXNzICs9IFBBR0VfU0laRSAqIFBUUlNf UEVSX1BURTsNCisJCQljb250aW51ZTsNCisJCX0NCisjZW5kaWYNCisNCiAJ CS8qDQogCQkgKiBXZSdyZSBvbiBhIFszNF04NiwgdXNlIG5vcm1hbCBwYWdl IHRhYmxlcy4NCiAJCSAqIHBnX3RhYmxlIGlzIHBoeXNpY2FsIGF0IHRoaXMg cG9pbnQNCkBAIC0yNDcsMTIgKzMxOSwxOCBAQA0KIA0KIAkJcGdkX3ZhbChw Z19kaXJbNzY4XSkgPSBfUEFHRV9UQUJMRSB8ICh1bnNpZ25lZCBsb25nKSBw Z190YWJsZTsNCiAJCXBnX2RpcisrOw0KKw0KIAkJLyogbm93IGNoYW5nZSBw Z190YWJsZSB0byBrZXJuZWwgdmlydHVhbCBhZGRyZXNzZXMgKi8NCiAJCXBn X3RhYmxlID0gKHB0ZV90ICopIF9fdmEocGdfdGFibGUpOw0KIAkJZm9yICh0 bXAgPSAwIDsgdG1wIDwgUFRSU19QRVJfUFRFIDsgdG1wKysscGdfdGFibGUr Kykgew0KIAkJCXB0ZV90IHB0ZSA9IG1rX3B0ZShhZGRyZXNzLCBQQUdFX0tF Uk5FTCk7DQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYKSAmJiBkZWZpbmVk KENPTkZJR19DWVJJWF82WDg2X1ZTUE0pICYmICFkZWZpbmVkKF9fU01QX18p DQorCQkJaWYgKGFkZHJlc3MgPCB2c3BtX21heCB8fCBhZGRyZXNzID49IGVu ZF9tZW0pDQorCQkJCXB0ZV92YWwocHRlKSA9IDA7DQorI2Vsc2UNCiAJCQlp ZiAoYWRkcmVzcyA+PSBlbmRfbWVtKQ0KIAkJCQlwdGVfdmFsKHB0ZSkgPSAw Ow0KKyNlbmRpZg0KIAkJCXNldF9wdGUocGdfdGFibGUsIHB0ZSk7DQogCQkJ YWRkcmVzcyArPSBQQUdFX1NJWkU7DQogCQl9DQpJbmRleDogaW5jbHVkZS9h c20taTM4Ni9idWdzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm aWxlOiAvdXNyL0NWUy9saW51eC9pbmNsdWRlL2FzbS1pMzg2L2J1Z3MuaCx2 DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjINCmRpZmYgLXUgLXUgLXIx LjEuMi4yIGJ1Z3MuaA0KLS0tIGJ1Z3MuaAkxOTk2LzEwLzA5IDIwOjU5OjUz CTEuMS4yLjINCisrKyBidWdzLmgJMTk5Ny8wNS8xOSAyMzozMDoxMA0KQEAg LTEzMCw1ICsxMzAsNSBAQA0KIAljaGVja190bGIoKTsNCiAJY2hlY2tfZnB1 KCk7DQogCWNoZWNrX2hsdCgpOw0KLQlzeXN0ZW1fdXRzbmFtZS5tYWNoaW5l WzFdID0gJzAnICsgeDg2Ow0KKwlzeXN0ZW1fdXRzbmFtZS5tYWNoaW5lWzFd ID0gJzAnICsgKHg4NiAmIDB4MGYpOw0KIH0NCkluZGV4OiBpbmNsdWRlL2Fz bS1pMzg2L3Byb2Nlc3Nvci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3Vzci9DVlMvbGludXgvaW5jbHVkZS9hc20taTM4Ni9wcm9j ZXNzb3IuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjkNCmRpZmYg LXUgLXUgLXIxLjEuMi45IHByb2Nlc3Nvci5oDQotLS0gcHJvY2Vzc29yLmgJ MTk5Ny8wNS8xNCAyMzozMzowNwkxLjEuMi45DQorKysgcHJvY2Vzc29yLmgJ MTk5Ny8wNS8xOSAyMzozMDoxMA0KQEAgLTE2LDcgKzE2LDcgQEANCiAgKi8N CiANCiBleHRlcm4gY2hhciBoYXJkX21hdGg7DQotZXh0ZXJuIGNoYXIgeDg2 OwkJLyogbG93ZXIgNCBiaXRzICovDQorZXh0ZXJuIGNoYXIgeDg2OwkJLyog dXBwZXIgNCBiaXRzPXZlbmRvciwgbG93ZXIgNCBiaXRzPWZhbWlseSAqLw0K IGV4dGVybiBjaGFyIHg4Nl92ZW5kb3JfaWRbMTNdOw0KIGV4dGVybiBjaGFy IHg4Nl9tb2RlbDsJCS8qIGxvd2VyIDQgYml0cyAqLw0KIGV4dGVybiBjaGFy IHg4Nl9tYXNrOwkJLyogbG93ZXIgNCBiaXRzICovDQpAQCAtMTc0LDUgKzE3 NCwyMSBAQA0KIA0KICNkZWZpbmUgaW5pdF90YXNrCShpbml0X3Rhc2tfdW5p b24udGFzaykNCiAjZGVmaW5lIGluaXRfc3RhY2sJKGluaXRfdGFza191bmlv bi5zdGFjaykNCisNCitleHRlcm4gaW5saW5lIHZvaWQgY3B1aWQoaW50IG9w LCBpbnQgKmVheCwgaW50ICplYngsIGludCAqZWN4LCBpbnQgKmVkeCkNCit7 DQorCV9fYXNtX18oIm1vdmwgJTQsJSVlYXhcblx0Ig0KKwkJIi5ieXRlIDB4 MGYsIDB4YTJcblx0Ig0KKwkJIm1vdmwgJSVlYXgsJTBcblx0Ig0KKwkJIm1v dmwgJSVlYngsJTFcblx0Ig0KKwkJIm1vdmwgJSVlY3gsJTJcblx0Ig0KKwkJ Im1vdmwgJSVlZHgsJTNcblx0Ig0KKwkJOiAiPW0iICgqZWF4KSwNCisJCSAg Ij1tIiAoKmVieCksDQorCQkgICI9bSIgKCplY3gpLA0KKwkJICAiPW0iICgq ZWR4KQ0KKwkJOiAiZyIgKG9wKQ0KKwkJOiAiZWF4IiwgImVieCIsICJlY3gi LCAiZWR4IiwgImNjIik7DQorfQ0KIA0KICNlbmRpZiAvKiBfX0FTTV9JMzg2 X1BST0NFU1NPUl9IICovDQo= --279709697-2034450396-864118563=:71--