From: marko.makela Date: March 24 2011 12:26pm Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3550 to 3551) List-Archive: http://lists.mysql.com/commits/133768 Message-Id: <201103241226.p2OCQqtn017132@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1847914406==" --===============1847914406== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM1NTEgTWFya28gTcOka2Vsw6QJMjAxMS0wMy0yNCBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIHJlbW92ZWQ6CiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90aHIwbG9jLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3RocjBsb2MuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90aHIvCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvdGhyL3RocjBsb2MuYwogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvQ01ha2VMaXN0cy50eHQKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwcmVhLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dWYwcmVhLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2lidWYwaWJ1Zi5oCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaWMKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL210cjBtdHIuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRy MG10ci5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9tdHIvbXRyMG10ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2 L3NydjBzcnYuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuYwogICAgICBz dG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMKIDM1NTAga2V2aW4ubGV3aXNAb3JhY2xlLmNv bQkyMDExLTAzLTIzIFttZXJnZV0KICAgICAgbWVyZ2UKCiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBwY3VyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2J0cjBwY3VyLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBh Z2UuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9zcnYwc3J2LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaAog ICAgICBzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9zcnYvc3J2MHNydi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdGhyL3RocjBsb2MuYwo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9DTWFrZUxpc3RzLnR4dCcKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9DTWFrZUxpc3RzLnR4dAlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUu Y29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9DTWFrZUxpc3RzLnR4dAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEy MjQwOC00cHE0eDFsbDZpYXRxeXluCkBAIC0yNDcsNyArMjQ3LDYgQEAgU0VUKElOTk9CQVNFX1NP VVJDRVMJYnRyL2J0cjBidHIuYyBidHIvYgogCQkJcm93L3JvdzBzZWwuYyByb3cvcm93MHVpbnMu YyByb3cvcm93MHVtb2QuYyByb3cvcm93MHVuZG8uYyByb3cvcm93MHVwZC5jIHJvdy9yb3cwdmVy cy5jCiAJCQlzcnYvc3J2MG1vbi5jIHNydi9zcnYwc3J2LmMgc3J2L3NydjBzdGFydC5jCiAJCQlz eW5jL3N5bmMwYXJyLmMgc3luYy9zeW5jMHJ3LmMgc3luYy9zeW5jMHN5bmMuYwotCQkJdGhyL3Ro cjBsb2MuYwogCQkJdHJ4L3RyeDBpX3MuYyB0cngvdHJ4MHB1cmdlLmMgdHJ4L3RyeDByZWMuYyB0 cngvdHJ4MHJvbGwuYyB0cngvdHJ4MHJzZWcuYwogCQkJdHJ4L3RyeDBzeXMuYyB0cngvdHJ4MHRy eC5jIHRyeC90cngwdW5kby5jCiAJCQl1c3IvdXNyMHNlc3MuYwoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9i dHIvYnRyMGN1ci5jCXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2Mzct ODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0MDgtNHBxNHgxbGw2aWF0cXl5 bgpAQCAtNDAyLDcgKzQwMiw3IEBAIGJ0cl9jdXJfc2VhcmNoX3RvX250aF9sZXZlbCgKIAogCXV0 X2FkKGxldmVsID09IDAgfHwgbW9kZSA9PSBQQUdFX0NVUl9MRSk7CiAJdXRfYWQoZGljdF9pbmRl eF9jaGVja19zZWFyY2hfdHVwbGUoaW5kZXgsIHR1cGxlKSk7Ci0JdXRfYWQoIWRpY3RfaW5kZXhf aXNfaWJ1ZihpbmRleCkgfHwgaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQoIWRpY3RfaW5kZXhfaXNf aWJ1ZihpbmRleCkgfHwgaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNrX3R5 cGVkKHR1cGxlKSk7CiAKICNpZmRlZiBVTklWX0RFQlVHCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9i dWYwYnVmLmMJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdm emtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXluCkBA IC0yNDYxLDkgKzI0NjEsNiBAQCBidWZfcGFnZV9nZXRfemlwKAogCXVuc2lnbmVkCWFjY2Vzc190 aW1lOwogCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZ2V0KHNwYWNlLCBvZmZzZXQp OwogCi0jaWZuZGVmIFVOSVZfTE9HX0RFQlVHCi0JdXRfYWQoIWlidWZfaW5zaWRlKCkpOwotI2Vu ZGlmCiAJYnVmX3Bvb2wtPnN0YXQubl9wYWdlX2dldHMrKzsKIAogCWZvciAoOzspIHsKQEAgLTI5 MDgsOCArMjkwNSw5IEBAIGJ1Zl9wYWdlX2dldF9nZW4oCiAJdXRfYWQoemlwX3NpemUgPT0gZmls X3NwYWNlX2dldF96aXBfc2l6ZShzcGFjZSkpOwogCXV0X2FkKHV0X2lzXzJwb3coemlwX3NpemUp KTsKICNpZm5kZWYgVU5JVl9MT0dfREVCVUcKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSB8fCBpYnVm X3BhZ2VfbG93KHNwYWNlLCB6aXBfc2l6ZSwgb2Zmc2V0LAotCQkJCQkgICAgICBGQUxTRSwgZmls ZSwgbGluZSwgTlVMTCkpOworCXV0X2FkKCFpYnVmX2luc2lkZShtdHIpCisJICAgICAgfHwgaWJ1 Zl9wYWdlX2xvdyhzcGFjZSwgemlwX3NpemUsIG9mZnNldCwKKwkJCSAgICAgICBGQUxTRSwgZmls ZSwgbGluZSwgTlVMTCkpOwogI2VuZGlmCiAJYnVmX3Bvb2wtPnN0YXQubl9wYWdlX2dldHMrKzsK IAlmb2xkID0gYnVmX3BhZ2VfYWRkcmVzc19mb2xkKHNwYWNlLCBvZmZzZXQpOwpAQCAtMzM0Nyw3 ICszMzQ1LDggQEAgd2FpdF91bnRpbF91bmZpeGVkOgogCQkvKiBJbiB0aGUgY2FzZSBvZiBhIGZp cnN0IGFjY2VzcywgdHJ5IHRvIGFwcGx5IGxpbmVhcgogCQlyZWFkLWFoZWFkICovCiAKLQkJYnVm X3JlYWRfYWhlYWRfbGluZWFyKHNwYWNlLCB6aXBfc2l6ZSwgb2Zmc2V0KTsKKwkJYnVmX3JlYWRf YWhlYWRfbGluZWFyKHNwYWNlLCB6aXBfc2l6ZSwgb2Zmc2V0LAorCQkJCSAgICAgIGlidWZfaW5z aWRlKG10cikpOwogCX0KIAogI2lmZGVmIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwpAQCAtMzQwOCw3 ICszNDA3LDcgQEAgYnVmX3BhZ2Vfb3B0aW1pc3RpY19nZXQoCiAJYWNjZXNzX3RpbWUgPSBidWZf cGFnZV9pc19hY2Nlc3NlZCgmYmxvY2stPnBhZ2UpOwogCWJ1Zl9wYWdlX3NldF9hY2Nlc3NlZF9t YWtlX3lvdW5nKCZibG9jay0+cGFnZSwgYWNjZXNzX3RpbWUpOwogCi0JdXRfYWQoIWlidWZfaW5z aWRlKCkKKwl1dF9hZCghaWJ1Zl9pbnNpZGUobXRyKQogCSAgICAgIHx8IGlidWZfcGFnZShidWZf YmxvY2tfZ2V0X3NwYWNlKGJsb2NrKSwKIAkJCSAgIGJ1Zl9ibG9ja19nZXRfemlwX3NpemUoYmxv Y2spLAogCQkJICAgYnVmX2Jsb2NrX2dldF9wYWdlX25vKGJsb2NrKSwgTlVMTCkpOwpAQCAtMzQ2 NCw3ICszNDYzLDggQEAgYnVmX3BhZ2Vfb3B0aW1pc3RpY19nZXQoCiAKIAkJYnVmX3JlYWRfYWhl YWRfbGluZWFyKGJ1Zl9ibG9ja19nZXRfc3BhY2UoYmxvY2spLAogCQkJCSAgICAgIGJ1Zl9ibG9j a19nZXRfemlwX3NpemUoYmxvY2spLAotCQkJCSAgICAgIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhi bG9jaykpOworCQkJCSAgICAgIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jayksCisJCQkJICAg ICAgaWJ1Zl9pbnNpZGUobXRyKSk7CiAJfQogCiAjaWZkZWYgVU5JVl9JQlVGX0NPVU5UX0RFQlVH CkBAIC0zNTQwLDcgKzM1NDAsNyBAQCBidWZfcGFnZV9nZXRfa25vd25fbm93YWl0KAogCQlidWZf cG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKIAl9CiAKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSB8 fCAobW9kZSA9PSBCVUZfS0VFUF9PTEQpKTsKKwl1dF9hZCghaWJ1Zl9pbnNpZGUobXRyKSB8fCBt b2RlID09IEJVRl9LRUVQX09MRCk7CiAKIAlpZiAocndfbGF0Y2ggPT0gUldfU19MQVRDSCkgewog CQlzdWNjZXNzID0gcndfbG9ja19zX2xvY2tfbm93YWl0KCYoYmxvY2stPmxvY2spLApAQCAtMzgx NSwxNCArMzgxNSwxMyBAQCBidWZfcGFnZV9pbml0X2Zvcl9yZWFkKAogCQkvKiBJdCBpcyBhIHJl YWQtYWhlYWQgd2l0aGluIGFuIGlidWYgcm91dGluZSAqLwogCiAJCXV0X2FkKCFpYnVmX2JpdG1h cF9wYWdlKHppcF9zaXplLCBvZmZzZXQpKTsKLQkJdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CiAKLQkJ bXRyX3N0YXJ0KCZtdHIpOworCQlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCQlpZiAoIXJlY3Zf bm9faWJ1Zl9vcGVyYXRpb25zCiAJCSAgICAmJiAhaWJ1Zl9wYWdlKHNwYWNlLCB6aXBfc2l6ZSwg b2Zmc2V0LCAmbXRyKSkgewogCi0JCQltdHJfY29tbWl0KCZtdHIpOworCQkJaWJ1Zl9tdHJfY29t bWl0KCZtdHIpOwogCiAJCQlyZXR1cm4oTlVMTCk7CiAJCX0KQEAgLTQwMTksNyArNDAxOCw3IEBA IGZ1bmNfZXhpdDoKIAogCWlmIChtb2RlID09IEJVRl9SRUFEX0lCVUZfUEFHRVNfT05MWSkgewog Ci0JCW10cl9jb21taXQoJm10cik7CisJCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAl9CiAKIAoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjByZWEuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMHJlYS5jCXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5j b20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNl L2J1Zi9idWYwcmVhLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0 MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtMjM2LDEwICsyMzYsMTAgQEAgVU5JVl9JTlRFUk4KIHVs aW50CiBidWZfcmVhZF9haGVhZF9saW5lYXIoCiAvKj09PT09PT09PT09PT09PT09PSovCi0JdWxp bnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICovCi0JdWxpbnQJemlwX3NpemUsLyohPCBpbjog Y29tcHJlc3NlZCBwYWdlIHNpemUgaW4gYnl0ZXMsIG9yIDAgKi8KLQl1bGludAlvZmZzZXQpCS8q ITwgaW46IHBhZ2UgbnVtYmVyIG9mIGEgcGFnZTsgTk9URTogdGhlIGN1cnJlbnQgdGhyZWFkCi0J CQltdXN0IHdhbnQgYWNjZXNzIHRvIHRoaXMgcGFnZSAoc2VlIE5PVEUgMyBhYm92ZSkgKi8KKwl1 bGludAlzcGFjZSwJCS8qITwgaW46IHNwYWNlIGlkICovCisJdWxpbnQJemlwX3NpemUsCS8qITwg aW46IGNvbXByZXNzZWQgcGFnZSBzaXplIGluIGJ5dGVzLCBvciAwICovCisJdWxpbnQJb2Zmc2V0 LAkJLyohPCBpbjogcGFnZSBudW1iZXI7IHNlZSBOT1RFIDMgYWJvdmUgKi8KKwlpYm9vbAlpbnNp ZGVfaWJ1ZikJLyohPCBpbjogVFJVRSBpZiB3ZSBhcmUgaW5zaWRlIGlidWYgcm91dGluZSAqLwog ewogCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZ2V0KHNwYWNlLCBvZmZzZXQpOwog CWliX2ludDY0X3QJdGFibGVzcGFjZV92ZXJzaW9uOwpAQCAtNDM0LDExICs0MzQsOSBAQCBidWZf cmVhZF9haGVhZF9saW5lYXIoCiAKIAkvKiBJZiB3ZSBnb3QgdGhpcyBmYXIsIHJlYWQtYWhlYWQg Y2FuIGJlIHNlbnNpYmxlOiBkbyBpdCAqLwogCi0JaWYgKGlidWZfaW5zaWRlKCkpIHsKLQkJaWJ1 Zl9tb2RlID0gQlVGX1JFQURfSUJVRl9QQUdFU19PTkxZOwotCX0gZWxzZSB7Ci0JCWlidWZfbW9k ZSA9IEJVRl9SRUFEX0FOWV9QQUdFOwotCX0KKwlpYnVmX21vZGUgPSBpbnNpZGVfaWJ1ZgorCQk/ IEJVRl9SRUFEX0lCVUZfUEFHRVNfT05MWSB8IE9TX0FJT19TSU1VTEFURURfV0FLRV9MQVRFUgor CQk6IEJVRl9SRUFEX0FOWV9QQUdFIHwgT1NfQUlPX1NJTVVMQVRFRF9XQUtFX0xBVEVSOwogCiAJ Y291bnQgPSAwOwogCkBAIC00NTUsNyArNDUzLDcgQEAgYnVmX3JlYWRfYWhlYWRfbGluZWFyKAog CQlpZiAoIWlidWZfYml0bWFwX3BhZ2UoemlwX3NpemUsIGkpKSB7CiAJCQljb3VudCArPSBidWZf cmVhZF9wYWdlX2xvdygKIAkJCQkmZXJyLCBGQUxTRSwKLQkJCQlpYnVmX21vZGUgfCBPU19BSU9f U0lNVUxBVEVEX1dBS0VfTEFURVIsCisJCQkJaWJ1Zl9tb2RlLAogCQkJCXNwYWNlLCB6aXBfc2l6 ZSwgRkFMU0UsIHRhYmxlc3BhY2VfdmVyc2lvbiwgaSk7CiAJCQlpZiAoZXJyID09IERCX1RBQkxF U1BBQ0VfREVMRVRFRCkgewogCQkJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwpAQCAtNTI1 LDcgKzUyMyw2IEBAIGJ1Zl9yZWFkX2lidWZfbWVyZ2VfcGFnZXMoCiB7CiAJdWxpbnQJaTsKIAot CXV0X2FkKCFpYnVmX2luc2lkZSgpKTsKICNpZmRlZiBVTklWX0lCVUZfREVCVUcKIAl1dF9hKG5f c3RvcmVkIDwgVU5JVl9QQUdFX1NJWkUpOwogI2VuZGlmCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2ZpbC9m aWwwZmlsLmMJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdm emtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXluCkBA IC00MzM5LDggKzQzMzksNiBAQCBmaWxfaW8oCiAJdXRfYWQocmVjdl9ub19pYnVmX29wZXJhdGlv bnMgfHwgKHR5cGUgPT0gT1NfRklMRV9XUklURSkKIAkgICAgICB8fCAhaWJ1Zl9iaXRtYXBfcGFn ZSh6aXBfc2l6ZSwgYmxvY2tfb2Zmc2V0KQogCSAgICAgIHx8IHN5bmMgfHwgaXNfbG9nKTsKLQl1 dF9hZCghaWJ1Zl9pbnNpZGUoKSB8fCBpc19sb2cgfHwgKHR5cGUgPT0gT1NfRklMRV9XUklURSkK LQkgICAgICB8fCBpYnVmX3BhZ2Uoc3BhY2VfaWQsIHppcF9zaXplLCBibG9ja19vZmZzZXQsIE5V TEwpKTsKICMgZW5kaWYgLyogVU5JVl9MT0dfREVCVUcgKi8KIAlpZiAoc3luYykgewogCQltb2Rl ID0gT1NfQUlPX1NZTkM7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5k bGVyL2hhX2lubm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9k Yi5jYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2Ji MnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXlu CkBAIC03NCw3ICs3NCw2IEBAIGV4dGVybiAiQyIgewogI2luY2x1ZGUgImZpbDBmaWwuaCIKICNp bmNsdWRlICJ0cngweGEuaCIKICNpbmNsdWRlICJyb3cwbWVyZ2UuaCIKLSNpbmNsdWRlICJ0aHIw bG9jLmgiCiAjaW5jbHVkZSAiZGljdDBib290LmgiCiAjaW5jbHVkZSAiZGljdDBzdGF0cy5oIgog I2luY2x1ZGUgImhhX3Byb3RvdHlwZXMuaCIKQEAgLTI4OCw3ICsyODcsNiBAQCBzdGF0aWMgUFNJ X211dGV4X2luZm8gYWxsX2lubm9kYl9tdXRleGVzCiAJeyZzeW5jX3RocmVhZF9tdXRleF9rZXks ICJzeW5jX3RocmVhZF9tdXRleCIsIDB9LAogIyAgZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICov CiAJeyZ0cnhfZG91Ymxld3JpdGVfbXV0ZXhfa2V5LCAidHJ4X2RvdWJsZXdyaXRlX211dGV4Iiwg MH0sCi0JeyZ0aHJfbG9jYWxfbXV0ZXhfa2V5LCAidGhyX2xvY2FsX211dGV4IiwgMH0sCiAJeyZ0 cnhfdW5kb19tdXRleF9rZXksICJ0cnhfdW5kb19tdXRleCIsIDB9LAogCXsmc3J2X3N5c19tdXRl eF9rZXksICJzcnZfc3lzX211dGV4IiwgMH0sCiAJeyZsb2NrX3N5c19tdXRleF9rZXksICJsb2Nr X211dGV4IiwgMH0sCkBAIC0zMjY4LDcgKzMyNjYsNiBAQCBpbm5vYmFzZV9jbG9zZV9jb25uZWN0 aW9uKAogCiAJaW5ub2Jhc2Vfcm9sbGJhY2tfdHJ4KHRyeCk7CiAKLQl0aHJfbG9jYWxfZnJlZSh0 cngtPm15c3FsX3RocmVhZF9pZCk7CiAJdHJ4X2ZyZWVfZm9yX215c3FsKHRyeCk7CiAKIAlEQlVH X1JFVFVSTigwKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1 ZjBpYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYwlyZXZpZDpr ZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTQ0LDcgKzQ0LDYg QEAgQ3JlYXRlZCA3LzE5LzE5OTcgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAiZnNwMGZzcC5oIgog I2luY2x1ZGUgInRyeDBzeXMuaCIKICNpbmNsdWRlICJmaWwwZmlsLmgiCi0jaW5jbHVkZSAidGhy MGxvYy5oIgogI2luY2x1ZGUgInJlbTByZWMuaCIKICNpbmNsdWRlICJidHIwY3VyLmgiCiAjaW5j bHVkZSAiYnRyMHBjdXIuaCIKQEAgLTMyMSw1MiArMzIwLDQzIEBAIHN0aWxsIHBoeXNpY2FsbHkg bGlrZSB0aGUgaW5kZXggcGFnZSBldmUKIGRyb3BwZWQhIFNvLCB0aGVyZSBzZWVtcyB0byBiZSBu byBwcm9ibGVtLiAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU2V0cyB0aGUgZmxhZyBpbiB0aGUgY3Vy cmVudCBPUyB0aHJlYWQgbG9jYWwgc3RvcmFnZSBkZW5vdGluZyB0aGF0IGl0IGlzCitTZXRzIHRo ZSBmbGFnIGluIHRoZSBjdXJyZW50IG1pbmktdHJhbnNhY3Rpb24gcmVjb3JkIGluZGljYXRpbmcg d2UncmUKIGluc2lkZSBhbiBpbnNlcnQgYnVmZmVyIHJvdXRpbmUuICovCiBVTklWX0lOTElORQog dm9pZAotaWJ1Zl9lbnRlcih2b2lkKQotLyo9PT09PT09PT09PT0qLworaWJ1Zl9lbnRlcigKKy8q PT09PT09PSovCisJbXRyX3QqCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8K IHsKLQlpYm9vbCoJcHRyOwotCi0JcHRyID0gdGhyX2xvY2FsX2dldF9pbl9pYnVmX2ZpZWxkKCk7 Ci0KLQl1dF9hZCgqcHRyID09IEZBTFNFKTsKLQotCSpwdHIgPSBUUlVFOworCXV0X2FkKCFtdHIt Pmluc2lkZV9pYnVmKTsKKwltdHItPmluc2lkZV9pYnVmID0gVFJVRTsKIH0KIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLVNldHMgdGhlIGZsYWcgaW4gdGhlIGN1cnJlbnQgT1MgdGhyZWFkIGxvY2FsIHN0b3Jh Z2UgZGVub3RpbmcgdGhhdCBpdCBpcworU2V0cyB0aGUgZmxhZyBpbiB0aGUgY3VycmVudCBtaW5p LXRyYW5zYWN0aW9uIHJlY29yZCBpbmRpY2F0aW5nIHdlJ3JlCiBleGl0aW5nIGFuIGluc2VydCBi dWZmZXIgcm91dGluZS4gKi8KIFVOSVZfSU5MSU5FCiB2b2lkCi1pYnVmX2V4aXQodm9pZCkKLS8q PT09PT09PT09PT0qLworaWJ1Zl9leGl0KAorLyo9PT09PT0qLworCW10cl90KgltdHIpCS8qITwg aW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7Ci0JaWJvb2wqCXB0cjsKLQotCXB0ciA9IHRo cl9sb2NhbF9nZXRfaW5faWJ1Zl9maWVsZCgpOwotCi0JdXRfYWQoKnB0ciA9PSBUUlVFKTsKLQot CSpwdHIgPSBGQUxTRTsKKwl1dF9hZChtdHItPmluc2lkZV9pYnVmKTsKKwltdHItPmluc2lkZV9p YnVmID0gRkFMU0U7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIFRSVUUgaWYgdGhlIGN1 cnJlbnQgT1MgdGhyZWFkIGlzIHBlcmZvcm1pbmcgYW4gaW5zZXJ0IGJ1ZmZlcgotcm91dGluZS4K LQotRm9yIGluc3RhbmNlLCBhIHJlYWQtYWhlYWQgb2Ygbm9uLWlidWYgcGFnZXMgaXMgZm9yYmlk ZGVuIGJ5IHRocmVhZHMKLXRoYXQgYXJlIGV4ZWN1dGluZyBhbiBpbnNlcnQgYnVmZmVyIHJvdXRp bmUuCi1AcmV0dXJuIFRSVUUgaWYgaW5zaWRlIGFuIGluc2VydCBidWZmZXIgcm91dGluZSAqLwot VU5JVl9JTlRFUk4KLWlib29sCi1pYnVmX2luc2lkZSh2b2lkKQotLyo9PT09PT09PT09PT09Ki8K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKK0NvbW1pdHMgYW4gaW5zZXJ0IGJ1ZmZlciBtaW5pLXRyYW5zYWN0aW9uIGFu ZCBzZXRzIHRoZSBwZXJzaXN0ZW50CitjdXJzb3IgbGF0Y2ggbW9kZSB0byBCVFJfTk9fTEFUQ0hF UywgdGhhdCBpcywgZGV0YWNoZXMgdGhlIGN1cnNvci4gKi8KK1VOSVZfSU5MSU5FCit2b2lkCitp YnVmX2J0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cigKKy8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLworCWJ0cl9wY3VyX3QqCXBjdXIsCS8qITwgaW4vb3V0OiBwZXJzaXN0ZW50IGN1 cnNvciAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwog ewotCXJldHVybigqdGhyX2xvY2FsX2dldF9pbl9pYnVmX2ZpZWxkKCkpOworCXV0X2QoaWJ1Zl9l eGl0KG10cikpOworCWJ0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOwogfQog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgpAQCAtMzc2LDExICszNjYsMTEgQEAgc3RhdGljCiBwYWdlX3QqCiBp YnVmX2hlYWRlcl9wYWdlX2dldCgKIC8qPT09PT09PT09PT09PT09PT0qLwotCW10cl90KgltdHIp CS8qITwgaW46IG10ciAqLworCW10cl90KgltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0 aW9uICovCiB7CiAJYnVmX2Jsb2NrX3QqCWJsb2NrOwogCi0JdXRfYWQoIWlidWZfaW5zaWRlKCkp OworCXV0X2FkKCFpYnVmX2luc2lkZShtdHIpKTsKIAogCWJsb2NrID0gYnVmX3BhZ2VfZ2V0KAog CQlJQlVGX1NQQUNFX0lELCAwLCBGU1BfSUJVRl9IRUFERVJfUEFHRV9OTywgUldfWF9MQVRDSCwg bXRyKTsKQEAgLTQwMSw3ICszOTEsNyBAQCBpYnVmX3RyZWVfcm9vdF9nZXQoCiAJYnVmX2Jsb2Nr X3QqCWJsb2NrOwogCXBhZ2VfdCoJCXJvb3Q7CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1 dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChtdXRleF9vd24oJmlidWZfbXV0ZXgpKTsK IAogCW10cl94X2xvY2soZGljdF9pbmRleF9nZXRfbG9jayhpYnVmLT5pbmRleCksIG10cik7CkBA IC01NDUsNyArNTM1LDcgQEAgaWJ1Zl9pbml0X2F0X2RiX3N0YXJ0KHZvaWQpCiAKIAlmc2VnX25f cmVzZXJ2ZWRfcGFnZXMoaGVhZGVyX3BhZ2UgKyBJQlVGX0hFQURFUiArIElCVUZfVFJFRV9TRUdf SEVBREVSLAogCQkJICAgICAgJm5fdXNlZCwgJm10cik7Ci0JaWJ1Zl9lbnRlcigpOworCWlidWZf ZW50ZXIoJm10cik7CiAKIAl1dF9hZChuX3VzZWQgPj0gMik7CiAKQEAgLTU2Niw5ICs1NTYsNyBA QCBpYnVmX2luaXRfYXRfZGJfc3RhcnQodm9pZCkKIAltdXRleF9leGl0KCZpYnVmX211dGV4KTsK IAogCWlidWYtPmVtcHR5ID0gKHBhZ2VfZ2V0X25fcmVjcyhyb290KSA9PSAwKTsKLQltdHJfY29t bWl0KCZtdHIpOwotCi0JaWJ1Zl9leGl0KCk7CisJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCiAJ aGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSg0NTApOwogCkBAIC02MDgsMTEgKzU5Niw5IEBAIGlidWZf bWF4X3NpemVfdXBkYXRlKAogewogCXVsaW50CW5ld19zaXplID0gKChidWZfcG9vbF9nZXRfY3Vy cl9zaXplKCkgLyBVTklWX1BBR0VfU0laRSkKIAkJCSAgICAqIG5ld192YWwpIC8gMTAwOwotCWli dWZfZW50ZXIoKTsKIAltdXRleF9lbnRlcigmaWJ1Zl9tdXRleCk7CiAJaWJ1Zi0+bWF4X3NpemUg PSBuZXdfc2l6ZTsKIAltdXRleF9leGl0KCZpYnVmX211dGV4KTsKLQlpYnVmX2V4aXQoKTsKIH0K IAogCkBAIC0xMjQ4LDE5ICsxMjM0LDMwIEBAIGlidWZfcGFnZV9sb3coCiAJcmV0dXJuKHJldCk7 CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBpYnVmX3JlY19nZXRfcGFnZV9ubyht dHIscmVjKSBpYnVmX3JlY19nZXRfcGFnZV9ub19mdW5jKG10cixyZWMpCisjZWxzZSAvKiBVTklW X0RFQlVHICovCisjIGRlZmluZSBpYnVmX3JlY19nZXRfcGFnZV9ubyhtdHIscmVjKSBpYnVmX3Jl Y19nZXRfcGFnZV9ub19mdW5jKHJlYykKKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFJldHVybnMgdGhlIHBhZ2UgbnVtYmVyIGZpZWxkIG9mIGFuIGlidWYgcmVj b3JkLgogQHJldHVybglwYWdlIG51bWJlciAqLwogc3RhdGljCiB1bGludAotaWJ1Zl9yZWNfZ2V0 X3BhZ2Vfbm8oCi0vKj09PT09PT09PT09PT09PT09Ki8KK2lidWZfcmVjX2dldF9wYWdlX25vX2Z1 bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT0qLworI2lmZGVmIFVOSVZfREVCVUcKKwltdHJf dCoJCW10ciwJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiBvd25pbmcgcmVjICovCisjZW5kaWYg LyogVU5JVl9ERUJVRyAqLwogCWNvbnN0IHJlY190KglyZWMpCS8qITwgaW46IGlidWYgcmVjb3Jk ICovCiB7CiAJY29uc3QgYnl0ZSoJZmllbGQ7CiAJdWxpbnQJCWxlbjsKIAotCXV0X2FkKGlidWZf aW5zaWRlKCkpOworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9N RU1PX1BBR0VfWF9GSVgpCisJICAgICAgfHwgbXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJl YywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOwogCXV0 X2FkKHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYykgPiAyKTsKIAogCWZpZWxkID0gcmVjX2dldF9u dGhfZmllbGRfb2xkKHJlYywgMSwgJmxlbik7CkBAIC0xMjgyLDIwICsxMjc5LDMxIEBAIGlidWZf cmVjX2dldF9wYWdlX25vKAogCXJldHVybihtYWNoX3JlYWRfZnJvbV80KGZpZWxkKSk7CiB9CiAK KyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBpYnVmX3JlY19nZXRfc3BhY2UobXRyLHJlYykg aWJ1Zl9yZWNfZ2V0X3NwYWNlX2Z1bmMobXRyLHJlYykKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8K KyMgZGVmaW5lIGlidWZfcmVjX2dldF9zcGFjZShtdHIscmVjKSBpYnVmX3JlY19nZXRfc3BhY2Vf ZnVuYyhyZWMpCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBS ZXR1cm5zIHRoZSBzcGFjZSBpZCBmaWVsZCBvZiBhbiBpYnVmIHJlY29yZC4gRm9yIDwgNC4xLngg Zm9ybWF0IHJlY29yZHMKIHJldHVybnMgMC4KIEByZXR1cm4Jc3BhY2UgaWQgKi8KIHN0YXRpYwog dWxpbnQKLWlidWZfcmVjX2dldF9zcGFjZSgKLS8qPT09PT09PT09PT09PT09Ki8KK2lidWZfcmVj X2dldF9zcGFjZV9mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9E RUJVRworCW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMg Ki8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3QqCXJlYykJLyohPCBpbjog aWJ1ZiByZWNvcmQgKi8KIHsKIAljb25zdCBieXRlKglmaWVsZDsKIAl1bGludAkJbGVuOwogCi0J dXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIs IHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19w YWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUo bXRyKSk7CiAJdXRfYWQocmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKSA+IDIpOwogCiAJZmllbGQg PSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAxLCAmbGVuKTsKQEAgLTEzMTYsMTIgKzEzMjQs MjIgQEAgaWJ1Zl9yZWNfZ2V0X3NwYWNlKAogCXJldHVybigwKTsKIH0KIAorI2lmZGVmIFVOSVZf REVCVUcKKyMgZGVmaW5lIGlidWZfcmVjX2dldF9pbmZvKG10cixyZWMsb3AsY29tcCxpbmZvX2xl bixjb3VudGVyKQlcCisJaWJ1Zl9yZWNfZ2V0X2luZm9fZnVuYyhtdHIscmVjLG9wLGNvbXAsaW5m b19sZW4sY291bnRlcikKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMgZGVmaW5lIGlidWZfcmVj X2dldF9pbmZvKG10cixyZWMsb3AsY29tcCxpbmZvX2xlbixjb3VudGVyKQlcCisJaWJ1Zl9yZWNf Z2V0X2luZm9fZnVuYyhyZWMsb3AsY29tcCxpbmZvX2xlbixjb3VudGVyKQorI2VuZGlmCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIEdldCB2YXJpb3VzIGluZm9ybWF0aW9uIGFib3V0IGFuIGlidWYgcmVjb3JkIGlu ID49IDQuMS54IGZvcm1hdC4gKi8KIHN0YXRpYwogdm9pZAotaWJ1Zl9yZWNfZ2V0X2luZm8oCi0v Kj09PT09PT09PT09PT09Ki8KK2lidWZfcmVjX2dldF9pbmZvX2Z1bmMoCisvKj09PT09PT09PT09 PT09PT09PT0qLworI2lmZGVmIFVOSVZfREVCVUcKKwltdHJfdCoJCW10ciwJLyohPCBpbjogbWlu aS10cmFuc2FjdGlvbiBvd25pbmcgcmVjICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCWNv bnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBpYnVmIHJlY29yZCAqLwogCWlidWZfb3BfdCoJb3As CQkvKiE8IG91dDogb3BlcmF0aW9uIHR5cGUsIG9yIE5VTEwgKi8KIAlpYm9vbCoJCWNvbXAsCQkv KiE8IG91dDogY29tcGFjdCBmbGFnLCBvciBOVUxMICovCkBAIC0xMzQwLDcgKzEzNTgsOSBAQCBp YnVmX3JlY19nZXRfaW5mbygKIAl1bGludAkJaW5mb19sZW5fbG9jYWw7CiAJdWxpbnQJCWNvdW50 ZXJfbG9jYWw7CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250 YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9t ZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKKwl1dF9h ZChpYnVmX2luc2lkZShtdHIpKTsKIAlmaWVsZHMgPSByZWNfZ2V0X25fZmllbGRzX29sZChyZWMp OwogCXV0X2EoZmllbGRzID4gNCk7CiAKQEAgLTEzODksMTggKzE0MDksMjkgQEAgaWJ1Zl9yZWNf Z2V0X2luZm8oCiAJfQogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9yZWNf Z2V0X29wX3R5cGUobXRyLHJlYykgaWJ1Zl9yZWNfZ2V0X29wX3R5cGVfZnVuYyhtdHIscmVjKQor I2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X29wX3R5cGUobXRy LHJlYykgaWJ1Zl9yZWNfZ2V0X29wX3R5cGVfZnVuYyhyZWMpCisjZW5kaWYKKwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBSZXR1cm5zIHRoZSBvcGVyYXRpb24gdHlwZSBmaWVsZCBvZiBhbiBpYnVmIHJlY29yZC4K IEByZXR1cm4Jb3BlcmF0aW9uIHR5cGUgKi8KIHN0YXRpYwogaWJ1Zl9vcF90Ci1pYnVmX3JlY19n ZXRfb3BfdHlwZSgKLS8qPT09PT09PT09PT09PT09PT0qLworaWJ1Zl9yZWNfZ2V0X29wX3R5cGVf ZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCW10 cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMgKi8KKyNlbmRp ZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3QqCXJlYykJLyohPCBpbjogaWJ1ZiByZWNv cmQgKi8KIHsKIAl1bGludAkJbGVuOwogCi0JdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQo bXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkg ICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1Nf RklYKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dldF9uX2ZpZWxk c19vbGQocmVjKSA+IDIpOwogCiAJKHZvaWQpIHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDEs ICZsZW4pOwpAQCAtMTQxMiw3ICsxNDQzLDcgQEAgaWJ1Zl9yZWNfZ2V0X29wX3R5cGUoCiAJfSBl bHNlIHsKIAkJaWJ1Zl9vcF90CW9wOwogCi0JCWlidWZfcmVjX2dldF9pbmZvKHJlYywgJm9wLCBO VUxMLCBOVUxMLCBOVUxMKTsKKwkJaWJ1Zl9yZWNfZ2V0X2luZm8obXRyLCByZWMsICZvcCwgTlVM TCwgTlVMTCwgTlVMTCk7CiAKIAkJcmV0dXJuKG9wKTsKIAl9CkBAIC0xNjExLDYgKzE2NDIsMTQg QEAgaWJ1Zl9idWlsZF9lbnRyeV9wcmVfNF8xX3goCiAJcmV0dXJuKHR1cGxlKTsKIH0KIAorI2lm ZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIGlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlYyht dHIsaWJ1Zl9yZWMsaGVhcCxwaW5kZXgpCVwKKwlpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9y ZWNfZnVuYyhtdHIsaWJ1Zl9yZWMsaGVhcCxwaW5kZXgpCisjZWxzZSAvKiBVTklWX0RFQlVHICov CisjIGRlZmluZSBpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWMobXRyLGlidWZfcmVjLGhl YXAscGluZGV4KQlcCisJaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjX2Z1bmMoaWJ1Zl9y ZWMsaGVhcCxwaW5kZXgpCisjZW5kaWYKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEJ1aWxkcyB0aGUg ZW50cnkgdXNlZCB0bwogCkBAIC0xNjI5LDggKzE2NjgsMTEgQEAgaG9sZCBhIGxhdGNoIHRvIHRo ZSBpYnVmX3JlYyBwYWdlIGFzIGxvbgogQHJldHVybiBvd246IGVudHJ5IHRvIGluc2VydCB0byBh IG5vbi1jbHVzdGVyZWQgaW5kZXggKi8KIHN0YXRpYwogZHR1cGxlX3QqCi1pYnVmX2J1aWxkX2Vu dHJ5X2Zyb21faWJ1Zl9yZWMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PSovCitpYnVm X2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWNfZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLworI2lmZGVmIFVOSVZfREVCVUcKKwltdHJfdCoJCW10ciwJLyohPCBpbjog bWluaS10cmFuc2FjdGlvbiBvd25pbmcgcmVjICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLwog CWNvbnN0IHJlY190KglpYnVmX3JlYywJLyohPCBpbjogcmVjb3JkIGluIGFuIGluc2VydCBidWZm ZXIgKi8KIAltZW1faGVhcF90KgloZWFwLAkJLyohPCBpbjogaGVhcCB3aGVyZSBidWlsdCAqLwog CWRpY3RfaW5kZXhfdCoqCXBpbmRleCkJCS8qITwgb3V0LCBvd246IGR1bW15IGluZGV4IHRoYXQK QEAgLTE2NDcsNiArMTY4OSwxMCBAQCBpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWMoCiAJ dWxpbnQJCWNvbXA7CiAJZGljdF9pbmRleF90KglpbmRleDsKIAorCXV0X2FkKG10cl9tZW1vX2Nv bnRhaW5zX3BhZ2UobXRyLCBpYnVmX3JlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8 fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgaWJ1Zl9yZWMsIE1UUl9NRU1PX1BBR0VfU19G SVgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKKwogCWRhdGEgPSByZWNfZ2V0X250aF9m aWVsZF9vbGQoaWJ1Zl9yZWMsIDEsICZsZW4pOwogCiAJaWYgKGxlbiA+IDEpIHsKQEAgLTE2Njcs NyArMTcxMyw3IEBAIGlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlYygKIAogCXR5cGVzID0g cmVjX2dldF9udGhfZmllbGRfb2xkKGlidWZfcmVjLCAzLCAmbGVuKTsKIAotCWlidWZfcmVjX2dl dF9pbmZvKGlidWZfcmVjLCBOVUxMLCAmY29tcCwgJmluZm9fbGVuLCBOVUxMKTsKKwlpYnVmX3Jl Y19nZXRfaW5mbyhtdHIsIGlidWZfcmVjLCBOVUxMLCAmY29tcCwgJmluZm9fbGVuLCBOVUxMKTsK IAogCWluZGV4ID0gaWJ1Zl9kdW1teV9pbmRleF9jcmVhdGUobl9maWVsZHMsIGNvbXApOwogCkBA IC0xNzU0LDYgKzE4MDAsMTIgQEAgaWJ1Zl9yZWNfZ2V0X3NpemUoCiAJcmV0dXJuKHNpemUpOwog fQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X3ZvbHVtZShtdHIs cmVjKSBpYnVmX3JlY19nZXRfdm9sdW1lX2Z1bmMobXRyLHJlYykKKyNlbHNlIC8qIFVOSVZfREVC VUcgKi8KKyMgZGVmaW5lIGlidWZfcmVjX2dldF92b2x1bWUobXRyLHJlYykgaWJ1Zl9yZWNfZ2V0 X3ZvbHVtZV9mdW5jKHJlYykKKyNlbmRpZgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIHRo ZSBzcGFjZSB0YWtlbiBieSBhIHN0b3JlZCBub24tY2x1c3RlcmVkIGluZGV4IGVudHJ5IGlmIGNv bnZlcnRlZCB0bwogYW4gaW5kZXggcmVjb3JkLgpAQCAtMTc2MSw4ICsxODEzLDExIEBAIGFuIGlu ZGV4IHJlY29yZC4KIHRha2VuIGluIHRoZSBwYWdlIGRpcmVjdG9yeSAqLwogc3RhdGljCiB1bGlu dAotaWJ1Zl9yZWNfZ2V0X3ZvbHVtZSgKLS8qPT09PT09PT09PT09PT09PSovCitpYnVmX3JlY19n ZXRfdm9sdW1lX2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9E RUJVRworCW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMg Ki8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3QqCWlidWZfcmVjKS8qITwg aW46IGlidWYgcmVjb3JkICovCiB7CiAJdWxpbnQJCWxlbjsKQEAgLTE3NzMsNyArMTgyOCw5IEBA IGlidWZfcmVjX2dldF92b2x1bWUoCiAJaWJvb2wJCXByZV80XzE7CiAJdWxpbnQJCWNvbXA7CiAK LQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10 ciwgaWJ1Zl9yZWMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpCisJICAgICAgfHwgbXRyX21lbW9fY29u dGFpbnNfcGFnZShtdHIsIGlidWZfcmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CisJdXRfYWQo aWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dldF9uX2ZpZWxkc19vbGQoaWJ1Zl9yZWMp ID4gMik7CiAKIAlkYXRhID0gcmVjX2dldF9udGhfZmllbGRfb2xkKGlidWZfcmVjLCAxLCAmbGVu KTsKQEAgLTE4MDEsNyArMTg1OCw3IEBAIGlidWZfcmVjX2dldF92b2x1bWUoCiAKIAkJdHlwZXMg PSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIDMsICZsZW4pOwogCi0JCWlidWZfcmVj X2dldF9pbmZvKGlidWZfcmVjLCAmb3AsICZjb21wLCAmaW5mb19sZW4sIE5VTEwpOworCQlpYnVm X3JlY19nZXRfaW5mbyhtdHIsIGlidWZfcmVjLCAmb3AsICZjb21wLCAmaW5mb19sZW4sIE5VTEwp OwogCiAJCWlmIChvcCA9PSBJQlVGX09QX0RFTEVURV9NQVJLIHx8IG9wID09IElCVUZfT1BfREVM RVRFKSB7CiAJCQkvKiBEZWxldGUtbWFya2luZyBhIHJlY29yZCBkb2Vzbid0IHRha2UgYW55CkBA IC0xODE4LDcgKzE4NzUsNyBAQCBpYnVmX3JlY19nZXRfdm9sdW1lKAogCQkJbWVtX2hlYXBfdCoJ aGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSg1MDApOwogCiAJCQllbnRyeSA9IGlidWZfYnVpbGRfZW50 cnlfZnJvbV9pYnVmX3JlYygKLQkJCQlpYnVmX3JlYywgaGVhcCwgJmR1bW15X2luZGV4KTsKKwkJ CQltdHIsIGlidWZfcmVjLCBoZWFwLCAmZHVtbXlfaW5kZXgpOwogCiAJCQl2b2x1bWUgPSByZWNf Z2V0X2NvbnZlcnRlZF9zaXplKGR1bW15X2luZGV4LCBlbnRyeSwgMCk7CiAKQEAgLTIxNzYsMjEg KzIyMzMsMTUgQEAgaWJ1Zl9hZGRfZnJlZV9wYWdlKHZvaWQpCiAJCW10cl9jb21taXQoJm10cik7 CiAKIAkJcmV0dXJuKEZBTFNFKTsKLQl9Ci0KLQl7Ci0JCWJ1Zl9ibG9ja190KglibG9jazsKLQot CQlibG9jayA9IGJ1Zl9wYWdlX2dldCgKKwl9IGVsc2UgeworCQlidWZfYmxvY2tfdCoJYmxvY2sg PSBidWZfcGFnZV9nZXQoCiAJCQlJQlVGX1NQQUNFX0lELCAwLCBwYWdlX25vLCBSV19YX0xBVENI LCAmbXRyKTsKLQogCQlidWZfYmxvY2tfZGJnX2FkZF9sZXZlbChibG9jaywgU1lOQ19UUkVFX05P REVfTkVXKTsKIAotCiAJCXBhZ2UgPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKTsKIAl9CiAK LQlpYnVmX2VudGVyKCk7CisJaWJ1Zl9lbnRlcigmbXRyKTsKIAogCW11dGV4X2VudGVyKCZpYnVm X211dGV4KTsKIApAQCAtMjIxOCw5ICsyMjY5LDcgQEAgaWJ1Zl9hZGRfZnJlZV9wYWdlKHZvaWQp CiAJaWJ1Zl9iaXRtYXBfcGFnZV9zZXRfYml0cygKIAkJYml0bWFwX3BhZ2UsIHBhZ2Vfbm8sIHpp cF9zaXplLCBJQlVGX0JJVE1BUF9JQlVGLCBUUlVFLCAmbXRyKTsKIAotCW10cl9jb21taXQoJm10 cik7Ci0KLQlpYnVmX2V4aXQoKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAKIAlyZXR1cm4o VFJVRSk7CiB9CkBAIC0yMjUyLDcgKzIzMDEsNyBAQCBpYnVmX3JlbW92ZV9mcmVlX3BhZ2Uodm9p ZCkKIAloZWFkZXJfcGFnZSA9IGlidWZfaGVhZGVyX3BhZ2VfZ2V0KCZtdHIpOwogCiAJLyogUHJl dmVudCBwZXNzaW1pc3RpYyBpbnNlcnRzIHRvIGluc2VydCBidWZmZXIgdHJlZXMgZm9yIGEgd2hp bGUgKi8KLQlpYnVmX2VudGVyKCk7CisJaWJ1Zl9lbnRlcigmbXRyKTsKIAltdXRleF9lbnRlcigm aWJ1Zl9wZXNzaW1pc3RpY19pbnNlcnRfbXV0ZXgpOwogCW11dGV4X2VudGVyKCZpYnVmX211dGV4 KTsKIApAQCAtMjI2MSwxNCArMjMxMCwxMiBAQCBpYnVmX3JlbW92ZV9mcmVlX3BhZ2Uodm9pZCkK IAkJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7CiAJCW11dGV4X2V4aXQoJmlidWZfcGVzc2ltaXN0 aWNfaW5zZXJ0X211dGV4KTsKIAotCQlpYnVmX2V4aXQoKTsKLQotCQltdHJfY29tbWl0KCZtdHIp OworCQlpYnVmX210cl9jb21taXQoJm10cik7CiAKIAkJcmV0dXJuOwogCX0KIAotCW10cl9zdGFy dCgmbXRyMik7CisJaWJ1Zl9tdHJfc3RhcnQoJm10cjIpOwogCiAJcm9vdCA9IGlidWZfdHJlZV9y b290X2dldCgmbXRyMik7CiAKQEAgLTIyODEsOSArMjMyOCw4IEBAIGlidWZfcmVtb3ZlX2ZyZWVf cGFnZSh2b2lkKQogCWJlY2F1c2UgaW4gZnNlZ19mcmVlX3BhZ2Ugd2UgYWNjZXNzIGxldmVsIDEg cGFnZXMsIGFuZCB0aGUgcm9vdAogCWlzIGEgbGV2ZWwgMiBwYWdlLiAqLwogCi0JbXRyX2NvbW1p dCgmbXRyMik7Ci0KLQlpYnVmX2V4aXQoKTsKKwlpYnVmX210cl9jb21taXQoJm10cjIpOworCWli dWZfZXhpdCgmbXRyKTsKIAogCS8qIFNpbmNlIHBlc3NpbWlzdGljIGluc2VydHMgd2VyZSBwcmV2 ZW50ZWQsIHdlIGtub3cgdGhhdCB0aGUKIAlwYWdlIGlzIHN0aWxsIGluIHRoZSBmcmVlIGxpc3Qu IE5PVEUgdGhhdCBhbHNvIGRlbGV0ZXMgbWF5IHRha2UKQEAgLTIyOTgsNyArMjM0NCw3IEBAIGli dWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCWJ1Zl9wYWdlX3Jlc2V0X2ZpbGVfcGFnZV93YXNf ZnJlZWQoSUJVRl9TUEFDRV9JRCwgcGFnZV9ubyk7CiAjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIAotCWlidWZfZW50ZXIoKTsKKwlpYnVmX2VudGVy KCZtdHIpOwogCiAJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCkBAIC0yMzQzLDkgKzIzODks NyBAQCBpYnVmX3JlbW92ZV9mcmVlX3BhZ2Uodm9pZCkKICNpZiBkZWZpbmVkIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfcGFnZV9zZXRfZmlsZV9w YWdlX3dhc19mcmVlZChJQlVGX1NQQUNFX0lELCBwYWdlX25vKTsKICNlbmRpZiAvKiBVTklWX0RF QlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwotCW10cl9jb21taXQoJm10cik7Ci0K LQlpYnVmX2V4aXQoKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKQEAgLTIzNjcsOCArMjQxMSw2IEBAIGlidWZfZnJlZV9leGNlc3NfcGFnZXModm9p ZCkKIAl1dF9hZChyd19sb2NrX2dldF94X2xvY2tfY291bnQoCiAJCWZpbF9zcGFjZV9nZXRfbGF0 Y2goSUJVRl9TUEFDRV9JRCwgTlVMTCkpID09IDEpOwogCi0JdXRfYWQoIWlidWZfaW5zaWRlKCkp OwotCiAJLyogTk9URTogV2UgcmVxdWlyZSB0aGF0IHRoZSB0aHJlYWQgZGlkIG5vdCBvd24gdGhl IGxhdGNoIGJlZm9yZSwKIAliZWNhdXNlIHRoZW4gd2Uga25vdyB0aGF0IHdlIGNhbiBvYmV5IHRo ZSBjb3JyZWN0IGxhdGNoaW5nIG9yZGVyCiAJZm9yIGlidWYgbGF0Y2hlcyAqLwpAQCAtMjM5OSwy MCArMjQ0MSwzMCBAQCBpYnVmX2ZyZWVfZXhjZXNzX3BhZ2VzKHZvaWQpCiAJfQogfQogCisjaWZk ZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoY29udHJhY3Qs cmVjLG10cixpZHMsdmVycyxwYWdlcyxuX3N0b3JlZCkgXAorCWlidWZfZ2V0X21lcmdlX3BhZ2Vf bm9zX2Z1bmMoY29udHJhY3QscmVjLG10cixpZHMsdmVycyxwYWdlcyxuX3N0b3JlZCkKKyNlbHNl IC8qIFVOSVZfREVCVUcgKi8KKyMgZGVmaW5lIGlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKGNvbnRy YWN0LHJlYyxtdHIsaWRzLHZlcnMscGFnZXMsbl9zdG9yZWQpIFwKKwlpYnVmX2dldF9tZXJnZV9w YWdlX25vc19mdW5jKGNvbnRyYWN0LHJlYyxpZHMsdmVycyxwYWdlcyxuX3N0b3JlZCkKKyNlbmRp ZiAvKiBVTklWX0RFQlVHICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZWFkcyBwYWdlIG51bWJl cnMgZnJvbSBhIGxlYWYgaW4gYW4gaWJ1ZiB0cmVlLgogQHJldHVybiBhIGxvd2VyIGxpbWl0IGZv ciB0aGUgY29tYmluZWQgdm9sdW1lIG9mIHJlY29yZHMgd2hpY2ggd2lsbCBiZQogbWVyZ2VkICov CiBzdGF0aWMKIHVsaW50Ci1pYnVmX2dldF9tZXJnZV9wYWdlX25vcygKLS8qPT09PT09PT09PT09 PT09PT09PT0qLworaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3NfZnVuYygKKy8qPT09PT09PT09PT09 PT09PT09PT09PT09PSovCiAJaWJvb2wJCWNvbnRyYWN0LC8qITwgaW46IFRSVUUgaWYgdGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQgdG8KIAkJCQljb250cmFjdCB0aGUgdHJlZSwgRkFMU0UgaWYgdGhp cyBpcyBjYWxsZWQKIAkJCQl3aGVuIGEgc2luZ2xlIHBhZ2UgYmVjb21lcyBmdWxsIGFuZCB3ZSBs b29rCiAJCQkJaWYgaXQgcGF5cyB0byByZWFkIGFsc28gbmVhcmJ5IHBhZ2VzICovCi0JcmVjX3Qq CQlyZWMsCS8qITwgaW46IHJlY29yZCBmcm9tIHdoaWNoIHdlIHJlYWQgdXAgYW5kIGRvd24KLQkJ CQlpbiB0aGUgY2hhaW4gb2YgcmVjb3JkcyAqLworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46 IGluc2VydCBidWZmZXIgcmVjb3JkICovCisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRy LAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIGhvbGRpbmcgcmVjICovCisjZW5kaWYgLyogVU5J Vl9ERUJVRyAqLwogCXVsaW50KgkJc3BhY2VfaWRzLC8qITwgaW4vb3V0OiBzcGFjZSBpZCdzIG9m IHRoZSBwYWdlcyAqLwogCWliX2ludDY0X3QqCXNwYWNlX3ZlcnNpb25zLC8qITwgaW4vb3V0OiB0 YWJsZXNwYWNlIHZlcnNpb24KIAkJCQl0aW1lc3RhbXBzOyB1c2VkIHRvIHByZXZlbnQgcmVhZGlu ZyBpbiBvbGQKQEAgLTI0MzUsMTggKzI0ODcsMjIgQEAgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3Mo CiAJdWxpbnQJbGltaXQ7CiAJdWxpbnQJbl9wYWdlczsKIAorCXV0X2FkKG10cl9tZW1vX2NvbnRh aW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpCisJICAgICAgfHwgbXRyX21l bW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOworCXV0X2Fk KGlidWZfaW5zaWRlKG10cikpOworCiAJKm5fc3RvcmVkID0gMDsKIAogCWxpbWl0ID0gdXRfbWlu KElCVUZfTUFYX05fUEFHRVNfTUVSR0VELCBidWZfcG9vbF9nZXRfY3Vycl9zaXplKCkgLyA0KTsK IAogCWlmIChwYWdlX3JlY19pc19zdXByZW11bShyZWMpKSB7CiAKLQkJcmVjID0gcGFnZV9yZWNf Z2V0X3ByZXYocmVjKTsKKwkJcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXZfY29uc3QocmVjKTsKIAl9 CiAKIAlpZiAocGFnZV9yZWNfaXNfaW5maW11bShyZWMpKSB7CiAKLQkJcmVjID0gcGFnZV9yZWNf Z2V0X25leHQocmVjKTsKKwkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHRfY29uc3QocmVjKTsKIAl9 CiAKIAlpZiAocGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgewpAQCAtMjQ1NCw4ICsyNTEwLDgg QEAgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoCiAJCXJldHVybigwKTsKIAl9CiAKLQlmaXJzdF9w YWdlX25vID0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8ocmVjKTsKLQlmaXJzdF9zcGFjZV9pZCA9IGli dWZfcmVjX2dldF9zcGFjZShyZWMpOworCWZpcnN0X3BhZ2Vfbm8gPSBpYnVmX3JlY19nZXRfcGFn ZV9ubyhtdHIsIHJlYyk7CisJZmlyc3Rfc3BhY2VfaWQgPSBpYnVmX3JlY19nZXRfc3BhY2UobXRy LCByZWMpOwogCW5fcGFnZXMgPSAwOwogCXByZXZfcGFnZV9ubyA9IDA7CiAJcHJldl9zcGFjZV9p ZCA9IDA7CkBAIC0yNDY2LDggKzI1MjIsOCBAQCBpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKIAog CXdoaWxlICghcGFnZV9yZWNfaXNfaW5maW11bShyZWMpICYmIFVOSVZfTElLRUxZKG5fcGFnZXMg PCBsaW1pdCkpIHsKIAotCQlyZWNfcGFnZV9ubyA9IGlidWZfcmVjX2dldF9wYWdlX25vKHJlYyk7 Ci0JCXJlY19zcGFjZV9pZCA9IGlidWZfcmVjX2dldF9zcGFjZShyZWMpOworCQlyZWNfcGFnZV9u byA9IGlidWZfcmVjX2dldF9wYWdlX25vKG10ciwgcmVjKTsKKwkJcmVjX3NwYWNlX2lkID0gaWJ1 Zl9yZWNfZ2V0X3NwYWNlKG10ciwgcmVjKTsKIAogCQlpZiAocmVjX3NwYWNlX2lkICE9IGZpcnN0 X3NwYWNlX2lkCiAJCSAgICB8fCAocmVjX3BhZ2Vfbm8gLyBJQlVGX01FUkdFX0FSRUEpCkBAIC0y NDg0LDEwICsyNTQwLDEwIEBAIGlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKAogCQlwcmV2X3BhZ2Vf bm8gPSByZWNfcGFnZV9ubzsKIAkJcHJldl9zcGFjZV9pZCA9IHJlY19zcGFjZV9pZDsKIAotCQly ZWMgPSBwYWdlX3JlY19nZXRfcHJldihyZWMpOworCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldl9j b25zdChyZWMpOwogCX0KIAotCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KHJlYyk7CisJcmVjID0g cGFnZV9yZWNfZ2V0X25leHRfY29uc3QocmVjKTsKIAogCS8qIEF0IHRoZSBsb29wIHN0YXJ0IHRo ZXJlIGlzIG5vIHByZXYgcGFnZTsgd2UgbWFyayB0aGlzIHdpdGggYSBwYWlyCiAJb2Ygc3BhY2Ug aWQsIHBhZ2Ugbm8gKDAsIDApIGZvciB3aGljaCB0aGVyZSBjYW4gbmV2ZXIgYmUgZW50cmllcyBp bgpAQCAtMjUwNSw4ICsyNTYxLDggQEAgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoCiAJCQlyZWNf cGFnZV9ubyA9IDE7CiAJCQlyZWNfc3BhY2VfaWQgPSAwOwogCQl9IGVsc2UgewotCQkJcmVjX3Bh Z2Vfbm8gPSBpYnVmX3JlY19nZXRfcGFnZV9ubyhyZWMpOwotCQkJcmVjX3NwYWNlX2lkID0gaWJ1 Zl9yZWNfZ2V0X3NwYWNlKHJlYyk7CisJCQlyZWNfcGFnZV9ubyA9IGlidWZfcmVjX2dldF9wYWdl X25vKG10ciwgcmVjKTsKKwkJCXJlY19zcGFjZV9pZCA9IGlidWZfcmVjX2dldF9zcGFjZShtdHIs IHJlYyk7CiAJCQl1dF9hZChyZWNfcGFnZV9ubyA+IElCVUZfVFJFRV9ST09UX1BBR0VfTk8pOwog CQl9CiAKQEAgLTI1MTcsOSArMjU3Myw5IEBAIGlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKAogCQkg ICAgIHx8IHJlY19wYWdlX25vICE9IHByZXZfcGFnZV9ubykKIAkJICAgICYmIChwcmV2X3NwYWNl X2lkICE9IDAgfHwgcHJldl9wYWdlX25vICE9IDApKSB7CiAKLQkJCWlmICgocHJldl9wYWdlX25v ID09IGZpcnN0X3BhZ2Vfbm8KLQkJCSAgICAgJiYgcHJldl9zcGFjZV9pZCA9PSBmaXJzdF9zcGFj ZV9pZCkKLQkJCSAgICB8fCBjb250cmFjdAorCQkJaWYgKGNvbnRyYWN0CisJCQkgICAgfHwgKHBy ZXZfcGFnZV9ubyA9PSBmaXJzdF9wYWdlX25vCisJCQkJJiYgcHJldl9zcGFjZV9pZCA9PSBmaXJz dF9zcGFjZV9pZCkKIAkJCSAgICB8fCAodm9sdW1lX2Zvcl9wYWdlCiAJCQkJPiAoKElCVUZfTUVS R0VfVEhSRVNIT0xEIC0gMSkKIAkJCQkgICAqIDQgKiBVTklWX1BBR0VfU0laRQpAQCAtMjU1Miwx NCArMjYwOCwxNCBAQCBpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKIAkJCWJyZWFrOwogCQl9CiAK LQkJcmVjX3ZvbHVtZSA9IGlidWZfcmVjX2dldF92b2x1bWUocmVjKTsKKwkJcmVjX3ZvbHVtZSA9 IGlidWZfcmVjX2dldF92b2x1bWUobXRyLCByZWMpOwogCiAJCXZvbHVtZV9mb3JfcGFnZSArPSBy ZWNfdm9sdW1lOwogCiAJCXByZXZfcGFnZV9ubyA9IHJlY19wYWdlX25vOwogCQlwcmV2X3NwYWNl X2lkID0gcmVjX3NwYWNlX2lkOwogCi0JCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KHJlYyk7CisJ CXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0X2NvbnN0KHJlYyk7CiAJfQogCiAjaWZkZWYgVU5JVl9J QlVGX0RFQlVHCkBAIC0yNTk0LDcgKzI2NTAsNiBAQCBpYnVmX2NvbnRyYWN0X2V4dCgKIAltdHJf dAkJbXRyOwogCiAJKm5fcGFnZXMgPSAwOwotCXV0X2FkKCFpYnVmX2luc2lkZSgpKTsKIAogCS8q IFdlIHBlcmZvcm0gYSBkaXJ0eSByZWFkIG9mIGlidWYtPmVtcHR5LCB3aXRob3V0IGxhdGNoaW5n CiAJdGhlIGluc2VydCBidWZmZXIgcm9vdCBwYWdlLiBXZSB0cnVzdCB0aGlzIGRpcnR5IHJlYWQg ZXhjZXB0CkBAIC0yNjA2LDkgKzI2NjEsNyBAQCBpYnVmX2NvbnRyYWN0X2V4dCgKIAkJcmV0dXJu KDApOwogCX0KIAotCW10cl9zdGFydCgmbXRyKTsKLQotCWlidWZfZW50ZXIoKTsKKwlpYnVmX210 cl9zdGFydCgmbXRyKTsKIAogCS8qIE9wZW4gYSBjdXJzb3IgdG8gYSByYW5kb21seSBjaG9zZW4g bGVhZiBvZiB0aGUgdHJlZSwgYXQgYSByYW5kb20KIAlwb3NpdGlvbiB3aXRoaW4gdGhlIGxlYWYg Ki8KQEAgLTI2MjcsMjQgKzI2ODAsMjEgQEAgaWJ1Zl9jb250cmFjdF9leHQoCiAJCXV0X2FkKHBh Z2VfZ2V0X3BhZ2Vfbm8oYnRyX3BjdXJfZ2V0X3BhZ2UoJnBjdXIpKQogCQkgICAgICA9PSBGU1Bf SUJVRl9UUkVFX1JPT1RfUEFHRV9OTyk7CiAKLQkJaWJ1Zl9leGl0KCk7Ci0KLQkJbXRyX2NvbW1p dCgmbXRyKTsKKwkJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCQlidHJfcGN1cl9jbG9zZSgmcGN1 cik7CiAKIAkJcmV0dXJuKDApOwogCX0KIAotCXN1bV9zaXplcyA9IGlidWZfZ2V0X21lcmdlX3Bh Z2Vfbm9zKFRSVUUsIGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLAorCXN1bV9zaXplcyA9IGlidWZf Z2V0X21lcmdlX3BhZ2Vfbm9zKFRSVUUsCisJCQkJCSAgICBidHJfcGN1cl9nZXRfcmVjKCZwY3Vy KSwgJm10ciwKIAkJCQkJICAgIHNwYWNlX2lkcywgc3BhY2VfdmVyc2lvbnMsCiAJCQkJCSAgICBw YWdlX25vcywgbl9wYWdlcyk7CiAjaWYgMCAvKiBkZWZpbmVkIFVOSVZfSUJVRl9ERUJVRyAqLwog CWZwcmludGYoc3RkZXJyLCAiSWJ1ZiBjb250cmFjdCBzeW5jICVsdSBwYWdlcyAlbHUgdm9sdW1l ICVsdVxuIiwKIAkJc3luYywgKm5fcGFnZXMsIHN1bV9zaXplcyk7CiAjZW5kaWYKLQlpYnVmX2V4 aXQoKTsKLQotCW10cl9jb21taXQoJm10cik7CisJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCWJ0 cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAogCWJ1Zl9yZWFkX2lidWZfbWVyZ2VfcGFnZXMoc3luYywg c3BhY2VfaWRzLCBzcGFjZV92ZXJzaW9ucywgcGFnZV9ub3MsCkBAIC0yNjk1LDEzICsyNzQ1LDEx IEBAIGlidWZfY29udHJhY3RfaW5fYmFja2dyb3VuZCgKIAkJLyogQ2FsbGVyIGhhcyByZXF1ZXN0 ZWQgYSBmdWxsIGJhdGNoICovCiAJCW5fcGFnZXMgPSBQQ1RfSU8oMTAwKTsKIAl9IGVsc2Ugewot Ci0JCWlidWZfZW50ZXIoKTsKLQkJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwotCiAJCS8qIEJ5 IGRlZmF1bHQgd2UgZG8gYSBiYXRjaCBvZiA1JSBvZiB0aGUgaW9fY2FwYWNpdHkgKi8KIAkJbl9w YWdlcyA9IFBDVF9JTyg1KTsKIAorCQltdXRleF9lbnRlcigmaWJ1Zl9tdXRleCk7CisKIAkJLyog SWYgdGhlIGlidWYtPnNpemUgaXMgbW9yZSB0aGFuIGhhbGYgdGhlIG1heF9zaXplCiAJCXRoZW4g d2UgbWFrZSBtb3JlIGFncmVlc2l2ZSBjb250cmFjdGlvbi4KIAkJKzEgaXMgdG8gYXZvaWQgZGl2 aXNpb24gYnkgemVyby4gKi8KQEAgLTI3MTIsNyArMjc2MCw2IEBAIGlidWZfY29udHJhY3RfaW5f YmFja2dyb3VuZCgKIAkJfQogCiAJCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwotCQlpYnVmX2V4 aXQoKTsKIAl9CiAKIAl3aGlsZSAoc3VtX3BhZ2VzIDwgbl9wYWdlcykgewpAQCAtMjgwNyw2ICsy ODU0LDEzIEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9oYXNoKAogCXJldHVybihUUlVFKTsK IH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJl ZF9jb3VudChtdHIscmVjLGhhc2gsc2l6ZSxuX3JlY3MpCVwKKwlpYnVmX2dldF92b2x1bWVfYnVm ZmVyZWRfY291bnRfZnVuYyhtdHIscmVjLGhhc2gsc2l6ZSxuX3JlY3MpCisjZWxzZSAvKiBVTklW X0RFQlVHICovCisjIGRlZmluZSBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnQobXRyLHJl YyxoYXNoLHNpemUsbl9yZWNzKQlcCisJaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50X2Z1 bmMocmVjLGhhc2gsc2l6ZSxuX3JlY3MpCisjZW5kaWYKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBVcGRh dGUgdGhlIGVzdGltYXRlIG9mIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBvbiBhIHBhZ2UsIGFuZAog Z2V0IHRoZSBzcGFjZSB0YWtlbiBieSBtZXJnaW5nIHRoZSBidWZmZXJlZCByZWNvcmQgdG8gdGhl IGluZGV4IHBhZ2UuCkBAIC0yODE0LDggKzI4NjgsMTEgQEAgZ2V0IHRoZSBzcGFjZSB0YWtlbiBi eSBtZXJnaW5nIHRoZSBidWZmZQogdGFrZW4gaW4gdGhlIHBhZ2UgZGlyZWN0b3J5ICovCiBzdGF0 aWMKIHVsaW50Ci1pYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnQoCi0vKj09PT09PT09PT09 PT09PT09PT09PT09PT09PSovCitpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnRfZnVuYygK Ky8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworI2lmZGVmIFVOSVZfREVCVUcK KwltdHJfdCoJCW10ciwJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiBvd25pbmcgcmVjICovCisj ZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IGluc2Vy dCBidWZmZXIgcmVjb3JkICovCiAJdWxpbnQqCQloYXNoLAkvKiE8IGluL291dDogaGFzaCBhcnJh eSAqLwogCXVsaW50CQlzaXplLAkvKiE8IGluOiBudW1iZXIgb2YgZWxlbWVudHMgaW4gaGFzaCBh cnJheSAqLwpAQCAtMjgyNSw5ICsyODgyLDEzIEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9j b3VudCgKIAl1bGludAkJbGVuOwogCWlidWZfb3BfdAlpYnVmX29wOwogCWNvbnN0IGJ5dGUqCXR5 cGVzOwotCXVsaW50CQluX2ZpZWxkcwk9IHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYyk7CisJdWxp bnQJCW5fZmllbGRzOwogCi0JdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQobXRyX21lbW9f Y29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8fCBt dHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CisJ dXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CisKKwluX2ZpZWxkcyA9IHJlY19nZXRfbl9maWVsZHNf b2xkKHJlYyk7CiAJdXRfYWQobl9maWVsZHMgPiA0KTsKIAluX2ZpZWxkcyAtPSA0OwogCkBAIC0y OTEyLDcgKzI5NzMsNyBAQCBnZXRfdm9sdW1lX2NvbXA6CiAJCW1lbV9oZWFwX3QqCWhlYXAgPSBt ZW1faGVhcF9jcmVhdGUoNTAwKTsKIAogCQllbnRyeSA9IGlidWZfYnVpbGRfZW50cnlfZnJvbV9p YnVmX3JlYygKLQkJCXJlYywgaGVhcCwgJmR1bW15X2luZGV4KTsKKwkJCW10ciwgcmVjLCBoZWFw LCAmZHVtbXlfaW5kZXgpOwogCiAJCXZvbHVtZSA9IHJlY19nZXRfY29udmVydGVkX3NpemUoZHVt bXlfaW5kZXgsIGVudHJ5LCAwKTsKIApAQCAtMjkzMyw3ICsyOTk0LDcgQEAgc3RhdGljCiB1bGlu dAogaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkKAogLyo9PT09PT09PT09PT09PT09PT09PT0qLwot CWJ0cl9wY3VyX3QqCXBjdXIsCS8qITwgaW46IHBjdXIgcG9zaXRpb25lZCBhdCBhIHBsYWNlIGlu IGFuCisJY29uc3QgYnRyX3BjdXJfdCpwY3VyLAkvKiE8IGluOiBwY3VyIHBvc2l0aW9uZWQgYXQg YSBwbGFjZSBpbiBhbgogCQkJCWluc2VydCBidWZmZXIgdHJlZSB3aGVyZSB3ZSB3b3VsZCBpbnNl cnQgYW4KIAkJCQllbnRyeSBmb3IgdGhlIGluZGV4IHBhZ2Ugd2hvc2UgbnVtYmVyIGlzCiAJCQkJ cGFnZV9ubywgbGF0Y2ggbW9kZSBoYXMgdG8gYmUgQlRSX01PRElGWV9QUkVWCkBAIC0yOTQzLDE2 ICszMDA0LDE3IEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZCgKIAlsaW50KgkJbl9yZWNzLAkv KiE8IGluL291dDogbWluaW11bSBudW1iZXIgb2YgcmVjb3JkcyBvbiB0aGUKIAkJCQlwYWdlIGFm dGVyIHRoZSBidWZmZXJlZCBjaGFuZ2VzIGhhdmUgYmVlbgogCQkJCWFwcGxpZWQsIG9yIE5VTEwg dG8gZGlzYWJsZSB0aGUgY291bnRpbmcgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICov CisJbXRyX3QqCQltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gb2YgcGN1ciAqLwogewot CXVsaW50CXZvbHVtZTsKLQlyZWNfdCoJcmVjOwotCXBhZ2VfdCoJcGFnZTsKLQl1bGludAlwcmV2 X3BhZ2Vfbm87Ci0JcGFnZV90KglwcmV2X3BhZ2U7Ci0JdWxpbnQJbmV4dF9wYWdlX25vOwotCXBh Z2VfdCoJbmV4dF9wYWdlOwotCXVsaW50CWhhc2hfYml0bWFwWzEyOCAvIHNpemVvZih1bGludCld OyAvKiBiaXRtYXAgb2YgYnVmZmVyZWQgcmVjcyAqLworCXVsaW50CQl2b2x1bWU7CisJY29uc3Qg cmVjX3QqCXJlYzsKKwljb25zdCBwYWdlX3QqCXBhZ2U7CisJdWxpbnQJCXByZXZfcGFnZV9ubzsK Kwljb25zdCBwYWdlX3QqCXByZXZfcGFnZTsKKwl1bGludAkJbmV4dF9wYWdlX25vOworCWNvbnN0 IHBhZ2VfdCoJbmV4dF9wYWdlOworCS8qIGJpdG1hcCBvZiBidWZmZXJlZCByZWNzICovCisJdWxp bnQJCWhhc2hfYml0bWFwWzEyOCAvIHNpemVvZih1bGludCldOwogCiAJdXRfYSh0cnhfc3lzX211 bHRpcGxlX3RhYmxlc3BhY2VfZm9ybWF0KTsKIApAQCAtMjk3MywyNiArMzAzNSwyMiBAQCBpYnVm X2dldF92b2x1bWVfYnVmZmVyZWQoCiAJdXRfYWQocGFnZV92YWxpZGF0ZShwYWdlLCBpYnVmLT5p bmRleCkpOwogCiAJaWYgKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYykpIHsKLQkJcmVjID0gcGFn ZV9yZWNfZ2V0X3ByZXYocmVjKTsKKwkJcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXZfY29uc3QocmVj KTsKIAl9CiAKLQlmb3IgKDs7KSB7Ci0JCWlmIChwYWdlX3JlY19pc19pbmZpbXVtKHJlYykpIHsK LQotCQkJYnJlYWs7Ci0JCX0KKwlmb3IgKDsgIXBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKTsKKwkg ICAgIHJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2X2NvbnN0KHJlYykpIHsKKwkJdXRfYWQocGFnZV9h bGlnbihyZWMpID09IHBhZ2UpOwogCi0JCWlmIChwYWdlX25vICE9IGlidWZfcmVjX2dldF9wYWdl X25vKHJlYykKLQkJICAgIHx8IHNwYWNlICE9IGlidWZfcmVjX2dldF9zcGFjZShyZWMpKSB7CisJ CWlmIChwYWdlX25vICE9IGlidWZfcmVjX2dldF9wYWdlX25vKG10ciwgcmVjKQorCQkgICAgfHwg c3BhY2UgIT0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKG10ciwgcmVjKSkgewogCiAJCQlnb3RvIGNvdW50 X2xhdGVyOwogCQl9CiAKIAkJdm9sdW1lICs9IGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3Vu dCgKLQkJCXJlYywgaGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hfYml0bWFwKSwgbl9yZWNz KTsKLQotCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldihyZWMpOwotCQl1dF9hZChwYWdlX2FsaWdu KHJlYykgPT0gcGFnZSk7CisJCQltdHIsIHJlYywKKwkJCWhhc2hfYml0bWFwLCBVVF9BUlJfU0la RShoYXNoX2JpdG1hcCksIG5fcmVjcyk7CiAJfQogCiAJLyogTG9vayBhdCB0aGUgcHJldmlvdXMg cGFnZSAqLwpAQCAtMzAwOCw3ICszMDY2LDggQEAgaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkKAog CQlidWZfYmxvY2tfdCoJYmxvY2s7CiAKIAkJYmxvY2sgPSBidWZfcGFnZV9nZXQoCi0JCQlJQlVG X1NQQUNFX0lELCAwLCBwcmV2X3BhZ2Vfbm8sIFJXX1hfTEFUQ0gsIG10cik7CisJCQlJQlVGX1NQ QUNFX0lELCAwLCBwcmV2X3BhZ2Vfbm8sIFJXX1hfTEFUQ0gsCisJCQltdHIpOwogCiAJCWJ1Zl9i bG9ja19kYmdfYWRkX2xldmVsKGJsb2NrLCBTWU5DX1RSRUVfTk9ERSk7CiAKQEAgLTMwMTgsMTQg KzMwNzcsMTUgQEAgaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkKAogCX0KIAogI2lmZGVmIFVOSVZf QlRSX0RFQlVHCi0JdXRfYShidHJfcGFnZV9nZXRfbmV4dChwcmV2X3BhZ2UsIG10cikKLQkgICAg ID09IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOworCXV0X2EoYnRyX3BhZ2VfZ2V0X25leHQocHJl dl9wYWdlLCBtdHIpID09IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOwogI2VuZGlmIC8qIFVOSVZf QlRSX0RFQlVHICovCiAKIAlyZWMgPSBwYWdlX2dldF9zdXByZW11bV9yZWMocHJldl9wYWdlKTsK LQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldihyZWMpOworCXJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2 X2NvbnN0KHJlYyk7CisKKwlmb3IgKDs7IHJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2X2NvbnN0KHJl YykpIHsKKwkJdXRfYWQocGFnZV9hbGlnbihyZWMpID09IHByZXZfcGFnZSk7CiAKLQlmb3IgKDs7 KSB7CiAJCWlmIChwYWdlX3JlY19pc19pbmZpbXVtKHJlYykpIHsKIAogCQkJLyogV2UgY2Fubm90 IGdvIHRvIHlldCBhIHByZXZpb3VzIHBhZ2UsIGJlY2F1c2Ugd2UKQEAgLTMwMzUsNDIgKzMwOTUs MzUgQEAgaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkKAogCQkJcmV0dXJuKFVOSVZfUEFHRV9TSVpF KTsKIAkJfQogCi0JCWlmIChwYWdlX25vICE9IGlidWZfcmVjX2dldF9wYWdlX25vKHJlYykKLQkJ ICAgIHx8IHNwYWNlICE9IGlidWZfcmVjX2dldF9zcGFjZShyZWMpKSB7CisJCWlmIChwYWdlX25v ICE9IGlidWZfcmVjX2dldF9wYWdlX25vKG10ciwgcmVjKQorCQkgICAgfHwgc3BhY2UgIT0gaWJ1 Zl9yZWNfZ2V0X3NwYWNlKG10ciwgcmVjKSkgewogCiAJCQlnb3RvIGNvdW50X2xhdGVyOwogCQl9 CiAKIAkJdm9sdW1lICs9IGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3VudCgKLQkJCXJlYywg aGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hfYml0bWFwKSwgbl9yZWNzKTsKLQotCQlyZWMg PSBwYWdlX3JlY19nZXRfcHJldihyZWMpOwotCQl1dF9hZChwYWdlX2FsaWduKHJlYykgPT0gcHJl dl9wYWdlKTsKKwkJCW10ciwgcmVjLAorCQkJaGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hf Yml0bWFwKSwgbl9yZWNzKTsKIAl9CiAKIGNvdW50X2xhdGVyOgogCXJlYyA9IGJ0cl9wY3VyX2dl dF9yZWMocGN1cik7CiAKIAlpZiAoIXBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYykpIHsKLQkJcmVj ID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHRfY29u c3QocmVjKTsKIAl9CiAKLQlmb3IgKDs7KSB7Ci0JCWlmIChwYWdlX3JlY19pc19zdXByZW11bShy ZWMpKSB7Ci0KLQkJCWJyZWFrOwotCQl9Ci0KLQkJaWYgKHBhZ2Vfbm8gIT0gaWJ1Zl9yZWNfZ2V0 X3BhZ2Vfbm8ocmVjKQotCQkgICAgfHwgc3BhY2UgIT0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYykp IHsKKwlmb3IgKDsgIXBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYyk7CisJICAgICByZWMgPSBwYWdl X3JlY19nZXRfbmV4dF9jb25zdChyZWMpKSB7CisJCWlmIChwYWdlX25vICE9IGlidWZfcmVjX2dl dF9wYWdlX25vKG10ciwgcmVjKQorCQkgICAgfHwgc3BhY2UgIT0gaWJ1Zl9yZWNfZ2V0X3NwYWNl KG10ciwgcmVjKSkgewogCiAJCQlyZXR1cm4odm9sdW1lKTsKIAkJfQogCiAJCXZvbHVtZSArPSBp YnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnQoCi0JCQlyZWMsIGhhc2hfYml0bWFwLCBVVF9B UlJfU0laRShoYXNoX2JpdG1hcCksIG5fcmVjcyk7Ci0KLQkJcmVjID0gcGFnZV9yZWNfZ2V0X25l eHQocmVjKTsKKwkJCW10ciwgcmVjLAorCQkJaGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hf Yml0bWFwKSwgbl9yZWNzKTsKIAl9CiAKIAkvKiBMb29rIGF0IHRoZSBuZXh0IHBhZ2UgKi8KQEAg LTMwODYsNyArMzEzOSw4IEBAIGNvdW50X2xhdGVyOgogCQlidWZfYmxvY2tfdCoJYmxvY2s7CiAK IAkJYmxvY2sgPSBidWZfcGFnZV9nZXQoCi0JCQlJQlVGX1NQQUNFX0lELCAwLCBuZXh0X3BhZ2Vf bm8sIFJXX1hfTEFUQ0gsIG10cik7CisJCQlJQlVGX1NQQUNFX0lELCAwLCBuZXh0X3BhZ2Vfbm8s IFJXX1hfTEFUQ0gsCisJCQltdHIpOwogCiAJCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKGJsb2Nr LCBTWU5DX1RSRUVfTk9ERSk7CiAKQEAgLTMxMDAsOSArMzE1NCwxMSBAQCBjb3VudF9sYXRlcjoK ICNlbmRpZiAvKiBVTklWX0JUUl9ERUJVRyAqLwogCiAJcmVjID0gcGFnZV9nZXRfaW5maW11bV9y ZWMobmV4dF9wYWdlKTsKLQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMpOworCXJlYyA9IHBh Z2VfcmVjX2dldF9uZXh0X2NvbnN0KHJlYyk7CisKKwlmb3IgKDs7IHJlYyA9IHBhZ2VfcmVjX2dl dF9uZXh0X2NvbnN0KHJlYykpIHsKKwkJdXRfYWQocGFnZV9hbGlnbihyZWMpID09IG5leHRfcGFn ZSk7CiAKLQlmb3IgKDs7KSB7CiAJCWlmIChwYWdlX3JlY19pc19zdXByZW11bShyZWMpKSB7CiAK IAkJCS8qIFdlIGdpdmUgdXAgKi8KQEAgLTMxMTAsMTcgKzMxNjYsMTUgQEAgY291bnRfbGF0ZXI6 CiAJCQlyZXR1cm4oVU5JVl9QQUdFX1NJWkUpOwogCQl9CiAKLQkJaWYgKHBhZ2Vfbm8gIT0gaWJ1 Zl9yZWNfZ2V0X3BhZ2Vfbm8ocmVjKQotCQkgICAgfHwgc3BhY2UgIT0gaWJ1Zl9yZWNfZ2V0X3Nw YWNlKHJlYykpIHsKKwkJaWYgKHBhZ2Vfbm8gIT0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCBy ZWMpCisJCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19nZXRfc3BhY2UobXRyLCByZWMpKSB7CiAK IAkJCXJldHVybih2b2x1bWUpOwogCQl9CiAKIAkJdm9sdW1lICs9IGlidWZfZ2V0X3ZvbHVtZV9i dWZmZXJlZF9jb3VudCgKLQkJCXJlYywgaGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hfYml0 bWFwKSwgbl9yZWNzKTsKLQotCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMpOwotCQl1dF9h ZChwYWdlX2FsaWduKHJlYykgPT0gbmV4dF9wYWdlKTsKKwkJCW10ciwgcmVjLAorCQkJaGFzaF9i aXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hfYml0bWFwKSwgbl9yZWNzKTsKIAl9CiB9CiAKQEAgLTMx NDEsOSArMzE5NSw3IEBAIGlidWZfdXBkYXRlX21heF90YWJsZXNwYWNlX2lkKHZvaWQpCiAKIAl1 dF9hKCFkaWN0X3RhYmxlX2lzX2NvbXAoaWJ1Zi0+aW5kZXgtPnRhYmxlKSk7CiAKLQlpYnVmX2Vu dGVyKCk7Ci0KLQltdHJfc3RhcnQoJm10cik7CisJaWJ1Zl9tdHJfc3RhcnQoJm10cik7CiAKIAli dHJfcGN1cl9vcGVuX2F0X2luZGV4X3NpZGUoCiAJCUZBTFNFLCBpYnVmLT5pbmRleCwgQlRSX1NF QVJDSF9MRUFGLCAmcGN1ciwgVFJVRSwgJm10cik7CkBAIC0zMTY2LDE0ICszMjE4LDIwIEBAIGli dWZfdXBkYXRlX21heF90YWJsZXNwYWNlX2lkKHZvaWQpCiAJCW1heF9zcGFjZV9pZCA9IG1hY2hf cmVhZF9mcm9tXzQoZmllbGQpOwogCX0KIAotCW10cl9jb21taXQoJm10cik7Ci0JaWJ1Zl9leGl0 KCk7CisJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCiAJLyogcHJpbnRmKCJNYXhpbXVtIHNwYWNl IGlkIGluIGluc2VydCBidWZmZXIgJWx1XG4iLCBtYXhfc3BhY2VfaWQpOyAqLwogCiAJZmlsX3Nl dF9tYXhfc3BhY2VfaWRfaWZfYmlnZ2VyKG1heF9zcGFjZV9pZCk7CiB9CiAKKyNpZmRlZiBVTklW X0RFQlVHCisjIGRlZmluZSBpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvdyhtdHIscmVjLHNwYWNl LHBhZ2Vfbm8pCVwKKwlpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKG10cixyZWMsc3Bh Y2UscGFnZV9ubykKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMgZGVmaW5lIGlidWZfZ2V0X2Vu dHJ5X2NvdW50ZXJfbG93KG10cixyZWMsc3BhY2UscGFnZV9ubykJXAorCWlidWZfZ2V0X2VudHJ5 X2NvdW50ZXJfbG93X2Z1bmMocmVjLHNwYWNlLHBhZ2Vfbm8pCisjZW5kaWYKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogSGVscGVyIGZ1bmN0aW9uIGZvciBpYnVmX3NldF9lbnRyeV9jb3VudGVyLiBDaGVja3MgaWYg cmVjIGlzIGZvciAoc3BhY2UsCiBwYWdlX25vKSwgYW5kIGlmIHNvLCByZWFkcyBjb3VudGVyIHZh bHVlIGZyb20gaXQgYW5kIHJldHVybnMgdGhhdCArIDEuCkBAIC0zMTgxLDggKzMyMzksMTEgQEAg T3RoZXJ3aXNlLCByZXR1cm5zIDAuCiBAcmV0dXJuCW5ldyBjb3VudGVyIHZhbHVlLCBvciAwICov CiBzdGF0aWMKIHVsaW50Ci1pYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvdygKLS8qPT09PT09PT09 PT09PT09PT09PT09PT0qLworaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3dfZnVuYygKKy8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJ bXRyLAkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiBvZiByZWMgKi8KKyNlbmRpZiAvKiBVTklW X0RFQlVHICovCiAJY29uc3QgcmVjX3QqCXJlYywJCS8qITwgaW46IGluc2VydCBidWZmZXIgcmVj b3JkICovCiAJdWxpbnQJCXNwYWNlLAkJLyohPCBpbjogc3BhY2UgaWQgKi8KIAl1bGludAkJcGFn ZV9ubykJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KQEAgLTMxOTEsNyArMzI1Miw5IEBAIGlidWZf Z2V0X2VudHJ5X2NvdW50ZXJfbG93KAogCWNvbnN0IGJ5dGUqCWZpZWxkOwogCXVsaW50CQlsZW47 CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKKwl1 dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1hfRklY KQorCSAgICAgIHx8IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BB R0VfU19GSVgpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpID4gMik7CiAKIAlm aWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDEsICZsZW4pOwpAQCAtMzI2MywxMiAr MzMyNiwxNSBAQCBpYnVmX3NldF9lbnRyeV9jb3VudGVyKAogCXVsaW50CQljb3VudGVyID0gMDsK IAogCS8qIHBjdXIgcG9pbnRzIHRvIGVpdGhlciBhIHVzZXIgcmVjIG9yIHRvIGEgcGFnZSdzIGlu ZmltdW0gcmVjb3JkLiAqLworCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOworCXV0X2FkKG10cl9t ZW1vX2NvbnRhaW5zKG10ciwgYnRyX3BjdXJfZ2V0X2Jsb2NrKHBjdXIpLAorCQkJCU1UUl9NRU1P X1BBR0VfWF9GSVgpKTsKIAl1dF9hZChwYWdlX3ZhbGlkYXRlKGJ0cl9wY3VyX2dldF9wYWdlKHBj dXIpLCBpYnVmLT5pbmRleCkpOwogCiAJaWYgKGJ0cl9wY3VyX2lzX29uX3VzZXJfcmVjKHBjdXIp KSB7CiAKIAkJY291bnRlciA9IGlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93KAotCQkJYnRyX3Bj dXJfZ2V0X3JlYyhwY3VyKSwgc3BhY2UsIHBhZ2Vfbm8pOworCQkJbXRyLCBidHJfcGN1cl9nZXRf cmVjKHBjdXIpLCBzcGFjZSwgcGFnZV9ubyk7CiAKIAkJaWYgKFVOSVZfVU5MSUtFTFkoY291bnRl ciA9PSBVTElOVF9VTkRFRklORUQpKSB7CiAJCQkvKiBUaGUgcmVjb3JkIGxhY2tzIGEgY291bnRl ciBmaWVsZC4KQEAgLTMzMjQsNyArMzM5MCw3IEBAIGlidWZfc2V0X2VudHJ5X2NvdW50ZXIoCiAJ CQl1dF9hZChwYWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsKIAogCQkJY291bnRlciA9IGlidWZf Z2V0X2VudHJ5X2NvdW50ZXJfbG93KAotCQkJCXJlYywgc3BhY2UsIHBhZ2Vfbm8pOworCQkJCW10 ciwgcmVjLCBzcGFjZSwgcGFnZV9ubyk7CiAKIAkJCWlmIChVTklWX1VOTElLRUxZKGNvdW50ZXIg PT0gVUxJTlRfVU5ERUZJTkVEKSkgewogCQkJCS8qIFRoZSByZWNvcmQgbGFja3MgYSBjb3VudGVy IGZpZWxkLgpAQCAtMzQ3OCw3ICszNTQ0LDYgQEAgaWJ1Zl9pbnNlcnRfbG93KAogCiAJaWYgKG1v ZGUgPT0gQlRSX01PRElGWV9UUkVFKSB7CiAJCWZvciAoOzspIHsKLQkJCWlidWZfZW50ZXIoKTsK IAkJCW11dGV4X2VudGVyKCZpYnVmX3Blc3NpbWlzdGljX2luc2VydF9tdXRleCk7CiAJCQltdXRl eF9lbnRlcigmaWJ1Zl9tdXRleCk7CiAKQEAgLTM0ODksNyArMzU1NCw2IEBAIGlidWZfaW5zZXJ0 X2xvdygKIAogCQkJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7CiAJCQltdXRleF9leGl0KCZpYnVm X3Blc3NpbWlzdGljX2luc2VydF9tdXRleCk7Ci0JCQlpYnVmX2V4aXQoKTsKIAogCQkJaWYgKFVO SVZfVU5MSUtFTFkoIWlidWZfYWRkX2ZyZWVfcGFnZSgpKSkgewogCkBAIC0zNDk3LDExICszNTYx LDkgQEAgaWJ1Zl9pbnNlcnRfbG93KAogCQkJCXJldHVybihEQl9TVFJPTkdfRkFJTCk7CiAJCQl9 CiAJCX0KLQl9IGVsc2UgewotCQlpYnVmX2VudGVyKCk7CiAJfQogCi0JbXRyX3N0YXJ0KCZtdHIp OworCWlidWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJYnRyX3BjdXJfb3BlbihpYnVmLT5pbmRleCwg aWJ1Zl9lbnRyeSwgUEFHRV9DVVJfTEUsIG1vZGUsICZwY3VyLCAmbXRyKTsKIAl1dF9hZChwYWdl X3ZhbGlkYXRlKGJ0cl9wY3VyX2dldF9wYWdlKCZwY3VyKSwgaWJ1Zi0+aW5kZXgpKTsKQEAgLTM1 NTYsNyArMzYxOCw3IEBAIGZhaWxfZXhpdDoKICNpZmRlZiBVTklWX0lCVUZfQ09VTlRfREVCVUcK IAl1dF9hKChidWZmZXJlZCA9PSAwKSB8fCBpYnVmX2NvdW50X2dldChzcGFjZSwgcGFnZV9ubykp OwogI2VuZGlmCi0JbXRyX3N0YXJ0KCZiaXRtYXBfbXRyKTsKKwlpYnVmX210cl9zdGFydCgmYml0 bWFwX210cik7CiAKIAliaXRtYXBfcGFnZSA9IGlidWZfYml0bWFwX2dldF9tYXBfcGFnZShzcGFj ZSwgcGFnZV9ubywKIAkJCQkJICAgICAgIHppcF9zaXplLCAmYml0bWFwX210cik7CkBAIC0zNTc3 LDE1ICszNjM5LDE1IEBAIGZhaWxfZXhpdDoKIAkJaWYgKGJ1ZmZlcmVkICsgZW50cnlfc2l6ZSAr IHBhZ2VfZGlyX2NhbGNfcmVzZXJ2ZWRfc3BhY2UoMSkKIAkJICAgID4gaWJ1Zl9pbmRleF9wYWdl X2NhbGNfZnJlZV9mcm9tX2JpdHMoemlwX3NpemUsIGJpdHMpKSB7CiAJCQkvKiBSZWxlYXNlIHRo ZSBiaXRtYXAgcGFnZSBsYXRjaCBlYXJseS4gKi8KLQkJCW10cl9jb21taXQoJmJpdG1hcF9tdHIp OworCQkJaWJ1Zl9tdHJfY29tbWl0KCZiaXRtYXBfbXRyKTsKIAogCQkJLyogSXQgbWF5IG5vdCBm aXQgKi8KIAkJCWRvX21lcmdlID0gVFJVRTsKIAotCQkJaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3Mo Ci0JCQkJRkFMU0UsIGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLAotCQkJCXNwYWNlX2lkcywgc3Bh Y2VfdmVyc2lvbnMsCi0JCQkJcGFnZV9ub3MsICZuX3N0b3JlZCk7CisJCQlpYnVmX2dldF9tZXJn ZV9wYWdlX25vcyhGQUxTRSwKKwkJCQkJCWJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLCAmbXRyLAor CQkJCQkJc3BhY2VfaWRzLCBzcGFjZV92ZXJzaW9ucywKKwkJCQkJCXBhZ2Vfbm9zLCAmbl9zdG9y ZWQpOwogCiAJCQlnb3RvIGZhaWxfZXhpdDsKIAkJfQpAQCAtMzU5OCw3ICszNjYwLDcgQEAgZmFp bF9leGl0OgogCSAgICAmJiAhaWJ1Zl9zZXRfZW50cnlfY291bnRlcihpYnVmX2VudHJ5LCBzcGFj ZSwgcGFnZV9ubywgJnBjdXIsCiAJCQkJICAgICAgIG1vZGUgPT0gQlRSX01PRElGWV9QUkVWLCAm bXRyKSkgewogYml0bWFwX2ZhaWw6Ci0JCW10cl9jb21taXQoJmJpdG1hcF9tdHIpOworCQlpYnVm X210cl9jb21taXQoJmJpdG1hcF9tdHIpOwogCiAJCWdvdG8gZmFpbF9leGl0OwogCX0KQEAgLTM2 MTYsNyArMzY3OCw3IEBAIGJpdG1hcF9mYWlsOgogCQkJCQkgICZiaXRtYXBfbXRyKTsKIAl9CiAK LQltdHJfY29tbWl0KCZiaXRtYXBfbXRyKTsKKwlpYnVmX210cl9jb21taXQoJmJpdG1hcF9tdHIp OwogCiAJY3Vyc29yID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIoJnBjdXIpOwogCkBAIC0zNjgxLDkg KzM3NDMsOCBAQCBmdW5jX2V4aXQ6CiAJfQogI2VuZGlmCiAKLQltdHJfY29tbWl0KCZtdHIpOwor CWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAlidHJfcGN1cl9jbG9zZSgmcGN1cik7Ci0JaWJ1Zl9l eGl0KCk7CiAKIAltZW1faGVhcF9mcmVlKGhlYXApOwogCkBAIC0zOTM3LDcgKzM5OTgsNyBAQCBp YnVmX2luc2VydF90b19pbmRleF9wYWdlKAogCXBhZ2VfdCoJCXBhZ2UJCT0gYnVmX2Jsb2NrX2dl dF9mcmFtZShibG9jayk7CiAJcmVjX3QqCQlyZWM7CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsK Kwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChkdHVwbGVfY2hlY2tfdHlwZWQoZW50 cnkpKTsKIAl1dF9hZCghYnVmX2Jsb2NrX2FsaWduKHBhZ2UpLT5pc19oYXNoZWQpOwogCkBAIC00 MDg0LDcgKzQxNDUsNyBAQCBpYnVmX3NldF9kZWxfbWFyaygKIAlwYWdlX2N1cl90CXBhZ2VfY3Vy OwogCXVsaW50CQlsb3dfbWF0Y2g7CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChp YnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChkdHVwbGVfY2hlY2tfdHlwZWQoZW50cnkpKTsKIAog CWxvd19tYXRjaCA9IHBhZ2VfY3VyX3NlYXJjaCgKQEAgLTQxNDEsNyArNDIwMiw3IEBAIGlidWZf ZGVsZXRlKAogCXBhZ2VfY3VyX3QJcGFnZV9jdXI7CiAJdWxpbnQJCWxvd19tYXRjaDsKIAotCXV0 X2FkKGlidWZfaW5zaWRlKCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOwogCXV0X2FkKGR0 dXBsZV9jaGVja190eXBlZChlbnRyeSkpOwogCiAJbG93X21hdGNoID0gcGFnZV9jdXJfc2VhcmNo KApAQCAtNDIyOSw3ICs0MjkwLDcgQEAgaWJ1Zl9yZXN0b3JlX3BvcygKIAkJLyogVGhlIHRhYmxl c3BhY2UgaGFzIGJlZW4gZHJvcHBlZC4gIEl0IGlzIHBvc3NpYmxlCiAJCXRoYXQgYW5vdGhlciB0 aHJlYWQgaGFzIGRlbGV0ZWQgdGhlIGluc2VydCBidWZmZXIKIAkJZW50cnkuICBEbyBub3QgY29t cGxhaW4uICovCi0JCWJ0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOworCQlp YnVmX2J0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOwogCX0gZWxzZSB7CiAJ CWZwcmludGYoc3RkZXJyLAogCQkJIklubm9EQjogRVJST1I6IFN1Ym1pdCB0aGUgb3V0cHV0IHRv IgpAQCAtNDI0Nyw3ICs0MzA4LDcgQEAgaWJ1Zl9yZXN0b3JlX3BvcygKIAkJCSAgICAgIHBhZ2Vf cmVjX2dldF9uZXh0KGJ0cl9wY3VyX2dldF9yZWMocGN1cikpKTsKIAkJZmZsdXNoKHN0ZGVycik7 CiAKLQkJYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10cik7CisJCWlidWZfYnRy X3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10cik7CiAKIAkJZnB1dHMoIklubm9EQjog VmFsaWRhdGluZyBpbnNlcnQgYnVmZmVyIHRyZWU6XG4iLCBzdGRlcnIpOwogCQlpZiAoIWJ0cl92 YWxpZGF0ZV9pbmRleChpYnVmLT5pbmRleCwgTlVMTCkpIHsKQEAgLTQyNzEsOCArNDMzMiw4IEBA IGlib29sCiBpYnVmX2RlbGV0ZV9yZWMoCiAvKj09PT09PT09PT09PSovCiAJdWxpbnQJCXNwYWNl LAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVsaW50CQlwYWdlX25vLC8qITwgaW46IGluZGV4IHBh Z2UgbnVtYmVyIHdoZXJlIHRoZSByZWNvcmQKLQkJCQlzaG91bGQgYmVsb25nICovCisJdWxpbnQJ CXBhZ2Vfbm8sLyohPCBpbjogaW5kZXggcGFnZSBudW1iZXIgdGhhdCB0aGUgcmVjb3JkCisJCQkJ c2hvdWxkIGJlbG9uZyB0byAqLwogCWJ0cl9wY3VyX3QqCXBjdXIsCS8qITwgaW46IHBjdXIgcG9z aXRpb25lZCBvbiB0aGUgcmVjb3JkIHRvCiAJCQkJZGVsZXRlLCBoYXZpbmcgbGF0Y2ggbW9kZSBC VFJfTU9ESUZZX0xFQUYgKi8KIAljb25zdCBkdHVwbGVfdCoJc2VhcmNoX3R1cGxlLApAQCAtNDI4 MywxMCArNDM0NCwxMCBAQCBpYnVmX2RlbGV0ZV9yZWMoCiAJcGFnZV90KgkJcm9vdDsKIAl1bGlu dAkJZXJyOwogCi0JdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRy KSk7CiAJdXRfYWQocGFnZV9yZWNfaXNfdXNlcl9yZWMoYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkp OwotCXV0X2FkKGlidWZfcmVjX2dldF9wYWdlX25vKGJ0cl9wY3VyX2dldF9yZWMocGN1cikpID09 IHBhZ2Vfbm8pOwotCXV0X2FkKGlidWZfcmVjX2dldF9zcGFjZShidHJfcGN1cl9nZXRfcmVjKHBj dXIpKSA9PSBzcGFjZSk7CisJdXRfYWQoaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCBidHJfcGN1 cl9nZXRfcmVjKHBjdXIpKSA9PSBwYWdlX25vKTsKKwl1dF9hZChpYnVmX3JlY19nZXRfc3BhY2Uo bXRyLCBidHJfcGN1cl9nZXRfcmVjKHBjdXIpKSA9PSBzcGFjZSk7CiAKIAlzdWNjZXNzID0gYnRy X2N1cl9vcHRpbWlzdGljX2RlbGV0ZShidHJfcGN1cl9nZXRfYnRyX2N1cihwY3VyKSwgbXRyKTsK IApAQCAtNDMxOSwyMiArNDM4MCwyMiBAQCBpYnVmX2RlbGV0ZV9yZWMoCiAJfQogCiAJdXRfYWQo cGFnZV9yZWNfaXNfdXNlcl9yZWMoYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkpOwotCXV0X2FkKGli dWZfcmVjX2dldF9wYWdlX25vKGJ0cl9wY3VyX2dldF9yZWMocGN1cikpID09IHBhZ2Vfbm8pOwot CXV0X2FkKGlidWZfcmVjX2dldF9zcGFjZShidHJfcGN1cl9nZXRfcmVjKHBjdXIpKSA9PSBzcGFj ZSk7CisJdXRfYWQoaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCBidHJfcGN1cl9nZXRfcmVjKHBj dXIpKSA9PSBwYWdlX25vKTsKKwl1dF9hZChpYnVmX3JlY19nZXRfc3BhY2UobXRyLCBidHJfcGN1 cl9nZXRfcmVjKHBjdXIpKSA9PSBzcGFjZSk7CiAKIAkvKiBXZSBoYXZlIHRvIHJlc29ydCB0byBh IHBlc3NpbWlzdGljIGRlbGV0ZSBmcm9tIGlidWYgKi8KIAlidHJfcGN1cl9zdG9yZV9wb3NpdGlv bihwY3VyLCBtdHIpOworCWlidWZfYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10 cik7CiAKLQlidHJfcGN1cl9jb21taXRfc3BlY2lmeV9tdHIocGN1ciwgbXRyKTsKLQorCWlidWZf bXRyX3N0YXJ0KG10cik7CiAJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCi0JbXRyX3N0YXJ0 KG10cik7Ci0KIAlpZiAoIWlidWZfcmVzdG9yZV9wb3Moc3BhY2UsIHBhZ2Vfbm8sIHNlYXJjaF90 dXBsZSwKIAkJCSAgICAgIEJUUl9NT0RJRllfVFJFRSwgcGN1ciwgbXRyKSkgewogCiAJCW11dGV4 X2V4aXQoJmlidWZfbXV0ZXgpOworCQl1dF9hZCghaWJ1Zl9pbnNpZGUobXRyKSk7CisJCXV0X2Fk KG10ci0+c3RhdGUgPT0gTVRSX0NPTU1JVFRFRCk7CiAJCWdvdG8gZnVuY19leGl0OwogCX0KIApA QCAtNDM1MSw5ICs0NDEyLDExIEBAIGlidWZfZGVsZXRlX3JlYygKIAltdXRleF9leGl0KCZpYnVm X211dGV4KTsKIAogCWlidWYtPmVtcHR5ID0gKHBhZ2VfZ2V0X25fcmVjcyhyb290KSA9PSAwKTsK LQlidHJfcGN1cl9jb21taXRfc3BlY2lmeV9tdHIocGN1ciwgbXRyKTsKKwlpYnVmX2J0cl9wY3Vy X2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOwogCiBmdW5jX2V4aXQ6CisJdXRfYWQoIWli dWZfaW5zaWRlKG10cikpOworCXV0X2FkKG10ci0+c3RhdGUgPT0gTVRSX0NPTU1JVFRFRCk7CiAJ YnRyX3BjdXJfY2xvc2UocGN1cik7CiAKIAlyZXR1cm4oVFJVRSk7CkBAIC00NDQ1LDE4ICs0NTA4 LDIwIEBAIGlidWZfbWVyZ2Vfb3JfZGVsZXRlX2Zvcl9wYWdlKAogCQkJdXBkYXRlX2lidWZfYml0 bWFwID0gRkFMU0U7CiAJCX0gZWxzZSB7CiAJCQlwYWdlX3QqCWJpdG1hcF9wYWdlOworCQkJdWxp bnQJYml0bWFwX2JpdHM7CiAKLQkJCW10cl9zdGFydCgmbXRyKTsKKwkJCWlidWZfbXRyX3N0YXJ0 KCZtdHIpOwogCiAJCQliaXRtYXBfcGFnZSA9IGlidWZfYml0bWFwX2dldF9tYXBfcGFnZSgKIAkJ CQlzcGFjZSwgcGFnZV9ubywgemlwX3NpemUsICZtdHIpOworCQkJYml0bWFwX2JpdHMgPSBpYnVm X2JpdG1hcF9wYWdlX2dldF9iaXRzKAorCQkJCWJpdG1hcF9wYWdlLCBwYWdlX25vLCB6aXBfc2l6 ZSwKKwkJCQlJQlVGX0JJVE1BUF9CVUZGRVJFRCwgJm10cik7CiAKLQkJCWlmICghaWJ1Zl9iaXRt YXBfcGFnZV9nZXRfYml0cyhiaXRtYXBfcGFnZSwgcGFnZV9ubywKLQkJCQkJCSAgICAgICB6aXBf c2l6ZSwKLQkJCQkJCSAgICAgICBJQlVGX0JJVE1BUF9CVUZGRVJFRCwKLQkJCQkJCSAgICAgICAm bXRyKSkgeworCQkJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOworCisJCQlpZiAoIWJpdG1hcF9iaXRz KSB7CiAJCQkJLyogTm8gaW5zZXJ0cyBidWZmZXJlZCBmb3IgdGhpcyBwYWdlICovCi0JCQkJbXRy X2NvbW1pdCgmbXRyKTsKIAogCQkJCWlmICghdGFibGVzcGFjZV9iZWluZ19kZWxldGVkKSB7CiAJ CQkJCWZpbF9kZWNyX3BlbmRpbmdfaWJ1Zl9tZXJnZXMoc3BhY2UpOwpAQCAtNDQ2NCw3ICs0NTI5 LDYgQEAgaWJ1Zl9tZXJnZV9vcl9kZWxldGVfZm9yX3BhZ2UoCiAKIAkJCQlyZXR1cm47CiAJCQl9 Ci0JCQltdHJfY29tbWl0KCZtdHIpOwogCQl9CiAJfSBlbHNlIGlmIChibG9jawogCQkgICAmJiAo aWJ1Zl9maXhlZF9hZGRyX3BhZ2Uoc3BhY2UsIHppcF9zaXplLCBwYWdlX25vKQpAQCAtNDQ3Mywx MSArNDUzNyw5IEBAIGlidWZfbWVyZ2Vfb3JfZGVsZXRlX2Zvcl9wYWdlKAogCQlyZXR1cm47CiAJ fQogCi0JaWJ1Zl9lbnRlcigpOwotCiAJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSg1MTIpOwogCi0J aWYgKCF0cnhfc3lzX211bHRpcGxlX3RhYmxlc3BhY2VfZm9ybWF0KSB7CisJaWYgKFVOSVZfVU5M SUtFTFkoIXRyeF9zeXNfbXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQpKSB7CiAJCXV0X2EodHJ4 X2RvdWJsZXdyaXRlX211c3RfcmVzZXRfc3BhY2VfaWRzKTsKIAkJc2VhcmNoX3R1cGxlID0gaWJ1 Zl9zZWFyY2hfdHVwbGVfYnVpbGQoc3BhY2UsIHBhZ2Vfbm8sIGhlYXApOwogCX0gZWxzZSB7CkBA IC00NTA0LDcgKzQ1NjYsNyBAQCBpYnVmX21lcmdlX29yX2RlbGV0ZV9mb3JfcGFnZSgKIAogCQkJ dXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CiAKLQkJCW10cl9zdGFydCgmbXRyKTsKKwkJCWli dWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJCQlmcHV0cygiICBJbm5vREI6IER1bXAgb2YgdGhlIGli dWYgYml0bWFwIHBhZ2U6XG4iLAogCQkJICAgICAgc3RkZXJyKTsKQEAgLTQ1MTIsOCArNDU3NCw3 IEBAIGlidWZfbWVyZ2Vfb3JfZGVsZXRlX2Zvcl9wYWdlKAogCQkJYml0bWFwX3BhZ2UgPSBpYnVm X2JpdG1hcF9nZXRfbWFwX3BhZ2Uoc3BhY2UsIHBhZ2Vfbm8sCiAJCQkJCQkJICAgICAgIHppcF9z aXplLCAmbXRyKTsKIAkJCWJ1Zl9wYWdlX3ByaW50KGJpdG1hcF9wYWdlLCAwKTsKLQotCQkJbXRy X2NvbW1pdCgmbXRyKTsKKwkJCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAogCQkJZnB1dHMoIlxu SW5ub0RCOiBEdW1wIG9mIHRoZSBwYWdlOlxuIiwgc3RkZXJyKTsKIApAQCAtNDU0NCw3ICs0NjA1 LDcgQEAgaWJ1Zl9tZXJnZV9vcl9kZWxldGVfZm9yX3BhZ2UoCiAJbWVtc2V0KGRvcHMsIDAsIHNp emVvZihkb3BzKSk7CiAKIGxvb3A6Ci0JbXRyX3N0YXJ0KCZtdHIpOworCWlidWZfbXRyX3N0YXJ0 KCZtdHIpOwogCiAJaWYgKGJsb2NrKSB7CiAJCWlib29sIHN1Y2Nlc3M7CkBAIC00NTc4LDggKzQ2 MzksOCBAQCBsb29wOgogCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKIAogCQkvKiBD aGVjayBpZiB0aGUgZW50cnkgaXMgZm9yIHRoaXMgaW5kZXggcGFnZSAqLwotCQlpZiAoaWJ1Zl9y ZWNfZ2V0X3BhZ2Vfbm8ocmVjKSAhPSBwYWdlX25vCi0JCSAgICB8fCBpYnVmX3JlY19nZXRfc3Bh Y2UocmVjKSAhPSBzcGFjZSkgeworCQlpZiAoaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8oJm10ciwgcmVj KSAhPSBwYWdlX25vCisJCSAgICB8fCBpYnVmX3JlY19nZXRfc3BhY2UoJm10ciwgcmVjKSAhPSBz cGFjZSkgewogCiAJCQlpZiAoYmxvY2spIHsKIAkJCQlwYWdlX2hlYWRlcl9yZXNldF9sYXN0X2lu c2VydCgKQEAgLTQ2MDIsNyArNDY2Myw3IEBAIGxvb3A6CiAJCQlkdHVwbGVfdCoJZW50cnk7CiAJ CQl0cnhfaWRfdAltYXhfdHJ4X2lkOwogCQkJZGljdF9pbmRleF90KglkdW1teV9pbmRleDsKLQkJ CWlidWZfb3BfdAlvcCA9IGlidWZfcmVjX2dldF9vcF90eXBlKHJlYyk7CisJCQlpYnVmX29wX3QJ b3AgPSBpYnVmX3JlY19nZXRfb3BfdHlwZSgmbXRyLCByZWMpOwogCiAJCQltYXhfdHJ4X2lkID0g cGFnZV9nZXRfbWF4X3RyeF9pZChwYWdlX2FsaWduKHJlYykpOwogCQkJcGFnZV91cGRhdGVfbWF4 X3RyeF9pZChibG9jaywgcGFnZV96aXAsIG1heF90cnhfaWQsCkBAIC00NjExLDcgKzQ2NzIsNyBA QCBsb29wOgogCQkJdXRfYWQocGFnZV92YWxpZGF0ZShwYWdlX2FsaWduKHJlYyksIGlidWYtPmlu ZGV4KSk7CiAKIAkJCWVudHJ5ID0gaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjKAotCQkJ CXJlYywgaGVhcCwgJmR1bW15X2luZGV4KTsKKwkJCQkmbXRyLCByZWMsIGhlYXAsICZkdW1teV9p bmRleCk7CiAKIAkJCXV0X2FkKHBhZ2VfdmFsaWRhdGUoYmxvY2stPmZyYW1lLCBkdW1teV9pbmRl eCkpOwogCkBAIC00NjQ0LDEzICs0NzA1LDE0IEBAIGxvb3A6CiAJCQkJU3RvcmUgYW5kIHJlc3Rv cmUgdGhlIGN1cnNvciBwb3NpdGlvbi4gKi8KIAkJCQl1dF9hZChyZWMgPT0gYnRyX3BjdXJfZ2V0 X3JlYygmcGN1cikpOwogCQkJCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOwotCQkJ CXV0X2FkKGlidWZfcmVjX2dldF9wYWdlX25vKHJlYykgPT0gcGFnZV9ubyk7Ci0JCQkJdXRfYWQo aWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYykgPT0gc3BhY2UpOworCQkJCXV0X2FkKGlidWZfcmVjX2dl dF9wYWdlX25vKCZtdHIsIHJlYykKKwkJCQkgICAgICA9PSBwYWdlX25vKTsKKwkJCQl1dF9hZChp YnVmX3JlY19nZXRfc3BhY2UoJm10ciwgcmVjKSA9PSBzcGFjZSk7CiAKIAkJCQlidHJfcGN1cl9z dG9yZV9wb3NpdGlvbigmcGN1ciwgJm10cik7Ci0JCQkJYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlf bXRyKCZwY3VyLCAmbXRyKTsKKwkJCQlpYnVmX2J0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cigm cGN1ciwgJm10cik7CiAKLQkJCQltdHJfc3RhcnQoJm10cik7CisJCQkJaWJ1Zl9tdHJfc3RhcnQo Jm10cik7CiAKIAkJCQlzdWNjZXNzID0gYnVmX3BhZ2VfZ2V0X2tub3duX25vd2FpdCgKIAkJCQkJ UldfWF9MQVRDSCwgYmxvY2ssCkBAIC00NjY1LDcgKzQ3MjcsOCBAQCBsb29wOgogCQkJCQkJICAg ICAgQlRSX01PRElGWV9MRUFGLAogCQkJCQkJICAgICAgJnBjdXIsICZtdHIpKSB7CiAKLQkJCQkJ bXRyX2NvbW1pdCgmbXRyKTsKKwkJCQkJdXRfYWQoIWlidWZfaW5zaWRlKCZtdHIpKTsKKwkJCQkJ dXRfYWQobXRyLnN0YXRlID09IE1UUl9DT01NSVRURUQpOwogCQkJCQltb3BzW29wXSsrOwogCQkJ CQlpYnVmX2R1bW15X2luZGV4X2ZyZWUoZHVtbXlfaW5kZXgpOwogCQkJCQlnb3RvIGxvb3A7CkBA IC00NjgwLDcgKzQ3NDMsNyBAQCBsb29wOgogCiAJCQlpYnVmX2R1bW15X2luZGV4X2ZyZWUoZHVt bXlfaW5kZXgpOwogCQl9IGVsc2UgewotCQkJZG9wc1tpYnVmX3JlY19nZXRfb3BfdHlwZShyZWMp XSsrOworCQkJZG9wc1tpYnVmX3JlY19nZXRfb3BfdHlwZSgmbXRyLCByZWMpXSsrOwogCQl9CiAK IAkJLyogRGVsZXRlIHRoZSByZWNvcmQgZnJvbSBpYnVmICovCkBAIC00NjkxLDcgKzQ3NTQsNyBA QCBsb29wOgogCiAJCQlnb3RvIGxvb3A7CiAJCX0gZWxzZSBpZiAoYnRyX3BjdXJfaXNfYWZ0ZXJf bGFzdF9vbl9wYWdlKCZwY3VyKSkgewotCQkJbXRyX2NvbW1pdCgmbXRyKTsKKwkJCWlidWZfbXRy X2NvbW1pdCgmbXRyKTsKIAkJCWJ0cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAogCQkJZ290byBsb29w OwpAQCAtNDcyNSw3ICs0Nzg4LDcgQEAgcmVzZXRfYml0OgogCQl9CiAJfQogCi0JbXRyX2NvbW1p dCgmbXRyKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAJYnRyX3BjdXJfY2xvc2UoJnBjdXIp OwogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAKQEAgLTQ3NDksOCArNDgxMiw2IEBAIHJlc2V0X2Jp dDoKIAkJZmlsX2RlY3JfcGVuZGluZ19pYnVmX21lcmdlcyhzcGFjZSk7CiAJfQogCi0JaWJ1Zl9l eGl0KCk7Ci0KICNpZmRlZiBVTklWX0lCVUZfQ09VTlRfREVCVUcKIAl1dF9hKGlidWZfY291bnRf Z2V0KHNwYWNlLCBwYWdlX25vKSA9PSAwKTsKICNlbmRpZgpAQCAtNDc3MCw5ICs0ODMxLDggQEAg aWJ1Zl9kZWxldGVfZm9yX2Rpc2NhcmRlZF9zcGFjZSgKIAltZW1faGVhcF90KgloZWFwOwogCWJ0 cl9wY3VyX3QJcGN1cjsKIAlkdHVwbGVfdCoJc2VhcmNoX3R1cGxlOwotCXJlY190KgkJaWJ1Zl9y ZWM7CisJY29uc3QgcmVjX3QqCWlidWZfcmVjOwogCXVsaW50CQlwYWdlX25vOwotCWlib29sCQlj bG9zZWQ7CiAJbXRyX3QJCW10cjsKIAogCS8qIENvdW50cyBmb3IgZGlzY2FyZGVkIG9wZXJhdGlv bnMuICovCkBAIC00Nzg3LDkgKzQ4NDcsNyBAQCBpYnVmX2RlbGV0ZV9mb3JfZGlzY2FyZGVkX3Nw YWNlKAogCiAJbWVtc2V0KGRvcHMsIDAsIHNpemVvZihkb3BzKSk7CiBsb29wOgotCWlidWZfZW50 ZXIoKTsKLQotCW10cl9zdGFydCgmbXRyKTsKKwlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCS8q IFBvc2l0aW9uIHBjdXIgaW4gdGhlIGluc2VydCBidWZmZXIgYXQgdGhlIGZpcnN0IGVudHJ5IGZv ciB0aGUKIAlzcGFjZSAqLwpAQCAtNDgwOSwzOSArNDg2NywzNCBAQCBsb29wOgogCQlpYnVmX3Jl YyA9IGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpOwogCiAJCS8qIENoZWNrIGlmIHRoZSBlbnRyeSBp cyBmb3IgdGhpcyBzcGFjZSAqLwotCQlpZiAoaWJ1Zl9yZWNfZ2V0X3NwYWNlKGlidWZfcmVjKSAh PSBzcGFjZSkgeworCQlpZiAoaWJ1Zl9yZWNfZ2V0X3NwYWNlKCZtdHIsIGlidWZfcmVjKSAhPSBz cGFjZSkgewogCiAJCQlnb3RvIGxlYXZlX2xvb3A7CiAJCX0KIAotCQlwYWdlX25vID0gaWJ1Zl9y ZWNfZ2V0X3BhZ2Vfbm8oaWJ1Zl9yZWMpOworCQlwYWdlX25vID0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vf bm8oJm10ciwgaWJ1Zl9yZWMpOwogCi0JCWRvcHNbaWJ1Zl9yZWNfZ2V0X29wX3R5cGUoaWJ1Zl9y ZWMpXSsrOworCQlkb3BzW2lidWZfcmVjX2dldF9vcF90eXBlKCZtdHIsIGlidWZfcmVjKV0rKzsK IAogCQkvKiBEZWxldGUgdGhlIHJlY29yZCBmcm9tIGlidWYgKi8KLQkJY2xvc2VkID0gaWJ1Zl9k ZWxldGVfcmVjKHNwYWNlLCBwYWdlX25vLCAmcGN1ciwgc2VhcmNoX3R1cGxlLAotCQkJCQkgJm10 cik7Ci0JCWlmIChjbG9zZWQpIHsKKwkJaWYgKGlidWZfZGVsZXRlX3JlYyhzcGFjZSwgcGFnZV9u bywgJnBjdXIsIHNlYXJjaF90dXBsZSwKKwkJCQkgICAgJm10cikpIHsKIAkJCS8qIERlbGV0aW9u IHdhcyBwZXNzaW1pc3RpYyBhbmQgbXRyIHdhcyBjb21taXR0ZWQ6CiAJCQl3ZSBzdGFydCBmcm9t IHRoZSBiZWdpbm5pbmcgYWdhaW4gKi8KIAotCQkJaWJ1Zl9leGl0KCk7Ci0KIAkJCWdvdG8gbG9v cDsKIAkJfQogCiAJCWlmIChidHJfcGN1cl9pc19hZnRlcl9sYXN0X29uX3BhZ2UoJnBjdXIpKSB7 Ci0JCQltdHJfY29tbWl0KCZtdHIpOworCQkJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCQkJYnRy X3BjdXJfY2xvc2UoJnBjdXIpOwogCi0JCQlpYnVmX2V4aXQoKTsKLQogCQkJZ290byBsb29wOwog CQl9CiAJfQogCiBsZWF2ZV9sb29wOgotCW10cl9jb21taXQoJm10cik7CisJaWJ1Zl9tdHJfY29t bWl0KCZtdHIpOwogCWJ0cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAogI2lmZGVmIEhBVkVfQVRPTUlD X0JVSUxUSU5TCkBAIC00ODUzLDggKzQ5MDYsNiBAQCBsZWF2ZV9sb29wOgogCW11dGV4X2V4aXQo JmlidWZfbXV0ZXgpOwogI2VuZGlmIC8qIEhBVkVfQVRPTUlDX0JVSUxUSU5TICovCiAKLQlpYnVm X2V4aXQoKTsKLQogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiB9CiAKQEAgLTQ4NzAsMTggKzQ5MjEs MTUgQEAgaWJ1Zl9pc19lbXB0eSh2b2lkKQogCWNvbnN0IHBhZ2VfdCoJcm9vdDsKIAltdHJfdAkJ bXRyOwogCi0JaWJ1Zl9lbnRlcigpOwotCW10cl9zdGFydCgmbXRyKTsKKwlpYnVmX210cl9zdGFy dCgmbXRyKTsKIAogCW11dGV4X2VudGVyKCZpYnVmX211dGV4KTsKIAlyb290ID0gaWJ1Zl90cmVl X3Jvb3RfZ2V0KCZtdHIpOwogCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwogCiAJaXNfZW1wdHkg PSAocGFnZV9nZXRfbl9yZWNzKHJvb3QpID09IDApOwotCW10cl9jb21taXQoJm10cik7Ci0JaWJ1 Zl9leGl0KCk7Ci0KIAl1dF9hKGlzX2VtcHR5ID09IGlidWYtPmVtcHR5KTsKKwlpYnVmX210cl9j b21taXQoJm10cik7CiAKIAlyZXR1cm4oaXNfZW1wdHkpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwcmVhLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idWYwcmVhLmgJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMy MzEzNDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dWYwcmVhLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0MDgtNHBx NHgxbGw2aWF0cXl5bgpAQCAtNzAsMTAgKzcwLDEwIEBAIFVOSVZfSU5URVJOCiB1bGludAogYnVm X3JlYWRfYWhlYWRfbGluZWFyKAogLyo9PT09PT09PT09PT09PT09PT0qLwotCXVsaW50CXNwYWNl LAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVsaW50CXppcF9zaXplLC8qITwgaW46IGNvbXByZXNz ZWQgcGFnZSBzaXplIGluIGJ5dGVzLCBvciAwICovCi0JdWxpbnQJb2Zmc2V0KTsvKiE8IGluOiBw YWdlIG51bWJlciBvZiBhIHBhZ2U7IE5PVEU6IHRoZSBjdXJyZW50IHRocmVhZAotCQkJbXVzdCB3 YW50IGFjY2VzcyB0byB0aGlzIHBhZ2UgKHNlZSBOT1RFIDMgYWJvdmUpICovCisJdWxpbnQJc3Bh Y2UsCQkvKiE8IGluOiBzcGFjZSBpZCAqLworCXVsaW50CXppcF9zaXplLAkvKiE8IGluOiBjb21w cmVzc2VkIHBhZ2Ugc2l6ZSBpbiBieXRlcywgb3IgMCAqLworCXVsaW50CW9mZnNldCwJCS8qITwg aW46IHBhZ2UgbnVtYmVyOyBzZWUgTk9URSAzIGFib3ZlICovCisJaWJvb2wJaW5zaWRlX2lidWYp OwkvKiE8IGluOiBUUlVFIGlmIHdlIGFyZSBpbnNpZGUgaWJ1ZiByb3V0aW5lICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBJc3N1ZXMgcmVhZCByZXF1ZXN0cyBmb3IgcGFnZXMgd2hpY2ggdGhlIGlidWYg bW9kdWxlIHdhbnRzIHRvIHJlYWQgaW4sIGluCiBvcmRlciB0byBjb250cmFjdCB0aGUgaW5zZXJ0 IGJ1ZmZlciB0cmVlLiBUZWNobmljYWxseSwgdGhpcyBmdW5jdGlvbiBpcyBsaWtlCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2lidWYwaWJ1Zi5oJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmgJcmV2aWQ6a2V2aW4ubGV3aXNAb3Jh Y2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXluCkBAIC0xMTYsNiArMTE2LDIyIEBAIFVOSVZf SU5URVJOCiB2b2lkCiBpYnVmX3VwZGF0ZV9tYXhfdGFibGVzcGFjZV9pZCh2b2lkKTsKIC8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorU3RhcnRzIGFuIGlu c2VydCBidWZmZXIgbWluaS10cmFuc2FjdGlvbi4gKi8KK1VOSVZfSU5MSU5FCit2b2lkCitpYnVm X210cl9zdGFydCgKKy8qPT09PT09PT09PT0qLworCW10cl90KgltdHIpCS8qITwgb3V0OiBtaW5p LXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK K0NvbW1pdHMgYW4gaW5zZXJ0IGJ1ZmZlciBtaW5pLXRyYW5zYWN0aW9uLiAqLworVU5JVl9JTkxJ TkUKK3ZvaWQKK2lidWZfbXRyX2NvbW1pdCgKKy8qPT09PT09PT09PT09Ki8KKwltdHJfdCoJbXRy KQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51 bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBJbml0aWFsaXplcyBhbiBpYnVmIGJpdG1hcCBwYWdl LiAqLwogVU5JVl9JTlRFUk4KQEAgLTIzNiwxMCArMjUyLDEyIEBAIHJvdXRpbmUuCiBGb3IgaW5z dGFuY2UsIGEgcmVhZC1haGVhZCBvZiBub24taWJ1ZiBwYWdlcyBpcyBmb3JiaWRkZW4gYnkgdGhy ZWFkcwogdGhhdCBhcmUgZXhlY3V0aW5nIGFuIGluc2VydCBidWZmZXIgcm91dGluZS4KIEByZXR1 cm4gVFJVRSBpZiBpbnNpZGUgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5lICovCi1VTklWX0lOVEVS TgorVU5JVl9JTkxJTkUKIGlib29sCi1pYnVmX2luc2lkZSh2b2lkKTsKLS8qPT09PT09PT09PT09 PSovCitpYnVmX2luc2lkZSgKKy8qPT09PT09PT0qLworCWNvbnN0IG10cl90KgltdHIpCS8qITwg aW46IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCBwdXJlKSk7 CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgaWYgYSBwYWdlIGFkZHJlc3MgaXMgYW4gaWJ1 ZiBiaXRtYXAgcGFnZSAobGV2ZWwgMyBwYWdlKSBhZGRyZXNzLgogQHJldHVybglUUlVFIGlmIGEg Yml0bWFwIHBhZ2UgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvaWJ1ZjBpYnVmLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVm LmljCXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIy dDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmljCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4K QEAgLTM3LDYgKzM3LDMwIEBAIGJ1ZmZlciBpbnNlcnRzIHRvIHRoaXMgcGFnZS4gIElmIHRoZXJl IGkKIGNvcnJlc3BvbmRpbmcgYml0cyBhcmUgc2V0IGluIHRoZSBpYnVmIGJpdG1hcC4gKi8KICNk ZWZpbmUgSUJVRl9QQUdFX1NJWkVfUEVSX0ZSRUVfU1BBQ0UJMzIKIAorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1N0 YXJ0cyBhbiBpbnNlcnQgYnVmZmVyIG1pbmktdHJhbnNhY3Rpb24uICovCitVTklWX0lOTElORQor dm9pZAoraWJ1Zl9tdHJfc3RhcnQoCisvKj09PT09PT09PT09Ki8KKwltdHJfdCoJbXRyKQkvKiE8 IG91dDogbWluaS10cmFuc2FjdGlvbiAqLworeworCW10cl9zdGFydChtdHIpOworCW10ci0+aW5z aWRlX2lidWYgPSBUUlVFOworfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NvbW1pdHMgYW4gaW5zZXJ0IGJ1ZmZl ciBtaW5pLXRyYW5zYWN0aW9uLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2lidWZfbXRyX2NvbW1p dCgKKy8qPT09PT09PT09PT09Ki8KKwltdHJfdCoJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFu c2FjdGlvbiAqLworeworCXV0X2FkKG10ci0+aW5zaWRlX2lidWYpOworCXV0X2QobXRyLT5pbnNp ZGVfaWJ1ZiA9IEZBTFNFKTsKKwltdHJfY29tbWl0KG10cik7Cit9CisKIC8qKiBJbnNlcnQgYnVm ZmVyIHN0cnVjdCAqLwogc3RydWN0IGlidWZfc3RydWN0ewogCXVsaW50CQlzaXplOwkJLyohPCBj dXJyZW50IHNpemUgb2YgdGhlIGlidWYgaW5kZXgKQEAgLTEyMSw2ICsxNDUsMjIgQEAgaWJ1Zl9z aG91bGRfdHJ5KAogCXJldHVybihGQUxTRSk7CiB9CiAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitSZXR1cm5z IFRSVUUgaWYgdGhlIGN1cnJlbnQgT1MgdGhyZWFkIGlzIHBlcmZvcm1pbmcgYW4gaW5zZXJ0IGJ1 ZmZlcgorcm91dGluZS4KKworRm9yIGluc3RhbmNlLCBhIHJlYWQtYWhlYWQgb2Ygbm9uLWlidWYg cGFnZXMgaXMgZm9yYmlkZGVuIGJ5IHRocmVhZHMKK3RoYXQgYXJlIGV4ZWN1dGluZyBhbiBpbnNl cnQgYnVmZmVyIHJvdXRpbmUuCitAcmV0dXJuIFRSVUUgaWYgaW5zaWRlIGFuIGluc2VydCBidWZm ZXIgcm91dGluZSAqLworVU5JVl9JTkxJTkUKK2lib29sCitpYnVmX2luc2lkZSgKKy8qPT09PT09 PT0qLworCWNvbnN0IG10cl90KgltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KK3sK KwlyZXR1cm4obXRyLT5pbnNpZGVfaWJ1Zik7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENo ZWNrcyBpZiBhIHBhZ2UgYWRkcmVzcyBpcyBhbiBpYnVmIGJpdG1hcCBwYWdlIGFkZHJlc3MuCiBA cmV0dXJuCVRSVUUgaWYgYSBiaXRtYXAgcGFnZSAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9tdHIwbXRyLmgJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYz Ny04NDdmemtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRy LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0MDgtNHBxNHgxbGw2 aWF0cXl5bgpAQCAtMTkzLDIxICsxOTMsMjEgQEAgZnVuY3Rpb25zKS4gIFRoZSBwYWdlIG51bWJl ciBwYXJhbWV0ZXIgdwogI2luY2x1ZGUgImxvZzBsb2cuaCIKIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVN0YXJ0 cyBhIG1pbmktdHJhbnNhY3Rpb24gYW5kIGNyZWF0ZXMgYSBtaW5pLXRyYW5zYWN0aW9uIGhhbmRs ZQotYW5kIGJ1ZmZlciBpbiB0aGUgbWVtb3J5IGJ1ZmZlciBnaXZlbiBieSB0aGUgY2FsbGVyLgot QHJldHVybgltdHIgYnVmZmVyIHdoaWNoIGFsc28gYWN0cyBhcyB0aGUgbXRyIGhhbmRsZSAqLwor U3RhcnRzIGEgbWluaS10cmFuc2FjdGlvbi4gKi8KIFVOSVZfSU5MSU5FCi1tdHJfdCoKK3ZvaWQK IG10cl9zdGFydCgKIC8qPT09PT09Ki8KLQltdHJfdCoJbXRyKTsJLyohPCBpbjogbWVtb3J5IGJ1 ZmZlciBmb3IgdGhlIG10ciBidWZmZXIgKi8KKwltdHJfdCoJbXRyKQkvKiE8IG91dDogbWluaS10 cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBD b21taXRzIGEgbWluaS10cmFuc2FjdGlvbi4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCiBtdHJfY29t bWl0KAogLyo9PT09PT09Ki8KLQltdHJfdCoJbXRyKTsJLyohPCBpbjogbWluaS10cmFuc2FjdGlv biAqLworCW10cl90KgltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19h dHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRzIGFuZCByZXR1cm5zIGEgc2F2ZXBv aW50IGluIG10ci4KIEByZXR1cm4Jc2F2ZXBvaW50ICovCkBAIC0zODEsNiArMzgxLDggQEAgc3Ry dWN0IG10cl9zdHJ1Y3R7CiAjZW5kaWYKIAlkeW5fYXJyYXlfdAltZW1vOwkvKiE8IG1lbW8gc3Rh Y2sgZm9yIGxvY2tzIGV0Yy4gKi8KIAlkeW5fYXJyYXlfdAlsb2c7CS8qITwgbWluaS10cmFuc2Fj dGlvbiBsb2cgKi8KKwlpYm9vbAkJaW5zaWRlX2lidWY7CisJCQkJLyohPCBUUlVFIGlmIGluc2lk ZSBpYnVmIGNoYW5nZXMgKi8KIAlpYm9vbAkJbW9kaWZpY2F0aW9uczsKIAkJCQkvKiBUUlVFIGlm IHRoZSBtdHIgbWFkZSBtb2RpZmljYXRpb25zIHRvCiAJCQkJYnVmZmVyIHBvb2wgcGFnZXMgKi8K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaWMJcmV2aWQ6a2V2aW4ubGV3 aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTMwLDI2ICszMCwyMyBAQCBD cmVhdGVkIDExLzI2LzE5OTUgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAibWFjaDBkYXRhLmgiCiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCi1TdGFydHMgYSBtaW5pLXRyYW5zYWN0aW9uIGFuZCBjcmVhdGVzIGEgbWlu aS10cmFuc2FjdGlvbiBoYW5kbGUKLWFuZCBhIGJ1ZmZlciBpbiB0aGUgbWVtb3J5IGJ1ZmZlciBn aXZlbiBieSB0aGUgY2FsbGVyLgotQHJldHVybgltdHIgYnVmZmVyIHdoaWNoIGFsc28gYWN0cyBh cyB0aGUgbXRyIGhhbmRsZSAqLworU3RhcnRzIGEgbWluaS10cmFuc2FjdGlvbi4gKi8KIFVOSVZf SU5MSU5FCi1tdHJfdCoKK3ZvaWQKIG10cl9zdGFydCgKIC8qPT09PT09Ki8KLQltdHJfdCoJbXRy KQkvKiE8IGluOiBtZW1vcnkgYnVmZmVyIGZvciB0aGUgbXRyIGJ1ZmZlciAqLworCW10cl90Kglt dHIpCS8qITwgb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7CiAJZHluX2FycmF5X2NyZWF0ZSgm KG10ci0+bWVtbykpOwogCWR5bl9hcnJheV9jcmVhdGUoJihtdHItPmxvZykpOwogCiAJbXRyLT5s b2dfbW9kZSA9IE1UUl9MT0dfQUxMOwogCW10ci0+bW9kaWZpY2F0aW9ucyA9IEZBTFNFOworCW10 ci0+aW5zaWRlX2lidWYgPSBGQUxTRTsKIAltdHItPm5fbG9nX3JlY3MgPSAwOwogCiAJdXRfZCht dHItPnN0YXRlID0gTVRSX0FDVElWRSk7CiAJdXRfZChtdHItPm1hZ2ljX24gPSBNVFJfTUFHSUNf Tik7Ci0KLQlyZXR1cm4obXRyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9zeW5jMHN5bmMuaAlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3 LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3lu Yy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxs NmlhdHF5eW4KQEAgLTEwOCw3ICsxMDgsNiBAQCBleHRlcm4gbXlzcWxfcGZzX2tleV90CXN5bl9h cnJfbXV0ZXhfa2V5CiBleHRlcm4gbXlzcWxfcGZzX2tleV90CXN5bmNfdGhyZWFkX211dGV4X2tl eTsKICMgZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiBleHRlcm4gbXlzcWxfcGZzX2tleV90 CXRyeF9kb3VibGV3cml0ZV9tdXRleF9rZXk7Ci1leHRlcm4gbXlzcWxfcGZzX2tleV90CXRocl9s b2NhbF9tdXRleF9rZXk7CiBleHRlcm4gbXlzcWxfcGZzX2tleV90CXRyeF91bmRvX211dGV4X2tl eTsKIGV4dGVybiBteXNxbF9wZnNfa2V5X3QJdHJ4X211dGV4X2tleTsKIGV4dGVybiBteXNxbF9w ZnNfa2V5X3QJbG9ja19zeXNfbXV0ZXhfa2V5OwoKPT09IHJlbW92ZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3RocjBsb2MuaAlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0 N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaAkx OTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCkBAIC0xLDc0ICswLDAgQEAKLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmln aHRzIFJlc2VydmVkLgotCi1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgotdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKLUZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLQotVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX SVRIT1VUCi1BTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwotRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLVlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFsb25nIHdpdGgKLXRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUKLVBsYWNlLCBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLQotKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUBm aWxlIGluY2x1ZGUvdGhyMGxvYy5oCi1UaGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UKLQotQ3JlYXRl ZCAxMC81LzE5OTUgSGVpa2tpIFR1dXJpCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHN0 b3JhZ2UgcHJpdmF0ZSB0byBlYWNoIHRocmVhZCwKLWEgY2FwYWJpbGl0eSB1c2VmdWwgaW4gc29t ZSBzaXR1YXRpb25zIGxpa2Ugc3RvcmluZyB0aGUKLU9TIGhhbmRsZSB0byB0aGUgY3VycmVudCB0 aHJlYWQsIG9yIGl0cyBwcmlvcml0eS4gKi8KLQotI2lmbmRlZiB0aHIwbG9jX2gKLSNkZWZpbmUg dGhyMGxvY19oCi0KLSNpbmNsdWRlICJ1bml2LmkiCi0jaW5jbHVkZSAib3MwdGhyZWFkLmgiCi0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgotSW5pdGlhbGl6ZXMgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIG1vZHVs ZS4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJfbG9jYWxfaW5pdCh2b2lkKTsKLS8qPT09PT09 PT09PT09PT09PSovCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DbG9zZSB0aGUgdGhyZWFkIGxvY2FsIHN0b3Jh Z2UgbW9kdWxlLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLXRocl9sb2NhbF9jbG9zZSh2b2lkKTsK LS8qPT09PT09PT09PT09PT09PT0qLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DcmVhdGVzIGEgbG9jYWwg c3RvcmFnZSBzdHJ1Y3QgZm9yIHRoZSBjYWxsaW5nIG5ldyB0aHJlYWQuICovCi1VTklWX0lOVEVS Tgotdm9pZAotdGhyX2xvY2FsX2NyZWF0ZSh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT09Ki8K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgotRnJlZXMgdGhlIGxvY2FsIHN0b3JhZ2Ugc3RydWN0IGZvciB0aGUg c3BlY2lmaWVkIHRocmVhZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJfbG9jYWxfZnJlZSgK LS8qPT09PT09PT09PT0qLwotCW9zX3RocmVhZF9pZF90CWlkKTsJLyohPCBpbjogdGhyZWFkIGlk ICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgcG9pbnRlciB0byB0aGUgJ2luX2lidWYnIGZp ZWxkIHdpdGhpbiB0aGUgY3VycmVudCB0aHJlYWQgbG9jYWwKLXN0b3JhZ2UuCi1AcmV0dXJuCXBv aW50ZXIgdG8gdGhlIGluX2lidWYgZmllbGQgKi8KLVVOSVZfSU5URVJOCi1pYm9vbCoKLXRocl9s b2NhbF9nZXRfaW5faWJ1Zl9maWVsZCh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0qLwotCi0jaWZuZGVmIFVOSVZfTk9OSU5MCi0jaW5jbHVkZSAidGhyMGxvYy5pYyIKLSNl bmRpZgotCi0jZW5kaWYKCj09PSByZW1vdmVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS90aHIwbG9jLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdGhyMGxvYy5pYwly ZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIx dTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaWMJMTk3MC0wMS0wMSAw MDowMDowMCArMDAwMApAQCAtMSwyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQot Q29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KLQotVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLXRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi1Gb3VuZGF0 aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0KLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAotQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MKLUZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi1Zb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9u ZyB3aXRoCi10aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlCi1QbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcgVVNBCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1AZmlsZSBpbmNsdWRl L3RocjBsb2MuaWMKLVRocmVhZCBsb2NhbCBzdG9yYWdlCi0KLUNyZWF0ZWQgMTAvNC8xOTk1IEhl aWtraSBUdXVyaQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL210ci9tdHIw bXRyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbXRyL210cjBtdHIuYwlyZXZpZDprZXZpbi5s ZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9tdHIvbXRyMG10ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTI1Myw2ICsyNTMsNyBAQCBtdHJf Y29tbWl0KAogCXV0X2FkKG10cik7CiAJdXRfYWQobXRyLT5tYWdpY19uID09IE1UUl9NQUdJQ19O KTsKIAl1dF9hZChtdHItPnN0YXRlID09IE1UUl9BQ1RJVkUpOworCXV0X2FkKCFtdHItPmluc2lk ZV9pYnVmKTsKIAl1dF9kKG10ci0+c3RhdGUgPSBNVFJfQ09NTUlUVElORyk7CiAKICNpZm5kZWYg VU5JVl9IT1RCQUNLVVAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Nydi9z cnYwc3J2LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuYwlyZXZpZDprZXZp bi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTQ3LDcgKzQ3LDYgQEAgQ3Jl YXRlZCAxMC84LzE5OTUgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAibWVtMG1lbS5oIgogI2luY2x1 ZGUgIm1lbTBwb29sLmgiCiAjaW5jbHVkZSAic3luYzBzeW5jLmgiCi0jaW5jbHVkZSAidGhyMGxv Yy5oIgogI2luY2x1ZGUgInF1ZTBxdWUuaCIKICNpbmNsdWRlICJsb2cwcmVjdi5oIgogI2luY2x1 ZGUgInBhcnMwcGFycy5oIgpAQCAtMTAzMCw3ICsxMDI5LDYgQEAgc3J2X2dlbmVyYWxfaW5pdCh2 b2lkKQogCW9zX3N5bmNfaW5pdCgpOwogCXN5bmNfaW5pdCgpOwogCW1lbV9pbml0KHNydl9tZW1f cG9vbF9zaXplKTsKLQl0aHJfbG9jYWxfaW5pdCgpOwogCXF1ZV9pbml0KCk7CiAJcm93X215c3Fs X2luaXQoKTsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYw c3RhcnQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6a2V2 aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTg1LDcgKzg1LDYgQEAg Q3JlYXRlZCAyLzE2LzE5OTYgSGVpa2tpIFR1dXJpCiAjIGluY2x1ZGUgInJvdzByb3cuaCIKICMg aW5jbHVkZSAicm93MG15c3FsLmgiCiAjIGluY2x1ZGUgImJ0cjBwY3VyLmgiCi0jIGluY2x1ZGUg InRocjBsb2MuaCIKICMgaW5jbHVkZSAib3Mwc3luYy5oIiAvKiBmb3IgSU5OT0RCX1JXX0xPQ0tT X1VTRV9BVE9NSUNTICovCiAjIGluY2x1ZGUgInpsaWIuaCIgLyogZm9yIFpMSUJfVkVSU0lPTiAq LwogCkBAIC0yMjYwLDcgKzIyNTksNiBAQCBpbm5vYmFzZV9zaHV0ZG93bl9mb3JfbXlzcWwodm9p ZCkKIAlpYnVmX2Nsb3NlKCk7CiAJbG9nX3NodXRkb3duKCk7CiAJbG9ja19zeXNfY2xvc2UoKTsK LQl0aHJfbG9jYWxfY2xvc2UoKTsKIAl0cnhfc3lzX2ZpbGVfZm9ybWF0X2Nsb3NlKCk7CiAJdHJ4 X3N5c19jbG9zZSgpOwogCgo9PT0gcmVtb3ZlZCBkaXJlY3RvcnkgJ3N0b3JhZ2UvaW5ub2Jhc2Uv dGhyJwo9PT0gcmVtb3ZlZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Roci90aHIwbG9jLmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdGhyL3RocjBsb2MuYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFj bGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS90aHIvdGhyMGxvYy5jCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKQEAgLTEsMjU5ICsw LDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMDks IElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotCi1UaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRl cgotdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLUZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZS4KLQotVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi1BTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwotRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0KLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKLXRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUKLVBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLQotKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLUBmaWxlIHRoci90aHIwbG9jLmMKLVRoZSB0aHJlYWQgbG9jYWwg c3RvcmFnZQotCi1DcmVhdGVkIDEwLzUvMTk5NSBIZWlra2kgVHV1cmkKLSoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpbmNsdWRlICJ0 aHIwbG9jLmgiCi0jaWZkZWYgVU5JVl9OT05JTkwKLSNpbmNsdWRlICJ0aHIwbG9jLmljIgotI2Vu ZGlmCi0KLSNpbmNsdWRlICJzeW5jMHN5bmMuaCIKLSNpbmNsdWRlICJoYXNoMGhhc2guaCIKLSNp bmNsdWRlICJtZW0wbWVtLmgiCi0jaW5jbHVkZSAic3J2MHNydi5oIgotCi0vKgotCUlNUExFTUVO VEFUSU9OIE9GIFRIUkVBRCBMT0NBTCBTVE9SQUdFCi0JPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLQotVGhlIHRocmVhZHMgc29tZXRpbWVzIG5lZWQgcHJpdmF0ZSBkYXRh IHdoaWNoIGRlcGVuZHMgb24gdGhlIHRocmVhZCBpZC4KLVRoaXMgaXMgaW1wbGVtZW50ZWQgYXMg YSBoYXNoIHRhYmxlLCB3aGVyZSB0aGUgaGFzaCB2YWx1ZSBpcyBjYWxjdWxhdGVkCi1mcm9tIHRo ZSB0aHJlYWQgaWQsIHRvIHByZXBhcmUgZm9yIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMuIFRo ZSBoYXNoIHRhYmxlCi1pcyBwcm90ZWN0ZWQgYnkgYSBtdXRleC4gSWYgeW91IG5lZWQgbW9kaWZ5 IHRoZSBwcm9ncmFtIGFuZCBwdXQgbmV3IGRhdGEgdG8KLXRoZSB0aHJlYWQgbG9jYWwgc3RvcmFn ZSwganVzdCBhZGQgaXQgdG8gc3RydWN0IHRocl9sb2NhbF9zdHJ1Y3QgaW4gdGhlCi1oZWFkZXIg ZmlsZS4gKi8KLQotLyoqIE11dGV4IHByb3RlY3RpbmcgdGhyX2xvY2FsX2hhc2ggKi8KLXN0YXRp YyBtdXRleF90CQl0aHJfbG9jYWxfbXV0ZXg7Ci0KLS8qKiBUaGUgaGFzaCB0YWJsZS4gVGhlIG1v ZHVsZSBpcyBub3QgeWV0IGluaXRpYWxpemVkIHdoZW4gaXQgaXMgTlVMTC4gKi8KLXN0YXRpYyBo YXNoX3RhYmxlX3QqCXRocl9sb2NhbF9oYXNoCT0gTlVMTDsKLQotLyoqIFRocmVhZCBsb2NhbCBk YXRhICovCi10eXBlZGVmIHN0cnVjdCB0aHJfbG9jYWxfc3RydWN0IHRocl9sb2NhbF90OwotCi0j aWZkZWYgVU5JVl9QRlNfTVVURVgKLS8qIEtleSB0byByZWdpc3RlciB0aGUgbXV0ZXggd2l0aCBw ZXJmb3JtYW5jZSBzY2hlbWEgKi8KLVVOSVZfSU5URVJOIG15c3FsX3Bmc19rZXlfdAl0aHJfbG9j YWxfbXV0ZXhfa2V5OwotI2VuZGlmIC8qIFVOSVZfUEZTX01VVEVYICovCi0KLS8qKiBAYnJpZWYg VGhyZWFkIGxvY2FsIGRhdGEuCi1UaGUgcHJpdmF0ZSBkYXRhIGZvciBlYWNoIHRocmVhZCBzaG91 bGQgYmUgcHV0IHRvCi10aGUgc3RydWN0dXJlIGJlbG93IGFuZCB0aGUgYWNjZXNzb3IgZnVuY3Rp b25zIHdyaXR0ZW4KLWZvciB0aGUgZmllbGQuICovCi1zdHJ1Y3QgdGhyX2xvY2FsX3N0cnVjdHsK LQlvc190aHJlYWRfaWRfdAlpZDsJLyohPCBpZCBvZiB0aGUgdGhyZWFkIHdoaWNoIG93bnMgdGhp cyBzdHJ1Y3QgKi8KLQlvc190aHJlYWRfdAloYW5kbGU7CS8qITwgb3BlcmF0aW5nIHN5c3RlbSBo YW5kbGUgdG8gdGhlIHRocmVhZCAqLwotCWlib29sCQlpbl9pYnVmOy8qITwgVFJVRSBpZiB0aGUg dGhyZWFkIGlzIGRvaW5nIGFuIGlidWYKLQkJCQlvcGVyYXRpb24gKi8KLQloYXNoX25vZGVfdAlo YXNoOwkvKiE8IGhhc2ggY2hhaW4gbm9kZSAqLwotCXVsaW50CQltYWdpY19uOy8qITwgbWFnaWMg bnVtYmVyIChUSFJfTE9DQUxfTUFHSUNfTikgKi8KLX07Ci0KLS8qKiBUaGUgdmFsdWUgb2YgdGhy X2xvY2FsX3N0cnVjdDo6bWFnaWNfbiAqLwotI2RlZmluZSBUSFJfTE9DQUxfTUFHSUNfTgkxMjMx MjM0Ci0KLSNpZmRlZiBVTklWX0RFQlVHCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVZhbGlkYXRlcyB0aHJl YWQgbG9jYWwgZGF0YS4KLUByZXR1cm4JVFJVRSBpZiB2YWxpZCAqLwotc3RhdGljCi1pYm9vbAot dGhyX2xvY2FsX3ZhbGlkYXRlKAotLyo9PT09PT09PT09PT09PT0qLwotCWNvbnN0IHRocl9sb2Nh bF90Kglsb2NhbCkJLyohPCBpbjogZGF0YSB0byB2YWxpZGF0ZSAqLwotewotCXV0X2FkKGxvY2Fs LT5tYWdpY19uID09IFRIUl9MT0NBTF9NQUdJQ19OKTsKLQl1dF9hZChsb2NhbC0+aW5faWJ1ZiA9 PSBGQUxTRSB8fCBsb2NhbC0+aW5faWJ1ZiA9PSBUUlVFKTsKLQlyZXR1cm4oVFJVRSk7Ci19Ci0j ZW5kaWYgLyogVU5JVl9ERUJVRyAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgdGhlIGxv Y2FsIHN0b3JhZ2Ugc3RydWN0IGZvciBhIHRocmVhZC4KLUByZXR1cm4JbG9jYWwgc3RvcmFnZSAq Lwotc3RhdGljCi10aHJfbG9jYWxfdCoKLXRocl9sb2NhbF9nZXQoCi0vKj09PT09PT09PT0qLwot CW9zX3RocmVhZF9pZF90CWlkKQkvKiE8IGluOiB0aHJlYWQgaWQgb2YgdGhlIHRocmVhZCAqLwot ewotCXRocl9sb2NhbF90Kglsb2NhbDsKLQotdHJ5X2FnYWluOgotCXV0X2FkKHRocl9sb2NhbF9o YXNoKTsKLQl1dF9hZChtdXRleF9vd24oJnRocl9sb2NhbF9tdXRleCkpOwotCi0JLyogTG9vayBm b3IgdGhlIGxvY2FsIHN0cnVjdCBpbiB0aGUgaGFzaCB0YWJsZSAqLwotCi0JbG9jYWwgPSBOVUxM OwotCi0JSEFTSF9TRUFSQ0goaGFzaCwgdGhyX2xvY2FsX2hhc2gsIG9zX3RocmVhZF9wZihpZCks Ci0JCSAgICB0aHJfbG9jYWxfdCosIGxvY2FsLCB1dF9hZCh0aHJfbG9jYWxfdmFsaWRhdGUobG9j YWwpKSwKLQkJICAgIG9zX3RocmVhZF9lcShsb2NhbC0+aWQsIGlkKSk7Ci0JaWYgKGxvY2FsID09 IE5VTEwpIHsKLQkJbXV0ZXhfZXhpdCgmdGhyX2xvY2FsX211dGV4KTsKLQotCQl0aHJfbG9jYWxf Y3JlYXRlKCk7Ci0KLQkJbXV0ZXhfZW50ZXIoJnRocl9sb2NhbF9tdXRleCk7Ci0KLQkJZ290byB0 cnlfYWdhaW47Ci0JfQotCi0JdXRfYWQodGhyX2xvY2FsX3ZhbGlkYXRlKGxvY2FsKSk7Ci0KLQly ZXR1cm4obG9jYWwpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgcG9pbnRlciB0byB0 aGUgJ2luX2lidWYnIGZpZWxkIHdpdGhpbiB0aGUgY3VycmVudCB0aHJlYWQgbG9jYWwKLXN0b3Jh Z2UuCi1AcmV0dXJuCXBvaW50ZXIgdG8gdGhlIGluX2lidWYgZmllbGQgKi8KLVVOSVZfSU5URVJO Ci1pYm9vbCoKLXRocl9sb2NhbF9nZXRfaW5faWJ1Zl9maWVsZCh2b2lkKQotLyo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSovCi17Ci0JdGhyX2xvY2FsX3QqCWxvY2FsOwotCi0JbXV0ZXhf ZW50ZXIoJnRocl9sb2NhbF9tdXRleCk7Ci0KLQlsb2NhbCA9IHRocl9sb2NhbF9nZXQob3NfdGhy ZWFkX2dldF9jdXJyX2lkKCkpOwotCi0JbXV0ZXhfZXhpdCgmdGhyX2xvY2FsX211dGV4KTsKLQot CXJldHVybigmKGxvY2FsLT5pbl9pYnVmKSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotQ3JlYXRl cyBhIGxvY2FsIHN0b3JhZ2Ugc3RydWN0IGZvciB0aGUgY2FsbGluZyBuZXcgdGhyZWFkLiAqLwot VU5JVl9JTlRFUk4KLXZvaWQKLXRocl9sb2NhbF9jcmVhdGUodm9pZCkKLS8qPT09PT09PT09PT09 PT09PT09Ki8KLXsKLQl0aHJfbG9jYWxfdCoJbG9jYWw7Ci0KLQlpZiAodGhyX2xvY2FsX2hhc2gg PT0gTlVMTCkgewotCQl0aHJfbG9jYWxfaW5pdCgpOwotCX0KLQotCWxvY2FsID0gbWVtX2FsbG9j KHNpemVvZih0aHJfbG9jYWxfdCkpOwotCi0JbG9jYWwtPmlkID0gb3NfdGhyZWFkX2dldF9jdXJy X2lkKCk7Ci0JbG9jYWwtPmhhbmRsZSA9IG9zX3RocmVhZF9nZXRfY3VycigpOwotCWxvY2FsLT5t YWdpY19uID0gVEhSX0xPQ0FMX01BR0lDX047Ci0JbG9jYWwtPmluX2lidWYgPSBGQUxTRTsKLQot CW11dGV4X2VudGVyKCZ0aHJfbG9jYWxfbXV0ZXgpOwotCi0JSEFTSF9JTlNFUlQodGhyX2xvY2Fs X3QsIGhhc2gsIHRocl9sb2NhbF9oYXNoLAotCQkgICAgb3NfdGhyZWFkX3BmKG9zX3RocmVhZF9n ZXRfY3Vycl9pZCgpKSwKLQkJICAgIGxvY2FsKTsKLQotCW11dGV4X2V4aXQoJnRocl9sb2NhbF9t dXRleCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRnJlZXMgdGhlIGxvY2FsIHN0b3JhZ2Ugc3Ry dWN0IGZvciB0aGUgc3BlY2lmaWVkIHRocmVhZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJf bG9jYWxfZnJlZSgKLS8qPT09PT09PT09PT0qLwotCW9zX3RocmVhZF9pZF90CWlkKQkvKiE8IGlu OiB0aHJlYWQgaWQgKi8KLXsKLQl0aHJfbG9jYWxfdCoJbG9jYWw7Ci0KLQltdXRleF9lbnRlcigm dGhyX2xvY2FsX211dGV4KTsKLQotCS8qIExvb2sgZm9yIHRoZSBsb2NhbCBzdHJ1Y3QgaW4gdGhl IGhhc2ggdGFibGUgKi8KLQotCUhBU0hfU0VBUkNIKGhhc2gsIHRocl9sb2NhbF9oYXNoLCBvc190 aHJlYWRfcGYoaWQpLAotCQkgICAgdGhyX2xvY2FsX3QqLCBsb2NhbCwgdXRfYWQodGhyX2xvY2Fs X3ZhbGlkYXRlKGxvY2FsKSksCi0JCSAgICBvc190aHJlYWRfZXEobG9jYWwtPmlkLCBpZCkpOwot CWlmIChsb2NhbCA9PSBOVUxMKSB7Ci0JCW11dGV4X2V4aXQoJnRocl9sb2NhbF9tdXRleCk7Ci0K LQkJcmV0dXJuOwotCX0KLQotCUhBU0hfREVMRVRFKHRocl9sb2NhbF90LCBoYXNoLCB0aHJfbG9j YWxfaGFzaCwKLQkJICAgIG9zX3RocmVhZF9wZihpZCksIGxvY2FsKTsKLQotCW11dGV4X2V4aXQo JnRocl9sb2NhbF9tdXRleCk7Ci0KLQl1dF9hKGxvY2FsLT5tYWdpY19uID09IFRIUl9MT0NBTF9N QUdJQ19OKTsKLQl1dF9hZCh0aHJfbG9jYWxfdmFsaWRhdGUobG9jYWwpKTsKLQotCW1lbV9mcmVl KGxvY2FsKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1Jbml0aWFsaXplcyB0aGUgdGhyZWFkIGxvY2Fs IHN0b3JhZ2UgbW9kdWxlLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLXRocl9sb2NhbF9pbml0KHZv aWQpCi0vKj09PT09PT09PT09PT09PT0qLwotewotCi0JdXRfYSh0aHJfbG9jYWxfaGFzaCA9PSBO VUxMKTsKLQotCXRocl9sb2NhbF9oYXNoID0gaGFzaF9jcmVhdGUoT1NfVEhSRUFEX01BWF9OICsg MTAwKTsKLQotCW11dGV4X2NyZWF0ZSh0aHJfbG9jYWxfbXV0ZXhfa2V5LAotCQkgICAgICZ0aHJf bG9jYWxfbXV0ZXgsIFNZTkNfVEhSX0xPQ0FMKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1DbG9zZSB0 aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgbW9kdWxlLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLXRo cl9sb2NhbF9jbG9zZSh2b2lkKQotLyo9PT09PT09PT09PT09PT09PSovCi17Ci0JdWxpbnQJCWk7 Ci0KLQl1dF9hKHRocl9sb2NhbF9oYXNoICE9IE5VTEwpOwotCi0JLyogRnJlZSB0aGUgaGFzaCBl bGVtZW50cy4gV2UgZG9uJ3QgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgdGFibGUKLQliZWNhdXNlIHdl IGFyZSBnb2luZyB0byBkZXN0cm95IHRoZSB0YWJsZSBhbnl3YXkuICovCi0JZm9yIChpID0gMDsg aSA8IGhhc2hfZ2V0X25fY2VsbHModGhyX2xvY2FsX2hhc2gpOyBpKyspIHsKLQkJdGhyX2xvY2Fs X3QqCWxvY2FsOwotCi0JCWxvY2FsID0gSEFTSF9HRVRfRklSU1QodGhyX2xvY2FsX2hhc2gsIGkp OwotCi0JCXdoaWxlIChsb2NhbCkgewotCQkJdGhyX2xvY2FsX3QqCXByZXZfbG9jYWwgPSBsb2Nh bDsKLQotCQkJbG9jYWwgPSBIQVNIX0dFVF9ORVhUKGhhc2gsIHByZXZfbG9jYWwpOwotCQkJdXRf YShwcmV2X2xvY2FsLT5tYWdpY19uID09IFRIUl9MT0NBTF9NQUdJQ19OKTsKLQkJCXV0X2FkKHRo cl9sb2NhbF92YWxpZGF0ZShwcmV2X2xvY2FsKSk7Ci0JCQltZW1fZnJlZShwcmV2X2xvY2FsKTsK LQkJfQotCX0KLQotCWhhc2hfdGFibGVfZnJlZSh0aHJfbG9jYWxfaGFzaCk7Ci0JdGhyX2xvY2Fs X2hhc2ggPSBOVUxMOwotfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4 L3RyeDB0cnguYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCXJldmlkOmtl dmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysg Yi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTAzMjQxMjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtMzksNyArMzksNiBAQCBD cmVhdGVkIDMvMjYvMTk5NiBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJyZWFkMHJlYWQuaCIKICNp bmNsdWRlICJzcnYwc3J2LmgiCiAjaW5jbHVkZSAic3J2MHN0YXJ0LmgiCi0jaW5jbHVkZSAidGhy MGxvYy5oIgogI2luY2x1ZGUgImJ0cjBzZWEuaCIKICNpbmNsdWRlICJvczBwcm9jLmgiCiAjaW5j bHVkZSAidHJ4MHhhLmgiCgo= --===============1847914406== 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: fcf7dce31553aa7d44ebfa5d331b53a86e995a4d # timestamp: 2011-03-24 14:26:44 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: kevin.lewis@stripped\ # 847fzkbb2t49b1u2 # # Begin bundle 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 Fv0LbAoc9I/+D0z7p/8XckU4UJB6D37Q --===============1847914406==--