ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCA1OTI2OTc4Li5iZDNhN2I3IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0xLDMgKzEsMzU0NyBAQAorY29tbWl0IDYzNWU1ZjhmYzgyMzY1ZTZlOTczNGIzMTMyYmM5NTEzNWE2ZGU2NzkKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVN1biBKYW4gMTggMjE6Mzc6NDggMjAwOSArMDEwMAorCisgICAgUHJlcGFyZSAyMDA5LjAxLXJjMworCisgICAgVXBkYXRlIENIQU5HRUxPRworCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDRjZGE0Mzc4OThmNzg3Mzc1MmYwMjAxNzU3Y2QzM2YxMjE5NmNlODcKK0F1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorRGF0ZToJU2F0IEphbiAxNyAxMzozMjo0MiAyMDA5IC0wNTAwCisKKyAgICBidWlsZCBzeXN0ZW06IHRyZWF0IGFsbCBEYXJ3aW4ncyBhbGlrZQorCisgICAgVGhlIHg4NiBiYXNlZCB2ZXJzaW9uIG9mIERhcndpbiBiZWhhdmVzIHRoZSBzYW1lIHF1aXJreSB3YXkgYXMgdGhlIHBvd2VycGMKKyAgICBEYXJ3aW4sIHNvIG9ubHkgY2hlY2sgSE9TVE9TIHdoZW4gc2V0dGluZyB1cCBEYXJ3aW4gd29ya2Fyb3VuZHMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisKK2NvbW1pdCBjMDg4YTEwOGM3NWRiNTY1ZTA3MjkyZmQ2NjhkZmE1NDkxZTg1YmMyCitBdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CitEYXRlOglXZWQgSmFuIDE0IDEzOjUyOjI0IDIwMDkgKzAxMDAKKworICAgIGZkdF9yZXNpemUoKTogZml4IGFjdHVhbHNpemUgY2FsY3VsYXRpb25zIHdpdGggdW5hbGlnbmVkIGJsb2JzCisKKyAgICBUaGUgY29kZSBpbiBmZHRfcmVzaXplKCkgdG8gZXh0ZW5kIHRoZSBmZHQgc2l6ZSB0byBlbmQgb24gYSBwYWdlIGJvdW5kYXJ5CisgICAgaXMgd3JvbmcgZm9yIGZkdCdzIG5vdCBsb2NhdGVkIGF0IGFuIGFkZHJlc3MgYWxpZ25lZCBvbiBhIHBhZ2UgYm91bmRhcnkuCisgICAgV2hhdCdzIGV2ZW4gd29yc2UsIHRoZSBjb2RlIHdvdWxkIG1ha2UgYWN0dWFsc2l6ZSBzaHJpbmsgcmF0aGVyIHRoYW4gZ3JvdworICAgIGlmIChibG9iICYgMHhmZmYpIHdhcyBiaWdnZXIgdGhhbiB0aGUgYW1vdW50IG9mIHBhZGRpbmcgYWRkZWQgYnkgQUxJR04oKSwKKyAgICBjYXVzaW5nIGZkdF9hZGRfbWVtX3JzdiB0byBmYWlsLgorCisgICAgRml4IGl0IGJ5IGFsaWduaW5nIGVuZCBhZGRyZXNzIChibG9iICsgc2l6ZSkgdG8gYSBwYWdlIGJvdW5kYXJ5IGluc3RlYWQuCisgICAgRm9yIGFsaWduZWQgZmR0J3MgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHdoYXQgd2UgaGFkIGJlZm9yZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CisKK2NvbW1pdCBmYWRhZDE1NzNmYjE2YzkwMDI1ZjA4YTI4NjFkNjA0N2QwOTNjYmE3CitBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KK0RhdGU6CUZyaSBKYW4gOSAwNDozODoxNyAyMDA5IC0wNTAwCisKKyAgICBuY2I6IHVzZSBzb2NrbGVuX3QKKworICAgIFRoZSByZWN2ZnJvbSgpIGZ1bmN0aW9uIHRha2VzIGEgc29ja2xlbl90LCBub3QgYW4gaW50LgorCisgICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorCitjb21taXQgZmM4M2M5MjczY2VjNmU2ZTU0MmY0YTBlYTNiNjUzYjdkMDUxM2ZmYQorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJU3VuIEphbiAxMSAxNjozNToxNiAyMDA5ICswMTAwCisKKyAgICBzaDogc2VyaWFsOiB1c2UgcmVhZHgvd3JpdGV4IGFjY2Vzc29ycworCisgICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisKK2NvbW1pdCA5ZTFmYTYyOGJkYjY0NzQ1ODExY2RkMjZjNGY5NTM4NDZjMDc2MTgwCitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglTdW4gSmFuIDExIDE2OjM1OjE1IDIwMDkgKzAxMDAKKworICAgIHNoOiBzZXJpYWw6IGNvZGluZyBzdHlsZSBjbGVhbnVwCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IGM5OTM1Yzk5MjU3NTkyMmI3ZWYxM2VlYzA2NTZlZDg2NjVkMzI0ZTMKK0F1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorRGF0ZToJU3VuIEphbiAxMSAxNzo0ODo1NiAyMDA5ICswOTAwCisKKyAgICBzaDogRml4IGNvbXBpbGUgZXJyb3Igb24gbG93bGV2ZWxfaW5pdCBmaWxlCisKKyAgICBsb3dsZXZlbF9pbml0IG9mIFNIIHdhcyBjb3JyZWN0ZWQgdG8gdXNlIHRoZSB3cml0ZS9yZWFkWFggbWFjcm8uCisgICAgSG93ZXZlciwgdGhlcmUgd2FzIGEgcHJvYmxlbSB0aGF0IHdhcyBub3QgYWJsZSB0byBiZSBjb21waWxlZCBwYXJ0aWFsbHkuCisgICAgVGhpcyBwYXRjaCBjb3JyZWN0ZWQgdGhpcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IGE1YjA0ZDAwYmZlYjk0MGM2MjIzMjk3MmNlNjQ0ZDUwYjQ1Nzk3ZjkKK0F1dGhvcjogS2llcmFuIEJpbmdoYW0gPGtpZXJhbmJpbmdoYW1AZ21haWwuY29tPgorRGF0ZToJVHVlIERlYyAzMCAwMToxNjowMyAyMDA4ICswMDAwCisKKyAgICBzaDogRml4IHVwIHJzazcyMDMgdGFyZ2V0IGZvciBvdXQgb2YgdHJlZSBidWlsZAorCisgICAgRml4IHVwIHJzazcyMDMgdGFyZ2V0IHRvIGJ1aWxkIHN1Y2Nlc3NmdWxseSB1c2luZyBvdXQtb2YtdHJlZSBidWlsZC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEtpZXJhbiBCaW5naGFtIDxrYmluZ2hhbUBtcGMtZGF0YS5jby51az4KKyAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisKK2NvbW1pdCBmN2U3OGYzYjc0YWFlOWNhY2EyOTk3YmFkODY1YTcyMzM4MzI2YzBhCitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglTYXQgRGVjIDIwIDE5OjI5OjQ5IDIwMDggKzAxMDAKKworICAgIHNoOiB1c2Ugd3JpdGV7OCwxNiwzMn0gaW4gYWxsIGxvd2xldmVsX2luaXQKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorCitjb21taXQgZTQ0MzA3Nzk2MjNhZjUwMGRlMWNlZTc4OTJjMzc5ZjA3ZWY1OTgxMworQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJU2F0IERlYyAyMCAxOToyOTo0OCAyMDA4ICswMTAwCisKKyAgICBzaDogbG93bGV2ZWxfaW5pdCBjb2Rpbmcgc3R5bGUgY2xlYW51cAorCisgICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisKK2NvbW1pdCA4NWNiMDUyZWU0MTY3NWNhMzYxZTZhNGM2OTQ1NWRjNzE1YzhmMmQ5CitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglTYXQgRGVjIDIwIDE1OjI3OjQ1IDIwMDggKzAxMDAKKworICAgIHNoOiB1cGRhdGUgc2gyL3NoMmEgdGltZXIgY29kaW5nIHN0eWxlCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IDFlMTVmZjk5OTMyMmU4MWFmNGMwYzBjNTQ4OTA4ZjM4OTQ0YmEzOWMKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CVNhdCBEZWMgMjAgMTU6MjU6MjIgMjAwOCArMDEwMAorCisgICAgc2g6IHVwZGF0ZSBzaCB0aW1lciBjb2Rpbmcgc3R5bGUKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorCitjb21taXQgMGUzZWNlMzM4MDFlMzc3YmU2N2ZmYTI5ZjA4MzQyMWFkODIwZjI4YgorQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorRGF0ZToJV2VkIEphbiAxNCAyMzoyNjowNSAyMDA5ICswMTAwCisKKyAgICBQcmVwYXJlIDIwMDkuMDEtcmMyCisKKyAgICBVcGRhdGUgQ0hBTkdFTE9HLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IGU5MmM5YTg2MGU0NGMxNDUxM2M4OTA5Y2U0Mjk5ZTI1M2E3NzVlZWIKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVdlZCBKYW4gMTQgMjI6MzU6MzAgMjAwOSArMDEwMAorCisgICAgY3B1L21wYzgyNHgvTWFrZWZpbGU6IGZpeCB3YXJuaW5nIHdpdGggcGFyYWxsZWwgYnVpbGRzCisKKyAgICBQYXJhbGxlbCBidWlsZHMgd291bGQgb2NjYXNpb25hbGx5IGlzc3VlIHRoaXMgYnVpbGQgd2FybmluZzoKKworCWxuOiBjcmVhdGluZyBzeW1ib2xpYyBsaW5rIGBjcHUvbXBjODI0eC9iZWRidWdfNjAzZS5jJzogRmlsZSBleGlzdHMKKworICAgIFVzZSAibG4gLXNmIiBhcyBxdWljayB3b3JrIGFyb3VuZCBmb3IgdGhlIGlzc3VlLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDNiYTYwNWQ0YmVlYzY0OTQzODUzOWU3ZGY5N2I1ZmVkYjI2NTkyZmIKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglGcmkgSmFuIDIgMTI6MTg6NDkgMjAwOSArMDEwMAorCisgICAgcHBjNHh4OiBBZGQgbG9hZHBjaSBjb21tYW5kIHRvIGVzZCdzIENQQ0k0MDUyIGFuZCBDUENJNDA1QUIgYm9hcmRzCisKKyAgICBUaGlzIHBhdGNoIGFkZHMgZXNkJ3MgbG9hZHBjaSBCU1AgY29tbWFuZCB0byBDUENJNDA1MiBhbmQKKyAgICBDUENJNDA1QUIgYm9hcmQuIFRoaXMgcmVxdWlyZXMgQ09ORklHX0NNRF9CU1AgYW5kIENPTkZJR19QUkFNLgorCisgICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgNjAwZmU0NmZiM2RhYjdmMDc2MDRmOTAwOTkwNGYzMTU4NDQxNTExNAorQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KK0RhdGU6CUZyaSBKYW4gMiAxMjoxODoxMiAyMDA5ICswMTAwCisKKyAgICBwcGM0eHg6IERpc2FibGUgcGNpIG5vZGUgaW4gZGV2aWNlIHRyZWUgb24gQ1BDSTQwNSBwY2kgYWRhcHRlcnMKKworICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IGY2YTFmNDkwZDIyNGM2MDBhMDkxMzdlNThkMTAyNmQxNTBiOGU2NzkKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglGcmkgSmFuIDIgMTI6MTc6MzYgMjAwOSArMDEwMAorCisgICAgcHBjNHh4OiBDbGVhbnVwIENQQ0k0MDUgYm9hcmQgY29kZQorCisgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgQ1BDSTQwNSBib2FyZCBzdXBwb3J0OgorICAgIC0gd3JhcCBsb25nIGxpbmVzCisgICAgLSB1bmlmaWNhdGlvbiBvZiBzcGFjZXMgaW4gZnVuY3Rpb24gY2FsbHMKKyAgICAtIHJlbW92ZSBkZWFkIGNvZGUKKworICAgIFVzZSBjb3JyZWN0IGlvIGFjY2Vzc29ycyBvbiBwZXJpcGhlcmFscy4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IGZjZWViYjQ1YTBiOTdlOTJmOTg4OTg2MWY4YzNiOWNiODg1ZTcwNmYKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglGcmkgSmFuIDIgMTI6MTY6MzUgMjAwOSArMDEwMAorCisgICAgcHBjNHh4OiBFbmFibGUgYXV0byBSUzQ4NSBtb2RlIG9uIFBMVTQwNSBib2FyZHMKKworICAgIFRoaXMgcGF0Y2ggdHVybnMgb24gdGhlIGF1dG8gUlM0ODUgbW9kZSBpbiB0aGUgMm5kIGV4dGVybmFsCisgICAgdWFydCBvbiBQTFU0MDUgYm9hcmRzLiBUaGlzIGlzIGEgc3BlY2lhbCBtb2RlIG9mIHRoZSB1c2VkCisgICAgRXhhciBYUjE2QzI4NTAgdWFydC4gQmVjYXVzZSB0aGVzZSBib2FyZHMgb25seSBoYXZlIGEgNDg1IHBoeXNpY2FsCisgICAgbGF5ZXIgY29ubmVjdGVkIGl0J3MgYSBnb29kIGlkZWEgdG8gdHVybiBpdCBvbiBieSBkZWZhdWx0LgorCisgICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBiNWY2NWRmYTlhYThlMDY4ZTYyYWJhNDczM2RjNGZkOTdiMWQ5YmY2CitBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgSmFuIDEzIDE2OjI5OjI4IDIwMDkgLTA1MDAKKworICAgIFNvbWUgY2hhbmdlcyBvZiBUTEIgZW50cnkgc2V0dGluZyBmb3IgTVBDODU3MkRTCisKKyAgICAtIE1vdmUgdGhlIFRMQiBlbnRyeSBvZiBQSVhJU19CQVNFIGZyb20gVExCMCB0byBUTEIxWzhdLCBiZWNhdXNlIGluIENBTVAgbW9kZSwKKyAgICBhbGwgdGhlIFRMQjAgZW50cmllcyB3aWxsIGJlIGludmFsaWRhdGVkIGFmdGVyIGNwdTEgYnJpbmdzIHVwIGtlcm5lbCwgdGh1cyBjcHUwCisgICAgY2FuIG5vdCBhY2Nlc3MgUElYSVNfQkFTRSBhbnltb3JlIChhbnkgYWNjZXNzIHdpbGwgY2F1c2UgRGF0YVRMQkVycm9yIGV4Y2VwdGlvbikKKworICAgIC0gU2V0IENPTkZJR19TWVNfRERSX1RMQl9TVEFSVCB0byA5IGZvciBNUEM4NTcyRFMgYm9hcmQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgOTUwMjY0MzE3ZWI5NTk0YjJiNWVlMmZiNjUyMDYyMDBhMWM2MDA3YQorQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgorRGF0ZToJVHVlIEphbiAxMyAxNjoyOToyMiAyMDA5IC0wNTAwCisKKyAgICBDaGFuZ2UgRERSIHRsYiBzdGFydCBlbnRyeSB0byBDT05GSUcgcGFyYW0gZm9yIDg1eHgKKworICAgIFNvIHRoYXQgd2UgY2FuIGxvY2F0ZSB0aGUgRERSIHRsYiBzdGFydCBlbnRyeSB0byB0aGUgdmFsdWUgb3RoZXIgdGhhbiA4LiBCeQorICAgIGRlZmF1bHQsIGl0IGlzIHN0aWxsIDguCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgNmQzYTEwZjczZWNlN2ZmYjczNjg5MGMxMGUwMjMyMjI2MTJhNGFhMAorQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CitEYXRlOglGcmkgSmFuIDkgMTY6MDI6MzUgMjAwOSArMDgwMAorCisgICAgQ2hhbmdlIFBDSUUxJjIgZGVjaWlkZSBsb2dpYyBvbiBNUEM4NTQ0RFMgYm9hcmQgbW9yZSByZWFkYWJsZQorCisgICAgVGhlIElPIHBvcnQgc2VsZWN0aW9uIGZvciBNUEM4NTQ0RFMgYm9hcmQ6CisgICAgIFBvcnQJCQljZmdfaW9fcG9ydHMKKyAgICAgUENJRTEJCTB4MiwgMHgzLCAweDQsIDB4NSwgMHg2LCAweDcKKyAgICAgUENJRTIJCTB4NCwgMHg1LCAweDYsIDB4NworICAgICBQQ0lFMwkJMHg2LCAweDcKKyAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBQQ0lFMTIgYW5kIFBDSUUyIGxvZ2ljIG1vcmUgcmVhZGFibGUuCisgICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgMDI4ZTExNjgxMWQyOGEwMzE2NjBmMWFkOWUyMGFjMTI5M2IzYzVjNworQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CitEYXRlOglGcmkgSmFuIDkgMTY6MDE6NTIgMjAwOSArMDgwMAorCisgICAgUENJRTIgYW5kIFBDSUUzIGFyZSBkZWNpZGVkIGJ5IGNvcnJlc3BvbmluZyBiaXQgaW4gZGV2ZGlzciBpbnN0ZWFkIG9mIFBDSUUxIGJpdAorCisgICAgUENJRTIgYW5kIFBDSUUzIHNob3VsZCBiZSBkZWNpZGVkIGJ5IGNvcnJlc3BvbmluZyBiaXQgaW4gZGV2ZGlzciBpbnN0ZWFkIG9mCisgICAgUENJRTEgYml0LgorICAgIE9uIE1QQzg1NzJEUyBib2FyZCwgUENJRSByZWZlcnMgdG8gUENJRTEuCisgICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgOWFmYzJlZjAzMDdhZWNmNTI0ODJkZjY3YzMxYjc1ZDVmOWU2NmI0NworQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CitEYXRlOglGcmkgSmFuIDkgMTY6MDA6NTUgMjAwOSArMDgwMAorCisgICAgRml4IElPIHBvcnQgc2VsZWN0aW9uIGlzc3VlIG9uIE1QQzg1NDREUyBhbmQgTVBDODU3MkRTIGJvYXJkcworCisgICAgVGhlIElPIHBvcnQgc2VsZWN0aW9uIGlzIG5vdCBjb3JyZWN0IG9uIE1QQzg1NzJEUyBhbmQgTVBDODU0NERTIGJvYXJkLgorICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCisgICAgIEZvciBNUEM4NTcyCisgICAgIFBvcnQJCQljZmdfaW9fcG9ydHMKKyAgICAgUENJRTEJCTB4MiwgMHgzLCAweDcsIDB4YiwgMHhjLCAweGYKKyAgICAgUENJRTIJCTB4MywgMHg3CisgICAgIFBDSUUzCQkweDcKKworICAgIEZvciBNUEM4NTQ0CisgICAgUG9ydAkJCWNmZ19pb19wb3J0cworICAgIFBDSUUxCQkweDIsIDB4MywgMHg0LCAweDUsIDB4NiwgMHg3CisgICAgUENJRTIJCTB4NCwgMHg1LCAweDYsIDB4NworICAgIFBDSUUzCQkweDYsIDB4NworICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDNlM2ZmZmUzYmFmM2JlZmRlMjg3ZmVjMWZjYmZlNTUwNTJmYjg5NDYKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJV2VkIERlYyAzIDIyOjM2OjQ0IDIwMDggLTA2MDAKKworICAgIG1wYzg2MTBocGNkOiBGaXggUENJIG1hcHBpbmcgY29uY2VwdHMKKworICAgIFJlbmFtZSBfQkFTRSB0byBfQlVTLCBhcyBpdCdzIGFjdHVhbGx5IGEgUENJIGJ1cyBhZGRyZXNzLAorICAgIHNlcGFyYXRlIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBpbnRvIF9WSVJUIGFuZCBfUEhZUywKKyAgICBhbmQgdXNlIGVhY2ggYXBwb3ByaWF0ZWx5LglUaGlzIG1ha2VzIHRoZSBjb2RlIGVhc2llciB0byByZWFkCisgICAgYW5kIHVuZGVyc3RhbmQsIGFuZCBmYWNpbGl0YXRlcyBtYXBwaW5nIGNoYW5nZXMgZ29pbmcgZm9yd2FyZC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IDc5ZTQzNmNhZDNiNGE3ZGI4ODQwOGMzZjA1MTc1MDI4ZjMwZDcwMGQKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJV2VkIERlYyAzIDIyOjM2OjI2IDIwMDggLTA2MDAKKworICAgIHNiYzg2NDFkOiBGaXggUENJIG1hcHBpbmcgY29uY2VwdHMKKworICAgIFJlbmFtZSBfQkFTRSB0byBfQlVTLCBhcyBpdCdzIGFjdHVhbGx5IGEgUENJIGJ1cyBhZGRyZXNzLAorICAgIHNlcGFyYXRlIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBpbnRvIF9WSVJUIGFuZCBfUEhZUywKKyAgICBhbmQgdXNlIGVhY2ggYXBwb3ByaWF0ZWx5LglUaGlzIG1ha2VzIHRoZSBjb2RlIGVhc2llciB0byByZWFkCisgICAgYW5kIHVuZGVyc3RhbmQsIGFuZCBmYWNpbGl0YXRlcyBtYXBwaW5nIGNoYW5nZXMgZ29pbmcgZm9yd2FyZC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IGE5ZjNhY2JjZDA3ZGE3MmI1NDQ2Y2U1NTc1MzFhM2VkOGI4YmVmZjAKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CU1vbiBKYW4gMTIgMTQ6NTA6MzUgMjAwOSArMDEwMAorCisgICAgTVBDODZ4eDogZml4IGJ1aWxkIHdhcm5pbmdzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgMDMyYTFjOTM0ZWY0ZGMwMDMyODFmNTczMDJiNmU2OTMwNjJjMTg2OAorQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CitEYXRlOglNb24gSmFuIDUgMTY6MDk6NDQgMjAwOSAtMDUwMAorCisgICAgYmY1Mzctc3RhbXAvbmFuZDogZml4IGJvYXJkX25hbmRfaW5pdCBwcm90b3R5cGUKKworICAgIFRoZSBib2FyZF9uYW5kX2luaXQoKSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGFuIGludCwgbm90IHZvaWQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisKK2NvbW1pdCA2ODdmOTUyZTQxMTk1OTRhYjkxM2JlMTFjOTBmN2YwMThjMmE3YTc5CitBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KK0RhdGU6CVRodSBEZWMgMTEgMDc6MDQ6NDggMjAwOCAtMDUwMAorCisgICAgQmxhY2tmaW46IGRyb3AgQ09ORklHX1NQSSBoYW5kbGluZyBpbiBib2FyZCBpbml0CisKKyAgICBUaGUgZWVwcm9tIFNQSSBpbml0IGZ1bmN0aW9ucyBhcmUgZHVwbGljYXRlZCBhcyB0aGUgY29tbW9uIGNvZGUgYWxyZWFkeQorICAgIGV4ZWN1dGVzIHRoZXNlIGZvciB1cy4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KKworY29tbWl0IGU3ZTY4NGIxMGQ3M2EzMDM5MDIyMDg1OTRjN2MzZTdlMGQ3NTMyODIKK0F1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorRGF0ZToJRnJpIE9jdCAyNCAxNzo1MTo1NyAyMDA4IC0wNDAwCisKKyAgICBCbGFja2ZpbjogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIHdpdGggbGRzY3JpcHRzCisKKyAgICBNYW55IG9mIHRoZSBCbGFja2ZpbiBib2FyZCBsaW5rZXIgc2NyaXB0cyBhcmUgcHJlcHJvY2Vzc2VkLCBzbyBtYWtlIHN1cmUgd2UKKyAgICBvdXRwdXQgdGhlIGxpbmtlciBzY3JpcHQgaW50byB0aGUgYnVpbGQgdHJlZSByYXRoZXIgdGhhbiB0aGUgc291cmNlIHRyZWUuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisKK2NvbW1pdCBiOWVlY2MzNDJmNzY3YjUwZTE0NzZmYmMxYWFkN2Q4OGRkNGNlNWViCitBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KK0RhdGU6CUZyaSBPY3QgMjQgMTc6NDg6NTQgMjAwOCAtMDQwMAorCisgICAgQmxhY2tmaW46IGZpeCBsaW5rZXIgc2NyaXB0cyB0byB3b3JrIHdpdGggLS1nYy1zZWN0aW9ucworCisgICAgTWFrZSBzdXJlIGFsbCAudGV4dCBzZWN0aW9ucyBnZXQgcHVsbGVkIGluIGFuZCB0aGUgZW50cnkgcG9pbnQgaXMgcHJvcGVybHkKKyAgICByZWZlcmVuY2VkIHNvIHRoZXkgZG9uJ3QgZ2V0IGRpc2NhcmRlZCB3aGVuIGxpbmtpbmcgd2l0aCAtLWdjLXNlY3Rpb25zLgorCisgICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorCitjb21taXQgNTA5ZmM1NTNiYzYwODdhNmY3MDViM2JmNTJmMzk1MGQ3ZDFlYWE1OAorQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CitEYXRlOglTYXQgT2N0IDExIDIwOjQ1OjQ0IDIwMDggLTA0MDAKKworICAgIEJsYWNrZmluOiBzZXQgcHJvcGVyIExEUkZMQUdTIGZvciBwYXJhbGxlbCBib290aW5nIExEUnMKKworICAgIEluIG9yZGVyIHRvIGJvb3QgYW4gTERSIG91dCBvZiBwYXJhbGxlbCBmbGFzaCwgdGhlIGxkciB1dGlsaXR5IG5lZWRzIGEgZmV3CisgICAgZmxhZ3MgdG8gdGVsbCBpdCB0byBnZW5lcmF0ZSB0aGUgcmlnaHQgaGVhZGVyLgorCisgICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorCitjb21taXQgM2RkOTM5NWEwZDdjZTY5YTMzNWQwZTc0M2MwNGI5Y2FlZGQ2ODFkMworQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJVHVlIEphbiA2IDIxOjQxOjU5IDIwMDkgKzAxMDAKKworICAgIGF0OTFybTkyMDA6IG1vdmUgZGVmaW5lIGZyb20gbG93bGV2ZWxfaW5pdCB0byBoZWFkZXIKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCA4YTQ4Njg2ZmFjMjAzMDI4Nzc2NWYxOTcwZWEwNDZiZDU3MzRiNzMzCitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglTYXQgSmFuIDMgMTc6MjI6MjYgMjAwOSArMDEwMAorCisgICAgbTUwMXNrOiBtb3ZlIHRvIHRoZSBjb21tb24gbWVtb3J5IHNldHVwCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgZDQ4MWM4MGQ3OGY5NTQxMzNjMDM1ZGFlNmM3ZDIyZGUzNjI1Nzk1ZAorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJU2F0IEphbiAzIDE3OjIyOjI1IDIwMDkgKzAxMDAKKworICAgIGF0OTFybTkyMDA6IHJlbmFtZSBsb3dsZXZlbCBpbml0IHZhbHVlIHRvIENPTkZJR19TWVNfCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgNGUxNzBiMTY2MjUyOTFhYTEwZDBkOWFiYzNmMzRlOGE1OTQ1ZDE1NworQXV0aG9yOiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KK0RhdGU6CVR1ZSBKYW4gNiAyMToxMzoxNCAyMDA5ICswMTAwCisKKyAgICBhdDkxOiBhZGQgYXQ5MXNhbTl4ZWVrIGJvYXJkIHN1cHBvcnQKKworICAgIEF0OTFzYW05eGUgaXMgYmFzaWNhbGx5IGFuIGF0OTFzYW05MjYwIHdpdGggZW1iZWRkZWQgZmxhc2guIFdlIGNhbiBtYW5hZ2UKKyAgICBpdCBhcyBhbm90aGVyIGVudHJ5IGZvciBhdDkxc2FtOTI2MCBpbiB0aGUgTWFrZWZpbGUuCisKKyAgICBDaGVjayBkb2N1bWVudGF0aW9uIGF0IDoKKyAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcHJvZHVjdHMvcHJvZHVjdF9jYXJkLmFzcD9wYXJ0X2lkPTQyNjMKKworICAgIFNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVycmVAYXRtZWwuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCA5ZmZkNTNkYjg3MGE3ZGExMzRmOWExYWU3Njg5NGE2YjMxMjM3YmU1CitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglUdWUgSmFuIDYgMjE6MTU6NTcgMjAwOSArMDEwMAorCisgICAgZml4IGJtcF9sb2dvLmggbWFrZSBkZXBlbmRlbmNpZXMgdG8gYWxsb3cgcGFyYWxsZWwgYnVpbGQKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCBlMTJkOWE4ZmI0OGQyNDE3NmVmZmZjY2MwNzJiNDQ1ZTYwYTNhZmU0CitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglTYXQgSmFuIDMgMTc6MjI6MjQgMjAwOSArMDEwMAorCisgICAgYXQ5MTogRml4IEF0bWVsJ3MgYXQ5MXNhbTkgYm9hcmRzIG91dCBvZiB0cmVlIGJ1aWxkCisKKyAgICBpbnRyb2R1Y2VkIGluIGNvbW1pdCA4OWE3YTg3ZjA4NGMKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCAwNjY4MjM2YmFmYWExYzExYzUyMTY1MmEyZmFjZWJjNzRiZWVjYmYwCitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDMwIDIyOjU2OjExIDIwMDggKzAxMDAKKworICAgIFJFQURNRTogdXBkYXRlIG1haWxpbmcgbGlzdCBuYW1lIGFuZCBoaXRzIHRvIHBhdGNoIHN1Ym1pc3Npb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgZDkwMTFmOWI3NTU2MWEwYmQ5MjU0OTM0YzJiYjJiYzc5OWQ0ZjY0NQorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJVHVlIERlYyAyMyAxNjozMjowMSAyMDA4IC0wNjAwCisKKyAgICA4NXh4OiBFbmFibGUgaW5ib3VuZCBQQ0kgY29uZmlnIGN5Y2xlcyBmb3IgWC1FUyBib2FyZHMgY2xlYW51cAorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKworY29tbWl0IDFmMDNjYmZhZTIyMWIyNGJhMTM0MWEwYTNmNjJmZjAxYzVjODc0ZGYKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CVR1ZSBEZWMgMjMgMTY6MzI6MDAgMjAwOCAtMDYwMAorCisgICAgWFBlZGl0ZTUyMDAgYm9hcmQgc3VwcG9ydCBjbGVhbnVwCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorCitjb21taXQgZmVhOTFlZGVlOGFlMDI5NWUzYzMwYjFmZjU0NGRmNTFmNGQ2NjhlMQorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJVHVlIERlYyAyIDIxOjU4OjA0IDIwMDggKzAxMDAKKworICAgIHVzYl9rYmQ6IGZpeCB1c2Jfa2JkX2RlcmVnaXN0ZXIgd2hlbiBERVZJQ0VfREVSRUdJU1RFUiBub3QgZW5hYmxlCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KKworY29tbWl0IGFkYTU5MWQyYTBlY2ZmNWY5YmM1ZWQxZWJmMzEwZjQzOWMzZDBhMjgKK0F1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgRGVjIDMgMTU6MTY6MzcgMjAwOCAtMDgwMAorCisgICAgbXBjOFs1Nl14eDogUHV0IGxvY2FsYnVzIGNsb2NrIGluIHN5c2luZm8gYW5kIGdkCisKKyAgICBDdXJyZW50bHkgTVBDODV4eCBhbmQgTVBDODZ4eCBib2FyZHMganVzdCBjYWxjdWxhdGUgdGhlIGxvY2FsYnVzIGZyZXF1ZW5jeQorICAgIGFuZCBwcmludCBpdCBvdXQsIGJ1dCBkb24ndCBzYXZlIGl0LgorCisgICAgVGhpcyBjaGFuZ2VzIHdoZXJlIGl0cyBjYWxjdWxhdGVkIGFuZCBzdG9yZWQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlCisgICAgQ1BVLCBDQ0IsIFRCLCBhbmQgRERSIGZyZXF1ZW5jaWVzIGFuZCB0aGUgTVBDODN4eCBsb2NhbGJ1cyBjbG9jay4KKworICAgIFRoZSBsb2NhbGJ1cyBmcmVxdWVuY3kgaXMgYWRkZWQgdG8gc3lzaW5mbyBhbmQgY2FsY3VsYXRlZCB3aGVuIHN5c2luZm8gaXMKKyAgICBzZXQgdXAsIGluIGNwdS9tcGM4WzU2XXh4L3NwZWVkLmMsIHRoZSBzYW1lIGFzIHRoZSBvdGhlciBmcmVxdWVuY2llcyBhcmUuCisKKyAgICBnZXRfY2xvY2tzKCkgY29waWVzIHRoZSBmcmVxdWVuY3kgaW50byB0aGUgZ2xvYmFsIGRhdGEsIGFzIHRoZSBvdGhlcgorICAgIGZyZXF1ZW5jaWVzIGFyZSwgaW50byBhIG5ldyBmaWVsZCB0aGF0IGlzIG9ubHkgZW5hYmxlZCBmb3IgTVBDODV4eCBhbmQKKyAgICBNUEM4Nnh4LgorCisgICAgY2hlY2tjcHUoKSBpbiBjcHUvbXBjOFs1Nl14eC9jcHUuYyB3aWxsIHByaW50IG91dCB0aGUgbG9jYWwgYnVzIGZyZXF1ZW5jeQorICAgIGZyb20gc3lzaW5mbywgbGlrZSB0aGUgb3RoZXIgZnJlcXVlbmNpZXMsIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgaXQgb24gdGhlCisgICAgc3BvdC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgorICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgorCitjb21taXQgOTg2M2Q2YWNhMTE0MDVlMWUwZDhhYmEyMDQ1ZDc4YWVlYzRkNGVlNworQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVdlZCBEZWMgMyAxNToxNjozNiAyMDA4IC0wODAwCisKKyAgICBtcGM4Nnh4OiBEb3VibGUgbG9jYWwgYnVzIGNsb2NrIGRpdmlkZXIKKworICAgIFRoZSBsb2NhbCBidXMgY2xvY2sgZGl2aWRlciBzaG91bGQgYmUgZG91YmxlZCBmb3IgYm90aCA4NjEwIGFuZCA4NjQxLgorCisgICAgU2lnbmVkLW9mZi1ieTogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CisgICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisgICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCA0NDZjMzgxZTNlMTZmMTk4NTdiNzJlYTBkMDYyNDEyNjdiOGI5ZDU4CitBdXRob3I6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIERlYyAzIDE1OjE2OjM1IDIwMDggLTA4MDAKKworICAgIG1wYzg1Njg6IERvdWJsZSBsb2NhbCBidXMgY2xvY2sgZGl2aWRlcgorCisgICAgVGhlIGNsb2NrIGRpdmlkZXIgZm9yIHRoZSBNUEM4NTY4IGxvY2FsIGJ1cyBzaG91bGQgYmUgZG91YmxlZCwgbGlrZSB0aGUKKyAgICBvdGhlciBuZXdlciBNUEM4NXh4IGNoaXBzLgorCisgICAgU2luY2UgdGhlcmUgYXJlIG5vdyBtb3JlIGNoaXBzIHdpdGggYSAyeCBkaXZpZGVyIHRoYW4gYSAxeCwgYW5kIGFueSBuZXcKKyAgICA4NXh4IGNoaXBzIHdpbGwgcHJvYmFibHkgYmUgMngsIGludmVydCB0aGUgc2Vuc2Ugb2YgdGhlICNpZiBzbyB0aGF0IGl0CisgICAgbGlzdHMgdGhlIDF4IGNoaXBzIGluc3RlYWQgb2YgdGhlIDJ4IG9uZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KKyAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKyAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGY1MWYwN2ViNThmYWQxMmRlOTI5NGJhNGVlNmMwOWEwZGRlYWVlMDMKK0F1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVR1ZSBEZWMgMTYgMTI6MDk6MjcgMjAwOCArMDgwMAorCisgICAgODV4eDogRml4IHRoZSBib290IHdpbmRvdyBpc3N1ZQorCisgICAgSWYgb25lIGN1c3RvbSBib2FyZCBpcyB1c2luZyB0aGUgOE1CIGZsYXNoLCBpdCBpcyBzZXQKKyAgICBhcyBGTEFTSF9CQVNFID0gMHhlZjAwMDAwMCwgVEVYVF9CQVNFID0gMHhlZjc4MDAwMC4KKyAgICBUaGUgY3VycmVudCBzdGFydC5TIGNvZGUgd2lsbCBiZSBicm9rZW4gYXQgc3dpdGNoX2FzLgorCisgICAgSXQgaXMgYmVjYXVzZSB0aGUgVExCMVsxNV0gaXMgc2V0IGFzIDE2TUIgcGFnZSBzaXplLAorICAgIEVQTiA9IFRFWFRfQkFTRSAmIDB4ZmYwMDAwMDAsIFJQTiA9IDB4ZmYwMDAwMDAuCisKKyAgICBGb3IgdGhlIDhNQiBmbGFzaCBjYXNlLCB0aGUgRVBOID0gMHhlZnh4eHh4eCwKKyAgICBSUE4gPSAweGZmeHh4eHh4LiBBc3N1bWUgdGhlIHZpcnQgYWRkcmVzcyBvZiBzd2l0Y2hfYXMKKyAgICBpcyAweGVmN2ZmMThjLCB0aGUgcmVhbCBhZGRyZXNzIG9mIHRoZSBpbnN0cnVjdGlvbiBhdAorICAgIHN3aXRjaF9hcyBzaG91bGQgYmUgMHhmZjdmZjE4Yy4gdGhlIDB4ZmY3ZmYxOGMgaXMgb3V0CisgICAgb2YgdGhlIHJhbmdlIG9mIHRoZSBkZWZhdWx0IDhNQiBib290IExBVyB3aW5kb3cKKyAgICAweGZmODAwMDAwIC0gMHhmZmZmZmZmZi4KKworICAgIFNvIHdoZW4gd2Ugc3dpdGNoIHRvIEFTMSBhZGRyZXNzIHNwYWNlIGF0IHN3aXRjaF9hcywKKyAgICB0aGUgY29yZSBjYW4ndCBmZXRjaCB0aGUgaW5zdHJ1Y3Rpb24gYXQgc3dpdGNoX2FzIGFueQorICAgIG1vcmUuIEl0IHdpbGwgY2F1c2UgYnJva2VuIGlzc3VlLgorCisgICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDU4ZGE4ODkwZDVmYmQwNzQ3NDYwMzc3MjJhNDIzZGU5YWM0MDg2MTYKK0F1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CitEYXRlOglUaHUgRGVjIDExIDE1OjQ3OjUwIDIwMDggLTA1MDAKKworICAgIHNiYzg1NDg6IHVzZSBwcm9wZXIgUEhZIGFkZHJlc3MKKworICAgIFRoZSB2YWx1ZXMgZ2l2ZW4gZm9yIHRoZSBQSFkgYWRkcmVzcyB3ZXJlIHdyb25nLCBzbyB0aGUgY29kZQorICAgIHJlYWQgbm8gdmFsaWQgUEhZIElELCBhbmQgZmVsbCB0aHJvdWdoIHRvIHRoZSBnZW5lcmljIFBIWQorICAgIHN1cHBvcnQsIHdoaWNoIHdvdWxkIHdvcmsgb24gMTAwME0gYnV0IHdvdWxkIG5vdCBhdXRvIG5lZ290aWF0ZQorICAgIGRvd24gdG8gMTAwTSBvciAxME0uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KKworY29tbWl0IGFkMjJmOTI3M2M2ZjI0ZmJmYTkxN2U4Njc2ODBlOTY4OGUwYzU5YzUKK0F1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CitEYXRlOglUaHUgRGVjIDExIDE1OjQ3OjUxIDIwMDggLTA1MDAKKworICAgIHNiYzg1NDg6IGVuYWJsZSBjb21tYW5kIGxpbmUgZWRpdGluZyBieSBkZWZhdWx0LgorCisgICAgTGV0cyBtYWtlIHRoaW5ncyBhIGJpdCBtb3JlIHVzZXIgZnJpZW5kbHkuCUl0IGlzbid0IDE5ODUgYW55bW9yZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgorCitjb21taXQgYmQ5MzEwNWZhMTcxMTg0YTcxY2E4YjIyYmUwM2RjMjcwNWNmYmQzZgorQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KK0RhdGU6CVRodSBEZWMgMTEgMTU6NDc6NDkgMjAwOCAtMDUwMAorCisgICAgc2JjODU0ODogZG9uJ3QgZW5hYmxlIHRoZSAzcmQgYW5kIDR0aCBlVFNFQworCisgICAgVGhlc2UgaW50ZXJmYWNlcyBkb24ndCBoYXZlIHVzYWJsZSBjb25uZWN0b3JzIG9uIHRoZSBib2FyZCwgc28gZG9uJ3QKKyAgICBib3RoZXIgZW51bWVyYXRpbmcgb3IgY29uZmlndXJpbmcgdGhlbS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgorCitjb21taXQgMTgxYTM2NTAxMTM4ODM3Mjg5Mjc5MjhiM2FjODFhZDZkYWRlNGIyYworQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIERlYyAzIDEwOjA4OjE5IDIwMDggLTA1MDAKKworICAgIFNldCBJVlBSIHRvIGtlbnJlbCBlbnRyeSBwb2ludCBpbiBzZWNvbmQgY29yZSBib290IHBhZ2UKKworICAgIEFzc3VtaW5nIHRoZSBPU2VzIGV4Y2VwdGlvbiB2ZWN0b3JzIHN0YXJ0IGZyb20gdGhlIGJhc2Ugb2Yga2VybmVsIGFkZHJlc3MsIGFuZAorICAgIHRoZSBrZXJuZWwgcGh5c2ljYWwgc3RhcnRpbmcgYWRkcmVzcyBjYW4gYmUgcmVsb2NhdGVkIHRvIGFuIG5vbi16ZXJvIGFkZHJlc3MuCisgICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBzZWNvbmQgY29yZSB0byBoYXZlIGEgdmFsaWQgSVZQUiBmb3IgZGVidWdnZXIgYmVmb3JlCisgICAga2VybmVsIHNldHRpbmcgSVZQUiBpbiBDQU1QIG1vZGUuIE90aGVyd2lzZSwgSVZQUiBpcyAweDAgYW5kIGl0IGlzIG5vdCBhIHZhbGlkCisgICAgdmFsdWUgZm9yIHNlY29uZCBjb3JlIHdoaWNoIHJ1bnMga2VybmVsIGF0IGRpZmZlcmVudCBwaHlzaWNhbCBhZGRyZXNzIG90aGVyCisgICAgdGhhbiAweDAuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgYTVkMjEyYTI2M2M1OGNjNzQ2NDgxYmYxZmM4Nzg1MTA1MzNjZTdkNgorQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVdlZCBEZWMgMyAxNToxNjozNCAyMDA4IC0wODAwCisKKyAgICBtcGM4eHh4OiBMQ1JSW0NMS0RJVl0gaXMgc29tZXRpbWVzIGZpdmUgYml0cworCisgICAgT24gbmV3ZXIgQ1BVcywgODUzNiwgODU3MiwgYW5kIDg2MTAsIHRoZSBDTEtESVYgZmllbGQgb2YgTENSUiBpcyBmaXZlIGJpdHMKKyAgICBpbnN0ZWFkIG9mIGZvdXIuCisKKyAgICBJbiBvcmRlciB0byBhdm9pZCBhbiBpZmRlZiwgTENSUl9DTEtESVYgaXMgc2V0IHRvIDB4MWYgb24gYWxsIHN5c3RlbXMuICBJdAorICAgIHNob3VsZCBiZSBzYWZlIGFzIHRoZSBmaWZ0aCBiaXQgd2FzIGRlZmluZWQgYXMgcmVzZXJ2ZWQgYW5kIHNldCB0byAwLgorCisgICAgQ29kZSB0aGF0IHdhcyB1c2luZyBhIGhhcmQgY29kZWQgMHgwZiBpcyBjaGFuZ2VkIHRvIHVzZSBMQ1JSX0NMS0RJVi4KKworICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgorICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgorCitjb21taXQgNThlYzQ4NjZlZDkxNmM3ZTQyMmY1MTA3YmIyN2IwODIyMDg0NzI4ZQorQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVdlZCBEZWMgMyAxNToxNjozOCAyMDA4IC0wODAwCisKKyAgICBtcGM4WzU2XXh4OiBQdXQgbG9jYWxidXMgY2xvY2sgaW4gZGV2aWNlIHRyZWUKKworICAgIEV4cG9ydCB0aGUgbG9jYWxidXMgZnJlcXVlbmN5IGluIHRoZSBkZXZpY2UgdHJlZSwgdGhlIHNhbWUgd2F5IHRoZSBDUFUsIFRCLAorICAgIENDQiwgYW5kIHZhcmlvdXMgb3RoZXIgZnJlcXVlbmNpZXMgYXJlIGV4cG9ydGVkIGluIHRoZWlyIHJlc3BlY3RpdmUgZGV2aWNlCisgICAgdHJlZSBub2Rlcy4KKworICAgIFNvbWUgbG9jYWxidXMgZGV2aWNlcyBuZWVkIHRoaXMgaW5mb3JtYXRpb24gdG8gYmUgcHJvZ3JhbWVkIGNvcnJlY3RseSwgc28KKyAgICBpdCBtYWtlcyBzZW5zZSB0byBleHBvcnQgaXQgYWxvbmcgd2l0aCB0aGUgb3RoZXIgZnJlcXVlbmNpZXMuCisKKyAgICBVbmZvcnR1bmF0ZWx5LCB3aGVuIHNvbWVvbmUgd3JvdGUgdGhlIGxvY2FsYnVzIGR0cyBiaW5kaW5ncywgdGhleSBkaWRuJ3QKKyAgICBib3RoZXIgdG8gZGVmaW5lIHdoYXQgdGhlICJjb21wYXRpYmxlIiBwcm9wZXJ0eSBzaG91bGQgYmUuCVNvIGl0IHNlZW1zIG5vCisgICAgb25lIHdhcyBxdWl0ZSBzdXJlIHdoYXQgdG8gcHV0IGluIHRoZWlyIGR0cyBmaWxlcy4KKworICAgIEJhc2VkIG9uIGN1cnJlbnQgZXhpc3RpbmcgZHRzIGZpbGVzIGluIHRoZSBrZXJuZWwgc291cmNlLCBJJ3ZlIHVzZWQKKyAgICAiZnNsLHBxMy1sb2NhbGJ1cyIgYW5kICJmc2wsZWxiYyIgZm9yIE1QQzg1eHgsIHdoaWNoIGFyZSB1c2VkIGJ5IGFsbW9zdCBhbGwKKyAgICBvZiB0aGUgODV4eCBkZXZpY2VzLCBhbmQgYXJlIGxvb2tlZCBmb3IgYnkgdGhlIExpbnV4IGNvZGUuCVRoZSBlTEJDIGlzCisgICAgYXBwYXJlbnRseSBub3QgZW50aXJlbHkgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHRoZSBwcTMgTEJDIGFuZCBzbyBlTEJDCisgICAgZXF1aXBwZWQgcGxhdGZvcm1zIGxpa2UgODU3MiB3b24ndCB1c2UgcHEzLWxvY2FsYnVzLgorCisgICAgRm9yIE1QQzg2eHgsIEkndmUgdXNlZCAiZnNsLGVsYmMiIHdoaWNoIGlzIHVzZWQgYnkgc29tZSBvZiB0aGUgODZ4eCBzeXN0ZW1zCisgICAgYW5kIGlzIGFsc28gbG9va2VkIGZvciBieSB0aGUgTGludXggY29kZS4gIE9uIE1QQzg2NDEsIEkndmUgYWxzbyB1c2VkCisgICAgImZzbCxtcGM4NjQxLWxvY2FsYnVzIiBhcyBpdCBpcyBhbHNvIGNvbW1vbmx5IHVzZWQgaW4gZHRzIGZpbGVzLCBzb21lIG9mCisgICAgd2hpY2ggZG9uJ3QgdXNlICJmc2wsZWxiYyIgb3IgYW55IG90aGVyIGFjY2VwdGFibGUgbmFtZSB0byBtYXRjaCBvbi4KKworICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgorICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgorCitjb21taXQgOWQ5NGFmZjY5OWVlZDM4YjI4NjgxNGZjYmIzMzVmM2ViODUxNmEwZQorQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJVHVlIERlYyAxNiAxNDo1OToyMiAyMDA4IC0wNjAwCisKKyAgICBOQU5EIEZTTCBlbGJjOiBVc2UgdmlydF90b19waHlzIHRvIGRldGVybWluZSB3aGljaCBiYW5rIGlzIGluIHVzZQorCisgICAgVGhlIGN1cnJlbnQgY29kZSB0aGF0IGRldGVybWluZXMgd2hpY2ggYmFuay9jaGlwc2VsZWN0IGlzIHVzZWQgZm9yIGEKKyAgICBnaXZlbiBOQU5EIGluc3RhbmNlIG9ubHkgd29ya2VkIGZvciAzMi1iaXQgYWRkcmVzc2VzIGFuZCBhc3N1bWVkCisgICAgYSAxOjEgbWFwcGluZy4gIFRoaXMgYnJlYWtzIGluIDM2LWJpdCBwaHlzaWNhbCBjb25maWdzLgorCisgICAgVGhlIHByb3BlciB3YXkgdG8gaGFuZGxlIHRoaXMgaXMgdG8gdXNlIHRoZSB2aXJ0X3RvX3BoeXMoKSBhbmQKKyAgICBCUl9QSFlTX0FERFIoKSByb3V0aW51ZXMgdG8gbWF0Y2ggdGhlIDM0LWJpdCBsYmMgYnVzIGFkZHJlc3MKKyAgICB3aXRoIHRoZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRoZSBOQU5EIGNvZGUgdXNlcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisgICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgorCitjb21taXQgNzdjODExNWIxZjE4NzE4MTE2MzNlYWU3N2E1YTcwMGZhYzFmMGU1MAorQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJVHVlIERlYyAxNiAxNDo1OToyMSAyMDA4IC0wNjAwCisKKyAgICBwcGM6IFVzZSBhZGRybWFwIGluIHZpcnRfdG9fcGh5cyBhbmQgbWFwX3BoeXNtZW0uCisKKyAgICBJZiB3ZSBoYXZlIGFkZHIgbWFwIHN1cHBvcnQgZW5hYmxlZCB1c2UgdGhlIG1hcHBpbmcgZnVuY3Rpb25zIHRvCisgICAgaW1wbGVtZW50IHZpcnRfdG9fcGh5cygpIGFuZCBtYXBfcGh5c21lbSgpLgorCisgICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IGVjZjViOThjN2E2YTJlMjI1NmRmZGRkNDhmYWIyNjY3OGRjZDZiOTAKK0F1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KK0RhdGU6CVR1ZSBEZWMgMTYgMTQ6NTk6MjAgMjAwOCAtMDYwMAorCisgICAgODV4eDogQWRkIHN1cHBvcnQgdG8gcG9wdWxhdGUgYWRkciBtYXAgYmFzZWQgb24gVExCIHNldHRpbmdzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorCitjb21taXQgNzhiYmM1Y2UxNTFjNWE0ODRiYjUxYmYxODY2YjRhOTkzZmZjMTZlYworQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJTW9uIERlYyAxIDEzOjQ3OjEzIDIwMDggLTA2MDAKKworICAgIFhQZWRpdGU1MjAwIGJvYXJkIHN1cHBvcnQKKworICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMgWFBlZGl0ZTUyMDAgLQorICAgIGEgTVBDODU0OC1iYXNlZCBQTUMgc2luZ2xlIGJvYXJkIGNvbXB1dGVyLgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKworY29tbWl0IDQ4N2RjYjRmYjg5YmUwOTkyYmMwNmVjMTM0MTA5MDAxN2JkOWNmMmYKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CVdlZCBPY3QgMjkgMTI6Mzk6MjcgMjAwOCAtMDUwMAorCisgICAgODV4eDogRW5hYmxlIGluYm91bmQgUENJIGNvbmZpZyBjeWNsZXMgZm9yIFgtRVMgYm9hcmRzCisKKyAgICBVcGRhdGUgWC1FUyBGcmVlc2NhbGUgYm9hcmRzIHRvIGFsbG93IGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24KKyAgICBjeWNsZXMgd2hlbiBjb25maWd1cmVkIGFzIGFnZW50L2VuZHBvaW50LgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKworY29tbWl0IGNjZjBmZGQwMmI5NzMyM2Y4Y2FhZTE4ZDA2Y2M5ZGFlYWMyZjE5MmYKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CVdlZCBEZWMgMTcgMTY6MzY6MjMgMjAwOCAtMDYwMAorCisgICAgWFBlZGl0ZTUzNzAgYm9hcmQgc3VwcG9ydAorCisgICAgSW5pdGlhbCBzdXBwb3J0IGZvciBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucyBYUGVkaXRlNTM3MCAtCisgICAgYSBNUEM4NTcyLWJhc2VkIDNVIFZQWCBzaW5nbGUgYm9hcmQgY29tcHV0ZXIgd2l0aCBhIFBNQy9YTUMKKyAgICBzaXRlLgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKworY29tbWl0IGU5MjczOWQzNGUyZDZiNmFjYTkzYjI1OTgyNDgyMTA3MTA4OTdjZTgKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CVdlZCBEZWMgMTcgMTY6MzY6MjEgMjAwOCAtMDYwMAorCisgICAgQWRkIHN1cHBvcnQgZm9yIFBDQTk1M3ggSTJDIGdwaW8gZGV2aWNlcworCisgICAgSW5pdGlhbCBzdXBwb3J0IGZvciBOWFAncyA0IGFuZCA4IGJpdCBJMkMgZ3BpbyBleHBhbmRlcnMKKyAgICAoZWcgcGNhOTUzNywgcGNhOTU1NywgZXRjKS4gVGhlIENPTkZJR19QQ0E5NTNYIGRlZmluZQorICAgIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIGRldmljZXMgd2hpbGUgdGhlIENPTkZJR19DTURfUENBOTUzWAorICAgIGRlZmluZSBlbmFibGVzIHRoZSBwY2E5NTN4IGNvbW1hbmQuIFRoZSBDT05GSUdfQ01EX1BDQTk1M1hfSU5GTworICAgIGRlZmluZSBlbmFibGVzIGFuICdpbmZvJyBzdWItY29tbWFuZCB3aGljaCBwcm92aWRlcyBzdW1tYXJ5CisgICAgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBwY2E5NTN4IGRldmljZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CisKK2NvbW1pdCA3YTg5Nzk1OTExNzE2NzY0MTdhYjM2ODUyZDg4MTFhOGM0NmFjY2Q4CitBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CitEYXRlOglXZWQgT2N0IDI5IDEyOjM5OjI2IDIwMDggLTA1MDAKKworICAgIHBjaS9mc2xfcGNpX2luaXQ6IEVuYWJsZSBpbmJvdW5kIFBDSSBjb25maWcgY3ljbGVzCisKKyAgICBBZGQgZnNsX3BjaV9jb25maWdfdW5sb2NrKCkgZnVuY3Rpb24gdG8gZW5hYmxlIGEKKyAgICBQQ0kvUENJZSBpbnRlcmZhY2UgY29uZmlndXJlZCBpbiBhZ2VudC9lbmRwb2ludCBtb2RlIHRvCisgICAgcmVzcG9uZCB0byBpbmJvdW5kIFBDSSBjb25maWd1cmF0aW9uIGN5Y2xlcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CisKK2NvbW1pdCBiNjE2ZjJiNTQ1ZjczNzU3NjY5YjM3Mzg2ZjBiMzdiYjYxZmM2Nzk3CitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglNb24gU2VwIDggMjI6Mjc6MTggMjAwOCArMDIwMAorCisgICAgTUlQUzogcWVtdV9taXBzOiB1cGRhdGUgZG9jIHRvIGdlbmVyYXRlIGFuZCB0byB1c2UgcWVtdSBmbGFzaCwgaWRlIGZpbGUKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KKworY29tbWl0IDE2Y2RmODE2Nzc5ZjViNjAyYTliM2I0ZDJlYTRkZWEwNTA5NWMzNWIKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CVR1ZSBEZWMgMTYgMjI6MTA6MzEgMjAwOCArMDEwMAorCisgICAgTUlQUzogcWVtdV9taXBzOiB1cGRhdGUgZG9jIHRvIHVzZSBhbGwgZGlzayBhbmQgYm9vdCBsaW51eCBrZXJuZWwKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KKworY29tbWl0IDEzMDk1YjJmMDdkYWNiMWY4NjM3NzIyNjZjMTc4OWQ0N2E1MjNhOGEKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CVR1ZSBEZWMgMTYgMjI6MTA6MzAgMjAwOCArMDEwMAorCisgICAgTUlQUzogcWVtdV9taXBzOiBtb3ZlIGVudiBzdG9yYWdlIGp1c3QgYWZ0ZXIgdS1ib290CisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CisKK2NvbW1pdCBhY2VkNzhkODUyZDBiMDA5ZThhYWExNDQ1YWY4Y2I0MDg2MWVlNTQ5CitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDE2IDIzOjQ4OjI3IDIwMDggKzAxMDAKKworICAgIFByZXBhcmUgMjAwOS4wMS1yYzEKKworICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CisKK2NvbW1pdCA5ZTJhNzliNGM1ODVhZDMxMTM4ZmI5MGI2OGZkMDIzNGQ2NGE4ZGE4CitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDE2IDIzOjEzOjQ2IDIwMDggKzAxMDAKKworICAgIGluY2x1ZGUvY29uZmlncy9hdDkxY2FwOWFkay5oOiBmaXggdHlwby4KKworICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CisKK2NvbW1pdCA0NWNhMDRmMjM3NzM2MTU5MzE1MWQyZDRkYTUxZjhiYTQ4MzJkMjMzCitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDE2IDIyOjMyOjI1IDIwMDggKzAxMDAKKworICAgIGJvYXJkL3RyYWIvbWVtb3J5LmM6IEZpeCBjb21waWxlIHByb2JsZW1zLgorCisgICAgQXBwbHkgY2hhbmdlcyBmcm9tIGNvbW1pdCA0NGI0ZGJlZCB0byBib2FyZC90cmFiL21lbW9yeS5jLCB0b28uCisKKyAgICBBY3R1YWxseSB3ZSdkIG5lZWQgYSBtYWpvciBjbGVhbnVwIGhlcmUgLSBhcyBpdCB0dXJucyBvdXQsCisgICAgYm9hcmQvdHJhYi9tZW1vcnkuYyBpcyBtb3JlIG9yIGxlc3MgYSB2ZXJiYXRpbSBjb3B5IG9mCisgICAgcG9zdC9kcml2ZXJzL21lbW9yeS5jIC4uLiBidXQgdGhlbiwgdHJhYiBpcyBFT0wgYW55d2F5LHIKKyAgICBzbyB0aGlzIGlzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IGZmNDllYTg5NzdiNTY5MTZlZGQ1YjE3NjZkOTkzOTAxMGUzMGIxODEKK0F1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgRGVjIDE2IDE0OjI0OjE2IDIwMDggLTA2MDAKKworICAgIE5BTkQ6IE1hcmsgdGhlIEJCVCBhcyBzY2FubmVkIHByaW9yIHRvIGNhbGxpbmcgc2Nhbl9iYnQuCisKKyAgICBPdGhlcndpc2UsIHJlY3Vyc2lvbiBjYW4gb2NjdXIgaWYgc2Nhbl9iYnQgZG9lcyBub3QgZmluZCBhIGJhZCBibG9jaworICAgIHRhYmxlLCBhbmQgdHJpZXMgdG8gd3JpdGUgb25lLCBhbmQgdGhlIGF0dGVtcHQgdG8gZXJhc2UgdGhlIEJCVCBhcmVhCisgICAgY2F1c2VzIGEgYmFkIGJsb2NrIGNoZWNrLgorCisgICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCA1ODRlZWRhYjY2ZDA4MjhmMmQ1NzFhMjRiMTA1MjZjNGU2NWY1NDdiCitBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorRGF0ZToJVGh1IERlYyAxMSAwNTo1MTo1NyAyMDA4ICswMzAwCisKKyAgICBqZmZzMjogaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPiBpbnN0ZWFkIG9mIGRlZmluaW5nIG93biBtaW5fdAorCisgICAgSW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPiBoZWFkZXIgZm9yIG1pbl90IGRlZmluaXRpb24gaW5zdGVhZCBvZgorICAgIHByb3ZpZGluZyBvdXIgb3duIG9uZS4gUmVtb3ZlcyB3YXJuaW5ncyBpbiBjYXNlIG9mIE9uZU5BTkQgc3VwcG9ydAorICAgIGVuYWJsZWQuCisKKyAgICBBbHRob3VnaCBJIHRoaW5rcyBpdCdzIGEgYml0IHNpbGx5IHRvIGluY2x1ZGUgPGxpbnV4L210ZC9jb21wYXQuaD4KKyAgICBqdXN0IGZvciBtaW5fdC4uLgorCisgICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CisgICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IGIxZmZlY2VjMzdiNTdhNTljMTM5MDQyMjY3ZmFhYzQ1OGU1MzI0ZTkKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJV2VkIERlYyAzIDIzOjA0OjM3IDIwMDggLTA2MDAKKworICAgIHBvd2VycGM6IGZpeCBpby5oIGJ1aWxkIHdhcm5pbmcgd2l0aCBDT05GSUdfUEhZU182NEJJVAorCisgICAgQ2FzdGluZyBhIHBvaW50ZXIgdG8gYSBwaHlzX2FkZHJfdCB3aGVuIGl0J3MgYW4gdW5zaWduZWQgbG9uZyBsb25nCisgICAgb24gYSAzMi1iaXQgc3lzdGVtIHdpdGhvdXQgZmlyc3QgY2FzdGluZyB0byBhIG5vbi1wb2ludGVyIHR5cGUKKyAgICBnZW5lcmF0ZXMgYSBjb21waWxlciB3YXJuaW5nLiBGaXggdGhpcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IDZjZGFkY2IzZjFiNmVhYzRhMWM0MjU2YWNhYTE0Mzg0MTNmOTUzNTEKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVR1ZSBEZWMgMTYgMTY6MjI6NTAgMjAwOCArMDEwMAorCisgICAgdHJhYjogbWFrZSB0cmFiX2ZrdCBzdGFuZGFsb25lIGNvZGUgaW5kZXBlbmRlbnQgb2YgbGliZ2NjCisKKyAgICBVc2Ugb3VyIG93biBsb2NhbCBmdW5jdGlvbnMgaW4gbGliX2FybS8gaW5zdGVhZC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CisKK2NvbW1pdCBhYTFiY2NhM2QyZTIyYWY0ZGVhOWYwMjEzMmY5YjU2YTMwMzc4ZGVkCitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDE2IDE0OjQ0OjA2IDIwMDggKzAxMDAKKworICAgIHBvc3QvTWFrZWZpbGU6IGZpeCBkZXBlbmRlbmN5IHByb2JsZW0gd2l0aCBwYXJhbGxlbCBidWlsZHMKKworICAgIFBhcmFsbGVsIGJ1aWxkcyAodXNpbmcgIm1ha2UgLWpOIikgd291bGQgb2NjYXNpb25hbGx5IGZhaWwgd2l0aCBlcnJvcgorICAgIG1lc3NhZ2VzIGxpa2UKKwlwcGNfNHh4RlAtb2JqZHVtcDogc3RyaW5nLm86IEZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkCisgICAgb3IKKwlwb3N0L2xpYnBvc3QuYShjcHUubyk6IEluIGZ1bmN0aW9uIGBjcHVfcG9zdF90ZXN0JzoKKwkvaG9tZS93ZC9naXQvdS1ib290L3dvcmsvcG9zdC9saWJfcHBjL2NwdS5jOjEzMDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3B1X3Bvc3RfdGVzdF9zdHJpbmcnCisgICAgb3Igc2ltaWxhci4gV2Ugbm93IG1ha2Ugc3VyZSB0byBydW4gdGhlICdwb3N0ZGVwcyIgc3RlcCBiZWZvcmUKKyAgICBhdHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBzcGVjaWZpYyBQT1NUIGxpYnJhcmllcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CisKK2NvbW1pdCA0YTBmNzUzOGM1YzA4MDVmZDlhNzkxOTY3YmJhYmFjYzQxZGVhZGQ5CitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDE2IDE0OjQxOjAyIDIwMDggKzAxMDAKKworICAgIE1ha2VmaWxlOiBmaXggZGVwZW5kZW5jeSBwcm9ibGVtIHdpdGggcGFyYWxsZWwgYnVpbGRzCisKKyAgICBQYXJhbGxlbCBidWlsZHMgKHVzaW5nICJtYWtlIC1qTiIpIHdvdWxkIG9jY2FzaW9uYWxseSBmYWlsIHdpdGggZXJyb3IKKyAgICBtZXNzYWdlcyBsaWtlCisJaW5jbHVkZS9hdXRvY29uZi5tazoyMTI6ICoqKiBtaXNzaW5nIHNlcGFyYXRvci4gIFN0b3AuCisgICAgTGluZSBudW1iZXJzIGFuZCBhZmZlY3RlZCBib2FyZHMgd2VyZSBjaGFuZ2luZy4gT2J2aW91c2x5IHNvbWUKKyAgICBNYWtlZmlsZXMgaW5jbHVkZWQgYXV0b2NvbmYubWsgd2hpbGUgaXQgd2FzIHN0aWxsIGJlaW5nIHdyaXR0ZW4gdG8uCisgICAgQXMgYSBmaXgsIHdlIG5vdyB3cml0ZSB0byBhIHRlbXBvcmFyeSBmaWxlIGZpcnN0IGFuZCB0aGVuIHJlbmFtZSBpdCwKKyAgICBzbyB0aGF0IGl0IGlzIHJlYWxseSByZWFkeSB0byB1c2UgYXMgc29vbiBhcyBpdCBhcHBlYXJzLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDQ1NWFlN2U4N2Y2N2M0NGU2YWVhNjg4NjVjODNhY2FkZDNmY2QzNmMKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVR1ZSBEZWMgMTYgMDE6MDI6MTcgMjAwOCArMDEwMAorCisgICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgODRiYzcyZDkwYzUwNWZlYzNlZjRiNjkzOTk1NDA3YTBiZDQwNjRlNQorQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CitEYXRlOglUaHUgRGVjIDExIDE4OjM5OjA4IDIwMDggLTA1MDAKKworICAgIHNwaS9zdG1pY3JvOiBmaXggZGVidWcoKSBkaXNwbGF5IG9mIGNtZAorCisgICAgVGhlIHN0bWljcm9fd2FpdF9yZWFkeSgpIGZ1bmMgdHJpZXMgdG8gc2hvdyB0aGUgYWN0dWFsIG9wY29kZSB0aGF0IHdhcyBzZW50CisgICAgdG8gdGhlIGRldmljZSwgYnV0IGluc3RlYWQgaXQgZGlzcGxheXMgdGhlIGFycmF5IHBvaW50ZXIuICBGaXggaXQgdG8gcHVsbAorICAgIG91dCB0aGUgb3Bjb2RlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBhcnJheS4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KKworY29tbWl0IDViMzM3NWFjOGMzNmMyOWM4N2FiYjEzMmZlZGUwNTA5ZWIyMWU1YzkKK0F1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorRGF0ZToJVGh1IERlYyAxMSAwNjoyMzozNyAyMDA4IC0wNTAwCisKKyAgICBlbnZfc2Y6IHN1cHBvcnQgZW1iZWRkZWQgZW52aXJvbm1lbnRzCisKKyAgICBJZiBib3RoIENPTkZJR19FTlZfU0VDVF9TSVpFIGFuZCBDT05GSUdfRU5WX1NJWkUgYXJlIGRlZmluZWQsIGFuZCB0aGUgc2VjdAorICAgIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGVudiBzaXplLCB0aGVuIGl0IG1lYW5zIHRoZSBlbnYgaXMgZW1iZWRkZWQgaW4gYQorICAgIGJsb2NrLiAgU28gd2UgaGF2ZSB0byBzYXZlL3Jlc3RvcmUgdGhlIHBhcnQgb2YgdGhlIHNlY3RvciB3aGljaCBpcyBub3QgdGhlCisgICAgZW52aXJvbm1lbnQuICBQcmV2aW91c2x5LCBzYXZpbmcgdGhlIGVudmlyb25tZW50IGluIFNQSSBmbGFzaCBpbiB0aGlzCisgICAgc2V0dXAgd291bGQgcHJvYmFibHkgYnJpY2sgdGhlIGJvYXJkIGFzIHRoZSByZXN0IG9mIHRoZSBzZWN0b3IgdGVuZHMgdG8KKyAgICBjb250YWluIGFjdHVhbCBVLUJvb3QgZGF0YS9jb2RlLgorCisgICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorICAgIEFja2VkLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CisKK2NvbW1pdCBlY2Y1ZjA3N2M4ZTc3NDU0ZjUzMmVhYWMzZTNhZmI3Y2ZjNDhjNjJkCitBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgRGVjIDMgMTE6Mjg6MzAgMjAwOCAtMDYwMAorCisgICAgaTJjOiBtZXJnZSBhbGwgaTJjX3JlZ19yZWFkKCkgYW5kIGkyY19yZWdfd3JpdGUoKSBpbnRvIGlubGluZSBmdW5jdGlvbnMKKworICAgIEFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBpMmNfcmVnX3JlYWQoKSBhbmQKKyAgICBpMmNfcmVnX3dyaXRlKCkgYXJlIGlkZW50aWNhbC4gV2UgY2FuIHNhdmUgc3BhY2UgYW5kIHNpbXBsaWZ5IHRoZQorICAgIGNvZGUgYnkgY29udmVydGluZyB0aGVzZSBmdW5jdGlvbnMgaW50byBpbmxpbmVzIGFuZCBwdXR0aW5nIHRoZW0gaW4KKyAgICBpMmMuaC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CisgICAgQWNrZWQtQnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCBlMzljZDgxYzQ0NzQwZDczNTVkMjc3ZWQzZDM4NTM2Y2JlMWUwMDNkCitBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CitEYXRlOglGcmkgRGVjIDUgMTU6MzY6MTQgMjAwOCArMDgwMAorCisgICAgbGliX3BwYzogcmV3b3JrIHRoZSBmbHVzaF9jYWNoZQorCisgICAgLSBJdCBpcyBwb3NzaWJsZSB0byBtaXNzIGZsdXNoL2ludmFsaWRhdGUgdGhlIGxhc3QKKyAgICAgIGNhY2hlIGxpbmUsIHdlIGZpeCBpdCBhdCBoZXJlLgorICAgIC0gYWRkIHRoZSB2b2xhdGlsZSBhbmQgbWVtb3J5IGNsb2JiZXIuCisKKyAgICBUaGV5IGFyZSBwb2ludGVkIGJ5IFNjb3R0IFdvb2QuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgNjMyNDBiYTg4Y2Q2YTIyMDA1N2EwZjI4ZTViZjk3ZjViMTdhYzg0YgorQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJU2F0IERlYyAxMyAxNzoyMDoyOCAyMDA4IC0wNjAwCisKKyAgICBJbnRyb2R1Y2UgYWRkcl9tYXAgbGlicmFyeQorCisgICAgQWRkIGEgbGlicmFyeSB0aGF0IGhlbHBzIGluIHRyYW5zbGF0aW5nIGJldHdlZW4gdmlydHVhbCBhbmQgcGh5c2ljYWwKKyAgICBhZGRyZXNzZXMuCVRoaXMgbGlicmFyeSBjYW4gYmUgdXNlZnVsIGFzIGEgc2ltcGxlIG1lYW5zIHRvIGltcGxlbWVudAorICAgIG1hcF9waHlzbWVtKCkgYW5kIHZpcnRfdG9fcGh5cygpIGZvciBwbGF0Zm9ybXMgdGhhdCBuZWVkIGZ1bmN0aW9uYWxpdHkKKyAgICBiZXlvbmQgdGhlIHNpbXBsZSAxOjEgbWFwcGluZy4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisKK2NvbW1pdCA2NWU0M2ExMDYzMTUzN2RjYjkyYzMwMmQzNjMwMWExMjMwODIxNmMzCitBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CitEYXRlOglTYXQgRGVjIDEzIDE3OjIwOjI3IDIwMDggLTA2MDAKKworICAgIEludHJvZHVjZSB2aXJ0X3RvX3BoeXMoKQorCisgICAgdmlydF90b19waHlzKCkgcmV0dXJucyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBnaXZlbiBhIHZpcnR1YWwuIEluIG1vc3QKKyAgICBjYXNlcyB0aGlzIHdpbGwgYmUganVzdCB0aGUgaW5wdXQgdmFsdWUgYXMgdGhlIHZhc3QgbWFqb3JpdHkgb2YKKyAgICBzeXN0ZW1zIHJ1biBpbiBhIDE6MSBtb2RlLgorCisgICAgSG93ZXZlciBpbiBzeXN0ZW1zIHRoYXQgYXJlIG5vdCBydW5uaW5nIHRoaXMgd2F5IGl0IHNob3VsZCByZXBvcnQgdGhlCisgICAgcGh5c2ljYWwgYWRkcmVzcyBvciB+MCBpZiBubyBtYXBwaW5nIGV4aXN0cyBmb3IgdGhlIGdpdmVuIHZpcnR1YWwKKyAgICBhZGRyZXNzLgorCisgICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IDQ1ODQ1MzAxYWYzZGU4Njc1YzFmN2JiYzgxNWM2ZGUzNTQ1MjYwNWEKK0F1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgorRGF0ZToJU3VuIERlYyA3IDIyOjEyOjUwIDIwMDggKzAxMDAKKworICAgIFBPU1QgTWFrZTogZml4IHRoZSBzdWItZGlyIGRlcGVuZGVuY2llcyBtaXNzaW5nLgorCisgICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgorCitjb21taXQgMjI1MjU3NzljYjUxZjFiYmU0ZTk2ZmVhN2I3NzhkZTE5MzVhNWE2OQorQXV0aG9yOiBNYXJ0aW4gTWljaGxtYXlyIDx0Ym1AY3lyaXVzLmNvbT4KK0RhdGU6CVdlZCBBdWcgNiAxNDo0NDowNSAyMDA4ICswMzAwCisKKyAgICBGaXggYSB0eXBvIGluIGZ3X2Vudi5jb25maWcKKworICAgIFJlcG9ydGVkLWJ5OiBNYXJ0aW4gTWljaGxtYXlyIDx0Ym1AY3lyaXVzLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgYmE0OTBiNzc2MWM2MmI1NDljMjIyYTk3MjNlNTMyZGM4MDFhMzg5OQorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJTW9uIERlYyAxIDE2OjIyOjQ1IDIwMDggLTA2MDAKKworICAgIFJlbW92ZSB1bnVzZWQgQ09ORklHX0FERFJfU1RSRUFNSU5HIGRlZmluZXMKKworICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CisKK2NvbW1pdCBkMTZkYTkzNDMwNTIwZDNlNDZjMWFiNTJlZWRhY2YzNmFiN2EyMzExCitBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CitEYXRlOglNb24gTm92IDI0IDExOjU0OjQ3IDIwMDggLTA2MDAKKworICAgIGNtZF9tZW06IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKworICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CisKK2NvbW1pdCAzYWVkM2FhMmMxMjhjZTlmYjM5Y2EzZjRlOTM4NWE3NDk5ZTkzZGJmCitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglTdW4gRGVjIDE0IDEwOjI5OjM5IDIwMDggKzAxMDAKKworICAgIEZpeCBuZXcgZm91bmQgQ0ZHXworCisgICAgQWxzbyBmaXggc29tZSBtaW5vciB0eXBvcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDBlMGM4NjJlZmU3Mjc5ZTk2MDlkYjc0ZDc1OGNkMWI4NGM2YzcyMDkKK0F1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KK0RhdGU6CUZyaSBTZXAgMTkgMTI6MDc6MzQgMjAwOCArMDIwMAorCisgICAgUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKKworICAgIFRoaXMgd2FybmluZyBpcyBpc3N1ZWQgYnkgbW9kZXJuIEFSTS1FQUJJIEdDQyBvbiBub24tdGh1bWIgdGFyZ2V0cy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFZsYWRpbWlyIFBhbmZpbG92IDxwdnJAZW1jcmFmdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KKworY29tbWl0IGNkNjczNDUxMGE5ZmYwZjQxYzRhNzM1NjdkNDA4MGVhMDAzM2QyYzEKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CU1vbiBOb3YgMjQgMTM6MzM6NTEgMjAwOCArMDEwMAorCisgICAgRml4IEZJVCBhbmQgRkRUIHN1cHBvcnQgdG8gaGF2ZSBDT05GSUdfT0ZfTElCRkRUIGFuZCBDT05GSUdfRklUIGluZGVwZW5kZW50CisKKyAgICBGRFQgc3VwcG9ydCBpcyB1c2VkIGZvciBib3RoIEZJVCBzdHlsZSBpbWFnZXMgYW5kIGZvciBhcmNoaXRlY3R1cmVzCisgICAgdGhhdCBjYW4gcGFzcyBhIGZkdCBibG9iIHRvIGFuIE9TIChwcGMsIG02OGssIHNwYXJjKS4KKworICAgIEZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBib2FyZHMgd2hpY2ggZG8gbm90IHBhc3MgYSBmZHQgYmxvYiB0byBhbgorICAgIE9TIGJ1dCB3YW50IHRvIHVzZSB0aGUgbmV3IHVJbWFnZSBmb3JtYXQsIHdlIGp1c3QgbmVlZCBGSVQgc3VwcG9ydC4KKworICAgIE5vdyB3ZSBjYW4gaGF2ZSB0aGUgNCBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgOgorCisgICAgMSkgRklUIG9ubHkJCSAgICBDT05GSUdfRklUCisgICAgMikgZmR0IGJsb2Igb25seQkgICAgQ09ORklHX09GX0xJQkZEVAorICAgIDMpIGJvdGgJCSAgICBDT05GSUdfT0ZfTElCRkRUICYgQ09ORklHX0ZJVAorICAgIDQpIG5vbmUJCSAgICBub25lCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgMTllZjRmN2E2ZWYzYjcyNWFhOWZlNGI0ZjVmYjY3NmE4NDE2MDE3MgorQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KK0RhdGU6CVdlZCBEZWMgMTAgMTU6MTM6MzIgMjAwOCArMDEwMAorCisgICAgcHBjNHh4OiBEaXNhYmxlIEVFUFJPTSB3cml0ZSBhY2Nlc3Mgb24gUE1DNDQwIGJvYXJkcworCisgICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBFRVBST00gd3J0aWUgYWNjZXNzIGJ5IGRlZmF1bHQgb24gUE1DNDQwIGJvYXJkLgorCisgICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CisKK2NvbW1pdCA1YjY3YTE0MzlhNzNiYTZjMzQwMDdkOWZmNjBhMmM2YWE5MDI2NWRmCitBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorRGF0ZToJV2VkIERlYyAxMCAxNToxMjo1NiAyMDA4ICswMTAwCisKKyAgICBwcGM0eHg6IEZpeCBFdGhlcm5ldCBQSFkgTEVEIGNvbmZpZ3VyYXRpb24gb24gUE1DNDQwIGJvYXJkcworCisgICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CisKK2NvbW1pdCA3MWZhMDcxNGZlNTEzNGJjODcxOGMzOGQ1MjYxZDI2N2U4ODU4MmJhCitBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KK0RhdGU6CVR1ZSBOb3YgMTggMTY6MzY6MTIgMjAwOCArMDEwMAorCisgICAgTUlQUzogRmx1c2ggZGF0YSBjYWNoZSB1cG9uIHJlbG9jYXRpb24KKworICAgIFRoaXMgcGF0Y2ggbm93IGFkZHMgYSBmbHVzaCB0byB0aGUgZGF0YSBjYWNoZSB1cG9uIHJlbG9jYXRpb24uIFRoZQorICAgIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbWlzc2luZyB0aGlzLiBPbmx5IGEgY29tbWVudCBzdGF0ZXMgdGhhdCBpdAorICAgIHNob3VsZCBiZSBkb25lLiBTbyBsZXQncyByZWFsbHkgZG8gaXQgbm93LgorCisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CisKK2NvbW1pdCA0NDE3NDM0MzY4OGRiYTMyNTcxYTM0NTUwZGJhMDg5NzFjNjVmZWYxCitBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KK0RhdGU6CVR1ZSBOb3YgMTggMTY6MzY6MjIgMjAwOCArMDEwMAorCisgICAgTUlQUzogQWRkIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQKKworICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBvcHRpb24gdG8gc3RhcnQuUy4gVGhpcworICAgIGVuYWJsZXMgc3VwcG9ydCBmb3IgYm9hcmRzIHdoZXJlIHRoZSBsb3dsZXZlbCBpbml0aWFsaXphdGlvbiBpcworICAgIGFscmVhZHkgZG9uZSB3aGVuIFUtQm9vdCBydW5zIChlLmcuIHZpYSBPbkNoaXAgUk9NKS4KKworICAgIFRoaXMgd2lsbCBiZSB1c2VkIGluIHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisgICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KKworY29tbWl0IGRiMDhlY2FhNmViODE3NjkwNGIzYmFlMTAzYTg1ZWU4ZjczNWRjNDAKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJV2VkIE5vdiAxMiAxMzoxODowMiAyMDA4ICswMTAwCisKKyAgICBNSVBTOiBBZGQgYm9hcmRfZWFybHlfaW5pdF9mKCkgdG8gaW5pdF9zZXF1ZW5jZQorCisgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBib2FyZF9lYXJseV9pbml0X2YoKSBjYWxsIHRvIHRoZSBNSVBTIGluaXQKKyAgICBzZXF1ZW5jZS4gQSB3ZWFrIGR1bW15IGltcGxlbWVudGF0aW9uIGlzIGFsc28gYWRkZWQgd2hpY2ggY2FuIGJlCisgICAgb3ZlcnJpZGRlbiBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24uCisKKyAgICBUaGlzIHdpbGwgYmUgdXNlZCBieSB0aGUgdXBjb21pbmcgVkNUSCBib2FyZCBzdXBwb3J0LgorCisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CisKK2NvbW1pdCA5ZDIzZmM1ODRjNGI3YjhiYjllY2JlZTQ4OTIwYjFiMDRiMDhmYTFiCitBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KK0RhdGU6CVdlZCBOb3YgMTIgMTM6MTg6MTkgMjAwOCArMDEwMAorCisgICAgTUlQUzogQWRkIG9uZW5hbmRfaW5pdCgpIHRvIGJvYXJkLmMgYW5kIG1vdmUgbmFuZF9pbml0KCkKKworICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gb25lbmFuZF9pbml0KCkgZm9yIE9uZU5BTkQgc3VwcG9ydCBhbmQgbW92ZXMKKyAgICB0aGUgbmFuZF9pbml0KCkgY2FsbCB0byBhbiBlYXJsaWVyIHBsYWNlLCBzbyB0aGF0IHRoZSBlbnZpcm9ubWVudCBjYW4KKyAgICBiZSB1c2VkIGZyb20gTkFORCBhbmQgT25lTkFORC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgorCitjb21taXQgZDhiYmM1MWM3YmE5YjczN2EyMDk4NDMzM2QxOWZlMjhhMzUyNjQzMQorQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CitEYXRlOglUdWUgRGVjIDkgMTE6MzI6NDYgMjAwOCArMDkwMAorCisgICAgc2g6IFVwZGF0ZSBzaDIvc2gyYSB0aW1lcgorCisgICAgUmVuZXNhcyBTSDIvU0gyQSB0aW1lciBicm9rZW4uCisgICAgVGhpcyBwYXRjaCBmaXggdGltZXIgZnVuY3Rpb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorCitjb21taXQgYTMxOWYxNDk2MjEwMTE3YjczMTk4ZTNkODg5ZmZmZmFmNjgyNWQwMAorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJRnJpIERlYyA1IDA3OjI3OjM3IDIwMDggKzAxMDAKKworICAgIHNoOiByMmRwbHVzIGZpeCByZWdpc3RlciBhY2Nlc3MKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorCitjb21taXQgNGQ0YTk2MDU1ZjY5MTczMzVhODlkYmRmMmU1NTU2ZmE1YWMzMjlmNgorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJVHVlIERlYyAyIDA3OjQwOjAzIDIwMDggKzAxMDAKKworICAgIHNoOiByMmRwbHVzL2xvd2xldmVsX2luaXQ6IGNvZGluZyBzdHlsZSBmaXgKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorCitjb21taXQgYzU0YjlhNDJkOGY1YWI1YjJhMDM5YjNhMmU2ZmRlOGI0Mjc3NDVlNQorQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CitEYXRlOglUdWUgTm92IDI1IDExOjA1OjE5IDIwMDggKzA5MDAKKworICAgIHNoOiBDaGFuZ2VkIHZhbHVlIG9mIENBQ0hFX09DX05VTV9FTlRSSUVTIGFuZCBDQUNIRV9PQ19XQVlfU0hJRlQKKworICAgIFNINCBpcyBkaWZmZXJlbnQgYSB2YWx1ZSBvZiBDQUNIRV9PQ19OVU1fRU5UUklFUyBhbmQKKyAgICBDQUNIRV9PQ19XQVlfU0hJRlQgZXZlcnkgQ1BVLgorICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgdGhlc2UgdmFsdWVzLgorCisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IGU5ZDVmMzU0OTc4ODViM2M2NWQ0OTRkMDlhNTI1ZDQ0M2RjY2NkM2IKK0F1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorRGF0ZToJVGh1IE5vdiAyMCAxNjo0NDo0MiAyMDA4ICswOTAwCisKKyAgICBzaDogVXBkYXRlIHNoIHRpbWVyIGZ1bmN0aW9uCisKKyAgICBDaGFuZ2UgdG8gd3JpdGUvcmVhZFggZnVuY3Rpb24gYW5kIGZpeCB0aW1lciBwcm9ibGVtLgorCisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IGI4MTc4NmNmZjQ3NmM0MWUzMzJlYWViNjc5MTU4ZjY1MjdjZDY3ZDQKK0F1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorRGF0ZToJVHVlIE5vdiA0IDExOjU4OjU4IDIwMDggKzA5MDAKKworICAgIHNoOiBNaWdvLVI6IFVwZGF0ZSBCU0MgdmFsdWUKKworICAgIEEgdmFsdWUgb2YgQlNDIENTNCB3YXMgd3JvbmcsIEZpeGVkIGl0LgorCisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IDU3ODM3NThmZDI2MGEwMmY0NDU2NmFkOGYyOWY4OTk1NjVjZDA0MDMKK0F1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorRGF0ZToJTW9uIE5vdiAxNyAxNjo1MjowOSAyMDA4ICswOTAwCisKKyAgICBzaDogVXBkYXRlIG1zNzcyMnNlIGJvYXJkIGNvbmZpZworCisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IDE1ZTI2OTdjOWY3ZmIyYmE2NzJhMWE3MGYwN2NkNmQ5ZDRlOTJiNTEKK0F1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgorRGF0ZToJTW9uIE5vdiAxNyAxNjo1MzowOSAyMDA4ICswOTAwCisKKyAgICBzaDogVXBkYXRlIFN1cGVySCBzZXJpYWwgZHJpdmVyCisKKyAgICBUaGUgYWRkcmVzcyBvZiBTQ0ZTUiByZWdpc3RlciBpcyB3cm9uZyBhdCBTSDc3MjAvU0g3NzIxLgorICAgIFRoaXMgcGF0Y2ggZml4IHRoaXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorCitjb21taXQgOWExZDM1NTdkY2Q0NzM2NWMxMmVlYWI1ODRiODIyZTU3ZDk5NDM1MgorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJVHVlIE5vdiAxMSAyMjoyMDoxNSAyMDA4ICswMTAwCisKKyAgICBzaDogZml4IHJzazcyMDMgYW5kIE1pZ29SIG91dCBvZiB0cmVlIGJ1aWxkCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKworY29tbWl0IDE5NTFmODQ3ZjBhODUxODUzODcxYjYxM2FkN2NmMjFhNTI0MjIyNmMKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglXZWQgRGVjIDEwIDE0OjQxOjI1IDIwMDggKzAxMDAKKworICAgIHBwYzR4eDogVXBkYXRlIFRFWFRfQkFTRSBmb3IgQ1BDSTQwNSBib2FyZHMKKworICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnVpbGRpbmcgVS1Cb290IGZvciBDUENJNDA1IGJvYXJkcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDhjOTJhZjdiMmZiZDYwYWU4NzM3OTQ3N2Y5M2M3ZWM5NDQxYjc0NTIKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJVHVlIERlYyA5IDIwOjA4OjAxIDIwMDggKzAxMDAKKworICAgIHBwYzR4eDogUmVtb3ZlIHNvbWUgZmVhdHVyZXMgZnJvbSBBTFBSIHRvIGZpdCBpbnRvIDI1NmsgYWdhaW4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDNiMDg5ZTRmODg5YTI5MDI0NDlkNTVlMDgxYzg4NmFlNjA3Y2FlODkKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJV2VkIERlYyAxMCAxMDozMjo1OSAyMDA4ICswMTAwCisKKyAgICBVQkk6IFNldCB1YmlfZGV2LnR5cGUgYmFjayB0byBERVZfVFlQRV9OT05FIHVwb24gZmFpbGluZyBpbml0aWFsaXphdGlvbgorCisgICAgV2l0aCB0aGlzIHBhdGNoIHdlIHNldCB0aGUgdHlwZSBiYWNrIHRvIE5PTkUgdXBvbiBmYWlsaW5nIFVCSSBwYXJ0aXRpb24KKyAgICBpbml0aWFsaXphdGlvbi4gT3RoZXJ3aXNlIGZ1cnRoZXIgY2FsbHMgdG8gdGhlIFVCSSBzdWJzeXN0ZW0gd291bGQgdHJ5CisgICAgdG8gcmVhbGx5IGFjY2VzcyB0aGUgbm9uLWV4aXN0aW5nIFVCSSBwYXJ0aXRpb24uCisKKyAgICBUaGFua3MgdG8gTWljaGFlbCBMYXduaWNrIGZvciBwb2ludGluZyB0aGlzIG91dC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDgxNzMyOTM1MTYzOWE4ODk1Y2Q5Yjg3YjMzYWVmZjA0M2YzZDVhNDQKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJV2VkIERlYyAxMCAxMDoyODozMyAyMDA4ICswMTAwCisKKyAgICBVQkk6IFJldHVybiAtRU5PTUVNIHVwb24gZmFpbGluZyBtYWxsb2MKKworICAgIFJldHVybiB3aXRoIGNvcnJlY3QgZXJyb3IgY29kZSAoLUVOT01FTSkgZnJvbSB1YmlfYXR0YWNoX210ZF9kZXYoKSB1cG9uCisgICAgZmFpbGluZyBtYWxsb2MoKS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDIxNDUxODhiZWEyZGY4ZjJiNDdhODdlYzMwNzFiNTUwMjdlOGQwYWUKK0F1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KK0RhdGU6CVR1ZSBEZWMgOSAyMzozNDoxNSAyMDA4IC0wODAwCisKKyAgICBGaXggY29tcGlsZSBlcnJvciBpbiBidWlsZGluZyBNQlg4NjBULgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KKworY29tbWl0IDhmYWI0OWVhOTExZmU5MjUzOTJmYTVhZmNjOWJjNzM3M2EzZDBjZWUKK0F1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgorRGF0ZToJVHVlIE5vdiAyNSAxMTo0MjoyMCAyMDA4ICswMTAwCisKKyAgICBtaWNyb2JsYXplOiBSZW1vdmUgWFVQVjJQIGJvYXJkCisKKyAgICAtLS0KKworICAgIE1pY3JvYmxhemUgcGxhdGZvcm1zIHVzZSBnZW5lcmljIHNldHRpbmdzIGFuZCB0byBoYXZlCisgICAgbWFueSBwbGF0Zm9ybXMgaXMgY29uZnVzaW5nIHRoYXQncyB3aHkgSSBkZWNpZGVkIHRvIHJlbW92ZSB0aGlzCisgICAgcGxhdGZvcm0gZnJvbSBVLUJPT1QuIG1sNDAxIHRyZWUgaXMgc3VmZmljaWVudCBmb3IgY292ZXJpbmcKKyAgICBhbGwgTWljcm9ibGF6ZSBwbGF0Zm9ybXMuCisKKyAgICBUaGlzIGNoYW5nZSB3aWxsIGdvIHRocm91Z2ggbWljcm9ibGF6ZSBjdXN0b2RpYW4gdHJlZS4KKworY29tbWl0IDk5YmE2ZjM1MzU4MjcyMGRlZmZmNmU2ZTY3NjFkYzQ1NWEyMDdkMzEKK0F1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgorRGF0ZToJTW9uIE5vdiAyNCAxODoyNTo0MSAyMDA4ICswMTAwCisKKyAgICBtaWNyb2JsYXplOiBSZW1vdmUgQ09ORklHX0xJQkZEVCBkdWUgdG8gZXJyb3IgaW4gY29tbW9uIGZpbGVzCisKK2NvbW1pdCBlN2Q1OTFlODIzYTk5MTUxMzgzM2FmNzAzMDQ2ODQwOWUyNWEzYjEzCitBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KK0RhdGU6CU1vbiBOb3YgMjQgMTE6NDM6MDAgMjAwOCArMDEwMAorCisgICAgbWljcm9ibGF6ZTogRml4IG1sNDAxIHVhcnQxNjU1MCBzZXR0aW5nCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CisKK2NvbW1pdCBjODVmZjA1NTNhOGNmYmNjYTUxYzE1Yjk0N2UxZWQ1NWQzODEwYTM5CitBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KK0RhdGU6CU1vbiBOb3YgMjQgMTE6Mzg6MjIgMjAwOCArMDEwMAorCisgICAgbWljcm9ibGF6ZTogU2V0IHVwIHJlbG9jYXRpb24gaXMgZG9uZQorCitjb21taXQgYmNiNmRkOTE4N2Q0YjIzYzc0ODcwNDc2N2JkMTJkMjBjODI5ZTk5NgorQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CitEYXRlOglUdWUgRGVjIDkgMjM6MjA6MzEgMjAwOCAtMDUwMAorCisgICAgdG9vbHMvbmV0Y29uc29sZTogbmV3IHNjcmlwdCBmb3Igd29ya2luZyB3aXRoIG5ldGNvbnNvbGUgb3ZlciBVRFAKKworICAgIFdoaWxlIHRoZSBkb2MvUkVBRE1FLk5ldENvbnNvbGUgZG9lcyBoYXZlIGEgc25pcHBldCBmb3IgcGVvcGxlIHRvCisgICAgY3JlYXRlIHRoZWlyIG93biBuZXRjYXQgc2NyaXB0LCBpdCdzIGEgbG90IGVhc2llciB0byBtYWtlIGEgc2ltcGxlCisgICAgZGVkaWNhdGVkIHNjcmlwdCBhbmQgdGVsbCBwZW9wbGUgdG8gdXNlIGl0LgorCisgICAgQWxzbyBzcHJ1Y2UgaXQgdXAgYSBiaXQgdG8gbWFrZSBpdCB1c2VyIGZyaWVuZGx5LgorCisgICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgorCitjb21taXQgOGM1MTcwYTdkMDg4NjAxZDVmMzBkODUwOTMzODhkYWIxZjFlOGVjMAorQXV0aG9yOiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KK0RhdGU6CVR1ZSBEZWMgOSAyMzoyMDoxOCAyMDA4IC0wNTAwCisKKyAgICBmcy9mYXQ6IGhhbmRsZSBGQVQgb24gU0FUQQorCisgICAgVGhlIEZBVCBmaWxlIHN5c3RlbSBkcml2ZXIgc2hvdWxkIGFsc28gaGFuZGxlIEZBVCBvbiBTQVRBIGRldmljZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisKK2NvbW1pdCA5N2EyNGE3OGVlNmYzNGI4OWI4MjFjYjcwZWRhMWNmMzRhYTExZDk3CitBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KK0RhdGU6CU1vbiBOb3YgMjQgMDg6MTU6MDIgMjAwOCAtMDUwMAorCisgICAgbGliZmR0OiBGaXggcmVkZWZpbmVkIHVpbnRwdHJfdCB3YXJuaW5nIGZvciBVU0VfSE9TVENDCisKKyAgICBDb21waWxpbmcgVS1Cb290IGluIGFuIG9sZCBPUyBlbnZpcm9ubWVudCAoUmVkSGF0LTcuMyAgOi0pCWdpdmVzIHRoZQorICAgIGZvbGxvd2luZyB3YXJuaW5ncyBmcm9tIEZEVDoKKworICAgIGluY2x1ZGUvbGliZmR0X2Vudi5oOjUwOiB3YXJuaW5nOiByZWRlZmluaXRpb24gb2YgJ3VpbnRwdHJfdCcKKyAgICAvdXNyL2luY2x1ZGUvc3RkaW50Lmg6MTI5OiB3YXJuaW5nOiAndWludHB0cl90JyBwcmV2aW91c2x5IGRlY2xhcmVkIGhlcmUKKworICAgIEZpeDogUHJvdGVjdCB0aGUgZGVmaW5pdGlvbiBvZiB1aW50cHRyX3Qgd2hlbiBjb21waWxpbmcgb24gdGhlIGhvc3QKKyAgICBzeXN0ZW0uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgorCitjb21taXQgMWZjMmIxNjVjNTFkNmY0MGM4ZDUwNWYxYjNlYWVmZGI2NTk5YjE3YgorQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorRGF0ZToJU2F0IE5vdiAyMiAwODo0MzoyOSAyMDA4ICsxMTAwCisKKyAgICBNb3ZlZCBzYzUyMCBQQ0kgZGVmaW5pdGlvbnMgdG8gc3RhbmQtYWxvbmUgZmlsZQorCisgICAgU2lnbmVkIE9mZiBCeTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KKworY29tbWl0IDFmNTA3MGMwYzE4ZmE1Njg0YmZjZTA5YzhhYmRmMTBjMDRlZDQ4ZmEKK0F1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KK0RhdGU6CVNhdCBOb3YgMjIgMDg6NDM6MjEgMjAwOCArMTEwMAorCisgICAgRml4ZWQgcGF0aCB0byBzYzUyMCBTU0kgaW5jbHVkZSBmaWxlCisKKyAgICBTaWduZWQgT2ZmIEJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorCitjb21taXQgZDRmNzBkYTU0NGMzM2RiM2U0ZmNlNjQ3M2RlYTRlY2NhNDMyMjU0NQorQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorRGF0ZToJRnJpIE5vdiAyMSAwNjoyODowNSAyMDA4ICsxMTAwCisKKyAgICBGaXhlZCBidWlsZCBlcnJvciBkdWUgdG8gI2RlZmluZSBvZiBfTElOVVhfU1RSSU5HX0hfIGluIDgyNTU5X2VlcHJvbS5jCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorCitjb21taXQgYzAzNDA3NWE3MTNiNjBlNjU0YzY0ZTg4ZTg3ZGEyOTQ0MGYzMWJiNAorQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CitEYXRlOglXZWQgTm92IDEyIDEzOjMwOjEwIDIwMDggKzAxMDAKKworICAgIHNlcmlhbDogQWRkIHZjdGggVUFSVCBkcml2ZXIKKworICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgVUFSVCBkcml2ZXIgZm9yIHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCAxNDJhODBmZmMzYjUzN2E5YzQ1YWNkMjQ0NGE0MmE3N2YxNDdjNjAyCitBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozNiAyMDA4ICswMzAwCisKKyAgICBqZmZzMjogY2FjaGUgZGF0YV9jcmMgcmVzdWx0cworCisgICAgQXMgd2UgbW92ZWQgZGF0YV9jcmMoKSBpbnZvY2F0aW9uIGZyb20gamZmczJfMXBhc3NfYnVpbGRfbGlzdHMoKSB0bworICAgIGpmZnMyXzFwYXNzX3JlYWRfaW5vZGUoKSBkYXRhX2NyYyBpcyBnb2luZyB0byBiZSBjYWxjdWxhdGVkIG9uIGVhY2gKKyAgICBpbm9kZSBhY2Nlc3MuIFRoaXMgcGF0Y2ggYWRkcyBjYWNoaW5nIG9mIGRhdGFfY3JjKCkgcmVzdWx0cy4gVGhlcmUKKyAgICBpcyBubyBzaWduaWZpY2FudCBpbXByb3ZlbWVudCBpbiBzcGVlZCAoYmVjYXVzZSBvZiBmbGFzaCBhY2Nlc3MKKyAgICBjYWNoaW5nIGFkZGVkIGluIHByZXZpb3VzIHBhdGNoIEkgdGhpbmssIGNyYyBpbiBSQU0gaXMgcmVhbGx5IGZhc3QpCisgICAgYnV0IHRoaXMgcGF0Y2ggaW1wYWN0cyBtZW1vcnkgdXNhZ2UgLS0gZXZlcnkgYl9ub2RlIHN0cnVjdHVyZSB1c2VzCisgICAgMTIgYnl0ZXMgaW5zdGVhZCBvZiA4LgorCisgICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IE5leW1hbiA8YXZuQGVtY3JhZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorCitjb21taXQgOWI3MDc2MjI5ZWM2YTk1OGJkODM1YWI3MDc0NWY3Njc2Mjk3Y2U4MgorQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KK0RhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzUgMjAwOCArMDMwMAorCisgICAgamZmczI6IHN1bW1hcnkgc3VwcG9ydAorCisgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlYWRpbmcgZnMgaW5mb3JtYXRpb24gZnJvbSBzdW1tYXJ5CisgICAgbm9kZSBpbnN0ZWFkIG9mIHNjYW5uaW5nIGZ1bGwgZXJhc2VibG9jay4KKworICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorCitjb21taXQgNzA3NDEwMDRkYzI4OTQ2Y2Q4MmM3YWY2Nzg5YzRkZGIzZmM5NDUyNgorQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KK0RhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzQgMjAwOCArMDMwMAorCisgICAgamZmczI6IGFkZCBidWZmZXIgdG8gY2FjaGUgZmxhc2ggYWNjZXNzZXMKKworICAgIFdpdGggdGhpcyBwYXRjaCBKRkZTMiBjb2RlIGFsbG9jYXRlcyBtZW1vcnkgYnVmZmVyIG9mIG1heF90b3RsZW4gc2l6ZQorICAgIChzaXplIG9mIHRoZSBsYXJnZXN0IG5vZGUsIGNhbGN1bGF0ZWQgZHVyaW5nIHNjYW4gdGltZSkgYW5kIHVzZXMgaXQgdG8KKyAgICBzdG9yZSBlbnRpcmUgbm9kZS4gU3BlZWRzIHVwIGxvYWRpbmcuIElmIG1hbGxvYyBmYWlscyB3ZSB1c2Ugb2xkIHdheXMKKyAgICB0byBkbyB0aGluZ3MuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgTmV5bWFuIDxhdm5AZW1jcmFmdC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CisKK2NvbW1pdCA4YTM2ZDMxZjcyNDExMTQ0YWMwNDEyZWU3ZTE4ODBlODAxYWNkNzU0CitBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozMyAyMDA4ICswMzAwCisKKyAgICBqZmZzMjogcmV3cml0ZSBqZmZzMiBzY2FubmluZyBjb2RlIGJhc2VkIG9uIExpbnV4IG9uZQorCisgICAgUmV3cml0ZXMgamZmczJfMXBhc3NfYnVpbGRfbGlzdHMoKSBmdW5jdGlvbiBpbiBzdHlsZSBvZiBMaW51eCdzCisgICAgamZmczJfc2Nhbl9tZWRpdW0oKSBhbmQgamZmczJfc2Nhbl9lcmFzZWJsb2NrKCkuCisgICAgVGhpcyBpbmNsdWRlczoKKyAgICAgLSBDYWNoaW5nIGZsYXNoIGFjY2VzZXMKKyAgICAgLSBTbWFydCBkZWFsaW5nIHdpdGggZnJlZSBzcGFjZQorCisgICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IE5leW1hbiA8YXZuQGVtY3JhZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorCitjb21taXQgZTBiNTUzMjU3OWVkYThiNDYyOWYxYjRmNmU0OWMzY2M2MGY1MjIzNworQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KK0RhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzIgMjAwOCArMDMwMAorCisgICAgamZmczI6IGFkZCBzZWN0b3Jfc2l6ZSBmaWVsZCB0byBwYXJ0X2luZm8gc3RydWN0dXJlCisKKyAgICBUaGlzIHBhdGNoIGFkZHMgc2VjdG9yX3NpemUgZmllbGQgdG8gcGFydF9pbmZvIHN0cnVjdHVyZSAodXNlZAorICAgIGJ5IG5ldyBKRkZTMiBjb2RlKS4KKworICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorCitjb21taXQgZjczODQ2OTU2Nzc4YTdkZmVlODM0MDNlZjk3NDdhZmY3NzE5ODg0OAorQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KK0RhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzEgMjAwOCArMDMwMAorCisgICAgamZmczI6IGZpeCBzZWFyY2hpbmcgZm9yIGxhdGVzdCB2ZXJzaW9uIGluIGpmZnMyXzFwYXNzX2xpc3RfaW5vZGVzKCkKKworICAgIFdlIG5lZWQgdG8gdXBkYXRlIGlfdmVyc2lvbiBpbnNpZGUgY3ljbGUgdG8gZmluZCByZWFsbHkgbGF0ZXN0IHZlcnNpb24KKyAgICBpbnNpZGUgamZmczJfMXBhc3NfbGlzdF9pbm9kZXMoKS4gV2l0aCB0aGF0IGZpeGVkIHdlIGNhbiB1c2UgaXNpemUgaW5zaWRlCisgICAgZHVtcF9pbm9kZSgpIGluc3RlYWQgb2YgY2FsbGluZyBleHBlbnNpdmUgamZmczJfMXBhc3NfcmVhZF9pbm9kZSgpLgorCisgICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IE5leW1hbiA8YXZuQGVtY3JhZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorCitjb21taXQgMTExM2NiNzY0YjNkYTI1NmVmOGExZjk1MzlmNGVmYmUyMjFmZjNjNAorQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorRGF0ZToJVHVlIERlYyA5IDIzOjEzOjUxIDIwMDggKzAxMDAKKworICAgIGV2YjY0MjYwOiBmaXggImNhc3QgdG8gcG9pbnRlciBmcm9tIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUiIHdhcm5pbmdzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgZDI3NzY4MjczMTVjM2Q0NjliOGNiNGNlYzE0ZDU4ODc3Nzk4ZGFhMgorQXV0aG9yOiBTdGVmYW4gQWx0aG9lZmVyIDxzdGVmYW4uYWx0aG9lZmVyQHdlYi5kZT4KK0RhdGU6CVN1biBEZWMgNyAxOTozOToxMSAyMDA4ICswMTAwCisKKyAgICBVU0I6IGRlc2NyaXB0b3IgaGFuZGxpbmcKKworICAgIEhpLAorCisgICAgSSBmb3VuZCBhIGJ1ZyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgdS1ib290IFVTQiBzdWJzeXN0ZW0gb24gSVhQNDI1IHByb2Nlc3NvcgorICAgIChiaWcgZW5kaWFuIFhzY2FsZSBha2EgQVJNdjUpLgorICAgIEkgcmVjb2duaXplZCB0aGF0IHRoZSBzZWNvbmQgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3Igb2YgdGhlIGF0dGFjaGVkIG1lbW9yeQorICAgIHN0aWNrIHdhcyBjb3JydXB0ZWQuCisKKyAgICBUaGUgcmVhc29uIGZvciB0aGlzIGFyZSB0aGUgcGFja2VkIHN0cnVjdHVyZXMgYmVsb3cgKGVpdGhlciB1LWJvb3QgYW5kCisgICAgdS1ib290LXVzYik6CisKKyAgICAtLS0tLS0tLS0tLS0tLQorICAgIC8qIEVuZHBvaW50IGRlc2NyaXB0b3IgKi8KKyAgICBzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgeworCXVuc2lnbmVkIGNoYXIgIGJMZW5ndGg7CisJdW5zaWduZWQgY2hhciAgYkRlc2NyaXB0b3JUeXBlOworCXVuc2lnbmVkIGNoYXIgIGJFbmRwb2ludEFkZHJlc3M7CisJdW5zaWduZWQgY2hhciAgYm1BdHRyaWJ1dGVzOworCXVuc2lnbmVkIHNob3J0IHdNYXhQYWNrZXRTaXplOworCXVuc2lnbmVkIGNoYXIgIGJJbnRlcnZhbDsKKwl1bnNpZ25lZCBjaGFyICBiUmVmcmVzaDsKKwl1bnNpZ25lZCBjaGFyICBiU3luY2hBZGRyZXNzOworCisgICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisgICAgLyogSW50ZXJmYWNlIGRlc2NyaXB0b3IgKi8KKyAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yIHsKKwl1bnNpZ25lZCBjaGFyICBiTGVuZ3RoOworCXVuc2lnbmVkIGNoYXIgIGJEZXNjcmlwdG9yVHlwZTsKKwl1bnNpZ25lZCBjaGFyICBiSW50ZXJmYWNlTnVtYmVyOworCXVuc2lnbmVkIGNoYXIgIGJBbHRlcm5hdGVTZXR0aW5nOworCXVuc2lnbmVkIGNoYXIgIGJOdW1FbmRwb2ludHM7CisJdW5zaWduZWQgY2hhciAgYkludGVyZmFjZUNsYXNzOworCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VTdWJDbGFzczsKKwl1bnNpZ25lZCBjaGFyICBiSW50ZXJmYWNlUHJvdG9jb2w7CisJdW5zaWduZWQgY2hhciAgaUludGVyZmFjZTsKKworCXVuc2lnbmVkIGNoYXIgIG5vX29mX2VwOworCXVuc2lnbmVkIGNoYXIgIG51bV9hbHRzZXR0aW5nOworCXVuc2lnbmVkIGNoYXIgIGFjdF9hbHRzZXR0aW5nOworCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciBlcF9kZXNjW1VTQl9NQVhFTkRQT0lOVFNdOworICAgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworICAgIC0tLS0tLS0tLS0tLQorCisgICAgQXMgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgaXMgb25seSA3Ynl0ZSBpbiBsZW5ndGgsIHRoZSBzdGFydCBvZiBhbGwKKyAgICBvZGQgZXBfZGVzY1tdIHN0cnVjdHVyZXMgaXMgbm90IHdvcmQgYWxpZ25lZC4gVGhpcyBtYWtlcyB3TWF4UGFja2V0U2l6ZQorICAgIG9mIHRoZXNlIHN0cnVjdHVyZXMgYWxzbyBub3Qgd29yZCBhbGlnbmVkLgorCisgICAgQVJNdjUgQXJjaGl0ZWN0dXJlIGhvd2V2ZXIgZG9lcyBub3Qgc3VwcG9ydCBub24tYWxpZ25lZCBtdWx0aWJ5dGUKKyAgICBkYXRhIHR5cGUgKHNlZSBBMi44IG9mIEFSTSBBcmNoaXRlY3R1cmUgUmVmZXJlbmNlIE1hbnVhbCkuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWx0aG9lZmVyIDxzdGVmYW4uYWx0aG9lZmVyQHdlYi5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+CisKK2NvbW1pdCA0YzI1M2ZkYjJhMTc1ZWEzNDcyYzM4YTE0NTVhMTZmYWE1OGU4MWYwCitBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CitEYXRlOglUdWUgRGVjIDkgMTA6Mjc6MzMgMjAwOCAtMDYwMAorCisgICAgZHJpdmVycy9mc2xfcGNpX2luaXQ6IEZpeCBjb21waWxlIHdhcm5pbmcKKworICAgIGZzbF9wY2lfaW5pdC5jOiBJbiBmdW5jdGlvbiAnZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3MnOgorICAgIGZzbF9wY2lfaW5pdC5jOjEyMjogd2FybmluZzogY29tcGFyaXNvbiBpcyBhbHdheXMgdHJ1ZSBkdWUgdG8gbGltaXRlZCByYW5nZSBvZiBkYXRhIHR5cGUKKworICAgIFRoZSBjaGVjayBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZSBDT05GSUdfUEhZU182NEJJVAorCisgICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IGRlZGFjYzE4YThjMmIzOTUxNTgxZWI3MjFmYTA1NWE0ZTBhYzQ4NDUKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CVN1biBEZWMgNyAwOTo0NTozNSAyMDA4ICswMTAwCisKKyAgICB1c2J0dHkvb21hcDogdXBkYXRlIHRvIGN1cnJlbnQgQVBJCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KKworY29tbWl0IGVlMmU5YmE5MTdhNjJjYzJlM2E0ODRiYjc5YzhkYTBlMDFjYjkzZWQKK0F1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgorRGF0ZToJVHVlIERlYyA5IDE3OjUyOjA1IDIwMDggKzAxMDAKKworICAgIHZpZGVvOiBmaXggRkFEUzgyMyBhbmQgUlJ2aXNpb24gY29tcGlsaW5nIGlzc3VlcworCisgICAgU2luY2UgY29tbWl0IDU2MTg1OGVlIGJ1aWxkaW5nIGZvciBGQURTODIzIGFuZCBSUnZpc2lvbgorICAgIGRvZXNuJ3Qgd29yay4gTGV0J3MgaW5jbHVkZSB2ZXJzaW9uLmggYW5kIHRpbWVzdGFtcC5oCisgICAgdW5jb25kaXRpb25hbGx5IHRvIGZpeCB0aGUgcHJvYmxlbS4KKworICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KKworY29tbWl0IDJkMmUwNTcyN2ZlNDAxM2Y4MDdmZmE4MTRkZmYwZTc1MjU5YTFkYjQKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJVHVlIERlYyAyIDEwOjUzOjQ3IDIwMDggKzAxMDAKKworICAgIFVCSTogRml4IHNpemUgcGFyc2luZyBpbiAidWJpIGNyZWF0ZSIKKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDJlZTk1MWJhMmFjOTg3NGQyYTkzZDUyZTdhMTg3ZDMxODRiZTkzN2UKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJVGh1IE5vdiAyNyAxNDowNzowOSAyMDA4ICswMTAwCisKKyAgICBVQkk6IEVuYWJsZSByZS1pbml0aWFsaXppbmcgb2YgdGhlICJ1YmkgcGFydCIgY29tbWFuZAorCisgICAgV2l0aCB0aGlzIHBhdGNoIG5vdywgdGhlIHVzZXIgY2FuIGNhbGwgInViaSBwYXJ0IiBtdWx0aXBsZSB0aW1lcyB0bworICAgIHJlLWNvbm5lY3QgdGhlIFVCSSBkZXZpY2UgdG8gYW5vdGhlciBNVEQgcGFydGl0aW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgOWRlZjEyY2FlMzNkMmQzZWEyZGQ1NmIxOTdmZDNkZmIzYWQ2MGJmNAorQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CitEYXRlOglUaHUgTm92IDI3IDE0OjA1OjE1IDIwMDggKzAxMDAKKworICAgIE1URDogRml4IHByb2JsZW0gYmFzZWQgb24gbm9uLXdvcmtpbmcgcmVsb2NhdGlvbiAobGlzdCBoZWFkIG10ZF9wYXJ0aXRpb25zKQorCisgICAgRG9uJ3QgdXNlIExJU1RfSEVBRCgpIGJ1dCBpbml0aWFsaXplIHRoZSBzdHJ1Y3QgdmlhIElOSVRfTElTVF9IRUFEKCkgdXBvbgorICAgIGZpcnN0IGNhbGwgb2YgYWRkX210ZF9wYXJ0aXRpb25zKCkuIE90aGVyd2lzZSB0aGlzIHdvbid0IHdvcmsgb24gcGxhdGZvcm1zCisgICAgd2hlcmUgdGhlIHJlbG9jYXRpb24gaXMgYnJva2VuIChsaWtlIE1JUFMgb3IgUFBDKS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDVlM2FiNjhlOWFjZjllZGYzMDRiOGFhMzJhZDdlMDA1NDgzYTJjNDcKK0F1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgTm92IDEyIDE3OjI5OjQ4IDIwMDggLTA4MDAKKworICAgIFNlY3Rpb24gbmFtZSBzaG91bGQgYmUgIi5kYXRhIiwgbm90ICJkYXRhIgorCisgICAgU2lnbmVkLW9mZi1ieTogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDdmYTZhMmYzYjY2NTc5ZGVhOGJjMWE5MTc3NjQ2ZTExNDE3MzFiMTUKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVR1ZSBEZWMgOSAwMDozOTowOCAyMDA4ICswMTAwCisKKyAgICBNQUtFQUxMOiBBdXRvbWF0aWNhbGx5IHVzZSBwYXJhbGxlbCBidWlsZHMKKworICAgIEFkZCBsb2dpYyB0byB0aGUgTUFLRUFMTCBzY3JpcHQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVIGNvcmVzCisgICAgb24gdGhlIHN5c3RlbSwgYW5kIHJ1biBhIHBhcmFsbGVsIGJ1aWxkIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuCisgICAgVXN1YWxseSB0aGlzIHNpZ25pZmljYW50cmx5IGFjY2VsZXJhdGVzIGJ1aWxkcy4KKworICAgIEFsbG93IHRvIG1hbnVhbGx5IGFkanVzdCB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIG1ha2Ugam9icyBieSB1c2luZworICAgIHRoZSAiQlVJTERfTkNQVVMiIGVudmlyb25tZW50IHZhcmlhYmxlLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDI2ODQwNWZhN2M0NDE1NmM1MTkyYTcwNzc5OTIwYzcwOTA2YWY4ZDYKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVR1ZSBEZWMgOSAwMDoyNDozMCAyMDA4ICswMTAwCisKKyAgICB2eHdvcmtzLmg6IEZpeCBidWlsZCBwcm9ibGVtIGludHJvZHVjZWQgYnkgY29tbWl0cyAyOWE0YzI0ZC9lOTA4NGIyMworCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDE1MzE3NmE5NDE0MTIwY2ExNzM2ZjNjYzQ5NTE2MjNkNmUxNGU2YWYKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CVR1ZSBOb3YgMTEgMDY6MDg6NTkgMjAwOCArMDEwMAorCisgICAgYXZyMzIvYm9vdG06IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUgJ3JldCcKKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisgICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KKworY29tbWl0IDQzNGM1MWE1ZTYyZjYwOGEyYTc4ZWQ1Mzk4YWM0M2ExYzc3Y2MxODMKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CVdlZCBOb3YgMTIgMTM6MDY6NDggMjAwOCAtMDYwMAorCisgICAgUmVtb3ZlIHVubmVlZGVkIENPTkZJR19TSEVMTCByZWZlcmVuY2VzCisKKyAgICBNYWtlIHNob3VsZCBiZSB1c2luZyB0aGUgYmFzaCBzaGVsbCBieSBkZWZhdWx0IHdoaWNoIG1ha2VzCisgICAgQ09ORklHX1NIRUxMIHVubmVjZXNzYXJ5CisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorCitjb21taXQgY2Y3YTdiOTk3OTRiYWM5MzY4OTk4MTliOTU1MzliZTFkYmQ3MTcwOAorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJV2VkIE5vdiAxMiAxMjozMzoyMCAyMDA4IC0wNjAwCisKKyAgICBVc2UgYmFzaCBmb3IgZGVmYXVsdCBHTlUgTWFrZSBzaGVsbCBhcHBsaWNhdGlvbgorCisgICAgU29tZSBNYWtlIHNjcmlwdCBjb21tYW5kcyByZWx5IG9uIGJhc2gtc3BlY2lmaWMgZmVhdHVyZXMgbGlrZSBicmFjZQorICAgIGV4cGFuc2lvbiwgc28gZGVmYXVsdCB0byBiYXNoIGZvciB0aGUgU0hFTEwgdmFyaWFibGUgd2l0aCBhIGZhbGxiYWNrCisgICAgdG8gdGhlIHN0YW5kYXJkIHNoIHNoZWxsCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorCitjb21taXQgNGI1MzAwMTg3NjQ5MzRhZDU2ODkxOTZlOWFhNTcxNGE2ZjRkMWE2YworQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KK0RhdGU6CVdlZCBOb3YgMTIgMDk6NTA6NDUgMjAwOCArMDEwMAorCisgICAgamZmczI6IHJlbmFtZSBkZXZpY2VzX2luaXQgKCkgaW4gY29tbW9uL2pmZnMyLmMKKworICAgIHJlbmFtZSBkZXZpY2VzX2luaXQgKCkgaW4gY29tbW9uL2pmZnMyLmMgdG8KKyAgICBqZmZzMl9kZXZpY2VzX2luaXQgKCksIGJlY2F1c2UgdGhlcmUgaXMgYWxzbyBhCisgICAgZGV2aWNlc19pbml0ICgpIGluIGNvbW1vbi9kZXZpY2VzLmMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KKworY29tbWl0IGFmNWViODQ3YTEwZjEwMzc1OTAwMDEzNTVkODhiYWIzZmU3YmU0OGIKK0F1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgorRGF0ZToJTW9uIE5vdiAxMCAxMjo0NjoyMCAyMDA4ICswMDAwCisKKyAgICBTUEFSQzogRml4ZWQgY29tcGlsZXIgZXJyb3IgaW50cm9kdWNlZCBieSBjb21taXQgYzE2MGE5NTQ0NzQzCisKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVpbGQgZXJyb3IgZm9yIHRoZSBTUEFSQyBwbGF0Zm9ybS4gSXQgd2FzCisgICAgaW50cm9kdWNlZCBieSBjb21taXQgYzE2MGE5NTQ0NzQzZTgwZTg4ODllZGIyMjc1NTM4ZTc3NjRjZTMzNC4KKworICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KKworY29tbWl0IDRjNjAyNTk4OTlhYTAwZjU5ZGIwZDkzNmI4ODA3ZjlhMjY0MTFjMGYKK0F1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CitEYXRlOglTdW4gTm92IDkgMTI6NTA6NTkgMjAwOCArMDEwMAorCisgICAgbWdzdXZkIGFkZCB0aGUgYm9hcmQtc3BlY2lmaWMgcGFydCBvZiB0aGUgSERMQyBkcml2ZXIKKworICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgorCitjb21taXQgNTM0YTQzNTk2NjZhZjQ4YmQ2OWEzNzQzZDhhOGMyYmRiMWQzZWM3MAorQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KK0RhdGU6CVN1biBOb3YgOSAxMjo0NTowMyAyMDA4ICswMTAwCisKKyAgICBtZ2NvZ2UgYWRkIHRoZSBib2FyZC1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBIRExDIGRyaXZlcgorCisgICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CisKK2NvbW1pdCAxMzVmNTUzNDUzOGJiOGVhNGYzOGE3MDMwZGExMjE4N2QyMmVmN2UwCitBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgorRGF0ZToJU3VuIE5vdiA5IDEyOjM2OjE1IDIwMDggKzAxMDAKKworICAgIGtleW1pbGUgYWRkIHRoZSBjb21tb24gcGFydHMgb2YgdGhlIEhETEMgZHJpdmVyCisKKyAgICBUaGlzIGltcGxlbWVudHMgdGhlIElDTiBwcm90b2NvbCB1c2VkIGFjcm9zcyB0aGUgYmFja3BsYW5lIGFuZCBpcworICAgIG5lZWRlZCBieSBhbGwgdGhlIGtleW1pbGUgYm9hcmRzLgorCisgICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CisKK2NvbW1pdCAxY2I4MmE5MjA3YTU1MDU1NzM5OWVhYmM3ZmU0N2YyMWJiZDlkZGY4CitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglGcmkgTm92IDcgMjI6NDY6MjIgMjAwOCArMDEwMAorCisgICAgZHJpdmVycy9iaW9zX2VtdWxhdG9yOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgYmNkZjFkMmNmNmIyNGZiOTA1ZmQ3ZGE4MGRhNGIzYzY1YTc5OTViNQorQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgorRGF0ZToJVGh1IE5vdiA2IDE0OjAxOjUxIDIwMDggLTA1MDAKKworICAgIGNvbW1vbi9jbWRfaWRlLmM6IENvcnJlY3RlZCBlbmRpYW4gb3JkZXIgcHJpbnRpbmcgZm9yIGNvbXBhY3QgZmxhc2ggc2VyaWFsIG51bWJlci4KKworICAgIENvcnJlY3RlZCBlbmRpYW4gb3JkZXIgcHJpbnRpbmcgZm9yIGNvbXBhY3QgZmxhc2ggc2VyaWFsIG51bWJlci4KKworICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CisKK2NvbW1pdCAxNmEyOGVmMjE5YzI3NDIzYTFlZjUwMmYxOTA3MGM0ZDM3NTA3OWI4CitBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgorRGF0ZToJVGh1IE5vdiA2IDE1OjA0OjIzIDIwMDggKzAxMDAKKworICAgIElPTVVYOiBBZGQgY29uc29sZSBtdWx0aXBsZXhpbmcgc3VwcG9ydC4KKworICAgIE1vZGlmaWNhdGlvbnMgdG8gc3VwcG9ydCBjb25zb2xlIG11bHRpcGxleGluZy4gIFRoaXMgaXMgY29udHJvbGxlZCB1c2luZworICAgIENPTkZJR19TWVNfQ09OU09MRV9NVVggaW4gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworICAgIFRoaXMgYWxsb3dzIGEgdXNlciB0byBzcGVjaWZ5IG11bHRpcGxlIGNvbnNvbGUgZGV2aWNlcyBpbiB0aGUgZW52aXJvbm1lbnQKKyAgICB3aXRoIGEgY29tbWFuZCBsaWtlIHRoaXM6IHNldGVudiBzdGRpbiBzZXJpYWwsbmMuICBBcyBhIHJlc3VsdCwgdGhlIHVzZXIgY2FuCisgICAgZW50ZXIgdGV4dCBvbiBib3RoIHRoZSBzZXJpYWwgYW5kIG5ldGNvbnNvbGUgaW50ZXJmYWNlcy4KKworICAgIEFsbCBkZXZpY2VzIC0gc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIC0gY2FuIGJlIHNldCBpbiB0aGlzIG1hbm5lci4KKworICAgIDEpIGNvbW1vbi9pb211eC5jIGFuZCBpbmNsdWRlL2lvbXV4LmggY29udGFpbiB0aGUgZW52aXJvbm1lbnQgc2V0dGluZworICAgIGltcGxlbWVudGF0aW9uLgorICAgIDIpIGRvYy9SRUFETUUuaW9tdXggY29udGFpbnMgYSBzb21ld2hhdCBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgorICAgIDMpIFRoZSBpbXBsZW1lbnRhdGlvbiBpbiAoMSkgaXMgY2FsbGVkIGZyb20gY29tbW9uL2NtZF9udmVkaXQuYyB0bworICAgIGhhbmRsZSBzZXRlbnYgYW5kIGZyb20gY29tbW9uL2NvbnNvbGUuYyB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24gb2YKKyAgICBpbnB1dC9vdXRwdXQgZGV2aWNlcyBhdCBib290IHRpbWUuCisgICAgNCkgY29tbW9uL2NvbnNvbGUuYyBhbHNvIGNvbnRhaW5zIHRoZSBjb2RlIG5lZWRlZCB0byBwb2xsIG11bHRpcGxlIGNvbnNvbGUKKyAgICBkZXZpY2VzIGZvciBpbnB1dCBhbmQgc2VuZCBvdXRwdXQgdG8gYWxsIGRldmljZXMgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0LgorICAgIDUpIGluY2x1ZGUvY29tbW9uLmggaW5jbHVkZXMgaW9tdXguaCBhbmQgY29tbW9uL01ha2VmaWxlIGdlbmVyYXRlcyBpb211eC5vCisgICAgd2hlbiBDT05GSUdfU1lTX0NPTlNPTEVfTVVYIGlzIHNldC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgorCitjb21taXQgNzc0Y2U3MjAyNmY3NGFjOTY0MWJjYmJjNTg4YjIwZjJlMTNmN2FiOAorQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CitEYXRlOglUdWUgTm92IDQgMTY6MDM6NDYgMjAwOCAtMDUwMAorCisgICAgc3RyaW5nczogdXNlIHB1dHMoKSByYXRoZXIgdGhhbiBwcmludGYoKQorCisgICAgV2hlbiBydW5uaW5nIGBzdHJpbmdzYCBvbiByZWFsbHkgbG9uZyBzdHJpbmdzLCB0aGUgc3RhY2sgdGVuZHMgdG8gZ2V0CisgICAgc21hc2hlZCBkdWUgdG8gcHJpbnRmKCkuICBTd2l0Y2ggdG8gcHV0cygpIGluc3RlYWQgc2luY2Ugd2UncmUgb25seSBwYXNzaW5nCisgICAgdGhlIGRhdGEgdGhyb3VnaC4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KKworY29tbWl0IGIwMzE1MGI1MmUzYzQ5MWE4NmEzY2MwOTQ1Mjc0ZjBlOGY5ODcyZTcKK0F1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KK0RhdGU6CU1vbiBOb3YgMyAyMjoxNjoxOCAyMDA4ICswMTAwCisKKyAgICBVc2UgbmV3IENPTkZJR19TWVNfVlhXT1JLUyBwYXJhbWV0ZXJzIGZvciBOZXRzdGFsIGJvYXJkcworCisgICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KKworY29tbWl0IDI5YTRjMjRkZTk5ZDhjYjRhYzMyOTkxYzA0Y2FiODdlZDk0Y2ExZjkKK0F1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KK0RhdGU6CU1vbiBOb3YgMyAyMjoxNTozNCAyMDA4ICswMTAwCisKKyAgICBjbWRfZWxmLmM6IENsZWFudXAgYm9vdHZ4IGFuZCBoYW5kbGUgbmV3IENPTkZJR19TWVNfVlhXT1JLUyBwYXJhbWV0ZXJzCisKKyAgICAtIGZpeCBzaXplIHRvbyBzbWFsbCBieSBvbmUgaW4gc3ByaW50ZgorICAgIC0gY2hhbmdlZCBvbGQgKHByZSAyMDA0KSBkZXZpY2UgbmFtZSBpYm1FbWFjIHRvIGVtYWMKKyAgICAtIGJvb3QgZGV2aWNlIG1heSBiZSBvdmVycmlkZW4gaW4gYm9hcmQgY29uZmlnCisgICAgLSBzZXJ2ZXJuYW1lIG1heSBiZSBkZWZpbmVkIGluIGJvYXJkIGNvbmZpZworICAgIC0gYWRkaXRpb25hbCBwYXJhbWV0ZXJzIG1heSBiZSBkZWZpbmVkIGluIGJvYXJkIGNvbmZpZworICAgIC0gZml4ZWQgc29tZSBsaW5lIHdyYXBwaW5ncworICAgIC0gcmVwbGFjZWQJcmVkdW5kYW50IE1BWCBkZWZpbmUgYnkgbWF4CisKKyAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgorCitjb21taXQgZTkwODRiMjNkMTYxMDJmNDRhY2UyNDM3OWExYzBjMzUyNDk3ZWY4MAorQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgorRGF0ZToJTW9uIE5vdiAzIDIyOjE0OjM2IDIwMDggKzAxMDAKKworICAgIEFkZCB2eHdvcmtzLmggdG8gaGFuZGxlIENPTkZJR19TWVNfVlhXT1JLUyBwYXJhbWV0ZXJzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgorCitjb21taXQgMGIyZjRlY2FkNDczZDc4NTk1OWM3OTc2ZjIwZDJhMDBiZDBlZTAxZgorQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgorRGF0ZToJTW9uIE5vdiAzIDIyOjEzOjQ3IDIwMDggKzAxMDAKKworICAgIFJFQURNRTogRG9jdW1lbnQgQ09ORklHX1NZUyBwYXJhbWV0ZXJzIGZvciB2eHdvcmtzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgorCitjb21taXQgYWNlNTE0ODM3Y2FjNjU2ZTI5YzM3YTE5NTY5Y2I4ZWE4MzA3MTEyNgorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJRnJpIE9jdCAzMSAxMToxMjozOCAyMDA4IC0wNTAwCisKKyAgICBsY2Q6IExldCB0aGUgYm9hcmQgY29kZSBzaG93IGJvYXJkLXNwZWNpZmljIGluZm8gY2xlYW51cAorCisgICAgcmVtb3ZlIHVubmVlZGVkIHZlcnNpb24uaCBmcm9tIGxjZC5jCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CisKK2NvbW1pdCA1NjE4NThlZTdkMDI3NGMzZTg5ZGM5OGQ0ZDA2OThjYjZmY2Y2ZmQ5CitBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CitEYXRlOglNb24gTm92IDMgMDk6MzA6NTkgMjAwOCAtMDYwMAorCisgICAgVXBkYXRlIFUtQm9vdCdzIGJ1aWxkIHRpbWVzdGFtcCBvbiBldmVyeSBjb21waWxlCisKKyAgICBVc2UgdGhlIEdOVSAnZGF0ZScgY29tbWFuZCB0byBhdXRvLWdlbmVyYXRlIGEgbmV3IFUtQm9vdAorICAgIHRpbWVzdGFtcCBvbiBldmVyeSBjb21waWxlLgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKworY29tbWl0IDgzYWQxNzllMmYwZjYyNWI4OGFkYjhlZjU2OTY3MDllNDZmYjkwNzcKK0F1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CitEYXRlOglUaHUgRGVjIDQgMjI6MjU6NTcgMjAwOCArMDEwMAorCisgICAgUmVtb3ZlIHJlZHVuZGFudCBhcm12NCBmbGFnIGZyb20gYXJtOTI2ZWpzIGNvbXBpbGUgZmxhZ3MKKworICAgIEN1cnJlbnRseSB0aGUgYXJtOTI2ZWpzIHRyZWUgaGFzIHRoZSBhcm12NCBvcHRpb24gc2V0IGR1cmluZyBjb21waWxhdGlvbi4KKyAgICBUaGlzIGZsYWcgZG9lcyBub3QgYmVsb25nIGhlcmUgYmVjYXVzZSBhIGFybTkyNiBDUFUgaXMgYWx3YXlzIGEgYXJtdjUgQ1BVLgorCisgICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CisKK2NvbW1pdCA4OWE3YTg3ZjA4NGM2NTdmOGUzMmI1MTNhNzdiNTBlY2EwN2UxN2VjCitBdXRob3I6IE5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVycmVAYXRtZWwuY29tPgorRGF0ZToJU2F0IERlYyA2IDEzOjExOjE0IDIwMDggKzAxMDAKKworICAgIGF0OTE6IENob29zZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbG9jYXRpb24gd2l0aGluIG1ha2UgY29uZmlnIHRhcmdldAorCisgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBwb3NzaWJsaXR5IHRvIGNob29zZSB0aGUgbWVkaWEgd2hlcmUgdGhlIGVudmlyb25tZW50IHdpbGwKKyAgICBiZSBsb2NhdGVkLiBUaGlzIGFsbG93IHRvIGNob29zZSB0aGlzIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBlZGl0aW5nCisgICAgY29uZmlnIGZpbGVzLgorCisgICAgRG9jdW1lbnRhdGlvbiBmaWxlIGFkZGVkLgorCisgICAgU2lnbmVkLW9mZi1ieTogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+CisgICAgQWNrZWQtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CisgICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCAxNDUwYzRhNjY4MjM3ODU2NzAzMDQxNGE5ZjExOThjMzliNzczMGM3CitBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KK0RhdGU6CU1vbiBOb3YgMyAxNTozMDozNCAyMDA4ICswMTAwCisKKyAgICBsd21vbiwgdHFtOHh4OiBGaXggYnVpbGQgZXJyb3JzCisKKyAgICBDb21taXQgNmI1OWUwM2UwMjM3YTQwYTIzMDVlYTM4NWRlZmRmZDkyMDAwOTc4YgorICAgIGxjZDogTGV0IHRoZSBib2FyZCBjb2RlIHNob3cgYm9hcmQtc3BlY2lmaWMgaW5mbworCisgICAgaW50cm9kdWNlZCBzb21lIGJ1Z3Mgd2hpY2ggcHJldmVudCBVLUJvb3QgYnVpbGRpbmcKKyAgICBmb3IgbHdtb24gYm9hcmQgaWYgQ09ORklHX0xDRF9JTkZPX0JFTE9XX0xPR08gd2lsbAorICAgIGJlIGRlZmluZWQgaW4gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24uCisKKyAgICBBbHNvICJMQ0QgZW5hYmxlZCIgYnVpbGRpbmcgZm9yIFRRTTgyM0wgZG9lc24ndCB3b3JrCisgICAgc2luY2UgdGhpcyBjb21taXQuCisKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGFib3ZlLW1lbnRpb25lZCBpc3N1ZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CisKK2NvbW1pdCBiZmEwYWY2YjIyZmYyNWIwNzE5YTg5MTBmOWI2ZDFmOTc1YWE2ZmIwCitBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KK0RhdGU6CVN1biBOb3YgMiAwMToxODoxOCAyMDA4IC0wNDAwCisKKyAgICBpZ25vcmUgLmdkYl9oaXN0b3J5IGZpbGVzCisKKyAgICBXaGVuIHVzaW5nIGdkYiwgaGlzdG9yeSBmaWxlcyB3aWxsIG9mdGVuIGdldCBnZW5lcmF0ZWQuICBTbyBpZ25vcmUgdGhlbS4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KKworY29tbWl0IGM4YWE3ZGZjMThmN2NjOTBkMGFlYTZjN2JlY2JiNjdkZmM1YmJhNGIKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CUZyaSBPY3QgMzEgMTI6MjY6NTUgMjAwOCArMDEwMAorCisgICAgRlBHQTogbW92ZSBmcGdhIGRyaXZlcnMgdG8gZHJpdmVycy9mcGdhCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgNmE4NmJiNmMyNTM3NmYwMzU4NDc4MjE5ZmEyOGQ3Yzg0ZGQwMWVkMAorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJTW9uIERlYyAxIDE2OjI5OjM4IDIwMDggLTA2MDAKKworICAgIG5ldDogRml4IFRmdHBTdGFydCgpIGlwOmZpbGVuYW1lIGJ1ZworCisgICAgVGhlIFRmdHBTdGFydCgpIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSAnQm9vdEZpbGUnCisgICAgc3RyaW5nIHdoZW4gJ0Jvb3RGaWxlJyBjb250YWlucyBib3RoIGFuIElQIGFkZHJlc3MKKyAgICBhbmQgZmlsZW5hbWUgKGVnIDEuMi4zLjQ6L3BhdGgvZmlsZSkuIFRoaXMgY2F1c2VzCisgICAgc3Vic2VxdWVudCBjYWxscyB0byBUZnRwU3RhcnQgdG8gaW5jb3JyZWN0bHkgcGFyc2UKKyAgICB0aGUgVEZUUCBmaWxlbmFtZSBhbmQgc2VydmVyIElQIGFkZHJlc3MgdG8gdXNlLgorICAgIEZvciBleGFtcGxlOgorCisgICAgPT4gdGZ0cCAweDEwMDAwMCAxMC41Mi4wLjYyOi9ob21lL3B0eXNlci9ub25fZXhpc3RhbnQKKyAgICBTcGVlZDogMTAwLCBoYWxmIGR1cGxleAorICAgIFVzaW5nIGVUU0VDMSBkZXZpY2UKKyAgICBURlRQIGZyb20gc2VydmVyIDEwLjUyLjAuNjI7IG91ciBJUCBhZGRyZXNzIGlzIDEwLjUyLjI1My43OQorCQkgICAgIF5eXl5eXl5eXl4gQ09SUkVDVAorICAgIEZpbGVuYW1lICcvaG9tZS9wdHlzZXIvbm9uX2V4aXN0YW50Jy4KKwkgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eIENPUlJFQ1QKKyAgICBMb2FkIGFkZHJlc3M6IDB4MTAwMDAwCisgICAgTG9hZGluZzogKgorICAgIFRGVFAgZXJyb3I6ICdGaWxlIG5vdCBmb3VuZCcgKDEpCisgICAgU3RhcnRpbmcgYWdhaW4KKworICAgIGVUU0VDMjogTm8gbGluay4KKyAgICBTcGVlZDogMTAwLCBoYWxmIGR1cGxleAorICAgIFVzaW5nIGVUU0VDMSBkZXZpY2UKKyAgICBURlRQIGZyb20gc2VydmVyIDEwLjUyLjAuMzM7IG91ciBJUCBhZGRyZXNzIGlzIDEwLjUyLjI1My43OQorCQkgICAgIF5eXl5eXl5eXl4gV1JPTkcKKyAgICBGaWxlbmFtZSAnMTAuNTIuMC42MicuCisJICAgICAgXl5eXl5eXl5eXiBXUk9ORworICAgIExvYWQgYWRkcmVzczogMHgxMDAwMDAKKyAgICBMb2FkaW5nOiAqCisgICAgVEZUUCBlcnJvcjogJ0ZpbGUgbm90IGZvdW5kJyAoMSkKKyAgICBTdGFydGluZyBhZ2FpbgorCisgICAgVGZ0cFN0YXJ0KCkgd2FzIG1vZGlmaWVkIHRvIG5vdCBtb2RpZnkgdGhlICdCb290RmlsZScgc3RyaW5nLgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorCitjb21taXQgZDMyYzViZTUwYmYwNjAwYmZkYzU0MjIzZWYzNDFlZTljNjNkYjQ0NQorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJTW9uIERlYyAxIDE2OjI2OjIxIDIwMDggLTA2MDAKKworICAgIG5ldDogQWRkIGFkZGl0aW9uYWwgSVAgZnJhZ21lbnRhdGlvbiBjaGVjaworCisgICAgSWdub3JlIElQIHBhY2tldHMgd2hpY2ggaGF2ZSB0aGUgIm1vcmUgZnJhZ21lbnRzIiBmbGFnIGJpdAorICAgIHNldC4gIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhlIElQIHBhY2tldCBpcyBmcmFnbWVudGVkIGFuZAorICAgIG11c3QgYmUgaWdub3JlZCBieSBVLUJvb3QuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCBlMGMwN2I4NjhjYWI0MDVhYjRiNTMzNWEwMjQ3ODk5YmZjNWVhMGI2CitBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CitEYXRlOglNb24gRGVjIDEgMTY6MjY6MjAgMjAwOCAtMDYwMAorCisgICAgbmV0OiBEZWZpbmUgSVAgZmxhZyBmaWVsZCB2YWx1ZXMKKworICAgIFRoZXNlIGRlZmluZXMgd2VyZSBwdWxsZWQgZnJvbSB0aGUgIkFkZCBzaW1wbGUKKyAgICBJUC9VRFAgZnJhZ21lbnRhdGlvbiBzdXBwb3J0IiBwYXRjaCBmcm9tIEZyYW5rCisgICAgSGF2ZXJrYW1wIDxoYXZlckB2bmV0LmlibS5jb20+LgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorCitjb21taXQgMjNhZmFiYTY1ZWM1MjA2NzU3ZTU4OWVmMzM0YThiMzgxNjhjMDQ1ZgorQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CitEYXRlOglUdWUgRGVjIDIgMTA6MzE6MDQgMjAwOCArMDEwMAorCisgICAgbmV0OiB0c2VjOiBGaXggTWFydmVsbCA4OEUxMTIxUiBwaHkgaW5pdAorCisgICAgVGhpcyBwYXRjaCB0cmllcyB0byBlbnN1cmUgdGhhdCBwaHkgaW50ZXJydXB0IHBpbgorICAgIHdvbid0IGJlIGFzc2VydGVkIGFmdGVyIGJvb3RpbmcuIFdlIGV4cGVyaWVuY2VkCisgICAgZm9sbG93aW5nIGlzc3VlcyB3aXRoIGN1cnJlbnQgODhFMTEyMVIgcGh5IGluaXQ6CisKKyAgICBNYXJ2ZWxsIDg4RTExMjFSIHBoeSBjYW4gYmUgaGFyZHdhcmUtY29uZmlndXJlZAorICAgIHRvIHNoYXJlIE1EQy9NRElPIGFuZCBpbnRlcnJ1cHQgcGlucyBmb3IgYm90aCBwb3J0cworICAgIFAwIGFuZCBQMSAoZS5nLiBhcyBjb25maWd1cmVkIG9uIHNvY3JhdGVzIGJvYXJkKS4KKyAgICBQb3J0IDAgaW50ZXJydXB0IHBpbiB3aWxsIGJlIHNoYXJlZCBieSBib3RoIHBvcnRzCisgICAgaW4gc3VjaCBjb25maWd1cmF0aW9uLiBBZnRlciBib290aW5nIExpbnV4IGFuZAorICAgIGNvbmZpZ3VyaW5nIGV0aDAgaW50ZXJmYWNlLCBwb3J0IDAgcGh5IGludGVycnVwdHMKKyAgICBhcmUgZW5hYmxlZC4gQWZ0ZXIgcmVib290aW5nIHdpdGhvdXQgcHJvcGVyIGV0aDAKKyAgICBpbnRlcmZhY2Ugc2h1dGRvd24gcG9ydCAwIHBoeSBpbnRlcnJ1cHRzIHJlbWFpbgorICAgIGVuYWJsZWQgc28gYW55IGNoYW5nZSBvbiBwb3J0IDAgKGxpbmsgc3RhdHVzLCBldGMuKQorICAgIGNhdXNlIGFzc2VydGlvbiBvZiB0aGUgaW50ZXJydXB0LiBOb3cgYm9vdGluZyBMaW51eAorICAgIGFuZCBjb25maWd1cmluZyBldGgxIGludGVyZmFjZSB3aWxsIGNhdXNlIHBlcm1hbmVudAorICAgIHBoeSBpbnRlcnJ1cHQgc3Rvcm0gYXMgdGhlIHJlZ2lzdGVyZWQgcGh5IDEgaW50ZXJydXB0CisgICAgaGFuZGxlciBkb2Vzbid0IGFja25vd2xlZGdlIHBoeSAwIGludGVycnVwdHMuIFRoaXMKKyAgICBvZiBjb3Vyc2Ugc2hvdWxkIGJlIGZpeGVkIGluIExpbnV4IGRyaXZlciB0b28uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CisgICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorCitjb21taXQgMmU0OTcwZDgxMDlkNjkwYWRjZjYxNWQ5ZTNjYWM3YjViMmU4ZWFlZAorQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorRGF0ZToJVHVlIERlYyAyIDEyOjU5OjUxIDIwMDggLTA2MDAKKworICAgIG5ldDogRml4IGRvd25sb2FkIGNvbW1hbmQgcGFyc2luZworCisgICAgV2hlbiBDT05GSUdfU1lTX0hVU0hfUEFSU0VSIGlzIGRlZmluZWQgbmV0d29yayBkb3dubG9hZAorICAgIGNvbW1hbmRzIHdpdGggMSBhcmd1bWVudCBpbiB0aGUgZm9ybWF0ICd0ZnRwICIvcGF0aC9maWxlIicKKyAgICBkbyBub3Qgd29yayBhcyBleHBlY3RlZC4gVGhlIGh1c2ggY29tbWFuZCBwYXJzZXIgc3RyaXBzCisgICAgdGhlIHF1b3RlcyBmcm9tICIvcGF0aC9maWxlIiB3aGljaCBjYXVzZXMgdGhlIG5ldHdvcmsKKyAgICBjb21tYW5kcyB0byBpbnRlcnByZXQgIi9wYXRoL2ZpbGUiIGFzIGFuIGFkZHJlc3MKKyAgICBpbnN0ZWFkIG9mIHRoZSBpbnRlbmRlZCBmaWxlbmFtZS4KKworICAgIFRoZSBwcmV2aW91cyBjaGVjayBmb3IgYSBsZWFkaW5nIHF1b3RlIGluIG5ldGJvb3RfY29tbW9uKCkKKyAgICB3YXMgcmVwbGFjZWQgd2l0aCBhIGNoZWNrIHdoaWNoIGVuc3VyZXMgb25seSB2YWxpZAorICAgIG51bWJlcnMgYXJlIHRyZWF0ZWQgYXMgYWRkcmVzc2VzLgorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorCitjb21taXQgM2MyYzJmNDI3OTA1MDQwYzE1MTNkMGM1MWQ2Mzc2ODljYmE0ODM0NgorQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KK0RhdGU6CVRodSBOb3YgMjcgMjI6MzA6MjcgMjAwOCArMDEwMAorCisgICAgUmVtb3ZlIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGZyb20gZmF0IGNvZGUKKworICAgIFRoaXMgY29kZSBjb250YWlucyBzb21lIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGNvbW1lbnQgbGluZXMgYW5kIGNvZGUuCisgICAgTW9zdCBlZGl0b3JzIGRvIG5vdCBkaXNwbGF5IHRob3NlIGNoYXJhY3RlcnMgcHJvcGVybHkgYW5kIGVkaXRpbmcgdGhvc2UKKyAgICBmaWxlcyByZXN1bHRzIGFsd2F5cyBpbiBkaWZmcyBhdCB0aGVzZSBwbGFjZXMgd2hpY2ggYXJlIHVzdWFsbHkgbm90IHJlcXVpcmVkCisgICAgdG8gYmUgY2hhbmdlZCBhdCBhbGwuIFRoaXMgaXMgZXJyb3IgcHJvbmUuCisKKyAgICBTbywgcmVtb3ZlIHRob3NlIHdlaXJkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSBieSBub3JtYWwgQy1zdHlsZQorICAgIGVxdWl2YWxlbnRzIGZvciB3aGljaCB0aGUgcHJvcGVyIGRlZmluZXMgd2VyZSBhbHJlYWR5IGluIHRoZSBoZWFkZXIuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KKworY29tbWl0IGRjODg5ZTg2NTM1NjQ5N2QzZTQ5NTU3MDExOGMyMjQ1ZWJjZTI2MzEKK0F1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CUZyaSBOb3YgMjggMjA6MTY6NTggMjAwOCArMDgwMAorCisgICAgODV4eDogZml4IHRoZSB3cm9uZyBERFIgc2V0dGluZ3MgZm9yIE1QQzg1NzJEUworCisgICAgVGhlIGRlZmF1bHQgRERSIGZyZXEgaXMgNDAwTUh6IG9yIDgwME0gZGF0YSByYXRlLAorICAgIHRoZSBvbGQgc2V0dGluZ3MgaXMgcHVyZSB3cm9uZyBmb3IgdGhlIGRlZmF1bHQgY2FzZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CisgICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDlkZjU5NTMzZjc3ZGUyODI5YjRiNjZlNWI3NjIwZTA0ZWRhYTM5MWMKK0F1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KK0RhdGU6CU1vbiBOb3YgMjQgMTA6Mjk6MjYgMjAwOCAtMDYwMAorCisgICAgODV4eDogaW5pdCBnZCBhcyBlYXJseSBhcyBwb3NzaWJsZQorCisgICAgTW92ZWQgdXAgdGhlIGluaXRpYWxpemF0aW9uIG9mIEdEIHNvIEMgY29kZSBsaWtlIHNldF90bGIoKSBjYW4gdXNlCisgICAgZ2QtPmZsYWdzIHRvIGRldGVybWluZSBpZiB3ZSd2ZSByZWxvY2F0ZWQgb3Igbm90IGluIHRoZSBmdXR1cmUuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBhZWQ0NjFhZjgxMDEyYTM5OGEyMDVlOWJlNjdhYjM3NjY3NDkxODM4CitBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CitEYXRlOglNb24gTm92IDI0IDEwOjI5OjI1IDIwMDggLTA2MDAKKworICAgIDg1eHg6IEZpeCByZWxvY2F0aW9uIG9mIENDU1JCQVIKKworICAgIElmIHRoZSB2aXJ0dWFsIGFkZHJlc3MgZm9yIENDU1JCQVIgaXMgdGhlIHNhbWUgYWZ0ZXIgcmVsb2NhdGlvbiBidXQKKyAgICB0aGUgcGh5c2ljYWwgYWRkcmVzcyBpcyBjaGFuZ2luZyB3ZSdkIGVuZCB1cCBoYXZpbmcgdHdvIFRMQiBlbnRyaWVzIHdpdGgKKyAgICB0aGUgc2FtZSBWQS4gIEluc3RlYWQgd2UgbmV3IHVzIHRoZSBuZXcgQ0NTUkJBUiB2aXJ0IGFkZHJlc3MgKyA0ayBhcyBhCisgICAgdGVtcCB2aXJ0IGFkZHJlc3MgdG8gYWNjZXNzIHRoZSBvbGQgQ0NTUkJBUiB0byByZWxvY2F0ZSBpdC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisgICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGVhMTU0YTE3ODExMzVkODIyZWVkZWU3NTY3Y2MxNTYwODllYWU5M2MKK0F1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KK0RhdGU6CU1vbiBOb3YgMjQgMTA6MjU6MTQgMjAwOCAtMDYwMAorCisgICAgRlNMOiBNb3ZlZCBCUl9QSFlTX0FERFIgZm9yIGxvY2FsYnVzIHRvIGNvbW1vbiBoZWFkZXIKKworICAgIFRoZSBCUl9QSFlTX0FERFIgbWFjcm8gaXMgdXNlZnVsIG9uIGFsbCBtYWNoaW5lcyB0aGF0IGhhdmUgbG9jYWwgYnVzCisgICAgd2hpY2ggaXMgcHJldHR5IG11Y2ggYWxsIDgzeHgvODV4eC84Nnh4IGNoaXBzLgorCisgICAgQWRkaXRpb25hbGx5IG1vc3QgODV4eCAmIDg2eHggd2lsbCBuZWVkIGl0IGlmIHRoZXkgd2FudCB0byBzdXBwb3J0CisgICAgMzYtYml0IHBoeXNpY2FsIGFkZHJlc3Nlcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisgICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDk0MjdjY2RlMDM1NWEyZWJmNDc0NTRlOGUxYmU1OWY1Yjk4NjRlMDgKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CU1vbiBEZWMgMSAxMzo0NzoxMiAyMDA4IC0wNjAwCisKKyAgICA4NXh4OiBBZGQgUE9SREVWU1JfUENJMSBkZWZpbmUKKworICAgIEFkZCBkZWZpbmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgUENJMSBpbnRlcmZhY2UgaXMgaW4gUENJIG9yIFBDSVggbW9kZS4KKworICAgIENvbnZlcnQgdXNlcnMgb2YgdGhlIG9sZCBQT1JERVZTUl9QQ0kgY29uc3RhbnQgdG8gdXNlIE1QQzg1eHhfUE9SREVWU1JfUENJMQorCisgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCAzNWRiMWM2ZDM0YjU3YWUxNWU5OWNmMDNjOGU4ZjhhNjE0OGQ3NGYzCitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJRnJpIE5vdiAyMSAxOToyNDoyMiAyMDA4IC0wNjAwCisKKyAgICBkcml2ZXJzL2ZzbF9wY2lfaW5pdDogRml4IGluYm91bmQgd2luZG93IG1hcHBpbmcgYnVnCisKKyAgICBUaGUgY3VycmVudCBjb2RlIHdpbGwgY2F1c2UgdGhlIGNyZWF0aW9uIG9mIGEgNEdCIHdpbmRvdworICAgIHN0YXJ0aW5nIGF0IDAgaWYgd2UgaGF2ZSBtb3JlIHRoYW4gNEdCIG9mIFJBTSBpbnN0YWxsZWQsCisgICAgd2hpY2ggb3ZlcmxhcHMgd2l0aCBQQ0lfTUVNIHNwYWNlIGFuZCBjYXVzZXMgcGNpX2J1c190b19waHlzKCkKKyAgICB0byByZXR1cm4gZXJyb25lb3VzIGluZm9ybWF0aW9uLiBMaW1pdCB0aGUgc2l6ZSB0byA0R0IgLSAxOworICAgIHdoaWNoIGNhdXNlcyB0aGUgY29kZSB0byBjcmVhdGUgb25lIDJHQiBhbmQgb25lIDFHQiB3aW5kb3cKKyAgICBpbnN0ZWFkLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgorICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisgICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDVhMTA1YTMzM2RhYjZhMjNlOTJkNzYzY2U3NmQ2ZjMxZDU3ZjQ1ZGYKK0F1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVRodSBOb3YgMjAgMTU6MzY6NDggMjAwOCAtMDYwMAorCisgICAgUmVtb3ZlZCB1bnVzZWQgQ09ORklHX0wxX0lOSVRfUkFNIHN5bWJvbC4KKworICAgIFByZXZlbnQgZnVydGhlciB2aXJhbCBwcm9wb2dhdGlvbiBvZiB0aGUgdW51c2VkCisgICAgc3ltYm9sIENPTkZJR19MMV9JTklUX1JBTSBieSBqdXN0IHJlbW92aW5nIGl0LgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KKyAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgNzAwOGQyNmE0MGE3NmY5MGNhZTU4MjRjODEyY2ZlZDQ0OWZiOTdiOAorQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIE9jdCAyOSAwOToyMTo0NCAyMDA4IC0wNTAwCisKKyAgICBmc2wgZGRyIHNraXAgaW50ZXJsZWF2aW5nIGlmIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBSZW1vdmVkIHdoaWxlKDEpIGhhbmcgaWYgbWVtY3RsX2ludGx2X2N0bCBpcyBzZXQgd3JvbmcuCisgICAgUmVtb3ZlIGVtYmVkZGVkIHRhYnMgZnJvbSBzdHJpbmdzLgorCisgICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KKyAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKyAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgZGQzMzJlMThkMDgyZGU3NWVjYTNmYzJjN2M3NzhmNWQ0NTcxYTA5NgorQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CitEYXRlOglUaHUgTm92IDEzIDE4OjA4OjU3IDIwMDggKzAxMDAKKworICAgIDg1eHg6IHNvY3JhdGVzOiBmaXggRERSIFNEUkFNIHRsYiBlbnRyeSBjb25maWd1cmF0aW9uCisKKyAgICBzaW5jZSBjb21taXQgYmUwYmQ4MjM0Yjk3NzdlY2Q2M2M0YzY4NmY3MmFmMDcwZDg4NjUxNworICAgIHRsYiBlbnRyeSBmb3Igc29jcmF0ZXMgRERSIFNEUkFNIHdpbGwgYmUgcmVjb25maWd1cmVkCisgICAgYnkgc2V0dXBfZGRyX3RsYnMoKSBmcm9tIGluaXRkcmFtKCkgY2F1c2luZyBhbgorICAgIGluY29uc2lzdGVuY3kgd2l0aCBwcmV2aW91c2x5IGNvbmZpZ3VyZWQgRERSIFNEUkFNIHRsYgorICAgIGVudHJ5IGZyb20gdGxiX3RhYmxlOgorCisgICAgc29jcmF0ZXM+bDJjYW0gNyA5CisgICAgSURYICBQSUQJICBFUE4gIFNJWkUgViBUUwkgICBSUE4gVTAtVTMgV0lNR0UgVVVVU1NTCisgICAgICA3IDogMDAgMDAwMDAwMDAgMjU2TUIgViAgMCAtPiAwXzAwMDAwMDAwCTAwMDAgLUktRy0gLS0tUldYCisgICAgICA4IDogMDAgMDAwMDAwMDAgMjU2TUIgViAgMCAtPiAwXzAwMDAwMDAwCTAwMDAgLS0tLS0gLS0tUldYCisgICAgICA5IDogMDAgMTAwMDAwMDAgMjU2TUIgViAgMCAtPiAwXzEwMDAwMDAwCTAwMDAgLS0tLS0gLS0tUldYCisKKyAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBwcmVzZW5jZSBvZiB0aGUgRERSIFNEUkFNIHRsYiBlbnRyeSBpbgorICAgIHRoZSB0bGJfdGFibGUgZGVwZW5kZW50IG9uIENPTkZJR19TUERfRUVQUk9NIHRvIGF2b2lkIHRoaXMKKyAgICBpbmNvbnNpc3RlbmN5LgorCisgICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgorICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBhMmNkNTBlZDZlZjBhYzZiMTI3YjNkNmRiNzU2OTc5YTgzMzY3MThkCitBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CitEYXRlOglUdWUgTm92IDExIDEwOjE3OjEwIDIwMDggLTA2MDAKKworICAgIDg1eHg6IEFkZCBDUFUgMiBlcnJhdGEgd29ya2Fyb3VuZCB0byBhbGwgODU0OCBib2FyZHMKKworICAgIEFsbCBtcGM4NTQ4LWJhc2VkIGJvYXJkcyBzaG91bGQgaW1wbGVtZW50IHRoZSBzdWdnZXN0ZWQgd29ya2Fyb3VuZAorICAgIHRvIENQVSAyIGVycmF0YS4gV2l0aG91dCB0aGUgd29ya2Fyb3VuZCwgaXRzIHBvc3NpYmxlIGZvciB0aGUKKyAgICA4NTQ4J3MgY29yZSB0byBoYW5nIHdoaWxlIGV4ZWN1dGluZyBhIG1zeW5jIG9yIG1iYXIgMCBpbnN0cnVjdGlvbgorICAgIGFuZCBhIHNub29wYWJsZSB0cmFuc2FjdGlvbiBmcm9tIGFuIEkvTyBtYXN0ZXIgdGFnZ2VkIHRvIG1ha2UKKyAgICBxdWljayBmb3J3YXJkIHByb2dyZXNzIGlzIHByZXNlbnQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBlNTdmMGZhMTMzM2NkZjNjYTM2MTEwYWFjMjkwMDcxMmE1ZjgyOTc2CitBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgT2N0IDI4IDE3OjUzOjQ1IDIwMDggKzA4MDAKKworICAgIDg1eHg6IHRoZSBERFIgdGxiIGlzIG1pc3NlZCBmb3IgdGhlICFDT05GSUdfU1BEX0VFUFJPTSBjYXNlCisKKyAgICB3ZSBuZWVkIFRMQiBlbnRyeSBmb3IgRERSIGF0ICFTUEQgY2FzZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CisgICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDliMGFkMWIxYzdhMTVmZjY3NDk3ODcwNWM3YzUyMjY0OTc4ZGM1ZDgKK0F1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVR1ZSBPY3QgMjggMTc6NTM6MzggMjAwOCArMDgwMAorCisgICAgODV4eDogcmVtb3ZlIHRoZSB1bnVzZWQgZGRyX2VuYWJsZV9lY2MgaW4gdGhlIGJvYXJkIGZpbGUKKworICAgIFRoZSBERFIgY29udHJvbGxlciBvZiA4NTQ4Lzg1NDQvODU2OC84NTcyLzg1MzYgcHJvY2Vzc29ycworICAgIGhhdmUgdGhlIEVDQyBkYXRhIGluaXQgZmVhdHVyZSwgYW5kIHRoZSBuZXcgRERSIGNvZGUgaXMKKyAgICB1c2luZyB0aGUgZmVhdHVyZSwgYW5kIHdlIGRvbid0IG5lZWQgdGhlIHdheSB3aXRoIERNQSB0bworICAgIGluaXQgbWVtb3J5IGFueSBtb3JlLgorCisgICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KKyAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgNGExMjlhNTdkOTIzZjdjMTVhYTFmNTY3MDI4YTgwYTMyZDY2YTEwMAorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJU3VuIE5vdiAzMCAxOTozNjo1MyAyMDA4ICswMTAwCisKKyAgICBhdDkxcm05MjAwZGs6IEZpeCB0eXBvCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgZWQzYjE4ZTA1YzlhOGZmYTVmYjY0M2RhOWJjZWM3NDUyZTVkNWUwMQorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJU3VuIE5vdiAzMCAxOTozNjo1MCAyMDA4ICswMTAwCisKKyAgICBBVDkxOiByZW1vdmUgbm9uIHN1cHBvcnRlZCBib2FyZCBBVDkxUk05MjAwREYgbWFjcm8KKworICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCBiZDg3Njc3MmVlMDQwOTVlNWRkOTQzZDk3NTE1YTFmMTRiYWQ0YjFjCitBdXRob3I6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+CitEYXRlOglUdWUgRGVjIDIgMTc6Mjc6NTQgMjAwOCArMDEwMAorCisgICAgbXRkL2RhdGFmbGFzaC5jOiBmaXggYSBwcm9ibGVtIHdpdGggdGhlIGxhc3QgcGFydGl0aW9uCisKKyAgICBUaGlzIHBhdGNoIGZpeCB0aGUgcHJvYmxlbSB0aGF0IG9ubHkgdGhlIFtOQl9EQVRBRkxBU0hfQVJFQSAtIDFdIGRhdGFmbGFzaAorICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCB0byB1c2UgdGhlIGFyZWEgdG8gdGhlIGVuZCBvZiBkYXRhZmxhc2ggc2l6ZS4KKyAgICBOb3cgaXQgaXMgcG9zc2libGUgdG8gaGF2ZSBvbmx5IG9uZSBkYXRhZmxhc2ggcGFydGl0aW9uIGZyb20gMCB0byB0aGUgZW5kCisgICAgb2Ygb2YgZGF0YWZsYXNoIHNpemUuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgorCitjb21taXQgMDNmNzk3NzkzYjEyNGRjY2FhZTE0NWI5NzdkMTVkNmNiOWU3NDUwNAorQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgorRGF0ZToJVHVlIERlYyAyIDE3OjIwOjE3IDIwMDggKzAxMDAKKworICAgIGZpeCBzb21lIGNvZGluZyBzdHlsZSB2aW9sYXRpb25zLgorCisgICAgVGhpcyBwYXRjaCBmaXggc29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucy4KKworICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+CisKK2NvbW1pdCA1ZTQ2YjFlNTQxMTJmNGI3ZmQ1MTg1NjY1ZTU3MTUxMDEzMmMxMmE3CitBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KK0RhdGU6CVRodSBOb3YgMjcgMTQ6MTE6MzcgMjAwOCArMDEwMAorCisgICAgT25lTkFORDogQWRkIG1pc3NpbmcgbXRkIGluZm8gc3RydWN0IGJlZm9yZSBjYWxsaW5nIG9uZW5hbmRfZXJhc2UoKQorCisgICAgV2l0aG91dCB0aGlzIHBhdGNoICJzYXZlZW52IiBjcmFzaGVzIHdoZW4gTVREIHBhcnRpdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4KKyAgICBmb3IgdXNlIGluIFVCSSkgdmlhIENPTkZJR19NVERfUEFSVElUSU9OUy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDI5MzgyZDQwNjRmYmFmZjVkYWFjZmY0YzMyMDkzNzBmYTU3MTM5NjYKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CitEYXRlOglUaHUgTm92IDIwIDE2OjQzOjUyIDIwMDggLTA2MDAKKworICAgIG1wYzg2NDE6IEZpeCBlcnJvciBpbiBSRUFETUUKKworICAgIEkgbWFkZSBzb21lIHVwZGF0ZXMgdG8gdGhlIGNvZGUgdGhhdCBkaWRuJ3QgbWFrZSBpdCBpbnRvIHRoZQorICAgIFJFQURNRSAtIGZpeCB0aGlzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDgwMWExOTQ2MTZkOTVlNmZjNDI2YTE3NmQ5NjE1Y2NiZjk4NzZjN2YKK0F1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVRodSBOb3YgMjAgMTI6MDE6MDIgMjAwOCAtMDYwMAorCisgICAgUmVtb3ZlZCB1bnVzZWQgQ09ORklHX0wxX0lOSVRfUkFNIHN5bWJvbC4KKworICAgIFByZXZlbnQgZnVydGhlciB2aXJhbCBwcm9wb2dhdGlvbiBvZiB0aGUgdW51c2VkCisgICAgc3ltYm9sIENPTkZJR19MMV9JTklUX1JBTSBieSBqdXN0IHJlbW92aW5nIGl0LgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGY2OTg3MzhlNDZjYjQ2MWUyOGMyZDU4MjI4YmIzNGEyZmNmNWE0NzUKK0F1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVRodSBOb3YgMjAgMTQ6MDI6NTYgMjAwOCAtMDYwMAorCisgICAgODZ4eDogRml4IG5vbi02NC1iaXQgY29tcGlsYXRpb24gcHJvYmxlbXMuCisKKyAgICBJbnRyb2R1Y2luZyA2NC1iaXQgKDM2LWJpdCkgc3VwcG9ydCBmb3IgdGhlIE1QQzg2NDFIUENOCisgICAgZmFpbGVkIHRvIGFjY29tb2RhdGUgdGhlIG90aGVyIHR3byA4Nnh4IGJvYXJkcy4KKyAgICBJbnRyb2R1Y2UgZGVmaW5pdGlvbnMgZm9yIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTX3tMT1csSElHSH0KKyAgICBDT05GSUdfU1lTX0NDU1JfREVGQVVMVF9EQkFUe1UsTH0gYW5kIENPTkZJR19TWVNfQ0NTUl9ERUZBVUxUX0lCQVR7VSxMfQorICAgIHdpdGggbm9taW5hbCAzMi1iaXQgdmFsdWVzLgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KKyAgICBBY2tlZC1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBiZWJmYzZlZjNlYzk5NGM4ZTE4NzgzMjY5YjFkOGQ0MWY4ZTM4YWZkCitBdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KK0RhdGU6CVdlZCBOb3YgMjYgMTc6NDA6MzcgMjAwOCArMDEwMAorCisgICAgUmVtb3ZlIG9ic29sZXRlIGNvbW1hbmQgKGFwcGx5IGFmdGUgVVNCIHN0eWxlIHBhdGNoLCA4MCBjaGFycyBzdHJpY3QpCisKKyAgICBSZW1vdmUgVVNCIG9ic29sZXRlIGNvbW1tYW5kCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CisgICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgorCitjb21taXQgZGUzOWY4YzE5ZDdjMTIwMTcyNDhjNDlkNDMyZGNiODFkYjY4ZjcyNAorQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CitEYXRlOglXZWQgTm92IDI2IDE3OjQxOjM0IDIwMDggKzAxMDAKKworICAgIFVTQiBzdHlsZSBwYXRjaCwgODAgY2hhcnMgc3RyaWN0CisKKyAgICBVU0IgQ29kZSBzdHlsZSBwYXRjaAorCisgICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgorICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KKworY29tbWl0IGQxMGM1YTg3Y2I4YWZmYmI0ZDM1YTMxMTM3MDMxNmQ0MzgzZDU5OGUKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CUZyaSBOb3YgNyAyMjo0NjoyMSAyMDA4ICswMTAwCisKKyAgICBkcml2ZXJzL3VzYjogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQorCisgICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+CisKK2NvbW1pdCAyMDc3ZTM0OGMyYTg0OTAxMDIyYWQ5NTMxMWI0N2I3MDM2MWU2ZGFhCitBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgorRGF0ZToJVHVlIE5vdiAyNSAxMDo0NzowMiAyMDA4IC0wNjAwCisKKyAgICBOQU5EOiBGaXggbWlzcGxhY2VkIHJldHVybiBzdGF0ZW1lbnQgaW4gbmFuZF97cmVhZCx3cml0ZX1fc2tpcF9iYWQoKS4KKworICAgIFRoaXMgY2F1c2VkIHRoZSBvcGVyYXRpb24gdG8gYmUgbmVlZGxlc3NseSByZXBlYXRlZCBpZiB0aGVyZSB3ZXJlCisgICAgbm8gYmFkIGJsb2NrcyBhbmQgbm8gZXJyb3JzLgorCisgICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDg5Mjk1MDI4ZTdkOGY3YTUyNGY0ODUzMjgyNzlkNzJmZGIxMDIzODUKK0F1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgorRGF0ZToJTW9uIE5vdiAyNCAxMjowOTo1MCAyMDA4ICswMTAwCisKKyAgICBwcGM0eHg6IG1sMzAwIHJlbW92ZSBYaWxpbnggQlNQIGZyb20gbWwzMDAgZm9sZGVyCisKKyAgICBUaGlzIEJTUCBzaG91bGQgYmUgb3V0c2lkZSB1LWJvb3Qgc291cmNlIHRyZWUuCisgICAgVGhlIHNlY29uZCByZWFzb24gaXMgdGhhdCB4aWxpbnggcHBjNDA1IHdhcyBtb3ZlZCB0byBnZW5lcmljIHBsYXRmb3JtLgorCisgICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDI0ZWVhNjIzZDQ5NzRhMTY5MDI2YTk3NWJhMTJmYjIzZDQ4MTU0YjEKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglNb24gTm92IDI0IDE1OjExOjEwIDIwMDggKzAxMDAKKworICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBmZWF0dXJlcworCisgICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBzb21lIHVudXNlZCBmZWF0dXJlcyBmcm9tIHRoZSBQQ0k0MDUgY29uZmlndXJhdGlvbgorICAgIHRvIGtlZXAgVS1Cb290IGltYWdlIHNpemUgYmVsb3cgMTkyay4KKworICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDBjMjM4NWMzYmI1MWY1ZDM5MTFmY2UxZWM0NzIwZGI4NmI1MzRjMmIKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglNb24gTm92IDI0IDE1OjExOjA5IDIwMDggKzAxMDAKKworICAgIHBwYzR4eDogVXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciBQQ0k0MDUKKworICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDM0OGM4NDlkODZhNmYwNzg1NzUyYjliYzQ5N2EzNDY1ODcxM2QxZDEKK0F1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CitEYXRlOglNb24gTm92IDI0IDE1OjExOjA4IDIwMDggKzAxMDAKKworICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBjb2RlIGZyb20gUENJNDA1IGNvZGUKKworICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDU4YzY5NmVlZDgzOWFmODk0ZTAyNjUwNjQ2NjljNDAyZGMyOGIzNzEKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KK0RhdGU6CU1vbiBOb3YgMjQgMjE6NTA6NTkgMjAwOCArMDEwMAorCisgICAgQVQ5MVJNOTIwMERLOiBmaXggYnJva2VuIGJvb3QgZnJvbSBOT1IgZmxhc2gKKworICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CisKK2NvbW1pdCA4MDUyMzUyZjIwYjMzYmVmOGY5ODcyZmM5ODNlYWM3M2Q0NjkzYzM4CitBdXRob3I6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KK0RhdGU6CVR1ZSBOb3YgMTggMTA6NDg6NDYgMjAwOCArMDEwMAorCisgICAgYXQ5MXJtOTIwMDogZml4IGJyb2tlbiBib290IGZyb20gbm9yIGZsYXNoCisKKyAgICBUaGlzIHBhdGNoIGZpeCB0aGUgYnJva2VuIGJvb3QgZnJvbSBOT1IgRmxhc2ggb24gQVQ5MVJNOTIwMCBib2FyZHMsIGlmCisgICAgQ09ORklHX0FUOTFSTTkyMDAgaXMgZGVmaW5lZCBhbmQgbm9yIHByZWxvYWRlciBpcyB1c2VkLgorCisgICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgorCitjb21taXQgMjVlYTY1MmU5MDc1MTZhMjgzYjM4MjM3ZTgzNzEyYTkxOGYxMjVkNworQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KK0RhdGU6CU1vbiBOb3YgMTcgMTU6NTg6MDAgMjAwOCArMDEwMAorCisgICAgVUJJOiBBZGQgcHJvb2Ytb2YtY29uY2VwdCBDRkkgZmxhc2ggc3VwcG9ydAorCisgICAgV2l0aCB0aGlzIHBhdGNoIFVCSSBjYW4gYmUgdXNlZCBvbiBDRkkgZmxhc2ggY2hpcHMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBlNmE3ZWRiYzE3NzhkMjc0MzFhYzY2M2I0MGE3MWRhZmE1ZDIwNTc4CitBdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgorRGF0ZToJTW9uIE5vdiAxNyAxNTo1Nzo1OSAyMDA4ICswMTAwCisKKyAgICBtdGQ6IFJlbW92ZSBhIHByaW50ZigpIGZyb20gYWRkX210ZF9kZXZpY2UoKS4KKworICAgIFJlbW92ZSBhIHByaW50ZigpIGZyb20gYWRkX210ZF9kZXZpY2UoKSwgd2hpY2ggcHJvZHVjZXMgc3B1cmlvdXMgb3V0cHV0LgorCisgICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgOTE4MDllZDUxZDgzMjdhOGRiYmYyOWFhOThhMDkxMTU0YzI4MjE3MQorQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KK0RhdGU6CU1vbiBOb3YgMTcgMTU6NTc6NTggMjAwOCArMDEwMAorCisgICAgY2ZpLW10ZDogQWRkIGNmaS1tdGQgZHJpdmVyLgorCisgICAgQWRkIGNmaS1tdGQgZHJpdmVyLCB3aGljaCBleHBvcnRzIENGSSBmbGFzaCB0byBNVEQgbGF5ZXIuCisgICAgVGhpcyBhbGxvd3MgQ0ZJIGZsYXNoIGRldmljZXMgdG8gYmUgdXNlZCBmcm9tIE1URCBsYXllci4KKworICAgIEJ1aWxkaW5nIG9mIHRoZSBuZXcgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYnkgQ09ORklHX0ZMQVNIX0NGSV9NVEQKKyAgICBvcHRpb24uIEluaXRpYWxpemF0aW9uIGlzIGRvbmUgYnkgY2FsbGluZyBjZmlfbXRkX2luaXQoKSBmcm9tCisgICAgZmxhc2hfaW5pdCgpLgorCisgICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgNmVhODA4ZWZkZjlhYTVkOTA2N2ZiZmFjMzJhY2RlODUzOTEyOWVkMgorQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KK0RhdGU6CU1vbiBOb3YgMTcgMTU6NDk6MzIgMjAwOCArMDEwMAorCisgICAgY2ZpX2ZsYXNoOiBBZGQgaW50ZXJmYWNlIGZvciBmbGFzaCB2ZXJib3NpdHkgY29udHJvbAorCisgICAgQWRkIGludGVyZmFjZSBmb3IgZmxhc2ggdmVyYm9zaXR5IGNvbnRyb2wuIEl0IGFsbG93cworICAgIHRvIGRpc2FibGUgb3V0cHV0IGZyb20gbG93LWxldmVsIGZsYXNoIEFQSS4gSXQgaXMgdXNlZnVsCisgICAgd2hlbiBjYWxsaW5nIHRoZXNlIGxvdy1sZXZlbCBmdW5jdGlvbnMgZnJvbSBjb250ZXh0IG90aGVyCisgICAgdGhhbiBmbGFzaCBjb21tYW5kcyAoZm9yIGV4YW1wbGUgdGhlIE1URC9DRkkgaW50ZXJmYWNlCisgICAgaW1wbG1lbnRhdGlvbikuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBlYmM5Nzg0Y2U2NTI4Mzg1YmI4ZDI1NThlNzgzNjIyZDRiYmYyMGY4CitBdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgorRGF0ZToJVGh1IE5vdiAyMCAxNToxNzozOCAyMDA4ICswMTAwCisKKyAgICBjZmlfZmxhc2g6IEV4cG9ydCBmbGFzaF9zZWN0b3Jfc2l6ZSgpIGZ1bmN0aW9uLgorCisgICAgRXhwb3J0IGZsYXNoX3NlY3Rvcl9zaXplKCkgZnVuY3Rpb24gZnJvbSBkcml2ZXJzL210ZC9jZmlfZmxhc2guYywKKyAgICBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHRoZSB1cGNvbWluZyBjZmktbXRkIGRyaXZlci4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDQ1YWE1YTdmNGQ1YmNiNzk5MjdkZGZjODk2YzFkN2M0MzI2ZTIzNWQKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJTW9uIE5vdiAxNyAxNDo0NToyMiAyMDA4ICswMTAwCisKKyAgICBjZmlfZmxhc2g6IE1ha2UgYWxsIGZsYXNoIGFjY2VzcyBmdW5jdGlvbnMgd2VhaworCisgICAgVGhpcyBwYXRjaCBkZWZpbmVzIGFsbCBmbGFzaCBhY2Nlc3MgZnVuY3Rpb25zIGFzIHdlYWsgc28gdGhhdAorICAgIHRoZXkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYm9hcmQgc3BlY2lmaWMgdmVyc2lvbnMuCisKKyAgICBUaGlzIHdpbGwgYmUgdXNlZCBieSB0aGUgdXBjb21pbmcgVkNUSCBib2FyZCBzdXBwb3J0IHdoZXJlIHRoZSBOT1IKKyAgICBGTEFTSCB1bmZvcnR1bmF0ZWx5IGNhbid0IGJlIGFjY2Vzc2VkIG1lbW9yeS1tYXBwZWQuIFNwZWNpYWwKKyAgICBhY2Nlc3NvciBmdW5jdGlvbnMgYXJlIG5lZWRlZCBoZXJlLgorCisgICAgVG8gZW5hYmxlIHRoaXMgd2VhayBmdW5jdGlvbnMgeW91IG5lZWQgdG8gZGVmaW5lCisgICAgQ09ORklHX0NGSV9GTEFTSF9VU0VfV0VBS19BQ0NFU1NPUlMgaW4geW91ciBib2FyZCBjb25maWcgaGVhZGVyLgorICAgIE90aGVyd2lzZSB0aGUgIm9sZCIgZGVmYXVsdCBmdW5jdGlvbnMgd2lsbCBiZSB1c2VkIHJlc3VsdGluZworICAgIGluIHNtYWxsZXIgY29kZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKyAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgorCitjb21taXQgYTVjNDA2NzAxNzYzMWQ5MDNlMWFmYTZhZDYxNWYwY2UxOWZlYTUxNworQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CitEYXRlOglNb24gTm92IDI0IDA4OjMxOjE2IDIwMDggKzAxMDAKKworICAgIFVCSTogQ2hhbmdlIHBhcnNpbmcgb2Ygc2l6ZSBpbiBjb21tYW5kcyB0byBkZWZhdWx0IHRvIGhleAorCisgICAgQ3VycmVudGx5IHRoZSBzaXplIHBhcmFtZXRlcnMgb2YgdGhlIFVCSSBjb21tYW5kcyAoZS5nLiAidWJpIHdyaXRlIikgYXJlCisgICAgZGVjb2RlZCBhcyBkZWNpbWFsIGluc3RlYWQgb2YgaGV4IGFzIGRlZmF1bHQuIFRoaXMgcGF0Y2ggbm93IGludGVycHJldHMKKyAgICBhbGwgdGhlc2UgdmFsdWVzIGNvbnNpc3RhbnRseSBhcyBoZXgsIGFzIGFsbCBvdGhlciBzdGFuZGFyZCBVLUJvb3QgY29tbWFuZHMKKyAgICBkby4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IGRlMDFjNzZjM2NjYzRlNmM1OTg5MjI4ZWVkNThlOTU1YTNhMWE5NjgKK0F1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorRGF0ZToJRnJpIE5vdiAyMSAxMzowNjowNiAyMDA4ICswMTAwCisKKyAgICBwcGM0eHg6IE1MMiBzaG91bGRuJ3QgaW5jbHVkZSB0aGUgNHh4IEVNQUMgZHJpdmVyCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCAxYTZhMDBkY2M1YmRmYzZlOWI0YjAwZjM5YzFmNTgzYTdmOTZmYzdmCitBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KK0RhdGU6CUZyaSBOb3YgMTQgMTY6MTk6MTkgMjAwOCArMDMwMAorCisgICAgcHBjNHh4OiBrYXRtYWk6IENoYW5nZSBkZWZhdWx0IGNvbmZpZworCisgICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBzdXBwb3J0IGZvciBFWFQyLCBhbmQgaW5jcmVhc2VzIHRoZQorICAgIENPTkZJR19TWVNfQk9PVE1BUFNaIHNpemUgZm9yIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KKyAgICBvZiB0aGUga2F0bWFpIGJvYXJkcyB0byB1c2UgdGhlbSBhcyB0aGUgUkFJRC1yZWZlcmVuY2UKKyAgICBBTUNDIHNldHVwcy4KKworICAgICBFWFQyIGVuYWJsaW5nIGFsbG93cyBvbmUgdG8gYm9vdCBrZXJuZWxzIGZyb20gdGhlIEVYVDIKKyAgICBmb3JtYXR0ZWQgQ29tcGFjdCBGbGFzaCBjYXJkcy4KKworICAgICBDT05GSUdfU1lTX0JPT1RNQVBTWiBpbmNyZWFzaW5nIGFsbG93cyBvbmUgdG8gYm9vdCB0aGUKKyAgICBMaW51eCBrZXJuZWxzLCB3aGljaCB1c2UgUEFHRV9TSVpFIG9mIDI1NktCLiBPdGhlcndpc2UsCisgICAgdGhlIG1lbW9yeSBhcmVhIHdpdGggRFRCIGZpbGUgKHdoaWNoIGlzIHBsYWNlZCBhdCB0aGUKKyAgICBlbmQgb2YgdGhlIGJvb3RtYXAgYXJlYSkgd2lsbCB0dXJuIG91dCB0byBiZSBvdmVybGFwcGVkCisgICAgd2l0aCB0aGUgQlNTIHNlZ21lbnQgb2YgdGhlIDI1NktCIGtlcm5lbCwgYW5kIHplcm9lZAorICAgIGluIGVhcmx5X2luaXQoKSBvZiBMaW51eC4KKworICAgICBBY3R1YWxseSwgaW5jcmVhc2luZyBvZiB0aGUgYm9vdG1hcCBzaXplIGNvdWxkIGJlIGRvbmUKKyAgICB2aWEgc2V0dGluZyBvZiB0aGUgYm9vdG1fc2l6ZSBVLUJvb3QgdmFyaWFibGUsIGJ1dCBpdCBsb29rcworICAgIGxpa2UgdGhlIGN1cnJlbnQgVS1Cb290IGltcGxlbWVudGF0aW9uIGhhdmUgc29tZSBib290bV9zaXplLQorICAgIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBsb3N0LiBJbiBtYW55IHBsYWNlcyB0aHJvdWdoIHRoZSBVLUJvb3QKKyAgICBjb2RlIHRoZSBDT05GSUdfU1lTX0JPT1RNQVBTWiBkZWZpbml0aW9uIGlzIHVzZWQgZGlyZWN0bHkKKyAgICAoaW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVhZCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHRoZQorICAgIGVudmlyb25tZW50KS4gVGhlIHNhbWUgaXMgdHJ1dGggZm9yIHRoZSBib290X2p1bXBfbGludXgoKQorICAgIGZ1bmN0aW9uIGluIGxpYl9wcGMvYm9vdG0uYywgd2hlcmUgVS1Cb290IHRyYW5zZmVycyBjb250cm9sCisgICAgdG8gTGludXggcGFzc2luZyB0aGUgQ09ORklHX1NZU19CT09UTUFQU1ogKG5vdCBib290bV9zaXplKQorICAgIHZhbHVlIHRvIHRoZSBib290aW5nIGtlcm5lbC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBkZGY0NWNjNzU4ZDM5NDU5MWZiOWJjZGNiZTk2NTMwZjczM2YyYmNlCitBdXRob3I6IERhdmUgTWl0Y2hlbGwgPGRtaXRjaDcxQGdtYWlsLmNvbT4KK0RhdGU6CVRodSBOb3YgMjAgMTQ6MDk6NTAgMjAwOCAtMDYwMAorCisgICAgcHBjNHh4OiBDaGFuZ2VkIDQ2MEVYL0dUIE9DTSBUTEIgYW5kIGludGVybmFsIFNSQU0gaW5pdGlhbGl6YXRpb24KKworICAgIEV4cGFuZGVkIE9DTSBUTEIgdG8gYWxsb3cgYWNjZXNzIHRvIDY0SyBPQ00gYXMgd2VsbCBhcyAyNTZLIG9mCisgICAgaW50ZXJuYWwgU1JBTS4KKworICAgIEFkanVzdGVkIGludGVybmFsIFNSQU0gaW5pdGlhbGl6YXRpb24gdG8gbWF0Y2ggdXBkYXRlZCB1c2VyCisgICAgbWFudWFsIHJlY29tbWVuZGF0aW9uLgorCisgICAgT0NNICYgSVNSQU0gYXJlIG5vdyBtYXBwZWQgYXMgZm9sbG93czoKKwkgICAgcGh5c2ljYWwJICAgIHZpcnR1YWwJICAgIHNpemUKKyAgICBJU1JBTSAgIDB4NF8wMDAwXzAwMDAgICAweEUzMDBfMDAwMCAgICAgMjU2aworICAgIE9DTSAgICAgMHg0XzAwMDRfMDAwMCAgIDB4RTMwNF8wMDAwICAgICA2NGsKKworICAgIEEgc2luZ2xlIFRMQiB3YXMgdXNlZCBmb3IgdGhpcyBtYXBwaW5nLgorCisgICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IGIxNGNhNGI2MWE2ODFmNzVmMzEyNTY3NmUwOWQ3Y2U2YWY2NmU5MjcKK0F1dGhvcjogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgorRGF0ZToJVGh1IE5vdiAyMCAxNDowMDo0OSAyMDA4IC0wNjAwCisKKyAgICBwcGM0eHg6IEFkZGVkIHBwYzR4eC1pc3JhbS5oIGZvciBpbnRlcm5hbCBTUkFNIGFuZCBMMiBjYWNoZSBEQ1JzCisKKyAgICBBZGRlZCBpbmNsdWRlL2FzbS1wcGMvcHBjNHh4LWlzcmFtLmggYW5kIG1vdmVkIGludGVybmFsIFNSQU0gYW5kCisgICAgTDIgY2FjaGUgRENScyBmcm9tIHBwYzQ0MC5oIHRvIHRoaXMgbmV3IGhlYWRlci4KKworICAgIEFsc28gY29udmVydGVkIHRoZXNlIERDUiBkZWZpbmVzIGZyb20gbG93ZXJjYXNlIHRvIHVwcGVyY2FzZSBhbmQKKyAgICBtb2RpZmllZCByZWZlcmVuY2luZyBtb2R1bGVzIHRvIHVzZSB0aGVtLgorCisgICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDcxMWUyYjJhZjgyMGQyMWQ5OTMxZDRjZjgwNTdkMzg5NDYwMGZkNTQKK0F1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KK0RhdGU6CVRodSBOb3YgMjAgMTQ6Mzc6NTcgMjAwOCAtMDUwMAorCisgICAgcHBjNHh4OiBEZWxldGUgdW51c2VkIGRlZmluaXRpb25zIGZvciBTRFIwX0REUkNGRyBmcm9tIHBwYzR4eC5oCisKKyAgICBUaGUgZGVmaW5pdGlvbnMgb2YgYml0cyBpbiBTRFJfQ0ZHIGFyZSBpbmNvcnJlY3QsIGFuZCBub3QgdXNlZCB3aXRoaW4KKyAgICBVLUJvb3QuICBUaGVyZWZvcmUsIHRoZXkgY2FuIGJlIHJlbW92ZWQuCisKKyAgICBUaGUgbmFtaW5nIG9mIHRoZSBzZHJfZGRyZGwvc2RyX2NmZyByZWdpc3RlcnMgZG8gbm90IGZvbGxvdyBjb252ZW50aW9ucywKKyAgICBhbmQgYXJlIHVudXNlZCwgc28gdGhleSBjYW4gYmUgcmVtb3ZlZCB0b28uCisKKyAgICBBIGRlZmluaXRpb24gZm9yIFNEUjBfRERSQ0ZHIGlzIGFkZGVkLgorCisgICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBlMjNjN2M5NWE5NmViMGYwNjhlZmU1YzUzMjIxNWExMGExNTEyYTk1CitBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgorRGF0ZToJTW9uIE5vdiAxMCAyMDoxNToyNSAyMDA4ICswMTAwCisKKyAgICBBUk06IE9NQVA6IENvbnZlcnQgSU8gbWFjcm9zCisKKyAgICBDb252ZXJ0IElPIG1hY3JvcyB0byByZWFkeC93cml0ZXguCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KKworY29tbWl0IDI2M2I3NDllMmUyNTQ3M2E0ODc3NmQzMTdiZDJhN2UyZGRjZGQyMTIKK0F1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KK0RhdGU6CVN1biBOb3YgOSAxNTo1MzoxNCAyMDA4ICswMTAwCisKKyAgICBsaWJfYXJtOiBkb19ib290bV9saW51eCgpIC0gY29ycmVjdCBhIHNtYWxsIG1pc3Rha2UKKworICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgYSBzbWFsbCBidWcgaW4gdGhlICJpZiIgY29uZGl0aW9uOgorICAgIHRoZSBwYXJhbWV0ZXIgImZsYWciIGlzIDAgYW5kIHRoZSAiaWYiIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KKyAgICBUaGUgcmVzdWx0IGlzIC0gdGhlIGJvb20gY29tbWFuZCBkb2Vzbid0IHN0YXJ0IHRoZSBrZXJuZWwuCisgICAgQWZmZWN0ZWQgdGFyZ2V0czogYWxsIGFybSBiYXNlZC4KKworICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+CisKK2NvbW1pdCAzZTBjZGEwNzFhNjdjYjU3MDllM2ZhNGZhZjZiMzFhNzMxODU5YWNjCitBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CitEYXRlOglTdW4gTm92IDkgMDA6MTQ6NDYgMjAwOCArMDEwMAorCisgICAgQVQ5MTogRW5hYmxlIFBMTEIgZm9yIFVTQgorCisgICAgQXQgbGVhc3Qgc29tZSAob2xkID8pIHZlcnNpb25zIG9mIHRoZSBBVDkxQm9vdHN0cmFwIGRvIG5vdCBzZXQgdXAgdGhlCisgICAgUExMQiBjb3JyZWN0bHkgdG8gNDggTUh6IGluIG9yZGVyIHRvIG1ha2UgVVNCIGhvc3QgZnVuY3Rpb24gY29ycmVjdGx5LgorCisgICAgVGhpcyBwYXRjaCBzZXRzIHVwIHRoZSBQTExCIHRvIHRoZSBzYW1lIHZhbHVlcyBMaW51eCB1c2VzLCBhbmQgbWFrZXMgVVNCCisgICAgd29yayBvayBvbiB0aGUgZm9sbG93aW5nIENQVXM6CisJLSBBVDkxQ0FQOQorCS0gQVQ5MVNBTTkyNjAKKwktIEFUOTFTQU05MjYzCisKKyAgICBUaGlzIHBhdGNoIGFsc28gZGVmaW5lcyBDT05GSUdfVVNCX1NUT1JBR0UgYW5kIENPTkZJR19DTURfRkFUIGZvciBhbGwKKyAgICB0aGUgcmVsZXZhbnQgQVQ5MUNBUDkvQVQ5MVNBTTkgYXRtZWwgYm9hcmRzLgorCisgICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgYWQyMjlhNDRlMTYyYWYwZjY1ZTU3ZTRlM2RjMTMzZDVmMDM2NGVjYgorQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgorRGF0ZToJRnJpIE5vdiA3IDEzOjU1OjE0IDIwMDggKzAxMDAKKworICAgIEFUOTE6IFVzZSBBVDkxX0NQVV9DTE9DSyBpbiBkaXNwbGF5cworCisgICAgSW50cm9kdWNlIEFUOTFfQ1BVX0NMT0NLIGFuZCB1c2UgaXQgZm9yIGRpc3BsYXlpbmcgdGhlIENQVQorICAgIHNwZWVkIGluIHRoZSBMQ0QgZHJpdmVyLgorCisgICAgQWxzbyBtYWtlIEFUOTFfTUFJTl9DTE9DSyBhbmQgQVQ5MV9NQVNURVJfQ0xPQ0sgcmVmbGVjdCB0aGUKKyAgICBjb3JyZXNwb25kaW5nIGJvYXJkIGNsb2Nrcy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CisKK2NvbW1pdCAyNWZiNGVhYWVhYjNmODg2NjAyMDgxOGY0NzI5ZDk5MGRjYzkxY2YwCitBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KK0RhdGU6CVRodSBOb3YgMjAgMTE6NDY6MjAgMjAwOCArMDEwMAorCisgICAgcHBjNHh4OiBDbGVhciBhbGwgcG90ZW50aWFsbHkgcGVuZGluZyBleGNlcHRpb25zIGluIE1DU1IKKworICAgIFRoaXMgaXMgbmVlZGVkIG9uIENhbnlvbmxhbmRzIHdoaWNoIHN0aWxsIGhhcyBhbiBleGNlcHRpb24gcGVuZGluZworICAgIHdoaWxlIHJ1bm5pbmcgcmVsb2NhdGVfY29kZSgpLiBUaGlzIGxlYWRzIHRvIGEgZmFpbHVyZSBhZnRlciB0cmFwX2luaXQoKQorICAgIGlzIG1vdmVkIHRvIHRoZSB0b3Agb2YgYm9hcmRfaW5pdF9yKCkuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBmYWNkYWQ1ZjI2MDJlODk5YTAxNzQ2OTE2YmVkZGJmOWU4NTZiNWVlCitBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgorRGF0ZToJV2VkIE5vdiAxOSAxMDoxMDozMCAyMDA4ICswMTAwCisKKyAgICBwb3dlcnBjOiA4M3h4OiBhZGQgbWlzc2luZyBUSU1JTkdfQ0ZHMV9DQVNMQVRfKiBkZWZpbmVzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgMmYyYTVjMzcxNGQxN2Y0ZWFkMThiNzEzMTI4YjcyMjZlMGU4MjJmNAorQXV0aG9yOiBIb3dhcmQgR3JlZ29yeSA8R3JlZy5Ib3dhcmRAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVR1ZSBOb3YgNCAxNDo1NTozMyAyMDA4ICswODAwCisKKyAgICBtcGM4M3h4OiBJbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBERFIgbWVtb3J5CisKKyAgICBtb2RpZnkgdGhlIENBUyB0aW1pbmdzLiBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlc2UKKyAgICBzZXR0aW5ncyBkZWNyZWFzZSB2YXJpb3VzIHdhaXQgdGltZXMgaW4gdGhlIEREUiBpbnRlcmZhY2UuCisgICAgQmVjYXVzZSB0aGVzZSB3YWl0IHRpbWVzIGFyZSBpbiBjbG9jayBjeWNsZXMsIGFuZCB0aGUgRERSCisgICAgY2xvY2sgb24gdGhlIDgzMTUgUkRCIHJ1bnMgc2xvd2VyIHRoYW4gb24gc29tZSBvdGhlciA4M3h4CisgICAgcGxhdGZvcm1zLCB3ZSBjYW4gZGlhbCBkb3duIHRoZXNlIHZhbHVlcyB3aXRob3V0IGEgcHJvYmxlbSwKKyAgICB0aGVyZWJ5IGRlY3JlYXNpbmcgdGhlIGxhdGVuY3kgb2YgbWVtb3J5IGEgbGl0dGxlLgorCisgICAgU2lnbmVkLW9mZi1ieTogSG93YXJkIEdyZWdvcnkgPEdyZWcuSG93YXJkQGZyZWVzY2FsZS5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgODAwMGIwODZiMzNhNWE4MWYzZjM5MGYzN2UxNzhkYjc5NTZkYzA4YgorQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorRGF0ZToJRnJpIE9jdCAyNCAxNDo1NTozMyAyMDA4ICswMjAwCisKKyAgICBBUk06IEFkZCBBcG9sbG9uIFVCSSBzdXBwb3J0CisKKyAgICBUbyBlbmFibGUgVUJJIG9uIEFwb2xsb24geW91IG5lZWQgdG8gdW5jb21tZW50IHRoZSBDT05GSUdfU1lTX1VTRV9VQkkKKyAgICBtYWNyby4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgNjk0YTBiM2YxYzBhY2NkMGRlOTRiODk1NTUxNTVkNjlmODAyMjgyNAorQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorRGF0ZToJV2VkIE5vdiAxOSAxMTo0NzowNSAyMDA4ICswMTAwCisKKyAgICBVQkk6IEFkZCBVQkkgY29tbWFuZCBzdXBwb3J0CisKKyAgICBUaGlzIHBhdGNoIGFkZHMgdGhlc2UgVUJJIGNvbW1hbmRzOgorCisgICAgdWJpIHBhcnQgW25hbmR8b25lbmFuZF0gW3BhcnRdIC0gU2hvdyBvciBzZXQgY3VycmVudCBwYXJ0aXRpb24KKyAgICB1YmkgaW5mbyBbbFtheW91dF1dIC1EaXNwbGF5IHZvbHVtZSBhbmQgVUJJIGxheW91dCBpbmZvcm1hdGlvbgorICAgIHViaSBjcmVhdGVbdm9sXSB2b2x1bWUgW3NpemVdIFt0eXBlXSAtIENyZWF0ZSB2b2x1bWUgbmFtZSB3aXRoIHNpemUKKyAgICB1Ymkgd3JpdGVbdm9sXSBhZGRyZXNzIHZvbHVtZSBzaXplIC0gV3JpdGUgdm9sdW1lIGZyb20gYWRkcmVzcyB3aXRoIHNpemUKKyAgICB1YmkgcmVhZFt2b2xdIGFkZHJlc3Mgdm9sdW1lIFtzaXplXSAtIFJlYWQgdm9sdW1lIHRvIGFkZHJlc3Mgd2l0aCBzaXplCisgICAgdWJpIHJlbW92ZVt2b2xdIHZvbHVtZSAtIFJlbW92ZSB2b2x1bWUKKworICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgNThiZTNhMTA1NmQ4OGM2ZDA1ZjNlOTE0Mzg5MjgyODA3ZTY5OTIzYQorQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorRGF0ZToJV2VkIE5vdiAxOSAxNjozODoyNCAyMDA4ICswMTAwCisKKyAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgOC84KQorCisgICAgVGhpcyBwYXRjaCBhZGRzIGJhc2ljIFVCSSAoVW5zb3J0ZWQgQmxvY2sgSW1hZ2UpIHN1cHBvcnQgdG8gVS1Cb290LgorICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgorICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKKyAgICAoc3Bpbl9sb2NrKCkgZXRjLikgaW50byBuby1vcHMuIFNvbWUgc291cmNlIGNvZGUgcGFydHMgaGF2ZSBiZWVuCisgICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCisgICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQorICAgIHBvcnRzL2J1Zy1maXhlcyBmcm9tIHRoZSBMaW51eCB2ZXJzaW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCA0N2FlNjY5M2Y1NGY4MDQ1NWFlMzJjMmUwZDk5NWUwZTRiZGMxNWI5CitBdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CitEYXRlOglXZWQgTm92IDE5IDE2OjM2OjM2IDIwMDggKzAxMDAKKworICAgIFVCSTogQWRkIGJhc2ljIFVCSSBzdXBwb3J0IHRvIFUtQm9vdCAoUGFydCA3LzgpCisKKyAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCisgICAgSXQncyBiYXNlZCBvbiB0aGUgTGludXggVUJJIHZlcnNpb24gYW5kIGJhc2ljYWxseSBoYXMgYSAiT1MiCisgICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscworICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KKyAgICB1bmNvbW1lbnRlZCBieSAiI2lmZGVmIFVCSV9MSU5VWCIuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUKKyAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCisgICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDdlNmVlN2FkMjdkZTUyMTZkYjFiYWVmNzZmMzhjMzQyOWM4ZjRhMmEKK0F1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KK0RhdGU6CVdlZCBOb3YgMTkgMTY6MzI6MzYgMjAwOCArMDEwMAorCisgICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDYvOCkKKworICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KKyAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKKyAgICB0cmFuc2xhdGlvbiB3cmFwcGVyIHRoYXQgZGVmaW5lcyBtb3N0IExpbnV4IHNwZWNpZmljIGNhbGxzCisgICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgorICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQorICAgIHRoaXMgdmVyc2lvbiB3aXRoIHRoZSBMaW51eCB2ZXJzaW9uIGFuZCBzaW1wbGlmaWVzIGZ1dHVyZSBVQkkKKyAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgYzkxYTcxOWRhYTMzMWI1ODU2MTA5MzEzMzcxZTRlY2U1ZWMwNmQ5NgorQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorRGF0ZToJV2VkIE5vdiAxOSAxNjoyODowNiAyMDA4ICswMTAwCisKKyAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgNS84KQorCisgICAgVGhpcyBwYXRjaCBhZGRzIGJhc2ljIFVCSSAoVW5zb3J0ZWQgQmxvY2sgSW1hZ2UpIHN1cHBvcnQgdG8gVS1Cb290LgorICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgorICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKKyAgICAoc3Bpbl9sb2NrKCkgZXRjLikgaW50byBuby1vcHMuIFNvbWUgc291cmNlIGNvZGUgcGFydHMgaGF2ZSBiZWVuCisgICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCisgICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQorICAgIHBvcnRzL2J1Zy1maXhlcyBmcm9tIHRoZSBMaW51eCB2ZXJzaW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBmNDEyZmVmYTA3OWM2YWE5YTk3NjNmNjg2OWJmNzg3ZWE2YmY2ZTFiCitBdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CitEYXRlOglXZWQgTm92IDE5IDE2OjI3OjIzIDIwMDggKzAxMDAKKworICAgIFVCSTogQWRkIGJhc2ljIFVCSSBzdXBwb3J0IHRvIFUtQm9vdCAoUGFydCA0LzgpCisKKyAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCisgICAgSXQncyBiYXNlZCBvbiB0aGUgTGludXggVUJJIHZlcnNpb24gYW5kIGJhc2ljYWxseSBoYXMgYSAiT1MiCisgICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscworICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KKyAgICB1bmNvbW1lbnRlZCBieSAiI2lmZGVmIFVCSV9MSU5VWCIuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUKKyAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCisgICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDJkMjYyYzQ4NTNjYjViNmRkY2UxYTI4YTk2NDFmMmRlMzY4OGQ3ZWEKK0F1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KK0RhdGU6CVdlZCBOb3YgMTkgMTY6MjY6NTQgMjAwOCArMDEwMAorCisgICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDMvOCkKKworICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KKyAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKKyAgICB0cmFuc2xhdGlvbiB3cmFwcGVyIHRoYXQgZGVmaW5lcyBtb3N0IExpbnV4IHNwZWNpZmljIGNhbGxzCisgICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgorICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQorICAgIHRoaXMgdmVyc2lvbiB3aXRoIHRoZSBMaW51eCB2ZXJzaW9uIGFuZCBzaW1wbGlmaWVzIGZ1dHVyZSBVQkkKKyAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgOTYxZGY4MzM2MWFmZjlhMTRmMjI2MjE0MjI0ZWI4YTA2ZTA1YmEyNAorQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorRGF0ZToJV2VkIE5vdiAxOSAxNjoyNTo0NCAyMDA4ICswMTAwCisKKyAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgMi84KQorCisgICAgVGhpcyBwYXRjaCBhZGRzIGJhc2ljIFVCSSAoVW5zb3J0ZWQgQmxvY2sgSW1hZ2UpIHN1cHBvcnQgdG8gVS1Cb290LgorICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgorICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKKyAgICAoc3Bpbl9sb2NrKCkgZXRjLikgaW50byBuby1vcHMuIFNvbWUgc291cmNlIGNvZGUgcGFydHMgaGF2ZSBiZWVuCisgICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCisgICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQorICAgIHBvcnRzL2J1Zy1maXhlcyBmcm9tIHRoZSBMaW51eCB2ZXJzaW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCBmMzk5ZDRhMjgxNzEzZDVlZjJkNzY0ZjA1ZDU0NWZlNjFlM2JkNTY5CitBdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CitEYXRlOglXZWQgTm92IDE5IDE2OjIzOjA2IDIwMDggKzAxMDAKKworICAgIFVCSTogQWRkIGJhc2ljIFVCSSBzdXBwb3J0IHRvIFUtQm9vdCAoUGFydCAxLzgpCisKKyAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCisgICAgSXQncyBiYXNlZCBvbiB0aGUgTGludXggVUJJIHZlcnNpb24gYW5kIGJhc2ljYWxseSBoYXMgYSAiT1MiCisgICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscworICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KKyAgICB1bmNvbW1lbnRlZCBieSAiI2lmZGVmIFVCSV9MSU5VWCIuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUKKyAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCisgICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IGUyOWMyMmY1YWJlNmUwZjRiYWE2MjUxZWZlZDYwNzRjZGZjM2RiNzkKK0F1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KK0RhdGU6CVdlZCBOb3YgMTkgMTY6MjA6MzYgMjAwOCArMDEwMAorCisgICAgTVREOiBBZGQgTVREIHBhcml0aW9uaW5nIGluZnJhc3RydWN0dXJlCisKKyAgICBUaGlzIE1URCBwYXJ0IGluZnJhc3RydWN0dXJlIHdpbGwgYmUgdXNlZCBieSB0aGUgdXBjb21pbmcKKyAgICBVQkkgc3VwcG9ydC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgOWI4MjdjZjE3MjBhY2RhMjQ3M2FmYTUxNjk1NmVhYjZmN2NjYTlhMQorQXV0aG9yOiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+CitEYXRlOglUaHUgT2N0IDE2IDIyOjU0OjAzIDIwMDggKzA1MzAKKworICAgIEFsaWduIGVuZCBvZiBic3MgYnkgNCBieXRlcworCisgICAgTW9zdCBvZiB0aGUgYnNzIGluaXRpYWxpemF0aW9uIGxvb3AgaW5jcmVtZW50cyA0IGJ5dGVzCisgICAgYXQgYSB0aW1lLiBBbmQgdGhlIGxvb3AgZW5kIGlzIGNoZWNrZWQgZm9yIGFuICdlcXVhbCcKKyAgICBjb25kaXRpb24uIE1ha2UgdGhlIGJzcyBlbmQgYWRkcmVzcyBhbGlnbmVkIGJ5IDQsIHNvCisgICAgdGhhdCB0aGUgbG9vcCB3aWxsIGVuZCBhcyBleHBlY3RlZC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgM2Y1MTBkYjUyMmQxNjAxNzlkZmYzZGRjY2U5YjE4ZjYyNDFjMmMyNAorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CU1vbiBOb3YgMTAgMTk6NDU6MzUgMjAwOCAtMDYwMAorCisgICAgbXBjODY0MTogZml4IGFkZHJlc3MtY2VsbHMgZGVmYXVsdCBpbiBvbGQgLmR0cyBkZXRlY3Rpb24KKworICAgIGFkZHJlc3MtY2VsbHMgZGVmYXVsdHMgdG8gMiwgbm90IDE7IHNvIGluIHRoZSB1bmxpa2VseQorICAgIGV2ZW50IHRoYXQgaXQgaXNuJ3Qgc3BlY2lmaWVkLCB0aGlzIHBhdGNoIGlzIHJlcXVpcmVkCisgICAgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBkMDI1YWE0YjIwYTA2MThhMmJhZGEwMTMyYTlhMGE0YWZiNzE3ZjFhCitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJRnJpIE9jdCAzMSAxNzoxNDozOSAyMDA4IC0wNTAwCisKKyAgICBsaWJfcHBjOiBNb3ZlIHRyYXBfaW5pdCB0byBvY2N1ciBlYXJsaWVyCisKKyAgICBEb2luZyB0cmFwX2luaXQgaW1tZWRpYXRlbHkgb25jZSB3ZSdyZSBydW5uaW5nIGZyb20gUkFNCisgICAgbWVhbnMgd2UncmUgbm8gbG9uZ2VyIGRlcGVuZGVudCBvbiB0aGUgcGh5c2ljYWwgbG9jYXRpb24gb2YKKyAgICB0aGUgZmxhc2ggb24gbm9uLUJvb2tFIHBsYXRmb3Jtcy4gQmVmb3JlIHRyYXBfaW5pdCwgdGhvc2UKKyAgICBwbGF0Zm9ybXMgc3dpdGNoIHRvIHJlYWwgbW9kZSBhbmQgZ28gdG8gMHhmZmYwMDEwMCBvbiBleGNlcHRpb24uCisgICAgQWZ0ZXIgdGhlIHN3aXRjaCwgdGhleSBnbyB0byAweDAwMDAwMTAwICBUaGlzIG1ha2VzIGl0IGVhc2llciB0bworICAgIG1vdmUgdGhlIGZsYXNoIGxvY2F0aW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBkNTIwODJiMTJjNmU1NDU3MDVhMTk0MzNhMmY0MTQyNTI2NTM2MTg5CitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJRnJpIE5vdiA3IDEzOjQ2OjE5IDIwMDggLTA2MDAKKworICAgIG1wYzg2NDE6IFRyeSB0byBkZXRlY3Qgb2xkIC5kdHMgZmlsZXMKKworICAgIFNpbmNlIHdlJ3ZlIGNoYW5nZWQgdGhlIG1lbW9yeSBtYXAgb2YgdGhlIGJvYXJkLCBiZSBuaWNlIGFuZAorICAgIGFkZCBzb21lIGNoZWNraW5nIHRvIHRyeSB0byBjYXRjaCBvdXQtb2YtZGF0ZSAuZHRzIGZpbGVzLiAgV2UgZG8KKyAgICB0aGlzIGJ5IGNoZWNraW5nIHRoZSBDQ1NSQkFSIGxvY2F0aW9uIGluIHRoZSAuZHRzIGFuZCBjb21wYXJpbmcKKyAgICBpdCB0byB0aGUgQ0NTUkJBUiBsb2NhdGlvbiBpbiB1LWJvb3QuICBJZiB0aGV5IGRvbid0IG1hdGNoLCBhCisgICAgd2FybmluZyBtc2cgaXMgcHJpbnRlZC4gIFRoaXMgaXNuJ3QgZm9vbHByb29mLCBidXQgaXQncyBzaW1wbGUgYW5kCisgICAgd2lsbCBjYXRjaCBtb3N0IG9mIHRoZSBjYXNlcyB3aGVyZSBhbiBvdXQtb2YtZGF0ZSAuZHRzIGlzIHByZXNlbnQsCisgICAgaW5jbHVkaW5nIGFsbCBvZiB0aGUgY2FzZXMgd2hlcmUgYSBuZXcgdS1ib290IGlzIHVzZWQgd2l0aCBhbiBvbGQKKyAgICBzdGFuZGFyZCBNUEM4NjQxIC5kdHMgZmlsZSBhcyBzdXBwbGllZCB3aXRoIExpbnV4LgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCA4ZGIwNDAwYTI3ODM5ZjkxYzA0N2RjYjgzZjRhMGYwOWUwNTRhMTgwCitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJVGh1IE5vdiA2IDEzOjA0OjA5IDIwMDggLTA2MDAKKworICAgIHRvcGxldmVsIE1ha2VmaWxlOiBBZGQgTVBDODY0MUhQQ05fMzZCSVQgdGFyZ2V0CisKKyAgICBUaGlzIHdpbGwgZW5hYmxlIENPTkZJR19QSFlTXzM2QklUIGZvciBNUEM4NjQxSFBDTi4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgMzExMWQzMmM0OTRlODI1MWI5MDkxNzQ0Nzc5NmE3MjA2Yjc1N2UxZQorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVRodSBOb3YgNiAxNzozNzozNSAyMDA4IC0wNjAwCisKKyAgICBtcGM4NjQxOiBTdXBwb3J0IDM2LWJpdCBwaHlzaWNhbCBhZGRyZXNzaW5nCisKKyAgICBUaGlzIHBhdGNoIGNyZWF0ZXMgYSBtZW1vcnkgbWFwIHdpdGggYWxsIHRoZSBkZXZpY2VzCisgICAgaW4gMzYtYml0IHBoeXNpY2FsIHNwYWNlLCBpbiBhZGRpdGlvbiB0byB0aGUgMzItYml0IG1hcC4KKyAgICBUaGUgQ0NTUiByZWxvY2F0aW9uIGlzIG1vdmVkIChhZ2Fpbiwgc29ycnkpIHRvCisgICAgYWxsb3cgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHRvIGJlIDM2IGJpdHMgLSB0aGlzCisgICAgcmVxdWlyZXMgdHJhbnNsYXRpb24gdG8gYmUgZW5hYmxlZC4gIFdpdGggMzYtYml0IHBoeXNpY2FsCisgICAgYWRkcmVzc2luZyBlbmFibGVkLCB3ZSBhcmUgbm8gbG9uZ2VyIHJ1bm5pbmcgd2l0aCBWQT1QQQorICAgIHRyYW5zbGF0aW9ucy4gIFRoaXMgbWVhbnMgd2UgaGF2ZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgdGhlIHR3byBpbiB0aGUgY29uZmlnIGZpbGUuICBUaGUgZXhpc3RpbmcgcmVnaW9uIG5hbWUgaXMKKyAgICB1c2VkIHRvIGluZGljYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MsIGFuZCBhIF9QSFlTIHZhcmlldHkKKyAgICBpcyBjcmVhdGVkIHRvIHJlcHJlc2VudCB0aGUgcGh5c2ljYWwgYWRkcmVzcy4KKworICAgIExhcmdlIHBoeXNpY2FsIGFkZHJlc3NpbmcgaXMgbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBTZXQgQ09ORklHX1BIWVNfNjRCSVQgaW4gdGhlIGNvbmZpZyBmaWxlIHRvIHR1cm4gdGhpcyBvbi4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgYzc1OWEwMWEwMDIyZGU5Mzc4YTNhNzYxZjQ5Nzg2Zjg3Njg0YzkxNgorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVRodSBOb3YgNiAxNzozNjowNCAyMDA4IC0wNjAwCisKKyAgICBtcGM4NjQxOiBDaGFuZ2UgMzItYml0IG1lbW9yeSBtYXAKKworICAgIFRoZSBtZW1vcnkgbWFwIG9uIHRoZSA4NjQxaHBjbiBpcyBtb2RpZmllZCB0byBsb29rIG1vcmUgbGlrZQorICAgIHRoZSA4NXh4IGJvYXJkczsgdGhpcyBpcyBhIHN0ZXAgdG93YXJkcyBhIG1vcmUgc3RhbmRhcmRpemVkCisgICAgbGF5b3V0IGdvaW5nIGZvcndhcmQuIEFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UsIHdlIG5vdyByZWxvY2F0ZQorICAgIHRoZSBmbGFzaC4KKworICAgIFRoZSByZWdpb25zIGZvciBzb21lIG9mIHRoZSBtYXBwaW5ncyB3ZXJlIGZhciBsYXJnZXIgdGhhbiB0aGV5CisgICAgbmVlZGVkIHRvIGJlLiAgSSBoYXZlIHJlZHVjZWQgdGhlIG1hcHBpbmdzIHRvIG1hdGNoIHRoZQorICAgIGFjdHVhbCBzaXplcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLgorCisgICAgSW4gYWRkaXRpb24gSSBoYXZlIHJlbW92ZWQgdGhlIGNvbW1lbnRzIGF0IHRoZSBoZWFkCisgICAgb2YgdGhlIEJBVCBibG9ja3MgaW4gdGhlIGNvbmZpZyBmaWxlLCByYXRoZXIgdGhhbiB1cGRhdGluZworICAgIHRoZW0uICBUaGVzZSBnZXQgaG9ycmlibHkgb3V0IG9mIGRhdGUsIGFuZCBpdCdzIGEgc2ltcGxlCisgICAgbWF0dGVyIHRvIGxvb2sgYXQgdGhlIGRlZmluZXMgdG8gc2VlIHdoYXQgdGhleSBhcmUgc2V0IHRvCisgICAgc2luY2UgZXZlcnl0aGluZyBpcyByaWdodCBoZXJlIGluIHRoZSBzYW1lIGZpbGUuCisKKyAgICBEb2N1bWVudGF0aW9uIGhhcyBiZWVuIGNoYW5nZWQgdG8gcmVmbGVjdCB0aGUgbmV3IG1hcCwgYXMgdGhpcworICAgIGNoYW5nZSBpcyB1c2VyIHZpc2libGUsIGFuZCBhZmZlY3RzIHRoZSBPUyB3aGljaCBydW5zIHBvc3QtdWJvb3QuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGJmOWE4YzM0MzA5ZWQ5Mjc2MjU4Mjk1ZGI5ZTkyMTJhYWJiMjUzMWEKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzUgMjAwOCAtMDYwMAorCisgICAgbXBjODZ4eDogQ2hhbmdlIGVhcmx5IEZMQVNIIG1hcHBpbmcgdG8gMU0gYXQgQ09ORklHX01PTklUT1JfQkFTRV9FQVJMWQorCisgICAgV2UgZGVmaW5lIENPTkZJR19NT05JVE9SX0JBU0VfRUFSTFkgdG8gZGVmaW5lIHRoZSBpbml0aWFsIGxvY2F0aW9uCisgICAgb2YgdGhlIGJvb3RwYWdlIGluIGZsYXNoLglVc2UgdGhpcyB0byBjcmVhdGUgYW4gZWFybHkgbWFwcGluZworICAgIGRlZmluaXRpb24gZm9yIHRoZSBGTEFTSCwgYW5kIGNoYW5nZSB0aGUgZWFybHlfYmF0cyBjb2RlIHRvIHVzZSB0aGlzLgorCisgICAgVGhpcyAgY2hhbmdlIGZhY2lsaXRhdGVzIHRoZSByZWxvY2F0aW9uIG9mIHRoZSBmbGFzaCBzaW5jZSB0aGUgZWFybHkKKyAgICBtYXBwaW5ncyBhcmUgbm8gbG9uZ2VyIHRpZWQgdG8gdGhlIGZpbmFsIGxvY2F0aW9uIG9mIHRoZSBmbGFzaC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgYzFlMWNmNjk1NDdiMTM4MTczZjg3YTdmODFjNDJhNWQ4ZGJmZGUzZAorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVdlZCBOb3YgNSAxNDo1NTozNCAyMDA4IC0wNjAwCisKKyAgICBtcGM4Nnh4OiBVc2UgU1JSMC8xL3JmaSB0byBlbmFibGUgYWRkcmVzcyB0cmFuc2xhdGlvbiwgbm90IGJscgorCisgICAgVXNpbmcgYSBtdG1zci9ibHIgbWVhbnMgdGhhdCB5b3UgaGF2ZSB0byBiZSBleGVjdXRpbmcgYXQgdGhlCisgICAgc2FtZSB2aXJ0dWFsIGFkZHJlc3Mgb25jZSB5b3UgZW5hYmxlIHRyYW5zbGF0aW9uLiAgVGhpcyBpcworICAgIHVubmVjZXNzYXJpbHkgcmVzdHJpY3RpdmUsIGFuZCBpcyBub3QgcmVhbGx5IGhvdyB0aGlzIGlzCisgICAgdXN1YWxseSBkb25lLiAgQ2hhbmdlIGl0IHRvIHVzZSB0aGUgbW9yZSBjb21tb24gbXRzcHIgU1JSMC9TUlIxCisgICAgYW5kIHJmaSBtZXRob2QuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDZiZjk4YjEzNjJmMGNiMjM3NjIwMzU1ZWQzZTY3NjJmZmY4MjM4OGQKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzMgMjAwOCAtMDYwMAorCisgICAgbXBjODY0MTogbWFrZSBESUFHX0FERFIgPT0gRkxBU0hfQkFTRQorCisgICAgQ3VycmVudGx5LCB0aGF0J3Mgd2hhdCBpdCBpcywgYnV0IGl0J3MgaGFyZGNvZGVkLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCAxNzBkZWFjYjFkZGMzOTE2NGJkYjY4ZjM5NjNlMGMwNDU2YTUzNjliCitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjMyIDIwMDggLTA2MDAKKworICAgIG1wYzg2NDE6IERyb3AgaW1hZ2luYXJ5IHNlY29uZCBmbGFzaCBiYW5rLCBtYXAgOE1CCisKKyAgICBUaGVyZSdzIGEgbG90IG9mIHNldHVwIGFuZCBmb28gZm9yIHRoZSBzZWNvbmQgZmxhc2gKKyAgICBiYW5rLiAgVGhlIHByb2JsZW0gaXMsIHRoaXMgYm9hcmQgZG9lc24ndCBhY3R1YWxseSBoYXZlIG9uZS4KKyAgICBDbGVhbiB0aGlzIHVwLiAgQWxzbywgdGhlIGZsYXNoIGlzIDhNIGluIHNpemUuICBHZXQgcmlkCisgICAgb2YgdGhlIGNvbmZ1c2luZyBhbGlhc2VkIG92ZXJtYXBwaW5nLCBhbmQganVzdCBtYXAgOE0uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDBmMmQ2NjAyN2JmYzYwZGM3ZWVhMmYwOTZhZjg4OTE5ODhjNWFiZTQKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzEgMjAwOCAtMDYwMAorCisgICAgbXBjODY0MTogb25seSBkZWZpbmUgQ09ORklHX0VOVl9TSVpFIG9uY2UKKworICAgIEl0J3MgY3VycmVudGx5IGRlZmluZWQgdHdpY2UgaW5zaWRlIGluIGFuIGlmL2Vsc2UgYmxvY2ssIGJ1dAorICAgIGJvdGggaGFsdmVzIHNldCB0aGUgc2FtZSB2YWx1ZS4gIE1vdmUgdGhlIGRlZmluZSBvdXRzaWRlCisgICAgdGhlIGlmLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCAyNGJmYjQ4YzM1ZmVkNmFkMWYwNDdlM2U0YTI3ZGYzMDI0ODJjZDkzCitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjMwIDIwMDggLTA2MDAKKworICAgIG1wYzg2eHg6IE1vdmUgc2V0dXBfYmF0cyBpbnRvIGNwdV9pbml0X2YKKworICAgIEluIG9yZGVyIHRvIGxhdGVyIGFsbG93IGZvciBhIHBoeXNpY2FsIHJlbG9jYXRpb24gb2YgdGhlCisgICAgZmxhc2gsIHNldHVwX2JhdHMsIHdoaWNoIHNldHMgdXAgdGhlIGZpbmFsIEJBVCBtYXBwaW5nCisgICAgZm9yIHRoZSBib2FyZCwgbmVlZHMgdG8gaGFwcGVuICphZnRlciogaW5pdF9sYXdzKCkuCisgICAgT3RoZXJ3aXNlLCB0aGVyZSB3aWxsIGJlIG5vIHdpbmRvdyBwcm9ncmFtbWVkIGZvciB0aGUgZmxhc2gKKyAgICBhdCB0aGUgbmV3IHBoeXNpY2FsIGxvY2F0aW9uIGF0IHRoZSBwb2ludCB3aGVuIHdlIGNoYW5nZQorICAgIHRoZSBtbXUgdHJhbnNsYXRpb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDA1ZGYzZTVhNjM4YmU4YzViMDg5OWVhZTE3NjZiYmU4ZTRiOTJjMTcKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgTm92IDUgMTQ6NTU6MjkgMjAwOCAtMDYwMAorCisgICAgbXBjODY0MTogUmVtb3ZlIGV4dHJhICIwIiBmcm9tIEJSMiBkZWZpbmUKKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgZWRmM2ZlN2QzOWExZWUwNzM1MzEyOGFmNTIyMTQyMmNlOWNjZmFkNgorQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgorRGF0ZToJVGh1IE9jdCAyMyAwOTowODoxOCAyMDA4IC0wNDAwCisKKyAgICBkcml2ZXJzL3FlL3VlY19waHkuYzogQWRkZWQgUEhZLWxlc3MgKGZpeGVkIFBIWSkgZHJpdmVyLgorCisgICAgQ29waWVkIG92ZXIgdGhlIGZpeGVkIFBIWSBkcml2ZXIgYXMgdXNlZCBpbiBwcDR4eC80eHhfZW5ldC5jLgorICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBQSFktbGVzcyBNQUMgY29ubmVjdGlvbnMgdG8gdGhlIFVFQy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KKworY29tbWl0IDU0YmRjYzlmYjY2NzBhZmRlOWMyNmRjZjM2NGY1ODI4NzliZjIxZDYKK0F1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVRodSBPY3QgMjMgMTY6Mjc6MjQgMjAwOCArMDAwMAorCisgICAgQ29sZEZpcmU6IEFkZCBtaWkgZHJpdmVyIGluIGRyaXZlcnMvbmV0CisKKyAgICBBbGwgQ0YgcGxhdGZvcm1zJyBtaWkuYyBhcmUgY29uc29saWRhdGVkIGludG8gb25lCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCAyNWE4NTkwNjZiM2FmMTA3MGViNjlmMTIwMjIxMTNjMGE5MWJkODEzCitBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CitEYXRlOglNb24gT2N0IDI3IDIzOjUzOjE3IDIwMDggLTA3MDAKKworICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFBQQzR4eCBFTUFDIHRvIGNwdV9ldGhfaW5pdCgpCisKKyAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKKworICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisgICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KKworY29tbWl0IDRkMDNhNGUyMGU1ODU1MmNiOTZkNjFhMGU4YjU2Y2RiNmNjNjAxMjYKK0F1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KK0RhdGU6CVN1biBOb3YgOSAyMToyOToyMyAyMDA4IC0wODAwCisKKyAgICBNb3ZlZCBQUEM0eHggRU1BQyBkcml2ZXIgdG8gZHJpdmVycy9uZXQKKworICAgIEFsc28gY2hhbmdlZCBwYXRoIGluIGFsbCBsaW5rZXIgc2NyaXB0cyB0aGF0IHJlZmVyZW5jZSB0aGlzIGRyaXZlcgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KKyAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgorCitjb21taXQgOTZlMjFmODZlODI2NmVkNDA3NTllNTQ5NWVlNDYxMjY1ZDdmNmQyOAorQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorRGF0ZToJTW9uIE9jdCAyNyAyMzo1MDoxNSAyMDA4IC0wNzAwCisKKyAgICBDaGFuZ2VkIFBQQzR4eCBFTUFDIGRyaXZlciB0byByZXF1aXJlIENPTkZJR19QUEM0eHhfRU1BQworCisgICAgQWxsIGluLXRyZWUgSUJNL0FNQ0MgUFBDNHh4IGJvYXJkcyB1c2luZyB0aGUgRU1BQyBnZXQgdGhpcyBuZXcgQ09ORklHCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CisKK2NvbW1pdCA5ZWI3OWJkODg1NmJjYWI4OTZlZDVlMWYxYmNhMTU5ODA3YTEyNGRkCitBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CitEYXRlOglUaHUgT2N0IDIzIDIyOjAyOjQ5IDIwMDggLTA3MDAKKworICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIE1QQzhYWCBTQ0MgdG8gY3B1X2V0aF9pbml0KCkKKworICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYworCisgICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KKworY29tbWl0IGE5YmVjOTZkNjM1OWFjOWY5MGE4NTI5NjJiZjMwNDBjYWQ5ZTAyNTYKK0F1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KK0RhdGU6CVdlZCBPY3QgMjIgMjM6NDc6NTEgMjAwOCAtMDcwMAorCisgICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTVBDODIyMCBGRUMgdG8gY3B1X2V0aF9pbml0KCkKKworICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYworCisgICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KKworY29tbWl0IDBlODQ1NGU5OTAzODVhNThmNzA4YzJmYzI2ZDMxYWMwNDFjN2E2YzUKK0F1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KK0RhdGU6CVdlZCBPY3QgMjIgMjM6MzI6NDggMjAwOCAtMDcwMAorCisgICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUUUgRXRoZXJuZXQgY29udHJvbGxlciB0byBjcHVfZXRoX2luaXQoKQorCisgICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorCitjb21taXQgMzQ1NmExNDgyNzZkNTQ5NGI1M2VlNDAyNDJlZmI2NDYyZDE2MzUwNAorQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorRGF0ZToJV2VkIE9jdCAyMiAyMzoyMDoyOSAyMDA4IC0wNzAwCisKKyAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBGQ0MgRXRoZXJuZXQgY29udHJvbGxlciB0byBjcHVfZXRoX2luaXQKKworICAgIEFmZmVjdGVkIGJvYXJkczoKKwlTZXZlcmFsIE1QQzh4eCBib2FyZHMKKwlTZXZlcmFsIE1QQzgyNjAvTVBDODI3MiBib2FyZHMKKwlTZXZlcmFsIE1QQzg1eHggYm9hcmRzCisKKyAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKKworICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCA2MmUxNWI0OTdmNWM2MzM0YzA1OTUxMjY3OGM4ZGI3OTQwYWU0YzYxCitBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CitEYXRlOglUaHUgT2N0IDMwIDIyOjE1OjM1IDIwMDggLTA3MDAKKworICAgIEZpeCB0eXBvIGluIGNwdS9tcGM4NXh4L2NwdS5jCisKKyAgICBDT05GSUdfTVBDODV4eF9GRUMgLT4gQ09ORklHX01QQzg1WFhfRkVDCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorCitjb21taXQgNWRmYjNlZTNmNTRlMjM4MmEwOGQ3MjkwNmYwZTc5ZWNmOTQ0ZjZlMworQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgorRGF0ZToJU3VuIE9jdCAxOSAxMjowODo1MCAyMDA4ICswOTAwCisKKyAgICBuZXQ6IE1vdmUgaW5pdGlhbGl6YXRpb24gb2YgQXUxeDAwIFNvQyBldGhlcm5ldCBNQUMgdG8gY3B1X2V0aF9pbml0CisKKyAgICBUaGlzIHBhdGNoIHdpbGwgbW92ZSBhdTF4MDBfZXRoX2luaXRpYWxpemUgZnJvbSBuZXQvZXRoLmMgdG8gY3B1X2V0aF9pbml0CisgICAgYXMgYSBwYXJ0IG9mIG9uZ29pbmcgZXRoX2luaXRpYWxpemUgY2xlYW51cCB3b3JrLiAgVGhlIGZ1bmN0aW9uIHJldCB2YWx1ZQorICAgIGlzIGFsc28gZml4ZWQgYXMgaXQgc2hvdWxkIGJlIG5lZ2F0aXZlIG9uIGZhaWwuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgorICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCBjYzk0MDc0ZWNhYzE4ODVkMThkZGI2ODNlYjkzNGIzYzAyNjhhYTViCitBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CitEYXRlOglGcmkgU2VwIDUgMDE6NTU6MjIgMjAwOCAtMDQwMAorCisgICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgSVhQNFhYX05QRSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGNwdV9ldGhfaW5pdCgpCisKKyAgICBBbHNvLCByZW1vdmVkIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gZnJvbSBuZXQvZXRoLmMKKworICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCBmMmE3ODA2ZmMyM2U4MmQzMGM4NTQ4OTExMzY5ZTBjNTMwNjA3MzU0CitBdXRob3I6IENsaXZlIFN0dWJiaW5ncyA8dWJvb3RAeGVudGVjaC5jby51az4KK0RhdGU6CU1vbiBPY3QgMjcgMTU6MDU6MDAgMjAwOCArMDAwMAorCisgICAgeGlsaW54X2VtYWNsaXRlIGJ1ZmZlciBvdmVycnVuCisKKyAgICBQYXRjaCB0byBmaXggYnVmZmVyIGFsbG9jYXRpb24gc2l6ZSBhbmQgYWxpZ25tZW50LiBCdWZmZXIgbmVlZHMgdG8gYmUgdTMyIGFsaWduZWQgYW5kCisgICAgUEtUU0laRV9BTElHTiBieXRlcyBsb25nLgorCisgICAgQWNrZWQtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCAwMTE1YjE5NTM3MThhMjk2OWY2NDY5ZDNkNWRhNTFiYTExZTEyZDQyCitBdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KK0RhdGU6CUZyaSBTZXAgMjYgMDg6NTk6MTIgMjAwOCAtMDQwMAorCisgICAgTkVUOiBRRTogVUVDOiBNYWtlIHVlY19taWlwaHlfcmVhZCgpIGFuZCB1ZWNfbWlpcGh5X3dyaXRlKCkgdXNlIHRoZSBkZXZuYW1lIGFyZy4KKworICAgIFRoZSBjdXJyZW50IHVlY19taWlwaHlfcmVhZCBhbmQgdWVjX21paXBoeV93cml0ZSBoYXJkY29kZSBhY2Nlc3MgZGV2bGlzdFswXQorICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlc2UgZnVuY3Rpb24gdXNlIHRoZSBkZXZuYW1lIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIGluIHRvCisgICAgYWxsb3cgYWNjZXNzIHRvIHRoZSBwaHkgcmVnaXN0ZXJzIG9mIG90aGVyIGRldmljZXMgaW4gZGV2bGlzdFtdLgorCisgICAgU2lnbmVkLW9mLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZ2VkQ29tLmNvbT4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCA0NGRjYjczMzIwMzNkYjhkZTI4MTBmMmZmZmNhZTMwODRmMTVjOGQ0CitBdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KK0RhdGU6CU1vbiBPY3QgNiAxNTozMTo0MyAyMDA4IC0wNDAwCisKKyAgICBBZGRzIHR3byBtb3JlIGV0aGVybmV0IGludGVyZmFjZSB0byA4M3h4CisKKyAgICBGaXhlZCBjb21waWxlciB3YXJuaW5nICJkZWNsYXJlZCBidXQgdW51c2VkIiBldGg1X3VlY19pbmZvIGFuZCBldGg2X3VlY19pbmZvLgorICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dnZWRDb20uY29tPgorICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisKK2NvbW1pdCBkODAwM2ZhMDM3MzM5MDFiNzNkNmM0NjY3YjRkODBmYzhlYjFkZGQzCitBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CitEYXRlOglGcmkgTm92IDcgMTM6NTQ6MzEgMjAwOCArMDEwMAorCisgICAgQVQ5MTogUmVwbGFjZSBBVDkxX0JBU0VfRU1BQyBieSB0aGUgYm9hcmQgc3BlY2lmaWMgdmFsdWVzLgorCisgICAgQVQ5MV9CQVNFX0VNQUMgaXMgbmV2ZXIgdXNlZCBvdXRzaWRlIHRoZSBib2FyZCBzcGVjaWZpYyBmaWxlcywKKyAgICBzbyByZXBsYWNlIGl0cyB1c2FnZSBieSB0aGUgYm9hcmQgc3BlY2lmaWMgQVQ5MXh4eF9CQVNFX0VNQUMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgorICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CisKK2NvbW1pdCBjOTFlMTdhZmZhMTc1Y2UwNmFmYTg5YjA0NzUyMzAxZWI0YTYxNjY2CitBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CitEYXRlOglGcmkgTm92IDcgMTI6MDk6MjEgMjAwOCArMDEwMAorCisgICAgQVQ5MTogUmVwbGFjZSAodW5kZWZpbmVkKSBBVDkxX0lEX1VTKiBieSB0aGUgYm9hcmQgc3BlY2lmaWMgdmFsdWVzLgorCisgICAgQVQ5MV9JRF9VUzAgLyBBVDkxX0lEX1VTMSAvIEFUOTFfSURfVVMyIHdlcmUgdXNlZCBidXQgbmV2ZXIgZGVmaW5lZC4KKyAgICBTaW5jZSB0aGV5IGFyZSBuZXZlciB1c2VkIG91dHNpZGUgdGhlIGJvYXJkIHNwZWNpZmljIGZpbGVzLCB0aGV5IGNhbgorICAgIGJlIHJlcGxhY2VkIGJ5IHRoZSBib2FyZCBzcGVjaWZpYyBBVDkxeHh4X0lEX1VTMCAvIEFUOTF4eHhfSURfVVMxIC8KKyAgICBBVDkxeHh4X0lEX1VTMi4KKworICAgIEJ1ZyBzcG90dGVkIGJ5IEplc3VzIEFsdmFyZXogPGphbHZhcmV6QG1pY3JvbWludC5jb20+LgorCisgICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgMjg5NjJmNWEyZGU4MWJjMGVlZDFjMGIwOGM2YmZhYTFjYzEzNGVhMgorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJU2F0IE5vdiAxIDEwOjQ3OjU5IDIwMDggKzAxMDAKKworICAgIE1ha2VmaWxlL2F0OTFzYW05OiBtb3ZlIHNvbWUgYXQ5MXNhbTkgdG8gdGhlIGNvcnJlY3Qgc3Vic2VjdGlvbiBmb3IgYXJtOTI2ZWpzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgMTA3OTQzMmUwNGNjZjcxYWEzNjg0MTgxMTg2MTgyY2Q2MzUxMmYxOQorQXV0aG9yOiBTZXJnZXkgTGFwaW4gPHNsYXBpbkBvc3NmYW5zLm9yZz4KK0RhdGU6CUZyaSBPY3QgMzEgMTI6Mjg6NDMgMjAwOCArMDEwMAorCisgICAgQ3VzdG9tIEFGRUI5MjYwIGJvYXJkIHN1cHBvcnQKKworICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgc3VwcG9ydCBmb3IgQUZFQjkyNjAgYm9hcmQsIGEgcHJvZHVjdCBvZgorICAgIE9wZW5Tb3VyY2UgaGFyZHdhcmUgYW5kIHNvZnR3YXJlLiBTb21lIGNvbW1lcnRpYWwgcHJvamVjdHMKKyAgICBhcmUgbWFkZSB3aXRoIHRoaXMgZGVzaWduLiBBIGJvYXJkIGlzIGJhc2ljYWxseSBBVDkxU0FNOTI2MC1FSworICAgIHdpdGggc29tZSBtb2RpZmljYXRpb25zIGFuZCBkaWZmZXJlbnQgcGVyaXBoZXJhbHMgYW5kIGRpZmZlcmVudAorICAgIHBhcnRzIHVzZWQuIE1haW4gcHVycG9zZSBvZiB0aGlzIHByb2plY3QgaXMgdG8gZ2FpbiBleHBlcmllbmNlIGluCisgICAgaGFyZHdhcmUgZGVzaWduLgorICAgIE1vcmUgaW5mbzogaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2FybTlmcGdhLWV2b2x1dGlvbi1ib2FyZAorICAgIChJbiBSdXNzaWFuIG9ubHksIHNvcnJ5KS4KKyAgICBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnk6IHN2bjovLzE5NC44NS4yMzguMjIvaG9tZS91c2Vycy9nZW9yZ2Uvc3ZuL2FybTllYgorCisgICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+CisKK2NvbW1pdCAyNmVlY2QyNGY5NzEzMGU1NmU5YzJjMmFmMGU3MTRlMDViY2U2ZTAwCitBdXRob3I6IFRvbW9oaXJvIE1hc3VidWNoaSA8dG9tb2hpcm9fbWFzdWJ1Y2hpYXR0cmlwZWFrcy5jby5qcD4KK0RhdGU6CVR1ZSBPY3QgMjEgMTM6MTc6MTYgMjAwOCArMDkwMAorCisgICAgQ2hhbmdlIHRvIHVzZSAiZG9fZGl2IiBtYWNybworCisgICAgU2lnbmVkLW9mZi1ieTogVG9tb2hpcm8gTWFzdWJ1Y2hpIDx0b21vaGlyb19tYXN1YnVjaGlAdHJpcGVha3MuY28uanA+CisKK2NvbW1pdCBlMzUyNDk1MzE4ZDgwNTZhMDBmYWEyMWI2MzNiM2U0Mzc0YmZiZjUyCitBdXRob3I6IFJvbWFuIE1hc2hhayA8cm9tZXo3NzdAZ21haWwuY29tPgorRGF0ZToJV2VkIE9jdCAyMiAxNjowMDoyNiAyMDA4IC0wNDAwCisKKyAgICBBUk05MjZFSi1TOiByZWxvY2F0ZSBPTUFQIHNwZWNpZmljICdjcHVpbmZvLmMnIGludG8gT01BUCBkaXJlY3RvcnkKKworICAgIE9NQVAgaWRlbnRpZmljYXRpb24gaXMgaW1wbGVtZW50ZWQgaW4gJ2NwdWluZm8uYycgYW5kIGxvY2F0ZWQgaW4gQVJNOTI2RUotUyBkaXJlY3RvcnkuCisgICAgSXQgbWFrZXMgc2Vuc2UgdG8gcGxhY2UgdGhpcyBmaWxlIGluIE9NQVAgc3BlY2lmaWMgc3ViZGlyZWN0b3J5LCBpLmUuIGNwdS9hcm05MjZlanMvb21hcAorCisgICAgU2lnbmVkLW9mZi1ieTogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+CisKK2NvbW1pdCAyNDhiMmMzNjcyMTBjMDZkYmQ1ZmJkZWNmMjdlOTdmYmU5ZDA1ZmRiCitBdXRob3I6IFJvbWFuIE1hc2hhayA8cm9tZXo3NzdAZ21haWwuY29tPgorRGF0ZToJVHVlIE9jdCAyMSAwMzowMTo0MSAyMDA4IC0wNzAwCisKKyAgICBBUk0vVmVyc2F0aWxlIHBvcnQ6IFJlbW92ZWQgdW51c2VkIGZ1bmN0aW9ucworCisgICAgUmVtb3ZhbCBvZiBuZXZlciB1c2VkIGZ1bmN0aW9ucy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFJvbWFuIE1hc2hhayA8cm9tZXo3NzdAZ21haWwuY29tPgorCitjb21taXQgMTI2NmRmODg3NzgxYzc3OWRlYWY2ZDA1ZWVhMmVmOTBhNDcwY2IzNAorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CU1vbiBOb3YgMyAxNTo0NDowMSAyMDA4IC0wNjAwCisKKyAgICBwb3dlcnBjOiBjaGFuZ2UgODZ4eCBTTVAgYm9vdCBtZXRob2QKKworICAgIFdlIHB1dCB0aGUgYm9vdHBnIGZvciB0aGUgc2Vjb25kYXJ5IGNwdXMgaW50byBtZW1vcnkgYW5kIHVzZQorICAgIEJQVFIgdG8gZ2V0IHRvIGl0LglUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIGNvbnZlcnRpbmcgdG8gdGhlCisgICAgZVBBUFIgYm9vdCBtZXRob2RvbG9neS4gIEFsc28sIHRoZSBjb2RlIGlzIHdyaXR0ZW4gdG8KKyAgICBkZWFsIHByb3Blcmx5IHdpdGggbW9yZSB0aGFuIDRHQiBvZiBSQU0uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGI1NDMxNTYwNjgyZDhmMzE4ZmJjNDlkYjg3Y2ZlMTNhYjQxZDJlZTQKK0F1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CitEYXRlOglGcmkgT2N0IDMxIDE3OjEzOjQ5IDIwMDggLTA1MDAKKworICAgIDg2NDFIUENOOiBDb25maWcgZmlsZSBjbGVhbnVwCisKKyAgICBUaGVyZSBhcmUgc2V2ZXJhbCBpdGVtcyBpbiB0aGUgY29uZmlnIGZpbGUgdGhhdCB3ZXJlIGhhcmRjb2RlZAorICAgIGJ1dCB0aGF0IHNob3VsZCByZWFsbHkgYmUgYmFzZWQgb24gb3RoZXIgY29uZmlnIG9wdGlvbnMsIHNpbmNlCisgICAgdGhlIHJlZ2lvbnMgYXJlIGNvbnRpZ3VvdXMgYW5kIGRlcGVuZCBvbiBiZWluZyBzby4JVGhpcyBjbGVhbnMKKyAgICB0aGF0IHVwIGEgYml0LiAgQWxzbywgYWRkIEJSX1BIWVNfQUREUigpIG1hY3JvIHRvIGNvbnZlcnQKKyAgICBhZGRyZXNzZXMgaW50byB0aGUgcHJvcGVyIGZvcm1hdCBmb3IgQlIgcmVnaXN0ZXJzLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCA0Yzc3ZGUzZjE0NGNhMDg4YzM4NjdiZDYyNDA3MThjMTBmNWE5ZDY5CitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJRnJpIE9jdCAzMSAxNzoxMzozMiAyMDA4IC0wNTAwCisKKyAgICA4Nnh4OiBNYWtlIGRyYW1fc2l6ZSBhIHBoeXNfc2l6ZV90CisKKyAgICBJdCdzIGN1cnJlbnRseSBhIGxvbmcgYW5kIHNob3VsZCBiZSBwaHlzX3NpemVfdC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgMTA0OTkyZmM1NDEzMDJhNmJhYzc0NDQ4ZTAxZTdmZGFkMjBhYmNhMAorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVN1biBOb3YgMiAxODoxOTozMiAyMDA4IC0wNjAwCisKKyAgICBwb3dlcnBjIDg2eHg6IEhhbmRsZSBDQ1NSIHJlbG9jYXRpb24gZWFybGllcgorCisgICAgQ3VycmVudGx5LCB0aGUgQ0NTUiBnZXRzIHJlbG9jYXRlZCB3aGlsZSB0cmFuc2xhdGlvbiBpcworICAgIGVuYWJsZWQsIG1lYW5pbmcgd2UgbmVlZCAyIEJBVCB0cmFuc2xhdGlvbnMgdG8gZ2V0IHRvIGJvdGggdGhlCisgICAgb2xkIGxvY2F0aW9uIGFuZCB0aGUgbmV3IGxvY2F0aW9uLglBbHNvLCB0aGUgREVGQVVMVAorICAgIENDU1IgbG9jYXRpb24gaGFzIGEgZGVwZW5kZW5jeSBvbiB0aGUgQkFUIHRoYXQgbWFwcyB0aGUKKyAgICBGTEFTSCByZWdpb24uICBNb3ZpbmcgdGhlIHJlbG9jYXRpb24gcmVtb3ZlcyB0aGlzIHVubmVjZXNzYXJ5CisgICAgZGVwZW5kZW5jeS4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgYW5kIG1vcmUgaW50dXRpdmUgdG8KKyAgICBtb2RpZnkgdGhlIGJvYXJkJ3MgbWVtb3J5IG1hcC4KKworICAgIFN3YXAgQkFUcyAzIGFuZCA0IG9uIDg2MTAgc28gdGhhdCBhbGwgODZ4eCBib2FyZHMgdXNlIHRoZSBzYW1lCisgICAgQkFUIGZvciBDQ1NSIHNwYWNlLgorCisgICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBhZjVkMTAwZThkNWNkNDlkNjlkNTJkMjBmMTE4MWViMDZkZGI0ZGRmCitBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorRGF0ZToJRnJpIE9jdCAzMSAxNzoxNDoxNCAyMDA4IC0wNTAwCisKKyAgICBtcGM4NjQxOiBNYWtlIFBDSSBhbmQgUklPIG11dHVhbGx5IGV4Y2x1c2l2ZSwgZml4IG5vbi1QQ0kgYnVpbGQKKworICAgIFlvdSBjYW4ndCBhY3R1YWxseSBoYXZlIGJvdGgsIGFuZCB3aXRoIHNvbWUgY29taW5nIGNoYW5nZXMgdG8KKyAgICBjaGFuZ2UgdGhlIG1lbW9yeSBtYXAgZm9yIHRoZSBib2FyZCBhbmQgc3VwcG9ydCAzNi1iaXQgcGh5c2ljYWwsCisgICAgd2UgbmVlZCB0aGUgZXh0cmEgQkFUIHRoYXQgaXMgYmVpbmcgY29uc3VtZWQgYnkgaGF2aW5nIGJvdGguCisKKyAgICBJIGFsc28gbWFrZSBub24tUENJIGNvbmZpZ3MgYnVpbGQgY2xlYW5seSwgZm9yIHRoZSBzYWtlIG9mIHNhbml0eS4KKworICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgorCitjb21taXQgOTg2OTNiODVkNDJmZjQzODM3NWRjNmQ2ZGNhZGM3MGViN2IwNTBiYgorQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CUZyaSBPY3QgMzEgMTc6MTQ6MDAgMjAwOCAtMDUwMAorCisgICAgbXBjODY0MTogU3RvcCBzdXBwb3J0aW5nIG5vbi1QQ0lfUE5QIGNvbmZpZ3MKKworICAgIFdlIGRvbid0IGFjdHVhbGx5IGV2ZXIgZG8gdGhpcywgcmVtb3ZlIHRoZSBjb2RlIHNvIHdlCisgICAgY2FuIHN0b3AgbWFpbnRhaW5pbmcgaXQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGU0ZjY5ZDFiZDIxYTEyMDQ5NzQ0OTg5ZDJkZDZiNTE5OWM5YjhmMjMKK0F1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CUZyaSBPY3QgMjQgMTI6NTk6MTIgMjAwOCArMDAwMAorCisgICAgQ29sZEZpcmU6IEZpeCBNNTMyOUVWQiBhbmQgTTUzNzNFVkIgbmFuZCBpc3N1ZQorCisgICAgRml4IGNvbXBpbGF0aW9uIGlzc3VlIGNhdXNlZCBieSBhIGZldyBtaXNtYXRjaGVzLgorICAgIFByb3ZpZGUgcHJvcGVyIG5hbmQgY2hpcCBzZWxlY3QgZW5hYmxlL2Rpc2FibGUgaW4KKyAgICBuYW5kX2h3Y29udHJvbCgpIHJhdGhlciB0aGFuIGluIGJvYXJkX25hbmRfaW5pdCgpCisgICAganVzdCBlbmFibGUgb25jZS4gUmVtb3ZlIHJlZHVuZGFudCBsb2NhbCBuYW5kIGRyaXZlcgorICAgIGZ1bmN0aW9ucyAtIG5hbmRfcmVhZF9ieXRlKCksIG5hbmRfd3JpdGVfYnl0ZSgpIGFuZAorICAgIG5hbmRfZGV2X3JlYWR5KCkgdG8gdXNlIGNvbW1vbiBuYW5kIGRyaXZlci4KKworICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCAxYjI3MDg0NDIyMjRhNTUxYTBiODY1YjUyNzEwMzA2MzMzODg4OTMyCitBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgT2N0IDIyIDExOjU1OjMwIDIwMDggKzAwMDAKKworICAgIENvbGRGaXJlOiBGaXggY29tcGlsYXRpb24gZXJyb3IKKworICAgIFRoZSBlcnJvciB3YXMgY2F1c2VkIGJ5IHRoZSBjaGFuZ2UgZm9yIHN0cm1oeigpIGluIGNwdS5jLgorICAgIEEgZmV3IG9mIHRoZW0gd2VyZSBvbmUgZXh0cmEgY2xvc2UgcGFyZW50aGVzaXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgNTM2ZTdkYWMxNjc2OTk1NDkxNWE0ODRlNjgyYTJlZmIyODY5OTEzMworQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIE9jdCAyMiAxMTozODoyMSAyMDA4ICswMDAwCisKKyAgICBDb2xkRmlyZTogQWRkIE1DRjUzMDF4IENQVSBhbmQgTTUzMDE3RVZCIHN1cHBvcnQKKworICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBhMjFkMGMyY2M5YWRkODg5NGQ5NzFhYjc5MWY0MDMyZjA3N2RiODE3CitBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgT2N0IDIxIDE1OjM3OjAyIDIwMDggKzAwMDAKKworICAgIENvbGRGaXJlOiBBZGQgU0JGIHN1cHBvcnQgZm9yIE01MjI3N0VWQgorCisgICAgQWRkIHNlcmlhbCBib290IHN1cHBvcnQKKworICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCBiMjAyODE2YzYxMDQyYzE4M2ZlNjdkMDk3YTU4OTNiMGYyZGFmYmEwCitBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgT2N0IDIxIDE0OjE5OjI2IDIwMDggKzAwMDAKKworICAgIENvbGRGaXJlOiBVc2UgQ0ZJIGRyaXZlciBmb3IgTTUyNzJDMworCisgICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGYzOTYyZDNmNTc0ZTVhMWNmZmFjZDRlOWJjNDg3MTMwNjBhMmEzMTQKK0F1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KK0RhdGU6CVR1ZSBPY3QgMjEgMTM6NDc6NTQgMjAwOCArMDAwMAorCisgICAgQ29sZEZpcmU6IFJlbG9jYXRlIEZFQydzIEdQSU8gYW5kIG1paSBmdW5jdGlvbnMgcHJvdG9jb2xzCisKKyAgICBQbGFjZSBGRUMgcGluIGFzc2lnbm1lbnRzIGluIGNwdV9pbml0LmMgZnJvbSBwbGF0Zm9ybSdzCisgICAgbWlpLmMKKworICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCA2ZTgwZjVhYTA5ZjhkNDFiYWM1MGIzOGRjNzQ4OGVjZDIyMTA3ODAyCitBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgT2N0IDIxIDEyOjE1OjQ0IDIwMDggKzAwMDAKKworICAgIENvbGRGaXJlOiBSZW1vdmUgcGxhdGZvcm1zIG1paS5jIGZpbGUKKworICAgIFdpbGwgdXNlIG1jZm1paS5jIGRyaXZlciBpbiBkcml2ZXJzL25ldCByYXRoZXIgdGhhbgorICAgIGtlZXAgY3JlYXRpbmcgbmV3IG1paS5jIGZvciBlYWNoIGZ1dHVyZSBwbGF0Zm9ybS4KKyAgICBSZW1vdmUgRUIrTUNGLUVWMTIzLCBjb2JyYTUyNzIsIGlkbXIsIE01MjM1RVZCLAorICAgIE01MjcxRVZCLCBNNTI3MkMzLCBNNTI3NUVWQiwgTTUyODJFVkIsIE01MzI5RVZCLAorICAgIE01MzczRVZCLCBNNTQ0NTFFVkIsIE01NDQ1NUVWQiwgTTU0N3hFVkIsIGFuZCBNNTQ4eEVWQidzCisgICAgbWlpLmMKKworICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCAwMTI1MjJmZWYzYjM4MjQ2OTEyNWJlYjQ2YTMxNWFiNGRlZTAyZmIwCitBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CitEYXRlOglUdWUgT2N0IDIxIDEwOjAzOjA3IDIwMDggKzAwMDAKKworICAgIENvbGRGaXJlOiBNb2R1bGVzIGhlYWRlciBmaWxlcyBjbGVhbnVwCisKKyAgICBDb25zb2xpZGF0ZSBBVEEsIGVQT1JULCBRU1BJLCBGbGV4Q2FuLCBQV00sIFJORywKKyAgICBNREhBLCBTS0hBLCBJTlRDLCBhbmQgRmxleEJ1cyBzdHJ1Y3R1cmVzIGFuZAorICAgIGRlZmluaXRpb25zIGluIGltbWFwXzV4eHguaCB0byBtb3JlIHVuaWZ5IG1vZHVsZXMKKyAgICBoZWFkZXIgZmlsZXMuIEFwcGVuZCBEU1BJIHN1cHBvcnQgZm9yIG01NDd4Xzh4LgorICAgIFNTSSBjbGVhbnVwLiBSZW1vdmUgVVNCIEhvc3Qgc3RydWN0dXJlIGZyb20gaW1tYXBfNTM5LmguCisgICAgQXBwbHkgY2hhbmdlcyB0byB1c2UgRmxleEJ1cyBzdHJ1Y3R1cmVzIGluIG1jZjUyeDIncworICAgIGNwdV9pbml0LmMgYW5kIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgYWMyMzMxYWVlOTlhZDM2YmUwZmNmZWQ4YzQ5OTIyZTNjNjFiNTc2ZAorQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgorRGF0ZToJVHVlIE9jdCAyMSAwODo1MjozNiAyMDA4ICswMDAwCisKKyAgICBDb2xkRmlyZTogUmVtb3ZlIGxpbmtlciBmaWxlCisKKyAgICBFYWNoIGRpZmZlcmVudCBidWlsZCBmb3IgTTU0NDU1RVZCIGFuZCBNNTIzNUVWQiB3aWxsCisgICAgY3JlYXRlIGEgdS1ib290LmxkcyBsaW5rZXIgZmlsZS4gSXQgaXMgcmVkdW5kYW50IHRvCisgICAga2VlcCB0aGUgdS1ib290LmxkcworCisgICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDA4MjkzMjMwNzNjNTA1NTU2ZWQ1ZjUwNzNmOTFhZGI1MDQ1ODRkNDUKK0F1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KK0RhdGU6CUZyaSBPY3QgMzEgMTE6MjY6NDQgMjAwOCAtMDUwMAorCisgICAgcHBjOiBGaXggY29tcGlsZSB3YXJuaW5ncyB3aGVuICFDT05GSUdfT0ZfTElCRkRUCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgorCitjb21taXQgYTgwYjIxZDUxMjc1ODMxNzFkNmU5YmM3ZjcyMjk0NzY0MTg5ODAxMgorQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorRGF0ZToJRnJpIE9jdCAzMSAxMjoxMjoxMiAyMDA4ICswMTAwCisKKyAgICBjb21tb24vTWFrZWZpbGU6IGNyZWF0ZSBvdGhlcnMgZ3JvdXAgZm9yIG5vbiBjb3JlLCBlbnZpcm9ubWVudCBhbmQgY29tbWFuZCBmaWxlcworCisgICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKworY29tbWl0IDYwYzY4ZDljMWM2ZDE4Y2UwMmM4NjJhMDU3MThmZDk0Zjk3YzEzZDAKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CUZyaSBPY3QgMzEgMDE6MTM6MzcgMjAwOCArMDEwMAorCisgICAgVFFNODI2MDogdXNlIENGSSBmbGFzaCBkcml2ZXIgaW5zdGVhZCBvZiBjdXN0b20gZHJpdmVyLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDIwZDA0Nzc0ZjRlZjNmNmUzODk3NDYzNmUwZTM2YWUwZjBiNTUwMWYKK0F1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgorRGF0ZToJVGh1IE9jdCAzMCAxNzozNTozMCAyMDA4IC0wNTAwCisKKyAgICBDb25zb2xpZGF0ZSBNQVgvTUlOIGRlZmluaXRpb25zCisKKyAgICBUaGVyZSB3ZXJlIHNldmVyYWwsIG5vdyB0aGVyZSBpcyBvbmUgKHR3byBpZiB5b3UgY291bnQgdGhlIGxvd2VyLWNhc2UKKyAgICB2ZXJzaW9ucykuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CisKK2NvbW1pdCAyOThlNDc2YzY2ZmQ4OGQwYmM0ZjAzNzExMTg2NTJkMmI1ZGU0ZThhCitBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgorRGF0ZToJVGh1IE9jdCAzMCAwOToyMzowOSAyMDA4ICswMTAwCisKKyAgICBtZ3N1dmQ6IHJlbW92ZSB1bnVzZWQgZGVmaW5lcyBpbiBjb25maWcgZmlsZS4KKworICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgorCitjb21taXQgM2NiZDgyMzExNmVhOGI3YzY1NGUyNzVhOGMyZmNhODdjZDFmNWRjNQorQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorRGF0ZToJU3VuIE5vdiAyIDE2OjE0OjIyIDIwMDggKzAxMDAKKworICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCiBjb21taXQgYTQ3Zjk1N2FiNTIzMDE5OTkyZmRlZjg1N2FmMDFiZDcxYzU4YTRkYQogQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgogRGF0ZToJRnJpIE9jdCAzMSAyMjozMzoyMSAyMDA4ICswMTAwCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDEyNzYwNGIuLmZjYzIwNDMgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0yNjMsNiArMjYzLDEwIEBACiAKIAlNUEM4NjQxSFBDTglNUEM4NjQxRAogCitSb24gTWFkcmlkIDxpbmZvQHNoZWxkb25pbnN0LmNvbT4KKworCVNJTVBDODMxMwlNUEM4MzEzCisKIERhbiBNYWxlayA8ZGFuQGVtYmVkZGVkYWxsZXkuY29tPgogCiAJc3R4Z3AzCQlNUEM4NXh4CkBAIC0zNzQsNiArMzc4LDcgQEAKIAogCWlkczgyNDcJCU1QQzgyNDcKIAlqdXBpdGVyCQlNUEM1MjAwCisJa21ldGVyMQkJTVBDODM2MAogCW1nY29nZQkJTVBDODI0NwogCW1nc3V2ZAkJTVBDODUyCiAJbXVjbWM1MgkJTVBDNTIwMApAQCAtNDExLDYgKzQxNiwxMCBAQAogCiAJTVBDODI2NkFEUwlNUEM4MjY2CiAKK1BldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CisKKwlYUEVESVRFNTIwMAlNUEM4NTQ4CisJWFBFRElURTUzNzAJTVBDODU3MgogCiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+CiAKQEAgLTcwMyw4ICs3MTIsNyBAQAogCiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CiAKLQlNTDQwMQkJTWljcm9CbGF6ZQotCVhVUFYyUAkJTWljcm9CbGF6ZQorCW1pY3JvYmxhemUtZ2VuZXJpYwlNaWNyb0JsYXplCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ29sZGZpcmUgU3lzdGVtczoJCQkJCQkJIwpkaWZmIC0tZ2l0IGEvTUFLRUFMTCBiL01BS0VBTEwKaW5kZXggYTE2NTQ5Yy4uNTMwZmU4MiAxMDA3NTUKLS0tIGEvTUFLRUFMTAorKysgYi9NQUtFQUxMCkBAIC0zMzUsNiArMzM1LDcgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogTElTVF84M3h4PSIJCVwKKwlrbWV0ZXIxCQlcCiAJTVBDODMxM0VSREJfMzMJXAogCU1QQzgzMTNFUkRCX05BTkRfNjYJXAogCU1QQzgzMTVFUkRCCVwKQEAgLTM1Miw2ICszNTMsNyBAQAogCU1QQzgzN1hFUkRCCVwKIAlNVkJMTTcJCVwKIAlzYmM4MzQ5CQlcCisJU0lNUEM4MzEzX0xQCVwKIAlUUU04MzR4CQlcCiAiCiAKQEAgLTM3Miw2ICszNzQsNyBAQAogCU1QQzg1NjBBRFMJXAogCU1QQzg1NjhNRFMJXAogCU1QQzg1NzJEUwlcCisJTVBDODU3MkRTXzM2QklUCVwKIAlQTTg1NAkJXAogCVBNODU2CQlcCiAJc2JjODU0MAkJXApAQCAtMzg1LDYgKzM4OCw4IEBACiAJVFFNODU0OAkJXAogCVRRTTg1NTUJCVwKIAlUUU04NTYwCQlcCisJWFBFRElURTUyMDAJXAorCVhQRURJVEU1MzcwCVwKICIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNjU2LDYgKzY2MSw3IEBACiAKIExJU1RfSTQ4Nj0iCQlcCiAJc2M1MjBfY2RwCVwKKwlzYzUyMF9lTkVUCVwKIAlzYzUyMF9zcHVuawlcCiAJc2M1MjBfc3B1bmtfcmVsCVwKICIKQEAgLTY5NSwxMCArNzAxLDkgQEAKICMjIE1pY3JvQmxhemUgU3lzdGVtcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1MSVNUX21pY3JvYmxhemU9IglcCi0JbWw0MDEJCVwKLQlzdXpha3UJCVwKLQl4dXB2MnAJCVwKK0xJU1RfbWljcm9ibGF6ZT0iCQkJXAorCW1pY3JvYmxhemUtZ2VuZXJpYwkJXAorCXN1emFrdQkJCQlcCiAiCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggZjhmZTI5Yy4uOGM3MzU4NiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTIxLDggKzIxLDggQEAKICMgTUEgMDIxMTEtMTMwNyBVU0EKICMKIAotVkVSU0lPTiA9IDIwMDgKLVBBVENITEVWRUwgPSAxMAorVkVSU0lPTiA9IDIwMDkKK1BBVENITEVWRUwgPSAwMQogU1VCTEVWRUwgPQogRVhUUkFWRVJTSU9OID0KIGlmbmVxICIkKFNVQkxFVkVMKSIgIiIKQEAgLTE5Nyw3ICsxOTcsNyBAQAogT0JKUyAgPSBjcHUvJChDUFUpL3N0YXJ0Lm8KIGlmZXEgKCQoQ1BVKSxpMzg2KQogT0JKUyArPSBjcHUvJChDUFUpL3N0YXJ0MTYubwotT0JKUyArPSBjcHUvJChDUFUpL3Jlc2V0Lm8KK09CSlMgKz0gY3B1LyQoQ1BVKS9yZXNldHZlYy5vCiBlbmRpZgogaWZlcSAoJChDUFUpLHBwYzR4eCkKIE9CSlMgKz0gY3B1LyQoQ1BVKS9yZXNldHZlYy5vCkBAIC0yMjgsNiArMjI4LDcgQEAKIExJQlMgKz0gZHJpdmVycy9ibG9jay9saWJibG9jay5hCiBMSUJTICs9IGRyaXZlcnMvZG1hL2xpYmRtYS5hCiBMSUJTICs9IGRyaXZlcnMvZnBnYS9saWJmcGdhLmEKK0xJQlMgKz0gZHJpdmVycy9ncGlvL2xpYmdwaW8uYQogTElCUyArPSBkcml2ZXJzL2h3bW9uL2xpYmh3bW9uLmEKIExJQlMgKz0gZHJpdmVycy9pMmMvbGliaTJjLmEKIExJQlMgKz0gZHJpdmVycy9pbnB1dC9saWJpbnB1dC5hCkBAIC0zNDcsNyArMzQ4LDcgQEAKICQoT0JKUyk6CWRlcGVuZCAkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rCiAJCSQoTUFLRSkgLUMgY3B1LyQoQ1BVKSAkKGlmICQoUkVNT1RFX0JVSUxEKSwkQCwkKG5vdGRpciAkQCkpCiAKLSQoTElCUyk6CWRlcGVuZCAkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rCiskKExJQlMpOglkZXBlbmQgJChvYmopaW5jbHVkZS9hdXRvY29uZi5tayAkKFNVQkRJUlMpCiAJCSQoTUFLRSkgLUMgJChkaXIgJChzdWJzdCAkKG9iaiksLCRAKSkKIAogJChMSUJCT0FSRCk6CWRlcGVuZCAkKExJQlMpICQob2JqKWluY2x1ZGUvYXV0b2NvbmYubWsKQEAgLTQwNyw2ICs0MDgsNyBAQAogVEFHX1NVQkRJUlMgKz0gY29tbW9uCiBUQUdfU1VCRElSUyArPSBkcml2ZXJzL2Jpb3NfZW11bGF0b3IKIFRBR19TVUJESVJTICs9IGRyaXZlcnMvYmxvY2sKK1RBR19TVUJESVJTICs9IGRyaXZlcnMvZ3BpbwogVEFHX1NVQkRJUlMgKz0gZHJpdmVycy9od21vbgogVEFHX1NVQkRJUlMgKz0gZHJpdmVycy9pMmMKIFRBR19TVUJESVJTICs9IGRyaXZlcnMvaW5wdXQKQEAgLTQ2Myw3ICs0NjUsOCBAQAogCXNldCAtZSA7IFwKIAk6IEV4dHJhY3QgdGhlIGNvbmZpZyBtYWNyb3MgOyBcCiAJJChDUFApICQoQ0ZMQUdTKSAtRERPX0RFUFNfT05MWSAtZE0gaW5jbHVkZS9jb21tb24uaCB8IFwKLQkJc2VkIC1uIC1mIHRvb2xzL3NjcmlwdHMvZGVmaW5lMm1rLnNlZCA+ICRACisJCXNlZCAtbiAtZiB0b29scy9zY3JpcHRzL2RlZmluZTJtay5zZWQgPiAkQC50bXAgJiYgXAorCW12ICRALnRtcCAkQAogCiBzaW5jbHVkZSAkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rLmRlcAogCkBAIC0xMjYxLDE0ICsxMjY0LDExIEBACiBDUENJMkRQX2NvbmZpZzoJdW5jb25maWcKIAlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBwcGMgcHBjNHh4IGNwY2kyZHAgZXNkCiAKLUNQQ0k0MDVfY29uZmlnOgkJdW5jb25maWcKLQlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBwcGMgcHBjNHh4IGNwY2k0MDUgZXNkCi0KK0NQQ0k0MDVfY29uZmlnCQlcCiBDUENJNDA1Ml9jb25maWcJCVwKIENQQ0k0MDVEVF9jb25maWcJXAogQ1BDSTQwNUFCX2NvbmZpZzoJdW5jb25maWcKIAlAbWtkaXIgLXAgJChvYmopYm9hcmQvZXNkL2NwY2k0MDUKLQlAZWNobyAiVEVYVF9CQVNFID0gMHhGRkZDMDAwMCIgPiAkKG9iailib2FyZC9lc2QvY3BjaTQwNS9jb25maWcudG1wCiAJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgcHBjIHBwYzR4eCBjcGNpNDA1IGVzZAogCiBDUENJSVNFUjRfY29uZmlnOgl1bmNvbmZpZwpAQCAtMjE4Niw2ICsyMTg2LDkgQEAKICMjIE1QQzgzeHggU3lzdGVtcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitrbWV0ZXIxX2NvbmZpZzogdW5jb25maWcKKwlAJChNS0NPTkZJRykga21ldGVyMSBwcGMgbXBjODN4eCBrbWV0ZXIxIGtleW1pbGUKKwogTVBDODMxM0VSREJfMzNfY29uZmlnIFwKIE1QQzgzMTNFUkRCXzY2X2NvbmZpZyBcCiBNUEM4MzEzRVJEQl9OQU5EXzMzX2NvbmZpZyBcCkBAIC0yMzI1LDYgKzIzMjgsMjEgQEAKIHNiYzgzNDlfY29uZmlnOgkJdW5jb25maWcKIAlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBwcGMgbXBjODN4eCBzYmM4MzQ5CiAKK1NJTVBDODMxM19MUF9jb25maWcgXAorU0lNUEM4MzEzX1NQX2NvbmZpZzogdW5jb25maWcKKwlAbWtkaXIgLXAgJChvYmopaW5jbHVkZQorCUBta2RpciAtcCAkKG9iailib2FyZC9zaGVsZG9uL3NpbXBjODMxMworCUBpZiBbICIkKGZpbmRzdHJpbmcgX0xQXywkQCkiIF0gOyB0aGVuIFwKKwkJJChYRUNITykgLW4gIi4uLkxhcmdlIFBhZ2UgTkFORC4uLiIgOyBcCisJCWVjaG8gIiNkZWZpbmUgQ09ORklHX05BTkRfTFAiID4+ICQob2JqKWluY2x1ZGUvY29uZmlnLmggOyBcCisJZmkgOyBcCisJaWYgWyAiJChmaW5kc3RyaW5nIF9TUF8sJEApIiBdIDsgdGhlbiBcCisJCSQoWEVDSE8pIC1uICIuLi5TbWFsbCBQYWdlIE5BTkQuLi4iIDsgXAorCQllY2hvICIjZGVmaW5lIENPTkZJR19OQU5EX1NQIiA+PiAkKG9iailpbmNsdWRlL2NvbmZpZy5oIDsgXAorCWZpIDsKKwlAJChNS0NPTkZJRykgLWEgU0lNUEM4MzEzIHBwYyBtcGM4M3h4IHNpbXBjODMxMyBzaGVsZG9uCisJQGVjaG8gIkNPTkZJR19OQU5EX1VfQk9PVCA9IHkiID4+ICQob2JqKWluY2x1ZGUvY29uZmlnLm1rCisKIFRRTTgzNHhfY29uZmlnOgl1bmNvbmZpZwogCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4M3h4IHRxbTgzNHggdHFjCiAKQEAgLTIzOTgsOCArMjQxNiwxNCBAQAogTVBDODU2OE1EU19jb25maWc6CXVuY29uZmlnCiAJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgcHBjIG1wYzg1eHggbXBjODU2OG1kcyBmcmVlc2NhbGUKIAorTVBDODU3MkRTXzM2QklUX2NvbmZpZyBcCiBNUEM4NTcyRFNfY29uZmlnOiAgICAgICB1bmNvbmZpZwotCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4NXh4IG1wYzg1NzJkcyBmcmVlc2NhbGUKKwlAbWtkaXIgLXAgJChvYmopaW5jbHVkZQorCUBpZiBbICIkKGZpbmRzdHJpbmcgXzM2QklUXywkQCkiIF0gOyB0aGVuIFwKKwkJZWNobyAiI2RlZmluZSBDT05GSUdfUEhZU182NEJJVCIgPj4kKG9iailpbmNsdWRlL2NvbmZpZy5oIDsgXAorCQkkKFhFQ0hPKSAiLi4uIGVuYWJsaW5nIDM2LWJpdCBwaHlzaWNhbCBhZGRyZXNzaW5nLiIgOyBcCisJZmkKKwlAJChNS0NPTkZJRykgLWEgTVBDODU3MkRTIHBwYyBtcGM4NXh4IG1wYzg1NzJkcyBmcmVlc2NhbGUKIAogUE04NTRfY29uZmlnOgl1bmNvbmZpZwogCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4NXh4IHBtODU0CkBAIC0yNDYzLDYgKzI0ODcsMTIgQEAKIAllY2hvICIjZGVmaW5lIENPTkZJR19CT0FSRE5BTUUgXCJUUU0kJHtDVFlQRX1cIiI+PiQob2JqKWluY2x1ZGUvY29uZmlnLmg7CiAJQCQoTUtDT05GSUcpIC1hIFRRTTg1eHggcHBjIG1wYzg1eHggdHFtODV4eCB0cWMKIAorWFBFRElURTUyMDBfY29uZmlnOgl1bmNvbmZpZworCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4NXh4IHhwZWRpdGU1MjAwIHhlcworCitYUEVESVRFNTM3MF9jb25maWc6CXVuY29uZmlnCisJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgcHBjIG1wYzg1eHggeHBlZGl0ZTUzNzAgeGVzCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIE1QQzg2eHggU3lzdGVtcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjU5Niw2ICsyNjI2LDcgQEAKIGF0OTFzYW05MjYwZWtfZGF0YWZsYXNoX2NzMF9jb25maWcgXAogYXQ5MXNhbTkyNjBla19kYXRhZmxhc2hfY3MxX2NvbmZpZyBcCiBhdDkxc2FtOTI2MGVrX2NvbmZpZwk6CXVuY29uZmlnCisJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKIAlAaWYgWyAiJChmaW5kc3RyaW5nIF9uYW5kZmxhc2gsJEApIiBdIDsgdGhlbiBcCiAJCWVjaG8gIiNkZWZpbmUgQ09ORklHX1NZU19VU0VfTkFOREZMQVNIIDEiCT4+JChvYmopaW5jbHVkZS9jb25maWcuaCA7IFwKIAkJJChYRUNITykgIi4uLiB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGluIE5BTkQgRkxBU0giIDsgXApAQCAtMjYwOCwxMCArMjYzOSwyOCBAQAogCWZpOwogCUAkKE1LQ09ORklHKSAtYSBhdDkxc2FtOTI2MGVrIGFybSBhcm05MjZlanMgYXQ5MXNhbTkyNjBlayBhdG1lbCBhdDkxCiAKK2F0OTFzYW05eGVla19uYW5kZmxhc2hfY29uZmlnIFwKK2F0OTFzYW05eGVla19kYXRhZmxhc2hfY3MwX2NvbmZpZyBcCithdDkxc2FtOXhlZWtfZGF0YWZsYXNoX2NzMV9jb25maWcgXAorYXQ5MXNhbTl4ZWVrX2NvbmZpZwk6CXVuY29uZmlnCisJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKKwlAaWYgWyAiJChmaW5kc3RyaW5nIF9uYW5kZmxhc2gsJEApIiBdIDsgdGhlbiBcCisJCWVjaG8gIiNkZWZpbmUgQ09ORklHX1NZU19VU0VfTkFOREZMQVNIIDEiCT4+JChvYmopaW5jbHVkZS9jb25maWcuaCA7IFwKKwkJJChYRUNITykgIi4uLiB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGluIE5BTkQgRkxBU0giIDsgXAorCWVsaWYgWyAiJChmaW5kc3RyaW5nIGRhdGFmbGFzaF9jczAsJEApIiBdIDsgdGhlbiBcCisJCWVjaG8gIiNkZWZpbmUgQ09ORklHX1NZU19VU0VfREFUQUZMQVNIX0NTMCAxIgk+PiQob2JqKWluY2x1ZGUvY29uZmlnLmggOyBcCisJCSQoWEVDSE8pICIuLi4gd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBTUEkgREFUQUZMQVNIIENTMCIgOyBcCisJZWxzZSBcCisJCWVjaG8gIiNkZWZpbmUgQ09ORklHX1NZU19VU0VfREFUQUZMQVNIX0NTMSAxIgk+PiQob2JqKWluY2x1ZGUvY29uZmlnLmggOyBcCisJCSQoWEVDSE8pICIuLi4gd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBTUEkgREFUQUZMQVNIIENTMSIgOyBcCisJZmk7CisJQCQoTUtDT05GSUcpIC1uIGF0OTFzYW05eGVlayAtYSBhdDkxc2FtOTI2MGVrIGFybSBhcm05MjZlanMgYXQ5MXNhbTkyNjBlayBhdG1lbCBhdDkxc2FtOQorCiBhdDkxc2FtOTI2MWVrX25hbmRmbGFzaF9jb25maWcgXAogYXQ5MXNhbTkyNjFla19kYXRhZmxhc2hfY3MwX2NvbmZpZyBcCiBhdDkxc2FtOTI2MWVrX2RhdGFmbGFzaF9jczNfY29uZmlnIFwKIGF0OTFzYW05MjYxZWtfY29uZmlnCToJdW5jb25maWcKKwlAbWtkaXIgLXAgJChvYmopaW5jbHVkZQogCUBpZiBbICIkKGZpbmRzdHJpbmcgX25hbmRmbGFzaCwkQCkiIF0gOyB0aGVuIFwKIAkJZWNobyAiI2RlZmluZSBDT05GSUdfU1lTX1VTRV9OQU5ERkxBU0ggMSIJPj4kKG9iailpbmNsdWRlL2NvbmZpZy5oIDsgXAogCQkkKFhFQ0hPKSAiLi4uIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gTkFORCBGTEFTSCIgOyBcCkBAIC0yNjI4LDYgKzI2NzcsNyBAQAogYXQ5MXNhbTkyNjNla19kYXRhZmxhc2hfY29uZmlnIFwKIGF0OTFzYW05MjYzZWtfZGF0YWZsYXNoX2NzMF9jb25maWcgXAogYXQ5MXNhbTkyNjNla19jb25maWcJOgl1bmNvbmZpZworCUBta2RpciAtcCAkKG9iailpbmNsdWRlCiAJQGlmIFsgIiQoZmluZHN0cmluZyBfbmFuZGZsYXNoLCRAKSIgXSA7IHRoZW4gXAogCQllY2hvICIjZGVmaW5lIENPTkZJR19TWVNfVVNFX05BTkRGTEFTSCAxIgk+PiQob2JqKWluY2x1ZGUvY29uZmlnLmggOyBcCiAJCSQoWEVDSE8pICIuLi4gd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBOQU5EIEZMQVNIIiA7IFwKQEAgLTI2NDEsNiArMjY5MSw3IEBACiBhdDkxc2FtOXJsZWtfZGF0YWZsYXNoX2NvbmZpZyBcCiBhdDkxc2FtOXJsZWtfZGF0YWZsYXNoX2NzMF9jb25maWcgXAogYXQ5MXNhbTlybGVrX2NvbmZpZwk6CXVuY29uZmlnCisJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKIAlAaWYgWyAiJChmaW5kc3RyaW5nIF9uYW5kZmxhc2gsJEApIiBdIDsgdGhlbiBcCiAJCWVjaG8gIiNkZWZpbmUgQ09ORklHX1NZU19VU0VfTkFOREZMQVNIIDEiCT4+JChvYmopaW5jbHVkZS9jb25maWcuaCA7IFwKIAkJJChYRUNITykgIi4uLiB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGluIE5BTkQgRkxBU0giIDsgXApAQCAtMjk2MywxNCArMzAxNCwxNyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMgQU1EIFNDNTIwIENEUAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZU5FVF9jb25maWcJOgl1bmNvbmZpZworCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGkzODYgaTM4NiBlTkVUIE5VTEwgc2M1MjAKKwogc2M1MjBfY2RwX2NvbmZpZwk6CXVuY29uZmlnCi0JQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgaTM4NiBpMzg2IHNjNTIwX2NkcAorCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGkzODYgaTM4NiBzYzUyMF9jZHAgTlVMTCBzYzUyMAogCiBzYzUyMF9zcHVua19jb25maWcJOgl1bmNvbmZpZwotCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGkzODYgaTM4NiBzYzUyMF9zcHVuaworCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGkzODYgaTM4NiBzYzUyMF9zcHVuayBOVUxMIHNjNTIwCiAKIHNjNTIwX3NwdW5rX3JlbF9jb25maWcJOgl1bmNvbmZpZwotCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGkzODYgaTM4NiBzYzUyMF9zcHVuaworCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGkzODYgaTM4NiBzYzUyMF9zcHVuayBOVUxMIHNjNTIwCiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgTUlQUwpAQCAtMzE0MywyMSArMzE5NywxNSBAQAogIyMgTWljcm9ibGF6ZQogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1tbDQwMV9jb25maWc6CXVuY29uZmlnCittaWNyb2JsYXplLWdlbmVyaWNfY29uZmlnOgl1bmNvbmZpZwogCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX01MNDAxIDEiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAotCUAkKE1LQ09ORklHKSAtYSAkKEA6X2NvbmZpZz0pIG1pY3JvYmxhemUgbWljcm9ibGF6ZSBtbDQwMSB4aWxpbngKKwlAJChNS0NPTkZJRykgLWEgJChAOl9jb25maWc9KSBtaWNyb2JsYXplIG1pY3JvYmxhemUgbWljcm9ibGF6ZS1nZW5lcmljIHhpbGlueAogCiBzdXpha3VfY29uZmlnOgl1bmNvbmZpZwogCUBta2RpciAtcCAkKG9iailpbmNsdWRlCiAJQGVjaG8gIiNkZWZpbmUgQ09ORklHX1NVWkFLVSAxIiA+ICQob2JqKWluY2x1ZGUvY29uZmlnLmgKIAlAJChNS0NPTkZJRykgLWEgJChAOl9jb25maWc9KSBtaWNyb2JsYXplIG1pY3JvYmxhemUgc3V6YWt1IEF0bWFya1RlY2hubwogCi14dXB2MnBfY29uZmlnOgl1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX1hVUFYyUCAxIiA+ICQob2JqKWluY2x1ZGUvY29uZmlnLmgKLQlAJChNS0NPTkZJRykgLWEgJChAOl9jb25maWc9KSBtaWNyb2JsYXplIG1pY3JvYmxhemUgeHVwdjJwIHhpbGlueAotCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEJsYWNrZmluCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zMjA4LDkgKzMyNTYsOSBAQAogIyMgc2gyIChSZW5lc2FzIFN1cGVySCkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIHJzazcyMDNfY29uZmlnOiB1bmNvbmZpZwotCUAgPmluY2x1ZGUvY29uZmlnLmgKLQlAZWNobyAiI2RlZmluZSBDT05GSUdfUlNLNzIwMyAxIiA+PiBpbmNsdWRlL2NvbmZpZy5oCi0JQC4vbWtjb25maWcgLWEgJChAOl9jb25maWc9KSBzaCBzaDIgcnNrNzIwMyByZW5lc2FzCisJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKKwlAZWNobyAiI2RlZmluZSBDT05GSUdfUlNLNzIwMyAxIiA+ICQob2JqKS9pbmNsdWRlL2NvbmZpZy5oCisJQCQoTUtDT05GSUcpIC1hICQoQDpfY29uZmlnPSkgc2ggc2gyIHJzazcyMDMgcmVuZXNhcwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBzaDMgKFJlbmVzYXMgU3VwZXJIKQpAQCAtMzIzMyw3ICszMjgxLDcgQEAKIE1pZ29SX2NvbmZpZyA6ICAgICAgIHVuY29uZmlnCiAJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKIAlAZWNobyAiI2RlZmluZSBDT05GSUdfTUlHT19SIDEiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAotCUAuL21rY29uZmlnIC1hICQoQDpfY29uZmlnPSkgc2ggc2g0IE1pZ29SIHJlbmVzYXMKKwlAJChNS0NPTkZJRykgLWEgJChAOl9jb25maWc9KSBzaCBzaDQgTWlnb1IgcmVuZXNhcwogCiBtczc3NTBzZV9jb25maWc6IHVuY29uZmlnCiAJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCAyYTU1M2MyLi5hZDc5MmQzIDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC01OTIsNiArNTkyLDEwIEBACiAJCUNPTkZJR19DTURfREhDUAkJKiBESENQIHN1cHBvcnQKIAkJQ09ORklHX0NNRF9ESUFHCQkqIERpYWdub3N0aWNzCiAJCUNPTkZJR19DTURfRE9DCQkqIERpc2stT24tQ2hpcCBTdXBwb3J0CisJCUNPTkZJR19DTURfRFM0NTEwCSogZHM0NTEwIEkyQyBncGlvIGNvbW1hbmRzCisJCUNPTkZJR19DTURfRFM0NTEwX0lORk8JKiBkczQ1MTAgSTJDIGluZm8gY29tbWFuZAorCQlDT05GSUdfQ01EX0RTNDUxMF9NRU0JKiBkczQ1MTAgSTJDIGVlcHJvbS9zcmFtIGNvbW1hbnNkCisJCUNPTkZJR19DTURfRFM0NTEwX1JTVAkqIGRzNDUxMCBJMkMgcnN0IGNvbW1hbmQKIAkJQ09ORklHX0NNRF9EVFQJCSogRGlnaXRhbCBUaGVybSBhbmQgVGhlcm1vc3RhdAogCQlDT05GSUdfQ01EX0VDSE8JCSAgZWNobyBhcmd1bWVudHMKIAkJQ09ORklHX0NNRF9FRVBST00JKiBFRVBST00gcmVhZC93cml0ZSBzdXBwb3J0CkBAIC02MjEsNiArNjI1LDggQEAKIAkJQ09ORklHX0NNRF9NSUkJCSogTUlJIHV0aWxpdHkgY29tbWFuZHMKIAkJQ09ORklHX0NNRF9OQU5ECQkqIE5BTkQgc3VwcG9ydAogCQlDT05GSUdfQ01EX05FVAkJICBib290cCwgdGZ0cGJvb3QsIHJhcnBib290CisJCUNPTkZJR19DTURfUENBOTUzWAkqIFBDQTk1M3ggSTJDIGdwaW8gY29tbWFuZHMKKwkJQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8JKiBQQ0E5NTN4IEkyQyBncGlvIGluZm8gY29tbWFuZAogCQlDT05GSUdfQ01EX1BDSQkJKiBwY2lpbmZvCiAJCUNPTkZJR19DTURfUENNQ0lBCQkqIFBDTUNJQSBzdXBwb3J0CiAJCUNPTkZJR19DTURfUElORwkJKiBzZW5kIElDTVAgRUNIT19SRVFVRVNUIHRvIG5ldHdvcmsKQEAgLTY5OCw2ICs3MDQsMTMgQEAKIAkJTm90ZSB0aGF0IGlmIHRoZSBSVEMgdXNlcyBJMkMsIHRoZW4gdGhlIEkyQyBpbnRlcmZhY2UKIAkJbXVzdCBhbHNvIGJlIGNvbmZpZ3VyZWQuIFNlZSBJMkMgU3VwcG9ydCwgYmVsb3cuCiAKKy0gR1BJTyBTdXBwb3J0OgorCQlDT05GSUdfUENBOTUzWAkJLSB1c2UgTlhQJ3MgUENBOTUzWCBzZXJpZXMgSTJDIEdQSU8KKwkJQ09ORklHX1BDQTk1M1hfSU5GTwktIGVuYWJsZSBwY2E5NTN4IGluZm8gY29tbWFuZAorCisJCU5vdGUgdGhhdCBpZiB0aGUgR1BJTyBkZXZpY2UgdXNlcyBJMkMsIHRoZW4gdGhlIEkyQyBpbnRlcmZhY2UKKwkJbXVzdCBhbHNvIGJlIGNvbmZpZ3VyZWQuIFNlZSBJMkMgU3VwcG9ydCwgYmVsb3cuCisKIC0gVGltZXN0YW1wIFN1cHBvcnQ6CiAKIAkJV2hlbiBDT05GSUdfVElNRVNUQU1QIGlzIHNlbGVjdGVkLCB0aGUgdGltZXN0YW1wCkBAIC0zNzMxLDcgKzM3NDQsNyBAQAogbG9ja2VkIGFzIChtaXMtKSB1c2VkIGFzIG1lbW9yeSwgZXRjLgogCiAJQ2hyaXMgSGFsbGluYW4gcG9zdGVkIGEgZ29vZCBzdW1tYXJ5IG9mIHRoZXNlIGlzc3VlcyB0byB0aGUKLQl1LWJvb3QtdXNlcnMgbWFpbGluZyBsaXN0OgorCVUtQm9vdCBtYWlsaW5nIGxpc3Q6CiAKIAlTdWJqZWN0OiBSRTogW1UtQm9vdC1Vc2Vyc10gUkU6IE1vcmUgT24gTWVtb3J5IEJhbmsgeCAobm90aGluZ25lc3MpPwogCUZyb206ICJDaHJpcyBIYWxsaW5hbiIgPGNsaEBuZXQxcGx1cy5jb20+CkBAIC0zOTQxLDcgKzM5NTQsNyBAQAogCiAJRG93bmxvYWQgbGF0ZXN0IFUtQm9vdCBzb3VyY2U7CiAKLQlTdWJzY3JpYmUgdG8gdS1ib290LXVzZXJzIG1haWxpbmcgbGlzdDsKKwlTdWJzY3JpYmUgdG8gdS1ib290IG1haWxpbmcgbGlzdDsKIAogCWlmIChjbHVlbGVzcykgewogCQllbWFpbCAoIkhpLCBJIGFtIG5ldyB0byBVLUJvb3QsIGhvdyBkbyBJIGdldCBzdGFydGVkPyIpOwpAQCAtNDAxOCwxMCArNDAzMSwxMSBAQAogZXN0YWJsaXNoIHNvbWUgcnVsZXMuIFN1Ym1pc3Npb25zIHdoaWNoIGRvIG5vdCBjb25mb3JtIHRvIHRoZXNlIHJ1bGVzCiBtYXkgYmUgcmVqZWN0ZWQsIGV2ZW4gd2hlbiB0aGV5IGNvbnRhaW4gaW1wb3J0YW50IGFuZCB2YWx1YWJsZSBzdHVmZi4KIAotUGF0Y2hlcyBzaGFsbCBiZSBzZW50IHRvIHRoZSB1LWJvb3QtdXNlcnMgbWFpbGluZyBsaXN0LgotCiBQbGVhc2Ugc2VlIGh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9QYXRjaGVzIGZvciBkZXRhaWxzLgogCitQYXRjaGVzIHNoYWxsIGJlIHNlbnQgdG8gdGhlIHUtYm9vdCBtYWlsaW5nIGxpc3QgPHUtYm9vdEBsaXN0cy5kZW54LmRlPjsKK3NlZSBodHRwOi8vbGlzdHMuZGVueC5kZS9tYWlsbWFuL2xpc3RpbmZvL3UtYm9vdAorCiBXaGVuIHlvdSBzZW5kIGEgcGF0Y2gsIHBsZWFzZSBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gd2l0aAogaXQ6CiAKQEAgLTQwODQsNyArNDA5OCw3IEBACiAgIGRpc2FibGVkIG11c3Qgbm90IG5lZWQgbW9yZSBtZW1vcnkgdGhhbiB0aGUgb2xkIGNvZGUgd2l0aG91dCB5b3VyCiAgIG1vZGlmaWNhdGlvbi4KIAotKiBSZW1lbWJlciB0aGF0IHRoZXJlIGlzIGEgc2l6ZSBsaW1pdCBvZiA0MCBrQiBwZXIgbWVzc2FnZSBvbiB0aGUKLSAgdS1ib290LXVzZXJzIG1haWxpbmcgbGlzdC4gQmlnZ2VyIHBhdGNoZXMgd2lsbCBiZSBtb2RlcmF0ZWQuIElmCi0gIHRoZXkgYXJlIHJlYXNvbmFibGUgYW5kIG5vdCBiaWdnZXIgdGhhbiAxMDAga0IsIHRoZXkgd2lsbCBiZQotICBhY2tub3dsZWRnZWQuIEV2ZW4gYmlnZ2VyIHBhdGNoZXMgc2hvdWxkIGJlIGF2b2lkZWQuCisqIFJlbWVtYmVyIHRoYXQgdGhlcmUgaXMgYSBzaXplIGxpbWl0IG9mIDEwMCBrQiBwZXIgbWVzc2FnZSBvbiB0aGUKKyAgdS1ib290IG1haWxpbmcgbGlzdC4gQmlnZ2VyIHBhdGNoZXMgd2lsbCBiZSBtb2RlcmF0ZWQuIElmIHRoZXkgYXJlCisgIHJlYXNvbmFibGUgYW5kIG5vdCB0b28gYmlnLCB0aGV5IHdpbGwgYmUgYWNrbm93bGVkZ2VkLiBCdXQgcGF0Y2hlcworICBiaWdnZXIgdGhhbiB0aGUgc2l6ZSBsaW1pdCBzaG91bGQgYmUgYXZvaWRlZC4KZGlmZiAtLWdpdCBhL2JvYXJkL2FmZWI5MjYwL3BhcnRpdGlvbi5jIGIvYm9hcmQvYWZlYjkyNjAvcGFydGl0aW9uLmMKaW5kZXggMGI1ZGM1ZS4uYmUwOGYyOSAxMDA2NDQKLS0tIGEvYm9hcmQvYWZlYjkyNjAvcGFydGl0aW9uLmMKKysrIGIvYm9hcmQvYWZlYjkyNjAvcGFydGl0aW9uLmMKQEAgLTM0LDQgKzM0LDMgQEAKIAl7MHgwMDAwNDIwMCwgMHgwMDAwODNGRiwgRkxBR19QUk9URUNUX0NMRUFSLCAwLCAiRW52aXJvbm1lbnQifSwKIAl7MHgwMDAwODQwMCwgMHgwMDA0MUZGRiwgRkxBR19QUk9URUNUX0NMRUFSLCAwLCAiVS1Cb290In0sCiB9OwotCmRpZmYgLS1naXQgYS9ib2FyZC9iZjUzMy1lemtpdC9NYWtlZmlsZSBiL2JvYXJkL2JmNTMzLWV6a2l0L01ha2VmaWxlCmluZGV4IGIyZDdhY2YuLjZhNDViN2MgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTMzLWV6a2l0L01ha2VmaWxlCisrKyBiL2JvYXJkL2JmNTMzLWV6a2l0L01ha2VmaWxlCkBAIC0zNSwxMiArMzUsMTEgQEAKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKSB1LWJvb3QubGRzCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKSAkKG9iail1LWJvb3QubGRzCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiAKLXUtYm9vdC5sZHM6IHUtYm9vdC5sZHMuUwotCSQoQ1BQKSAkKENQUEZMQUdTKSAtRF9fQVNTRU1CTFlfXyAtUCAtVWJmaW4gJF4gPiAkQC50bXAKLQltdiAtZiAkQC50bXAgJEAKKyQob2JqKXUtYm9vdC5sZHM6IHUtYm9vdC5sZHMuUworCSQoQ1BQKSAkKENQUEZMQUdTKSAtRF9fQVNTRU1CTFlfXyAtUCAkXiA+ICRACiAKIGNsZWFuOgogCXJtIC1mICQoU09CSlMpICQoT0JKUykKZGlmZiAtLWdpdCBhL2JvYXJkL2JmNTMzLWV6a2l0L2NvbmZpZy5tayBiL2JvYXJkL2JmNTMzLWV6a2l0L2NvbmZpZy5tawppbmRleCBkZTgwZmZlLi5jOGI5ZmI4IDEwMDY0NAotLS0gYS9ib2FyZC9iZjUzMy1lemtpdC9jb25maWcubWsKKysrIGIvYm9hcmQvYmY1MzMtZXpraXQvY29uZmlnLm1rCkBAIC0xLDQgKzEsNiBAQAogIworIyBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwOCBBbmFsb2cgRGV2aWNlIEluYy4KKyMKICMgKEMpIENvcHlyaWdodCAyMDAxCiAjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCiAjCkBAIC0yMywzICsyNSw5IEBACiAKICMgVGhpcyBpcyBub3QgYWN0dWFsbHkgdXNlZCBmb3IgQmxhY2tmaW4gYm9hcmRzIHNvIGRvIG5vdCBjaGFuZ2UgaXQKICNURVhUX0JBU0UgPSBkby1ub3QtdXNlLW1lCisKK0xEU0NSSVBUID0gJChvYmopYm9hcmQvJChCT0FSRERJUikvdS1ib290LmxkcworCisjIFNldCBzb21lIGRlZmF1bHQgTERSIGZsYWdzIGJhc2VkIG9uIGJvb3QgbW9kZS4KK0xEUl9GTEFHUy1CRklOX0JPT1RfUEFSQSA6PSAtLWJpdHMgMTYgLS1kbWEgOAorTERSX0ZMQUdTICs9ICQoTERSX0ZMQUdTLSQoQ09ORklHX0JGSU5fQk9PVF9NT0RFKSkKZGlmZiAtLWdpdCBhL2JvYXJkL2JmNTMzLWV6a2l0L3UtYm9vdC5sZHMuUyBiL2JvYXJkL2JmNTMzLWV6a2l0L3UtYm9vdC5sZHMuUwppbmRleCA3MDc2NGFjLi5kYTE2NzI2IDEwMDY0NAotLS0gYS9ib2FyZC9iZjUzMy1lemtpdC91LWJvb3QubGRzLlMKKysrIGIvYm9hcmQvYmY1MzMtZXpraXQvdS1ib290Lmxkcy5TCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CiAjdW5kZWYgQUxJR04KKyN1bmRlZiBFTlRSWQorI3VuZGVmIGJmaW4KIAogLyogSWYgd2UgZG9uJ3QgYWN0dWFsbHkgbG9hZCBhbnl0aGluZyBpbnRvIEwxIGRhdGEsIHRoaXMgd2lsbCBhdm9pZAogICogYSBzeW50YXggZXJyb3IuICBJZiB3ZSBkbyBhY3R1YWxseSBsb2FkIHNvbWV0aGluZyBpbnRvIEwxIGRhdGEsCkBAIC01MCwxMSArNTIsMTIgQEAKIAlsMV9kYXRhIDogT1JJR0lOID0gTDFfREFUQV9CX1NSQU0sICAgTEVOR1RIID0gTDFfREFUQV9CX1NSQU1fU0laRQogfQogCitFTlRSWShfc3RhcnQpCiBTRUNUSU9OUwogewogCS50ZXh0IDoKIAl7Ci0JCWNwdS9ibGFja2Zpbi9zdGFydC5vICgudGV4dCkKKwkJY3B1L2JsYWNrZmluL3N0YXJ0Lm8gKC50ZXh0IC50ZXh0LiopCiAKICNpZmRlZiBFTlZfSVNfRU1CRURERUQKIAkJLyogV0FSTklORyAtIHRoZSBmb2xsb3dpbmcgaXMgaGFuZC1vcHRpbWl6ZWQgdG8gZml0IHdpdGhpbgpAQCAtNjMsMjAgKzY2LDIwIEBACiAJCSAqIGl0IGxpbmtlZCBhZnRlciB0aGUgY29uZmlndXJhdGlvbiBzZWN0b3IuCiAJCSAqLwogCi0JCWNwdS9ibGFja2Zpbi90cmFwcy5vCQkoLnRleHQpCi0JCWNwdS9ibGFja2Zpbi9pbnRlcnJ1cHQubwkoLnRleHQpCi0JCWNwdS9ibGFja2Zpbi9zZXJpYWwubwkJKC50ZXh0KQotCQljb21tb24vZGxtYWxsb2MubwkJKC50ZXh0KQotCQlsaWJfZ2VuZXJpYy9jcmMzMi5vCQkoLnRleHQpCi0JCWxpYl9nZW5lcmljL3psaWIubwkJKC50ZXh0KQotCQlib2FyZC9iZjUzMy1lemtpdC9iZjUzMy1lemtpdC5vCQkoLnRleHQpCisJCWNwdS9ibGFja2Zpbi90cmFwcy5vCQkoLnRleHQgLnRleHQuKikKKwkJY3B1L2JsYWNrZmluL2ludGVycnVwdC5vCSgudGV4dCAudGV4dC4qKQorCQljcHUvYmxhY2tmaW4vc2VyaWFsLm8JCSgudGV4dCAudGV4dC4qKQorCQljb21tb24vZGxtYWxsb2MubwkJKC50ZXh0IC50ZXh0LiopCisJCWxpYl9nZW5lcmljL2NyYzMyLm8JCSgudGV4dCAudGV4dC4qKQorCQlsaWJfZ2VuZXJpYy96bGliLm8JCSgudGV4dCAudGV4dC4qKQorCQlib2FyZC9iZjUzMy1lemtpdC9iZjUzMy1lemtpdC5vCQkoLnRleHQgLnRleHQuKikKIAogCQkuID0gREVGSU5FRChlbnZfb2Zmc2V0KSA/IGVudl9vZmZzZXQgOiAuOwotCQljb21tb24vZW52X2VtYmVkZGVkLm8JKC50ZXh0KQorCQljb21tb24vZW52X2VtYmVkZGVkLm8JKC50ZXh0IC50ZXh0LiopCiAjZW5kaWYKIAogCQlfX2luaXRjb2RlX3N0YXJ0ID0gLjsKLQkJY3B1L2JsYWNrZmluL2luaXRjb2RlLm8gKC50ZXh0KQorCQljcHUvYmxhY2tmaW4vaW5pdGNvZGUubyAoLnRleHQgLnRleHQuKikKIAkJX19pbml0Y29kZV9lbmQgPSAuOwogCiAJCSooLnRleHQgLnRleHQuKikKZGlmZiAtLWdpdCBhL2JvYXJkL2JmNTMzLXN0YW1wL01ha2VmaWxlIGIvYm9hcmQvYmY1MzMtc3RhbXAvTWFrZWZpbGUKaW5kZXggMjFmNmFkMS4uNWFlMDIyOCAxMDA2NDQKLS0tIGEvYm9hcmQvYmY1MzMtc3RhbXAvTWFrZWZpbGUKKysrIGIvYm9hcmQvYmY1MzMtc3RhbXAvTWFrZWZpbGUKQEAgLTM1LDEyICszNSwxMSBAQAogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCiBTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpIHUtYm9vdC5sZHMKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpICQob2JqKXUtYm9vdC5sZHMKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKIAotdS1ib290LmxkczogdS1ib290Lmxkcy5TCi0JJChDUFApICQoQ1BQRkxBR1MpIC1EX19BU1NFTUJMWV9fIC1QIC1VYmZpbiAkXiA+ICRALnRtcAotCW12IC1mICRALnRtcCAkQAorJChvYmopdS1ib290LmxkczogdS1ib290Lmxkcy5TCisJJChDUFApICQoQ1BQRkxBR1MpIC1EX19BU1NFTUJMWV9fIC1QICReID4gJEAKIAogY2xlYW46CiAJcm0gLWYgJChTT0JKUykgJChPQkpTKQpkaWZmIC0tZ2l0IGEvYm9hcmQvYmY1MzMtc3RhbXAvY29uZmlnLm1rIGIvYm9hcmQvYmY1MzMtc3RhbXAvY29uZmlnLm1rCmluZGV4IGRlODBmZmUuLmM4YjlmYjggMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTMzLXN0YW1wL2NvbmZpZy5taworKysgYi9ib2FyZC9iZjUzMy1zdGFtcC9jb25maWcubWsKQEAgLTEsNCArMSw2IEBACiAjCisjIENvcHlyaWdodCAoYykgMjAwNS0yMDA4IEFuYWxvZyBEZXZpY2UgSW5jLgorIwogIyAoQykgQ29weXJpZ2h0IDIwMDEKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKQEAgLTIzLDMgKzI1LDkgQEAKIAogIyBUaGlzIGlzIG5vdCBhY3R1YWxseSB1c2VkIGZvciBCbGFja2ZpbiBib2FyZHMgc28gZG8gbm90IGNoYW5nZSBpdAogI1RFWFRfQkFTRSA9IGRvLW5vdC11c2UtbWUKKworTERTQ1JJUFQgPSAkKG9iailib2FyZC8kKEJPQVJERElSKS91LWJvb3QubGRzCisKKyMgU2V0IHNvbWUgZGVmYXVsdCBMRFIgZmxhZ3MgYmFzZWQgb24gYm9vdCBtb2RlLgorTERSX0ZMQUdTLUJGSU5fQk9PVF9QQVJBIDo9IC0tYml0cyAxNiAtLWRtYSA4CitMRFJfRkxBR1MgKz0gJChMRFJfRkxBR1MtJChDT05GSUdfQkZJTl9CT09UX01PREUpKQpkaWZmIC0tZ2l0IGEvYm9hcmQvYmY1MzMtc3RhbXAvdS1ib290Lmxkcy5TIGIvYm9hcmQvYmY1MzMtc3RhbXAvdS1ib290Lmxkcy5TCmluZGV4IDE4NzMwOWYuLjc2ZGFhNzUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTMzLXN0YW1wL3UtYm9vdC5sZHMuUworKysgYi9ib2FyZC9iZjUzMy1zdGFtcC91LWJvb3QubGRzLlMKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vYmxhY2tmaW4uaD4KICN1bmRlZiBBTElHTgorI3VuZGVmIEVOVFJZCisjdW5kZWYgYmZpbgogCiAvKiBJZiB3ZSBkb24ndCBhY3R1YWxseSBsb2FkIGFueXRoaW5nIGludG8gTDEgZGF0YSwgdGhpcyB3aWxsIGF2b2lkCiAgKiBhIHN5bnRheCBlcnJvci4gIElmIHdlIGRvIGFjdHVhbGx5IGxvYWQgc29tZXRoaW5nIGludG8gTDEgZGF0YSwKQEAgLTUwLDExICs1MiwxMiBAQAogCWwxX2RhdGEgOiBPUklHSU4gPSBMMV9EQVRBX0JfU1JBTSwgICBMRU5HVEggPSBMMV9EQVRBX0JfU1JBTV9TSVpFCiB9CiAKK0VOVFJZKF9zdGFydCkKIFNFQ1RJT05TCiB7CiAJLnRleHQgOgogCXsKLQkJY3B1L2JsYWNrZmluL3N0YXJ0Lm8gKC50ZXh0KQorCQljcHUvYmxhY2tmaW4vc3RhcnQubyAoLnRleHQgLnRleHQuKikKIAogI2lmZGVmIEVOVl9JU19FTUJFRERFRAogCQkvKiBXQVJOSU5HIC0gdGhlIGZvbGxvd2luZyBpcyBoYW5kLW9wdGltaXplZCB0byBmaXQgd2l0aGluCkBAIC02MywxOCArNjYsMTggQEAKIAkJICogaXQgbGlua2VkIGFmdGVyIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rvci4KIAkJICovCiAKLQkJY3B1L2JsYWNrZmluL3RyYXBzLm8JCSgudGV4dCkKLQkJY3B1L2JsYWNrZmluL2ludGVycnVwdC5vCSgudGV4dCkKLQkJY3B1L2JsYWNrZmluL3NlcmlhbC5vCQkoLnRleHQpCi0JCWNvbW1vbi9kbG1hbGxvYy5vCQkoLnRleHQpCi0JCWxpYl9nZW5lcmljL2NyYzMyLm8JCSgudGV4dCkKKwkJY3B1L2JsYWNrZmluL3RyYXBzLm8JCSgudGV4dCAudGV4dC4qKQorCQljcHUvYmxhY2tmaW4vaW50ZXJydXB0Lm8JKC50ZXh0IC50ZXh0LiopCisJCWNwdS9ibGFja2Zpbi9zZXJpYWwubwkJKC50ZXh0IC50ZXh0LiopCisJCWNvbW1vbi9kbG1hbGxvYy5vCQkoLnRleHQgLnRleHQuKikKKwkJbGliX2dlbmVyaWMvY3JjMzIubwkJKC50ZXh0IC50ZXh0LiopCiAKIAkJLiA9IERFRklORUQoZW52X29mZnNldCkgPyBlbnZfb2Zmc2V0IDogLjsKLQkJY29tbW9uL2Vudl9lbWJlZGRlZC5vCSgudGV4dCkKKwkJY29tbW9uL2Vudl9lbWJlZGRlZC5vCSgudGV4dCAudGV4dC4qKQogI2VuZGlmCiAKIAkJX19pbml0Y29kZV9zdGFydCA9IC47Ci0JCWNwdS9ibGFja2Zpbi9pbml0Y29kZS5vICgudGV4dCkKKwkJY3B1L2JsYWNrZmluL2luaXRjb2RlLm8gKC50ZXh0IC50ZXh0LiopCiAJCV9faW5pdGNvZGVfZW5kID0gLjsKIAogCQkqKC50ZXh0IC50ZXh0LiopCmRpZmYgLS1naXQgYS9ib2FyZC9iZjUzNy1zdGFtcC9NYWtlZmlsZSBiL2JvYXJkL2JmNTM3LXN0YW1wL01ha2VmaWxlCmluZGV4IGU1NDgxYmYuLmU1ZWY5YWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTM3LXN0YW1wL01ha2VmaWxlCisrKyBiL2JvYXJkL2JmNTM3LXN0YW1wL01ha2VmaWxlCkBAIC0zNSwxMiArMzUsMTEgQEAKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKSB1LWJvb3QubGRzCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKSAkKG9iail1LWJvb3QubGRzCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiAKLXUtYm9vdC5sZHM6IHUtYm9vdC5sZHMuUwotCSQoQ1BQKSAkKENQUEZMQUdTKSAtRF9fQVNTRU1CTFlfXyAtUCAtVWJmaW4gJF4gPiAkQC50bXAKLQltdiAtZiAkQC50bXAgJEAKKyQob2JqKXUtYm9vdC5sZHM6IHUtYm9vdC5sZHMuUworCSQoQ1BQKSAkKENQUEZMQUdTKSAtRF9fQVNTRU1CTFlfXyAtUCAkXiA+ICRACiAKIGNsZWFuOgogCXJtIC1mICQoU09CSlMpICQoT0JKUykKZGlmZiAtLWdpdCBhL2JvYXJkL2JmNTM3LXN0YW1wL2NvbmZpZy5tayBiL2JvYXJkL2JmNTM3LXN0YW1wL2NvbmZpZy5tawppbmRleCAxYjg3ZDUzLi43MTliOTdlIDEwMDY0NAotLS0gYS9ib2FyZC9iZjUzNy1zdGFtcC9jb25maWcubWsKKysrIGIvYm9hcmQvYmY1Mzctc3RhbXAvY29uZmlnLm1rCkBAIC0xLDQgKzEsNiBAQAogIworIyBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwOCBBbmFsb2cgRGV2aWNlIEluYy4KKyMKICMgKEMpIENvcHlyaWdodCAyMDAxCiAjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCiAjCkBAIC0yNCw2ICsyNiw5IEBACiAjIFRoaXMgaXMgbm90IGFjdHVhbGx5IHVzZWQgZm9yIEJsYWNrZmluIGJvYXJkcyBzbyBkbyBub3QgY2hhbmdlIGl0CiAjVEVYVF9CQVNFID0gZG8tbm90LXVzZS1tZQogCitMRFNDUklQVCA9ICQob2JqKWJvYXJkLyQoQk9BUkRESVIpL3UtYm9vdC5sZHMKKwogIyBTZXQgc29tZSBkZWZhdWx0IExEUiBmbGFncyBiYXNlZCBvbiBib290IG1vZGUuCi1MRFJfRkxBR1MtQkZJTl9CT09UX1VBUlQgICAgICAgOj0gLS1wb3J0IGcgLS1ncGlvIDYKK0xEUl9GTEFHUy1CRklOX0JPT1RfUEFSQSA6PSAtLWJpdHMgMTYgLS1kbWEgOAorTERSX0ZMQUdTLUJGSU5fQk9PVF9VQVJUIDo9IC0tcG9ydCBnIC0tZ3BpbyA2CiBMRFJfRkxBR1MgKz0gJChMRFJfRkxBR1MtJChDT05GSUdfQkZJTl9CT09UX01PREUpKQpkaWZmIC0tZ2l0IGEvYm9hcmQvYmY1Mzctc3RhbXAvbmFuZC5jIGIvYm9hcmQvYmY1Mzctc3RhbXAvbmFuZC5jCmluZGV4IGM1OTdmMmQuLjIwYTdkMGUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTM3LXN0YW1wL25hbmQuYworKysgYi9ib2FyZC9iZjUzNy1zdGFtcC9uYW5kLmMKQEAgLTg3LDcgKzg3LDcgQEAKICAqIE1lbWJlcnMgd2l0aCBhICI/IiB3ZXJlIG5vdCBzZXQgaW4gdGhlIG1lcmdlZCB0ZXN0aW5nLU5BTkQgYnJhbmNoLAogICogc28gdGhleSBhcmUgbm90IHNldCBoZXJlIGVpdGhlci4KICAqLwotdm9pZCBib2FyZF9uYW5kX2luaXQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCkKK2ludCBib2FyZF9uYW5kX2luaXQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCkKIHsKIAkqUE9SVChDT05GSUdfTkFORF9HUElPX1BPUlQsIF9GRVIpICY9IH5CRklOX05BTkRfUkVBRFk7CiAJKlBPUlQoQ09ORklHX05BTkRfR1BJT19QT1JULCBJT19ESVIpICY9IH5CRklOX05BTkRfUkVBRFk7CkBAIC05Nyw1ICs5Nyw3IEBACiAJbmFuZC0+ZWNjLm1vZGUgPSBOQU5EX0VDQ19TT0ZUOwogCW5hbmQtPmRldl9yZWFkeSA9IGJmaW5fZGV2aWNlX3JlYWR5OwogCW5hbmQtPmNoaXBfZGVsYXkgPSAzMDsKKworCXJldHVybiAwOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9iZjUzNy1zdGFtcC91LWJvb3QubGRzLlMgYi9ib2FyZC9iZjUzNy1zdGFtcC91LWJvb3QubGRzLlMKaW5kZXggMTg3MzA5Zi4uNzZkYWE3NSAxMDA2NDQKLS0tIGEvYm9hcmQvYmY1Mzctc3RhbXAvdS1ib290Lmxkcy5TCisrKyBiL2JvYXJkL2JmNTM3LXN0YW1wL3UtYm9vdC5sZHMuUwpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9ibGFja2Zpbi5oPgogI3VuZGVmIEFMSUdOCisjdW5kZWYgRU5UUlkKKyN1bmRlZiBiZmluCiAKIC8qIElmIHdlIGRvbid0IGFjdHVhbGx5IGxvYWQgYW55dGhpbmcgaW50byBMMSBkYXRhLCB0aGlzIHdpbGwgYXZvaWQKICAqIGEgc3ludGF4IGVycm9yLiAgSWYgd2UgZG8gYWN0dWFsbHkgbG9hZCBzb21ldGhpbmcgaW50byBMMSBkYXRhLApAQCAtNTAsMTEgKzUyLDEyIEBACiAJbDFfZGF0YSA6IE9SSUdJTiA9IEwxX0RBVEFfQl9TUkFNLCAgIExFTkdUSCA9IEwxX0RBVEFfQl9TUkFNX1NJWkUKIH0KIAorRU5UUlkoX3N0YXJ0KQogU0VDVElPTlMKIHsKIAkudGV4dCA6CiAJewotCQljcHUvYmxhY2tmaW4vc3RhcnQubyAoLnRleHQpCisJCWNwdS9ibGFja2Zpbi9zdGFydC5vICgudGV4dCAudGV4dC4qKQogCiAjaWZkZWYgRU5WX0lTX0VNQkVEREVECiAJCS8qIFdBUk5JTkcgLSB0aGUgZm9sbG93aW5nIGlzIGhhbmQtb3B0aW1pemVkIHRvIGZpdCB3aXRoaW4KQEAgLTYzLDE4ICs2NiwxOCBAQAogCQkgKiBpdCBsaW5rZWQgYWZ0ZXIgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdG9yLgogCQkgKi8KIAotCQljcHUvYmxhY2tmaW4vdHJhcHMubwkJKC50ZXh0KQotCQljcHUvYmxhY2tmaW4vaW50ZXJydXB0Lm8JKC50ZXh0KQotCQljcHUvYmxhY2tmaW4vc2VyaWFsLm8JCSgudGV4dCkKLQkJY29tbW9uL2RsbWFsbG9jLm8JCSgudGV4dCkKLQkJbGliX2dlbmVyaWMvY3JjMzIubwkJKC50ZXh0KQorCQljcHUvYmxhY2tmaW4vdHJhcHMubwkJKC50ZXh0IC50ZXh0LiopCisJCWNwdS9ibGFja2Zpbi9pbnRlcnJ1cHQubwkoLnRleHQgLnRleHQuKikKKwkJY3B1L2JsYWNrZmluL3NlcmlhbC5vCQkoLnRleHQgLnRleHQuKikKKwkJY29tbW9uL2RsbWFsbG9jLm8JCSgudGV4dCAudGV4dC4qKQorCQlsaWJfZ2VuZXJpYy9jcmMzMi5vCQkoLnRleHQgLnRleHQuKikKIAogCQkuID0gREVGSU5FRChlbnZfb2Zmc2V0KSA/IGVudl9vZmZzZXQgOiAuOwotCQljb21tb24vZW52X2VtYmVkZGVkLm8JKC50ZXh0KQorCQljb21tb24vZW52X2VtYmVkZGVkLm8JKC50ZXh0IC50ZXh0LiopCiAjZW5kaWYKIAogCQlfX2luaXRjb2RlX3N0YXJ0ID0gLjsKLQkJY3B1L2JsYWNrZmluL2luaXRjb2RlLm8gKC50ZXh0KQorCQljcHUvYmxhY2tmaW4vaW5pdGNvZGUubyAoLnRleHQgLnRleHQuKikKIAkJX19pbml0Y29kZV9lbmQgPSAuOwogCiAJCSooLnRleHQgLnRleHQuKikKZGlmZiAtLWdpdCBhL2JvYXJkL2JmNTYxLWV6a2l0L01ha2VmaWxlIGIvYm9hcmQvYmY1NjEtZXpraXQvTWFrZWZpbGUKaW5kZXggYTFhNDQzMy4uZTdlZTI0MyAxMDA2NDQKLS0tIGEvYm9hcmQvYmY1NjEtZXpraXQvTWFrZWZpbGUKKysrIGIvYm9hcmQvYmY1NjEtZXpraXQvTWFrZWZpbGUKQEAgLTM1LDEyICszNSwxMSBAQAogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCiBTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpIHUtYm9vdC5sZHMKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpICQob2JqKXUtYm9vdC5sZHMKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKIAotdS1ib290LmxkczogdS1ib290Lmxkcy5TCi0JJChDUFApICQoQ1BQRkxBR1MpIC1EX19BU1NFTUJMWV9fIC1QIC1VYmZpbiAkXiA+ICRALnRtcAotCW12IC1mICRALnRtcCAkQAorJChvYmopdS1ib290LmxkczogdS1ib290Lmxkcy5TCisJJChDUFApICQoQ1BQRkxBR1MpIC1EX19BU1NFTUJMWV9fIC1QICReID4gJEAKIAogY2xlYW46CiAJcm0gLWYgJChTT0JKUykgJChPQkpTKQpkaWZmIC0tZ2l0IGEvYm9hcmQvYmY1NjEtZXpraXQvY29uZmlnLm1rIGIvYm9hcmQvYmY1NjEtZXpraXQvY29uZmlnLm1rCmluZGV4IGRlODBmZmUuLjcxMDgwOWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTYxLWV6a2l0L2NvbmZpZy5taworKysgYi9ib2FyZC9iZjU2MS1lemtpdC9jb25maWcubWsKQEAgLTEsNCArMSw2IEBACiAjCisjIENvcHlyaWdodCAoYykgMjAwNS0yMDA4IEFuYWxvZyBEZXZpY2UgSW5jLgorIwogIyAoQykgQ29weXJpZ2h0IDIwMDEKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKQEAgLTIzLDMgKzI1LDkgQEAKIAogIyBUaGlzIGlzIG5vdCBhY3R1YWxseSB1c2VkIGZvciBCbGFja2ZpbiBib2FyZHMgc28gZG8gbm90IGNoYW5nZSBpdAogI1RFWFRfQkFTRSA9IGRvLW5vdC11c2UtbWUKKworTERTQ1JJUFQgPSAkKG9iailib2FyZC8kKEJPQVJERElSKS91LWJvb3QubGRzCisKKyMgU2V0IHNvbWUgZGVmYXVsdCBMRFIgZmxhZ3MgYmFzZWQgb24gYm9vdCBtb2RlLgorTERSX0ZMQUdTLUJGSU5fQk9PVF9QQVJBIDo9IC0tYml0cyAxNgorTERSX0ZMQUdTICs9ICQoTERSX0ZMQUdTLSQoQ09ORklHX0JGSU5fQk9PVF9NT0RFKSkKZGlmZiAtLWdpdCBhL2JvYXJkL2JmNTYxLWV6a2l0L3UtYm9vdC5sZHMuUyBiL2JvYXJkL2JmNTYxLWV6a2l0L3UtYm9vdC5sZHMuUwppbmRleCA5OWQ2YmU2Li4zZDA0NTNlIDEwMDY0NAotLS0gYS9ib2FyZC9iZjU2MS1lemtpdC91LWJvb3QubGRzLlMKKysrIGIvYm9hcmQvYmY1NjEtZXpraXQvdS1ib290Lmxkcy5TCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CiAjdW5kZWYgQUxJR04KKyN1bmRlZiBFTlRSWQorI3VuZGVmIGJmaW4KIAogLyogSWYgd2UgZG9uJ3QgYWN0dWFsbHkgbG9hZCBhbnl0aGluZyBpbnRvIEwxIGRhdGEsIHRoaXMgd2lsbCBhdm9pZAogICogYSBzeW50YXggZXJyb3IuICBJZiB3ZSBkbyBhY3R1YWxseSBsb2FkIHNvbWV0aGluZyBpbnRvIEwxIGRhdGEsCkBAIC01MCwxMSArNTIsMTIgQEAKIAlsMV9kYXRhIDogT1JJR0lOID0gTDFfREFUQV9CX1NSQU0sICAgTEVOR1RIID0gTDFfREFUQV9CX1NSQU1fU0laRQogfQogCitFTlRSWShfc3RhcnQpCiBTRUNUSU9OUwogewogCS50ZXh0IDoKIAl7Ci0JCWNwdS9ibGFja2Zpbi9zdGFydC5vICgudGV4dCkKKwkJY3B1L2JsYWNrZmluL3N0YXJ0Lm8gKC50ZXh0IC50ZXh0LiopCiAKICNpZmRlZiBFTlZfSVNfRU1CRURERUQKIAkJLyogV0FSTklORyAtIHRoZSBmb2xsb3dpbmcgaXMgaGFuZC1vcHRpbWl6ZWQgdG8gZml0IHdpdGhpbgpAQCAtNjMsMjAgKzY2LDIwIEBACiAJCSAqIGl0IGxpbmtlZCBhZnRlciB0aGUgY29uZmlndXJhdGlvbiBzZWN0b3IuCiAJCSAqLwogCi0JCWNwdS9ibGFja2Zpbi90cmFwcy5vCQkoLnRleHQpCi0JCWNwdS9ibGFja2Zpbi9pbnRlcnJ1cHQubwkoLnRleHQpCi0JCWNwdS9ibGFja2Zpbi9zZXJpYWwubwkJKC50ZXh0KQotCQljb21tb24vZGxtYWxsb2MubwkJKC50ZXh0KQotCQlsaWJfZ2VuZXJpYy9jcmMzMi5vCQkoLnRleHQpCi0JCWxpYl9nZW5lcmljL3psaWIubwkJKC50ZXh0KQotCQlib2FyZC9iZjU2MS1lemtpdC9iZjU2MS1lemtpdC5vCQkoLnRleHQpCisJCWNwdS9ibGFja2Zpbi90cmFwcy5vCQkoLnRleHQgLnRleHQuKikKKwkJY3B1L2JsYWNrZmluL2ludGVycnVwdC5vCSgudGV4dCAudGV4dC4qKQorCQljcHUvYmxhY2tmaW4vc2VyaWFsLm8JCSgudGV4dCAudGV4dC4qKQorCQljb21tb24vZGxtYWxsb2MubwkJKC50ZXh0IC50ZXh0LiopCisJCWxpYl9nZW5lcmljL2NyYzMyLm8JCSgudGV4dCAudGV4dC4qKQorCQlsaWJfZ2VuZXJpYy96bGliLm8JCSgudGV4dCAudGV4dC4qKQorCQlib2FyZC9iZjU2MS1lemtpdC9iZjU2MS1lemtpdC5vCQkoLnRleHQgLnRleHQuKikKIAogCQkuID0gREVGSU5FRChlbnZfb2Zmc2V0KSA/IGVudl9vZmZzZXQgOiAuOwotCQljb21tb24vZW52X2VtYmVkZGVkLm8JKC50ZXh0KQorCQljb21tb24vZW52X2VtYmVkZGVkLm8JKC50ZXh0IC50ZXh0LiopCiAjZW5kaWYKIAogCQlfX2luaXRjb2RlX3N0YXJ0ID0gLjsKLQkJY3B1L2JsYWNrZmluL2luaXRjb2RlLm8gKC50ZXh0KQorCQljcHUvYmxhY2tmaW4vaW5pdGNvZGUubyAoLnRleHQgLnRleHQuKikKIAkJX19pbml0Y29kZV9lbmQgPSAuOwogCiAJCSooLnRleHQgLnRleHQuKikKZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC94dXB2MnAvTWFrZWZpbGUgYi9ib2FyZC9lTkVUL01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggODElCmNvcHkgZnJvbSBib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlCmNvcHkgdG8gYm9hcmQvZU5FVC9NYWtlZmlsZQppbmRleCAxMGI0N2IyLi40ODEzYjRiIDEwMDY0NAotLS0gYS9ib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlCisrKyBiL2JvYXJkL2VORVQvTWFrZWZpbGUKQEAgLTEsNyArMSwxMyBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgorIyAoQykgQ29weXJpZ2h0IDIwMDgKKyMgR3JhZW1lIFJ1c3MsIGdyYWVtZS5ydXNzQGdtYWlsLmNvbS4KKyMKKyMgKEMpIENvcHlyaWdodCAyMDA2CiAjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCiAjCisjIChDKSBDb3B5cmlnaHQgMjAwMgorIyBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisjCiAjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAjIHByb2plY3QuCiAjCkBAIC0yNSwxNCArMzEsMTUgQEAKIAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCi1DT0JKUwk9ICQoQk9BUkQpLm8KK0NPQkpTCTo9IGVORVQubworU09CSlMJOj0gZU5FVF9zdGFydDE2Lm8gZU5FVF9zdGFydC5vCiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICReCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKSAkKFNPQkpTKQogCiBjbGVhbjoKIAlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngveHVwdjJwL2NvbmZpZy5tayBiL2JvYXJkL2VORVQvY29uZmlnLm1rCnNpbWlsYXJpdHkgaW5kZXggNjUlCmNvcHkgZnJvbSBib2FyZC94aWxpbngveHVwdjJwL2NvbmZpZy5tawpjb3B5IHRvIGJvYXJkL2VORVQvY29uZmlnLm1rCmluZGV4IGMwN2IwYjMuLmE3NjM4NDEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hpbGlueC94dXB2MnAvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VORVQvY29uZmlnLm1rCkBAIC0xLDcgKzEsNiBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDcgTWljaGFsIFNpbWVrCi0jCi0jIE1pY2hhbCAgU0lNRUsgPG1vbnN0ckBtb25zdHIuZXU+CisjIChDKSBDb3B5cmlnaHQgMjAwMgorIyBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCiAjCiAjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAjIHByb2plY3QuCkBAIC0xMyw3ICsxMiw3IEBACiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMjEsMTIgKzIwLDUgQEAKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICMgTUEgMDIxMTEtMTMwNyBVU0EKICMKLSMgQ0FVVElPTjogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGxpYmdlbi4KLSMgVmVyc2lvbjogWGlsaW54IEVESyA4LjIuMDIgRURLX0ltX1NwMi40Ci0jCiAKLVRFWFRfQkFTRSA9IDB4MzgwMDAwMDAKLQotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LW11bAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LWRpdgotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW14bC1iYXJyZWwtc2hpZnQKK1RFWFRfQkFTRSA9IDB4MzgwNDAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL2VORVQvZU5FVC5jIGIvYm9hcmQvZU5FVC9lTkVULmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkZDYzNQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2VORVQvZU5FVC5jCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vaWMvc2M1MjAuaD4KKworI2lmZGVmIENPTkZJR19IV19XQVRDSERPRworI2luY2x1ZGUgPHdhdGNoZG9nLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImhhcmR3YXJlLmgiCisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisjdW5kZWYgU0M1MjBfQ0RQX0RFQlVHCisKKyNpZmRlZglTQzUyMF9DRFBfREVCVUcKKyNkZWZpbmUJUFJJTlRGKGZtdCxhcmdzLi4uKQlwcmludGYgKGZtdCAsIyNhcmdzKQorI2Vsc2UKKyNkZWZpbmUgUFJJTlRGKGZtdCxhcmdzLi4uKQorI2VuZGlmCisKK3Vuc2lnbmVkIGxvbmcgbW9uaXRvcl9mbGFzaF9sZW4gPSBDT05GSUdfU1lTX01PTklUT1JfTEVOOworCit2b2lkIGluaXRfc2M1MjBfZW5ldCAodm9pZCkKK3sKKwkvKiBTZXQgQ1BVIFNwZWVkIHRvIDEwME1IeiAqLworCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9DUFVDVEwsIDEpOworCWdkLT5jcHVfY2xrID0gMTAwMDAwMDAwOworCisJLyogd2FpdCBhdCBsZWFzdCBvbmUgbWlsbGlzZWNvbmQgKi8KKwlhc20oIm1vdmwJJDB4MjAwMCwlJWVjeFxuIgorCSAgICAid2FpdF9sb29wOglwdXNobCAlJWVjeFxuIgorCSAgICAicG9wbAklJWVjeFxuIgorCSAgICAibG9vcCB3YWl0X2xvb3BcbiI6IDogOiAiZWN4Iik7CisKKwkvKiB0dXJuIG9uIHRoZSBTRFJBTSB3cml0ZSBidWZmZXIgKi8KKwl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfREJDVEwsIDB4MTEpOworCisJLyogdHVybiBvbiB0aGUgY2FjaGUgYW5kIGRpc2FibGUgd3JpdGUgdGhyb3VnaCAqLworCWFzbSgibW92bAklJWNyMCwgJSVlYXhcbiIKKwkgICAgImFuZGwJJDB4OWZmZmZmZmYsICUlZWF4XG4iCisJICAgICJtb3ZsCSUlZWF4LCAlJWNyMFxuIiAgOiA6IDogImVheCIpOworfQorCisvKgorICogTWlzY2VsbGFuZW91cyBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5pdGlhbGl6YXRpb25zCisgKi8KK2ludCBib2FyZF9pbml0KHZvaWQpCit7CisJaW5pdF9zYzUyMF9lbmV0KCk7CisKKwl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfR1BDU1JULCAweDAxKTsJCS8qIEdQIENoaXAgU2VsZWN0IFJlY292ZXJ5IFRpbWUgKi8KKwl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfR1BDU1BXLCAweDA3KTsJCS8qIEdQIENoaXAgU2VsZWN0IFB1bHNlIFdpZHRoICovCisJd3JpdGVfbW1jcl9ieXRlKFNDNTIwX0dQQ1NPRkYsIDB4MDApOwkJLyogR1AgQ2hpcCBTZWxlY3QgT2Zmc2V0ICovCisJd3JpdGVfbW1jcl9ieXRlKFNDNTIwX0dQUkRXLCAweDA1KTsJCS8qIEdQIFJlYWQgcHVsc2Ugd2lkdGggKi8KKwl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfR1BSRE9GRiwgMHgwMSk7CQkvKiBHUCBSZWFkIG9mZnNldCAqLworCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9HUFdSVywgMHgwNSk7CQkvKiBHUCBXcml0ZSBwdWxzZSB3aWR0aCAqLworCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9HUFdST0ZGLCAweDAxKTsJCS8qIEdQIFdyaXRlIG9mZnNldCAqLworCisJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT0RBVEExNV8wLCAweDA2MzApOwkvKiBQSU8xNV9QSU8wIERhdGEgKi8KKwl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPREFUQTMxXzE2LCAweDIwMDApOwkvKiBQSU8zMV9QSU8xNiBEYXRhICovCisJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT0RJUjMxXzE2LCAweDIwMDApOwkvKiBHUElPIERpcmVjdGlvbiAqLworCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9ESVIxNV8wLCAweDg3YjUpOwkvKiBHUElPIERpcmVjdGlvbiAqLworCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMzMV8xNiwgMHgwZGZlKTsJLyogR1BJTyBwaW4gZnVuY3Rpb24gMzEtMTYgcmVnICovCisJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT1BGUzE1XzAsIDB4MjAwYSk7CS8qIEdQSU8gcGluIGZ1bmN0aW9uIDE1LTAgcmVnICovCisJd3JpdGVfbW1jcl9ieXRlKFNDNTIwX0NTUEZTLCAweDAwZjgpOwkJLyogQ2hpcCBTZWxlY3QgUGluIEZ1bmN0aW9uIFNlbGVjdCAqLworCisJd3JpdGVfbW1jcl9sb25nKFNDNTIwX1BBUjIsIDB4MjAwNzEzZjgpOwkvKiBVYXJ0IEEgKEdQQ1MwLCAweDAxM2Y4LCA4IEJ5dGVzKSAqLworCXdyaXRlX21tY3JfbG9uZyhTQzUyMF9QQVIzLCAweDJjMDcxMmY4KTsJLyogVWFydCBCIChHUENTMywgMHgwMTJmOCwgOCBCeXRlcykgKi8KKwl3cml0ZV9tbWNyX2xvbmcoU0M1MjBfUEFSNCwgMHgzMDA3MTFmOCk7CS8qIFVhcnQgQyAoR1BDUzQsIDB4MDExZjgsIDggQnl0ZXMpICovCisJd3JpdGVfbW1jcl9sb25nKFNDNTIwX1BBUjUsIDB4MzQwNzEwZjgpOwkvKiBVYXJ0IEQgKEdQQ1M1LCAweDAxMGY4LCA4IEJ5dGVzKSAqLworCXdyaXRlX21tY3JfbG9uZyhTQzUyMF9QQVI2LCAweGUzZmZjMDAwKTsJLyogU0RSQU0gKDB4MDAwMDAwMDAsIDEyOE1CKSAqLworCXdyaXRlX21tY3JfbG9uZyhTQzUyMF9QQVI3LCAweGFhM2ZkMDAwKTsJLyogU3RyYXRhRmxhc2ggKFJPTUNTMSwgMHgxMDAwMDAwMCwgMTZNQikgKi8KKwl3cml0ZV9tbWNyX2xvbmcoU0M1MjBfUEFSOCwgMHhjYTNmZDEwMCk7CS8qIFN0cmF0YUZsYXNoIChST01DUzIsIDB4MTEwMDAwMDAsIDE2TUIpICovCisJd3JpdGVfbW1jcl9sb25nKFNDNTIwX1BBUjksIDB4NDIwM2Q5MDApOwkvKiBTUkFNIChHUENTMCwgMHgxOTAwMDAwMCwgMU1CKSAqLworCXdyaXRlX21tY3JfbG9uZyhTQzUyMF9QQVIxMCwgMHg0ZTAzZDkxMCk7CS8qIFNSQU0gKEdQQ1MzLCAweDE5MTAwMDAwLCAxTUIpICovCisJd3JpdGVfbW1jcl9sb25nKFNDNTIwX1BBUjExLCAweDUwMDE4MTAwKTsJLyogRFAtUkFNIChHUENTNCwgMHgxODEwMDAwMCwgNGtCKSAqLworCXdyaXRlX21tY3JfbG9uZyhTQzUyMF9QQVIxMiwgMHg1NDAyMDAwMCk7CS8qIENGTEFTSDEgKDB4MjAwMDAwMDAwLCA0a0IpICovCisJd3JpdGVfbW1jcl9sb25nKFNDNTIwX1BBUjEzLCAweDVjMDIwMDAxKTsJLyogQ0ZMQVNIMiAoMHgyMDAwMTAwMDAsIDRrQikgKi8KKy8qCXdyaXRlX21tY3JfbG9uZyhTQzUyMF9QQVIxNCwgMHg4YmZmZjgwMCk7ICovCS8qIEJPT1RDUyBhdCAgMHgxODAwMDAwMCAqLworLyoJd3JpdGVfbW1jcl9sb25nKFNDNTIwX1BBUjE1LCAweDM4MjAxMDAwKTsgKi8JLyogTEVEcyBldGMgKEdQQ1M2LCAweDEwMDAsIDIwIEJ5dGVzICovCisKKwkvKiBEaXNhYmxlIFdhdGNoZG9nICovCisJd3JpdGVfbW1jcl93b3JkKDB4MGNiMCwgMHgzMzMzKTsKKwl3cml0ZV9tbWNyX3dvcmQoMHgwY2IwLCAweGNjY2MpOworCXdyaXRlX21tY3Jfd29yZCgweDBjYjAsIDB4MDAwMCk7CisKKwkvKiBDaGlwIFNlbGVjdCBDb25maWd1cmF0aW9uICovCisJd3JpdGVfbW1jcl93b3JkKFNDNTIwX0JPT1RDU0NUTCwgMHgwMDMzKTsKKwl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUk9NQ1MxQ1RMLCAweDA2MTUpOworCXdyaXRlX21tY3Jfd29yZChTQzUyMF9ST01DUzJDVEwsIDB4MDYxNSk7CisKKwl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfQUREREVDQ1RMLCAweDAyKTsKKwl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfVUFSVDFDVEwsIDB4MDcpOworCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9TWVNBUkJDVEwsMHgwNik7CisJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1NZU0FSQk1FTkIsIDB4MDAwMyk7CisKKwkvKiBDcnlzdGFsIGlzIDMzLjAwME1IeiAqLworCWdkLT5idXNfY2xrID0gMzMwMDAwMDA7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRyYW1faW5pdCh2b2lkKQoreworCWluaXRfc2M1MjBfZHJhbSgpOworCXJldHVybiAwOworfQorCit2b2lkIHNob3dfYm9vdF9wcm9ncmVzcyhpbnQgdmFsKQoreworCXVjaGFyIGxlZF9tYXNrOworCisJbGVkX21hc2sgPSAweDAwOworCisJaWYgKHZhbCA8IDApCisJCWxlZF9tYXNrIHw9IExFRF9FUlJfQklUTUFTSzsKKworCWxlZF9tYXNrIHw9ICh1Y2hhcikodmFsICYgMHgwMDFmKTsKKwlvdXRiKGxlZF9tYXNrLCBMRURfTEFUQ0hfQUREUkVTUyk7Cit9CisKKworaW50IGxhc3Rfc3RhZ2VfaW5pdCh2b2lkKQoreworCWludCBtaW5vcjsKKwlpbnQgbWFqb3I7CisKKwltYWpvciA9IG1pbm9yID0gMDsKKworCXByaW50ZigiU2VyY2sgQ29udHJvbHMgZU5FVFxuIik7CisKKwlyZXR1cm4gMDsKK30KKwordWxvbmcgYm9hcmRfZmxhc2hfZ2V0X2xlZ2FjeSAodWxvbmcgYmFzZSwgaW50IGJhbmtudW0sIGZsYXNoX2luZm9fdCAqIGluZm8pCit7CisJaWYgKGJhbmtudW0gPT0gMCkgewkvKiBub24tQ0ZJIGJvb3QgZmxhc2ggKi8KKwkJaW5mby0+cG9ydHdpZHRoID0gRkxBU0hfQ0ZJXzhCSVQ7CisJCWluZm8tPmNoaXB3aWR0aCA9IEZMQVNIX0NGSV9CWTg7CisJCWluZm8tPmludGVyZmFjZSA9IEZMQVNIX0NGSV9YODsKKwkJcmV0dXJuIDE7CisJfSBlbHNlCisJCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZU5FVC9lTkVUX3N0YXJ0LlMgYi9ib2FyZC9lTkVUL2VORVRfc3RhcnQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjA3ZDYyCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZU5FVC9lTkVUX3N0YXJ0LlMKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwOAorICogR3JhZW1lIFJ1c3MsIGdyYWVtZS5ydXNzQGdtYWlsLmNvbS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSAiaGFyZHdhcmUuaCIKKworLyogYm9hcmQgZWFybHkgaW50aWFsaXphdGlvbiAqLworLmdsb2JsIGVhcmx5X2JvYXJkX2luaXQKK2Vhcmx5X2JvYXJkX2luaXQ6CisJLyogTm8gMzItYml0IGJvYXJkIHNwZWNpZmljIGluaXRpYWxpc2F0aW9uICovCisJam1wCSolZWJwCQkvKiByZXR1cm4gdG8gY2FsbGVyICovCisKKy5nbG9ibCBzaG93X2Jvb3RfcHJvZ3Jlc3NfYXNtCitzaG93X2Jvb3RfcHJvZ3Jlc3NfYXNtOgorCisJbW92YgklYWwsICVkbAkvKiBDcmVhdGUgV29ya2luZyBDb3B5ICovCisJYW5kYgkkMHg4MCwgJWRsCS8qIE1hc2sgaW4gb25seSBFcnJvciBiaXQgKi8KKwlzaHJiCSQweDAyLCAlZGwJLyogU2hpZnQgRXJyb3IgYml0IHRvIEVycm9yIExFRCAqLworCWFuZGIJJDB4MGYsICVhbAkvKiBNYXNrIG91dCAnRXJyb3InIGJpdCAqLworCW9yYgklZGwsICVhbAkvKiBNYXNrIGluIEVSUiBMRUQgKi8KKwltb3Z3CSRMRURfTEFUQ0hfQUREUkVTUywgJWR4CisJb3V0YgklYWwsICVkeAorCWptcAkqJWVicAkJLyogcmV0dXJuIHRvIGNhbGxlciAqLworCisuZ2xvYmwgY3B1X2hhbHRfYXNtCitjcHVfaGFsdF9hc206CisJbW92YgkkMHgwZiwgJWFsCisJbW92dwkkTEVEX0xBVENIX0FERFJFU1MsICVkeAorCW91dGIJJWFsLCAlZHgKKwlobHQKKwlqbXAgY3B1X2hhbHRfYXNtCmRpZmYgLS1naXQgYS9ib2FyZC9lTkVUL2VORVRfc3RhcnQxNi5TIGIvYm9hcmQvZU5FVC9lTkVUX3N0YXJ0MTYuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGU0ZDgzCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZU5FVC9lTkVUX3N0YXJ0MTYuUwpAQCAtMCwwICsxLDkwIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiAxNmJpdCBpbml0aWFsaXphdGlvbiBjb2RlLgorICogVGhpcyBjb2RlIGhhdmUgdG8gbWFwIHRoZSBhcmVhIG9mIHRoZSBib290IGZsYXNoCisgKiB0aGF0IGlzIHVzZWQgYnkgVS1ib290IHRvIGl0cyBmaW5hbCBkZXN0aW5hdGlvbi4KKyAqLworCisvKiAjaW5jbHVkZSA8YXNtL2ljL3NjNTIwX2RlZnMuaD4gKi8KKworI2luY2x1ZGUgImhhcmR3YXJlLmgiCisKKy50ZXh0Cisuc2VjdGlvbiAuc3RhcnQxNiwgImF4IgorLmNvZGUxNgorLmdsb2JsIGJvYXJkX2luaXQxNgorYm9hcmRfaW5pdDE2OgorCS8qIEFsaWFzIE1NQ1IgdG8gMHhkZjAwMCAqLworCW1vdncJJDB4ZmZmYywgJWR4CisJbW92bAkkMHg4MDBkZjBjYiwgJWVheAorCW91dGwJJWVheCwgJWR4CisKKwkvKiBTZXQgZHMgdG8gcG9pbnQgdG8gTU1DUiBhbGlhcyAqLworCW1vdncJJDB4ZGYwMCwgJWF4CisJbW92dwklYXgsICVkcworCisJLyogTWFwIFBBUiBmb3IgQm9vdCBGbGFzaCAoQk9PVENTLCA1MTJrQiBAIDB4MzgwMDAwMDAwKSAqLworCW1vdmwgICAgJDB4MDBjMCwgJWVkaQkJLyogU0M1MjBfUEFSMTQgKi8KKwltb3ZsCSQweDhiZmZmODAwLCAlZWF4CS8qIFRPRE86IENoZWNrIHRoaXMgKi8KKwltb3ZsCSVlYXgsICglZGkpCisKKwkvKiBNYXAgUEFSIGZvciBMRUQsIEhleCBTd2l0Y2hlcyAoR1BDUzYsIDIwIEJ5dGVzIEAgMHgxMDAwKSAqLworCW1vdmwgICAgJDB4MDBjNCwgJWVkaQkJLyogU0M1MjBfUEFSMTUgKi8KKwltb3ZsCSQweDM4MjAxMDAwLCAlZWF4CisJbW92bAklZWF4LCAoJWRpKQorCisJLyogRGlzYWJsZSBTRFJBTSB3cml0ZSBidWZmZXIgKi8KKwltb3Z3ICAgICQweDAwNDAsICVkaQkJLyogU0M1MjBfREJDVEwgKi8KKwl4b3J3ICAgICVheCwgJWF4CisJbW92YiAgICAlYWwsICglZGkpCisKKwkvKiBEaXNhYmUgTU1DUiBhbGlhcyAqLworCW1vdncJJDB4ZmZmYywgJWR4CisJbW92bAkkMHgwMDAwMDBjYiwgJWVheAorCW91dGwJJWVheCwgJWR4CisKKwkvKiB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgc3RvcmVkIGluIGJwICovCisJam1wCSolYnAKKworLnNlY3Rpb24gLmJpb3MsICJheCIKKy5jb2RlMTYKKy5nbG9ibCByZWFsbW9kZV9yZXNldAorcmVhbG1vZGVfcmVzZXQ6CisJLyogQWxpYXMgTU1DUiB0byAweGRmMDAwICovCisJbW92dwkkMHhmZmZjLCAlZHgKKwltb3ZsCSQweDgwMGRmMGNiLCAlZWF4CisJb3V0bAklZWF4LCAlZHgKKworCS8qIFNldCBkcyB0byBwb2ludCB0byBNTUNSIGFsaWFzICovCisJbW92dwkkMHhkZjAwLCAlYXgKKwltb3Z3CSVheCwgJWRzCisKKwkvKiBpc3N1ZSBzb2Z0d2FyZSByZXNldCB0aG9ydWdoIE1NQ1IgKi8KKwltb3ZsICAgICQweGQ3MiwgJWVkaQorCW1vdmIJJDB4MDEsICVhbAorCW1vdmIJJWFsLCAoJWRpKQorCisxOglobHQKKwlqbXAJMQpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvcmVzZXQuUyBiL2JvYXJkL2VORVQvaGFyZHdhcmUuaApzaW1pbGFyaXR5IGluZGV4IDY0JQpjb3B5IGZyb20gY3B1L2kzODYvcmVzZXQuUwpjb3B5IHRvIGJvYXJkL2VORVQvaGFyZHdhcmUuaAppbmRleCAwN2E3Mzg0Li40MjQ3NGE2IDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9yZXNldC5TCisrKyBiL2JvYXJkL2VORVQvaGFyZHdhcmUuaApAQCAtMSw3ICsxLDYgQEAKIC8qCi0gKiAgVS1ib290IC0gaTM4NiBTdGFydHVwIENvZGUKLSAqCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAyCU9taWNyb24gQ2V0aSBBQiwgRGFuaWVsIEVuZ3N0cvZtIDxkZW5haWVsQG9taWNyb24uc2U+CisgKiAoQykgQ29weXJpZ2h0IDIwMDgKKyAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20uCiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0xMyw3ICsxMiw3IEBACiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQogICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqCiAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMjIsMTYgKzIxLDE1IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLS8qIFJlc2V0IHZlY3RvciwganVtcHMgdG8gc3RhcnQxNi5TICovCisjaWZuZGVmIEhBUkRXQVJFX0hfCisjZGVmaW5lIEhBUkRXQVJFX0hfCiAKLS5leHRlcm4gc3RhcnQxNgorI2RlZmluZSBMRURfTEFUQ0hfQUREUkVTUwkweDEwMDIKKyNkZWZpbmUgTEVEX1JVTl9CSVRNQVNLCQkweDAxCisjZGVmaW5lIExFRF8xX0JJVE1BU0sJCTB4MDIKKyNkZWZpbmUgTEVEXzJfQklUTUFTSwkJMHgwNAorI2RlZmluZSBMRURfUlhfQklUTUFTSwkJMHgwOAorI2RlZmluZSBMRURfVFhfQklUTUFTSwkJMHgxMAorI2RlZmluZSBMRURfRVJSX0JJVE1BU0sJCTB4MjAKIAotLnNlY3Rpb24gLnJlc2V0LCAiYXgiCi0uY29kZTE2Ci1yZXNldF92ZWN0b3I6Ci0JY2xpCi0JY2xkCi0Jam1wIHN0YXJ0MTYKLQotCS5vcmcgMHhmCi0Jbm9wCisjZW5kaWYgLyogSEFSRFdBUkVfSF8gKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2VORVQvdS1ib290LmxkcyBiL2JvYXJkL2VORVQvdS1ib290LmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzEzMDVhCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZU5FVC91LWJvb3QubGRzCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCitPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIpCitPVVRQVVRfQVJDSChpMzg2KQorRU5UUlkoX3N0YXJ0KQorCitTRUNUSU9OUworeworCS4gPSAweDM4MDQwMDAwOwkJLyogTG9jYXRpb24gb2YgYm9vdGNvZGUgaW4gZmxhc2ggKi8KKwkudGV4dCAgOiB7ICooLnRleHQpOyB9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSAqKC5yb2RhdGEuc3RyMS4xKSAqKC5yb2RhdGEuc3RyMS4zMikgfQorCisJX2kzODZib290X3RleHRfc2l6ZSA9IFNJWkVPRigudGV4dCkgKyBTSVpFT0YoLnJvZGF0YSk7CisKKwkuID0gMHgwM0ZGMDAwMDsJCS8qIFJhbSBkYXRhIHNlZ21lbnQgdG8gdXNlICovCisJX2kzODZib290X3JvbWRhdGFfZGVzdCA9IEFCU09MVVRFKC4pOworCS5kYXRhIDogQVQgKCBMT0FEQUREUigucm9kYXRhKSArIFNJWkVPRigucm9kYXRhKSApIHsgKiguZGF0YSkgfQorCV9pMzg2Ym9vdF9yb21kYXRhX3N0YXJ0ID0gTE9BREFERFIoLmRhdGEpOworCisJLiA9IEFMSUdOKDQpOworCS5nb3QgOiBBVCAoIExPQURBRERSKC5kYXRhKSArIFNJWkVPRiguZGF0YSkgKSB7ICooLmdvdCkgfQorCisJLiA9IEFMSUdOKDQpOworCV9fdV9ib290X2NtZF9zdGFydCA9IC47CisJLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKwlfX3VfYm9vdF9jbWRfZW5kID0gLjsKKwlfaTM4NmJvb3RfY21kX3N0YXJ0ID0gTE9BREFERFIoLnVfYm9vdF9jbWQpOworCisJX2kzODZib290X3JvbWRhdGFfc2l6ZSA9IFNJWkVPRiguZGF0YSkgKyBTSVpFT0YoLmdvdCkgKyBTSVpFT0YoLnVfYm9vdF9jbWQpOworCisJLiA9IEFMSUdOKDQpOworCV9pMzg2Ym9vdF9ic3Nfc3RhcnQgPSBBQlNPTFVURSguKTsKKwkuYnNzIChOT0xPQUQpIDogeyAqKC5ic3MpIH0KKwlfaTM4NmJvb3RfYnNzX3NpemUgPSBTSVpFT0YoLmJzcyk7CisKKwkvKiAxNmJpdCByZWFsbW9kZSB0cmFtcG9saW5lIGNvZGUgKi8KKwkucmVhbG1vZGUgMHg3YzAgOiBBVCAoIExPQURBRERSKC5nb3QpICsgU0laRU9GKC5nb3QpICsgU0laRU9GKC51X2Jvb3RfY21kKSkgeyAqKC5yZWFsbW9kZSkgfQorCisJX2kzODZib290X3JlYWxtb2RlID0gTE9BREFERFIoLnJlYWxtb2RlKTsKKwlfaTM4NmJvb3RfcmVhbG1vZGVfc2l6ZSA9IFNJWkVPRigucmVhbG1vZGUpOworCisJLyogMTZiaXQgQklPUyBlbXVsYXRpb24gY29kZSAoanVzdCBlbm91Z2ggdG8gYm9vdCBMaW51eCkgKi8KKwkuYmlvcyAwIDogQVQgKCBMT0FEQUREUigucmVhbG1vZGUpICsgU0laRU9GKC5yZWFsbW9kZSkgKSB7ICooLmJpb3MpIH0KKworCV9pMzg2Ym9vdF9iaW9zID0gTE9BREFERFIoLmJpb3MpOworCV9pMzg2Ym9vdF9iaW9zX3NpemUgPSBTSVpFT0YoLmJpb3MpOworCisJLyogVGhlIGxvYWQgYWRkcmVzc2VzIGJlbG93IGFzc3VtZXMgdGhhdCB0aGUgZmxhc2gKKwkgKiB3aWxsIGJlIG1hcHBlZCBzbyB0aGF0IDB4Mzg3ZjAwMDAgPT0gMHhmZmZmMDAwMAorCSAqIGF0IHJlc2V0IHRpbWUKKwkgKgorCSAqIFRoZSBmZTAwIGFuZCBmZjAwIG9mZnNldHMgb2YgdGhlIHN0YXJ0MzIgYW5kIHN0YXJ0MTYKKwkgKiBzZWdtZW50cyBhcmUgYXJiaXRyYXJ5LCB0aGUganVzdCBoYXZlIHRvIGJlIG1hcHBlZAorCSAqIGF0IHJlc2V0IGFuZCB0aGUgY29kZSBoYXZlIHRvIGZpdC4KKwkgKiBUaGUgZmZmMCBvZmZzZXQgb2YgcmVzZXR2ZWMgaXMgaW1wb3J0YW50LCBob3dldmVyLgorCSAqLworCisJLiA9IDB4ZmZmZmZlMDA7CisJLnN0YXJ0MzIgOiBBVCAoMHgzODA3ZmUwMCkgeyAqKC5zdGFydDMyKTsgfQorCisJLiA9IDB4ZjgwMDsKKwkuc3RhcnQxNiA6IEFUICgweDM4MDdmODAwKSB7ICooLnN0YXJ0MTYpOyB9CisKKwkuID0gMHhmZmYwOworCS5yZXNldHZlYyA6IEFUICgweDM4MDdmZmYwKSB7ICooLnJlc2V0dmVjKTsgfQorCV9pMzg2Ym9vdF9lbmQgPSAoTE9BREFERFIoLnJlc2V0dmVjKSArIFNJWkVPRigucmVzZXR2ZWMpICk7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTQwNS9NYWtlZmlsZSBiL2JvYXJkL2VzZC9jcGNpNDA1L01ha2VmaWxlCmluZGV4IDM4NjdiZDguLjc1MTZjMjIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNDA1L01ha2VmaWxlCisrKyBiL2JvYXJkL2VzZC9jcGNpNDA1L01ha2VmaWxlCkBAIC0yOSw2ICsyOSw3IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTCT0gJChCT0FSRCkubyBmbGFzaC5vIC4uL2NvbW1vbi9taXNjLm8gLi4vY29tbW9uL2F1dG9fdXBkYXRlLm8KK0NPQkpTCSs9IC4uL2NvbW1vbi9jbWRfbG9hZHBjaS5vCiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k0MDUvY29uZmlnLm1rIGIvYm9hcmQvZXNkL2NwY2k0MDUvY29uZmlnLm1rCmluZGV4IDZjZmI4OTEuLjFiZGY1ZTQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNDA1L2NvbmZpZy5taworKysgYi9ib2FyZC9lc2QvY3BjaTQwNS9jb25maWcubWsKQEAgLTIxLDggKzIxLDQgQEAKICMgTUEgMDIxMTEtMTMwNyBVU0EKICMKIAotc2luY2x1ZGUgJChPQkpUUkVFKS9ib2FyZC8kKEJPQVJERElSKS9jb25maWcudG1wCi0KLWlmbmRlZiBURVhUX0JBU0UKLVRFWFRfQkFTRSA9IDB4RkZGRDAwMDAKLWVuZGlmCitURVhUX0JBU0UgPSAweEZGRkMwMDAwCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTQwNS9jcGNpNDA1LmMgYi9ib2FyZC9lc2QvY3BjaTQwNS9jcGNpNDA1LmMKaW5kZXggYzVjY2IzNC4uYmQ1NjlhNiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2k0MDUvY3BjaTQwNS5jCisrKyBiL2JvYXJkL2VzZC9jcGNpNDA1L2NwY2k0MDUuYwpAQCAtMjAsOCArMjAsOSBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KLQogI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGxpYmZkdC5oPgorI2luY2x1ZGUgPGZkdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGNvbW1hbmQuaD4KQEAgLTMxLDE2ICszMiwxNiBAQAogCiBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAotZXh0ZXJuIGludCBkb19yZXNldCAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pOwkvKmNtZF9ib290LmMqLwotI2lmIDAKLSNkZWZpbmUgRlBHQV9ERUJVRwotI2VuZGlmCitleHRlcm4gaW50IGRvX3Jlc2V0IChjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CitleHRlcm4gdm9pZCBfX2Z0X2JvYXJkX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKTsKKworI3VuZGVmIEZQR0FfREVCVUcKIAogLyogZnBnYSBjb25maWd1cmF0aW9uIGRhdGEgLSBnZW5lcmF0ZWQgYnkgYmluMmNjICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIGZwZ2FkYXRhW10gPQogewotI2lmZGVmIENPTkZJR19DUENJNDA1X1ZFUjIKLSMgaWZkZWYgQ09ORklHX0NQQ0k0MDVBQgorI2lmIGRlZmluZWQoQ09ORklHX0NQQ0k0MDVfVkVSMikKKyMgaWYgZGVmaW5lZChDT05GSUdfQ1BDSTQwNUFCKQogIyAgaW5jbHVkZSAiZnBnYWRhdGFfY3BjaTQwNWFiLmMiCiAjIGVsc2UKICMgIGluY2x1ZGUgImZwZ2FkYXRhX2NwY2k0MDUyLmMiCkBAIC01Niw3ICs1Nyw3IEBACiAjaW5jbHVkZSAiLi4vY29tbW9uL2ZwZ2EuYyIKICNpbmNsdWRlICIuLi9jb21tb24vYXV0b191cGRhdGUuaCIKIAotI2lmZGVmIENPTkZJR19DUENJNDA1QUIKKyNpZiBkZWZpbmVkKENPTkZJR19DUENJNDA1QUIpCiBhdV9pbWFnZV90IGF1X2ltYWdlW10gPSB7CiAJeyJjcGNpNDA1YWIvcHJlaW5zdC5pbWciLCAwLCAtMSwgQVVfU0NSSVBUfSwKIAl7ImNwY2k0MDVhYi9wSW1hZ2UiLCAweGZmYzAwMDAwLCAweDAwMGMwMDAwLCBBVV9OT1J9LApAQCAtNjUsNyArNjYsNyBAQAogCXsiY3BjaTQwNWFiL3Bvc3RpbnN0LmltZyIsIDAsIDAsIEFVX1NDUklQVH0sCiB9OwogI2Vsc2UKLSNpZmRlZiBDT05GSUdfQ1BDSTQwNV9WRVIyCisjaWYgZGVmaW5lZChDT05GSUdfQ1BDSTQwNV9WRVIyKQogYXVfaW1hZ2VfdCBhdV9pbWFnZVtdID0gewogCXsiY3BjaTQwNTIvcHJlaW5zdC5pbWciLCAwLCAtMSwgQVVfU0NSSVBUfSwKIAl7ImNwY2k0MDUyL3BJbWFnZSIsIDB4ZmZjMDAwMDAsIDB4MDAwYzAwMDAsIEFVX05PUn0sCkBAIC05MSw3ICs5Miw3IEBACiBpbnQgZ3VuemlwKHZvaWQgKiwgaW50LCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGxvbmcgKik7CiB2b2lkIGx4dDk3MV9ub19zbGVlcCh2b2lkKTsKIAotaW50IGJvYXJkX2Vhcmx5X2luaXRfZiAodm9pZCkKK2ludCBib2FyZF9lYXJseV9pbml0X2Yodm9pZCkKIHsKICNpZm5kZWYgQ09ORklHX0NQQ0k0MDVfVkVSMgogCWludCBpbmRleCwgbGVuLCBpOwpAQCAtMTAwLDE4ICsxMDEsMTkgQEAKIAogI2lmZGVmIEZQR0FfREVCVUcKIAkvKiBzZXQgdXAgc2VyaWFsIHBvcnQgd2l0aCBkZWZhdWx0IGJhdWRyYXRlICovCi0JKHZvaWQpIGdldF9jbG9ja3MgKCk7CisJKHZvaWQpZ2V0X2Nsb2NrcygpOwogCWdkLT5iYXVkcmF0ZSA9IENPTkZJR19CQVVEUkFURTsKLQlzZXJpYWxfaW5pdCAoKTsKKwlzZXJpYWxfaW5pdCgpOwogCWNvbnNvbGVfaW5pdF9mKCk7CiAjZW5kaWYKIAogCS8qCi0JICogRmlyc3QgcHVsbCBmcGdhLXByZyBwaW4gbG93LCB0byBkaXNhYmxlIGZwZ2EgbG9naWMgKG9uIHZlcnNpb24gMiBib2FyZCkKKwkgKiBGaXJzdCBwdWxsIGZwZ2EtcHJnIHBpbiBsb3csCisJICogdG8gZGlzYWJsZSBmcGdhIGxvZ2ljIChvbiB2ZXJzaW9uIDIgYm9hcmQpCiAJICovCiAJb3V0MzIoR1BJTzBfT0RSLCAweDAwMDAwMDAwKTsJICAgICAvKiBubyBvcGVuIGRyYWluIHBpbnMJKi8KLQlvdXQzMihHUElPMF9UQ1IsIENPTkZJR19TWVNfRlBHQV9QUkcpOyAgICAgIC8qIHNldHVwIGZvciBvdXRwdXQJKi8KLQlvdXQzMihHUElPMF9PUiwgIENPTkZJR19TWVNfRlBHQV9QUkcpOyAgICAgIC8qIHNldCBvdXRwdXQgcGlucyB0byBoaWdoICovCisJb3V0MzIoR1BJTzBfVENSLCBDT05GSUdfU1lTX0ZQR0FfUFJHKTsgLyogc2V0dXAgZm9yIG91dHB1dAkqLworCW91dDMyKEdQSU8wX09SLCBDT05GSUdfU1lTX0ZQR0FfUFJHKTsgLyogc2V0IG91dHB1dCBwaW5zIHRvIGhpZ2ggKi8KIAlvdXQzMihHUElPMF9PUiwgMCk7CQkgICAgIC8qIHB1bGwgcHJnIGxvdwkJKi8KIAogCS8qCkBAIC0xMjQsMzkgKzEyNiw0MiBAQAogCQkJLyogYm9vdGluZyBGUEdBIGZhaWxlZCAqLwogI2lmbmRlZiBGUEdBX0RFQlVHCiAJCQkvKiBzZXQgdXAgc2VyaWFsIHBvcnQgd2l0aCBkZWZhdWx0IGJhdWRyYXRlICovCi0JCQkodm9pZCkgZ2V0X2Nsb2NrcyAoKTsKKwkJCSh2b2lkKWdldF9jbG9ja3MoKTsKIAkJCWdkLT5iYXVkcmF0ZSA9IENPTkZJR19CQVVEUkFURTsKLQkJCXNlcmlhbF9pbml0ICgpOworCQkJc2VyaWFsX2luaXQoKTsKIAkJCWNvbnNvbGVfaW5pdF9mKCk7CiAjZW5kaWYKIAkJCXByaW50ZigiXG5GUEdBOiBCb290aW5nIGZhaWxlZCAiKTsKIAkJCXN3aXRjaCAoc3RhdHVzKSB7CiAJCQljYXNlIEVSUk9SX0ZQR0FfUFJHX0lOSVRfTE9XOgotCQkJCXByaW50ZigiKFRpbWVvdXQ6IElOSVQgbm90IGxvdyBhZnRlciBhc3NlcnRpbmcgUFJPR1JBTSopXG4gIik7CisJCQkJcHJpbnRmKCIoVGltZW91dDogSU5JVCBub3QgbG93IGFmdGVyICIKKwkJCQkgICAgICAgImFzc2VydGluZyBQUk9HUkFNKilcbiAiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRVJST1JfRlBHQV9QUkdfSU5JVF9ISUdIOgotCQkJCXByaW50ZigiKFRpbWVvdXQ6IElOSVQgbm90IGhpZ2ggYWZ0ZXIgZGVhc3NlcnRpbmcgUFJPR1JBTSopXG4gIik7CisJCQkJcHJpbnRmKCIoVGltZW91dDogSU5JVCBub3QgaGlnaCBhZnRlciAiCisJCQkJICAgICAgICJkZWFzc2VydGluZyBQUk9HUkFNKilcbiAiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRVJST1JfRlBHQV9QUkdfRE9ORToKLQkJCQlwcmludGYoIihUaW1lb3V0OiBET05FIG5vdCBoaWdoIGFmdGVyIHByb2dyYW1taW5nIEZQR0EpXG4gIik7CisJCQkJcHJpbnRmKCIoVGltZW91dDogRE9ORSBub3QgaGlnaCBhZnRlciAiCisJCQkJICAgICAgICJwcm9ncmFtbWluZyBGUEdBKVxuICIpOwogCQkJCWJyZWFrOwogCQkJfQogCiAJCQkvKiBkaXNwbGF5IGluZm9zIG9uIGZwZ2FpbWFnZSAqLwogCQkJaW5kZXggPSAxNTsKLQkJCWZvciAoaT0wOyBpPDQ7IGkrKykgeworCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogCQkJCWxlbiA9IGZwZ2FkYXRhW2luZGV4XTsKLQkJCQlwcmludGYoIkZQR0E6ICVzXG4iLCAmKGZwZ2FkYXRhW2luZGV4KzFdKSk7Ci0JCQkJaW5kZXggKz0gbGVuKzM7CisJCQkJcHJpbnRmKCJGUEdBOiAlc1xuIiwgJihmcGdhZGF0YVtpbmRleCArIDFdKSk7CisJCQkJaW5kZXggKz0gbGVuICsgMzsKIAkJCX0KLQkJCXB1dGMgKCdcbicpOworCQkJcHV0YygnXG4nKTsKIAkJCS8qIGRlbGF5ZWQgcmVib290ICovCi0JCQlmb3IgKGk9MjA7IGk+MDsgaS0tKSB7CisJCQlmb3IgKGkgPSAyMDsgaSA+IDA7IGktLSkgewogCQkJCXByaW50ZigiUmVib290aW5nIGluICUyZCBzZWNvbmRzIFxyIixpKTsKLQkJCQlmb3IgKGluZGV4PTA7aW5kZXg8MTAwMDtpbmRleCsrKQorCQkJCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IDEwMDA7IGluZGV4KyspCiAJCQkJCXVkZWxheSgxMDAwKTsKIAkJCX0KLQkJCXB1dGMgKCdcbicpOworCQkJcHV0YygnXG4nKTsKIAkJCWRvX3Jlc2V0KE5VTEwsIDAsIDAsIE5VTEwpOwogCQl9CiAJfQpAQCAtMTY3LDcgKzE3Miw3IEBACiAJICogSVJRIDE2ICAgIDQwNUdQIGludGVybmFsbHkgZ2VuZXJhdGVkOyBhY3RpdmUgbG93OyBsZXZlbCBzZW5zaXRpdmUKIAkgKiBJUlEgMTctMjQgUkVTRVJWRUQKIAkgKiBJUlEgMjUgKEVYVCBJUlEgMCkgQ0FOMDsgYWN0aXZlIGxvdzsgbGV2ZWwgc2Vuc2l0aXZlCi0JICogSVJRIDI2IChFWFQgSVJRIDEpIENBTjEgKCtGUEdBIG9uIENQQ0k0MDUyKSA7IGFjdGl2ZSBsb3c7IGxldmVsIHNlbnNpdGl2ZQorCSAqIElSUSAyNiAoRVhUIElSUSAxKSBDQU4xICgrRlBHQSBvbiBDUENJNDA1Mik7IGFjdGl2ZSBsb3c7IGxldmVsIHNlbnMuCiAJICogSVJRIDI3IChFWFQgSVJRIDIpIFBDSSBTTE9UIDA7IGFjdGl2ZSBsb3c7IGxldmVsIHNlbnNpdGl2ZQogCSAqIElSUSAyOCAoRVhUIElSUSAzKSBQQ0kgU0xPVCAxOyBhY3RpdmUgbG93OyBsZXZlbCBzZW5zaXRpdmUKIAkgKiBJUlEgMjkgKEVYVCBJUlEgNCkgUENJIFNMT1QgMjsgYWN0aXZlIGxvdzsgbGV2ZWwgc2Vuc2l0aXZlCkBAIC0xNzcsNyArMTgyLDcgQEAKIAltdGRjcih1aWNzciwgMHhGRkZGRkZGRik7CS8qIGNsZWFyIGFsbCBpbnRzICovCiAJbXRkY3IodWljZXIsIDB4MDAwMDAwMDApOwkvKiBkaXNhYmxlIGFsbCBpbnRzICovCiAJbXRkY3IodWljY3IsIDB4MDAwMDAwMDApOwkvKiBzZXQgYWxsIHRvIGJlIG5vbi1jcml0aWNhbCovCi0jaWZkZWYgQ09ORklHX0NQQ0k0MDVfNlUKKyNpZiBkZWZpbmVkKENPTkZJR19DUENJNDA1XzZVKQogCWlmIChjcGNpNDA1X3ZlcnNpb24oKSA9PSAzKSB7CiAJCW10ZGNyKHVpY3ByLCAweEZGRkZGRjk5KTsJLyogc2V0IGludCBwb2xhcml0aWVzICovCiAJfSBlbHNlIHsKQEAgLTE4NywyMSArMTkyLDIwIEBACiAJbXRkY3IodWljcHIsIDB4RkZGRkZGODEpOwkvKiBzZXQgaW50IHBvbGFyaXRpZXMgKi8KICNlbmRpZgogCW10ZGNyKHVpY3RyLCAweDEwMDAwMDAwKTsJLyogc2V0IGludCB0cmlnZ2VyIGxldmVscyAqLwotCW10ZGNyKHVpY3ZjciwgMHgwMDAwMDAwMSk7CS8qIHNldCB2ZWN0IGJhc2U9MCxJTlQwIGhpZ2hlc3QgcHJpb3JpdHkqLworCW10ZGNyKHVpY3ZjciwgMHgwMDAwMDAwMSk7CS8qIHNldCB2ZWN0IGJhc2U9MCwKKwkJCQkJICogSU5UMCBoaWdoZXN0IHByaW9yaXR5ICovCiAJbXRkY3IodWljc3IsIDB4RkZGRkZGRkYpOwkvKiBjbGVhciBhbGwgaW50cyAqLwogCiAJcmV0dXJuIDA7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQogaW50IGN0ZXJtbTIodm9pZCkKIHsKLSNpZmRlZiBDT05GSUdfQ1BDSTQwNV9WRVIyCisjaWYgZGVmaW5lZChDT05GSUdfQ1BDSTQwNV9WRVIyKQogCXJldHVybiAwOwkJCS8qIG5vLCBib2FyZCBpcyBjcGNpNDA1ICovCiAjZWxzZQotCWlmICgoKih1bnNpZ25lZCBjaGFyICopMHhmMDAwMDQwMCA9PSAweDAwKSAmJgotCSAgICAoKih1bnNpZ25lZCBjaGFyICopMHhmMDAwMDQwMSA9PSAweDAxKSkKKwlpZiAoKGluXzgoKHZvaWQqKTB4ZjAwMDA0MDApID09IDB4MDApICYmCisJICAgIChpbl84KCh2b2lkKikweGYwMDAwNDAxKSA9PSAweDAxKSkKIAkJcmV0dXJuIDA7CQkvKiBubywgYm9hcmQgaXMgY3BjaTQwNSAqLwogCWVsc2UKIAkJcmV0dXJuIC0xOwkJLyogeWVzLCBib2FyZCBpcyBjdGVybS1tMiAqLwpAQCAtMjI4LDggKzIzMiw4IEBACiAJbXRkY3IoY250cmwwLCBjbnRybDBSZWcgfCAweDAzMDAwMDAwKTsKIAlvdXRfYmUzMigodm9pZCopR1BJTzBfT0RSLCBpbl9iZTMyKCh2b2lkKilHUElPMF9PRFIpICYgfjB4MDAxODAwMDApOwogCW91dF9iZTMyKCh2b2lkKilHUElPMF9UQ1IsIGluX2JlMzIoKHZvaWQqKUdQSU8wX1RDUikgJiB+MHgwMDE4MDAwMCk7Ci0JdWRlbGF5KDEwMDApOwkJCS8qIHdhaXQgc29tZSB0aW1lIGJlZm9yZSByZWFkaW5nIGlucHV0ICovCi0JdmFsdWUgPSBpbl9iZTMyKCh2b2lkKilHUElPMF9JUikgJiAweDAwMTgwMDAwOwkgICAgIC8qIGdldCBjb25maWcgYml0cyAqLworCXVkZWxheSgxMDAwKTsgLyogd2FpdCBzb21lIHRpbWUgYmVmb3JlIHJlYWRpbmcgaW5wdXQgKi8KKwl2YWx1ZSA9IGluX2JlMzIoKHZvaWQqKUdQSU8wX0lSKSAmIDB4MDAxODAwMDA7IC8qIGdldCBjb25maWcgYml0cyAqLwogCiAJLyoKIAkgKiBSZXN0b3JlIEdQSU8gc2V0dGluZ3MKQEAgLTI2Myw3ICsyNjcsNyBAQAogCWdkLT5iZC0+YmlfZmxhc2hzdGFydCA9IDAgLSBnZC0+YmQtPmJpX2ZsYXNoc2l6ZTsKIAlnZC0+YmQtPmJpX2ZsYXNob2Zmc2V0ID0gMDsKIAotI2lmZGVmIENPTkZJR19DUENJNDA1X1ZFUjIKKyNpZiBkZWZpbmVkKENPTkZJR19DUENJNDA1X1ZFUjIpCiAJewogCXVuc2lnbmVkIGNoYXIgKmRzdDsKIAl1bG9uZyBsZW4gPSBzaXplb2YoZnBnYWRhdGEpOwpAQCAtMjgzLDkgKzI4NywxMCBAQAogCQltdGRjcihjbnRybDAsIGNudHJsMFJlZyB8IDB4MDAzMDAwMDApOwogCiAJCWRzdCA9IG1hbGxvYyhDT05GSUdfU1lTX0ZQR0FfTUFYX1NJWkUpOwotCQlpZiAoZ3VuemlwIChkc3QsIENPTkZJR19TWVNfRlBHQV9NQVhfU0laRSwgKHVjaGFyICopZnBnYWRhdGEsICZsZW4pICE9IDApIHsKLQkJCXByaW50ZiAoIkdVTlpJUCBFUlJPUiAtIG11c3QgUkVTRVQgYm9hcmQgdG8gcmVjb3ZlclxuIik7Ci0JCQlkb19yZXNldCAoTlVMTCwgMCwgMCwgTlVMTCk7CisJCWlmIChndW56aXAoZHN0LCBDT05GSUdfU1lTX0ZQR0FfTUFYX1NJWkUsCisJCQkgICAodWNoYXIgKilmcGdhZGF0YSwgJmxlbikgIT0gMCkgeworCQkJcHJpbnRmKCJHVU5aSVAgRVJST1IgLSBtdXN0IFJFU0VUIGJvYXJkIHRvIHJlY292ZXJcbiIpOworCQkJZG9fcmVzZXQoTlVMTCwgMCwgMCwgTlVMTCk7CiAJCX0KIAogCQlzdGF0dXMgPSBmcGdhX2Jvb3QoZHN0LCBsZW4pOwpAQCAtMjkzLDMxICsyOTgsMzQgQEAKIAkJCXByaW50ZigiXG5GUEdBOiBCb290aW5nIGZhaWxlZCAiKTsKIAkJCXN3aXRjaCAoc3RhdHVzKSB7CiAJCQljYXNlIEVSUk9SX0ZQR0FfUFJHX0lOSVRfTE9XOgotCQkJCXByaW50ZigiKFRpbWVvdXQ6IElOSVQgbm90IGxvdyBhZnRlciBhc3NlcnRpbmcgUFJPR1JBTSopXG4gIik7CisJCQkJcHJpbnRmKCIoVGltZW91dDogSU5JVCBub3QgbG93IGFmdGVyICIKKwkJCQkgICAgICAgImFzc2VydGluZyBQUk9HUkFNKilcbiAiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRVJST1JfRlBHQV9QUkdfSU5JVF9ISUdIOgotCQkJCXByaW50ZigiKFRpbWVvdXQ6IElOSVQgbm90IGhpZ2ggYWZ0ZXIgZGVhc3NlcnRpbmcgUFJPR1JBTSopXG4gIik7CisJCQkJcHJpbnRmKCIoVGltZW91dDogSU5JVCBub3QgaGlnaCBhZnRlciAiCisJCQkJICAgICAgICJkZWFzc2VydGluZyBQUk9HUkFNKilcbiAiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRVJST1JfRlBHQV9QUkdfRE9ORToKLQkJCQlwcmludGYoIihUaW1lb3V0OiBET05FIG5vdCBoaWdoIGFmdGVyIHByb2dyYW1taW5nIEZQR0EpXG4gIik7CisJCQkJcHJpbnRmKCIoVGltZW91dDogRE9ORSBub3QgaGlnaCBhZnRlciAiCisJCQkJICAgICAgICJwcm9ncmFtbWluZyBGUEdBKVxuICIpOwogCQkJCWJyZWFrOwogCQkJfQogCiAJCQkvKiBkaXNwbGF5IGluZm9zIG9uIGZwZ2FpbWFnZSAqLwogCQkJaW5kZXggPSAxNTsKLQkJCWZvciAoaT0wOyBpPDQ7IGkrKykgeworCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogCQkJCWxlbiA9IGRzdFtpbmRleF07Ci0JCQkJcHJpbnRmKCJGUEdBOiAlc1xuIiwgJihkc3RbaW5kZXgrMV0pKTsKLQkJCQlpbmRleCArPSBsZW4rMzsKKwkJCQlwcmludGYoIkZQR0E6ICVzXG4iLCAmKGRzdFtpbmRleCArIDFdKSk7CisJCQkJaW5kZXggKz0gbGVuICsgMzsKIAkJCX0KLQkJCXB1dGMgKCdcbicpOworCQkJcHV0YygnXG4nKTsKIAkJCS8qIGRlbGF5ZWQgcmVib290ICovCi0JCQlmb3IgKGk9MjA7IGk+MDsgaS0tKSB7Ci0JCQkJcHJpbnRmKCJSZWJvb3RpbmcgaW4gJTJkIHNlY29uZHMgXHIiLGkpOwotCQkJCWZvciAoaW5kZXg9MDtpbmRleDwxMDAwO2luZGV4KyspCisJCQlmb3IgKGkgPSAyMDsgaSA+IDA7IGktLSkgeworCQkJCXByaW50ZigiUmVib290aW5nIGluICUyZCBzZWNvbmRzIFxyIiwgaSk7CisJCQkJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgMTAwMDsgaW5kZXgrKykKIAkJCQkJdWRlbGF5KDEwMDApOwogCQkJfQotCQkJcHV0YyAoJ1xuJyk7CisJCQlwdXRjKCdcbicpOwogCQkJZG9fcmVzZXQoTlVMTCwgMCwgMCwgTlVMTCk7CiAJCX0KIApAQCAtMzI4LDEyICszMzYsMTIgQEAKIAogCQkvKiBkaXNwbGF5IGluZm9zIG9uIGZwZ2FpbWFnZSAqLwogCQlpbmRleCA9IDE1OwotCQlmb3IgKGk9MDsgaTw0OyBpKyspIHsKKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogCQkJbGVuID0gZHN0W2luZGV4XTsKLQkJCXByaW50ZigiJXMgIiwgJihkc3RbaW5kZXgrMV0pKTsKLQkJCWluZGV4ICs9IGxlbiszOworCQkJcHJpbnRmKCIlcyAiLCAmKGRzdFtpbmRleCArIDFdKSk7CisJCQlpbmRleCArPSBsZW4gKyAzOwogCQl9Ci0JCXB1dGMgKCdcbicpOworCQlwdXRjKCdcbicpOwogCiAJCWZyZWUoZHN0KTsKIApAQCAtMzQ1LDY4ICszNTMsNDggQEAKIAkJU0VUX0ZQR0EoRlBHQV9QUkcgfCBGUEdBX0NMSyB8IEZQR0FfREFUQSk7CiAJCXVkZWxheSgxMDAwKTsgLyogd2FpdCAxbXMgKi8KIAotI2lmZGVmIENPTkZJR19DUENJNDA1XzZVCisjaWYgZGVmaW5lZChDT05GSUdfQ1BDSTQwNV82VSkKKyNlcnJvciBISUVSIEdFVEggRVMgV0VJVEVSIE1JVCBJTyBBQ0NFU1NPUlMKIAkJaWYgKGNwY2k0MDVfdmVyc2lvbigpID09IDMpIHsKLQkJCXZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICpmcGdhX21vZGUgPSAodW5zaWduZWQgc2hvcnQgKilDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSOwotCQkJdm9sYXRpbGUgdW5zaWduZWQgY2hhciAqbGVkcyA9ICh1bnNpZ25lZCBjaGFyICopQ09ORklHX1NZU19MRURfQUREUjsKLQogCQkJLyoKIAkJCSAqIEVuYWJsZSBvdXRwdXRzIGluIGZwZ2Egb24gdmVyc2lvbiAzIGJvYXJkCiAJCQkgKi8KLQkJCSpmcGdhX21vZGUgfD0gQ09ORklHX1NZU19GUEdBX01PREVfRU5BQkxFX09VVFBVVDsKKwkJCW91dF9iZTE2KCh2b2lkKilDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSLAorCQkJCSBpbl9iZTE2KCh2b2lkKilDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSKSB8CisJCQkJIENPTkZJR19TWVNfRlBHQV9NT0RFX0VOQUJMRV9PVVRQVVQpOwogCiAJCQkvKgogCQkJICogU2V0IG91dHB1dHMgdG8gMAogCQkJICovCi0JCQkqbGVkcyA9IDB4MDA7CisJCQlvdXRfOCgodm9pZCopQ09ORklHX1NZU19MRURfQUREUiwgMHgwMCk7CiAKIAkJCS8qCiAJCQkgKiBSZXNldCBleHRlcm5hbCBEVUFSVAogCQkJICovCi0JCQkqZnBnYV9tb2RlIHw9IENPTkZJR19TWVNfRlBHQV9NT0RFX0RVQVJUX1JFU0VUOworCQkJb3V0X2JlMTYoKHZvaWQqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIsCisJCQkJIGluX2JlMTYoKHZvaWQqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIpIHwKKwkJCQkgQ09ORklHX1NZU19GUEdBX01PREVfRFVBUlRfUkVTRVQpOwogCQkJdWRlbGF5KDEwMCk7Ci0JCQkqZnBnYV9tb2RlICY9IH4oQ09ORklHX1NZU19GUEdBX01PREVfRFVBUlRfUkVTRVQpOworCQkJb3V0X2JlMTYoKHZvaWQqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIsCisJCQkJIGluX2JlMTYoKHZvaWQqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIpICYKKwkJCQkgfkNPTkZJR19TWVNfRlBHQV9NT0RFX0RVQVJUX1JFU0VUKTsKIAkJfQogI2VuZGlmCiAJfQogCWVsc2UgewogCQlwdXRzKCJcbioqKiBVLUJvb3QgVmVyc2lvbiBkb2VzIG5vdCBtYXRjaCBCb2FyZCBWZXJzaW9uIVxuIik7CiAJCXB1dHMoIioqKiBDUENJLTQwNSBWZXJzaW9uIDEueCBkZXRlY3RlZCFcbiIpOwotCQlwdXRzKCIqKiogUGxlYXNlIHVzZSBjb3JyZWN0IFUtQm9vdCB2ZXJzaW9uIChDUENJNDA1IGluc3RlYWQgb2YgQ1BDSTQwNTIpIVxuXG4iKTsKKwkJcHV0cygiKioqIFBsZWFzZSB1c2UgY29ycmVjdCBVLUJvb3QgdmVyc2lvbiAiCisJCSAgICAgIihDUENJNDA1IGluc3RlYWQgb2YgQ1BDSTQwNTIpIVxuXG4iKTsKIAl9CiAJfQotCiAjZWxzZSAvKiBDT05GSUdfQ1BDSTQwNV9WRVIyICovCi0KLSNpZiAwIC8qIHRlc3Qtb25seTogY29kZS1wbHVnIG5vdyBub3QgcmVsYXZhbnQgZm9yIGlwLWFkZHJlc3MgYW55IG1vcmUgKi8KLQkvKgotCSAqIEdlbmVyYXRlIGxhc3QgYnl0ZSBvZiBpcC1hZGRyIGZyb20gY29kZS1wbHVnIEAgMHhmMDAwMDQwMAotCSAqLwotCWlmIChjdGVybW0yKCkpIHsKLQkJY2hhciBzdHJbMzJdOwotCQl1bnNpZ25lZCBjaGFyIGlwYnl0ZSA9ICoodW5zaWduZWQgY2hhciAqKTB4ZjAwMDA0MDA7Ci0KLQkJLyoKLQkJICogT25seSBvdmVyd3JpdGUgaXAtYWRkciB3aXRoIGFsbG93ZWQgdmFsdWVzCi0JCSAqLwotCQlpZiAoKGlwYnl0ZSAhPSAweDAwKSAmJiAoaXBieXRlICE9IDB4ZmYpKSB7Ci0JCQliZC0+YmlfaXBfYWRkciA9IChiZC0+YmlfaXBfYWRkciAmIDB4ZmZmZmZmMDApIHwgaXBieXRlOwotCQkJc3ByaW50ZihzdHIsICIlbGQuJWxkLiVsZC4lbGQiLAotCQkJCShiZC0+YmlfaXBfYWRkciAmIDB4ZmYwMDAwMDApID4+IDI0LAotCQkJCShiZC0+YmlfaXBfYWRkciAmIDB4MDBmZjAwMDApID4+IDE2LAotCQkJCShiZC0+YmlfaXBfYWRkciAmIDB4MDAwMGZmMDApID4+IDgsCi0JCQkJKGJkLT5iaV9pcF9hZGRyICYgMHgwMDAwMDBmZikpOwotCQkJc2V0ZW52KCJpcGFkZHIiLCBzdHIpOwotCQl9Ci0JfQotI2VuZGlmCi0KIAlpZiAoY3BjaTQwNV92ZXJzaW9uKCkgPj0gMikgewogCQlwdXRzKCJcbioqKiBVLUJvb3QgVmVyc2lvbiBkb2VzIG5vdCBtYXRjaCBCb2FyZCBWZXJzaW9uIVxuIik7CiAJCXB1dHMoIioqKiBDUENJLTQwNSBCb2FyZCBWZXJzaW9uIDIueCBkZXRlY3RlZCFcbiIpOwotCQlwdXRzKCIqKiogUGxlYXNlIHVzZSBjb3JyZWN0IFUtQm9vdCB2ZXJzaW9uIChDUENJNDA1MiBpbnN0ZWFkIG9mIENQQ0k0MDUpIVxuXG4iKTsKKwkJcHV0cygiKioqIFBsZWFzZSB1c2UgY29ycmVjdCBVLUJvb3QgdmVyc2lvbiAiCisJCSAgICAgIihDUENJNDA1MiBpbnN0ZWFkIG9mIENQQ0k0MDUpIVxuXG4iKTsKIAl9Ci0KICNlbmRpZiAvKiBDT05GSUdfQ1BDSTQwNV9WRVIyICovCiAKIAkvKgpAQCAtNDE1LDQ2ICs0MDMsMzMgQEAKIAljbnRybDBSZWcgPSBtZmRjcihjbnRybDApOwogCW10ZGNyKGNudHJsMCwgY250cmwwUmVnIHwgMHgwMDAwMTAwMCk7CiAKLQlyZXR1cm4gKDApOworCXJldHVybiAwOwogfQogCiAvKgogICogQ2hlY2sgQm9hcmQgSWRlbnRpdHk6CiAgKi8KIAotaW50IGNoZWNrYm9hcmQgKHZvaWQpCitpbnQgY2hlY2tib2FyZCh2b2lkKQogewogI2lmbmRlZiBDT05GSUdfQ1BDSTQwNV9WRVIyCiAJaW50IGluZGV4OwogCWludCBsZW47CiAjZW5kaWYKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9yKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAJdW5zaWduZWQgc2hvcnQgdmVyOwogCi0JcHV0cyAoIkJvYXJkOiAiKTsKKwlwdXRzKCJCb2FyZDogIik7CiAKLQlpZiAoaSA9PSAtMSkgewotCQlwdXRzICgiIyMjIE5vIEhXIElEIC0gYXNzdW1pbmcgQ1BDSTQwNSIpOwotCX0gZWxzZSB7CisJaWYgKGkgPT0gLTEpCisJCXB1dHMoIiMjIyBObyBIVyBJRCAtIGFzc3VtaW5nIENQQ0k0MDUiKTsKKwllbHNlCiAJCXB1dHMoc3RyKTsKLQl9CiAKIAl2ZXIgPSBjcGNpNDA1X3ZlcnNpb24oKTsKIAlwcmludGYoIiAoVmVyICVkLngsICIsIHZlcik7CiAKLSNpZiAwIC8qIHRlc3Qtb25seSAqLwotCWlmICh2ZXIgPj0gMikgewotCQl2b2xhdGlsZSB1MTYgKmZwZ2Ffc3RhdHVzID0gKHUxNiAqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIgKyAxOwotCi0JCWlmICgqZnBnYV9zdGF0dXMgJiBDT05GSUdfU1lTX0ZQR0FfU1RBVFVTX0ZMQVNIKSB7Ci0JCQlwdXRzICgiRkxBU0ggQmFuayBCLCAiKTsKLQkJfSBlbHNlIHsKLQkJCXB1dHMgKCJGTEFTSCBCYW5rIEEsICIpOwotCQl9Ci0JfQotI2VuZGlmCi0KIAlpZiAoY3Rlcm1tMigpKSB7CiAJCWNoYXIgc3RyWzRdOwogCkBAIC00NjUsMzIgKzQ0MCwzMSBAQAogCQlzZXRlbnYoImJvYXJkaWQiLCBzdHIpOwogCQlwcmludGYoIkNURVJNLU0yIC0gSWQ9JXMpIiwgc3RyKTsKIAl9IGVsc2UgewotCQlpZiAoY3BjaTQwNV9ob3N0KCkpIHsKLQkJCXB1dHMgKCJQQ0kgSG9zdCBWZXJzaW9uKSIpOwotCQl9IGVsc2UgewotCQkJcHV0cyAoIlBDSSBBZGFwdGVyIFZlcnNpb24pIik7Ci0JCX0KKwkJaWYgKGNwY2k0MDVfaG9zdCgpKQorCQkJcHV0cygiUENJIEhvc3QgVmVyc2lvbikiKTsKKwkJZWxzZQorCQkJcHV0cygiUENJIEFkYXB0ZXIgVmVyc2lvbikiKTsKIAl9CiAKICNpZm5kZWYgQ09ORklHX0NQQ0k0MDVfVkVSMgotCXB1dHMgKCJcbkZQR0E6CSIpOworCXB1dHMoIlxuRlBHQToJIik7CiAKIAkvKiBkaXNwbGF5IGluZm9zIG9uIGZwZ2FpbWFnZSAqLwogCWluZGV4ID0gMTU7Ci0JZm9yIChpPTA7IGk8NDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogCQlsZW4gPSBmcGdhZGF0YVtpbmRleF07Ci0JCXByaW50ZigiJXMgIiwgJihmcGdhZGF0YVtpbmRleCsxXSkpOwotCQlpbmRleCArPSBsZW4rMzsKKwkJcHJpbnRmKCIlcyAiLCAmKGZwZ2FkYXRhW2luZGV4ICsgMV0pKTsKKwkJaW5kZXggKz0gbGVuICsgMzsKIAl9CiAjZW5kaWYKIAotCXB1dGMgKCdcbicpOworCXB1dGMoJ1xuJyk7CiAJcmV0dXJuIDA7CiB9CiAKIHZvaWQgcmVzZXRfcGh5KHZvaWQpCiB7Ci0jaWZkZWYgQ09ORklHX0xYVDk3MV9OT19TTEVFUAorI2lmIGRlZmluZWQoQ09ORklHX0xYVDk3MV9OT19TTEVFUCkKIAogCS8qCiAJICogRGlzYWJsZSBzbGVlcCBtb2RlIGluIExYVDk3MQpAQCAtNDk5LDI1ICs0NzMsMjQgQEAKICNlbmRpZgogfQogCi0jaWZkZWYgQ09ORklHX0NQQ0k0MDVfVkVSMgotI2lmZGVmIENPTkZJR19JREVfUkVTRVQKLQorI2lmIGRlZmluZWQoQ09ORklHX0NQQ0k0MDVfVkVSMikgJiYgZGVmaW5lZCAoQ09ORklHX0lERV9SRVNFVCkKIHZvaWQgaWRlX3NldF9yZXNldChpbnQgb24pCiB7Ci0Jdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmZwZ2FfbW9kZSA9ICh1bnNpZ25lZCBzaG9ydCAqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFI7Ci0KIAkvKgogCSAqIEFzc2VydCBvciBkZWFzc2VydCBDb21wYWN0Rmxhc2ggUmVzZXQgUGluCiAJICovCi0JaWYgKG9uKSB7CQkvKiBhc3NlcnQgUkVTRVQgKi8KLQkJKmZwZ2FfbW9kZSAmPSB+KENPTkZJR19TWVNfRlBHQV9NT0RFX0NGX1JFU0VUKTsKLQl9IGVsc2UgewkJLyogcmVsZWFzZSBSRVNFVCAqLwotCQkqZnBnYV9tb2RlIHw9IENPTkZJR19TWVNfRlBHQV9NT0RFX0NGX1JFU0VUOworCWlmIChvbikgewkvKiBhc3NlcnQgUkVTRVQgKi8KKwkJb3V0X2JlMTYoKHZvaWQqKUNPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIsCisJCQkgaW5fYmUxNigodm9pZCopQ09ORklHX1NZU19GUEdBX0JBU0VfQUREUikgJgorCQkJIH5DT05GSUdfU1lTX0ZQR0FfTU9ERV9DRl9SRVNFVCk7CisJfSBlbHNlIHsJLyogcmVsZWFzZSBSRVNFVCAqLworCQlvdXRfYmUxNigodm9pZCopQ09ORklHX1NZU19GUEdBX0JBU0VfQUREUiwKKwkJCSBpbl9iZTE2KCh2b2lkKilDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSKSB8CisJCQkgQ09ORklHX1NZU19GUEdBX01PREVfQ0ZfUkVTRVQpOwogCX0KIH0KIAotI2VuZGlmIC8qIENPTkZJR19JREVfUkVTRVQgKi8KLSNlbmRpZiAvKiBDT05GSUdfQ1BDSTQwNV9WRVIyICovCisjZW5kaWYgLyogQ09ORklHX0lERV9SRVNFVCAmJiBDT05GSUdfQ1BDSTQwNV9WRVIyICovCiAKICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCiB2b2lkIGNwY2k0MDVfcGNpX2ZpeHVwX2lycShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsIHBjaV9kZXZfdCBkZXYpCkBAIC01NTIsMTUgKzUyNSw0NCBAQAogfQogI2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX1BDSSkgKi8KIAorI2lmIGRlZmluZWQoQ09ORklHX09GX0xJQkZEVCkgJiYgZGVmaW5lZChDT05GSUdfT0ZfQk9BUkRfU0VUVVApCit2b2lkIGZ0X2JvYXJkX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCWludCByYzsKIAotI2lmZGVmIENPTkZJR19DUENJNDA1QUIKKwlfX2Z0X2JvYXJkX3NldHVwKGJsb2IsIGJkKTsKIAotI2RlZmluZSBPTkVfV0lSRV9DTEVBUgkgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikoQ09ORklHX1NZU19GUEdBX0JBU0VfQUREUiArIENPTkZJR19TWVNfRlBHQV9NT0RFKSBcCi0JCQkgIHw9IENPTkZJR19TWVNfRlBHQV9NT0RFXzFXSVJFX0RJUikKLSNkZWZpbmUgT05FX1dJUkVfU0VUCSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKShDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSICsgQ09ORklHX1NZU19GUEdBX01PREUpIFwKLQkJCSAgJj0gfkNPTkZJR19TWVNfRlBHQV9NT0RFXzFXSVJFX0RJUikKLSNkZWZpbmUgT05FX1dJUkVfR0VUCSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKShDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSICsgQ09ORklHX1NZU19GUEdBX1NUQVRVUykgXAotCQkJICAmIENPTkZJR19TWVNfRlBHQV9NT0RFXzFXSVJFKQorCS8qCisJICogRGlzYWJsZSBQQ0kgaW4gYWRhcHRlciBtb2RlLgorCSAqLworCWlmICghY3BjaTQwNV9ob3N0KCkpIHsKKwkJcmMgPSBmZHRfZmluZF9hbmRfc2V0cHJvcChibG9iLCAiL3BsYi9wY2lAZWMwMDAwMDAiLCAic3RhdHVzIiwKKwkJCQkJICAiZGlzYWJsZWQiLCBzaXplb2YoImRpc2FibGVkIiksIDEpOworCQlpZiAocmMpIHsKKwkJCXByaW50ZigiVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSBzdGF0dXMgaW4gUENJIG5vZGUsICIKKwkJCSAgICAgICAiZXJyPSVzXG4iLAorCQkJICAgICAgIGZkdF9zdHJlcnJvcihyYykpOworCQl9CisJfQorfQorI2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX09GX0xJQkZEVCkgJiYgZGVmaW5lZChDT05GSUdfT0ZfQk9BUkRfU0VUVVApICovCisKKyNpZiBkZWZpbmVkKENPTkZJR19DUENJNDA1QUIpCisjZGVmaW5lIE9ORV9XSVJFX0NMRUFSCSBvdXRfYmUxNigodm9pZCopKENPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIgKwlcCisJCQkJCSAgQ09ORklHX1NZU19GUEdBX01PREUpLAlcCisJCQkJICBpbl9iZTE2KCh2b2lkKikoQ09ORklHX1NZU19GUEdBX0JBU0VfQUREUiArIFwKKwkJCQkJCSAgQ09ORklHX1NZU19GUEdBX01PREUpKSB8IFwKKwkJCQkJICBDT05GSUdfU1lTX0ZQR0FfTU9ERV8xV0lSRV9ESVIpCisKKyNkZWZpbmUgT05FX1dJUkVfU0VUCSBvdXRfYmUxNigodm9pZCopKENPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIgKwlcCisJCQkJCSAgQ09ORklHX1NZU19GUEdBX01PREUpLAlcCisJCQkJICBpbl9iZTE2KCh2b2lkKikoQ09ORklHX1NZU19GUEdBX0JBU0VfQUREUiArIFwKKwkJCQkJCSAgQ09ORklHX1NZU19GUEdBX01PREUpKSAmIFwKKwkJCQkJICB+Q09ORklHX1NZU19GUEdBX01PREVfMVdJUkVfRElSKQorCisjZGVmaW5lIE9ORV9XSVJFX0dFVAkgKGluX2JlMTYoKHZvaWQqKShDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSICsgXAorCQkJCQkgIENPTkZJR19TWVNfRlBHQV9TVEFUVVMpKSAmICBcCisJCQkgIENPTkZJR19TWVNfRlBHQV9NT0RFXzFXSVJFKQogCiAvKgogICogR2VuZXJhdGUgYSAxLXdpcmUgcmVzZXQsIHJldHVybiAxIGlmIG5vIHByZXNlbmNlIGRldGVjdCB3YXMgZm91bmQsCkBAIC02MzAsNyArNjMyLDcgQEAKIHsKIAlpbnQgbG9vcDsKIAotCWZvciAobG9vcD0wOyBsb29wPDg7IGxvb3ArKykgeworCWZvciAobG9vcCA9IDA7IGxvb3AgPCA4OyBsb29wKyspIHsKIAkJT1dXcml0ZUJpdChkYXRhICYgMHgwMSk7CiAJCWRhdGEgPj49IDE7CiAJfQpAQCAtNjQwLDExICs2NDIsMTAgQEAKIHsKIAlpbnQgbG9vcCwgcmVzdWx0ID0gMDsKIAotCWZvciAobG9vcD0wOyBsb29wPDg7IGxvb3ArKykgeworCWZvciAobG9vcCA9IDA7IGxvb3AgPCA4OyBsb29wKyspIHsKIAkJcmVzdWx0ID4+PSAxOwotCQlpZiAoT1dSZWFkQml0KCkpIHsKKwkJaWYgKE9XUmVhZEJpdCgpKQogCQkJcmVzdWx0IHw9IDB4ODA7Ci0JCX0KIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpAQCAtNjUyLDcgKzY1Myw3IEBACiAKIGludCBkb19vbmV3aXJlKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotCXZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IHZhbDsKKwl1bnNpZ25lZCBzaG9ydCB2YWw7CiAJaW50IHJlc3VsdDsKIAlpbnQgaTsKIAl1bnNpZ25lZCBjaGFyIG93X2lkWzZdOwpAQCAtNjYyLDIzICs2NjMsMjUgQEAKIAkvKgogCSAqIENsZWFyIDEtd2lyZSBiaXQgKG9wZW4gZHJhaW4gd2l0aCBwdWxsLXVwKQogCSAqLwotCXZhbCA9ICoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikweGYwNDAwMDAwOwotCXZhbCAmPSB+MHgxMDAwOyAvKiBjbGVhciAxLXdpcmUgYml0ICovCi0JKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKTB4ZjA0MDAwMDAgPSB2YWw7CisJdmFsID0gaW5fYmUxNigodm9pZCopKENPTkZJR19TWVNfRlBHQV9CQVNFX0FERFIgKworCQkJICAgICAgQ09ORklHX1NZU19GUEdBX01PREUpKTsKKwl2YWwgJj0gfkNPTkZJR19TWVNfRlBHQV9NT0RFXzFXSVJFOyAvKiBjbGVhciAxLXdpcmUgYml0ICovCisJb3V0X2JlMTYoKHZvaWQqKShDT05GSUdfU1lTX0ZQR0FfQkFTRV9BRERSICsKKwkJCSBDT05GSUdfU1lTX0ZQR0FfTU9ERSksIHZhbCk7CiAKIAlyZXN1bHQgPSBPV1RvdWNoUmVzZXQoKTsKLQlpZiAocmVzdWx0ICE9IDApIHsKKwlpZiAocmVzdWx0ICE9IDApCiAJCXB1dHMoIk5vIDEtd2lyZSBkZXZpY2UgZGV0ZWN0ZWQhXG4iKTsKLQl9CiAKIAlPV1dyaXRlQnl0ZSgweDMzKTsgLyogc2VuZCByZWFkIHJvbSBjb21tYW5kICovCiAJT1dSZWFkQnl0ZSgpOyAvKiBza2lwIGZhbWlseSBjb2RlICggPT0gMHgwMSkgKi8KLQlmb3IgKGk9MDsgaTw2OyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogCQlvd19pZFtpXSA9IE9XUmVhZEJ5dGUoKTsKLQl9CiAJb3dfY3JjID0gT1dSZWFkQnl0ZSgpOyAvKiByZWFkIGNyYyAqLwogCi0Jc3ByaW50ZihzdHIsICIlMDhYJTA0WCIsICoodW5zaWduZWQgaW50ICopJm93X2lkWzBdLCAqKHVuc2lnbmVkIHNob3J0ICopJm93X2lkWzRdKTsKKwlzcHJpbnRmKHN0ciwgIiUwOFglMDRYIiwKKwkJKih1bnNpZ25lZCBpbnQgKikmb3dfaWRbMF0sCisJCSoodW5zaWduZWQgc2hvcnQgKikmb3dfaWRbNF0pOwogCXByaW50ZigiU2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSAnb3dfaWQnIHRvICVzXG4iLCBzdHIpOwogCXNldGVudigib3dfaWQiLCBzdHIpOwogCkBAIC02OTAsOCArNjkzLDggQEAKIAlOVUxMCiAJKTsKIAotI2RlZmluZSBDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUl8yCTB4NTEJLyogRUVQUk9NIENBVDI4V0MzMgkJKi8KLSNkZWZpbmUgQ09ORklHX0VOVl9TSVpFXzIJMHg4MDAJLyogMjA0OCBieXRlcyBtYXkgYmUgdXNlZCBmb3IgZW52IHZhcnMqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUl8yIDB4NTEgLyogRUVQUk9NIENBVDI0V0MzMiAqLworI2RlZmluZSBDT05GSUdfRU5WX1NJWkVfMiAweDgwMCAvKiAyMDQ4IGJ5dGVzIG1heSBiZSB1c2VkIGZvciBlbnYgdmFycyAqLwogCiAvKgogICogV3JpdGUgYmFja3BsYW5lIGlwLWFkZHJlc3MuLi4KQEAgLTcwNiwxMiArNzA5LDE0IEBACiAJSVBhZGRyX3QgaXBhZGRyOwogCiAJYnVmID0gbWFsbG9jKENPTkZJR19FTlZfU0laRV8yKTsKLQlpZiAoZWVwcm9tX3JlYWQoQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFJfMiwgMCwgKHVjaGFyICopYnVmLCBDT05GSUdfRU5WX1NJWkVfMikpIHsKKwlpZiAoZWVwcm9tX3JlYWQoQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFJfMiwgMCwKKwkJCSh1Y2hhciAqKWJ1ZiwgQ09ORklHX0VOVl9TSVpFXzIpKQogCQlwdXRzKCJcbkVycm9yIHJlYWRpbmcgYmFja3BsYW5lIEVFUFJPTSFcbiIpOwotCX0gZWxzZSB7Ci0JCWNyYyA9IGNyYzMyKDAsICh1Y2hhciAqKShidWYrNCksIENPTkZJR19FTlZfU0laRV8yLTQpOworCWVsc2UgeworCQljcmMgPSBjcmMzMigwLCAodWNoYXIgKikoYnVmKzQpLCBDT05GSUdfRU5WX1NJWkVfMiAtIDQpOwogCQlpZiAoY3JjICE9ICoodWxvbmcgKilidWYpIHsKLQkJCXByaW50ZigiRVJST1I6IGNyYyBtaXNtYXRjaCAlMDhseCAlMDhseFxuIiwgY3JjLCAqKHVsb25nICopYnVmKTsKKwkJCXByaW50ZigiRVJST1I6IGNyYyBtaXNtYXRjaCAlMDhseCAlMDhseFxuIiwKKwkJCSAgICAgICBjcmMsICoodWxvbmcgKilidWYpOwogCQkJcmV0dXJuIC0xOwogCQl9CiAKQEAgLTc2OCwxMiArNzczLDEyIEBACiAJbWVtc2V0KGJ1ZiwgMCwgQ09ORklHX0VOVl9TSVpFXzIpOwogCXNwcmludGYoc3RyLCAiYnBfaXA9JXMiLCBhcmd2WzFdKTsKIAlzdHJjcHkoYnVmKzQsIHN0cik7Ci0JY3JjID0gY3JjMzIoMCwgKHVjaGFyICopKGJ1Zis0KSwgQ09ORklHX0VOVl9TSVpFXzItNCk7CisJY3JjID0gY3JjMzIoMCwgKHVjaGFyICopKGJ1Zis0KSwgQ09ORklHX0VOVl9TSVpFXzIgLSA0KTsKIAkqKHVsb25nICopYnVmID0gY3JjOwogCi0JaWYgKGVlcHJvbV93cml0ZShDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUl8yLCAwLCAodWNoYXIgKilidWYsIENPTkZJR19FTlZfU0laRV8yKSkgeworCWlmIChlZXByb21fd3JpdGUoQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFJfMiwKKwkJCSAwLCAodWNoYXIgKilidWYsIENPTkZJR19FTlZfU0laRV8yKSkKIAkJcHV0cygiXG5FcnJvciB3cml0aW5nIGJhY2twbGFuZSBFRVBST00hXG4iKTsKLQl9CiAKIAlmcmVlKGJ1Zik7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9wbHU0MDUvcGx1NDA1LmMgYi9ib2FyZC9lc2QvcGx1NDA1L3BsdTQwNS5jCmluZGV4IDYxMTg2YTguLjg1MDU3YTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9wbHU0MDUvcGx1NDA1LmMKKysrIGIvYm9hcmQvZXNkL3BsdTQwNS9wbHU0MDUuYwpAQCAtMTA0LDYgKzEwNCw3IEBACiAJdW5zaWduZWQgY2hhciAqZHVhcnQwX21jciA9ICh1bnNpZ25lZCBjaGFyICopKCh1bG9uZylEVUFSVDBfQkEgKyA0KTsKIAl1bnNpZ25lZCBjaGFyICpkdWFydDFfbWNyID0gKHVuc2lnbmVkIGNoYXIgKikoKHVsb25nKURVQVJUMV9CQSArIDQpOwogCXVuc2lnbmVkIGNoYXIgKmRzdDsKKwl1bnNpZ25lZCBjaGFyIGZjdHI7CiAJdWxvbmcgbGVuID0gc2l6ZW9mKGZwZ2FkYXRhKTsKIAlpbnQgc3RhdHVzOwogCWludCBpbmRleDsKQEAgLTIwMyw2ICsyMDQsMTUgQEAKIAlvdXRfOChkdWFydDBfbWNyLCAweDA4KTsKIAlvdXRfOChkdWFydDFfbWNyLCAweDA4KTsKIAorCS8qCisJICogRW5hYmxlIGF1dG8gUlM0ODUgbW9kZSBpbiAybmQgZXh0ZXJuYWwgdWFydAorCSAqLworCW91dF84KCh2b2lkICopRFVBUlQxX0JBICsgMywgMHhiZik7IC8qIHdyaXRlIExDUiAqLworCWZjdHIgPSBpbl84KCh2b2lkICopRFVBUlQxX0JBICsgMSk7IC8qIHJlYWQgRkNUUiAqLworCWZjdHIgfD0gMHgwODsgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuYWJsZSBSUzQ4NSBtb2RlICovCisJb3V0XzgoKHZvaWQgKilEVUFSVDFfQkEgKyAxLCBmY3RyKTsgLyogd3JpdGUgRkNUUiAqLworCW91dF84KCh2b2lkICopRFVBUlQxX0JBICsgMywgMCk7ICAgIC8qIHdyaXRlIExDUiAqLworCiAJcmV0dXJuICgwKTsKIH0KIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BtYzQ0MC9jbWRfcG1jNDQwLmMgYi9ib2FyZC9lc2QvcG1jNDQwL2NtZF9wbWM0NDAuYwppbmRleCAzZjBkY2EwLi4xNmM5YzdlIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvcG1jNDQwL2NtZF9wbWM0NDAuYworKysgYi9ib2FyZC9lc2QvcG1jNDQwL2NtZF9wbWM0NDAuYwpAQCAtMzY0LDcgKzM2NCw3IEBACiAJYmFzZSAtPSBMT0dCVUZGX0xFTiArIExPR0JVRkZfT1ZFUkhFQUQ7CiAjZW5kaWYKIAkvKgotCSAqIGdkLT5iZC0+YmlfbWVtc2l6ZSA9PSBwaHlzaWNhbCByYW0gc2l6ZSAtIENGR19NRU1fVE9QX0hJREUKKwkgKiBnZC0+YmQtPmJpX21lbXNpemUgPT0gcGh5c2ljYWwgcmFtIHNpemUgLSBDT05GSUdfU1lTX01FTV9UT1BfSElERQogCSAqLwogCXBhcmFtID0gYmFzZSAtIChwcmFtIDw8IDEwKTsKIAlwcmludGYoIlBBUkFNOiBAJTA4eFxuIiwgcGFyYW0pOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BtYzQ0MC9wbWM0NDAuYyBiL2JvYXJkL2VzZC9wbWM0NDAvcG1jNDQwLmMKaW5kZXggODU2M2Q3ZC4uMzgyNDEwNSAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BtYzQ0MC9wbWM0NDAuYworKysgYi9ib2FyZC9lc2QvcG1jNDQwL3BtYzQ0MC5jCkBAIC0xMDcsNyArMTA3LDcgQEAKIAkgKiBTZXR1cCB0aGUgR1BJTyBwaW5zCiAJICogVE9ETzogc2V0dXAgR1BJT3MgdmlhIENPTkZJR19TWVNfNHh4X0dQSU9fVEFCTEUgaW4gYm9hcmQncyBjb25maWcgZmlsZQogCSAqLwotCW91dDMyKEdQSU8wX09SLCAgICAweDQwMDAwMDAyKTsKKwlvdXQzMihHUElPMF9PUiwgICAgMHg0MDAwMDEwMik7CiAJb3V0MzIoR1BJTzBfVENSLCAgIDB4NGM5MDAxMWYpOwogCW91dDMyKEdQSU8wX09TUkwsICAweDI4MDUxNDAwKTsKIAlvdXQzMihHUElPMF9PU1JILCAgMHg1NTAwNTAwMCk7CkBAIC03NTUsMTcgKzc1NSwzMSBAQAogI2lmZGVmIENPTkZJR19SRVNFVF9QSFlfUgogdm9pZCByZXNldF9waHkodm9pZCkKIHsKKwljaGFyICpzOworCXVuc2lnbmVkIHNob3J0IHZhbF9tZXRob2QsIHZhbF9iZWhhdmlvcjsKKworCS8qIHNwZWNpYWwgTEVEIHNldHVwIGZvciBOR0NDL0NBTkRFUyAqLworCWlmICgocyA9IGdldGVudigiYmRfdHlwZSIpKSAmJgorCSAgICAoKCFzdHJjbXAocywgIm5nY2MiKSkgfHwgKCFzdHJjbXAocywgImNhbmRlcyIpKSkpIHsKKwkJdmFsX21ldGhvZCAgID0gMHgwZTBhOworCQl2YWxfYmVoYXZpb3IgPSAweDBjZjI7CisJfSBlbHNlIHsKKwkJLyogUE1DNDQwIHN0YW5kYXJkIHR5cGUgKi8KKwkJdmFsX21ldGhvZCAgID0gMHgwZTEwOworCQl2YWxfYmVoYXZpb3IgPSAweDBjZjA7CisJfQorCiAJaWYgKG1paXBoeV93cml0ZSgicHBjXzR4eF9ldGgwIiwgQ09ORklHX1BIWV9BRERSLCAweDFmLCAweDAwMDEpID09IDApIHsKIAkJbWlpcGh5X3dyaXRlKCJwcGNfNHh4X2V0aDAiLCBDT05GSUdfUEhZX0FERFIsIDB4MTEsIDB4MDAxMCk7Ci0JCW1paXBoeV93cml0ZSgicHBjXzR4eF9ldGgwIiwgQ09ORklHX1BIWV9BRERSLCAweDExLCAweDBkZjApOwotCQltaWlwaHlfd3JpdGUoInBwY180eHhfZXRoMCIsIENPTkZJR19QSFlfQUREUiwgMHgxMCwgMHgwZTEwKTsKKwkJbWlpcGh5X3dyaXRlKCJwcGNfNHh4X2V0aDAiLCBDT05GSUdfUEhZX0FERFIsIDB4MTEsIHZhbF9iZWhhdmlvcik7CisJCW1paXBoeV93cml0ZSgicHBjXzR4eF9ldGgwIiwgQ09ORklHX1BIWV9BRERSLCAweDEwLCB2YWxfbWV0aG9kKTsKIAkJbWlpcGh5X3dyaXRlKCJwcGNfNHh4X2V0aDAiLCBDT05GSUdfUEhZX0FERFIsIDB4MWYsIDB4MDAwMCk7CiAJfQogCiAJaWYgKG1paXBoeV93cml0ZSgicHBjXzR4eF9ldGgxIiwgQ09ORklHX1BIWTFfQUREUiwgMHgxZiwgMHgwMDAxKSA9PSAwKSB7CiAJCW1paXBoeV93cml0ZSgicHBjXzR4eF9ldGgxIiwgQ09ORklHX1BIWTFfQUREUiwgMHgxMSwgMHgwMDEwKTsKLQkJbWlpcGh5X3dyaXRlKCJwcGNfNHh4X2V0aDEiLCBDT05GSUdfUEhZMV9BRERSLCAweDExLCAweDBkZjApOwotCQltaWlwaHlfd3JpdGUoInBwY180eHhfZXRoMSIsIENPTkZJR19QSFkxX0FERFIsIDB4MTAsIDB4MGUxMCk7CisJCW1paXBoeV93cml0ZSgicHBjXzR4eF9ldGgxIiwgQ09ORklHX1BIWTFfQUREUiwgMHgxMSwgdmFsX2JlaGF2aW9yKTsKKwkJbWlpcGh5X3dyaXRlKCJwcGNfNHh4X2V0aDEiLCBDT05GSUdfUEhZMV9BRERSLCAweDEwLCB2YWxfbWV0aG9kKTsKIAkJbWlpcGh5X3dyaXRlKCJwcGNfNHh4X2V0aDEiLCBDT05GSUdfUEhZMV9BRERSLCAweDFmLCAweDAwMDApOwogCX0KIH0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzE1ZXJkYi9tcGM4MzE1ZXJkYi5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTVlcmRiL21wYzgzMTVlcmRiLmMKaW5kZXggZWE0YjA0Zi4uZjgwYjBiYSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTVlcmRiL21wYzgzMTVlcmRiLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTVlcmRiL21wYzgzMTVlcmRiLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxwY2kuaD4KICNpbmNsdWRlIDxtcGM4M3h4Lmg+CiAjaW5jbHVkZSA8bmV0ZGV2Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CiAKIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwogCkBAIC05NSwxMiArOTYsNDUgQEAKIAl9CiB9OwogCitzdGF0aWMgc3RydWN0IHBjaV9yZWdpb24gcGNpZV9yZWdpb25zXzBbXSA9IHsKKwl7CisJCS5idXNfc3RhcnQgPSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLAorCQkucGh5c19zdGFydCA9IENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCisJCS5zaXplID0gQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRSwKKwkJLmZsYWdzID0gUENJX1JFR0lPTl9NRU0sCisJfSwKKwl7CisJCS5idXNfc3RhcnQgPSBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsCisJCS5waHlzX3N0YXJ0ID0gQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAorCQkuc2l6ZSA9IENPTkZJR19TWVNfUENJRTFfSU9fU0laRSwKKwkJLmZsYWdzID0gUENJX1JFR0lPTl9JTywKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBwY2lfcmVnaW9uIHBjaWVfcmVnaW9uc18xW10gPSB7CisJeworCQkuYnVzX3N0YXJ0ID0gQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRSwKKwkJLnBoeXNfc3RhcnQgPSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLAorCQkuc2l6ZSA9IENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUsCisJCS5mbGFncyA9IFBDSV9SRUdJT05fTUVNLAorCX0sCisJeworCQkuYnVzX3N0YXJ0ID0gQ09ORklHX1NZU19QQ0lFMl9JT19CQVNFLAorCQkucGh5c19zdGFydCA9IENPTkZJR19TWVNfUENJRTJfSU9fUEhZUywKKwkJLnNpemUgPSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUsCisJCS5mbGFncyA9IFBDSV9SRUdJT05fSU8sCisJfSwKK307CisKIHZvaWQgcGNpX2luaXRfYm9hcmQodm9pZCkKIHsKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1yID0gKHZvbGF0aWxlIGltbWFwX3QgKilDT05GSUdfU1lTX0lNTVI7CisJdm9sYXRpbGUgc3lzY29uZjgzeHhfdCAqc3lzY29uZiA9ICZpbW1yLT5zeXNjb25mOwogCXZvbGF0aWxlIGNsazgzeHhfdCAqY2xrID0gKHZvbGF0aWxlIGNsazgzeHhfdCAqKSZpbW1yLT5jbGs7CiAJdm9sYXRpbGUgbGF3ODN4eF90ICpwY2lfbGF3ID0gaW1tci0+c3lzY29uZi5wY2lsYXc7CisJdm9sYXRpbGUgbGF3ODN4eF90ICpwY2llX2xhdyA9IHN5c2NvbmYtPnBjaWVsYXc7CiAJc3RydWN0IHBjaV9yZWdpb24gKnJlZ1tdID0geyBwY2lfcmVnaW9ucyB9OworCXN0cnVjdCBwY2lfcmVnaW9uICpwY2llX3JlZ1tdID0geyBwY2llX3JlZ2lvbnNfMCwgcGNpZV9yZWdpb25zXzEsIH07CiAJaW50IHdhcm1ib290OwogCiAJLyogRW5hYmxlIGFsbCAzIFBDSV9DTEtfT1VUUFVUcy4gKi8KQEAgLTExOSw2ICsxNTMsMjQgQEAKIAl3YXJtYm9vdCB8PSBpbW1yLT5wbWMucG1jY3IxICYgUE1DQ1IxX1BPV0VSX09GRjsKIAogCW1wYzgzeHhfcGNpX2luaXQoMSwgcmVnLCB3YXJtYm9vdCk7CisKKwkvKiBDb25maWd1cmUgdGhlIGNsb2NrIGZvciBQQ0lFIGNvbnRyb2xsZXIgKi8KKwljbHJzZXRiaXRzX2JlMzIoJmNsay0+c2NjciwgU0NDUl9QQ0lFWFAxQ00gfCBTQ0NSX1BDSUVYUDJDTSwKKwkJCQkgICAgU0NDUl9QQ0lFWFAxQ01fMSB8IFNDQ1JfUENJRVhQMkNNXzEpOworCisJLyogRGVhc3NlcnQgdGhlIHJlc2V0cyBpbiB0aGUgY29udHJvbCByZWdpc3RlciAqLworCW91dF9iZTMyKCZzeXNjb25mLT5wZWNyMSwgMHhFMDAwODAwMCk7CisJb3V0X2JlMzIoJnN5c2NvbmYtPnBlY3IyLCAweEUwMDA4MDAwKTsKKwl1ZGVsYXkoMjAwMCk7CisKKwkvKiBDb25maWd1cmUgUENJIEV4cHJlc3MgTG9jYWwgQWNjZXNzIFdpbmRvd3MgKi8KKwlvdXRfYmUzMigmcGNpZV9sYXdbMF0uYmFyLCBDT05GSUdfU1lTX1BDSUUxX0JBU0UgJiBMQVdCQVJfQkFSKTsKKwlvdXRfYmUzMigmcGNpZV9sYXdbMF0uYXIsIExCTEFXQVJfRU4gfCBMQkxBV0FSXzUxMk1CKTsKKworCW91dF9iZTMyKCZwY2llX2xhd1sxXS5iYXIsIENPTkZJR19TWVNfUENJRTJfQkFTRSAmIExBV0JBUl9CQVIpOworCW91dF9iZTMyKCZwY2llX2xhd1sxXS5hciwgTEJMQVdBUl9FTiB8IExCTEFXQVJfNTEyTUIpOworCisJbXBjODN4eF9wY2llX2luaXQoMiwgcGNpZV9yZWcsIHdhcm1ib290KTsKIH0KIAogI2lmIGRlZmluZWQoQ09ORklHX09GX0JPQVJEX1NFVFVQKQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzNDllbWRzL3BjaS5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzNDllbWRzL3BjaS5jCmluZGV4IGFkN2JmNWQuLmFmMGIxZGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzQ5ZW1kcy9wY2kuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODM0OWVtZHMvcGNpLmMKQEAgLTE3MSwxNSArMTcxLDEwIEBACiB2b2lkIHBjaV9pbml0X2JvYXJkKHZvaWQpCiB7CiAJdm9sYXRpbGUgaW1tYXBfdCAqaW1tciA9ICh2b2xhdGlsZSBpbW1hcF90ICopQ09ORklHX1NZU19JTU1SOwotCXZvbGF0aWxlIGNsazgzeHhfdCAqY2xrID0gKHZvbGF0aWxlIGNsazgzeHhfdCAqKSZpbW1yLT5jbGs7CiAJdm9sYXRpbGUgbGF3ODN4eF90ICpwY2lfbGF3ID0gaW1tci0+c3lzY29uZi5wY2lsYXc7CiAJdm9sYXRpbGUgcGNpY3RybDgzeHhfdCAqcGNpX2N0cmwgPSAmaW1tci0+cGNpX2N0cmxbMF07CiAJc3RydWN0IHBjaV9yZWdpb24gKnJlZ1tdID0geyBwY2kxX3JlZ2lvbnMgfTsKIAotCS8qIEVuYWJsZSBhbGwgOCBQQ0lfQ0xLX09VVFBVVFMgKi8KLQljbGstPm9jY3IgPSAweGZmMDAwMDAwOwotCXVkZWxheSgyMDAwKTsKLQogCS8qIENvbmZpZ3VyZSBQQ0kgTG9jYWwgQWNjZXNzIFdpbmRvd3MgKi8KIAlwY2lfbGF3WzBdLmJhciA9IENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyAmIExBV0JBUl9CQVI7CiAJcGNpX2xhd1swXS5hciA9IExBV0FSX0VOIHwgTEFXQVJfU0laRV8xRzsKQEAgLTE4Nyw4ICsxODIsNiBAQAogCXBjaV9sYXdbMV0uYmFyID0gQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMgJiBMQVdCQVJfQkFSOwogCXBjaV9sYXdbMV0uYXIgPSBMQVdBUl9FTiB8IExBV0FSX1NJWkVfNE07CiAKLQl1ZGVsYXkoMjAwMCk7Ci0KIAltcGM4M3h4X3BjaV9pbml0KDEsIHJlZywgMCk7CiAKIAkvKiBDb25maWd1cmUgUENJIEluYm91bmQgVHJhbnNsYXRpb24gV2luZG93cyAoMyAxTUIgd2luZG93cykgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZW1kcy9tcGM4Mzd4ZW1kcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL21wYzgzN3hlbWRzLmMKaW5kZXggYWNmOGFkYS4uMTU2ZDgwOCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL21wYzgzN3hlbWRzLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL21wYzgzN3hlbWRzLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDx0c2VjLmg+CiAjaW5jbHVkZSA8bGliZmR0Lmg+CiAjaW5jbHVkZSA8ZmR0X3N1cHBvcnQuaD4KKyNpbmNsdWRlICJwY2kuaCIKICNpbmNsdWRlICIuLi9jb21tb24vcHEtbWRzLXBpYi5oIgogCiBpbnQgYm9hcmRfZWFybHlfaW5pdF9mKHZvaWQpCkBAIC0zOCwxNCArMzksMTAgQEAKIAljYXNlIFNQUl84Mzc3OgogCQlmc2xfc2V0dXBfc2VyZGVzKENPTkZJR19GU0xfU0VSREVTMSwgRlNMX1NFUkRFU19QUk9UT19TQVRBLAogCQkJCSBGU0xfU0VSREVTX0NMS18xMDAsIEZTTF9TRVJERVNfVkREXzFWKTsKLQkJZnNsX3NldHVwX3NlcmRlcyhDT05GSUdfRlNMX1NFUkRFUzIsIEZTTF9TRVJERVNfUFJPVE9fUEVYLAotCQkJCSBGU0xfU0VSREVTX0NMS18xMDAsIEZTTF9TRVJERVNfVkREXzFWKTsKIAkJYnJlYWs7CiAJY2FzZSBTUFJfODM3ODoKIAkJZnNsX3NldHVwX3NlcmRlcyhDT05GSUdfRlNMX1NFUkRFUzEsIEZTTF9TRVJERVNfUFJPVE9fU0dNSUksCiAJCQkJIEZTTF9TRVJERVNfQ0xLXzEyNSwgRlNMX1NFUkRFU19WRERfMVYpOwotCQlmc2xfc2V0dXBfc2VyZGVzKENPTkZJR19GU0xfU0VSREVTMiwgRlNMX1NFUkRFU19QUk9UT19QRVgsCi0JCQkJIEZTTF9TRVJERVNfQ0xLXzEwMCwgRlNMX1NFUkRFU19WRERfMVYpOwogCQlicmVhazsKIAljYXNlIFNQUl84Mzc5OgogCQlmc2xfc2V0dXBfc2VyZGVzKENPTkZJR19GU0xfU0VSREVTMSwgRlNMX1NFUkRFU19QUk9UT19TQVRBLApAQCAtMzE2LDYgKzMxMyw3IEBACiAJZnRfcGNpX3NldHVwKGJsb2IsIGJkKTsKIAlpZiAoYm9hcmRfcGNpX2hvc3RfYnJva2VuKCkpCiAJCWZ0X3BjaV9maXh1cChibG9iLCBiZCk7CisJZnRfcGNpZV9maXh1cChibG9iLCBiZCk7CiAjZW5kaWYKIH0KICNlbmRpZiAvKiBDT05GSUdfT0ZfQk9BUkRfU0VUVVAgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZW1kcy9wY2kuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZW1kcy9wY2kuYwppbmRleCBkZjRlNzQ4Li4zMTExNmIzIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODM3eGVtZHMvcGNpLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL3BjaS5jCkBAIC0xNiw3ICsxNiw5IEBACiAjaW5jbHVkZSA8bXBjODN4eC5oPgogI2luY2x1ZGUgPHBjaS5oPgogI2luY2x1ZGUgPGkyYy5oPgorI2luY2x1ZGUgPGZkdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8YXNtL2ZzbF9pMmMuaD4KKyNpbmNsdWRlIDxhc20vZnNsX3NlcmRlcy5oPgogCiAjaWYgZGVmaW5lZChDT05GSUdfUENJKQogc3RhdGljIHN0cnVjdCBwY2lfcmVnaW9uIHBjaV9yZWdpb25zW10gPSB7CkBAIC00MCwxNSArNDIsNTkgQEAKIAl9CiB9OwogCitzdGF0aWMgc3RydWN0IHBjaV9yZWdpb24gcGNpZV9yZWdpb25zXzBbXSA9IHsKKwl7CisJCS5idXNfc3RhcnQgPSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLAorCQkucGh5c19zdGFydCA9IENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCisJCS5zaXplID0gQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRSwKKwkJLmZsYWdzID0gUENJX1JFR0lPTl9NRU0sCisJfSwKKwl7CisJCS5idXNfc3RhcnQgPSBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsCisJCS5waHlzX3N0YXJ0ID0gQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAorCQkuc2l6ZSA9IENPTkZJR19TWVNfUENJRTFfSU9fU0laRSwKKwkJLmZsYWdzID0gUENJX1JFR0lPTl9JTywKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBwY2lfcmVnaW9uIHBjaWVfcmVnaW9uc18xW10gPSB7CisJeworCQkuYnVzX3N0YXJ0ID0gQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRSwKKwkJLnBoeXNfc3RhcnQgPSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLAorCQkuc2l6ZSA9IENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUsCisJCS5mbGFncyA9IFBDSV9SRUdJT05fTUVNLAorCX0sCisJeworCQkuYnVzX3N0YXJ0ID0gQ09ORklHX1NZU19QQ0lFMl9JT19CQVNFLAorCQkucGh5c19zdGFydCA9IENPTkZJR19TWVNfUENJRTJfSU9fUEhZUywKKwkJLnNpemUgPSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUsCisJCS5mbGFncyA9IFBDSV9SRUdJT05fSU8sCisJfSwKK307CisKK3N0YXRpYyBpbnQgaXNfcGV4X3gyKHZvaWQpCit7CisJY29uc3QgY2hhciAqcGV4X3gyID0gZ2V0ZW52KCJwZXhfeDIiKTsKKworCWlmIChwZXhfeDIgJiYgIXN0cmNtcChwZXhfeDIsICJ5ZXMiKSkKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKIHZvaWQgcGNpX2luaXRfYm9hcmQodm9pZCkKIHsKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1yID0gKHZvbGF0aWxlIGltbWFwX3QgKilDT05GSUdfU1lTX0lNTVI7CisJdm9sYXRpbGUgc3lzY29uZjgzeHhfdCAqc3lzY29uZiA9ICZpbW1yLT5zeXNjb25mOwogCXZvbGF0aWxlIGNsazgzeHhfdCAqY2xrID0gKHZvbGF0aWxlIGNsazgzeHhfdCAqKSZpbW1yLT5jbGs7CiAJdm9sYXRpbGUgbGF3ODN4eF90ICpwY2lfbGF3ID0gaW1tci0+c3lzY29uZi5wY2lsYXc7CisJdm9sYXRpbGUgbGF3ODN4eF90ICpwY2llX2xhdyA9IHN5c2NvbmYtPnBjaWVsYXc7CiAJc3RydWN0IHBjaV9yZWdpb24gKnJlZ1tdID0geyBwY2lfcmVnaW9ucyB9OworCXN0cnVjdCBwY2lfcmVnaW9uICpwY2llX3JlZ1tdID0geyBwY2llX3JlZ2lvbnNfMCwgcGNpZV9yZWdpb25zXzEsIH07CisJdTMyIHNwcmlkciA9IGluX2JlMzIoJmltbXItPnN5c2NvbmYuc3ByaWRyKTsKKwlpbnQgcGV4MiA9IGlzX3BleF94MigpOwogCiAJaWYgKGJvYXJkX3BjaV9ob3N0X2Jyb2tlbigpKQotCQlyZXR1cm47CisJCWdvdG8gc2tpcF9wY2k7CiAKIAkvKiBFbmFibGUgYWxsIDUgUENJX0NMS19PVVRQVVRTICovCiAJY2xrLT5vY2NyIHw9IDB4ZjgwMDAwMDA7CkBAIC02NCw1ICsxMTAsNDYgQEAKIAl1ZGVsYXkoMjAwMCk7CiAKIAltcGM4M3h4X3BjaV9pbml0KDEsIHJlZywgMCk7Citza2lwX3BjaToKKwkvKiBUaGVyZSBpcyBubyBQRVggaW4gTVBDODM3OSBwYXJ0cy4gKi8KKwlpZiAoUEFSVElEX05PX0Uoc3ByaWRyKSA9PSBTUFJfODM3OSkKKwkJcmV0dXJuOworCisJLyogQ29uZmlndXJlIHRoZSBjbG9jayBmb3IgUENJRSBjb250cm9sbGVyICovCisJY2xyc2V0Yml0c19iZTMyKCZjbGstPnNjY3IsIFNDQ1JfUENJRVhQMUNNIHwgU0NDUl9QQ0lFWFAyQ00sCisJCQkJICAgIFNDQ1JfUENJRVhQMUNNXzEgfCBTQ0NSX1BDSUVYUDJDTV8xKTsKKworCS8qIERlYXNzZXJ0IHRoZSByZXNldHMgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKwlvdXRfYmUzMigmc3lzY29uZi0+cGVjcjEsIDB4RTAwMDgwMDApOworCWlmICghcGV4MikKKwkJb3V0X2JlMzIoJnN5c2NvbmYtPnBlY3IyLCAweEUwMDA4MDAwKTsKKwl1ZGVsYXkoMjAwMCk7CisKKwkvKiBDb25maWd1cmUgUENJIEV4cHJlc3MgTG9jYWwgQWNjZXNzIFdpbmRvd3MgKi8KKwlvdXRfYmUzMigmcGNpZV9sYXdbMF0uYmFyLCBDT05GSUdfU1lTX1BDSUUxX0JBU0UgJiBMQVdCQVJfQkFSKTsKKwlvdXRfYmUzMigmcGNpZV9sYXdbMF0uYXIsIExCTEFXQVJfRU4gfCBMQkxBV0FSXzUxMk1CKTsKKworCW91dF9iZTMyKCZwY2llX2xhd1sxXS5iYXIsIENPTkZJR19TWVNfUENJRTJfQkFTRSAmIExBV0JBUl9CQVIpOworCW91dF9iZTMyKCZwY2llX2xhd1sxXS5hciwgTEJMQVdBUl9FTiB8IExCTEFXQVJfNTEyTUIpOworCisJaWYgKHBleDIpCisJCWZzbF9zZXR1cF9zZXJkZXMoQ09ORklHX0ZTTF9TRVJERVMyLCBGU0xfU0VSREVTX1BST1RPX1BFWF9YMiwKKwkJCQkgRlNMX1NFUkRFU19DTEtfMTAwLCBGU0xfU0VSREVTX1ZERF8xVik7CisJZWxzZQorCQlmc2xfc2V0dXBfc2VyZGVzKENPTkZJR19GU0xfU0VSREVTMiwgRlNMX1NFUkRFU19QUk9UT19QRVgsCisJCQkJIEZTTF9TRVJERVNfQ0xLXzEwMCwgRlNMX1NFUkRFU19WRERfMVYpOworCisJbXBjODN4eF9wY2llX2luaXQocGV4MiA/IDEgOiAyLCBwY2llX3JlZywgMCk7Cit9CisKK3ZvaWQgZnRfcGNpZV9maXh1cCh2b2lkICpibG9iLCBiZF90ICpiZCkKK3sKKwljb25zdCBjaGFyICpzdGF0dXMgPSAiZGlzYWJsZWQgKFBDSUUxIGlzIHgyKSI7CisKKwlpZiAoIWlzX3BleF94MigpKQorCQlyZXR1cm47CisKKwlkb19maXh1cF9ieV9wYXRoKGJsb2IsICJwY2kyIiwgInN0YXR1cyIsIHN0YXR1cywKKwkJCSBzdHJsZW4oc3RhdHVzKSArIDEsIDEpOwogfQogI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZW1kcy9wY2kuaCBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZW1kcy9wY2kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDdhOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL3BjaS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0JPQVJEX01QQzgzN1hFTURTX1BDSV9ICisjZGVmaW5lIF9fQk9BUkRfTVBDODM3WEVNRFNfUENJX0gKKworZXh0ZXJuIHZvaWQgZnRfcGNpZV9maXh1cCh2b2lkICpibG9iLCBiZF90ICpiZCk7CisKKyNlbmRpZiAvKiBfX0JPQVJEX01QQzgzN1hFTURTX1BDSV9IICovCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODUzNmRzL2Rkci5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1MzZkcy9kZHIuYwppbmRleCAzMTM1ZDZkLi4yYmFkNzg3IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODUzNmRzL2Rkci5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTM2ZHMvZGRyLmMKQEAgLTc5LDQgKzc5LDEwIEBACiAJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCiAJICovCiAJcG9wdHMtPmhhbGZfc3RyZW5ndGhfZHJpdmVyX2VuYWJsZSA9IDA7CisKKwkvKgorCSAqIEZvciB3YWtlIHVwIGFycCBmZWF0dXJlLCB3ZSBuZWVkIGVuYWJsZSBhdXRvIHNlbGYgcmVmcmVzaAorCSAqLworCXBvcHRzLT5hdXRvX3NlbGZfcmVmcmVzaF9lbiA9IDE7CisJcG9wdHMtPnNyX2l0ID0gMHg2OwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1MzZkcy9sYXcuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTM2ZHMvbGF3LmMKaW5kZXggMDg2MWZhNy4uMzE2MTRkMiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1MzZkcy9sYXcuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODUzNmRzL2xhdy5jCkBAIC0zMCwxNCArMzAsMTQgQEAKIHN0cnVjdCBsYXdfZW50cnkgbGF3X3RhYmxlW10gPSB7CiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsIExBV19TSVpFXzI1Nk0sIExBV19UUkdUX0lGX1BDSSksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSTFfSU9fUEhZUywgTEFXX1NJWkVfNjRLLCBMQVdfVFJHVF9JRl9QQ0kpLAotCVNFVF9MQVcoQ09ORklHX1NZU19GTEFTSF9CQVNFLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9MQkMpLAorCVNFVF9MQVcoQ09ORklHX1NZU19GTEFTSF9CQVNFX1BIWVMsIExBV19TSVpFXzI1Nk0sIExBV19UUkdUX0lGX0xCQyksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLCBMQVdBUl9TSVpFXzEyOE0sIExBV19UUkdUX0lGX1BDSUVfMSksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsIExBV19TSVpFXzY0SywgTEFXX1RSR1RfSUZfUENJRV8xKSwKIAlTRVRfTEFXKENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMsIExBV0FSX1NJWkVfMTI4TSwgTEFXX1RSR1RfSUZfUENJRV8yKSwKIAlTRVRfTEFXKENPTkZJR19TWVNfUENJRTJfSU9fUEhZUywgTEFXX1NJWkVfNjRLLCBMQVdfVFJHVF9JRl9QQ0lFXzIpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUywgTEFXQVJfU0laRV81MTJNLCBMQVdfVFJHVF9JRl9QQ0lFXzMpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFM19JT19QSFlTLCBMQVdfU0laRV82NEssIExBV19UUkdUX0lGX1BDSUVfMyksCi0JU0VUX0xBVyhQSVhJU19CQVNFLCBMQVdfU0laRV80SywgTEFXX1RSR1RfSUZfTEJDKSwKKwlTRVRfTEFXKFBJWElTX0JBU0VfUEhZUywgTEFXX1NJWkVfNEssIExBV19UUkdUX0lGX0xCQyksCiAJU0VUX0xBVyhDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTLCBMQVdfU0laRV8xTSwgTEFXX1RSR1RfSUZfTEJDKSwKIH07CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTM2ZHMvbXBjODUzNmRzLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODUzNmRzL21wYzg1MzZkcy5jCmluZGV4IDJiMTc2MTIuLjFlMmUyZGMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTM2ZHMvbXBjODUzNmRzLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1MzZkcy9tcGM4NTM2ZHMuYwpAQCAtMTkyLDE0ICsxOTIsMTQgQEAKIAogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19NRU1fQlVTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19NRU1fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CiAKIAkJLyogb3V0Ym91bmQgaW8gKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfSU9fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUzX0lPX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19JT19TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fSU8pOwpAQCAtMjQ3LDIyICsyNDcsMjIgQEAKIAogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CiAKIAkJLyogb3V0Ym91bmQgaW8gKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fSU8pOwogCi0jaWZkZWYgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRTIKKyNpZmRlZiBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMyCiAJCS8qIG91dGJvdW5kIG1lbW9yeSAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRTIsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTMiwKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTMiwKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFMiwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CkBAIC0zMTAsMjIgKzMxMCwyMiBAQAogCiAJCS8qIG91dGJvdW5kIG1lbW9yeSAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX01FTV9CVVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX01FTV9TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fTUVNKTsKIAogCQkvKiBvdXRib3VuZCBpbyAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19CQVNFLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfSU9fQlVTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfSU9fUEhZUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUsCiAJCQkgICAgICAgUENJX1JFR0lPTl9JTyk7CiAKLSNpZmRlZiBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFMgorI2lmZGVmIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUzIKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFMiwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX01FTV9CVVMyLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMyLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUyLAogCQkJICAgICAgIFBDSV9SRUdJT05fTUVNKTsKQEAgLTM3OCwyMiArMzc4LDIyIEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9NRU1fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CiAKIAkJLyogb3V0Ym91bmQgaW8gKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9JT19CQVNFLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9JT19CVVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUsCiAJCQkgICAgICAgUENJX1JFR0lPTl9JTyk7CiAKLSNpZmRlZiBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UyCisjaWZkZWYgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMyCiAJCS8qIG91dGJvdW5kIG1lbW9yeSAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFMiwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTMiwKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUyLAogCQkJICAgICAgIFBDSV9SRUdJT05fTUVNKTsKQEAgLTQzMyw3ICs0MzMsNyBAQAogCS8qIGludmFsaWRhdGUgZXhpc3RpbmcgVExCIGVudHJ5IGZvciBmbGFzaCArIHByb21qZXQgKi8KIAlkaXNhYmxlX3RsYihmbGFzaF9lc2VsKTsKIAotCXNldF90bGIoMSwgZmxhc2hiYXNlLCBmbGFzaGJhc2UsCQkvKiB0bGIsIGVwbiwgcnBuICovCisJc2V0X3RsYigxLCBmbGFzaGJhc2UsIENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTLAkvKiB0bGIsIGVwbiwgcnBuICovCiAJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAkvKiBwZXJtcywgd2ltZ2UgKi8KIAkJMCwgZmxhc2hfZXNlbCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpOwkvKiB0cywgZXNlbCwgdHNpemUsIGlwcm90ICovCiAKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTM2ZHMvdGxiLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODUzNmRzL3RsYi5jCmluZGV4IGM4MWE5NTkuLjM1YTEzZDQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTM2ZHMvdGxiLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1MzZkcy90bGIuYwpAQCAtNDEsNyArNDEsNyBAQAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKIAkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKIAotCVNFVF9UTEJfRU5UUlkoMCwgUElYSVNfQkFTRSwgUElYSVNfQkFTRSwKKwlTRVRfVExCX0VOVFJZKDAsIFBJWElTX0JBU0UsIFBJWElTX0JBU0VfUEhZUywKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCiAKQEAgLTUzLDE3ICs1MywxNyBAQAogCiAJLyogVyoqRyogLSBGbGFzaC9wcm9tamV0LCBsb2NhbGJ1cyAqLwogCS8qIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvICpJKkcqIGFmdGVyIHJlbG9jYXRpb24gdG8gUkFNLiAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19GTEFTSF9CQVNFLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UsIENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1IsIE1BUzJfV3xNQVMyX0csCiAJCSAgICAgIDAsIDEsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIAogCS8qICpJKkcqIC0gUENJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fVklSVCwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMiwgQk9PS0VfUEFHRVNaXzFHLCAxKSwKIAogCS8qICpJKkcqIC0gUENJIEkvTyAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsIENPTkZJR19TWVNfUENJMV9JT19QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX0lPX1ZJUlQsIENPTkZJR19TWVNfUENJMV9JT19QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMywgQk9PS0VfUEFHRVNaXzI1NkssIDEpLAogCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy9kZHIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL2Rkci5jCmluZGV4IDc4NTA3OTQuLjkzZDExMDAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL2Rkci5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL2Rkci5jCkBAIC02NSw2ICs2NSw5IEBACiAJICovCiAJcG9wdHMtPndyaXRlX2RhdGFfZGVsYXkgPSAzOwogCisJLyogMlQgdGltaW5nIGVuYWJsZSAqLworCXBvcHRzLT50d29UX2VuID0gMTsKKwogCS8qCiAJICogRmFjdG9ycyB0byBjb25zaWRlciBmb3IgaGFsZi1zdHJlbmd0aCBkcml2ZXIgZW5hYmxlOgogCSAqCS0gbnVtYmVyIG9mIERJTU1zIGluc3RhbGxlZApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDBhZHMvbGF3LmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy9sYXcuYwppbmRleCA3ZGQ4ZjI5Li5mNTY0NGUxIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy9sYXcuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy9sYXcuYwpAQCAtNTIsNyArNTIsNyBAQAogCS8qIFRoaXMgaXMgbm90IHNvIG11Y2ggdGhlIFNEUkFNIG1hcCBhcyBpdCBpcyB0aGUgd2hvbGUgbG9jYWxidXMgbWFwLiAqLwogCVNFVF9MQVcoQ09ORklHX1NZU19MQkNfU0RSQU1fQkFTRSwgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfTEJDKSwKIAlTRVRfTEFXKENPTkZJR19TWVNfUENJMV9JT19QSFlTLCBMQVdfU0laRV8xTSwgTEFXX1RSR1RfSUZfUENJKSwKLQlTRVRfTEFXKENPTkZJR19TWVNfUklPX01FTV9CQVNFLCBMQVdBUl9TSVpFXzUxMk0sIExBV19UUkdUX0lGX1JJTyksCisJU0VUX0xBVyhDT05GSUdfU1lTX1JJT19NRU1fUEhZUywgTEFXQVJfU0laRV81MTJNLCBMQVdfVFJHVF9JRl9SSU8pLAogfTsKIAogaW50IG51bV9sYXdfZW50cmllcyA9IEFSUkFZX1NJWkUobGF3X3RhYmxlKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL21wYzg1NDBhZHMuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL21wYzg1NDBhZHMuYwppbmRleCBhMGI2ZmJkLi45ZTNmNjc3IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy9tcGM4NTQwYWRzLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDBhZHMvbXBjODU0MGFkcy5jCkBAIC0xMzMsNyArMTMzLDcgQEAKIAkgKi8KIAogCWdldF9zeXNfaW5mbygmc3lzaW5mbyk7Ci0JY2xrZGl2ID0gbGJjLT5sY3JyICYgMHgwZjsKKwljbGtkaXYgPSBsYmMtPmxjcnIgJiBMQ1JSX0NMS0RJVjsKIAlsYmNfaHogPSBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwIC8gY2xrZGl2OwogCiAJaWYgKGxiY19oeiA8IDY2KSB7CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy90bGIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL3RsYi5jCmluZGV4IDJlYzNjY2MuLmE5OTI1ZDUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL3RsYi5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL3RsYi5jCkBAIC01NCw3ICs1NCw3IEBACiAJICogVExCIDE6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4ODAwMDAwMDAJMjU2TQlQQ0kxIE1FTSBGaXJzdCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fVklSVCwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMSwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCkBAIC02Miw3ICs2Miw3IEBACiAJICogVExCIDI6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4OTAwMDAwMDAJMjU2TQlQQ0kxIE1FTSBTZWNvbmQgaGFsZgogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTICsgMHgxMDAwMDAwMCwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTICsgMHgxMDAwMDAwMCwKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fVklSVCArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyArIDB4MTAwMDAwMDAsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCAyLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKQEAgLTcwLDcgKzcwLDcgQEAKIAkgKiBUTEIgMzoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHhjMDAwMDAwMAkyNTZNCVJhcGlkIElPIE1FTSBGaXJzdCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1JJT19NRU1fQkFTRSwgQ09ORklHX1NZU19SSU9fTUVNX0JBU0UsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1JJT19NRU1fVklSVCwgQ09ORklHX1NZU19SSU9fTUVNX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCAzLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKQEAgLTc4LDcgKzc4LDcgQEAKIAkgKiBUTEIgNDoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHhkMDAwMDAwMAkyNTZNCVJhcGlkIElPIE1FTSBTZWNvbmQgaGFsZgogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19SSU9fTUVNX0JBU0UgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1JJT19NRU1fQkFTRSArIDB4MTAwMDAwMDAsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1JJT19NRU1fVklSVCArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUklPX01FTV9QSFlTICsgMHgxMDAwMDAwMCwKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDQsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDFjZHMvbXBjODU0MWNkcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDFjZHMvbXBjODU0MWNkcy5jCmluZGV4IDdlNDBjNWMuLmU2MDI1YzggMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQxY2RzL21wYzg1NDFjZHMuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MWNkcy9tcGM4NTQxY2RzLmMKQEAgLTMwOCw3ICszMDgsNyBAQAogCSAqLwogCiAJZ2V0X3N5c19pbmZvKCZzeXNpbmZvKTsKLQljbGtkaXYgPSBsYmMtPmxjcnIgJiAweDBmOworCWNsa2RpdiA9IGxiYy0+bGNyciAmIExDUlJfQ0xLRElWOwogCWxiY19oeiA9IHN5c2luZm8uZnJlcVN5c3RlbUJ1cyAvIDEwMDAwMDAgLyBjbGtkaXY7CiAKIAlpZiAobGJjX2h6IDwgNjYpIHsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQxY2RzL3RsYi5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDFjZHMvdGxiLmMKaW5kZXggYmY5NTdjMC4uYWU2ODEyZiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDFjZHMvdGxiLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDFjZHMvdGxiLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAkgKiBUTEIgMToJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHg4MDAwMDAwMAkyNTZNCVBDSTEgTUVNIEZpcnN0IGhhbGYKIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJULCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCAxLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKQEAgLTYyLDcgKzYyLDcgQEAKIAkgKiBUTEIgMjoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHg5MDAwMDAwMAkyNTZNCVBDSTEgTUVNIFNlY29uZCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgKyAweDEwMDAwMDAwLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUICsgMHgxMDAwMDAwMCwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTICsgMHgxMDAwMDAwMCwKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDIsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApAQCAtNzAsNyArNzAsNyBAQAogCSAqIFRMQiAzOgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweGEwMDAwMDAwCTI1Nk0JUENJMiBNRU0gRmlyc3QgaGFsZgogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTLCBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTJfTUVNX1ZJUlQsIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUywKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDMsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApAQCAtNzgsNyArNzgsNyBAQAogCSAqIFRMQiA0OgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweGIwMDAwMDAwCTI1Nk0JUENJMiBNRU0gU2Vjb25kIGhhbGYKIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUyArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUyArIDB4MTAwMDAwMDAsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTJfTUVNX1ZJUlQgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMgKyAweDEwMDAwMDAwLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgNCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0NGRzL2Rkci5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDRkcy9kZHIuYwppbmRleCAzNGY4NGEyLi5iODMzMGViIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0NGRzL2Rkci5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ0ZHMvZGRyLmMKQEAgLTc1LDYgKzc1LDkgQEAKIAkgKi8KIAlwb3B0cy0+d3JpdGVfZGF0YV9kZWxheSA9IDM7CiAKKwkvKiAyVCB0aW1pbmcgZW5hYmxlICovCisJcG9wdHMtPnR3b1RfZW4gPSAxOworCiAJLyoKIAkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBoYWxmLXN0cmVuZ3RoIGRyaXZlciBlbmFibGU6CiAJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0NGRzL21wYzg1NDRkcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDRkcy9tcGM4NTQ0ZHMuYwppbmRleCAxNDU4MWFiLi43ZmY1YTliIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0NGRzL21wYzg1NDRkcy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ0ZHMvbXBjODU0NGRzLmMKQEAgLTEyMSw3ICsxMjEsNyBAQAogCXZvbGF0aWxlIGNjc3JfZnNsX3BjaV90ICpwY2kgPSAoY2Nzcl9mc2xfcGNpX3QgKikgQ09ORklHX1NZU19QQ0lFM19BRERSOwogCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSA9ICZwY2llM19ob3NlOwogCWludCBwY2llX2VwID0gKGhvc3RfYWdlbnQgPT0gMSk7Ci0JaW50IHBjaWVfY29uZmlndXJlZCAgPSBpb19zZWwgPj0gMTsKKwlpbnQgcGNpZV9jb25maWd1cmVkICA9IGlvX3NlbCA+PSA2OwogCXN0cnVjdCBwY2lfcmVnaW9uICpyID0gaG9zZS0+cmVnaW9uczsKIAogCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShkZXZkaXNyICYgTVBDODV4eF9ERVZESVNSX1BDSUUpKXsKQEAgLTEzOSwyMiArMTM5LDIyIEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUzX01FTV9CQVNFLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX1NJWkUsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUzX0lPX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19JT19CVVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19JT19QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfSU9fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX0lPKTsKIAotI2lmZGVmIENPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UyCisjaWZkZWYgQ09ORklHX1NZU19QQ0lFM19NRU1fQlVTMgogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UyLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX0JVUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19NRU1fU0laRTIsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwpAQCAtMTczLDcgKzE3Myw3IEBACiAJCSAqIEFjdGl2YXRlIFVMSTE1NzUgbGVnYWN5IGNoaXAgYnkgcGVyZm9ybWluZyBhIGZha2UKIAkJICogbWVtb3J5IGFjY2Vzcy4gIE5lZWRlZCB0byBtYWtlIFVMSSBSVEMgd29yay4KIAkJICovCi0JCWluX2JlMzIoKHUzMiAqKUNPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UpOworCQlpbl9iZTMyKCh1MzIgKilDT05GSUdfU1lTX1BDSUUzX01FTV9CVVMpOwogCX0gZWxzZSB7CiAJCXByaW50ZiAoIiAgICBQQ0lFMzogZGlzYWJsZWRcbiIpOwogCX0KQEAgLTE4OCw3ICsxODgsNyBAQAogCXZvbGF0aWxlIGNjc3JfZnNsX3BjaV90ICpwY2kgPSAoY2Nzcl9mc2xfcGNpX3QgKikgQ09ORklHX1NZU19QQ0lFMV9BRERSOwogCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSA9ICZwY2llMV9ob3NlOwogCWludCBwY2llX2VwID0gKGhvc3RfYWdlbnQgPT0gNSk7Ci0JaW50IHBjaWVfY29uZmlndXJlZCAgPSBpb19zZWwgJiA2OworCWludCBwY2llX2NvbmZpZ3VyZWQgID0gaW9fc2VsID49IDI7CiAJc3RydWN0IHBjaV9yZWdpb24gKnIgPSBob3NlLT5yZWdpb25zOwogCiAJaWYgKHBjaWVfY29uZmlndXJlZCAmJiAhKGRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJRSkpewpAQCAtMjA2LDIyICsyMDYsMjIgQEAKIAogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CiAKIAkJLyogb3V0Ym91bmQgaW8gKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fSU8pOwogCi0jaWZkZWYgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRTIKKyNpZmRlZiBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMyCiAJCS8qIG91dGJvdW5kIG1lbW9yeSAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRTIsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTMiwKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTMiwKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFMiwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CkBAIC0yNTEsNyArMjUxLDcgQEAKIAl2b2xhdGlsZSBjY3NyX2ZzbF9wY2lfdCAqcGNpID0gKGNjc3JfZnNsX3BjaV90ICopIENPTkZJR19TWVNfUENJRTJfQUREUjsKIAlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UgPSAmcGNpZTJfaG9zZTsKIAlpbnQgcGNpZV9lcCA9IChob3N0X2FnZW50ID09IDMpOwotCWludCBwY2llX2NvbmZpZ3VyZWQgID0gaW9fc2VsICYgNDsKKwlpbnQgcGNpZV9jb25maWd1cmVkICA9IGlvX3NlbCA+PSA0OwogCXN0cnVjdCBwY2lfcmVnaW9uICpyID0gaG9zZS0+cmVnaW9uczsKIAogCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShkZXZkaXNyICYgTVBDODV4eF9ERVZESVNSX1BDSUUpKXsKQEAgLTI2OSwyMiArMjY5LDIyIEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19CVVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfSU9fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX0lPKTsKIAotI2lmZGVmIENPTkZJR19TWVNfUENJRTJfTUVNX0JBU0UyCisjaWZkZWYgQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTMgogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX0JBU0UyLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fU0laRTIsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwpAQCAtMzM3LDIyICszMzcsMjIgQEAKIAogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9NRU1fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fTUVNKTsKIAogCQkvKiBvdXRib3VuZCBpbyAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfSU9fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX0lPKTsKIAotI2lmZGVmIENPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UyCisjaWZkZWYgQ09ORklHX1NZU19QQ0lFM19NRU1fQlVTMgogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UyLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTNfTUVNX0JVUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUzIsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFM19NRU1fU0laRTIsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDRkcy90bGIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ0ZHMvdGxiLmMKaW5kZXggYzc0NDJiMi4uZDk5NDQxYiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDRkcy90bGIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0NGRzL3RsYi5jCkBAIC01MiwyMSArNTIsMjEgQEAKIAkgKiBUTEIgMToJMUcJTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4ODAwMDAwMDAJMUcJUENJRSAgOCw5LGEsYgogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFX1BIWVMsIENPTkZJR19TWVNfUENJRV9QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFX1ZJUlQsIENPTkZJR19TWVNfUENJRV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMSwgQk9PS0VfUEFHRVNaXzFHLCAxKSwKIAogCS8qCiAJICogVExCIDI6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lfUEhZUywgQ09ORklHX1NZU19QQ0lfUEhZUywKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJX1ZJUlQsIENPTkZJR19TWVNfUENJX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCAyLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKIAkvKgogCSAqIFRMQiAzOgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJX1BIWVMgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1BDSV9QSFlTICsgMHgxMDAwMDAwMCwKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJX1ZJUlQgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1BDSV9QSFlTICsgMHgxMDAwMDAwMCwKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDMsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvbXBjODU0OGNkcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvbXBjODU0OGNkcy5jCmluZGV4IGM1NjJmYzkuLjcwMzIwZWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ4Y2RzL21wYzg1NDhjZHMuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0OGNkcy9tcGM4NTQ4Y2RzLmMKQEAgLTEyNSw3ICsxMjUsNyBAQAogCXN5c19pbmZvX3Qgc3lzaW5mbzsKIAogCWdldF9zeXNfaW5mbygmc3lzaW5mbyk7Ci0JY2xrZGl2ID0gKGxiYy0+bGNyciAmIDB4MGYpICogMjsKKwljbGtkaXYgPSAobGJjLT5sY3JyICYgTENSUl9DTEtESVYpICogMjsKIAlsYmNfaHogPSBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwIC8gY2xrZGl2OwogCiAJZ3VyLT5sYml1aXBsbGRjcjEgPSAweDAwMDc4MDgwOwpAQCAtMzA2LDE0ICszMDYsMTQgQEAKIAogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9NRU1fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fTUVNKTsKIAogCQkvKiBvdXRib3VuZCBpbyAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfSU9fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX0lPKTsKQEAgLTM5MCwxNCArMzkwLDE0IEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsCisJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMsCiAJCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfSU9fU0laRSwKIAkJCSAgICAgICBQQ0lfUkVHSU9OX0lPKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ4Y2RzL3RsYi5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvdGxiLmMKaW5kZXggZWFiMjEyYS4uMjI2N2FkNyAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvdGxiLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvdGxiLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAkgKiBUTEIgMToJMUcJTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4ODAwMDAwMDAJMUcJUENJMS9QQ0lFICA4LDksYSxiCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSV9QSFlTLCBDT05GSUdfU1lTX1BDSV9QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lfVklSVCwgQ09ORklHX1NZU19QQ0lfUEhZUywKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDEsIEJPT0tFX1BBR0VTWl8xRywgMSksCiAKQEAgLTYyLDE0ICs2MiwxNCBAQAogCS8qCiAJICogVExCIDI6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19SSU9fTUVNX0JBU0UsIENPTkZJR19TWVNfUklPX01FTV9CQVNFLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19SSU9fTUVNX1ZJUlQsIENPTkZJR19TWVNfUklPX01FTV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMiwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCiAJLyoKIAkgKiBUTEIgMzoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1JJT19NRU1fQkFTRSArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUklPX01FTV9CQVNFICsgMHgxMDAwMDAwMCwKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUklPX01FTV9WSVJUICsgMHgxMDAwMDAwMCwgQ09ORklHX1NZU19SSU9fTUVNX1BIWVMgKyAweDEwMDAwMDAwLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMywgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU1NWNkcy9tcGM4NTU1Y2RzLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU1NWNkcy9tcGM4NTU1Y2RzLmMKaW5kZXggMzM2ODVjMS4uNTNkNWE5MyAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NTVjZHMvbXBjODU1NWNkcy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTU1Y2RzL21wYzg1NTVjZHMuYwpAQCAtMzA4LDcgKzMwOCw3IEBACiAJICovCiAKIAlnZXRfc3lzX2luZm8oJnN5c2luZm8pOwotCWNsa2RpdiA9IGxiYy0+bGNyciAmIDB4MGY7CisJY2xrZGl2ID0gbGJjLT5sY3JyICYgTENSUl9DTEtESVY7CiAJbGJjX2h6ID0gc3lzaW5mby5mcmVxU3lzdGVtQnVzIC8gMTAwMDAwMCAvIGNsa2RpdjsKIAogCWlmIChsYmNfaHogPCA2NikgewpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NTVjZHMvdGxiLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU1NWNkcy90bGIuYwppbmRleCBiZjk1N2MwLi5hZTY4MTJmIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU1NWNkcy90bGIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU1NWNkcy90bGIuYwpAQCAtNTQsNyArNTQsNyBAQAogCSAqIFRMQiAxOgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweDgwMDAwMDAwCTI1Nk0JUENJMSBNRU0gRmlyc3QgaGFsZgogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1ZJUlQsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDEsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApAQCAtNjIsNyArNjIsNyBAQAogCSAqIFRMQiAyOgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweDkwMDAwMDAwCTI1Nk0JUENJMSBNRU0gU2Vjb25kIGhhbGYKIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyArIDB4MTAwMDAwMDAsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1ZJUlQgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgKyAweDEwMDAwMDAwLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMiwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCkBAIC03MCw3ICs3MCw3IEBACiAJICogVExCIDM6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4YTAwMDAwMDAJMjU2TQlQQ0kyIE1FTSBGaXJzdCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUywKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMl9NRU1fVklSVCwgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgMywgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCkBAIC03OCw3ICs3OCw3IEBACiAJICogVExCIDQ6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4YjAwMDAwMDAJMjU2TQlQQ0kyIE1FTSBTZWNvbmQgaGFsZgogCSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTICsgMHgxMDAwMDAwMCwgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTICsgMHgxMDAwMDAwMCwKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMl9NRU1fVklSVCArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUyArIDB4MTAwMDAwMDAsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCA0LCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL2Rkci5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvZGRyLmMKaW5kZXggNzg1MDc5NC4uOTNkMTEwMCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvZGRyLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvZGRyLmMKQEAgLTY1LDYgKzY1LDkgQEAKIAkgKi8KIAlwb3B0cy0+d3JpdGVfZGF0YV9kZWxheSA9IDM7CiAKKwkvKiAyVCB0aW1pbmcgZW5hYmxlICovCisJcG9wdHMtPnR3b1RfZW4gPSAxOworCiAJLyoKIAkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBoYWxmLXN0cmVuZ3RoIGRyaXZlciBlbmFibGU6CiAJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU2MGFkcy9sYXcuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL2xhdy5jCmluZGV4IDdkZDhmMjkuLmY1NjQ0ZTEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL2xhdy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL2xhdy5jCkBAIC01Miw3ICs1Miw3IEBACiAJLyogVGhpcyBpcyBub3Qgc28gbXVjaCB0aGUgU0RSQU0gbWFwIGFzIGl0IGlzIHRoZSB3aG9sZSBsb2NhbGJ1cyBtYXAuICovCiAJU0VUX0xBVyhDT05GSUdfU1lTX0xCQ19TRFJBTV9CQVNFLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9MQkMpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsIExBV19TSVpFXzFNLCBMQVdfVFJHVF9JRl9QQ0kpLAotCVNFVF9MQVcoQ09ORklHX1NZU19SSU9fTUVNX0JBU0UsIExBV0FSX1NJWkVfNTEyTSwgTEFXX1RSR1RfSUZfUklPKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUklPX01FTV9QSFlTLCBMQVdBUl9TSVpFXzUxMk0sIExBV19UUkdUX0lGX1JJTyksCiB9OwogCiBpbnQgbnVtX2xhd19lbnRyaWVzID0gQVJSQVlfU0laRShsYXdfdGFibGUpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvbXBjODU2MGFkcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvbXBjODU2MGFkcy5jCmluZGV4IDM3MzA4MTguLmFjNzc3OGUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL21wYzg1NjBhZHMuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU2MGFkcy9tcGM4NTYwYWRzLmMKQEAgLTMzNyw3ICszMzcsNyBAQAogCSAqLwogCiAJZ2V0X3N5c19pbmZvKCZzeXNpbmZvKTsKLQljbGtkaXYgPSBsYmMtPmxjcnIgJiAweDBmOworCWNsa2RpdiA9IGxiYy0+bGNyciAmIExDUlJfQ0xLRElWOwogCWxiY19oeiA9IHN5c2luZm8uZnJlcVN5c3RlbUJ1cyAvIDEwMDAwMDAgLyBjbGtkaXY7CiAKIAlpZiAobGJjX2h6IDwgNjYpIHsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL3RsYi5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvdGxiLmMKaW5kZXggMmVjM2NjYy4uYTk5MjVkNSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvdGxiLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvdGxiLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAkgKiBUTEIgMToJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHg4MDAwMDAwMAkyNTZNCVBDSTEgTUVNIEZpcnN0IGhhbGYKIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJULCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCAxLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKQEAgLTYyLDcgKzYyLDcgQEAKIAkgKiBUTEIgMjoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHg5MDAwMDAwMAkyNTZNCVBDSTEgTUVNIFNlY29uZCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgKyAweDEwMDAwMDAwLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgKyAweDEwMDAwMDAwLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUICsgMHgxMDAwMDAwMCwgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTICsgMHgxMDAwMDAwMCwKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDIsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApAQCAtNzAsNyArNzAsNyBAQAogCSAqIFRMQiAzOgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweGMwMDAwMDAwCTI1Nk0JUmFwaWQgSU8gTUVNIEZpcnN0IGhhbGYKIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUklPX01FTV9CQVNFLCBDT05GSUdfU1lTX1JJT19NRU1fQkFTRSwKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUklPX01FTV9WSVJULCBDT05GSUdfU1lTX1JJT19NRU1fUEhZUywKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDMsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIApAQCAtNzgsNyArNzgsNyBAQAogCSAqIFRMQiA0OgkyNTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweGQwMDAwMDAwCTI1Nk0JUmFwaWQgSU8gTUVNIFNlY29uZCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1JJT19NRU1fQkFTRSArIDB4MTAwMDAwMDAsIENPTkZJR19TWVNfUklPX01FTV9CQVNFICsgMHgxMDAwMDAwMCwKKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUklPX01FTV9WSVJUICsgMHgxMDAwMDAwMCwgQ09ORklHX1NZU19SSU9fTUVNX1BIWVMgKyAweDEwMDAwMDAwLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgNCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OG1kcy9sYXcuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL2xhdy5jCmluZGV4IGRhN2I2ZGMuLjMxMTRlOGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL2xhdy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL2xhdy5jCkBAIC01NCw3ICs1NCw3IEBACiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLCBMQVdfU0laRV81MTJNLCBMQVdfVFJHVF9JRl9QQ0lFXzEpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsIExBV19TSVpFXzhNLCBMQVdfVFJHVF9JRl9QQ0kpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLCBMQVdfU0laRV84TSwgTEFXX1RSR1RfSUZfUENJRV8xKSwKLQlTRVRfTEFXKENPTkZJR19TWVNfU1JJT19NRU1fQkFTRSwgTEFXX1NJWkVfNTEyTSwgTEFXX1RSR1RfSUZfUklPKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfU1JJT19NRU1fUEhZUywgTEFXX1NJWkVfNTEyTSwgTEFXX1RSR1RfSUZfUklPKSwKIAkvKiBMQkMgd2luZG93IC0gbWFwcyAyNTZNLiAgVGhhdCdzIFNEUkFNLCBCQ1NSLCBQSUJzLCBhbmQgRmxhc2ggKi8KIAlTRVRfTEFXKENPTkZJR19TWVNfTEJDX1NEUkFNX0JBU0UsIExBV19TSVpFXzI1Nk0sIExBV19UUkdUX0lGX0xCQyksCiB9OwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvbXBjODU2OG1kcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvbXBjODU2OG1kcy5jCmluZGV4IGJjOTNiZTguLjkxNWZhZTcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL21wYzg1NjhtZHMuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OG1kcy9tcGM4NTY4bWRzLmMKQEAgLTE4OCw3ICsxODgsNyBAQAogCXN5c19pbmZvX3Qgc3lzaW5mbzsKIAogCWdldF9zeXNfaW5mbygmc3lzaW5mbyk7Ci0JY2xrZGl2ID0gKGxiYy0+bGNyciAmIDB4MGYpICogMjsKKwljbGtkaXYgPSAobGJjLT5sY3JyICYgTENSUl9DTEtESVYpICogMjsKIAlsYmNfaHogPSBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwIC8gY2xrZGl2OwogCiAJZ3VyLT5sYml1aXBsbGRjcjEgPSAweDAwMDc4MDgwOwpAQCAtMzk3LDE0ICszOTcsMTQgQEAKIAogCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRSwKKwkJCQlDT05GSUdfU1lTX1BDSTFfTUVNX0JVUywKIAkJCQlDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCQkJQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFLAogCQkJCVBDSV9SRUdJT05fTUVNKTsKIAogCQkvKiBvdXRib3VuZCBpbyAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkJQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UsCisJCQkJQ09ORklHX1NZU19QQ0kxX0lPX0JVUywKIAkJCQlDT05GSUdfU1lTX1BDSTFfSU9fUEhZUywKIAkJCQlDT05GSUdfU1lTX1BDSTFfSU9fU0laRSwKIAkJCQlQQ0lfUkVHSU9OX0lPKTsKQEAgLTQ1MCwxNCArNDUwLDE0IEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLAorCQkJCUNPTkZJR19TWVNfUENJRTFfTUVNX0JVUywKIAkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLAogCQkJCUNPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUsCiAJCQkJUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQlDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsCisJCQkJQ09ORklHX1NZU19QQ0lFMV9JT19CVVMsCiAJCQkJQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAogCQkJCUNPTkZJR19TWVNfUENJRTFfSU9fU0laRSwKIAkJCQlQQ0lfUkVHSU9OX0lPKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL3RsYi5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvdGxiLmMKaW5kZXggMTA3NzU1Mi4uODQ3MGM4NyAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvdGxiLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvdGxiLmMKQEAgLTY0LDcgKzY0LDcgQEAKIAkgKiAweDgwMDAwMDAwCTUxMk0JUENJMSBNRU0KIAkgKiAweGEwMDAwMDAwCTUxMk0JUENJZSBNRU0KIAkgKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJULCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCAyLCBCT09LRV9QQUdFU1pfMUcsIDEpLAogCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU3MmRzL2xhdy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NzJkcy9sYXcuYwppbmRleCA4M2ViNjgxLi4wMmVhMGVjIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU3MmRzL2xhdy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTcyZHMvbGF3LmMKQEAgLTI4LDE0ICsyOCwxNCBAQAogI2luY2x1ZGUgPGFzbS9tbXUuaD4KIAogc3RydWN0IGxhd19lbnRyeSBsYXdfdGFibGVbXSA9IHsKLQlTRVRfTEFXKENPTkZJR19TWVNfRkxBU0hfQkFTRSwgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfTEJDKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9MQkMpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywgTEFXQVJfU0laRV81MTJNLCBMQVdfVFJHVF9JRl9QQ0lFXzEpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLCBMQVdfU0laRV82NEssIExBV19UUkdUX0lGX1BDSUVfMSksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLCBMQVdBUl9TSVpFXzUxMk0sIExBV19UUkdUX0lGX1BDSUVfMiksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMsIExBV19TSVpFXzY0SywgTEFXX1RSR1RfSUZfUENJRV8yKSwKIAlTRVRfTEFXKENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMsIExBV0FSX1NJWkVfNTEyTSwgTEFXX1RSR1RfSUZfUENJRV8zKSwKIAlTRVRfTEFXKENPTkZJR19TWVNfUENJRTNfSU9fUEhZUywgTEFXX1NJWkVfNjRLLCBMQVdfVFJHVF9JRl9QQ0lFXzMpLAotCVNFVF9MQVcoUElYSVNfQkFTRSwgTEFXX1NJWkVfNEssIExBV19UUkdUX0lGX0xCQyksCisJU0VUX0xBVyhQSVhJU19CQVNFX1BIWVMsIExBV19TSVpFXzRLLCBMQVdfVFJHVF9JRl9MQkMpLAogCVNFVF9MQVcoQ09ORklHX1NZU19OQU5EX0JBU0VfUEhZUywgTEFXX1NJWkVfMU0sIExBV19UUkdUX0lGX0xCQyksCiB9OwogCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU3MmRzL21wYzg1NzJkcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NzJkcy9tcGM4NTcyZHMuYwppbmRleCBhMTRkYjVhLi5lNTdmOWZmIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU3MmRzL21wYzg1NzJkcy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTcyZHMvbXBjODU3MmRzLmMKQEAgLTE2NiwxMSArMTY2LDExIEBACiAJCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSA9ICZwY2llM19ob3NlOwogCQlpbnQgcGNpZV9lcCA9IChob3N0X2FnZW50ID09IDApIHx8IChob3N0X2FnZW50ID09IDMpIHx8CiAJCQkoaG9zdF9hZ2VudCA9PSA1KSB8fCAoaG9zdF9hZ2VudCA9PSA2KTsKLQkJaW50IHBjaWVfY29uZmlndXJlZCAgPSBpb19zZWwgPj0gMTsKKwkJaW50IHBjaWVfY29uZmlndXJlZCAgPSAoaW9fc2VsID09IDB4Nyk7CiAJCXN0cnVjdCBwY2lfcmVnaW9uICpyID0gaG9zZS0+cmVnaW9uczsKIAkJdTMyIHRlbXAzMjsKIAotCQlpZiAocGNpZV9jb25maWd1cmVkICYmICEoZGV2ZGlzciAmIE1QQzg1eHhfREVWRElTUl9QQ0lFKSl7CisJCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShkZXZkaXNyICYgTVBDODV4eF9ERVZESVNSX1BDSUUzKSl7CiAJCQlwcmludGYgKCJcbiAgICBQQ0lFMyBjb25uZWN0ZWQgdG8gVUxJIGFzICVzIChiYXNlIGFkZHJlc3MgJXgpIiwKIAkJCQkJcGNpZV9lcCA/ICJFbmQgUG9pbnQiIDogIlJvb3QgQ29tcGxleCIsCiAJCQkJCSh1aW50KXBjaSk7CkBAIC0xODUsMTQgKzE4NSwxNCBAQAogCiAJCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQkJQ09ORklHX1NZU19QQ0lFM19NRU1fQkFTRSwKKwkJCQkJQ09ORklHX1NZU19QQ0lFM19NRU1fQlVTLAogCQkJCQlDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLAogCQkJCQlDT05GSUdfU1lTX1BDSUUzX01FTV9TSVpFLAogCQkJCQlQQ0lfUkVHSU9OX01FTSk7CiAKIAkJCS8qIG91dGJvdW5kIGlvICovCiAJCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkJCUNPTkZJR19TWVNfUENJRTNfSU9fQkFTRSwKKwkJCQkJQ09ORklHX1NZU19QQ0lFM19JT19CVVMsCiAJCQkJCUNPTkZJR19TWVNfUENJRTNfSU9fUEhZUywKIAkJCQkJQ09ORklHX1NZU19QQ0lFM19JT19TSVpFLAogCQkJCQlQQ0lfUkVHSU9OX0lPKTsKQEAgLTIxNSw3ICsyMTUsNyBAQAogCiAJCQlwY2lfaG9zZV9yZWFkX2NvbmZpZ19kd29yZChob3NlLCBQQ0lfQkRGKDIsIDB4MWQsIDAgKSwKIAkJCQkJUENJX0JBU0VfQUREUkVTU18xLCAmdGVtcDMyKTsKLQkJCWlmICh0ZW1wMzIgPj0gQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUykgeworCQkJaWYgKHRlbXAzMiA+PSBDT05GSUdfU1lTX1BDSUUzX01FTV9CVVMpIHsKIAkJCQlkZWJ1ZygiIHVsaTE1NzIgcmVhZCB0byAleFxuIiwgdGVtcDMyKTsKIAkJCQlpbl9iZTMyKCh1bnNpZ25lZCAqKXRlbXAzMik7CiAJCQl9CkBAIC0yMzQsMTAgKzIzNCwxMCBAQAogCQlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UgPSAmcGNpZTJfaG9zZTsKIAkJaW50IHBjaWVfZXAgPSAoaG9zdF9hZ2VudCA9PSAyKSB8fCAoaG9zdF9hZ2VudCA9PSA0KSB8fAogCQkJKGhvc3RfYWdlbnQgPT0gNikgfHwgKGhvc3RfYWdlbnQgPT0gMCk7Ci0JCWludCBwY2llX2NvbmZpZ3VyZWQgID0gaW9fc2VsICYgNDsKKwkJaW50IHBjaWVfY29uZmlndXJlZCAgPSAoaW9fc2VsID09IDB4MykgfHwgKGlvX3NlbCA9PSAweDcpOwogCQlzdHJ1Y3QgcGNpX3JlZ2lvbiAqciA9IGhvc2UtPnJlZ2lvbnM7CiAKLQkJaWYgKHBjaWVfY29uZmlndXJlZCAmJiAhKGRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJRSkpeworCQlpZiAocGNpZV9jb25maWd1cmVkICYmICEoZGV2ZGlzciAmIE1QQzg1eHhfREVWRElTUl9QQ0lFMikpewogCQkJcHJpbnRmICgiXG4gICAgUENJRTIgY29ubmVjdGVkIHRvIFNsb3QgMSBhcyAlcyAoYmFzZSBhZGRyZXNzICV4KSIsCiAJCQkJCXBjaWVfZXAgPyAiRW5kIFBvaW50IiA6ICJSb290IENvbXBsZXgiLAogCQkJCQkodWludClwY2kpOwpAQCAtMjUyLDE0ICsyNTIsMTQgQEAKIAogCQkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkJCUNPTkZJR19TWVNfUENJRTJfTUVNX0JBU0UsCisJCQkJCUNPTkZJR19TWVNfUENJRTJfTUVNX0JVUywKIAkJCQkJQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywKIAkJCQkJQ09ORklHX1NZU19QQ0lFMl9NRU1fU0laRSwKIAkJCQkJUENJX1JFR0lPTl9NRU0pOwogCiAJCQkvKiBvdXRib3VuZCBpbyAqLwogCQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJCQlDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UsCisJCQkJCUNPTkZJR19TWVNfUENJRTJfSU9fQlVTLAogCQkJCQlDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMsCiAJCQkJCUNPTkZJR19TWVNfUENJRTJfSU9fU0laRSwKIAkJCQkJUENJX1JFR0lPTl9JTyk7CkBAIC0yODcsNyArMjg3LDkgQEAKIAkJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gJnBjaWUxX2hvc2U7CiAJCWludCBwY2llX2VwID0gKGhvc3RfYWdlbnQgPD0gMSkgfHwgKGhvc3RfYWdlbnQgPT0gNCkgfHwKIAkJCShob3N0X2FnZW50ID09IDUpOwotCQlpbnQgcGNpZV9jb25maWd1cmVkICA9IGlvX3NlbCAmIDY7CisJCWludCBwY2llX2NvbmZpZ3VyZWQgID0gKGlvX3NlbCA9PSAweDIpIHx8IChpb19zZWwgPT0gMHgzKSB8fAorCQkJCQkoaW9fc2VsID09IDB4NykgfHwgKGlvX3NlbCA9PSAweGIpIHx8CisJCQkJCShpb19zZWwgPT0gMHhjKSB8fCAoaW9fc2VsID09IDB4Zik7CiAJCXN0cnVjdCBwY2lfcmVnaW9uICpyID0gaG9zZS0+cmVnaW9uczsKIAogCQlpZiAocGNpZV9jb25maWd1cmVkICYmICEoZGV2ZGlzciAmIE1QQzg1eHhfREVWRElTUl9QQ0lFKSl7CkBAIC0zMDUsMTQgKzMwNywxNCBAQAogCiAJCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KIAkJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQkJQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRSwKKwkJCQkJQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTLAogCQkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLAogCQkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFLAogCQkJCQlQQ0lfUkVHSU9OX01FTSk7CiAKIAkJCS8qIG91dGJvdW5kIGlvICovCiAJCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkJCUNPTkZJR19TWVNfUENJRTFfSU9fQkFTRSwKKwkJCQkJQ09ORklHX1NZU19QQ0lFMV9JT19CVVMsCiAJCQkJCUNPTkZJR19TWVNfUENJRTFfSU9fUEhZUywKIAkJCQkJQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFLAogCQkJCQlQQ0lfUkVHSU9OX0lPKTsKQEAgLTM1Niw3ICszNTgsNyBAQAogCS8qIGludmFsaWRhdGUgZXhpc3RpbmcgVExCIGVudHJ5IGZvciBmbGFzaCArIHByb21qZXQgKi8KIAlkaXNhYmxlX3RsYihmbGFzaF9lc2VsKTsKIAotCXNldF90bGIoMSwgZmxhc2hiYXNlLCBmbGFzaGJhc2UsCQkvKiB0bGIsIGVwbiwgcnBuICovCisJc2V0X3RsYigxLCBmbGFzaGJhc2UsIENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTLAkvKiB0bGIsIGVwbiwgcnBuICovCiAJCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywJLyogcGVybXMsIHdpbWdlICovCiAJCQkwLCBmbGFzaF9lc2VsLCBCT09LRV9QQUdFU1pfMjU2TSwgMSk7CS8qIHRzLCBlc2VsLCB0c2l6ZSwgaXByb3QgKi8KIApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NzJkcy90bGIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTcyZHMvdGxiLmMKaW5kZXggOGQxZjY0Ni4uZDgzMmY4OSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NzJkcy90bGIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU3MmRzL3RsYi5jCkBAIC00MSwxMCArNDEsNiBAQAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKIAkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKIAotCVNFVF9UTEJfRU5UUlkoMCwgUElYSVNfQkFTRSwgUElYSVNfQkFTRSwKLQkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCi0JCSAgICAgIDAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCi0KIAkvKiBUTEIgMSAqLwogCS8qICpJKioqIC0gQ292ZXJzIGJvb3QgcGFnZSAqLwogCVNFVF9UTEJfRU5UUlkoMSwgMHhmZmZmZjAwMCwgMHhmZmZmZjAwMCwKQEAgLTU4LDI2ICs1NCwyNiBAQAogCiAJLyogVyoqRyogLSBGbGFzaC9wcm9tamV0LCBsb2NhbGJ1cyAqLwogCS8qIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvICpJKkcqIGFmdGVyIHJlbG9jYXRpb24gdG8gUkFNLiAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19GTEFTSF9CQVNFLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UsIENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1IsIE1BUzJfV3xNQVMyX0csCiAJCSAgICAgIDAsIDIsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKIAogCS8qICpJKkcqIC0gUENJICovCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLCBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFM19NRU1fVklSVCwgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUywKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDMsIEJPT0tFX1BBR0VTWl8xRywgMSksCiAKIAkvKiAqSSpHKiAtIFBDSSAqLwotCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUyArIDB4NDAwMDAwMDAsIENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMgKyAweDQwMDAwMDAwLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFM19NRU1fVklSVCArIDB4NDAwMDAwMDAsIENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMgKyAweDQwMDAwMDAwLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKIAkJICAgICAgMCwgNCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCi0JU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTICsgMHg1MDAwMDAwMCwgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUyArIDB4NTAwMDAwMDAsCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSUUzX01FTV9WSVJUICsgMHg1MDAwMDAwMCwgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUyArIDB4NTAwMDAwMDAsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCA1LCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAKIAkvKiAqSSpHKiAtIFBDSSBJL08gKi8KLQlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJRTNfSU9fUEhZUywgQ09ORklHX1NZU19QQ0lFM19JT19QSFlTLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFM19JT19WSVJULCBDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAogCQkgICAgICAwLCA2LCBCT09LRV9QQUdFU1pfMjU2SywgMSksCiAKQEAgLTg2LDYgKzgyLDkgQEAKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCiAJCSAgICAgIDAsIDcsIEJPT0tFX1BBR0VTWl8xTSwgMSksCiAKKwlTRVRfVExCX0VOVFJZKDEsIFBJWElTX0JBU0UsIFBJWElTX0JBU0VfUEhZUywKKwkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCSAgICAgIDAsIDgsIEJPT0tFX1BBR0VTWl80SywgMSksCiB9OwogCiBpbnQgbnVtX3RsYl9lbnRyaWVzID0gQVJSQVlfU0laRSh0bGJfdGFibGUpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL2Rkci5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL2Rkci5jCmluZGV4IDQxNGFjMjQuLjAxMTdkMTMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjEwaHBjZC9kZHIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODYxMGhwY2QvZGRyLmMKQEAgLTc0LDYgKzc0LDkgQEAKIAkgKi8KIAlwb3B0cy0+d3JpdGVfZGF0YV9kZWxheSA9IDM7CiAKKwkvKiAyVCB0aW1pbmcgZW5hYmxlICovCisJcG9wdHMtPnR3b1RfZW4gPSAxOworCiAJLyoKIAkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBoYWxmLXN0cmVuZ3RoIGRyaXZlciBlbmFibGU6CiAJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODYxMGhwY2QvbGF3LmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODYxMGhwY2QvbGF3LmMKaW5kZXggMmFhZDI4YS4uMGZjODM4NCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL2xhdy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjEwaHBjZC9sYXcuYwpAQCAtMzEsOCArMzEsOCBAQAogI2lmICFkZWZpbmVkKENPTkZJR19TUERfRUVQUk9NKQogCVNFVF9MQVcoQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRSwgTEFXX1NJWkVfNTEyTSwgTEFXX1RSR1RfSUZfRERSXzEpLAogI2VuZGlmCi0JU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9QQ0lFXzEpLAotCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRSwgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfUENJRV8yKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsIExBV19TSVpFXzI1Nk0sIExBV19UUkdUX0lGX1BDSUVfMSksCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9QQ0lFXzIpLAogCVNFVF9MQVcoUElYSVNfQkFTRSwgTEFXX1NJWkVfMk0sIExBV19UUkdUX0lGX0xCQyksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsIExBV19TSVpFXzFNLCBMQVdfVFJHVF9JRl9QQ0lFXzEpLAogCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLCBMQVdfU0laRV8xTSwgTEFXX1RSR1RfSUZfUENJRV8yKSwKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjEwaHBjZC9tcGM4NjEwaHBjZC5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL21wYzg2MTBocGNkLmMKaW5kZXggMjc5Mjc3OC4uYTIwOTdhNSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL21wYzg2MTBocGNkLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL21wYzg2MTBocGNkLmMKQEAgLTI2NiwxNCArMjY2LDE0IEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLAorCQkJIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUywKIAkJCSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLAogCQkJIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUsCiAJCQkgUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsCisJCQkgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMsCiAJCQkgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAogCQkJIENPTkZJR19TWVNfUENJRTFfSU9fU0laRSwKIAkJCSBQQ0lfUkVHSU9OX0lPKTsKQEAgLTMyMSwxNCArMzIxLDE0IEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFLAorCQkJIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUywKIAkJCSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLAogCQkJIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUsCiAJCQkgUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSBDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UsCisJCQkgQ09ORklHX1NZU19QQ0lFMl9JT19CVVMsCiAJCQkgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLAogCQkJIENPTkZJR19TWVNfUENJRTJfSU9fU0laRSwKIAkJCSBQQ0lfUkVHSU9OX0lPKTsKQEAgLTM3MCwxNCArMzcwLDE0IEBACiAKIAkJLyogb3V0Ym91bmQgbWVtb3J5ICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UsCisJCQkgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMsCiAJCQkgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAogCQkJIENPTkZJR19TWVNfUENJMV9NRU1fU0laRSwKIAkJCSBQQ0lfUkVHSU9OX01FTSk7CiAKIAkJLyogb3V0Ym91bmQgaW8gKi8KIAkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJIENPTkZJR19TWVNfUENJMV9JT19CQVNFLAorCQkJIENPTkZJR19TWVNfUENJMV9JT19CVVMsCiAJCQkgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsCiAJCQkgQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUsCiAJCQkgUENJX1JFR0lPTl9JTyk7CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vZGRyLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vZGRyLmMKaW5kZXggMzc4OWI1NC4uOGRjMjQ5YiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2NDFocGNuL2Rkci5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjQxaHBjbi9kZHIuYwpAQCAtMTYyLDQgKzE2Miw2IEBACiAJCX0KIAl9CiAKKwkvKiAyVCB0aW1pbmcgZW5hYmxlICovCisJcG9wdHMtPnR3b1RfZW4gPSAxOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQva2V5bWlsZS9jb21tb24vY29tbW9uLmMgYi9ib2FyZC9rZXltaWxlL2NvbW1vbi9jb21tb24uYwppbmRleCBhNGNmMjRjLi4xMzM4OTUwIDEwMDY0NAotLS0gYS9ib2FyZC9rZXltaWxlL2NvbW1vbi9jb21tb24uYworKysgYi9ib2FyZC9rZXltaWxlL2NvbW1vbi9jb21tb24uYwpAQCAtMjIsMTAgKzIyLDE0IEBACiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgorI2lmIGRlZmluZWQoQ09ORklHX01HQ09HRSkKICNpbmNsdWRlIDxtcGM4MjYwLmg+CisjZW5kaWYKICNpbmNsdWRlIDxpb3BvcnRzLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+CiAjaW5jbHVkZSA8aHVzaC5oPgorI2luY2x1ZGUgPG5ldC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgogCiAjaWYgZGVmaW5lZChDT05GSUdfT0ZfQk9BUkRfU0VUVVApICYmIGRlZmluZWQoQ09ORklHX09GX0xJQkZEVCkKICNpbmNsdWRlIDxsaWJmZHQuaD4KQEAgLTMzLDggKzM3LDYgQEAKIAogI2lmIGRlZmluZWQoQ09ORklHX0hBUkRfSTJDKSB8fCBkZWZpbmVkKENPTkZJR19TT0ZUX0kyQykKICNpbmNsdWRlIDxpMmMuaD4KLSNlbmRpZgotI2luY2x1ZGUgPGFzbS9pby5oPgogCiBleHRlcm4gaW50IGkyY19zb2Z0X3JlYWRfcGluICh2b2lkKTsKIApAQCAtNDk1LDYgKzQ5Nyw3IEBACiAjZW5kaWYKIH0KICNlbmRpZgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkgJiYgZGVmaW5lZChDT05GSUdfT0ZfTElCRkRUKQogaW50IGZkdF9zZXRfbm9kZV9hbmRfdmFsdWUgKHZvaWQgKmJsb2IsCkBAIC01MjEsMyArNTI0LDE5IEBACiAJcmV0dXJuIHJldDsKIH0KICNlbmRpZgorCitpbnQgZXRoZXJuZXRfcHJlc2VudCAodm9pZCkKK3sKKwlyZXR1cm4gKGluXzgoKHU4ICopQ09ORklHX1NZU19QSUdHWV9CQVNFICsgQ09ORklHX1NZU19TTE9UX0lEX09GRikgJiAweDgwKTsKK30KKworaW50IGJvYXJkX2V0aF9pbml0IChiZF90ICpiaXMpCit7CisjaWZkZWYgQ09ORklHX0tFWU1JTEVfSERMQ19FTkVUCisJKHZvaWQpa2V5bWlsZV9oZGxjX2VuZXRfaW5pdGlhbGl6ZSAoYmlzKTsKKyNlbmRpZgorCWlmIChldGhlcm5ldF9wcmVzZW50ICgpKSB7CisJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9rZXltaWxlL2NvbW1vbi9jb21tb24uaCBiL2JvYXJkL2tleW1pbGUvY29tbW9uL2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZDY4MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9rZXltaWxlL2NvbW1vbi9jb21tb24uaApAQCAtMCwwICsxLDIwIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBIZWlrbyBTY2hvY2hlciwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgaHNAZGVueC5kZS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19LRVlNSUxFX0NPTU1PTl9ICisjZGVmaW5lIF9fS0VZTUlMRV9DT01NT05fSAorCitpbnQgZXRoZXJuZXRfcHJlc2VudCAodm9pZCk7CitpbnQgaXZtX3JlYWRfZWVwcm9tICh2b2lkKTsKKworI2lmZGVmIENPTkZJR19LRVlNSUxFX0hETENfRU5FVAoraW50IGtleW1pbGVfaGRsY19lbmV0X2luaXRpYWxpemUgKGJkX3QgKmJpcyk7CisjZW5kaWYKKyNlbmRpZiAvKiBfX0tFWU1JTEVfQ09NTU9OX0ggKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC94dXB2MnAvTWFrZWZpbGUgYi9ib2FyZC9rZXltaWxlL2ttZXRlcjEvTWFrZWZpbGUKc2ltaWxhcml0eSBpbmRleCA4NyUKY29weSBmcm9tIGJvYXJkL3hpbGlueC94dXB2MnAvTWFrZWZpbGUKY29weSB0byBib2FyZC9rZXltaWxlL2ttZXRlcjEvTWFrZWZpbGUKaW5kZXggMTBiNDdiMi4uMTJhMTUxOCAxMDA2NDQKLS0tIGEvYm9hcmQveGlsaW54L3h1cHYycC9NYWtlZmlsZQorKysgYi9ib2FyZC9rZXltaWxlL2ttZXRlcjEvTWFrZWZpbGUKQEAgLTEsNSArMSw1IEBACiAjCi0jIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA2CisjIChDKSBDb3B5cmlnaHQgMjAwNgogIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgogIwogIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwpAQCAtMjIsMTcgKzIyLDIwIEBACiAjCiAKIGluY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworaWZuZXEgKCQoT0JKVFJFRSksJChTUkNUUkVFKSkKKyQoc2hlbGwgbWtkaXIgLXAgJChvYmopLi4vY29tbW9uKQorZW5kaWYKIAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCi1DT0JKUwk9ICQoQk9BUkQpLm8KK0NPQkpTCSs9ICQoQk9BUkQpLm8gLi4vY29tbW9uL2NvbW1vbi5vCiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICReCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKIAlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngveHVwdjJwL2NvbmZpZy5tayBiL2JvYXJkL2tleW1pbGUva21ldGVyMS9jb25maWcubWsKc2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gYm9hcmQveGlsaW54L3h1cHYycC9jb25maWcubWsKcmVuYW1lIHRvIGJvYXJkL2tleW1pbGUva21ldGVyMS9jb25maWcubWsKaW5kZXggYzA3YjBiMy4uMjBmMjk4YiAxMDA2NDQKLS0tIGEvYm9hcmQveGlsaW54L3h1cHYycC9jb25maWcubWsKKysrIGIvYm9hcmQva2V5bWlsZS9rbWV0ZXIxL2NvbmZpZy5tawpAQCAtMSw3ICsxLDYgQEAKICMKLSMgKEMpIENvcHlyaWdodCAyMDA3IE1pY2hhbCBTaW1lawotIwotIyBNaWNoYWwgIFNJTUVLIDxtb25zdHJAbW9uc3RyLmV1PgorIyAoQykgQ29weXJpZ2h0IDIwMDgKKyMgSGVpa28gU2Nob2NoZXIsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIGhzQGRlbnguZGUuCiAjCiAjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAjIHByb2plY3QuCkBAIC0xMyw3ICsxMiw3IEBACiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMjEsMTIgKzIwLDUgQEAKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICMgTUEgMDIxMTEtMTMwNyBVU0EKICMKLSMgQ0FVVElPTjogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGxpYmdlbi4KLSMgVmVyc2lvbjogWGlsaW54IEVESyA4LjIuMDIgRURLX0ltX1NwMi40Ci0jCiAKLVRFWFRfQkFTRSA9IDB4MzgwMDAwMDAKLQotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LW11bAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LWRpdgotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW14bC1iYXJyZWwtc2hpZnQKK1RFWFRfQkFTRSA9IDB4RjAwMDAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL2tleW1pbGUva21ldGVyMS9rbWV0ZXIxLmMgYi9ib2FyZC9rZXltaWxlL2ttZXRlcjEva21ldGVyMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGE1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9rZXltaWxlL2ttZXRlcjEva21ldGVyMS5jCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKiAgICAgICAgICAgICAgICAgICAgRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTG9naWMgUHJvZHVjdCBEZXZlbG9wbWVudCwgSW5jLgorICogICAgICAgICAgICAgICAgICAgIFBldGVyIEJhcmFkYSA8cGV0ZXJiQGxvZ2ljcGQuY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKiAgICAgICAgICAgICAgICAgICAgQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CisgKgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBIZWlrbyBTY2hvY2hlciwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgaHNAZGVueC5kZS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpb3BvcnRzLmg+CisjaW5jbHVkZSA8bXBjODN4eC5oPgorI2luY2x1ZGUgPGkyYy5oPgorI2luY2x1ZGUgPG1paXBoeS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNpbmNsdWRlIDxwY2kuaD4KKyNpbmNsdWRlIDxsaWJmZHQuaD4KKworI2luY2x1ZGUgIi4uL2NvbW1vbi9jb21tb24uaCIKKworY29uc3QgcWVfaW9wX2NvbmZfdCBxZV9pb3BfY29uZl90YWJbXSA9IHsKKwkvKiBwb3J0IHBpbiBkaXIgb3Blbl9kcmFpbiBhc3NpZ24gKi8KKworCS8qIE1ESU8gKi8KKwl7MCwgIDEsIDMsIDAsIDJ9LCAvKiBNRElPICovCisJezAsICAyLCAxLCAwLCAxfSwgLyogTURDICovCisKKwkvKiBVQ0M0IC0gVUVDICovCisJezEsIDE0LCAxLCAwLCAxfSwgLyogVHhEMCAqLworCXsxLCAxNSwgMSwgMCwgMX0sIC8qIFR4RDEgKi8KKwl7MSwgMjAsIDIsIDAsIDF9LCAvKiBSeEQwICovCisJezEsIDIxLCAyLCAwLCAxfSwgLyogUnhEMSAqLworCXsxLCAxOCwgMSwgMCwgMX0sIC8qIFRYX0VOICovCisJezEsIDI2LCAyLCAwLCAxfSwgLyogUlhfRFYgKi8KKwl7MSwgMjcsIDIsIDAsIDF9LCAvKiBSWF9FUiAqLworCXsxLCAyNCwgMiwgMCwgMX0sIC8qIENPTCAqLworCXsxLCAyNSwgMiwgMCwgMX0sIC8qIENSUyAqLworCXsyLCAxNSwgMiwgMCwgMX0sIC8qIFRYX0NMSyAtIENMSzE2ICovCisJezIsIDE2LCAyLCAwLCAxfSwgLyogUlhfQ0xLIC0gQ0xLMTcgKi8KKworCS8qIERVQVJUIC0gVUFSVDIgKi8KKwl7NSwgIDAsIDEsIDAsIDJ9LCAvKiBVQVJUMl9TT1VUICovCisJezUsICAyLCAxLCAwLCAxfSwgLyogVUFSVDJfUlRTICovCisJezUsICAzLCAyLCAwLCAyfSwgLyogVUFSVDJfU0lOICovCisJezUsICAxLCAyLCAwLCAzfSwgLyogVUFSVDJfQ1RTICovCisKKwkvKiBFTkQgb2YgdGFibGUgKi8KKwl7MCwgIDAsIDAsIDAsIFFFX0lPUF9UQUJfRU5EfSwKK307CisKK2ludCBib2FyZF9lYXJseV9pbml0X3IgKHZvaWQpCit7CisJdm9pZCAqcmVnID0gKHZvaWQgKikoQ09ORklHX1NZU19JTU1SICsgMHgxNGE4KTsKKwl1MzIgdmFsOworCisJLyoKKwkgKiBCZWNhdXNlIG9mIGVycmF0YSBpbiB0aGUgVUNDcywgd2UgaGF2ZSB0byB3cml0ZSB0byB0aGUgcmVzZXJ2ZWQKKwkgKiByZWdpc3RlcnMgdG8gc2xvdyB0aGUgY2xvY2tzIGRvd24uCisJICovCisJdmFsID0gaW5fYmUzMiAocmVnKTsKKwkvKiBVQ0MxICovCisJdmFsIHw9IDB4MDAwMDMwMDA7CisJLyogVUNDMiAqLworCXZhbCB8PSAweDBjMDAwMDAwOworCW91dF9iZTMyIChyZWcsIHZhbCk7CisJLyogZW5hYmxlIHRoZSBQSFkgb24gdGhlIFBJR0dZICovCisJc2V0Yml0cyAoOCwgKHZvaWQgKikoQ09ORklHX1NZU19QSUdHWV9CQVNFICsgMHgxMDAwMyksIDB4MDEpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBmaXhlZF9zZHJhbSh2b2lkKQoreworCXZvbGF0aWxlIGltbWFwX3QgKmltID0gKGltbWFwX3QgKilDT05GSUdfU1lTX0lNTVI7CisJdTMyIG1zaXplID0gMDsKKwl1MzIgZGRyX3NpemU7CisJdTMyIGRkcl9zaXplX2xvZzI7CisKKwltc2l6ZSA9IENPTkZJR19TWVNfRERSX1NJWkU7CisJZm9yIChkZHJfc2l6ZSA9IG1zaXplIDw8IDIwLCBkZHJfc2l6ZV9sb2cyID0gMDsKKwkgICAgIChkZHJfc2l6ZSA+IDEpOyBkZHJfc2l6ZSA9IGRkcl9zaXplID4+IDEsIGRkcl9zaXplX2xvZzIrKykgeworCQlpZiAoZGRyX3NpemUgJiAxKQorCQkJcmV0dXJuIC0xOworCX0KKworCWltLT5zeXNjb25mLmRkcmxhd1swXS5hciA9CisJICAgIExBV0FSX0VOIHwgKChkZHJfc2l6ZV9sb2cyIC0gMSkgJiBMQVdBUl9TSVpFKTsKKworCWltLT5kZHIuY3NibmRzWzBdLmNzYm5kcyA9IENPTkZJR19TWVNfRERSX0NTMF9CTkRTOworCWltLT5kZHIuY3NfY29uZmlnWzBdID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJRzsKKwlpbS0+ZGRyLnRpbWluZ19jZmdfMCA9IENPTkZJR19TWVNfRERSX1RJTUlOR18wOworCWltLT5kZHIudGltaW5nX2NmZ18xID0gQ09ORklHX1NZU19ERFJfVElNSU5HXzE7CisJaW0tPmRkci50aW1pbmdfY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMjsKKwlpbS0+ZGRyLnRpbWluZ19jZmdfMyA9IENPTkZJR19TWVNfRERSX1RJTUlOR18zOworCWltLT5kZHIuc2RyYW1fY2ZnID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHOworCWltLT5kZHIuc2RyYW1fY2ZnMiA9IENPTkZJR19TWVNfRERSX1NEUkFNX0NGRzI7CisJaW0tPmRkci5zZHJhbV9tb2RlID0gQ09ORklHX1NZU19ERFJfTU9ERTsKKwlpbS0+ZGRyLnNkcmFtX21vZGUyID0gQ09ORklHX1NZU19ERFJfTU9ERTI7CisJaW0tPmRkci5zZHJhbV9pbnRlcnZhbCA9IENPTkZJR19TWVNfRERSX0lOVEVSVkFMOworCWltLT5kZHIuc2RyYW1fY2xrX2NudGwgPSBDT05GSUdfU1lTX0REUl9DTEtfQ05UTDsKKwl1ZGVsYXkgKDIwMCk7CisJaW0tPmRkci5zZHJhbV9jZmcgfD0gU0RSQU1fQ0ZHX01FTV9FTjsKKworCXJldHVybiBtc2l6ZTsKK30KKworcGh5c19zaXplX3QgaW5pdGRyYW0gKGludCBib2FyZF90eXBlKQoreworI2lmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpICYmICFkZWZpbmVkKENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQykKKwlleHRlcm4gdm9pZCBkZHJfZW5hYmxlX2VjYyAodW5zaWduZWQgaW50IGRyYW1fc2l6ZSk7CisjZW5kaWYKKwl2b2xhdGlsZSBpbW1hcF90ICppbSA9IChpbW1hcF90ICopQ09ORklHX1NZU19JTU1SOworCXUzMiBtc2l6ZSA9IDA7CisKKwlpZiAoKGltLT5zeXNjb25mLmltbXJiYXIgJiBJTU1SQkFSX0JBU0VfQUREUikgIT0gKHUzMilpbSkKKwkJcmV0dXJuIC0xOworCisJLyogRERSIFNEUkFNIC0gTWFpbiBTT0RJTU0gKi8KKwlpbS0+c3lzY29uZi5kZHJsYXdbMF0uYmFyID0gQ09ORklHX1NZU19ERFJfQkFTRSAmIExBV0JBUl9CQVI7CisJbXNpemUgPSBmaXhlZF9zZHJhbSAoKTsKKworI2lmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpICYmICFkZWZpbmVkKENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQykKKwkvKgorCSAqIEluaXRpYWxpemUgRERSIEVDQyBieXRlCisJICovCisJZGRyX2VuYWJsZV9lY2MgKG1zaXplICogMTAyNCAqIDEwMjQpOworI2VuZGlmCisKKwkvKiByZXR1cm4gdG90YWwgYnVzIFNEUkFNIHNpemUoYnl0ZXMpICAtLSBERFIgKi8KKwlyZXR1cm4gKG1zaXplICogMTAyNCAqIDEwMjQpOworfQorCitpbnQgY2hlY2tib2FyZCAodm9pZCkKK3sKKwlwdXRzICgiQm9hcmQ6IEtleW1pbGUga21ldGVyMSIpOworCWlmIChldGhlcm5ldF9wcmVzZW50ICgpKQorCQlwdXRzICgiIHdpdGggUElHR1kuIik7CisJcHV0cyAoIlxuIik7CisJcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkKK3ZvaWQgZnRfYm9hcmRfc2V0dXAgKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCWZ0X2NwdV9zZXR1cCAoYmxvYiwgYmQpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9rZXltaWxlL21nY29nZS9tZ2NvZ2UuYyBiL2JvYXJkL2tleW1pbGUvbWdjb2dlL21nY29nZS5jCmluZGV4IDM2ODM0MTcuLjVjNTA3MzkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2tleW1pbGUvbWdjb2dlL21nY29nZS5jCisrKyBiL2JvYXJkL2tleW1pbGUvbWdjb2dlL21nY29nZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8bXBjODI2MC5oPgogI2luY2x1ZGUgPGlvcG9ydHMuaD4KICNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxuZXQuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KIAogI2lmIGRlZmluZWQoQ09ORklHX09GX0JPQVJEX1NFVFVQKSAmJiBkZWZpbmVkKENPTkZJR19PRl9MSUJGRFQpCkBAIC0zNSw3ICszNiw4IEBACiAjaW5jbHVkZSA8aTJjLmg+CiAjZW5kaWYKIAotZXh0ZXJuIGludCBpdm1fcmVhZF9lZXByb20gKHZvaWQpOworI2luY2x1ZGUgIi4uL2NvbW1vbi9jb21tb24uaCIKKwogLyoKICAqIEkvTyBQb3J0IGNvbmZpZ3VyYXRpb24gdGFibGUKICAqCkBAIC0yODUsOCArMjg3LDEwIEBACiAKIGludCBjaGVja2JvYXJkKHZvaWQpCiB7Ci0JcHV0cyAoIkJvYXJkOiBtZ2NvZ2VcbiIpOwotCisJcHV0cyAoIkJvYXJkOiBLZXltaWxlIG1nY29nZSIpOworCWlmIChldGhlcm5ldF9wcmVzZW50ICgpKQorCQlwdXRzICgiIHdpdGggUElHR1kuIik7CisJcHV0cyAoIlxuIik7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2tleW1pbGUvbWdzdXZkL21nc3V2ZC5jIGIvYm9hcmQva2V5bWlsZS9tZ3N1dmQvbWdzdXZkLmMKaW5kZXggMzcyNmFjZi4uMDJiYWY2MiAxMDA2NDQKLS0tIGEvYm9hcmQva2V5bWlsZS9tZ3N1dmQvbWdzdXZkLmMKKysrIGIvYm9hcmQva2V5bWlsZS9tZ3N1dmQvbWdzdXZkLmMKQEAgLTIyLDEzICsyMiwxNCBAQAogICovCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8bXBjOHh4Lmg+CisjaW5jbHVkZSA8bmV0Lmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKICNpZiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkgJiYgZGVmaW5lZChDT05GSUdfT0ZfTElCRkRUKQogI2luY2x1ZGUgPGxpYmZkdC5oPgogI2VuZGlmCiAKLWV4dGVybiBpbnQgaXZtX3JlYWRfZWVwcm9tICh2b2lkKTsKKyNpbmNsdWRlICIuLi9jb21tb24vY29tbW9uLmgiCiAKIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwogCkBAIC02MCw3ICs2MSwxMCBAQAogCiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKLQlwdXRzICgiQm9hcmQ6IEtleW1pbGUgbWdzdXZkXG4iKTsKKwlwdXRzICgiQm9hcmQ6IEtleW1pbGUgbWdzdXZkIik7CisJaWYgKGV0aGVybmV0X3ByZXNlbnQgKCkpCisJCXB1dHMgKCIgd2l0aCBQSUdHWS4iKTsKKwlwdXRzICgiXG4iKTsKIAlyZXR1cm4gKDApOwogfQogCmRpZmYgLS1naXQgYS9ib2FyZC9tNTAxc2svTWFrZWZpbGUgYi9ib2FyZC9tNTAxc2svTWFrZWZpbGUKaW5kZXggYzU2MmM2MC4uYWVjM2QxYyAxMDA2NDQKLS0tIGEvYm9hcmQvbTUwMXNrL01ha2VmaWxlCisrKyBiL2JvYXJkL201MDFzay9NYWtlZmlsZQpAQCAtMjcsOCArMjcsNiBAQAogCiBDT0JKUyAgOj0gbTUwMXNrLm8gZWVwcm9tLm8KIAotU09CSlMgIDo9IG1lbXNldHVwLm8KLQogU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCiBTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCmRpZmYgLS1naXQgYS9ib2FyZC9tNTAxc2svbWVtc2V0dXAuUyBiL2JvYXJkL201MDFzay9tZW1zZXR1cC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWVhNzIzLi4wMDAwMDAwCi0tLSBhL2JvYXJkL201MDFzay9tZW1zZXR1cC5TCisrKyAvZGV2L251bGwKQEAgLTEsMjAwICswLDAgQEAKLS8qCi0gKiBNZW1vcnkgU2V0dXAgc3R1ZmYgLSB0YWtlbiBmcm9tIGJsb2IgbWVtc2V0dXAuUwotICoKLSAqIENvcHlyaWdodCAoQykgMTk5OSAyMDAwIDIwMDEgRXJpayBNb3V3IChKLkEuSy5Nb3V3QGl0cy50dWRlbGZ0Lm5sKSBhbmQKLSAqCSAgICAgICAgICBKYW4tRGVyayBCYWtrZXIgKEouRC5CYWtrZXJAaXRzLnR1ZGVsZnQubmwpCi0gKgotICogTW9kaWZpZWQgZm9yIHRoZSBhdDkxcm05MjAwZGsgYm9hcmQgYnkKLSAqIChDKSBDb3B5cmlnaHQgMjAwNAotICogR2FyeSBKZW5uZWpvaG4sIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIDxnYXJ5akBkZW54LmRlPgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLQotI2lmZGVmIENPTkZJR19CT09UQklORlVOQwotLyoKLSAqIHNvbWUgcGFyYW1ldGVycyBmb3IgdGhlIGJvYXJkCi0gKgotICogVGhpcyBpcyBiYXNlZCBvbiBybTkyMDBkay5jZmcgZm9yIHRoZSBCREkyMDAwIGZyb20gQUJBVFJPTiB3aGljaCBpbgotICogdHVybiBpcyBiYXNlZCBvbiB0aGUgYm9vdC5iaW4gY29kZSBmcm9tIEFUTUVMCi0gKgotICovCi0KLS8qIGZsYXNoICovCi0jZGVmaW5lIE1DX1BVSUEgMHhGRkZGRkYxMAotI2RlZmluZSBNQ19QVUlBX1ZBTCAweDAwMDAwMDAwCi0jZGVmaW5lIE1DX1BVUCAweEZGRkZGRjUwCi0jZGVmaW5lIE1DX1BVUF9WQUwgMHgwMDAwMDAwMAotI2RlZmluZSBNQ19QVUVSIDB4RkZGRkZGNTQKLSNkZWZpbmUgTUNfUFVFUl9WQUwgMHgwMDAwMDAwMAotI2RlZmluZSBNQ19BU1IgMHhGRkZGRkYwNAotI2RlZmluZSBNQ19BU1JfVkFMIDB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfQUFTUiAweEZGRkZGRjA4Ci0jZGVmaW5lIE1DX0FBU1JfVkFMIDB4MDAwMDAwMDAKLSNkZWZpbmUgRUJJX0NGR1IgMHhGRkZGRkY2NAotI2RlZmluZSBFQklfQ0ZHUl9WQUwgMHgwMDAwMDAwMAotI2RlZmluZSBTTUNfQ1NSMCAweEZGRkZGRjcwCi0jZGVmaW5lIFNNQ19DU1IwX1ZBTCAweDAwMDAzMjg0IC8qIDE2Yml0LCAyIFRERiwgNCBXUyAqLwotCi0vKiBjbG9ja3MgKi8KLSNkZWZpbmUgUExMQVIgMHhGRkZGRkMyOAotI2RlZmluZSBQTExBUl9WQUwgMHgyMDI2M0UwNCAvKiAxNzkuNzEyMDAwIE1IeiBmb3IgUENLICovCi0jZGVmaW5lIFBMTEJSIDB4RkZGRkZDMkMKLSNkZWZpbmUgUExMQlJfVkFMIDB4MTA0ODNFMEUgLyogNDguMDU0ODU3IE1IeiAoZGl2aWRlciBieSAyIGZvciBVU0IpICovCi0jZGVmaW5lIE1DS1IgMHhGRkZGRkMzMAotLyogUENLLzMgPSBNQ0sgTWFzdGVyIENsb2NrID0gNTkuOTA0MDAwTUh6IGZyb20gUExMQSAqLwotI2RlZmluZSBNQ0tSX1ZBTAkweDAwMDAwMjAyCi0KLS8qIHNkcmFtICovCi0jZGVmaW5lIFBJT0NfQVNSIDB4RkZGRkY4NzAKLSNkZWZpbmUgUElPQ19BU1JfVkFMIDB4RkZGRjAwMDAgLyogQ29uZmlndXJlIFBJT0MgYXMgUGVyaXAgKEQxNi9EMzEpICovCi0jZGVmaW5lIFBJT0NfQlNSIDB4RkZGRkY4NzQKLSNkZWZpbmUgUElPQ19CU1JfVkFMIDB4MDAwMDAwMDAKLSNkZWZpbmUgUElPQ19QRFIgMHhGRkZGRjgwNAotI2RlZmluZSBQSU9DX1BEUl9WQUwgMHhGRkZGMDAwMAotI2RlZmluZSBFQklfQ1NBIDB4RkZGRkZGNjAKLSNkZWZpbmUgRUJJX0NTQV9WQUwgMHgwMDAwMDAwMiAvKiBDUzE9U0RSQU0gKi8KLSNkZWZpbmUgU0RSQ19DUiAweEZGRkZGRjk4Ci0jZGVmaW5lIFNEUkNfQ1JfVkFMIDB4MjE4OGMxNTUgLyogc2V0IHVwIHRoZSBTRFJBTSAqLwotI2RlZmluZSBTRFJBTSAweDIwMDAwMDAwIC8qIGFkZHJlc3Mgb2YgdGhlIFNEUkFNICovCi0jZGVmaW5lIFNEUkFNMSAweDIwMDAwMDgwIC8qIGFkZHJlc3Mgb2YgdGhlIFNEUkFNICovCi0jZGVmaW5lIFNEUkFNX1ZBTCAweDAwMDAwMDAwIC8qIHZhbHVlIHdyaXR0ZW4gdG8gU0RSQU0gKi8KLSNkZWZpbmUgU0RSQ19NUiAweEZGRkZGRjkwCi0jZGVmaW5lIFNEUkNfTVJfVkFMIDB4MDAwMDAwMDIgLyogUHJlY2hhcmdlIEFsbCAqLwotI2RlZmluZSBTRFJDX01SX1ZBTDEgMHgwMDAwMDAwNCAvKiByZWZyZXNoICovCi0jZGVmaW5lIFNEUkNfTVJfVkFMMiAweDAwMDAwMDAzIC8qIExvYWQgTW9kZSBSZWdpc3RlciAqLwotI2RlZmluZSBTRFJDX01SX1ZBTDMgMHgwMDAwMDAwMCAvKiBOb3JtYWwgTW9kZSAqLwotI2RlZmluZSBTRFJDX1RSIDB4RkZGRkZGOTQKLSNkZWZpbmUgU0RSQ19UUl9WQUwgMHgwMDAwMDJFMCAvKiBXcml0ZSByZWZyZXNoIHJhdGUgKi8KLQotX1RFWFRfQkFTRToKLQkud29yZCAgIFRFWFRfQkFTRQotCi0uZ2xvYmwgbG93bGV2ZWxpbml0Ci1sb3dsZXZlbGluaXQ6Ci0JLyogbWVtb3J5IGNvbnRyb2wgY29uZmlndXJhdGlvbiAqLwotCS8qIHRoaXMgaXNuJ3QgdmVyeSBlbGVnYW50LCBidXQgIHdoYXQgdGhlIGhlY2sgKi8KLQlsZHIgICAgIHIwLCA9U01SREFUQQotCWxkciAgICAgcjEsIF9URVhUX0JBU0UKLQlzdWIgICAgIHIwLCByMCwgcjEKLQlhZGQgICAgIHIyLCByMCwgIzgwCi0wOgotCS8qIHRoZSBhZGRyZXNzICovCi0JbGRyICAgICByMSwgW3IwXSwgIzQKLQkvKiB0aGUgdmFsdWUgKi8KLQlsZHIgICAgIHIzLCBbcjBdLCAjNAotCXN0ciAgICAgcjMsIFtyMV0KLQljbXAgICAgIHIyLCByMAotCWJuZSAgICAgMGIKLQkvKiBkZWxheSAtIHRoaXMgaXMgYWxsIGRvbmUgYnkgZ3Vlc3MgKi8KLQlsZHIgICAgIHIwLCA9MHgwMDAxMDAwMAotMToKLQlzdWJzICAgIHIwLCByMCwgIzEKLQliaGkgICAgIDFiCi0JbGRyICAgICByMCwgPVNNUkRBVEExCi0JbGRyICAgICByMSwgX1RFWFRfQkFTRQotCXN1YiAgICAgcjAsIHIwLCByMQotCWFkZCAgICAgcjIsIHIwLCAjMTc2Ci0yOgotCS8qIHRoZSBhZGRyZXNzICovCi0JbGRyICAgICByMSwgW3IwXSwgIzQKLQkvKiB0aGUgdmFsdWUgKi8KLQlsZHIgICAgIHIzLCBbcjBdLCAjNAotCXN0ciAgICAgcjMsIFtyMV0KLQljbXAgICAgIHIyLCByMAotCWJuZSAgICAgMmIKLQotCS8qIGV2ZXJ5dGhpbmcgaXMgZmluZSBub3cgKi8KLQltb3YgICAgIHBjLCBscgotCi0JLmx0b3JnCi0KLVNNUkRBVEE6Ci0JLndvcmQgTUNfUFVJQQotCS53b3JkIE1DX1BVSUFfVkFMCi0JLndvcmQgTUNfUFVQCi0JLndvcmQgTUNfUFVQX1ZBTAotCS53b3JkIE1DX1BVRVIKLQkud29yZCBNQ19QVUVSX1ZBTAotCS53b3JkIE1DX0FTUgotCS53b3JkIE1DX0FTUl9WQUwKLQkud29yZCBNQ19BQVNSCi0JLndvcmQgTUNfQUFTUl9WQUwKLQkud29yZCBFQklfQ0ZHUgotCS53b3JkIEVCSV9DRkdSX1ZBTAotCS53b3JkIFNNQ19DU1IwCi0JLndvcmQgU01DX0NTUjBfVkFMCi0JLndvcmQgUExMQVIKLQkud29yZCBQTExBUl9WQUwKLQkud29yZCBQTExCUgotCS53b3JkIFBMTEJSX1ZBTAotCS53b3JkIE1DS1IKLQkud29yZCBNQ0tSX1ZBTAotCS8qIFNNUkRBVEEgaXMgODAgYnl0ZXMgbG9uZyAqLwotCS8qIGhlcmUgdGhlcmUncyBhIGRlbGF5IG9mIDEwMCAqLwotU01SREFUQTE6Ci0JLndvcmQgUElPQ19BU1IKLQkud29yZCBQSU9DX0FTUl9WQUwKLQkud29yZCBQSU9DX0JTUgotCS53b3JkIFBJT0NfQlNSX1ZBTAotCS53b3JkIFBJT0NfUERSCi0JLndvcmQgUElPQ19QRFJfVkFMCi0JLndvcmQgRUJJX0NTQQotCS53b3JkIEVCSV9DU0FfVkFMCi0JLndvcmQgU0RSQ19DUgotCS53b3JkIFNEUkNfQ1JfVkFMCi0JLndvcmQgU0RSQ19NUgotCS53b3JkIFNEUkNfTVJfVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJDX01SCi0JLndvcmQgU0RSQ19NUl9WQUwxCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS53b3JkIFNEUkFNCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS53b3JkIFNEUkFNCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS53b3JkIFNEUkNfTVIKLQkud29yZCBTRFJDX01SX1ZBTDIKLQkud29yZCBTRFJBTTEKLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJDX1RSCi0JLndvcmQgU0RSQ19UUl9WQUwKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS53b3JkIFNEUkNfTVIKLQkud29yZCBTRFJDX01SX1ZBTDMKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS8qIFNNUkRBVEExIGlzIDE3NiBieXRlcyBsb25nICovCi0jZW5kaWYgLyogQ09ORklHX0JPT1RCSU5GVU5DICovCmRpZmYgLS1naXQgYS9ib2FyZC9tcGM4NTQwZXZhbC9tcGM4NTQwZXZhbC5jIGIvYm9hcmQvbXBjODU0MGV2YWwvbXBjODU0MGV2YWwuYwppbmRleCBmYTBhMzM2Li5iZjI3MGY0IDEwMDY0NAotLS0gYS9ib2FyZC9tcGM4NTQwZXZhbC9tcGM4NTQwZXZhbC5jCisrKyBiL2JvYXJkL21wYzg1NDBldmFsL21wYzg1NDBldmFsLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogI2lmICFkZWZpbmVkKENPTkZJR19SQU1fQVNfRkxBU0gpIC8qIExvY2FsQnVzIGlzIG5vdCBlbXVsYXRpbmcgZmxhc2ggKi8KIAlnZXRfc3lzX2luZm8oJnN5c2luZm8pOwogCS8qIGlmIGxvY2FsYnVzIGZyZXEgaXMgbGVzcyB0aGFuIDY2TUh6LHdlIHVzZSBieXBhc3MgbW9kZSxvdGhlcndpc2UgdXNlIERMTCAqLwotCWlmKHN5c2luZm8uZnJlcVN5c3RlbUJ1cy8oQ09ORklHX1NZU19MQkNfTENSUiAmIDB4MGYpIDwgNjYwMDAwMDApIHsKKwlpZihzeXNpbmZvLmZyZXFTeXN0ZW1CdXMvKENPTkZJR19TWVNfTEJDX0xDUlIgJiBMQ1JSX0NMS0RJVikgPCA2NjAwMDAwMCkgewogCQlsYmMtPmxjcnIgPSAoQ09ORklHX1NZU19MQkNfTENSUiAmIDB4MGZmZmZmZmYpfCAweDgwMDAwMDAwOwogCX0gZWxzZSB7CiAJCWxiYy0+bGNyciA9IENPTkZJR19TWVNfTEJDX0xDUlIgJiAweDdmZmZmZmZmOwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXByMi9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9tcHIyL2xvd2xldmVsX2luaXQuUwppbmRleCAwNjA5NTdhLi41ZjAyYmQ0IDEwMDY0NAotLS0gYS9ib2FyZC9tcHIyL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9tcHIyL2xvd2xldmVsX2luaXQuUwpAQCAtMjIsNiArMjIsNyBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KKyNpbmNsdWRlIDxhc20vbWFjcm8uaD4KIAogCS5nbG9iYWwJbG93bGV2ZWxfaW5pdAogCkBAIC0zMyw1OSArMzQsMzUgQEAKIC8qCiAgKiBTZXQgZnJlcXVlbmN5IG11bHRpcGxpZXJzIGFuZCBkaXZpZGVycyBpbiBGUlFDUi4KICAqLwotCW1vdi5sCVdUQ1NSX0EscjEKLQltb3YubAlXVENTUl9ELHIwCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglXVENTUl9BLCBXVENTUl9ECiAKLQltb3YubAlXVENOVF9BLHIxCi0JbW92LmwJV1RDTlRfRCxyMAotCW1vdi53CXIwLEByMQorCXdyaXRlMTYJV1RDTlRfQSwgV1RDTlRfRAogCi0JbW92LmwJRlJRQ1JfQSxyMQotCW1vdi5sCUZSUUNSX0QscjAKLQltb3YudwlyMCxAcjEKKwl3cml0ZTE2CUZSUUNSX0EsIEZSUUNSX0QKIAogLyoKICAqIFNldHVwIENTMCAoRmxhc2gpLgogICovCi0JbW92LmwJQ1MwQkNSX0EsIHIxCi0JbW92LmwJQ1MwQkNSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1MwQkNSX0EsIENTMEJDUl9ECiAKLQltb3YubAlDUzBXQ1JfQSwgcjEKLQltb3YubAlDUzBXQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzBXQ1JfQSwgQ1MwV0NSX0QKIAogLyoKICAqIFNldHVwIENTMyAoU0RSQU0pLgogICovCi0JbW92LmwJQ1MzQkNSX0EsIHIxCi0JbW92LmwJQ1MzQkNSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1MzQkNSX0EsIENTM0JDUl9ECiAKLQltb3YubAlDUzNXQ1JfQSwgcjEKLQltb3YubAlDUzNXQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzNXQ1JfQSwgQ1MzV0NSX0QKIAotCW1vdi5sCVNEQ1JfQSwgcjEKLQltb3YubAlTRENSX0QxLCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVNEQ1JfQSwgU0RDUl9EMQogCi0JbW92LmwJUlRDU1JfQSwgcjEKLQltb3YubAlSVENTUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVJUQ1NSX0EsIFJUQ1NSX0QKIAotCW1vdi5sCVJUQ05UX0EsIHIxCi0JbW92LmwJUlRDTlRfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglSVENOVF9BLCBSVENOVF9ECiAKLQltb3YubAlSVENPUl9BLCByMQotCW1vdi5sCVJUQ09SX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJUlRDT1JfQSwgUlRDT1JfRAogCi0JbW92LmwJU0RDUl9BLCByMQotCW1vdi5sCVNEQ1JfRDIsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJU0RDUl9BLCBTRENSX0QyCiAKIAltb3YubAlTRE1SM19BLCByMQogCW1vdi5sCVNETVIzX0QsIHIwCkBAIC0xMTIsMjEgKzg5LDI3IEBACiAvKgogICogU3BhbnNpb24gUzI5R0wyNTZOMTEgQCA0OCBNSHoKICAqLwotQ1MwQkNSX0Q6CS5sb25nCTB4MTI0OTA0MDAgIC8qIDEgaWRsZSBjeWNsZSBpbnNlcnRlZCwgbm9ybWFsIHNwYWNlLCAxNiBiaXQgKi8KLUNTMFdDUl9EOgkubG9uZwkweDAwMDAwMzQwICAvKiB0U1c9MC41Y2ssIDYgd2FpdCBjeWNsZXMsIE5PIGV4dGVybmFsIHdhaXQsIHRIVz0wLjVjayAqLworLyogMSBpZGxlIGN5Y2xlIGluc2VydGVkLCBub3JtYWwgc3BhY2UsIDE2IGJpdCAqLworQ1MwQkNSX0Q6CS5sb25nCTB4MTI0OTA0MDAKKy8qIHRTVz0wLjVjaywgNiB3YWl0IGN5Y2xlcywgTk8gZXh0ZXJuYWwgd2FpdCwgdEhXPTAuNWNrICovCitDUzBXQ1JfRDoJLmxvbmcJMHgwMDAwMDM0MAogCiAvKgogICogU2Ftc3VuZyBLNFM1MTE2MzJCLVVMNzUgQCA0OCBNSHoKICAqIE1pY3JvbiBNVDQ4TEMzMk0xNkEyLTc1IEAgNDggTUh6CiAgKi8KLUNTM0JDUl9EOgkubG9uZwkweDEwMDA0NDAwICAvKiBDUzNCQ1IgPSAweDEwMDA0NDAwLCBtaW5pbXVtIGlkbGUgY3ljbGVzLCBTRFJBTSwgMTYgYml0ICovCi1DUzNXQ1JfRDoJLmxvbmcJMHgwMDAwMDA5MSAgLyogdFJQPTFjaywgdFJDRD0xY2ssIENMPTIsIHRSV0w9MmNrLCB0UkM9NGNrICovCi1TRENSX0QxOgkubG9uZwkweDAwMDAwMDEyICAvKiBubyByZWZyZXNoLCAxMyByb3dzLCAxMCBjb2xzLCBOTyBiYW5rIGFjdGl2ZSBtb2RlICovCi1TRENSX0QyOgkubG9uZwkweDAwMDAwODEyICAvKiByZWZyZXNoICovCi1SVENTUl9EOgkubG9uZwkweEE1NUEwMDA4ICAvKiAxLzQsIG9uY2UgKi8KLVJUQ05UX0Q6CS5sb25nCTB4QTU1QTAwNUQgIC8qIGNvdW50IDkzICovCi1SVENPUl9EOgkubG9uZwkweGE1NWEwMDVkICAvKiBjb3VudCA5MyAqLwotU0RNUjNfRDoJLmxvbmcJMHg0NDAgICAgICAgLyogbW9kZSByZWdpc3RlciBDTDIsIGJ1cnN0IHJlYWQgYW5kIFNJTkdMRSBXUklURSAqLworLyogQ1MzQkNSID0gMHgxMDAwNDQwMCwgbWluaW11bSBpZGxlIGN5Y2xlcywgU0RSQU0sIDE2IGJpdCAqLworQ1MzQkNSX0Q6CS5sb25nCTB4MTAwMDQ0MDAKKy8qIHRSUD0xY2ssIHRSQ0Q9MWNrLCBDTD0yLCB0UldMPTJjaywgdFJDPTRjayAqLworQ1MzV0NSX0Q6CS5sb25nCTB4MDAwMDAwOTEKKy8qIG5vIHJlZnJlc2gsIDEzIHJvd3MsIDEwIGNvbHMsIE5PIGJhbmsgYWN0aXZlIG1vZGUgKi8KK1NEQ1JfRDE6CS5sb25nCTB4MDAwMDAwMTIKK1NEQ1JfRDI6CS5sb25nCTB4MDAwMDA4MTIJLyogcmVmcmVzaCAqLworUlRDU1JfRDoJLmxvbmcJMHhBNTVBMDAwOAkvKiAxLzQsIG9uY2UgKi8KK1JUQ05UX0Q6CS5sb25nCTB4QTU1QTAwNUQJLyogY291bnQgOTMgKi8KK1JUQ09SX0Q6CS5sb25nCTB4YTU1YTAwNWQJLyogY291bnQgOTMgKi8KKy8qIG1vZGUgcmVnaXN0ZXIgQ0wyLCBidXJzdCByZWFkIGFuZCBTSU5HTEUgV1JJVEUgKi8KK1NETVIzX0Q6CS5sb25nCTB4NDQwCiAKIC8qCiAgKiBSZWdpc3RlcnMKZGlmZiAtLWdpdCBhL2JvYXJkL21zNzcyMnNlL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL21zNzcyMnNlL2xvd2xldmVsX2luaXQuUwppbmRleCA4YjQ2NTk1Li4xY2I1N2U3IDEwMDY0NAotLS0gYS9ib2FyZC9tczc3MjJzZS9sb3dsZXZlbF9pbml0LlMKKysrIGIvYm9hcmQvbXM3NzIyc2UvbG93bGV2ZWxfaW5pdC5TCkBAIC0yNywxMyArMjcsMTQgQEAKICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL21hY3JvLmg+CiAKIC8qCi0gKiAgQm9hcmQgc3BlY2lmaWMgbG93IGxldmVsIGluaXQgY29kZSwgY2FsbGVkIF92ZXJ5XyBlYXJseSBpbiB0aGUKLSAqICBzdGFydHVwIHNlcXVlbmNlLiBSZWxvY2F0aW9uIHRvIFNEUkFNIGhhcyBub3QgaGFwcGVuZWQgeWV0LCBubwotICogIHN0YWNrIGlzIGF2YWlsYWJsZSwgYnNzIHNlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpc2VkLCBldGMuCisgKiBCb2FyZCBzcGVjaWZpYyBsb3cgbGV2ZWwgaW5pdCBjb2RlLCBjYWxsZWQgX3ZlcnlfIGVhcmx5IGluIHRoZQorICogc3RhcnR1cCBzZXF1ZW5jZS4gUmVsb2NhdGlvbiB0byBTRFJBTSBoYXMgbm90IGhhcHBlbmVkIHlldCwgbm8KKyAqIHN0YWNrIGlzIGF2YWlsYWJsZSwgYnNzIHNlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpc2VkLCBldGMuCiAgKgotICogIChOb3RlOiBBcyBubyBzdGFjayBpcyBhdmFpbGFibGUsIG5vIHN1YnJvdXRpbmVzIGNhbiBiZSBjYWxsZWQuLi4pLgorICogKE5vdGU6IEFzIG5vIHN0YWNrIGlzIGF2YWlsYWJsZSwgbm8gc3Vicm91dGluZXMgY2FuIGJlIGNhbGxlZC4uLikuCiAgKi8KIAogCS5nbG9iYWwJbG93bGV2ZWxfaW5pdApAQCAtNDMsMTY3ICs0NCw5NiBAQAogCiBsb3dsZXZlbF9pbml0OgogCi0JLyogQWRkcmVzcyBvZiBDYWNoZSBDb250cm9sIFJlZ2lzdGVyICovCi0JbW92LmwJQ0NSX0EsIHIxCi0JLypJbnN0cnVjdGlvbiBDYWNoZSBJbnZhbGlkYXRlICovCi0JbW92LmwJQ0NSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCS8qCisJICogQ2FjaGUgQ29udHJvbCBSZWdpc3RlcgorCSAqIEluc3RydWN0aW9uIENhY2hlIEludmFsaWRhdGUKKwkgKi8KKwl3cml0ZTMyCUNDUl9BLCBDQ1JfRAogCi0JLyogQWRkcmVzcyBvZiBNTVUgQ29udHJvbCBSZWdpc3RlciAqLwotCW1vdi5sCU1NVUNSX0EsIHIxCi0JLyogVEkgPT0gVExCIEludmFsaWRhdGUgYml0ICovCi0JbW92LmwJTU1VQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJLyoKKwkgKiBBZGRyZXNzIG9mIE1NVSBDb250cm9sIFJlZ2lzdGVyCisJICogVEkgPT0gVExCIEludmFsaWRhdGUgYml0CisJICovCisJd3JpdGUzMglNTVVDUl9BLCBNTVVDUl9ECiAKIAkvKiBBZGRyZXNzIG9mIFBvd2VyIENvbnRyb2wgUmVnaXN0ZXIgMCAqLwotCW1vdi5sCU1TVFBDUjBfQSwgcjEKLQltb3YubAlNU1RQQ1IwX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJTVNUUENSMF9BLCBNU1RQQ1IwX0QKIAogCS8qIEFkZHJlc3Mgb2YgUG93ZXIgQ29udHJvbCBSZWdpc3RlciAyICovCi0JbW92LmwJTVNUUENSMl9BLCByMQotCW1vdi5sCU1TVFBDUjJfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglNU1RQQ1IyX0EsIE1TVFBDUjJfRAogCi0JbW92LmwJU0JTQ1JfQSwgcjEKLQltb3YudwlTQlNDUl9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVNCU0NSX0EsIFNCU0NSX0QKIAotCW1vdi5sCVBTQ1JfQSwgcjEKLQltb3YudwlQU0NSX0QsIHIwCi0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJUFNDUl9BLCBQU0NSX0QKIAogCS8qIDB4QTQ1MjAwMDQgKFdhdGNoZG9nIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIpICovCi0hCW1vdi5sCVJXVENTUl9BLCByMQotCS8qIDB4QTUwNyAtPiB0aW1lcl9TVE9QL1dEVF9DTEs9bWF4ICovCi0hCW1vdi53CVJXVENTUl9EXzEsIHIwCi0hCW1vdi53CXIwLCBAcjEKKyEJd3JpdGUxNglSV1RDU1JfQSwgUldUQ1NSX0RfMQkvKiAweEE1MDcgLT4gdGltZXJfU1RPUC9XRFRfQ0xLPW1heCAqLwogCiAJLyogMHhBNDUyMDAwMCAoV2F0Y2hkb2cgQ291bnQgUmVnaXN0ZXIpICovCi0JbW92LmwJUldUQ05UX0EsIHIxCi0JLyoweDVBMDAgLT4gQ2xlYXIgKi8KLQltb3YudwlSV1RDTlRfRCwgcjAKLQltb3YudwlyMCwgQHIxCisJd3JpdGUxNglSV1RDTlRfQSwgUldUQ05UX0QJLyoweDVBMDAgLT4gQ2xlYXIgKi8KIAogCS8qIDB4QTQ1MjAwMDQgKFdhdGNoZG9nIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIpICovCi0JbW92LmwJUldUQ1NSX0EsIHIxCi0JLyogMHhBNTA0IC0+IHRpbWVyX1NUT1AvQ0xLPTUwMG1zICovCi0JbW92LncJUldUQ1NSX0RfMiwgcjAKLQltb3YudwlyMCwgQHIxCisJd3JpdGUxNglSV1RDU1JfQSwgUldUQ1NSX0RfMgkvKiAweEE1MDQgLT4gdGltZXJfU1RPUC9DTEs9NTAwbXMgKi8KIAogCS8qIDB4QTQxNTAwMDAgRnJlcXVlbmN5IGNvbnRyb2wgcmVnaXN0ZXIgKi8KLQltb3YubAlGUlFDUl9BLCByMQotCW1vdi5sCUZSUUNSX0QsIHIwCSEKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglGUlFDUl9BLCBGUlFDUl9ECiAKLQltb3YubAlDQ1JfQSwgcjEKLQltb3YubAlDQ1JfRF8yLCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNDUl9BLCBDQ1JfRF8yCiAKIGJzY19pbml0OgogCi0JbW92LmwJUFNFTEFfQSwgcjEKLQltb3YudwlQU0VMQV9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVBTRUxBX0EsIFBTRUxBX0QKIAotCW1vdi5sCURSVkNSX0EsIHIxCi0JbW92LncJRFJWQ1JfRCwgcjAKLQltb3YudwlyMCwgQHIxCisJd3JpdGUxNglEUlZDUl9BLCBEUlZDUl9ECiAKLQltb3YubAlQQ0NSX0EsIHIxCi0JbW92LncJUENDUl9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVBDQ1JfQSwgUENDUl9ECiAKLQltb3YubAlQRUNSX0EsIHIxCi0JbW92LncJUEVDUl9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVBFQ1JfQSwgUEVDUl9ECiAKLQltb3YubAlQSkNSX0EsIHIxCi0JbW92LncJUEpDUl9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVBKQ1JfQSwgUEpDUl9ECiAKLQltb3YubAlQWENSX0EsIHIxCi0JbW92LncJUFhDUl9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVBYQ1JfQSwgUFhDUl9ECiAKLQltb3YubAlDTU5DUl9BLCByMQkhIENNTkNSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlDTU5DUl9ELCByMAkhIENNTkNSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENNTkNSIHNldAorCXdyaXRlMzIJQ01OQ1JfQSwgQ01OQ1JfRAogCi0JbW92LmwJQ1MwQkNSX0EsIHIxCSEgQ1MwQkNSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlDUzBCQ1JfRCwgcjAJISBDUzBCQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgQ1MwQkNSIHNldAorCXdyaXRlMzIJQ1MwQkNSX0EsIENTMEJDUl9ECiAKLQltb3YubAlDUzJCQ1JfQSwgcjEJISBDUzJCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTMkJDUl9ELCByMAkhIENTMkJDUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBDUzJCQ1Igc2V0CisJd3JpdGUzMglDUzJCQ1JfQSwgQ1MyQkNSX0QKIAotCW1vdi5sCUNTNEJDUl9BLCByMQkhIENTNEJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1M0QkNSX0QsIHIwCSEgQ1M0QkNSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNEJDUiBzZXQKKwl3cml0ZTMyCUNTNEJDUl9BLCBDUzRCQ1JfRAogCi0JbW92LmwJQ1M1QUJDUl9BLCByMQkhIENTNUFCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNUFCQ1JfRCwgcjAJISBDUzVBQkNSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNUFCQ1Igc2V0CisJd3JpdGUzMglDUzVBQkNSX0EsIENTNUFCQ1JfRAogCi0JbW92LmwJQ1M1QkJDUl9BLCByMQkhIENTNUJCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNUJCQ1JfRCwgcjAJISBDUzVCQkNSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNUJCQ1Igc2V0CisJd3JpdGUzMglDUzVCQkNSX0EsIENTNUJCQ1JfRAogCi0JbW92LmwJQ1M2QUJDUl9BLCByMQkhIENTNkFCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNkFCQ1JfRCwgcjAJISBDUzZBQkNSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNkFCQ1Igc2V0CisJd3JpdGUzMglDUzZBQkNSX0EsIENTNkFCQ1JfRAogCi0JbW92LmwJQ1MwV0NSX0EsIHIxCSEgQ1MwV0NSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlDUzBXQ1JfRCwgcjAJISBDUzBXQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgQ1MwV0NSIHNldAorCXdyaXRlMzIJQ1MwV0NSX0EsIENTMFdDUl9ECiAKLQltb3YubAlDUzJXQ1JfQSwgcjEJISBDUzJXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTMldDUl9ELCByMAkhIENTMldDUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBDUzJXQ1Igc2V0CisJd3JpdGUzMglDUzJXQ1JfQSwgQ1MyV0NSX0QKIAotCW1vdi5sCUNTNFdDUl9BLCByMQkhIENTNFdDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1M0V0NSX0QsIHIwCSEgQ1M0V0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNFdDUiBzZXQKKwl3cml0ZTMyCUNTNFdDUl9BLCBDUzRXQ1JfRAogCi0JbW92LmwJQ1M1QVdDUl9BLCByMQkhIENTNUFXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNUFXQ1JfRCwgcjAJISBDUzVBV0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNUFXQ1Igc2V0CisJd3JpdGUzMglDUzVBV0NSX0EsIENTNUFXQ1JfRAogCi0JbW92LmwJQ1M1QldDUl9BLCByMQkhIENTNUJXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNUJXQ1JfRCwgcjAJISBDUzVCV0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNUJXQ1Igc2V0CisJd3JpdGUzMglDUzVCV0NSX0EsIENTNUJXQ1JfRAogCi0JbW92LmwJQ1M2QVdDUl9BLCByMQkhIENTNkFXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNkFXQ1JfRCwgcjAJISBDUzZBV0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNkFXQ1Igc2V0CisJd3JpdGUzMglDUzZBV0NSX0EsIENTNkFXQ1JfRAogCiAJISBTRFJBTSBpbml0aWFsaXphdGlvbgotCW1vdi5sCVNEQ1JfQSwgcjEJISBTQl9TRENSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlTRENSX0QsIHIwCSEgU0JfU0RDUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBTQl9TRENSIHNldAorCXdyaXRlMzIJU0RDUl9BLCBTRENSX0QKIAotCW1vdi5sCVNEV0NSX0EsIHIxCSEgU0JfU0RXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCVNEV0NSX0QsIHIwCSEgU0JfU0RXQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgU0JfU0RXQ1Igc2V0CisJd3JpdGUzMglTRFdDUl9BLCBTRFdDUl9ECiAKLQltb3YubAlTRFBDUl9BLCByMQkhIFNCX1NEUENSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlTRFBDUl9ELCByMAkhIFNCX1NEUENSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIFNCX1NEUENSIHNldAorCXdyaXRlMzIJU0RQQ1JfQSwgU0RQQ1JfRAogCi0JbW92LmwJUlRDT1JfQSwgcjEJISBTQl9SVENPUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJUlRDT1JfRCwgcjAJISBTQl9SVENPUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBTQl9SVENPUiBzZXQKKwl3cml0ZTMyCVJUQ09SX0EsIFJUQ09SX0QKIAotCW1vdi5sCVJUQ1NSX0EsIHIxCSEgU0JfUlRDU1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCVJUQ1NSX0QsIHIwCSEgU0JfUlRDU1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgU0JfUlRDU1Igc2V0CisJd3JpdGUzMglSVENTUl9BLCBSVENTUl9ECiAKLQltb3YubAlTRE1SM19BLCByMQkhIFNETVIzIGFkZHJlc3MgLT4gUjEKLQltb3YJIzB4MDAsIHIwCSEgU0RNUjMgZGF0YSAgICAtPiBSMAotCW1vdi5iCXIwLCBAcjEJCSEgU0RNUjMgc2V0CisJd3JpdGU4CVNETVIzX0EsIFNETVIzX0QKIAotCSEgQkwgYml0IG9mZiAoaW5pdCA9IE9OKSAgKD8hPykKKwkhIEJMIGJpdCBvZmYgKGluaXQgPSBPTikgKD8hPykKIAogCXN0YwlzciwgcjAJCQkJISBCTCBiaXQgb2ZmKGluaXQ9T04pCiAJbW92LmwJU1JfTUFTS19ELCByMQpAQCAtMjMyLDI4ICsxNjIsMjggQEAKIE1TVFBDUjJfRDoJLmxvbmcJMHhmZmZmZmZmZgogRlJRQ1JfRDoJLmxvbmcJMHgwNzAyMjUzOAogCi1QU0VMQV9BOgkubG9uZyAgIDB4YTQwNTAxNEUKLVBTRUxBX0Q6CS53b3JkICAgMHgwQTEwCitQU0VMQV9BOgkubG9uZwkweGE0MDUwMTRFCitQU0VMQV9EOgkud29yZAkweDBBMTAKIAkuYWxpZ24gMgogCi1EUlZDUl9BOgkubG9uZyAgIDB4YTQwNTAxOEEKLURSVkNSX0Q6CS53b3JkICAgMHgwNTU0CitEUlZDUl9BOgkubG9uZwkweGE0MDUwMThBCitEUlZDUl9EOgkud29yZAkweDA1NTQKIAkuYWxpZ24gMgogCi1QQ0NSX0E6CQkubG9uZyAgIDB4YTQwNTAxMDQKLVBDQ1JfRDoJCS53b3JkICAgMHg4ODAwCitQQ0NSX0E6CQkubG9uZwkweGE0MDUwMTA0CitQQ0NSX0Q6CQkud29yZAkweDg4MDAKIAkuYWxpZ24gMgogCi1QRUNSX0E6CQkubG9uZyAgIDB4YTQwNTAxMDgKLVBFQ1JfRDoJCS53b3JkICAgMHgwMDAwCitQRUNSX0E6CQkubG9uZwkweGE0MDUwMTA4CitQRUNSX0Q6CQkud29yZAkweDAwMDAKIAkuYWxpZ24gMgogCi1QSkNSX0E6CQkubG9uZyAgIDB4YTQwNTAxMTAKLVBKQ1JfRDoJCS53b3JkICAgMHgxMDAwCitQSkNSX0E6CQkubG9uZwkweGE0MDUwMTEwCitQSkNSX0Q6CQkud29yZAkweDEwMDAKIAkuYWxpZ24gMgogCi1QWENSX0E6CQkubG9uZyAgIDB4YTQwNTAxNDgKLVBYQ1JfRDoJCS53b3JkICAgMHgwQUFBCitQWENSX0E6CQkubG9uZwkweGE0MDUwMTQ4CitQWENSX0Q6CQkud29yZAkweDBBQUEKIAkuYWxpZ24gMgogCiBDTU5DUl9BOgkubG9uZwlDTU5DUgpAQCAtMjk1LDYgKzIyNSw3IEBACiBSVENTUl9BOgkubG9uZwlTQlNDX1JUQ1NSCiBSVENTUl9EOgkubG9uZwkweEE1NUEwMDEwCiBTRE1SM19BOgkubG9uZwkweEZFNTAwMTgwCitTRE1SM19EOgkubG9uZwkweDAKIAogCS5hbGlnbgkxCiAKZGlmZiAtLWdpdCBhL2JvYXJkL21zNzc1MHNlL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL21zNzc1MHNlL2xvd2xldmVsX2luaXQuUwppbmRleCBkM2UzY2Q1Li41ZTA5YTM5IDEwMDY0NAotLS0gYS9ib2FyZC9tczc3NTBzZS9sb3dsZXZlbF9pbml0LlMKKysrIGIvYm9hcmQvbXM3NzUwc2UvbG93bGV2ZWxfaW5pdC5TCkBAIC0yOSwxMjAgKzI5LDk0IEBACiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9tYWNyby5oPgogCiAjaWZkZWYgQ09ORklHX0NQVV9TSDc3NTEKLSNkZWZpbmUgQkNSMl9EX1ZBTFVFCTB4MkZGQwkgICAvKiBBcmVhIDEtNiB3aWR0aDogMzIvMzIvMzIvMzIvMzIvMTYgKi8KLSNkZWZpbmUgV0NSMV9EX1ZBTFVFICAgIDB4MDI3NzA3NzEgLyogRE1BOjAgQTY6MiBBMzowIEEwOjEgT3RoZXJzOjE1ICovCisjZGVmaW5lIEJDUjJfRF9WQUxVRQkweDJGRkMJCS8qIEFyZWEgMS02IHdpZHRoOiAzMi8zMi8zMi8zMi8zMi8xNiAqLworI2RlZmluZSBXQ1IxX0RfVkFMVUUJMHgwMjc3MDc3MQkvKiBETUE6MCBBNjoyIEEzOjAgQTA6MSBPdGhlcnM6MTUgKi8KICNpZmRlZiBDT05GSUdfTUFSVUJVTl9QQ0NBUkQKLSNkZWZpbmUgV0NSMl9EX1ZBTFVFICAgIDB4RkZGRTRGRTcgLyogQTY6MTUgQTZCOjcgQTU6MTUgQTVCOjcgQTQ6MTUKLQkJCQkgICAgICBBMzoyICBBMjoxNSBBMToxNSBBMDo2ICBBMEI6NyAgKi8KKyNkZWZpbmUgV0NSMl9EX1ZBTFVFCTB4RkZGRTRGRTcJLyogQTY6MTUgQTZCOjcgQTU6MTUgQTVCOjcgQTQ6MTUKKwkJCQkJICAgQTM6MiAgQTI6MTUgQTE6MTUgQTA6NiAgQTBCOjcgICovCiAjZWxzZSAvKiBDT05GSUdfTUFSVUJVTl9QQ0NBUkQgKi8KLSNkZWZpbmUgV0NSMl9EX1ZBTFVFICAgIDB4N0ZGRTRGRTcgLyogQTY6MyAgQTZCOjcgQTU6MTUgQTVCOjcgQTQ6MTUKLQkJCQkgICAgICBBMzoyICBBMjoxNSBBMToxNSBBMDo2ICBBMEI6NyAgKi8KKyNkZWZpbmUgV0NSMl9EX1ZBTFVFCTB4N0ZGRTRGRTcJLyogQTY6MyAgQTZCOjcgQTU6MTUgQTVCOjcgQTQ6MTUKKwkJCQkJICAgQTM6MiAgQTI6MTUgQTE6MTUgQTA6NiAgQTBCOjcgICovCiAjZW5kaWYgLyogQ09ORklHX01BUlVCVU5fUENDQVJEICovCi0jZGVmaW5lIFdDUjNfRF9WQUxVRQkweDAxNzc3NzcxIC8qIEE2OiAwLTEgQTU6IDEtMyBBNDogMS0zIEEzOiAxLTMKLQkJCQkgICAgICBBMjogMS0zIEExOiAxLTMgQTA6IDAtMSAqLwotI2RlZmluZSBSVENPUl9EX1ZBTFVFCTB4QTUwRAkgICAvKiBXcml0ZSBjb2RlIEE1LCBkYXRhIDBEICh+MTV1cz8pICovCi0jZGVmaW5lIFNETVIzX0FERFJFU1MJMHhGRjk0MDA4OCAvKiBTRE1SMyBhZGRyZXNzIG9uIDMyLWJpdCBidXMgKi8KLSNkZWZpbmUgTUNSX0QxX1ZBTFVFCTB4MTAwOTAxQjQgLyogU0RSQU0gMzItYml0LCBDQVMvUkFTIFJlZnJlc2gsIC4uLiAqLwotI2RlZmluZSBNQ1JfRDJfVkFMVUUJMHg1MDA5MDFCNCAvKiBTYW1lIHcvTVJTRVQgbm93IDEgKG1vZGUgcmVnIGNtZCkgKi8KKyNkZWZpbmUgV0NSM19EX1ZBTFVFCTB4MDE3Nzc3NzEJLyogQTY6IDAtMSBBNTogMS0zIEE0OiAxLTMgQTM6IDEtMworCQkJCQkgICBBMjogMS0zIEExOiAxLTMgQTA6IDAtMSAqLworI2RlZmluZSBSVENPUl9EX1ZBTFVFCTB4QTUwRAkJLyogV3JpdGUgY29kZSBBNSwgZGF0YSAwRCAofjE1dXM/KSAqLworI2RlZmluZSBTRE1SM19BRERSRVNTCTB4RkY5NDAwODgJLyogU0RNUjMgYWRkcmVzcyBvbiAzMi1iaXQgYnVzICovCisjZGVmaW5lIE1DUl9EMV9WQUxVRQkweDEwMDkwMUI0CS8qIFNEUkFNIDMyLWJpdCwgQ0FTL1JBUyBSZWZyZXNoLCAuLiAqLworI2RlZmluZSBNQ1JfRDJfVkFMVUUJMHg1MDA5MDFCNAkvKiBTYW1lIHcvTVJTRVQgbm93IDEgKG1vZGUgcmVnIGNtZCkgKi8KICNlbHNlIC8qIENPTkZJR19DUFVfU0g3NzUxICovCi0jZGVmaW5lIEJDUjJfRF9WQUxVRQkweDJFM0MJICAgLyogQXJlYSAxLTYgd2lkdGg6IDMyLzMyLzY0LzE2LzMyLzE2ICovCi0jZGVmaW5lIFdDUjFfRF9WQUxVRQkweDAyNzIwNzc3IC8qIERNQTowIEE2OjIgQTQ6MiBBMzowIE90aGVyczoxNSAqLwotI2RlZmluZSBXQ1IyX0RfVkFMVUUJMHhGRkZFNEZGRiAvKiBBNjoxNSBBNkI6NyBBNToxNSBBNUI6NyBBNDoxNQotCQkJCSAgICAgIEEzOjIgIEEyOjE1IEExOjE1IEEwOjE1IEEwQjo3ICAqLwotI2RlZmluZSBXQ1IzX0RfVkFMVUUJMHgwMTcxNzc3MSAvKiBBNjogMC0xIEE1OiAxLTMgQTQ6IDAtMSBBMzogMS0zCi0JCQkJICAgICAgQTI6IDEtMyBBMTogMS0zIEEwOiAwLTEgKi8KLSNkZWZpbmUgUlRDT1JfRF9WQUxVRQkweEE1MTAJICAgLyogV3JpdGUgY29kZSBBNSwgZGF0YSAxMCAofjE1dXM/KSAqLwotI2RlZmluZSBTRE1SM19BRERSRVNTCTB4RkY5NDAxMTAgLyogU0RNUjMgYWRkcmVzcyBvbiA2NC1iaXQgYnVzICovCi0jZGVmaW5lIE1DUl9EMV9WQUxVRQkweDg4MDEwMDFDIC8qIFNEUkFNIDY0LWJpdCwgQ0FTL1JBUyBSZWZyZXNoLCAuLi4gKi8KLSNkZWZpbmUgTUNSX0QyX1ZBTFVFCTB4QzgwMTAwMUMgLyogU2FtZSB3L01SU0VUIG5vdyAxIChtb2RlIHJlZyBjbWQpICovCisjZGVmaW5lIEJDUjJfRF9WQUxVRQkweDJFM0MJCS8qIEFyZWEgMS02IHdpZHRoOiAzMi8zMi82NC8xNi8zMi8xNiAqLworI2RlZmluZSBXQ1IxX0RfVkFMVUUJMHgwMjcyMDc3NwkvKiBETUE6MCBBNjoyIEE0OjIgQTM6MCBPdGhlcnM6MTUgKi8KKyNkZWZpbmUgV0NSMl9EX1ZBTFVFCTB4RkZGRTRGRkYJLyogQTY6MTUgQTZCOjcgQTU6MTUgQTVCOjcgQTQ6MTUKKwkJCQkJICAgQTM6MiAgQTI6MTUgQTE6MTUgQTA6MTUgQTBCOjcgICovCisjZGVmaW5lIFdDUjNfRF9WQUxVRQkweDAxNzE3NzcxCS8qIEE2OiAwLTEgQTU6IDEtMyBBNDogMC0xIEEzOiAxLTMKKwkJCQkJICAgQTI6IDEtMyBBMTogMS0zIEEwOiAwLTEgKi8KKyNkZWZpbmUgUlRDT1JfRF9WQUxVRQkweEE1MTAJCS8qIFdyaXRlIGNvZGUgQTUsIGRhdGEgMTAgKH4xNXVzPykgKi8KKyNkZWZpbmUgU0RNUjNfQUREUkVTUwkweEZGOTQwMTEwCS8qIFNETVIzIGFkZHJlc3Mgb24gNjQtYml0IGJ1cyAqLworI2RlZmluZSBNQ1JfRDFfVkFMVUUJMHg4ODAxMDAxQwkvKiBTRFJBTSA2NC1iaXQsIENBUy9SQVMgUmVmcmVzaCwgLi4gKi8KKyNkZWZpbmUgTUNSX0QyX1ZBTFVFCTB4QzgwMTAwMUMJLyogU2FtZSB3L01SU0VUIG5vdyAxIChtb2RlIHJlZyBjbWQpICovCiAjZW5kaWYgLyogQ09ORklHX0NQVV9TSDc3NTEgKi8KIAogCS5nbG9iYWwgbG93bGV2ZWxfaW5pdAogCS50ZXh0Ci0JLmFsaWduICAyCisJLmFsaWduCTIKIAogbG93bGV2ZWxfaW5pdDoKIAotCW1vdi5sICAgQ0NSX0EsIHIxICAgICAgICAgICAgICAgISBDQ1IgQWRkcmVzcwotCW1vdi5sICAgQ0NSX0RfRElTQUJMRSwgcjAgICAgICAgISBDQ1IgRGF0YQotCW1vdi5sICAgcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9EX0RJU0FCTEUKIAogaW5pdF9ic2M6Ci0JbW92LmwJRlJRQ1JfQSxyMQkvKiBGUlFDUiBBZGRyZXNzICovCi0JbW92LmwJRlJRQ1JfRCxyMAkvKiBGUlFDUiBEYXRhICovCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglGUlFDUl9BLCBGUlFDUl9ECiAKLQltb3YubAlCQ1IxX0EscjEJLyogQkNSMSBBZGRyZXNzICovCi0JbW92LmwJQkNSMV9ELHIwCS8qIEJDUjEgRGF0YSAqLwotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQkNSMV9BLCBCQ1IxX0QKIAotCW1vdi5sCUJDUjJfQSxyMQkvKiBCQ1IyIEFkZHJlc3MgKi8KLQltb3YubAlCQ1IyX0QscjAJLyogQkNSMiBEYXRhICovCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglCQ1IyX0EsIEJDUjJfRAogCi0JbW92LmwJV0NSMV9BLHIxCS8qIFdDUjEgQWRkcmVzcyAqLwotCW1vdi5sCVdDUjFfRCxyMAkvKiBXQ1IxIERhdGEgKi8KLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCVdDUjFfQSwgV0NSMV9ECiAKLQltb3YubAlXQ1IyX0EscjEJLyogV0NSMiBBZGRyZXNzICovCi0JbW92LmwJV0NSMl9ELHIwCS8qIFdDUjIgRGF0YSAqLwotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJV0NSMl9BLCBXQ1IyX0QKIAotCW1vdi5sCVdDUjNfQSxyMQkvKiBXQ1IzIEFkZHJlc3MgKi8KLQltb3YubAlXQ1IzX0QscjAJLyogV0NSMyBEYXRhICovCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglXQ1IzX0EsIFdDUjNfRAogCi0JbW92LmwJTUNSX0EscjEJLyogTUNSIEFkZHJlc3MgKi8KLQltb3YubAlNQ1JfRDEscjAJLyogTUNSIERhdGExICovCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglNQ1JfQSwgTUNSX0QxCiAKLQltb3YubAlTRE1SM19BLHIxCS8qIFNldCBTRFJBTSBtb2RlICovCi0JbW92CSMwLHIwCi0JbW92LmIJcjAsQHIxCisJLyogU2V0IFNEUkFNIG1vZGUgKi8KKwl3cml0ZTgJU0RNUjNfQSwgU0RNUjNfRAogCiAJISBEbyB5b3UgbmVlZCBQQ01DSUEgc2V0dGluZz8KIAkhIElmIHNvLCBwbGVhc2UgYWRkIHRoZSBsaW5lcyBoZXJlLi4uCiAKLQltb3YubAlSVENOVF9BLHIxCS8qIFJUQ05UIEFkZHJlc3MgKi8KLQltb3YubAlSVENOVF9ELHIwCS8qIFJUQ05UIERhdGEgKi8KLQltb3YudwlyMCxAcjEKKwl3cml0ZTE2CVJUQ05UX0EsIFJUQ05UX0QKIAotCW1vdi5sCVJUQ09SX0EscjEJLyogUlRDT1IgQWRkcmVzcyAqLwotCW1vdi5sCVJUQ09SX0QscjAJLyogUlRDT1IgRGF0YSAqLwotCW1vdi53CXIwLEByMQorCXdyaXRlMTYJUlRDT1JfQSwgUlRDT1JfRAogCi0JbW92LmwJUlRDU1JfQSxyMQkvKiBSVENTUiBBZGRyZXNzICovCi0JbW92LmwJUlRDU1JfRCxyMAkvKiBSVENTUiBEYXRhICovCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglSVENTUl9BLCBSVENTUl9ECiAKLQltb3YubAlSRkNSX0EscjEJLyogUkZDUiBBZGRyZXNzICovCi0JbW92LmwJUkZDUl9ELHIwCS8qIFJGQ1IgRGF0YSAqLwotCW1vdi53CXIwLEByMQkJLyogQ2xlYXIgcmVmbGVzaCBjb3VudGVyICovCisJd3JpdGUxNglSRkNSX0EsIFJGQ1JfRAorCiAJLyogV2FpdCBEUkFNIHJlZnJlc2ggMzAgdGltZXMgKi8KLQltb3YJIzMwLHIzCisJbW92CSMzMCwgcjMKIDE6Ci0JbW92LncJQHIxLHIwCi0JZXh0dS53CXIwLHIyCi0JY21wL2hpCXIzLHIyCisJbW92LncJQHIxLCByMAorCWV4dHUudwlyMCwgcjIKKwljbXAvaGkJcjMsIHIyCiAJYmYJMWIKIAotCW1vdi5sCU1DUl9BLHIxCS8qIE1DUiBBZGRyZXNzICovCi0JbW92LmwJTUNSX0QyLHIwCS8qIE1DUiBEYXRhMiAqLwotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJTUNSX0EsIE1DUl9EMgogCi0JbW92LmwJU0RNUjNfQSxyMQkvKiBTZXQgU0RSQU0gbW9kZSAqLwotCW1vdgkjMCxyMAotCW1vdi5iCXIwLEByMQorCS8qIFNldCBTRFJBTSBtb2RlICovCisJd3JpdGU4CVNETVIzX0EsIFNETVIzX0QKIAogCXJ0cwotCSBub3AKKwlub3AKIAogCS5hbGlnbgkyCiAKLUNDUl9BOiAgICAgICAgICAubG9uZyAgIENDUgotQ0NSX0RfRElTQUJMRTogIC5sb25nICAgMHgwODA4CitDQ1JfQToJCSAubG9uZwlDQ1IKK0NDUl9EX0RJU0FCTEU6CS5sb25nCTB4MDgwOAogRlJRQ1JfQToJLmxvbmcJRlJRQ1IKIEZSUUNSX0Q6CiAjaWZkZWYgQ09ORklHX0NQVV9UWVBFX1IKQEAgLTE3Miw2ICsxNDYsNyBAQAogUlRDT1JfQToJLmxvbmcJUlRDT1IKIFJUQ09SX0Q6CS5sb25nCVJUQ09SX0RfVkFMVUUJLyogU2V0IHJlZnJlc2ggdGltZSAoYWJvdXQgMTV1cykgKi8KIFNETVIzX0E6CS5sb25nCVNETVIzX0FERFJFU1MKK1NETVIzX0Q6CS5sb25nCTB4MDAKIE1DUl9BOgkJLmxvbmcJTUNSCiBNQ1JfRDE6CQkubG9uZwlNQ1JfRDFfVkFMVUUKIE1DUl9EMjoJCS5sb25nCU1DUl9EMl9WQUxVRQpkaWZmIC0tZ2l0IGEvYm9hcmQvcG04NTQvcG04NTQuYyBiL2JvYXJkL3BtODU0L3BtODU0LmMKaW5kZXggZmVkMGVkNC4uNTM1M2Q3MyAxMDA2NDQKLS0tIGEvYm9hcmQvcG04NTQvcG04NTQuYworKysgYi9ib2FyZC9wbTg1NC9wbTg1NC5jCkBAIC0xNTAsNyArMTUwLDcgQEAKIAkgKi8KIAogCWdldF9zeXNfaW5mbygmc3lzaW5mbyk7Ci0JY2xrZGl2ID0gbGJjLT5sY3JyICYgMHgwZjsKKwljbGtkaXYgPSBsYmMtPmxjcnIgJiBMQ1JSX0NMS0RJVjsKIAlsYmNfaHogPSBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwIC8gY2xrZGl2OwogCiAJaWYgKGxiY19oeiA8IDY2KSB7CmRpZmYgLS1naXQgYS9ib2FyZC9wbTg1Ni9wbTg1Ni5jIGIvYm9hcmQvcG04NTYvcG04NTYuYwppbmRleCA5MzJmMTEyLi5iMTRhM2QzIDEwMDY0NAotLS0gYS9ib2FyZC9wbTg1Ni9wbTg1Ni5jCisrKyBiL2JvYXJkL3BtODU2L3BtODU2LmMKQEAgLTMwNiw3ICszMDYsNyBAQAogCSAqLwogCiAJZ2V0X3N5c19pbmZvKCZzeXNpbmZvKTsKLQljbGtkaXYgPSBsYmMtPmxjcnIgJiAweDBmOworCWNsa2RpdiA9IGxiYy0+bGNyciAmIExDUlJfQ0xLRElWOwogCWxiY19oeiA9IHN5c2luZm8uZnJlcVN5c3RlbUJ1cyAvIDEwMDAwMDAgLyBjbGtkaXY7CiAKIAlpZiAobGJjX2h6IDwgNjYpIHsKZGlmZiAtLWdpdCBhL2JvYXJkL3JlbmVzYXMvTWlnb1IvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvcmVuZXNhcy9NaWdvUi9sb3dsZXZlbF9pbml0LlMKaW5kZXggZTQ4ZjdiMy4uZTMyYTdhZiAxMDA2NDQKLS0tIGEvYm9hcmQvcmVuZXNhcy9NaWdvUi9sb3dsZXZlbF9pbml0LlMKKysrIGIvYm9hcmQvcmVuZXNhcy9NaWdvUi9sb3dsZXZlbF9pbml0LlMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3CisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOAogICogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICoKICAqIENvcHlyaWdodCAoQykgMjAwNwpAQCAtMjcsMTMgKzI3LDE0IEBACiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9tYWNyby5oPgogCiAvKgotICogIEJvYXJkIHNwZWNpZmljIGxvdyBsZXZlbCBpbml0IGNvZGUsIGNhbGxlZCBfdmVyeV8gZWFybHkgaW4gdGhlCi0gKiAgc3RhcnR1cCBzZXF1ZW5jZS4gUmVsb2NhdGlvbiB0byBTRFJBTSBoYXMgbm90IGhhcHBlbmVkIHlldCwgbm8KLSAqICBzdGFjayBpcyBhdmFpbGFibGUsIGJzcyBzZWN0aW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXNlZCwgZXRjLgorICogQm9hcmQgc3BlY2lmaWMgbG93IGxldmVsIGluaXQgY29kZSwgY2FsbGVkIF92ZXJ5XyBlYXJseSBpbiB0aGUKKyAqIHN0YXJ0dXAgc2VxdWVuY2UuIFJlbG9jYXRpb24gdG8gU0RSQU0gaGFzIG5vdCBoYXBwZW5lZCB5ZXQsIG5vCisgKiBzdGFjayBpcyBhdmFpbGFibGUsIGJzcyBzZWN0aW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXNlZCwgZXRjLgogICoKLSAqICAoTm90ZTogQXMgbm8gc3RhY2sgaXMgYXZhaWxhYmxlLCBubyBzdWJyb3V0aW5lcyBjYW4gYmUgY2FsbGVkLi4uKS4KKyAqIChOb3RlOiBBcyBubyBzdGFjayBpcyBhdmFpbGFibGUsIG5vIHN1YnJvdXRpbmVzIGNhbiBiZSBjYWxsZWQuLi4pLgogICovCiAKIAkuZ2xvYmFsCWxvd2xldmVsX2luaXQKQEAgLTQyLDE0MSArNDMsODMgQEAKIAkuYWxpZ24JMgogCiBsb3dsZXZlbF9pbml0OgotCW1vdi5sCUNDUl9BLCByMQkhIEFkZHJlc3Mgb2YgQ2FjaGUgQ29udHJvbCBSZWdpc3RlcgotCW1vdi5sCUNDUl9ELCByMAkhIEluc3RydWN0aW9uIENhY2hlIEludmFsaWRhdGUKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDQ1JfQSwgQ0NSX0QJCSEgQWRkcmVzcyBvZiBDYWNoZSBDb250cm9sIFJlZ2lzdGVyCisJCQkJCSEgSW5zdHJ1Y3Rpb24gQ2FjaGUgSW52YWxpZGF0ZQogCi0JbW92LmwJTU1VQ1JfQSwgcjEJISBBZGRyZXNzIG9mIE1NVSBDb250cm9sIFJlZ2lzdGVyCi0JbW92LmwJTU1VQ1JfRCwgcjAJISBUSSA9PSBUTEIgSW52YWxpZGF0ZSBiaXQKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglNTVVDUl9BLCBNTVVDUl9ECSEgQWRkcmVzcyBvZiBNTVUgQ29udHJvbCBSZWdpc3RlcgorCQkJCQkhIFRJID09IFRMQiBJbnZhbGlkYXRlIGJpdAogCi0JbW92LmwJTVNUUENSMF9BLCByMQkhIEFkZHJlc3Mgb2YgUG93ZXIgQ29udHJvbCBSZWdpc3RlciAwCi0JbW92LmwJTVNUUENSMF9ELCByMAkhCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJTVNUUENSMF9BLCBNU1RQQ1IwX0QJISBBZGRyZXNzIG9mIFBvd2VyIENvbnRyb2wgUmVnaXN0ZXIgMAogCi0JbW92LmwJTVNUUENSMl9BLCByMQkhIEFkZHJlc3Mgb2YgUG93ZXIgQ29udHJvbCBSZWdpc3RlciAyCi0JbW92LmwJTVNUUENSMl9ELCByMAkhCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJTVNUUENSMl9BLCBNU1RQQ1IyX0QJISBBZGRyZXNzIG9mIFBvd2VyIENvbnRyb2wgUmVnaXN0ZXIgMgogCi0JbW92LmwJUEZDX1BVTENSX0EsIHIxCi0JbW92LncJUEZDX1BVTENSX0QsIHIwCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglQRkNfUFVMQ1JfQSwgUEZDX1BVTENSX0QKIAotCW1vdi5sCVBGQ19EUlZDUl9BLCByMQotCW1vdi53CVBGQ19EUlZDUl9ELCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVBGQ19EUlZDUl9BLCBQRkNfRFJWQ1JfRAogCi0JbW92LmwJU0JTQ1JfQSwgcjEJIQotCW1vdi53CVNCU0NSX0QsIHIwCSEKLQltb3YudwlyMCwgQHIxCisJd3JpdGUxNglTQlNDUl9BLCBTQlNDUl9ECiAKLQltb3YubAlQU0NSX0EsIHIxCSEKLQltb3YudwlQU0NSX0QsIHIwCSEKLQltb3YudwlyMCwgQHIxCisJd3JpdGUxNglQU0NSX0EsIFBTQ1JfRAogCi0JbW92LmwJUldUQ1NSX0EsIHIxCSEgMHhBNDUyMDAwNCAoV2F0Y2hkb2cgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlcikKLQltb3YudwlSV1RDU1JfRF8xLCByMAkhIDB4QTUwNyAtPiB0aW1lcl9TVE9QL1dEVF9DTEs9bWF4Ci0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJUldUQ1NSX0EsIFJXVENTUl9EXzEJISAweEE0NTIwMDA0IChXYXRjaGRvZyBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyKQorCQkJCQkhIDB4QTUwNyAtPiB0aW1lcl9TVE9QIC8gV0RUX0NMSyA9IG1heAogCi0JbW92LmwJUldUQ05UX0EsIHIxCSEgMHhBNDUyMDAwMCAoV2F0Y2hkb2cgQ291bnQgUmVnaXN0ZXIpCi0JbW92LncJUldUQ05UX0QsIHIwCSEgMHg1QTAwIC0+IENsZWFyCi0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJUldUQ05UX0EsIFJXVENOVF9ECSEgMHhBNDUyMDAwMCAoV2F0Y2hkb2cgQ291bnQgUmVnaXN0ZXIpCisJCQkJCSEgMHg1QTAwIC0+IENsZWFyCiAKLQltb3YubAlSV1RDU1JfQSwgcjEJISAweEE0NTIwMDA0IChXYXRjaGRvZyBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyKQotCW1vdi53CVJXVENTUl9EXzIsIHIwCSEgMHhBNTA0IC0+IHRpbWVyX1NUT1AvQ0xLPTUwMG1zCi0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJUldUQ1NSX0EsIFJXVENTUl9EXzIJISAweEE0NTIwMDA0IChXYXRjaGRvZyBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyKQorCQkJCQkhIDB4QTUwNCAtPiB0aW1lcl9TVE9QIC8gQ0xLID0gNTAwbXMKIAotCW1vdi5sCURMTEZSUV9BLCByMQkhIDIwMDgwMTE1Ci0JbW92LmwJRExMRlJRX0QsIHIwCSEgMjAwODAxMTUKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglETExGUlFfQSwgRExMRlJRX0QJISAyMDA4MDExNQorCQkJCQkhIDIwMDgwMTE1CiAKLQltb3YubAlGUlFDUl9BLCByMQkJISAweEE0MTUwMDAwIEZyZXF1ZW5jeSBjb250cm9sIHJlZ2lzdGVyCi0JbW92LmwJRlJRQ1JfRCwgcjAJISAyMDA4MDExNQotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUZSUUNSX0EsIEZSUUNSX0QJISAweEE0MTUwMDAwIEZyZXF1ZW5jeSBjb250cm9sIHJlZ2lzdGVyCisJCQkJCSEgMjAwODAxMTUKIAotCW1vdi5sCUNDUl9BLCByMQkJISBBZGRyZXNzIG9mIENhY2hlIENvbnRyb2wgUmVnaXN0ZXIKLQltb3YubAlDQ1JfRF8yLCByMAkhID8/Ci0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9EXzIJCSEgQWRkcmVzcyBvZiBDYWNoZSBDb250cm9sIFJlZ2lzdGVyCisJCQkJCSEgPz8KIAogYnNjX2luaXQ6Ci0JbW92LmwJQ01OQ1JfQSwgcjEJISBDTU5DUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ01OQ1JfRCwgcjAJISBDTU5DUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBDTU5DUiBzZXQKKwl3cml0ZTMyCUNNTkNSX0EsIENNTkNSX0QKIAotCW1vdi5sCUNTMEJDUl9BLCByMQkhIENTMEJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1MwQkNSX0QsIHIwCSEgQ1MwQkNSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTMEJDUiBzZXQKKwl3cml0ZTMyCUNTMEJDUl9BLCBDUzBCQ1JfRAogCi0JbW92LmwJQ1M0QkNSX0EsIHIxCSEgQ1M0QkNSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlDUzRCQ1JfRCwgcjAJISBDUzRCQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgQ1M0QkNSIHNldAorCXdyaXRlMzIJQ1M0QkNSX0EsIENTNEJDUl9ECiAKLQltb3YubAlDUzVBQkNSX0EsIHIxCSEgQ1M1QUJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1M1QUJDUl9ELCByMAkhIENTNUFCQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgQ1M1QUJDUiBzZXQKKwl3cml0ZTMyCUNTNUFCQ1JfQSwgQ1M1QUJDUl9ECiAKLQltb3YubAlDUzVCQkNSX0EsIHIxCSEgQ1M1QkJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1M1QkJDUl9ELCByMAkhIENTNUJCQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgQ1M1QkJDUiBzZXQKKwl3cml0ZTMyCUNTNUJCQ1JfQSwgQ1M1QkJDUl9ECiAKLQltb3YubAlDUzZBQkNSX0EsIHIxCSEgQ1M2QUJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1M2QUJDUl9ELCByMAkhIENTNkFCQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgQ1M2QUJDUiBzZXQKKwl3cml0ZTMyCUNTNkFCQ1JfQSwgQ1M2QUJDUl9ECiAKLQltb3YubAlDUzBXQ1JfQSwgcjEJISBDUzBXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTMFdDUl9ELCByMAkhIENTMFdDUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBDUzBXQ1Igc2V0CisJd3JpdGUzMglDUzBXQ1JfQSwgQ1MwV0NSX0QKIAotCW1vdi5sCUNTNFdDUl9BLCByMQkhIENTNFdDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJQ1M0V0NSX0QsIHIwCSEgQ1M0V0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNFdDUiBzZXQKKwl3cml0ZTMyCUNTNFdDUl9BLCBDUzRXQ1JfRAogCi0JbW92LmwJQ1M1QVdDUl9BLCByMQkhIENTNUFXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNUFXQ1JfRCwgcjAJISBDUzVBV0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNUFXQ1Igc2V0CisJd3JpdGUzMglDUzVBV0NSX0EsIENTNUFXQ1JfRAogCi0JbW92LmwJQ1M1QldDUl9BLCByMQkhIENTNUJXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNUJXQ1JfRCwgcjAJISBDUzVCV0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNUJXQ1Igc2V0CisJd3JpdGUzMglDUzVCV0NSX0EsIENTNUJXQ1JfRAogCi0JbW92LmwJQ1M2QVdDUl9BLCByMQkhIENTNkFXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCUNTNkFXQ1JfRCwgcjAJISBDUzZBV0NSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIENTNkFXQ1Igc2V0CisJd3JpdGUzMglDUzZBV0NSX0EsIENTNkFXQ1JfRAogCiAJISBTRFJBTSBpbml0aWFsaXphdGlvbgotCW1vdi5sCVNEQ1JfQSwgcjEJISBTQl9TRENSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlTRENSX0QsIHIwCSEgU0JfU0RDUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBTQl9TRENSIHNldAorCXdyaXRlMzIJU0RDUl9BLCBTRENSX0QKIAotCW1vdi5sCVNEV0NSX0EsIHIxCSEgU0JfU0RXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCVNEV0NSX0QsIHIwCSEgU0JfU0RXQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgU0JfU0RXQ1Igc2V0CisJd3JpdGUzMglTRFdDUl9BLCBTRFdDUl9ECiAKLQltb3YubAlTRFBDUl9BLCByMQkhIFNCX1NEUENSIGFkZHJlc3MgLT4gUjEKLQltb3YubAlTRFBDUl9ELCByMAkhIFNCX1NEUENSIGRhdGEgICAgLT4gUjAKLQltb3YubAlyMCwgQHIxCQkhIFNCX1NEUENSIHNldAorCXdyaXRlMzIJU0RQQ1JfQSwgU0RQQ1JfRAogCi0JbW92LmwJUlRDT1JfQSwgcjEJISBTQl9SVENPUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJUlRDT1JfRCwgcjAJISBTQl9SVENPUiBkYXRhICAgIC0+IFIwCi0JbW92LmwJcjAsIEByMQkJISBTQl9SVENPUiBzZXQKKwl3cml0ZTMyCVJUQ09SX0EsIFJUQ09SX0QKIAotCW1vdi5sCVJUQ05UX0EsIHIxCSEgU0JfUlRDTlQgYWRkcmVzcyAtPiBSMQotCW1vdi5sCVJUQ05UX0QsIHIwCSEgU0JfUlRDTlQgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVJUQ05UX0EsIFJUQ05UX0QKIAotCW1vdi5sCVJUQ1NSX0EsIHIxCSEgU0JfUlRDU1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sCVJUQ1NSX0QsIHIwCSEgU0JfUlRDU1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEJCSEgU0JfUlRDU1Igc2V0CisJd3JpdGUzMglSVENTUl9BLCBSVENTUl9ECiAKLQltb3YubAlSRkNSX0EsIHIxCSEgU0JfUkZDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwJUkZDUl9ELCByMAkhIFNCX1JGQ1IgZGF0YSAgICAtPiBSMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVJGQ1JfQSwgUkZDUl9ECiAKLQltb3YubAlTRE1SM19BLCByMQkhIFNETVIzIGFkZHJlc3MgLT4gUjEKLQltb3YJIzB4MDAsIHIwCSEgU0RNUjMgZGF0YSAgICAtPiBSMAotCW1vdi5iCXIwLCBAcjEJCSEgU0RNUjMgc2V0CisJd3JpdGU4CVNETVIzX0EsIFNETVIzX0QKIAotCSEgQkwgYml0IG9mZiAoaW5pdCA9IE9OKSAgKD8hPykKKwkhIEJMIGJpdCBvZmYgKGluaXQgPSBPTikgKD8hPykKIAogCXN0YwlzciwgcjAJCQkJISBCTCBiaXQgb2ZmKGluaXQ9T04pCiAJbW92LmwJU1JfTUFTS19ELCByMQpAQCAtMjExLDI1ICsxNTQsMjUgQEAKIFBGQ19EUlZDUl9EOgkubG9uZwkweDA0NjQKIEZSUUNSX0Q6CS5sb25nCTB4MDcwMzM2MzkKIFBMTENSX0Q6CS5sb25nCTB4MDAwMDUwMDAKLURMTEZSUV9EOgkubG9uZwkweDAwMDAwNEY2CSEgMjAwODAxMTUKK0RMTEZSUV9EOgkubG9uZwkweDAwMDAwNEY2CiAKIENNTkNSX0E6CS5sb25nCUNNTkNSCi1DTU5DUl9EOgkubG9uZwkweDAwMDAwMDFCCSEgMjAwODAxMTUKLUNTMEJDUl9BOgkubG9uZwlDUzBCQ1IJCSEgRmxhc2ggYmFuayAxCitDTU5DUl9EOgkubG9uZwkweDAwMDAwMDFCCitDUzBCQ1JfQToJLmxvbmcJQ1MwQkNSCiBDUzBCQ1JfRDoJLmxvbmcJMHgyNDkyMDQwMAotQ1M0QkNSX0E6CS5sb25nCUNTNEJDUgkJIQotQ1M0QkNSX0Q6CS5sb25nCTB4MTAwMDM0MDAJISAyMDA4MDExNQotQ1M1QUJDUl9BOgkubG9uZwlDUzVBQkNSCQkhCitDUzRCQ1JfQToJLmxvbmcJQ1M0QkNSCitDUzRCQ1JfRDoJLmxvbmcJMHgwMDAwMzQwMAorQ1M1QUJDUl9BOgkubG9uZwlDUzVBQkNSCiBDUzVBQkNSX0Q6CS5sb25nCTB4MjQ5MjA0MDAKLUNTNUJCQ1JfQToJLmxvbmcJQ1M1QkJDUgkJIQorQ1M1QkJDUl9BOgkubG9uZwlDUzVCQkNSCiBDUzVCQkNSX0Q6CS5sb25nCTB4MjQ5MjA0MDAKLUNTNkFCQ1JfQToJLmxvbmcJQ1M2QUJDUgkJIQorQ1M2QUJDUl9BOgkubG9uZwlDUzZBQkNSCiBDUzZBQkNSX0Q6CS5sb25nCTB4MjQ5MjA0MDAKIAogQ1MwV0NSX0E6CS5sb25nCUNTMFdDUgogQ1MwV0NSX0Q6CS5sb25nCTB4MDAwMDAzODAKIENTNFdDUl9BOgkubG9uZwlDUzRXQ1IKLUNTNFdDUl9EOgkubG9uZwkweDAwMTAwQTgxCSEgMjAwODAxMTUKK0NTNFdDUl9EOgkubG9uZwkweDAwMTEwMDgwCiBDUzVBV0NSX0E6CS5sb25nCUNTNUFXQ1IKIENTNUFXQ1JfRDoJLmxvbmcJMHgwMDAwMDMwMAogQ1M1QldDUl9BOgkubG9uZwlDUzVCV0NSCkBAIC0yMzgsMjAgKzE4MSwyMSBAQAogQ1M2QVdDUl9EOgkubG9uZwkweDAwMDAwMzAwCiAKIFNEQ1JfQToJCS5sb25nCVNCU0NfU0RDUgotU0RDUl9EOgkJLmxvbmcJMHg4MDE2MDgwOQkhIDIwMDgwMTE1CitTRENSX0Q6CQkubG9uZwkweDgwMTYwODA5CiBTRFdDUl9BOgkubG9uZwlTQlNDX1NEV0NSCi1TRFdDUl9EOgkubG9uZwkweDAwMTQ0NTBDCSEgMjAwODAxMTUKK1NEV0NSX0Q6CS5sb25nCTB4MDAxNDQ1MEMKIFNEUENSX0E6CS5sb25nCVNCU0NfU0RQQ1IKIFNEUENSX0Q6CS5sb25nCTB4MDAwMDAwODcKIFJUQ09SX0E6CS5sb25nCVNCU0NfUlRDT1IKIFJUQ05UX0E6CS5sb25nCVNCU0NfUlRDTlQKIFJUQ05UX0Q6CS5sb25nCTB4QTU1QTAwMTIKLVJUQ09SX0Q6CS5sb25nCTB4QTU1QTAwMUMJISAyMDA4MDExNQorUlRDT1JfRDoJLmxvbmcJMHhBNTVBMDAxQwogUlRDU1JfQToJLmxvbmcJU0JTQ19SVENTUgogUkZDUl9BOgkJLmxvbmcJU0JTQ19SRkNSCiBSRkNSX0Q6CQkubG9uZwkweEE1NUEwMjIxCi1SVENTUl9EOgkubG9uZwkweEE1NUEwMDlhCSEgMjAwODAxMTUKLVNETVIzX0E6CS5sb25nCTB4RkU1ODExODAJISAyMDA4MDExNQorUlRDU1JfRDoJLmxvbmcJMHhBNTVBMDA5YQorU0RNUjNfQToJLmxvbmcJMHhGRTU4MTE4MAorU0RNUjNfRDoJLmxvbmcJMHgwCiAKIFNSX01BU0tfRDoJLmxvbmcJMHhFRkZGRkYwRgogCkBAIC0yNjAsNSArMjA0LDUgQEAKIFNCU0NSX0Q6CS53b3JkCTB4MDA0NAogUFNDUl9EOgkJLndvcmQJMHgwMDAwCiBSV1RDU1JfRF8xOgkud29yZAkweEE1MDcKLVJXVENTUl9EXzI6CS53b3JkCTB4QTUwNAkJISAyMDA4MDExNQorUldUQ1NSX0RfMjoJLndvcmQJMHhBNTA0CiBSV1RDTlRfRDoJLndvcmQJMHg1QTAwCmRpZmYgLS1naXQgYS9ib2FyZC9yZW5lc2FzL2FwMzI1cnhhL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3JlbmVzYXMvYXAzMjVyeGEvbG93bGV2ZWxfaW5pdC5TCmluZGV4IDRmNjY1ODguLmIzMmY0OTEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3JlbmVzYXMvYXAzMjVyeGEvbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL3JlbmVzYXMvYXAzMjVyeGEvbG93bGV2ZWxfaW5pdC5TCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vbWFjcm8uaD4KIAogLyoKICAqIEJvYXJkIHNwZWNpZmljIGxvdyBsZXZlbCBpbml0IGNvZGUsIGNhbGxlZCBfdmVyeV8gZWFybHkgaW4gdGhlCkBAIC0zOCwxMTMgKzM5LDU5IEBACiAJLmFsaWduCTIKIAogbG93bGV2ZWxfaW5pdDoKLQltb3YubAlEUlZDUkFfQSwgcjEKLQltb3YubCAJRFJWQ1JBX0QsIHIwCi0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJRFJWQ1JBX0EsIERSVkNSQV9ECiAKLQltb3YubAlEUlZDUkJfQSwgcjEKLQltb3YubCAJRFJWQ1JCX0QsIHIwCi0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJRFJWQ1JCX0EsIERSVkNSQl9ECiAKLQltb3YubAlSV1RDU1JfQSwgcjEKLQltb3YubCAJUldUQ1NSX0QxLCByMAotCW1vdi53CXIwLCBAcjEKKwl3cml0ZTE2CVJXVENTUl9BLCBSV1RDU1JfRDEKIAotCW1vdi5sCVJXVENOVF9BLCByMQotCW1vdi5sIAlSV1RDTlRfRCwgcjAKLQltb3YudwlyMCwgQHIxCisJd3JpdGUxNglSV1RDTlRfQSwgUldUQ05UX0QKIAotCW1vdi5sCVJXVENTUl9BLCByMQotCW1vdi5sIAlSV1RDU1JfRDIsIHIwCi0JbW92LncJcjAsIEByMQorCXdyaXRlMTYJUldUQ1NSX0EsIFJXVENTUl9EMgogCi0JbW92LmwJRlJRQ1JfQSwgcjEKLQltb3YubCAJRlJRQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglGUlFDUl9BLCBGUlFDUl9ECiAKLQltb3YubAlDTU5DUl9BLCByMQotCW1vdi5sCUNNTkNSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ01OQ1JfQSwgQ01OQ1JfRAogCi0JbW92LmwJQ1MwQkNSX0EgLHIxCi0JbW92LmwJQ1MwQkNSX0QgLHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1MwQkNSX0EsIENTMEJDUl9ECiAKLQltb3YubAlDUzRCQ1JfQSAscjEKLQltb3YubAlDUzRCQ1JfRCAscjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzRCQ1JfQSwgQ1M0QkNSX0QKIAotCW1vdi5sCUNTNUFCQ1JfQSAscjEKLQltb3YubAlDUzVBQkNSX0QgLHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M1QUJDUl9BLCBDUzVBQkNSX0QKIAotCW1vdi5sCUNTNUJCQ1JfQSAscjEKLQltb3YubAlDUzVCQkNSX0QgLHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M1QkJDUl9BLCBDUzVCQkNSX0QKIAotCW1vdi5sCUNTNkFCQ1JfQSAscjEKLQltb3YubAlDUzZBQkNSX0QgLHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M2QUJDUl9BLCBDUzZBQkNSX0QKIAotCW1vdi5sCUNTNkJCQ1JfQSAscjEKLQltb3YubAlDUzZCQkNSX0QgLHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M2QkJDUl9BLCBDUzZCQkNSX0QKIAotCW1vdi5sCUNTMFdDUl9BICxyMQotCW1vdi5sCUNTMFdDUl9EICxyMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTMFdDUl9BLCBDUzBXQ1JfRAogCi0JbW92LmwJQ1M0V0NSX0EgLHIxCi0JbW92LmwJQ1M0V0NSX0QgLHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M0V0NSX0EsIENTNFdDUl9ECiAKLQltb3YubAlDUzVBV0NSX0EgLHIxCi0JbW92LmwJQ1M1QVdDUl9EICxyMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTNUFXQ1JfQSwgQ1M1QVdDUl9ECiAKLQltb3YubAlDUzVCV0NSX0EgLHIxCi0JbW92LmwJQ1M1QldDUl9EICxyMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTNUJXQ1JfQSwgQ1M1QldDUl9ECiAKLQltb3YubAlDUzZBV0NSX0EgLHIxCi0JbW92LmwJQ1M2QVdDUl9EICxyMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTNkFXQ1JfQSwgQ1M2QVdDUl9ECiAKLQltb3YubAlDUzZCV0NSX0EgLHIxCi0JbW92LmwJQ1M2QldDUl9EICxyMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTNkJXQ1JfQSwgQ1M2QldDUl9ECiAKLQltb3YubAlTQlNDX1NEQ1JfQSwgcjEKLQltb3YubCAJU0JTQ19TRENSX0QxLCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVNCU0NfU0RDUl9BLCBTQlNDX1NEQ1JfRDEKIAotCW1vdi5sCVNCU0NfU0RXQ1JfQSwgcjEKLQltb3YubCAJU0JTQ19TRFdDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVNCU0NfU0RXQ1JfQSwgU0JTQ19TRFdDUl9ECiAKLQltb3YubAlTQlNDX1NEUENSX0EsIHIxCi0JbW92LmwgCVNCU0NfU0RQQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglTQlNDX1NEUENSX0EsIFNCU0NfU0RQQ1JfRAogCi0JbW92LmwJU0JTQ19SVENTUl9BLCByMQotCW1vdi5sIAlTQlNDX1JUQ1NSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJU0JTQ19SVENTUl9BLCBTQlNDX1JUQ1NSX0QKIAotCW1vdi5sCVNCU0NfUlRDTlRfQSwgcjEKLQltb3YubCAJU0JTQ19SVENOVF9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVNCU0NfUlRDTlRfQSwgU0JTQ19SVENOVF9ECiAKLQltb3YubAlTQlNDX1JUQ09SX0EsIHIxCi0JbW92LmwgCVNCU0NfUlRDT1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglTQlNDX1JUQ09SX0EsIFNCU0NfUlRDT1JfRAogCi0JbW92LmwJU0JTQ19TRE1SM19BMSwgcjEKLQltb3YubCAJU0JTQ19TRE1SM19ELCByMAotCW1vdi5iCXIwLCBAcjEKKwl3cml0ZTgJU0JTQ19TRE1SM19BMSwgU0JTQ19TRE1SM19ECiAKLQltb3YubAlTQlNDX1NETVIzX0EyLCByMQotCW1vdi5sIAlTQlNDX1NETVIzX0QsIHIwCi0JbW92LmIJcjAsIEByMQorCXdyaXRlOAlTQlNDX1NETVIzX0EyLCBTQlNDX1NETVIzX0QKIAogCW1vdi5sCVNMRUVQX0NOVCwgcjEKIDI6CXRzdAlyMSwgcjEKQEAgLTE1MiwxOSArOTksMTMgQEAKIAliZi9zCTJiCiAJZHQJcjEKIAotCW1vdi5sCVNCU0NfU0RNUjNfQTMsIHIxCi0JbW92LmwgCVNCU0NfU0RNUjNfRCwgcjAKLQltb3YuYglyMCwgQHIxCisJd3JpdGU4CVNCU0NfU0RNUjNfQTMsIFNCU0NfU0RNUjNfRAogCi0JbW92LmwJU0JTQ19TRENSX0EsIHIxCi0JbW92LmwgCVNCU0NfU0RDUl9EMiwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglTQlNDX1NEQ1JfQSwgU0JTQ19TRENSX0QyCiAKLQltb3YubAlDQ1JfQSwgcjEKLQltb3YubCAJQ0NSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9ECiAKLQkhIEJMIGJpdCBvZmYgKGluaXQgPSBPTikgICg/IT8pCisJISBCTCBiaXQgb2ZmIChpbml0ID0gT04pICg/IT8pCiAKIAlzdGMJc3IsIHIwCQkJCSEgQkwgYml0IG9mZihpbml0PU9OKQogCW1vdi5sCVNSX01BU0tfRCwgcjEKQEAgLTIxMSw3ICsxNTIsNyBAQAogQ01OQ1JfQToJLmxvbmcJQ01OQ1IKIENTMEJDUl9BOgkubG9uZwlDUzBCQ1IKIENTNEJDUl9BOgkubG9uZwlDUzRCQ1IKLUNTNUFCQ1JfQToJLmxvbmcgCUNTNUFCQ1IKK0NTNUFCQ1JfQToJLmxvbmcJQ1M1QUJDUgogQ1M1QkJDUl9BOgkubG9uZwlDUzVCQkNSCiBDUzZBQkNSX0E6CS5sb25nCUNTNkFCQ1IKIENTNkJCQ1JfQToJLmxvbmcJQ1M2QkJDUgpkaWZmIC0tZ2l0IGEvYm9hcmQvcmVuZXNhcy9yMmRwbHVzL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3JlbmVzYXMvcjJkcGx1cy9sb3dsZXZlbF9pbml0LlMKaW5kZXggNTc1NWRlOC4uNzZkM2NmYyAxMDA2NDQKLS0tIGEvYm9hcmQvcmVuZXNhcy9yMmRwbHVzL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9yZW5lc2FzL3IyZHBsdXMvbG93bGV2ZWxfaW5pdC5TCkBAIC04LDEwNSArOCw2NCBAQAogI2luY2x1ZGUgPHZlcnNpb24uaD4KIAogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vbWFjcm8uaD4KIAogCS5nbG9iYWwgbG93bGV2ZWxfaW5pdAogCS50ZXh0Ci0JLmFsaWduICAyCisJLmFsaWduCTIKIAogbG93bGV2ZWxfaW5pdDoKIAotCW1vdi5sCUNDUl9BLCByMQotCW1vdi5sCUNDUl9EX0QsIHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDQ1JfQSwgQ0NSX0RfRAogCi0JbW92LmwJTU1VQ1JfQSxyMQotCW1vdi5sCU1NVUNSX0QscjAKLQltb3YudwlyMCxAcjEKKwl3cml0ZTMyCU1NVUNSX0EsIE1NVUNSX0QKIAotCW1vdi5sCUJDUjFfQSxyMQotCW1vdi5sCUJDUjFfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQkNSMV9BLCBCQ1IxX0QKIAotCW1vdi5sCUJDUjJfQSxyMQotCW1vdi5sCUJDUjJfRCxyMAotCW1vdi53CXIwLEByMQorCXdyaXRlMTYJQkNSMl9BLCBCQ1IyX0QKIAotCW1vdi5sCUJDUjNfQSxyMQotCW1vdi5sCUJDUjNfRCxyMAotCW1vdi53CXIwLEByMQorCXdyaXRlMTYJQkNSM19BLCBCQ1IzX0QKIAotCW1vdi5sCUJDUjRfQSxyMQotCW1vdi5sCUJDUjRfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQkNSNF9BLCBCQ1I0X0QKIAotCW1vdi5sCVdDUjFfQSxyMQotCW1vdi5sCVdDUjFfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJV0NSMV9BLCBXQ1IxX0QKIAotCW1vdi5sCVdDUjJfQSxyMQotCW1vdi5sCVdDUjJfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJV0NSMl9BLCBXQ1IyX0QKIAotCW1vdi5sCVdDUjNfQSxyMQotCW1vdi5sCVdDUjNfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJV0NSM19BLCBXQ1IzX0QKIAotCW1vdi5sCVBDUl9BLHIxCi0JbW92LmwJUENSX0QscjAKLQltb3YudwlyMCxAcjEKKwl3cml0ZTE2CVBDUl9BLCBQQ1JfRAogCi0JbW92LmwJTEVEX0EscjEKLQltb3YJIzB4ZmYscjAKLQltb3YudwlyMCxAcjEKKwl3cml0ZTE2CUxFRF9BLCBMRURfRAogCi0JbW92LmwJTUNSX0EscjEKLQltb3YubAlNQ1JfRDEscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCU1DUl9BLCBNQ1JfRDEKIAotCW1vdi5sCVJUQ05UX0EscjEKLQltb3YubAlSVENOVF9ELHIwCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglSVENOVF9BLCBSVENOVF9ECiAKLQltb3YubAlSVENPUl9BLHIxCi0JbW92LmwJUlRDT1JfRCxyMAotCW1vdi53CXIwLEByMQorCXdyaXRlMTYJUlRDT1JfQSwgUlRDT1JfRAogCi0JbW92LmwJUkZDUl9BLHIxCi0JbW92LmwJUkZDUl9ELHIwCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglSRkNSX0EsIFJGQ1JfRAogCi0JbW92LmwJUlRDU1JfQSxyMQotCW1vdi5sCVJUQ1NSX0QscjAKLQltb3YudwlyMCxAcjEKKwl3cml0ZTE2CVJUQ1NSX0EsIFJUQ1NSX0QKIAotCW1vdi5sCVNETVIzX0EscjEKLQltb3YJIzB4NTUscjAKLQltb3YuYglyMCxAcjEKKwl3cml0ZTgJU0RNUjNfQSwgU0RNUjNfRDAKIAogCS8qIFdhaXQgRFJBTSByZWZyZXNoIDMwIHRpbWVzICovCi0JbW92LmwJUkZDUl9BLHIxCi0JbW92CSMzMCxyMworCW1vdi5sCVJGQ1JfQSwgcjEKKwltb3YJIzMwLCByMwogMToKLQltb3YudwlAcjEscjAKLQlleHR1LncJcjAscjIKLQljbXAvaGkJcjMscjIKKwltb3YudwlAcjEsIHIwCisJZXh0dS53CXIwLCByMgorCWNtcC9oaQlyMywgcjIKIAliZgkxYgogCi0JbW92LmwJTUNSX0EscjEKLQltb3YubAlNQ1JfRDIscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCU1DUl9BLCBNQ1JfRDIKIAotCW1vdi5sCVNETVIzX0EscjEKLQltb3YJIzAscjAKLQltb3YuYglyMCxAcjEKKwl3cml0ZTgJU0RNUjNfQSwgU0RNUjNfRDEKIAotCW1vdi5sCUlSTE1BU0tfQSxyMQotCW1vdi5sCUlSTE1BU0tfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJSVJMTUFTS19BLCBJUkxNQVNLX0QKIAotCW1vdi5sCUNDUl9BLCByMQotCW1vdi5sCUNDUl9EX0UsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9EX0UKIAogCXJ0cwogCW5vcApAQCAtMTE4LDM0ICs3NywzNiBAQAogCiBGUlFDUl9BOgkubG9uZwlGUlFDUgkJLyogRlJRQ1IgQWRkcmVzcyAqLwogRlJRQ1JfRDoJLmxvbmcJMHgwMDAwMGUwYQkvKiAwMy8wNy8xNSBtb2RpZnkgKi8KLUJDUjFfQToJLmxvbmcJQkNSMQkJLyogQkNSMSBBZGRyZXNzICovCi1CQ1IxX0Q6CS5sb25nCTB4MDAxODAwMDgKLUJDUjJfQToJLmxvbmcJQkNSMgkJLyogQkNSMiBBZGRyZXNzICovCi1CQ1IyX0Q6CS5sb25nICAgMHhhYmU4Ci1CQ1IzX0E6CS5sb25nCUJDUjMJCS8qIEJDUjMgQWRkcmVzcyAqLwotQkNSM19EOgkubG9uZwkweDAwMDAKLUJDUjRfQToJLmxvbmcJQkNSNAkJLyogQkNSNCBBZGRyZXNzICovCi1CQ1I0X0Q6CS5sb25nCTB4MDAwMDAwMTAKLVdDUjFfQToJLmxvbmcJV0NSMQkJLyogV0NSMSBBZGRyZXNzICovCi1XQ1IxX0Q6CS5sb25nCTB4MzMzNDMzMzMKLVdDUjJfQToJLmxvbmcJV0NSMgkJLyogV0NSMiBBZGRyZXNzICovCi1XQ1IyX0Q6CS5sb25nCTB4Y2ZmODZmYmYKLVdDUjNfQToJLmxvbmcJV0NSMwkJLyogV0NSMyBBZGRyZXNzICovCi1XQ1IzX0Q6CS5sb25nCTB4MDc3Nzc3MDcKK0JDUjFfQToJCS5sb25nCUJDUjEJCS8qIEJDUjEgQWRkcmVzcyAqLworQkNSMV9EOgkJLmxvbmcJMHgwMDE4MDAwOAorQkNSMl9BOgkJLmxvbmcJQkNSMgkJLyogQkNSMiBBZGRyZXNzICovCitCQ1IyX0Q6CQkubG9uZwkweGFiZTgKK0JDUjNfQToJCS5sb25nCUJDUjMJCS8qIEJDUjMgQWRkcmVzcyAqLworQkNSM19EOgkJLmxvbmcJMHgwMDAwCitCQ1I0X0E6CQkubG9uZwlCQ1I0CQkvKiBCQ1I0IEFkZHJlc3MgKi8KK0JDUjRfRDoJCS5sb25nCTB4MDAwMDAwMTAKK1dDUjFfQToJCS5sb25nCVdDUjEJCS8qIFdDUjEgQWRkcmVzcyAqLworV0NSMV9EOgkJLmxvbmcJMHgzMzM0MzMzMworV0NSMl9BOgkJLmxvbmcJV0NSMgkJLyogV0NSMiBBZGRyZXNzICovCitXQ1IyX0Q6CQkubG9uZwkweGNmZjg2ZmJmCitXQ1IzX0E6CQkubG9uZwlXQ1IzCQkvKiBXQ1IzIEFkZHJlc3MgKi8KK1dDUjNfRDoJCS5sb25nCTB4MDc3Nzc3MDcKIExFRF9BOgkJLmxvbmcJMHgwNDAwMDAzNgkvKiBMRUQgQWRkcmVzcyAqLworTEVEX0Q6CQkubG9uZwkweEZGCQkvKiBMRUQgRGF0YSAqLwogUlRDTlRfQToJLmxvbmcJUlRDTlQJCS8qIFJUQ05UIEFkZHJlc3MgKi8KIFJUQ05UX0Q6CS5sb25nCTB4QTUwMAkJLyogUlRDTlQgV3JpdGUgQ29kZSBBNWggRGF0YSAwMGggKi8KIFJUQ09SX0E6CS5sb25nCVJUQ09SCQkvKiBSVENPUiBBZGRyZXNzICovCi1SVENPUl9EOgkubG9uZwkweEE1MzQJCS8qIFJUQ09SIFdyaXRlIENvZGUgICovCitSVENPUl9EOgkubG9uZwkweEE1MzQJCS8qIFJUQ09SIFdyaXRlIENvZGUgKi8KIFJUQ1NSX0E6CS5sb25nCVJUQ1NSCQkvKiBSVENTUiBBZGRyZXNzICovCiBSVENTUl9EOgkubG9uZwkweEE1MTAJCS8qIFJUQ1NSIFdyaXRlIENvZGUgKi8KLVNETVIzX0E6CS5sb25nICAgMHhGRjk0MDBDQwkvKiBTRE1SMyBBZGRyZXNzICovCi1TRE1SM19EOgkubG9uZwkweDU1CitTRE1SM19BOgkubG9uZwkweEZGOTQwMENDCS8qIFNETVIzIEFkZHJlc3MgKi8KK1NETVIzX0QwOgkubG9uZwkweDU1CitTRE1SM19EMToJLmxvbmcJMHgwMAogTUNSX0E6CQkubG9uZwlNQ1IJCS8qIE1DUiBBZGRyZXNzICovCi1NQ1JfRDE6CS5sb25nCTB4MDgxOTAxRjQJLyogTVJTRVQ6JzAnICovCi1NQ1JfRDI6CS5sb25nCTB4NDgxOTAxRjQJLyogTVJTRVQ6JzEnICovCi1SRkNSX0E6CS5sb25nCVJGQ1IJCS8qIFJGQ1IgQWRkcmVzcyAqLwotUkZDUl9EOgkubG9uZwkweEE0MDAJCS8qIFJGQ1IgV3JpdGUgQ29kZSBBNGggRGF0YSAwMGggKi8KK01DUl9EMToJCS5sb25nCTB4MDgxOTAxRjQJLyogTVJTRVQ6JzAnICovCitNQ1JfRDI6CQkubG9uZwkweDQ4MTkwMUY0CS8qIE1SU0VUOicxJyAqLworUkZDUl9BOgkJLmxvbmcJUkZDUgkJLyogUkZDUiBBZGRyZXNzICovCitSRkNSX0Q6CQkubG9uZwkweEE0MDAJCS8qIFJGQ1IgV3JpdGUgQ29kZSBBNGggRGF0YSAwMGggKi8KIFBDUl9BOgkJLmxvbmcJUENSCQkvKiBQQ1IgQWRkcmVzcyAqLwogUENSX0Q6CQkubG9uZwkweDAwMDAKIE1NVUNSX0E6CS5sb25nCU1NVUNSCQkvKiBNTVVDQ1IgQWRkcmVzcyAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvcmVuZXNhcy9yNzc4MG1wL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3JlbmVzYXMvcjc3ODBtcC9sb3dsZXZlbF9pbml0LlMKaW5kZXggYWIwNDk5YS4uYmJlYTYyMSAxMDA2NDQKLS0tIGEvYm9hcmQvcmVuZXNhcy9yNzc4MG1wL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9yZW5lc2FzL3I3NzgwbXAvbG93bGV2ZWxfaW5pdC5TCkBAIC0yMiwxMyArMjIsMTQgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9tYWNyby5oPgogCiAvKgotICogIEJvYXJkIHNwZWNpZmljIGxvdyBsZXZlbCBpbml0IGNvZGUsIGNhbGxlZCBfdmVyeV8gZWFybHkgaW4gdGhlCi0gKiAgc3RhcnR1cCBzZXF1ZW5jZS4gUmVsb2NhdGlvbiB0byBTRFJBTSBoYXMgbm90IGhhcHBlbmVkIHlldCwgbm8KLSAqICBzdGFjayBpcyBhdmFpbGFibGUsIGJzcyBzZWN0aW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXNlZCwgZXRjLgorICogQm9hcmQgc3BlY2lmaWMgbG93IGxldmVsIGluaXQgY29kZSwgY2FsbGVkIF92ZXJ5XyBlYXJseSBpbiB0aGUKKyAqIHN0YXJ0dXAgc2VxdWVuY2UuIFJlbG9jYXRpb24gdG8gU0RSQU0gaGFzIG5vdCBoYXBwZW5lZCB5ZXQsIG5vCisgKiBzdGFjayBpcyBhdmFpbGFibGUsIGJzcyBzZWN0aW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXNlZCwgZXRjLgogICoKLSAqICAoTm90ZTogQXMgbm8gc3RhY2sgaXMgYXZhaWxhYmxlLCBubyBzdWJyb3V0aW5lcyBjYW4gYmUgY2FsbGVkLi4uKS4KKyAqIChOb3RlOiBBcyBubyBzdGFjayBpcyBhdmFpbGFibGUsIG5vIHN1YnJvdXRpbmVzIGNhbiBiZSBjYWxsZWQuLi4pLgogICovCiAKIAkuZ2xvYmFsCWxvd2xldmVsX2luaXQKQEAgLTM4LDYzICszOSwzNiBAQAogCiBsb3dsZXZlbF9pbml0OgogCi0JbW92LmwJQ0NSX0EsIHIxCS8qIEFkZHJlc3Mgb2YgQ2FjaGUgQ29udHJvbCBSZWdpc3RlciAqLwotCW1vdi5sCUNDUl9ELCByMAkvKiBJbnN0cnVjdGlvbiBDYWNoZSBJbnZhbGlkYXRlICovCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9ECQkvKiBBZGRyZXNzIG9mIENhY2hlIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwkJCQkJLyogSW5zdHJ1Y3Rpb24gQ2FjaGUgSW52YWxpZGF0ZSAqLwogCi0JbW92LmwJRlJRQ1JfQSwgcjEJLyogRnJlcXVlbmN5IGNvbnRyb2wgcmVnaXN0ZXIgKi8KLQltb3YubAlGUlFDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUZSUUNSX0EsIEZSUUNSX0QJLyogRnJlcXVlbmN5IGNvbnRyb2wgcmVnaXN0ZXIgKi8KIAogCS8qIHBpbl9tdWx0aV9zZXR0aW5nICovCi0JbW92LmwgICBCQkdfUE1NUl9BLHIxCi0JbW92LmwgICBCQkdfUE1NUl9EX1BNU1IxLHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTU1SX0EsIEJCR19QTU1SX0RfUE1TUjEKIAotCW1vdi5sICAgQkJHX1BNU1IxX0EscjEKLQltb3YubCAgIEJCR19QTVNSMV9ELHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTVNSMV9BLCBCQkdfUE1TUjFfRAogCi0JbW92LmwgICBCQkdfUE1NUl9BLHIxCi0JbW92LmwgICBCQkdfUE1NUl9EX1BNU1IyLHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTU1SX0EsIEJCR19QTU1SX0RfUE1TUjIKIAotCW1vdi5sICAgQkJHX1BNU1IyX0EscjEKLQltb3YubCAgIEJCR19QTVNSMl9ELHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTVNSMl9BLCBCQkdfUE1TUjJfRAogCi0JbW92LmwgICBCQkdfUE1NUl9BLHIxCi0JbW92LmwgICBCQkdfUE1NUl9EX1BNU1IzLHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTU1SX0EsIEJCR19QTU1SX0RfUE1TUjMKIAotCW1vdi5sICAgQkJHX1BNU1IzX0EscjEKLQltb3YubCAgIEJCR19QTVNSM19ELHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTVNSM19BLCBCQkdfUE1TUjNfRAogCi0JbW92LmwgICBCQkdfUE1NUl9BLHIxCi0JbW92LmwgICBCQkdfUE1NUl9EX1BNU1I0LHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTU1SX0EsIEJCR19QTU1SX0RfUE1TUjQKIAotCW1vdi5sICAgQkJHX1BNU1I0X0EscjEKLQltb3YubCAgIEJCR19QTVNSNF9ELHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTVNSNF9BLCBCQkdfUE1TUjRfRAogCi0JbW92LmwgICBCQkdfUE1NUl9BLHIxCi0JbW92LmwgICBCQkdfUE1NUl9EX1BNU1JHLHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTU1SX0EsIEJCR19QTU1SX0RfUE1TUkcKIAotCW1vdi5sICAgQkJHX1BNU1JHX0EscjEKLQltb3YubCAgIEJCR19QTVNSR19ELHIwCi0JbW92LmwgICByMCxAcjEKKwl3cml0ZTMyCUJCR19QTVNSR19BLCBCQkdfUE1TUkdfRAogCiAJLyogY3BnX3NldHRpbmcgKi8KLQltb3YubCAgIEZSUUNSX0EscjEKLQltb3YubCAgIEZSUUNSX0QscjAKLQltb3YubCAgIHIwLEByMQorCXdyaXRlMzIJRlJRQ1JfQSwgRlJRQ1JfRAogCi0JbW92LmwgICBETExDU1JfQSxyMQotCW1vdi5sICAgRExMQ1NSX0QscjAKLQltb3YubCAgIHIwLEByMQorCXdyaXRlMzIJRExMQ1NSX0EsIERMTENTUl9ECiAKIAlub3AKIAlub3AKQEAgLTEwOCwxMTEgKzgyLDc5IEBACiAJbm9wCiAKIAkvKiB3YWl0IDIwMHVzICovCi0JbW92LmwgICBSRVBFQVQwX1IzLHIzCi0JbW92ICAgICAjMCxyMgorCW1vdi5sCVJFUEVBVDBfUjMsIHIzCisJbW92CSMwLCByMgogcmVwZWF0MDoKLQlhZGQgICAgICMxLHIyCi0JY21wL2hzICByMyxyMgotCWJmICAgICAgcmVwZWF0MAorCWFkZAkjMSwgcjIKKwljbXAvaHMJcjMsIHIyCisJYmYJcmVwZWF0MAogCW5vcAogCiAJLyogYnNjX3NldHRpbmcgKi8KLQltb3YubAlNTVNFTFJfQSxyMQotCW1vdi5sCU1NU0VMUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglNTVNFTFJfQSwgTU1TRUxSX0QKIAotCW1vdi5sCUJDUl9BLHIxCi0JbW92LmwJQkNSX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCUJDUl9BLCBCQ1JfRAogCi0JbW92LmwJQ1MwQkNSX0EscjEKLQltb3YubAlDUzBCQ1JfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQ1MwQkNSX0EsIENTMEJDUl9ECiAKLQltb3YubAlDUzFCQ1JfQSxyMQotCW1vdi5sCUNTMUJDUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDUzFCQ1JfQSwgQ1MxQkNSX0QKIAotCW1vdi5sCUNTMkJDUl9BLHIxCi0JbW92LmwJQ1MyQkNSX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCUNTMkJDUl9BLCBDUzJCQ1JfRAogCi0JbW92LmwJQ1M0QkNSX0EscjEKLQltb3YubAlDUzRCQ1JfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQ1M0QkNSX0EsIENTNEJDUl9ECiAKLQltb3YubAlDUzVCQ1JfQSxyMQotCW1vdi5sCUNTNUJDUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDUzVCQ1JfQSwgQ1M1QkNSX0QKIAotCW1vdi5sCUNTNkJDUl9BLHIxCi0JbW92LmwJQ1M2QkNSX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCUNTNkJDUl9BLCBDUzZCQ1JfRAogCi0JbW92LmwJQ1MwV0NSX0EscjEKLQltb3YubAlDUzBXQ1JfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQ1MwV0NSX0EsIENTMFdDUl9ECiAKLQltb3YubAlDUzFXQ1JfQSxyMQotCW1vdi5sCUNTMVdDUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDUzFXQ1JfQSwgQ1MxV0NSX0QKIAotCW1vdi5sCUNTMldDUl9BLHIxCi0JbW92LmwJQ1MyV0NSX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCUNTMldDUl9BLCBDUzJXQ1JfRAogCi0JbW92LmwJQ1M0V0NSX0EscjEKLQltb3YubAlDUzRXQ1JfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQ1M0V0NSX0EsIENTNFdDUl9ECiAKLQltb3YubAlDUzVXQ1JfQSxyMQotCW1vdi5sCUNTNVdDUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDUzVXQ1JfQSwgQ1M1V0NSX0QKIAotCW1vdi5sCUNTNldDUl9BLHIxCi0JbW92LmwJQ1M2V0NSX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCUNTNldDUl9BLCBDUzZXQ1JfRAogCi0JbW92LmwJQ1M1UENSX0EscjEKLQltb3YubAlDUzVQQ1JfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJQ1M1UENSX0EsIENTNVBDUl9ECiAKLQltb3YubAlDUzZQQ1JfQSxyMQotCW1vdi5sCUNTNlBDUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDUzZQQ1JfQSwgQ1M2UENSX0QKIAogCS8qIGRkcl9zZXR0aW5nICovCiAJLyogd2FpdCAyMDB1cyAqLwotCW1vdi5sICAgUkVQRUFUMF9SMyxyMwotCW1vdiAgICAgIzAscjIKKwltb3YubAlSRVBFQVQwX1IzLCByMworCW1vdgkjMCwgcjIKIHJlcGVhdDE6Ci0JYWRkICAgICAjMSxyMgotCWNtcC9ocyAgcjMscjIKLQliZiAgICAgIHJlcGVhdDEKKwlhZGQJIzEsIHIyCisJY21wL2hzCXIzLCByMgorCWJmCXJlcGVhdDEKIAlub3AKIAotCW1vdi5sICAgTUlNX1VfQSxyMAotCW1vdi5sICAgTUlNX1VfRCxyMQorCW1vdi5sCU1JTV9VX0EsIHIwCisJbW92LmwJTUlNX1VfRCwgcjEKIAlzeW5jbwotCW1vdi5sICAgcjEsQHIwCisJbW92LmwJcjEsIEByMAogCXN5bmNvCiAKLQltb3YubAlNSU1fTF9BLHIwCi0JbW92LmwJTUlNX0xfRDAscjEKKwltb3YubAlNSU1fTF9BLCByMAorCW1vdi5sCU1JTV9MX0QwLCByMQogCXN5bmNvCi0JbW92LmwJcjEsQHIwCisJbW92LmwJcjEsIEByMAogCXN5bmNvCiAKLQltb3YubCAgIFNUUl9MX0EscjAKLQltb3YubCAgIFNUUl9MX0QscjEKKwltb3YubAlTVFJfTF9BLCByMAorCW1vdi5sCVNUUl9MX0QsIHIxCiAJc3luY28KLQltb3YubCAgIHIxLEByMAorCW1vdi5sCXIxLCBAcjAKIAlzeW5jbwogCi0JbW92LmwgICBTRFJfTF9BLHIwCi0JbW92LmwgICBTRFJfTF9ELHIxCisJbW92LmwJU0RSX0xfQSwgcjAKKwltb3YubAlTRFJfTF9ELCByMQogCXN5bmNvCi0JbW92LmwgICByMSxAcjAKKwltb3YubAlyMSwgQHIwCiAJc3luY28KIAogCW5vcApAQCAtMjIwLDE5MyArMTYyLDE5MyBAQAogCW5vcAogCW5vcAogCi0JbW92LmwgICBTQ1JfTF9BLHIwCi0JbW92LmwgICBTQ1JfTF9EMCxyMQorCW1vdi5sCVNDUl9MX0EsIHIwCisJbW92LmwJU0NSX0xfRDAsIHIxCiAJc3luY28KLQltb3YubCAgIHIxLEByMAorCW1vdi5sCXIxLCBAcjAKIAlzeW5jbwogCi0JbW92LmwgICBTQ1JfTF9BLHIwCi0JbW92LmwgICBTQ1JfTF9EMSxyMQorCW1vdi5sCVNDUl9MX0EsIHIwCisJbW92LmwJU0NSX0xfRDEsIHIxCiAJc3luY28KLQltb3YubCAgIHIxLEByMAorCW1vdi5sCXIxLCBAcjAKIAlzeW5jbwogCiAJbm9wCiAJbm9wCiAJbm9wCiAKLQltb3YubCAgIEVNUlNfQSxyMAotCW1vdi5sICAgRU1SU19ELHIxCisJbW92LmwJRU1SU19BLCByMAorCW1vdi5sCUVNUlNfRCwgcjEKIAlzeW5jbwotCW1vdi5sICAgcjEsQHIwCisJbW92LmwJcjEsIEByMAogCXN5bmNvCiAKIAlub3AKIAlub3AKIAlub3AKIAotCW1vdi5sICAgTVJTMV9BLHIwCi0JbW92LmwgICBNUlMxX0QscjEKKwltb3YubAlNUlMxX0EsIHIwCisJbW92LmwJTVJTMV9ELCByMQogCXN5bmNvCi0JbW92LmwgICByMSxAcjAKKwltb3YubAlyMSwgQHIwCiAJc3luY28KIAogCW5vcAogCW5vcAogCW5vcAogCi0JbW92LmwgICBTQ1JfTF9BLHIwCi0JbW92LmwgICBTQ1JfTF9EMixyMQorCW1vdi5sCVNDUl9MX0EsIHIwCisJbW92LmwJU0NSX0xfRDIsIHIxCiAJc3luY28KLQltb3YubCAgIHIxLEByMAorCW1vdi5sCXIxLCBAcjAKIAlzeW5jbwogCiAJbm9wCiAJbm9wCiAJbm9wCiAKLQltb3YubCAgIFNDUl9MX0EscjAKLQltb3YubCAgIFNDUl9MX0QzLHIxCisJbW92LmwJU0NSX0xfQSwgcjAKKwltb3YubAlTQ1JfTF9EMywgcjEKIAlzeW5jbwotCW1vdi5sICAgcjEsQHIwCisJbW92LmwJcjEsIEByMAogCXN5bmNvCiAKIAlub3AKIAlub3AKIAlub3AKIAotCW1vdi5sICAgU0NSX0xfQSxyMAotCW1vdi5sICAgU0NSX0xfRDQscjEKKwltb3YubAlTQ1JfTF9BLCByMAorCW1vdi5sCVNDUl9MX0Q0LCByMQogCXN5bmNvCi0JbW92LmwgICByMSxAcjAKKwltb3YubAlyMSwgQHIwCiAJc3luY28KIAogCW5vcAogCW5vcAogCW5vcAogCi0JbW92LmwgICBNUlMyX0EscjAKLQltb3YubCAgIE1SUzJfRCxyMQorCW1vdi5sCU1SUzJfQSwgcjAKKwltb3YubAlNUlMyX0QsIHIxCiAJc3luY28KLQltb3YubCAgIHIxLEByMAorCW1vdi5sCXIxLCBAcjAKIAlzeW5jbwogCiAJbm9wCiAJbm9wCiAJbm9wCiAKLQltb3YubCAgIFNDUl9MX0EscjAKLQltb3YubCAgIFNDUl9MX0Q1LHIxCisJbW92LmwJU0NSX0xfQSwgcjAKKwltb3YubAlTQ1JfTF9ENSwgcjEKIAlzeW5jbwotCW1vdi5sICAgcjEsQHIwCisJbW92LmwJcjEsIEByMAogCXN5bmNvCiAKIAkvKiB3YWl0IDIwMHVzICovCi0JbW92LmwgICBSRVBFQVQwX1IxLHIzCi0JbW92ICAgICAjMCxyMgorCW1vdi5sCVJFUEVBVDBfUjEsIHIzCisJbW92CSMwLCByMgogcmVwZWF0MjoKLQlhZGQgICAgICMxLHIyCi0JY21wL2hzICByMyxyMgotCWJmICAgICAgcmVwZWF0MgorCWFkZAkjMSwgcjIKKwljbXAvaHMJcjMsIHIyCisJYmYJcmVwZWF0MgogCiAJc3luY28KIAotCW1vdi5sICAgTUlNX0xfQSxyMAotCW1vdi5sICAgTUlNX0xfRDEscjEKKwltb3YubAlNSU1fTF9BLCByMAorCW1vdi5sCU1JTV9MX0QxLCByMQogCXN5bmNvCi0JbW92LmwgICByMSxAcjAKKwltb3YubAlyMSwgQHIwCiAJc3luY28KIAogCXJ0cwogCW5vcAogCS5hbGlnbgk0CiAKLVJXVENTUl9EXzE6CQkJCS53b3JkCTB4QTUwNwotUldUQ1NSX0RfMjoJCQkJLndvcmQJMHhBNTA3Ci1SV1RDTlRfRDoJCQkJLndvcmQJMHg1QTAwCitSV1RDU1JfRF8xOgkJLndvcmQJMHhBNTA3CitSV1RDU1JfRF8yOgkJLndvcmQJMHhBNTA3CitSV1RDTlRfRDoJCS53b3JkCTB4NUEwMAogCS5hbGlnbgkyCiAKLUJCR19QTU1SX0E6CQkJCS5sb25nCTB4RkY4MDAwMTAKLUJCR19QTVNSMV9BOgkJCS5sb25nCTB4RkY4MDAwMTQKLUJCR19QTVNSMl9BOgkJCS5sb25nCTB4RkY4MDAwMTgKLUJCR19QTVNSM19BOgkJCS5sb25nCTB4RkY4MDAwMUMKLUJCR19QTVNSNF9BOgkJCS5sb25nCTB4RkY4MDAwMjAKLUJCR19QTVNSR19BOgkJCS5sb25nCTB4RkY4MDAwMjQKK0JCR19QTU1SX0E6CQkubG9uZwkweEZGODAwMDEwCitCQkdfUE1TUjFfQToJCS5sb25nCTB4RkY4MDAwMTQKK0JCR19QTVNSMl9BOgkJLmxvbmcJMHhGRjgwMDAxOAorQkJHX1BNU1IzX0E6CQkubG9uZwkweEZGODAwMDFDCitCQkdfUE1TUjRfQToJCS5sb25nCTB4RkY4MDAwMjAKK0JCR19QTVNSR19BOgkJLmxvbmcJMHhGRjgwMDAyNAogCi1CQkdfUE1NUl9EX1BNU1IxOiAgICAgICAubG9uZwkweGZmZmZiZmZkCi1CQkdfUE1TUjFfRDogICAgICAgICAgICAubG9uZwkweDAwMDA0MDAyCi1CQkdfUE1NUl9EX1BNU1IyOiAgICAgICAubG9uZwkweGZjMjFhN2ZmCi1CQkdfUE1TUjJfRDogICAgICAgICAgICAubG9uZwkweDAzZGU1ODAwCi1CQkdfUE1NUl9EX1BNU1IzOiAgICAgICAubG9uZwkweGZmZmZmZmY4Ci1CQkdfUE1TUjNfRDogICAgICAgICAgICAubG9uZwkweDAwMDAwMDA3Ci1CQkdfUE1NUl9EX1BNU1I0OiAgICAgICAubG9uZwkweGRmZmRmZmY5Ci1CQkdfUE1TUjRfRDogICAgICAgICAgICAubG9uZwkweDIwMDIwMDA2Ci1CQkdfUE1NUl9EX1BNU1JHOiAgICAgICAubG9uZwkweGZmZmZmZmZmCi1CQkdfUE1TUkdfRDogICAgICAgICAgICAubG9uZwkweDAwMDAwMDAwCitCQkdfUE1NUl9EX1BNU1IxOgkubG9uZwkweGZmZmZiZmZkCitCQkdfUE1TUjFfRDoJCS5sb25nCTB4MDAwMDQwMDIKK0JCR19QTU1SX0RfUE1TUjI6CS5sb25nCTB4ZmMyMWE3ZmYKK0JCR19QTVNSMl9EOgkJLmxvbmcJMHgwM2RlNTgwMAorQkJHX1BNTVJfRF9QTVNSMzoJLmxvbmcJMHhmZmZmZmZmOAorQkJHX1BNU1IzX0Q6CQkubG9uZwkweDAwMDAwMDA3CitCQkdfUE1NUl9EX1BNU1I0OgkubG9uZwkweGRmZmRmZmY5CitCQkdfUE1TUjRfRDoJCS5sb25nCTB4MjAwMjAwMDYKK0JCR19QTU1SX0RfUE1TUkc6CS5sb25nCTB4ZmZmZmZmZmYKK0JCR19QTVNSR19EOgkJLmxvbmcJMHgwMDAwMDAwMAogCi1GUlFDUl9BOgkJCQkubG9uZwlGUlFDUgotRExMQ1NSX0E6CQkJCS5sb25nCTB4ZmZjNDAwMTAKLUZSUUNSX0Q6CQkJCS5sb25nCTB4NDAyMzMwMzUKLURMTENTUl9EOgkJCQkubG9uZwkweDAwMDAwMDAwCitGUlFDUl9BOgkJLmxvbmcJRlJRQ1IKK0RMTENTUl9BOgkJLmxvbmcJMHhmZmM0MDAxMAorRlJRQ1JfRDoJCS5sb25nCTB4NDAyMzMwMzUKK0RMTENTUl9EOgkJLmxvbmcJMHgwMDAwMDAwMAogCiAvKiBmb3IgRERSLVNEUkFNICovCi1NSU1fVV9BOgkJCQkubG9uZwlNSU1fMQotTUlNX0xfQToJCQkJLmxvbmcJTUlNXzIKLVNDUl9VX0E6CQkJCS5sb25nCVNDUl8xCi1TQ1JfTF9BOgkJCQkubG9uZwlTQ1JfMgotU1RSX1VfQToJCQkJLmxvbmcJU1RSXzEKLVNUUl9MX0E6CQkJCS5sb25nCVNUUl8yCi1TRFJfVV9BOgkJCQkubG9uZwlTRFJfMQotU0RSX0xfQToJCQkJLmxvbmcJU0RSXzIKK01JTV9VX0E6CQkubG9uZwlNSU1fMQorTUlNX0xfQToJCS5sb25nCU1JTV8yCitTQ1JfVV9BOgkJLmxvbmcJU0NSXzEKK1NDUl9MX0E6CQkubG9uZwlTQ1JfMgorU1RSX1VfQToJCS5sb25nCVNUUl8xCitTVFJfTF9BOgkJLmxvbmcJU1RSXzIKK1NEUl9VX0E6CQkubG9uZwlTRFJfMQorU0RSX0xfQToJCS5sb25nCVNEUl8yCiAKLUVNUlNfQToJCQkJCS5sb25nCTB4RkVDMDIwMDAKLU1SUzFfQToJCQkJCS5sb25nCTB4RkVDMDBCMDgKLU1SUzJfQToJCQkJCS5sb25nCTB4RkVDMDAzMDgKK0VNUlNfQToJCQkubG9uZwkweEZFQzAyMDAwCitNUlMxX0E6CQkJLmxvbmcJMHhGRUMwMEIwOAorTVJTMl9BOgkJCS5sb25nCTB4RkVDMDAzMDgKIAotTUlNX1VfRDoJCQkJLmxvbmcJMHgwMDAwNDAwMAotTUlNX0xfRDA6CQkJCS5sb25nCTB4MDNlODAwMDkKLU1JTV9MX0QxOgkJCQkubG9uZwkweDAzZTgwMjA5Ci1TQ1JfTF9EMDoJCQkJLmxvbmcJMHgzCi1TQ1JfTF9EMToJCQkJLmxvbmcJMHgyCi1TQ1JfTF9EMjoJCQkJLmxvbmcJMHgyCi1TQ1JfTF9EMzoJCQkJLmxvbmcJMHg0Ci1TQ1JfTF9ENDoJCQkJLmxvbmcJMHg0Ci1TQ1JfTF9ENToJCQkJLmxvbmcJMHgwCi1TVFJfTF9EOgkJCQkubG9uZwkweDAwMGYwMDAwCi1TRFJfTF9EOgkJCQkubG9uZwkweDAwMDAwNDAwCi1FTVJTX0Q6CQkJCQkubG9uZwkweDAKLU1SUzFfRDoJCQkJCS5sb25nCTB4MAotTVJTMl9EOgkJCQkJLmxvbmcJMHgwCitNSU1fVV9EOgkJLmxvbmcJMHgwMDAwNDAwMAorTUlNX0xfRDA6CQkubG9uZwkweDAzZTgwMDA5CitNSU1fTF9EMToJCS5sb25nCTB4MDNlODAyMDkKK1NDUl9MX0QwOgkJLmxvbmcJMHgzCitTQ1JfTF9EMToJCS5sb25nCTB4MgorU0NSX0xfRDI6CQkubG9uZwkweDIKK1NDUl9MX0QzOgkJLmxvbmcJMHg0CitTQ1JfTF9ENDoJCS5sb25nCTB4NAorU0NSX0xfRDU6CQkubG9uZwkweDAKK1NUUl9MX0Q6CQkubG9uZwkweDAwMGYwMDAwCitTRFJfTF9EOgkJLmxvbmcJMHgwMDAwMDQwMAorRU1SU19EOgkJCS5sb25nCTB4MAorTVJTMV9EOgkJCS5sb25nCTB4MAorTVJTMl9EOgkJCS5sb25nCTB4MAogCiAvKiBDYWNoZSBDb250cm9sbGVyICovCi1DQ1JfQToJCS5sb25nCUNDUgotTU1VQ1JfQToJLmxvbmcJTU1VQ1IKLVJXVENOVF9BOgkubG9uZwlXVENOVAorQ0NSX0E6CQkJLmxvbmcJQ0NSCitNTVVDUl9BOgkJLmxvbmcJTU1VQ1IKK1JXVENOVF9BOgkJLmxvbmcJV1RDTlQKIAotQ0NSX0Q6CQkubG9uZwkweDAwMDAwOTBiCi1DQ1JfRF8yOgkubG9uZwkweDAwMDAwMTAzCi1NTVVDUl9EOgkubG9uZwkweDAwMDAwMDA0Ci1NU1RQQ1IwX0Q6CS5sb25nCTB4MDAwMDEwMDEKLU1TVFBDUjJfRDoJLmxvbmcJMHhmZmZmZmZmZgorQ0NSX0Q6CQkJLmxvbmcJMHgwMDAwMDkwYgorQ0NSX0RfMjoJCS5sb25nCTB4MDAwMDAxMDMKK01NVUNSX0Q6CQkubG9uZwkweDAwMDAwMDA0CitNU1RQQ1IwX0Q6CQkubG9uZwkweDAwMDAxMDAxCitNU1RQQ1IyX0Q6CQkubG9uZwkweGZmZmZmZmZmCiAKIC8qIGxvY2FsIEJ1cyBTdGF0ZSBDb250cm9sbGVyICovCi1NTVNFTFJfQTogICAubG9uZyAgIE1NU0VMUgotQkNSX0E6ICAgICAgLmxvbmcgICBCQ1IKLUNTMEJDUl9BOiAgIC5sb25nICAgQ1MwQkNSCi1DUzFCQ1JfQTogICAubG9uZyAgIENTMUJDUgotQ1MyQkNSX0E6ICAgLmxvbmcgICBDUzJCQ1IKLUNTNEJDUl9BOiAgIC5sb25nICAgQ1M0QkNSCi1DUzVCQ1JfQTogICAubG9uZyAgIENTNUJDUgotQ1M2QkNSX0E6ICAgLmxvbmcgICBDUzZCQ1IKLUNTMFdDUl9BOiAgIC5sb25nICAgQ1MwV0NSCi1DUzFXQ1JfQTogICAubG9uZyAgIENTMVdDUgotQ1MyV0NSX0E6ICAgLmxvbmcgICBDUzJXQ1IKLUNTNFdDUl9BOiAgIC5sb25nICAgQ1M0V0NSCi1DUzVXQ1JfQTogICAubG9uZyAgIENTNVdDUgotQ1M2V0NSX0E6ICAgLmxvbmcgICBDUzZXQ1IKLUNTNVBDUl9BOiAgIC5sb25nICAgQ1M1UENSCi1DUzZQQ1JfQTogICAubG9uZyAgIENTNlBDUgorTU1TRUxSX0E6CQkubG9uZwlNTVNFTFIKK0JDUl9BOgkJCS5sb25nCUJDUgorQ1MwQkNSX0E6CQkubG9uZwlDUzBCQ1IKK0NTMUJDUl9BOgkJLmxvbmcJQ1MxQkNSCitDUzJCQ1JfQToJCS5sb25nCUNTMkJDUgorQ1M0QkNSX0E6CQkubG9uZwlDUzRCQ1IKK0NTNUJDUl9BOgkJLmxvbmcJQ1M1QkNSCitDUzZCQ1JfQToJCS5sb25nCUNTNkJDUgorQ1MwV0NSX0E6CQkubG9uZwlDUzBXQ1IKK0NTMVdDUl9BOgkJLmxvbmcJQ1MxV0NSCitDUzJXQ1JfQToJCS5sb25nCUNTMldDUgorQ1M0V0NSX0E6CQkubG9uZwlDUzRXQ1IKK0NTNVdDUl9BOgkJLmxvbmcJQ1M1V0NSCitDUzZXQ1JfQToJCS5sb25nCUNTNldDUgorQ1M1UENSX0E6CQkubG9uZwlDUzVQQ1IKK0NTNlBDUl9BOgkJLmxvbmcJQ1M2UENSCiAKIE1NU0VMUl9EOgkJLmxvbmcJMHhBNUE1MDAwMwogQkNSX0Q6CQkJLmxvbmcJMHgwMDAwMDAwMApAQCAtNDI1LDUgKzM2Nyw1IEBACiBDUzVQQ1JfRDoJCS5sb25nCTB4NzcwMDAwMDAKIENTNlBDUl9EOgkJLmxvbmcJMHg3NzAwMDAwMAogCi1SRVBFQVQwX1IzOgkubG9uZyAgIDB4MDAwMDIwMDAKLVJFUEVBVDBfUjE6CS5sb25nICAgMHgwMDAwMjAwCitSRVBFQVQwX1IzOgkJLmxvbmcJMHgwMDAwMjAwMAorUkVQRUFUMF9SMToJCS5sb25nCTB4MDAwMDIwMApkaWZmIC0tZ2l0IGEvYm9hcmQvcmVuZXNhcy9yc2s3MjAzL01ha2VmaWxlIGIvYm9hcmQvcmVuZXNhcy9yc2s3MjAzL01ha2VmaWxlCmluZGV4IDczNjVkMTkuLjU0MTIwMTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL3JlbmVzYXMvcnNrNzIwMy9NYWtlZmlsZQorKysgYi9ib2FyZC9yZW5lc2FzL3JzazcyMDMvTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDEwIEBACiBPQkpTCTo9IHJzazcyMDMubwogU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCiAKK0xJQgk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChMSUIpKQorT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChPQkpTKSkKK1NPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKKwogJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKIApkaWZmIC0tZ2l0IGEvYm9hcmQvcmVuZXNhcy9yc2s3MjAzL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3JlbmVzYXMvcnNrNzIwMy9sb3dsZXZlbF9pbml0LlMKaW5kZXggZTRkNmY5ZS4uN2I5ZWNkOCAxMDA2NDQKLS0tIGEvYm9hcmQvcmVuZXNhcy9yc2s3MjAzL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9yZW5lc2FzL3JzazcyMDMvbG93bGV2ZWxfaW5pdC5TCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9tYWNyby5oPgogCiAJLmdsb2JhbAlsb3dsZXZlbF9pbml0CiAKQEAgLTI5LDE1MyArMzAsODkgQEAKIAogbG93bGV2ZWxfaW5pdDoKIAkvKiBDYWNoZSBzZXR0aW5nICovCi0JbW92LmwgQ0NSMV9BICxyMQotCW1vdi5sIENDUjFfRCAscjAKLQltb3YubCByMCxAcjEKKwl3cml0ZTMyCUNDUjFfQSAsQ0NSMV9ECiAKIAkvKiBDb25maWd1cmVQb3J0UGlucyAqLwotCW1vdi5sIFBFQ1JMM19BLCByMQotCW1vdi5sIFBFQ1JMM19ELCByMAotCW1vdi53IHIwLEByMQorCXdyaXRlMTYJUEVDUkwzX0EsIFBFQ1JMM19ECiAKLQltb3YubCBQQ0NSTDRfQSwgcjEKLQltb3YubCBQQ0NSTDRfRDAsIHIwCi0JbW92LncgcjAsQHIxCisJd3JpdGUxNglQQ0NSTDRfQSwgUENDUkw0X0QwCiAKLQltb3YubCBQRUNSTDRfQSwgcjEKLQltb3YubCBQRUNSTDRfRDAsIHIwCi0JbW92LncgcjAsQHIxCisJd3JpdGUxNglQRUNSTDRfQSwgUEVDUkw0X0QwCiAKLQltb3YubCBQRUlPUkxfQSwgcjEKLQltb3YubCBQRUlPUkxfRDAsIHIwCi0JbW92LncgcjAsQHIxCisJd3JpdGUxNglQRUlPUkxfQSwgUEVJT1JMX0QwCiAKLQltb3YubCBQQ0lPUkxfQSwgcjEKLQltb3YubCBQQ0lPUkxfRCwgcjAKLQltb3YudyByMCxAcjEKKwl3cml0ZTE2CVBDSU9STF9BLCBQQ0lPUkxfRAogCi0JbW92LmwgUEZDUkgyX0EsIHIxCi0JbW92LmwgUEZDUkgyX0QsIHIwCi0JbW92LncgcjAsQHIxCisJd3JpdGUxNglQRkNSSDJfQSwgUEZDUkgyX0QKIAotCW1vdi5sIFBGQ1JIM19BLCByMQotCW1vdi5sIFBGQ1JIM19ELCByMAotCW1vdi53IHIwLEByMQorCXdyaXRlMTYJUEZDUkgzX0EsIFBGQ1JIM19ECiAKLQltb3YubCBQRkNSSDFfQSwgcjEKLQltb3YubCBQRkNSSDFfRCwgcjAKLQltb3YudyByMCxAcjEKKwl3cml0ZTE2CVBGQ1JIMV9BLCBQRkNSSDFfRAogCi0JbW92LmwgUEZJT1JIX0EsIHIxCi0JbW92LmwgUEZJT1JIX0QsIHIwCi0JbW92LncgcjAsQHIxCisJd3JpdGUxNglQRklPUkhfQSwgUEZJT1JIX0QKIAotCW1vdi5sIFBFQ1JMMV9BLCByMQotCW1vdi5sIFBFQ1JMMV9EMCwgcjAKLQltb3YudyByMCxAcjEKKwl3cml0ZTE2CVBFQ1JMMV9BLCBQRUNSTDFfRDAKIAotCW1vdi5sIFBFSU9STF9BLCByMQotCW1vdi5sIFBFSU9STF9EMSwgcjAKLQltb3YudyByMCxAcjEKKwl3cml0ZTE2CVBFSU9STF9BLCBQRUlPUkxfRDEKIAogCS8qIENvbmZpZ3VyZSBPcGVyYXRpbmcgRnJlcXVlbmN5ICovCi0JbW92LmwgV1RDU1JfQSAscjEKLQltb3YubCBXVENTUl9EMCAscjAKLQltb3YudyByMCxAcjEKKwl3cml0ZTE2CVdUQ1NSX0EsIFdUQ1NSX0QwCiAKLQltb3YubCBXVENTUl9BICxyMQotCW1vdi5sIFdUQ1NSX0QxICxyMAotCW1vdi53IHIwLEByMQorCXdyaXRlMTYJV1RDU1JfQSwgV1RDU1JfRDEKIAotCW1vdi5sIFdUQ05UX0EgLHIxCi0JbW92LmwgV1RDTlRfRCAscjAKLQltb3YudyByMCxAcjEKKwl3cml0ZTE2CVdUQ05UX0EsIFdUQ05UX0QKIAogCS8qIFNldCBjbG9jayBtb2RlKi8KLQltb3YubCBGUlFDUl9BLHIxCi0JbW92LmwgRlJRQ1JfRCxyMAotCW1vdi53IHIwLEByMQorCXdyaXRlMTYJRlJRQ1JfQSwgRlJRQ1JfRAogCiAJLyogQ29uZmlndXJlIEJ1cyBBbmQgTWVtb3J5ICovCiBpbml0X2JzY19jczA6Ci0JbW92LmwgICBQQ0NSTDRfQSxyMQotCW1vdi5sICAgUENDUkw0X0QxLHIwCi0JbW92LncgICByMCxAcjEKKwl3cml0ZTE2CVBDQ1JMNF9BLCBQQ0NSTDRfRDEKIAotCW1vdi5sICAgUEVDUkwxX0EscjEKLQltb3YubCAgIFBFQ1JMMV9EMSxyMAotCW1vdi53ICAgcjAsQHIxCisJd3JpdGUxNglQRUNSTDFfQSwgUEVDUkwxX0QxCiAKLQltb3YubCBDTU5DUl9BLHIxCi0JbW92LmwgQ01OQ1JfRCxyMAotCW1vdi5sIHIwLEByMQorCXdyaXRlMzIJQ01OQ1JfQSwgQ01OQ1JfRAogCi0JbW92LmwgU0MwQkNSX0EscjEKLQltb3YubCBTQzBCQ1JfRCxyMAotCW1vdi5sIHIwLEByMQorCXdyaXRlMzIJU0MwQkNSX0EsIFNDMEJDUl9ECiAKLQltb3YubCBDUzBXQ1JfQSxyMQotCW1vdi5sIENTMFdDUl9ELHIwCi0JbW92LmwgcjAsQHIxCisJd3JpdGUzMglDUzBXQ1JfQSwgQ1MwV0NSX0QKIAogaW5pdF9ic2NfY3MxOgotCW1vdi5sICAgUEVDUkw0X0EscjEKLQltb3YubCAgIFBFQ1JMNF9EMSxyMAotCW1vdi53ICAgcjAsQHIxCisJd3JpdGUxNglQRUNSTDRfQSwgUEVDUkw0X0QxCiAKLQltb3YubCBDUzFXQ1JfQSxyMQotCW1vdi5sIENTMVdDUl9ELHIwCi0JbW92LmwgcjAsQHIxCisJd3JpdGUzMglDUzFXQ1JfQSwgQ1MxV0NSX0QKIAogaW5pdF9zZHJhbToKLQltb3YubAlQQ0NSTDJfQSxyMQotCW1vdi5sCVBDQ1JMMl9ELHIwCi0JbW92LncJcjAsQHIxCisJd3JpdGUxNglQQ0NSTDJfQSwgUENDUkwyX0QKIAotCW1vdi5sCVBDQ1JMNF9BLHIxCi0JbW92LmwJUENDUkw0X0QyLHIwCi0JbW92LncgICByMCxAcjEKKwl3cml0ZTE2CVBDQ1JMNF9BLCBQQ0NSTDRfRDIKIAotCW1vdi5sICAgUENDUkwxX0EscjEKLQltb3YubAlQQ0NSTDFfRCxyMAotCW1vdi53ICAgcjAsQHIxCisJd3JpdGUxNglQQ0NSTDFfQSwgUENDUkwxX0QKIAotCW1vdi5sICAgUENDUkwzX0EscjEKLQltb3YubAlQQ0NSTDNfRCxyMAotCW1vdi53ICAgcjAsQHIxCisJd3JpdGUxNglQQ0NSTDNfQSwgUENDUkwzX0QKIAotCW1vdi5sIENTM0JDUl9BLHIxCi0JbW92LmwgQ1MzQkNSX0QscjAKLQltb3YubCByMCxAcjEKKwl3cml0ZTMyCUNTM0JDUl9BLCBDUzNCQ1JfRAogCi0JbW92LmwgQ1MzV0NSX0EscjEKLQltb3YubCBDUzNXQ1JfRCxyMAotCW1vdi5sIHIwLEByMQorCXdyaXRlMzIJQ1MzV0NSX0EsIENTM1dDUl9ECiAKLQltb3YubCBTRENSX0EscjEKLQltb3YubCBTRENSX0QscjAKLQltb3YubCByMCxAcjEKKwl3cml0ZTMyCVNEQ1JfQSwgU0RDUl9ECiAKLQltb3YubCBSVENPUl9BLHIxCi0JbW92LmwgUlRDT1JfRCxyMAotCW1vdi5sIHIwLEByMQorCXdyaXRlMzIJUlRDT1JfQSwgUlRDT1JfRAogCi0JbW92LmwgUlRDU1JfQSxyMQotCW1vdi5sIFJUQ1NSX0QscjAKLQltb3YubCByMCxAcjEKKwl3cml0ZTMyCVJUQ1NSX0EsIFJUQ1NSX0QKIAogCS8qIHdhaXQgMjAwdXMgKi8KLQltb3YubCAgIFJFUEVBVF9ELHIzCi0JbW92ICAgICAjMCxyMgorCW1vdi5sCVJFUEVBVF9ELCByMworCW1vdgkjMCwgcjIKIHJlcGVhdDA6Ci0JYWRkICAgICAjMSxyMgotCWNtcC9ocyAgcjMscjIKLQliZiAgICAgIHJlcGVhdDAKKwlhZGQJIzEsIHIyCisJY21wL2hzCXIzLCByMgorCWJmCXJlcGVhdDAKIAlub3AKIAotCW1vdi5sIFNEUkFNX01PREUsIHIxCi0JbW92ICAgIzAscjAKLQltb3YubCByMCwgQHIxCisJbW92LmwJU0RSQU1fTU9ERSwgcjEKKwltb3YJIzAsIHIwCisJbW92LmwJcjAsIEByMQogCiAJbm9wCiAJcnRzCkBAIC0yMDgsOCArMTQ1LDggQEAKIAogCiBXVENTUl9BOgkubG9uZyAweEZGRkUwMDAwCi1XVENTUl9EMDogCS5sb25nIDB4MDAwMEE1MTgKLVdUQ1NSX0QxOiAJLmxvbmcgMHgwMDAwQTUxRAorV1RDU1JfRDA6CS5sb25nIDB4MDAwMEE1MTgKK1dUQ1NSX0QxOgkubG9uZyAweDAwMDBBNTFECiBXVENOVF9BOgkubG9uZyAweEZGRkUwMDAyCiBXVENOVF9EOgkubG9uZyAweDAwMDA1QTg0CiBGUlFDUl9BOgkubG9uZyAweEZGRkUwMDEwCkBAIC0yNTksNyArMTk2LDcgQEAKIFNUQkNSNF9EOgkubG9uZyAweDAwMDAwMDA4CiBTVEJDUjVfQToJLmxvbmcgMHhGRkZFMDQxMAogU1RCQ1I1X0Q6CS5sb25nIDB4MDAwMDAwMDAKLVNUQkNSNl9BOiAJLmxvbmcgMHhGRkZFMDQxNAorU1RCQ1I2X0E6CS5sb25nIDB4RkZGRTA0MTQKIFNUQkNSNl9EOgkubG9uZyAweDAwMDAwMDAyCiBTRFJBTV9NT0RFOgkubG9uZyAweEZGRkM1MDQwCiBSRVBFQVRfRDoJLmxvbmcgMHgwMDAwOUM0MApkaWZmIC0tZ2l0IGEvYm9hcmQvcmVuZXNhcy9zaDc3NjNyZHAvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvcmVuZXNhcy9zaDc3NjNyZHAvbG93bGV2ZWxfaW5pdC5TCmluZGV4IDJhNDRlZWUuLjM3NDdiZjYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3JlbmVzYXMvc2g3NzYzcmRwL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9yZW5lc2FzL3NoNzc2M3JkcC9sb3dsZXZlbF9pbml0LlMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL21hY3JvLmg+CiAKIAkuZ2xvYmFsCWxvd2xldmVsX2luaXQKIApAQCAtMzMsMjE4ICszNCwxNDEgQEAKIAogbG93bGV2ZWxfaW5pdDoKIAotCW1vdi5sICAgV0RUQ1NSX0EsIHIxCS8qIFdhdGNoZG9nIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgKi8KLQltb3YubCAgIFdEVENTUl9ELCByMAotCW1vdi5sICAgcjAsIEByMQorCXdyaXRlMzIJV0RUQ1NSX0EsIFdEVENTUl9ECS8qIFdhdGNoZG9nIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgKi8KIAotCW1vdi5sICAgV0RUU1RfQSwgcjEJCS8qIFdhdGNoZG9nIFN0b3AgVGltZSBSZWdpc3RlciAqLwotCW1vdi5sICAgV0RUU1RfRCwgcjAKLQltb3YubCAgIHIwLCBAcjEKKwl3cml0ZTMyCVdEVFNUX0EsIFdEVFNUX0QJLyogV2F0Y2hkb2cgU3RvcCBUaW1lIFJlZ2lzdGVyICovCiAKLQltb3YubCAgIFdEVEJTVF9BLCByMQkvKiAweEZGQ0MwMDA4IChXYXRjaGRvZyBCYXNlIFN0b3AgVGltZSBSZWdpc3RlciAqLwotCW1vdi5sICAgV0RUQlNUX0QsIHIwCi0JbW92LmwgICByMCwgQHIxCisJd3JpdGUzMglXRFRCU1RfQSwgV0RUQlNUX0QJLyoKKwkJCQkJICogMHhGRkNDMDAwOAorCQkJCQkgKiBXYXRjaGRvZyBCYXNlIFN0b3AgVGltZSBSZWdpc3RlcgorCQkJCQkgKi8KIAotCW1vdi5sCUNDUl9BLCByMQkJLyogQWRkcmVzcyBvZiBDYWNoZSBDb250cm9sIFJlZ2lzdGVyICovCi0JbW92LmwJQ0NSX0NBQ0hFX0lDSV9ELCByMAkvKiBJbnN0cnVjdGlvbiBDYWNoZSBJbnZhbGlkYXRlICovCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9DQUNIRV9JQ0lfRAkvKiBBZGRyZXNzIG9mIENhY2hlIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwkJCQkJLyogSW5zdHJ1Y3Rpb24gQ2FjaGUgSW52YWxpZGF0ZSAqLwogCi0JbW92LmwJTU1VQ1JfQSwgcjEJCS8qIEFkZHJlc3Mgb2YgTU1VIENvbnRyb2wgUmVnaXN0ZXIgKi8KLQltb3YubAlNTVVfQ09OVFJPTF9USV9ELCByMAkvKiBUSSA9PSBUTEIgSW52YWxpZGF0ZSBiaXQgKi8KLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglNTVVDUl9BLCBNTVVfQ09OVFJPTF9USV9ECS8qIE1NVSBDb250cm9sIFJlZ2lzdGVyICovCisJCQkJCQkvKiBUSSA9PSBUTEIgSW52YWxpZGF0ZSBiaXQgKi8KIAotCW1vdi5sCU1TVFBDUjBfQSwgcjEJLyogQWRkcmVzcyBvZiBQb3dlciBDb250cm9sIFJlZ2lzdGVyIDAgKi8KLQltb3YubAlNU1RQQ1IwX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJTVNUUENSMF9BLCBNU1RQQ1IwX0QJLyogQWRkcmVzcyBvZiBQb3dlciBDb250cm9sIFJlZ2lzdGVyIDAgKi8KIAotCW1vdi5sCU1TVFBDUjFfQSwgcjEJLyppIEFkZHJlc3Mgb2YgUG93ZXIgQ29udHJvbCBSZWdpc3RlciAxICovCi0JbW92LmwJTVNUUENSMV9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCU1TVFBDUjFfQSwgTVNUUENSMV9ECS8qIEFkZHJlc3Mgb2YgUG93ZXIgQ29udHJvbCBSZWdpc3RlciAxICovCiAKLQltb3YubAlSQU1DUl9BLHIxCi0JbW92LmwJUkFNQ1JfRCxyMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCVJBTUNSX0EsIFJBTUNSX0QKIAotCW1vdi5sCU1NU0VMUl9BLHIxCi0JbW92LmwJTU1TRUxSX0QscjAKKwltb3YubAlNTVNFTFJfQSwgcjEKKwltb3YubAlNTVNFTFJfRCwgcjAKIAlzeW5jbwogCW1vdi5sCXIwLCBAcjEKIAotCW1vdi5sCUByMSxyMgkJLyogZXhlY3V0ZSB0d28gcmVhZHMgYWZ0ZXIgc2V0dGluZyBNTVNFTFIqLwotCW1vdi5sCUByMSxyMgorCW1vdi5sCUByMSwgcjIJCS8qIGV4ZWN1dGUgdHdvIHJlYWRzIGFmdGVyIHNldHRpbmcgTU1TRUxSICovCisJbW92LmwJQHIxLCByMgogCXN5bmNvCiAKIAkvKiBpc3N1ZSBtZW1vcnkgcmVhZCAqLwotCW1vdi5sICAgRERSU0RfU1RBUlRfQSxyMQkvKiBtZW1vcnkgYWRkcmVzcyB0byByZWFkKi8KLQltb3YubCAgIEByMSxyMAorCW1vdi5sCUREUlNEX1NUQVJUX0EsIHIxCS8qIG1lbW9yeSBhZGRyZXNzIHRvIHJlYWQqLworCW1vdi5sCUByMSwgcjAKIAlzeW5jbwogCi0JbW92LmwJTUlNOF9BLHIxCi0JbW92LmwJTUlNOF9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglNSU04X0EsIE1JTThfRAogCi0JbW92LmwJTUlNQ19BLHIxCi0JbW92LmwJTUlNQ19EMSxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJTUlNQ19BLCBNSU1DX0QxCiAKLQltb3YubAlTVFJDX0EscjEKLQltb3YubAlTVFJDX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCVNUUkNfQSwgU1RSQ19ECiAKLQltb3YubAlTRFI0X0EscjEKLQltb3YubAlTRFI0X0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCVNEUjRfQSwgU0RSNF9ECiAKLQltb3YubAlNSU1DX0EscjEKLQltb3YubAlNSU1DX0QyLHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglNSU1DX0EsIE1JTUNfRDIKIAogCW5vcAogCW5vcAogCW5vcAogCi0JbW92LmwJU0NSNF9BLHIxCi0JbW92LmwJU0NSNF9EMyxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJU0NSNF9BLCBTQ1I0X0QzCiAKLQltb3YubAlTQ1I0X0EscjEKLQltb3YubAlTQ1I0X0QyLHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglTQ1I0X0EsIFNDUjRfRDIKIAotCW1vdi5sCVNETVIwMjAwMF9BLHIxCi0JbW92LmwJU0RNUjAyMDAwX0QscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCVNETVIwMjAwMF9BLCBTRE1SMDIwMDBfRAogCi0JbW92LmwJU0RNUjAwQjA4X0EscjEKLQltb3YubAlTRE1SMDBCMDhfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJU0RNUjAwQjA4X0EsIFNETVIwMEIwOF9ECiAKLQltb3YubAlTQ1I0X0EscjEKLQltb3YubAlTQ1I0X0QyLHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglTQ1I0X0EsIFNDUjRfRDIKIAotCW1vdi5sCVNDUjRfQSxyMQotCW1vdi5sCVNDUjRfRDQscjAKLQltb3YubAlyMCxAcjEKKwl3cml0ZTMyCVNDUjRfQSwgU0NSNF9ENAogCiAJbm9wCiAJbm9wCiAJbm9wCiAJbm9wCiAKLQltb3YubAlTQ1I0X0EscjEKLQltb3YubAlTQ1I0X0Q0LHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglTQ1I0X0EsIFNDUjRfRDQKIAogCW5vcAogCW5vcAogCW5vcAogCW5vcAogCi0JbW92LmwJU0RNUjAwMzA4X0EscjEKLQltb3YubAlTRE1SMDAzMDhfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJU0RNUjAwMzA4X0EsIFNETVIwMDMwOF9ECiAKLQltb3YubAlNSU1DX0EscjEKLQltb3YubAlNSU1DX0QzLHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglNSU1DX0EsIE1JTUNfRDMKIAotCW1vdi5sCVNDUjRfQSxyMQotCW1vdi5sCVNDUjRfRDEscjAKLQltb3YubAlERUxBWTYwX0QscjMKKwltb3YubAlTQ1I0X0EsIHIxCisJbW92LmwJU0NSNF9EMSwgcjAKKwltb3YubAlERUxBWTYwX0QsIHIzCiAKIGRlbGF5X2xvb3BfNjA6Ci0JbW92LmwJcjAsQHIxCisJbW92LmwJcjAsIEByMQogCWR0CXIzCiAJYmYJZGVsYXlfbG9vcF82MAogCW5vcAogCi0JbW92LmwgICBDQ1JfQSwgcjEJLyogQWRkcmVzcyBvZiBDYWNoZSBDb250cm9sIFJlZ2lzdGVyICovCi0JbW92LmwgICBDQ1JfQ0FDSEVfRF8yLCByMAotCW1vdi5sICAgcjAsIEByMQorCXdyaXRlMzIJQ0NSX0EsIENDUl9DQUNIRV9EXzIJLyogQWRkcmVzcyBvZiBDYWNoZSBDb250cm9sIFJlZ2lzdGVyICovCiAKIGJzY19pbml0OgotCW1vdi5sCUJDUl9BLCByMQotCW1vdi5sCUJDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUJDUl9BLCBCQ1JfRAogCi0JbW92LmwJQ1MwQkNSX0EsIHIxCi0JbW92LmwJQ1MwQkNSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1MwQkNSX0EsIENTMEJDUl9ECiAKLQltb3YubAlDUzFCQ1JfQSxyMQotCW1vdi5sCUNTMUJDUl9ELHIwCi0JbW92LmwJcjAsQHIxCisJd3JpdGUzMglDUzFCQ1JfQSwgQ1MxQkNSX0QKIAotCW1vdi5sCUNTMkJDUl9BLCByMQotCW1vdi5sCUNTMkJDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTMkJDUl9BLCBDUzJCQ1JfRAogCi0JbW92LmwJQ1M0QkNSX0EsIHIxCi0JbW92LmwJQ1M0QkNSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M0QkNSX0EsIENTNEJDUl9ECiAKLQltb3YubAlDUzVCQ1JfQSwgcjEKLQltb3YubAlDUzVCQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzVCQ1JfQSwgQ1M1QkNSX0QKIAotCW1vdi5sCUNTNkJDUl9BLCByMQotCW1vdi5sCUNTNkJDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTNkJDUl9BLCBDUzZCQ1JfRAogCi0JbW92LmwJQ1MwV0NSX0EsIHIxCi0JbW92LmwJQ1MwV0NSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1MwV0NSX0EsIENTMFdDUl9ECiAKLQltb3YubAlDUzFXQ1JfQSwgcjEKLQltb3YubAlDUzFXQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzFXQ1JfQSwgQ1MxV0NSX0QKIAotCW1vdi5sCUNTMldDUl9BLCByMQotCW1vdi5sCUNTMldDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTMldDUl9BLCBDUzJXQ1JfRAogCi0JbW92LmwJQ1M0V0NSX0EsIHIxCi0JbW92LmwJQ1M0V0NSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M0V0NSX0EsIENTNFdDUl9ECiAKLQltb3YubAlDUzVXQ1JfQSwgcjEKLQltb3YubAlDUzVXQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzVXQ1JfQSwgQ1M1V0NSX0QKIAotCW1vdi5sCUNTNldDUl9BLCByMQotCW1vdi5sCUNTNldDUl9ELCByMAotCW1vdi5sCXIwLCBAcjEKKwl3cml0ZTMyCUNTNldDUl9BLCBDUzZXQ1JfRAogCi0JbW92LmwJQ1M1UENSX0EsIHIxCi0JbW92LmwJQ1M1UENSX0QsIHIwCi0JbW92LmwJcjAsIEByMQorCXdyaXRlMzIJQ1M1UENSX0EsIENTNVBDUl9ECiAKLQltb3YubAlDUzZQQ1JfQSwgcjEKLQltb3YubAlDUzZQQ1JfRCwgcjAKLQltb3YubAlyMCwgQHIxCisJd3JpdGUzMglDUzZQQ1JfQSwgQ1M2UENSX0QKIAotCW1vdi5sCURFTEFZMjAwX0QscjMKKwltb3YubAlERUxBWTIwMF9ELCByMwogCiBkZWxheV9sb29wXzIwMDoKIAlkdAlyMwogCWJmCWRlbGF5X2xvb3BfMjAwCiAJbm9wCiAKLQltb3YubAlQU0VMMF9BLHIxCi0JbW92LmwJUFNFTDBfRCxyMAotCW1vdi53CXIwLEByMQorCXdyaXRlMTYJUFNFTDBfQSwgUFNFTDBfRAogCi0JbW92LmwJUFNFTDFfQSxyMQotCW1vdi5sCVBTRUwxX0QscjAKLQltb3YudwlyMCxAcjEKKwl3cml0ZTE2CVBTRUwxX0EsIFBTRUwxX0QKIAotCW1vdi5sCUlDUjBfQSxyMQotCW1vdi5sCUlDUjBfRCxyMAotCW1vdi5sCXIwLEByMQorCXdyaXRlMzIJSUNSMF9BLCBJQ1IwX0QKIAogCXN0YyBzciwgcjAJLyogQkwgYml0IG9mZihpbml0PU9OKSAqLwotCW1vdi5sICAgU1JfTUFTS19ELCByMQorCW1vdi5sCVNSX01BU0tfRCwgcjEKIAlhbmQgcjEsIHIwCiAJbGRjIHIwLCBzcgogCkBAIC0zMjEsNyArMjQ1LDcgQEAKIENTNUJDUl9EOgkubG9uZwkweDc3Nzc3NjcwCiBDUzZCQ1JfRDoJLmxvbmcJMHg3Nzc3NzY3MAogQ1MwV0NSX0Q6CS5sb25nCTB4Nzc3Nzc3MEYKLUNTMVdDUl9EOgkubG9uZyAgIDB4MjIwMDAwMDIKK0NTMVdDUl9EOgkubG9uZwkweDIyMDAwMDAyCiBDUzJXQ1JfRDoJLmxvbmcJMHg3Nzc3NzcwRgogQ1M0V0NSX0Q6CS5sb25nCTB4Nzc3Nzc3MEYKIENTNVdDUl9EOgkubG9uZwkweDc3Nzc3NzBGCmRpZmYgLS1naXQgYS9ib2FyZC9yZW5lc2FzL3NoNzc4NWxjci9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9yZW5lc2FzL3NoNzc4NWxjci9sb3dsZXZlbF9pbml0LlMKaW5kZXggNTBlMTc4OS4uZjVlYmViOSAxMDA2NDQKLS0tIGEvYm9hcmQvcmVuZXNhcy9zaDc3ODVsY3IvbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL3JlbmVzYXMvc2g3Nzg1bGNyL2xvd2xldmVsX2luaXQuUwpAQCAtMTksMzMgKzE5LDcgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgotCi0ubWFjcm8Jd3JpdGUzMiwgYWRkciwgZGF0YQotCW1vdi5sIFxhZGRyICxyMQotCW1vdi5sIFxkYXRhICxyMAotCW1vdi5sIHIwLCBAcjEKLS5lbmRtCi0KLS5tYWNybwl3cml0ZTE2LCBhZGRyLCBkYXRhCi0JbW92LmwgXGFkZHIgLHIxCi0JbW92LmwgXGRhdGEgLHIwCi0JbW92LncgcjAsIEByMQotLmVuZG0KLQotLm1hY3JvCXdyaXRlOCwgYWRkciwgZGF0YQotCW1vdi5sIFxhZGRyICxyMQotCW1vdi5sIFxkYXRhICxyMAotCW1vdi5iIHIwLCBAcjEKLS5lbmRtCi0KLS5tYWNybwl3YWl0X3RpbWVyLCB0aW1lCi0JbW92LmwJXHRpbWUgLHIzCi0xOgotCW5vcAotCXRzdAlyMywgcjMKLQliZi9zCTFiCi0JZHQJcjMKLS5lbmRtCisjaW5jbHVkZSA8YXNtL21hY3JvLmg+CiAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAKQEAgLTMwNSw3ICsyNzksNyBAQAogQ1NfVVNCX0JDUl9EOgkubG9uZwkweDExMTExMjAwCiBDU19VU0JfV0NSX0Q6CS5sb25nCTB4MDAwMjAwMDQKIAotLyogU0Qgc2V0dGluZyAgOiAzMmJpdCBtb2RlID0gQ1MzLCAyOWJpdCBtb2RlID0gQ1M2ICovCisvKiBTRCBzZXR0aW5nIDogMzJiaXQgbW9kZSA9IENTMywgMjliaXQgbW9kZSA9IENTNiAqLwogQ1NfU0RfQkNSX0Q6CS5sb25nCTB4MDAwMDAzMDAKIENTX1NEX1dDUl9EOgkubG9uZwkweDAwMDMwMTA4CiAKZGlmZiAtLWdpdCBhL2JvYXJkL3NiYzg1NDgvc2JjODU0OC5jIGIvYm9hcmQvc2JjODU0OC9zYmM4NTQ4LmMKaW5kZXggOGMwNzNjYi4uNTE5YjBmNyAxMDA2NDQKLS0tIGEvYm9hcmQvc2JjODU0OC9zYmM4NTQ4LmMKKysrIGIvYm9hcmQvc2JjODU0OC9zYmM4NTQ4LmMKQEAgLTEyNiw3ICsxMjYsNyBAQAogCXN5c19pbmZvX3Qgc3lzaW5mbzsKIAogCWdldF9zeXNfaW5mbygmc3lzaW5mbyk7Ci0JY2xrZGl2ID0gKGxiYy0+bGNyciAmIDB4MGYpICogMjsKKwljbGtkaXYgPSAobGJjLT5sY3JyICYgTENSUl9DTEtESVYpICogMjsKIAlsYmNfaHogPSBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwIC8gY2xrZGl2OwogCiAJZ3VyLT5sYml1aXBsbGRjcjEgPSAweDAwMDc4MDgwOwpkaWZmIC0tZ2l0IGEvYm9hcmQvc2JjODY0MWQvbGF3LmMgYi9ib2FyZC9zYmM4NjQxZC9sYXcuYwppbmRleCBkZTQ3ZmNkLi43NjBjNjkzIDEwMDY0NAotLS0gYS9ib2FyZC9zYmM4NjQxZC9sYXcuYworKysgYi9ib2FyZC9zYmM4NjQxZC9sYXcuYwpAQCAtNDUsMTQgKzQ1LDE0IEBACiAKIHN0cnVjdCBsYXdfZW50cnkgbGF3X3RhYmxlW10gPSB7CiAJU0VUX0xBVyhDT05GSUdfU1lTX0REUl9TRFJBTV9CQVNFLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9ERFJfMSksCi0JU0VUX0xBVyhDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UsIExBV19TSVpFXzUxMk0sIExBV19UUkdUX0lGX1BDSV8xKSwKLQlTRVRfTEFXKENPTkZJR19TWVNfUENJMl9NRU1fQkFTRSwgTEFXX1NJWkVfNTEyTSwgTEFXX1RSR1RfSUZfUENJXzIpLAorCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLCBMQVdfU0laRV81MTJNLCBMQVdfVFJHVF9JRl9QQ0lfMSksCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMsIExBV19TSVpFXzUxMk0sIExBV19UUkdUX0lGX1BDSV8yKSwKIAlTRVRfTEFXKDB4ZjgwMDAwMDAsIExBV19TSVpFXzJNLCBMQVdfVFJHVF9JRl9MQkMpLAotCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UsIExBV19TSVpFXzE2TSwgTEFXX1RSR1RfSUZfUENJXzEpLAotCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kyX0lPX0JBU0UsIExBV19TSVpFXzE2TSwgTEFXX1RSR1RfSUZfUENJXzIpLAorCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsIExBV19TSVpFXzE2TSwgTEFXX1RSR1RfSUZfUENJXzEpLAorCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kyX0lPX1BIWVMsIExBV19TSVpFXzE2TSwgTEFXX1RSR1RfSUZfUENJXzIpLAogCVNFVF9MQVcoMHhmZTAwMDAwMCwgTEFXX1NJWkVfMzJNLCBMQVdfVFJHVF9JRl9MQkMpLAogCVNFVF9MQVcoQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRSwgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfRERSXzIpLAotCVNFVF9MQVcoQ09ORklHX1NZU19SSU9fTUVNX0JBU0UsIExBV19TSVpFXzUxMk0sIExBV19UUkdUX0lGX1JJTykKKwlTRVRfTEFXKENPTkZJR19TWVNfUklPX01FTV9QSFlTLCBMQVdfU0laRV81MTJNLCBMQVdfVFJHVF9JRl9SSU8pCiB9OwogCiBpbnQgbnVtX2xhd19lbnRyaWVzID0gQVJSQVlfU0laRShsYXdfdGFibGUpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvc2JjODY0MWQvc2JjODY0MWQuYyBiL2JvYXJkL3NiYzg2NDFkL3NiYzg2NDFkLmMKaW5kZXggMTQ3MWU1OC4uNTA4YmRjNSAxMDA2NDQKLS0tIGEvYm9hcmQvc2JjODY0MWQvc2JjODY0MWQuYworKysgYi9ib2FyZC9zYmM4NjQxZC9zYmM4NjQxZC5jCkBAIC0yNDcsMTQgKzI0NywxNCBAQAogCiAJCS8qIG91dGJvdW5kIG1lbW9yeSAqLwogCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFLAorCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9NRU1fQlVTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywKIAkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUsCiAJCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwogCiAJCS8qIG91dGJvdW5kIGlvICovCiAJCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfSU9fQkFTRSwKKwkJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfSU9fQlVTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9JT19QSFlTLAogCQkJICAgICAgIENPTkZJR19TWVNfUENJMV9JT19TSVpFLAogCQkJICAgICAgIFBDSV9SRUdJT05fSU8pOwpAQCAtMjkwLDE0ICsyOTAsMTQgQEAKIAogCS8qIG91dGJvdW5kIG1lbW9yeSAqLwogCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJICAgICAgIENPTkZJR19TWVNfUENJMl9NRU1fQkFTRSwKKwkJICAgICAgIENPTkZJR19TWVNfUENJMl9NRU1fQlVTLAogCQkgICAgICAgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTLAogCQkgICAgICAgQ09ORklHX1NZU19QQ0kyX01FTV9TSVpFLAogCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwogCiAJLyogb3V0Ym91bmQgaW8gKi8KIAlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCSAgICAgICBDT05GSUdfU1lTX1BDSTJfSU9fQkFTRSwKKwkJICAgICAgIENPTkZJR19TWVNfUENJMl9JT19CVVMsCiAJCSAgICAgICBDT05GSUdfU1lTX1BDSTJfSU9fUEhZUywKIAkJICAgICAgIENPTkZJR19TWVNfUENJMl9JT19TSVpFLAogCQkgICAgICAgUENJX1JFR0lPTl9JTyk7CmRpZmYgLS1naXQgYS9ib2FyZC9zYzUyMF9jZHAvdS1ib290LmxkcyBiL2JvYXJkL3NjNTIwX2NkcC91LWJvb3QubGRzCmluZGV4IDcxOWVjYmEuLjBmNTAxMWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NjNTIwX2NkcC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NjNTIwX2NkcC91LWJvb3QubGRzCkBAIC03NSw3ICs3NSw3IEBACiAJICogVGhlIGZlMDAgYW5kIGZmMDAgb2Zmc2V0cyBvZiB0aGUgc3RhcnQzMiBhbmQgc3RhcnQxNgogCSAqIHNlZ21lbnRzIGFyZSBhcmJpdHJhcnksIHRoZSBqdXN0IGhhdmUgdG8gYmUgbWFwcGVkCiAJICogYXQgcmVzZXQgYW5kIHRoZSBjb2RlIGhhdmUgdG8gZml0LgotCSAqIFRoZSBmZmYwIG9mZnNldCBvZiByZXNldCBpcyBpbXBvcnRhbnQsIGhvd2V2ZXIuCisJICogVGhlIGZmZjAgb2Zmc2V0IG9mIHJlc2V0dmVjIGlzIGltcG9ydGFudCwgaG93ZXZlci4KIAkgKi8KIAogCkBAIC04Niw2ICs4Niw2IEBACiAJLnN0YXJ0MTYgOiBBVCAoMHgzODdmZmYwMCkgeyAqKC5zdGFydDE2KTsgfQogCiAJLiA9IDB4ZmZmMDsKLQkucmVzZXQgOiBBVCAoMHgzODdmZmZmMCkgeyAqKC5yZXNldCk7IH0KLQlfaTM4NmJvb3RfZW5kID0gKExPQURBRERSKC5yZXNldCkgKyBTSVpFT0YoLnJlc2V0KSApOworCS5yZXNldHZlYyA6IEFUICgweDM4N2ZmZmYwKSB7ICooLnJlc2V0dmVjKTsgfQorCV9pMzg2Ym9vdF9lbmQgPSAoTE9BREFERFIoLnJlc2V0dmVjKSArIFNJWkVPRigucmVzZXR2ZWMpICk7CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9zYzUyMF9zcHVuay91LWJvb3QubGRzIGIvYm9hcmQvc2M1MjBfc3B1bmsvdS1ib290LmxkcwppbmRleCA0ZDY2MDNjLi5kMjQzNmJjIDEwMDY0NAotLS0gYS9ib2FyZC9zYzUyMF9zcHVuay91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NjNTIwX3NwdW5rL3UtYm9vdC5sZHMKQEAgLTc2LDcgKzc2LDcgQEAKIAkgKiBUaGUgZmUwMCBhbmQgZmYwMCBvZmZzZXRzIG9mIHRoZSBzdGFydDMyIGFuZCBzdGFydDE2CiAJICogc2VnbWVudHMgYXJlIGFyYml0cmFyeSwgdGhlIGp1c3QgaGF2ZSB0byBiZSBtYXBwZWQKIAkgKiBhdCByZXNldCBhbmQgdGhlIGNvZGUgaGF2ZSB0byBmaXQuCi0JICogVGhlIGZmZjAgb2Zmc2V0IG9mIHJlc2V0IGlzIGltcG9ydGFudCwgaG93ZXZlci4KKwkgKiBUaGUgZmZmMCBvZmZzZXQgb2YgcmVzZXR2ZWMgaXMgaW1wb3J0YW50LCBob3dldmVyLgogCSAqLwogCiAKQEAgLTg3LDYgKzg3LDYgQEAKIAkuc3RhcnQxNiA6IEFUICgweDM4N2ZmZjAwKSB7ICooLnN0YXJ0MTYpOyB9CiAKIAkuID0gMHhmZmYwOwotCS5yZXNldCA6IEFUICgweDM4N2ZmZmYwKSB7ICooLnJlc2V0KTsgfQotCV9pMzg2Ym9vdF9lbmQgPSAoTE9BREFERFIoLnJlc2V0KSArIFNJWkVPRigucmVzZXQpICk7CisJLnJlc2V0dmVjIDogQVQgKDB4Mzg3ZmZmZjApIHsgKigucmVzZXR2ZWMpOyB9CisJX2kzODZib290X2VuZCA9IChMT0FEQUREUigucmVzZXR2ZWMpICsgU0laRU9GKC5yZXNldHZlYykgKTsKIH0KZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC94dXB2MnAvTWFrZWZpbGUgYi9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9NYWtlZmlsZQpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlCnJlbmFtZSB0byBib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9NYWtlZmlsZQppbmRleCAxMGI0N2IyLi43YzM0YzVlIDEwMDY0NAotLS0gYS9ib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlCisrKyBiL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL01ha2VmaWxlCkBAIC0xLDUgKzEsNSBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgorIyAoQykgQ29weXJpZ2h0IDIwMDYKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTI1LDE0ICsyNSwxNCBAQAogCiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKLUNPQkpTCT0gJChCT0FSRCkubworQ09CSlMJOj0gJChCT0FSRCkubyBzZHJhbS5vCiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICReCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKIAlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCmRpZmYgLS1naXQgYS9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9jb25maWcubWsgYi9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxYzBkOAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL2NvbmZpZy5tawpAQCAtMCwwICsxLDEzIEBACitpZm5kZWYgTkFORF9TUEwKK3NpbmNsdWRlICQoT0JKVFJFRSkvYm9hcmQvJChCT0FSRERJUikvY29uZmlnLnRtcAorZW5kaWYKKworaWZuZGVmIFRFWFRfQkFTRQorVEVYVF9CQVNFID0gMHgwMDEwMDAwMAorZW5kaWYKKworaWZkZWYgQ09ORklHX05BTkRfTFAKK1BBRF9UTyA9IDB4RkZGMjAwMDAKK2Vsc2UKK1BBRF9UTyA9IDB4RkZGMDQwMDAKK2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9zZHJhbS5jIGIvYm9hcmQvc2hlbGRvbi9zaW1wYzgzMTMvc2RyYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmI3MGEyCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvc2hlbGRvbi9zaW1wYzgzMTMvc2RyYW0uYwpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4gMjAwNi0yMDA3CisgKiBDb3B5cmlnaHQgKEMpIFNoZWxkb24gSW5zdHJ1bWVudHMsIEluYy4gMjAwOAorICoKKyAqIEF1dGhvcjogUm9uIE1hZHJpZCA8aW5mb0BzaGVsZG9uaW5zdC5jb20+CisgKgorICogKEMpIENvcHlyaWdodCAyMDA2CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgZm9yIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxtcGM4M3h4Lmg+CisjaW5jbHVkZSA8c3BkX3NkcmFtLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCitzdGF0aWMgbG9uZyBmaXhlZF9zZHJhbSh2b2lkKTsKKworI2lmIGRlZmluZWQoQ09ORklHX05BTkRfU1BMKQordm9pZCBzaV93YWl0X2kyYyh2b2lkKQoreworCXZvbGF0aWxlIGltbWFwX3QgKmltID0gKGltbWFwX3QgKikgQ09ORklHX1NZU19JTU1SOworCisJd2hpbGUgKCEoX19yYXdfcmVhZGIoJmltLT5pMmNbMF0uc3IpICYgMHgwMikpCisJCTsKKworCV9fcmF3X3dyaXRlYigweDAwLCAmaW0tPmkyY1swXS5zcik7CisKKwlzeW5jKCk7CisKKwlyZXR1cm47Cit9CisKK3ZvaWQgc2lfcmVhZF9pMmModTMyIGxieXRlLCBpbnQgY291bnQsIHU4ICpidWZmZXIpCit7CisJdm9sYXRpbGUgaW1tYXBfdCAqaW0gPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7CisJdTMyIGk7CisJdTggY2hpcCA9IDB4NTAgPDwgMTsgLyogYm9vdCBzZXF1ZW5jZXIgSTJDICovCisJdTMyIHVieXRlID0gKGxieXRlICYgMHhmZjAwKSA+PiA4OworCisJbGJ5dGUgJj0gMHhmZjsKKworCS8qCisJICogU2V0IHVwIGNvbnRyb2xsZXIKKwkgKi8KKwlfX3Jhd193cml0ZWIoMHgzZiwgJmltLT5pMmNbMF0uZmRyKTsKKwlfX3Jhd193cml0ZWIoMHgwMCwgJmltLT5pMmNbMF0uYWRyKTsKKwlfX3Jhd193cml0ZWIoMHgwMCwgJmltLT5pMmNbMF0uc3IpOworCV9fcmF3X3dyaXRlYigweDAwLCAmaW0tPmkyY1swXS5kcik7CisKKwl3aGlsZSAoX19yYXdfcmVhZGIoJmltLT5pMmNbMF0uc3IpICYgMHgyMCkKKwkJOworCisJLyoKKwkgKiBXcml0aW5nIGFkZHJlc3MgdG8gZGV2aWNlCisJICovCisJX19yYXdfd3JpdGViKDB4YjAsICZpbS0+aTJjWzBdLmNyKTsKKwlzeW5jKCk7CisJX19yYXdfd3JpdGViKGNoaXAsICZpbS0+aTJjWzBdLmRyKTsKKwlzaV93YWl0X2kyYygpOworCisJX19yYXdfd3JpdGViKDB4YjAsICZpbS0+aTJjWzBdLmNyKTsKKwlzeW5jKCk7CisJX19yYXdfd3JpdGViKHVieXRlLCAmaW0tPmkyY1swXS5kcik7CisJc2lfd2FpdF9pMmMoKTsKKworCV9fcmF3X3dyaXRlYihsYnl0ZSwgJmltLT5pMmNbMF0uZHIpOworCXNpX3dhaXRfaTJjKCk7CisKKwlfX3Jhd193cml0ZWIoMHhiNCwgJmltLT5pMmNbMF0uY3IpOworCXN5bmMoKTsKKwlfX3Jhd193cml0ZWIoY2hpcCArIDEsICZpbS0+aTJjWzBdLmRyKTsKKwlzaV93YWl0X2kyYygpOworCisJX19yYXdfd3JpdGViKDB4YTAsICZpbS0+aTJjWzBdLmNyKTsKKwlzeW5jKCk7CisKKwkvKgorCSAqIER1bW15IHJlYWQKKwkgKi8KKwlfX3Jhd19yZWFkYigmaW0tPmkyY1swXS5kcik7CisKKwlzaV93YWl0X2kyYygpOworCisJLyoKKwkgKiBSZWFkIGFjdHVhbCBkYXRhCisJICovCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisJeworCQlpZiAoaSA9PSAoY291bnQgLSAyKSkJLyogUmVhY2hlZCBuZXh0IHRvIGxhc3QgYnl0ZSwgTm8gQUNLICovCisJCQlfX3Jhd193cml0ZWIoMHhhOCwgJmltLT5pMmNbMF0uY3IpOworCQlpZiAoaSA9PSAoY291bnQgLSAxKSkJLyogUmVhY2hlZCBsYXN0IGJ5dGUsIFNUT1AgKi8KKwkJCV9fcmF3X3dyaXRlYigweDg4LCAmaW0tPmkyY1swXS5jcik7CisKKwkJLyogUmVhZCBieXRlIG9mIGRhdGEgKi8KKwkJYnVmZmVyW2ldID0gX19yYXdfcmVhZGIoJmltLT5pMmNbMF0uZHIpOworCisJCWlmIChpID09IChjb3VudCAtIDEpKQorCQkJYnJlYWs7CisJCXNpX3dhaXRfaTJjKCk7CisJfQorCisJcmV0dXJuOworfQorI2VuZGlmIC8qIENPTkZJR19OQU5EX1NQTCAqLworCitwaHlzX3NpemVfdCBpbml0ZHJhbShpbnQgYm9hcmRfdHlwZSkKK3sKKwl2b2xhdGlsZSBpbW1hcF90ICppbSA9IChpbW1hcF90ICopIENPTkZJR19TWVNfSU1NUjsKKwl2b2xhdGlsZSBmc2xfbGJ1c190ICpsYmM9ICZpbS0+bGJ1czsKKwl1MzIgbXNpemU7CisKKwlpZiAoKF9fcmF3X3JlYWRsKCZpbS0+c3lzY29uZi5pbW1yYmFyKSAmIElNTVJCQVJfQkFTRV9BRERSKSAhPSAodTMyKSBpbSkKKwkJcmV0dXJuIC0xOworCisJLyogRERSIFNEUkFNIC0gTWFpbiBTT0RJTU0gKi8KKwlfX3Jhd193cml0ZWwoQ09ORklHX1NZU19ERFJfQkFTRSAmIExBV0JBUl9CQVIsICZpbS0+c3lzY29uZi5kZHJsYXdbMF0uYmFyKTsKKworCW1zaXplID0gZml4ZWRfc2RyYW0oKTsKKworCS8qIExvY2FsIEJ1cyBzZXR1cCBsYmNyIGFuZCBtcnRwciAqLworCV9fcmF3X3dyaXRlbChDT05GSUdfU1lTX0xCQ19MQkNSLCAmbGJjLT5sYmNyKTsKKwlfX3Jhd193cml0ZWwoQ09ORklHX1NZU19MQkNfTVJUUFIsICZsYmMtPm1ydHByKTsKKwlzeW5jKCk7CisKKwkvKiByZXR1cm4gdG90YWwgYnVzIFNEUkFNIHNpemUoYnl0ZXMpICAtLSBERFIgKi8KKwlyZXR1cm4gKG1zaXplICogMTAyNCAqIDEwMjQpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogIGZpeGVkIHNkcmFtIGluaXQgLS0gcmVhZHMgdmFsdWVzIGZyb20gYm9vdCBzZXF1ZW5jZXIgSTJDCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIGxvbmcgZml4ZWRfc2RyYW0odm9pZCkKK3sKKwl2b2xhdGlsZSBpbW1hcF90ICppbSA9IChpbW1hcF90ICopIENPTkZJR19TWVNfSU1NUjsKKwl1MzIgbXNpemVsb2cyLCBtc2l6ZSA9IDE7CisjaWYgZGVmaW5lZChDT05GSUdfTkFORF9TUEwpCisJdTMyIGk7CisJY29uc3QgdTggYnl0ZWNvdW50ID0gMTM1OworCXU4IGJ1ZmZlcltieXRlY291bnRdOworCXUzMiBhZGRyLCBkYXRhOworCisJc2lfcmVhZF9pMmMoMCwgYnl0ZWNvdW50LCBidWZmZXIpOworCisJZm9yIChpID0gMTg7IGkgPCBieXRlY291bnQ7IGkgKz0gNyl7CisJCWFkZHIgPSAodTMyKWJ1ZmZlcltpXTsKKwkJYWRkciA8PD0gODsKKwkJYWRkciB8PSAodTMyKWJ1ZmZlcltpICsgMV07CisJCWFkZHIgPDw9IDI7CisJCWRhdGEgPSAodTMyKWJ1ZmZlcltpICsgMl07CisJCWRhdGEgPDw9IDg7CisJCWRhdGEgfD0gKHUzMilidWZmZXJbaSArIDNdOworCQlkYXRhIDw8PSA4OworCQlkYXRhIHw9ICh1MzIpYnVmZmVyW2kgKyA0XTsKKwkJZGF0YSA8PD0gODsKKwkJZGF0YSB8PSAodTMyKWJ1ZmZlcltpICsgNV07CisKKwkJX19yYXdfd3JpdGVsKGRhdGEsICh1MzIgKikoQ09ORklHX1NZU19JTU1SICsgYWRkcikpOworCX0KKworCXN5bmMoKTsKKworCS8qIGVuYWJsZSBERFIgY29udHJvbGxlciAqLworCV9fcmF3X3dyaXRlbCgoX19yYXdfcmVhZGwoJmltLT5kZHIuc2RyYW1fY2ZnKSB8IFNEUkFNX0NGR19NRU1fRU4pLCAmaW0tPmRkci5zZHJhbV9jZmcpOworI2VuZGlmIC8qIChDT05GSUdfTkFORF9TUEwpICovCisKKwltc2l6ZWxvZzIgPSAoKF9fcmF3X3JlYWRsKCZpbS0+c3lzY29uZi5kZHJsYXdbMF0uYXIpICYgTEFXQVJfU0laRSkgKyAxKTsKKwltc2l6ZSA8PD0gKG1zaXplbG9nMiAtIDIwKTsKKworCXJldHVybiBtc2l6ZTsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL3NpbXBjODMxMy5jIGIvYm9hcmQvc2hlbGRvbi9zaW1wYzgzMTMvc2ltcGM4MzEzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlNWMyNAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL3NpbXBjODMxMy5jCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLiAyMDA2LTIwMDcKKyAqIENvcHlyaWdodCAoQykgU2hlbGRvbiBJbnN0cnVtZW50cywgSW5jLiAyMDA4CisgKgorICogQXV0aG9yOiBSb24gTWFkcmlkIDxpbmZvQHNoZWxkb25pbnN0LmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIGZvciBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8bGliZmR0Lmg+CisjaW5jbHVkZSA8cGNpLmg+CisjaW5jbHVkZSA8bXBjODN4eC5oPgorI2luY2x1ZGUgPG5zMTY1NTAuaD4KKyNpbmNsdWRlIDxuYW5kLmg+CisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCitpbnQgY2hlY2tib2FyZCh2b2lkKQoreworCXB1dHMoIkJvYXJkOiBTaGVsZG9uIEluc3RydW1lbnRzIFNJTVBDODMxM1xuIik7CisJcmV0dXJuIDA7Cit9CisKKyNpZm5kZWYgQ09ORklHX05BTkRfU1BMCitzdGF0aWMgc3RydWN0IHBjaV9yZWdpb24gcGNpX3JlZ2lvbnNbXSA9IHsKKwl7CisJCWJ1c19zdGFydDogQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFLAorCQlwaHlzX3N0YXJ0OiBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCisJCXNpemU6IENPTkZJR19TWVNfUENJMV9NRU1fU0laRSwKKwkJZmxhZ3M6IFBDSV9SRUdJT05fTUVNIHwgUENJX1JFR0lPTl9QUkVGRVRDSAorCX0sCisJeworCQlidXNfc3RhcnQ6IENPTkZJR19TWVNfUENJMV9NTUlPX0JBU0UsCisJCXBoeXNfc3RhcnQ6IENPTkZJR19TWVNfUENJMV9NTUlPX1BIWVMsCisJCXNpemU6IENPTkZJR19TWVNfUENJMV9NTUlPX1NJWkUsCisJCWZsYWdzOiBQQ0lfUkVHSU9OX01FTQorCX0sCisJeworCQlidXNfc3RhcnQ6IENPTkZJR19TWVNfUENJMV9JT19CQVNFLAorCQlwaHlzX3N0YXJ0OiBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUywKKwkJc2l6ZTogQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUsCisJCWZsYWdzOiBQQ0lfUkVHSU9OX0lPCisJfQorfTsKKwordm9pZCBwY2lfaW5pdF9ib2FyZCh2b2lkKQoreworCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAodm9sYXRpbGUgaW1tYXBfdCAqKUNPTkZJR19TWVNfSU1NUjsKKwl2b2xhdGlsZSBjbGs4M3h4X3QgKmNsayA9ICh2b2xhdGlsZSBjbGs4M3h4X3QgKikmaW1tci0+Y2xrOworCXZvbGF0aWxlIGxhdzgzeHhfdCAqcGNpX2xhdyA9IGltbXItPnN5c2NvbmYucGNpbGF3OworCXN0cnVjdCBwY2lfcmVnaW9uICpyZWdbXSA9IHsgcGNpX3JlZ2lvbnMgfTsKKwlpbnQgd2FybWJvb3Q7CisKKwkvKiBFbmFibGUgYWxsIDMgUENJX0NMS19PVVRQVVRzLiAqLworCWNsay0+b2NjciB8PSAweGUwMDAwMDAwOworCisJLyoKKwkgKiBDb25maWd1cmUgUENJIExvY2FsIEFjY2VzcyBXaW5kb3dzCisJICovCisJcGNpX2xhd1swXS5iYXIgPSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgJiBMQVdCQVJfQkFSOworCXBjaV9sYXdbMF0uYXIgPSBMQkxBV0FSX0VOIHwgTEJMQVdBUl81MTJNQjsKKworCXBjaV9sYXdbMV0uYmFyID0gQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMgJiBMQVdCQVJfQkFSOworCXBjaV9sYXdbMV0uYXIgPSBMQkxBV0FSX0VOIHwgTEJMQVdBUl8xTUI7CisKKwl3YXJtYm9vdCA9IGdkLT5iZC0+YmlfYm9vdGZsYWdzICYgQk9PVEZMQUdfV0FSTTsKKworCW1wYzgzeHhfcGNpX2luaXQoMSwgcmVnLCB3YXJtYm9vdCk7Cit9CisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGxhdGUtYm9vdCBjb25maWd1cmF0aW9ucworICovCitpbnQgbWlzY19pbml0X3Iodm9pZCkKK3sKKwlpbnQgcmMgPSAwOworCisJcmV0dXJuIHJjOworfQorCisjaWYgZGVmaW5lZChDT05GSUdfT0ZfQk9BUkRfU0VUVVApCit2b2lkIGZ0X2JvYXJkX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCWZ0X2NwdV9zZXR1cChibG9iLCBiZCk7CisjaWZkZWYgQ09ORklHX1BDSQorCWZ0X3BjaV9zZXR1cChibG9iLCBiZCk7CisjZW5kaWYKK30KKyNlbmRpZgorI2Vsc2UgLyogQ09ORklHX05BTkRfU1BMICovCit2b2lkIGJvYXJkX2luaXRfZih1bG9uZyBib290ZmxhZykKK3sKKwlOUzE2NTUwX2luaXQoKE5TMTY1NTBfdCkoQ09ORklHX1NZU19JTU1SICsgMHg0NTAwKSwKKwkJCQlDT05GSUdfU1lTX05TMTY1NTBfQ0xLIC8gMTYgLyBDT05GSUdfQkFVRFJBVEUpOworCXB1dHMoIk5BTkQgYm9vdC4uLiAiKTsKKwlpbml0X3RpbWViYXNlKCk7CisJaW5pdGRyYW0oMCk7CisJcmVsb2NhdGVfY29kZShDT05GSUdfU1lTX05BTkRfVV9CT09UX1JFTE9DICsgMHgxMDAwMCwgKGdkX3QgKilnZCwKKwkJCQkgIENPTkZJR19TWVNfTkFORF9VX0JPT1RfUkVMT0MpOworfQorCit2b2lkIGJvYXJkX2luaXRfcihnZF90ICpnZCwgdWxvbmcgZGVzdF9hZGRyKQoreworCW5hbmRfYm9vdCgpOworfQorCit2b2lkIHB1dGMoY2hhciBjKQoreworCWlmIChnZC0+ZmxhZ3MgJiBHRF9GTEdfU0lMRU5UKQorCQlyZXR1cm47CisKKwlpZiAoYyA9PSAnXG4nKQorCQlOUzE2NTUwX3B1dGMoKE5TMTY1NTBfdCkoQ09ORklHX1NZU19JTU1SICsgMHg0NTAwKSwgJ1xyJyk7CisKKwlOUzE2NTUwX3B1dGMoKE5TMTY1NTBfdCkoQ09ORklHX1NZU19JTU1SICsgMHg0NTAwKSwgYyk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL3NvY3JhdGVzL3NvY3JhdGVzLmMgYi9ib2FyZC9zb2NyYXRlcy9zb2NyYXRlcy5jCmluZGV4IGQ4M2RjN2QuLmRmOTY5NmUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NvY3JhdGVzL3NvY3JhdGVzLmMKKysrIGIvYm9hcmQvc29jcmF0ZXMvc29jcmF0ZXMuYwpAQCAtMTU2LDcgKzE1Niw3IEBACiAJdWludCBsY3JyID0gQ09ORklHX1NZU19MQkNfTENSUjsKIAogCWdldF9zeXNfaW5mbyAoJnN5c2luZm8pOwotCWNsa2RpdiA9IGxiYy0+bGNyciAmIDB4MGY7CisJY2xrZGl2ID0gbGJjLT5sY3JyICYgTENSUl9DTEtESVY7CiAJbGJjX21oeiA9IHN5c2luZm8uZnJlcVN5c3RlbUJ1cyAvIDEwMDAwMDAgLyBjbGtkaXY7CiAKIAkvKiBEaXNhYmxlIFBMTCBieXBhc3MgZm9yIExvY2FsIEJ1cyBDbG9jayA+PSA2NiBNSHogKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3N0eGdwMy9kZHIuYyBiL2JvYXJkL3N0eGdwMy9kZHIuYwppbmRleCA3ODUwNzk0Li45M2QxMTAwIDEwMDY0NAotLS0gYS9ib2FyZC9zdHhncDMvZGRyLmMKKysrIGIvYm9hcmQvc3R4Z3AzL2Rkci5jCkBAIC02NSw2ICs2NSw5IEBACiAJICovCiAJcG9wdHMtPndyaXRlX2RhdGFfZGVsYXkgPSAzOwogCisJLyogMlQgdGltaW5nIGVuYWJsZSAqLworCXBvcHRzLT50d29UX2VuID0gMTsKKwogCS8qCiAJICogRmFjdG9ycyB0byBjb25zaWRlciBmb3IgaGFsZi1zdHJlbmd0aCBkcml2ZXIgZW5hYmxlOgogCSAqCS0gbnVtYmVyIG9mIERJTU1zIGluc3RhbGxlZApkaWZmIC0tZ2l0IGEvYm9hcmQvc3R4c3NhL2Rkci5jIGIvYm9hcmQvc3R4c3NhL2Rkci5jCmluZGV4IDc4NTA3OTQuLjkzZDExMDAgMTAwNjQ0Ci0tLSBhL2JvYXJkL3N0eHNzYS9kZHIuYworKysgYi9ib2FyZC9zdHhzc2EvZGRyLmMKQEAgLTY1LDYgKzY1LDkgQEAKIAkgKi8KIAlwb3B0cy0+d3JpdGVfZGF0YV9kZWxheSA9IDM7CiAKKwkvKiAyVCB0aW1pbmcgZW5hYmxlICovCisJcG9wdHMtPnR3b1RfZW4gPSAxOworCiAJLyoKIAkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBoYWxmLXN0cmVuZ3RoIGRyaXZlciBlbmFibGU6CiAJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9ib2FyZC90cWMvdHFtODV4eC90cW04NXh4LmMgYi9ib2FyZC90cWMvdHFtODV4eC90cW04NXh4LmMKaW5kZXggNzNmMWQwMS4uY2RhODIwOCAxMDA2NDQKLS0tIGEvYm9hcmQvdHFjL3RxbTg1eHgvdHFtODV4eC5jCisrKyBiL2JvYXJkL3RxYy90cW04NXh4L3RxbTg1eHguYwpAQCAtMzYxLDcgKzM2MSw3IEBACiB7CiAJdm9sYXRpbGUgY2Nzcl9sYmNfdCAqbGJjID0gKHZvaWQgKikoQ09ORklHX1NZU19NUEM4NXh4X0xCQ19BRERSKTsKIAlzeXNfaW5mb190IHN5c19pbmZvOwotCXVsb25nIGNsa2RpdiA9IGxiYy0+bGNyciAmIDB4MGY7CisJdWxvbmcgY2xrZGl2ID0gbGJjLT5sY3JyICYgTENSUl9DTEtESVY7CiAKIAlnZXRfc3lzX2luZm8gKCZzeXNfaW5mbyk7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvTWFrZWZpbGUgYi9ib2FyZC90cmFiL01ha2VmaWxlCmluZGV4IDZkZmNiODcuLjMwZTVmYmIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvTWFrZWZpbGUKKysrIGIvYm9hcmQvdHJhYi9NYWtlZmlsZQpAQCAtNTEsNyArNTEsOCBAQAogCSQoTEQpIC1nIC1UdGV4dCAkKExPQURfQUREUikgLW8gJCg8Oi5vPSkgLWUgdHJhYl9ma3QgJF4gJChMSUIpIFwKIAkJLUwkKG9iaikuLi8uLi9leGFtcGxlcyAtbHN0dWJzIFwKIAkJLUwkKG9iaikuLi8uLi9saWJfZ2VuZXJpYyAtbGdlbmVyaWMgXAotCQktTCQoZ2NjbGliZGlyKSAtbGdjYworCQkkKG9iaikuLi8uLi9saWJfYXJtL2RpdjAubyBcCisJCSQob2JqKS4uLy4uL2xpYl9hcm0vXyoubwogCSQoT0JKQ09QWSkgLU8gc3JlYyAkKDw6Lm89KSAkQAogCiAkKG9iail0cmFiX2ZrdC5iaW46CSQob2JqKXRyYWJfZmt0LnNyZWMKZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvbWVtb3J5LmMgYi9ib2FyZC90cmFiL21lbW9yeS5jCmluZGV4IDhmYjNkMmMuLjg5NWI2OGUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvbWVtb3J5LmMKKysrIGIvYm9hcmQvdHJhYi9tZW1vcnkuYwpAQCAtMTg0LDcgKzE4NCw3IEBACiAgKgogICogRm9yIG90aGVyIHByb2Nlc3NvcnMsIGxldCB0aGUgY29tcGlsZXIgZ2VuZXJhdGUgdGhlIGJlc3QgY29kZSBpdCBjYW4uCiAgKi8KLXN0YXRpYyB2b2lkIG1vdmU2NCh1bnNpZ25lZCBsb25nIGxvbmcgKnNyYywgdW5zaWduZWQgbG9uZyBsb25nICpkZXN0KQorc3RhdGljIHZvaWQgbW92ZTY0KGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAqc3JjLCB1bnNpZ25lZCBsb25nIGxvbmcgKmRlc3QpCiB7CiAjaWYgZGVmaW5lZChDT05GSUdfTVBDODI2MCkgfHwgZGVmaW5lZChDT05GSUdfTVBDODI0WCkKIAlhc20gKCJsZmQgIDAsIDAoMylcblx0IiAvKiBmcHIwCSAgPSAgKnNjcgkqLwpAQCAtMjMxLDEyICsyMzEsMTIgQEAKIAlpbnQgcmV0ID0gMDsKIAogCWZvciAoIGkgPSAwOyBpIDwgbnVtX3BhdHRlcm5zOyBpKyspIHsKLQkJbW92ZTY0KCh1bnNpZ25lZCBsb25nIGxvbmcgKikmKHBhdHRlcm5baV0pLCBwbWVtKyspOworCQltb3ZlNjQoJihwYXR0ZXJuW2ldKSwgcG1lbSsrKTsKIAkJLyoKIAkJICogUHV0IGEgZGlmZmVyZW50IHBhdHRlcm4gb24gdGhlIGRhdGEgbGluZXM6IG90aGVyd2lzZSB0aGV5CiAJCSAqIG1heSBmbG9hdCBsb25nIGVub3VnaCB0byByZWFkIGJhY2sgd2hhdCB3ZSB3cm90ZS4KIAkJICovCi0JCW1vdmU2NCgodW5zaWduZWQgbG9uZyBsb25nICopJm90aGVycGF0dGVybiwgcG1lbS0tKTsKKwkJbW92ZTY0KCZvdGhlcnBhdHRlcm4sIHBtZW0tLSk7CiAJCW1vdmU2NChwbWVtLCAmdGVtcDY0KTsKIAogI2lmZGVmIElOSkVDVF9EQVRBX0VSUk9SUwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJhYi90cmFiX2ZrdC5jIGIvYm9hcmQvdHJhYi90cmFiX2ZrdC5jCmluZGV4IDkzYjk0OTAuLjUzY2RiNWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvdHJhYl9ma3QuYworKysgYi9ib2FyZC90cmFiL3RyYWJfZmt0LmMKQEAgLTI5NCw2ICsyOTQsMTIgQEAKIAlyZXR1cm4gMTsKIH0KIAordm9pZCBoYW5nICh2b2lkKQoreworCXB1dHMgKCIjIyMgRVJST1IgIyMjIFBsZWFzZSBSRVNFVCB0aGUgYm9hcmQgIyMjXG4iKTsKKwlmb3IgKDs7KTsKK30KKwogaW50IGRvX2luZm8gKHZvaWQpCiB7CiAJcHJpbnRmICgiU3RhbmQtYWxvbmUgYXBwbGljYXRpb24gZm9yIFRSQUIgYm9hcmQgZnVuY3Rpb24gdGVzdFxuIik7CmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlIGIvYm9hcmQveGVzL2NvbW1vbi9NYWtlZmlsZQpzaW1pbGFyaXR5IGluZGV4IDczJQpjb3B5IGZyb20gYm9hcmQveGlsaW54L3h1cHYycC9NYWtlZmlsZQpjb3B5IHRvIGJvYXJkL3hlcy9jb21tb24vTWFrZWZpbGUKaW5kZXggMTBiNDdiMi4uZTc2MjBmNCAxMDA2NDQKLS0tIGEvYm9hcmQveGlsaW54L3h1cHYycC9NYWtlZmlsZQorKysgYi9ib2FyZC94ZXMvY29tbW9uL01ha2VmaWxlCkBAIC0xLDUgKzEsNSBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgorIyAoQykgQ29weXJpZ2h0IDIwMDYKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTIzLDE2ICsyMywyMyBAQAogCiBpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKIAotTElCCT0gJChvYmopbGliJChCT0FSRCkuYQoraWZuZXEgKCQoT0JKVFJFRSksJChTUkNUUkVFKSkKKyQoc2hlbGwgbWtkaXIgLXAgJChvYmopYm9hcmQvJChWRU5ET1IpL2NvbW1vbikKK2VuZGlmCiAKLUNPQkpTCT0gJChCT0FSRCkubworTElCCT0gJChvYmopbGliJChWRU5ET1IpLmEKIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQotT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCitDT0JKUy0kKENPTkZJR19GU0xfUENJX0lOSVQpCSs9IGZzbF84NXh4X3BjaS5vCitDT0JKUy0kKENPTkZJR19NUEM4NTcyKQkJKz0gZnNsXzg1NzJfY2xrLm8KK0NPQkpTLSQoQ09ORklHX01QQzg1eHgpCQkrPSBmc2xfODV4eF9kZHIubworQ09CSlMtJChDT05GSUdfTkFORF9BQ1RMKQkrPSBhY3RsX25hbmQubworCitTUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlMteToubz0uYykKK09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMteSkpCiBTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChPQkpTKSAkKFNPQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgogCXJtIC1mICQoU09CSlMpICQoT0JKUykKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy9jb21tb24vYWN0bF9uYW5kLmMgYi9ib2FyZC94ZXMvY29tbW9uL2FjdGxfbmFuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NWFlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC94ZXMvY29tbW9uL2FjdGxfbmFuZC5jCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFRoaXMgZHJpdmVyIHN1cHBvcnQgTkFORCBkZXZpY2VzIHdoaWNoIGhhdmUgYWRkcmVzcyBsaW5lcworICogY29ubmVjdGVkIGFzIEFMRSBhbmQgQ0xFIGlucHV0cy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxuYW5kLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKy8qCisgKiBIYXJkd2FyZSBzcGVjaWZpYyBhY2Nlc3MgdG8gY29udHJvbC1saW5lcworICovCitzdGF0aWMgdm9pZCBuYW5kX2FkZHJfaHdjb250cm9sKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY21kLCB1aW50IGN0cmwpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwl1bG9uZyBJT19BRERSX1c7CisKKwlpZiAoY3RybCAmIE5BTkRfQ1RSTF9DSEFOR0UpIHsKKwkJSU9fQUREUl9XID0gKHVsb25nKXRoaXMtPklPX0FERFJfVzsKKworCQlJT19BRERSX1cgJj0gfihDT05GSUdfU1lTX05BTkRfQUNUTF9DTEUgfAorCQkJCUNPTkZJR19TWVNfTkFORF9BQ1RMX0FMRSB8CisJCQkJQ09ORklHX1NZU19OQU5EX0FDVExfTkNFKTsKKwkJaWYgKGN0cmwgJiBOQU5EX0NMRSkKKwkJCUlPX0FERFJfVyB8PSBDT05GSUdfU1lTX05BTkRfQUNUTF9DTEU7CisJCWlmIChjdHJsICYgTkFORF9BTEUpCisJCQlJT19BRERSX1cgfD0gQ09ORklHX1NZU19OQU5EX0FDVExfQUxFOworCQlpZiAoY3RybCAmIE5BTkRfTkNFKQorCQkJSU9fQUREUl9XIHw9IENPTkZJR19TWVNfTkFORF9BQ1RMX05DRTsKKworCQl0aGlzLT5JT19BRERSX1cgPSAodm9pZCAqKUlPX0FERFJfVzsKKwl9CisKKwlpZiAoY21kICE9IE5BTkRfQ01EX05PTkUpCisJCXdyaXRlYihjbWQsIHRoaXMtPklPX0FERFJfVyk7Cit9CisKK2ludCBib2FyZF9uYW5kX2luaXQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCkKK3sKKwluYW5kLT5lY2MubW9kZSA9IE5BTkRfRUNDX1NPRlQ7CisJbmFuZC0+Y21kX2N0cmwgPSBuYW5kX2FkZHJfaHdjb250cm9sOworCW5hbmQtPmNoaXBfZGVsYXkgPSBDT05GSUdfU1lTX05BTkRfQUNUTF9ERUxBWTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL2NvbW1vbi9mc2xfODU3Ml9jbGsuYyBiL2JvYXJkL3hlcy9jb21tb24vZnNsXzg1NzJfY2xrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVkZjJkYQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy9jb21tb24vZnNsXzg1NzJfY2xrLmMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorCisvKgorICogUmV0dXJuIFNZU0NMSyBpbnB1dCBmcmVxdWVuY3kgLSA1MCBNSHogb3IgNjYgTUh6IGRlcGVuZGluZyBvbiBQT1IgY29uZmlnCisgKi8KK3Vuc2lnbmVkIGxvbmcgZ2V0X2JvYXJkX3N5c19jbGsodWxvbmcgZHVtbXkpCit7CisJdm9sYXRpbGUgY2Nzcl9ndXJfdCAqZ3VyID0gKHZvaWQgKikoQ09ORklHX1NZU19NUEM4NXh4X0dVVFNfQUREUik7CisJdTMyIGdwcG9yY3IgPSBndXItPmdwcG9yY3I7CisKKwlpZiAoZ3Bwb3JjciAmIDB4MTAwMDApCisJCXJldHVybiA2NjY2NjY2NjsKKwllbHNlCisJCXJldHVybiA1MDAwMDAwMDsKK30KKworLyoKKyAqIFJldHVybiBERFIgaW5wdXQgY2xvY2sgLSBzeW5jaHJvbm91cyB3aXRoIFNZU0NMSyBvciA2NiBNSHoKKyAqLwordW5zaWduZWQgbG9uZyBnZXRfYm9hcmRfZGRyX2Nsayh1bG9uZyBkdW1teSkKK3sKKwl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSKTsKKwl1MzIgZGRyX3JhdGlvID0gKChndXItPnBvcnBsbHNyKSAmIDB4MDAwMDNlMDApID4+IDk7CisKKwlpZiAoZGRyX3JhdGlvID09IDB4NykKKwkJcmV0dXJuIGdldF9ib2FyZF9zeXNfY2xrKGR1bW15KTsKKworCXJldHVybiA2NjY2NjY2NjsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy9jb21tb24vZnNsXzg1eHhfZGRyLmMgYi9ib2FyZC94ZXMvY29tbW9uL2ZzbF84NXh4X2Rkci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYjQ3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC94ZXMvY29tbW9uL2ZzbF84NXh4X2Rkci5jCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vZnNsX2Rkcl9zZHJhbS5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKworI2lmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpICYmICFkZWZpbmVkKENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQ09OVFJPTExFUikKK2V4dGVybiB2b2lkIGRkcl9lbmFibGVfZWNjKHVuc2lnbmVkIGludCBkcmFtX3NpemUpOworI2VuZGlmCisKK3BoeXNfc2l6ZV90IGluaXRkcmFtKGludCBib2FyZF90eXBlKQoreworCXBoeXNfc2l6ZV90IGRyYW1fc2l6ZSA9IGZzbF9kZHJfc2RyYW0oKTsKKworCWRyYW1fc2l6ZSA9IHNldHVwX2Rkcl90bGJzKGRyYW1fc2l6ZSAvIDB4MTAwMDAwKTsKKworCWRyYW1fc2l6ZSAqPSAweDEwMDAwMDsKKworI2lmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpICYmICFkZWZpbmVkKENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQ09OVFJPTExFUikKKwkvKiBJbml0aWFsaXplIGFuZCBlbmFibGUgRERSIEVDQyAqLworCWRkcl9lbmFibGVfZWNjKGRyYW1fc2l6ZSk7CisjZW5kaWYKKworCXJldHVybiBkcmFtX3NpemU7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19ERFJfRUNDKSB8fCAoQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMgPiAxKQordm9pZCBib2FyZF9hZGRfcmFtX2luZm8oaW50IHVzZV9kZWZhdWx0KQoreworI2lmIChDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUyA+IDEpCisJdm9sYXRpbGUgY2Nzcl9kZHJfdCAqZGRyMSA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9ERFJfQUREUik7CisjZW5kaWYKKworCXB1dHMoIiAoIik7CisKKyNpZiAoQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMgPiAxKQorCS8qIFByaW50IGludGVybGVhdmluZyBpbmZvcm1hdGlvbiAqLworCWlmIChkZHIxLT5jczBfY29uZmlnICYgMHgyMDAwMDAwMCkgeworCQlzd2l0Y2ggKChkZHIxLT5jczBfY29uZmlnID4+IDI0KSAmIDB4ZikgeworCQljYXNlIDA6CisJCQlwdXRzKCJjYWNoZSBsaW5lIik7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJcHV0cygicGFnZSIpOworCQkJYnJlYWs7CisJCWNhc2UgMjoKKwkJCXB1dHMoImJhbmsiKTsKKwkJCWJyZWFrOworCQljYXNlIDM6CisJCQlwdXRzKCJzdXBlci1iYW5rIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXB1dHMoImludmFsaWQiKTsKKwkJCWJyZWFrOworCQl9CisJfSBlbHNlIHsKKwkJcHV0cygibm8iKTsKKwl9CisKKwlwdXRzKCIgaW50ZXJsZWF2aW5nIik7CisjZW5kaWYKKworI2lmIChDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUyA+IDEpICYmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpCisJcHV0cygiLCAiKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfRERSX0VDQykKKwlwdXRzKCJFQ0MgZW5hYmxlZCIpOworI2VuZGlmCisKKwlwdXRzKCIpIik7Cit9CisjZW5kaWYgLyogQ09ORklHX0REUl9FQ0MgfHwgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMgPiAxICovCmRpZmYgLS1naXQgYS9ib2FyZC94ZXMvY29tbW9uL2ZzbF84NXh4X3BjaS5jIGIvYm9hcmQveGVzL2NvbW1vbi9mc2xfODV4eF9wY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjczYTAyCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL2NvbW1vbi9mc2xfODV4eF9wY2kuYwpAQCAtMCwwICsxLDM3OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisgKiBDb3B5cmlnaHQgMjAwNy0yMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPHBjaS5oPgorI2luY2x1ZGUgPGFzbS9pbW1hcF84NXh4Lmg+CisjaW5jbHVkZSA8YXNtL2ltbWFwX2ZzbF9wY2kuaD4KKyNpbmNsdWRlIDxsaWJmZHQuaD4KKyNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgorCitleHRlcm4gaW50IGZzbF9wY2lfc2V0dXBfaW5ib3VuZF93aW5kb3dzKHN0cnVjdCBwY2lfcmVnaW9uICpyKTsKK2V4dGVybiB2b2lkIGZzbF9wY2lfY29uZmlnX3VubG9jayhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UpOworZXh0ZXJuIHZvaWQgZnNsX3BjaV9pbml0KHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSk7CisKK2ludCBmaXJzdF9mcmVlX2J1c25vID0gMDsKKworI2lmZGVmIENPTkZJR19QQ0kxCitzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIHBjaTFfaG9zZTsKKyNlbmRpZgorI2lmZGVmIENPTkZJR19QQ0lFMQorc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciBwY2llMV9ob3NlOworI2VuZGlmCisjaWZkZWYgQ09ORklHX1BDSUUyCitzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIHBjaWUyX2hvc2U7CisjZW5kaWYKKyNpZmRlZiBDT05GSUdfUENJRTMKK3N0YXRpYyBzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgcGNpZTNfaG9zZTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01QQzg1NzIKKy8qIENvcnJlbGF0ZSBob3N0L2FnZW50IFBPUiBiaXRzIHRvIHVzYWJsZSBpbmZvLiBUYWJsZSA0LTE0ICovCitzdHJ1Y3QgaG9zdF9hZ2VudF9jZmdfdCB7CisJdWNoYXIgcGNpZV9yb290WzNdOworCXVjaGFyIHJpb19ob3N0OworfSBob3N0X2FnZW50X2NmZ1s4XSA9IHsKKwl7ezAsIDAsIDB9LCAwfSwKKwl7ezAsIDEsIDF9LCAxfSwKKwl7ezEsIDAsIDF9LCAwfSwKKwl7ezEsIDEsIDB9LCAxfSwKKwl7ezAsIDAsIDF9LCAwfSwKKwl7ezAsIDEsIDB9LCAxfSwKKwl7ezEsIDAsIDB9LCAwfSwKKwl7ezEsIDEsIDF9LCAxfQorfTsKKworLyogQ29ycmVsYXRlIHBvcnQgd2lkdGggUE9SIGJpdHMgdG8gdXNhYmxlIGluZm8uIFRhYmxlIDQtMTUgKi8KK3N0cnVjdCBpb19wb3J0X2NmZ190IHsKKwl1Y2hhciBwY2llX3dpZHRoWzNdOworCXVjaGFyIHJpb193aWR0aDsKK30gaW9fcG9ydF9jZmdbMTZdID0geworCXt7MCwgMCwgMH0sIDB9LAorCXt7MCwgMCwgMH0sIDB9LAorCXt7NCwgMCwgMH0sIDB9LAorCXt7NCwgNCwgMH0sIDB9LAorCXt7MCwgMCwgMH0sIDB9LAorCXt7MCwgMCwgMH0sIDB9LAorCXt7MCwgMCwgMH0sIDR9LAorCXt7NCwgMiwgMn0sIDB9LAorCXt7MCwgMCwgMH0sIDB9LAorCXt7MCwgMCwgMH0sIDB9LAorCXt7MCwgMCwgMH0sIDB9LAorCXt7NCwgMCwgMH0sIDR9LAorCXt7NCwgMCwgMH0sIDR9LAorCXt7MCwgMCwgMH0sIDR9LAorCXt7MCwgMCwgMH0sIDR9LAorCXt7OCwgMCwgMH0sIDB9LAorfTsKKyNlbGlmIGRlZmluZWQgQ09ORklHX01QQzg1NDgKKy8qIENvcnJlbGF0ZSBob3N0L2FnZW50IFBPUiBiaXRzIHRvIHVzYWJsZSBpbmZvLiBUYWJsZSA0LTEyICovCitzdHJ1Y3QgaG9zdF9hZ2VudF9jZmdfdCB7CisJdWNoYXIgcGNpX2hvc3RbMl07CisJdWNoYXIgcGNpZV9yb290WzFdOworCXVjaGFyIHJpb19ob3N0OworfSBob3N0X2FnZW50X2NmZ1s4XSA9IHsKKwl7ezEsIDF9LCB7MH0sIDB9LAorCXt7MSwgMX0sIHsxfSwgMH0sCisJe3sxLCAxfSwgezB9LCAxfSwKKwl7ezAsIDB9LCB7MH0sIDB9LCAvKiByZXNlcnZlZCAqLworCXt7MCwgMX0sIHsxfSwgMH0sCisJe3sxLCAxfSwgezF9LCAwfSwKKwl7ezAsIDF9LCB7MX0sIDF9LAorCXt7MSwgMX0sIHsxfSwgMX0KK307CisKKy8qIENvcnJlbGF0ZSBwb3J0IHdpZHRoIFBPUiBiaXRzIHRvIHVzYWJsZSBpbmZvLiBUYWJsZSA0LTEzICovCitzdHJ1Y3QgaW9fcG9ydF9jZmdfdCB7CisJdWNoYXIgcGNpZV93aWR0aFsxXTsKKwl1Y2hhciByaW9fd2lkdGg7Cit9IGlvX3BvcnRfY2ZnWzhdID0geworCXt7MH0sIDB9LAorCXt7MH0sIDB9LAorCXt7MH0sIDB9LAorCXt7NH0sIDR9LAorCXt7NH0sIDR9LAorCXt7MH0sIDR9LAorCXt7MH0sIDR9LAorCXt7OH0sIDB9LAorfTsKKyNlbmRpZgorCit2b2lkIHBjaV9pbml0X2JvYXJkKHZvaWQpCit7CisJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlOworCXZvbGF0aWxlIGNjc3JfZnNsX3BjaV90ICpwY2k7CisJaW50IHdpZHRoOworCWludCBob3N0OworCXZvbGF0aWxlIGNjc3JfZ3VyX3QgKmd1ciA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9HVVRTX0FERFIpOworCXVpbnQgZGV2ZGlzciA9IGd1ci0+ZGV2ZGlzcjsKKwl1aW50IGlvX3NlbCA9IChndXItPnBvcmRldnNyICYgTVBDODV4eF9QT1JERVZTUl9JT19TRUwpID4+IDE5OworCXVpbnQgaG9zdF9hZ2VudCA9IChndXItPnBvcmJtc3IgJiBNUEM4NXh4X1BPUkJNU1JfSEEpID4+IDE2OworCXN0cnVjdCBwY2lfcmVnaW9uICpyOworCisjaWZkZWYgQ09ORklHX1BDSTEKKwl1aW50IHBjaV9zcGRfbm9ybSA9IChndXItPnBvcmRldnNyICYgTVBDODV4eF9QT1JERVZTUl9QQ0kxX1NQRCk7CisJdWludCBwY2lfMzIgPSBndXItPnBvcmRldnNyICYgTVBDODV4eF9QT1JERVZTUl9QQ0kxX1BDSTMyOworCXVpbnQgcGNpX2FyYiA9IGd1ci0+cG9yZGV2c3IgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTFfQVJCOworCXVpbnQgcGNpeCA9IGd1ci0+cG9yZGV2c3IgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTE7CisJdWludCBmcmVxID0gQ09ORklHX1NZU19DTEtfRlJFUSAvIDEwMDAgLyAxMDAwOworCisJd2lkdGggPSAwOyAvKiBTaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcuLi4gKi8KKwlpb19zZWwgJj0gMHhmOyAvKiBTaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcuLi4gKi8KKwlwY2kgPSAoY2Nzcl9mc2xfcGNpX3QgKikgQ09ORklHX1NZU19QQ0kxX0FERFI7CisJaG9zZSA9ICZwY2kxX2hvc2U7CisJaG9zdCA9IGhvc3RfYWdlbnRfY2ZnW2hvc3RfYWdlbnRdLnBjaV9ob3N0WzBdOworCXIgPSBob3NlLT5yZWdpb25zOworCisKKwlpZiAoIShkZXZkaXNyICYgTVBDODV4eF9ERVZESVNSX1BDSTEpKSB7CisJCXByaW50ZigiXG4gICAgUENJMTogJWQgYml0ICVzLCAlcyAlZCBNSHosICVzLCAlc1xuIiwKKwkJCXBjaV8zMiA/IDMyIDogNjQsCisJCQlwY2l4ID8gIlBDSVgiIDogIlBDSSIsCisJCQlwY2lfc3BkX25vcm0gPyAgIj49IiA6ICI8PSIsCisJCQlwY2l4ID8gZnJlcSAqIDIgOiBmcmVxLAorCQkJaG9zdCA/ICJob3N0IiA6ICJhZ2VudCIsCisJCQlwY2lfYXJiID8gImFyYml0ZXIiIDogImV4dGVybmFsLWFyYml0ZXIiKTsKKworCQkvKiBpbmJvdW5kICovCisJCXIgKz0gZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3Mocik7CisKKwkJLyogb3V0Ym91bmQgbWVtb3J5ICovCisJCXBjaV9zZXRfcmVnaW9uKHIrKywKKwkJCQlDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UsCisJCQkJQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAorCQkJCUNPTkZJR19TWVNfUENJMV9NRU1fU0laRSwKKwkJCQlQQ0lfUkVHSU9OX01FTSk7CisKKwkJLyogb3V0Ym91bmQgaW8gKi8KKwkJcGNpX3NldF9yZWdpb24ocisrLAorCQkJCUNPTkZJR19TWVNfUENJMV9JT19CQVNFLAorCQkJCUNPTkZJR19TWVNfUENJMV9JT19QSFlTLAorCQkJCUNPTkZJR19TWVNfUENJMV9JT19TSVpFLAorCQkJCVBDSV9SRUdJT05fSU8pOworCisJCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOworCisJCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKKwkJcGNpX3NldHVwX2luZGlyZWN0KGhvc2UsIChpbnQpJnBjaS0+Y2ZnX2FkZHIsCisJCQkJICAgKGludCkmcGNpLT5jZmdfZGF0YSk7CisKKwkJZnNsX3BjaV9pbml0KGhvc2UpOworCisJCS8qIFVubG9jayBpbmJvdW5kIFBDSSBjb25maWd1cmF0aW9uIGN5Y2xlcyAqLworCQlpZiAoIWhvc3QpCisJCQlmc2xfcGNpX2NvbmZpZ191bmxvY2soaG9zZSk7CisKKwkJZmlyc3RfZnJlZV9idXNubyA9IGhvc2UtPmxhc3RfYnVzbm8gKyAxOworCQlwcmludGYoIiAgICBQQ0kxIG9uIGJ1cyAlMDJ4IC0gJTAyeFxuIiwKKwkJCWhvc2UtPmZpcnN0X2J1c25vLCBob3NlLT5sYXN0X2J1c25vKTsKKwl9IGVsc2UgeworCQlwcmludGYoIiAgICBQQ0kxOiBkaXNhYmxlZFxuIik7CisJfQorI2VsaWYgZGVmaW5lZCBDT05GSUdfTVBDODU0OAorCS8qIFBDSTEgbm90IHByZXNlbnQgb24gTVBDODU3MiAqLworCWd1ci0+ZGV2ZGlzciB8PSBNUEM4NXh4X0RFVkRJU1JfUENJMTsgLyogZGlzYWJsZSAqLworI2VuZGlmCisjaWZkZWYgQ09ORklHX1BDSUUxCisJcGNpID0gKGNjc3JfZnNsX3BjaV90ICopIENPTkZJR19TWVNfUENJRTFfQUREUjsKKwlob3NlID0gJnBjaWUxX2hvc2U7CisJaG9zdCA9IGhvc3RfYWdlbnRfY2ZnW2hvc3RfYWdlbnRdLnBjaWVfcm9vdFswXTsKKwl3aWR0aCA9IGlvX3BvcnRfY2ZnW2lvX3NlbF0ucGNpZV93aWR0aFswXTsKKwlyID0gaG9zZS0+cmVnaW9uczsKKworCWlmICh3aWR0aCAmJiAhKGRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJRSkpIHsKKwkJcHJpbnRmKCJcbiAgICBQQ0lFMSBjb25uZWN0ZWQgYXMgJXMgKHglZCkiLAorCQkJaG9zdCA/ICJSb290IENvbXBsZXgiIDogIkVuZCBQb2ludCIsIHdpZHRoKTsKKwkJaWYgKHBjaS0+cG1lX21zZ19kZXQpIHsKKwkJCXBjaS0+cG1lX21zZ19kZXQgPSAweGZmZmZmZmZmOworCQkJZGVidWcoIiB3aXRoIGVycm9ycy4gIENsZWFyaW5nLiAgTm93IDB4JTA4eCIsCisJCQkJcGNpLT5wbWVfbXNnX2RldCk7CisJCX0KKwkJcHJpbnRmKCJcbiIpOworCisJCS8qIGluYm91bmQgKi8KKwkJciArPSBmc2xfcGNpX3NldHVwX2luYm91bmRfd2luZG93cyhyKTsKKworCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KKwkJcGNpX3NldF9yZWdpb24ocisrLAorCQkJCUNPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UsCisJCQkJQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywKKwkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFLAorCQkJCVBDSV9SRUdJT05fTUVNKTsKKworCQkvKiBvdXRib3VuZCBpbyAqLworCQlwY2lfc2V0X3JlZ2lvbihyKyssCisJCQkJQ09ORklHX1NZU19QQ0lFMV9JT19CQVNFLAorCQkJCUNPTkZJR19TWVNfUENJRTFfSU9fUEhZUywKKwkJCQlDT05GSUdfU1lTX1BDSUUxX0lPX1NJWkUsCisJCQkJUENJX1JFR0lPTl9JTyk7CisKKwkJaG9zZS0+cmVnaW9uX2NvdW50ID0gciAtIGhvc2UtPnJlZ2lvbnM7CisKKwkJaG9zZS0+Zmlyc3RfYnVzbm8gPSBmaXJzdF9mcmVlX2J1c25vOworCQlwY2lfc2V0dXBfaW5kaXJlY3QoaG9zZSwgKGludCkmcGNpLT5jZmdfYWRkciwKKwkJCQkJKGludCkgJnBjaS0+Y2ZnX2RhdGEpOworCisJCWZzbF9wY2lfaW5pdChob3NlKTsKKworCQkvKiBVbmxvY2sgaW5ib3VuZCBQQ0kgY29uZmlndXJhdGlvbiBjeWNsZXMgKi8KKwkJaWYgKCFob3N0KQorCQkJZnNsX3BjaV9jb25maWdfdW5sb2NrKGhvc2UpOworCisJCWZpcnN0X2ZyZWVfYnVzbm8gPSBob3NlLT5sYXN0X2J1c25vICsgMTsKKwkJcHJpbnRmKCIgICAgUENJRTEgb24gYnVzICUwMnggLSAlMDJ4XG4iLAorCQkJCWhvc2UtPmZpcnN0X2J1c25vLCBob3NlLT5sYXN0X2J1c25vKTsKKwl9CisjZWxzZQorCWd1ci0+ZGV2ZGlzciB8PSBNUEM4NXh4X0RFVkRJU1JfUENJRTsgLyogZGlzYWJsZSAqLworI2VuZGlmIC8qIENPTkZJR19QQ0lFMSAqLworCisjaWZkZWYgQ09ORklHX1BDSUUyCisJcGNpID0gKGNjc3JfZnNsX3BjaV90ICopIENPTkZJR19TWVNfUENJRTJfQUREUjsKKwlob3NlID0gJnBjaWUyX2hvc2U7CisJaG9zdCA9IGhvc3RfYWdlbnRfY2ZnW2hvc3RfYWdlbnRdLnBjaWVfcm9vdFsxXTsKKwl3aWR0aCA9IGlvX3BvcnRfY2ZnW2lvX3NlbF0ucGNpZV93aWR0aFsxXTsKKwlyID0gaG9zZS0+cmVnaW9uczsKKworCWlmICh3aWR0aCAmJiAhKGRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJRTIpKSB7CisJCXByaW50ZigiXG4gICAgUENJRTIgY29ubmVjdGVkIGFzICVzICh4JWQpIiwKKwkJCWhvc3QgPyAiUm9vdCBDb21wbGV4IiA6ICJFbmQgUG9pbnQiLCB3aWR0aCk7CisJCWlmIChwY2ktPnBtZV9tc2dfZGV0KSB7CisJCQlwY2ktPnBtZV9tc2dfZGV0ID0gMHhmZmZmZmZmZjsKKwkJCWRlYnVnKCIgd2l0aCBlcnJvcnMuICBDbGVhcmluZy4gIE5vdyAweCUwOHgiLAorCQkJCXBjaS0+cG1lX21zZ19kZXQpOworCQl9CisJCXByaW50ZigiXG4iKTsKKworCQkvKiBpbmJvdW5kICovCisJCXIgKz0gZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3Mocik7CisKKwkJLyogb3V0Ym91bmQgbWVtb3J5ICovCisJCXBjaV9zZXRfcmVnaW9uKHIrKywKKwkJCQlDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFLAorCQkJCUNPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMsCisJCQkJQ09ORklHX1NZU19QQ0lFMl9NRU1fU0laRSwKKwkJCQlQQ0lfUkVHSU9OX01FTSk7CisKKwkJLyogb3V0Ym91bmQgaW8gKi8KKwkJcGNpX3NldF9yZWdpb24ocisrLAorCQkJCUNPTkZJR19TWVNfUENJRTJfSU9fQkFTRSwKKwkJCQlDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMsCisJCQkJQ09ORklHX1NZU19QQ0lFMl9JT19TSVpFLAorCQkJCVBDSV9SRUdJT05fSU8pOworCisJCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOworCisJCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKKwkJcGNpX3NldHVwX2luZGlyZWN0KGhvc2UsIChpbnQpJnBjaS0+Y2ZnX2FkZHIsCisJCQkJCShpbnQpJnBjaS0+Y2ZnX2RhdGEpOworCisJCWZzbF9wY2lfaW5pdChob3NlKTsKKworCQkvKiBVbmxvY2sgaW5ib3VuZCBQQ0kgY29uZmlndXJhdGlvbiBjeWNsZXMgKi8KKwkJaWYgKCFob3N0KQorCQkJZnNsX3BjaV9jb25maWdfdW5sb2NrKGhvc2UpOworCisJCWZpcnN0X2ZyZWVfYnVzbm8gPSBob3NlLT5sYXN0X2J1c25vICsgMTsKKwkJcHJpbnRmKCIgICAgUENJRTIgb24gYnVzICUwMnggLSAlMDJ4XG4iLAorCQkJCWhvc2UtPmZpcnN0X2J1c25vLCBob3NlLT5sYXN0X2J1c25vKTsKKwl9CisjZWxzZQorCWd1ci0+ZGV2ZGlzciB8PSBNUEM4NXh4X0RFVkRJU1JfUENJRTI7IC8qIGRpc2FibGUgKi8KKyNlbmRpZiAvKiBDT05GSUdfUENJRTIgKi8KKworI2lmZGVmIENPTkZJR19QQ0lFMworCXBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUzX0FERFI7CisJaG9zZSA9ICZwY2llM19ob3NlOworCWhvc3QgPSBob3N0X2FnZW50X2NmZ1tob3N0X2FnZW50XS5wY2llX3Jvb3RbMl07CisJd2lkdGggPSBpb19wb3J0X2NmZ1tpb19zZWxdLnBjaWVfd2lkdGhbMl07CisJciA9IGhvc2UtPnJlZ2lvbnM7CisKKwlpZiAod2lkdGggJiYgIShkZXZkaXNyICYgTVBDODV4eF9ERVZESVNSX1BDSUUzKSkgeworCQlwcmludGYoIlxuICAgIFBDSUUzIGNvbm5lY3RlZCBhcyAlcyAoeCVkKSIsCisJCQlob3N0ID8gIlJvb3QgQ29tcGxleCIgOiAiRW5kIFBvaW50Iiwgd2lkdGgpOworCQlpZiAocGNpLT5wbWVfbXNnX2RldCkgeworCQkJcGNpLT5wbWVfbXNnX2RldCA9IDB4ZmZmZmZmZmY7CisJCQlkZWJ1ZygiIHdpdGggZXJyb3JzLiAgQ2xlYXJpbmcuICBOb3cgMHglMDh4IiwKKwkJCQlwY2ktPnBtZV9tc2dfZGV0KTsKKwkJfQorCQlwcmludGYoIlxuIik7CisKKwkJLyogaW5ib3VuZCAqLworCQlyICs9IGZzbF9wY2lfc2V0dXBfaW5ib3VuZF93aW5kb3dzKHIpOworCisJCS8qIG91dGJvdW5kIG1lbW9yeSAqLworCQlwY2lfc2V0X3JlZ2lvbihyKyssCisJCQkJQ09ORklHX1NZU19QQ0lFM19NRU1fQkFTRSwKKwkJCQlDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLAorCQkJCUNPTkZJR19TWVNfUENJRTNfTUVNX1NJWkUsCisJCQkJUENJX1JFR0lPTl9NRU0pOworCisJCS8qIG91dGJvdW5kIGlvICovCisJCXBjaV9zZXRfcmVnaW9uKHIrKywKKwkJCQlDT05GSUdfU1lTX1BDSUUzX0lPX0JBU0UsCisJCQkJQ09ORklHX1NZU19QQ0lFM19JT19QSFlTLAorCQkJCUNPTkZJR19TWVNfUENJRTNfSU9fU0laRSwKKwkJCQlQQ0lfUkVHSU9OX0lPKTsKKworCQlob3NlLT5yZWdpb25fY291bnQgPSByIC0gaG9zZS0+cmVnaW9uczsKKworCQlob3NlLT5maXJzdF9idXNubyA9IGZpcnN0X2ZyZWVfYnVzbm87CisJCXBjaV9zZXR1cF9pbmRpcmVjdChob3NlLCAoaW50KSZwY2ktPmNmZ19hZGRyLAorCQkJCQkoaW50KSZwY2ktPmNmZ19kYXRhKTsKKworCQlmc2xfcGNpX2luaXQoaG9zZSk7CisKKwkJLyogVW5sb2NrIGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzICovCisJCWlmICghaG9zdCkKKwkJCWZzbF9wY2lfY29uZmlnX3VubG9jayhob3NlKTsKKworCQlmaXJzdF9mcmVlX2J1c25vID0gaG9zZS0+bGFzdF9idXNubyArIDE7CisJCXByaW50ZigiICAgIFBDSUUzIG9uIGJ1cyAlMDJ4IC0gJTAyeFxuIiwKKwkJCQlob3NlLT5maXJzdF9idXNubywgaG9zZS0+bGFzdF9idXNubyk7CisJfQorI2Vsc2UKKwlndXItPmRldmRpc3IgfD0gTVBDODV4eF9ERVZESVNSX1BDSUUzOyAvKiBkaXNhYmxlICovCisjZW5kaWYgLyogQ09ORklHX1BDSUUzICovCit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkKK2V4dGVybiB2b2lkIGZ0X2ZzbF9wY2lfc2V0dXAodm9pZCAqYmxvYiwgY29uc3QgY2hhciAqcGNpX2FsaWFzLAorCQkJCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSk7CisKK3ZvaWQgZnRfYm9hcmRfcGNpX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCS8qIFRPRE8gLSBtYWtlIG5vZGUgbmFtZSAoZWcgcGNpMCkgZHluYW1pYyAqLworI2lmZGVmIENPTkZJR19QQ0kxCisJZnRfZnNsX3BjaV9zZXR1cChibG9iLCAicGNpMCIsICZwY2kxX2hvc2UpOworI2VuZGlmCisjaWZkZWYgQ09ORklHX1BDSUUxCisJZnRfZnNsX3BjaV9zZXR1cChibG9iLCAicGNpMiIsICZwY2llMV9ob3NlKTsKKyNlbmRpZgorI2lmZGVmIENPTkZJR19QQ0lFMgorCWZ0X2ZzbF9wY2lfc2V0dXAoYmxvYiwgInBjaTEiLCAmcGNpZTJfaG9zZSk7CisjZW5kaWYKKyNpZmRlZiBDT05GSUdfUENJRTMKKwlmdF9mc2xfcGNpX3NldHVwKGJsb2IsICJwY2kwIiwgJnBjaWUzX2hvc2UpOworI2VuZGlmCit9CisjZW5kaWYgLyogQ09ORklHX09GX0JPQVJEX1NFVFVQICovCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlIGIvYm9hcmQveGVzL3hwZWRpdGU1MjAwL01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggNzIlCmNvcHkgZnJvbSBib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlCmNvcHkgdG8gYm9hcmQveGVzL3hwZWRpdGU1MjAwL01ha2VmaWxlCmluZGV4IDEwYjQ3YjIuLjAyZmU4ZmMgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hpbGlueC94dXB2MnAvTWFrZWZpbGUKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MjAwL01ha2VmaWxlCkBAIC0xLDUgKzEsNyBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgorIyBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorIyBDb3B5cmlnaHQgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3Rvci4KKyMgKEMpIENvcHlyaWdodCAyMDAxLTIwMDYKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTI1LDIwICsyNywyMyBAQAogCiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKLUNPQkpTCT0gJChCT0FSRCkubworQ09CSlMteQkrPSAkKEJPQVJEKS5vCitDT0JKUy15CSs9IGRkci5vCitDT0JKUy15CSs9IGxhdy5vCitDT0JKUy15CSs9IHRsYi5vCiAKLVNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKLU9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQotU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQorU1JDUwk6PSAkKFNPQkpTLXk6Lm89LlMpICQoQ09CSlMteToubz0uYykKK09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMteSkpCitTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUy15KSkKIAotJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkXgorJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKIAogY2xlYW46Ci0Jcm0gLWYgJChTT0JKUykgJChPQkpTKQorCXJtIC1mICQoT0JKUykgJChTT0JKUykKIAogZGlzdGNsZWFuOgljbGVhbgotCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvYm9hcmQveGlsaW54L3h1cHYycC9jb25maWcubWsgYi9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvY29uZmlnLm1rCnNpbWlsYXJpdHkgaW5kZXggNjUlCmNvcHkgZnJvbSBib2FyZC94aWxpbngveHVwdjJwL2NvbmZpZy5tawpjb3B5IHRvIGJvYXJkL3hlcy94cGVkaXRlNTIwMC9jb25maWcubWsKaW5kZXggYzA3YjBiMy4uYmU1YTVjMyAxMDA2NDQKLS0tIGEvYm9hcmQveGlsaW54L3h1cHYycC9jb25maWcubWsKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MjAwL2NvbmZpZy5tawpAQCAtMSw3ICsxLDYgQEAKICMKLSMgKEMpIENvcHlyaWdodCAyMDA3IE1pY2hhbCBTaW1lawotIwotIyBNaWNoYWwgIFNJTUVLIDxtb25zdHJAbW9uc3RyLmV1PgorIyBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorIyBDb3B5cmlnaHQgMjAwNCwgMjAwNyBGcmVlc2NhbGUgU2VtaWNvbmR1Y3Rvci4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICMgcHJvamVjdC4KQEAgLTEzLDcgKzEyLDcgQEAKICMKICMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC0yMSwxMiArMjAsMTUgQEAKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICMgTUEgMDIxMTEtMTMwNyBVU0EKICMKLSMgQ0FVVElPTjogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGxpYmdlbi4KLSMgVmVyc2lvbjogWGlsaW54IEVESyA4LjIuMDIgRURLX0ltX1NwMi40CisKICMKKyMgeHBlZGl0ZTUyMDAgYm9hcmQKKyMKK2lmbmRlZiBURVhUX0JBU0UKK1RFWFRfQkFTRSA9IDB4ZmZmODAwMDAKK2VuZGlmCiAKLVRFWFRfQkFTRSA9IDB4MzgwMDAwMDAKLQotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LW11bAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LWRpdgotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW14bC1iYXJyZWwtc2hpZnQKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX0U1MDA9MQorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODV4eD0xCitQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4NTQ4PTEKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1tcmVsb2NhdGFibGUKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTIwMC9kZHIuYyBiL2JvYXJkL3hlcy94cGVkaXRlNTIwMC9kZHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTYxNmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MjAwL2Rkci5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBWZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGkyYy5oPgorCisjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfc2RyYW0uaD4KKyNpbmNsdWRlIDxhc20vZnNsX2Rkcl9kaW1tX3BhcmFtcy5oPgorCitzdGF0aWMgdm9pZAorZ2V0X3NwZChkZHIyX3NwZF9lZXByb21fdCAqc3BkLCB1bnNpZ25lZCBjaGFyIGkyY19hZGRyZXNzKQoreworCWkyY19yZWFkKGkyY19hZGRyZXNzLCAwLCAxLCAodWNoYXIgKilzcGQsIHNpemVvZihkZHIyX3NwZF9lZXByb21fdCkpOworCisJLyogV2UgdXNlIHNvbGRlcmVkIG1lbW9yeSwgYnV0IHVzZSBhbiBTUEQgRUVQUk9NIHRvIGRlc2NyaWJlIGl0LgorCSAqIFRoZSBTUEQgaGFzIGFuIHVuc3BlY2lmaWVkIGRpbW0gdHlwZSwgYnV0IHRoZSBERFIyIGluaXRpYWxpemF0aW9uCisJICogY29kZSByZXF1aXJlcyBhIHNwZWNpZmljIHR5cGUgdG8gYmUgc3BlY2lmaWVkLiBUaGlzIHNldHMgdGhlIHR5cGUKKwkgKiBhcyBhIHN0YW5kYXJkIHVucmVnaXN0ZXJlZCBTTy1ESU1NLiAqLworCWlmIChzcGQtPmRpbW1fdHlwZSA9PSAwKSB7CisJCXNwZC0+ZGltbV90eXBlID0gMHg0OworCQkoKHVjaGFyICopc3BkKVs2M10gKz0gMHg0OworCX0KK30KKwordW5zaWduZWQgaW50IGZzbF9kZHJfZ2V0X21lbV9kYXRhX3JhdGUodm9pZCkKK3sKKwlyZXR1cm4gZ2V0X2Rkcl9mcmVxKDApOworfQorCit2b2lkIGZzbF9kZHJfZ2V0X3NwZChkZHIyX3NwZF9lZXByb21fdCAqY3RybF9kaW1tc19zcGQsCisJCQl1bnNpZ25lZCBpbnQgY3RybF9udW0pCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlpZiAoY3RybF9udW0pIHsKKwkJcHJpbnRmKCIlczogaW52YWxpZCBjdHJsX251bSA9ICVkXG4iLCBfX2Z1bmNfXywgY3RybF9udW0pOworCQlyZXR1cm47CisJfQorCisJZm9yIChpID0gMDsgaSA8IENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSOyBpKyspCisJCWdldF9zcGQoJihjdHJsX2RpbW1zX3NwZFtpXSksIFNQRF9FRVBST01fQUREUkVTUyk7Cit9CisKK3ZvaWQgZnNsX2Rkcl9ib2FyZF9vcHRpb25zKG1lbWN0bF9vcHRpb25zX3QgKnBvcHRzLAorCQkJCWRpbW1fcGFyYW1zX3QgKnBkaW1tLAorCQkJCXVuc2lnbmVkIGludCBjdHJsX251bSkKK3sKKwkvKgorCSAqIEZhY3RvcnMgdG8gY29uc2lkZXIgZm9yIGNsb2NrIGFkanVzdDoKKwkgKgktIG51bWJlciBvZiBjaGlwcyBvbiBidXMKKwkgKgktIHBvc2l0aW9uIG9mIHNsb3QKKwkgKgktIEREUjEgdnMuIEREUjI/CisJICoJLSA/Pz8KKwkgKgorCSAqIFRoaXMgbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZCBvbiBhIGJvYXJkLWJ5LWJvYXJkIGJhc2lzLgorCSAqCTAxMTAJMy80IGN5Y2xlIGxhdGUKKwkgKgkwMTExCTcvOCBjeWNsZSBsYXRlCisJICovCisJcG9wdHMtPmNsa19hZGp1c3QgPSA3OworCisJLyoKKwkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBDUE86CisJICoJLSBmcmVxdWVuY3kKKwkgKgktIGRkcjEgdnMuIGRkcjIKKwkgKi8KKwlwb3B0cy0+Y3BvX292ZXJyaWRlID0gOTsKKworCS8qCisJICogRmFjdG9ycyB0byBjb25zaWRlciBmb3Igd3JpdGUgZGF0YSBkZWxheToKKwkgKgktIG51bWJlciBvZiBESU1NcworCSAqCisJICogMSA9IDEvNCBjbG9jayBkZWxheQorCSAqIDIgPSAxLzIgY2xvY2sgZGVsYXkKKwkgKiAzID0gMy80IGNsb2NrIGRlbGF5CisJICogNCA9IDEgICBjbG9jayBkZWxheQorCSAqIDUgPSA1LzQgY2xvY2sgZGVsYXkKKwkgKiA2ID0gMy8yIGNsb2NrIGRlbGF5CisJICovCisJcG9wdHMtPndyaXRlX2RhdGFfZGVsYXkgPSAzOworCisJLyoKKwkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBoYWxmLXN0cmVuZ3RoIGRyaXZlciBlbmFibGU6CisJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCisJICovCisJcG9wdHMtPmhhbGZfc3RyZW5ndGhfZHJpdmVyX2VuYWJsZSA9IDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvbGF3LmMgYi9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvbGF3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg2ZjljNQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTIwMC9sYXcuYwpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vZnNsX2xhdy5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKworLyoKKyAqIE5vdGVzOgorICogICAgQ0NTUkJBUiBhbmQgTDItYXMtU1JBTSBkb24ndCBuZWVkIGEgY29uZmlndXJlZCBMb2NhbCBBY2Nlc3MgV2luZG93LgorICogICAgSWYgZmxhc2ggaXMgOE0gYXQgZGVmYXVsdCBwb3NpdGlvbiAobGFzdCA4TSksIG5vIExBVyBuZWVkZWQuCisgKi8KKworc3RydWN0IGxhd19lbnRyeSBsYXdfdGFibGVbXSA9IHsKKwkvKiBMQkMgd2luZG93IC0gbWFwcyAyNTZNIDB4ZjAwMDAwMDAgLT4gMHhmZmZmZmZmZiAqLworCVNFVF9MQVcoQ09ORklHX1NZU19GTEFTSF9CQVNFMiwgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfTEJDKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfTkFORF9CQVNFLCBMQVdfU0laRV8xTSwgTEFXX1RSR1RfSUZfTEJDKSwKKyNpZiBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywgTEFXX1NJWkVfMUcsIExBV19UUkdUX0lGX1BDSV8xKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJMV9JT19QSFlTLCBMQVdBUl9TSVpFXzhNLCBMQVdfVFJHVF9JRl9QQ0lfMSksCisjZW5kaWYKKyNpZiBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJMl9NRU1fUEhZUywgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfUENJXzIpLAorCVNFVF9MQVcoQ09ORklHX1NZU19QQ0kyX0lPX1BIWVMsIExBV19TSVpFXzhNLCBMQVdfVFJHVF9JRl9QQ0lfMiksCisjZW5kaWYKK307CisKK2ludCBudW1fbGF3X2VudHJpZXMgPSBBUlJBWV9TSVpFKGxhd190YWJsZSk7CmRpZmYgLS1naXQgYS9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvdGxiLmMgYi9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvdGxiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ3YmZmOAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTIwMC90bGIuYwpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisKK3N0cnVjdCBmc2xfZV90bGJfZW50cnkgdGxiX3RhYmxlW10gPSB7CisJLyogVExCIDAgLSBmb3IgdGVtcCBzdGFjayBpbiBjYWNoZSAqLworCVNFVF9UTEJfRU5UUlkoMCwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCAwLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAorCVNFVF9UTEJfRU5UUlkoMCwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgNCAqIDEwMjQsCisJCUNPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDQgKiAxMDI0LAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDggKiAxMDI0LAorCQlDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyA4ICogMTAyNCwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCisJCTAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCisJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyAxMiAqIDEwMjQsCisJCUNPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDEyICogMTAyNCwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCisJCTAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCisKKwkvKiBXKipHKiAtIE5PUiBmbGFzaGVzICovCisJLyogVGhpcyB3aWxsIGJlIGNoYW5nZWQgdG8gKkkqRyogYWZ0ZXIgcmVsb2NhdGlvbiB0byBSQU0uICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UyLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UyLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9XfE1BUzJfRywKKwkJMCwgMCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAorCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0NDU1JCQVIsIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJMCwgMSwgQk9PS0VfUEFHRVNaXzFNLCAxKSwKKworCS8qICpJKkcqIC0gTkFORCBmbGFzaCAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19OQU5EX0JBU0UsIENPTkZJR19TWVNfTkFORF9CQVNFLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJMCwgMiwgQk9PS0VfUEFHRVNaXzFNLCAxKSwKKworI2lmIENPTkZJR19QQ0kxCisJLyogKkkqRyogLSBQQ0kgTUVNICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUywKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDMsIEJPT0tFX1BBR0VTWl8xRywgMSksCisjZW5kaWYKKworI2lmIENPTkZJR19QQ0kyCisJLyogKkkqRyogLSBQQ0kgTUVNICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUywKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDQsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfUENJMSkgfHwgZGVmaW5lZChDT05GSUdfUENJMikKKwkvKiAqSSpHKiAtIFBDSSBJTyAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMsIENPTkZJR19TWVNfUENJMV9JT19QSFlTLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJMCwgNSwgQk9PS0VfUEFHRVNaXzE2TSwgMSksCisjZW5kaWYKK307CisKK2ludCBudW1fdGxiX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRsYl90YWJsZSk7CmRpZmYgLS1naXQgYS9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvdS1ib290LmxkcyBiL2JvYXJkL3hlcy94cGVkaXRlNTIwMC91LWJvb3QubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkOTUyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC94ZXMveHBlZGl0ZTUyMDAvdS1ib290LmxkcwpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisgKiBDb3B5cmlnaHQgMjAwNCwgMjAwNy0yMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0FSQ0gocG93ZXJwYykKKy8qIERvIHdlIG5lZWQgYW55IG9mIHRoZXNlIGZvciBlbGY/CisgICBfX0RZTkFNSUMgPSAwOyAgICAqLworUEhEUlMKK3sKKyAgdGV4dCBQVF9MT0FEOworICBic3MgUFRfTE9BRDsKK30KKworU0VDVElPTlMKK3sKKyAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCisgIC4gPSArIFNJWkVPRl9IRUFERVJTOworICAuaW50ZXJwIDogeyAqKC5pbnRlcnApIH0KKyAgLmhhc2ggICAgICAgICAgOiB7ICooLmhhc2gpCQl9CisgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CisgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CisgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQorICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CisgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQorICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CisgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KKyAgLnJlbGEuY3RvcnMgICAgOiB7ICooLnJlbGEuY3RvcnMpCX0KKyAgLnJlbC5kdG9ycyAgICAgOiB7ICooLnJlbC5kdG9ycykJfQorICAucmVsYS5kdG9ycyAgICA6IHsgKigucmVsYS5kdG9ycykJfQorICAucmVsLmJzcyAgICAgICA6IHsgKigucmVsLmJzcykJCX0KKyAgLnJlbGEuYnNzICAgICAgOiB7ICooLnJlbGEuYnNzKQkJfQorICAucmVsLnBsdCAgICAgICA6IHsgKigucmVsLnBsdCkJCX0KKyAgLnJlbGEucGx0ICAgICAgOiB7ICooLnJlbGEucGx0KQkJfQorICAuaW5pdCAgICAgICAgICA6IHsgKiguaW5pdCkJfQorICAucGx0IDogeyAqKC5wbHQpIH0KKyAgLnRleHQgICAgICA6CisgIHsKKyAgICAqKC50ZXh0KQorICAgICooLmdvdDEpCisgICB9IDp0ZXh0CisgICAgX2V0ZXh0ID0gLjsKKyAgICBQUk9WSURFIChldGV4dCA9IC4pOworICAgIC5yb2RhdGEgICAgOgorICAgeworICAgICooLnJvZGF0YSkKKyAgICAqKC5yb2RhdGExKQorICAgICooLnJvZGF0YS5zdHIxLjQpCisgICAgKiguZWhfZnJhbWUpCisgIH0gOnRleHQKKyAgLmZpbmkgICAgICA6IHsgKiguZmluaSkgICAgfSA9MAorICAuY3RvcnMgICAgIDogeyAqKC5jdG9ycykgICB9CisgIC5kdG9ycyAgICAgOiB7ICooLmR0b3JzKSAgIH0KKworICAvKiBSZWFkLXdyaXRlIHNlY3Rpb24sIG1lcmdlZCBpbnRvIGRhdGEgc2VnbWVudDogKi8KKyAgLiA9ICguICsgMHgwMEZGKSAmIDB4RkZGRkZGMDA7CisgIF9lcm90ZXh0ID0gLjsKKyAgUFJPVklERSAoZXJvdGV4dCA9IC4pOworICAucmVsb2MgICA6CisgIHsKKyAgICAqKC5nb3QpCisgICAgX0dPVDJfVEFCTEVfID0gLjsKKyAgICAqKC5nb3QyKQorICAgIF9GSVhVUF9UQUJMRV8gPSAuOworICAgICooLmZpeHVwKQorICB9CisgIF9fZ290Ml9lbnRyaWVzID0gKF9GSVhVUF9UQUJMRV8gLSBfR09UMl9UQUJMRV8pID4+IDI7CisgIF9fZml4dXBfZW50cmllcyA9ICguIC0gX0ZJWFVQX1RBQkxFXykgPj4gMjsKKworICAuZGF0YSAgICA6CisgIHsKKyAgICAqKC5kYXRhKQorICAgICooLmRhdGExKQorICAgICooLnNkYXRhKQorICAgICooLnNkYXRhMikKKyAgICAqKC5keW5hbWljKQorICAgIENPTlNUUlVDVE9SUworICB9CisgIF9lZGF0YSAgPSAgLjsKKyAgUFJPVklERSAoZWRhdGEgPSAuKTsKKworICAuID0gLjsKKyAgX191X2Jvb3RfY21kX3N0YXJ0ID0gLjsKKyAgLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKyAgX191X2Jvb3RfY21kX2VuZCA9IC47CisKKyAgLiA9IC47CisgIF9fc3RhcnRfX19leF90YWJsZSA9IC47CisgIF9fZXhfdGFibGUgOiB7ICooX19leF90YWJsZSkgfQorICBfX3N0b3BfX19leF90YWJsZSA9IC47CisKKyAgLiA9IEFMSUdOKDI1Nik7CisgIF9faW5pdF9iZWdpbiA9IC47CisgIC50ZXh0LmluaXQgOiB7ICooLnRleHQuaW5pdCkgfQorICAuZGF0YS5pbml0IDogeyAqKC5kYXRhLmluaXQpIH0KKyAgLiA9IEFMSUdOKDI1Nik7CisgIF9faW5pdF9lbmQgPSAuOworCisgIC5ib290cGcgQUREUigudGV4dCkgKyAweDdmMDAwIDoKKyAgeworICAgIGNwdS9tcGM4NXh4L3N0YXJ0Lm8JKC5ib290cGcpCisgIH0gOnRleHQgPSAweGZmZmYKKworICAucmVzZXR2ZWMgQUREUigudGV4dCkgKyAweDdmZmZjIDoKKyAgeworICAgICooLnJlc2V0dmVjKQorICB9IDp0ZXh0ID0gMHhmZmZmCisKKyAgLiA9IEFERFIoLnRleHQpICsgMHg4MDAwMDsKKworICBfX2Jzc19zdGFydCA9IC47CisgIC5ic3MgKE5PTE9BRCkgICAgICAgOgorICB7CisgICAqKC5zYnNzKSAqKC5zY29tbW9uKQorICAgKiguZHluYnNzKQorICAgKiguYnNzKQorICAgKihDT01NT04pCisgIH0gOmJzcworCisgIC4gPSBBTElHTig0KTsKKyAgX2VuZCA9IC4gOworICBQUk9WSURFIChlbmQgPSAuKTsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTIwMC94cGVkaXRlNTIwMC5jIGIvYm9hcmQveGVzL3hwZWRpdGU1MjAwL3hwZWRpdGU1MjAwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2NmQxZAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTIwMC94cGVkaXRlNTIwMC5jCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA0LCAyMDA3IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxwY2kuaD4KKyNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2ltbWFwXzg1eHguaD4KKyNpbmNsdWRlIDxhc20vaW1tYXBfZnNsX3BjaS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNpbmNsdWRlIDxsaWJmZHQuaD4KKyNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHBjYTk1M3guaD4KKworZXh0ZXJuIHZvaWQgZnRfYm9hcmRfcGNpX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKTsKKworaW50IGNoZWNrYm9hcmQodm9pZCkKK3sKKwl2b2xhdGlsZSBjY3NyX2xiY190ICpsYmMgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfTEJDX0FERFIpOworCXZvbGF0aWxlIGNjc3JfbG9jYWxfZWNtX3QgKmVjbSA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9FQ01fQUREUik7CisKKwljaGFyICpzOworCisJcHJpbnRmKCJCb2FyZDogWC1FUyAlcyBQTUNcbiIsIENPTkZJR19TWVNfQk9BUkRfTkFNRSk7CisJcHJpbnRmKCIgICAgICAgIik7CisJcyA9IGdldGVudigiYm9hcmRfcmV2Iik7CisJaWYgKHMpCisJCXByaW50ZigiUmV2ICVzLCAiLCBzKTsKKwlzID0gZ2V0ZW52KCJzZXJpYWwjIik7CisJaWYgKHMpCisJCXByaW50ZigiU2VyaWFsIyAlcywgIiwgcyk7CisJcyA9IGdldGVudigiYm9hcmRfY2ZnIik7CisJaWYgKHMpCisJCXByaW50ZigiQ2ZnICVzIiwgcyk7CisJcHJpbnRmKCJcbiIpOworCisJbGJjLT5sdGVzciA9IDB4ZmZmZmZmZmY7CS8qIENsZWFyIExCQyBlcnJvciBpbnRlcnJ1cHRzICovCisJbGJjLT5sdGVpciA9IDB4ZmZmZmZmZmY7CS8qIEVuYWJsZSBMQkMgZXJyb3IgaW50ZXJydXB0cyAqLworCWVjbS0+ZWVkciA9IDB4ZmZmZmZmZmY7CQkvKiBDbGVhciBlY20gZXJyb3JzICovCisJZWNtLT5lZWVyID0gMHhmZmZmZmZmZjsJCS8qIEVuYWJsZSBlY20gZXJyb3JzICovCisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmxhc2hfY3NfZml4dXAodm9pZCkKK3sKKwl2b2xhdGlsZSBjY3NyX2xiY190ICpsYmMgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfTEJDX0FERFIpOworCWludCBmbGFzaF9zZWw7CisKKwkvKgorCSAqIFByaW50IGJvb3QgZGV2IGFuZCBzd2FwIGZsYXNoIGZsYXNoIGNoaXAgc2VsZWN0cyBpZiBib290ZWQgZnJvbSAybmQKKwkgKiBmbGFzaC4gIFN3YXBwaW5nIGNoaXAgc2VsZWN0cyBwcmVzZW50cyB1c2VyIHdpdGggYSBjb21tb24gbWVtb3J5CisJICogbWFwIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggZmxhc2ggd2FzIGJvb3RlZCBmcm9tLgorCSAqLworCWZsYXNoX3NlbCA9ICEoKHBjYTk1M3hfZ2V0X3ZhbChDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwKSAmCisJCQlDT05GSUdfU1lTX1BDQTk1M1hfRkxBU0hfUEFTU19DUykpOworCXByaW50ZigiRkxBU0g6IEV4ZWN1dGVkIGZyb20gRkxBU0glZFxuIiwgZmxhc2hfc2VsID8gMiA6IDEpOworCisJaWYgKGZsYXNoX3NlbCkgeworCQlsYmMtPmJyMCA9IENPTkZJR19TWVNfQlIxX1BSRUxJTTsKKwkJbGJjLT5vcjAgPSBDT05GSUdfU1lTX09SMV9QUkVMSU07CisKKwkJbGJjLT5icjEgPSBDT05GSUdfU1lTX0JSMF9QUkVMSU07CisJCWxiYy0+b3IxID0gQ09ORklHX1NZU19PUjBfUFJFTElNOworCX0KK30KKworaW50IGJvYXJkX2Vhcmx5X2luaXRfcih2b2lkKQoreworCS8qIEluaXRpYWxpemUgUENBOTU1NyBkZXZpY2VzICovCisJcGNhOTUzeF9zZXRfcG9sKENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjAsIDB4ZmYsIDApOworCXBjYTk1M3hfc2V0X3BvbChDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIxLCAweGZmLCAwKTsKKworCS8qCisJICogUmVtYXAgTk9SIGZsYXNoIHJlZ2lvbiB0byBjYWNoaW5nLWluaGliaXRlZAorCSAqIHNvIHRoYXQgZmxhc2ggY2FuIGJlIGVyYXNlZC9wcm9ncmFtbWVkIHByb3Blcmx5LgorCSAqLworCisJLyogRmx1c2ggZC1jYWNoZSBhbmQgaW52YWxpZGF0ZSBpLWNhY2hlIG9mIGFueSBGTEFTSCBkYXRhICovCisJZmx1c2hfZGNhY2hlKCk7CisJaW52YWxpZGF0ZV9pY2FjaGUoKTsKKworCS8qIEludmFsaWRhdGUgZXhpc3RpbmcgVExCIGVudHJ5IGZvciBOT1IgZmxhc2ggKi8KKwlkaXNhYmxlX3RsYigwKTsKKwlzZXRfdGxiKDEsIChDT05GSUdfU1lTX0ZMQVNIX0JBU0UyICYgMHhmMDAwMDAwMCksCisJCShDT05GSUdfU1lTX0ZMQVNIX0JBU0UyICYgMHhmMDAwMDAwMCksCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfMjU2TSwgMSk7CisKKwlmbGFzaF9jc19maXh1cCgpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkKK3ZvaWQgZnRfYm9hcmRfc2V0dXAodm9pZCAqYmxvYiwgYmRfdCAqYmQpCit7CisjaWZkZWYgQ09ORklHX1BDSQorCWZ0X2JvYXJkX3BjaV9zZXR1cChibG9iLCBiZCk7CisjZW5kaWYKKwlmdF9jcHVfc2V0dXAoYmxvYiwgYmQpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC94ZXMveHBlZGl0ZTUzNzAvTWFrZWZpbGUgYi9ib2FyZC94ZXMveHBlZGl0ZTUzNzAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE5Mzk3YwotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTM3MC9NYWtlZmlsZQpAQCAtMCwwICsxLDQ1IEBACisjCisjIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisjIENvcHlyaWdodCAyMDA3IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisjIChDKSBDb3B5cmlnaHQgMjAwMS0yMDA2CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCisKK0NPQkpTLXkJKz0gJChCT0FSRCkubworQ09CSlMteQkrPSBkZHIubworQ09CSlMteQkrPSBsYXcubworQ09CSlMteQkrPSB0bGIubworCitTUkNTCTo9ICQoU09CSlMteToubz0uUykgJChDT0JKUy15Oi5vPS5jKQorT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUy15KSkKK1NPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTLXkpKQorCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKE9CSlMpICQoU09CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0CitpbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKKworc2luY2x1ZGUgJChvYmopLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngveHVwdjJwL2NvbmZpZy5tayBiL2JvYXJkL3hlcy94cGVkaXRlNTM3MC9jb25maWcubWsKc2ltaWxhcml0eSBpbmRleCA2NCUKY29weSBmcm9tIGJvYXJkL3hpbGlueC94dXB2MnAvY29uZmlnLm1rCmNvcHkgdG8gYm9hcmQveGVzL3hwZWRpdGU1MzcwL2NvbmZpZy5tawppbmRleCBjMDdiMGIzLi4zOTQ2OWIyIDEwMDY0NAotLS0gYS9ib2FyZC94aWxpbngveHVwdjJwL2NvbmZpZy5taworKysgYi9ib2FyZC94ZXMveHBlZGl0ZTUzNzAvY29uZmlnLm1rCkBAIC0xLDcgKzEsNiBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDcgTWljaGFsIFNpbWVrCi0jCi0jIE1pY2hhbCAgU0lNRUsgPG1vbnN0ckBtb25zdHIuZXU+CisjIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisjIENvcHlyaWdodCAyMDA3LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICMgcHJvamVjdC4KQEAgLTEzLDcgKzEyLDcgQEAKICMKICMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC0yMSwxMiArMjAsMTYgQEAKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICMgTUEgMDIxMTEtMTMwNyBVU0EKICMKLSMgQ0FVVElPTjogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGxpYmdlbi4KLSMgVmVyc2lvbjogWGlsaW54IEVESyA4LjIuMDIgRURLX0ltX1NwMi40CisKICMKKyMgeHBlZGl0ZTUzNzAgYm9hcmQKKyMKK2lmbmRlZiBURVhUX0JBU0UKK1RFWFRfQkFTRSA9IDB4ZmZmODAwMDAKK2VuZGlmCiAKLVRFWFRfQkFTRSA9IDB4MzgwMDAwMDAKK1BMQVRGT1JNX1JFTEZMQUdTICs9IC1tcmVsb2NhdGFibGUKIAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LW11bAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1uby14bC1zb2Z0LWRpdgotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW14bC1iYXJyZWwtc2hpZnQKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX0U1MDA9MQorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODV4eD0xCitQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4NTcyPTEKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTM3MC9kZHIuYyBiL2JvYXJkL3hlcy94cGVkaXRlNTM3MC9kZHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDNmMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MzcwL2Rkci5jCkBAIC0wLDAgKzEsMjcwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGkyYy5oPgorCisjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfc2RyYW0uaD4KKyNpbmNsdWRlIDxhc20vZnNsX2Rkcl9kaW1tX3BhcmFtcy5oPgorCitzdGF0aWMgdm9pZCBnZXRfc3BkKGRkcjJfc3BkX2VlcHJvbV90ICpzcGQsIHVuc2lnbmVkIGNoYXIgaTJjX2FkZHJlc3MpCit7CisJaTJjX3JlYWQoaTJjX2FkZHJlc3MsIFNQRF9FRVBST01fT0ZGU0VULCAyLCAodWNoYXIgKilzcGQsCisJCSBzaXplb2YoZGRyMl9zcGRfZWVwcm9tX3QpKTsKK30KKwordW5zaWduZWQgaW50IGZzbF9kZHJfZ2V0X21lbV9kYXRhX3JhdGUodm9pZCkKK3sKKwlyZXR1cm4gZ2V0X2Rkcl9mcmVxKDApOworfQorCit2b2lkIGZzbF9kZHJfZ2V0X3NwZChkZHIyX3NwZF9lZXByb21fdCAqY3RybF9kaW1tc19zcGQsCisJCSAgICAgIHVuc2lnbmVkIGludCBjdHJsX251bSkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwl1bnNpZ25lZCBpbnQgaTJjX2FkZHJlc3MgPSAwOworCisJZm9yIChpID0gMDsgaSA8IENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSOyBpKyspIHsKKwkJaWYgKGN0cmxfbnVtID09IDApCisJCQlpMmNfYWRkcmVzcyA9IFNQRF9FRVBST01fQUREUkVTUzE7CisJCWlmIChjdHJsX251bSA9PSAxKQorCQkJaTJjX2FkZHJlc3MgPSBTUERfRUVQUk9NX0FERFJFU1MyOworCQlnZXRfc3BkKCYoY3RybF9kaW1tc19zcGRbaV0pLCBpMmNfYWRkcmVzcyk7CisJfQorfQorCisvKgorICogVGhlcmUgYXJlIGZvdXIgYm9hcmQtc3BlY2lmaWMgU0RSQU0gdGltaW5nIHBhcmFtZXRlcnMgd2hpY2ggbXVzdCBiZQorICogY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgcGFydGljdWxhciBQQ0IgYXJ0d29yay4gIFRoZXNlIGFyZToKKyAqICAgMS4pIENQTyAoUmVhZCBDYXB0dXJlIERlbGF5KQorICogICAgICAgICAgIC0gVElNSU5HX0NGR18yIHJlZ2lzdGVyCisgKiAgICAgICAgICAgU291cmNlOiBDYWxjdWxhdGlvbiBiYXNlZCBvbiBib2FyZCB0cmFjZSBsZW5ndGhzIGFuZAorICogICAgICAgICAgICAgICAgICAgY2hpcC1zcGVjaWZpYyBpbnRlcm5hbCBkZWxheXMuCisgKiAgIDIuKSBXUl9EQVRBX0RFTEFZIChXcml0ZSBDb21tYW5kIHRvIERhdGEgU3Ryb2JlIERlbGF5KQorICogICAgICAgICAgIC0gVElNSU5HX0NGR18yIHJlZ2lzdGVyCisgKiAgICAgICAgICAgU291cmNlOiBDYWxjdWxhdGlvbiBiYXNlZCBvbiBib2FyZCB0cmFjZSBsZW5ndGhzLgorICogICAgICAgICAgICAgICAgICAgVW5sZXNzIGNsb2NrIGFuZCBEUSBsYW5lcyBhcmUgdmVyeSBkaWZmZXJlbnQKKyAqICAgICAgICAgICAgICAgICAgIGxlbmd0aHMgKD4yIiksIHRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgbm9taW5hbCB2YWx1ZQorICogICAgICAgICAgICAgICAgICAgb2YgMS8yIGNsb2NrIGRlbGF5LgorICogICAzLikgQ0xLX0FESlVTVCAoQ2xvY2sgYW5kIEFkZHIvQ21kIGFsaWdubWVudCBjb250cm9sKQorICogICAgICAgICAgIC0gRERSX1NEUkFNX0NMS19DTlRMIHJlZ2lzdGVyCisgKiAgICAgICAgICAgU291cmNlOiBTaWduYWwgSW50ZWdyaXR5IFNpbXVsYXRpb25zCisgKiAgIDQuKSAyVCBUaW1pbmcgb24gQWRkci9DdGwKKyAqICAgICAgICAgICAtIFRJTUlOR19DRkdfMiByZWdpc3RlcgorICogICAgICAgICAgIFNvdXJjZTogU2lnbmFsIEludGVncml0eSBTaW11bGF0aW9ucworICogICAgICAgICAgIFVzdWFsbHkgb25seSBuZWVkZWQgd2l0aCBoZWF2eSBsb2FkL3ZlcnkgaGlnaCBzcGVlZCAoPkREUjItODAwKQorICoKKyAqICAgICA9PT09PT0gWFBlZGl0ZTUzNzAgRERSMi02MDAgcmVhZCBkZWxheSBjYWxjdWxhdGlvbnMgPT09PT09CisgKgorICogICAgIFNlZSBGcmVlc2NhbGUncyBBcHAgTm90ZSBBTjI1ODMgYXMgcmVmcmVuY2UuICBUaGlzIGRvY3VtZW50IGFsc28KKyAqICAgICBjb250YWlucyB0aGUgY2hpcC1zcGVjaWZpYyBkZWxheXMgZm9yIDg1NDhFLCA4NTcyLCBldGMuCisgKgorICogICAgIEZvciBNUEM4NTcyRQorICogICAgIE1pbmltdW0gY2hpcCBkZWxheSAoQ2ggMCk6IDEuMzcybnMKKyAqICAgICBNYXhpbXVtIGNoaXAgZGVsYXkgKENoIDApOiAyLjkxNG5zCisgKiAgICAgTWluaW11bSBjaGlwIGRlbGF5IChDaCAxKTogMS4yMjBucworICogICAgIE1heGltdW0gY2hpcCBkZWxheSAoQ2ggMSk6IDIuNTk1bnMKKyAqCisgKiAgICAgQ0xLIGFkanVzdCA9IDUgKGZyb20gc2ltdWxhdGlvbnMpID0gNS84KiAzLjMzbnMgPSAyMDgwcHMKKyAqCisgKiAgICAgTWluaW11bSBkZWxheSBjYWxjIChDaCAwKToKKyAqICAgICBjbG9jayBwcm9wIC0gZHJhbSBza2V3ICsgbWluIGRxcyBwcm9wIGRlbGF5ICsgY2xrX2FkanVzdCArIG1pbiBjaGlwIGRseQorICogICAgIDIuMyIgKiAxODAgLSA0MDBwcyAgICAgKyAxLjkiICogMTgwICAgICAgICAgKyAyMDgwcHMgICAgICsgMTM3MnBzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDM4MDhwcworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAzLjgwOG5zCisgKgorICogICAgIE1heGltdW0gZGVsYXkgY2FsYyAoQ2ggMCk6CisgKiAgICAgY2xvY2sgcHJvcCArIGRyYW0gc2tldyArIG1heCBkcXMgcHJvcCBkZWxheSArIGNsa19hZGp1c3QgKyBtYXggY2hpcCBkbHkKKyAqICAgICAyLjMiICogMTgwICsgNDAwcHMgICAgICsgMi40IiAqIDE4MCAgICAgICAgICsgMjA4MHBzICAgICArIDI5MTRwcworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA2MjQwcHMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNi4yNDBucworICoKKyAqICAgICBNaW5pbXVtIGRlbGF5IGNhbGMgKENoIDEpOgorICogICAgIGNsb2NrIHByb3AgLSBkcmFtIHNrZXcgKyBtaW4gZHFzIHByb3AgZGVsYXkgKyBjbGtfYWRqdXN0ICsgbWluIGNoaXAgZGx5CisgKiAgICAgMS40NiIgKiAxODAtIDQwMHBzICAgICArIDAuNyIgKiAxODAgICAgICAgICArIDIwODBwcyAgICAgKyAxMjIwcHMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMzI4OHBzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDMuMjg4bnMKKyAqCisgKiAgICAgTWF4aW11bSBkZWxheSBjYWxjIChDaCAxKToKKyAqICAgICBjbG9jayBwcm9wICsgZHJhbSBza2V3ICsgbWF4IGRxcyBwcm9wIGRlbGF5ICsgY2xrX2FkanVzdCArIG1pbiBjaGlwIGRseQorICogICAgIDEuNDYiICogMTgwKyA0MDBwcyAgICAgKyAxLjEiICogMTgwICAgICAgICAgKyAyMDgwcHMgICAgICsgMjU5NXBzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDU1MzZwcworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA1LjUzNm5zCisgKgorICogICAgIENoLjA6IDMuODA4bnMgdG8gNi4yNDBucyBhZGRpdGlvbmFsIGRlbGF5IG5lZWRlZCAgKHBpY2sgNW5zIGFzIHRhcmdldCkKKyAqICAgICAgICAgICAgICBUaGlzIGlzIDEuNSBjbG9jayBjeWNsZXMsIHBpY2sgQ1BPID0gUkVBRF9MQVQgKyAzLzIgKDB4OCkKKyAqICAgICBDaC4xOiAzLjI4OG5zIHRvIDUuNTM2bnMgYWRkaXRpb25hbCBkZWxheSBuZWVkZWQgIChwaWNrIDQuNG5zIGFzIHRhcmdldCkKKyAqICAgICAgICAgICAgICBUaGlzIGlzIDEuMzIgY2xvY2sgY3ljbGVzLCBwaWNrIENQTyA9IFJFQURfTEFUICsgNS80ICgweDcpCisgKgorICoKKyAqICAgICA9PT09PT0gWFBlZGl0ZTUzNzAgRERSMi04MDAgcmVhZCBkZWxheSBjYWxjdWxhdGlvbnMgPT09PT09CisgKgorICogICAgIFNlZSBGcmVlc2NhbGUncyBBcHAgTm90ZSBBTjI1ODMgYXMgcmVmcmVuY2UuICBUaGlzIGRvY3VtZW50IGFsc28KKyAqICAgICBjb250YWlucyB0aGUgY2hpcC1zcGVjaWZpYyBkZWxheXMgZm9yIDg1NDhFLCA4NTcyLCBldGMuCisgKgorICogICAgIEZvciBNUEM4NTcyRQorICogICAgIE1pbmltdW0gY2hpcCBkZWxheSAoQ2ggMCk6IDEuMzcybnMKKyAqICAgICBNYXhpbXVtIGNoaXAgZGVsYXkgKENoIDApOiAyLjkxNG5zCisgKiAgICAgTWluaW11bSBjaGlwIGRlbGF5IChDaCAxKTogMS4yMjBucworICogICAgIE1heGltdW0gY2hpcCBkZWxheSAoQ2ggMSk6IDIuNTk1bnMKKyAqCisgKiAgICAgQ0xLIGFkanVzdCA9IDUgKGZyb20gc2ltdWxhdGlvbnMpID0gNS84KiAyLjVucyA9IDE1NjNwcworICoKKyAqICAgICBNaW5pbXVtIGRlbGF5IGNhbGMgKENoIDApOgorICogICAgIGNsb2NrIHByb3AgLSBkcmFtIHNrZXcgKyBtaW4gZHFzIHByb3AgZGVsYXkgKyBjbGtfYWRqdXN0ICsgbWluIGNoaXAgZGx5CisgKiAgICAgMi4zIiAqIDE4MCAtIDM1MHBzICAgICArIDEuOSIgKiAxODAgICAgICAgICArIDE1NjNwcyAgICAgKyAxMzcycHMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMzM0MXBzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDMuMzQxbnMKKyAqCisgKiAgICAgTWF4aW11bSBkZWxheSBjYWxjIChDaCAwKToKKyAqICAgICBjbG9jayBwcm9wICsgZHJhbSBza2V3ICsgbWF4IGRxcyBwcm9wIGRlbGF5ICsgY2xrX2FkanVzdCArIG1heCBjaGlwIGRseQorICogICAgIDIuMyIgKiAxODAgKyAzNTBwcyAgICAgKyAyLjQiICogMTgwICAgICAgICAgKyAxNTYzcHMgICAgICsgMjkxNHBzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDU2NzNwcworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA1LjY3M25zCisgKgorICogICAgIE1pbmltdW0gZGVsYXkgY2FsYyAoQ2ggMSk6CisgKiAgICAgY2xvY2sgcHJvcCAtIGRyYW0gc2tldyArIG1pbiBkcXMgcHJvcCBkZWxheSArIGNsa19hZGp1c3QgKyBtaW4gY2hpcCBkbHkKKyAqICAgICAxLjQ2IiAqIDE4MC0gMzUwcHMgICAgICsgMC43IiAqIDE4MCAgICAgICAgICsgMTU2M3BzICAgICArIDEyMjBwcworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAyODIycHMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMi44MjJucworICoKKyAqICAgICBNYXhpbXVtIGRlbGF5IGNhbGMgKENoIDEpOgorICogICAgIGNsb2NrIHByb3AgKyBkcmFtIHNrZXcgKyBtYXggZHFzIHByb3AgZGVsYXkgKyBjbGtfYWRqdXN0ICsgbWluIGNoaXAgZGx5CisgKiAgICAgMS40NiIgKiAxODArIDM1MHBzICAgICArIDEuMSIgKiAxODAgICAgICAgICArIDE1NjNwcyAgICAgKyAyNTk1cHMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNDk2OHBzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDQuOTY4bnMKKyAqCisgKiAgICAgQ2guMDogMy4zNDFucyB0byA1LjY3M25zIGFkZGl0aW9uYWwgZGVsYXkgbmVlZGVkICAocGljayA0LjVucyBhcyB0YXJnZXQpCisgKiAgICAgICAgICAgICAgVGhpcyBpcyAxLjggY2xvY2sgY3ljbGVzLCBwaWNrIENQTyA9IFJFQURfTEFUICsgNy80ICgweDkpCisgKiAgICAgQ2guMTogMi44MjJucyB0byA0Ljk2OG5zIGFkZGl0aW9uYWwgZGVsYXkgbmVlZGVkICAocGljayAzLjlucyBhcyB0YXJnZXQpCisgKiAgICAgICAgICAgICAgVGhpcyBpcyAxLjU2IGNsb2NrIGN5Y2xlcywgcGljayBDUE8gPSBSRUFEX0xBVCArIDMvMiAoMHg4KQorICoKKyAqIFdyaXRlIGxhdGVuY3kgKFdSX0RBVEFfREVMQVkpIGlzIGNhbGN1bGF0ZWQgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzoKKyAqCisgKiAgICAgIFRoZSBERFIgU0RSQU0gc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBEUVMgYmUgcmVjZWl2ZWQgbm8gc29vbmVyIHRoYW4KKyAqICAgICAgNzUlIG9mIGFuIFNEUkFNIGNsb2NrIHBlcmlvZMOC4oCUYW5kIG5vIGxhdGVyIHRoYW4gMTI1JSBvZiBhIGNsb2NrCisgKiAgICAgIHBlcmlvZMOC4oCUZnJvbSB0aGUgY2FwdHVyaW5nIGNsb2NrIGVkZ2Ugb2YgdGhlIGNvbW1hbmQvYWRkcmVzcyBhdCB0aGUKKyAqICAgICAgU0RSQU0uCisgKgorICogQmFzZWQgb24gdGhlIGFib3ZlIHRyYWNlbGVuZ3RocywgdGhlIGZvbGxvd2luZyBhcmUgY2FsY3VsYXRlZDoKKyAqICAgICAgQ2guIDAgODU3MiB0byBEUkFNIHByb3BhZ2F0aW9uIChEUSBsYW5lcykgOiAxLjkiICogMTgwID0gIDAuMzQybnMKKyAqICAgICAgQ2guIDAgODU3MiB0byBEUkFNIHByb3BhZ2F0aW9uIChDTEtzKSA6ICAgICAyLjMiICogMTgwID0gIDAuNDE0bnMKKyAqICAgICAgQ2guIDEgODU3MiB0byBEUkFNIHByb3BhZ2F0aW9uIChEUSBsYW5lcykgOiAwLjciICogMTgwID0gIDAuMTI2bnMKKyAqICAgICAgQ2guIDEgODU3MiB0byBEUkFNIHByb3BhZ2F0aW9uIChDTEtzICAgKSA6IDEuNDciICogMTgwID0gIDAuMjY0bnMKKyAqCisgKiBEaWZmZXJlbmNlIGluIGFycml2YWwgdGltZSBDTEsgdnMuIERRUzoKKyAqICAgICAgQ2guIDAgMC4wNzJucworICogICAgICBDaC4gMSAwLjEzOG5zCisgKgorICogICAgICBCb3RoIG9mIHRoZXNlIHZhbHVlcyBhcmUgbXVjaCBsZXNzIHRoYW4gMjUlIG9mIHRoZSBjbG9jaworICogICAgICBwZXJpb2QgYXQgRERSMi02MDAgb3IgRERSMi04MDAsIHNvIG5vIGFkZGl0aW9uYWwgZGVsYXkgaXMgbmVlZGVkIG92ZXIKKyAqICAgICAgdGhlIDEvMiBjeWNsZSB3aGljaCBub3JtYWxseSBhbGlnbnMgdGhlIGZpcnN0IERRUyB0cmFuc2l0aW9uCisgKiAgICAgIGV4YWN0bHkgV0wgKENBUyBsYXRlbmN5IG1pbnVzIG9uZSBjeWNsZSkgYWZ0ZXIgdGhlIENBUyBzdHJvYmUuCisgKiAgICAgIFNlZSBGaWd1cmUgOS01MyBpbiBNUEM4NTcyRSBtYW51YWw6ICIxLzIgZGVsYXkiIGluIEZyZWVzY2FsZSdzCisgKiAgICAgIHRlcm1pbm9sb2d5IGNvcnJlc3BvbmRzIHRvIGV4YWN0bHkgb25lIGNsb2NrIHBlcmlvZCBkZWxheSBhZnRlcgorICogICAgICB0aGUgQ0FTIHN0cm9iZS4gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSAiZGVsYXkiIGlzIHJlZmVyZW5jZWQKKyAqICAgICAgZnJvbSB0aGUgKmZhbGxpbmcqIGVkZ2Ugb2YgdGhlIENMSywganVzdCBhZnRlciB0aGUgcmlzaW5nIGVkZ2UKKyAqICAgICAgd2hpY2ggdGhlIENBUyBzdHJvYmUgaXMgbGF0Y2hlZCBvbi4KKyAqLworCit0eXBlZGVmIHN0cnVjdCBib2FyZF9tZW1jdGxfb3B0aW9ucyB7CisJdWludDE2X3QgZGF0YXJhdGVfbWh6X2xvdzsKKwl1aW50MTZfdCBkYXRhcmF0ZV9taHpfaGlnaDsKKwl1aW50OF90IGNsa19hZGp1c3Q7CisJdWludDhfdCBjcG9fb3ZlcnJpZGU7CisJdWludDhfdCB3cml0ZV9kYXRhX2RlbGF5OworfSBib2FyZF9tZW1jdGxfb3B0aW9uc190OworCitzdGF0aWMgc3RydWN0IGJvYXJkX21lbWN0bF9vcHRpb25zIGJvcHRzX2N0cmxbXVsyXSA9IHsKKwl7CisJCS8qIENvbnRyb2xsZXIgMCAqLworCQl7CisJCQkvKiBERFIyIDYwMC82NjcgKi8KKwkJCS5kYXRhcmF0ZV9taHpfbG93CT0gNTAwLAorCQkJLmRhdGFyYXRlX21oel9oaWdoCT0gNzUwLAorCQkJLmNsa19hZGp1c3QJCT0gNSwKKwkJCS5jcG9fb3ZlcnJpZGUJCT0gOCwKKwkJCS53cml0ZV9kYXRhX2RlbGF5CT0gMiwKKwkJfSwKKwkJeworCQkJLyogRERSMiA4MDAgKi8KKwkJCS5kYXRhcmF0ZV9taHpfbG93CT0gNzUwLAorCQkJLmRhdGFyYXRlX21oel9oaWdoCT0gODUwLAorCQkJLmNsa19hZGp1c3QJCT0gNSwKKwkJCS5jcG9fb3ZlcnJpZGUJCT0gOSwKKwkJCS53cml0ZV9kYXRhX2RlbGF5CT0gMiwKKwkJfSwKKwl9LAorCXsKKwkJLyogQ29udHJvbGxlciAxICovCisJCXsKKwkJCS8qIEREUjIgNjAwLzY2NyAqLworCQkJLmRhdGFyYXRlX21oel9sb3cJPSA1MDAsCisJCQkuZGF0YXJhdGVfbWh6X2hpZ2gJPSA3NTAsCisJCQkuY2xrX2FkanVzdAkJPSA1LAorCQkJLmNwb19vdmVycmlkZQkJPSA3LAorCQkJLndyaXRlX2RhdGFfZGVsYXkJPSAyLAorCQl9LAorCQl7CisJCQkvKiBERFIyIDgwMCAqLworCQkJLmRhdGFyYXRlX21oel9sb3cJPSA3NTAsCisJCQkuZGF0YXJhdGVfbWh6X2hpZ2gJPSA4NTAsCisJCQkuY2xrX2FkanVzdAkJPSA1LAorCQkJLmNwb19vdmVycmlkZQkJPSA4LAorCQkJLndyaXRlX2RhdGFfZGVsYXkJPSAyLAorCQl9LAorCX0sCit9OworCit2b2lkIGZzbF9kZHJfYm9hcmRfb3B0aW9ucyhtZW1jdGxfb3B0aW9uc190ICpwb3B0cywKKwkJCSAgIGRpbW1fcGFyYW1zX3QgKnBkaW1tLAorCQkJICAgdW5zaWduZWQgaW50IGN0cmxfbnVtKQoreworCXN0cnVjdCBib2FyZF9tZW1jdGxfb3B0aW9ucyAqYm9wdHMgPSBib3B0c19jdHJsW2N0cmxfbnVtXTsKKwlzeXNfaW5mb190IHN5c2luZm87CisJaW50IGk7CisJdW5zaWduZWQgaW50IGRhdGFyYXRlOworCisJZ2V0X3N5c19pbmZvKCZzeXNpbmZvKTsKKwlkYXRhcmF0ZSA9IHN5c2luZm8uZnJlcUREUkJ1cyAvIDEwMDAgLyAxMDAwOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYm9wdHNfY3RybFtjdHJsX251bV0pOyBpKyspIHsKKwkJaWYgKChib3B0c1tpXS5kYXRhcmF0ZV9taHpfbG93IDw9IGRhdGFyYXRlKSAmJgorCQkgICAgKGJvcHRzW2ldLmRhdGFyYXRlX21oel9oaWdoID49IGRhdGFyYXRlKSkgeworCQkJZGVidWcoImNvbnRyb2xsZXIgJWQ6XG4iLCBjdHJsX251bSk7CisJCQlkZWJ1ZygiIGNsa19hZGp1c3QgPSAlZFxuIiwgYm9wdHNbaV0uY2xrX2FkanVzdCk7CisJCQlkZWJ1ZygiIGNwbyA9ICVkXG4iLCBib3B0c1tpXS5jcG9fb3ZlcnJpZGUpOworCQkJZGVidWcoIiB3cml0ZV9kYXRhX2RlbGF5ID0gJWRcbiIsCisJCQkgICAgICBib3B0c1tpXS53cml0ZV9kYXRhX2RlbGF5KTsKKwkJCXBvcHRzLT5jbGtfYWRqdXN0ID0gYm9wdHNbaV0uY2xrX2FkanVzdDsKKwkJCXBvcHRzLT5jcG9fb3ZlcnJpZGUgPSBib3B0c1tpXS5jcG9fb3ZlcnJpZGU7CisJCQlwb3B0cy0+d3JpdGVfZGF0YV9kZWxheSA9IGJvcHRzW2ldLndyaXRlX2RhdGFfZGVsYXk7CisJCX0KKwl9CisKKwkvKgorCSAqIEZhY3RvcnMgdG8gY29uc2lkZXIgZm9yIGhhbGYtc3RyZW5ndGggZHJpdmVyIGVuYWJsZToKKwkgKgktIG51bWJlciBvZiBESU1NcyBpbnN0YWxsZWQKKwkgKi8KKwlwb3B0cy0+aGFsZl9zdHJlbmd0aF9kcml2ZXJfZW5hYmxlID0gMDsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTM3MC9sYXcuYyBiL2JvYXJkL3hlcy94cGVkaXRlNTM3MC9sYXcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWVlNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MzcwL2xhdy5jCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICogQ29weXJpZ2h0IDIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9mc2xfbGF3Lmg+CisjaW5jbHVkZSA8YXNtL21tdS5oPgorCisvKgorICogTm90ZXM6CisgKiAgICBDQ1NSQkFSIGFuZCBMMi1hcy1TUkFNIGRvbid0IG5lZWQgYSBjb25maWd1cmVkIExvY2FsIEFjY2VzcyBXaW5kb3cuCisgKiAgICBJZiBmbGFzaCBpcyA4TSBhdCBkZWZhdWx0IHBvc2l0aW9uIChsYXN0IDhNKSwgbm8gTEFXIG5lZWRlZC4KKyAqLworCitzdHJ1Y3QgbGF3X2VudHJ5IGxhd190YWJsZVtdID0geworCVNFVF9MQVcoQ09ORklHX1NZU19GTEFTSF9CQVNFMiwgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfTEJDKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfTkFORF9CQVNFLCBMQVdfU0laRV8xTSwgTEFXX1RSR1RfSUZfTEJDKSwKKyNpZmRlZiBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLCBMQVdfU0laRV8xRywgTEFXX1RSR1RfSUZfUENJRV8xKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJRTFfSU9fUEhZUywgTEFXX1NJWkVfOE0sIExBV19UUkdUX0lGX1BDSUVfMSksCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9QQ0lFXzIpLAorCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLCBMQVdfU0laRV84TSwgTEFXX1RSR1RfSUZfUENJRV8yKSwKKyNlbmRpZgorI2lmZGVmIENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMsIExBV19TSVpFXzI1Nk0sIExBV19UUkdUX0lGX1BDSUVfMyksCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMsIExBV19TSVpFXzhNLCBMQVdfVFJHVF9JRl9QQ0lFXzMpLAorI2VuZGlmCit9OworCitpbnQgbnVtX2xhd19lbnRyaWVzID0gQVJSQVlfU0laRShsYXdfdGFibGUpOwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3RsYi5jIGIvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3RsYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYWZhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC94ZXMveHBlZGl0ZTUzNzAvdGxiLmMKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisgKiBDb3B5cmlnaHQgMjAwOCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL21tdS5oPgorCitzdHJ1Y3QgZnNsX2VfdGxiX2VudHJ5IHRsYl90YWJsZVtdID0geworCS8qIFRMQiAwIC0gZm9yIHRlbXAgc3RhY2sgaW4gY2FjaGUgKi8KKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDQgKiAxMDI0LAorCQlDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyA0ICogMTAyNCwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCisJCTAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCisJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyA4ICogMTAyNCwKKwkJQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgOCAqIDEwMjQsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCAwLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAorCVNFVF9UTEJfRU5UUlkoMCwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgMTIgKiAxMDI0LAorCQlDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyAxMiAqIDEwMjQsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCAwLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAorCisJLyogVyoqRyogLSBOT1IgZmxhc2hlcyAqLworCS8qIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvICpJKkcqIGFmdGVyIHJlbG9jYXRpb24gdG8gUkFNLiAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19GTEFTSF9CQVNFMiwgQ09ORklHX1NZU19GTEFTSF9CQVNFMiwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfV3xNQVMyX0csCisJCTAsIDAsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKKworCS8qICpJKkcqIC0gQ0NTUkJBUiAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19DQ1NSQkFSLCBDT05GSUdfU1lTX0NDU1JCQVJfUEhZUywKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDEsIEJPT0tFX1BBR0VTWl8xTSwgMSksCisKKwkvKiAqSSpHKiAtIE5BTkQgZmxhc2ggKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfTkFORF9CQVNFLCBDT05GSUdfU1lTX05BTkRfQkFTRSwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDIsIEJPT0tFX1BBR0VTWl8xTSwgMSksCisKKyNpZmRlZiBDT05GSUdfUENJRTEKKwkvKiAqSSpHKiAtIFBDSWUgKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCAzLCBCT09LRV9QQUdFU1pfMUcsIDEpLAorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfUENJRTIKKwkvKiAqSSpHKiAtIFBDSWUgKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMsIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCA0LCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QQ0lFMworCS8qICpJKkcqIC0gUENJZSAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUywgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUywKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDUsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfUENJRTEpIHx8IGRlZmluZWQoQ09ORklHX1BDSUUyKSB8fCBkZWZpbmVkKENPTkZJR19QQ0lFMykKKwkvKiAqSSpHKiAtIFBDSWUgKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUywgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJMCwgNiwgQk9PS0VfUEFHRVNaXzY0TSwgMSksCisjZW5kaWYKKworfTsKKworaW50IG51bV90bGJfZW50cmllcyA9IEFSUkFZX1NJWkUodGxiX3RhYmxlKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTM3MC91LWJvb3QubGRzIGIvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3UtYm9vdC5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzOTkxMgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTM3MC91LWJvb3QubGRzCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA3LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCitPVVRQVVRfQVJDSChwb3dlcnBjKQorLyogRG8gd2UgbmVlZCBhbnkgb2YgdGhlc2UgZm9yIGVsZj8KKyAgIF9fRFlOQU1JQyA9IDA7ICAgICovCitQSERSUworeworICB0ZXh0IFBUX0xPQUQ7CisgIGJzcyBQVF9MT0FEOworfQorCitTRUNUSU9OUworeworICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KKyAgLiA9ICsgU0laRU9GX0hFQURFUlM7CisgIC5pbnRlcnAgOiB7ICooLmludGVycCkgfQorICAuaGFzaCAgICAgICAgICA6IHsgKiguaGFzaCkJCX0KKyAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KKyAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KKyAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CisgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KKyAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CisgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KKyAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQorICAucmVsYS5jdG9ycyAgICA6IHsgKigucmVsYS5jdG9ycykJfQorICAucmVsLmR0b3JzICAgICA6IHsgKigucmVsLmR0b3JzKQl9CisgIC5yZWxhLmR0b3JzICAgIDogeyAqKC5yZWxhLmR0b3JzKQl9CisgIC5yZWwuYnNzICAgICAgIDogeyAqKC5yZWwuYnNzKQkJfQorICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCQl9CisgIC5yZWwucGx0ICAgICAgIDogeyAqKC5yZWwucGx0KQkJfQorICAucmVsYS5wbHQgICAgICA6IHsgKigucmVsYS5wbHQpCQl9CisgIC5pbml0ICAgICAgICAgIDogeyAqKC5pbml0KQl9CisgIC5wbHQgOiB7ICooLnBsdCkgfQorICAudGV4dCAgICAgIDoKKyAgeworICAgICooLnRleHQpCisgICAgKiguZ290MSkKKyAgIH0gOnRleHQKKyAgICBfZXRleHQgPSAuOworICAgIFBST1ZJREUgKGV0ZXh0ID0gLik7CisgICAgLnJvZGF0YSAgICA6CisgICB7CisgICAgKigucm9kYXRhKQorICAgICooLnJvZGF0YTEpCisgICAgKigucm9kYXRhLnN0cjEuNCkKKyAgICAqKC5laF9mcmFtZSkKKyAgfSA6dGV4dAorICAuZmluaSAgICAgIDogeyAqKC5maW5pKSAgICB9ID0wCisgIC5jdG9ycyAgICAgOiB7ICooLmN0b3JzKSAgIH0KKyAgLmR0b3JzICAgICA6IHsgKiguZHRvcnMpICAgfQorCisgIC8qIFJlYWQtd3JpdGUgc2VjdGlvbiwgbWVyZ2VkIGludG8gZGF0YSBzZWdtZW50OiAqLworICAuID0gKC4gKyAweDAwRkYpICYgMHhGRkZGRkYwMDsKKyAgX2Vyb3RleHQgPSAuOworICBQUk9WSURFIChlcm90ZXh0ID0gLik7CisgIC5yZWxvYyAgIDoKKyAgeworICAgICooLmdvdCkKKyAgICBfR09UMl9UQUJMRV8gPSAuOworICAgICooLmdvdDIpCisgICAgX0ZJWFVQX1RBQkxFXyA9IC47CisgICAgKiguZml4dXApCisgIH0KKyAgX19nb3QyX2VudHJpZXMgPSAoX0ZJWFVQX1RBQkxFXyAtIF9HT1QyX1RBQkxFXykgPj4gMjsKKyAgX19maXh1cF9lbnRyaWVzID0gKC4gLSBfRklYVVBfVEFCTEVfKSA+PiAyOworCisgIC5kYXRhICAgIDoKKyAgeworICAgICooLmRhdGEpCisgICAgKiguZGF0YTEpCisgICAgKiguc2RhdGEpCisgICAgKiguc2RhdGEyKQorICAgICooLmR5bmFtaWMpCisgICAgQ09OU1RSVUNUT1JTCisgIH0KKyAgX2VkYXRhICA9ICAuOworICBQUk9WSURFIChlZGF0YSA9IC4pOworCisgIC4gPSAuOworICBfX3VfYm9vdF9jbWRfc3RhcnQgPSAuOworICAudV9ib290X2NtZCA6IHsgKigudV9ib290X2NtZCkgfQorICBfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworICAuID0gLjsKKyAgX19zdGFydF9fX2V4X3RhYmxlID0gLjsKKyAgX19leF90YWJsZSA6IHsgKihfX2V4X3RhYmxlKSB9CisgIF9fc3RvcF9fX2V4X3RhYmxlID0gLjsKKworICAuID0gQUxJR04oMjU2KTsKKyAgX19pbml0X2JlZ2luID0gLjsKKyAgLnRleHQuaW5pdCA6IHsgKigudGV4dC5pbml0KSB9CisgIC5kYXRhLmluaXQgOiB7ICooLmRhdGEuaW5pdCkgfQorICAuID0gQUxJR04oMjU2KTsKKyAgX19pbml0X2VuZCA9IC47CisKKyAgLmJvb3RwZyBBRERSKC50ZXh0KSArIDB4N2YwMDAgOgorICB7CisgICAgY3B1L21wYzg1eHgvc3RhcnQubwkoLmJvb3RwZykKKyAgfSA6dGV4dCA9IDB4ZmZmZgorCisgIC5yZXNldHZlYyBBRERSKC50ZXh0KSArIDB4N2ZmZmMgOgorICB7CisgICAgKigucmVzZXR2ZWMpCisgIH0gOnRleHQgPSAweGZmZmYKKworICAuID0gQUREUigudGV4dCkgKyAweDgwMDAwOworCisgIF9fYnNzX3N0YXJ0ID0gLjsKKyAgLmJzcyAoTk9MT0FEKSAgICAgICA6CisgIHsKKyAgICooLnNic3MpICooLnNjb21tb24pCisgICAqKC5keW5ic3MpCisgICAqKC5ic3MpCisgICAqKENPTU1PTikKKyAgfSA6YnNzCisKKyAgLiA9IEFMSUdOKDQpOworICBfZW5kID0gLiA7CisgIFBST1ZJREUgKGVuZCA9IC4pOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3hwZWRpdGU1MzcwLmMgYi9ib2FyZC94ZXMveHBlZGl0ZTUzNzAveHBlZGl0ZTUzNzAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODc1MDk1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3hwZWRpdGU1MzcwLmMKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNpbmNsdWRlIDxhc20vaW1tYXBfODV4eC5oPgorI2luY2x1ZGUgPGFzbS9pbW1hcF9mc2xfcGNpLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2NhY2hlLmg+CisjaW5jbHVkZSA8bGliZmR0Lmg+CisjaW5jbHVkZSA8ZmR0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwY2E5NTN4Lmg+CisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCitleHRlcm4gdm9pZCBmdF9ib2FyZF9wY2lfc2V0dXAodm9pZCAqYmxvYiwgYmRfdCAqYmQpOworCitpbnQgY2hlY2tib2FyZCh2b2lkKQoreworCWNoYXIgKnM7CisKKwlwcmludGYoIkJvYXJkOiBYLUVTICVzIDNVIFZQWCBTQkNcbiIsIENPTkZJR19TWVNfQk9BUkRfTkFNRSk7CisJcHJpbnRmKCIgICAgICAgIik7CisJcyA9IGdldGVudigiYm9hcmRfcmV2Iik7CisJaWYgKHMpCisJCXByaW50ZigiUmV2ICVzLCAiLCBzKTsKKwlzID0gZ2V0ZW52KCJzZXJpYWwjIik7CisJaWYgKHMpCisJCXByaW50ZigiU2VyaWFsIyAlcywgIiwgcyk7CisJcyA9IGdldGVudigiYm9hcmRfY2ZnIik7CisJaWYgKHMpCisJCXByaW50ZigiQ2ZnICVzIiwgcyk7CisJcHJpbnRmKCJcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZsYXNoX2NzX2ZpeHVwKHZvaWQpCit7CisJdm9sYXRpbGUgY2Nzcl9sYmNfdCAqbGJjID0gKHZvaWQgKikoQ09ORklHX1NZU19NUEM4NXh4X0xCQ19BRERSKTsKKwlpbnQgZmxhc2hfc2VsOworCisJLyoKKwkgKiBQcmludCBib290IGRldiBhbmQgc3dhcCBmbGFzaCBmbGFzaCBjaGlwIHNlbGVjdHMgaWYgYm9vdGVkIGZyb20gMm5kCisJICogZmxhc2guICBTd2FwcGluZyBjaGlwIHNlbGVjdHMgcHJlc2VudHMgdXNlciB3aXRoIGEgY29tbW9uIG1lbW9yeQorCSAqIG1hcCByZWdhcmRsZXNzIG9mIHdoaWNoIGZsYXNoIHdhcyBib290ZWQgZnJvbS4KKwkgKi8KKwlmbGFzaF9zZWwgPSAhKChwY2E5NTN4X2dldF92YWwoQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSMCkgJgorCQkJQ09ORklHX1NZU19QQ0E5NTNYX0MwX0ZMQVNIX1BBU1NfQ1MpKTsKKwlwcmludGYoIkZMQVNIOiBFeGVjdXRlZCBmcm9tIEZMQVNIJWRcbiIsIGZsYXNoX3NlbCA/IDIgOiAxKTsKKworCWlmIChmbGFzaF9zZWwpIHsKKwkJbGJjLT5icjAgPSBDT05GSUdfU1lTX0JSMV9QUkVMSU07CisJCWxiYy0+b3IwID0gQ09ORklHX1NZU19PUjFfUFJFTElNOworCisJCWxiYy0+YnIxID0gQ09ORklHX1NZU19CUjBfUFJFTElNOworCQlsYmMtPm9yMSA9IENPTkZJR19TWVNfT1IwX1BSRUxJTTsKKwl9Cit9CisKK2ludCBib2FyZF9lYXJseV9pbml0X3Iodm9pZCkKK3sKKwkvKiBJbml0aWFsaXplIFBDQTk1NTcgZGV2aWNlcyAqLworCXBjYTk1M3hfc2V0X3BvbChDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwLCAweGZmLCAwKTsKKwlwY2E5NTN4X3NldF9wb2woQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSMSwgMHhmZiwgMCk7CisJcGNhOTUzeF9zZXRfcG9sKENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjAsIDB4ZmYsIDApOworCXBjYTk1M3hfc2V0X3BvbChDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwLCAweGZmLCAwKTsKKworCS8qCisJICogUmVtYXAgTk9SIGZsYXNoIHJlZ2lvbiB0byBjYWNoaW5nLWluaGliaXRlZAorCSAqIHNvIHRoYXQgZmxhc2ggY2FuIGJlIGVyYXNlZC9wcm9ncmFtbWVkIHByb3Blcmx5LgorCSAqLworCisJLyogRmx1c2ggZC1jYWNoZSBhbmQgaW52YWxpZGF0ZSBpLWNhY2hlIG9mIGFueSBGTEFTSCBkYXRhICovCisJZmx1c2hfZGNhY2hlKCk7CisJaW52YWxpZGF0ZV9pY2FjaGUoKTsKKworCS8qIEludmFsaWRhdGUgZXhpc3RpbmcgVExCIGVudHJ5IGZvciBOT1IgZmxhc2ggKi8KKwlkaXNhYmxlX3RsYigwKTsKKwlzZXRfdGxiKDEsIChDT05GSUdfU1lTX0ZMQVNIX0JBU0UyICYgMHhmMDAwMDAwMCksCisJCShDT05GSUdfU1lTX0ZMQVNIX0JBU0UyICYgMHhmMDAwMDAwMCksCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfMjU2TSwgMSk7CisKKwlmbGFzaF9jc19maXh1cCgpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkKK3ZvaWQgZnRfYm9hcmRfc2V0dXAodm9pZCAqYmxvYiwgYmRfdCAqYmQpCit7CisjaWZkZWYgQ09ORklHX1BDSQorCWZ0X2JvYXJkX3BjaV9zZXR1cChibG9iLCBiZCk7CisjZW5kaWYKKwlmdF9jcHVfc2V0dXAoYmxvYiwgYmQpOworfQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTVAKK2V4dGVybiB2b2lkIGNwdV9tcF9sbWJfcmVzZXJ2ZShzdHJ1Y3QgbG1iICpsbWIpOworCit2b2lkIGJvYXJkX2xtYl9yZXNlcnZlKHN0cnVjdCBsbWIgKmxtYikKK3sKKwljcHVfbXBfbG1iX3Jlc2VydmUobG1iKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQveGlsaW54L21sNDAxL01ha2VmaWxlIGIvYm9hcmQveGlsaW54L21pY3JvYmxhemUtZ2VuZXJpYy9NYWtlZmlsZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYm9hcmQveGlsaW54L21sNDAxL01ha2VmaWxlCnJlbmFtZSB0byBib2FyZC94aWxpbngvbWljcm9ibGF6ZS1nZW5lcmljL01ha2VmaWxlCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngvbWw0MDEvY29uZmlnLm1rIGIvYm9hcmQveGlsaW54L21pY3JvYmxhemUtZ2VuZXJpYy9jb25maWcubWsKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJvYXJkL3hpbGlueC9tbDQwMS9jb25maWcubWsKcmVuYW1lIHRvIGJvYXJkL3hpbGlueC9taWNyb2JsYXplLWdlbmVyaWMvY29uZmlnLm1rCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngvbWw0MDEvbWw0MDEuYyBiL2JvYXJkL3hpbGlueC9taWNyb2JsYXplLWdlbmVyaWMvbWljcm9ibGF6ZS1nZW5lcmljLmMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJvYXJkL3hpbGlueC9tbDQwMS9tbDQwMS5jCnJlbmFtZSB0byBib2FyZC94aWxpbngvbWljcm9ibGF6ZS1nZW5lcmljL21pY3JvYmxhemUtZ2VuZXJpYy5jCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngvbWw0MDEvdS1ib290LmxkcyBiL2JvYXJkL3hpbGlueC9taWNyb2JsYXplLWdlbmVyaWMvdS1ib290LmxkcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYm9hcmQveGlsaW54L21sNDAxL3UtYm9vdC5sZHMKcmVuYW1lIHRvIGJvYXJkL3hpbGlueC9taWNyb2JsYXplLWdlbmVyaWMvdS1ib290LmxkcwpkaWZmIC0tZ2l0IGEvYm9hcmQveGlsaW54L21sNDAxL3hwYXJhbWV0ZXJzLmggYi9ib2FyZC94aWxpbngvbWljcm9ibGF6ZS1nZW5lcmljL3hwYXJhbWV0ZXJzLmgKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gYm9hcmQveGlsaW54L21sNDAxL3hwYXJhbWV0ZXJzLmgKcmVuYW1lIHRvIGJvYXJkL3hpbGlueC9taWNyb2JsYXplLWdlbmVyaWMveHBhcmFtZXRlcnMuaAppbmRleCBkODA1MDYxLi5mYWUwM2JmIDEwMDY0NAotLS0gYS9ib2FyZC94aWxpbngvbWw0MDEveHBhcmFtZXRlcnMuaAorKysgYi9ib2FyZC94aWxpbngvbWljcm9ibGF6ZS1nZW5lcmljL3hwYXJhbWV0ZXJzLmgKQEAgLTI1LDYgKzI1LDggQEAKICAqIFZlcnNpb246IFhpbGlueCBFREsgOC4yLjAyIEVES19JbV9TcDIuNAogICovCiAKKyNkZWZpbmUgWElMSU5YX0JPQVJEX05BTUUJbWljcm9ibGF6ZS1nZW5lcmljCisKIC8qIFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKi8KICNkZWZpbmUgWElMSU5YX0NMT0NLX0ZSRVEJMTAwMDAwMDAwCiAKZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC9wcGM0MDUtZ2VuZXJpYy91LWJvb3QtcmFtLmxkcyBiL2JvYXJkL3hpbGlueC9wcGM0MDUtZ2VuZXJpYy91LWJvb3QtcmFtLmxkcwppbmRleCAwMDA0ZDYxLi42YmJkM2JkIDEwMDY0NAotLS0gYS9ib2FyZC94aWxpbngvcHBjNDA1LWdlbmVyaWMvdS1ib290LXJhbS5sZHMKKysrIGIvYm9hcmQveGlsaW54L3BwYzQwNS1nZW5lcmljL3UtYm9vdC1yYW0ubGRzCkBAIC0xMjcsNyArMTI3LDcgQEAKICAgICooQ09NTU9OKQogICB9CiAKLSAgcHBjZW52X2Fzc2VydCA9IEFTU0VSVCguIDwgMHhGRkZGQjAwMCwgIi5ic3Mgc2VjdGlvbiB0b28gYmlnLCBvdmVybGFwcyAucHBjZW52IHNlY3Rpb24uIFBsZWFzZSB1cGRhdGUgeW91ciBjb25mZ3VyYXRpb246IENGR19NT05JVE9SX0JBU0UsIENGR19NT05JVE9SX0xFTiBhbmQgVEVYVF9CQVNFIG1heSBuZWVkIHRvIGJlIG1vZGlmaWVkLiIpOworICBwcGNlbnZfYXNzZXJ0ID0gQVNTRVJUKC4gPCAweEZGRkZCMDAwLCAiLmJzcyBzZWN0aW9uIHRvbyBiaWcsIG92ZXJsYXBzIC5wcGNlbnYgc2VjdGlvbi4gUGxlYXNlIHVwZGF0ZSB5b3VyIGNvbmZpZ3VyYXRpb246IENPTkZJR19TWVNfTU9OSVRPUl9CQVNFLCBDT05GSUdfU1lTX01PTklUT1JfTEVOIGFuZCBURVhUX0JBU0UgbWF5IG5lZWQgdG8gYmUgbW9kaWZpZWQuIik7CiAKICAgX2VuZCA9IC4gOwogICBQUk9WSURFIChlbmQgPSAuKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC9wcGM0MDUtZ2VuZXJpYy91LWJvb3Qtcm9tLmxkcyBiL2JvYXJkL3hpbGlueC9wcGM0MDUtZ2VuZXJpYy91LWJvb3Qtcm9tLmxkcwppbmRleCBkMmJhYzlmLi5kMDk0MDA2IDEwMDY0NAotLS0gYS9ib2FyZC94aWxpbngvcHBjNDA1LWdlbmVyaWMvdS1ib290LXJvbS5sZHMKKysrIGIvYm9hcmQveGlsaW54L3BwYzQwNS1nZW5lcmljL3UtYm9vdC1yb20ubGRzCkBAIC0xMzcsNyArMTM3LDcgQEAKICAgICooQ09NTU9OKQogICB9CiAKLSAgcHBjZW52X2Fzc2VydCA9IEFTU0VSVCguIDwgMHhGRkZGQjAwMCwgIi5ic3Mgc2VjdGlvbiB0b28gYmlnLCBvdmVybGFwcyAucHBjZW52IHNlY3Rpb24uIFBsZWFzZSB1cGRhdGUgeW91ciBjb25mZ3VyYXRpb246IENGR19NT05JVE9SX0JBU0UsIENGR19NT05JVE9SX0xFTiBhbmQgVEVYVF9CQVNFIG1heSBuZWVkIHRvIGJlIG1vZGlmaWVkLiIpOworICBwcGNlbnZfYXNzZXJ0ID0gQVNTRVJUKC4gPCAweEZGRkZCMDAwLCAiLmJzcyBzZWN0aW9uIHRvbyBiaWcsIG92ZXJsYXBzIC5wcGNlbnYgc2VjdGlvbi4gUGxlYXNlIHVwZGF0ZSB5b3VyIGNvbmZpZ3VyYXRpb246IENPTkZJR19TWVNfTU9OSVRPUl9CQVNFLCBDT05GSUdfU1lTX01PTklUT1JfTEVOIGFuZCBURVhUX0JBU0UgbWF5IG5lZWQgdG8gYmUgbW9kaWZpZWQuIik7CiAKICAgX2VuZCA9IC4gOwogICBQUk9WSURFIChlbmQgPSAuKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC94dXB2MnAvdS1ib290LmxkcyBiL2JvYXJkL3hpbGlueC94dXB2MnAvdS1ib290LmxkcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM4ZjY0OC4uMDAwMDAwMAotLS0gYS9ib2FyZC94aWxpbngveHVwdjJwL3UtYm9vdC5sZHMKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDA0IEF0bWFyayBUZWNobm8sIEluYy4KLSAqCi0gKiBZYXN1c2hpIFNIT0pJIDx5YXNoaUBhdG1hcmstdGVjaG5vLmNvbT4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi1PVVRQVVRfQVJDSChtaWNyb2JsYXplKQotRU5UUlkoX3N0YXJ0KQotCi1TRUNUSU9OUwotewotCS50ZXh0IEFMSUdOKDB4NCk6Ci0JewotCQlfX3RleHRfc3RhcnQgPSAuOwotCQljcHUvbWljcm9ibGF6ZS9zdGFydC5vICgudGV4dCkKLQkJKigudGV4dCkKLQkJX190ZXh0X2VuZCA9IC47Ci0JfQotCi0JLnJvZGF0YSBBTElHTigweDQpOgotCXsKLQkJX19yb2RhdGFfc3RhcnQgPSAuOwotCQkqKC5yb2RhdGEpCi0JCV9fcm9kYXRhX2VuZCA9IC47Ci0JfQotCi0JLmRhdGEgQUxJR04oMHg0KToKLQl7Ci0JCV9fZGF0YV9zdGFydCA9IC47Ci0JCSooLmRhdGEpCi0JCV9fZGF0YV9lbmQgPSAuOwotCX0KLQotCS51X2Jvb3RfY21kIEFMSUdOKDB4NCk6Ci0JewotCQkuID0gLjsKLQkJX191X2Jvb3RfY21kX3N0YXJ0ID0gLjsKLQkJKigudV9ib290X2NtZCkKLQkJX191X2Jvb3RfY21kX2VuZCA9IC47Ci0JfQotCi0JLmJzcyBBTElHTigweDQpOgotCXsKLQkJX19ic3Nfc3RhcnQgPSAuOwotCQkqKC5ic3MpCi0JCS4gPSBBTElHTig0KTsKLQkJX19ic3NfZW5kID0gLjsKLQl9Ci0JX19lbmQgPSAuIDsKLX0KZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC94dXB2MnAveHBhcmFtZXRlcnMuaCBiL2JvYXJkL3hpbGlueC94dXB2MnAveHBhcmFtZXRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU1ZWJkYS4uMDAwMDAwMAotLS0gYS9ib2FyZC94aWxpbngveHVwdjJwL3hwYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDA3IE1pY2hhbCBTaW1lawotICoKLSAqIE1pY2hhbCAgU0lNRUsgPG1vbnN0ckBtb25zdHIuZXU+Ci0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqCi0gKiBDQVVUSU9OOiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgbGliZ2VuLgotICogVmVyc2lvbjogWGlsaW54IEVESyA4LjIuMDIgRURLX0ltX1NwMi40Ci0gKi8KLQotLyogU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAqLwotI2RlZmluZSBYSUxJTlhfQ0xPQ0tfRlJFUQkxMDAwMDAwMDAKLQotLyogSW50ZXJydXB0IGNvbnRyb2xsZXIgaXMgb3BiX2ludGNfMCAqLwotI2RlZmluZSBYSUxJTlhfSU5UQ19CQVNFQUREUgkweDQxMjAwMDAwCi0jZGVmaW5lIFhJTElOWF9JTlRDX05VTV9JTlRSX0lOUFVUUwkxMQotCi0vKiBUaW1lciBwaGVyaXBoZXJ5IGlzIG9wYl90aW1lcl8xICovCi0jZGVmaW5lIFhJTElOWF9USU1FUl9CQVNFQUREUgkweDQxYzAwMDAwCi0jZGVmaW5lIFhJTElOWF9USU1FUl9JUlEJMQotCi0vKiBVYXJ0IHBoZXJpcGhlcnkgaXMgUlMyMzJfVWFydF8xICovCi0jZGVmaW5lIFhJTElOWF9VQVJUTElURV9CQVNFQUREUgkweDQwNjAwMDAwCi0jZGVmaW5lIFhJTElOWF9VQVJUTElURV9CQVVEUkFURQkxMTUyMDAKLQotLyogR1BJTyBpcyBMRURzXzRCaXQqLwotI2RlZmluZSBYSUxJTlhfR1BJT19CQVNFQUREUgkweDQwMDAwMDAwCi0KLS8qIEZMQVNIIGRvZXNuJ3QgZXhpc3Qgbm9uZSAqLwotCi0vKiBNYWluIE1lbW9yeSBpcyBERFJfMjU2TUJfMzJNWDY0X3JhbmsxX3JvdzEzX2NvbDEwX2NsMl81ICovCi0jZGVmaW5lIFhJTElOWF9SQU1fU1RBUlQJMHgzMDAwMDAwMAotI2RlZmluZSBYSUxJTlhfUkFNX1NJWkUJMHgxMDAwMDAwMAotCi0vKiBTeXNhY2UgQ29udHJvbGxlciBpcyBTeXNBQ0VfQ29tcGFjdEZsYXNoICovCi0jZGVmaW5lIFhJTElOWF9TWVNBQ0VfQkFTRUFERFIJMHg0MTgwMDAwMAotI2RlZmluZSBYSUxJTlhfU1lTQUNFX0hJR0hBRERSCTB4NDE4MGZmZmYKLSNkZWZpbmUgWElMSU5YX1NZU0FDRV9NRU1fV0lEVEgJMTYKLQotLyogRXRoZXJuZXQgY29udHJvbGxlciBpcyBFdGhlcm5ldF9NQUMgKi8KLSNkZWZpbmUgWElMSU5YX0VNQUNMSVRFX0JBU0VBRERSICAgICAgIDB4NDBDMDAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC94dXB2MnAveHVwdjJwLmMgYi9ib2FyZC94aWxpbngveHVwdjJwL3h1cHYycC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWE3NmMwLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3hpbGlueC94dXB2MnAveHVwdjJwLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDA3IE1pY2hhbCBTaW1lawotICoKLSAqIE1pY2hhbCAgU0lNRUsgPG1vbnN0ckBtb25zdHIuZXU+Ci0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotLyogVGhpcyBpcyBhIGJvYXJkIHNwZWNpZmljIGZpbGUuICBJdCdzIE9LIHRvIGluY2x1ZGUgYm9hcmQgc3BlY2lmaWMKLSAqIGhlYWRlciBmaWxlcyAqLwotCi0jaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0KLXZvaWQgZG9fcmVzZXQgKHZvaWQpCi17Ci0jaWZkZWYgQ09ORklHX1NZU19HUElPXzAKLQkqKCh1bnNpZ25lZCBsb25nICopKENPTkZJR19TWVNfR1BJT18wX0FERFIpKSA9Ci0JICAgICsrKCooKHVuc2lnbmVkIGxvbmcgKikoQ09ORklHX1NZU19HUElPXzBfQUREUikpKTsKLSNlbmRpZgotI2lmZGVmIENPTkZJR19TWVNfUkVTRVRfQUREUkVTUwotCXB1dHMgKCJSZXNldGluZyBib2FyZFxuIik7Ci0JYXNtICgiYnJhIHIwIik7Ci0jZW5kaWYKLX0KLQotaW50IGdwaW9faW5pdCAodm9pZCkKLXsKLSNpZmRlZiBDT05GSUdfU1lTX0dQSU9fMAotCSooKHVuc2lnbmVkIGxvbmcgKikoQ09ORklHX1NZU19HUElPXzBfQUREUikpID0gMHgwOwotI2VuZGlmCi0JcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9jb21tb24vY21kX2JkaW5mby5jIGIvY29tbW9uL2NtZF9iZGluZm8uYwppbmRleCA2Njc1MjQxLi5iNjYwZDJhIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2JkaW5mby5jCisrKyBiL2NvbW1vbi9jbWRfYmRpbmZvLmMKQEAgLTMyOCwxOCArMzI4LDIwIEBACiB9CiAKICNlbGlmIGRlZmluZWQoQ09ORklHX0JMQUNLRklOKQorc3RhdGljIHZvaWQgcHJpbnRfc3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIAogaW50IGRvX2JkaW5mbyhjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlpbnQgaTsKIAliZF90ICpiZCA9IGdkLT5iZDsKKwljaGFyIGJ1ZlszMl07CiAKIAlwcmludGYoIlUtQm9vdCAgICAgID0gJXNcbiIsIGJkLT5iaV9yX3ZlcnNpb24pOwogCXByaW50ZigiQ1BVICAgICAgICAgPSAlc1xuIiwgYmQtPmJpX2NwdSk7CiAJcHJpbnRmKCJCb2FyZCAgICAgICA9ICVzXG4iLCBiZC0+YmlfYm9hcmRfbmFtZSk7Ci0JcHJpbnRmKCJWQ08gICAgICAgICA9ICVsdSBNSHpcbiIsIGJkLT5iaV92Y28gLyAxMDAwMDAwKTsKLQlwcmludGYoIkNDTEsgICAgICAgID0gJWx1IE1IelxuIiwgYmQtPmJpX2NjbGsgLyAxMDAwMDAwKTsKLQlwcmludGYoIlNDTEsgICAgICAgID0gJWx1IE1IelxuIiwgYmQtPmJpX3NjbGsgLyAxMDAwMDAwKTsKKwlwcmludF9zdHIoIlZDTyIsICAgICAgICAgc3RybWh6KGJ1ZiwgYmQtPmJpX3ZjbykpOworCXByaW50X3N0cigiQ0NMSyIsICAgICAgICBzdHJtaHooYnVmLCBiZC0+YmlfY2NsaykpOworCXByaW50X3N0cigiU0NMSyIsICAgICAgICBzdHJtaHooYnVmLCBiZC0+Ymlfc2NsaykpOwogCiAJcHJpbnRfbnVtKCJib290X3BhcmFtcyIsICh1bG9uZyliZC0+YmlfYm9vdF9wYXJhbXMpOwogCXByaW50X251bSgibWVtc3RhcnQiLCAgICAodWxvbmcpYmQtPmJpX21lbXN0YXJ0KTsKQEAgLTQzMCw3ICs0MzIsNyBAQAogfQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKENPTkZJR19QUEMpIHx8IGRlZmluZWQoQ09ORklHX002OEspCisjaWYgZGVmaW5lZChDT05GSUdfUFBDKSB8fCBkZWZpbmVkKENPTkZJR19NNjhLKSB8fCBkZWZpbmVkKENPTkZJR19CTEFDS0ZJTikKIHN0YXRpYyB2b2lkIHByaW50X3N0cihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdHIpCiB7CiAJcHJpbnRmICgiJS0xMnM9ICU2cyBNSHpcbiIsIG5hbWUsIHN0cik7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX21lbS5jIGIvY29tbW9uL2NtZF9tZW0uYwppbmRleCBkNzY2NmMyLi5jMjA5ZDYyIDEwMDY0NAotLS0gYS9jb21tb24vY21kX21lbS5jCisrKyBiL2NvbW1vbi9jbWRfbWVtLmMKQEAgLTY3Miw2ICs2NzIsOCBAQAogCXVsb25nCXZhbDsKIAl1bG9uZwlyZWFkYmFjazsKIAlpbnQgICAgIHJjb2RlID0gMDsKKwlpbnQgaXRlcmF0aW9ucyA9IDE7CisJaW50IGl0ZXJhdGlvbl9saW1pdDsKIAogI2lmIGRlZmluZWQoQ09ORklHX1NZU19BTFRfTUVNVEVTVCkKIAl2dV9sb25nCWxlbjsKQEAgLTY4Nyw3ICs2ODksNiBAQAogCXZ1X2xvbmcgKmR1bW15ID0gMDsJLyogeWVzLCB0aGlzIGlzIGFkZHJlc3MgMHgwLCBub3QgTlVMTCAqLwogI2VuZGlmCiAJaW50CWo7Ci0JaW50IGl0ZXJhdGlvbnMgPSAxOwogCiAJc3RhdGljIGNvbnN0IHVsb25nIGJpdHBhdHRlcm5bXSA9IHsKIAkJMHgwMDAwMDAwMSwJLyogc2luZ2xlIGJpdCAqLwpAQCAtNzA0LDIzICs3MDUsMjUgQEAKIAl1bG9uZwlwYXR0ZXJuOwogI2VuZGlmCiAKLQlpZiAoYXJnYyA+IDEpIHsKKwlpZiAoYXJnYyA+IDEpCiAJCXN0YXJ0ID0gKHVsb25nICopc2ltcGxlX3N0cnRvdWwoYXJndlsxXSwgTlVMTCwgMTYpOwotCX0gZWxzZSB7CisJZWxzZQogCQlzdGFydCA9ICh1bG9uZyAqKUNPTkZJR19TWVNfTUVNVEVTVF9TVEFSVDsKLQl9CiAKLQlpZiAoYXJnYyA+IDIpIHsKKwlpZiAoYXJnYyA+IDIpCiAJCWVuZCA9ICh1bG9uZyAqKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDE2KTsKLQl9IGVsc2UgeworCWVsc2UKIAkJZW5kID0gKHVsb25nICopKENPTkZJR19TWVNfTUVNVEVTVF9FTkQpOwotCX0KIAotCWlmIChhcmdjID4gMykgeworCWlmIChhcmdjID4gMykKIAkJcGF0dGVybiA9ICh1bG9uZylzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7Ci0JfSBlbHNlIHsKKwllbHNlCiAJCXBhdHRlcm4gPSAwOwotCX0KKworCWlmIChhcmdjID4gNCkKKwkJaXRlcmF0aW9uX2xpbWl0ID0gKHVsb25nKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbNF0sIE5VTEwsIDE2KTsKKwllbHNlCisJCWl0ZXJhdGlvbl9saW1pdCA9IDA7CiAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQUxUX01FTVRFU1QpCiAJcHJpbnRmICgiVGVzdGluZyAlMDh4IC4uLiAlMDh4OlxuIiwgKHVpbnQpc3RhcnQsICh1aW50KWVuZCk7CkBAIC03MzMsOCArNzM2LDE1IEBACiAJCQlyZXR1cm4gMTsKIAkJfQogCisKKwkJaWYgKGl0ZXJhdGlvbl9saW1pdCAmJiBpdGVyYXRpb25zID4gaXRlcmF0aW9uX2xpbWl0KSB7CisJCQlwcmludGYoIlRlc3RlZCAlZCBpdGVyYXRpb24ocykgd2l0aG91dCBlcnJvcnMuXG4iLAorCQkJCWl0ZXJhdGlvbnMtMSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCiAJCXByaW50ZigiSXRlcmF0aW9uOiAlNmRcciIsIGl0ZXJhdGlvbnMpOwotCQlQUklOVEYoIkl0ZXJhdGlvbjogJTZkXG4iLCBpdGVyYXRpb25zKTsKKwkJUFJJTlRGKCJcbiIpOwogCQlpdGVyYXRpb25zKys7CiAKIAkJLyoKQEAgLTkyNiw2ICs5MzYsMTMgQEAKIAkJCXJldHVybiAxOwogCQl9CiAKKwkJaWYgKGl0ZXJhdGlvbl9saW1pdCAmJiBpdGVyYXRpb25zID4gaXRlcmF0aW9uX2xpbWl0KSB7CisJCQlwcmludGYoIlRlc3RlZCAlZCBpdGVyYXRpb24ocykgd2l0aG91dCBlcnJvcnMuXG4iLAorCQkJCWl0ZXJhdGlvbnMtMSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQkrK2l0ZXJhdGlvbnM7CisKIAkJcHJpbnRmICgiXHJQYXR0ZXJuICUwOGxYICBXcml0aW5nLi4uIgogCQkJIiUxMnMiCiAJCQkiXGJcYlxiXGJcYlxiXGJcYlxiXGIiLApAQCAtMTE3NSw3ICsxMTkyLDYgQEAKIHsKIAl1bnNpZ25lZCBsb25nIHNyYywgZHN0OwogCXVuc2lnbmVkIGxvbmcgc3JjX2xlbiA9IH4wVUwsIGRzdF9sZW4gPSB+MFVMOwotCWludCBlcnI7CiAKIAlzd2l0Y2ggKGFyZ2MpIHsKIAkJY2FzZSA0OgpAQCAtMTI3Nyw5ICsxMjkzLDkgQEAKICNlbmRpZiAvKiBDT05GSUdfTE9PUFcgKi8KIAogVV9CT09UX0NNRCgKLQltdGVzdCwJNCwJMSwJZG9fbWVtX210ZXN0LAotCSJtdGVzdAktIHNpbXBsZSBSQU0gdGVzdFxuIiwKLQkiW3N0YXJ0IFtlbmQgW3BhdHRlcm5dXV1cbiIKKwltdGVzdCwJNSwJMSwJZG9fbWVtX210ZXN0LAorCSJtdGVzdCAgIC0gc2ltcGxlIFJBTSB0ZXN0XG4iLAorCSJbc3RhcnQgW2VuZCBbcGF0dGVybiBbaXRlcmF0aW9uc11dXV1cbiIKIAkiICAgIC0gc2ltcGxlIFJBTSByZWFkL3dyaXRlIHRlc3RcbiIKICk7CiAKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfbmFuZC5jIGIvY29tbW9uL2NtZF9uYW5kLmMKaW5kZXggMGEzNjZkMy4uYWVkZjhhNiAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9uYW5kLmMKKysrIGIvY29tbW9uL2NtZF9uYW5kLmMKQEAgLTE2MCwxMCArMTYwLDUxIEBACiAJaWYgKCpzaXplID09IG5hbmQtPnNpemUpCiAJCXB1dHMoIndob2xlIGNoaXBcbiIpOwogCWVsc2UKLQkJcHJpbnRmKCJvZmZzZXQgMHglbHgsIHNpemUgMHgleFxuIiwgKm9mZiwgKnNpemUpOworCQlwcmludGYoIm9mZnNldCAweCVseCwgc2l6ZSAweCV6eFxuIiwgKm9mZiwgKnNpemUpOwogCXJldHVybiAwOwogfQogCisjaWZkZWYgQ09ORklHX0NNRF9OQU5EX0xPQ0tfVU5MT0NLCitzdGF0aWMgdm9pZCBwcmludF9zdGF0dXModWxvbmcgc3RhcnQsIHVsb25nIGVuZCwgdWxvbmcgZXJhc2VzaXplLCBpbnQgc3RhdHVzKQoreworCXByaW50ZigiJTA4bHggLSAlMDhseDogJTA4bHggYmxvY2tzICVzJXMlc1xuIiwKKwkJc3RhcnQsCisJCWVuZCAtIDEsCisJCShlbmQgLSBzdGFydCkgLyBlcmFzZXNpemUsCisJCSgoc3RhdHVzICYgTkFORF9MT0NLX1NUQVRVU19USUdIVCkgPyAgIlRJR0hUICIgOiAiIiksCisJCSgoc3RhdHVzICYgTkFORF9MT0NLX1NUQVRVU19MT0NLKSA/ICAiTE9DSyAiIDogIiIpLAorCQkoKHN0YXR1cyAmIE5BTkRfTE9DS19TVEFUVVNfVU5MT0NLKSA/ICAiVU5MT0NLICIgOiAiIikpOworfQorCitzdGF0aWMgdm9pZCBkb19uYW5kX3N0YXR1cyhuYW5kX2luZm9fdCAqbmFuZCkKK3sKKwl1bG9uZyBibG9ja19zdGFydCA9IDA7CisJdWxvbmcgb2ZmOworCWludCBsYXN0X3N0YXR1cyA9IC0xOworCisJc3RydWN0IG5hbmRfY2hpcCAqbmFuZF9jaGlwID0gbmFuZC0+cHJpdjsKKwkvKiBjaGVjayB0aGUgV1AgYml0ICovCisJbmFuZF9jaGlwLT5jbWRmdW5jKG5hbmQsIE5BTkRfQ01EX1NUQVRVUywgLTEsIC0xKTsKKwlwcmludGYoImRldmljZSBpcyAlc3dyaXRlIHByb3RlY3RlZFxuIiwKKwkJKG5hbmRfY2hpcC0+cmVhZF9ieXRlKG5hbmQpICYgMHg4MCA/CisJCSJOT1QgIiA6ICIiKSk7CisKKwlmb3IgKG9mZiA9IDA7IG9mZiA8IG5hbmQtPnNpemU7IG9mZiArPSBuYW5kLT5lcmFzZXNpemUpIHsKKwkJaW50IHMgPSBuYW5kX2dldF9sb2NrX3N0YXR1cyhuYW5kLCBvZmYpOworCisJCS8qIHByaW50IG1lc3NhZ2Ugb25seSBpZiBzdGF0dXMgaGFzIGNoYW5nZWQgKi8KKwkJaWYgKHMgIT0gbGFzdF9zdGF0dXMgJiYgb2ZmICE9IDApIHsKKwkJCXByaW50X3N0YXR1cyhibG9ja19zdGFydCwgb2ZmLCBuYW5kLT5lcmFzZXNpemUsCisJCQkJCWxhc3Rfc3RhdHVzKTsKKwkJCWJsb2NrX3N0YXJ0ID0gb2ZmOworCQl9CisJCWxhc3Rfc3RhdHVzID0gczsKKwl9CisJLyogUHJpbnQgdGhlIGxhc3QgYmxvY2sgaW5mbyAqLworCXByaW50X3N0YXR1cyhibG9ja19zdGFydCwgb2ZmLCBuYW5kLT5lcmFzZXNpemUsIGxhc3Rfc3RhdHVzKTsKK30KKyNlbmRpZgorCiBpbnQgZG9fbmFuZChjbWRfdGJsX3QgKiBjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJaW50IGksIGRldiwgcmV0ID0gMDsKQEAgLTM1Nyw3ICszOTgsNyBAQAogCQkJcmV0dXJuIDE7CiAJCX0KIAotCQlwcmludGYoIiAlZCBieXRlcyAlczogJXNcbiIsIHNpemUsCisJCXByaW50ZigiICV6dSBieXRlcyAlczogJXNcbiIsIHNpemUsCiAJCSAgICAgICByZWFkID8gInJlYWQiIDogIndyaXR0ZW4iLCByZXQgPyAiRVJST1IiIDogIk9LIik7CiAKIAkJcmV0dXJuIHJldCA9PSAwID8gMCA6IDE7CkBAIC0zODMsOCArNDI0LDkgQEAKIAkJcmV0dXJuIDE7CiAJfQogCisjaWZkZWYgQ09ORklHX0NNRF9OQU5EX0xPQ0tfVU5MT0NLCiAJaWYgKHN0cmNtcChjbWQsICJsb2NrIikgPT0gMCkgewotCQlpbnQgdGlnaHQgID0gMDsKKwkJaW50IHRpZ2h0ID0gMDsKIAkJaW50IHN0YXR1cyA9IDA7CiAJCWlmIChhcmdjID09IDMpIHsKIAkJCWlmICghc3RyY21wKCJ0aWdodCIsIGFyZ3ZbMl0pKQpAQCAtMzkyLDQ0ICs0MzQsOCBAQAogCQkJaWYgKCFzdHJjbXAoInN0YXR1cyIsIGFyZ3ZbMl0pKQogCQkJCXN0YXR1cyA9IDE7CiAJCX0KLS8qCi0gKiAhIEJST0tFTiAhCi0gKgotICogVE9ETzogbXVzdCBiZSBpbXBsZW1lbnRlZCBhbmQgdGVzdGVkIGJ5IHNvbWVvbmUgd2l0aCBIVwotICovCi0jaWYgMAogCQlpZiAoc3RhdHVzKSB7Ci0JCQl1bG9uZyBibG9ja19zdGFydCA9IDA7Ci0JCQl1bG9uZyBvZmY7Ci0JCQlpbnQgbGFzdF9zdGF0dXMgPSAtMTsKLQotCQkJc3RydWN0IG5hbmRfY2hpcCAqbmFuZF9jaGlwID0gbmFuZC0+cHJpdjsKLQkJCS8qIGNoZWNrIHRoZSBXUCBiaXQgKi8KLQkJCW5hbmRfY2hpcC0+Y21kZnVuYyAobmFuZCwgTkFORF9DTURfU1RBVFVTLCAtMSwgLTEpOwotCQkJcHJpbnRmKCJkZXZpY2UgaXMgJXN3cml0ZSBwcm90ZWN0ZWRcbiIsCi0JCQkgICAgICAgKG5hbmRfY2hpcC0+cmVhZF9ieXRlKG5hbmQpICYgMHg4MCA/Ci0JCQkgICAgICAgIk5PVCAiIDogIiIpKTsKLQotCQkJZm9yIChvZmYgPSAwOyBvZmYgPCBuYW5kLT5zaXplOyBvZmYgKz0gbmFuZC0+d3JpdGVzaXplKSB7Ci0JCQkJaW50IHMgPSBuYW5kX2dldF9sb2NrX3N0YXR1cyhuYW5kLCBvZmYpOwotCi0JCQkJLyogcHJpbnQgbWVzc2FnZSBvbmx5IGlmIHN0YXR1cyBoYXMgY2hhbmdlZAotCQkJCSAqIG9yIGF0IGVuZCBvZiBjaGlwCi0JCQkJICovCi0JCQkJaWYgKG9mZiA9PSBuYW5kLT5zaXplIC0gbmFuZC0+d3JpdGVzaXplCi0JCQkJICAgIHx8IChzICE9IGxhc3Rfc3RhdHVzICYmIG9mZiAhPSAwKSkJewotCi0JCQkJCXByaW50ZigiJTA4bHggLSAlMDhseDogJThkIHBhZ2VzICVzJXMlc1xuIiwKLQkJCQkJICAgICAgIGJsb2NrX3N0YXJ0LAotCQkJCQkgICAgICAgb2ZmLTEsCi0JCQkJCSAgICAgICAob2ZmLWJsb2NrX3N0YXJ0KS9uYW5kLT53cml0ZXNpemUsCi0JCQkJCSAgICAgICAoKGxhc3Rfc3RhdHVzICYgTkFORF9MT0NLX1NUQVRVU19USUdIVCkgPyAiVElHSFQgIiA6ICIiKSwKLQkJCQkJICAgICAgICgobGFzdF9zdGF0dXMgJiBOQU5EX0xPQ0tfU1RBVFVTX0xPQ0spID8gIkxPQ0sgIiA6ICIiKSwKLQkJCQkJICAgICAgICgobGFzdF9zdGF0dXMgJiBOQU5EX0xPQ0tfU1RBVFVTX1VOTE9DSykgPyAiVU5MT0NLICIgOiAiIikpOwotCQkJCX0KLQotCQkJCWxhc3Rfc3RhdHVzID0gczsKLQkJCX0KKwkJCWRvX25hbmRfc3RhdHVzKG5hbmQpOwogCQl9IGVsc2UgewogCQkJaWYgKCFuYW5kX2xvY2sobmFuZCwgdGlnaHQpKSB7CiAJCQkJcHV0cygiTkFORCBmbGFzaCBzdWNjZXNzZnVsbHkgbG9ja2VkXG4iKTsKQEAgLTQzOCw3ICs0NDQsNiBAQAogCQkJCXJldHVybiAxOwogCQkJfQogCQl9Ci0jZW5kaWYKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC00NDYsMTIgKzQ1MSw2IEBACiAJCWlmIChhcmdfb2ZmX3NpemUoYXJnYyAtIDIsIGFyZ3YgKyAyLCBuYW5kLCAmb2ZmLCAmc2l6ZSkgPCAwKQogCQkJcmV0dXJuIDE7CiAKLS8qCi0gKiAhIEJST0tFTiAhCi0gKgotICogVE9ETzogbXVzdCBiZSBpbXBsZW1lbnRlZCBhbmQgdGVzdGVkIGJ5IHNvbWVvbmUgd2l0aCBIVwotICovCi0jaWYgMAogCQlpZiAoIW5hbmRfdW5sb2NrKG5hbmQsIG9mZiwgc2l6ZSkpIHsKIAkJCXB1dHMoIk5BTkQgZmxhc2ggc3VjY2Vzc2Z1bGx5IHVubG9ja2VkXG4iKTsKIAkJfSBlbHNlIHsKQEAgLTQ1OSw5ICs0NTgsOSBAQAogCQkJICAgICAid3JpdGUgYW5kIGVyYXNlIHdpbGwgcHJvYmFibHkgZmFpbFxuIik7CiAJCQlyZXR1cm4gMTsKIAkJfQotI2VuZGlmCiAJCXJldHVybiAwOwogCX0KKyNlbmRpZgogCiB1c2FnZToKIAlwcmludGYoIlVzYWdlOlxuJXNcbiIsIGNtZHRwLT51c2FnZSk7CkBAIC00ODMsOSArNDgyLDEyIEBACiAJICAgIm5hbmQgc2NydWIgLSByZWFsbHkgY2xlYW4gTkFORCBlcmFzaW5nIGJhZCBibG9ja3MgKFVOU0FGRSlcbiIKIAkgICAibmFuZCBtYXJrYmFkIG9mZiAtIG1hcmsgYmFkIGJsb2NrIGF0IG9mZnNldCAoVU5TQUZFKVxuIgogCSAgICJuYW5kIGJpdGVyciBvZmYgLSBtYWtlIGEgYml0IGVycm9yIGF0IG9mZnNldCAoVU5TQUZFKVxuIgorI2lmZGVmIENPTkZJR19DTURfTkFORF9MT0NLX1VOTE9DSwogCSAgICJuYW5kIGxvY2sgW3RpZ2h0XSBbc3RhdHVzXVxuIgogCSAgICIgICAgYnJpbmcgbmFuZCB0byBsb2NrIHN0YXRlIG9yIGRpc3BsYXkgbG9ja2VkIHBhZ2VzXG4iCi0JICAgIm5hbmQgdW5sb2NrIFtvZmZzZXRdIFtzaXplXSAtIHVubG9jayBzZWN0aW9uXG4iKTsKKwkgICAibmFuZCB1bmxvY2sgW29mZnNldF0gW3NpemVdIC0gdW5sb2NrIHNlY3Rpb25cbiIKKyNlbmRpZgorKTsKIAogc3RhdGljIGludCBuYW5kX2xvYWRfaW1hZ2UoY21kX3RibF90ICpjbWR0cCwgbmFuZF9pbmZvX3QgKm5hbmQsCiAJCQkgICB1bG9uZyBvZmZzZXQsIHVsb25nIGFkZHIsIGNoYXIgKmNtZCkKQEAgLTg1NCwxMyArODU2LDEyIEBACiAJCQkJCQkJICAgICAgKHVfY2hhciAqKSBhZGRyKTsKIAkJCQl9CiAJCQkJcmV0dXJuIHJldDsKLQkJCX0gZWxzZSBpZiAoY21kdGFpbCAmJiAhc3RybmNtcCAoY21kdGFpbCwgIi5qZmZzMiIsIDIpKQotCQkJCWNtZCB8PSBOQU5EUldfSkZGUzI7CS8qIHNraXAgYmFkIGJsb2NrcyAqLwotCQkJZWxzZSBpZiAoY21kdGFpbCAmJiAhc3RybmNtcCAoY21kdGFpbCwgIi5qZmZzMnMiLCAyKSkgeworCQkJfSBlbHNlIGlmIChjbWR0YWlsICYmICFzdHJuY21wIChjbWR0YWlsLCAiLmpmZnMycyIsIDcpKSB7CiAJCQkJY21kIHw9IE5BTkRSV19KRkZTMjsJLyogc2tpcCBiYWQgYmxvY2tzIChvbiByZWFkIHRvbykgKi8KIAkJCQlpZiAoY21kICYgTkFORFJXX1JFQUQpCiAJCQkJCWNtZCB8PSBOQU5EUldfSkZGUzJfU0tJUDsJLyogc2tpcCBiYWQgYmxvY2tzIChvbiByZWFkIHRvbykgKi8KLQkJCX0KKwkJCX0gZWxzZSBpZiAoY21kdGFpbCAmJiAhc3RybmNtcCAoY21kdGFpbCwgIi5qZmZzMiIsIDIpKQorCQkJCWNtZCB8PSBOQU5EUldfSkZGUzI7CS8qIHNraXAgYmFkIGJsb2NrcyAqLwogI2lmZGVmIFNYTkk4NTVUCiAJCQkvKiBuZWVkICIuZSIgc2FtZSBhcyAiLmoiIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdW5pdHMgKi8KIAkJCWVsc2UgaWYgKGNtZHRhaWwgJiYgIXN0cmNtcCAoY21kdGFpbCwgIi5lIikpCmRpZmYgLS1naXQgYS9jb21tb24vY21kX29uZW5hbmQuYyBiL2NvbW1vbi9jbWRfb25lbmFuZC5jCmluZGV4IDhkODdiNzguLjZhMmM5MjQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfb25lbmFuZC5jCisrKyBiL2NvbW1vbi9jbWRfb25lbmFuZC5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBVLUJvb3QgY29tbWFuZCBmb3IgT25lTkFORCBzdXBwb3J0CiAgKgotICogIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwOCBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgKiAgS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgogCiAjaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPgogI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KQEAgLTE4LDE1OSArMTksNDY4IEBACiAKICNpbmNsdWRlIDxhc20vaW8uaD4KIAotZXh0ZXJuIHN0cnVjdCBtdGRfaW5mbyBvbmVuYW5kX210ZDsKLWV4dGVybiBzdHJ1Y3Qgb25lbmFuZF9jaGlwIG9uZW5hbmRfY2hpcDsKK3N0YXRpYyBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKKworc3RhdGljIGxvZmZfdCBuZXh0X29mczsKK3N0YXRpYyBsb2ZmX3Qgc2tpcF9vZnM7CisKK3N0YXRpYyBpbmxpbmUgaW50IHN0cjJsb25nKGNoYXIgKnAsIHVsb25nICpudW0pCit7CisJY2hhciAqZW5kcHRyOworCisJKm51bSA9IHNpbXBsZV9zdHJ0b3VsKHAsICZlbmRwdHIsIDE2KTsKKwlyZXR1cm4gKCpwICE9ICdcMCcgJiYgKmVuZHB0ciA9PSAnXDAnKSA/IDEgOiAwOworfQorCitzdGF0aWMgaW50IGFyZ19vZmZfc2l6ZShpbnQgYXJnYywgY2hhciAqYXJndltdLCB1bG9uZyAqb2ZmLCBzaXplX3QgKnNpemUpCit7CisJaWYgKGFyZ2MgPj0gMSkgeworCQlpZiAoIShzdHIybG9uZyhhcmd2WzBdLCBvZmYpKSkgeworCQkJcHJpbnRmKCInJXMnIGlzIG5vdCBhIG51bWJlclxuIiwgYXJndlswXSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9IGVsc2UgeworCQkqb2ZmID0gMDsKKwl9CisKKwlpZiAoYXJnYyA+PSAyKSB7CisJCWlmICghKHN0cjJsb25nKGFyZ3ZbMV0sICh1bG9uZyAqKXNpemUpKSkgeworCQkJcHJpbnRmKCInJXMnIGlzIG5vdCBhIG51bWJlclxuIiwgYXJndlsxXSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9IGVsc2UgeworCQkqc2l6ZSA9IG10ZC0+c2l6ZSAtICpvZmY7CisJfQorCisJaWYgKCgqb2ZmICsgKnNpemUpID4gbXRkLT5zaXplKSB7CisJCXByaW50ZigidG90YWwgY2hpcCBzaXplICgweCV4KSBleGNlZWRlZCFcbiIsIG10ZC0+c2l6ZSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAoKnNpemUgPT0gbXRkLT5zaXplKQorCQlwdXRzKCJ3aG9sZSBjaGlwXG4iKTsKKwllbHNlCisJCXByaW50Zigib2Zmc2V0IDB4JWx4LCBzaXplIDB4JXhcbiIsICpvZmYsICpzaXplKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9uZW5hbmRfYmxvY2tfcmVhZChsb2ZmX3QgZnJvbSwgc2l6ZV90IGxlbiwKKwkJCSAgICAgIHNpemVfdCAqcmV0bGVuLCB1X2NoYXIgKmJ1ZiwgaW50IG9vYikKK3sKKwlzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludCBibG9ja3MgPSAoaW50KSBsZW4gPj4gdGhpcy0+ZXJhc2Vfc2hpZnQ7CisJaW50IGJsb2Nrc2l6ZSA9ICgxIDw8IHRoaXMtPmVyYXNlX3NoaWZ0KTsKKwlsb2ZmX3Qgb2ZzID0gZnJvbTsKKwlzdHJ1Y3QgbXRkX29vYl9vcHMgb3BzID0geworCQkucmV0bGVuCQk9IDAsCisJfTsKKwlpbnQgcmV0OworCisJaWYgKG9vYikKKwkJb3BzLm9vYmxlbiA9IGJsb2Nrc2l6ZTsKKwllbHNlCisJCW9wcy5sZW4gPSBibG9ja3NpemU7CisKKwl3aGlsZSAoYmxvY2tzKSB7CisJCXJldCA9IG10ZC0+YmxvY2tfaXNiYWQobXRkLCBvZnMpOworCQlpZiAocmV0KSB7CisJCQlwcmludGsoIkJhZCBibG9ja3MgJWQgYXQgMHgleFxuIiwKKwkJCSAgICAgICAodTMyKShvZnMgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQpLCAodTMyKW9mcyk7CisJCQlvZnMgKz0gYmxvY2tzaXplOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAob29iKQorCQkJb3BzLm9vYmJ1ZiA9IGJ1ZjsKKwkJZWxzZQorCQkJb3BzLmRhdGJ1ZiA9IGJ1ZjsKKworCQlvcHMucmV0bGVuID0gMDsKKwkJcmV0ID0gbXRkLT5yZWFkX29vYihtdGQsIG9mcywgJm9wcyk7CisJCWlmIChyZXQpIHsKKwkJCXByaW50aygiUmVhZCBmYWlsZWQgMHgleCwgJWRcbiIsICh1MzIpb2ZzLCByZXQpOworCQkJb2ZzICs9IGJsb2Nrc2l6ZTsKKwkJCWNvbnRpbnVlOworCQl9CisJCW9mcyArPSBibG9ja3NpemU7CisJCWJ1ZiArPSBibG9ja3NpemU7CisJCWJsb2Nrcy0tOworCQkqcmV0bGVuICs9IG9wcy5yZXRsZW47CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb25lbmFuZF9ibG9ja193cml0ZShsb2ZmX3QgdG8sIHNpemVfdCBsZW4sCisJCQkgICAgICAgc2l6ZV90ICpyZXRsZW4sIGNvbnN0IHVfY2hhciAqIGJ1ZikKK3sKKwlzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludCBibG9ja3MgPSBsZW4gPj4gdGhpcy0+ZXJhc2Vfc2hpZnQ7CisJaW50IGJsb2Nrc2l6ZSA9ICgxIDw8IHRoaXMtPmVyYXNlX3NoaWZ0KTsKKwlsb2ZmX3Qgb2ZzOworCXNpemVfdCBfcmV0bGVuID0gMDsKKwlpbnQgcmV0OworCisJaWYgKHRvID09IG5leHRfb2ZzKSB7CisJCW5leHRfb2ZzID0gdG8gKyBsZW47CisJCXRvICs9IHNraXBfb2ZzOworCX0gZWxzZSB7CisJCW5leHRfb2ZzID0gdG8gKyBsZW47CisJCXNraXBfb2ZzID0gMDsKKwl9CisJb2ZzID0gdG87CisKKwl3aGlsZSAoYmxvY2tzKSB7CisJCXJldCA9IG10ZC0+YmxvY2tfaXNiYWQobXRkLCBvZnMpOworCQlpZiAocmV0KSB7CisJCQlwcmludGsoIkJhZCBibG9ja3MgJWQgYXQgMHgleFxuIiwKKwkJCSAgICAgICAodTMyKShvZnMgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQpLCAodTMyKW9mcyk7CisJCQlza2lwX29mcyArPSBibG9ja3NpemU7CisJCQlnb3RvIG5leHQ7CisJCX0KKworCQlyZXQgPSBtdGQtPndyaXRlKG10ZCwgb2ZzLCBibG9ja3NpemUsICZfcmV0bGVuLCBidWYpOworCQlpZiAocmV0KSB7CisJCQlwcmludGsoIldyaXRlIGZhaWxlZCAweCV4LCAlZCIsICh1MzIpb2ZzLCByZXQpOworCQkJc2tpcF9vZnMgKz0gYmxvY2tzaXplOworCQkJZ290byBuZXh0OworCQl9CisKKwkJYnVmICs9IGJsb2Nrc2l6ZTsKKwkJYmxvY2tzLS07CisJCSpyZXRsZW4gKz0gX3JldGxlbjsKK25leHQ6CisJCW9mcyArPSBibG9ja3NpemU7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb25lbmFuZF9ibG9ja19lcmFzZSh1MzIgc3RhcnQsIHUzMiBzaXplLCBpbnQgZm9yY2UpCit7CisJc3RydWN0IG9uZW5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZXJhc2VfaW5mbyBpbnN0ciA9IHsKKwkJLmNhbGxiYWNrCT0gTlVMTCwKKwl9OworCWxvZmZfdCBvZnM7CisJaW50IHJldDsKKwlpbnQgYmxvY2tzaXplID0gMSA8PCB0aGlzLT5lcmFzZV9zaGlmdDsKKworCWZvciAob2ZzID0gc3RhcnQ7IG9mcyA8IChzdGFydCArIHNpemUpOyBvZnMgKz0gYmxvY2tzaXplKSB7CisJCXJldCA9IG10ZC0+YmxvY2tfaXNiYWQobXRkLCBvZnMpOworCQlpZiAocmV0ICYmICFmb3JjZSkgeworCQkJcHJpbnRmKCJTa2lwIGVyYXNlIGJhZCBibG9jayAlZCBhdCAweCV4XG4iLAorCQkJICAgICAgICh1MzIpKG9mcyA+PiB0aGlzLT5lcmFzZV9zaGlmdCksICh1MzIpb2ZzKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaW5zdHIuYWRkciA9IG9mczsKKwkJaW5zdHIubGVuID0gYmxvY2tzaXplOworCQlpbnN0ci5wcml2ID0gZm9yY2U7CisJCWluc3RyLm10ZCA9IG10ZDsKKwkJcmV0ID0gbXRkLT5lcmFzZShtdGQsICZpbnN0cik7CisJCWlmIChyZXQpIHsKKwkJCXByaW50ZigiZXJhc2UgZmFpbGVkIGJsb2NrICVkIGF0IDB4JXhcbiIsCisJCQkgICAgICAgKHUzMikob2ZzID4+IHRoaXMtPmVyYXNlX3NoaWZ0KSwgKHUzMilvZnMpOworCQkJY29udGludWU7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvbmVuYW5kX2Jsb2NrX3Rlc3QodTMyIHN0YXJ0LCB1MzIgc2l6ZSkKK3sKKwlzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBlcmFzZV9pbmZvIGluc3RyID0geworCQkuY2FsbGJhY2sJPSBOVUxMLAorCQkucHJpdgkJPSAwLAorCX07CisKKwlpbnQgYmxvY2tzOworCWxvZmZfdCBvZnM7CisJaW50IGJsb2Nrc2l6ZSA9IDEgPDwgdGhpcy0+ZXJhc2Vfc2hpZnQ7CisJaW50IHN0YXJ0X2Jsb2NrLCBlbmRfYmxvY2s7CisJc2l6ZV90IHJldGxlbjsKKwl1X2NoYXIgKmJ1ZjsKKwl1X2NoYXIgKnZlcmlmeV9idWY7CisJaW50IHJldDsKKworCWJ1ZiA9IG1hbGxvYyhibG9ja3NpemUpOworCWlmICghYnVmKSB7CisJCXByaW50ZigiTm90IGVub3VnaCBtYWxsb2Mgc3BhY2UgYXZhaWxhYmxlIVxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwl2ZXJpZnlfYnVmID0gbWFsbG9jKGJsb2Nrc2l6ZSk7CisJaWYgKCF2ZXJpZnlfYnVmKSB7CisJCXByaW50ZigiTm90IGVub3VnaCBtYWxsb2Mgc3BhY2UgYXZhaWxhYmxlIVxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlzdGFydF9ibG9jayA9IHN0YXJ0ID4+IHRoaXMtPmVyYXNlX3NoaWZ0OworCWVuZF9ibG9jayA9IChzdGFydCArIHNpemUpID4+IHRoaXMtPmVyYXNlX3NoaWZ0OworCisJLyogUHJvdGVjdCBib290LWxvYWRlciBmcm9tIGJhZGJsb2NrIHRlc3RpbmcgKi8KKwlpZiAoc3RhcnRfYmxvY2sgPCAyKQorCQlzdGFydF9ibG9jayA9IDI7CisKKwlpZiAoZW5kX2Jsb2NrID4gKG10ZC0+c2l6ZSA+PiB0aGlzLT5lcmFzZV9zaGlmdCkpCisJCWVuZF9ibG9jayA9IG10ZC0+c2l6ZSA+PiB0aGlzLT5lcmFzZV9zaGlmdDsKKworCWJsb2NrcyA9IHN0YXJ0X2Jsb2NrOworCW9mcyA9IHN0YXJ0OworCXdoaWxlIChibG9ja3MgPCBlbmRfYmxvY2spIHsKKwkJcHJpbnRmKCJcclRlc3RpbmcgYmxvY2sgJWQgYXQgMHgleCIsICh1MzIpKG9mcyA+PiB0aGlzLT5lcmFzZV9zaGlmdCksICh1MzIpb2ZzKTsKKworCQlyZXQgPSBtdGQtPmJsb2NrX2lzYmFkKG10ZCwgb2ZzKTsKKwkJaWYgKHJldCkgeworCQkJcHJpbnRmKCJTa2lwIGVyYXNlIGJhZCBibG9jayAlZCBhdCAweCV4XG4iLAorCQkJICAgICAgICh1MzIpKG9mcyA+PiB0aGlzLT5lcmFzZV9zaGlmdCksICh1MzIpb2ZzKTsKKwkJCWdvdG8gbmV4dDsKKwkJfQorCisJCWluc3RyLmFkZHIgPSBvZnM7CisJCWluc3RyLmxlbiA9IGJsb2Nrc2l6ZTsKKwkJcmV0ID0gbXRkLT5lcmFzZShtdGQsICZpbnN0cik7CisJCWlmIChyZXQpIHsKKwkJCXByaW50aygiRXJhc2UgZmFpbGVkIDB4JXgsICVkXG4iLCAodTMyKW9mcywgcmV0KTsKKwkJCWdvdG8gbmV4dDsKKwkJfQorCisJCXJldCA9IG10ZC0+d3JpdGUobXRkLCBvZnMsIGJsb2Nrc2l6ZSwgJnJldGxlbiwgYnVmKTsKKwkJaWYgKHJldCkgeworCQkJcHJpbnRrKCJXcml0ZSBmYWlsZWQgMHgleCwgJWRcbiIsICh1MzIpb2ZzLCByZXQpOworCQkJZ290byBuZXh0OworCQl9CisKKwkJcmV0ID0gbXRkLT5yZWFkKG10ZCwgb2ZzLCBibG9ja3NpemUsICZyZXRsZW4sIHZlcmlmeV9idWYpOworCQlpZiAocmV0KSB7CisJCQlwcmludGsoIlJlYWQgZmFpbGVkIDB4JXgsICVkXG4iLCAodTMyKW9mcywgcmV0KTsKKwkJCWdvdG8gbmV4dDsKKwkJfQorCisJCWlmIChtZW1jbXAoYnVmLCB2ZXJpZnlfYnVmLCBibG9ja3NpemUpKQorCQkJcHJpbnRrKCJcblJlYWQvV3JpdGUgdGVzdCBmYWlsZWQgYXQgMHgleFxuIiwgKHUzMilvZnMpOworCituZXh0OgorCQlvZnMgKz0gYmxvY2tzaXplOworCQlibG9ja3MrKzsKKwl9CisJcHJpbnRmKCIuLi5Eb25lXG4iKTsKKworCWZyZWUoYnVmKTsKKwlmcmVlKHZlcmlmeV9idWYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb25lbmFuZF9kdW1wKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1bG9uZyBvZmYsIGludCBvbmx5X29vYikKK3sKKwlpbnQgaTsKKwl1X2NoYXIgKmRhdGJ1ZiwgKm9vYmJ1ZiwgKnA7CisJc3RydWN0IG10ZF9vb2Jfb3BzIG9wczsKKwlsb2ZmX3QgYWRkcjsKKworCWRhdGJ1ZiA9IG1hbGxvYyhtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZSk7CisJb29iYnVmID0gbWFsbG9jKG10ZC0+b29ic2l6ZSk7CisJaWYgKCFkYXRidWYgfHwgIW9vYmJ1ZikgeworCQlwdXRzKCJObyBtZW1vcnkgZm9yIHBhZ2UgYnVmZmVyXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCW9mZiAmPSB+KG10ZC0+d3JpdGVzaXplIC0gMSk7CisJYWRkciA9IChsb2ZmX3QpIG9mZjsKKwltZW1zZXQoJm9wcywgMCwgc2l6ZW9mKG9wcykpOworCW9wcy5kYXRidWYgPSBkYXRidWY7CisJb3BzLm9vYmJ1ZiA9IG9vYmJ1ZjsgLyogbXVzdCBleGlzdCwgYnV0IG9vYiBkYXRhIHdpbGwgYmUgYXBwZW5kZWQgdG8gb3BzLmRhdGJ1ZiAqLworCW9wcy5sZW4gPSBtdGQtPndyaXRlc2l6ZTsKKwlvcHMub29ibGVuID0gbXRkLT5vb2JzaXplOworCW9wcy5yZXRsZW4gPSAwOworCWkgPSBtdGQtPnJlYWRfb29iKG10ZCwgYWRkciwgJm9wcyk7CisJaWYgKGkgPCAwKSB7CisJCXByaW50ZigiRXJyb3IgKCVkKSByZWFkaW5nIHBhZ2UgJTA4bHhcbiIsIGksIG9mZik7CisJCWZyZWUoZGF0YnVmKTsKKwkJZnJlZShvb2JidWYpOworCQlyZXR1cm4gMTsKKwl9CisJcHJpbnRmKCJQYWdlICUwOGx4IGR1bXA6XG4iLCBvZmYpOworCWkgPSBtdGQtPndyaXRlc2l6ZSA+PiA0OworCXAgPSBkYXRidWY7CisKKwl3aGlsZSAoaS0tKSB7CisJCWlmICghb25seV9vb2IpCisJCQlwcmludGYoIlx0JTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4IgorCQkJICAgICAgICIgICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeFxuIiwKKwkJCSAgICAgICBwWzBdLCBwWzFdLCBwWzJdLCBwWzNdLCBwWzRdLCBwWzVdLCBwWzZdLCBwWzddLAorCQkJICAgICAgIHBbOF0sIHBbOV0sIHBbMTBdLCBwWzExXSwgcFsxMl0sIHBbMTNdLCBwWzE0XSwKKwkJCSAgICAgICBwWzE1XSk7CisJCXAgKz0gMTY7CisJfQorCXB1dHMoIk9PQjpcbiIpOworCWkgPSBtdGQtPm9vYnNpemUgPj4gMzsKKwl3aGlsZSAoaS0tKSB7CisJCXByaW50ZigiXHQlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnhcbiIsCisJCSAgICAgICBwWzBdLCBwWzFdLCBwWzJdLCBwWzNdLCBwWzRdLCBwWzVdLCBwWzZdLCBwWzddKTsKKwkJcCArPSA4OworCX0KKwlmcmVlKGRhdGJ1Zik7CisJZnJlZShvb2JidWYpOworCisJcmV0dXJuIDA7Cit9CiAKIGludCBkb19vbmVuYW5kKGNtZF90YmxfdCAqIGNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKLQlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzOworCWludCBibG9ja3NpemU7CisJdWxvbmcgYWRkciwgb2ZzOworCXNpemVfdCBsZW4sIHJldGxlbiA9IDA7CisJaW50IHJldDsKKwljaGFyICpjbWQsICpzOworCisJbXRkID0gJm9uZW5hbmRfbXRkOworCXRoaXMgPSBtdGQtPnByaXY7CisJYmxvY2tzaXplID0gKDEgPDwgdGhpcy0+ZXJhc2Vfc2hpZnQpOworCisJY21kID0gYXJndlsxXTsKIAogCXN3aXRjaCAoYXJnYykgewogCWNhc2UgMDoKIAljYXNlIDE6Ci0JCXByaW50ZigiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKLQkJcmV0dXJuIDE7CisJCWdvdG8gdXNhZ2U7CiAKIAljYXNlIDI6Ci0JCWlmIChzdHJuY21wKGFyZ3ZbMV0sICJvcGVuIiwgNCkgPT0gMCkgewotCQkJb25lbmFuZF9pbml0KCk7CisJCWlmIChzdHJjbXAoY21kLCAiaW5mbyIpID09IDApIHsKKwkJCXByaW50ZigiJXNcbiIsIG10ZC0+bmFtZSk7CiAJCQlyZXR1cm4gMDsKIAkJfQotCQlwcmludGYoIiVzXG4iLCBvbmVuYW5kX210ZC5uYW1lKTsKLQkJcmV0dXJuIDA7CisKKwkJaWYgKHN0cmNtcChjbWQsICJiYWQiKSA9PSAwKSB7CisJCQkvKiBDdXJyZW50bHkgb25seSBvbmUgT25lTkFORCBkZXZpY2UgaXMgc3VwcG9ydGVkICovCisJCQlwcmludGYoIlxuRGV2aWNlICVkIGJhZCBibG9ja3M6XG4iLCAwKTsKKwkJCWZvciAob2ZzID0gMDsgb2ZzIDwgbXRkLT5zaXplOyBvZnMgKz0gbXRkLT5lcmFzZXNpemUpIHsKKwkJCQlpZiAobXRkLT5ibG9ja19pc2JhZChtdGQsIG9mcykpCisJCQkJCXByaW50ZigiICAlMDh4XG4iLCAodTMyKW9mcyk7CisJCQl9CisKKwkJCXJldHVybiAwOworCQl9CiAKIAlkZWZhdWx0OgogCQkvKiBBdCBsZWFzdCA0IGFyZ3MgKi8KLQkJaWYgKHN0cm5jbXAoYXJndlsxXSwgImVyYXNlIiwgNSkgPT0gMCkgewotCQkJc3RydWN0IGVyYXNlX2luZm8gaW5zdHIgPSB7Ci0JCQkJLmNhbGxiYWNrCT0gTlVMTCwKLQkJCX07Ci0JCQl1bG9uZyBzdGFydCwgZW5kOwotCQkJdWxvbmcgYmxvY2s7Ci0JCQljaGFyICplbmR0YWlsOwogCi0JCQlpZiAoc3RybmNtcChhcmd2WzJdLCAiYmxvY2siLCA1KSA9PSAwKSB7Ci0JCQkJc3RhcnQgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxMCk7Ci0JCQkJZW5kdGFpbCA9IHN0cmNocihhcmd2WzNdLCAnLScpOwotCQkJCWVuZCA9IHNpbXBsZV9zdHJ0b3VsKGVuZHRhaWwgKyAxLCBOVUxMLCAxMCk7Ci0JCQl9IGVsc2UgewotCQkJCXN0YXJ0ID0gc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTApOwotCQkJCWVuZCA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbM10sIE5VTEwsIDEwKTsKKwkJLyoKKwkJICogU3ludGF4IGlzOgorCQkgKiAgIDAgICAgICAgMSAgICAgMiAgICAgICAzICAgIDQKKwkJICogICBvbmVuYW5kIGVyYXNlIFtmb3JjZV0gW29mZiBzaXplXQorCQkgKi8KKwkJaWYgKChzdHJjbXAoY21kLCAiZXJhc2UiKSA9PSAwKSB8fCAoc3RyY21wKGNtZCwgInRlc3QiKSA9PSAwKSkgeworCQkJaW50IGZvcmNlID0gYXJnYyA+IDIgJiYgIXN0cmNtcCgiZm9yY2UiLCBhcmd2WzJdKTsKKwkJCWludCBvID0gZm9yY2UgPyAzIDogMjsKKwkJCWludCBlcmFzZTsKIAotCQkJCXN0YXJ0ID4+PSBvbmVuYW5kX2NoaXAuZXJhc2Vfc2hpZnQ7Ci0JCQkJZW5kID4+PSBvbmVuYW5kX2NoaXAuZXJhc2Vfc2hpZnQ7Ci0JCQkJLyogRG9uJ3QgaW5jbHVkZSB0aGUgZW5kIGJsb2NrICovCi0JCQkJZW5kLS07Ci0JCQl9CisJCQllcmFzZSA9IHN0cmNtcChjbWQsICJlcmFzZSIpID09IDA7IC8qIDEgPSBlcmFzZSwgMCA9IHRlc3QgKi8KKwkJCXByaW50ZigiXG5PbmVOQU5EICVzOiAiLCBlcmFzZSA/ICJlcmFzZSIgOiAidGVzdCIpOwogCi0JCQlpZiAoIWVuZCB8fCBlbmQgPCAwKQotCQkJCWVuZCA9IHN0YXJ0OworCQkJLyogc2tpcCBmaXJzdCB0d28gb3IgdGhyZWUgYXJndW1lbnRzLCBsb29rIGZvciBvZmZzZXQgYW5kIHNpemUgKi8KKwkJCWlmIChhcmdfb2ZmX3NpemUoYXJnYyAtIG8sIGFyZ3YgKyBvLCAmb2ZzLCAmbGVuKSAhPSAwKQorCQkJCXJldHVybiAxOwogCi0JCQlwcmludGYoIkVyYXNlIGJsb2NrIGZyb20gJWx1IHRvICVsdVxuIiwgc3RhcnQsIGVuZCk7CisJCQlpZiAoZXJhc2UpCisJCQkJcmV0ID0gb25lbmFuZF9ibG9ja19lcmFzZShvZnMsIGxlbiwgZm9yY2UpOworCQkJZWxzZQorCQkJCXJldCA9IG9uZW5hbmRfYmxvY2tfdGVzdChvZnMsIGxlbik7CiAKLQkJCWZvciAoYmxvY2sgPSBzdGFydDsgYmxvY2sgPD0gZW5kOyBibG9jaysrKSB7Ci0JCQkJaW5zdHIuYWRkciA9IGJsb2NrIDw8IG9uZW5hbmRfY2hpcC5lcmFzZV9zaGlmdDsKLQkJCQlpbnN0ci5sZW4gPSAxIDw8IG9uZW5hbmRfY2hpcC5lcmFzZV9zaGlmdDsKLQkJCQlyZXQgPSBvbmVuYW5kX2VyYXNlKCZvbmVuYW5kX210ZCwgJmluc3RyKTsKLQkJCQlpZiAocmV0KSB7Ci0JCQkJCXByaW50ZigiZXJhc2UgZmFpbGVkICVsdVxuIiwgYmxvY2spOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9CisJCQlwcmludGYoIiVzXG4iLCByZXQgPyAiRVJST1IiIDogIk9LIik7CiAKLQkJCXJldHVybiAwOworCQkJcmV0dXJuIHJldCA9PSAwID8gMCA6IDE7CiAJCX0KIAotCQlpZiAoc3RybmNtcChhcmd2WzFdLCAicmVhZCIsIDQpID09IDApIHsKLQkJCXVsb25nIGFkZHIgPSBzaW1wbGVfc3RydG91bChhcmd2WzJdLCBOVUxMLCAxNik7Ci0JCQl1bG9uZyBvZnMgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7Ci0JCQlzaXplX3QgbGVuID0gc2ltcGxlX3N0cnRvdWwoYXJndls0XSwgTlVMTCwgMTYpOwotCQkJaW50IG9vYiA9IHN0cm5jbXAoYXJndlsxXSwgInJlYWQub29iIiwgOCkgPyAwIDogMTsKLQkJCXN0cnVjdCBtdGRfb29iX29wcyBvcHM7CisJCWlmIChzdHJuY21wKGNtZCwgInJlYWQiLCA0KSA9PSAwIHx8IHN0cm5jbXAoY21kLCAid3JpdGUiLCA1KSA9PSAwKSB7CisJCQlpbnQgcmVhZDsKKwkJCWludCBvb2IgPSAwOwogCi0JCQlvcHMubW9kZSA9IE1URF9PT0JfUExBQ0U7CisJCQlpZiAoYXJnYyA8IDQpCisJCQkJZ290byB1c2FnZTsKIAotCQkJaWYgKG9vYikgewotCQkJCW9wcy5sZW4gPSAwOwotCQkJCW9wcy5kYXRidWYgPSBOVUxMOwotCQkJCW9wcy5vb2JsZW4gPSBsZW47Ci0JCQkJb3BzLm9vYmJ1ZiA9ICh1X2NoYXIgKikgYWRkcjsKKwkJCWFkZHIgPSAodWxvbmcpc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTYpOworCisJCQlyZWFkID0gc3RybmNtcChjbWQsICJyZWFkIiwgNCkgPT0gMDsgLyogMSA9IHJlYWQsIDAgPSB3cml0ZSAqLworCQkJcHJpbnRmKCJcbk9uZU5BTkQgJXM6ICIsIHJlYWQgPyAicmVhZCIgOiAid3JpdGUiKTsKKwkJCWlmIChhcmdfb2ZmX3NpemUoYXJnYyAtIDMsIGFyZ3YgKyAzLCAmb2ZzLCAmbGVuKSAhPSAwKQorCQkJCXJldHVybiAxOworCisJCQlzID0gc3RyY2hyKGNtZCwgJy4nKTsKKwkJCWlmICgocyAhPSBOVUxMKSAmJiAoIXN0cmNtcChzLCAiLm9vYiIpKSkKKwkJCQlvb2IgPSAxOworCisJCQlpZiAocmVhZCkgeworCQkJCXJldCA9IG9uZW5hbmRfYmxvY2tfcmVhZChvZnMsIGxlbiwgJnJldGxlbiwKKwkJCQkJCQkgKHU4ICopYWRkciwgb29iKTsKIAkJCX0gZWxzZSB7Ci0JCQkJb3BzLmxlbiA9IGxlbjsKLQkJCQlvcHMuZGF0YnVmID0gKHVfY2hhciAqKSBhZGRyOwotCQkJCW9wcy5vb2JsZW4gPSAwOwotCQkJCW9wcy5vb2JidWYgPSBOVUxMOworCQkJCXJldCA9IG9uZW5hbmRfYmxvY2tfd3JpdGUob2ZzLCBsZW4sICZyZXRsZW4sCisJCQkJCQkJICAodTggKilhZGRyKTsKIAkJCX0KLQkJCW9wcy5yZXRsZW4gPSBvcHMub29icmV0bGVuID0gMDsKIAotCQkJb25lbmFuZF9tdGQucmVhZF9vb2IoJm9uZW5hbmRfbXRkLCBvZnMsICZvcHMpOwotCQkJcHJpbnRmKCJEb25lXG4iKTsKKwkJCXByaW50ZigiICVkIGJ5dGVzICVzOiAlc1xuIiwgcmV0bGVuLAorCQkJICAgICAgIHJlYWQgPyAicmVhZCIgOiAid3JpdHRlbiIsIHJldCA/ICJFUlJPUiIgOiAiT0siKTsKIAotCQkJcmV0dXJuIDA7CisJCQlyZXR1cm4gcmV0ID09IDAgPyAwIDogMTsKIAkJfQogCi0JCWlmIChzdHJuY21wKGFyZ3ZbMV0sICJ3cml0ZSIsIDUpID09IDApIHsKLQkJCXVsb25nIGFkZHIgPSBzaW1wbGVfc3RydG91bChhcmd2WzJdLCBOVUxMLCAxNik7Ci0JCQl1bG9uZyBvZnMgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7Ci0JCQlzaXplX3QgbGVuID0gc2ltcGxlX3N0cnRvdWwoYXJndls0XSwgTlVMTCwgMTYpOwotCQkJc2l6ZV90IHJldGxlbiA9IDA7CisJCWlmIChzdHJjbXAoY21kLCAibWFya2JhZCIpID09IDApIHsKKwkJCWFkZHIgPSAodWxvbmcpc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTYpOwogCi0JCQlvbmVuYW5kX3dyaXRlKCZvbmVuYW5kX210ZCwgb2ZzLCBsZW4sICZyZXRsZW4sCi0JCQkJICAgICAgKHVfY2hhciAqKSBhZGRyKTsKLQkJCXByaW50ZigiRG9uZVxuIik7Ci0KLQkJCXJldHVybiAwOworCQkJaW50IHJldCA9IG10ZC0+YmxvY2tfbWFya2JhZChtdGQsIGFkZHIpOworCQkJaWYgKHJldCA9PSAwKSB7CisJCQkJcHJpbnRmKCJibG9jayAweCUwOGx4IHN1Y2Nlc3NmdWxseSBtYXJrZWQgYXMgYmFkXG4iLAorCQkJCQkJKHVsb25nKSBhZGRyKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnRmKCJibG9jayAweCUwOGx4IE5PVCBtYXJrZWQgYXMgYmFkISBFUlJPUiAlZFxuIiwKKwkJCQkJCSh1bG9uZykgYWRkciwgcmV0KTsKKwkJCX0KKwkJCXJldHVybiAxOwogCQl9CiAKLQkJaWYgKHN0cm5jbXAoYXJndlsxXSwgImJsb2NrIiwgNSkgPT0gMCkgewotCQkJdWxvbmcgYWRkciA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDE2KTsKLQkJCXVsb25nIGJsb2NrID0gc2ltcGxlX3N0cnRvdWwoYXJndlszXSwgTlVMTCwgMTApOwotCQkJdWxvbmcgcGFnZSA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbNF0sIE5VTEwsIDEwKTsKLQkJCXNpemVfdCBsZW4gPSBzaW1wbGVfc3RydG9sKGFyZ3ZbNV0sIE5VTEwsIDEwKTsKLQkJCXVsb25nIG9mczsKLQkJCWludCBvb2IgPSBzdHJuY21wKGFyZ3ZbMV0sICJibG9jay5vb2IiLCA5KSA/IDAgOiAxOwotCQkJc3RydWN0IG10ZF9vb2Jfb3BzIG9wczsKKwkJaWYgKHN0cm5jbXAoY21kLCAiZHVtcCIsIDQpID09IDApIHsKKwkJCWlmIChhcmdjIDwgMykKKwkJCQlnb3RvIHVzYWdlOwogCi0JCQlvcHMubW9kZSA9IE1URF9PT0JfUExBQ0U7CisJCQlzID0gc3RyY2hyKGNtZCwgJy4nKTsKKwkJCW9mcyA9IChpbnQpc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTYpOwogCisJCQlpZiAocyAhPSBOVUxMICYmIHN0cmNtcChzLCAiLm9vYiIpID09IDApCisJCQkJcmV0ID0gb25lbmFuZF9kdW1wKG10ZCwgb2ZzLCAxKTsKKwkJCWVsc2UKKwkJCQlyZXQgPSBvbmVuYW5kX2R1bXAobXRkLCBvZnMsIDApOwogCi0JCQlvZnMgPSBibG9jayA8PCBvbmVuYW5kX2NoaXAuZXJhc2Vfc2hpZnQ7Ci0JCQlpZiAocGFnZSkKLQkJCQlvZnMgKz0gcGFnZSA8PCBvbmVuYW5kX2NoaXAucGFnZV9zaGlmdDsKLQotCQkJaWYgKCFsZW4pIHsKLQkJCQlpZiAob29iKQotCQkJCQlvcHMub29ibGVuID0gNjQ7Ci0JCQkJZWxzZQotCQkJCQlvcHMubGVuID0gNTEyOwotCQkJfQotCi0JCQlpZiAob29iKSB7Ci0JCQkJb3BzLmRhdGJ1ZiA9IE5VTEw7Ci0JCQkJb3BzLm9vYmJ1ZiA9ICh1X2NoYXIgKikgYWRkcjsKLQkJCX0gZWxzZSB7Ci0JCQkJb3BzLmRhdGJ1ZiA9ICh1X2NoYXIgKikgYWRkcjsKLQkJCQlvcHMub29iYnVmID0gTlVMTDsKLQkJCX0KLQkJCW9wcy5yZXRsZW4gPSBvcHMub29icmV0bGVuID0gMDsKLQotCQkJb25lbmFuZF9yZWFkX29vYigmb25lbmFuZF9tdGQsIG9mcywgJm9wcyk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJldHVybiByZXQgPT0gMCA/IDEgOiAwOwogCQl9CiAKIAkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIDA7CisKK3VzYWdlOgorCXByaW50ZigiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKKwlyZXR1cm4gMTsKIH0KIAogVV9CT09UX0NNRCgKIAlvbmVuYW5kLAk2LAkxLAlkb19vbmVuYW5kLAogCSJvbmVuYW5kIC0gT25lTkFORCBzdWItc3lzdGVtXG4iLAotCSJpbmZvICAgLSBzaG93IGF2YWlsYWJsZSBPbmVOQU5EIGRldmljZXNcbiIKLQkib25lbmFuZCByZWFkWy5vb2JdIGFkZHIgb2ZzIGxlbiAtIHJlYWQgZGF0YSBhdCBvZnMgd2l0aCBsZW4gdG8gYWRkclxuIgotCSJvbmVuYW5kIHdyaXRlIGFkZHIgb2ZzIGxlbiAtIHdyaXRlIGRhdGEgYXQgb2ZzIHdpdGggbGVuIGZyb20gYWRkclxuIgotCSJvbmVuYW5kIGVyYXNlIHNhZGRyIGVhZGRyIC0gZXJhc2UgYmxvY2sgc3RhcnQgYWRkciB0byBlbmQgYWRkclxuIgotCSJvbmVuYW5kIGJsb2NrWy5vb2JdIGFkZHIgYmxvY2sgW3BhZ2VdIFtsZW5dIC0gIgotCQkicmVhZCBkYXRhIHdpdGggKGJsb2NrIFssIHBhZ2VdKSB0byBhZGRyIgorCSJpbmZvIC0gc2hvdyBhdmFpbGFibGUgT25lTkFORCBkZXZpY2VzXG4iCisJIm9uZW5hbmQgYmFkIC0gc2hvdyBiYWQgYmxvY2tzXG4iCisJIm9uZW5hbmQgcmVhZFsub29iXSBhZGRyIG9mZiBzaXplXG4iCisJIm9uZW5hbmQgd3JpdGVbLm9vYl0gYWRkciBvZmYgc2l6ZVxuIgorCSIgICAgcmVhZC93cml0ZSAnc2l6ZScgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0ICdvZmYnXG4iCisJIiAgICB0by9mcm9tIG1lbW9yeSBhZGRyZXNzICdhZGRyJywgc2tpcHBpbmcgYmFkIGJsb2Nrcy5cbiIKKwkib25lbmFuZCBlcmFzZSBbZm9yY2VdIFtvZmYgc2l6ZV0gLSBlcmFzZSAnc2l6ZScgYnl0ZXMgZnJvbVxuIgorCSJvbmVuYW5kIHRlc3QgW29mZiBzaXplXSAtIHRlc3QgJ3NpemUnIGJ5dGVzIGZyb21cbiIKKwkiICAgIG9mZnNldCAnb2ZmJyAoZW50aXJlIGRldmljZSBpZiBub3Qgc3BlY2lmaWVkKVxuIgorCSJvbmVuYW5kIGR1bXBbLm9vYl0gb2ZmIC0gZHVtcCBwYWdlXG4iCisJIm9uZW5hbmQgbWFya2JhZCBvZmYgLSBtYXJrIGJhZCBibG9jayBhdCBvZmZzZXQgKFVOU0FGRSlcbiIKICk7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX3ViaS5jIGIvY29tbW9uL2NtZF91YmkuYwppbmRleCA4NDQ2NzY1Li41YzMxZjdiIDEwMDY0NAotLS0gYS9jb21tb24vY21kX3ViaS5jCisrKyBiL2NvbW1vbi9jbWRfdWJpLmMKQEAgLTMxLDYgKzMxLDcgQEAKIC8qIFByaXZhdGUgb3duIGRhdGEgKi8KIHN0YXRpYyBzdHJ1Y3QgdWJpX2RldmljZSAqdWJpOwogc3RhdGljIGNoYXIgYnVmZmVyWzgwXTsKK3N0YXRpYyBpbnQgdWJpX2luaXRpYWxpemVkOwogCiBzdHJ1Y3Qgc2VsZWN0ZWRfZGV2IHsKIAljaGFyIGRldl9uYW1lWzMyXTsJLyogTkFORC9PbmVOQU5EIGV0YyAqLwpAQCAtNDI4LDYgKzQyOSw4IEBACiAJCXJldHVybiBlcnI7CiAJfQogCisJdWJpX2luaXRpYWxpemVkID0gMTsKKwogCXJldHVybiAwOwogfQogCkBAIC00NjQsNiArNDY3LDE0IEBACiAJCXViaV9kZXYubnIgPSAwOwogCiAJCS8qCisJCSAqIENhbGwgdWJpX2V4aXQoKSBiZWZvcmUgcmUtaW5pdGlhbGl6aW5nIHRoZSBVQkkgc3Vic3lzdGVtCisJCSAqLworCQlpZiAodWJpX2luaXRpYWxpemVkKSB7CisJCQl1YmlfZXhpdCgpOworCQkJZGVsX210ZF9wYXJ0aXRpb25zKHViaV9kZXYubXRkX2luZm8pOworCQl9CisKKwkJLyoKIAkJICogQ2hlY2sgZm9yIG5hbmR8b25lbmFuZCBzZWxlY3Rpb24KIAkJICovCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX05BTkQpCkBAIC00OTcsNiArNTA4LDcgQEAKIAkJZXJyID0gdWJpX2Rldl9zY2FuKHViaV9kZXYubXRkX2luZm8sIHViaV9kZXYucGFydF9uYW1lKTsKIAkJaWYgKGVycikgewogCQkJcHJpbnRmKCJVQkkgaW5pdCBlcnJvciAlZFxuIiwgZXJyKTsKKwkJCXViaV9kZXYudHlwZSA9IERFVl9UWVBFX05PTkU7CiAJCQlyZXR1cm4gZXJyOwogCQl9CiAKQEAgLTUzNSw3ICs1NDcsNyBAQAogCQl9CiAJCS8qIEUuZy4sIGNyZWF0ZSB2b2x1bWUgc2l6ZSAqLwogCQlpZiAoYXJnYyA9PSA0KSB7Ci0JCQlhZGRyID0gc2ltcGxlX3N0cnRvdWwoYXJndlszXSwgTlVMTCwgMTYpOworCQkJc2l6ZSA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbM10sIE5VTEwsIDE2KTsKIAkJCWFyZ2MtLTsKIAkJfQogCQkvKiBVc2UgbWF4aW11bSBhdmFpbGFibGUgc2l6ZSAqLwpAQCAtNTg5LDcgKzYwMSw3IEBACiAKIFVfQk9PVF9DTUQodWJpLCA2LCAxLCBkb191YmksCiAJInViaSAgICAgIC0gdWJpIGNvbW1hbmRzXG4iLAotICAgICAgICAicGFydCBbbmFuZHxub3J8b25lbmFuZF0gW3BhcnRdIgorCSJwYXJ0IFtuYW5kfG5vcnxvbmVuYW5kXSBbcGFydF0iCiAJCSIgLSBTaG93IG9yIHNldCBjdXJyZW50IHBhcnRpdGlvblxuIgogCSJ1YmkgaW5mbyBbbFtheW91dF1dIgogCQkiIC0gRGlzcGxheSB2b2x1bWUgYW5kIHViaSBsYXlvdXQgaW5mb3JtYXRpb25cbiIKZGlmZiAtLWdpdCBhL2NvbW1vbi9lbnZfc2YuYyBiL2NvbW1vbi9lbnZfc2YuYwppbmRleCAxYmJmOTNmLi4yZjUyZTI1IDEwMDY0NAotLS0gYS9jb21tb24vZW52X3NmLmMKKysrIGIvY29tbW9uL2Vudl9zZi5jCkBAIC0yNyw2ICsyNyw3IEBACiAgKi8KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxlbnZpcm9ubWVudC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPHNwaV9mbGFzaC5oPgogCiAjaWZuZGVmIENPTkZJR19FTlZfU1BJX0JVUwpAQCAtNjAsMTMgKzYxLDMwIEBACiAKIGludCBzYXZlZW52KHZvaWQpCiB7CisJdTMyIHNhdmVkX3NpemUsIHNhdmVkX29mZnNldDsKKwljaGFyICpzYXZlZF9idWZmZXIgPSBOVUxMOwogCXUzMiBzZWN0b3IgPSAxOworCWludCByZXQ7CiAKIAlpZiAoIWVudl9mbGFzaCkgewogCQlwdXRzKCJFbnZpcm9ubWVudCBTUEkgZmxhc2ggbm90IGluaXRpYWxpemVkXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQogCisJLyogSXMgdGhlIHNlY3RvciBsYXJnZXIgdGhhbiB0aGUgZW52IChpLmUuIGVtYmVkZGVkKSAqLworCWlmIChDT05GSUdfRU5WX1NFQ1RfU0laRSA+IENPTkZJR19FTlZfU0laRSkgeworCQlzYXZlZF9zaXplID0gQ09ORklHX0VOVl9TRUNUX1NJWkUgLSBDT05GSUdfRU5WX1NJWkU7CisJCXNhdmVkX29mZnNldCA9IENPTkZJR19FTlZfT0ZGU0VUICsgQ09ORklHX0VOVl9TSVpFOworCQlzYXZlZF9idWZmZXIgPSBtYWxsb2Moc2F2ZWRfc2l6ZSk7CisJCWlmICghc2F2ZWRfYnVmZmVyKSB7CisJCQlyZXQgPSAxOworCQkJZ290byBkb25lOworCQl9CisJCXJldCA9IHNwaV9mbGFzaF9yZWFkKGVudl9mbGFzaCwgc2F2ZWRfb2Zmc2V0LCBzYXZlZF9zaXplLCBzYXZlZF9idWZmZXIpOworCQlpZiAocmV0KQorCQkJZ290byBkb25lOworCX0KKwogCWlmIChDT05GSUdfRU5WX1NJWkUgPiBDT05GSUdfRU5WX1NFQ1RfU0laRSkgewogCQlzZWN0b3IgPSBDT05GSUdfRU5WX1NJWkUgLyBDT05GSUdfRU5WX1NFQ1RfU0laRTsKIAkJaWYgKENPTkZJR19FTlZfU0laRSAlIENPTkZJR19FTlZfU0VDVF9TSVpFKQpAQCAtNzQsMTUgKzkyLDI4IEBACiAJfQogCiAJcHV0cygiRXJhc2luZyBTUEkgZmxhc2guLi4iKTsKLQlpZiAoc3BpX2ZsYXNoX2VyYXNlKGVudl9mbGFzaCwgQ09ORklHX0VOVl9PRkZTRVQsIHNlY3RvciAqIENPTkZJR19FTlZfU0VDVF9TSVpFKSkKLQkJcmV0dXJuIDE7CisJcmV0ID0gc3BpX2ZsYXNoX2VyYXNlKGVudl9mbGFzaCwgQ09ORklHX0VOVl9PRkZTRVQsIHNlY3RvciAqIENPTkZJR19FTlZfU0VDVF9TSVpFKTsKKwlpZiAocmV0KQorCQlnb3RvIGRvbmU7CiAKIAlwdXRzKCJXcml0aW5nIHRvIFNQSSBmbGFzaC4uLiIpOwotCWlmIChzcGlfZmxhc2hfd3JpdGUoZW52X2ZsYXNoLCBDT05GSUdfRU5WX09GRlNFVCwgQ09ORklHX0VOVl9TSVpFLCBlbnZfcHRyKSkKLQkJcmV0dXJuIDE7CisJcmV0ID0gc3BpX2ZsYXNoX3dyaXRlKGVudl9mbGFzaCwgQ09ORklHX0VOVl9PRkZTRVQsIENPTkZJR19FTlZfU0laRSwgZW52X3B0cik7CisJaWYgKHJldCkKKwkJZ290byBkb25lOwogCisJaWYgKENPTkZJR19FTlZfU0VDVF9TSVpFID4gQ09ORklHX0VOVl9TSVpFKSB7CisJCXJldCA9IHNwaV9mbGFzaF93cml0ZShlbnZfZmxhc2gsIHNhdmVkX29mZnNldCwgc2F2ZWRfc2l6ZSwgc2F2ZWRfYnVmZmVyKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZG9uZTsKKwl9CisKKwlyZXQgPSAwOwogCXB1dHMoImRvbmVcbiIpOwotCXJldHVybiAwOworCisgZG9uZToKKwlpZiAoc2F2ZWRfYnVmZmVyKQorCQlmcmVlKHNhdmVkX2J1ZmZlcik7CisJcmV0dXJuIHJldDsKIH0KIAogdm9pZCBlbnZfcmVsb2NhdGVfc3BlYyh2b2lkKQpkaWZmIC0tZ2l0IGEvY29tbW9uL2ZkdF9zdXBwb3J0LmMgYi9jb21tb24vZmR0X3N1cHBvcnQuYwppbmRleCA1YTgzYmNhLi5hNzliYzA4IDEwMDY0NAotLS0gYS9jb21tb24vZmR0X3N1cHBvcnQuYworKysgYi9jb21tb24vZmR0X3N1cHBvcnQuYwpAQCAtNjEwLDcgKzYxMCw3IEBACiAJCWZkdF9zaXplX2R0X3N0cmluZ3MoYmxvYikgKyBzaXplb2Yoc3RydWN0IGZkdF9yZXNlcnZlX2VudHJ5KTsKIAogCS8qIE1ha2UgaXQgc28gdGhlIGZkdCBlbmRzIG9uIGEgcGFnZSBib3VuZGFyeSAqLwotCWFjdHVhbHNpemUgPSBBTElHTihhY3R1YWxzaXplLCAweDEwMDApOworCWFjdHVhbHNpemUgPSBBTElHTihhY3R1YWxzaXplICsgKCh1aW50KWJsb2IgJiAweGZmZiksIDB4MTAwMCk7CiAJYWN0dWFsc2l6ZSA9IGFjdHVhbHNpemUgLSAoKHVpbnQpYmxvYiAmIDB4ZmZmKTsKIAogCS8qIENoYW5nZSB0aGUgZmR0IGhlYWRlciB0byByZWZsZWN0IHRoZSBjb3JyZWN0IHNpemUgKi8KZGlmZiAtLWdpdCBhL2NvbW1vbi9pbWFnZS5jIGIvY29tbW9uL2ltYWdlLmMKaW5kZXggODY2ZWRmNi4uZGFhNjhiYyAxMDA2NDQKLS0tIGEvY29tbW9uL2ltYWdlLmMKKysrIGIvY29tbW9uL2ltYWdlLmMKQEAgLTEwNzEsNiArMTA3MSw3IEBACiBlcnJvcjoKIAlyZXR1cm4gLTE7CiB9CisjZW5kaWYgLyogZGVmaW5lZChDT05GSUdfUFBDKSB8fCBkZWZpbmVkKENPTkZJR19NNjhLKSB8fCBkZWZpbmVkKENPTkZJR19TUEFSQykgKi8KIAogI2lmZGVmIENPTkZJR19PRl9MSUJGRFQKIHN0YXRpYyB2b2lkIGZkdF9lcnJvciAoY29uc3QgY2hhciAqbXNnKQpAQCAtMTU3NSw2ICsxNTc2LDcgQEAKIH0KICNlbmRpZiAvKiBDT05GSUdfT0ZfTElCRkRUICovCiAKKyNpZiBkZWZpbmVkKENPTkZJR19QUEMpIHx8IGRlZmluZWQoQ09ORklHX002OEspCiAvKioKICAqIGJvb3RfZ2V0X2NtZGxpbmUgLSBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBrZXJuZWwgY21kbGluZQogICogQGxtYjogcG9pbnRlciB0byBsbWIgaGFuZGxlLCB3aWxsIGJlIHVzZWQgZm9yIG1lbW9yeSBtZ210CmRpZmYgLS1naXQgYS9jb21tb24vbWFpbi5jIGIvY29tbW9uL21haW4uYwppbmRleCBhOTk5YTVkLi40YzRmNzgwIDEwMDY0NAotLS0gYS9jb21tb24vbWFpbi5jCisrKyBiL2NvbW1vbi9tYWluLmMKQEAgLTE1OCw3ICsxNTgsMTkgQEAKIAkvKiBJbiBvcmRlciB0byBrZWVwIHVwIHdpdGggaW5jb21pbmcgZGF0YSwgY2hlY2sgdGltZW91dCBvbmx5CiAJICogd2hlbiBjYXRjaCB1cC4KIAkgKi8KLQl3aGlsZSAoIWFib3J0ICYmIGdldF90aWNrcygpIDw9IGV0aW1lKSB7CisJZG8geworCQlpZiAodHN0YygpKSB7CisJCQlpZiAocHJlc3NrZXlfbGVuIDwgcHJlc3NrZXlfbWF4KSB7CisJCQkJcHJlc3NrZXkgW3ByZXNza2V5X2xlbiArK10gPSBnZXRjKCk7CisJCQl9CisJCQllbHNlIHsKKwkJCQlmb3IgKGkgPSAwOyBpIDwgcHJlc3NrZXlfbWF4IC0gMTsgaSArKykKKwkJCQkJcHJlc3NrZXkgW2ldID0gcHJlc3NrZXkgW2kgKyAxXTsKKworCQkJCXByZXNza2V5IFtpXSA9IGdldGMoKTsKKwkJCX0KKwkJfQorCiAJCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoZGVsYXlrZXkpIC8gc2l6ZW9mKGRlbGF5a2V5WzBdKTsgaSArKykgewogCQkJaWYgKGRlbGF5a2V5W2ldLmxlbiA+IDAgJiYKIAkJCSAgICBwcmVzc2tleV9sZW4gPj0gZGVsYXlrZXlbaV0ubGVuICYmCkBAIC0xNzgsMTkgKzE5MCw4IEBACiAJCQkJYWJvcnQgPSAxOwogCQkJfQogCQl9CisJfSB3aGlsZSAoIWFib3J0ICYmIGdldF90aWNrcygpIDw9IGV0aW1lKTsKIAotCQlpZiAodHN0YygpKSB7Ci0JCQlpZiAocHJlc3NrZXlfbGVuIDwgcHJlc3NrZXlfbWF4KSB7Ci0JCQkJcHJlc3NrZXkgW3ByZXNza2V5X2xlbiArK10gPSBnZXRjKCk7Ci0JCQl9Ci0JCQllbHNlIHsKLQkJCQlmb3IgKGkgPSAwOyBpIDwgcHJlc3NrZXlfbWF4IC0gMTsgaSArKykKLQkJCQkJcHJlc3NrZXkgW2ldID0gcHJlc3NrZXkgW2kgKyAxXTsKLQotCQkJCXByZXNza2V5IFtpXSA9IGdldGMoKTsKLQkJCX0KLQkJfQotCX0KICMgIGlmIERFQlVHX0JPT1RLRVlTCiAJaWYgKCFhYm9ydCkKIAkJcHV0cygia2V5IHRpbWVvdXRcbiIpOwpkaWZmIC0tZ2l0IGEvY29tbW9uL3VzYl9rYmQuYyBiL2NvbW1vbi91c2Jfa2JkLmMKaW5kZXggY2YxNDU2MC4uODllNmVlNyAxMDA2NDQKLS0tIGEvY29tbW9uL3VzYl9rYmQuYworKysgYi9jb21tb24vdXNiX2tiZC5jCkBAIC0yMTEsNyArMjExLDExIEBACiAvKiBkZXJlZ2lzdGVyaW5nIHRoZSBrZXlib2FyZCAqLwogaW50IHVzYl9rYmRfZGVyZWdpc3Rlcih2b2lkKQogeworI2lmZGVmIENPTkZJR19TWVNfREVWSUNFX0RFUkVHSVNURVIKIAlyZXR1cm4gZGV2aWNlX2RlcmVnaXN0ZXIoREVWTkFNRSk7CisjZWxzZQorCXJldHVybiAxOworI2VuZGlmCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvY29uZmlnLm1rIGIvY29uZmlnLm1rCmluZGV4IGQ3NzBmMDkuLmIxMjU0ZTkgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5taworKysgYi9jb25maWcubWsKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pZmVxICgkKEhPU1RPUyktJChIT1NUQVJDSCksZGFyd2luLXBwYykKK2lmZXEgKCQoSE9TVE9TKSxkYXJ3aW4pCiBIT1NUQ0MJCT0gY2MKIGVsc2UKIEhPU1RDQwkJPSBnY2MKQEAgLTE4MSw3ICsxODEsNyBAQAogIwogIyBTbyBmYXIsIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IHRvb2xzL2dkYi9NYWtlZmlsZS4KIAotaWZlcSAoJChIT1NUT1MpLSQoSE9TVEFSQ0gpLGRhcndpbi1wcGMpCitpZmVxICgkKEhPU1RPUyksZGFyd2luKQogQkZEX1JPT1RfRElSID0JCS91c3IvbG9jYWwvdG9vbHMKIGVsc2UKIGlmZXEgKCQoSE9TVEFSQ0gpLCQoQVJDSCkpCmRpZmYgLS1naXQgYS9jcHUvYXJtNzIwdC9jb25maWcubWsgYi9jcHUvYXJtNzIwdC9jb25maWcubWsKaW5kZXggNjQxYjkxYy4uM2NhZTFkYyAxMDA2NDQKLS0tIGEvY3B1L2FybTcyMHQvY29uZmlnLm1rCisrKyBiL2NwdS9hcm03MjB0L2NvbmZpZy5tawpAQCAtMzIsNCArMzIsNSBAQAogIwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1hcGNzLTMyLC1tYWJpPWFwY3MtZ251KQorUExBVEZPUk1fQ1BQRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tbm8tdGh1bWItaW50ZXJ3b3JrLCkKIFBMQVRGT1JNX1JFTEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbXNob3J0LWxvYWQtYnl0ZXMsJChjYWxsIGNjLW9wdGlvbiwtbWFsaWdubWVudC10cmFwcywpKQpkaWZmIC0tZ2l0IGEvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9pMmMuYyBiL2NwdS9hcm05MjB0L2F0OTFybTkyMDAvaTJjLmMKaW5kZXggYjY4YzVkZC4uOWZkNzJkMyAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9pMmMuYworKysgYi9jcHUvYXJtOTIwdC9hdDkxcm05MjAwL2kyYy5jCkBAIC0xODksMjAgKzE4OSw2IEBACiAJcmV0dXJuOwogfQogCi11Y2hhciBpMmNfcmVnX3JlYWQodWNoYXIgaTJjX2FkZHIsIHVjaGFyIHJlZykKLXsKLQl1bnNpZ25lZCBjaGFyIGJ1ZjsKLQotCWkyY19yZWFkKGkyY19hZGRyLCByZWcsIDEsICZidWYsIDEpOwotCi0JcmV0dXJuKGJ1Zik7Ci19Ci0KLXZvaWQgaTJjX3JlZ193cml0ZSh1Y2hhciBpMmNfYWRkciwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCi17Ci0JaTJjX3dyaXRlKGkyY19hZGRyLCByZWcsIDEsICZ2YWwsIDEpOwotfQotCiBpbnQgaTJjX3NldF9idXNfc3BlZWQodW5zaWduZWQgaW50IHNwZWVkKQogewogCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L2F0OTFybTkyMDAvbG93bGV2ZWxfaW5pdC5TIGIvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9sb3dsZXZlbF9pbml0LlMKaW5kZXggNjZiMDdkYS4uMDkxMzI4NCAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9sb3dsZXZlbF9pbml0LlMKKysrIGIvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9sb3dsZXZlbF9pbml0LlMKQEAgLTM4LDMzICszOCw3IEBACiAgKiB0dXJuIGlzIGJhc2VkIG9uIHRoZSBib290LmJpbiBjb2RlIGZyb20gQVRNRUwKICAqCiAgKi8KLQotLyogZmxhc2ggKi8KLSNkZWZpbmUgTUNfUFVJQQkJMHhGRkZGRkYxMAotI2RlZmluZSBNQ19QVVAJCTB4RkZGRkZGNTAKLSNkZWZpbmUgTUNfUFVFUgkJMHhGRkZGRkY1NAotI2RlZmluZSBNQ19BU1IJCTB4RkZGRkZGMDQKLSNkZWZpbmUgTUNfQUFTUgkJMHhGRkZGRkYwOAotI2RlZmluZSBFQklfQ0ZHUgkweEZGRkZGRjY0Ci0jZGVmaW5lIFNNQ19DU1IwCTB4RkZGRkZGNzAKLQotLyogY2xvY2tzICovCi0jZGVmaW5lIFBMTEFSCQkweEZGRkZGQzI4Ci0jZGVmaW5lIFBMTEJSCQkweEZGRkZGQzJDCi0jZGVmaW5lIE1DS1IJCTB4RkZGRkZDMzAKLQotI2RlZmluZSBBVDkxQ19CQVNFX0NLR1IgMHhGRkZGRkMyMAotI2RlZmluZSBDS0dSX01PUiAwCi0KLS8qIHNkcmFtICovCi0jZGVmaW5lIFBJT0NfQVNSCTB4RkZGRkY4NzAKLSNkZWZpbmUgUElPQ19CU1IJMHhGRkZGRjg3NAotI2RlZmluZSBQSU9DX1BEUgkweEZGRkZGODA0Ci0jZGVmaW5lIEVCSV9DU0EJCTB4RkZGRkZGNjAKLSNkZWZpbmUgU0RSQ19DUgkJMHhGRkZGRkY5OAotI2RlZmluZSBTRFJDX01SCQkweEZGRkZGRjkwCi0jZGVmaW5lIFNEUkNfVFIJCTB4RkZGRkZGOTQKLQorI2luY2x1ZGUgPGFzbS9hcmNoL0FUOTFSTTkyMDAuaD4KIAogX01URVhUX0JBU0U6CiAjdW5kZWYgU1RBUlRfRlJPTV9NRU0KQEAgLTg0LDcgKzU4LDcgQEAKICNlbHNlCiAJbGRyICAgICByMCwgPTB4MDAwMEZGMDAJCS8qIERpc2FibGUgbWFpbiBvc2NpbGxhdG9yLCBPU0NPVU5UID0gMHhGRiAqLwogI2VuZGlmCi0Jc3RyICAgICByMCwgW3IxLCAjQ0tHUl9NT1JdCisJc3RyICAgICByMCwgW3IxLCAjQVQ5MUNfQ0tHUl9NT1JdCiAJLyogQWRkIGxvb3AgdG8gY29tcGVuc2F0ZSBNYWluIE9zY2lsbGF0b3Igc3RhcnR1cCB0aW1lICovCiAJbGRyICAgICByMCwgPTB4MDAwMDAwMTAKIExvb3BPc2M6CkBAIC0xMzQsNzIgKzEwOCw3MiBAQAogCS5sdG9yZwogCiBTTVJEQVRBOgotCS53b3JkIE1DX1BVSUEKLQkud29yZCBNQ19QVUlBX1ZBTAotCS53b3JkIE1DX1BVUAotCS53b3JkIE1DX1BVUF9WQUwKLQkud29yZCBNQ19QVUVSCi0JLndvcmQgTUNfUFVFUl9WQUwKLQkud29yZCBNQ19BU1IKLQkud29yZCBNQ19BU1JfVkFMCi0JLndvcmQgTUNfQUFTUgotCS53b3JkIE1DX0FBU1JfVkFMCi0JLndvcmQgRUJJX0NGR1IKLQkud29yZCBFQklfQ0ZHUl9WQUwKLQkud29yZCBTTUNfQ1NSMAotCS53b3JkIFNNQ19DU1IwX1ZBTAotCS53b3JkIFBMTEFSCi0JLndvcmQgUExMQVJfVkFMCi0JLndvcmQgUExMQlIKLQkud29yZCBQTExCUl9WQUwKLQkud29yZCBNQ0tSCi0JLndvcmQgTUNLUl9WQUwKKwkud29yZCBBVDkxQ19NQ19QVUlBCisJLndvcmQgQ09ORklHX1NZU19NQ19QVUlBX1ZBTAorCS53b3JkIEFUOTFDX01DX1BVUAorCS53b3JkIENPTkZJR19TWVNfTUNfUFVQX1ZBTAorCS53b3JkIEFUOTFDX01DX1BVRVIKKwkud29yZCBDT05GSUdfU1lTX01DX1BVRVJfVkFMCisJLndvcmQgQVQ5MUNfTUNfQVNSCisJLndvcmQgQ09ORklHX1NZU19NQ19BU1JfVkFMCisJLndvcmQgQVQ5MUNfTUNfQUFTUgorCS53b3JkIENPTkZJR19TWVNfTUNfQUFTUl9WQUwKKwkud29yZCBBVDkxQ19FQklfQ0ZHUgorCS53b3JkIENPTkZJR19TWVNfRUJJX0NGR1JfVkFMCisJLndvcmQgQVQ5MUNfU01DX0NTUjAKKwkud29yZCBDT05GSUdfU1lTX1NNQ19DU1IwX1ZBTAorCS53b3JkIEFUOTFDX1BMTEFSCisJLndvcmQgQ09ORklHX1NZU19QTExBUl9WQUwKKwkud29yZCBBVDkxQ19QTExCUgorCS53b3JkIENPTkZJR19TWVNfUExMQlJfVkFMCisJLndvcmQgQVQ5MUNfTUNLUgorCS53b3JkIENPTkZJR19TWVNfTUNLUl9WQUwKIAkvKiBTTVJEQVRBIGlzIDgwIGJ5dGVzIGxvbmcgKi8KIAkvKiBoZXJlIHRoZXJlJ3MgYSBkZWxheSBvZiAxMDAgKi8KIFNNUkRBVEExOgotCS53b3JkIFBJT0NfQVNSCi0JLndvcmQgUElPQ19BU1JfVkFMCi0JLndvcmQgUElPQ19CU1IKLQkud29yZCBQSU9DX0JTUl9WQUwKLQkud29yZCBQSU9DX1BEUgotCS53b3JkIFBJT0NfUERSX1ZBTAotCS53b3JkIEVCSV9DU0EKLQkud29yZCBFQklfQ1NBX1ZBTAotCS53b3JkIFNEUkNfQ1IKLQkud29yZCBTRFJDX0NSX1ZBTAotCS53b3JkIFNEUkNfTVIKLQkud29yZCBTRFJDX01SX1ZBTAotCS53b3JkIFNEUkFNCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQ19NUgotCS53b3JkIFNEUkNfTVJfVkFMMQotCS53b3JkIFNEUkFNCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS53b3JkIFNEUkFNCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJBTQotCS53b3JkIFNEUkFNX1ZBTAotCS53b3JkIFNEUkFNCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJDX01SCi0JLndvcmQgU0RSQ19NUl9WQUwyCi0JLndvcmQgU0RSQU0xCi0JLndvcmQgU0RSQU1fVkFMCi0JLndvcmQgU0RSQ19UUgotCS53b3JkIFNEUkNfVFJfVkFMCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKLQkud29yZCBTRFJDX01SCi0JLndvcmQgU0RSQ19NUl9WQUwzCi0JLndvcmQgU0RSQU0KLQkud29yZCBTRFJBTV9WQUwKKwkud29yZCBBVDkxQ19QSU9DX0FTUgorCS53b3JkIENPTkZJR19TWVNfUElPQ19BU1JfVkFMCisJLndvcmQgQVQ5MUNfUElPQ19CU1IKKwkud29yZCBDT05GSUdfU1lTX1BJT0NfQlNSX1ZBTAorCS53b3JkIEFUOTFDX1BJT0NfUERSCisJLndvcmQgQ09ORklHX1NZU19QSU9DX1BEUl9WQUwKKwkud29yZCBBVDkxQ19FQklfQ1NBCisJLndvcmQgQ09ORklHX1NZU19FQklfQ1NBX1ZBTAorCS53b3JkIEFUOTFDX1NEUkNfQ1IKKwkud29yZCBDT05GSUdfU1lTX1NEUkNfQ1JfVkFMCisJLndvcmQgQVQ5MUNfU0RSQ19NUgorCS53b3JkIENPTkZJR19TWVNfU0RSQ19NUl9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBBVDkxQ19TRFJDX01SCisJLndvcmQgQ09ORklHX1NZU19TRFJDX01SX1ZBTDEKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBBVDkxQ19TRFJDX01SCisJLndvcmQgQ09ORklHX1NZU19TRFJDX01SX1ZBTDIKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNMQorCS53b3JkIENPTkZJR19TWVNfU0RSQU1fVkFMCisJLndvcmQgQVQ5MUNfU0RSQ19UUgorCS53b3JkIENPTkZJR19TWVNfU0RSQ19UUl9WQUwKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKKwkud29yZCBBVDkxQ19TRFJDX01SCisJLndvcmQgQ09ORklHX1NZU19TRFJDX01SX1ZBTDMKKwkud29yZCBDT05GSUdfU1lTX1NEUkFNCisJLndvcmQgQ09ORklHX1NZU19TRFJBTV9WQUwKIAkvKiBTTVJEQVRBMSBpcyAxNzYgYnl0ZXMgbG9uZyAqLwogI2VuZGlmIC8qIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQgKi8KZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L2NvbmZpZy5tayBiL2NwdS9hcm05MjB0L2NvbmZpZy5tawppbmRleCA4ZGI0YWRiLi4zODcxOGEzIDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9jb25maWcubWsKKysrIGIvY3B1L2FybTkyMHQvY29uZmlnLm1rCkBAIC0zMSw0ICszMSw1IEBACiAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFBMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbWFwY3MtMzIsLW1hYmk9YXBjcy1nbnUpCitQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1uby10aHVtYi1pbnRlcndvcmssKQogUExBVEZPUk1fUkVMRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tc2hvcnQtbG9hZC1ieXRlcywkKGNhbGwgY2Mtb3B0aW9uLC1tYWxpZ25tZW50LXRyYXBzLCkpCmRpZmYgLS1naXQgYS9jcHUvYXJtOTI1dC9jb25maWcubWsgYi9jcHUvYXJtOTI1dC9jb25maWcubWsKaW5kZXggOGRiNGFkYi4uMzg3MThhMyAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNXQvY29uZmlnLm1rCisrKyBiL2NwdS9hcm05MjV0L2NvbmZpZy5tawpAQCAtMzEsNCArMzEsNSBAQAogIwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1hcGNzLTMyLC1tYWJpPWFwY3MtZ251KQorUExBVEZPUk1fQ1BQRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tbm8tdGh1bWItaW50ZXJ3b3JrLCkKIFBMQVRGT1JNX1JFTEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbXNob3J0LWxvYWQtYnl0ZXMsJChjYWxsIGNjLW9wdGlvbiwtbWFsaWdubWVudC10cmFwcywpKQpkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNmVqcy9hdDkxL3VzYi5jIGIvY3B1L2FybTkyNmVqcy9hdDkxL3VzYi5jCmluZGV4IDJmNWMzMzcuLmExNWFiMTYgMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjZlanMvYXQ5MS91c2IuYworKysgYi9jcHUvYXJtOTI2ZWpzL2F0OTEvdXNiLmMKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19BVDkxQ0FQOSkgfHwgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTkyNjApIHx8IFwKICAgICBkZWZpbmVkKENPTkZJR19BVDkxU0FNOTI2MykKIAkvKiBFbmFibGUgUExMQiAqLwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfQ0tHUl9QTExCUiwgQ0ZHX0FUOTFfUExMQik7CisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9DS0dSX1BMTEJSLCBDT05GSUdfU1lTX0FUOTFfUExMQik7CiAJd2hpbGUgKChhdDkxX3N5c19yZWFkKEFUOTFfUE1DX1NSKSAmIEFUOTFfUE1DX0xPQ0tCKSAhPSBBVDkxX1BNQ19MT0NLQikKIAkJOwogI2VuZGlmCmRpZmYgLS1naXQgYS9jcHUvYXJtOTI2ZWpzL2NvbmZpZy5tayBiL2NwdS9hcm05MjZlanMvY29uZmlnLm1rCmluZGV4IDg0YjY4YWUuLmE1N2QwM2EgMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjZlanMvY29uZmlnLm1rCisrKyBiL2NwdS9hcm05MjZlanMvY29uZmlnLm1rCkBAIC0zMSw0ICszMSw1IEBACiAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFBMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbWFwY3MtMzIsLW1hYmk9YXBjcy1nbnUpCitQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1uby10aHVtYi1pbnRlcndvcmssKQogUExBVEZPUk1fUkVMRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tc2hvcnQtbG9hZC1ieXRlcywkKGNhbGwgY2Mtb3B0aW9uLC1tYWxpZ25tZW50LXRyYXBzLCkpCmRpZmYgLS1naXQgYS9jcHUvYXJtOTI2ZWpzL2RhdmluY2kvaTJjLmMgYi9jcHUvYXJtOTI2ZWpzL2RhdmluY2kvaTJjLmMKaW5kZXggZDIyMGE0Yy4uM2JhMjBlZiAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2kyYy5jCisrKyBiL2NwdS9hcm05MjZlanMvZGF2aW5jaS9pMmMuYwpAQCAtMzMxLDIxICszMzEsNCBAQAogCXJldHVybigwKTsKIH0KIAotCi11X2ludDhfdCBpMmNfcmVnX3JlYWQodV9pbnQ4X3QgY2hpcCwgdV9pbnQ4X3QgcmVnKQotewotCXVfaW50OF90CXRtcDsKLQotCWkyY19yZWFkKGNoaXAsIHJlZywgMSwgJnRtcCwgMSk7Ci0JcmV0dXJuKHRtcCk7Ci19Ci0KLQotdm9pZCBpMmNfcmVnX3dyaXRlKHVfaW50OF90IGNoaXAsIHVfaW50OF90IHJlZywgdV9pbnQ4X3QgdmFsKQotewotCXVfaW50OF90CXRtcDsKLQotCWkyY193cml0ZShjaGlwLCByZWcsIDEsICZ0bXAsIDEpOwotfQotCiAjZW5kaWYgLyogQ09ORklHX0RSSVZFUl9EQVZJTkNJX0kyQyAqLwpkaWZmIC0tZ2l0IGEvY3B1L2FybTk0NmVzL2NvbmZpZy5tayBiL2NwdS9hcm05NDZlcy9jb25maWcubWsKaW5kZXggZjc3NGM3ZS4uNjE5MGUxNiAxMDA2NDQKLS0tIGEvY3B1L2FybTk0NmVzL2NvbmZpZy5taworKysgYi9jcHUvYXJtOTQ2ZXMvY29uZmlnLm1rCkBAIC0zMSw0ICszMSw1IEBACiAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFBMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbWFwY3MtMzIsLW1hYmk9YXBjcy1nbnUpCitQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1uby10aHVtYi1pbnRlcndvcmssKQogUExBVEZPUk1fUkVMRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tc2hvcnQtbG9hZC1ieXRlcywkKGNhbGwgY2Mtb3B0aW9uLC1tYWxpZ25tZW50LXRyYXBzLCkpCmRpZmYgLS1naXQgYS9jcHUvYXJtX2ludGNtL2NvbmZpZy5tayBiL2NwdS9hcm1faW50Y20vY29uZmlnLm1rCmluZGV4IGY3NzRjN2UuLjYxOTBlMTYgMTAwNjQ0Ci0tLSBhL2NwdS9hcm1faW50Y20vY29uZmlnLm1rCisrKyBiL2NwdS9hcm1faW50Y20vY29uZmlnLm1rCkBAIC0zMSw0ICszMSw1IEBACiAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFBMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbWFwY3MtMzIsLW1hYmk9YXBjcy1nbnUpCitQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1uby10aHVtYi1pbnRlcndvcmssKQogUExBVEZPUk1fUkVMRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tc2hvcnQtbG9hZC1ieXRlcywkKGNhbGwgY2Mtb3B0aW9uLC1tYWxpZ25tZW50LXRyYXBzLCkpCmRpZmYgLS1naXQgYS9jcHUvYmxhY2tmaW4vaTJjLmMgYi9jcHUvYmxhY2tmaW4vaTJjLmMKaW5kZXggNjBmMDNkNC4uMmEzZTIyMyAxMDA2NDQKLS0tIGEvY3B1L2JsYWNrZmluL2kyYy5jCisrKyBiL2NwdS9ibGFja2Zpbi9pMmMuYwpAQCAtNDI1LDIwICs0MjUsNCBAQAogCiB9CiAKLXVjaGFyIGkyY19yZWdfcmVhZCh1Y2hhciBjaGlwLCB1Y2hhciByZWcpCi17Ci0JdWNoYXIgYnVmOwotCi0JUFJJTlREKCJpMmNfcmVnX3JlYWQ6IGNoaXA9MHglMDJ4LCByZWc9MHglMDJ4XG4iLCBjaGlwLCByZWcpOwotCWkyY19yZWFkKGNoaXAsIHJlZywgMCwgJmJ1ZiwgMSk7Ci0JcmV0dXJuIChidWYpOwotfQotCi12b2lkIGkyY19yZWdfd3JpdGUodWNoYXIgY2hpcCwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCi17Ci0JUFJJTlREKCJpMmNfcmVnX3dyaXRlOiBjaGlwPTB4JTAyeCwgcmVnPTB4JTAyeCwgdmFsPTB4JTAyeFxuIiwgY2hpcCwKLQkJCXJlZywgdmFsKTsKLQlpMmNfd3JpdGUoY2hpcCwgcmVnLCAwLCAmdmFsLCAxKTsKLX0KLQogI2VuZGlmIC8qIENPTkZJR19IQVJEX0kyQyAqLwpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvTWFrZWZpbGUgYi9jcHUvaTM4Ni9NYWtlZmlsZQppbmRleCA1MDUzNGI2Li5mMjA2NzVhIDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9NYWtlZmlsZQorKysgYi9jcHUvaTM4Ni9NYWtlZmlsZQpAQCAtMjgsNyArMjgsNyBAQAogCiBMSUIJPSAkKG9iailsaWIkKENQVSkuYQogCi1TVEFSVAk9IHN0YXJ0Lm8gc3RhcnQxNi5vIHJlc2V0Lm8KK1NUQVJUCT0gc3RhcnQubyBzdGFydDE2Lm8gcmVzZXR2ZWMubwogQ09CSlMJPSBzZXJpYWwubyBpbnRlcnJ1cHRzLm8gY3B1Lm8gdGltZXIubyBzYzUyMC5vCiBTT0JKUwk9IHNjNTIwX2FzbS5vCiAKZGlmZiAtLWdpdCBhL2NwdS9pMzg2L2NwdS5jIGIvY3B1L2kzODYvY3B1LmMKaW5kZXggNWZkMzdjNy4uYjlhZjVmOCAxMDA2NDQKLS0tIGEvY3B1L2kzODYvY3B1LmMKKysrIGIvY3B1L2kzODYvY3B1LmMKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxhc20vaW50ZXJydXB0Lmg+CiAKIGludCBjcHVfaW5pdCh2b2lkKQogewpAQCAtNjQsMyArNjUsMTkgQEAKIAlhc20oIndiaW52ZFxuIik7CiAJcmV0dXJuOwogfQorCit2b2lkIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDApKSkgZ2VuZXJhdGVfZ3BmKHZvaWQpOworCisvKiBzZWdtZW50IDB4NzAgaXMgYW4gYXJiaXRyYXJ5IHNlZ21lbnQgd2hpY2ggZG9lcyBub3QgZXhpc3QgKi8KK2FzbSgiLmdsb2JsIGdlbmVyYXRlX2dwZlxuIgorICAgICJnZW5lcmF0ZV9ncGY6XG4iCisgICAgImxqbXAgICAkMHg3MCwgJDB4NDcxMTQ3MTFcbiIpOworCit2b2lkIF9fcmVzZXRfY3B1KHVsb25nIGFkZHIpCit7CisJcHJpbnRmKCJSZXNldHRpbmcgdXNpbmcgaTM4NiBUcmlwbGUgRmF1bHRcbiIpOworCXNldF92ZWN0b3IoMTMsIGdlbmVyYXRlX2dwZik7ICAvKiBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgaGFuZGxlciAqLworCXNldF92ZWN0b3IoOCwgZ2VuZXJhdGVfZ3BmKTsgICAvKiBkb3VibGUgZmF1bHQgaGFuZGxlciAqLworCWdlbmVyYXRlX2dwZigpOyAgICAgICAgICAgICAgICAvKiBzdGFydCB0aGUgc2hvdyAqLworfQordm9pZCByZXNldF9jcHUodWxvbmcgYWRkcikgX19hdHRyaWJ1dGVfXygod2VhaywgYWxpYXMoIl9fcmVzZXRfY3B1IikpKTsKZGlmZiAtLWdpdCBhL2NwdS9pMzg2L2ludGVycnVwdHMuYyBiL2NwdS9pMzg2L2ludGVycnVwdHMuYwppbmRleCBmNmRiY2NhLi5iYWRiMzBiIDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9pbnRlcnJ1cHRzLmMKKysrIGIvY3B1L2kzODYvaW50ZXJydXB0cy5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2k4MjU5Lmg+CiAjaW5jbHVkZSA8YXNtL2libXBjLmg+CisjaW5jbHVkZSA8YXNtL2ludGVycnVwdC5oPgogCiAKIHN0cnVjdCBpZHRfZW50cnkgewpAQCAtMzc2LDcgKzM3Nyw3IEBACiAJIi5sb25nCWlkdFxuIgkgLyogb2Zmc2V0ICovCiAJIi53b3JkCTB4MThcbiIpOy8qIGRhdGEgc2VnbWVudCAqLwogCi1zdGF0aWMgdm9pZCBzZXRfdmVjdG9yKGludCBpbnRudW0sIHZvaWQgKnJvdXRpbmUpCit2b2lkIHNldF92ZWN0b3IoaW50IGludG51bSwgdm9pZCAqcm91dGluZSkKIHsKIAlpZHRbaW50bnVtXS5iYXNlX2hpZ2ggPSAodTE2KSgodTMyKShyb3V0aW5lKT4+MTYpOwogCWlkdFtpbnRudW1dLmJhc2VfbG93ID0gKHUxNikoKHUzMikocm91dGluZSkmMHhmZmZmKTsKQEAgLTUwNywxOSArNTA4LDMgQEAKIAogCXJldHVybiAoZmxhZ3MmMHgyMDApOyAvKiBJRSBmbGFncyBpcyBiaXQgOSAqLwogfQotCi0KLSNpZmRlZiBDT05GSUdfU1lTX1JFU0VUX0dFTkVSSUMKLQotdm9pZCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgwKSkpIGdlbmVyYXRlX2dwZih2b2lkKTsKLWFzbSgiLmdsb2JsIGdlbmVyYXRlX2dwZlxuIgotICAgICJnZW5lcmF0ZV9ncGY6XG4iCi0gICAgImxqbXAgICAkMHg3MCwgJDB4NDcxMTQ3MTFcbiIpOyAvKiBzZWdtZW50IDB4NzAgaXMgYW4gYXJiaXRyYXJ5IHNlZ21lbnQgd2hpY2ggZG9lcyBub3QKLQkJCQkgICAgKiBleGlzdCAqLwotdm9pZCByZXNldF9jcHUodWxvbmcgYWRkcikKLXsKLQlzZXRfdmVjdG9yKDEzLCBnZW5lcmF0ZV9ncGYpOyAgLyogZ2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IGhhbmRsZXIgKi8KLQlzZXRfdmVjdG9yKDgsIGdlbmVyYXRlX2dwZik7ICAgLyogZG91YmxlIGZhdWx0IGhhbmRsZXIgKi8KLQlnZW5lcmF0ZV9ncGYoKTsgICAgICAgICAgICAgICAgLyogc3RhcnQgdGhlIHNob3cgKi8KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvcmVzZXQuUyBiL2NwdS9pMzg2L3Jlc2V0dmVjLlMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gY3B1L2kzODYvcmVzZXQuUwpyZW5hbWUgdG8gY3B1L2kzODYvcmVzZXR2ZWMuUwppbmRleCAwN2E3Mzg0Li5kOTIyMmRkIDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9yZXNldC5TCisrKyBiL2NwdS9pMzg2L3Jlc2V0dmVjLlMKQEAgLTI2LDcgKzI2LDcgQEAKIAogLmV4dGVybiBzdGFydDE2CiAKLS5zZWN0aW9uIC5yZXNldCwgImF4IgorLnNlY3Rpb24gLnJlc2V0dmVjLCAiYXgiCiAuY29kZTE2CiByZXNldF92ZWN0b3I6CiAJY2xpCmRpZmYgLS1naXQgYS9jcHUvaTM4Ni9zYzUyMC5jIGIvY3B1L2kzODYvc2M1MjAuYwppbmRleCBjYjZiYzAzLi4xMmU4ZjM4IDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9zYzUyMC5jCisrKyBiL2NwdS9pMzg2L3NjNTIwLmMKQEAgLTI1LDkgKzI1LDYgQEAKICAqIGJ1dCBpZGVwZW5kZW50IG9mIGltcGxlbWVudGF0aW9uICovCiAKICNpbmNsdWRlIDxjb25maWcuaD4KLQotI2lmZGVmIENPTkZJR19TQzUyMAotCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8cGNpLmg+CkBAIC01MDcsNCArNTA0LDEzIEBACiAJcmV0dXJuIHJlYWRfbW1jcl9ieXRlKFNDNTIwX1NTSVJDVik7CiB9CiAKLSNlbmRpZiAvKiBDT05GSUdfU0M1MjAgKi8KKyNpZmRlZiBDT05GSUdfU1lTX1JFU0VUX1NDNTIwCit2b2lkIHJlc2V0X2NwdSh1bG9uZyBhZGRyKQoreworCXByaW50ZigiUmVzZXR0aW5nIHVzaW5nIFNDNTIwIE1NQ1JcbiIpOworCS8qIFdyaXRlIGEgJzEnIHRvIHRoZSBTWVNfUlNUIG9mIHRoZSBSRVNDRkcgTU1DUiAqLworCXdyaXRlX21tY3Jfd29yZChTQzUyMF9SRVNDRkcsIDB4MDAwMSk7CisKKwkvKiBOT1RSRUFDSEVEICovCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NwdS9saDdhNDB4L2NvbmZpZy5tayBiL2NwdS9saDdhNDB4L2NvbmZpZy5tawppbmRleCAxMGU3NTViLi4zMmZkMWQxIDEwMDY0NAotLS0gYS9jcHUvbGg3YTQweC9jb25maWcubWsKKysrIGIvY3B1L2xoN2E0MHgvY29uZmlnLm1rCkBAIC0zMSw0ICszMSw1IEBACiAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogUExBVEZPUk1fQ1BQRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tYXBjcy0zMiwtbWFiaT1hcGNzLWdudSkKK1BMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbW5vLXRodW1iLWludGVyd29yaywpCiBQTEFURk9STV9SRUxGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1zaG9ydC1sb2FkLWJ5dGVzLCQoY2FsbCBjYy1vcHRpb24sLW1hbGlnbm1lbnQtdHJhcHMsKSkKZGlmZiAtLWdpdCBhL2NwdS9tY2Y1MngyL2NwdV9pbml0LmMgYi9jcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jCmluZGV4IDE4MzA4YzguLjY2ZjkxNjQgMTAwNjQ0Ci0tLSBhL2NwdS9tY2Y1MngyL2NwdV9pbml0LmMKKysrIGIvY3B1L21jZjUyeDIvY3B1X2luaXQuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAJbWJhcjJfd3JpdGVCeXRlKE1DRlNJTV9JTlRCQVNFLCAweDQwKTsJLyogQmFzZSBpbnRlcnJ1cHRzIGF0IDY0ICovCiAJbWJhcjJfd3JpdGVCeXRlKE1DRlNJTV9TUFVSVkVDLCAweDAwKTsKIAotCS8qbWJhcjJfd3JpdGVMb25nKE1DRlNJTV9JREVDT05GSUcxLCAweDAwMDAwMDIwKTsgKi8vKiBFbmFibGUgYSAxIGN5Y2xlIHByZS1kcml2ZSBjeWNsZSBvbiBDUzEgKi8KKwkvKm1iYXIyX3dyaXRlTG9uZyhNQ0ZTSU1fSURFQ09ORklHMSwgMHgwMDAwMDAyMCk7ICovIC8qIEVuYWJsZSBhIDEgY3ljbGUgcHJlLWRyaXZlIGN5Y2xlIG9uIENTMSAqLwogCiAJLyogRmxleEJ1cyBDaGlwc2VsZWN0ICovCiAJaW5pdF9mYmNzKCk7CmRpZmYgLS1naXQgYS9jcHUvbWljcm9ibGF6ZS9jYWNoZS5jIGIvY3B1L21pY3JvYmxhemUvY2FjaGUuYwppbmRleCA0Yjc4NjZmLi4zYjdjNGQ0IDEwMDY0NAotLS0gYS9jcHUvbWljcm9ibGF6ZS9jYWNoZS5jCisrKyBiL2NwdS9taWNyb2JsYXplL2NhY2hlLmMKQEAgLTI1LDggKzI1LDYgQEAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vYXNtLmg+CiAKLSNpZiBkZWZpbmVkKENPTkZJR19DTURfQ0FDSEUpCi0KIGludCBkY2FjaGVfc3RhdHVzICh2b2lkKQogewogCWludCBpID0gMDsKQEAgLTYyLDQgKzYwLDMgQEAKIHZvaWQJZGNhY2hlX2Rpc2FibGUodm9pZCkgewogCU1TUkNMUigweDgwKTsKIH0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L21pcHMvc3RhcnQuUyBiL2NwdS9taXBzL3N0YXJ0LlMKaW5kZXggNmEyMjMwMi4uNTdkYjU4OSAxMDA2NDQKLS0tIGEvY3B1L21pcHMvc3RhcnQuUworKysgYi9jcHUvbWlwcy9zdGFydC5TCkBAIC0yNDMsOSArMjQzLDExIEBACiAJbXRjMAl6ZXJvLCBDUDBfQ09VTlQKIAltdGMwCXplcm8sIENQMF9DT01QQVJFCiAKKyNpZiAhZGVmaW5lZChDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUKQogCS8qIENPTkZJRzAgcmVnaXN0ZXIgKi8KIAlsaQl0MCwgQ09ORl9DTV9VTkNBQ0hFRAogCW10YzAJdDAsIENQMF9DT05GSUcKKyNlbmRpZiAvKiAhQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCAqLwogCiAJLyogSW5pdGlhbGl6ZSAkZ3AuCiAJICovCkBAIC0yNTUsNiArMjU3LDcgQEAKIDE6CiAJbHcJZ3AsIDAocmEpCiAKKyNpZiAhZGVmaW5lZChDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUKQogCS8qIEluaXRpYWxpemUgYW55IGV4dGVybmFsIG1lbW9yeS4KIAkgKi8KIAlsYQl0OSwgbG93bGV2ZWxfaW5pdApAQCAtMjcxLDYgKzI3NCw3IEBACiAJICovCiAJbGkJdDAsIENPTkZfQ01fQ0FDSEFCTEVfTk9OQ09IRVJFTlQKIAltdGMwCXQwLCBDUDBfQ09ORklHCisjZW5kaWYgLyogIUNPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQgKi8KIAogCS8qIFNldCB1cCB0ZW1wb3Jhcnkgc3RhY2suCiAJICovCkBAIC0zMDcsNiArMzExLDcgQEAKIAlsYQl0MywgaW5fcmFtCiAJbHcJdDIsIC0xMih0MykJLyogdDIgPC0tIHVib290X2VuZF9kYXRhCSovCiAJbW92ZQl0MSwgYTIKKwltb3ZlCXMyLCBhMgkJLyogczIgPC0tIGRlc3RpbmF0aW9uIGFkZHJlc3MJKi8KIAogCS8qCiAJICogRml4ICRncDoKQEAgLTMxNiwxMyArMzIxLDIxIEBACiAJbW92ZQl0NiwgZ3AKIAlzdWIJZ3AsIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCiAJYWRkCWdwLCBhMgkJLyogZ3Agbm93IGFkanVzdGVkCQkqLwotCXN1Ygl0NiwgZ3AsIHQ2CS8qIHQ2IDwtLSByZWxvY2F0aW9uIG9mZnNldAkqLworCXN1YglzMSwgZ3AsIHQ2CS8qIHMxIDwtLSByZWxvY2F0aW9uIG9mZnNldAkqLwogCiAJLyoKIAkgKiB0MCA9IHNvdXJjZSBhZGRyZXNzCiAJICogdDEgPSB0YXJnZXQgYWRkcmVzcwogCSAqIHQyID0gc291cmNlIGVuZCBhZGRyZXNzCiAJICovCisKKwkvKgorCSAqIFNhdmUgZGVzdGluYXRpb24gYWRkcmVzcyBhbmQgc2l6ZSBmb3IgbGF0ZXIgdXNhZ2UgaW4gZmx1c2hfY2FjaGUoKQorCSAqLworCW1vdmUJczAsIGExCQkvKiBzYXZlIGdkIGluIHMwCQkqLworCW1vdmUJYTAsIHQxCQkvKiBhMCA8LS0gZGVzdGluYXRpb24gYWRkcgkqLworCXN1YglhMSwgdDIsIHQwCS8qIGExIDwtLSBzaXplCQkJKi8KKwogCS8qIE9uIHRoZSBwdXJwbGUgYm9hcmQgd2UgY29weSB0aGUgY29kZSBlYXJsaWVyIGluIGEgc3BlY2lhbCB3YXkKIAkgKiBpbiBvcmRlciB0byBzb2x2ZSBmbGFzaCBwcm9ibGVtcwogCSAqLwpAQCAtMzM4LDkgKzM1MSwxNCBAQAogCS8qIElmIGNhY2hlcyB3ZXJlIGVuYWJsZWQsIHdlIHdvdWxkIGhhdmUgdG8gZmx1c2ggdGhlbSBoZXJlLgogCSAqLwogCisJLyogYTAgJiBhMSBhcmUgYWxyZWFkeSBzZXQgdXAgZm9yIGZsdXNoX2NhY2hlKHN0YXJ0LCBzaXplKSAqLworCWxhCXQ5LCBmbHVzaF9jYWNoZQorCWphbHIJdDkKKwlub3AKKwogCS8qIEp1bXAgdG8gd2hlcmUgd2UndmUgcmVsb2NhdGVkIG91cnNlbHZlcy4KIAkgKi8KLQlhZGRpCXQwLCBhMiwgaW5fcmFtIC0gX3N0YXJ0CisJYWRkaQl0MCwgczIsIGluX3JhbSAtIF9zdGFydAogCWpyCXQwCiAJbm9wCiAKQEAgLTM2Nyw3ICszODUsNyBAQAogMToKIAlsdwl0MSwgMCh0NCkKIAliZXF6CXQxLCAyZgotCWFkZAl0MSwgdDYKKwlhZGQJdDEsIHMxCiAJc3cJdDEsIDAodDQpCiAyOgogCWFkZGkJdDIsIDEKQEAgLTM3OCw4ICszOTYsOCBAQAogCSAqLwogCWx3CXQxLCAtMTIodDApCS8qIHQxIDwtLSB1Ym9vdF9lbmRfZGF0YQkqLwogCWx3CXQyLCAtOCh0MCkJLyogdDIgPC0tIHVib290X2VuZAkJKi8KLQlhZGQJdDEsIHQ2CQkvKiBhZGp1c3QgcG9pbnRlcnMJCSovCi0JYWRkCXQyLCB0NgorCWFkZAl0MSwgczEJCS8qIGFkanVzdCBwb2ludGVycwkJKi8KKwlhZGQJdDIsIHMxCiAKIAlzdWIJdDEsIDQKIDE6CkBAIC0zODcsMTAgKzQwNSwxMCBAQAogCWJsdGwJdDEsIHQyLCAxYgogCXN3CXplcm8sIDAodDEpCS8qIGRlbGF5IHNsb3QJCQkqLwogCi0JbW92ZQlhMCwgYTEKKwltb3ZlCWEwLCBzMAkJLyogYTAgPC0tIGdkCQkJKi8KIAlsYQl0OSwgYm9hcmRfaW5pdF9yCiAJanIJdDkKLQltb3ZlCWExLCBhMgkJLyogZGVsYXkgc2xvdAkJCSovCisJbW92ZQlhMSwgczIJCS8qIGRlbGF5IHNsb3QJCQkqLwogCiAJLmVuZAlyZWxvY2F0ZV9jb2RlCiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM1MTJ4L2kyYy5jIGIvY3B1L21wYzUxMngvaTJjLmMKaW5kZXggNzdhNmYwZC4uNGY2YmM4NiAxMDA2NDQKLS0tIGEvY3B1L21wYzUxMngvaTJjLmMKKysrIGIvY3B1L21wYzUxMngvaTJjLmMKQEAgLTM4MiwyMyArMzgyLDYgQEAKIAlyZXR1cm4gcmV0OwogfQogCi11Y2hhciBpMmNfcmVnX3JlYWQgKHVjaGFyIGNoaXAsIHVjaGFyIHJlZykKLXsKLQl1Y2hhciBidWY7Ci0KLQlpMmNfcmVhZCAoY2hpcCwgcmVnLCAxLCAmYnVmLCAxKTsKLQotCXJldHVybiBidWY7Ci19Ci0KLXZvaWQgaTJjX3JlZ193cml0ZSAodWNoYXIgY2hpcCwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCi17Ci0JaTJjX3dyaXRlIChjaGlwLCByZWcsIDEsICZ2YWwsIDEpOwotCi0JcmV0dXJuOwotfQotCi0KIGludCBpMmNfc2V0X2J1c19udW0gKHVuc2lnbmVkIGludCBidXMpCiB7CiAJaWYgKGJ1cyA+PSBJMkNfQlVTX0NOVCkgewpkaWZmIC0tZ2l0IGEvY3B1L21wYzV4eHgvaTJjLmMgYi9jcHUvbXBjNXh4eC9pMmMuYwppbmRleCA0ZDE2YmJlLi43ZDc2Mjc0IDEwMDY0NAotLS0gYS9jcHUvbXBjNXh4eC9pMmMuYworKysgYi9jcHUvbXBjNXh4eC9pMmMuYwpAQCAtMzgwLDIwICszODAsNCBAQAogCXJldHVybiByZXQ7CiB9CiAKLXVjaGFyIGkyY19yZWdfcmVhZCh1Y2hhciBjaGlwLCB1Y2hhciByZWcpCi17Ci0JdWNoYXIgYnVmOwotCi0JaTJjX3JlYWQoY2hpcCwgcmVnLCAxLCAmYnVmLCAxKTsKLQotCXJldHVybiBidWY7Ci19Ci0KLXZvaWQgaTJjX3JlZ193cml0ZSh1Y2hhciBjaGlwLCB1Y2hhciByZWcsIHVjaGFyIHZhbCkKLXsKLQlpMmNfd3JpdGUoY2hpcCwgcmVnLCAxLCAmdmFsLCAxKTsKLQotCXJldHVybjsKLX0KLQogI2VuZGlmCS8qIENPTkZJR19IQVJEX0kyQyAqLwpkaWZmIC0tZ2l0IGEvY3B1L21wYzgyMjAvaTJjLmMgYi9jcHUvbXBjODIyMC9pMmMuYwppbmRleCBkNjc5MzZkLi43NmVjZGYxIDEwMDY0NAotLS0gYS9jcHUvbXBjODIyMC9pMmMuYworKysgYi9jcHUvbXBjODIyMC9pMmMuYwpAQCAtMzg3LDIwICszODcsNCBAQAogCXJldHVybiByZXQ7CiB9CiAKLXVjaGFyIGkyY19yZWdfcmVhZCAodWNoYXIgY2hpcCwgdWNoYXIgcmVnKQotewotCXVjaGFyIGJ1ZjsKLQotCWkyY19yZWFkIChjaGlwLCByZWcsIDEsICZidWYsIDEpOwotCi0JcmV0dXJuIGJ1ZjsKLX0KLQotdm9pZCBpMmNfcmVnX3dyaXRlICh1Y2hhciBjaGlwLCB1Y2hhciByZWcsIHVjaGFyIHZhbCkKLXsKLQlpMmNfd3JpdGUgKGNoaXAsIHJlZywgMSwgJnZhbCwgMSk7Ci0KLQlyZXR1cm47Ci19Ci0KICNlbmRpZiAvKiBDT05GSUdfSEFSRF9JMkMgKi8KZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjR4L01ha2VmaWxlIGIvY3B1L21wYzgyNHgvTWFrZWZpbGUKaW5kZXggZjI0OWRkNy4uYTU3YWQxMiAxMDA2NDQKLS0tIGEvY3B1L21wYzgyNHgvTWFrZWZpbGUKKysrIGIvY3B1L21wYzgyNHgvTWFrZWZpbGUKQEAgLTQ0LDcgKzQ0LDcgQEAKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKIAogJChvYmopYmVkYnVnXzYwM2UuYzoKLQlsbiAtcyAkKHNyYykuLi9tcGM4MjYwL2JlZGJ1Z182MDNlLmMgJChvYmopYmVkYnVnXzYwM2UuYworCWxuIC1zZiAkKHNyYykuLi9tcGM4MjYwL2JlZGJ1Z182MDNlLmMgJChvYmopYmVkYnVnXzYwM2UuYwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjR4L2RyaXZlcnMvaTJjL2kyYy5jIGIvY3B1L21wYzgyNHgvZHJpdmVycy9pMmMvaTJjLmMKaW5kZXggODU0MzQ1ZS4uNjM3YWU0YyAxMDA2NDQKLS0tIGEvY3B1L21wYzgyNHgvZHJpdmVycy9pMmMvaTJjLmMKKysrIGIvY3B1L21wYzgyNHgvZHJpdmVycy9pMmMvaTJjLmMKQEAgLTI2NywxOCArMjY3LDQgQEAKIAlyZXR1cm4gaTJjX3JlYWQgKGNoaXAsIDAsIDEsICh1Y2hhciAqKSAmdG1wLCAxKTsKIH0KIAotdWNoYXIgaTJjX3JlZ19yZWFkICh1Y2hhciBpMmNfYWRkciwgdWNoYXIgcmVnKQotewotCXVjaGFyIGJ1ZlsxXTsKLQotCWkyY19yZWFkIChpMmNfYWRkciwgcmVnLCAxLCBidWYsIDEpOwotCi0JcmV0dXJuIChidWZbMF0pOwotfQotCi12b2lkIGkyY19yZWdfd3JpdGUgKHVjaGFyIGkyY19hZGRyLCB1Y2hhciByZWcsIHVjaGFyIHZhbCkKLXsKLQlpMmNfd3JpdGUgKGkyY19hZGRyLCByZWcsIDEsICZ2YWwsIDEpOwotfQotCiAjZW5kaWYgLyogQ09ORklHX0hBUkRfSTJDICovCmRpZmYgLS1naXQgYS9jcHUvbXBjODI2MC9pMmMuYyBiL2NwdS9tcGM4MjYwL2kyYy5jCmluZGV4IGMxMjQ2MzkuLjM1Y2Y4ZjEgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjYwL2kyYy5jCisrKyBiL2NwdS9tcGM4MjYwL2kyYy5jCkBAIC03NTMsMjIgKzc1Myw2IEBACiAJcmV0dXJuIDA7CiB9CiAKLXVjaGFyCi1pMmNfcmVnX3JlYWQodWNoYXIgY2hpcCwgdWNoYXIgcmVnKQotewotCXVjaGFyIGJ1ZjsKLQotCWkyY19yZWFkKGNoaXAsIHJlZywgMSwgJmJ1ZiwgMSk7Ci0KLQlyZXR1cm4gKGJ1Zik7Ci19Ci0KLXZvaWQKLWkyY19yZWdfd3JpdGUodWNoYXIgY2hpcCwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCi17Ci0JaTJjX3dyaXRlKGNoaXAsIHJlZywgMSwgJnZhbCwgMSk7Ci19Ci0KICNpZiBkZWZpbmVkKENPTkZJR19JMkNfTVVMVElfQlVTKQogLyoKICAqIEZ1bmN0aW9ucyBmb3IgbXVsdGlwbGUgSTJDIGJ1cyBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvY3B1L21wYzgzeHgvTWFrZWZpbGUgYi9jcHUvbXBjODN4eC9NYWtlZmlsZQppbmRleCBmY2I2YTUyLi5kZDM1ZTZiIDEwMDY0NAotLS0gYS9jcHUvbXBjODN4eC9NYWtlZmlsZQorKysgYi9jcHUvbXBjODN4eC9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBAQAogQ09CSlMtJChDT05GSUdfUUUpICs9IHFlX2lvLm8KIENPQkpTLSQoQ09ORklHX0ZTTF9TRVJERVMpICs9IHNlcmRlcy5vCiBDT0JKUy0kKENPTkZJR184M1hYX0dFTkVSSUNfUENJKSArPSBwY2kubworQ09CSlMtJChDT05GSUdfODNYWF9HRU5FUklDX1BDSUUpICs9IHBjaWUubwogQ09CSlMtJChDT05GSUdfT0ZfTElCRkRUKSArPSBmZHQubwogCiBDT0JKUwk6PSAkKENPQkpTLXkpCmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC9wY2kuYyBiL2NwdS9tcGM4M3h4L3BjaS5jCmluZGV4IGFiMDc2MGIuLmU5OTY1ZDcgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L3BjaS5jCisrKyBiL2NwdS9tcGM4M3h4L3BjaS5jCkBAIC0xMTgsMTAgKzExOCwxMiBAQAogI2lmZGVmIENPTkZJR19QQ0lfU0NBTl9TSE9XCiAJcHJpbnRmKCJQQ0k6ICAgQnVzIERldiBWZW5JZCBEZXZJZCBDbGFzcyBJbnRcbiIpOwogI2VuZGlmCisjaWZuZGVmIENPTkZJR19QQ0lTTEFWRQogCS8qCiAJICogSG9zZSBzY2FuLgogCSAqLwogCWhvc2UtPmxhc3RfYnVzbm8gPSBwY2lfaG9zZV9zY2FuKGhvc2UpOworI2VuZGlmCiB9CiAKIC8qCkBAIC0xOTAsNiArMTkyLDkgQEAKIAlwY2lfaG9zZV9yZWFkX2NvbmZpZ193b3JkIChob3NlLCBkZXYsIFBDSV9GVU5DVElPTl9DT05GSUcsICZyZWcxNik7CiAJcmVnMTYgJj0gfihQQ0lfRlVOQ1RJT05fQ0ZHX0xPQ0spOwogCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ193b3JkIChob3NlLCBkZXYsIFBDSV9GVU5DVElPTl9DT05GSUcsIHJlZzE2KTsKKworCS8qIFRoZSBjb25maWd1cmF0aW9uIGJpdCBpcyBub3cgdW5sb2NrZWQsIHNvIHdlIGNhbiBzY2FuIHRoZSBidXMgKi8KKwlob3NlLT5sYXN0X2J1c25vID0gcGNpX2hvc2Vfc2Nhbihob3NlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC9wY2llLmMgYi9jcHUvbXBjODN4eC9wY2llLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNTBiYQotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9tcGM4M3h4L3BjaWUuYwpAQCAtMCwwICsxLDMxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5ICBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBBdXRob3JzOiBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+CisgKiAgICAgICAgICBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8cGNpLmg+CisjaW5jbHVkZSA8bXBjODN4eC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworI2RlZmluZSBQQ0lFX01BWF9CVVNFUyAyCisKKyNpZmRlZiBDT05GSUdfODNYWF9HRU5FUklDX1BDSUVfUkVHSVNURVJfSE9TRVMKKworc3RhdGljIGludCBtcGM4M3h4X3BjaWVfcmVtYXBfY2ZnKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgcGNpX2Rldl90IGRldikKK3sKKwlpbnQgYnVzID0gUENJX0JVUyhkZXYpIC0gaG9zZS0+Zmlyc3RfYnVzbm87CisJaW1tYXBfdCAqaW1tciA9IChpbW1hcF90ICopQ09ORklHX1NZU19JTU1SOworCXBleDgzeHhfdCAqcGV4ID0gJmltbXItPnBjaWV4cFtidXNdOworCXN0cnVjdCBwZXhfb3V0Ym91bmRfd2luZG93ICpvdXRfd2luID0gJnBleC0+YnJpZGdlLnBleF9vdXRib3VuZF93aW5bMF07CisJdTggZGV2Zm4gPSBQQ0lfREVWKGRldikgPDwgMyB8IFBDSV9GVU5DKGRldik7CisJdTMyIGRldl9iYXNlID0gYnVzIDw8IDI0IHwgZGV2Zm4gPDwgMTY7CisKKwlpZiAoaG9zZS0+aW5kaXJlY3RfdHlwZSA9PSBJTkRJUkVDVF9UWVBFX05PX1BDSUVfTElOSykKKwkJcmV0dXJuIC0xOworCS8qCisJICogV29ya2Fyb3VuZCBmb3IgdGhlIEhXIGJ1ZzogZm9yIFR5cGUgMCBjb25maWd1cmUgdHJhbnNhY3Rpb25zIHRoZQorCSAqIFBDSS1FIGNvbnRyb2xsZXIgZG9lcyBub3QgY2hlY2sgdGhlIGRldmljZSBudW1iZXIgYml0cyBhbmQganVzdAorCSAqIGFzc3VtZXMgdGhhdCB0aGUgZGV2aWNlIG51bWJlciBiaXRzIGFyZSAwLgorCSAqLworCWlmIChkZXZmbiAmIDB4ZjgpCisJCXJldHVybiAtMTsKKworCW91dF9sZTMyKCZvdXRfd2luLT50YXJsLCBkZXZfYmFzZSk7CisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgY2ZnX3JlYWQodmFsLCBhZGRyLCB0eXBlLCBvcCkgXAorCWRvIHsgKnZhbCA9IG9wKCh0eXBlKShhZGRyKSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIGNmZ193cml0ZSh2YWwsIGFkZHIsIHR5cGUsIG9wKSBcCisJZG8geyBvcCgodHlwZSAqKShhZGRyKSwgKHZhbCkpOyB9IHdoaWxlICgwKQorCisjZGVmaW5lIFBDSUVfT1AocncsIHNpemUsIHR5cGUsIG9wKQkJCQkJXAorc3RhdGljIGludCBwY2llXyMjcncjI19jb25maWdfIyNzaXplKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwJXAorCQkJCSAgICAgcGNpX2Rldl90IGRldiwgaW50IG9mZnNldCwJCVwKKwkJCQkgICAgIHR5cGUgdmFsKQkJCQlcCit7CQkJCQkJCQkJXAorCWludCByZXQ7CQkJCQkJCVwKKwkJCQkJCQkJCVwKKwlyZXQgPSBtcGM4M3h4X3BjaWVfcmVtYXBfY2ZnKGhvc2UsIGRldik7CQkJXAorCWlmIChyZXQpCQkJCQkJCVwKKwkJcmV0dXJuIHJldDsJCQkJCQlcCisJY2ZnXyMjcncodmFsLCAodm9pZCAqKWhvc2UtPmNmZ19hZGRyICsgb2Zmc2V0LCB0eXBlLCBvcCk7CVwKKwlyZXR1cm4gMDsJCQkJCQkJXAorfQorCitQQ0lFX09QKHJlYWQsIGJ5dGUsIHU4ICosIGluXzgpCitQQ0lFX09QKHJlYWQsIHdvcmQsIHUxNiAqLCBpbl9sZTE2KQorUENJRV9PUChyZWFkLCBkd29yZCwgdTMyICosIGluX2xlMzIpCitQQ0lFX09QKHdyaXRlLCBieXRlLCB1OCwgb3V0XzgpCitQQ0lFX09QKHdyaXRlLCB3b3JkLCB1MTYsIG91dF9sZTE2KQorUENJRV9PUCh3cml0ZSwgZHdvcmQsIHUzMiwgb3V0X2xlMzIpCisKK3N0YXRpYyB2b2lkIG1wYzgzeHhfcGNpZV9yZWdpc3Rlcl9ob3NlKGludCBidXMsIHN0cnVjdCBwY2lfcmVnaW9uICpyZWcsCisJCQkJICAgICAgIHU4IGxpbmspCit7CisJZXh0ZXJuIHZvaWQgZGlzYWJsZV9hZGRyX3RyYW5zKHZvaWQpOyAvKiBzdGFydC5TICovCisJc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciBwY2llX2hvc2VbUENJRV9NQVhfQlVTRVNdOworCXN0YXRpYyBpbnQgbWF4X2J1czsKKwlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UgPSAmcGNpZV9ob3NlW2J1c107CisJaW50IGk7CisKKwkvKgorCSAqIFRoZXJlIGFyZSBubyBzcGFyZSBCQVRzIHRvIHJlbWFwIGFsbCBQQ0ktRSB3aW5kb3dzIGZvciBVLUJvb3QsIHNvCisJICogZGlzYWJsZSB0cmFuc2xhdGlvbnMuIEluIGdlbmVyYWwsIHRoaXMgaXMgbm90IGdyZWF0IHNvbHV0aW9uLCBhbmQKKwkgKiB0aGF0J3Mgd2h5IHdlIGRvbid0IHJlZ2lzdGVyIFBDSS1FIGhvc2VzIGJ5IGRlZmF1bHQuCisJICovCisJZGlzYWJsZV9hZGRyX3RyYW5zKCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrLCByZWcrKykgeworCQlpZiAocmVnLT5zaXplID09IDApCisJCQlicmVhazsKKworCQlob3NlLT5yZWdpb25zW2ldID0gKnJlZzsKKwkJaG9zZS0+cmVnaW9uX2NvdW50Kys7CisJfQorCisJaSA9IGhvc2UtPnJlZ2lvbl9jb3VudCsrOworCWhvc2UtPnJlZ2lvbnNbaV0uYnVzX3N0YXJ0ID0gMDsKKwlob3NlLT5yZWdpb25zW2ldLnBoeXNfc3RhcnQgPSAwOworCWhvc2UtPnJlZ2lvbnNbaV0uc2l6ZSA9IGdkLT5yYW1fc2l6ZTsKKwlob3NlLT5yZWdpb25zW2ldLmZsYWdzID0gUENJX1JFR0lPTl9NRU0gfCBQQ0lfUkVHSU9OX01FTU9SWTsKKworCWkgPSBob3NlLT5yZWdpb25fY291bnQrKzsKKwlob3NlLT5yZWdpb25zW2ldLmJ1c19zdGFydCA9IENPTkZJR19TWVNfSU1NUjsKKwlob3NlLT5yZWdpb25zW2ldLnBoeXNfc3RhcnQgPSBDT05GSUdfU1lTX0lNTVI7CisJaG9zZS0+cmVnaW9uc1tpXS5zaXplID0gMHgxMDAwMDA7CisJaG9zZS0+cmVnaW9uc1tpXS5mbGFncyA9IFBDSV9SRUdJT05fTUVNIHwgUENJX1JFR0lPTl9NRU1PUlk7CisKKwlob3NlLT5maXJzdF9idXNubyA9IG1heF9idXM7CisJaG9zZS0+bGFzdF9idXNubyA9IDB4ZmY7CisKKwlpZiAoYnVzID09IDApCisJCWhvc2UtPmNmZ19hZGRyID0gKHVuc2lnbmVkIGludCAqKUNPTkZJR19TWVNfUENJRTFfQ0ZHX0JBU0U7CisJZWxzZQorCQlob3NlLT5jZmdfYWRkciA9ICh1bnNpZ25lZCBpbnQgKilDT05GSUdfU1lTX1BDSUUyX0NGR19CQVNFOworCisJcGNpX3NldF9vcHMoaG9zZSwKKwkJCXBjaWVfcmVhZF9jb25maWdfYnl0ZSwKKwkJCXBjaWVfcmVhZF9jb25maWdfd29yZCwKKwkJCXBjaWVfcmVhZF9jb25maWdfZHdvcmQsCisJCQlwY2llX3dyaXRlX2NvbmZpZ19ieXRlLAorCQkJcGNpZV93cml0ZV9jb25maWdfd29yZCwKKwkJCXBjaWVfd3JpdGVfY29uZmlnX2R3b3JkKTsKKworCWlmICghbGluaykKKwkJaG9zZS0+aW5kaXJlY3RfdHlwZSA9IElORElSRUNUX1RZUEVfTk9fUENJRV9MSU5LOworCisJcGNpX3JlZ2lzdGVyX2hvc2UoaG9zZSk7CisKKyNpZmRlZiBDT05GSUdfUENJX1NDQU5fU0hPVworCXByaW50ZigiUENJOiAgIEJ1cyBEZXYgVmVuSWQgRGV2SWQgQ2xhc3MgSW50XG4iKTsKKyNlbmRpZgorCS8qCisJICogSG9zZSBzY2FuLgorCSAqLworCWhvc2UtPmxhc3RfYnVzbm8gPSBwY2lfaG9zZV9zY2FuKGhvc2UpOworCW1heF9idXMgPSBob3NlLT5sYXN0X2J1c25vICsgMTsKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgbXBjODN4eF9wY2llX3JlZ2lzdGVyX2hvc2UoaW50IGJ1cywgc3RydWN0IHBjaV9yZWdpb24gKnJlZywKKwkJCQkgICAgICAgdTggbGluaykge30KKworI2VuZGlmIC8qIENPTkZJR184M1hYX0dFTkVSSUNfUENJRV9SRUdJU1RFUl9IT1NFUyAqLworCitzdGF0aWMgdm9pZCBtcGM4M3h4X3BjaWVfaW5pdF9idXMoaW50IGJ1cywgc3RydWN0IHBjaV9yZWdpb24gKnJlZykKK3sKKwlpbW1hcF90ICppbW1yID0gKGltbWFwX3QgKilDT05GSUdfU1lTX0lNTVI7CisJcGV4ODN4eF90ICpwZXggPSAmaW1tci0+cGNpZXhwW2J1c107CisJc3RydWN0IHBleF9vdXRib3VuZF93aW5kb3cgKm91dF93aW47CisJc3RydWN0IHBleF9pbmJvdW5kX3dpbmRvdyAqaW5fd2luOworCXZvaWQgKmhvc2VfY2ZnX2Jhc2U7CisJdW5zaWduZWQgaW50IHJhbV9zejsKKwl1bnNpZ25lZCBpbnQgYmFybDsKKwl1bnNpZ25lZCBpbnQgdGFyOworCXUxNiByZWcxNjsKKwlpbnQgaTsKKworCS8qIEVuYWJsZSBwZXggY3NiIGJyaWRnZSBpbmJvdW5kICYgb3V0Ym91bmQgdHJhbnNhY3Rpb25zICovCisJb3V0X2xlMzIoJnBleC0+YnJpZGdlLnBleF9jc2JfY3RybCwKKwkJaW5fbGUzMigmcGV4LT5icmlkZ2UucGV4X2NzYl9jdHJsKSB8IFBFWF9DU0JfQ1RSTF9PQlBJT0UgfAorCQlQRVhfQ1NCX0NUUkxfSUJQSU9FKTsKKworCS8qIEVuYWJsZSBicmlkZ2Ugb3V0Ym91bmQgKi8KKwlvdXRfbGUzMigmcGV4LT5icmlkZ2UucGV4X2NzYl9vYmN0cmwsIFBFWF9DU0JfT0JDVFJMX1BJT0UgfAorCQlQRVhfQ1NCX09CQ1RSTF9NRU1XRSB8IFBFWF9DU0JfT0JDVFJMX0lPV0UgfAorCQlQRVhfQ1NCX09CQ1RSTF9DRkdXRSk7CisKKwlvdXRfd2luID0gJnBleC0+YnJpZGdlLnBleF9vdXRib3VuZF93aW5bMF07CisJaWYgKGJ1cykgeworCQlvdXRfbGUzMigmb3V0X3dpbi0+YXIsIFBFWF9PV0FSX0VOIHwgUEVYX09XQVJfVFlQRV9DRkcgfAorCQkJQ09ORklHX1NZU19QQ0lFMl9DRkdfU0laRSk7CisJCW91dF9sZTMyKCZvdXRfd2luLT5iYXIsIENPTkZJR19TWVNfUENJRTJfQ0ZHX0JBU0UpOworCX0gZWxzZSB7CisJCW91dF9sZTMyKCZvdXRfd2luLT5hciwgUEVYX09XQVJfRU4gfCBQRVhfT1dBUl9UWVBFX0NGRyB8CisJCQlDT05GSUdfU1lTX1BDSUUxX0NGR19TSVpFKTsKKwkJb3V0X2xlMzIoJm91dF93aW4tPmJhciwgQ09ORklHX1NZU19QQ0lFMV9DRkdfQkFTRSk7CisJfQorCW91dF9sZTMyKCZvdXRfd2luLT50YXJsLCAwKTsKKwlvdXRfbGUzMigmb3V0X3dpbi0+dGFyaCwgMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrLCByZWcrKykgeworCQl1MzIgYXI7CisKKwkJaWYgKHJlZy0+c2l6ZSA9PSAwKQorCQkJYnJlYWs7CisKKwkJb3V0X3dpbiA9ICZwZXgtPmJyaWRnZS5wZXhfb3V0Ym91bmRfd2luW2kgKyAxXTsKKwkJb3V0X2xlMzIoJm91dF93aW4tPmJhciwgcmVnLT5waHlzX3N0YXJ0KTsKKwkJb3V0X2xlMzIoJm91dF93aW4tPnRhcmwsIHJlZy0+YnVzX3N0YXJ0KTsKKwkJb3V0X2xlMzIoJm91dF93aW4tPnRhcmgsIDApOworCQlhciA9IFBFWF9PV0FSX0VOIHwgKHJlZy0+c2l6ZSAmIFBFWF9PV0FSX1NJWkUpOworCQlpZiAocmVnLT5mbGFncyAmIFBDSV9SRUdJT05fSU8pCisJCQlhciB8PSBQRVhfT1dBUl9UWVBFX0lPOworCQllbHNlCisJCQlhciB8PSBQRVhfT1dBUl9UWVBFX01FTTsKKwkJb3V0X2xlMzIoJm91dF93aW4tPmFyLCBhcik7CisJfQorCisJb3V0X2xlMzIoJnBleC0+YnJpZGdlLnBleF9jc2JfaWJjdHJsLCBQRVhfQ1NCX0lCQ1RSTF9QSU9FKTsKKworCXJhbV9zeiA9IGdkLT5yYW1fc2l6ZTsKKwliYXJsID0gMDsKKwl0YXIgPSAwOworCWkgPSAwOworCXdoaWxlIChyYW1fc3ogPiAwKSB7CisJCWluX3dpbiA9ICZwZXgtPmJyaWRnZS5wZXhfaW5ib3VuZF93aW5baV07CisJCW91dF9sZTMyKCZpbl93aW4tPmJhcmwsIGJhcmwpOworCQlvdXRfbGUzMigmaW5fd2luLT5iYXJoLCAweDApOworCQlvdXRfbGUzMigmaW5fd2luLT50YXIsIHRhcik7CisJCWlmIChyYW1fc3ogPj0gMHgxMDAwMDAwMCkgeworCQkJLyogVGhlIG1heGl1bSB3aW5kb3dzIHNpemUgaXMgMjU2TSAqLworCQkJb3V0X2xlMzIoJmluX3dpbi0+YXIsIFBFWF9JV0FSX0VOIHwgUEVYX0lXQVJfTlNPViB8CisJCQkJUEVYX0lXQVJfVFlQRV9QRiB8IDB4MEZGRkYwMDApOworCQkJYmFybCArPSAweDEwMDAwMDAwOworCQkJdGFyICs9IDB4MTAwMDAwMDA7CisJCQlyYW1fc3ogLT0gMHgxMDAwMDAwMDsKKwkJfSBlbHNlIHsKKwkJCS8qIFRoZSBVTSAgaXMgbm90IGNsZWFyIGhlcmUuCisJCQkgKiBTbywgcm91bmQgdXAgdG8gZXZlbiBNYiBib3VuZGFyeSAqLworCisJCQlyYW1fc3ogPSByYW1fc3ogPj4gKDIwICsKKwkJCQkJKChyYW1fc3ogJiAweEZGRkZGKSA/IDEgOiAwKSk7CisJCQlpZiAoIShyYW1fc3ogJSAyKSkKKwkJCQlyYW1fc3ogLT0gMTsKKwkJCW91dF9sZTMyKCZpbl93aW4tPmFyLCBQRVhfSVdBUl9FTiB8IFBFWF9JV0FSX05TT1YgfAorCQkJCVBFWF9JV0FSX1RZUEVfUEYgfCAocmFtX3N6IDw8IDIwKSB8IDB4RkYwMDApOworCQkJcmFtX3N6ID0gMDsKKwkJfQorCQlpKys7CisJfQorCisJaW5fd2luID0gJnBleC0+YnJpZGdlLnBleF9pbmJvdW5kX3dpbltpXTsKKwlvdXRfbGUzMigmaW5fd2luLT5iYXJsLCBDT05GSUdfU1lTX0lNTVIpOworCW91dF9sZTMyKCZpbl93aW4tPmJhcmgsIDApOworCW91dF9sZTMyKCZpbl93aW4tPnRhciwgQ09ORklHX1NZU19JTU1SKTsKKwlvdXRfbGUzMigmaW5fd2luLT5hciwgUEVYX0lXQVJfRU4gfAorCQlQRVhfSVdBUl9UWVBFX05PX1BGIHwgUEVYX0lXQVJfU0laRV8xTSk7CisKKwkvKiBFbmFibGUgdGhlIGhvc3QgdmlydHVhbCBJTlRYIGludGVycnVwdHMgKi8KKwlvdXRfbGUzMigmcGV4LT5icmlkZ2UucGV4X2ludF9heGlfbWlzY19lbmIsCisJCWluX2xlMzIoJnBleC0+YnJpZGdlLnBleF9pbnRfYXhpX21pc2NfZW5iKSB8IDB4MUUwKTsKKworCS8qIEhvc2UgY29uZmlndXJlIGhlYWRlciBpcyBtZW1vcnktbWFwcGVkICovCisJaG9zZV9jZmdfYmFzZSA9ICh2b2lkICopcGV4OworCisJZ2V0X2Nsb2NrcygpOworCS8qIENvbmZpZ3VyZSB0aGUgUENJRSBjb250cm9sbGVyIGNvcmUgY2xvY2sgcmF0aW8gKi8KKwlvdXRfbGUzMihob3NlX2NmZ19iYXNlICsgUEVYX0dDTEtfUkFUSU8sCisJCSgoKGJ1cyA/IGdkLT5wY2lleHAyX2NsayA6IGdkLT5wY2lleHAxX2NsaykgLyAxMDAwMDAwKSAqIDE2KQorCQkvIDMzMyk7CisJdWRlbGF5KDEwMDAwMDApOworCisJLyogRG8gVHlwZSAxIGJyaWRnZSBjb25maWd1cmF0aW9uICovCisJb3V0XzgoaG9zZV9jZmdfYmFzZSArIFBDSV9QUklNQVJZX0JVUywgMCk7CisJb3V0XzgoaG9zZV9jZmdfYmFzZSArIFBDSV9TRUNPTkRBUllfQlVTLCAxKTsKKwlvdXRfOChob3NlX2NmZ19iYXNlICsgUENJX1NVQk9SRElOQVRFX0JVUywgMjU1KTsKKworCS8qCisJICogV3JpdGUgdG8gQ29tbWFuZCByZWdpc3RlcgorCSAqLworCXJlZzE2ID0gaW5fbGUxNihob3NlX2NmZ19iYXNlICsgUENJX0NPTU1BTkQpOworCXJlZzE2IHw9IFBDSV9DT01NQU5EX01BU1RFUiB8IFBDSV9DT01NQU5EX01FTU9SWSB8IFBDSV9DT01NQU5EX0lPIHwKKwkJCVBDSV9DT01NQU5EX1NFUlIgfCBQQ0lfQ09NTUFORF9QQVJJVFk7CisJb3V0X2xlMTYoaG9zZV9jZmdfYmFzZSArIFBDSV9DT01NQU5ELCByZWcxNik7CisKKwkvKgorCSAqIENsZWFyIG5vbi1yZXNlcnZlZCBiaXRzIGluIHN0YXR1cyByZWdpc3Rlci4KKwkgKi8KKwlvdXRfbGUxNihob3NlX2NmZ19iYXNlICsgUENJX1NUQVRVUywgMHhmZmZmKTsKKwlvdXRfOChob3NlX2NmZ19iYXNlICsgUENJX0xBVEVOQ1lfVElNRVIsIDB4ODApOworCW91dF84KGhvc2VfY2ZnX2Jhc2UgKyBQQ0lfQ0FDSEVfTElORV9TSVpFLCAweDA4KTsKKworCXByaW50ZigiUENJRSVkOiAiLCBidXMpOworCisJcmVnMTYgPSBpbl9sZTE2KGhvc2VfY2ZnX2Jhc2UgKyBQQ0lfTFRTU00pOworCWlmIChyZWcxNiA+PSBQQ0lfTFRTU01fTDApCisJCXByaW50ZigibGlua1xuIik7CisJZWxzZQorCQlwcmludGYoIk5vIGxpbmtcbiIpOworCisJbXBjODN4eF9wY2llX3JlZ2lzdGVyX2hvc2UoYnVzLCByZWcsIHJlZzE2ID49IFBDSV9MVFNTTV9MMCk7Cit9CisKKy8qCisgKiBUaGUgY2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IHNldCBTQ0NSLCBTRVJERVMgYW5kIHRoZSBQQ0lFX0xBVyBCQVJzCisgKiBtdXN0IGhhdmUgYmVlbiBzZXQgdG8gY292ZXIgYWxsIG9mIHRoZSByZXF1ZXN0ZWQgcmVnaW9ucy4KKyAqLwordm9pZCBtcGM4M3h4X3BjaWVfaW5pdChpbnQgbnVtX2J1c2VzLCBzdHJ1Y3QgcGNpX3JlZ2lvbiAqKnJlZywgaW50IHdhcm1ib290KQoreworCWludCBpOworCisJLyoKKwkgKiBSZWxlYXNlIFBDSSBSU1QgT3V0cHV0IHNpZ25hbC4KKwkgKiBQb3dlciBvbiB0byBSU1QgaGlnaCBtdXN0IGJlIGF0IGxlYXN0IDEwMCBtcyBhcyBwZXIgUENJIHNwZWMuCisJICogT24gd2FybSBib290cyBvbmx5IDEgbXMgaXMgcmVxdWlyZWQuCisJICovCisJdWRlbGF5KHdhcm1ib290ID8gMTAwMCA6IDEwMDAwMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2J1c2VzOyBpKyspCisJCW1wYzgzeHhfcGNpZV9pbml0X2J1cyhpLCByZWdbaV0pOworfQpkaWZmIC0tZ2l0IGEvY3B1L21wYzgzeHgvc3BlZWQuYyBiL2NwdS9tcGM4M3h4L3NwZWVkLmMKaW5kZXggYmY5YmYzNi4uNDIzMDA5OSAxMDA2NDQKLS0tIGEvY3B1L21wYzgzeHgvc3BlZWQuYworKysgYi9jcHUvbXBjODN4eC9zcGVlZC5jCkBAIC0xMzIsNyArMTMyLDcgQEAKIAl1MzIgcWVfY2xrOwogCXUzMiBicmdfY2xrOwogI2VuZGlmCi0jaWYgZGVmaW5lZChDT05GSUdfTVBDODM3WCkKKyNpZiBkZWZpbmVkKENPTkZJR19NUEM4MzdYKSB8fCBkZWZpbmVkKENPTkZJR19NUEM4MzFYKQogCXUzMiBwY2lleHAxX2NsazsKIAl1MzIgcGNpZXhwMl9jbGs7CiAjZW5kaWYKQEAgLTMyOCw3ICszMjgsNyBAQAogCWkyYzJfY2xrID0gY3NiX2NsazsgLyogaTJjLTIgY2xrIGlzIGVxdWFsIHRvIGNzYiBjbGsgKi8KICNlbmRpZgogCi0jaWYgZGVmaW5lZChDT05GSUdfTVBDODM3WCkKKyNpZiBkZWZpbmVkKENPTkZJR19NUEM4MzdYKSB8fCBkZWZpbmVkKENPTkZJR19NUEM4MzFYKQogCXN3aXRjaCAoKHNjY3IgJiBTQ0NSX1BDSUVYUDFDTSkgPj4gU0NDUl9QQ0lFWFAxQ01fU0hJRlQpIHsKIAljYXNlIDA6CiAJCXBjaWV4cDFfY2xrID0gMDsKZGlmZiAtLWdpdCBhL2NwdS9tcGM4M3h4L3N0YXJ0LlMgYi9jcHUvbXBjODN4eC9zdGFydC5TCmluZGV4IDc5MmIyYzguLjI2ZTMxMDYgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzgzeHgvc3RhcnQuUwpAQCAtMTA5LDYgKzEwOSw0NSBAQAogCS5hc2NpaSAiICgiLCBVX0JPT1RfREFURSwgIiAtICIsIFVfQk9PVF9USU1FLCAiKSIKIAkuYXNjaWkgIiAiLCBDT05GSUdfSURFTlRfU1RSSU5HLCAiXDAiCiAKKwkuYWxpZ24gMgorCisJLmdsb2JsIGVuYWJsZV9hZGRyX3RyYW5zCitlbmFibGVfYWRkcl90cmFuczoKKwkvKiBlbmFibGUgYWRkcmVzcyB0cmFuc2xhdGlvbiAqLworCW1mbXNyCXI1CisJb3JpCXI1LCByNSwgKE1TUl9JUiB8IE1TUl9EUikKKwltdG1zcglyNQorCWlzeW5jCisJYmxyCisKKwkuZ2xvYmwgZGlzYWJsZV9hZGRyX3RyYW5zCitkaXNhYmxlX2FkZHJfdHJhbnM6CisJLyogZGlzYWJsZSBhZGRyZXNzIHRyYW5zbGF0aW9uICovCisJbWZscglyNAorCW1mbXNyCXIzCisJYW5kaS4JcjAsIHIzLCAoTVNSX0lSIHwgTVNSX0RSKQorCWJlcWxyCisJYW5kYwlyMywgcjMsIHIwCisJbXRzcHIJU1JSMCwgcjQKKwltdHNwcglTUlIxLCByMworCXJmaQorCisJLmdsb2JsIGdldF9wdnIKK2dldF9wdnI6CisJbWZzcHIJcjMsIFBWUgorCWJscgorCisJLmdsb2JsCXBwY0RXc3RvcmUKK3BwY0RXc3RvcmU6CisJbGZkCTEsIDAocjQpCisJc3RmZAkxLCAwKHIzKQorCWJscgorCisJLmdsb2JsCXBwY0RXbG9hZAorcHBjRFdsb2FkOgorCWxmZAkxLCAwKHIzKQorCXN0ZmQJMSwgMChyNCkKKwlibHIKIAogI2lmbmRlZiBDT05GSUdfREVGQVVMVF9JTU1SCiAjZXJyb3IgQ09ORklHX0RFRkFVTFRfSU1NUiBtdXN0IGJlIGRlZmluZWQKQEAgLTE2MSw5ICsyMDAsMjMgQEAKIAlub3AKIGJvb3Rfd2FybTogLyogdGltZSB0IDUgKi8KIAltZm1zcglyNQkJCS8qIHNhdmUgbXNyIGNvbnRlbnRzCSovCisKKwkvKiA4M3h4IG1hbnVhbHMgcHJlc2NyaWJlIGEgc3BlY2lmaWMgc2VxdWVuY2UgZm9yIHVwZGF0aW5nIElNTVJCQVIuICovCisJYmwJMWYKKzE6CW1mbHIJcjcKKwogCWxpcwlyMywgQ09ORklHX1NZU19JTU1SQGgKIAlvcmkJcjMsIHIzLCBDT05GSUdfU1lTX0lNTVJAbAorCisJbHd6CXI2LCBJTU1SQkFSKHI0KQorCWlzeW5jCisKIAlzdHcJcjMsIElNTVJCQVIocjQpCisJbHd6CXI2LCAwKHI3KQkJLyogQXJiaXRyYXJ5IGV4dGVybmFsIGxvYWQgKi8KKwlpc3luYworCisJbHd6CXI2LCBJTU1SQkFSKHIzKQorCWlzeW5jCiAKIAkvKiBJbml0aWFsaXNlIHRoZSBFMzAwIHByb2Nlc3NvciBjb3JlCQkqLwogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTE3Myw5ICsyMjYsNyBAQAogCSAqIGlzIGxvYWRlZC4gIFdhaXQgZm9yIHRoZSByZXN0IGJlZm9yZSBicmFuY2hpbmcKIAkgKiB0byBhbm90aGVyIGZsYXNoIHBhZ2UuCiAJICovCi0JYWRkaQlyNywgcjMsIDB4NTBiMAotMToJZGNiaQkwLCByNwotCWx3eglyNiwgMChyNykKKzE6CWx3eglyNiwgMHg1MGIwKHIzKQogCWFuZGkuCXI2LCByNiwgMQogCWJlcQkxYgogI2VuZGlmCkBAIC02OTgsMjcgKzc0OSw2IEBACiAKIAlibHIKIAotCS5nbG9ibCBlbmFibGVfYWRkcl90cmFucwotZW5hYmxlX2FkZHJfdHJhbnM6Ci0JLyogZW5hYmxlIGFkZHJlc3MgdHJhbnNsYXRpb24gKi8KLQltZm1zcglyNQotCW9yaQlyNSwgcjUsIChNU1JfSVIgfCBNU1JfRFIpCi0JbXRtc3IJcjUKLQlpc3luYwotCWJscgotCi0JLmdsb2JsIGRpc2FibGVfYWRkcl90cmFucwotZGlzYWJsZV9hZGRyX3RyYW5zOgotCS8qIGRpc2FibGUgYWRkcmVzcyB0cmFuc2xhdGlvbiAqLwotCW1mbHIJcjQKLQltZm1zcglyMwotCWFuZGkuCXIwLCByMywgKE1TUl9JUiB8IE1TUl9EUikKLQliZXFscgotCWFuZGMJcjMsIHIzLCByMAotCW10c3ByCVNSUjAsIHI0Ci0JbXRzcHIJU1JSMSwgcjMKLQlyZmkKLQogLyogQ2FjaGUgZnVuY3Rpb25zLgogICoKICAqIE5vdGU6IHJlcXVpcmVzIHRoYXQgYWxsIGNhY2hlIGJpdHMgaW4KQEAgLTc5NiwyMyArODI2LDYgQEAKIAliCTFiCiAyOglibHIKIAotCS5nbG9ibCBnZXRfcHZyCi1nZXRfcHZyOgotCW1mc3ByCXIzLCBQVlIKLQlibHIKLQotCS5nbG9ibAlwcGNEV3N0b3JlCi1wcGNEV3N0b3JlOgotCWxmZAkxLCAwKHI0KQotCXN0ZmQJMSwgMChyMykKLQlibHIKLQotCS5nbG9ibAlwcGNEV2xvYWQKLXBwY0RXbG9hZDoKLQlsZmQJMSwgMChyMykKLQlzdGZkCTEsIDAocjQpCi0JYmxyCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qCmRpZmYgLS1naXQgYS9jcHUvbXBjODV4eC9jcHUuYyBiL2NwdS9tcGM4NXh4L2NwdS5jCmluZGV4IDk0MzYwMmYuLmEzNGUyNTEgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4NXh4L2NwdS5jCisrKyBiL2NwdS9tcGM4NXh4L2NwdS5jCkBAIC03Nyw4ICs3Nyw2IEBACiBpbnQgY2hlY2tjcHUgKHZvaWQpCiB7CiAJc3lzX2luZm9fdCBzeXNpbmZvOwotCXVpbnQgbGNycjsJCS8qIGxvY2FsIGJ1cyBjbG9jayByYXRpbyByZWdpc3RlciAqLwotCXVpbnQgY2xrZGl2OwkJLyogY2xvY2sgZGl2aWRlciBwb3J0aW9uIG9mIGxjcnIgKi8KIAl1aW50IHB2ciwgc3ZyOwogCXVpbnQgZmFtOwogCXVpbnQgdmVyOwpAQCAtOTIsNiArOTAsNyBAQAogI2Vsc2UKIAl1MzIgZGRyX3JhdGlvID0gMDsKICNlbmRpZgorCWludCBpOwogCiAJc3ZyID0gZ2V0X3N2cigpOwogCXZlciA9IFNWUl9TT0NfVkVSKHN2cik7CkBAIC0xNDMsOCArMTQyLDEwIEBACiAKIAlnZXRfc3lzX2luZm8oJnN5c2luZm8pOwogCi0JcHV0cygiQ2xvY2sgQ29uZmlndXJhdGlvbjpcbiIpOwotCXByaW50ZigiICAgICAgIENQVTolLTRzIE1IeiwgIiwgc3RybWh6KGJ1ZjEsIHN5c2luZm8uZnJlcVByb2Nlc3NvcikpOworCXB1dHMoIkNsb2NrIENvbmZpZ3VyYXRpb246XG4gICAgICAgIik7CisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fQ1BVUzsgaSsrKQorCQlwcmludGYoIkNQVSVkOiUtNHMgTUh6LCAiLAorCQkJCWksc3RybWh6KGJ1ZjEsIHN5c2luZm8uZnJlcVByb2Nlc3NvcltpXSkpOwogCXByaW50ZigiQ0NCOiUtNHMgTUh6LFxuIiwgc3RybWh6KGJ1ZjEsIHN5c2luZm8uZnJlcVN5c3RlbUJ1cykpOwogCiAJc3dpdGNoIChkZHJfcmF0aW8pIHsKQEAgLTE2NSwzMCArMTY2LDExIEBACiAJCWJyZWFrOwogCX0KIAotI2lmIGRlZmluZWQoQ09ORklHX1NZU19MQkNfTENSUikKLQlsY3JyID0gQ09ORklHX1NZU19MQkNfTENSUjsKLSNlbHNlCi0JewotCSAgICB2b2xhdGlsZSBjY3NyX2xiY190ICpsYmMgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfTEJDX0FERFIpOwotCi0JICAgIGxjcnIgPSBsYmMtPmxjcnI7Ci0JfQotI2VuZGlmCi0JY2xrZGl2ID0gbGNyciAmIDB4MGY7Ci0JaWYgKGNsa2RpdiA9PSAyIHx8IGNsa2RpdiA9PSA0IHx8IGNsa2RpdiA9PSA4KSB7Ci0jaWYgZGVmaW5lZChDT05GSUdfTVBDODU0OCkgfHwgZGVmaW5lZChDT05GSUdfTVBDODU0NCkgfHwgXAotICAgIGRlZmluZWQoQ09ORklHX01QQzg1NzIpIHx8IGRlZmluZWQoQ09ORklHX01QQzg1MzYpCi0JCS8qCi0JCSAqIFllcywgdGhlIGVudGlyZSBQUTM4IGZhbWlseSB1c2UgdGhlIHNhbWUKLQkJICogYml0LXJlcHJlc2VudGF0aW9uIGZvciB0d2ljZSB0aGUgY2xvY2sgZGl2aWRlciB2YWx1ZXMuCi0JCSAqLwotCQkgY2xrZGl2ICo9IDI7Ci0jZW5kaWYKLQkJcHJpbnRmKCJMQkM6JS00cyBNSHpcbiIsCi0JCSAgICAgICBzdHJtaHooYnVmMSwgc3lzaW5mby5mcmVxU3lzdGVtQnVzIC8gY2xrZGl2KSk7Ci0JfSBlbHNlIHsKLQkJcHJpbnRmKCJMQkM6IHVua25vd24gKGxjcnI6IDB4JTA4eClcbiIsIGxjcnIpOwotCX0KKwlpZiAoc3lzaW5mby5mcmVxTG9jYWxCdXMgPiBMQ1JSX0NMS0RJVikKKwkJcHJpbnRmKCJMQkM6JS00cyBNSHpcbiIsIHN0cm1oeihidWYxLCBzeXNpbmZvLmZyZXFMb2NhbEJ1cykpOworCWVsc2UKKwkJcHJpbnRmKCJMQkM6IHVua25vd24gKExDUlJbQ0xLRElWXSA9IDB4JTAybHgpXG4iLAorCQkgICAgICAgc3lzaW5mby5mcmVxTG9jYWxCdXMpOwogCiAjaWZkZWYgQ09ORklHX0NQTTIKIAlwcmludGYoIkNQTTogICAlcyBNSHpcbiIsIHN0cm1oeihidWYxLCBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMpKTsKZGlmZiAtLWdpdCBhL2NwdS9tcGM4NXh4L2ZkdC5jIGIvY3B1L21wYzg1eHgvZmR0LmMKaW5kZXggNTlhYWZiMS4uMWZhZTQ3YyAxMDA2NDQKLS0tIGEvY3B1L21wYzg1eHgvZmR0LmMKKysrIGIvY3B1L21wYzg1eHgvZmR0LmMKQEAgLTI4LDExICsyOCwxMiBAQAogI2luY2x1ZGUgPGZkdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogCitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKwogZXh0ZXJuIHZvaWQgZnRfcWVfc2V0dXAodm9pZCAqYmxvYik7CiAKICNpZmRlZiBDT05GSUdfTVAKICNpbmNsdWRlICJtcC5oIgotREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAKIHZvaWQgZnRfZml4dXBfY3B1KHZvaWQgKmJsb2IsIHU2NCBtZW1vcnlfbGltaXQpCiB7CkBAIC0yMTIsNiArMjEzLDEwIEBACiAKIHZvaWQgZnRfY3B1X3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQogeworCWludCBvZmY7CisJaW50IHZhbDsKKwlzeXNfaW5mb190IHN5c2luZm87CisKIAkvKiBkZWxldGUgY3J5cHRvIG5vZGUgaWYgbm90IG9uIGFuIEUtcHJvY2Vzc29yICovCiAJaWYgKCFJU19FX1BST0NFU1NPUihnZXRfc3ZyKCkpKQogCQlmZHRfZml4dXBfY3J5cHRvX25vZGUoYmxvYiwgMCk7CkBAIC0yMjcsMTAgKzIzMiwyMiBAQAogCQkidGltZWJhc2UtZnJlcXVlbmN5IiwgYmQtPmJpX2J1c2ZyZXEgLyA4LCAxKTsKIAlkb19maXh1cF9ieV9wcm9wX3UzMihibG9iLCAiZGV2aWNlX3R5cGUiLCAiY3B1IiwgNCwKIAkJImJ1cy1mcmVxdWVuY3kiLCBiZC0+YmlfYnVzZnJlcSwgMSk7Ci0JZG9fZml4dXBfYnlfcHJvcF91MzIoYmxvYiwgImRldmljZV90eXBlIiwgImNwdSIsIDQsCi0JCSJjbG9jay1mcmVxdWVuY3kiLCBiZC0+YmlfaW50ZnJlcSwgMSk7CisJZ2V0X3N5c19pbmZvKCZzeXNpbmZvKTsKKwlvZmYgPSBmZHRfbm9kZV9vZmZzZXRfYnlfcHJvcF92YWx1ZShibG9iLCAtMSwgImRldmljZV90eXBlIiwgImNwdSIsIDQpOworCXdoaWxlIChvZmYgIT0gLUZEVF9FUlJfTk9URk9VTkQpIHsKKwkJdTMyICpyZWcgPSAodTMyICopZmR0X2dldHByb3AoYmxvYiwgb2ZmLCAicmVnIiwgMCk7CisJCXZhbCA9IGNwdV90b19mZHQzMihzeXNpbmZvLmZyZXFQcm9jZXNzb3JbKnJlZ10pOworCQlmZHRfc2V0cHJvcChibG9iLCBvZmYsICJjbG9jay1mcmVxdWVuY3kiLCAmdmFsLCA0KTsKKwkJb2ZmID0gZmR0X25vZGVfb2Zmc2V0X2J5X3Byb3BfdmFsdWUoYmxvYiwgb2ZmLCAiZGV2aWNlX3R5cGUiLAorCQkJCQkJCSJjcHUiLCA0KTsKKwl9CiAJZG9fZml4dXBfYnlfcHJvcF91MzIoYmxvYiwgImRldmljZV90eXBlIiwgInNvYyIsIDQsCiAJCSJidXMtZnJlcXVlbmN5IiwgYmQtPmJpX2J1c2ZyZXEsIDEpOworCisJZG9fZml4dXBfYnlfY29tcGF0X3UzMihibG9iLCAiZnNsLHBxMy1sb2NhbGJ1cyIsCisJCSJidXMtZnJlcXVlbmN5IiwgZ2QtPmxiY19jbGssIDEpOworCWRvX2ZpeHVwX2J5X2NvbXBhdF91MzIoYmxvYiwgImZzbCxlbGJjIiwKKwkJImJ1cy1mcmVxdWVuY3kiLCBnZC0+bGJjX2NsaywgMSk7CiAjaWZkZWYgQ09ORklHX1FFCiAJZnRfcWVfc2V0dXAoYmxvYik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NwdS9tcGM4NXh4L3BjaS5jIGIvY3B1L21wYzg1eHgvcGNpLmMKaW5kZXggNzg3YzZlYi4uZmVkZjFhNSAxMDA2NDQKLS0tIGEvY3B1L21wYzg1eHgvcGNpLmMKKysrIGIvY3B1L21wYzg1eHgvcGNpLmMKQEAgLTMxLDYgKzMxLDIyIEBACiAKICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpICYmICFkZWZpbmVkKENPTkZJR19GU0xfUENJX0lOSVQpCiAKKyNpZm5kZWYgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCisjZW5kaWYKKworI2lmbmRlZiBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CVVMgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UKKyNlbmRpZgorCisjaWZuZGVmIENPTkZJR19TWVNfUENJMl9NRU1fQlVTCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fQlVTIENPTkZJR19TWVNfUENJMl9NRU1fQkFTRQorI2VuZGlmCisKKyNpZm5kZWYgQ09ORklHX1NZU19QQ0kyX0lPX0JVUworI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfSU9fQlVTIENPTkZJR19TWVNfUENJMl9JT19CQVNFCisjZW5kaWYKKwogc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciAqcGNpX2hvc2U7CiAKIHZvaWQKQEAgLTgwLDE0ICs5NiwxNCBAQAogCQlwY2lfaG9zZV93cml0ZV9jb25maWdfd29yZChob3NlLCBkZXYsIFBDSVhfQ09NTUFORCwgcmVnMTYpOwogCX0KIAotCXBjaXgtPnBvdGFyMSAgID0gKENPTkZJR19TWVNfUENJMV9NRU1fQkFTRSA+PiAxMikgJiAweDAwMGZmZmZmOworCXBjaXgtPnBvdGFyMSAgID0gKENPTkZJR19TWVNfUENJMV9NRU1fQlVTID4+IDEyKSAmIDB4MDAwZmZmZmY7CiAJcGNpeC0+cG90ZWFyMSAgPSAweDAwMDAwMDAwOwogCXBjaXgtPnBvd2JhcjEgID0gKENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyA+PiAxMikgJiAweDAwMGZmZmZmOwogCXBjaXgtPnBvd2JlYXIxID0gMHgwMDAwMDAwMDsKIAlwY2l4LT5wb3dhcjEgPSAoUE9XQVJfRU4gfCBQT1dBUl9NRU1fUkVBRCB8CiAJCQlQT1dBUl9NRU1fV1JJVEUgfCAoX19pbG9nMihDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUpIC0gMSkpOwogCi0JcGNpeC0+cG90YXIyICA9IChDT05GSUdfU1lTX1BDSTFfSU9fQkFTRSA+PiAxMikgJiAweDAwMGZmZmZmOworCXBjaXgtPnBvdGFyMiAgPSAoQ09ORklHX1NZU19QQ0kxX0lPX0JVUyA+PiAxMikgJiAweDAwMGZmZmZmOwogCXBjaXgtPnBvdGVhcjIgID0gMHgwMDAwMDAwMDsKIAlwY2l4LT5wb3diYXIyICA9IChDT05GSUdfU1lTX1BDSTFfSU9fUEhZUyA+PiAxMikgJiAweDAwMGZmZmZmOwogCXBjaXgtPnBvd2JlYXIyID0gMHgwMDAwMDAwMDsKQEAgLTEwNSwxMyArMTIxLDEzIEBACiAJcGNpeC0+cGl3YXIzID0gMDsKIAogCXBjaV9zZXRfcmVnaW9uKGhvc2UtPnJlZ2lvbnMgKyAwLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFLAorCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMsCiAJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCiAJCSAgICAgICBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUsCiAJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7CiAKIAlwY2lfc2V0X3JlZ2lvbihob3NlLT5yZWdpb25zICsgMSwKLQkJICAgICAgIENPTkZJR19TWVNfUENJMV9JT19CQVNFLAorCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX0JVUywKIAkJICAgICAgIENPTkZJR19TWVNfUENJMV9JT19QSFlTLAogCQkgICAgICAgQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUsCiAJCSAgICAgICBQQ0lfUkVHSU9OX0lPKTsKQEAgLTE2NSwxNCArMTgxLDE0IEBACiAJICovCiAJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX3dvcmQoaG9zZSwgZGV2LCBQQ0lfU1RBVFVTLCAweGZmZmYpOwogCi0JcGNpeDItPnBvdGFyMSAgID0gKENPTkZJR19TWVNfUENJMl9NRU1fQkFTRSA+PiAxMikgJiAweDAwMGZmZmZmOworCXBjaXgyLT5wb3RhcjEgICA9IChDT05GSUdfU1lTX1BDSTJfTUVNX0JVUyA+PiAxMikgJiAweDAwMGZmZmZmOwogCXBjaXgyLT5wb3RlYXIxICA9IDB4MDAwMDAwMDA7CiAJcGNpeDItPnBvd2JhcjEgID0gKENPTkZJR19TWVNfUENJMl9NRU1fUEhZUyA+PiAxMikgJiAweDAwMGZmZmZmOwogCXBjaXgyLT5wb3diZWFyMSA9IDB4MDAwMDAwMDA7CiAJcGNpeDItPnBvd2FyMSA9IChQT1dBUl9FTiB8IFBPV0FSX01FTV9SRUFEIHwKIAkJCVBPV0FSX01FTV9XUklURSB8IChfX2lsb2cyKENPTkZJR19TWVNfUENJMl9NRU1fU0laRSkgLSAxKSk7CiAKLQlwY2l4Mi0+cG90YXIyICA9IChDT05GSUdfU1lTX1BDSTJfSU9fQkFTRSA+PiAxMikgJiAweDAwMGZmZmZmOworCXBjaXgyLT5wb3RhcjIgID0gKENPTkZJR19TWVNfUENJMl9JT19CVVMgPj4gMTIpICYgMHgwMDBmZmZmZjsKIAlwY2l4Mi0+cG90ZWFyMiAgPSAweDAwMDAwMDAwOwogCXBjaXgyLT5wb3diYXIyICA9IChDT05GSUdfU1lTX1BDSTJfSU9fUEhZUyA+PiAxMikgJiAweDAwMGZmZmZmOwogCXBjaXgyLT5wb3diZWFyMiA9IDB4MDAwMDAwMDA7CkBAIC0xOTAsMTMgKzIwNiwxMyBAQAogCXBjaXgyLT5waXdhcjMgPSAwOwogCiAJcGNpX3NldF9yZWdpb24oaG9zZS0+cmVnaW9ucyArIDAsCi0JCSAgICAgICBDT05GSUdfU1lTX1BDSTJfTUVNX0JBU0UsCisJCSAgICAgICBDT05GSUdfU1lTX1BDSTJfTUVNX0JVUywKIAkJICAgICAgIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUywKIAkJICAgICAgIENPTkZJR19TWVNfUENJMl9NRU1fU0laRSwKIAkJICAgICAgIFBDSV9SRUdJT05fTUVNKTsKIAogCXBjaV9zZXRfcmVnaW9uKGhvc2UtPnJlZ2lvbnMgKyAxLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0kyX0lPX0JBU0UsCisJCSAgICAgICBDT05GSUdfU1lTX1BDSTJfSU9fQlVTLAogCQkgICAgICAgQ09ORklHX1NZU19QQ0kyX0lPX1BIWVMsCiAJCSAgICAgICBDT05GSUdfU1lTX1BDSTJfSU9fU0laRSwKIAkJICAgICAgIFBDSV9SRUdJT05fSU8pOwpkaWZmIC0tZ2l0IGEvY3B1L21wYzg1eHgvcmVsZWFzZS5TIGIvY3B1L21wYzg1eHgvcmVsZWFzZS5TCmluZGV4IDdjM2U4YTEuLjU0YzkzNmMgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4NXh4L3JlbGVhc2UuUworKysgYi9jcHUvbXBjODV4eC9yZWxlYXNlLlMKQEAgLTE1Nyw2ICsxNTcsNyBAQAogCW1mc3ByCXIwLFNQUk5fUElSCiAJc3R3CXIwLEVOVFJZX1BJUihyMTApCiAKKwltdHNwcglJVlBSLHIxMgogLyoKICAqIENvbWluZyBoZXJlLCB3ZSBrbm93IHRoZSBjcHUgaGFzIG9uZSBUTEIgbWFwcGluZyBpbiBUTEIxWzBdCiAgKiB3aGljaCBtYXBzIDB4ZmZmZmYwMDAtMHhmZmZmZmZmZiBvbmUtdG8tb25lLiAgV2Ugc2V0IHVwIGEKZGlmZiAtLWdpdCBhL2NwdS9tcGM4NXh4L3NwZWVkLmMgYi9jcHUvbXBjODV4eC9zcGVlZC5jCmluZGV4IDFlMGY0ODMuLmIwZjQ3ZTAgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4NXh4L3NwZWVkLmMKKysrIGIvY3B1L21wYzg1eHgvc3BlZWQuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CiAKIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwogCkBAIC0zNywxNyArMzgsMjAgQEAKIHsKIAl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSKTsKIAl1aW50IHBsYXRfcmF0aW8sZTUwMF9yYXRpbyxoYWxmX2ZyZXFTeXN0ZW1CdXM7CisJdWludCBsY3JyX2RpdjsKKwlpbnQgaTsKIAogCXBsYXRfcmF0aW8gPSAoZ3VyLT5wb3JwbGxzcikgJiAweDAwMDAwMDNlOwogCXBsYXRfcmF0aW8gPj49IDE7CiAJc3lzSW5mby0+ZnJlcVN5c3RlbUJ1cyA9IHBsYXRfcmF0aW8gKiBDT05GSUdfU1lTX0NMS19GUkVROwotCWU1MDBfcmF0aW8gPSAoZ3VyLT5wb3JwbGxzcikgJiAweDAwM2YwMDAwOwotCWU1MDBfcmF0aW8gPj49IDE2OwogCiAJLyogRGl2aWRlIGJlZm9yZSBtdWx0aXBseSB0byBhdm9pZCBpbnRlZ2VyCiAJICogb3ZlcmZsb3cgZm9yIHByb2Nlc3NvciBzcGVlZHMgYWJvdmUgMkdIeiAqLwogCWhhbGZfZnJlcVN5c3RlbUJ1cyA9IHN5c0luZm8tPmZyZXFTeXN0ZW1CdXMvMjsKLQlzeXNJbmZvLT5mcmVxUHJvY2Vzc29yID0gZTUwMF9yYXRpbypoYWxmX2ZyZXFTeXN0ZW1CdXM7CisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fQ1BVUzsgaSsrKSB7CisJCWU1MDBfcmF0aW8gPSAoKGd1ci0+cG9ycGxsc3IpID4+IChpICogOCArIDE2KSkgJiAweDNmOworCQlzeXNJbmZvLT5mcmVxUHJvY2Vzc29yW2ldID0gZTUwMF9yYXRpbyAqIGhhbGZfZnJlcVN5c3RlbUJ1czsKKwl9CiAKIAkvKiBOb3RlOiBmcmVxRERSQnVzIGlzIHRoZSBNQ0xLIGZyZXF1ZW5jeSwgbm90IHRoZSBkYXRhIHJhdGUuICovCiAJc3lzSW5mby0+ZnJlcUREUkJ1cyA9IHN5c0luZm8tPmZyZXFTeXN0ZW1CdXM7CkBAIC02MCw2ICs2NCwzMCBAQAogCQkJc3lzSW5mby0+ZnJlcUREUkJ1cyA9IGRkcl9yYXRpbyAqIENPTkZJR19ERFJfQ0xLX0ZSRVE7CiAJfQogI2VuZGlmCisKKyNpZiBkZWZpbmVkKENPTkZJR19TWVNfTEJDX0xDUlIpCisJLyogV2Ugd2lsbCBwcm9ncmFtIExDUlIgdG8gdGhpcyB2YWx1ZSBsYXRlciAqLworCWxjcnJfZGl2ID0gQ09ORklHX1NZU19MQkNfTENSUiAmIExDUlJfQ0xLRElWOworI2Vsc2UKKwl7CisJICAgIHZvbGF0aWxlIGNjc3JfbGJjX3QgKmxiYyA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9MQkNfQUREUik7CisJICAgIGxjcnJfZGl2ID0gaW5fYmUzMigmbGJjLT5sY3JyKSAmIExDUlJfQ0xLRElWOworCX0KKyNlbmRpZgorCWlmIChsY3JyX2RpdiA9PSAyIHx8IGxjcnJfZGl2ID09IDQgfHwgbGNycl9kaXYgPT0gOCkgeworI2lmICFkZWZpbmVkKENPTkZJR19NUEM4NTQwKSAmJiAhZGVmaW5lZChDT05GSUdfTVBDODU0MSkgJiYgXAorICAgICFkZWZpbmVkKENPTkZJR19NUEM4NTU1KSAmJiAhZGVmaW5lZChDT05GSUdfTVBDODU2MCkKKwkJLyoKKwkJICogWWVzLCB0aGUgZW50aXJlIFBRMzggZmFtaWx5IHVzZSB0aGUgc2FtZQorCQkgKiBiaXQtcmVwcmVzZW50YXRpb24gZm9yIHR3aWNlIHRoZSBjbG9jayBkaXZpZGVyIHZhbHVlcy4KKwkJICovCisJCWxjcnJfZGl2ICo9IDI7CisjZW5kaWYKKwkJc3lzSW5mby0+ZnJlcUxvY2FsQnVzID0gc3lzSW5mby0+ZnJlcVN5c3RlbUJ1cyAvIGxjcnJfZGl2OworCX0gZWxzZSB7CisJCS8qIEluIGNhc2UgYW55b25lIGNhcmVzIHdoYXQgdGhlIHVua25vd24gdmFsdWUgaXMgKi8KKwkJc3lzSW5mby0+ZnJlcUxvY2FsQnVzID0gbGNycl9kaXY7CisJfQogfQogCiAKQEAgLTc5LDkgKzEwNywxMCBAQAogCWRmYnJnID0gKHNjY3IgJiBTQ0NSX0RGQlJHX01TSykgPj4gU0NDUl9ERkJSR19TSElGVDsKICNlbmRpZgogCWdldF9zeXNfaW5mbyAoJnN5c19pbmZvKTsKLQlnZC0+Y3B1X2NsayA9IHN5c19pbmZvLmZyZXFQcm9jZXNzb3I7CisJZ2QtPmNwdV9jbGsgPSBzeXNfaW5mby5mcmVxUHJvY2Vzc29yWzBdOwogCWdkLT5idXNfY2xrID0gc3lzX2luZm8uZnJlcVN5c3RlbUJ1czsKIAlnZC0+bWVtX2NsayA9IHN5c19pbmZvLmZyZXFERFJCdXM7CisJZ2QtPmxiY19jbGsgPSBzeXNfaW5mby5mcmVxTG9jYWxCdXM7CiAKIAkvKgogCSAqIFRoZSBiYXNlIGNsb2NrIGZvciBJMkMgZGVwZW5kcyBvbiB0aGUgYWN0dWFsIFNPQy4gIFVuZm9ydHVuYXRlbHksCmRpZmYgLS1naXQgYS9jcHUvbXBjODV4eC9zdGFydC5TIGIvY3B1L21wYzg1eHgvc3RhcnQuUwppbmRleCA4ZmEwZmY3Li44MGY5Njc3IDEwMDY0NAotLS0gYS9jcHUvbXBjODV4eC9zdGFydC5TCisrKyBiL2NwdS9tcGM4NXh4L3N0YXJ0LlMKQEAgLTE4NCwxOSArMTg0LDE5IEBACiAJbXRzcHIJREJDUjAscjAKICNlbmRpZgogCi0JLyogY3JlYXRlIGEgdGVtcCBtYXBwaW5nIGluIEFTPTEgdG8gdGhlIGJvb3Qgd2luZG93ICovCisJLyogY3JlYXRlIGEgdGVtcCBtYXBwaW5nIGluIEFTPTEgdG8gdGhlIDRNIGJvb3Qgd2luZG93ICovCiAJbGlzICAgICByNixGU0xfQk9PS0VfTUFTMCgxLCAxNSwgMClAaAogCW9yaSAgICAgcjYscjYsRlNMX0JPT0tFX01BUzAoMSwgMTUsIDApQGwKIAotCWxpcyAgICAgcjcsRlNMX0JPT0tFX01BUzEoMSwgMSwgMCwgMSwgQk9PS0VfUEFHRVNaXzE2TSlAaAotCW9yaSAgICAgcjcscjcsRlNMX0JPT0tFX01BUzEoMSwgMSwgMCwgMSwgQk9PS0VfUEFHRVNaXzE2TSlAbAorCWxpcyAgICAgcjcsRlNMX0JPT0tFX01BUzEoMSwgMSwgMCwgMSwgQk9PS0VfUEFHRVNaXzRNKUBoCisJb3JpICAgICByNyxyNyxGU0xfQk9PS0VfTUFTMSgxLCAxLCAwLCAxLCBCT09LRV9QQUdFU1pfNE0pQGwKIAotCS8qIEFsaWduIHRoZSBtYXBwaW5nIHRvIDE2TUIgKi8KLQlsaXMgICAgIHI4LEZTTF9CT09LRV9NQVMyKFRFWFRfQkFTRSAmIDB4ZmYwMDAwMDAsIChNQVMyX0l8TUFTMl9HKSlAaAotCW9yaSAgICAgcjgscjgsRlNMX0JPT0tFX01BUzIoVEVYVF9CQVNFICYgMHhmZjAwMDAwMCwgKE1BUzJfSXxNQVMyX0cpKUBsCisJbGlzICAgICByOCxGU0xfQk9PS0VfTUFTMihURVhUX0JBU0UgJiAweGZmYzAwMDAwLCAoTUFTMl9JfE1BUzJfRykpQGgKKwlvcmkgICAgIHI4LHI4LEZTTF9CT09LRV9NQVMyKFRFWFRfQkFTRSAmIDB4ZmZjMDAwMDAsIChNQVMyX0l8TUFTMl9HKSlAbAogCi0JbGlzICAgICByOSxGU0xfQk9PS0VfTUFTMygweGZmMDAwMDAwLCAwLCAoTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IpKUBoCi0Jb3JpICAgICByOSxyOSxGU0xfQk9PS0VfTUFTMygweGZmMDAwMDAwLCAwLCAoTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IpKUBsCisJLyogVGhlIDg1eHggaGFzIHRoZSBkZWZhdWx0IGJvb3Qgd2luZG93IDB4ZmY4MDAwMDAgLSAweGZmZmZmZmZmICovCisJbGlzICAgICByOSxGU0xfQk9PS0VfTUFTMygweGZmYzAwMDAwLCAwLCAoTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IpKUBoCisJb3JpICAgICByOSxyOSxGU0xfQk9PS0VfTUFTMygweGZmYzAwMDAwLCAwLCAoTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IpKUBsCiAKIAltdHNwciAgIE1BUzAscjYKIAltdHNwciAgIE1BUzEscjcKZGlmZiAtLWdpdCBhL2NwdS9tcGM4NXh4L3RsYi5jIGIvY3B1L21wYzg1eHgvdGxiLmMKaW5kZXggYTJkMTZhZS4uMjVmYTllZSAxMDA2NDQKLS0tIGEvY3B1L21wYzg1eHgvdGxiLmMKKysrIGIvY3B1L21wYzg1eHgvdGxiLmMKQEAgLTI2LDYgKzI2LDExIEBACiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNpZmRlZiBDT05GSUdfQUREUl9NQVAKKyNpbmNsdWRlIDxhZGRyX21hcC5oPgorI2VuZGlmCisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwogCiB2b2lkIHNldF90bGIodTggdGxiLCB1MzIgZXBuLCB1NjQgcnBuLAogCSAgICAgdTggcGVybXMsIHU4IHdpbWdlLApAQCAtNDcsNiArNTIsMTEgQEAKIAltdHNwcihNQVM3LCBfbWFzNyk7CiAjZW5kaWYKIAlhc20gdm9sYXRpbGUoImlzeW5jO21zeW5jO3RsYndlO2lzeW5jIik7CisKKyNpZmRlZiBDT05GSUdfQUREUl9NQVAKKwlpZiAoKHRsYiA9PSAxKSAmJiAoZ2QtPmZsYWdzICYgR0RfRkxHX1JFTE9DKSkKKwkJYWRkcm1hcF9zZXRfZW50cnkoZXBuLCBycG4sICgxVUwgPDwgKCh0c2l6ZSAqIDIpICsgMTApKSwgZXNlbCk7CisjZW5kaWYKIH0KIAogdm9pZCBkaXNhYmxlX3RsYih1OCBlc2VsKQpAQCAtNjcsNiArNzcsMTEgQEAKIAltdHNwcihNQVM3LCBfbWFzNyk7CiAjZW5kaWYKIAlhc20gdm9sYXRpbGUoImlzeW5jO21zeW5jO3RsYndlO2lzeW5jIik7CisKKyNpZmRlZiBDT05GSUdfQUREUl9NQVAKKwlpZiAoZ2QtPmZsYWdzICYgR0RfRkxHX1JFTE9DKQorCQlhZGRybWFwX3NldF9lbnRyeSgwLCAwLCAwLCBlc2VsKTsKKyNlbmRpZgogfQogCiB2b2lkIGludmFsaWRhdGVfdGxiKHU4IHRsYikKQEAgLTkxLDYgKzEwNiwyOSBAQAogCXJldHVybiA7CiB9CiAKKyNpZmRlZiBDT05GSUdfQUREUl9NQVAKK3ZvaWQgaW5pdF9hZGRyX21hcCh2b2lkKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG51bV90bGJfZW50cmllczsgaSsrKSB7CisJCWlmICh0bGJfdGFibGVbaV0udGxiID09IDApCisJCQljb250aW51ZTsKKworCQlhZGRybWFwX3NldF9lbnRyeSh0bGJfdGFibGVbaV0uZXBuLAorCQkJdGxiX3RhYmxlW2ldLnJwbiwKKwkJCSgxVUwgPDwgKCh0bGJfdGFibGVbaV0udHNpemUgKiAyKSArIDEwKSksCisJCQl0bGJfdGFibGVbaV0uZXNlbCk7CisJfQorCisJcmV0dXJuIDsKK30KKyNlbmRpZgorCisjaWZuZGVmIENPTkZJR19TWVNfRERSX1RMQl9TVEFSVAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9UTEJfU1RBUlQgOAorI2VuZGlmCisKIHVuc2lnbmVkIGludCBzZXR1cF9kZHJfdGxicyh1bnNpZ25lZCBpbnQgbWVtc2l6ZV9pbl9tZWcpCiB7CiAJdW5zaWduZWQgaW50IHRsYl9zaXplOwpAQCAtMTM3LDcgKzE3NSw3IEBACiAJICogQ29uZmlndXJlIEREUiBUTEIxIGVudHJpZXMuCiAJICogU3RhcnRpbmcgYXQgVExCMSA4LCB1c2Ugbm8gbW9yZSB0aGFuIDggVExCMSBlbnRyaWVzLgogCSAqLwotCXJhbV90bGJfaW5kZXggPSA4OworCXJhbV90bGJfaW5kZXggPSBDT05GSUdfU1lTX0REUl9UTEJfU1RBUlQ7CiAJcmFtX3RsYl9hZGRyZXNzID0gKHVuc2lnbmVkIGludClDT05GSUdfU1lTX0REUl9TRFJBTV9CQVNFOwogCXdoaWxlIChyYW1fdGxiX2FkZHJlc3MgPCAobWVtc2l6ZV9pbl9tZWcgKiAxMDI0ICogMTAyNCkKIAkgICAgICAmJiByYW1fdGxiX2luZGV4IDwgMTYpIHsKZGlmZiAtLWdpdCBhL2NwdS9tcGM4Nnh4L2NwdS5jIGIvY3B1L21wYzg2eHgvY3B1LmMKaW5kZXggNGNhY2U5OC4uZGM1M2JlZSAxMDA2NDQKLS0tIGEvY3B1L21wYzg2eHgvY3B1LmMKKysrIGIvY3B1L21wYzg2eHgvY3B1LmMKQEAgLTM5LDggKzM5LDYgQEAKIAl1aW50IHB2ciwgc3ZyOwogCXVpbnQgdmVyOwogCXVpbnQgbWFqb3IsIG1pbm9yOwotCXVpbnQgbGNycjsJCS8qIGxvY2FsIGJ1cyBjbG9jayByYXRpbyByZWdpc3RlciAqLwotCXVpbnQgY2xrZGl2OwkJLyogY2xvY2sgZGl2aWRlciBwb3J0aW9uIG9mIGxjcnIgKi8KIAl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENPTkZJR19TWVNfSU1NUjsKIAl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAmaW1tYXAtPmltX2d1cjsKIApAQCAtMTAwLDIyICs5OCwxMSBAQAogCXByaW50ZigiTVBYOiU0bHUgTUh6LCAiLCBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwKTsKIAlwcmludGYoIkREUjolNGx1IE1IeiwgIiwgc3lzaW5mby5mcmVxU3lzdGVtQnVzIC8gMjAwMDAwMCk7CiAKLSNpZiBkZWZpbmVkKENPTkZJR19TWVNfTEJDX0xDUlIpCi0JbGNyciA9IENPTkZJR19TWVNfTEJDX0xDUlI7Ci0jZWxzZQotCXsKLQkJdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7Ci0JCXZvbGF0aWxlIGNjc3JfbGJjX3QgKmxiYyA9ICZpbW1hcC0+aW1fbGJjOwotCi0JCWxjcnIgPSBsYmMtPmxjcnI7Ci0JfQotI2VuZGlmCi0JY2xrZGl2ID0gbGNyciAmIDB4MGY7Ci0JaWYgKGNsa2RpdiA9PSAyIHx8IGNsa2RpdiA9PSA0IHx8IGNsa2RpdiA9PSA4KSB7Ci0JCXByaW50ZigiTEJDOiU0bHUgTUh6XG4iLAotCQkgICAgICAgc3lzaW5mby5mcmVxU3lzdGVtQnVzIC8gMTAwMDAwMCAvIGNsa2Rpdik7CisJaWYgKHN5c2luZm8uZnJlcUxvY2FsQnVzID4gTENSUl9DTEtESVYpIHsKKwkJcHJpbnRmKCJMQkM6JTRsdSBNSHpcbiIsIHN5c2luZm8uZnJlcUxvY2FsQnVzIC8gMTAwMDAwMCk7CiAJfSBlbHNlIHsKLQkJcHJpbnRmKCIgICAgTEJDOiB1bmtub3duIChsY3JyOiAweCUwOHgpXG4iLCBsY3JyKTsKKwkJcHJpbnRmKCJMQkM6IHVua25vd24gKExDUlJbQ0xLRElWXSA9IDB4JTAybHgpXG4iLAorCQkgICAgICAgc3lzaW5mby5mcmVxTG9jYWxCdXMpOwogCX0KIAogCXB1dHMoIiAgICBMMjogIik7CmRpZmYgLS1naXQgYS9jcHUvbXBjODZ4eC9mZHQuYyBiL2NwdS9tcGM4Nnh4L2ZkdC5jCmluZGV4IDNhZGZhZDkuLjM4M2IwNmIgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4Nnh4L2ZkdC5jCisrKyBiL2NwdS9tcGM4Nnh4L2ZkdC5jCkBAIC0yOSw2ICsyOSwxMyBAQAogCWRvX2ZpeHVwX2J5X3Byb3BfdTMyKGJsb2IsICJkZXZpY2VfdHlwZSIsICJzb2MiLCA0LAogCQkJICAgICAiYnVzLWZyZXF1ZW5jeSIsIGJkLT5iaV9idXNmcmVxLCAxKTsKIAorI2lmIGRlZmluZWQoQ09ORklHX01QQzg2NDEpCisJZG9fZml4dXBfYnlfY29tcGF0X3UzMihibG9iLCAiZnNsLG1wYzg2NDEtbG9jYWxidXMiLAorCQkJICAgICAgICJidXMtZnJlcXVlbmN5IiwgZ2QtPmxiY19jbGssIDEpOworI2VuZGlmCisJZG9fZml4dXBfYnlfY29tcGF0X3UzMihibG9iLCAiZnNsLGVsYmMiLAorCQkJICAgICAgICJidXMtZnJlcXVlbmN5IiwgZ2QtPmxiY19jbGssIDEpOworCiAJZmR0X2ZpeHVwX21lbW9yeShibG9iLCAodTY0KWJkLT5iaV9tZW1zdGFydCwgKHU2NCliZC0+YmlfbWVtc2l6ZSk7CiAKICNpZiBkZWZpbmVkKENPTkZJR19IQVNfRVRIMCkgfHwgZGVmaW5lZChDT05GSUdfSEFTX0VUSDEpIFwKZGlmZiAtLWdpdCBhL2NwdS9tcGM4Nnh4L3JlbGVhc2UuUyBiL2NwdS9tcGM4Nnh4L3JlbGVhc2UuUwppbmRleCBiNTI0ZTUwLi45NWVmYmI0IDEwMDY0NAotLS0gYS9jcHUvbXBjODZ4eC9yZWxlYXNlLlMKKysrIGIvY3B1L21wYzg2eHgvcmVsZWFzZS5TCkBAIC0xMjUsNyArMTI1LDcgQEAKIAltdHNwcglISUQwLCByNQkJLyogZW5hYmxlICsgaW52YWxpZGF0ZSAqLwogCW10c3ByCUhJRDAsIHIzCQkvKiBlbmFibGUgKi8KIAlzeW5jCi0jaWZkZWYgQ0ZHX0wyCisjaWZkZWYgQ09ORklHX1NZU19MMgogCXN5bmMKIAlsaXMJcjMsIEwyX0VOQUJMRUBoCiAJb3JpCXIzLCByMywgTDJfRU5BQkxFQGwKZGlmZiAtLWdpdCBhL2NwdS9tcGM4Nnh4L3NwZWVkLmMgYi9jcHUvbXBjODZ4eC9zcGVlZC5jCmluZGV4IDQxNWFjOWQuLjY0YTM0NzkgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4Nnh4L3NwZWVkLmMKKysrIGIvY3B1L21wYzg2eHgvc3BlZWQuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPG1wYzg2eHguaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CiAKIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwogCkBAIC0zOSw2ICs0MCw3IEBACiAJdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7CiAJdm9sYXRpbGUgY2Nzcl9ndXJfdCAqZ3VyID0gJmltbWFwLT5pbV9ndXI7CiAJdWludCBwbGF0X3JhdGlvLCBlNjAwX3JhdGlvOworCXVpbnQgbGNycl9kaXY7CiAKIAlwbGF0X3JhdGlvID0gKGd1ci0+cG9ycGxsc3IpICYgMHgwMDAwMDAzZTsKIAlwbGF0X3JhdGlvID4+PSAxOwpAQCAtOTAsNiArOTIsMjIgQEAKIAkJc3lzSW5mby0+ZnJlcVByb2Nlc3NvciA9IGU2MDBfcmF0aW8gKyBzeXNJbmZvLT5mcmVxU3lzdGVtQnVzOwogCQlicmVhazsKIAl9CisKKyNpZiBkZWZpbmVkKENPTkZJR19TWVNfTEJDX0xDUlIpCisJLyogV2Ugd2lsbCBwcm9ncmFtIExDUlIgdG8gdGhpcyB2YWx1ZSBsYXRlciAqLworCWxjcnJfZGl2ID0gQ09ORklHX1NZU19MQkNfTENSUiAmIExDUlJfQ0xLRElWOworI2Vsc2UKKwl7CisJCXZvbGF0aWxlIGNjc3JfbGJjX3QgKmxiYyA9ICZpbW1hcC0+aW1fbGJjOworCQlsY3JyX2RpdiA9IGluX2JlMzIoJmxiYy0+bGNycikgJiBMQ1JSX0NMS0RJVjsKKwl9CisjZW5kaWYKKwlpZiAobGNycl9kaXYgPT0gMiB8fCBsY3JyX2RpdiA9PSA0IHx8IGxjcnJfZGl2ID09IDgpIHsKKwkJc3lzSW5mby0+ZnJlcUxvY2FsQnVzID0gc3lzSW5mby0+ZnJlcVN5c3RlbUJ1cyAvIChsY3JyX2RpdiAqIDIpOworCX0gZWxzZSB7CisJCS8qIEluIGNhc2UgYW55b25lIGNhcmVzIHdoYXQgdGhlIHVua25vd24gdmFsdWUgaXMgKi8KKwkJc3lzSW5mby0+ZnJlcUxvY2FsQnVzID0gbGNycl9kaXY7CisJfQogfQogCiAKQEAgLTEwNSw2ICsxMjMsNyBAQAogCWdldF9zeXNfaW5mbygmc3lzX2luZm8pOwogCWdkLT5jcHVfY2xrID0gc3lzX2luZm8uZnJlcVByb2Nlc3NvcjsKIAlnZC0+YnVzX2NsayA9IHN5c19pbmZvLmZyZXFTeXN0ZW1CdXM7CisJZ2QtPmxiY19jbGsgPSBzeXNfaW5mby5mcmVxTG9jYWxCdXM7CiAKIAkvKgogCSAqIFRoZSBiYXNlIGNsb2NrIGZvciBJMkMgZGVwZW5kcyBvbiB0aGUgYWN0dWFsIFNPQy4gIFVuZm9ydHVuYXRlbHksCmRpZmYgLS1naXQgYS9jcHUvbXBjODZ4eC9zdGFydC5TIGIvY3B1L21wYzg2eHgvc3RhcnQuUwppbmRleCA2NjQ1Y2I4Li42M2NjOGRiIDEwMDY0NAotLS0gYS9jcHUvbXBjODZ4eC9zdGFydC5TCisrKyBiL2NwdS9tcGM4Nnh4L3N0YXJ0LlMKQEAgLTk4Miw1ICs5ODIsMyBAQAogCWJscgogI2VuZGlmCiAjZW5kaWYKLQotCmRpZmYgLS1naXQgYS9jcHUvbXBjOHh4L2kyYy5jIGIvY3B1L21wYzh4eC9pMmMuYwppbmRleCAyOWM3YzcxLi4zMzhjYWJhIDEwMDY0NAotLS0gYS9jcHUvbXBjOHh4L2kyYy5jCisrKyBiL2NwdS9tcGM4eHgvaTJjLmMKQEAgLTQyLDE5ICs0Miw2IEBACiAvKiBkZWZpbmUgdG8gZW5hYmxlIGRlYnVnIG1lc3NhZ2VzICovCiAjdW5kZWYJREVCVUdfSTJDCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIFNldCBkZWZhdWx0IHZhbHVlcwotICovCi0jaWZuZGVmCUNPTkZJR19TWVNfSTJDX1NQRUVECi0jZGVmaW5lCUNPTkZJR19TWVNfSTJDX1NQRUVECTUwMDAwCi0jZW5kaWYKLQotI2lmbmRlZglDT05GSUdfU1lTX0kyQ19TTEFWRQotI2RlZmluZQlDT05GSUdfU1lTX0kyQ19TTEFWRQkweEZFCi0jZW5kaWYKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotCiAvKiB0eC9yeCB0aW1lb3V0ICh3ZSBuZWVkIHRoZSBpMmMgZWFybHksIHNvIHdlIGRvbid0IHVzZSBnZXRfdGltZXIoKSkgKi8KICNkZWZpbmUgVE9VVF9MT09QIDEwMDAwMDAKIApAQCAtNzE3LDI0ICs3MDQsNCBAQAogCXJldHVybiAwOwogfQogCi11Y2hhcgotaTJjX3JlZ19yZWFkKHVjaGFyIGkyY19hZGRyLCB1Y2hhciByZWcpCi17Ci0JdWNoYXIgYnVmOwotCi0JaTJjX2luaXQoQ09ORklHX1NZU19JMkNfU1BFRUQsIENPTkZJR19TWVNfSTJDX1NMQVZFKTsKLQotCWkyY19yZWFkKGkyY19hZGRyLCByZWcsIDEsICZidWYsIDEpOwotCi0JcmV0dXJuIChidWYpOwotfQotCi12b2lkCi1pMmNfcmVnX3dyaXRlKHVjaGFyIGkyY19hZGRyLCB1Y2hhciByZWcsIHVjaGFyIHZhbCkKLXsKLQlpMmNfaW5pdChDT05GSUdfU1lTX0kyQ19TUEVFRCwgQ09ORklHX1NZU19JMkNfU0xBVkUpOwotCi0JaTJjX3dyaXRlKGkyY19hZGRyLCByZWcsIDEsICZ2YWwsIDEpOwotfQotCiAjZW5kaWYJLyogQ09ORklHX0hBUkRfSTJDICovCmRpZmYgLS1naXQgYS9jcHUvbXBjOHh4eC9kZHIvY3RybF9yZWdzLmMgYi9jcHUvbXBjOHh4eC9kZHIvY3RybF9yZWdzLmMKaW5kZXggMTc4M2U5Mi4uMjkyOTgwZCAxMDA2NDQKLS0tIGEvY3B1L21wYzh4eHgvZGRyL2N0cmxfcmVncy5jCisrKyBiL2NwdS9tcGM4eHh4L2Rkci9jdHJsX3JlZ3MuYwpAQCAtMTY3LDcgKzE2Nyw3IEBACiAJCXwgKCh0cnJ0X21jbGsgJiAweDMpIDw8IDI2KQkvKiBSUlQgKi8KIAkJfCAoKHR3d3RfbWNsayAmIDB4MykgPDwgMjQpCS8qIFdXVCAqLwogCQl8ICgoYWN0X3BkX2V4aXRfbWNsayAmIDB4NykgPDwgMjApICAvKiBBQ1RfUERfRVhJVCAqLwotCQl8ICgocHJlX3BkX2V4aXRfbWNsayAmIDB4NykgPDwgMTYpICAvKiBQUkVfUERfRVhJVCAqLworCQl8ICgocHJlX3BkX2V4aXRfbWNsayAmIDB4RikgPDwgMTYpICAvKiBQUkVfUERfRVhJVCAqLwogCQl8ICgodGF4cGRfbWNsayAmIDB4ZikgPDwgOCkJLyogT0RUX1BEX0VYSVQgKi8KIAkJfCAoKHRtcmRfbWNsayAmIDB4ZikgPDwgMCkJLyogTVJTX0NZQyAqLwogCQkpOwpAQCAtMTg1LDEwICsxODUsMTQgQEAKIAl1bnNpZ25lZCBpbnQgZXh0X2Nhc2xhdCA9IDA7IC8qIEV4dGVuZGVkIE1DQVMgbGF0ZW5jeSBmcm9tIFJFQUQgY21kICovCiAJdW5zaWduZWQgaW50IGNudGxfYWRqID0gMDsgLyogQ29udHJvbCBBZGp1c3QgKi8KIAorCS8qIElmIHRoZSB0UkFTID4gMTkgTUNMSywgd2UgdXNlIHRoZSBleHQgbW9kZSAqLworCWlmIChwaWNvc190b19tY2xrKGNvbW1vbl9kaW1tLT50UkFTX3BzKSA+IDB4MTMpCisJCWV4dF9hY3R0b3ByZSA9IDE7CisKIAlleHRfcmVmcmVjID0gKHBpY29zX3RvX21jbGsoY29tbW9uX2RpbW0tPnRSRkNfcHMpIC0gOCkgPj4gNDsKIAlkZHItPnRpbWluZ19jZmdfMyA9ICgwCiAJCXwgKChleHRfYWN0dG9wcmUgJiAweDEpIDw8IDI0KQotCQl8ICgoZXh0X3JlZnJlYyAmIDB4NykgPDwgMTYpCisJCXwgKChleHRfcmVmcmVjICYgMHhGKSA8PCAxNikKIAkJfCAoKGV4dF9jYXNsYXQgJiAweDEpIDw8IDEyKQogCQl8ICgoY250bF9hZGogJiAweDcpIDw8IDApCiAJCSk7CkBAIC0yNTEsMTIgKzI1NSwxMiBAQAogCXdydG9yZF9tY2xrID0gcGljb3NfdG9fbWNsayhjb21tb25fZGltbS0+dFdUUl9wcyk7CiAKIAlkZHItPnRpbWluZ19jZmdfMSA9ICgwCi0JCXwgKChwcmV0b2FjdF9tY2xrICYgMHgwNykgPDwgMjgpCisJCXwgKChwcmV0b2FjdF9tY2xrICYgMHgwRikgPDwgMjgpCiAJCXwgKChhY3R0b3ByZV9tY2xrICYgMHgwRikgPDwgMjQpCi0JCXwgKChhY3R0b3J3X21jbGsgJiAweDcpIDw8IDIwKQorCQl8ICgoYWN0dG9yd19tY2xrICYgMHhGKSA8PCAyMCkKIAkJfCAoKGNhc2xhdF9jdHJsICYgMHhGKSA8PCAxNikKIAkJfCAoKHJlZnJlY19jdHJsICYgMHhGKSA8PCAxMikKLQkJfCAoKHdycmVjX21jbGsgJiAweDA3KSA8PCA4KQorCQl8ICgod3JyZWNfbWNsayAmIDB4MEYpIDw8IDgpCiAJCXwgKChhY3R0b2FjdF9tY2xrICYgMHgwNykgPDwgNCkKIAkJfCAoKHdydG9yZF9tY2xrICYgMHgwNykgPDwgMCkKIAkJKTsKQEAgLTMwOSwxMyArMzEzLDEzIEBACiAJZm91cl9hY3QgPSBwaWNvc190b19tY2xrKHBvcHRzLT50RkFXX3dpbmRvd19mb3VyX2FjdGl2YXRlc19wcyk7CiAKIAlkZHItPnRpbWluZ19jZmdfMiA9ICgwCi0JCXwgKChhZGRfbGF0X21jbGsgJiAweDcpIDw8IDI4KQorCQl8ICgoYWRkX2xhdF9tY2xrICYgMHhmKSA8PCAyOCkKIAkJfCAoKGNwbyAmIDB4MWYpIDw8IDIzKQotCQl8ICgod3JfbGF0ICYgMHg3KSA8PCAxOSkKKwkJfCAoKHdyX2xhdCAmIDB4ZikgPDwgMTkpCiAJCXwgKChyZF90b19wcmUgJiAweDcpIDw8IDEzKQogCQl8ICgod3JfZGF0YV9kZWxheSAmIDB4NykgPDwgMTApCiAJCXwgKChja2VfcGxzICYgMHg3KSA8PCA2KQotCQl8ICgoZm91cl9hY3QgJiAweDFmKSA8PCAwKQorCQl8ICgoZm91cl9hY3QgJiAweDNmKSA8PCAwKQogCQkpOwogCWRlYnVnKCJGU0xERFI6IHRpbWluZ19jZmdfMiA9IDB4JTA4eFxuIiwgZGRyLT50aW1pbmdfY2ZnXzIpOwogfQpAQCAtMzMyLDcgKzMzNiw3IEBACiAJdW5zaWduZWQgaW50IHNkcmFtX3R5cGU7CS8qIFR5cGUgb2YgU0RSQU0gKi8KIAl1bnNpZ25lZCBpbnQgZHluX3B3cjsJCS8qIER5bmFtaWMgcG93ZXIgbWFuYWdlbWVudCBtb2RlICovCiAJdW5zaWduZWQgaW50IGRidzsJCS8qIERSQU0gZHRhIGJ1cyB3aWR0aCAqLwotCXVuc2lnbmVkIGludCBlaWdodF9iZTsJCS8qIDgtYmVhdCBidXJzdCBlbmFibGUgKi8KKwl1bnNpZ25lZCBpbnQgZWlnaHRfYmUgPSAwOwkvKiA4LWJlYXQgYnVyc3QgZW5hYmxlLCBERFIyIGlzIHplcm8gKi8KIAl1bnNpZ25lZCBpbnQgbmNhcCA9IDA7CQkvKiBOb24tY29uY3VycmVudCBhdXRvLXByZWNoYXJnZSAqLwogCXVuc2lnbmVkIGludCB0aHJlZVRfZW47CQkvKiBFbmFibGUgM1QgdGltaW5nICovCiAJdW5zaWduZWQgaW50IHR3b1RfZW47CQkvKiBFbmFibGUgMlQgdGltaW5nICovCkBAIC0zNTksNyArMzYzLDkgQEAKIAogCWR5bl9wd3IgPSBwb3B0cy0+ZHluYW1pY19wb3dlcjsKIAlkYncgPSBwb3B0cy0+ZGF0YV9idXNfd2lkdGg7Ci0JZWlnaHRfYmUgPSAwOwkJLyogYWx3YXlzIDAgZm9yIEREUjIgKi8KKwkvKiBERFIzIG11c3QgdXNlIDgtYmVhdCBidXJzdHMgd2hlbiB1c2luZyAzMi1iaXQgYnVzIG1vZGUgKi8KKwlpZiAoKHNkcmFtX3R5cGUgPT0gU0RSQU1fVFlQRV9ERFIzKSAmJiAoZGJ3ID09IDB4MSkpCisJCWVpZ2h0X2JlID0gMTsKIAl0aHJlZVRfZW4gPSBwb3B0cy0+dGhyZWVUX2VuOwogCXR3b1RfZW4gPSBwb3B0cy0+dHdvVF9lbjsKIAliYV9pbnRsdl9jdGwgPSBwb3B0cy0+YmFfaW50bHZfY3RsOwpAQCAtNjkxLDEwICs2OTcsMTAgQEAKIAl1bnNpZ25lZCBpbnQgd29kdF9vZmYgPSAwOwkvKiBXcml0ZSB0byBPRFQgb2ZmICovCiAKIAlkZHItPnRpbWluZ19jZmdfNSA9ICgwCi0JCQkgICAgIHwgKChyb2R0X29uICYgMHhmKSA8PCAyNCkKLQkJCSAgICAgfCAoKHJvZHRfb2ZmICYgMHhmKSA8PCAyMCkKLQkJCSAgICAgfCAoKHdvZHRfb24gJiAweGYpIDw8IDEyKQotCQkJICAgICB8ICgod29kdF9vZmYgJiAweGYpIDw8IDgpCisJCQkgICAgIHwgKChyb2R0X29uICYgMHgxZikgPDwgMjQpCisJCQkgICAgIHwgKChyb2R0X29mZiAmIDB4NykgPDwgMjApCisJCQkgICAgIHwgKCh3b2R0X29uICYgMHgxZikgPDwgMTIpCisJCQkgICAgIHwgKCh3b2R0X29mZiAmIDB4NykgPDwgOCkKIAkJCSAgICAgKTsKIAlkZWJ1ZygiRlNMRERSOiB0aW1pbmdfY2ZnXzUgPSAweCUwOHhcbiIsIGRkci0+dGltaW5nX2NmZ181KTsKIH0KQEAgLTc0NCwxNSArNzUwLDE0IEBACiAJCQkgICAgICAgfCAoKHdybHZsX2Rxc2VuICYgMHg3KSA8PCAxNikKIAkJCSAgICAgICB8ICgod3Jsdmxfc21wbCAmIDB4ZikgPDwgMTIpCiAJCQkgICAgICAgfCAoKHdybHZsX3dsciAmIDB4NykgPDwgOCkKLQkJCSAgICAgICB8ICgod3Jsdmxfc3RhcnQgJiAweEYpIDw8IDApCisJCQkgICAgICAgfCAoKHdybHZsX3N0YXJ0ICYgMHgxRikgPDwgMCkKIAkJCSAgICAgICApOwogfQogCiAvKiBERFIgU2VsZiBSZWZyZXNoIENvdW50ZXIgKEREUl9TUl9DTlRSKSAqLwotc3RhdGljIHZvaWQgc2V0X2Rkcl9zcl9jbnRyKGZzbF9kZHJfY2ZnX3JlZ3NfdCAqZGRyKQorc3RhdGljIHZvaWQgc2V0X2Rkcl9zcl9jbnRyKGZzbF9kZHJfY2ZnX3JlZ3NfdCAqZGRyLCB1bnNpZ25lZCBpbnQgc3JfaXQpCiB7Ci0JdW5zaWduZWQgaW50IHNyX2l0ID0gMDsJLyogU2VsZiBSZWZyZXNoIElkbGUgVGhyZXNob2xkICovCi0KKwkvKiBTZWxmIFJlZnJlc2ggSWRsZSBUaHJlc2hvbGQgKi8KIAlkZHItPmRkcl9zcl9jbnRyID0gKHNyX2l0ICYgMHhGKSA8PCAxNjsKIH0KIApAQCAtODU1LDYgKzg2MCw3IEBACiAJdW5zaWduZWQgaW50IGk7CiAJdW5zaWduZWQgaW50IGNhc19sYXRlbmN5OwogCXVuc2lnbmVkIGludCBhZGRpdGl2ZV9sYXRlbmN5OworCXVuc2lnbmVkIGludCBzcl9pdDsKIAogCW1lbXNldChkZHIsIDAsIHNpemVvZihmc2xfZGRyX2NmZ19yZWdzX3QpKTsKIApAQCAtODc2LDYgKzg4MiwxMCBAQAogCQk/IHBvcHRzLT5hZGRpdGl2ZV9sYXRlbmN5X292ZXJyaWRlX3ZhbHVlCiAJCTogY29tbW9uX2RpbW0tPmFkZGl0aXZlX2xhdGVuY3k7CiAKKwlzcl9pdCA9IChwb3B0cy0+YXV0b19zZWxmX3JlZnJlc2hfZW4pCisJCT8gcG9wdHMtPnNyX2l0CisJCTogMDsKKwogCS8qIENoaXAgU2VsZWN0IE1lbW9yeSBCb3VuZHMgKENTbl9CTkRTKSAqLwogCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfQ0hJUF9TRUxFQ1RTX1BFUl9DVFJMOyBpKyspIHsKIAkJcGh5c19zaXplX3Qgc2EgPSAwOwpAQCAtMTAzNiw3ICsxMDQ2LDcgQEAKIAlzZXRfZGRyX3dybHZsX2NudGwoZGRyKTsKIAogCXNldF9kZHJfcGRfY250bChkZHIpOwotCXNldF9kZHJfc3JfY250cihkZHIpOworCXNldF9kZHJfc3JfY250cihkZHIsIHNyX2l0KTsKIAogCXNldF9kZHJfc2RyYW1fcmN3XzEoZGRyKTsKIAlzZXRfZGRyX3NkcmFtX3Jjd18yKGRkcik7CmRpZmYgLS1naXQgYS9jcHUvbXBjOHh4eC9kZHIvb3B0aW9ucy5jIGIvY3B1L21wYzh4eHgvZGRyL29wdGlvbnMuYwppbmRleCBhZjdmNzNhLi5kNDcwMmQ3IDEwMDY0NAotLS0gYS9jcHUvbXBjOHh4eC9kZHIvb3B0aW9ucy5jCisrKyBiL2NwdS9tcGM4eHh4L2Rkci9vcHRpb25zLmMKQEAgLTE0Miw3ICsxNDIsNyBAQAogCSAqCS0gbnVtYmVyIG9mIGNvbXBvbmVudHMsIG51bWJlciBvZiBhY3RpdmUgcmFua3MKIAkgKgktIGhvdyBtdWNoIHRpbWUgeW91IHdhbnQgdG8gc3BlbmQgcGxheWluZyBhcm91bmQKIAkgKi8KLQlwb3B0cy0+dHdvVF9lbiA9IDE7CisJcG9wdHMtPnR3b1RfZW4gPSAwOwogCXBvcHRzLT50aHJlZVRfZW4gPSAwOwogCiAJLyoKZGlmZiAtLWdpdCBhL2NwdS9wcGM0eHgvY3B1LmMgYi9jcHUvcHBjNHh4L2NwdS5jCmluZGV4IDFmMGI1NmMuLmQwOWM0YzIgMTAwNjQ0Ci0tLSBhL2NwdS9wcGM0eHgvY3B1LmMKKysrIGIvY3B1L3BwYzR4eC9jcHUuYwpAQCAtNzA2LDQgKzcwNiwzIEBACiAjZW5kaWYKIAlyZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9pMmMuYyBiL2NwdS9wcGM0eHgvaTJjLmMKaW5kZXggOTA3M2VlMi4uOWQ0MTZjYSAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC9pMmMuYworKysgYi9jcHUvcHBjNHh4L2kyYy5jCkBAIC00MTksMjYgKzQxOSw2IEBACiAJcmV0dXJuIChpMmNfdHJhbnNmZXIoMCwgY2hpcDw8MSwgJnhhZGRyWzQtYWxlbl0sIGFsZW4sIGJ1ZmZlciwgbGVuICkgIT0gMCk7CiB9CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIFJlYWQgYSByZWdpc3RlcgotICovCi11Y2hhciBpMmNfcmVnX3JlYWQodWNoYXIgaTJjX2FkZHIsIHVjaGFyIHJlZykKLXsKLQl1Y2hhciBidWY7Ci0KLQlpMmNfcmVhZChpMmNfYWRkciwgcmVnLCAxLCAmYnVmLCAxKTsKLQotCXJldHVybiAoYnVmKTsKLX0KLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogV3JpdGUgYSByZWdpc3RlcgotICovCi12b2lkIGkyY19yZWdfd3JpdGUodWNoYXIgaTJjX2FkZHIsIHVjaGFyIHJlZywgdWNoYXIgdmFsKQotewotCWkyY193cml0ZShpMmNfYWRkciwgcmVnLCAxLCAmdmFsLCAxKTsKLX0KLQogI2lmIGRlZmluZWQoQ09ORklHX0kyQ19NVUxUSV9CVVMpCiAvKgogICogRnVuY3Rpb25zIGZvciBtdWx0aXBsZSBJMkMgYnVzIGhhbmRsaW5nCmRpZmYgLS1naXQgYS9jcHUvcHBjNHh4L3N0YXJ0LlMgYi9jcHUvcHBjNHh4L3N0YXJ0LlMKaW5kZXggNGI1MzQ5ZS4uZjJiODkwOCAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC9zdGFydC5TCisrKyBiL2NwdS9wcGM0eHgvc3RhcnQuUwpAQCAtNzI3LDcgKzcyNyw3IEBACiAJb3JpCXIyLHIyLDB4ZmZmZgogCW1mZGNyCXIxLElTUkFNMV9EUEMKIAlhbmQJcjEscjEscjIJCS8qIERpc2FibGUgcGFyaXR5IGNoZWNrICovCi0JbXRkY3IJSVNSQU0xX0RQQyxyMQkKKwltdGRjcglJU1JBTTFfRFBDLHIxCiAJbWZkY3IJcjEsSVNSQU0xX1BNRUcKIAlhbmQJcjEscjEscjIJCS8qIERpc2FibGUgcHdyIG1nbXQgKi8KIAltdGRjcglJU1JBTTFfUE1FRyxyMQpkaWZmIC0tZ2l0IGEvY3B1L3B4YS9jb25maWcubWsgYi9jcHUvcHhhL2NvbmZpZy5tawppbmRleCBmMGI4NmI3Li5hZjkxMGUyIDEwMDY0NAotLS0gYS9jcHUvcHhhL2NvbmZpZy5taworKysgYi9jcHUvcHhhL2NvbmZpZy5tawpAQCAtMzIsNCArMzIsNSBAQAogIwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFBMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbWFwY3MtMzIsLW1hYmk9YXBjcy1nbnUpCitQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1uby10aHVtYi1pbnRlcndvcmssKQogUExBVEZPUk1fUkVMRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tc2hvcnQtbG9hZC1ieXRlcywkKGNhbGwgY2Mtb3B0aW9uLC1tYWxpZ25tZW50LXRyYXBzLCkpCmRpZmYgLS1naXQgYS9jcHUvcHhhL2kyYy5jIGIvY3B1L3B4YS9pMmMuYwppbmRleCAwODA0MmJlLi42YjcyYmExIDEwMDY0NAotLS0gYS9jcHUvcHhhL2kyYy5jCisrKyBiL2NwdS9weGEvaTJjLmMKQEAgLTQ1NSwxOSArNDU1LDQgQEAKIAogfQogCi11Y2hhciBpMmNfcmVnX3JlYWQgKHVjaGFyIGNoaXAsIHVjaGFyIHJlZykKLXsKLQl1Y2hhciBidWY7Ci0KLQlQUklOVEQoKCJpMmNfcmVnX3JlYWQoY2hpcD0weCUwMngsIHJlZz0weCUwMngpXG4iLGNoaXAscmVnKSk7Ci0JaTJjX3JlYWQoY2hpcCwgcmVnLCAxLCAmYnVmLCAxKTsKLQlyZXR1cm4gKGJ1Zik7Ci19Ci0KLXZvaWQgIGkyY19yZWdfd3JpdGUodWNoYXIgY2hpcCwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCi17Ci0JUFJJTlREKCgiaTJjX3JlZ193cml0ZShjaGlwPTB4JTAyeCwgcmVnPTB4JTAyeCwgdmFsPTB4JTAyeClcbiIsY2hpcCxyZWcsdmFsKSk7Ci0JaTJjX3dyaXRlKGNoaXAsIHJlZywgMSwgJnZhbCwgMSk7Ci19Ci0KICNlbmRpZgkvKiBDT05GSUdfSEFSRF9JMkMgKi8KZGlmZiAtLWdpdCBhL2NwdS9zM2M0NGIwL2NvbmZpZy5tayBiL2NwdS9zM2M0NGIwL2NvbmZpZy5tawppbmRleCA2ZGM5YzQ2Li4wMWU3MDQwIDEwMDY0NAotLS0gYS9jcHUvczNjNDRiMC9jb25maWcubWsKKysrIGIvY3B1L3MzYzQ0YjAvY29uZmlnLm1rCkBAIC0zMiw0ICszMiw1IEBACiAjCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogUExBVEZPUk1fQ1BQRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tYXBjcy0zMiwtbWFiaT1hcGNzLWdudSkKK1BMQVRGT1JNX0NQUEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbW5vLXRodW1iLWludGVyd29yaywpCiBQTEFURk9STV9SRUxGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1zaG9ydC1sb2FkLWJ5dGVzLCQoY2FsbCBjYy1vcHRpb24sLW1hbGlnbm1lbnQtdHJhcHMsKSkKZGlmZiAtLWdpdCBhL2NwdS9zYTExMDAvY29uZmlnLm1rIGIvY3B1L3NhMTEwMC9jb25maWcubWsKaW5kZXggNWJlN2RmYi4uOWVmNGExOSAxMDA2NDQKLS0tIGEvY3B1L3NhMTEwMC9jb25maWcubWsKKysrIGIvY3B1L3NhMTEwMC9jb25maWcubWsKQEAgLTMyLDQgKzMyLDUgQEAKICMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBQTEFURk9STV9DUFBGTEFHUyArPSQoY2FsbCBjYy1vcHRpb24sLW1hcGNzLTMyLC1tYWJpPWFwY3MtZ251KQorUExBVEZPUk1fQ1BQRkxBR1MgKz0kKGNhbGwgY2Mtb3B0aW9uLC1tbm8tdGh1bWItaW50ZXJ3b3JrLCkKIFBMQVRGT1JNX1JFTEZMQUdTICs9JChjYWxsIGNjLW9wdGlvbiwtbXNob3J0LWxvYWQtYnl0ZXMsJChjYWxsIGNjLW9wdGlvbiwtbWFsaWdubWVudC10cmFwcywpKQpkaWZmIC0tZ2l0IGEvY3B1L3NoMi9NYWtlZmlsZSBiL2NwdS9zaDIvTWFrZWZpbGUKaW5kZXggNTBmNjcyMC4uMzQ2ZDMyOCAxMDA2NDQKLS0tIGEvY3B1L3NoMi9NYWtlZmlsZQorKysgYi9jcHUvc2gyL01ha2VmaWxlCkBAIC0yOCwxOSArMjgsMjQgQEAKIAogTElCCT0gJChvYmopbGliJChDUFUpLmEKIAotU1RBUlQJPSBzdGFydC5vCi1PQkpTCT0gY3B1Lm8gaW50ZXJydXB0cy5vIHdhdGNoZG9nLm8gdGltZS5vICMgY2FjaGUubworU09CSlMJPSBzdGFydC5vCitDT0JKUwk9IGNwdS5vIGludGVycnVwdHMubyB3YXRjaGRvZy5vCiAKLWFsbDoJLmRlcGVuZCAkKFNUQVJUKSAkKExJQikKK1NSQ1MgICAgOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKK09CSlMgICAgOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQorU09CSlMgICA6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChPQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQorJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCisKK2NsZWFuOgorCXJtIC1mICQoU09CSlMpICQoT0JKUykKKworZGlzdGNsZWFuOgljbGVhbgorCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0uZGVwZW5kOglNYWtlZmlsZSAkKFNUQVJUOi5vPS5TKSAkKE9CSlM6Lm89LmMpCi0JCSQoQ0MpIC1NICQoQ0ZMQUdTKSAkKFNUQVJUOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKLQogIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0CiBpbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKIApkaWZmIC0tZ2l0IGEvY3B1L3NoMy9NYWtlZmlsZSBiL2NwdS9zaDMvTWFrZWZpbGUKaW5kZXggNTg3NDEzZC4uMzVlOGY1MSAxMDA2NDQKLS0tIGEvY3B1L3NoMy9NYWtlZmlsZQorKysgYi9jcHUvc2gzL01ha2VmaWxlCkBAIC0zMiw3ICszMiw3IEBACiBMSUIJPSAkKG9iailsaWIkKENQVSkuYQogCiBTT0JKUwk9IHN0YXJ0Lm8KLUNPQkpTCT0gY3B1Lm8gaW50ZXJydXB0cy5vIHdhdGNoZG9nLm8gdGltZS5vIGNhY2hlLm8KK0NPQkpTCT0gY3B1Lm8gaW50ZXJydXB0cy5vIHdhdGNoZG9nLm8gY2FjaGUubwogCiBTUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKZGlmZiAtLWdpdCBhL2NwdS9zaDMvdGltZS5jIGIvY3B1L3NoMy90aW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYjM2NTkuLjAwMDAwMDAKLS0tIGEvY3B1L3NoMy90aW1lLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwNwotICogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotICoKLSAqIChDKSBDb3B5cmlnaHQgMjAwNwotICogTm9ib2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0gKgotICogKEMpIENvcHlyaWdodCAyMDAzCi0gKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb21tb24uaD4KLSNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+Ci0jaW5jbHVkZSA8YXNtL2lvLmg+Ci0KLSNkZWZpbmUgVE1VX01BWF9DT1VOVEVSICh+MFVMKQotCi1zdGF0aWMgdm9pZCB0bXVfdGltZXJfc3RhcnQodW5zaWduZWQgaW50IHRpbWVyKQotewotCWlmICh0aW1lciA+IDIpCi0JCXJldHVybjsKLQotCW91dGIoaW5iKFRTVFIpIHwgKDEgPDwgdGltZXIpLCBUU1RSKTsKLX0KLQotc3RhdGljIHZvaWQgdG11X3RpbWVyX3N0b3AodW5zaWduZWQgaW50IHRpbWVyKQotewotCXU4IHZhbCA9IGluYihUU1RSKTsKLQotCWlmICh0aW1lciA+IDIpCi0JCXJldHVybjsKLQlvdXRiKHZhbCAmIH4oMSA8PCB0aW1lciksIFRTVFIpOwotfQotCi1pbnQgdGltZXJfaW5pdCh2b2lkKQotewotCS8qIERpdmlkZSBjbG9jayBieSA0ICovCi0Jb3V0dygwLCBUQ1IwKTsKLQotCXRtdV90aW1lcl9zdG9wKDApOwotCXRtdV90aW1lcl9zdGFydCgwKTsKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAgIEluIHRoZW9yeSB3ZSBzaG91bGQgcmV0dXJuIGEgdHJ1ZSA2NGJpdCB2YWx1ZSAoaWUgc29tZXRoaW5nIHRoYXQgZG9lc24ndAotICAgb3ZlcmZsb3cpLiBIb3dldmVyLCB3ZSBkb24ndC4gVGhlcmVmb3JlIGlmIFRNVSBydW5zIGF0IGZhc3Rlc3QgcmF0ZSBvZgotICAgNi43NSBNSHogdGhpcyB2YWx1ZSB3aWxsIHdyYXAgYWZ0ZXIgdS1ib290IGhhcyBiZWVuIHJ1bm5pbmcgZm9yIGFwcHJveAotICAgMTAgbWludXRlcy4KLSovCi11bnNpZ25lZCBsb25nIGxvbmcgZ2V0X3RpY2tzKHZvaWQpCi17Ci0JcmV0dXJuICgwIC0gaW5sKFRDTlQwKSk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgZ2V0X3RpbWVyKHVuc2lnbmVkIGxvbmcgYmFzZSkKLXsKLQlyZXR1cm4gKCgwIC0gaW5sKFRDTlQwKSkgLSBiYXNlKTsKLX0KLQotdm9pZCBzZXRfdGltZXIodW5zaWduZWQgbG9uZyB0KQotewotCW91dGwoMCAtIHQsIFRDTlQwKTsKLX0KLQotdm9pZCByZXNldF90aW1lcih2b2lkKQotewotCXRtdV90aW1lcl9zdG9wKDApOwotCXNldF90aW1lcigwKTsKLQl0bXVfdGltZXJfc3RhcnQoMCk7Ci19Ci0KLXZvaWQgdWRlbGF5KHVuc2lnbmVkIGxvbmcgdXNlYykKLXsKLQl1bnNpZ25lZCBpbnQgc3RhcnQgPSBnZXRfdGltZXIoMCk7Ci0JdW5zaWduZWQgaW50IGVuZCA9IHN0YXJ0ICsgKHVzZWMgKiAoKENPTkZJR19TWVNfSFogKyA1MDAwMDApIC8gMTAwMDAwMCkpOwotCi0Jd2hpbGUgKGdldF90aW1lcigwKSA8IGVuZCkKLQkJY29udGludWU7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgZ2V0X3RiY2xrKHZvaWQpCi17Ci0JcmV0dXJuIENPTkZJR19TWVNfSFo7Ci19CmRpZmYgLS1naXQgYS9jcHUvc2g0L01ha2VmaWxlIGIvY3B1L3NoNC9NYWtlZmlsZQppbmRleCBkM2M1ZWVmLi4zYzk2YTQ5IDEwMDY0NAotLS0gYS9jcHUvc2g0L01ha2VmaWxlCisrKyBiL2NwdS9zaDQvTWFrZWZpbGUKQEAgLTI5LDcgKzI5LDcgQEAKIExJQgk9ICQob2JqKWxpYiQoQ1BVKS5hCiAKIFNPQkpTCT0gc3RhcnQubwotQ09CSlMJPSBjcHUubyBpbnRlcnJ1cHRzLm8gd2F0Y2hkb2cubyB0aW1lLm8gY2FjaGUubworQ09CSlMJPSBjcHUubyBpbnRlcnJ1cHRzLm8gd2F0Y2hkb2cubyBjYWNoZS5vCiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQpkaWZmIC0tZ2l0IGEvY3B1L3NoNC90aW1lLmMgYi9jcHUvc2g0L3RpbWUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdlMGFlMi4uMDAwMDAwMAotLS0gYS9jcHUvc2g0L3RpbWUuYworKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDcKLSAqIE5vYm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICoKLSAqIChDKSBDb3B5cmlnaHQgMjAwMwotICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgotCi0jZGVmaW5lIFRNVV9NQVhfQ09VTlRFUiAofjBVTCkKLQotc3RhdGljIHZvaWQgdG11X3RpbWVyX3N0YXJ0ICh1bnNpZ25lZCBpbnQgdGltZXIpCi17Ci0JaWYgKHRpbWVyID4gMikKLQkJcmV0dXJuOwotCi0JKigodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSBUU1RSKSB8PSAoMSA8PCB0aW1lcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRtdV90aW1lcl9zdG9wICh1bnNpZ25lZCBpbnQgdGltZXIpCi17Ci0JdTggdmFsID0gKigodm9sYXRpbGUgdTggKilUU1RSKTsKLQlpZiAodGltZXIgPiAyKQotCQlyZXR1cm47Ci0JKigodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKVRTVFIpID0gdmFsICZ+KDEgPDwgdGltZXIpOwotfQotCi1pbnQgdGltZXJfaW5pdCAodm9pZCkKLXsKLQkvKiBEaXZpZGUgY2xvY2sgYnkgNCAqLwotCSoodm9sYXRpbGUgdTE2ICopVENSMCA9IDA7Ci0KLQl0bXVfdGltZXJfc3RvcCgwKTsKLQl0bXVfdGltZXJfc3RhcnQoMCk7Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gICBJbiB0aGVvcnkgd2Ugc2hvdWxkIHJldHVybiBhIHRydWUgNjRiaXQgdmFsdWUgKGllIHNvbWV0aGluZyB0aGF0IGRvZXNuJ3QKLSAgIG92ZXJmbG93KS4gSG93ZXZlciwgd2UgZG9uJ3QuIFRoZXJlZm9yZSBpZiBUTVUgcnVucyBhdCBmYXN0ZXN0IHJhdGUgb2YKLSAgIDYuNzUgTUh6IHRoaXMgdmFsdWUgd2lsbCB3cmFwIGFmdGVyIHUtYm9vdCBoYXMgYmVlbiBydW5uaW5nIGZvciBhcHByb3gKLSAgIDEwIG1pbnV0ZXMuCi0qLwotdW5zaWduZWQgbG9uZyBsb25nIGdldF90aWNrcyAodm9pZCkKLXsKLQlyZXR1cm4gKDAgLSAqKCh2b2xhdGlsZSB1MzIgKikgVENOVDApKTsKLX0KLQotdW5zaWduZWQgbG9uZyBnZXRfdGltZXIgKHVuc2lnbmVkIGxvbmcgYmFzZSkKLXsKLQlyZXR1cm4gKCgwIC0gKigodm9sYXRpbGUgdTMyICopIFRDTlQwKSkgLSBiYXNlKTsKLX0KLQotdm9pZCBzZXRfdGltZXIgKHVuc2lnbmVkIGxvbmcgdCkKLXsKLQkqKCh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgVENOVDApID0gKDAgLSB0KTsKLX0KLQotdm9pZCByZXNldF90aW1lciAodm9pZCkKLXsKLQl0bXVfdGltZXJfc3RvcCgwKTsKLQlzZXRfdGltZXIgKDApOwotCXRtdV90aW1lcl9zdGFydCgwKTsKLX0KLQotdm9pZCB1ZGVsYXkgKHVuc2lnbmVkIGxvbmcgdXNlYykKLXsKLQl1bnNpZ25lZCBpbnQgc3RhcnQgPSBnZXRfdGltZXIgKDApOwotCXVuc2lnbmVkIGludCBlbmQgPSBzdGFydCArICh1c2VjICogKChDT05GSUdfU1lTX0haICsgNTAwMDAwKSAvIDEwMDAwMDApKTsKLQotCXdoaWxlIChnZXRfdGltZXIgKDApIDwgZW5kKQotCQljb250aW51ZTsKLX0KLQotdW5zaWduZWQgbG9uZyBnZXRfdGJjbGsgKHZvaWQpCi17Ci0JcmV0dXJuIENPTkZJR19TWVNfSFo7Ci19CmRpZmYgLS1naXQgYS9kb2MvUkVBRE1FLk5ldENvbnNvbGUgYi9kb2MvUkVBRE1FLk5ldENvbnNvbGUKaW5kZXggZmVhOGUzMy4uOTRjODgxNiAxMDA2NDQKLS0tIGEvZG9jL1JFQURNRS5OZXRDb25zb2xlCisrKyBiL2RvYy9SRUFETUUuTmV0Q29uc29sZQpAQCAtMjIsMjEgKzIyLDExIEBACiAKIE9uIHRoZSBob3N0IHNpZGUsIHBsZWFzZSB1c2UgdGhpcyBzY3JpcHQgdG8gYWNjZXNzIHRoZSBjb25zb2xlOgogCi0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0jISAvYmluL2Jhc2gKKwl0b29scy9uZXRjb25zb2xlIDxpcD4gW3BvcnRdCiAKLVsgJCMgPSAxIF0gfHwgeyBlY2hvICJVc2FnZTogJDAgdGFyZ2V0X2lwIiA+JjIgOyBleGl0IDEgOyB9Ci1UQVJHRVRfSVA9JDEKLQotc3R0eSAtaWNhbm9uIC1lY2hvIGludHIgXlQKLW5jIC11IC1sIC1wIDY2NjYgPCAvZGV2L251bGwgJgotbmMgLXUgJHtUQVJHRVRfSVB9IDY2NjYKLXN0dHkgaWNhbm9uIGVjaG8gaW50ciBeQwotKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1UaGUgc2NyaXB0IGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHdoaWNoIGlzIGludGVycHJldGVkIGFzICB0aGUKLXRhcmdldCBJUCBhZGRyZXNzIChvciBob3N0IG5hbWUsIGFzc3VtaW5nIEROUyBpcyB3b3JraW5nKS4gVGhlIHNjcmlwdAotY2FuIGJlIGludGVycnVwdGVkIGJ5IHByZXNzaW5nIF5UIChDVFJMLVQpLgorVGhlIHNjcmlwdCB1c2VzIG5ldGNhdCB0byB0YWxrIHRvIHRoZSBib2FyZCBvdmVyIFVEUC4gIEl0IHJlcXVpcmVzIHlvdSB0bworc3BlY2lmeSB0aGUgdGFyZ2V0IElQIGFkZHJlc3MgKG9yIGhvc3QgbmFtZSwgYXNzdW1pbmcgRE5TIGlzIHdvcmtpbmcpLiBUaGUKK3NjcmlwdCBjYW4gYmUgaW50ZXJydXB0ZWQgYnkgcHJlc3NpbmcgXlQgKENUUkwtVCkuCiAKIEJlIGF3YXJlIHRoYXQgaW4gc29tZSBkaXN0cmlidXRpdmVzIChGZWRvcmEgQ29yZSA1IGF0IGxlYXN0KQogdXNhZ2Ugb2YgbmMgaGFzIGJlZW4gY2hhbmdlZCBhbmQgLWwgYW5kIC1wIG9wdGlvbnMgYXJlIGNvbnNpZGVyZWQKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUuYXQ5MSBiL2RvYy9SRUFETUUuYXQ5MQppbmRleCA4Mzg3NjlhLi40ZTM5MjhhIDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLmF0OTEKKysrIGIvZG9jL1JFQURNRS5hdDkxCkBAIC0zLDcgKzMsNyBAQAogaHR0cDovL2F0bWVsLmNvbS9keW4vcHJvZHVjdHMvdG9vbHMuYXNwP2ZhbWlseV9pZD02MDUjMTQ0MwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFUOTFTQU05MjYwRUsKK0FUOTFTQU05MjYwRUsgJiBBVDkxU0FNOVhFRUsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBNZW1vcnkgbWFwCmRpZmYgLS1naXQgYS9kb2MvUkVBRE1FLmttZXRlcjEgYi9kb2MvUkVBRE1FLmttZXRlcjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlYmI3YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9SRUFETUUua21ldGVyMQpAQCAtMCwwICsxLDkxIEBACitLZXltaWxlIGttZXRlcjEgQm9hcmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxLglBbHRlcm5hdGl2ZSBCb290IEVFUFJPTQorCisgICAgVXBvbiB0aGUga21ldGVyMSBzdGFydHVwIHRoZSBJMkNfMSBjb250cm9sbGVyIGlzIHVzZWQgdG8gZmV0Y2ggdGhlIGJvb3QKKyAgICBjb25maWd1cmF0aW9uIGZyb20gYSBzZXJpYWwgRUVQUk9NLiBEdXJpbmcgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1Z2dpbmcKKyAgICBwaGFzZSBpdCBtaWdodCBiZSBoZWxwZnVsIHRvIGFwcGx5IGFuIGFsdGVybmF0aXZlIGJvb3QgY29uZmlndXJhdGlvbiBpbgorICAgIGEgc2ltcGxlIHdheS4gVGhlcmVmb3JlIGl0IGlzIGFuIGFsdGVybmF0aXZlIGJvb3QgZWVwcm9tIG9uIHRoZSBQSUdHWSwKKyAgICB3aGljaCBjYW4gYmUgYWN0aXZhdGVkIGJ5IHNldHRpbmcgdGhlICJTVCIganVtcGVyIG9uIHRoZSBQSUdHWSBib2FyZC4KKworMi4JTWVtb3J5IE1hcAorCisgICAgQmFzZUFkZHIgICAgUG9ydFN6ICBTaXplICBEZXZpY2UKKyAgICAtLS0tLS0tLS0tLSAtLS0tLS0gIC0tLS0tICAtLS0tLS0KKyAgICAweDAwMDBfMDAwMCA2NCBiaXQgIDI1Nk1CICBERFIKKyAgICAweDgwMDBfMDAwMCAgOCBiaXQgIDI1NktCICBHUElPL1BJR0dZIG9uIENTMQorICAgIDB4YTAwMF8wMDAwICA4IGJpdCAgMjU2TUIgIFBBWEUgb24gQ1MzCisgICAgMHhlMDAwXzAwMDAgICAgICAgICAgIDJNQiAgSW50IE1lbSBSZWcgU3BhY2UKKyAgICAweGYwMDBfMDAwMCAxNiBiaXQgIDI1Nk1CICBGTEFTSCBvbiBDUzAKKworCisgICAgRERSLVNEUkFNOgorICAgIFRoZSBjdXJyZW50IHJlYWxpemF0aW9uIGlzIG1hZGUgd2l0aCBmb3VyIDE2LWJpdHMgbWVtb3J5IGRldmljZXMuCisgICAgTW91bnRpbmcgb3B0aW9ucyBoYXZlIGJlZW4gZm9yZXNlZW4gZm9yIGRldmljZSBhcmNoaXRlY3R1cmVzIGZyb20KKyAgICA0TXgxNiB0byA1MTJNeDE2LiBUaGUga21ldGVyMSBpcyBlcXVpcHBlZCB3aXRoIGZvdXIgMzJNeDE2IGRldmljZXMKKyAgICB0aHVzIHJlc3VsdGluZyBpbiBhIHRvdGFsIGNhcGFjaXR5IG9mIDI1Nk1CeXRlcy4KKworMy4gQ29tcGlsYXRpb24KKworCUFzc3VtaW5nIHlvdSdyZSB1c2luZyBCQVNIIHNoZWxsOgorCisJCWV4cG9ydCBDUk9TU19DT01QSUxFPXlvdXItY3Jvc3MtY29tcGlsZS1wcmVmaXgKKwkJY2QgdS1ib290CisJCW1ha2UgZGlzdGNsZWFuCisJCW1ha2Uga21ldGVyMV9jb25maWcKKwkJbWFrZQorCis0LiBEb3dubG9hZGluZyBhbmQgRmxhc2hpbmcgSW1hZ2VzCisKKzQuMCBEb3dubG9hZCBvdmVyIHNlcmlhbCBsaW5lIHVzaW5nIEtlcm1pdDoKKworCWxvYWRiCisJW0Ryb3AgdG8ga2VybWl0OgorCSAgICBeXGMKKwkgICAgc2VuZCA8dS1ib290LWJpbi1pbWFnZT4KKwkgICAgYworCV0KKworCisgICAgT3IgdmlhIHRmdHA6CisKKwl0ZnRwIDEwMDAwIHUtYm9vdC5iaW4KKyAgICA9PiBydW4gbG9hZAorICAgIFVzaW5nIEZTTCBVRUMwIGRldmljZQorICAgIFRGVFAgZnJvbSBzZXJ2ZXIgMTkyLjE2OC4xLjE7IG91ciBJUCBhZGRyZXNzIGlzIDE5Mi4xNjguMjA1LjQKKyAgICBGaWxlbmFtZSAnL3RmdHBib290L2ttZXRlcjEvdS1ib290LmJpbicuCisgICAgTG9hZCBhZGRyZXNzOiAweDIwMDAwMAorICAgIExvYWRpbmc6ICMjIyMjIyMjIyMjIyMjCisgICAgZG9uZQorICAgIEJ5dGVzIHRyYW5zZmVycmVkID0gMjA0MjA0ICgzMWRhYyBoZXgpCisgICAgPT4KKworNC4xIFJlZmxhc2ggVS1ib290IEltYWdlIHVzaW5nIFUtYm9vdAorCisgICAgPT4gcnVuIHVwZGF0ZQorICAgIC4uLi4uIGRvbmUKKyAgICBVbi1Qcm90ZWN0ZWQgNSBzZWN0b3JzCisKKyAgICAuLi4uLiBkb25lCisgICAgRXJhc2VkIDUgc2VjdG9ycworICAgIENvcHkgdG8gRmxhc2guLi4gZG9uZQorICAgIC4uLi4uIGRvbmUKKyAgICBQcm90ZWN0ZWQgNSBzZWN0b3JzCisgICAgVG90YWwgb2YgMjA0MjA0IGJ5dGVzIHdlcmUgdGhlIHNhbWUKKyAgICBTYXZpbmcgRW52aXJvbm1lbnQgdG8gRmxhc2guLi4KKyAgICAuIGRvbmUKKyAgICBVbi1Qcm90ZWN0ZWQgMSBzZWN0b3JzCisgICAgLiBkb25lCisgICAgVW4tUHJvdGVjdGVkIDEgc2VjdG9ycworICAgIEVyYXNpbmcgRmxhc2guLi4KKyAgICAuIGRvbmUKKyAgICBFcmFzZWQgMSBzZWN0b3JzCisgICAgV3JpdGluZyB0byBGbGFzaC4uLiBkb25lCisgICAgLiBkb25lCisgICAgUHJvdGVjdGVkIDEgc2VjdG9ycworICAgIC4gZG9uZQorICAgIFByb3RlY3RlZCAxIHNlY3RvcnMKKyAgICA9PgorCis1LiBOb3RlcworCTEpIFRoZSBjb25zb2xlIGJhdWRyYXRlIGZvciBrbWV0ZXIxIGlzIDExNTIwMGJwcy4KZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUubXBjODU3MmRzIGIvZG9jL1JFQURNRS5tcGM4NTcyZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlmZmRlNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9SRUFETUUubXBjODU3MmRzCkBAIC0wLDAgKzEsMTY3IEBACitPdmVydmlldworLS0tLS0tLS0KK01QQzg1NzJEUyBpcyBhIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nLCBldmFsdWF0aW9uIGFuZCBkZXZlbG9wbWVudCBwbGF0Zm9ybQorc3VwcG9ydGluZyB0aGUgbXBjODU3MiBQb3dlclRNIHByb2Nlc3Nvci4KKworQnVpbGRpbmcgVS1ib290CistLS0tLS0tLS0tLQorCW1ha2UgTVBDODU3MkRTX2NvbmZpZworCW1ha2UKKworRmxhc2ggQmFua3MKKy0tLS0tLS0tLS0tCitNUEM4NTcyRFMgYm9hcmQgaGFzIHR3byBmbGFzaCBiYW5rcy4gVGhleSBhcmUgYm90aCBwcmVzZW50IG9uIGJvb3QsIGJ1dCB0aGVpcgorbG9jYXRpb25zIGNhbiBiZSBzd2FwcGVkIHVzaW5nIHRoZSBkaXAtc3dpdGNoIFNXOVsxOjJdLgorCitCb290aW5nIGlzIGFsd2F5cyBmcm9tIHRoZSBib290IGJhbmsgYXQgMHhlYzAwXzAwMDAuCisKKworTWVtb3J5IE1hcAorLS0tLS0tLS0tLQorCisweGU4MDBfMDAwMCAtIDB4ZWJmZl9mZmZmCUFsZXJuYXRlIGJhbmsJCTY0TUIKKzB4ZWMwMF8wMDAwIC0gMHhlZmZmX2ZmZmYJQm9vdCBiYW5rCQk2NE1CCisKKzB4ZWJmOF8wMDAwIC0gMHhlYmZmX2ZmZmYJQWx0ZXJuYXRlIHUtYm9vdCBhZGRyZXNzCTUxMktCCisweGVmZjhfMDAwMCAtIDB4ZWZmZl9mZmZmCUJvb3QgdS1ib290IGFkZHJlc3MJCTUxMktCCisKKworRmxhc2hpbmcgSW1hZ2VzCistLS0tLS0tLS0tLS0tLS0KKworVG8gcGxhY2UgYSBuZXcgdS1ib290IGltYWdlIGluIHRoZSBhbHRlcm5hdGUgZmxhc2ggYmFuayBhbmQgdGhlbiByZXNldCB3aXRoIHRoYXQKKyBuZXcgaW1hZ2UgdGVtcG9yYXJpbHksIHVzZSB0aGlzOgorCisJdGZ0cCAxMDAwMDAwIHUtYm9vdC5iaW4KKwllcmFzZSBlYmY4MDAwMCBlYmZmZmZmZgorCWNwLmIgMTAwMDAwMCBlYmY4MDAwMCA4MDAwMAorCXBpeGlzX3Jlc2V0IGFsdGJhbmsKKworCitUbyBwcm9ncmFtIHRoZSBpbWFnZSBpbiB0aGUgYm9vdCBmbGFzaCBiYW5rOgorCisJdGZ0cCAxMDAwMDAwIHUtYm9vdC5iaW4KKwlwcm90ZWN0IG9mZiBhbGwKKwllcmFzZSBlZmY4MDAwMCBmZmZmZmZmZgorCWNwLmIgMTAwMDAwMCBlZmY4MDAwMCA4MDAwMAorCisKK1RoZSBwaXhpc19yZXNldCBjb21tYW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGNvbW1hbmQgLSAicGl4aXNfcmVzZXQiLCBpcyBpbnRyb2R1Y2VkIHRvIHJlc2V0IG1wYzg1NzJkcyBib2FyZAordXNpbmcgdGhlIEZQR0Egc2VxdWVuY2VyLiAgV2hlbiB0aGUgYm9hcmQgcmVzdGFydHMsIGl0IGhhcyB0aGUgb3B0aW9uCitvZiB1c2luZyBlaXRoZXIgdGhlIGN1cnJlbnQgb3IgYWx0ZXJuYXRlIGZsYXNoIGJhbmsgYXMgdGhlIGJvb3QKK2ltYWdlLCB3aXRoIG9yIHdpdGhvdXQgdGhlIHdhdGNoZG9nIHRpbWVyIGVuYWJsZWQsIGFuZCBmaW5hbGx5IHdpdGgKK29yIHdpdGhvdXQgZnJlcXVlbmN5IGNoYW5nZXMuCisKK1VzYWdlIGlzOworCisJcGl4aXNfcmVzZXQKKwlwaXhpc19yZXNldCBhbHRiYW5rCisJcGl4aXNfcmVzZXQgYWx0YmFuayB3ZAorCXBpeGlzX3Jlc2V0IGFsdGJhbmsgY2YgPFNZU0NMSyBmcmVxPiA8Q09SRVBMTCByYXRpbz4gPE1QWFBMTCByYXRpbz4KKwlwaXhpc19yZXNldCBjZiA8U1lTQ0xLIGZyZXE+IDxDT1JFUExMIHJhdGlvPiA8TVBYUExMIHJhdGlvPgorCitFeGFtcGxlczoKKworCS8qIHJlc2V0IHRvIGN1cnJlbnQgYmFuaywgbGlrZSAicmVzZXQiIGNvbW1hbmQgKi8KKwlwaXhpc19yZXNldAorCisJLyogcmVzZXQgYm9hcmQgYnV0IHVzZSB0aGUgdG8gYWx0ZXJuYXRlIGZsYXNoIGJhbmsgKi8KKwlwaXhpc19yZXNldCBhbHRiYW5rCisKKworVXNpbmcgdGhlIERldmljZSBUcmVlIFNvdXJjZSBGaWxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RvIGNyZWF0ZSB0aGUgRFRCIChEZXZpY2UgVHJlZSBCaW5hcnkpIGltYWdlIGZpbGUsCit1c2UgYSBjb21tYW5kIHNpbWlsYXIgdG8gdGhpczoKKworCWR0YyAtYiAwIC1mIC1JIGR0cyAtTyBkdGIgbXBjODU3MmRzLmR0cyA+IG1wYzg1NzJkcy5kdGIKKworTGlrZWx5LCB0aGF0IC5kdHMgZmlsZSB3aWxsIGNvbWUgZnJvbSBoZXJlOworCisJbGludXgtMi42L2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4NTcyZHMuZHRzCisKKworQm9vdGluZyBMaW51eAorLS0tLS0tLS0tLS0tLQorCitQbGFjZSBhIGxpbnV4IHVJbWFnZSBpbiB0aGUgVEZUUCBkaXNrIGFyZWEuCisKKwl0ZnRwIDEwMDAwMDAgdUltYWdlLjg1NzIKKwl0ZnRwIGMwMDAwMCBtcGM4NTcyZHMuZHRiCisJYm9vdG0gMTAwMDAwMCAtIGMwMDAwMAorCisKK0ltcGxlbWVudGluZyBBTVAoQXN5bW1ldHJpYyBNdWx0aVByb2Nlc3NpbmcpCistLS0tLS0tLS0tLS0tCisxLiBCdWlsZCBrZXJuZWwgaW1hZ2UgZm9yIGNvcmUwOgorCisgICAgICAgIGEuICQgbWFrZSA4NXh4L21wYzg1NzJfZHNfZGVmY29uZmlnCisKKyAgICAgICAgYi4gJCBtYWtlIG1lbnVjb25maWcKKyAgICAgICAgICAgLSB1bi1zZWxlY3QgIlByb2Nlc3NvciBzdXBwb3J0Ii0+IlN5bWV0cmljIG11bHRpLXByb2Nlc3Npbmcgc3VwcG9ydCIKKworICAgICAgICBjLiAkIG1ha2UgdUltYWdlCisKKwlkLiAkIGNwIGFyY2gvcG93ZXJwYy9ib290L3VJbWFnZSAvdGZ0cGJvb3QvdUltYWdlLmNvcmUwCisKKzIuIEJ1aWxkIGtlcm5lbCBpbWFnZSBmb3IgY29yZTE6CisKKyAgICAgICAgYS4gJCBtYWtlIDg1eHgvbXBjODU3Ml9kc19kZWZjb25maWcKKworICAgICAgICBiLiAkIG1ha2UgbWVudWNvbmZpZworICAgICAgICAgICAtIFVuLXNlbGVjdCAiUHJvY2Vzc29yIHN1cHBvcnQiLT4iU3ltZXRyaWMgbXVsdGktcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgICAgICAgICAtIFNlbGVjdCAiQWR2YW5jZWQgc2V0dXAiIC0+ICIgUHJvbXB0IGZvciBhZHZhbmNlZCBrZXJuZWwKKyAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMiCisgICAgICAgICAgICAgICAgLSBTZWxlY3QgIlNldCBwaHlzaWNhbCBhZGRyZXNzIHdoZXJlIHRoZSBrZXJuZWwgaXMgbG9hZGVkIiBhbmQKKyAgICAgICAgICAgICAgICAgIHNldCBpdCB0byAweDIwMDAwMDAwLCBhc3NzdW1pbmcgY29yZTEgd2lsbCBzdGFydCBmcm9tIDUxMk1CLgorICAgICAgICAgICAgICAgIC0gU2VsZWN0ICJTZXQgY3VzdG9tIHBhZ2Ugb2Zmc2V0IGFkZHJlc3MiCisgICAgICAgICAgICAgICAgLSBTZWxlY3QgIlNldCBjdXN0b20ga2VybmVsIGJhc2UgYWRkcmVzcyIKKyAgICAgICAgICAgICAgICAtIFNlbGVjdCAiU2V0IG1heGltdW0gbG93IG1lbW9yeSIKKyAgICAgICAgICAgLSAiRXhpdCIgYW5kIHNhdmUgdGhlIHNlbGVjdGlvbi4KKworICAgICAgICBjLiAkIG1ha2UgdUltYWdlCisKKwlkLiAkIGNwIGFyY2gvcG93ZXJwYy9ib290L3VJbWFnZSAvdGZ0cGJvb3QvdUltYWdlLmNvcmUxCisKKzMuIENyZWF0ZSBkdGIgZm9yIGNvcmUwOgorCisgICAgICAgICQgZHRjIC1JIGR0cyAtTyBkdGIgLWYgLWIgMCBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODU3MmRzX2NvcmUwLmR0cyA+IC90ZnRwYm9vdC9tcGM4NTcyZHNfY29yZTAuZHRiCisKKzQuIENyZWF0ZSBkdGIgZm9yIGNvcmUxOgorCisgICAgICAgICQgZHRjIC1JIGR0cyAtTyBkdGIgLWYgLWIgMSBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODU3MmRzX2NvcmUxLmR0cyA+IC90ZnRwYm9vdC9tcGM4NTcyZHNfY29yZTEuZHRiCisKKzUuIEJyaW5nIHVwIHR3byBjb3JlcyBzZXBhcmF0ZWx5OgorCisgICAgICAgIGEuIFBvd2VyIG9uIHRoZSBib2FyZCwgdW5kZXIgdS1ib290IHByb21wdDoKKyAgICAgICAgICAgICAgICA9PiBzZXRlbnYgPHNlcnZlcmlwPgorICAgICAgICAgICAgICAgID0+IHNldGVudiA8aXBhZGRyPgorICAgICAgICAgICAgICAgID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvcmFtIHJ3IGNvbnNvbGU9dHR5UzAsMTE1MjAwCisgICAgICAgIGIuIEJyaW5nIHVwIGNvcmUxJ3Mga2VybmVsIGZpcnN0OgorICAgICAgICAgICAgICAgID0+IHNldGVudiBib290bV9sb3cgMHgyMDAwMDAwMAorICAgICAgICAgICAgICAgID0+IHNldGVudiBib290bV9zaXplIDB4MTAwMDAwMDAKKyAgICAgICAgICAgICAgICA9PiB0ZnRwIDIxMDAwMDAwIDg1NzIvdUltYWdlLmNvcmUxCisgICAgICAgICAgICAgICAgPT4gdGZ0cCAyMjAwMDAwMCA4NTcyL3JhbWRpc2tmaWxlCisgICAgICAgICAgICAgICAgPT4gdGZ0cCAyMGMwMDAwMCA4NTcyL21wYzg1NzJkc19jb3JlMS5kdGIKKyAgICAgICAgICAgICAgICA9PiBpbnRlcnJ1cHRzIG9mZgorICAgICAgICAgICAgICAgID0+IGJvb3RtIHN0YXJ0IDIxMDAwMDAwIDIyMDAwMDAwIDIwYzAwMDAwCisgICAgICAgICAgICAgICAgPT4gYm9vdG0gbG9hZG9zCisgICAgICAgICAgICAgICAgPT4gYm9vdG0gcmFtZGlzaworICAgICAgICAgICAgICAgID0+IGJvb3RtIGZkdAorICAgICAgICAgICAgICAgID0+IGZkdCBib2FyZHNldHVwCisgICAgICAgICAgICAgICAgPT4gZmR0IGNob3NlbiAkaW5pdHJkX3N0YXJ0ICRpbml0cmRfZW5kCisgICAgICAgICAgICAgICAgPT4gYm9vdG0gcHJlcAorICAgICAgICAgICAgICAgID0+IGNwdSAxIHJlbGVhc2UgJGJvb3RtX2xvdyAtICRmZHRhZGRyIC0KKyAgICAgICAgYy4gQnJpbmcgdXAgY29yZTAncyBrZXJuZWwob24gdGhlIHNhbWUgdS1ib290IGNvbnNvbGUpOgorICAgICAgICAgICAgICAgID0+IHNldGVudiBib290bV9sb3cgMAorICAgICAgICAgICAgICAgID0+IHNldGVudiBib290bV9zaXplIDB4MjAwMDAwMDAKKyAgICAgICAgICAgICAgICA9PiB0ZnRwIDEwMDAwMDAgODU3Mi91SW1hZ2UuY29yZTAKKyAgICAgICAgICAgICAgICA9PiB0ZnRwIDIwMDAwMDAgODU3Mi9yYW1kaXNrZmlsZQorICAgICAgICAgICAgICAgID0+IHRmdHAgYzAwMDAwIDg1NzIvbXBjODU3MmRzX2NvcmUwLmR0YgorICAgICAgICAgICAgICAgID0+IGJvb3RtIDEwMDAwMDAgMjAwMDAwMCBjMDAwMDAKKworUGxlYXNlIG5vdGUgb25seSBjb3JlMCB3aWxsIHJ1biB1LWJvb3QsIGNvcmUxIHN0YXJ0cyBrZXJuZWwgZGlyZWN0bHkgYWZ0ZXIKKyJjcHUgcmVsZWFzZSIgY29tbWFuZCBpcyBpc3N1ZWQuCisKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUubmFuZCBiL2RvYy9SRUFETUUubmFuZAppbmRleCBiZjgwYmMwLi5mYzYyZjkyIDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLm5hbmQKKysrIGIvZG9jL1JFQURNRS5uYW5kCkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICNkZWZpbmUgQUREUl9DT0xVTU5fUEFHRSAzCiAgICAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04gMHgwMAogICAgI2RlZmluZSBOQU5EX01BWF9GTE9PUlMgMQotICAgI2RlZmluZSBOQU5EX01BWF9DSElQUyAxCisgICAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFMgMQogCiAgICAjZGVmaW5lIENPTkZJR19TWVNfREFWSU5DSV9CUk9LRU5fRUNDCiAgICAgICBWZXJzaW9ucyBvZiBVLUJvb3QgPD0gMS4zLjMgYW5kIE1vbnRhdmlzdGEgTGludXgga2VybmVscwpkaWZmIC0tZ2l0IGEvUkVBRE1FLm5pb3NfQ09ORklHX1NZU19OSU9TX0NQVSBiL2RvYy9SRUFETUUubmlvc19DT05GSUdfU1lTX05JT1NfQ1BVCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBSRUFETUUubmlvc19DT05GSUdfU1lTX05JT1NfQ1BVCnJlbmFtZSB0byBkb2MvUkVBRE1FLm5pb3NfQ09ORklHX1NZU19OSU9TX0NQVQpkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS5xZW11X21pcHMgYi9kb2MvUkVBRE1FLnFlbXVfbWlwcwppbmRleCAyZmRkMmIwLi4zOTg1MjY0IDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLnFlbXVfbWlwcworKysgYi9kb2MvUkVBRE1FLnFlbXVfbWlwcwpAQCAtMTcsMTkgKzE3LDEwMyBAQAogc3RhcnQgaXQ6CiAjIHFlbXUtc3lzdGVtLW1pcHMgLU0gbWlwcyAtcGZsYXNoIGZsYXNoIC1tb25pdG9yIG51bGwgLW5vZ3JhcGhpYwogCisyKSBEb3dubG9hZCBrZXJuZWwgKyBpbml0cmQKKworT24gZnRwOi8vZnRwLmRlbnguZGUvcHViL2NvbnRyaWIvSmVhbi1DaHJpc3RvcGhlX1BsYWduaW9sLVZpbGxhcmQvcWVtdV9taXBzLworeW91IGNhbiBkb3dubGFuZAorCisjY29uZmlnIHRvIGJ1aWxkIHRoZSBrZXJuZWwKK3FlbXVfbWlwc19kZWZjb25maWcKKyNwYXRjaCB0byBmaXggbWlwcyBpbnRlcnVwdCBpbml0IG9uIDIuNi4yNC55IGtlcm5lbAorcWVtdV9taXBzX2tlcm5lbC5wYXRjaAoraW5pdHJkLmd6Cit2bWxpbnV4Cit2bWxpbnV4LmJpbgorU3lzdGVtLm1hcAorCis0KSBHZW5lcmF0ZSB1SW1hZ2UKKworIyB0b29scy9ta2ltYWdlIC1BIG1pcHMgLU8gbGludXggLVQga2VybmVsIC1DIGd6aXAgLWEgMHg4MDAxMDAwMCAtZSAweDgwMjQ1NjUwIC1uICJMaW51eCAyLjYuMjQueSIgLWQgdm1saW51eC5iaW4uZ3ogdUltYWdlCisKKzUpIENvcHkgdUltYWdlIHRvIEZsYXNoCisjIGRkIGlmPXVJbWFnZSBicz0xayBjb252PW5vdHJ1bmMgc2Vlaz0yMjQgb2Y9Zmxhc2gKKworNikgR2VuZXJhdGUgSWRlIERpc2sKKworIyBkZCBvZj1pZGUgYnM9MWsgY291dD0xMDBrIGlmPS9kZXYvemVybworCisjIHNmZGlzayAtQyAyNjEgLWQgaWRlCisjIHBhcnRpdGlvbiB0YWJsZSBvZiBpZGUKK3VuaXQ6IHNlY3RvcnMKKworICAgICBpZGUxIDogc3RhcnQ9ICAgICAgIDYzLCBzaXplPSAgICAzMjA2NywgSWQ9ODMKKyAgICAgaWRlMiA6IHN0YXJ0PSAgICAzMjEzMCwgc2l6ZT0gICAgMzIxMzAsIElkPTgzCisgICAgIGlkZTMgOiBzdGFydD0gICAgNjQyNjAsIHNpemU9ICA0MTI4NzA1LCBJZD04MworICAgICBpZGU0IDogc3RhcnQ9ICAgICAgICAwLCBzaXplPSAgICAgICAgMCwgSWQ9IDAKKworNykgQ29weSB0byBpZGUKKworIyBkZCBpZj11SW1hZ2UgYnM9NTEyIGNvbnY9bm90cnVuYyBzZWVrPTYzIG9mPWlkZQorCis4KSBHZW5lcmF0ZSBleHQyIG9uIHBhcnQgMiBvbiBDb3B5IHVJbWFnZSBhbmQgaW5pdHJkLmd6CisKKyMgQXR0YWNoZWQgYXMgbG9vcCBkZXZpY2UgaWRlIG9mZnNldCA9IDMyMTMwICogNTEyCisjIGxvc2V0dXAgLW8gMTY0NTA1NjAgLWYgaWRlCisjIEZvcm1hdCBhcyBleHQyICggYXJnMiA6IG5iIGJsb2NrcykKKyMgbWtlMmZzIC9kZXYvbG9vcDAgMTYwNjUKKyMgbG9zZXR1cCAtZCAvZGV2L2xvb3AwCisjIE1vdW50IGFuZCBjb3B5IHVJbWFnZSBhbmQgaW5pdHJkLmd6IHRvIGl0CisjIG1vdW50IC1vIGxvb3Asb2Zmc2V0PTE2NDUwNTYwIC10IGV4dDIgaWRlIC9tbnQKKyMgbWtkaXIgL21udC9ib290CisjIGNwIHtpbml0cmQuZ3osdUltYWdlfSAvbW50L2Jvb3QvCisjIFVtb3VudCBpdAorIyB1bW91bnQgL21udAorCis5KSBTZXQgRW52aXJvbm1lbnQKKworc2V0ZW52IHJkX3N0YXJ0IDB4ODA4MDAwMDAKK3NldGVudiByZF9zaXplIDI2NjM5NDAKK3NldGVudiBrZXJuZWwgQkZDMzgwMDAKK3NldGVudiBvYWRfYWRkciA4MDUwMDAwMAorc2V0ZW52IGxvYWRfYWRkcjIgODBGMDAwMDAKK3NldGVudiBrZXJuZWxfZmxhc2ggQkZDMzgwMDAKK3NldGVudiBsb2FkX2FkZHJfaGVsbG8gODAyMDAwMDAKK3NldGVudiBib290YXJncyAncm9vdD0vZGV2L3JhbTAgaW5pdD0vYmluL3NoJworc2V0ZW52IGxvYWRfcmRfZXh0MiAnaWRlIHJlczsgZXh0MmxvYWQgaWRlIDA6MiAke3JkX3N0YXJ0fSAvYm9vdC9pbml0cmQuZ3onCitzZXRlbnYgbG9hZF9yZF90ZnRwICd0ZnRwICR7cmRfc3RhcnR9IC9pbml0cmQuZ3onCitzZXRlbnYgbG9hZF9rZXJuZWxfaGRhICdpZGUgcmVzOyBkaXNrYm9vdCAke2xvYWRfYWRkcn0gMDoyJworc2V0ZW52IGxvYWRfa2VybmVsX2V4dDIgJ2lkZSByZXM7IGV4dDJsb2FkIGlkZSAwOjIgJHtsb2FkX2FkZHJ9IC9ib290L3VJbWFnZScKK3NldGVudiBsb2FkX2tlcm5lbF90ZnRwICd0ZnRwICR7bG9hZF9hZGRyfSAvcWVtdV9taXBzL3VJbWFnZScKK3NldGVudiBib290X2V4dDJfZXh0MiAncnVuIGxvYWRfcmRfZXh0MjsgcnVuIGxvYWRfa2VybmVsX2V4dDI7IHJ1biBhZGRtaXNjOyBib290bSAke2xvYWRfYWRkcn0nCitzZXRlbnYgYm9vdF9leHQyX2ZsYXNoICdydW4gbG9hZF9yZF9leHQyOyBydW4gYWRkbWlzYzsgYm9vdG0gJHtrZXJuZWxfZmxhc2h9Jworc2V0ZW52IGJvb3RfZXh0Ml9oZGEgJ3J1biBsb2FkX3JkX2V4dDI7IHJ1biBsb2FkX2tlcm5lbF9oZGE7IHJ1biBhZGRtaXNjOyBib290bSAke2xvYWRfYWRkcn0nCitzZXRlbnYgYm9vdF9leHQyX3RmdHAgJ3J1biBsb2FkX3JkX2V4dDI7IHJ1biBsb2FkX2tlcm5lbF90ZnRwOyBydW4gYWRkbWlzYzsgYm9vdG0gJHtsb2FkX2FkZHJ9Jworc2V0ZW52IGJvb3RfdGZ0cF9oZGEgJ3J1biBsb2FkX3JkX3RmdHA7IHJ1biBsb2FkX2tlcm5lbF9oZGE7IHJ1biBhZGRtaXNjOyBib290bSAke2xvYWRfYWRkcn0nCitzZXRlbnYgYm9vdF90ZnRwX2V4dDIgJ3J1biBsb2FkX3JkX3RmdHA7IHJ1biBsb2FkX2tlcm5lbF9leHQyOyBydW4gYWRkbWlzYzsgYm9vdG0gJHtsb2FkX2FkZHJ9Jworc2V0ZW52IGJvb3RfdGZ0cF9mbGFzaCAncnVuIGxvYWRfcmRfdGZ0cDsgcnVuIGFkZG1pc2M7IGJvb3RtICR7a2VybmVsX2ZsYXNofScKK3NldGVudiBib290X3RmdHBfdGZ0cCAncnVuIGxvYWRfcmRfdGZ0cDsgcnVuIGxvYWRfa2VybmVsX3RmdHA7IHJ1biBhZGRtaXNjOyBib290bSAke2xvYWRfYWRkcn0nCitzZXRlbnYgbG9hZF9oZWxsb190ZnRwICd0ZnRwICR7bG9hZF9hZGRyX2hlbGxvfSAvZXhhbXBsZXMvaGVsbG9fd29ybGQuYmluJworc2V0ZW52IGdvX3RmdHAgJ3J1biBsb2FkX2hlbGxvX3RmdHA7IGdvICR7bG9hZF9hZGRyX2hlbGxvfScKK3NldGVudiBhZGRtaXNjICdzZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gY29uc29sZT10dHlTMCwke2JhdWRyYXRlfSByZF9zdGFydD0ke3JkX3N0YXJ0fSByZF9zaXplPSR7cmRfc2l6ZX0gZXRoYWRkcj0ke2V0aGFkZHJ9Jworc2V0ZW52IGJvb3RjbWQgJ3J1biBib290X3RmdHBfZmxhc2gnCisKKzEwKSBOb3cgeW91IGNhbiBib290IGZyb20gZmxhc2gsIGlkZSwgaWRlK2V4dDIgYW5kIHRmcAorCisjIHFlbXUtc3lzdGVtLW1pcHMgLU0gbWlwcyAtcGZsYXNoIGZsYXNoIC1tb25pdG9yIG51bGwgLW5vZ3JhcGhpYyAtbmV0IG5pYyAtbmV0IHVzZXIgLXRmdHAgYHB3ZGAgLWhkYSBpZGUKKwogSUkpIEhvdyB0byBkZWJ1ZyBVLUJvb3QKIAogSW4gb3JkZXIgdG8gZGVidWcgVS1Cb290IHlvdSBuZWVkIHRvIHN0YXJ0IHFlbXUgd2l0aCBnZGIgc2VydmVyIHN1cHBvcnQgKC1zKQogYW5kIHdhaXRpbmcgdGhlIGNvbm5lY3Rpb24gdG8gc3RhcnQgdGhlIENQVSAoLVMpCiAKLSMgcWVtdS1zeXN0ZW0tbWlwcyAtUyAtcyAtTSBtaXBzIC1wZmxhc2ggZmxhc2ggLW1vbml0b3IgbnVsbCAtbm9ncmFwaGljCisjIHFlbXUtc3lzdGVtLW1pcHMgLVMgLXMgLU0gbWlwcyAtcGZsYXNoIGZsYXNoIC1tb25pdG9yIG51bGwgLW5vZ3JhcGhpYyAtbmV0IG5pYyAtbmV0IHVzZXIgLXRmdHAgYHB3ZGAgLWhkYSBpZGUKIAogaW4gYW4gb3RoZXIgY29uc29sZSB5b3Ugc3RhcnQgZ2RiCiAKIDEpIERlYnVnZ2luZyBvZiBVLUJvb3QgQmVmb3JlIFJlbG9jYXRpb24KIAogQmVmb3JlIHJlbG9jYXRpb24sIHRoZSBhZGRyZXNzZXMgaW4gdGhlIEVMRiBmaWxlIGNhbiBiZSB1c2VkIHdpdGhvdXQgYW55IHByb2JsZW1zCi1idXkgY29ubmVjdGluZyB0byB0aGUgZ2RiIHNlcnZlciBsb2NhbGhvc3Q6MTIzNAorYnkgY29ubmVjdGluZyB0byB0aGUgZ2RiIHNlcnZlciBsb2NhbGhvc3Q6MTIzNAogCiAjIG1pcHNlbC11bmtub3duLWxpbnV4LWdudS1nZGIgdS1ib290CiBHTlUgZ2RiIDYuNgpkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS5zaW1wYzgzMTMgYi9kb2MvUkVBRE1FLnNpbXBjODMxMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzYyYzZhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL1JFQURNRS5zaW1wYzgzMTMKQEAgLTAsMCArMSw4MCBAQAorU2hlbGRvbiBJbnN0cnVtZW50cyBTSU1QQzgzMTMgQm9hcmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEuCUJvYXJkIFN3aXRjaGVzIGFuZCBKdW1wZXJzCisKKwlTMiBpcyB1c2VkIHRvIHNldCBDRkdfUkVTRVRfU09VUkNFLgorCisJVG8gYm9vdCB0aGUgaW1hZ2UgaW4gTGFyZ2UgcGFnZSBOQU5EIGZsYXNoLCB1c2UgdGhlc2UgRElQCisJc3dpdGNoIHNldHRpbmdzIGZvciBTMjoKKworCSstLS0tLS0tLS0tKyBPTgorCXwgKiAqICoqKiogfAorCXwgICogKiAgICAgfAorCSstLS0tLS0tLS0tKworCSAgMTIzNDU2NzgKKworCVRvIGJvb3QgdGhlIGltYWdlIGluIFNtYWxsIHBhZ2UgTkFORCBmbGFzaCwgdXNlIHRoZXNlIERJUAorCXN3aXRjaCBzZXR0aW5ncyBmb3IgUzI6CisKKwkrLS0tLS0tLS0tLSsgT04KKwl8ICoqKiAqKioqIHwKKwl8ICAgICogICAgIHwKKwkrLS0tLS0tLS0tLSsKKwkgIDEyMzQ1Njc4CisJKHdoZXJlIHRoZSAnKicgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIG9mIHRoZSBzd2l0Y2guKQorCisyLglNZW1vcnkgTWFwCisJVGhlIG1lbW9yeSBtYXAgbG9va3MgbGlrZSB0aGlzOgorCisJMHgwMDAwXzAwMDAJMHgxZmZmX2ZmZmYJRERSCQkJNTEyTQorCTB4ODAwMF8wMDAwCTB4OGZmZl9mZmZmCVBDSSBNRU0JCQkyNTZNCisJMHg5MDAwXzAwMDAJMHg5ZmZmX2ZmZmYJUENJX01NSU8JCTI1Nk0KKwkweGUwMDBfMDAwMAkweGUwMGZfZmZmZglJTU1SCQkJMU0KKwkweGUyMDBfMDAwMAkweGUyMGZfZmZmZglQQ0kgSU8JCQkxNk0KKwkweGUyODBfMDAwMAkweGUyODBfN2ZmZglOQU5EIEZMQVNIIChDUzApCTMySworCW9yCisJMHhlMjgwXzAwMDAJMHhlMjgxX2ZmZmYJTkFORCBGTEFTSCAoQ1MwKQkxMjhLCisJMHhmZjAwXzAwMDAJMHhmZjAwXzdmZmYJRlBHQSAoQ1MxKQkJMU0KKworMy4JQ29tcGlsYXRpb24KKworCUFzc3VtaW5nIHlvdSdyZSB1c2luZyBCQVNIIChvciBzaW1pbGFyKSBhcyB5b3VyIHNoZWxsOgorCisJZXhwb3J0IENST1NTX0NPTVBJTEU9eW91ci1jcm9zcy1jb21waWxlci1wcmVmaXgtCisJbWFrZSBkaXN0Y2xlYW4KKwltYWtlIFNJTVBDODMxM19MUF9jb25maWcKKwkob3IgbWFrZSBTSU1QQzgzMTNfU1BfY29uZmlnLCBkZXBlbmRpbmcgb24gdGhlIHBhZ2Ugc2l6ZQorCW9mIHlvdXIgTkFORCBmbGFzaCkKKwltYWtlCisKKzQuCURvd25sb2FkaW5nIGFuZCBGbGFzaGluZyBJbWFnZXMKKworNC4xCVJlZmxhc2ggVS1ib290IEltYWdlIHVzaW5nIFUtYm9vdAorCisJPT5ydW4gdXBkYXRlX3Vib290CisKKwlZb3UgbWF5IHdhbnQgdG8gdHJ5CisJPT50ZnRwICRsb2FkYWRkciAkdWJvb3QKKwlmaXJzdCwgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIFRGVFAgbG9hZCB3aWxsIHN1Y2NlZWQgYmVmb3JlIGl0CisJZ29lcyBhaGVhZCBhbmQgd2lwZXMgb3V0IHlvdXIgY3VycmVudCBmaXJtd2FyZS4gIEFuZCBvZiBjb3Vyc2UsCisJaWYgdGhlIG5ldyB1LWJvb3QgZG9lc24ndCBib290LCB5b3UgY2FuIHBsdWcgdGhlIGJvYXJkIGludG8KKwl5b3VyIFBDSSBzbG90IGFuZCB3aXRoIHRoZSBzdXBwbGllZCBkcml2ZXIgYW5kIHNhbXBsZSBhcHAKKwl5b3UgY2FuIHJlYnVybiBhIHdvcmtpbmcgdS1ib290LgorCis0LjIJRG93bmxvYWRpbmcgYW5kIEJvb3RpbmcgTGludXggS2VybmVsCisKKwlFbnN1cmUgdGhhdCBhbGwgbmV0d29ya2luZy1yZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc2V0CisJcHJvcGVybHkgKGluY2x1ZGluZyBpcGFkZHIsIHNlcnZlcmlwLCBnYXRld2F5aXAgKGlmIG5lZWRlZCksCisJbmV0bWFzaywgZXRoYWRkciwgZXRoMWFkZHIsIGZkdGZpbGUsIGFuZCBib290ZmlsZSkuCisKKwk9PnRmdHAgJGxvYWRhZGRyIHVJbWFnZQorCT0+bmFuZCB3cml0ZSAkbG9hZGFkZHIga2VybmVsICRmaWxlc2l6ZQorCT0+dGZ0cCAkbG9hZGFkZHIgJGZkdGZpbGUKKwk9Pm5hbmQgd3JpdGUgJGxvYWRhZGRyIDdlMDAwMCAxODAwCisKKwk9PmJvb3QKKworNQlOb3RlcworCisJVGhlIGNvbnNvbGUgYmF1ZHJhdGUgZm9yIFNJTVBDODMxMyBpcyAxMTUyMDBicHMuCmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlIGIvZHJpdmVycy9ncGlvL01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggNzIlCmNvcHkgZnJvbSBib2FyZC94aWxpbngveHVwdjJwL01ha2VmaWxlCmNvcHkgdG8gZHJpdmVycy9ncGlvL01ha2VmaWxlCmluZGV4IDEwYjQ3YjIuLmRkNjE4ZWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hpbGlueC94dXB2MnAvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncGlvL01ha2VmaWxlCkBAIC0xLDUgKzEsNSBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgorIyBDb3B5cmlnaHQgMjAwMC0yMDA4CiAjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCiAjCiAjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCkBAIC0xMiw3ICsxMiw3IEBACiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JU2VlIHRoZQogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMjMsMjIgKzIzLDE5IEBACiAKIGluY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5tawogCi1MSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCitMSUIgCTo9ICQob2JqKWxpYmdwaW8uYQogCi1DT0JKUwk9ICQoQk9BUkQpLm8KK0NPQkpTLSQoQ09ORklHX1BDQTk1M1gpCSs9IHBjYTk1M3gubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCi1PQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKK0NPQkpTCTo9ICQoQ09CSlMteSkKK1NSQ1MgCTo9ICQoQ09CSlM6Lm89LmMpCitPQkpTIAk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCiAKLSQoTElCKToJJChPQkpTKSAkKFNPQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KK2FsbDoJJChMSUIpCiAKLWNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKLWRpc3RjbGVhbjoJY2xlYW4KLQlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtNDcsNCArNDQsNCBAQAogCiBzaW5jbHVkZSAkKG9iaikuZGVwZW5kCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL3BjYTk1M3guYyBiL2RyaXZlcnMvZ3Bpby9wY2E5NTN4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkwZDk5YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3Bpby9wY2E5NTN4LmMKQEAgLTAsMCArMSwyMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBWZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiBEcml2ZXIgZm9yIE5YUCdzIDQgYW5kIDggYml0IEkyQyBncGlvIGV4cGFuZGVycyAoZWcgcGNhOTUzNywgcGNhOTU1NywgZXRjKQorICogVE9ETzogc3VwcG9ydCBhZGRpdGlvbmFsIGRldmljZXMgd2l0aCBtb3JlIHRoYW4gOC1iaXRzIEdQSU8KKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aTJjLmg+CisjaW5jbHVkZSA8cGNhOTUzeC5oPgorCisvKiBEZWZhdWx0IHRvIGFuIGFkZHJlc3MgdGhhdCBob3BlZnVsbHkgd29uJ3QgY29ycnVwdCBvdGhlciBpMmMgZGV2aWNlcyAqLworI2lmbmRlZiBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSCSh+MCkKKyNlbmRpZgorCitlbnVtIHsKKwlQQ0E5NTNYX0NNRF9JTkZPLAorCVBDQTk1M1hfQ01EX0RFVklDRSwKKwlQQ0E5NTNYX0NNRF9PVVRQVVQsCisJUENBOTUzWF9DTURfSU5QVVQsCisJUENBOTUzWF9DTURfSU5WRVJULAorfTsKKworLyoKKyAqIE1vZGlmeSBtYXNrZWQgYml0cyBpbiByZWdpc3RlcgorICovCitzdGF0aWMgaW50IHBjYTk1M3hfcmVnX3dyaXRlKHVpbnQ4X3QgY2hpcCwgdWludCBhZGRyLCB1aW50IG1hc2ssIHVpbnQgZGF0YSkKK3sKKwl1aW50OF90IHZhbDsKKworCWlmIChpMmNfcmVhZChjaGlwLCBhZGRyLCAxLCAmdmFsLCAxKSkKKwkJcmV0dXJuIC0xOworCisJdmFsICY9IH5tYXNrOworCXZhbCB8PSBkYXRhOworCisJcmV0dXJuIGkyY193cml0ZShjaGlwLCBhZGRyLCAxLCAmdmFsLCAxKTsKK30KKworLyoKKyAqIFNldCBvdXRwdXQgdmFsdWUgb2YgSU8gcGlucyBpbiAnbWFzaycgdG8gY29ycmVzcG9uZGluZyB2YWx1ZSBpbiAnZGF0YScKKyAqIDAgPSBsb3csIDEgPSBoaWdoCisgKi8KK2ludCBwY2E5NTN4X3NldF92YWwodWludDhfdCBjaGlwLCB1aW50IG1hc2ssIHVpbnQgZGF0YSkKK3sKKwlyZXR1cm4gcGNhOTUzeF9yZWdfd3JpdGUoY2hpcCwgUENBOTUzWF9PVVQsIG1hc2ssIGRhdGEpOworfQorCisvKgorICogU2V0IHJlYWQgcG9sYXJpdHkgb2YgSU8gcGlucyBpbiAnbWFzaycgdG8gY29ycmVzcG9uZGluZyB2YWx1ZSBpbiAnZGF0YScKKyAqIDAgPSByZWFkIHBpbiB2YWx1ZSwgMSA9IHJlYWQgaW52ZXJ0ZWQgcGluIHZhbHVlCisgKi8KK2ludCBwY2E5NTN4X3NldF9wb2wodWludDhfdCBjaGlwLCB1aW50IG1hc2ssIHVpbnQgZGF0YSkKK3sKKwlyZXR1cm4gcGNhOTUzeF9yZWdfd3JpdGUoY2hpcCwgUENBOTUzWF9QT0wsIG1hc2ssIGRhdGEpOworfQorCisvKgorICogU2V0IGRpcmVjdGlvbiBvZiBJTyBwaW5zIGluICdtYXNrJyB0byBjb3JyZXNwb25kaW5nIHZhbHVlIGluICdkYXRhJworICogMCA9IG91dHB1dCwgMSA9IGlucHV0CisgKi8KK2ludCBwY2E5NTN4X3NldF9kaXIodWludDhfdCBjaGlwLCB1aW50IG1hc2ssIHVpbnQgZGF0YSkKK3sKKwlyZXR1cm4gcGNhOTUzeF9yZWdfd3JpdGUoY2hpcCwgUENBOTUzWF9DT05GLCBtYXNrLCBkYXRhKTsKK30KKworLyoKKyAqIFJlYWQgY3VycmVudCBsb2dpYyBsZXZlbCBvZiBhbGwgSU8gcGlucworICovCitpbnQgcGNhOTUzeF9nZXRfdmFsKHVpbnQ4X3QgY2hpcCkKK3sKKwl1aW50OF90IHZhbDsKKworCWlmIChpMmNfcmVhZChjaGlwLCAwLCAxLCAmdmFsLCAxKSkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJuIChpbnQpdmFsOworfQorCisjaWZkZWYgQ09ORklHX0NNRF9QQ0E5NTNYCisjaWZkZWYgQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8KKy8qCisgKiBEaXNwbGF5IHBjYTk1M3ggaW5mb3JtYXRpb24KKyAqLworc3RhdGljIGludCBwY2E5NTN4X2luZm8odWludDhfdCBjaGlwKQoreworCWludCBpOworCXVpbnQ4X3QgZGF0YTsKKworCXByaW50ZigicGNhOTUzeEAgMHgleDpcblxuIiwgY2hpcCk7CisJcHJpbnRmKCJncGlvIHBpbnM6IDc2NTQzMjEwXG4iKTsKKwlwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworCisJaWYgKGkyY19yZWFkKGNoaXAsIFBDQTk1M1hfQ09ORiwgMSwgJmRhdGEsIDEpKQorCQlyZXR1cm4gLTE7CisJcHJpbnRmKCJjb25mOiAgICAgICIpOworCWZvciAoaSA9IDc7IGkgPj0gMDsgaS0tKQorCQlwcmludGYoIiVjIiwgZGF0YSAmICgxIDw8IGkpID8gJ2knIDogJ28nKTsKKwlwcmludGYoIlxuIik7CisKKwlpZiAoaTJjX3JlYWQoY2hpcCwgUENBOTUzWF9QT0wsIDEsICZkYXRhLCAxKSkKKwkJcmV0dXJuIC0xOworCXByaW50ZigiaW52ZXJ0OiAgICAiKTsKKwlmb3IgKGkgPSA3OyBpID49IDA7IGktLSkKKwkJcHJpbnRmKCIlYyIsIGRhdGEgJiAoMSA8PCBpKSA/ICcxJyA6ICcwJyk7CisJcHJpbnRmKCJcbiIpOworCisJaWYgKGkyY19yZWFkKGNoaXAsIFBDQTk1M1hfSU4sIDEsICZkYXRhLCAxKSkKKwkJcmV0dXJuIC0xOworCXByaW50ZigiaW5wdXQ6ICAgICAiKTsKKwlmb3IgKGkgPSA3OyBpID49IDA7IGktLSkKKwkJcHJpbnRmKCIlYyIsIGRhdGEgJiAoMSA8PCBpKSA/ICcxJyA6ICcwJyk7CisJcHJpbnRmKCJcbiIpOworCisJaWYgKGkyY19yZWFkKGNoaXAsIFBDQTk1M1hfT1VULCAxLCAmZGF0YSwgMSkpCisJCXJldHVybiAtMTsKKwlwcmludGYoIm91dHB1dDogICAgIik7CisJZm9yIChpID0gNzsgaSA+PSAwOyBpLS0pCisJCXByaW50ZigiJWMiLCBkYXRhICYgKDEgPDwgaSkgPyAnMScgOiAnMCcpOworCXByaW50ZigiXG4iKTsKKworCXJldHVybiAwOworfQorI2VuZGlmIC8qIENPTkZJR19DTURfUENBOTUzWF9JTkZPICovCisKK2NtZF90YmxfdCBjbWRfcGNhOTUzeFtdID0geworCVVfQk9PVF9DTURfTUtFTlQoZGV2aWNlLCAzLCAwLCAodm9pZCAqKVBDQTk1M1hfQ01EX0RFVklDRSwgIiIsICIiKSwKKwlVX0JPT1RfQ01EX01LRU5UKG91dHB1dCwgNCwgMCwgKHZvaWQgKilQQ0E5NTNYX0NNRF9PVVRQVVQsICIiLCAiIiksCisJVV9CT09UX0NNRF9NS0VOVChpbnB1dCwgMywgMCwgKHZvaWQgKilQQ0E5NTNYX0NNRF9JTlBVVCwgIiIsICIiKSwKKwlVX0JPT1RfQ01EX01LRU5UKGludmVydCwgNCwgMCwgKHZvaWQgKilQQ0E5NTNYX0NNRF9JTlZFUlQsICIiLCAiIiksCisjaWZkZWYgQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8KKwlVX0JPT1RfQ01EX01LRU5UKGluZm8sIDIsIDAsICh2b2lkICopUENBOTUzWF9DTURfSU5GTywgIiIsICIiKSwKKyNlbmRpZgorfTsKKworaW50IGRvX3BjYTk1M3goY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RhdGljIHVpbnQ4X3QgY2hpcCA9IENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjsKKwlpbnQgdmFsOworCXVsb25nIHVsX2FyZzIgPSAwOworCXVsb25nIHVsX2FyZzMgPSAwOworCWNtZF90YmxfdCAqYzsKKworCWMgPSBmaW5kX2NtZF90YmwoYXJndlsxXSwgY21kX3BjYTk1M3gsIEFSUkFZX1NJWkUoY21kX3BjYTk1M3gpKTsKKworCS8qIEFsbCBjb21tYW5kcyBidXQgImRldmljZSIgcmVxdWlyZSAnbWF4YXJncycgYXJndW1lbnRzICovCisJaWYgKCFjIHx8ICEoKGFyZ2MgPT0gKGMtPm1heGFyZ3MpKSB8fAorCQkoKChpbnQpYy0+Y21kID09IFBDQTk1M1hfQ01EX0RFVklDRSkgJiYKKwkJIChhcmdjID09IChjLT5tYXhhcmdzIC0gMSkpKSkpIHsKKwkJcHJpbnRmKCJVc2FnZTpcbiVzXG4iLCBjbWR0cC0+dXNhZ2UpOworCQlyZXR1cm4gMTsKKwl9CisKKwkvKiBhcmcyIHVzZWQgYXMgY2hpcCBudW1iZXIgb3IgcGluIG51bWJlciAqLworCWlmIChhcmdjID4gMikKKwkJdWxfYXJnMiA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDE2KTsKKworCS8qIGFyZzMgdXNlZCBhcyBwaW4gb3IgaW52ZXJ0IHZhbHVlICovCisJaWYgKGFyZ2MgPiAzKQorCQl1bF9hcmczID0gc2ltcGxlX3N0cnRvdWwoYXJndlszXSwgTlVMTCwgMTYpICYgMHgxOworCisJc3dpdGNoICgoaW50KWMtPmNtZCkgeworI2lmZGVmIENPTkZJR19DTURfUENBOTUzWF9JTkZPCisJY2FzZSBQQ0E5NTNYX0NNRF9JTkZPOgorCQlyZXR1cm4gcGNhOTUzeF9pbmZvKGNoaXApOworI2VuZGlmCisJY2FzZSBQQ0E5NTNYX0NNRF9ERVZJQ0U6CisJCWlmIChhcmdjID09IDMpCisJCQljaGlwID0gKHVpbnQ4X3QpdWxfYXJnMjsKKwkJcHJpbnRmKCJDdXJyZW50IGRldmljZSBhZGRyZXNzOiAweCV4XG4iLCBjaGlwKTsKKwkJcmV0dXJuIDA7CisJY2FzZSBQQ0E5NTNYX0NNRF9JTlBVVDoKKwkJcGNhOTUzeF9zZXRfZGlyKGNoaXAsICgxIDw8IHVsX2FyZzIpLAorCQkJCVBDQTk1M1hfRElSX0lOIDw8IHVsX2FyZzIpOworCQl2YWwgPSAocGNhOTUzeF9nZXRfdmFsKGNoaXApICYgKDEgPDwgdWxfYXJnMikpICE9IDA7CisKKwkJcHJpbnRmKCJjaGlwIDB4JTAyeCwgcGluIDB4JWx4ID0gJWRcbiIsIGNoaXAsIHVsX2FyZzIsIHZhbCk7CisJCXJldHVybiB2YWw7CisJY2FzZSBQQ0E5NTNYX0NNRF9PVVRQVVQ6CisJCXBjYTk1M3hfc2V0X2RpcihjaGlwLCAoMSA8PCB1bF9hcmcyKSwKKwkJCQkoUENBOTUzWF9ESVJfT1VUIDw8IHVsX2FyZzIpKTsKKwkJcmV0dXJuIHBjYTk1M3hfc2V0X3ZhbChjaGlwLCAoMSA8PCB1bF9hcmcyKSwKKwkJCQkJKHVsX2FyZzMgPDwgdWxfYXJnMikpOworCWNhc2UgUENBOTUzWF9DTURfSU5WRVJUOgorCQlyZXR1cm4gcGNhOTUzeF9zZXRfcG9sKGNoaXAsICgxIDw8IHVsX2FyZzIpLAorCQkJCQkodWxfYXJnMyA8PCB1bF9hcmcyKSk7CisJZGVmYXVsdDoKKwkJLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlICovCisJCXJldHVybiAxOworCX0KK30KKworVV9CT09UX0NNRCgKKwlwY2E5NTN4LAk1LAkxLAlkb19wY2E5NTN4LAorCSJwY2E5NTN4CS0gcGNhOTUzeCBncGlvIGFjY2Vzc1xuIiwKKwkiZGV2aWNlIFtkZXZdXG4iCisJIgktIHNob3cgb3Igc2V0IGN1cnJlbnQgZGV2aWNlIGFkZHJlc3NcbiIKKyNpZmRlZiBDT05GSUdfQ01EX1BDQTk1M1hfSU5GTworCSJwY2E5NTN4IGluZm9cbiIKKwkiCS0gZGlzcGxheSBpbmZvIGZvciBjdXJyZW50IGNoaXBcbiIKKyNlbmRpZgorCSJwY2E5NTN4IG91dHB1dCBwaW4gMHwxXG4iCisJIgktIHNldCBwaW4gYXMgb3V0cHV0IGFuZCBkcml2ZSBsb3cgb3IgaGlnaFxuIgorCSJwY2E5NTN4IGludmVydCBwaW4gMHwxXG4iCisJIgktIGRpc2FibGUvZW5hYmxlIHBvbGFyaXR5IGludmVyc2lvbiBmb3IgcmVhZHNcbiIKKwkicGNhOTUzeCBpbnRwdXQgcGluXG4iCisJIgktIHNldCBwaW4gYXMgaW5wdXQgYW5kIHJlYWQgdmFsdWVcbiIKKyk7CisKKyNlbmRpZiAvKiBDT05GSUdfQ01EX1BDQTk1M1ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2ZzbF9pMmMuYyBiL2RyaXZlcnMvaTJjL2ZzbF9pMmMuYwppbmRleCAzYjVjMDZiLi5jZTY0NmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9mc2xfaTJjLmMKKysrIGIvZHJpdmVycy9pMmMvZnNsX2kyYy5jCkBAIC0zNjcsMjIgKzM2Nyw2IEBACiAJcmV0dXJuIGkyY19yZWFkKGNoaXAsIDAsIDAsIE5VTEwsIDApOwogfQogCi11Y2hhcgotaTJjX3JlZ19yZWFkKHVjaGFyIGkyY19hZGRyLCB1Y2hhciByZWcpCi17Ci0JdWNoYXIgYnVmWzFdOwotCi0JaTJjX3JlYWQoaTJjX2FkZHIsIHJlZywgMSwgYnVmLCAxKTsKLQotCXJldHVybiBidWZbMF07Ci19Ci0KLXZvaWQKLWkyY19yZWdfd3JpdGUodWNoYXIgaTJjX2FkZHIsIHVjaGFyIHJlZywgdWNoYXIgdmFsKQotewotCWkyY193cml0ZShpMmNfYWRkciwgcmVnLCAxLCAmdmFsLCAxKTsKLX0KLQogaW50IGkyY19zZXRfYnVzX251bSh1bnNpZ25lZCBpbnQgYnVzKQogewogI2lmZGVmIENPTkZJR19TWVNfSTJDMl9PRkZTRVQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL3NvZnRfaTJjLmMgYi9kcml2ZXJzL2kyYy9zb2Z0X2kyYy5jCmluZGV4IGQyYTUxNDIuLmEyN2RlNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL3NvZnRfaTJjLmMKKysrIGIvZHJpdmVycy9pMmMvc29mdF9pMmMuYwpAQCAtNDM0LDIzICs0MzQsMyBAQAogCXNlbmRfc3RvcCgpOwogCXJldHVybihmYWlsdXJlcyk7CiB9Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIFJlYWQgYSByZWdpc3RlcgotICovCi11Y2hhciBpMmNfcmVnX3JlYWQodWNoYXIgaTJjX2FkZHIsIHVjaGFyIHJlZykKLXsKLQl1Y2hhciBidWY7Ci0KLQlpMmNfcmVhZChpMmNfYWRkciwgcmVnLCAxLCAmYnVmLCAxKTsKLQotCXJldHVybihidWYpOwotfQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBXcml0ZSBhIHJlZ2lzdGVyCi0gKi8KLXZvaWQgaTJjX3JlZ193cml0ZSh1Y2hhciBpMmNfYWRkciwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCi17Ci0JaTJjX3dyaXRlKGkyY19hZGRyLCByZWcsIDEsICZ2YWwsIDEpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL01ha2VmaWxlIGIvZHJpdmVycy9taXNjL01ha2VmaWxlCmluZGV4IDAxZTBmMzkuLmVhMmJmODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL21pc2MvTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDcgQEAKIExJQgk6PSAkKG9iailsaWJtaXNjLmEKIAogQ09CSlMtJChDT05GSUdfQUxJMTUyWCkgKz0gYWxpNTEyeC5vCitDT0JKUy0kKENPTkZJR19EUzQ1MTApICArPSBkczQ1MTAubwogQ09CSlMtJChDT05GSUdfRlNMX0xBVykgKz0gZnNsX2xhdy5vCiBDT0JKUy0kKENPTkZJR19OUzg3MzA4KSArPSBuczg3MzA4Lm8KIENPQkpTLSQoQ09ORklHX1NUQVRVU19MRUQpICs9IHN0YXR1c19sZWQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2RzNDUxMC5jIGIvZHJpdmVycy9taXNjL2RzNDUxMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZDJmYzIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21pc2MvZHM0NTEwLmMKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBWZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiBEcml2ZXIgZm9yIERTNDUxMCwgYSBDUFUgc3VwZXJ2aXNvciB3aXRoIGludGVncmF0ZWQgRUVQUk9NLCBTUkFNLAorICogYW5kIDQgcHJvZ3JhbW1hYmxlIG5vbi12b2xhdGlsZSBHUElPIHBpbnMuCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGkyYy5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxkczQ1MTAuaD4KKworLyogRGVmYXVsdCB0byBhbiBhZGRyZXNzIHRoYXQgaG9wZWZ1bGx5IHdvbid0IGNvcnJ1cHQgb3RoZXIgaTJjIGRldmljZXMgKi8KKyNpZm5kZWYgQ09ORklHX1NZU19JMkNfRFM0NTEwX0FERFIKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfRFM0NTEwX0FERFIJKH4wKQorI2VuZGlmCisKK2VudW0geworCURTNDUxMF9DTURfSU5GTywKKwlEUzQ1MTBfQ01EX0RFVklDRSwKKwlEUzQ1MTBfQ01EX05WLAorCURTNDUxMF9DTURfUlNUREVMQVksCisJRFM0NTEwX0NNRF9PVVRQVVQsCisJRFM0NTEwX0NNRF9JTlBVVCwKKwlEUzQ1MTBfQ01EX1BVTExVUCwKKwlEUzQ1MTBfQ01EX0VFUFJPTSwKKwlEUzQ1MTBfQ01EX1NFRVBST00sCisJRFM0NTEwX0NNRF9TUkFNLAorfTsKKworLyoKKyAqIFdyaXRlIHRvIERTNDUxMCwgdGFraW5nIHBhZ2UgYm91bmRhcmllcyBpbnRvIGFjY291bnQKKyAqLworaW50IGRzNDUxMF9tZW1fd3JpdGUodWludDhfdCBjaGlwLCBpbnQgb2Zmc2V0LCB1aW50OF90ICpidWYsIGludCBjb3VudCkKK3sKKwlpbnQgd3JsZW47CisJaW50IGkgPSAwOworCisJZG8geworCQl3cmxlbiA9IERTNDUxMF9FRVBST01fUEFHRV9TSVpFIC0KKwkJCURTNDUxMF9FRVBST01fUEFHRV9PRkZTRVQob2Zmc2V0KTsKKwkJaWYgKGNvdW50IDwgd3JsZW4pCisJCQl3cmxlbiA9IGNvdW50OworCQlpZiAoaTJjX3dyaXRlKGNoaXAsIG9mZnNldCwgMSwgJmJ1ZltpXSwgd3JsZW4pKQorCQkJcmV0dXJuIC0xOworCisJCS8qCisJCSAqIFRoaXMgZGVsYXkgaXNuJ3QgbmVlZGVkIGZvciBTUkFNIHdyaXRlcyBidXQgc2hvdWxkbid0IGRlbGF5CisJCSAqIHRoaW5ncyB0b28gbXVjaCwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5IGZvciBzaW1wbGljaXR5CisJCSAqLworCQl1ZGVsYXkoRFM0NTEwX0VFUFJPTV9QQUdFX1dSSVRFX0RFTEFZX01TICogMTAwMCk7CisJCWNvdW50IC09IHdybGVuOworCQlvZmZzZXQgKz0gd3JsZW47CisJCWkgKz0gd3JsZW47CisJfSB3aGlsZSAoY291bnQgPiAwKTsKKworCXJldHVybiAwOworfQorCisvKgorICogR2VuZXJhbCByZWFkIGZyb20gRFM0NTEwCisgKi8KK2ludCBkczQ1MTBfbWVtX3JlYWQodWludDhfdCBjaGlwLCBpbnQgb2Zmc2V0LCB1aW50OF90ICpidWYsIGludCBjb3VudCkKK3sKKwlyZXR1cm4gaTJjX3JlYWQoY2hpcCwgb2Zmc2V0LCAxLCBidWYsIGNvdW50KTsKK30KKworLyoKKyAqIFdyaXRlIFNFRSBiaXQgaW4gY29uZmlnIHJlZ2lzdGVyLgorICogbnYgPSAwIC0gV3JpdGVzIHRvIFNFRVBST00gcmVnaXN0ZXJzIGJlaGF2ZSBsaWtlIEVFUFJPTQorICogbnYgPSAxIC0gV3JpdGVzIHRvIFNFRVBST00gcmVnaXN0ZXJzIGJlaGF2ZSBsaWtlIFNSQU0KKyAqLworaW50IGRzNDUxMF9zZWVfd3JpdGUodWludDhfdCBjaGlwLCB1aW50OF90IG52KQoreworCXVpbnQ4X3QgZGF0YTsKKworCWlmIChpMmNfcmVhZChjaGlwLCBEUzQ1MTBfQ0ZHLCAxLCAmZGF0YSwgMSkpCisJCXJldHVybiAtMTsKKworCWlmIChudikJLyogVHJlYXQgU0VFUFJPTSBiaXRzIGFzIEVFUFJPTSAqLworCQlkYXRhICY9IH5EUzQ1MTBfQ0ZHX1NFRTsKKwllbHNlCS8qIFRyZWF0IFNFRVBST00gYml0cyBhcyBTUkFNICovCisJCWRhdGEgfD0gRFM0NTEwX0NGR19TRUU7CisKKwlyZXR1cm4gZHM0NTEwX21lbV93cml0ZShjaGlwLCBEUzQ1MTBfQ0ZHLCAmZGF0YSwgMSk7Cit9CisKKy8qCisgKiBXcml0ZSBkZS1hc3NlcnRpb24gb2YgcmVzZXQgc2lnbmFsIGRlbGF5CisgKi8KK2ludCBkczQ1MTBfcnN0ZGVsYXlfd3JpdGUodWludDhfdCBjaGlwLCB1aW50OF90IGRlbGF5KQoreworCXVpbnQ4X3QgZGF0YTsKKworCWlmIChpMmNfcmVhZChjaGlwLCBEUzQ1MTBfUlNUREVMQVksIDEsICZkYXRhLCAxKSkKKwkJcmV0dXJuIC0xOworCisJZGF0YSAmPSB+RFM0NTEwX1JTVERFTEFZX01BU0s7CisJZGF0YSB8PSBkZWxheSAmIERTNDUxMF9SU1RERUxBWV9NQVNLOworCisJcmV0dXJuIGRzNDUxMF9tZW1fd3JpdGUoY2hpcCwgRFM0NTEwX1JTVERFTEFZLCAmZGF0YSwgMSk7Cit9CisKKy8qCisgKiBXcml0ZSBwdWxsdXAgY2hhcmFjdGVyaXN0aWNzIG9mIElPIHBpbnMKKyAqLworaW50IGRzNDUxMF9wdWxsdXBfd3JpdGUodWludDhfdCBjaGlwLCB1aW50OF90IHZhbCkKK3sKKwl2YWwgJj0gRFM0NTEwX0lPX01BU0s7CisKKwlyZXR1cm4gZHM0NTEwX21lbV93cml0ZShjaGlwLCBEUzQ1MTBfUFVMTFVQLCAodWludDhfdCAqKSZ2YWwsIDEpOworfQorCisvKgorICogUmVhZCBwdWxsdXAgY2hhcmFjdGVyaXN0aWNzIG9mIElPIHBpbnMKKyAqLworaW50IGRzNDUxMF9wdWxsdXBfcmVhZCh1aW50OF90IGNoaXApCit7CisJdWludDhfdCB2YWw7CisKKwlpZiAoaTJjX3JlYWQoY2hpcCwgRFM0NTEwX1BVTExVUCwgMSwgJnZhbCwgMSkpCisJCXJldHVybiAtMTsKKworCXJldHVybiB2YWwgJiBEUzQ1MTBfSU9fTUFTSzsKK30KKworLyoKKyAqIFdyaXRlIGRyaXZlIGxldmVsIG9mIElPIHBpbnMKKyAqLworaW50IGRzNDUxMF9ncGlvX3dyaXRlKHVpbnQ4X3QgY2hpcCwgdWludDhfdCB2YWwpCit7CisJdWludDhfdCBkYXRhOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IERTNDUxMF9OVU1fSU87IGkrKykgeworCQlpZiAoaTJjX3JlYWQoY2hpcCwgRFM0NTEwX0lPMCAtIGksIDEsICZkYXRhLCAxKSkKKwkJCXJldHVybiAtMTsKKworCQlpZiAodmFsICYgKDB4MSA8PCBpKSkKKwkJCWRhdGEgfD0gMHgxOworCQllbHNlCisJCQlkYXRhICY9IH4weDE7CisKKwkJaWYgKGRzNDUxMF9tZW1fd3JpdGUoY2hpcCwgRFM0NTEwX0lPMCAtIGksICZkYXRhLCAxKSkKKwkJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJlYWQgZHJpdmUgbGV2ZWwgb2YgSU8gcGlucworICovCitpbnQgZHM0NTEwX2dwaW9fcmVhZCh1aW50OF90IGNoaXApCit7CisJdWludDhfdCBkYXRhOworCWludCB2YWwgPSAwOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IERTNDUxMF9OVU1fSU87IGkrKykgeworCQlpZiAoaTJjX3JlYWQoY2hpcCwgRFM0NTEwX0lPMCAtIGksIDEsICZkYXRhLCAxKSkKKwkJCXJldHVybiAtMTsKKworCQlpZiAoZGF0YSAmIDEpCisJCQl2YWwgfD0gKDEgPDwgaSk7CisJfQorCisJcmV0dXJuIHZhbDsKK30KKworLyoKKyAqIFJlYWQgcGh5c2ljYWwgbGV2ZWwgb2YgSU8gcGlucworICovCitpbnQgZHM0NTEwX2dwaW9fcmVhZF92YWwodWludDhfdCBjaGlwKQoreworCXVpbnQ4X3QgdmFsOworCisJaWYgKGkyY19yZWFkKGNoaXAsIERTNDUxMF9JT19TVEFUVVMsIDEsICZ2YWwsIDEpKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gdmFsICYgRFM0NTEwX0lPX01BU0s7Cit9CisKKyNpZmRlZiBDT05GSUdfQ01EX0RTNDUxMAorI2lmZGVmIENPTkZJR19DTURfRFM0NTEwX0lORk8KKy8qCisgKiBEaXNwbGF5IERTNDUxMCBpbmZvcm1hdGlvbgorICovCitzdGF0aWMgaW50IGRzNDUxMF9pbmZvKHVpbnQ4X3QgY2hpcCkKK3sKKwlpbnQgaTsKKwlpbnQgdG1wOworCXVpbnQ4X3QgZGF0YTsKKworCXByaW50ZigiRFM0NTEwIEAgMHgleDpcblxuIiwgY2hpcCk7CisKKwlpZiAoaTJjX3JlYWQoY2hpcCwgRFM0NTEwX1JTVERFTEFZLCAxLCAmZGF0YSwgMSkpCisJCXJldHVybiAtMTsKKwlwcmludGYoInJzdGRlbGF5ID0gMHgleFxuXG4iLCBkYXRhICYgRFM0NTEwX1JTVERFTEFZX01BU0spOworCisJaWYgKGkyY19yZWFkKGNoaXAsIERTNDUxMF9DRkcsIDEsICZkYXRhLCAxKSkKKwkJcmV0dXJuIC0xOworCXByaW50ZigiY29uZmlnICAgPSAweCV4XG4iLCBkYXRhKTsKKwlwcmludGYoIiAvcmVhZHkgID0gJWRcbiIsIGRhdGEgJiBEUzQ1MTBfQ0ZHX1JFQURZID8gMSA6IDApOworCXByaW50ZigiIHRyaXAgcHQgPSAlZFxuIiwgZGF0YSAmIERTNDUxMF9DRkdfVFJJUF9QT0lOVCA/IDEgOiAwKTsKKwlwcmludGYoIiByc3Qgc3RzID0gJWRcbiIsIGRhdGEgJiBEUzQ1MTBfQ0ZHX1JFU0VUID8gMSA6IDApOworCXByaW50ZigiIC9zZWUgICAgPSAlZFxuIiwgZGF0YSAmIERTNDUxMF9DRkdfU0VFID8gMSA6IDApOworCXByaW50ZigiIHN3cnN0ICAgPSAlZFxuXG4iLCBkYXRhICYgRFM0NTEwX0NGR19TV1JTVCA/IDEgOiAwKTsKKworCXByaW50ZigiZ3BpbyBwaW5zOiAzMjEwXG4iKTsKKwlwcmludGYoIi0tLS0tLS0tLS0tLS0tLVxuIik7CisJcHJpbnRmKCJwdWxsdXAgICAgICIpOworCisJdG1wID0gZHM0NTEwX3B1bGx1cF9yZWFkKGNoaXApOworCWlmICh0bXAgPT0gLTEpCisJCXJldHVybiB0bXA7CisJZm9yIChpID0gRFM0NTEwX05VTV9JTyAtIDE7IGkgPj0gMDsgaS0tKQorCQlwcmludGYoIiVkIiwgKHRtcCAmICgxIDw8IGkpKSA/IDEgOiAwKTsKKwlwcmludGYoIlxuIik7CisKKwlwcmludGYoImRyaXZlbiAgICAgIik7CisJdG1wID0gZHM0NTEwX2dwaW9fcmVhZChjaGlwKTsKKwlpZiAodG1wID09IC0xKQorCQlyZXR1cm4gLTE7CisJZm9yIChpID0gRFM0NTEwX05VTV9JTyAtIDE7IGkgPj0gMDsgaS0tKQorCQlwcmludGYoIiVkIiwgKHRtcCAmICgxIDw8IGkpKSA/IDEgOiAwKTsKKwlwcmludGYoIlxuIik7CisKKwlwcmludGYoInJlYWQgICAgICAgIik7CisJdG1wID0gZHM0NTEwX2dwaW9fcmVhZF92YWwoY2hpcCk7CisJaWYgKHRtcCA9PSAtMSkKKwkJcmV0dXJuIC0xOworCWZvciAoaSA9IERTNDUxMF9OVU1fSU8gLSAxOyBpID49IDA7IGktLSkKKwkJcHJpbnRmKCIlZCIsICh0bXAgJiAoMSA8PCBpKSkgPyAxIDogMCk7CisJcHJpbnRmKCJcbiIpOworCisJcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogQ09ORklHX0NNRF9EUzQ1MTBfSU5GTyAqLworCitjbWRfdGJsX3QgY21kX2RzNDUxMFtdID0geworCVVfQk9PVF9DTURfTUtFTlQoZGV2aWNlLCAzLCAwLCAodm9pZCAqKURTNDUxMF9DTURfREVWSUNFLCAiIiwgIiIpLAorCVVfQk9PVF9DTURfTUtFTlQobnYsIDMsIDAsICh2b2lkICopRFM0NTEwX0NNRF9OViwgIiIsICIiKSwKKwlVX0JPT1RfQ01EX01LRU5UKG91dHB1dCwgNCwgMCwgKHZvaWQgKilEUzQ1MTBfQ01EX09VVFBVVCwgIiIsICIiKSwKKwlVX0JPT1RfQ01EX01LRU5UKGlucHV0LCAzLCAwLCAodm9pZCAqKURTNDUxMF9DTURfSU5QVVQsICIiLCAiIiksCisJVV9CT09UX0NNRF9NS0VOVChwdWxsdXAsIDQsIDAsICh2b2lkICopRFM0NTEwX0NNRF9QVUxMVVAsICIiLCAiIiksCisjaWZkZWYgQ09ORklHX0NNRF9EUzQ1MTBfSU5GTworCVVfQk9PVF9DTURfTUtFTlQoaW5mbywgMiwgMCwgKHZvaWQgKilEUzQ1MTBfQ01EX0lORk8sICIiLCAiIiksCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfQ01EX0RTNDUxMF9SU1QKKwlVX0JPT1RfQ01EX01LRU5UKHJzdGRlbGF5LCAzLCAwLCAodm9pZCAqKURTNDUxMF9DTURfUlNUREVMQVksICIiLCAiIiksCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfQ01EX0RTNDUxMF9NRU0KKwlVX0JPT1RfQ01EX01LRU5UKGVlcHJvbSwgNiwgMCwgKHZvaWQgKilEUzQ1MTBfQ01EX0VFUFJPTSwgIiIsICIiKSwKKwlVX0JPT1RfQ01EX01LRU5UKHNlZXByb20sIDYsIDAsICh2b2lkICopRFM0NTEwX0NNRF9TRUVQUk9NLCAiIiwgIiIpLAorCVVfQk9PVF9DTURfTUtFTlQoc3JhbSwgNiwgMCwgKHZvaWQgKilEUzQ1MTBfQ01EX1NSQU0sICIiLCAiIiksCisjZW5kaWYKK307CisKK2ludCBkb19kczQ1MTAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RhdGljIHVpbnQ4X3QgY2hpcCA9IENPTkZJR19TWVNfSTJDX0RTNDUxMF9BRERSOworCWNtZF90YmxfdCAqYzsKKwl1bG9uZyB1bF9hcmcyID0gMDsKKwl1bG9uZyB1bF9hcmczID0gMDsKKwlpbnQgdG1wOworI2lmZGVmIENPTkZJR19DTURfRFM0NTEwX01FTQorCXVsb25nIGFkZHI7CisJdWxvbmcgb2ZmOworCXVsb25nIGNudDsKKwlpbnQgZW5kOworCWludCAoKnJ3X2Z1bmMpKHVpbnQ4X3QsIGludCwgdWludDhfdCAqLCBpbnQpOworI2VuZGlmCisKKwljID0gZmluZF9jbWRfdGJsKGFyZ3ZbMV0sIGNtZF9kczQ1MTAsIEFSUkFZX1NJWkUoY21kX2RzNDUxMCkpOworCisJLyogQWxsIGNvbW1hbmRzIGJ1dCAiZGV2aWNlIiByZXF1aXJlICdtYXhhcmdzJyBhcmd1bWVudHMgKi8KKwlpZiAoIWMgfHwgISgoYXJnYyA9PSAoYy0+bWF4YXJncykpIHx8CisJCSgoKGludCljLT5jbWQgPT0gRFM0NTEwX0NNRF9ERVZJQ0UpICYmCisJCSAoYXJnYyA9PSAoYy0+bWF4YXJncyAtIDEpKSkpKSB7CisJCXByaW50ZigiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKKwkJcmV0dXJuIDE7CisJfQorCisJLyogYXJnMiB1c2VkIGFzIGNoaXAgYWRkciBhbmQgcGluIG51bWJlciAqLworCWlmIChhcmdjID4gMikKKwkJdWxfYXJnMiA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDE2KTsKKworCS8qIGFyZzMgdXNlZCBhcyBvdXRwdXQvcHVsbHVwIHZhbHVlICovCisJaWYgKGFyZ2MgPiAzKQorCQl1bF9hcmczID0gc2ltcGxlX3N0cnRvdWwoYXJndlszXSwgTlVMTCwgMTYpOworCisJc3dpdGNoICgoaW50KWMtPmNtZCkgeworCWNhc2UgRFM0NTEwX0NNRF9ERVZJQ0U6CisJCWlmIChhcmdjID09IDMpCisJCQljaGlwID0gdWxfYXJnMjsKKwkJcHJpbnRmKCJDdXJyZW50IGRldmljZSBhZGRyZXNzOiAweCV4XG4iLCBjaGlwKTsKKwkJcmV0dXJuIDA7CisJY2FzZSBEUzQ1MTBfQ01EX05WOgorCQlyZXR1cm4gZHM0NTEwX3NlZV93cml0ZShjaGlwLCB1bF9hcmcyKTsKKwljYXNlIERTNDUxMF9DTURfT1VUUFVUOgorCQl0bXAgPSBkczQ1MTBfZ3Bpb19yZWFkKGNoaXApOworCQlpZiAodG1wID09IC0xKQorCQkJcmV0dXJuIC0xOworCQlpZiAodWxfYXJnMykKKwkJCXRtcCB8PSAoMSA8PCB1bF9hcmcyKTsKKwkJZWxzZQorCQkJdG1wICY9IH4oMSA8PCB1bF9hcmcyKTsKKwkJcmV0dXJuIGRzNDUxMF9ncGlvX3dyaXRlKGNoaXAsIHRtcCk7CisJY2FzZSBEUzQ1MTBfQ01EX0lOUFVUOgorCQl0bXAgPSBkczQ1MTBfZ3Bpb19yZWFkX3ZhbChjaGlwKTsKKwkJaWYgKHRtcCA9PSAtMSkKKwkJCXJldHVybiAtMTsKKwkJcmV0dXJuICh0bXAgJiAoMSA8PCB1bF9hcmcyKSkgIT0gMDsKKwljYXNlIERTNDUxMF9DTURfUFVMTFVQOgorCQl0bXAgPSBkczQ1MTBfcHVsbHVwX3JlYWQoY2hpcCk7CisJCWlmICh0bXAgPT0gLTEpCisJCQlyZXR1cm4gLTE7CisJCWlmICh1bF9hcmczKQorCQkJdG1wIHw9ICgxIDw8IHVsX2FyZzIpOworCQllbHNlCisJCQl0bXAgJj0gfigxIDw8IHVsX2FyZzIpOworCQlyZXR1cm4gZHM0NTEwX3B1bGx1cF93cml0ZShjaGlwLCB0bXApOworI2lmZGVmIENPTkZJR19DTURfRFM0NTEwX0lORk8KKwljYXNlIERTNDUxMF9DTURfSU5GTzoKKwkJcmV0dXJuIGRzNDUxMF9pbmZvKGNoaXApOworI2VuZGlmCisjaWZkZWYgQ09ORklHX0NNRF9EUzQ1MTBfUlNUCisJY2FzZSBEUzQ1MTBfQ01EX1JTVERFTEFZOgorCQlyZXR1cm4gZHM0NTEwX3JzdGRlbGF5X3dyaXRlKGNoaXAsIHVsX2FyZzIpOworI2VuZGlmCisjaWZkZWYgQ09ORklHX0NNRF9EUzQ1MTBfTUVNCisJY2FzZSBEUzQ1MTBfQ01EX0VFUFJPTToKKwkJZW5kID0gRFM0NTEwX0VFUFJPTSArIERTNDUxMF9FRVBST01fU0laRTsKKwkJb2ZmID0gRFM0NTEwX0VFUFJPTTsKKwkJYnJlYWs7CisJY2FzZSBEUzQ1MTBfQ01EX1NFRVBST006CisJCWVuZCA9IERTNDUxMF9TRUVQUk9NICsgRFM0NTEwX1NFRVBST01fU0laRTsKKwkJb2ZmID0gRFM0NTEwX1NFRVBST007CisJCWJyZWFrOworCWNhc2UgRFM0NTEwX0NNRF9TUkFNOgorCQllbmQgPSBEUzQ1MTBfU1JBTSArIERTNDUxMF9TUkFNX1NJWkU7CisJCW9mZiA9IERTNDUxMF9TUkFNOworCQlicmVhazsKKyNlbmRpZgorCWRlZmF1bHQ6CisJCS8qIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZS4uLiAqLworCQlyZXR1cm4gMTsKKwl9CisKKyNpZmRlZiBDT05GSUdfQ01EX0RTNDUxMF9NRU0KKwkvKiBPbmx5IGVlcHJvbSwgc2VlcHJvbSwgYW5kIHNyYW0gY29tbWFuZHMgc2hvdWxkIG1ha2UgaXQgaGVyZSAqLworCWlmIChzdHJjbXAoYXJndlsyXSwgInJlYWQiKSA9PSAwKSB7CisJCXJ3X2Z1bmMgPSBkczQ1MTBfbWVtX3JlYWQ7CisJfSBlbHNlIGlmIChzdHJjbXAoYXJndlsyXSwgIndyaXRlIikgPT0gMCkgeworCQlyd19mdW5jID0gZHM0NTEwX21lbV93cml0ZTsKKwl9IGVsc2UgeworCQlwcmludGYoIlVzYWdlOlxuJXNcbiIsIGNtZHRwLT51c2FnZSk7CisJCXJldHVybiAxOworCX0KKworCWFkZHIgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7CisJb2ZmICs9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbNF0sIE5VTEwsIDE2KTsKKwljbnQgPSBzaW1wbGVfc3RydG91bChhcmd2WzVdLCBOVUxMLCAxNik7CisKKwlpZiAoKG9mZiArIGNudCkgPiBlbmQpIHsKKwkJcHJpbnRmKCJFUlJPUjogaW52YWxpZCBsZW5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIHJ3X2Z1bmMoY2hpcCwgb2ZmLCAodWludDhfdCAqKWFkZHIsIGNudCk7CisjZW5kaWYKK30KKworVV9CT09UX0NNRCgKKwlkczQ1MTAsCTYsCTEsCWRvX2RzNDUxMCwKKwkiZHM0NTEwCS0gZHM0NTEwIGVlcHJvbS9zZWVwcm9tL3NyYW0vZ3BpbyBhY2Nlc3NcbiIsCisJImRldmljZSBbZGV2XVxuIgorCSIJLSBzaG93IG9yIHNldCBjdXJyZW50IGRldmljZSBhZGRyZXNzXG4iCisjaWZkZWYgQ09ORklHX0NNRF9EUzQ1MTBfSU5GTworCSJkczQ1MTAgaW5mb1xuIgorCSIJLSBkaXNwbGF5IGRzNDUxMCBpbmZvXG4iCisjZW5kaWYKKwkiZHM0NTEwIG91dHB1dCBwaW4gMHwxXG4iCisJIgktIHNldCBwaW4gbG93IG9yIGhpZ2gtWlxuIgorCSJkczQ1MTAgaW5wdXQgcGluXG4iCisJIgktIHJlYWQgdmFsdWUgb2YgcGluXG4iCisJImRzNDUxMCBwdWxsdXAgcGluIDB8MVxuIgorCSIJLSBkaXNhYmxlL2VuYWJsZSBwdWxsdXAgb24gc3BlY2lmaWVkIHBpblxuIgorCSJkczQ1MTAgbnYgMHwxXG4iCisJIgktIG1ha2UgZ3BpbyBhbmQgc2VlcHJvbSB3cml0ZXMgdm9sYXRpbGUvbm9uLXZvbGF0aWxlXG4iCisjaWZkZWYgQ09ORklHX0NNRF9EUzQ1MTBfUlNUCisJImRzNDUxMCByc3RkZWxheSAwLTNcbiIKKwkiCS0gc2V0IHJlc2V0IG91dHB1dCBkZWxheVxuIgorI2VuZGlmCisjaWZkZWYgQ09ORklHX0NNRF9EUzQ1MTBfTUVNCisJImRzNDUxMCBlZXByb20gcmVhZCBhZGRyIG9mZiBjbnRcbiIKKwkiZHM0NTEwIGVlcHJvbSB3cml0ZSBhZGRyIG9mZiBjbnRcbiIKKwkiCS0gcmVhZC93cml0ZSAnY250JyBieXRlcyBhdCBFRVBST00gb2Zmc2V0ICdvZmYnXG4iCisJImRzNDUxMCBzZWVwcm9tIHJlYWQgYWRkciBvZmYgY250XG4iCisJImRzNDUxMCBzZWVwcm9tIHdyaXRlIGFkZHIgb2ZmIGNudFxuIgorCSIJLSByZWFkL3dyaXRlICdjbnQnIGJ5dGVzIGF0IFNSQU0tc2hhZG93ZWQgRUVQUk9NIG9mZnNldCAnb2ZmJ1xuIgorCSJkczQ1MTAgc3JhbSByZWFkIGFkZHIgb2ZmIGNudFxuIgorCSJkczQ1MTAgc3JhbSB3cml0ZSBhZGRyIG9mZiBjbnRcbiIKKwkiCS0gcmVhZC93cml0ZSAnY250JyBieXRlcyBhdCBTUkFNIG9mZnNldCAnb2ZmJ1xuIgorI2VuZGlmCispOworI2VuZGlmIC8qIENPTkZJR19DTURfRFM0NTEwICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9qZWRlY19mbGFzaC5jIGIvZHJpdmVycy9tdGQvamVkZWNfZmxhc2guYwppbmRleCAyMjZlMWU0Li4yZDk5ZDRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9qZWRlY19mbGFzaC5jCisrKyBiL2RyaXZlcnMvbXRkL2plZGVjX2ZsYXNoLmMKQEAgLTIxNSw2ICsyMTUsMjAgQEAKIAkJCUVSQVNFSU5GTygweDAxMDAwLDEyOCksCiAJCX0KIAl9LAorCXsKKwkJLm1mcl9pZAkJPSBTVE1fTUFOVUZBQ1QsCisJCS5kZXZfaWQJCT0gU1RNX0lEX00yOVcwNDBCLAorCQkubmFtZQkJPSAiU1QgTWljcm8gTTI5VzA0MEIiLAorCQkudWFkZHIJCT0geworCQkJWzBdID0gTVREX1VBRERSXzB4MDU1NV8weDAyQUEgLyogeDggKi8KKwkJfSwKKwkJLkRldlNpemUJPSBTSVpFXzUxMktpQiwKKwkJLkNtZFNldAkJPSBQX0lEX0FNRF9TVEQsCisJCS5OdW1FcmFzZVJlZ2lvbnM9IDEsCisJCS5yZWdpb25zCT0geworCQkJRVJBU0VJTkZPKDB4MTAwMDAsOCksCisJCX0KKwl9LAogI2VuZGlmCiAjaWZkZWYgQ09ORklHX1NZU19GTEFTSF9MRUdBQ1lfNTEyS3gxNgogCXsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210ZHBhcnQuYyBiL2RyaXZlcnMvbXRkL210ZHBhcnQuYwppbmRleCA5YTNiZjZmLi5mMDEwZjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tdGRwYXJ0LmMKKysrIGIvZHJpdmVycy9tdGQvbXRkcGFydC5jCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPgogCiAvKiBPdXIgcGFydGl0aW9uIGxpbmtlZCBsaXN0ICovCi1zdGF0aWMgTElTVF9IRUFEKG10ZF9wYXJ0aXRpb25zKTsKK3N0cnVjdCBsaXN0X2hlYWQgbXRkX3BhcnRpdGlvbnM7CiAKIC8qIE91ciBwYXJ0aXRpb24gbm9kZSBzdHJ1Y3R1cmUgKi8KIHN0cnVjdCBtdGRfcGFydCB7CkBAIC0zNDksNiArMzQ5LDE0IEBACiAJdV9pbnQzMl90IGN1cl9vZmZzZXQgPSAwOwogCWludCBpOwogCisJLyoKKwkgKiBOZWVkIHRvIGluaXQgdGhlIGxpc3QgaGVyZSwgc2luY2UgTElTVF9JTklUKCkgZG9lcyBub3QKKwkgKiB3b3JrIG9uIHBsYXRmb3JtcyB3aGVyZSByZWxvY2F0aW9uIGhhcyBwcm9ibGVtcyAobGlrZSBNSVBTCisJICogJiBQUEMpLgorCSAqLworCWlmIChtdGRfcGFydGl0aW9ucy5uZXh0ID09IE5VTEwpCisJCUlOSVRfTElTVF9IRUFEKCZtdGRfcGFydGl0aW9ucyk7CisKIAlwcmludGsgKEtFUk5fTk9USUNFICJDcmVhdGluZyAlZCBNVEQgcGFydGl0aW9ucyBvbiBcIiVzXCI6XG4iLCBuYnBhcnRzLCBtYXN0ZXItPm5hbWUpOwogCiAJZm9yIChpID0gMDsgaSA8IG5icGFydHM7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9mc2xfZWxiY19uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYwppbmRleCAzNjdjN2Q3Li4zZjMxOGUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYwpAQCAtNzE4LDcgKzcxOCw3IEBACiBpbnQgYm9hcmRfbmFuZF9pbml0KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCiB7CiAJc3RydWN0IGZzbF9lbGJjX210ZCAqcHJpdjsKLQl1aW50MzJfdCBiciwgb3I7CisJdWludDMyX3QgYnIgPSAwLCBvciA9IDA7CiAKIAlpZiAoIWVsYmNfY3RybCkgewogCQlmc2xfZWxiY19jdHJsX2luaXQoKTsKQEAgLTczNywxMSArNzM3LDEzIEBACiAJICogaWYgd2UgY291bGQgcGFzcyBtb3JlIHRoYW4gb25lIGRhdHVtIHRvIHRoZSBOQU5EIGRyaXZlci4uLgogCSAqLwogCWZvciAocHJpdi0+YmFuayA9IDA7IHByaXYtPmJhbmsgPCBNQVhfQkFOS1M7IHByaXYtPmJhbmsrKykgeworCQlwaHlzX2FkZHJfdCBiYXNlX2FkZHIgPSB2aXJ0X3RvX3BoeXMobmFuZC0+SU9fQUREUl9SKTsKKwogCQliciA9IGluX2JlMzIoJmVsYmNfY3RybC0+cmVncy0+YmFua1twcml2LT5iYW5rXS5icik7CiAJCW9yID0gaW5fYmUzMigmZWxiY19jdHJsLT5yZWdzLT5iYW5rW3ByaXYtPmJhbmtdLm9yKTsKIAogCQlpZiAoKGJyICYgQlJfVikgJiYgKGJyICYgQlJfTVNFTCkgPT0gQlJfTVNfRkNNICYmCi0JCSAgICAoYnIgJiBvciAmIEJSX0JBKSA9PSAocGh5c19hZGRyX3QpbmFuZC0+SU9fQUREUl9SKQorCQkgICAgKGJyICYgb3IgJiBCUl9CQSkgPT0gQlJfUEhZU19BRERSKGJhc2VfYWRkcikpCiAJCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kLmMKaW5kZXggZWViMTlmZi4uY2Y5MjYxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kLmMKQEAgLTM2LDggKzM2LDYgQEAKIAogc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdF9uYW5kX25hbWVbXSA9ICJuYW5kIjsKIAotZXh0ZXJuIGludCBib2FyZF9uYW5kX2luaXQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCk7Ci0KIHN0YXRpYyB2b2lkIG5hbmRfaW5pdF9jaGlwKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAogCQkJICAgdWxvbmcgYmFzZV9hZGRyKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKaW5kZXggYmEwNWI3Ni4uZWYzN2Y5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jCkBAIC00NjAsOCArNDYwLDggQEAKIAlzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwID0gbXRkLT5wcml2OwogCiAJaWYgKCEoY2hpcC0+b3B0aW9ucyAmIE5BTkRfQkJUX1NDQU5ORUQpKSB7Ci0JCWNoaXAtPnNjYW5fYmJ0KG10ZCk7CiAJCWNoaXAtPm9wdGlvbnMgfD0gTkFORF9CQlRfU0NBTk5FRDsKKwkJY2hpcC0+c2Nhbl9iYnQobXRkKTsKIAl9CiAKIAlpZiAoIWNoaXAtPmJidCkKQEAgLTIxNDQsNyArMjE0NCw3IEBACiB7CiAJaW50IHBhZ2UsIGxlbiwgc3RhdHVzLCBwYWdlc19wZXJfYmxvY2ssIHJldCwgY2hpcG5yOwogCXN0cnVjdCBuYW5kX2NoaXAgKmNoaXAgPSBtdGQtPnByaXY7Ci0JaW50IHJld3JpdGVfYmJ0W05BTkRfTUFYX0NISVBTXT17MH07CisJaW50IHJld3JpdGVfYmJ0W0NPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFNdPXswfTsKIAl1bnNpZ25lZCBpbnQgYmJ0X21hc2tlZF9wYWdlID0gMHhmZmZmZmZmZjsKIAogCU1URERFQlVHIChNVERfREVCVUdfTEVWRUwzLCAibmFuZF9lcmFzZTogc3RhcnQgPSAweCUwOHgsIGxlbiA9ICVpXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX3V0aWwuYyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF91dGlsLmMKaW5kZXggZDg2Yzk4Ny4uNmJhNTJiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX3V0aWwuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfdXRpbC5jCkBAIC0yMzgsNyArMjM4LDggQEAKICNlbmRpZgogCiAvKiBYWFggVS1CT09UIFhYWCAqLwotI2lmIDAKKyNpZmRlZiBDT05GSUdfQ01EX05BTkRfTE9DS19VTkxPQ0sKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogU3VwcG9ydCBmb3IgbG9ja2luZyAvIHVubG9ja2luZyBvcGVyYXRpb25zIG9mIHNvbWUgTkFORCBkZXZpY2VzCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0yNTMsNyArMjU0LDcgQEAKICAqIG5hbmRfbG9jazogU2V0IGFsbCBwYWdlcyBvZiBOQU5EIGZsYXNoIGNoaXAgdG8gdGhlIExPQ0sgb3IgTE9DSy1USUdIVAogICoJICAgICAgc3RhdGUKICAqCi0gKiBAcGFyYW0gbWVtaW5mbwluYW5kIG10ZCBpbnN0YW5jZQorICogQHBhcmFtIG10ZAkJbmFuZCBtdGQgaW5zdGFuY2UKICAqIEBwYXJhbSB0aWdodAkJYnJpbmcgZGV2aWNlIGluIGxvY2sgdGlnaHQgbW9kZQogICoKICAqIEByZXR1cm4JCTAgb24gc3VjY2VzcywgLTEgaW4gY2FzZSBvZiBlcnJvcgpAQCAtMjcwLDIxICsyNzEsMjEgQEAKICAqICAgY2FsbHMgd2lsbCBmYWlsLiBJdCBpcyBvbmx5IHBvc2libGUgdG8gbGVhdmUgbG9jay10aWdodCBzdGF0ZSBieQogICogICBhbiBoYXJkd2FyZSBzaWduYWwgKGxvdyBwdWxzZSBvbiBfV1AgcGluKSBvciBieSBwb3dlciBkb3duLgogICovCi1pbnQgbmFuZF9sb2NrKG5hbmRfaW5mb190ICptZW1pbmZvLCBpbnQgdGlnaHQpCitpbnQgbmFuZF9sb2NrKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgdGlnaHQpCiB7CiAJaW50IHJldCA9IDA7CiAJaW50IHN0YXR1czsKLQlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbWVtaW5mby0+cHJpdjsKKwlzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwID0gbXRkLT5wcml2OwogCiAJLyogc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCXRoaXMtPnNlbGVjdF9jaGlwKG1lbWluZm8sIDApOworCWNoaXAtPnNlbGVjdF9jaGlwKG10ZCwgMCk7CiAKLQl0aGlzLT5jbWRmdW5jKG1lbWluZm8sCisJY2hpcC0+Y21kZnVuYyhtdGQsCiAJCSAgICAgICh0aWdodCA/IE5BTkRfQ01EX0xPQ0tfVElHSFQgOiBOQU5EX0NNRF9MT0NLKSwKIAkJICAgICAgLTEsIC0xKTsKIAogCS8qIGNhbGwgd2FpdCByZWFkeSBmdW5jdGlvbiAqLwotCXN0YXR1cyA9IHRoaXMtPndhaXRmdW5jKG1lbWluZm8sIHRoaXMsIEZMX1dSSVRJTkcpOworCXN0YXR1cyA9IGNoaXAtPndhaXRmdW5jKG10ZCwgY2hpcCk7CiAKIAkvKiBzZWUgaWYgZGV2aWNlIHRoaW5rcyBpdCBzdWNjZWVkZWQgKi8KIAlpZiAoc3RhdHVzICYgMHgwMSkgewpAQCAtMjkyLDcgKzI5Myw3IEBACiAJfQogCiAJLyogZGUtc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCXRoaXMtPnNlbGVjdF9jaGlwKG1lbWluZm8sIC0xKTsKKwljaGlwLT5zZWxlY3RfY2hpcChtdGQsIC0xKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zMDAsNyArMzAxLDcgQEAKICAqIG5hbmRfZ2V0X2xvY2tfc3RhdHVzOiAtIHF1ZXJ5IGN1cnJlbnQgbG9jayBzdGF0ZSBmcm9tIG9uZSBwYWdlIG9mIE5BTkQKICAqCQkJICAgZmxhc2gKICAqCi0gKiBAcGFyYW0gbWVtaW5mbwluYW5kIG10ZCBpbnN0YW5jZQorICogQHBhcmFtIG10ZAkJbmFuZCBtdGQgaW5zdGFuY2UKICAqIEBwYXJhbSBvZmZzZXQJcGFnZSBhZGRyZXNzIHRvIHF1ZXJ5IChtdXNzIGJlIHBhZ2UgYWxpZ25lZCEpCiAgKgogICogQHJldHVybgkJLTEgaW4gY2FzZSBvZiBlcnJvcgpAQCAtMzExLDE5ICszMTIsMTkgQEAKICAqCQkJICBOQU5EX0xPQ0tfU1RBVFVTX1VOTE9DSzogcGFnZSB1bmxvY2tlZAogICoKICAqLwotaW50IG5hbmRfZ2V0X2xvY2tfc3RhdHVzKG5hbmRfaW5mb190ICptZW1pbmZvLCB1bG9uZyBvZmZzZXQpCitpbnQgbmFuZF9nZXRfbG9ja19zdGF0dXMoc3RydWN0IG10ZF9pbmZvICptdGQsIHVsb25nIG9mZnNldCkKIHsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgY2hpcG5yOwogCWludCBwYWdlOwotCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtZW1pbmZvLT5wcml2OworCXN0cnVjdCBuYW5kX2NoaXAgKmNoaXAgPSBtdGQtPnByaXY7CiAKIAkvKiBzZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCi0JY2hpcG5yID0gKGludCkob2Zmc2V0ID4+IHRoaXMtPmNoaXBfc2hpZnQpOwotCXRoaXMtPnNlbGVjdF9jaGlwKG1lbWluZm8sIGNoaXBucik7CisJY2hpcG5yID0gKGludCkob2Zmc2V0ID4+IGNoaXAtPmNoaXBfc2hpZnQpOworCWNoaXAtPnNlbGVjdF9jaGlwKG10ZCwgY2hpcG5yKTsKIAogCi0JaWYgKChvZmZzZXQgJiAobWVtaW5mby0+d3JpdGVzaXplIC0gMSkpICE9IDApIHsKKwlpZiAoKG9mZnNldCAmIChtdGQtPndyaXRlc2l6ZSAtIDEpKSAhPSAwKSB7CiAJCXByaW50ZiAoIm5hbmRfZ2V0X2xvY2tfc3RhdHVzOiAiCiAJCQkiU3RhcnQgYWRkcmVzcyBtdXN0IGJlIGJlZ2lubmluZyBvZiAiCiAJCQkibmFuZCBwYWdlIVxuIik7CkBAIC0zMzIsMTYgKzMzMywxNiBAQAogCX0KIAogCS8qIGNoZWNrIHRoZSBMb2NrIFN0YXR1cyAqLwotCXBhZ2UgPSAoaW50KShvZmZzZXQgPj4gdGhpcy0+cGFnZV9zaGlmdCk7Ci0JdGhpcy0+Y21kZnVuYyhtZW1pbmZvLCBOQU5EX0NNRF9MT0NLX1NUQVRVUywgLTEsIHBhZ2UgJiB0aGlzLT5wYWdlbWFzayk7CisJcGFnZSA9IChpbnQpKG9mZnNldCA+PiBjaGlwLT5wYWdlX3NoaWZ0KTsKKwljaGlwLT5jbWRmdW5jKG10ZCwgTkFORF9DTURfTE9DS19TVEFUVVMsIC0xLCBwYWdlICYgY2hpcC0+cGFnZW1hc2spOwogCi0JcmV0ID0gdGhpcy0+cmVhZF9ieXRlKG1lbWluZm8pICYgKE5BTkRfTE9DS19TVEFUVVNfVElHSFQKKwlyZXQgPSBjaGlwLT5yZWFkX2J5dGUobXRkKSAmIChOQU5EX0xPQ0tfU1RBVFVTX1RJR0hUCiAJCQkJCSAgfCBOQU5EX0xPQ0tfU1RBVFVTX0xPQ0sKIAkJCQkJICB8IE5BTkRfTE9DS19TVEFUVVNfVU5MT0NLKTsKIAogIG91dDoKIAkvKiBkZS1zZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCi0JdGhpcy0+c2VsZWN0X2NoaXAobWVtaW5mbywgLTEpOworCWNoaXAtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTM0OSw1OSArMzUwLDY1IEBACiAgKiBuYW5kX3VubG9jazogLSBVbmxvY2sgYXJlYSBvZiBOQU5EIHBhZ2VzCiAgKgkJICBvbmx5IG9uZSBjb25zZWN1dGl2ZSBhcmVhIGNhbiBiZSB1bmxvY2tlZCBhdCBvbmUgdGltZSEKICAqCi0gKiBAcGFyYW0gbWVtaW5mbwluYW5kIG10ZCBpbnN0YW5jZQorICogQHBhcmFtIG10ZAkJbmFuZCBtdGQgaW5zdGFuY2UKICAqIEBwYXJhbSBzdGFydAkJc3RhcnQgYnl0ZSBhZGRyZXNzCiAgKiBAcGFyYW0gbGVuZ3RoCW51bWJlciBvZiBieXRlcyB0byB1bmxvY2sgKG11c3QgYmUgYSBtdWx0aXBsZSBvZgogICoJCQlwYWdlIHNpemUgbmFuZC0+d3JpdGVzaXplKQogICoKICAqIEByZXR1cm4JCTAgb24gc3VjY2VzcywgLTEgaW4gY2FzZSBvZiBlcnJvcgogICovCi1pbnQgbmFuZF91bmxvY2sobmFuZF9pbmZvX3QgKm1lbWluZm8sIHVsb25nIHN0YXJ0LCB1bG9uZyBsZW5ndGgpCitpbnQgbmFuZF91bmxvY2soc3RydWN0IG10ZF9pbmZvICptdGQsIHVsb25nIHN0YXJ0LCB1bG9uZyBsZW5ndGgpCiB7CiAJaW50IHJldCA9IDA7CiAJaW50IGNoaXBucjsKIAlpbnQgc3RhdHVzOwogCWludCBwYWdlOwotCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtZW1pbmZvLT5wcml2OworCXN0cnVjdCBuYW5kX2NoaXAgKmNoaXAgPSBtdGQtPnByaXY7CiAJcHJpbnRmICgibmFuZF91bmxvY2s6IHN0YXJ0OiAlMDh4LCBsZW5ndGg6ICVkIVxuIiwKIAkJKGludClzdGFydCwgKGludClsZW5ndGgpOwogCiAJLyogc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCWNoaXBuciA9IChpbnQpKHN0YXJ0ID4+IHRoaXMtPmNoaXBfc2hpZnQpOwotCXRoaXMtPnNlbGVjdF9jaGlwKG1lbWluZm8sIGNoaXBucik7CisJY2hpcG5yID0gKGludCkoc3RhcnQgPj4gY2hpcC0+Y2hpcF9zaGlmdCk7CisJY2hpcC0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOwogCiAJLyogY2hlY2sgdGhlIFdQIGJpdCAqLwotCXRoaXMtPmNtZGZ1bmMobWVtaW5mbywgTkFORF9DTURfU1RBVFVTLCAtMSwgLTEpOwotCWlmICgodGhpcy0+cmVhZF9ieXRlKG1lbWluZm8pICYgMHg4MCkgPT0gMCkgeworCWNoaXAtPmNtZGZ1bmMobXRkLCBOQU5EX0NNRF9TVEFUVVMsIC0xLCAtMSk7CisJaWYgKCEoY2hpcC0+cmVhZF9ieXRlKG10ZCkgJiBOQU5EX1NUQVRVU19XUCkpIHsKIAkJcHJpbnRmICgibmFuZF91bmxvY2s6IERldmljZSBpcyB3cml0ZSBwcm90ZWN0ZWQhXG4iKTsKIAkJcmV0ID0gLTE7CiAJCWdvdG8gb3V0OwogCX0KIAotCWlmICgoc3RhcnQgJiAobWVtaW5mby0+d3JpdGVzaXplIC0gMSkpICE9IDApIHsKKwlpZiAoKHN0YXJ0ICYgKG10ZC0+ZXJhc2VzaXplIC0gMSkpICE9IDApIHsKIAkJcHJpbnRmICgibmFuZF91bmxvY2s6IFN0YXJ0IGFkZHJlc3MgbXVzdCBiZSBiZWdpbm5pbmcgb2YgIgotCQkJIm5hbmQgcGFnZSFcbiIpOworCQkJIm5hbmQgYmxvY2shXG4iKTsKIAkJcmV0ID0gLTE7CiAJCWdvdG8gb3V0OwogCX0KIAotCWlmIChsZW5ndGggPT0gMCB8fCAobGVuZ3RoICYgKG1lbWluZm8tPndyaXRlc2l6ZSAtIDEpKSAhPSAwKSB7Ci0JCXByaW50ZiAoIm5hbmRfdW5sb2NrOiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIG5hbmQgcGFnZSAiCi0JCQkic2l6ZSFcbiIpOworCWlmIChsZW5ndGggPT0gMCB8fCAobGVuZ3RoICYgKG10ZC0+ZXJhc2VzaXplIC0gMSkpICE9IDApIHsKKwkJcHJpbnRmICgibmFuZF91bmxvY2s6IExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgbmFuZCBibG9jayAiCisJCQkic2l6ZSAlMDh4IVxuIiwgbXRkLT5lcmFzZXNpemUpOwogCQlyZXQgPSAtMTsKIAkJZ290byBvdXQ7CiAJfQogCisJLyoKKwkgKiBTZXQgbGVuZ3RoIHNvIHRoYXQgdGhlIGxhc3QgYWRkcmVzcyBpcyBzZXQgdG8gdGhlCisJICogc3RhcnRpbmcgYWRkcmVzcyBvZiB0aGUgbGFzdCBibG9jaworCSAqLworCWxlbmd0aCAtPSBtdGQtPmVyYXNlc2l6ZTsKKwogCS8qIHN1Ym1pdCBhZGRyZXNzIG9mIGZpcnN0IHBhZ2UgdG8gdW5sb2NrICovCi0JcGFnZSA9IChpbnQpKHN0YXJ0ID4+IHRoaXMtPnBhZ2Vfc2hpZnQpOwotCXRoaXMtPmNtZGZ1bmMobWVtaW5mbywgTkFORF9DTURfVU5MT0NLMSwgLTEsIHBhZ2UgJiB0aGlzLT5wYWdlbWFzayk7CisJcGFnZSA9IChpbnQpKHN0YXJ0ID4+IGNoaXAtPnBhZ2Vfc2hpZnQpOworCWNoaXAtPmNtZGZ1bmMobXRkLCBOQU5EX0NNRF9VTkxPQ0sxLCAtMSwgcGFnZSAmIGNoaXAtPnBhZ2VtYXNrKTsKIAogCS8qIHN1Ym1pdCBBRERSRVNTIG9mIExBU1QgcGFnZSB0byB1bmxvY2sgKi8KLQlwYWdlICs9IChpbnQpKGxlbmd0aCA+PiB0aGlzLT5wYWdlX3NoaWZ0KSAtIDE7Ci0JdGhpcy0+Y21kZnVuYyhtZW1pbmZvLCBOQU5EX0NNRF9VTkxPQ0syLCAtMSwgcGFnZSAmIHRoaXMtPnBhZ2VtYXNrKTsKKwlwYWdlICs9IChpbnQpKGxlbmd0aCA+PiBjaGlwLT5wYWdlX3NoaWZ0KTsKKwljaGlwLT5jbWRmdW5jKG10ZCwgTkFORF9DTURfVU5MT0NLMiwgLTEsIHBhZ2UgJiBjaGlwLT5wYWdlbWFzayk7CiAKIAkvKiBjYWxsIHdhaXQgcmVhZHkgZnVuY3Rpb24gKi8KLQlzdGF0dXMgPSB0aGlzLT53YWl0ZnVuYyhtZW1pbmZvLCB0aGlzLCBGTF9XUklUSU5HKTsKKwlzdGF0dXMgPSBjaGlwLT53YWl0ZnVuYyhtdGQsIGNoaXApOwogCS8qIHNlZSBpZiBkZXZpY2UgdGhpbmtzIGl0IHN1Y2NlZWRlZCAqLwogCWlmIChzdGF0dXMgJiAweDAxKSB7CiAJCS8qIHRoZXJlIHdhcyBhbiBlcnJvciAqLwpAQCAtNDExLDcgKzQxOCw3IEBACiAKICBvdXQ6CiAJLyogZGUtc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCXRoaXMtPnNlbGVjdF9jaGlwKG1lbWluZm8sIC0xKTsKKwljaGlwLT5zZWxlY3RfY2hpcChtdGQsIC0xKTsKIAlyZXR1cm4gcmV0OwogfQogI2VuZGlmCkBAIC00ODgsNyArNDk1LDcgQEAKIAlpZiAobGVuX2luY2xfYmFkID09ICpsZW5ndGgpIHsKIAkJcnZhbCA9IG5hbmRfd3JpdGUgKG5hbmQsIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIpOwogCQlpZiAocnZhbCAhPSAwKQotCQkJcHJpbnRmICgiTkFORCB3cml0ZSB0byBvZmZzZXQgJXggZmFpbGVkICVkXG4iLAorCQkJcHJpbnRmICgiTkFORCB3cml0ZSB0byBvZmZzZXQgJXp4IGZhaWxlZCAlZFxuIiwKIAkJCQlvZmZzZXQsIHJ2YWwpOwogCiAJCXJldHVybiBydmFsOwpAQCAtNDk5LDcgKzUwNiw3IEBACiAJCXNpemVfdCB3cml0ZV9zaXplOwogCiAJCWlmIChuYW5kX2Jsb2NrX2lzYmFkIChuYW5kLCBvZmZzZXQgJiB+KG5hbmQtPmVyYXNlc2l6ZSAtIDEpKSkgewotCQkJcHJpbnRmICgiU2tpcCBiYWQgYmxvY2sgMHglMDh4XG4iLAorCQkJcHJpbnRmICgiU2tpcCBiYWQgYmxvY2sgMHglMDh6eFxuIiwKIAkJCQlvZmZzZXQgJiB+KG5hbmQtPmVyYXNlc2l6ZSAtIDEpKTsKIAkJCW9mZnNldCArPSBuYW5kLT5lcmFzZXNpemUgLSBibG9ja19vZmZzZXQ7CiAJCQljb250aW51ZTsKQEAgLTUxMiw3ICs1MTksNyBAQAogCiAJCXJ2YWwgPSBuYW5kX3dyaXRlIChuYW5kLCBvZmZzZXQsICZ3cml0ZV9zaXplLCBwX2J1ZmZlcik7CiAJCWlmIChydmFsICE9IDApIHsKLQkJCXByaW50ZiAoIk5BTkQgd3JpdGUgdG8gb2Zmc2V0ICV4IGZhaWxlZCAlZFxuIiwKKwkJCXByaW50ZiAoIk5BTkQgd3JpdGUgdG8gb2Zmc2V0ICV6eCBmYWlsZWQgJWRcbiIsCiAJCQkJb2Zmc2V0LCBydmFsKTsKIAkJCSpsZW5ndGggLT0gbGVmdF90b193cml0ZTsKIAkJCXJldHVybiBydmFsOwpAQCAtNTU4LDcgKzU2NSw3IEBACiAJaWYgKGxlbl9pbmNsX2JhZCA9PSAqbGVuZ3RoKSB7CiAJCXJ2YWwgPSBuYW5kX3JlYWQgKG5hbmQsIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIpOwogCQlpZiAocnZhbCAhPSAwKQotCQkJcHJpbnRmICgiTkFORCByZWFkIGZyb20gb2Zmc2V0ICV4IGZhaWxlZCAlZFxuIiwKKwkJCXByaW50ZiAoIk5BTkQgcmVhZCBmcm9tIG9mZnNldCAlenggZmFpbGVkICVkXG4iLAogCQkJCW9mZnNldCwgcnZhbCk7CiAKIAkJcmV0dXJuIHJ2YWw7CkBAIC01NjksNyArNTc2LDcgQEAKIAkJc2l6ZV90IHJlYWRfbGVuZ3RoOwogCiAJCWlmIChuYW5kX2Jsb2NrX2lzYmFkIChuYW5kLCBvZmZzZXQgJiB+KG5hbmQtPmVyYXNlc2l6ZSAtIDEpKSkgewotCQkJcHJpbnRmICgiU2tpcHBpbmcgYmFkIGJsb2NrIDB4JTA4eFxuIiwKKwkJCXByaW50ZiAoIlNraXBwaW5nIGJhZCBibG9jayAweCUwOHp4XG4iLAogCQkJCW9mZnNldCAmIH4obmFuZC0+ZXJhc2VzaXplIC0gMSkpOwogCQkJb2Zmc2V0ICs9IG5hbmQtPmVyYXNlc2l6ZSAtIGJsb2NrX29mZnNldDsKIAkJCWNvbnRpbnVlOwpAQCAtNTgyLDcgKzU4OSw3IEBACiAKIAkJcnZhbCA9IG5hbmRfcmVhZCAobmFuZCwgb2Zmc2V0LCAmcmVhZF9sZW5ndGgsIHBfYnVmZmVyKTsKIAkJaWYgKHJ2YWwgIT0gMCkgewotCQkJcHJpbnRmICgiTkFORCByZWFkIGZyb20gb2Zmc2V0ICV4IGZhaWxlZCAlZFxuIiwKKwkJCXByaW50ZiAoIk5BTkQgcmVhZCBmcm9tIG9mZnNldCAlenggZmFpbGVkICVkXG4iLAogCQkJCW9mZnNldCwgcnZhbCk7CiAJCQkqbGVuZ3RoIC09IGxlZnRfdG9fcmVhZDsKIAkJCXJldHVybiBydmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZF9sZWdhY3kvbmFuZF9sZWdhY3kuYyBiL2RyaXZlcnMvbXRkL25hbmRfbGVnYWN5L25hbmRfbGVnYWN5LmMKaW5kZXggNDA3ZTkwMS4uNDQxNzgwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZF9sZWdhY3kvbmFuZF9sZWdhY3kuYworKysgYi9kcml2ZXJzL210ZC9uYW5kX2xlZ2FjeS9uYW5kX2xlZ2FjeS5jCkBAIC00NTcsNyArNDU3LDcgQEAKIHsKIAlpbnQgZmxvb3IsIGNoaXA7CiAJaW50IG51bWNoaXBzW05BTkRfTUFYX0ZMT09SU107Ci0JaW50IG1heGNoaXBzID0gTkFORF9NQVhfQ0hJUFM7CisJaW50IG1heGNoaXBzID0gQ09ORklHX1NZU19OQU5EX01BWF9DSElQUzsKIAlpbnQgcmV0ID0gMTsKIAogCW5hbmQtPm51bWNoaXBzID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9iYXNlLmMgYi9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfYmFzZS5jCmluZGV4IDliN2JmM2EuLmQ0ODI0MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9iYXNlLmMKKysrIGIvZHJpdmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX2Jhc2UuYwpAQCAtMzYsNiArMzYsMzUgQEAKIAlyZXR1cm4gcmV0OwogfQogCisvKioKKyAqIG9uZW5hbmRfb29iXzY0IC0gb29iIGluZm8gZm9yIGxhcmdlICgyS0IpIHBhZ2UKKyAqLworc3RhdGljIHN0cnVjdCBuYW5kX2VjY2xheW91dCBvbmVuYW5kX29vYl82NCA9IHsKKwkuZWNjYnl0ZXMJPSAyMCwKKwkuZWNjcG9zCQk9IHsKKwkJOCwgOSwgMTAsIDExLCAxMiwKKwkJMjQsIDI1LCAyNiwgMjcsIDI4LAorCQk0MCwgNDEsIDQyLCA0MywgNDQsCisJCTU2LCA1NywgNTgsIDU5LCA2MCwKKwkJfSwKKwkub29iZnJlZQk9IHsKKwkJezIsIDN9LCB7MTQsIDJ9LCB7MTgsIDN9LCB7MzAsIDJ9LAorCQl7MzQsIDN9LCB7NDYsIDJ9LCB7NTAsIDN9LCB7NjIsIDJ9CisJfQorfTsKKworLyoqCisgKiBvbmVuYW5kX29vYl8zMiAtIG9vYiBpbmZvIGZvciBtaWRkbGUgKDFLQikgcGFnZQorICovCitzdGF0aWMgc3RydWN0IG5hbmRfZWNjbGF5b3V0IG9uZW5hbmRfb29iXzMyID0geworCS5lY2NieXRlcwk9IDEwLAorCS5lY2Nwb3MJCT0geworCQk4LCA5LCAxMCwgMTEsIDEyLAorCQkyNCwgMjUsIDI2LCAyNywgMjgsCisJCX0sCisJLm9vYmZyZWUJPSB7IHsyLCAzfSwgezE0LCAyfSwgezE4LCAzfSwgezMwLCAyfSB9Cit9OworCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmZmNoYXJzW10gPSB7CiAJMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKIAkweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAkvKiAxNiAqLwpAQCAtNzgsMjAgKzEwNywxMSBAQAogICoKICAqIFNldHVwIFN0YXJ0IEFkZHJlc3MgMSBSZWdpc3RlciAoRjEwMGgpCiAgKi8KLXN0YXRpYyBpbnQgb25lbmFuZF9ibG9ja19hZGRyZXNzKGludCBkZXZpY2UsIGludCBibG9jaykKK3N0YXRpYyBpbnQgb25lbmFuZF9ibG9ja19hZGRyZXNzKHN0cnVjdCBvbmVuYW5kX2NoaXAgKnRoaXMsIGludCBibG9jaykKIHsKLQlpZiAoZGV2aWNlICYgT05FTkFORF9ERVZJQ0VfSVNfRERQKSB7Ci0JCS8qIERldmljZSBGbGFzaCBDb3JlIHNlbGVjdCwgTkFORCBGbGFzaCBCbG9jayBBZGRyZXNzICovCi0JCWludCBkZnMgPSAwLCBkZW5zaXR5LCBtYXNrOwotCi0JCWRlbnNpdHkgPSBkZXZpY2UgPj4gT05FTkFORF9ERVZJQ0VfREVOU0lUWV9TSElGVDsKLQkJbWFzayA9ICgxIDw8IChkZW5zaXR5ICsgNikpOwotCi0JCWlmIChibG9jayAmIG1hc2spCi0JCQlkZnMgPSAxOwotCi0JCXJldHVybiAoZGZzIDw8IE9ORU5BTkRfRERQX1NISUZUKSB8IChibG9jayAmIChtYXNrIC0gMSkpOwotCX0KKwkvKiBEZXZpY2UgRmxhc2ggQ29yZSBzZWxlY3QsIE5BTkQgRmxhc2ggQmxvY2sgQWRkcmVzcyAqLworCWlmIChibG9jayAmIHRoaXMtPmRlbnNpdHlfbWFzaykKKwkJcmV0dXJuIE9ORU5BTkRfRERQX0NISVAxIHwgKGJsb2NrIF4gdGhpcy0+ZGVuc2l0eV9tYXNrKTsKIAogCXJldHVybiBibG9jazsKIH0KQEAgLTEwNCwyMiArMTI0LDEzIEBACiAgKgogICogU2V0dXAgU3RhcnQgQWRkcmVzcyAyIFJlZ2lzdGVyIChGMTAxaCkgZm9yIEREUAogICovCi1zdGF0aWMgaW50IG9uZW5hbmRfYnVmZmVycmFtX2FkZHJlc3MoaW50IGRldmljZSwgaW50IGJsb2NrKQorc3RhdGljIGludCBvbmVuYW5kX2J1ZmZlcnJhbV9hZGRyZXNzKHN0cnVjdCBvbmVuYW5kX2NoaXAgKnRoaXMsIGludCBibG9jaykKIHsKLQlpZiAoZGV2aWNlICYgT05FTkFORF9ERVZJQ0VfSVNfRERQKSB7Ci0JCS8qIERldmljZSBCdWZmZXJSQU0gU2VsZWN0ICovCi0JCWludCBkYnMgPSAwLCBkZW5zaXR5LCBtYXNrOworCS8qIERldmljZSBCdWZmZXJSQU0gU2VsZWN0ICovCisJaWYgKGJsb2NrICYgdGhpcy0+ZGVuc2l0eV9tYXNrKQorCQlyZXR1cm4gT05FTkFORF9ERFBfQ0hJUDE7CiAKLQkJZGVuc2l0eSA9IGRldmljZSA+PiBPTkVOQU5EX0RFVklDRV9ERU5TSVRZX1NISUZUOwotCQltYXNrID0gKDEgPDwgKGRlbnNpdHkgKyA2KSk7Ci0KLQkJaWYgKGJsb2NrICYgbWFzaykKLQkJCWRicyA9IDE7Ci0KLQkJcmV0dXJuIChkYnMgPDwgT05FTkFORF9ERFBfU0hJRlQpOwotCX0KLQotCXJldHVybiAwOworCXJldHVybiBPTkVOQU5EX0REUF9DSElQMDsKIH0KIAogLyoqCkBAIC0xNjksNiArMTgwLDE4IEBACiB9CiAKIC8qKgorICogb25lbmFuZF9nZXRfZGVuc2l0eSAtIFtERUZBVUxUXSBHZXQgT25lTkFORCBkZW5zaXR5CisgKiBAcGFyYW0gZGV2X2lkICAgICAgICBPbmVOQU5EIGRldmljZSBJRAorICoKKyAqIEdldCBPbmVOQU5EIGRlbnNpdHkgZnJvbSBkZXZpY2UgSUQKKyAqLworc3RhdGljIGlubGluZSBpbnQgb25lbmFuZF9nZXRfZGVuc2l0eShpbnQgZGV2X2lkKQoreworCWludCBkZW5zaXR5ID0gZGV2X2lkID4+IE9ORU5BTkRfREVWSUNFX0RFTlNJVFlfU0hJRlQ7CisJcmV0dXJuIChkZW5zaXR5ICYgT05FTkFORF9ERVZJQ0VfREVOU0lUWV9NQVNLKTsKK30KKworLyoqCiAgKiBvbmVuYW5kX2NvbW1hbmQgLSBbREVGQVVMVF0gU2VuZCBjb21tYW5kIHRvIE9uZU5BTkQgZGV2aWNlCiAgKiBAcGFyYW0gbXRkCQlNVEQgZGV2aWNlIHN0cnVjdHVyZQogICogQHBhcmFtIGNtZAkJdGhlIGNvbW1hbmQgdG8gYmUgc2VudApAQCAtMTkyLDYgKzIxNSw3IEBACiAJY2FzZSBPTkVOQU5EX0NNRF9VTkxPQ0s6CiAJY2FzZSBPTkVOQU5EX0NNRF9MT0NLOgogCWNhc2UgT05FTkFORF9DTURfTE9DS19USUdIVDoKKwljYXNlIE9ORU5BTkRfQ01EX1VOTE9DS19BTEw6CiAJCWJsb2NrID0gLTE7CiAJCXBhZ2UgPSAtMTsKIAkJYnJlYWs7CkBAIC0yMTIsNyArMjM2LDcgQEAKIAkvKiBOT1RFOiBUaGUgc2V0dGluZyBvcmRlciBvZiB0aGUgcmVnaXN0ZXJzIGlzIHZlcnkgaW1wb3J0YW50ISAqLwogCWlmIChjbWQgPT0gT05FTkFORF9DTURfQlVGRkVSUkFNKSB7CiAJCS8qIFNlbGVjdCBEYXRhUkFNIGZvciBERFAgKi8KLQkJdmFsdWUgPSBvbmVuYW5kX2J1ZmZlcnJhbV9hZGRyZXNzKHRoaXMtPmRldmljZV9pZCwgYmxvY2spOworCQl2YWx1ZSA9IG9uZW5hbmRfYnVmZmVycmFtX2FkZHJlc3ModGhpcywgYmxvY2spOwogCQl0aGlzLT53cml0ZV93b3JkKHZhbHVlLAogCQkJCSB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1RBUlRfQUREUkVTUzIpOwogCkBAIC0yMjQsOSArMjQ4LDE0IEBACiAKIAlpZiAoYmxvY2sgIT0gLTEpIHsKIAkJLyogV3JpdGUgJ0RGUywgRkJBJyBvZiBGbGFzaCAqLwotCQl2YWx1ZSA9IG9uZW5hbmRfYmxvY2tfYWRkcmVzcyh0aGlzLT5kZXZpY2VfaWQsIGJsb2NrKTsKKwkJdmFsdWUgPSBvbmVuYW5kX2Jsb2NrX2FkZHJlc3ModGhpcywgYmxvY2spOwogCQl0aGlzLT53cml0ZV93b3JkKHZhbHVlLAogCQkJCSB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1RBUlRfQUREUkVTUzEpOworCisJCS8qIFdyaXRlICdERlMsIEZCQScgb2YgRmxhc2ggKi8KKwkJdmFsdWUgPSBvbmVuYW5kX2J1ZmZlcnJhbV9hZGRyZXNzKHRoaXMsIGJsb2NrKTsKKwkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwKKwkJCQkgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1NUQVJUX0FERFJFU1MyKTsKIAl9CiAKIAlpZiAocGFnZSAhPSAtMSkgewpAQCAtMjUyLDE1ICsyODEsNiBAQAogCQkvKiBXcml0ZSAnQlNBLCBCU0MnIG9mIERhdGFSQU0gKi8KIAkJdmFsdWUgPSBvbmVuYW5kX2J1ZmZlcl9hZGRyZXNzKGRhdGFyYW0sIHNlY3RvcnMsIGNvdW50KTsKIAkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1NUQVJUX0JVRkZFUik7Ci0KLQkJaWYgKHJlYWRjbWQpIHsKLQkJCS8qIFNlbGVjdCBEYXRhUkFNIGZvciBERFAgKi8KLQkJCXZhbHVlID0KLQkJCSAgICBvbmVuYW5kX2J1ZmZlcnJhbV9hZGRyZXNzKHRoaXMtPmRldmljZV9pZCwgYmxvY2spOwotCQkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwKLQkJCQkJIHRoaXMtPmJhc2UgKwotCQkJCQkgT05FTkFORF9SRUdfU1RBUlRfQUREUkVTUzIpOwotCQl9CiAJfQogCiAJLyogSW50ZXJydXB0IGNsZWFyICovCkBAIC0yOTYsMTQgKzMxNiwxMSBAQAogCWN0cmwgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX0NUUkxfU1RBVFVTKTsKIAogCWlmIChjdHJsICYgT05FTkFORF9DVFJMX0VSUk9SKSB7Ci0JCU1URERFQlVHIChNVERfREVCVUdfTEVWRUwwLAotCQkJICAib25lbmFuZF93YWl0OiBjb250cm9sbGVyIGVycm9yID0gMHglMDR4XG4iLCBjdHJsKTsKLQkJcmV0dXJuIC1FQUdBSU47Ci0JfQorCQlwcmludGsoIm9uZW5hbmRfd2FpdDogY29udHJvbGxlciBlcnJvciA9IDB4JTA0eFxuIiwgY3RybCk7CisJCWlmIChjdHJsICYgT05FTkFORF9DVFJMX0xPQ0spCisJCQlwcmludGsoIm9uZW5hbmRfd2FpdDogaXQncyBsb2NrZWQgZXJyb3IgPSAweCUwNHhcbiIsCisJCQkJY3RybCk7CiAKLQlpZiAoY3RybCAmIE9ORU5BTkRfQ1RSTF9MT0NLKSB7Ci0JCU1URERFQlVHIChNVERfREVCVUdfTEVWRUwwLAotCQkJICAib25lbmFuZF93YWl0OiBpdCdzIGxvY2tlZCBlcnJvciA9IDB4JTA0eFxuIiwgY3RybCk7CiAJCXJldHVybiAtRUlPOwogCX0KIApAQCAtMzUxLDcgKzM2OCw3IEBACiAgKgogICogUmVhZCB0aGUgQnVmZmVyUkFNIGFyZWEKICAqLwotc3RhdGljIGludCBvbmVuYW5kX3JlYWRfYnVmZmVycmFtKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgYXJlYSwKK3N0YXRpYyBpbnQgb25lbmFuZF9yZWFkX2J1ZmZlcnJhbShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGFkZHIsIGludCBhcmVhLAogCQkJCSAgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgb2Zmc2V0LAogCQkJCSAgc2l6ZV90IGNvdW50KQogewpAQCAtMzc2LDcgKzM5Myw3IEBACiAgKgogICogUmVhZCB0aGUgQnVmZmVyUkFNIGFyZWEgd2l0aCBTeW5jLiBCdXJzdCBNb2RlCiAgKi8KLXN0YXRpYyBpbnQgb25lbmFuZF9zeW5jX3JlYWRfYnVmZmVycmFtKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgYXJlYSwKK3N0YXRpYyBpbnQgb25lbmFuZF9zeW5jX3JlYWRfYnVmZmVycmFtKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgYWRkciwgaW50IGFyZWEsCiAJCQkJICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IG9mZnNldCwKIAkJCQkgICAgICAgc2l6ZV90IGNvdW50KQogewpAQCAtNDA1LDcgKzQyMiw3IEBACiAgKgogICogV3JpdGUgdGhlIEJ1ZmZlclJBTSBhcmVhCiAgKi8KLXN0YXRpYyBpbnQgb25lbmFuZF93cml0ZV9idWZmZXJyYW0oc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBhcmVhLAorc3RhdGljIGludCBvbmVuYW5kX3dyaXRlX2J1ZmZlcnJhbShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGFkZHIsIGludCBhcmVhLAogCQkJCSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IG9mZnNldCwKIAkJCQkgICBzaXplX3QgY291bnQpCiB7CkBAIC00MjEsNiArNDM4LDMwIEBACiB9CiAKIC8qKgorICogb25lbmFuZF9nZXRfMnhfYmxvY2twYWdlIC0gW0dFTkVSSUNdIEdldCBibG9ja3BhZ2UgYXQgMnggcHJvZ3JhbSBtb2RlCisgKiBAcGFyYW0gbXRkCQlNVEQgZGF0YSBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBhZGRyCQlhZGRyZXNzIHRvIGNoZWNrCisgKiBAcmV0dXJuCQlibG9ja3BhZ2UgYWRkcmVzcworICoKKyAqIEdldCBibG9ja3BhZ2UgYWRkcmVzcyBhdCAyeCBwcm9ncmFtIG1vZGUKKyAqLworc3RhdGljIGludCBvbmVuYW5kX2dldF8yeF9ibG9ja3BhZ2Uoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBhZGRyKQoreworCXN0cnVjdCBvbmVuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJaW50IGJsb2NrcGFnZSwgYmxvY2ssIHBhZ2U7CisKKwkvKiBDYWxjdWxhdGUgdGhlIGV2ZW4gYmxvY2sgbnVtYmVyICovCisJYmxvY2sgPSAoaW50KSAoYWRkciA+PiB0aGlzLT5lcmFzZV9zaGlmdCkgJiB+MTsKKwkvKiBJcyBpdCB0aGUgb2RkIHBsYW5lPyAqLworCWlmIChhZGRyICYgdGhpcy0+d3JpdGVzaXplKQorCQlibG9jaysrOworCXBhZ2UgPSAoaW50KSAoYWRkciA+PiAodGhpcy0+cGFnZV9zaGlmdCArIDEpKSAmIHRoaXMtPnBhZ2VfbWFzazsKKwlibG9ja3BhZ2UgPSAoYmxvY2sgPDwgNykgfCBwYWdlOworCisJcmV0dXJuIGJsb2NrcGFnZTsKK30KKworLyoqCiAgKiBvbmVuYW5kX2NoZWNrX2J1ZmZlcnJhbSAtIFtHRU5FUklDXSBDaGVjayBCdWZmZXJSQU0gaW5mb3JtYXRpb24KICAqIEBwYXJhbSBtdGQJCU1URCBkYXRhIHN0cnVjdHVyZQogICogQHBhcmFtIGFkZHIJCWFkZHJlc3MgdG8gY2hlY2sKQEAgLTQzMSwyMSArNDcyLDM5IEBACiBzdGF0aWMgaW50IG9uZW5hbmRfY2hlY2tfYnVmZmVycmFtKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgYWRkcikKIHsKIAlzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OwotCWludCBibG9jaywgcGFnZTsKLQlpbnQgaTsKKwlpbnQgYmxvY2twYWdlLCBmb3VuZCA9IDA7CisJdW5zaWduZWQgaW50IGk7CiAKLQlibG9jayA9IChpbnQpKGFkZHIgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQpOwotCXBhZ2UgPSAoaW50KShhZGRyID4+IHRoaXMtPnBhZ2Vfc2hpZnQpOwotCXBhZ2UgJj0gdGhpcy0+cGFnZV9tYXNrOworI2lmZGVmIENPTkZJR19TM0M2NFhYCisJcmV0dXJuIDA7CisjZW5kaWYKIAotCWkgPSBPTkVOQU5EX0NVUlJFTlRfQlVGRkVSUkFNKHRoaXMpOworCWlmIChPTkVOQU5EX0lTXzJQTEFORSh0aGlzKSkKKwkJYmxvY2twYWdlID0gb25lbmFuZF9nZXRfMnhfYmxvY2twYWdlKG10ZCwgYWRkcik7CisJZWxzZQorCQlibG9ja3BhZ2UgPSAoaW50KSAoYWRkciA+PiB0aGlzLT5wYWdlX3NoaWZ0KTsKIAogCS8qIElzIHRoZXJlIHZhbGlkIGRhdGE/ICovCi0JaWYgKHRoaXMtPmJ1ZmZlcnJhbVtpXS5ibG9jayA9PSBibG9jayAmJgotCSAgICB0aGlzLT5idWZmZXJyYW1baV0ucGFnZSA9PSBwYWdlICYmIHRoaXMtPmJ1ZmZlcnJhbVtpXS52YWxpZCkKLQkJcmV0dXJuIDE7CisJaSA9IE9ORU5BTkRfQ1VSUkVOVF9CVUZGRVJSQU0odGhpcyk7CisJaWYgKHRoaXMtPmJ1ZmZlcnJhbVtpXS5ibG9ja3BhZ2UgPT0gYmxvY2twYWdlKQorCQlmb3VuZCA9IDE7CisJZWxzZSB7CisJCS8qIENoZWNrIGFub3RoZXIgQnVmZmVyUkFNICovCisJCWkgPSBPTkVOQU5EX05FWFRfQlVGRkVSUkFNKHRoaXMpOworCQlpZiAodGhpcy0+YnVmZmVycmFtW2ldLmJsb2NrcGFnZSA9PSBibG9ja3BhZ2UpIHsKKwkJCU9ORU5BTkRfU0VUX05FWFRfQlVGRkVSUkFNKHRoaXMpOworCQkJZm91bmQgPSAxOworCQl9CisJfQogCi0JcmV0dXJuIDA7CisJaWYgKGZvdW5kICYmIE9ORU5BTkRfSVNfRERQKHRoaXMpKSB7CisJCS8qIFNlbGVjdCBEYXRhUkFNIGZvciBERFAgKi8KKwkJaW50IGJsb2NrID0gKGludCkgKGFkZHIgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQpOworCQlpbnQgdmFsdWUgPSBvbmVuYW5kX2J1ZmZlcnJhbV9hZGRyZXNzKHRoaXMsIGJsb2NrKTsKKwkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1NUQVJUX0FERFJFU1MyKTsKKwl9CisKKwlyZXR1cm4gZm91bmQ7CiB9CiAKIC8qKgpAQCAtNDYwLDI1ICs1MTksMjUgQEAKIAkJCQkgICAgaW50IHZhbGlkKQogewogCXN0cnVjdCBvbmVuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7Ci0JaW50IGJsb2NrLCBwYWdlOwotCWludCBpOworCWludCBibG9ja3BhZ2U7CisJdW5zaWduZWQgaW50IGk7CiAKLQlibG9jayA9IChpbnQpKGFkZHIgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQpOwotCXBhZ2UgPSAoaW50KShhZGRyID4+IHRoaXMtPnBhZ2Vfc2hpZnQpOwotCXBhZ2UgJj0gdGhpcy0+cGFnZV9tYXNrOworCWlmIChPTkVOQU5EX0lTXzJQTEFORSh0aGlzKSkKKwkJYmxvY2twYWdlID0gb25lbmFuZF9nZXRfMnhfYmxvY2twYWdlKG10ZCwgYWRkcik7CisJZWxzZQorCQlibG9ja3BhZ2UgPSAoaW50KShhZGRyID4+IHRoaXMtPnBhZ2Vfc2hpZnQpOwogCi0JLyogSW52YWxpZGF0ZSBCdWZmZXJSQU0gKi8KLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVRkZFUlJBTTsgaSsrKSB7Ci0JCWlmICh0aGlzLT5idWZmZXJyYW1baV0uYmxvY2sgPT0gYmxvY2sgJiYKLQkJICAgIHRoaXMtPmJ1ZmZlcnJhbVtpXS5wYWdlID09IHBhZ2UpCi0JCQl0aGlzLT5idWZmZXJyYW1baV0udmFsaWQgPSAwOwotCX0KKwkvKiBJbnZhbGlkYXRlIGFub3RoZXIgQnVmZmVyUkFNICovCisJaSA9IE9ORU5BTkRfTkVYVF9CVUZGRVJSQU0odGhpcyk7CisJaWYgKHRoaXMtPmJ1ZmZlcnJhbVtpXS5ibG9ja3BhZ2UgPT0gYmxvY2twYWdlKQorCQl0aGlzLT5idWZmZXJyYW1baV0uYmxvY2twYWdlID0gLTE7CiAKIAkvKiBVcGRhdGUgQnVmZmVyUkFNICovCiAJaSA9IE9ORU5BTkRfQ1VSUkVOVF9CVUZGRVJSQU0odGhpcyk7Ci0JdGhpcy0+YnVmZmVycmFtW2ldLmJsb2NrID0gYmxvY2s7Ci0JdGhpcy0+YnVmZmVycmFtW2ldLnBhZ2UgPSBwYWdlOwotCXRoaXMtPmJ1ZmZlcnJhbVtpXS52YWxpZCA9IHZhbGlkOworCWlmICh2YWxpZCkKKwkJdGhpcy0+YnVmZmVycmFtW2ldLmJsb2NrcGFnZSA9IGJsb2NrcGFnZTsKKwllbHNlCisJCXRoaXMtPmJ1ZmZlcnJhbVtpXS5ibG9ja3BhZ2UgPSAtMTsKIAogCXJldHVybiAwOwogfQpAQCAtNTAwLDEwICs1NTksMTAgQEAKIAogCS8qIEludmFsaWRhdGUgQnVmZmVyUkFNICovCiAJZm9yIChpID0gMDsgaSA8IE1BWF9CVUZGRVJSQU07IGkrKykgewotCQlsb2ZmX3QgYnVmX2FkZHIgPSB0aGlzLT5idWZmZXJyYW1baV0uYmxvY2sgPDwgdGhpcy0+ZXJhc2Vfc2hpZnQ7CisJCWxvZmZfdCBidWZfYWRkciA9IHRoaXMtPmJ1ZmZlcnJhbVtpXS5ibG9ja3BhZ2UgPDwgdGhpcy0+cGFnZV9zaGlmdDsKIAogCQlpZiAoYnVmX2FkZHIgPj0gYWRkciAmJiBidWZfYWRkciA8IGVuZF9hZGRyKQotCQkJdGhpcy0+YnVmZmVycmFtW2ldLnZhbGlkID0gMDsKKwkJCXRoaXMtPmJ1ZmZlcnJhbVtpXS5ibG9ja3BhZ2UgPSAtMTsKIAl9CiB9CiAKQEAgLTU1Niw3ICs2MTUsNyBAQAogCQkJcmVhZGVuZCArPSBmcmVlLT5vZmZzZXQgLSBsYXN0Z2FwOwogCQlsYXN0Z2FwID0gZnJlZS0+b2Zmc2V0ICsgZnJlZS0+bGVuZ3RoOwogCX0KLQl0aGlzLT5yZWFkX2J1ZmZlcnJhbShtdGQsIE9ORU5BTkRfU1BBUkVSQU0sIG9vYl9idWYsIDAsIG10ZC0+b29ic2l6ZSk7CisJdGhpcy0+cmVhZF9idWZmZXJyYW0obXRkLCAwLCBPTkVOQU5EX1NQQVJFUkFNLCBvb2JfYnVmLCAwLCBtdGQtPm9vYnNpemUpOwogCWZyZWUgPSB0aGlzLT5lY2NsYXlvdXQtPm9vYmZyZWU7CiAJZm9yIChpID0gMDsgaSA8IE1URF9NQVhfT09CRlJFRV9FTlRSSUVTICYmIGZyZWUtPmxlbmd0aDsgaSsrLCBmcmVlKyspIHsKIAkJaW50IGZyZWVfZW5kID0gZnJlZS0+b2Zmc2V0ICsgZnJlZS0+bGVuZ3RoOwpAQCAtNTk0LDkgKzY1Myw3IEBACiAJaW50IHJldCA9IDAsIGJvdW5kYXJ5ID0gMDsKIAlpbnQgd3JpdGVzaXplID0gdGhpcy0+d3JpdGVzaXplOwogCi0JTVREREVCVUcoTVREX0RFQlVHX0xFVkVMMywKLQkJIm9uZW5hbmRfcmVhZF9vcHNfbm9sb2NrOiBmcm9tID0gMHglMDh4LCBsZW4gPSAlaVxuIiwKLQkJKHVuc2lnbmVkIGludCkgZnJvbSwgKGludCkgbGVuKTsKKwlNVERERUJVRyhNVERfREVCVUdfTEVWRUwzLCAib25lbmFuZF9yZWFkX29wc19ub2xvY2s6IGZyb20gPSAweCUwOHgsIGxlbiA9ICVpXG4iLCAodW5zaWduZWQgaW50KSBmcm9tLCAoaW50KSBsZW4pOwogCiAJaWYgKG9wcy0+bW9kZSA9PSBNVERfT09CX0FVVE8pCiAJCW9vYnNpemUgPSB0aGlzLT5lY2NsYXlvdXQtPm9vYmF2YWlsOwpAQCAtNjIwLDYgKzY3Nyw3IEBACiAJLyogRG8gZmlyc3QgbG9hZCB0byBidWZmZXJSQU0gKi8KIAlpZiAocmVhZCA8IGxlbikgewogCQlpZiAoIW9uZW5hbmRfY2hlY2tfYnVmZmVycmFtKG10ZCwgZnJvbSkpIHsKKwkJCXRoaXMtPm1haW5fYnVmID0gYnVmOwogCQkJdGhpcy0+Y29tbWFuZChtdGQsIE9ORU5BTkRfQ01EX1JFQUQsIGZyb20sIHdyaXRlc2l6ZSk7CiAJCQlyZXQgPSB0aGlzLT53YWl0KG10ZCwgRkxfUkVBRElORyk7CiAJCQlvbmVuYW5kX3VwZGF0ZV9idWZmZXJyYW0obXRkLCBmcm9tLCAhcmV0KTsKQEAgLTYzNyw2ICs2OTUsNyBAQAogCQkvKiBJZiB0aGVyZSBpcyBtb3JlIHRvIGxvYWQgdGhlbiBzdGFydCBuZXh0IGxvYWQgKi8KIAkJZnJvbSArPSB0aGlzbGVuOwogCQlpZiAocmVhZCArIHRoaXNsZW4gPCBsZW4pIHsKKwkJCXRoaXMtPm1haW5fYnVmID0gYnVmICsgdGhpc2xlbjsKIAkJCXRoaXMtPmNvbW1hbmQobXRkLCBPTkVOQU5EX0NNRF9SRUFELCBmcm9tLCB3cml0ZXNpemUpOwogCQkJLyoKIAkJCSAqIENoaXAgYm91bmRhcnkgaGFuZGxpbmcgaW4gRERQCkBAIC02NTMsNyArNzEyLDcgQEAKIAkJfQogCiAJCS8qIFdoaWxlIGxvYWQgaXMgZ29pbmcsIHJlYWQgZnJvbSBsYXN0IGJ1ZmZlclJBTSAqLwotCQl0aGlzLT5yZWFkX2J1ZmZlcnJhbShtdGQsIE9ORU5BTkRfREFUQVJBTSwgYnVmLCBjb2x1bW4sIHRoaXNsZW4pOworCQl0aGlzLT5yZWFkX2J1ZmZlcnJhbShtdGQsIGZyb20gLSB0aGlzbGVuLCBPTkVOQU5EX0RBVEFSQU0sIGJ1ZiwgY29sdW1uLCB0aGlzbGVuKTsKIAogCQkvKiBSZWFkIG9vYiBhcmVhIGlmIG5lZWRlZCAqLwogCQlpZiAob29iYnVmKSB7CkBAIC02NjMsNyArNzIyLDcgQEAKIAkJCWlmIChvcHMtPm1vZGUgPT0gTVREX09PQl9BVVRPKQogCQkJCW9uZW5hbmRfdHJhbnNmZXJfYXV0b19vb2IobXRkLCBvb2JidWYsIG9vYmNvbHVtbiwgdGhpc29vYmxlbik7CiAJCQllbHNlCi0JCQkJdGhpcy0+cmVhZF9idWZmZXJyYW0obXRkLCBPTkVOQU5EX1NQQVJFUkFNLCBvb2JidWYsIG9vYmNvbHVtbiwgdGhpc29vYmxlbik7CisJCQkJdGhpcy0+cmVhZF9idWZmZXJyYW0obXRkLCAwLCBPTkVOQU5EX1NQQVJFUkFNLCBvb2JidWYsIG9vYmNvbHVtbiwgdGhpc29vYmxlbik7CiAJCQlvb2JyZWFkICs9IHRoaXNvb2JsZW47CiAJCQlvb2JidWYgKz0gdGhpc29vYmxlbjsKIAkJCW9vYmNvbHVtbiA9IDA7CkBAIC03MjYsOSArNzg1LDcgQEAKIAogCWZyb20gKz0gb3BzLT5vb2JvZmZzOwogCi0JTVREREVCVUcoTVREX0RFQlVHX0xFVkVMMywKLQkJIm9uZW5hbmRfcmVhZF9vb2Jfbm9sb2NrOiBmcm9tID0gMHglMDh4LCBsZW4gPSAlaVxuIiwKLQkJKHVuc2lnbmVkIGludCkgZnJvbSwgKGludCkgbGVuKTsKKwlNVERERUJVRyhNVERfREVCVUdfTEVWRUwzLCAib25lbmFuZF9yZWFkX29vYl9ub2xvY2s6IGZyb20gPSAweCUwOHgsIGxlbiA9ICVpXG4iLCAodW5zaWduZWQgaW50KSBmcm9tLCAoaW50KSBsZW4pOwogCiAJLyogSW5pdGlhbGl6ZSByZXR1cm4gbGVuZ3RoIHZhbHVlICovCiAJb3BzLT5vb2JyZXRsZW4gPSAwOwpAQCAtNzU5LDYgKzgxNiw3IEBACiAJCXRoaXNsZW4gPSBvb2JzaXplIC0gY29sdW1uOwogCQl0aGlzbGVuID0gbWluX3QoaW50LCB0aGlzbGVuLCBsZW4pOwogCisJCXRoaXMtPnNwYXJlX2J1ZiA9IGJ1ZjsKIAkJdGhpcy0+Y29tbWFuZChtdGQsIE9ORU5BTkRfQ01EX1JFQURPT0IsIGZyb20sIG10ZC0+b29ic2l6ZSk7CiAKIAkJb25lbmFuZF91cGRhdGVfYnVmZmVycmFtKG10ZCwgZnJvbSwgMCk7CkBAIC03NzIsNyArODMwLDcgQEAKIAkJaWYgKG1vZGUgPT0gTVREX09PQl9BVVRPKQogCQkJb25lbmFuZF90cmFuc2Zlcl9hdXRvX29vYihtdGQsIGJ1ZiwgY29sdW1uLCB0aGlzbGVuKTsKIAkJZWxzZQotCQkJdGhpcy0+cmVhZF9idWZmZXJyYW0obXRkLCBPTkVOQU5EX1NQQVJFUkFNLCBidWYsIGNvbHVtbiwgdGhpc2xlbik7CisJCQl0aGlzLT5yZWFkX2J1ZmZlcnJhbShtdGQsIDAsIE9ORU5BTkRfU1BBUkVSQU0sIGJ1ZiwgY29sdW1uLCB0aGlzbGVuKTsKIAogCQlyZWFkICs9IHRoaXNsZW47CiAKQEAgLTg4NiwxMiArOTQ0LDYgQEAKIAlpbnRlcnJ1cHQgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX0lOVEVSUlVQVCk7CiAJY3RybCA9IHRoaXMtPnJlYWRfd29yZCh0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfQ1RSTF9TVEFUVVMpOwogCi0JLyogSW5pdGlhbCBiYWQgYmxvY2sgY2FzZTogMHgyNDAwIG9yIDB4MDQwMCAqLwotCWlmIChjdHJsICYgT05FTkFORF9DVFJMX0VSUk9SKSB7Ci0JCXByaW50ayhLRVJOX0RFQlVHICJvbmVuYW5kX2JidF93YWl0OiBjb250cm9sbGVyIGVycm9yID0gMHglMDR4XG4iLCBjdHJsKTsKLQkJcmV0dXJuIE9ORU5BTkRfQkJUX1JFQURfRVJST1I7Ci0JfQotCiAJaWYgKGludGVycnVwdCAmIE9ORU5BTkRfSU5UX1JFQUQpIHsKIAkJaW50IGVjYyA9IHRoaXMtPnJlYWRfd29yZCh0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfRUNDX1NUQVRVUyk7CiAJCWlmIChlY2MgJiBPTkVOQU5EX0VDQ18yQklUX0FMTCkKQEAgLTkwMiw2ICs5NTQsMTIgQEAKIAkJcmV0dXJuIE9ORU5BTkRfQkJUX1JFQURfRkFUQUxfRVJST1I7CiAJfQogCisJLyogSW5pdGlhbCBiYWQgYmxvY2sgY2FzZTogMHgyNDAwIG9yIDB4MDQwMCAqLworCWlmIChjdHJsICYgT05FTkFORF9DVFJMX0VSUk9SKSB7CisJCXByaW50ayhLRVJOX0RFQlVHICJvbmVuYW5kX2JidF93YWl0OiBjb250cm9sbGVyIGVycm9yID0gMHglMDR4XG4iLCBjdHJsKTsKKwkJcmV0dXJuIE9ORU5BTkRfQkJUX1JFQURfRVJST1I7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTkyMiw5ICs5ODAsNyBAQAogCXNpemVfdCBsZW4gPSBvcHMtPm9vYmxlbjsKIAl1X2NoYXIgKmJ1ZiA9IG9wcy0+b29iYnVmOwogCi0JTVREREVCVUcoTVREX0RFQlVHX0xFVkVMMywKLQkJIm9uZW5hbmRfYmJ0X3JlYWRfb29iOiBmcm9tID0gMHglMDh4LCBsZW4gPSAlemlcbiIsCi0JCSh1bnNpZ25lZCBpbnQpIGZyb20sIGxlbik7CisJTVREREVCVUcoTVREX0RFQlVHX0xFVkVMMywgIm9uZW5hbmRfYmJ0X3JlYWRfb29iOiBmcm9tID0gMHglMDh4LCBsZW4gPSAlemlcbiIsICh1bnNpZ25lZCBpbnQpIGZyb20sIGxlbik7CiAKIAkvKiBJbml0aWFsaXplIHJldHVybiB2YWx1ZSAqLwogCW9wcy0+b29icmV0bGVuID0gMDsKQEAgLTk0NSwxNSArMTAwMSwxNiBAQAogCQl0aGlzbGVuID0gbXRkLT5vb2JzaXplIC0gY29sdW1uOwogCQl0aGlzbGVuID0gbWluX3QoaW50LCB0aGlzbGVuLCBsZW4pOwogCisJCXRoaXMtPnNwYXJlX2J1ZiA9IGJ1ZjsKIAkJdGhpcy0+Y29tbWFuZChtdGQsIE9ORU5BTkRfQ01EX1JFQURPT0IsIGZyb20sIG10ZC0+b29ic2l6ZSk7CiAKIAkJb25lbmFuZF91cGRhdGVfYnVmZmVycmFtKG10ZCwgZnJvbSwgMCk7CiAKLQkJcmV0ID0gb25lbmFuZF9iYnRfd2FpdChtdGQsIEZMX1JFQURJTkcpOworCQlyZXQgPSB0aGlzLT5iYnRfd2FpdChtdGQsIEZMX1JFQURJTkcpOwogCQlpZiAocmV0KQogCQkJYnJlYWs7CiAKLQkJdGhpcy0+cmVhZF9idWZmZXJyYW0obXRkLCBPTkVOQU5EX1NQQVJFUkFNLCBidWYsIGNvbHVtbiwgdGhpc2xlbik7CisJCXRoaXMtPnJlYWRfc3BhcmVyYW0obXRkLCAwLCBPTkVOQU5EX1NQQVJFUkFNLCBidWYsIGNvbHVtbiwgdGhpc2xlbik7CiAJCXJlYWQgKz0gdGhpc2xlbjsKIAkJaWYgKHJlYWQgPT0gbGVuKQogCQkJYnJlYWs7CkBAIC05OTUsNyArMTA1Miw3IEBACiAJaWYgKHN0YXR1cykKIAkJcmV0dXJuIHN0YXR1czsKIAotCXRoaXMtPnJlYWRfYnVmZmVycmFtKG10ZCwgT05FTkFORF9TUEFSRVJBTSwgb29iX2J1ZiwgMCwgbXRkLT5vb2JzaXplKTsKKwl0aGlzLT5yZWFkX2J1ZmZlcnJhbShtdGQsIDAsIE9ORU5BTkRfU1BBUkVSQU0sIG9vYl9idWYsIDAsIG10ZC0+b29ic2l6ZSk7CiAJZm9yIChpID0gMDsgaSA8IG10ZC0+b29ic2l6ZTsgaSsrKQogCQlpZiAoYnVmW2ldICE9IDB4RkYgJiYgYnVmW2ldICE9IG9vYl9idWZbaV0pCiAJCQlyZXR1cm4gLUVCQURNU0c7CkBAIC0xMDUxLDcgKzExMDgsNyBAQAogI2RlZmluZSBvbmVuYW5kX3ZlcmlmeV9vb2IoLi4uKSAgICAgICAgICgwKQogI2VuZGlmCiAKLSNkZWZpbmUgTk9UQUxJR05FRCh4KQkoKHggJiAobXRkLT53cml0ZXNpemUgLSAxKSkgIT0gMCkKKyNkZWZpbmUgTk9UQUxJR05FRCh4KQkoKHggJiAodGhpcy0+c3VicGFnZXNpemUgLSAxKSkgIT0gMCkKIAogLyoqCiAgKiBvbmVuYW5kX2ZpbGxfYXV0b19vb2IgLSBbSW50ZXJuYWxdIG9vYiBhdXRvLXBsYWNlbWVudCB0cmFuc2ZlcgpAQCAtMTExNSw5ICsxMTcyLDcgQEAKIAl1X2NoYXIgKm9vYmJ1ZjsKIAlpbnQgcmV0ID0gMDsKIAotCU1URERFQlVHKE1URF9ERUJVR19MRVZFTDMsCi0JCSJvbmVuYW5kX3dyaXRlX29wc19ub2xvY2s6IHRvID0gMHglMDh4LCBsZW4gPSAlaVxuIiwKLQkJKHVuc2lnbmVkIGludCkgdG8sIChpbnQpIGxlbik7CisJTVREREVCVUcoTVREX0RFQlVHX0xFVkVMMywgIm9uZW5hbmRfd3JpdGVfb3BzX25vbG9jazogdG8gPSAweCUwOHgsIGxlbiA9ICVpXG4iLCAodW5zaWduZWQgaW50KSB0bywgKGludCkgbGVuKTsKIAogCS8qIEluaXRpYWxpemUgcmV0bGVuLCBpbiBjYXNlIG9mIGVhcmx5IGV4aXQgKi8KIAlvcHMtPnJldGxlbiA9IDA7CkBAIC0xMTYxLDcgKzEyMTYsNyBAQAogCQkJd2J1ZiA9IHRoaXMtPnBhZ2VfYnVmOwogCQl9CiAKLQkJdGhpcy0+d3JpdGVfYnVmZmVycmFtKG10ZCwgT05FTkFORF9EQVRBUkFNLCB3YnVmLCAwLCBtdGQtPndyaXRlc2l6ZSk7CisJCXRoaXMtPndyaXRlX2J1ZmZlcnJhbShtdGQsIHRvLCBPTkVOQU5EX0RBVEFSQU0sIHdidWYsIDAsIG10ZC0+d3JpdGVzaXplKTsKIAogCQlpZiAob29iKSB7CiAJCQlvb2JidWYgPSB0aGlzLT5vb2JfYnVmOwpAQCAtMTE4MCw3ICsxMjM1LDcgQEAKIAkJfSBlbHNlCiAJCQlvb2JidWYgPSAodV9jaGFyICopIGZmY2hhcnM7CiAKLQkJdGhpcy0+d3JpdGVfYnVmZmVycmFtKG10ZCwgT05FTkFORF9TUEFSRVJBTSwgb29iYnVmLCAwLCBtdGQtPm9vYnNpemUpOworCQl0aGlzLT53cml0ZV9idWZmZXJyYW0obXRkLCAwLCBPTkVOQU5EX1NQQVJFUkFNLCBvb2JidWYsIDAsIG10ZC0+b29ic2l6ZSk7CiAKIAkJdGhpcy0+Y29tbWFuZChtdGQsIE9ORU5BTkRfQ01EX1BST0csIHRvLCBtdGQtPndyaXRlc2l6ZSk7CiAKQEAgLTEyNDQsOSArMTI5OSw3IEBACiAKIAl0byArPSBvcHMtPm9vYm9mZnM7CiAKLQlNVERERUJVRyhNVERfREVCVUdfTEVWRUwzLAotCQkib25lbmFuZF93cml0ZV9vb2Jfbm9sb2NrOiB0byA9IDB4JTA4eCwgbGVuID0gJWlcbiIsCi0JCSh1bnNpZ25lZCBpbnQpIHRvLCAoaW50KSBsZW4pOworCU1URERFQlVHKE1URF9ERUJVR19MRVZFTDMsICJvbmVuYW5kX3dyaXRlX29vYl9ub2xvY2s6IHRvID0gMHglMDh4LCBsZW4gPSAlaVxuIiwgKHVuc2lnbmVkIGludCkgdG8sIChpbnQpIGxlbik7CiAKIAkvKiBJbml0aWFsaXplIHJldGxlbiwgaW4gY2FzZSBvZiBlYXJseSBleGl0ICovCiAJb3BzLT5vb2JyZXRsZW4gPSAwOwpAQCAtMTI5Myw3ICsxMzQ2LDcgQEAKIAkJCW9uZW5hbmRfZmlsbF9hdXRvX29vYihtdGQsIG9vYmJ1ZiwgYnVmLCBjb2x1bW4sIHRoaXNsZW4pOwogCQllbHNlCiAJCQltZW1jcHkob29iYnVmICsgY29sdW1uLCBidWYsIHRoaXNsZW4pOwotCQl0aGlzLT53cml0ZV9idWZmZXJyYW0obXRkLCBPTkVOQU5EX1NQQVJFUkFNLCBvb2JidWYsIDAsIG10ZC0+b29ic2l6ZSk7CisJCXRoaXMtPndyaXRlX2J1ZmZlcnJhbShtdGQsIDAsIE9ORU5BTkRfU1BBUkVSQU0sIG9vYmJ1ZiwgMCwgbXRkLT5vb2JzaXplKTsKIAogCQl0aGlzLT5jb21tYW5kKG10ZCwgT05FTkFORF9DTURfUFJPR09PQiwgdG8sIG10ZC0+b29ic2l6ZSk7CiAKQEAgLTE0NjYsNyArMTUxOSwxNCBAQAogCiAJd2hpbGUgKGxlbikgewogCi0JCS8qIFRPRE8gQ2hlY2sgYmFkYmxvY2sgKi8KKwkJLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIGJhZCBibG9jaywgd2UgZG8gbm90IGVyYXNlIGJhZCBibG9ja3MgKi8KKwkJaWYgKGluc3RyLT5wcml2ID09IDAgJiYgb25lbmFuZF9ibG9ja19pc2JhZF9ub2xvY2sobXRkLCBhZGRyLCAwKSkgeworCQkJcHJpbnRrKEtFUk5fV0FSTklORyAib25lbmFuZF9lcmFzZTogYXR0ZW1wdCB0byBlcmFzZSIKKwkJCQkiIGEgYmFkIGJsb2NrIGF0IGFkZHIgMHglMDh4XG4iLAorCQkJCSh1bnNpZ25lZCBpbnQpIGFkZHIpOworCQkJaW5zdHItPnN0YXRlID0gTVREX0VSQVNFX0ZBSUxFRDsKKwkJCWdvdG8gZXJhc2VfZXhpdDsKKwkJfQogCiAJCXRoaXMtPmNvbW1hbmQobXRkLCBPTkVOQU5EX0NNRF9FUkFTRSwgYWRkciwgYmxvY2tfc2l6ZSk7CiAKQEAgLTE0ODIsOCArMTU0MiwxNiBAQAogCQkJCU1URERFQlVHIChNVERfREVCVUdfTEVWRUwwLCAib25lbmFuZF9lcmFzZTogIgogCQkJCQkgICJGYWlsZWQgZXJhc2UsIGJsb2NrICVkXG4iLAogCQkJCQkgICh1bnNpZ25lZCkoYWRkciA+PiB0aGlzLT5lcmFzZV9zaGlmdCkpOworCQkJaWYgKHJldCA9PSAtRVBFUk0pCisJCQkJcHJpbnRrKCJvbmVuYW5kX2VyYXNlOiAiCisJCQkJCSAgIkRldmljZSBpcyB3cml0ZSBwcm90ZWN0ZWQhISFcbiIpOworCQkJZWxzZQorCQkJCXByaW50aygib25lbmFuZF9lcmFzZTogIgorCQkJCQkgICJGYWlsZWQgZXJhc2UsIGJsb2NrICVkXG4iLAorCQkJCQkgICh1bnNpZ25lZCkoYWRkciA+PiB0aGlzLT5lcmFzZV9zaGlmdCkpOwogCQkJaW5zdHItPnN0YXRlID0gTVREX0VSQVNFX0ZBSUxFRDsKIAkJCWluc3RyLT5mYWlsX2FkZHIgPSBhZGRyOworCiAJCQlnb3RvIGVyYXNlX2V4aXQ7CiAJCX0KIApAQCAtMTQ5Myw3ICsxNTYxLDcgQEAKIAogCWluc3RyLT5zdGF0ZSA9IE1URF9FUkFTRV9ET05FOwogCi0gICAgICBlcmFzZV9leGl0OgorZXJhc2VfZXhpdDoKIAogCXJldCA9IGluc3RyLT5zdGF0ZSA9PSBNVERfRVJBU0VfRE9ORSA/IDAgOiAtRUlPOwogCS8qIERvIGNhbGwgYmFjayBmdW5jdGlvbiAqLwpAQCAtMTU0NSw2ICsxNjEzLDM3IEBACiB9CiAKIC8qKgorICogb25lbmFuZF9kZWZhdWx0X2Jsb2NrX21hcmtiYWQgLSBbREVGQVVMVF0gbWFyayBhIGJsb2NrIGJhZAorICogQHBhcmFtIG10ZCAgICAgICAgICAgTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBvZnMgICAgICAgICAgIG9mZnNldCBmcm9tIGRldmljZSBzdGFydAorICoKKyAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIGJ5CisgKiBhIGhhcmR3YXJlIHNwZWNpZmljIGRyaXZlci4KKyAqLworc3RhdGljIGludCBvbmVuYW5kX2RlZmF1bHRfYmxvY2tfbWFya2JhZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mcykKK3sKKwlzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBiYm1faW5mbyAqYmJtID0gdGhpcy0+YmJtOworCXVfY2hhciBidWZbMl0gPSB7MCwgMH07CisJc3RydWN0IG10ZF9vb2Jfb3BzIG9wcyA9IHsKKwkJLm1vZGUgPSBNVERfT09CX1BMQUNFLAorCQkub29ibGVuID0gMiwKKwkJLm9vYmJ1ZiA9IGJ1ZiwKKwkJLm9vYm9mZnMgPSAwLAorCX07CisJaW50IGJsb2NrOworCisJLyogR2V0IGJsb2NrIG51bWJlciAqLworCWJsb2NrID0gKChpbnQpIG9mcykgPj4gYmJtLT5iYnRfZXJhc2Vfc2hpZnQ7CisJaWYgKGJibS0+YmJ0KQorCQliYm0tPmJidFtibG9jayA+PiAyXSB8PSAweDAxIDw8ICgoYmxvY2sgJiAweDAzKSA8PCAxKTsKKworCS8qIFdlIHdyaXRlIHR3byBieXRlcywgc28gd2UgZG9udCBoYXZlIHRvIG1lc3Mgd2l0aCAxNiBiaXQgYWNjZXNzICovCisJb2ZzICs9IG10ZC0+b29ic2l6ZSArIChiYm0tPmJhZGJsb2NrcG9zICYgfjB4MDEpOworCXJldHVybiBvbmVuYW5kX3dyaXRlX29vYl9ub2xvY2sobXRkLCBvZnMsICZvcHMpOworfQorCisvKioKICAqIG9uZW5hbmRfYmxvY2tfbWFya2JhZCAtIFtNVEQgSW50ZXJmYWNlXSBNYXJrIHRoZSBibG9jayBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGFzIGJhZAogICogQHBhcmFtIG10ZAkJTVREIGRldmljZSBzdHJ1Y3R1cmUKICAqIEBwYXJhbSBvZnMJCW9mZnNldCByZWxhdGl2ZSB0byBtdGQgc3RhcnQKQEAgLTE1NjksMjMgKzE2NjgsMzAgQEAKIH0KIAogLyoqCi0gKiBvbmVuYW5kX3VubG9jayAtIFtNVEQgSW50ZXJmYWNlXSBVbmxvY2sgYmxvY2socykKLSAqIEBwYXJhbSBtdGQJCU1URCBkZXZpY2Ugc3RydWN0dXJlCi0gKiBAcGFyYW0gb2ZzCQlvZmZzZXQgcmVsYXRpdmUgdG8gbXRkIHN0YXJ0Ci0gKiBAcGFyYW0gbGVuCQludW1iZXIgb2YgYnl0ZXMgdG8gdW5sb2NrCisgKiBvbmVuYW5kX2RvX2xvY2tfY21kIC0gW09uZU5BTkQgSW50ZXJmYWNlXSBMb2NrIG9yIHVubG9jayBibG9jayhzKQorICogQHBhcmFtIG10ZCAgICAgICAgICAgTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBvZnMgICAgICAgICAgIG9mZnNldCByZWxhdGl2ZSB0byBtdGQgc3RhcnQKKyAqIEBwYXJhbSBsZW4gICAgICAgICAgIG51bWJlciBvZiBieXRlcyB0byBsb2NrIG9yIHVubG9jaworICogQHBhcmFtIGNtZCAgICAgICAgICAgbG9jayBvciB1bmxvY2sgY29tbWFuZAogICoKLSAqIFVubG9jayBvbmUgb3IgbW9yZSBibG9ja3MKKyAqIExvY2sgb3IgdW5sb2NrIG9uZSBvciBtb3JlIGJsb2NrcwogICovCi1pbnQgb25lbmFuZF91bmxvY2soc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMsIHNpemVfdCBsZW4pCitzdGF0aWMgaW50IG9uZW5hbmRfZG9fbG9ja19jbWQoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMsIHNpemVfdCBsZW4sIGludCBjbWQpCiB7CiAJc3RydWN0IG9uZW5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKIAlpbnQgc3RhcnQsIGVuZCwgYmxvY2ssIHZhbHVlLCBzdGF0dXM7CisJaW50IHdwX3N0YXR1c19tYXNrOwogCiAJc3RhcnQgPSBvZnMgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQ7CiAJZW5kID0gbGVuID4+IHRoaXMtPmVyYXNlX3NoaWZ0OwogCisJaWYgKGNtZCA9PSBPTkVOQU5EX0NNRF9MT0NLKQorCQl3cF9zdGF0dXNfbWFzayA9IE9ORU5BTkRfV1BfTFM7CisJZWxzZQorCQl3cF9zdGF0dXNfbWFzayA9IE9ORU5BTkRfV1BfVVM7CisKIAkvKiBDb250aW51b3VzIGxvY2sgc2NoZW1lICovCi0JaWYgKHRoaXMtPm9wdGlvbnMgJiBPTkVOQU5EX0NPTlRfTE9DSykgeworCWlmICh0aGlzLT5vcHRpb25zICYgT05FTkFORF9IQVNfQ09OVF9MT0NLKSB7CiAJCS8qIFNldCBzdGFydCBibG9jayBhZGRyZXNzICovCiAJCXRoaXMtPndyaXRlX3dvcmQoc3RhcnQsCiAJCQkJIHRoaXMtPmJhc2UgKyBPTkVOQU5EX1JFR19TVEFSVF9CTE9DS19BRERSRVNTKTsKQEAgLTE1OTMsNyArMTY5OSw3IEBACiAJCXRoaXMtPndyaXRlX3dvcmQoZW5kIC0gMSwKIAkJCQkgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX0VORF9CTE9DS19BRERSRVNTKTsKIAkJLyogV3JpdGUgdW5sb2NrIGNvbW1hbmQgKi8KLQkJdGhpcy0+Y29tbWFuZChtdGQsIE9ORU5BTkRfQ01EX1VOTE9DSywgMCwgMCk7CisJCXRoaXMtPmNvbW1hbmQobXRkLCBjbWQsIDAsIDApOwogCiAJCS8qIFRoZXJlJ3Mgbm8gcmV0dXJuIHZhbHVlICovCiAJCXRoaXMtPndhaXQobXRkLCBGTF9VTkxPQ0tJTkcpOwpAQCAtMTYxMiw3ICsxNzE4LDE0IEBACiAJfQogCiAJLyogQmxvY2sgbG9jayBzY2hlbWUgKi8KLQlmb3IgKGJsb2NrID0gc3RhcnQ7IGJsb2NrIDwgZW5kOyBibG9jaysrKSB7CisJZm9yIChibG9jayA9IHN0YXJ0OyBibG9jayA8IHN0YXJ0ICsgZW5kOyBibG9jaysrKSB7CisJCS8qIFNldCBibG9jayBhZGRyZXNzICovCisJCXZhbHVlID0gb25lbmFuZF9ibG9ja19hZGRyZXNzKHRoaXMsIGJsb2NrKTsKKwkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1NUQVJUX0FERFJFU1MxKTsKKwkJLyogU2VsZWN0IERhdGFSQU0gZm9yIEREUCAqLworCQl2YWx1ZSA9IG9uZW5hbmRfYnVmZmVycmFtX2FkZHJlc3ModGhpcywgYmxvY2spOworCQl0aGlzLT53cml0ZV93b3JkKHZhbHVlLCB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1RBUlRfQUREUkVTUzIpOworCiAJCS8qIFNldCBzdGFydCBibG9jayBhZGRyZXNzICovCiAJCXRoaXMtPndyaXRlX3dvcmQoYmxvY2ssCiAJCQkJIHRoaXMtPmJhc2UgKyBPTkVOQU5EX1JFR19TVEFSVF9CTE9DS19BRERSRVNTKTsKQEAgLTE2MjcsMTEgKzE3NDAsNiBAQAogCQkgICAgICAgJiBPTkVOQU5EX0NUUkxfT05HTykKIAkJCWNvbnRpbnVlOwogCi0JCS8qIFNldCBibG9jayBhZGRyZXNzIGZvciByZWFkIGJsb2NrIHN0YXR1cyAqLwotCQl2YWx1ZSA9IG9uZW5hbmRfYmxvY2tfYWRkcmVzcyh0aGlzLT5kZXZpY2VfaWQsIGJsb2NrKTsKLQkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwKLQkJCQkgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1NUQVJUX0FERFJFU1MxKTsKLQogCQkvKiBDaGVjayBsb2NrIHN0YXR1cyAqLwogCQlzdGF0dXMgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1dQX1NUQVRVUyk7CiAJCWlmICghKHN0YXR1cyAmIE9ORU5BTkRfV1BfVVMpKQpAQCAtMTY0MiwzMiArMTc1MCwxOTkgQEAKIAlyZXR1cm4gMDsKIH0KIAorI2lmZGVmIE9ORU5BTkRfTElOVVgKKy8qKgorICogb25lbmFuZF9sb2NrIC0gW01URCBJbnRlcmZhY2VdIExvY2sgYmxvY2socykKKyAqIEBwYXJhbSBtdGQgICAgICAgICAgIE1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAcGFyYW0gb2ZzICAgICAgICAgICBvZmZzZXQgcmVsYXRpdmUgdG8gbXRkIHN0YXJ0CisgKiBAcGFyYW0gbGVuICAgICAgICAgICBudW1iZXIgb2YgYnl0ZXMgdG8gdW5sb2NrCisgKgorICogTG9jayBvbmUgb3IgbW9yZSBibG9ja3MKKyAqLworc3RhdGljIGludCBvbmVuYW5kX2xvY2soc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMsIHNpemVfdCBsZW4pCit7CisJaW50IHJldDsKKworCW9uZW5hbmRfZ2V0X2RldmljZShtdGQsIEZMX0xPQ0tJTkcpOworCXJldCA9IG9uZW5hbmRfZG9fbG9ja19jbWQobXRkLCBvZnMsIGxlbiwgT05FTkFORF9DTURfTE9DSyk7CisJb25lbmFuZF9yZWxlYXNlX2RldmljZShtdGQpOworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogb25lbmFuZF91bmxvY2sgLSBbTVREIEludGVyZmFjZV0gVW5sb2NrIGJsb2NrKHMpCisgKiBAcGFyYW0gbXRkICAgICAgICAgICBNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQHBhcmFtIG9mcyAgICAgICAgICAgb2Zmc2V0IHJlbGF0aXZlIHRvIG10ZCBzdGFydAorICogQHBhcmFtIGxlbiAgICAgICAgICAgbnVtYmVyIG9mIGJ5dGVzIHRvIHVubG9jaworICoKKyAqIFVubG9jayBvbmUgb3IgbW9yZSBibG9ja3MKKyAqLworc3RhdGljIGludCBvbmVuYW5kX3VubG9jayhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mcywgc2l6ZV90IGxlbikKK3sKKwlpbnQgcmV0OworCisJb25lbmFuZF9nZXRfZGV2aWNlKG10ZCwgRkxfTE9DS0lORyk7CisJcmV0ID0gb25lbmFuZF9kb19sb2NrX2NtZChtdGQsIG9mcywgbGVuLCBPTkVOQU5EX0NNRF9VTkxPQ0spOworCW9uZW5hbmRfcmVsZWFzZV9kZXZpY2UobXRkKTsKKwlyZXR1cm4gcmV0OworfQorI2VuZGlmCisKKy8qKgorICogb25lbmFuZF9jaGVja19sb2NrX3N0YXR1cyAtIFtPbmVOQU5EIEludGVyZmFjZV0gQ2hlY2sgbG9jayBzdGF0dXMKKyAqIEBwYXJhbSB0aGlzICAgICAgICAgIG9uZW5hbmQgY2hpcCBkYXRhIHN0cnVjdHVyZQorICoKKyAqIENoZWNrIGxvY2sgc3RhdHVzCisgKi8KK3N0YXRpYyBpbnQgb25lbmFuZF9jaGVja19sb2NrX3N0YXR1cyhzdHJ1Y3Qgb25lbmFuZF9jaGlwICp0aGlzKQoreworCXVuc2lnbmVkIGludCB2YWx1ZSwgYmxvY2ssIHN0YXR1czsKKwl1bnNpZ25lZCBpbnQgZW5kOworCisJZW5kID0gdGhpcy0+Y2hpcHNpemUgPj4gdGhpcy0+ZXJhc2Vfc2hpZnQ7CisJZm9yIChibG9jayA9IDA7IGJsb2NrIDwgZW5kOyBibG9jaysrKSB7CisJCS8qIFNldCBibG9jayBhZGRyZXNzICovCisJCXZhbHVlID0gb25lbmFuZF9ibG9ja19hZGRyZXNzKHRoaXMsIGJsb2NrKTsKKwkJdGhpcy0+d3JpdGVfd29yZCh2YWx1ZSwgdGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1NUQVJUX0FERFJFU1MxKTsKKwkJLyogU2VsZWN0IERhdGFSQU0gZm9yIEREUCAqLworCQl2YWx1ZSA9IG9uZW5hbmRfYnVmZmVycmFtX2FkZHJlc3ModGhpcywgYmxvY2spOworCQl0aGlzLT53cml0ZV93b3JkKHZhbHVlLCB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1RBUlRfQUREUkVTUzIpOworCQkvKiBTZXQgc3RhcnQgYmxvY2sgYWRkcmVzcyAqLworCQl0aGlzLT53cml0ZV93b3JkKGJsb2NrLCB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1RBUlRfQkxPQ0tfQUREUkVTUyk7CisKKwkJLyogQ2hlY2sgbG9jayBzdGF0dXMgKi8KKwkJc3RhdHVzID0gdGhpcy0+cmVhZF93b3JkKHRoaXMtPmJhc2UgKyBPTkVOQU5EX1JFR19XUF9TVEFUVVMpOworCQlpZiAoIShzdGF0dXMgJiBPTkVOQU5EX1dQX1VTKSkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJibG9jayA9ICVkLCB3cCBzdGF0dXMgPSAweCV4XG4iLCBibG9jaywgc3RhdHVzKTsKKwkJCXJldHVybiAwOworCQl9CisJfQorCisJcmV0dXJuIDE7Cit9CisKKy8qKgorICogb25lbmFuZF91bmxvY2tfYWxsIC0gW09uZU5BTkQgSW50ZXJmYWNlXSB1bmxvY2sgYWxsIGJsb2NrcworICogQHBhcmFtIG10ZCAgICAgICAgICAgTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqCisgKiBVbmxvY2sgYWxsIGJsb2NrcworICovCitzdGF0aWMgdm9pZCBvbmVuYW5kX3VubG9ja19hbGwoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJc3RydWN0IG9uZW5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlsb2ZmX3Qgb2ZzID0gMDsKKwlzaXplX3QgbGVuID0gdGhpcy0+Y2hpcHNpemU7CisKKwlpZiAodGhpcy0+b3B0aW9ucyAmIE9ORU5BTkRfSEFTX1VOTE9DS19BTEwpIHsKKwkJLyogU2V0IHN0YXJ0IGJsb2NrIGFkZHJlc3MgKi8KKwkJdGhpcy0+d3JpdGVfd29yZCgwLCB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1RBUlRfQkxPQ0tfQUREUkVTUyk7CisJCS8qIFdyaXRlIHVubG9jayBjb21tYW5kICovCisJCXRoaXMtPmNvbW1hbmQobXRkLCBPTkVOQU5EX0NNRF9VTkxPQ0tfQUxMLCAwLCAwKTsKKworCQkvKiBUaGVyZSdzIG5vIHJldHVybiB2YWx1ZSAqLworCQl0aGlzLT53YWl0KG10ZCwgRkxfTE9DS0lORyk7CisKKwkJLyogU2FuaXR5IGNoZWNrICovCisJCXdoaWxlICh0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX0NUUkxfU1RBVFVTKQorCQkJCSYgT05FTkFORF9DVFJMX09OR08pCisJCQljb250aW51ZTsKKworCQlyZXR1cm47CisKKwkJLyogQ2hlY2sgbG9jayBzdGF0dXMgKi8KKwkJaWYgKG9uZW5hbmRfY2hlY2tfbG9ja19zdGF0dXModGhpcykpCisJCQlyZXR1cm47CisKKwkJLyogV29ya2Fyb3VuZCBmb3IgYWxsIGJsb2NrIHVubG9jayBpbiBERFAgKi8KKwkJaWYgKE9ORU5BTkRfSVNfRERQKHRoaXMpKSB7CisJCQkvKiBBbGwgYmxvY2tzIG9uIGFub3RoZXIgY2hpcCAqLworCQkJb2ZzID0gdGhpcy0+Y2hpcHNpemUgPj4gMTsKKwkJCWxlbiA9IHRoaXMtPmNoaXBzaXplID4+IDE7CisJCX0KKwl9CisKKwlvbmVuYW5kX2RvX2xvY2tfY21kKG10ZCwgb2ZzLCBsZW4sIE9ORU5BTkRfQ01EX1VOTE9DSyk7Cit9CisKKworLyoqCisgKiBvbmVuYW5kX2NoZWNrX2ZlYXR1cmVzIC0gQ2hlY2sgYW5kIHNldCBPbmVOQU5EIGZlYXR1cmVzCisgKiBAcGFyYW0gbXRkICAgICAgICAgICBNVEQgZGF0YSBzdHJ1Y3R1cmUKKyAqCisgKiBDaGVjayBhbmQgc2V0IE9uZU5BTkQgZmVhdHVyZXMKKyAqIC0gbG9jayBzY2hlbWUKKyAqIC0gdHdvIHBsYW5lCisgKi8KK3N0YXRpYyB2b2lkIG9uZW5hbmRfY2hlY2tfZmVhdHVyZXMoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJc3RydWN0IG9uZW5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwl1bnNpZ25lZCBpbnQgZGVuc2l0eSwgcHJvY2VzczsKKworCS8qIExvY2sgc2NoZW1lIGRlcGVuZHMgb24gZGVuc2l0eSBhbmQgcHJvY2VzcyAqLworCWRlbnNpdHkgPSBvbmVuYW5kX2dldF9kZW5zaXR5KHRoaXMtPmRldmljZV9pZCk7CisJcHJvY2VzcyA9IHRoaXMtPnZlcnNpb25faWQgPj4gT05FTkFORF9WRVJTSU9OX1BST0NFU1NfU0hJRlQ7CisKKwkvKiBMb2NrIHNjaGVtZSAqLworCXN3aXRjaCAoZGVuc2l0eSkgeworCWNhc2UgT05FTkFORF9ERVZJQ0VfREVOU0lUWV80R2I6CisJCXRoaXMtPm9wdGlvbnMgfD0gT05FTkFORF9IQVNfMlBMQU5FOworCisJY2FzZSBPTkVOQU5EX0RFVklDRV9ERU5TSVRZXzJHYjoKKwkJLyogMkdiIEREUCBkb24ndCBoYXZlIDIgcGxhbmUgKi8KKwkJaWYgKCFPTkVOQU5EX0lTX0REUCh0aGlzKSkKKwkJCXRoaXMtPm9wdGlvbnMgfD0gT05FTkFORF9IQVNfMlBMQU5FOworCQl0aGlzLT5vcHRpb25zIHw9IE9ORU5BTkRfSEFTX1VOTE9DS19BTEw7CisKKwljYXNlIE9ORU5BTkRfREVWSUNFX0RFTlNJVFlfMUdiOgorCQkvKiBBLURpZSBoYXMgYWxsIGJsb2NrIHVubG9jayAqLworCQlpZiAocHJvY2VzcykKKwkJCXRoaXMtPm9wdGlvbnMgfD0gT05FTkFORF9IQVNfVU5MT0NLX0FMTDsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQkvKiBTb21lIE9uZU5BTkQgaGFzIGNvbnRpbnVvdXMgbG9jayBzY2hlbWUgKi8KKwkJaWYgKCFwcm9jZXNzKQorCQkJdGhpcy0+b3B0aW9ucyB8PSBPTkVOQU5EX0hBU19DT05UX0xPQ0s7CisJCWJyZWFrOworCX0KKworCWlmICh0aGlzLT5vcHRpb25zICYgT05FTkFORF9IQVNfQ09OVF9MT0NLKQorCQlwcmludGsoS0VSTl9ERUJVRyAiTG9jayBzY2hlbWUgaXMgQ29udGludW91cyBMb2NrXG4iKTsKKwlpZiAodGhpcy0+b3B0aW9ucyAmIE9ORU5BTkRfSEFTX1VOTE9DS19BTEwpCisJCXByaW50ayhLRVJOX0RFQlVHICJDaGlwIHN1cHBvcnQgYWxsIGJsb2NrIHVubG9ja1xuIik7CisJaWYgKHRoaXMtPm9wdGlvbnMgJiBPTkVOQU5EX0hBU18yUExBTkUpCisJCXByaW50ayhLRVJOX0RFQlVHICJDaGlwIGhhcyAyIHBsYW5lXG4iKTsKK30KKwogLyoqCiAgKiBvbmVuYW5kX3ByaW50X2RldmljZV9pbmZvIC0gUHJpbnQgZGV2aWNlIElECiAgKiBAcGFyYW0gZGV2aWNlICAgICAgICBkZXZpY2UgSUQKICAqCiAgKiBQcmludCBkZXZpY2UgSUQKICAqLwotY2hhciAqIG9uZW5hbmRfcHJpbnRfZGV2aWNlX2luZm8oaW50IGRldmljZSkKK2NoYXIgKm9uZW5hbmRfcHJpbnRfZGV2aWNlX2luZm8oaW50IGRldmljZSwgaW50IHZlcnNpb24pCiB7CiAJaW50IHZjYywgZGVtdXhlZCwgZGRwLCBkZW5zaXR5OwogCWNoYXIgKmRldl9pbmZvID0gbWFsbG9jKDgwKTsKKwljaGFyICpwID0gZGV2X2luZm87CiAKIAl2Y2MgPSBkZXZpY2UgJiBPTkVOQU5EX0RFVklDRV9WQ0NfTUFTSzsKIAlkZW11eGVkID0gZGV2aWNlICYgT05FTkFORF9ERVZJQ0VfSVNfREVNVVg7CiAJZGRwID0gZGV2aWNlICYgT05FTkFORF9ERVZJQ0VfSVNfRERQOwogCWRlbnNpdHkgPSBkZXZpY2UgPj4gT05FTkFORF9ERVZJQ0VfREVOU0lUWV9TSElGVDsKLQlzcHJpbnRmKGRldl9pbmZvLCAiJXNPbmVOQU5EJXMgJWRNQiAlc1YgMTYtYml0ICgweCUwMngpIiwKKwlwICs9IHNwcmludGYoZGV2X2luZm8sICIlc09uZU5BTkQlcyAlZE1CICVzViAxNi1iaXQgKDB4JTAyeCkiLAogCSAgICAgICBkZW11eGVkID8gIiIgOiAiTXV4ZWQgIiwKIAkgICAgICAgZGRwID8gIihERFApIiA6ICIiLAogCSAgICAgICAoMTYgPDwgZGVuc2l0eSksIHZjYyA/ICIyLjY1LzMuMyIgOiAiMS44IiwgZGV2aWNlKTsKIAorCXNwcmludGYocCwgIlxuT25lTkFORCB2ZXJzaW9uID0gMHglMDR4IiwgdmVyc2lvbik7CisJcHJpbnRrKCIlc1xuIiwgZGV2X2luZm8pOworCiAJcmV0dXJuIGRldl9pbmZvOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9uZW5hbmRfbWFudWZhY3R1cmVycyBvbmVuYW5kX21hbnVmX2lkc1tdID0gewogCXtPTkVOQU5EX01GUl9TQU1TVU5HLCAiU2Ftc3VuZyJ9LAotCXtPTkVOQU5EX01GUl9VTktOT1dOLCAiVW5rbm93biJ9CiB9OwogCiAvKioKQEAgLTE2NzgsMTkgKzE5NTMsMjQgQEAKICAqLwogc3RhdGljIGludCBvbmVuYW5kX2NoZWNrX21hZihpbnQgbWFudWYpCiB7CisJaW50IHNpemUgPSBBUlJBWV9TSVpFKG9uZW5hbmRfbWFudWZfaWRzKTsKKwljaGFyICpuYW1lOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgb25lbmFuZF9tYW51Zl9pZHNbaV0uaWQ7IGkrKykgeworCWZvciAoaSA9IDA7IHNpemU7IGkrKykKIAkJaWYgKG1hbnVmID09IG9uZW5hbmRfbWFudWZfaWRzW2ldLmlkKQogCQkJYnJlYWs7Ci0JfQorCisJaWYgKGkgPCBzaXplKQorCQluYW1lID0gb25lbmFuZF9tYW51Zl9pZHNbaV0ubmFtZTsKKwllbHNlCisJCW5hbWUgPSAiVW5rbm93biI7CiAKICNpZmRlZiBPTkVOQU5EX0RFQlVHCi0JcHJpbnRrKEtFUk5fREVCVUcgIk9uZU5BTkQgTWFudWZhY3R1cmVyOiAlcyAoMHglMHgpXG4iLAotCSAgICAgICBvbmVuYW5kX21hbnVmX2lkc1tpXS5uYW1lLCBtYW51Zik7CisJcHJpbnRrKEtFUk5fREVCVUcgIk9uZU5BTkQgTWFudWZhY3R1cmVyOiAlcyAoMHglMHgpXG4iLCBuYW1lLCBtYW51Zik7CiAjZW5kaWYKIAotCXJldHVybiAoaSAhPSBPTkVOQU5EX01GUl9VTktOT1dOKTsKKwlyZXR1cm4gaSA9PSBzaXplOwogfQogCiAvKioKQEAgLTE3MDMsOSArMTk4MywxNCBAQAogc3RhdGljIGludCBvbmVuYW5kX3Byb2JlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQogewogCXN0cnVjdCBvbmVuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7Ci0JaW50IGJyYW1fbWFmX2lkLCBicmFtX2Rldl9pZCwgbWFmX2lkLCBkZXZfaWQ7Ci0JaW50IHZlcnNpb25faWQ7CisJaW50IGJyYW1fbWFmX2lkLCBicmFtX2Rldl9pZCwgbWFmX2lkLCBkZXZfaWQsIHZlcl9pZDsKIAlpbnQgZGVuc2l0eTsKKwlpbnQgc3lzY2ZnOworCisJLyogU2F2ZSBzeXN0ZW0gY29uZmlndXJhdGlvbiAxICovCisJc3lzY2ZnID0gdGhpcy0+cmVhZF93b3JkKHRoaXMtPmJhc2UgKyBPTkVOQU5EX1JFR19TWVNfQ0ZHMSk7CisJLyogQ2xlYXIgU3luYy4gQnVyc3QgUmVhZCBtb2RlIHRvIHJlYWQgQm9vdFJBTSAqLworCXRoaXMtPndyaXRlX3dvcmQoKHN5c2NmZyAmIH5PTkVOQU5EX1NZU19DRkcxX1NZTkNfUkVBRCksIHRoaXMtPmJhc2UgKyBPTkVOQU5EX1JFR19TWVNfQ0ZHMSk7CiAKIAkvKiBTZW5kIHRoZSBjb21tYW5kIGZvciByZWFkaW5nIGRldmljZSBJRCBmcm9tIEJvb3RSQU0gKi8KIAl0aGlzLT53cml0ZV93b3JkKE9ORU5BTkRfQ01EX1JFQURJRCwgdGhpcy0+YmFzZSArIE9ORU5BTkRfQk9PVFJBTSk7CkBAIC0xNzE0LDE5ICsxOTk5LDIzIEBACiAJYnJhbV9tYWZfaWQgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfQk9PVFJBTSArIDB4MCk7CiAJYnJhbV9kZXZfaWQgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfQk9PVFJBTSArIDB4Mik7CiAKLQkvKiBDaGVjayBtYW51ZmFjdHVyZXIgSUQgKi8KLQlpZiAob25lbmFuZF9jaGVja19tYWYoYnJhbV9tYWZfaWQpKQotCQlyZXR1cm4gLUVOWElPOwotCiAJLyogUmVzZXQgT25lTkFORCB0byByZWFkIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWVzICovCiAJdGhpcy0+d3JpdGVfd29yZChPTkVOQU5EX0NNRF9SRVNFVCwgdGhpcy0+YmFzZSArIE9ORU5BTkRfQk9PVFJBTSk7CiAKIAkvKiBXYWl0IHJlc2V0ICovCiAJdGhpcy0+d2FpdChtdGQsIEZMX1JFU0VUSU5HKTsKIAorCS8qIFJlc3RvcmUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gMSAqLworCXRoaXMtPndyaXRlX3dvcmQoc3lzY2ZnLCB0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfU1lTX0NGRzEpOworCisJLyogQ2hlY2sgbWFudWZhY3R1cmVyIElEICovCisJaWYgKG9uZW5hbmRfY2hlY2tfbWFmKGJyYW1fbWFmX2lkKSkKKwkJcmV0dXJuIC1FTlhJTzsKKwogCS8qIFJlYWQgbWFudWZhY3R1cmVyIGFuZCBkZXZpY2UgSURzIGZyb20gUmVnaXN0ZXIgKi8KIAltYWZfaWQgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX01BTlVGQUNUVVJFUl9JRCk7CiAJZGV2X2lkID0gdGhpcy0+cmVhZF93b3JkKHRoaXMtPmJhc2UgKyBPTkVOQU5EX1JFR19ERVZJQ0VfSUQpOworCXZlcl9pZCA9IHRoaXMtPnJlYWRfd29yZCh0aGlzLT5iYXNlICsgT05FTkFORF9SRUdfVkVSU0lPTl9JRCk7CiAKIAkvKiBDaGVjayBPbmVOQU5EIGRldmljZSAqLwogCWlmIChtYWZfaWQgIT0gYnJhbV9tYWZfaWQgfHwgZGV2X2lkICE9IGJyYW1fZGV2X2lkKQpAQCAtMTczOSwxMSArMjAyOCwxNyBAQAogCX0KIAogCS8qIEZsYXNoIGRldmljZSBpbmZvcm1hdGlvbiAqLwotCW10ZC0+bmFtZSA9IG9uZW5hbmRfcHJpbnRfZGV2aWNlX2luZm8oZGV2X2lkKTsKKwltdGQtPm5hbWUgPSBvbmVuYW5kX3ByaW50X2RldmljZV9pbmZvKGRldl9pZCwgdmVyX2lkKTsKIAl0aGlzLT5kZXZpY2VfaWQgPSBkZXZfaWQ7CisJdGhpcy0+dmVyc2lvbl9pZCA9IHZlcl9pZDsKIAotCWRlbnNpdHkgPSBkZXZfaWQgPj4gT05FTkFORF9ERVZJQ0VfREVOU0lUWV9TSElGVDsKKwlkZW5zaXR5ID0gb25lbmFuZF9nZXRfZGVuc2l0eShkZXZfaWQpOwogCXRoaXMtPmNoaXBzaXplID0gKDE2IDw8IGRlbnNpdHkpIDw8IDIwOworCS8qIFNldCBkZW5zaXR5IG1hc2suIGl0IGlzIHVzZWQgZm9yIEREUCAqLworCWlmIChPTkVOQU5EX0lTX0REUCh0aGlzKSkKKwkJdGhpcy0+ZGVuc2l0eV9tYXNrID0gKDEgPDwgKGRlbnNpdHkgKyA2KSk7CisJZWxzZQorCQl0aGlzLT5kZW5zaXR5X21hc2sgPSAwOwogCiAJLyogT25lTkFORCBwYWdlIHNpemUgJiBibG9jayBzaXplICovCiAJLyogVGhlIGRhdGEgYnVmZmVyIHNpemUgaXMgZXF1YWwgdG8gcGFnZSBzaXplICovCkBAIC0xNzY0LDE4ICsyMDU5LDggQEAKIAogCW10ZC0+c2l6ZSA9IHRoaXMtPmNoaXBzaXplOwogCi0JLyogVmVyc2lvbiBJRCAqLwotCXZlcnNpb25faWQgPSB0aGlzLT5yZWFkX3dvcmQodGhpcy0+YmFzZSArIE9ORU5BTkRfUkVHX1ZFUlNJT05fSUQpOwotI2lmZGVmIE9ORU5BTkRfREVCVUcKLQlwcmludGsoS0VSTl9ERUJVRyAiT25lTkFORCB2ZXJzaW9uID0gMHglMDR4XG4iLCB2ZXJzaW9uX2lkKTsKLSNlbmRpZgotCi0JLyogTG9jayBzY2hlbWUgKi8KLQlpZiAoZGVuc2l0eSA8PSBPTkVOQU5EX0RFVklDRV9ERU5TSVRZXzUxMk1iICYmCi0JICAgICEodmVyc2lvbl9pZCA+PiBPTkVOQU5EX1ZFUlNJT05fUFJPQ0VTU19TSElGVCkpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiTG9jayBzY2hlbWUgaXMgQ29udGludWVzIExvY2tcbiIpOwotCQl0aGlzLT5vcHRpb25zIHw9IE9ORU5BTkRfQ09OVF9MT0NLOwotCX0KKwkvKiBDaGVjayBPbmVOQU5EIGZlYXR1cmVzICovCisJb25lbmFuZF9jaGVja19mZWF0dXJlcyhtdGQpOwogCiAJbXRkLT5mbGFncyA9IE1URF9DQVBfTkFOREZMQVNIOwogCW10ZC0+ZXJhc2UgPSBvbmVuYW5kX2VyYXNlOwpAQCAtMTgwMiw2ICsyMDg3LDcgQEAKICAqLwogaW50IG9uZW5hbmRfc2NhbihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IG1heGNoaXBzKQogeworCWludCBpOwogCXN0cnVjdCBvbmVuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CiAKIAlpZiAoIXRoaXMtPnJlYWRfd29yZCkKQEAgLTE4MTMsMTIgKzIwOTksMjEgQEAKIAkJdGhpcy0+Y29tbWFuZCA9IG9uZW5hbmRfY29tbWFuZDsKIAlpZiAoIXRoaXMtPndhaXQpCiAJCXRoaXMtPndhaXQgPSBvbmVuYW5kX3dhaXQ7CisJaWYgKCF0aGlzLT5iYnRfd2FpdCkKKwkJdGhpcy0+YmJ0X3dhaXQgPSBvbmVuYW5kX2JidF93YWl0OwogCiAJaWYgKCF0aGlzLT5yZWFkX2J1ZmZlcnJhbSkKIAkJdGhpcy0+cmVhZF9idWZmZXJyYW0gPSBvbmVuYW5kX3JlYWRfYnVmZmVycmFtOworCWlmICghdGhpcy0+cmVhZF9zcGFyZXJhbSkKKwkJdGhpcy0+cmVhZF9zcGFyZXJhbSA9IG9uZW5hbmRfcmVhZF9idWZmZXJyYW07CiAJaWYgKCF0aGlzLT53cml0ZV9idWZmZXJyYW0pCiAJCXRoaXMtPndyaXRlX2J1ZmZlcnJhbSA9IG9uZW5hbmRfd3JpdGVfYnVmZmVycmFtOwogCisJaWYgKCF0aGlzLT5ibG9ja19tYXJrYmFkKQorCQl0aGlzLT5ibG9ja19tYXJrYmFkID0gb25lbmFuZF9kZWZhdWx0X2Jsb2NrX21hcmtiYWQ7CisJaWYgKCF0aGlzLT5zY2FuX2JidCkKKwkJdGhpcy0+c2Nhbl9iYnQgPSBvbmVuYW5kX2RlZmF1bHRfYmJ0OworCiAJaWYgKG9uZW5hbmRfcHJvYmUobXRkKSkKIAkJcmV0dXJuIC1FTlhJTzsKIApAQCAtMTg1MCw5ICsyMTQ1LDUwIEBACiAJCXRoaXMtPm9wdGlvbnMgfD0gT05FTkFORF9PT0JCVUZfQUxMT0M7CiAJfQogCi0Jb25lbmFuZF91bmxvY2sobXRkLCAwLCBtdGQtPnNpemUpOworCXRoaXMtPnN0YXRlID0gRkxfUkVBRFk7CiAKLQlyZXR1cm4gb25lbmFuZF9kZWZhdWx0X2JidChtdGQpOworCS8qCisJICogQWxsb3cgc3VicGFnZSB3cml0ZXMgdXAgdG8gb29ic2l6ZS4KKwkgKi8KKwlzd2l0Y2ggKG10ZC0+b29ic2l6ZSkgeworCWNhc2UgNjQ6CisJCXRoaXMtPmVjY2xheW91dCA9ICZvbmVuYW5kX29vYl82NDsKKwkJbXRkLT5zdWJwYWdlX3NmdCA9IDI7CisJCWJyZWFrOworCisJY2FzZSAzMjoKKwkJdGhpcy0+ZWNjbGF5b3V0ID0gJm9uZW5hbmRfb29iXzMyOworCQltdGQtPnN1YnBhZ2Vfc2Z0ID0gMTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9XQVJOSU5HICJObyBPT0Igc2NoZW1lIGRlZmluZWQgZm9yIG9vYnNpemUgJWRcbiIsCisJCQltdGQtPm9vYnNpemUpOworCQltdGQtPnN1YnBhZ2Vfc2Z0ID0gMDsKKwkJLyogVG8gcHJldmVudCBrZXJuZWwgb29wcyAqLworCQl0aGlzLT5lY2NsYXlvdXQgPSAmb25lbmFuZF9vb2JfMzI7CisJCWJyZWFrOworCX0KKworCXRoaXMtPnN1YnBhZ2VzaXplID0gbXRkLT53cml0ZXNpemUgPj4gbXRkLT5zdWJwYWdlX3NmdDsKKworCS8qCisJICogVGhlIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgZm9yIGEgY2xpZW50IHRvIHBsYWNlIGRhdGEgaW50bworCSAqIHRoZSBvdXQgb2YgYmFuZCBhcmVhCisJICovCisJdGhpcy0+ZWNjbGF5b3V0LT5vb2JhdmFpbCA9IDA7CisJZm9yIChpID0gMDsgaSA8IE1URF9NQVhfT09CRlJFRV9FTlRSSUVTICYmCisJICAgIHRoaXMtPmVjY2xheW91dC0+b29iZnJlZVtpXS5sZW5ndGg7IGkrKykKKwkJdGhpcy0+ZWNjbGF5b3V0LT5vb2JhdmFpbCArPQorCQkJdGhpcy0+ZWNjbGF5b3V0LT5vb2JmcmVlW2ldLmxlbmd0aDsKKwltdGQtPm9vYmF2YWlsID0gdGhpcy0+ZWNjbGF5b3V0LT5vb2JhdmFpbDsKKworCW10ZC0+ZWNjbGF5b3V0ID0gdGhpcy0+ZWNjbGF5b3V0OworCisJLyogVW5sb2NrIHdob2xlIGJsb2NrICovCisJb25lbmFuZF91bmxvY2tfYWxsKG10ZCk7CisKKwlyZXR1cm4gdGhpcy0+c2Nhbl9iYnQobXRkKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfYmJ0LmMgYi9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfYmJ0LmMKaW5kZXggZjYwOTJiOS4uZDUzOGY5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX2JidC5jCisrKyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9iYnQuYwpAQCAtMyw3ICszLDcgQEAKICAqCiAgKiAgQmFkIEJsb2NrIFRhYmxlIHN1cHBvcnQgZm9yIHRoZSBPbmVOQU5EIGRyaXZlcgogICoKLSAqICBDb3B5cmlnaHQoYykgMjAwNS0yMDA3IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICBDb3B5cmlnaHQoYykgMjAwNS0yMDA4IFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqICBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICoKICAqICBUT0RPOgpAQCAtNTQsNyArNTQsNyBAQAogICogQHBhcmFtIGJ1ZgkJdGVtcG9yYXJ5IGJ1ZmZlcgogICogQHBhcmFtIGJkCQlkZXNjcmlwdG9yIGZvciB0aGUgZ29vZC9iYWQgYmxvY2sgc2VhcmNoIHBhdHRlcm4KICAqIEBwYXJhbSBjaGlwCQljcmVhdGUgdGhlIHRhYmxlIGZvciBhIHNwZWNpZmljIGNoaXAsIC0xIHJlYWQgYWxsIGNoaXBzLgotICoJCUFwcGxpZXMgb25seSBpZiBOQU5EX0JCVF9QRVJDSElQIG9wdGlvbiBpcyBzZXQKKyAqICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgaWYgTkFORF9CQlRfUEVSQ0hJUCBvcHRpb24gaXMgc2V0CiAgKgogICogQ3JlYXRlIGEgYmFkIGJsb2NrIHRhYmxlIGJ5IHNjYW5uaW5nIHRoZSBkZXZpY2UKICAqIGZvciB0aGUgZ2l2ZW4gZ29vZC9iYWQgYmxvY2sgaWRlbnRpZnkgcGF0dGVybgpAQCAtMTU2LDggKzE1Niw4IEBACiAJcmVzID0gKGJibS0+YmJ0W2Jsb2NrID4+IDNdID4+IChibG9jayAmIDB4MDYpKSAmIDB4MDM7CiAKIAlNVERERUJVRyAoTVREX0RFQlVHX0xFVkVMMiwKLQkJICAib25lbmFuZF9pc2JhZF9iYnQ6IGJidCBpbmZvIGZvciBvZmZzIDB4JTA4eDogKGJsb2NrICVkKSAweCUwMnhcbiIsCi0JCSAgKHVuc2lnbmVkIGludClvZmZzLCBibG9jayA+PiAxLCByZXMpOworCQkib25lbmFuZF9pc2JhZF9iYnQ6IGJidCBpbmZvIGZvciBvZmZzIDB4JTA4eDogKGJsb2NrICVkKSAweCUwMnhcbiIsCisJCSh1bnNpZ25lZCBpbnQpb2ZmcywgYmxvY2sgPj4gMSwgcmVzKTsKIAogCXN3aXRjaCAoKGludClyZXMpIHsKIAljYXNlIDB4MDA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfdWJvb3QuYyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF91Ym9vdC5jCmluZGV4IDA4MDgyZjMuLjQ1NDFiMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF91Ym9vdC5jCisrKyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF91Ym9vdC5jCkBAIC0yNiw5ICsyNiwxNyBAQAogCW1lbXNldCgmb25lbmFuZF9tdGQsIDAsIHNpemVvZihzdHJ1Y3QgbXRkX2luZm8pKTsKIAltZW1zZXQoJm9uZW5hbmRfY2hpcCwgMCwgc2l6ZW9mKHN0cnVjdCBvbmVuYW5kX2NoaXApKTsKIAotCW9uZW5hbmRfY2hpcC5iYXNlID0gKHZvaWQgKikgQ09ORklHX1NZU19PTkVOQU5EX0JBU0U7CiAJb25lbmFuZF9tdGQucHJpdiA9ICZvbmVuYW5kX2NoaXA7CiAKKyNpZmRlZiBDT05GSUdfVVNFX09ORU5BTkRfQk9BUkRfSU5JVAorCS8qCisJICogSXQncyB1c2VkIGZvciBzb21lIGJvYXJkIGluaXQgcmVxdWlyZWQKKwkgKi8KKwlvbmVuYW5kX2JvYXJkX2luaXQoJm9uZW5hbmRfbXRkKTsKKyNlbHNlCisJb25lbmFuZF9jaGlwLmJhc2UgPSAodm9pZCAqKSBDT05GSUdfU1lTX09ORU5BTkRfQkFTRTsKKyNlbmRpZgorCiAJb25lbmFuZF9zY2FuKCZvbmVuYW5kX210ZCwgMSk7CiAKIAlwdXRzKCJPbmVOQU5EOiAiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NwaS9hdG1lbC5jIGIvZHJpdmVycy9tdGQvc3BpL2F0bWVsLmMKaW5kZXggMTBmY2YwYy4uYTVmNTFjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvc3BpL2F0bWVsLmMKKysrIGIvZHJpdmVycy9tdGQvc3BpL2F0bWVsLmMKQEAgLTM5LDkgKzM5LDEwIEBACiAJY29uc3QgY2hhcgkqbmFtZTsKIH07CiAKKy8qIHNwaV9mbGFzaCBuZWVkcyB0byBiZSBmaXJzdCBzbyB1cHBlciBsYXllcnMgY2FuIGZyZWUoKSBpdCAqLwogc3RydWN0IGF0bWVsX3NwaV9mbGFzaCB7Ci0JY29uc3Qgc3RydWN0IGF0bWVsX3NwaV9mbGFzaF9wYXJhbXMgKnBhcmFtczsKIAlzdHJ1Y3Qgc3BpX2ZsYXNoIGZsYXNoOworCWNvbnN0IHN0cnVjdCBhdG1lbF9zcGlfZmxhc2hfcGFyYW1zICpwYXJhbXM7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBhdG1lbF9zcGlfZmxhc2ggKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpL3N0bWljcm8uYyBiL2RyaXZlcnMvbXRkL3NwaS9zdG1pY3JvLmMKaW5kZXggYjhiODM1YS4uZTdkZGE5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvc3BpL3N0bWljcm8uYworKysgYi9kcml2ZXJzL210ZC9zcGkvc3RtaWNyby5jCkBAIC02NCw5ICs2NCwxMCBAQAogCWNvbnN0IGNoYXIgKm5hbWU7CiB9OwogCisvKiBzcGlfZmxhc2ggbmVlZHMgdG8gYmUgZmlyc3Qgc28gdXBwZXIgbGF5ZXJzIGNhbiBmcmVlKCkgaXQgKi8KIHN0cnVjdCBzdG1pY3JvX3NwaV9mbGFzaCB7Ci0JY29uc3Qgc3RydWN0IHN0bWljcm9fc3BpX2ZsYXNoX3BhcmFtcyAqcGFyYW1zOwogCXN0cnVjdCBzcGlfZmxhc2ggZmxhc2g7CisJY29uc3Qgc3RydWN0IHN0bWljcm9fc3BpX2ZsYXNoX3BhcmFtcyAqcGFyYW1zOwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3RtaWNyb19zcGlfZmxhc2ggKnRvX3N0bWljcm9fc3BpX2ZsYXNoKHN0cnVjdCBzcGlfZmxhc2gKQEAgLTEzNyw3ICsxMzgsNyBAQAogCiAJcmV0ID0gc3BpX3hmZXIoc3BpLCAzMiwgJmNtZFswXSwgTlVMTCwgU1BJX1hGRVJfQkVHSU4pOwogCWlmIChyZXQpIHsKLQkJZGVidWcoIlNGOiBGYWlsZWQgdG8gc2VuZCBjb21tYW5kICUwMng6ICVkXG4iLCBjbWQsIHJldCk7CisJCWRlYnVnKCJTRjogRmFpbGVkIHRvIHNlbmQgY29tbWFuZCAlMDJ4OiAlZFxuIiwgY21kWzBdLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2J1aWxkLmMgYi9kcml2ZXJzL210ZC91YmkvYnVpbGQuYwppbmRleCAxN2NhYmIyLi5mNGIwMWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91YmkvYnVpbGQuYworKysgYi9kcml2ZXJzL210ZC91YmkvYnVpbGQuYwpAQCAtNzg0LDE5ICs3ODQsMjAgQEAKIAlpZiAoZXJyKQogCQlnb3RvIG91dF9mcmVlOwogCisJZXJyID0gLUVOT01FTTsKIAl1YmktPnBlYl9idWYxID0gdm1hbGxvYyh1YmktPnBlYl9zaXplKTsKIAlpZiAoIXViaS0+cGViX2J1ZjEpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKIAl1YmktPnBlYl9idWYyID0gdm1hbGxvYyh1YmktPnBlYl9zaXplKTsKIAlpZiAoIXViaS0+cGViX2J1ZjIpCi0JCSBnb3RvIG91dF9mcmVlOworCQlnb3RvIG91dF9mcmVlOwogCiAjaWZkZWYgQ09ORklHX01URF9VQklfREVCVUcKIAltdXRleF9pbml0KCZ1YmktPmRiZ19idWZfbXV0ZXgpOwogCXViaS0+ZGJnX3BlYl9idWYgPSB2bWFsbG9jKHViaS0+cGViX3NpemUpOwogCWlmICghdWJpLT5kYmdfcGViX2J1ZikKLQkJIGdvdG8gb3V0X2ZyZWU7CisJCWdvdG8gb3V0X2ZyZWU7CiAjZW5kaWYKIAogCWVyciA9IGF0dGFjaF9ieV9zY2FubmluZyh1YmkpOwpAQCAtMTA1OSw2ICsxMDYwLDcgQEAKIAltaXNjX2RlcmVnaXN0ZXIoJnViaV9jdHJsX2NkZXYpOwogCWNsYXNzX3JlbW92ZV9maWxlKHViaV9jbGFzcywgJnViaV92ZXJzaW9uKTsKIAljbGFzc19kZXN0cm95KHViaV9jbGFzcyk7CisJbXRkX2RldnMgPSAwOwogfQogbW9kdWxlX2V4aXQodWJpX2V4aXQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC91YmkvY3JjMzIuYyBiL2RyaXZlcnMvbXRkL3ViaS9jcmMzMi5jCmluZGV4IDUyNzNjYTMuLmE3ZTI2YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS9jcmMzMi5jCisrKyBiL2RyaXZlcnMvbXRkL3ViaS9jcmMzMi5jCkBAIC05Nyw3ICs5Nyw3IEBACiAjIGVsc2UKICMgIGRlZmluZSBET19DUkMoeCkgY3JjID0gdGFiWyAoKGNyYyA+PiAyNCkgXiAoeCkpICYgMjU1XSBeIChjcmM8PDgpCiAjIGVuZGlmCi0gICAgLy9wcmludGYoIkNyYzMyX2xlIGNyYz0leFxuIixjcmMpOworCS8qIHByaW50ZigiQ3JjMzJfbGUgY3JjPSV4XG4iLGNyYyk7ICovCiAJY3JjID0gX19jcHVfdG9fbGUzMihjcmMpOwogCS8qIEFsaWduIGl0ICovCiAJaWYoKCgobG9uZyliKSYzICYmIGxlbikpewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2lvLmMgYi9kcml2ZXJzL210ZC91YmkvaW8uYwppbmRleCAyZDQ0ZjIzLi44NDIzODk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91YmkvaW8uYworKysgYi9kcml2ZXJzL210ZC91YmkvaW8uYwpAQCAtMTg2LDcgKzE4Niw3IEBACiAJCWlmIChyZWFkICE9IGxlbiAmJiBlcnIgPT0gLUVCQURNU0cpIHsKIAkJCXViaV9hc3NlcnQoMCk7CiAJCQlwcmludGsoIiVzWyVkXSBub3QgaGVyZVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLS8vCQkJZXJyID0gLUVJTzsKKy8qCQkJZXJyID0gLUVJTzsgKi8KIAkJfQogCX0gZWxzZSB7CiAJCXViaV9hc3NlcnQobGVuID09IHJlYWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL3ZtdC5jIGIvZHJpdmVycy9tdGQvdWJpL3ZtdC5jCmluZGV4IGE4N2EyZjMuLjA2MWRhNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS92bXQuYworKysgYi9kcml2ZXJzL210ZC91Ymkvdm10LmMKQEAgLTI2MCw3ICsyNjAsNyBAQAogCQkJZ290byBvdXRfdW5sb2NrOwogCQl9CiAKLSAgICAgICAgLyogQ2FsY3VsYXRlIGhvdyBtYW55IGVyYXNlYmxvY2tzIGFyZSByZXF1ZXN0ZWQgKi8KKwkvKiBDYWxjdWxhdGUgaG93IG1hbnkgZXJhc2VibG9ja3MgYXJlIHJlcXVlc3RlZCAqLwogCXZvbC0+dXNhYmxlX2xlYl9zaXplID0gdWJpLT5sZWJfc2l6ZSAtIHViaS0+bGViX3NpemUgJSByZXEtPmFsaWdubWVudDsKIAlieXRlcyA9IHJlcS0+Ynl0ZXM7CiAJaWYgKGRvX2RpdihieXRlcywgdm9sLT51c2FibGVfbGViX3NpemUpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZnNsX3BjaV9pbml0LmMgYi9kcml2ZXJzL3BjaS9mc2xfcGNpX2luaXQuYwppbmRleCAxZGI0MmZkLi5kYjY4ZjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9mc2xfcGNpX2luaXQuYworKysgYi9kcml2ZXJzL3BjaS9mc2xfcGNpX2luaXQuYwpAQCAtMzcsNiArMzcsMTEgQEAKICNpbmNsdWRlIDxwY2kuaD4KICNpbmNsdWRlIDxhc20vaW1tYXBfZnNsX3BjaS5oPgogCisvKiBGcmVlc2NhbGUtc3BlY2lmaWMgUENJIGNvbmZpZyByZWdpc3RlcnMgKi8KKyNkZWZpbmUgRlNMX1BDSV9QQkZSCQkweDQ0CisjZGVmaW5lIEZTTF9QQ0lFX0NBUF9JRAkJMHg0YworI2RlZmluZSBGU0xfUENJRV9DRkdfUkRZCTB4NGIwCisKIHZvaWQgcGNpYXV0b19wcmVzY2FuX3NldHVwX2JyaWRnZShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsCiAJCQkJcGNpX2Rldl90IGRldiwgaW50IHN1Yl9idXMpOwogdm9pZCBwY2lhdXRvX3Bvc3RzY2FuX3NldHVwX2JyaWRnZShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsCkBAIC0zMDYsNiArMzExLDMwIEBACiAJfQogfQogCisvKiBFbmFibGUgaW5ib3VuZCBQQ0kgY29uZmlnIGN5Y2xlcyBmb3IgYWdlbnQvZW5kcG9pbnQgaW50ZXJmYWNlICovCit2b2lkIGZzbF9wY2lfY29uZmlnX3VubG9jayhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UpCit7CisJcGNpX2Rldl90IGRldiA9IFBDSV9CREYoaG9zZS0+Zmlyc3RfYnVzbm8sMCwwKTsKKwl1OCBhZ2VudDsKKwl1OCBwY2llX2NhcDsKKwl1MTYgcGJmcjsKKworCXBjaV9ob3NlX3JlYWRfY29uZmlnX2J5dGUoaG9zZSwgZGV2LCBQQ0lfQ0xBU1NfUFJPRywgJmFnZW50KTsKKwlpZiAoIWFnZW50KQorCQlyZXR1cm47CisKKwlwY2lfaG9zZV9yZWFkX2NvbmZpZ19ieXRlKGhvc2UsIGRldiwgRlNMX1BDSUVfQ0FQX0lELCAmcGNpZV9jYXApOworCWlmIChwY2llX2NhcCAhPSAweDApIHsKKwkJLyogUENJZSAtIHNldCBDRkdfUkVBRFkgYml0IG9mIENvbmZpZ3VyYXRpb24gUmVhZHkgUmVnaXN0ZXIgKi8KKwkJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2J5dGUoaG9zZSwgZGV2LCBGU0xfUENJRV9DRkdfUkRZLCAweDEpOworCX0gZWxzZSB7CisJCS8qIFBDSSAtIGNsZWFyIEFDTCBiaXQgb2YgUEJGUiAqLworCQlwY2lfaG9zZV9yZWFkX2NvbmZpZ193b3JkKGhvc2UsIGRldiwgRlNMX1BDSV9QQkZSLCAmcGJmcik7CisJCXBiZnIgJj0gfjB4MjA7CisJCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ193b3JkKGhvc2UsIGRldiwgRlNMX1BDSV9QQkZSLCBwYmZyKTsKKwl9Cit9CisKICNpZmRlZiBDT05GSUdfT0ZfQk9BUkRfU0VUVVAKICNpbmNsdWRlIDxsaWJmZHQuaD4KICNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpX3NoNzc1MS5jIGIvZHJpdmVycy9wY2kvcGNpX3NoNzc1MS5jCmluZGV4IGUzYTBlYTAuLmRmNmQ3NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3BjaV9zaDc3NTEuYworKysgYi9kcml2ZXJzL3BjaS9wY2lfc2g3NzUxLmMKQEAgLTE4Nyw4ICsxODcsOCBAQAogCiAJLyogQ29weSBCU0MgcmVnaXN0ZXJzIGludG8gUENJIEJTQyAqLwogCXA0X291dChpbmwoU0g3NzUxX0JDUjEpLCBTSDc3NTFfUENJQkNSMSk7Ci0JcDRfb3V0KGlubChTSDc3NTFfQkNSMiksIFNINzc1MV9QQ0lCQ1IyKTsKLQlwNF9vdXQoaW5sKFNINzc1MV9CQ1IzKSwgU0g3NzUxX1BDSUJDUjMpOworCXA0X291dChpbncoU0g3NzUxX0JDUjIpLCBTSDc3NTFfUENJQkNSMik7CisJcDRfb3V0KGludyhTSDc3NTFfQkNSMyksIFNINzc1MV9QQ0lCQ1IzKTsKIAlwNF9vdXQoaW5sKFNINzc1MV9XQ1IxKSwgU0g3NzUxX1BDSVdDUjEpOwogCXA0X291dChpbmwoU0g3NzUxX1dDUjIpLCBTSDc3NTFfUENJV0NSMik7CiAJcDRfb3V0KGlubChTSDc3NTFfV0NSMyksIFNINzc1MV9QQ0lXQ1IzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL01ha2VmaWxlIGIvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUKaW5kZXggMTcyMzVmZi4uYzdhMTg4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUKQEAgLTM4LDcgKzM4LDcgQEAKIENPQkpTLSQoQ09ORklHX1hJTElOWF9VQVJUTElURSkgKz0gc2VyaWFsX3h1YXJ0bGl0ZS5vCiBDT0JKUy0kKENPTkZJR19TQ0lGX0NPTlNPTEUpICs9IHNlcmlhbF9zaC5vCiBDT0JKUy0kKENPTkZJR19VU0JfVFRZKSArPSB1c2J0dHkubwotQ09CSlMtJChDT05GSUdfVkNUSF9TRVJJQUwpICs9IHZjdGgubworQ09CSlMtJChDT05GSUdfVkNUX1NFUklBTCkgKz0gdmN0Lm8KIAogQ09CSlMJOj0gJChzb3J0ICQoQ09CSlMteSkpCiBTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfc2guYyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9zaC5jCmluZGV4IGYzMDUzMmIuLmJmZGIyY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9zaC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9zaC5jCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KIAogI2lmIGRlZmluZWQoQ09ORklHX0NPTlNfU0NJRjApCkBAIC00OSw3ICs1MCw3IEBACiAjIGRlZmluZSBTQ0ZSRFIJKHZ1X2NoYXIgICopKFNDSUZfQkFTRSArIDB4MjQpCiAjZWxzZQogIyBkZWZpbmUgU0NGVERSICh2dV9jaGFyICAqKShTQ0lGX0JBU0UgKyAweEMpCi0jIGRlZmluZSBTQ0ZTUiAJKHZ1X3Nob3J0ICopKFNDSUZfQkFTRSArIDB4MTApCisjIGRlZmluZSBTQ0ZTUgkodnVfc2hvcnQgKikoU0NJRl9CQVNFICsgMHgxMCkKICMgZGVmaW5lIFNDRlJEUiAodnVfY2hhciAgKikoU0NJRl9CQVNFICsgMHgxNCkKICNlbmRpZgogCkBAIC02NCw3ICs2NSw3IEBACiAjZWxpZiBkZWZpbmVkKENPTkZJR19DUFVfU0g3NzYzKQogIyBpZiBkZWZpbmVkKENPTkZJR19DT05TX1NDSUYyKQogIyBkZWZpbmUgU0NTUFRSCSh2dV9zaG9ydCAqKShTQ0lGX0JBU0UgKyAweDIwKQotIyBkZWZpbmUgU0NMU1IgCSh2dV9zaG9ydCAqKShTQ0lGX0JBU0UgKyAweDI0KQorIyBkZWZpbmUgU0NMU1IJKHZ1X3Nob3J0ICopKFNDSUZfQkFTRSArIDB4MjQpCiAjIGRlZmluZSBMU1JfT1JFUgkxCiAjIGRlZmluZSBGSUZPTEVWRUxfTUFTSwkweDFGCiAjIGVsc2UKQEAgLTkwLDExICs5MSwxMSBAQAogCWRlZmluZWQoQ09ORklHX0NQVV9TSDc3MjIpIHx8IFwKIAlkZWZpbmVkKENPTkZJR19DUFVfU0g3MjAzKQogIyBkZWZpbmUgU0NTUFRSCSh2dV9zaG9ydCAqKShTQ0lGX0JBU0UgKyAweDIwKQotIyBkZWZpbmUgU0NMU1IgCSh2dV9zaG9ydCAqKShTQ0lGX0JBU0UgKyAweDI0KQorIyBkZWZpbmUgU0NMU1IJKHZ1X3Nob3J0ICopKFNDSUZfQkFTRSArIDB4MjQpCiAjIGRlZmluZSBMU1JfT1JFUgkxCiAjIGRlZmluZSBGSUZPTEVWRUxfTUFTSwkweDFGCiAjZWxpZiBkZWZpbmVkKENPTkZJR19DUFVfU0g3NzIwKQotIyBkZWZpbmUgU0NMU1IJCSh2dV9zaG9ydCAqKShTQ0lGX0JBU0UgKyAweDI0KQorIyBkZWZpbmUgU0NMU1IJCVNDRlNSCiAjIGRlZmluZSBMU1JfT1JFUgkweDAyMDAKICMgZGVmaW5lIEZJRk9MRVZFTF9NQVNLCTB4MUYKICNlbGlmIGRlZmluZWQoQ09ORklHX0NQVV9TSDc3MTApIHx8IFwKQEAgLTEwNiw0MiArMTA3LDQzIEBACiAKIC8qIFNDQlJSIHJlZ2lzdGVyIHZhbHVlIHNldHRpbmcgKi8KICNpZiBkZWZpbmVkKENPTkZJR19DUFVfU0g3NzIwKQotIyBkZWZpbmUgU0NCUlJfVkFMVUUoYnBzLCBjbGspICgoKGNsayoyKSsxNipicHMpLygzMipicHMpLTEpCisjIGRlZmluZSBTQ0JSUl9WQUxVRShicHMsIGNsaykgKCgoY2xrICogMikgKyAxNiAqIGJwcykgLyAoMzIgKiBicHMpIC0gMSkKICNlbGlmIGRlZmluZWQoQ09ORklHX0NQVV9TSDc3MjMpICYmIGRlZmluZWQoQ09ORklHX1NDSUZfQSkKIC8qIFNINzcyMyBTQ0lGQSB1c2UgYnVzIGNsb2NrLiBTbyBjbG9jayAqMiAqLwotIyBkZWZpbmUgU0NCUlJfVkFMVUUoYnBzLCBjbGspICgoKGNsayoyKjIpKzE2KmJwcykvKDMyKmJwcyktMSkKKyMgZGVmaW5lIFNDQlJSX1ZBTFVFKGJwcywgY2xrKSAoKChjbGsgKiAyICogMikgKyAxNiAqIGJwcykgLyAoMzIgKiBicHMpIC0gMSkKICNlbHNlIC8qIEdlbmVyaWMgU3VwZXJIICovCi0jIGRlZmluZSBTQ0JSUl9WQUxVRShicHMsIGNsaykgKChjbGsrMTYqYnBzKS8oMzIqYnBzKS0xKQorIyBkZWZpbmUgU0NCUlJfVkFMVUUoYnBzLCBjbGspICgoY2xrICsgMTYgKiBicHMpIC8gKDMyICogYnBzKSAtIDEpCiAjZW5kaWYKIAotI2RlZmluZSBTQ1JfUkUgCQkoMSA8PCA0KQotI2RlZmluZSBTQ1JfVEUgCQkoMSA8PCA1KQorI2RlZmluZSBTQ1JfUkUJCSgxIDw8IDQpCisjZGVmaW5lIFNDUl9URQkJKDEgPDwgNSkKICNkZWZpbmUgRkNSX1JGUlNUCSgxIDw8IDEpCS8qIFJGQ0wgKi8KICNkZWZpbmUgRkNSX1RGUlNUCSgxIDw8IDIpCS8qIFRGQ0wgKi8KLSNkZWZpbmUgRlNSX0RSICAgCSgxIDw8IDApCi0jZGVmaW5lIEZTUl9SREYgIAkoMSA8PCAxKQotI2RlZmluZSBGU1JfRkVSICAJKDEgPDwgMykKLSNkZWZpbmUgRlNSX0JSSyAgCSgxIDw8IDQpCi0jZGVmaW5lIEZTUl9GRVIgIAkoMSA8PCAzKQotI2RlZmluZSBGU1JfVEVORCAJKDEgPDwgNikKLSNkZWZpbmUgRlNSX0VSICAgCSgxIDw8IDcpCisjZGVmaW5lIEZTUl9EUgkJKDEgPDwgMCkKKyNkZWZpbmUgRlNSX1JERgkJKDEgPDwgMSkKKyNkZWZpbmUgRlNSX0ZFUgkJKDEgPDwgMykKKyNkZWZpbmUgRlNSX0JSSwkJKDEgPDwgNCkKKyNkZWZpbmUgRlNSX0ZFUgkJKDEgPDwgMykKKyNkZWZpbmUgRlNSX1RFTkQJKDEgPDwgNikKKyNkZWZpbmUgRlNSX0VSCQkoMSA8PCA3KQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiB2b2lkIHNlcmlhbF9zZXRicmcodm9pZCkKIHsKIAlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQkqU0NCUlIgPSBTQ0JSUl9WQUxVRShnZC0+YmF1ZHJhdGUsIENPTkZJR19TWVNfQ0xLX0ZSRVEpOworCisJd3JpdGViKFNDQlJSX1ZBTFVFKGdkLT5iYXVkcmF0ZSwgQ09ORklHX1NZU19DTEtfRlJFUSksIFNDQlJSKTsKIH0KIAogaW50IHNlcmlhbF9pbml0KHZvaWQpCiB7Ci0JKlNDU0NSID0gKFNDUl9SRSB8IFNDUl9URSk7Ci0JKlNDU01SID0gMDsKLQkqU0NTTVIgPSAwOwotCSpTQ0ZDUiA9IChGQ1JfUkZSU1QgfCBGQ1JfVEZSU1QpOwotCSpTQ0ZDUjsKLQkqU0NGQ1IgPSAwOworCXdyaXRldygoU0NSX1JFIHwgU0NSX1RFKSwgU0NTQ1IpOworCXdyaXRldygwLCBTQ1NNUik7CisJd3JpdGV3KDAsIFNDU01SKTsKKwl3cml0ZXcoKEZDUl9SRlJTVCB8IEZDUl9URlJTVCksIFNDRkNSKTsKKwlyZWFkdyhTQ0ZDUik7CisJd3JpdGV3KDAsIFNDRkNSKTsKIAogCXNlcmlhbF9zZXRicmcoKTsKIAlyZXR1cm4gMDsKQEAgLTE1MCw5ICsxNTIsOSBAQAogc3RhdGljIGludCBzZXJpYWxfcnhfZmlmb19sZXZlbCh2b2lkKQogewogI2lmIGRlZmluZWQoU0NSRkRSKQotCXJldHVybiAoKlNDUkZEUiA+PiAwKSAmIEZJRk9MRVZFTF9NQVNLOworCXJldHVybiAocmVhZHcoU0NSRkRSKSA+PiAwKSAmIEZJRk9MRVZFTF9NQVNLOwogI2Vsc2UKLQlyZXR1cm4gKCpTQ0ZEUiA+PiAwKSAmIEZJRk9MRVZFTF9NQVNLOworCXJldHVybiAocmVhZHcoU0NGRFIpID4+IDApICYgRklGT0xFVkVMX01BU0s7CiAjZW5kaWYKIH0KIApAQCAtMTYxLDE1ICsxNjMsMTUgQEAKIAl1bnNpZ25lZCBpbnQgZnNyX2JpdHNfdG9fY2xlYXI7CiAKIAl3aGlsZSAoMSkgewotCQlpZiAoKlNDRlNSICYgRlNSX1RFTkQpIHsJLyogVHggZmlmbyBpcyBlbXB0eSAqLworCQlpZiAocmVhZHcoU0NGU1IpICYgRlNSX1RFTkQpIHsgLyogVHggZmlmbyBpcyBlbXB0eSAqLwogCQkJZnNyX2JpdHNfdG9fY2xlYXIgPSBGU1JfVEVORDsKIAkJCWJyZWFrOwogCQl9CiAJfQogCi0JKlNDRlREUiA9IGM7CisJd3JpdGViKGMsIFNDRlREUik7CiAJaWYgKGZzcl9iaXRzX3RvX2NsZWFyICE9IDApCi0JCSpTQ0ZTUiAmPSB+ZnNyX2JpdHNfdG9fY2xlYXI7CisJCXdyaXRldyhyZWFkdyhTQ0ZTUikgJiB+ZnNyX2JpdHNfdG9fY2xlYXIsIFNDRlNSKTsKIH0KIAogdm9pZCBzZXJpYWxfcHV0Yyhjb25zdCBjaGFyIGMpCkBAIC0xOTEsMjYgKzE5MywyNSBAQAogCXJldHVybiBzZXJpYWxfcnhfZmlmb19sZXZlbCgpID8gMSA6IDA7CiB9CiAKLSNkZWZpbmUgRlNSX0VSUl9DTEVBUiAgIDB4MDA2MwotI2RlZmluZSBSRFJGX0NMRUFSICAgICAgMHgwMGZjCisjZGVmaW5lIEZTUl9FUlJfQ0xFQVIJMHgwMDYzCisjZGVmaW5lIFJEUkZfQ0xFQVIJCTB4MDBmYwogdm9pZCBoYW5kbGVfZXJyb3Iodm9pZCkKIHsKLQotCSh2b2lkKSpTQ0ZTUjsKLQkqU0NGU1IgPSBGU1JfRVJSX0NMRUFSOwotCSh2b2lkKSpTQ0xTUjsKLQkqU0NMU1IgPSAweDAwOworCXJlYWR3KFNDRlNSKTsKKwl3cml0ZXcoRlNSX0VSUl9DTEVBUiwgU0NGU1IpOworCXJlYWR3KFNDTFNSKTsKKwl3cml0ZXcoMHgwMCwgU0NMU1IpOwogfQogCiBpbnQgc2VyaWFsX2dldGNfY2hlY2sodm9pZCkKIHsKIAl1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAKLQlzdGF0dXMgPSAqU0NGU1I7CisJc3RhdHVzID0gcmVhZHcoU0NGU1IpOwogCiAJaWYgKHN0YXR1cyAmIChGU1JfRkVSIHwgRlNSX0VSIHwgRlNSX0JSSykpCiAJCWhhbmRsZV9lcnJvcigpOwotCWlmICgqU0NMU1IgJiBMU1JfT1JFUikKKwlpZiAocmVhZHcoU0NMU1IpICYgTFNSX09SRVIpCiAJCWhhbmRsZV9lcnJvcigpOwogCXJldHVybiBzdGF0dXMgJiAoRlNSX0RSIHwgRlNSX1JERik7CiB9CkBAIC0yMjMsMTUgKzIyNCwxNSBAQAogCXdoaWxlICghc2VyaWFsX2dldGNfY2hlY2soKSkKIAkJOwogCi0JY2ggPSAqU0NGUkRSOwotCXN0YXR1cyA9ICpTQ0ZTUjsKKwljaCA9IHJlYWRiKFNDRlJEUik7CisJc3RhdHVzID0gcmVhZHcoU0NGU1IpOwogCi0JKlNDRlNSID0gUkRSRl9DTEVBUjsKKwl3cml0ZXcoUkRSRl9DTEVBUiwgU0NGU1IpOwogCiAJaWYgKHN0YXR1cyAmIChGU1JfRkVSIHwgRlNSX0ZFUiB8IEZTUl9FUiB8IEZTUl9CUkspKQogCQloYW5kbGVfZXJyb3IoKTsKIAotCWlmICgqU0NMU1IgJiBMU1JfT1JFUikKKwlpZiAocmVhZHcoU0NMU1IpICYgTFNSX09SRVIpCiAJCWhhbmRsZV9lcnJvcigpOwogCiAJcmV0dXJuIGNoOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvdmN0aC5jIGIvZHJpdmVycy9zZXJpYWwvdmN0LmMKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gZHJpdmVycy9zZXJpYWwvdmN0aC5jCnJlbmFtZSB0byBkcml2ZXJzL3NlcmlhbC92Y3QuYwppbmRleCAyYzg0N2QwLi41NTZjMTE0IDEwMDc1NQotLS0gYS9kcml2ZXJzL3NlcmlhbC92Y3RoLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvdmN0LmMKQEAgLTIxLDcgKzIxLDExIEBACiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKKyNpZmRlZiBDT05GSUdfVkNUX1BMQVRJTlVNQVZDCisjZGVmaW5lIFVBUlRfMV9CQVNFCQkweEJEQzMwMDAwCisjZWxzZQogI2RlZmluZSBVQVJUXzFfQkFTRQkJMHhCRjg5QzAwMAorI2VuZGlmCiAKICNkZWZpbmUJVUFSVF9SQlJfT0ZGCQkweDAwCS8qIHJlY2VpdmVyIGJ1ZmZlciByZWcJCSovCiAjZGVmaW5lCVVBUlRfVEhSX09GRgkJMHgwMAkvKiB0cmFuc21pdCBob2xkaW5nICByZWcJKi8KQEAgLTUzLDcgKzU3LDcgQEAKICNkZWZpbmUgVUFSVF83REFUQV9CSVRTCQkweDAwMDIJLyogICA3IFtiaXRzXSAgMSAgIGJpdHMgICAyCSovCiAjZGVmaW5lIFVBUlRfOERBVEFfQklUUwkJMHgwMDAzCS8qICAgOCBbYml0c10gIDEgICBiaXRzICAgMgkqLwogCi1zdGF0aWMgdm9pZCB2Y3RoX3VhcnRfc2V0X2JhdWRfcmF0ZSh1MzIgYWRkcmVzcywgdTMyIGRoLCB1MzIgZGwpCitzdGF0aWMgdm9pZCB2Y3RfdWFydF9zZXRfYmF1ZF9yYXRlKHUzMiBhZGRyZXNzLCB1MzIgZGgsIHUzMiBkbCkKIHsKIAl1MzIgdmFsID0gX19yYXdfcmVhZGwoVUFSVF8xX0JBU0UgKyBVQVJUX0xDUl9PRkYpOwogCkBAIC03NCw3ICs3OCw3IEBACiBpbnQgc2VyaWFsX2luaXQodm9pZCkKIHsKIAlfX3Jhd193cml0ZWwoVUFSVF9ESVNfQUxMX0lOVEVSLCBVQVJUXzFfQkFTRSArIFVBUlRfSUVSX09GRik7Ci0JdmN0aF91YXJ0X3NldF9iYXVkX3JhdGUoVUFSVF8xX0JBU0UsIDAsIFVBUlRfMTE1MjAwX0JEUik7CisJdmN0X3VhcnRfc2V0X2JhdWRfcmF0ZShVQVJUXzFfQkFTRSwgMCwgVUFSVF8xMTUyMDBfQkRSKTsKIAlfX3Jhd193cml0ZWwoVUFSVF84REFUQV9CSVRTLCBVQVJUXzFfQkFTRSArIFVBUlRfTENSX09GRik7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9mYXQuYyBiL2ZzL2ZhdC9mYXQuYwppbmRleCAwNmVhYmMzLi4yOGM3ODA1IDEwMDY0NAotLS0gYS9mcy9mYXQvZmF0LmMKKysrIGIvZnMvZmF0L2ZhdC5jCkBAIC04NCw2ICs4NCw3IEBACiAJCXJldHVybiAtMTsKIAl9CiAjaWYgKGRlZmluZWQoQ09ORklHX0NNRF9JREUpIHx8IFwKKyAgICAgZGVmaW5lZChDT05GSUdfQ01EX1NBVEEpIHx8IFwKICAgICAgZGVmaW5lZChDT05GSUdfQ01EX1NDU0kpIHx8IFwKICAgICAgZGVmaW5lZChDT05GSUdfQ01EX1VTQikgfHwgXAogICAgICBkZWZpbmVkKENPTkZJR19NTUMpIHx8IFwKQEAgLTQzMyw3ICs0MzQsOCBAQAogICogaW50byAncmV0ZGVudCcKICAqIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZS4KICAqLwotX191OAkgZ2V0X3ZmYXRuYW1lX2Jsb2NrW01BWF9DTFVTVFNJWkVdOworX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGRpcl9lbnRyeSkpKSkKK19fdTggZ2V0X3ZmYXRuYW1lX2Jsb2NrW01BWF9DTFVTVFNJWkVdOwogc3RhdGljIGludAogZ2V0X3ZmYXRuYW1lKGZzZGF0YSAqbXlkYXRhLCBpbnQgY3VyY2x1c3QsIF9fdTggKmNsdXN0ZXIsCiAJICAgICBkaXJfZW50cnkgKnJldGRlbnQsIGNoYXIgKmxfbmFtZSkKQEAgLTUxOSw2ICs1MjEsNyBAQAogICogR2V0IHRoZSBkaXJlY3RvcnkgZW50cnkgYXNzb2NpYXRlZCB3aXRoICdmaWxlbmFtZScgZnJvbSB0aGUgZGlyZWN0b3J5CiAgKiBzdGFydGluZyBhdCAnc3RhcnRzZWN0JwogICovCitfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18oX19hbGlnbm9mX18oZGlyX2VudHJ5KSkpKQogX191OCBnZXRfZGVudGZyb21kaXJfYmxvY2tbTUFYX0NMVVNUU0laRV07CiBzdGF0aWMgZGlyX2VudHJ5ICpnZXRfZGVudGZyb21kaXIgKGZzZGF0YSAqIG15ZGF0YSwgaW50IHN0YXJ0c2VjdCwKIAkJCQkgICBjaGFyICpmaWxlbmFtZSwgZGlyX2VudHJ5ICogcmV0ZGVudCwKQEAgLTcyNCw4ICs3MjcsOCBAQAogCXJldHVybiAtMTsKIH0KIAotCi1fX3U4IGRvX2ZhdF9yZWFkX2Jsb2NrW01BWF9DTFVTVFNJWkVdOyAgLyogQmxvY2sgYnVmZmVyICovCitfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18oX19hbGlnbm9mX18oZGlyX2VudHJ5KSkpKQorX191OCBkb19mYXRfcmVhZF9ibG9ja1tNQVhfQ0xVU1RTSVpFXTsKIGxvbmcKIGRvX2ZhdF9yZWFkIChjb25zdCBjaGFyICpmaWxlbmFtZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBsb25nIG1heHNpemUsCiAJICAgICBpbnQgZG9scykKQEAgLTk4MCwxMiArOTgzLDE0IEBACiAJCXJldHVybiAxOwogCX0KICNpZiBkZWZpbmVkKENPTkZJR19DTURfSURFKSB8fCBcCisgICAgZGVmaW5lZChDT05GSUdfQ01EX1NBVEEpIHx8IFwKICAgICBkZWZpbmVkKENPTkZJR19DTURfU0NTSSkgfHwgXAogICAgIGRlZmluZWQoQ09ORklHX0NNRF9VU0IpIHx8IFwKICAgICBkZWZpbmVkKENPTkZJR19NTUMpCiAJcHJpbnRmKCJJbnRlcmZhY2U6ICAiKTsKIAlzd2l0Y2goY3VyX2Rldi0+aWZfdHlwZSkgewogCQljYXNlIElGX1RZUEVfSURFIDoJcHJpbnRmKCJJREUiKTsgYnJlYWs7CisJCWNhc2UgSUZfVFlQRV9TQVRBIDoJcHJpbnRmKCJTQVRBIik7IGJyZWFrOwogCQljYXNlIElGX1RZUEVfU0NTSSA6CXByaW50ZigiU0NTSSIpOyBicmVhazsKIAkJY2FzZSBJRl9UWVBFX0FUQVBJIDoJcHJpbnRmKCJBVEFQSSIpOyBicmVhazsKIAkJY2FzZSBJRl9UWVBFX1VTQiA6CXByaW50ZigiVVNCIik7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvZnMvamZmczIvamZmczJfMXBhc3MuYyBiL2ZzL2pmZnMyL2pmZnMyXzFwYXNzLmMKaW5kZXggYmU3YzFhMS4uMTFiNjZhYiAxMDA2NDQKLS0tIGEvZnMvamZmczIvamZmczJfMXBhc3MuYworKysgYi9mcy9qZmZzMi9qZmZzMl8xcGFzcy5jCkBAIC0xMTksNiArMTE5LDcgQEAKICNpbmNsdWRlIDx3YXRjaGRvZy5oPgogI2luY2x1ZGUgPGpmZnMyL2pmZnMyLmg+CiAjaW5jbHVkZSA8amZmczIvamZmczJfMXBhc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvY29tcGF0Lmg+CiAKICNpbmNsdWRlICJqZmZzMl9wcml2YXRlLmgiCiAKQEAgLTE0MDgsMTEgKzE0MDksNiBAQAogfQogI2VuZGlmCiAKLSNkZWZpbmUgbWluX3QodHlwZSwgeCwgeSkgKHsgICAgICAgICAgICAgICAgICAgIFwKLQl0eXBlIF9fbWluMSA9ICh4KTsgICAgICAgICAgICAgICAgICAgICAgXAotCXR5cGUgX19taW4yID0gKHkpOyAgICAgICAgICAgICAgICAgICAgICBcCi0JX19taW4xIDwgX19taW4yID8gX19taW4xOiBfX21pbjI7IH0pCi0KICNkZWZpbmUgREVGQVVMVF9FTVBUWV9TQ0FOX1NJWkUJNDA5NgogCiBzdGF0aWMgaW5saW5lIHVpbnQzMl90IEVNUFRZX1NDQU5fU0laRSh1aW50MzJfdCBzZWN0b3Jfc2l6ZSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWRkcl9tYXAuaCBiL2luY2x1ZGUvYWRkcl9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTVmNWY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hZGRyX21hcC5oCkBAIC0wLDAgKzEsMjkgQEAKKyNpZm5kZWYgX19BRERSX01BUF9ICisjZGVmaW5lIF9fQUREUl9NQVBfSAorCisvKgorICogQ29weXJpZ2h0IDIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKK2V4dGVybiBwaHlzX2FkZHJfdCBhZGRybWFwX3ZpcnRfdG9fcGh5cyh2b2lkICp2YWRkcik7CitleHRlcm4gdW5zaWduZWQgbG9uZyBhZGRybWFwX3BoeXNfdG9fdmlydChwaHlzX2FkZHJfdCBwYWRkcik7CitleHRlcm4gdm9pZCBhZGRybWFwX3NldF9lbnRyeSh1bnNpZ25lZCBsb25nIHZhZGRyLCBwaHlzX2FkZHJfdCBwYWRkciwKKwkJCQlwaHlzX3NpemVfdCBzaXplLCBpbnQgaWR4KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL0FUOTFSTTkyMDAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvQVQ5MVJNOTIwMC5oCmluZGV4IDk1ZGIwMTcuLjAwYmFlMWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvQVQ5MVJNOTIwMC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvQVQ5MVJNOTIwMC5oCkBAIC03ODEsNSArNzgxLDMyIEBACiAjZGVmaW5lIEFUOTFDX1BJT0JfT0RSCQkoKEFUOTFfUkVHICopCTB4RkZGRkY2MTQpIC8qIChQSU9CKSBPdXRwdXQgRGlzYWJsZSBSZWdpc3RlcnIgKi8KICNkZWZpbmUgQVQ5MUNfUElPQl9QRFNSCQkoKEFUOTFfUkVHICopCTB4RkZGRkY2M0MpIC8qIChQSU9CKSBQaW4gRGF0YSBTdGF0dXMgUmVnaXN0ZXIgKi8KIAorI2Vsc2UKKy8qIGZsYXNoICovCisjZGVmaW5lIEFUOTFDX01DX1BVSUEJCTB4RkZGRkZGMTAKKyNkZWZpbmUgQVQ5MUNfTUNfUFVQCQkweEZGRkZGRjUwCisjZGVmaW5lIEFUOTFDX01DX1BVRVIJCTB4RkZGRkZGNTQKKyNkZWZpbmUgQVQ5MUNfTUNfQVNSCQkweEZGRkZGRjA0CisjZGVmaW5lIEFUOTFDX01DX0FBU1IJCTB4RkZGRkZGMDgKKyNkZWZpbmUgQVQ5MUNfRUJJX0NGR1IJCTB4RkZGRkZGNjQKKyNkZWZpbmUgQVQ5MUNfU01DX0NTUjAJCTB4RkZGRkZGNzAKKworLyogY2xvY2tzICovCisjZGVmaW5lIEFUOTFDX1BMTEFSCQkweEZGRkZGQzI4CisjZGVmaW5lIEFUOTFDX1BMTEJSCQkweEZGRkZGQzJDCisjZGVmaW5lIEFUOTFDX01DS1IJCTB4RkZGRkZDMzAKKworI2RlZmluZSBBVDkxQ19CQVNFX0NLR1IJCTB4RkZGRkZDMjAKKyNkZWZpbmUgQVQ5MUNfQ0tHUl9NT1IJCTAKKworLyogc2RyYW0gKi8KKyNkZWZpbmUgQVQ5MUNfUElPQ19BU1IJCTB4RkZGRkY4NzAKKyNkZWZpbmUgQVQ5MUNfUElPQ19CU1IJCTB4RkZGRkY4NzQKKyNkZWZpbmUgQVQ5MUNfUElPQ19QRFIJCTB4RkZGRkY4MDQKKyNkZWZpbmUgQVQ5MUNfRUJJX0NTQQkJMHhGRkZGRkY2MAorI2RlZmluZSBBVDkxQ19TRFJDX0NSCQkweEZGRkZGRjk4CisjZGVmaW5lIEFUOTFDX1NEUkNfTVIJCTB4RkZGRkZGOTAKKyNkZWZpbmUgQVQ5MUNfU0RSQ19UUgkJMHhGRkZGRkY5NAorCiAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCiAjZW5kaWYgLyogQVQ5MVJNOTIwMF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9pby5oCmluZGV4IGY0YWUzMDcuLmZlYzNhN2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9pby5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9pby5oCkBAIC01Nyw2ICs1NywxMSBAQAogCiB9CiAKK3N0YXRpYyBpbmxpbmUgcGh5c19hZGRyX3QgdmlydF90b19waHlzKHZvaWQgKiB2YWRkcikKK3sKKwlyZXR1cm4gKHBoeXNfYWRkcl90KSh2YWRkcik7Cit9CisKIC8qCiAgKiBHZW5lcmljIHZpcnR1YWwgcmVhZC93cml0ZS4gIE5vdGUgdGhhdCB3ZSBkb24ndCBzdXBwb3J0IGhhbGYtd29yZAogICogcmVhZC93cml0ZXMuICBXZSBkZWZpbmUgX19hcmNoXypbYmxdIGhlcmUsIGFuZCBsZWF2ZSBfX2FyY2hfKncKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWF2cjMyL2lvLmggYi9pbmNsdWRlL2FzbS1hdnIzMi9pby5oCmluZGV4IDA2ZTUyYjEuLjUwOTY3YWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWF2cjMyL2lvLmgKKysrIGIvaW5jbHVkZS9hc20tYXZyMzIvaW8uaApAQCAtNzYsMTIgKzc2LDEyIEBACiAjaW5jbHVkZSA8YXNtL2FkZHJzcGFjZS5oPgogCiAvKiB2aXJ0X3RvX3BoeXMgd2lsbCBvbmx5IHdvcmsgd2hlbiBhZGRyZXNzIGlzIGluIFAxIG9yIFAyICovCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGlsZSB2b2lkICphZGRyZXNzKQorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9pZCAqYWRkcmVzcykKIHsKIAlyZXR1cm4gUEhZU0FERFIoYWRkcmVzcyk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgKiBwaHlzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBhZGRyZXNzKQorc3RhdGljIGlubGluZSB2b2lkICpwaHlzX3RvX3ZpcnQocGh5c19hZGRyX3QgYWRkcmVzcykKIHsKIAlyZXR1cm4gKHZvaWQgKilQMVNFR0FERFIoYWRkcmVzcyk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9pby5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vaW8uaAppbmRleCBkYTU4OTE0Li42ODA2NDk0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9pby5oCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2lvLmgKQEAgLTY0LDYgKzY0LDExIEBACiAKIH0KIAorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9pZCAqIHZhZGRyKQoreworCXJldHVybiAocGh5c19hZGRyX3QpKHZhZGRyKTsKK30KKwogLyoKICAqIFRoZXNlIGFyZSBmb3IgSVNBL1BDSSBzaGFyZWQgbWVtb3J5IF9vbmx5XyBhbmQgc2hvdWxkIG5ldmVyIGJlIHVzZWQKICAqIG9uIGFueSBvdGhlciB0eXBlIG9mIG1lbW9yeSwgaW5jbHVkaW5nIFpvcnJvIG1lbW9yeS4gVGhleSBhcmUgbWVhbnQgdG8KZGlmZiAtLWdpdCBhL2NwdS9pMzg2L3Jlc2V0LlMgYi9pbmNsdWRlL2FzbS1pMzg2L2ludGVycnVwdC5oCnNpbWlsYXJpdHkgaW5kZXggNzUlCmNvcHkgZnJvbSBjcHUvaTM4Ni9yZXNldC5TCmNvcHkgdG8gaW5jbHVkZS9hc20taTM4Ni9pbnRlcnJ1cHQuaAppbmRleCAwN2E3Mzg0Li4zMTViNDAwIDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9yZXNldC5TCisrKyBiL2luY2x1ZGUvYXNtLWkzODYvaW50ZXJydXB0LmgKQEAgLTEsNyArMSw2IEBACiAvKgotICogIFUtYm9vdCAtIGkzODYgU3RhcnR1cCBDb2RlCi0gKgotICogIENvcHlyaWdodCAoYykgMjAwMglPbWljcm9uIENldGkgQUIsIERhbmllbCBFbmdzdHL2bSA8ZGVuYWllbEBvbWljcm9uLnNlPgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tCiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMiwxNiArMjEsOSBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0vKiBSZXNldCB2ZWN0b3IsIGp1bXBzIHRvIHN0YXJ0MTYuUyAqLworI2lmbmRlZiBfX0FTTV9JTlRFUlJVUFRfSF8KKyNkZWZpbmUgX19BU01fSU5URVJSVVBUX0hfIDEKIAotLmV4dGVybiBzdGFydDE2Cit2b2lkIHNldF92ZWN0b3IoaW50IGludG51bSwgdm9pZCAqcm91dGluZSk7CiAKLS5zZWN0aW9uIC5yZXNldCwgImF4IgotLmNvZGUxNgotcmVzZXRfdmVjdG9yOgotCWNsaQotCWNsZAotCWptcCBzdGFydDE2Ci0KLQkub3JnIDB4ZgotCW5vcAorI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pMzg2L2lvLmggYi9pbmNsdWRlL2FzbS1pMzg2L2lvLmgKaW5kZXggMmM1NzE0MC4uOWI3NTdkNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taTM4Ni9pby5oCisrKyBiL2luY2x1ZGUvYXNtLWkzODYvaW8uaApAQCAtMjI5LDQgKzIyOSw5IEBACiAKIH0KIAorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9pZCAqIHZhZGRyKQoreworCXJldHVybiAocGh5c19hZGRyX3QpKHZhZGRyKTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tNjhrL2lvLmggYi9pbmNsdWRlL2FzbS1tNjhrL2lvLmgKaW5kZXggMWZjY2MxMi4uNTBlYTA4NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbTY4ay9pby5oCisrKyBiL2luY2x1ZGUvYXNtLW02OGsvaW8uaApAQCAtMjUxLDQgKzI1MSw5IEBACiAKIH0KIAorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9pZCAqIHZhZGRyKQoreworCXJldHVybiAocGh5c19hZGRyX3QpKHZhZGRyKTsKK30KKwogI2VuZGlmCQkJCS8qIF9fQVNNX002OEtfSU9fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1taWNyb2JsYXplL2lvLmggYi9pbmNsdWRlL2FzbS1taWNyb2JsYXplL2lvLmgKaW5kZXggODgwNDcyNC4uN2UxOTBkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9pby5oCisrKyBiL2luY2x1ZGUvYXNtLW1pY3JvYmxhemUvaW8uaApAQCAtMTU1LDQgKzE1NSw5IEBACiAKIH0KIAorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9pZCAqIHZhZGRyKQoreworCXJldHVybiAocGh5c19hZGRyX3QpKHZhZGRyKTsKK30KKwogI2VuZGlmIC8qIF9fTUlDUk9CTEFaRV9JT19IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvaW8uaCBiL2luY2x1ZGUvYXNtLW1pcHMvaW8uaAppbmRleCAzYTBmMzNmLi4wMzExODZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL2lvLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9pby5oCkBAIC0xMTgsNyArMTE4LDcgQEAKICAqIENoYW5nZSB2aXJ0dWFsIGFkZHJlc3NlcyB0byBwaHlzaWNhbCBhZGRyZXNzZXMgYW5kIHZ2LgogICogVGhlc2UgYXJlIHRyaXZpYWwgb24gdGhlIDE6MSBMaW51eC9NSVBTIG1hcHBpbmcKICAqLwotZXh0ZXJuIGlubGluZSB1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykKK2V4dGVybiBpbmxpbmUgcGh5c19hZGRyX3QgdmlydF90b19waHlzKHZvaWQgKiBhZGRyZXNzKQogewogCXJldHVybiBDUEhZU0FERFIoYWRkcmVzcyk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1uaW9zL2lvLmggYi9pbmNsdWRlL2FzbS1uaW9zL2lvLmgKaW5kZXggOGI3ODgwNi4uODk5NjgyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbmlvcy9pby5oCisrKyBiL2luY2x1ZGUvYXNtLW5pb3MvaW8uaApAQCAtMTMzLDQgKzEzMyw5IEBACiAKIH0KIAorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9pZCAqIHZhZGRyKQoreworCXJldHVybiAocGh5c19hZGRyX3QpKHZhZGRyKTsKK30KKwogI2VuZGlmIC8qIF9fQVNNX05JT1NfSU9fSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW5pb3MyL2lvLmggYi9pbmNsdWRlL2FzbS1uaW9zMi9pby5oCmluZGV4IDJmMWVjMjYuLjAxZDExZWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW5pb3MyL2lvLmgKKysrIGIvaW5jbHVkZS9hc20tbmlvczIvaW8uaApAQCAtNTMsNiArNTMsMTEgQEAKIAogfQogCitzdGF0aWMgaW5saW5lIHBoeXNfYWRkcl90IHZpcnRfdG9fcGh5cyh2b2lkICogdmFkZHIpCit7CisJcmV0dXJuIChwaHlzX2FkZHJfdCkodmFkZHIpOworfQorCiBleHRlcm4gdW5zaWduZWQgY2hhciBpbmIgKHVuc2lnbmVkIGNoYXIgKnBvcnQpOwogZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludyAodW5zaWduZWQgc2hvcnQgKnBvcnQpOwogZXh0ZXJuIHVuc2lnbmVkIGlubCAodW5zaWduZWQgcG9ydCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wcGMvY3BtXzgyNjAuaCBiL2luY2x1ZGUvYXNtLXBwYy9jcG1fODI2MC5oCmluZGV4IDdlMDY5NDAuLjgzMDI0MDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBwYy9jcG1fODI2MC5oCisrKyBiL2luY2x1ZGUvYXNtLXBwYy9jcG1fODI2MC5oCkBAIC01NDYsNiArNTQ2LDM0IEBACiAKICNkZWZpbmUgQkRfU0NDX1RYX0xBU1QJCSgodXNob3J0KTB4MDgwMCkKIAorLyogIFNDQyBhcyBIRExDIGNvbnRyb2xsZXIgLSB0YWtlbiBmcm9tIGNvbW1wcm9jLmgKKyAqLwordHlwZWRlZiBzdHJ1Y3Qgc2NjX2hkbGMgeworCXNjY3BfdCAgc2hfZ2Vuc2NjOworCS8qCisJKiBIRExDIHNwZWNpZmljIHBhcmFtZXRlciBSQU0KKwkqLworCXVjaGFyICAgcmVzWzRdOyAgICAgICAgIC8qIHJlc2VydmVkICovCisJdWxvbmcgICBzaF9jbWFzazsgICAgICAgLyogQ1JDIGNvbnN0YW50ICovCisJdWxvbmcgICBzaF9jcHJlczsgICAgICAgLyogQ1JDIHByZXNldCAqLworCXVzaG9ydCAgc2hfZGlzZmM7ICAgICAgIC8qIGRpc2NhcmRlZCBmcmFtZSBjb3VudGVyICovCisJdXNob3J0ICBzaF9jcmNlYzsgICAgICAgLyogQ1JDIGVycm9yIGNvdW50ZXIgKi8KKwl1c2hvcnQgIHNoX2FidHNjOyAgICAgICAvKiBhYm9ydCBzZXF1ZW5jZSBjb3VudGVyICovCisJdXNob3J0ICBzaF9ubWFyYzsgICAgICAgLyogbm9ubWF0Y2hpbmcgYWRkcmVzcyByeCBjbnQgKi8KKwl1c2hvcnQgIHNoX3JldHJjOyAgICAgICAvKiBmcmFtZSByZXRyYW5zbWlzc2lvbiBjbnQgKi8KKwl1c2hvcnQgIHNoX21mbHI7ICAgICAgICAvKiBtYXhpbXVtIGZyYW1lIGxlbmd0aCByZWcgKi8KKwl1c2hvcnQgIHNoX21heGNudDsgICAgICAvKiBtYXhpbXVtIGxlbmd0aCBjb3VudGVyICovCisJdXNob3J0ICBzaF9yZnRocjsgICAgICAgLyogcmVjZWl2ZWQgZnJhbWVzIHRocmVzaG9sZCAqLworCXVzaG9ydCAgc2hfcmZjbnQ7ICAgICAgIC8qIHJlY2VpdmVkIGZyYW1lcyBjb3VudCAqLworCXVzaG9ydCAgc2hfaG1hc2s7ICAgICAgIC8qIHVzZXIgZGVmaW5lZCBmcm0gYWRkciBtYXNrICovCisJdXNob3J0ICBzaF9oYWRkcjE7ICAgICAgLyogdXNlciBkZWZpbmVkIGZybSBhZGRyZXNzIDEgKi8KKwl1c2hvcnQgIHNoX2hhZGRyMjsgICAgICAvKiB1c2VyIGRlZmluZWQgZnJtIGFkZHJlc3MgMiAqLworCXVzaG9ydCAgc2hfaGFkZHIzOyAgICAgIC8qIHVzZXIgZGVmaW5lZCBmcm0gYWRkcmVzcyAzICovCisJdXNob3J0ICBzaF9oYWRkcjQ7ICAgICAgLyogdXNlciBkZWZpbmVkIGZybSBhZGRyZXNzIDQgKi8KKwl1c2hvcnQgIHRtcDsgICAgICAgICAgICAvKiB0ZW1wICovCisJdXNob3J0ICB0bXBfbWI7ICAgICAgICAgLyogdGVtcCAqLworfSBzY2NfaGRsY190OworCiAvKiBIb3cgYWJvdXQgc29tZSBGQ0NzLi4uLi4KICovCiAjZGVmaW5lIEZDQ19HRk1SX0RJQUdfTk9STQkoKHVpbnQpMHgwMDAwMDAwMCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBwYy9mc2xfZGRyX3NkcmFtLmggYi9pbmNsdWRlL2FzbS1wcGMvZnNsX2Rkcl9zZHJhbS5oCmluZGV4IGMxZWE3Y2QuLmIyMTNhZjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBwYy9mc2xfZGRyX3NkcmFtLmgKKysrIGIvaW5jbHVkZS9hc20tcHBjL2ZzbF9kZHJfc2RyYW0uaApAQCAtMzQsNyArMzQsMTAgQEAKICNlbGlmIGRlZmluZWQoQ09ORklHX0ZTTF9ERFIzKQogI2RlZmluZSBGU0xfRERSX01JTl9UQ0tFX1BVTFNFX1dJRFRIX0REUgkoMykJLyogRklYTUUgKi8KIHR5cGVkZWYgZGRyM19zcGRfZWVwcm9tX3QgZ2VuZXJpY19zcGRfZWVwcm9tX3Q7CisjaWZuZGVmIENPTkZJR19GU0xfU0RSQU1fVFlQRQorI2RlZmluZSBDT05GSUdfRlNMX1NEUkFNX1RZUEUJU0RSQU1fVFlQRV9ERFIzCiAjZW5kaWYKKyNlbmRpZgkvKiAjaWYgZGVmaW5lZChDT05GSUdfRlNMX0REUjEpICovCiAKIC8qIGRlZmluZSBiYW5rKGNoaXAgc2VsZWN0KSBpbnRlcmxlYXZpbmcgbW9kZSAqLwogI2RlZmluZSBGU0xfRERSX0NTMF9DUzEJCQkweDQwCkBAIC0xNDMsNiArMTQ2LDEwIEBACiAJdW5zaWduZWQgaW50IGJzdG9wcmU7CiAJdW5zaWduZWQgaW50IHRDS0VfY2xvY2tfcHVsc2Vfd2lkdGhfcHM7CS8qIHRDS0UgKi8KIAl1bnNpZ25lZCBpbnQgdEZBV193aW5kb3dfZm91cl9hY3RpdmF0ZXNfcHM7CS8qIHRGQVcgLS0gIEZPVVJfQUNUICovCisKKwkvKiBBdXRvbWF0aWMgc2VsZiByZWZyZXNoICovCisJdW5zaWduZWQgaW50IGF1dG9fc2VsZl9yZWZyZXNoX2VuOworCXVuc2lnbmVkIGludCBzcl9pdDsKIH0gbWVtY3RsX29wdGlvbnNfdDsKIAogZXh0ZXJuIHBoeXNfc2l6ZV90IGZzbF9kZHJfc2RyYW0odm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wcGMvZnNsX2xiYy5oIGIvaW5jbHVkZS9hc20tcHBjL2ZzbF9sYmMuaAppbmRleCA1MWZjNWMxLi45ZmEwYjY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wcGMvZnNsX2xiYy5oCisrKyBiL2luY2x1ZGUvYXNtLXBwYy9mc2xfbGJjLmgKQEAgLTI4LDYgKzI4LDggQEAKIAogI2RlZmluZSBCUl9CQQkJCQkweEZGRkY4MDAwCiAjZGVmaW5lIEJSX0JBX1NISUZUCQkJMTUKKyNkZWZpbmUgQlJfWEJBCQkJCTB4MDAwMDYwMDAKKyNkZWZpbmUgQlJfWEJBX1NISUZUCQkJMTMKICNkZWZpbmUgQlJfUFMJCQkJMHgwMDAwMTgwMAogI2RlZmluZSBCUl9QU19TSElGVAkJCTExCiAjZGVmaW5lIEJSX1BTXzgJCQkJMHgwMDAwMDgwMAkvKiBQb3J0IFNpemUgOCBiaXQgKi8KQEAgLTcwLDcgKzcyLDcgQEAKICNlbmRpZgogCiAvKiBDb252ZXJ0IGFuIGFkZHJlc3MgaW50byB0aGUgcmlnaHQgZm9ybWF0IGZvciB0aGUgQlIgcmVnaXN0ZXJzICovCi0jaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNpZiBkZWZpbmVkKENPTkZJR19QSFlTXzY0QklUKSAmJiAhZGVmaW5lZChDT05GSUdfRlNMX0VMQkMpCiAjZGVmaW5lIEJSX1BIWVNfQUREUih4KQkoKHVuc2lnbmVkIGxvbmcpKCh4ICYgMHgwZmZmZjgwMDBVTEwpIHwgXAogCQkJCQkgKCh4ICYgMHgzMDAwMDAwMDBVTEwpID4+IDE5KSkpCiAjZWxzZQpAQCAtOTAsNiArOTIsOCBAQAogCiAjZGVmaW5lIE9SX0dQQ01fQU0JCQkweEZGRkY4MDAwCiAjZGVmaW5lIE9SX0dQQ01fQU1fU0hJRlQJCTE1CisjZGVmaW5lIE9SX0dQQ01fWEFNCQkJMHgwMDAwNjAwMAorI2RlZmluZSBPUl9HUENNX1hBTV9TSElGVAkJMTMKICNkZWZpbmUgT1JfR1BDTV9CQ1RMRAkJCTB4MDAwMDEwMDAKICNkZWZpbmUgT1JfR1BDTV9CQ1RMRF9TSElGVAkJMTIKICNkZWZpbmUgT1JfR1BDTV9DU05UCQkJMHgwMDAwMDgwMApAQCAtMTMyLDYgKzEzNiw4IEBACiAKICNkZWZpbmUgT1JfRkNNX0FNCQkJMHhGRkZGODAwMAogI2RlZmluZSBPUl9GQ01fQU1fU0hJRlQJCQkJMTUKKyNkZWZpbmUgT1JfRkNNX1hBTQkJCTB4MDAwMDYwMDAKKyNkZWZpbmUgT1JfRkNNX1hBTV9TSElGVAkJMTMKICNkZWZpbmUgT1JfRkNNX0JDVExECQkJMHgwMDAwMTAwMAogI2RlZmluZSBPUl9GQ01fQkNUTERfU0hJRlQJCQkxMgogI2RlZmluZSBPUl9GQ01fUEdTCQkJMHgwMDAwMDQwMApAQCAtMzAwLDcgKzMwNiwxMCBAQAogI2RlZmluZSBMQ1JSX0VBRENfMgkJCTB4MDAwMjAwMDAKICNkZWZpbmUgTENSUl9FQURDXzMJCQkweDAwMDMwMDAwCiAjZGVmaW5lIExDUlJfRUFEQ180CQkJMHgwMDAwMDAwMAotI2RlZmluZSBMQ1JSX0NMS0RJVgkJCTB4MDAwMDAwMEYKKy8qIENMS0RJViBpcyBmaXZlIGJpdHMgb25seSBvbiA4NTM2LCA4NTcyLCBhbmQgODYxMCwgc28gZmFyLCBidXQgdGhlIGZpZnRoIGJpdAorICogc2hvdWxkIGFsd2F5cyBiZSB6ZXJvIG9uIG9sZGVyIHBhcnRzIHRoYXQgaGF2ZSBhIGZvdXIgYml0IENMS0RJVi4KKyAqLworI2RlZmluZSBMQ1JSX0NMS0RJVgkJCTB4MDAwMDAwMUYKICNkZWZpbmUgTENSUl9DTEtESVZfU0hJRlQJCTAKICNkZWZpbmUgTENSUl9DTEtESVZfMgkJCTB4MDAwMDAwMDIKICNkZWZpbmUgTENSUl9DTEtESVZfNAkJCTB4MDAwMDAwMDQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBwYy9nbG9iYWxfZGF0YS5oIGIvaW5jbHVkZS9hc20tcHBjL2dsb2JhbF9kYXRhLmgKaW5kZXggYWFkZTA5Ny4uZTVhM2IyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL2dsb2JhbF9kYXRhLmgKKysrIGIvaW5jbHVkZS9hc20tcHBjL2dsb2JhbF9kYXRhLmgKQEAgLTc1LDcgKzc1LDcgQEAKIAl1MzIgbGJpdV9jbGs7CiAJdTMyIGxjbGtfY2xrOwogCXUzMiBwY2lfY2xrOwotI2lmIGRlZmluZWQoQ09ORklHX01QQzgzN1gpCisjaWYgZGVmaW5lZChDT05GSUdfTVBDODM3WCkgfHwgZGVmaW5lZChDT05GSUdfTVBDODMxWCkKIAl1MzIgcGNpZXhwMV9jbGs7CiAJdTMyIHBjaWV4cDJfY2xrOwogI2VuZGlmCkBAIC04OSw2ICs4OSw5IEBACiAjaWYgZGVmaW5lZChDT05GSUdfTVBDODM3WCkgfHwgZGVmaW5lZChDT05GSUdfTVBDODUzNikKIAl1MzIgc2RoY19jbGs7CiAjZW5kaWYKKyNpZiBkZWZpbmVkKENPTkZJR19NUEM4NXh4KSB8fCBkZWZpbmVkKENPTkZJR19NUEM4Nnh4KQorCXUzMiBsYmNfY2xrOworI2VuZGlmIC8qIENPTkZJR19NUEM4NXh4IHx8IENPTkZJR19NUEM4Nnh4ICovCiAjaWYgZGVmaW5lZChDT05GSUdfTVBDODNYWCkgfHwgZGVmaW5lZChDT05GSUdfTVBDODV4eCkgfHwgZGVmaW5lZChDT05GSUdfTVBDODZ4eCkKIAl1MzIgaTJjMV9jbGs7CiAJdTMyIGkyYzJfY2xrOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL2ltbWFwXzgzeHguaCBiL2luY2x1ZGUvYXNtLXBwYy9pbW1hcF84M3h4LmgKaW5kZXggZGYyNGE2ZS4uNzdjMDlkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL2ltbWFwXzgzeHguaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvaW1tYXBfODN4eC5oCkBAIC01MiwyMyArNTIsMjggQEAKIAlsYXc4M3h4X3QgbGJsYXdbNF07CS8qIExCSVUgbG9jYWwgYWNjZXNzIHdpbmRvdyAqLwogCXU4IHJlczJbMHgyMF07CiAJbGF3ODN4eF90IHBjaWxhd1syXTsJLyogUENJIGxvY2FsIGFjY2VzcyB3aW5kb3cgKi8KLQl1OCByZXMzWzB4MzBdOworCXU4IHJlczNbMHgxMF07CisJbGF3ODN4eF90IHBjaWVsYXdbMl07CS8qIFBDSSBFeHByZXNzIGxvY2FsIGFjY2VzcyB3aW5kb3cgKi8KKwl1OCByZXM0WzB4MTBdOwogCWxhdzgzeHhfdCBkZHJsYXdbMl07CS8qIEREUiBsb2NhbCBhY2Nlc3Mgd2luZG93ICovCi0JdTggcmVzNFsweDUwXTsKKwl1OCByZXM1WzB4NTBdOwogCXUzMiBzZ3BybDsJCS8qIFN5c3RlbSBHZW5lcmFsIFB1cnBvc2UgUmVnaXN0ZXIgTG93ICovCiAJdTMyIHNncHJoOwkJLyogU3lzdGVtIEdlbmVyYWwgUHVycG9zZSBSZWdpc3RlciBIaWdoICovCiAJdTMyIHNwcmlkcjsJCS8qIFN5c3RlbSBQYXJ0IGFuZCBSZXZpc2lvbiBJRCBSZWdpc3RlciAqLwotCXU4IHJlczVbMHgwNF07CisJdTggcmVzNlsweDA0XTsKIAl1MzIgc3BjcjsJCS8qIFN5c3RlbSBQcmlvcml0eSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCiAJdTMyIHNpY3JsOwkJLyogU3lzdGVtIEkvTyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIExvdyAqLwogCXUzMiBzaWNyaDsJCS8qIFN5c3RlbSBJL08gQ29uZmlndXJhdGlvbiBSZWdpc3RlciBIaWdoICovCi0JdTggcmVzNlsweDA0XTsKKwl1OCByZXM3WzB4MDRdOwogCXUzMiBzaWRjcjA7CQkvKiBTeXN0ZW0gSS9PIERlbGF5IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMCAqLwogCXUzMiBzaWRjcjE7CQkvKiBTeXN0ZW0gSS9PIERlbGF5IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMSAqLwogCXUzMiBkZHJjZHI7CQkvKiBERFIgQ29udHJvbCBEcml2ZXIgUmVnaXN0ZXIgKi8KIAl1MzIgZGRyZHNyOwkJLyogRERSIERlYnVnIFN0YXR1cyBSZWdpc3RlciAqLwogCXUzMiBvYmlyOwkJLyogT3V0cHV0IEJ1ZmZlciBJbXBlZGFuY2UgUmVnaXN0ZXIgKi8KLQl1OCByZXM3WzB4Q0NdOworCXU4IHJlczhbMHhDXTsKKwl1MzIgcGVjcjE7CQkvKiBQQ0kgRXhwcmVzcyBjb250cm9sIHJlZ2lzdGVyIDEgKi8KKwl1MzIgcGVjcjI7CQkvKiBQQ0kgRXhwcmVzcyBjb250cm9sIHJlZ2lzdGVyIDIgKi8KKwl1OCByZXM5WzB4QjhdOwogfSBzeXNjb25mODN4eF90OwogCiAvKgpAQCAtNTAzLDggKzUwOCwxMTAgQEAKIC8qCiAgKiAgUENJIEV4cHJlc3MKICAqLworc3RydWN0IHBleF9pbmJvdW5kX3dpbmRvdyB7CisJdTMyIGFyOworCXUzMiB0YXI7CisJdTMyIGJhcmw7CisJdTMyIGJhcmg7Cit9OworCitzdHJ1Y3QgcGV4X291dGJvdW5kX3dpbmRvdyB7CisJdTMyIGFyOworCXUzMiBiYXI7CisJdTMyIHRhcmw7CisJdTMyIHRhcmg7Cit9OworCitzdHJ1Y3QgcGV4X2NzYl9icmlkZ2UgeworCXUzMiBwZXhfY3NiX3ZlcjsKKwl1MzIgcGV4X2NzYl9jYWI7CisJdTMyIHBleF9jc2JfY3RybDsKKwl1OCByZXMwWzhdOworCXUzMiBwZXhfZG1zX2RzdG1yOworCXU4IHJlczFbNF07CisJdTMyIHBleF9jYnNfc3RhdDsKKwl1OCByZXMyWzB4MjBdOworCXUzMiBwZXhfY3NiX29iY3RybDsKKwl1MzIgcGV4X2NzYl9vYnN0YXQ7CisJdTggcmVzM1sweDk4XTsKKwl1MzIgcGV4X2NzYl9pYmN0cmw7CisJdTMyIHBleF9jc2JfaWJzdGF0OworCXU4IHJlczRbMHhiOF07CisJdTMyIHBleF93ZG1hX2N0cmw7CisJdTMyIHBleF93ZG1hX2FkZHI7CisJdTMyIHBleF93ZG1hX3N0YXQ7CisJdTggcmVzNVsweDk0XTsKKwl1MzIgcGV4X3JkbWFfY3RybDsKKwl1MzIgcGV4X3JkbWFfYWRkcjsKKwl1MzIgcGV4X3JkbWFfc3RhdDsKKwl1OCByZXM2WzB4ZDRdOworCXUzMiBwZXhfb21iY3I7CisJdTMyIHBleF9vbWJkcjsKKwl1OCByZXM3WzB4MzhdOworCXUzMiBwZXhfaW1iY3I7CisJdTMyIHBleF9pbWJkcjsKKwl1OCByZXM4WzB4MzhdOworCXUzMiBwZXhfaW50X2VuYjsKKwl1MzIgcGV4X2ludF9zdGF0OworCXUzMiBwZXhfaW50X2FwaW9fdmVjMTsKKwl1MzIgcGV4X2ludF9hcGlvX3ZlYzI7CisJdTggcmVzOVsweDEwXTsKKwl1MzIgcGV4X2ludF9wcGlvX3ZlYzE7CisJdTMyIHBleF9pbnRfcHBpb192ZWMyOworCXUzMiBwZXhfaW50X3dkbWFfdmVjMTsKKwl1MzIgcGV4X2ludF93ZG1hX3ZlYzI7CisJdTMyIHBleF9pbnRfcmRtYV92ZWMxOworCXUzMiBwZXhfaW50X3JkbWFfdmVjMjsKKwl1MzIgcGV4X2ludF9taXNjX3ZlYzsKKwl1OCByZXMxMFs0XTsKKwl1MzIgcGV4X2ludF9heGlfcGlvX2VuYjsKKwl1MzIgcGV4X2ludF9heGlfd2RtYV9lbmI7CisJdTMyIHBleF9pbnRfYXhpX3JkbWFfZW5iOworCXUzMiBwZXhfaW50X2F4aV9taXNjX2VuYjsKKwl1MzIgcGV4X2ludF9heGlfcGlvX3N0YXQ7CisJdTMyIHBleF9pbnRfYXhpX3dkbWFfc3RhdDsKKwl1MzIgcGV4X2ludF9heGlfcmRtYV9zdGF0OworCXUzMiBwZXhfaW50X2F4aV9taXNjX3N0YXQ7CisJdTggcmVzMTFbMHhhMF07CisJc3RydWN0IHBleF9vdXRib3VuZF93aW5kb3cgcGV4X291dGJvdW5kX3dpbls0XTsKKwl1OCByZXMxMlsweDEwMF07CisJdTMyIHBleF9lcGl3dGFyMDsKKwl1MzIgcGV4X2VwaXd0YXIxOworCXUzMiBwZXhfZXBpd3RhcjI7CisJdTMyIHBleF9lcGl3dGFyMzsKKwl1OCByZXMxM1sweDcwXTsKKwlzdHJ1Y3QgcGV4X2luYm91bmRfd2luZG93IHBleF9pbmJvdW5kX3dpbls0XTsKK307CisKIHR5cGVkZWYgc3RydWN0IHBleDgzeHggewotCXU4IGZpeG1lWzB4MTAwMF07CisJdTggcGV4X2NmZ19oZWFkZXJbMHg0MDRdOworCXUzMiBwZXhfbHRzc21fc3RhdDsKKwl1OCByZXMwWzB4MzBdOworCXUzMiBwZXhfYWNrX3JlcGxheV90aW1lb3V0OworCXU4IHJlczFbNF07CisJdTMyIHBleF9nY2xrX3JhdGlvOworCXU4IHJlczJbMHhjXTsKKwl1MzIgcGV4X3BtX3RpbWVyOworCXUzMiBwZXhfcG1lX3RpbWVvdXQ7CisJdTggcmVzM1s0XTsKKwl1MzIgcGV4X2FzcG1fcmVxX3RpbWVyOworCXU4IHJlczRbMHgxOF07CisJdTMyIHBleF9zc3ZpZF91cGRhdGU7CisJdTggcmVzNVsweDM0XTsKKwl1MzIgcGV4X2NmZ19yZWFkeTsKKwl1OCByZXM2WzB4MjRdOworCXUzMiBwZXhfYmFyX3NpemVsOworCXU4IHJlczdbNF07CisJdTMyIHBleF9iYXJfc2VsOworCXU4IHJlczhbMHgyMF07CisJdTMyIHBleF9iYXJfcGY7CisJdTggcmVzOVsweDg4XTsKKwl1MzIgcGV4X3BtZV90b19hY2tfdG9yOworCXU4IHJlczEwWzB4Y107CisJdTMyIHBleF9zc19pbnRyX21hc2s7CisJdTggcmVzMTFbMHgyNWNdOworCXN0cnVjdCBwZXhfY3NiX2JyaWRnZSBicmlkZ2U7CisJdTggcmVzMTJbMHgxNjBdOwogfSBwZXg4M3h4X3Q7CiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wcGMvaW8uaCBiL2luY2x1ZGUvYXNtLXBwYy9pby5oCmluZGV4IGMzNDk2ODEuLjRkZGFkMjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBwYy9pby5oCisrKyBiL2luY2x1ZGUvYXNtLXBwYy9pby5oCkBAIC0xMCw2ICsxMCwxMCBAQAogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KIAorI2lmZGVmIENPTkZJR19BRERSX01BUAorI2luY2x1ZGUgPGFkZHJfbWFwLmg+CisjZW5kaWYKKwogI2RlZmluZSBTSU9fQ09ORklHX1JBICAgMHgzOTgKICNkZWZpbmUgU0lPX0NPTkZJR19SRCAgIDB4Mzk5CiAKQEAgLTI4Nyw3ICsyOTEsMTEgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqCiBtYXBfcGh5c21lbShwaHlzX2FkZHJfdCBwYWRkciwgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CisjaWZkZWYgQ09ORklHX0FERFJfTUFQCisJcmV0dXJuICh2b2lkICopKGFkZHJtYXBfcGh5c190b192aXJ0KHBhZGRyKSk7CisjZWxzZQogCXJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZylwYWRkcik7CisjZW5kaWYKIH0KIAogLyoKQEAgLTI5OCw0ICszMDYsMTMgQEAKIAogfQogCitzdGF0aWMgaW5saW5lIHBoeXNfYWRkcl90IHZpcnRfdG9fcGh5cyh2b2lkICogdmFkZHIpCit7CisjaWZkZWYgQ09ORklHX0FERFJfTUFQCisJcmV0dXJuIGFkZHJtYXBfdmlydF90b19waHlzKHZhZGRyKTsKKyNlbHNlCisJcmV0dXJuIChwaHlzX2FkZHJfdCkoKHVuc2lnbmVkIGxvbmcpdmFkZHIpOworI2VuZGlmCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL21tdS5oIGIvaW5jbHVkZS9hc20tcHBjL21tdS5oCmluZGV4IDg5NzVlNmMuLjZkOTQyZDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBwYy9tbXUuaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvbW11LmgKQEAgLTQzMSw2ICs0MzEsOSBAQAogZXh0ZXJuIHZvaWQgZGlzYWJsZV90bGIodTggZXNlbCk7CiBleHRlcm4gdm9pZCBpbnZhbGlkYXRlX3RsYih1OCB0bGIpOwogZXh0ZXJuIHZvaWQgaW5pdF90bGJzKHZvaWQpOworI2lmZGVmIENPTkZJR19BRERSX01BUAorZXh0ZXJuIHZvaWQgaW5pdF9hZGRyX21hcCh2b2lkKTsKKyNlbmRpZgogZXh0ZXJuIHVuc2lnbmVkIGludCBzZXR1cF9kZHJfdGxicyh1bnNpZ25lZCBpbnQgbWVtc2l6ZV9pbl9tZWcpOwogCiAjZGVmaW5lIFNFVF9UTEJfRU5UUlkoX3RsYiwgX2VwbiwgX3JwbiwgX3Blcm1zLCBfd2ltZ2UsIF90cywgX2VzZWwsIF9zeiwgX2lwcm90KSBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9jcHVfc2g0LmggYi9pbmNsdWRlL2FzbS1zaC9jcHVfc2g0LmgKaW5kZXggYjZjYzZjZi4uZDJkYmZjZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc2gvY3B1X3NoNC5oCisrKyBiL2luY2x1ZGUvYXNtLXNoL2NwdV9zaDQuaApAQCAtMjYsOCArMjYsMTUgQEAKICNkZWZpbmUgQ0NSX0NBQ0hFX0lDSSAgICAweDAwMDAwODAwCiAKICNkZWZpbmUgQ0FDSEVfT0NfQUREUkVTU19BUlJBWQkweGY0MDAwMDAwCisKKyNpZiBkZWZpbmVkIChDT05GSUdfQ1BVX1NINzc1MCkgfHwgXAorCWRlZmluZWQoQ09ORklHX0NQVV9TSDc3NTEpCiAjZGVmaW5lIENBQ0hFX09DX1dBWV9TSElGVAkxNAogI2RlZmluZSBDQUNIRV9PQ19OVU1fRU5UUklFUwk1MTIKKyNlbHNlCisjZGVmaW5lIENBQ0hFX09DX1dBWV9TSElGVAkxMworI2RlZmluZSBDQUNIRV9PQ19OVU1fRU5UUklFUwkyNTYKKyNlbmRpZgogI2RlZmluZSBDQUNIRV9PQ19FTlRSWV9TSElGVAk1CiAKICNpZiBkZWZpbmVkIChDT05GSUdfQ1BVX1NINzc1MCkgfHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc2gvaW8uaCBiL2luY2x1ZGUvYXNtLXNoL2lvLmgKaW5kZXggYWRjM2Y4MS4uY2E1OThhNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc2gvaW8uaAorKysgYi9pbmNsdWRlL2FzbS1zaC9pby5oCkBAIC0yNjEsNSArMjYxLDEwIEBACiAKIH0KIAorc3RhdGljIGlubGluZSBwaHlzX2FkZHJfdCB2aXJ0X3RvX3BoeXModm9pZCAqIHZhZGRyKQoreworCXJldHVybiAocGh5c19hZGRyX3QpKHZhZGRyKTsKK30KKwogI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KICNlbmRpZgkvKiBfX0FTTV9TSF9JT19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaC9tYWNyby5oIGIvaW5jbHVkZS9hc20tc2gvbWFjcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWY3OTJhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tc2gvbWFjcm8uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fTUFDUk9fSF9fCisjZGVmaW5lIF9fTUFDUk9fSF9fCisjaWZkZWYgX19BU1NFTUJMWV9fCisKKy5tYWNybwl3cml0ZTMyLCBhZGRyLCBkYXRhCisJbW92LmwgXGFkZHIgLHIxCisJbW92LmwgXGRhdGEgLHIwCisJbW92LmwgcjAsIEByMQorLmVuZG0KKworLm1hY3JvCXdyaXRlMTYsIGFkZHIsIGRhdGEKKwltb3YubCBcYWRkciAscjEKKwltb3YubCBcZGF0YSAscjAKKwltb3YudyByMCwgQHIxCisuZW5kbQorCisubWFjcm8Jd3JpdGU4LCBhZGRyLCBkYXRhCisJbW92LmwgXGFkZHIgLHIxCisJbW92LmwgXGRhdGEgLHIwCisJbW92LmIgcjAsIEByMQorLmVuZG0KKworLm1hY3JvCXdhaXRfdGltZXIsIHRpbWUKKwltb3YubAlcdGltZSAscjMKKzE6CisJbm9wCisJdHN0CXIzLCByMworCWJmL3MJMWIKKwlkdAlyMworLmVuZG0KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIF9fTUFDUk9fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zcGFyYy9pby5oIGIvaW5jbHVkZS9hc20tc3BhcmMvaW8uaAppbmRleCA1ZjhkMDVjLi4wYzVkODZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYy9pby5oCisrKyBiL2luY2x1ZGUvYXNtLXNwYXJjL2lvLmgKQEAgLTkwLDQgKzkwLDkgQEAKIAogfQogCitzdGF0aWMgaW5saW5lIHBoeXNfYWRkcl90IHZpcnRfdG9fcGh5cyh2b2lkICogdmFkZHIpCit7CisJcmV0dXJuIChwaHlzX2FkZHJfdCkodmFkZHIpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BU0g0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9BU0g0MDUuaAppbmRleCBhNjk0MDgzLi5hMTFhOWI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQVNINDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FTSDQwNS5oCkBAIC0xNTAsNyArMTUwLDYgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRV9MSVNUCXsgQ09ORklHX1NZU19OQU5EX0JBU0UgfQotI2RlZmluZSBOQU5EX01BWF9DSElQUyAgICAgICAgICAxCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEgICAgICAgICAvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcyAqLwogI2RlZmluZSBOQU5EX0JJR19ERUxBWV9VUwkyNQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQVRVTTg1NDguaCBiL2luY2x1ZGUvY29uZmlncy9BVFVNODU0OC5oCmluZGV4IDFiNzQ1MjYuLjdlZTA1ZTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9BVFVNODU0OC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BVFVNODU0OC5oCkBAIC02Nyw3ICs2Nyw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0wyX0NBQ0hFCQkJLyogdG9nZ2xlIEwyIGNhY2hlICovCiAjZGVmaW5lIENPTkZJR19CVEIJCQkvKiB0b2dnbGUgYnJhbmNoIHByZWRpdGlvbiAqLwotI2RlZmluZSBDT05GSUdfQUREUl9TVFJFQU1JTkcJCS8qIHRvZ2dsZSBhZGRyIHN0cmVhbWluZyAqLwogI2RlZmluZSBDT05GSUdfQ0xFQVJfTEFXMAkJLyogQ2xlYXIgTEFXMCBpbiBjcHVfaW5pdF9yICovCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ0FUY2VudGVyLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ0FUY2VudGVyLmgKaW5kZXggYTQ0ZjNlMS4uMWUzNjY2MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NBVGNlbnRlci5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DQVRjZW50ZXIuaApAQCAtMjE5LDcgKzIxOSw2IEBACiAKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUyAxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTIDEKIAogI2RlZmluZSBDT05GSUdfU1lTX05BTkQwX0NFICAoMHg4MDAwMDAwMCA+PiAxKQkgLyogb3VyIENFIGlzIEdQSU8xICovCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORDBfQ0xFICgweDgwMDAwMDAwID4+IDIpCSAvKiBvdXIgQ0xFIGlzIEdQSU8yICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ01TNzAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ01TNzAwLmgKaW5kZXggZDBlMjQ2NC4uZWViY2UzOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NNUzcwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DTVM3MDAuaApAQCAtMTU3LDcgKzE1Nyw2IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVAl7IENPTkZJR19TWVNfTkFORF9CQVNFIH0KLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgICAgICAgICAgMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxICAgICAgICAgLyogTWF4IG51bWJlciBvZiBOQU5EIGRldmljZXMgKi8KICNkZWZpbmUgTkFORF9CSUdfREVMQVlfVVMJMjUKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1LmgKaW5kZXggMWEyYmMxYy4uODliYTEzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNS5oCkBAIC0xOTYsOSArMTk2LDkgQEAKICAqIFBsZWFzZSBub3RlIHRoYXQgQ09ORklHX1NZU19TRFJBTV9CQVNFIF9tdXN0XyBzdGFydCBhdCAwCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRQkJMHhGRkZEMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX0ZMQVNIX0JBU0UKLSNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDE5MiAqIDEwMjQpCS8qIFJlc2VydmUgMTk2IGtCIGZvciBNb25pdG9yCSovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRQkJVEVYVF9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCQlURVhUX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKH4oVEVYVF9CQVNFKSArIDEpCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEyOCAqIDEwMjQpCS8qIFJlc2VydmUgMTI4IGtCIGZvciBtYWxsb2MoKQkqLwogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUyLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaAppbmRleCBlMjMxZmE3Li5kMGI0ZDExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaApAQCAtMjE2LDYgKzIxNiw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uaXRvcgkqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMjggKiAxMDI0KQkvKiBSZXNlcnZlIDEyOCBrQiBmb3IgbWFsbG9jKCkJKi8KIAorI2RlZmluZSBDT05GSUdfUFJBTQkJMAkvKiB1c2UgcHJhbSB2YXJpYWJsZSB0byBvdmVyd3JpdGUgKi8KKwogLyoKICAqIEZvciBib290aW5nIExpbnV4LCB0aGUgYm9hcmQgaW5mbyBhbmQgY29tbWFuZCBsaW5lIGRhdGEKICAqIGhhdmUgdG8gYmUgaW4gdGhlIGZpcnN0IDggTUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNUFCLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNUFCLmgKaW5kZXggMjMxOWM1OC4uNjljOGM2ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDVBQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1QUIuaApAQCAtOTIsNiArOTIsNyBAQAogI2RlZmluZSBDT05GSUdfQ01EX0kyQwogI2RlZmluZSBDT05GSUdfQ01EX01JSQogI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKKyNkZWZpbmUgQ09ORklHX0NNRF9CU1AKICNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KIAogCkBAIC0yMTIsNiArMjEzLDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCS8qIFJlc2VydmUgMjU2IGtCIGZvciBNb25pdG9yCSovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDI1NiAqIDEwMjQpCS8qIFJlc2VydmUgMjU2IGtCIGZvciBtYWxsb2MoKQkqLwogCisjZGVmaW5lIENPTkZJR19QUkFNCQkwCS8qIHVzZSBwcmFtIHZhcmlhYmxlIHRvIG92ZXJ3cml0ZSAqLworCiAvKgogICogRm9yIGJvb3RpbmcgTGludXgsIHRoZSBib2FyZCBpbmZvIGFuZCBjb21tYW5kIGxpbmUgZGF0YQogICogaGF2ZSB0byBiZSBpbiB0aGUgZmlyc3QgOCBNQiBvZiBtZW1vcnksIHNpbmNlIHRoaXMgaXMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9EVTQ0MC5oIGIvaW5jbHVkZS9jb25maWdzL0RVNDQwLmgKaW5kZXggNzI5MTUzYy4uODVjMGU2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0RVNDQwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0RVNDQwLmgKQEAgLTQxMSw3ICs0MTEsNiBAQAogICogTkFORCBGTEFTSAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTIKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCUNPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9TRUxFQ1RfREVWSUNFICAxCS8qIG5hbmQgZHJpdmVyIHN1cHBvcnRzIG11dGlwbC4gY2hpcHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVAl7Q09ORklHX1NZU19OQU5EMF9BRERSICsgQ09ORklHX1NZU19OQU5EMF9DUywgXAogCQkJCSBDT05GSUdfU1lTX05BTkQxX0FERFIgKyBDT05GSUdfU1lTX05BTkQxX0NTfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0cyMDAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvRzIwMDAuaAppbmRleCBkMjk5MDQ0Li5iNDQ1ZmFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRzIwMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRzIwMDAuaApAQCAtMjA1LDcgKzIwNSw2IEBACiAKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUyAxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTIDEKIAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQ0UgICgweDgwMDAwMDAwID4+IDEpCS8qIG91ciBDRSBpcyBHUElPMSAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQ0xFICgweDgwMDAwMDAwID4+IDIpCS8qIG91ciBDTEUgaXMgR1BJTzIgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ISDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL0hINDA1LmgKaW5kZXggODBlNTliYi4uZTVkZThlZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0hINDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0hINDA1LmgKQEAgLTIwOSw3ICsyMDksNiBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFX0xJU1QJeyBDT05GSUdfU1lTX05BTkRfQkFTRSB9Ci0jZGVmaW5lIE5BTkRfTUFYX0NISVBTICAgICAgICAgIDEKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMSAgICAgICAgIC8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzICovCiAjZGVmaW5lIE5BTkRfQklHX0RFTEFZX1VTCTI1CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9IVUI0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9IVUI0MDUuaAppbmRleCBiM2M3MDQ2Li4xMTA2YjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSFVCNDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0hVQjQwNS5oCkBAIC0xNDksNyArMTQ5LDYgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRV9MSVNUCXsgQ09ORklHX1NZU19OQU5EX0JBU0UgfQotI2RlZmluZSBOQU5EX01BWF9DSElQUyAgICAgICAgICAxCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEgICAgICAgICAvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcyAqLwogI2RlZmluZSBOQU5EX0JJR19ERUxBWV9VUwkyNQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvSURTODI0Ny5oIGIvaW5jbHVkZS9jb25maWdzL0lEUzgyNDcuaAppbmRleCBhNjEwYWM5Li5mYmNiZGRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSURTODI0Ny5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9JRFM4MjQ3LmgKQEAgLTI3NSw3ICsyNzUsNiBAQAogCiAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04gICAgIDB4MDAKICNkZWZpbmUgTkFORF9NQVhfRkxPT1JTIDEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgMQogCiAjZGVmaW5lIE5BTkRfRElTQUJMRV9DRShuYW5kKSBkbyBcCiB7IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTMyOUVWQi5oIGIvaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmgKaW5kZXggYzIwNzk0Ny4uMWYxNTg2YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmgKQEAgLTIxNSw3ICsyMTUsNiBAQAogIwlkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCUNPTkZJR19TWVNfQ1MyX0JBU0UKICMJZGVmaW5lIENPTkZJR19TWVNfTkFORF9TSVpFCQkxCiAjCWRlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRV9MSVNUCXsgQ09ORklHX1NZU19OQU5EX0JBU0UgfQotIwlkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICMJZGVmaW5lIE5BTkRfQUxMT1dfRVJBU0VfQUxMCTEKICMJZGVmaW5lIENPTkZJR19KRkZTMl9OQU5ECTEKICMJZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJCSJuYW5kMCIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTM3M0VWQi5oIGIvaW5jbHVkZS9jb25maWdzL001MzczRVZCLmgKaW5kZXggYTFiYzMyYS4uMTk5MTY4NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MzczRVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MzczRVZCLmgKQEAgLTIxNSw3ICsyMTUsNiBAQAogIwlkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCUNPTkZJR19TWVNfQ1MyX0JBU0UKICMJZGVmaW5lIENPTkZJR19TWVNfTkFORF9TSVpFCQkxCiAjCWRlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRV9MSVNUCXsgQ09ORklHX1NZU19OQU5EX0JBU0UgfQotIwlkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICMJZGVmaW5lIE5BTkRfQUxMT1dfRVJBU0VfQUxMCTEKICMJZGVmaW5lIENPTkZJR19KRkZTMl9OQU5ECTEKICMJZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJCSJuYW5kMCIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzEzRVJEQi5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMTNFUkRCLmgKaW5kZXggZmMzZmExMy4uNThhMjZlMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzMTNFUkRCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMTNFUkRCLmgKQEAgLTIzMiw3ICsyMzIsNiBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCiAjZGVmaW5lIENPTkZJR19DTURfTkFORCAxCiAjZGVmaW5lIENPTkZJR19OQU5EX0ZTTF9FTEJDIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzE1RVJEQi5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmgKaW5kZXggYWRkNjVmMC4uYTA0ODY4ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmgKQEAgLTE2Niw3ICsxNjYsNyBAQAogI3VuZGVmIENPTkZJR19TWVNfUkFNQk9PVAogI2VuZGlmCiAKLSNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpIC8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDM4NCAqIDEwMjQpIC8qIFJlc2VydmUgMzg0IGtCIGZvciBNb24gKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoNTEyICogMTAyNCkgLyogUmVzZXJ2ZWQgZm9yIG1hbGxvYyAqLwogCiAvKgpAQCAtMjIzLDE1ICsyMjMsMTYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHhFMDYwMDAwMAkvKiAweEUwNjAwMDAwICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKLSNkZWZpbmUgQ09ORklHX01URF9OQU5EX1ZFUklGWV9XUklURQorI2RlZmluZSBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCTEKKyNkZWZpbmUgQ09ORklHX0NNRF9OQU5ECQkJMQorI2RlZmluZSBDT05GSUdfTkFORF9GU0xfRUxCQwkJMQogCi0jZGVmaW5lIENPTkZJR19TWVNfQlIxX1BSRUxJTQkJKCBDT05GSUdfU1lTX05BTkRfQkFTRSBcCisjZGVmaW5lIENPTkZJR19TWVNfQlIxX1BSRUxJTQkoIENPTkZJR19TWVNfTkFORF9CQVNFIFwKIAkJCQl8ICgyPDxCUl9ERUNDX1NISUZUKQkvKiBVc2UgSFcgRUNDICovIFwKIAkJCQl8IEJSX1BTXzgJCS8qIFBvcnQgU2l6ZSA9IDggYml0ICovIFwKIAkJCQl8IEJSX01TX0ZDTQkJLyogTVNFTCA9IEZDTSAqLyBcCiAJCQkJfCBCUl9WICkJCS8qIHZhbGlkICovCi0jZGVmaW5lIENPTkZJR19TWVNfT1IxX1BSRUxJTQkJKCAweEZGRkY4MDAwCQkvKiBsZW5ndGggMzJLICovIFwKKyNkZWZpbmUgQ09ORklHX1NZU19PUjFfUFJFTElNCSggMHhGRkZGODAwMAkJLyogbGVuZ3RoIDMySyAqLyBcCiAJCQkJfCBPUl9GQ01fQ1NDVCBcCiAJCQkJfCBPUl9GQ01fQ1NUIFwKIAkJCQl8IE9SX0ZDTV9DSFQgXApAQCAtMzA4LDggKzMwOSwyOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1BDSV9TTFZfTUVNX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJX1NMVl9NRU1fU0laRQkweDgwMDAwMDAwCiAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9CQVNFCQkweEEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UJMHhBMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCTB4QTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfQ0ZHX0JBU0UJMHhCMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0NGR19TSVpFCTB4MDEwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTCTB4QjEwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFCTB4MDA4MDAwMDAKKworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0JBU0UJCTB4QzAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQkweEMwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJMHhDMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9TSVpFCTB4MTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9DRkdfQkFTRQkweEQwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfQ0ZHX1NJWkUJMHgwMTAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhEMTAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUJMHgwMDgwMDAwMAorCiAjZGVmaW5lIENPTkZJR19QQ0kKICNkZWZpbmUgQ09ORklHXzgzWFhfR0VORVJJQ19QQ0kJMSAvKiBVc2UgZ2VuZXJpYyBQQ0kgc2V0dXAgKi8KKyNkZWZpbmUgQ09ORklHXzgzWFhfR0VORVJJQ19QQ0lFCTEKIAogI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCiAjZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkvKiBkbyBwY2kgcGx1Zy1hbmQtcGxheSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzNjBFUkRLLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaAppbmRleCBhNGYyODYyLi5jMjBmODZhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaApAQCAtMjExLDcgKzIxMSw2IEBACiAjZGVmaW5lIENPTkZJR19DTURfTkFORAkJMQogI2RlZmluZSBDT05GSUdfTkFORF9GU0xfVVBNCTEKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCiAKICNkZWZpbmUgQ09ORklHX1NZU19MQkxBV0JBUjFfUFJFTElNCUNPTkZJR19TWVNfTkFORF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM3WEVNRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oCmluZGV4IGQ0OTE1NWYuLjBkZDZlZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oCkBAIC0yNzEsNyArMjcxLDYgQEAKICNkZWZpbmUgQ09ORklHX0NNRF9OQU5ECQkxCiAjZGVmaW5lIENPTkZJR19NVERfTkFORF9WRVJJRllfV1JJVEUJMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAjZGVmaW5lIENPTkZJR19OQU5EX0ZTTF9FTEJDIAkxCiAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCTB4RTA2MDAwMDAJLyogMHhFMDYwMDAwMCAqLwpAQCAtMzU0LDExICszNTMsMzIgQEAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lfU0xWX01FTV9CVVMJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSV9TTFZfTUVNX1NJWkUJMHg4MDAwMDAwMAogCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfQkFTRQkJMHhBMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0NGR19CQVNFCTB4QTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9DRkdfU0laRQkweDA4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UJMHhBODAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCTB4QTgwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwkweEI4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fU0laRQkweDAwODAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9CQVNFCQkweEMwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfQ0ZHX0JBU0UJMHhDMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0NGR19TSVpFCTB4MDgwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQkweEM4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJMHhDODAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9TSVpFCTB4MTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTCTB4RDgwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19TSVpFCTB4MDA4MDAwMDAKKwogI2lmZGVmIENPTkZJR19QQ0kKICNpZm5kZWYgX19BU1NFTUJMWV9fCiBleHRlcm4gaW50IGJvYXJkX3BjaV9ob3N0X2Jyb2tlbih2b2lkKTsKICNlbmRpZgogI2RlZmluZSBDT05GSUdfODNYWF9HRU5FUklDX1BDSQkxIC8qIFVzZSBnZW5lcmljIFBDSSBzZXR1cCAqLworI2RlZmluZSBDT05GSUdfODNYWF9HRU5FUklDX1BDSUUJMQogI2RlZmluZSBDT05GSUdfUFFfTURTX1BJQgkxIC8qIFBRIE1EUyBQbGF0Zm9ybSBJTyBCb2FyZCAqLwogCiAjZGVmaW5lIENPTkZJR19IQVNfRlNMX0RSX1VTQgkxIC8qIGZpeHVwIGRldmljZSB0cmVlIGZvciB0aGUgRFIgVVNCICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODUzNkRTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODUzNkRTLmgKaW5kZXggNWE5OWQ1Zi4uZTM3OWQ1MzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTM2RFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODUzNkRTLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNkZWZpbmUgQ09ORklHX01QQzg1MzYJCTEKICNkZWZpbmUgQ09ORklHX01QQzg1MzZEUwkxCiAKKyNkZWZpbmUgQ09ORklHX0ZTTF9FTEJDCQkxCS8qIEhhcyBFbmhhbmNlZCBsb2NhbGJ1cyBjb250cm9sbGVyICovCiAjZGVmaW5lIENPTkZJR19QQ0kJCTEJLyogRW5hYmxlIFBDSS9QQ0lFICovCiAjZGVmaW5lIENPTkZJR19QQ0kxCQkxCS8qIEVuYWJsZSBQQ0kgY29udHJvbGxlciAxICovCiAjZGVmaW5lIENPTkZJR19QQ0lFMQkJMQkvKiBQQ0lFIGNvbnRyb2xlciAxIChzbG90IDEpICovCkBAIC03MCw3ICs3MSw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0wyX0NBQ0hFCQkJLyogdG9nZ2xlIEwyIGNhY2hlICovCiAjZGVmaW5lIENPTkZJR19CVEIJCQkvKiB0b2dnbGUgYnJhbmNoIHByZWRpdGlvbiAqLwotI2RlZmluZSBDT05GSUdfQUREUl9TVFJFQU1JTkcJCS8qIHRvZ2dsZSBhZGRyIHN0cmVhbWluZyAqLwogCiAjZGVmaW5lIENPTkZJR19FTkFCTEVfMzZCSVRfUEhZUwkxCiAKQEAgLTE2NywxMiArMTY3LDEzIEBACiAgKiBMb2NhbCBCdXMgRGVmaW5pdGlvbnMKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCTB4ZTAwMDAwMDAJLyogc3RhcnQgb2YgRkxBU0ggMTI4TSAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUwlDT05GSUdfU1lTX0ZMQVNIX0JBU0UKIAotI2RlZmluZSBDT05GSUdfU1lTX0JSMF9QUkVMSU0JCTB4ZTgwMDEwMDEKLSNkZWZpbmUgQ09ORklHX1NZU19PUjBfUFJFTElNCQkweGY4MDAwZmY3CisjZGVmaW5lIENPTkZJR19TWVNfQlIwX1BSRUxJTSAgKEJSX1BIWVNfQUREUigoQ09ORklHX1NZU19GTEFTSF9CQVNFX1BIWVMgKyAweDgwMDAwMDApKSB8IEJSX1BTXzE2IHwgQlJfVikKKyNkZWZpbmUgQ09ORklHX1NZU19PUjBfUFJFTElNCTB4ZjgwMDBmZjcKIAotI2RlZmluZSBDT05GSUdfU1lTX0JSMV9QUkVMSU0JCTB4ZTAwMDEwMDEKLSNkZWZpbmUgQ09ORklHX1NZU19PUjFfUFJFTElNCQkweGY4MDAwZmY3CisjZGVmaW5lIENPTkZJR19TWVNfQlIxX1BSRUxJTSAgKEJSX1BIWVNfQUREUihDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUykgfCBCUl9QU18xNiB8IEJSX1YpCisjZGVmaW5lIENPTkZJR19TWVNfT1IxX1BSRUxJTQkweGY4MDAwZmY3CiAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQU5LU19MSVNUCXtDT05GSUdfU1lTX0ZMQVNIX0JBU0UgKyAweDgwMDAwMDAsIENPTkZJR19TWVNfRkxBU0hfQkFTRX0KICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9RVUlFVF9URVNUCkBAIC0xOTUsOCArMTk2LDkgQEAKIAogI2RlZmluZSBDT05GSUdfRlNMX1BJWElTCTEJLyogdXNlIGNvbW1vbiBQSVhJUyBjb2RlICovCiAjZGVmaW5lIFBJWElTX0JBU0UJMHhmZmRmMDAwMAkvKiBQSVhJUyByZWdpc3RlcnMgKi8KKyNkZWZpbmUgUElYSVNfQkFTRV9QSFlTCVBJWElTX0JBU0UKIAotI2RlZmluZSBDT05GSUdfU1lTX0JSM19QUkVMSU0JKFBJWElTX0JBU0UgfCAweDA4MDEpCS8qIHBvcnQgc2l6ZSA4Yml0ICovCisjZGVmaW5lIENPTkZJR19TWVNfQlIzX1BSRUxJTQkoQlJfUEhZU19BRERSKFBJWElTX0JBU0VfUEhZUykgfCBCUl9QU184IHwgQlJfVikKICNkZWZpbmUgQ09ORklHX1NZU19PUjNfUFJFTElNCQkweGZmZmZlZmY3CS8qIDMyS0IgYnV0IG9ubHkgNGsgbWFwcGVkICovCiAKICNkZWZpbmUgUElYSVNfSUQJCTB4MAkvKiBCb2FyZCBJRCBhdCBvZmZzZXQgMCAqLwpAQCAtMjQ5LDE0ICsyNTEsMTMgQEAKIAkJCQlDT05GSUdfU1lTX05BTkRfQkFTRSArIDB4ODAwMDAsIFwKIAkJCQlDT05GSUdfU1lTX05BTkRfQkFTRSArIDB4QzAwMDB9CiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTQKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQ09ORklHX01URF9OQU5EX1ZFUklGWV9XUklURQogI2RlZmluZSBDT05GSUdfQ01EX05BTkQJCTEKICNkZWZpbmUgQ09ORklHX05BTkRfRlNMX0VMQkMJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkxPQ0tfU0laRQkoMTI4ICogMTAyNCkKIAogLyogTkFORCBmbGFzaCBjb25maWcgKi8KLSNkZWZpbmUgQ09ORklHX05BTkRfQlJfUFJFTElNCShDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTIFwKKyNkZWZpbmUgQ09ORklHX05BTkRfQlJfUFJFTElNICAoQlJfUEhZU19BRERSKENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMpIFwKIAkJCQl8ICgyPDxCUl9ERUNDX1NISUZUKSAgICAvKiBVc2UgSFcgRUNDICovIFwKIAkJCQl8IEJSX1BTXzggICAgICAgICAgICAgIC8qIFBvcnQgU2l6ZSA9IDggYml0ICovIFwKIAkJCQl8IEJSX01TX0ZDTSAgICAgICAgICAgICAvKiBNU0VMID0gRkNNICovIFwKQEAgLTI3MywyMCArMjc0LDIwIEBACiAjZGVmaW5lIENPTkZJR19TWVNfQlIyX1BSRUxJTSAgQ09ORklHX05BTkRfQlJfUFJFTElNICAvKiBOQU5EIEJhc2UgQWRkcmVzcyAqLwogI2RlZmluZSBDT05GSUdfU1lTX09SMl9QUkVMSU0gIENPTkZJR19OQU5EX09SX1BSRUxJTSAgLyogTkFORCBPcHRpb25zICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19CUjRfUFJFTElNICAoKENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMgKyAweDQwMDAwKVwKKyNkZWZpbmUgQ09ORklHX1NZU19CUjRfUFJFTElNICAoQlJfUEhZU19BRERSKChDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTICsgMHg0MDAwMCkpXAogCQkJCXwgKDI8PEJSX0RFQ0NfU0hJRlQpICAgIC8qIFVzZSBIVyBFQ0MgKi8gXAogCQkJCXwgQlJfUFNfOCAgICAgICAgICAgICAgLyogUG9ydCBTaXplID0gOCBiaXQgKi8gXAogCQkJCXwgQlJfTVNfRkNNICAgICAgICAgICAgIC8qIE1TRUwgPSBGQ00gKi8gXAogCQkJCXwgQlJfVikgICAgICAgICAgICAgICAgIC8qIHZhbGlkICovCiAjZGVmaW5lIENPTkZJR19TWVNfT1I0X1BSRUxJTQlDT05GSUdfTkFORF9PUl9QUkVMSU0gICAgIC8qIE5BTkQgT3B0aW9ucyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0JSNV9QUkVMSU0gICgoQ09ORklHX1NZU19OQU5EX0JBU0VfUEhZUyArIDB4ODAwMDApXAorI2RlZmluZSBDT05GSUdfU1lTX0JSNV9QUkVMSU0gIChCUl9QSFlTX0FERFIoKENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMgKyAweDgwMDAwKSlcCiAJCQkJfCAoMjw8QlJfREVDQ19TSElGVCkgICAgLyogVXNlIEhXIEVDQyAqLyBcCiAJCQkJfCBCUl9QU184ICAgICAgICAgICAgICAvKiBQb3J0IFNpemUgPSA4IGJpdCAqLyBcCiAJCQkJfCBCUl9NU19GQ00gICAgICAgICAgICAgLyogTVNFTCA9IEZDTSAqLyBcCiAJCQkJfCBCUl9WKSAgICAgICAgICAgICAgICAgLyogdmFsaWQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19PUjVfUFJFTElNCUNPTkZJR19OQU5EX09SX1BSRUxJTSAgICAgLyogTkFORCBPcHRpb25zICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19CUjZfUFJFTElNICAoKENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMgKyAweEMwMDAwKVwKKyNkZWZpbmUgQ09ORklHX1NZU19CUjZfUFJFTElNICAoQlJfUEhZU19BRERSKChDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTICsgMHhjMDAwMCkpXAogCQkJCXwgKDI8PEJSX0RFQ0NfU0hJRlQpICAgIC8qIFVzZSBIVyBFQ0MgKi8gXAogCQkJCXwgQlJfUFNfOCAgICAgICAgICAgICAgLyogUG9ydCBTaXplID0gOCBiaXQgKi8gXAogCQkJCXwgQlJfTVNfRkNNICAgICAgICAgICAgIC8qIE1TRUwgPSBGQ00gKi8gXApAQCAtMzU3LDM0ICszNTgsNDIgQEAKICAqIE1lbW9yeSBzcGFjZSBpcyBtYXBwZWQgMS0xLCBidXQgSS9PIHNwYWNlIG11c3Qgc3RhcnQgZnJvbSAwLgogICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1ZJUlQJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwkJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJMHg4MDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1ZJUlQJMHhmZmMwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJMHhmZmMwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLwogCiAvKiBjb250cm9sbGVyIDEsIFNsb3QgMSwgdGd0aWQgMSwgQmFzZSBhZGRyZXNzIGEwMDAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQkweDkwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9WSVJUCTB4OTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4OTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwkweDkwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUJMHgwODAwMDAwMAkvKiAxMjhNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fVklSVAkweGZmYzEwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTCTB4ZmZjMTAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFCTB4MDAwMTAwMDAJLyogNjRrICovCiAKIC8qIGNvbnRyb2xsZXIgMiwgU2xvdCAyLCB0Z3RpZCAyLCBCYXNlIGFkZHJlc3MgOTAwMCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCTB4OTgwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1ZJUlQJMHg5ODAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9CVVMJMHg5ODAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTCTB4OTgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fU0laRQkweDA4MDAwMDAwCS8qIDEyOE0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19WSVJUCTB4ZmZjMjAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19CVVMJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhmZmMyMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUJMHgwMDAxMDAwMAkvKiA2NGsgKi8KIAogLyogY29udHJvbGxlciAzLCBkaXJlY3QgdG8gdWxpLCB0Z3RpZCAzLCBCYXNlIGFkZHJlc3MgODAwMCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9CQVNFCTB4YTAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUzX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX1ZJUlQJMHhhMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9CVVMJMHhhMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCTB4YTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19NRU1fU0laRQkweDIwMDAwMDAwCS8qIDUxMk0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19WSVJUCTB4ZmZjMzAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19CVVMJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMJMHhmZmMzMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX1NJWkUJMHgwMDAxMDAwMAkvKiA2NGsgKi8KIApAQCAtMzk0LDEwICs0MDMsMTAgQEAKICNkZWZpbmUgQ09ORklHX1BDSV9QTlAJCQkvKiBkbyBwY2kgcGx1Zy1hbmQtcGxheSAqLwogCiAvKlBDSUUgdmlkZW8gY2FyZCB1c2VkKi8KLSNkZWZpbmUgVklERU9fSU9fT0ZGU0VUCQlDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMKKyNkZWZpbmUgVklERU9fSU9fT0ZGU0VUCQlDT05GSUdfU1lTX1BDSUUzX0lPX1ZJUlQKIAogLypQQ0kgdmlkZW8gY2FyZCB1c2VkKi8KLS8qI2RlZmluZSBWSURFT19JT19PRkZTRVQJQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMqLworLyojZGVmaW5lIFZJREVPX0lPX09GRlNFVAlDT05GSUdfU1lTX1BDSTFfSU9fVklSVCovCiAKIC8qIHZpZGVvICovCiAjZGVmaW5lIENPTkZJR19WSURFTwpAQCAtNDEwLDcgKzQxOSw3IEBACiAjZGVmaW5lIENPTkZJR19BVElfUkFERU9OX0ZCCiAjZGVmaW5lIENPTkZJR19WSURFT19MT0dPCiAvKiNkZWZpbmUgQ09ORklHX0NPTlNPTEVfQ1VSU09SKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JU0FfSU9fQkFTRV9BRERSRVNTIENPTkZJR19TWVNfUENJRTNfSU9fUEhZUworI2RlZmluZSBDT05GSUdfU1lTX0lTQV9JT19CQVNFX0FERFJFU1MgQ09ORklHX1NZU19QQ0lFM19JT19WSVJUCiAjZW5kaWYKIAogI3VuZGVmIENPTkZJR19FRVBSTzEwMApAQCAtNDI0LDggKzQzMyw4IEBACiAjZW5kaWYKIAogI2lmbmRlZiBDT05GSUdfUENJX1BOUAotCSNkZWZpbmUgUENJX0VORVQwX0lPQUREUglDT05GSUdfU1lTX1BDSTFfSU9fQkFTRQotCSNkZWZpbmUgUENJX0VORVQwX01FTUFERFIJQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UKKwkjZGVmaW5lIFBDSV9FTkVUMF9JT0FERFIJQ09ORklHX1NZU19QQ0kxX0lPX0JVUworCSNkZWZpbmUgUENJX0VORVQwX01FTUFERFIJQ09ORklHX1NZU19QQ0kxX0lPX0JVUwogCSNkZWZpbmUgUENJX0lEU0VMX05VTUJFUgkweDExCS8qIElEU0VMID0gQUQxMSAqLwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwQURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEFEUy5oCmluZGV4IDBiOGZlNmEuLjBkMDNiMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwQURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBBRFMuaApAQCAtNzksNyArNzksNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCS8qIHRvZ2dsZSBMMiBjYWNoZSAqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDIwMDAwMAkvKiBtZW10ZXN0IHJlZ2lvbiAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwNDAwMDAwCkBAIC0zMDksMTggKzMwOCwyMSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19PRkZTRVQJCTB4MzAwMAogCiAvKiBSYXBpZElPIE1NVSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1JJT19NRU1fQkFTRQkweGMwMDAwMDAwCS8qIGJhc2UgYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX1JJT19NRU1fUEhZUwlDT05GSUdfU1lTX1JJT19NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1JJT19NRU1fVklSVAkweGMwMDAwMDAwCS8qIGJhc2UgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX1JJT19NRU1fQlVTCTB4YzAwMDAwMDAJLyogYmFzZSBhZGRyZXNzICovCisjZGVmaW5lIENPTkZJR19TWVNfUklPX01FTV9QSFlTCTB4YzAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiAxMjhNICovCiAKIC8qCiAgKiBHZW5lcmFsIFBDSQogICogTWVtb3J5IHNwYWNlIGlzIG1hcHBlZCAxLTEsIGJ1dCBJL08gc3BhY2UgbXVzdCBzdGFydCBmcm9tIDAuCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1ZJUlQJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwkweDgwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwkweDgwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fU0laRQkweDIwMDAwMDAwCS8qIDUxMk0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fVklSVAkweGUyMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CVVMJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUwkweGUyMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCTB4MTAwMDAwCS8qIDFNICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwRVZBTC5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKaW5kZXggMjFjZjk2NS4uNWFjMTkxNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKQEAgLTYyLDcgKzYyLDYgQEAKIC8qIGJlbG93IGNhbiBiZSB0b2dnbGVkIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gb3RoZXJ3aXNlIHVzZSBkZWZhdWx0ICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCSAgICAvKiB0b2dnbGUgTDIgY2FjaGUJKi8KICN1bmRlZiAgQ09ORklHX0JUQgkJCSAgICAvKiB0b2dnbGUgYnJhbmNoIHByZWRpdGlvbiAqLwotI3VuZGVmICBDT05GSUdfQUREUl9TVFJFQU1JTkcJCSAgICAvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcgICAqLwogCiAjZGVmaW5lIENPTkZJR19CT0FSRF9QUkVfSU5JVAkxCSAgICAvKiBDYWxsIGJvYXJkX3ByZV9pbml0CSovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MUNEUy5oCmluZGV4IGVhYTczN2IuLmZhODJmYmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDFDRFMuaApAQCAtNjMsNyArNjMsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCSAgICAvKiB0b2dnbGUgTDIgY2FjaGUJKi8KICNkZWZpbmUgQ09ORklHX0JUQgkJCSAgICAvKiB0b2dnbGUgYnJhbmNoIHByZWRpdGlvbiAqLwotI2RlZmluZSBDT05GSUdfQUREUl9TVFJFQU1JTkcJCSAgICAvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcgICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDAwMjAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24gKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgwMDQwMDAwMApAQCAtMzQyLDE3ICszNDEsMjEgQEAKICAqIEdlbmVyYWwgUENJCiAgKiBNZW1vcnkgc3BhY2UgaXMgbWFwcGVkIDEtMSwgYnV0IEkvTyBzcGFjZSBtdXN0IHN0YXJ0IGZyb20gMC4KICAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fVklSVAkweDgwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQlVTCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCTB4ODAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19WSVJUCTB4ZTIwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19QSFlTCTB4ZTIwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUJMHgxMDAwMDAJLyogMU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX0JBU0UJMHhhMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kyX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fVklSVAkweGEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fQlVTCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTCTB4YTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19WSVJUCTB4ZTIxMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19QSFlTCTB4ZTIxMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX1NJWkUJMHgxMDAwMDAJLyogMU0gKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDREUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDREUy5oCmluZGV4IGIzMWMyYmIuLjU5Y2ZkZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQ0RFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0NERTLmgKQEAgLTY2LDcgKzY2LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfTDJfQ0FDSEUJCQkvKiB0b2dnbGUgTDIgY2FjaGUgKi8KICNkZWZpbmUgQ09ORklHX0JUQgkJCS8qIHRvZ2dsZSBicmFuY2ggcHJlZGl0aW9uICovCi0jZGVmaW5lIENPTkZJR19BRERSX1NUUkVBTUlORwkJLyogdG9nZ2xlIGFkZHIgc3RyZWFtaW5nICovCiAKIC8qCiAgKiBPbmx5IHBvc3NpYmxlIG9uIEU1MDAgVmVyc2lvbiAyIG9yIG5ld2VyIGNvcmVzLgpAQCAtMjY0LDUwICsyNjMsNjEgQEAKICAqIEdlbmVyYWwgUENJCiAgKiBNZW1vcnkgc3BhY2UgaXMgbWFwcGVkIDEtMSwgYnV0IEkvTyBzcGFjZSBtdXN0IHN0YXJ0IGZyb20gMC4KICAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUVfVklSVAkJMHg4MDAwMDAwMAkvKiAxRyBQQ0lFIFRMQiAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BDSUVfUEhZUwkJMHg4MDAwMDAwMAkvKiAxRyBQQ0lFIFRMQiAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSV9WSVJUCQkweGMwMDAwMDAwCS8qIDUxMk0gUENJIFRMQiAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BDSV9QSFlTCQkweGMwMDAwMDAwCS8qIDUxMk0gUENJIFRMQiAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQkFTRQkweGMwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUCTB4YzAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMJMHhjMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJMHhjMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1ZJUlQJMHhlMTAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJMHhlMTAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLwogCiAvKiBjb250cm9sbGVyIDIsIFNsb3QgMSwgdGd0aWQgMSwgQmFzZSBhZGRyZXNzIDkwMDAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9WSVJUCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUwkweDgwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fVklSVAkweGUxMDEwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTCTB4ZTEwMTAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19TSVpFCTB4MDAwMTAwMDAJLyogNjRrICovCiAKIC8qIGNvbnRyb2xsZXIgMSwgU2xvdCAyLHRndGlkIDIsIEJhc2UgYWRkcmVzcyBhMDAwICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UJMHhhMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fVklSVAkweGEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUwkweGEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJMHhhMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFCTB4MTAwMDAwMDAJLyogMjU2TSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1ZJUlQJMHhlMTAyMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwkweGUxMDIwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLwogCiAvKiBjb250cm9sbGVyIDMsIGRpcmVjdCB0byB1bGksIHRndGlkIDMsIEJhc2UgYWRkcmVzcyBiMDAwICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UJMHhiMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCUNPTkZJR19TWVNfUENJRTNfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19NRU1fVklSVAkweGIwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX0JVUwkweGIwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMJMHhiMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9TSVpFCTB4MDAxMDAwMDAJLyogMU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19WSVJUCTB4YjAxMDAwMDAJLyogcmV1c2UgbWVtIExBVyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfSU9fUEhZUwkweGIwMTAwMDAwCS8qIHJldXNlIG1lbSBMQVcgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19TSVpFCTB4MDAxMDAwMDAJLyogMU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19NRU1fQkFTRTIJMHhiMDIwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTMglDT05GSUdfU1lTX1BDSUUzX01FTV9CQVNFMgorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9WSVJUMgkweGIwMjAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX0JVUzIJMHhiMDIwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTMgkweGIwMjAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX1NJWkUyCTB4MDAyMDAwMDAJLyogMU0gKi8KIAogI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKIAogLypQQ0lFIHZpZGVvIGNhcmQgdXNlZCovCi0jZGVmaW5lIFZJREVPX0lPX09GRlNFVAkJQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTCisjZGVmaW5lIFZJREVPX0lPX09GRlNFVAkJQ09ORklHX1NZU19QQ0lFMl9JT19WSVJUCiAKIC8qUENJIHZpZGVvIGNhcmQgdXNlZCovCi0vKiNkZWZpbmUgVklERU9fSU9fT0ZGU0VUCUNPTkZJR19TWVNfUENJMV9JT19QSFlTKi8KKy8qI2RlZmluZSBWSURFT19JT19PRkZTRVQJQ09ORklHX1NZU19QQ0kxX0lPX1ZJUlQqLwogCiAvKiB2aWRlbyAqLwogI2RlZmluZSBDT05GSUdfVklERU8KQEAgLTMzNyw4ICszNDcsOCBAQAogI2VuZGlmCiAKICNpZm5kZWYgQ09ORklHX1BDSV9QTlAKLQkjZGVmaW5lIFBDSV9FTkVUMF9JT0FERFIJQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UKLQkjZGVmaW5lIFBDSV9FTkVUMF9NRU1BRERSCUNPTkZJR19TWVNfUENJMV9JT19CQVNFCisJI2RlZmluZSBQQ0lfRU5FVDBfSU9BRERSCUNPTkZJR19TWVNfUENJMV9JT19CVVMKKwkjZGVmaW5lIFBDSV9FTkVUMF9NRU1BRERSCUNPTkZJR19TWVNfUENJMV9JT19CVVMKIAkjZGVmaW5lIFBDSV9JRFNFTF9OVU1CRVIJMHgxMQkvKiBJRFNFTCA9IEFEMTEgKi8KICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0OENEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaAppbmRleCA3YTdlNWExLi45NWJjZTk1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0OENEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQ4Q0RTLmgKQEAgLTY5LDcgKzY5LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfTDJfQ0FDSEUJCQkvKiB0b2dnbGUgTDIgY2FjaGUgKi8KICNkZWZpbmUgQ09ORklHX0JUQgkJCS8qIHRvZ2dsZSBicmFuY2ggcHJlZGl0aW9uICovCi0jZGVmaW5lIENPTkZJR19BRERSX1NUUkVBTUlORwkJLyogdG9nZ2xlIGFkZHIgc3RyZWFtaW5nICovCiAjZGVmaW5lIENPTkZJR19DTEVBUl9MQVcwCQkvKiBDbGVhciBMQVcwIGluIGNwdV9pbml0X3IgKi8KIAogLyoKQEAgLTM2NiwyOSArMzY1LDM2IEBACiAgKiBHZW5lcmFsIFBDSQogICogTWVtb3J5IHNwYWNlIGlzIG1hcHBlZCAxLTEsIGJ1dCBJL08gc3BhY2UgbXVzdCBzdGFydCBmcm9tIDAuCiAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lfVklSVAkJMHg4MDAwMDAwMAkvKiAxRyBQQ0kgVExCICovCiAjZGVmaW5lIENPTkZJR19TWVNfUENJX1BIWVMJCTB4ODAwMDAwMDAJLyogMUcgUENJIFRMQiAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQkFTRQkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJMHg4MDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1ZJUlQJMHhlMjAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJMHhlMjAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fU0laRQkweDAwMTAwMDAwCS8qIDFNICovCiAKICNpZmRlZiBDT05GSUdfUENJMgotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX0JBU0UJMHhhMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kyX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fVklSVAkweGEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fQlVTCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTCTB4YTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19WSVJUCTB4ZTI4MDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19QSFlTCTB4ZTI4MDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX1NJWkUJMHgwMDEwMDAwMAkvKiAxTSAqLwogI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfUENJRTEKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQkweGEwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9WSVJUCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwkweGEwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fVklSVAkweGUzMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTCTB4ZTMwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFCTB4MDAxMDAwMDAJLyogICAxTSAqLwogI2VuZGlmCkBAIC0zOTcsNyArNDAzLDggQEAKIC8qCiAgKiBSYXBpZElPIE1NVQogICovCi0jZGVmaW5lIENPTkZJR19TWVNfUklPX01FTV9CQVNFCTB4QzAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX1ZJUlQJMHhDMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1JJT19NRU1fQlVTCTB4QzAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg1NTVDRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTU1Q0RTLmgKaW5kZXggNDBiNDBlZC4uNmJmMDk2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NTVDRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU1NUNEUy5oCkBAIC02Myw3ICs2Myw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0wyX0NBQ0hFCQkJICAgIC8qIHRvZ2dsZSBMMiBjYWNoZQkqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJICAgIC8qIHRvZ2dsZSBicmFuY2ggcHJlZGl0aW9uICovCi0jZGVmaW5lIENPTkZJR19BRERSX1NUUkVBTUlORwkJICAgIC8qIHRvZ2dsZSBhZGRyIHN0cmVhbWluZyAgICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MDAyMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwNDAwMDAwCkBAIC0zNDAsMTcgKzMzOSwyMSBAQAogICogR2VuZXJhbCBQQ0kKICAqIEFkZHJlc3NlcyBhcmUgbWFwcGVkIDEtMS4KICAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fVklSVAkweDgwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQlVTCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCTB4ODAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19WSVJUCTB4ZTIwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JVUwkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19QSFlTCTB4ZTIwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUJMHgwMDEwMDAwMAkvKiAxTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fQkFTRQkweGEwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSTJfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9WSVJUCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9CVVMJMHhhMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMJMHhhMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX1ZJUlQJMHhlMjEwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX1BIWVMJMHhlMjEwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfSU9fU0laRQkweDAwMTAwMDAwCS8qIDFNICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTYwQURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2MEFEUy5oCmluZGV4IDJiNWIyYzEuLjNmNzhhNmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTYwQURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjBBRFMuaApAQCAtNzMsNyArNzMsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCS8qIHRvZ2dsZSBMMiBjYWNoZSAqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfREJDUiBEQkNSX0lETQkJLyogRW5hYmxlIERlYnVnIEV4Y2VwdGlvbnMgKi8KIApAQCAtMzAxLDE4ICszMDAsMjEgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JMkNfT0ZGU0VUCQkweDMwMDAKIAogLyogUmFwaWRJTyBNTVUgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX0JBU0UJMHhjMDAwMDAwMAkvKiBiYXNlIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX1BIWVMJQ09ORklHX1NZU19SSU9fTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX1ZJUlQJMHhjMDAwMDAwMAkvKiBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19SSU9fTUVNX0JVUwkweGMwMDAwMDAwCS8qIGJhc2UgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX1JJT19NRU1fUEhZUwkweGMwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUklPX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogMTI4TSAqLwogCiAvKgogICogR2VuZXJhbCBQQ0kKICAqIE1lbW9yeSBzcGFjZSBpcyBtYXBwZWQgMS0xLCBidXQgSS9PIHNwYWNlIG11c3Qgc3RhcnQgZnJvbSAwLgogICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQkFTRQkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJMHg4MDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1ZJUlQJMHhlMjAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJMHhlMjAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fU0laRQkweDEwMDAwMAkvKiAxTSAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OE1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjhNRFMuaAppbmRleCA4YmRlYzY1Li41OGZmNTJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OE1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTY4TURTLmgKQEAgLTYxLDcgKzYxLDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfTDJfQ0FDSEUJCQkJLyogdG9nZ2xlIEwyIGNhY2hlCSovCiAjZGVmaW5lIENPTkZJR19CVEIJCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkJLyogdG9nZ2xlIGFkZHIgc3RyZWFtaW5nICAgKi8KIAogLyoKICAqIE9ubHkgcG9zc2libGUgb24gRTUwMCBWZXJzaW9uIDIgb3IgbmV3ZXIgY29yZXMuCkBAIC0zMjMsMjEgKzMyMiwyNyBAQAogICogR2VuZXJhbCBQQ0kKICAqIE1lbW9yeSBBZGRyZXNzZXMgYXJlIG1hcHBlZCAxLTEuIEkvTyBpcyBtYXBwZWQgZnJvbSAwCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1ZJUlQJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwkweDgwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwkweDgwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fU0laRQkweDIwMDAwMDAwCS8qIDUxMk0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fVklSVAkweGUyMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CVVMJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUwkweGUyMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCTB4MDA4MDAwMDAJLyogOE0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCTB4YTAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1ZJUlQJMHhhMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMJMHhhMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCTB4YTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDIwMDAwMDAwCS8qIDUxMk0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19WSVJUCTB4ZTI4MDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMJMHhlMjgwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1NJWkUJMHgwMDgwMDAwMAkvKiA4TSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfU1JJT19NRU1fQkFTRQkweGMwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfU1JJT19NRU1fVklSVAkweGMwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfU1JJT19NRU1fQlVTCTB4YzAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19TUklPX01FTV9QSFlTCTB4YzAwMDAwMDAKIAogI2lmZGVmIENPTkZJR19RRQogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTcyRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTcyRFMuaAppbmRleCA5YTY2Y2E4Li5hYzBhNDY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU3MkRTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NzJEUy5oCkBAIC0zNiw2ICszNiw3IEBACiAjZGVmaW5lIENPTkZJR19NUAkJMQkvKiBzdXBwb3J0IG11bHRpcGxlIHByb2Nlc3NvcnMgKi8KICNkZWZpbmUgQ09ORklHX05VTV9DUFVTCQkyCS8qIE51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0gKi8KIAorI2RlZmluZSBDT05GSUdfRlNMX0VMQkMJCTEJLyogSGFzIEVuaGFuY2VkIGxvY2FsYnVzIGNvbnRyb2xsZXIgKi8KICNkZWZpbmUgQ09ORklHX1BDSQkJMQkvKiBFbmFibGUgUENJL1BDSUUgKi8KICNkZWZpbmUgQ09ORklHX1BDSUUxCQkxCS8qIFBDSUUgY29udHJvbGVyIDEgKHNsb3QgMSkgKi8KICNkZWZpbmUgQ09ORklHX1BDSUUyCQkxCS8qIFBDSUUgY29udHJvbGVyIDIgKHNsb3QgMikgKi8KQEAgLTcxLDEwICs3MiwxNCBAQAogICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCS8qIHRvZ2dsZSBMMiBjYWNoZSAqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcgKi8KIAogI2RlZmluZSBDT05GSUdfRU5BQkxFXzM2QklUX1BIWVMJMQogCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX0FERFJfTUFQCQkJMQorI2RlZmluZSBDT05GSUdfU1lTX05VTV9BRERSX01BUAkJMTYJLyogbnVtYmVyIG9mIFRMQjEgZW50cmllcyAqLworI2VuZGlmCisKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MDAwMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDdmZmZmZmZmCiAjZGVmaW5lIENPTkZJR19QQU5JQ19IQU5HCS8qIGRvIG5vdCByZXNldCBib2FyZCBvbiBwYW5pYyAqLwpAQCAtODUsNyArOTAsMTEgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0NDU1JCQVJfREVGQVVMVAkweGZmNzAwMDAwCS8qIENDU1JCQVIgRGVmYXVsdCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0NDU1JCQVIJCTB4ZmZlMDAwMDAJLyogcmVsb2NhdGVkIENDU1JCQVIgKi8KKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX0NDU1JCQVJfUEhZUwkJMHhmZmZlMDAwMDB1bGwJLyogcGh5c2ljYWwgYWRkciBvZiBDQ1NSQkFSICovCisjZWxzZQogI2RlZmluZSBDT05GSUdfU1lTX0NDU1JCQVJfUEhZUwlDT05GSUdfU1lTX0NDU1JCQVIJLyogcGh5c2ljYWwgYWRkciBvZiBDQ1NSQkFSICovCisjZW5kaWYKICNkZWZpbmUgQ09ORklHX1NZU19JTU1SCQlDT05GSUdfU1lTX0NDU1JCQVIJLyogUFFJSSB1c2VzIENPTkZJR19TWVNfSU1NUiAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfQUREUgkJKENPTkZJR19TWVNfQ0NTUkJBUisweDgwMDApCkBAIC05Myw2ICsxMDIsNyBAQAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0FERFIJCShDT05GSUdfU1lTX0NDU1JCQVIrMHhhMDAwKQogCiAvKiBERFIgU2V0dXAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVExCX1NUQVJUIDkKICNkZWZpbmUgQ09ORklHX0ZTTF9ERFIyCiAjdW5kZWYgQ09ORklHX0ZTTF9ERFJfSU5URVJBQ1RJVkUKICNkZWZpbmUgQ09ORklHX1NQRF9FRVBST00JCS8qIFVzZSBTUEQgRUVQUk9NIGZvciBERFIgc2V0dXAgKi8KQEAgLTE2OSwxNCArMTc5LDE5IEBACiAgKiBMb2NhbCBCdXMgRGVmaW5pdGlvbnMKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCTB4ZTAwMDAwMDAJLyogc3RhcnQgb2YgRkxBU0ggMTI4TSAqLworI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTCTB4ZmUwMDAwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUwlDT05GSUdfU1lTX0ZMQVNIX0JBU0UKKyNlbmRpZgogCi0jZGVmaW5lIENPTkZJR19TWVNfQlIwX1BSRUxJTQkJMHhlODAwMTAwMQotI2RlZmluZSBDT05GSUdfU1lTX09SMF9QUkVMSU0JCTB4ZjgwMDBmZjcKKyNkZWZpbmUgQ09ORklHX1NZU19CUjBfUFJFTElNICAoQlJfUEhZU19BRERSKChDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUyArIDB4ODAwMDAwMCkpIHwgQlJfUFNfMTYgfCBCUl9WKQorI2RlZmluZSBDT05GSUdfU1lTX09SMF9QUkVMSU0JMHhmODAwMGZmNwogCi0jZGVmaW5lIENPTkZJR19TWVNfQlIxX1BSRUxJTQkJMHhlMDAwMTAwMQotI2RlZmluZSBDT05GSUdfU1lTX09SMV9QUkVMSU0JCTB4ZjgwMDBmZjcKKyNkZWZpbmUgQ09ORklHX1NZU19CUjFfUFJFTElNICAoQlJfUEhZU19BRERSKENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTKSB8IEJSX1BTXzE2IHwgQlJfVikKKyNkZWZpbmUgQ09ORklHX1NZU19PUjFfUFJFTElNCTB4ZjgwMDBmZjcKIAotI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QJe0NPTkZJR19TWVNfRkxBU0hfQkFTRSArIDB4ODAwMDAwMCwgQ09ORklHX1NZU19GTEFTSF9CQVNFfQorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QJe0NPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTICsgMHg4MDAwMDAwLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZU30KICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9RVUlFVF9URVNUCiAjZGVmaW5lIENPTkZJR19GTEFTSF9TSE9XX1BST0dSRVNTIDQ1IC8qIGNvdW50IGRvd24gZnJvbSA0NS81OiA5Li4xICovCiAKQEAgLTE5Nyw4ICsyMTIsMTMgQEAKIAogI2RlZmluZSBDT05GSUdfRlNMX1BJWElTCTEJLyogdXNlIGNvbW1vbiBQSVhJUyBjb2RlICovCiAjZGVmaW5lIFBJWElTX0JBU0UJMHhmZmRmMDAwMAkvKiBQSVhJUyByZWdpc3RlcnMgKi8KKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBQSVhJU19CQVNFX1BIWVMJMHhmZmZkZjAwMDB1bGwKKyNlbHNlCisjZGVmaW5lIFBJWElTX0JBU0VfUEhZUwlQSVhJU19CQVNFCisjZW5kaWYKIAotI2RlZmluZSBDT05GSUdfU1lTX0JSM19QUkVMSU0JKFBJWElTX0JBU0UgfCAweDA4MDEpCS8qIHBvcnQgc2l6ZSA4Yml0ICovCisjZGVmaW5lIENPTkZJR19TWVNfQlIzX1BSRUxJTQkoQlJfUEhZU19BRERSKFBJWElTX0JBU0VfUEhZUykgfCBCUl9QU184IHwgQlJfVikKICNkZWZpbmUgQ09ORklHX1NZU19PUjNfUFJFTElNCQkweGZmZmZlZmY3CS8qIDMyS0IgYnV0IG9ubHkgNGsgbWFwcGVkICovCiAKICNkZWZpbmUgUElYSVNfSUQJCTB4MAkvKiBCb2FyZCBJRCBhdCBvZmZzZXQgMCAqLwpAQCAtMjYxLDIwICsyODEsMjMgQEAKICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMTAyNCAqIDEwMjQpCS8qIFJlc2VydmVkIGZvciBtYWxsb2MgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHhmZmEwMDAwMAorI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMJMHhmZmZhMDAwMDB1bGwKKyNlbHNlCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMJQ09ORklHX1NZU19OQU5EX0JBU0UKKyNlbmRpZgogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRV9MSVNUICAgICB7IENPTkZJR19TWVNfTkFORF9CQVNFLFwKIAkJCQlDT05GSUdfU1lTX05BTkRfQkFTRSArIDB4NDAwMDAsIFwKIAkJCQlDT05GSUdfU1lTX05BTkRfQkFTRSArIDB4ODAwMDAsXAogCQkJCUNPTkZJR19TWVNfTkFORF9CQVNFICsgMHhDMDAwMH0KICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UgICAgNAotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCiAjZGVmaW5lIENPTkZJR19DTURfTkFORAkJMQogI2RlZmluZSBDT05GSUdfTkFORF9GU0xfRUxCQwkxCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CTE9DS19TSVpFICAgICgxMjggKiAxMDI0KQogCiAvKiBOQU5EIGZsYXNoIGNvbmZpZyAqLwotI2RlZmluZSBDT05GSUdfTkFORF9CUl9QUkVMSU0gIChDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTIFwKKyNkZWZpbmUgQ09ORklHX05BTkRfQlJfUFJFTElNICAoQlJfUEhZU19BRERSKENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMpIFwKIAkJCSAgICAgICB8ICgyPDxCUl9ERUNDX1NISUZUKSAgICAvKiBVc2UgSFcgRUNDICovIFwKIAkJCSAgICAgICB8IEJSX1BTXzgJICAgICAgIC8qIFBvcnQgU2l6ZSA9IDggYml0ICovIFwKIAkJCSAgICAgICB8IEJSX01TX0ZDTQkgICAgICAgLyogTVNFTCA9IEZDTSAqLyBcCkBAIC0yOTEsMjAgKzMxNCwyMCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0JSMl9QUkVMSU0gIENPTkZJR19OQU5EX0JSX1BSRUxJTSAgLyogTkFORCBCYXNlIEFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19PUjJfUFJFTElNICBDT05GSUdfTkFORF9PUl9QUkVMSU0gIC8qIE5BTkQgT3B0aW9ucyAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfQlI0X1BSRUxJTSAgKChDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTICsgMHg0MDAwMClcCisjZGVmaW5lIENPTkZJR19TWVNfQlI0X1BSRUxJTSAgKEJSX1BIWVNfQUREUigoQ09ORklHX1NZU19OQU5EX0JBU0VfUEhZUyArIDB4NDAwMDApKVwKIAkJCSAgICAgICB8ICgyPDxCUl9ERUNDX1NISUZUKSAgICAvKiBVc2UgSFcgRUNDICovIFwKIAkJCSAgICAgICB8IEJSX1BTXzgJICAgICAgIC8qIFBvcnQgU2l6ZSA9IDggYml0ICovIFwKIAkJCSAgICAgICB8IEJSX01TX0ZDTQkgICAgICAgLyogTVNFTCA9IEZDTSAqLyBcCiAJCQkgICAgICAgfCBCUl9WKQkJICAgICAgIC8qIHZhbGlkICovCiAjZGVmaW5lIENPTkZJR19TWVNfT1I0X1BSRUxJTSAgQ09ORklHX05BTkRfT1JfUFJFTElNCSAvKiBOQU5EIE9wdGlvbnMgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19CUjVfUFJFTElNICAoKENPTkZJR19TWVNfTkFORF9CQVNFX1BIWVMgKyAweDgwMDAwKVwKKyNkZWZpbmUgQ09ORklHX1NZU19CUjVfUFJFTElNICAoQlJfUEhZU19BRERSKChDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTICsgMHg4MDAwMCkpXAogCQkJICAgICAgIHwgKDI8PEJSX0RFQ0NfU0hJRlQpICAgIC8qIFVzZSBIVyBFQ0MgKi8gXAogCQkJICAgICAgIHwgQlJfUFNfOAkgICAgICAgLyogUG9ydCBTaXplID0gOCBiaXQgKi8gXAogCQkJICAgICAgIHwgQlJfTVNfRkNNCSAgICAgICAvKiBNU0VMID0gRkNNICovIFwKIAkJCSAgICAgICB8IEJSX1YpCQkgICAgICAgLyogdmFsaWQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19PUjVfUFJFTElNICBDT05GSUdfTkFORF9PUl9QUkVMSU0JIC8qIE5BTkQgT3B0aW9ucyAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfQlI2X1BSRUxJTSAgKChDT05GSUdfU1lTX05BTkRfQkFTRV9QSFlTICsgMHhDMDAwMClcCisjZGVmaW5lIENPTkZJR19TWVNfQlI2X1BSRUxJTSAgKEJSX1BIWVNfQUREUigoQ09ORklHX1NZU19OQU5EX0JBU0VfUEhZUyArIDB4YzAwMDApKVwKIAkJCSAgICAgICB8ICgyPDxCUl9ERUNDX1NISUZUKSAgICAvKiBVc2UgSFcgRUNDICovIFwKIAkJCSAgICAgICB8IEJSX1BTXzgJICAgICAgIC8qIFBvcnQgU2l6ZSA9IDggYml0ICovIFwKIAkJCSAgICAgICB8IEJSX01TX0ZDTQkgICAgICAgLyogTVNFTCA9IEZDTSAqLyBcCkBAIC0zNzksMzMgKzQwMiw2MyBAQAogICovCiAKIC8qIGNvbnRyb2xsZXIgMywgZGlyZWN0IHRvIHVsaSwgdGd0aWQgMywgQmFzZSBhZGRyZXNzIDgwMDAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19NRU1fQkFTRQkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFM19NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9WSVJUCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19NRU1fQlVTCTB4ODAwMDAwMDAKKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCTB4YzAwMDAwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCTB4ODAwMDAwMDAKKyNlbmRpZgogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX1ZJUlQJMHhmZmMwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX0JVUwkweDAwMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19QSFlTCTB4ZmZmYzAwMDAwdWxsCisjZWxzZQogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMJMHhmZmMwMDAwMAorI2VuZGlmCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLwogCiAvKiBjb250cm9sbGVyIDIsIFNsb3QgMiwgdGd0aWQgMiwgQmFzZSBhZGRyZXNzIDkwMDAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQkweGEwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9WSVJUCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTCTB4YTAwMDAwMDAKKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTCTB4YzIwMDAwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTCTB4YTAwMDAwMDAKKyNlbmRpZgogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1ZJUlQJMHhmZmMxMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX0JVUwkweDAwMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTCTB4ZmZmYzEwMDAwdWxsCisjZWxzZQogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhmZmMxMDAwMAorI2VuZGlmCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLwogCiAvKiBjb250cm9sbGVyIDEsIFNsb3QgMSwgdGd0aWQgMSwgQmFzZSBhZGRyZXNzIGEwMDAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQkweGMwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9WSVJUCTB4YzAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4YzAwMDAwMDAKKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCTB4YzQwMDAwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCTB4YzAwMDAwMDAKKyNlbmRpZgogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1ZJUlQJMHhmZmMyMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX0JVUwkweDAwMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTCTB4ZmZmYzIwMDAwdWxsCisjZWxzZQogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMJMHhmZmMyMDAwMAorI2VuZGlmCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLwogCiAjaWYgZGVmaW5lZChDT05GSUdfUENJKQogCiAvKlBDSUUgdmlkZW8gY2FyZCB1c2VkKi8KLSNkZWZpbmUgVklERU9fSU9fT0ZGU0VUCQlDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMKKyNkZWZpbmUgVklERU9fSU9fT0ZGU0VUCQlDT05GSUdfU1lTX1BDSUUxX0lPX1ZJUlQKIAogLyogdmlkZW8gKi8KICNkZWZpbmUgQ09ORklHX1ZJREVPCkBAIC00MzUsOCArNDg4LDggQEAKICNlbmRpZgogCiAjaWZuZGVmIENPTkZJR19QQ0lfUE5QCi0JI2RlZmluZSBQQ0lfRU5FVDBfSU9BRERSCUNPTkZJR19TWVNfUENJRTNfSU9fQkFTRQotCSNkZWZpbmUgUENJX0VORVQwX01FTUFERFIJQ09ORklHX1NZU19QQ0lFM19JT19CQVNFCisJI2RlZmluZSBQQ0lfRU5FVDBfSU9BRERSCUNPTkZJR19TWVNfUENJRTNfSU9fQlVTCisJI2RlZmluZSBQQ0lfRU5FVDBfTUVNQUREUglDT05GSUdfU1lTX1BDSUUzX0lPX0JVUwogCSNkZWZpbmUgUENJX0lEU0VMX05VTUJFUgkweDExCS8qIElEU0VMID0gQUQxMSAqLwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NjEwSFBDRC5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg2MTBIUENELmgKaW5kZXggMjc1MTdlNS4uNGJkM2UwYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg2MTBIUENELmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg2MTBIUENELmgKQEAgLTI3MywxMSArMjczLDEzIEBACiAgKiBHZW5lcmFsIFBDSQogICogQWRkcmVzc2VzIGFyZSBtYXBwZWQgMS0xLgogICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQkFTRQkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CVVMJCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQlVTCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fVklSVAlDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JVUwkweDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJMHhlMTAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fVklSVAkweGUxMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCTB4MDAxMDAwMDAJLyogMU0gKi8KIAogLyogRm9yIFJUTDgxMzkgKi8KQEAgLTI4NSwxOCArMjg3LDE4IEBACiAjZGVmaW5lIF9JT19CQVNFCQkweDAwMDAwMDAwCiAKIC8qIGNvbnRyb2xsZXIgMSwgQmFzZSBhZGRyZXNzIDB4YTAwMCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCTB4YTAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUwkweGEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQlVTCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwkweGUzMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fU0laRQkweDAwMTAwMDAwCS8qIDFNICovCiAKIC8qIGNvbnRyb2xsZXIgMiwgQmFzZSBBZGRyZXNzIDB4OTAwMCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCTB4OTAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUwkweDkwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQkFTRQkweDAwMDAwMDAwCS8qIHJldXNlIG1lbSBMQVcgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19CVVMJCTB4MDAwMDAwMDAJLyogcmV1c2UgbWVtIExBVyAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhlMjAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUJMHgwMDEwMDAwMAkvKiAxTSAqLwogCkBAIC0zNjQsNyArMzY2LDcgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0RCQVQxTAkoQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUIFwKIAkJCXwgQkFUTF9HVUFSREVEU1RPUkFHRSkKLSNkZWZpbmUgQ09ORklHX1NZU19EQkFUMVUJKENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyB8IEJBVFVfQkxfMUcgfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUMVUJKENPTkZJR19TWVNfUENJMV9NRU1fVklSVCB8IEJBVFVfQkxfMUcgfCBCQVRVX1ZTIHwgQkFUVV9WUCkKICNkZWZpbmUgQ09ORklHX1NZU19JQkFUMUwJKENPTkZJR19TWVNfUENJMV9NRU1fUEhZUyB8IEJBVExfUFBfUlcgfCBCQVRMX0NBQ0hFSU5ISUJJVCkKICNkZWZpbmUgQ09ORklHX1NZU19JQkFUMVUJQ09ORklHX1NZU19EQkFUMVUKIApAQCAtMzc1LDcgKzM3Nyw3IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19EQkFUMkwJKENPTkZJR19TWVNfUENJMV9JT19QSFlTIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUIFwKIAkJCXwgQkFUTF9HVUFSREVEU1RPUkFHRSkKLSNkZWZpbmUgQ09ORklHX1NZU19EQkFUMlUJKENPTkZJR19TWVNfUENJMV9JT19QSFlTIHwgQkFUVV9CTF8xNk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUMlUJKENPTkZJR19TWVNfUENJMV9JT19WSVJUIHwgQkFUVV9CTF8xNk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKICNkZWZpbmUgQ09ORklHX1NZU19JQkFUMkwJKENPTkZJR19TWVNfUENJMV9JT19QSFlTIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUKQogI2RlZmluZSBDT05GSUdfU1lTX0lCQVQyVQlDT05GSUdfU1lTX0RCQVQyVQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTkM2NTAuaCBiL2luY2x1ZGUvY29uZmlncy9OQzY1MC5oCmluZGV4IDQyM2NhNzEuLjBiOTdmMGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9OQzY1MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9OQzY1MC5oCkBAIC0yNTAsNyArMjUwLDYgQEAKICAqIE5BTkQgZmxhc2ggc3VwcG9ydAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU1lQQ1IgLSBTeXN0ZW0gUHJvdGVjdGlvbiBDb250cm9sCQkJCQkxMS05CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTkVUUEhPTkUuaCBiL2luY2x1ZGUvY29uZmlncy9ORVRQSE9ORS5oCmluZGV4IDM0ZGU5NDcuLjJkMDRkODkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ORVRQSE9ORS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ORVRQSE9ORS5oCkBAIC01MTQsNyArNTE0LDYgQEAKICNkZWZpbmUgQUREUl9DT0xVTU5fUEFHRQkzCiAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04JMHgwMAogI2RlZmluZSBOQU5EX01BWF9GTE9PUlMJCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKIAogLyogQUxFID0gUEQxNywgQ0xFID0gUEUxOCwgQ0UgPSBQRTIwLCBGX1JZX0JZID0gUEUzMSAqLwogI2RlZmluZSBOQU5EX0RJU0FCTEVfQ0UobmFuZCkgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL05FVFRBLmggYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEuaAppbmRleCAwMDRiM2M4Li4zNGZkYmE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEuaApAQCAtNjMzLDcgKzYzMyw2IEBACiAjZGVmaW5lIEFERFJfQ09MVU1OX1BBR0UJMwogI2RlZmluZSBOQU5EX0NoaXBJRF9VTktOT1dOCTB4MDAKICNkZWZpbmUgTkFORF9NQVhfRkxPT1JTCQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAKIC8qIEFMRSA9IFBEMywgQ0xFID0gUEQ0LCBDRSA9IFBENSwgRl9SWV9CWSA9IFBDMTMgKi8KICNkZWZpbmUgTkFORF9ESVNBQkxFX0NFKG5hbmQpIFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ORVRUQTIuaCBiL2luY2x1ZGUvY29uZmlncy9ORVRUQTIuaAppbmRleCA3MDk5NWZhLi40YTI3MDI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL05FVFRBMi5oCkBAIC01MTUsNyArNTE1LDYgQEAKICNkZWZpbmUgQUREUl9DT0xVTU5fUEFHRQkzCiAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04JMHgwMAogI2RlZmluZSBOQU5EX01BWF9GTE9PUlMJCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKIAogLyogQUxFID0gUEQxNywgQ0xFID0gUEUxOCwgQ0UgPSBQRTIwLCBGX1JZX0JZID0gUEUzMSAqLwogI2RlZmluZSBOQU5EX0RJU0FCTEVfQ0UobmFuZCkgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL05FVFZJQS5oIGIvaW5jbHVkZS9jb25maWdzL05FVFZJQS5oCmluZGV4IDg3YzkyMGYuLmY5N2JkY2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ORVRWSUEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVklBLmgKQEAgLTQxMSw3ICs0MTEsNiBAQAogI2RlZmluZSBBRERSX0NPTFVNTl9QQUdFCTMKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUwkJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogCiAjZGVmaW5lIE5BTkRfRElTQUJMRV9DRShuYW5kKSBcCiAJZG8geyBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUExVNDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvUExVNDA1LmgKaW5kZXggMTFjZTAwOC4uZTlmMTY0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BMVTQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTFU0MDUuaApAQCAtMTczLDcgKzE3Myw2IEBACiAgKiBOQU5ELUZMQVNIIHN0dWZmCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVAl7Q09ORklHX1NZU19OQU5EX0JBU0V9Ci0jZGVmaW5lIE5BTkRfTUFYX0NISVBTICAgICAgICAgIDEKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMSAgICAgICAgIC8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzICovCiAjZGVmaW5lIE5BTkRfQklHX0RFTEFZX1VTCTI1CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTTg1NC5oIGIvaW5jbHVkZS9jb25maWdzL1BNODU0LmgKaW5kZXggMWNjODBhZC4uNDFlMjkwZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BNODU0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BNODU0LmgKQEAgLTcxLDcgKzcxLDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfTDJfQ0FDSEUJCQkvKiB0b2dnbGUgTDIgY2FjaGUgKi8KICNkZWZpbmUgQ09ORklHX0JUQgkJCS8qIHRvZ2dsZSBicmFuY2ggcHJlZGl0aW9uICovCi0jZGVmaW5lIENPTkZJR19BRERSX1NUUkVBTUlORwkJLyogdG9nZ2xlIGFkZHIgc3RyZWFtaW5nICovCiAKICNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRgkxCS8qIENhbGwgYm9hcmRfcHJlX2luaXQgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BNODU2LmggYi9pbmNsdWRlL2NvbmZpZ3MvUE04NTYuaAppbmRleCA2OThhZDJkLi42YjRlMmRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUE04NTYuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUE04NTYuaApAQCAtNzIsNyArNzIsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCS8qIHRvZ2dsZSBMMiBjYWNoZSAqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcgKi8KIAogI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GCTEJLyogQ2FsbCBib2FyZF9wcmVfaW5pdCAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUE1DNDQwLmggYi9pbmNsdWRlL2NvbmZpZ3MvUE1DNDQwLmgKaW5kZXggNzIxOWJiOC4uZmM0OGJjMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BNQzQ0MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTUM0NDAuaApAQCAtMjE5LDggKzIxOSw4IEBACiAjaWYgIWRlZmluZWQoQ09ORklHX05BTkRfVV9CT09UKSAmJiAhZGVmaW5lZChDT05GSUdfTkFORF9TUEwpCiAjZGVmaW5lIENPTkZJR19ERFJfREFUQV9FWUUJLyogdXNlIEREUjIgb3B0aW1pemF0aW9uICAgICAgICAqLwogI2VuZGlmCi0jZGVmaW5lIENGR19NRU1fVE9QX0hJREUJKDQgPDwgMTApIC8qIGRvbid0IHVzZSBsYXN0IDRrYnl0ZXMJKi8KLQkJCQkJLyogNDQwRVB4IGVycmF0YSBDSElQIDExCSovCisjZGVmaW5lIENPTkZJR19TWVNfTUVNX1RPUF9ISURFCSg0IDw8IDEwKSAvKiBkb24ndCB1c2UgbGFzdCA0a2J5dGVzICovCisJCQkJCQkgIC8qIDQ0MEVQeCBlcnJhdGEgQ0hJUCAxMSAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJMkMKQEAgLTQ5MCw4ICs0OTAsOCBAQAogI2VuZGlmCiAKIC8qIE1lbW9yeSBCYW5rIDEgKFJFU0VUKSBpbml0aWFsaXphdGlvbiAqLwotI2RlZmluZSBDRkdfRUJDX1BCMUFQCQkweDdmODE3MjAwIC8vMHgwMzAxNzIwMAotI2RlZmluZSBDRkdfRUJDX1BCMUNSCQkoQ0ZHX1JFU0VUX0JBU0UgfCAweDFjMDAwKQorI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjFBUAkJMHg3ZjgxNzIwMCAvKiAweDAzMDE3MjAwICovCisjZGVmaW5lIENPTkZJR19TWVNfRUJDX1BCMUNSCQkoQ09ORklHX1NZU19SRVNFVF9CQVNFIHwgMHgxYzAwMCkKIAogLyogTWVtb3J5IEJhbmsgNCAoRlBHQSAvIDMyQml0KSBpbml0aWFsaXphdGlvbiAqLwogI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjRBUAkJMHgwMzg0MGY0MAkvKiBCTUU9MCxUV1Q9NyxDU049MSxUSD03LFJFPTEsU09SPTAsQkVNPTEgKi8KQEAgLTUwNSw3ICs1MDUsNiBAQAogICogTkFORCBGTEFTSAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJKENPTkZJR19TWVNfTkFORF9BRERSICsgQ09ORklHX1NZU19OQU5EX0NTKQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfU0VMRUNUX0RFVklDRQkxIC8qIG5hbmQgZHJpdmVyIHN1cHBvcnRzIG11dGlwbC4gY2hpcHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX1FVSUVUX1RFU1QJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BQQ2hhbWVsZW9uRVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaAppbmRleCAwOWE5NjQxLi5kNDMyMmI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaApAQCAtMjI0LDggKzIyNCw2IEBACiAjZGVmaW5lIE5BTkRfQklHX0RFTEFZX1VTCTI1CiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTIJLyogTWF4IG51bWJlciBvZiBOQU5EIGRldmljZXMgKi8KIAotI2RlZmluZSBOQU5EX01BWF9DSElQUyAxCi0KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EMF9DRSAgKDB4ODAwMDAwMDAgPj4gMSkJIC8qIG91ciBDRSBpcyBHUElPMSAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkQwX1JEWSAoMHg4MDAwMDAwMCA+PiA0KQkgLyogb3VyIFJEWSBpcyBHUElPNCAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkQwX0NMRSAoMHg4MDAwMDAwMCA+PiAyKQkgLyogb3VyIENMRSBpcyBHUElPMiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1NCQzg1NDAuaCBiL2luY2x1ZGUvY29uZmlncy9TQkM4NTQwLmgKaW5kZXggMjg1M2ZiYS4uMzQxOTYzMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NCQzg1NDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvU0JDODU0MC5oCkBAIC03NSw3ICs3NSw2IEBACiAvKiBiZWxvdyBjYW4gYmUgdG9nZ2xlZCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIG90aGVyd2lzZSB1c2UgZGVmYXVsdCAqLwogI2RlZmluZSBDT05GSUdfTDJfQ0FDSEUJCQkgICAgLyogdG9nZ2xlIEwyIGNhY2hlCQkqLwogI3VuZGVmCUNPTkZJR19CVEIJCQkgICAgLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24JKi8KLSN1bmRlZglDT05GSUdfQUREUl9TVFJFQU1JTkcJCSAgICAvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcJKi8KIAogI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GIDEJICAgIC8qIENhbGwgYm9hcmRfZWFybHlfaW5pdF9mCSovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TSU1QQzgzMTMuaCBiL2luY2x1ZGUvY29uZmlncy9TSU1QQzgzMTMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjE2MjM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL1NJTVBDODMxMy5oCkBAIC0wLDAgKzEsNTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSBTaGVsZG9uIEluc3RydW1lbnRzLCBJbmMuIDIwMDgKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworLyoKKyAqIHNpbXBjODMxMyBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisvKgorICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKKyAqLworI2RlZmluZSBDT05GSUdfTkFORF9VX0JPT1QKKworI2RlZmluZSBDT05GSUdfRTMwMAkJCTEKKyNkZWZpbmUgQ09ORklHX01QQzgzWFgJCQkxCisjZGVmaW5lIENPTkZJR19NUEM4MzFYCQkJMQorI2RlZmluZSBDT05GSUdfTVBDODMxMwkJCTEKKworI2RlZmluZSBDT05GSUdfUENJCisjZGVmaW5lIENPTkZJR184M1hYX0dFTkVSSUNfUENJCisKKyNkZWZpbmUgQ09ORklHX01JU0NfSU5JVF9SCisKKy8qCisgKiBPbi1ib2FyZCBkZXZpY2VzCisgKgorICogVFNFQzEgaXMgTWFydmVsbCBQSFkgODhFMTExOAorICovCisKKyNkZWZpbmUgQ09ORklHX1NZU18zM01IWgorCisjZGVmaW5lIENPTkZJR184M1hYX0NMS0lOCQkzMzMzMzMzMwkvKiBpbiBIeiAqLworCisjZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEJCUNPTkZJR184M1hYX0NMS0lOCisKKyNkZWZpbmUgQ09ORklHX1NZU19JTU1SCQkJMHhFMDAwMDAwMAorCisjaWYgZGVmaW5lZChDT05GSUdfTkFORF9VX0JPT1QpICYmICFkZWZpbmVkKENPTkZJR19OQU5EX1NQTCkKKyNkZWZpbmUgQ09ORklHX0RFRkFVTFRfSU1NUgkJQ09ORklHX1NZU19JTU1SCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDAwMTAwMAorI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDA3ZjAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19BQ1JfUElQRV9ERVAJCTMJLyogQXJiaXRlciBwaXBlbGluZSBkZXB0aCAoMC0zKSAqLworI2RlZmluZSBDT05GSUdfU1lTX0FDUl9SUFRDTlQJCTMJLyogQXJiaXRlciByZXBlYXQgY291bnQgKDAtNykgKi8KKworLyoKKyAqIERldmljZSBjb25maWd1cmF0aW9ucworICovCisjZGVmaW5lIENPTkZJR19UU0VDMQorCisvKgorICogRERSIFNldHVwCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQkFTRQkJMHgwMDAwMDAwMAkvKiBERFIgaXMgc3lzdGVtIG1lbW9yeSovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJQ09ORklHX1NZU19ERFJfQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX0REUl9TRFJBTV9CQVNFCUNPTkZJR19TWVNfRERSX0JBU0UKKworI2RlZmluZSBDT05GSUdfVkVSWV9CSUdfUkFNCisjZGVmaW5lIENPTkZJR19NQVhfTUVNX01BUFBFRAkJKDUxMiA8PCAyMCkKKworI2RlZmluZSBDT05GSUdfU1lTX0REUkNEUgkJKCBERFJDRFJfRU4gXAorCQkJCQl8IEREUkNEUl9QWl9OT01aIFwKKwkJCQkJfCBERFJDRFJfTlpfTk9NWiBcCisJCQkJCXwgRERSQ0RSX01fT0RSICkKKwkJCQkJLyogMHg3MzAwMDAwMiBUT0RPIE9EUiAmIERSTiA/ICovCisKKy8qCisgKiBGTEFTSCBvbiB0aGUgTG9jYWwgQnVzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19OT19GTEFTSAorCisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCVRFWFRfQkFTRQkvKiBzdGFydCBvZiBtb25pdG9yICovCisKKyNpZiAhZGVmaW5lZChDT05GSUdfTkFORF9TUEwpCisjZGVmaW5lIENPTkZJR19TWVNfUkFNQk9PVAorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RkQwMDAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgxMDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSovCisKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTB4MTAwCQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAorCisvKiBDT05GSUdfU1lTX01PTklUT1JfTEVOIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBDT05GSUdfRU5WX1NFQ1RfU0laRSAqLworI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLworI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSg1MTIgKiAxMDI0KQkvKiBSZXNlcnZlZCBmb3IgbWFsbG9jICovCisKKy8qCisgKiBMb2NhbCBCdXMgTENSUiBhbmQgTEJDUiByZWdzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MQ1JSCQkoTENSUl9EQllQIHwgTENSUl9FQURDXzEgfCBMQ1JSX0NMS0RJVl8yKQorI2RlZmluZSBDT05GSUdfU1lTX0xCQ19MQkNSCSgweDAwMDQwMDAwIC8qIFRPRE8gKi8gXAorCQkJCXwgKDB4RkYgPDwgTEJDUl9CTVRfU0hJRlQpIFwKKwkJCQl8IDB4RiApCS8qIDB4MDAwNGZmMGYgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0xCQ19NUlRQUgkweDIwMDAwMDAwCS8qIExCIHJlZnJlc2ggdGltZXIgcHJlc2NhbCwgMjY2TUh6LzMyICovCisKKy8qIGRyaXZlcnMvbXRkL25hbmQvbmFuZC5jICovCisjaWZkZWYgQ09ORklHX05BTkRfU1BMCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkweEZGRjAwMDAwCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHhFMjgwMDAwMAorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQorI2RlZmluZSBOQU5EX01BWF9DSElQUwkJCTEKKyNkZWZpbmUgQ09ORklHX01URF9OQU5EX1ZFUklGWV9XUklURQorI2RlZmluZSBDT05GSUdfQ01EX05BTkQgCQkxCisjZGVmaW5lIENPTkZJR19OQU5EX0ZTTF9FTEJDCQkxCisKKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX1VfQk9PVF9TSVpFCSg1MTIgPDwgMTApCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9VX0JPT1RfRFNUCTB4MDAxMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX1VfQk9PVF9TVEFSVAkweDAwMTAwMTAwCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9VX0JPT1RfUkVMT0MJMHgwMDAxMDAwMAorCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CUl9QUkVMSU0JKCBDT05GSUdfU1lTX05BTkRfQkFTRSBcCisJCQkJCXwgKDI8PEJSX0RFQ0NfU0hJRlQpCS8qIFVzZSBIVyBFQ0MgKi8gXAorCQkJCQl8IEJSX1BTXzgJCS8qIFBvcnQgU2l6ZSA9IDggYml0ICovIFwKKwkJCQkJfCBCUl9NU19GQ00JCS8qIE1TRUwgPSBGQ00gKi8gXAorCQkJCQl8IEJSX1YgKQkJLyogdmFsaWQgKi8KKworI2lmZGVmIENPTkZJR19OQU5EX1NQCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9PUl9QUkVMSU0JKCAweEZGRkY4MDAwCS8qIGxlbmd0aCAzMksgKi8gXAorCQkJCQl8IE9SX0ZDTV9DU0NUIFwKKwkJCQkJfCBPUl9GQ01fQ1NUIFwKKwkJCQkJfCBPUl9GQ01fQ0hUIFwKKwkJCQkJfCBPUl9GQ01fU0NZXzEgXAorCQkJCQl8IE9SX0ZDTV9UUkxYIFwKKwkJCQkJfCBPUl9GQ01fRUhUUiApCisjZGVmaW5lIENPTkZJR19TWVNfTEJMQVdBUjBfUFJFTElNCTB4ODAwMDAwMEUJLyogMzJLQiAqLworI2RlZmluZSBDT05GSUdfU1lTX05BTkRfUEFHRV9TSVpFCSg1MTIpCQkvKiBOQU5EIGNoaXAgcGFnZSBzaXplICovCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CTE9DS19TSVpFCSgxNiA8PCAxMCkJLyogTkFORCBjaGlwIGJsb2NrIHNpemUgKi8KKyNkZWZpbmUgTkFORF9DQUNIRV9QQUdFUwkJMzIKKyNlbGlmIGRlZmluZWQoQ09ORklHX05BTkRfTFApCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9PUl9QUkVMSU0JKCAweEZGRkMwMDAwCS8qIGxlbmd0aCAyNTZLICovIFwKKwkJCQkJfCBPUl9GQ01fUEdTIFwKKwkJCQkJfCBPUl9GQ01fQ1NDVCBcCisJCQkJCXwgT1JfRkNNX0NTVCBcCisJCQkJCXwgT1JfRkNNX0NIVCBcCisJCQkJCXwgT1JfRkNNX1NDWV8xIFwKKwkJCQkJfCBPUl9GQ01fVFJMWCBcCisJCQkJCXwgT1JfRkNNX0VIVFIgKQorI2RlZmluZSBDT05GSUdfU1lTX0xCTEFXQVIwX1BSRUxJTQkweDgwMDAwMDExCS8qIDI1NktCICovCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9QQUdFX1NJWkUJKDIwNDgpCQkvKiBOQU5EIGNoaXAgcGFnZSBzaXplICovCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CTE9DS19TSVpFCSgxMjggPDwgMTApCS8qIE5BTkQgY2hpcCBibG9jayBzaXplICovCisjZGVmaW5lIE5BTkRfQ0FDSEVfUEFHRVMJCTY0CisjZWxzZQorI2Vycm9yIFBhZ2Ugc2l6ZSBvZiBOQU5EIG5vdCBkZWZpbmVkLgorI2VuZGlmIC8qIENPTkZJR19OQU5EX1NQICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX1VfQk9PVF9PRkZTCUNPTkZJR19TWVNfTkFORF9CTE9DS19TSVpFCisKKyNkZWZpbmUgQ09ORklHX1NZU19CUjBfUFJFTElNCQlDT05GSUdfU1lTX05BTkRfQlJfUFJFTElNCisjZGVmaW5lIENPTkZJR19TWVNfT1IwX1BSRUxJTQkJQ09ORklHX1NZU19OQU5EX09SX1BSRUxJTQorCisjZGVmaW5lIENPTkZJR19TWVNfTEJMQVdCQVIwX1BSRUxJTQlDT05GSUdfU1lTX05BTkRfQkFTRQorCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9MQkxBV0JBUl9QUkVMSU0JQ09ORklHX1NZU19MQkxBV0JBUjBfUFJFTElNCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9MQkxBV0FSX1BSRUxJTQlDT05GSUdfU1lTX0xCTEFXQVIwX1BSRUxJTQorCisvKgorICogSkZGUzIgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19KRkZTMl9OQU5ECisjZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJIm5hbmQwIgorCisvKiBtdGRwYXJ0cyBjb21tYW5kIGxpbmUgc3VwcG9ydCAqLworI2RlZmluZSBDT05GSUdfSkZGUzJfQ01ETElORQorI2RlZmluZSBNVERJRFNfREVGQVVMVAkJIm5hbmQwPW5hbmQwIgorI2RlZmluZSBNVERQQVJUU19ERUZBVUxUCSJtdGRwYXJ0cz1uYW5kMDoyTSh1LWJvb3QpLDZNKGtlcm5lbCksLShqZmZzMikiCisKKy8qIHBhc3Mgb3BlbiBmaXJtd2FyZSBmbGF0IHRyZWUgKi8KKyNkZWZpbmUgQ09ORklHX09GX0xJQkZEVAkJMQorI2RlZmluZSBDT05GSUdfT0ZfQk9BUkRfU0VUVVAJCTEKKyNkZWZpbmUgQ09ORklHX09GX1NURE9VVF9WSUFfQUxJQVMJMQorCisvKgorICogU2VyaWFsIFBvcnQKKyAqLworI2RlZmluZSBDT05GSUdfQ09OU19JTkRFWAkJMQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTAKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1NFUklBTAorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUJMQorCisjZGVmaW5lIENPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUJXAorCXszMDAsIDYwMCwgMTIwMCwgMjQwMCwgNDgwMCwgOTYwMCwgMTkyMDAsIDM4NDAwLCAxMTUyMDB9CisKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTEJCShDT05GSUdfU1lTX0lNTVIrMHg0NTAwKQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ09NMgkJKENPTkZJR19TWVNfSU1NUisweDQ2MDApCisKKy8qIFVzZSB0aGUgSFVTSCBwYXJzZXIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgorI2RlZmluZSBDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMgkiPiAiCisKKy8qIEkyQyAqLworI2RlZmluZSBDT05GSUdfSEFSRF9JMkMJCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0Ki8KKyNkZWZpbmUgQ09ORklHX0ZTTF9JMkMKKyNkZWZpbmUgQ09ORklHX0kyQ19NVUxUSV9CVVMKKyNkZWZpbmUgQ09ORklHX0kyQ19DTURfVFJFRQorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TUEVFRAkJNDAwMDAwCS8qIEkyQyBzcGVlZCBhbmQgc2xhdmUgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TTEFWRQkJMHg3RgorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19OT1BST0JFUwkJe3swLDB4Njl9fSAvKiBEb24ndCBwcm9iZSB0aGVzZSBhZGRycyAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19PRkZTRVQJCTB4MzAwMAorI2RlZmluZSBDT05GSUdfU1lTX0kyQzJfT0ZGU0VUCQkweDMxMDAKKworLyoKKyAqIEdlbmVyYWwgUENJCisgKiBBZGRyZXNzZXMgYXJlIG1hcHBlZCAxLTEuCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NTUlPX0JBU0UJMHg5MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTU1JT19QSFlTCUNPTkZJR19TWVNfUENJMV9NTUlPX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01NSU9fU0laRQkweDEwMDAwMDAwCS8qIDI1Nk0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJCTB4RTIwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1NJWkUJCTB4MDAxMDAwMDAJLyogMU0gKi8KKworI2RlZmluZSBDT05GSUdfUENJX1BOUAkJCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENJX1NVQlNZU19WRU5ET1JJRAkweDEwNTcJLyogTW90b3JvbGEgKi8KKworLyoKKyAqIFRTRUMKKyAqLworI2RlZmluZSBDT05GSUdfVFNFQ19FTkVUCQkvKiBUU0VDIGV0aGVybmV0IHN1cHBvcnQgKi8KKworI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCisjZGVmaW5lIENPTkZJR19HTUlJCQkJLyogTUlJIFBIWSBtYW5hZ2VtZW50ICovCisKKyNpZmRlZiBDT05GSUdfVFNFQzEKKyNkZWZpbmUgQ09ORklHX0hBU19FVEgwCisjZGVmaW5lIENPTkZJR19UU0VDMV9OQU1FCQkiVFNFQzAiCisjZGVmaW5lIENPTkZJR19TWVNfVFNFQzFfT0ZGU0VUCQkweDI0MDAwCisjZGVmaW5lIFRTRUMxX1BIWV9BRERSCQkJMHgwCisjZGVmaW5lIFRTRUMxX0ZMQUdTCQkJVFNFQ19HSUdBQklUCisjZGVmaW5lIFRTRUMxX1BIWUlEWAkJCTAKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1RTRUMyCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMQorI2RlZmluZSBDT05GSUdfVFNFQzJfTkFNRQkJIlRTRUMxIgorI2RlZmluZSBDT05GSUdfU1lTX1RTRUMyX09GRlNFVAkJMHgyNTAwMAorI2RlZmluZSBUU0VDMl9QSFlfQUREUgkJCTQKKyNkZWZpbmUgVFNFQzJfRkxBR1MJCQlUU0VDX0dJR0FCSVQKKyNkZWZpbmUgVFNFQzJfUEhZSURYCQkJMAorI2VuZGlmCisKKworLyogT3B0aW9ucyBhcmU6IFRTRUNbMC0xXSAqLworI2RlZmluZSBDT05GSUdfRVRIUFJJTUUJCQkiVFNFQzEiCisKKy8qCisgKiBDb25maWd1cmUgb24tYm9hcmQgUlRDCisgKi8KKyNkZWZpbmUgQ09ORklHX1JUQ19EUzEzMzcKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUlRDX0FERFIJCTB4NjgKKworLyoKKyAqIEVudmlyb25tZW50CisgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19OQU5EX1VfQk9PVCkKKwkjZGVmaW5lIENPTkZJR19FTlZfSVNfSU5fTkFORAkJMQorCSNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVQJCSg3NjggKiAxMDI0KQorCSNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJCUNPTkZJR19TWVNfTkFORF9CTE9DS19TSVpFCisJI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQlDT05GSUdfRU5WX1NFQ1RfU0laRQorCSNkZWZpbmUgQ09ORklHX0VOVl9TSVpFX1JFRFVORAkJQ09ORklHX0VOVl9TSVpFCisJI2RlZmluZSBDT05GSUdfRU5WX1JBTkdFCQkoQ09ORklHX0VOVl9TRUNUX1NJWkUgKiA0KQorCSNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVRfUkVEVU5ECShDT05GSUdfRU5WX09GRlNFVCArIENPTkZJR19FTlZfUkFOR0UpCisjZWxpZiAhZGVmaW5lZChDT05GSUdfU1lTX1JBTUJPT1QpCisJI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICQkxCisJI2RlZmluZSBDT05GSUdfRU5WX0FERFIJCQkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgKyBDT05GSUdfU1lTX01PTklUT1JfTEVOKQorCSNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJCTB4MTAwMDAJLyogNjRLKG9uZSBzZWN0b3IpIGZvciBlbnYgKi8KKwkjZGVmaW5lIENPTkZJR19FTlZfU0laRQkJCTB4MjAwMAorCisvKiBBZGRyZXNzIGFuZCBzaXplIG9mIFJlZHVuZGFudCBFbnZpcm9ubWVudCBTZWN0b3IgKi8KKyNlbHNlCisJI2RlZmluZSBDT05GSUdfRU5WX0lTX05PV0hFUkUJCTEJLyogU3RvcmUgRU5WIGluIG1lbW9yeSBvbmx5ICovCisJI2RlZmluZSBDT05GSUdfRU5WX0FERFIJCQkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgLSAweDEwMDApCisJI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkweDIwMDAKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCQkJMQkvKiBlY2hvIG9uIGZvciBzZXJpYWwgZG93bmxvYWQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MT0FEU19CQVVEX0NIQU5HRQkJMQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UgKi8KKworLyoKKyAqIEJPT1RQIG9wdGlvbnMKKyAqLworI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCisjZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAorI2RlZmluZSBDT05GSUdfQk9PVFBfR0FURVdBWQorI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUKKworCisvKgorICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCisgKi8KKyNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KKyN1bmRlZiBDT05GSUdfQ01EX0lNTFMKKyN1bmRlZiBDT05GSUdfQ01EX0ZMQVNICisKKyNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCisjZGVmaW5lIENPTkZJR19DTURfREhDUAorI2RlZmluZSBDT05GSUdfQ01EX0kyQworI2RlZmluZSBDT05GSUdfQ01EX01JSQorI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKKyNkZWZpbmUgQ09ORklHX0NNRF9QQ0kKKyNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgorCisjaWYgZGVmaW5lZChDT05GSUdfU1lTX1JBTUJPT1QpICYmICFkZWZpbmVkKENPTkZJR19OQU5EX1VfQk9PVCkKKwkjdW5kZWYgQ09ORklHX0NNRF9FTlYKKwkjdW5kZWYgQ09ORklHX0NNRF9MT0FEUworI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJMQorCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeSAqLworI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCQkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkJMTAyNAkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRQkJKCBDT05GSUdfU1lTX0NCU0laRQkJXAorCQkJCQkrIHNpemVvZihDT05GSUdfU1lTX1BST01QVCkJXAorCQkJCQkrIDE2ICkJLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCQkxNgkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JBUkdTSVpFCQlDT05GSUdfU1lTX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCQkvKiBkZWNyZW1lbnRlciBmcmVxOiAxbXMgdGlja3MgKi8KKworLyoKKyAqIEZvciBib290aW5nIExpbnV4LCB0aGUgYm9hcmQgaW5mbyBhbmQgY29tbWFuZCBsaW5lIGRhdGEKKyAqIGhhdmUgdG8gYmUgaW4gdGhlIGZpcnN0IDggTUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCisgKiB0aGUgbWF4aW11bSBtYXBwZWQgYnkgdGhlIExpbnV4IGtlcm5lbCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJCSg4IDw8IDIwKQkvKiBJbml0aWFsIE1lbW9yeSBtYXAgZm9yIExpbnV4Ki8KKworI2RlZmluZSBDT05GSUdfU1lTX1JDV0hfUENJSE9TVAkJMHg4MDAwMDAwMAkvKiBQQ0lIT1NUICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19IUkNXX0xPVwkJKCBIUkNXTF9MQ0xfQlVTX1RPX1NDQl9DTEtfMVgxCVwKKwkJCQkJfCAweDIwMDAwMDAwIC8qIHJlc2VydmVkICovCVwKKwkJCQkJfCBIUkNXTF9ERFJfVE9fU0NCX0NMS18yWDEJXAorCQkJCQl8IEhSQ1dMX0NTQl9UT19DTEtJTl80WDEJXAorCQkJCQl8IEhSQ1dMX0NPUkVfVE9fQ1NCXzJfNVgxICkKKworI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLCQkoQ09ORklHXzgzWFhfQ0xLSU4gKiA0KQorCisjZGVmaW5lIENPTkZJR19TWVNfSFJDV19ISUdIX0JBU0UJKCBIUkNXSF9QQ0lfSE9TVAkJXAorCQkJCQl8IEhSQ1dIX1BDSTFfQVJCSVRFUl9FTkFCTEUJXAorCQkJCQl8IEhSQ1dIX0NPUkVfRU5BQkxFCQlcCisJCQkJCXwgSFJDV0hfQk9PVFNFUV9ESVNBQkxFCQlcCisJCQkJCXwgSFJDV0hfU1dfV0FUQ0hET0dfRElTQUJMRQlcCisJCQkJCXwgSFJDV0hfVFNFQzFNX0lOX1JHTUlJCQlcCisJCQkJCXwgSFJDV0hfVFNFQzJNX0lOX1JHTUlJCQlcCisJCQkJCXwgSFJDV0hfQklHX0VORElBTgkJXAorCQkJCQl8IEhSQ1dIX0xBTEVfTk9STUFMICkKKworI2lmZGVmIENPTkZJR19OQU5EX0xQCisjZGVmaW5lIENPTkZJR19TWVNfSFJDV19ISUdICSggQ09ORklHX1NZU19IUkNXX0hJR0hfQkFTRQkJXAorCQkJCXwgSFJDV0hfRlJPTV8wWEZGRjAwMTAwCQkJXAorCQkJCXwgSFJDV0hfUk9NX0xPQ19OQU5EX0xQXzhCSVQJCVwKKwkJCQl8IEhSQ1dIX1JMX0VYVF9OQU5EKQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19IUkNXX0hJR0gJKCBDT05GSUdfU1lTX0hSQ1dfSElHSF9CQVNFCQlcCisJCQkJfCBIUkNXSF9GUk9NXzBYRkZGMDAxMDAJCQlcCisJCQkJfCBIUkNXSF9ST01fTE9DX05BTkRfU1BfOEJJVAkJXAorCQkJCXwgSFJDV0hfUkxfRVhUX05BTkQgKQorI2VuZGlmCisKKy8qIFN5c3RlbSBJTyBDb25maWcgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TSUNSSAkoIFNJQ1JIX0VUU0VDMl9CCVwKKwkJCQl8IFNJQ1JIX0VUU0VDMl9DCVwKKwkJCQl8IFNJQ1JIX0VUU0VDMl9ECVwKKwkJCQl8IFNJQ1JIX0VUU0VDMl9FCVwKKwkJCQl8IFNJQ1JIX0VUU0VDMl9GCVwKKwkJCQl8IFNJQ1JIX0VUU0VDMl9HCVwKKwkJCQl8IFNJQ1JIX1RTT0JJMQkJXAorCQkJCXwgU0lDUkhfVFNPQkkyICkKKyNkZWZpbmUgQ09ORklHX1NZU19TSUNSTAkoU0lDUkxfVVNCRFIJCVwKKwkJCQl8IFNJQ1JMX0VUU0VDMl9BICkKKworI2RlZmluZSBDT05GSUdfU1lTX0hJRDBfSU5JVAkweDAwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0hJRDBfRklOQUwJKEhJRDBfRU5BQkxFX01BQ0hJTkVfQ0hFQ0sJXAorCQkJCXwgSElEMF9FTkFCTEVfRFlOQU1JQ19QT1dFUl9NQU5BR01FTlQgKQorCisjZGVmaW5lIENPTkZJR19TWVNfSElEMgkJSElEMl9IQkUKKworI2RlZmluZSBDT05GSUdfSElHSF9CQVRTCTEJLyogSGlnaCBCQVRzIHN1cHBvcnRlZCAqLworCisvKiBERFIgQCAweDAwMDAwMDAwICovCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDBMCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBCQVRMX1BQXzEwKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQwVQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgQkFUVV9CTF8yNTZNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDFMCSgoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgMHgxMDAwMDAwMCkgfCBCQVRMX1BQXzEwKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQxVQkoKENPTkZJR19TWVNfU0RSQU1fQkFTRSArIDB4MTAwMDAwMDApIHwgQkFUVV9CTF8yNTZNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisKKy8qIFBDSSBAIDB4ODAwMDAwMDAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUMkwJKENPTkZJR19TWVNfUENJMV9NRU1fQkFTRSB8IEJBVExfUFBfMTApCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDJVCShDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUM0wJKENPTkZJR19TWVNfUENJMV9NTUlPX0JBU0UgfCBCQVRMX1BQXzEwIHwgQkFUTF9DQUNIRUlOSElCSVQgfCBCQVRMX0dVQVJERURTVE9SQUdFKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQzVQkoQ09ORklHX1NZU19QQ0kxX01NSU9fQkFTRSB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorCisvKiBQQ0kyIG5vdCBzdXBwb3J0ZWQgb24gODMxMyAqLworI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ0TAkoMCkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUNFUJKDApCisKKy8qIElNTVJCQVIgQCAweEUwMDAwMDAwLCBQQ0kgSU8gQCAweEUyMDAwMDAwICovCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDVMCShDT05GSUdfU1lTX0lNTVIgfCBCQVRMX1BQXzEwIHwgQkFUTF9DQUNIRUlOSElCSVQgfCBCQVRMX0dVQVJERURTVE9SQUdFKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ1VQkoQ09ORklHX1NZU19JTU1SIHwgQkFUVV9CTF8yNTZNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisKKy8qIFNEUkFNIEAgMHhGMDAwMDAwMCwgc3RhY2sgaW4gRENBQ0hFIDB4RkRGMDAwMDAgJiBGTEFTSCBAIDB4RkUwMDAwMDAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUNkwJKDB4RjAwMDAwMDAgfCBCQVRMX1BQXzEwKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ2VQkoMHhGMDAwMDAwMCB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDdMCSgwKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ3VQkoMCkKKworI2RlZmluZSBDT05GSUdfU1lTX0RCQVQwTAlDT05GSUdfU1lTX0lCQVQwTAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQwVQlDT05GSUdfU1lTX0lCQVQwVQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQxTAlDT05GSUdfU1lTX0lCQVQxTAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQxVQlDT05GSUdfU1lTX0lCQVQxVQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQyTAlDT05GSUdfU1lTX0lCQVQyTAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQyVQlDT05GSUdfU1lTX0lCQVQyVQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQzTAlDT05GSUdfU1lTX0lCQVQzTAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQzVQlDT05GSUdfU1lTX0lCQVQzVQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ0TAlDT05GSUdfU1lTX0lCQVQ0TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ0VQlDT05GSUdfU1lTX0lCQVQ0VQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ1TAlDT05GSUdfU1lTX0lCQVQ1TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ1VQlDT05GSUdfU1lTX0lCQVQ1VQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ2TAlDT05GSUdfU1lTX0lCQVQ2TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ2VQlDT05GSUdfU1lTX0lCQVQ2VQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ3TAlDT05GSUdfU1lTX0lCQVQ3TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ3VQlDT05GSUdfU1lTX0lCQVQ3VQorCisvKgorICogSW50ZXJuYWwgRGVmaW5pdGlvbnMKKyAqCisgKiBCb290IEZsYWdzCisgKi8KKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkweDAxCS8qIE5vcm1hbCBQb3dlci1PbjogQm9vdCBmcm9tIEZMQVNIICovCisjZGVmaW5lIEJPT1RGTEFHX1dBUk0JMHgwMgkvKiBTb2Z0d2FyZSByZWJvb3QgKi8KKworLyoKKyAqIEVudmlyb25tZW50IENvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQorCisjZGVmaW5lIENPTkZJR19ORVRERVYJCWV0aDEKKworI2RlZmluZSBDT05GSUdfSE9TVE5BTUUJCXNpbXBjODMxMworI2RlZmluZSBDT05GSUdfUk9PVFBBVEgJCS90ZnRwYm9vdC8KKyNkZWZpbmUgQ09ORklHX0JPT1RGSUxFCQkvdGZ0cGJvb3QvdUltYWdlCisjZGVmaW5lIENPTkZJR19VQk9PVFBBVEgJdS1ib290LW5hbmQuYmluCS8qIFUtQm9vdCBpbWFnZSBvbiBURlRQIHNlcnZlciAqLworI2RlZmluZSBDT05GSUdfRkRURklMRQkJc2ltcGM4MzEzLmR0YgorCisjZGVmaW5lIENPTkZJR19MT0FEQUREUgkJNTAwMDAwCS8qIGRlZmF1bHQgbG9jYXRpb24gZm9yIHRmdHAgYW5kIGJvb3RtICovCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJNQkvKiA1IHNlY29uZCBkZWxheSAqLworI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAorCisjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkibmFuZCByZWFkICRsb2FkYWRkciBrZXJuZWwgNjAwMDAwO2Jvb3RtICRsb2FkYWRkciAtICRmZHRhZGRyIgorCisjZGVmaW5lIFhNS19TVFIoeCkJI3gKKyNkZWZpbmUgTUtfU1RSKHgpCVhNS19TVFIoeCkKKworI2RlZmluZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTIFwKKwkibmV0ZGV2PSIgTUtfU1RSKENPTkZJR19ORVRERVYpICJcMCIJCQkJXAorCSJldGhwcmltZT1UU0VDMVwwIgkJCQkJCVwKKwkidWJvb3Q9IiBNS19TVFIoQ09ORklHX1VCT09UUEFUSCkgIlwwIgkJCQlcCisJInRmdHBmbGFzaD10ZnRwYm9vdCAkbG9hZGFkZHIgJHVib290OyAiCQkJCVwKKwkJInByb3RlY3Qgb2ZmICIgTUtfU1RSKFRFWFRfQkFTRSkgIiArJGZpbGVzaXplOyAiCVwKKwkJImVyYXNlICIgTUtfU1RSKFRFWFRfQkFTRSkgIiArJGZpbGVzaXplOyAiCQlcCisJCSJjcC5iICRsb2FkYWRkciAiIE1LX1NUUihURVhUX0JBU0UpICIgJGZpbGVzaXplOyAiCVwKKwkJInByb3RlY3Qgb24gIiBNS19TVFIoVEVYVF9CQVNFKSAiICskZmlsZXNpemU7ICIJCVwKKwkJImNtcC5iICRsb2FkYWRkciAiIE1LX1NUUihURVhUX0JBU0UpICIgJGZpbGVzaXplXDAiCVwKKwkiZmR0YWRkcj1hZTAwMDBcMCIJCQkJCQlcCisJImZkdGZpbGU9IiBNS19TVFIoQ09ORklHX0ZEVEZJTEUpICJcMCIJCQkJXAorCSJjb25zb2xlPXR0eVMwXDAiCQkJCQkJXAorCSJzZXRib290YXJncz1zZXRlbnYgYm9vdGFyZ3MgIgkJCQkJXAorCQkicm9vdD0kcm9vdGRldiBydyBjb25zb2xlPSRjb25zb2xlLCRiYXVkcmF0ZSAkb3RoYm9vdGFyZ3NcMCIgXAorCSJzZXRpcGFyZ3M9c2V0ZW52IGJvb3RhcmdzIG5mc3Jvb3Q9JHNlcnZlcmlwOiRyb290cGF0aCAiCSBcCisJCSJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTokbmV0ZGV2Om9mZiAiIFwKKwkJInJvb3Q9JHJvb3RkZXYgcncgY29uc29sZT0kY29uc29sZSwkYmF1ZHJhdGUgJG90aGJvb3RhcmdzXDAiCVwKKwkibG9hZF91Ym9vdD10ZnRwIDEwMDAwMCB1LWJvb3QtbmFuZC5iaW5cMCIJCQlcCisJImJ1cm5fdWJvb3Q9bmFuZCBlcmFzZSB1LWJvb3QgODAwMDA7ICIJCQkJXAorCQkibmFuZCB3cml0ZSAxMDAwMDAgdS1ib290ICRmaWxlc2l6ZVwwIgkJCVwKKwkidXBkYXRlX3Vib290PXJ1biBsb2FkX3Vib290O3J1biBidXJuX3Vib290XDAiCQkJXAorCSJtdGRpZHM9bmFuZDA9bmFuZDBcMCIJCQkJCQlcCisJIm10ZHBhcnRzPW10ZHBhcnRzPW5hbmQwOjJNKHUtYm9vdCksNk0oa2VybmVsKSwtKGpmZnMyKVwwIglcCisJIm5mc2FyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgIgkJCVwKKwkJIm5mc3Jvb3Q9JHtzZXJ2ZXJpcH06JHtyb290cGF0aH1cMCIJCQlcCisJInJhbWFyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9yYW0gcndcMCIJCQlcCisJImFkZGlwPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSAiCQkJCVwKKwkJImlwPSR7aXBhZGRyfToke3NlcnZlcmlwfToke2dhdGV3YXlpcH06JHtuZXRtYXNrfSIJXAorCQkiOiR7aG9zdG5hbWV9OiR7bmV0ZGV2fTpvZmYgcGFuaWM9MVwwIgkJCVwKKwkiYWRkdHR5PXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSBjb25zb2xlPXR0eVMwLCR7YmF1ZHJhdGV9XDAiCVwKKwkiYm9vdGFyZ3M9cm9vdD0vZGV2L210ZGJsb2NrMiByb290ZnN0eXBlPWpmZnMyIHJ3ICIJCVwKKwkJImNvbnNvbGU9dHR5UzAsMTE1MjAwXDAiCQkJCVwKKwkiIgorCisjZGVmaW5lIENPTkZJR19ORlNCT09UQ09NTUFORAkJCQkJCVwKKwkic2V0ZW52IHJvb3RkZXYgL2Rldi9uZnM7IgkJCQkJXAorCSJydW4gc2V0Ym9vdGFyZ3M7IgkJCQkJCVwKKwkicnVuIHNldGlwYXJnczsiCQkJCQkJXAorCSJ0ZnRwICRsb2FkYWRkciAkYm9vdGZpbGU7IgkJCQkJXAorCSJ0ZnRwICRmZHRhZGRyICRmZHRmaWxlOyIJCQkJCVwKKwkiYm9vdG0gJGxvYWRhZGRyIC0gJGZkdGFkZHIiCisKKyNkZWZpbmUgQ09ORklHX1JBTUJPT1RDT01NQU5ECQkJCQkJXAorCSJzZXRlbnYgcm9vdGRldiAvZGV2L3JhbTsiCQkJCQlcCisJInJ1biBzZXRib290YXJnczsiCQkJCQkJXAorCSJ0ZnRwICRyYW1kaXNrYWRkciAkcmFtZGlza2ZpbGU7IgkJCQlcCisJInRmdHAgJGxvYWRhZGRyICRib290ZmlsZTsiCQkJCQlcCisJInRmdHAgJGZkdGFkZHIgJGZkdGZpbGU7IgkJCQkJXAorCSJib290bSAkbG9hZGFkZHIgJHJhbWRpc2thZGRyICRmZHRhZGRyIgorCisjdW5kZWYgTUtfU1RSCisjdW5kZWYgWE1LX1NUUgorCisjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmggYi9pbmNsdWRlL2NvbmZpZ3MvU1hOSTg1NVQuaAppbmRleCA3ZmM0NTViLi45ODU3YmY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvU1hOSTg1NVQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvU1hOSTg1NVQuaApAQCAtMjA2LDcgKzIwNiw2IEBACiAKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUyAxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTIDEKIAogLyogREZCVVNZIGlzIGF2YWlsYWJsZSBvbiBQb3J0IEMsIGJpdCAxMjsgMCBpZiBidXN5ICovCiAjZGVmaW5lIE5BTkRfV0FJVF9SRUFEWShuYW5kKQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODI3Mi5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTgyNzIuaAppbmRleCAxOTE1YTczLi45Y2FjNjk2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODI3Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04MjcyLmgKQEAgLTQyNCw3ICs0MjQsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX05BTkQzX0JBU0UgKENPTkZJR19TWVNfTkFORDJfQkFTRSArIENPTkZJR19TWVNfTkFORF9DU19ESVNUKQogCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFICAgICA0ICAgICAgIC8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzICAgICAgICAgICAqLwotI2RlZmluZSBOQU5EX01BWF9DSElQUyAxCiAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVCB7IENPTkZJR19TWVNfTkFORDBfQkFTRSwgXAogCQkJICAgICBDT05GSUdfU1lTX05BTkQxX0JBU0UsIFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UUU04NXh4LmggYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODV4eC5oCmluZGV4IDMwMGY0OTAuLmY1ODMxZWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UUU04NXh4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RRTTg1eHguaApAQCAtMTA2LDcgKzEwNiw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0wyX0NBQ0hFCQkJLyogdG9nZ2xlIEwyIGNhY2hlCQkqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24JKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcJKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfREJDUiBEQkNSX0lETQkJLyogRW5hYmxlIERlYnVnIEV4Y2VwdGlvbnMJKi8KIApAQCAtMzY0LDcgKzM2Myw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTkFORDNfQkFTRQkJKENPTkZJR19TWVNfTkFORDJfQkFTRSArIENPTkZJR19TWVNfTkFORF9DU19ESVNUKQogCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFICAgICAyCS8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzCSovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAKICNpZiAoQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UgPT0gMSkKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVCB7IENPTkZJR19TWVNfTkFORDBfQkFTRSB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaCBiL2luY2x1ZGUvY29uZmlncy9WQ01BOS5oCmluZGV4IDBiYzJmNjguLjgzZDBkNTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9WQ01BOS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9WQ01BOS5oCkBAIC0yNjQsNyArMjY0LDYgQEAKIAogI2RlZmluZSBOQU5EX0NoaXBJRF9VTktOT1dOCTB4MDAKICNkZWZpbmUgTkFORF9NQVhfRkxPT1JTIDEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgMQogCiAjZGVmaW5lIE5BTkRfV0FJVF9SRUFEWShuYW5kKQlORl9XYWl0UkIoKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVk9INDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvVk9INDA1LmgKaW5kZXggMTBlZjYyMC4uZjE3M2JjYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1ZPSDQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9WT0g0MDUuaApAQCAtMTU5LDcgKzE1OSw2IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVAl7IENPTkZJR19TWVNfTkFORF9CQVNFIH0KLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgICAgICAgICAgMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxICAgICAgICAgLyogTWF4IG51bWJlciBvZiBOQU5EIGRldmljZXMgKi8KICNkZWZpbmUgTkFORF9CSUdfREVMQVlfVVMJMjUKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1dVSDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1dVSDQwNS5oCmluZGV4IDAxY2RmM2EuLmRlNmUxMmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9XVUg0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvV1VINDA1LmgKQEAgLTE0Nyw3ICsxNDcsNiBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFX0xJU1QJeyBDT05GSUdfU1lTX05BTkRfQkFTRSB9Ci0jZGVmaW5lIE5BTkRfTUFYX0NISVBTICAgICAgICAgIDEKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMSAgICAgICAgIC8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzICovCiAjZGVmaW5lIE5BTkRfQklHX0RFTEFZX1VTCTI1CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oIGIvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MjAwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRmNjg1NQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oCkBAIC0wLDAgKzEsNTQ2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA0LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiB4cGVkaXRlNTIwMCBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKKyAqLworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX0JPT0tFCQkxCS8qIEJPT0tFICovCisjZGVmaW5lIENPTkZJR19FNTAwCQkxCS8qIEJPT0tFIGU1MDAgZmFtaWx5ICovCisjZGVmaW5lIENPTkZJR19NUEM4NXh4CQkxCS8qIE1QQzg1NDAvNjAvNTUvNDEvNDggKi8KKyNkZWZpbmUgQ09ORklHX01QQzg1NDgJCTEKKyNkZWZpbmUgQ09ORklHX1hQRURJVEU1MjAwCTEKKyNkZWZpbmUgQ09ORklHX1NZU19CT0FSRF9OQU1FCSJYUGVkaXRlNTIwMCIKKyNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfUgkvKiBDYWxsIGJvYXJkX3ByZV9pbml0ICovCisjZGVmaW5lIENPTkZJR19SRUxPQ19GSVhVUF9XT1JLUwkvKiBGdWxseSByZWxvY2F0ZSB0byBTRFJBTSAqLworCisjZGVmaW5lIENPTkZJR19QQ0kJCTEJLyogRW5hYmxlIFBDSS9QQ0lFICovCisjZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkxCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICovCisjZGVmaW5lIENPTkZJR19QQ0lfU0NBTl9TSE9XCTEJLyogc2hvdyBwY2kgZGV2aWNlcyBvbiBzdGFydHVwICovCisjZGVmaW5lIENPTkZJR19QQ0kxCQkxCS8qIFBDSSBjb250cm9sbGVyIDEgKi8KKyNkZWZpbmUgQ09ORklHX0ZTTF9QQ0lfSU5JVAkxCS8qIFVzZSBjb21tb24gRlNMIGluaXQgY29kZSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSV82NEJJVAkxCS8qIGVuYWJsZSA2NC1iaXQgUENJIHJlc291cmNlcyAqLworI2RlZmluZSBDT05GSUdfRlNMX0xBVwkJMQkvKiBVc2UgY29tbW9uIEZTTCBpbml0IGNvZGUgKi8KKworLyoKKyAqIEREUiBjb25maWcKKyAqLworI2RlZmluZSBDT05GSUdfRlNMX0REUjIKKyN1bmRlZiBDT05GSUdfRlNMX0REUl9JTlRFUkFDVElWRQorI2RlZmluZSBDT05GSUdfU1BEX0VFUFJPTQkJLyogVXNlIFNQRCBFRVBST00gZm9yIEREUiBzZXR1cCAqLworI2RlZmluZSBDT05GSUdfRERSX1NQRAorI2RlZmluZSBDT05GSUdfTUVNX0lOSVRfVkFMVUUJCTB4ZGVhZGJlZWYKKyNkZWZpbmUgU1BEX0VFUFJPTV9BRERSRVNTCQkweDU0CisjZGVmaW5lIENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTCTEKKyNkZWZpbmUgQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIJMQorI2RlZmluZSBDT05GSUdfQ0hJUF9TRUxFQ1RTX1BFUl9DVFJMCTIKKyNkZWZpbmUgQ09ORklHX0REUl9FQ0MKKyNkZWZpbmUgQ09ORklHX0VDQ19JTklUX1ZJQV9ERFJDT05UUk9MTEVSCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1NEUkFNX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCUNPTkZJR19TWVNfRERSX1NEUkFNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1ZFUllfQklHX1JBTQorCisjZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEJNjY2NjY2NjYKKworLyoKKyAqIFRoZXNlIGNhbiBiZSB0b2dnbGVkIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3RoZXJ3aXNlIHVzZSBkZWZhdWx0LgorICovCisjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCS8qIHRvZ2dsZSBMMiBjYWNoZSAqLworI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KKyNkZWZpbmUgQ09ORklHX0VOQUJMRV8zNkJJVF9QSFlTCTEKKworLyoKKyAqIEJhc2UgYWRkcmVzc2VzIC0tIE5vdGUgdGhlc2UgYXJlIGVmZmVjdGl2ZSBhZGRyZXNzZXMgd2hlcmUgdGhlCisgKiBhY3R1YWwgcmVzb3VyY2VzIGdldCBtYXBwZWQgKG5vdCBwaHlzaWNhbCBhZGRyZXNzZXMpCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19DQ1NSQkFSX0RFRkFVTFQJMHhmZjcwMDAwMAkvKiBDQ1NSQkFSIERlZmF1bHQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19DQ1NSQkFSCQkweGVmMDAwMDAwCS8qIHJlbG9jYXRlZCBDQ1NSQkFSICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTCUNPTkZJR19TWVNfQ0NTUkJBUgkvKiBwaHlzaWNhbCBhZGRyIG9mIENDU1JCQVIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTU1SCQlDT05GSUdfU1lTX0NDU1JCQVIJLyogUFFJSSB1c2VzIENPTkZJR19TWVNfSU1NUiAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfQUREUgkoQ09ORklHX1NZU19DQ1NSQkFSICsgMHg4MDAwKQorCisvKgorICogRGlhZ25vc3RpY3MKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0FMVF9NRU1URVNUCisjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4MjAwMDAwMDAKKworLyoKKyAqIE1lbW9yeSBtYXAKKyAqIDB4MDAwMF8wMDAwCTB4N2ZmZl9mZmZmCUREUgkJCTJHIENhY2hlYWJsZQorICogMHg4MDAwXzAwMDAJMHhiZmZmX2ZmZmYJUENJMSBNZW0JCTFHIG5vbi1jYWNoZWFibGUKKyAqIDB4ZTAwMF8wMDAwCTB4ZTdmZl9mZmZmCVNSQU0vU1NSQU0vTDEgQ2FjaGUJMTI4TSBub24tY2FjaGVhYmxlCisgKiAweGU4MDBfMDAwMAkweGU4N2ZfZmZmZglQQ0kxIElPCQkJOE0gbm9uLWNhY2hlYWJsZQorICogMHhlZjAwXzAwMDAJMHhlZjBmX2ZmZmYJQ0NTUi9JTU1SCQkxTSBub24tY2FjaGVhYmxlCisgKiAweGVmODBfMDAwMAkweGVmOGZfZmZmZglOQU5EIEZsYXNoCQkxTSBub24tY2FjaGVhYmxlCisgKiAweGY4MDBfMDAwMAkweGZiZmZfZmZmZglOT1IgRmxhc2ggMgkJNjRNIG5vbi1jYWNoZWFibGUKKyAqIDB4ZmMwMF8wMDAwCTB4ZmZmZl9mZmZmCU5PUiBGbGFzaCAxCQk2NE0gbm9uLWNhY2hlYWJsZQorICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19MQkNfTENSUgkoTENSUl9DTEtESVZfNCB8IExDUlJfRUFEQ18zKQorCisvKgorICogTkFORCBmbGFzaCBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCTB4ZWY4MDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UyCQkweGVmODQwMDAwIC8qIFVudXNlZCBhdCB0aGlzIHRpbWUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQorI2RlZmluZSBDT05GSUdfTkFORF9BQ1RMCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9BQ1RMX0NMRQkoMSA8PCAzKQkvKiBBRERSMyBpcyBDTEUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0FDVExfQUxFCSgxIDw8IDQpCS8qIEFERFI0IGlzIEFMRSAqLworI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQUNUTF9OQ0UJKDApCQkvKiBOQ0Ugbm90IGNvbnRyb2xsZWQgYnkgQUREUiAqLworI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQUNUTF9ERUxBWQkyNQorCisvKgorICogTk9SIGZsYXNoIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCTB4ZmMwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFMgkJMHhmODAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QJe0NPTkZJR19TWVNfRkxBU0hfQkFTRSwgQ09ORklHX1NZU19GTEFTSF9CQVNFMn0KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1MJMgkJLyogbnVtYmVyIG9mIGJhbmtzICovCisjZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX1NFQ1QJMTAyNAkJLyogc2VjdG9ycyBwZXIgZGV2aWNlICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfRVJBU0VfVE9VVAk2MDAwMAkJLyogRmxhc2ggRXJhc2UgVGltZW91dCAobXMpICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfV1JJVEVfVE9VVAk1MDAJCS8qIEZsYXNoIFdyaXRlIFRpbWVvdXQgKG1zKSAqLworI2RlZmluZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0FVVE9QUk9URUNUX0xJU1QJeyB7MHhmZmY0MDAwMCwgMHhjMDAwMH0sIFwKKwkJCQkJCSAgezB4ZmJmNDAwMDAsIDB4YzAwMDB9IH0KKyNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJVEVYVF9CQVNFCS8qIHN0YXJ0IG9mIG1vbml0b3IgKi8KKworLyoKKyAqIENoaXAgc2VsZWN0IGNvbmZpZ3VyYXRpb24KKyAqLworLyogTk9SIEZsYXNoIDAgb24gQ1MwICovCisjZGVmaW5lIENPTkZJR19TWVNfQlIwX1BSRUxJTQkoQ09ORklHX1NZU19GTEFTSF9CQVNFCXwgXAorCQkJCSBCUl9QU18xNgkJfCBcCisJCQkJIEJSX1YpCisjZGVmaW5lIENPTkZJR19TWVNfT1IwX1BSRUxJTQkoT1JfQU1fNjRNQgkJfCBcCisJCQkJIE9SX0dQQ01fQUNTX0RJVjQJfCBcCisJCQkJIE9SX0dQQ01fU0NZXzgpCisKKy8qIE5PUiBGbGFzaCAxIG9uIENTMSAqLworI2RlZmluZSBDT05GSUdfU1lTX0JSMV9QUkVMSU0JKENPTkZJR19TWVNfRkxBU0hfQkFTRTIJfCBcCisJCQkJIEJSX1BTXzE2CQl8IFwKKwkJCQkgQlJfVikKKyNkZWZpbmUgQ09ORklHX1NZU19PUjFfUFJFTElNCUNPTkZJR19TWVNfT1IwX1BSRUxJTQorCisvKiBOQU5EIGZsYXNoIG9uIENTMiAqLworI2RlZmluZSBDT05GSUdfU1lTX0JSMl9QUkVMSU0JKENPTkZJR19TWVNfTkFORF9CQVNFCXwgXAorCQkJCSBCUl9QU184CQl8IFwKKwkJCQkgQlJfVikKKworLyogTkFORCBmbGFzaCBvbiBDUzIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19PUjJfUFJFTElNCShPUl9BTV8yNTZLQgkJfCBcCisJCQkJIE9SX0dQQ01fQkNUTEQJCXwgXAorCQkJCSBPUl9HUENNX0NTTlQJCXwgXAorCQkJCSBPUl9HUENNX0FDU19ESVY0CXwgXAorCQkJCSBPUl9HUENNX1NDWV80CQl8IFwKKwkJCQkgT1JfR1BDTV9UUkxYCQl8IFwKKwkJCQkgT1JfR1BDTV9FSFRSKQorCisvKiBOQU5EIGZsYXNoIG9uIENTMyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JSM19QUkVMSU0JKENPTkZJR19TWVNfTkFORF9CQVNFMgl8IFwKKwkJCQkgQlJfUFNfOAkJfCBcCisJCQkJIEJSX1YpCisjZGVmaW5lIENPTkZJR19TWVNfT1IzX1BSRUxJTQlDT05GSUdfU1lTX09SMl9QUkVMSU0KKworLyoKKyAqIFVzZSBMMSBhcyBpbml0aWFsIHN0YWNrCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4NDAwMAorCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCisKKyNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDUxMiAqIDEwMjQpCS8qIFJlc2VydmUgNTEyIEtCIGZvciBNb24gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMTAyNCAqIDEwMjQpCS8qIFJlc2VydmVkIGZvciBtYWxsb2MgKi8KKworLyoKKyAqIFNlcmlhbCBQb3J0CisgKi8KKyNkZWZpbmUgQ09ORklHX0NPTlNfSU5ERVgJCTEKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9TRVJJQUwKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1JFR19TSVpFCTEKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NMSwkJZ2V0X2J1c19mcmVxKDApCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00xCShDT05GSUdfU1lTX0NDU1JCQVIrMHg0NTAwKQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ09NMgkoQ09ORklHX1NZU19DQ1NSQkFSKzB4NDYwMCkKKyNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQlcCisJezMwMCwgNjAwLCAxMjAwLCAyNDAwLCA0ODAwLCA5NjAwLCAxOTIwMCwgMzg0MDAsIDExNTIwMH0KKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkJMTE1MjAwCisjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCQkxCS8qIGVjaG8gb24gZm9yIHNlcmlhbCBkb3dubG9hZCAqLworI2RlZmluZSBDT05GSUdfU1lTX0xPQURTX0JBVURfQ0hBTkdFCTEJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlICovCisKKy8qCisgKiBVc2UgdGhlIEhVU0ggcGFyc2VyCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgorI2RlZmluZSBDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMgkiPiAiCisKKy8qCisgKiBQYXNzIG9wZW4gZmlybXdhcmUgZmxhdCB0cmVlCisgKi8KKyNkZWZpbmUgQ09ORklHX09GX0xJQkZEVAkJMQorI2RlZmluZSBDT05GSUdfT0ZfQk9BUkRfU0VUVVAJCTEKKyNkZWZpbmUgQ09ORklHX09GX1NURE9VVF9WSUFfQUxJQVMJMQorCisjZGVmaW5lIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYJMQorI2RlZmluZSBDT05GSUdfU1lTXzY0QklUX1NUUlRPVUwJMQorCisvKgorICogSTJDCisgKi8KKyNkZWZpbmUgQ09ORklHX0ZTTF9JMkMJCQkJLyogVXNlIEZTTCBjb21tb24gSTJDIGRyaXZlciAqLworI2RlZmluZSBDT05GSUdfSEFSRF9JMkMJCQkJLyogSTJDIHdpdGggaGFyZHdhcmUgc3VwcG9ydCAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TUEVFRAkJNDAwMDAwCS8qIEkyQyBzcGVlZCBhbmQgc2xhdmUgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TTEFWRQkJMHg3RgorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19PRkZTRVQJCTB4MzAwMAorI2RlZmluZSBDT05GSUdfU1lTX0kyQzJfT0ZGU0VUCQkweDMxMDAKKyNkZWZpbmUgQ09ORklHX0kyQ19NVUxUSV9CVVMKKyNkZWZpbmUgQ09ORklHX0kyQ19DTURfVFJFRQorCisvKiBJMkMgRUVQUk9NICovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSCQkweDUwCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSX0xFTgkJMQorI2RlZmluZSBDT05GSUdfU1lTX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMJNgkvKiA2NCBieXRlIHBhZ2VzICovCisjZGVmaW5lIENPTkZJR19TWVNfRUVQUk9NX1BBR0VfV1JJVEVfREVMQVlfTVMJMTAJLyogdGFrZSB1cCB0byAxMCBtc2VjICovCisKKy8qIEkyQyBSVEMgKi8KKyNkZWZpbmUgQ09ORklHX1JUQ19NNDFUMTEJCQkxCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1JUQ19BRERSCQkJMHg2OAorI2RlZmluZSBDT05GSUdfU1lTX000MVQxMV9CQVNFX1lFQVIJCTIwMDAKKworLyogR1BJTyAqLworI2RlZmluZSBDT05GSUdfUENBOTUzWAorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwCQkweDE4CisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjEJCTB4MTkKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSCQlDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwCisKKy8qIFBDQTk1NyBAIDB4MTggKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0JSRF9DRkcwCQkweDAxCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9CUkRfQ0ZHMQkJMHgwMgorI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQlJEX0NGRzIJCTB4MDQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1hNQ19ST09UMAkJMHgwOAorI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfRkxBU0hfUEFTU19DUwkweDEwCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9GTEFTSF9XUAkJMHgyMAorI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfTU9OQVJDSAkJMHg0MAorI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfRVJFQURZCQkweDgwCisKKy8qIFBDQTk1NyBAIDB4MTkgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzAJCTB4MDEKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzEJCTB4MDIKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzIJCTB4MDQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzMJCTB4MDgKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzQJCTB4MTAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzUJCTB4MjAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzYJCTB4NDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AxNF9JTzcJCTB4ODAKKworLyoKKyAqIEdlbmVyYWwgUENJCisgKiBNZW1vcnkgc3BhY2UgaXMgbWFwcGVkIDEtMSwgYnV0IEkvTyBzcGFjZSBtdXN0IHN0YXJ0IGZyb20gMC4KKyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fU0laRQkweDQwMDAwMDAwCS8qIDFHICovCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19QSFlTCQkweGU4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCQkweDAwODAwMDAwCS8qIDFNICovCisKKy8qCisgKiBOZXR3b3JraW5nIG9wdGlvbnMKKyAqLworI2RlZmluZSBDT05GSUdfVFNFQ19FTkVUCQkvKiB0c2VjIGV0aGVybmV0IHN1cHBvcnQgKi8KKyNkZWZpbmUgQ09ORklHX1BIWV9HSUdFCQkxCS8qIEluY2x1ZGUgR2JFIHNwZWVkL2R1cGxleCBkZXRlY3Rpb24gKi8KKyNkZWZpbmUgQ09ORklHX05FVF9NVUxUSQkxCisjZGVmaW5lIENPTkZJR19NSUkJCTEJLyogTUlJIFBIWSBtYW5hZ2VtZW50ICovCisjZGVmaW5lIENPTkZJR19FVEhQUklNRQkJImVUU0VDMSIKKworI2RlZmluZSBDT05GSUdfVFNFQzEJCTEKKyNkZWZpbmUgQ09ORklHX1RTRUMxX05BTUUJImVUU0VDMSIKKyNkZWZpbmUgVFNFQzFfRkxBR1MJCVRTRUNfR0lHQUJJVAorI2RlZmluZSBUU0VDMV9QSFlfQUREUgkJMQorI2RlZmluZSBUU0VDMV9QSFlJRFgJCTAKKyNkZWZpbmUgQ09ORklHX0hBU19FVEgwCisKKyNkZWZpbmUgQ09ORklHX1RTRUMyCQkxCisjZGVmaW5lIENPTkZJR19UU0VDMl9OQU1FCSJlVFNFQzIiCisjZGVmaW5lIFRTRUMyX0ZMQUdTCQlUU0VDX0dJR0FCSVQKKyNkZWZpbmUgVFNFQzJfUEhZX0FERFIJCTIKKyNkZWZpbmUgVFNFQzJfUEhZSURYCQkwCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMQorCisjZGVmaW5lIENPTkZJR19UU0VDMwkxCisjZGVmaW5lIENPTkZJR19UU0VDM19OQU1FCSJlVFNFQzMiCisjZGVmaW5lIFRTRUMzX0ZMQUdTCQlUU0VDX0dJR0FCSVQKKyNkZWZpbmUgVFNFQzNfUEhZX0FERFIJCTMKKyNkZWZpbmUgVFNFQzNfUEhZSURYCQkwCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMgorCisjZGVmaW5lIENPTkZJR19UU0VDNAkxCisjZGVmaW5lIENPTkZJR19UU0VDNF9OQU1FCSJlVFNFQzQiCisjZGVmaW5lIFRTRUM0X0ZMQUdTCQlUU0VDX0dJR0FCSVQKKyNkZWZpbmUgVFNFQzRfUEhZX0FERFIJCTQKKyNkZWZpbmUgVFNFQzRfUEhZSURYCQkwCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMworCisvKgorICogQk9PVFAgb3B0aW9ucworICovCisjZGVmaW5lIENPTkZJR19CT09UUF9CT09URklMRVNJWkUKKyNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RQQVRICisjZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCisKKy8qCisgKiBDb21tYW5kIGNvbmZpZ3VyYXRpb24uCisgKi8KKyNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KKworI2RlZmluZSBDT05GSUdfQ01EX0FTS0VOVgorI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKKyNkZWZpbmUgQ09ORklHX0NNRF9ESENQCisjZGVmaW5lIENPTkZJR19DTURfRUVQUk9NCisjZGVmaW5lIENPTkZJR19DTURfRUxGCisjZGVmaW5lIENPTkZJR19DTURfRU5WCisjZGVmaW5lIENPTkZJR19DTURfRkxBU0gKKyNkZWZpbmUgQ09ORklHX0NNRF9JMkMKKyNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgorI2RlZmluZSBDT05GSUdfQ01EX01JSQorI2RlZmluZSBDT05GSUdfQ01EX05BTkQKKyNkZWZpbmUgQ09ORklHX0NNRF9ORVQKKyNkZWZpbmUgQ09ORklHX0NNRF9QQ0E5NTNYCisjZGVmaW5lIENPTkZJR19DTURfUENBOTUzWF9JTkZPCisjZGVmaW5lIENPTkZJR19DTURfUENJCisjZGVmaW5lIENPTkZJR19DTURfUElORworI2RlZmluZSBDT05GSUdfQ01EX1NOVFAKKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0JTSVpFCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQlNJWkUgKENPTkZJR19TWVNfQ0JTSVpFK3NpemVvZihDT05GSUdfU1lTX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENPTkZJR19TWVNfTUFYQVJHUwkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQlDT05GSUdfU1lTX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAJCS8qIGRlY3JlbWVudGVyIGZyZXE6IDFtcyB0aWNrcyAqLworI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCTEJCS8qIGFkZCBjb21tYW5kIGxpbmUgaGlzdG9yeQkqLworI2RlZmluZSBDT05GSUdfTE9BREFERFIJCTB4MTAwMDAwMAkvKiBkZWZhdWx0IGxvY2F0aW9uIGZvciB0ZnRwIGFuZCBib290bSAqLworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTMJCS8qIC0xIGRpc2FibGVzIGF1dG8tYm9vdCAqLworI2RlZmluZSBDT05GSUdfUEFOSUNfSEFORwkJCS8qIGRvIG5vdCByZXNldCBib2FyZCBvbiBwYW5pYyAqLworI2RlZmluZSBDT05GSUdfUFJFQk9PVAkJCQkvKiBlbmFibGUgcHJlYm9vdCB2YXJpYWJsZSAqLworI2RlZmluZSBDT05GSUdfRklUCQkxCisjZGVmaW5lIENPTkZJR19GSVRfVkVSQk9TRQkxCisjZGVmaW5lIENPTkZJR19JTlRFR1JJVFkJCQkvKiBzdXBwb3J0IGJvb3RpbmcgSU5URUdSSVRZIE9TICovCisjZGVmaW5lIENPTkZJR19JTlRFUlJVUFRTCQkvKiBlbmFibGUgcGNpLCBzcmlvLCBkZHIgaW50ZXJydXB0cyAqLworCisvKgorICogRm9yIGJvb3RpbmcgTGludXgsIHRoZSBib2FyZCBpbmZvIGFuZCBjb21tYW5kIGxpbmUgZGF0YQorICogaGF2ZSB0byBiZSBpbiB0aGUgZmlyc3QgMTYgTUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCisgKiB0aGUgbWF4aW11bSBtYXBwZWQgYnkgdGhlIExpbnV4IGtlcm5lbCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJKDE2IDw8IDIwKQkvKiBJbml0aWFsIE1lbW9yeSBtYXAgZm9yIExpbnV4Ki8KKworLyoKKyAqIEJvb3QgRmxhZ3MKKyAqLworI2RlZmluZSBCT09URkxBR19DT0xECQkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19XQVJNCQkweDAyCQkvKiBTb2Z0d2FyZSByZWJvb3QgKi8KKworLyoKKyAqIEVudmlyb25tZW50IENvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJMHgyMDAwMAkJLyogMTI4ayAob25lIHNlY3RvcikgZm9yIGVudiAqLworI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4ODAwMAorI2RlZmluZSBDT05GSUdfRU5WX0FERFIJCShDT05GSUdfU1lTX01PTklUT1JfQkFTRSAtICgyNTYgKiAxMDI0KSkKKworLyoKKyAqIEZsYXNoIG1lbW9yeSBtYXA6CisgKiBmZmY4MDAwMCAtIGZmZmZmZmZmICAgICBQcmkgVS1Cb290ICg1MTIgS0IpCisgKiBmZmY0MDAwMCAtIGZmZjdmZmZmICAgICBQcmkgVS1Cb290IEVudmlyb25tZW50ICgyNTYgS0IpCisgKiBmZmYwMDAwMCAtIGZmZjNmZmZmICAgICBQcmkgRkRUICgyNTZLQikKKyAqIGZlZjAwMDAwIC0gZmZlZmZmZmYgICAgIFByaSBPUyBpbWFnZSAoMTZNQikKKyAqIGZjMDAwMDAwIC0gZmVlZmZmZmYgICAgIFByaSBPUyBVc2UvRmlsZXN5c3RlbSAoNDdNQikKKyAqCisgKiBmYmY4MDAwMCAtIGZiZmZmZmZmICAgICBTZWMgVS1Cb290ICg1MTIgS0IpCisgKiBmYmY0MDAwMCAtIGZiZjdmZmZmICAgICBTZWMgVS1Cb290IEVudmlyb25tZW50ICgyNTYgS0IpCisgKiBmYmYwMDAwMCAtIGZiZjNmZmZmICAgICBTZWMgRkRUICgyNTZLQikKKyAqIGZhZjAwMDAwIC0gZmJlZmZmZmYgICAgIFNlYyBPUyBpbWFnZSAoMTZNQikKKyAqIGY4MDAwMDAwIC0gZmFlZmZmZmYgICAgIFNlYyBPUyBVc2UvRmlsZXN5c3RlbSAoNDdNQikKKyAqLworI2RlZmluZSBDT05GSUdfVUJPT1QxX0VOVl9BRERSCU1LX1NUUigweGZmZjgwMDAwKQorI2RlZmluZSBDT05GSUdfVUJPT1QyX0VOVl9BRERSCU1LX1NUUigweGZiZjgwMDAwKQorI2RlZmluZSBDT05GSUdfRkRUMV9FTlZfQUREUglNS19TVFIoMHhmZmYwMDAwMCkKKyNkZWZpbmUgQ09ORklHX0ZEVDJfRU5WX0FERFIJTUtfU1RSKDB4ZmJmMDAwMDApCisjZGVmaW5lIENPTkZJR19PUzFfRU5WX0FERFIJTUtfU1RSKDB4ZmVmMDAwMDApCisjZGVmaW5lIENPTkZJR19PUzJfRU5WX0FERFIJTUtfU1RSKDB4ZmFmMDAwMDApCisKKyNkZWZpbmUgQ09ORklHX1BST0dfVUJPT1QxCQkJCQkJXAorCSIkZG93bmxvYWRfY21kICRsb2FkYWRkciAkdWJvb3RmaWxlOyAiCQkJCVwKKwkiaWYgdGVzdCAkPyAtZXEgMDsgdGhlbiAiCQkJCQlcCisJCSJwcm90ZWN0IG9mZiAiQ09ORklHX1VCT09UMV9FTlZfQUREUiIgKzgwMDAwOyAiCQlcCisJCSJlcmFzZSAiQ09ORklHX1VCT09UMV9FTlZfQUREUiIgKzgwMDAwOyAiCQlcCisJCSJjcC53ICRsb2FkYWRkciAiQ09ORklHX1VCT09UMV9FTlZfQUREUiIgNDAwMDA7ICIJXAorCQkicHJvdGVjdCBvbiAiQ09ORklHX1VCT09UMV9FTlZfQUREUiIgKzgwMDAwOyAiCQlcCisJCSJjbXAuYiAkbG9hZGFkZHIgIkNPTkZJR19VQk9PVDFfRU5WX0FERFIiIDgwMDAwOyAiCVwKKwkJImlmIHRlc3QgJD8gLW5lIDA7IHRoZW4gIgkJCQlcCisJCQkiZWNobyBQUk9HUkFNIEZBSUxFRDsgIgkJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImVjaG8gUFJPR1JBTSBTVUNDRUVERUQ7ICIJCQlcCisJCSJmaTsgIgkJCQkJCQlcCisJImVsc2U7ICIJCQkJCQkJXAorCQkiZWNobyBET1dOTE9BRCBGQUlMRUQ7ICIJCQkJXAorCSJmaTsiCisKKyNkZWZpbmUgQ09ORklHX1BST0dfVUJPT1QyCQkJCQkJXAorCSIkZG93bmxvYWRfY21kICRsb2FkYWRkciAkdWJvb3RmaWxlOyAiCQkJCVwKKwkiaWYgdGVzdCAkPyAtZXEgMDsgdGhlbiAiCQkJCQlcCisJCSJwcm90ZWN0IG9mZiAiQ09ORklHX1VCT09UMl9FTlZfQUREUiIgKzgwMDAwOyAiCQlcCisJCSJlcmFzZSAiQ09ORklHX1VCT09UMl9FTlZfQUREUiIgKzgwMDAwOyAiCQlcCisJCSJjcC53ICRsb2FkYWRkciAiQ09ORklHX1VCT09UMl9FTlZfQUREUiIgNDAwMDA7ICIJXAorCQkicHJvdGVjdCBvbiAiQ09ORklHX1VCT09UMl9FTlZfQUREUiIgKzgwMDAwOyAiCQlcCisJCSJjbXAuYiAkbG9hZGFkZHIgIkNPTkZJR19VQk9PVDJfRU5WX0FERFIiIDgwMDAwOyAiCVwKKwkJImlmIHRlc3QgJD8gLW5lIDA7IHRoZW4gIgkJCQlcCisJCQkiZWNobyBQUk9HUkFNIEZBSUxFRDsgIgkJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImVjaG8gUFJPR1JBTSBTVUNDRUVERUQ7ICIJCQlcCisJCSJmaTsgIgkJCQkJCQlcCisJImVsc2U7ICIJCQkJCQkJXAorCQkiZWNobyBET1dOTE9BRCBGQUlMRUQ7ICIJCQkJXAorCSJmaTsiCisKKyNkZWZpbmUgQ09ORklHX0JPT1RfT1NfTkVUCQkJCQkJXAorCSIkZG93bmxvYWRfY21kICRvc2FkZHIgJG9zZmlsZTsgIgkJCQlcCisJImlmIHRlc3QgJD8gLWVxIDA7IHRoZW4gIgkJCQkJXAorCQkiaWYgdGVzdCAtbiAkZmR0YWRkcjsgdGhlbiAiCQkJCVwKKwkJCSIkZG93bmxvYWRfY21kICRmZHRhZGRyICRmZHRmaWxlOyAiCQlcCisJCQkiaWYgdGVzdCAkPyAtZXEgMDsgdGhlbiAiCQkJXAorCQkJCSJib290bSAkb3NhZGRyIC0gJGZkdGFkZHI7ICIJCVwKKwkJCSJlbHNlOyAiCQkJCQlcCisJCQkJImVjaG8gRkRUIERPV05MT0FEIEZBSUxFRDsgIgkJXAorCQkJImZpOyAiCQkJCQkJXAorCQkiZWxzZTsgIgkJCQkJCVwKKwkJCSJib290bSAkb3NhZGRyOyAiCQkJCVwKKwkJImZpOyAiCQkJCQkJCVwKKwkiZWxzZTsgIgkJCQkJCQlcCisJCSJlY2hvIE9TIERPV05MT0FEIEZBSUxFRDsgIgkJCQlcCisJImZpOyIKKworI2RlZmluZSBDT05GSUdfUFJPR19PUzEJCQkJCQkJXAorCSIkZG93bmxvYWRfY21kICRvc2FkZHIgJG9zZmlsZTsgIgkJCQlcCisJImlmIHRlc3QgJD8gLWVxIDA7IHRoZW4gIgkJCQkJXAorCQkiZXJhc2UgIkNPTkZJR19PUzFfRU5WX0FERFIiICskZmlsZXNpemU7ICIJCVwKKwkJImNwLmIgJG9zYWRkciAiQ09ORklHX09TMV9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImNtcC5iICRvc2FkZHIgIkNPTkZJR19PUzFfRU5WX0FERFIiICRmaWxlc2l6ZTsgIglcCisJCSJpZiB0ZXN0ICQ/IC1uZSAwOyB0aGVuICIJCQkJXAorCQkJImVjaG8gT1MgUFJPR1JBTSBGQUlMRUQ7ICIJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImVjaG8gT1MgUFJPR1JBTSBTVUNDRUVERUQ7ICIJCQlcCisJCSJmaTsgIgkJCQkJCQlcCisJImVsc2U7ICIJCQkJCQkJXAorCQkiZWNobyBPUyBET1dOTE9BRCBGQUlMRUQ7ICIJCQkJXAorCSJmaTsiCisKKyNkZWZpbmUgQ09ORklHX1BST0dfT1MyCQkJCQkJCVwKKwkiJGRvd25sb2FkX2NtZCAkb3NhZGRyICRvc2ZpbGU7ICIJCQkJXAorCSJpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuICIJCQkJCVwKKwkJImVyYXNlICJDT05GSUdfT1MyX0VOVl9BRERSIiArJGZpbGVzaXplOyAiCQlcCisJCSJjcC5iICRvc2FkZHIgIkNPTkZJR19PUzJfRU5WX0FERFIiICRmaWxlc2l6ZTsgIglcCisJCSJjbXAuYiAkb3NhZGRyICJDT05GSUdfT1MyX0VOVl9BRERSIiAkZmlsZXNpemU7ICIJXAorCQkiaWYgdGVzdCAkPyAtbmUgMDsgdGhlbiAiCQkJCVwKKwkJCSJlY2hvIE9TIFBST0dSQU0gRkFJTEVEOyAiCQkJXAorCQkiZWxzZTsgIgkJCQkJCVwKKwkJCSJlY2hvIE9TIFBST0dSQU0gU1VDQ0VFREVEOyAiCQkJXAorCQkiZmk7ICIJCQkJCQkJXAorCSJlbHNlOyAiCQkJCQkJCVwKKwkJImVjaG8gT1MgRE9XTkxPQUQgRkFJTEVEOyAiCQkJCVwKKwkiZmk7IgorCisjZGVmaW5lIENPTkZJR19QUk9HX0ZEVDEJCQkJCQlcCisJIiRkb3dubG9hZF9jbWQgJGZkdGFkZHIgJGZkdGZpbGU7ICIJCQkJXAorCSJpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuICIJCQkJCVwKKwkJImVyYXNlICJDT05GSUdfRkRUMV9FTlZfQUREUiIgKyRmaWxlc2l6ZTsiCQlcCisJCSJjcC5iICRmZHRhZGRyICJDT05GSUdfRkRUMV9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImNtcC5iICRmZHRhZGRyICJDT05GSUdfRkRUMV9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImlmIHRlc3QgJD8gLW5lIDA7IHRoZW4gIgkJCQlcCisJCQkiZWNobyBGRFQgUFJPR1JBTSBGQUlMRUQ7ICIJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImVjaG8gRkRUIFBST0dSQU0gU1VDQ0VFREVEOyAiCQkJXAorCQkiZmk7ICIJCQkJCQkJXAorCSJlbHNlOyAiCQkJCQkJCVwKKwkJImVjaG8gRkRUIERPV05MT0FEIEZBSUxFRDsgIgkJCQlcCisJImZpOyIKKworI2RlZmluZSBDT05GSUdfUFJPR19GRFQyCQkJCQkJXAorCSIkZG93bmxvYWRfY21kICRmZHRhZGRyICRmZHRmaWxlOyAiCQkJCVwKKwkiaWYgdGVzdCAkPyAtZXEgMDsgdGhlbiAiCQkJCQlcCisJCSJlcmFzZSAiQ09ORklHX0ZEVDJfRU5WX0FERFIiICskZmlsZXNpemU7IgkJXAorCQkiY3AuYiAkZmR0YWRkciAiQ09ORklHX0ZEVDJfRU5WX0FERFIiICRmaWxlc2l6ZTsgIglcCisJCSJjbXAuYiAkZmR0YWRkciAiQ09ORklHX0ZEVDJfRU5WX0FERFIiICRmaWxlc2l6ZTsgIglcCisJCSJpZiB0ZXN0ICQ/IC1uZSAwOyB0aGVuICIJCQkJXAorCQkJImVjaG8gRkRUIFBST0dSQU0gRkFJTEVEOyAiCQkJXAorCQkiZWxzZTsgIgkJCQkJCVwKKwkJCSJlY2hvIEZEVCBQUk9HUkFNIFNVQ0NFRURFRDsgIgkJCVwKKwkJImZpOyAiCQkJCQkJCVwKKwkiZWxzZTsgIgkJCQkJCQlcCisJCSJlY2hvIEZEVCBET1dOTE9BRCBGQUlMRUQ7ICIJCQkJXAorCSJmaTsiCisKKyNkZWZpbmUJQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJXAorCSJhdXRvbG9hZD15ZXNcMCIJCQkJCQlcCisJImRvd25sb2FkX2NtZD10ZnRwXDAiCQkJCQkJXAorCSJjb25zb2xlX2FyZ3M9Y29uc29sZT10dHlTMCwxMTUyMDBcMCIJCQkJXAorCSJyb290X2FyZ3M9cm9vdD0vZGV2L25mcyByd1wwIgkJCQkJXAorCSJtaXNjX2FyZ3M9aXA9b25cMCIJCQkJCQlcCisJInNldF9ib290YXJncz1zZXRlbnYgYm9vdGFyZ3MgJHtjb25zb2xlX2FyZ3N9ICR7cm9vdF9hcmdzfSAke21pc2NfYXJnc31cMCIgXAorCSJib290ZmlsZT0vaG9tZS91c2VyL2ZpbGVcMCIJCQkJCVwKKwkib3NmaWxlPS9ob21lL3VzZXIvdUltYWdlLVhQZWRpdGU1MjAwXDAiCQkJXAorCSJmZHRmaWxlPS9ob21lL3VzZXIveHBlZGl0ZTUyMDAuZHRiXDAiCQkJCVwKKwkidWJvb3RmaWxlPS9ob21lL3VzZXIvdS1ib290LmJpblwwIgkJCQlcCisJImZkdGFkZHI9YzAwMDAwXDAiCQkJCQkJXAorCSJvc2FkZHI9MHgxMDAwMDAwXDAiCQkJCQkJXAorCSJsb2FkYWRkcj0weDEwMDAwMDBcMCIJCQkJCQlcCisJInByb2dfdWJvb3QxPSJDT05GSUdfUFJPR19VQk9PVDEiXDAiCQkJCVwKKwkicHJvZ191Ym9vdDI9IkNPTkZJR19QUk9HX1VCT09UMiJcMCIJCQkJXAorCSJwcm9nX29zMT0iQ09ORklHX1BST0dfT1MxIlwwIgkJCQkJXAorCSJwcm9nX29zMj0iQ09ORklHX1BST0dfT1MyIlwwIgkJCQkJXAorCSJwcm9nX2ZkdDE9IkNPTkZJR19QUk9HX0ZEVDEiXDAiCQkJCVwKKwkicHJvZ19mZHQyPSJDT05GSUdfUFJPR19GRFQyIlwwIgkJCQlcCisJImJvb3RjbWRfbmV0PXJ1biBzZXRfYm9vdGFyZ3M7ICJDT05GSUdfQk9PVF9PU19ORVQiXDAiCQlcCisJImJvb3RjbWRfZmxhc2gxPXJ1biBzZXRfYm9vdGFyZ3M7ICIJCQkJXAorCQkiYm9vdG0gIkNPTkZJR19PUzFfRU5WX0FERFIiIC0gIkNPTkZJR19GRFQxX0VOVl9BRERSIlwwIlwKKwkiYm9vdGNtZF9mbGFzaDI9cnVuIHNldF9ib290YXJnczsgIgkJCQlcCisJCSJib290bSAiQ09ORklHX09TMl9FTlZfQUREUiIgLSAiQ09ORklHX0ZEVDJfRU5WX0FERFIiXDAiXAorCSJib290Y21kPXJ1biBib290Y21kX2ZsYXNoMVwwIgorI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTM3MC5oIGIvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MzcwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JjMGZlOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTM3MC5oCkBAIC0wLDAgKzEsNTg5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA3LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiB4cGVkaXRlNTM3MCBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKKyAqLworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX0JPT0tFCQkxCS8qIEJPT0tFICovCisjZGVmaW5lIENPTkZJR19FNTAwCQkxCS8qIEJPT0tFIGU1MDAgZmFtaWx5ICovCisjZGVmaW5lIENPTkZJR19NUEM4NXh4CQkxCS8qIE1QQzg1NDAvNjAvNTUvNDEvNDggKi8KKyNkZWZpbmUgQ09ORklHX01QQzg1NzIJCTEKKyNkZWZpbmUgQ09ORklHX1hQRURJVEU1MzcwCTEKKyNkZWZpbmUgQ09ORklHX1NZU19CT0FSRF9OQU1FCSJYUGVkaXRlNTM3MCIKKyNkZWZpbmUgQ09ORklHX05VTV9DUFVTCQkyCS8qIDIgQ29yZXMgKi8KKyNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfUgkvKiBDYWxsIGJvYXJkX3ByZV9pbml0ICovCisjZGVmaW5lIENPTkZJR19SRUxPQ19GSVhVUF9XT1JLUwkvKiBGdWxseSByZWxvY2F0ZSB0byBTRFJBTSAqLworCisjZGVmaW5lIENPTkZJR19QQ0kJCTEJLyogRW5hYmxlIFBDSS9QQ0lFICovCisjZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkxCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICovCisjZGVmaW5lIENPTkZJR19QQ0lfU0NBTl9TSE9XCTEJLyogc2hvdyBwY2kgZGV2aWNlcyBvbiBzdGFydHVwICovCisjZGVmaW5lIENPTkZJR19QQ0lFMQkJMQkvKiBQQ0lFIGNvbnRyb2xlciAxICovCisjZGVmaW5lIENPTkZJR19QQ0lFMgkJMQkvKiBQQ0lFIGNvbnRyb2xlciAyICovCisjZGVmaW5lIENPTkZJR19GU0xfUENJX0lOSVQJMQkvKiBVc2UgY29tbW9uIEZTTCBpbml0IGNvZGUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lfNjRCSVQJMQkvKiBlbmFibGUgNjQtYml0IFBDSSByZXNvdXJjZXMgKi8KKyNkZWZpbmUgQ09ORklHX0ZTTF9QQ0lFX1JFU0VUCTEJLyogbmVlZCBQQ0llIHJlc2V0IGVycmF0YSAqLworI2RlZmluZSBDT05GSUdfRlNMX0xBVwkJMQkvKiBVc2UgY29tbW9uIEZTTCBpbml0IGNvZGUgKi8KKworLyoKKyAqIEREUiBjb25maWcKKyAqLworI2RlZmluZSBDT05GSUdfRlNMX0REUjIKKyN1bmRlZiBDT05GSUdfRlNMX0REUl9JTlRFUkFDVElWRQorI2RlZmluZSBDT05GSUdfU1BEX0VFUFJPTQkJLyogVXNlIFNQRCBFRVBST00gZm9yIEREUiBzZXR1cCAqLworI2RlZmluZSBDT05GSUdfRERSX1NQRAorI2RlZmluZSBDT05GSUdfTUVNX0lOSVRfVkFMVUUJCTB4ZGVhZGJlZWYKKyNkZWZpbmUgU1BEX0VFUFJPTV9BRERSRVNTMQkJMHg1NAkvKiBCb3RoIGNoYW5uZWxzIHVzZSB0aGUgKi8KKyNkZWZpbmUgU1BEX0VFUFJPTV9BRERSRVNTMgkJMHg1NAkvKiBzYW1lIFNQRCBkYXRhICAgICAgICAgKi8KKyNkZWZpbmUgU1BEX0VFUFJPTV9PRkZTRVQJCTB4MjAwCS8qIE9GRlNFVCBvZiBTUEQgaW4gRUVQUk9NICovCisjZGVmaW5lIENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTCTIKKyNkZWZpbmUgQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIJMQorI2RlZmluZSBDT05GSUdfQ0hJUF9TRUxFQ1RTX1BFUl9DVFJMCTEKKyNkZWZpbmUgQ09ORklHX0REUl9FQ0MKKyNkZWZpbmUgQ09ORklHX0VDQ19JTklUX1ZJQV9ERFJDT05UUk9MTEVSCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1NEUkFNX0JBU0UJMHgwMDAwMDAwMCAvKiBERFIgaXMgc3lzdGVtIG1lbW9yeSovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRQorI2RlZmluZSBDT05GSUdfVkVSWV9CSUdfUkFNCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfYm9hcmRfc3lzX2Nsayh1bnNpZ25lZCBsb25nIGR1bW15KTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGdldF9ib2FyZF9kZHJfY2xrKHVuc2lnbmVkIGxvbmcgZHVtbXkpOworI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUQlnZXRfYm9hcmRfc3lzX2NsaygwKSAvKiBzeXNjbGsgZm9yIE1QQzg1eHggKi8KKyNkZWZpbmUgQ09ORklHX0REUl9DTEtfRlJFUQlnZXRfYm9hcmRfZGRyX2NsaygwKSAvKiBkZHJjbGsgZm9yIE1QQzg1eHggKi8KKworLyoKKyAqIFRoZXNlIGNhbiBiZSB0b2dnbGVkIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3RoZXJ3aXNlIHVzZSBkZWZhdWx0LgorICovCisjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCS8qIHRvZ2dsZSBMMiBjYWNoZSAqLworI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KKyNkZWZpbmUgQ09ORklHX0VOQUJMRV8zNkJJVF9QSFlTCTEKKworLyoKKyAqIEJhc2UgYWRkcmVzc2VzIC0tIE5vdGUgdGhlc2UgYXJlIGVmZmVjdGl2ZSBhZGRyZXNzZXMgd2hlcmUgdGhlCisgKiBhY3R1YWwgcmVzb3VyY2VzIGdldCBtYXBwZWQgKG5vdCBwaHlzaWNhbCBhZGRyZXNzZXMpCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19DQ1NSQkFSX0RFRkFVTFQJMHhmZjcwMDAwMAkvKiBDQ1NSQkFSIERlZmF1bHQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19DQ1NSQkFSCQkweGVmMDAwMDAwCS8qIHJlbG9jYXRlZCBDQ1NSQkFSICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTCUNPTkZJR19TWVNfQ0NTUkJBUgkvKiBwaHlzaWNhbCBhZGRyIG9mIENDU1JCQVIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTU1SCQlDT05GSUdfU1lTX0NDU1JCQVIJLyogUFFJSSB1c2VzIENPTkZJR19TWVNfSU1NUiAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0FERFIJCShDT05GSUdfU1lTX0NDU1JCQVIgKyAweGEwMDApCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfQUREUgkJKENPTkZJR19TWVNfQ0NTUkJBUiArIDB4OTAwMCkKKworLyoKKyAqIERpYWdub3N0aWNzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19BTFRfTUVNVEVTVAorI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgxMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDIwMDAwMDAwCisKKy8qCisgKiBNZW1vcnkgbWFwCisgKiAweDAwMDBfMDAwMAkweDdmZmZfZmZmZglERFIJCQkyRyBDYWNoZWFibGUKKyAqIDB4ODAwMF8wMDAwCTB4YmZmZl9mZmZmCVBDSWUxIE1lbQkJMUcgbm9uLWNhY2hlYWJsZQorICogMHhjMDAwXzAwMDAJMHhjZmZmX2ZmZmYJUENJZTIgTWVtCQkyNTZNIG5vbi1jYWNoZWFibGUKKyAqIDB4ZTAwMF8wMDAwCTB4ZTdmZl9mZmZmCVNSQU0vU1NSQU0vTDEgQ2FjaGUJMTI4TSBub24tY2FjaGVhYmxlCisgKiAweGU4MDBfMDAwMAkweGU4N2ZfZmZmZglQQ0llMSBJTwkJOE0gbm9uLWNhY2hlYWJsZQorICogMHhlODgwXzAwMDAJMHhlOGZmX2ZmZmYJUENJZTIgSU8JCThNIG5vbi1jYWNoZWFibGUKKyAqIDB4ZWYwMF8wMDAwCTB4ZWYwZl9mZmZmCUNDU1IvSU1NUgkJMU0gbm9uLWNhY2hlYWJsZQorICogMHhlZjgwXzAwMDAJMHhlZjhmX2ZmZmYJTkFORCBGbGFzaAkJMU0gbm9uLWNhY2hlYWJsZQorICogMHhmMDAwXzAwMDAJMHhmN2ZmX2ZmZmYJTk9SIEZsYXNoIDIJCTEyOE0gbm9uLWNhY2hlYWJsZQorICogMHhmODAwXzAwMDAJMHhmZmZmX2ZmZmYJTk9SIEZsYXNoIDEJCTEyOE0gbm9uLWNhY2hlYWJsZQorICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19MQkNfTENSUgkoTENSUl9DTEtESVZfNCB8IExDUlJfRUFEQ18zKQorCisvKgorICogTkFORCBmbGFzaCBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCTB4ZWY4MDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UyCQkweGVmODQwMDAwIC8qIFVudXNlZCBhdCB0aGlzIHRpbWUgKi8KKworLyoKKyAqIE5PUiBmbGFzaCBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQkweGY4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRTIJCTB4ZjAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQU5LU19MSVNUCXtDT05GSUdfU1lTX0ZMQVNIX0JBU0UsIENPTkZJR19TWVNfRkxBU0hfQkFTRTJ9CisjZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTCTIJCS8qIG51bWJlciBvZiBiYW5rcyAqLworI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9TRUNUCTEwMjQJCS8qIHNlY3RvcnMgcGVyIGRldmljZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VSQVNFX1RPVVQJNjAwMDAJCS8qIEZsYXNoIEVyYXNlIFRpbWVvdXQgKG1zKSAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQJNTAwCQkvKiBGbGFzaCBXcml0ZSBUaW1lb3V0IChtcykgKi8KKyNkZWZpbmUgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9DRkkKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUCXsgezB4ZmZmNDAwMDAsIDB4YzAwMDB9LCBcCisJCQkJCQkgIHsweGY3ZjQwMDAwLCAweGMwMDAwfSB9CisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCVRFWFRfQkFTRQkvKiBzdGFydCBvZiBtb25pdG9yICovCisKKy8qCisgKiBDaGlwIHNlbGVjdCBjb25maWd1cmF0aW9uCisgKi8KKy8qIE5PUiBGbGFzaCAwIG9uIENTMCAqLworI2RlZmluZSBDT05GSUdfU1lTX0JSMF9QUkVMSU0JKENPTkZJR19TWVNfRkxBU0hfQkFTRQl8IFwKKwkJCQkgQlJfUFNfMTYJCXwgXAorCQkJCSBCUl9WKQorI2RlZmluZSBDT05GSUdfU1lTX09SMF9QUkVMSU0JKE9SX0FNXzEyOE1CCQl8IFwKKwkJCQkgT1JfR1BDTV9DU05UCQl8IFwKKwkJCQkgT1JfR1BDTV9YQUNTCQl8IFwKKwkJCQkgT1JfR1BDTV9BQ1NfRElWMgl8IFwKKwkJCQkgT1JfR1BDTV9TQ1lfOAkJfCBcCisJCQkJIE9SX0dQQ01fVFJMWAkJfCBcCisJCQkJIE9SX0dQQ01fRUhUUgkJfCBcCisJCQkJIE9SX0dQQ01fRUFEKQorCisvKiBOT1IgRmxhc2ggMSBvbiBDUzEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CUjFfUFJFTElNCShDT05GSUdfU1lTX0ZMQVNIX0JBU0UyCXwgXAorCQkJCSBCUl9QU18xNgkJfCBcCisJCQkJIEJSX1YpCisjZGVmaW5lIENPTkZJR19TWVNfT1IxX1BSRUxJTQlDT05GSUdfU1lTX09SMF9QUkVMSU0KKworLyogTkFORCBmbGFzaCBvbiBDUzIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CUjJfUFJFTElNCShDT05GSUdfU1lTX05BTkRfQkFTRQl8IFwKKwkJCQkgKDI8PEJSX0RFQ0NfU0hJRlQpCXwgXAorCQkJCSBCUl9QU184CQl8IFwKKwkJCQkgQlJfTVNfRkNNCQl8IFwKKwkJCQkgQlJfVikKKworLyogTkFORCBmbGFzaCBvbiBDUzIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19PUjJfUFJFTElNCShPUl9BTV8yNTZLQgl8IFwKKwkJCQkgT1JfRkNNX1BHUwl8IFwKKwkJCQkgT1JfRkNNX0NTQ1QJfCBcCisJCQkJIE9SX0ZDTV9DU1QJfCBcCisJCQkJIE9SX0ZDTV9DSFQJfCBcCisJCQkJIE9SX0ZDTV9TQ1lfMQl8IFwKKwkJCQkgT1JfRkNNX1RSTFgJfCBcCisJCQkJIE9SX0ZDTV9FSFRSKQorCisvKiBOQU5EIGZsYXNoIG9uIENTMyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JSM19QUkVMSU0JKENPTkZJR19TWVNfTkFORF9CQVNFMgl8IFwKKwkJCQkgKDI8PEJSX0RFQ0NfU0hJRlQpCXwgXAorCQkJCSBCUl9QU184CQl8IFwKKwkJCQkgQlJfTVNfRkNNCQl8IFwKKwkJCQkgQlJfVikKKyNkZWZpbmUgQ09ORklHX1NZU19PUjNfUFJFTElNCUNPTkZJR19TWVNfT1IyX1BSRUxJTQorCisvKgorICogVXNlIEwxIGFzIGluaXRpYWwgc3RhY2sKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgwMDAwNDAwMAorCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKKworI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoNTEyICogMTAyNCkJLyogUmVzZXJ2ZSA1MTIgS0IgZm9yIE1vbiAqLworI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMDI0ICogMTAyNCkJLyogUmVzZXJ2ZWQgZm9yIG1hbGxvYyAqLworCisvKgorICogU2VyaWFsIFBvcnQKKyAqLworI2RlZmluZSBDT05GSUdfQ09OU19JTkRFWAkJMQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTAKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1NFUklBTAorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUJMQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLCQlnZXRfYnVzX2ZyZXEoMCkKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTEJKENPTkZJR19TWVNfQ0NTUkJBUisweDQ1MDApCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00yCShDT05GSUdfU1lTX0NDU1JCQVIrMHg0NjAwKQorI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCVwKKwl7MzAwLCA2MDAsIDEyMDAsIDI0MDAsIDQ4MDAsIDk2MDAsIDE5MjAwLCAzODQwMCwgMTE1MjAwfQorI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCQkxMTUyMDAKKyNkZWZpbmUgQ09ORklHX0xPQURTX0VDSE8JCTEJLyogZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkICovCisjZGVmaW5lIENPTkZJR19TWVNfTE9BRFNfQkFVRF9DSEFOR0UJMQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UgKi8KKworLyoKKyAqIFVzZSB0aGUgSFVTSCBwYXJzZXIKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0hVU0hfUEFSU0VSCisjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUX0hVU0hfUFMyCSI+ICIKKworLyoKKyAqIFBhc3Mgb3BlbiBmaXJtd2FyZSBmbGF0IHRyZWUKKyAqLworI2RlZmluZSBDT05GSUdfT0ZfTElCRkRUCQkxCisjZGVmaW5lIENPTkZJR19PRl9CT0FSRF9TRVRVUAkJMQorI2RlZmluZSBDT05GSUdfT0ZfU1RET1VUX1ZJQV9BTElBUwkxCisKKyNkZWZpbmUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URgkxCisjZGVmaW5lIENPTkZJR19TWVNfNjRCSVRfU1RSVE9VTAkxCisKKy8qCisgKiBJMkMKKyAqLworI2RlZmluZSBDT05GSUdfRlNMX0kyQwkJCQkvKiBVc2UgRlNMIGNvbW1vbiBJMkMgZHJpdmVyICovCisjZGVmaW5lIENPTkZJR19IQVJEX0kyQwkJCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1NQRUVECQk0MDAwMDAJLyogSTJDIHNwZWVkIGFuZCBzbGF2ZSBhZGRyZXNzICovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1NMQVZFCQkweDdGCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX09GRlNFVAkJMHgzMDAwCisjZGVmaW5lIENPTkZJR19TWVNfSTJDMl9PRkZTRVQJCTB4MzEwMAorI2RlZmluZSBDT05GSUdfSTJDX01VTFRJX0JVUworI2RlZmluZSBDT05GSUdfSTJDX0NNRF9UUkVFCisKKy8qIFBFWDg1MTggc2xhdmUgSTJDIGludGVyZmFjZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19QRVg4NTE4X0FERFIJMHg3MAorCisvKiBJMkMgRFMxNjMxIHRlbXBlcmF0dXJlIHNlbnNvciAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19EUzE2MjFfQUREUgkweDQ4CisjZGVmaW5lIENPTkZJR19EVFRfRFMxNjIxCisjZGVmaW5lIENPTkZJR19EVFRfU0VOU09SUwkJeyAwIH0KKworLyogSTJDIEVFUFJPTSAtIEFUMjRDMTI4QiAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUgkJMHg1NAorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUl9MRU4JCTIKKyNkZWZpbmUgQ09ORklHX1NZU19FRVBST01fUEFHRV9XUklURV9CSVRTCTYJLyogNjQgYnl0ZSBwYWdlcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0VFUFJPTV9QQUdFX1dSSVRFX0RFTEFZX01TCTEwCS8qIHRha2UgdXAgdG8gMTAgbXNlYyAqLworCisvKiBJMkMgUlRDICovCisjZGVmaW5lIENPTkZJR19SVENfTTQxVDExCQkxCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1JUQ19BRERSCQkweDY4CisjZGVmaW5lIENPTkZJR19TWVNfTTQxVDExX0JBU0VfWUVBUgkyMDAwCisKKy8qIEdQSU8vRUVQUk9NL1NSQU0gKi8KKyNkZWZpbmUgQ09ORklHX0RTNDUxMAorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19EUzQ1MTBfQUREUgkweDUxCisKKy8qIEdQSU8gKi8KKyNkZWZpbmUgQ09ORklHX1BDQTk1M1gKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSMAkweDE4CisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjEJMHgxYworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIyCTB4MWUKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSMwkweDFmCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUglDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwCisKKy8qCisgKiBQVSA9IHB1bGxlZCBoaWdoLCBQRCA9IHB1bGxlZCBsb3cKKyAqIEkgPSBpbnB1dCwgTyA9IG91dHB1dCwgSU8gPSBpbnB1dC9vdXRwdXQKKyAqLworLyogUENBOTU1NyBAIDB4MTgqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfU0VSMF9FTgkJMHgwMSAvKiBQVTsgVUFSVDAgZW5hYmxlICgxOiBlbmFibGVkKSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfU0VSMF9NT0RFCQkweDAyIC8qIFBVOyBVQVJUMCBzZXJpYWwgbW9kZSBzZWxlY3QgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0MwX1NFUjFfRU4JCTB4MDQgLyogUFU7IFVBUlQxIGVuYWJsZSAoMTogZW5hYmxlZCkgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0MwX1NFUjFfTU9ERQkJMHgwOCAvKiBQVTsgVUFSVDEgc2VyaWFsIG1vZGUgc2VsZWN0ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9DMF9GTEFTSF9QQVNTX0NTCTB4MTAgLyogUFU7IEJvb3QgZmxhc2ggQ1Mgc2VsZWN0ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9OVk1fV1AJCTB4MjAgLyogUFU7IFNldCB0byAwIHRvIGVuYWJsZSBOVk0gd3JpdGluZyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfVkNPUkVfVklEMgkweDQwIC8qIFZJRDIgb2YgSVNMNjI2MiAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfVkNPUkVfVklEMwkweDgwIC8qIFZJRDMgb2YgSVNMNjI2MiAqLworCisvKiBQQ0E5NTU3IEAgMHgxYyovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUMwX1JPT1QwCQkweDAxIC8qIFBVOyBMb3cgaWYgWE1DIGlzIFJDICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUMwX01WTVIwCQkweDAyIC8qIFhNQyBFRVBST00gd3JpdGUgcHJvdGVjdCAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfWE1DMF9XQUtFCQkweDA0IC8qIFBVOyBYTUMgd2FrZSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfWE1DMF9CSVNUCQkweDA4IC8qIFBVOyBYTUMgYnVpbHQgaW4gc2VsZiB0ZXN0ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUNfUFJFU0VOVAkJMHgxMCAvKiBQVTsgTG93IGlmIFhNQyBtb2R1bGUgaW5zdGFsbGVkICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QTUNfUFJFU0VOVAkJMHgyMCAvKiBQVTsgTG93IGlmIFBNQyBtb2R1bGUgaW5zdGFsbGVkICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QTUMwX01PTkFSQ0gJCTB4NDAgLyogUE1DIG1vbmFyY2ggbW9kZSBlbmFibGUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1BNQzBfRVJFQURZCQkweDgwIC8qIFBVOyBQTUMgUENJIGVyZWFkeSAqLworCisvKiBQQ0E5NTU3IEAgMHgxZSovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMF9HQTAJCTB4MDEgLyogUFU7IFZQWCBHZW9ncmFwaGljYWwgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfUDBfR0ExCQkweDAyIC8qIFBVOyBWUFggR2VvZ3JhcGhpY2FsIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AwX0dBMgkJMHgwNCAvKiBQVTsgVlBYIEdlb2dyYXBoaWNhbCBhZGRyZXNzICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMF9HQTMJCTB4MDggLyogUFU7IFZQWCBHZW9ncmFwaGljYWwgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfUDBfR0E0CQkweDEwIC8qIFBVOyBWUFggR2VvZ3JhcGhpY2FsIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AwX0dBUAkJMHgyMCAvKiBQVTsgdGllZCB0byBWUFggUDAuR0FQICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMV9TWVNFTgkJMHg4MCAvKiBQVTsgUHVsbGVkIGhpZ2g7IHRpZWQgdG8gVlBYIFAxLlNZU0NPTiAqLworCisvKiBQQ0E5NTU3IEAgMHgxZiAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfR1BJT19WUFgwCQkweDAxIC8qIFBVICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9HUElPX1ZQWDEJCTB4MDIgLyogUFUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0dQSU9fVlBYMgkJMHgwNCAvKiBQVSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfR1BJT19WUFgzCQkweDA4IC8qIFBVICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9WUFhfRlJVX1dSQ1RMCTB4MTAgLyogUEQ7IEkyQyBtYXN0ZXIgc291cmNlIGZvciBGUlUgU0VFUFJPTSAqLworCisvKgorICogR2VuZXJhbCBQQ0kKKyAqIE1lbW9yeSBzcGFjZSBpcyBtYXBwZWQgMS0xLCBidXQgSS9PIHNwYWNlIG11c3Qgc3RhcnQgZnJvbSAwLgorICovCisvKiBQQ0lFMSAtIFZQWCBQMSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUJMHg0MDAwMDAwMAkvKiAxRyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMJMHhlODAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1NJWkUJMHgwMDgwMDAwMAkvKiA4TSAqLworCisvKiBQQ0lFMiAtIFBFWDg1MTggKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQkweGMwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9TSVpFCTB4MTAwMDAwMDAJLyogMjU2TSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhlODgwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUJMHgwMDgwMDAwMAkvKiA4TSAqLworCisvKgorICogTmV0d29ya2luZyBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX1RTRUNfRU5FVAkJLyogdHNlYyBldGhlcm5ldCBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19QSFlfR0lHRQkJMQkvKiBJbmNsdWRlIEdiRSBzcGVlZC9kdXBsZXggZGV0ZWN0aW9uICovCisjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkJMQorI2RlZmluZSBDT05GSUdfVFNFQ19UQkkKKyNkZWZpbmUgQ09ORklHX01JSQkJMQkvKiBNSUkgUEhZIG1hbmFnZW1lbnQgKi8KKyNkZWZpbmUgQ09ORklHX01JSV9ERUZBVUxUX1RTRUMJMQkvKiBBbGxvdyB1bnJlZ2lzdGVyZWQgcGh5cyAqLworI2RlZmluZSBDT05GSUdfRVRIUFJJTUUJCSJlVFNFQzIiCisKKyNkZWZpbmUgQ09ORklHX1RTRUMxCQkxCisjZGVmaW5lIENPTkZJR19UU0VDMV9OQU1FCSJlVFNFQzEiCisjZGVmaW5lIFRTRUMxX0ZMQUdTCQkoVFNFQ19HSUdBQklUIHwgVFNFQ19SRURVQ0VEKQorI2RlZmluZSBUU0VDMV9QSFlfQUREUgkJMQorI2RlZmluZSBUU0VDMV9QSFlJRFgJCTAKKyNkZWZpbmUgQ09ORklHX0hBU19FVEgwCisKKyNkZWZpbmUgQ09ORklHX1RTRUMyCQkxCisjZGVmaW5lIENPTkZJR19UU0VDMl9OQU1FCSJlVFNFQzIiCisjZGVmaW5lIFRTRUMyX0ZMQUdTCQkoVFNFQ19HSUdBQklUIHwgVFNFQ19SRURVQ0VEKQorI2RlZmluZSBUU0VDMl9QSFlfQUREUgkJMgorI2RlZmluZSBUU0VDMl9QSFlJRFgJCTAKKyNkZWZpbmUgQ09ORklHX0hBU19FVEgxCisKKy8qCisgKiBDb21tYW5kIGNvbmZpZ3VyYXRpb24uCisgKi8KKyNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KKworI2RlZmluZSBDT05GSUdfQ01EX0FTS0VOVgorI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKKyNkZWZpbmUgQ09ORklHX0NNRF9ESENQCisjZGVmaW5lIENPTkZJR19DTURfRFM0NTEwCisjZGVmaW5lIENPTkZJR19DTURfRFM0NTEwX0lORk8KKyNkZWZpbmUgQ09ORklHX0NNRF9EVFQKKyNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KKyNkZWZpbmUgQ09ORklHX0NNRF9FTEYKKyNkZWZpbmUgQ09ORklHX0NNRF9FTlYKKyNkZWZpbmUgQ09ORklHX0NNRF9GTEFTSAorI2RlZmluZSBDT05GSUdfQ01EX0kyQworI2RlZmluZSBDT05GSUdfQ01EX0pGRlMyCisjZGVmaW5lIENPTkZJR19DTURfTUlJCisjZGVmaW5lIENPTkZJR19DTURfTkVUCisjZGVmaW5lIENPTkZJR19DTURfUENBOTUzWAorI2RlZmluZSBDT05GSUdfQ01EX1BDQTk1M1hfSU5GTworI2RlZmluZSBDT05GSUdfQ01EX1BDSQorI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKKyNkZWZpbmUgQ09ORklHX0NNRF9TTlRQCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSovCisjZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCTB4MjAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENPTkZJR19TWVNfUEJTSVpFIChDT05GSUdfU1lTX0NCU0laRStzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLworI2RlZmluZSBDT05GSUdfU1lTX01BWEFSR1MJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzICovCisjZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0haCQkxMDAwCQkvKiBkZWNyZW1lbnRlciBmcmVxOiAxbXMgdGlja3MgKi8KKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkxCQkvKiBhZGQgY29tbWFuZCBsaW5lIGhpc3RvcnkJKi8KKyNkZWZpbmUgQ09ORklHX0xPQURBRERSCQkweDEwMDAwMDAJLyogZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGZ0cCBhbmQgYm9vdG0gKi8KKyNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzCQkvKiAtMSBkaXNhYmxlcyBhdXRvLWJvb3QgKi8KKyNkZWZpbmUgQ09ORklHX1BBTklDX0hBTkcJCQkvKiBkbyBub3QgcmVzZXQgYm9hcmQgb24gcGFuaWMgKi8KKyNkZWZpbmUgQ09ORklHX1BSRUJPT1QJCQkJLyogZW5hYmxlIHByZWJvb3QgdmFyaWFibGUgKi8KKyNkZWZpbmUgQ09ORklHX0ZJVAkJMQorI2RlZmluZSBDT05GSUdfRklUX1ZFUkJPU0UJMQorI2RlZmluZSBDT05GSUdfSU5URUdSSVRZCQkJLyogc3VwcG9ydCBib290aW5nIElOVEVHUklUWSBPUyAqLworCisvKgorICogRm9yIGJvb3RpbmcgTGludXgsIHRoZSBib2FyZCBpbmZvIGFuZCBjb21tYW5kIGxpbmUgZGF0YQorICogaGF2ZSB0byBiZSBpbiB0aGUgZmlyc3QgMTYgTUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCisgKiB0aGUgbWF4aW11bSBtYXBwZWQgYnkgdGhlIExpbnV4IGtlcm5lbCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJKDE2IDw8IDIwKQkvKiBJbml0aWFsIE1lbW9yeSBtYXAgZm9yIExpbnV4Ki8KKworLyoKKyAqIEJvb3QgRmxhZ3MKKyAqLworI2RlZmluZSBCT09URkxBR19DT0xECQkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19XQVJNCQkweDAyCQkvKiBTb2Z0d2FyZSByZWJvb3QgKi8KKworLyoKKyAqIEVudmlyb25tZW50IENvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJMHgyMDAwMAkJLyogMTI4ayAob25lIHNlY3RvcikgZm9yIGVudiAqLworI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4ODAwMAorI2RlZmluZSBDT05GSUdfRU5WX0FERFIJCShDT05GSUdfU1lTX01PTklUT1JfQkFTRSAtICgyNTYgKiAxMDI0KSkKKworLyoKKyAqIEZsYXNoIG1lbW9yeSBtYXA6CisgKiBmZmY4MDAwMCAtIGZmZmZmZmZmICAgICBQcmkgVS1Cb290ICg1MTIgS0IpCisgKiBmZmY0MDAwMCAtIGZmZjdmZmZmICAgICBQcmkgVS1Cb290IEVudmlyb25tZW50ICgyNTYgS0IpCisgKiBmZmYwMDAwMCAtIGZmZjNmZmZmICAgICBQcmkgRkRUICgyNTZLQikKKyAqIGZlZjAwMDAwIC0gZmZlZmZmZmYgICAgIFByaSBPUyBpbWFnZSAoMTZNQikKKyAqIGY4MDAwMDAwIC0gZmVlZmZmZmYgICAgIFByaSBPUyBVc2UvRmlsZXN5c3RlbSAoMTExTUIpCisgKgorICogZjdmODAwMDAgLSBmN2ZmZmZmZiAgICAgU2VjIFUtQm9vdCAoNTEyIEtCKQorICogZjdmNDAwMDAgLSBmN2Y3ZmZmZiAgICAgU2VjIFUtQm9vdCBFbnZpcm9ubWVudCAoMjU2IEtCKQorICogZjdmMDAwMDAgLSBmN2YzZmZmZiAgICAgU2VjIEZEVCAoMjU2S0IpCisgKiBmNmYwMDAwMCAtIGY3ZWZmZmZmICAgICBTZWMgT1MgaW1hZ2UgKDE2TUIpCisgKiBmMDAwMDAwMCAtIGY2ZWZmZmZmICAgICBTZWMgT1MgVXNlL0ZpbGVzeXN0ZW0gKDExMU1CKQorICovCisjZGVmaW5lIENPTkZJR19VQk9PVDFfRU5WX0FERFIJTUtfU1RSKDB4ZmZmODAwMDApCisjZGVmaW5lIENPTkZJR19VQk9PVDJfRU5WX0FERFIJTUtfU1RSKDB4ZjdmODAwMDApCisjZGVmaW5lIENPTkZJR19GRFQxX0VOVl9BRERSCU1LX1NUUigweGZmZjAwMDAwKQorI2RlZmluZSBDT05GSUdfRkRUMl9FTlZfQUREUglNS19TVFIoMHhmN2YwMDAwMCkKKyNkZWZpbmUgQ09ORklHX09TMV9FTlZfQUREUglNS19TVFIoMHhmZWYwMDAwMCkKKyNkZWZpbmUgQ09ORklHX09TMl9FTlZfQUREUglNS19TVFIoMHhmNmYwMDAwMCkKKworI2RlZmluZSBDT05GSUdfUFJPR19VQk9PVDEJCQkJCQlcCisJIiRkb3dubG9hZF9jbWQgJGxvYWRhZGRyICR1Ym9vdGZpbGU7ICIJCQkJXAorCSJpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuICIJCQkJCVwKKwkJInByb3RlY3Qgb2ZmICJDT05GSUdfVUJPT1QxX0VOVl9BRERSIiArODAwMDA7ICIJCVwKKwkJImVyYXNlICJDT05GSUdfVUJPT1QxX0VOVl9BRERSIiArODAwMDA7ICIJCVwKKwkJImNwLncgJGxvYWRhZGRyICJDT05GSUdfVUJPT1QxX0VOVl9BRERSIiA0MDAwMDsgIglcCisJCSJwcm90ZWN0IG9uICJDT05GSUdfVUJPT1QxX0VOVl9BRERSIiArODAwMDA7ICIJCVwKKwkJImNtcC5iICRsb2FkYWRkciAiQ09ORklHX1VCT09UMV9FTlZfQUREUiIgODAwMDA7ICIJXAorCQkiaWYgdGVzdCAkPyAtbmUgMDsgdGhlbiAiCQkJCVwKKwkJCSJlY2hvIFBST0dSQU0gRkFJTEVEOyAiCQkJCVwKKwkJImVsc2U7ICIJCQkJCQlcCisJCQkiZWNobyBQUk9HUkFNIFNVQ0NFRURFRDsgIgkJCVwKKwkJImZpOyAiCQkJCQkJCVwKKwkiZWxzZTsgIgkJCQkJCQlcCisJCSJlY2hvIERPV05MT0FEIEZBSUxFRDsgIgkJCQlcCisJImZpOyIKKworI2RlZmluZSBDT05GSUdfUFJPR19VQk9PVDIJCQkJCQlcCisJIiRkb3dubG9hZF9jbWQgJGxvYWRhZGRyICR1Ym9vdGZpbGU7ICIJCQkJXAorCSJpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuICIJCQkJCVwKKwkJInByb3RlY3Qgb2ZmICJDT05GSUdfVUJPT1QyX0VOVl9BRERSIiArODAwMDA7ICIJCVwKKwkJImVyYXNlICJDT05GSUdfVUJPT1QyX0VOVl9BRERSIiArODAwMDA7ICIJCVwKKwkJImNwLncgJGxvYWRhZGRyICJDT05GSUdfVUJPT1QyX0VOVl9BRERSIiA0MDAwMDsgIglcCisJCSJwcm90ZWN0IG9uICJDT05GSUdfVUJPT1QyX0VOVl9BRERSIiArODAwMDA7ICIJCVwKKwkJImNtcC5iICRsb2FkYWRkciAiQ09ORklHX1VCT09UMl9FTlZfQUREUiIgODAwMDA7ICIJXAorCQkiaWYgdGVzdCAkPyAtbmUgMDsgdGhlbiAiCQkJCVwKKwkJCSJlY2hvIFBST0dSQU0gRkFJTEVEOyAiCQkJCVwKKwkJImVsc2U7ICIJCQkJCQlcCisJCQkiZWNobyBQUk9HUkFNIFNVQ0NFRURFRDsgIgkJCVwKKwkJImZpOyAiCQkJCQkJCVwKKwkiZWxzZTsgIgkJCQkJCQlcCisJCSJlY2hvIERPV05MT0FEIEZBSUxFRDsgIgkJCQlcCisJImZpOyIKKworI2RlZmluZSBDT05GSUdfQk9PVF9PU19ORVQJCQkJCQlcCisJIiRkb3dubG9hZF9jbWQgJG9zYWRkciAkb3NmaWxlOyAiCQkJCVwKKwkiaWYgdGVzdCAkPyAtZXEgMDsgdGhlbiAiCQkJCQlcCisJCSJpZiB0ZXN0IC1uICRmZHRhZGRyOyB0aGVuICIJCQkJXAorCQkJIiRkb3dubG9hZF9jbWQgJGZkdGFkZHIgJGZkdGZpbGU7ICIJCVwKKwkJCSJpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuICIJCQlcCisJCQkJImJvb3RtICRvc2FkZHIgLSAkZmR0YWRkcjsgIgkJXAorCQkJImVsc2U7ICIJCQkJCVwKKwkJCQkiZWNobyBGRFQgRE9XTkxPQUQgRkFJTEVEOyAiCQlcCisJCQkiZmk7ICIJCQkJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImJvb3RtICRvc2FkZHI7ICIJCQkJXAorCQkiZmk7ICIJCQkJCQkJXAorCSJlbHNlOyAiCQkJCQkJCVwKKwkJImVjaG8gT1MgRE9XTkxPQUQgRkFJTEVEOyAiCQkJCVwKKwkiZmk7IgorCisjZGVmaW5lIENPTkZJR19QUk9HX09TMQkJCQkJCQlcCisJIiRkb3dubG9hZF9jbWQgJG9zYWRkciAkb3NmaWxlOyAiCQkJCVwKKwkiaWYgdGVzdCAkPyAtZXEgMDsgdGhlbiAiCQkJCQlcCisJCSJlcmFzZSAiQ09ORklHX09TMV9FTlZfQUREUiIgKyRmaWxlc2l6ZTsgIgkJXAorCQkiY3AuYiAkb3NhZGRyICJDT05GSUdfT1MxX0VOVl9BRERSIiAkZmlsZXNpemU7ICIJXAorCQkiY21wLmIgJG9zYWRkciAiQ09ORklHX09TMV9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImlmIHRlc3QgJD8gLW5lIDA7IHRoZW4gIgkJCQlcCisJCQkiZWNobyBPUyBQUk9HUkFNIEZBSUxFRDsgIgkJCVwKKwkJImVsc2U7ICIJCQkJCQlcCisJCQkiZWNobyBPUyBQUk9HUkFNIFNVQ0NFRURFRDsgIgkJCVwKKwkJImZpOyAiCQkJCQkJCVwKKwkiZWxzZTsgIgkJCQkJCQlcCisJCSJlY2hvIE9TIERPV05MT0FEIEZBSUxFRDsgIgkJCQlcCisJImZpOyIKKworI2RlZmluZSBDT05GSUdfUFJPR19PUzIJCQkJCQkJXAorCSIkZG93bmxvYWRfY21kICRvc2FkZHIgJG9zZmlsZTsgIgkJCQlcCisJImlmIHRlc3QgJD8gLWVxIDA7IHRoZW4gIgkJCQkJXAorCQkiZXJhc2UgIkNPTkZJR19PUzJfRU5WX0FERFIiICskZmlsZXNpemU7ICIJCVwKKwkJImNwLmIgJG9zYWRkciAiQ09ORklHX09TMl9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImNtcC5iICRvc2FkZHIgIkNPTkZJR19PUzJfRU5WX0FERFIiICRmaWxlc2l6ZTsgIglcCisJCSJpZiB0ZXN0ICQ/IC1uZSAwOyB0aGVuICIJCQkJXAorCQkJImVjaG8gT1MgUFJPR1JBTSBGQUlMRUQ7ICIJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImVjaG8gT1MgUFJPR1JBTSBTVUNDRUVERUQ7ICIJCQlcCisJCSJmaTsgIgkJCQkJCQlcCisJImVsc2U7ICIJCQkJCQkJXAorCQkiZWNobyBPUyBET1dOTE9BRCBGQUlMRUQ7ICIJCQkJXAorCSJmaTsiCisKKyNkZWZpbmUgQ09ORklHX1BST0dfRkRUMQkJCQkJCVwKKwkiJGRvd25sb2FkX2NtZCAkZmR0YWRkciAkZmR0ZmlsZTsgIgkJCQlcCisJImlmIHRlc3QgJD8gLWVxIDA7IHRoZW4gIgkJCQkJXAorCQkiZXJhc2UgIkNPTkZJR19GRFQxX0VOVl9BRERSIiArJGZpbGVzaXplOyIJCVwKKwkJImNwLmIgJGZkdGFkZHIgIkNPTkZJR19GRFQxX0VOVl9BRERSIiAkZmlsZXNpemU7ICIJXAorCQkiY21wLmIgJGZkdGFkZHIgIkNPTkZJR19GRFQxX0VOVl9BRERSIiAkZmlsZXNpemU7ICIJXAorCQkiaWYgdGVzdCAkPyAtbmUgMDsgdGhlbiAiCQkJCVwKKwkJCSJlY2hvIEZEVCBQUk9HUkFNIEZBSUxFRDsgIgkJCVwKKwkJImVsc2U7ICIJCQkJCQlcCisJCQkiZWNobyBGRFQgUFJPR1JBTSBTVUNDRUVERUQ7ICIJCQlcCisJCSJmaTsgIgkJCQkJCQlcCisJImVsc2U7ICIJCQkJCQkJXAorCQkiZWNobyBGRFQgRE9XTkxPQUQgRkFJTEVEOyAiCQkJCVwKKwkiZmk7IgorCisjZGVmaW5lIENPTkZJR19QUk9HX0ZEVDIJCQkJCQlcCisJIiRkb3dubG9hZF9jbWQgJGZkdGFkZHIgJGZkdGZpbGU7ICIJCQkJXAorCSJpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuICIJCQkJCVwKKwkJImVyYXNlICJDT05GSUdfRkRUMl9FTlZfQUREUiIgKyRmaWxlc2l6ZTsiCQlcCisJCSJjcC5iICRmZHRhZGRyICJDT05GSUdfRkRUMl9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImNtcC5iICRmZHRhZGRyICJDT05GSUdfRkRUMl9FTlZfQUREUiIgJGZpbGVzaXplOyAiCVwKKwkJImlmIHRlc3QgJD8gLW5lIDA7IHRoZW4gIgkJCQlcCisJCQkiZWNobyBGRFQgUFJPR1JBTSBGQUlMRUQ7ICIJCQlcCisJCSJlbHNlOyAiCQkJCQkJXAorCQkJImVjaG8gRkRUIFBST0dSQU0gU1VDQ0VFREVEOyAiCQkJXAorCQkiZmk7ICIJCQkJCQkJXAorCSJlbHNlOyAiCQkJCQkJCVwKKwkJImVjaG8gRkRUIERPV05MT0FEIEZBSUxFRDsgIgkJCQlcCisJImZpOyIKKworI2RlZmluZQlDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCQkJCQlcCisJImF1dG9sb2FkPXllc1wwIgkJCQkJCVwKKwkiZG93bmxvYWRfY21kPXRmdHBcMCIJCQkJCQlcCisJImNvbnNvbGVfYXJncz1jb25zb2xlPXR0eVMwLDExNTIwMFwwIgkJCQlcCisJInJvb3RfYXJncz1yb290PS9kZXYvbmZzIHJ3XDAiCQkJCQlcCisJIm1pc2NfYXJncz1pcD1vblwwIgkJCQkJCVwKKwkic2V0X2Jvb3RhcmdzPXNldGVudiBib290YXJncyAke2NvbnNvbGVfYXJnc30gJHtyb290X2FyZ3N9ICR7bWlzY19hcmdzfVwwIiBcCisJImJvb3RmaWxlPS9ob21lL3VzZXIvZmlsZVwwIgkJCQkJXAorCSJvc2ZpbGU9L2hvbWUvdXNlci91SW1hZ2UtWFBlZGl0ZTUzNzBcMCIJCQlcCisJImZkdGZpbGU9L2hvbWUvdXNlci94cGVkaXRlNTM3MC5kdGJcMCIJCQkJXAorCSJ1Ym9vdGZpbGU9L2hvbWUvdXNlci91LWJvb3QuYmluXDAiCQkJCVwKKwkiZmR0YWRkcj1jMDAwMDBcMCIJCQkJCQlcCisJIm9zYWRkcj0weDEwMDAwMDBcMCIJCQkJCQlcCisJImxvYWRhZGRyPTB4MTAwMDAwMFwwIgkJCQkJCVwKKwkicHJvZ191Ym9vdDE9IkNPTkZJR19QUk9HX1VCT09UMSJcMCIJCQkJXAorCSJwcm9nX3Vib290Mj0iQ09ORklHX1BST0dfVUJPT1QyIlwwIgkJCQlcCisJInByb2dfb3MxPSJDT05GSUdfUFJPR19PUzEiXDAiCQkJCQlcCisJInByb2dfb3MyPSJDT05GSUdfUFJPR19PUzIiXDAiCQkJCQlcCisJInByb2dfZmR0MT0iQ09ORklHX1BST0dfRkRUMSJcMCIJCQkJXAorCSJwcm9nX2ZkdDI9IkNPTkZJR19QUk9HX0ZEVDIiXDAiCQkJCVwKKwkiYm9vdGNtZF9uZXQ9cnVuIHNldF9ib290YXJnczsgIkNPTkZJR19CT09UX09TX05FVCJcMCIJCVwKKwkiYm9vdGNtZF9mbGFzaDE9cnVuIHNldF9ib290YXJnczsgIgkJCQlcCisJCSJib290bSAiQ09ORklHX09TMV9FTlZfQUREUiIgLSAiQ09ORklHX0ZEVDFfRU5WX0FERFIiXDAiXAorCSJib290Y21kX2ZsYXNoMj1ydW4gc2V0X2Jvb3RhcmdzOyAiCQkJCVwKKwkJImJvb3RtICJDT05GSUdfT1MyX0VOVl9BRERSIiAtICJDT05GSUdfRkRUMl9FTlZfQUREUiJcMCJcCisJImJvb3RjbWQ9cnVuIGJvb3RjbWRfZmxhc2gxXDAiCisjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2FjYWRpYS5oIGIvaW5jbHVkZS9jb25maWdzL2FjYWRpYS5oCmluZGV4IDUyY2NkYjUuLjlmZmQ4NmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hY2FkaWEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYWNhZGlhLmgKQEAgLTI2Miw3ICsyNjIsNiBAQAogICogTkFORCBGTEFTSAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJKENPTkZJR19TWVNfTkFORF9BRERSICsgQ09ORklHX1NZU19OQU5EX0NTKQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfU0VMRUNUX0RFVklDRSAgMQkvKiBuYW5kIGRyaXZlciBzdXBwb3J0cyBtdXRpcGwuIGNoaXBzCSovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hZmViOTI2MC5oIGIvaW5jbHVkZS9jb25maWdzL2FmZWI5MjYwLmgKaW5kZXggZjA3N2FkOS4uZTk5NmJiZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FmZWI5MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2FmZWI5MjYwLmgKQEAgLTI5LDcgKzI5LDcgQEAKIC8qIEFSTSBhc3luY2hyb25vdXMgY2xvY2sgKi8KICNkZWZpbmUgQVQ5MV9NQUlOX0NMT0NLCQkxODQyOTk1MgkvKiBmcm9tIDE4LjQzMiBNSHogY3J5c3RhbCAqLwogI2RlZmluZSBBVDkxX01BU1RFUl9DTE9DSwk4OTk5OTU5OAkvKiBwZXJpcGhlcmFsID0gbWFpbiAvIDIgKi8KLSNkZWZpbmUgQ0ZHX0FUOTFfUExMQgkJMHgxMDdjM2UxOAkvKiBQTExCIHNldHRpbmdzIGZvciBVU0IgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19BVDkxX1BMTEIJMHgxMDdjM2UxOAkvKiBQTExCIHNldHRpbmdzIGZvciBVU0IgKi8KICNkZWZpbmUgQ09ORklHX1NZU19IWgkJMTAwMDAwMAkJLyogMXVzIHJlc29sdXRpb24gKi8KIAogI2RlZmluZSBBVDkxX1NMT1dfQ0xPQ0sJCTMyNzY4CS8qIHNsb3cgY2xvY2sgKi8KQEAgLTk3LDcgKzk3LDYgQEAKICNkZWZpbmUgREFUQUZMQVNIX1RDSFMJCQkoMHgxIDw8IDI0KQogCiAvKiBOQU5EIGZsYXNoICovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkJMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0RCV184CQkJMQpAQCAtMTUwLDcgKzE0OSw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0JTSVpFCQkyNTYKICNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCQkxNgogI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRQkJKENPTkZJR19TWVNfQ0JTSVpFICsgc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSArIDE2KQotI2RlZmluZSBDRkdfTE9OR0hFTFAJCTEKKyNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJMQogI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCTEKIAogI2RlZmluZSBST1VORChBLCBCKQkJKCgoQSkgKyAoQikpICYgfigoQikgLSAxKSkKQEAgLTE2Nyw0ICsxNjYsMyBAQAogI2VuZGlmCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWxwci5oIGIvaW5jbHVkZS9jb25maWdzL2FscHIuaAppbmRleCA2ZTlmNWU1Li5lNjI0OGU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYWxwci5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hbHByLmgKQEAgLTIzNSwxOCArMjM1LDE1IEBACiAjZGVmaW5lIENPTkZJR19DTURfREhDUAogI2RlZmluZSBDT05GSUdfQ01EX0RJQUcKICNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KLSNkZWZpbmUgQ09ORklHX0NNRF9FTEYKICNkZWZpbmUgQ09ORklHX0NNRF9GUEdBCiAjZGVmaW5lIENPTkZJR19DTURfSTJDCiAjZGVmaW5lIENPTkZJR19DTURfSVJRCiAjZGVmaW5lIENPTkZJR19DTURfTUlJCiAjZGVmaW5lIENPTkZJR19DTURfTkFORAogI2RlZmluZSBDT05GSUdfQ01EX05FVAotI2RlZmluZSBDT05GSUdfQ01EX05GUwogI2RlZmluZSBDT05GSUdfQ01EX1BDSQogI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKLSNkZWZpbmUgQ09ORklHX0NNRF9SRUdJTkZPCi0KKyN1bmRlZiBDT05GSUdfQ01EX05GUwogCiAjdW5kZWYgQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCiAKQEAgLTMzOCw3ICszMzUsNiBAQAogICogTkFORC1GTEFTSCBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTQKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCUNPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkweEYwMDAwMDAwCS8qIE5BTkQgRkxBU0ggQmFzZSBBZGRyZXNzCSovCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFX0xJU1QJeyBDT05GSUdfU1lTX05BTkRfQkFTRSArIDAsIENPTkZJR19TWVNfTkFORF9CQVNFICsgMiwJXAogCQkJCSAgQ09ORklHX1NZU19OQU5EX0JBU0UgKyA0LCBDT05GSUdfU1lTX05BTkRfQkFTRSArIDYgfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFjYXA5YWRrLmggYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MWNhcDlhZGsuaAppbmRleCBhZWIwNmFjLi5mMWM1NTI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MWNhcDlhZGsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MWNhcDlhZGsuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBBVDkxX01BSU5fQ0xPQ0sJCTEyMDAwMDAwCS8qIDEyIE1IeiBjcnlzdGFsICovCiAjZGVmaW5lIEFUOTFfTUFTVEVSX0NMT0NLCTEwMDAwMDAwMAkvKiBwZXJpcGhlcmFsICovCiAjZGVmaW5lIEFUOTFfQ1BVX0NMT0NLCQkyMDAwMDAwMDAJLyogY3B1ICovCi0jZGVmaW5lIENGR19BVDkxX1BMTEIJCTB4MTAwNzNlMDEJLyogUExMQiBzZXR0aW5ncyBmb3IgVVNCICovCisjZGVmaW5lIENPTkZJR19TWVNfQVQ5MV9QTExCCTB4MTAwNzNlMDEJLyogUExMQiBzZXR0aW5ncyBmb3IgVVNCICovCiAjZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAwMDAJCS8qIDF1cyByZXNvbHV0aW9uICovCiAKICNkZWZpbmUgQVQ5MV9TTE9XX0NMT0NLCQkzMjc2OAkvKiBzbG93IGNsb2NrICovCkBAIC0xMTgsNyArMTE4LDYgQEAKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1MJCTEKIAogLyogTkFORCBmbGFzaCAqLwotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJCTEKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJCTEKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCQkweDQwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9EQldfOAkJCTEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hdDkxcm05MjAwZGsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxcm05MjAwZGsuaAppbmRleCA3NDZmMGVmLi41YTk4MGQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXJtOTIwMGRrLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2F0OTFybTkyMDBkay5oCkBAIC00NSwzMyArNDUsMzMgQEAKICNpZm5kZWYgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVAogI2RlZmluZSBDT05GSUdfU1lTX1VTRV9NQUlOX09TQ0lMTEFUT1IJCTEKIC8qIGZsYXNoICovCi0jZGVmaW5lIE1DX1BVSUFfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfUFVQX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIE1DX1BVRVJfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfQVNSX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIE1DX0FBU1JfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgRUJJX0NGR1JfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgU01DX0NTUjBfVkFMCTB4MDAwMDMyODQgLyogMTZiaXQsIDIgVERGLCA0IFdTICovCisjZGVmaW5lIENPTkZJR19TWVNfTUNfUFVJQV9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX1BVUF9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX1BVRVJfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQ19BU1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQ19BQVNSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRUJJX0NGR1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19TTUNfQ1NSMF9WQUwJMHgwMDAwMzI4NCAvKiAxNmJpdCwgMiBUREYsIDQgV1MgKi8KIAogLyogY2xvY2tzICovCi0jZGVmaW5lIFBMTEFSX1ZBTAkweDIwMjYzRTA0IC8qIDE3OS43MTIwMDAgTUh6IGZvciBQQ0sgKi8KLSNkZWZpbmUgUExMQlJfVkFMCTB4MTA0ODNFMEUgLyogNDguMDU0ODU3IE1IeiAoZGl2aWRlciBieSAyIGZvciBVU0IpICovCi0jZGVmaW5lIE1DS1JfVkFMCTB4MDAwMDAyMDIgLyogUENLLzMgPSBNQ0sgTWFzdGVyIENsb2NrID0gNTkuOTA0MDAwTUh6IGZyb20gUExMQSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BMTEFSX1ZBTAkweDIwMjYzRTA0IC8qIDE3OS43MTIwMDAgTUh6IGZvciBQQ0sgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QTExCUl9WQUwJMHgxMDQ4M0UwRSAvKiA0OC4wNTQ4NTcgTUh6IChkaXZpZGVyIGJ5IDIgZm9yIFVTQikgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQ0tSX1ZBTAkweDAwMDAwMjAyIC8qIFBDSy8zID0gTUNLIE1hc3RlciBDbG9jayA9IDU5LjkwNDAwME1IeiBmcm9tIFBMTEEgKi8KIAogLyogc2RyYW0gKi8KLSNkZWZpbmUgUElPQ19BU1JfVkFMCTB4RkZGRjAwMDAgLyogQ29uZmlndXJlIFBJT0MgYXMgcGVyaXBoZXJhbCAoRDE2L0QzMSkgKi8KLSNkZWZpbmUgUElPQ19CU1JfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgUElPQ19QRFJfVkFMCTB4RkZGRjAwMDAKLSNkZWZpbmUgRUJJX0NTQV9WQUwJMHgwMDAwMDAwMiAvKiBDUzE9U0RSQU0gKi8KLSNkZWZpbmUgU0RSQ19DUl9WQUwJMHgyMTg4YzE1NSAvKiBzZXQgdXAgdGhlIFNEUkFNICovCi0jZGVmaW5lIFNEUkFNCQkweDIwMDAwMDAwIC8qIGFkZHJlc3Mgb2YgdGhlIFNEUkFNICovCi0jZGVmaW5lIFNEUkFNMQkJMHgyMDAwMDA4MCAvKiBhZGRyZXNzIG9mIHRoZSBTRFJBTSAqLwotI2RlZmluZSBTRFJBTV9WQUwJMHgwMDAwMDAwMCAvKiB2YWx1ZSB3cml0dGVuIHRvIFNEUkFNICovCi0jZGVmaW5lIFNEUkNfTVJfVkFMCTB4MDAwMDAwMDIgLyogUHJlY2hhcmdlIEFsbCAqLwotI2RlZmluZSBTRFJDX01SX1ZBTDEJMHgwMDAwMDAwNCAvKiByZWZyZXNoICovCi0jZGVmaW5lIFNEUkNfTVJfVkFMMgkweDAwMDAwMDAzIC8qIExvYWQgTW9kZSBSZWdpc3RlciAqLwotI2RlZmluZSBTRFJDX01SX1ZBTDMJMHgwMDAwMDAwMCAvKiBOb3JtYWwgTW9kZSAqLwotI2RlZmluZSBTRFJDX1RSX1ZBTAkweDAwMDAwMkUwIC8qIFdyaXRlIHJlZnJlc2ggcmF0ZSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BJT0NfQVNSX1ZBTAkweEZGRkYwMDAwIC8qIENvbmZpZ3VyZSBQSU9DIGFzIHBlcmlwaGVyYWwgKEQxNi9EMzEpICovCisjZGVmaW5lIENPTkZJR19TWVNfUElPQ19CU1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QSU9DX1BEUl9WQUwJMHhGRkZGMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0VCSV9DU0FfVkFMCTB4MDAwMDAwMDIgLyogQ1MxPUNPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJDX0NSX1ZBTAkweDIxODhjMTU1IC8qIHNldCB1cCB0aGUgQ09ORklHX1NZU19TRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNCTB4MjAwMDAwMDAgLyogYWRkcmVzcyBvZiB0aGUgQ09ORklHX1NZU19TRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNMQkweDIwMDAwMDgwIC8qIGFkZHJlc3Mgb2YgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9WQUwJMHgwMDAwMDAwMCAvKiB2YWx1ZSB3cml0dGVuIHRvIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJDX01SX1ZBTAkweDAwMDAwMDAyIC8qIFByZWNoYXJnZSBBbGwgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJDX01SX1ZBTDEJMHgwMDAwMDAwNCAvKiByZWZyZXNoICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwyCTB4MDAwMDAwMDMgLyogTG9hZCBNb2RlIFJlZ2lzdGVyICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwzCTB4MDAwMDAwMDAgLyogTm9ybWFsIE1vZGUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJDX1RSX1ZBTAkweDAwMDAwMkUwIC8qIFdyaXRlIHJlZnJlc2ggcmF0ZSAqLwogI2Vsc2UKICNkZWZpbmUgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKICNlbmRpZgkvKiBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUICovCkBAIC0xMjksNyArMTI5LDYgQEAKIAogI2RlZmluZSBOQU5EX0NoaXBJRF9VTktOT1dOCTB4MDAKICNkZWZpbmUgTkFORF9NQVhfRkxPT1JTIDEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgMQogCiAjZGVmaW5lIEFUOTFfU01BUlRfTUVESUFfQUxFICgxIDw8IDIyKQkvKiBvdXIgQUxFIGlzIEFEMjIgKi8KICNkZWZpbmUgQVQ5MV9TTUFSVF9NRURJQV9DTEUgKDEgPDwgMjEpCS8qIG91ciBDTEUgaXMgQUQyMSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYwZWsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2MGVrLmgKaW5kZXggMmRmOGQ1NC4uNDUwMWNhZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYwZWsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjBlay5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEFUOTFfTUFJTl9DTE9DSwkJMTg0MzIwMDAJLyogMTguNDMyIE1IeiBjcnlzdGFsICovCiAjZGVmaW5lIEFUOTFfTUFTVEVSX0NMT0NLCTEwMDAwMDAwMAkvKiBwZXJpcGhlcmFsICovCiAjZGVmaW5lIEFUOTFfQ1BVX0NMT0NLCQkyMDAwMDAwMDAJLyogY3B1ICovCi0jZGVmaW5lIENGR19BVDkxX1BMTEIJCTB4MTA3YzNlMTgJLyogUExMQiBzZXR0aW5ncyBmb3IgVVNCICovCisjZGVmaW5lIENPTkZJR19TWVNfQVQ5MV9QTExCCTB4MTA3YzNlMTgJLyogUExMQiBzZXR0aW5ncyBmb3IgVVNCICovCiAjZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAwMDAJCS8qIDF1cyByZXNvbHV0aW9uICovCiAKICNkZWZpbmUgQVQ5MV9TTE9XX0NMT0NLCQkzMjc2OAkvKiBzbG93IGNsb2NrICovCkBAIC0xMDAsNyArMTAwLDYgQEAKICNkZWZpbmUgREFUQUZMQVNIX1RDSFMJCQkoMHgxIDw8IDI0KQogCiAvKiBOQU5EIGZsYXNoICovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkJMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0RCV184CQkJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYxZWsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2MWVrLmgKaW5kZXggMDAxNmI0Zi4uNjY4ZmUzYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYxZWsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjFlay5oCkBAIC0xMTEsNyArMTExLDYgQEAKICNkZWZpbmUgREFUQUZMQVNIX1RDSFMJCQkoMHgxIDw8IDI0KQogCiAvKiBOQU5EIGZsYXNoICovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkJMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0RCV184CQkJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYzZWsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2M2VrLmgKaW5kZXggZmM3Yzk0MS4uYzY2MDNmZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYzZWsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjNlay5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEFUOTFfTUFJTl9DTE9DSwkJMTYzNjc2NjAJLyogMTYuMzY3IE1IeiBjcnlzdGFsICovCiAjZGVmaW5lIEFUOTFfTUFTVEVSX0NMT0NLCTEwMDAwMDAwMAkvKiBwZXJpcGhlcmFsICovCiAjZGVmaW5lIEFUOTFfQ1BVX0NMT0NLCQkyMDAwMDAwMDAJLyogY3B1ICovCi0jZGVmaW5lIENGR19BVDkxX1BMTEIJCTB4MTMzYTNlOGQJLyogUExMQiBzZXR0aW5ncyBmb3IgVVNCICovCisjZGVmaW5lIENPTkZJR19TWVNfQVQ5MV9QTExCCTB4MTMzYTNlOGQJLyogUExMQiBzZXR0aW5ncyBmb3IgVVNCICovCiAjZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAwMDAJCS8qIDF1cyByZXNvbHV0aW9uICovCiAKICNkZWZpbmUgQVQ5MV9TTE9XX0NMT0NLCQkzMjc2OAkvKiBzbG93IGNsb2NrICovCkBAIC0xMjMsNyArMTIzLDYgQEAKICNlbmRpZgogCiAvKiBOQU5EIGZsYXNoICovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkJMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0RCV184CQkJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05cmxlay5oIGIvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05cmxlay5oCmluZGV4IDM1ZmVmYzQuLjViZWYxZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOXJsZWsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTlybGVrLmgKQEAgLTEwNCw3ICsxMDQsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX05PX0ZMQVNICQkJMQogCiAvKiBOQU5EIGZsYXNoICovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkJMQogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0RCV184CQkJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oIGIvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oCmluZGV4IGYzZmZlMWMuLjhjNDEyN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9iYW1ib28uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmFtYm9vLmgKQEAgLTE5Nyw3ICsxOTcsNiBAQAogICogTkFORCBGTEFTSAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMgotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCShDT05GSUdfU1lTX05BTkRfQUREUiArIENPTkZJR19TWVNfTkFORF9DUykKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0VfTElTVAl7IENPTkZJR19TWVNfTkFORF9CQVNFLCBDT05GSUdfU1lTX05BTkRfQUREUiArIDIgfQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfU0VMRUNUX0RFVklDRSAgMQkvKiBuYW5kIGRyaXZlciBzdXBwb3J0cyBtdXRpcGwuIGNoaXBzCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYmY1Mzctc3RhbXAuaCBiL2luY2x1ZGUvY29uZmlncy9iZjUzNy1zdGFtcC5oCmluZGV4IDFiNTRkM2IuLmFjNWFhYTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9iZjUzNy1zdGFtcC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9iZjUzNy1zdGFtcC5oCkBAIC0yNzgsNyArMjc4LDYgQEAKICNkZWZpbmUgQUREUl9DT0xVTU5fUEFHRQkzCiAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04JMHgwMAogI2RlZmluZSBOQU5EX01BWF9GTE9PUlMJCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQkZJTl9OQU5EX1JFQURZCQlQRjMKIAogI2RlZmluZSBOQU5EX1dBSVRfUkVBRFkobmFuZCkJCQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY2FueW9ubGFuZHMuaCBiL2luY2x1ZGUvY29uZmlncy9jYW55b25sYW5kcy5oCmluZGV4IGZhZjYzMDQuLmQ4MTQwMTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jYW55b25sYW5kcy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jYW55b25sYW5kcy5oCkBAIC0yMzQsNyArMjM0LDYgQEAKICAqIE5BTkQtRkxBU0ggcmVsYXRlZAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJKENPTkZJR19TWVNfTkFORF9BRERSICsgQ09ORklHX1NZU19OQU5EX0NTKQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfU0VMRUNUX0RFVklDRSAgMQkvKiBuYW5kIGRyaXZlciBzdXBwb3J0cyBtdXRpcGwuIGNoaXBzCSovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jbWNfcHUyLmggYi9pbmNsdWRlL2NvbmZpZ3MvY21jX3B1Mi5oCmluZGV4IGNkZDMwOGQuLmQ5YWNiNDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jbWNfcHUyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NtY19wdTIuaApAQCAtNDQsMzMgKzQ0LDMzIEBACiAjaWZuZGVmIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQKICNkZWZpbmUgQ09ORklHX1NZU19VU0VfTUFJTl9PU0NJTExBVE9SCQkxCiAvKiBmbGFzaCAqLwotI2RlZmluZSBNQ19QVUlBX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIE1DX1BVUF9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBNQ19QVUVSX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIE1DX0FTUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBNQ19BQVNSX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIEVCSV9DRkdSX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIFNNQ19DU1IwX1ZBTAkweDEwMDAzMmFkIC8qIDE2Yml0LCAyIFRERiwgNCBXUyAqLworI2RlZmluZSBDT05GSUdfU1lTX01DX1BVSUFfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQ19QVVBfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQ19QVUVSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUNfQVNSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUNfQUFTUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0VCSV9DRkdSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfU01DX0NTUjBfVkFMCTB4MTAwMDMyYWQgLyogMTZiaXQsIDIgVERGLCA0IFdTICovCiAKIC8qIGNsb2NrcyAqLwotI2RlZmluZSBQTExBUl9WQUwJMHgyMDI2QkUwNCAvKiAxNzksNzEyIE1IeiBmb3IgUENLICovCi0jZGVmaW5lIFBMTEJSX1ZBTAkweDEwNDgzRTBFIC8qIDQ4LjA1NDg1NyBNSHogKGRpdmlkZXIgYnkgMiBmb3IgVVNCKSAqLwotI2RlZmluZSBNQ0tSX1ZBTAkweDAwMDAwMjAyIC8qIFBDSy8zID0gTUNLIE1hc3RlciBDbG9jayA9IDY5LjEyME1IeiBmcm9tIFBMTEEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QTExBUl9WQUwJMHgyMDI2QkUwNCAvKiAxNzksNzEyIE1IeiBmb3IgUENLICovCisjZGVmaW5lIENPTkZJR19TWVNfUExMQlJfVkFMCTB4MTA0ODNFMEUgLyogNDguMDU0ODU3IE1IeiAoZGl2aWRlciBieSAyIGZvciBVU0IpICovCisjZGVmaW5lIENPTkZJR19TWVNfTUNLUl9WQUwJMHgwMDAwMDIwMiAvKiBQQ0svMyA9IE1DSyBNYXN0ZXIgQ2xvY2sgPSA2OS4xMjBNSHogZnJvbSBQTExBICovCiAKIC8qIHNkcmFtICovCi0jZGVmaW5lIFBJT0NfQVNSX1ZBTAkweEZGRkYwMDAwIC8qIENvbmZpZ3VyZSBQSU9DIGFzIHBlcmlwaGVyYWwgKEQxNi9EMzEpICovCi0jZGVmaW5lIFBJT0NfQlNSX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIFBJT0NfUERSX1ZBTAkweEZGRkYwMDAwCi0jZGVmaW5lIEVCSV9DU0FfVkFMCTB4MDAwMDAwMDIgLyogQ1MxPVNEUkFNICovCi0jZGVmaW5lIFNEUkNfQ1JfVkFMCTB4MzM5OWMxZDQgLyogc2V0IHVwIHRoZSBTRFJBTSAqLwotI2RlZmluZSBTRFJBTQkJMHgyMDAwMDAwMCAvKiBhZGRyZXNzIG9mIHRoZSBTRFJBTSAqLwotI2RlZmluZSBTRFJBTTEJCTB4MjAwMDAwODAgLyogYWRkcmVzcyBvZiB0aGUgU0RSQU0gKi8KLSNkZWZpbmUgU0RSQU1fVkFMCTB4MDAwMDAwMDAgLyogdmFsdWUgd3JpdHRlbiB0byBTRFJBTSAqLwotI2RlZmluZSBTRFJDX01SX1ZBTAkweDAwMDAwMDAyIC8qIFByZWNoYXJnZSBBbGwgKi8KLSNkZWZpbmUgU0RSQ19NUl9WQUwxCTB4MDAwMDAwMDQgLyogcmVmcmVzaCAqLwotI2RlZmluZSBTRFJDX01SX1ZBTDIJMHgwMDAwMDAwMyAvKiBMb2FkIE1vZGUgUmVnaXN0ZXIgKi8KLSNkZWZpbmUgU0RSQ19NUl9WQUwzCTB4MDAwMDAwMDAgLyogTm9ybWFsIE1vZGUgKi8KLSNkZWZpbmUgU0RSQ19UUl9WQUwJMHgwMDAwMDJFMCAvKiBXcml0ZSByZWZyZXNoIHJhdGUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QSU9DX0FTUl9WQUwJMHhGRkZGMDAwMCAvKiBDb25maWd1cmUgUElPQyBhcyBwZXJpcGhlcmFsIChEMTYvRDMxKSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BJT0NfQlNSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUElPQ19QRFJfVkFMCTB4RkZGRjAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19FQklfQ1NBX1ZBTAkweDAwMDAwMDAyIC8qIENTMT1DT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19DUl9WQUwJMHgzMzk5YzFkNCAvKiBzZXQgdXAgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTQkweDIwMDAwMDAwIC8qIGFkZHJlc3Mgb2YgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTTEJMHgyMDAwMDA4MCAvKiBhZGRyZXNzIG9mIHRoZSBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fVkFMCTB4MDAwMDAwMDAgLyogdmFsdWUgd3JpdHRlbiB0byBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwJMHgwMDAwMDAwMiAvKiBQcmVjaGFyZ2UgQWxsICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwxCTB4MDAwMDAwMDQgLyogcmVmcmVzaCAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMgkweDAwMDAwMDAzIC8qIExvYWQgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMwkweDAwMDAwMDAwIC8qIE5vcm1hbCBNb2RlICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19UUl9WQUwJMHgwMDAwMDJFMCAvKiBXcml0ZSByZWZyZXNoIHJhdGUgKi8KICNlbHNlCiAjZGVmaW5lIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UCiAjZW5kaWYJLyogQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NzYjYzNy5oIGIvaW5jbHVkZS9jb25maWdzL2NzYjYzNy5oCmluZGV4IDY4MmRiNDQuLjc2MWMwZGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jc2I2MzcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY3NiNjM3LmgKQEAgLTQ1LDMzICs0NSwzMyBAQAogI2lmbmRlZiBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUCiAjZGVmaW5lIENPTkZJR19TWVNfVVNFX01BSU5fT1NDSUxMQVRPUgkJMQogLyogZmxhc2ggKi8KLSNkZWZpbmUgTUNfUFVJQV9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBNQ19QVVBfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfUFVFUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBNQ19BU1JfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfQUFTUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBFQklfQ0ZHUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBTTUNfQ1NSMF9WQUwJMHgwMDAwMzI4NCAvKiAxNmJpdCwgMiBUREYsIDQgV1MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQ19QVUlBX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUNfUFVQX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUNfUFVFUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX0FTUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX0FBU1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19FQklfQ0ZHUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1NNQ19DU1IwX1ZBTAkweDAwMDAzMjg0IC8qIDE2Yml0LCAyIFRERiwgNCBXUyAqLwogCiAvKiBjbG9ja3MgKi8KLSNkZWZpbmUgUExMQVJfVkFMCTB4MjAzMUJFMDEgLyogMTg0LjMyMDAwMCBNSHogZm9yIFBDSyAqLwotI2RlZmluZSBQTExCUl9WQUwJMHgxMjhBM0UxOSAvKiA0Ny45OTY5MjggTUh6IChkaXZpZGVyIGJ5IDIgZm9yIFVTQikgKi8KLSNkZWZpbmUgTUNLUl9WQUwJMHgwMDAwMDMwMiAvKiBQQ0svNCA9IE1DSyBNYXN0ZXIgQ2xvY2sgPSA0Ni4wODAwMDAgTUh6IGZyb20gUExMQSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BMTEFSX1ZBTAkweDIwMzFCRTAxIC8qIDE4NC4zMjAwMDAgTUh6IGZvciBQQ0sgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QTExCUl9WQUwJMHgxMjhBM0UxOSAvKiA0Ny45OTY5MjggTUh6IChkaXZpZGVyIGJ5IDIgZm9yIFVTQikgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQ0tSX1ZBTAkweDAwMDAwMzAyIC8qIFBDSy80ID0gTUNLIE1hc3RlciBDbG9jayA9IDQ2LjA4MDAwMCBNSHogZnJvbSBQTExBICovCiAKIC8qIHNkcmFtICovCi0jZGVmaW5lIFBJT0NfQVNSX1ZBTAkweEZGRkYwMDAwIC8qIENvbmZpZ3VyZSBQSU9DIGFzIHBlcmlwaGVyYWwgKEQxNi9EMzEpICovCi0jZGVmaW5lIFBJT0NfQlNSX1ZBTAkweDAwMDAwMDAwCi0jZGVmaW5lIFBJT0NfUERSX1ZBTAkweEZGRkYwMDAwCi0jZGVmaW5lIEVCSV9DU0FfVkFMCTB4MDAwMDAwMDIgLyogQ1MxPVNEUkFNICovCi0jZGVmaW5lIFNEUkNfQ1JfVkFMCTB4MjE5MTQxNTkgLyogc2V0IHVwIHRoZSBTRFJBTSAqLwotI2RlZmluZSBTRFJBTQkJMHgyMDAwMDAwMCAvKiBhZGRyZXNzIG9mIHRoZSBTRFJBTSAqLwotI2RlZmluZSBTRFJBTTEJCTB4MjAwMDAwODAgLyogYWRkcmVzcyBvZiB0aGUgU0RSQU0gKi8KLSNkZWZpbmUgU0RSQU1fVkFMCTB4MDAwMDAwMDAgLyogdmFsdWUgd3JpdHRlbiB0byBTRFJBTSAqLwotI2RlZmluZSBTRFJDX01SX1ZBTAkweDAwMDAwMDAyIC8qIFByZWNoYXJnZSBBbGwgKi8KLSNkZWZpbmUgU0RSQ19NUl9WQUwxCTB4MDAwMDAwMDQgLyogcmVmcmVzaCAqLwotI2RlZmluZSBTRFJDX01SX1ZBTDIJMHgwMDAwMDAwMyAvKiBMb2FkIE1vZGUgUmVnaXN0ZXIgKi8KLSNkZWZpbmUgU0RSQ19NUl9WQUwzCTB4MDAwMDAwMDAgLyogTm9ybWFsIE1vZGUgKi8KLSNkZWZpbmUgU0RSQ19UUl9WQUwJMHgwMDAwMDJFMCAvKiBXcml0ZSByZWZyZXNoIHJhdGUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QSU9DX0FTUl9WQUwJMHhGRkZGMDAwMCAvKiBDb25maWd1cmUgUElPQyBhcyBwZXJpcGhlcmFsIChEMTYvRDMxKSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BJT0NfQlNSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUElPQ19QRFJfVkFMCTB4RkZGRjAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19FQklfQ1NBX1ZBTAkweDAwMDAwMDAyIC8qIENTMT1DT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19DUl9WQUwJMHgyMTkxNDE1OSAvKiBzZXQgdXAgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTQkweDIwMDAwMDAwIC8qIGFkZHJlc3Mgb2YgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTTEJMHgyMDAwMDA4MCAvKiBhZGRyZXNzIG9mIHRoZSBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fVkFMCTB4MDAwMDAwMDAgLyogdmFsdWUgd3JpdHRlbiB0byBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwJMHgwMDAwMDAwMiAvKiBQcmVjaGFyZ2UgQWxsICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwxCTB4MDAwMDAwMDQgLyogcmVmcmVzaCAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMgkweDAwMDAwMDAzIC8qIExvYWQgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMwkweDAwMDAwMDAwIC8qIE5vcm1hbCBNb2RlICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19UUl9WQUwJMHgwMDAwMDJFMCAvKiBXcml0ZSByZWZyZXNoIHJhdGUgKi8KICNlbHNlCiAjZGVmaW5lIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UCiAjZW5kaWYJLyogQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCAqLwpAQCAtMTMxLDcgKzEzMSw2IEBACiAKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUyAxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTIDEKIAogI2RlZmluZSBBVDkxX1NNQVJUX01FRElBX0FMRSAoMSA8PCAyMikJLyogb3VyIEFMRSBpcyBBRDIyICovCiAjZGVmaW5lIEFUOTFfU01BUlRfTUVESUFfQ0xFICgxIDw8IDIxKQkvKiBvdXIgQ0xFIGlzIEFEMjEgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2R2ZXZtLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9kdmV2bS5oCmluZGV4IDY4ODViMmMuLmE3MjdmNTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2R2ZXZtLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZHZldm0uaApAQCAtMTI3LDcgKzEyNyw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkweDAyMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9IV19FQ0MKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcyAqLwotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVAkJMHgwCS8qIEJsb2NrIDAtLW5vdCB1c2VkIGJ5IGJvb3Rjb2RlICovCiAjZGVmaW5lIERFRl9CT09UTQkJIiIKICNlbGlmIGRlZmluZWQoQ09ORklHX1NZU19VU0VfTk9SKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc2NobW9vZ2llLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zY2htb29naWUuaAppbmRleCA4ZDdiY2Y1Li4yMmQzODA4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zY2htb29naWUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zY2htb29naWUuaApAQCAtODksNyArODksNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHgwMjAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfSFdfRUNDCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEJLyogTWF4IG51bWJlciBvZiBOQU5EIGRldmljZXMgKi8KLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVQJCTB4MAkvKiBCbG9jayAwLS1ub3QgdXNlZCBieSBib290Y29kZSAqLwogLyo9PT09PT09PT09PT09PT09PT09PT0qLwogLyogQm9hcmQgcmVsYXRlZCBzdHVmZiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc2Zmc2RyLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zZmZzZHIuaAppbmRleCBlOWNkNWE2Li44NzViYWI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zZmZzZHIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zZmZzZHIuaApAQCAtODUsNyArODUsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHgwMjAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfSFdfRUNDCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEJLyogTWF4IG51bWJlciBvZiBOQU5EIGRldmljZXMgKi8KLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVQJCTB4MAkvKiBCbG9jayAwLS1ub3QgdXNlZCBieSBib290Y29kZSAqLwogLyogSTJDIHN3aXRjaCBkZWZpbml0aW9ucyBmb3IgUENBOTU0MyBjaGlwICovCiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BDQTk1NDNfQUREUgkJMHg3MApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc29uYXRhLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zb25hdGEuaAppbmRleCAzODFlZWI3Li40N2FiMjdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zb25hdGEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zb25hdGEuaApAQCAtMTIyLDcgKzEyMiw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkweDAyMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9IV19FQ0MKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcyAqLwotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVAkJMHgwCS8qIEJsb2NrIDAtLW5vdCB1c2VkIGJ5IGJvb3Rjb2RlICovCiAjZGVmaW5lIERFRl9CT09UTQkJIiIKICNlbGlmIGRlZmluZWQoQ09ORklHX1NZU19VU0VfTk9SKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RlbHRhLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGVsdGEuaAppbmRleCAwOGIyOGNhLi5mZDk3Yjc0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGVsdGEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGVsdGEuaApAQCAtMjU4LDcgKzI1OCw2IEBACiAKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUwkJMQotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogCiAjZGVmaW5lIENPTkZJR19TWVNfTk9fRkxBU0gJCTEKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2VORVQuaCBiL2luY2x1ZGUvY29uZmlncy9lTkVULmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY5ZTk3MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9lTkVULmgKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgKKyAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20uCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyoKKyAqIGJvYXJkL2NvbmZpZy5oIC0gY29uZmlndXJhdGlvbiBvcHRpb25zLCBib2FyZCBzcGVjaWZpYworICovCisKKyNpZm5kZWYgX19DT05GSUdfSAorI2RlZmluZSBfX0NPTkZJR19ICisKKy8qCisgKiBTdHVmZiBzdGlsbCB0byBiZSBkZWFsdCB3aXRoIC0KKyAqLworI2RlZmluZSBDT05GSUdfUlRDX01DMTQ2ODE4CisKKy8qCisgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucworICogKGVhc3kgdG8gY2hhbmdlKQorICovCisjZGVmaW5lIERFQlVHX1BBUlNFUgorCisjZGVmaW5lIENPTkZJR19YODYJCQkxCS8qIEludGVsIFg4NiBDUFUgKi8KKyNkZWZpbmUgQ09ORklHX1NDNTIwCQkJMQkvKiBBTUQgU0M1MjAgKi8KKyNkZWZpbmUgQ09ORklHX1NDNTIwX1NTSQorI2RlZmluZSBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTCTEKKyNkZWZpbmUgQ09ORklHX0xBU1RfU1RBR0VfSU5JVAkJMQorCisvKgorICogSWYgQ09ORklHX0hXX1dBVENIRE9HIGlzIG5vdCBkZWZpbmVkLCB0aGUgd2F0Y2hkb2cganVtcGVyIG9uIHRoZQorICogYm90dG9tIChwcm9jZXNzb3IpIGJvYXJkIE1VU1QgYmUgcmVtb3ZlZCEKKyAqLworI3VuZGVmIENPTkZJR19XQVRDSERPRworI3VuZGVmIENPTkZJR19IV19XQVRDSERPRworCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqIFZpZGVvIENvbmZpZ3VyYXRpb24KKyAgKi8KKyN1bmRlZiBDT05GSUdfVklERU8JCQkvKiBObyBWaWRlbyBIYXJkd2FyZSAqLworI3VuZGVmIENPTkZJR19DRkJfQ09OU09MRQorCisvKgorICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCisgKi8KKyNkZWZpbmUgQ09ORklHX01BTExPQ19TSVpFCShDT05GSUdfU1lTX0VOVl9TSVpFICsgMTI4KjEwMjQpCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQk5NjAwCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgorICovCisjaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CisKKyNkZWZpbmUgQ09ORklHX0NNRF9BVVRPU0NSSVBUCS8qIEF1dG9zY3JpcHQgU3VwcG9ydAkJKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9CREkJCS8qIGJkaW5mbwkJCSovCisjZGVmaW5lIENPTkZJR19DTURfQk9PVEQJLyogYm9vdGQJCQkqLworI2RlZmluZSBDT05GSUdfQ01EX0NPTlNPTEUJLyogY29uaW5mbwkJCSovCisjZGVmaW5lIENPTkZJR19DTURfRUNITwkJLyogZWNobyBhcmd1bWVudHMJCSovCisjZGVmaW5lIENPTkZJR19DTURfRU5WCQkvKiBzYXZlZW52CQkJKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9GTEFTSAkvKiBmbGluZm8sIGVyYXNlLCBwcm90ZWN0CSovCisjZGVmaW5lIENPTkZJR19DTURfRlBHQQkJLyogRlBHQSBjb25maWd1cmF0aW9uIFN1cHBvcnQJKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9JTUkJCS8qIGltaW5mbwkJCSovCisjZGVmaW5lIENPTkZJR19DTURfSU1MUwkJLyogTGlzdCBhbGwgZm91bmQgaW1hZ2VzCSovCisjZGVmaW5lIENPTkZJR19DTURfSVRFU1QJLyogSW50ZWdlciAoYW5kIHN0cmluZykgdGVzdAkqLworI2RlZmluZSBDT05GSUdfQ01EX0xPQURCCS8qIGxvYWRiCQkJKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9MT0FEUwkvKiBsb2FkcwkJCSovCisjZGVmaW5lIENPTkZJR19DTURfTUVNT1JZCS8qIG1kIG1tIG5tIG13IGNwIGNtcCBjcmMgYmFzZSBsb29wIG10ZXN0ICovCisjZGVmaW5lIENPTkZJR19DTURfTUlTQwkJLyogTWlzYyBmdW5jdGlvbnMgbGlrZSBzbGVlcCBldGMqLworI3VuZGVmIENPTkZJR19DTURfTkVUCQkvKiBib290cCwgdGZ0cGJvb3QsIHJhcnBib290CSovCisjdW5kZWYgQ09ORklHX0NNRF9ORlMJCS8qIE5GUyBzdXBwb3J0CQkJKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9SVU4JCS8qIHJ1biBjb21tYW5kIGluIGVudiB2YXJpYWJsZQkqLworI2RlZmluZSBDT05GSUdfQ01EX1NFVEdFVERDUgkvKiBEQ1Igc3VwcG9ydCBvbiA0eHgJCSovCisjZGVmaW5lIENPTkZJR19DTURfWElNRwkJLyogTG9hZCBwYXJ0IG9mIE11bHRpIEltYWdlCSovCisjdW5kZWYgQ09ORklHX0NNRF9JUlEJCS8qIElSUSBJbmZvcm1hdGlvbgkJKi8KKworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCQkxNQorI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJCQkicm9vdD0vZGV2L210ZGJsb2NrMCBjb25zb2xlPXR0eVMwLDk2MDAiCisvKiAjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkJImJvb3RtIDM4MDAwMDAwIiAqLworCisjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCisjZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCQkxMTUyMDAJCS8qIHNwZWVkIHRvIHJ1biBrZ2RiIHNlcmlhbCBwb3J0ICovCisjZGVmaW5lIENPTkZJR19LR0RCX1NFUl9JTkRFWAkJMgkJLyogd2hpY2ggc2VyaWFsIHBvcnQgdG8gdXNlICovCisjZW5kaWYKKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZQlDT05GSUdfU1lTX0xPTkdIRUxQCQkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLworI2RlZmluZQlDT05GSUdfU1lTX1BST01QVAkJImJvb3QgPiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KKyNkZWZpbmUJQ09ORklHX1NZU19DQlNJWkUJCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUJQ09ORklHX1NZU19QQlNJWkUJCShDT05GSUdfU1lTX0NCU0laRSArIFwKKwkJCQkJIHNpemVvZihDT05GSUdfU1lTX1BST01QVCkgKyBcCisJCQkJCSAxNikJCS8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lCUNPTkZJR19TWVNfTUFYQVJHUwkJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCisjZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJCUNPTkZJR19TWVNfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKworI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDEwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCisjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4MDEwMDAwMDAJLyogMSAuLi4gMTYgTUIgaW4gRFJBTQkqLworCisjdW5kZWYgIENPTkZJR19TWVNfQ0xLU19JTl9IWgkJLyogZXZlcnl0aGluZywgaW5jbCBib2FyZCBpbmZvLCBpbiBIeiAqLworCisjZGVmaW5lCUNPTkZJR19TWVNfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcwkqLworCisjZGVmaW5lCUNPTkZJR19TWVNfSFoJCQkxMDI0CQkvKiBpbmNyZW1lbnRlciBmcmVxOiAxa0h6ICovCisKKwkJCQkJCS8qIHZhbGlkIGJhdWRyYXRlcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwIH0KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU0RSQU0gQ29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fRFJDVE1DVEwJMHgxOAorI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwkJNAorCisvKiBDT05GSUdfU1lTX1NEUkFNX0RSQ1RNQ1RMIE92ZXJyaWRlcyB0aGUgZm9sbG93aW5nKi8KKyN1bmRlZiBDT05GSUdfU1lTX1NEUkFNX1BSRUNIQVJHRV9ERUxBWQorI3VuZGVmIENPTkZJR19TWVNfU0RSQU1fUkVGUkVTSF9SQVRFCisjdW5kZWYgQ09ORklHX1NZU19TRFJBTV9SQVNfQ0FTX0RFTEFZCisjdW5kZWYgQ09ORklHX1NZU19TRFJBTV9DQVNfTEFURU5DWV8yVAorI3VuZGVmIENPTkZJR19TWVNfU0RSQU1fQ0FTX0xBVEVOQ1lfM1QKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ1BVIEZlYXR1cmVzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TQzUyMF9ISUdIX1NQRUVECTAJLyogMTAwIG9yIDEzM01IeiAqLworI3VuZGVmICBDT05GSUdfU1lTX1JFU0VUX1NDNTIwCQkJLyogdXNlIFNDNTIwIE1NQ1IncyB0byByZXNldCBjcHUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19USU1FUl9TQzUyMAkJCS8qIHVzZSBTQzUyMCBzd3RpbWVycyAqLworI3VuZGVmICBDT05GSUdfU1lTX1RJTUVSX0dFTkVSSUMJCS8qIHVzZSB0aGUgaTgyNTQgUElUIHRpbWVycyAqLworI3VuZGVmICBDT05GSUdfU1lTX1RJTUVSX1RTQwkJCS8qIHVzZSB0aGUgUGVudGl1bSBUU0MgdGltZXJzICovCisjZGVmaW5lIENPTkZJR19TWVNfVVNFX1NJT19VQVJUCQkwICAgICAgIC8qIHByZWZlciB0aGUgdWFydHMgb24gdGhlIFNJTyB0byB0aG9zZQorCQkJCQkgKiBpbiB0aGUgU0M1MjAgb24gdGhlIENEUCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNZW1vcnkgb3JnYW5pemF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TVEFDS19TSVpFCQkweDgwMDAgIAkvKiBTaXplIG9mIGJvb3Rsb2FkZXIgc3RhY2sgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CTF9TVEFSVF9GTEFTSAkweDM4MDQwMDAwCS8qIEFkZHJlc3Mgb2YgcmVsb2NhdGVkIGNvZGUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CTF9TVEFSVF9SQU0JCTB4MDNmZDAwMDAJLyogQWRkcmVzcyBvZiByZWxvY2F0ZWQgY29kZSAqLworI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQkJVEVYVF9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAgICAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uCSovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRQkJMHgzODAwMDAwMAkvKiBCb290IEZsYXNoICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRV8xCQkweDEwMDAwMDAwCS8qIFN0cmF0YUZsYXNoIDEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFXzIJCTB4MTEwMDAwMDAJLyogU3RyYXRhRmxhc2ggMiAqLworCisvKiB0aW1lb3V0IHZhbHVlcyBhcmUgaW4gdGlja3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUCSgyKkNPTkZJR19TWVNfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIEVyYXNlICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfV1JJVEVfVE9VVAkoMipDT05GSUdfU1lTX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBXcml0ZSAqLworCisvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCisjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCisKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICogRkxBU0ggY29uZmlndXJhdGlvbgorICAqLworI2RlZmluZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgkJCQkvKiBVc2UgdGhlIGNvbW1vbiBkcml2ZXIgKi8KKyNkZWZpbmUgQ09ORklHX0ZMQVNIX0NGSV9MRUdBQ1kKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9DRkkJCQkJLyogRmxhc2ggaXMgQ0ZJIGNvbmZvcm1hbnQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1MJMwkvKiBtYXggbnVtYmVyIG9mIG1lbW9yeSBiYW5rcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QJe0NPTkZJR19TWVNfRkxBU0hfQkFTRSwgICBcCisJCQkJCSBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfMSwgXAorCQkJCQkgQ09ORklHX1NZU19GTEFTSF9CQVNFXzJ9CisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfRU1QVFlfSU5GTworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUKKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAkxMjgJLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQ0ZJX1dJRFRICUZMQVNIX0NGSV84QklUCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfTEVHQUNZXzUxMkt4OAorCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqIEVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24KKyAgKi8KKyNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSAkJMQorI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVAkJMHgyMDAwMCAvKiAgIE9mZnNldCAgIG9mIEVudmlyb25tZW50IFNlY3RvciAqLworI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkweDA4MDAwIC8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisjZGVmaW5lIENPTkZJR19FTlZfU0VDVF9TSVpFCQkweDIwMDAwIC8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisjZGVmaW5lIENPTkZJR19FTlZfQUREUgkJCShDT05GSUdfU1lTX0ZMQVNIX0JBU0VfMSArIFwKKwkJCQkJIENPTkZJR19FTlZfT0ZGU0VUKQorI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVF9SRURVTkQJKENPTkZJR19FTlZfT0ZGU0VUICsgXAorCQkJCQkgQ09ORklHX0VOVl9TRUNUX1NJWkUpCisjZGVmaW5lIENPTkZJR19FTlZfU0laRV9SRURVTkQJCShDT05GSUdfRU5WX1NJWkUpCisKKworIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKiBQQ0kgY29uZmlndXJhdGlvbgorICAqLworI3VuZGVmIENPTkZJR19QQ0kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluY2x1ZGUgcGNpIHN1cHBvcnQgKi8KKyN1bmRlZiBDT05GSUdfUENJX1BOUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwY2kgcGx1Zy1hbmQtcGxheSAqLworI3VuZGVmIENPTkZJR19QQ0lfU0NBTl9TSE9XCisjdW5kZWYgQ09ORklHX1NZU19GSVJTVF9QQ0lfSVJRCisjdW5kZWYgQ09ORklHX1NZU19TRUNPTkRfUENJX0lSUQorI3VuZGVmIENPTkZJR19TWVNfVEhJUkRfUENJX0lSUQorI3VuZGVmIENPTkZJR19TWVNfRk9SVEhfUENJX0lSUQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBIYXJkd2FyZSB3YXRjaGRvZyBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19XQVRDSERPR19QSU9fQklUICAJCTB4ODAwMAorI2RlZmluZSBDT05GSUdfU1lTX1dBVENIRElHX1BJT19EQVRBIAkJU0M1MjBfUElPREFUQTE1XzAKKyNkZWZpbmUgQ09ORklHX1NZU19XQVRDSERJR19QSU9fQ0xSICAJCVNDNTIwX1BJT0NMUjE1XzAKKyNkZWZpbmUgQ09ORklHX1NZU19XQVRDSERJR19QSU9fU0VUICAJCVNDNTIwX1BJT1NFVDE1XzAKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRlBHQSBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GUEdBX1BST0dSQU1fUElPX0JJVAkJMHgyMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlBHQV9JTklUX1BJT19CSVQJCTB4NDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZQR0FfRE9ORV9QSU9fQklUCQkweDgwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19GUEdBX1BJT19EQVRBIAkJU0M1MjBfUElPREFUQTMxXzE2CisjZGVmaW5lIENPTkZJR19TWVNfRlBHQV9QSU9fRElSRUNUSU9OIAkJU0M1MjBfUElPRElSMzFfMTYKKyNkZWZpbmUgQ09ORklHX1NZU19GUEdBX1BJT19DTFIgIAkJU0M1MjBfUElPQ0xSMzFfMTYKKyNkZWZpbmUgQ09ORklHX1NZU19GUEdBX1BJT19TRVQgIAkJU0M1MjBfUElPU0VUMzFfMTYKKyNkZWZpbmUgQ09ORklHX1NZU19GUEdBX1BST0dSQU1fQklUX0RST1BfVElNRQkxCS8qIG1pbGxpc2Vjb25kcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZQR0FfTUFYX0lOSVRfVElNRQkJMTAJLyogbWlsbGlzZWNvbmRzICovCisjZGVmaW5lIENPTkZJR19TWVNfRlBHQV9NQVhfRklOQUxJU0VfVElNRQkxMAkvKiBtaWxsaXNlY29uZHMgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GUEdBX1NTSV9EQVRBX1JBVEUJCTgzMzMJLyoga0h6ICgzMy4zMzMzTUh6IHh0YWwpICovCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXA7CisKKyNkZWZpbmUgUFJJTlRJUAkJCQlhc20gKCJjYWxsIG5leHRfbGluZVxuIiBcCisJCQkJCSAgICAibmV4dF9saW5lOlxuIiBcCisJCQkJCSAgICAicG9wICUlZWF4XG4iIFwKKwkJCQkJICAgICJtb3ZsICUlZWF4LCAlMFxuIiBcCisJCQkJCSAgICA6Ij1yIihpcCkgXAorCQkJCQkgICAgOiAvKiBObyBJbnB1dCBSZWdpc3RlcnMgKi8gXAorCQkJCQkgICAgOiIlZWF4Iik7IFwKKwkJCQkJICAgIHByaW50ZigiSVA6IDB4JTA4bHggKEZpbGU6ICVzLCBMaW5lOiAlZClcbiIsIGlwLCBfX0ZJTEVfXywgX19MSU5FX18pOworCisjZW5kaWYKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mva2V5bWlsZS1jb21tb24uaCBiL2luY2x1ZGUvY29uZmlncy9rZXltaWxlLWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MGJjNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mva2V5bWlsZS1jb21tb24uaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwOAorICogSGVpa28gU2Nob2NoZXIsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIGhzQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0NPTkZJR19LRVlNSUxFX0gKKyNkZWZpbmUgX19DT05GSUdfS0VZTUlMRV9ICisKKy8qIERvIGJvYXJkc3BlY2lmaWMgaW5pdCBmb3IgYWxsIGJvYXJkcyAqLworI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9SICAgICAgIDEKKworI2lmIGRlZmluZWQoQ09ORklHX01HQ09HRSkgfHwgZGVmaW5lZChDT05GSUdfTUdTVVZEKQorI2RlZmluZSBDT05GSUdfQk9PVENPVU5UX0xJTUlUCisjZW5kaWYKKworLyoKKyAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgorICovCisjaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CisKKyNkZWZpbmUgQ09ORklHX0NNRF9BU0tFTlYKKyNkZWZpbmUgQ09ORklHX0NNRF9ESENQCisjZGVmaW5lIENPTkZJR19DTURfRUNITworI2RlZmluZSBDT05GSUdfQ01EX0lNTUFQCisjZGVmaW5lIENPTkZJR19DTURfTUlJCisjZGVmaW5lIENPTkZJR19DTURfUElORworCisvKiBzaG91bGQgZ28gYXdheSwgaWYga21ldGVyIEkyQyBzdXBwb3J0IGlzIGVuYWJsZWQgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19NR0NPR0UpIHx8IGRlZmluZWQoQ09ORklHX01HU1VWRCkKKyNkZWZpbmUgQ09ORklHX0NNRF9EVFQKKyNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KKyNkZWZpbmUgQ09ORklHX0NNRF9JMkMKKyNlbmRpZgorCisjdW5kZWYJQ09ORklHX1dBVENIRE9HCQkJLyogZGlzYWJsZSBwbGF0Zm9ybSBzcGVjaWZpYyB3YXRjaGRvZyAqLworCisjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkicnVuIG5ldF9uZnMiCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJNQkvKiBhdXRvYm9vdCBhZnRlciA1IHNlY29uZHMgKi8KKyN1bmRlZglDT05GSUdfQk9PVEFSR1MJCQkvKiB0aGUgYm9vdCBjb21tYW5kIHdpbGwgc2V0IGJvb3RhcmdzICovCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgorI2RlZmluZSBDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMgkiPiAiCisjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJCSI9PiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgICAqLworI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQorI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkJMTAyNAkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZSAgKi8KKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfQ0JTSVpFCQkyNTYJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgICovCisjZW5kaWYKKyNkZWZpbmUgQ09ORklHX1NZU19QQlNJWkUgKENPTkZJR19TWVNfQ0JTSVpFK3NpemVvZihDT05GSUdfU1lTX1BST01QVCkrMTYpCS8qIFByaW50IEJ1ZmZlciBTaXplICAqLworI2RlZmluZSBDT05GSUdfU1lTX01BWEFSR1MJCTE2CS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzICovCisjZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJCUNPTkZJR19TWVNfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUgICovCisjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCTEJLyogYWRkIGNvbW1hbmQgbGluZSBoaXN0b3J5ICAgICAqLworCisvKiBzaG91bGQgZ28gYXdheSwgaWYga21ldGVyIEkyQyBzdXBwb3J0IGlzIGVuYWJsZWQgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19NR0NPR0UpIHx8IGRlZmluZWQoQ09ORklHX01HU1VWRCkKKyNkZWZpbmUgQ09ORklHX0hVU0hfSU5JVF9WQVIJMQorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19BTFRfTUVNVEVTVAkJLyogbWVtb3J5IHRlc3QsIHRha2VzIHRpbWUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwZjAwMDAwCS8qIDEgLi4uIDE1IE1CIGluIERSQU0JKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkJMHgxMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0haCQkJMTAwMAkvKiBkZWNyZW1lbnRlciBmcmVxOiAxIG1zIHRpY2tzICovCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKKyNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwIH0KKworI2RlZmluZSBDT05GSUdfTE9BRFNfRUNITwkxCS8qIGVjaG8gb24gZm9yIHNlcmlhbCBkb3dubG9hZCAqLworI2RlZmluZSBDT05GSUdfU1lTX0xPQURTX0JBVURfQ0hBTkdFCTEJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlICovCisKKy8qCisgKiBIb3cgdG8gZ2V0IGFjY2VzcyB0byB0aGUgc2xvdCBJRC4gIFB1dCB0aGlzIGhlcmUgdG8gbWFrZSBpdCBlYXN5CisgKiB0byBtb2RpZnkgaW4gYSBjZW50cmFsaXplZCBsb2NhdGlvbi4gIFRoaXMgaXMgdXNlZCBpbiB0aGUgSERMQworICogZHJpdmVyIHRvIHNldCB0aGUgTUFDLgorKi8KKyNkZWZpbmUgQ09ORklHX0NIRUNLX0VUSEVSTkVUX1BSRVNFTlQJMQorI2RlZmluZSBDT05GSUdfU1lTX1NMT1RfSURfQkFTRQkJQ09ORklHX1NZU19QSUdHWV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfU0xPVF9JRF9PRkYJCSgweDA3KQkvKiByZWdpc3RlciBvZmZzZXQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TTE9UX0lEX01BU0sJCSgweDNmKQkvKiBtYXNrIGZvciBzbG90IElEIGJpdHMgKi8KKworLyoKKyAqIEJPT1RQIG9wdGlvbnMKKyAqLworI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCisjZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAorI2RlZmluZSBDT05GSUdfQk9PVFBfR0FURVdBWQorI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUKKworI2VuZGlmIC8qIF9fQ09ORklHX0tFWU1JTEVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2tpbGF1ZWEuaCBiL2luY2x1ZGUvY29uZmlncy9raWxhdWVhLmgKaW5kZXggYjk0M2YzMS4uNGQzY2NmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2tpbGF1ZWEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mva2lsYXVlYS5oCkBAIC0yMTQsNyArMjE0LDYgQEAKICAqIE5BTkQgRkxBU0gKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCShDT05GSUdfU1lTX05BTkRfQUREUiArIENPTkZJR19TWVNfTkFORF9DUykKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX1NFTEVDVF9ERVZJQ0UgIDEJLyogbmFuZCBkcml2ZXIgc3VwcG9ydHMgbXV0aXBsLiBjaGlwcwkqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mva21ldGVyMS5oIGIvaW5jbHVkZS9jb25maWdzL2ttZXRlcjEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWIxYzE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL2ttZXRlcjEuaApAQCAtMCwwICsxLDQ1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogICAgICAgICAgICAgICAgICAgIERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IExvZ2ljIFByb2R1Y3QgRGV2ZWxvcG1lbnQsIEluYy4KKyAqICAgICAgICAgICAgICAgICAgICBQZXRlciBCYXJhZGEgPHBldGVyYkBsb2dpY3BkLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICogICAgICAgICAgICAgICAgICAgIEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwOAorICogSGVpa28gU2Nob2NoZXIsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIGhzQGRlbnguZGUuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisvKgorICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKKyAqLworI2RlZmluZSBDT05GSUdfRTMwMAkJMSAvKiBFMzAwIGZhbWlseSAqLworI2RlZmluZSBDT05GSUdfUUUJCTEgLyogSGFzIFFFICovCisjZGVmaW5lIENPTkZJR19NUEM4M1hYCQkxIC8qIE1QQzgzWFggZmFtaWx5ICovCisjZGVmaW5lIENPTkZJR19NUEM4MzYwCQkxIC8qIE1QQzgzNjAgQ1BVIHNwZWNpZmljICovCisjZGVmaW5lIENPTkZJR19LTUVURVIxCQkxIC8qIEtNRVRFUjEgYm9hcmQgc3BlY2lmaWMgKi8KKworLyogaW5jbHVkZSBjb21tb24gZGVmaW5lcy9vcHRpb25zIGZvciBhbGwgS2V5bWlsZSBib2FyZHMgKi8KKyNpbmNsdWRlICJrZXltaWxlLWNvbW1vbi5oIgorCisvKgorICogU3lzdGVtIENsb2NrIFNldHVwCisgKi8KKyNkZWZpbmUgQ09ORklHXzgzWFhfQ0xLSU4JCTY2MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEJCTY2MDAwMDAwCisjZGVmaW5lIENPTkZJR184M1hYX1BDSUNMSwkJNjYwMDAwMDAKKworLyoKKyAqIEhhcmR3YXJlIFJlc2V0IENvbmZpZ3VyYXRpb24gV29yZAorICovCisjZGVmaW5lIENPTkZJR19TWVNfSFJDV19MT1cgKFwKKwlIUkNXTF9DU0JfVE9fQ0xLSU5fNFgxIHwgXAorCUhSQ1dMX0NPUkVfVE9fQ1NCXzJYMSB8IFwKKwlIUkNXTF9DRV9QTExfVkNPX0RJVl8yIHwgXAorCUhSQ1dMX0NFX1RPX1BMTF8xWDYgKQorCisjZGVmaW5lIENPTkZJR19TWVNfSFJDV19ISUdIIChcCisJSFJDV0hfQ09SRV9FTkFCTEUgfCBcCisJSFJDV0hfRlJPTV8wWDAwMDAwMTAwIHwgXAorCUhSQ1dIX0JPT1RTRVFfTk9STUFMIHwgXAorCUhSQ1dIX1NXX1dBVENIRE9HX0RJU0FCTEUgfCBcCisJSFJDV0hfUk9NX0xPQ19MT0NBTF8xNkJJVCB8IFwKKwlIUkNXSF9CSUdfRU5ESUFOIHwgXAorCUhSQ1dIX0xEUF9DTEVBUiApCisKKy8qCisgKiBTeXN0ZW0gSU8gQ29uZmlnCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TSUNSSAkJMHgwMDAwMDAwNgorI2RlZmluZSBDT05GSUdfU1lTX1NJQ1JMCQkweDAwMDAwMDAwCisKKy8qCisgKiBJTU1SIG5ldyBhZGRyZXNzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTU1SCQkweEUwMDAwMDAwCisKKy8qCisgKiBERFIgU2V0dXAKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0REUl9CQVNFCQkweDAwMDAwMDAwIC8qIEREUiBpcyBzeXN0ZW0gbWVtb3J5ICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJQ09ORklHX1NZU19ERFJfQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX0REUl9TRFJBTV9CQVNFCUNPTkZJR19TWVNfRERSX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfU0RSQU1fQ0xLX0NOVEwJKEREUl9TRFJBTV9DTEtfQ05UTF9TU19FTiB8IFwKKwkJCQkJRERSX1NEUkFNX0NMS19DTlRMX0NMS19BREpVU1RfMDUpCisKKyNkZWZpbmUgQ0ZHXzgzWFhfRERSX1VTRVNfQ1MwCisKKyN1bmRlZiBDT05GSUdfRERSX0VDQworCisvKgorICogRERSQ0RSIC0gRERSIENvbnRyb2wgRHJpdmVyIFJlZ2lzdGVyCisgKi8KKworI3VuZGVmIENPTkZJR19TUERfRUVQUk9NCS8qIERvIG5vdCB1c2UgU1BEIEVFUFJPTSBmb3IgRERSIHNldHVwICovCisKKy8qCisgKiBNYW51YWxseSBzZXQgdXAgRERSIHBhcmFtZXRlcnMKKyAqLworI2RlZmluZSBDT05GSUdfRERSX0lJCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1NJWkUJCTI1NiAvKiBNQiAqLworI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzBfQk5EUwkJMHgwMDAwMDAwZgorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHCShDU0NPTkZJR19FTiB8IENTQ09ORklHX0FQIHwgXAorCQkJCQkgQ1NDT05GSUdfUk9XX0JJVF8xMyB8IFwKKwkJCQkJIENTQ09ORklHX0NPTF9CSVRfMTAgfCBDU0NPTkZJR19PRFRfV1JfQUNTKQorCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1NEUkFNX0NGRwkoU0RSQU1fQ0ZHX1NEUkFNX1RZUEVfRERSMiB8IFwKKwkJCQkJIFNEUkFNX0NGR19TUkVOKQorI2RlZmluZSBDT05GSUdfU1lTX0REUl9TRFJBTV9DRkcyCTB4MDA0MDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ0xLX0NOVEwJKEREUl9TRFJBTV9DTEtfQ05UTF9DTEtfQURKVVNUXzA1KQorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTAkoKDB4MTAwIDw8IFNEUkFNX0lOVEVSVkFMX0JTVE9QUkVfU0hJRlQpIHwgXAorCQkJCSAoMHg0MDYgPDwgU0RSQU1fSU5URVJWQUxfUkVGSU5UX1NISUZUKSkKKworI2RlZmluZSBDT05GSUdfU1lTX0REUl9NT0RFCQkweDA0NDQwMjQyCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREUyCQkweDAwODAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzAJKCgyIDw8IFRJTUlOR19DRkcwX01SU19DWUNfU0hJRlQpIHwgXAorCQkJCSAoOCA8PCBUSU1JTkdfQ0ZHMF9PRFRfUERfRVhJVF9TSElGVCkgfCBcCisJCQkJICg2IDw8IFRJTUlOR19DRkcwX1BSRV9QRF9FWElUX1NISUZUKSB8IFwKKwkJCQkgKDIgPDwgVElNSU5HX0NGRzBfQUNUX1BEX0VYSVRfU0hJRlQpIHwgXAorCQkJCSAoMCA8PCBUSU1JTkdfQ0ZHMF9XV1RfU0hJRlQpIHwgXAorCQkJCSAoMCA8PCBUSU1JTkdfQ0ZHMF9SUlRfU0hJRlQpIHwgXAorCQkJCSAoMCA8PCBUSU1JTkdfQ0ZHMF9XUlRfU0hJRlQpIHwgXAorCQkJCSAoMCA8PCBUSU1JTkdfQ0ZHMF9SV1RfU0hJRlQpKQorCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18xCSgoICAgICAgVElNSU5HX0NGRzFfQ0FTTEFUXzQwKSB8IFwKKwkJCQkgKCAyIDw8IFRJTUlOR19DRkcxX1dSVE9SRF9TSElGVCkgfCBcCisJCQkJICggMSA8PCBUSU1JTkdfQ0ZHMV9BQ1RUT0FDVF9TSElGVCkgfCBcCisJCQkJICggMiA8PCBUSU1JTkdfQ0ZHMV9XUlJFQ19TSElGVCkgfCBcCisJCQkJICggMiA8PCBUSU1JTkdfQ0ZHMV9SRUZSRUNfU0hJRlQpIHwgXAorCQkJCSAoIDIgPDwgVElNSU5HX0NGRzFfQUNUVE9SV19TSElGVCkgfCBcCisJCQkJICggNiA8PCBUSU1JTkdfQ0ZHMV9BQ1RUT1BSRV9TSElGVCkgfCBcCisJCQkJICggMiA8PCBUSU1JTkdfQ0ZHMV9QUkVUT0FDVF9TSElGVCkpCisKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzIJKCg1IDw8IFRJTUlOR19DRkcyX0ZPVVJfQUNUX1NISUZUKSB8IFwKKwkJCQkgKDMgPDwgVElNSU5HX0NGRzJfQ0tFX1BMU19TSElGVCkgfCBcCisJCQkJICgyIDw8IFRJTUlOR19DRkcyX1dSX0RBVEFfREVMQVlfU0hJRlQpIHwgXAorCQkJCSAoMSA8PCBUSU1JTkdfQ0ZHMl9SRF9UT19QUkVfU0hJRlQpIHwgXAorCQkJCSAoMyA8PCBUSU1JTkdfQ0ZHMl9XUl9MQVRfREVMQVlfU0hJRlQpIHwgXAorCQkJCSAoMCA8PCBUSU1JTkdfQ0ZHMl9BRERfTEFUX1NISUZUKSB8IFwKKwkJCQkgKDQgPDwgVElNSU5HX0NGRzJfQ1BPX1NISUZUKSkKKworI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMwkweDAwMDAwMDAwCisKKy8qCisgKiBUaGUgcmVzZXJ2ZWQgbWVtb3J5CisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJVEVYVF9CQVNFIC8qIHN0YXJ0IG9mIG1vbml0b3IgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQkweEYwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRV8xCQkweEYyMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUElHR1lfQkFTRQkJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BBWEVfQkFTRQkJMHhBMDAwMDAwMAorI2RlZmluZQlDT05GSUdfU1lTX1BBWEVfU0laRQkJMjU2CisKKyNpZiAoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgPCBDT05GSUdfU1lTX0ZMQVNIX0JBU0UpCisjZGVmaW5lIENPTkZJR19TWVNfUkFNQk9PVAorI2Vsc2UKKyN1bmRlZglDT05GSUdfU1lTX1JBTUJPT1QKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCisjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEyOCAqIDEwMjQpIC8qIFJlc2VydmVkIGZvciBtYWxsb2MgKi8KKworLyoKKyAqIEluaXRpYWwgUkFNIEJhc2UgQWRkcmVzcyBTZXR1cAorICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEU2MDAwMDAwIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMCAvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKworLyoKKyAqIExvY2FsIEJ1cyBDb25maWd1cmF0aW9uICYgQ2xvY2sgU2V0dXAKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0xDUlIJCShMQ1JSX0RCWVAgfCBMQ1JSX0VBRENfMiB8IExDUlJfQ0xLRElWXzQpCisKKy8qCisgKiBJbml0IExvY2FsIEJ1cyBNZW1vcnkgQ29udHJvbGxlcjoKKyAqCisgKiBCYW5rIEJ1cyAgICAgTWFjaGluZSBQb3J0U3ogIFNpemUgIERldmljZQorICogLS0tLSAtLS0gICAgIC0tLS0tLS0gLS0tLS0tICAtLS0tLSAgLS0tLS0tCisgKiAgMCAgIExvY2FsICAgR1BDTSAgICAxNiBiaXQgIDI1Nk1CIEZMQVNICisgKiAgMSAgIExvY2FsICAgR1BDTSAgICAgOCBiaXQgIDI1NktCIEdQSU8vUElHR1kKKyAqICAzICAgTG9jYWwgICBHUENNICAgICA4IGJpdCAgMjU2TUIgUEFYRQorICoKKyAqLworLyoKKyAqIEZMQVNIIG9uIHRoZSBMb2NhbCBCdXMKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQkJLyogdXNlIHRoZSBDb21tb24gRmxhc2ggSW50ZXJmYWNlICovCisjZGVmaW5lIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCQkvKiB1c2UgdGhlIENGSSBkcml2ZXIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9TSVpFCQkyNTYgLyogbWF4IEZMQVNIIHNpemUgaXMgMjU2TSAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1BST1RFQ1RJT04JMQorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUJMQorCisjZGVmaW5lIENPTkZJR19TWVNfTEJMQVdCQVIwX1BSRUxJTQlDT05GSUdfU1lTX0ZMQVNIX0JBU0UgLyogV2luZG93IGJhc2UgYXQgZmxhc2ggYmFzZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0xCTEFXQVIwX1BSRUxJTQkweDgwMDAwMDFiIC8qIDI1Nk1CIHdpbmRvdyBzaXplICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19CUjBfUFJFTElNCShDT05GSUdfU1lTX0ZMQVNIX0JBU0UgfCBcCisJCQkJKDIgPDwgQlJfUFNfU0hJRlQpIHwgLyogMTYgYml0IHBvcnQgc2l6ZSAqLyBcCisJCQkJQlJfVikKKworI2RlZmluZSBDT05GSUdfU1lTX09SMF9QUkVMSU0JKE1FR19UT19BTShDT05GSUdfU1lTX0ZMQVNIX1NJWkUpIHwgXAorCQkJCU9SX0dQQ01fQ1NOVCB8IE9SX0dQQ01fQUNTX0RJVjIgfCBcCisJCQkJT1JfR1BDTV9TQ1lfNSB8IFwKKwkJCQlPUl9HUENNX1RSTFggfCBPUl9HUENNX0VBRCkKKworI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9CQU5LUwkyCS8qIG1heCBudW0gb2YgZmxhc2ggYmFua3MJKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAk1MTIJLyogbWF4IG51bSBvZiBzZWN0cyBvbiBvbmUgY2hpcCAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QgeyBDT05GSUdfU1lTX0ZMQVNIX0JBU0UsIENPTkZJR19TWVNfRkxBU0hfQkFTRV8xIH0KKworI3VuZGVmCUNPTkZJR19TWVNfRkxBU0hfQ0hFQ0tTVU0KKworLyoKKyAqIFBSSU8xL1BJR0dZIG9uIHRoZSBsb2NhbCBidXMgQ1MxCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MQkxBV0JBUjFfUFJFTElNCUNPTkZJR19TWVNfUElHR1lfQkFTRSAvKiBXaW5kb3cgYmFzZSBhdCBmbGFzaCBiYXNlICovCisjZGVmaW5lIENPTkZJR19TWVNfTEJMQVdBUjFfUFJFTElNCTB4ODAwMDAwMTEgLyogMjU2S0Igd2luZG93IHNpemUgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0JSMV9QUkVMSU0JKENPTkZJR19TWVNfUElHR1lfQkFTRSB8IFwKKwkJCQkoMSA8PCBCUl9QU19TSElGVCkgfCAvKiA4IGJpdCBwb3J0IHNpemUgKi8gXAorCQkJCUJSX1YpCisjZGVmaW5lIENPTkZJR19TWVNfT1IxX1BSRUxJTQkJKDB4ZmZmYzAwMDAgfCAvKiAyNTZLQiAqLyBcCisJCQkJT1JfR1BDTV9DU05UIHwgT1JfR1BDTV9BQ1NfRElWMiB8IFwKKwkJCQlPUl9HUENNX1NDWV8yIHwgXAorCQkJCU9SX0dQQ01fVFJMWCB8IE9SX0dQQ01fRUFEKQorCisvKgorICogUEFYRSBvbiB0aGUgbG9jYWwgYnVzIENTMworICovCisjZGVmaW5lIENPTkZJR19TWVNfTEJMQVdCQVIzX1BSRUxJTQlDT05GSUdfU1lTX1BBWEVfQkFTRSAvKiBXaW5kb3cgYmFzZSBhdCBmbGFzaCBiYXNlICovCisjZGVmaW5lIENPTkZJR19TWVNfTEJMQVdBUjNfUFJFTElNCTB4ODAwMDAwMWIgLyogMjU2TUIgd2luZG93IHNpemUgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0JSM19QUkVMSU0JKENPTkZJR19TWVNfUEFYRV9CQVNFIHwgXAorCQkJCSgxIDw8IEJSX1BTX1NISUZUKSB8IC8qIDggYml0IHBvcnQgc2l6ZSAqLyBcCisJCQkJQlJfVikKKyNkZWZpbmUgQ09ORklHX1NZU19PUjNfUFJFTElNCShNRUdfVE9fQU0oQ09ORklHX1NZU19QQVhFX1NJWkUpIHwgXAorCQkJCU9SX0dQQ01fQ1NOVCB8IE9SX0dQQ01fQUNTX0RJVjIgfCBcCisJCQkJT1JfR1BDTV9TQ1lfMiB8IFwKKwkJCQlPUl9HUENNX1RSTFggfCBPUl9HUENNX0VBRCkKKworLyoKKyAqIFNlcmlhbCBQb3J0CisgKi8KKyNkZWZpbmUgQ09ORklHX0NPTlNfSU5ERVgJMQorI3VuZGVmCUNPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTworI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTAKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1NFUklBTAorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUJMQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLCQlnZXRfYnVzX2ZyZXEoMCkKKworI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ09NMQkoQ09ORklHX1NZU19JTU1SKzB4NDUwMCkKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTIJKENPTkZJR19TWVNfSU1NUisweDQ2MDApCisKKy8qIFBhc3Mgb3BlbiBmaXJtd2FyZSBmbGF0IHRyZWUgKi8KKyNkZWZpbmUgQ09ORklHX09GX0xJQkZEVAkxCisjZGVmaW5lIENPTkZJR19PRl9CT0FSRF9TRVRVUAkxCisjZGVmaW5lIENPTkZJR19PRl9TVERPVVRfVklBX0FMSUFTCisKKy8qCisgKiBHZW5lcmFsIFBDSQorICogQWRkcmVzc2VzIGFyZSBtYXBwZWQgMS0xLgorICovCisjdW5kZWYgQ09ORklHX1BDSQkJLyogTm8gUENJICovCisKKyNpZm5kZWYgQ09ORklHX05FVF9NVUxUSQorI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCTEKKyNlbmRpZgorLyoKKyAqIFFFIFVFQyBldGhlcm5ldCBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX1VFQ19FVEgKKyNkZWZpbmUgQ09ORklHX0VUSFBSSU1FCQkiRlNMIFVFQzAiCisKKyNkZWZpbmUgQ09ORklHX1VFQ19FVEgxCQkvKiBHRVRIMSAqLworI2RlZmluZSBVRUNfVkVSQk9TRV9ERUJVRwkxCisKKyNpZmRlZiBDT05GSUdfVUVDX0VUSDEKKyNkZWZpbmUgQ09ORklHX1NZU19VRUMxX1VDQ19OVU0JMwkvKiBVQ0M0ICovCisjZGVmaW5lIENPTkZJR19TWVNfVUVDMV9SWF9DTEsJCVFFX0NMS19OT05FCS8qIG5vdCB1c2VkIGluIFJNSUkgTW9kZSAqLworI2RlZmluZSBDT05GSUdfU1lTX1VFQzFfVFhfQ0xLCQlRRV9DTEsxNworI2RlZmluZSBDT05GSUdfU1lTX1VFQzFfRVRIX1RZUEUJRkFTVF9FVEgKKyNkZWZpbmUgQ09ORklHX1NZU19VRUMxX1BIWV9BRERSCTAKKyNkZWZpbmUgQ09ORklHX1NZU19VRUMxX0lOVEVSRkFDRV9NT0RFIEVORVRfMTAwX1JNSUkKKyNlbmRpZgorCisvKgorICogRW52aXJvbm1lbnQKKyAqLworCisjaWZuZGVmIENPTkZJR19TWVNfUkFNQk9PVAorI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ09ORklHX0VOVl9BRERSCQkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgKyBDT05GSUdfU1lTX01PTklUT1JfTEVOKQorI2RlZmluZSBDT05GSUdfRU5WX1NFQ1RfU0laRQkweDIwMDAwIC8qIDEyOEsob25lIHNlY3RvcikgZm9yIGVudiAqLworI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4MjAwMDAKKyNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVQJKENPTkZJR19TWVNfTU9OSVRPUl9MRU4pCisKKy8qIEFkZHJlc3MgYW5kIHNpemUgb2YgUmVkdW5kYW50IEVudmlyb25tZW50IFNlY3RvcgkqLworI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVF9SRURVTkQJKENPTkZJR19FTlZfT0ZGU0VUK0NPTkZJR19FTlZfU0VDVF9TSVpFKQorI2RlZmluZSBDT05GSUdfRU5WX1NJWkVfUkVEVU5ECShDT05GSUdfRU5WX1NJWkUpCisKKyNlbHNlIC8qIENGR19SQU1CT09UICovCisjZGVmaW5lIENPTkZJR19TWVNfTk9fRkxBU0gJCTEJLyogRmxhc2ggaXMgbm90IHVzYWJsZSBub3cgKi8KKyNkZWZpbmUgQ09ORklHX0VOVl9JU19OT1dIRVJFCTEJLyogU3RvcmUgRU5WIGluIG1lbW9yeSBvbmx5ICovCisjZGVmaW5lIENPTkZJR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgLSAweDEwMDApCisjZGVmaW5lIENPTkZJR19FTlZfU0laRQkJMHgyMDAwCisjZW5kaWYgLyogQ0ZHX1JBTUJPT1QgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKKyNkZWZpbmUgQ09ORklHX0NNRF9QQ0kKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDRkdfUkFNQk9PVCkKKyN1bmRlZiBDT05GSUdfQ01EX0VOVgorI3VuZGVmIENPTkZJR19DTURfTE9BRFMKKyNlbmRpZgorCisvKgorICogRm9yIGJvb3RpbmcgTGludXgsIHRoZSBib2FyZCBpbmZvIGFuZCBjb21tYW5kIGxpbmUgZGF0YQorICogaGF2ZSB0byBiZSBpbiB0aGUgZmlyc3QgOCBNQiBvZiBtZW1vcnksIHNpbmNlIHRoaXMgaXMKKyAqIHRoZSBtYXhpbXVtIG1hcHBlZCBieSB0aGUgTGludXgga2VybmVsIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggPDwgMjApIC8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KKworLyoKKyAqIENvcmUgSElEIFNldHVwCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19ISUQwX0lOSVQJCTB4MDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfSElEMF9GSU5BTAkJSElEMF9FTkFCTEVfTUFDSElORV9DSEVDSworI2RlZmluZSBDT05GSUdfU1lTX0hJRDIJCQlISUQyX0hCRQorCisvKgorICogTU1VIFNldHVwCisgKi8KKworI2RlZmluZSBDT05GSUdfSElHSF9CQVRTCTEJLyogSGlnaCBCQVRzIHN1cHBvcnRlZCAqLworCisvKiBERFI6IGNhY2hlIGNhY2hlYWJsZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lCQVQwTAkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgQkFUTF9QUF8xMCB8IFwKKwkJCQlCQVRMX0NBQ0hFSU5ISUJJVCB8IEJBVExfR1VBUkRFRFNUT1JBR0UpCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDBVCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUMEwJQ09ORklHX1NZU19JQkFUMEwKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUMFUJQ09ORklHX1NZU19JQkFUMFUKKworLyogSU1NUkJBUiAmIFBDSSBJTzogY2FjaGUtaW5oaWJpdCBhbmQgZ3VhcmRlZCAqLworI2RlZmluZSBDT05GSUdfU1lTX0lCQVQxTAkoQ09ORklHX1NZU19JTU1SIHwgQkFUTF9QUF8xMCB8IFwKKwkJCQlCQVRMX0NBQ0hFSU5ISUJJVCB8IEJBVExfR1VBUkRFRFNUT1JBR0UpCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDFVCShDT05GSUdfU1lTX0lNTVIgfCBCQVRVX0JMXzRNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisjZGVmaW5lIENPTkZJR19TWVNfREJBVDFMCUNPTkZJR19TWVNfSUJBVDFMCisjZGVmaW5lIENPTkZJR19TWVNfREJBVDFVCUNPTkZJR19TWVNfSUJBVDFVCisKKy8qIFBSSU8xLCBQSUdHWTogIGljYWNoZSBjYWNoZWFibGUsIGJ1dCBkY2FjaGUtaW5oaWJpdCBhbmQgZ3VhcmRlZCAqLworI2RlZmluZSBDT05GSUdfU1lTX0lCQVQyTAkoQ09ORklHX1NZU19QSUdHWV9CQVNFIHwgQkFUTF9QUF8xMCB8IEJBVExfTUVNQ09IRVJFTkNFKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQyVQkoQ09ORklHX1NZU19QSUdHWV9CQVNFIHwgQkFUVV9CTF8yNTZLIHwgQkFUVV9WUyB8IEJBVFVfVlApCisjZGVmaW5lIENPTkZJR19TWVNfREJBVDJMCShDT05GSUdfU1lTX1BJR0dZX0JBU0UgfCBCQVRMX1BQXzEwIHwgXAorCQkJCSBCQVRMX0NBQ0hFSU5ISUJJVCB8IEJBVExfR1VBUkRFRFNUT1JBR0UpCisjZGVmaW5lIENPTkZJR19TWVNfREJBVDJVCUNPTkZJR19TWVNfSUJBVDJVCisKKy8qIEZMQVNIOiBpY2FjaGUgY2FjaGVhYmxlLCBidXQgZGNhY2hlLWluaGliaXQgYW5kIGd1YXJkZWQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUM0wJKENPTkZJR19TWVNfRkxBU0hfQkFTRSB8IEJBVExfUFBfMTAgfCBCQVRMX01FTUNPSEVSRU5DRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUM1UJKENPTkZJR19TWVNfRkxBU0hfQkFTRSB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQzTAkoQ09ORklHX1NZU19GTEFTSF9CQVNFIHwgQkFUTF9QUF8xMCB8IFwKKwkJCQkgQkFUTF9DQUNIRUlOSElCSVQgfCBCQVRMX0dVQVJERURTVE9SQUdFKQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQzVQlDT05GSUdfU1lTX0lCQVQzVQorCisvKiBTdGFjayBpbiBkY2FjaGU6IGNhY2hlYWJsZSwgbm8gbWVtb3J5IGNvaGVyZW5jZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ0TAkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSIHwgQkFUTF9QUF8xMCkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUNFUJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiB8IEJBVFVfQkxfMTI4SyB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ0TAlDT05GSUdfU1lTX0lCQVQ0TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ0VQlDT05GSUdfU1lTX0lCQVQ0VQorCisvKiBQQVhFOiAgaWNhY2hlIGNhY2hlYWJsZSwgYnV0IGRjYWNoZS1pbmhpYml0IGFuZCBndWFyZGVkICovCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDVMCShDT05GSUdfU1lTX1BBWEVfQkFTRSB8IEJBVExfUFBfMTAgfCBCQVRMX01FTUNPSEVSRU5DRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUNVUJKENPTkZJR19TWVNfUEFYRV9CQVNFIHwgQkFUVV9CTF8yNTZLIHwgQkFUVV9WUyB8IEJBVFVfVlApCisjZGVmaW5lIENPTkZJR19TWVNfREJBVDVMCShDT05GSUdfU1lTX1BBWEVfQkFTRSB8IEJBVExfUFBfMTAgfCBcCisJCQkJIEJBVExfQ0FDSEVJTkhJQklUIHwgQkFUTF9HVUFSREVEU1RPUkFHRSkKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUNVUJQ09ORklHX1NZU19JQkFUNVUKKworI2lmZGVmIENPTkZJR19QQ0kKKy8qIFBDSSBNRU0gc3BhY2U6IGNhY2hlYWJsZSAqLworI2RlZmluZSBDRkdfSUJBVDZMCShDRkdfUENJMV9NRU1fUEhZUyB8IEJBVExfUFBfMTAgfCBCQVRMX01FTUNPSEVSRU5DRSkKKyNkZWZpbmUgQ0ZHX0lCQVQ2VQkoQ0ZHX1BDSTFfTUVNX1BIWVMgfCBCQVRVX0JMXzI1Nk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ0ZHX0RCQVQ2TAlDRkdfSUJBVDZMCisjZGVmaW5lIENGR19EQkFUNlUJQ0ZHX0lCQVQ2VQorLyogUENJIE1NSU8gc3BhY2U6IGNhY2hlLWluaGliaXQgYW5kIGd1YXJkZWQgKi8KKyNkZWZpbmUgQ0ZHX0lCQVQ3TAkoQ0ZHX1BDSTFfTU1JT19QSFlTIHwgQkFUTF9QUF8xMCB8IFwKKwkJCSBCQVRMX0NBQ0hFSU5ISUJJVCB8IEJBVExfR1VBUkRFRFNUT1JBR0UpCisjZGVmaW5lIENGR19JQkFUN1UJKENGR19QQ0kxX01NSU9fUEhZUyB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQorI2RlZmluZSBDRkdfREJBVDdMCUNGR19JQkFUN0wKKyNkZWZpbmUgQ0ZHX0RCQVQ3VQlDRkdfSUJBVDdVCisjZWxzZSAvKiBDT05GSUdfUENJICovCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDZMCSgwKQorI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ2VQkoMCkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUN0wJKDApCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDdVCSgwKQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ2TAlDT05GSUdfU1lTX0lCQVQ2TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ2VQlDT05GSUdfU1lTX0lCQVQ2VQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ3TAlDT05GSUdfU1lTX0lCQVQ3TAorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQ3VQlDT05GSUdfU1lTX0lCQVQ3VQorI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8KKworLyoKKyAqIEludGVybmFsIERlZmluaXRpb25zCisgKgorICogQm9vdCBGbGFncworICovCisjZGVmaW5lIEJPT1RGTEFHX0NPTEQJMHgwMSAvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19XQVJNCTB4MDIgLyogU29mdHdhcmUgcmVib290ICovCisKKy8qCisgKiBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKKworI2lmIGRlZmluZWQoQ09ORklHX1VFQ19FVEgpCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMAorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUyBcCisJIm5ldGRldj1ldGgwXDAiCQkJCQkJCVwKKwkicm9vdHBhdGg9L29wdC9lbGRrL3BwY184Mnh4XDAiCQkJCQlcCisJIm5mc2FyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgIgkJCVwKKwkJIm5mc3Jvb3Q9JHtzZXJ2ZXJpcH06JHtyb290cGF0aH1cMCIJCQlcCisJInJhbWFyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9yYW0gcndcMCIJCQlcCisJImFkZGlwPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSAiCQkJCVwKKwkJImlwPSR7aXBhZGRyfToke3NlcnZlcmlwfToke2dhdGV3YXlpcH06JHtuZXRtYXNrfSIJXAorCQkiOiR7aG9zdG5hbWV9OiR7bmV0ZGV2fTpvZmYgcGFuaWM9MVwwIgkJCVwKKwkiYWRkdHR5PXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSIJCQkJXAorCQkiIGNvbnNvbGU9dHR5UzAsJHtiYXVkcmF0ZX1cMCIJCQkJXAorCSJmZHRfYWRkcj1mMDA4MDAwMFwwIgkJCQkJCVwKKwkia2VybmVsX2FkZHI9ZjAwYTAwMDBcMCIJCQkJCVwKKwkicmFtZGlza19hZGRyPWYwM2EwMDAwXDAiCQkJCQlcCisJImtlcm5lbF9hZGRyX3I9NDAwMDAwXDAiCQkJCQlcCisJImZkdF9hZGRyX3I9ODAwMDAwXDAiCQkJCQkJXAorCSJyYW1kaXNrX2FkZHJfcj04MTAwMDBcMCIJCQkJCVwKKwkiZmxhc2hfc2VsZj1ydW4gcmFtYXJncyBhZGRpcCBhZGR0dHk7IgkJCQlcCisJCSJib290bSAke2tlcm5lbF9hZGRyfSAke3JhbWRpc2tfYWRkcn0gJHtmZHRfYWRkcn1cMCIJXAorCSJmbGFzaF9uZnM9cnVuIG5mc2FyZ3MgYWRkaXAgYWRkdHR5OyIJCQkJXAorCQkiYm9vdG0gJHtrZXJuZWxfYWRkcn0gLSAke2ZkdF9hZGRyfVwwIgkJCVwKKwkibmV0X25mcz10ZnRwICR7a2VybmVsX2FkZHJfcn0gJHtib290X2ZpbGV9OyAiCQkJXAorCQkidGZ0cCAke2ZkdF9hZGRyX3J9ICR7ZmR0X2ZpbGV9OyAiCQkJXAorCQkicnVuIG5mc2FyZ3MgYWRkaXAgYWRkdHR5OyIJCQkJXAorCQkiYm9vdG0gJHtrZXJuZWxfYWRkcl9yfSAtICR7ZmR0X2FkZHJfcn1cMCIJCVwKKwkiZmR0X2ZpbGU9L3RmdHBib290L2ttZXRlcjEva21ldGVyMS5kdGJcMCIJCQlcCisJImJvb3RfZmlsZT0vdGZ0cGJvb3Qva21ldGVyMS91SW1hZ2VcMCIJCQkJXAorCSJyYW1kaXNrX2ZpbGU9L3RmdHBib290L2ttZXRlcjEvdVJhbWRpc2tcMCIJCQlcCisJInUtYm9vdD0vdGZ0cGJvb3Qva21ldGVyMS91LWJvb3QuYmluXDAiCQkJCVwKKwkibG9hZGFkZHI9IiBNS19TVFIoQ09ORklHX1NZU19MT0FEX0FERFIpICJcMCIJCQlcCisJImxvYWQ9dGZ0cCAkbG9hZGFkZHIgJHt1LWJvb3R9XDAiCQkJCVwKKwkidXBkYXRlPXByb3RlY3Qgb2ZmICIgTUtfU1RSKFRFWFRfQkFTRSkgIiArJGZpbGVzaXplOyIJCVwKKwkJImVyYXNlICIgTUtfU1RSKFRFWFRfQkFTRSkgIiArJGZpbGVzaXplOyIJCVwKKwkJImNwLmIgJGxvYWRhZGRyICIgTUtfU1RSKFRFWFRfQkFTRSkgIiAkZmlsZXNpemU7IglcCisJCSJwcm90ZWN0IG9uICIgTUtfU1RSKFRFWFRfQkFTRSkgIiArJGZpbGVzaXplOyIJCVwKKwkJImNtcC5iICRsb2FkYWRkciAiIE1LX1NUUihURVhUX0JBU0UpICIgJGZpbGVzaXplOyIJXAorCQkic2V0ZW52IGZpbGVzaXplO3NhdmVlbnZcMCIJCQkJXAorCSJ1cGQ9cnVuIGxvYWQgdXBkYXRlXDAiCQkJCQkJXAorCSJsb2FkcmFtPXRmdHAgJHtyYW1kaXNrX2FkZHJfcn0gJHtyYW1kaXNrX2ZpbGV9XDAiCQlcCisJImxvYWRmZHQ9dGZ0cCAke2ZkdF9hZGRyX3J9ICR7ZmR0X2ZpbGV9XDAiCQkJXAorCSJsb2Fka2VybmVsPXRmdHAgJHtrZXJuZWxfYWRkcl9yfSAke2Jvb3RfZmlsZX1cMCIJCVwKKwkidW5sb2NrPXllc1wwIgkJCQkJCQlcCisgICAiIgorCisjZW5kaWYgLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL201MDFzay5oIGIvaW5jbHVkZS9jb25maWdzL201MDFzay5oCmluZGV4IGYwOTIxNGQuLmVhYjM3ZGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tNTAxc2suaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbTUwMXNrLmgKQEAgLTQxLDYgKzQxLDM5IEBACiAjZGVmaW5lIENPTkZJR19JTklUUkRfVEFHCQkxCiAKICNkZWZpbmUgQ09ORklHX01FTlVQUk9NUFQJCSIuIgorLyoKKyAqIExvd0xldmVsIEluaXQKKyAqLworI2RlZmluZSBDT05GSUdfU1lTX1VTRV9NQUlOX09TQ0lMTEFUT1IJCTEKKy8qIGZsYXNoICovCisjZGVmaW5lIENPTkZJR19TWVNfTUNfUFVJQV9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX1BVUF9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX1BVRVJfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQ19BU1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQ19BQVNSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRUJJX0NGR1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19TTUNfQ1NSMF9WQUwJMHgwMDAwMzI4NCAvKiAxNmJpdCwgMiBUREYsIDQgV1MgKi8KKworLyogY2xvY2tzICovCisjZGVmaW5lIENPTkZJR19TWVNfUExMQVJfVkFMCTB4MjAyNjNFMDQgLyogMTc5LjcxMjAwMCBNSHogZm9yIFBDSyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BMTEJSX1ZBTAkweDEwNDgzRTBFIC8qIDQ4LjA1NDg1NyBNSHogKGRpdmlkZXIgYnkgMiBmb3IgVVNCKSAqLworLyogUENLLzMgPSBNQ0sgTWFzdGVyIENsb2NrID0gNTkuOTA0MDAwTUh6IGZyb20gUExMQSAqLworI2RlZmluZSBDT05GSUdfU1lTX01DS1JfVkFMCTB4MDAwMDAyMDIKKworLyogc2RyYW0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QSU9DX0FTUl9WQUwJMHhGRkZGMDAwMCAvKiBDb25maWd1cmUgUElPQyBhcyBwZXJpcGhlcmFsIChEMTYvRDMxKSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BJT0NfQlNSX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUElPQ19QRFJfVkFMCTB4RkZGRjAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19FQklfQ1NBX1ZBTAkweDAwMDAwMDAyIC8qIENTMT1DT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19DUl9WQUwJMHgyMTg4YzE1NSAvKiBzZXQgdXAgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTQkweDIwMDAwMDAwIC8qIGFkZHJlc3Mgb2YgdGhlIENPTkZJR19TWVNfU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTTEJMHgyMDAwMDA4MCAvKiBhZGRyZXNzIG9mIHRoZSBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fVkFMCTB4MDAwMDAwMDAgLyogdmFsdWUgd3JpdHRlbiB0byBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwJMHgwMDAwMDAwMiAvKiBQcmVjaGFyZ2UgQWxsICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19NUl9WQUwxCTB4MDAwMDAwMDQgLyogcmVmcmVzaCAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMgkweDAwMDAwMDAzIC8qIExvYWQgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMwkweDAwMDAwMDAwIC8qIE5vcm1hbCBNb2RlICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQ19UUl9WQUwJMHgwMDAwMDJFMCAvKiBXcml0ZSByZWZyZXNoIHJhdGUgKi8KIAogLyoKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21nY29nZS5oIGIvaW5jbHVkZS9jb25maWdzL21nY29nZS5oCmluZGV4IGRjOWIzMTEuLjIzM2JlZTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tZ2NvZ2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWdjb2dlLmgKQEAgLTM1LDggKzM1LDggQEAKIAogI2RlZmluZSBDT05GSUdfQ1BNMgkJMQkvKiBIYXMgYSBDUE0yICovCiAKLS8qIERvIGJvYXJkc3BlY2lmaWMgaW5pdCAqLwotI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9SICAgICAgIDEKKy8qIGluY2x1ZGUgY29tbW9uIGRlZmluZXMvb3B0aW9ucyBmb3IgYWxsIEtleW1pbGUgYm9hcmRzICovCisjaW5jbHVkZSAia2V5bWlsZS1jb21tb24uaCIKIAogLyoKICAqIFNlbGVjdCBzZXJpYWwgY29uc29sZSBjb25maWd1cmF0aW9uCkBAIC03NCwyMyArNzQsNiBAQAogI2RlZmluZSBDT05GSUdfODI2MF9DTEtJTgk2NjAwMDAwMAkvKiBpbiBIeiAqLwogI2VuZGlmCiAKLSNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKLQotI2RlZmluZSBDT05GSUdfQk9PVENPVU5UX0xJTUlUCi0KLS8qCi0gKiBDb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbi4KLSAqLwotI2luY2x1ZGUgPGNvbmZpZ19jbWRfZGVmYXVsdC5oPgotCi0jZGVmaW5lIENPTkZJR19DTURfRFRUCi0jZGVmaW5lIENPTkZJR19DTURfRUNITwotI2RlZmluZSBDT05GSUdfQ01EX0VFUFJPTQotI2RlZmluZSBDT05GSUdfQ01EX0kyQwotI2RlZmluZSBDT05GSUdfQ01EX0lNTUFQCi0jZGVmaW5lIENPTkZJR19DTURfTUlJCi0jZGVmaW5lIENPTkZJR19DTURfUElORwotCiAvKgogICogRGVmYXVsdCBlbnZpcm9ubWVudCBzZXR0aW5ncwogICovCkBAIC0xMjQsMzYgKzEwNyw2IEBACiAJCSJydW4gcmFtYXJncyBhZGRpcDsgIgkJCQkJCVwKIAkJImJvb3RtICR7a2VybmVsX2FkZHJ9ICR7cmFtZGlza19hZGRyfSAke2ZkdF9hZGRyfVwwIgkJXAogCSIiCi0jZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkicnVuIG5ldF9uZnMiCi0jZGVmaW5lIENPTkZJR19CT09UREVMQVkJNQkvKiBhdXRvYm9vdCBhZnRlciA1IHNlY29uZHMgKi8KLQotI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJCS8qIGRpc2FibGUgcGxhdGZvcm0gc3BlY2lmaWMgd2F0Y2hkb2cgKi8KLQotLyoKLSAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKLSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0hVU0hfUEFSU0VSCi0jZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUX0hVU0hfUFMyCSI+ICIKLSNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkJIj0+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAgICovCi0jZGVmaW5lIENPTkZJR19IVVNIX0lOSVRfVkFSCTEKLSNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKLSNkZWZpbmUgQ09ORklHX1NZU19DQlNJWkUJCTEwMjQJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgICovCi0jZWxzZQotI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkJMjU2CS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICAqLwotI2VuZGlmCi0jZGVmaW5lIENPTkZJR19TWVNfUEJTSVpFIChDT05GSUdfU1lTX0NCU0laRStzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpKzE2KQkvKiBQcmludCBCdWZmZXIgU2l6ZSAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQkJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZSAgKi8KLQotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDEwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uICovCi0jZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4MDBmMDAwMDAJLyogMSAuLi4gMTUgTUIgaW4gRFJBTQkqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MgKi8KLQotI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwLCAyMzA0MDAgfQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCTB4RkUwMDAwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tZ3N1dmQuaCBiL2luY2x1ZGUvY29uZmlncy9tZ3N1dmQuaAppbmRleCBmY2EyZTU1Li5mNTNiNmQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbWdzdXZkLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21nc3V2ZC5oCkBAIC0zNiw4ICszNiw4IEBACiAjZGVmaW5lIENPTkZJR19NUEM4NjYJCTEJLyogVGhpcyBpcyBhIE1QQzg2NiBDUFUJCSovCiAjZGVmaW5lIENPTkZJR19NR1NVVkQJCTEJLyogLi4ub24gYSBtZ3N1dmQgYm9hcmQJKi8KIAotLyogRG8gYm9hcmRzcGVjaWZpYyBpbml0ICovCi0jZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX1IgICAgICAgMQorLyogaW5jbHVkZSBjb21tb24gZGVmaW5lcy9vcHRpb25zIGZvciBhbGwgS2V5bWlsZSBib2FyZHMgKi8KKyNpbmNsdWRlICJrZXltaWxlLWNvbW1vbi5oIgogCiAjZGVmaW5lIENPTkZJR184eHhfR0NMS19GUkVRCQk2NjAwMDAwMAogCkBAIC00NSwyMiArNDUsMTMgQEAKICNkZWZpbmUgQ09ORklHX1NZU19TTUNfRFBNRU1fT0ZGU0VUCTB4MWZjMAogI2RlZmluZSBDT05GSUdfOHh4X0NPTlNfU01DMQkxCS8qIENvbnNvbGUgaXMgb24gU01DMQkJKi8KIAotI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAkvKiBjb25zb2xlIGJhdWRyYXRlID0gMTE1a2JwcwkqLwotCi0jZGVmaW5lIENPTkZJR19CT09UQ09VTlRfTElNSVQKICNkZWZpbmUgQ09ORklHX1NZU19DUE1fQk9PVENPVU5UX0FERFIJMHgxZWIwCS8qIEluIGNhc2Ugb2YgU01DIHJlbG9jYXRpb24sIHRoZQogCQkJCQkgKiBkZWZhdWx0IHZhbHVlIGlzIG5vdCB3b3JraW5nICovCiAKLSNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQk1CS8qIGF1dG9ib290IGFmdGVyIDUgc2Vjb25kcwkqLwotCi0jZGVmaW5lIENPTkZJR19CT0FSRF9UWVBFUwkxCS8qIHN1cHBvcnQgYm9hcmQgdHlwZXMJCSovCi0KICNkZWZpbmUgQ09ORklHX1BSRUJPT1QJImVjaG87IiBcCiAJImVjaG8gVHlwZSBcXFwicnVuIGZsYXNoX25mc1xcXCIgdG8gbW91bnQgcm9vdCBmaWxlc3lzdGVtIG92ZXIgTkZTOyIgXAogCSJlY2hvIgogCi0jdW5kZWYJQ09ORklHX0JPT1RBUkdTCi0KICNkZWZpbmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJCVwKIAkibmV0ZGV2PWV0aDBcMCIJCQkJCQkJCVwKIAkiYWRkY29ucz1zZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gY29uc29sZT10dHlDUE0wLCR7YmF1ZHJhdGV9XDAiCVwKQEAgLTg4LDcxICs3OSwxMiBAQAogCQkiY3AuYiAyMDAwMDAgZjAwMDAwMDAgJHtmaWxlc2l6ZX07IgkJCQlcCiAJCSJwcm90ZWN0IG9uIGYwMDAwMDAwICske2ZpbGVzaXplfVwwIgkJCQlcCiAJIiIKLSNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJydW4gZmxhc2hfc2VsZiIKLQotI2RlZmluZSBDT05GSUdfTE9BRFNfRUNITwkxCS8qIGVjaG8gb24gZm9yIHNlcmlhbCBkb3dubG9hZAkqLwotI3VuZGVmCUNPTkZJR19TWVNfTE9BRFNfQkFVRF9DSEFOR0UJCS8qIGRvbid0IGFsbG93IGJhdWRyYXRlIGNoYW5nZQkqLwotCi0jdW5kZWYJQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCi0KLS8qCi0gKiBCT09UUCBvcHRpb25zCi0gKi8KLSNkZWZpbmUgQ09ORklHX0JPT1RQX1NVQk5FVE1BU0sKLSNkZWZpbmUgQ09ORklHX0JPT1RQX0dBVEVXQVkKLSNkZWZpbmUgQ09ORklHX0JPT1RQX0hPU1ROQU1FCi0jZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAotI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCiAKICN1bmRlZiBDT05GSUdfUlRDX01QQzh4eAkJLyogTVBDODY2IGRvZXMgbm90IHN1cHBvcnQgUlRDCSovCiAKICNkZWZpbmUJQ09ORklHX1RJTUVTVEFNUAkJLyogYnV0IHByaW50IGltYWdlIHRpbWVzdG1wcwkqLwogCiAvKgotICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCi0gKi8KLSNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KLQotI2RlZmluZSBDT05GSUdfQ01EX0FTS0VOVgotI2RlZmluZSBDT05GSUdfQ01EX0RIQ1AKLSNkZWZpbmUgQ09ORklHX0NNRF9EVFQKLSNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KLSNkZWZpbmUgQ09ORklHX0NNRF9JMkMKLSNkZWZpbmUgQ09ORklHX0NNRF9ORlMKLSNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCi0KLS8qCi0gKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCi0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLwotI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkJIj0+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLwotCi0jZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJMQkvKiBhZGQgY29tbWFuZCBsaW5lIGhpc3RvcnkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgkJMQkvKiBVc2UgdGhlIEhVU0ggcGFyc2VyCQkqLwotI2lmZGVmCUNPTkZJR19TWVNfSFVTSF9QQVJTRVIKLSNkZWZpbmUJQ09ORklHX1NZU19QUk9NUFRfSFVTSF9QUzIJIj4gIgotI2RlZmluZSBDT05GSUdfSFVTSF9JTklUX1ZBUgkxCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQotI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkJMTAyNAkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwotI2Vsc2UKLSNkZWZpbmUgQ09ORklHX1NZU19DQlNJWkUJCTI1NgkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwotI2VuZGlmCi0jZGVmaW5lIENPTkZJR19TWVNfUEJTSVpFIChDT05GSUdfU1lTX0NCU0laRStzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwotI2RlZmluZSBDT05GSUdfU1lTX01BWEFSR1MJCTE2CS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCi0jZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDA0MDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLwotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDBDMDAwMDAJLyogNCAuLi4gMTIgTUIgaW4gRFJBTQkqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MgKi8KLQotI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwIH0KLQotLyoKICAqIExvdyBMZXZlbCBDb25maWd1cmF0aW9uIFNldHRpbmdzCiAgKiAoYWRkcmVzcyBtYXBwaW5ncywgcmVnaXN0ZXIgaW5pdGlhbCB2YWx1ZXMsIGV0Yy4pCiAgKiBZb3Ugc2hvdWxkIGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIGlmIHlvdSBtYWtlIGNoYW5nZXMgaGVyZS4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tbDQwMS5oIGIvaW5jbHVkZS9jb25maWdzL21pY3JvYmxhemUtZ2VuZXJpYy5oCnNpbWlsYXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIGluY2x1ZGUvY29uZmlncy9tbDQwMS5oCnJlbmFtZSB0byBpbmNsdWRlL2NvbmZpZ3MvbWljcm9ibGF6ZS1nZW5lcmljLmgKaW5kZXggNjNkMDdmZi4uNGM2Y2M5ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21sNDAxLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21pY3JvYmxhemUtZ2VuZXJpYy5oCkBAIC0yNSwyOSArMjUsMzMgQEAKICNpZm5kZWYgX19DT05GSUdfSAogI2RlZmluZSBfX0NPTkZJR19ICiAKLSNpbmNsdWRlICIuLi9ib2FyZC94aWxpbngvbWw0MDEveHBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICIuLi9ib2FyZC94aWxpbngvbWljcm9ibGF6ZS1nZW5lcmljL3hwYXJhbWV0ZXJzLmgiCiAKICNkZWZpbmUJQ09ORklHX01JQ1JPQkxBWkUJMQkvKiBNaWNyb0JsYXplIENQVSAqLwogI2RlZmluZQlNSUNST0JMQVpFX1Y1CQkxCi0jZGVmaW5lCUNPTkZJR19NTDQwMQkJMQkvKiBNTDQwMSBCb2FyZCAqLwogCiAvKiB1YXJ0ICovCiAjaWZkZWYgWElMSU5YX1VBUlRMSVRFX0JBU0VBRERSCi0jZGVmaW5lCUNPTkZJR19YSUxJTlhfVUFSVExJVEUKLSNkZWZpbmUJQ09ORklHX1NFUklBTF9CQVNFCVhJTElOWF9VQVJUTElURV9CQVNFQUREUgotI2RlZmluZQlDT05GSUdfQkFVRFJBVEUJCVhJTElOWF9VQVJUTElURV9CQVVEUkFURQotI2RlZmluZQlDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgQ09ORklHX0JBVURSQVRFIH0KKwkjZGVmaW5lCUNPTkZJR19YSUxJTlhfVUFSVExJVEUKKwkjZGVmaW5lCUNPTkZJR19TRVJJQUxfQkFTRQlYSUxJTlhfVUFSVExJVEVfQkFTRUFERFIKKwkjZGVmaW5lCUNPTkZJR19CQVVEUkFURQkJWElMSU5YX1VBUlRMSVRFX0JBVURSQVRFCisJI2RlZmluZQlDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgQ09ORklHX0JBVURSQVRFIH0KKwkjZGVmaW5lIENPTlNPTEVfQVJHCSJjb25zb2xlPWNvbnNvbGU9dHR5VUwwLDExNTIwMFwwIgorI2VsaWYgWElMSU5YX1VBUlQxNjU1MF9CQVNFQUREUgorCSNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwCTEKKwkjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9TRVJJQUwKKwkjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9SRUdfU0laRQktNAorCSNkZWZpbmUgQ09ORklHX0NPTlNfSU5ERVgJMQorCSNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTEJKFhJTElOWF9VQVJUMTY1NTBfQkFTRUFERFIgKyAweDEwMDAgKyAweDMpCisJI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLCVhJTElOWF9VQVJUMTY1NTBfQ0xPQ0tfSFoKKwkjZGVmaW5lCUNPTkZJR19CQVVEUkFURQkJMTE1MjAwCisKKwkvKiBUaGUgZm9sbG93aW5nIHRhYmxlIGluY2x1ZGVzIHRoZSBzdXBwb3J0ZWQgYmF1ZHJhdGVzICovCisJI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFICBcCisJCXszMDAsIDYwMCwgMTIwMCwgMjQwMCwgNDgwMCwgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwLCAyMzA0MDB9CisJI2RlZmluZSBDT05TT0xFX0FSRwkiY29uc29sZT1jb25zb2xlPXR0eVMwLDExNTIwMFwwIgogI2Vsc2UKLSNpZmRlZiBYSUxJTlhfVUFSVDE2NTUwX0JBU0VBRERSCi0jZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MAotI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfU0VSSUFMCi0jZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9SRUdfU0laRQk0Ci0jZGVmaW5lIENPTkZJR19DT05TX0lOREVYCTEKLSNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTEJWElMSU5YX1VBUlQxNjU1MF9CQVNFQUREUgotI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLCQlYSUxJTlhfVUFSVDE2NTUwX0NMT0NLX0haCi0jZGVmaW5lCUNPTkZJR19CQVVEUkFURQkJMTE1MjAwCi0jZGVmaW5lCUNPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxMTUyMDAgfQotI2VuZGlmCisJI2Vycm9yIFVuZGVmaW5lZCB1YXJ0CiAjZW5kaWYKIAogLyogc2V0dGluZyByZXNldCBhZGRyZXNzICovCkBAIC01NSw0NCArNTksNDQgQEAKIAogLyogZXRoZXJuZXQgKi8KICNpZmRlZiBYSUxJTlhfRU1BQ19CQVNFQUREUgotI2RlZmluZSBDT05GSUdfWElMSU5YX0VNQUMJMQotI2RlZmluZSBDT05GSUdfU1lTX0VORVQKLSNlbHNlCi0jaWZkZWYgWElMSU5YX0VNQUNMSVRFX0JBU0VBRERSCi0jZGVmaW5lIENPTkZJR19YSUxJTlhfRU1BQ0xJVEUJMQotI2RlZmluZSBDT05GSUdfU1lTX0VORVQKKwkjZGVmaW5lIENPTkZJR19YSUxJTlhfRU1BQwkxCisJI2RlZmluZSBDT05GSUdfU1lTX0VORVQKKyNlbGlmIFhJTElOWF9FTUFDTElURV9CQVNFQUREUgorCSNkZWZpbmUgQ09ORklHX1hJTElOWF9FTUFDTElURQkxCisJI2RlZmluZSBDT05GSUdfU1lTX0VORVQKKyNlbGlmIFhJTElOWF9MTFRFTUFDX0JBU0VBRERSCisJI2RlZmluZSBDT05GSUdfWElMSU5YX0xMX1RFTUFDCTEKKwkjZGVmaW5lIENPTkZJR19TWVNfRU5FVAogI2VuZGlmCi0jZW5kaWYKKwogI3VuZGVmIEVUX0RFQlVHCiAKIC8qIGdwaW8gKi8KICNpZmRlZiBYSUxJTlhfR1BJT19CQVNFQUREUgotI2RlZmluZQlDT05GSUdfU1lTX0dQSU9fMAkJMQotI2RlZmluZQlDT05GSUdfU1lTX0dQSU9fMF9BRERSCQlYSUxJTlhfR1BJT19CQVNFQUREUgorCSNkZWZpbmUJQ09ORklHX1NZU19HUElPXzAJCTEKKwkjZGVmaW5lCUNPTkZJR19TWVNfR1BJT18wX0FERFIJCVhJTElOWF9HUElPX0JBU0VBRERSCiAjZW5kaWYKIAogLyogaW50ZXJydXB0IGNvbnRyb2xsZXIgKi8KICNpZmRlZiBYSUxJTlhfSU5UQ19CQVNFQUREUgotI2RlZmluZQlDT05GSUdfU1lTX0lOVENfMAkJMQotI2RlZmluZQlDT05GSUdfU1lTX0lOVENfMF9BRERSCQlYSUxJTlhfSU5UQ19CQVNFQUREUgotI2RlZmluZQlDT05GSUdfU1lTX0lOVENfMF9OVU0JCVhJTElOWF9JTlRDX05VTV9JTlRSX0lOUFVUUworCSNkZWZpbmUJQ09ORklHX1NZU19JTlRDXzAJCTEKKwkjZGVmaW5lCUNPTkZJR19TWVNfSU5UQ18wX0FERFIJCVhJTElOWF9JTlRDX0JBU0VBRERSCisJI2RlZmluZQlDT05GSUdfU1lTX0lOVENfMF9OVU0JCVhJTElOWF9JTlRDX05VTV9JTlRSX0lOUFVUUwogI2VuZGlmCiAKIC8qIHRpbWVyICovCiAjaWZkZWYgWElMSU5YX1RJTUVSX0JBU0VBRERSCi0jaWYgKFhJTElOWF9USU1FUl9JUlEgIT0gLTEpCi0jZGVmaW5lCUNPTkZJR19TWVNfVElNRVJfMAkJMQotI2RlZmluZQlDT05GSUdfU1lTX1RJTUVSXzBfQUREUglYSUxJTlhfVElNRVJfQkFTRUFERFIKLSNkZWZpbmUJQ09ORklHX1NZU19USU1FUl8wX0lSUQkJWElMSU5YX1RJTUVSX0lSUQotI2RlZmluZQlGUkVRVUVOQ0UJCVhJTElOWF9DTE9DS19GUkVRCi0jZGVmaW5lCUNPTkZJR19TWVNfVElNRVJfMF9QUkVMT0FECSggRlJFUVVFTkNFLzEwMDAgKQotI2VuZGlmCisJI2lmIChYSUxJTlhfVElNRVJfSVJRICE9IC0xKQorCQkjZGVmaW5lCUNPTkZJR19TWVNfVElNRVJfMAkJMQorCQkjZGVmaW5lCUNPTkZJR19TWVNfVElNRVJfMF9BRERSCVhJTElOWF9USU1FUl9CQVNFQUREUgorCQkjZGVmaW5lCUNPTkZJR19TWVNfVElNRVJfMF9JUlEJCVhJTElOWF9USU1FUl9JUlEKKwkJI2RlZmluZQlGUkVRVUVOQ0UJCVhJTElOWF9DTE9DS19GUkVRCisJCSNkZWZpbmUJQ09ORklHX1NZU19USU1FUl8wX1BSRUxPQUQJKCBGUkVRVUVOQ0UvMTAwMCApCisJI2VuZGlmCisjZWxpZiBYSUxJTlhfQ0xPQ0tfRlJFUQorCSNkZWZpbmUJQ09ORklHX1hJTElOWF9DTE9DS19GUkVRCVhJTElOWF9DTE9DS19GUkVRCiAjZWxzZQotI2lmZGVmIFhJTElOWF9DTE9DS19GUkVRCi0jZGVmaW5lCUNPTkZJR19YSUxJTlhfQ0xPQ0tfRlJFUQlYSUxJTlhfQ0xPQ0tfRlJFUQotI2Vsc2UKLSNlcnJvciBCQUQgQ0xPQ0sgRlJFUQotI2VuZGlmCisJI2Vycm9yIEJBRCBDTE9DSyBGUkVRCiAjZW5kaWYKIC8qIEZTTCAqLwogLyogI2RlZmluZQlDT05GSUdfU1lTX0ZTTF8yICovCkBAIC0xNTcsNyArMTYxLDcgQEAKIAkjZGVmaW5lCUNPTkZJR19GTEFTSF9DRklfRFJJVkVSCTEKIAkjZGVmaW5lCUNPTkZJR19TWVNfRkxBU0hfRU1QVFlfSU5GTwkxCS8qID9lbXB0eSBzZWN0b3IgKi8KIAkjZGVmaW5lCUNPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTCTEJLyogbWF4IG51bWJlciBvZiBtZW1vcnkgYmFua3MgKi8KLQkjZGVmaW5lCUNPTkZJR19TWVNfTUFYX0ZMQVNIX1NFQ1QJMTI4CS8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcCAqLworCSNkZWZpbmUJQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAk1MTIJLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwICovCiAJI2RlZmluZQlDT05GSUdfU1lTX0ZMQVNIX1BST1RFQ1RJT04JCS8qIGhhcmR3YXJlIGZsYXNoIHByb3RlY3Rpb24gKi8KIAogCSNpZmRlZglSQU1FTlYKQEAgLTE2Nyw5ICsxNzEsOSBAQAogCiAJI2Vsc2UJLyogIVJBTUVOViAqLwogCQkjZGVmaW5lCUNPTkZJR19FTlZfSVNfSU5fRkxBU0gJMQotCQkjZGVmaW5lCUNPTkZJR19FTlZfU0VDVF9TSVpFCTB4NDAwMDAJLyogMjU2SyhvbmUgc2VjdG9yKSBmb3IgZW52ICovCisJCSNkZWZpbmUJQ09ORklHX0VOVl9TRUNUX1NJWkUJMHgyMDAwMAkvKiAxMjhLKG9uZSBzZWN0b3IpIGZvciBlbnYgKi8KIAkJI2RlZmluZQlDT05GSUdfRU5WX0FERFIJCShDT05GSUdfU1lTX0ZMQVNIX0JBU0UgKyAoMiAqIENPTkZJR19FTlZfU0VDVF9TSVpFKSkKLQkJI2RlZmluZQlDT05GSUdfRU5WX1NJWkUJCTB4NDAwMDAKKwkJI2RlZmluZQlDT05GSUdfRU5WX1NJWkUJCTB4MjAwMDAKIAkjZW5kaWYgLyogIVJBTUJPT1QgKi8KICNlbHNlIC8qICFGTEFTSCAqLwogCS8qIEVOViBpbiBSQU0gKi8KQEAgLTE5MCw2ICsxOTQsMTggQEAKIAkjZGVmaW5lCUNPTkZJR19ET1NfUEFSVElUSU9OCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoWElMSU5YX1VTRV9JQ0FDSEUpCisJI2RlZmluZSBDT05GSUdfSUNBQ0hFCisjZWxzZQorCSN1bmRlZiBDT05GSUdfSUNBQ0hFCisjZW5kaWYKKworI2lmIGRlZmluZWQoWElMSU5YX1VTRV9EQ0FDSEUpCisJI2RlZmluZSBDT05GSUdfRENBQ0hFCisjZWxzZQorCSN1bmRlZiBDT05GSUdfRENBQ0hFCisjZW5kaWYKKwogLyoKICAqIEJPT1RQIG9wdGlvbnMKICAqLwpAQCAtMjA0LDkgKzIyMCwxNSBAQAogI2luY2x1ZGUgPGNvbmZpZ19jbWRfZGVmYXVsdC5oPgogCiAjZGVmaW5lIENPTkZJR19DTURfQVNLRU5WCi0jZGVmaW5lIENPTkZJR19DTURfQ0FDSEUKICNkZWZpbmUgQ09ORklHX0NNRF9JUlEKICNkZWZpbmUgQ09ORklHX0NNRF9NRlNMCisjZGVmaW5lIENPTkZJR19DTURfRUNITworCisjaWYgZGVmaW5lZChDT05GSUdfRENBQ0hFKSB8fCBkZWZpbmVkKENPTkZJR19JQ0FDSEUpCisJI2RlZmluZSBDT05GSUdfQ01EX0NBQ0hFCisjZWxzZQorCSN1bmRlZiBDT05GSUdfQ01EX0NBQ0hFCisjZW5kaWYKIAogI2lmbmRlZiBDT05GSUdfU1lTX0VORVQKIAkjdW5kZWYgQ09ORklHX0NNRF9ORVQKQEAgLTIzMCw3ICsyNTIsOSBAQAogCQkjZGVmaW5lIENPTkZJR19DTURfU0FWRVMKIAkjZW5kaWYKICNlbHNlCisJI3VuZGVmIENPTkZJR19DTURfSU1MUwogCSN1bmRlZiBDT05GSUdfQ01EX0ZMQVNICisJI3VuZGVmIENPTkZJR19DTURfSkZGUzIKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0pGRlMyKQpAQCAtMjUwLDExICsyNzQsMTEgQEAKICNkZWZpbmUJQ09ORklHX1NZU19QQlNJWkUJKENPTkZJR19TWVNfQ0JTSVpFICsgc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSArIDE2KSAvKiBwcmludCBidWZmZXIgc2l6ZSAqLwogI2RlZmluZQlDT05GSUdfU1lTX01BWEFSR1MJMTUJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MgKi8KICNkZWZpbmUJQ09ORklHX1NZU19MT05HSEVMUAotI2RlZmluZQlDT05GSUdfU1lTX0xPQURfQUREUgkweDEyMDAwMDAwIC8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisjZGVmaW5lCUNPTkZJR19TWVNfTE9BRF9BRERSCVhJTElOWF9SQU1fU1RBUlQgLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KIAotI2RlZmluZQlDT05GSUdfQk9PVERFTEFZCTMwCisjZGVmaW5lCUNPTkZJR19CT09UREVMQVkJLTEJLyogLTEgZGlzYWJsZXMgYXV0by1ib290ICovCiAjZGVmaW5lCUNPTkZJR19CT09UQVJHUwkJInJvb3Q9cm9tZnMiCi0jZGVmaW5lCUNPTkZJR19IT1NUTkFNRQkJIm1sNDAxIgorI2RlZmluZQlDT05GSUdfSE9TVE5BTUUJCVhJTElOWF9CT0FSRF9OQU1FCiAjZGVmaW5lCUNPTkZJR19CT09UQ09NTUFORAkiYmFzZSAwO3RmdHAgMTEwMDAwMDAgaW1hZ2UuaW1nO2Jvb3RtIgogI2RlZmluZQlDT05GSUdfSVBBRERSCQkxOTIuMTY4LjAuMwogI2RlZmluZQlDT05GSUdfU0VSVkVSSVAJCTE5Mi4xNjguMC41CkBAIC0yNjUsNyArMjg5LDcgQEAKICNkZWZpbmUJQ09ORklHX1NZU19VU1JfRVhDRVAJLyogdXNlciBleGNlcHRpb24gKi8KICNkZWZpbmUgQ09ORklHX1NZU19IWgkxMDAwCiAKLSNkZWZpbmUJQ09ORklHX1BSRUJPT1QJCSJlY2hvIFUtQk9PVCBmb3IgTUw0MDE7c2V0ZW52IHByZWJvb3Q7ZWNobyIKKyNkZWZpbmUJQ09ORklHX1BSRUJPT1QJCSJlY2hvIFUtQk9PVCBmb3IgJChob3N0bmFtZSk7c2V0ZW52IHByZWJvb3Q7ZWNobyIKIAogI2RlZmluZQlDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCSJ1bmxvY2s9eWVzXDAiIC8qIGhhcmR3YXJlIGZsYXNoIHByb3RlY3Rpb24gKi9cCiAJCQkJCSJub3IwPW1sNDAxLTBcMCJcCkBAIC0yNzQsNiArMjk4LDUgQEAKIAkJCQkJIjFtKHJvbWZzKSwxbShjcmFtZnMpLC0oamZmczIpXDAiCiAKICNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwotI2RlZmluZSBDT05GSUdfT0ZfTElCRkRUCTEKIAogI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tcDJ1c2IuaCBiL2luY2x1ZGUvY29uZmlncy9tcDJ1c2IuaAppbmRleCBjYmJkYjBjLi5mYjEwNjE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXAydXNiLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21wMnVzYi5oCkBAIC00OSwzMyArNDksMzMgQEAKICNpZm5kZWYgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVAogI2RlZmluZSBDT05GSUdfU1lTX1VTRV9NQUlOX09TQ0lMTEFUT1IJMQogLyogZmxhc2ggKi8KLSNkZWZpbmUgTUNfUFVJQV9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBNQ19QVVBfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfUFVFUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBNQ19BU1JfVkFMCTB4MDAwMDAwMDAKLSNkZWZpbmUgTUNfQUFTUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBFQklfQ0ZHUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBTTUNfQ1NSMF9WQUwJMHgwMDAwMzA4NCAvKiAxNmJpdCwgMiBUREYsIDQgV1MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQ19QVUlBX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUNfUFVQX1ZBTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTUNfUFVFUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX0FTUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX01DX0FBU1JfVkFMCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19FQklfQ0ZHUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1NNQ19DU1IwX1ZBTAkweDAwMDAzMDg0IC8qIDE2Yml0LCAyIFRERiwgNCBXUyAqLwogCiAvKiBjbG9ja3MgKi8KLSNkZWZpbmUgUExMQVJfVkFMCTB4MjAyNjNFMDQgLyogMTgwIE1IeiBmb3IgUENLICovCi0jZGVmaW5lIFBMTEJSX1ZBTAkweDEwNDhiRTBFIC8qIDQ4IE1IeiAoZGl2aWRlciBieSAyIGZvciBVU0IpICovCi0jZGVmaW5lIE1DS1JfVkFMCTB4MDAwMDAyMDIgLyogUENLLzMgPSBNQ0sgTWFzdGVyIENsb2NrID0gNjBNSHogZnJvbSBQTExBICovCisjZGVmaW5lIENPTkZJR19TWVNfUExMQVJfVkFMCTB4MjAyNjNFMDQgLyogMTgwIE1IeiBmb3IgUENLICovCisjZGVmaW5lIENPTkZJR19TWVNfUExMQlJfVkFMCTB4MTA0OGJFMEUgLyogNDggTUh6IChkaXZpZGVyIGJ5IDIgZm9yIFVTQikgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQ0tSX1ZBTAkweDAwMDAwMjAyIC8qIFBDSy8zID0gTUNLIE1hc3RlciBDbG9jayA9IDYwTUh6IGZyb20gUExMQSAqLwogCiAvKiBzZHJhbSAqLwotI2RlZmluZSBQSU9DX0FTUl9WQUwJMHhGRkZGMDAwMCAvKiBDb25maWd1cmUgUElPQyBhcyBwZXJpcGhlcmFsIChEMTYvRDMxKSAqLwotI2RlZmluZSBQSU9DX0JTUl9WQUwJMHgwMDAwMDAwMAotI2RlZmluZSBQSU9DX1BEUl9WQUwJMHhGRkZGMDAwMAotI2RlZmluZSBFQklfQ1NBX1ZBTAkweDAwMDAwMDAyIC8qIENTMT1TRFJBTSAqLwotI2RlZmluZSBTRFJDX0NSX1ZBTAkweDMyMTEyOTVBIC8qIHNldCB1cCB0aGUgU0RSQU0gKi8KLSNkZWZpbmUgU0RSQU0JCTB4MjAwMDAwMDAgLyogYWRkcmVzcyBvZiB0aGUgU0RSQU0gKi8KLSNkZWZpbmUgU0RSQU0xCQkweDIwMDAwMDIwIC8qIGFkZHJlc3Mgb2YgdGhlIFNEUkFNICovCi0jZGVmaW5lIFNEUkFNX1ZBTAkweDAwMDAwMDAwIC8qIHZhbHVlIHdyaXR0ZW4gdG8gU0RSQU0gKi8KLSNkZWZpbmUgU0RSQ19NUl9WQUwJMHgwMDAwMDAwMiAvKiBQcmVjaGFyZ2UgQWxsICovCi0jZGVmaW5lIFNEUkNfTVJfVkFMMQkweDAwMDAwMDA0IC8qIHJlZnJlc2ggKi8KLSNkZWZpbmUgU0RSQ19NUl9WQUwyCTB4MDAwMDAwMDMgLyogTG9hZCBNb2RlIFJlZ2lzdGVyICovCi0jZGVmaW5lIFNEUkNfTVJfVkFMMwkweDAwMDAwMDAwIC8qIE5vcm1hbCBNb2RlICovCi0jZGVmaW5lIFNEUkNfVFJfVkFMCTB4MDAwMDAyRTAgLyogV3JpdGUgcmVmcmVzaCByYXRlICovCisjZGVmaW5lIENPTkZJR19TWVNfUElPQ19BU1JfVkFMCTB4RkZGRjAwMDAgLyogQ29uZmlndXJlIFBJT0MgYXMgcGVyaXBoZXJhbCAoRDE2L0QzMSkgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QSU9DX0JTUl9WQUwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BJT0NfUERSX1ZBTAkweEZGRkYwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRUJJX0NTQV9WQUwJMHgwMDAwMDAwMiAvKiBDUzE9Q09ORklHX1NZU19TRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfQ1JfVkFMCTB4MzIxMTI5NUEgLyogc2V0IHVwIHRoZSBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU0JMHgyMDAwMDAwMCAvKiBhZGRyZXNzIG9mIHRoZSBDT05GSUdfU1lTX1NEUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU0xCTB4MjAwMDAwMjAgLyogYWRkcmVzcyBvZiB0aGUgQ09ORklHX1NZU19TRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX1ZBTAkweDAwMDAwMDAwIC8qIHZhbHVlIHdyaXR0ZW4gdG8gQ09ORklHX1NZU19TRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMCTB4MDAwMDAwMDIgLyogUHJlY2hhcmdlIEFsbCAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfTVJfVkFMMQkweDAwMDAwMDA0IC8qIHJlZnJlc2ggKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJDX01SX1ZBTDIJMHgwMDAwMDAwMyAvKiBMb2FkIE1vZGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJDX01SX1ZBTDMJMHgwMDAwMDAwMCAvKiBOb3JtYWwgTW9kZSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkNfVFJfVkFMCTB4MDAwMDAyRTAgLyogV3JpdGUgcmVmcmVzaCByYXRlICovCiAjZWxzZQogI2RlZmluZSBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVAogI2VuZGlmCS8qIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tczc3MjJzZS5oIGIvaW5jbHVkZS9jb25maWdzL21zNzcyMnNlLmgKaW5kZXggOTk5N2M5Yi4uNTIwMjAwNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21zNzcyMnNlLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21zNzcyMnNlLmgKQEAgLTMxLDEwICszMSwxMyBAQAogI2RlZmluZSBDT05GSUdfTVM3NzIyU0UJCTEKIAogI2RlZmluZSBDT05GSUdfQ01EX0ZMQVNICisjZGVmaW5lIENPTkZJR19DTURfSkZGUzIKICNkZWZpbmUgQ09ORklHX0NNRF9ORVQKKyNkZWZpbmUgQ09ORklHX0NNRF9ORlMKICNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCiAjZGVmaW5lIENPTkZJR19DTURfREZMCiAjZGVmaW5lIENPTkZJR19DTURfU0RSQU0KKyNkZWZpbmUgQ09ORklHX0NNRF9NRU1PUlkKICNkZWZpbmUgQ09ORklHX0NNRF9FTlYKIAogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL25ldHN0YXIuaCBiL2luY2x1ZGUvY29uZmlncy9uZXRzdGFyLmgKaW5kZXggZGRhNjU5Ny4uZmFiMjJkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL25ldHN0YXIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbmV0c3Rhci5oCkBAIC0xMjAsNyArMTIwLDYgQEAKICAqIE5BTkQgZmxhc2gKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCTB4MDQwMDAwMDAgKyAoMiA8PCAyMykKICNkZWZpbmUgTkFORF9BTExPV19FUkFTRV9BTEwJMQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDI0MjBoNC5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAyNDIwaDQuaAppbmRleCBkMTE4NjhlLi45MmRmMGI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDI0MjBoNC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwMjQyMGg0LmgKQEAgLTE2Myw3ICsxNjMsNiBAQAogCiAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04gMHgwMAogI2RlZmluZSBOQU5EX01BWF9GTE9PUlMgICAgIDEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgICAgICAxCiAKICNkZWZpbmUgV1JJVEVfTkFORF9DT01NQU5EKGQsIGFkcikgZG8geyoodm9sYXRpbGUgdTE2ICopMHg2ODAwQTA3QyA9IGQ7fSB3aGlsZSgwKQogI2RlZmluZSBXUklURV9OQU5EX0FERFJFU1MoZCwgYWRyKSBkbyB7Kih2b2xhdGlsZSB1MTYgKikweDY4MDBBMDgwID0gZDt9IHdoaWxlKDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcGRuYjMuaCBiL2luY2x1ZGUvY29uZmlncy9wZG5iMy5oCmluZGV4IDhiNzg5MGUuLmY4YWFjMWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wZG5iMy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wZG5iMy5oCkBAIC0yNjQsNyArMjY0LDYgQEAKICAqIE5BTkQtRkxBU0ggc3R1ZmYKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkweDUxMDAwMDAwCS8qIE5BTkQgRkxBU0ggQmFzZSBBZGRyZXNzCSovCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3FlbXUtbWlwcy5oIGIvaW5jbHVkZS9jb25maWdzL3FlbXUtbWlwcy5oCmluZGV4IGYwMjhkMWFjLi44NDQ0NDYyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcWVtdS1taXBzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3FlbXUtbWlwcy5oCkBAIC0xNTAsNyArMTUwLDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFCTEKIAogI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKLSNkZWZpbmUgQ09ORklHX0VOVl9BRERSCQkoQ09ORklHX1NZU19GTEFTSF9CQVNFICsgMHg0MDAwMCkKKyNkZWZpbmUgQ09ORklHX0VOVl9BRERSCQkoQ09ORklHX1NZU19GTEFTSF9CQVNFICsgQ09ORklHX1NZU19NT05JVE9SX0xFTikKIAogLyogQWRkcmVzcyBhbmQgc2l6ZSBvZiBQcmltYXJ5IEVudmlyb25tZW50IFNlY3RvciAqLwogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4ODAwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3F1YWQxMDBoZC5oIGIvaW5jbHVkZS9jb25maWdzL3F1YWQxMDBoZC5oCmluZGV4IDBmN2ZjYTMuLjNlYTg1NGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9xdWFkMTAwaGQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcXVhZDEwMGhkLmgKQEAgLTIyNCw3ICsyMjQsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQ0UJMjQgICAvKiBvdXIgQ0UgaXMgR1BJTzI0ICAqLwogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQ0xFCTMxICAgLyogb3VyIENMRSBpcyBHUElPMzEgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0FMRQkzMCAgIC8qIG91ciBBTEUgaXMgR1BJTzMwICovCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCTEKICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zYmMyNDEweC5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzI0MTB4LmgKaW5kZXggZDdhNmFlNC4uYmY0YTE0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NiYzI0MTB4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NiYzI0MTB4LmgKQEAgLTIwOSw3ICsyMDksNiBAQAogCiAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04JMHgwMAogI2RlZmluZSBOQU5EX01BWF9GTE9PUlMgMQotI2RlZmluZSBOQU5EX01BWF9DSElQUyAxCiAKICNkZWZpbmUgTkFORF9XQUlUX1JFQURZKG5hbmQpCU5GX1dhaXRSQigpCiAjZGVmaW5lIE5BTkRfRElTQUJMRV9DRShuYW5kKQlORl9TZXRDRShORkNFX0hJR0gpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU0OC5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzg1NDguaAppbmRleCA1Y2U0ZGFjLi44MTQxYTQ2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU0OC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYmM4NTQ4LmgKQEAgLTU5LDcgKzU5LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfTDJfQ0FDSEUJCQkvKiB0b2dnbGUgTDIgY2FjaGUgKi8KICNkZWZpbmUgQ09ORklHX0JUQgkJCS8qIHRvZ2dsZSBicmFuY2ggcHJlZGl0aW9uICovCi0jZGVmaW5lIENPTkZJR19BRERSX1NUUkVBTUlORwkJLyogdG9nZ2xlIGFkZHIgc3RyZWFtaW5nICovCiAjZGVmaW5lIENPTkZJR19DTEVBUl9MQVcwCQkvKiBDbGVhciBMQVcwIGluIGNwdV9pbml0X3IgKi8KIAogLyoKQEAgLTQwMCwyNSArMzk5LDE2IEBACiAjZGVmaW5lIENPTkZJR19UU0VDMV9OQU1FCSJlVFNFQzAiCiAjZGVmaW5lIENPTkZJR19UU0VDMgkxCiAjZGVmaW5lIENPTkZJR19UU0VDMl9OQU1FCSJlVFNFQzEiCi0jZGVmaW5lIENPTkZJR19UU0VDMwkxCi0jZGVmaW5lIENPTkZJR19UU0VDM19OQU1FCSJlVFNFQzIiCi0jZGVmaW5lIENPTkZJR19UU0VDNAotI2RlZmluZSBDT05GSUdfVFNFQzRfTkFNRQkiZVRTRUMzIgogI3VuZGVmIENPTkZJR19NUEM4NVhYX0ZFQwogCi0jZGVmaW5lIFRTRUMxX1BIWV9BRERSCQkwCi0jZGVmaW5lIFRTRUMyX1BIWV9BRERSCQkxCi0jZGVmaW5lIFRTRUMzX1BIWV9BRERSCQkyCi0jZGVmaW5lIFRTRUM0X1BIWV9BRERSCQkzCisjZGVmaW5lIFRTRUMxX1BIWV9BRERSCQkweDE5CisjZGVmaW5lIFRTRUMyX1BIWV9BRERSCQkweDFhCiAKICNkZWZpbmUgVFNFQzFfUEhZSURYCQkwCiAjZGVmaW5lIFRTRUMyX1BIWUlEWAkJMAotI2RlZmluZSBUU0VDM19QSFlJRFgJCTAKLSNkZWZpbmUgVFNFQzRfUEhZSURYCQkwCisKICNkZWZpbmUgVFNFQzFfRkxBR1MJCVRTRUNfR0lHQUJJVAogI2RlZmluZSBUU0VDMl9GTEFHUwkJVFNFQ19HSUdBQklUCi0jZGVmaW5lIFRTRUMzX0ZMQUdTCQkoVFNFQ19HSUdBQklUIHwgVFNFQ19SRURVQ0VEKQotI2RlZmluZSBUU0VDNF9GTEFHUwkJKFRTRUNfR0lHQUJJVCB8IFRTRUNfUkVEVUNFRCkKIAogLyogT3B0aW9ucyBhcmU6IGVUU0VDWzAtM10gKi8KICNkZWZpbmUgQ09ORklHX0VUSFBSSU1FCQkiZVRTRUMwIgpAQCAtNDY1LDYgKzQ1NSw3IEBACiAvKgogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwogICovCisjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCkBAIC01MDgsMTAgKzQ5OSw2IEBACiAjZGVmaW5lIENPTkZJR19FVEhBRERSCSAwMjpFMDowQzowMDowMDpGRAogI2RlZmluZSBDT05GSUdfSEFTX0VUSDEKICNkZWZpbmUgQ09ORklHX0VUSDFBRERSCSAwMjpFMDowQzowMDowMTpGRAotI2RlZmluZSBDT05GSUdfSEFTX0VUSDIKLSNkZWZpbmUgQ09ORklHX0VUSDJBRERSCSAwMjpFMDowQzowMDowMjpGRAotI2RlZmluZSBDT05GSUdfSEFTX0VUSDMKLSNkZWZpbmUgQ09ORklHX0VUSDNBRERSCSAwMjpFMDowQzowMDowMzpGRAogI2VuZGlmCiAKICNkZWZpbmUgQ09ORklHX0lQQUREUgkgMTkyLjE2OC4wLjU1CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU2MC5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzg1NjAuaAppbmRleCBlMWQzYTUyLi5kNGU5ZDc0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYmM4NTYwLmgKQEAgLTY5LDcgKzY5LDYgQEAKIC8qIGJlbG93IGNhbiBiZSB0b2dnbGVkIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gb3RoZXJ3aXNlIHVzZSBkZWZhdWx0ICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRQkJCSAgICAvKiB0b2dnbGUgTDIgY2FjaGUJCSovCiAjdW5kZWYJQ09ORklHX0JUQgkJCSAgICAvKiB0b2dnbGUgYnJhbmNoIHByZWRpdGlvbgkqLwotI3VuZGVmCUNPTkZJR19BRERSX1NUUkVBTUlORwkJICAgIC8qIHRvZ2dsZSBhZGRyIHN0cmVhbWluZwkqLwogCiAjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX0YgMQkgICAgLyogQ2FsbCBib2FyZF9lYXJseV9pbml0X2YJKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzg2NDFkLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODY0MWQuaAppbmRleCAwMDEyOTQ1Li4xMDA4ODEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODY0MWQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODY0MWQuaApAQCAtMzExLDE4ICszMTEsMjIgQEAKICAqIEdlbmVyYWwgUENJCiAgKiBBZGRyZXNzZXMgYXJlIG1hcHBlZCAxLTEuCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwkJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kxX01FTV9CVVMKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUCUNPTkZJR19TWVNfUENJMV9NRU1fQlVTCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fU0laRQkweDIwMDAwMDAwCS8qIDUxMk0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UJMHhlMjAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUwlDT05GSUdfU1lTX1BDSTFfSU9fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCTB4ZTIwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0lPX1BIWVMJQ09ORklHX1NZU19QQ0kxX0lPX0JVUworI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fVklSVAlDT05GSUdfU1lTX1BDSTFfSU9fQlVTCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCTB4MTAwMDAwMAkvKiAxNk0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX0JBU0UJMHhhMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kyX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fQlVTCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMl9NRU1fQlVTCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9NRU1fVklSVAlDT05GSUdfU1lTX1BDSTJfTUVNX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19CQVNFCTB4ZTMwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX1BIWVMJQ09ORklHX1NZU19QQ0kyX0lPX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX0JVUwkweGUzMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMl9JT19QSFlTCUNPTkZJR19TWVNfUENJMl9JT19CVVMKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0kyX0lPX1ZJUlQJQ09ORklHX1NZU19QQ0kyX0lPX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSTJfSU9fU0laRQkweDEwMDAwMDAJLyogMTZNICovCiAKICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCkBAIC00MDksMTAgKzQxMywxMCBAQAogICogMHhhMDAwXzAwMDAgIDUxMk0gICBQQ0ktRXhwcmVzcyAyIE1lbW9yeQogICoJQ2hhbmdlZCBpdCBmb3Igb3BlcmF0aW5nIGZyb20gMHhkMDAwMDAwMAogICovCi0jZGVmaW5lIENPTkZJR19TWVNfREJBVDFMCSggQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFIHwgQkFUTF9QUF9SVyBcCisjZGVmaW5lIENPTkZJR19TWVNfREJBVDFMCSggQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTIHwgQkFUTF9QUF9SVyBcCiAJCQl8IEJBVExfQ0FDSEVJTkhJQklUIHwgQkFUTF9HVUFSREVEU1RPUkFHRSkKLSNkZWZpbmUgQ09ORklHX1NZU19EQkFUMVUJKENPTkZJR19TWVNfUENJMV9NRU1fQkFTRSB8IEJBVFVfQkxfMjU2TSB8IEJBVFVfVlMgfCBCQVRVX1ZQKQotI2RlZmluZSBDT05GSUdfU1lTX0lCQVQxTAkoQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUKQorI2RlZmluZSBDT05GSUdfU1lTX0RCQVQxVQkoQ09ORklHX1NZU19QQ0kxX01FTV9WSVJUIHwgQkFUVV9CTF8yNTZNIHwgQkFUVV9WUyB8IEJBVFVfVlApCisjZGVmaW5lIENPTkZJR19TWVNfSUJBVDFMCShDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMgfCBCQVRMX1BQX1JXIHwgQkFUTF9DQUNIRUlOSElCSVQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUJBVDFVCUNPTkZJR19TWVNfREJBVDFVCiAKIC8qCkBAIC00NTIsMTAgKzQ1NiwxMCBAQAogICogMHhlMzAwXzAwMDAgIDE2TSAgICBQQ0ktRXhwcmVzcyAyIEkvMAogICogICAgTm90ZSB0aGF0IHRoaXMgaXMgYXQgMHhlMDAwMDAwMAogICovCi0jZGVmaW5lIENPTkZJR19TWVNfREJBVDRMCSggQ09ORklHX1NZU19QQ0kxX0lPX0JBU0UgfCBCQVRMX1BQX1JXIFwKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUNEwJKCBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUyB8IEJBVExfUFBfUlcgXAogCQkJfCBCQVRMX0NBQ0hFSU5ISUJJVCB8IEJBVExfR1VBUkRFRFNUT1JBR0UpCi0jZGVmaW5lIENPTkZJR19TWVNfREJBVDRVCShDT05GSUdfU1lTX1BDSTFfSU9fQkFTRSB8IEJBVFVfQkxfMzJNIHwgQkFUVV9WUyB8IEJBVFVfVlApCi0jZGVmaW5lIENPTkZJR19TWVNfSUJBVDRMCShDT05GSUdfU1lTX1BDSTFfSU9fQkFTRSB8IEJBVExfUFBfUlcgfCBCQVRMX0NBQ0hFSU5ISUJJVCkKKyNkZWZpbmUgQ09ORklHX1NZU19EQkFUNFUJKENPTkZJR19TWVNfUENJMV9JT19WSVJUIHwgQkFUVV9CTF8zMk0gfCBCQVRVX1ZTIHwgQkFUVV9WUCkKKyNkZWZpbmUgQ09ORklHX1NZU19JQkFUNEwJKENPTkZJR19TWVNfUENJMV9JT19QSFlTIHwgQkFUTF9QUF9SVyB8IEJBVExfQ0FDSEVJTkhJQklUKQogI2RlZmluZSBDT05GSUdfU1lTX0lCQVQ0VQlDT05GSUdfU1lTX0RCQVQ0VQogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NjMy5oIGIvaW5jbHVkZS9jb25maWdzL3NjMy5oCmluZGV4IGQxNTJhOTYuLjUxNWIwOTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYzMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2MzLmgKQEAgLTQyNCw3ICs0MjQsNiBAQAogICogTkFORC1GTEFTSCBzdHVmZgogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCTB4NzdEMDAwMDAKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfY2RwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfY2RwLmgKaW5kZXggYmY4NjkzZS4uOWYyMzU3YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NjNTIwX2NkcC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYzUyMF9jZHAuaApAQCAtNDcsNyArNDcsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0NBU19MQVRFTkNZXzNUCiAKICNkZWZpbmUgQ09ORklHX1NZU19TQzUyMF9ISUdIX1NQRUVEICAgIDAgICAgICAgLyogMTAwIG9yIDEzM01IeiAqLwotI2RlZmluZSBDT05GSUdfU1lTX1JFU0VUX0dFTkVSSUMgICAgICAgMSAgICAgICAvKiB1c2UgdHJpcHBsZS1mYXVsdCB0byByZXNldCBjcHUgKi8KICN1bmRlZiAgQ09ORklHX1NZU19SRVNFVF9TQzUyMCAgICAgICAgICAgICAgICAgLyogdXNlIFNDNTIwIE1NQ1IncyB0byByZXNldCBjcHUgKi8KICN1bmRlZiAgQ09ORklHX1NZU19USU1FUl9TQzUyMCAgICAgICAgICAgICAgICAgLyogdXNlIFNDNTIwIHN3dGltZXJzICovCiAjZGVmaW5lIENPTkZJR19TWVNfVElNRVJfR0VORVJJQyAgICAgICAxICAgICAgIC8qIHVzZSB0aGUgaTgyNTQgUElUIHRpbWVycyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NjNTIwX3NwdW5rLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfc3B1bmsuaAppbmRleCBmYmRiZWRkLi41MGFmNzMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfc3B1bmsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfc3B1bmsuaApAQCAtNDUsNyArNDUsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0NBU19MQVRFTkNZXzNUCiAKICNkZWZpbmUgQ09ORklHX1NZU19TQzUyMF9ISUdIX1NQRUVEICAgIDAgICAgICAgLyogMTAwIG9yIDEzM01IeiAqLwotI2RlZmluZSBDT05GSUdfU1lTX1JFU0VUX0dFTkVSSUMgICAgICAgMSAgICAgICAvKiB1c2UgdHJpcHBsZS1mYXVsdCB0byByZXNldCBjcHUgKi8KICN1bmRlZiAgQ09ORklHX1NZU19SRVNFVF9TQzUyMCAgICAgICAgICAgICAgICAgLyogdXNlIFNDNTIwIE1NQ1IncyB0byByZXNldCBjcHUgKi8KICN1bmRlZiAgQ09ORklHX1NZU19USU1FUl9TQzUyMCAgICAgICAgICAgICAgICAgLyogdXNlIFNDNTIwIHN3dGltZXJzICovCiAjZGVmaW5lIENPTkZJR19TWVNfVElNRVJfR0VORVJJQyAgICAgICAxICAgICAgIC8qIHVzZSB0aGUgaTgyNTQgUElUIHRpbWVycyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NlcXVvaWEuaCBiL2luY2x1ZGUvY29uZmlncy9zZXF1b2lhLmgKaW5kZXggOTMyMWJkYy4uYTNlMmZjZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NlcXVvaWEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2VxdW9pYS5oCkBAIC0zNzMsNyArMzczLDYgQEAKICAqIE5BTkQgRkxBU0gKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkoQ09ORklHX1NZU19OQU5EX0FERFIgKyBDT05GSUdfU1lTX05BTkRfQ1MpCiAjZGVmaW5lIENPTkZJR19TWVNfTkFORF9TRUxFQ1RfREVWSUNFICAxCS8qIG5hbmQgZHJpdmVyIHN1cHBvcnRzIG11dGlwbC4gY2hpcHMgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NtZGs2NDAwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc21kazY0MDAuaAppbmRleCAxNzg0Y2M2Li41N2M4MmQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc21kazY0MDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc21kazY0MDAuaApAQCAtMjI3LDcgKzIyNyw2IEBACiAvKiBOQU5EIGNvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQogI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHg3MDIwMDAxMAotI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQogI2RlZmluZSBDT05GSUdfU1lTX1MzQ19OQU5EX0hXRUNDCiAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX1NLSVBfQkFEX0RPVF9JCTEgIC8qICIuaSIgcmVhZCBza2lwcyBiYWQgYmxvY2tzCSAgICAgICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc29jcmF0ZXMuaCBiL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oCmluZGV4IGU4OWI1YTMuLmJlY2QxM2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oCkBAIC04Miw3ICs4Miw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0wyX0NBQ0hFCQkJLyogdG9nZ2xlIEwyIGNhY2hlCQkqLwogI2RlZmluZSBDT05GSUdfQlRCCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24JKi8KLSNkZWZpbmUgQ09ORklHX0FERFJfU1RSRUFNSU5HCQkvKiB0b2dnbGUgYWRkciBzdHJlYW1pbmcJKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfREJDUiBEQkNSX0lETQkJLyogRW5hYmxlIERlYnVnIEV4Y2VwdGlvbnMJKi8KIApAQCAtMTg3LDcgKzE4Niw2IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19OQU5EX0JBU0UJCShDT05GSUdfU1lTX0ZQR0FfQkFTRSArIDB4NzApCiAjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKICNkZWZpbmUgQ09ORklHX0NNRF9OQU5ECiAKIC8qIExJTUUgR0RDICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4Z3AzLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc3R4Z3AzLmgKaW5kZXggYTBmMmVkMC4uYWU2ZjQ1YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3N0eGdwMy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zdHhncDMuaApAQCAtNjQsNyArNjQsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19MMl9DQUNIRSAgICAgICAgICAgICAgICAgICAgIC8qIHRvZ2dsZSBMMiBjYWNoZSAgICAgICAgICovCiAjZGVmaW5lICBDT05GSUdfQlRCICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0b2dnbGUgYnJhbmNoIHByZWRpdGlvbiAqLwotI2RlZmluZSAgQ09ORklHX0FERFJfU1RSRUFNSU5HICAgICAgICAgICAgICAgLyogdG9nZ2xlIGFkZHIgc3RyZWFtaW5nICAgKi8KIAogI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GICAgMSAgICAgICAgLyogQ2FsbCBib2FyZF9wcmVfaW5pdCAgICAgICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zdHhzc2EuaCBiL2luY2x1ZGUvY29uZmlncy9zdHhzc2EuaAppbmRleCBmMDk5MGM2Li5jMzEyZjFhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4c3NhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3N0eHNzYS5oCkBAIC02NCw3ICs2NCw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0wyX0NBQ0hFCQkJCS8qIHRvZ2dsZSBMMiBjYWNoZQkgICAgICAgKi8KICNkZWZpbmUgIENPTkZJR19CVEIJCQkJLyogdG9nZ2xlIGJyYW5jaCBwcmVkaXRpb24gKi8KLSNkZWZpbmUgIENPTkZJR19BRERSX1NUUkVBTUlORwkJCS8qIHRvZ2dsZSBhZGRyIHN0cmVhbWluZwkqLwogCiAjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX0YgICAxCQkvKiBDYWxsIGJvYXJkX3ByZV9pbml0CSAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4eHRjLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc3R4eHRjLmgKaW5kZXggYmMwNzhjZi4uNWE1Zjc3MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3N0eHh0Yy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zdHh4dGMuaApAQCAtNDY0LDcgKzQ2NCw2IEBACiAjZGVmaW5lIEFERFJfQ09MVU1OX1BBR0UJMwogI2RlZmluZSBOQU5EX0NoaXBJRF9VTktOT1dOCTB4MDAKICNkZWZpbmUgTkFORF9NQVhfRkxPT1JTCQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAKIC8qIEFMRSA9IFBDMTUsIENMRSA9IFBCMjMsIENFID0gUEE3LCBGX1JZX0JZID0gUEE2ICovCiAjZGVmaW5lIE5BTkRfRElTQUJMRV9DRShuYW5kKSBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MveHVwdjJwLmggYi9pbmNsdWRlL2NvbmZpZ3MveHVwdjJwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhOTI3MDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9jb25maWdzL3h1cHYycC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDctMjAwOCBNaWNoYWwgU2ltZWsKLSAqCi0gKiBNaWNoYWwgU0lNRUsgPG1vbnN0ckBtb25zdHIuZXU+Ci0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaWZuZGVmIF9fQ09ORklHX0gKLSNkZWZpbmUgX19DT05GSUdfSAotCi0jaW5jbHVkZSAiLi4vYm9hcmQveGlsaW54L3h1cHYycC94cGFyYW1ldGVycy5oIgotCi0jZGVmaW5lCUNPTkZJR19NSUNST0JMQVpFCTEJLyogTWljcm9CbGF6ZSBDUFUgKi8KLSNkZWZpbmUJQ09ORklHX1hVUFYyUAkJMQotCi0vKiB1YXJ0ICovCi0jaWZkZWYgWElMSU5YX1VBUlRMSVRFX0JBU0VBRERSCi0jZGVmaW5lCUNPTkZJR19YSUxJTlhfVUFSVExJVEUKLSNkZWZpbmUJQ09ORklHX1NFUklBTF9CQVNFCVhJTElOWF9VQVJUTElURV9CQVNFQUREUgotI2RlZmluZQlDT05GSUdfQkFVRFJBVEUJCVhJTElOWF9VQVJUTElURV9CQVVEUkFURQotI2RlZmluZQlDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgQ09ORklHX0JBVURSQVRFIH0KLSNlbHNlCi0jaWZkZWYgWElMSU5YX1VBUlQxNjU1MF9CQVNFQUREUgotI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTAKLSNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1NFUklBTAotI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUJNAotI2RlZmluZSBDT05GSUdfQ09OU19JTkRFWAkxCi0jZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00xCVhJTElOWF9VQVJUMTY1NTBfQkFTRUFERFIKLSNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NMSwkJWElMSU5YX1VBUlQxNjU1MF9DTE9DS19IWgotI2RlZmluZQlDT05GSUdfQkFVRFJBVEUJCTExNTIwMAotI2RlZmluZQlDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTE1MjAwIH0KLSNlbmRpZgotI2VuZGlmCi0KLS8qCi0gKiBzZXR0aW5nIHJlc2V0IGFkZHJlc3MKLSAqCi0gKiBURVhUX0JBU0UgaXMgc2V0IHRvIHBsYWNlLCB3aGVyZSB0aGUgVS1CT09UIHJ1biBpbiBSQU0sIGJ1dAotICogaWYgeW91IHdhbnQgdG8gc3RvcmUgVS1CT09UIGluIGZsYXNoLCBzZXQgQ09ORklHX1NZU19SRVNFVF9BRERSRVNTCi0gKiB0byBGTEFTSCBtZW1vcnkgYW5kIGFmdGVyIGxvYWRpbmcgYml0c3RyZWFtIGp1bXAgdG8gRkxBU0guCi0gKiBVLUJPT1QgYXV0by1yZWxvY2F0ZSB0byBURVhUX0JBU0UuIEFmdGVyIFJFU0VUIGNvbW1hbmQgTWljcm9ibGF6ZQotICoganVtcCB0byBDT05GSUdfU1lTX1JFU0VUX0FERFJFU1Mgd2hlcmUgaXMgdGhlIG9yaWdpbmFsIFUtQk9PVCBjb2RlLgotICovCi0vKiAjZGVmaW5lCUNPTkZJR19TWVNfUkVTRVRfQUREUkVTUwkweDM2MDAwMDAwICovCi0KLS8qIGV0aGVybmV0ICovCi0jaWZkZWYgWElMSU5YX0VNQUNfQkFTRUFERFIKLSNkZWZpbmUgQ09ORklHX1hJTElOWF9FTUFDCTEKLSNkZWZpbmUgQ09ORklHX1NZU19FTkVUCi0jZWxzZQotI2lmZGVmIFhJTElOWF9FTUFDTElURV9CQVNFQUREUgotI2RlZmluZSBDT05GSUdfWElMSU5YX0VNQUNMSVRFCTEKLSNkZWZpbmUgQ09ORklHX1NZU19FTkVUCi0jZW5kaWYKLSNlbmRpZgotI3VuZGVmIEVUX0RFQlVHCi0KLS8qIGdwaW8gKi8KLSNpZmRlZiBYSUxJTlhfR1BJT19CQVNFQUREUgotI2RlZmluZQlDT05GSUdfU1lTX0dQSU9fMAkJMQotI2RlZmluZQlDT05GSUdfU1lTX0dQSU9fMF9BRERSCQlYSUxJTlhfR1BJT19CQVNFQUREUgotI2VuZGlmCi0KLS8qIGludGVycnVwdCBjb250cm9sbGVyICovCi0jaWZkZWYgWElMSU5YX0lOVENfQkFTRUFERFIKLSNkZWZpbmUJQ09ORklHX1NZU19JTlRDXzAJCTEKLSNkZWZpbmUJQ09ORklHX1NZU19JTlRDXzBfQUREUgkJWElMSU5YX0lOVENfQkFTRUFERFIKLSNkZWZpbmUJQ09ORklHX1NZU19JTlRDXzBfTlVNCQlYSUxJTlhfSU5UQ19OVU1fSU5UUl9JTlBVVFMKLSNlbmRpZgotCi0vKiB0aW1lciAqLwotI2lmZGVmIFhJTElOWF9USU1FUl9CQVNFQUREUgotI2lmIChYSUxJTlhfVElNRVJfSVJRICE9IC0xKQotI2RlZmluZQlDT05GSUdfU1lTX1RJTUVSXzAJCTEKLSNkZWZpbmUJQ09ORklHX1NZU19USU1FUl8wX0FERFIJWElMSU5YX1RJTUVSX0JBU0VBRERSCi0jZGVmaW5lCUNPTkZJR19TWVNfVElNRVJfMF9JUlEJCVhJTElOWF9USU1FUl9JUlEKLSNkZWZpbmUJRlJFUVVFTkNFCQlYSUxJTlhfQ0xPQ0tfRlJFUQotI2RlZmluZQlDT05GSUdfU1lTX1RJTUVSXzBfUFJFTE9BRAkoIEZSRVFVRU5DRS8xMDAwICkKLSNlbmRpZgotI2Vsc2UKLSNpZmRlZiBYSUxJTlhfQ0xPQ0tfRlJFUQotI2RlZmluZQlDT05GSUdfWElMSU5YX0NMT0NLX0ZSRVEJWElMSU5YX0NMT0NLX0ZSRVEKLSNlbHNlCi0jZXJyb3IgQkFEIENMT0NLIEZSRVEKLSNlbmRpZgotI2VuZGlmCi0vKgotICogbWVtb3J5IGxheW91dCAtIEV4YW1wbGUKLSAqIFRFWFRfQkFTRSA9IDB4MzYwMF8wMDAwOwotICogQ09ORklHX1NZU19TUkFNX0JBU0UgPSAweDMwMDBfMDAwMDsKLSAqIENPTkZJR19TWVNfU1JBTV9TSVpFID0gMHgxMDAwXzAwMDA7Ci0gKgotICogQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgPSAweDMwMDBfMDAwMCArIDB4MTAwMF8wMDAwIC0gMHgxMDAwID0gMHgzRkZGX0YwMDAKLSAqIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFID0gMHgzRkZGX0YwMDAgLSAweDQwMDAwID0gMHgzRkZCX0YwMDAKLSAqIENPTkZJR19TWVNfTUFMTE9DX0JBU0UgPSAweDNGRkJfRjAwMCAtIDB4NDAwMDAgPSAweDNGRjdfRjAwMAotICoKLSAqIDB4MzAwMF8wMDAwCUNPTkZJR19TWVNfU0RSQU1fQkFTRQotICoJCQkJCUZSRUUKLSAqIDB4MzYwMF8wMDAwCVRFWFRfQkFTRQotICoJCVUtQk9PVCBjb2RlCi0gKiAweDM2MDJfMDAwMAotICoJCQkJCUZSRUUKLSAqCi0gKgkJCQkJU1RBQ0sKLSAqIDB4M0ZGN19GMDAwCUNPTkZJR19TWVNfTUFMTE9DX0JBU0UKLSAqCQkJCQlNQUxMT0NfQVJFQQkyNTZrQglBbGxvYwotICogMHgzRkZCX0YwMDAJQ09ORklHX1NZU19NT05JVE9SX0JBU0UKLSAqCQkJCQlNT05JVE9SX0NPREUJMjU2a0IJRW52Ci0gKiAweDNGRkZfRjAwMAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAotICoJCQkJCUdMT0JBTF9EQVRBCTRrQgliZCwgZ2QKLSAqIDB4NDAwMF8wMDAwCUNPTkZJR19TWVNfU0RSQU1fQkFTRSArIENPTkZJR19TWVNfU0RSQU1fU0laRQotICovCi0KLS8qIGRkciBzZHJhbSAtIG1haW4gbWVtb3J5ICovCi0jZGVmaW5lCUNPTkZJR19TWVNfU0RSQU1fQkFTRQkJWElMSU5YX1JBTV9TVEFSVAotI2RlZmluZQlDT05GSUdfU1lTX1NEUkFNX1NJWkUJCVhJTElOWF9SQU1fU0laRQotI2RlZmluZQlDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJQ09ORklHX1NZU19TRFJBTV9CQVNFCi0jZGVmaW5lCUNPTkZJR19TWVNfTUVNVEVTVF9FTkQJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgKyAweDEwMDApCi0KLS8qIGdsb2JhbCBwb2ludGVyICovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMDAJLyogc2l6ZSBvZiBnbG9iYWwgZGF0YSAqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAgKENPTkZJR19TWVNfU0RSQU1fQkFTRSArIENPTkZJR19TWVNfU0RSQU1fU0laRSAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkgLyogc3RhcnQgb2YgZ2xvYmFsIGRhdGEgKi8KLQotLyogbW9uaXRvciBjb2RlICovCi0jZGVmaW5lCVNJWkUJCQkweDQwMDAwCi0jZGVmaW5lCUNPTkZJR19TWVNfTU9OSVRPUl9MRU4JCVNJWkUKLSNkZWZpbmUJQ09ORklHX1NZU19NT05JVE9SX0JBU0UJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gQ09ORklHX1NZU19NT05JVE9SX0xFTikKLSNkZWZpbmUJQ09ORklHX1NZU19NT05JVE9SX0VORAkJKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFICsgQ09ORklHX1NZU19NT05JVE9SX0xFTikKLSNkZWZpbmUJQ09ORklHX1NZU19NQUxMT0NfTEVOCQlTSVpFCi0jZGVmaW5lCUNPTkZJR19TWVNfTUFMTE9DX0JBU0UJCShDT05GSUdfU1lTX01PTklUT1JfQkFTRSAtIENPTkZJR19TWVNfTUFMTE9DX0xFTikKLQotLyogc3RhY2sgKi8KLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX01BTExPQ19CQVNFCi0KLSNkZWZpbmUJQ09ORklHX1NZU19OT19GTEFTSAkJMQotI2RlZmluZQlDT05GSUdfRU5WX0lTX05PV0hFUkUJMQotI2RlZmluZQlDT05GSUdfRU5WX1NJWkUJCTB4MTAwMAotI2RlZmluZQlDT05GSUdfRU5WX0FERFIJCShDT05GSUdfU1lTX01PTklUT1JfQkFTRSAtIENPTkZJR19FTlZfU0laRSkKLQotLyoKLSAqIEJPT1RQIG9wdGlvbnMKLSAqLwotI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCi0jZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAotI2RlZmluZSBDT05GSUdfQk9PVFBfR0FURVdBWQotI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUKLQotLyoKLSAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgotICovCi0jaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+Ci0KLSN1bmRlZiBDT05GSUdfQ01EX0ZMQVNICi0jdW5kZWYgQ09ORklHX0NNRF9KRkZTMgotI3VuZGVmIENPTkZJR19DTURfSU1MUwotCi0jZGVmaW5lIENPTkZJR19DTURfQVNLRU5WCi0jZGVmaW5lIENPTkZJR19DTURfQ0FDSEUKLSNkZWZpbmUgQ09ORklHX0NNRF9JUlEKLQotI2lmbmRlZiBDT05GSUdfU1lTX0VORVQKLQkjdW5kZWYgQ09ORklHX0NNRF9ORVQKLSNlbHNlCi0JI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKLSNlbmRpZgotCi0jaWZkZWYgWElMSU5YX1NZU0FDRV9CQVNFQUREUgotI2RlZmluZSBDT05GSUdfQ01EX0VYVDIKLSNkZWZpbmUgQ09ORklHX0NNRF9GQVQKLSNlbmRpZgotCi0vKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zICovCi0jZGVmaW5lCUNPTkZJR19TWVNfUFJPTVBUCSJVLUJvb3QtbU9OU3RSPiAiCi0jZGVmaW5lCUNPTkZJR19TWVNfQ0JTSVpFCTUxMgkvKiBzaXplIG9mIGNvbnNvbGUgYnVmZmVyICovCi0jZGVmaW5lCUNPTkZJR19TWVNfUEJTSVpFCShDT05GSUdfU1lTX0NCU0laRSArIHNpemVvZihDT05GSUdfU1lTX1BST01QVCkgKyAxNikgLyogcHJpbnQgYnVmZmVyIHNpemUgKi8KLSNkZWZpbmUJQ09ORklHX1NZU19NQVhBUkdTCTE1CS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzICovCi0jZGVmaW5lCUNPTkZJR19TWVNfTE9OR0hFTFAKLSNkZWZpbmUJQ09ORklHX1NZU19MT0FEX0FERFIJMHgxMjAwMDAwMCAvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwotCi0jZGVmaW5lCUNPTkZJR19CT09UREVMQVkJMzAKLSNkZWZpbmUJQ09ORklHX0JPT1RBUkdTCQkicm9vdD1yb21mcyIKLSNkZWZpbmUJQ09ORklHX0hPU1ROQU1FCQkieHVwdjJwIgotI2RlZmluZQlDT05GSUdfQk9PVENPTU1BTkQJImJhc2UgMDt0ZnRwIDExMDAwMDAwIGltYWdlLmltZztib290bSIKLSNkZWZpbmUJQ09ORklHX0lQQUREUgkJMTkyLjE2OC4wLjMKLSNkZWZpbmUJQ09ORklHX1NFUlZFUklQCQkxOTIuMTY4LjAuNQotI2RlZmluZQlDT05GSUdfR0FURVdBWUlQCTE5Mi4xNjguMC4xCi0jZGVmaW5lCUNPTkZJR19FVEhBRERSCQkwMDpFMDowQzowMDowMDpGRAotCi0vKiBhcmNoaXRlY3R1cmUgZGVwZW5kZW50IGNvZGUgKi8KLSNkZWZpbmUJQ09ORklHX1NZU19VU1JfRVhDRVAJLyogdXNlciBleGNlcHRpb24gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19IWgkxMDAwCi0KLSNkZWZpbmUgQ09ORklHX1BSRUJPT1QJImVjaG8gVS1CT09UIGJ5IG1PTlN0UjsiCVwKLQkiYmFzZSAwOyIgXAotCSJlY2hvIgotCi0vKiBzeXN0ZW0gYWNlICovCi0jaWZkZWYgWElMSU5YX1NZU0FDRV9CQVNFQUREUgotI2RlZmluZQlDT05GSUdfU1lTVEVNQUNFCi0vKiAjZGVmaW5lIERFQlVHX1NZU1RFTUFDRSAqLwotI2RlZmluZQlTWVNURU1BQ0VfQ09ORklHX0ZQR0EKLSNkZWZpbmUJQ09ORklHX1NZU19TWVNURU1BQ0VfQkFTRQlYSUxJTlhfU1lTQUNFX0JBU0VBRERSCi0jZGVmaW5lCUNPTkZJR19TWVNfU1lTVEVNQUNFX1dJRFRICVhJTElOWF9TWVNBQ0VfTUVNX1dJRFRICi0jZGVmaW5lCUNPTkZJR19ET1NfUEFSVElUSU9OCi0jZW5kaWYKLQotI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCi0jZGVmaW5lIENPTkZJR19PRl9MSUJGRFQJMSAvKiBmbGF0IGRldmljZSB0cmVlICovCi0KLSNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvenlsb25pdGUuaCBiL2luY2x1ZGUvY29uZmlncy96eWxvbml0ZS5oCmluZGV4IDUzMzk3ZDguLmYzMGVjYTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy96eWxvbml0ZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy96eWxvbml0ZS5oCkBAIC0yMjcsNyArMjI3LDYgQEAKIAogI2RlZmluZSBOQU5EX0NoaXBJRF9VTktOT1dOCTB4MDAKICNkZWZpbmUgTkFORF9NQVhfRkxPT1JTCQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCiAKICNkZWZpbmUgQ09ORklHX1NZU19OT19GTEFTSAkJMQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RldmljZXMuaCBiL2luY2x1ZGUvZGV2aWNlcy5oCmluZGV4IDZiNzhkNTguLjIwZGRmYzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZGV2aWNlcy5oCisrKyBiL2luY2x1ZGUvZGV2aWNlcy5oCkBAIC05MSw3ICs5MSw5IEBACiAgKi8KIGludAlkZXZpY2VfcmVnaXN0ZXIgKGRldmljZV90ICogZGV2KTsKIGludAlkZXZpY2VzX2luaXQgKHZvaWQpOworI2lmZGVmIENPTkZJR19TWVNfREVWSUNFX0RFUkVHSVNURVIKIGludAlkZXZpY2VfZGVyZWdpc3RlcihjaGFyICpkZXZuYW1lKTsKKyNlbmRpZgogc3RydWN0IGxpc3RfaGVhZCogZGV2aWNlX2dldF9saXN0KHZvaWQpOwogZGV2aWNlX3QqIGRldmljZV9nZXRfYnlfbmFtZShjaGFyKiBuYW1lKTsKIGRldmljZV90KiBkZXZpY2VfY2xvbmUoZGV2aWNlX3QgKmRldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RpdjY0LmggYi9pbmNsdWRlL2RpdjY0LmgKaW5kZXggYzQ5NWFlZi4uZDgzMzE0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kaXY2NC5oCisrKyBiL2luY2x1ZGUvZGl2NjQuaApAQCAtMzYsNCArMzYsMTQgQEAKIAlfX3JlbTsJCQkJCQlcCiAgfSkKIAorLyogV3JhcHBlciBmb3IgZG9fZGl2KCkuIERvZXNuJ3QgbW9kaWZ5IGRpdmlkZW5kIGFuZCByZXR1cm5zCisgKiB0aGUgcmVzdWx0LCBub3QgcmVtaW5kZXIuCisgKi8KK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgbGxkaXYodWludDY0X3QgZGl2aWRlbmQsIHVpbnQzMl90IGRpdmlzb3IpCit7CisJdWludDY0X3QgX19yZXMgPSBkaXZpZGVuZDsKKwlkb19kaXYoX19yZXMsIGRpdmlzb3IpOworCXJldHVybihfX3Jlcyk7Cit9CisKICNlbmRpZiAvKiBfQVNNX0dFTkVSSUNfRElWNjRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kczQ1MTAuaCBiL2luY2x1ZGUvZHM0NTEwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0ODBhZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHM0NTEwLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIFZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0RTNDUxMF9IXworI2RlZmluZSBfX0RTNDUxMF9IXworCisvKiBHZW5lcmFsIGRlZmluZXMgKi8KKyNkZWZpbmUgRFM0NTEwX05VTV9JTwkJCQkweDA0CisjZGVmaW5lIERTNDUxMF9JT19NQVNLCQkJCSgoMSA8PCBEUzQ1MTBfTlVNX0lPKSAtIDEpCisjZGVmaW5lIERTNDUxMF9FRVBST01fUEFHRV9XUklURV9ERUxBWV9NUwkyMAorCisvKiBFRVBST00gZnJvbSAweDAwIC0gMHgzOSAqLworI2RlZmluZSBEUzQ1MTBfRUVQUk9NCQkJCTB4MDAKKyNkZWZpbmUgRFM0NTEwX0VFUFJPTV9TSVpFCQkJMHg0MAorI2RlZmluZSBEUzQ1MTBfRUVQUk9NX1BBR0VfU0laRQkJCTB4MDgKKyNkZWZpbmUgRFM0NTEwX0VFUFJPTV9QQUdFX09GRlNFVCh4KQkoKHgpICYgKERTNDUxMF9FRVBST01fUEFHRV9TSVpFIC0gMSkpCisKKy8qIFNFRVBST00gZnJvbSAweGYwIC0gMHhmNyAqLworI2RlZmluZSBEUzQ1MTBfU0VFUFJPTQkJCQkweGYwCisjZGVmaW5lIERTNDUxMF9TRUVQUk9NX1NJWkUJCQkweDA4CisKKy8qIFJlZ2lzdGVycyBvdmVybGFwcGluZyBTRUVQUk9NIGZyb20gMHhmMCAtIDB4ZjcgKi8KKyNkZWZpbmUgRFM0NTEwX1BVTExVUAkJCQkweEYwCisjZGVmaW5lIERTNDUxMF9QVUxMVVBfRElTCQkJMHgwMAorI2RlZmluZSBEUzQ1MTBfUFVMTFVQX0VOCQkJMHgwMQorI2RlZmluZSBEUzQ1MTBfUlNUREVMQVkJCQkJMHhGMQorI2RlZmluZSBEUzQ1MTBfUlNUREVMQVlfTUFTSwkJCTB4MDMKKyNkZWZpbmUgRFM0NTEwX1JTVERFTEFZXzEyNQkJCTB4MDAKKyNkZWZpbmUgRFM0NTEwX1JTVERFTEFZXzI1MAkJCTB4MDEKKyNkZWZpbmUgRFM0NTEwX1JTVERFTEFZXzUwMAkJCTB4MDIKKyNkZWZpbmUgRFM0NTEwX1JTVERFTEFZXzEwMDAJCQkweDAzCisjZGVmaW5lIERTNDUxMF9JTzMJCQkJMHhGNAorI2RlZmluZSBEUzQ1MTBfSU8yCQkJCTB4RjUKKyNkZWZpbmUgRFM0NTEwX0lPMQkJCQkweEY2CisjZGVmaW5lIERTNDUxMF9JTzAJCQkJMHhGNworCisvKiBTdGF0dXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgZnJvbSAweGY4IC0gMHhmOSovCisjZGVmaW5lIERTNDUxMF9JT19TVEFUVVMJCQkweEY4CisjZGVmaW5lIERTNDUxMF9DRkcJCQkJMHhGOQorI2RlZmluZSBEUzQ1MTBfQ0ZHX1JFQURZCQkJMHg4MAorI2RlZmluZSBEUzQ1MTBfQ0ZHX1RSSVBfUE9JTlQJCQkweDQwCisjZGVmaW5lIERTNDUxMF9DRkdfUkVTRVQJCQkweDIwCisjZGVmaW5lIERTNDUxMF9DRkdfU0VFCQkJCTB4MTAKKyNkZWZpbmUgRFM0NTEwX0NGR19TV1JTVAkJCTB4MDgKKworLyogU1JBTSBmcm9tIDB4ZmEgLSAweGZmICovCisjZGVmaW5lIERTNDUxMF9TUkFNCQkJCTB4ZmEKKyNkZWZpbmUgRFM0NTEwX1NSQU1fU0laRQkJCTB4MDYKKworaW50IGRzNDUxMF9tZW1fd3JpdGUodWludDhfdCBjaGlwLCBpbnQgb2Zmc2V0LCB1aW50OF90ICpidWYsIGludCBjb3VudCk7CitpbnQgZHM0NTEwX21lbV9yZWFkKHVpbnQ4X3QgY2hpcCwgaW50IG9mZnNldCwgdWludDhfdCAqYnVmLCBpbnQgY291bnQpOworaW50IGRzNDUxMF9zZWVfd3JpdGUodWludDhfdCBjaGlwLCB1aW50OF90IG52KTsKK2ludCBkczQ1MTBfcnN0ZGVsYXlfd3JpdGUodWludDhfdCBjaGlwLCB1aW50OF90IGRlbGF5KTsKK2ludCBkczQ1MTBfcHVsbHVwX3dyaXRlKHVpbnQ4X3QgY2hpcCwgdWludDhfdCB2YWwpOworaW50IGRzNDUxMF9wdWxsdXBfcmVhZCh1aW50OF90IGNoaXApOworaW50IGRzNDUxMF9ncGlvX3dyaXRlKHVpbnQ4X3QgY2hpcCwgdWludDhfdCB2YWwpOworaW50IGRzNDUxMF9ncGlvX3JlYWQodWludDhfdCBjaGlwKTsKK2ludCBkczQ1MTBfZ3Bpb19yZWFkX3ZhbCh1aW50OF90IGNoaXApOworCisjZW5kaWYgLyogX19EUzQ1MTBfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZTUwMC5oIGIvaW5jbHVkZS9lNTAwLmgKaW5kZXggMTk3MWVlZS4uNGM1ZWViNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9lNTAwLmgKKysrIGIvaW5jbHVkZS9lNTAwLmgKQEAgLTgsMTEgKzgsMTYgQEAKIAogI2lmbmRlZiBfX0FTU0VNQkxZX18KIAorI2lmbmRlZiBDT05GSUdfTlVNX0NQVVMKKyNkZWZpbmUgQ09ORklHX05VTV9DUFVTIDEKKyNlbmRpZgorCiB0eXBlZGVmIHN0cnVjdAogewotICB1bnNpZ25lZCBsb25nIGZyZXFQcm9jZXNzb3I7CisgIHVuc2lnbmVkIGxvbmcgZnJlcVByb2Nlc3NvcltDT05GSUdfTlVNX0NQVVNdOwogICB1bnNpZ25lZCBsb25nIGZyZXFTeXN0ZW1CdXM7CiAgIHVuc2lnbmVkIGxvbmcgZnJlcUREUkJ1czsKKyAgdW5zaWduZWQgbG9uZyBmcmVxTG9jYWxCdXM7CiB9IE1QQzg1eHhfU1lTX0lORk87CiAKICNlbmRpZiAgLyogX0FTTUxBTkdVQUdFICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2kyYy5oIGIvaW5jbHVkZS9pMmMuaAppbmRleCA4ZDZmODY3Li5mYWQyZDU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2kyYy5oCisrKyBiL2luY2x1ZGUvaTJjLmgKQEAgLTc2LDYgKzc2LDIwIEBACiAjICBkZWZpbmUgSTJDX1NPRlRfREVDTEFSQVRJT05TCiAjIGVuZGlmCiAjZW5kaWYKKworI2lmZGVmIENPTkZJR184eHgKKy8qIFNldCBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIEkyQyBidXMgc3BlZWQgYW5kIHNsYXZlIGFkZHJlc3Mgb24gOHh4LiBJbiB0aGUKKyAqIGZ1dHVyZSwgd2UnbGwgZGVmaW5lIHRoZXNlIGluIGFsbCA4eHggYm9hcmQgY29uZmlnIGZpbGVzLgorICovCisjaWZuZGVmCUNPTkZJR19TWVNfSTJDX1NQRUVECisjZGVmaW5lCUNPTkZJR19TWVNfSTJDX1NQRUVECTUwMDAwCisjZW5kaWYKKworI2lmbmRlZglDT05GSUdfU1lTX0kyQ19TTEFWRQorI2RlZmluZQlDT05GSUdfU1lTX0kyQ19TTEFWRQkweEZFCisjZW5kaWYKKyNlbmRpZgorCiAvKgogICogSW5pdGlhbGl6YXRpb24sIG11c3QgYmUgY2FsbGVkIG9uY2Ugb24gc3RhcnQgdXAsIG1heSBiZSBjYWxsZWQKICAqIHJlcGVhdGVkbHkgdG8gY2hhbmdlIHRoZSBzcGVlZCBhbmQgc2xhdmUgYWRkcmVzc2VzLgpAQCAtMTMyLDggKzE0Niw1MiBAQAogLyoKICAqIFV0aWxpdHkgcm91dGluZXMgdG8gcmVhZC93cml0ZSByZWdpc3RlcnMuCiAgKi8KLXVjaGFyIGkyY19yZWdfcmVhZCAodWNoYXIgY2hpcCwgdWNoYXIgcmVnKTsKLXZvaWQgIGkyY19yZWdfd3JpdGUodWNoYXIgY2hpcCwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpOworc3RhdGljIGlubGluZSB1OCBpMmNfcmVnX3JlYWQodTggYWRkciwgdTggcmVnKQoreworCXU4IGJ1ZjsKKworI2lmZGVmIENPTkZJR184eHgKKwkvKiBNUEM4eHggbmVlZHMgdGhpcy4gIE1heWJlIG9uZSBkYXkgd2UgY2FuIGdldCByaWQgb2YgaXQuICovCisJaTJjX2luaXQoQ09ORklHX1NZU19JMkNfU1BFRUQsIENPTkZJR19TWVNfSTJDX1NMQVZFKTsKKyNlbmRpZgorCisjaWZkZWYgREVCVUcKKwlwcmludGYoIiVzOiBhZGRyPTB4JTAyeCwgcmVnPTB4JTAyeFxuIiwgX19mdW5jX18sIGFkZHIsIHJlZyk7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19CTEFDS0ZJTgorCS8qIFRoaXMgaWZkZWYgd2lsbCBiZWNvbWUgdW5uZWNjZXNzYXJ5IGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlCisJICogYmxhY2tmaW4gSTJDIGRyaXZlci4KKwkgKi8KKwlpMmNfcmVhZChhZGRyLCByZWcsIDAsICZidWYsIDEpOworI2Vsc2UKKwlpMmNfcmVhZChhZGRyLCByZWcsIDEsICZidWYsIDEpOworI2VuZGlmCisKKwlyZXR1cm4gYnVmOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaTJjX3JlZ193cml0ZSh1OCBhZGRyLCB1OCByZWcsIHU4IHZhbCkKK3sKKyNpZmRlZiBDT05GSUdfOHh4CisJLyogTVBDOHh4IG5lZWRzIHRoaXMuICBNYXliZSBvbmUgZGF5IHdlIGNhbiBnZXQgcmlkIG9mIGl0LiAqLworCWkyY19pbml0KENPTkZJR19TWVNfSTJDX1NQRUVELCBDT05GSUdfU1lTX0kyQ19TTEFWRSk7CisjZW5kaWYKKworI2lmZGVmIERFQlVHCisJcHJpbnRmKCIlczogYWRkcj0weCUwMngsIHJlZz0weCUwMngsIHZhbD0weCUwMnhcbiIsCisJICAgICAgIF9fZnVuY19fLCBhZGRyLCByZWcsIHZhbCk7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19CTEFDS0ZJTgorCS8qIFRoaXMgaWZkZWYgd2lsbCBiZWNvbWUgdW5uZWNjZXNzYXJ5IGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlCisJICogYmxhY2tmaW4gSTJDIGRyaXZlci4KKwkgKi8KKwlpMmNfd3JpdGUoYWRkciwgcmVnLCAwLCAmdmFsLCAxKTsKKyNlbHNlCisJaTJjX3dyaXRlKGFkZHIsIHJlZywgMSwgJnZhbCwgMSk7CisjZW5kaWYKK30KIAogLyoKICAqIEZ1bmN0aW9ucyBmb3Igc2V0dGluZyB0aGUgY3VycmVudCBJMkMgYnVzIGFuZCBpdHMgc3BlZWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaW1hZ2UuaCBiL2luY2x1ZGUvaW1hZ2UuaAppbmRleCA1NDMzNTU1Li40NjA5MjAwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ltYWdlLmgKKysrIGIvaW5jbHVkZS9pbWFnZS5oCkBAIC01MCwxMCArNTAsNiBAQAogCiAjZW5kaWYgLyogVVNFX0hPU1RDQyAqLwogCi0jaWYgZGVmaW5lZChDT05GSUdfRklUKSAmJiAhZGVmaW5lZChDT05GSUdfT0ZfTElCRkRUKQotI2Vycm9yICJDT05GSUdfT0ZfTElCRkRUIG5vdCBlbmFibGVkLCByZXF1aXJlZCBieSBDT05GSUdfRklUISIKLSNlbmRpZgotCiAjaW5jbHVkZSA8Y29tbWFuZC5oPgogCiAjaWYgZGVmaW5lZChDT05GSUdfRklUKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcmMzMi5oIGIvaW5jbHVkZS9saW51eC9jcmMzMi5oCmluZGV4IGUxMzMxNTcuLmFjNGFlZDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3JjMzIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NyYzMyLmgKQEAgLTYsMTAgKzYsMTAgQEAKICNkZWZpbmUgX0xJTlVYX0NSQzMyX0gKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0vLyNpbmNsdWRlIDxsaW51eC9iaXRyZXYuaD4KKy8qICNpbmNsdWRlIDxsaW51eC9iaXRyZXYuaD4gKi8KIAogZXh0ZXJuIHUzMiAgY3JjMzJfbGUodTMyIGNyYywgdW5zaWduZWQgY2hhciBjb25zdCAqcCwgc2l6ZV90IGxlbik7Ci0vL2V4dGVybiB1MzIgIGNyYzMyX2JlKHUzMiBjcmMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsIHNpemVfdCBsZW4pOworLyogZXh0ZXJuIHUzMiAgY3JjMzJfYmUodTMyIGNyYywgdW5zaWduZWQgY2hhciBjb25zdCAqcCwgc2l6ZV90IGxlbik7ICovCiAKICNkZWZpbmUgY3JjMzIoc2VlZCwgZGF0YSwgbGVuZ3RoKSAgY3JjMzJfbGUoc2VlZCwgKHVuc2lnbmVkIGNoYXIgY29uc3QgKilkYXRhLCBsZW5ndGgpCiAKQEAgLTIxLDcgKzIxLDcgQEAKICAqIGlzIGluIGJpdCBuciAwXSwgdGh1cyBpdCBtdXN0IGJlIHJldmVyc2VkIGJlZm9yZSB1c2UuIEV4Y2VwdCBmb3IKICAqIG5pY3MgdGhhdCBiaXQgc3dhcCB0aGUgcmVzdWx0IGludGVybmFsbHkuLi4KICAqLwotLy8jZGVmaW5lIGV0aGVyX2NyYyhsZW5ndGgsIGRhdGEpICAgIGJpdHJldjMyKGNyYzMyX2xlKH4wLCBkYXRhLCBsZW5ndGgpKQotLy8jZGVmaW5lIGV0aGVyX2NyY19sZShsZW5ndGgsIGRhdGEpIGNyYzMyX2xlKH4wLCBkYXRhLCBsZW5ndGgpCisvKiAjZGVmaW5lIGV0aGVyX2NyYyhsZW5ndGgsIGRhdGEpICAgIGJpdHJldjMyKGNyYzMyX2xlKH4wLCBkYXRhLCBsZW5ndGgpKSAqLworLyogI2RlZmluZSBldGhlcl9jcmNfbGUobGVuZ3RoLCBkYXRhKSBjcmMzMl9sZSh+MCwgZGF0YSwgbGVuZ3RoKSAqLwogCiAjZW5kaWYgLyogX0xJTlVYX0NSQzMyX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL2JibS5oIGIvaW5jbHVkZS9saW51eC9tdGQvYmJtLmgKaW5kZXggYWJmOGYxYS4uN2RiMjU0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvYmJtLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvYmJtLmgKQEAgLTE4LDggKzE4LDggQEAKICNkZWZpbmUgX19MSU5VWF9NVERfQkJNX0gKIAogLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIE5BTkQgY2hpcHMgaW4gYW4gYXJyYXkgKi8KLSNpZm5kZWYgTkFORF9NQVhfQ0hJUFMKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTgKKyNpZm5kZWYgQ09ORklHX1NZU19OQU5EX01BWF9DSElQUworI2RlZmluZSBDT05GSUdfU1lTX05BTkRfTUFYX0NISVBTCTEKICNlbmRpZgogCiAvKioKQEAgLTQ4LDEwICs0OCwxMCBAQAogICovCiBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgewogCWludCBvcHRpb25zOwotCWludCBwYWdlc1tOQU5EX01BWF9DSElQU107CisJaW50IHBhZ2VzW0NPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFNdOwogCWludCBvZmZzOwogCWludCB2ZXJvZmZzOwotCXVpbnQ4X3QgdmVyc2lvbltOQU5EX01BWF9DSElQU107CisJdWludDhfdCB2ZXJzaW9uW0NPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFNdOwogCWludCBsZW47CiAJaW50IG1heGJsb2NrczsKIAlpbnQgcmVzZXJ2ZWRfYmxvY2tfY29kZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaCBiL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaAppbmRleCAyNGFkMmJkLi5hNGFkNTcxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCkBAIC00NiwxMSArNDYsNiBAQAogLyogSW50ZXJuYWwgaGVscGVyIGZvciBib2FyZCBkcml2ZXJzIHdoaWNoIG5lZWQgdG8gb3ZlcnJpZGUgY29tbWFuZCBmdW5jdGlvbiAqLwogZXh0ZXJuIHZvaWQgbmFuZF93YWl0X3JlYWR5KHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKIAotLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIE5BTkQgY2hpcHMgaW4gYW4gYXJyYXkgKi8KLSNpZm5kZWYgTkFORF9NQVhfQ0hJUFMKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTgKLSNlbmRpZgotCiAvKiBUaGlzIGNvbnN0YW50IGRlY2xhcmVzIHRoZSBtYXguIG9vYnNpemUgLyBwYWdlLCB3aGljaAogICogaXMgc3VwcG9ydGVkIG5vdy4gSWYgeW91IGFkZCBhIGNoaXAgd2l0aCBiaWdnZXIgb29ic2l6ZS9wYWdlCiAgKiBhZGp1c3QgdGhpcyBhY2NvcmRpbmdseS4KQEAgLTQ3NywxMCArNDcyLDYgQEAKIGV4dGVybiBzdHJ1Y3QgbmFuZF9mbGFzaF9kZXYgbmFuZF9mbGFzaF9pZHNbXTsKIGV4dGVybiBzdHJ1Y3QgbmFuZF9tYW51ZmFjdHVyZXJzIG5hbmRfbWFudWZfaWRzW107CiAKLSNpZm5kZWYgTkFORF9NQVhfQ0hJUFMKLSNkZWZpbmUgTkFORF9NQVhfQ0hJUFMgOAotI2VuZGlmCi0KIGV4dGVybiBpbnQgbmFuZF9zY2FuX2JidChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICpiZCk7CiBleHRlcm4gaW50IG5hbmRfdXBkYXRlX2JidChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mZnMpOwogZXh0ZXJuIGludCBuYW5kX2RlZmF1bHRfYmJ0KHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL25hbmRfbGVnYWN5LmggYi9pbmNsdWRlL2xpbnV4L210ZC9uYW5kX2xlZ2FjeS5oCmluZGV4IDk5ZWFmYmIuLjQzMzQ0NDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbXRkL25hbmRfbGVnYWN5LmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvbmFuZF9sZWdhY3kuaApAQCAtNDAsNiArNDAsMTEgQEAKICNlcnJvciBUaGlzIG1vZHVsZSBpcyBmb3IgdGhlIGxlZ2FjeSBOQU5EIHN1cHBvcnQKICNlbmRpZgogCisvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgTkFORCBjaGlwcyBpbiBhbiBhcnJheSAqLworI2lmbmRlZiBDT05GSUdfU1lTX05BTkRfTUFYX0NISVBTCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFMJMQorI2VuZGlmCisKIC8qCiAgKiBTdGFuZGFyZCBOQU5EIGZsYXNoIGNvbW1hbmRzCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL29uZW5hbmQuaCBiL2luY2x1ZGUvbGludXgvbXRkL29uZW5hbmQuaAppbmRleCA0NDY3YzJiLi4yNTk3ZTM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9vbmVuYW5kLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvb25lbmFuZC5oCkBAIC0zMCwxNCArMzAsMTAgQEAKIAogLyoqCiAgKiBzdHJ1Y3Qgb25lbmFuZF9idWZmZXJyYW0gLSBPbmVOQU5EIEJ1ZmZlclJBTSBEYXRhCi0gKiBAcGFyYW0gYmxvY2sJCWJsb2NrIGFkZHJlc3MgaW4gQnVmZmVyUkFNCi0gKiBAcGFyYW0gcGFnZQkJcGFnZSBhZGRyZXNzIGluIEJ1ZmZlclJBTQotICogQHBhcmFtIHZhbGlkCQl2YWxpZCBmbGFnCisgKiBAcGFyYW0gYmxvY2twYWdlCWJsb2NrICYgcGFnZSBhZGRyZXNzIGluIEJ1ZmZlclJBTQogICovCiBzdHJ1Y3Qgb25lbmFuZF9idWZmZXJyYW0gewotCWludCBibG9jazsKLQlpbnQgcGFnZTsKLQlpbnQgdmFsaWQ7CisJaW50IGJsb2NrcGFnZTsKIH07CiAKIC8qKgpAQCAtNzAsNiArNjYsOCBAQAogCXZvaWQgX19pb21lbSAqYmFzZTsKIAl1bnNpZ25lZCBpbnQgY2hpcHNpemU7CiAJdW5zaWduZWQgaW50IGRldmljZV9pZDsKKwl1bnNpZ25lZCBpbnQgdmVyc2lvbl9pZDsKKwl1bnNpZ25lZCBpbnQgZGVuc2l0eV9tYXNrOwogCXVuc2lnbmVkIGludCBvcHRpb25zOwogCiAJdW5zaWduZWQgaW50IGVyYXNlX3NoaWZ0OwpAQCAtODEsMjYgKzc5LDM2IEBACiAJdW5zaWduZWQgaW50IGJ1ZmZlcnJhbV9pbmRleDsKIAlzdHJ1Y3Qgb25lbmFuZF9idWZmZXJyYW0gYnVmZmVycmFtW01BWF9CVUZGRVJSQU1dOwogCi0JaW50ICgqY29tbWFuZCkgKHN0cnVjdCBtdGRfaW5mbyAqIG10ZCwgaW50IGNtZCwgbG9mZl90IGFkZHJlc3MsCisJaW50ICgqY29tbWFuZCkgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY21kLCBsb2ZmX3QgYWRkcmVzcywKIAkJCXNpemVfdCBsZW4pOwotCWludCAoKndhaXQpIChzdHJ1Y3QgbXRkX2luZm8gKiBtdGQsIGludCBzdGF0ZSk7Ci0JaW50ICgqcmVhZF9idWZmZXJyYW0pIChzdHJ1Y3QgbXRkX2luZm8gKiBtdGQsIGludCBhcmVhLAorCWludCAoKndhaXQpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHN0YXRlKTsKKwlpbnQgKCpiYnRfd2FpdCkgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc3RhdGUpOworCWludCAoKnJlYWRfYnVmZmVycmFtKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBhZGRyLCBpbnQgYXJlYSwKIAkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBvZmZzZXQsIHNpemVfdCBjb3VudCk7Ci0JaW50ICgqd3JpdGVfYnVmZmVycmFtKSAoc3RydWN0IG10ZF9pbmZvICogbXRkLCBpbnQgYXJlYSwKKwlpbnQgKCpyZWFkX3NwYXJlcmFtKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBhZGRyLCBpbnQgYXJlYSwKKwkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBvZmZzZXQsIHNpemVfdCBjb3VudCk7CisJaW50ICgqd3JpdGVfYnVmZmVycmFtKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBhZGRyLCBpbnQgYXJlYSwKIAkJCQljb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIGludCBvZmZzZXQsCiAJCQkJc2l6ZV90IGNvdW50KTsKLQl1bnNpZ25lZCBzaG9ydCAoKnJlYWRfd29yZCkgKHZvaWQgX19pb21lbSAqIGFkZHIpOwotCXZvaWQgKCp3cml0ZV93b3JkKSAodW5zaWduZWQgc2hvcnQgdmFsdWUsIHZvaWQgX19pb21lbSAqIGFkZHIpOwotCXZvaWQgKCptbWNvbnRyb2wpIChzdHJ1Y3QgbXRkX2luZm8gKiBtdGQsIGludCBzeW5jX3JlYWQpOworCXVuc2lnbmVkIHNob3J0ICgqcmVhZF93b3JkKSAodm9pZCBfX2lvbWVtICphZGRyKTsKKwl2b2lkICgqd3JpdGVfd29yZCkgKHVuc2lnbmVkIHNob3J0IHZhbHVlLCB2b2lkIF9faW9tZW0gKmFkZHIpOworCXZvaWQgKCptbWNvbnRyb2wpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHN5bmNfcmVhZCk7CiAJaW50ICgqYmxvY2tfbWFya2JhZCkoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMpOwogCWludCAoKnNjYW5fYmJ0KShzdHJ1Y3QgbXRkX2luZm8gKm10ZCk7CiAKKwl1bnNpZ25lZCBjaGFyCQkqbWFpbl9idWY7CisJdW5zaWduZWQgY2hhcgkJKnNwYXJlX2J1ZjsKKyNpZmRlZiBET05UX1VTRV9VQk9PVAorCXNwaW5sb2NrX3QgY2hpcF9sb2NrOworCXdhaXRfcXVldWVfaGVhZF90IHdxOworI2VuZGlmCiAJaW50IHN0YXRlOwotCXVuc2lnbmVkIGNoYXIgKnBhZ2VfYnVmOwotCXVuc2lnbmVkIGNoYXIgKm9vYl9idWY7CisJdW5zaWduZWQgY2hhcgkJKnBhZ2VfYnVmOworCXVuc2lnbmVkIGNoYXIJCSpvb2JfYnVmOwogCiAJc3RydWN0IG5hbmRfb29iaW5mbyAqYXV0b29vYjsKLQlzdHJ1Y3QgbmFuZF9lY2NsYXlvdXQgKmVjY2xheW91dDsKKwlpbnQJCQlzdWJwYWdlc2l6ZTsKKwlzdHJ1Y3QgbmFuZF9lY2NsYXlvdXQJKmVjY2xheW91dDsKIAogCXZvaWQgKmJibTsKIApAQCAtMTI1LDcgKzEzMyw5IEBACiAvKgogICogT3B0aW9ucyBiaXRzCiAgKi8KLSNkZWZpbmUgT05FTkFORF9DT05UX0xPQ0sJCSgweDAwMDEpCisjZGVmaW5lIE9ORU5BTkRfSEFTX0NPTlRfTE9DSwkJKDB4MDAwMSkKKyNkZWZpbmUgT05FTkFORF9IQVNfVU5MT0NLX0FMTAkJKDB4MDAwMikKKyNkZWZpbmUgT05FTkFORF9IQVNfMlBMQU5FCQkoMHgwMDA0KQogI2RlZmluZSBPTkVOQU5EX1BBR0VCVUZfQUxMT0MJCSgweDEwMDApCiAjZGVmaW5lIE9ORU5BTkRfT09CQlVGX0FMTE9DCQkoMHgyMDAwKQogCkBAIC0xMzMsNyArMTQzLDYgQEAKICAqIE9uZU5BTkQgRmxhc2ggTWFudWZhY3R1cmVyIElEIENvZGVzCiAgKi8KICNkZWZpbmUgT05FTkFORF9NRlJfU0FNU1VORwkweGVjCi0jZGVmaW5lIE9ORU5BTkRfTUZSX1VOS05PV04JMHgwMAogCiAvKioKICAqIHN0cnVjdCBuYW5kX21hbnVmYWN0dXJlcnMgLSBOQU5EIEZsYXNoIE1hbnVmYWN0dXJlciBJRCBTdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL29uZW5hbmRfcmVncy5oIGIvaW5jbHVkZS9saW51eC9tdGQvb25lbmFuZF9yZWdzLmgKaW5kZXggYTI0NWUxNC4uZmM2MzM4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvb25lbmFuZF9yZWdzLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvb25lbmFuZF9yZWdzLmgKQEAgLTExOSw2ICsxMTksNyBAQAogI2RlZmluZSBPTkVOQU5EX0NNRF9VTkxPQ0sJCSgweDIzKQogI2RlZmluZSBPTkVOQU5EX0NNRF9MT0NLCQkoMHgyQSkKICNkZWZpbmUgT05FTkFORF9DTURfTE9DS19USUdIVAkJKDB4MkMpCisjZGVmaW5lIE9ORU5BTkRfQ01EX1VOTE9DS19BTEwJCSgweDI3KQogI2RlZmluZSBPTkVOQU5EX0NNRF9FUkFTRQkJKDB4OTQpCiAjZGVmaW5lIE9ORU5BTkRfQ01EX1JFU0VUCQkoMHhGMCkKICNkZWZpbmUgT05FTkFORF9DTURfUkVBRElECQkoMHg5MCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL3BhcnRpdGlvbnMuaCBiL2luY2x1ZGUvbGludXgvbXRkL3BhcnRpdGlvbnMuaAppbmRleCBiNDFlNWY1Li4xMDE2Njc1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9wYXJ0aXRpb25zLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvcGFydGl0aW9ucy5oCkBAIC03Niw5ICs3Niw5IEBACiBzdHJ1Y3QgZGV2aWNlX25vZGU7CiAKIGludCBfX2RldmluaXQgb2ZfbXRkX3BhcnNlX3BhcnRpdGlvbnMoc3RydWN0IGRldmljZSAqZGV2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiAqKnBwYXJ0cyk7CisJCQkJICAgICAgc3RydWN0IG10ZF9pbmZvICptdGQsCisJCQkJICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLAorCQkJCSAgICAgIHN0cnVjdCBtdGRfcGFydGl0aW9uICoqcHBhcnRzKTsKICNlbmRpZgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL3ViaS5oIGIvaW5jbHVkZS9saW51eC9tdGQvdWJpLmgKaW5kZXggYTAxNzg5MS4uNGIzZTA2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvdWJpLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvdWJpLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19MSU5VWF9VQklfSF9fCiAjZGVmaW5lIF9fTElOVVhfVUJJX0hfXwogCi0vLyNpbmNsdWRlIDxhc20vaW9jdGwuaD4KKy8qICNpbmNsdWRlIDxhc20vaW9jdGwuaD4gKi8KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPG10ZC91YmktdXNlci5oPgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wYzgzeHguaCBiL2luY2x1ZGUvbXBjODN4eC5oCmluZGV4IDQzNTUzZjUuLjE5MTQ4OGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbXBjODN4eC5oCisrKyBiL2luY2x1ZGUvbXBjODN4eC5oCkBAIC03NTEsOSArNzUxLDYgQEAKICNkZWZpbmUgU0NDUl9VU0JEUkNNXzIJCQkweDAwODAwMDAwCiAjZGVmaW5lIFNDQ1JfVVNCRFJDTV8zCQkJMHgwMGMwMDAwMAogCi0jZGVmaW5lIFNDQ1JfUENJRVhQMUNNCQkJMHgwMDMwMDAwMAotI2RlZmluZSBTQ0NSX1BDSUVYUDJDTQkJCTB4MDAwYzAwMDAKLQogI2RlZmluZSBTQ0NSX1NBVEExQ00JCQkweDAwMDAzMDAwCiAjZGVmaW5lIFNDQ1JfU0FUQTFDTV9TSElGVAkJMTIKICNkZWZpbmUgU0NDUl9TQVRBQ00JCQkweDAwMDAzYzAwCkBAIC04MDAsNiArNzk3LDE3IEBACiAjZGVmaW5lIFNDQ1JfVVNCRFJDTV8yCQkJMHgwMDgwMDAwMAogI2RlZmluZSBTQ0NSX1VTQkRSQ01fMwkJCTB4MDBjMDAwMDAKIAorLyogQWxsIG9mIHRoZSBmb3VyIFNBVEEgY29udHJvbGxlcnMgbXVzdCBoYXZlIHRoZSBzYW1lIGNsb2NrIHJhdGlvICovCisjZGVmaW5lIFNDQ1JfU0FUQTFDTQkJCTB4MDAwMDAwYzAKKyNkZWZpbmUgU0NDUl9TQVRBMUNNX1NISUZUCQk2CisjZGVmaW5lIFNDQ1JfU0FUQUNNCQkJMHgwMDAwMDBmZgorI2RlZmluZSBTQ0NSX1NBVEFDTV9TSElGVAkJMAorI2RlZmluZSBTQ0NSX1NBVEFDTV8wCQkJMHgwMDAwMDAwMAorI2RlZmluZSBTQ0NSX1NBVEFDTV8xCQkJMHgwMDAwMDA1NQorI2RlZmluZSBTQ0NSX1NBVEFDTV8yCQkJMHgwMDAwMDBhYQorI2RlZmluZSBTQ0NSX1NBVEFDTV8zCQkJMHgwMDAwMDBmZgorI2VuZGlmCisKICNkZWZpbmUgU0NDUl9QQ0lFWFAxQ00JCQkweDAwMzAwMDAwCiAjZGVmaW5lIFNDQ1JfUENJRVhQMUNNX1NISUZUCQkyMAogI2RlZmluZSBTQ0NSX1BDSUVYUDFDTV8wCQkweDAwMDAwMDAwCkBAIC04MTQsMTcgKzgyMiw2IEBACiAjZGVmaW5lIFNDQ1JfUENJRVhQMkNNXzIJCTB4MDAwODAwMDAKICNkZWZpbmUgU0NDUl9QQ0lFWFAyQ01fMwkJMHgwMDBjMDAwMAogCi0vKiBBbGwgb2YgdGhlIGZvdXIgU0FUQSBjb250cm9sbGVycyBtdXN0IGhhdmUgdGhlIHNhbWUgY2xvY2sgcmF0aW8gKi8KLSNkZWZpbmUgU0NDUl9TQVRBMUNNCQkJMHgwMDAwMDBjMAotI2RlZmluZSBTQ0NSX1NBVEExQ01fU0hJRlQJCTYKLSNkZWZpbmUgU0NDUl9TQVRBQ00JCQkweDAwMDAwMGZmCi0jZGVmaW5lIFNDQ1JfU0FUQUNNX1NISUZUCQkwCi0jZGVmaW5lIFNDQ1JfU0FUQUNNXzAJCQkweDAwMDAwMDAwCi0jZGVmaW5lIFNDQ1JfU0FUQUNNXzEJCQkweDAwMDAwMDU1Ci0jZGVmaW5lIFNDQ1JfU0FUQUNNXzIJCQkweDAwMDAwMGFhCi0jZGVmaW5lIFNDQ1JfU0FUQUNNXzMJCQkweDAwMDAwMGZmCi0jZW5kaWYKLQogLyogQ1NuX0JETlMgLSBDaGlwIFNlbGVjdCBtZW1vcnkgQm91bmRzIFJlZ2lzdGVyCiAgKi8KICNkZWZpbmUgQ1NCTkRTX1NBCQkJMHgwMEZGMDAwMApAQCAtMTE3MCw5ICsxMTY3LDUyIEBACiAjZGVmaW5lIEREUkNEUl9NX09EUgkJMHgwMDAwMDAwMgogI2RlZmluZSBERFJDRFJfUV9EUk4JCTB4MDAwMDAwMDEKIAorLyogUENJRSBCcmlkZ2UgUmVnaXN0ZXIKKyovCisjZGVmaW5lIFBFWF9DU0JfQ1RSTF9PQlBJT0UJMHgwMDAwMDAwMQorI2RlZmluZSBQRVhfQ1NCX0NUUkxfSUJQSU9FCTB4MDAwMDAwMDIKKyNkZWZpbmUgUEVYX0NTQl9DVFJMX1dETUFFCTB4MDAwMDAwMDQKKyNkZWZpbmUgUEVYX0NTQl9DVFJMX1JETUFFCTB4MDAwMDAwMDgKKworI2RlZmluZSBQRVhfQ1NCX09CQ1RSTF9QSU9FCTB4MDAwMDAwMDEKKyNkZWZpbmUgUEVYX0NTQl9PQkNUUkxfTUVNV0UJMHgwMDAwMDAwMgorI2RlZmluZSBQRVhfQ1NCX09CQ1RSTF9JT1dFCTB4MDAwMDAwMDQKKyNkZWZpbmUgUEVYX0NTQl9PQkNUUkxfQ0ZHV0UJMHgwMDAwMDAwOAorCisjZGVmaW5lIFBFWF9DU0JfSUJDVFJMX1BJT0UJMHgwMDAwMDAwMQorCisjZGVmaW5lIFBFWF9PV0FSX0VOCQkweDAwMDAwMDAxCisjZGVmaW5lIFBFWF9PV0FSX1RZUEVfQ0ZHCTB4MDAwMDAwMDAKKyNkZWZpbmUgUEVYX09XQVJfVFlQRV9JTwkweDAwMDAwMDAyCisjZGVmaW5lIFBFWF9PV0FSX1RZUEVfTUVNCTB4MDAwMDAwMDQKKyNkZWZpbmUgUEVYX09XQVJfUkxYTwkJMHgwMDAwMDAwOAorI2RlZmluZSBQRVhfT1dBUl9OQU5QCQkweDAwMDAwMDEwCisjZGVmaW5lIFBFWF9PV0FSX1NJWkUJCTB4RkZGRkYwMDAKKworI2RlZmluZSBQRVhfSVdBUl9FTgkJMHgwMDAwMDAwMQorI2RlZmluZSBQRVhfSVdBUl9UWVBFX0lOVAkweDAwMDAwMDAwCisjZGVmaW5lIFBFWF9JV0FSX1RZUEVfUEYJMHgwMDAwMDAwNAorI2RlZmluZSBQRVhfSVdBUl9UWVBFX05PX1BGCTB4MDAwMDAwMDYKKyNkZWZpbmUgUEVYX0lXQVJfTlNPVgkJMHgwMDAwMDAwOAorI2RlZmluZSBQRVhfSVdBUl9OU05QCQkweDAwMDAwMDEwCisjZGVmaW5lIFBFWF9JV0FSX1NJWkUJCTB4RkZGRkYwMDAKKyNkZWZpbmUgUEVYX0lXQVJfU0laRV8xTQkweDAwMEZGMDAwCisjZGVmaW5lIFBFWF9JV0FSX1NJWkVfMk0JMHgwMDFGRjAwMAorI2RlZmluZSBQRVhfSVdBUl9TSVpFXzRNCTB4MDAzRkYwMDAKKyNkZWZpbmUgUEVYX0lXQVJfU0laRV84TQkweDAwN0ZGMDAwCisjZGVmaW5lIFBFWF9JV0FSX1NJWkVfMTZNCTB4MDBGRkYwMDAKKyNkZWZpbmUgUEVYX0lXQVJfU0laRV8zMk0JMHgwMUZGRjAwMAorI2RlZmluZSBQRVhfSVdBUl9TSVpFXzY0TQkweDAzRkZGMDAwCisjZGVmaW5lIFBFWF9JV0FSX1NJWkVfMTI4TQkweDA3RkZGMDAwCisjZGVmaW5lIFBFWF9JV0FSX1NJWkVfMjU2TQkweDBGRkZGMDAwCisKKyNkZWZpbmUgUEVYX0dDTEtfUkFUSU8JCTB4NDQwCisKICNpZm5kZWYgX19BU1NFTUJMWV9fCiBzdHJ1Y3QgcGNpX3JlZ2lvbjsKIHZvaWQgbXBjODN4eF9wY2lfaW5pdChpbnQgbnVtX2J1c2VzLCBzdHJ1Y3QgcGNpX3JlZ2lvbiAqKnJlZywgaW50IHdhcm1ib290KTsKK3ZvaWQgbXBjODN4eF9wY2lzbGF2ZV91bmxvY2soaW50IGJ1cyk7Cit2b2lkIG1wYzgzeHhfcGNpZV9pbml0KGludCBudW1fYnVzZXMsIHN0cnVjdCBwY2lfcmVnaW9uICoqcmVnLCBpbnQgd2FybWJvb3QpOwogI2VuZGlmCiAKICNlbmRpZgkvKiBfX01QQzgzWFhfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wYzg2eHguaCBiL2luY2x1ZGUvbXBjODZ4eC5oCmluZGV4IGYxMTlkNWIuLmE2ZmRlYTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbXBjODZ4eC5oCisrKyBiL2luY2x1ZGUvbXBjODZ4eC5oCkBAIC04NCw2ICs4NCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAJdW5zaWduZWQgbG9uZyBmcmVxUHJvY2Vzc29yOwogCXVuc2lnbmVkIGxvbmcgZnJlcVN5c3RlbUJ1czsKKwl1bnNpZ25lZCBsb25nIGZyZXFMb2NhbEJ1czsKIH0gTVBDODZ4eF9TWVNfSU5GTzsKIAogI2RlZmluZSBsMWljYWNoZV9lbmFibGUJaWNhY2hlX2VuYWJsZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uYW5kLmggYi9pbmNsdWRlL25hbmQuaAppbmRleCBiNGYzMTZmLi4wNjVhNDJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25hbmQuaAorKysgYi9pbmNsdWRlL25hbmQuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KICNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgogCitleHRlcm4gaW50IGJvYXJkX25hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKTsKKwogdHlwZWRlZiBzdHJ1Y3QgbXRkX2luZm8gbmFuZF9pbmZvX3Q7CiAKIGV4dGVybiBpbnQgbmFuZF9jdXJyX2RldmljZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvb25lbmFuZF91Ym9vdC5oIGIvaW5jbHVkZS9vbmVuYW5kX3Vib290LmgKaW5kZXggZTk2MDI1Ny4uNWE0ZmRlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9vbmVuYW5kX3Vib290LmgKKysrIGIvaW5jbHVkZS9vbmVuYW5kX3Vib290LmgKQEAgLTE1LDI1ICsxNSwyOSBAQAogI2RlZmluZSBfX1VCT09UX09ORU5BTkRfSAogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLmg+CiAKIHN0cnVjdCBtdGRfaW5mbzsKIHN0cnVjdCBlcmFzZV9pbmZvOworc3RydWN0IG9uZW5hbmRfY2hpcDsKIAogZXh0ZXJuIHN0cnVjdCBtdGRfaW5mbyBvbmVuYW5kX210ZDsKIAorLyogYm9hcmQgKi8KK2V4dGVybiB2b2lkIG9uZW5hbmRfYm9hcmRfaW5pdChzdHJ1Y3QgbXRkX2luZm8gKik7CisKIC8qIEZ1bmN0aW9ucyAqLwogZXh0ZXJuIHZvaWQgb25lbmFuZF9pbml0KHZvaWQpOwogZXh0ZXJuIGludCBvbmVuYW5kX3JlYWQoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLAogCQkJc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKiBidWYpOwotZXh0ZXJuIGludCBvbmVuYW5kX3JlYWRfb29iKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgZnJvbSwKLQkJCSAgICBzdHJ1Y3QgbXRkX29vYl9vcHMgKm9wcyk7CitleHRlcm4gaW50IG9uZW5hbmRfcmVhZF9vb2Ioc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzdHJ1Y3QgbXRkX29vYl9vcHMgKm9wcyk7CiBleHRlcm4gaW50IG9uZW5hbmRfd3JpdGUoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLAogCQkJIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmKTsKIGV4dGVybiBpbnQgb25lbmFuZF9lcmFzZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IGVyYXNlX2luZm8gKmluc3RyKTsKIAotZXh0ZXJuIGludCBvbmVuYW5kX3VubG9jayhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mcywgc2l6ZV90IGxlbik7CitleHRlcm4gY2hhciAqb25lbmFuZF9wcmludF9kZXZpY2VfaW5mbyhpbnQgZGV2aWNlLCBpbnQgdmVyc2lvbik7CiAKLWV4dGVybiBjaGFyICpvbmVuYW5kX3ByaW50X2RldmljZV9pbmZvKGludCBkZXZpY2UpOworLyogUzNDNjR4eCAqLworZXh0ZXJuIHZvaWQgczNjNjR4eF9vbmVuYW5kX2luaXQoc3RydWN0IG10ZF9pbmZvICopOworZXh0ZXJuIHZvaWQgczNjNjR4eF9zZXRfd2lkdGhfcmVncyhzdHJ1Y3Qgb25lbmFuZF9jaGlwICopOwogCiAjZW5kaWYgLyogX19VQk9PVF9PTkVOQU5EX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcGNhOTUzeC5oIGIvaW5jbHVkZS9wY2E5NTN4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyYjU4YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvcGNhOTUzeC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBWZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19QQ0E5NTNYX0hfCisjZGVmaW5lIF9fUENBOTUzWF9IXworCisjZGVmaW5lIFBDQTk1M1hfSU4JCTB4MDAKKyNkZWZpbmUgUENBOTUzWF9PVVQJCTB4MDEKKyNkZWZpbmUgUENBOTUzWF9QT0wJCTB4MDIKKyNkZWZpbmUgUENBOTUzWF9DT05GCQkweDAzCisKKyNkZWZpbmUgUENBOTUzWF9PVVRfTE9XCQkwCisjZGVmaW5lIFBDQTk1M1hfT1VUX0hJR0gJMQorI2RlZmluZSBQQ0E5NTNYX1BPTF9OT1JNQUwJMAorI2RlZmluZSBQQ0E5NTNYX1BPTF9JTlZFUlQJMQorI2RlZmluZSBQQ0E5NTNYX0RJUl9PVVQJCTAKKyNkZWZpbmUgUENBOTUzWF9ESVJfSU4JCTEKKworaW50IHBjYTk1M3hfc2V0X3ZhbCh1OCBjaGlwLCB1aW50IG1hc2ssIHVpbnQgZGF0YSk7CitpbnQgcGNhOTUzeF9zZXRfcG9sKHU4IGNoaXAsIHVpbnQgbWFzaywgdWludCBkYXRhKTsKK2ludCBwY2E5NTN4X3NldF9kaXIodTggY2hpcCwgdWludCBtYXNrLCB1aW50IGRhdGEpOworaW50IHBjYTk1M3hfZ2V0X3ZhbCh1OCBjaGlwKTsKKworI2VuZGlmIC8qIF9fUENBOTUzWF9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wY2kuaCBiL2luY2x1ZGUvcGNpLmgKaW5kZXggZWViZThhOC4uMDcyMjczYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9wY2kuaAorKysgYi9pbmNsdWRlL3BjaS5oCkBAIC0zODIsNiArMzgyLDggQEAKIAogI2RlZmluZSBNQVhfUENJX1JFR0lPTlMJCTcKIAorI2RlZmluZSBJTkRJUkVDVF9UWVBFX05PX1BDSUVfTElOSwkxCisKIC8qCiAgKiBTdHJ1Y3R1cmUgb2YgYSBQQ0kgY29udHJvbGxlciAoaG9zdCBicmlkZ2UpCiAgKi8KQEAgLTM5NCw2ICszOTYsOCBAQAogCXZvbGF0aWxlIHVuc2lnbmVkIGludCAqY2ZnX2FkZHI7CiAJdm9sYXRpbGUgdW5zaWduZWQgY2hhciAqY2ZnX2RhdGE7CiAKKwlpbnQgaW5kaXJlY3RfdHlwZTsKKwogCXN0cnVjdCBwY2lfcmVnaW9uIHJlZ2lvbnNbTUFYX1BDSV9SRUdJT05TXTsKIAlpbnQgcmVnaW9uX2NvdW50OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Bvc3QuaCBiL2luY2x1ZGUvcG9zdC5oCmluZGV4IDk3NTgzYjcuLmZlOTYzMTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvcG9zdC5oCisrKyBiL2luY2x1ZGUvcG9zdC5oCkBAIC04MCw2ICs4MCwxOSBAQAogZXh0ZXJuIHVuc2lnbmVkIGludCBwb3N0X2xpc3Rfc2l6ZTsKIGV4dGVybiBpbnQgcG9zdF9ob3RrZXlzX3ByZXNzZWQodm9pZCk7CiAKKy8qCisgKiAgSWYgR0NDIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGEgdmVyc2lvbiBvZiBHQVMgdGhhdCBzdXBwb3J0cworICogdGhlIC5nbnVfYXR0cmlidXRlIGRpcmVjdGl2ZSwgaXQgd2lsbCB1c2UgdGhhdCBkaXJlY3RpdmUgdG8KKyAqIHJlY29yZCBjZXJ0YWluIHByb3BlcnRpZXMgb2YgdGhlIG91dHB1dCBjb2RlLgorICogIFRoaXMgZmVhdHVyZSBpcyBuZXcgdG8gR0NDIDQuMy4wLgorICogIC5nbnVfYXR0cmlidXRlIGlzIG5ldyB0byBHQVMgMi4xOC4KKyAqLworI2lmIChfX0dOVUNfXyA+PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDMpCisvKiBUYWdfR05VX1Bvd2VyX0FCSV9GUC9zb2Z0LWZsb2F0ICovCisjZGVmaW5lIEdOVV9GUE9TVF9BVFRSCWFzbSgiLmdudV9hdHRyaWJ1dGUJNCwgMiIpOworI2Vsc2UKKyNkZWZpbmUgR05VX0ZQT1NUX0FUVFIKKyNlbmRpZiAvKiBfX0dOVUNfXyAqLwogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9SVEMJCTB4MDAwMDAwMDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWJpX3Vib290LmggYi9pbmNsdWRlL3ViaV91Ym9vdC5oCmluZGV4IDI5NWYyYzAuLmI0MTUyMTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWJpX3Vib290LmgKKysrIGIvaW5jbHVkZS91YmlfdWJvb3QuaApAQCAtNTYsNyArNTYsNyBAQAogI2RlZmluZSB1Ymlfc3lzZnNfY2xvc2UoLi4uKQkJZG8geyB9IHdoaWxlICgwKQogc3RhdGljIGlubGluZSBpbnQgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG4pCiB7Ci0gICAgICAgIHJldHVybiAobiAhPSAwICYmICgobiAmIChuIC0gMSkpID09IDApKTsKKwlyZXR1cm4gKG4gIT0gMCAmJiAoKG4gJiAobiAtIDEpKSA9PSAwKSk7CiB9CiAKIC8qIEZJWE1FICovCkBAIC0yMTEsNiArMjExLDcgQEAKIC8qIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIGludCB1YmlfbXRkX3BhcmFtX3BhcnNlKGNvbnN0IGNoYXIgKnZhbCwgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApOwogZXh0ZXJuIGludCB1YmlfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIHViaV9leGl0KHZvaWQpOwogCiBleHRlcm4gc3RydWN0IHViaV9kZXZpY2UgKnViaV9kZXZpY2VzW107CiAKZGlmZiAtLWdpdCBhL2xpYl9ibGFja2Zpbi9ib2FyZC5jIGIvbGliX2JsYWNrZmluL2JvYXJkLmMKaW5kZXggZmRlNGJiZS4uZGRmODE0NCAxMDA2NDQKLS0tIGEvbGliX2JsYWNrZmluL2JvYXJkLmMKKysrIGIvbGliX2JsYWNrZmluL2JvYXJkLmMKQEAgLTI1Nyw2ICsyNTcsNyBAQAogewogCXVsb25nIGFkZHI7CiAJYmRfdCAqYmQ7CisJY2hhciBidWZbMzJdOwogCiAjaWZkZWYgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRgogCXNlcmlhbF9lYXJseV9wdXRzKCJCb2FyZCBlYXJseSBpbml0IGZsYXNoXG4iKTsKQEAgLTMxNSw4ICszMTYsOSBAQAogCWNoZWNrYm9hcmQoKTsKIAl0aW1lcl9pbml0KCk7CiAKLQlwcmludGYoIkNsb2NrOiBWQ086ICVsdSBNSHosIENvcmU6ICVsdSBNSHosIFN5c3RlbTogJWx1IE1IelxuIiwKLQkgICAgICAgZ2V0X3ZjbygpIC8gMTAwMDAwMCwgZ2V0X2NjbGsoKSAvIDEwMDAwMDAsIGdldF9zY2xrKCkgLyAxMDAwMDAwKTsKKwlwcmludGYoIkNsb2NrOiBWQ086ICVzIE1IeiwgIiwgc3RybWh6KGJ1ZiwgZ2V0X3ZjbygpKSk7CisJcHJpbnRmKCJDb3JlOiAlcyBNSHosICIsIHN0cm1oeihidWYsIGdldF9jY2xrKCkpKTsKKwlwcmludGYoIlN5c3RlbTogJXMgTUh6XG4iLCBzdHJtaHooYnVmLCBnZXRfc2NsaygpKSk7CiAKIAlwcmludGYoIlJBTTogICAiKTsKIAlwcmludF9zaXplKGluaXRkcmFtKDApLCAiXG4iKTsKQEAgLTM3NCwxMyArMzc2LDYgQEAKIAltZW1fbWFsbG9jX2luaXQoKTsKIAltYWxsb2NfYmluX3JlbG9jKCk7CiAKLSNpZmRlZiBDT05GSUdfU1BJCi0jIGlmICEgZGVmaW5lZChDT05GSUdfRU5WX0lTX0lOX0VFUFJPTSkKLQlzcGlfaW5pdF9mKCk7Ci0jIGVuZGlmCi0Jc3BpX2luaXRfcigpOwotI2VuZGlmCi0KICNpZmRlZiBDT05GSUdfQ01EX05BTkQKIAlwdXRzKCJOQU5EOiAgIik7CiAJbmFuZF9pbml0KCk7CQkvKiBnbyBpbml0IHRoZSBOQU5EICovCmRpZmYgLS1naXQgYS9saWJfZ2VuZXJpYy9NYWtlZmlsZSBiL2xpYl9nZW5lcmljL01ha2VmaWxlCmluZGV4IGQ2MmMzOWIuLjNmMDQwMjIgMTAwNjQ0Ci0tLSBhL2xpYl9nZW5lcmljL01ha2VmaWxlCisrKyBiL2xpYl9nZW5lcmljL01ha2VmaWxlCkBAIC0yNSw2ICsyNSw3IEBACiAKIExJQgk9ICQob2JqKWxpYmdlbmVyaWMuYQogCitDT0JKUy0kKENPTkZJR19BRERSX01BUCkgKz0gYWRkcl9tYXAubwogQ09CSlMteSArPSBiemxpYi5vCiBDT0JKUy15ICs9IGJ6bGliX2NyY3RhYmxlLm8KIENPQkpTLXkgKz0gYnpsaWJfZGVjb21wcmVzcy5vCmRpZmYgLS1naXQgYS9saWJfZ2VuZXJpYy9hZGRyX21hcC5jIGIvbGliX2dlbmVyaWMvYWRkcl9tYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjg1MzJjCi0tLSAvZGV2L251bGwKKysrIGIvbGliX2dlbmVyaWMvYWRkcl9tYXAuYwpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YWRkcl9tYXAuaD4KKworc3RhdGljIHN0cnVjdCB7CisJcGh5c19hZGRyX3QgcGFkZHI7CisJcGh5c19zaXplX3Qgc2l6ZTsKKwl1bnNpZ25lZCBsb25nIHZhZGRyOworfSBhZGRyZXNzX21hcFtDT05GSUdfU1lTX05VTV9BRERSX01BUF07CisKK3BoeXNfYWRkcl90IGFkZHJtYXBfdmlydF90b19waHlzKHZvaWQgKiB2YWRkcikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfU1lTX05VTV9BRERSX01BUDsgaSsrKSB7CisJCXU2NCBiYXNlLCB1cHBlciwgYWRkcjsKKworCQlpZiAoYWRkcmVzc19tYXBbaV0uc2l6ZSA9PSAwKQorCQkJY29udGludWU7CisKKwkJYWRkciA9ICh1NjQpKCh1MzIpdmFkZHIpOworCQliYXNlID0gKHU2NCkoYWRkcmVzc19tYXBbaV0udmFkZHIpOworCQl1cHBlciA9ICh1NjQpKGFkZHJlc3NfbWFwW2ldLnNpemUpICsgYmFzZSAtIDE7CisKKwkJaWYgKGFkZHIgPj0gYmFzZSAmJiBhZGRyIDw9IHVwcGVyKSB7CisJCQlyZXR1cm4gYWRkciAtIGFkZHJlc3NfbWFwW2ldLnZhZGRyICsgYWRkcmVzc19tYXBbaV0ucGFkZHI7CisJCX0KKwl9CisKKwlyZXR1cm4gKHBoeXNfYWRkcl90KSh+MCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgYWRkcm1hcF9waHlzX3RvX3ZpcnQocGh5c19hZGRyX3QgcGFkZHIpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX1NZU19OVU1fQUREUl9NQVA7IGkrKykgeworCQl1NjQgYmFzZSwgdXBwZXIsIGFkZHI7CisKKwkJaWYgKGFkZHJlc3NfbWFwW2ldLnNpemUgPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCWFkZHIgPSAodTY0KXBhZGRyOworCQliYXNlID0gKHU2NCkoYWRkcmVzc19tYXBbaV0ucGFkZHIpOworCQl1cHBlciA9ICh1NjQpKGFkZHJlc3NfbWFwW2ldLnNpemUpICsgYmFzZSAtIDE7CisKKwkJaWYgKGFkZHIgPj0gYmFzZSAmJiBhZGRyIDw9IHVwcGVyKSB7CisJCQlyZXR1cm4gcGFkZHIgLSBhZGRyZXNzX21hcFtpXS5wYWRkciArIGFkZHJlc3NfbWFwW2ldLnZhZGRyOworCQl9CisJfQorCisJcmV0dXJuICh1bnNpZ25lZCBsb25nKSh+MCk7Cit9CisKK3ZvaWQgYWRkcm1hcF9zZXRfZW50cnkodW5zaWduZWQgbG9uZyB2YWRkciwgcGh5c19hZGRyX3QgcGFkZHIsCisJCQlwaHlzX3NpemVfdCBzaXplLCBpbnQgaWR4KQoreworCWlmIChpZHggPiBDT05GSUdfU1lTX05VTV9BRERSX01BUCkKKwkJcmV0dXJuOworCisJYWRkcmVzc19tYXBbaWR4XS52YWRkciA9IHZhZGRyOworCWFkZHJlc3NfbWFwW2lkeF0ucGFkZHIgPSBwYWRkcjsKKwlhZGRyZXNzX21hcFtpZHhdLnNpemUgID0gc2l6ZTsKK30KZGlmZiAtLWdpdCBhL2xpYl9tNjhrL2ludGVycnVwdHMuYyBiL2xpYl9tNjhrL2ludGVycnVwdHMuYwppbmRleCAyZGMwNzliLi4xMzM0OTRmIDEwMDY0NAotLS0gYS9saWJfbTY4ay9pbnRlcnJ1cHRzLmMKKysrIGIvbGliX202OGsvaW50ZXJydXB0cy5jCkBAIC02MSw3ICs2MSw3IEBACiAgKi8KIHZvaWQgaXJxX2luc3RhbGxfaGFuZGxlciAoaW50IHZlYywgaW50ZXJydXB0X2hhbmRsZXJfdCAqIGhhbmRsZXIsIHZvaWQgKmFyZykKIHsKLQlpZiAoKHZlYyA8IDApIHx8ICh2ZWMgPiBOUl9JUlFTKSkgeworCWlmICgodmVjIDwgMCkgfHwgKHZlYyA+PSBOUl9JUlFTKSkgewogCQlwcmludGYgKCJpcnFfaW5zdGFsbF9oYW5kbGVyOiB3cm9uZyBpbnRlcnJ1cHQgdmVjdG9yICVkXG4iLAogCQkJdmVjKTsKIAkJcmV0dXJuOwpAQCAtNzMsNyArNzMsNyBAQAogCiB2b2lkIGlycV9mcmVlX2hhbmRsZXIgKGludCB2ZWMpCiB7Ci0JaWYgKCh2ZWMgPCAwKSB8fCAodmVjID4gTlJfSVJRUykpIHsKKwlpZiAoKHZlYyA8IDApIHx8ICh2ZWMgPj0gTlJfSVJRUykpIHsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvbGliX21pY3JvYmxhemUvYm9hcmQuYyBiL2xpYl9taWNyb2JsYXplL2JvYXJkLmMKaW5kZXggMjUwOTcyYy4uMzBkNzY0MSAxMDA2NDQKLS0tIGEvbGliX21pY3JvYmxhemUvYm9hcmQuYworKysgYi9saWJfbWljcm9ibGF6ZS9ib2FyZC5jCkBAIC0xMTIsNiArMTEyLDEwIEBACiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0ZMQVNIKQogCXVsb25nIGZsYXNoX3NpemUgPSAwOwogI2VuZGlmCisjaWYgZGVmaW5lZChDT05GSUdfQ01EX05FVCkKKwljaGFyICpzLCAqZTsKKwlpbnQgaTsKKyNlbmRpZgogCWFzbSAoIm5vcCIpOwkvKiBGSVhNRSBnZCBpcyBub3QgaW5pdGlhbGl6ZSAtIHdhaXQgKi8KIAltZW1zZXQgKCh2b2lkICopZ2QsIDAsIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSk7CiAJZ2QtPmJkID0gKGJkX3QgKikgKGdkICsgMSk7CS8qIEF0IGVuZCBvZiBnbG9iYWwgZGF0YSAqLwpAQCAtMTIwLDYgKzEyNCw3IEBACiAJYmQtPmJpX2JhdWRyYXRlID0gQ09ORklHX0JBVURSQVRFOwogCWJkLT5iaV9tZW1zdGFydCA9IENPTkZJR19TWVNfU0RSQU1fQkFTRTsKIAliZC0+YmlfbWVtc2l6ZSA9IENPTkZJR19TWVNfU0RSQU1fU0laRTsKKwlnZC0+ZmxhZ3MgfD0gR0RfRkxHX1JFTE9DOyAgICAgIC8qIHRlbGwgb3RoZXJzOiByZWxvY2F0aW9uIGRvbmUgKi8KIAogCS8qIEluaXRpYWxpc2UgbWFsbG9jKCkgYXJlYSAqLwogCW1lbV9tYWxsb2NfaW5pdCAoKTsKQEAgLTEzMSwxMSArMTM2LDM0IEBACiAJCX0KIAl9CiAKKwlwdXRzICgiU0RSQU0gOlxuIik7CisJcHJpbnRmICgiXHRcdEljYWNoZTolc1xuIiwgaWNhY2hlX3N0YXR1cygpID8gIk9LIiA6ICJGQUlMIik7CisJcHJpbnRmICgiXHRcdERjYWNoZTolc1xuIiwgZGNhY2hlX3N0YXR1cygpID8gIk9LIiA6ICJGQUlMIik7CisJcHJpbnRmICgiXHRVLUJvb3QgU3RhcnQ6MHglMDh4XG4iLCBURVhUX0JBU0UpOworCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0ZMQVNIKQorCXB1dHMgKCJGTEFTSDogIik7CiAJYmQtPmJpX2ZsYXNoc3RhcnQgPSBDT05GSUdfU1lTX0ZMQVNIX0JBU0U7CiAJaWYgKDAgPCAoZmxhc2hfc2l6ZSA9IGZsYXNoX2luaXQgKCkpKSB7CiAJCWJkLT5iaV9mbGFzaHNpemUgPSBmbGFzaF9zaXplOwogCQliZC0+YmlfZmxhc2hvZmZzZXQgPSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UgKyBmbGFzaF9zaXplOworIyBpZmRlZiBDT05GSUdfU1lTX0ZMQVNIX0NIRUNLU1VNCisJCXByaW50X3NpemUgKGZsYXNoX3NpemUsICIiKTsKKwkJLyoKKwkJICogQ29tcHV0ZSBhbmQgcHJpbnQgZmxhc2ggQ1JDIGlmIGZsYXNoY2hlY2tzdW0gaXMgc2V0IHRvICd5JworCQkgKgorCQkgKiBOT1RFOiBNYXliZSB3ZSBzaG91bGQgYWRkIHNvbWUgV0FUQ0hET0dfUkVTRVQoKT8gWFhYCisJCSAqLworCQlzID0gZ2V0ZW52ICgiZmxhc2hjaGVja3N1bSIpOworCQlpZiAocyAmJiAoKnMgPT0gJ3knKSkgeworCQkJcHJpbnRmICgiICBDUkM6ICUwOFgiLAorCQkJCWNyYzMyICgwLCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UsIGZsYXNoX3NpemUpCisJCQkpOworCQl9CisJCXB1dGMgKCdcbicpOworIyBlbHNlCS8qICFDT05GSUdfU1lTX0ZMQVNIX0NIRUNLU1VNICovCisJCXByaW50X3NpemUgKGZsYXNoX3NpemUsICJcbiIpOworIyBlbmRpZiAvKiBDT05GSUdfU1lTX0ZMQVNIX0NIRUNLU1VNICovCiAJfSBlbHNlIHsKIAkJcHV0cyAoIkZsYXNoIGluaXQgRkFJTEVEIik7CiAJCWJkLT5iaV9mbGFzaHN0YXJ0ID0gMDsKQEAgLTE0NSwxMCArMTczLDkgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX05FVCkKLQljaGFyICpzLCAqZTsKLQlpbnQgaTsKIAkvKiBib2FyZCBNQUMgYWRkcmVzcyAqLwogCXMgPSBnZXRlbnYgKCJldGhhZGRyIik7CisJcHJpbnRmICgiTUFDOiVzXG4iLHMpOwogCWZvciAoaSA9IDA7IGkgPCA2OyArK2kpIHsKIAkJYmQtPmJpX2VuZXRhZGRyW2ldID0gcyA/IHNpbXBsZV9zdHJ0b3VsIChzLCAmZSwgMTYpIDogMDsKIAkJaWYgKHMpCmRpZmYgLS1naXQgYS9saWJfbWljcm9ibGF6ZS9jYWNoZS5jIGIvbGliX21pY3JvYmxhemUvY2FjaGUuYwppbmRleCBhMmY3NDkzLi40YjJlOGUzIDEwMDY0NAotLS0gYS9saWJfbWljcm9ibGF6ZS9jYWNoZS5jCisrKyBiL2xpYl9taWNyb2JsYXplL2NhY2hlLmMKQEAgLTI2LDYgKzI2LDE4IEBACiAKIHZvaWQgZmx1c2hfY2FjaGUgKHVsb25nIGFkZHIsIHVsb25nIHNpemUpCiB7Ci0JLyogTWljcm9CbGF6ZSBoYXZlIHdyaXRlIHRocnVvdWdoIGNhY2hlLiBub3RoaW5nIHRvIGRvLiAqLwotCXJldHVybjsKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSArPSA0KQorCQlhc20gdm9sYXRpbGUgKAorI2lmZGVmIENPTkZJR19JQ0FDSEUKKwkJCQkid2ljCSUwLCByMDsiCisjZW5kaWYKKwkJCQkibm9wOyIKKyNpZmRlZiBDT05GSUdfRENBQ0hFCisJCQkJIndkYwklMCwgcjA7IgorI2VuZGlmCisJCQkJIm5vcDsiCisJCQkJOgorCQkJCTogInIiIChhZGRyICsgaSkKKwkJCQk6ICJtZW1vcnkiKTsKIH0KZGlmZiAtLWdpdCBhL2xpYl9taXBzL2JvYXJkLmMgYi9saWJfbWlwcy9ib2FyZC5jCmluZGV4IDljOTk3ZjEuLmRmZTY4MzEgMTAwNjQ0Ci0tLSBhL2xpYl9taXBzL2JvYXJkLmMKKysrIGIvbGliX21pcHMvYm9hcmQuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPG5ldC5oPgogI2luY2x1ZGUgPGVudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8bmFuZC5oPgorI2luY2x1ZGUgPG9uZW5hbmRfdWJvb3QuaD4KICNpbmNsdWRlIDxzcGkuaD4KIAogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CkBAIC03MSw2ICs3MiwxNSBAQAogICovCiB1bnNpZ25lZCBsb25nIG1pcHNfaW9fcG9ydF9iYXNlID0gLTE7CiAKK2ludCBfX2JvYXJkX2Vhcmx5X2luaXRfZih2b2lkKQoreworCS8qCisJICogTm90aGluZyB0byBkbyBpbiB0aGlzIGR1bW15IGltcGxlbWVudGF0aW9uCisJICovCisJcmV0dXJuIDA7Cit9CitpbnQgYm9hcmRfZWFybHlfaW5pdF9mKHZvaWQpIF9fYXR0cmlidXRlX18oKHdlYWssIGFsaWFzKCJfX2JvYXJkX2Vhcmx5X2luaXRfZiIpKSk7CisKIC8qCiAgKiBUaGUgTWFsbG9jIGFyZWEgaXMgaW1tZWRpYXRlbHkgYmVsb3cgdGhlIG1vbml0b3IgY29weSBpbiBEUkFNCiAgKi8KQEAgLTE2OCw2ICsxNzgsNyBAQAogdHlwZWRlZiBpbnQgKGluaXRfZm5jX3QpICh2b2lkKTsKIAogaW5pdF9mbmNfdCAqaW5pdF9zZXF1ZW5jZVtdID0geworCWJvYXJkX2Vhcmx5X2luaXRfZiwKIAl0aW1lcl9pbml0LAogCWVudl9pbml0LAkJLyogaW5pdGlhbGl6ZSBlbnZpcm9ubWVudCAqLwogI2lmZGVmIENPTkZJR19JTkNBX0lQCkBAIC0zNzgsNiArMzg5LDE1IEBACiAJbWVtX21hbGxvY19pbml0KCk7CiAJbWFsbG9jX2Jpbl9yZWxvYygpOwogCisjaWZkZWYgQ09ORklHX0NNRF9OQU5ECisJcHV0cyAoIk5BTkQ6ICAiKTsKKwluYW5kX2luaXQgKCk7CQkvKiBnbyBpbml0IHRoZSBOQU5EICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX0NNRF9PTkVOQU5EKQorCW9uZW5hbmRfaW5pdCgpOworI2VuZGlmCisKIAkvKiByZWxvY2F0ZSBlbnZpcm9ubWVudCBmdW5jdGlvbiBwb2ludGVycyBldGMuICovCiAJZW52X3JlbG9jYXRlKCk7CiAKQEAgLTQxOSwxMSArNDM5LDYgQEAKIAl9CiAjZW5kaWYKIAotI2lmZGVmIENPTkZJR19DTURfTkFORAotCXB1dHMgKCJOQU5EOiAgIik7Ci0JbmFuZF9pbml0ICgpOwkJLyogZ28gaW5pdCB0aGUgTkFORCAqLwotI2VuZGlmCi0KICNpZmRlZiBDT05GSUdfQ01EX1NQSQogCXB1dHMgKCJTUEk6ICAgIik7CiAJc3BpX2luaXQgKCk7CQkvKiBnbyBpbml0IHRoZSBTUEkgKi8KZGlmZiAtLWdpdCBhL2xpYl9wcGMvYm9hcmQuYyBiL2xpYl9wcGMvYm9hcmQuYwppbmRleCAyODlhMzJhLi42MWMyOWI1IDEwMDY0NAotLS0gYS9saWJfcHBjL2JvYXJkLmMKKysrIGIvbGliX3BwYy9ib2FyZC5jCkBAIC03NSw2ICs3NSwxMCBAQAogI2luY2x1ZGUgPGtleWJvYXJkLmg+CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19BRERSX01BUAorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX1NZU19VUERBVEVfRkxBU0hfU0laRQogZXh0ZXJuIGludCB1cGRhdGVfZmxhc2hfc2l6ZSAoaW50IGZsYXNoX3NpemUpOwogI2VuZGlmCkBAIC02OTQsNiArNjk4LDEwIEBACiAJICovCiAJdHJhcF9pbml0IChkZXN0X2FkZHIpOwogCisjaWYgZGVmaW5lZChDT05GSUdfQUREUl9NQVApICYmIGRlZmluZWQoQ09ORklHX0U1MDApCisJaW5pdF9hZGRyX21hcCgpOworI2VuZGlmCisKICNpZiBkZWZpbmVkKENPTkZJR19CT0FSRF9FQVJMWV9JTklUX1IpCiAJYm9hcmRfZWFybHlfaW5pdF9yICgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJfcHBjL2NhY2hlLmMgYi9saWJfcHBjL2NhY2hlLmMKaW5kZXggNzJjODM4ZS4uMTI5MmI3MSAxMDA2NDQKLS0tIGEvbGliX3BwYy9jYWNoZS5jCisrKyBiL2xpYl9wcGMvY2FjaGUuYwpAQCAtMjUsMjkgKzI1LDI3IEBACiAjaW5jbHVkZSA8YXNtL2NhY2hlLmg+CiAjaW5jbHVkZSA8d2F0Y2hkb2cuaD4KIAotdm9pZCBmbHVzaF9jYWNoZSAodWxvbmcgc3RhcnRfYWRkciwgdWxvbmcgc2l6ZSkKK3ZvaWQgZmx1c2hfY2FjaGUodWxvbmcgc3RhcnRfYWRkciwgdWxvbmcgc2l6ZSkKIHsKICNpZm5kZWYgQ09ORklHXzV4eAotCXVsb25nIGFkZHIsIGVuZF9hZGRyID0gc3RhcnRfYWRkciArIHNpemU7CisJdWxvbmcgYWRkciwgc3RhcnQsIGVuZDsKIAotCWlmIChDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFKSB7Ci0JCWFkZHIgPSBzdGFydF9hZGRyICYgKENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUgLSAxKTsKLQkJZm9yIChhZGRyID0gc3RhcnRfYWRkcjsKLQkJICAgICBhZGRyIDwgZW5kX2FkZHI7Ci0JCSAgICAgYWRkciArPSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFKSB7Ci0JCQlhc20gKCJkY2JzdCAwLCUwIjogOiJyIiAoYWRkcikpOwotCQkJV0FUQ0hET0dfUkVTRVQoKTsKLQkJfQotCQlhc20gKCJzeW5jIik7CS8qIFdhaXQgZm9yIGFsbCBkY2JzdCB0byBjb21wbGV0ZSBvbiBidXMgKi8KKwlzdGFydCA9IHN0YXJ0X2FkZHIgJiB+KENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUgLSAxKTsKKwllbmQgPSBzdGFydF9hZGRyICsgc2l6ZSAtIDE7CiAKLQkJZm9yIChhZGRyID0gc3RhcnRfYWRkcjsKLQkJICAgICBhZGRyIDwgZW5kX2FkZHI7Ci0JCSAgICAgYWRkciArPSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFKSB7Ci0JCQlhc20gKCJpY2JpIDAsJTAiOiA6InIiIChhZGRyKSk7Ci0JCQlXQVRDSERPR19SRVNFVCgpOwotCQl9CisJZm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgPD0gZW5kOyBhZGRyICs9IENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUpIHsKKwkJYXNtIHZvbGF0aWxlKCJkY2JzdCAwLCUwIiA6IDogInIiIChhZGRyKSA6ICJtZW1vcnkiKTsKKwkJV0FUQ0hET0dfUkVTRVQoKTsKIAl9Ci0JYXNtICgic3luYyIpOwkJLyogQWx3YXlzIGZsdXNoIHByZWZldGNoIHF1ZXVlIGluIGFueSBjYXNlICovCi0JYXNtICgiaXN5bmMiKTsKKwkvKiB3YWl0IGZvciBhbGwgZGNic3QgdG8gY29tcGxldGUgb24gYnVzICovCisJYXNtIHZvbGF0aWxlKCJzeW5jIiA6IDogOiAibWVtb3J5Iik7CisKKwlmb3IgKGFkZHIgPSBzdGFydDsgYWRkciA8PSBlbmQ7IGFkZHIgKz0gQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRSkgeworCQlhc20gdm9sYXRpbGUoImljYmkgMCwlMCIgOiA6ICJyIiAoYWRkcikgOiAibWVtb3J5Iik7CisJCVdBVENIRE9HX1JFU0VUKCk7CisJfQorCWFzbSB2b2xhdGlsZSgic3luYyIgOiA6IDogIm1lbW9yeSIpOworCS8qIGZsdXNoIHByZWZldGNoIHF1ZXVlICovCisJYXNtIHZvbGF0aWxlKCJpc3luYyIgOiA6IDogIm1lbW9yeSIpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9saWJfc2gvTWFrZWZpbGUgYi9saWJfc2gvTWFrZWZpbGUKaW5kZXggNDAzNDM4MS4uZjdjNjQ3OSAxMDA2NDQKLS0tIGEvbGliX3NoL01ha2VmaWxlCisrKyBiL2xpYl9zaC9NYWtlZmlsZQpAQCAtMjYsNyArMjYsMTEgQEAKIAogQ09CSlMteQkrPSBib2FyZC5vCiBDT0JKUy15CSs9IGJvb3RtLm8KLSMgQ09CSlMteQkrPSB0aW1lLm8KK2lmZXEgKCQoQ09ORklHX1NIMikseSkKK0NPQkpTLXkJKz0gdGltZV9zaDIubworZWxzZQorQ09CSlMteQkrPSB0aW1lLm8KK2VuZGlmCiAKIFNSQ1MJOj0gJChTT0JKUy15Oi5vPS5TKSAkKENPQkpTLXk6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTLXkpICQoQ09CSlMteSkpCmRpZmYgLS1naXQgYS9saWJfc2gvdGltZS5jIGIvbGliX3NoL3RpbWUuYwppbmRleCBlNjM3ZTk1Li44ZmNjY2UzIDEwMDY0NAotLS0gYS9saWJfc2gvdGltZS5jCisrKyBiL2xpYl9zaC90aW1lLmMKQEAgLTEsNiArMSw5IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA3Ci0gKiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisgKiAoQykgQ29weXJpZ2h0IDIwMDctMjAwOAorICogTm9ib2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisgKgorICogKEMpIENvcHlyaWdodCAyMDAzCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjMsNTIgKzI2LDk4IEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNkZWZpbmUgVE1VX01BWF9DT1VOVEVSICh+MFVMKQorc3RhdGljIGludCBjbGtfYWRqID0gMTsKIAogc3RhdGljIHZvaWQgdG11X3RpbWVyX3N0YXJ0ICh1bnNpZ25lZCBpbnQgdGltZXIpCiB7CiAJaWYgKHRpbWVyID4gMikKIAkJcmV0dXJuOworCXdyaXRlYihyZWFkYihUU1RSKSB8ICgxIDw8IHRpbWVyKSwgVFNUUik7Cit9CiAKLQkqKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopIFRTVFIwKSB8PSAoMSA8PCB0aW1lcik7CitzdGF0aWMgdm9pZCB0bXVfdGltZXJfc3RvcCAodW5zaWduZWQgaW50IHRpbWVyKQoreworCWlmICh0aW1lciA+IDIpCisJCXJldHVybjsKKwl3cml0ZWIocmVhZGIoVFNUUikgJiB+KDEgPDwgdGltZXIpLCBUU1RSKTsKIH0KIAogaW50IHRpbWVyX2luaXQgKHZvaWQpCiB7Ci0JKih2b2xhdGlsZSB1MTYgKilUQ1IwID0gMDsKKwkvKiBEaXZpZGUgY2xvY2sgYnkgVE1VX0NMS19ESVZJREVSICovCisJdTE2IGJpdCA9IDA7CiAKLQl0bXVfdGltZXJfc3RhcnQgKDApOworCXN3aXRjaCAoVE1VX0NMS19ESVZJREVSKSB7CisJY2FzZSAxMDI0OgorCQliaXQgPSA0OworCQlicmVhazsKKwljYXNlIDI1NjoKKwkJYml0ID0gMzsKKwkJYnJlYWs7CisJY2FzZSA2NDoKKwkJYml0ID0gMjsKKwkJYnJlYWs7CisJY2FzZSAxNjoKKwkJYml0ID0gMTsKKwkJYnJlYWs7CisJY2FzZSA0OgorCWRlZmF1bHQ6CisJCWJpdCA9IDA7CisJCWJyZWFrOworCX0KKwl3cml0ZXcocmVhZHcoVENSMCkgfCBiaXQsIFRDUjApOworCisJLyogQ2xvY2sgYWRqdXN0bWVudCBjYWxjICovCisJY2xrX2FkaiA9IChpbnQpKDEuMCAvICgoMS4wIC8gQ09ORklHX1NZU19IWikgKiAxMDAwMDAwKSk7CisJaWYgKGNsa19hZGogPCAxKQorCQljbGtfYWRqID0gMTsKKworCXRtdV90aW1lcl9zdG9wKDApOworCXRtdV90aW1lcl9zdGFydCgwKTsKKwogCXJldHVybiAwOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X3RpY2tzICh2b2lkKQogewotCXJldHVybiAoMCAtICooKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBUQ05UMCkpOworCXJldHVybiAwIC0gcmVhZGwoVENOVDApOwogfQogCi11bnNpZ25lZCBsb25nIGdldF90aW1lciAodW5zaWduZWQgbG9uZyBiYXNlKQorc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0X3VzZWMgKHZvaWQpCiB7Ci0JcmV0dXJuICgoMCAtICooKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBUQ05UMCkpIC0gYmFzZSk7Ci19Ci0KLXZvaWQgc2V0X3RpbWVyICh1bnNpZ25lZCBsb25nIHQpCi17Ci0JKigodm9sYXRpbGUgdW5zaWduZWQgaW50ICopIFRDTlQwKSA9ICgwIC0gdCk7Ci19Ci0KLXZvaWQgcmVzZXRfdGltZXIgKHZvaWQpCi17Ci0Jc2V0X3RpbWVyICgwKTsKKwlyZXR1cm4gKDAgLSByZWFkbChUQ05UMCkpOwogfQogCiB2b2lkIHVkZWxheSAodW5zaWduZWQgbG9uZyB1c2VjKQogewotCXVuc2lnbmVkIGludCBzdGFydCA9IGdldF90aW1lciAoMCk7Ci0JdW5zaWduZWQgaW50IGVuZCA9IHN0YXJ0ICsgKHVzZWMgKiAoKENPTkZJR19TWVNfSFogKyA1MDAwMDApIC8gMTAwMDAwMCkpOworCXVuc2lnbmVkIGludCBzdGFydCA9IGdldF91c2VjKCk7CisJdW5zaWduZWQgaW50IGVuZCA9IHN0YXJ0ICsgKHVzZWMgKiBjbGtfYWRqKTsKIAotCXdoaWxlIChnZXRfdGltZXIgKDApIDwgZW5kKQorCXdoaWxlIChnZXRfdXNlYygpIDwgZW5kKQogCQljb250aW51ZTsKIH0KIAordW5zaWduZWQgbG9uZyBnZXRfdGltZXIgKHVuc2lnbmVkIGxvbmcgYmFzZSkKK3sKKwkvKiByZXR1cm4gbXNlYyAqLworCXJldHVybiAoKGdldF91c2VjKCkgLyBjbGtfYWRqKSAvIDEwMDApIC0gYmFzZTsKK30KKwordm9pZCBzZXRfdGltZXIgKHVuc2lnbmVkIGxvbmcgdCkKK3sKKwl3cml0ZWwoKDAgLSB0KSwgVENOVDApOworfQorCit2b2lkIHJlc2V0X3RpbWVyICh2b2lkKQoreworCXRtdV90aW1lcl9zdG9wKDApOworCXNldF90aW1lciAoMCk7CisJdG11X3RpbWVyX3N0YXJ0KDApOworfQorCiB1bnNpZ25lZCBsb25nIGdldF90YmNsayAodm9pZCkKIHsKIAlyZXR1cm4gQ09ORklHX1NZU19IWjsKZGlmZiAtLWdpdCBhL2NwdS9zaDIvdGltZS5jIGIvbGliX3NoL3RpbWVfc2gyLmMKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gY3B1L3NoMi90aW1lLmMKcmVuYW1lIHRvIGxpYl9zaC90aW1lX3NoMi5jCmluZGV4IGZjYmI5MjEuLjVjNmM5ZDQgMTAwNjQ0Ci0tLSBhL2NwdS9zaDIvdGltZS5jCisrKyBiL2xpYl9zaC90aW1lX3NoMi5jCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogCi0jZGVmaW5lIENNVF9DTUNTUl9JTklUICAweDAwMDEJLyogUENMSy8zMiAqLworI2RlZmluZSBDTVRfQ01DU1JfSU5JVAkweDAwMDEJLyogUENMSy8zMiAqLwogI2RlZmluZSBDTVRfQ01DU1JfQ0FMSUIgMHgwMDAwCiAjZGVmaW5lIENNVF9NQVhfQ09VTlRFUiAoMHhGRkZGRkZGRikKICNkZWZpbmUgQ01UX1RJTUVSX1JFU0VUICgweEZGRkYpCkBAIC02NSw4ICs2NSw4IEBACiAJcmV0dXJuIGNtdDBfdGltZXI7CiB9CiAKLXN0YXRpYyB2dV9sb25nIGNtY250OwotdWxvbmcgZ2V0X3RpbWVyKHVsb25nIGJhc2UpCitzdGF0aWMgdnVfbG9uZyBjbWNudCA9IDA7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfdXNlYyAodm9pZCkKIHsKIAl1bG9uZyBkYXRhID0gcmVhZHcoQ01DTlRfMCk7CiAKQEAgLTgxLDcgKzgxLDEzIEBACiAJCWNtdDBfdGltZXIgKz0gY21jbnQ7CiAKIAljbWNudCA9IGRhdGE7Ci0JcmV0dXJuIGNtdDBfdGltZXIgLSBiYXNlOworCXJldHVybiBjbXQwX3RpbWVyOworfQorCisvKiByZXR1cm4gbXNlYyAqLwordWxvbmcgZ2V0X3RpbWVyKHVsb25nIGJhc2UpCit7CisJcmV0dXJuIChnZXRfdXNlYygpIC8gMTAwMCkgLSBiYXNlOwogfQogCiB2b2lkIHNldF90aW1lcih1bG9uZyB0KQpAQCAtOTksOSArMTA1LDkgQEAKIAogdm9pZCB1ZGVsYXkodW5zaWduZWQgbG9uZyB1c2VjKQogewotCXVuc2lnbmVkIGludCBzdGFydCA9IGdldF90aW1lcigwKTsKKwl1bnNpZ25lZCBsb25nIGVuZCA9IGdldF91c2VjKCkgKyB1c2VjOwogCi0Jd2hpbGUgKGdldF90aW1lcigodWxvbmcpIHN0YXJ0KSA8ICh1c2VjICogKENPTkZJR19TWVNfSFogLyAxMDAwMDAwKSkpCisJd2hpbGUgKGdldF91c2VjKCkgPCBlbmQpCiAJCWNvbnRpbnVlOwogfQogCmRpZmYgLS1naXQgYS9saWJmZHQvTWFrZWZpbGUgYi9saWJmZHQvTWFrZWZpbGUKaW5kZXggY2EyYWQ3Ni4uZDZlMjgzMCAxMDA2NDQKLS0tIGEvbGliZmR0L01ha2VmaWxlCisrKyBiL2xpYmZkdC9NYWtlZmlsZQpAQCAtMjcsOSArMjcsMTMgQEAKIAogU09CSlMJPQogCi1DT0JKUy0kKENPTkZJR19PRl9MSUJGRFQpICs9IGZkdC5vIGZkdF9yby5vIGZkdF9ydy5vIGZkdF9zdHJlcnJvci5vIGZkdF9zdy5vIGZkdF93aXAubworQ09CSlMtbGliZmR0ICs9IGZkdC5vIGZkdF9yby5vIGZkdF9ydy5vIGZkdF9zdHJlcnJvci5vIGZkdF9zdy5vIGZkdF93aXAubwogCi1DT0JKUwk6PSAkKENPQkpTLXkpCitDT0JKUy0kKENPTkZJR19PRl9MSUJGRFQpICs9ICQoQ09CSlMtbGliZmR0KQorQ09CSlMtJChDT05GSUdfRklUKSArPSAkKENPQkpTLWxpYmZkdCkKKworCitDT0JKUwk6PSAkKHNvcnQgJChDT0JKUy15KSkKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpICQoQ09CSlMpKQogCmRpZmYgLS1naXQgYS9uYW5kX3NwbC9ib2FyZC9mcmVlc2NhbGUvbXBjODMxM2VyZGIvTWFrZWZpbGUgYi9uYW5kX3NwbC9ib2FyZC9mcmVlc2NhbGUvbXBjODMxM2VyZGIvTWFrZWZpbGUKaW5kZXggM2RhMWIxZi4uMWE4ZjZmZiAxMDA2NDQKLS0tIGEvbmFuZF9zcGwvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTNlcmRiL01ha2VmaWxlCisrKyBiL25hbmRfc3BsL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzEzZXJkYi9NYWtlZmlsZQpAQCAtMzQsNyArMzQsOCBAQAogQ0ZMQUdTCSs9IC1EQ09ORklHX05BTkRfU1BMCiAKIFNPQkpTCT0gc3RhcnQubyB0aWNrcy5vCi1DT0JKUwk9IG5hbmRfYm9vdF9mc2xfZWxiYy5vICQoQk9BUkQpLm8gc2RyYW0ubyBuczE2NTUwLm8gbmFuZF9pbml0Lm8gdGltZS5vCitDT0JKUwk9IG5hbmRfYm9vdF9mc2xfZWxiYy5vICQoQk9BUkQpLm8gc2RyYW0ubyBuczE2NTUwLm8gbmFuZF9pbml0Lm8gXAorCSAgdGltZS5vIGNhY2hlLm8KIAogU1JDUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSAkKENPQkpTKSkKQEAgLTc5LDYgKzgwLDkgQEAKICQob2JqKW5hbmRfaW5pdC5jOgogCWxuIC1zZiAkKFNSQ1RSRUUpL2NwdS9tcGM4M3h4L25hbmRfaW5pdC5jICQob2JqKW5hbmRfaW5pdC5jCiAKKyQob2JqKWNhY2hlLmM6CisJbG4gLXNmICQoU1JDVFJFRSkvbGliX3BwYy9jYWNoZS5jICQob2JqKWNhY2hlLmMKKwogJChvYmopdGltZS5jOgogCWxuIC1zZiAkKFNSQ1RSRUUpL2xpYl9wcGMvdGltZS5jICQob2JqKXRpbWUuYwogCmRpZmYgLS1naXQgYS9uYW5kX3NwbC9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9NYWtlZmlsZSBiL25hbmRfc3BsL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOTY3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9uYW5kX3NwbC9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy9NYWtlZmlsZQpAQCAtMCwwICsxLDEwMCBAQAorIworIyAoQykgQ29weXJpZ2h0IDIwMDcKKyMgU3RlZmFuIFJvZXNlLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBzckBkZW54LmRlLgorIyAoQykgQ29weXJpZ2h0IDIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IKKyMgKEMpIENvcHlyaWdodCBTaGVsZG9uIEluc3RydW1lbnRzLCBJbmMuIDIwMDgKKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworTkFORF9TUEwgOj0geQorVEVYVF9CQVNFIDo9IDB4ZmZmMDAwMDAKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xEU0NSSVBUPSAkKFRPUERJUikvbmFuZF9zcGwvYm9hcmQvJChCT0FSRERJUikvdS1ib290LmxkcworTERGTEFHUwk9IC1Cc3RhdGljIC1UICQoTERTQ1JJUFQpIC1UdGV4dCAkKFRFWFRfQkFTRSkgJChQTEFURk9STV9MREZMQUdTKQorQUZMQUdTCSs9IC1EQ09ORklHX05BTkRfU1BMCitDRkxBR1MJKz0gLURDT05GSUdfTkFORF9TUEwKKworU09CSlMJPSBzdGFydC5vIHRpY2tzLm8KK0NPQkpTCT0gbmFuZF9ib290X2ZzbF9lbGJjLm8gJChCT0FSRCkubyBzZHJhbS5vIG5zMTY1NTAubyBuYW5kX2luaXQubyB0aW1lLm8KKworU1JDUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykpCitPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSAkKENPQkpTKSkKK19fT0JKUwk6PSAkKFNPQkpTKSAkKENPQkpTKQorTE5ESVIJOj0gJChPQkpUUkVFKS9uYW5kX3NwbC9ib2FyZC8kKEJPQVJERElSKQorCituYW5kb2JqCTo9ICQoT0JKVFJFRSkvbmFuZF9zcGwvCisKK0FMTAk9ICQobmFuZG9iail1LWJvb3Qtc3BsICQobmFuZG9iail1LWJvb3Qtc3BsLmJpbiAkKG5hbmRvYmopdS1ib290LXNwbC0xNmsuYmluCisKK2FsbDoJJChvYmopLmRlcGVuZCAkKEFMTCkKKworJChuYW5kb2JqKXUtYm9vdC1zcGwtMTZrLmJpbjoJJChuYW5kb2JqKXUtYm9vdC1zcGwKKwkkKE9CSkNPUFkpICR7T0JKQ0ZMQUdTfSAtLXBhZC10bz0kKFBBRF9UTykgLU8gYmluYXJ5ICQ8ICRACisKKyQobmFuZG9iail1LWJvb3Qtc3BsLmJpbjoJJChuYW5kb2JqKXUtYm9vdC1zcGwKKwkkKE9CSkNPUFkpICR7T0JKQ0ZMQUdTfSAtTyBiaW5hcnkgJDwgJEAKKworJChuYW5kb2JqKXUtYm9vdC1zcGw6CSQoT0JKUykKKwljZCAkKExORElSKSAmJiAkKExEKSAkKExERkxBR1MpICQoX19PQkpTKSBcCisJCS1NYXAgJChuYW5kb2JqKXUtYm9vdC1zcGwubWFwIFwKKwkJLW8gJChuYW5kb2JqKXUtYm9vdC1zcGwKKworIyBjcmVhdGUgc3ltYm9saWMgbGlua3MgZm9yIGNvbW1vbiBmaWxlcworCiskKG9iailzdGFydC5TOgorCWxuIC1zZiAkKFNSQ1RSRUUpL2NwdS9tcGM4M3h4L3N0YXJ0LlMgJDwKKworJChvYmopbmFuZF9ib290X2ZzbF9lbGJjLmM6CisJbG4gLXNmICQoU1JDVFJFRSkvbmFuZF9zcGwvbmFuZF9ib290X2ZzbF9lbGJjLmMgJDwKKworJChvYmopc2RyYW0uYzoKKwlsbiAtc2YgJChTUkNUUkVFKS9ib2FyZC8kKEJPQVJERElSKS9zZHJhbS5jICQ8CisKKyQob2JqKSQoQk9BUkQpLmM6CisJbG4gLXNmICQoU1JDVFJFRSkvYm9hcmQvJChCT0FSRERJUikvJChCT0FSRCkuYyAkPAorCiskKG9iailuczE2NTUwLmM6CisJbG4gLXNmICQoU1JDVFJFRSkvZHJpdmVycy9zZXJpYWwvbnMxNjU1MC5jICQ8CisKKyQob2JqKW5hbmRfaW5pdC5jOgorCWxuIC1zZiAkKFNSQ1RSRUUpL2NwdS9tcGM4M3h4L25hbmRfaW5pdC5jICQ8CisKKyQob2JqKXRpbWUuYzoKKwlsbiAtc2YgJChTUkNUUkVFKS9saWJfcHBjL3RpbWUuYyAkPAorCiskKG9iail0aWNrcy5TOgorCWxuIC1zZiAkKFNSQ1RSRUUpL2xpYl9wcGMvdGlja3MuUyAkPAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyQob2JqKSUubzoJJChvYmopJS5TCisJJChDQykgJChBRkxBR1MpIC1jIC1vICRAICQ8CisKKyQob2JqKSUubzoJJChvYmopJS5jCisJJChDQykgJChDRkxBR1MpIC1jIC1vICRAICQ8CisKKyMgZGVmaW5lcyAkKG9iaikuZGVwZW5kIHRhcmdldAoraW5jbHVkZSAkKFNSQ1RSRUUpL3J1bGVzLm1rCisKK3NpbmNsdWRlICQob2JqKS5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvcmVzZXQuUyBiL25hbmRfc3BsL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL3UtYm9vdC5sZHMKc2ltaWxhcml0eSBpbmRleCA2MCUKY29weSBmcm9tIGNwdS9pMzg2L3Jlc2V0LlMKY29weSB0byBuYW5kX3NwbC9ib2FyZC9zaGVsZG9uL3NpbXBjODMxMy91LWJvb3QubGRzCmluZGV4IDA3YTczODQuLjQwYzQxNDUgMTAwNjQ0Ci0tLSBhL2NwdS9pMzg2L3Jlc2V0LlMKKysrIGIvbmFuZF9zcGwvYm9hcmQvc2hlbGRvbi9zaW1wYzgzMTMvdS1ib290LmxkcwpAQCAtMSw3ICsxLDggQEAKIC8qCi0gKiAgVS1ib290IC0gaTM4NiBTdGFydHVwIENvZGUKKyAqIChDKSBDb3B5cmlnaHQgMjAwNgorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICAqCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAyCU9taWNyb24gQ2V0aSBBQiwgRGFuaWVsIEVuZ3N0cvZtIDxkZW5haWVsQG9taWNyb24uc2U+CisgKiBDb3B5cmlnaHQgMjAwOCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjIsMTYgKzIzLDMwIEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLS8qIFJlc2V0IHZlY3RvciwganVtcHMgdG8gc3RhcnQxNi5TICovCitPVVRQVVRfQVJDSChwb3dlcnBjKQorU0VDVElPTlMKK3sKKwkuID0gMHhmZmYwMDAwMDsKKwkudGV4dCA6IHsKKwkJKigudGV4dCopCisJCS4gPSBBTElHTigxNik7CisJCSooLnJvZGF0YSopCisJCSooLmVoX2ZyYW1lKQorCX0KIAotLmV4dGVybiBzdGFydDE2CisJLiA9IEFMSUdOKDgpOworCS5kYXRhIDogeworCQkqKC5kYXRhKikKKwkJKiguc2RhdGEqKQorCQlfR09UMl9UQUJMRV8gPSAuOworCQkqKC5nb3QyKQorCQlfX2dvdDJfZW50cmllcyA9ICguIC0gX0dPVDJfVEFCTEVfKSA+PiAyOworCX0KIAotLnNlY3Rpb24gLnJlc2V0LCAiYXgiCi0uY29kZTE2Ci1yZXNldF92ZWN0b3I6Ci0JY2xpCi0JY2xkCi0Jam1wIHN0YXJ0MTYKLQotCS5vcmcgMHhmCi0Jbm9wCisJLiA9IEFMSUdOKDgpOworCV9fYnNzX3N0YXJ0ID0gLjsKKwkuYnNzIChOT0xPQUQpIDogeyAqKC4qYnNzKSB9CisJX2VuZCA9IC47Cit9CitFTlRSWShfc3RhcnQpCitBU1NFUlQoX2VuZCA8PSAweGZmZjAxMDAwLCAiTkFORCBib290c3RyYXAgdG9vIGJpZyIpOwpkaWZmIC0tZ2l0IGEvbmFuZF9zcGwvbmFuZF9ib290X2ZzbF9lbGJjLmMgYi9uYW5kX3NwbC9uYW5kX2Jvb3RfZnNsX2VsYmMuYwppbmRleCA0YTk2MWVhLi4wZDBjNDRlIDEwMDY0NAotLS0gYS9uYW5kX3NwbC9uYW5kX2Jvb3RfZnNsX2VsYmMuYworKysgYi9uYW5kX3NwbC9uYW5kX2Jvb3RfZnNsX2VsYmMuYwpAQCAtMTQzLDYgKzE0MywxMSBAQAogCSAqIEp1bXAgdG8gVS1Cb290IGltYWdlCiAJICovCiAJcHV0cygidHJhbnNmZXJpbmcgY29udHJvbFxuIik7CisJLyoKKwkgKiBDbGVhbiBkLWNhY2hlIGFuZCBpbnZhbGlkYXRlIGktY2FjaGUsIHRvCisJICogbWFrZSBzdXJlIHRoYXQgbm8gc3RhbGUgZGF0YSBpcyBleGVjdXRlZC4KKwkgKi8KKwlmbHVzaF9jYWNoZShDT05GSUdfU1lTX05BTkRfVV9CT09UX0RTVCwgQ09ORklHX1NZU19OQU5EX1VfQk9PVF9TSVpFKTsKIAl1Ym9vdCA9ICh2b2lkICopQ09ORklHX1NZU19OQU5EX1VfQk9PVF9TVEFSVDsKIAl1Ym9vdCgpOwogfQpkaWZmIC0tZ2l0IGEvcG9zdC9NYWtlZmlsZSBiL3Bvc3QvTWFrZWZpbGUKaW5kZXggYTQwMmU2YS4uNzY5ZTljNiAxMDA2NDQKLS0tIGEvcG9zdC9NYWtlZmlsZQorKysgYi9wb3N0L01ha2VmaWxlCkBAIC00NywxMiArNDcsMTcgQEAKIAogYWxsOgkkKExJQikKIAorcG9zdGRlcHM6CisJQGZvciBsaWIgaW4gJChTUExJQi15KSA7IGRvIFwKKwkJJChNQUtFKSAtQyBgZGlybmFtZSAkJGxpYmAgYWxsIDsgXAorCWRvbmUKKwogIyBnZW5lcmljIFBPU1QgbGlicmFyeQogJChHUExJQik6ICQob2JqKS5kZXBlbmQgJChPQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiAjIHNwZWNpZmljIFBPU1QgbGlicmFyaWVzCi0kKFNQTElCKTogJChvYmopLmRlcGVuZAorJChTUExJQik6ICQob2JqKS5kZXBlbmQgcG9zdGRlcHMKIAkkKE1BS0UpIC1DICQoZGlyICQoc3Vic3QgJChvYmopLCwkQCkpCiAKICMgdGhlIFBPU1QgbGliIGFyY2hpdmUKZGlmZiAtLWdpdCBhL3Bvc3QvbGliX3BwYy9mcHUvMjAwMDExMjItMS5jIGIvcG9zdC9saWJfcHBjL2ZwdS8yMDAwMTEyMi0xLmMKaW5kZXggYTg1MzdmYS4uYmVmODBjNSAxMDA2NDQKLS0tIGEvcG9zdC9saWJfcHBjL2ZwdS8yMDAwMTEyMi0xLmMKKysrIGIvcG9zdC9saWJfcHBjL2ZwdS8yMDAwMTEyMi0xLmMKQEAgLTMwLDYgKzMwLDggQEAKIAogI2lmIENPTkZJR19QT1NUICYgQ09ORklHX1NZU19QT1NUX0ZQVQogCitHTlVfRlBPU1RfQVRUUgorCiBpbnQgZnB1X3Bvc3RfdGVzdF9tYXRoMSAodm9pZCkKIHsKIAl2b2xhdGlsZSBkb3VibGUgYSwgKnA7CmRpZmYgLS1naXQgYS9wb3N0L2xpYl9wcGMvZnB1LzIwMDEwMTE0LTIuYyBiL3Bvc3QvbGliX3BwYy9mcHUvMjAwMTAxMTQtMi5jCmluZGV4IDkxZTM2MzEuLmVlNTY0ZTggMTAwNjQ0Ci0tLSBhL3Bvc3QvbGliX3BwYy9mcHUvMjAwMTAxMTQtMi5jCisrKyBiL3Bvc3QvbGliX3BwYy9mcHUvMjAwMTAxMTQtMi5jCkBAIC0zMCw2ICszMCw4IEBACiAKICNpZiBDT05GSUdfUE9TVCAmIENPTkZJR19TWVNfUE9TVF9GUFUKIAorR05VX0ZQT1NUX0FUVFIKKwogc3RhdGljIGZsb2F0IHJpbnRmIChmbG9hdCB4KQogewogCXZvbGF0aWxlIGZsb2F0IFRXTzIzID0gODM4ODYwOC4wOwpkaWZmIC0tZ2l0IGEvcG9zdC9saWJfcHBjL2ZwdS8yMDAxMDIyNi0xLmMgYi9wb3N0L2xpYl9wcGMvZnB1LzIwMDEwMjI2LTEuYwppbmRleCBiMDAzODZiLi4wOTljYTRhIDEwMDY0NAotLS0gYS9wb3N0L2xpYl9wcGMvZnB1LzIwMDEwMjI2LTEuYworKysgYi9wb3N0L2xpYl9wcGMvZnB1LzIwMDEwMjI2LTEuYwpAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgQ09ORklHX1BPU1QgJiBDT05GSUdfU1lTX1BPU1RfRlBVCiAKK0dOVV9GUE9TVF9BVFRSCisKIGludCBmcHVfcG9zdF90ZXN0X21hdGgzICh2b2lkKQogewogCXZvbGF0aWxlIGxvbmcgZG91YmxlIGRmcm9tID0gMS4xOwpkaWZmIC0tZ2l0IGEvcG9zdC9saWJfcHBjL2ZwdS85ODA2MTktMS5jIGIvcG9zdC9saWJfcHBjL2ZwdS85ODA2MTktMS5jCmluZGV4IGNlYjJiNzYuLjQ2YTMxYWUgMTAwNjQ0Ci0tLSBhL3Bvc3QvbGliX3BwYy9mcHUvOTgwNjE5LTEuYworKysgYi9wb3N0L2xpYl9wcGMvZnB1Lzk4MDYxOS0xLmMKQEAgLTMwLDYgKzMwLDggQEAKIAogI2lmIENPTkZJR19QT1NUICYgQ09ORklHX1NZU19QT1NUX0ZQVQogCitHTlVfRlBPU1RfQVRUUgorCiBpbnQgZnB1X3Bvc3RfdGVzdF9tYXRoNCAodm9pZCkKIHsKIAl2b2xhdGlsZSBmbG9hdCByZWFsZSA9IDEuMGY7CmRpZmYgLS1naXQgYS9wb3N0L2xpYl9wcGMvZnB1L01ha2VmaWxlIGIvcG9zdC9saWJfcHBjL2ZwdS9NYWtlZmlsZQppbmRleCBkYjQzNTkzLi5hNjgxNTM5IDEwMDY0NAotLS0gYS9wb3N0L2xpYl9wcGMvZnB1L01ha2VmaWxlCisrKyBiL3Bvc3QvbGliX3BwYy9mcHUvTWFrZWZpbGUKQEAgLTI5LDQgKzI5LDUgQEAKIAogaW5jbHVkZSAkKFRPUERJUikvcG9zdC9ydWxlcy5tawogCitDRkxBR1MgOj0gJChzaGVsbCBlY2hvICQoQ0ZMQUdTKSB8IHNlZCBzLy1tc29mdC1mbG9hdC8vKQogQ0ZMQUdTICs9IC1taGFyZC1mbG9hdCAtZmtlZXAtaW5saW5lLWZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvcG9zdC9saWJfcHBjL2ZwdS9hY2MxLmMgYi9wb3N0L2xpYl9wcGMvZnB1L2FjYzEuYwppbmRleCA4YTY1MTkzLi45ZmNhOWIzIDEwMDY0NAotLS0gYS9wb3N0L2xpYl9wcGMvZnB1L2FjYzEuYworKysgYi9wb3N0L2xpYl9wcGMvZnB1L2FjYzEuYwpAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgQ09ORklHX1BPU1QgJiBDT05GSUdfU1lTX1BPU1RfRlBVCiAKK0dOVV9GUE9TVF9BVFRSCisKIHN0YXRpYyBkb3VibGUgZnVuYyAoY29uc3QgZG91YmxlICphcnJheSkKIHsKIAlkb3VibGUgZCA9ICphcnJheTsKZGlmZiAtLWdpdCBhL3Bvc3QvbGliX3BwYy9mcHUvY29tcGFyZS1mcC0xLmMgYi9wb3N0L2xpYl9wcGMvZnB1L2NvbXBhcmUtZnAtMS5jCmluZGV4IGFiNDc2NTcuLmY4MzZiMjkgMTAwNjQ0Ci0tLSBhL3Bvc3QvbGliX3BwYy9mcHUvY29tcGFyZS1mcC0xLmMKKysrIGIvcG9zdC9saWJfcHBjL2ZwdS9jb21wYXJlLWZwLTEuYwpAQCAtMzIsNiArMzIsOCBAQAogCiAjaWYgQ09ORklHX1BPU1QgJiBDT05GSUdfU1lTX1BPU1RfRlBVCiAKK0dOVV9GUE9TVF9BVFRSCisKIHN0YXRpYyBpbnQgZmFpbGVkOwogCiAjZGVmaW5lIFRFU1QoYykgaWYgKChjKSAhPSBvaykgZmFpbGVkKysKZGlmZiAtLWdpdCBhL3Bvc3QvbGliX3BwYy9mcHUvZnB1LmMgYi9wb3N0L2xpYl9wcGMvZnB1L2ZwdS5jCmluZGV4IDg0NmI3NmQuLjNmM2FkZWEgMTAwNjQ0Ci0tLSBhL3Bvc3QvbGliX3BwYy9mcHUvZnB1LmMKKysrIGIvcG9zdC9saWJfcHBjL2ZwdS9mcHUuYwpAQCAtNDAsNiArNDAsOCBAQAogCiAjaW5jbHVkZSA8d2F0Y2hkb2cuaD4KIAorR05VX0ZQT1NUX0FUVFIKKwogZXh0ZXJuIGludCBmcHVfc3RhdHVzICh2b2lkKTsKIGV4dGVybiB2b2lkIGZwdV9lbmFibGUgKHZvaWQpOwogZXh0ZXJuIHZvaWQgZnB1X2Rpc2FibGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvcG9zdC9saWJfcHBjL2ZwdS9tdWwtc3Vibm9ybWFsLXNpbmdsZS0xLmMgYi9wb3N0L2xpYl9wcGMvZnB1L211bC1zdWJub3JtYWwtc2luZ2xlLTEuYwppbmRleCA5YzUxNGUxLi4xZjM3MzJkIDEwMDY0NAotLS0gYS9wb3N0L2xpYl9wcGMvZnB1L211bC1zdWJub3JtYWwtc2luZ2xlLTEuYworKysgYi9wb3N0L2xpYl9wcGMvZnB1L211bC1zdWJub3JtYWwtc2luZ2xlLTEuYwpAQCAtMzIsNiArMzIsOCBAQAogCiAjaWYgQ09ORklHX1BPU1QgJiBDT05GSUdfU1lTX1BPU1RfRlBVCiAKK0dOVV9GUE9TVF9BVFRSCisKIHVuaW9uIHVmCiB7CiAJdW5zaWduZWQgaW50IHU7CmRpZmYgLS1naXQgYS90b29scy9lYXN5bG9nby9lYXN5bG9nby5jIGIvdG9vbHMvZWFzeWxvZ28vZWFzeWxvZ28uYwppbmRleCAwMGExZTRlLi40MWU1ODM4IDEwMDY0NAotLS0gYS90b29scy9lYXN5bG9nby9lYXN5bG9nby5jCisrKyBiL3Rvb2xzL2Vhc3lsb2dvL2Vhc3lsb2dvLmMKQEAgLTMsMTUgKzMsMTkgQEAKICoqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiogKEMpIDIwMDAgYnkgUGFvbG8gU2NhZmZhcmRpIChhcnNlbmlvQHRpbi5pdCkKICoqIEFJUlZFTlQgU0FNIHMucC5hIC0gUklNSU5JKElUQUxZKQorKiogKEMpIDIwMDctMjAwOCBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAqKgogKiogVGhpcyBpcyBzdGlsbCB1bmRlciBjb25zdHJ1Y3Rpb24hCiAqLwogCisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxnZXRvcHQuaD4KICNpbmNsdWRlIDxzdGRib29sLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCiAjcHJhZ21hIHBhY2soMSkKIApAQCAtNDksNiArNTMsMTcgQEAKIAlpbnQgd2lkdGgsIGhlaWdodCwgcGl4ZWxzLCBicHAsIHBpeGVsX3NpemUsIHNpemUsIHBhbGV0dGVfc2l6ZSwgeXV5djsKIH0gaW1hZ2VfdDsKIAordm9pZCAqeG1hbGxvYyAoc2l6ZV90IHNpemUpCit7CisJdm9pZCAqcmV0ID0gbWFsbG9jIChzaXplKTsKKwlpZiAoIXJldCkgeworCQlmcHJpbnRmIChzdGRlcnIsICJcbmVycm9yOiBtYWxsb2MoJXp1KSBmYWlsZWQ6ICVzIiwKKwkJCXNpemUsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQgKDEpOworCX0KKwlyZXR1cm4gcmV0OworfQorCiB2b2lkIFN0cmluZ1VwcGVyQ2FzZSAoY2hhciAqc3RyKQogewogCWludCBjb3VudCA9IHN0cmxlbiAoc3RyKTsKQEAgLTE3MSw3ICsxODYsNyBAQAogCWltYWdlLT5waXhlbF9zaXplID0gKChpbWFnZS0+YnBwIC0gMSkgLyA4KSArIDE7CiAJaW1hZ2UtPnBpeGVscyA9IGltYWdlLT53aWR0aCAqIGltYWdlLT5oZWlnaHQ7CiAJaW1hZ2UtPnNpemUgPSBpbWFnZS0+cGl4ZWxzICogaW1hZ2UtPnBpeGVsX3NpemU7Ci0JaW1hZ2UtPmRhdGEgPSBtYWxsb2MgKGltYWdlLT5zaXplKTsKKwlpbWFnZS0+ZGF0YSA9IHhtYWxsb2MgKGltYWdlLT5zaXplKTsKIAogCWlmIChpbWFnZS0+YnBwICE9IDI0KSB7CiAJCXByaW50ZiAoIkJwcCBub3Qgc3VwcG9ydGVkOiAlZCFcbiIsIGltYWdlLT5icHApOwpAQCAtMTkyLDcgKzIwNyw3IEBACiAvKiBTd2FwcGluZyBpbWFnZSAqLwogCiAJaWYgKCEoaGVhZGVyLkltYWdlRGVzY3JpcHRvckJ5dGUgJiAweDIwKSkgewotCQl1bnNpZ25lZCBjaGFyICp0ZW1wID0gbWFsbG9jIChpbWFnZS0+c2l6ZSk7CisJCXVuc2lnbmVkIGNoYXIgKnRlbXAgPSB4bWFsbG9jIChpbWFnZS0+c2l6ZSk7CiAJCWludCBsaW5lc2l6ZSA9IGltYWdlLT5waXhlbF9zaXplICogaW1hZ2UtPndpZHRoOwogCQl2b2lkICpkZXN0ID0gaW1hZ2UtPmRhdGEsCiAJCQkqc291cmNlID0gdGVtcCArIGltYWdlLT5zaXplIC0gbGluZXNpemU7CkBAIC0yMzksNyArMjU0LDcgQEAKIAl5dXl2X2ltYWdlLT5waXhlbHMgPSB5dXl2X2ltYWdlLT53aWR0aCAqIHl1eXZfaW1hZ2UtPmhlaWdodDsKIAl5dXl2X2ltYWdlLT5zaXplID0geXV5dl9pbWFnZS0+cGl4ZWxzICogeXV5dl9pbWFnZS0+cGl4ZWxfc2l6ZTsKIAlkZXN0ID0gKHVuc2lnbmVkIHNob3J0ICopICh5dXl2X2ltYWdlLT5kYXRhID0KLQkJCQkgICBtYWxsb2MgKHl1eXZfaW1hZ2UtPnNpemUpKTsKKwkJCQkgICB4bWFsbG9jICh5dXl2X2ltYWdlLT5zaXplKSk7CiAJeXV5dl9pbWFnZS0+cGFsZXR0ZSA9IDA7CiAJeXV5dl9pbWFnZS0+cGFsZXR0ZV9zaXplID0gMDsKIApAQCAtMjYxLDYgKzI3Niw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK2ludCB1c2VfZ3ppcCA9IDA7CisKIGludCBpbWFnZV9zYXZlX2hlYWRlciAoaW1hZ2VfdCAqIGltYWdlLCBjaGFyICpmaWxlbmFtZSwgY2hhciAqdmFybmFtZSkKIHsKIAlGSUxFICpmaWxlID0gZm9wZW4gKGZpbGVuYW1lLCAidyIpOwpAQCAtMjgzLDYgKzMwMCw2NSBAQAogCWZwcmludGYgKGZpbGUsICIgKlx0XHQneCdcdFx0aXMgdGhlIGhvcml6b250YWwgcG9zaXRpb25cbiIpOwogCWZwcmludGYgKGZpbGUsICIgKlx0XHQneSdcdFx0aXMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uXG4gKi9cblxuIik7CiAKKwkvKiAgZ3ppcCBjb21wcmVzcyAqLworCWlmICh1c2VfZ3ppcCAmIDB4MSkgeworCQljb25zdCBjaGFyICplcnJzdHIgPSBOVUxMOworCQl1bnNpZ25lZCBjaGFyICpjb21wcmVzc2VkOworCQlzdHJ1Y3Qgc3RhdCBzdDsKKwkJRklMRSAqZ3o7CisJCWNoYXIgKmd6ZmlsZW5hbWUgPSB4bWFsbG9jKHN0cmxlbiAoZmlsZW5hbWUpICsgMjApOworCQljaGFyICpnemNtZCA9IHhtYWxsb2Moc3RybGVuIChmaWxlbmFtZSkgKyAyMCk7CisKKwkJc3ByaW50ZiAoZ3pmaWxlbmFtZSwgIiVzLmd6IiwgZmlsZW5hbWUpOworCQlzcHJpbnRmIChnemNtZCwgImd6aXAgPiAlcyIsIGd6ZmlsZW5hbWUpOworCQlneiA9IHBvcGVuIChnemNtZCwgInciKTsKKwkJaWYgKCFneikgeworCQkJZXJyc3RyID0gIlxuZXJyb3I6IHBvcGVuKCkgZmFpbGVkIjsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCQlpZiAoZndyaXRlIChpbWFnZS0+ZGF0YSwgaW1hZ2UtPnNpemUsIDEsIGd6KSAhPSAxKSB7CisJCQllcnJzdHIgPSAiXG5lcnJvcjogd3JpdGluZyBkYXRhIHRvIGd6aXAgZmFpbGVkIjsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCQlpZiAocGNsb3NlIChneikpIHsKKwkJCWVycnN0ciA9ICJcbmVycm9yOiBnemlwIHByb2Nlc3MgZmFpbGVkIjsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWd6ID0gZm9wZW4gKGd6ZmlsZW5hbWUsICJyIik7CisJCWlmICghZ3opIHsKKwkJCWVycnN0ciA9ICJcbmVycm9yOiBvcGVuKCkgb24gZ3ppcCBkYXRhIGZhaWxlZCI7CisJCQlnb3RvIGRvbmU7CisJCX0KKwkJaWYgKHN0YXQgKGd6ZmlsZW5hbWUsICZzdCkpIHsKKwkJCWVycnN0ciA9ICJcbmVycm9yOiBzdGF0KCkgb24gZ3ppcCBmaWxlIGZhaWxlZCI7CisJCQlnb3RvIGRvbmU7CisJCX0KKwkJY29tcHJlc3NlZCA9IHhtYWxsb2MgKHN0LnN0X3NpemUpOworCQlpZiAoZnJlYWQgKGNvbXByZXNzZWQsIHN0LnN0X3NpemUsIDEsIGd6KSAhPSAxKSB7CisJCQllcnJzdHIgPSAiXG5lcnJvcjogcmVhZGluZyBnemlwIGRhdGEgZmFpbGVkIjsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCQlmY2xvc2UgKGd6KTsKKworCQl1bmxpbmsgKGd6ZmlsZW5hbWUpOworCisJCWRhdGFwdHIgPSBjb21wcmVzc2VkOworCQljb3VudCA9IHN0LnN0X3NpemU7CisJCWZwcmludGYgKGZpbGUsICIjZGVmaW5lIEVBU1lMT0dPX0VOQUJMRV9HWklQICVpXG5cbiIsIGNvdW50KTsKKwkJaWYgKHVzZV9nemlwICYgMHgyKQorCQkJZnByaW50ZiAoZmlsZSwgInN0YXRpYyB1bnNpZ25lZCBjaGFyIEVBU1lMT0dPX0RFQ09NUF9CVUZGRVJbJWldO1xuXG4iLCBpbWFnZS0+c2l6ZSk7CisKKyBkb25lOgorCQlmcmVlIChnemZpbGVuYW1lKTsKKwkJZnJlZSAoZ3pjbWQpOworCisJCWlmIChlcnJzdHIpIHsKKwkJCXBlcnJvciAoZXJyc3RyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKwogCS8qCUhlYWRlcnMgKi8KIAlmcHJpbnRmIChmaWxlLCAiI2luY2x1ZGUgPHZpZGVvX2Vhc3lsb2dvLmg+XG5cbiIpOwogCS8qCU1hY3JvcyAqLwpAQCAtMzAwLDggKzM3Niw4IEBACiAJZnByaW50ZiAoZmlsZSwgIiNkZWZpbmUJREVGXyVzX1NJWkVcdFx0JWRcblxuIiwgZGVmX25hbWUsCiAJCSBpbWFnZS0+c2l6ZSk7CiAJLyogIERlY2xhcmF0aW9uICovCi0JZnByaW50ZiAoZmlsZSwgInVuc2lnbmVkIGNoYXIgREVGXyVzX0RBVEFbREVGXyVzX1NJWkVdID0ge1xuIiwKLQkJIGRlZl9uYW1lLCBkZWZfbmFtZSk7CisJZnByaW50ZiAoZmlsZSwgInVuc2lnbmVkIGNoYXIgREVGXyVzX0RBVEFbXSA9IHtcbiIsCisJCSBkZWZfbmFtZSk7CiAKIAkvKglEYXRhICovCiAJd2hpbGUgKGNvdW50KQpAQCAtMzU5LDYgKzQzNSw4IEBACiAJCSJcbiIKIAkJIk9wdGlvbnM6XG4iCiAJCSIgIC1yICAgICBPdXRwdXQgUkdCIGluc3RlYWQgb2YgWVVZVlxuIgorCQkiICAtZyAgICAgQ29tcHJlc3Mgd2l0aCBnemlwXG4iCisJCSIgIC1iICAgICBQcmVhbGxvY2F0ZSBzcGFjZSBpbiBic3MgZm9yIGRlY29tcHJlc3NpbmcgaW1hZ2VcbiIKIAkJIiAgLWggICAgIEhlbHAgb3V0cHV0XG4iCiAJCSJcbiIKIAkJIldoZXJlOiAnaW5wdXRmaWxlJyAgIGlzIHRoZSBUR0EgaW1hZ2UgdG8gbG9hZFxuIgpAQCAtMzc3LDcgKzQ1NSw3IEBACiAKIAlpbWFnZV90IHJnYl9sb2dvLCB5dXl2X2xvZ287CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImhyIikpID4gMCkgeworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiaHJnYiIpKSA+IDApIHsKIAkJc3dpdGNoIChjKSB7CiAJCWNhc2UgJ2gnOgogCQkJdXNhZ2UgKDApOwpAQCAtMzg2LDYgKzQ2NCwxNCBAQAogCQkJdXNlX3JnYiA9IHRydWU7CiAJCQlwdXRzICgiVXNpbmcgMjQtYml0IFJHQiBPdXRwdXQgRnJvbWF0Iik7CiAJCQlicmVhazsKKwkJY2FzZSAnZyc6CisJCQl1c2VfZ3ppcCB8PSAweDE7CisJCQlwdXRzICgiQ29tcHJlc3Npbmcgd2l0aCBnemlwIik7CisJCQlicmVhazsKKwkJY2FzZSAnYic6CisJCQl1c2VfZ3ppcCB8PSAweDI7CisJCQlwdXRzICgiUHJlYWxsb2NhdGluZyBic3Mgc3BhY2UgZm9yIGRlY29tcHJlc3NpbmcgaW1hZ2UiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdXNhZ2UgKDEpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS90b29scy9lbnYvZndfZW52LmNvbmZpZyBiL3Rvb2xzL2Vudi9md19lbnYuY29uZmlnCmluZGV4IDBmZTM3YzkuLmM4ZjEyY2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Vudi9md19lbnYuY29uZmlnCisrKyBiL3Rvb2xzL2Vudi9md19lbnYuY29uZmlnCkBAIC0xLDUgKzEsNSBAQAogIyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIGZ3XyhwcmludGVudi9zYXZlZW52KSB1dGlsaXR5LgotIyBVcCB0byB0d28gZW50cmllcyBhcmUgdmFsaWQsIGluIHRoaXMgY2FzZSB0aGUgcmVkdW5kYW5kCisjIFVwIHRvIHR3byBlbnRyaWVzIGFyZSB2YWxpZCwgaW4gdGhpcyBjYXNlIHRoZSByZWR1bmRhbnQKICMgZW52aXJvbm1lbnQgc2VjdG9yIGlzIGFzc3VtZWQgcHJlc2VudC4KICMgTm90aWNlLCB0aGF0IHRoZSAiTnVtYmVyIG9mIHNlY3RvcnMiIGlzIGlnbm9yZWQgb24gTk9SLgogCmRpZmYgLS1naXQgYS90b29scy9uY2IuYyBiL3Rvb2xzL25jYi5jCmluZGV4IDc0ZGVlYmIuLjdlMTIzZjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL25jYi5jCisrKyBiL3Rvb2xzL25jYi5jCkBAIC04LDcgKzgsNyBAQAogCWludCBzLCBsZW4sIG8sIHBvcnQgPSA2NjY2OwogCWNoYXIgYnVmWzUxMl07CiAJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7Ci0JaW50IGFkZHJfbGVuID0gc2l6ZW9mIGFkZHI7CisJc29ja2xlbl90IGFkZHJfbGVuID0gc2l6ZW9mIGFkZHI7CiAKIAlpZiAoYXJnYyA+IDEpCiAJCXBvcnQgPSBhdG9pIChhcmd2WzFdKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL25ldGNvbnNvbGUgYi90b29scy9uZXRjb25zb2xlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA5Yzg5ODEKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9uZXRjb25zb2xlCkBAIC0wLDAgKzEsNDIgQEAKKyMhL2Jpbi9zaAorCit1c2FnZSgpIHsKKwkoCisJZWNobyAiVXNhZ2U6ICQwIDxib2FyZCBJUD4gW2JvYXJkIHBvcnRdIgorCWVjaG8gIiIKKwllY2hvICJJZiBwb3J0IGlzIG5vdCBzcGVjaWZpZWQsICc2NjY2JyB3aWxsIGJlIHVzZWQiCisJWyAteiAiJCoiIF0gJiYgZXhpdCAwCisJZWNobyAiIgorCWVjaG8gIkVSUk9SOiAkKiIKKwlleGl0IDEKKwkpIDE+JjIKKwlleGl0ICQ/Cit9CisKK3doaWxlIFsgLW4gIiQxIiBdIDsgZG8KKwljYXNlICQxIGluCisJCS1ofC0taGVscCkgdXNhZ2U7OworCQktLSkgICAgICAgIGJyZWFrOzsKKwkJLSopICAgICAgICB1c2FnZSAiSW52YWxpZCBvcHRpb24gJDEiOzsKKwkJKikgICAgICAgICBicmVhazs7CisJZXNhYworCXNoaWZ0Citkb25lCisKK2lwPSQxCitwb3J0PSR7MjotNjY2Nn0KKworaWYgWyAteiAiJHtpcH0iIF0gfHwgWyAtbiAiJDMiIF0gOyB0aGVuCisJdXNhZ2UgIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIKK2ZpCisKK2ZvciBuYyBpbiBuZXRjYXQgbmMgOyBkbworCXR5cGUgJHtuY30gPi9kZXYvbnVsbCAmJiBicmVhaworZG9uZQorCit0cmFwICJzdHR5IGljYW5vbiBlY2hvIGludHIgXkMiIDAgMiAzIDUgMTAgMTMgMTUKK2VjaG8gIk5PVEU6IHRoZSBpbnRlcnJ1cHQgc2lnbmFsIChub3JtYWxseSBeQykgaGFzIGJlZW4gcmVtYXBwZWQgdG8gXlQiCisKK3N0dHkgLWljYW5vbiAtZWNobyBpbnRyIF5UCiske25jfSAtdSAtbCAtcCAke3BvcnR9IDwgL2Rldi9udWxsICYKK2V4ZWMgJHtuY30gLXUgJHtpcH0gJHtwb3J0fQo=