From: marko.makela Date: February 8 2011 12:18pm Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3487 to 3488) List-Archive: http://lists.mysql.com/commits/130712 Message-Id: <201102081218.p18BXZEw009946@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1187890103==" --===============1187890103== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM0ODggTWFya28gTcOka2Vsw6QJMjAxMS0wMi0wOCBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIG1vZGlmaWVkOgogICAgICBz dG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIv YnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2J0cjB0eXBlcy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1l bS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHppcC5oCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmkKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3Bh Z2UwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzB1cGQuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuYwogMzQ4NyBW YXNpbCBEaW1vdgkyMDExLTAyLTA4IFttZXJnZV0KICAgICAgTWVyZ2UgbXlzcWwtNS41LWlubm9k YiAtPiBteXNxbC10cnVuay1pbm5vZGIKCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC92 YWxncmluZC5zdXBwCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIw YnRyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwlyZXZpZDp2YXNpbC5k aW1vdkBvcmFjbGUuY29tLTIwMTEwMjA4MDU1NjQ4LWFtaTlkNW93ZTV2cmI0dGEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTQzLDYgKzQzLDU2MCBAQCBDcmVh dGVkIDYvMi8xOTk0IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgInRyeDB0cnguaCIKICNpbmNsdWRl ICJzcnYwbW9uLmgiCiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVkZSAic3J2MHNy di5oIgorIyBpbmNsdWRlICJ1dDByYnQuaCIKKworLyoqIFRSVUUgd2hlbiBtZXNzYWdlcyBhYm91 dCBpbmRleC0+YmxvYnMgbW9kaWZpY2F0aW9uIGFyZSBlbmFibGVkLiAqLworc3RhdGljIGlib29s IGJ0cl9ibG9iX2RiZ19tc2c7CisKKy8qKiBJc3N1ZSBhIG1lc3NhZ2UgYWJvdXQgYW4gb3BlcmF0 aW9uIG9uIGluZGV4LT5ibG9icy4KK0BwYXJhbSBvcAlvcGVyYXRpb24KK0BwYXJhbSBiCXRoZSBl bnRyeSBiZWluZyBzdWJqZWN0ZWQgdG8gdGhlIG9wZXJhdGlvbgorQHBhcmFtIGN0eAl0aGUgY29u dGV4dCBvZiB0aGUgb3BlcmF0aW9uICovCisjZGVmaW5lIGJ0cl9ibG9iX2RiZ19tc2dfaXNzdWUo b3AsIGIsIGN0eCkJCQlcCisJZnByaW50ZihzdGRlcnIsIG9wICIgJXU6JXU6JXUtPiV1ICVzKCV1 LCV1LCV1KVxuIiwJXAorCQkoYiktPnJlZl9wYWdlX25vLCAoYiktPnJlZl9oZWFwX25vLAkJXAor CQkoYiktPnJlZl9maWVsZF9ubywgKGIpLT5ibG9iX3BhZ2Vfbm8sIGN0eCwJXAorCQkoYiktPm93 bmVyLCAoYiktPmFsd2F5c19vd25lciwgKGIpLT5kZWwpCisKKy8qKiBJbnNlcnQgdG8gaW5kZXgt PmJsb2JzIGEgcmVmZXJlbmNlIHRvIGFuIG9mZi1wYWdlIGNvbHVtbi4KK0BwYXJhbSBpbmRleAl0 aGUgaW5kZXggdHJlZQorQHBhcmFtIGIJdGhlIHJlZmVyZW5jZQorQHBhcmFtIGN0eAljb250ZXh0 IChmb3IgbG9nZ2luZykgKi8KK1VOSVZfSU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdfcmJ0X2lu c2VydCgKKy8qPT09PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkv KiE8IGluL291dDogaW5kZXggdHJlZSAqLworCWNvbnN0IGJ0cl9ibG9iX2RiZ190KgliLAkvKiE8 IGluOiB0aGUgcmVmZXJlbmNlICovCisJY29uc3QgY2hhcioJCWN0eCkJLyohPCBpbjogY29udGV4 dCAoZm9yIGxvZ2dpbmcpICovCit7CisJaWYgKGJ0cl9ibG9iX2RiZ19tc2cpIHsKKwkJYnRyX2Js b2JfZGJnX21zZ19pc3N1ZSgiaW5zZXJ0IiwgYiwgY3R4KTsKKwl9CisJbXV0ZXhfZW50ZXIoJmlu ZGV4LT5ibG9ic19tdXRleCk7CisJcmJ0X2luc2VydChpbmRleC0+YmxvYnMsIGIsIGIpOworCW11 dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRleCk7Cit9CisKKy8qKiBSZW1vdmUgZnJvbSBpbmRl eC0+YmxvYnMgYSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uLgorQHBhcmFtIGluZGV4 CXRoZSBpbmRleCB0cmVlCitAcGFyYW0gYgl0aGUgcmVmZXJlbmNlCitAcGFyYW0gY3R4CWNvbnRl eHQgKGZvciBsb2dnaW5nKSAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yYnRf ZGVsZXRlKAorLyo9PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KgkJaW5kZXgs CS8qITwgaW4vb3V0OiBpbmRleCB0cmVlICovCisJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWIsCS8q ITwgaW46IHRoZSByZWZlcmVuY2UgKi8KKwljb25zdCBjaGFyKgkJY3R4KQkvKiE8IGluOiBjb250 ZXh0IChmb3IgbG9nZ2luZykgKi8KK3sKKwlpZiAoYnRyX2Jsb2JfZGJnX21zZykgeworCQlidHJf YmxvYl9kYmdfbXNnX2lzc3VlKCJkZWxldGUiLCBiLCBjdHgpOworCX0KKwltdXRleF9lbnRlcigm aW5kZXgtPmJsb2JzX211dGV4KTsKKwl1dF9hKHJidF9kZWxldGUoaW5kZXgtPmJsb2JzLCBiKSk7 CisJbXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ29t cGFyYXRvciBmb3IgaXRlbXMgKGJ0cl9ibG9iX2RiZ190KSBpbiBpbmRleC0+YmxvYnMuCitUaGUg a2V5IGluIGluZGV4LT5ibG9icyBpcyAocmVmX3BhZ2Vfbm8sIHJlZl9oZWFwX25vLCByZWZfZmll bGRfbm8pLgorQHJldHVybiBuZWdhdGl2ZSwgMCBvciBwb3NpdGl2ZSBpZiAqYTwqYiwgKmE9KmIs ICphPipiICovCitzdGF0aWMKK2ludAorYnRyX2Jsb2JfZGJnX2NtcCgKKy8qPT09PT09PT09PT09 PSovCisJY29uc3Qgdm9pZCoJYSwJLyohPCBpbjogZmlyc3QgYnRyX2Jsb2JfZGJnX3QgdG8gY29t cGFyZSAqLworCWNvbnN0IHZvaWQqCWIpCS8qITwgaW46IHNlY29uZCBidHJfYmxvYl9kYmdfdCB0 byBjb21wYXJlICovCit7CisJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWFhCT0gYTsKKwljb25zdCBi dHJfYmxvYl9kYmdfdCoJYmIJPSBiOworCisJdXRfYWQoYWEgIT0gTlVMTCk7CisJdXRfYWQoYmIg IT0gTlVMTCk7CisKKwlpZiAoYWEtPnJlZl9wYWdlX25vICE9IGJiLT5yZWZfcGFnZV9ubykgewor CQlyZXR1cm4oYWEtPnJlZl9wYWdlX25vIDwgYmItPnJlZl9wYWdlX25vID8gLTEgOiAxKTsKKwl9 CisJaWYgKGFhLT5yZWZfaGVhcF9ubyAhPSBiYi0+cmVmX2hlYXBfbm8pIHsKKwkJcmV0dXJuKGFh LT5yZWZfaGVhcF9ubyA8IGJiLT5yZWZfaGVhcF9ubyA/IC0xIDogMSk7CisJfQorCWlmIChhYS0+ cmVmX2ZpZWxkX25vICE9IGJiLT5yZWZfZmllbGRfbm8pIHsKKwkJcmV0dXJuKGFhLT5yZWZfZmll bGRfbm8gPCBiYi0+cmVmX2ZpZWxkX25vID8gLTEgOiAxKTsKKwl9CisJcmV0dXJuKDApOworfQor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCitBZGQgYSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uIHRvIHRo ZSBpbmRleC0+YmxvYnMgbWFwLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19h ZGRfYmxvYigKKy8qPT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJcmVjLAkJLyoh PCBpbjogY2x1c3RlcmVkIGluZGV4IHJlY29yZCAqLworCXVsaW50CQlmaWVsZF9ubywJLyohPCBp bjogb2ZmLXBhZ2UgY29sdW1uIG51bWJlciAqLworCXVsaW50CQlwYWdlX25vLAkvKiE8IGluOiBz dGFydCBwYWdlIG9mIHRoZSBjb2x1bW4gKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyohPCBp bi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBjaGFyKgljdHgpCQkvKiE8IGluOiBjb250ZXh0 IChmb3IgbG9nZ2luZykgKi8KK3sKKwlidHJfYmxvYl9kYmdfdAliOworCWNvbnN0IHBhZ2VfdCoJ cGFnZQk9IHBhZ2VfYWxpZ24ocmVjKTsKKworCXV0X2EoaW5kZXgtPmJsb2JzKTsKKworCWIuYmxv Yl9wYWdlX25vID0gcGFnZV9ubzsKKwliLnJlZl9wYWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhw YWdlKTsKKwliLnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKwliLnJl Zl9maWVsZF9ubyA9IGZpZWxkX25vOworCXV0X2EoYi5yZWZfZmllbGRfbm8gPj0gaW5kZXgtPm5f dW5pcSk7CisJYi5hbHdheXNfb3duZXIgPSBiLm93bmVyID0gVFJVRTsKKwliLmRlbCA9IEZBTFNF OworCXV0X2EoIXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywgcGFnZV9pc19jb21wKHBhZ2UpKSk7 CisJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCBjdHgpOworfQorCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitBZGQgdG8gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVt bnMgZnJvbSBhIHJlY29yZC4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgYWRkZWQgKi8K K1VOSVZfSU5URVJOCit1bGludAorYnRyX2Jsb2JfZGJnX2FkZF9yZWMoCisvKj09PT09PT09PT09 PT09PT09Ki8KKwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwlkaWN0X2lu ZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJb2Zmc2V0 cywvKiE8IGluOiBvZmZzZXRzICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0 IChmb3IgbG9nZ2luZykgKi8KK3sKKwl1bGludAkJY291bnQJPSAwOworCXVsaW50CQlpOworCWJ0 cl9ibG9iX2RiZ190CWI7CisJaWJvb2wJCWRlbDsKKworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRl KHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKworCWlmICghcmVjX29mZnNfYW55X2V4dGVybihvZmZz ZXRzKSkgeworCQlyZXR1cm4oMCk7CisJfQorCisJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3Bh Z2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwliLnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hl YXBfbm8ocmVjKTsKKwlkZWwgPSAocmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCByZWNfb2Zmc19j b21wKG9mZnNldHMpKSAhPSAwKTsKKworCWZvciAoaSA9IDA7IGkgPCByZWNfb2Zmc19uX2ZpZWxk cyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmIChyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkp KSB7CisJCQl1bGludAkJbGVuOworCQkJY29uc3QgYnl0ZSoJZmllbGRfcmVmID0gcmVjX2dldF9u dGhfZmllbGQoCisJCQkJcmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKKworCQkJdXRfYShsZW4gIT0g VU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hKGxlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpF KTsKKwkJCWZpZWxkX3JlZiArPSBsZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOworCisJ CQlpZiAoIW1lbWNtcChmaWVsZF9yZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJCSAgICBCVFJfRVhU RVJOX0ZJRUxEX1JFRl9TSVpFKSkgeworCQkJCS8qIHRoZSBjb2x1bW4gaGFzIG5vdCBiZWVuIHN0 b3JlZCB5ZXQgKi8KKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJYi5yZWZfZmllbGRfbm8gPSBp OworCQkJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiAr IEJUUl9FWFRFUk5fUEFHRV9OTyk7CisJCQl1dF9hKGIucmVmX2ZpZWxkX25vID49IGluZGV4LT5u X3VuaXEpOworCQkJYi5hbHdheXNfb3duZXIgPSBiLm93bmVyCisJCQkJPSAhKGZpZWxkX3JlZltC VFJfRVhURVJOX0xFTl0KKwkJCQkgICAgJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpOworCQkJYi5k ZWwgPSBkZWw7CisKKwkJCWJ0cl9ibG9iX2RiZ19yYnRfaW5zZXJ0KGluZGV4LCAmYiwgY3R4KTsK KwkJCWNvdW50Kys7CisJCX0KKwl9CisKKwlyZXR1cm4oY291bnQpOworfQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CitEaXNwbGF5IHRoZSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMuCitUaGlzIGZ1bmN0 aW9uIGlzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZGVidWdnZXIsCitmb3IgZXhhbXBsZSB3aGVuIGEg YnJlYWtwb2ludCBvbiB1dF9kYmdfYXNzZXJ0aW9uX2ZhaWxlZCBpcyBoaXQuICovCitVTklWX0lO VEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3ByaW50KAorLyo9PT09PT09PT09PT09PT0qLworCWNv bnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgpCS8qITwgaW46IGluZGV4IHRyZWUgKi8KK3sKKwljb25z dCBpYl9yYnRfbm9kZV90Kglub2RlOworCisJaWYgKCFpbmRleC0+YmxvYnMpIHsKKwkJcmV0dXJu OworCX0KKworCS8qIFdlIGludGVudGlvbmFsbHkgZG8gbm90IGFjcXVpcmUgaW5kZXgtPmJsb2Jz X211dGV4IGhlcmUuCisJVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBjYWxsZWQgZnJvbSBhIGRlYnVn Z2VyLCBhbmQgdGhlIGNhbGxlcgorCXNob3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXgtPmJs b2JzX211dGV4IGlzIGhlbGQuICovCisKKwlmb3IgKG5vZGUgPSByYnRfZmlyc3QoaW5kZXgtPmJs b2JzKTsKKwkgICAgIG5vZGUgIT0gTlVMTDsgbm9kZSA9IHJidF9uZXh0KGluZGV4LT5ibG9icywg bm9kZSkpIHsKKwkJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWIKKwkJCT0gcmJ0X3ZhbHVlKGJ0cl9i bG9iX2RiZ190LCBub2RlKTsKKwkJZnByaW50ZihzdGRlcnIsICIldToldToldS0+JXUlcyVzJXNc biIsCisJCQliLT5yZWZfcGFnZV9ubywgYi0+cmVmX2hlYXBfbm8sIGItPnJlZl9maWVsZF9ubywK KwkJCWItPmJsb2JfcGFnZV9ubywKKwkJCWItPm93bmVyID8gIiIgOiAiKGRpc293bmVkKSIsCisJ CQliLT5hbHdheXNfb3duZXIgPyAiIiA6ICIoaGFzIGRpc293bmVkKSIsCisJCQliLT5kZWwgPyAi KGRlbGV0ZWQpIiA6ICIiKTsKKwl9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JlbW92ZSBmcm9tIGluZGV4 LT5ibG9icyBhbnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gYSByZWNvcmQu CitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIHJlbW92ZWQgKi8KK1VOSVZfSU5URVJOCit1 bGludAorYnRyX2Jsb2JfZGJnX3JlbW92ZV9yZWMoCisvKj09PT09PT09PT09PT09PT09PT09Ki8K Kwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwlkaWN0X2luZGV4X3QqCWlu ZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGlu OiBvZmZzZXRzICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9n Z2luZykgKi8KK3sKKwl1bGludAkJaTsKKwl1bGludAkJY291bnQJPSAwOworCWJ0cl9ibG9iX2Ri Z190CWI7CisKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7 CisKKwlpZiAoIXJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpIHsKKwkJcmV0dXJuKDApOwor CX0KKworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24ocmVjKSk7 CisJYi5yZWZfaGVhcF9ubyA9IHBhZ2VfcmVjX2dldF9oZWFwX25vKHJlYyk7CisKKwlmb3IgKGkg PSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAocmVjX29m ZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJdWxpbnQJCWxlbjsKKwkJCWNvbnN0IGJ5 dGUqCWZpZWxkX3JlZiA9IHJlY19nZXRfbnRoX2ZpZWxkKAorCQkJCXJlYywgb2Zmc2V0cywgaSwg Jmxlbik7CisKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYShsZW4gPj0g QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYgKz0gbGVuIC0gQlRSX0VY VEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYi5ibG9i X3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiArIEJUUl9FWFRFUk5f UEFHRV9OTyk7CisKKwkJCXN3aXRjaCAoYi5ibG9iX3BhZ2Vfbm8pIHsKKwkJCWNhc2UgMDoKKwkJ CQkvKiBUaGUgY29sdW1uIGhhcyBub3QgYmVlbiBzdG9yZWQgeWV0LgorCQkJCVRoZSBCTE9CIHBv aW50ZXIgbXVzdCBiZSBhbGwgemVyby4KKwkJCQlUaGVyZSBjYW5ub3QgYmUgYSBCTE9CIHN0YXJ0 aW5nIGF0CisJCQkJcGFnZSAwLCBiZWNhdXNlIHBhZ2UgMCBpcyByZXNlcnZlZCBmb3IKKwkJCQl0 aGUgdGFibGVzcGFjZSBoZWFkZXIuICovCisJCQkJdXRfYSghbWVtY21wKGZpZWxkX3JlZiwgZmll bGRfcmVmX3plcm8sCisJCQkJCSAgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJ CS8qIGZhbGwgdGhyb3VnaCAqLworCQkJY2FzZSBGSUxfTlVMTDoKKwkJCQkvKiB0aGUgY29sdW1u IGhhcyBiZWVuIGZyZWVkIGFscmVhZHkgKi8KKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJYnRy X2Jsb2JfZGJnX3JidF9kZWxldGUoaW5kZXgsICZiLCBjdHgpOworCQkJY291bnQrKzsKKwkJfQor CX0KKworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NoZWNrIHRoYXQgdGhlcmUg YXJlIG5vIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBmcm9tIG9yIHRvCit0aGUgZ2l2 ZW4gcGFnZS4gSW52b2tlZCB3aGVuIGZyZWVpbmcgb3IgY2xlYXJpbmcgYSBwYWdlLgorQHJldHVy biBUUlVFIHdoZW4gbm8gb3JwaGFuIHJlZmVyZW5jZXMgZXhpc3QgKi8KK1VOSVZfSU5URVJOCitp Ym9vbAorYnRyX2Jsb2JfZGJnX2lzX2VtcHR5KAorLyo9PT09PT09PT09PT09PT09PT0qLworCWRp Y3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiBpbmRleCAqLworCXVsaW50CQlwYWdlX25vKQkv KiE8IGluOiBwYWdlIG51bWJlciAqLworeworCWNvbnN0IGliX3JidF9ub2RlX3QqCW5vZGU7CisJ aWJvb2wJCQlzdWNjZXNzCT0gVFJVRTsKKworCWlmICghaW5kZXgtPmJsb2JzKSB7CisJCXJldHVy bihzdWNjZXNzKTsKKwl9CisKKwltdXRleF9lbnRlcigmaW5kZXgtPmJsb2JzX211dGV4KTsKKwor CWZvciAobm9kZSA9IHJidF9maXJzdChpbmRleC0+YmxvYnMpOworCSAgICAgbm9kZSAhPSBOVUxM OyBub2RlID0gcmJ0X25leHQoaW5kZXgtPmJsb2JzLCBub2RlKSkgeworCQljb25zdCBidHJfYmxv Yl9kYmdfdCoJYgorCQkJPSByYnRfdmFsdWUoYnRyX2Jsb2JfZGJnX3QsIG5vZGUpOworCisJCWlm IChiLT5yZWZfcGFnZV9ubyAhPSBwYWdlX25vICYmIGItPmJsb2JfcGFnZV9ubyAhPSBwYWdlX25v KSB7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZwcmludGYoc3RkZXJyLAorCQkJIklubm9EQjog b3JwaGFuIEJMT0IgcmVmJXMlcyVzICV1OiV1OiV1LT4ldVxuIiwKKwkJCWItPm93bmVyID8gIiIg OiAiKGRpc293bmVkKSIsCisJCQliLT5hbHdheXNfb3duZXIgPyAiIiA6ICIoaGFzIGRpc293bmVk KSIsCisJCQliLT5kZWwgPyAiKGRlbGV0ZWQpIiA6ICIiLAorCQkJYi0+cmVmX3BhZ2Vfbm8sIGIt PnJlZl9oZWFwX25vLCBiLT5yZWZfZmllbGRfbm8sCisJCQliLT5ibG9iX3BhZ2Vfbm8pOworCisJ CWlmIChiLT5ibG9iX3BhZ2Vfbm8gIT0gcGFnZV9ubyB8fCBiLT5vd25lciB8fCAhYi0+ZGVsKSB7 CisJCQlzdWNjZXNzID0gRkFMU0U7CisJCX0KKwl9CisKKwltdXRleF9leGl0KCZpbmRleC0+Ymxv YnNfbXV0ZXgpOworCXJldHVybihzdWNjZXNzKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5k IHByb2Nlc3MgYWxsIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBvbiBhIHBhZ2UuCitA cmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIHByb2Nlc3NlZCAqLworVU5JVl9JTlRFUk4KK3Vs aW50CitidHJfYmxvYl9kYmdfb3AoCisvKj09PT09PT09PT09PSovCisJY29uc3QgcGFnZV90KgkJ cGFnZSwJLyohPCBpbjogQi10cmVlIGxlYWYgcGFnZSAqLworCWNvbnN0IHJlY190KgkJcmVjLAkv KiE8IGluOiByZWNvcmQgdG8gc3RhcnQgZnJvbQorCQkJCQkoTlVMTCB0byBwcm9jZXNzIHRoZSB3 aG9sZSBwYWdlKSAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXgg Ki8KKwljb25zdCBjaGFyKgkJY3R4LAkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8K Kwljb25zdCBidHJfYmxvYl9kYmdfb3BfZglvcCkJLyohPCBpbjogb3BlcmF0aW9uIG9uIHJlY29y ZHMgKi8KK3sKKwl1bGludAkJY291bnQJPSAwOworCW1lbV9oZWFwX3QqCWhlYXAJPSBOVUxMOwor CXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0laRV07CisJdWxpbnQqCQlvZmZzZXRz CT0gb2Zmc2V0c187CisJcmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CisKKwl1dF9hKGZpbF9wYWdl X2dldF90eXBlKHBhZ2UpID09IEZJTF9QQUdFX0lOREVYKTsKKwl1dF9hKCFyZWMgfHwgcGFnZV9h bGlnbihyZWMpID09IHBhZ2UpOworCisJaWYgKCFpbmRleC0+YmxvYnMgfHwgIXBhZ2VfaXNfbGVh ZihwYWdlKQorCSAgICB8fCAhZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKKwkJcmV0dXJu KDApOworCX0KKworCWlmIChyZWMgPT0gTlVMTCkgeworCQlyZWMgPSBwYWdlX2dldF9pbmZpbXVt X3JlYyhwYWdlKTsKKwl9CisKKwlkbyB7CisJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVj LCBpbmRleCwgb2Zmc2V0cywKKwkJCQkJICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKKwkJY291 bnQgKz0gb3AocmVjLCBpbmRleCwgb2Zmc2V0cywgY3R4KTsKKwkJcmVjID0gcGFnZV9yZWNfZ2V0 X25leHRfY29uc3QocmVjKTsKKwl9IHdoaWxlICghcGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSk7 CisKKwlpZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgeworCQltZW1faGVhcF9mcmVlKGhlYXAp OworCX0KKworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NvdW50IGFuZCBhZGQg dG8gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMKK2Zyb20g cmVjb3JkcyBvbiBhIHBhZ2UuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIGFkZGVkICov CitVTklWX0lOVEVSTgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGQoCisvKj09PT09PT09PT09PT0q LworCWNvbnN0IHBhZ2VfdCoJcGFnZSwJLyohPCBpbjogcmV3cml0dGVuIHBhZ2UgKi8KKwlkaWN0 X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgljdHgp CS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworeworCWJ0cl9ibG9iX2RiZ19hc3Nl cnRfZW1wdHkoaW5kZXgsIHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOworCisJcmV0dXJuKGJ0cl9i bG9iX2RiZ19vcChwYWdlLCBOVUxMLCBpbmRleCwgY3R4LCBidHJfYmxvYl9kYmdfYWRkX3JlYykp OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCitDb3VudCBhbmQgcmVtb3ZlIGZyb20gaW5kZXgtPmJsb2JzIGFu eSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMKK2Zyb20gcmVjb3JkcyBvbiBhIHBhZ2Uu CitVc2VkIHdoZW4gcmVvcmdhbml6aW5nIGEgcGFnZSwgYmVmb3JlIGNvcHlpbmcgdGhlIHJlY29y ZHMuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIHJlbW92ZWQgKi8KK1VOSVZfSU5URVJO Cit1bGludAorYnRyX2Jsb2JfZGJnX3JlbW92ZSgKKy8qPT09PT09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBiLXRyZWUgcGFnZSAqLworCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyohPCBpbjog Y29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJdWxpbnQJY291bnQ7CisKKwljb3VudCA9IGJ0 cl9ibG9iX2RiZ19vcChwYWdlLCBOVUxMLCBpbmRleCwgY3R4LAorCQkJCWJ0cl9ibG9iX2RiZ19y ZW1vdmVfcmVjKTsKKworCS8qIENoZWNrIHRoYXQgbm8gcmVmZXJlbmNlcyBleGlzdC4gKi8KKwli dHJfYmxvYl9kYmdfYXNzZXJ0X2VtcHR5KGluZGV4LCBwYWdlX2dldF9wYWdlX25vKHBhZ2UpKTsK KworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1Jlc3RvcmUgaW4gaW5kZXgtPmJs b2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMKK1VzZWQgd2hlbiBwYWdlIHJl b3JnYW5pemUgZmFpbHMgZHVlIHRvIGNvbXByZXNzZWQgcGFnZSBvdmVyZmxvdy4gKi8KK1VOSVZf SU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdfcmVzdG9yZSgKKy8qPT09PT09PT09PT09PT09PT0q LworCWNvbnN0IHBhZ2VfdCoJbnBhZ2UsCS8qITwgaW46IHBhZ2UgdGhhdCBmYWlsZWQgdG8gY29t cHJlc3MgICovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBjb3B5IG9mIG9yaWdpbmFs IHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwlj b25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworeworCXVs aW50CXJlbW92ZWQ7CisJdWxpbnQJYWRkZWQ7CisKKwl1dF9hKHBhZ2VfZ2V0X3BhZ2Vfbm8obnBh Z2UpID09IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOworCXV0X2EocGFnZV9nZXRfc3BhY2VfaWQo bnBhZ2UpID09IHBhZ2VfZ2V0X3NwYWNlX2lkKHBhZ2UpKTsKKworCXJlbW92ZWQgPSBidHJfYmxv Yl9kYmdfcmVtb3ZlKG5wYWdlLCBpbmRleCwgY3R4KTsKKwlhZGRlZCA9IGJ0cl9ibG9iX2RiZ19h ZGQocGFnZSwgaW5kZXgsIGN0eCk7CisJdXRfYShhZGRlZCA9PSByZW1vdmVkKTsKK30KKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgorTW9kaWZ5IHRoZSAnZGVsZXRlZCcgZmxhZyBvZiBhIHJlY29yZC4gKi8KK1VOSVZf SU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdfc2V0X2RlbGV0ZWRfZmxhZygKKy8qPT09PT09PT09 PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQg Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3Qg dWxpbnQqCQlvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2ZmcyhyZWMsIGluZGV4KSAqLworCWli b29sCQkJZGVsKQkvKiE8IGluOiBUUlVFPWRlbGV0ZWQsIEZBTFNFPWV4aXN0cyAqLworeworCWNv bnN0IGliX3JidF9ub2RlX3QqCW5vZGU7CisJYnRyX2Jsb2JfZGJnX3QJCWI7CisJYnRyX2Jsb2Jf ZGJnX3QqCQljOworCXVsaW50CQkJaTsKKworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywg aW5kZXgsIG9mZnNldHMpKTsKKwl1dF9hKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwl1 dF9hKGRlbCA9PSAhIWRlbCk7LyogbXVzdCBiZSBGQUxTRT09MCBvciBUUlVFPT0xICovCisKKwlp ZiAoIXJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykgfHwgIWluZGV4LT5ibG9icykgeworCisJ CXJldHVybjsKKwl9CisKKwliLnJlZl9wYWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlX2Fs aWduKHJlYykpOworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOwor CisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpOyBpKyspIHsKKwkJ aWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKKwkJCXVsaW50CQlsZW47CisJ CQljb25zdCBieXRlKglmaWVsZF9yZWYgPSByZWNfZ2V0X250aF9maWVsZCgKKwkJCQlyZWMsIG9m ZnNldHMsIGksICZsZW4pOworCisJCQl1dF9hKGxlbiAhPSBVTklWX1NRTF9OVUxMKTsKKwkJCXV0 X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCQkJZmllbGRfcmVmICs9IGxl biAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCWIucmVmX2ZpZWxkX25vID0gaTsK KwkJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlmaWVsZF9yZWYgKyBC VFJfRVhURVJOX1BBR0VfTk8pOworCisJCQlzd2l0Y2ggKGIuYmxvYl9wYWdlX25vKSB7CisJCQlj YXNlIDA6CisJCQkJdXRfYShtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZfemVybywKKwkJCQkJ ICAgIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpKTsKKwkJCQkvKiBwYWdlIG51bWJlciAwIGlz IGZvciB0aGUKKwkJCQlwYWdlIGFsbG9jYXRpb24gYml0bWFwICovCisJCQljYXNlIEZJTF9OVUxM OgorCQkJCS8qIHRoZSBjb2x1bW4gaGFzIGJlZW4gZnJlZWQgYWxyZWFkeSAqLworCQkJCXV0X2Vy cm9yOworCQkJfQorCisJCQltdXRleF9lbnRlcigmaW5kZXgtPmJsb2JzX211dGV4KTsKKwkJCW5v ZGUgPSByYnRfbG9va3VwKGluZGV4LT5ibG9icywgJmIpOworCQkJdXRfYShub2RlKTsKKworCQkJ YyA9IHJidF92YWx1ZShidHJfYmxvYl9kYmdfdCwgbm9kZSk7CisJCQkvKiBUaGUgZmxhZyBzaG91 bGQgYmUgbW9kaWZpZWQuICovCisJCQljLT5kZWwgPSBkZWw7CisJCQlpZiAoYnRyX2Jsb2JfZGJn X21zZykgeworCQkJCWIgPSAqYzsKKwkJCQltdXRleF9leGl0KCZpbmRleC0+YmxvYnNfbXV0ZXgp OworCQkJCWJ0cl9ibG9iX2RiZ19tc2dfaXNzdWUoImRlbF9tayIsICZiLCAiIik7CisJCQl9IGVs c2UgeworCQkJCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRleCk7CisJCQl9CisJCX0KKwl9 Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK0NoYW5nZSB0aGUgb3duZXJzaGlwIG9mIGFuIG9mZi1wYWdlIGNv bHVtbi4gKi8KK1VOSVZfSU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdfb3duZXIoCisvKj09PT09 PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRp Y3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJ CW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJdWxpbnQJCQlp LAkvKiE8IGluOiBpdGggZmllbGQgaW4gcmVjICovCisJaWJvb2wJCQlvd24pCS8qITwgaW46IFRS VUU9b3duZWQsIEZBTFNFPWRpc293bmVkICovCit7CisJY29uc3QgaWJfcmJ0X25vZGVfdCoJbm9k ZTsKKwlidHJfYmxvYl9kYmdfdAkJYjsKKwljb25zdCBieXRlKgkJZmllbGRfcmVmOworCXVsaW50 CQkJbGVuOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykp OworCXV0X2EocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSk7CisKKwlmaWVsZF9yZWYg PSByZWNfZ2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIGksICZsZW4pOworCXV0X2EobGVuICE9 IFVOSVZfU1FMX05VTEwpOworCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUp OworCWZpZWxkX3JlZiArPSBsZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOworCisJYi5y ZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwliLnJlZl9o ZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKwliLnJlZl9maWVsZF9ubyA9IGk7 CisJYi5vd25lciA9ICEoZmllbGRfcmVmW0JUUl9FWFRFUk5fTEVOXSAmIEJUUl9FWFRFUk5fT1dO RVJfRkxBRyk7CisJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KGZpZWxkX3JlZiAr IEJUUl9FWFRFUk5fUEFHRV9OTyk7CisKKwl1dF9hKGIub3duZXIgPT0gb3duKTsKKworCW11dGV4 X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCW5vZGUgPSByYnRfbG9va3VwKGluZGV4LT5i bG9icywgJmIpOworCS8qIHJvd19pbnNfY2x1c3RfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KCkgaW52 b2tlcworCWJ0cl9jdXJfdW5tYXJrX2V4dGVybl9maWVsZHMoKSBhbHNvIGZvciB0aGUgbmV3bHkg aW5zZXJ0ZWQKKwlyZWZlcmVuY2VzLCB3aGljaCBhcmUgYWxsIHplcm8gYnl0ZXMgdW50aWwgdGhl IGNvbHVtbnMgYXJlIHN0b3JlZC4KKwlUaGUgbm9kZSBsb29rdXAgbXVzdCBmYWlsIGlmIGFuZCBv bmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICovCisJdXRfYSghbWVtY21wKGZpZWxkX3JlZiwgZmll bGRfcmVmX3plcm8sIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpCisJICAgICA9PSAhbm9kZSk7 CisKKwlpZiAobm9kZSkgeworCQlidHJfYmxvYl9kYmdfdCoJYyA9IHJidF92YWx1ZShidHJfYmxv Yl9kYmdfdCwgbm9kZSk7CisJCS8qIFNvbWUgY29kZSBzZXRzIG93bmVyc2hpcCBmcm9tIFRSVUUg dG8gVFJVRS4KKwkJV2UgZG8gbm90IGFsbG93IGNoYW5naW5nIG93bmVyc2hpcCBmcm9tIEZBTFNF IHRvIEZBTFNFLiAqLworCQl1dF9hKG93biB8fCBjLT5vd25lcik7CisKKwkJYy0+b3duZXIgPSBv d247CisJCWlmICghb3duKSB7CisJCQljLT5hbHdheXNfb3duZXIgPSBGQUxTRTsKKwkJfQorCX0K KworCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRleCk7Cit9CisjZW5kaWYgLyogVU5JVl9C TE9CX0RFQlVHICovCisKIC8qCiBMYXRjaGluZyBzdHJhdGVneSBvZiB0aGUgSW5ub0RCIEItdHJl ZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5Nyw2ICs4NTEs NyBAQCBidHJfcGFnZV9jcmVhdGUoCiAJcGFnZV90KgkJcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spOwogCiAJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBibG9jaywgTVRSX01F TU9fUEFHRV9YX0ZJWCkpOworCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIGJ1Zl9i bG9ja19nZXRfcGFnZV9ubyhibG9jaykpOwogCiAJaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96 aXApKSB7CiAJCXBhZ2VfY3JlYXRlX3ppcChibG9jaywgaW5kZXgsIGxldmVsLCBtdHIpOwpAQCAt NDkwLDYgKzEwNDUsNyBAQCBidHJfcGFnZV9mcmVlX2xvdygKIAltb2RpZnkgY2xvY2sgKi8KIAog CWJ1Zl9ibG9ja19tb2RpZnlfY2xvY2tfaW5jKGJsb2NrKTsKKwlidHJfYmxvYl9kYmdfYXNzZXJ0 X2VtcHR5KGluZGV4LCBidWZfYmxvY2tfZ2V0X3BhZ2Vfbm8oYmxvY2spKTsKIAogCWlmIChkaWN0 X2luZGV4X2lzX2lidWYoaW5kZXgpKSB7CiAKQEAgLTc3NSw2ICsxMzMxLDE0IEBAIGJ0cl9jcmVh dGUoCiAJCWJsb2NrID0gYnVmX3BhZ2VfZ2V0KHNwYWNlLCB6aXBfc2l6ZSwgcGFnZV9ubywKIAkJ CQkgICAgIFJXX1hfTEFUQ0gsIG10cik7CiAJfSBlbHNlIHsKKyNpZmRlZiBVTklWX0JMT0JfREVC VUcKKwkJaWYgKCh0eXBlICYgRElDVF9DTFVTVEVSRUQpICYmICFpbmRleC0+YmxvYnMpIHsKKwkJ CW11dGV4X2NyZWF0ZShQRlNfTk9UX0lOU1RSVU1FTlRFRCwKKwkJCQkgICAgICZpbmRleC0+Ymxv YnNfbXV0ZXgsIFNZTkNfQU5ZX0xBVENIKTsKKwkJCWluZGV4LT5ibG9icyA9IHJidF9jcmVhdGUo c2l6ZW9mKGJ0cl9ibG9iX2RiZ190KSwKKwkJCQkJCSAgYnRyX2Jsb2JfZGJnX2NtcCk7CisJCX0K KyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAkJYmxvY2sgPSBmc2VnX2NyZWF0ZShzcGFj ZSwgMCwKIAkJCQkgICAgUEFHRV9IRUFERVIgKyBQQUdFX0JUUl9TRUdfVE9QLCBtdHIpOwogCX0K QEAgLTk5OSw2ICsxNTYzLDcgQEAgYnRyX3BhZ2VfcmVvcmdhbml6ZV9sb3coCiAKIAlibG9jay0+ Y2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCA9IFRSVUU7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFD S1VQICovCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9wYWdlX3Jlb3Jn YW5pemUiKTsKIAogCS8qIFJlY3JlYXRlIHRoZSBwYWdlOiBub3RlIHRoYXQgZ2xvYmFsIGRhdGEg b24gcGFnZSAocG9zc2libGUKIAlzZWdtZW50IGhlYWRlcnMsIG5leHQgcGFnZS1maWVsZCwgZXRj LikgaXMgcHJlc2VydmVkIGludGFjdCAqLwpAQCAtMTAyNyw2ICsxNTkyLDggQEAgYnRyX3BhZ2Vf cmVvcmdhbml6ZV9sb3coCiAJICAgICghcGFnZV96aXBfY29tcHJlc3MocGFnZV96aXAsIHBhZ2Us IGluZGV4LCBOVUxMKSkpIHsKIAogCQkvKiBSZXN0b3JlIHRoZSBvbGQgcGFnZSBhbmQgZXhpdC4g Ki8KKwkJYnRyX2Jsb2JfZGJnX3Jlc3RvcmUocGFnZSwgdGVtcF9wYWdlLCBpbmRleCwKKwkJCQkg ICAgICJidHJfcGFnZV9yZW9yZ2FuaXplX2NvbXByZXNzX2ZhaWwiKTsKIAogI2lmIGRlZmluZWQg VU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfWklQX0RFQlVHCiAJCS8qIENoZWNrIHRoYXQgdGhl IGJ5dGVzIHRoYXQgd2Ugc2tpcCBhcmUgaWRlbnRpY2FsLiAqLwpAQCAtMTE2MCw2ICsxNzI3LDcg QEAgYnRyX3BhZ2VfZW1wdHkoCiAjZW5kaWYgLyogVU5JVl9aSVBfREVCVUcgKi8KIAogCWJ0cl9z ZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoYmxvY2spOworCWJ0cl9ibG9iX2RiZ19yZW1vdmUo cGFnZSwgaW5kZXgsICJidHJfcGFnZV9lbXB0eSIpOwogCiAJLyogUmVjcmVhdGUgdGhlIHBhZ2U6 IG5vdGUgdGhhdCBnbG9iYWwgZGF0YSBvbiBwYWdlIChwb3NzaWJsZQogCXNlZ21lbnQgaGVhZGVy cywgbmV4dCBwYWdlLWZpZWxkLCBldGMuKSBpcyBwcmVzZXJ2ZWQgaW50YWN0ICovCkBAIC0yNTAx LDYgKzMwNjksNyBAQCBidHJfbGlmdF9wYWdlX3VwKAogCQkJCQkJICAgICAgIGluZGV4KTsKIAl9 CiAKKwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4LCAiYnRyX2xpZnRfcGFnZV91cCIp OwogCWxvY2tfdXBkYXRlX2NvcHlfYW5kX2Rpc2NhcmQoZmF0aGVyX2Jsb2NrLCBibG9jayk7CiAK IAkvKiBHbyB1cHdhcmQgdG8gcm9vdCBwYWdlLCBkZWNyZW1lbnRpbmcgbGV2ZWxzIGJ5IG9uZS4g Ki8KQEAgLTI3NjIsNiArMzMzMSw3IEBAIGVycl9leGl0OgogCQlsb2NrX3VwZGF0ZV9tZXJnZV9y aWdodChtZXJnZV9ibG9jaywgb3JpZ19zdWNjLCBibG9jayk7CiAJfQogCisJYnRyX2Jsb2JfZGJn X3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9jb21wcmVzcyIpOwogCW1lbV9oZWFwX2ZyZWUoaGVh cCk7CiAKIAlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpICYmIHBhZ2VfaXNfbGVhZiht ZXJnZV9wYWdlKSkgewpAQCAtMjk5Miw2ICszNTYyLDggQEAgYnRyX2Rpc2NhcmRfcGFnZSgKIAkJ CQkgICAgYmxvY2spOwogCX0KIAorCWJ0cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJi dHJfZGlzY2FyZF9wYWdlIik7CisKIAkvKiBGcmVlIHRoZSBmaWxlIHBhZ2UgKi8KIAlidHJfcGFn ZV9mcmVlKGluZGV4LCBibG9jaywgbXRyKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvYnRyL2J0cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1 ci5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dl NXZyYjR0YQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDgxMjE2MTQtams1M2o3MDUyZWI3dDlyZgpAQCAtMjY5 MCw2ICsyNjkwLDcgQEAgYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogCiAJcGFnZV96 aXAgPSBidWZfYmxvY2tfZ2V0X3BhZ2VfemlwKGJsb2NrKTsKIAorCWJ0cl9ibG9iX2RiZ19zZXRf ZGVsZXRlZF9mbGFnKHJlYywgaW5kZXgsIG9mZnNldHMsIHZhbCk7CiAJYnRyX3JlY19zZXRfZGVs ZXRlZF9mbGFnKHJlYywgcGFnZV96aXAsIHZhbCk7CiAKIAl0cnggPSB0aHJfZ2V0X3RyeCh0aHIp OwpAQCAtMzg3Niw2ICszODc3LDggQEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9m aWVsZCgKIAl9IGVsc2UgewogCQltYWNoX3dyaXRlX3RvXzEoZGF0YSArIGxvY2FsX2xlbiArIEJU Ul9FWFRFUk5fTEVOLCBieXRlX3ZhbCk7CiAJfQorCisJYnRyX2Jsb2JfZGJnX293bmVyKHJlYywg aW5kZXgsIG9mZnNldHMsIGksIHZhbCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNDM3NCw2 ICs0Mzc3LDExIEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCQl9 CiAKIAkJCQlpZiAocHJldl9wYWdlX25vID09IEZJTF9OVUxMKSB7CisJCQkJCWJ0cl9ibG9iX2Ri Z19hZGRfYmxvYigKKwkJCQkJCXJlYywgYmlnX3JlY192ZWMtPmZpZWxkc1tpXQorCQkJCQkJLmZp ZWxkX25vLCBwYWdlX25vLCBpbmRleCwKKwkJCQkJCSJzdG9yZSIpOworCiAJCQkJCW1hY2hfd3Jp dGVfdG9fNChmaWVsZF9yZWYKIAkJCQkJCQkrIEJUUl9FWFRFUk5fU1BBQ0VfSUQsCiAJCQkJCQkJ c3BhY2VfaWQpOwpAQCAtNDQ0OSw2ICs0NDU3LDExIEBAIG5leHRfemlwX3BhZ2U6CiAJCQkJCQkg TUxPR180QllURVMsICZtdHIpOwogCiAJCQkJaWYgKHByZXZfcGFnZV9ubyA9PSBGSUxfTlVMTCkg eworCQkJCQlidHJfYmxvYl9kYmdfYWRkX2Jsb2IoCisJCQkJCQlyZWMsIGJpZ19yZWNfdmVjLT5m aWVsZHNbaV0KKwkJCQkJCS5maWVsZF9ubywgcGFnZV9ubywgaW5kZXgsCisJCQkJCQkic3RvcmUi KTsKKwogCQkJCQltbG9nX3dyaXRlX3VsaW50KGZpZWxkX3JlZgogCQkJCQkJCSArIEJUUl9FWFRF Uk5fU1BBQ0VfSUQsCiAJCQkJCQkJIHNwYWNlX2lkLApAQCAtNDYxNyw2ICs0NjMwLDM3IEBAIGJ0 cl9mcmVlX2V4dGVybmFsbHlfc3RvcmVkX2ZpZWxkKAogCQlyZWNfemlwX3NpemUgPSAwOwogCX0K IAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCWlmICghKGZpZWxkX3JlZltCVFJfRVhURVJOX0xF Tl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpCisJICAgICYmICEoKGZpZWxkX3JlZltCVFJfRVhU RVJOX0xFTl0gJiBCVFJfRVhURVJOX0lOSEVSSVRFRF9GTEFHKQorCQkgJiYgKHJiX2N0eCA9PSBS Ql9OT1JNQUwgfHwgcmJfY3R4ID09IFJCX1JFQ09WRVJZKSkpIHsKKwkJLyogVGhpcyBvZmYtcGFn ZSBjb2x1bW4gd2lsbCBiZSBmcmVlZC4KKwkJQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIHJlbWFp bi4gKi8KKworCQlidHJfYmxvYl9kYmdfdAliOworCisJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9y ZWFkX2Zyb21fNCgKKwkJCWZpZWxkX3JlZiArIEJUUl9FWFRFUk5fUEFHRV9OTyk7CisKKwkJaWYg KHJlYykgeworCQkJLyogUmVtb3ZlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgcmVjb3JkIHRvIHRo ZQorCQkJQkxPQi4gSWYgdGhlIEJMT0Igd2VyZSBub3QgZnJlZWQsIHRoZQorCQkJcmVmZXJlbmNl IHdvdWxkIGJlIHJlbW92ZWQgd2hlbiB0aGUgcmVjb3JkIGlzCisJCQlyZW1vdmVkLiBGcmVlaW5n IHRoZSBCTE9CIHdpbGwgb3ZlcndyaXRlIHRoZQorCQkJQlRSX0VYVEVSTl9QQUdFX05PIGluIHRo ZSBmaWVsZF9yZWYgb2YgdGhlCisJCQlyZWNvcmQgd2l0aCBGSUxfTlVMTCwgd2hpY2ggd291bGQg bWFrZSB0aGUKKwkJCWJ0cl9ibG9iX2RiZyBpbmZvcm1hdGlvbiBpbmNvbnNpc3RlbnQgd2l0aCB0 aGUKKwkJCXJlY29yZC4gKi8KKwkJCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBh Z2VfYWxpZ24ocmVjKSk7CisJCQliLnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8o cmVjKTsKKwkJCWIucmVmX2ZpZWxkX25vID0gaTsKKwkJCWJ0cl9ibG9iX2RiZ19yYnRfZGVsZXRl KGluZGV4LCAmYiwgImZyZWUiKTsKKwkJfQorCisJCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHko aW5kZXgsIGIuYmxvYl9wYWdlX25vKTsKKwl9CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICov CisKIAlmb3IgKDs7KSB7CiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJCWJ1Zl9ibG9ja190Kgly ZWNfYmxvY2s7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3Qw bWVtLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9z dG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBtZW0uYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJmCkBAIC0zOCw2ICszOCw5IEBAIENy ZWF0ZWQgMS84LzE5OTYgSGVpa2tpIFR1dXJpCiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAjIGlu Y2x1ZGUgImxvY2swbG9jay5oIgogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLworI2lmZGVm IFVOSVZfQkxPQl9ERUJVRworIyBpbmNsdWRlICJ1dDByYnQuaCIKKyNlbmRpZiAvKiBVTklWX0JM T0JfREVCVUcgKi8KIAogI2RlZmluZQlESUNUX0hFQVBfU0laRQkJMTAwCS8qITwgaW5pdGlhbCBt ZW1vcnkgaGVhcCBzaXplIHdoZW4KIAkJCQkJY3JlYXRpbmcgYSB0YWJsZSBvciBpbmRleCBvYmpl Y3QgKi8KQEAgLTM4MCw2ICszODMsMTIgQEAgZGljdF9tZW1faW5kZXhfZnJlZSgKIHsKIAl1dF9h ZChpbmRleCk7CiAJdXRfYWQoaW5kZXgtPm1hZ2ljX24gPT0gRElDVF9JTkRFWF9NQUdJQ19OKTsK KyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKwlpZiAoaW5kZXgtPmJsb2JzKSB7CisJCW11dGV4X2Zy ZWUoJmluZGV4LT5ibG9ic19tdXRleCk7CisJCXJidF9mcmVlKGluZGV4LT5ibG9icyk7CisJfQor I2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJVRyAqLwogCiAJbWVtX2hlYXBfZnJlZShpbmRleC0+aGVh cCk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBi dHIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDp2YXNp bC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjA4MDU1NjQ4LWFtaTlkNW93ZTV2cmI0dGEKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJmCkBAIC05Miw2ICs5Miw5MSBA QCBpbnNlcnQvZGVsZXRlIGJ1ZmZlciB3aGVuIHRoZSByZWNvcmQgaXMKIGJ1ZmZlciB3aGVuIHRo ZSByZWNvcmQgaXMgbm90IGluIHRoZSBidWZmZXIgcG9vbC4gKi8KICNkZWZpbmUgQlRSX0RFTEVU RQkJODE5MgogCisjaWZkZWYgVU5JVl9CTE9CX0RFQlVHCisjIGluY2x1ZGUgInV0MHJidC5oIgor LyoqIEFuIGluZGV4LT5ibG9icyBlbnRyeSBmb3Iga2VlcGluZyB0cmFjayBvZiBvZmYtcGFnZSBj b2x1bW4gcmVmZXJlbmNlcyAqLworc3RydWN0IGJ0cl9ibG9iX2RiZ19zdHJ1Y3QKK3sKKwl1bnNp Z25lZAlibG9iX3BhZ2Vfbm86MzI7CS8qITwgZmlyc3QgQkxPQiBwYWdlIG51bWJlciAqLworCXVu c2lnbmVkCXJlZl9wYWdlX25vOjMyOwkJLyohPCByZWZlcnJpbmcgcGFnZSBudW1iZXIgKi8KKwl1 bnNpZ25lZAlyZWZfaGVhcF9ubzoxNjsJCS8qITwgcmVmZXJyaW5nIGhlYXAgbnVtYmVyICovCisJ dW5zaWduZWQJcmVmX2ZpZWxkX25vOjEwOwkvKiE8IHJlZmVycmluZyBmaWVsZCBudW1iZXIgKi8K Kwl1bnNpZ25lZAlvd25lcjoxOwkJLyohPCBUUlVFIGlmIEJMT0Igb3duZXIgKi8KKwl1bnNpZ25l ZAlhbHdheXNfb3duZXI6MTsJCS8qITwgVFJVRSBpZiBhbHdheXMKKwkJCQkJCWhhcyBiZWVuIHRo ZSBCTE9CIG93bmVyOworCQkJCQkJcmVzZXQgdG8gVFJVRSBvbiBCLXRyZWUKKwkJCQkJCXBhZ2Ug c3BsaXRzIGFuZCBtZXJnZXMgKi8KKwl1bnNpZ25lZAlkZWw6MTsJCQkvKiE8IFRSVUUgaWYgY3Vy cmVudGx5CisJCQkJCQlkZWxldGUtbWFya2VkICovCit9OworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitBZGQgYSBy ZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uIHRvIHRoZSBpbmRleC0+YmxvYnMgbWFwLiAq LworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19hZGRfYmxvYigKKy8qPT09PT09PT09 PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJcmVjLAkJLyohPCBpbjogY2x1c3RlcmVkIGluZGV4 IHJlY29yZCAqLworCXVsaW50CQlmaWVsZF9ubywJLyohPCBpbjogbnVtYmVyIG9mIG9mZi1wYWdl IGNvbHVtbiAqLworCXVsaW50CQlwYWdlX25vLAkvKiE8IGluOiBzdGFydCBwYWdlIG9mIHRoZSBj b2x1bW4gKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUg Ki8KKwljb25zdCBjaGFyKgljdHgpCQkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8K KwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitEaXNwbGF5IHRoZSByZWZl cmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMuCitUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGNhbGxl ZCBmcm9tIGEgZGVidWdnZXIsCitmb3IgZXhhbXBsZSB3aGVuIGEgYnJlYWtwb2ludCBvbiB1dF9k YmdfYXNzZXJ0aW9uX2ZhaWxlZCBpcyBoaXQuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Js b2JfZGJnX3ByaW50KAorLyo9PT09PT09PT09PT09PT0qLworCWNvbnN0IGRpY3RfaW5kZXhfdCoJ aW5kZXgpCS8qITwgaW46IGluZGV4IHRyZWUgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCitDaGVjayB0aGF0IHRoZXJlIGFyZSBubyByZWZlcmVuY2VzIHRvIG9mZi1w YWdlIGNvbHVtbnMgZnJvbSBvciB0bwordGhlIGdpdmVuIHBhZ2UuIEludm9rZWQgd2hlbiBmcmVl aW5nIG9yIGNsZWFyaW5nIGEgcGFnZS4KK0ByZXR1cm4gVFJVRSB3aGVuIG5vIG9ycGhhbiByZWZl cmVuY2VzIGV4aXN0ICovCitVTklWX0lOVEVSTgoraWJvb2wKK2J0cl9ibG9iX2RiZ19pc19lbXB0 eSgKKy8qPT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyohPCBp bjogaW5kZXggKi8KKwl1bGludAkJcGFnZV9ubykJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KKwlf X2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgorTW9kaWZ5IHRoZSAnZGVsZXRlZCcgZmxhZyBvZiBhIHJlY29yZC4gKi8KK1VOSVZfSU5URVJO Cit2b2lkCitidHJfYmxvYl9kYmdfc2V0X2RlbGV0ZWRfZmxhZygKKy8qPT09PT09PT09PT09PT09 PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwlk aWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgdWxpbnQq CQlvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2ZmcyhyZWMsIGluZGV4KSAqLworCWlib29sCQkJ ZGVsKQkvKiE8IGluOiBUUlVFPWRlbGV0ZWQsIEZBTFNFPWV4aXN0cyAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NoYW5nZSB0aGUgb3duZXJzaGlwIG9mIGFuIG9m Zi1wYWdlIGNvbHVtbi4gKi8KK1VOSVZfSU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdfb3duZXIo CisvKj09PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29y ZCAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25z dCB1bGludCoJCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJ dWxpbnQJCQlpLAkvKiE8IGluOiBpdGggZmllbGQgaW4gcmVjICovCisJaWJvb2wJCQlvd24pCS8q ITwgaW46IFRSVUU9b3duZWQsIEZBTFNFPWRpc293bmVkICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOworLyoqIEFzc2VydCB0aGF0IHRoZXJlIGFyZSBubyBCTE9CIHJlZmVyZW5jZXMgdG8g b3IgZnJvbSB0aGUgZ2l2ZW4gcGFnZS4gKi8KKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hc3NlcnRf ZW1wdHkoaW5kZXgsIHBhZ2Vfbm8pCVwKKwl1dF9hKGJ0cl9ibG9iX2RiZ19pc19lbXB0eShpbmRl eCwgcGFnZV9ubykpCisjZWxzZSAvKiBVTklWX0JMT0JfREVCVUcgKi8KKyMgZGVmaW5lIGJ0cl9i bG9iX2RiZ19hZGRfYmxvYihyZWMsIGZpZWxkX25vLCBwYWdlLCBpbmRleCwgY3R4KQkoKHZvaWQp IDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfc2V0X2RlbGV0ZWRfZmxhZyhyZWMsIGluZGV4LCBv ZmZzZXRzLCBkZWwpKCh2b2lkKSAwKQorIyBkZWZpbmUgYnRyX2Jsb2JfZGJnX293bmVyKHJlYywg aW5kZXgsIG9mZnNldHMsIGksIHZhbCkJKCh2b2lkKSAwKQorIyBkZWZpbmUgYnRyX2Jsb2JfZGJn X2Fzc2VydF9lbXB0eShpbmRleCwgcGFnZV9ubykJCSgodm9pZCkgMCkKKyNlbmRpZiAvKiBVTklW X0JMT0JfREVCVUcgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUgcm9vdCBub2RlIG9mIGEgdHJl ZSBhbmQgeC1sYXRjaGVzIGl0LgogQHJldHVybglyb290IHBhZ2UsIHgtbGF0Y2hlZCAqLwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwdHlwZXMuaCcKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjB0eXBlcy5oCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnRyMHR5cGVzLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTAyMDgxMjE2MTQtams1M2o3MDUyZWI3dDlyZgpAQCAtMzgsNiArMzgsMTMxIEBAIHR5 cGVkZWYgc3RydWN0IGJ0cl9jdXJfc3RydWN0CQlidHJfY3VyX3QKIC8qKiBCLXRyZWUgc2VhcmNo IGluZm9ybWF0aW9uIGZvciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleCAqLwogdHlwZWRlZiBzdHJ1 Y3QgYnRyX3NlYXJjaF9zdHJ1Y3QJYnRyX3NlYXJjaF90OwogCisjaWZkZWYgVU5JVl9CTE9CX0RF QlVHCisjIGluY2x1ZGUgImJ1ZjB0eXBlcy5oIgorLyoqIEFuIGluZGV4LT5ibG9icyBlbnRyeSBm b3Iga2VlcGluZyB0cmFjayBvZiBvZmYtcGFnZSBjb2x1bW4gcmVmZXJlbmNlcyAqLwordHlwZWRl ZiBzdHJ1Y3QgYnRyX2Jsb2JfZGJnX3N0cnVjdCBidHJfYmxvYl9kYmdfdDsKKworLyoqIEluc2Vy dCB0byBpbmRleC0+YmxvYnMgYSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uLgorQHBh cmFtIGluZGV4CXRoZSBpbmRleCB0cmVlCitAcGFyYW0gYgl0aGUgcmVmZXJlbmNlCitAcGFyYW0g Y3R4CWNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9i X2RiZ19yYnRfaW5zZXJ0KAorLyo9PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90 KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCB0cmVlICovCisJY29uc3QgYnRyX2Jsb2JfZGJn X3QqCWIsCS8qITwgaW46IHRoZSByZWZlcmVuY2UgKi8KKwljb25zdCBjaGFyKgkJY3R4KQkvKiE8 IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisKKy8qKiBSZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMgYSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBh Z2UgY29sdW1uLgorQHBhcmFtIGluZGV4CXRoZSBpbmRleCB0cmVlCitAcGFyYW0gYgl0aGUgcmVm ZXJlbmNlCitAcGFyYW0gY3R4CWNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworVU5JVl9JTlRFUk4K K3ZvaWQKK2J0cl9ibG9iX2RiZ19yYnRfZGVsZXRlKAorLyo9PT09PT09PT09PT09PT09PT09PSov CisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCB0cmVlICovCisJY29u c3QgYnRyX2Jsb2JfZGJnX3QqCWIsCS8qITwgaW46IHRoZSByZWZlcmVuY2UgKi8KKwljb25zdCBj aGFyKgkJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0 ZV9fKChub25udWxsKSk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0FkZCB0byBpbmRleC0+YmxvYnMgYW55IHJl ZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBmcm9tIGEgcmVjb3JkLgorQHJldHVybiBudW1i ZXIgb2YgcmVmZXJlbmNlcyBhZGRlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9k YmdfYWRkX3JlYygKKy8qPT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCS8q ITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRl eCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IG9mZnNldHMgKi8KKwljb25zdCBj aGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JlbW92ZSBmcm9tIGluZGV4LT5ibG9icyBhbnkg cmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gYSByZWNvcmQuCitAcmV0dXJuIG51 bWJlciBvZiByZWZlcmVuY2VzIHJlbW92ZWQgKi8KK1VOSVZfSU5URVJOCit1bGludAorYnRyX2Js b2JfZGJnX3JlbW92ZV9yZWMoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCByZWNf dCoJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGlu L291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiBvZmZzZXRzICov CisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwlf X2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb3VudCBhbmQgYWRkIHRvIGlu ZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zCitmcm9tIHJlY29y ZHMgb24gYSBwYWdlLgorQHJldHVybiBudW1iZXIgb2YgcmVmZXJlbmNlcyBhZGRlZCAqLworVU5J Vl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfYWRkKAorLyo9PT09PT09PT09PT09Ki8KKwlj b25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IHJld3JpdHRlbiBwYWdlICovCisJZGljdF9pbmRl eF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8 IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCitDb3VudCBhbmQgcmVtb3ZlIGZyb20gaW5kZXgtPmJsb2JzIGFueSByZWZl cmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMKK2Zyb20gcmVjb3JkcyBvbiBhIHBhZ2UuCitVc2Vk IHdoZW4gcmVvcmdhbml6aW5nIGEgcGFnZSwgYmVmb3JlIGNvcHlpbmcgdGhlIHJlY29yZHMuCitA cmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIHJlbW92ZWQgKi8KK1VOSVZfSU5URVJOCit1bGlu dAorYnRyX2Jsb2JfZGJnX3JlbW92ZSgKKy8qPT09PT09PT09PT09PT09PSovCisJY29uc3QgcGFn ZV90KglwYWdlLAkvKiE8IGluOiBiLXRyZWUgcGFnZSAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgs CS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyohPCBpbjogY29udGV4 dCAoZm9yIGxvZ2dpbmcpICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgorUmVzdG9yZSBpbiBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29s dW1ucworVXNlZCB3aGVuIHBhZ2UgcmVvcmdhbml6ZSBmYWlscyBkdWUgdG8gY29tcHJlc3NlZCBw YWdlIG92ZXJmbG93LiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yZXN0b3Jl KAorLyo9PT09PT09PT09PT09PT09PSovCisJY29uc3QgcGFnZV90KglucGFnZSwJLyohPCBpbjog cGFnZSB0aGF0IGZhaWxlZCB0byBjb21wcmVzcyAqLworCWNvbnN0IHBhZ2VfdCoJcGFnZSwJLyoh PCBpbjogY29weSBvZiBvcmlnaW5hbCBwYWdlICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyoh PCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChm b3IgbG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisKKy8qKiBPcGVyYXRp b24gdGhhdCBwcm9jZXNzZXMgdGhlIEJMT0IgcmVmZXJlbmNlcyBvZiBhbiBpbmRleCByZWNvcmQK K0BwYXJhbVtpbl0JcmVjCXJlY29yZCBvbiBpbmRleCBwYWdlCitAcGFyYW1baW4vb3V0XQlpbmRl eAl0aGUgaW5kZXggdHJlZSBvZiB0aGUgcmVjb3JkCitAcGFyYW1baW5dCW9mZnNldHMJcmVjX2dl dF9vZmZzZXRzKHJlYyxpbmRleCkKK0BwYXJhbVtpbl0JY3R4CWNvbnRleHQgKGZvciBsb2dnaW5n KQorQHJldHVybgkJCW51bWJlciBvZiBCTE9CIHJlZmVyZW5jZXMgcHJvY2Vzc2VkICovCit0eXBl ZGVmIHVsaW50ICgqYnRyX2Jsb2JfZGJnX29wX2YpCisoY29uc3QgcmVjX3QqIHJlYyxkaWN0X2lu ZGV4X3QqIGluZGV4LGNvbnN0IHVsaW50KiBvZmZzZXRzLGNvbnN0IGNoYXIqIGN0eCk7CisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKK0NvdW50IGFuZCBwcm9jZXNzIGFsbCByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNv bHVtbnMgb24gYSBwYWdlLgorQHJldHVybiBudW1iZXIgb2YgcmVmZXJlbmNlcyBwcm9jZXNzZWQg Ki8KK1VOSVZfSU5URVJOCit1bGludAorYnRyX2Jsb2JfZGJnX29wKAorLyo9PT09PT09PT09PT0q LworCWNvbnN0IHBhZ2VfdCoJCXBhZ2UsCS8qITwgaW46IEItdHJlZSBsZWFmIHBhZ2UgKi8KKwlj b25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkIHRvIHN0YXJ0IGZyb20KKwkJCQkJKE5V TEwgdG8gcHJvY2VzcyB0aGUgd2hvbGUgcGFnZSkgKi8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJ LyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJCWN0eCwJLyohPCBpbjogY29udGV4 dCAoZm9yIGxvZ2dpbmcpICovCisJY29uc3QgYnRyX2Jsb2JfZGJnX29wX2YJb3ApCS8qITwgaW46 IG9wZXJhdGlvbiBvbiByZWNvcmRzICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgxLDMsNCw1 KSkpOworI2Vsc2UgLyogVU5JVl9CTE9CX0RFQlVHICovCisjIGRlZmluZSBidHJfYmxvYl9kYmdf YWRkX3JlYyhyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpCQkoKHZvaWQpIDApCisjIGRlZmluZSBi dHJfYmxvYl9kYmdfYWRkKHBhZ2UsIGluZGV4LCBjdHgpCQkJKCh2b2lkKSAwKQorIyBkZWZpbmUg YnRyX2Jsb2JfZGJnX3JlbW92ZV9yZWMocmVjLCBpbmRleCwgb2Zmc2V0cywgY3R4KQkoKHZvaWQp IDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4LCBjdHgpCQkJKCh2 b2lkKSAwKQorIyBkZWZpbmUgYnRyX2Jsb2JfZGJnX3Jlc3RvcmUobnBhZ2UsIHBhZ2UsIGluZGV4 LCBjdHgpCQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfb3AocGFnZSwgcmVjLCBp bmRleCwgY3R4LCBvcCkJCSgodm9pZCkgMCkKKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8K KwogLyoqIFRoZSBzaXplIG9mIGEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIG9uIGEgZGlmZmVy ZW50IHBhZ2UuCiBUaGUgcmVmZXJlbmNlIGlzIHN0b3JlZCBhdCB0aGUgZW5kIG9mIHRoZSBwcmVm aXggb2YgdGhlIGZpZWxkCiBpbiB0aGUgaW5kZXggcmVjb3JkLiAqLwoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1lbS5oJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvZGljdDBtZW0uaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIw MTEwMjA4MDU1NjQ4LWFtaTlkNW93ZTV2cmI0dGEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2RpY3QwbWVtLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDgxMjE2 MTQtams1M2o3MDUyZWI3dDlyZgpAQCAtNDAwLDYgKzQwMCwxMyBAQCBzdHJ1Y3QgZGljdF9pbmRl eF9zdHJ1Y3R7CiAJCQkJaW5kZXgsIG9yIDAgaWYgdGhlIGluZGV4IGV4aXN0ZWQKIAkJCQl3aGVu IElubm9EQiB3YXMgc3RhcnRlZCB1cCAqLwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwor I2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCW11dGV4X3QJCWJsb2JzX211dGV4OworCQkJCS8qITwg bXV0ZXggcHJvdGVjdGluZyBibG9icyAqLworCXZvaWQqCQlibG9iczsJLyohPCBtYXAgb2YgKHBh Z2Vfbm8saGVhcF9ubyxmaWVsZF9ubykKKwkJCQl0byBmaXJzdF9ibG9iX3BhZ2Vfbm87IHByb3Rl Y3RlZCBieQorCQkJCWJsb2JzX211dGV4OyBAc2VlIGJ0cl9ibG9iX2RiZ190ICovCisjZW5kaWYg LyogVU5JVl9CTE9CX0RFQlVHICovCiAjaWZkZWYgVU5JVl9ERUJVRwogCXVsaW50CQltYWdpY19u Oy8qITwgbWFnaWMgbnVtYmVyICovCiAvKiogVmFsdWUgb2YgZGljdF9pbmRleF9zdHJ1Y3Q6Om1h Z2ljX24gKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFn ZTB6aXAuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRhCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHppcC5oCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwMjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTQyMCw3ICs0 MjAsNyBAQCBwYWdlX3ppcF9jb3B5X3JlY3MoCiAJY29uc3QgcGFnZV90KgkJc3JjLAkJLyohPCBp bjogcGFnZSAqLwogCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkJLyohPCBpbjogaW5kZXggb2YgdGhl IEItdHJlZSAqLwogCW10cl90KgkJCW10cikJCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8K LQlfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsMiwzLDQpKSk7CisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvdW5pdi5pCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw MjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTE5Niw2ICsxOTYsOCBAQCB0aGlzIHdpbGwg YnJlYWsgcmVkbyBsb2cgZmlsZSBjb21wYXRpYmlsCiBkZWJ1Z2dpbmcgcmVkbyBsb2cgYXBwbGlj YXRpb24gcHJvYmxlbXMuICovCiAjZGVmaW5lIFVOSVZfTUVNX0RFQlVHCQkJCS8qIGRldGVjdCBt ZW1vcnkgbGVha3MgZXRjICovCiAjZGVmaW5lIFVOSVZfSUJVRl9ERUJVRwkJCQkvKiBkZWJ1ZyB0 aGUgaW5zZXJ0IGJ1ZmZlciAqLworI2RlZmluZSBVTklWX0JMT0JfREVCVUcJCQkJLyogdHJhY2sg QkxPQiBvd25lcnNoaXA7Cithc3N1bWVzIHRoYXQgbm8gQkxPQnMgc3Vydml2ZSBzZXJ2ZXIgcmVz dGFydCAqLwogI2RlZmluZSBVTklWX0lCVUZfQ09VTlRfREVCVUcJCQkvKiBkZWJ1ZyB0aGUgaW5z ZXJ0IGJ1ZmZlcjsKIHRoaXMgbGltaXRzIHRoZSBkYXRhYmFzZSB0byBJQlVGX0NPVU5UX05fU1BB Q0VTIGFuZCBJQlVGX0NPVU5UX05fUEFHRVMsCiBhbmQgdGhlIGluc2VydCBidWZmZXIgbXVzdCBi ZSBlbXB0eSB3aGVuIHRoZSBkYXRhYmFzZSBpcyBzdGFydGVkICovCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwY3VyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvcGFnZS9wYWdlMGN1ci5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgw NTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBj dXIuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEyMTYxNC1qazUzajcw NTJlYjd0OXJmCkBAIC0xMTQ5LDYgKzExNDksOCBAQCB1c2VfaGVhcDoKIAkJCQkJICAgICAgY3Vy cmVudF9yZWMsIGluZGV4LCBtdHIpOwogCX0KIAorCWJ0cl9ibG9iX2RiZ19hZGRfcmVjKGluc2Vy dF9yZWMsIGluZGV4LCBvZmZzZXRzLCAiaW5zZXJ0Iik7CisKIAlyZXR1cm4oaW5zZXJ0X3JlYyk7 CiB9CiAKQEAgLTExOTUsMTAgKzExOTcsMTIgQEAgcGFnZV9jdXJfaW5zZXJ0X3JlY196aXBfcmVv cmcoCiAJfQogCiAJLyogT3V0IG9mIHNwYWNlOiByZXN0b3JlIHRoZSBwYWdlICovCisJYnRyX2Js b2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImluc2VydF96aXBfZmFpbCIpOwogCWlmICghcGFn ZV96aXBfZGVjb21wcmVzcyhwYWdlX3ppcCwgcGFnZSwgRkFMU0UpKSB7CiAJCXV0X2Vycm9yOyAv KiBNZW1vcnkgY29ycnVwdGVkPyAqLwogCX0KIAl1dF9hZChwYWdlX3ZhbGlkYXRlKHBhZ2UsIGlu ZGV4KSk7CisJYnRyX2Jsb2JfZGJnX2FkZChwYWdlLCBpbmRleCwgImluc2VydF96aXBfZmFpbCIp OwogCXJldHVybihOVUxMKTsKIH0KIApAQCAtMTQ5MCw2ICsxNDk0LDggQEAgdXNlX2hlYXA6CiAK IAlwYWdlX3ppcF93cml0ZV9yZWMocGFnZV96aXAsIGluc2VydF9yZWMsIGluZGV4LCBvZmZzZXRz LCAxKTsKIAorCWJ0cl9ibG9iX2RiZ19hZGRfcmVjKGluc2VydF9yZWMsIGluZGV4LCBvZmZzZXRz LCAiaW5zZXJ0X3ppcF9vayIpOworCiAJLyogOS4gV3JpdGUgbG9nIHJlY29yZCBvZiB0aGUgaW5z ZXJ0ICovCiAJaWYgKFVOSVZfTElLRUxZKG10ciAhPSBOVUxMKSkgewogCQlwYWdlX2N1cl9pbnNl cnRfcmVjX3dyaXRlX2xvZyhpbnNlcnRfcmVjLCByZWNfc2l6ZSwKQEAgLTE2OTcsNiArMTcwMyw5 IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmRfdG9fY3JlYXRlZF9wYWdlKAogCiAJCWhlYXBfdG9w ICs9IHJlY19zaXplOwogCisJCXJlY19vZmZzX21ha2VfdmFsaWQoaW5zZXJ0X3JlYywgaW5kZXgs IG9mZnNldHMpOworCQlidHJfYmxvYl9kYmdfYWRkX3JlYyhpbnNlcnRfcmVjLCBpbmRleCwgb2Zm c2V0cywgImNvcHlfZW5kIik7CisKIAkJcGFnZV9jdXJfaW5zZXJ0X3JlY193cml0ZV9sb2coaW5z ZXJ0X3JlYywgcmVjX3NpemUsIHByZXZfcmVjLAogCQkJCQkgICAgICBpbmRleCwgbXRyKTsKIAkJ cHJldl9yZWMgPSBpbnNlcnRfcmVjOwpAQCAtMTk0NCw2ICsxOTUzLDcgQEAgcGFnZV9jdXJfZGVs ZXRlX3JlYygKIAlwYWdlX2Rpcl9zbG90X3NldF9uX293bmVkKGN1cl9kaXJfc2xvdCwgcGFnZV96 aXAsIGN1cl9uX293bmVkIC0gMSk7CiAKIAkvKiA2LiBGcmVlIHRoZSBtZW1vcnkgb2NjdXBpZWQg YnkgdGhlIHJlY29yZCAqLworCWJ0cl9ibG9iX2RiZ19yZW1vdmVfcmVjKGN1cnJlbnRfcmVjLCBp bmRleCwgb2Zmc2V0cywgImRlbGV0ZSIpOwogCXBhZ2VfbWVtX2ZyZWUocGFnZSwgcGFnZV96aXAs IGN1cnJlbnRfcmVjLCBpbmRleCwgb2Zmc2V0cyk7CiAKIAkvKiA3LiBOb3cgd2UgaGF2ZSBkZWNy ZW1lbnRlZCB0aGUgbnVtYmVyIG9mIG93bmVkIHJlY29yZHMgb2YgdGhlIHNsb3QuCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv cGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEy MTYxNC1qazUzajcwNTJlYjd0OXJmCkBAIC02ODUsMTIgKzY4NSwxNiBAQCBwYWdlX2NvcHlfcmVj X2xpc3RfZW5kKAogCQkJaWYgKFVOSVZfVU5MSUtFTFkKIAkJCSAgICAoIXBhZ2VfemlwX3Jlb3Jn YW5pemUobmV3X2Jsb2NrLCBpbmRleCwgbXRyKSkpIHsKIAorCQkJCWJ0cl9ibG9iX2RiZ19yZW1v dmUobmV3X3BhZ2UsIGluZGV4LAorCQkJCQkJICAgICJjb3B5X2VuZF9yZW9yZ19mYWlsIik7CiAJ CQkJaWYgKFVOSVZfVU5MSUtFTFkKIAkJCQkgICAgKCFwYWdlX3ppcF9kZWNvbXByZXNzKG5ld19w YWdlX3ppcCwKIAkJCQkJCQkgIG5ld19wYWdlLCBGQUxTRSkpKSB7CiAJCQkJCXV0X2Vycm9yOwog CQkJCX0KIAkJCQl1dF9hZChwYWdlX3ZhbGlkYXRlKG5ld19wYWdlLCBpbmRleCkpOworCQkJCWJ0 cl9ibG9iX2RiZ19hZGQobmV3X3BhZ2UsIGluZGV4LAorCQkJCQkJICJjb3B5X2VuZF9yZW9yZ19m YWlsIik7CiAJCQkJcmV0dXJuKE5VTEwpOwogCQkJfSBlbHNlIHsKIAkJCQkvKiBUaGUgcGFnZSB3 YXMgcmVvcmdhbml6ZWQ6CkBAIC04MDMsMTIgKzgwNywxNiBAQCBwYWdlX2NvcHlfcmVjX2xpc3Rf c3RhcnQoCiAJCQlpZiAoVU5JVl9VTkxJS0VMWQogCQkJICAgICghcGFnZV96aXBfcmVvcmdhbml6 ZShuZXdfYmxvY2ssIGluZGV4LCBtdHIpKSkgewogCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZShu ZXdfcGFnZSwgaW5kZXgsCisJCQkJCQkgICAgImNvcHlfc3RhcnRfcmVvcmdfZmFpbCIpOwogCQkJ CWlmIChVTklWX1VOTElLRUxZCiAJCQkJICAgICghcGFnZV96aXBfZGVjb21wcmVzcyhuZXdfcGFn ZV96aXAsCiAJCQkJCQkJICBuZXdfcGFnZSwgRkFMU0UpKSkgewogCQkJCQl1dF9lcnJvcjsKIAkJ CQl9CiAJCQkJdXRfYWQocGFnZV92YWxpZGF0ZShuZXdfcGFnZSwgaW5kZXgpKTsKKwkJCQlidHJf YmxvYl9kYmdfYWRkKG5ld19wYWdlLCBpbmRleCwKKwkJCQkJCSAiY29weV9zdGFydF9yZW9yZ19m YWlsIik7CiAJCQkJcmV0dXJuKE5VTEwpOwogCQkJfSBlbHNlIHsKIAkJCQkvKiBUaGUgcGFnZSB3 YXMgcmVvcmdhbml6ZWQ6CkBAIC0xMDgwLDYgKzEwODgsOSBAQCBwYWdlX2RlbGV0ZV9yZWNfbGlz dF9lbmQoCiAJLyogUmVtb3ZlIHRoZSByZWNvcmQgY2hhaW4gc2VnbWVudCBmcm9tIHRoZSByZWNv cmQgY2hhaW4gKi8KIAlwYWdlX3JlY19zZXRfbmV4dChwcmV2X3JlYywgcGFnZV9nZXRfc3VwcmVt dW1fcmVjKHBhZ2UpKTsKIAorCWJ0cl9ibG9iX2RiZ19vcChwYWdlLCByZWMsIGluZGV4LCAiZGVs ZXRlX2VuZCIsCisJCQlidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYyk7CisKIAkvKiBDYXRlbmF0ZSB0 aGUgZGVsZXRlZCBjaGFpbiBzZWdtZW50IHRvIHRoZSBwYWdlIGZyZWUgbGlzdCAqLwogCiAJcGFn ZV9yZWNfc2V0X25leHQobGFzdF9yZWMsIHBhZ2VfaGVhZGVyX2dldF9wdHIocGFnZSwgUEFHRV9G UkVFKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2Uwemlw LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9y YWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJmCkBAIC00NDU1LDYgKzQ0NTUsOCBAQCBw YWdlX3ppcF9yZW9yZ2FuaXplKAogCS8qIENvcHkgdGhlIG9sZCBwYWdlIHRvIHRlbXBvcmFyeSBz cGFjZSAqLwogCWJ1Zl9mcmFtZV9jb3B5KHRlbXBfcGFnZSwgcGFnZSk7CiAKKwlidHJfYmxvYl9k YmdfcmVtb3ZlKHBhZ2UsIGluZGV4LCAiemlwX3Jlb3JnIik7CisKIAkvKiBSZWNyZWF0ZSB0aGUg cGFnZTogbm90ZSB0aGF0IGdsb2JhbCBkYXRhIG9uIHBhZ2UgKHBvc3NpYmxlCiAJc2VnbWVudCBo ZWFkZXJzLCBuZXh0IHBhZ2UtZmllbGQsIGV0Yy4pIGlzIHByZXNlcnZlZCBpbnRhY3QgKi8KIApA QCAtNDUxMyw3ICs0NTE1LDcgQEAgcGFnZV96aXBfY29weV9yZWNzKAogCW10cl90KgkJCW10cikJ CS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAl1dF9hZChtdHJfbWVtb19jb250YWlu c19wYWdlKG10ciwgcGFnZSwgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOwotCXV0X2FkKG10cl9tZW1v X2NvbnRhaW5zX3BhZ2UobXRyLCAocGFnZV90Kikgc3JjLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7 CisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHNyYywgTVRSX01FTU9fUEFHRV9Y X0ZJWCkpOwogCXV0X2FkKCFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsKICNpZmRlZiBVTklW X1pJUF9ERUJVRwogCS8qIFRoZSBCLXRyZWUgb3BlcmF0aW9ucyB0aGF0IGNhbGwgdGhpcyBmdW5j dGlvbiBtYXkgc2V0CkBAIC00NTgzLDYgKzQ1ODUsNyBAQCBwYWdlX3ppcF9jb3B5X3JlY3MoCiAj aWZkZWYgVU5JVl9aSVBfREVCVUcKIAl1dF9hKHBhZ2VfemlwX3ZhbGlkYXRlKHBhZ2VfemlwLCBw YWdlKSk7CiAjZW5kaWYgLyogVU5JVl9aSVBfREVCVUcgKi8KKwlidHJfYmxvYl9kYmdfYWRkKHBh Z2UsIGluZGV4LCAicGFnZV96aXBfY29weV9yZWNzIik7CiAKIAlwYWdlX3ppcF9jb21wcmVzc193 cml0ZV9sb2cocGFnZV96aXAsIHBhZ2UsIGluZGV4LCBtdHIpOwogfQoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVwZC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2 NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDgxMjE2MTQtams1M2o3MDUyZWI3 dDlyZgpAQCAtNDk2LDE0ICs0OTYsNDkgQEAgcm93X3VwZF9yZWNfaW5fcGxhY2UoCiAJbl9maWVs ZHMgPSB1cGRfZ2V0X25fZmllbGRzKHVwZGF0ZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVs ZHM7IGkrKykgeworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCQlidHJfYmxvYl9kYmdfdAliOwor CQljb25zdCBieXRlKglmaWVsZF9yZWYJPSBOVUxMOworI2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJV RyAqLworCiAJCXVwZF9maWVsZCA9IHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwgaSk7CiAJCW5l d192YWwgPSAmKHVwZF9maWVsZC0+bmV3X3ZhbCk7CiAJCXV0X2FkKCFkZmllbGRfaXNfZXh0KG5l d192YWwpID09CiAJCSAgICAgICFyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIHVwZF9maWVs ZC0+ZmllbGRfbm8pKTsKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKwkJaWYgKGRmaWVsZF9pc19l eHQobmV3X3ZhbCkpIHsKKwkJCXVsaW50CWxlbjsKKwkJCWZpZWxkX3JlZiA9IHJlY19nZXRfbnRo X2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJCQl1dF9hKGxlbiAhPSBVTklWX1NRTF9O VUxMKTsKKwkJCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCQkJZmll bGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCWIucmVmX3Bh Z2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24ocmVjKSk7CisJCQliLnJlZl9oZWFw X25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKwkJCWIucmVmX2ZpZWxkX25vID0gaTsK KwkJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlmaWVsZF9yZWYgKyBC VFJfRVhURVJOX1BBR0VfTk8pOworCQkJdXRfYShiLnJlZl9maWVsZF9ubyA+PSBpbmRleC0+bl91 bmlxKTsKKwkJCWJ0cl9ibG9iX2RiZ19yYnRfZGVsZXRlKGluZGV4LCAmYiwgInVwZF9pbl9wbGFj ZSIpOworCQl9CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCiAKIAkJcmVjX3NldF9udGhf ZmllbGQocmVjLCBvZmZzZXRzLCB1cGRfZmllbGQtPmZpZWxkX25vLAogCQkJCSAgZGZpZWxkX2dl dF9kYXRhKG5ld192YWwpLAogCQkJCSAgZGZpZWxkX2dldF9sZW4obmV3X3ZhbCkpOworCisjaWZk ZWYgVU5JVl9CTE9CX0RFQlVHCisJCWlmIChkZmllbGRfaXNfZXh0KG5ld192YWwpKSB7CisJCQli LmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VY VEVSTl9QQUdFX05PKTsKKwkJCWIuYWx3YXlzX293bmVyID0gYi5vd25lciA9ICEoZmllbGRfcmVm W0JUUl9FWFRFUk5fTEVOXQorCQkJCQkJICAgICAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRyk7CisJ CQliLmRlbCA9IHJlY19nZXRfZGVsZXRlZF9mbGFnKAorCQkJCXJlYywgcmVjX29mZnNfY29tcChv ZmZzZXRzKSk7CisKKwkJCWJ0cl9ibG9iX2RiZ19yYnRfaW5zZXJ0KGluZGV4LCAmYiwgInVwZF9p bl9wbGFjZSIpOworCQl9CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCiAJfQogCiAJaWYg KFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3Ny djBzdGFydC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1p OWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJm CkBAIC0xMDgzLDYgKzEwODMsMTIgQEAgaW5ub2Jhc2Vfc3RhcnRfb3JfY3JlYXRlX2Zvcl9teXNx bCh2b2lkKQogIyBlbmRpZgogI2VuZGlmCiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKwlmcHJp bnRmKHN0ZGVyciwKKwkJIklubm9EQjogISEhISEhISEgVU5JVl9CTE9CX0RFQlVHIHN3aXRjaGVk IG9uICEhISEhISEhIVxuIgorCQkiSW5ub0RCOiBTZXJ2ZXIgcmVzdGFydCBtYXkgZmFpbCB3aXRo IFVOSVZfQkxPQl9ERUJVR1xuIik7CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCisKICNp ZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKIAlmcHJp bnRmKHN0ZGVyciwKCg== --===============1187890103== 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.6-innodb/ # testament_sha1: 22444906400921ee970b281fad3c3f4037ac3bbe # timestamp: 2011-02-08 14:18:27 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: vasil.dimov@stripped\ # ami9d5owe5vrb4ta # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWbzVxt4AMLH/lHZ/QQB7//// /////r////4EAAgAYDm8AAvvcCj7btvnvr70m+Ae+fTZsINaF3vnZ9n323TVN6vuu7XtXJSeL0fd kD6Hdgvb3sGgB6BouwbYM3cHQPHXbfZhC9q9cPe5ZqOub0dW93uM49vHl3ek957eUed7fd89mu33 p5r6q7veu3YHQeh7s7nrop32Ad2syba1mbVrImL6663zuAPeGpUBJEE0mJhNNASaNqZNKZHtCGpo 9QZMgAANAGgNASRAAgghNGinkU9TxNqI0ZGgA00eoaYgAANABpkCFJT9NTMqeoaAaAANBp6jagAA AAAAGgSaSQghFPSem1Gk2k002VP1J6B6pkNDGgRgIGyCHqYTTRhEoiZGgTUzRiTGkNMEGgETAmKa PUzU9TTQAPUDQBEkQE0AgJMT1KfqeQSfkjamiGnpNBo0BoGmgekA9TI3DuBA9tokkWMRERAPCekp IBOpD+pAk9gT0oVAJ8Yk+SMUP14UFITjYRLKruX3A0JhgaMpArIcHmbgJEGOULEMlphE40UmaKYJ QUmELkcYplQzClDJSOAwGQFYMYLBhwqLDpMoIzlyCFE2BKWClGpLKUoIJIpMMOJ/x+j5P9f9r8XE Oo9FeuEnaPX4sk2CaSMRGCiRENUQzWTQooIjBgIxRRXECxEiDAk/fCwqbfo2mDBEE0m7YETGFstW CrbCkEYoMRGIawlEiCCBsmmICrhKaaDDtO6nGqJGG+9MEEE7NX403jg82VjBUUOncwQyQyMikiJE FBRCLBIJIxGau5ezEY/2/z+gh/r1kmKvUeCIzv3RDVuqtatf2PYOXskOHdu3HDHhXUwLiWLwekhG bYWLOEwwhC6iLLCCH6TvbZmAQICBJDDjz5H3tFbxblxru3xTRUyiOExf66BndoP5MOyJoeZsHz2B k0kEMOgnLbntvtugpTdndwYhghCghUJN7QJak69mg0ZqTsHcymnQlHLPLmmGd/BZwUtaDRtSWaeS URYvShrAnEVFFigpG2s3ajOtqGkFhViMSFYKIp2XuZrwWrBYrcYYN0dB9LGjCXRK2unntjMTdBCP UbZuYsQeMgKlbKxjSmSBWooYhefU6RDP3fIfOBE/7aIe4eg9BqaFJsi0TwdT1vh8XiwDyesKk9o7 08WteIe8tub2d/b5Ht7G67/JenM685BVFZJGQnQo5HY52NFcbRoh37wJqSmHOSrBvDA6edZ5FzQT 60w2/f2l8LmHGJKxmIt7SBxnsjxQnn7injQoXvIT5xh5PQbfLGivwCUcFGEjKO6qJYkIInWPOBvn TnT2V0s37aDsjhIZIcjgScmi1SgGAyWYSxoYOmNVkmL0u2G++a7eZJDr0nJvS0byYOWjeWTCtrYf MfN1C9sTa9bObYlqJF4p2CIR2nMrGmylQgVuVuTqTej0lNib2vWsne0Pyn0Yz751ILbz69SKX8O2 iux/TrOumFhwAMF2bnyxZCvrFPYInvPd4T30eDPBjxvHt81PiZcO/1ZE0bRfQUajfB94Oq0ZxwdF czEApCM5P+vXq+Li1cOnGrY+8ZA3QKhD3EccLqnua9tFHbDtjjj833JDTurDi/HXCybYUWA/aEdl REfNhgDo4DymEoYfQEpsbczkhpUOf0jxgFsbOYlh0CB6ZmXubWtra5eBfn2HWgddyehsDoeKoc0X 7Yc2EISBIIjFCwURUWRFWKxWJFioKwUUVFQRGMGMkiwU7tuvaQy1whQfgAma8TGwFyM52vr76S2h O+jSta+r1QfL6siyDCcvxE9WXZXihLZxeTINIHTvm1rFM4kTZIdSQk8uLLyhbM2XcTJzkxlQ5y72 7uSIrVwzxkRYqpgSk9HFYDjQatCdZMzgXOFCQfQUOrKdImTlyadPlNJotRqsUoiU0uFhUnchyiIR WixLvTs4cKpQssNNhCwRJbGC+oq6uVUDGawKvDjUpZVZFuNIZxiTCeVZZGC2Ssy+DghyjZxpM6Qg k4M2oMEmzk1CZAyVao41jOc6F4ODvDbG71tjdhtD3uqK5xiwc9rQKCUdrpJp7hOS5Ii/GPWUgq+S LqIUHX2/Wj3fdHajnxN92/55HnIe5hUaDPCMR/f70fWj6EfWljWzEd3+9eyxgPpchQpYYQ7MM7/Z pfNxbEDG5RGmWJX8zhrboWyO3IMH7e3UGwtf2+eLotPemjyfDDWin036ISFHTMwMUPQM0e0RxQca kB1GJ66E+ROWnJhqxgHWAj5G59d8qO1iKC3etwzGxDczMza1iHPYTtJG18yJBjC/mY6Q2gYx8ctr GE2INRaJmVnAO+aDZpOHPIceP6sVCxx6FYohmOVxC0IHLDj2JvF8YnqpwvrSI9CNJbl9G8xyGYff i4xFMic6OSKT15l911TgySCve+OR+JQ0twd8CE+UFgY0ccp6yg6YUhRcjXGAMphJ8I9GOixBkyWQ qg8tPznU1/XhZMjbKRd82Ggkkc0Zcw3iCkBi0IANsSSOUzeVDDjDDkmYzhGKiYbVDVfHKddmNUvf 6ZxOFtpZeC7dBjWGN0QSQ7pXPxy7yQ41pennic/seOeMSPA+KSC0NDM4w56DeIpmSDtPe8A6REQM 0Oo0Boe09Q4jmxs1iF2HKsLIBENCRz339KpVgywQh660bKoXKY8uhL1Rjc3KxLHtyfuGMyIdMwuV 1BmdsWq/Tk5KkSi15nQhaAE2Y+WcxhhgJCEj0pDVTxVDPnsdTq4njXZtqpvN5zsLkGgeauhdLTAY 6QgM4FjboEQ+B0wQQUFAqNAdxjJlWwRGg4cBDm4oSvWygwRxZXIdzwEI5O03Yk3i3OxI1clxScK+ 152bAkggV9fjVycowNrxKd7x7KxO9NdIQOV2lQ8Lm+HIbPYyNSVV1CVSMsl1XGD1xawqUUTYiagQ D6iQBBv7CJNmoM5xweaFtZBap0XMR+vjLJkOEwQaa7ZEZy2VyriROwiySNjCM21w1eTP7ou8XyNu SQGLABy5IJYkkNW1g/Pz+d1ivP53LdaJeZh3Ti2w+XdfdQu+aR4TqDxOdjGMYhGD8mIUCiCg2Sd8 9XsVT+T8xMcQ1rWDmshmrOyfAe9H0Wja2iUtpbRVKLU8PueNOzbx6z0TbuhHQbdGtSpXNVycldwE tME2P0qRXn6d7EPDtIBDxnMEwmPJhi9CAhs28P0NiBwJ9kPtklTzUkojCkaCjIyP2kaD94BIC5hD eOYYMGkOA0NIB2jFGDQDSHqGIeobD3iWHxvY3yngYesUuDS9qcz2uQg6FUhRdHBMu1Drr6EMyI20 0NgdhUeQclEas1I8Qwwyis5VtBx2GT/H/oSn7l8GFm1EPtu0YR16M/G21uBpSeEaVvcDQVsaNg61 hxB6m3qALeIjRkknlTbgSQECPpHgpan8VA8kgtq5lQ7m+sN5wYlNJEz02QWg4zMeIEHITsPBcZU5 pEosMSIqOBLiUzazE72g0vnzrHPOO6xcbkklFXHE3Emkg+u6XYh6shUGwX8vIbQxLIaiD12DBukf dRjZz1MMSHAIkTdj7xb71foA9rGb8/Haf9MRFyYOCxEQ2sVC0ak5Plgtt8UTK3PiTS4uqlALRUhD KH3E07HhM4/NH7tjgVfKlaMYYnBYXX4v+Z7wAnLuBhJgINgySUy3V9HxcyhMjMwD971HDcF0eluz c8SKhElHG2xXZD7UhRdmc1p4M/6ZAb3F21t1fja9OTK+FYxnWjl8zitPeCr9mplKKqzi8Wd2HZkd 3dgL7p3yb7155e7n93DDmPGlS0ZBsDYKAT8Ij+MGEghZKySQEEqKnmVT8z8z95+8ufcPzmJY/vPz 5EsBjFoIXIgDoqaqNPy/k+nz2Ad72vAUKjyHjIdMBNYQh4XlhUtESnnDfzZfpNPbp5kPa3NhFCzR xdobjlos4zknFS6J1ZqFn9AxAqTvRvmwWCfvqWIaBDnzq0tLOLM2+oFkKHENhhUh5ykCrnUMhbpH fMMtSxhGxcsUYW4cdJ6q9+32iwHZ9nwrnz5yciakFY+4PeKCROJBXQ4FfsEknb3TpweNB7QkmYY0 yNjnlMC0pUrIUhe/e7MKoK6hUqyynqdrm9576U/XeK43lPkW4SVwkiPJfJ8oYjG+GAXFuSywWXLr 9jbNK3n0628vBc1dO3k1yXNyypXh8AZoxNCYUtDrTsiW0jSL6iBE+0SXwzfbZA3ZmzJwbhvXlTJG OtMeF93qJcXuqrpJqMs1NTaaJtNtsttt2mzcObBATJ8ysPyGfLUqtW1W0/JC2DHBwC1rFqtVVbBD UO4VA0S5AHo/OAA/Q/wQ9BI3/JqDAA/ACRBCFZ6pIfdCSfgAnn9PbW222rbaNGlta2lq3bpJA8Hb 3o1VI1VI0qdQ+D4/b8nl8N/l+XLASYSSrw2AkN+V2ZUh7qE9LMYbsMZJ0ZzZNDFUDjehwysNIVJD E9TxzOs8uiHqiucTnuvnfNCRm0cMgeztMVcJv4tAImIWj7kFYUMThoPr5jsORchLGKAhmtG4N+RI wNGBbRggL5lO4YcHBh4kz6obyyUFF4fbaG5YTnArm5wXxDonPboSUiZMWRJEIEECS8gdSHHqGjkq o1NQbEIEHVFJnJPs5iVSxmQgWDqbXu3NBAbQVt1L0tzOoaQ3VhG3ITw8dDOaDWVVuYgEAoMB04zM Q1BscTUnrEO3z7GZuFSBwo4ZSEjGMa2MTmVkWOBChpwemIf1IK+v0PL5BDZCP6vkE4vbB9yEFTEQ 396PDlz9FXUcL+HhgWexTs0z01Ou8LBpIjOLjJGTBBnLiUgzlqWxw2wiXdVZ2Y8FGXs9Meq6yXXv 2/GUWvcuLKKFFMMHpZwBCPuprgcutuYqQIYHEODfUgHU97849eHxvRjH0Cp1OvseO3HkThbiIoam NWOZ36mZhxh2r1O+hJFJtgXmO9xrrsrEkCSgehcWJY2sVGYUiIkslN1OYVB7HdRtBjjgxnRL7FNu JF5TZqy6Q8snfV5WNTjKT9lqZx1U89GcsQFoXBSBR1UYOC4uq7YSSNzRc7rwidSJISTbBeSEjY1e oQHYWjUVBEuw32lusXlzs18sxgvI7D5JOb7p0QYmNDwPb6BerT7jUEk0OBe6EAjmqMRjMtiZEeMz 5gTgyBCthmSWbNsgWRiZ7KBlQUiB2IVBy46kmf27mJT9hXsLWTqFGKOjA54UL0W25VBv2VsRWYpy ATkqpluHVdkkEzfBM2GQJJhz2p9BvIZxzsTPT0IG4x3FreRE6mAmbEpH0wKC9vJk6nn6Xp4JHWvU UAhxu1djlkbd+LNa041OGJydCJGhiKgJq1qaPKnG7DM71MNWlKw86tEVEMVsEDuG/m8fDUyohAEp Ujvnat1FbutmN/hpKypISTogacIFBpVtKWCQYCwTIr1N2GcjiPS8S4M4zVOxgSReJ2PEWCxAbQuS RcqtxJDYJnF2LbbFJNHRNFuhyTySThfhoQti+oyau5uUc3JI2Do5BrdnwTc02ggdSC1bqqxyNhiY 0VenDcRkZtzKQVtzMjB1Lu8cz4MBU1OwfJjGDGCEYxjGMYDGMYMYMY/3KoNTuMbHbqbGwwr9BeBA NgmPTnEAqSO5kiSDzFhkXABEVxAdU7+SsXVQN3Fd+/qPcORnnlgxnFpYc0GOSdt0GjF2NucRc7oC GHhExkPVPp5Ct4Wg9avN4Rrcs7+Pb7Vi1xJFs6g8I+v3e4IE9FWhwQW6wUMAOL3SJcXkbhsOWIce wtXVD1g5ElEuRHnraNNBQXUqR4tvycDlihlNy1mDYySUY6MJ9iITGf0B6EBbC5uPWrNd08wgVKDW Y0XKrMSZJZgw4mJHImhc2hYJrrz06leqBJMssTo2wWZZi1zj4TkRgMpl3dhSscSRiVK6TDMNjgAo hkCFkqcrK6HAxMoTIFTcgXGX/qieAduxLAmOSLnJcgVDa2joPQ9SiJLbspCSPr8Vtvmr9Xiz+D34 TQI00+z05vUpFil3m9CFP4EvPIki1UkqTvLOWuxoTFCZE6kyTsrBUZyQ6SXsTCXJ3JjnrpaY7Ntl 9thbE4xGvANF7SjdmJHJckVm5uZIwkTF5GFawpviDtPHUhRZJYtWw4ebmhgrGDKW60XHIsX35FFa TC0xAyccZF5+qtd20MFKJxkomnMxDHM1DpouQwNo0VOktToPtsaow8yZCowdCBPU6mwcpxx5ZwPk 5fkK4IXi0TqKBAaQ9qDoYPpCPEOQiRXp0x6HYQ5DqHEcIOBQ+aBJROp3ChrpxATHRDmF2IEDwuVg WMmjbJE0YHksdirbU2ko+ETrtWZJnliEo7QaVIPaZB4ScekV4+xSr17MMYIXWkDmSBsZJRgceUIt tlbkDHzLT+KddypEzauoG6gTX0LwNi3eQxDpWZUgJLJ7whZjlx6vk2E+ywrnmSkm2N0SOx84kqyp di+MtgkWD1Exjt0DZILXb89yS/JwtffHV9FfqQF9+Ho8U3hpP04MShlQ8OPHj2N3SMmIVUKczZjQ d+wkj3Q6ruvGXrO9m9l2g67BeuSxuJxWnKSBJUUc+2TqE2LTudpb9J1rSAfO1rtuQybi4NwvgEKP QUTJ8qj2MG5QypBoyUIEl4j6MIElWqE8mq5FoxYFREkMdhyXdrXYsA4KvQvwLWxdLd0qabgwKsi6 E5ihwmJBKM98ezzvDYDhBiOwvhfk0OaqTIXQySVyhWZ7AkgtDd2fiKy7BASRCUCpYXAYUCJ69rkA ot7v5CnC5EWejbSbjznJQucFLpoqbHBk4OhxzIscjaT5zpAktyZkrIOKBkiR40LgsVkGpaKk0QhM HnEnz0XKQiXB2oTInLCElMmcHU4OhH1DXwQFZJTxNZYFZkx9PPBR7A57BJHBWZ56OaM2RB2aX3Qm qhwFtPNQwcQdsoZxS2oWCRMGimliWq5a/ivnElMhizv5DYFFdzBSC0tGlSRdVLVn8ieBPAQZih5A 8UCSrvxolReItwgpXKXGNjx4gxrxILAwGBhxgyiJ7Ol2kWrtEquYDqYQ4IkyJPBwgSV7ErwZoXaJ oxYggclIguAZFSlWMkiJP25cJyFR77npnA/kuyEiysbuVYqw1BzHJS2bhqxhxZCsfMMmLBjEW01m wsMCR7pmGUzIyyiEgyGMhWq+ScSXTCWE34gsy8kLmnjNztaMSzuuI5NQiHp5SJeah4rJjAhiFOaC ubcvZ7C5rB70FcbPLlY6ZtQSRMGQkFxxRw/WG4NOkSRFbhIkokaO8XLaHKjQFEcJmyjQfBex3Ikz JZw6BEhhF8OQqqL1K5SZerM1cvMHqQRQ44mDjyKjNg0Qtr5UzkA3fbTcwPEG2VPJZIFmGByxQWju OMbGsniQHGKkDpZVExUY0YiY7l4i1Dlg6bESR0XZTzGrkGOeJOGrfjLKoGUIu+k4T5rXrIrN7zq4 1WahMaRzpAknI2tcdzuKgozZqFXjYcyV7hMhA2wQziClPYSRPJQeB2IWnKEqtpZQJLchVmyrEvkj c8JTFM3qbkB5BTKMENjipSKmzm7Flgx7PV5tXqFD2dXjY0xmDM8X5InJ1ip8cvSsCvB3cqWl6xdh UJBMWC53GG5NAVF4BXR7lQ3FMqZMkTnmAbbE2LfANoqaPMK68Xzk+fk5EMVU7yANlApEGoBGDFKx R9I/FU4rzh7drIG7gLWwiPqgQkinFHfx0TxtQDa1KsW7E7WUxGDGBeCPpcBEyaRSObMBE3ippcNW nRBG1WxvxHmv4junNpo84QZNbBniopzFtHihbD5z2jzZBCjpaNEhbTrYkSeMA9LXdlJePp+yq5rm Qr4SAWZzlRN8Gvioa40DphtnnbADP20fmiDmgHRAdelo2Gin7nzMQBjHX84iVfmBfnpU2/ulnwwZ o0aEpmZBsbKE1PahZNXC0tVRZg0IWItvi6PePggWINAIUDQyDCMSRYDCDF70bRGRGWRM2JFu/KIb Sqj2KNAPU/MqHpb7gKCIepiAUQ5AepBH3DieaEID5wq0IMRV2IBdws5U/QT9P8xJ2FhbcQhB/JBi Upxo0CRJAjAWIsJ+DYg8tyrQ6Nsop+tIGEXxVdVX/oqrf+Gl/+PrK4GJpRUWWfjclXEvfkLRifYH 2QP1oSmSkqowIdFXryeO6XsLxF+ztN6Y/ogi/q0DTmAHD+sTmJ23FoOtD4+awvkqoYQAexF/Skgk +wzZsYvBAwkBacVqq2cauH39bQHbGRJNmM2YQVRg4EmFuhH4BCUxHEv/EWCPBWs8bIm8jiI/pMdD 9YSlV0UrSKP9xbOJAjAwSRYAOoHIhKbrdw9K7NARd+yGIfDDizxIIvoQJAAgTBMyQmwmIJy33O4Y wIY3OIX9AAkAQ3ABjlhV5ai/ywcdoNtANFW2IJblZVwEe2k6WDXiqsC+st2IBfj0GBkuuV+tLu09 IYJ/50/N+OL4eiGc+wjqyi4sqzkOxV59irrADGLy9VQwsxXCPkKpS20C/YYtgGF4UgG3FgL0C24J lwz94uwXiFDwUagWNBOEWvxX7lVDEeM/be1vaNpdZ4UfrPru12u3wl2BKEDQyEktAcsCl4MtsTWh AcagmYUSC/EGPy/hrlUY0HvKrd3LJA6Ni6Ge2d998F3CVAdihfLUTJYNWAsMGMYrAYhBjGMdXIyu q7/zUBq7FdgqPWCHEkVmRCg0SP4ZNxQRFIIsqKu9YW2yMksljaJJZEKxtKlpRFaMLLVLaKVwNAw0 hzICXiQuhoYVi1fcGYa8DmSLFkzRoqMZJIXcO6dIBoPlSdTtFXdLPC1ZkN6Bj4FNaIUXQCyjvKLm FoXG/DPncds0BMtC0uZQ5xGCYHMbIbrgF0bjUuu7Tg6zI5s1DAMzkEuWar8NHzVBbxRsjqTtVe7E ao/ifA95kvPuJ+6lGHGimOwoqH5WGQyFp+03BRgf0EQV6BiNFXEsZHo6uA6jw3QoMbiifsH4j8Dm AkQGFzpEyhE5C62/mE1iqPy+X1rogPYMhJL1frJUqbGaH5NGiYcnMzwNyBM7GBvOnSx8y76QBEx8 65jSbV2GU5S4uUeEoGmjUNTGAcmE44lacY23BImrjYGYciwb4Lzajwi74ggSKDGIhxCpAVKfC4Q2 ckiAhnNp/KJtAuyrfDUEMRDqZcE/L+lju0q7SBeqH87pch5sgMMSJRTtanxnchxzxE6PXsZCMWKN uGah3ImZeiLFRLTEn2sFQKfh6OJygnLgBgnPNRyK6RPt0570Y6ZcEoIfBaruxVncS8TrDcLc8HR1 cvQ4oPZjejkP7nx6juXb6kqqedL5x4A4VkBxhsUCk0baofnS9giJqmGDIYWzqUrlkYi9h2B3Fx3Z yaCk7D0F5n7vb7fblMw9heU8AlDf4ZjJz3HOhIqZPgupxxMkcGQ3FgkMRwWIkxSPQvKJLI2mAQLS lQxQmLUKJfoLeznMQJHcFAzNRGfGgt5r00x47h3xcyQJLQTEbzaG4iabzcahYCLChUEIJkjsBG2T RAuFUOgBPNc+FwVFBPA7lI05JiqolYgTybC06zxoYzkUMbygAaOZQPmENohB5WDGEYkZ3fQOQ+Aw w/KaKqLksYJRZ4ax20axiayzz6KuWFbEGMsdi5I4LbtrNGltKtRkYaLQGhceGzWZltrVFEo8nkLu +J9WD2XocTuAcqNFASGpLEsAHl8nP0y1QeGAheQmToQV6TEbTyGQ3n2HlrTwLCseulKRNXJHdYFU JECRDqQCJQajHvDUC5kFmB8iBJRMEcwGHFuTGL7XJERbFBTNpoElYNBgc9fSiACyEuShmCAyR2lQ Oadb11oElsvMDMyNZUQMTNAkmFsFETEDEJB0Bzb2xCo3F5tDog1sAyZh5Eb7fcolRgEWOwMME1kw q4PPXxPFYT5Sh4glrgH3hUwDmnAyYfTcUEzMhB8goL0OwJYbbRHfFN6CJ1uJqEYZS7nQD+EST30C pvu2kEGB5y0881BKHKSBqFwRobdNp5b1pafE9TcHEAtgZ3Jcl5EoQgsQhA2iFVy157gNxjExwKlR IAdLoSn0zCw0hghUpjcyiIxNBgUgp7efP9+a3GcTYxlr6xzdFEMMDCG0jGArZkNFxz30F/cx3nad 54m4KBea8bIY2EvMTLCJ9JP2e7sSKGwUwFb9RJFTR7xT0MXIh3W22Sa0UGNFzwSEfOdAoZPl7oSO kix2JkQ5DV3Fj5RrgYnRATNaE6r4Hai+JfBC90AsIsxcMSLKGs8kirnaG5dwczIMTWWklsNB50AT u24jbaVMZagrpP2JcQtopMfEVELiLgeRIBEUiFpzmUqBXxN64cYMP4WIzC8vf4MdzkBiPpg423tg w4HzQhA/wqH6iCDM8A6AQXhQV6jybR5w5jA4tHuV0sGPit8QlpBfVnB84icq8ivCXcRjKG8VOgo4 da9aQIed5Hbmuemp7PjxwYGwK9sLMvlXiq570vCFxwkb9EwTkTiT5mHff7PQcU56yy9u6qsVUFVX pk57PqThBICkHAT+31YZ9YfDJAhnsPKzKxLJ7IVNJsc6TDPYtkyUuNmiFLlsDQEE5Jy9oV4lAheL wJ5FyZjDJYeN1JmVFUVQTs0Xmde53IGiAhOpsaOs5UQ0JUjjFxNJwLTE3LTPI4AeWEhssWBYiElJ Ql4A3gWKrPShNYjsig9Q7DkRBBrP75zn5hxe6cTEoxX4FRUMecidZ5y2bMmbU7tNnhdCDDbfCEPe i8OEob2k8iDUcvMSsXUsbjMyHWhAKEhW7B0HsFDfoRWOVsHkkg5SQZo8ZCIdIjJIlUL2AeONKWvK APE8FQoAb4UABwcYNIVHxhuCKeePhbuNkuYxEtTkAAc64INBJaF9a8JCSReYwJmNnYxQA83cYjDv OCdDFROp96fEs6VyDE5AL8Ig7hbkm23aAQ2aGdQLckQBixmWFgQQ5Ai9XRpy5njD3fXkTwssEXSD Q4GroX0QqmBXGSb+XuLTXz0MsJ0lHc7+Xy1eZDlMQhoBkIm03HEku4e4cEBJCoHoFB298RLWuJLe +IJuTR4Ng5B0ioHIJ0RECoAew0WugE1QN8/YlSMBDn9IspargmUiWEN7CpITHaJqZIAZruB3a3US 6VWqGLeyKezz0rsanjPEqDEdeEJLA7i7ZInpITmbrt3P3oLB87SD1oALn5P2Tr8s0jItBVddhXoI DTA/LYO/n2kivSBjEOFUgcOYNfj3CWDzPeczejBEeZLKNlOXsyyfY6qdiRJBQDNHSKFgFwFdHzcA sAPMcQlHYqbKiwIhGSQRIBFYCyIshNxie87BuA4lEpASlM+L8FjQ3qn3INwUIwaUIhWI1h7wkLl/ Kypm0J73mtbLsAx2BoQV3CtyN+o8h5TuD1+n0+sv4O4yeoqyF9XU0ZIBuL6jkmSLmToZOeOIH02N TNDFRgc1yD1pyB6AvyyNevUVWCzN7gJXGtbBWAZDDgdfhPBZCLmbGocx7iB3aEgWQV3uwo8QVRQo SHEIr4SBAYCSzWa4GhQ0WwuEThMaKFDxPCukiOHvoe4jb7ClK/Qk+EEtQVEoLp7y3+iofUqGACez uRpyIeHCggg8icMIZVGV0kMTsFIBuq1DyoiQBZgCBJCi60UNRmPpyOJ6ehxJlN8Qv8fbQqEgGmjI NFSru5e+tjcAlwQKpAUxsAQqhw2ZenBFLSK3kEASd7WviVDO8ypDKXXKnA9DYrf8u72Cpw7wYY+0 pDUShYiwNYcDx2oWAYgRPB/EqCaT6t5RuR72I/hFJFkUkGQFrzeSmL9c3KnZMUyplu9ABqRZCIBE LxSkKRlIke0nDb8K0XmEIK1pajRdRF5He5HYzp9YdHlfa4xyP5nfkyWhaOgpYLY93ya+dvAXsF+P MUR4GiAlQo39UVQyPDnBc2QGD9INAUxkTvc5UDxrf25IBVXDgiItU+BTmKtzLh/973MrdoXFElwU FOOAIR4XqN5Yn2opNYqQNcUNsQKeih7pgEsAsBIRg1hD4TGJCydosTAVmhGl9fF4dRuKkek00oWh 6SxUx4+haa/aUA0BGjmOdRui9JmaCWVqFLs77nkb20sU3xIikIzeHiUCQJA8r7da3FsIxIxekOBT oOreANH8YEbE+pOINFAM2Bq9m1EJ58vj0xODoh04z4BshmqEJlR4ZipV5+i9QktLdDX7/FdYkr/U JI+FepQx6iWLAZXSQIakjwPcK4NG6wnsK3i+VsKO4qKgfxamkLPHu5xU+LZjQEM+Q1dGD7BUgHQB zjTZS4SqjJ4rm0EoRLcDUkyB7DOYSH1Ihi5ipcQx7aFQPlfQjH0liEQyFSIgYgJkYGQoJYVDmdbF smB6TH5EyRkfZR8UTKXepgAP0w6o0MBsCQ4agKhEuL8z3ipYbMNEFXdA4gOhaPMwTQcrtrjudQg1 DQiF1QKofq99/TfO3x1yuBUgs0EqBFkUoXahQS4hcuj7I8z1ipi4BFxMui1Dp3CoHCy9sDjh6z1I H6D5xYjSBChYjSBChYjXzvMDPeCZgz2K6FQhxCHKeHPDRfkyQys3Dg5eJ3Y/WKl3ENEQ10MZdWwq ZDizRtYNREsfist1cxN5WejckQOC/UQfj+HkGGIddzqmDVh0YXt2MzzUsmyU/vtDgKcbGw4mUNuE UgweZACAIumaBAoSIDPCKSmRAqXjsMXUPeBCzgkxfeGQZw7WguxU9hAEMgyzKwVC7CzwabP4m+8s YkML8VQj3mCAGKhiIPgTZsGcXALipG1AgtAxHiuyGuDQgdw23uKA5r6XVtEPuhdDtsIjqTxcQMLi 5opoJFQPJT8pseYwaiSeiwYhcXlgZQPpuYkPAQ2N7ETgu9FCgSmAEOsGio0EEhTIAlixSUA0GyHH C7gYRCRAe2neLvA2il2q0TAAnowR+J3ecwQGamA7YB6YhuUgbCIJBrAhqMFJF2JIB9M5YD25e1BU tEAMgIFAHWIGB/Eww6gB4/JSSJIeuUGneGCxjAQQMAa3oqb1He3XVQL5tB8BU9xp0ohiUCIIkX75 QfsIhuNEiECEQhPVQooNT5NjtFsIjzfoQ0wOQEOp2Wast2ZAHj57RJISEeRVCMhDDK31igmAqZKh YKANatxVCPGWITOBjdfkpr65ME1jF1HgqbkFugZm04rEIkU6Xfn4+M6sZav3nurDZJP6alFIjw6I +/64+2J/QylQmHiuXBCkaAuVKi3ELPr++2XBhgIwwjW8NNZ7YJ4FEWinl+6j9aGiCEeGpOIi0xjU hUsXSlKL1I0L9KGI/gYMYMYMbXGHM4SpZcSC18lCsAWEeY0VSjCiXjRIBemlIY4nsUOYffcVQiKd wNRE1hxAf0RoJyvWZXW3Mqdhh5yYGyXLe9gWoZ2N2bEL05KgHX431PAdhwJ9Xf7Xzr0ipm7Ok9eq RJBVYsFikIwnr2iD8BAQmSB3lFjl76iMYkVVBhIfKJE9tznHlyd+gXd2ggJI6kYxqLUkaBEcFDrO 9Q0Nwlh63n6d3mZzrWh5arKBQIHTz8AXUikDcFBRDz02nO6EtWa/snI93MDNmIZ+q9AohCDIyoPY VS0gWSBEPTEcuXfMAwhvZNTDBmgGE0CSYhIkitDKGUNaJ5gey1QxQTvNgkKxxwssS1qbLE1tgGAB UUPCKNQbKMCoQ9myAHaInwERTEcSEhHnitFl7BbwDrcjaCnyFcHUrHzvO04RcLTObtLoXyP0Cpaq IeQuijzNAKIF4tkBwWBGkjBvAw5toiVzRzR7JuV73h4tDlDrDQUGkXX1+ped4kQkTOkKAkWEWQrm Kj6wSzp+GscKhi1GRrGHyZ4e4cPr92H380wy8IZrWsQ0Tlo1ohtrrOOKeyZuag2zYFGkXEZsYGO5 sJrXG0rBPyUvMZSByz04E7Ic9aoeUOZxBIJsjQKDJEeGBTszG0IbFWF9L9Di94qZbwyN+rs3N1FL tVTJQMliBKcohMU4HDWrTENsoQJFSP2hPu7bpDAwCKQ1yzta3kBvWoAPeJtkaD88ZBCRW5UOUb/P lW5WzSANd1yodlvs16wTkhISInHUDpoSnhkmlepDy9VDHIB+o5iX7B0hicz2T1ipAKhJjIUwuFGY O81NxIb9kI16zqGGWYdncKl3iQdNGGlVmV3GQ2rdNzbkvocbULyvSmkMTFCJHVFKzrUjHWeSVGc+ Z5dDrAUoMwxcZAzJCoQmV7yCsITkyMWIFEiNXQoEAxUgRBTuoDCcc8REroYjzDWb+w7gyDBAggki ohHOpfKYlIeToIbwPxiudCmlbNhE0NdtLkAshqBg3u3XNUL6otrgyBFMYL5GFjGLmKhgXmIXdPyv QzMhHgYSgrO0CpCSBE9CUembngLWEOjtxLzXBbRCbbtTDbiwbNg2U35b1AxAaFQ6NBokQsKHb5qq NFJSVBZQUh9EPwY0nB6Z0b+jbxG9ut2y/bs0ly+lvd9q99wpvg2gAePLM3irgh4iHrgALIBk6wGE id4uGIckEb2DxLwJN8QHjdFPlumwuArzFRkJeTHE6CI7e8C2/SCXZihvrhkHIQKJEYKBMmN43vjl 8Xd66hzKmoTdSIYxely+MqCUzohGx1vaPY+IRGuRcohhX4QhsQuK5HcgzLr6BWws4dPA3AZjI7dk ailzN/AqSI8BTkFyKB8dnEJ0IQTfi3vQGv0dzoVz7CEQ+0rZDYihPB8LIYEHhAwboWLGU2h5xU4n s4aNoI3ezKG8XqE2ZTMIfJ5Gnt0gPGeWeLbiEhp5IZNXZ8UFOcMQ5NNYfLBBsZ44Gr7feKnrG6pC CkVIJCMIyQkkgjGSIMgLIqBkKvHVVNrADR1CpSCu7m3rbyLZ3uTzUlZYV8x2iaOTfgFoJemNj6ek 8hoCzBwctFw+D9W3jMWLRHsPVOAXQTUhbqS8dge/FjuqKmoAcvUE7mp6AbNoh+oKJ6YcZuevnfZq 1hzOgEOxWfxAnrg9oLYjJAJ/8O9+t//F3JFOFCQvNXG3gA== --===============1187890103==--