ZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9jb21tb24vcGNpX3BhcnRzLmggYi9ib2FyZC9tcGwvY29tbW9uL3BjaV9wYXJ0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NDU4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9tcGwvY29tbW9uL3BjaV9wYXJ0cy5oCkBAIC0wLDAgKzEsMTkyIEBACisgLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMQorICogRGVuaXMgUGV0ZXIsIE1QTCBBRyBTd2l0emVybGFuZCwgZC5wZXRlckBtcGwuY2gKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqCisgKi8KKyNpZm5kZWYgX1BDSV9QQVJUU19IXworI2RlZmluZSBfUENJX1BBUlRTX0hfCisKKworLyogQm9hcmQgc3BlY2lmaWMgZmlsZSBjb250YWluaW5nOgorICogLSBQQ0kgTWVtb3J5IE1hcHBpbmcKKyAqIC0gUENJIElPIE1hcHBpbmcKKyAqIC0gUENJIEludGVycnVwdCBNYXBwaW5nCisgKi8KKworLyogUElQNDA1IFBDSSBJTlQgUm91dGluZzoKKyAqICAgICAgICAgICAgICAgICAgICAgIElSUTAgIFZFQ1RPUgorICogUElYWDQgSURTRUwgID0gQUQxNiAgSU5UQSMgIDI4IChGdW5jdGlvbiAyIFVTQiBpcyBJTlREIyA9IDMxKQorICogVkdBICAgSURTRUwgID0gQUQxNyAgSU5UQiMgIDI5CisgKiBTQ1NJICBJRFNFTCAgPSBBRDE4ICBJTlRDIyAgMzAKKyAqIFBDMTA0IElEU0VMMCA9IEFEMjAgIElOVEEjICAyOAorICogUEMxMDQgSURTRUwxID0gQUQyMSAgSU5UQiMgIDI5CisgKiBQQzEwNCBJRFNFTDIgPSBBRDIyICBJTlRDIyAgMzAKKyAqIFBDMTA0IElEU0VMMyA9IEFEMjMgIElOVEQjICAzMQorICoKKyAqIGJ1c2RldmZ1bmMgPSBFWFhYIFhYWFggQkJCQiBCQkJCIEREREQgREZGRiBSUlJSIFJSMDAKKyAqICAgICAgICAgICAgICBeICAgICAgICAgXiAgICAgICAgIF4gICAgIF4gICBeCisgKiAgICAgICAgICAgICAzMSAgICAgICAgMjMgICAgICAgIDE1ICAgIDEwICAgNworICogRSA9IEVuYWJsZWQKKyAqIEIgPSBCdXNzbnVtYmVyCisgKiBEID0gRGV2aWNlbnVtYmVyIChEZXZpY2UwID0gQUQxMCkKKyAqIEYgPSBGdW5jdGlvbm51bWJlcgorICogUiA9IFJlZ2lzdGVybnVtYmVyCisgKgorICogRGV2aWNlID0gKGJ1c2RldmZ1bmM+PjExKSArIDEwCisgKiBWZWN0b3IgPSBkZXZpY2VudW1iZXIgJSA0ICsgMjgKKyAqCisgKi8KKyNkZWZpbmUgUENJX0hJR0hFU1RfT05fQk9BUkRfSUQJMTkKKy8qI2RlZmluZSBQQ0lfREVWX05VTUJFUih4KQkoKCh4Pj4xMSkgJiAweDFmKSArIDEwKSAqLworI2RlZmluZSBQQ0lfSVJRX1ZFQ1RPUih4KQkoKFBDSV9ERVYoeCkgKyAxMCkgJSA0KSArIDI4CisKKworCisvKiBQQ0kgRGV2aWNlIExpc3QgZm9yIFBJUDQwNSAqLworCisvKiBNYXBwaW5nOgorICogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqIKYgUENJIE1lbUFkZHIgfCBQQ0kgSU9BZGRyIHwgTG9jYWwgQWRkciB8IERldmljZSAvIEZ1bmN0aW9uICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgMHgwMDAwMDAwMCB8ICAgICAgICAgICAgfCAweEEwMDAwMDAwIHwgSVNBIE1lbW9yeSAoaGFyZCB3aXJlZCkgICAgICAgIHwKKyAqIHwgIDB4MDBGRkZGRkYgfCAgICAgICAgICAgIHwgMHhBMEZGRkZGRiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICB8IDB4MDAwMDAwMDAgfCAweEU4MDAwMDAwIHwgSVNBIElPIChoYXJkIHdpcmVkKSAgICAgICAgICAgIHwKKyAqIHwgICAgICAgICAgICAgfCAweDAwMDBGRkZGIHwgMHhFODAwRkZGRiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgMHg4MDAwMDAwMCB8ICAgICAgICAgICAgfCAweDgwMDAwMDAwIHwgVkdBIENvbnRyb2xsZXIgTWVtb3J5ICAgICAgICAgIHwKKyAqIHwgIDB4ODBGRkZGRkYgfCAgICAgICAgICAgIHwgMHg4MEZGRkZGRiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgMHg4MTAwMDAwMCB8ICAgICAgICAgICAgfCAweDgxMDAwMDAwIHwgU0NTSSBDb250cm9sbGVyIE1lbW9yeSAgICAgICAgIHwKKyAqIHwgIDB4ODFGRkZGRkYgfCAgICAgICAgICAgIHwgMHg4MUZGRkZGRiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICovCisKK3N0cnVjdCBwY2lfcGlwNDA1X2NvbmZpZ19lbnRyeSB7CisJaW50IAkJaW5kZXg7IAkvKiBhZGRyZXNzICovCisJdW5zaWduZWQgbG9uZyAJdmFsOwkvKiB2YWx1ZSAqLworCWludCAJCXdpZHRoOwkvKiBkYXRhIHNpemUgKi8KK307CisKK2V4dGVybiB2b2lkIHBjaV9waXA0MDVfd3JpdGVfcmVncyhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKiwKKwkJCQkgIHBjaV9kZXZfdCwKKwkJCQkgIHN0cnVjdCBwY2lfY29uZmlnX3RhYmxlICopOworCisvKiBQSUlYNCBJU0EgQnJpZGdlIEZ1bmN0aW9uIDAgKi8KK3N0YXRpYyBzdHJ1Y3QgcGNpX3BpcDQwNV9jb25maWdfZW50cnkgcGlpeDRfaXNhX2JyaWRnZV9mMFtdID0geworCXtQQ0lfQ0ZHX1BJSVg0X1NFUklSUSwJMHhEMCwJCTF9LCAvKiBlbmFibGUgQ29udGlub3VzIFNFUklSUSBQaW4gKi8KKwl7UENJX0NGR19QSUlYNF9HRU5DRkcsCTB4MDAwMTAwNDEsCTR9LCAvKiBlbmFibGUgU0VSSVJRcywgSVNBLCBQTlAJKi8KKwl7UENJX0NGR19QSUlYNF9UT00sCTB4RkUsCQkxfSwgLyogVG9wIG9mIE1lbW9yeQkJKi8KKwl7UENJX0NGR19QSUlYNF9YQkNTLAkweDAyQzQsCQkyfSwgLyogZGlzYWJsZSBhbGwgcGVyaSBDUwkqLworCXtQQ0lfQ0ZHX1BJSVg0X1JUQ0NGRywJMHgyMSwJCTF9LCAvKiBlbmFibGUgUlRDCSAgIAkqLworI2lmIGRlZmluZWQoQ09ORklHX1BJUDQwNSkKKwl7UENJX0NGR19QSUlYNF9NQkRNQSwJMHg4MiwJCTF9LCAvKiBzZXQgTUJETUEwIHRvIERNQSAyICAgCSovCisJe1BDSV9DRkdfUElJWDRfTUJETUErMSwJMHg4MywJCTF9LCAvKiBzZXQgTUJETUExIHRvIERNQSAzICAgCSovCisjZW5kaWYKKwl7UENJX0NGR19QSUlYNF9ETEMsCTB4MCwJCTF9LCAvKiBkaXNhYmxlIHBhc3NpdmUgcmVsZWFzZSBmZWF0dXJlICovCisJeyB9CQkJCSAgICAJICAgIC8qIGVuZCBvZiBkZXZpY2UgdGFibGUJKi8KK307CisKKy8qIFBJSVg0IElERSBDb250cm9sbGVyIEZ1bmN0aW9uIDEgKi8KK3N0YXRpYyBzdHJ1Y3QgcGNpX3BpcDQwNV9jb25maWdfZW50cnkgcGlpeDRfaWRlX2NudHJsX2YxW10gPSB7CisJe1BDSV9DT01NQU5ELAkJMHgwMDAxLAkJMn0sIC8qIGVuYWJsZSBJTyBhY2Nlc3MgCSovCisJe1BDSV9DRkdfUElJWDRfSURFVElNLAkweDgwMDA4MDAwLAk0fSwgLyogZW5hYmxlIEJvdGggSURFIGNoYW5uZWxzCSovCisJeyB9CQkJCQkgICAgLyogZW5kIG9mIGRldmljZSB0YWJsZSAJKi8KK307CisKKy8qIFBJSVg0IFVTQiBDb250cm9sbGVyIEZ1bmN0aW9uIDIgKi8KK3N0YXRpYyBzdHJ1Y3QgcGNpX3BpcDQwNV9jb25maWdfZW50cnkgcGlpeDRfdXNiX2NudHJsX2YyW10gPSB7CisJe1BDSV9JTlRFUlJVUFRfTElORSwJMzEsCQkxfSwgLyogSW50IHZlY3RvciA9IDMxIAkJKi8KKwl7UENJX0JBU0VfQUREUkVTU180LAkweDAwMDBFMDAxLAk0fSwgLyogU2V0IElPIEFkZHJlc3MgdG8gMHhlMDAwIHRvIDB4ZTAxRiAqLworCXtQQ0lfTEFURU5DWV9USU1FUiwJMHg4MCwJCTF9LCAvKiBMYXRlbmN5IFRpbWVyIDB4ODAgCSovCisJezB4QzAsCQkJMHgyMDAwLAkJMn0sIC8qIExlZ2FjeSBzdXBwb3J0IAkJKi8KKwl7UENJX0NPTU1BTkQsCQkweDAwMDUsCQkyfSwgLyogZW5hYmxlIElPIGFjY2VzcyBhbmQgTWFzdGVyICovCisJeyB9CQkJCQkgICAgLyogZW5kIG9mIGRldmljZSB0YWJsZSAJKi8KK307CisKKy8qIFBJSVg0IFBvd2VyIE1hbmFnZW1lbnQgRnVuY3Rpb24gMyAqLworc3RhdGljIHN0cnVjdCBwY2lfcGlwNDA1X2NvbmZpZ19lbnRyeSBwaWl4NF9wbW1fY250cmxfZjNbXSA9IHsKKwl7UENJX0NPTU1BTkQsCQkweDAwMDEsCQkyfSwgLyogZW5hYmxlIElPIGFjY2VzcyAJKi8KKwl7UENJX0NGR19QSUlYNF9QTUFCLAkweDAwMDA0MDAwLAk0fSwgLyogc2V0IFBNQkEgdG8gInZhbGlkIiB2YWx1ZSAqLworCXtQQ0lfQ0ZHX1BJSVg0X1BNTUlTQywJMHgwMSwJCTF9LCAvKiBlbmFibGUgUE1CQSBJTyBhY2Nlc3MJKi8KKwl7UENJX0NGR19QSUlYNF9TTUJCQSwJMHgwMDAwNTAwMCwJNH0sIC8qIHNldCBTTUJCQSB0byAidmFsaWQiIHZhbHVlICovCisJeyB9CQkJCQkgICAgLyogZW5kIG9mIGRldmljZSB0YWJsZSAJKi8KK307CisvKiBQUEM0MDUgRHVtbXkgb25seSB1c2VkIHRvIHByZXZlbnQgYXV0b3NldHVwIG9uIHRoaXMgaG9zdCBicmlkZ2UgKi8KK3N0YXRpYyBzdHJ1Y3QgcGNpX3BpcDQwNV9jb25maWdfZW50cnkgaWJtNDA1X2R1bW15W10gPSB7CisJeyB9CQkJCSAgICAJICAgIC8qIGVuZCBvZiBkZXZpY2UgdGFibGUgCSovCit9OworCit2b2lkIHBjaV80MDVncF9zZXR1cF92Z2Eoc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlLCBwY2lfZGV2X3QgZGV2LAorCQkJIHN0cnVjdCBwY2lfY29uZmlnX3RhYmxlICplbnRyeSk7CisKKworc3RhdGljIHN0cnVjdCBwY2lfY29uZmlnX3RhYmxlIHBjaV9waXA0MDVfY29uZmlnX3RhYmxlW109eworCXtQQ0lfVkVORE9SX0lEX0lCTSwgCQkJLyogNDA1IGR1bW15ICovCisJIFBDSV9ERVZJQ0VfSURfSUJNXzQwNUdQLAorCSBQQ0lfQU5ZX0lELAorCSBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLAorCSBwY2lfcGlwNDA1X3dyaXRlX3JlZ3MsIHsodW5zaWduZWQgbG9uZykgaWJtNDA1X2R1bW15fX0sCisKKwl7UENJX1ZFTkRPUl9JRF9JTlRFTCwgCQkJLyogUElJWDQgSVNBIEJyaWRnZSBGdW5jdGlvbiAwICovCisJIFBDSV9ERVZJQ0VfSURfSU5URUxfODIzNzFBQl8wLAorCSBQQ0lfQU5ZX0lELAorCSBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLAorCSBwY2lfcGlwNDA1X3dyaXRlX3JlZ3MsIHsodW5zaWduZWQgbG9uZykgcGlpeDRfaXNhX2JyaWRnZV9mMH19LAorCisJe1BDSV9WRU5ET1JfSURfSU5URUwsCQkJLyogUElJWDQgSURFIENvbnRyb2xsZXIgRnVuY3Rpb24gMSAqLworCSBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyMzcxQUIsCisJIFBDSV9BTllfSUQsCisJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDEsCisJIHBjaV9waXA0MDVfd3JpdGVfcmVncywgeyh1bnNpZ25lZCBsb25nKSBwaWl4NF9pZGVfY250cmxfZjF9fSwKKworCXtQQ0lfVkVORE9SX0lEX0lOVEVMLAkJCS8qIFBJSVg0IFVTQiBDb250cm9sbGVyIEZ1bmN0aW9uIDIgKi8KKwkgUENJX0RFVklDRV9JRF9JTlRFTF84MjM3MUFCXzIsCisJIFBDSV9BTllfSUQsCisJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDIsCisJIHBjaV9waXA0MDVfd3JpdGVfcmVncywgeyh1bnNpZ25lZCBsb25nKSBwaWl4NF91c2JfY250cmxfZjJ9fSwKKworCXtQQ0lfVkVORE9SX0lEX0lOVEVMLAkJCS8qIFBJSVg0IFVTQiBDb250cm9sbGVyIEZ1bmN0aW9uIDMgKi8KKwkgUENJX0RFVklDRV9JRF9JTlRFTF84MjM3MUFCXzMsCisJIFBDSV9BTllfSUQsCisJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDMsCisJIHBjaV9waXA0MDVfd3JpdGVfcmVncywgeyh1bnNpZ25lZCBsb25nKSBwaWl4NF9wbW1fY250cmxfZjN9fSwKKworCXtQQ0lfQU5ZX0lELAorCSBQQ0lfQU5ZX0lELAorCSBQQ0lfQ0xBU1NfRElTUExBWV9WR0EsCisJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsCisJIHBjaV80MDVncF9zZXR1cF92Z2F9LAorCisJe1BDSV9BTllfSUQsCisJIFBDSV9BTllfSUQsCisJIFBDSV9DTEFTU19OT1RfREVGSU5FRF9WR0EsCisJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsCisJIHBjaV80MDVncF9zZXR1cF92Z2F9LAorCisJeyB9Cit9OworI2VuZGlmIC8qIF9QQ0lfUEFSVFNfSF8gKi8KKworCisKKworCg==