ZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy91c2IuaCBiL2Jvb3QvY29tbW9uL3NyYy9sb2FkZXIvZHJpdmVycy91c2IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjQ2YmU0Ci0tLSAvZGV2L251bGwKKysrIGIvYm9vdC9jb21tb24vc3JjL2xvYWRlci9kcml2ZXJzL3VzYi5oCkBAIC0wLDAgKzEsNjI4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAxOTk4IFRoZSBOZXRCU0QgRm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIGNvbnRyaWJ1dGVkIHRvIFRoZSBOZXRCU0QgRm91bmRhdGlvbgorICogYnkgTGVubmFydCBBdWd1c3Rzc29uIChsZW5uYXJ0QGF1Z3VzdHNzb24ubmV0KSBhdAorICogQ2FybHN0ZWR0IFJlc2VhcmNoICYgVGVjaG5vbG9neS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgorICogICAgICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE5ldEJTRAorICogICAgICAgIEZvdW5kYXRpb24sIEluYy4gYW5kIGl0cyBjb250cmlidXRvcnMuCisgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBOZXRCU0QgRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5EIENPTlRSSUJVVE9SUworICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyogTW9kaWZpZWQgYnkgU3lub3BzeXMsIEluYywgMTIvMTIvMjAwNyAqLworCisKKyNpZm5kZWYgX1VTQl9IXworI2RlZmluZSBfVVNCX0hfCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlICJ0eXBlLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gVF9MQU5HSURfREVTQ1JJUFRPUgorI2RlZmluZSBMQU5HSURfVVNfRU5HTElTSAkJCQkJMHgwNDA5CisKKy8vIFRfU1RSSU5HX0RFU0NSSVBUT1IKKyNkZWZpbmUgTUFYX1NUUklOR19MRU5HVEgJCQkJCSgweDIwKS8vKDB4MTAwKQorCit0eXBlZGVmIGVudW0KK3sKKworIE5FRURfRU5VTSA9IDAsCisgRE9OT1RfTkVFRF9FTlVNCisgCit9VF9VU0JfRU5VTTsKKworLyp1c2K0q8rkwODQzSovCit0eXBlZGVmIGVudW0KK3sKKyAgICBUUkFfQ1RSTCA9IDAsCisgICAgVFJBX0JVTEssCisgICAgVFJBX0lOVFIsCisgICAgVFJBX0lTTworfVRfVVNCX1RSQU47CisKKy8qIFVTQr/Y1sa0q8rkw/zB7iovCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZVEUgICAgIGJtUmVxdWVzdFR5cGU7CisgICAgQllURSAgICAgYlJlcXVlc3Q7CisgICAgV09SRDE2ICAgICB3VmFsdWU7CisgICAgV09SRDE2ICAgICB3SW5kZXg7CisgICAgV09SRDE2ICAgICB3TGVuZ3RoOworfVRfQ1RSTF9DT01NQU5EOworCisKKy8vILbLtePK/b7dsPy089ChCit0eXBlZGVmIGVudW0KK3sKKwlDT05UUk9MXzgJCT04LAorCUNPTlRST0xfMTYJCT0xNiwKKwlDT05UUk9MXzMyCQk9MzIsCisJQ09OVFJPTF82NAkJPTY0LAorCisJQlVMS184CQkJPTgsCisJQlVMS18xNgkJCT0xNiwKKwlCVUxLXzMyCQkJPTMyLAorCUJVTEtMXzY0CQk9NjQJCit9VF9FUF9QS1RfU0laRTsKKworCisvLyBDTEVBUl9GRUFUVVJFLCBTRVRfRkVBVFVSRQorI2RlZmluZSBGRUFUVVJFX0RFVklDRV9SRU1PVEVfV0FLRVVQCQkoMHgxKQorI2RlZmluZSBGRUFUVVJFX0VORFBPSU5UX0hBTFQJCQkJKDB4MCkKKyNkZWZpbmUgRkVBVFVSRV9URVNUX01PREUJCQkJCSgweDIpCisKKy8vILj5vt3KtbzKx+m/9tDeuMQKKyNkZWZpbmUJVVNCX1ZFTkRPUl9JRAkJCSAgICAgICAgICAgICAgICAgICAgICAoMHgxOUQyKQkvLyAy19a92gorI2RlZmluZSBVU0JfUFJPRFVDVF9JRAkJCSAgICAgICAgICAgICAgICAgICAgICAoMHgwMjU2KQkvLyAy19a92gorI2RlZmluZSBQUk9EVUNUX1JFTEVBU0VfTlVNQkVSCSAgICAgICAgICAgICAgICgweDc1MTApCS8vIDLX1r3aCisKKyNkZWZpbmUgVkVSRE9SX1NQRUNJRklDCQkJKDB4ZmYpCisKKyNkZWZpbmUgRVAwX1BBQ0tFVF9TSVpFIENPTlRST0xfNjQKKyNkZWZpbmUgRVAxX1BBQ0tFVF9TSVpFIDY0CisjZGVmaW5lIEVQWF9QQUNLRVRfU0laRSA2NAorCisjZGVmaW5lIEVQX0ZPUl9JTiAyCisjZGVmaW5lIEVQX0ZPUl9PVVQgMworCisKKy8qdXNiyeixuLXExt+49te0zKwqLwordHlwZWRlZiBlbnVtCit7CisgICAgZVVTQl9BVFRBQ0hFRCA9IDAsCisgICAgZVVTQl9QT1dFUkVELAorICAgIGVVU0JfREVGQVVMVCwKKyAgICBlVVNCX1NVU1BFTkQsCisgICAgZVVTQl9SVVNVTUUsCisgICAgZVVTQl9BRERSRVNTLCAgICAKKyAgICBlVVNCX0NPTkZJRworfUVfVVNCX1NUQVRFOworCisKKy8vILHq17zH68fzw/zB7gordHlwZWRlZiBlbnVtCit7CisJR0VUX1NUQVRVUyAgICAgICAgICA9MHgwLAorCUNMRUFSX0ZFQVRVUkUgICAgICAgPTB4MSwKKwlTRVRfRkVBVFVSRSAgICAgICAgID0weDMsCisJU0VUX0FERFJFU1MgICAgICAgICA9MHg1LAorCUdFVF9ERVNDUklQVE9SICAgICAgPTB4NiwKKwlTRVRfREVTQ1JJUFRPUiAgICAgID0weDcsCisJR0VUX0NPTkZJR1VSQVRJT04gICA9MHg4LAorCVNFVF9DT05GSUdVUkFUSU9OICAgPTB4OSwKKwlHRVRfSU5URVJGQUNFICAgICAgID0weGEsCisJU0VUX0lOVEVSRkFDRSAgICAgICA9MHhiLAorCVNZTkNIX0ZSQU1FICAgICAgICAgPTB4YworfVRfU1RBTkRBUkRfUkVRVVNUOworCisKKy8vIMPoyva3+8Dg0M0KK3R5cGVkZWYgZW51bQoreworICAgIERFVklDRV9ERVNDUklQVE9SICAgPSAweDAxLAorICAgIENPTkZJR19ERVNDUklQVE9SICAgPSAweDAyLAorICAgIFNUUklOR19ERVNDUklQVE9SICAgPSAweDAzLAorICAgIElOVEVSRkFDRV9ERVNDUklQVE9SPSAweDA0LAorICAgIEVORFBPSU5UX0RFU0NSSVBUT1IgPSAweDA1Cit9IFRfREVTQ1JJUFRPUlNfVFlQRTsKKworLy8gVVNC1qez1rXEzNjV97ao0uUKK3R5cGVkZWYgZW51bQoreworCURFVklDRV9SRU1PVEVfV0FLRVVQCT0xLAkJLy8gRGV2aWNlIAorCUVORFBPSU5UX0hBTFQgCQkJPTAsIAkvLyBFbmRwb2ludCAKKwlURVNUX01PREUgCQkJCT0yCQkvL0RldmljZSAKK31UX0ZFQVRVUkU7CisKKworLy8gYm1BdHRyaWJ1dGVzCisjZGVmaW5lIEFUVFJfRDcJCQkJCQkgICAgICAgKDB4MDEgPDw3KQkJLy8gsdjQ686qMQorI2RlZmluZSBBVFRSX1NFTEZfUE9XRVJFRAkJCSAgICAgICAoMHgwMSA8PDYpCQkvLyDX1LmptecKKyNkZWZpbmUgQVRUUl9TVVBQT1JUX1JFTU9URV9XQUtFVVAJKDB4MDEgPDw1KQkJLy8g1LazzLu90NEKKworLy8gYk1heFBvd2VyCisjZGVmaW5lIFBPV0VSX01BKHBvd2VyKQkJCQkgICAgICAgIChwb3dlcj4+MSkJCS8vILWlzrs6IDJtQQorCisjZGVmaW5lIEVQX0FERFJFU1NfRElSRUNUSU9OX01BU0sJICAgICAgICAoMHgwMSA8PDcpCS8vRGlyZWN0aW9uLCBpZ25vcmVkIGZvciBjb250cm9sIGVuZHBvaW50cworI2RlZmluZSBFUF9BRERSRVNTX0RJUkVDVElPTl9JTgkJICgweDAxIDw8NykKKyNkZWZpbmUgRVBfQUREUkVTU19ESVJFQ1RJT05fT1VUCSAgICAgICAgICgweDAgICA8PDcpCisKKworLy9ibUF0dHJpYnV0ZXMKKyNkZWZpbmUgRVBfQVRUUl9UUkFOU0ZFUl9UWVBFX01BU0sJCSAoMHgwMyA8PDApCisjZGVmaW5lIEVQX0FUVFJfVFJBTlNGRVJfVFlQRV9DT05UUk9MCSAgICAgICAgKDAgICAgIDw8MCkKKyNkZWZpbmUgRVBfQVRUUl9UUkFOU0ZFUl9UWVBFX0lTTwkJICAgICAgICAoMSAgICAgPDwwKQorI2RlZmluZSBFUF9BVFRSX1RSQU5TRkVSX1RZUEVfQlVMSwkJICgyICAgICA8PDApCisjZGVmaW5lIEVQX0FUVFJfVFJBTlNGRVJfVFlQRV9JTlRFUlJVUFQJICgzICAgICA8PDApCisKKy8vzayyvbSryuS2y7XjLCDX7rTzMTAyM9fWvdosIMLW0a+85Lj0LS0tMl4oYkludGVydmFsIC0xKdahCisjZGVmaW5lIE1BWF9JU09fUEtUCQkJKDI1NikJLy/X7rTzMTAyM9fWvdoKKyNkZWZpbmUgTUFYX0lTT19SX0lOVEVSVkFMCSgxKQkJLy/C1tGvvOS49C0tLTJeKGJJbnRlcnZhbCAtMSnWoQorI2RlZmluZSBNQVhfSVNPX1RfSU5URVJWQUwJKDEpCQkvL8LW0a+85Lj0LS0tMl4oYkludGVydmFsIC0xKdahCisKKy8vVF9TVFJJTkdfREVTQ1JJUFRPUiwgYXNjaWkgdG8gdW5pY29kZS0tLSoyLCBsZW5ndGgsdHlwZS0tKzIKKyNkZWZpbmUgU1RSSU5HX0RFU0NSSVBUT1JfU0laRShzaXplKSAgICAJKChzaXplKjIpKzIpCisvL9equ7thc2NpadfWt/vOqnVuaWNvZGXX1rf7CisjZGVmaW5lIFVOSUNPREUoYXNjaWkpCQkJCQkJCWFzY2lpLDB4MDAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiB1aW50OF90IHVCeXRlOwordHlwZWRlZiB1aW50OF90IHVXb3JkWzJdOwordHlwZWRlZiB1aW50OF90IHVEV29yZFs0XTsKKworCisjZGVmaW5lIFVUX0dFVF9UWVBFKGEpICgoYSkgJiAweDYwKQorI2RlZmluZSBVVF9TVEFOREFSRAkJMHgwMAorI2RlZmluZSBVVF9DTEFTUwkJMHgyMAorI2RlZmluZSBVVF9WRU5ET1IJCTB4NDAKKworI2RlZmluZSBVVF9HRVRfUkVDSVBJRU5UKGEpICgoYSkgJiAweDFmKQorI2RlZmluZSBVVF9ERVZJQ0UJCTB4MDAKKyNkZWZpbmUgVVRfSU5URVJGQUNFCQkweDAxCisjZGVmaW5lIFVUX0VORFBPSU5UCQkweDAyCisjZGVmaW5lIFVUX09USEVSCQkweDAzCisvKiBSZXF1ZXN0cyAqLworI2RlZmluZSAgVVJfR0VUX1NUQVRVUwkJMHgwMAorI2RlZmluZSAgVVNUQVRfU1RBTkRBUkRfU1RBVFVTICAweDAwCisjZGVmaW5lICBVUl9DTEVBUl9GRUFUVVJFCTB4MDEKKyNkZWZpbmUgIFVSX1NFVF9GRUFUVVJFCQkweDAzCisjZGVmaW5lICBVUl9TRVRfQUREUkVTUwkJMHgwNQorI2RlZmluZSAgVVJfR0VUX0RFU0NSSVBUT1IJMHgwNgorI2RlZmluZSBVUl9TRVRfQ09ORklHCQkweDA5CisvKiBGZWF0dXJlIG51bWJlcnMgKi8KKyNkZWZpbmUgVUZfRU5EUE9JTlRfSEFMVAkwCisKKworCisKKworI2RlZmluZSBVRV9HRVRfRElSKGEpCSgoYSkgJiAweDgwKQorI2RlZmluZSBVRV9TRVRfRElSKGEsZCkJKChhKSB8ICgoKGQpJjEpIDw8IDcpKQorI2RlZmluZSBVRV9ESVJfSU4JMHg4MAorI2RlZmluZSBVRV9ESVJfT1VUCTB4MDAKKyNkZWZpbmUgVUVfQUREUgkJMHgwZgorI2RlZmluZSBVRV9HRVRfQUREUihhKQkoKGEpICYgVUVfQUREUikKKworCisjZGVmaW5lIFVTQl9NQVhfU1RSSU5HX0xFTiAxMjgKKyNkZWZpbmUgVVNCX0xBTkdVQUdFX1RBQkxFIDAJLyogIyBvZiB0aGUgc3RyaW5nIGxhbmd1YWdlIGlkIHRhYmxlICovCisKKy8qIEh1YiBzcGVjaWZpYyByZXF1ZXN0ICovCisjZGVmaW5lIFVSX0dFVF9CVVNfU1RBVEUJMHgwMgorI2RlZmluZSBVUl9DTEVBUl9UVF9CVUZGRVIJMHgwOAorI2RlZmluZSBVUl9SRVNFVF9UVAkJMHgwOQorI2RlZmluZSBVUl9HRVRfVFRfU1RBVEUJCTB4MGEKKyNkZWZpbmUgVVJfU1RPUF9UVAkJMHgwYgorCisvKiBIdWIgZmVhdHVyZXMgKi8KKyNkZWZpbmUgVUhGX0NfSFVCX0xPQ0FMX1BPV0VSCTAKKyNkZWZpbmUgVUhGX0NfSFVCX09WRVJfQ1VSUkVOVAkxCisjZGVmaW5lIFVIRl9QT1JUX0NPTk5FQ1RJT04JMAorI2RlZmluZSBVSEZfUE9SVF9FTkFCTEUJCTEKKyNkZWZpbmUgVUhGX1BPUlRfU1VTUEVORAkyCisjZGVmaW5lIFVIRl9QT1JUX09WRVJfQ1VSUkVOVAkzCisjZGVmaW5lIFVIRl9QT1JUX1JFU0VUCQk0CisjZGVmaW5lIFVIRl9QT1JUX0wxCQk1CisjZGVmaW5lIFVIRl9QT1JUX1BPV0VSCQk4CisjZGVmaW5lIFVIRl9QT1JUX0xPV19TUEVFRAk5CisjZGVmaW5lIFVIRl9QT1JUX0hJR0hfU1BFRUQJMTAKKyNkZWZpbmUgVUhGX0NfUE9SVF9DT05ORUNUSU9OCTE2CisjZGVmaW5lIFVIRl9DX1BPUlRfRU5BQkxFCTE3CisjZGVmaW5lIFVIRl9DX1BPUlRfU1VTUEVORAkxOAorI2RlZmluZSBVSEZfQ19QT1JUX09WRVJfQ1VSUkVOVAkxOQorI2RlZmluZSBVSEZfQ19QT1JUX1JFU0VUCTIwCisjZGVmaW5lIFVIRl9DX1BPUlRfTDEJCTIzCisjZGVmaW5lIFVIRl9QT1JUX1RFU1QJCTIxCisjZGVmaW5lIFVIRl9QT1JUX0lORElDQVRPUgkyMgorCisjZGVmaW5lIFVIRF9QV1IJCQkweDAwMDMKKyNkZWZpbmUgIFVIRF9QV1JfR0FOR0VECQkweDAwMDAKKyNkZWZpbmUgIFVIRF9QV1JfSU5ESVZJRFVBTAkweDAwMDEKKyNkZWZpbmUgIFVIRF9QV1JfTk9fU1dJVENICTB4MDAwMgorI2RlZmluZSBVSERfQ09NUE9VTkQJCTB4MDAwNAorI2RlZmluZSBVSERfT0MJCQkweDAwMTgKKyNkZWZpbmUgIFVIRF9PQ19HTE9CQUwJCTB4MDAwMAorI2RlZmluZSAgVUhEX09DX0lORElWSURVQUwJMHgwMDA4CisjZGVmaW5lICBVSERfT0NfTk9ORQkJMHgwMDEwCisjZGVmaW5lIFVIRF9UVF9USElOSwkJMHgwMDYwCisjZGVmaW5lICBVSERfVFRfVEhJTktfOAkJMHgwMDAwCisjZGVmaW5lICBVSERfVFRfVEhJTktfMTYJMHgwMDIwCisjZGVmaW5lICBVSERfVFRfVEhJTktfMjQJMHgwMDQwCisjZGVmaW5lICBVSERfVFRfVEhJTktfMzIJMHgwMDYwCisjZGVmaW5lIFVIRF9QT1JUX0lORAkJMHgwMDgwCisjZGVmaW5lIFVIRF9QV1JPTl9GQUNUT1IgMgorI2RlZmluZSBVSERfTk9UX1JFTU9WKGRlc2MsIGkpICAoKChkZXNjKS0+RGV2aWNlUmVtb3ZhYmxlWyhpKS84XSA+PiAoKGkpICUgOCkpICYgMSkKKyAgICAKKyNkZWZpbmUgVVNCX0hVQl9ERVNDUklQVE9SX1NJWkUgOSAvKiBpbmNsdWRlcyBkZXByZWNhdGVkIFBvcnRQb3dlckN0cmxNYXNrICovCisKKworLyogT1RHIGZlYXR1cmUgc2VsZWN0b3JzICovCisjZGVmaW5lIFVPVEdfQl9ITlBfRU5BQkxFCTMKKyNkZWZpbmUgVU9UR19BX0hOUF9TVVBQT1JUCTQKKyNkZWZpbmUgVU9UR19BX0FMVF9ITlBfU1VQUE9SVAk1CisKKy8qIERldmljZSBzdGF0dXMgZmxhZ3MgKi8KKyNkZWZpbmUgVURTX1NFTEZfUE9XRVJFRAkJMHgwMDAxCisjZGVmaW5lIFVEU19SRU1PVEVfV0FLRVVQCQkweDAwMDIKKy8qIEVuZHBvaW50IHN0YXR1cyBmbGFncyAqLworI2RlZmluZSBVRVNfSEFMVAkJCTB4MDAwMQorCisKKworI2RlZmluZSBVSFNfTE9DQUxfUE9XRVIJICAgIDB4MDAwMQorI2RlZmluZSBVSFNfT1ZFUl9DVVJSRU5UCQkweDAwMDIKKworCisKKyNkZWZpbmUgVVBTX0NVUlJFTlRfQ09OTkVDVF9TVEFUVVMJMHgwMDAxCisjZGVmaW5lIFVQU19QT1JUX0VOQUJMRUQJCTB4MDAwMgorI2RlZmluZSBVUFNfU1VTUEVORAkJCTB4MDAwNAorI2RlZmluZSBVUFNfT1ZFUkNVUlJFTlRfSU5ESUNBVE9SCTB4MDAwOAorI2RlZmluZSBVUFNfUkVTRVQJCQkweDAwMTAKKyNkZWZpbmUgVVBTX1BPUlRfUE9XRVIJCQkweDAxMDAKKyNkZWZpbmUgVVBTX0xPV19TUEVFRAkJCTB4MDIwMAorI2RlZmluZSBVUFNfSElHSF9TUEVFRAkJCTB4MDQwMAorI2RlZmluZSBVUFNfUE9SVF9URVNUCQkJMHgwODAwCisjZGVmaW5lIFVQU19QT1JUX0lORElDQVRPUgkJMHgxMDAwCisjZGVmaW5lIFVQU19DX0NPTk5FQ1RfU1RBVFVTCQkweDAwMDEKKyNkZWZpbmUgVVBTX0NfUE9SVF9FTkFCTEVECQkweDAwMDIKKyNkZWZpbmUgVVBTX0NfU1VTUEVORAkJCTB4MDAwNAorI2RlZmluZSBVUFNfQ19PVkVSQ1VSUkVOVF9JTkRJQ0FUT1IJMHgwMDA4CisjZGVmaW5lIFVQU19DX1BPUlRfUkVTRVQJCTB4MDAxMAorCisKKy8qIERldmljZSBjbGFzcyBjb2RlcyAqLworI2RlZmluZSBVRENMQVNTX0lOX0lOVEVSRkFDRQkweDAwCisjZGVmaW5lIFVEQ0xBU1NfQ09NTQkJMHgwMgorI2RlZmluZSBVRENMQVNTX0hVQgkJMHgwOQorI2RlZmluZSAgVURTVUJDTEFTU19IVUIJCTB4MDAKKyNkZWZpbmUgIFVEUFJPVE9fRlNIVUIJCTB4MDAKKyNkZWZpbmUgIFVEUFJPVE9fSFNIVUJTVFQJMHgwMQorI2RlZmluZSAgVURQUk9UT19IU0hVQk1UVAkweDAyCisjZGVmaW5lIFVEQ0xBU1NfRElBR05PU1RJQwkweGRjCisjZGVmaW5lIFVEQ0xBU1NfV0lSRUxFU1MJMHhlMAorI2RlZmluZSAgVURTVUJDTEFTU19SRgkJMHgwMQorI2RlZmluZSAgIFVEUFJPVE9fQkxVRVRPT1RICTB4MDEKKyNkZWZpbmUgVURDTEFTU19WRU5ET1IJCTB4ZmYKKworLyogSW50ZXJmYWNlIGNsYXNzIGNvZGVzICovCisjZGVmaW5lIFVJQ0xBU1NfVU5TUEVDCQkweDAwCisKKyNkZWZpbmUgVUlDTEFTU19BVURJTwkJMHgwMQorI2RlZmluZSAgVUlTVUJDTEFTU19BVURJT0NPTlRST0wJMQorI2RlZmluZSAgVUlTVUJDTEFTU19BVURJT1NUUkVBTQkJMgorI2RlZmluZSAgVUlTVUJDTEFTU19NSURJU1RSRUFNCQkzCisKKyNkZWZpbmUgVUlDTEFTU19DREMJCTB4MDIgLyogY29tbXVuaWNhdGlvbiAqLworI2RlZmluZSAgVUlTVUJDTEFTU19ESVJFQ1RfTElORV9DT05UUk9MX01PREVMCTEKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfQUJTVFJBQ1RfQ09OVFJPTF9NT0RFTAkyCisjZGVmaW5lICBVSVNVQkNMQVNTX1RFTEVQSE9ORV9DT05UUk9MX01PREVMCTMKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfTVVMVElDSEFOTkVMX0NPTlRST0xfTU9ERUwJNAorI2RlZmluZSAgVUlTVUJDTEFTU19DQVBJX0NPTlRST0xNT0RFTAkJNQorI2RlZmluZSAgVUlTVUJDTEFTU19FVEhFUk5FVF9ORVRXT1JLSU5HX0NPTlRST0xfTU9ERUwgNgorI2RlZmluZSAgVUlTVUJDTEFTU19BVE1fTkVUV09SS0lOR19DT05UUk9MX01PREVMIDcKKyNkZWZpbmUgICBVSVBST1RPX0NEQ19BVAkJCTEKKworI2RlZmluZSBVSUNMQVNTX0hJRAkJMHgwMworI2RlZmluZSAgVUlTVUJDTEFTU19CT09UCTEKKyNkZWZpbmUgIFVJUFJPVE9fQk9PVF9LRVlCT0FSRAkxCisKKyNkZWZpbmUgVUlDTEFTU19QSFlTSUNBTAkweDA1CisKKyNkZWZpbmUgVUlDTEFTU19JTUFHRQkJMHgwNgorCisjZGVmaW5lIFVJQ0xBU1NfUFJJTlRFUgkJMHgwNworI2RlZmluZSAgVUlTVUJDTEFTU19QUklOVEVSCTEKKyNkZWZpbmUgIFVJUFJPVE9fUFJJTlRFUl9VTkkJMQorI2RlZmluZSAgVUlQUk9UT19QUklOVEVSX0JJCTIKKyNkZWZpbmUgIFVJUFJPVE9fUFJJTlRFUl8xMjg0CTMKKworI2RlZmluZSBVSUNMQVNTX01BU1MJCTB4MDgKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfUkJDCQkxCisjZGVmaW5lICBVSVNVQkNMQVNTX1NGRjgwMjBJCTIKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfUUlDMTU3CTMKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfVUZJCQk0CisjZGVmaW5lICBVSVNVQkNMQVNTX1NGRjgwNzBJCTUKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfU0NTSQk2CisjZGVmaW5lICBVSVBST1RPX01BU1NfQ0JJX0kJMAorI2RlZmluZSAgVUlQUk9UT19NQVNTX0NCSQkxCisjZGVmaW5lICBVSVBST1RPX01BU1NfQkJCX09MRAkyCS8qIE5vdCBpbiB0aGUgc3BlYyBhbnltb3JlICovCisjZGVmaW5lICBVSVBST1RPX01BU1NfQkJCCTgwCS8qICdQJyBmb3IgdGhlIElvbWVnYSBaaXAgZHJpdmUgKi8KKworI2RlZmluZSBVSUNMQVNTX0hVQgkJMHgwOQorI2RlZmluZSAgVUlTVUJDTEFTU19IVUIJCTAKKyNkZWZpbmUgIFVJUFJPVE9fRlNIVUIJCTAKKyNkZWZpbmUgIFVJUFJPVE9fSFNIVUJTVFQJMCAvKiBZZXMsIHNhbWUgYXMgcHJldmlvdXMgKi8KKyNkZWZpbmUgIFVJUFJPVE9fSFNIVUJNVFQJMQorCisjZGVmaW5lIFVJQ0xBU1NfQ0RDX0RBVEEJMHgwYQorI2RlZmluZSAgVUlTVUJDTEFTU19EQVRBCQkwCisjZGVmaW5lICAgVUlQUk9UT19EQVRBX0lTRE5CUkkJCTB4MzAgICAgLyogUGh5c2ljYWwgaWZhY2UgKi8KKyNkZWZpbmUgICBVSVBST1RPX0RBVEFfSERMQwkJMHgzMSAgICAvKiBIRExDICovCisjZGVmaW5lICAgVUlQUk9UT19EQVRBX1RSQU5TUEFSRU5UCTB4MzIgICAgLyogVHJhbnNwYXJlbnQgKi8KKyNkZWZpbmUgICBVSVBST1RPX0RBVEFfUTkyMU0JCTB4NTAgICAgLyogTWFuYWdlbWVudCBmb3IgUTkyMSAqLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9ROTIxCQkweDUxICAgIC8qIERhdGEgZm9yIFE5MjEgKi8KKyNkZWZpbmUgICBVSVBST1RPX0RBVEFfUTkyMVRNCQkweDUyICAgIC8qIFRFSSBtdWx0aXBsZXhlciBmb3IgUTkyMSAqLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9WNDJCSVMJCTB4OTAgICAgLyogRGF0YSBjb21wcmVzc2lvbiAqLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9ROTMxCQkweDkxICAgIC8qIEV1cm8tSVNETiAqLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9WMTIwCQkweDkyICAgIC8qIFYuMjQgcmF0ZSBhZGFwdGlvbiAqLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9DQVBJCQkweDkzICAgIC8qIENBUEkgMi4wIGNvbW1hbmRzICovCisjZGVmaW5lICAgVUlQUk9UT19EQVRBX0hPU1RfQkFTRUQJMHhmZCAgICAvKiBIb3N0IGJhc2VkIGRyaXZlciAqLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9QVUYJCTB4ZmUgICAgLyogc2VlIFByb3QuIFVuaXQgRnVuYy4gRGVzYy4qLworI2RlZmluZSAgIFVJUFJPVE9fREFUQV9WRU5ET1IJCTB4ZmYgICAgLyogVmVuZG9yIHNwZWNpZmljICovCisKKyNkZWZpbmUgVUlDTEFTU19TTUFSVENBUkQJMHgwYgorCisvKiNkZWZpbmUgVUlDTEFTU19GSVJNX1VQRAkweDBjKi8KKworI2RlZmluZSBVSUNMQVNTX1NFQ1VSSVRZCTB4MGQKKworI2RlZmluZSBVSUNMQVNTX0RJQUdOT1NUSUMJMHhkYworCisjZGVmaW5lIFVJQ0xBU1NfV0lSRUxFU1MJMHhlMAorI2RlZmluZSAgVUlTVUJDTEFTU19SRgkJCTB4MDEKKyNkZWZpbmUgICBVSVBST1RPX0JMVUVUT09USAkJMHgwMQorCisjZGVmaW5lIFVJQ0xBU1NfQVBQTF9TUEVDCTB4ZmUKKyNkZWZpbmUgIFVJU1VCQ0xBU1NfRklSTVdBUkVfRE9XTkxPQUQJMQorI2RlZmluZSAgVUlTVUJDTEFTU19JUkRBCQkyCisjZGVmaW5lICBVSVBST1RPX0lSREEJCQkwCisKKyNkZWZpbmUgVUlDTEFTU19WRU5ET1IJCTB4ZmYKKworI2RlZmluZSBVU0JfSFVCX01BWF9ERVBUSCA1CisKKy8qCisgKiBNaW5pbXVtIHRpbWUgYSBkZXZpY2UgbmVlZHMgdG8gYmUgcG93ZXJlZCBkb3duIHRvIGdvIHRocm91Z2gKKyAqIGEgcG93ZXIgY3ljbGUuICBYWFggQXJlIHRoZXNlIHRpbWUgaW4gdGhlIHNwZWM/CisgKi8KKyNkZWZpbmUgVVNCX1BPV0VSX0RPV05fVElNRQkyMDAgLyogbXMgKi8KKyNkZWZpbmUgVVNCX1BPUlRfUE9XRVJfRE9XTl9USU1FCTEwMCAvKiBtcyAqLworCisKKy8qIEFsbG93IGZvciBtYXJnaW5hbCAoaS5lLiBub24tY29uZm9ybWluZykgZGV2aWNlcy4gKi8KKyNkZWZpbmUgVVNCX1BPUlRfUkVTRVRfREVMQVkJNTAgIC8qIG1zICovCisjZGVmaW5lIFVTQl9QT1JUX1JPT1RfUkVTRVRfREVMQVkgMjUwICAvKiBtcyAqLworI2RlZmluZSBVU0JfUE9SVF9SRVNFVF9SRUNPVkVSWQkyNTAgIC8qIG1zICovCisjZGVmaW5lIFVTQl9QT1JUX1BPV0VSVVBfREVMQVkJMzAwIC8qIG1zICovCisjZGVmaW5lIFVTQl9TRVRfQUREUkVTU19TRVRUTEUJMTAgIC8qIG1zICovCisjZGVmaW5lIFVTQl9SRVNVTUVfREVMQVkJKDUwKjUpICAvKiBtcyAqLworI2RlZmluZSBVU0JfUkVTVU1FX1dBSVQJCTUwICAvKiBtcyAqLworI2RlZmluZSBVU0JfUkVTVU1FX1JFQ09WRVJZCTUwICAvKiBtcyAqLworI2RlZmluZSBVU0JfRVhUUkFfUE9XRVJfVVBfVElNRQkyMCAgLyogbXMgKi8KKworCisjZGVmaW5lIFVTQl9NSU5fUE9XRVIJCTEwMCAvKiBtQSAqLworI2RlZmluZSBVU0JfTUFYX1BPV0VSCQk1MDAgLyogbUEgKi8KKworI2RlZmluZSBVU0JfQlVTX1JFU0VUX0RFTEFZCTEwMCAvKiBtcyBYWFg/Ki8KKworI2RlZmluZSBVU0JfVU5DT05GSUdfTk8gMAorI2RlZmluZSBVU0JfVU5DT05GSUdfSU5ERVggKC0xKQorCit0eXBlZGVmIHN0cnVjdCB1c2JfZGV2aWNlX3JlcXVlc3RfdAoreworCXVpbnQ4X3QJCWJtUmVxdWVzdFR5cGU7CisJdWludDhfdAkJYlJlcXVlc3Q7CisJdWludDE2X3QJCXdWYWx1ZTsKKwl1aW50MTZfdAkJd0luZGV4OworCXVpbnQxNl90CQl3TGVuZ3RoOworfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpIHVzYl9kZXZpY2VfcmVxdWVzdF90OworCisvKioqIGlvY3RsKCkgcmVsYXRlZCBzdHVmZiAqKiovCisKKyNkZWZpbmUgVVNCRF9TSE9SVF9YRkVSX09LCTB4MDQJLyogYWxsb3cgc2hvcnQgcmVhZHMgKi8KKyNkZWZpbmUgVVNCX0NVUlJFTlRfQ09ORklHX0lOREVYICgtMSkKKyNkZWZpbmUgVVNCX0NVUlJFTlRfQUxUX0lOREVYICgtMSkKKworCisKK3R5cGVkZWYgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yX3QKK3sKKwkgICAgICAgIHVpbnQ4X3QJCWJMZW5ndGg7CisJICAgICAgICB1aW50OF90CQliRGVzY3JpcHRvclR5cGU7CisJICAgICAgICB1aW50OF90CQliRW5kcG9pbnRBZGRyZXNzOworICAgICAgICAgICAgdWludDhfdAkJYm1BdHRyaWJ1dGVzOworCQkJdWludDE2X3QJd01heFBhY2tldFNpemU7CisJICAgICAgICB1aW50OF90CQliSW50ZXJ2YWw7Cit9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3JfdDsKKworI2RlZmluZSBVU0JfTUFYX0RFVk5BTUVTIDQKKyNkZWZpbmUgVVNCX01BWF9ERVZOQU1FTEVOIDE2CisjZGVmaW5lIFVTQl9TUEVFRF9VTktOT1dOCTAKKyNkZWZpbmUgVVNCX1NQRUVEX0xPVwkJMQorI2RlZmluZSBVU0JfU1BFRURfRlVMTAkJMgorI2RlZmluZSBVU0JfU1BFRURfSElHSAkJMworLyoKKyAqIFVTQiBkaXJlY3Rpb25zCisgKgorICogVGhpcyBiaXQgZmxhZyBpcyB1c2VkIGluIGVuZHBvaW50IGRlc2NyaXB0b3JzJyBiRW5kcG9pbnRBZGRyZXNzIGZpZWxkLgorICogSXQncyBhbHNvIG9uZSBvZiB0aHJlZSBmaWVsZHMgaW4gY29udHJvbCByZXF1ZXN0cyBiUmVxdWVzdFR5cGUuCisgKi8KKyNkZWZpbmUgVVNCX0RJUl9PVVQJCQkwCQkvKiB0byBkZXZpY2UgKi8KKyNkZWZpbmUgVVNCX0RJUl9JTgkJCTB4ODAJCS8qIHRvIGhvc3QgKi8KKworI2RlZmluZSBVU0JfRFRfREVWSUNFCQkJMHgwMQorI2RlZmluZSBVU0JfRFRfQ09ORklHCQkJMHgwMgorI2RlZmluZSBVU0JfRFRfU1RSSU5HCQkJMHgwMworI2RlZmluZSBVU0JfRFRfSU5URVJGQUNFCQkweDA0CisjZGVmaW5lIFVTQl9EVF9FTkRQT0lOVAkJCTB4MDUKKyNkZWZpbmUgVVNCX0RUX0RFVklDRV9RVUFMSUZJRVIJCTB4MDYKKyNkZWZpbmUgVVNCX0RUX09USEVSX1NQRUVEX0NPTkZJRwkweDA3CisjZGVmaW5lIFVTQl9EVF9JTlRFUkZBQ0VfUE9XRVIJCTB4MDgKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vILHq17y907/aw+jK9rf7Cit0eXBlZGVmIHN0cnVjdCBkd2NfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdAoreworCUJZVEUgCWJMZW5ndGg7CisJQllURSAJYkRlc2NyaXB0b3JUeXBlOworCUJZVEUgCWJJbnRlcmZhY2VOdW1iZXI7CisJQllURSAJYkFsdGVybmF0ZVNldHRpbmc7CisJQllURSAJYk51bUVuZHBvaW50czsKKwlCWVRFIAliSW50ZXJmYWNlQ2xhc3M7CisJQllURSAJYkludGVyZmFjZVN1YkNsYXNzOworCUJZVEUgCWJJbnRlcmZhY2VQcm90b2NvbDsKKwlCWVRFIAlpSW50ZXJmYWNlOworfV9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgZHdjX2ludGVyZmFjZV9kZXNjcmlwdG9yX3Q7CisKKworLy8gserXvLbLtePD6Mr2t/sKK3R5cGVkZWYgc3RydWN0IGR3Y19lcF9kZXNjcmlwdG9yX3QKK3sKKwlCWVRFIAliTGVuZ3RoOworCUJZVEUgCWJEZXNjcmlwdG9yVHlwZTsKKwlCWVRFIAliRW5kcG9pbnRBZGRyZXNzOworCUJZVEUgCWJtQXR0cmlidXRlczsKKwlXT1JEMTYJd01heFBhY2tldFNpemU7CisJQllURSAJYkludGVydmFsOworfV9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgZHdjX2VwX2Rlc2NyaXB0b3JfdDsKKworCisvLyDX1rf7tK7D6Mr2t/sKK3R5cGVkZWYgc3RydWN0IGR3Y19sYW5naWRfZGVzY3JpcHRvcl90Cit7CisJQllURQliTGVuZ3RoOworCUJZVEUgCWJEZXNjcmlwdG9yVHlwZTsKKwlXT1JEMTYJd0xBTkdJRDA7CisKK31fX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpIGR3Y19sYW5naWRfZGVzY3JpcHRvcl90OworCit0eXBlZGVmIHN0cnVjdCBkd2Nfc3RyaW5nX2Rlc2NyaXB0b3JfdAoreworCUJZVEUJYkxlbmd0aDsKKwlCWVRFIAliRGVzY3JpcHRvclR5cGU7CisJQllURQliU3RyaW5nW01BWF9TVFJJTkdfTEVOR1RIXTsKKworfV9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgZHdjX3N0cmluZ19kZXNjcmlwdG9yX3Q7CisKKy8vIMnosbjD6Mr2t/sKK3R5cGVkZWYgc3RydWN0IGR3Y19kZXZpY2VfZGVzY3JpcHRvcl90Cit7CisgICAgQllURSAgICBiTGVuZ3RoOworICAgIEJZVEUgICAgYkRlc2NyaXB0b3JUeXBlOworICAgIFdPUkQxNgliY2RVU0I7CisgICAgQllURSAgICBiRGV2aWNlQ2xhc3M7CisgICAgQllURSAgICBiRGV2aWNlU3ViQ2xhc3M7CisgICAgQllURSAgICBiRGV2aWNlUHJvdG9jb2w7CisgICAgQllURSAgICBiTWF4UGFja2V0U2l6ZTA7CisgICAgV09SRDE2IAlpZFZlbmRvcjsKKyAgICBXT1JEMTYgCWlkUHJvZHVjdDsKKyAgICBXT1JEMTYgCWJjZERldmljZTsKKyAgICBCWVRFIAlpTWFudWZhY3R1cmVyOworICAgIEJZVEUgICAgaVByb2R1Y3Q7CisgICAgQllURSAgICBpU2VyaWFsTnVtYmVyOworICAgIEJZVEUgICAgYk51bUNvbmZpZ3VyYXRpb25zOworfV9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgZHdjX2RldmljZV9kZXNjcmlwdG9yX3Q7CisKKy8vZGV2aWNlIHF1YWxpZmllcsPoyva3+wordHlwZWRlZiBzdHJ1Y3QgZHdjX2Rldl9xdWFsX2Rlc2NyaXB0b3JfdAoreworICAgIEJZVEUgICAgYkxlbmd0aDsKKyAgICBCWVRFICAgIGJEZXNjcmlwdG9yVHlwZTsKKyAgICBXT1JEMTYJYmNkVVNCOworICAgIEJZVEUgICAgYkRldmljZUNsYXNzOworICAgIEJZVEUgICAgYkRldmljZVN1YkNsYXNzOworICAgIEJZVEUgICAgYkRldmljZVByb3RvY29sOworICAgIEJZVEUgICAgYk1heFBhY2tldFNpemUwOworICAgIEJZVEUgICAgYk51bUNvbmZpZ3VyYXRpb25zOworICAgIEJZVEUgICAgUmVzZXJ2ZWQ7Cit9X19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKSBkd2NfZGV2X3F1YWxfZGVzY3JpcHRvcl90OworCisKKy8vILHq17zF5NbDw+jK9rf7Cit0eXBlZGVmIHN0cnVjdCBkd2NfY29uZmlnX2Rlc2NyaXB0b3JfdAoreworCUJZVEUgCWJMZW5ndGg7CisJQllURSAJYkRlc2NyaXB0b3JUeXBlOworCVdPUkQxNiAJd1RvdGFsTGVuZ3RoOworCUJZVEUgCWJOdW1JbnRlcmZhY2VzOworCUJZVEUgCWJDb25maWd1cmF0aW9uVmFsdWU7CisJQllURSAJaUNvbmZpZ3VyYXRpb247CisJQllURSAJYm1BdHRyaWJ1dGVzOworCUJZVEUgCWJNYXhQb3dlcjsKK31fX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpIGR3Y19jb25maWdfZGVzY3JpcHRvcl90OworCit0eXBlZGVmIHN0cnVjdCBkd2NfcHJvZHVjdF9kZXNjcmlwdG9yX3QKK3sKKwlCWVRFIAliTGVuZ3RoOworCUJZVEUgCWJEZXNjcmlwdG9yVHlwZTsKKyAgICBjaGFyICAgIFByb2RfRGVzY1s5OF07Cit9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgZHdjX3Byb2R1Y3RfZGVzY3JpcHRvcl90OworCisvLyNkZWZpbmUJTUFYX0VQUwkJCQkoMHg4KQorI2RlZmluZQlNQVhfRVBTCQkJCSgweDIpCit0eXBlZGVmIGVudW0KK3sKKyAgICBVU0JfTUFYX1BBQ0tFVF9TSVpFX05PVF9TRVQgICAgICA9IDAsCisgICAgVVNCX0ZVTExTUEVFRF9CVUxLX01BWFNJWkUgICAgICAgICA9IDY0LAorICAgIFVTQl9ISUdIU1BFRURfQlVMS19NQVhTSVpFICAgICAgICA9IDUxMiwKK31UX1VTQl9NQVhfUEFDS0VUX1NJWkU7CisKK3R5cGVkZWYgc3RydWN0IGR3Y19jb25maWdfYWxsX3QKK3sKKyAgZHdjX2NvbmZpZ19kZXNjcmlwdG9yX3QJCXRDb25maWc7CisgIGR3Y19pbnRlcmZhY2VfZGVzY3JpcHRvcl90CXRJbnRlcmZhY2U7CisgIGR3Y19lcF9kZXNjcmlwdG9yX3QJCQlhdFR4RVBbMV07CS8vt6LLzbbLteMosruw/MCoZXAwKQorICBkd2NfZXBfZGVzY3JpcHRvcl90CQkJYXRSeEVQWzFdOwkvL73TytW2y7XjKLK7sPzAqGVwMCkKKyAgZHdjX2ludGVyZmFjZV9kZXNjcmlwdG9yX3QJdEludGVyZmFjZTE7CisgIGR3Y19lcF9kZXNjcmlwdG9yX3QJCQlhdFR4RVAxWzFdOwkvL7eiy822y7XjKLK7sPzAqGVwMCkKKyAgZHdjX2VwX2Rlc2NyaXB0b3JfdAkJCWF0UnhFUDFbMV07CS8vvdPK1bbLteMosruw/MCoZXAwKQorfV9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgZHdjX2NvbmZpZ19hbGxfdDsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9VU0JfSF8gKi8K