From: marko.makela Date: May 26 2012 4:36am Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3870 to 3871) WL#6255 List-Archive: http://lists.mysql.com/commits/143966 Message-Id: <201205260436.q4Q4aSW6000890@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4NzEgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0yNgogICAgICBXTCM2MjU1IHByZXBhcmF0aW9u OiBBbGxvdyBmbGFncyB0byBiZSBzcGVjaWZpZWQgb24gcm93IGluc2VydC4KICAgICAgCiAgICAg IHJvd19pbnNfY2x1c3RfaW5kZXhfZW50cnlfbG93KCksIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5 X2xvdygpOgogICAgICBNYWtlIHRoZSBmdW5jdGlvbnMgcHVibGljLCBhbmQgYWRkIGEgZmxhZ3Mg cGFyYW1ldGVyLCBzbyB0aGF0CiAgICAgIG9ubGluZSByZWJ1aWxkIGxvZyBhcHBseSBjYW4gc2tp cCBsb2NraW5nIGFuZCB1bmRvIGxvZ2dpbmcuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9yb3cwaW5zLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MGlucy5jYwogMzg3MCBNYXJrbyBNw6RrZWzDpAkyMDEyLTA1LTI2CiAgICAgIFdMIzYyNTUgcHJl cGFyYXRpb246IEFkZCBhc3NlcnRpb25zIHRvIHB1cmdlIGNvZGUuCiAgICAgIAogICAgICByb3df cHVyZ2VfcmVtb3ZlX2NsdXN0X2lmX3Bvc3NfbG93KCksIHJvd19wdXJnZV91cGRfZXhpc3Rfb3Jf ZXh0ZXJuX2Z1bmMoKToKICAgICAgQXNzZXJ0IHRoYXQgZGljdF9vcGVyYXRpb25fbG9jayBpcyBi ZWluZyBTLWxhdGNoZWQuIE5hcnJvdyB0aGUgc2NvcGUKICAgICAgb2Ygc29tZSB2YXJpYWJsZSBk ZWNsYXJhdGlvbnMuCiAgICAgIAogICAgICBJbiBvbmxpbmUgdGFibGUgcmVidWlsZCwgdGhlcmUg aXMgYSBwb3RlbnRpYWwgcHJvYmxlbSBpbiBCTE9CIHJldHJpZXZhbC4KICAgICAgVGhlIHBsYW5u ZWQgc29sdXRpb24gaXMgdGhhdCB3ZSB3aWxsIGhhdmUgYSBsb29rdXAgdGFibGUgb2YgdHJ4X2lk X3Qgb2YKICAgICAgcm9sbGVkLWJhY2sgdHJhbnNhY3Rpb25zLiBBbnkgcm93cyBpbnNlcnRlZCBv ciB1cGRhdGVkIGJ5IHN1Y2ggdHJhbnNhY3Rpb25zCiAgICAgIHdpbGwgYmUgaWdub3JlZC4gQSBk ZWxldGUtbWFyayBvcGVyYXRpb24gd2lsbCBiZSBidWZmZXJlZCBhcyBhIGRlbGV0ZStwdXJnZQog ICAgICBpbiB0aGUgb25saW5lIGxvZywgd2l0aCB0aGUgbmV3IFBSSU1BUlkgS0VZIGFuZCB0aGUg REJfVFJYX0lEIG9mIHRoZSByZWNvcmQsCiAgICAgIGFuZCBhcHBsaWVkIGJ5IGxvb2tpbmcgdXAg dGhlIGZpZWxkcyBpbiB0aGUgcmVidWlsdCB0YWJsZS4KICAgICAgVGhpcyAoYW5kIHRoZSBmYWN0 IHRoYXQgdGhlIGxvZyBhcHBseSB3aWxsIGhvbGQgYW4gUy1sYXRjaCBvciBYLWxhdGNoIG9uCiAg ICAgIHRoZSBjbHVzdGVyZWQgaW5kZXggdHJlZSBvZiB0aGUgb2xkIHRhYmxlKSBzaG91bGQgZ3Vh cmFudGVlIHRoYXQgdGhlCiAgICAgIGxvZyBhcHBseSB3aWxsIG5ldmVyIGRlcmVmZXJlbmNlIGZy ZWVkIEJMT0JzIGluIHRoZSBvbGQgdGFibGUuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jYwo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3JvdzBpbnMuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Jv dzBpbnMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUyNjA0MjU0NS1sZzBn M2RlbncxdWlnMXFxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwaW5zLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjYwNDM0NDUtano1ZDg0MjdxMm0wYWg4 NApAQCAtNzUsMzEgKzc1LDQ5IEBAIGluc19ub2RlX3NldF9uZXdfcm93KAogCWluc19ub2RlX3Qq CW5vZGUsCS8qITwgaW46IGluc2VydCBub2RlICovCiAJZHR1cGxlX3QqCXJvdyk7CS8qITwgaW46 IG5ldyByb3cgKG9yIGZpcnN0IHJvdykgZm9yIHRoZSBub2RlICovCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotSW5z ZXJ0cyBhbiBlbnRyeSBpbnRvIGEgY2x1c3RlcmVkIGluZGV4LiBUcmllcyBmaXJzdCBvcHRpbWlz dGljLAotdGhlbiBwZXNzaW1pc3RpYyBkZXNjZW50IGRvd24gdGhlIHRyZWUuIElmIHRoZSBlbnRy eSBtYXRjaGVzIGVub3VnaAotdG8gYSBkZWxldGUgbWFya2VkIHJlY29yZCwgcGVyZm9ybXMgdGhl IGluc2VydCBieSB1cGRhdGluZyBvciBkZWxldGUKLXVubWFya2luZyB0aGUgZGVsZXRlIG1hcmtl ZCByZWNvcmQuCi1AcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfRFVQTElDQVRF X0tFWSwgb3Igc29tZSBvdGhlciBlcnJvciBjb2RlICovCitUcmllcyB0byBpbnNlcnQgYW4gZW50 cnkgaW50byBhIGNsdXN0ZXJlZCBpbmRleCwgaWdub3JpbmcgZm9yZWlnbiBrZXkKK2NvbnN0cmFp bnRzLiBJZiBhIHJlY29yZCB3aXRoIHRoZSBzYW1lIHVuaXF1ZSBrZXkgaXMgZm91bmQsIHRoZSBv dGhlcgorcmVjb3JkIGlzIG5lY2Vzc2FyaWx5IG1hcmtlZCBkZWxldGVkIGJ5IGEgY29tbWl0dGVk IHRyYW5zYWN0aW9uLCBvciBhCit1bmlxdWUga2V5IHZpb2xhdGlvbiBlcnJvciBvY2N1cnMuIFRo ZSBkZWxldGUgbWFya2VkIHJlY29yZCBpcyB0aGVuCit1cGRhdGVkIHRvIGFuIGV4aXN0aW5nIHJl Y29yZCwgYW5kIHdlIG11c3Qgd3JpdGUgYW4gdW5kbyBsb2cgcmVjb3JkIG9uCit0aGUgZGVsZXRl IG1hcmtlZCByZWNvcmQuCitAcmV0dmFsIERCX1NVQ0NFU1Mgb24gc3VjY2VzcworQHJldHZhbCBE Ql9MT0NLX1dBSVQgb24gbG9jayB3YWl0IHdoZW4gIShmbGFncyAmIEJUUl9OT19MT0NLSU5HX0ZM QUcpCitAcmV0dmFsIERCX0ZBSUwgaWYgcmV0cnkgd2l0aCBCVFJfTU9ESUZZX1RSRUUgaXMgbmVl ZGVkCitAcmV0dXJuIGVycm9yIGNvZGUgKi8KIFVOSVZfSU5URVJOCiBkYmVycl90Ci1yb3dfaW5z X2NsdXN0X2luZGV4X2VudHJ5KAotLyo9PT09PT09PT09PT09PT09PT09PT09Ki8KK3Jvd19pbnNf Y2x1c3RfaW5kZXhfZW50cnlfbG93KAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCisJ dWxpbnQJCWZsYWdzLAkvKiE8IGluOiB1bmRvIGxvZ2dpbmcgYW5kIGxvY2tpbmcgZmxhZ3MgKi8K Kwl1bGludAkJbW9kZSwJLyohPCBpbjogQlRSX01PRElGWV9MRUFGIG9yIEJUUl9NT0RJRllfVFJF RSwKKwkJCQlkZXBlbmRpbmcgb24gd2hldGhlciB3ZSB3aXNoIG9wdGltaXN0aWMgb3IKKwkJCQlw ZXNzaW1pc3RpYyBkZXNjZW50IGRvd24gdGhlIGluZGV4IHRyZWUgKi8KIAlkaWN0X2luZGV4X3Qq CWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggKi8KIAlkdHVwbGVfdCoJZW50cnksCS8q ITwgaW4vb3V0OiBpbmRleCBlbnRyeSB0byBpbnNlcnQgKi8KLQlxdWVfdGhyX3QqCXRociwJLyoh PCBpbjogcXVlcnkgdGhyZWFkICovCi0JdWxpbnQJCW5fZXh0KQkvKiE8IGluOiBudW1iZXIgb2Yg ZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLworCXVsaW50CQluX2V4dCwJLyohPCBpbjogbnVt YmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgKi8KKwlxdWVfdGhyX3QqCXRocikJLyoh PCBpbjogcXVlcnkgdGhyZWFkIG9yIE5VTEwgKi8KIAlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3 YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1JbnNlcnRzIGFuIGVudHJ5IGludG8g YSBzZWNvbmRhcnkgaW5kZXguIFRyaWVzIGZpcnN0IG9wdGltaXN0aWMsCi10aGVuIHBlc3NpbWlz dGljIGRlc2NlbnQgZG93biB0aGUgdHJlZS4gSWYgdGhlIGVudHJ5IG1hdGNoZXMgZW5vdWdoCi10 byBhIGRlbGV0ZSBtYXJrZWQgcmVjb3JkLCBwZXJmb3JtcyB0aGUgaW5zZXJ0IGJ5IHVwZGF0aW5n IG9yIGRlbGV0ZQotdW5tYXJraW5nIHRoZSBkZWxldGUgbWFya2VkIHJlY29yZC4KLUByZXR1cm4J REJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBEQl9EVVBMSUNBVEVfS0VZLCBvciBzb21lIG90aGVy IGVycm9yIGNvZGUgKi8KK1RyaWVzIHRvIGluc2VydCBhbiBlbnRyeSBpbnRvIGEgc2Vjb25kYXJ5 IGluZGV4LiBJZiBhIHJlY29yZCB3aXRoIGV4YWN0bHkgdGhlCitzYW1lIGZpZWxkcyBpcyBmb3Vu ZCwgdGhlIG90aGVyIHJlY29yZCBpcyBuZWNlc3NhcmlseSBtYXJrZWQgZGVsZXRlZC4KK0l0IGlz IHRoZW4gdW5tYXJrZWQuIE90aGVyd2lzZSwgdGhlIGVudHJ5IGlzIGp1c3QgaW5zZXJ0ZWQgdG8g dGhlIGluZGV4LgorQHJldHZhbCBEQl9TVUNDRVNTIG9uIHN1Y2Nlc3MKK0ByZXR2YWwgREJfTE9D S19XQUlUIG9uIGxvY2sgd2FpdCB3aGVuICEoZmxhZ3MgJiBCVFJfTk9fTE9DS0lOR19GTEFHKQor QHJldHZhbCBEQl9GQUlMIGlmIHJldHJ5IHdpdGggQlRSX01PRElGWV9UUkVFIGlzIG5lZWRlZAor QHJldHVybiBlcnJvciBjb2RlICovCiBVTklWX0lOVEVSTgogZGJlcnJfdAotcm93X2luc19zZWNf aW5kZXhfZW50cnkoCi0vKj09PT09PT09PT09PT09PT09PT09Ki8KK3Jvd19pbnNfc2VjX2luZGV4 X2VudHJ5X2xvdygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwl1bGludAkJZmxhZ3Ms CS8qITwgaW46IHVuZG8gbG9nZ2luZyBhbmQgbG9ja2luZyBmbGFncyAqLworCXVsaW50CQltb2Rl LAkvKiE8IGluOiBCVFJfTU9ESUZZX0xFQUYgb3IgQlRSX01PRElGWV9UUkVFLAorCQkJCWRlcGVu ZGluZyBvbiB3aGV0aGVyIHdlIHdpc2ggb3B0aW1pc3RpYyBvcgorCQkJCXBlc3NpbWlzdGljIGRl c2NlbnQgZG93biB0aGUgaW5kZXggdHJlZSAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwg aW46IHNlY29uZGFyeSBpbmRleCAqLworCW1lbV9oZWFwX3QqCW9mZnNldHNfaGVhcCwKKwkJCQkv KiE8IGluL291dDogbWVtb3J5IGhlYXAgdGhhdCBjYW4gYmUgZW1wdGllZCAqLworCW1lbV9oZWFw X3QqCWhlYXAsCS8qITwgaW4vb3V0OiBtZW1vcnkgaGVhcCAqLwogCWR0dXBsZV90KgllbnRyeSwJ LyohPCBpbi9vdXQ6IGluZGV4IGVudHJ5IHRvIGluc2VydCAqLwogCXF1ZV90aHJfdCoJdGhyKQkv KiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIAlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3Vu dXNlZF9yZXN1bHQpKTsKQEAgLTEyOSw2ICsxNDcsMzUgQEAgcm93X2luc19pbmRleF9lbnRyeV9i aWdfcmVjX2Z1bmMoCiAjIGRlZmluZSByb3dfaW5zX2luZGV4X2VudHJ5X2JpZ19yZWMoZSxiaWcs b2ZzLGhlYXAsaW5kZXgsdGhkLGZpbGUsbGluZSkgXAogCXJvd19pbnNfaW5kZXhfZW50cnlfYmln X3JlY19mdW5jKGUsYmlnLG9mcyxoZWFwLGluZGV4LGZpbGUsdGhkLGxpbmUpCiAjZW5kaWYgLyog REJVR19PRkYgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCitJbnNlcnRzIGFuIGVudHJ5IGludG8gYSBjbHVzdGVy ZWQgaW5kZXguIFRyaWVzIGZpcnN0IG9wdGltaXN0aWMsCit0aGVuIHBlc3NpbWlzdGljIGRlc2Nl bnQgZG93biB0aGUgdHJlZS4gSWYgdGhlIGVudHJ5IG1hdGNoZXMgZW5vdWdoCit0byBhIGRlbGV0 ZSBtYXJrZWQgcmVjb3JkLCBwZXJmb3JtcyB0aGUgaW5zZXJ0IGJ5IHVwZGF0aW5nIG9yIGRlbGV0 ZQordW5tYXJraW5nIHRoZSBkZWxldGUgbWFya2VkIHJlY29yZC4KK0ByZXR1cm4JREJfU1VDQ0VT UywgREJfTE9DS19XQUlULCBEQl9EVVBMSUNBVEVfS0VZLCBvciBzb21lIG90aGVyIGVycm9yIGNv ZGUgKi8KK1VOSVZfSU5URVJOCitkYmVycl90Cityb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5KAor Lyo9PT09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGlu OiBjbHVzdGVyZWQgaW5kZXggKi8KKwlkdHVwbGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiBpbmRl eCBlbnRyeSB0byBpbnNlcnQgKi8KKwlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkgdGhy ZWFkICovCisJdWxpbnQJCW5fZXh0KQkvKiE8IGluOiBudW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9y ZWQgY29sdW1ucyAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3Vs dCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK0luc2VydHMgYW4gZW50cnkgaW50byBhIHNlY29uZGFyeSBpbmRl eC4gVHJpZXMgZmlyc3Qgb3B0aW1pc3RpYywKK3RoZW4gcGVzc2ltaXN0aWMgZGVzY2VudCBkb3du IHRoZSB0cmVlLiBJZiB0aGUgZW50cnkgbWF0Y2hlcyBlbm91Z2gKK3RvIGEgZGVsZXRlIG1hcmtl ZCByZWNvcmQsIHBlcmZvcm1zIHRoZSBpbnNlcnQgYnkgdXBkYXRpbmcgb3IgZGVsZXRlCit1bm1h cmtpbmcgdGhlIGRlbGV0ZSBtYXJrZWQgcmVjb3JkLgorQHJldHVybglEQl9TVUNDRVNTLCBEQl9M T0NLX1dBSVQsIERCX0RVUExJQ0FURV9LRVksIG9yIHNvbWUgb3RoZXIgZXJyb3IgY29kZSAqLwor VU5JVl9JTlRFUk4KK2RiZXJyX3QKK3Jvd19pbnNfc2VjX2luZGV4X2VudHJ5KAorLyo9PT09PT09 PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogc2Vjb25kYXJ5 IGluZGV4ICovCisJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291dDogaW5kZXggZW50cnkgdG8g aW5zZXJ0ICovCisJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLworCV9f YXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogSW5z ZXJ0cyBhIHJvdyB0byBhIHRhYmxlLiBUaGlzIGlzIGEgaGlnaC1sZXZlbCBmdW5jdGlvbiB1c2Vk IGluCiBTUUwgZXhlY3V0aW9uIGdyYXBocy4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwaW5zLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5z LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTI2MDQyNTQ1LWxnMGczZGVu dzF1aWcxcXEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUyNjA0MzQ0NS1qejVkODQyN3EybTBhaDg0CkBAIC0y MzAsNiArMjMwLDcgQEAgc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51cwog ZGJlcnJfdAogcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KAogLyo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLworCXVsaW50CQlmbGFncywJLyohPCBpbjogdW5kbyBsb2dn aW5nIGFuZCBsb2NraW5nIGZsYWdzICovCiAJdWxpbnQJCW1vZGUsCS8qITwgaW46IEJUUl9NT0RJ RllfTEVBRiBvciBCVFJfTU9ESUZZX1RSRUUsCiAJCQkJZGVwZW5kaW5nIG9uIHdoZXRoZXIgbXRy IGhvbGRzIGp1c3QgYSBsZWFmCiAJCQkJbGF0Y2ggb3IgYWxzbyBhIHRyZWUgbGF0Y2ggKi8KQEAg LTI2OCw3ICsyNjksNyBAQCByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9ieV9tb2RpZnkoCiAKIAkJ LyogVE9ETzogcGFzcyBvbmx5ICpvZmZzZXRzICovCiAJCWVyciA9IGJ0cl9jdXJfb3B0aW1pc3Rp Y191cGRhdGUoCi0JCQlCVFJfS0VFUF9TWVNfRkxBRywgY3Vyc29yLAorCQkJZmxhZ3MgfCBCVFJf S0VFUF9TWVNfRkxBRywgY3Vyc29yLAogCQkJb2Zmc2V0cywgJm9mZnNldHNfaGVhcCwgdXBkYXRl LCAwLCB0aHIsCiAJCQl0aHJfZ2V0X3RyeCh0aHIpLT5pZCwgbXRyKTsKIAkJc3dpdGNoIChlcnIp IHsKQEAgLTI4Nyw3ICsyODgsNyBAQCByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9ieV9tb2RpZnko CiAJCX0KIAogCQllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKLQkJCUJUUl9LRUVQ X1NZU19GTEFHLCBjdXJzb3IsCisJCQlmbGFncyB8IEJUUl9LRUVQX1NZU19GTEFHLCBjdXJzb3Is CiAJCQlvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLAogCQkJaGVhcCwgJmR1bW15X2JpZ19yZWMsIHVw ZGF0ZSwgMCwKIAkJCXRociwgdGhyX2dldF90cngodGhyKS0+aWQsIG10cik7CkBAIC0zMDYsNiAr MzA3LDcgQEAgc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51cwogZGJlcnJf dAogcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoCiAvKj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KKwl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9nZ2lu ZyBhbmQgbG9ja2luZyBmbGFncyAqLwogCXVsaW50CQltb2RlLAkvKiE8IGluOiBCVFJfTU9ESUZZ X0xFQUYgb3IgQlRSX01PRElGWV9UUkVFLAogCQkJCWRlcGVuZGluZyBvbiB3aGV0aGVyIG10ciBo b2xkcyBqdXN0IGEgbGVhZgogCQkJCWxhdGNoIG9yIGFsc28gYSB0cmVlIGxhdGNoICovCkBAIC0z NDcsNyArMzQ5LDcgQEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoCiAJCXdp dGhpbiB0aGUgcGFnZSAqLwogCiAJCWVyciA9IGJ0cl9jdXJfb3B0aW1pc3RpY191cGRhdGUoCi0J CQkwLCBjdXJzb3IsIG9mZnNldHMsIG9mZnNldHNfaGVhcCwgdXBkYXRlLCAwLCB0aHIsCisJCQlm bGFncywgY3Vyc29yLCBvZmZzZXRzLCBvZmZzZXRzX2hlYXAsIHVwZGF0ZSwgMCwgdGhyLAogCQkJ dGhyX2dldF90cngodGhyKS0+aWQsIG10cik7CiAJCXN3aXRjaCAoZXJyKSB7CiAJCWNhc2UgREJf T1ZFUkZMT1c6CkBAIC0zNjUsNyArMzY3LDcgQEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9i eV9tb2RpZnkoCiAKIAkJfQogCQllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKLQkJ CUJUUl9LRUVQX1BPU19GTEFHLAorCQkJZmxhZ3MgfCBCVFJfS0VFUF9QT1NfRkxBRywKIAkJCWN1 cnNvciwgb2Zmc2V0cywgb2Zmc2V0c19oZWFwLCBoZWFwLAogCQkJYmlnX3JlYywgdXBkYXRlLCAw LCB0aHIsIHRocl9nZXRfdHJ4KHRociktPmlkLCBtdHIpOwogCX0KQEAgLTE4MjEsNiArMTgyMyw3 IEBAIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXMKIGRiZXJyX3QKIHJv d19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0ZSgKIC8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KKwl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9nZ2luZyBh bmQgbG9ja2luZyBmbGFncyAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IG5vbi1j bHVzdGVyZWQgdW5pcXVlIGluZGV4ICovCiAJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluOiBpbmRl eCBlbnRyeSAqLwogCXF1ZV90aHJfdCoJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KQEAg LTE4NzgsNyArMTg4MSwxMCBAQCByb3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9kdXBsaWNhdGUo CiAJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywKIAkJCQkJ ICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKIAotCQlpZiAoYWxsb3dfZHVwbGljYXRlcykgewor CQlpZiAoZmxhZ3MgJiBCVFJfTk9fTE9DS0lOR19GTEFHKSB7CisJCQkvKiBTZXQgbm8gbG9ja3Mg d2hlbiBhcHBseWluZyBsb2cKKwkJCWluIG9ubGluZSB0YWJsZSByZWJ1aWxkLiAqLworCQl9IGVs c2UgaWYgKGFsbG93X2R1cGxpY2F0ZXMpIHsKIAogCQkJLyogSWYgdGhlIFNRTC1xdWVyeSB3aWxs IHVwZGF0ZSBvciByZXBsYWNlCiAJCQlkdXBsaWNhdGUga2V5IHdlIHdpbGwgdGFrZSBYLWxvY2sg Zm9yCkBAIC0xOTQ5LDYgKzE5NTUsNyBAQCBzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCwg d2Fybl91bnVzCiBkYmVycl90CiByb3dfaW5zX2R1cGxpY2F0ZV9lcnJvcl9pbl9jbHVzdCgKIC8q PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCXVsaW50CQlmbGFncywJLyohPCBpbjog dW5kbyBsb2dnaW5nIGFuZCBsb2NraW5nIGZsYWdzICovCiAJYnRyX2N1cl90KgljdXJzb3IsCS8q ITwgaW46IEItdHJlZSBjdXJzb3IgKi8KIAljb25zdCBkdHVwbGVfdCoJZW50cnksCS8qITwgaW46 IGVudHJ5IHRvIGluc2VydCAqLwogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSB0aHJl YWQgKi8KQEAgLTE5OTYsNyArMjAwMywxMCBAQCByb3dfaW5zX2R1cGxpY2F0ZV9lcnJvcl9pbl9j bHVzdCgKIAkJCXN1cmUgdGhhdCBpbiByb2xsLWZvcndhcmQgd2UgZ2V0IHRoZSBzYW1lIGR1cGxp Y2F0ZQogCQkJZXJyb3JzIGFzIGluIG9yaWdpbmFsIGV4ZWN1dGlvbiAqLwogCi0JCQlpZiAodHJ4 LT5kdXBsaWNhdGVzKSB7CisJCQlpZiAoZmxhZ3MgJiBCVFJfTk9fTE9DS0lOR19GTEFHKSB7CisJ CQkJLyogU2V0IG5vIGxvY2tzIHdoZW4gYXBwbHlpbmcgbG9nCisJCQkJaW4gb25saW5lIHRhYmxl IHJlYnVpbGQuICovCisJCQl9IGVsc2UgaWYgKHRyeC0+ZHVwbGljYXRlcykgewogCiAJCQkJLyog SWYgdGhlIFNRTC1xdWVyeSB3aWxsIHVwZGF0ZSBvciByZXBsYWNlCiAJCQkJZHVwbGljYXRlIGtl eSB3ZSB3aWxsIHRha2UgWC1sb2NrIGZvcgpAQCAtMjA0MCw3ICsyMDUwLDEwIEBAIHJvd19pbnNf ZHVwbGljYXRlX2Vycm9yX2luX2NsdXN0KAogCQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhy ZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHMsCiAJCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhl YXApOwogCi0JCQlpZiAodHJ4LT5kdXBsaWNhdGVzKSB7CisJCQlpZiAoZmxhZ3MgJiBCVFJfTk9f TE9DS0lOR19GTEFHKSB7CisJCQkJLyogU2V0IG5vIGxvY2tzIHdoZW4gYXBwbHlpbmcgbG9nCisJ CQkJaW4gb25saW5lIHRhYmxlIHJlYnVpbGQuICovCisJCQl9IGVsc2UgaWYgKHRyeC0+ZHVwbGlj YXRlcykgewogCiAJCQkJLyogSWYgdGhlIFNRTC1xdWVyeSB3aWxsIHVwZGF0ZSBvciByZXBsYWNl CiAJCQkJZHVwbGljYXRlIGtleSB3ZSB3aWxsIHRha2UgWC1sb2NrIGZvcgpAQCAtMjExNywxOCAr MjEzMCwyMSBAQCByb3dfaW5zX211c3RfbW9kaWZ5X3JlYygKIH0KIAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVRy aWVzIHRvIGluc2VydCBhbiBlbnRyeSBpbnRvIGEgY2x1c3RlcmVkIGluZGV4LiBJZiBhIHJlY29y ZCB3aXRoIHRoZQotc2FtZSB1bmlxdWUga2V5IGlzIGZvdW5kLCB0aGUgb3RoZXIgcmVjb3JkIGlz IG5lY2Vzc2FyaWx5IG1hcmtlZAotZGVsZXRlZCBieSBhIGNvbW1pdHRlZCB0cmFuc2FjdGlvbiwg b3IgYSB1bmlxdWUga2V5IHZpb2xhdGlvbiBlcnJvcgotb2NjdXJzLiBUaGUgZGVsZXRlIG1hcmtl ZCByZWNvcmQgaXMgdGhlbiB1cGRhdGVkIHRvIGFuIGV4aXN0aW5nCi1yZWNvcmQsIGFuZCB3ZSBt dXN0IHdyaXRlIGFuIHVuZG8gbG9nIHJlY29yZCBvbiB0aGUgZGVsZXRlIG1hcmtlZAotcmVjb3Jk LgotQHJldHVybiBEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsIERCX0ZBSUwgaWYgcGVzc2ltaXN0 aWMKLXJldHJ5IG5lZWRlZCwgb3IgZXJyb3IgY29kZSAqLwotc3RhdGljIF9fYXR0cmlidXRlX18o KG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCitUcmllcyB0byBpbnNlcnQgYW4gZW50cnkg aW50byBhIGNsdXN0ZXJlZCBpbmRleCwgaWdub3JpbmcgZm9yZWlnbiBrZXkKK2NvbnN0cmFpbnRz LiBJZiBhIHJlY29yZCB3aXRoIHRoZSBzYW1lIHVuaXF1ZSBrZXkgaXMgZm91bmQsIHRoZSBvdGhl cgorcmVjb3JkIGlzIG5lY2Vzc2FyaWx5IG1hcmtlZCBkZWxldGVkIGJ5IGEgY29tbWl0dGVkIHRy YW5zYWN0aW9uLCBvciBhCit1bmlxdWUga2V5IHZpb2xhdGlvbiBlcnJvciBvY2N1cnMuIFRoZSBk ZWxldGUgbWFya2VkIHJlY29yZCBpcyB0aGVuCit1cGRhdGVkIHRvIGFuIGV4aXN0aW5nIHJlY29y ZCwgYW5kIHdlIG11c3Qgd3JpdGUgYW4gdW5kbyBsb2cgcmVjb3JkIG9uCit0aGUgZGVsZXRlIG1h cmtlZCByZWNvcmQuCitAcmV0dmFsIERCX1NVQ0NFU1Mgb24gc3VjY2VzcworQHJldHZhbCBEQl9M T0NLX1dBSVQgb24gbG9jayB3YWl0IHdoZW4gIShmbGFncyAmIEJUUl9OT19MT0NLSU5HX0ZMQUcp CitAcmV0dmFsIERCX0ZBSUwgaWYgcmV0cnkgd2l0aCBCVFJfTU9ESUZZX1RSRUUgaXMgbmVlZGVk CitAcmV0dXJuIGVycm9yIGNvZGUgKi8KK1VOSVZfSU5URVJOCiBkYmVycl90CiByb3dfaW5zX2Ns dXN0X2luZGV4X2VudHJ5X2xvdygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCXVs aW50CQlmbGFncywJLyohPCBpbjogdW5kbyBsb2dnaW5nIGFuZCBsb2NraW5nIGZsYWdzICovCiAJ dWxpbnQJCW1vZGUsCS8qITwgaW46IEJUUl9NT0RJRllfTEVBRiBvciBCVFJfTU9ESUZZX1RSRUUs CiAJCQkJZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2Ugd2lzaCBvcHRpbWlzdGljIG9yCiAJCQkJcGVz c2ltaXN0aWMgZGVzY2VudCBkb3duIHRoZSBpbmRleCB0cmVlICovCkBAIC0yMTgyLDcgKzIxOTgs NyBAQCByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygKIAkJREJfTE9DS19XQUlUICovCiAK IAkJZXJyID0gcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5fY2x1c3QoCi0JCQkmY3Vyc29yLCBl bnRyeSwgdGhyLCAmbXRyKTsKKwkJCWZsYWdzLCAmY3Vyc29yLCBlbnRyeSwgdGhyLCAmbXRyKTsK IAkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CiBlcnJfZXhpdDoKIAkJCW10cl9jb21taXQoJm10 cik7CkBAIC0yMTk3LDcgKzIyMTMsNyBAQCBlcnJfZXhpdDoKIAkJbWVtX2hlYXBfdCoJZW50cnlf aGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDI0KTsKIAogCQllcnIgPSByb3dfaW5zX2NsdXN0X2lu ZGV4X2VudHJ5X2J5X21vZGlmeSgKLQkJCW1vZGUsICZjdXJzb3IsICZvZmZzZXRzLCAmb2Zmc2V0 c19oZWFwLAorCQkJZmxhZ3MsIG1vZGUsICZjdXJzb3IsICZvZmZzZXRzLCAmb2Zmc2V0c19oZWFw LAogCQkJZW50cnlfaGVhcCwgJmJpZ19yZWMsIGVudHJ5LCB0aHIsICZtdHIpOwogCiAJCWlmIChi aWdfcmVjKSB7CkBAIC0yMjY3LDcgKzIyODMsNyBAQCBlcnJfZXhpdDoKIAkJaWYgKG1vZGUgIT0g QlRSX01PRElGWV9UUkVFKSB7CiAJCQl1dF9hZChtb2RlID09IEJUUl9NT0RJRllfTEVBRik7CiAJ CQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0KAotCQkJCTAsICZjdXJzb3IsICZvZmZz ZXRzLCAmb2Zmc2V0c19oZWFwLAorCQkJCWZsYWdzLCAmY3Vyc29yLCAmb2Zmc2V0cywgJm9mZnNl dHNfaGVhcCwKIAkJCQllbnRyeSwgJmluc2VydF9yZWMsICZiaWdfcmVjLAogCQkJCW5fZXh0LCB0 aHIsICZtdHIpOwogCQl9IGVsc2UgewpAQCAtMjI3Nyw3ICsyMjkzLDcgQEAgZXJyX2V4aXQ6CiAJ CQkJZ290byBlcnJfZXhpdDsKIAkJCX0KIAkJCWVyciA9IGJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5z ZXJ0KAotCQkJCTAsICZjdXJzb3IsICZvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLAorCQkJCWZsYWdz LCAmY3Vyc29yLCAmb2Zmc2V0cywgJm9mZnNldHNfaGVhcCwKIAkJCQllbnRyeSwgJmluc2VydF9y ZWMsICZiaWdfcmVjLAogCQkJCW5fZXh0LCB0aHIsICZtdHIpOwogCQl9CkBAIC0yMzA4LDEyICsy MzI0LDE1IEBAIGVycl9leGl0OgogVHJpZXMgdG8gaW5zZXJ0IGFuIGVudHJ5IGludG8gYSBzZWNv bmRhcnkgaW5kZXguIElmIGEgcmVjb3JkIHdpdGggZXhhY3RseSB0aGUKIHNhbWUgZmllbGRzIGlz IGZvdW5kLCB0aGUgb3RoZXIgcmVjb3JkIGlzIG5lY2Vzc2FyaWx5IG1hcmtlZCBkZWxldGVkLgog SXQgaXMgdGhlbiB1bm1hcmtlZC4gT3RoZXJ3aXNlLCB0aGUgZW50cnkgaXMganVzdCBpbnNlcnRl ZCB0byB0aGUgaW5kZXguCi1AcmV0dXJuIERCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfRkFJ TCBpZiBwZXNzaW1pc3RpYyByZXRyeSBuZWVkZWQsCi1vciBlcnJvciBjb2RlICovCi1zdGF0aWMg X19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSkKK0ByZXR2YWwgREJf U1VDQ0VTUyBvbiBzdWNjZXNzCitAcmV0dmFsIERCX0xPQ0tfV0FJVCBvbiBsb2NrIHdhaXQgd2hl biAhKGZsYWdzICYgQlRSX05PX0xPQ0tJTkdfRkxBRykKK0ByZXR2YWwgREJfRkFJTCBpZiByZXRy eSB3aXRoIEJUUl9NT0RJRllfVFJFRSBpcyBuZWVkZWQKK0ByZXR1cm4gZXJyb3IgY29kZSAqLwor VU5JVl9JTlRFUk4KIGRiZXJyX3QKIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2xvdygKIC8qPT09 PT09PT09PT09PT09PT09PT09PT09Ki8KKwl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9n Z2luZyBhbmQgbG9ja2luZyBmbGFncyAqLwogCXVsaW50CQltb2RlLAkvKiE8IGluOiBCVFJfTU9E SUZZX0xFQUYgb3IgQlRSX01PRElGWV9UUkVFLAogCQkJCWRlcGVuZGluZyBvbiB3aGV0aGVyIHdl IHdpc2ggb3B0aW1pc3RpYyBvcgogCQkJCXBlc3NpbWlzdGljIGRlc2NlbnQgZG93biB0aGUgaW5k ZXggdHJlZSAqLwpAQCAtMjM4MCw3ICsyMzk5LDggQEAgcm93X2luc19zZWNfaW5kZXhfZW50cnlf bG93KAogCQkJCQkgICAgfHwgY3Vyc29yLmxvd19tYXRjaCA+PSBuX3VuaXF1ZSkpIHsKIAogCQlt dHJfY29tbWl0KCZtdHIpOwotCQllcnIgPSByb3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9kdXBs aWNhdGUoaW5kZXgsIGVudHJ5LCB0aHIpOworCQllcnIgPSByb3dfaW5zX3NjYW5fc2VjX2luZGV4 X2Zvcl9kdXBsaWNhdGUoCisJCQlmbGFncywgaW5kZXgsIGVudHJ5LCB0aHIpOwogCQltdHJfc3Rh cnQoJm10cik7CiAKIAkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CkBAIC0yNDA5LDcgKzI0Mjks NyBAQCByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9sb3coCiAJCQlVTElOVF9VTkRFRklORUQsICZo ZWFwKTsKIAogCQllcnIgPSByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9ieV9tb2RpZnkoCi0JCQlt b2RlLCAmY3Vyc29yLCAmb2Zmc2V0cywKKwkJCWZsYWdzLCBtb2RlLCAmY3Vyc29yLCAmb2Zmc2V0 cywKIAkJCW9mZnNldHNfaGVhcCwgaGVhcCwgZW50cnksIHRociwgJm10cik7CiAJfSBlbHNlIHsK IAkJcmVjX3QqCQlpbnNlcnRfcmVjOwpAQCAtMjQxNyw3ICsyNDM3LDcgQEAgcm93X2luc19zZWNf aW5kZXhfZW50cnlfbG93KAogCiAJCWlmIChtb2RlID09IEJUUl9NT0RJRllfTEVBRikgewogCQkJ ZXJyID0gYnRyX2N1cl9vcHRpbWlzdGljX2luc2VydCgKLQkJCQkwLCAmY3Vyc29yLCAmb2Zmc2V0 cywgJmhlYXAsCisJCQkJZmxhZ3MsICZjdXJzb3IsICZvZmZzZXRzLCAmaGVhcCwKIAkJCQllbnRy eSwgJmluc2VydF9yZWMsCiAJCQkJJmJpZ19yZWMsIDAsIHRociwgJm10cik7CiAJCX0gZWxzZSB7 CkBAIC0yNDI3LDcgKzI0NDcsNyBAQCByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9sb3coCiAJCQkJ ZXJyID0gREJfTE9DS19UQUJMRV9GVUxMOwogCQkJfSBlbHNlIHsKIAkJCQllcnIgPSBidHJfY3Vy X3Blc3NpbWlzdGljX2luc2VydCgKLQkJCQkJMCwgJmN1cnNvciwgJm9mZnNldHMsICZoZWFwLAor CQkJCQlmbGFncywgJmN1cnNvciwgJm9mZnNldHMsICZoZWFwLAogCQkJCQllbnRyeSwgJmluc2Vy dF9yZWMsCiAJCQkJCSZiaWdfcmVjLCAwLCB0aHIsICZtdHIpOwogCQkJfQpAQCAtMjUxNiw3ICsy NTM2LDcgQEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeSgKIAogCS8qIFRyeSBmaXJzdCBvcHRp bWlzdGljIGRlc2NlbnQgdG8gdGhlIEItdHJlZSAqLwogCi0JZXJyID0gcm93X2luc19jbHVzdF9p bmRleF9lbnRyeV9sb3coQlRSX01PRElGWV9MRUFGLCBpbmRleCwgZW50cnksCisJZXJyID0gcm93 X2luc19jbHVzdF9pbmRleF9lbnRyeV9sb3coMCwgQlRSX01PRElGWV9MRUFGLCBpbmRleCwgZW50 cnksCiAJCQkJCSAgICBuX2V4dCwgdGhyKTsKIAlpZiAoZXJyICE9IERCX0ZBSUwpIHsKIApAQCAt MjUyNSw3ICsyNTQ1LDcgQEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeSgKIAogCS8qIFRyeSB0 aGVuIHBlc3NpbWlzdGljIGRlc2NlbnQgdG8gdGhlIEItdHJlZSAqLwogCi0JcmV0dXJuKHJvd19p bnNfY2x1c3RfaW5kZXhfZW50cnlfbG93KEJUUl9NT0RJRllfVFJFRSwgaW5kZXgsIGVudHJ5LAor CXJldHVybihyb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygwLCBCVFJfTU9ESUZZX1RSRUUs IGluZGV4LCBlbnRyeSwKIAkJCQkJICAgICBuX2V4dCwgdGhyKSk7CiB9CiAKQEAgLTI1NjYsMTUg KzI1ODYsMTUgQEAgcm93X2luc19zZWNfaW5kZXhfZW50cnkoCiAKIAkvKiBUcnkgZmlyc3Qgb3B0 aW1pc3RpYyBkZXNjZW50IHRvIHRoZSBCLXRyZWUgKi8KIAotCWVyciA9IHJvd19pbnNfc2VjX2lu ZGV4X2VudHJ5X2xvdyhCVFJfTU9ESUZZX0xFQUYsIGluZGV4LAotCQkJCQkgIG9mZnNldHNfaGVh cCwgaGVhcCwgZW50cnksIHRocik7CisJZXJyID0gcm93X2luc19zZWNfaW5kZXhfZW50cnlfbG93 KAorCQkwLCBCVFJfTU9ESUZZX0xFQUYsIGluZGV4LCBvZmZzZXRzX2hlYXAsIGhlYXAsIGVudHJ5 LCB0aHIpOwogCWlmIChlcnIgPT0gREJfRkFJTCkgewogCQltZW1faGVhcF9lbXB0eShoZWFwKTsK IAogCQkvKiBUcnkgdGhlbiBwZXNzaW1pc3RpYyBkZXNjZW50IHRvIHRoZSBCLXRyZWUgKi8KIAog CQllcnIgPSByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9sb3coCi0JCQlCVFJfTU9ESUZZX1RSRUUs IGluZGV4LAorCQkJMCwgQlRSX01PRElGWV9UUkVFLCBpbmRleCwKIAkJCW9mZnNldHNfaGVhcCwg aGVhcCwgZW50cnksIHRocik7CiAJfQogCgpObyBidW5kbGUgKHJlYXNvbjogdXNlbGVzcyBmb3Ig cHVzaCBlbWFpbHMpLg==