From: marko.makela Date: February 8 2011 11:40am Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3311) List-Archive: http://lists.mysql.com/commits/130699 Message-Id: <201102081141.p18BOk1r009596@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1939723462==" --===============1939723462== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjA4MDU1MzM3LXdzMGkw MmdpeGFscm01MTIKCiAzMzExIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDItMDggW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjEtaW5ub2RiIHRvIG15c3FsLTUuNS1pbm5vZGIuCgogICAgbW9kaWZp ZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2J0ci9idHIwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwbWVt LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnRyMHR5cGVzLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2RpY3QwbWVtLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwemlwLmgK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQogICAgICBzdG9yYWdlL2lubm9i YXNlL3BhZ2UvcGFnZTBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdl LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHVwZC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFy dC5jCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwMjA4MDU1MzM3LXdzMGkwMmdpeGFscm01MTIKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9idHIvYnRyMGJ0ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4 MTEzOTI0LWRtbTlrdmdyMHhyajEwY2EKQEAgLTQyLDYgKzQyLDU2MCBAQCBDcmVhdGVkIDYvMi8x OTk0IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgImlidWYwaWJ1Zi5oIgogI2luY2x1ZGUgInRyeDB0 cnguaCIKIAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworIyBpbmNsdWRlICJzcnYwc3J2LmgiCisj IGluY2x1ZGUgInV0MHJidC5oIgorCisvKiogVFJVRSB3aGVuIG1lc3NhZ2VzIGFib3V0IGluZGV4 LT5ibG9icyBtb2RpZmljYXRpb24gYXJlIGVuYWJsZWQuICovCitzdGF0aWMgaWJvb2wgYnRyX2Js b2JfZGJnX21zZzsKKworLyoqIElzc3VlIGEgbWVzc2FnZSBhYm91dCBhbiBvcGVyYXRpb24gb24g aW5kZXgtPmJsb2JzLgorQHBhcmFtIG9wCW9wZXJhdGlvbgorQHBhcmFtIGIJdGhlIGVudHJ5IGJl aW5nIHN1YmplY3RlZCB0byB0aGUgb3BlcmF0aW9uCitAcGFyYW0gY3R4CXRoZSBjb250ZXh0IG9m IHRoZSBvcGVyYXRpb24gKi8KKyNkZWZpbmUgYnRyX2Jsb2JfZGJnX21zZ19pc3N1ZShvcCwgYiwg Y3R4KQkJCVwKKwlmcHJpbnRmKHN0ZGVyciwgb3AgIiAldToldToldS0+JXUgJXMoJXUsJXUsJXUp XG4iLAlcCisJCShiKS0+cmVmX3BhZ2Vfbm8sIChiKS0+cmVmX2hlYXBfbm8sCQlcCisJCShiKS0+ cmVmX2ZpZWxkX25vLCAoYiktPmJsb2JfcGFnZV9ubywgY3R4LAlcCisJCShiKS0+b3duZXIsIChi KS0+YWx3YXlzX293bmVyLCAoYiktPmRlbCkKKworLyoqIEluc2VydCB0byBpbmRleC0+YmxvYnMg YSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uLgorQHBhcmFtIGluZGV4CXRoZSBpbmRl eCB0cmVlCitAcGFyYW0gYgl0aGUgcmVmZXJlbmNlCitAcGFyYW0gY3R4CWNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yYnRfaW5zZXJ0KAor Lyo9PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4v b3V0OiBpbmRleCB0cmVlICovCisJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWIsCS8qITwgaW46IHRo ZSByZWZlcmVuY2UgKi8KKwljb25zdCBjaGFyKgkJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3Ig bG9nZ2luZykgKi8KK3sKKwlpZiAoYnRyX2Jsb2JfZGJnX21zZykgeworCQlidHJfYmxvYl9kYmdf bXNnX2lzc3VlKCJpbnNlcnQiLCBiLCBjdHgpOworCX0KKwltdXRleF9lbnRlcigmaW5kZXgtPmJs b2JzX211dGV4KTsKKwlyYnRfaW5zZXJ0KGluZGV4LT5ibG9icywgYiwgYik7CisJbXV0ZXhfZXhp dCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKworLyoqIFJlbW92ZSBmcm9tIGluZGV4LT5ibG9i cyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhlIGlu ZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAoZm9y IGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUo CisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBp bi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBpbjog dGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQgKGZv ciBsb2dnaW5nKSAqLworeworCWlmIChidHJfYmxvYl9kYmdfbXNnKSB7CisJCWJ0cl9ibG9iX2Ri Z19tc2dfaXNzdWUoImRlbGV0ZSIsIGIsIGN0eCk7CisJfQorCW11dGV4X2VudGVyKCZpbmRleC0+ YmxvYnNfbXV0ZXgpOworCXV0X2EocmJ0X2RlbGV0ZShpbmRleC0+YmxvYnMsIGIpKTsKKwltdXRl eF9leGl0KCZpbmRleC0+YmxvYnNfbXV0ZXgpOworfQorCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb21wYXJhdG9y IGZvciBpdGVtcyAoYnRyX2Jsb2JfZGJnX3QpIGluIGluZGV4LT5ibG9icy4KK1RoZSBrZXkgaW4g aW5kZXgtPmJsb2JzIGlzIChyZWZfcGFnZV9ubywgcmVmX2hlYXBfbm8sIHJlZl9maWVsZF9ubyku CitAcmV0dXJuIG5lZ2F0aXZlLCAwIG9yIHBvc2l0aXZlIGlmICphPCpiLCAqYT0qYiwgKmE+KmIg Ki8KK3N0YXRpYworaW50CitidHJfYmxvYl9kYmdfY21wKAorLyo9PT09PT09PT09PT09Ki8KKwlj b25zdCB2b2lkKglhLAkvKiE8IGluOiBmaXJzdCBidHJfYmxvYl9kYmdfdCB0byBjb21wYXJlICov CisJY29uc3Qgdm9pZCoJYikJLyohPCBpbjogc2Vjb25kIGJ0cl9ibG9iX2RiZ190IHRvIGNvbXBh cmUgKi8KK3sKKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYWEJPSBhOworCWNvbnN0IGJ0cl9ibG9i X2RiZ190KgliYgk9IGI7CisKKwl1dF9hZChhYSAhPSBOVUxMKTsKKwl1dF9hZChiYiAhPSBOVUxM KTsKKworCWlmIChhYS0+cmVmX3BhZ2Vfbm8gIT0gYmItPnJlZl9wYWdlX25vKSB7CisJCXJldHVy bihhYS0+cmVmX3BhZ2Vfbm8gPCBiYi0+cmVmX3BhZ2Vfbm8gPyAtMSA6IDEpOworCX0KKwlpZiAo YWEtPnJlZl9oZWFwX25vICE9IGJiLT5yZWZfaGVhcF9ubykgeworCQlyZXR1cm4oYWEtPnJlZl9o ZWFwX25vIDwgYmItPnJlZl9oZWFwX25vID8gLTEgOiAxKTsKKwl9CisJaWYgKGFhLT5yZWZfZmll bGRfbm8gIT0gYmItPnJlZl9maWVsZF9ubykgeworCQlyZXR1cm4oYWEtPnJlZl9maWVsZF9ubyA8 IGJiLT5yZWZfZmllbGRfbm8gPyAtMSA6IDEpOworCX0KKwlyZXR1cm4oMCk7Cit9CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0FkZCBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGluZGV4 LT5ibG9icyBtYXAuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9ibG9i KAorLyo9PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBj bHVzdGVyZWQgaW5kZXggcmVjb3JkICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBvZmYt cGFnZSBjb2x1bW4gbnVtYmVyICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0IHBh Z2Ugb2YgdGhlIGNvbHVtbiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291dDog aW5kZXggdHJlZSAqLworCWNvbnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworeworCWJ0cl9ibG9iX2RiZ190CWI7CisJY29uc3QgcGFnZV90KglwYWdlCT0g cGFnZV9hbGlnbihyZWMpOworCisJdXRfYShpbmRleC0+YmxvYnMpOworCisJYi5ibG9iX3BhZ2Vf bm8gPSBwYWdlX25vOworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2UpOwor CWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2ZpZWxk X25vID0gZmllbGRfbm87CisJdXRfYShiLnJlZl9maWVsZF9ubyA+PSBpbmRleC0+bl91bmlxKTsK KwliLmFsd2F5c19vd25lciA9IGIub3duZXIgPSBUUlVFOworCWIuZGVsID0gRkFMU0U7CisJdXRf YSghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpKTsKKwlidHJf YmxvYl9kYmdfcmJ0X2luc2VydChpbmRleCwgJmIsIGN0eCk7Cit9CisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Fk ZCB0byBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBmcm9t IGEgcmVjb3JkLgorQHJldHVybiBudW1iZXIgb2YgcmVmZXJlbmNlcyBhZGRlZCAqLworVU5JVl9J TlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfYWRkX3JlYygKKy8qPT09PT09PT09PT09PT09PT0q LworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwg aW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworeworCXVsaW50CQljb3VudAk9IDA7CisJdWxpbnQJCWk7CisJYnRyX2Jsb2Jf ZGJnX3QJYjsKKwlpYm9vbAkJZGVsOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBp bmRleCwgb2Zmc2V0cykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKSB7 CisJCXJldHVybigwKTsKKwl9CisKKwliLnJlZl9wYWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhw YWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhy ZWMpOworCWRlbCA9IChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHJlY19vZmZzX2NvbXAob2Zm c2V0cykpICE9IDApOworCisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25fZmllbGRzKG9mZnNl dHMpOyBpKyspIHsKKwkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKKwkJ CXVsaW50CQlsZW47CisJCQljb25zdCBieXRlKglmaWVsZF9yZWYgPSByZWNfZ2V0X250aF9maWVs ZCgKKwkJCQlyZWMsIG9mZnNldHMsIGksICZsZW4pOworCisJCQl1dF9hKGxlbiAhPSBVTklWX1NR TF9OVUxMKTsKKwkJCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCQkJ ZmllbGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCWlmICgh bWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJICAgIEJUUl9FWFRFUk5fRklF TERfUkVGX1NJWkUpKSB7CisJCQkJLyogdGhlIGNvbHVtbiBoYXMgbm90IGJlZW4gc3RvcmVkIHll dCAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJCQli LmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VY VEVSTl9QQUdFX05PKTsKKwkJCXV0X2EoYi5yZWZfZmllbGRfbm8gPj0gaW5kZXgtPm5fdW5pcSk7 CisJCQliLmFsd2F5c19vd25lciA9IGIub3duZXIKKwkJCQk9ICEoZmllbGRfcmVmW0JUUl9FWFRF Uk5fTEVOXQorCQkJCSAgICAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRyk7CisJCQliLmRlbCA9IGRl bDsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCBjdHgpOworCQkJY291 bnQrKzsKKwkJfQorCX0KKworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rpc3Bs YXkgdGhlIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24gaXMg dG8gYmUgY2FsbGVkIGZyb20gYSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVha3Bv aW50IG9uIHV0X2RiZ19hc3NlcnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJOCit2 b2lkCitidHJfYmxvYl9kYmdfcHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3QgZGlj dF9pbmRleF90KglpbmRleCkJLyohPCBpbjogaW5kZXggdHJlZSAqLworeworCWNvbnN0IGliX3Ji dF9ub2RlX3QqCW5vZGU7CisKKwlpZiAoIWluZGV4LT5ibG9icykgeworCQlyZXR1cm47CisJfQor CisJLyogV2UgaW50ZW50aW9uYWxseSBkbyBub3QgYWNxdWlyZSBpbmRleC0+YmxvYnNfbXV0ZXgg aGVyZS4KKwlUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZGVidWdnZXIsIGFu ZCB0aGUgY2FsbGVyCisJc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleC0+YmxvYnNfbXV0 ZXggaXMgaGVsZC4gKi8KKworCWZvciAobm9kZSA9IHJidF9maXJzdChpbmRleC0+YmxvYnMpOwor CSAgICAgbm9kZSAhPSBOVUxMOyBub2RlID0gcmJ0X25leHQoaW5kZXgtPmJsb2JzLCBub2RlKSkg eworCQljb25zdCBidHJfYmxvYl9kYmdfdCoJYgorCQkJPSByYnRfdmFsdWUoYnRyX2Jsb2JfZGJn X3QsIG5vZGUpOworCQlmcHJpbnRmKHN0ZGVyciwgIiV1OiV1OiV1LT4ldSVzJXMlc1xuIiwKKwkJ CWItPnJlZl9wYWdlX25vLCBiLT5yZWZfaGVhcF9ubywgYi0+cmVmX2ZpZWxkX25vLAorCQkJYi0+ YmxvYl9wYWdlX25vLAorCQkJYi0+b3duZXIgPyAiIiA6ICIoZGlzb3duZWQpIiwKKwkJCWItPmFs d2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwKKwkJCWItPmRlbCA/ICIoZGVsZXRl ZCkiIDogIiIpOworCX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVtb3ZlIGZyb20gaW5kZXgtPmJsb2Jz IGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJvbSBhIHJlY29yZC4KK0ByZXR1 cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50Citi dHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0 IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8q ITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IG9mZnNl dHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAq LworeworCXVsaW50CQlpOworCXVsaW50CQljb3VudAk9IDA7CisJYnRyX2Jsb2JfZGJnX3QJYjsK KworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKworCWlm ICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgeworCQlyZXR1cm4oMCk7CisJfQorCisJ Yi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwliLnJl Zl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKworCWZvciAoaSA9IDA7IGkg PCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmIChyZWNfb2Zmc19udGhf ZXh0ZXJuKG9mZnNldHMsIGkpKSB7CisJCQl1bGludAkJbGVuOworCQkJY29uc3QgYnl0ZSoJZmll bGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCisJCQkJcmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsK KworCQkJdXRfYShsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hKGxlbiA+PSBCVFJfRVhU RVJOX0ZJRUxEX1JFRl9TSVpFKTsKKwkJCWZpZWxkX3JlZiArPSBsZW4gLSBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFOworCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJCQliLmJsb2JfcGFnZV9u byA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VYVEVSTl9QQUdFX05P KTsKKworCQkJc3dpdGNoIChiLmJsb2JfcGFnZV9ubykgeworCQkJY2FzZSAwOgorCQkJCS8qIFRo ZSBjb2x1bW4gaGFzIG5vdCBiZWVuIHN0b3JlZCB5ZXQuCisJCQkJVGhlIEJMT0IgcG9pbnRlciBt dXN0IGJlIGFsbCB6ZXJvLgorCQkJCVRoZXJlIGNhbm5vdCBiZSBhIEJMT0Igc3RhcnRpbmcgYXQK KwkJCQlwYWdlIDAsIGJlY2F1c2UgcGFnZSAwIGlzIHJlc2VydmVkIGZvcgorCQkJCXRoZSB0YWJs ZXNwYWNlIGhlYWRlci4gKi8KKwkJCQl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZf emVybywKKwkJCQkJICAgICBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJCQkJLyogZmFs bCB0aHJvdWdoICovCisJCQljYXNlIEZJTF9OVUxMOgorCQkJCS8qIHRoZSBjb2x1bW4gaGFzIGJl ZW4gZnJlZWQgYWxyZWFkeSAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlidHJfYmxvYl9k YmdfcmJ0X2RlbGV0ZShpbmRleCwgJmIsIGN0eCk7CisJCQljb3VudCsrOworCQl9CisJfQorCisJ cmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8g cmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gb3IgdG8KK3RoZSBnaXZlbiBwYWdl LiBJbnZva2VkIHdoZW4gZnJlZWluZyBvciBjbGVhcmluZyBhIHBhZ2UuCitAcmV0dXJuIFRSVUUg d2hlbiBubyBvcnBoYW4gcmVmZXJlbmNlcyBleGlzdCAqLworVU5JVl9JTlRFUk4KK2lib29sCiti dHJfYmxvYl9kYmdfaXNfZW1wdHkoCisvKj09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRl eF90KglpbmRleCwJCS8qITwgaW46IGluZGV4ICovCisJdWxpbnQJCXBhZ2Vfbm8pCS8qITwgaW46 IHBhZ2UgbnVtYmVyICovCit7CisJY29uc3QgaWJfcmJ0X25vZGVfdCoJbm9kZTsKKwlpYm9vbAkJ CXN1Y2Nlc3MJPSBUUlVFOworCisJaWYgKCFpbmRleC0+YmxvYnMpIHsKKwkJcmV0dXJuKHN1Y2Nl c3MpOworCX0KKworCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCisJZm9yIChu b2RlID0gcmJ0X2ZpcnN0KGluZGV4LT5ibG9icyk7CisJICAgICBub2RlICE9IE5VTEw7IG5vZGUg PSByYnRfbmV4dChpbmRleC0+YmxvYnMsIG5vZGUpKSB7CisJCWNvbnN0IGJ0cl9ibG9iX2RiZ190 KgliCisJCQk9IHJidF92YWx1ZShidHJfYmxvYl9kYmdfdCwgbm9kZSk7CisKKwkJaWYgKGItPnJl Zl9wYWdlX25vICE9IHBhZ2Vfbm8gJiYgYi0+YmxvYl9wYWdlX25vICE9IHBhZ2Vfbm8pIHsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiSW5ub0RCOiBvcnBoYW4g QkxPQiByZWYlcyVzJXMgJXU6JXU6JXUtPiV1XG4iLAorCQkJYi0+b3duZXIgPyAiIiA6ICIoZGlz b3duZWQpIiwKKwkJCWItPmFsd2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwKKwkJ CWItPmRlbCA/ICIoZGVsZXRlZCkiIDogIiIsCisJCQliLT5yZWZfcGFnZV9ubywgYi0+cmVmX2hl YXBfbm8sIGItPnJlZl9maWVsZF9ubywKKwkJCWItPmJsb2JfcGFnZV9ubyk7CisKKwkJaWYgKGIt PmJsb2JfcGFnZV9ubyAhPSBwYWdlX25vIHx8IGItPm93bmVyIHx8ICFiLT5kZWwpIHsKKwkJCXN1 Y2Nlc3MgPSBGQUxTRTsKKwkJfQorCX0KKworCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRl eCk7CisJcmV0dXJuKHN1Y2Nlc3MpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb3VudCBhbmQgcHJvY2Vz cyBhbGwgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIG9uIGEgcGFnZS4KK0ByZXR1cm4g bnVtYmVyIG9mIHJlZmVyZW5jZXMgcHJvY2Vzc2VkICovCitVTklWX0lOVEVSTgordWxpbnQKK2J0 cl9ibG9iX2RiZ19vcCgKKy8qPT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCQlwYWdlLAkv KiE8IGluOiBCLXRyZWUgbGVhZiBwYWdlICovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46 IHJlY29yZCB0byBzdGFydCBmcm9tCisJCQkJCShOVUxMIHRvIHByb2Nlc3MgdGhlIHdob2xlIHBh Z2UpICovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNv bnN0IGNoYXIqCQljdHgsCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCWNvbnN0 IGJ0cl9ibG9iX2RiZ19vcF9mCW9wKQkvKiE8IGluOiBvcGVyYXRpb24gb24gcmVjb3JkcyAqLwor eworCXVsaW50CQljb3VudAk9IDA7CisJbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7CisJdWxpbnQJ CW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKKwl1bGludCoJCW9mZnNldHMJPSBvZmZz ZXRzXzsKKwlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKKworCXV0X2EoZmlsX3BhZ2VfZ2V0X3R5 cGUocGFnZSkgPT0gRklMX1BBR0VfSU5ERVgpOworCXV0X2EoIXJlYyB8fCBwYWdlX2FsaWduKHJl YykgPT0gcGFnZSk7CisKKwlpZiAoIWluZGV4LT5ibG9icyB8fCAhcGFnZV9pc19sZWFmKHBhZ2Up CisJICAgIHx8ICFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQlyZXR1cm4oMCk7CisJ fQorCisJaWYgKHJlYyA9PSBOVUxMKSB7CisJCXJlYyA9IHBhZ2VfZ2V0X2luZmltdW1fcmVjKHBh Z2UpOworCX0KKworCWRvIHsKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4 LCBvZmZzZXRzLAorCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQljb3VudCArPSBv cChyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpOworCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9j b25zdChyZWMpOworCX0gd2hpbGUgKCFwYWdlX3JlY19pc19zdXByZW11bShyZWMpKTsKKworCWlm IChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7CisJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJfQor CisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5kIGFkZCB0byBpbmRl eC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRz IG9uIGEgcGFnZS4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgYWRkZWQgKi8KK1VOSVZf SU5URVJOCit1bGludAorYnRyX2Jsb2JfZGJnX2FkZCgKKy8qPT09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiByZXdyaXR0ZW4gcGFnZSAqLworCWRpY3RfaW5kZXhf dCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyohPCBp bjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0 eShpbmRleCwgcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisKKwlyZXR1cm4oYnRyX2Jsb2JfZGJn X29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsIGJ0cl9ibG9iX2RiZ19hZGRfcmVjKSk7Cit9CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMgYW55IHJlZmVy ZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRzIG9uIGEgcGFnZS4KK1VzZWQg d2hlbiByZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUgY29weWluZyB0aGUgcmVjb3Jkcy4KK0By ZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50 CitidHJfYmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdl X3QqCXBhZ2UsCS8qITwgaW46IGItdHJlZSBwYWdlICovCisJZGljdF9pbmRleF90KglpbmRleCwJ LyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0 IChmb3IgbG9nZ2luZykgKi8KK3sKKwl1bGludAljb3VudDsKKworCWNvdW50ID0gYnRyX2Jsb2Jf ZGJnX29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZV9y ZWMpOworCisJLyogQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIGV4aXN0LiAqLworCWJ0cl9ibG9i X2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOworCisJcmV0 dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVzdG9yZSBpbiBpbmRleC0+YmxvYnMgYW55 IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworVXNlZCB3aGVuIHBhZ2UgcmVvcmdhbml6 ZSBmYWlscyBkdWUgdG8gY29tcHJlc3NlZCBwYWdlIG92ZXJmbG93LiAqLworVU5JVl9JTlRFUk4K K3ZvaWQKK2J0cl9ibG9iX2RiZ19yZXN0b3JlKAorLyo9PT09PT09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KglucGFnZSwJLyohPCBpbjogcGFnZSB0aGF0IGZhaWxlZCB0byBjb21wcmVzcyAg Ki8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGNvcHkgb2Ygb3JpZ2luYWwgcGFnZSAq LworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNo YXIqCWN0eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJdWxpbnQJcmVt b3ZlZDsKKwl1bGludAlhZGRlZDsKKworCXV0X2EocGFnZV9nZXRfcGFnZV9ubyhucGFnZSkgPT0g cGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisJdXRfYShwYWdlX2dldF9zcGFjZV9pZChucGFnZSkg PT0gcGFnZV9nZXRfc3BhY2VfaWQocGFnZSkpOworCisJcmVtb3ZlZCA9IGJ0cl9ibG9iX2RiZ19y ZW1vdmUobnBhZ2UsIGluZGV4LCBjdHgpOworCWFkZGVkID0gYnRyX2Jsb2JfZGJnX2FkZChwYWdl LCBpbmRleCwgY3R4KTsKKwl1dF9hKGFkZGVkID09IHJlbW92ZWQpOworfQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CitNb2RpZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5JVl9JTlRFUk4K K3ZvaWQKK2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRp Y3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJ CW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJaWJvb2wJCQlk ZWwpCS8qITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCit7CisJY29uc3QgaWJf cmJ0X25vZGVfdCoJbm9kZTsKKwlidHJfYmxvYl9kYmdfdAkJYjsKKwlidHJfYmxvYl9kYmdfdCoJ CWM7CisJdWxpbnQJCQlpOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwg b2Zmc2V0cykpOworCXV0X2EoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOworCXV0X2EoZGVs ID09ICEhZGVsKTsvKiBtdXN0IGJlIEZBTFNFPT0wIG9yIFRSVUU9PTEgKi8KKworCWlmICghcmVj X29mZnNfYW55X2V4dGVybihvZmZzZXRzKSB8fCAhaW5kZXgtPmJsb2JzKSB7CisKKwkJcmV0dXJu OworCX0KKworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24ocmVj KSk7CisJYi5yZWZfaGVhcF9ubyA9IHBhZ2VfcmVjX2dldF9oZWFwX25vKHJlYyk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAocmVj X29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJdWxpbnQJCWxlbjsKKwkJCWNvbnN0 IGJ5dGUqCWZpZWxkX3JlZiA9IHJlY19nZXRfbnRoX2ZpZWxkKAorCQkJCXJlYywgb2Zmc2V0cywg aSwgJmxlbik7CisKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYShsZW4g Pj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYgKz0gbGVuIC0gQlRS X0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYi5i bG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiArIEJUUl9FWFRF Uk5fUEFHRV9OTyk7CisKKwkJCXN3aXRjaCAoYi5ibG9iX3BhZ2Vfbm8pIHsKKwkJCWNhc2UgMDoK KwkJCQl1dF9hKG1lbWNtcChmaWVsZF9yZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJCQkgICAgQlRS X0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJCS8qIHBhZ2UgbnVtYmVyIDAgaXMgZm9yIHRo ZQorCQkJCXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXAgKi8KKwkJCWNhc2UgRklMX05VTEw6CisJCQkJ LyogdGhlIGNvbHVtbiBoYXMgYmVlbiBmcmVlZCBhbHJlYWR5ICovCisJCQkJdXRfZXJyb3I7CisJ CQl9CisKKwkJCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCQkJbm9kZSA9IHJi dF9sb29rdXAoaW5kZXgtPmJsb2JzLCAmYik7CisJCQl1dF9hKG5vZGUpOworCisJCQljID0gcmJ0 X3ZhbHVlKGJ0cl9ibG9iX2RiZ190LCBub2RlKTsKKwkJCS8qIFRoZSBmbGFnIHNob3VsZCBiZSBt b2RpZmllZC4gKi8KKwkJCWMtPmRlbCA9IGRlbDsKKwkJCWlmIChidHJfYmxvYl9kYmdfbXNnKSB7 CisJCQkJYiA9ICpjOworCQkJCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRleCk7CisJCQkJ YnRyX2Jsb2JfZGJnX21zZ19pc3N1ZSgiZGVsX21rIiwgJmIsICIiKTsKKwkJCX0gZWxzZSB7CisJ CQkJbXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKKwkJCX0KKwkJfQorCX0KK30KKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYW4gb2ZmLXBhZ2UgY29sdW1uLiAq LworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19vd25lcigKKy8qPT09PT09PT09PT09 PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJZGljdF9pbmRl eF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KgkJb2Zmc2V0 cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRleCkgKi8KKwl1bGludAkJCWksCS8qITwg aW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJCW93bikJLyohPCBpbjogVFJVRT1vd25l ZCwgRkFMU0U9ZGlzb3duZWQgKi8KK3sKKwljb25zdCBpYl9yYnRfbm9kZV90Kglub2RlOworCWJ0 cl9ibG9iX2RiZ190CQliOworCWNvbnN0IGJ5dGUqCQlmaWVsZF9yZWY7CisJdWxpbnQJCQlsZW47 CisKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CisJdXRf YShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKTsKKworCWZpZWxkX3JlZiA9IHJlY19n ZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJdXRfYShsZW4gIT0gVU5JVl9T UUxfTlVMTCk7CisJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJZmll bGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwliLnJlZl9wYWdl X25vID0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBfbm8g PSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2ZpZWxkX25vID0gaTsKKwliLm93 bmVyID0gIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9PV05FUl9GTEFH KTsKKwliLmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoZmllbGRfcmVmICsgQlRSX0VY VEVSTl9QQUdFX05PKTsKKworCXV0X2EoYi5vd25lciA9PSBvd24pOworCisJbXV0ZXhfZW50ZXIo JmluZGV4LT5ibG9ic19tdXRleCk7CisJbm9kZSA9IHJidF9sb29rdXAoaW5kZXgtPmJsb2JzLCAm Yik7CisJLyogcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoKSBpbnZva2VzCisJ YnRyX2N1cl91bm1hcmtfZXh0ZXJuX2ZpZWxkcygpIGFsc28gZm9yIHRoZSBuZXdseSBpbnNlcnRl ZAorCXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBhbGwgemVybyBieXRlcyB1bnRpbCB0aGUgY29sdW1u cyBhcmUgc3RvcmVkLgorCVRoZSBub2RlIGxvb2t1cCBtdXN0IGZhaWwgaWYgYW5kIG9ubHkgaWYg dGhhdCBpcyB0aGUgY2FzZS4gKi8KKwl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZf emVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkKKwkgICAgID09ICFub2RlKTsKKworCWlm IChub2RlKSB7CisJCWJ0cl9ibG9iX2RiZ190KgljID0gcmJ0X3ZhbHVlKGJ0cl9ibG9iX2RiZ190 LCBub2RlKTsKKwkJLyogU29tZSBjb2RlIHNldHMgb3duZXJzaGlwIGZyb20gVFJVRSB0byBUUlVF LgorCQlXZSBkbyBub3QgYWxsb3cgY2hhbmdpbmcgb3duZXJzaGlwIGZyb20gRkFMU0UgdG8gRkFM U0UuICovCisJCXV0X2Eob3duIHx8IGMtPm93bmVyKTsKKworCQljLT5vd25lciA9IG93bjsKKwkJ aWYgKCFvd24pIHsKKwkJCWMtPmFsd2F5c19vd25lciA9IEZBTFNFOworCQl9CisJfQorCisJbXV0 ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVC VUcgKi8KKwogLyoKIExhdGNoaW5nIHN0cmF0ZWd5IG9mIHRoZSBJbm5vREIgQi10cmVlCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjk2LDYgKzg1MCw3IEBAIGJ0 cl9wYWdlX2NyZWF0ZSgKIAlwYWdlX3QqCQlwYWdlID0gYnVmX2Jsb2NrX2dldF9mcmFtZShibG9j ayk7CiAKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdF X1hfRklYKSk7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwgYnVmX2Jsb2NrX2dl dF9wYWdlX25vKGJsb2NrKSk7CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsK IAkJcGFnZV9jcmVhdGVfemlwKGJsb2NrLCBpbmRleCwgbGV2ZWwsIG10cik7CkBAIC00ODksNiAr MTA0NCw3IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCW1vZGlmeSBjbG9jayAqLwogCiAJYnVmX2Js b2NrX21vZGlmeV9jbG9ja19pbmMoYmxvY2spOworCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHko aW5kZXgsIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jaykpOwogCiAJaWYgKGRpY3RfaW5kZXhf aXNfaWJ1ZihpbmRleCkpIHsKIApAQCAtNzc0LDYgKzEzMzAsMTQgQEAgYnRyX2NyZWF0ZSgKIAkJ YmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2UsIHppcF9zaXplLCBwYWdlX25vLAogCQkJCSAgICAg UldfWF9MQVRDSCwgbXRyKTsKIAl9IGVsc2UgeworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCQlp ZiAoKHR5cGUgJiBESUNUX0NMVVNURVJFRCkgJiYgIWluZGV4LT5ibG9icykgeworCQkJbXV0ZXhf Y3JlYXRlKFBGU19OT1RfSU5TVFJVTUVOVEVELAorCQkJCSAgICAgJmluZGV4LT5ibG9ic19tdXRl eCwgU1lOQ19BTllfTEFUQ0gpOworCQkJaW5kZXgtPmJsb2JzID0gcmJ0X2NyZWF0ZShzaXplb2Yo YnRyX2Jsb2JfZGJnX3QpLAorCQkJCQkJICBidHJfYmxvYl9kYmdfY21wKTsKKwkJfQorI2VuZGlm IC8qIFVOSVZfQkxPQl9ERUJVRyAqLwogCQlibG9jayA9IGZzZWdfY3JlYXRlKHNwYWNlLCAwLAog CQkJCSAgICBQQUdFX0hFQURFUiArIFBBR0VfQlRSX1NFR19UT1AsIG10cik7CiAJfQpAQCAtOTk4 LDYgKzE1NjIsNyBAQCBidHJfcGFnZV9yZW9yZ2FuaXplX2xvdygKIAogCWJsb2NrLT5jaGVja19p bmRleF9wYWdlX2F0X2ZsdXNoID0gVFJVRTsKICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8K KwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4LCAiYnRyX3BhZ2VfcmVvcmdhbml6ZSIp OwogCiAJLyogUmVjcmVhdGUgdGhlIHBhZ2U6IG5vdGUgdGhhdCBnbG9iYWwgZGF0YSBvbiBwYWdl IChwb3NzaWJsZQogCXNlZ21lbnQgaGVhZGVycywgbmV4dCBwYWdlLWZpZWxkLCBldGMuKSBpcyBw cmVzZXJ2ZWQgaW50YWN0ICovCkBAIC0xMDI2LDYgKzE1OTEsOCBAQCBidHJfcGFnZV9yZW9yZ2Fu aXplX2xvdygKIAkgICAgKCFwYWdlX3ppcF9jb21wcmVzcyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgs IE5VTEwpKSkgewogCiAJCS8qIFJlc3RvcmUgdGhlIG9sZCBwYWdlIGFuZCBleGl0LiAqLworCQli dHJfYmxvYl9kYmdfcmVzdG9yZShwYWdlLCB0ZW1wX3BhZ2UsIGluZGV4LAorCQkJCSAgICAgImJ0 cl9wYWdlX3Jlb3JnYW5pemVfY29tcHJlc3NfZmFpbCIpOwogCiAjaWYgZGVmaW5lZCBVTklWX0RF QlVHIHx8IGRlZmluZWQgVU5JVl9aSVBfREVCVUcKIAkJLyogQ2hlY2sgdGhhdCB0aGUgYnl0ZXMg dGhhdCB3ZSBza2lwIGFyZSBpZGVudGljYWwuICovCkBAIC0xMTU5LDYgKzE3MjYsNyBAQCBidHJf cGFnZV9lbXB0eSgKICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwogCiAJYnRyX3NlYXJjaF9k cm9wX3BhZ2VfaGFzaF9pbmRleChibG9jayk7CisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBp bmRleCwgImJ0cl9wYWdlX2VtcHR5Iik7CiAKIAkvKiBSZWNyZWF0ZSB0aGUgcGFnZTogbm90ZSB0 aGF0IGdsb2JhbCBkYXRhIG9uIHBhZ2UgKHBvc3NpYmxlCiAJc2VnbWVudCBoZWFkZXJzLCBuZXh0 IHBhZ2UtZmllbGQsIGV0Yy4pIGlzIHByZXNlcnZlZCBpbnRhY3QgKi8KQEAgLTI0OTksNiArMzA2 Nyw3IEBAIGJ0cl9saWZ0X3BhZ2VfdXAoCiAJCQkJCQkgICAgICAgaW5kZXgpOwogCX0KIAorCWJ0 cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJidHJfbGlmdF9wYWdlX3VwIik7CiAJbG9j a191cGRhdGVfY29weV9hbmRfZGlzY2FyZChmYXRoZXJfYmxvY2ssIGJsb2NrKTsKIAogCS8qIEdv IHVwd2FyZCB0byByb290IHBhZ2UsIGRlY3JlbWVudGluZyBsZXZlbHMgYnkgb25lLiAqLwpAQCAt Mjc2MCw2ICszMzI5LDcgQEAgZXJyX2V4aXQ6CiAJCWxvY2tfdXBkYXRlX21lcmdlX3JpZ2h0KG1l cmdlX2Jsb2NrLCBvcmlnX3N1Y2MsIGJsb2NrKTsKIAl9CiAKKwlidHJfYmxvYl9kYmdfcmVtb3Zl KHBhZ2UsIGluZGV4LCAiYnRyX2NvbXByZXNzIik7CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAog CWlmICghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkgJiYgcGFnZV9pc19sZWFmKG1lcmdlX3Bh Z2UpKSB7CkBAIC0yOTkwLDYgKzM1NjAsOCBAQCBidHJfZGlzY2FyZF9wYWdlKAogCQkJCSAgICBi bG9jayk7CiAJfQogCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9kaXNj YXJkX3BhZ2UiKTsKKwogCS8qIEZyZWUgdGhlIGZpbGUgcGFnZSAqLwogCWJ0cl9wYWdlX2ZyZWUo aW5kZXgsIGJsb2NrLCBtdHIpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTMzNy13czBpMDJnaXhhbHJtNTEy CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDIwODExMzkyNC1kbW05a3ZncjB4cmoxMGNhCkBAIC0yNjkwLDYgKzI2 OTAsNyBAQCBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCiAKIAlwYWdlX3ppcCA9IGJ1 Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spOwogCisJYnRyX2Jsb2JfZGJnX3NldF9kZWxldGVk X2ZsYWcocmVjLCBpbmRleCwgb2Zmc2V0cywgdmFsKTsKIAlidHJfcmVjX3NldF9kZWxldGVkX2Zs YWcocmVjLCBwYWdlX3ppcCwgdmFsKTsKIAogCXRyeCA9IHRocl9nZXRfdHJ4KHRocik7CkBAIC0z ODczLDYgKzM4NzQsOCBAQCBidHJfY3VyX3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2ZpZWxkKAog CX0gZWxzZSB7CiAJCW1hY2hfd3JpdGVfdG9fMShkYXRhICsgbG9jYWxfbGVuICsgQlRSX0VYVEVS Tl9MRU4sIGJ5dGVfdmFsKTsKIAl9CisKKwlidHJfYmxvYl9kYmdfb3duZXIocmVjLCBpbmRleCwg b2Zmc2V0cywgaSwgdmFsKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC00MzczLDYgKzQzNzYs MTEgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAogCQkJCX0KIAogCQkJ CWlmIChwcmV2X3BhZ2Vfbm8gPT0gRklMX05VTEwpIHsKKwkJCQkJYnRyX2Jsb2JfZGJnX2FkZF9i bG9iKAorCQkJCQkJcmVjLCBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldCisJCQkJCQkuZmllbGRfbm8s IHBhZ2Vfbm8sIGluZGV4LAorCQkJCQkJInN0b3JlIik7CisKIAkJCQkJbWFjaF93cml0ZV90b180 KGZpZWxkX3JlZgogCQkJCQkJCSsgQlRSX0VYVEVSTl9TUEFDRV9JRCwKIAkJCQkJCQlzcGFjZV9p ZCk7CkBAIC00NDQ4LDYgKzQ0NTYsMTEgQEAgbmV4dF96aXBfcGFnZToKIAkJCQkJCSBNTE9HXzRC WVRFUywgJm10cik7CiAKIAkJCQlpZiAocHJldl9wYWdlX25vID09IEZJTF9OVUxMKSB7CisJCQkJ CWJ0cl9ibG9iX2RiZ19hZGRfYmxvYigKKwkJCQkJCXJlYywgYmlnX3JlY192ZWMtPmZpZWxkc1tp XQorCQkJCQkJLmZpZWxkX25vLCBwYWdlX25vLCBpbmRleCwKKwkJCQkJCSJzdG9yZSIpOworCiAJ CQkJCW1sb2dfd3JpdGVfdWxpbnQoZmllbGRfcmVmCiAJCQkJCQkJICsgQlRSX0VYVEVSTl9TUEFD RV9JRCwKIAkJCQkJCQkgc3BhY2VfaWQsCkBAIC00NjE2LDYgKzQ2MjksMzcgQEAgYnRyX2ZyZWVf ZXh0ZXJuYWxseV9zdG9yZWRfZmllbGQoCiAJCXJlY196aXBfc2l6ZSA9IDA7CiAJfQogCisjaWZk ZWYgVU5JVl9CTE9CX0RFQlVHCisJaWYgKCEoZmllbGRfcmVmW0JUUl9FWFRFUk5fTEVOXSAmIEJU Ul9FWFRFUk5fT1dORVJfRkxBRykKKwkgICAgJiYgISgoZmllbGRfcmVmW0JUUl9FWFRFUk5fTEVO XSAmIEJUUl9FWFRFUk5fSU5IRVJJVEVEX0ZMQUcpCisJCSAmJiAocmJfY3R4ID09IFJCX05PUk1B TCB8fCByYl9jdHggPT0gUkJfUkVDT1ZFUlkpKSkgeworCQkvKiBUaGlzIG9mZi1wYWdlIGNvbHVt biB3aWxsIGJlIGZyZWVkLgorCQlDaGVjayB0aGF0IG5vIHJlZmVyZW5jZXMgcmVtYWluLiAqLwor CisJCWJ0cl9ibG9iX2RiZ190CWI7CisKKwkJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJv bV80KAorCQkJZmllbGRfcmVmICsgQlRSX0VYVEVSTl9QQUdFX05PKTsKKworCQlpZiAocmVjKSB7 CisJCQkvKiBSZW1vdmUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSByZWNvcmQgdG8gdGhlCisJCQlC TE9CLiBJZiB0aGUgQkxPQiB3ZXJlIG5vdCBmcmVlZCwgdGhlCisJCQlyZWZlcmVuY2Ugd291bGQg YmUgcmVtb3ZlZCB3aGVuIHRoZSByZWNvcmQgaXMKKwkJCXJlbW92ZWQuIEZyZWVpbmcgdGhlIEJM T0Igd2lsbCBvdmVyd3JpdGUgdGhlCisJCQlCVFJfRVhURVJOX1BBR0VfTk8gaW4gdGhlIGZpZWxk X3JlZiBvZiB0aGUKKwkJCXJlY29yZCB3aXRoIEZJTF9OVUxMLCB3aGljaCB3b3VsZCBtYWtlIHRo ZQorCQkJYnRyX2Jsb2JfZGJnIGluZm9ybWF0aW9uIGluY29uc2lzdGVudCB3aXRoIHRoZQorCQkJ cmVjb3JkLiAqLworCQkJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGln bihyZWMpKTsKKwkJCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOwor CQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoaW5kZXgs ICZiLCAiZnJlZSIpOworCQl9CisKKwkJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwg Yi5ibG9iX3BhZ2Vfbm8pOworCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KKwogCWZv ciAoOzspIHsKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAkJYnVmX2Jsb2NrX3QqCXJlY19ibG9j azsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBtZW0uYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwbWVtLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDIwODA1NTMzNy13czBpMDJnaXhhbHJtNTEyCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwMjA4MTEzOTI0LWRtbTlrdmdyMHhyajEwY2EKQEAgLTM4LDYgKzM4LDkgQEAgQ3JlYXRlZCAx LzgvMTk5NiBIZWlra2kgVHV1cmkKICNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKICMgaW5jbHVkZSAi bG9jazBsb2NrLmgiCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisjaWZkZWYgVU5JVl9C TE9CX0RFQlVHCisjIGluY2x1ZGUgInV0MHJidC5oIgorI2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJV RyAqLwogCiAjZGVmaW5lCURJQ1RfSEVBUF9TSVpFCQkxMDAJLyohPCBpbml0aWFsIG1lbW9yeSBo ZWFwIHNpemUgd2hlbgogCQkJCQljcmVhdGluZyBhIHRhYmxlIG9yIGluZGV4IG9iamVjdCAqLwpA QCAtMzgwLDYgKzM4MywxMiBAQCBkaWN0X21lbV9pbmRleF9mcmVlKAogewogCXV0X2FkKGluZGV4 KTsKIAl1dF9hZChpbmRleC0+bWFnaWNfbiA9PSBESUNUX0lOREVYX01BR0lDX04pOworI2lmZGVm IFVOSVZfQkxPQl9ERUJVRworCWlmIChpbmRleC0+YmxvYnMpIHsKKwkJbXV0ZXhfZnJlZSgmaW5k ZXgtPmJsb2JzX211dGV4KTsKKwkJcmJ0X2ZyZWUoaW5kZXgtPmJsb2JzKTsKKwl9CisjZW5kaWYg LyogVU5JVl9CTE9CX0RFQlVHICovCiAKIAltZW1faGVhcF9mcmVlKGluZGV4LT5oZWFwKTsKIH0K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTAyMDgwNTUzMzctd3MwaTAyZ2l4YWxybTUxMgorKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMjA4MTEzOTI0LWRtbTlrdmdyMHhyajEwY2EKQEAgLTkyLDYgKzkyLDkxIEBAIGluc2Vy dC9kZWxldGUgYnVmZmVyIHdoZW4gdGhlIHJlY29yZCBpcwogYnVmZmVyIHdoZW4gdGhlIHJlY29y ZCBpcyBub3QgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLwogI2RlZmluZSBCVFJfREVMRVRFCQk4MTky CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVkZSAidXQwcmJ0LmgiCisvKiogQW4g aW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVwaW5nIHRyYWNrIG9mIG9mZi1wYWdlIGNvbHVtbiBy ZWZlcmVuY2VzICovCitzdHJ1Y3QgYnRyX2Jsb2JfZGJnX3N0cnVjdAoreworCXVuc2lnbmVkCWJs b2JfcGFnZV9ubzozMjsJLyohPCBmaXJzdCBCTE9CIHBhZ2UgbnVtYmVyICovCisJdW5zaWduZWQJ cmVmX3BhZ2Vfbm86MzI7CQkvKiE8IHJlZmVycmluZyBwYWdlIG51bWJlciAqLworCXVuc2lnbmVk CXJlZl9oZWFwX25vOjE2OwkJLyohPCByZWZlcnJpbmcgaGVhcCBudW1iZXIgKi8KKwl1bnNpZ25l ZAlyZWZfZmllbGRfbm86MTA7CS8qITwgcmVmZXJyaW5nIGZpZWxkIG51bWJlciAqLworCXVuc2ln bmVkCW93bmVyOjE7CQkvKiE8IFRSVUUgaWYgQkxPQiBvd25lciAqLworCXVuc2lnbmVkCWFsd2F5 c19vd25lcjoxOwkJLyohPCBUUlVFIGlmIGFsd2F5cworCQkJCQkJaGFzIGJlZW4gdGhlIEJMT0Ig b3duZXI7CisJCQkJCQlyZXNldCB0byBUUlVFIG9uIEItdHJlZQorCQkJCQkJcGFnZSBzcGxpdHMg YW5kIG1lcmdlcyAqLworCXVuc2lnbmVkCWRlbDoxOwkJCS8qITwgVFJVRSBpZiBjdXJyZW50bHkK KwkJCQkJCWRlbGV0ZS1tYXJrZWQgKi8KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0FkZCBhIHJlZmVyZW5j ZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGluZGV4LT5ibG9icyBtYXAuICovCitVTklW X0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKAorLyo9PT09PT09PT09PT09PT09 PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggcmVjb3Jk ICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBudW1iZXIgb2Ygb2ZmLXBhZ2UgY29sdW1u ICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0IHBhZ2Ugb2YgdGhlIGNvbHVtbiAq LworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291dDogaW5kZXggdHJlZSAqLworCWNv bnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0 cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rpc3BsYXkgdGhlIHJlZmVyZW5jZXMg dG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24gaXMgdG8gYmUgY2FsbGVkIGZyb20g YSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVha3BvaW50IG9uIHV0X2RiZ19hc3Nl cnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdf cHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3QgZGljdF9pbmRleF90KglpbmRleCkJ LyohPCBpbjogaW5kZXggdHJlZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0NoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29s dW1ucyBmcm9tIG9yIHRvCit0aGUgZ2l2ZW4gcGFnZS4gSW52b2tlZCB3aGVuIGZyZWVpbmcgb3Ig Y2xlYXJpbmcgYSBwYWdlLgorQHJldHVybiBUUlVFIHdoZW4gbm8gb3JwaGFuIHJlZmVyZW5jZXMg ZXhpc3QgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnRyX2Jsb2JfZGJnX2lzX2VtcHR5KAorLyo9 PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiBpbmRl eCAqLworCXVsaW50CQlwYWdlX25vKQkvKiE8IGluOiBwYWdlIG51bWJlciAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitNb2Rp ZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQK K2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5k ZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJCW9mZnNl dHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJaWJvb2wJCQlkZWwpCS8q ITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYW4gb2ZmLXBhZ2Ug Y29sdW1uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19vd25lcigKKy8qPT09 PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJ ZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50 KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRleCkgKi8KKwl1bGludAkJ CWksCS8qITwgaW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJCW93bikJLyohPCBpbjog VFJVRT1vd25lZCwgRkFMU0U9ZGlzb3duZWQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisvKiogQXNzZXJ0IHRoYXQgdGhlcmUgYXJlIG5vIEJMT0IgcmVmZXJlbmNlcyB0byBvciBmcm9t IHRoZSBnaXZlbiBwYWdlLiAqLworIyBkZWZpbmUgYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShp bmRleCwgcGFnZV9ubykJXAorCXV0X2EoYnRyX2Jsb2JfZGJnX2lzX2VtcHR5KGluZGV4LCBwYWdl X25vKSkKKyNlbHNlIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworIyBkZWZpbmUgYnRyX2Jsb2JfZGJn X2FkZF9ibG9iKHJlYywgZmllbGRfbm8sIHBhZ2UsIGluZGV4LCBjdHgpCSgodm9pZCkgMCkKKyMg ZGVmaW5lIGJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKHJlYywgaW5kZXgsIG9mZnNldHMs IGRlbCkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfb3duZXIocmVjLCBpbmRleCwg b2Zmc2V0cywgaSwgdmFsKQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfYXNzZXJ0 X2VtcHR5KGluZGV4LCBwYWdlX25vKQkJKCh2b2lkKSAwKQorI2VuZGlmIC8qIFVOSVZfQkxPQl9E RUJVRyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIHRoZSByb290IG5vZGUgb2YgYSB0cmVlIGFuZCB4 LWxhdGNoZXMgaXQuCiBAcmV0dXJuCXJvb3QgcGFnZSwgeC1sYXRjaGVkICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjB0eXBlcy5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHR5cGVzLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDExMDIwODA1NTMzNy13czBpMDJnaXhhbHJtNTEyCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idHIwdHlwZXMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDIwODExMzkyNC1kbW05a3ZncjB4cmoxMGNhCkBAIC0zOCw2ICszOCwxMzEgQEAgdHlwZWRlZiBz dHJ1Y3QgYnRyX2N1cl9zdHJ1Y3QJCWJ0cl9jdXJfdAogLyoqIEItdHJlZSBzZWFyY2ggaW5mb3Jt YXRpb24gZm9yIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4ICovCiB0eXBlZGVmIHN0cnVjdCBidHJf c2VhcmNoX3N0cnVjdAlidHJfc2VhcmNoX3Q7CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMg aW5jbHVkZSAiYnVmMHR5cGVzLmgiCisvKiogQW4gaW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVw aW5nIHRyYWNrIG9mIG9mZi1wYWdlIGNvbHVtbiByZWZlcmVuY2VzICovCit0eXBlZGVmIHN0cnVj dCBidHJfYmxvYl9kYmdfc3RydWN0IGJ0cl9ibG9iX2RiZ190OworCisvKiogSW5zZXJ0IHRvIGlu ZGV4LT5ibG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5k ZXgJdGhlIGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29u dGV4dCAoZm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3Ji dF9pbnNlcnQoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRl eCwJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJ LyohPCBpbjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNv bnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoq IFJlbW92ZSBmcm9tIGluZGV4LT5ibG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1 bW4uCitAcGFyYW0gaW5kZXgJdGhlIGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UK K0BwYXJhbSBjdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAor YnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0 X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJf YmxvYl9kYmdfdCoJYiwJLyohPCBpbjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQlj dHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgorQWRkIHRvIGluZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNl cyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gYSByZWNvcmQuCitAcmV0dXJuIG51bWJlciBvZiBy ZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lOVEVSTgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGRf cmVjKAorLyo9PT09PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjog cmVjb3JkICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJ Y29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogb2Zmc2V0cyAqLworCWNvbnN0IGNoYXIqCWN0 eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorUmVtb3ZlIGZyb20gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVu Y2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJvbSBhIHJlY29yZC4KK0ByZXR1cm4gbnVtYmVyIG9m IHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdf cmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMs CS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBp bmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IG9mZnNldHMgKi8KKwljb25z dCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NvdW50IGFuZCBhZGQgdG8gaW5kZXgtPmJs b2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMKK2Zyb20gcmVjb3JkcyBvbiBh IHBhZ2UuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lOVEVS TgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGQoCisvKj09PT09PT09PT09PT0qLworCWNvbnN0IHBh Z2VfdCoJcGFnZSwJLyohPCBpbjogcmV3cml0dGVuIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWlu ZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNv bnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMg dG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRzIG9uIGEgcGFnZS4KK1VzZWQgd2hlbiBy ZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUgY29weWluZyB0aGUgcmVjb3Jkcy4KK0ByZXR1cm4g bnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJf YmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCXBh Z2UsCS8qITwgaW46IGItdHJlZSBwYWdlICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBp bi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3Ig bG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitSZXN0 b3JlIGluIGluZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zCitV c2VkIHdoZW4gcGFnZSByZW9yZ2FuaXplIGZhaWxzIGR1ZSB0byBjb21wcmVzc2VkIHBhZ2Ugb3Zl cmZsb3cuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3Jlc3RvcmUoCisvKj09 PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCW5wYWdlLAkvKiE8IGluOiBwYWdlIHRo YXQgZmFpbGVkIHRvIGNvbXByZXNzICovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBj b3B5IG9mIG9yaWdpbmFsIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291 dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dn aW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqIE9wZXJhdGlvbiB0aGF0 IHByb2Nlc3NlcyB0aGUgQkxPQiByZWZlcmVuY2VzIG9mIGFuIGluZGV4IHJlY29yZAorQHBhcmFt W2luXQlyZWMJcmVjb3JkIG9uIGluZGV4IHBhZ2UKK0BwYXJhbVtpbi9vdXRdCWluZGV4CXRoZSBp bmRleCB0cmVlIG9mIHRoZSByZWNvcmQKK0BwYXJhbVtpbl0Jb2Zmc2V0cwlyZWNfZ2V0X29mZnNl dHMocmVjLGluZGV4KQorQHBhcmFtW2luXQljdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpCitAcmV0 dXJuCQkJbnVtYmVyIG9mIEJMT0IgcmVmZXJlbmNlcyBwcm9jZXNzZWQgKi8KK3R5cGVkZWYgdWxp bnQgKCpidHJfYmxvYl9kYmdfb3BfZikKKyhjb25zdCByZWNfdCogcmVjLGRpY3RfaW5kZXhfdCog aW5kZXgsY29uc3QgdWxpbnQqIG9mZnNldHMsY29uc3QgY2hhciogY3R4KTsKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgorQ291bnQgYW5kIHByb2Nlc3MgYWxsIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBv biBhIHBhZ2UuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIHByb2Nlc3NlZCAqLworVU5J Vl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfb3AoCisvKj09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KgkJcGFnZSwJLyohPCBpbjogQi10cmVlIGxlYWYgcGFnZSAqLworCWNvbnN0IHJl Y190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgdG8gc3RhcnQgZnJvbQorCQkJCQkoTlVMTCB0byBw cm9jZXNzIHRoZSB3aG9sZSBwYWdlKSAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGlu L291dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgkJY3R4LAkvKiE8IGluOiBjb250ZXh0IChmb3Ig bG9nZ2luZykgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfb3BfZglvcCkJLyohPCBpbjogb3BlcmF0 aW9uIG9uIHJlY29yZHMgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsMyw0LDUpKSk7Cisj ZWxzZSAvKiBVTklWX0JMT0JfREVCVUcgKi8KKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hZGRfcmVj KHJlYywgaW5kZXgsIG9mZnNldHMsIGN0eCkJCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9i X2RiZ19hZGQocGFnZSwgaW5kZXgsIGN0eCkJCQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxv Yl9kYmdfcmVtb3ZlX3JlYyhyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpCSgodm9pZCkgMCkKKyMg ZGVmaW5lIGJ0cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsIGN0eCkJCQkoKHZvaWQpIDAp CisjIGRlZmluZSBidHJfYmxvYl9kYmdfcmVzdG9yZShucGFnZSwgcGFnZSwgaW5kZXgsIGN0eCkJ CSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19vcChwYWdlLCByZWMsIGluZGV4LCBj dHgsIG9wKQkJKCh2b2lkKSAwKQorI2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworCiAvKiog VGhlIHNpemUgb2YgYSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgb24gYSBkaWZmZXJlbnQgcGFn ZS4KIFRoZSByZWZlcmVuY2UgaXMgc3RvcmVkIGF0IHRoZSBlbmQgb2YgdGhlIHByZWZpeCBvZiB0 aGUgZmllbGQKIGluIHRoZSBpbmRleCByZWNvcmQuICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9kaWN0MG1lbS5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgw NTUzMzctd3MwaTAyZ2l4YWxybTUxMgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGlj dDBtZW0uaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODExMzkyNC1kbW05 a3ZncjB4cmoxMGNhCkBAIC0zOTUsNiArMzk1LDEzIEBAIHN0cnVjdCBkaWN0X2luZGV4X3N0cnVj dHsKIAkJCQlpbmRleCwgb3IgMCBpZiB0aGUgaW5kZXggZXhpc3RlZAogCQkJCXdoZW4gSW5ub0RC IHdhcyBzdGFydGVkIHVwICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisjaWZkZWYg VU5JVl9CTE9CX0RFQlVHCisJbXV0ZXhfdAkJYmxvYnNfbXV0ZXg7CisJCQkJLyohPCBtdXRleCBw cm90ZWN0aW5nIGJsb2JzICovCisJdm9pZCoJCWJsb2JzOwkvKiE8IG1hcCBvZiAocGFnZV9ubyxo ZWFwX25vLGZpZWxkX25vKQorCQkJCXRvIGZpcnN0X2Jsb2JfcGFnZV9ubzsgcHJvdGVjdGVkIGJ5 CisJCQkJYmxvYnNfbXV0ZXg7IEBzZWUgYnRyX2Jsb2JfZGJnX3QgKi8KKyNlbmRpZiAvKiBVTklW X0JMT0JfREVCVUcgKi8KICNpZmRlZiBVTklWX0RFQlVHCiAJdWxpbnQJCW1hZ2ljX247LyohPCBt YWdpYyBudW1iZXIgKi8KIC8qKiBWYWx1ZSBvZiBkaWN0X2luZGV4X3N0cnVjdDo6bWFnaWNfbiAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHppcC5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTB6aXAuaAlyZXZpZDp2YXNpbC5k aW1vdkBvcmFjbGUuY29tLTIwMTEwMjA4MDU1MzM3LXdzMGkwMmdpeGFscm01MTIKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTAyMDgxMTM5MjQtZG1tOWt2Z3IweHJqMTBjYQpAQCAtNDIwLDcgKzQyMCw3IEBA IHBhZ2VfemlwX2NvcHlfcmVjcygKIAljb25zdCBwYWdlX3QqCQlzcmMsCQkvKiE8IGluOiBwYWdl ICovCiAJZGljdF9pbmRleF90KgkJaW5kZXgsCQkvKiE8IGluOiBpbmRleCBvZiB0aGUgQi10cmVl ICovCiAJbXRyX3QqCQkJbXRyKQkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAqLwotCV9fYXR0 cmlidXRlX18oKG5vbm51bGwoMSwyLDMsNCkpKTsKKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmknCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmkJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDIwODA1NTMzNy13czBpMDJnaXhhbHJtNTEyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDgxMTM5 MjQtZG1tOWt2Z3IweHJqMTBjYQpAQCAtMjAxLDYgKzIwMSw4IEBAIHRoaXMgd2lsbCBicmVhayBy ZWRvIGxvZyBmaWxlIGNvbXBhdGliaWwKIGRlYnVnZ2luZyByZWRvIGxvZyBhcHBsaWNhdGlvbiBw cm9ibGVtcy4gKi8KICNkZWZpbmUgVU5JVl9NRU1fREVCVUcJCQkJLyogZGV0ZWN0IG1lbW9yeSBs ZWFrcyBldGMgKi8KICNkZWZpbmUgVU5JVl9JQlVGX0RFQlVHCQkJCS8qIGRlYnVnIHRoZSBpbnNl cnQgYnVmZmVyICovCisjZGVmaW5lIFVOSVZfQkxPQl9ERUJVRwkJCQkvKiB0cmFjayBCTE9CIG93 bmVyc2hpcDsKK2Fzc3VtZXMgdGhhdCBubyBCTE9CcyBzdXJ2aXZlIHNlcnZlciByZXN0YXJ0ICov CiAjZGVmaW5lIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwkJCS8qIGRlYnVnIHRoZSBpbnNlcnQgYnVm ZmVyOwogdGhpcyBsaW1pdHMgdGhlIGRhdGFiYXNlIHRvIElCVUZfQ09VTlRfTl9TUEFDRVMgYW5k IElCVUZfQ09VTlRfTl9QQUdFUywKIGFuZCB0aGUgaW5zZXJ0IGJ1ZmZlciBtdXN0IGJlIGVtcHR5 IHdoZW4gdGhlIGRhdGFiYXNlIGlzIHN0YXJ0ZWQgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdl L3BhZ2UwY3VyLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTMzNy13 czBpMDJnaXhhbHJtNTEyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMGN1ci5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTEzOTI0LWRtbTlrdmdyMHhyajEw Y2EKQEAgLTExNDksNiArMTE0OSw4IEBAIHVzZV9oZWFwOgogCQkJCQkgICAgICBjdXJyZW50X3Jl YywgaW5kZXgsIG10cik7CiAJfQogCisJYnRyX2Jsb2JfZGJnX2FkZF9yZWMoaW5zZXJ0X3JlYywg aW5kZXgsIG9mZnNldHMsICJpbnNlcnQiKTsKKwogCXJldHVybihpbnNlcnRfcmVjKTsKIH0KIApA QCAtMTE5NSwxMCArMTE5NywxMiBAQCBwYWdlX2N1cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygKIAl9 CiAKIAkvKiBPdXQgb2Ygc3BhY2U6IHJlc3RvcmUgdGhlIHBhZ2UgKi8KKwlidHJfYmxvYl9kYmdf cmVtb3ZlKHBhZ2UsIGluZGV4LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJaWYgKCFwYWdlX3ppcF9k ZWNvbXByZXNzKHBhZ2VfemlwLCBwYWdlLCBGQUxTRSkpIHsKIAkJdXRfZXJyb3I7IC8qIE1lbW9y eSBjb3JydXB0ZWQ/ICovCiAJfQogCXV0X2FkKHBhZ2VfdmFsaWRhdGUocGFnZSwgaW5kZXgpKTsK KwlidHJfYmxvYl9kYmdfYWRkKHBhZ2UsIGluZGV4LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJcmV0 dXJuKE5VTEwpOwogfQogCkBAIC0xNDkwLDYgKzE0OTQsOCBAQCB1c2VfaGVhcDoKIAogCXBhZ2Vf emlwX3dyaXRlX3JlYyhwYWdlX3ppcCwgaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsIDEpOwog CisJYnRyX2Jsb2JfZGJnX2FkZF9yZWMoaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsICJpbnNl cnRfemlwX29rIik7CisKIAkvKiA5LiBXcml0ZSBsb2cgcmVjb3JkIG9mIHRoZSBpbnNlcnQgKi8K IAlpZiAoVU5JVl9MSUtFTFkobXRyICE9IE5VTEwpKSB7CiAJCXBhZ2VfY3VyX2luc2VydF9yZWNf d3JpdGVfbG9nKGluc2VydF9yZWMsIHJlY19zaXplLApAQCAtMTY5Nyw2ICsxNzAzLDkgQEAgcGFn ZV9jb3B5X3JlY19saXN0X2VuZF90b19jcmVhdGVkX3BhZ2UoCiAKIAkJaGVhcF90b3AgKz0gcmVj X3NpemU7CiAKKwkJcmVjX29mZnNfbWFrZV92YWxpZChpbnNlcnRfcmVjLCBpbmRleCwgb2Zmc2V0 cyk7CisJCWJ0cl9ibG9iX2RiZ19hZGRfcmVjKGluc2VydF9yZWMsIGluZGV4LCBvZmZzZXRzLCAi Y29weV9lbmQiKTsKKwogCQlwYWdlX2N1cl9pbnNlcnRfcmVjX3dyaXRlX2xvZyhpbnNlcnRfcmVj LCByZWNfc2l6ZSwgcHJldl9yZWMsCiAJCQkJCSAgICAgIGluZGV4LCBtdHIpOwogCQlwcmV2X3Jl YyA9IGluc2VydF9yZWM7CkBAIC0xOTQ0LDYgKzE5NTMsNyBAQCBwYWdlX2N1cl9kZWxldGVfcmVj KAogCXBhZ2VfZGlyX3Nsb3Rfc2V0X25fb3duZWQoY3VyX2Rpcl9zbG90LCBwYWdlX3ppcCwgY3Vy X25fb3duZWQgLSAxKTsKIAogCS8qIDYuIEZyZWUgdGhlIG1lbW9yeSBvY2N1cGllZCBieSB0aGUg cmVjb3JkICovCisJYnRyX2Jsb2JfZGJnX3JlbW92ZV9yZWMoY3VycmVudF9yZWMsIGluZGV4LCBv ZmZzZXRzLCAiZGVsZXRlIik7CiAJcGFnZV9tZW1fZnJlZShwYWdlLCBwYWdlX3ppcCwgY3VycmVu dF9yZWMsIGluZGV4LCBvZmZzZXRzKTsKIAogCS8qIDcuIE5vdyB3ZSBoYXZlIGRlY3JlbWVudGVk IHRoZSBudW1iZXIgb2Ygb3duZWQgcmVjb3JkcyBvZiB0aGUgc2xvdC4KCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEw MjA4MDU1MzM3LXdzMGkwMmdpeGFscm01MTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3Bh Z2UwcGFnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTEzOTI0LWRt bTlrdmdyMHhyajEwY2EKQEAgLTY4NSwxMiArNjg1LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9l bmQoCiAJCQlpZiAoVU5JVl9VTkxJS0VMWQogCQkJICAgICghcGFnZV96aXBfcmVvcmdhbml6ZShu ZXdfYmxvY2ssIGluZGV4LCBtdHIpKSkgewogCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZShuZXdf cGFnZSwgaW5kZXgsCisJCQkJCQkgICAgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsKIAkJCQlpZiAo VU5JVl9VTkxJS0VMWQogCQkJCSAgICAoIXBhZ2VfemlwX2RlY29tcHJlc3MobmV3X3BhZ2Vfemlw LAogCQkJCQkJCSAgbmV3X3BhZ2UsIEZBTFNFKSkpIHsKIAkJCQkJdXRfZXJyb3I7CiAJCQkJfQog CQkJCXV0X2FkKHBhZ2VfdmFsaWRhdGUobmV3X3BhZ2UsIGluZGV4KSk7CisJCQkJYnRyX2Jsb2Jf ZGJnX2FkZChuZXdfcGFnZSwgaW5kZXgsCisJCQkJCQkgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsK IAkJCQlyZXR1cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9y Z2FuaXplZDoKQEAgLTgwMywxMiArODA3LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9zdGFydCgK IAkJCWlmIChVTklWX1VOTElLRUxZCiAJCQkgICAgKCFwYWdlX3ppcF9yZW9yZ2FuaXplKG5ld19i bG9jaywgaW5kZXgsIG10cikpKSB7CiAKKwkJCQlidHJfYmxvYl9kYmdfcmVtb3ZlKG5ld19wYWdl LCBpbmRleCwKKwkJCQkJCSAgICAiY29weV9zdGFydF9yZW9yZ19mYWlsIik7CiAJCQkJaWYgKFVO SVZfVU5MSUtFTFkKIAkJCQkgICAgKCFwYWdlX3ppcF9kZWNvbXByZXNzKG5ld19wYWdlX3ppcCwK IAkJCQkJCQkgIG5ld19wYWdlLCBGQUxTRSkpKSB7CiAJCQkJCXV0X2Vycm9yOwogCQkJCX0KIAkJ CQl1dF9hZChwYWdlX3ZhbGlkYXRlKG5ld19wYWdlLCBpbmRleCkpOworCQkJCWJ0cl9ibG9iX2Ri Z19hZGQobmV3X3BhZ2UsIGluZGV4LAorCQkJCQkJICJjb3B5X3N0YXJ0X3Jlb3JnX2ZhaWwiKTsK IAkJCQlyZXR1cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9y Z2FuaXplZDoKQEAgLTEwODAsNiArMTA4OCw5IEBAIHBhZ2VfZGVsZXRlX3JlY19saXN0X2VuZCgK IAkvKiBSZW1vdmUgdGhlIHJlY29yZCBjaGFpbiBzZWdtZW50IGZyb20gdGhlIHJlY29yZCBjaGFp biAqLwogCXBhZ2VfcmVjX3NldF9uZXh0KHByZXZfcmVjLCBwYWdlX2dldF9zdXByZW11bV9yZWMo cGFnZSkpOwogCisJYnRyX2Jsb2JfZGJnX29wKHBhZ2UsIHJlYywgaW5kZXgsICJkZWxldGVfZW5k IiwKKwkJCWJ0cl9ibG9iX2RiZ19yZW1vdmVfcmVjKTsKKwogCS8qIENhdGVuYXRlIHRoZSBkZWxl dGVkIGNoYWluIHNlZ21lbnQgdG8gdGhlIHBhZ2UgZnJlZSBsaXN0ICovCiAKIAlwYWdlX3JlY19z ZXRfbmV4dChsYXN0X3JlYywgcGFnZV9oZWFkZXJfZ2V0X3B0cihwYWdlLCBQQUdFX0ZSRUUpKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3Jh Y2xlLmNvbS0yMDExMDIwODA1NTMzNy13czBpMDJnaXhhbHJtNTEyCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvcGFnZS9wYWdlMHppcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw MjA4MTEzOTI0LWRtbTlrdmdyMHhyajEwY2EKQEAgLTQ0NTIsNiArNDQ1Miw4IEBAIHBhZ2Vfemlw X3Jlb3JnYW5pemUoCiAJLyogQ29weSB0aGUgb2xkIHBhZ2UgdG8gdGVtcG9yYXJ5IHNwYWNlICov CiAJYnVmX2ZyYW1lX2NvcHkodGVtcF9wYWdlLCBwYWdlKTsKIAorCWJ0cl9ibG9iX2RiZ19yZW1v dmUocGFnZSwgaW5kZXgsICJ6aXBfcmVvcmciKTsKKwogCS8qIFJlY3JlYXRlIHRoZSBwYWdlOiBu b3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFnZSAocG9zc2libGUKIAlzZWdtZW50IGhlYWRlcnMs IG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMgcHJlc2VydmVkIGludGFjdCAqLwogCkBAIC00NTEw LDcgKzQ1MTIsNyBAQCBwYWdlX3ppcF9jb3B5X3JlY3MoCiAJbXRyX3QqCQkJbXRyKQkJLyohPCBp bjogbWluaS10cmFuc2FjdGlvbiAqLwogewogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2Uo bXRyLCBwYWdlLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7Ci0JdXRfYWQobXRyX21lbW9fY29udGFp bnNfcGFnZShtdHIsIChwYWdlX3QqKSBzcmMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKKwl1dF9h ZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgc3JjLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7 CiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwogI2lmZGVmIFVOSVZfWklQX0RF QlVHCiAJLyogVGhlIEItdHJlZSBvcGVyYXRpb25zIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uIG1h eSBzZXQKQEAgLTQ1ODAsNiArNDU4Miw3IEBAIHBhZ2VfemlwX2NvcHlfcmVjcygKICNpZmRlZiBV TklWX1pJUF9ERUJVRwogCXV0X2EocGFnZV96aXBfdmFsaWRhdGUocGFnZV96aXAsIHBhZ2UpKTsK ICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLworCWJ0cl9ibG9iX2RiZ19hZGQocGFnZSwgaW5k ZXgsICJwYWdlX3ppcF9jb3B5X3JlY3MiKTsKIAogCXBhZ2VfemlwX2NvbXByZXNzX3dyaXRlX2xv ZyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgsIG10cik7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTMzNy13czBp MDJnaXhhbHJtNTEyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODExMzkyNC1kbW05a3ZncjB4cmoxMGNhCkBA IC00OTgsMTQgKzQ5OCw0OSBAQCByb3dfdXBkX3JlY19pbl9wbGFjZSgKIAluX2ZpZWxkcyA9IHVw ZF9nZXRfbl9maWVsZHModXBkYXRlKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuX2ZpZWxkczsgaSsr KSB7CisjaWZkZWYgVU5JVl9CTE9CX0RFQlVHCisJCWJ0cl9ibG9iX2RiZ190CWI7CisJCWNvbnN0 IGJ5dGUqCWZpZWxkX3JlZgk9IE5VTEw7CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCisK IAkJdXBkX2ZpZWxkID0gdXBkX2dldF9udGhfZmllbGQodXBkYXRlLCBpKTsKIAkJbmV3X3ZhbCA9 ICYodXBkX2ZpZWxkLT5uZXdfdmFsKTsKIAkJdXRfYWQoIWRmaWVsZF9pc19leHQobmV3X3ZhbCkg PT0KIAkJICAgICAgIXJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgdXBkX2ZpZWxkLT5maWVs ZF9ubykpOworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCQlpZiAoZGZpZWxkX2lzX2V4dChuZXdf dmFsKSkgeworCQkJdWxpbnQJbGVuOworCQkJZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQo cmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOwor CQkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYg Kz0gbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfcGFnZV9ubyA9 IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwkJCWIucmVmX2hlYXBfbm8gPSBw YWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYi5i bG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiArIEJUUl9FWFRF Uk5fUEFHRV9OTyk7CisJCQl1dF9hKGIucmVmX2ZpZWxkX25vID49IGluZGV4LT5uX3VuaXEpOwor CQkJYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoaW5kZXgsICZiLCAidXBkX2luX3BsYWNlIik7CisJ CX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAogCQlyZWNfc2V0X250aF9maWVsZChy ZWMsIG9mZnNldHMsIHVwZF9maWVsZC0+ZmllbGRfbm8sCiAJCQkJICBkZmllbGRfZ2V0X2RhdGEo bmV3X3ZhbCksCiAJCQkJICBkZmllbGRfZ2V0X2xlbihuZXdfdmFsKSk7CisKKyNpZmRlZiBVTklW X0JMT0JfREVCVUcKKwkJaWYgKGRmaWVsZF9pc19leHQobmV3X3ZhbCkpIHsKKwkJCWIuYmxvYl9w YWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlmaWVsZF9yZWYgKyBCVFJfRVhURVJOX1BB R0VfTk8pOworCQkJYi5hbHdheXNfb3duZXIgPSBiLm93bmVyID0gIShmaWVsZF9yZWZbQlRSX0VY VEVSTl9MRU5dCisJCQkJCQkgICAgICYgQlRSX0VYVEVSTl9PV05FUl9GTEFHKTsKKwkJCWIuZGVs ID0gcmVjX2dldF9kZWxldGVkX2ZsYWcoCisJCQkJcmVjLCByZWNfb2Zmc19jb21wKG9mZnNldHMp KTsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCAidXBkX2luX3BsYWNl Iik7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAl9CiAKIAlpZiAoVU5JVl9M SUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL3Nydi9zcnYwc3RhcnQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0 LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTMzNy13czBpMDJnaXhh bHJtNTEyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTEzOTI0LWRtbTlrdmdyMHhyajEwY2EKQEAgLTEw ODMsNiArMTA4MywxMiBAQCBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQp CiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCWZwcmludGYoc3Rk ZXJyLAorCQkiSW5ub0RCOiAhISEhISEhISBVTklWX0JMT0JfREVCVUcgc3dpdGNoZWQgb24gISEh ISEhISEhXG4iCisJCSJJbm5vREI6IFNlcnZlciByZXN0YXJ0IG1heSBmYWlsIHdpdGggVU5JVl9C TE9CX0RFQlVHXG4iKTsKKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KKwogI2lmZGVmIFVO SVZfU1lOQ19ERUJVRwogCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwogCWZwcmludGYoc3Rk ZXJyLAoK --===============1939723462== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: af3bf440fac5f01f3b01cb79547f41a15398a2b7 # timestamp: 2011-02-08 13:40:51 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # ws0i02gixalrm512 # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWaBVFNEAJnf/lHZ/QQB7//// /////r////4EAAgAYDO/eAA3MDVaRht9jKZ2dYl7bZCHu9l7ue3sypnvbrvb2173PVuh723NDWi6 7h7tQUctACgBcDry60Goujp1h7Oe2hntwYb3Bi57dWzbr2reF1njb3Wu9ze0AoCnrKjq83SezbWs qIpa1C667p0bsXe4aKPQJIhAAIExCMI1T8qfkyG0TVNkNQ009QNqGgAZD1HqMJQEBAQjSZTEntVP 1R6mwp6m1PUyDQGgAAAAGgBwNA0A0DQ0AGhkNNADTQDQABkMQAGgk0kiNCIU2Cnkp70pplP1Q2k9 T9KabRAbSbUAaAxAPUAaAiUICE00MgjTaIwjSntTJT1PR6CT1NqekaMIDQMmgeo9QFSRBNNAEBNC Kfp6TUDU9lE2iGgHqHqHpqaaNAAADZHAoeurKSSqlSlKUoOT7iyQTUh9xAk+uJ+ohUAn5hJ9UYof 4YUFITlsIllV3L7A0JhgaMpArIcjwbgJEGOULEMlphE5aKTNFMEoKTCFyOMUyoZhShkpHAYDICsG MFgw5Kiw6TKCM58whRNgSlgpRqSylKCCSKTDDlP8vyfV/X/Zfy8odR6K9cJO4ev5ck2CaSMRGCiR ENUQzWTQooIjBgIxRRXECxEiDAk/4hYVNvybTBgiCaTdsCJjC2WrBVthSCMUGIjENYSiRBBA2TTE BVwlNNBh3HfTlqiRhvvTBBBO2r+ZN44PDKxgqKHTvYIZIZGRSREiCgohFgkEkYjNTau/EY/4/29Z D4ekkxP6DsRGa/VEKtU9jUr7DvHL2QU28c5NqbN1JIEHIUToqioukuOkrMqKQjKVVCFH5d6peYFC BhVUQ3v9X96RTsVdXMfK+KaKmURwmL89Azv0H52HaJoeDYPjYGTSQQw6Cc9uNt9t0FKbs7+RiGCE KCFQk3tAlqTr20GjNSdh3Mpp0JRyz15phnp5FnIpa0Gjaks080oixelDWBOUVFFigpG2s3ajOtqG kFhViMSFYKIp2vezXitWCxVeIXs9nyUD1eyUboQlsaeBEl8xXgmTDXsDuOzp2MaUyQK0x59ern+/ wn1AzwPaYZJ/qjSl1WXtxcDTiMzC2mpjCMcBtQ7vCZ1qsztZpZ46tL1cHXiQVRYqxR8JCdD0neJS HBSk+T2AL0QbPuFdBPmDzvi+7d4Vf15g8pjs9aTWnhVm0XMJ+j3FPKhQvpIT4TDz+0294aK/bEo4 KKLGnmtHBRIB5GeJDyoeNnk8tk2TdKp1VV7KHWGEEsqECyWu1KWWvnQeX1uiImcJVWuzCtZUFdmF b4nx6he2KLe12NtJ2gVyFISJmr6kSVK3LXKWKNWs0UW+1KWZrv/MfNnT7lLObeebMRS+m62GtfZz HM9cTEBMJa9q5WSZiHYJHoEI3Hb2Nud4M8GPG8fJzUe1lr+958iZGgXxKGobd9IcFgzjg6KWtGAd hk298OzLuU2WfClJRXqEzBtYIAx2jKliKSPMn6nHNDGhlNN0djMU6XleuZ7oIslTAPvCOyoiPhhg Do5B6zCUMPtCUkm5ZQuynP2ibqA9HSwg4lwUPctiINHfFbFoFtnIcdAc9CdLUHI5xHYKeLsJIDIS goqiwVURVIorGCiirBUYIwIqnft17iHbOqUn3ZJO7mHAkDoPhM/W+Su1H5KL8vy7PzaN0cuOdT3b ZLvy3Nktav3llaMWo164HkmiqO0qzOxVmqIl6PF7K61Ls7MyqPGMQ96vD0Z5W9bDmEKYMO9ZvVoU zoN5N1au3PN28WaZtrnq61vZtl5jN3E0KjNLo4404aqmEUoqFarR7Uml2pBeazRjEM1WmpRy9rWh ZZ5aqoywqXW8tZbKOrLVbYZHahaSZSS6EzztdmX5Q5BxexyfwNx/F02fPa0Dz7ZUxFttorL+UaF3 mS1Oi3UY1cvMmbYMCj5eZOrcO07nUX3t8MR5pD1FanaDPCMR+LiR7kc6PclXbcpG7fn4umch91h6 lbiiDKorN89YsURxQpAwqMiuK376Th+g9TwqEp8+nUEcRLfq88YQvTeup5N1R41L3PuDYmu5UE5H 6AduV40UmUeWFmtHpUpyIxekqLaHDq4h6rz6Y0SNsoWE7/YwdheQ1MzM1yxDfzE1hI0PnIkGML98 xpYsYJmWueyBJrBhOyTjUD0MBqakUE6LsZxTX/GZIIF+Q8yEFAp4iCDDBhK/Oi0S1sjXPgvckRyI zy3Mam9Bh9H/QhhSEVClKsSVpr5m+utWBRBL+Tc9D+BH8dOGbgeno5wc2YYt9hYZFEkSGIvDgqmC T4R5GORYgyZLIU4ctHvOBr/FhXMRslIt/jhpFJHpjp6TwQ2XU3FxXWSR5ZPBmpZSjEqp2eISDjwR 8bx0pfPNZ+317QezS86M6dugprlTdEEkO6VR9UtEkONTLg2VzTePVZhXLT1CFTC0ZnGWepXemTcv asuO250wRduzdVXVf1vFZHPRstx8KMWUTQAgNREOfDf22RLOqZHf0tVdEqYK58uhPsiMG5aC57tD 9YzpI/TR8FtXVWXN7N05OWxgzm/0Oi+lxlVPPLJSlCqUqp0tDbI8UTZz3OrrMnjbs3bZG9vc7pzK u9E2xOmmQp0vdVho4dDA9jpqvDNLs3cWsp0qaUYKvY8UWd7Yx4zrsUYc6m1ftdxJzdmVqY13XnYk 1wTxWj29zUuuQQRy3p3sxSYc2xBXwxHZLlMV16O5ynaanjg3yw+zXNBazZOoTYidDCWzk9IW4lap BsQauOH0SAOv9hBRVqKxxweaCbXQL2OicwN17zoaBwig60T4yRSet5vBB8CFRE44JyTgrn18n3D4 D9s5VQYgVlZCRkkG+5EO/v7e5n9XhBl3xlCUowh0Q8FmPIGRaMMMMMJhD5xJQqDSHonzemqfnffT HENa1h2PkntSSQhISJCQ1+h9XFp7zlpy7ZuxLY2MJXTzC7dbNnrzs+HZ3wr5eoqFeo6QmiZZ6L/a ADzc/0tVOFPwJ9CufFVpBKyhAUU+gSk/EAKEm4nxm4oosm8sWSOwpCiwWTiBhcYQDSI4PwvW30HW YegUtbS+ROZ9DkIOhTobUTnY/YlHq9JXkLE2m44w7DA6yhdYmRmnoIQjZ5LspWhSEafi+8W/qeyD pywSnBrlq21dMpw8G1+BZlnitsVgwNVFotRcYs5C+u3qDdiIwsqqtmdYDMwOEfOPBSqfhoDikFk+ +Tjub1IbxrYlvJDc93XJ5yip6AMpm/Bcnj7TfeQ20ibGkjIicTQ2uovdGC8W5alrKmXIEgVVVhoE oZFW6qJ8YQwo/s0CwLkx5eQuopOgawDW2DJekbkV3Oa2GJDgESJex3FPdRzgcLFlWPTdN9cRFRMD gsRENDE4tLUTSfLBaL4omKXPamlsdVRw0Es79H+8i0ueNDj8cfbc4Et5VtVTKlHTKdfpb8b1QAml oArSYCDYMklMWVfH275QTEZjAP5POa+4ax66de7QQjwTGdti2yDbVeqdlY11Z1b84cX3mF126txt ivJonwtEUtVjGlITVsOlvnsaIkJZWE7q1SrDzWoGur6F7tX33Wpz9223kJ4rJDGKTAmBQIftEJ/I kRSBpxVQgQwkh7ZJH5n5n5352D3v0Ml39T9GarjKpLFMFQDkqZqNH8f3fV32A9r7HYUKjzHSQ7IC bggnu5mjDYglPaG/hl+Vp8FPBD39zYRQs0VaUKCuzCqwrEsJXCFLKtS7e0MuWKYqv5OTgN/sczgz uBDjirS0s5WZt7gshQ5Q2GLUj3LIWwdTNJhFTfWOe1djUuwXWY34X0tyP6bOUgBz/N3QuuuG3kZC BDLcAhbkaBAjxHUz6JAh3zjc8yD2CSZhjTI2OeswLShSFJIUh9rz55iCbFW1vI6Dk+aTB6D7TaKq xJGs/H9AXjFgX3q1Xa+Dc1+ah5uLgbenHhF4tLNHmubllSvJ7gzRiaEwpaHWns0dueuer0IET5SS 75nxrgZ9415OatIlYYeKlnwZrXZiLBEYYggkgJJl2ZpJIEEEonvRBfxFi21xWt+JV8FMWMve69r4 p2yJGyMqE5T5gJ75+9R8ZI3+JqDAA+kEiCEKz3SQ/CEk+kCe3sKqqiKiojrghPg7eeEtsJZE4g6O 32d1PDvu3pOqSUtNKAF+N1SkHfBPuhWBuhjCdE4Q0xVk5b0OTKw0hUJifCZaDoqJ8GSVxpheEhpo 6L08dpeJp1tEEcZen3kIqxUb9j28jcZsJkiRsTa55MGRdDJAfmJYvRBYKG0XoFG+qH0LBuGxa+qn tuwYTRJFlkI71pTqbXJlMc26+25nVt1GFKZObjhhMpJCiytzS1VntV7/TZvcHauM1CUlkocdHVq2 N/mTyybEkpTXBVKUpbV0d+TcwWLMWL7EI8/TN/uJqlT5YrTFg6RMJKQKvMhasMICCMM+eRAySyo2 63lV4JNnXHPOE4TXOrCvFs6Outm9vmmuPPzOm88Pxspp5N9xdVHlnaEipSvS3W4pIow1cpehkfiO kMK+UuGGPiJK8y5S6u8a1ACoi8Jr4WQ3PquIiTC1RKi1NyxIgIOfIXMT5WKqoToO4SFTkdrdr498 7bQWmxv7G9TLSPWF+Qxob844XLRc8DKzK0zUbE6Oukkm92Tu2zowSTVtz7hxlEw6MhB9Jktbw3L4 TBfk6jaSxwigypTZeRdQWlZpCmovf+0BQURAI3IN1XVzvEHGxkYhzcepcWUVvTkjyOgZyRhUFPfJ rJr5lUTW3Z8dhnKSGodU7CCcwbCiAhkbJtArDEGyozmQVWbDErJFpOc7k4bcTObK86RHEdZXXUZP DrWtXKzRFWuSJNLRMDJdziXx1r4ITcZEb3oVUkkYpk7DDx79GOUhGVt+u/LRxpv4ezVNg1UkpZ8m QqQOePUZiLxzaDArKtjqYERDEdTyDNzkOCDBY5ERF4stttiR9CUK8E3IRgtsrva994tqGw6KsSNe xocEF7cJaMC4UoLhNue/fhitwb0IvyZMV5vM3jhJJo5nrUogiERERERAREQRBE/uIQXNzy1clGzk dy7c6rZ0yaLO09zRyasArIDrTWtu8ubPtOg1GON48AzQswugKE8sjXRRGOEGKvZli9KYaBqs93a1 mpFcF+fpoWsIiFtG0j5BR8o04LFRFBx8vkW40xWTsNHpkcmmN4rQKDaV9pobGxUyL7VuoamZSI0y jakJQVvMao4bBcqjlzzK2UlMsQZZTUFk4B7m0apROvAgmvg37Av1SFoVOLO7MoK6DS4Ekx0g3hCQ dGb1NrBi5M25o2T/6YOx29GPQ5MNGbPVyN1PJNXERD97xTS9znwa2grkTltGrvexU3WGoftSeO5J NMsdMN2tbabzcu5sWLRTBYjyUjqdDzpAqrts2gaEvsLs5oWh9VUg5uSVoxuZIeSgeJqXuIuVnPUm hoTiwp7GNRSkOpumhYYdTkGTCKm6lzfbcPZ7K65LhWqMKJBxmAzA3Nhri5zyRiaDaaHOg1KD2FOR ymlLHSDBzwE2Ku51BoI2oGxJ7QU3BE3RDnmnJ2FNxtcTGjFY8UI7Ha39OW0p0bVNWWLNtbrjmDsX 6lV0mDwbppELWzRoUesM0LLnf0OeqrgxqiKZMmpkljvLr1TYYv6plvEY7DmKZ1GOTsalesD8VqYF quzDLk3BtCqWHTB8Qc8CZstbKmqJE5qJmMcCxIpq5GJHvuVvgYUK+pCvvw822Z4cs3hgxKGRq4S2 q4d8RJG2GCy0k+oawI1FJkDhxMyICGiR085ZHoprTB75386WtVz4rfC7mhuHBxaySX6F2q91Gx1W Xb2KEcJflW1d6VxT3HdPX50p0MWUzmCOlIN6laE9aHSHhWodLegVFBzkPd2Lmal0uMeYShq+zK2+ gMIiEy5gsGxhILChBtZvAGYMDbeK6D7orlFyWPJjJhFvkQENzJYrk6VOhBtuJuXK2NZ1sUHeg1OO h0QRH4PORxAQc3Ou/JHkLYYHjc4MlTn6uyN7g4ERDul+OqnVV6uyrDv1nwoR4UKrxGrXtLLIqkOq pqiqlWx4C2VfAsZToWL5MJS6UH9xbBgZVoeBgQEN95lOwbDk1FNTty6ncZLCgWFGFC5B7LcTazlQ gOmhI5ODUQEK3lbvwsGLDIDEQOnAqFDiy6OU9NGJsGNyx8O7tSTKbmRwbHoWd/o696tFLHQ17HSj mdrgXNz5jqcdjk55gk5FOAynTd9nbLVmYG8eKxqPWw7thbrRYKS5M0mLwkBYQEKo7unQxKeIgIb7 2ObUERCooiJh36NqLNIHTYdKD7s2pgLbI0DWk7DkmTkcvcvhh6+SYKTc2WBqDoSQcHEmF1NRtflR WN9NOGPEXUp3MjllFGLFQ0PAYU1NPEYU5qlAoMaGIL+BeAyMbpwIiHyp7/UxxuaNby3nsHI8MyxS eYhbTZheKFCcCAgo17XGY6hyFJs1xTudiBrG2Hzd52ERJUmlYemcCAhsVsuC5Pyw8BBJkYaEzhG7 FJiGNFqa9/JadDz3rnYzVWh9iDgcnZZp0Njrct0x8TqZsWRo8VK1TI7WWrFuNGizjxu1XQv3CtPi T48fEh76p4kAbUCkQagEYMUrFH5R+dU48eHv2kgbvEusQDyjCSAdEOqPOUB5iq33HMSl2ZHmVfMX AuBQVhkS8F1KuVgzKGQoFylnG87Mdp651cNHwCDJuYM46Kecuo7YXQ+J9JS+IVxou6WK6ceuFxdS 1Q8pq68bt/Z/fhqmqI64SAVZslImqDTroJ73BUysoohICjpc+pkCtYDxsC04J1Evf9K8jEAYx3fE FqfkBfjQpC76Gj9iRsWLEKGZkGxsoTU9+Fk1dsctZHaUgYMmfY+segPTIYhQCWSgoKMWCAoJPQjW Iyouq9Fw/VEOgqo+tRoB5HziPk7MxZEPnVAtDwHypB9+MnrqlItJGCocyAXnmT+An8P3CTwLF15C EH9SCwt8xKCwUESRhBH6ZqBPXykkp4emUU/BIF0XlVc1X/kpSv/Zlb/f9xTgLzKhSLKvc4Kt5a3C LQvPvD74H4ISjJRKUjAhxKvHwuvRLVF1i/ftNSX/tgi/+5BlsADg/YJsE22FoHHQefoqL6BEboAH Ii/vSQSfeatWQuyBokBabblVtyq6Pt7mgPRGRJOfJwpDZGrkkpOMR9KJMkcsf/Y0MOTZsy14M1EL xH95fkfgEoquSlMoo/2lcYkCMNWMaA6jmiTK042PVs4VdG23ZFL+zWySvFSJPVBVAorGNiqVuRkR y34O5Tkvz32RP8wYhfvBz6cs/PNx872Wq9doGSrW8Erw1VbhHbROKoZ61VgWzleRAKKbysqnnSXy on9p1BWj48fh+abd3sXHzjLKwSmsTOY9ar1c6ruADIXz91Q0WvwEfSVSl1wGPOX84GjEKQDov0C7 xbtCadHB7RecXaKHvUagWaCcgtfnX8yqhedJ+nFri0bjC3vo/lPy3a7Xb6C7AlCBoZCSWgOWBS8j LbGZVqUJgMg2Kv9QaP1/djpcIag6zF10oZKFE0lkMdONtVrl0CUgOkoLvzEwWDSo1CFKUihSUUpS m1mzwkk3/ZYbZubOAYlMapRVxvLBgSxb7rpw4CWULRwcdeKUtsjJLJY2iSWRCsbSpaURWjCy1S2i lcDQMNIcEBLykLolIl3l11DmHTvPILIyLzhKVjFVNTDvnSAaDySdTuFXdLPG1ZkN6Bj4lNaEYhAB 0QTUYgl1IEja3MCaWREErcdYKqbIjBLjYNUNFgCyNhpLLoy4HOYGxmYXBicISxVpT6KHspBbRRqj nNqruvGqP6H0fhzfl+m070k2YLIn2YtGjF9byYvrUhHQyKyTN6rmh120sXLvyPyvp0YrKNWDJdxP 1BJafyq1C2sJINXglNUXzfsqLjUXyNpcQNBmNAYnXwsfUu+kBRy9C6jmXmNB5i8vUeQoG7urY0px TwrbqejGdHV6Gj8O92ROqT46AVQQhEQ5FWAqU+bEQ5uWQVTUc5+cTmAw0rjDYELyHazAJ+n9jHn4 VeeBiI6zI9OQMLlaKeDU+aetDgxvE2PFxshGLFGurFQ2omJahFgi3F6flIopT83joQPNmBUjkbE1 JF4j5r7aEJime1Dgxsg8SweCrGiyMmKxKJSpb6vQbsLkax+j58fIcvYlPRzJfaPAHDgwoj4yBDRt qh+NL2ERNUwwZDC0dFCkrRYwXwPALzSapO4uO/3+/3+8zDtMCnyE9fz9jqp867Fyb9+De4tTRo2M mJg+uc249jLFkxNh7O1O+rPJCR5mbovj45p2uHwqtdyEcy+13vBi5MzajRkxXuqR7COmNYJqZrQI 8858My6Qj3vhIqW6VleRF6gr5OrF8HfDR6kmk7wOPjIPxk8CUfEoRBEE7/tHMfEYYfzGiqi5LGCU WeOsdtGsYmss9uirlhWxBjLHYuSOC27azRpbSrUZGGi0BoXHk2azMttbSjTwnjJPgns1PL30m/nA OVOCEkToOEsAG/t65ZQeOAhgQmW8QTrOc7DM3nVTOisWCx8JsVOyXD0NhyR2HLCn3DTIGfUQRuaL 7brHBvU278FztZmLhuQje8umMBnEnNit0j2sizu+K2zYhGrc3tWLo5oRRxLnJ2PkOvtuxd7g7HyQ 4UKlUxYaYSYUIzdClGE2tGjx1+87ZtW1kv2kXwJ+skjE4xvZqf14IibGcg+IsYWfaKweNwjvim8R HvL2oRhpMOlAP7oi9sApC++UoJAiHcUodzZIUDFULJgEaHPw3HZitLj5z3OAbVUsHA54JiRKEILE IQ9BLybr5D0NiNlF10UHsmClnzrrQ0hghUpjcyiIxNBgUgp8WfF8ZubTlNjGWv1jh0UQwwMIbSMQ OFg6o52iu8psbQchbZe9/lI85zkdnBmJyksJ6ijmzCSMj4zHepd2tjQ7ok5smTqkmuDc6MWDVsbl TwCmsvOAUcVoJsXcbEXlLXIWsgGgtVb1Ys3B68GXjqeb0OZxbWDo7D0wI+5iyUEE/OlSHNRSYbCo heRcjekAgrEJHQOA96nS1gsj64oZhcfl62OVyAxHsg42blhSw/tve7/ibH9K8Or5z1EJOxCO88mx r+BG5RTjhxRipJ820nmSeMnZI5M+bRZ6ivnKOjtXtSBDsOR3asGh7/4+mDA5Qr2wto3rngraEUAx OTsJn6iAxQKdLbA1P38pO5TGDp7d1VYqoKqvTJxs+5OSCQFIOAnq88CHaNgITFFgsIJnmII42Hal rDF0SoshOmVkSjowoycrkVxApKMYu9uJcfEM5TQTk0jOxwXXSbKqKo9tF4Ove7hNBEDqbGjqlmIS GajLa1YmjOFWRVrKTPRwHlCRLoqCxEWwpDSBNIYW8+KQ6JDsEAPePcYEQF/nPGQc5cTdR2HWQ8R1 lS4WJM9jrP2P6IPvR1YVhM+Di2HHV0bXjZc6dTmtm0c15pym470TiiZpvqqHKoVRayTqPDK0i+FW Dwd6JaBhjYDtmVJaFqnhTUqR5VLdzWTyU1lLAs+K8OxlLJJGr3sHGaMYBrzkgY0FiLyZIRgbm4km we8Ji8GhlGLZyeCqtU4wDGcF8QVdVIC1SEKA6jFyGr6rT0PEdPbkSwqqEWyNJxkkKLAq/Hs+/EXj GWs8XI5vgeDFDkSqVHe1WSScXqWIMYmZ4zNavXgk3evBw0s2+PwXNicJEj0o9VRBcH3zVcaheGB6 J+dKkYCHn9wspcroTSRLEPQwqSEyuEzMEAMV0A6M7ItkpTMb21RX0xXQZG6bikGI5aoSVBzLNUie YhMCqJFUcKCkOdpB5EAFR7/XlxzJFgrQoWVwqs0G9R9Vzu5+5VSTpRlUOFrQcOYt+7rJgeo9Bwb0 YIjxCyjSnP1Syfg6qdkiRJADFHKKFQFuFcnooAGxYcipoiiwIhGSQRIBFYCyIshNCx+B2JgJksqy RLSOnF5Xb5I99JclEYNKEQrEaw+yJC5f52VM+z4XN+gc9BcIEbRJT4nGdB5urq6ye/zDKAdFJSOV hgQLC5sYPu66uOXFJFGM4FGPrNtjGLFLibnVgJNXKcjVOJTe9DrJVKkzbHU+ZTrmqi6EazadxM3F dRJYg4JJ0dHzOxk7O5UCWYpQkDmSzJZDIVe5z0jKXnHeHrQ3cwitApEoFk+BX/QR+oRuUfTuRo4E PPAoj2sb7YqZqmkkUy2Gd5wbNh4ZxiGlBQSQou5FDiNJ9WZe/k3t6aTriGPT4UKhIBw0ZBoqVfN5 /GtnABMAgVSApkwBCqHJbT16EUuiuJBFAni1rxqhwPoVIaTDBU2O9srj6/kFePqAhj4FIbCULIkd rwu65CwF4C+T+gqCaz695RwR8WI/zRSRZFJBkBa9PZS/+WdCp3y+aU04fkAM00VsDYNY3XDccVxc fQX7fxu47lVyeFqFF4iLvcTmZ1+jsLxwf2HtxxuC4dJSwtnw+dr6jFVO4Z9HktE4rJEuWbAjR8m8 k3aEpPyEsVxInrdRUDnXvzgFFNHDBUKp8pTzlXgZgH4fW6lMNa3xJBTdAEI8b6fQWT7BWeKrA3RQ 6IgUO6gbyoDRAohBGJKRE+wrGCUXwFiaBWcCNMa8Xl6jzFSPWcNKFwe0sqZZbwpt95QDWEaOo6lH CL2GpoJatQphwPwOYxLiynXEgrCE6w40GQJA9T79y4F0IxIxeFT0Hx7AAo/ogRsn1x2HCw3bXtnZ uspXpz92mTg0TpxryS8bESlYUMBW/DZltfIVPc55bi2cA6M7hQKh0vi31J7iuAvU2KO0qop95Ury 86rS9FS84OfB+gkiB9cD0Ev3byEqoyd9zaCUIluGolR+MMgXyYF5iKlhb9lFFO16EY9ZVSoZpIqI MpEzYs0RLkTk53XzlHky84zio90fbjJnttsag6RuUN5IsGmo3kSwvae4VKjUhigq5wOAByK1OTGN E1nyX0zc5Bc4RDO4vD4Z+vOvb5X1MypBZiJSBFkUoLooAjYG1keyPCdYreXBFvMNi0hs+CinBVeS Bru7D1I/tPEWI0QIUFiNPE2DjqBNQcFldYjDQC2nVwsX0VVMWDbAs0GyjpElEkFCEFNBM0UlRUwG 9msrUMwWp9dVsriJqKY5NiRAuS9YwvZeEZGVSpRJO6KWQ9kiEOFx0pMOfpswVBiskiuo7BNVKMIP MgMClaIkEFCSBHhlZmmSCkvH/qEIgfWAo6SgtD6wwDGFSip2kAQvC/ApcI2YVdTQq/W203yUxw4I naxgMkmUg71d8ubKkxMJIxrQEFoDEda6UMriggbRrqb0BxXpM2sGqHJQUDInK3JdYXBFMRIqD1j6 mrwYy1RVeVzIwSccWdH0YMlO9Dc3yojhJviQsRaUFOlJZapYpFKLITDCwoEodoHi21NjZIpAPLZ3 EdQGmKYWXMAnjmj8x6+0zQGbCA88A9sA6GCFxCBBJSIJZiSCyXKKe42XJ2Z/dhJF6gMxRaJ0qDF9 Mpj0APL56SRJDzFBp6AwWMYCCBgDZTNU3qO9vogYznB8hU+Bw8KIXqBBIRk/E2H7owPWd6wEEYCP 26WQDD513akuiJynvhpi5CnR1vLXkwVmHptUFRRniLSEUTW+f5kITaSTeSBgUA3K4FVjuLDNQGTt nJ3yZpyDF4TyVOdEcIGluOOwxIB1aeTkO3EuX7T4VhyyPjSFCJEeToj8XlH1ie1lKgYeS5cEKMoG ikpFsDU7KLZhYRhaNNIY5TxgnuKItkPZ+Gz9wnehGe9g+UZLwTBMMNQshTVWUk+Ym4fcEEQRBM0R ODklSy4kFr56FYAsI8DRVKMKOmUUC1GikL7z0qGwPlLxGCu1CoLtDaB+uFF6HtNLucGVPaaPUTQc 8wXF7guQ4COGq8XfnUA+TpfxOw7zY/m9n1PvewVNWTu1SDBSSSMYLFIRhPPaIPyBEJkgekoscvpp GECSRgrsFanDEwsICSNxGMaRaSRoggYKHd7BdDgJY6d/P6WdK1odlVlCgh6PV3BJwMgh0ChRPVZj 49QHLzk+24vu8hv3qcPPZBaFKSqlXJ7l4xUYKDA/SiOXLvmAYQ3smphgzQDCaCC1gSJIrQ0hpDai ekHvuUL4J6zmETGcJkjDMsyRh0zYNgCsgelkJUaqMCkIerSgBtBfOQVvG8hIR2XrQqveLiAdxmXC ubsVh6XyacYudxqOjW8C/ifpFblAe8wij0tBogYi2gOhYEaRcQNHTziJXVDVHwnQJ4nHya3SHART euukgwFhqkoCyIkUviIQPhJMm7tqpIyiqNKn5FZ+gSf8von7LITXwUeIh1CBLQRAhtrrOXKnoM3N QbZsCjSLiM2MDHc2FhhnjLVFPrstoqWQ2X+W43RphhY8DRnFEE2RoFBkiPJgU7ZviJ2Lkh65+3N3 2ipheacnQ6jRQoumlJgoRdgF191gvS+p4bGhyHaXckqh/WFPX4ayKCKAqIKYrZ3f3AalpAB5RNOB ke6KyKYCPUOPq0rgpbhACvmwEe75N25TmhIga8gOLElHgwZvH3ddBTKSP2XNFvxtIvTo9DqtSC1E l6kWXKVKEakvLTQSGrSMaek4wuwxDk3KtnWQcsmGVKYlNxmdC4S2WFDc1DAr2JrC9ihEjsilZ3qm fFfoLsJQ7qXbDiqN1ZCGZEJFEqPQt2kLO9JVDNxyqIRZkEccM2HIBKYMEKU8hEroYjwGs39LuDIM ECCEFkhAhjSWwl5Qd7kDqcIKY00FVQxMtGNiAVQyAubWbLiI2yRa2BkCKXwX0F1S+LiCNxaXhZy4 TAvFNJaUCmFYFUVBh6oU9b0O4kuyeOde809NpMYD267WO7hKS65ukb898gyEsROSxpFQuJBm1O7J x0Oh2EmcHQeZj0zOi4yoctyIcoWrx2ar4VaJYtlXfWuYppg1iry68DSqlw8oPXBUGQDBzgMJE3C3 XhrFAoHMVgSaogPBYV7rBpFuFeEVNgvTs2HUtu0DRF6uBJ84aw6FAsWIFAmGDtfXHn2fasemSOKP G1Q2JPja+S5Ft8QwnWe083QUCua6RDRX4QhuHAroeZQmnb0iti3Hw7HADUZsVOrWqSI6ym0XBQPl 4l6Ri+j0O8PDvdSmncQiHYpVDMihORohYg6IGE6pddnWtPFJPq7pgDL9XU9aTzR36tyHxs93AIde 3na8ASGPnQwaCOpja7ugg1OGxk/WKm8aqkIKRUgkIwjJCSSCMZIgyAsioGJV6aqpysANXYK0EREN t0hs/Ae0QL3YGrLfE6iF0qkbA6iFgyYezqN5XNzdFFz+V5C1tMfA9k4FNJNaF2txHc2+QVNqgaew J72p7ALcwP4wonshtOc9XS+Z0gh6lZ94E8YPaC2RkgE/+D0H0n/4u5IpwoSFAqimiA== --===============1939723462==--