ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGUyOWRjZTkuLjdjNTY1OTQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTAsNiArMTAsNyBAQAogKi5vcmlnCiAqLmEKICoubworKn4KIAogIwogIyBUb3AtbGV2ZWwgZ2VuZXJpYyBmaWxlcwpkaWZmIC0tZ2l0IGEvQ0hBTkdFTE9HIGIvQ0hBTkdFTE9HCmluZGV4IDM1OTc3ZDAuLjdiZDg2MTUgMTAwNjQ0Ci0tLSBhL0NIQU5HRUxPRworKysgYi9DSEFOR0VMT0cKQEAgLTEsMyArMSw0OTkgQEAKK2NvbW1pdCBlNzY3MGY2YzFlNTJhZTZkMmE0M2ZmNzVhOGJjZmE3YTVjODZlNDdiCitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUaHUgRmViIDE0IDIyOjQzOjIyIDIwMDggKzAxMDAKKworICAgIFBQQzogVXNlIHIyIGluc3RlYWQgb2YgcjI5IGFzIGdsb2JhbCBkYXRhIHBvaW50ZXIKKworICAgIFIyOSB3YXMgYW4gdW5sdWNreSBjaG9pY2UgYXMgd2l0aCByZWNlbnQgdG9vbGNoYWlucyAoZ2NjLTQuMi54KSBnY2MKKyAgICB3aWxsIHJlZnVzZSB0byB1c2UgbG9hZC9zdG9yZSBtdWx0aXBsZSBpbnNuczsgaW5zdGVhZCwgaXQgaXNzdWVzIGEKKyAgICBsaXN0IG9mIHNpbXBsZSBsb2FkL3N0b3JlIGluc3RydWN0aW9ucyB1cG9uIGZ1bmN0aW9uIGVudHJ5IGFuZCBleGl0LAorICAgIHJlc3VsdGluZyBpbiBiaWdnZXIgY29kZSBzaXplLCB3aGljaCBpbiB0dXJuIG1ha2VzIHRoZSBidWlsZCBmb3IgYQorICAgIGZldyBib2FyZHMgZmFpbC4KKworICAgIFVzZSByMiBpbnN0ZWFkLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDNjMjM0ZWZhNjkzYmM1OTkwNmMyYmU1NWM3OTE4ZWNiYjU1MzkyZWEKK0F1dGhvcjogVXdlIEtsZWluZS1Lw7ZuaWcgPFV3ZS5LbGVpbmUtS29lbmlnQGRpZ2kuY29tPgorRGF0ZToJV2VkIEphbiAzMCAwOTowODo0OSAyMDA4ICswMTAwCisKKyAgICBBUk06IG1ha2UgdGhlIG1hY2hpZCBjb25maWd1cmFibGUgdmlhIHRoZSBlbnZpcm9ubWVudAorCisgICAgSWYgdGhlIHZhcmlhYmxlICJtYWNoaWQiIGV4aXN0cywgbGV0IGRvX2Jvb3RtX2xpbnV4IHVzZSB0aGF0IGluc3RlYWQKKyAgICBvZiBiZC0+YmlfYXJjaF9udW1iZXIuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBVd2UgS2xlaW5lLUv2bmlnIDxVd2UuS2xlaW5lLUtvZW5pZ0BkaWdpLmNvbT4KKworY29tbWl0IGRkMjQwNTg0MDdjNWFkZDQ1Y2M2MGFlYzZjNzU3ZGRjMWExN2UxYjAKK0F1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+CitEYXRlOglXZWQgSmFuIDIzIDE2OjM0OjQ2IDIwMDggKzAyMDAKKworICAgIFVzZSAjaWZkZWYgQ09ORklHX0ZTTERNQUZFQworCisgICAgTUNEX3Rhc2tzLmMgbGFja3MgW3N1YmplY3RdIHNvIGNvbXBpbGF0aW9uIG9mIG1pcHMgdGFyZ2V0cyAoYW5kIG1vcmUsIHByb2JhYmx5KQorICAgIGZhaWxzCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KKworY29tbWl0IDI2YzdiYWI4MWUwOGRjN2JkNjk2YzQ4Zjc1MzQyOGE4Mjk2MjliZDgKK0F1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KK0RhdGU6CVNhdCBKYW4gMTkgMTA6MjU6NTkgMjAwOCArMDkwMAorCisgICAgY29tbW9uL21paXBoeXV0aWwuYzogQ2xlYW51cCBNSUlfREVCVUcgYW5kIGRlYnVnKCkKKworICAgIEN1cnJlbnQgTUlJX0RFQlVHIGlzIGNvbmZ1c2luZyBpbiB0d28gd2F5cy4gT25lIGlzIHVzZWxlc3MgZGVmaW5lLXRoZW4tCisgICAgdW5kZWYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4gVGhlIG90aGVyIGlzIHRoZXJlIGlzIG9ubHkgb25lIGRlYnVnKCkgaW4KKyAgICB0aGlzIGZpbGUsIGFuZCB0aGF0IGRvZXNuJ3Qgc2VlbSB3b3J0aHdoaWxlIHRvIGJvdGhlciBoYXZpbmcgTUlJX0RFQlVHLgorICAgIFdoaWxlIHRoZXJlIGFyZSBtYW55IHVzZWZ1bCBwcmludGYoKS9wdXRzKCkgZGVidWcgY29kZXMsIGJ1dCB0aGV5IGFyZSBmb3IKKyAgICBERUJVRywgbm90IGZvciBNSUlfREVCVUcuCisKKyAgICBUaGlzIHBhdGNoIHRyaWVzIHRvIHB1dCB0aGVtIGFsbCB0b2dldGhlciBpbnRvIE1JSV9ERUJVRyBhbmQgZGVidWcoKS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CisKK2NvbW1pdCA3NTFiOWI1MTg5ZjMyNzRiMDNjODA5MTcyNjMxMzE2ZDZiMDAyYzgyCitBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgorRGF0ZToJVGh1IEphbiAxNyAxNjo0MzoyNSAyMDA4ICswOTAwCisKKyAgICBPbmVOQU5EIEluaXRpYWwgUHJvZ3JhbSBMb2FkZXIgKElQTCkgc3VwcG9ydAorCisgICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBPbmVOQU5EIGJvb3Qgd2l0aGluIFUtQm9vdC4KKyAgICBCZWZvcmUgdGhpcyB3b3JrLCB3ZSB1c2VkIGFub3RoZXIgT25lTkFORCBJUEwgY2FsbGVkIFgtTG9hZGVyIGJhc2VkCisgICAgb24gb3BlbiBzb3VyY2UuIFdpdGggdGhpcyB3b3JrLCB3ZSBjYW4gYnVpbGQgdGhlIG9uZWJvb3QuYmluIGltYWdlCisgICAgd2l0aG91dCBvdGhlciBwcm9ncmFtLgorCisgICAgVGhlIGJ1aWxkIHNlcXVlbmNlIGlzIHNpbXBsZS4KKyAgICBGaXJzdCwgaXQgY29tcGlsZXMgdGhlIHUtYm9vdC5iaW4KKyAgICBTZWNvbmQsIGl0IGNvbXBpbGVzIE9uZU5BTkQgSVBMCisgICAgRmluYWxseSwgaXQgYmVjb21lcyB0aGUgb25lYm9vdC5iaW4gZnJvbSBPbmVOQU5EIElQTCBhbmQgdS1ib290LmJpbgorICAgIFRoZSBtZWNoYW5pc20gaXMgc2ltaWxhciB3aXRoIE5BTkQgYm9vdCBleGNlcHQgaXQgYm9vdHMgZnJvbSBpdHNlbGYuCisKKyAgICBBbm90aGVyIHRoaW5nIGlzIHRoYXQgeW91IGNhbiBvbmx5IHVzZSB0aGUgT25lTkFORCBJUEwgb25seSB0byB3b3JrCisgICAgb3RoZXIgYm9vdGxvYWRlciBzdWNoIGFzIFJlZEJvb3QgYW5kIHNvIG9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKworY29tbWl0IDIxZjZmOTYzNmYwZTk3ODM5NzU0ODc1MTM0NzQyNWZiZjhkNDJiYjMKK0F1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIEphbiAxNiAxMzowNjo1OSAyMDA4IC0wNjAwCisKKyAgICBGaXggQ09ORklHX01NQyB1c2FnZSBpbiBmYXQgY29kZQorCisgICAgQSAjaWYgc3RhdGVtZW50IGluIGZhdC5jIGRlcGVuZGVkIG9uIENPTkZJR19NTUMsIGluc3RlYWQgb2YKKyAgICBkZWZpbmVkKENPTkZJR19NTUMpLiAgVGhpcyBtZWFudCBDT05GSUdfTU1DIG5lZWRlZCB0byBiZSBkZWZpbmVkCisgICAgYXMgIjEiIHJhdGhlciB0aGFuIGp1c3QgZGVmaW5lZC4gIE5vdyBpdCdzIGJldHRlci4KKworICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGY1N2Q3ZDM2NGNlMTg5ZTM5YjBhNjQzMzhkMmY4MDEyYzA3NGEyYmQKK0F1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KK0RhdGU6CVR1ZSBKYW4gMTUgMTI6NTI6MzEgMjAwOCArMDEwMAorCisgICAgcHBjOiBSZWZhY3RvciBjYWNoZSByb3V0aW5lcywgc28gdGhlcmUgaXMgb25seSBvbmUgY29tbW9uIHNldC4KKworICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CisKK2NvbW1pdCBmZTg5MWVjZjRkMTg3ZTlkMTFkZGU4NjllZDQ2MjNhZjUyYjU0NDUxCitBdXRob3I6IEhpcm9zaGkgSXRvIDxpdG9AbWxiLmNvLmpwPgorRGF0ZToJVGh1IEphbiAzMSAxODozNTowNCAyMDA4ICswOTAwCisKKyAgICBORlMgVGltZW91dCB3aXRoIGxhcmdlIGZpbGVzLgorCisgICAgUmV0cnkgdG8gc2VuZCBORlMgcGFja2V0IGJlZm9yZSByZWFjaGluZyB0aW1lb3V0LgorCisgICAgU2lnbmVkLW9mZi1ieTogSGlyb3NoaSBJdG8gPGl0b0BtbGIuY28uanA+CisKK2NvbW1pdCA4OGY3MjUyN2Y1Yjg5YzA5MDVhZDVjMzZjYzJlZjhkMjlkZDZiYmYwCitBdXRob3I6IEpvaGFubmVzIFN0ZXplbmJhY2ggPGpzQHNpZzIxLm5ldD4KK0RhdGU6CVR1ZSBKYW4gMjkgMDA6MTE6MjUgMjAwOCArMDEwMAorCisgICAgQWRkIGRlcGVuZGVuY2llcyB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBwYXJhbGxlbCBtYWtlLgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9oYW5uZXMgU3RlemVuYmFjaCA8anNAc2lnMjEubmV0PgorCitjb21taXQgNmQxYjZmOWY4OWM4MTVlYWNhNDRhY2ZmOGU3M2VjZTcxODFmNjFiNgorQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CitEYXRlOglNb24gSmFuIDI4IDA1OjQ2OjAxIDIwMDggLTA1MDAKKworICAgIE1hcmsgYm9hcmRfaW5pdF9bZnJdIGFzIG5vcmV0dXJuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisKK2NvbW1pdCAxNjFiMmFmNGQ3YjQ4ZmQ2MDJjZTMzM2MzNTVhNGRmMDMzNzg5MmJiCitBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KK0RhdGU6CU1vbiBKYW4gMjggMDU6Mjg6NTAgMjAwOCAtMDUwMAorCisgICAgT25seSB1c2UgVEVYVF9CQVNFIGlmIGRlZmluZWQgYnkgdGhlIGJvYXJkCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisKK2NvbW1pdCAxYjc2OTg4MTc1MDAzMGYxMDc0MzgwOGI5ZDYwMTNlMTFmNTU5MzUwCitBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CitEYXRlOglGcmkgSmFuIDI1IDA3OjU0OjQ3IDIwMDggKzAxMDAKKworICAgIEZpeCByZW1haW5pbmcgQ09ORklHX0NPTU1BTkRTCisKKyAgICB1cGRhdGUgY29tbWVudHMKKyAgICBGaXggY29kaW5nIHN0eWxlCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgorCitjb21taXQgMGM5ZDQyZTZiMGI4M2Q1MDczMzVhMjkxZTNlYTk5MjQwMDM4ZjRiOQorQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgorRGF0ZToJTW9uIEphbiAyMSAxNjo0NjowMCAyMDA4ICswMTAwCisKKyAgICBBZGQgKn4gdG8gLmdpdGlnbm9yZQorCisgICAgT25lIHNob3VsZCBuZXZlciBhZGQgYSBiYWNrdXAgZmlsZSBlbmRpbmcgaW4gd2l0aCB+IHRvIHRoZSBnaXQgcmVwb3NpdG9yeS4KKworICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CisKK2NvbW1pdCAzY2ZiMGM1MWIyYmI1ZWRlNTRlY2E4NWFjZTViMWJhMTJiZTMxNGIwCitBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CitEYXRlOglUaHUgSmFuIDE3IDAwOjAyOjEwIDIwMDggLTA2MDAKKworICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lcyBmb3IgQVJSQVlfU0laRQorCisgICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKworY29tbWl0IGM3N2NlNDc0YjFjNTdiMTNlOWQzNmQ5ODMwZjE0Nzk2NmMxNDM2OTQKK0F1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KK0RhdGU6CU1vbiBKYW4gMTQgMjI6MDg6MTQgMjAwOCArMDEwMAorCisgICAgRml4IGluY29ycmVjdCBhZGRyZXNzIHRlc3QgaW4gQVQ5MUZfRGF0YWZsYXNoU2VsZWN0KCkuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgorCitjb21taXQgZDlhZDExNWJiZjdiYjA4NDJkZTdkYmQyNTAyYjdlNDMwZjgzY2MzZAorQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJV2VkIEZlYiAxMyAxNTowOTo1OCAyMDA4IC0wNjAwCisKKyAgICBGaXggYnVpbGRpbmcgb2YgZmR0X3N1cHBvcnQuYyBpZiBERUJVRyBzZXQKKworICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CisKK2NvbW1pdCBjNjI3NzZiZThkY2E0MDk3Y2EwM2Q0Zjk0MTVmMDhkNDg4N2I0NWQwCitBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CitEYXRlOglUdWUgRmViIDEyIDAwOjQ1OjA2IDIwMDggKzAxMDAKKworICAgIEdldCByaWQgb2YgIiN1bmRlZiBERUJVRyIgZnJvbSBib2FyZCBjb25maWcgZmlsZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgNzNiZjFlMmRlNzg2MmJjZGJkNWE5Zjk5M2IzZTg0YjY3YzhlYTljOAorQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgorRGF0ZToJVHVlIEphbiAxNSAxNzowOTo0MSAyMDA4IC0wNjAwCisKKyAgICBSZW1vdmUgI3VuZGVmIERFQlVHIGZyb20gTVBDODN4eCBib2FyZCBoZWFkZXIgZmlsZXMKKworICAgIFJlbW92ZSB0aGUgIiN1bmRlZiBERUJVRyIgbGluZSBmcm9tIGFsbCBGcmVlc2NhbGUgODN4eCBib2FyZCBoZWFkZXIgZmlsZXMuCisgICAgVGhlIGluY2x1c2lvbiBvZiB0aGlzIGxpbmUgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBlbmFibGUgZGVidWcgY29kZSBpbgorICAgIG90aGVyIHNvdXJjZSBmaWxlcywgYmVjYXVzZSAiI2RlZmluZSBERUJVRyIgdHlwaWNhbGx5IG5lZWRzIHRvIGJlIGRlZmluZWQKKyAgICBiZWZvcmUgYW55IGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgorCitjb21taXQgNjkwMThjZTJlMDg2ZTljYWYzNWI5MTRkNjc1YjgyYmM0ODg4ZjA3NworQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZToJVGh1IEphbiAxNyAwODoyNTo0NSAyMDA4IC0wNjAwCisKKyAgICBRRTogTW92ZSBGRFQgc3VwcG9ydCBpbnRvIGEgY29tbW9uIGZpbGUKKworICAgIE1vdmUgdGhlIGZsYXQgZGV2aWNlIHRyZWUgc2V0dXAgZm9yIFFFIHJlbGF0ZWQgZGV2aWNlcyBpbnRvCisgICAgYSBjb21tb24gZmlsZSBzaGFyZWQgYmV0d2VlbiA4M3h4ICYgODV4eCBwbGF0Zm9ybXMgdGhhdCBoYXZlIFFFJ3MuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorCitjb21taXQgMzdlM2M2MmZhMDdhODIzZTc1NjljODcyZTNhOTM5NWQyMjdlZDhlMworQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KK0RhdGU6CU1vbiBKYW4gMjggMTA6MTU6MDIgMjAwOCArMDEwMAorCisgICAgQURTNTEyMWU6IEREUjIgaW5pdC90aW1pbmcgdXBkYXRlLgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CisKK2NvbW1pdCBhYzkxNTI4MzBkN2ZkZWJhY2U4YTI2MGI3NzM3ZWYyODcwYzIxY2EwCitBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgorRGF0ZToJV2VkIEphbiAzMCAxMzozNjo1NyAyMDA4IC0wNzAwCisKKyAgICBEZXZpY2UgdHJlZSB1cGRhdGVzCisKKyAgICBDaGFuZ2VzIHRvIG1hdGNoIDUxMjEgZGV2aWNlIHRyZWUgZ29pbmcgbWFpbmxpbmUgaW4gMi42LjI1LgorCisgICAgQ2hhbmdlIE9GX1NPQyBmcm9tICJzb2M1MTIxIiB0byBwbGFpbiAic29jIi4KKyAgICBSZW1vdmUgdW5uZWVkZWQgInJlZi1mcmVxdWVuY3kiIGZpeHVwcy4KKyAgICBSZW1vdmUgImFkZHJlc3MiIGVuZXRhZGRyIGZpeHVwLgorCisgICAgQWRkIGJ1cy1mcmVxdWVuY3kgZml4dXAgZm9yIG9sZCBPRl9TT0Mgc28gb2xkCisgICAga2VybmVscyB3aXRoIG9sZCBkZXZpY2UgdHJlZXMgd2lsbCB3b3JrIHdpdGggbmV3CisgICAgdS1ib290IHdpdGggNjZNSHogSVBTIGNsb2NrCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGRlNTVkMThkZjNmZjJlYTYxNDYyNGU3NDc5M2RlN2M0MzUyMGUwZTcKK0F1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CitEYXRlOglXZWQgSmFuIDMwIDEzOjM2OjU2IDIwMDggLTA3MDAKKworICAgIENoYW5nZSBJUFMgZnJlcSB0byA2Nk1IegorCisgICAgUmVjb21tZW5kZWQgZnJlcXVlbmN5IGlzIDY2TUh6CisgICAgQ2hhbmdlIGRpdmlkZXIgZnJvbSA0IHRvIDMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGNkOWNiNjJmOWQ4Yjc4ZDZjM2FmNWQxZTliNWEzZDY4YTNkNzM5NzQKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CU1vbiBKYW4gMTQgMjI6Mzg6NTUgMjAwOCArMDEwMAorCisgICAgeHNlbmdpbmU6IHJlbmFtZSBib2FyZF9wb3N0X2luaXQgdG8gYm9hcmRfbGF0ZV9pbml0CisKKyAgICBtaXNzaW5nIG1pZ3JhdGlvbiBmcm9tICJDbGVhbnVwIG9mIHNvbWUgaW5pdCBmdW5jdGlvbnMiCisgICAgaW4gYzgzN2RjYjFhMzE2NzQ1MDkyNTY3YmZlNGZiMjY2ZDA5NDE4ODRmZgorCisgICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKworY29tbWl0IDhkYWZhODc0NzZiMGQ3MTcwZTIxOWMyZjVlMzg0MmM4MzNhOTE4MDcKK0F1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CitEYXRlOglTYXQgSmFuIDEyIDIzOjM1OjMzIDIwMDggLTA1MDAKKworICAgIEFkZCBhdHRyaWJ1dGUgUE9TVF9QUkVSRUwgdG8gRUNDIG1lbW9yeSBQT1NUCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KKworY29tbWl0IGE5MzkwN2M0M2Y4NDdmMDc2ZGQwZTM0ZWUzYjY5YjVlOGU2ZDBkMjkKK0F1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KK0RhdGU6CUZyaSBKYW4gMTggMDE6MTQ6MDMgMjAwOCArMDEwMAorCisgICAgVEZUUDogYWRkIGhvc3QgaXAgYWRkciBzdXBwb3J0CisKKyAgICBhbGxvdyB0byB1c2UgYSBkaWZmZXJlbnQgc2VydmVyIGFzIHNldCBpbiBzZXJ2ZXJpcAorICAgIGFkZCBDT05GSUdfVEZUUF9GSUxFX05BTUVfTUFYX0xFTiB0byBjb25maWd1cmUgdGhlIGZpbGUgbmFtZSBsZW5ndGgKKyAgICBpZiBub3QgZGVmaW5lZCB0aGUgbWF4IGxlbmd0aCB3aWxsIGJlIGF0IDEyOAorCisgICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKworY29tbWl0IDdlYzhiYjE1ZWUzNjhlYTU0ZDQ4ZDY0ODY3NzY3YTcwNGQ5YWI0YzIKK0F1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KK0RhdGU6CVRodSBEZWMgMjcgMTA6NTY6NTQgMjAwNyArMDEwMAorCisgICAgT01BUDU5MTI6IGZpeCBGSUZPIGhhbmRsaW5nIGluIFVBUlQgZHJpdmVyCisKKyAgICBBY2NvcmRpbmcgdG8gdGhlIE9NQVA1OTEyIFNlcmlhbCBJbnRlcmZhY2VzIFJlZmVyZW5jZSBHdWlkZSAoc2VlCisgICAgaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvdWcvc3BydTc2MGMvc3BydTc2MGMucGRmLCBwYWdlIDE1MCksIHRoZQorICAgIEZJRk9fRU4gZW5hYmxlIGJpdCBpbiB0aGUgRklGTyBDb250cm9sIFJlZ2lzdGVyIChGQ1IpIGNhbiBvbmx5IGJlCisgICAgY2hhbmdlZCB3aGVuIHRoZSBiYXVkIGNsb2NrIGlzIG5vdCBydW5uaW5nLCBpLiBlLiB3aGVuIGJvdGggRExMIGFuZAorICAgIERMSCBhcmUgc2V0IHRvIDAuCisKKyAgICBUaHVzIG1ha2Ugc3VyZSB0aGF0IERMTCBhbmQgRExIIGFyZSAwIHdoZW4gd3JpdGluZyB0aGUgRkNSLgorCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKworY29tbWl0IDE2MTU4Nzc4YjVmNTJmMjAxZTk1ZGVkMmQyZDkwODRiMGVkNTY3MGQKK0F1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KK0RhdGU6CVdlZCBEZWMgMTkgMTU6MTA6NTIgMjAwNyArMDEwMAorCisgICAgQVJNOiBTM0MyNHgwIFNvQyBOQU5EIGNvbnRyb2xsZXIgc3VwcG9ydAorCisgICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgc3VwcG9ydCB0byB0aGUgUzNDMjR4MCBTb0MgY29kZSBpbiB1LWJvb3QKKworICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CisKK2NvbW1pdCBhN2MxODVlZDNkOWY4ZWJkODVjZmMyODZlMWZmZWU3MmU0ODAzMTYzCitBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CitEYXRlOglXZWQgRGVjIDE5IDE0OjI0OjQwIDIwMDcgKzAxMDAKKworICAgIEFSTTogczNjMjR4eDogTXVsdGlwbGUgc2VyaWFsIHBvcnQgc3VwcG9ydAorCisgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIENPTkZJR19TRVJJQUxfTVVMVEkgb24gczNjMjR4MCBDUFUncworCisgICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KKworY29tbWl0IGEyNWY3MmYxZjczYTExZGU2ODI1MWZiODhjODk5OTFlMjAyZTY4ZmEKK0F1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KK0RhdGU6CVdlZCBEZWMgMTkgMTQ6MTY6NTcgMjAwNyArMDEwMAorCisgICAgQVJNOiBhcm05MjB0OiBBbGxvdyB1c2Ugb2YgJ2dkJyBwb2ludGVyIGZyb20gSVJRCisKKyAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byB1c2UgdGhlICdnZCcgcG9pbnRlciAoYW5kIHRodXMgZW52aXJvbm1lbnQKKyAgICBhbmQgZXZlcnl0aGluZyBlbHNlIGFzc29jaWF0ZWQgd2l0aCBpdCkgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBvbgorICAgIGFybTkyMHQuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgorCitjb21taXQgYmUxOWJkNWNkMGY0NTRiNjMyOTg4NDRhMGI1Mzc3ZTAyOWIyY2FhZAorQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgorRGF0ZToJV2VkIERlYyAxOSAxNDoxOTozOCAyMDA3ICswMTAwCisKKyAgICBBUk06IGFybTkyMC9zM2MyNHh4OiBJUlEgZGVtdWxpdHBsZXhlciBjYWxsYmFjaworCisgICAgVGhpcyBwYXRjaCBhZGRzIGEgSVJRIGRlbXVsdGlwbGV4ZXIgY2FsbGJhY2sgdG8gdGhlIGFybTkyMCBjcHUgY29yZSBjb2RlLAorICAgIHBsdXMgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIGl0IGZvciB0aGUgUzNDMjQxMC4KKworICAgIFRoZSBwdXJwb3NlIGlzIHRvIGFsbG93IGFybTkyMHQgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgdGhlIHMzYzI0eDAgdG8KKyAgICBpbXBsZW1lbnQgaW50ZXJydXB0IGhhbmRsZXJzIGluIHUtYm9vdCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBjb3JlCisgICAgYXJtOTIwdCBjb2RlLgorCisgICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KKworY29tbWl0IGE0MWRiYmQ5OGQyMDFkOGFlYTMxYjVkMjFkZjQ3NDJjMjBjZDdlZGEKK0F1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgorRGF0ZToJVHVlIERlYyAxOCAxNjowMzowNyAyMDA3IC0wODAwCisKKyAgICBBUk06IERpc3BsYXkgRXRoZXJuZXQgaW5mbyBpbiBkb19iZGluZm8gb25seSBpZiBDT05GSUdfQ01EX05FVCBpcyBkZWZpbmVkCisKKyAgICBBZGQgaWZkZWYgdG8gYmRpbmZvIGNvbW1hbmQgdG8gZGlzcGxheSBldGhlcm5ldCBpbmZvcm1hdGlvbgorICAgIG9ubHkgaWYgQ09ORklHX0NNRF9ORVQgaXMgZGVmaW5lZCBmb3IgYXJtIG1vZHVsZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBLIFIgR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgorCitjb21taXQgZjdhZDc5YjZmOWYwZjQ1NDM3YjYyZTE5YjQ1MzU2Y2MyYWFmNDg4NAorQXV0aG9yOiBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+CitEYXRlOglUdWUgRGVjIDE4IDE2OjAwOjU0IDIwMDcgLTA4MDAKKworICAgIEFSTTogYWRkIEkyQyBpbml0IGZ1bmN0aW9uIGNhbGwgaW4gbGliX2FybS9ib2FyZC5jCisKKyAgICBBZGRzIEkyQyBpbml0IGZ1bmMgY2FsbCB0byBpbml0IHNlcXVlbmNlIGZvciBBUk0gYm9hcmRzLiBUaGlzIGlzCisgICAgcHJlc2VudCBpbiBwcGMsYmxhY2tmaW4gYW5kIG90aGVyIHByb2Nlc3NvciBpbml0IHNlcXVlbmNlLgorCisgICAgU2lnbmVkLW9mZi1ieTogSyBSIEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KKworY29tbWl0IDRmZWRmZGRmOTc0NjFiODg2NjhiOWFlYzc3NGRmYjdhMGM2ZGMzNjgKK0F1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgorRGF0ZToJRnJpIERlYyA3IDAwOjQyOjMyIDIwMDcgKzAxMDAKKworICAgIEFSTTogQm9hcmQgdm9pY2VibHVlIHVwZGF0ZQorCisgICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgorCitjb21taXQgMmM1MjYwZjcxMTE2OGQ1ZWU5MWM3MGRkYmI3ZDg5NzAxM2VlZmM0NgorQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CitEYXRlOglUaHUgRGVjIDYgMjM6MjQ6NTcgMjAwNyArMDEwMAorCisgICAgQVJNOiBBVDkxUk05MjAwIGJhc2VkIGJvYXJkcyBjb25maWcgY2xlYW51cAorCisgICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgorCisgICAgUmVtb3ZlIG5vd2hlcmUgdXNlZCBzdHJ1Y3QgYmRfaW5mb19leHQsIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlcywgZml4CisgICAgaW5kZW50YXRpb24uCisKK2NvbW1pdCA0ODFmMjhiMWRiNWNkMjFkZWI1NWY2OTM5OWJhMjQwZTEwN2FmNGM3CitBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KK0RhdGU6CVRodSBEZWMgNiAyMjo1OToxNiAyMDA3ICswMTAwCisKKyAgICBBUk06IEZpeCBhdDkxcm05MjAwZGsgYmFzZSBhZGRyZXNzCisKKyAgICBTb21ld2hlcmUgZHVyaW5nIGRldmVsb3BtZW50IG9mIFUtQm9vdC0xLjEuMyBDT05GSUdfQk9PVEJJTkZVTkMgd2FzCisgICAgcmVuYW1lZCBpbnRvIENPTkZJR19JTklUX0NSSVRJQ0FMIHdoaWNoIHdhcyAwNCBBcHIgMjAwNSByZXBsYWNlZAorICAgIHdpdGggQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBhbmQgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QuCisgICAgSG93ZXZlciBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIGhhcyBvcG9zaXRlIG1lYW5pbmcgdG8KKyAgICBDT05GSUdfQk9PVEJJTkZVTkMsIHNvIGZpeCBjb25maWd1cmF0aW9uIHRvIHJlZmxlY3QgdGhpcyBmYWN0LgorICAgIEknbSBzZW5kaW5nIHRoaXMgcGF0Y2ggNHRoICghKSB0aW1lIGluIGhvcGUgaXQgcHJvZHVjZXMgYXQgbGVhc3Qgc29tZQorICAgIHJlYWN0aW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgorCisgICAgRml4IGF0OTFybTkyMDBkayBiYXNlIGFuZCBlbnZpcm9ubWVudCBhZGRyZXNzLgorCitjb21taXQgYzk1MjE5ZmFlMmE3YWRkN2RhYTJmOTFhZWRjYTY1YjE2OTg0NjVjNworQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KK0RhdGU6CVR1ZSBOb3YgMjAgMTA6NDA6MjQgMjAwNyArMDEwMAorCisgICAgTU1DIGZvciBQWEEgMjdYIChyZXN1Ym1pdCkKKworICAgIE1NQyBzdXBwb3J0IGZvciBYX1NjYWxlIFBYQSBpcyBicm9rZW4gYW5kIGRvZXMgbm90IHdvcmsuCisgICAgTWFpbmx5LCB0aGUgbW1jX2luaXQoKSBmdW5jdGlvbiBjYW5ub3QgcmVjb2duaXplIGN1cnJlbnQgU0QvTU1DIGNhcmRzLgorICAgIFRoZXJlIHdlcmUgYWxyZWFkeSBzb21lIHBhdGNoZXMgYXJvdW5kIHRoZSB3b3JsZCBidXQgbm9uZSBvZiB0aGVtIHdhcworICAgIG1lcmdlZCBpbnRvIHRoZSBvZmZpY2lhbCB1LWJvb3QgdHJlZS4KKworICAgIFRoaXMgcGF0Y2ggbWFrZXMgb3JkZXIgZml4aW5nIHRoaXMgaXNzdWUuIFJlc3VibWl0IGFmdGVyIGNvZGUgY2xlYW51cC4KKworICAgIEFwcGxpZWQgYW5kIHRlc3RlZCBvbiBQWEEgMjcwIChUcml6ZXBzSVYgbW9kdWxlKS4KKworICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgorCitjb21taXQgOTZiYmZhMWU2NjI1Y2UyM2ExNTA5MzY4NjNiM2VjZjRjODUzZWIzMworQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KK0RhdGU6CVR1ZSBOb3YgMjAgMTA6Mzc6MDQgMjAwNyArMDEwMAorCisgICAgRml4IGdjYyBpc3N1ZXMgaW4gcHhhLXJlZ3MuaAorCisgICAgRml4IGdjYzQgaXNzdWUuIFdpdGggc29tZSB0b29sY2hhaW4sIGEgcHJldmlvdXMgcGF0Y2ggdGhhdCBmaXhlcyBnY2M0CisgICAgaXNzdWVzIGdlbmVyYXRlcyB3cm9uZyBjb2RlLgorICAgIChQcm9ibGVtIHdhcyByZXBvcnRlZCB3aXRoIGdjYy00LjAuMi1nbGliYy0yLjMuNi9hcm0tc29mdGZsb2F0LWxpbnV4LWdudSkuCisgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSBhbmQgc29sdmVzIHRoZSBnY2MtNCBpc3N1ZXMgYXMgdGhlIGxpbnV4CisgICAga2VybmVsIGRvZXMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgSXZhbm92IDxpdmFkbWl0cnlAZ21haWwuY29tPgorCitjb21taXQgNzA0N2IzODg4NzZlN2I5MDViMmVjNGVkYjgwMTA1NDNlMzY0MWI4NQorQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+CitEYXRlOglUdWUgSmFuIDI5IDA4OjQ1OjAzIDIwMDggKzAxMDAKKworICAgIFRRTTgzNHg6IGVuYWJsZSBESENQCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+CisgICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IGE4NzcwMDRkNDRjYTdkYmMxZTYxOGFkZDNlZWIxZGE3Yzg0ZTRiZWMKK0F1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgorRGF0ZToJVHVlIEphbiAyOSAwODo0NTowMiAyMDA4ICswMTAwCisKKyAgICBUUU04MzR4OiBzdXBwb3J0IGZvciBTcGFuc2lvbiBOLXR5cGUgRmxhc2hlcyAoc2VjdG9yIHNpemUgPSAyNTYgS2lCIGF0IDJ4MTYgQml0KS4KKworICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgorCitjb21taXQgODkzMWFiMTc2MDI1YjAzY2ZjMzIwYjNmZDFlY2E0MzJhODhlZDU2MAorQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgorRGF0ZToJU2F0IEphbiAyNiAyMzo0MToxOSAyMDA4IC0wNTAwCisKKyAgICBGaXggY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb2YgbXB4OHh4eF9zcGkgZHJpdmVyCisKKyAgICBUaGlzIGRyaXZlciBzaG91bGQgb25seSBjb21waWxlIGlmIENPTkZJR19NUEM4WFhYX1NQSSBpcyBzZXQKKworICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CisgICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KKworY29tbWl0IDYzZjczMmQzZDM4ODBmZWI1MzFmNDhhZjI0N2MwMjViZjAxNDYyYjAKK0F1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KK0RhdGU6CVR1ZSBKYW4gMjkgMTc6MDA6MzQgMjAwOCArMDEwMAorCisgICAgQVBJOiBQcm92aWRlIGR1bW15IGhhbHQoKSBpbiB0aGUgZ2x1ZSBsYXllci4KKworICAgIFRoaXMgZml4ZXMgYSBkZW1vIGFwcCBsaW5rIGZhaWx1cmUgb24gcGxhdGZvcm1zIGNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfUEFOSUNfSEFORy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CisKK2NvbW1pdCAwZGMxZmMyMmFmODZkMTY5OTMzODhkOWVkOTYzMGRiYWEyZDUxODI2CitBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CitEYXRlOglUdWUgSmFuIDI5IDE2OjU3OjM4IDIwMDggKzAxMDAKKworICAgIEFQSTogQ29udmVydCBjb25kaXRpb25hbCBidWlsZGluZyB0byB0aGUgbmV3IHNjaGVtZS4KKworICAgIFRoaXMgZml4ZXMgYSBidWlsZCBicmVha2FnZSB3aXRoIENPTkZJR19BUEkgZW5hYmxlZCwgd2hpY2ggYXBwZWFyZWQgYWZ0ZXIKKyAgICB0aGUgcmVjZW50IGNoYW5nZXMgaW4gdGhlIFUtQm9vdCBidWlsZCBzeXN0ZW0uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgorCitjb21taXQgOThiNzQyNDg5YzA5NzgwYmU2YTgzMmVlYWE0ZTVlZmY4MjQ3OTJiYgorQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorRGF0ZToJRnJpIEphbiAyNSAwOTo1NjoxNyAyMDA4ICswMTAwCisKKyAgICBpbmthNHgwOiByZW1vdmUgZGVhZCBjb2RlCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorCitjb21taXQgMzNkYWMwM2IxYjVkNjFlNGZlZDdiYWQ0NDViYTQwYjRjOTdmZWJhMAorQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorRGF0ZToJV2VkIEphbiAyMyAxNDo0MTozNyAyMDA4ICswMTAwCisKKyAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRworCisgICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KKwogY29tbWl0IDg2NWYwZjk3NTRiOTUxODNjYWQzOTVkZTdlOGNiODVkZjBjNmVhMWYKIEF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KIERhdGU6CVdlZCBKYW4gMjMgMTQ6MzE6MTcgMjAwOCArMDEwMApkaWZmIC0tZ2l0IGEvTUFLRUFMTCBiL01BS0VBTEwKaW5kZXggZDY2YTVmYS4uMmFmZjRkYSAxMDA3NTUKLS0tIGEvTUFLRUFMTAorKysgYi9NQUtFQUxMCkBAIC03MjEsNyArNzIxLDcgQEAKIAkke01BS0V9ICR7Sk9CU30gYWxsIDI+JjEgPiR7TE9HX0RJUn0vJHRhcmdldC5NQUtFTE9HIFwKIAkJCQl8IHRlZSAke0xPR19ESVJ9LyR0YXJnZXQuRVJSCiAKLQkke0NST1NTX0NPTVBJTEU6LXBwY184eHgtfXNpemUgJHtCVUlMRF9ESVJ9L3UtYm9vdCBcCisJJHtDUk9TU19DT01QSUxFfXNpemUgJHtCVUlMRF9ESVJ9L3UtYm9vdCBcCiAJCQkJfCB0ZWUgLWEgJHtMT0dfRElSfS8kdGFyZ2V0Lk1BS0VMT0cKIH0KIApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCBiNGEzOTk0Li5mODBlNTExIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMjQxLDkgKzI0MSw3IEBACiAJInBvc3QvYm9hcmQvJChCT0FSRERJUikvbGlicG9zdCQoQk9BUkQpLmEiOyBmaSkKIExJQlMgKz0gY29tbW9uL2xpYmNvbW1vbi5hCiBMSUJTICs9IGxpYmZkdC9saWJmZHQuYQotaWZlcSAoJChDT05GSUdfQVBJKSx5KQogTElCUyArPSBhcGkvbGliYXBpLmEKLWVuZGlmCiAKIExJQlMgOj0gJChhZGRwcmVmaXggJChvYmopLCQoTElCUykpCiAuUEhPTlkgOiAkKExJQlMpCkBAIC0yNTQsMTEgKzI1Miw4IEBACiAjIFRoZSAidG9vbHMiIGFyZSBuZWVkZWQgZWFybHksIHNvIHB1dCB0aGlzIGZpcnN0CiAjIERvbid0IGluY2x1ZGUgc3R1ZmYgYWxyZWFkeSBkb25lIGluICQoTElCUykKIFNVQkRJUlMJPSB0b29scyBcCi0JICBleGFtcGxlcwotCi1pZmVxICgkKENPTkZJR19BUEkpLHkpCi1TVUJESVJTICs9IGFwaV9leGFtcGxlcwotZW5kaWYKKwkgIGV4YW1wbGVzIFwKKwkgIGFwaV9leGFtcGxlcwogCiAuUEhPTlkgOiAkKFNVQkRJUlMpCiAKQEAgLTI2NywxMyArMjYyLDE4IEBACiBVX0JPT1RfTkFORCA9ICQob2JqKXUtYm9vdC1uYW5kLmJpbgogZW5kaWYKIAoraWZlcSAoJChDT05GSUdfT05FTkFORF9VX0JPT1QpLHkpCitPTkVOQU5EX0lQTCA9IG9uZW5hbmRfaXBsCitVX0JPT1RfT05FTkFORCA9ICQob2JqKXUtYm9vdC1vbmVuYW5kLmJpbgorZW5kaWYKKwogX19PQkpTIDo9ICQoc3Vic3QgJChvYmopLCwkKE9CSlMpKQogX19MSUJTIDo9ICQoc3Vic3QgJChvYmopLCwkKExJQlMpKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUFMTCArPSAkKG9iail1LWJvb3Quc3JlYyAkKG9iail1LWJvb3QuYmluICQob2JqKVN5c3RlbS5tYXAgJChVX0JPT1RfTkFORCkKK0FMTCArPSAkKG9iail1LWJvb3Quc3JlYyAkKG9iail1LWJvb3QuYmluICQob2JqKVN5c3RlbS5tYXAgJChVX0JPT1RfTkFORCkgJChVX0JPT1RfT05FTkFORCkKIGlmZXEgKCQoQVJDSCksYmxhY2tmaW4pCiBBTEwgKz0gJChvYmopdS1ib290LmxkcgogZW5kaWYKQEAgLTMxNywxMyArMzE3LDEzIEBACiAJCQktLXN0YXJ0LWdyb3VwICQoX19MSUJTKSAtLWVuZC1ncm91cCAkKFBMQVRGT1JNX0xJQlMpIFwKIAkJCS1NYXAgdS1ib290Lm1hcCAtbyB1LWJvb3QKIAotJChPQkpTKToJJChvYmopaW5jbHVkZS9hdXRvY29uZi5taworJChPQkpTKToJZGVwZW5kICQob2JqKWluY2x1ZGUvYXV0b2NvbmYubWsKIAkJJChNQUtFKSAtQyBjcHUvJChDUFUpICQoaWYgJChSRU1PVEVfQlVJTEQpLCRALCQobm90ZGlyICRAKSkKIAotJChMSUJTKToJJChvYmopaW5jbHVkZS9hdXRvY29uZi5taworJChMSUJTKToJZGVwZW5kICQob2JqKWluY2x1ZGUvYXV0b2NvbmYubWsKIAkJJChNQUtFKSAtQyAkKGRpciAkKHN1YnN0ICQob2JqKSwsJEApKQogCi0kKFNVQkRJUlMpOgkkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rCiskKFNVQkRJUlMpOglkZXBlbmQgJChvYmopaW5jbHVkZS9hdXRvY29uZi5tawogCQkkKE1BS0UpIC1DICRAIGFsbAogCiAkKE5BTkRfU1BMKToJJChWRVJTSU9OX0ZJTEUpCSQob2JqKWluY2x1ZGUvYXV0b2NvbmYubWsKQEAgLTMzMiwxMiArMzMyLDE5IEBACiAkKFVfQk9PVF9OQU5EKToJJChOQU5EX1NQTCkgJChvYmopdS1ib290LmJpbiAkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rCiAJCWNhdCAkKG9iailuYW5kX3NwbC91LWJvb3Qtc3BsLTE2ay5iaW4gJChvYmopdS1ib290LmJpbiA+ICQob2JqKXUtYm9vdC1uYW5kLmJpbgogCiskKE9ORU5BTkRfSVBMKToJJChWRVJTSU9OX0ZJTEUpCSQob2JqKWluY2x1ZGUvYXV0b2NvbmYubWsKKwkJJChNQUtFKSAtQyBvbmVuYW5kX2lwbC9ib2FyZC8kKEJPQVJERElSKSBhbGwKKworJChVX0JPT1RfT05FTkFORCk6CSQoT05FTkFORF9JUEwpICQob2JqKXUtYm9vdC5iaW4gJChvYmopaW5jbHVkZS9hdXRvY29uZi5taworCQljYXQgJChvYmopb25lbmFuZF9pcGwvb25lbmFuZC1pcGwtMmsuYmluICQob2JqKXUtYm9vdC5iaW4gPiAkKG9iail1LWJvb3Qtb25lbmFuZC5iaW4KKwogJChWRVJTSU9OX0ZJTEUpOgogCQlAKCBlY2hvIC1uICIjZGVmaW5lIFVfQk9PVF9WRVJTSU9OIFwiVS1Cb290ICIgOyBcCiAJCWVjaG8gLW4gIiQoVV9CT09UX1ZFUlNJT04pIiA7IFwKIAkJZWNobyAtbiAkKHNoZWxsICQoQ09ORklHX1NIRUxMKSAkKFRPUERJUikvdG9vbHMvc2V0bG9jYWx2ZXJzaW9uIFwKIAkJCSAkKFRPUERJUikpIDsgXAotCQllY2hvICJcIiIgKSA+ICQoVkVSU0lPTl9GSUxFKQorCQllY2hvICJcIiIgKSA+ICRALnRtcAorCQlAY21wIC1zICRAICRALnRtcCAmJiBybSAtZiAkQC50bXAgfHwgbXYgLWYgJEAudG1wICRACiAKIGdkYnRvb2xzOgogCQkkKE1BS0UpIC1DIHRvb2xzL2dkYiBhbGwgfHwgZXhpdCAxCkBAIC0yNDY3LDIwICsyNDc0LDggQEAKIHZlcnNhdGlsZXBiX2NvbmZpZyA6CXVuY29uZmlnCiAJQGJvYXJkL3ZlcnNhdGlsZS9zcGxpdF9ieV92YXJpYW50LnNoICRACiAKLXZvaWNlYmx1ZV9zbWFsbGZsYXNoX2NvbmZpZwlcCiB2b2ljZWJsdWVfY29uZmlnOgl1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQG1rZGlyIC1wICQob2JqKWJvYXJkL3ZvaWNlYmx1ZQotCUBpZiBbICIkKGZpbmRzdHJpbmcgX3NtYWxsZmxhc2hfLCRAKSIgXSA7IHRoZW4gXAotCQkkKFhFQ0hPKSAiLi4uIGJvb3QgZnJvbSBsb3dlciBmbGFzaCBiYW5rIiA7IFwKLQkJZWNobyAiI2RlZmluZSBWT0lDRUJMVUVfU01BTExfRkxBU0giID4+JChvYmopaW5jbHVkZS9jb25maWcuaCA7IFwKLQkJZWNobyAiVk9JQ0VCTFVFX1NNQUxMX0ZMQVNIPXkiID4kKG9iailib2FyZC92b2ljZWJsdWUvY29uZmlnLnRtcCA7IFwKLQllbHNlIFwKLQkJJChYRUNITykgIi4uLiBib290IGZyb20gdXBwZXIgZmxhc2ggYmFuayIgOyBcCi0JCT4kKG9iailpbmNsdWRlL2NvbmZpZy5oIDsgXAotCQllY2hvICJWT0lDRUJMVUVfU01BTExfRkxBU0g9biIgPiQob2JqKWJvYXJkL3ZvaWNlYmx1ZS9jb25maWcudG1wIDsgXAotCWZpCi0JQCQoTUtDT05GSUcpIC1hIHZvaWNlYmx1ZSBhcm0gYXJtOTI1dCB2b2ljZWJsdWUKKwlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBhcm0gYXJtOTI1dCB2b2ljZWJsdWUKIAogY200MDA4X2NvbmZpZwk6CXVuY29uZmlnCiAJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgYXJtIGFybTkyMHQgY200MDA4IE5VTEwga3M4Njk1CkBAIC0yNjE0LDcgKzI2MDksOSBAQAogCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGFybSBhcm0xMTM2IG9tYXAyNDIwaDQKIAogYXBvbGxvbl9jb25maWcJCTogdW5jb25maWcKKwlAZWNobyAiI2RlZmluZSBDT05GSUdfT05FTkFORF9VX0JPT1QiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAogCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGFybSBhcm0xMTM2IGFwb2xsb24KKwlAZWNobyAiQ09ORklHX09ORU5BTkRfVV9CT09UID0geSIgPj4gJChvYmopaW5jbHVkZS9jb25maWcubWsKIAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBpMzg2CkBAIC0yOTE0LDYgKzI5MTEsOCBAQAogCUBybSAtZiAkKG9iailib2FyZC9iZjUzNy1zdGFtcC91LWJvb3QubGRzICQob2JqKWJvYXJkL2JmNTYxLWV6a2l0L3UtYm9vdC5sZHMKIAlAcm0gLWYgJChvYmopaW5jbHVkZS9ibXBfbG9nby5oCiAJQHJtIC1mICQob2JqKW5hbmRfc3BsL3UtYm9vdC1zcGwgJChvYmopbmFuZF9zcGwvdS1ib290LXNwbC5tYXAKKwlAcm0gLWYgJChvYmopb25lbmFuZF9pcGwvb25lbmFuZC1pcGwgJChvYmopb25lbmFuZF9pcGwvb25lbmFuZC1pcGwuYmluIFwKKwkJJChvYmopb25lbmFuZF9pcGwvb25lbmFuZC1pcGwtMmsuYmluICQob2JqKW9uZW5hbmRfaXBsL29uZW5hbmQtaXBsLm1hcAogCUBybSAtZiAkKG9iailhcGlfZXhhbXBsZXMvZGVtbyAkKFZFUlNJT05fRklMRSkKIAogY2xvYmJlcjoJY2xlYW4KQEAgLTI5MjgsNiArMjkyNyw3IEBACiAJQHJtIC1mICQob2JqKXRvb2xzL2luY2Etc3dhcC1ieXRlcyAkKG9iailjcHUvbXBjODI0eC9iZWRidWdfNjAzZS5jCiAJQHJtIC1mICQob2JqKWluY2x1ZGUvYXNtL3Byb2MgJChvYmopaW5jbHVkZS9hc20vYXJjaCAkKG9iailpbmNsdWRlL2FzbQogCUBbICEgLWQgJChvYmopbmFuZF9zcGwgXSB8fCBmaW5kICQob2JqKW5hbmRfc3BsIC1sbmFtZSAiKiIgLXByaW50IHwgeGFyZ3Mgcm0gLWYKKwlAWyAhIC1kICQob2JqKW9uZW5hbmRfaXBsIF0gfHwgZmluZCAkKG9iailvbmVuYW5kX2lwbCAtbG5hbWUgIioiIC1wcmludCB8IHhhcmdzIHJtIC1mCiAJQFsgISAtZCAkKG9iailhcGlfZXhhbXBsZXMgXSB8fCBmaW5kICQob2JqKWFwaV9leGFtcGxlcyAtbG5hbWUgIioiIC1wcmludCB8IHhhcmdzIHJtIC1mCiAKIGlmZXEgKCQoT0JKVFJFRSksJChTUkNUUkVFKSkKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCBkNGFmY2ZhLi40OTEzOTdhIDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0zNDk5LDcgKzM0OTksNyBAQAogCiBGb3IgUG93ZXJQQywgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMgaGF2ZSBzcGVjaWZpYyB1c2U6CiAJUjE6CXN0YWNrIHBvaW50ZXIKLQlSMjoJVE9DIHBvaW50ZXIKKwlSMjoJcmVzZXJ2ZWQgZm9yIHN5c3RlbSB1c2UKIAlSMy1SNDoJcGFyYW1ldGVyIHBhc3NpbmcgYW5kIHJldHVybiB2YWx1ZXMKIAlSNS1SMTA6IHBhcmFtZXRlciBwYXNzaW5nCiAJUjEzOglzbWFsbCBkYXRhIGFyZWEgcG9pbnRlcgpAQCAtMzUwOCw3ICszNTA4LDcgQEAKIAogCShVLUJvb3QgYWxzbyB1c2VzIFIxNCBhcyBpbnRlcm5hbCBHT1QgcG9pbnRlci4pCiAKLSAgICA9PT4gVS1Cb290IHdpbGwgdXNlIFIyOSB0byBob2xkIGEgcG9pbnRlciB0byB0aGUgZ2xvYmFsIGRhdGEKKyAgICA9PT4gVS1Cb290IHdpbGwgdXNlIFIyIHRvIGhvbGQgYSBwb2ludGVyIHRvIHRoZSBnbG9iYWwgZGF0YQogCiAgICAgTm90ZTogb24gUFBDLCB3ZSBjb3VsZCB1c2UgYSBzdGF0aWMgaW5pdGlhbGl6ZXIgKHNpbmNlIHRoZQogICAgIGFkZHJlc3Mgb2YgdGhlIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBpcyBrbm93biBhdCBjb21waWxlIHRpbWUpLApkaWZmIC0tZ2l0IGEvYXBpL01ha2VmaWxlIGIvYXBpL01ha2VmaWxlCmluZGV4IDk0ZGUzZGMuLjQyMTY4OTIgMTAwNjQ0Ci0tLSBhL2FwaS9NYWtlZmlsZQorKysgYi9hcGkvTWFrZWZpbGUKQEAgLTI0LDEzICsyNCwxMiBAQAogCiBMSUIJPSAkKG9iailsaWJhcGkuYQogCi1DT0JKUwk9IGFwaS5vIGFwaV9uZXQubyBhcGlfc3RvcmFnZS5vIGFwaV9wbGF0Zm9ybS0kKEFSQ0gpLm8KK0NPQkpTLSQoQ09ORklHX0FQSSkgKz0gYXBpLm8gYXBpX25ldC5vIGFwaV9zdG9yYWdlLm8gYXBpX3BsYXRmb3JtLSQoQVJDSCkubwogCitDT0JKUwk6PSAkKENPQkpTLXkpCiBTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKIAotYWxsOgkkKExJQikKLQogJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKIApkaWZmIC0tZ2l0IGEvYXBpL2FwaV9zdG9yYWdlLmMgYi9hcGkvYXBpX3N0b3JhZ2UuYwppbmRleCA3Y2Q0ZWZiLi43ZTYzMjQwIDEwMDY0NAotLS0gYS9hcGkvYXBpX3N0b3JhZ2UuYworKysgYi9hcGkvYXBpX3N0b3JhZ2UuYwpAQCAtNjEsMjEgKzYxLDIxIEBACiAKIHZvaWQgZGV2X3N0b3JfaW5pdCh2b2lkKQogewotI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0lERSkKKyNpZiBkZWZpbmVkKENPTkZJR19DTURfSURFKQogCXNwZWNzW0VOVU1fSURFXS5tYXhfZGV2ID0gQ0ZHX0lERV9NQVhERVZJQ0U7CiAJc3BlY3NbRU5VTV9JREVdLmVudW1fc3RhcnRlZCA9IDA7CiAJc3BlY3NbRU5VTV9JREVdLmVudW1fZW5kZWQgPSAwOwogCXNwZWNzW0VOVU1fSURFXS50eXBlID0gREVWX1RZUF9TVE9SIHwgRFRfU1RPUl9JREU7CiAJc3BlY3NbRU5VTV9JREVdLm5hbWUgPSAiaWRlIjsKICNlbmRpZgotI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX1VTQikKKyNpZiBkZWZpbmVkKENPTkZJR19DTURfVVNCKQogCXNwZWNzW0VOVU1fVVNCXS5tYXhfZGV2ID0gVVNCX01BWF9TVE9SX0RFVjsKIAlzcGVjc1tFTlVNX1VTQl0uZW51bV9zdGFydGVkID0gMDsKIAlzcGVjc1tFTlVNX1VTQl0uZW51bV9lbmRlZCA9IDA7CiAJc3BlY3NbRU5VTV9VU0JdLnR5cGUgPSBERVZfVFlQX1NUT1IgfCBEVF9TVE9SX1VTQjsKIAlzcGVjc1tFTlVNX1VTQl0ubmFtZSA9ICJ1c2IiOwogI2VuZGlmCi0jaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfU0NTSSkKKyNpZiBkZWZpbmVkKENPTkZJR19DTURfU0NTSSkKIAlzcGVjc1tFTlVNX1NDU0ldLm1heF9kZXYgPSBDRkdfU0NTSV9NQVhfREVWSUNFOwogCXNwZWNzW0VOVU1fU0NTSV0uZW51bV9zdGFydGVkID0gMDsKIAlzcGVjc1tFTlVNX1NDU0ldLmVudW1fZW5kZWQgPSAwOwpkaWZmIC0tZ2l0IGEvYXBpX2V4YW1wbGVzL01ha2VmaWxlIGIvYXBpX2V4YW1wbGVzL01ha2VmaWxlCmluZGV4IGNiNDlhOWUuLjU2NjZmNDggMTAwNjQ0Ci0tLSBhL2FwaV9leGFtcGxlcy9NYWtlZmlsZQorKysgYi9hcGlfZXhhbXBsZXMvTWFrZWZpbGUKQEAgLTMwLDE5ICszMCwyNSBAQAogCiBpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKIAotRUxGCSs9IGRlbW8KLUJJTgkrPSBkZW1vLmJpbgorRUxGLSQoQ09ORklHX0FQSSkgKz0gZGVtbworQklOLSQoQ09ORklHX0FQSSkgKz0gZGVtby5iaW4KK0VMRgk6PSAkKEVMRi15KQorQklOCTo9ICQoQklOLXkpCiAKICNDRkxBR1MgKz0gLXYKIAotQ09CSlMJOj0gJChFTEY6PS5vKQotU09CSlMJOj0gY3J0MC5vCitDT0JKUy0kKENPTkZJR19BUEkpICs9ICQoRUxGOj0ubykKK1NPQkpTLSQoQ09ORklHX0FQSSkgKz0gY3J0MC5vCiBpZmVxICgkKEFSQ0gpLHBwYykKLVNPQkpTCSs9IHBwY3N0cmluZy5vCitTT0JKUy0kKENPTkZJR19BUEkpICs9IHBwY3N0cmluZy5vCiBlbmRpZgorQ09CSlMJOj0gJChDT0JKUy15KQorU09CSlMJOj0gJChTT0JKUy15KQogCiBMSUIJPSAkKG9iailsaWJnbHVlLmEKLUxJQkNPQkpTPSBnbHVlLm8gY3JjMzIubyBjdHlwZS5vIHN0cmluZy5vIHZzcHJpbnRmLm8gbGliZ2Vud3JhcC5vCitMSUJDT0JKUy0kKENPTkZJR19BUEkpICs9IGdsdWUubyBjcmMzMi5vIGN0eXBlLm8gc3RyaW5nLm8gdnNwcmludGYubyBcCisJCQkJbGliZ2Vud3JhcC5vCitMSUJDT0JKUyA6PSAkKExJQkNPQkpTLXkpCiAKIExJQk9CSlMJPSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykgJChMSUJDT0JKUykpCiAKQEAgLTU1LDcgKzYxLDcgQEAKIAogQ1BQRkxBR1MgKz0gLUkuLgogCi1hbGw6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKExJQikgJChCSU4pICQoRUxGKQorYWxsOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChMSUIpICQoRUxGKSAkKEJJTikKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJChMSUIpOgkkKG9iaikuZGVwZW5kICQoTElCT0JKUykKZGlmZiAtLWdpdCBhL2FwaV9leGFtcGxlcy9saWJnZW53cmFwLmMgYi9hcGlfZXhhbXBsZXMvbGliZ2Vud3JhcC5jCmluZGV4IGRmNjI2MzMuLjJiNjJiYWQgMTAwNjQ0Ci0tLSBhL2FwaV9leGFtcGxlcy9saWJnZW53cmFwLmMKKysrIGIvYXBpX2V4YW1wbGVzL2xpYmdlbndyYXAuYwpAQCAtODQsNyArODQsMTIgQEAKIAl1Yl9yZXNldCgpOwogfQogCi12b2lkICptYWxsb2Moc2l6ZV90IGxlbikKK3ZvaWQgKm1hbGxvYyAoc2l6ZV90IGxlbikKIHsKIAlyZXR1cm4gTlVMTDsKIH0KKwordm9pZCBoYW5nICh2b2lkKQoreworCXdoaWxlICgxKSA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9CdVMvRUIrTUNGLUVWMTIzL21paS5jIGIvYm9hcmQvQnVTL0VCK01DRi1FVjEyMy9taWkuYwppbmRleCBlYmQzZWQ5Li4zZWEyMGE2IDEwMDY0NAotLS0gYS9ib2FyZC9CdVMvRUIrTUNGLUVWMTIzL21paS5jCisrKyBiL2JvYXJkL0J1Uy9FQitNQ0YtRVYxMjMvbWlpLmMKQEAgLTEzMiw3ICsxMzIsNyBAQAogCiAJcmV0dXJuIChtaWlfcmVwbHkgJiAweGZmZmYpOwkvKiBkYXRhIHJlYWQgZnJvbSBwaHkgKi8KIH0KLSNlbmRpZgkJCQkvKiBDRkdfRElTQ09WRVJfUEhZIHx8IChDT05GSUdfQ09NTUFORFMgJiBDT05GSUdfQ01EX01JSSkgKi8KKyNlbmRpZgkJCQkvKiBDRkdfRElTQ09WRVJfUEhZIHx8IENPTkZJR19DTURfTUlJICovCiAKICNpZiBkZWZpbmVkKENGR19ESVNDT1ZFUl9QSFkpCiBpbnQgbWlpX2Rpc2NvdmVyX3BoeShzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzNTEyMS9hZHM1MTIxLmMgYi9ib2FyZC9hZHM1MTIxL2FkczUxMjEuYwppbmRleCAxNTgyYzIyLi40NjJmNDFkIDEwMDY0NAotLS0gYS9ib2FyZC9hZHM1MTIxL2FkczUxMjEuYworKysgYi9ib2FyZC9hZHM1MTIxL2FkczUxMjEuYwpAQCAtMTI2LDI0ICsxMjYsMjQgQEAKIAlpbS0+bWRkcmMucHJpb21hbl9jb25maWcyID0gQ0ZHX01ERFJDR1JQX1BNX0NGRzI7CiAJaW0tPm1kZHJjLmhpcHJpb19jb25maWcgPSBDRkdfTUREUkNHUlBfSElQUklPX0NGRzsKIAlpbS0+bWRkcmMubHV0X3RhYmxlMF9tYWluX3VwcGVyID0gQ0ZHX01ERFJDR1JQX0xVVDBfTVU7Ci0JaW0tPm1kZHJjLmx1dF90YWJsZTFfbWFpbl91cHBlciA9IENGR19NRERSQ0dSUF9MVVQxX01VOwotCWltLT5tZGRyYy5sdXRfdGFibGUyX21haW5fdXBwZXIgPSBDRkdfTUREUkNHUlBfTFVUMl9NVTsKLQlpbS0+bWRkcmMubHV0X3RhYmxlM19tYWluX3VwcGVyID0gQ0ZHX01ERFJDR1JQX0xVVDNfTVU7Ci0JaW0tPm1kZHJjLmx1dF90YWJsZTRfbWFpbl91cHBlciA9IENGR19NRERSQ0dSUF9MVVQ0X01VOwogCWltLT5tZGRyYy5sdXRfdGFibGUwX21haW5fbG93ZXIgPSBDRkdfTUREUkNHUlBfTFVUMF9NTDsKKwlpbS0+bWRkcmMubHV0X3RhYmxlMV9tYWluX3VwcGVyID0gQ0ZHX01ERFJDR1JQX0xVVDFfTVU7CiAJaW0tPm1kZHJjLmx1dF90YWJsZTFfbWFpbl9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQxX01MOworCWltLT5tZGRyYy5sdXRfdGFibGUyX21haW5fdXBwZXIgPSBDRkdfTUREUkNHUlBfTFVUMl9NVTsKIAlpbS0+bWRkcmMubHV0X3RhYmxlMl9tYWluX2xvd2VyID0gQ0ZHX01ERFJDR1JQX0xVVDJfTUw7CisJaW0tPm1kZHJjLmx1dF90YWJsZTNfbWFpbl91cHBlciA9IENGR19NRERSQ0dSUF9MVVQzX01VOwogCWltLT5tZGRyYy5sdXRfdGFibGUzX21haW5fbG93ZXIgPSBDRkdfTUREUkNHUlBfTFVUM19NTDsKKwlpbS0+bWRkcmMubHV0X3RhYmxlNF9tYWluX3VwcGVyID0gQ0ZHX01ERFJDR1JQX0xVVDRfTVU7CiAJaW0tPm1kZHJjLmx1dF90YWJsZTRfbWFpbl9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQ0X01MOwogCWltLT5tZGRyYy5sdXRfdGFibGUwX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQwX0FVOwotCWltLT5tZGRyYy5sdXRfdGFibGUxX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQxX0FVOwotCWltLT5tZGRyYy5sdXRfdGFibGUyX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQyX0FVOwotCWltLT5tZGRyYy5sdXRfdGFibGUzX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQzX0FVOwotCWltLT5tZGRyYy5sdXRfdGFibGU0X2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQ0X0FVOwogCWltLT5tZGRyYy5sdXRfdGFibGUwX2FsdGVybmF0ZV9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQwX0FMOworCWltLT5tZGRyYy5sdXRfdGFibGUxX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQxX0FVOwogCWltLT5tZGRyYy5sdXRfdGFibGUxX2FsdGVybmF0ZV9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQxX0FMOworCWltLT5tZGRyYy5sdXRfdGFibGUyX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQyX0FVOwogCWltLT5tZGRyYy5sdXRfdGFibGUyX2FsdGVybmF0ZV9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQyX0FMOworCWltLT5tZGRyYy5sdXRfdGFibGUzX2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQzX0FVOwogCWltLT5tZGRyYy5sdXRfdGFibGUzX2FsdGVybmF0ZV9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQzX0FMOworCWltLT5tZGRyYy5sdXRfdGFibGU0X2FsdGVybmF0ZV91cHBlciA9IENGR19NRERSQ0dSUF9MVVQ0X0FVOwogCWltLT5tZGRyYy5sdXRfdGFibGU0X2FsdGVybmF0ZV9sb3dlciA9IENGR19NRERSQ0dSUF9MVVQ0X0FMOwogCiAJLyogSW5pdGlhbGl6ZSBNRERSQyAqLwpAQCAtMTU3LDE4ICsxNTcsMjYgQEAKIAkJaW0tPm1kZHJjLmRkcl9jb21tYW5kID0gQ0ZHX01JQ1JPTl9OT1A7CiAKIAlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX1BDSEdfQUxMOworCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fTk9QOworCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fUkZTSDsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX05PUDsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX1JGU0g7CisJaW0tPm1kZHJjLmRkcl9jb21tYW5kID0gQ0ZHX01JQ1JPTl9OT1A7CisJaW0tPm1kZHJjLmRkcl9jb21tYW5kID0gQ0ZHX01JQ1JPTl9JTklUX0RFVl9PUDsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX05PUDsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX0VNMjsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX05PUDsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX1BDSEdfQUxMOwogCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fRU0yOwogCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fRU0zOwogCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fRU5fRExMOwotCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fUlNUX0RMTDsKKwlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX0lOSVRfREVWX09QOwogCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fUENIR19BTEw7CiAJaW0tPm1kZHJjLmRkcl9jb21tYW5kID0gQ0ZHX01JQ1JPTl9SRlNIOwogCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fSU5JVF9ERVZfT1A7CiAJaW0tPm1kZHJjLmRkcl9jb21tYW5kID0gQ0ZHX01JQ1JPTl9PQ0RfREVGQVVMVDsKLQlpbS0+bWRkcmMuZGRyX2NvbW1hbmQgPSBDRkdfTUlDUk9OX09DRF9FWElUOwotCi0JZm9yIChpID0gMDsgaSA8IDEwOyBpKyspCi0JCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fTk9QOworCWltLT5tZGRyYy5kZHJfY29tbWFuZCA9IENGR19NSUNST05fUENIR19BTEw7CisJaW0tPm1kZHJjLmRkcl9jb21tYW5kID0gQ0ZHX01JQ1JPTl9OT1A7CiAKIAkvKiBTdGFydCBNRERSQyAqLwogCWltLT5tZGRyYy5kZHJfdGltZV9jb25maWcwID0gQ0ZHX01ERFJDX1RJTUVfQ0ZHMF9SVU47CmRpZmYgLS1naXQgYS9ib2FyZC9hcG9sbG9uL2Fwb2xsb24uYyBiL2JvYXJkL2Fwb2xsb24vYXBvbGxvbi5jCmluZGV4IDA2NGQxNDMuLjM4M2IwNjQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2Fwb2xsb24vYXBvbGxvbi5jCisrKyBiL2JvYXJkL2Fwb2xsb24vYXBvbGxvbi5jCkBAIC00NDAsNyArNDQwLDggQEAKIHZvaWQgbXV4U2V0dXBHUE1DKHZvaWQpCiB7CiAJLyogZ3BtY19pb19kaXIsIE1DUiAqLwotCXdyaXRlbCgweDQ4MDAwMDhDLCAweDE5MDAwMDAwKTsKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKk1DUiA9ICh1bnNpZ25lZCBpbnQgKikgMHg0ODAwMDA4QzsKKwkqTUNSID0gMHgxOTAwMDAwMDsKIAogCS8qIE5PUiBGTEFTSCBDUzAgKi8KIAkvKiBzaWduYWwgLSBHcG1jX2NsazsgcGluIC0gSjQ7IG9mZnNldCAtIDB4MDA4ODsgbW9kZSAwOyBCeXRlLTMgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2NvYnJhNTI3Mi9taWkuYyBiL2JvYXJkL2NvYnJhNTI3Mi9taWkuYwppbmRleCBmYWRjYmIzLi5kMGE0YTM5IDEwMDY0NAotLS0gYS9ib2FyZC9jb2JyYTUyNzIvbWlpLmMKKysrIGIvYm9hcmQvY29icmE1MjcyL21paS5jCkBAIC0xMzEsNyArMTMxLDcgQEAKIAogCXJldHVybiAobWlpX3JlcGx5ICYgMHhmZmZmKTsJLyogZGF0YSByZWFkIGZyb20gcGh5ICovCiB9Ci0jZW5kaWYJCQkJLyogQ0ZHX0RJU0NPVkVSX1BIWSB8fCAoQ09ORklHX0NPTU1BTkRTICYgQ09ORklHX0NNRF9NSUkpICovCisjZW5kaWYJCQkJLyogQ0ZHX0RJU0NPVkVSX1BIWSB8fCBDT05GSUdfQ01EX01JSSAqLwogCiAjaWYgZGVmaW5lZChDRkdfRElTQ09WRVJfUEhZKQogaW50IG1paV9kaXNjb3Zlcl9waHkoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2JvYXJkL2lkbXIvbWlpLmMgYi9ib2FyZC9pZG1yL21paS5jCmluZGV4IGY2YzYzYzMuLmYxMzBlNmUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2lkbXIvbWlpLmMKKysrIGIvYm9hcmQvaWRtci9taWkuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAKIAlyZXR1cm4gKG1paV9yZXBseSAmIDB4ZmZmZik7CS8qIGRhdGEgcmVhZCBmcm9tIHBoeSAqLwogfQotI2VuZGlmCQkJCS8qIENGR19ESVNDT1ZFUl9QSFkgfHwgKENPTkZJR19DT01NQU5EUyAmIENPTkZJR19DTURfTUlJKSAqLworI2VuZGlmCQkJCS8qIENGR19ESVNDT1ZFUl9QSFkgfHwgQ09ORklHX0NNRF9NSUkgKi8KIAogI2lmIGRlZmluZWQoQ0ZHX0RJU0NPVkVSX1BIWSkKIGludCBtaWlfZGlzY292ZXJfcGh5KHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9ib2FyZC9tNTI3MWV2Yi9taWkuYyBiL2JvYXJkL201MjcxZXZiL21paS5jCmluZGV4IDM4MzBjZTcuLjc4YTcwMjggMTAwNjQ0Ci0tLSBhL2JvYXJkL201MjcxZXZiL21paS5jCisrKyBiL2JvYXJkL201MjcxZXZiL21paS5jCkBAIC0xMzEsNyArMTMxLDcgQEAKIAogCXJldHVybiAobWlpX3JlcGx5ICYgMHhmZmZmKTsJLyogZGF0YSByZWFkIGZyb20gcGh5ICovCiB9Ci0jZW5kaWYJCQkJLyogQ0ZHX0RJU0NPVkVSX1BIWSB8fCAoQ09ORklHX0NPTU1BTkRTICYgQ09ORklHX0NNRF9NSUkpICovCisjZW5kaWYJCQkJLyogQ0ZHX0RJU0NPVkVSX1BIWSB8fCBDT05GSUdfQ01EX01JSSAqLwogCiAjaWYgZGVmaW5lZChDRkdfRElTQ09WRVJfUEhZKQogaW50IG1paV9kaXNjb3Zlcl9waHkoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2JvYXJkL201MjcyYzMvbWlpLmMgYi9ib2FyZC9tNTI3MmMzL21paS5jCmluZGV4IDBlY2M0NGEuLmIzMGJhODAgMTAwNjQ0Ci0tLSBhL2JvYXJkL201MjcyYzMvbWlpLmMKKysrIGIvYm9hcmQvbTUyNzJjMy9taWkuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAKIAlyZXR1cm4gKG1paV9yZXBseSAmIDB4ZmZmZik7CS8qIGRhdGEgcmVhZCBmcm9tIHBoeSAqLwogfQotI2VuZGlmCQkJCS8qIENGR19ESVNDT1ZFUl9QSFkgfHwgKENPTkZJR19DT01NQU5EUyAmIENPTkZJR19DTURfTUlJKSAqLworI2VuZGlmCQkJCS8qIENGR19ESVNDT1ZFUl9QSFkgfHwgQ09ORklHX0NNRF9NSUkgKi8KIAogI2lmIGRlZmluZWQoQ0ZHX0RJU0NPVkVSX1BIWSkKIGludCBtaWlfZGlzY292ZXJfcGh5KHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9ib2FyZC9tNTI4MmV2Yi9taWkuYyBiL2JvYXJkL201MjgyZXZiL21paS5jCmluZGV4IGQ3YzZkMWYuLjhhZTJlYzYgMTAwNjQ0Ci0tLSBhL2JvYXJkL201MjgyZXZiL21paS5jCisrKyBiL2JvYXJkL201MjgyZXZiL21paS5jCkBAIC0xMzIsNyArMTMyLDcgQEAKIAogCXJldHVybiAobWlpX3JlcGx5ICYgMHhmZmZmKTsJLyogZGF0YSByZWFkIGZyb20gcGh5ICovCiB9Ci0jZW5kaWYJCQkJLyogQ0ZHX0RJU0NPVkVSX1BIWSB8fCAoQ09ORklHX0NPTU1BTkRTICYgQ09ORklHX0NNRF9NSUkpICovCisjZW5kaWYJCQkJLyogQ0ZHX0RJU0NPVkVSX1BIWSB8fCBDT05GSUdfQ01EX01JSSAqLwogCiAjaWYgZGVmaW5lZChDRkdfRElTQ09WRVJfUEhZKQogaW50IG1paV9kaXNjb3Zlcl9waHkoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2JvYXJkL3ZvaWNlYmx1ZS9NYWtlZmlsZSBiL2JvYXJkL3ZvaWNlYmx1ZS9NYWtlZmlsZQppbmRleCA1ZjM0MGI0Li45Mzg2YmIwIDEwMDY0NAotLS0gYS9ib2FyZC92b2ljZWJsdWUvTWFrZWZpbGUKKysrIGIvYm9hcmQvdm9pY2VibHVlL01ha2VmaWxlCkBAIC02Miw3ICs2Miw3IEBACiAKIAogZGlzdGNsZWFuOgljbGVhbgotCXJtIC1mICQoTElCKSBjb3JlIGNvbmZpZy50bXAgKi5iYWsgLmRlcGVuZAorCXJtIC1mICQoTElCKSBjb3JlICouYmFrIC5kZXBlbmQKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9ib2FyZC92b2ljZWJsdWUvY29uZmlnLm1rIGIvYm9hcmQvdm9pY2VibHVlL2NvbmZpZy5tawppbmRleCBkNTVkYWE0Li4yY2ZjNTZhIDEwMDY0NAotLS0gYS9ib2FyZC92b2ljZWJsdWUvY29uZmlnLm1rCisrKyBiL2JvYXJkL3ZvaWNlYmx1ZS9jb25maWcubWsKQEAgLTEsMTYgKzEgQEAKLSMKLSMgTGludXgtS2VybmVsIGlzIGV4cGVjdGVkIHRvIGJlIGF0IDEwMDAnODAwMCwKLSMgZW50cnkgMTAwMCc4MDAwIChtZW0gYmFzZSArIHJlc2VydmVkKQotIwotCi1zaW5jbHVkZSAkKE9CSlRSRUUpL2JvYXJkLyQoQk9BUkRESVIpL2NvbmZpZy50bXAKLQotaWZlcSAoJChWT0lDRUJMVUVfU01BTExfRkxBU0gpLHkpCi0jIFdlIGxvYWQgb3Vyc2VsZiB0byBpbnRlcm5hbCBTUkFNIGF0IDIwMDEnMjAwMAotIyBDaGVjayBtYXAgZmlsZSB3aGVuIGNoYW5naW5nIFRFWFRfQkFTRS4KLSMgRXZlcnl0aGluZyBoYXMgZml0IGludG8gMTkya0IgaW50ZXJuYWwgU1JBTSEKLVRFWFRfQkFTRSA9IDB4MjAwMTIwMDAKLWVsc2UKLSMgUnVubmluZyBpbiBTRFJBTS4uLgogVEVYVF9CQVNFID0gMHgxM0ZEMDAwMAotZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL3ZvaWNlYmx1ZS9zZXR1cC5TIGIvYm9hcmQvdm9pY2VibHVlL3NldHVwLlMKaW5kZXggZGNmMzdiNS4uNzhjZDJiNiAxMDA2NDQKLS0tIGEvYm9hcmQvdm9pY2VibHVlL3NldHVwLlMKKysrIGIvYm9hcmQvdm9pY2VibHVlL3NldHVwLlMKQEAgLTc3LDcgKzc3LDcgQEAKIAkud29yZCAweDAwMDAwMDAwCUAgRlVOQ19NVVhfQ1RSTF8zCiAJLndvcmQgMHgwMDAwMDAwMAlAIEZVTkNfTVVYX0NUUkxfNAogCS53b3JkIDB4MTIwODI0ODAJQCBGVU5DX01VWF9DVFJMXzUKLQkud29yZCAweDAwMDAwMDA0CUAgRlVOQ19NVVhfQ1RSTF82CisJLndvcmQgMHgwMDAwMDAxYwlAIEZVTkNfTVVYX0NUUkxfNgogCS53b3JkIDB4MDAwMDAwMDMJQCBGVU5DX01VWF9DVFJMXzcKIAkud29yZCAweDEwMDAxMjAwCUAgRlVOQ19NVVhfQ1RSTF84CiAJLndvcmQgMHgwMTIwMTAxMglAIEZVTkNfTVVYX0NUUkxfOQpkaWZmIC0tZ2l0IGEvYm9hcmQveHNlbmdpbmUveHNlbmdpbmUuYyBiL2JvYXJkL3hzZW5naW5lL3hzZW5naW5lLmMKaW5kZXggMjNkNTZjNC4uNjU5MjNlOSAxMDA2NDQKLS0tIGEvYm9hcmQveHNlbmdpbmUveHNlbmdpbmUuYworKysgYi9ib2FyZC94c2VuZ2luZS94c2VuZ2luZS5jCkBAIC00Nyw3ICs0Nyw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBib2FyZF9wb3N0X2luaXQgKHZvaWQpCitpbnQgYm9hcmRfbGF0ZV9pbml0ICh2b2lkKQogewogCXNldGVudiAoInN0ZG91dCIsICJzZXJpYWwiKTsKIAlzZXRlbnYgKCJzdGRlcnIiLCAic2VyaWFsIik7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX2JkaW5mby5jIGIvY29tbW9uL2NtZF9iZGluZm8uYwppbmRleCAzYTRkYmNmLi5iYmIwMTkyIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2JkaW5mby5jCisrKyBiL2NvbW1vbi9jbWRfYmRpbmZvLmMKQEAgLTM0Nyw2ICszNDcsNyBAQAogCQlwcmludF9udW0oIi0+IHNpemUiLAliZC0+YmlfZHJhbVtpXS5zaXplKTsKIAl9CiAKKyNpZiBkZWZpbmVkKENPTkZJR19DTURfTkVUKQogCXB1dHMgKCJldGhhZGRyICAgICA9Iik7CiAJZm9yIChpPTA7IGk8NjsgKytpKSB7CiAJCXByaW50ZiAoIiVjJTAyWCIsIGkgPyAnOicgOiAnICcsIGJkLT5iaV9lbmV0YWRkcltpXSk7CkBAIC0zNTQsNiArMzU1LDcgQEAKIAlwdXRzICAoICJcbiIKIAkJImlwX2FkZHIgICAgID0gIik7CiAJcHJpbnRfSVBhZGRyIChiZC0+YmlfaXBfYWRkcik7CisjZW5kaWYKIAlwcmludGYgKCJcbiIKIAkJImJhdWRyYXRlICAgID0gJWQgYnBzXG4iLCBiZC0+YmlfYmF1ZHJhdGUpOwogCmRpZmYgLS1naXQgYS9jb21tb24vY21kX21lbS5jIGIvY29tbW9uL2NtZF9tZW0uYwppbmRleCBkMDgwODEwLi4wMDAxMDdmIDEwMDY0NAotLS0gYS9jb21tb24vY21kX21lbS5jCisrKyBiL2NvbW1vbi9jbWRfbWVtLmMKQEAgLTY5Nyw2ICs2OTcsNyBAQAogCXZ1X2xvbmcJKmFkZHIsICpzdGFydCwgKmVuZDsKIAl1bG9uZwl2YWw7CiAJdWxvbmcJcmVhZGJhY2s7CisJaW50ICAgICByY29kZSA9IDA7CiAKICNpZiBkZWZpbmVkKENGR19BTFRfTUVNVEVTVCkKIAl2dV9sb25nCWFkZHJfbWFzazsKQEAgLTcyNyw3ICs3MjgsNiBAQAogI2Vsc2UKIAl1bG9uZwlpbmNyOwogCXVsb25nCXBhdHRlcm47Ci0JaW50ICAgICByY29kZSA9IDA7CiAjZW5kaWYKIAogCWlmIChhcmdjID4gMSkgewpAQCAtOTkyLDggKzk5Miw4IEBACiAJCX0KIAkJaW5jciA9IC1pbmNyOwogCX0KLQlyZXR1cm4gcmNvZGU7CiAjZW5kaWYKKwlyZXR1cm4gcmNvZGU7CiB9CiAKIApkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9uZXQuYyBiL2NvbW1vbi9jbWRfbmV0LmMKaW5kZXggNTZlYjY4NC4uZGJmNmI4NiAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9uZXQuYworKysgYi9jb21tb24vY21kX25ldC5jCkBAIC01MSw3ICs1MSw3IEBACiBVX0JPT1RfQ01EKAogCXRmdHBib290LAkzLAkxLAlkb190ZnRwYiwKIAkidGZ0cGJvb3QtIGJvb3QgaW1hZ2UgdmlhIG5ldHdvcmsgdXNpbmcgVEZUUCBwcm90b2NvbFxuIiwKLQkiW2xvYWRBZGRyZXNzXSBbYm9vdGZpbGVuYW1lXVxuIgorCSJbbG9hZEFkZHJlc3NdIFtbaG9zdElQYWRkcjpdYm9vdGZpbGVuYW1lXVxuIgogKTsKIAogaW50IGRvX3JhcnBiIChjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKZGlmZiAtLWdpdCBhL2NvbW1vbi9mZHRfc3VwcG9ydC5jIGIvY29tbW9uL2ZkdF9zdXBwb3J0LmMKaW5kZXggYTEzYzE0MC4uNjllYjY2NyAxMDA2NDQKLS0tIGEvY29tbW9uL2ZkdF9zdXBwb3J0LmMKKysrIGIvY29tbW9uL2ZkdF9zdXBwb3J0LmMKQEAgLTMwLDkgKzMwLDYgQEAKICNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPGV4cG9ydHMuaD4KIAotI2lmZGVmIENPTkZJR19RRQotI2luY2x1ZGUgIi4uL2RyaXZlcnMvcWUvcWUuaCIKLSNlbmRpZgogLyoKICAqIEdsb2JhbCBkYXRhIChmb3IgdGhlIGdkLT5iZCkKICAqLwpAQCAtNDE4LDcgKzQxNSw3IEBACiB7CiAjaWYgZGVmaW5lZChERUJVRykKIAlpbnQgaTsKLQlkZWJ1ZygiVXBkYXRpbmcgcHJvcGVydHkgJyVzLyVzJyA9ICIsIG5vZGUsIHByb3ApOworCWRlYnVnKCJVcGRhdGluZyBwcm9wZXJ0eSAnJXMvJXMnID0gIiwgcGF0aCwgcHJvcCk7CiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQogCQlkZWJ1ZygiICUuMngiLCAqKHU4KikodmFsK2kpKTsKIAlkZWJ1ZygiXG4iKTsKQEAgLTQ0NCw3ICs0NDEsNyBAQAogCWludCBvZmY7CiAjaWYgZGVmaW5lZChERUJVRykKIAlpbnQgaTsKLQlkZWJ1ZygiVXBkYXRpbmcgcHJvcGVydHkgJyVzLyVzJyA9ICIsIG5vZGUsIHByb3ApOworCWRlYnVnKCJVcGRhdGluZyBwcm9wZXJ0eSAnJXMnID0gIiwgcHJvcCk7CiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQogCQlkZWJ1ZygiICUuMngiLCAqKHU4KikodmFsK2kpKTsKIAlkZWJ1ZygiXG4iKTsKQEAgLTQ3MSw3ICs0NjgsNyBAQAogCWludCBvZmYgPSAtMTsKICNpZiBkZWZpbmVkKERFQlVHKQogCWludCBpOwotCWRlYnVnKCJVcGRhdGluZyBwcm9wZXJ0eSAnJXMvJXMnID0gIiwgbm9kZSwgcHJvcCk7CisJZGVidWcoIlVwZGF0aW5nIHByb3BlcnR5ICclcycgPSAiLCBwcm9wKTsKIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiAJCWRlYnVnKCIgJS4yeCIsICoodTgqKSh2YWwraSkpOwogCWRlYnVnKCJcbiIpOwpAQCAtNjE3LDQ5ICs2MTQsNCBAQAogI2VuZGlmCiAJfQogfQotCi0jaWZkZWYgQ09ORklHX1FFCi0vKgotICogSWYgYSBRRSBmaXJtd2FyZSBoYXMgYmVlbiB1cGxvYWRlZCwgdGhlbiBhZGQgdGhlICdmaXJtd2FyZScgbm9kZSB1bmRlcgotICogdGhlICdxZScgbm9kZS4KLSAqLwotdm9pZCBmZHRfZml4dXBfcWVfZmlybXdhcmUodm9pZCAqZmR0KQotewotCXN0cnVjdCBxZV9maXJtd2FyZV9pbmZvICpxZV9md19pbmZvOwotCWludCBub2RlLCByZXQ7Ci0KLQlxZV9md19pbmZvID0gcWVfZ2V0X2Zpcm13YXJlX2luZm8oKTsKLQlpZiAoIXFlX2Z3X2luZm8pCi0JCXJldHVybjsKLQotCW5vZGUgPSBmZHRfcGF0aF9vZmZzZXQoZmR0LCAiL3FlIik7Ci0JaWYgKG5vZGUgPCAwKQotCQlyZXR1cm47Ci0KLQkvKiBXZSBhc3N1bWUgdGhlIG5vZGUgZG9lc24ndCBleGlzdCB5ZXQgKi8KLQlub2RlID0gZmR0X2FkZF9zdWJub2RlKGZkdCwgbm9kZSwgImZpcm13YXJlIik7Ci0JaWYgKG5vZGUgPCAwKQotCQlyZXR1cm47Ci0KLQlyZXQgPSBmZHRfc2V0cHJvcChmZHQsIG5vZGUsICJleHRlbmRlZC1tb2RlcyIsCi0JCSZxZV9md19pbmZvLT5leHRlbmRlZF9tb2Rlcywgc2l6ZW9mKHU2NCkpOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycm9yOwotCi0JcmV0ID0gZmR0X3NldHByb3Bfc3RyaW5nKGZkdCwgbm9kZSwgImlkIiwgcWVfZndfaW5mby0+aWQpOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycm9yOwotCi0JcmV0ID0gZmR0X3NldHByb3AoZmR0LCBub2RlLCAidmlydHVhbC10cmFwcyIsIHFlX2Z3X2luZm8tPnZ0cmFwcywKLQkJc2l6ZW9mKHFlX2Z3X2luZm8tPnZ0cmFwcykpOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycm9yOwotCi0JcmV0dXJuOwotCi1lcnJvcjoKLQlmZHRfZGVsX25vZGUoZmR0LCBub2RlKTsKLX0KICNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2NvbW1vbi9taWlwaHl1dGlsLmMgYi9jb21tb24vbWlpcGh5dXRpbC5jCmluZGV4IDI4MWYwYjIuLmVhYzgyNzUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9taWlwaHl1dGlsLmMKKysrIGIvY29tbW9uL21paXBoeXV0aWwuYwpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPG5ldC5oPgogCiAvKiBsb2NhbCBkZWJ1ZyBtYWNybyAqLwotI2RlZmluZSBNSUlfREVCVUcKICN1bmRlZiBNSUlfREVCVUcKIAogI3VuZGVmIGRlYnVnCkBAIC0yNjEsMzEgKzI2MCwyNSBAQAogCXVuc2lnbmVkIHNob3J0IHRtcDsKIAogCWlmIChtaWlwaHlfcmVhZCAoZGV2bmFtZSwgYWRkciwgUEhZX1BIWUlEUjIsICZ0bXApICE9IDApIHsKLSNpZmRlZiBERUJVRwotCQlwdXRzICgiUEhZIElEIHJlZ2lzdGVyIDIgcmVhZCBmYWlsZWRcbiIpOwotI2VuZGlmCisJCWRlYnVnICgiUEhZIElEIHJlZ2lzdGVyIDIgcmVhZCBmYWlsZWRcbiIpOwogCQlyZXR1cm4gKC0xKTsKIAl9CiAJcmVnID0gdG1wOwogCi0jaWZkZWYgREVCVUcKLQlwcmludGYgKCJQSFlfUEhZSURSMiBAIDB4JXggPSAweCUwNHhcbiIsIGFkZHIsIHJlZyk7Ci0jZW5kaWYKKwlkZWJ1ZyAoIlBIWV9QSFlJRFIyIEAgMHgleCA9IDB4JTA0eFxuIiwgYWRkciwgcmVnKTsKKwogCWlmIChyZWcgPT0gMHhGRkZGKSB7CiAJCS8qIE5vIHBoeXNpY2FsIGRldmljZSBwcmVzZW50IGF0IHRoaXMgYWRkcmVzcyAqLwogCQlyZXR1cm4gKC0xKTsKIAl9CiAKIAlpZiAobWlpcGh5X3JlYWQgKGRldm5hbWUsIGFkZHIsIFBIWV9QSFlJRFIxLCAmdG1wKSAhPSAwKSB7Ci0jaWZkZWYgREVCVUcKLQkJcHV0cyAoIlBIWSBJRCByZWdpc3RlciAxIHJlYWQgZmFpbGVkXG4iKTsKLSNlbmRpZgorCQlkZWJ1ZyAoIlBIWSBJRCByZWdpc3RlciAxIHJlYWQgZmFpbGVkXG4iKTsKIAkJcmV0dXJuICgtMSk7CiAJfQogCXJlZyB8PSB0bXAgPDwgMTY7Ci0jaWZkZWYgREVCVUcKLQlwcmludGYgKCJQSFlfUEhZSURSWzEsMl0gQCAweCV4ID0gMHglMDh4XG4iLCBhZGRyLCByZWcpOwotI2VuZGlmCisJZGVidWcgKCJQSFlfUEhZSURSWzEsMl0gQCAweCV4ID0gMHglMDh4XG4iLCBhZGRyLCByZWcpOworCiAJKm91aSA9IChyZWcgPj4gMTApOwogCSptb2RlbCA9ICh1bnNpZ25lZCBjaGFyKSgocmVnID4+IDQpICYgMHgwMDAwMDAzRik7CiAJKnJldiA9ICh1bnNpZ25lZCBjaGFyKShyZWcgJiAweDAwMDAwMDBGKTsKQEAgLTMwNCwxNSArMjk3LDExIEBACiAJaW50IGxvb3BfY250OwogCiAJaWYgKG1paXBoeV9yZWFkIChkZXZuYW1lLCBhZGRyLCBQSFlfQk1DUiwgJnJlZykgIT0gMCkgewotI2lmZGVmIERFQlVHCi0JCXByaW50ZiAoIlBIWSBzdGF0dXMgcmVhZCBmYWlsZWRcbiIpOwotI2VuZGlmCisJCWRlYnVnICgiUEhZIHN0YXR1cyByZWFkIGZhaWxlZFxuIik7CiAJCXJldHVybiAoLTEpOwogCX0KIAlpZiAobWlpcGh5X3dyaXRlIChkZXZuYW1lLCBhZGRyLCBQSFlfQk1DUiwgcmVnIHwgMHg4MDAwKSAhPSAwKSB7Ci0jaWZkZWYgREVCVUcKLQkJcHV0cyAoIlBIWSByZXNldCBmYWlsZWRcbiIpOwotI2VuZGlmCisJCWRlYnVnICgiUEhZIHJlc2V0IGZhaWxlZFxuIik7CiAJCXJldHVybiAoLTEpOwogCX0KICNpZmRlZiBDT05GSUdfUEhZX1JFU0VUX0RFTEFZCkBAIC0zMjcsOSArMzE2LDcgQEAKIAlyZWcgPSAweDgwMDA7CiAJd2hpbGUgKCgocmVnICYgMHg4MDAwKSAhPSAwKSAmJiAobG9vcF9jbnQrKyA8IDEwMDAwMDApKSB7CiAJCWlmIChtaWlwaHlfcmVhZCAoZGV2bmFtZSwgYWRkciwgUEhZX0JNQ1IsICZyZWcpICE9IDApIHsKLSMgICAgIGlmZGVmIERFQlVHCi0JCQlwdXRzICgiUEhZIHN0YXR1cyByZWFkIGZhaWxlZFxuIik7Ci0jICAgICBlbmRpZgorCQkJZGVidWcgKCJQSFkgc3RhdHVzIHJlYWQgZmFpbGVkXG4iKTsKIAkJCXJldHVybiAoLTEpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvY29tbW9uL3NlcmlhbC5jIGIvY29tbW9uL3NlcmlhbC5jCmluZGV4IDU2MDEwODAuLmJmZGE3Y2EgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zZXJpYWwuYworKysgYi9jb21tb24vc2VyaWFsLmMKQEAgLTYwLDYgKzYwLDE2IEBACiAjZWxzZQogCQlyZXR1cm4gJnNlcmlhbDBfZGV2aWNlOwogI2VuZGlmCisjZWxpZiBkZWZpbmVkKENPTkZJR19TM0MyNDEwKQorI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTDEpCisJcmV0dXJuICZzM2MyNHh4X3NlcmlhbDBfZGV2aWNlOworI2VsaWYgZGVmaW5lZChDT05GSUdfU0VSSUFMMikKKwlyZXR1cm4gJnMzYzI0eHhfc2VyaWFsMV9kZXZpY2U7CisjZWxpZiBkZWZpbmVkKENPTkZJR19TRVJJQUwzKQorCXJldHVybiAmczNjMjR4eF9zZXJpYWwyX2RldmljZTsKKyNlbHNlCisjZXJyb3IgIkNPTkZJR19TRVJJQUw/IG1pc3NpbmcuIgorI2VuZGlmCiAjZWxzZQogI2Vycm9yIE5vIGRlZmF1bHQgY29uc29sZQogI2VuZGlmCkBAIC0xMjMsNiArMTMzLDExIEBACiAjaWYgZGVmaW5lZCAoQ09ORklHX1NUVUFSVCkKIAlzZXJpYWxfcmVnaXN0ZXIoJnNlcmlhbF9zdHVhcnRfZGV2aWNlKTsKICNlbmRpZgorI2lmIGRlZmluZWQoQ09ORklHX1MzQzI0MTApCisJc2VyaWFsX3JlZ2lzdGVyKCZzM2MyNHh4X3NlcmlhbDBfZGV2aWNlKTsKKwlzZXJpYWxfcmVnaXN0ZXIoJnMzYzI0eHhfc2VyaWFsMV9kZXZpY2UpOworCXNlcmlhbF9yZWdpc3RlcigmczNjMjR4eF9zZXJpYWwyX2RldmljZSk7CisjZW5kaWYKIAlzZXJpYWxfYXNzaWduIChkZWZhdWx0X3NlcmlhbF9jb25zb2xlICgpLT5uYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvY29uZmlnLm1rIGIvY29uZmlnLm1rCmluZGV4IGY0MzEyZWQuLmVlMDU3YjUgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5taworKysgYi9jb25maWcubWsKQEAgLTE0OCw3ICsxNDgsMTAgQEAKIGdjY2luY2RpciA6PSAkKHNoZWxsICQoQ0MpIC1wcmludC1maWxlLW5hbWU9aW5jbHVkZSkKIAogQ1BQRkxBR1MgOj0gJChEQkdGTEFHUykgJChPUFRGTEFHUykgJChSRUxGTEFHUykJCVwKLQktRF9fS0VSTkVMX18gLURURVhUX0JBU0U9JChURVhUX0JBU0UpCQlcCisJLURfX0tFUk5FTF9fCitpZm5lcSAoJChURVhUX0JBU0UpLCkKK0NQUEZMQUdTICs9IC1EVEVYVF9CQVNFPSQoVEVYVF9CQVNFKQorZW5kaWYKIAogaWZuZXEgKCQoT0JKVFJFRSksJChTUkNUUkVFKSkKIENQUEZMQUdTICs9IC1JJChPQkpUUkVFKS9pbmNsdWRlMiAtSSQoT0JKVFJFRSkvaW5jbHVkZQpAQCAtMTg2LDcgKzE4OSwxMCBAQAogCiBBRkxBR1MgOj0gJChBRkxBR1NfREVCVUcpIC1EX19BU1NFTUJMWV9fICQoQ1BQRkxBR1MpCiAKLUxERkxBR1MgKz0gLUJzdGF0aWMgLVQgJChMRFNDUklQVCkgLVR0ZXh0ICQoVEVYVF9CQVNFKSAkKFBMQVRGT1JNX0xERkxBR1MpCitMREZMQUdTICs9IC1Cc3RhdGljIC1UICQoTERTQ1JJUFQpICQoUExBVEZPUk1fTERGTEFHUykKK2lmbmVxICgkKFRFWFRfQkFTRSksKQorTERGTEFHUyArPSAtVHRleHQgJChURVhUX0JBU0UpCitlbmRpZgogCiAjIExvY2F0aW9uIG9mIGEgdXNhYmxlIEJGRCBsaWJyYXJ5LCB3aGVyZSB3ZSBkZWZpbmUgInVzYWJsZSIgYXMKICMgImJ1aWx0IGZvciAke0hPU1R9LCBzdXBwb3J0cyAke1RBUkdFVH0iLiAgU2Vuc2libGUgdmFsdWVzIGFyZQpkaWZmIC0tZ2l0IGEvY3B1Lzc0eHhfN3h4L2NvbmZpZy5tayBiL2NwdS83NHh4Xzd4eC9jb25maWcubWsKaW5kZXggNDE3ZDk5Zi4uMzI0ZjYyYiAxMDA2NDQKLS0tIGEvY3B1Lzc0eHhfN3h4L2NvbmZpZy5taworKysgYi9jcHUvNzR4eF83eHgvY29uZmlnLm1rCkBAIC0yMyw0ICsyMyw0IEBACiAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaSAtZm5vLXN0cmljdC1hbGlhc2luZwogCi1QTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR183NHh4Xzd4eCAtZmZpeGVkLXIyIC1mZml4ZWQtcjI5IC1tc3RyaW5nCitQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR183NHh4Xzd4eCAtZmZpeGVkLXIyIC1tc3RyaW5nCmRpZmYgLS1naXQgYS9jcHUvYXJtMTEzNi9zdGFydC5TIGIvY3B1L2FybTExMzYvc3RhcnQuUwppbmRleCAxN2M3YTgzLi44Yjc2NWYxIDEwMDY0NAotLS0gYS9jcHUvYXJtMTEzNi9zdGFydC5TCisrKyBiL2NwdS9hcm0xMTM2L3N0YXJ0LlMKQEAgLTM1LDYgKzM1LDI1IEBACiAjZW5kaWYKIC5nbG9ibCBfc3RhcnQKIF9zdGFydDogYglyZXNldAorI2lmZGVmIENPTkZJR19PTkVOQU5EX0lQTAorCWxkcglwYywgX2hhbmcKKwlsZHIJcGMsIF9oYW5nCisJbGRyCXBjLCBfaGFuZworCWxkcglwYywgX2hhbmcKKwlsZHIJcGMsIF9oYW5nCisJbGRyCXBjLCBfaGFuZworCWxkcglwYywgX2hhbmcKKworX2hhbmc6CisJLndvcmQJZG9faGFuZworCS53b3JkCTB4MTIzNDU2NzgKKwkud29yZAkweDEyMzQ1Njc4CisJLndvcmQJMHgxMjM0NTY3OAorCS53b3JkCTB4MTIzNDU2NzgKKwkud29yZAkweDEyMzQ1Njc4CisJLndvcmQJMHgxMjM0NTY3OAorCS53b3JkCTB4MTIzNDU2NzgJLyogbm93IDE2KjQ9NjQgKi8KKyNlbHNlCiAJbGRyCXBjLCBfdW5kZWZpbmVkX2luc3RydWN0aW9uCiAJbGRyCXBjLCBfc29mdHdhcmVfaW50ZXJydXB0CiAJbGRyCXBjLCBfcHJlZmV0Y2hfYWJvcnQKQEAgLTUxLDYgKzcwLDcgQEAKIF9pcnE6CQkJLndvcmQgaXJxCiBfZmlxOgkJCS53b3JkIGZpcQogX3BhZDoJCQkud29yZCAweDEyMzQ1Njc4IC8qIG5vdyAxNio0PTY0ICovCisjZW5kaWYJLyogQ09ORklHX09ORU5BTkRfSVBMICovCiAuZ2xvYmFsIF9lbmRfdmVjdAogX2VuZF92ZWN0OgogCkBAIC0xMzksNyArMTU5LDkgQEAKIAlhZHIJcjAsIF9zdGFydAkJLyogcjAgPC0gY3VycmVudCBwb3NpdGlvbiBvZiBjb2RlICAgKi8KIAlsZHIJcjEsIF9URVhUX0JBU0UJCS8qIHRlc3QgaWYgd2UgcnVuIGZyb20gZmxhc2ggb3IgUkFNICovCiAJY21wCXIwLCByMQkJCS8qIGRvbid0IHJlbG9jIGR1cmluZyBkZWJ1ZwkgICAgKi8KKyNpZm5kZWYgQ09ORklHX09ORU5BTkRfSVBMCiAJYmVxCXN0YWNrX3NldHVwCisjZW5kaWYJLyogQ09ORklHX09ORU5BTkRfSVBMICovCiAKIAlsZHIJcjIsIF9hcm1ib290X3N0YXJ0CiAJbGRyCXIzLCBfYnNzX3N0YXJ0CkBAIC0xNTYsMjYgKzE3OCwzNiBAQAogCS8qIFNldCB1cCB0aGUgc3RhY2sJCQkJCQkgICAgKi8KIHN0YWNrX3NldHVwOgogCWxkcglyMCwgX1RFWFRfQkFTRQkJLyogdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290ICAgKi8KKyNpZmRlZiBDT05GSUdfT05FTkFORF9JUEwKKwlzdWIJc3AsIHIwLCAjMTI4CQkvKiBsZWF2ZSAzMiB3b3JkcyBmb3IgYWJvcnQtc3RhY2sgICAqLworI2Vsc2UKIAlzdWIJcjAsIHIwLCAjQ0ZHX01BTExPQ19MRU4gLyogbWFsbG9jIGFyZWEJCQkgICAgKi8KIAlzdWIJcjAsIHIwLCAjQ0ZHX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvCQkJICAgICovCiAjaWZkZWYgQ09ORklHX1VTRV9JUlEKIAlzdWIJcjAsIHIwLCAjKENPTkZJR19TVEFDS1NJWkVfSVJRK0NPTkZJR19TVEFDS1NJWkVfRklRKQogI2VuZGlmCiAJc3ViCXNwLCByMCwgIzEyCQkvKiBsZWF2ZSAzIHdvcmRzIGZvciBhYm9ydC1zdGFjayAgICAqLworI2VuZGlmCS8qIENPTkZJR19PTkVOQU5EX0lQTCAqLwogCiBjbGVhcl9ic3M6CiAJbGRyCXIwLCBfYnNzX3N0YXJ0CQkvKiBmaW5kIHN0YXJ0IG9mIGJzcyBzZWdtZW50CSAgICAqLwogCWxkcglyMSwgX2Jzc19lbmQJCS8qIHN0b3AgaGVyZQkJCSAgICAqLwogCW1vdglyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyCQkJICAgICovCiAKKyNpZm5kZWYgQ09ORklHX09ORU5BTkRfSVBMCiBjbGJzc19sOnN0cglyMiwgW3IwXQkJLyogY2xlYXIgbG9vcC4uLgkJICAgICovCiAJYWRkCXIwLCByMCwgIzQKIAljbXAJcjAsIHIxCiAJYm5lCWNsYnNzX2wKKyNlbmRpZgogCiAJbGRyCXBjLCBfc3RhcnRfYXJtYm9vdAogCisjaWZkZWYgQ09ORklHX09ORU5BTkRfSVBMCitfc3RhcnRfYXJtYm9vdDogLndvcmQgc3RhcnRfb25lYm9vdAorI2Vsc2UKIF9zdGFydF9hcm1ib290OiAud29yZCBzdGFydF9hcm1ib290CisjZW5kaWYKIAogCiAvKgpAQCAtMjE0LDYgKzI0Niw4IEBACiAJYmwJbG93bGV2ZWxfaW5pdAkvKiBnbyBzZXR1cCBwbGwsbXV4LG1lbW9yeSAqLwogCW1vdglsciwgaXAJCS8qIHJlc3RvcmUgbGluayAqLwogCW1vdglwYywgbHIJCS8qIGJhY2sgdG8gbXkgY2FsbGVyICovCisKKyNpZm5kZWYgQ09ORklHX09ORU5BTkRfSVBMCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0zMjYsMTAgKzM2MCwxNyBAQAogCS5tYWNybyBnZXRfZmlxX3N0YWNrCQkJQCBzZXR1cCBGSVEgc3RhY2sKIAlsZHIJc3AsIEZJUV9TVEFDS19TVEFSVAogCS5lbmRtCisjZW5kaWYJLyogQ09ORklHX09ORU5BTkRfSVBMICovCiAKIC8qCiAgKiBleGNlcHRpb24gaGFuZGxlcnMKICAqLworI2lmZGVmIENPTkZJR19PTkVOQU5EX0lQTAorCS5hbGlnbgk1Citkb19oYW5nOgorCWxkcglzcCwgX1RFWFRfQkFTRQkJCS8qIHVzZSAzMiB3b3JkcyBhYm91dCBzdGFjayAqLworCWJsCWhhbmcJCQkJLyogaGFuZyBhbmQgbmV2ZXIgcmV0dXJuICovCisjZWxzZQkvKiAhQ09ORklHX09ORU5BTkQgSVBMICovCiAJLmFsaWduCTUKIHVuZGVmaW5lZF9pbnN0cnVjdGlvbjoKIAlnZXRfYmFkX3N0YWNrCkBAIC00MTUsMyArNDU2LDQgQEAKIAkud29yZAlQTV9SU1RDVFJMX1dLVVAKIAogI2VuZGlmCisjZW5kaWYJLyogQ09ORklHX09ORU5BTkRfSVBMICovCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9pbnRlcnJ1cHRzLmMgYi9jcHUvYXJtOTIwdC9pbnRlcnJ1cHRzLmMKaW5kZXggYTQzYTNlZC4uMGE2ZDk0ZiAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvaW50ZXJydXB0cy5jCisrKyBiL2NwdS9hcm05MjB0L2ludGVycnVwdHMuYwpAQCAtMTYxLDExICsxNjEsMTYgQEAKIAogdm9pZCBkb19pcnEgKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQogewotI2lmIGRlZmluZWQgKENPTkZJR19VU0VfSVJRKSAmJiBkZWZpbmVkIChDT05GSUdfQVJDSF9JTlRFR1JBVE9SKQorI2lmIGRlZmluZWQgKENPTkZJR19VU0VfSVJRKQorI2lmIGRlZmluZWQgKEFSTTkyMF9JUlFfQ0FMTEJBQ0spCisJQVJNOTIwX0lSUV9DQUxMQkFDSygpOworCXJldHVybjsKKyNlbGlmIGRlZmluZWQgKENPTkZJR19BUkNIX0lOVEVHUkFUT1IpCiAJLyogQVNTVU1FRCB0byBiZSBhIHRpbWVyIGludGVycnVwdCAgKi8KIAkvKiBKdXN0IGNsZWFyIGl0IC0gY291bnQgaGFuZGxlZCBpbiAqLwogCS8qIGludGVncmF0b3JhcC5jICAgICAgICAgICAgICAgICAgICovCiAJKih2b2xhdGlsZSB1bG9uZyAqKShDRkdfVElNRVJCQVNFICsgMHgwQykgPSAwOworI2VuZGlmIC8qIEFSQ0hfSU5URUdSQVRPUiAqLwogI2Vsc2UKIAlwcmludGYgKCJpbnRlcnJ1cHQgcmVxdWVzdFxuIik7CiAJc2hvd19yZWdzIChwdF9yZWdzKTsKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L3MzYzI0eDAvTWFrZWZpbGUgYi9jcHUvYXJtOTIwdC9zM2MyNHgwL01ha2VmaWxlCmluZGV4IDFlZDliZjMwLi42NzY0OTIwIDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9zM2MyNHgwL01ha2VmaWxlCisrKyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvTWFrZWZpbGUKQEAgLTI2LDcgKzI2LDcgQEAKIExJQgk9ICQob2JqKWxpYiQoU09DKS5hCiAKIENPQkpTCT0gaTJjLm8gaW50ZXJydXB0cy5vIHNlcmlhbC5vIHNwZWVkLm8gXAotCSAgdXNiLm8gdXNiX29oY2kubworCSAgdXNiLm8gdXNiX29oY2kubyBuYW5kLm8KIAogU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykgJChDT0JKUykpCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9zM2MyNHgwL2ludGVycnVwdHMuYyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvaW50ZXJydXB0cy5jCmluZGV4IDFiMzY0MTIuLjdhZDlmY2IgMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjB0L3MzYzI0eDAvaW50ZXJydXB0cy5jCisrKyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvaW50ZXJydXB0cy5jCkBAIC0yMTYsNCArMjE2LDEzIEBACiAJLypOT1RSRUFDSEVEKi8KIH0KIAorI2lmZGVmIENPTkZJR19VU0VfSVJRCit2b2lkIHMzYzI0MTBfaXJxKHZvaWQpCit7CisJUzNDMjRYMF9JTlRFUlJVUFQgKiBpcnEgPSBTM0MyNFgwX0dldEJhc2VfSU5URVJSVVBUKCk7CisJdV9pbnQzMl90IGludHBuZCA9IGlycS0+SU5UUE5EOworCit9CisjZW5kaWYgLyogVVNFX0lSUSAqLworCiAjZW5kaWYgLyogZGVmaW5lZChDT05GSUdfUzNDMjQwMCkgfHwgZGVmaW5lZCAoQ09ORklHX1MzQzI0MTApIHx8IGRlZmluZWQgKENPTkZJR19UUkFCKSAqLwpkaWZmIC0tZ2l0IGEvY3B1L2FybTkyMHQvczNjMjR4MC9uYW5kLmMgYi9jcHUvYXJtOTIwdC9zM2MyNHgwL25hbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJmMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvY3B1L2FybTkyMHQvczNjMjR4MC9uYW5kLmMKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDYgT3Blbk1va28sIEluYy4KKyAqIEF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKyNpZiAwCisjZGVmaW5lIERFQlVHTglwcmludGYKKyNlbHNlCisjZGVmaW5lIERFQlVHTih4LCBhcmdzIC4uLikge30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfQ01EX05BTkQpCisjaWYgIWRlZmluZWQoQ0ZHX05BTkRfTEVHQUNZKQorCisjaW5jbHVkZSA8bmFuZC5oPgorI2luY2x1ZGUgPHMzYzI0MTAuaD4KKworI2RlZmluZSBfX1JFR2IoeCkJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSh4KSkKKyNkZWZpbmUgX19SRUdpKHgpCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSh4KSkKKworI2RlZmluZQlORl9CQVNFCQkweDRlMDAwMDAwCisjZGVmaW5lCU5GQ09ORgkJX19SRUdpKE5GX0JBU0UgKyAweDApCisjZGVmaW5lCU5GQ01ECQlfX1JFR2IoTkZfQkFTRSArIDB4NCkKKyNkZWZpbmUJTkZBRERSCQlfX1JFR2IoTkZfQkFTRSArIDB4OCkKKyNkZWZpbmUJTkZEQVRBCQlfX1JFR2IoTkZfQkFTRSArIDB4YykKKyNkZWZpbmUJTkZTVEFUCQlfX1JFR2IoTkZfQkFTRSArIDB4MTApCisjZGVmaW5lIE5GRUNDMAkJX19SRUdiKE5GX0JBU0UgKyAweDE0KQorI2RlZmluZSBORkVDQzEJCV9fUkVHYihORl9CQVNFICsgMHgxNSkKKyNkZWZpbmUgTkZFQ0MyCQlfX1JFR2IoTkZfQkFTRSArIDB4MTYpCisKKyNkZWZpbmUgUzNDMjQxMF9ORkNPTkZfRU4gICAgICAgICAgKDE8PDE1KQorI2RlZmluZSBTM0MyNDEwX05GQ09ORl81MTJCWVRFICAgICAoMTw8MTQpCisjZGVmaW5lIFMzQzI0MTBfTkZDT05GXzRTVEVQICAgICAgICgxPDwxMykKKyNkZWZpbmUgUzNDMjQxMF9ORkNPTkZfSU5JVEVDQyAgICAgKDE8PDEyKQorI2RlZmluZSBTM0MyNDEwX05GQ09ORl9uRkNFICAgICAgICAoMTw8MTEpCisjZGVmaW5lIFMzQzI0MTBfTkZDT05GX1RBQ0xTKHgpICAgICgoeCk8PDgpCisjZGVmaW5lIFMzQzI0MTBfTkZDT05GX1RXUlBIMCh4KSAgICgoeCk8PDQpCisjZGVmaW5lIFMzQzI0MTBfTkZDT05GX1RXUlBIMSh4KSAgICgoeCk8PDApCisKK3N0YXRpYyB2b2lkIHMzYzI0MTBfaHdjb250cm9sKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY21kKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKmNoaXAgPSBtdGQtPnByaXY7CisKKwlERUJVR04oImh3Y29udHJvbCgpOiAweCUwMng6ICIsIGNtZCk7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgTkFORF9DVExfU0VUTkNFOgorCQlORkNPTkYgJj0gflMzQzI0MTBfTkZDT05GX25GQ0U7CisJCURFQlVHTigiTkZDT05GPTB4JTA4eFxuIiwgTkZDT05GKTsKKwkJYnJlYWs7CisJY2FzZSBOQU5EX0NUTF9DTFJOQ0U6CisJCU5GQ09ORiB8PSBTM0MyNDEwX05GQ09ORl9uRkNFOworCQlERUJVR04oIk5GQ09ORj0weCUwOHhcbiIsIE5GQ09ORik7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfU0VUQUxFOgorCQljaGlwLT5JT19BRERSX1cgPSBORl9CQVNFICsgMHg4OworCQlERUJVR04oIlNFVEFMRVxuIik7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfU0VUQ0xFOgorCQljaGlwLT5JT19BRERSX1cgPSBORl9CQVNFICsgMHg0OworCQlERUJVR04oIlNFVENMRVxuIik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWNoaXAtPklPX0FERFJfVyA9IE5GX0JBU0UgKyAweGM7CisJCWJyZWFrOworCX0KKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQgczNjMjQxMF9kZXZfcmVhZHkoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJREVCVUdOKCJkZXZfcmVhZHlcbiIpOworCXJldHVybiAoTkZTVEFUICYgMHgwMSk7Cit9CisKKyNpZmRlZiBDT05GSUdfUzNDMjQxMF9OQU5EX0hXRUNDCit2b2lkIHMzYzI0MTBfbmFuZF9lbmFibGVfaHdlY2Moc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBtb2RlKQoreworCURFQlVHTigiczNjMjQxMF9uYW5kX2VuYWJsZV9od2VjYyglcCwgJWQpXG4iLCBtdGQgLG1vZGUpOworCU5GQ09ORiB8PSBTM0MyNDEwX05GQ09ORl9JTklURUNDOworfQorCitzdGF0aWMgaW50IHMzYzI0MTBfbmFuZF9jYWxjdWxhdGVfZWNjKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1X2NoYXIgKmRhdCwKKwkJCQkgICAgICB1X2NoYXIgKmVjY19jb2RlKQoreworCWVjY19jb2RlWzBdID0gTkZFQ0MwOworCWVjY19jb2RlWzFdID0gTkZFQ0MxOworCWVjY19jb2RlWzJdID0gTkZFQ0MyOworCURFQlVHTigiczNjMjQxMF9uYW5kX2NhbGN1bGF0ZV9od2VjYyglcCwpOiAweCUwMnggMHglMDJ4IDB4JTAyeFxuIiwKKwkJbXRkICwgZWNjX2NvZGVbMF0sIGVjY19jb2RlWzFdLCBlY2NfY29kZVsyXSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzM2MyNDEwX25hbmRfY29ycmVjdF9kYXRhKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1X2NoYXIgKmRhdCwKKwkJCQkgICAgIHVfY2hhciAqcmVhZF9lY2MsIHVfY2hhciAqY2FsY19lY2MpCit7CisJaWYgKHJlYWRfZWNjWzBdID09IGNhbGNfZWNjWzBdICYmCisJICAgIHJlYWRfZWNjWzFdID09IGNhbGNfZWNjWzFdICYmCisJICAgIHJlYWRfZWNjWzJdID09IGNhbGNfZWNjWzJdKQorCQlyZXR1cm4gMDsKKworCXByaW50ZigiczNjMjQxMF9uYW5kX2NvcnJlY3RfZGF0YTogbm90IGltcGxlbWVudGVkXG4iKTsKKwlyZXR1cm4gLTE7Cit9CisjZW5kaWYKKworaW50IGJvYXJkX25hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKQoreworCXVfaW50MzJfdCBjZmc7CisJdV9pbnQ4X3QgdGFjbHMsIHR3cnBoMCwgdHdycGgxOworCVMzQzI0WDBfQ0xPQ0tfUE9XRVIgKiBjb25zdCBjbGtfcG93ZXIgPSBTM0MyNFgwX0dldEJhc2VfQ0xPQ0tfUE9XRVIoKTsKKworCURFQlVHTigiYm9hcmRfbmFuZF9pbml0KClcbiIpOworCisJY2xrX3Bvd2VyLT5DTEtDT04gfD0gKDEgPDwgNCk7CisKKwkvKiBpbml0aWFsaXplIGhhcmR3YXJlICovCisJdHdycGgwID0gMzsgdHdycGgxID0gMDsgdGFjbHMgPSAwOworCisJY2ZnID0gUzNDMjQxMF9ORkNPTkZfRU47CisJY2ZnIHw9IFMzQzI0MTBfTkZDT05GX1RBQ0xTKHRhY2xzIC0gMSk7CisJY2ZnIHw9IFMzQzI0MTBfTkZDT05GX1RXUlBIMCh0d3JwaDAgLSAxKTsKKwljZmcgfD0gUzNDMjQxMF9ORkNPTkZfVFdSUEgxKHR3cnBoMSAtIDEpOworCisJTkZDT05GID0gY2ZnOworCisJLyogaW5pdGlhbGl6ZSBuYW5kX2NoaXAgZGF0YSBzdHJ1Y3R1cmUgKi8KKwluYW5kLT5JT19BRERSX1IgPSBuYW5kLT5JT19BRERSX1cgPSAweDRlMDAwMDBjOworCisJLyogcmVhZF9idWYgYW5kIHdyaXRlX2J1ZiBhcmUgZGVmYXVsdCAqLworCS8qIHJlYWRfYnl0ZSBhbmQgd3JpdGVfYnl0ZSBhcmUgZGVmYXVsdCAqLworCisJLyogaHdjb250cm9sIGFsd2F5cyBtdXN0IGJlIGltcGxlbWVudGVkICovCisJbmFuZC0+aHdjb250cm9sID0gczNjMjQxMF9od2NvbnRyb2w7CisKKwluYW5kLT5kZXZfcmVhZHkgPSBzM2MyNDEwX2Rldl9yZWFkeTsKKworI2lmZGVmIENPTkZJR19TM0MyNDEwX05BTkRfSFdFQ0MKKwluYW5kLT5lbmFibGVfaHdlY2MgPSBzM2MyNDEwX25hbmRfZW5hYmxlX2h3ZWNjOworCW5hbmQtPmNhbGN1bGF0ZV9lY2MgPSBzM2MyNDEwX25hbmRfY2FsY3VsYXRlX2VjYzsKKwluYW5kLT5jb3JyZWN0X2RhdGEgPSBzM2MyNDEwX25hbmRfY29ycmVjdF9kYXRhOworCW5hbmQtPmVjY21vZGUgPSBOQU5EX0VDQ19IVzNfNTEyOworI2Vsc2UKKwluYW5kLT5lY2Ntb2RlID0gTkFORF9FQ0NfU09GVDsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1MzQzI0MTBfTkFORF9CQlQKKwluYW5kLT5vcHRpb25zID0gTkFORF9VU0VfRkxBU0hfQkJUOworI2Vsc2UKKwluYW5kLT5vcHRpb25zID0gMDsKKyNlbmRpZgorCisJREVCVUdOKCJlbmQgb2YgbmFuZF9pbml0XG4iKTsKKworCXJldHVybiAwOworfQorCisjZWxzZQorICNlcnJvciAiVS1Cb290IGxlZ2FjeSBOQU5EIHN1cHBvcnQgbm90IGF2YWlsYWJsZSBmb3IgUzNDMjQxMCIKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9zM2MyNHgwL3NlcmlhbC5jIGIvY3B1L2FybTkyMHQvczNjMjR4MC9zZXJpYWwuYwppbmRleCAzNjg1MWFkLi42ZTg1M2I4IDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9zM2MyNHgwL3NlcmlhbC5jCisrKyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvc2VyaWFsLmMKQEAgLTQ4LDE4ICs0OCw3NCBAQAogI2Vycm9yICJCYWQ6IHlvdSBkaWRuJ3QgY29uZmlndXJlIHNlcmlhbCAuLi4iCiAjZW5kaWYKIAotdm9pZCBzZXJpYWxfc2V0YnJnICh2b2lkKQorI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTF9NVUxUSSkKKyNpbmNsdWRlIDxzZXJpYWwuaD4KKworLyogTXVsdGkgc2VyaWFsIGRldmljZSBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgREVDTEFSRV9TM0NfU0VSSUFMX0ZVTkNUSU9OUyhwb3J0KSBcCisgICAgaW50ICBzM3NlcmlhbCMjcG9ydCMjX2luaXQgKHZvaWQpIHtcCisJcmV0dXJuIHNlcmlhbF9pbml0X2Rldihwb3J0KTt9XAorICAgIHZvaWQgczNzZXJpYWwjI3BvcnQjI19zZXRicmcgKHZvaWQpIHtcCisJc2VyaWFsX3NldGJyZ19kZXYocG9ydCk7fVwKKyAgICBpbnQgIHMzc2VyaWFsIyNwb3J0IyNfZ2V0YyAodm9pZCkge1wKKwlyZXR1cm4gc2VyaWFsX2dldGNfZGV2KHBvcnQpO31cCisgICAgaW50ICBzM3NlcmlhbCMjcG9ydCMjX3RzdGMgKHZvaWQpIHtcCisJcmV0dXJuIHNlcmlhbF90c3RjX2Rldihwb3J0KTt9XAorICAgIHZvaWQgczNzZXJpYWwjI3BvcnQjI19wdXRjIChjb25zdCBjaGFyIGMpIHtcCisJc2VyaWFsX3B1dGNfZGV2KHBvcnQsIGMpO31cCisgICAgdm9pZCBzM3NlcmlhbCMjcG9ydCMjX3B1dHMgKGNvbnN0IGNoYXIgKnMpIHtcCisJc2VyaWFsX3B1dHNfZGV2KHBvcnQsIHMpO30KKworI2RlZmluZSBJTklUX1MzQ19TRVJJQUxfU1RSVUNUVVJFKHBvcnQsbmFtZSxidXMpIHtcCisJbmFtZSxcCisJYnVzLFwKKwlzM3NlcmlhbCMjcG9ydCMjX2luaXQsXAorCXMzc2VyaWFsIyNwb3J0IyNfc2V0YnJnLFwKKwlzM3NlcmlhbCMjcG9ydCMjX2dldGMsXAorCXMzc2VyaWFsIyNwb3J0IyNfdHN0YyxcCisJczNzZXJpYWwjI3BvcnQjI19wdXRjLFwKKwlzM3NlcmlhbCMjcG9ydCMjX3B1dHMsIH0KKworI2VuZGlmIC8qIENPTkZJR19TRVJJQUxfTVVMVEkgKi8KKwordm9pZCBfc2VyaWFsX3NldGJyZyhjb25zdCBpbnQgZGV2X2luZGV4KQogewotCVMzQzI0WDBfVUFSVCAqIGNvbnN0IHVhcnQgPSBTM0MyNFgwX0dldEJhc2VfVUFSVChVQVJUX05SKTsKLQlpbnQgaTsKKwlTM0MyNFgwX1VBUlQgKiBjb25zdCB1YXJ0ID0gUzNDMjRYMF9HZXRCYXNlX1VBUlQoZGV2X2luZGV4KTsKIAl1bnNpZ25lZCBpbnQgcmVnID0gMDsKKwlpbnQgaTsKIAogCS8qIHZhbHVlIGlzIGNhbGN1bGF0ZWQgc28gOiAoaW50KShQQ0xLLzE2Li9iYXVkcmF0ZSkgLTEgKi8KIAlyZWcgPSBnZXRfUENMSygpIC8gKDE2ICogZ2QtPmJhdWRyYXRlKSAtIDE7CiAKKwl1YXJ0LT5VQlJESVYgPSByZWc7CisJZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKTsKK30KKyNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfTVVMVEkpCitzdGF0aWMgaW5saW5lIHZvaWQKK3NlcmlhbF9zZXRicmdfZGV2KHVuc2lnbmVkIGludCBkZXZfaW5kZXgpCit7CisJX3NlcmlhbF9zZXRicmcoZGV2X2luZGV4KTsKK30KKyNlbHNlCit2b2lkIHNlcmlhbF9zZXRicmcodm9pZCkKK3sKKwlfc2VyaWFsX3NldGJyZyhVQVJUX05SKTsKK30KKyNlbmRpZgorCisKKy8qIEluaXRpYWxpc2UgdGhlIHNlcmlhbCBwb3J0LiBUaGUgc2V0dGluZ3MgYXJlIGFsd2F5cyA4IGRhdGEgYml0cywgbm8gcGFyaXR5LAorICogMSBzdG9wIGJpdCwgbm8gc3RhcnQgYml0cy4KKyAqLworc3RhdGljIGludCBzZXJpYWxfaW5pdF9kZXYoY29uc3QgaW50IGRldl9pbmRleCkKK3sKKwlTM0MyNFgwX1VBUlQgKiBjb25zdCB1YXJ0ID0gUzNDMjRYMF9HZXRCYXNlX1VBUlQoZGV2X2luZGV4KTsKKwlpbnQgaTsKKwogCS8qIEZJRk8gZW5hYmxlLCBUeC9SeCBGSUZPIGNsZWFyICovCiAJdWFydC0+VUZDT04gPSAweDA3OwogCXVhcnQtPlVNQ09OID0gMHgwOworCiAJLyogTm9ybWFsLE5vIHBhcml0eSwxIHN0b3AsOCBiaXQgKi8KIAl1YXJ0LT5VTENPTiA9IDB4MzsKIAkvKgpAQCAtNjcsNDAgKzEyMyw1NyBAQAogCSAqIG5vcm1hbCxpbnRlcnJ1cHQgb3IgcG9sbGluZwogCSAqLwogCXVhcnQtPlVDT04gPSAweDI0NTsKLQl1YXJ0LT5VQlJESVYgPSByZWc7CiAKICNpZmRlZiBDT05GSUdfSFdGTE9XCiAJdWFydC0+VU1DT04gPSAweDE7IC8qIFJUUyB1cCAqLwogI2VuZGlmCi0JZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKTsKKworCS8qIEZJWE1FOiBUaGlzIGlzIHNvb29vb29vb29vb29vb29vb29vIHVnbHkgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19BUkNIX0dUQTAyX3YxKSB8fCBkZWZpbmVkKENPTkZJR19BUkNIX0dUQTAyX3YyKQorCS8qIHdlIG5lZWQgYXV0byBodyBmbG93IGNvbnRyb2wgb24gdGhlIGdzbSBhbmQgZ3BzIHBvcnQgKi8KKwlpZiAoZGV2X2luZGV4ID09IDAgfHwgZGV2X2luZGV4ID09IDEpCisJCXVhcnQtPlVNQ09OID0gMHgxMDsKKyNlbmRpZgorCV9zZXJpYWxfc2V0YnJnKGRldl9pbmRleCk7CisKKwlyZXR1cm4gKDApOwogfQogCi0vKgotICogSW5pdGlhbGlzZSB0aGUgc2VyaWFsIHBvcnQgd2l0aCB0aGUgZ2l2ZW4gYmF1ZHJhdGUuIFRoZSBzZXR0aW5ncwotICogYXJlIGFsd2F5cyA4IGRhdGEgYml0cywgbm8gcGFyaXR5LCAxIHN0b3AgYml0LCBubyBzdGFydCBiaXRzLgotICoKKyNpZiAhZGVmaW5lZChDT05GSUdfU0VSSUFMX01VTFRJKQorLyogSW5pdGlhbGlzZSB0aGUgc2VyaWFsIHBvcnQuIFRoZSBzZXR0aW5ncyBhcmUgYWx3YXlzIDggZGF0YSBiaXRzLCBubyBwYXJpdHksCisgKiAxIHN0b3AgYml0LCBubyBzdGFydCBiaXRzLgogICovCiBpbnQgc2VyaWFsX2luaXQgKHZvaWQpCiB7Ci0Jc2VyaWFsX3NldGJyZyAoKTsKLQotCXJldHVybiAoMCk7CisJcmV0dXJuIHNlcmlhbF9pbml0X2RldihVQVJUX05SKTsKIH0KKyNlbmRpZgogCiAvKgogICogUmVhZCBhIHNpbmdsZSBieXRlIGZyb20gdGhlIHNlcmlhbCBwb3J0LiBSZXR1cm5zIDEgb24gc3VjY2VzcywgMAogICogb3RoZXJ3aXNlLiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBzdWNjZXNmdWxsLCB0aGUgY2hhcmFjdGVyIHJlYWQgaXMKICAqIHdyaXR0ZW4gaW50byBpdHMgYXJndW1lbnQgYy4KICAqLwotaW50IHNlcmlhbF9nZXRjICh2b2lkKQoraW50IF9zZXJpYWxfZ2V0YyAoY29uc3QgaW50IGRldl9pbmRleCkKIHsKLQlTM0MyNFgwX1VBUlQgKiBjb25zdCB1YXJ0ID0gUzNDMjRYMF9HZXRCYXNlX1VBUlQoVUFSVF9OUik7CisJUzNDMjRYMF9VQVJUICogY29uc3QgdWFydCA9IFMzQzI0WDBfR2V0QmFzZV9VQVJUKGRldl9pbmRleCk7CiAKIAkvKiB3YWl0IGZvciBjaGFyYWN0ZXIgdG8gYXJyaXZlICovCiAJd2hpbGUgKCEodWFydC0+VVRSU1RBVCAmIDB4MSkpOwogCiAJcmV0dXJuIHVhcnQtPlVSWEggJiAweGZmOwogfQorI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTF9NVUxUSSkKK3N0YXRpYyBpbmxpbmUgaW50IHNlcmlhbF9nZXRjX2Rldih1bnNpZ25lZCBpbnQgZGV2X2luZGV4KQoreworCXJldHVybiBfc2VyaWFsX2dldGMoZGV2X2luZGV4KTsKK30KKyNlbHNlCitpbnQgc2VyaWFsX2dldGMgKHZvaWQpCit7CisJcmV0dXJuIF9zZXJpYWxfZ2V0YyhVQVJUX05SKTsKK30KKyNlbmRpZgogCiAjaWZkZWYgQ09ORklHX0hXRkxPVwogc3RhdGljIGludCBod2Zsb3cgPSAwOyAvKiB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQgKi8KQEAgLTEzOCw5ICsyMTEsOSBAQAogLyoKICAqIE91dHB1dCBhIHNpbmdsZSBieXRlIHRvIHRoZSBzZXJpYWwgcG9ydC4KICAqLwotdm9pZCBzZXJpYWxfcHV0YyAoY29uc3QgY2hhciBjKQordm9pZCBfc2VyaWFsX3B1dGMgKGNvbnN0IGNoYXIgYywgY29uc3QgaW50IGRldl9pbmRleCkKIHsKLQlTM0MyNFgwX1VBUlQgKiBjb25zdCB1YXJ0ID0gUzNDMjRYMF9HZXRCYXNlX1VBUlQoVUFSVF9OUik7CisJUzNDMjRYMF9VQVJUICogY29uc3QgdWFydCA9IFMzQzI0WDBfR2V0QmFzZV9VQVJUKGRldl9pbmRleCk7CiAjaWZkZWYgQ09ORklHX01PREVNX1NVUFBPUlQKIAlpZiAoYmVfcXVpZXQpCiAJCXJldHVybjsKQEAgLTE2MSwyMyArMjM0LDcyIEBACiAJaWYgKGMgPT0gJ1xuJykKIAkJc2VyaWFsX3B1dGMgKCdccicpOwogfQorI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTF9NVUxUSSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXJpYWxfcHV0Y19kZXYodW5zaWduZWQgaW50IGRldl9pbmRleCwgY29uc3QgY2hhciBjKQoreworCV9zZXJpYWxfcHV0YyhjLCBkZXZfaW5kZXgpOworfQorI2Vsc2UKK3ZvaWQgc2VyaWFsX3B1dGMoY29uc3QgY2hhciBjKQoreworCV9zZXJpYWxfcHV0YyhjLCBVQVJUX05SKTsKK30KKyNlbmRpZgorCiAKIC8qCiAgKiBUZXN0IHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgaW4gdGhlIFJYIGJ1ZmZlcgogICovCi1pbnQgc2VyaWFsX3RzdGMgKHZvaWQpCitpbnQgX3NlcmlhbF90c3RjKGNvbnN0IGludCBkZXZfaW5kZXgpCiB7Ci0JUzNDMjRYMF9VQVJUICogY29uc3QgdWFydCA9IFMzQzI0WDBfR2V0QmFzZV9VQVJUKFVBUlRfTlIpOworCVMzQzI0WDBfVUFSVCAqIGNvbnN0IHVhcnQgPSBTM0MyNFgwX0dldEJhc2VfVUFSVChkZXZfaW5kZXgpOwogCiAJcmV0dXJuIHVhcnQtPlVUUlNUQVQgJiAweDE7CiB9CisjaWYgZGVmaW5lZChDT05GSUdfU0VSSUFMX01VTFRJKQorc3RhdGljIGlubGluZSBpbnQKK3NlcmlhbF90c3RjX2Rldih1bnNpZ25lZCBpbnQgZGV2X2luZGV4KQoreworCXJldHVybiBfc2VyaWFsX3RzdGMoZGV2X2luZGV4KTsKK30KKyNlbHNlCitpbnQgc2VyaWFsX3RzdGModm9pZCkKK3sKKwlyZXR1cm4gX3NlcmlhbF90c3RjKFVBUlRfTlIpOworfQorI2VuZGlmCiAKLXZvaWQKLXNlcmlhbF9wdXRzIChjb25zdCBjaGFyICpzKQordm9pZCBfc2VyaWFsX3B1dHMoY29uc3QgY2hhciAqcywgY29uc3QgaW50IGRldl9pbmRleCkKIHsKIAl3aGlsZSAoKnMpIHsKLQkJc2VyaWFsX3B1dGMgKCpzKyspOworCQlfc2VyaWFsX3B1dGMgKCpzKyssIGRldl9pbmRleCk7CiAJfQogfQorI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTF9NVUxUSSkKK3N0YXRpYyBpbmxpbmUgdm9pZAorc2VyaWFsX3B1dHNfZGV2KGludCBkZXZfaW5kZXgsIGNvbnN0IGNoYXIgKnMpCit7CisJX3NlcmlhbF9wdXRzKHMsIGRldl9pbmRleCk7Cit9CisjZWxzZQordm9pZAorc2VyaWFsX3B1dHMgKGNvbnN0IGNoYXIgKnMpCit7CisJX3NlcmlhbF9wdXRzKHMsIFVBUlRfTlIpOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfTVVMVEkpCitERUNMQVJFX1MzQ19TRVJJQUxfRlVOQ1RJT05TKDApOworc3RydWN0IHNlcmlhbF9kZXZpY2UgczNjMjR4eF9zZXJpYWwwX2RldmljZSA9CisJSU5JVF9TM0NfU0VSSUFMX1NUUlVDVFVSRSgwLCAiczNzZXIwIiwgIlMzVUFSVDEiKTsKK0RFQ0xBUkVfUzNDX1NFUklBTF9GVU5DVElPTlMoMSk7CitzdHJ1Y3Qgc2VyaWFsX2RldmljZSBzM2MyNHh4X3NlcmlhbDFfZGV2aWNlID0KKwlJTklUX1MzQ19TRVJJQUxfU1RSVUNUVVJFKDEsICJzM3NlcjEiLCAiUzNVQVJUMiIpOworREVDTEFSRV9TM0NfU0VSSUFMX0ZVTkNUSU9OUygyKTsKK3N0cnVjdCBzZXJpYWxfZGV2aWNlIHMzYzI0eHhfc2VyaWFsMl9kZXZpY2UgPQorCUlOSVRfUzNDX1NFUklBTF9TVFJVQ1RVUkUoMiwgInMzc2VyMiIsICJTM1VBUlQzIik7CisKKyNlbmRpZiAvKiBDT05GSUdfU0VSSUFMX01VTFRJICovCiAKICNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19TM0MyNDAwKSB8fCBkZWZpbmVkIChDT05GSUdfUzNDMjQxMCkgfHwgZGVmaW5lZCAoQ09ORklHX1RSQUIpICovCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9zdGFydC5TIGIvY3B1L2FybTkyMHQvc3RhcnQuUwppbmRleCBhZWZjZGQxLi5hZTg2MDAyIDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9zdGFydC5TCisrKyBiL2NwdS9hcm05MjB0L3N0YXJ0LlMKQEAgLTMyOSwxMiArMzI5LDEyIEBACiAJLm1hY3JvCWlycV9zYXZlX3VzZXJfcmVncwogCXN1YglzcCwgc3AsICNTX0ZSQU1FX1NJWkUKIAlzdG1pYQlzcCwge3IwIC0gcjEyfQkJCUAgQ2FsbGluZyByMC1yMTIKLQlhZGQgICAgIHI4LCBzcCwgI1NfUEMKLQlzdG1kYiAgIHI4LCB7c3AsIGxyfV4gICAgICAgICAgICAgICAgICAgQCBDYWxsaW5nIFNQLCBMUgotCXN0ciAgICAgbHIsIFtyOCwgIzBdICAgICAgICAgICAgICAgICAgICBAIFNhdmUgY2FsbGluZyBQQworCWFkZCAgICAgcjcsIHNwLCAjU19QQworCXN0bWRiICAgcjcsIHtzcCwgbHJ9XiAgICAgICAgICAgICAgICAgICBAIENhbGxpbmcgU1AsIExSCisJc3RyICAgICBsciwgW3I3LCAjMF0gICAgICAgICAgICAgICAgICAgIEAgU2F2ZSBjYWxsaW5nIFBDCiAJbXJzICAgICByNiwgc3BzcgotCXN0ciAgICAgcjYsIFtyOCwgIzRdICAgICAgICAgICAgICAgICAgICBAIFNhdmUgQ1BTUgotCXN0ciAgICAgcjAsIFtyOCwgIzhdICAgICAgICAgICAgICAgICAgICBAIFNhdmUgT0xEX1IwCisJc3RyICAgICByNiwgW3I3LCAjNF0gICAgICAgICAgICAgICAgICAgIEAgU2F2ZSBDUFNSCisJc3RyICAgICByMCwgW3I3LCAjOF0gICAgICAgICAgICAgICAgICAgIEAgU2F2ZSBPTERfUjAKIAltb3YJcjAsIHNwCiAJLmVuZG0KIApkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNmVqcy9jcHVpbmZvLmMgYi9jcHUvYXJtOTI2ZWpzL2NwdWluZm8uYwppbmRleCA4Yzk4NjMxLi4zNWJhN2RiIDEwMDY0NAotLS0gYS9jcHUvYXJtOTI2ZWpzL2NwdWluZm8uYworKysgYi9jcHUvYXJtOTI2ZWpzL2NwdWluZm8uYwpAQCAtMTgsOCArMTgsNiBAQAogI2RlZmluZSBvbWFwX3JlYWR3KHgpCQkqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopKHgpCiAjZGVmaW5lIG9tYXBfcmVhZGwoeCkJCSoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSh4KQogCi0jZGVmaW5lIEFSUkFZX1NJWkUoeCkJCShzaXplb2YoeCkgLyBzaXplb2YoKHgpWzBdKSkKLQogI2RlZmluZSBPTUFQX0RJRV9JRF8wCQkweGZmZmUxODAwCiAjZGVmaW5lIE9NQVBfRElFX0lEXzEJCTB4ZmZmZTE4MDQKICNkZWZpbmUgT01BUF9QUk9EVUNUSU9OX0lEXzAJMHhmZmZlMjAwMApkaWZmIC0tZ2l0IGEvY3B1L21wYzUxMngvY29uZmlnLm1rIGIvY3B1L21wYzUxMngvY29uZmlnLm1rCmluZGV4IDhhMDdjNWEuLjViN2UxZjIgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1MTJ4L2NvbmZpZy5taworKysgYi9jcHUvbXBjNTEyeC9jb25maWcubWsKQEAgLTIyLDQgKzIyLDQgQEAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaQogCiBQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM1MTJYIC1EQ09ORklHX0UzMDAgXAotCQkJLWZmaXhlZC1yMiAtZmZpeGVkLXIyOSAtbXNvZnQtZmxvYXQgLW1jcHU9NjAzZQorCQkJLWZmaXhlZC1yMiAtbXNvZnQtZmxvYXQgLW1jcHU9NjAzZQpkaWZmIC0tZ2l0IGEvY3B1L21wYzUxMngvY3B1LmMgYi9jcHUvbXBjNTEyeC9jcHUuYwppbmRleCA2NDIxYTUxLi5iZWQ3N2FjIDEwMDY0NAotLS0gYS9jcHUvbXBjNTEyeC9jcHUuYworKysgYi9jcHUvbXBjNTEyeC9jcHUuYwpAQCAtMTM4LDExICsxMzgsMTEgQEAKIAogCWRvX2ZpeHVwX2J5X3BhdGhfdTMyKGJsb2IsIGNwdV9wYXRoLCAidGltZWJhc2UtZnJlcXVlbmN5IiwgT0ZfVEJDTEssIDEpOwogCWRvX2ZpeHVwX2J5X3BhdGhfdTMyKGJsb2IsIGNwdV9wYXRoLCAiYnVzLWZyZXF1ZW5jeSIsIGJkLT5iaV9idXNmcmVxLCAxKTsKLQlkb19maXh1cF9ieV9wYXRoX3UzMihibG9iLCBjcHVfcGF0aCwgInJlZi1mcmVxdWVuY3kiLCBDRkdfTVBDNTEyWF9DTEtJTiwgMSk7CiAJZG9fZml4dXBfYnlfcGF0aF91MzIoYmxvYiwgY3B1X3BhdGgsICJjbG9jay1mcmVxdWVuY3kiLCBiZC0+YmlfaW50ZnJlcSwgMSk7CiAJZG9fZml4dXBfYnlfcGF0aF91MzIoYmxvYiwgIi8iIE9GX1NPQywgImJ1cy1mcmVxdWVuY3kiLCBiZC0+YmlfaXBzZnJlcSwgMSk7Ci0JZG9fZml4dXBfYnlfcGF0aF91MzIoYmxvYiwgIi8iIE9GX1NPQywgInJlZi1mcmVxdWVuY3kiLCBDRkdfTVBDNTEyWF9DTEtJTiwgMSk7Ci0JZG9fZml4dXBfYnlfcGF0aChibG9iLCBldGhfcGF0aCwgImFkZHJlc3MiLCBiZC0+YmlfZW5ldGFkZHIsIDYsIDApOwogCWRvX2ZpeHVwX2J5X3BhdGgoYmxvYiwgZXRoX3BhdGgsICJsb2NhbC1tYWMtYWRkcmVzcyIsIGJkLT5iaV9lbmV0YWRkciwgNiwgMCk7CisKKwkvKiB0aGlzIGlzIHNvIG9sZCBrZXJuZWxzIHdpdGggb2xkIGRldmljZSB0cmVlcyB3aWxsIGJvb3QgKi8KKwlkb19maXh1cF9ieV9wYXRoX3UzMihibG9iLCAiLyIgT0ZfU09DX09MRCwgImJ1cy1mcmVxdWVuY3kiLCBiZC0+YmlfaXBzZnJlcSwgMCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NwdS9tcGM1MTJ4L3N0YXJ0LlMgYi9jcHUvbXBjNTEyeC9zdGFydC5TCmluZGV4IDI0NGM2OWIuLjVhOWQ4NjggMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1MTJ4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzUxMngvc3RhcnQuUwpAQCAtNDc5LDUyICs0NzksNiBAQAogCW1mc3ByCXIzLCBQVlIKIAlibHIKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBGdW5jdGlvbjoJIHBwY0RjYmYgKi8KLS8qIERlc2NyaXB0aW9uOgkgRGF0YSBDYWNoZSBibG9jayBmbHVzaCAqLwotLyogSW5wdXQ6CSByMyA9IGVmZmVjdGl2ZSBhZGRyZXNzICovCi0vKiBPdXRwdXQ6CSBub25lLiAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLmdsb2JsCXBwY0RjYmYKLXBwY0RjYmY6Ci0JZGNiZglyMCxyMwotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIEZ1bmN0aW9uOgkgcHBjRGNiaSAqLwotLyogRGVzY3JpcHRpb246CSBEYXRhIENhY2hlIGJsb2NrIEludmFsaWRhdGUgKi8KLS8qIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcyAqLwotLyogT3V0cHV0Ogkgbm9uZS4gKi8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS5nbG9ibAlwcGNEY2JpCi1wcGNEY2JpOgotCWRjYmkJcjAscjMKLQlibHIKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogRnVuY3Rpb246CSBwcGNEY2J6Ci0gKiBEZXNjcmlwdGlvbjoJIERhdGEgQ2FjaGUgYmxvY2sgemVyby4KLSAqIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcwotICogT3V0cHV0Ogkgbm9uZS4KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS5nbG9ibAlwcGNEY2J6Ci1wcGNEY2J6OgotCWRjYnoJcjAscjMKLQlibHIKLQotCS5nbG9ibAlwcGNEV3N0b3JlCi1wcGNEV3N0b3JlOgotCWxmZAkxLCAwKHI0KQotCXN0ZmQJMSwgMChyMykKLQlibHIKLQotCS5nbG9ibAlwcGNEV2xvYWQKLXBwY0RXbG9hZDoKLQlsZmQJMSwgMChyMykKLQlzdGZkCTEsIDAocjQpCi0JYmxyCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qCmRpZmYgLS1naXQgYS9jcHUvbXBjNXh4L2NvbmZpZy5tayBiL2NwdS9tcGM1eHgvY29uZmlnLm1rCmluZGV4IDY0Y2Q2MDAuLjZkNjZjMzIgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1eHgvY29uZmlnLm1rCisrKyBiL2NwdS9tcGM1eHgvY29uZmlnLm1rCkBAIC0zMCw3ICszMCw3IEBACiAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IAktZlBJQyAtZmZpeGVkLXIxNCAtbWVhYmkKIAotUExBVEZPUk1fQ1BQRkxBR1MgKz0JLURDT05GSUdfNXh4IC1mZml4ZWQtcjIgLWZmaXhlZC1yMjkgLW1wb3dlcnBjIC1tc29mdC1mbG9hdAorUExBVEZPUk1fQ1BQRkxBR1MgKz0JLURDT05GSUdfNXh4IC1mZml4ZWQtcjIgLW1wb3dlcnBjIC1tc29mdC1mbG9hdAogCiAjIFVzZSBkZWZhdWx0IGxpbmtlciBzY3JpcHQuICBCb2FyZCBwb3J0IGNhbiBvdmVycmlkZSBpbiBib2FyZC8qL2NvbmZpZy5tawogTERTQ1JJUFQgOj0gJChTUkNUUkVFKS9jcHUvbXBjNXh4L3UtYm9vdC5sZHMKZGlmZiAtLWdpdCBhL2NwdS9tcGM1eHh4L2NvbmZpZy5tayBiL2NwdS9tcGM1eHh4L2NvbmZpZy5tawppbmRleCAwZGY1MWJhLi5iMGNlMmVlIDEwMDY0NAotLS0gYS9jcHUvbXBjNXh4eC9jb25maWcubWsKKysrIGIvY3B1L21wYzV4eHgvY29uZmlnLm1rCkBAIC0yMyw3ICsyMyw3IEBACiAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaQogCi1QTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM1eHh4IC1mZml4ZWQtcjIgLWZmaXhlZC1yMjkgXAorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDNXh4eCAtZmZpeGVkLXIyIFwKIAkJICAgICAtbXN0cmluZyAtbWNwdT02MDNlIC1tbXVsdGlwbGUKIAogIyBVc2UgZGVmYXVsdCBsaW5rZXIgc2NyaXB0LiAgQm9hcmQgcG9ydCBjYW4gb3ZlcnJpZGUgaW4gYm9hcmQvKi9jb25maWcubWsKZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjIwL2NvbmZpZy5tayBiL2NwdS9tcGM4MjIwL2NvbmZpZy5tawppbmRleCA4ZTNiYTU0Li41ODE5MDQ4IDEwMDY0NAotLS0gYS9jcHUvbXBjODIyMC9jb25maWcubWsKKysrIGIvY3B1L21wYzgyMjAvY29uZmlnLm1rCkBAIC0yMyw3ICsyMyw3IEBACiAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaQogCi1QTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4MjIwIC1mZml4ZWQtcjIgLWZmaXhlZC1yMjkgXAorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODIyMCAtZmZpeGVkLXIyIFwKIAkJICAgICAtbXN0cmluZyAtbWNwdT02MDNlIC1tbXVsdGlwbGUKIAogIyBVc2UgZGVmYXVsdCBsaW5rZXIgc2NyaXB0LiAgQm9hcmQgcG9ydCBjYW4gb3ZlcnJpZGUgaW4gYm9hcmQvKi9jb25maWcubWsKZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjR4L2NvbmZpZy5tayBiL2NwdS9tcGM4MjR4L2NvbmZpZy5tawppbmRleCA2NjIwN2Y0Li4xYmIwNDg3IDEwMDY0NAotLS0gYS9jcHUvbXBjODI0eC9jb25maWcubWsKKysrIGIvY3B1L21wYzgyNHgvY29uZmlnLm1rCkBAIC0yMyw3ICsyMyw3IEBACiAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaSAtZm5vLXN0cmljdC1hbGlhc2luZwogCi1QTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4MjRYIC1mZml4ZWQtcjIgLWZmaXhlZC1yMjkgLW1zdHJpbmcgLW1jcHU9NjAzZSAtbXNvZnQtZmxvYXQKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX01QQzgyNFggLWZmaXhlZC1yMiAtbXN0cmluZyAtbWNwdT02MDNlIC1tc29mdC1mbG9hdAogCiAjIFVzZSBkZWZhdWx0IGxpbmtlciBzY3JpcHQuICBCb2FyZCBwb3J0IGNhbiBvdmVycmlkZSBpbiBib2FyZC8qL2NvbmZpZy5tawogTERTQ1JJUFQgOj0gJChTUkNUUkVFKS9jcHUvbXBjODI0eC91LWJvb3QubGRzCmRpZmYgLS1naXQgYS9jcHUvbXBjODI2MC9jb25maWcubWsgYi9jcHUvbXBjODI2MC9jb25maWcubWsKaW5kZXggNjgzYjZmYi4uMmNiMDI3MCAxMDA2NDQKLS0tIGEvY3B1L21wYzgyNjAvY29uZmlnLm1rCisrKyBiL2NwdS9tcGM4MjYwL2NvbmZpZy5tawpAQCAtMjMsNyArMjMsNyBAQAogCiBQTEFURk9STV9SRUxGTEFHUyArPSAtZlBJQyAtZmZpeGVkLXIxNCAtbWVhYmkKIAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfODI2MCAtRENPTkZJR19DUE0yIC1mZml4ZWQtcjIgLWZmaXhlZC1yMjkgXAorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfODI2MCAtRENPTkZJR19DUE0yIC1mZml4ZWQtcjIgXAogCQkgICAgIC1tc3RyaW5nIC1tY3B1PTYwM2UgLW1tdWx0aXBsZQogCiAjIFVzZSBkZWZhdWx0IGxpbmtlciBzY3JpcHQuICBCb2FyZCBwb3J0IGNhbiBvdmVycmlkZSBpbiBib2FyZC8qL2NvbmZpZy5tawpkaWZmIC0tZ2l0IGEvY3B1L21wYzgzeHgvY29uZmlnLm1rIGIvY3B1L21wYzgzeHgvY29uZmlnLm1rCmluZGV4IGVjZjhhNjAuLjJmMGYxY2UgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L2NvbmZpZy5taworKysgYi9jcHUvbXBjODN4eC9jb25maWcubWsKQEAgLTIzLDcgKzIzLDcgQEAKIFBMQVRGT1JNX1JFTEZMQUdTICs9IC1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaQogCiBQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4M1hYIC1EQ09ORklHX0UzMDAgXAotCQkJLWZmaXhlZC1yMiAtZmZpeGVkLXIyOSAtbXNvZnQtZmxvYXQKKwkJCS1mZml4ZWQtcjIgLW1zb2Z0LWZsb2F0CiAKICMgVXNlIGRlZmF1bHQgbGlua2VyIHNjcmlwdC4gIEJvYXJkIHBvcnQgY2FuIG92ZXJyaWRlIGluIGJvYXJkLyovY29uZmlnLm1rCiBMRFNDUklQVCA6PSAkKFNSQ1RSRUUpL2NwdS9tcGM4M3h4L3UtYm9vdC5sZHMKZGlmZiAtLWdpdCBhL2NwdS9tcGM4M3h4L2ZkdC5jIGIvY3B1L21wYzgzeHgvZmR0LmMKaW5kZXggOTA5MTcxZi4uNmY1NTkzMiAxMDA2NDQKLS0tIGEvY3B1L21wYzgzeHgvZmR0LmMKKysrIGIvY3B1L21wYzgzeHgvZmR0LmMKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlIDxsaWJmZHQuaD4KICNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgogCitleHRlcm4gdm9pZCBmdF9xZV9zZXR1cCh2b2lkICpibG9iKTsKKwogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAKIHZvaWQgZnRfY3B1X3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQpAQCAtNDgsMTYgKzUwLDcgQEAKIAlkb19maXh1cF9ieV9wcm9wX3UzMihibG9iLCAiZGV2aWNlX3R5cGUiLCAic29jIiwgNCwKIAkJImJ1cy1mcmVxdWVuY3kiLCBiZC0+YmlfYnVzZnJlcSwgMSk7CiAjaWZkZWYgQ09ORklHX1FFCi0JZG9fZml4dXBfYnlfcHJvcF91MzIoYmxvYiwgImRldmljZV90eXBlIiwgInFlIiwgNCwKLQkJImJ1cy1mcmVxdWVuY3kiLCBnZC0+cWVfY2xrLCAxKTsKLQlkb19maXh1cF9ieV9wcm9wX3UzMihibG9iLCAiZGV2aWNlX3R5cGUiLCAicWUiLCA0LAotCQkiYnJnLWZyZXF1ZW5jeSIsIGdkLT5icmdfY2xrLCAxKTsKLQlkb19maXh1cF9ieV9jb21wYXRfdTMyKGJsb2IsICJmc2wscWUiLAotCQkiY2xvY2stZnJlcXVlbmN5IiwgZ2QtPnFlX2NsaywgMSk7Ci0JZG9fZml4dXBfYnlfY29tcGF0X3UzMihibG9iLCAiZnNsLHFlIiwKLQkJImJ1cy1mcmVxdWVuY3kiLCBnZC0+cWVfY2xrLCAxKTsKLQlkb19maXh1cF9ieV9jb21wYXRfdTMyKGJsb2IsICJmc2wscWUiLAotCQkiYnJnLWZyZXF1ZW5jeSIsIGdkLT5icmdfY2xrLCAxKTsKKwlmdF9xZV9zZXR1cChibG9iKTsKICNlbmRpZgogCiAjaWZkZWYgQ0ZHX05TMTY1NTAKZGlmZiAtLWdpdCBhL2NwdS9tcGM4M3h4L3N0YXJ0LlMgYi9jcHUvbXBjODN4eC9zdGFydC5TCmluZGV4IDFkZmJmNjIuLjMwOWViMzAgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzgzeHgvc3RhcnQuUwpAQCAtODQwLDQwICs4NDAsNiBAQAogCW1mc3ByCXIzLCBQVlIKIAlibHIKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBGdW5jdGlvbjoJIHBwY0RjYmYgKi8KLS8qIERlc2NyaXB0aW9uOgkgRGF0YSBDYWNoZSBibG9jayBmbHVzaCAqLwotLyogSW5wdXQ6CSByMyA9IGVmZmVjdGl2ZSBhZGRyZXNzICovCi0vKiBPdXRwdXQ6CSBub25lLiAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLmdsb2JsCXBwY0RjYmYKLXBwY0RjYmY6Ci0JZGNiZglyMCxyMwotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIEZ1bmN0aW9uOgkgcHBjRGNiaSAqLwotLyogRGVzY3JpcHRpb246CSBEYXRhIENhY2hlIGJsb2NrIEludmFsaWRhdGUgKi8KLS8qIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcyAqLwotLyogT3V0cHV0Ogkgbm9uZS4gKi8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS5nbG9ibAlwcGNEY2JpCi1wcGNEY2JpOgotCWRjYmkJcjAscjMKLQlibHIKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogRnVuY3Rpb246CSBwcGNEY2J6Ci0gKiBEZXNjcmlwdGlvbjoJIERhdGEgQ2FjaGUgYmxvY2sgemVyby4KLSAqIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcwotICogT3V0cHV0Ogkgbm9uZS4KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS5nbG9ibAlwcGNEY2J6Ci1wcGNEY2J6OgotCWRjYnoJcjAscjMKLQlibHIKLQogCS5nbG9ibAlwcGNEV3N0b3JlCiBwcGNEV3N0b3JlOgogCWxmZAkxLCAwKHI0KQpkaWZmIC0tZ2l0IGEvY3B1L21wYzg1eHgvY29uZmlnLm1rIGIvY3B1L21wYzg1eHgvY29uZmlnLm1rCmluZGV4IDYxMjEwNzQuLmY2ZGY3MDIgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4NXh4L2NvbmZpZy5taworKysgYi9jcHUvbXBjODV4eC9jb25maWcubWsKQEAgLTIzLDQgKzIzLDUgQEAKIAogUExBVEZPUk1fUkVMRkxBR1MgKz0gLWZQSUMgLWZmaXhlZC1yMTQgLW1lYWJpCiAKLVBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX01QQzg1eHggLURDT05GSUdfRTUwMCAtZmZpeGVkLXIyIC1mZml4ZWQtcjI5IC1XYSwtbWU1MDAgLW1zb2Z0LWZsb2F0IC1tbm8tc3RyaW5nCitQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4NXh4IC1EQ09ORklHX0U1MDAgLWZmaXhlZC1yMiBcCisJCQktV2EsLW1lNTAwIC1tc29mdC1mbG9hdCAtbW5vLXN0cmluZwpkaWZmIC0tZ2l0IGEvY3B1L21wYzg1eHgvZmR0LmMgYi9jcHUvbXBjODV4eC9mZHQuYwppbmRleCAwY2UxN2U3Li5hNmIwMTRjIDEwMDY0NAotLS0gYS9jcHUvbXBjODV4eC9mZHQuYworKysgYi9jcHUvbXBjODV4eC9mZHQuYwpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgPGxpYmZkdC5oPgogI2luY2x1ZGUgPGZkdF9zdXBwb3J0Lmg+CiAKK2V4dGVybiB2b2lkIGZ0X3FlX3NldHVwKHZvaWQgKmJsb2IpOworCiB2b2lkIGZ0X2NwdV9zZXR1cCh2b2lkICpibG9iLCBiZF90ICpiZCkKIHsKICNpZiBkZWZpbmVkKENPTkZJR19IQVNfRVRIMCkgfHwgZGVmaW5lZChDT05GSUdfSEFTX0VUSDEpIHx8XApAQCAtNDMsMTEgKzQ1LDcgQEAKIAlkb19maXh1cF9ieV9wcm9wX3UzMihibG9iLCAiZGV2aWNlX3R5cGUiLCAic29jIiwgNCwKIAkJImJ1cy1mcmVxdWVuY3kiLCBiZC0+YmlfYnVzZnJlcSwgMSk7CiAjaWZkZWYgQ09ORklHX1FFCi0JZG9fZml4dXBfYnlfcHJvcF91MzIoYmxvYiwgImRldmljZV90eXBlIiwgInFlIiwgNCwKLQkJImJ1cy1mcmVxdWVuY3kiLCBiZC0+YmlfYnVzZnJlcSwgMSk7Ci0JZG9fZml4dXBfYnlfcHJvcF91MzIoYmxvYiwgImRldmljZV90eXBlIiwgInFlIiwgNCwKLQkJCSJicmctZnJlcXVlbmN5IiwgYmQtPmJpX2J1c2ZyZXEgLyAyLCAxKTsKLQlmZHRfZml4dXBfcWVfZmlybXdhcmUoYmxvYik7CisJZnRfcWVfc2V0dXAoYmxvYik7CiAjZW5kaWYKIAogI2lmZGVmIENGR19OUzE2NTUwCmRpZmYgLS1naXQgYS9jcHUvbXBjODV4eC9zcGVlZC5jIGIvY3B1L21wYzg1eHgvc3BlZWQuYwppbmRleCAyN2RlMzdhLi45NTJmMzBjIDEwMDY0NAotLS0gYS9jcHUvbXBjODV4eC9zcGVlZC5jCisrKyBiL2NwdS9tcGM4NXh4L3NwZWVkLmMKQEAgLTc1LDYgKzc1LDkgQEAKIAlnZXRfc3lzX2luZm8gKCZzeXNfaW5mbyk7CiAJZ2QtPmNwdV9jbGsgPSBzeXNfaW5mby5mcmVxUHJvY2Vzc29yOwogCWdkLT5idXNfY2xrID0gc3lzX2luZm8uZnJlcVN5c3RlbUJ1czsKKwlnZC0+aTJjMV9jbGsgPSBzeXNfaW5mby5mcmVxU3lzdGVtQnVzOworCWdkLT5pMmMyX2NsayA9IHN5c19pbmZvLmZyZXFTeXN0ZW1CdXM7CisKICNpZiBkZWZpbmVkKENPTkZJR19DUE0yKQogCWdkLT52Y29fb3V0ID0gMipzeXNfaW5mby5mcmVxU3lzdGVtQnVzOwogCWdkLT5jcG1fY2xrID0gZ2QtPnZjb19vdXQgLyAyOwpkaWZmIC0tZ2l0IGEvY3B1L21wYzg1eHgvc3RhcnQuUyBiL2NwdS9tcGM4NXh4L3N0YXJ0LlMKaW5kZXggZThlNWViMi4uZWIyNGRiYyAxMDA2NDQKLS0tIGEvY3B1L21wYzg1eHgvc3RhcnQuUworKysgYi9jcHUvbXBjODV4eC9zdGFydC5TCkBAIC03NTcsNTEgKzc1Nyw2IEBACiAJbHdicngJcjMscjAscjMKIAlibHIKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBGdW5jdGlvbjoJIHBwY0RjYmYgKi8KLS8qIERlc2NyaXB0aW9uOgkgRGF0YSBDYWNoZSBibG9jayBmbHVzaCAqLwotLyogSW5wdXQ6CSByMyA9IGVmZmVjdGl2ZSBhZGRyZXNzICovCi0vKiBPdXRwdXQ6CSBub25lLiAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLmdsb2JsCXBwY0RjYmYKLXBwY0RjYmY6Ci0JZGNiZglyMCxyMwotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIEZ1bmN0aW9uOgkgcHBjRGNiaSAqLwotLyogRGVzY3JpcHRpb246CSBEYXRhIENhY2hlIGJsb2NrIEludmFsaWRhdGUgKi8KLS8qIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcyAqLwotLyogT3V0cHV0Ogkgbm9uZS4gKi8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS5nbG9ibAlwcGNEY2JpCi1wcGNEY2JpOgotCWRjYmkJcjAscjMKLQlibHIKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogRnVuY3Rpb246CSBwcGNEY2J6Ci0gKiBEZXNjcmlwdGlvbjoJIERhdGEgQ2FjaGUgYmxvY2sgemVyby4KLSAqIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcwotICogT3V0cHV0Ogkgbm9uZS4KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS5nbG9ibAlwcGNEY2J6Ci1wcGNEY2J6OgotCWRjYnoJcjAscjMKLQlibHIKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBGdW5jdGlvbjoJIHBwY1N5bmMgKi8KLS8qIERlc2NyaXB0aW9uOgkgUHJvY2Vzc29yIFN5bmNocm9uaXplICovCi0vKiBJbnB1dDoJIG5vbmUuICovCi0vKiBPdXRwdXQ6CSBub25lLiAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLmdsb2JsCXBwY1N5bmMKLXBwY1N5bmM6Ci0Jc3luYwotCWJscgotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qCmRpZmYgLS1naXQgYS9jcHUvbXBjODZ4eC9jb25maWcubWsgYi9jcHUvbXBjODZ4eC9jb25maWcubWsKaW5kZXggM2M1NGY0YS4uZDc2NzI2OSAxMDA2NDQKLS0tIGEvY3B1L21wYzg2eHgvY29uZmlnLm1rCisrKyBiL2NwdS9tcGM4Nnh4L2NvbmZpZy5tawpAQCAtMjMsNCArMjMsNCBAQAogCiBQTEFURk9STV9SRUxGTEFHUyArPSAtZlBJQyAtZmZpeGVkLXIxNCAtbWVhYmkKIAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODZ4eCAtZmZpeGVkLXIyIC1mZml4ZWQtcjI5IC1tc3RyaW5nCitQTEFURk9STV9DUFBGTEFHUyArPSAtRENPTkZJR19NUEM4Nnh4IC1mZml4ZWQtcjIgLW1zdHJpbmcKZGlmZiAtLWdpdCBhL2NwdS9tcGM4Nnh4L3NwZWVkLmMgYi9jcHUvbXBjODZ4eC9zcGVlZC5jCmluZGV4IDRmN2U4ZjEuLjdlODg0ZjggMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4Nnh4L3NwZWVkLmMKKysrIGIvY3B1L21wYzg2eHgvc3BlZWQuYwpAQCAtMTA1LDYgKzEwNSw4IEBACiAJZ2V0X3N5c19pbmZvKCZzeXNfaW5mbyk7CiAJZ2QtPmNwdV9jbGsgPSBzeXNfaW5mby5mcmVxUHJvY2Vzc29yOwogCWdkLT5idXNfY2xrID0gc3lzX2luZm8uZnJlcVN5c3RlbUJ1czsKKwlnZC0+aTJjMV9jbGsgPSBzeXNfaW5mby5mcmVxU3lzdGVtQnVzOworCWdkLT5pMmMyX2NsayA9IHN5c19pbmZvLmZyZXFTeXN0ZW1CdXM7CiAKIAlpZiAoZ2QtPmNwdV9jbGsgIT0gMCkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9jcHUvbXBjODZ4eC9zdGFydC5TIGIvY3B1L21wYzg2eHgvc3RhcnQuUwppbmRleCBjODMzMTBhLi4wOWY0Y2VlIDEwMDY0NAotLS0gYS9jcHUvbXBjODZ4eC9zdGFydC5TCisrKyBiL2NwdS9tcGM4Nnh4L3N0YXJ0LlMKQEAgLTcwOCw1MCArNzA4LDYgQEAKIAlibHIKIAogLyoKLSAqIEZ1bmN0aW9uOglwcGNEY2JmCi0gKiBEZXNjcmlwdGlvbjoJRGF0YSBDYWNoZSBibG9jayBmbHVzaAotICogSW5wdXQ6CXIzID0gZWZmZWN0aXZlIGFkZHJlc3MKLSAqIE91dHB1dDoJbm9uZS4KLSAqLwotCS5nbG9ibAlwcGNEY2JmCi1wcGNEY2JmOgotCWRjYmYJcjAscjMKLQlibHIKLQotLyoKLSAqIEZ1bmN0aW9uOglwcGNEY2JpCi0gKiBEZXNjcmlwdGlvbjoJRGF0YSBDYWNoZSBibG9jayBJbnZhbGlkYXRlCi0gKiBJbnB1dDoJcjMgPSBlZmZlY3RpdmUgYWRkcmVzcwotICogT3V0cHV0Oglub25lLgotICovCi0JLmdsb2JsCXBwY0RjYmkKLXBwY0RjYmk6Ci0JZGNiaQlyMCxyMwotCWJscgotCi0vKgotICogRnVuY3Rpb246CXBwY0RjYnoKLSAqIERlc2NyaXB0aW9uOglEYXRhIENhY2hlIGJsb2NrIHplcm8uCi0gKiBJbnB1dDoJcjMgPSBlZmZlY3RpdmUgYWRkcmVzcwotICogT3V0cHV0Oglub25lLgotICovCi0JLmdsb2JsCXBwY0RjYnoKLXBwY0RjYno6Ci0JZGNieglyMCxyMwotCWJscgotCi0vKgotICogRnVuY3Rpb246CXBwY1N5bmMKLSAqIERlc2NyaXB0aW9uOglQcm9jZXNzb3IgU3luY2hyb25pemUKLSAqIElucHV0Oglub25lLgotICogT3V0cHV0Oglub25lLgotICovCi0JLmdsb2JsCXBwY1N5bmMKLXBwY1N5bmM6Ci0Jc3luYwotCWJscgotCi0vKgogICogdm9pZCByZWxvY2F0ZV9jb2RlIChhZGRyX3NwLCBnZCwgYWRkcl9tb25pKQogICoKICAqIFRoaXMgImZ1bmN0aW9uIiBkb2VzIG5vdCByZXR1cm4sIGluc3RlYWQgaXQgY29udGludWVzIGluIFJBTQpAQCAtNzY3LDcgKzcyMyw3IEBACiAKIAltcglyMSwgIHIzCQkvKiBTZXQgbmV3IHN0YWNrIHBvaW50ZXIJCSovCiAJbXIJcjksICByNAkJLyogU2F2ZSBjb3B5IG9mIEdsb2JhbCBEYXRhIHBvaW50ZXIJKi8KLQltcglyMjksIHI5CQkvKiBTYXZlIGZvciBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUgkqLworCW1yCXIyLCAgcjkJCS8qIFNhdmUgZm9yIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSCSovCiAJbXIJcjEwLCByNQkJLyogU2F2ZSBjb3B5IG9mIERlc3RpbmF0aW9uIEFkZHJlc3MJKi8KIAogCW1yCXIzLCAgcjUJCQkJLyogRGVzdGluYXRpb24gQWRkcmVzcwkqLwpkaWZmIC0tZ2l0IGEvY3B1L21wYzh4eC9jb25maWcubWsgYi9jcHUvbXBjOHh4L2NvbmZpZy5tawppbmRleCBiZmE2NjI1Li42MDMxZTdmIDEwMDY0NAotLS0gYS9jcHUvbXBjOHh4L2NvbmZpZy5taworKysgYi9jcHUvbXBjOHh4L2NvbmZpZy5tawpAQCAtMjMsNCArMjMsNCBAQAogCiBQTEFURk9STV9SRUxGTEFHUyArPSAtZlBJQyAtZmZpeGVkLXIxNCAtbWVhYmkgLWZuby1zdHJpY3QtYWxpYXNpbmcKIAotUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfOHh4IC1mZml4ZWQtcjIgLWZmaXhlZC1yMjkgLW1zdHJpbmcgLW1jcHU9ODYwIC1tc29mdC1mbG9hdAorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfOHh4IC1mZml4ZWQtcjIgLW1zdHJpbmcgLW1jcHU9ODYwIC1tc29mdC1mbG9hdApkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9jb25maWcubWsgYi9jcHUvcHBjNHh4L2NvbmZpZy5tawppbmRleCA0ZmQ1MTA4Li4zMTFjOTdiIDEwMDY0NAotLS0gYS9jcHUvcHBjNHh4L2NvbmZpZy5taworKysgYi9jcHUvcHBjNHh4L2NvbmZpZy5tawpAQCAtMjIsNyArMjIsNyBAQAogIwogCiBQTEFURk9STV9SRUxGTEFHUyArPSAtZlBJQyAtZmZpeGVkLXIxNCAtbWVhYmkgLWZuby1zdHJpY3QtYWxpYXNpbmcKLVBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHXzR4eCAtZmZpeGVkLXIyIC1mZml4ZWQtcjI5IC1tc3RyaW5nIC1tc29mdC1mbG9hdAorUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfNHh4IC1mZml4ZWQtcjIgLW1zdHJpbmcgLW1zb2Z0LWZsb2F0CiAKIGNmZz0kKHNoZWxsIGdyZXAgY29uZmlncyAkKE9CSlRSRUUpL2luY2x1ZGUvY29uZmlnLmggfCBzZWQgJ3MvLio8XChjb25maWdzLipcKT4vXDEvJykKIGlzNDQwPSQoc2hlbGwgZ3JlcCBDT05GSUdfNDQwICQoVE9QRElSKS9pbmNsdWRlLyQoY2ZnKSkKZGlmZiAtLWdpdCBhL2NwdS9wcGM0eHgvc3RhcnQuUyBiL2NwdS9wcGM0eHgvc3RhcnQuUwppbmRleCA3N2MyYWE0Li5jMjljODdiIDEwMDY0NAotLS0gYS9jcHUvcHBjNHh4L3N0YXJ0LlMKKysrIGIvY3B1L3BwYzR4eC9zdGFydC5TCkBAIC0xMzA2LDM5ICsxMzA2LDYgQEAKIAlsd2JyeAlyMyxyMCxyMwogCWJscgogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIEZ1bmN0aW9uOgkgcHBjRGNiZiAqLwotLyogRGVzY3JpcHRpb246CSBEYXRhIENhY2hlIGJsb2NrIGZsdXNoICovCi0vKiBJbnB1dDoJIHIzID0gZWZmZWN0aXZlIGFkZHJlc3MgKi8KLS8qIE91dHB1dDoJIG5vbmUuICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkuZ2xvYmwJcHBjRGNiZgotcHBjRGNiZjoKLQlkY2JmCXIwLHIzCi0JYmxyCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogRnVuY3Rpb246CSBwcGNEY2JpICovCi0vKiBEZXNjcmlwdGlvbjoJIERhdGEgQ2FjaGUgYmxvY2sgSW52YWxpZGF0ZSAqLwotLyogSW5wdXQ6CSByMyA9IGVmZmVjdGl2ZSBhZGRyZXNzICovCi0vKiBPdXRwdXQ6CSBub25lLiAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLmdsb2JsCXBwY0RjYmkKLXBwY0RjYmk6Ci0JZGNiaQlyMCxyMwotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIEZ1bmN0aW9uOgkgcHBjU3luYyAqLwotLyogRGVzY3JpcHRpb246CSBQcm9jZXNzb3IgU3luY2hyb25pemUgKi8KLS8qIElucHV0Ogkgbm9uZS4gKi8KLS8qIE91dHB1dDoJIG5vbmUuICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkuZ2xvYmwJcHBjU3luYwotcHBjU3luYzoKLQlzeW5jCi0JYmxyCi0KIC8qCiAgKiB2b2lkIHJlbG9jYXRlX2NvZGUgKGFkZHJfc3AsIGdkLCBhZGRyX21vbmkpCiAgKgpkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS5zdGFuZGFsb25lIGIvZG9jL1JFQURNRS5zdGFuZGFsb25lCmluZGV4IDM0OTVmNTQuLjgxYjk0OWEgMTAwNjQ0Ci0tLSBhL2RvYy9SRUFETUUuc3RhbmRhbG9uZQorKysgYi9kb2MvUkVBRE1FLnN0YW5kYWxvbmUKQEAgLTIxLDkgKzIxLDEwIEBACiAyLiBUaGUgcG9pbnRlciB0byB0aGUganVtcCB0YWJsZSBpcyBwYXNzZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGluIGEKICAgIG1hY2hpbmUtZGVwZW5kZW50IHdheS4gUG93ZXJQQywgQVJNLCBNSVBTIGFuZCBCbGFja2ZpbiBhcmNoaXRlY3R1cmVzCiAgICB1c2UgYSBkZWRpY2F0ZWQgcmVnaXN0ZXIgdG8gaG9sZCB0aGUgcG9pbnRlciB0byB0aGUgJ2dsb2JhbF9kYXRhJwotICAgc3RydWN0dXJlOiByMjkgb24gUG93ZXJQQywgcjggb24gQVJNLCBrMCBvbiBNSVBTLCBhbmQgUDUgb24gQmxhY2tmaW4uCi0gICBUaGUgeDg2IGFyY2hpdGVjdHVyZSBkb2VzIG5vdCB1c2Ugc3VjaCBhIHJlZ2lzdGVyOyBpbnN0ZWFkLCB0aGUgcG9pbnRlcgotICAgdG8gdGhlICdnbG9iYWxfZGF0YScgc3RydWN0dXJlIGlzIHBhc3NlZCBhcyAnYXJndlstMV0nIHBvaW50ZXIuCisgICBzdHJ1Y3R1cmU6IHIyIG9uIFBvd2VyUEMsIHI4IG9uIEFSTSwgazAgb24gTUlQUywgYW5kIFA1IG9uIEJsYWNrZmluLgorICAgVGhlIHg4NiBhcmNoaXRlY3R1cmUgZG9lcyBub3QgdXNlIHN1Y2ggYSByZWdpc3RlcjsgaW5zdGVhZCwgdGhlCisgICBwb2ludGVyIHRvIHRoZSAnZ2xvYmFsX2RhdGEnIHN0cnVjdHVyZSBpcyBwYXNzZWQgYXMgJ2FyZ3ZbLTFdJworICAgcG9pbnRlci4KIAogICAgVGhlIGFwcGxpY2F0aW9uIGNhbiBhY2Nlc3MgdGhlICdnbG9iYWxfZGF0YScgc3RydWN0dXJlIGluIHRoZSBzYW1lCiAgICB3YXkgYXMgVS1Cb290IGRvZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9NQ0RfdGFza3MuYyBiL2RyaXZlcnMvZG1hL01DRF90YXNrcy5jCmluZGV4IDY5NGU3ODAuLjA2YTJkNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL01DRF90YXNrcy5jCisrKyBiL2RyaXZlcnMvZG1hL01DRF90YXNrcy5jCkBAIC0yMiw2ICsyMiwxMCBAQAogCiAvKiBDb250YWlucyB0YXNrIGNvZGUgYW5kIHN0cnVjdHVyZXMgZm9yIE11bHRpLWNoYW5uZWwgRE1BICovCiAKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2lmZGVmIENPTkZJR19GU0xETUFGRUMKKwogI2luY2x1ZGUgPE1DRF9kbWEuaD4KIAogdTMyIE1DRF92YXJUYWIwW107CkBAIC0yNDI2LDMgKzI0MzAsNSBAQAogI2lmZGVmIE1DRF9JTkNMVURFX0VVCiBNQ0RfYnVmRGVzYyBNQ0Rfc2luZ2xlQnVmRGVzY3NbTkNIQU5ORUxTXTsKICNlbmRpZgorCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENPTkZJR19GU0xETUFGRUMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RhdGFmbGFzaC5jIGIvZHJpdmVycy9tdGQvZGF0YWZsYXNoLmMKaW5kZXggOTE5MDNjOC4uM2ViYjcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGF0YWZsYXNoLmMKKysrIGIvZHJpdmVycy9tdGQvZGF0YWZsYXNoLmMKQEAgLTMwNCw3ICszMDQsNyBAQAogCiAJZm9yIChpID0gMDsgaSA8IENGR19NQVhfREFUQUZMQVNIX0JBTktTOyBpKyspCiAJCWlmICggZGF0YWZsYXNoX2luZm9baV0uaWQKLQkJCSYmICgoKChpbnQpIGFkZHIpICYgMHhGRjAwMDAwMCkgPT0KKwkJCSYmICgoKChpbnQpICphZGRyKSAmIDB4RkYwMDAwMDApID09CiAJCQlkYXRhZmxhc2hfaW5mb1tpXS5sb2dpY2FsX2FkZHJlc3MpKSB7CiAJCQlhZGRyX3ZhbGlkID0gMTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvamVkZWNfZmxhc2guYyBiL2RyaXZlcnMvbXRkL2plZGVjX2ZsYXNoLmMKaW5kZXggOTRlODdjYi4uNDFhYWQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvamVkZWNfZmxhc2guYworKysgYi9kcml2ZXJzL210ZC9qZWRlY19mbGFzaC5jCkBAIC0yMTgsMTAgKzIxOCw2IEBACiAjZW5kaWYKIH07CiAKLQotI2RlZmluZSBBUlJBWV9TSVpFKHgpIChzaXplb2YoeCkgLyBzaXplb2YoKHgpWzBdKSkKLQotCiBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbF9pbmZvKGZsYXNoX2luZm9fdCAqaW5mbywgY29uc3Qgc3RydWN0IGFtZF9mbGFzaF9pbmZvICpqZWRlY19lbnRyeSwgdWxvbmcgYmFzZSkKIHsKIAlpbnQgaSxqOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3M4OTAwLmMgYi9kcml2ZXJzL25ldC9jczg5MDAuYwppbmRleCA4MGM0YmEyLi41NWVmMzQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jczg5MDAuYworKysgYi9kcml2ZXJzL25ldC9jczg5MDAuYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAJCQkJIGFkZHJbMF0sIGFkZHJbMV0sCiAJCQkJIGFkZHJbMl0sIGFkZHJbM10sCiAJCQkJIGFkZHJbNF0sIGFkZHJbNV0pIDsKLQkJCWRlYnVnICgiIyMjIFNldCBlbnZpcm9ubWVudCBmcm9tIEhXIE1BQyBhZGRyID0gXCIlc1wiXG4iLAkJCQlldGhhZGRyKTsKKwkJCWRlYnVnICgiIyMjIFNldCBlbnZpcm9ubWVudCBmcm9tIEhXIE1BQyBhZGRyID0gXCIlc1wiXG4iLCBldGhhZGRyKTsKIAkJCXNldGVudiAoImV0aGFkZHIiLCBldGhhZGRyKTsKIAkJfQogCkBAIC0zMTcsNiArMzE3LDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotI2VuZGlmCS8qIENPTU1BTkRTICYgQ0ZHX05FVCAqLworI2VuZGlmCS8qIENPTkZJR19DTURfTkVUICovCiAKICNlbmRpZgkvKiBDT05GSUdfRFJJVkVSX0NTODkwMCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbGFuOTFjOTYuYyBiL2RyaXZlcnMvbmV0L2xhbjkxYzk2LmMKaW5kZXggZWNkY2JkOS4uNTFjZmI3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbGFuOTFjOTYuYworKysgYi9kcml2ZXJzL25ldC9sYW45MWM5Ni5jCkBAIC0zNiwxMiArMzYsMTIgQEAKICAqICAgQVVJL1RQIHNlbGVjdGlvbiAgKCBtaW5lIGhhcyAxMEJhc2UyLzEwQmFzZVQgc2VsZWN0ICkKICAqCiAgKiBBcmd1bWVudHM6Ci0gKiAJaW8JPSBmb3IgdGhlIGJhc2UgYWRkcmVzcworICoJaW8JPSBmb3IgdGhlIGJhc2UgYWRkcmVzcwogICoJaXJxCT0gZm9yIHRoZSBJUlEKICAqCiAgKiBhdXRob3I6Ci0gKiAJRXJpayBTdGFobG1hbgkJCQkoIGVyaWtAdnQuZWR1ICkKLSAqIAlEYXJpcyBBIE5ldmlsCQkJCSggZG5ldmlsQHNubWMuY29tICkKKyAqCUVyaWsgU3RhaGxtYW4JCQkJKCBlcmlrQHZ0LmVkdSApCisgKglEYXJpcyBBIE5ldmlsCQkJCSggZG5ldmlsQHNubWMuY29tICkKICAqCiAgKgogICogSGFyZHdhcmUgbXVsdGljYXN0IGNvZGUgZnJvbSBQZXRlciBDYW1tYWVydCAoIHBjQGRlbmthcnQuYmUgKQpAQCAtNTMsNyArNTMsNyBAQAogICogICAgbyAgIGxhbjkxYzk2LmMgKEludGVsIERpYWdub3N0aWMgTWFuYWdlciBkcml2ZXIpCiAgKgogICogSGlzdG9yeToKLSAqIAkwNC8zMC8wMyAgTWF0aGlqcyBIYWFybWFuCU1vZGlmaWVkIHNtYzkxMTExLmMgKHUtYm9vdCB2ZXJzaW9uKQorICoJMDQvMzAvMDMgIE1hdGhpanMgSGFhcm1hbglNb2RpZmllZCBzbWM5MTExMS5jICh1LWJvb3QgdmVyc2lvbikKICAqCQkJCQlmb3IgbGFuOTFjOTYKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTI5Niw4ICsyOTYsOCBAQAogLyoKICAqIEZ1bmN0aW9uOiBzbWNfcmVzZXQoIHZvaWQgKQogICogUHVycG9zZToKLSAqICAJVGhpcyBzZXRzIHRoZSBTTUM5MTExMSBjaGlwIHRvIGl0cyBub3JtYWwgc3RhdGUsIGhvcGVmdWxseSBmcm9tIHdoYXRldmVyCi0gKiAJbWVzcyB0aGF0IGFueSBvdGhlciBET1MgZHJpdmVyIGhhcyBwdXQgaXQgaW4uCisgKglUaGlzIHNldHMgdGhlIFNNQzkxMTExIGNoaXAgdG8gaXRzIG5vcm1hbCBzdGF0ZSwgaG9wZWZ1bGx5IGZyb20gd2hhdGV2ZXIKKyAqCW1lc3MgdGhhdCBhbnkgb3RoZXIgRE9TIGRyaXZlciBoYXMgcHV0IGl0IGluLgogICoKICAqIE1heWJlIEkgc2hvdWxkIHJlc2V0IG1vcmUgcmVnaXN0ZXJzIHRvIGRlZmF1bHRzIGluIGhlcmU/ICBTT0ZUUlNUICBzaG91bGQKICAqIGRvIHRoYXQgZm9yIG1lLgpAQCAtMzk3LDcgKzM5Nyw3IEBACiAgKglUaGlzIHNlbmRzIHRoZSBhY3R1YWwgcGFja2V0IHRvIHRoZSBTTUM5eHh4IGNoaXAuCiAgKgogICogQWxnb3JpdGhtOgotICogCUZpcnN0LCBzZWUgaWYgYSBzYXZlZF9za2IgaXMgYXZhaWxhYmxlLgorICoJRmlyc3QsIHNlZSBpZiBhIHNhdmVkX3NrYiBpcyBhdmFpbGFibGUuCiAgKgkJKCB0aGlzIHNob3VsZCBOT1QgYmUgY2FsbGVkIGlmIHRoZXJlIGlzIG5vICdzYXZlZF9za2InCiAgKglOb3csIGZpbmQgdGhlIHBhY2tldCBudW1iZXIgdGhhdCB0aGUgY2hpcCBhbGxvY2F0ZWQKICAqCVBvaW50IHRoZSBkYXRhIHBvaW50ZXJzIGF0IGl0IGluIG1lbW9yeQpAQCAtNDA1LDkgKzQwNSw5IEBACiAgKglEdW1wIHRoZSBwYWNrZXQgdG8gY2hpcCBtZW1vcnkKICAqCUNoZWNrIGlmIGEgbGFzdCBieXRlIGlzIG5lZWRlZCAoIG9kZCBsZW5ndGggcGFja2V0ICkKICAqCQlpZiBzbywgc2V0IHRoZSBjb250cm9sIGZsYWcgcmlnaHQKLSAqIAlUZWxsIHRoZSBjYXJkIHRvIHNlbmQgaXQKKyAqCVRlbGwgdGhlIGNhcmQgdG8gc2VuZCBpdAogICoJRW5hYmxlIHRoZSB0cmFuc21pdCBpbnRlcnJ1cHQsIHNvIEkga25vdyBpZiBpdCBmYWlsZWQKLSAqIAlGcmVlIHRoZSBrZXJuZWwgZGF0YSBpZiBJIGFjdHVhbGx5IHNlbnQgaXQuCisgKglGcmVlIHRoZSBrZXJuZWwgZGF0YSBpZiBJIGFjdHVhbGx5IHNlbnQgaXQuCiAgKi8KIHN0YXRpYyBpbnQgc21jX3NlbmRfcGFja2V0ICh2b2xhdGlsZSB2b2lkICpwYWNrZXQsIGludCBwYWNrZXRfbGVuZ3RoKQogewpAQCAtODY1LDcgKzg2NSw3IEBACiB9CiAjZW5kaWYgLyogMCAqLwogCi0jZW5kaWYgLyogQ09NTUFORFMgJiBDRkdfTkVUICovCisjZW5kaWYgLyogQ09ORklHX0NNRF9ORVQgKi8KIAogCiAvKiBzbWNfZ2V0X2V0aGFkZHIgKGJkX3QgKiBiZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGFybV9ldGguYyBiL2RyaXZlcnMvbmV0L25ldGFybV9ldGguYwppbmRleCBhOTllZTVkLi5lY2Y0NWRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXRhcm1fZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvbmV0YXJtX2V0aC5jCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAibmV0YXJtX2V0aC5oIgogI2luY2x1ZGUgPGFzbS9hcmNoL25ldGFybV9yZWdpc3RlcnMuaD4KIAotCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX05FVCkKIAogc3RhdGljIGludCBuYV9taWlfcG9sbF9idXN5ICh2b2lkKTsKQEAgLTU2LDcgKzU1LDYgQEAKIAlzZXRlbnYgKCJldGhhZGRyIiwgZXRoYWRkcik7CiB9CiAKLQogc3RhdGljIHZvaWQgbmFfbWlpX3dyaXRlIChpbnQgcmVnLCBpbnQgdmFsdWUpCiB7CiAJaW50IG1paV9hZGRyOwpAQCAtMzU1LDYgKzM1Myw2IEBACiAJcmV0dXJuIDE7CiB9CiAKLSNlbmRpZiAvKiBDT01NQU5EUyAmIENGR19ORVQgKi8KKyNlbmRpZiAvKiBDT05GSUdfQ01EX05FVCAqLwogCiAjZW5kaWYgLyogQ09ORklHX0RSSVZFUl9ORVRBUk1FVEggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3J0bDgwMTkuYyBiL2RyaXZlcnMvbmV0L3J0bDgwMTkuYwppbmRleCA0MDlhNjlmLi45ZDYyY2FiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ydGw4MDE5LmMKKysrIGIvZHJpdmVycy9uZXQvcnRsODAxOS5jCkBAIC0zNiwxNiArMzYsMTMgQEAKIAogI2lmIGRlZmluZWQoQ09ORklHX0NNRF9ORVQpCiAKLQogLyogcGFja2V0IHBhZ2UgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqLwogCi0KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGdldF9yZWcgKHVuc2lnbmVkIGludCByZWdubykKIHsKIAlyZXR1cm4gKCoodW5zaWduZWQgY2hhciAqKSByZWdubyk7CiB9CiAKLQogc3RhdGljIHZvaWQgcHV0X3JlZyAodW5zaWduZWQgaW50IHJlZ25vLCB1bnNpZ25lZCBjaGFyIHZhbCkKIHsKIAkqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgcmVnbm8gPSB2YWw7CkBAIC05MSw3ICs4OCw2IEBACiAJcHV0X3JlZyAoUlRMODAxOV9DT01NQU5ELCBSVEw4MDE5X1BBR0UwKTsKIH0KIAotCiB2b2lkIGV0aF9oYWx0ICh2b2lkKQogewogCXB1dF9yZWcgKFJUTDgwMTlfQ09NTUFORCwgMHgwMSk7CkBAIC0xMzQsNyArMTMwLDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdW5zaWduZWQgY2hhciBuaWNfdG9fcGMgKHZvaWQpCiB7CiAJdW5zaWduZWQgY2hhciByZWNfaGVhZF9zdGF0dXM7CkBAIC0yNzcsNiArMjcyLDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotI2VuZGlmIC8qIENPTU1BTkRTICYgQ0ZHX05FVCAqLworI2VuZGlmIC8qIENPTkZJR19DTURfTkVUICovCiAKICNlbmRpZiAvKiBDT05GSUdfRFJJVkVSX1JUTDgwMTkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3J0bDgxNjkuYyBiL2RyaXZlcnMvbmV0L3J0bDgxNjkuYwppbmRleCA1N2NjYmQ5Li5kNzEzMjNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ydGw4MTY5LmMKKysrIGIvZHJpdmVycy9uZXQvcnRsODE2OS5jCkBAIC0zNTIsOCArMzUyLDYgQEAKIAlyZXR1cm4gdmFsdWU7CiB9CiAKLSNkZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpIC8gc2l6ZW9mKCh4KVswXSkpCi0KIHN0YXRpYyBpbnQgcnRsODE2OV9pbml0X2JvYXJkKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCiB7CiAJaW50IGk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3FlL01ha2VmaWxlIGIvZHJpdmVycy9xZS9NYWtlZmlsZQppbmRleCA0ODQ0MTgxLi5lYzVhYTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3FlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcWUvTWFrZWZpbGUKQEAgLTI0LDcgKzI0LDggQEAKIAogTElCIAk6PSAkKG9iailxZS5hCiAKLUNPQkpTIAk6PSBxZS5vIHVjY2YubyB1ZWMubyB1ZWNfcGh5Lm8KK0NPQkpTLSQoQ09ORklHX09GX0xJQkZEVCkgKz0gZmR0Lm8KK0NPQkpTIAk6PSBxZS5vIHVjY2YubyB1ZWMubyB1ZWNfcGh5Lm8gJChDT0JKUy15KQogCiBTUkNTIAk6PSAkKENPQkpTOi5vPS5jKQogT0JKUyAJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9xZS9mZHQuYyBiL2RyaXZlcnMvcWUvZmR0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwNzQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvcWUvZmR0LmMKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxsaWJmZHQuaD4KKyNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgorI2luY2x1ZGUgInFlLmgiCisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisvKgorICogSWYgYSBRRSBmaXJtd2FyZSBoYXMgYmVlbiB1cGxvYWRlZCwgdGhlbiBhZGQgdGhlICdmaXJtd2FyZScgbm9kZSB1bmRlcgorICogdGhlICdxZScgbm9kZS4KKyAqLwordm9pZCBmZHRfZml4dXBfcWVfZmlybXdhcmUodm9pZCAqYmxvYikKK3sKKwlzdHJ1Y3QgcWVfZmlybXdhcmVfaW5mbyAqcWVfZndfaW5mbzsKKwlpbnQgbm9kZSwgcmV0OworCisJcWVfZndfaW5mbyA9IHFlX2dldF9maXJtd2FyZV9pbmZvKCk7CisJaWYgKCFxZV9md19pbmZvKQorCQlyZXR1cm47CisKKwlub2RlID0gZmR0X3BhdGhfb2Zmc2V0KGJsb2IsICIvcWUiKTsKKwlpZiAobm9kZSA8IDApCisJCXJldHVybjsKKworCS8qIFdlIGFzc3VtZSB0aGUgbm9kZSBkb2Vzbid0IGV4aXN0IHlldCAqLworCW5vZGUgPSBmZHRfYWRkX3N1Ym5vZGUoYmxvYiwgbm9kZSwgImZpcm13YXJlIik7CisJaWYgKG5vZGUgPCAwKQorCQlyZXR1cm47CisKKwlyZXQgPSBmZHRfc2V0cHJvcChibG9iLCBub2RlLCAiZXh0ZW5kZWQtbW9kZXMiLAorCQkmcWVfZndfaW5mby0+ZXh0ZW5kZWRfbW9kZXMsIHNpemVvZih1NjQpKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJvcjsKKworCXJldCA9IGZkdF9zZXRwcm9wX3N0cmluZyhibG9iLCBub2RlLCAiaWQiLCBxZV9md19pbmZvLT5pZCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyb3I7CisKKwlyZXQgPSBmZHRfc2V0cHJvcChibG9iLCBub2RlLCAidmlydHVhbC10cmFwcyIsIHFlX2Z3X2luZm8tPnZ0cmFwcywKKwkJc2l6ZW9mKHFlX2Z3X2luZm8tPnZ0cmFwcykpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycm9yOworCisJcmV0dXJuOworCitlcnJvcjoKKwlmZHRfZGVsX25vZGUoYmxvYiwgbm9kZSk7Cit9CisKK3ZvaWQgZnRfcWVfc2V0dXAodm9pZCAqYmxvYikKK3sKKyNpZmRlZiBDT05GSUdfUUUKKwlkb19maXh1cF9ieV9wcm9wX3UzMihibG9iLCAiZGV2aWNlX3R5cGUiLCAicWUiLCA0LAorCQkiYnVzLWZyZXF1ZW5jeSIsIGdkLT5xZV9jbGssIDEpOworCWRvX2ZpeHVwX2J5X3Byb3BfdTMyKGJsb2IsICJkZXZpY2VfdHlwZSIsICJxZSIsIDQsCisJCSJicmctZnJlcXVlbmN5IiwgZ2QtPmJyZ19jbGssIDEpOworCWRvX2ZpeHVwX2J5X2NvbXBhdF91MzIoYmxvYiwgImZzbCxxZSIsCisJCSJjbG9jay1mcmVxdWVuY3kiLCBnZC0+cWVfY2xrLCAxKTsKKwlkb19maXh1cF9ieV9jb21wYXRfdTMyKGJsb2IsICJmc2wscWUiLAorCQkiYnVzLWZyZXF1ZW5jeSIsIGdkLT5xZV9jbGssIDEpOworCWRvX2ZpeHVwX2J5X2NvbXBhdF91MzIoYmxvYiwgImZzbCxxZSIsCisJCSJicmctZnJlcXVlbmN5IiwgZ2QtPmJyZ19jbGssIDEpOworCWZkdF9maXh1cF9xZV9maXJtd2FyZShibG9iKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9xZS9xZS5oIGIvZHJpdmVycy9xZS9xZS5oCmluZGV4IDRjOTZjNjcuLjc0MWVkN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcWUvcWUuaAorKysgYi9kcml2ZXJzL3FlL3FlLmgKQEAgLTI4OSw1ICsyODksNiBAQAogaW50IHFlX3NldF9taWlfY2xrX3NyYyhpbnQgdWNjX251bSk7CiBpbnQgcWVfdXBsb2FkX2Zpcm13YXJlKGNvbnN0IHN0cnVjdCBxZV9maXJtd2FyZSAqZmlybXdhcmUpOwogc3RydWN0IHFlX2Zpcm13YXJlX2luZm8gKnFlX2dldF9maXJtd2FyZV9pbmZvKHZvaWQpOwordm9pZCBmdF9xZV9zZXR1cCh2b2lkICpibG9iKTsKIAogI2VuZGlmIC8qIF9fUUVfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9yeDgwMjUuYyBiL2RyaXZlcnMvcnRjL3J4ODAyNS5jCmluZGV4IDZjOTRhZTEuLjkxMjJmMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J4ODAyNS5jCisrKyBiL2RyaXZlcnMvcnRjL3J4ODAyNS5jCkBAIC0xNDIsNyArMTQyLDYgQEAKIAkJdG1wLT50bV9ob3VyLCB0bXAtPnRtX21pbiwgdG1wLT50bV9zZWMpOwogfQogCi0KIC8qCiAgKiBTZXQgdGhlIFJUQwogICovCkBAIC0xNjYsNyArMTY1LDYgQEAKIAlydGNfd3JpdGUgKFJUQ19DVEwxX1JFR19BRERSLCBSVENfQ1RMMV9CSVRfMjQxMik7CiB9CiAKLQogLyoKICAqIFJlc2V0IHRoZSBSVEMuIFdlIHNldHRpbmcgdGhlIGRhdGUgYmFjayB0byAxOTcwLTAxLTAxLgogICovCkBAIC0yMDAsNyArMTk4LDYgQEAKIAlyZXR1cm47CiB9CiAKLQogLyoKICAqIEhlbHBlciBmdW5jdGlvbnMKICAqLwpAQCAtMjI0LDQgKzIyMSw0IEBACiAJcmV0dXJuICgoKG4gLyAxMCkgPDwgNCkgfCAobiAlIDEwKSk7CiB9CiAKLSNlbmRpZiAvKiBDT05GSUdfUlRDX1JYODAyNSAmJiAoQ0ZHX0NPTU1BTkRTICYgQ0ZHX0NNRF9EQVRFKSAqLworI2VuZGlmIC8qIENPTkZJR19SVENfUlg4MDI1ICYmIENPTkZJR19DTURfREFURSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvbnMxNjU1MC5jIGIvZHJpdmVycy9zZXJpYWwvbnMxNjU1MC5jCmluZGV4IDI0Mjk0NjQuLjZiM2Y2MGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL25zMTY1NTAuYworKysgYi9kcml2ZXJzL3NlcmlhbC9uczE2NTUwLmMKQEAgLTIxLDExICsyMSwxNSBAQAogCWNvbV9wb3J0LT5tZHIxID0gMHg3OwkvKiBtb2RlIHNlbGVjdCByZXNldCBUTDE2Qzc1MCovCiAjZW5kaWYKIAljb21fcG9ydC0+bGNyID0gTENSX0JLU0UgfCBMQ1JWQUw7Ci0JY29tX3BvcnQtPmRsbCA9IGJhdWRfZGl2aXNvciAmIDB4ZmY7Ci0JY29tX3BvcnQtPmRsbSA9IChiYXVkX2Rpdmlzb3IgPj4gOCkgJiAweGZmOworCWNvbV9wb3J0LT5kbGwgPSAwOworCWNvbV9wb3J0LT5kbG0gPSAwOwogCWNvbV9wb3J0LT5sY3IgPSBMQ1JWQUw7CiAJY29tX3BvcnQtPm1jciA9IE1DUlZBTDsKIAljb21fcG9ydC0+ZmNyID0gRkNSVkFMOworCWNvbV9wb3J0LT5sY3IgPSBMQ1JfQktTRSB8IExDUlZBTDsKKwljb21fcG9ydC0+ZGxsID0gYmF1ZF9kaXZpc29yICYgMHhmZjsKKwljb21fcG9ydC0+ZGxtID0gKGJhdWRfZGl2aXNvciA+PiA4KSAmIDB4ZmY7CisJY29tX3BvcnQtPmxjciA9IExDUlZBTDsKICNpZiBkZWZpbmVkKENPTkZJR19PTUFQKQogI2lmIGRlZmluZWQoQ09ORklHX0FQVElYKQogCWNvbV9wb3J0LT5tZHIxID0gMzsJLyogLzEzIG1vZGUgc28gQXB0aXggNk1IeiBjYW4gaGl0IDExNTIwMCAqLwpAQCAtMzgsMTIgKzQyLDE2IEBACiB2b2lkIE5TMTY1NTBfcmVpbml0IChOUzE2NTUwX3QgY29tX3BvcnQsIGludCBiYXVkX2Rpdmlzb3IpCiB7CiAJY29tX3BvcnQtPmllciA9IDB4MDA7CisJY29tX3BvcnQtPmxjciA9IExDUl9CS1NFIHwgTENSVkFMOworCWNvbV9wb3J0LT5kbGwgPSAwOworCWNvbV9wb3J0LT5kbG0gPSAwOworCWNvbV9wb3J0LT5sY3IgPSBMQ1JWQUw7CisJY29tX3BvcnQtPm1jciA9IE1DUlZBTDsKKwljb21fcG9ydC0+ZmNyID0gRkNSVkFMOwogCWNvbV9wb3J0LT5sY3IgPSBMQ1JfQktTRTsKIAljb21fcG9ydC0+ZGxsID0gYmF1ZF9kaXZpc29yICYgMHhmZjsKIAljb21fcG9ydC0+ZGxtID0gKGJhdWRfZGl2aXNvciA+PiA4KSAmIDB4ZmY7CiAJY29tX3BvcnQtPmxjciA9IExDUlZBTDsKLQljb21fcG9ydC0+bWNyID0gTUNSVkFMOwotCWNvbV9wb3J0LT5mY3IgPSBGQ1JWQUw7CiB9CiAKIHZvaWQgTlMxNjU1MF9wdXRjIChOUzE2NTUwX3QgY29tX3BvcnQsIGNoYXIgYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL21wYzh4eHhfc3BpLmMgYi9kcml2ZXJzL3NwaS9tcGM4eHh4X3NwaS5jCmluZGV4IGEzZDFjOTUuLjJmZTgzOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL21wYzh4eHhfc3BpLmMKKysrIGIvZHJpdmVycy9zcGkvbXBjOHh4eF9zcGkuYwpAQCAtMjIsMTEgKzIyLDExIEBACiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgorI2lmIGRlZmluZWQoQ09ORklHX01QQzhYWFhfU1BJKSAmJiBkZWZpbmVkKENPTkZJR19IQVJEX1NQSSkKKwogI2luY2x1ZGUgPHNwaS5oPgogI2luY2x1ZGUgPGFzbS9tcGM4eHh4X3NwaS5oPgogCi0jaWZkZWYgQ09ORklHX0hBUkRfU1BJCi0KICNkZWZpbmUgU1BJX0VWX05FCSgweDgwMDAwMDAwID4+IDIyKQkvKiBSZWNlaXZlciBOb3QgRW1wdHkgKi8KICNkZWZpbmUgU1BJX0VWX05GCSgweDgwMDAwMDAwID4+IDIzKQkvKiBUcmFuc21pdHRlciBOb3QgRnVsbCAqLwogCmRpZmYgLS1naXQgYS9leGFtcGxlcy9zdHVicy5jIGIvZXhhbXBsZXMvc3R1YnMuYwppbmRleCA1NzFjNGQ1Li45YjNjYWRkIDEwMDY0NAotLS0gYS9leGFtcGxlcy9zdHVicy5jCisrKyBiL2V4YW1wbGVzL3N0dWJzLmMKQEAgLTI1LDE0ICsyNSwxNCBAQAogCTogOiAiaSIoWEZfICMjIHggKiBzaXplb2Yodm9pZCAqKSkgOiAiZWF4IiwgImVjeCIpOwogI2VsaWYgZGVmaW5lZChDT05GSUdfUFBDKQogLyoKLSAqIHIyOSBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgZ2xvYmFsX2RhdGEsIHIxMSBpcyBhIGNhbGwtY2xvYmJlcmVkCisgKiByMiBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgZ2xvYmFsX2RhdGEsIHIxMSBpcyBhIGNhbGwtY2xvYmJlcmVkCiAgKiByZWdpc3RlcgogICovCiAjZGVmaW5lIEVYUE9SVF9GVU5DKHgpIFwKIAlhc20gdm9sYXRpbGUgKAkJCVwKICIJLmdsb2JsICIgI3ggIlxuIgkJXAogI3ggIjpcbiIJCQkJXAotIglsd3oJJSVyMTEsICUwKCUlcjI5KVxuIglcCisiCWx3egklJXIxMSwgJTAoJSVyMilcbiIJXAogIglsd3oJJSVyMTEsICUxKCUlcjExKVxuIglcCiAiCW10Y3RyCSUlcjExXG4iCQlcCiAiCWJjdHJcbiIJCQkJXApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvdGVzdF9idXJzdF9saWIuUyBiL2V4YW1wbGVzL3Rlc3RfYnVyc3RfbGliLlMKaW5kZXggNWJiNDk4MS4uYWVmNGUzMiAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvdGVzdF9idXJzdF9saWIuUworKysgYi9leGFtcGxlcy90ZXN0X2J1cnN0X2xpYi5TCkBAIC03MCw3ICs3MCw3IEBACiAJICogd2UgY2FuIGxvYWQgdGhlIGluc3RydWN0aW9uIGFuZCBkYXRhIFRMQiByZWdpc3RlcnMgd2l0aCB0aGUKIAkgKiBzYW1lIHZhbHVlcy4KIAkgKi8KLQlsd3oJcjksMjAocjI5KQkJLyogZ2QtPnJhbV9zaXplICovCisJbHd6CXI5LDIwKHIyKQkJLyogZ2QtPnJhbV9zaXplICovCiAJYWRkaXMJcjkscjksLTB4ODAKIAogCW1yCXI4LCByOQkJCS8qIEhpZ2hlciA4IE1lZyBpbiBTRFJBTSAqLwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMveDg2LXRlc3RhcHAuYyBiL2V4YW1wbGVzL3g4Ni10ZXN0YXBwLmMKaW5kZXggYTFhYjMxOS4uZTg2MDNkOSAxMDA2NDQKLS0tIGEvZXhhbXBsZXMveDg2LXRlc3RhcHAuYworKysgYi9leGFtcGxlcy94ODYtdGVzdGFwcC5jCkBAIC0zMCwxMSArMzAsMTEgQEAKIGFzbSB2b2xhdGlsZSAoCQkJCQkJXAogIgkuZ2xvYmwgbW9uXyIgI3ggIlxuIgkJCQlcCiAibW9uXyIgI3ggIjpcbiIJCQkJCQlcCi0iCWx3egklJXIxMSwgJTAoJSVyMjkpXG4iCQkJXAorIglsd3oJJSVyMTEsICUwKCUlcjIpXG4iCQkJXAogIglsd3oJJSVyMTEsICUxKCUlcjExKVxuIgkJCVwKICIJbXRjdHIJJSVyMTFcbiIJCQkJXAogIgliY3RyXG4iCQkJCQlcCi0JOiA6ICJpIihvZmZzZXRvZih4eHhfdCwgcGZ1bmMpKSwgImkiKFhGXyAjIyB4ICogc2l6ZW9mKHZvaWQgKikpIDogInIxMSIsICJyMjkiKTsKKwk6IDogImkiKG9mZnNldG9mKHh4eF90LCBwZnVuYykpLCAiaSIoWEZfICMjIHggKiBzaXplb2Yodm9pZCAqKSkgOiAicjExIiwgInIyIik7CiAjZWxpZiBkZWZpbmVkKF9fYXJtX18pCiAjZGVmaW5lIEVYUE9SVF9GVU5DKHgpCQkJCQlcCiBhc20gdm9sYXRpbGUgKAkJCQkJCVwKQEAgLTY3LDcgKzY3LDcgQEAKICNpZiBkZWZpbmVkKF9faTM4Nl9fKQogCXh4eF90ICpwcTsKICNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0JcmVnaXN0ZXIgdm9sYXRpbGUgeHh4X3QgKnBxIGFzbSgicjI5Iik7CisJcmVnaXN0ZXIgdm9sYXRpbGUgeHh4X3QgKnBxIGFzbSgicjIiKTsKICNlbGlmIGRlZmluZWQoX19hcm1fXykKIAlyZWdpc3RlciB2b2xhdGlsZSB4eHhfdCAqcHEgYXNtKCJyOCIpOwogI2VsaWYgZGVmaW5lZChfX21pcHNfXykKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9mYXQuYyBiL2ZzL2ZhdC9mYXQuYwppbmRleCBlZThiNWZlLi5jMWU1NzQxIDEwMDY0NAotLS0gYS9mcy9mYXQvZmF0LmMKKysrIGIvZnMvZmF0L2ZhdC5jCkBAIC05ODQsNyArOTg0LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19DTURfSURFKSB8fCBcCiAgICAgZGVmaW5lZChDT05GSUdfQ01EX1NDU0kpIHx8IFwKICAgICBkZWZpbmVkKENPTkZJR19DTURfVVNCKSB8fCBcCi0gICAgKENPTkZJR19NTUMpCisgICAgZGVmaW5lZChDT05GSUdfTU1DKQogCXByaW50ZigiSW50ZXJmYWNlOiAgIik7CiAJc3dpdGNoKGN1cl9kZXYtPmlmX3R5cGUpIHsKIAkJY2FzZSBJRl9UWVBFX0lERSA6CXByaW50ZigiSURFIik7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL2dsb2JhbF9kYXRhLmggYi9pbmNsdWRlL2FzbS1wcGMvZ2xvYmFsX2RhdGEuaAppbmRleCBhYTYzODRjLi5mOWEzZDkyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wcGMvZ2xvYmFsX2RhdGEuaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvZ2xvYmFsX2RhdGEuaApAQCAtNzAsOCArNzAsNiBAQAogCXUzMiBzZGhjX2NsazsKICNlbmRpZgogCXUzMiBjb3JlX2NsazsKLQl1MzIgaTJjMV9jbGs7Ci0JdTMyIGkyYzJfY2xrOwogCXUzMiBlbmNfY2xrOwogCXUzMiBsYml1X2NsazsKIAl1MzIgbGNsa19jbGs7CkBAIC04OCw2ICs4NiwxMCBAQAogCXUzMiAgZGRyX3NlY19jbGs7CiAjZW5kaWYgLyogQ09ORklHX01QQzgzNjAgKi8KICNlbmRpZgorI2lmIGRlZmluZWQoQ09ORklHX01QQzgzWFgpIHx8IGRlZmluZWQoQ09ORklHX01QQzg1eHgpIHx8IGRlZmluZWQoQ09ORklHX01QQzg2eHgpCisJdTMyIGkyYzFfY2xrOworCXUzMiBpMmMyX2NsazsKKyNlbmRpZgogI2lmIGRlZmluZWQoQ09ORklHX1FFKQogCXUzMiBxZV9jbGs7CiAJdTMyIGJyZ19jbGs7CkBAIC0xNjMsNyArMTY1LDcgQEAKICNkZWZpbmUJR0RfRkxHX1NJTEVOVAkweDAwMDA0CQkvKiBTaWxlbnQgbW9kZQkJCQkqLwogCiAjaWYgMQotI2RlZmluZSBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUiAgICAgcmVnaXN0ZXIgdm9sYXRpbGUgZ2RfdCAqZ2QgYXNtICgicjI5IikKKyNkZWZpbmUgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgICAgIHJlZ2lzdGVyIHZvbGF0aWxlIGdkX3QgKmdkIGFzbSAoInIyIikKICNlbHNlIC8qIFdlIGNvdWxkIHVzZSBwbGFpbiBnbG9iYWwgZGF0YSwgYnV0IHRoZSByZXN1bHRpbmcgY29kZSBpcyBiaWdnZXIgKi8KICNkZWZpbmUgWFRSTl9ERUNMQVJFX0dMT0JBTF9EQVRBX1BUUglleHRlcm4KICNkZWZpbmUgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgICAgIFhUUk5fREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc2gvY3B1X3NoNzcyMi5oIGIvaW5jbHVkZS9hc20tc2gvY3B1X3NoNzcyMi5oCmluZGV4IDEzZDRhNzcuLjA5NzViNzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNoL2NwdV9zaDc3MjIuaAorKysgYi9pbmNsdWRlL2FzbS1zaC9jcHVfc2g3NzIyLmgKQEAgLTEyODIsMTIgKzEyODIsMTIgQEAKICNkZWZpbmUgSElaQ1JBICAgICAgMHhBNDA1MDE1OAogI2RlZmluZSBISVpDUkIgICAgICAweEE0MDUwMTVBCiAjZGVmaW5lIEhJWkNSQyAgICAgIDB4QTQwNTAxNUMKLSNkZWZpbmUgTVNFTENSICAgICAgMHhBNDA1MDE1QwotI2RlZmluZSBQVUxDUiAgICAgICAweEE0MDUwMTVFCi0jZGVmaW5lIERSVkNSICAgICAgIDB4QTQwNTAxODAKLSNkZWZpbmUgU0JTQ1IgICAgICAgMHhBNDA1MDE4MgotI2RlZmluZSBBVURUSENSICAgICAweEE0MDUwMTg0Ci0jZGVmaW5lIFBTRUxGICAgICAgIDB4QTQwNTAxODYKKyNkZWZpbmUgSElaQ1JDCQkweEE0MDUwMTVDCisjZGVmaW5lIE1TRUxDUkEJCTB4QTQwNTAxODAKKyNkZWZpbmUgTVNFTENSQgkJMHhBNDA1MDE4MgorI2RlZmluZSBQVUxDUgkJMHhBNDA1MDE4NAorI2RlZmluZSBTQlNDUgkJMHhBNDA1MDE4NgorI2RlZmluZSBEUlZDUgkJMHhBNDA1MDE4QQogCiAvKglJL08gUG9ydAkqLwogI2RlZmluZSBQQURSICAgICAgICAweEE0MDUwMTIwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbW1vbi5oIGIvaW5jbHVkZS9jb21tb24uaAppbmRleCBlNTEzYWIzLi45M2UzZjdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbW1vbi5oCisrKyBiL2luY2x1ZGUvY29tbW9uLmgKQEAgLTIwNiw4ICsyMDYsOCBAQAogdm9pZAlyZXNldF9jbWRfdGltZW91dCh2b2lkKTsKIAogLyogbGliXyQoQVJDSCkvYm9hcmQuYyAqLwotdm9pZAlib2FyZF9pbml0X2YgICh1bG9uZyk7Ci12b2lkCWJvYXJkX2luaXRfciAgKGdkX3QgKiwgdWxvbmcpOwordm9pZAlib2FyZF9pbml0X2YgICh1bG9uZykgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7Cit2b2lkCWJvYXJkX2luaXRfciAgKGdkX3QgKiwgdWxvbmcpIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwogaW50CWNoZWNrYm9hcmQgICAgKHZvaWQpOwogaW50CWNoZWNrZmxhc2ggICAgKHZvaWQpOwogaW50CWNoZWNrZHJhbSAgICAgKHZvaWQpOwpAQCAtNDgyLDYgKzQ4Miw4IEBACiB1bG9uZwlnZXRfUENJX2ZyZXEgKHZvaWQpOwogI2VuZGlmCiAjaWYgZGVmaW5lZChDT05GSUdfUzNDMjQwMCkgfHwgZGVmaW5lZChDT05GSUdfUzNDMjQxMCkgfHwgZGVmaW5lZChDT05GSUdfTEg3QTQwWCkKK3ZvaWQJczNjMjQxMF9pcnEodm9pZCk7CisjZGVmaW5lIEFSTTkyMF9JUlFfQ0FMTEJBQ0sgczNjMjQxMF9pcnEKIHVsb25nCWdldF9GQ0xLICh2b2lkKTsKIHVsb25nCWdldF9IQ0xLICh2b2lkKTsKIHVsb25nCWdldF9QQ0xLICh2b2lkKTsKQEAgLTY2Niw0ICs2NjgsNiBAQAogI2Vycm9yIFJlYWQgc2VjdGlvbiBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIGluIFJFQURNRS4KICNlbmRpZgogCisjZGVmaW5lIEFSUkFZX1NJWkUoeCkgKHNpemVvZih4KSAvIHNpemVvZigoeClbMF0pKQorCiAjZW5kaWYJLyogX19DT01NT05fSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BUDEwMDAuaCBiL2luY2x1ZGUvY29uZmlncy9BUDEwMDAuaAppbmRleCBkNDkwYjMzLi5iYWE5NzQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQVAxMDAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FQMTAwMC5oCkBAIC0yMiw4ICsyMiw2IEBACiAgKiAoZWFzeSB0byBjaGFuZ2UpCiAgKi8KIAotI3VuZGVmIERFQlVHCi0KICNkZWZpbmUgQ09ORklHXzQwNQkxCQkvKiBUaGlzIGlzIGEgUFBDNDA1IENQVQkgICAgKi8KICNkZWZpbmUgQ09ORklHXzR4eAkxCQkvKiAuLi5tZW1iZXIgb2YgUFBDNHh4IGZhbWlseQkqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQkFCN3h4LmggYi9pbmNsdWRlL2NvbmZpZ3MvQkFCN3h4LmgKaW5kZXggYzExZTljOS4uOGVjNzBhYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0JBQjd4eC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9CQUI3eHguaApAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmICBERUJVRwogI2RlZmluZSBHVFJFR1JFQUQoeCkgMHhmZmZmZmZmZiAgICAgICAgIC8qIG5lZWRlZCBmb3IgZGVidWcgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9FQitNQ0YtRVYxMjMuaCBiL2luY2x1ZGUvY29uZmlncy9FQitNQ0YtRVYxMjMuaAppbmRleCBkYWU1Mjk1Li5lYTQ5YTVkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRUIrTUNGLUVWMTIzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0VCK01DRi1FVjEyMy5oCkBAIC0yNyw5ICsyNyw3IEBACiAKICNkZWZpbmUgIENPTkZJR19FQl9NQ0ZfRVYxMjMKIAotI3VuZGVmIERFQlVHCiAjdW5kZWYgQ0ZHX0hBTFRfQkVGT1JfUkFNX0pVTVAKLSN1bmRlZiBFVF9ERUJVRwogCiAvKgogICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMgKGVhc3kgdG8gY2hhbmdlKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0VMUFBDLmggYi9pbmNsdWRlL2NvbmZpZ3MvRUxQUEMuaAppbmRleCBiYjc3MTg4Li5jNjQ1MzdmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRUxQUEMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRUxQUEMuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmICBERUJVRwogI2RlZmluZSBHVFJFR1JFQUQoeCkgMHhmZmZmZmZmZiAgICAgICAgIC8qIG5lZWRlZCBmb3IgZGVidWcgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9JUEhBU0U0NTM5LmggYi9pbmNsdWRlL2NvbmZpZ3MvSVBIQVNFNDUzOS5oCmluZGV4IDZmZWU0NTUuLmJiMmM5NmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9JUEhBU0U0NTM5LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0lQSEFTRTQ1MzkuaApAQCAtMzAsOCArMzAsNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmIERFQlVHCQkJCS8qIEdlbmVyYWwgZGVidWcgKi8KLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKICAqIChlYXN5IHRvIGNoYW5nZSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTIyNzdFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTIyNzdFVkIuaAppbmRleCBhYjU3NGQ1Li5hM2Q3YmM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUyMjc3RVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MjI3N0VWQi5oCkBAIC0zOCw4ICszOCw2IEBACiAjZGVmaW5lIENPTkZJR19NNTIyNzcJCS8qIGRlZmluZSBwcm9jZXNzb3IgdHlwZSAqLwogI2RlZmluZSBDT05GSUdfTTUyMjc3RVZCCS8qIE01MjI3N0VWQiBib2FyZCAqLwogCi0jdW5kZWYgREVCVUcKLQogI2RlZmluZSBDT05GSUdfTUNGVUFSVAogI2RlZmluZSBDRkdfVUFSVF9QT1JUCQkoMCkKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTIzNUVWQi5oIGIvaW5jbHVkZS9jb25maWdzL001MjM1RVZCLmgKaW5kZXggN2Y1NDRjOC4uM2I0YmZmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MjM1RVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MjM1RVZCLmgKQEAgLTM3LDggKzM3LDYgQEAKICNkZWZpbmUgQ09ORklHX01DRjUyM3gJCS8qIGRlZmluZSBwcm9jZXNzb3IgZmFtaWx5ICovCiAjZGVmaW5lIENPTkZJR19NNTIzNQkJLyogZGVmaW5lIHByb2Nlc3NvciB0eXBlICovCiAKLSN1bmRlZiBERUJVRwotCiAjZGVmaW5lIENPTkZJR19NQ0ZVQVJUCiAjZGVmaW5lIENGR19VQVJUX1BPUlQJCSgwKQogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MjcxRVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUyNzFFVkIuaAppbmRleCA3OThlYzBjLi40N2UxZTAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUyNzFFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUyNzFFVkIuaApAQCAtMzEsOCArMzEsNiBAQAogI2lmbmRlZiBfTTUyNzFFVkJfSAogI2RlZmluZSBfTTUyNzFFVkJfSAogCi0jdW5kZWYgREVCVUcKLQogLyoKICAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zIChlYXN5IHRvIGNoYW5nZSkKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaAppbmRleCBlOTU2NzM5Li4xYTE1Yzc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaApAQCAtMzcsOCArMzcsNiBAQAogI2RlZmluZSBDT05GSUdfTUNGNTMyeAkJLyogZGVmaW5lIHByb2Nlc3NvciBmYW1pbHkgKi8KICNkZWZpbmUgQ09ORklHX001MzI5CQkvKiBkZWZpbmUgcHJvY2Vzc29yIHR5cGUgKi8KIAotI3VuZGVmIERFQlVHCi0KICNkZWZpbmUgQ09ORklHX01DRlVBUlQKICNkZWZpbmUgQ0ZHX1VBUlRfUE9SVAkJKDApCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTUzNzNFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTM3M0VWQi5oCmluZGV4IDZiZmZmYTEuLmRhNDE1NmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTM3M0VWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTM3M0VWQi5oCkBAIC0zNyw4ICszNyw2IEBACiAjZGVmaW5lIENPTkZJR19NQ0Y1MzJ4CQkvKiBkZWZpbmUgcHJvY2Vzc29yIGZhbWlseSAqLwogI2RlZmluZSBDT05GSUdfTTUzNzMJCS8qIGRlZmluZSBwcm9jZXNzb3IgdHlwZSAqLwogCi0jdW5kZWYgREVCVUcKLQogI2RlZmluZSBDT05GSUdfTUNGVUFSVAogI2RlZmluZSBDRkdfVUFSVF9QT1JUCQkoMCkKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTQ0NTVFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTQ0NTVFVkIuaAppbmRleCA1ODFjNzk0Li41ZjU1NzYxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTU0NDU1RVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001NDQ1NUVWQi5oCkBAIC0zOCw4ICszOCw2IEBACiAjZGVmaW5lIENPTkZJR19NNTQ0NTUJCS8qIGRlZmluZSBwcm9jZXNzb3IgdHlwZSAqLwogI2RlZmluZSBDT05GSUdfTTU0NDU1RVZCCS8qIE01NDQ1NUVWQiBib2FyZCAqLwogCi0jdW5kZWYgREVCVUcKLQogI2RlZmluZSBDT05GSUdfTUNGVUFSVAogI2RlZmluZSBDRkdfVUFSVF9QT1JUCQkoMCkKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTQ3NUVWQi5oIGIvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmgKaW5kZXggODRjMjEwNS4uZjBkNDJiZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmgKQEAgLTM4LDggKzM4LDYgQEAKICNkZWZpbmUgQ09ORklHX001NDd4CQkvKiBkZWZpbmUgcHJvY2Vzc29yIHR5cGUgKi8KICNkZWZpbmUgQ09ORklHX001NDc1CQkvKiBkZWZpbmUgcHJvY2Vzc29yIHR5cGUgKi8KIAotI3VuZGVmIERFQlVHCi0KICNkZWZpbmUgQ09ORklHX01DRlVBUlQKICNkZWZpbmUgQ0ZHX1VBUlRfUE9SVAkJKDApCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTU0ODVFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTQ4NUVWQi5oCmluZGV4IGU5ZTVlZTkuLjg4ZGQyMTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTQ4NUVWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTQ4NUVWQi5oCkBAIC0zOCw4ICszOCw2IEBACiAjZGVmaW5lIENPTkZJR19NNTQ4eAkJLyogZGVmaW5lIHByb2Nlc3NvciB0eXBlICovCiAjZGVmaW5lIENPTkZJR19NNTQ4NQkJLyogZGVmaW5lIHByb2Nlc3NvciB0eXBlICovCiAKLSN1bmRlZiBERUJVRwotCiAjZGVmaW5lIENPTkZJR19NQ0ZVQVJUCiAjZGVmaW5lIENGR19VQVJUX1BPUlQJCSgwKQogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODMxNUVSREIuaAppbmRleCBhZDIzMDVjLi5mZjcxMDFmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODMxNUVSREIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODMxNUVSREIuaApAQCAtMjUsOCArMjUsNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmIERFQlVHCi0KIC8qCiAgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODMyM0VSREIuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzIzRVJEQi5oCmluZGV4IDI5NWU3ODUuLmJmNWVmNGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzIzRVJEQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzIzRVJEQi5oCkBAIC05LDggKzksNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmIERFQlVHCi0KIC8qCiAgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODMyWEVNRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzJYRU1EUy5oCmluZGV4IDZjMGU2OGEuLjcwMmIwNzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzJYRU1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzJYRU1EUy5oCkBAIC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0jdW5kZWYgREVCVUcKLQogLyoKICAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzQ5RU1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmgKaW5kZXggMDdmMmYzMC4uMzMxZjRjOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmgKQEAgLTI5LDggKzI5LDYgQEAKICNpZm5kZWYgX19DT05GSUdfSAogI2RlZmluZSBfX0NPTkZJR19ICiAKLSN1bmRlZiBERUJVRwotCiAvKgogICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKICAqLwpAQCAtMzU2LDYgKzM1NCw3IEBACiAjZGVmaW5lIENGR19JMkMyX09GRlNFVAkJMHgzMTAwCiAKIC8qIFNQSSAqLworI2RlZmluZSBDT05GSUdfTVBDOFhYWF9TUEkKICNkZWZpbmUgQ09ORklHX0hBUkRfU1BJCQkJLyogU1BJIHdpdGggaGFyZHdhcmUgc3VwcG9ydCAqLwogI3VuZGVmIENPTkZJR19TT0ZUX1NQSQkJCS8qIFNQSSBiaXQtYmFuZ2VkICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzYwRU1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNjBFTURTLmgKaW5kZXggMTY4Y2EyYS4uZWZmOWZiYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzNjBFTURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNjBFTURTLmgKQEAgLTIyLDggKzIyLDYgQEAKICNpZm5kZWYgX19DT05GSUdfSAogI2RlZmluZSBfX0NPTkZJR19ICiAKLSN1bmRlZiBERUJVRwotCiAvKgogICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzNjBFUkRLLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaAppbmRleCA4M2E0YjFlLi4yN2IwMzdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaApAQCAtMTcsOCArMTcsNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmIERFQlVHCi0KIC8qCiAgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM3WEVNRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oCmluZGV4IDJiODRlOWMuLjYxZGUwODQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oCkBAIC0yMSw4ICsyMSw2IEBACiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0jdW5kZWYgREVCVUcKLQogLyoKICAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwRVZBTC5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKaW5kZXggYmY2NGYyNy4uMTc0MjE1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKQEAgLTI0MCw4ICsyNDAsNiBAQAogI2RlZmluZSBJTlRFTF9MWFQ5NzFfUEhZCTEKICNlbmRpZgogCi0jdW5kZWYgREVCVUcKLQogLyogRW52aXJvbm1lbnQgKi8KICNpZm5kZWYgQ0ZHX1JBTUJPT1QKICNpZiBkZWZpbmVkKENPTkZJR19SQU1fQVNfRkxBU0gpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVZCTFVFLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVZCTFVFLmgKaW5kZXggMGRlZmFmZS4uZDc5OWY1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01WQkxVRS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NVkJMVUUuaApAQCAtNTMsOCArNTMsNiBAQAogI2RlZmluZSBFUlJfTEVEKGNvZGUpCiAjZW5kaWYKIAotI3VuZGVmIERFQlVHCi0KICNkZWZpbmUgQ09ORklHX01QQzgyNFgJCTEKICNkZWZpbmUgQ09ORklHX01QQzgyNDUJCTEKICNkZWZpbmUgQ09ORklHX01WQkxVRQkJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1FTODIzLmggYi9pbmNsdWRlL2NvbmZpZ3MvUVM4MjMuaAppbmRleCAzNjU3ZmVhLi4zZGQ4NGU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUVM4MjMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUVM4MjMuaApAQCAtMzgsNyArMzgsNiBAQAogI3VuZGVmIENGR19ERVZJQ0VfTlVMTERFVgkJLyogbnVsbCBkZXZpY2UgKi8KICN1bmRlZiBDT05GSUdfU0lMRU5UX0NPTlNPTEUJCS8qIHNpbGVudCBjb25zb2xlICovCiAjdW5kZWYgQ0ZHX0NPTlNPTEVfSU5GT19RVUlFVAkJLyogc2lsZW50IGNvbnNvbGUgPyAqLwotI3VuZGVmIERFQlVHCQkJCS8qIGRlYnVnIG91dHB1dCBjb2RlICovCiAjdW5kZWYgREVCVUdfRkxBU0gJCQkvKiBkZWJ1ZyBmbGFzaCBjb2RlICovCiAjdW5kZWYgRkxBU0hfREVCVUcJCQkvKiBkZWJ1ZyBmYXNoIGNvZGUgKi8KICN1bmRlZiBERUJVR19FTlYJCQkvKiBkZWJ1ZyBlbnZpcm9ubWVudCBjb2RlICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUVM4NTAuaCBiL2luY2x1ZGUvY29uZmlncy9RUzg1MC5oCmluZGV4IDNkYjUzOWYuLjdkZDZlY2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9RUzg1MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9RUzg1MC5oCkBAIC0zOCw3ICszOCw2IEBACiAjdW5kZWYgQ0ZHX0RFVklDRV9OVUxMREVWCQkvKiBudWxsIGRldmljZSAqLwogI3VuZGVmIENPTkZJR19TSUxFTlRfQ09OU09MRQkJLyogc2lsZW50IGNvbnNvbGUgKi8KICN1bmRlZiBDRkdfQ09OU09MRV9JTkZPX1FVSUVUCQkvKiBzaWxlbnQgY29uc29sZSA/ICovCi0jdW5kZWYgREVCVUcJCQkJLyogZGVidWcgb3V0cHV0IGNvZGUgKi8KICN1bmRlZiBERUJVR19GTEFTSAkJCS8qIGRlYnVnIGZsYXNoIGNvZGUgKi8KICN1bmRlZiBGTEFTSF9ERUJVRwkJCS8qIGRlYnVnIGZhc2ggY29kZSAqLwogI3VuZGVmIERFQlVHX0VOVgkJCS8qIGRlYnVnIGVudmlyb25tZW50IGNvZGUgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9RUzg2MFQuaCBiL2luY2x1ZGUvY29uZmlncy9RUzg2MFQuaAppbmRleCBiMzQ0MmRlLi42MmNmMmE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUVM4NjBULmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1FTODYwVC5oCkBAIC0zOCw3ICszOCw2IEBACiAjdW5kZWYgQ0ZHX0RFVklDRV9OVUxMREVWCQkvKiBudWxsIGRldmljZSAqLwogI3VuZGVmIENPTkZJR19TSUxFTlRfQ09OU09MRQkJLyogc2lsZW50IGNvbnNvbGUgKi8KICN1bmRlZiBDRkdfQ09OU09MRV9JTkZPX1FVSUVUCQkvKiBzaWxlbnQgY29uc29sZSA/ICovCi0jdW5kZWYgREVCVUcJCQkJLyogZGVidWcgb3V0cHV0IGNvZGUgKi8KICN1bmRlZiBERUJVR19GTEFTSAkJCS8qIGRlYnVnIGZsYXNoIGNvZGUgKi8KICN1bmRlZiBGTEFTSF9ERUJVRwkJCS8qIGRlYnVnIGZhc2ggY29kZSAqLwogI3VuZGVmIERFQlVHX0VOVgkJCS8qIGRlYnVnIGVudmlyb25tZW50IGNvZGUgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SYXR0bGVyLmggYi9pbmNsdWRlL2NvbmZpZ3MvUmF0dGxlci5oCmluZGV4IGQ3NjUyZmEuLjQyOGMwYzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9SYXR0bGVyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JhdHRsZXIuaApAQCAtMzcsOCArMzcsNiBAQAogCiAjZGVmaW5lIENPTkZJR19SQVRUTEVSCQkJLyogQW5hbG9ndWUmTWljcm8gUmF0dGxlciBib2FyZCAqLwogCi0jdW5kZWYgREVCVUcKLQogLyogQWxsb3cgc2VyaWFsIG51bWJlciAoc2VyaWFsIykgYW5kIE1BQyBhZGRyZXNzIChldGhhZGRyKSB0byBiZSBvdmVyd3JpdHRlbiAqLwogI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODM0eC5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTgzNHguaAppbmRleCA4ZWYzZjA5Li4wMjRlY2ZhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODM0eC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04MzR4LmgKQEAgLTE4MSw3ICsxODEsNyBAQAogI2RlZmluZSBDRkdfSU5JVF9TUF9PRkZTRVQJQ0ZHX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpIC8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KLSNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSgxMjggKiAxMDI0KSAvKiBSZXNlcnZlZCBmb3IgbWFsbG9jICovCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoMjU2ICogMTAyNCkgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIG1hbGxvYyAqLwogCiAvKgogICogU2VyaWFsIFBvcnQKQEAgLTMwMiw3ICszMDIsNyBAQAogI2lmbmRlZiBDRkdfUkFNQk9PVAogCSNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSAkxCiAJI2RlZmluZSBDRkdfRU5WX0FERFIJCShDRkdfTU9OSVRPUl9CQVNFICsgMHg0MDAwMCkKLQkjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4MjAwMDAJLyogMjU2SyhvbmUgc2VjdG9yKSBmb3IgZW52ICovCisJI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDQwMDAwCS8qIDI1Nksob25lIHNlY3RvcikgZm9yIGVudiAqLwogCSNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDIwMDAKICNlbHNlCiAJI2RlZmluZSBDRkdfTk9fRkxBU0gJCTEJLyogRmxhc2ggaXMgbm90IHVzYWJsZSBub3cgKi8KQEAgLTMzNSw2ICszMzUsNyBAQAogI2RlZmluZSBDT05GSUdfQ01EX0pGRlMyCiAjZGVmaW5lIENPTkZJR19DTURfTUlJCiAjZGVmaW5lIENPTkZJR19DTURfUElORworI2RlZmluZSBDT05GSUdfQ01EX0RIQ1AKIAogI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKICAgICAjZGVmaW5lIENPTkZJR19DTURfUENJCkBAIC00OTEsMjQgKzQ5Miw3IEBACiAgKiBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uCiAgKi8KIAotI2lmIGRlZmluZWQoQ09ORklHX1RTRUNfRU5FVCkKLSNkZWZpbmUgQ09ORklHX0hBU19FVEgwCi0jZGVmaW5lIENPTkZJR19FVEhBRERSCQlEMjpEQTo1RTo0NDpCQzoyOQotI2RlZmluZSBDT05GSUdfSEFTX0VUSDEKLSNkZWZpbmUgQ09ORklHX0VUSDFBRERSCQkxRTpGMzo0MDoyMTo5Mjo1MwotI2VuZGlmCi0KLSNkZWZpbmUgQ09ORklHX0lQQUREUgkJMTkyLjE2OC4yMDUuMQotCi0jZGVmaW5lIENPTkZJR19IT1NUTkFNRQkJdHFtODM0OQotI2RlZmluZSBDT05GSUdfUk9PVFBBVEgJCS9vcHQvZWxkay9wcGNfNnh4Ci0jZGVmaW5lIENPTkZJR19CT09URklMRQkJL3RmdHBib290L3RxbTgzeHgvdUltYWdlCi0KLSNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkxOTIuMTY4LjEuMQotI2RlZmluZSBDT05GSUdfR0FURVdBWUlQCTE5Mi4xNjguMS4xCi0jZGVmaW5lIENPTkZJR19ORVRNQVNLCQkyNTUuMjU1LjI1NS4wCi0KLSNkZWZpbmUgQ09ORklHX0xPQURBRERSCQkyMDAwMDAJLyogZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGZ0cCBhbmQgYm9vdG0gKi8KKyNkZWZpbmUgQ09ORklHX0xPQURBRERSCQk0MDAwMDAJLyogZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGZ0cCBhbmQgYm9vdG0gKi8KIAogI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTYJLyogLTEgZGlzYWJsZXMgYXV0by1ib290ICovCiAjdW5kZWYgIENPTkZJR19CT09UQVJHUwkJCS8qIHRoZSBib290IGNvbW1hbmQgd2lsbCBzZXQgYm9vdGFyZ3MgKi8KQEAgLTUyMyw3ICs1MDcsNyBAQAogCiAjZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKIAkibmV0ZGV2PWV0aDBcMCIJCQkJCQkJXAotCSJob3N0bmFtZT10cW04M3h4XDAiCQkJCQkJXAorCSJob3N0bmFtZT10cW04MzR4XDAiCQkJCQkJXAogCSJuZnNhcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3ICIJCQlcCiAJCSJuZnNyb290PSR7c2VydmVyaXB9OiR7cm9vdHBhdGh9XDAiCQkJXAogCSJyYW1hcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvcmFtIHJ3XDAiCQkJXApAQCAtNTM1LDEzICs1MTksMTMgQEAKIAkJImJvb3RtICR7a2VybmVsX2FkZHJ9XDAiCQkJCVwKIAkiZmxhc2hfc2VsZj1ydW4gcmFtYXJncyBhZGRpcCBhZGR0dHk7IgkJCQlcCiAJCSJib290bSAke2tlcm5lbF9hZGRyfSAke3JhbWRpc2tfYWRkcn1cMCIJCVwKLQkibmV0X25mcz10ZnRwIDIwMDAwMCAke2Jvb3RmaWxlfTtydW4gbmZzYXJncyBhZGRpcCBhZGR0dHk7IiAgICAgXAorCSJuZXRfbmZzPXRmdHAgNDAwMDAwICR7Ym9vdGZpbGV9O3J1biBuZnNhcmdzIGFkZGlwIGFkZHR0eTsiICAgICBcCiAJCSJib290bVwwIgkJCQkJCVwKIAkicm9vdHBhdGg9L29wdC9lbGRrL3BwY182eHhcMCIJCQkJCVwKLQkiYm9vdGZpbGU9L3RmdHBib290L3RxbTgzeHgvdUltYWdlXDAiCQkJCVwKKwkiYm9vdGZpbGU9L3RmdHBib290L3RxbTgzNHgvdUltYWdlXDAiCQkJCVwKIAkia2VybmVsX2FkZHI9ODAwNjAwMDBcMCIJCQkJCVwKIAkicmFtZGlza19hZGRyPTgwMTYwMDAwXDAiCQkJCQlcCi0JImxvYWQ9dGZ0cCAxMDAwMDAgL3RmdHBib290L3RxbTgzeHgvdS1ib290LmJpblwwIgkJXAorCSJsb2FkPXRmdHAgMTAwMDAwIC90ZnRwYm9vdC90cW04MzR4L3UtYm9vdC5iaW5cMCIJCVwKIAkidXBkYXRlPXByb3RlY3Qgb2ZmIDgwMDAwMDAwIDgwMDNmZmZmOyAiCQkJXAogCQkiZXJhIDgwMDAwMDAwIDgwMDNmZmZmOyBjcC5iIDEwMDAwMCA4MDAwMDAwMCA0MDAwMFwwIglcCiAJInVwZD1ydW4gbG9hZDtydW4gdXBkYXRlXDAiCQkJCQlcCkBAIC01NTcsNyArNTQxLDcgQEAKICNkZWZpbmUgTVRESURTX0RFRkFVTFQJCSJub3IwPVRRTTgzNHgtMCIKIAogLyogZGVmYXVsdCBtdGQgcGFydGl0aW9uIHRhYmxlICovCi0jZGVmaW5lIE1URFBBUlRTX0RFRkFVTFQJIm10ZHBhcnRzPVRRTTgzNHgtMDoyNTZrKHUtYm9vdCksMTI4ayhlbnYpLCJcCisjZGVmaW5lIE1URFBBUlRTX0RFRkFVTFQJIm10ZHBhcnRzPVRRTTgzNHgtMDoyNTZrKHUtYm9vdCksMjU2ayhlbnYpLCJcCiAJCQkJCQkiMW0oa2VybmVsKSwybShpbml0cmQpLCJcCiAJCQkJCQkiLSh1c2VyKTsiXAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWRzNTEyMS5oIGIvaW5jbHVkZS9jb25maWdzL2FkczUxMjEuaAppbmRleCBjZTQ1OGFlNS4uMDljMzE0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FkczUxMjEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYWRzNTEyMS5oCkBAIC0yNyw5ICsyNyw2IEBACiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0jZGVmaW5lIERFQlVHCi0jdW5kZWYgREVCVUcKLQogLyoKICAqIE1lbW9yeSBtYXAgZm9yIHRoZSBBRFM1MTIxIGJvYXJkOgogICoKQEAgLTEwOSwyNSArMTA2LDIyIEBACiAgKglbMDQ6MDBdIERSQU0gdFJQQQogICovCiAKLSNkZWZpbmUgQ0ZHX01ERFJDX1NZU19DRkcJMHhGODYwNDIwMAotI2RlZmluZSBDRkdfTUREUkNfU1lTX0NGR19SVU4JMHhFODYwNDIwMAotI2RlZmluZSBDRkdfTUREUkNfU1lTX0NGR19FTgkweDMwMDAwMDAwCi0jZGVmaW5lIENGR19NRERSQ19USU1FX0NGRzAJMHgwMDAwMjgxRQotI2RlZmluZSBDRkdfTUREUkNfVElNRV9DRkcwX1JVTgkweDAxRjQyODFFCisjZGVmaW5lIENGR19NRERSQ19TWVNfQ0ZHCTB4Rjg2MDRBMDAKKyNkZWZpbmUgQ0ZHX01ERFJDX1NZU19DRkdfUlVOCTB4RTg2MDRBMDAKKyNkZWZpbmUgQ0ZHX01ERFJDX1NZU19DRkdfRU4JMHhGMDAwMDAwMAorI2RlZmluZSBDRkdfTUREUkNfVElNRV9DRkcwCTB4MDAwMDNEMkUKKyNkZWZpbmUgQ0ZHX01ERFJDX1RJTUVfQ0ZHMF9SVU4JMHgwNjE4M0QyRQogI2RlZmluZSBDRkdfTUREUkNfVElNRV9DRkcxCTB4NTRFQzExNjgKICNkZWZpbmUgQ0ZHX01ERFJDX1RJTUVfQ0ZHMgkweDM1MjEwODY0CiAKICNkZWZpbmUgQ0ZHX01JQ1JPTl9OT1AJCTB4MDEzODAwMDAKICNkZWZpbmUgQ0ZHX01JQ1JPTl9QQ0hHX0FMTAkweDAxMTAwNDAwCi0jZGVmaW5lIENGR19NSUNST05fTVIJCTB4MDEwMDAwMjIKICNkZWZpbmUgQ0ZHX01JQ1JPTl9FTTIJCTB4MDEwMjAwMDAKICNkZWZpbmUgQ0ZHX01JQ1JPTl9FTTMJCTB4MDEwMzAwMDAKICNkZWZpbmUgQ0ZHX01JQ1JPTl9FTl9ETEwJMHgwMTAxMDAwMAotI2RlZmluZSBDRkdfTUlDUk9OX1JTVF9ETEwJMHgwMTAwMDkzMgogI2RlZmluZSBDRkdfTUlDUk9OX1JGU0gJCTB4MDEwODAwMDAKLSNkZWZpbmUgQ0ZHX01JQ1JPTl9JTklUX0RFVl9PUAkweDAxMDAwODMyCisjZGVmaW5lIENGR19NSUNST05fSU5JVF9ERVZfT1AJMHgwMTAwMDQzMgogI2RlZmluZSBDRkdfTUlDUk9OX09DRF9ERUZBVUxUCTB4MDEwMTA3ODAKLSNkZWZpbmUgQ0ZHX01JQ1JPTl9PQ0RfRVhJVAkweDAxMDEwNDAwCiAKIC8qIEREUiBQcmlvcml0eSBNYW5hZ2VyIENvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgQ0ZHX01ERFJDR1JQX1BNX0NGRzEJMHgwMDA3NzdBQQpAQCAtNDE1LDggKzQwOSw5IEBACiAjZGVmaW5lIENPTkZJR19PRl9CT0FSRF9TRVRVUAkxCiAKICNkZWZpbmUgT0ZfQ1BVCQkJIlBvd2VyUEMsNTEyMUAwIgotI2RlZmluZSBPRl9TT0MJCQkic29jNTEyMUA4MDAwMDAwMCIKKyNkZWZpbmUgT0ZfU09DCQkJInNvY0A4MDAwMDAwMCIKKyNkZWZpbmUgT0ZfU09DX09MRAkJInNvYzUxMjFAODAwMDAwMDAiCiAjZGVmaW5lIE9GX1RCQ0xLCQkoYmQtPmJpX2J1c2ZyZXEgLyA0KQotI2RlZmluZSBPRl9TVERPVVRfUEFUSAkJIi9zb2M1MTIxQDgwMDAwMDAwL3NlcmlhbEAxMTMwMCIKKyNkZWZpbmUgT0ZfU1RET1VUX1BBVEgJCSIvc29jQDgwMDAwMDAwL3NlcmlhbEAxMTMwMCIKIAogI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hc3NhYmV0LmggYi9pbmNsdWRlL2NvbmZpZ3MvYXNzYWJldC5oCmluZGV4IDIyNmFkNTQuLmQxMGYwOTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hc3NhYmV0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2Fzc2FiZXQuaApAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKIAotI3VuZGVmIERFQlVHCi0KIC8qCiAgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogICogKGVhc3kgdG8gY2hhbmdlKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2VwODI0OC5oIGIvaW5jbHVkZS9jb25maWdzL2VwODI0OC5oCmluZGV4IDg1YWQ3MGEuLmNlYmU4NDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9lcDgyNDguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZXA4MjQ4LmgKQEAgLTMxLDggKzMxLDYgQEAKIAogI2RlZmluZSBDT05GSUdfRVA4MjQ4CQkJLyogRW1iZWRkZWQgUGxhbmV0IEVQODI0OCBib2FyZCAqLwogCi0jdW5kZWYgREVCVUcKLQogI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GIDEJLyogQ2FsbCBib2FyZF9lYXJseV9pbml0X2YJKi8KIAogLyogQWxsb3cgc2VyaWFsIG51bWJlciAoc2VyaWFsIykgYW5kIE1BQyBhZGRyZXNzIChldGhhZGRyKSB0byBiZSBvdmVyd3JpdHRlbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2VwODJ4eG0uaCBiL2luY2x1ZGUvY29uZmlncy9lcDgyeHhtLmgKaW5kZXggNGZlYmQzMi4uOGU1ZDZlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2VwODJ4eG0uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZXA4Mnh4bS5oCkBAIC0zMSw4ICszMSw2IEBACiAjZGVmaW5lIENPTkZJR19FUDgyWFhNCS8qIEVtYmVkZGVkIFBsYW5ldCBFUDgyeHhNIEggMS4wIGJvYXJkICovCiAJCQkvKiAyNTZNQiBTRFJBTSAvIDY0TUIgRkxBU0ggKi8KIAotI3VuZGVmIERFQlVHCi0KICNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRiAxCS8qIENhbGwgYm9hcmRfZWFybHlfaW5pdF9mICovCiAKIC8qIEFsbG93IHNlcmlhbCBudW1iZXIgKHNlcmlhbCMpIGFuZCBNQUMgYWRkcmVzcyAoZXRoYWRkcikgdG8gYmUgb3ZlcndyaXR0ZW4gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9nY3BsdXMuaCBiL2luY2x1ZGUvY29uZmlncy9nY3BsdXMuaAppbmRleCBlMTFjZTRjLi4zYjFiNGFiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZ2NwbHVzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2djcGx1cy5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0jdW5kZWYJIERFQlVHCi0KIC8qCiAgKiBUaGUgQURTIEdDUGx1cyBMaW51eCBib290IFJPTSBsb2FkcyBVLUJvb3QgaW50byBSQU0gYXQgMHhjMDIwMDAwMC4KICAqIFdlIGRvbid0IGFjdHVhbGx5IGluaXQgUkFNIGluIHRoaXMgY2FzZSBzaW5jZSB3ZSdyZSB1c2luZyBVLUJvb3QgYXMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ndzgyNjAuaCBiL2luY2x1ZGUvY29uZmlncy9ndzgyNjAuaAppbmRleCBmZjU3MjQwLi43YzJjMjI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZ3c4MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2d3ODI2MC5oCkBAIC01MSw3ICs1MSw2IEBACiAjZGVmaW5lIF9fQ09ORklHX0gKIAogLyogRW5hYmxlIGRlYnVnIHByaW50cyAqLwotI3VuZGVmIERFQlVHICAgICAgICAgICAgICAgICAgLyogR2VuZXJhbCBkZWJ1ZyAqLwogI3VuZGVmIERFQlVHX0JPT1RQX0VYVCAgICAgICAgLyogRGVidWcgcmVjZWl2ZWQgdmVuZG9yIGZpZWxkcyAqLwogCiAvKiBXaGF0IGlzIHRoZSBvc2NpbGxhdG9yJ3MgKFVYMikgZnJlcXVlbmN5IGluIEh6PyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21nY29nZS5oIGIvaW5jbHVkZS9jb25maWdzL21nY29nZS5oCmluZGV4IDNkZTI0NjYuLmY0YTFjYzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tZ2NvZ2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWdjb2dlLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogI2RlZmluZSBDT05GSUdfQ1BNMgkJMQkvKiBIYXMgYSBDUE0yICovCiAKLSN1bmRlZiBERUJVRwotCiAvKgogICogU2VsZWN0IHNlcmlhbCBjb25zb2xlIGNvbmZpZ3VyYXRpb24KICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbXBjNzQ0OGhwYzIuaCBiL2luY2x1ZGUvY29uZmlncy9tcGM3NDQ4aHBjMi5oCmluZGV4IGJkMzEwN2EuLmM3MjE2YzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tcGM3NDQ4aHBjMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9tcGM3NDQ4aHBjMi5oCkBAIC0zMyw4ICszMyw2IEBACiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0jdW5kZWYgREVCVUcKLQogLyogQm9hcmQgQ29uZmlndXJhdGlvbiBEZWZpbml0aW9ucyAqLwogLyogTVBDNzQ0OEhQQzIgKEhpZ2gtUGVyZm9ybWFuY2UgQ29tcHV0aW5nIElJKSAoVGFpZ2EpIGJvYXJkICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tczc3MjBzZS5oIGIvaW5jbHVkZS9jb25maWdzL21zNzcyMHNlLmgKaW5kZXggNzAzNTAwMi4uOWM5NGM0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21zNzcyMHNlLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21zNzcyMHNlLmgKQEAgLTI1LDcgKzI1LDYgQEAKICNpZm5kZWYgX19NUzc3MjBTRV9ICiAjZGVmaW5lIF9fTVM3NzIwU0VfSAogCi0jdW5kZWYgREVCVUcKICNkZWZpbmUgQ09ORklHX1NICQkxCiAjZGVmaW5lIENPTkZJR19TSDMJCTEKICNkZWZpbmUgQ09ORklHX0NQVV9TSDc3MjAJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21zNzcyMnNlLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIyc2UuaAppbmRleCBhZTBkMDE4Li44NTM4MDM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIyc2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIyc2UuaApAQCAtMjUsNyArMjUsNiBAQAogI2lmbmRlZiBfX01TNzcyMlNFX0gKICNkZWZpbmUgX19NUzc3MjJTRV9ICiAKLSN1bmRlZiBERUJVRwogI2RlZmluZSBDT05GSUdfU0gJCTEKICNkZWZpbmUgQ09ORklHX1NINAkJMQogI2RlZmluZSBDT05GSUdfQ1BVX1NINzcyMgkxCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbXM3NzUwc2UuaCBiL2luY2x1ZGUvY29uZmlncy9tczc3NTBzZS5oCmluZGV4IDM2NjgxNTYuLmEyNTM2NGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tczc3NTBzZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9tczc3NTBzZS5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaWZuZGVmIF9fTVM3NzUwU0VfSAogI2RlZmluZSBfX01TNzc1MFNFX0gKIAotI3VuZGVmIERFQlVHCiAjZGVmaW5lIENPTkZJR19TSAkJMQogI2RlZmluZSBDT05GSUdfU0g0CQkxCiAjZGVmaW5lIENPTkZJR19DUFVfU0g3NzUwCTEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tdW5pY2VzLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXVuaWNlcy5oCmluZGV4IDIzNzJiNTcuLjM4YjI3YmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tdW5pY2VzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL211bmljZXMuaApAQCAtNDgsNyArNDgsNyBAQAogI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKICNkZWZpbmUgQ09ORklHX0NNRF9SRUdJTkZPCiAKLSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQogIyAgZGVmaW5lIENGR19DQUNIRUxJTkVfU0hJRlQJNQkvKiBsb2cgYmFzZSAyIG9mIHRoZSBhYm92ZSB2YWx1ZSAqLwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9wcG1jN3h4LmggYi9pbmNsdWRlL2NvbmZpZ3MvcHBtYzd4eC5oCmluZGV4IGZlN2RlN2IuLjFkMmQzOGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wcG1jN3h4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3BwbWM3eHguaApAQCAtMzAsNyArMzAsNiBAQAogICogZG9fYmRpbmZvCQktIFJlcXVpcmVkIHRvIGJ1aWxkIHdpdGggZGVidWcKICAqLwogCi0jdW5kZWYJREVCVUcKICNpZmRlZglERUJVRwogI2RlZmluZQlHVFJFR1JFQUQoeCkJMHhGRkZGRkZGRgogI2RlZmluZQlkb19iZGluZm8oYSxiLGMsZCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9xZW11LW1pcHMuaCBiL2luY2x1ZGUvY29uZmlncy9xZW11LW1pcHMuaAppbmRleCAzM2M4MjgzLi5lMTY0MDE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcWVtdS1taXBzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3FlbXUtbWlwcy5oCkBAIC0zMiw4ICszMiw2IEBACiAjZGVmaW5lIENPTkZJR19RRU1VX01JUFMgICAgICAgIDEKICNkZWZpbmUgQ09ORklHX01JU0NfSU5JVF9SCiAKLSN1bmRlZiBERUJVRwotCiAvKklQIGFkZHJlc3MgaXMgZGVmYXVsdCB1c2VkIGJ5IFFlbXUqLwogI2RlZmluZSBDT05GSUdfSVBBRERSCQkxMC4wLjIuMTUgICAgCSAgICAgLyogT3VyIElQIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkxMC4wLjIuMgkgICAgIC8qIFNlcnZlciBJUCBhZGRyZXNzKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zYWNzbmcuaCBiL2luY2x1ZGUvY29uZmlncy9zYWNzbmcuaAppbmRleCBjNDc0YWNkLi5lYzdkMzRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2Fjc25nLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NhY3NuZy5oCkBAIC0zNSw3ICszNSw2IEBACiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0jdW5kZWYgREVCVUcJCSAgICAgIC8qIEdlbmVyYWwgZGVidWcgKi8KICN1bmRlZiBERUJVR19CT09UUF9FWFQJICAgICAgLyogRGVidWcgcmVjZWl2ZWQgdmVuZG9yIGZpZWxkcyAqLwogCiAjdW5kZWYgQ09ORklHX0xPR0JVRkZFUiAgICAgICAvKiBFeHRlcm5hbCBsb2didWZmZXIgc3VwcG9ydCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzgyNjAuaCBiL2luY2x1ZGUvY29uZmlncy9zYmM4MjYwLmgKaW5kZXggYjFkNDFhNi4uNjA2MzM5OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NiYzgyNjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODI2MC5oCkBAIC0zNiw3ICszNiw2IEBACiAjZGVmaW5lIF9fQ09ORklHX0gKIAogLyogRW5hYmxlIGRlYnVnIHByaW50cyAqLwotI3VuZGVmIERFQlVHCQkgICAgICAvKiBHZW5lcmFsIGRlYnVnICovCiAjdW5kZWYgREVCVUdfQk9PVFBfRVhUCSAgICAgIC8qIERlYnVnIHJlY2VpdmVkIHZlbmRvciBmaWVsZHMgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODM0OS5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzgzNDkuaAppbmRleCA0Y2M0ZmYxLi4yNDk4YjNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODM0OS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYmM4MzQ5LmgKQEAgLTMxLDggKzMxLDYgQEAKICNpZm5kZWYgX19DT05GSUdfSAogI2RlZmluZSBfX0NPTkZJR19ICiAKLSN1bmRlZiBERUJVRwotCiAvKgogICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3RyaXplcHNpdi5oIGIvaW5jbHVkZS9jb25maWdzL3RyaXplcHNpdi5oCmluZGV4IDg0OTk4ZDQuLjdhMTVkOTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy90cml6ZXBzaXYuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdHJpemVwc2l2LmgKQEAgLTE0MCw3ICsxNDAsNyBAQAogI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcJIDEJLyogZW5hYmxlIHBhc3Npbmcgb2YgQVRBR3MJKi8KIC8qICNkZWZpbmUgQ09ORklHX0lOSVRSRF9UQUcJIDEgKi8KIAotI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCisjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCiAjZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTIzMDQwMAkJLyogc3BlZWQgdG8gcnVuIGtnZGIgc2VyaWFsIHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTIJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvdm9pY2VibHVlLmggYi9pbmNsdWRlL2NvbmZpZ3Mvdm9pY2VibHVlLmgKaW5kZXggN2NhYjMxZC4uOGM4MjdhZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3ZvaWNlYmx1ZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy92b2ljZWJsdWUuaApAQCAtMjYsMTAgKzI2LDYgQEAKIAogI2luY2x1ZGUgPGNvbmZpZ3Mvb21hcDE1MTAuaD4KIAotLyoKLSAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCi0gKiAoZWFzeSB0byBjaGFuZ2UpCi0gKi8KICNkZWZpbmUgQ09ORklHX0FSTTkyNVQJMQkJLyogVGhpcyBpcyBhbiBhcm05MjV0IENQVSAqLwogI2RlZmluZSBDT05GSUdfT01BUAkxCQkvKiBpbiBhIFRJIE9NQVAgY29yZSAqLwogI2RlZmluZSBDT05GSUdfT01BUDE1MTAgMQkJLyogd2hpY2ggaXMgaW4gYSA1OTEwICovCkBAIC01NCwxMCArNTAsOSBAQAogICovCiAjZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTEJCS8qIHdlIGhhdmUgMSBiYW5rIG9mIERSQU0gKi8KICNkZWZpbmUgUEhZU19TRFJBTV8xCQkweDEwMDAwMDAwCS8qIFNEUkFNIEJhbmsgIzEgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8xX1NJWkUJU1pfNjRNCisjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCSg2NCAqIDEwMjQgKiAxMDI0KQogCiAjZGVmaW5lIFBIWVNfRkxBU0hfMQkJMHgwMDAwMDAwMAkvKiBGbGFzaCBCYW5rICMxICovCi0jZGVmaW5lIFBIWVNfRkxBU0hfMgkJMHgwYzAwMDAwMAogCiAjZGVmaW5lIENGR19MT0FEX0FERFIJCVBIWVNfU0RSQU1fMSArIDB4NDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAKQEAgLTY3LDUwICs2MiwzNCBAQAogI2RlZmluZSBDRkdfRkxBU0hfQ0ZJCQkJLyogRmxhc2ggaXMgQ0ZJIGNvbmZvcm1hbnQgKi8KICNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIJCS8qIFVzZSB0aGUgY29tbW9uIGRyaXZlciAqLwogI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTEKLSNpZmRlZiBWT0lDRUJMVUVfU01BTExfRkxBU0gKLSNkZWZpbmUgQ0ZHX0ZMQVNIX0JBTktTX0xJU1QJeyBQSFlTX0ZMQVNIXzIgfQotI2Vsc2UKLSNkZWZpbmUgQ0ZHX0ZMQVNIX0JBTktTX0xJU1QJeyBQSFlTX0ZMQVNIXzEgfQotI2VuZGlmCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQlQSFlTX0ZMQVNIXzEKIAogLyogRklYTUU6IERvZXMgbm90IHdvcmsgb24gQU1EIGZsYXNoICovCiAvKiAjZGVmaW5lIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFIDEgKi8JLyogdXNlIGJ1ZmZlcmVkIHdyaXRlcyAoMjB4IGZhc3RlcikgKi8KICNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTUxMgkvKiBtYXggIyBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwICovCiAKICNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQlQSFlTX0ZMQVNIXzEKLSNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQlTWl8xMjhLCisjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCiAKIC8qCiAgKiBFbnZpcm9ubWVudCBzZXR0aW5ncwogICovCi0jaWZkZWYgVk9JQ0VCTFVFX1NNQUxMX0ZMQVNICi0jZGVmaW5lIENGR19FTlZfSVNfTk9XSEVSRQotI2RlZmluZSBDRkdfRU5WX1NJWkUJCVNaXzFLCi0jZWxzZQogI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICiAjZGVmaW5lIENGR19FTlZfQUREUgkJKFBIWVNfRkxBU0hfMSArIENGR19NT05JVE9SX0xFTikKLSNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQlTWl84SwotI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQlTWl82NEsKKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkoOCAqIDEwMjQpCisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCSg2NCAqIDEwMjQpCiAjZGVmaW5lIENGR19FTlZfQUREUl9SRURVTkQJKENGR19FTlZfQUREUiArIENGR19FTlZfU0VDVF9TSVpFKQogI2RlZmluZSBDRkdfRU5WX1NJWkVfUkVEVU5ECUNGR19FTlZfU0laRQogCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCiAKLSNlbmRpZgotCiAvKgogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sIGFuZCBzdGFjawogICovCiAjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNpZmRlZiBWT0lDRUJMVUVfU01BTExfRkxBU0gKLSNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCShTWl82NEsgLSBDRkdfR0JMX0RBVEFfU0laRSkKLSNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQlTWl84SwotI2RlZmluZSBQSFlTX1NEUkFNXzFfUkVTRVJWRUQJMAotI2Vsc2UKLSNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCVNaXzRNCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJU1pfMU0KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSg0ICogMTAyNCAqIDEwMjQpCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDEgKiAxMDI0ICogMTAyNCkKICNkZWZpbmUgUEhZU19TRFJBTV8xX1JFU0VSVkVECShDRkdfTU9OSVRPUl9MRU4gKyBDRkdfTUFMTE9DX0xFTiArIENPTkZJR19TVEFDS1NJWkUpCi0jZW5kaWYKIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKQEAgLTExOCw2ICs5NywxNCBAQAogI2RlZmluZSBDT05GSUdfRFJJVkVSX1NNQzkxMTExCiAjZGVmaW5lIENPTkZJR19TTUM5MTExMV9CQVNFCTB4MDgwMDAzMDAKIAorI2RlZmluZSBDT05GSUdfSEFSRF9JMkMKKyNkZWZpbmUgQ0ZHX0kyQ19TUEVFRAkJMTAwMDAwCisjZGVmaW5lIENGR19JMkNfU0xBVkUJCTEKKyNkZWZpbmUgQ09ORklHX0RSSVZFUl9PTUFQMTUxMF9JMkMKKworI2RlZmluZSBDT05GSUdfUlRDX0RTMTMwNworI2RlZmluZSBDRkdfSTJDX1JUQ19BRERSCTB4NjgKKwogLyoKICAqIE5TMTY1NTAgQ29uZmlndXJhdGlvbgogICovCkBAIC0xMzgsMjEgKzEyNSwxOCBAQAogI2luY2x1ZGUgPGNvbmZpZ19jbWRfZGVmYXVsdC5oPgogCiAjZGVmaW5lIENPTkZJR19DTURfQkRJCi0jZGVmaW5lIENPTkZJR19DTURfTE9BREIKLSNkZWZpbmUgQ09ORklHX0NNRF9JTUkKKyNkZWZpbmUgQ09ORklHX0NNRF9CT09URAorI2RlZmluZSBDT05GSUdfQ01EX0RIQ1AKKyNkZWZpbmUgQ09ORklHX0NNRF9FTlYKICNkZWZpbmUgQ09ORklHX0NNRF9GTEFTSAorI2RlZmluZSBDT05GSUdfQ01EX0lNSQorI2RlZmluZSBDT05GSUdfQ01EX0pGRlMyCisjZGVmaW5lIENPTkZJR19DTURfTE9BREIKICNkZWZpbmUgQ09ORklHX0NNRF9NRU1PUlkKICNkZWZpbmUgQ09ORklHX0NNRF9ORVQKLSNkZWZpbmUgQ09ORklHX0NNRF9CT09URAotI2RlZmluZSBDT05GSUdfQ01EX0RIQ1AKICNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCiAjZGVmaW5lIENPTkZJR19DTURfUlVOCiAKLSNpZiAhZGVmaW5lZChWT0lDRUJMVUVfU01BTExfRkxBU0gpCi0gICAgI2RlZmluZSBDT05GSUdfQ01EX0VOVgotICAgICNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgotI2VuZGlmCi0KIAogLyoKICAqIEJPT1RQIG9wdGlvbnMKQEAgLTE2NSwzMiArMTQ5LDIwIEBACiAKICNkZWZpbmUgQ09ORklHX0xPT1BXCiAKLSNpZmRlZiBWT0lDRUJMVUVfU01BTExfRkxBU0gKLSNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkwCi0jdW5kZWYgIENPTkZJR19CT09UQVJHUwkJLyogdGhlIHByZWJvb3QgY29tbWFuZCB3aWxsIHNldCBib290YXJncyovCi0jZGVmaW5lIENGR19BVVRPTE9BRAkJIm4iCS8qIG5vIGF1dG9sb2FkICovCi0jZGVmaW5lIENPTkZJR19QUkVCT09UCQkicnVuIHNldHVwIgotI2RlZmluZQlDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCQkJCVwKLQkic2V0dXA9c2V0ZW52IGJvb3RhcmdzIGNvbnNvbGU9dHR5UzAsJHtiYXVkcmF0ZX0gIglcCi0JCSJyb290PS9kZXYvbmZzIGlwPWRoY3BcMCIJCQlcCi0JInVwZGF0ZT1lcmFzZSBjMDAwMDAwIGMwM2ZmZmY7ICIJCQlcCi0JCSJjcC5iIDEwNDAwMDAwIGMwMDAwMDAgJHtmaWxlc2l6ZX1cMCIKLSNlbHNlCiAjZGVmaW5lIENPTkZJR19CT09UREVMQVkJMwotI3VuZGVmICBDT05GSUdfQk9PVEFSR1MJCS8qIGJvb3QgY29tbWFuZCB3aWxsIHNldCBib290YXJncyAqLwotI2RlZmluZSBDRkdfQVVUT0xPQUQJCSJuIgkvKiBubyBhdXRvbG9hZCAqLworI2RlZmluZSBDT05GSUdfWkVST19CT09UREVMQVlfQ0hFQ0sJLyogYWxsb3cgdG8gYnJlYWsgaW4gYWx3YXlzICovCisjdW5kZWYgIENPTkZJR19CT09UQVJHUwkJLyogdGhlIGJvb3QgY29tbWFuZCB3aWxsIHNldCBib290YXJncyovCisjZGVmaW5lIENGR19BVVRPTE9BRAkJIm4iCQkvKiBObyBhdXRvbG9hZCAqLwogI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJInJ1biBuYm9vdCIKICNkZWZpbmUgQ09ORklHX1BSRUJPT1QJCSJydW4gc2V0dXAiCiAjZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJXAogCSJzaWxlbnQ9MVwwIgkJCQkJCVwKIAkib3NwYXJ0PTBcMCIJCQkJCQlcCi0JInN3YXBvcz1ub1wwIgkJCQkJCVwKKwkiYm9vdGZpbGU9L2Jvb3QvdUltYWdlXDAiCQkJCVwKIAkic2V0cGFydD0iCQkJCQkJXAotCSJpZiB0ZXN0ICRzd2Fwb3MgPSB5ZXM7IHRoZW4gIgkJCQlcCi0JCSJpZiB0ZXN0ICRvc3BhcnQgLWVxIDA7IHRoZW4gY2hwYXJ0IDQ7IGVsc2UgY2hwYXJ0IDM7IGZpOyAiXAotCQkic2V0ZW52IHN3YXBvcyBubzsgc2F2ZWVudjsgIgkJCVwKLQkiZWxzZSAiCQkJCQkJCVwKLQkJImlmIHRlc3QgJG9zcGFydCAtZXEgMDsgdGhlbiBjaHBhcnQgMzsgZWxzZSBjaHBhcnQgNDsgZmk7ICJcCisJImlmIHRlc3QgLW4gJHN3YXBvczsgdGhlbiAiCQkJCVwKKwkJInNldGVudiBzd2Fwb3M7IHNhdmVlbnY7ICIJCQlcCisJCSJpZiB0ZXN0ICRvc3BhcnQgLWVxIDA7IHRoZW4gc2V0ZW52IG9zcGFydCAxOyBlbHNlIHNldGVudiBvc3BhcnQgMDsgZmk7ICJcCiAJImZpXDAiCQkJCQkJCVwKIAkic2V0dXA9c2V0ZW52IGJvb3RhcmdzIGNvbnNvbGU9dHR5UzAsJGJhdWRyYXRlICIJXAogCQkibXRkcGFydHM9JG10ZHBhcnRzXDAiCQkJCVwKQEAgLTE5OCwxNiArMTcwLDE0IEBACiAJCSJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTo6b2ZmICIgXAogCQkibmZzcm9vdD0kcm9vdHBhdGggcm9vdD0vZGV2L25mc1wwIgkJXAogCSJmbGFzaGFyZ3M9cnVuIHNldHBhcnQ7IHNldGVudiBib290YXJncyAkYm9vdGFyZ3MgIglcCi0JCSJyb290PS9kZXYvbXRkYmxvY2skcGFydGl0aW9uIHJvICIJCVwKKwkJInJvb3Q9bXRkOmRhdGEkb3NwYXJ0IHJvICIJCQlcCiAJCSJyb290ZnN0eXBlPWpmZnMyXDAiCQkJCVwKIAkiaW5pdHJkYXJncz1zZXRlbnYgYm9vdGFyZ3MgJGJvb3RhcmdzICIJCQlcCiAJCSJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTo6b2ZmXDAiIFwKLQkiZmJvb3Q9cnVuIGZsYXNoYXJnczsgZnNsb2FkIC9ib290L3VJbWFnZTsgYm9vdG1cMCIJXAotCSJpYm9vdD1ib290cDsgcnVuIGluaXRyZGFyZ3M7IHRmdHA7IGJvb3RtXDAiCQlcCisJImZib290PXJ1biBmbGFzaGFyZ3M7IGNocGFydCBkYXRhJG9zcGFydDsgZnNsb2FkOyBib290bVwwIiBcCisJIm1ib290PWJvb3RwOyBydW4gaW5pdHJkYXJnczsgdGZ0cDsgYm9vdG1cMCIJCVwKIAkibmJvb3Q9Ym9vdHA7IHJ1biBuZnNhcmdzOyB0ZnRwOyBib290bVwwIgotI2VuZGlmCiAKLSNpZm5kZWYgVk9JQ0VCTFVFX1NNQUxMX0ZMQVNICiAjZGVmaW5lIENPTkZJR19TSUxFTlRfQ09OU09MRQkJMQkvKiBlbmFibGUgc2lsZW50IHN0YXJ0dXAgKi8KIAogI2lmIDEJLyogZmVlbCBmcmVlIHRvIGRpc2FibGUgZm9yIGRldmVsb3BtZW50ICovCkBAIC0yMjEsMTkgKzE5MSwxNSBAQAogICovCiAjZGVmaW5lIENPTkZJR19KRkZTMl9DTURMSU5FCiAjZGVmaW5lIE1URElEU19ERUZBVUxUCQkibm9yMD1vbWFwZmxhc2guMCIKLSNkZWZpbmUgTVREUEFSVFNfREVGQVVMVAkibXRkcGFydHM9b21hcGZsYXNoLjA6MTI4ayh1Ym9vdCksNjRrKGVudiksNjRrKHJfZW52KSwxNjI1NmsoZGF0YTEpLC0oZGF0YTIpIgorI2RlZmluZSBNVERQQVJUU19ERUZBVUxUCSJtdGRwYXJ0cz1vbWFwZmxhc2guMDoyNTZrKHUtYm9vdCksNjRrKGVudiksNjRrKHJfZW52KSwxNjE5MmsoZGF0YTApLC0oZGF0YTEpIgogCi0jZW5kaWYJLyogVk9JQ0VCTFVFX1NNQUxMX0ZMQVNIICovCi0KIAogLyoKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwotI2lmbmRlZiBWT0lDRUJMVUVfU01BTExfRkxBU0gKICNkZWZpbmUgQ0ZHX0hVU0hfUEFSU0VSCiAjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIJIj4gIgogI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQotI2VuZGlmCiAjZGVmaW5lIENGR19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KICNkZWZpbmUgQ0ZHX1BST01QVAkJIiMgIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLwogI2RlZmluZSBDRkdfQ0JTSVpFCQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MveHNlbmdpbmUuaCBiL2luY2x1ZGUvY29uZmlncy94c2VuZ2luZS5oCmluZGV4IDc2NjYxN2UuLmQxNjdlMDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy94c2VuZ2luZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy94c2VuZ2luZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjZGVmaW5lIENPTkZJR19YU0VOR0lORQkJCTEKICNkZWZpbmUgQ09ORklHX01NQwkJCTEKICNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04JCTEKLSNkZWZpbmUgQk9BUkRfUE9TVF9JTklUCQkJMQorI2RlZmluZSBPQVJEX0xBVEVfSU5JVAkJCTEKICN1bmRlZiAgQ09ORklHX1VTRV9JUlEJCQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLwogI2RlZmluZSBDRkdfSFoJCQkJMzY4NjQwMAkJLyogaW5jcmVtZW50ZXIgZnJlcTogMy42ODY0IE1IeiAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wYzUxMnguaCBiL2luY2x1ZGUvbXBjNTEyeC5oCmluZGV4IGQxYzZmYjIuLmI1MWNmNzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbXBjNTEyeC5oCisrKyBiL2luY2x1ZGUvbXBjNTEyeC5oCkBAIC0xODUsNyArMTg1LDcgQEAKIAogLyogU0NGUjEgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSBSZWdpc3RlciAxCiAgKi8KLSNkZWZpbmUgU0NGUjFfSVBTX0RJVgkJCTB4NAorI2RlZmluZSBTQ0ZSMV9JUFNfRElWCQkJMHgzCiAjZGVmaW5lIFNDRlIxX0lQU19ESVZfTUFTSwkJMHgwMzgwMDAwMAogI2RlZmluZSBTQ0ZSMV9JUFNfRElWX1NISUZUCQkyMwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NlcmlhbC5oIGIvaW5jbHVkZS9zZXJpYWwuaAppbmRleCBlMjkyZjBjLi4yYjk5ZTUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3NlcmlhbC5oCisrKyBiL2luY2x1ZGUvc2VyaWFsLmgKQEAgLTM2LDYgKzM2LDExIEBACiAKICNlbmRpZgogCisjaWYgZGVmaW5lZChDT05GSUdfUzNDMjQxMCkKK2V4dGVybiBzdHJ1Y3Qgc2VyaWFsX2RldmljZSBzM2MyNHh4X3NlcmlhbDBfZGV2aWNlOworZXh0ZXJuIHN0cnVjdCBzZXJpYWxfZGV2aWNlIHMzYzI0eHhfc2VyaWFsMV9kZXZpY2U7CitleHRlcm4gc3RydWN0IHNlcmlhbF9kZXZpY2UgczNjMjR4eF9zZXJpYWwyX2RldmljZTsKKyNlbmRpZgogCiBleHRlcm4gc3RydWN0IHNlcmlhbF9kZXZpY2Ugc2VyaWFsX2ZmdWFydF9kZXZpY2U7CiBleHRlcm4gc3RydWN0IHNlcmlhbF9kZXZpY2Ugc2VyaWFsX2J0dWFydF9kZXZpY2U7CmRpZmYgLS1naXQgYS9saWJfYXJtL2FybWxpbnV4LmMgYi9saWJfYXJtL2FybWxpbnV4LmMKaW5kZXggNmQzMmE0MS4uNjIxODVmMCAxMDA2NDQKLS0tIGEvbGliX2FybS9hcm1saW51eC5jCisrKyBiL2xpYl9hcm0vYXJtbGludXguYwpAQCAtNzgsNiArNzgsOCBAQAogCXZvaWQgKCp0aGVLZXJuZWwpKGludCB6ZXJvLCBpbnQgYXJjaCwgdWludCBwYXJhbXMpOwogCWltYWdlX2hlYWRlcl90ICpoZHIgPSAmaGVhZGVyOwogCWJkX3QgKmJkID0gZ2QtPmJkOworCWludCBtYWNoaWQgPSBiZC0+YmlfYXJjaF9udW1iZXI7CisJY2hhciAqczsKIAogI2lmZGVmIENPTkZJR19DTURMSU5FX1RBRwogCWNoYXIgKmNvbW1hbmRsaW5lID0gZ2V0ZW52ICgiYm9vdGFyZ3MiKTsKQEAgLTg1LDYgKzg3LDEyIEBACiAKIAl0aGVLZXJuZWwgPSAodm9pZCAoKikoaW50LCBpbnQsIHVpbnQpKW50b2hsKGhkci0+aWhfZXApOwogCisJcyA9IGdldGVudiAoIm1hY2hpZCIpOworCWlmIChzKSB7CisJCW1hY2hpZCA9IHNpbXBsZV9zdHJ0b3VsIChzLCBOVUxMLCAxNik7CisJCXByaW50ZiAoIlVzaW5nIG1hY2hpZCAweCV4IGZyb20gZW52aXJvbm1lbnRcbiIsIG1hY2hpZCk7CisJfQorCiAJLyoKIAkgKiBDaGVjayBpZiB0aGVyZSBpcyBhbiBpbml0cmQgaW1hZ2UKIAkgKi8KQEAgLTI2MCw3ICsyNjgsNyBAQAogCiAJY2xlYW51cF9iZWZvcmVfbGludXggKCk7CiAKLQl0aGVLZXJuZWwgKDAsIGJkLT5iaV9hcmNoX251bWJlciwgYmQtPmJpX2Jvb3RfcGFyYW1zKTsKKwl0aGVLZXJuZWwgKDAsIG1hY2hpZCwgYmQtPmJpX2Jvb3RfcGFyYW1zKTsKIH0KIAogCmRpZmYgLS1naXQgYS9saWJfYXJtL2JvYXJkLmMgYi9saWJfYXJtL2JvYXJkLmMKaW5kZXggN2U3YTI4Mi4uMjJkNTczYSAxMDA2NDQKLS0tIGEvbGliX2FybS9ib2FyZC5jCisrKyBiL2xpYl9hcm0vYm9hcmQuYwpAQCAtODQsNiArODQsMTEgQEAKIGV4dGVybiB2b2lkIHJ0bDgwMTlfZ2V0X2VuZXRhZGRyICh1Y2hhciAqIGFkZHIpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKENPTkZJR19IQVJEX0kyQykgfHwgXAorICAgIGRlZmluZWQoQ09ORklHX1NPRlRfSTJDKQorI2luY2x1ZGUgPGkyYy5oPgorI2VuZGlmCisKIC8qCiAgKiBCZWdpbiBhbmQgRW5kIG9mIG1lbW9yeSBhcmVhIGZvciBtYWxsb2MoKSwgYW5kIGN1cnJlbnQgImJyayIKICAqLwpAQCAtMjA5LDYgKzIxNCwxNiBAQAogfQogI2VuZGlmIC8qIENGR19OT19GTEFTSCAqLwogCisjaWYgZGVmaW5lZChDT05GSUdfSEFSRF9JMkMpIHx8IGRlZmluZWQoQ09ORklHX1NPRlRfSTJDKQorc3RhdGljIGludCBpbml0X2Z1bmNfaTJjICh2b2lkKQoreworCXB1dHMgKCJJMkM6ICAgIik7CisJaTJjX2luaXQgKENGR19JMkNfU1BFRUQsIENGR19JMkNfU0xBVkUpOworCXB1dHMgKCJyZWFkeVxuIik7CisJcmV0dXJuICgwKTsKK30KKyNlbmRpZgorCiAvKgogICogQnJlYXRoZSBzb21lIGxpZmUgaW50byB0aGUgYm9hcmQuLi4KICAqCkBAIC0yNTEsNiArMjY2LDkgQEAKICNpZiBkZWZpbmVkKENPTkZJR19ESVNQTEFZX0JPQVJESU5GTykKIAljaGVja2JvYXJkLAkJLyogZGlzcGxheSBib2FyZCBpbmZvICovCiAjZW5kaWYKKyNpZiBkZWZpbmVkKENPTkZJR19IQVJEX0kyQykgfHwgZGVmaW5lZChDT05GSUdfU09GVF9JMkMpCisJaW5pdF9mdW5jX2kyYywKKyNlbmRpZgogCWRyYW1faW5pdCwJCS8qIGNvbmZpZ3VyZSBhdmFpbGFibGUgUkFNIGJhbmtzICovCiAJZGlzcGxheV9kcmFtX2NvbmZpZywKIAlOVUxMLApkaWZmIC0tZ2l0IGEvbGliX3BwYy9NYWtlZmlsZSBiL2xpYl9wcGMvTWFrZWZpbGUKaW5kZXggMmJhMDM0Zi4uYWZiZDVjYSAxMDA2NDQKLS0tIGEvbGliX3BwYy9NYWtlZmlsZQorKysgYi9saWJfcHBjL01ha2VmaWxlCkBAIC0yNSw3ICsyNSw3IEBACiAKIExJQgk9ICQob2JqKWxpYiQoQVJDSCkuYQogCi1TT0JKUwk9IHBwY3N0cmluZy5vIHRpY2tzLm8KK1NPQkpTCT0gcHBjY2FjaGUubyBwcGNzdHJpbmcubyB0aWNrcy5vCiAKIENPQkpTCT0gYm9hcmQubyBcCiAJICBiYXRfcncubyBjYWNoZS5vIGV4dGFibGUubyBrZ2RiLm8gdGltZS5vIGludGVycnVwdHMubwpkaWZmIC0tZ2l0IGEvbGliX3BwYy9wcGNjYWNoZS5TIGIvbGliX3BwYy9wcGNjYWNoZS5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ODMzY2UKLS0tIC9kZXYvbnVsbAorKysgYi9saWJfcHBjL3BwY2NhY2hlLlMKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAgRGFuIE1hbGVrIDxkbWFsZWtAamxjLm5ldD4KKyAqIENvcHlyaWdodCAoQykgMTk5OSAgTWFnbnVzIERhbW0gPGtpZXJheXBjMDEucC55LmtpZS5lcmEuZXJpY3Nzb24uc2U+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAsIDIwMDEsMjAwMiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgorICogQ29weXJpZ2h0IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuIDIwMDQsIDIwMDYuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHBwY19hc20udG1wbD4KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBGdW5jdGlvbjoJIHBwY0RjYmYgKi8KKy8qIERlc2NyaXB0aW9uOgkgRGF0YSBDYWNoZSBibG9jayBmbHVzaCAqLworLyogSW5wdXQ6CSByMyA9IGVmZmVjdGl2ZSBhZGRyZXNzICovCisvKiBPdXRwdXQ6CSBub25lLiAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLmdsb2JsCXBwY0RjYmYKK3BwY0RjYmY6CisJZGNiZglyMCxyMworCWJscgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEZ1bmN0aW9uOgkgcHBjRGNiaSAqLworLyogRGVzY3JpcHRpb246CSBEYXRhIENhY2hlIGJsb2NrIEludmFsaWRhdGUgKi8KKy8qIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcyAqLworLyogT3V0cHV0Ogkgbm9uZS4gKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS5nbG9ibAlwcGNEY2JpCitwcGNEY2JpOgorCWRjYmkJcjAscjMKKwlibHIKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRnVuY3Rpb246CSBwcGNEY2J6CisgKiBEZXNjcmlwdGlvbjoJIERhdGEgQ2FjaGUgYmxvY2sgemVyby4KKyAqIElucHV0OgkgcjMgPSBlZmZlY3RpdmUgYWRkcmVzcworICogT3V0cHV0Ogkgbm9uZS4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS5nbG9ibAlwcGNEY2J6CitwcGNEY2J6OgorCWRjYnoJcjAscjMKKwlibHIKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBGdW5jdGlvbjoJIHBwY1N5bmMgKi8KKy8qIERlc2NyaXB0aW9uOgkgUHJvY2Vzc29yIFN5bmNocm9uaXplICovCisvKiBJbnB1dDoJIG5vbmUuICovCisvKiBPdXRwdXQ6CSBub25lLiAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLmdsb2JsCXBwY1N5bmMKK3BwY1N5bmM6CisJc3luYworCWJscgpkaWZmIC0tZ2l0IGEvbmV0L25mcy5jIGIvbmV0L25mcy5jCmluZGV4IGFhOGQ2MTIuLjY1NzNjMTcgMTAwNjQ0Ci0tLSBhL25ldC9uZnMuYworKysgYi9uZXQvbmZzLmMKQEAgLTM0LDcgKzM0LDggQEAKICNpZiBkZWZpbmVkKENPTkZJR19DTURfTkVUKSAmJiBkZWZpbmVkKENPTkZJR19DTURfTkZTKQogCiAjZGVmaW5lIEhBU0hFU19QRVJfTElORSA2NQkvKiBOdW1iZXIgb2YgImxvYWRpbmciIGhhc2hlcyBwZXIgbGluZQkqLwotI2RlZmluZSBORlNfVElNRU9VVCA2MFVMCisjZGVmaW5lIE5GU19SRVRSWV9DT1VOVCAzMAorI2RlZmluZSBORlNfVElNRU9VVCAyVUwKIAogc3RhdGljIGludCBmc19tb3VudGVkID0gMDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHJwY19pZCA9IDA7CkBAIC01ODYsNiArNTg3LDEwIEBACiBzdGF0aWMgdm9pZAogTmZzVGltZW91dCAodm9pZCkKIHsKKwlpZiAoIE5mc1RpbWVvdXRDb3VudCsrIDwgTkZTX1JFVFJZX0NPVU5UICkgeworCQlOZnNTZW5kICgpOworCQlyZXR1cm47CisJfQogCXB1dHMgKCJUaW1lb3V0XG4iKTsKIAlOZXRTdGF0ZSA9IE5FVExPT1BfRkFJTDsKIAlyZXR1cm47CmRpZmYgLS1naXQgYS9uZXQvdGZ0cC5jIGIvbmV0L3RmdHAuYwppbmRleCA4Yjk1YmNmLi5lYThmZWEyIDEwMDY0NAotLS0gYS9uZXQvdGZ0cC5jCisrKyBiL25ldC90ZnRwLmMKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgVEZUUF9FUlJPUgk1CiAjZGVmaW5lIFRGVFBfT0FDSwk2CiAKLQorc3RhdGljIElQYWRkcl90IFRmdHBTZXJ2ZXJJUDsKIHN0YXRpYyBpbnQJVGZ0cFNlcnZlclBvcnQ7CQkvKiBUaGUgVURQIHBvcnQgYXQgdGhlaXIgZW5kCQkqLwogc3RhdGljIGludAlUZnRwT3VyUG9ydDsJCS8qIFRoZSBVRFAgcG9ydCBhdCBvdXIgZW5kCQkqLwogc3RhdGljIGludAlUZnRwVGltZW91dENvdW50OwpAQCAtNTUsNyArNTUsMTQgQEAKIAogI2RlZmluZSBERUZBVUxUX05BTUVfTEVOCSg4ICsgNCArIDEpCiBzdGF0aWMgY2hhciBkZWZhdWx0X2ZpbGVuYW1lW0RFRkFVTFRfTkFNRV9MRU5dOwotc3RhdGljIGNoYXIgKnRmdHBfZmlsZW5hbWU7CisKKyNpZm5kZWYgQ09ORklHX1RGVFBfRklMRV9OQU1FX01BWF9MRU4KKyNkZWZpbmUgTUFYX0xFTiAxMjgKKyNlbHNlCisjZGVmaW5lIE1BWF9MRU4gQ09ORklHX1RGVFBfRklMRV9OQU1FX01BWF9MRU4KKyNlbmRpZgorCitzdGF0aWMgY2hhciB0ZnRwX2ZpbGVuYW1lW01BWF9MRU5dOwogCiAjaWZkZWYgQ0ZHX0RJUkVDVF9GTEFTSF9URlRQCiBleHRlcm4gZmxhc2hfaW5mb190IGZsYXNoX2luZm9bXTsKQEAgLTIzMSw3ICsyMzgsNyBAQAogCQlicmVhazsKIAl9CiAKLQlOZXRTZW5kVURQUGFja2V0KE5ldFNlcnZlckV0aGVyLCBOZXRTZXJ2ZXJJUCwgVGZ0cFNlcnZlclBvcnQsIFRmdHBPdXJQb3J0LCBsZW4pOworCU5ldFNlbmRVRFBQYWNrZXQoTmV0U2VydmVyRXRoZXIsIFRmdHBTZXJ2ZXJJUCwgVGZ0cFNlcnZlclBvcnQsIFRmdHBPdXJQb3J0LCBsZW4pOwogfQogCiAKQEAgLTM3Miw3ICszNzksNyBAQAogI2lmZGVmIENPTkZJR19NQ0FTVF9URlRQCiAJCS8qIGlmIEkgYW0gdGhlIE1hc3RlckNsaWVudCwgYWN0aXZlbHkgY2FsY3VsYXRlIHdoYXQgbXkgbmV4dAogCQkgKiBuZWVkZWQgYmxvY2sgaXM7IGVsc2UgSSdtIHBhc3NpdmU7IG5vdCBBQ0tJTkcKLSAJCSAqLworCQkgKi8KIAkJaWYgKE11bHRpY2FzdCkgewogCQkJaWYgKGxlbiA8IFRmdHBCbGtTaXplKSAgewogCQkJCVRmdHBFbmRpbmdCbG9jayA9IFRmdHBCbG9jazsKQEAgLTQ1MywzMCArNDYwLDQzIEBACiAJY2hhciAqZXA7ICAgICAgICAgICAgIC8qIEVudmlyb25tZW50IHBvaW50ZXIgKi8KICNlbmRpZgogCisJVGZ0cFNlcnZlcklQID0gTmV0U2VydmVySVA7CiAJaWYgKEJvb3RGaWxlWzBdID09ICdcMCcpIHsKIAkJc3ByaW50ZihkZWZhdWx0X2ZpbGVuYW1lLCAiJTAybFglMDJsWCUwMmxYJTAybFguaW1nIiwKIAkJCU5ldE91cklQICYgMHhGRiwKIAkJCShOZXRPdXJJUCA+PiAgOCkgJiAweEZGLAogCQkJKE5ldE91cklQID4+IDE2KSAmIDB4RkYsCiAJCQkoTmV0T3VySVAgPj4gMjQpICYgMHhGRgkpOwotCQl0ZnRwX2ZpbGVuYW1lID0gZGVmYXVsdF9maWxlbmFtZTsKKworCQlzdHJuY3B5KHRmdHBfZmlsZW5hbWUsIGRlZmF1bHRfZmlsZW5hbWUsIE1BWF9MRU4pOworCQl0ZnRwX2ZpbGVuYW1lW01BWF9MRU4tMV0gPSAwOwogCiAJCXByaW50ZiAoIioqKiBXYXJuaW5nOiBubyBib290IGZpbGUgbmFtZTsgdXNpbmcgJyVzJ1xuIiwKIAkJCXRmdHBfZmlsZW5hbWUpOwogCX0gZWxzZSB7Ci0JCXRmdHBfZmlsZW5hbWUgPSBCb290RmlsZTsKKwkJY2hhciAqcCA9IHN0cmNociAoQm9vdEZpbGUsICc6Jyk7CisKKwkJaWYgKHAgPT0gTlVMTCkgeworCQkJc3RybmNweSh0ZnRwX2ZpbGVuYW1lLCBCb290RmlsZSwgTUFYX0xFTik7CisJCQl0ZnRwX2ZpbGVuYW1lW01BWF9MRU4tMV0gPSAwOworCQl9IGVsc2UgeworCQkJKnArKyA9ICdcMCc7CisJCQlUZnRwU2VydmVySVAgPSBzdHJpbmdfdG9faXAgKEJvb3RGaWxlKTsKKwkJCXN0cm5jcHkodGZ0cF9maWxlbmFtZSwgcCwgTUFYX0xFTik7CisJCQl0ZnRwX2ZpbGVuYW1lW01BWF9MRU4tMV0gPSAwOworCQl9CiAJfQogCiAjaWYgZGVmaW5lZChDT05GSUdfTkVUX01VTFRJKQogCXByaW50ZiAoIlVzaW5nICVzIGRldmljZVxuIiwgZXRoX2dldF9uYW1lKCkpOwogI2VuZGlmCi0JcHV0cyAoIlRGVFAgZnJvbSBzZXJ2ZXIgIik7CXByaW50X0lQYWRkciAoTmV0U2VydmVySVApOworCXB1dHMgKCJURlRQIGZyb20gc2VydmVyICIpOwlwcmludF9JUGFkZHIgKFRmdHBTZXJ2ZXJJUCk7CiAJcHV0cyAoIjsgb3VyIElQIGFkZHJlc3MgaXMgIik7CXByaW50X0lQYWRkciAoTmV0T3VySVApOwogCiAJLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBzZW5kIGFjcm9zcyB0aGlzIHN1Ym5ldCAqLwogCWlmIChOZXRPdXJHYXRld2F5SVAgJiYgTmV0T3VyU3VibmV0TWFzaykgewotCSAgICBJUGFkZHJfdCBPdXJOZXQgCT0gTmV0T3VySVAgICAgJiBOZXRPdXJTdWJuZXRNYXNrOwotCSAgICBJUGFkZHJfdCBTZXJ2ZXJOZXQgCT0gTmV0U2VydmVySVAgJiBOZXRPdXJTdWJuZXRNYXNrOworCSAgICBJUGFkZHJfdCBPdXJOZXQJPSBOZXRPdXJJUCAgICAmIE5ldE91clN1Ym5ldE1hc2s7CisJICAgIElQYWRkcl90IFNlcnZlck5ldAk9IFRmdHBTZXJ2ZXJJUCAmIE5ldE91clN1Ym5ldE1hc2s7CiAKIAkgICAgaWYgKE91ck5ldCAhPSBTZXJ2ZXJOZXQpIHsKIAkJcHV0cyAoIjsgc2VuZGluZyB0aHJvdWdoIGdhdGV3YXkgIik7CkBAIC01MjIsNyArNTQyLDcgQEAKIAkvKiBSZXZlcnQgVGZ0cEJsa1NpemUgdG8gZGZsdCAqLwogCVRmdHBCbGtTaXplID0gVEZUUF9CTE9DS19TSVpFOwogI2lmZGVmIENPTkZJR19NQ0FTVF9URlRQCi0gICAgCW1jYXN0X2NsZWFudXAoKTsKKwltY2FzdF9jbGVhbnVwKCk7CiAjZW5kaWYKIAogCVRmdHBTZW5kICgpOwpkaWZmIC0tZ2l0IGEvb25lbmFuZF9pcGwvYm9hcmQvYXBvbGxvbi9NYWtlZmlsZSBiL29uZW5hbmRfaXBsL2JvYXJkL2Fwb2xsb24vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhMDk1OQotLS0gL2Rldi9udWxsCisrKyBiL29uZW5hbmRfaXBsL2JvYXJkL2Fwb2xsb24vTWFrZWZpbGUKQEAgLTAsMCArMSw2NSBAQAorCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKK2luY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvY29uZmlnLm1rCitpbmNsdWRlICQoVE9QRElSKS9vbmVuYW5kX2lwbC9ib2FyZC8kKEJPQVJERElSKS9jb25maWcubWsKKworTERTQ1JJUFQ9ICQoVE9QRElSKS9vbmVuYW5kX2lwbC9ib2FyZC8kKEJPQVJERElSKS91LWJvb3Qub25lbmFuZC5sZHMKK0xERkxBR1MJPSAtQnN0YXRpYyAtVCAkKExEU0NSSVBUKSAtVHRleHQgJChURVhUX0JBU0UpICQoUExBVEZPUk1fTERGTEFHUykKK0FGTEFHUwkrPSAtRENPTkZJR19PTkVOQU5EX0lQTAorQ0ZMQUdTCSs9IC1EQ09ORklHX09ORU5BTkRfSVBMCitPQkpDTEZBR1MgKz0gLS1nYXAtZmlsbD0weDAwCisKK1NPQkpTCT0gc3RhcnQubyBsb3dfbGV2ZWxpbml0Lm8gIyBfbWVtY3B5MzIubworQ09CSlMJPSBhcG9sbG9uLm8gb25lbmFuZF9yZWFkLm8gb25lbmFuZF9ib290Lm8KKworU1JDUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykpCitPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSAkKENPQkpTKSkKK19fT0JKUwk6PSAkKFNPQkpTKSAkKENPQkpTKQorTE5ESVIJOj0gJChPQkpUUkVFKS9vbmVuYW5kX2lwbC9ib2FyZC8kKEJPQVJERElSKQorCitvbmVuYW5kb2JqCTo9ICQoT0JKVFJFRSkvb25lbmFuZF9pcGwvCisKK0FMTAk9ICQob25lbmFuZG9iailvbmVuYW5kLWlwbCAkKG9uZW5hbmRvYmopb25lbmFuZC1pcGwuYmluICQob25lbmFuZG9iailvbmVuYW5kLWlwbC0yay5iaW4KKworYWxsOgkkKG9iaikuZGVwZW5kICQoQUxMKQorCiskKG9uZW5hbmRvYmopb25lbmFuZC1pcGwtMmsuYmluOgkkKG9uZW5hbmRvYmopb25lbmFuZC1pcGwKKwkkKE9CSkNPUFkpICR7T0JKQ0ZMQUdTfSAtLXBhZC10bz0weDgwMCAtTyBiaW5hcnkgJDwgJEAKKworJChvbmVuYW5kb2JqKW9uZW5hbmQtaXBsLmJpbjoJJChvbmVuYW5kb2JqKW9uZW5hbmQtaXBsCisJJChPQkpDT1BZKSAke09CSkNGTEFHU30gLU8gYmluYXJ5ICQ8ICRACisKKyQob25lbmFuZG9iailvbmVuYW5kLWlwbDoJJChPQkpTKQorCWNkICQoTE5ESVIpICYmICQoTEQpICQoTERGTEFHUykgJCRVTkRFRl9TWU0gJChfX09CSlMpIFwKKwkJLU1hcCAkKG9uZW5hbmRvYmopb25lbmFuZC1pcGwubWFwIFwKKwkJLW8gJChvbmVuYW5kb2JqKW9uZW5hbmQtaXBsCisKKyMgY3JlYXRlIHN5bWJvbGljIGxpbmtzIGZyb20gY29tbW9uIGZpbGVzCisKKyMgZnJvbSBjcHUgZGlyZWN0b3J5CiskKG9iailzdGFydC5TOgorCXJtIC1mICQob2JqKXN0YXJ0LlMKKwlsbiAtcyAkKFNSQ1RSRUUpL2NwdS8kKENQVSkvc3RhcnQuUyAkKG9iailzdGFydC5TCisKKyMgZnJvbSBvbmVuYW5kX2lwbCBkaXJlY3RvcnkKKyQob2JqKW9uZW5hbmRfaXBsLmg6CisJcm0gLWYgJChvYmopb25lbmFuZF9pcGwuaAorCWxuIC1zICQoU1JDVFJFRSkvb25lbmFuZF9pcGwvb25lbmFuZF9pcGwuaCAkKG9iailvbmVuYW5kX2lwbC5oCisKKyQob2JqKW9uZW5hbmRfYm9vdC5jOgkkKG9iailvbmVuYW5kX2lwbC5oCisJcm0gLWYgJChvYmopb25lbmFuZF9ib290LmMKKwlsbiAtcyAkKFNSQ1RSRUUpL29uZW5hbmRfaXBsL29uZW5hbmRfYm9vdC5jICQob2JqKW9uZW5hbmRfYm9vdC5jCisKKyQob2JqKW9uZW5hbmRfcmVhZC5jOgkkKG9iailvbmVuYW5kX2lwbC5oCisJcm0gLWYgJChvYmopb25lbmFuZF9yZWFkLmMKKwlsbiAtcyAkKFNSQ1RSRUUpL29uZW5hbmRfaXBsL29uZW5hbmRfcmVhZC5jICQob2JqKW9uZW5hbmRfcmVhZC5jCisKKyQob2JqKSUubzoJJChvYmopJS5TCisJJChDQykgJChBRkxBR1MpIC1jIC1vICRAICQ8CisKKyQob2JqKSUubzoJJChvYmopJC5jCisJJChDQykgJChDRkxBR1MpIC1jIC1vICRAICQ8CisKK2luY2x1ZGUgJChTUkNUUkVFKS9ydWxlcy5taworCitzaW5jbHVkZSAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9vbmVuYW5kX2lwbC9ib2FyZC9hcG9sbG9uL2Fwb2xsb24uYyBiL29uZW5hbmRfaXBsL2JvYXJkL2Fwb2xsb24vYXBvbGxvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjVjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9vbmVuYW5kX2lwbC9ib2FyZC9hcG9sbG9uL2Fwb2xsb24uYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1LTIwMDggU2Ftc3VuZyBFbGVjdHJvbmljcworICogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL211eC5oPgorCisjZGVmaW5lIHdyaXRlX2NvbmZpZ19yZWcocmVnLCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJd3JpdGViKHZhbHVlLCByZWcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUm91dGluZTogYm9hcmRfaW5pdAorICogRGVzY3JpcHRpb246IEVhcmx5IGhhcmR3YXJlIGluaXQuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitpbnQgYm9hcmRfaW5pdCh2b2lkKQoreworCXJldHVybiAwOworfQorCisjaWZkZWYgQ0ZHX1BSSU5URgorLyogUGluIE11eGluZyByZWdpc3RlcnMgdXNlZCBmb3IgVUFSVDEgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBSb3V0aW5lOiBtdXhTZXR1cFVBUlQxICAob3N0Ym9vdCkKKyAqIERlc2NyaXB0aW9uOiBTZXQgdXAgdWFydDEgbXV4aW5nCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBtdXhTZXR1cFVBUlQxKHZvaWQpCit7CisJLyogVUFSVDFfQ1RTIHBpbiBjb25maWd1cmF0aW9uLCBQSU4gPSBEMjEgKi8KKwl3cml0ZV9jb25maWdfcmVnKENPTlRST0xfUEFEQ09ORl9VQVJUMV9DVFMsIDApOworCS8qIFVBUlQxX1JUUyBwaW4gY29uZmlndXJhdGlvbiwgUElOID0gSDIxICovCisJd3JpdGVfY29uZmlnX3JlZyhDT05UUk9MX1BBRENPTkZfVUFSVDFfUlRTLCAwKTsKKwkvKiBVQVJUMV9UWCBwaW4gY29uZmlndXJhdGlvbiwgUElOID0gTDIwICovCisJd3JpdGVfY29uZmlnX3JlZyhDT05UUk9MX1BBRENPTkZfVUFSVDFfVFgsIDApOworCS8qIFVBUlQxX1JYIHBpbiBjb25maWd1cmF0aW9uLCBQSU4gPSBUMjEgKi8KKwl3cml0ZV9jb25maWdfcmVnKENPTlRST0xfUEFEQ09ORl9VQVJUMV9SWCwgMCk7Cit9CisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFJvdXRpbmU6IHNfaW5pdAorICogRGVzY3JpcHRpb246IERvZXMgZWFybHkgc3lzdGVtIGluaXQgb2YgbXV4aW5nIGFuZCBjbG9ja3MuCisgKiAtIENhbGxlZCBhdCB0aW1lIHdoZW4gb25seSBzdGFjayBpcyBhdmFpbGFibGUuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2ludCBzX2luaXQoaW50IHNraXApCit7CisjaWZkZWYgQ0ZHX1BSSU5URgorCW11eFNldHVwVUFSVDEoKTsKKyNlbmRpZgorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvb25lbmFuZF9pcGwvYm9hcmQvYXBvbGxvbi9jb25maWcubWsgYi9vbmVuYW5kX2lwbC9ib2FyZC9hcG9sbG9uL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDljNTA2Ci0tLSAvZGV2L251bGwKKysrIGIvb25lbmFuZF9pcGwvYm9hcmQvYXBvbGxvbi9jb25maWcubWsKQEAgLTAsMCArMSwxNCBAQAorIworIyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwOCBTYW1zdW5nIEVsZWN0cm9uaWNzCisjIEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisjCisjIFNhbXN1bmcgQXBvbGxvbiBib2FyZCB3aXRoIE9NQVAyNDIwIChBUk0xMTM2KSBjcHUKKyMKKyMgQXBvbGxvbiBoYXMgMSBiYW5rIG9mIDEyOE1CIG1ERFItU0RSQU0gb24gQ1MwCisjIFBoeXNpY2FsIEFkZHJlc3M6CisjIDgwMDAnMDAwMCAoYmFuazApCisjIDg4MDAnMDAwMCAoYmFuazEpCisjIExpbnV4LUtlcm5lbCBpcyBleHBlY3RlZCB0byBiZSBhdCA4MDAwJzgwMDAsIGVudHJ5IDgwMDAnODAwMAorIyAobWVtIGJhc2UgKyByZXNlcnZlZCkKKworVEVYVF9CQVNFID0gMHgwMDAwMDAwMApkaWZmIC0tZ2l0IGEvb25lbmFuZF9pcGwvYm9hcmQvYXBvbGxvbi9sb3dfbGV2ZWxpbml0LlMgYi9vbmVuYW5kX2lwbC9ib2FyZC9hcG9sbG9uL2xvd19sZXZlbGluaXQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDUxNzBmCi0tLSAvZGV2L251bGwKKysrIGIvb25lbmFuZF9pcGwvYm9hcmQvYXBvbGxvbi9sb3dfbGV2ZWxpbml0LlMKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBCb2FyZCBzcGVjaWZpYyBzZXR1cCBpbmZvCisgKgorICogKEMpIENvcHlyaWdodCAyMDA1LTIwMDggU2Ftc3VuZyBFbGVjdHJvbmljcworICogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAqCisgKiBEZXJpdmVkIGZyb20gYm9hcmQvb21hcDI0MjBoNC9wbGF0Zm9ybS5TCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL29tYXAyNDIwLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbWVtLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvY2xvY2tzLmg+CisKKyNkZWZpbmUgQVBPTExPTl9DUzBfQkFTRQkweDAwMDAwMDAwCisKKyNpZmRlZiBQUkNNX0NPTkZJR19JCisjZGVmaW5lIFNEUkNfQUNUSU1fQ1RSTEFfMF9WQUwJMHg3QkEzNTkwNworI2RlZmluZSBTRFJDX0FDVElNX0NUUkxCXzBfVkFMCTB4MDAwMDAwMTMKKyNkZWZpbmUgU0RSQ19SRlJfQ1RSTF8wX1ZBTAkweDAwMDQ0QzAxCisKKy8qIEdQTUMgKi8KKyNkZWZpbmUgQVBPTExPTl9HUE1DX0NPTkZJRzFfMAkweGUzMGQxMjAxCisjZGVmaW5lIEFQT0xMT05fR1BNQ19DT05GSUcyXzAJMHgwMDBjMTAwMAorI2RlZmluZSBBUE9MTE9OX0dQTUNfQ09ORklHM18wCTB4MDAwMzA0MDAKKyNkZWZpbmUgQVBPTExPTl9HUE1DX0NPTkZJRzRfMAkweDBCODQxMDA2CisjZGVmaW5lIEFQT0xMT05fR1BNQ19DT05GSUc1XzAJMHgwMjBGMEMxMQorI2RlZmluZSBBUE9MTE9OX0dQTUNfQ09ORklHNl8wCTB4MDAwMDAwMDAKKyNkZWZpbmUgQVBPTExPTl9HUE1DX0NPTkZJRzdfMAkoMHgwMDAwMGU0MCB8IChBUE9MTE9OX0NTMF9CQVNFID4+IDI0KSkKKworI2VsaWYgZGVmaW5lZChQUkNNX0NPTkZJR19JSSkKKyNkZWZpbmUgU0RSQ19BQ1RJTV9DVFJMQV8wX1ZBTAkweDRBNTlCNDg1CisjZGVmaW5lIFNEUkNfQUNUSU1fQ1RSTEJfMF9WQUwJMHgwMDAwMDAwQworI2RlZmluZSBTRFJDX1JGUl9DVFJMXzBfVkFMCTB4MDAwMzAwMDEKKworLyogR1BNQyAqLworI2RlZmluZSBBUE9MTE9OX0dQTUNfQ09ORklHMV8wCTB4ZTMwZDEyMDEKKyNkZWZpbmUgQVBPTExPTl9HUE1DX0NPTkZJRzJfMAkweDAwMDgwRTgxCisjZGVmaW5lIEFQT0xMT05fR1BNQ19DT05GSUczXzAJMHgwMDAzMDQwMAorI2RlZmluZSBBUE9MTE9OX0dQTUNfQ09ORklHNF8wCTB4MDgwNDE1ODYKKyNkZWZpbmUgQVBPTExPTl9HUE1DX0NPTkZJRzVfMAkweDAyMEMwOTBFCisjZGVmaW5lIEFQT0xMT05fR1BNQ19DT05GSUc2XzAJMHgwMDAwMDAwMAorI2RlZmluZSBBUE9MTE9OX0dQTUNfQ09ORklHN18wCSgweDAwMDAwZTQwIHwgKEFQT0xMT05fQ1MwX0JBU0UgPj4gMjQpKQorCisjZWxzZQorI2Vycm9yICJQbGVhc2UgY29uZmlndXJlIFBSQ00gc2NoZWNtIgorI2VuZGlmCisKK19URVhUX0JBU0U6CisJLndvcmQJVEVYVF9CQVNFCS8qIHNkcmFtIGxvYWQgYWRkciBmcm9tIGNvbmZpZy5tayAqLworCisuZ2xvYmwgbG93bGV2ZWxfaW5pdAorbG93bGV2ZWxfaW5pdDoKKwltb3YgcjMsIHIwICAgICAvKiBzYXZlIHNraXAgaW5mb3JtYXRpb24gKi8KKworCS8qIERpc2FibGUgd2F0Y2hkb2cgKi8KKwlsZHIJcjAsID1XRDJfQkFTRQorCWxkcglyMSwgPVdEX1VOTE9DSzEKKwlzdHIJcjEsIFtyMCwgI1dTUFJdCisKKwlsZHIJcjEsID1XRF9VTkxPQ0syCisJc3RyCXIxLCBbcjAsICNXU1BSXQorCisjaWZkZWYgREVCVUdfTEVECisJLyogTEVEMCBPRkYgKi8KKwlsZHIJcjAsID0weDQ4MDAwMEU1CQkvKiBiYWxsIEFBMTAsIG1vZGUgMyAqLworCW1vdglyMSwgIzB4MGIKKwlzdHJiCXIxLCBbcjBdCisjZW5kaWYKKworCS8qIFBpbiBtdXhpbmcgZm9yIFNEUkMgKi8KKwltb3YJcjEsICMweDAwCisJbGRyCXIwLCA9MHg0ODAwMDBBMQkJLyogYmFsbCBDMTIsIG1vZGUgMCAqLworCXN0cmIJcjEsIFtyMF0KKworCWxkcglyMCwgPTB4NDgwMDAwMzIJCS8qIGJhbGwgRDExLCBtb2RlIDAgKi8KKwlzdHJiCXIxLCBbcjBdCisKKwlsZHIJcjAsID0weDQ4MDAwMEEzCQkvKiBiYWxsIEIxMywgbW9kZSAwICovCisJc3RyYglyMSwgW3IwXQorCisJLyogU0RSQyBzZXR0aW5nICovCisJbGRyCXIwLCA9T01BUDI0MjBfU0RSQ19CQVNFCisJbGRyCXIxLCA9MHgwMDAwMDAxMAorCXN0cglyMSwgW3IwLCAjMHgxMF0KKworCWxkcglyMSwgPTB4MDAwMDAxMDAKKwlzdHIJcjEsIFtyMCwgIzB4NDRdCisKKwkvKiBTRFJDIENTMCBjb25maWd1cmF0aW9uICovCisjaWZkZWYgQ09ORklHX0FQT0xMT05fUExVUworCWxkcglyMSwgPTB4MDE3MDIwMTEKKyNlbHNlCisJbGRyCXIxLCA9MHgwMGQwNDAxMQorI2VuZGlmCisJc3RyCXIxLCBbcjAsICMweDgwXQorCisJbGRyCXIxLCA9U0RSQ19BQ1RJTV9DVFJMQV8wX1ZBTAorCXN0cglyMSwgW3IwLCAjMHg5Q10KKworCWxkcglyMSwgPVNEUkNfQUNUSU1fQ1RSTEJfMF9WQUwKKwlzdHIJcjEsIFtyMCwgIzB4QTBdCisKKwlsZHIJcjEsID1TRFJDX1JGUl9DVFJMXzBfVkFMCisJc3RyCXIxLCBbcjAsICMweEE0XQorCisJbGRyCXIxLCA9MHgwMDAwMDA0MQorCXN0cglyMSwgW3IwLCAjMHg3MF0KKworCS8qIE1hbnVhbCBjb21tYW5kIHNlcXVlbmNlICovCisJbGRyCXIxLCA9MHgwMDAwMDAwNworCXN0cglyMSwgW3IwLCAjMHhBOF0KKworCWxkcglyMSwgPTB4MDAwMDAwMDAKKwlzdHIJcjEsIFtyMCwgIzB4QThdCisKKwlsZHIJcjEsID0weDAwMDAwMDAxCisJc3RyCXIxLCBbcjAsICMweEE4XQorCisJbGRyCXIxLCA9MHgwMDAwMDAwMgorCXN0cglyMSwgW3IwLCAjMHhBOF0KKwlzdHIJcjEsIFtyMCwgIzB4QThdCisKKwkvKgorCSAqIENTMCBTRFJDIE1vZGUgcmVnaXN0ZXIKKwkgKiAgIEJ1cnN0IGxlbmd0aCA9IDQgLSBERFIgbWVtb3J5CisJICogICBTZXJpYWwgbW9kZQorCSAqICAgQ0FTIGxhdGVuY3kgPSAzCisJICovCisJbGRyCXIxLCA9MHgwMDAwMDAzMgorCXN0cglyMSwgW3IwLCAjMHg4NF0KKworCS8qIE5vdGU6IFlvdSBNVVNUIHNldCBFTVIgdmFsdWVzICovCisJLyogRU1SMSAmIEVNUjIgKi8KKwlsZHIJcjEsID0weDAwMDAwMDAwCisJc3RyCXIxLCBbcjAsICMweDg4XQorCXN0cglyMSwgW3IwLCAjMHg4Q10KKworI2lmZGVmIE9MRF9TRFJDX0RMTEFfQ1RSTAorCS8qIFNEUkNfRExMQV9DVFJMICovCisJbGRyCXIxLCA9MHgwMDAwNzMwNgorCXN0cglyMSwgW3IwLCAjMHg2MF0KKworCWxkcglyMSwgPTB4MDAwMDczMDMKKwlzdHIJcjEsIFtyMCwgIzB4NjBdCisjZWxzZQorCS8qIFNEUkNfRExMQV9DVFJMICovCisJbGRyCXIxLCA9MHgwMDAwMDUwNgorCXN0cglyMSwgW3IwLCAjMHg2MF0KKworCWxkcglyMSwgPTB4MDAwMDA1MDMKKwlzdHIJcjEsIFtyMCwgIzB4NjBdCisjZW5kaWYKKworI2lmZGVmIF9fQlJPS0VOX0ZFQVRVUkVfXworCS8qIFNEUkNfRExMQl9DVFJMICovCisJbGRyCXIxLCA9MHgwMDAwMDUwNgorCXN0cglyMSwgW3IwLCAjMHg2OF0KKworCWxkcglyMSwgPTB4MDAwMDA1MDMKKwlzdHIJcjEsIFtyMCwgIzB4NjhdCisjZW5kaWYKKworCS8qIGxpdHRsZSBkZWxheSBhZnRlciBpbml0ICovCisJbW92CXIyLCAjMHgxODAwCisxOgorCXN1YnMJcjIsIHIyLCAjMHgxCisJYm5lCTFiCisKKwlsZHIJc3AsIFNSQU1fU1RBQ0sKKwlzdHIJaXAsIFtzcF0JLyogc3Rhc2ggb2xkIGxpbmsgcmVnaXN0ZXIgKi8KKwltb3YJaXAsIGxyCQkvKiBzYXZlIGxpbmsgcmVnIGFjcm9zcyBjYWxsICovCisJbW92CXIwLCByMwkJLyogcGFzcyBza2lwIGluZm8gdG8gc19pbml0ICovCisKKwlibAlzX2luaXQJCS8qIGdvIHNldHVwIHBsbCxtdXgsbWVtb3J5ICovCisKKwlsZHIJaXAsIFtzcF0JLyogcmVzdG9yZSBzYXZlIGlwICovCisJbW92CWxyLCBpcAkJLyogcmVzdG9yZSBsaW5rIHJlZyAqLworCisJLyogYmFjayB0byBhcmNoIGNhbGxpbmcgY29kZSAqLworCW1vdglwYywJbHIKKworCS8qIHRoZSBsaXRlcmFsIHBvb2xzIG9yaWdpbiAqLworCS5sdG9yZworCitTUkFNX1NUQUNLOgorCS53b3JkIExPV19MRVZFTF9TUkFNX1NUQUNLCmRpZmYgLS1naXQgYS9vbmVuYW5kX2lwbC9ib2FyZC9hcG9sbG9uL3UtYm9vdC5vbmVuYW5kLmxkcyBiL29uZW5hbmRfaXBsL2JvYXJkL2Fwb2xsb24vdS1ib290Lm9uZW5hbmQubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OWY5ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9vbmVuYW5kX2lwbC9ib2FyZC9hcG9sbG9uL3UtYm9vdC5vbmVuYW5kLmxkcwpAQCAtMCwwICsxLDUzIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1LTIwMDggU2Ftc3VuZyBFbGVjdHJvbmljcworICogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAqCisgKiBEZXJpdmVkIGZyb20gWC1sb2FkZXIKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCitPVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCitPVVRQVVRfQVJDSChhcm0pCitFTlRSWShfc3RhcnQpCitTRUNUSU9OUworeworCS4gPSAweDAwMDAwMDAwOworCisJLiA9IEFMSUdOKDQpOworCS50ZXh0ICAgICAgOgorCXsKKwkgIHN0YXJ0Lm8JKC50ZXh0KQorCSAgKigudGV4dCkKKwl9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZ290IDogeyAqKC5nb3QpIH0KKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKSB9CisJX2VuZCA9IC47Cit9CmRpZmYgLS1naXQgYS9vbmVuYW5kX2lwbC9vbmVuYW5kX2Jvb3QuYyBiL29uZW5hbmRfaXBsL29uZW5hbmRfYm9vdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMGRlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9vbmVuYW5kX2lwbC9vbmVuYW5kX2Jvb3QuYwpAQCAtMCwwICsxLDgxIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1LTIwMDggU2Ftc3VuZyBFbGVjdHJvbmljcworICogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KKyAqCisgKiBEZXJpdmVkIGZyb20geC1sb2FkZXIKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8dmVyc2lvbi5oPgorCisjaW5jbHVkZSAib25lbmFuZF9pcGwuaCIKKworI2lmZGVmIENGR19QUklOVEYKK2ludCBwcmludF9pbmZvKHZvaWQpCit7CisJcHJpbnRmKFhMT0FERVJfVkVSU0lPTik7CisKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCit0eXBlZGVmIGludCAoaW5pdF9mbmNfdCkodm9pZCk7CisKK2luaXRfZm5jX3QgKmluaXRfc2VxdWVuY2VbXSA9IHsKKwlib2FyZF9pbml0LAkJLyogYmFzaWMgYm9hcmQgZGVwZW5kZW50IHNldHVwICovCisjaWZkZWYgQ0ZHX1BSSU5URgorCXNlcmlhbF9pbml0LAkJLyogc2VyaWFsIGNvbW11bmljYXRpb25zIHNldHVwICovCisJcHJpbnRfaW5mbywKKyNlbmRpZgorCU5VTEwsCit9OworCit2b2lkIHN0YXJ0X29uZWJvb3Qodm9pZCkKK3sKKwlpbml0X2ZuY190ICoqaW5pdF9mbmNfcHRyOworCXVjaGFyICpidWY7CisKKwlmb3IgKGluaXRfZm5jX3B0ciA9IGluaXRfc2VxdWVuY2U7ICppbml0X2ZuY19wdHI7ICsraW5pdF9mbmNfcHRyKSB7CisJCWlmICgoKmluaXRfZm5jX3B0cikoKSAhPSAwKQorCQkJaGFuZygpOworCX0KKworCWJ1ZiA9ICh1Y2hhciAqKSBDRkdfTE9BRF9BRERSOworCisJaWYgKCFvbmVuYW5kX3JlYWRfYmxvY2soYnVmLCBPTkVOQU5EX1NUQVJUX0JMT0NLKSkKKwkJYnVmICs9IE9ORU5BTkRfQkxPQ0tfU0laRTsKKworCWlmIChidWYgPT0gKHVjaGFyICopQ0ZHX0xPQURfQUREUikKKwkJaGFuZygpOworCisJLyogZ28gcnVuIFUtQm9vdCBhbmQgbmV2ZXIgcmV0dXJuICovCisJcHJpbnRmKCJTdGFydGluZyBPUyBCb290bG9hZGVyLi4uXG4iKTsKKwkoKGluaXRfZm5jX3QgKilDRkdfTE9BRF9BRERSKSgpOworCisJLyogc2hvdWxkIG5ldmVyIGNvbWUgaGVyZSAqLworfQorCit2b2lkIGhhbmcodm9pZCkKK3sKKwkvKiBpZiBib2FyZF9oYW5nKCkgcmV0dXJucywgaGFuZ2UgaGVyZSAqLworCXByaW50ZigiWC1Mb2FkZXIgaGFuZ3NcbiIpOworCWZvciAoOzspOworfQpkaWZmIC0tZ2l0IGEvb25lbmFuZF9pcGwvb25lbmFuZF9pcGwuaCBiL29uZW5hbmRfaXBsL29uZW5hbmRfaXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjljNjY2OQotLS0gL2Rldi9udWxsCisrKyBiL29uZW5hbmRfaXBsL29uZW5hbmRfaXBsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA4IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfT05FTkFORF9JUExfSAorI2RlZmluZSBfT05FTkFORF9JUExfSAorCisjaW5jbHVkZSA8bGludXgvbXRkL29uZW5hbmRfcmVncy5oPgorCisjZGVmaW5lIE9ORU5BTkRfU1RBUlRfQkxPQ0sgICAgICAgICAgICAgMAorI2RlZmluZSBPTkVOQU5EX0JMT0NLX1NJWkUgICAgICAgICAgICAgIDIwNDgKKworI2lmbmRlZiBDRkdfUFJJTlRGCisjZGVmaW5lIHByaW50Zihmb3JtYXQsIGFyZ3MuLi4pCisjZW5kaWYKKworI2RlZmluZSBvbmVuYW5kX3JlYWR3KGEpICAgICAgICByZWFkdyhhKQorI2RlZmluZSBvbmVuYW5kX3dyaXRldyh2LCBhKSAgICB3cml0ZXcodiwgYSkKKworI2RlZmluZSBUSElTX09ORU5BTkQoYSkgICAgICAgICAoQ0ZHX09ORU5BTkRfQkFTRSArIChhKSkKKworI2RlZmluZSBSRUFEX0lOVEVSUlVQVCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCW9uZW5hbmRfcmVhZHcoVEhJU19PTkVOQU5EKE9ORU5BTkRfUkVHX0lOVEVSUlVQVCkpCisKKyNkZWZpbmUgT05FTkFORF9QQUdFX1NJWkUgICAgICAgICAgICAgICAgICAgICAgIDIwNDgKKworZXh0ZXJuIGludCBvbmVuYW5kX3JlYWRfYmxvY2sodW5zaWduZWQgY2hhciAqYnVmLCB1bG9uZyBibG9jayk7CisjZW5kaWYKZGlmZiAtLWdpdCBhL29uZW5hbmRfaXBsL29uZW5hbmRfcmVhZC5jIGIvb25lbmFuZF9pcGwvb25lbmFuZF9yZWFkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MzIyMAotLS0gL2Rldi9udWxsCisrKyBiL29uZW5hbmRfaXBsL29uZW5hbmRfcmVhZC5jCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1LTIwMDggU2Ftc3VuZyBFbGVjdHJvbmlzCisgKiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9zdHJpbmcuaD4KKworI2luY2x1ZGUgIm9uZW5hbmRfaXBsLmgiCisKKyNkZWZpbmUgb25lbmFuZF9ibG9ja19hZGRyZXNzKGJsb2NrKQkJKGJsb2NrKQorI2RlZmluZSBvbmVuYW5kX3NlY3Rvcl9hZGRyZXNzKHBhZ2UpCQkocGFnZSA8PCAyKQorI2RlZmluZSBvbmVuYW5kX2J1ZmZlcl9hZGRyZXNzKCkJCSgoMSA8PCAzKSA8PCA4KQorI2RlZmluZSBvbmVuYW5kX2J1ZmZlcnJhbV9hZGRyZXNzKGJsb2NrKQkoMCkKKworLyogcmVhZCBhIHBhZ2Ugd2l0aCBFQ0MgKi8KK3N0YXRpYyBpbmxpbmUgaW50IG9uZW5hbmRfcmVhZF9wYWdlKHVsb25nIGJsb2NrLCB1bG9uZyBwYWdlLCB1X2NoYXIgKmJ1ZikKK3sKKwl1bnNpZ25lZCBsb25nICpiYXNlOworCisjaWZuZGVmIF9fSEFWRV9BUkNIX01FTUNQWTMyCisJdW5zaWduZWQgaW50IG9mZnNldCwgdmFsdWU7CisJdW5zaWduZWQgbG9uZyAqcDsKKyNlbmRpZgorCisJb25lbmFuZF93cml0ZXcob25lbmFuZF9ibG9ja19hZGRyZXNzKGJsb2NrKSwKKwkJVEhJU19PTkVOQU5EKE9ORU5BTkRfUkVHX1NUQVJUX0FERFJFU1MxKSk7CisKKwlvbmVuYW5kX3dyaXRldyhvbmVuYW5kX3NlY3Rvcl9hZGRyZXNzKHBhZ2UpLAorCQlUSElTX09ORU5BTkQoT05FTkFORF9SRUdfU1RBUlRfQUREUkVTUzgpKTsKKworCW9uZW5hbmRfd3JpdGV3KG9uZW5hbmRfYnVmZmVyX2FkZHJlc3MoKSwKKwkJVEhJU19PTkVOQU5EKE9ORU5BTkRfUkVHX1NUQVJUX0JVRkZFUikpOworCisJb25lbmFuZF93cml0ZXcob25lbmFuZF9idWZmZXJyYW1fYWRkcmVzcyhibG9jayksCisJCVRISVNfT05FTkFORChPTkVOQU5EX1JFR19TVEFSVF9BRERSRVNTMikpOworCisJb25lbmFuZF93cml0ZXcoT05FTkFORF9JTlRfQ0xFQVIsIFRISVNfT05FTkFORChPTkVOQU5EX1JFR19JTlRFUlJVUFQpKTsKKworCW9uZW5hbmRfd3JpdGV3KE9ORU5BTkRfQ01EX1JFQUQsIFRISVNfT05FTkFORChPTkVOQU5EX1JFR19DT01NQU5EKSk7CisKKyNpZm5kZWYgX19IQVZFX0FSQ0hfTUVNQ1BZMzIKKwlwID0gKHVuc2lnbmVkIGxvbmcgKikgYnVmOworI2VuZGlmCisJYmFzZSA9ICh1bnNpZ25lZCBsb25nICopIChDRkdfT05FTkFORF9CQVNFICsgT05FTkFORF9EQVRBUkFNKTsKKworCXdoaWxlICghKFJFQURfSU5URVJSVVBUKCkgJiBPTkVOQU5EX0lOVF9SRUFEKSkKKwkJY29udGludWU7CisKKyNpZmRlZiBfX0hBVkVfQVJDSF9NRU1DUFkzMgorCS8qIDMyIGJ5dGVzIGJvdW5kYXJ5IG1lbW9yeSBjb3B5ICovCisJbWVtY3B5MzIoYnVmLCBiYXNlLCBPTkVOQU5EX1BBR0VfU0laRSk7CisjZWxzZQorCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgKE9ORU5BTkRfUEFHRV9TSVpFID4+IDIpOyBvZmZzZXQrKykgeworCQl2YWx1ZSA9ICooYmFzZSArIG9mZnNldCk7CisJCSpwKysgPSB2YWx1ZTsKKwl9CisjZW5kaWYKKworCXJldHVybiAwOworfQorCisjZGVmaW5lIE9ORU5BTkRfU1RBUlRfUEFHRQkJMQorI2RlZmluZSBPTkVOQU5EX1BBR0VTX1BFUl9CTE9DSwkJNjQKKworLyoqCisgKiBvbmVuYW5kX3JlYWRfYmxvY2sgLSBSZWFkIGEgYmxvY2sgZGF0YSB0byBidWYKKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzCisgKi8KK2ludCBvbmVuYW5kX3JlYWRfYmxvY2sodW5zaWduZWQgY2hhciAqYnVmLCB1bG9uZyBibG9jaykKK3sKKwlpbnQgcGFnZSwgb2Zmc2V0ID0gMDsKKworCS8qIE5PVEU6IHlvdSBtdXN0IHJlYWQgcGFnZSBmcm9tIHBhZ2UgMSBvZiBibG9jayAwICovCisJLyogcmVhZCB0aGUgYmxvY2sgcGFnZSBieSBwYWdlKi8KKwlmb3IgKHBhZ2UgPSBPTkVOQU5EX1NUQVJUX1BBR0U7CisJICAgIHBhZ2UgPCBPTkVOQU5EX1BBR0VTX1BFUl9CTE9DSzsgcGFnZSsrKSB7CisKKwkJb25lbmFuZF9yZWFkX3BhZ2UoYmxvY2ssIHBhZ2UsIGJ1ZiArIG9mZnNldCk7CisKKwkJb2Zmc2V0ICs9IE9ORU5BTkRfUEFHRV9TSVpFOworCX0KKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvcG9zdC90ZXN0cy5jIGIvcG9zdC90ZXN0cy5jCmluZGV4IDBjNDllMzIuLjY5OGY4NWMgMTAwNjQ0Ci0tLSBhL3Bvc3QvdGVzdHMuYworKysgYi9wb3N0L3Rlc3RzLmMKQEAgLTI0MSw4ICsyNDEsOCBAQAogICAgIHsKIAkiRUNDIHRlc3QiLAogCSJlY2MiLAotCSJUaGlzIHRlc3QgY2hlY2tzIEVDQyBmYWNpbGl0eSBvZiBtZW1vcnkuIiwKLQlQT1NUX1JPTSB8IFBPU1RfQUxXQVlTLAorCSJUaGlzIHRlc3QgY2hlY2tzIHRoZSBFQ0MgZmFjaWxpdHkgb2YgbWVtb3J5LiIsCisJUE9TVF9ST00gfCBQT1NUX0FMV0FZUyB8IFBPU1RfUFJFUkVMLAogCSZlY2NfcG9zdF90ZXN0LAogCU5VTEwsCiAJTlVMTCwK