From: Shugo Maeda Date: 2010-11-27T13:39:25+09:00 Subject: [ruby-core:33414] [Ruby 1.9-Feature#4085] Refinements and nested methods --mimepart_4cf08b7d358b4_36e61376f918145ce Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #4085 has been updated by Shugo Maeda. File control_frame_change-r29944-20101127.diff added File refinements-r29944-20101127.diff added File nested_methods-r29944-20101127.diff added Hi, > How about to separate them into the following three patches? > > 1. changes of control frames and method lookup > 2. Refinements support > 3. nested methods support I have attached these three patches. Please check them. The following code works now: class Foo; end = module FooExt refine(Foo) { include FooExt } def foo puts "foo" end def bar puts "bar" foo end end = using FooExt f =3D Foo.new f.foo f.bar ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4085 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4cf08b7d358b4_36e61376f918145ce Content-Type: text/x-patch; name=control_frame_change-r29944-20101127.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=control_frame_change-r29944-20101127.diff ZGlmZiAtLWdpdCBhL2NsYXNzLmMgYi9jbGFzcy5jCmluZGV4IDIyNDE3OTIu LmFjMzk4NjMgMTAwNjQ0Ci0tLSBhL2NsYXNzLmMKKysrIGIvY2xhc3MuYwpA QCAtMTM4Nyw3ICsxMzg3LDcgQEAgcmJfZGVmaW5lX2F0dHIoVkFMVUUga2xh c3MsIGNvbnN0IGNoYXIgKm5hbWUsIGludCByZWFkLCBpbnQgd3JpdGUpCiBp bnQKIHJiX29ial9iYXNpY190b19zX3AoVkFMVUUgb2JqKQogewotICAgIGNv bnN0IHJiX21ldGhvZF9lbnRyeV90ICptZSA9IHJiX21ldGhvZF9lbnRyeShD TEFTU19PRihvYmopLCByYl9pbnRlcm4oInRvX3MiKSk7CisgICAgY29uc3Qg cmJfbWV0aG9kX2VudHJ5X3QgKm1lID0gcmJfbWV0aG9kX2VudHJ5KENMQVNT X09GKG9iaiksIHJiX2ludGVybigidG9fcyIpLCAwKTsKICAgICBpZiAobWUg JiYgbWUtPmRlZiAmJiBtZS0+ZGVmLT50eXBlID09IFZNX01FVEhPRF9UWVBF X0NGVU5DICYmCiAJbWUtPmRlZi0+Ym9keS5jZnVuYy5mdW5jID09IHJiX2Fu eV90b19zKQogCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvaW5zbnMuZGVmIGIv aW5zbnMuZGVmCmluZGV4IGU0NTYwOWIuLjU5NzRjYjIgMTAwNjQ0Ci0tLSBh L2luc25zLmRlZgorKysgYi9pbnNucy5kZWYKQEAgLTc5Miw3ICs3OTIsNyBA QCBkZWZpbmVkCiAJYnJlYWs7CiAgICAgICBjYXNlIERFRklORURfTUVUSE9E OnsKIAlWQUxVRSBrbGFzcyA9IENMQVNTX09GKHYpOwotCWNvbnN0IHJiX21l dGhvZF9lbnRyeV90ICptZSA9IHJiX21ldGhvZF9lbnRyeShrbGFzcywgU1lN MklEKG9iaikpOworCWNvbnN0IHJiX21ldGhvZF9lbnRyeV90ICptZSA9IHJi X21ldGhvZF9lbnRyeShrbGFzcywgU1lNMklEKG9iaiksIDApOwogCiAJaWYg KG1lKSB7CiAJICAgIGlmICghKG1lLT5mbGFnICYgTk9FWF9QUklWQVRFKSkg ewpAQCAtOTY0LDcgKzk2NCw3IEBAIGRlZmluZWNsYXNzCiAKICAgICAvKiBl bnRlciBzY29wZSAqLwogICAgIHZtX3B1c2hfZnJhbWUodGgsIGNsYXNzX2lz ZXEsCi0JCSAgVk1fRlJBTUVfTUFHSUNfQ0xBU1MsIGtsYXNzLCAoVkFMVUUp IEdFVF9CTE9DS19QVFIoKSwKKwkJICBWTV9GUkFNRV9NQUdJQ19DTEFTUywg a2xhc3MsIDAsIChWQUxVRSkgR0VUX0JMT0NLX1BUUigpLAogCQkgIGNsYXNz X2lzZXEtPmlzZXFfZW5jb2RlZCwgR0VUX1NQKCksIDAsCiAJCSAgY2xhc3Nf aXNlcS0+bG9jYWxfc2l6ZSk7CiAgICAgUkVTVE9SRV9SRUdTKCk7CkBAIC05 OTYsNyArOTk2LDcgQEAgc2VuZAogKFZBTFVFIHZhbCkgLy8gaW5jICs9IC0g KGludCkob3BfYXJnYyArICgob3BfZmxhZyAmIFZNX0NBTExfQVJHU19CTE9D S0FSR19CSVQpID8gMSA6IDApKTsKIHsKICAgICBjb25zdCByYl9tZXRob2Rf ZW50cnlfdCAqbWU7Ci0gICAgVkFMVUUgcmVjdiwga2xhc3M7CisgICAgVkFM VUUgcmVjdiwga2xhc3MsIGRlZmluZWRfY2xhc3M7CiAgICAgcmJfYmxvY2tf dCAqYmxvY2twdHIgPSAwOwogICAgIFZBTFVFIGZsYWcgPSBvcF9mbGFnOwog ICAgIGludCBudW0gPSBjYWxsZXJfc2V0dXBfYXJncyh0aCwgR0VUX0NGUCgp LCBmbGFnLCAoaW50KW9wX2FyZ2MsCkBAIC0xMDA2LDggKzEwMDYsOCBAQCBz ZW5kCiAgICAgLyogZ2V0IHJlY2VpdmVyICovCiAgICAgcmVjdiA9IChmbGFn ICYgVk1fQ0FMTF9GQ0FMTF9CSVQpID8gR0VUX1NFTEYoKSA6IFRPUE4obnVt KTsKICAgICBrbGFzcyA9IENMQVNTX09GKHJlY3YpOwotICAgIG1lID0gdm1f bWV0aG9kX3NlYXJjaChpZCwga2xhc3MsIGljKTsKLSAgICBDQUxMX01FVEhP RChudW0sIGJsb2NrcHRyLCBmbGFnLCBpZCwgbWUsIHJlY3YpOworICAgIG1l ID0gdm1fbWV0aG9kX3NlYXJjaChpZCwga2xhc3MsIGljLCAmZGVmaW5lZF9j bGFzcyk7CisgICAgQ0FMTF9NRVRIT0QobnVtLCBibG9ja3B0ciwgZmxhZywg aWQsIG1lLCByZWN2LCBkZWZpbmVkX2NsYXNzKTsKIH0KIAogLyoqCkBAIC0x MDMwLDIwICsxMDMwLDI2IEBAIGludm9rZXN1cGVyCiAgICAgVkFMVUUgcmVj diwga2xhc3M7CiAgICAgSUQgaWQ7CiAgICAgY29uc3QgcmJfbWV0aG9kX2Vu dHJ5X3QgKm1lOworICAgIHJiX2lzZXFfdCAqaXA7CiAKICAgICBmbGFnID0g Vk1fQ0FMTF9TVVBFUl9CSVQgfCBWTV9DQUxMX0ZDQUxMX0JJVDsKIAogICAg IHJlY3YgPSBHRVRfU0VMRigpOwogICAgIHZtX3NlYXJjaF9zdXBlcmNsYXNz KEdFVF9DRlAoKSwgR0VUX0lTRVEoKSwgcmVjdiwgVE9QTihudW0pLCAmaWQs ICZrbGFzcyk7CiAKLSAgICAvKiB0ZW1wb3JhcnkgbWVhc3VyZSBmb3IgW0J1 ZyAjMjQwMl0gW0J1ZyAjMjUwMl0gW0J1ZyAjMzEzNl0gKi8KLSAgICBpZiAo IXJiX29ial9pc19raW5kX29mKHJlY3YsIGtsYXNzKSkgewotCXJiX3JhaXNl KHJiX2VOb3RJbXBFcnJvciwgInN1cGVyIGZyb20gc2luZ2xldG9uIG1ldGhv ZCB0aGF0IGlzIGRlZmluZWQgdG8gbXVsdGlwbGUgY2xhc3NlcyBpcyBub3Qg c3VwcG9ydGVkOyB0aGlzIHdpbGwgYmUgZml4ZWQgaW4gMS45LjMgb3IgbGF0 ZXIiKTsKKyAgICBpcCA9IEdFVF9JU0VRKCk7CisgICAgd2hpbGUgKGlwICYm ICFpcC0+a2xhc3MpIHsKKwlpcCA9IGlwLT5wYXJlbnRfaXNlcTsKKyAgICB9 CisgIGFnYWluOgorICAgIG1lID0gcmJfbWV0aG9kX2VudHJ5KGtsYXNzLCBp ZCwgJmtsYXNzKTsKKyAgICBpZiAobWUgJiYgbWUtPmRlZi0+dHlwZSA9PSBW TV9NRVRIT0RfVFlQRV9JU0VRICYmCisJbWUtPmRlZi0+Ym9keS5pc2VxID09 IGlwKSB7CisJa2xhc3MgPSBSQ0xBU1NfU1VQRVIoa2xhc3MpOworCWdvdG8g YWdhaW47CiAgICAgfQogCi0gICAgbWUgPSByYl9tZXRob2RfZW50cnkoa2xh c3MsIGlkKTsKLQotICAgIENBTExfTUVUSE9EKG51bSwgYmxvY2twdHIsIGZs YWcsIGlkLCBtZSwgcmVjdik7CisgICAgQ0FMTF9NRVRIT0QobnVtLCBibG9j a3B0ciwgZmxhZywgaWQsIG1lLCByZWN2LCBrbGFzcyk7CiB9CiAKIC8qKgpA QCAtMTY2OCw3ICsxNjc0LDcgQEAgb3B0X25lcQogKFZBTFVFIHZhbCkKIHsK ICAgICBleHRlcm4gVkFMVUUgcmJfb2JqX25vdF9lcXVhbChWQUxVRSBvYmox LCBWQUxVRSBvYmoyKTsKLSAgICBjb25zdCByYl9tZXRob2RfZW50cnlfdCAq bWUgPSB2bV9tZXRob2Rfc2VhcmNoKGlkTmVxLCBDTEFTU19PRihyZWN2KSwg aWMpOworICAgIGNvbnN0IHJiX21ldGhvZF9lbnRyeV90ICptZSA9IHZtX21l dGhvZF9zZWFyY2goaWROZXEsIENMQVNTX09GKHJlY3YpLCBpYywgMCk7CiAg ICAgdmFsID0gUXVuZGVmOwogCiAgICAgaWYgKGNoZWNrX2NmdW5jKG1lLCBy Yl9vYmpfbm90X2VxdWFsKSkgewpAQCAtMjA2OSw3ICsyMDc1LDcgQEAgb3B0 X25vdAogKFZBTFVFIHZhbCkKIHsKICAgICBleHRlcm4gVkFMVUUgcmJfb2Jq X25vdChWQUxVRSBvYmopOwotICAgIGNvbnN0IHJiX21ldGhvZF9lbnRyeV90 ICptZSA9IHZtX21ldGhvZF9zZWFyY2goaWROb3QsIENMQVNTX09GKHJlY3Yp LCBpYyk7CisgICAgY29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lID0gdm1f bWV0aG9kX3NlYXJjaChpZE5vdCwgQ0xBU1NfT0YocmVjdiksIGljLCAwKTsK IAogICAgIGlmIChjaGVja19jZnVuYyhtZSwgcmJfb2JqX25vdCkpIHsKIAl2 YWwgPSBSVEVTVChyZWN2KSA/IFFmYWxzZSA6IFF0cnVlOwpkaWZmIC0tZ2l0 IGEvbWV0aG9kLmggYi9tZXRob2QuaAppbmRleCAzY2ZlNDM4Li5jOTY3YTY5 IDEwMDY0NAotLS0gYS9tZXRob2QuaAorKysgYi9tZXRob2QuaApAQCAtODks OSArODksOSBAQCBzdHJ1Y3QgdW5saW5rZWRfbWV0aG9kX2VudHJ5X2xpc3Rf ZW50cnkgewogCiB2b2lkIHJiX2FkZF9tZXRob2RfY2Z1bmMoVkFMVUUga2xh c3MsIElEIG1pZCwgVkFMVUUgKCpmdW5jKShBTllBUkdTKSwgaW50IGFyZ2Ms IHJiX21ldGhvZF9mbGFnX3Qgbm9leCk7CiByYl9tZXRob2RfZW50cnlfdCAq cmJfYWRkX21ldGhvZChWQUxVRSBrbGFzcywgSUQgbWlkLCByYl9tZXRob2Rf dHlwZV90IHR5cGUsIHZvaWQgKm9wdGlvbiwgcmJfbWV0aG9kX2ZsYWdfdCBu b2V4KTsKLXJiX21ldGhvZF9lbnRyeV90ICpyYl9tZXRob2RfZW50cnkoVkFM VUUga2xhc3MsIElEIGlkKTsKK3JiX21ldGhvZF9lbnRyeV90ICpyYl9tZXRo b2RfZW50cnkoVkFMVUUga2xhc3MsIElEIGlkLCBWQUxVRSAqZGVmaW5lX2Ns YXNzX3B0cik7CiAKLXJiX21ldGhvZF9lbnRyeV90ICpyYl9tZXRob2RfZW50 cnlfZ2V0X3dpdGhvdXRfY2FjaGUoVkFMVUUga2xhc3MsIElEIGlkKTsKK3Ji X21ldGhvZF9lbnRyeV90ICpyYl9tZXRob2RfZW50cnlfZ2V0X3dpdGhvdXRf Y2FjaGUoVkFMVUUga2xhc3MsIElEIGlkLCBWQUxVRSAqZGVmaW5lX2NsYXNz X3B0cik7CiByYl9tZXRob2RfZW50cnlfdCAqcmJfbWV0aG9kX2VudHJ5X3Nl dChWQUxVRSBrbGFzcywgSUQgbWlkLCBjb25zdCByYl9tZXRob2RfZW50cnlf dCAqLCByYl9tZXRob2RfZmxhZ190IG5vZXgpOwogCiBpbnQgcmJfbWV0aG9k X2VudHJ5X2FyaXR5KGNvbnN0IHJiX21ldGhvZF9lbnRyeV90ICptZSk7CmRp ZmYgLS1naXQgYS9wcm9jLmMgYi9wcm9jLmMKaW5kZXggMDQ4OWRkOS4uODdj ZjNjMSAxMDA2NDQKLS0tIGEvcHJvYy5jCisrKyBiL3Byb2MuYwpAQCAtMTUs NiArMTUsNyBAQAogc3RydWN0IE1FVEhPRCB7CiAgICAgVkFMVUUgcmVjdjsK ICAgICBWQUxVRSByY2xhc3M7CisgICAgVkFMVUUgZGVmaW5lZF9jbGFzczsK ICAgICBJRCBpZDsKICAgICByYl9tZXRob2RfZW50cnlfdCBtZTsKIH07CkBA IC04NjEsNiArODYyLDcgQEAgc3RhdGljIHZvaWQKIGJtX21hcmsodm9pZCAq cHRyKQogewogICAgIHN0cnVjdCBNRVRIT0QgKmRhdGEgPSBwdHI7CisgICAg cmJfZ2NfbWFyayhkYXRhLT5kZWZpbmVkX2NsYXNzKTsKICAgICByYl9nY19t YXJrKGRhdGEtPnJjbGFzcyk7CiAgICAgcmJfZ2NfbWFyayhkYXRhLT5yZWN2 KTsKICAgICByYl9tYXJrX21ldGhvZF9lbnRyeSgmZGF0YS0+bWUpOwpAQCAt OTAzLDcgKzkwNSw3IEBAIHN0YXRpYyBWQUxVRQogbW5ldyhWQUxVRSBrbGFz cywgVkFMVUUgb2JqLCBJRCBpZCwgVkFMVUUgbWNsYXNzLCBpbnQgc2NvcGUp CiB7CiAgICAgVkFMVUUgbWV0aG9kOwotICAgIFZBTFVFIHJjbGFzcyA9IGts YXNzOworICAgIFZBTFVFIHJjbGFzcyA9IGtsYXNzLCBkZWZpbmVkX2NsYXNz OwogICAgIElEIHJpZCA9IGlkOwogICAgIHN0cnVjdCBNRVRIT0QgKmRhdGE7 CiAgICAgcmJfbWV0aG9kX2VudHJ5X3QgKm1lLCBtZWI7CkBAIC05MTEsNyAr OTEzLDcgQEAgbW5ldyhWQUxVRSBrbGFzcywgVkFMVUUgb2JqLCBJRCBpZCwg VkFMVUUgbWNsYXNzLCBpbnQgc2NvcGUpCiAgICAgcmJfbWV0aG9kX2ZsYWdf dCBmbGFnID0gTk9FWF9VTkRFRjsKIAogICBhZ2FpbjoKLSAgICBtZSA9IHJi X21ldGhvZF9lbnRyeShrbGFzcywgaWQpOworICAgIG1lID0gcmJfbWV0aG9k X2VudHJ5KGtsYXNzLCBpZCwgJmRlZmluZWRfY2xhc3MpOwogICAgIGlmIChV TkRFRklORURfTUVUSE9EX0VOVFJZX1AobWUpKSB7CiAJSUQgcm1pc3MgPSBy Yl9pbnRlcm4oInJlc3BvbmRfdG9fbWlzc2luZz8iKTsKIAlWQUxVRSBzeW0g PSBJRDJTWU0oaWQpOwpAQCAtOTUzLDEyICs5NTUsMTIgQEAgbW5ldyhWQUxV RSBrbGFzcywgVkFMVUUgb2JqLCBJRCBpZCwgVkFMVUUgbWNsYXNzLCBpbnQg c2NvcGUpCiAJfQogICAgIH0KICAgICBpZiAoZGVmICYmIGRlZi0+dHlwZSA9 PSBWTV9NRVRIT0RfVFlQRV9aU1VQRVIpIHsKLQlrbGFzcyA9IFJDTEFTU19T VVBFUihtZS0+a2xhc3MpOworCWtsYXNzID0gUkNMQVNTX1NVUEVSKGRlZmlu ZWRfY2xhc3MpOwogCWlkID0gZGVmLT5vcmlnaW5hbF9pZDsKIAlnb3RvIGFn YWluOwogICAgIH0KIAotICAgIGtsYXNzID0gbWUtPmtsYXNzOworICAgIGts YXNzID0gZGVmaW5lZF9jbGFzczsKIAogICAgIHdoaWxlIChyY2xhc3MgIT0g a2xhc3MgJiYKIAkgICAoRkxfVEVTVChyY2xhc3MsIEZMX1NJTkdMRVRPTikg fHwgVFlQRShyY2xhc3MpID09IFRfSUNMQVNTKSkgewpAQCAtOTc0LDYgKzk3 Niw3IEBAIG1uZXcoVkFMVUUga2xhc3MsIFZBTFVFIG9iaiwgSUQgaWQsIFZB TFVFIG1jbGFzcywgaW50IHNjb3BlKQogCiAgICAgZGF0YS0+cmVjdiA9IG9i ajsKICAgICBkYXRhLT5yY2xhc3MgPSByY2xhc3M7CisgICAgZGF0YS0+ZGVm aW5lZF9jbGFzcyA9IGRlZmluZWRfY2xhc3M7CiAgICAgZGF0YS0+aWQgPSBy aWQ7CiAgICAgZGF0YS0+bWUgPSAqbWU7CiAgICAgaWYgKGRlZikgZGVmLT5h bGlhc19jb3VudCsrOwpAQCAtMTA4NSw2ICsxMDg4LDcgQEAgbWV0aG9kX3Vu YmluZChWQUxVRSBvYmopCiAgICAgZGF0YS0+bWUgPSBvcmlnLT5tZTsKICAg ICBpZiAob3JpZy0+bWUuZGVmKSBvcmlnLT5tZS5kZWYtPmFsaWFzX2NvdW50 Kys7CiAgICAgZGF0YS0+cmNsYXNzID0gb3JpZy0+cmNsYXNzOworICAgIGRh dGEtPmRlZmluZWRfY2xhc3MgPSBvcmlnLT5kZWZpbmVkX2NsYXNzOwogICAg IE9CSl9JTkZFQ1QobWV0aG9kLCBvYmopOwogCiAgICAgcmV0dXJuIG1ldGhv ZDsKQEAgLTE0MjEsMTAgKzE0MjUsMTAgQEAgcmJfbWV0aG9kX2NhbGwoaW50 IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxVRSBtZXRob2QpCiAgICAgaWYgKChz dGF0ZSA9IEVYRUNfVEFHKCkpID09IDApIHsKIAlyYl90aHJlYWRfdCAqdGgg PSBHRVRfVEhSRUFEKCk7CiAJVkFMVUUgcmJfdm1fY2FsbChyYl90aHJlYWRf dCAqdGgsIFZBTFVFIHJlY3YsIFZBTFVFIGlkLCBpbnQgYXJnYywgY29uc3Qg VkFMVUUgKmFyZ3YsCi0JCQkgY29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1l KTsKKwkJCSBjb25zdCByYl9tZXRob2RfZW50cnlfdCAqbWUsIFZBTFVFIGRl ZmluZWRfY2xhc3MpOwogCiAJUEFTU19QQVNTRURfQkxPQ0tfVEgodGgpOwot CXJlc3VsdCA9IHJiX3ZtX2NhbGwodGgsIGRhdGEtPnJlY3YsIGRhdGEtPmlk LCAgYXJnYywgYXJndiwgJmRhdGEtPm1lKTsKKwlyZXN1bHQgPSByYl92bV9j YWxsKHRoLCBkYXRhLT5yZWN2LCBkYXRhLT5pZCwgIGFyZ2MsIGFyZ3YsICZk YXRhLT5tZSwgZGF0YS0+ZGVmaW5lZF9jbGFzcyk7CiAgICAgfQogICAgIFBP UF9UQUcoKTsKICAgICBpZiAoc2FmZSA+PSAwKQpAQCAtMTY0OCw3ICsxNjUy LDcgQEAgbWV0aG9kX2FyaXR5KFZBTFVFIG1ldGhvZCkKIGludAogcmJfbW9k X21ldGhvZF9hcml0eShWQUxVRSBtb2QsIElEIGlkKQogewotICAgIHJiX21l dGhvZF9lbnRyeV90ICptZSA9IHJiX21ldGhvZF9lbnRyeShtb2QsIGlkKTsK KyAgICByYl9tZXRob2RfZW50cnlfdCAqbWUgPSByYl9tZXRob2RfZW50cnko bW9kLCBpZCwgMCk7CiAgICAgcmV0dXJuIHJiX21ldGhvZF9lbnRyeV9hcml0 eShtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3ZtLmMgYi92bS5jCmluZGV4IDll NzA4N2EuLmI2MWQ1YmYgMTAwNjQ0Ci0tLSBhL3ZtLmMKKysrIGIvdm0uYwpA QCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIFZBTFVFCiByYl92bV9z ZXRfZmluaXNoX2VudihyYl90aHJlYWRfdCAqIHRoKQogewogICAgIHZtX3B1 c2hfZnJhbWUodGgsIDAsIFZNX0ZSQU1FX01BR0lDX0ZJTklTSCwKLQkJICBR bmlsLCB0aC0+Y2ZwLT5sZnBbMF0sIDAsCisJCSAgUW5pbCwgUW5pbCwgdGgt PmNmcC0+bGZwWzBdLCAwLAogCQkgIHRoLT5jZnAtPnNwLCAwLCAxKTsKICAg ICB0aC0+Y2ZwLT5wYyA9IChWQUxVRSAqKSZmaW5pc2hfaW5zbl9zZXFbMF07 CiAgICAgcmV0dXJuIFF0cnVlOwpAQCAtOTAsNyArOTAsNyBAQCB2bV9zZXRf dG9wX3N0YWNrKHJiX3RocmVhZF90ICogdGgsIFZBTFVFIGlzZXF2YWwpCiAg ICAgcmJfdm1fc2V0X2ZpbmlzaF9lbnYodGgpOwogCiAgICAgdm1fcHVzaF9m cmFtZSh0aCwgaXNlcSwgVk1fRlJBTUVfTUFHSUNfVE9QLAotCQkgIHRoLT50 b3Bfc2VsZiwgMCwgaXNlcS0+aXNlcV9lbmNvZGVkLAorCQkgIHRoLT50b3Bf c2VsZiwgcmJfY09iamVjdCwgMCwgaXNlcS0+aXNlcV9lbmNvZGVkLAogCQkg IHRoLT5jZnAtPnNwLCAwLCBpc2VxLT5sb2NhbF9zaXplKTsKIAogICAgIENI RUNLX1NUQUNLX09WRVJGTE9XKHRoLT5jZnAsIGlzZXEtPnN0YWNrX21heCk7 CkBAIC0xMDUsNyArMTA1LDcgQEAgdm1fc2V0X2V2YWxfc3RhY2socmJfdGhy ZWFkX3QgKiB0aCwgVkFMVUUgaXNlcXZhbCwgY29uc3QgTk9ERSAqY3JlZikK IAogICAgIC8qIGZvciByZXR1cm4gKi8KICAgICByYl92bV9zZXRfZmluaXNo X2Vudih0aCk7Ci0gICAgdm1fcHVzaF9mcmFtZSh0aCwgaXNlcSwgVk1fRlJB TUVfTUFHSUNfRVZBTCwgYmxvY2stPnNlbGYsCisgICAgdm1fcHVzaF9mcmFt ZSh0aCwgaXNlcSwgVk1fRlJBTUVfTUFHSUNfRVZBTCwgYmxvY2stPnNlbGYs IGJsb2NrLT5rbGFzcywKIAkJICBHQ19HVUFSREVEX1BUUihibG9jay0+ZGZw KSwgaXNlcS0+aXNlcV9lbmNvZGVkLAogCQkgIHRoLT5jZnAtPnNwLCBibG9j ay0+bGZwLCBpc2VxLT5sb2NhbF9zaXplKTsKIApAQCAtNDkwLDYgKzQ5MCw3 IEBAIHJiX3ZtX21ha2VfcHJvYyhyYl90aHJlYWRfdCAqdGgsIGNvbnN0IHJi X2Jsb2NrX3QgKmJsb2NrLCBWQUxVRSBrbGFzcykKICAgICBHZXRQcm9jUHRy KHByb2N2YWwsIHByb2MpOwogICAgIHByb2MtPmJsb2NrcHJvY3ZhbCA9IGJs b2NrcHJvY3ZhbDsKICAgICBwcm9jLT5ibG9jay5zZWxmID0gYmxvY2stPnNl bGY7CisgICAgcHJvYy0+YmxvY2sua2xhc3MgPSBibG9jay0+a2xhc3M7CiAg ICAgcHJvYy0+YmxvY2subGZwID0gYmxvY2stPmxmcDsKICAgICBwcm9jLT5i bG9jay5kZnAgPSBibG9jay0+ZGZwOwogICAgIHByb2MtPmJsb2NrLmlzZXEg PSBibG9jay0+aXNlcTsKQEAgLTUzOSw5ICs1NDAsMTEgQEAgaW52b2tlX2Js b2NrX2Zyb21fYyhyYl90aHJlYWRfdCAqdGgsIGNvbnN0IHJiX2Jsb2NrX3Qg KmJsb2NrLAogCQkJCSAgICAgdHlwZSA9PSBWTV9GUkFNRV9NQUdJQ19MQU1C REEpOwogCiAJbmNmcCA9IHZtX3B1c2hfZnJhbWUodGgsIGlzZXEsIHR5cGUs Ci0JCQkgICAgIHNlbGYsIEdDX0dVQVJERURfUFRSKGJsb2NrLT5kZnApLAor CQkJICAgICBzZWxmLCB0aC0+cGFzc2VkX2RlZmluZWRfY2xhc3MsCisJCQkg ICAgIEdDX0dVQVJERURfUFRSKGJsb2NrLT5kZnApLAogCQkJICAgICBpc2Vx LT5pc2VxX2VuY29kZWQgKyBvcHRfcGMsIGNmcC0+c3AgKyBhcmdfc2l6ZSwg YmxvY2stPmxmcCwKIAkJCSAgICAgaXNlcS0+bG9jYWxfc2l6ZSAtIGFyZ19z aXplKTsKKwl0aC0+cGFzc2VkX2RlZmluZWRfY2xhc3MgPSAwOwogCW5jZnAt Pm1lID0gdGgtPnBhc3NlZF9tZTsKIAl0aC0+cGFzc2VkX21lID0gMDsKIAl0 aC0+cGFzc2VkX2Jsb2NrID0gYmxvY2twdHI7CkBAIC0xMzE3LDcgKzEzMjAs OCBAQCB2bV9leGVjKHJiX3RocmVhZF90ICp0aCkKIAkgICAgLyogcHVzaCBi bG9jayBmcmFtZSAqLwogCSAgICBjZnAtPnNwWzBdID0gZXJyOwogCSAgICB2 bV9wdXNoX2ZyYW1lKHRoLCBjYXRjaF9pc2VxLCBWTV9GUkFNRV9NQUdJQ19C TE9DSywKLQkJCSAgY2ZwLT5zZWxmLCAoVkFMVUUpY2ZwLT5kZnAsIGNhdGNo X2lzZXEtPmlzZXFfZW5jb2RlZCwKKwkJCSAgY2ZwLT5zZWxmLCBjZnAtPmts YXNzLAorCQkJICAoVkFMVUUpY2ZwLT5kZnAsIGNhdGNoX2lzZXEtPmlzZXFf ZW5jb2RlZCwKIAkJCSAgY2ZwLT5zcCArIDEgLyogcHVzaCB2YWx1ZSAqLywg Y2ZwLT5sZnAsIGNhdGNoX2lzZXEtPmxvY2FsX3NpemUgLSAxKTsKIAogCSAg ICBzdGF0ZSA9IDA7CkBAIC0xNDU1LDcgKzE0NTksNyBAQCByYl92bV9jYWxs X2NmdW5jKFZBTFVFIHJlY3YsIFZBTFVFICgqZnVuYykoVkFMVUUpLCBWQUxV RSBhcmcsCiAgICAgVkFMVUUgdmFsOwogCiAgICAgdm1fcHVzaF9mcmFtZSh0 aCwgREFUQV9QVFIoaXNlcXZhbCksIFZNX0ZSQU1FX01BR0lDX1RPUCwKLQkJ ICByZWN2LCAoVkFMVUUpYmxvY2twdHIsIDAsIHJlZ19jZnAtPnNwLCAwLCAx KTsKKwkJICByZWN2LCBDTEFTU19PRihyZWN2KSwgKFZBTFVFKWJsb2NrcHRy LCAwLCByZWdfY2ZwLT5zcCwgMCwgMSk7CiAKICAgICB2YWwgPSAoKmZ1bmMp KGFyZyk7CiAKQEAgLTE2NjgsNiArMTY3Miw3IEBAIHJiX3RocmVhZF9tYXJr KHZvaWQgKnB0cikKIAlSVUJZX01BUktfVU5MRVNTX05VTEwodGgtPnJvb3Rf ZmliZXIpOwogCVJVQllfTUFSS19VTkxFU1NfTlVMTCh0aC0+c3RhdF9pbnNu X3VzYWdlKTsKIAlSVUJZX01BUktfVU5MRVNTX05VTEwodGgtPmxhc3Rfc3Rh dHVzKTsKKwlSVUJZX01BUktfVU5MRVNTX05VTEwodGgtPnBhc3NlZF9kZWZp bmVkX2NsYXNzKTsKIAogCVJVQllfTUFSS19VTkxFU1NfTlVMTCh0aC0+bG9j a2luZ19tdXRleCk7CiAKQEAgLTE3NzksNyArMTc4NCw3IEBAIHRoX2luaXQy KHJiX3RocmVhZF90ICp0aCwgVkFMVUUgc2VsZikKIAogICAgIHRoLT5jZnAg PSAodm9pZCAqKSh0aC0+c3RhY2sgKyB0aC0+c3RhY2tfc2l6ZSk7CiAKLSAg ICB2bV9wdXNoX2ZyYW1lKHRoLCAwLCBWTV9GUkFNRV9NQUdJQ19UT1AsIFFu aWwsIDAsIDAsCisgICAgdm1fcHVzaF9mcmFtZSh0aCwgMCwgVk1fRlJBTUVf TUFHSUNfVE9QLCBRbmlsLCBRbmlsLCAwLCAwLAogCQkgIHRoLT5zdGFjaywg MCwgMSk7CiAKICAgICB0aC0+c3RhdHVzID0gVEhSRUFEX1JVTk5BQkxFOwpk aWZmIC0tZ2l0IGEvdm1fY29yZS5oIGIvdm1fY29yZS5oCmluZGV4IDFlYTk0 MTMuLjgxMWU3ZmYgMTAwNjQ0Ci0tLSBhL3ZtX2NvcmUuaAorKysgYi92bV9j b3JlLmgKQEAgLTEzMiw2ICsxMzIsOSBAQCBzdHJ1Y3QgaXNlcV9pbmxpbmVf Y2FjaGVfZW50cnkgewogCXJiX21ldGhvZF9lbnRyeV90ICptZXRob2Q7CiAJ bG9uZyBpbmRleDsKICAgICB9IGljX3ZhbHVlOworICAgIHVuaW9uIHsKKwlW QUxVRSBkZWZpbmVkX2NsYXNzOworICAgIH0gaWNfdmFsdWUyOwogfTsKIAog I2lmIDEKQEAgLTMyNSwxNiArMzI4LDE4IEBAIHR5cGVkZWYgc3RydWN0IHsK ICAgICBWQUxVRSAqYnA7CQkJLyogY2ZwWzJdICovCiAgICAgcmJfaXNlcV90 ICppc2VxOwkJLyogY2ZwWzNdICovCiAgICAgVkFMVUUgZmxhZzsJCQkvKiBj ZnBbNF0gKi8KLSAgICBWQUxVRSBzZWxmOwkJCS8qIGNmcFs1XSAvIGJsb2Nr WzBdICovCi0gICAgVkFMVUUgKmxmcDsJCQkvKiBjZnBbNl0gLyBibG9ja1sx XSAqLwotICAgIFZBTFVFICpkZnA7CQkJLyogY2ZwWzddIC8gYmxvY2tbMl0g Ki8KLSAgICByYl9pc2VxX3QgKmJsb2NrX2lzZXE7CS8qIGNmcFs4XSAvIGJs b2NrWzNdICovCi0gICAgVkFMVUUgcHJvYzsJCQkvKiBjZnBbOV0gLyBibG9j a1s0XSAqLwotICAgIGNvbnN0IHJiX21ldGhvZF9lbnRyeV90ICptZTsvKiBj ZnBbMTBdICovCisgICAgVkFMVUUgc2VsZjsJCQkvKiBjZnBbNV0gIC8gYmxv Y2tbMF0gKi8KKyAgICBWQUxVRSBrbGFzczsJCS8qIGNmcFs2XSAgLyBibG9j a1sxXSAqLworICAgIFZBTFVFICpsZnA7CQkJLyogY2ZwWzddICAvIGJsb2Nr WzJdICovCisgICAgVkFMVUUgKmRmcDsJCQkvKiBjZnBbOF0gIC8gYmxvY2tb M10gKi8KKyAgICByYl9pc2VxX3QgKmJsb2NrX2lzZXE7CS8qIGNmcFs5XSAg LyBibG9ja1s0XSAqLworICAgIFZBTFVFIHByb2M7CQkJLyogY2ZwWzEwXSAv IGJsb2NrWzVdICovCisgICAgY29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1l Oy8qIGNmcFsxMV0gKi8KIH0gcmJfY29udHJvbF9mcmFtZV90OwogCiB0eXBl ZGVmIHN0cnVjdCByYl9ibG9ja19zdHJ1Y3QgewogICAgIFZBTFVFIHNlbGY7 CQkJLyogc2hhcmUgd2l0aCBtZXRob2QgZnJhbWUgaWYgaXQncyBvbmx5IGJs b2NrICovCisgICAgVkFMVUUga2xhc3M7CQkvKiBzaGFyZSB3aXRoIG1ldGhv ZCBmcmFtZSBpZiBpdCdzIG9ubHkgYmxvY2sgKi8KICAgICBWQUxVRSAqbGZw OwkJCS8qIHNoYXJlIHdpdGggbWV0aG9kIGZyYW1lIGlmIGl0J3Mgb25seSBi bG9jayAqLwogICAgIFZBTFVFICpkZnA7CQkJLyogc2hhcmUgd2l0aCBtZXRo b2QgZnJhbWUgaWYgaXQncyBvbmx5IGJsb2NrICovCiAgICAgcmJfaXNlcV90 ICppc2VxOwpAQCAtMzkyLDYgKzM5Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHJi X3RocmVhZF9zdHJ1Y3QgewogCiAgICAgLyogZm9yIGJtZXRob2QgKi8KICAg ICBjb25zdCByYl9tZXRob2RfZW50cnlfdCAqcGFzc2VkX21lOworICAgIFZB TFVFIHBhc3NlZF9kZWZpbmVkX2NsYXNzOwogCiAgICAgLyogZm9yIGxvYWQo dHJ1ZSkgKi8KICAgICBWQUxVRSB0b3Bfc2VsZjsKZGlmZiAtLWdpdCBhL3Zt X2V2YWwuYyBiL3ZtX2V2YWwuYwppbmRleCBjNjdlNTRjLi4yYmNhN2RiIDEw MDY0NAotLS0gYS92bV9ldmFsLmMKKysrIGIvdm1fZXZhbC5jCkBAIC0zMywx MSArMzMsMTEgQEAgc3RhdGljIFZBTFVFIHNlbmRfaW50ZXJuYWwoaW50IGFy Z2MsIGNvbnN0IFZBTFVFICphcmd2LCBWQUxVRSByZWN2LCBjYWxsX3R5cGUg c2MKIAogc3RhdGljIGlubGluZSBWQUxVRQogdm1fY2FsbDAocmJfdGhyZWFk X3QqIHRoLCBWQUxVRSByZWN2LCBWQUxVRSBpZCwgaW50IGFyZ2MsIGNvbnN0 IFZBTFVFICphcmd2LAotCSBjb25zdCByYl9tZXRob2RfZW50cnlfdCAqbWUp CisJIGNvbnN0IHJiX21ldGhvZF9lbnRyeV90ICptZSwgVkFMVUUgZGVmaW5l ZF9jbGFzcykKIHsKICAgICBjb25zdCByYl9tZXRob2RfZGVmaW5pdGlvbl90 ICpkZWYgPSBtZS0+ZGVmOwogICAgIFZBTFVFIHZhbDsKLSAgICBWQUxVRSBr bGFzcyA9IG1lLT5rbGFzczsKKyAgICBWQUxVRSBrbGFzcyA9IGRlZmluZWRf Y2xhc3M7CiAgICAgY29uc3QgcmJfYmxvY2tfdCAqYmxvY2twdHIgPSAwOwog CiAgICAgaWYgKCFkZWYpIHJldHVybiBRbmlsOwpAQCAtNjIsNyArNjIsNyBA QCB2bV9jYWxsMChyYl90aHJlYWRfdCogdGgsIFZBTFVFIHJlY3YsIFZBTFVF IGlkLCBpbnQgYXJnYywgY29uc3QgVkFMVUUgKmFyZ3YsCiAJICAgICpyZWdf Y2ZwLT5zcCsrID0gYXJndltpXTsKIAl9CiAKLQl2bV9zZXR1cF9tZXRob2Qo dGgsIHJlZ19jZnAsIHJlY3YsIGFyZ2MsIGJsb2NrcHRyLCAwIC8qIGZsYWcg Ki8sIG1lKTsKKwl2bV9zZXR1cF9tZXRob2QodGgsIHJlZ19jZnAsIHJlY3Ys IGFyZ2MsIGJsb2NrcHRyLCAwIC8qIGZsYWcgKi8sIG1lLCBrbGFzcyk7CiAJ dmFsID0gdm1fZXhlYyh0aCk7CiAJYnJlYWs7CiAgICAgICB9CkBAIC03Myw3 ICs3Myw3IEBAIHZtX2NhbGwwKHJiX3RocmVhZF90KiB0aCwgVkFMVUUgcmVj diwgVkFMVUUgaWQsIGludCBhcmdjLCBjb25zdCBWQUxVRSAqYXJndiwKIAkg ICAgcmJfY29udHJvbF9mcmFtZV90ICpyZWdfY2ZwID0gdGgtPmNmcDsKIAkg ICAgcmJfY29udHJvbF9mcmFtZV90ICpjZnAgPQogCQl2bV9wdXNoX2ZyYW1l KHRoLCAwLCBWTV9GUkFNRV9NQUdJQ19DRlVOQywKLQkJCSAgICAgIHJlY3Ys IChWQUxVRSlibG9ja3B0ciwgMCwgcmVnX2NmcC0+c3AsIDAsIDEpOworCQkJ ICAgICAgcmVjdiwga2xhc3MsIChWQUxVRSlibG9ja3B0ciwgMCwgcmVnX2Nm cC0+c3AsIDAsIDEpOwogCiAJICAgIGNmcC0+bWUgPSBtZTsKIAkgICAgdmFs ID0gY2FsbF9jZnVuYyhkZWYtPmJvZHkuY2Z1bmMuZnVuYywgcmVjdiwgZGVm LT5ib2R5LmNmdW5jLmFyZ2MsIGFyZ2MsIGFyZ3YpOwpAQCAtMTAxLDEyICsx MDEsMTIgQEAgdm1fY2FsbDAocmJfdGhyZWFkX3QqIHRoLCBWQUxVRSByZWN2 LCBWQUxVRSBpZCwgaW50IGFyZ2MsIGNvbnN0IFZBTFVFICphcmd2LAogCWJy ZWFrOwogICAgICAgfQogICAgICAgY2FzZSBWTV9NRVRIT0RfVFlQRV9CTUVU SE9EOiB7Ci0JdmFsID0gdm1fY2FsbF9ibWV0aG9kKHRoLCByZWN2LCBhcmdj LCBhcmd2LCBibG9ja3B0ciwgbWUpOworCXZhbCA9IHZtX2NhbGxfYm1ldGhv ZCh0aCwgcmVjdiwgYXJnYywgYXJndiwgYmxvY2twdHIsIG1lLCBrbGFzcyk7 CiAJYnJlYWs7CiAgICAgICB9CiAgICAgICBjYXNlIFZNX01FVEhPRF9UWVBF X1pTVVBFUjogewogCWtsYXNzID0gUkNMQVNTX1NVUEVSKGtsYXNzKTsKLQlp ZiAoIWtsYXNzIHx8ICEobWUgPSByYl9tZXRob2RfZW50cnkoa2xhc3MsIGlk KSkpIHsKKwlpZiAoIWtsYXNzIHx8ICEobWUgPSByYl9tZXRob2RfZW50cnko a2xhc3MsIGlkLCAma2xhc3MpKSkgewogCSAgICByZXR1cm4gbWV0aG9kX21p c3NpbmcocmVjdiwgaWQsIGFyZ2MsIGFyZ3YsIE5PRVhfU1VQRVIpOwogCX0K IAlSVUJZX1ZNX0NIRUNLX0lOVFMoKTsKQEAgLTE0OSw5ICsxNDksOSBAQCB2 bV9jYWxsMChyYl90aHJlYWRfdCogdGgsIFZBTFVFIHJlY3YsIFZBTFVFIGlk LCBpbnQgYXJnYywgY29uc3QgVkFMVUUgKmFyZ3YsCiAKIFZBTFVFCiByYl92 bV9jYWxsKHJiX3RocmVhZF90ICp0aCwgVkFMVUUgcmVjdiwgVkFMVUUgaWQs IGludCBhcmdjLCBjb25zdCBWQUxVRSAqYXJndiwKLQkgICBjb25zdCByYl9t ZXRob2RfZW50cnlfdCAqbWUpCisJICAgY29uc3QgcmJfbWV0aG9kX2VudHJ5 X3QgKm1lLCBWQUxVRSBkZWZpbmVkX2NsYXNzKQogewotICAgIHJldHVybiB2 bV9jYWxsMCh0aCwgcmVjdiwgaWQsIGFyZ2MsIGFyZ3YsIG1lKTsKKyAgICBy ZXR1cm4gdm1fY2FsbDAodGgsIHJlY3YsIGlkLCBhcmdjLCBhcmd2LCBtZSwg ZGVmaW5lZF9jbGFzcyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgVkFMVUUKQEAg LTE2Myw5ICsxNjMsOCBAQCB2bV9jYWxsX3N1cGVyKHJiX3RocmVhZF90ICp0 aCwgaW50IGFyZ2MsIGNvbnN0IFZBTFVFICphcmd2KQogICAgIHJiX21ldGhv ZF9lbnRyeV90ICptZTsKICAgICByYl9jb250cm9sX2ZyYW1lX3QgKmNmcCA9 IHRoLT5jZnA7CiAKLSAgICBpZiAoIWNmcC0+aXNlcSkgewotCWtsYXNzID0g Y2ZwLT5tZS0+a2xhc3M7Ci0Ja2xhc3MgPSBSQ0xBU1NfU1VQRVIoa2xhc3Mp OworICAgIGlmICghY2ZwLT5pc2VxICYmICFOSUxfUChjZnAtPmtsYXNzKSkg eworCWtsYXNzID0gUkNMQVNTX1NVUEVSKGNmcC0+a2xhc3MpOwogCiAJaWYg KGtsYXNzID09IDApIHsKIAkgICAga2xhc3MgPSB2bV9zZWFyY2hfbm9ybWFs X3N1cGVyY2xhc3MoY2ZwLT5tZS0+a2xhc3MsIHJlY3YpOwpAQCAtMTc2LDEy ICsxNzUsMTIgQEAgdm1fY2FsbF9zdXBlcihyYl90aHJlYWRfdCAqdGgsIGlu dCBhcmdjLCBjb25zdCBWQUxVRSAqYXJndikKIAlyYl9idWcoInZtX2NhbGxf c3VwZXI6IHNob3VsZCBub3QgYmUgcmVhY2hlZCIpOwogICAgIH0KIAotICAg IG1lID0gcmJfbWV0aG9kX2VudHJ5KGtsYXNzLCBpZCk7CisgICAgbWUgPSBy Yl9tZXRob2RfZW50cnkoa2xhc3MsIGlkLCAma2xhc3MpOwogICAgIGlmICgh bWUpIHsKIAlyZXR1cm4gbWV0aG9kX21pc3NpbmcocmVjdiwgaWQsIGFyZ2Ms IGFyZ3YsIE5PRVhfU1VQRVIpOwogICAgIH0KIAotICAgIHJldHVybiB2bV9j YWxsMCh0aCwgcmVjdiwgaWQsIGFyZ2MsIGFyZ3YsIG1lKTsKKyAgICByZXR1 cm4gdm1fY2FsbDAodGgsIHJlY3YsIGlkLCBhcmdjLCBhcmd2LCBtZSwga2xh c3MpOwogfQogCiBWQUxVRQpAQCAtMjAyLDcgKzIwMSw3IEBAIHN0YWNrX2No ZWNrKHZvaWQpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHJiX21ldGhv ZF9lbnRyeV90ICpyYl9zZWFyY2hfbWV0aG9kX2VudHJ5KFZBTFVFIHJlY3Ys IElEIG1pZCk7CitzdGF0aWMgaW5saW5lIHJiX21ldGhvZF9lbnRyeV90ICpy Yl9zZWFyY2hfbWV0aG9kX2VudHJ5KFZBTFVFIHJlY3YsIElEIG1pZCwgVkFM VUUgKmRlZmluZWRfY2xhc3NfcHRyKTsKIHN0YXRpYyBpbmxpbmUgaW50IHJi X21ldGhvZF9jYWxsX3N0YXR1cyhyYl90aHJlYWRfdCAqdGgsIHJiX21ldGhv ZF9lbnRyeV90ICptZSwgY2FsbF90eXBlIHNjb3BlLCBWQUxVRSBzZWxmKTsK ICNkZWZpbmUgTk9FWF9PSyBOT0VYX05PU1VQRVIKIApAQCAtMjI0LDcgKzIy Myw4IEBAIHN0YXRpYyBpbmxpbmUgVkFMVUUKIHJiX2NhbGwwKFZBTFVFIHJl Y3YsIElEIG1pZCwgaW50IGFyZ2MsIGNvbnN0IFZBTFVFICphcmd2LAogCSBj YWxsX3R5cGUgc2NvcGUsIFZBTFVFIHNlbGYpCiB7Ci0gICAgcmJfbWV0aG9k X2VudHJ5X3QgKm1lID0gcmJfc2VhcmNoX21ldGhvZF9lbnRyeShyZWN2LCBt aWQpOworICAgIFZBTFVFIGRlZmluZWRfY2xhc3M7CisgICAgcmJfbWV0aG9k X2VudHJ5X3QgKm1lID0gcmJfc2VhcmNoX21ldGhvZF9lbnRyeShyZWN2LCBt aWQsICZkZWZpbmVkX2NsYXNzKTsKICAgICByYl90aHJlYWRfdCAqdGggPSBH RVRfVEhSRUFEKCk7CiAgICAgaW50IGNhbGxfc3RhdHVzID0gcmJfbWV0aG9k X2NhbGxfc3RhdHVzKHRoLCBtZSwgc2NvcGUsIHNlbGYpOwogCkBAIC0yMzIs NyArMjMyLDcgQEAgcmJfY2FsbDAoVkFMVUUgcmVjdiwgSUQgbWlkLCBpbnQg YXJnYywgY29uc3QgVkFMVUUgKmFyZ3YsCiAJcmV0dXJuIG1ldGhvZF9taXNz aW5nKHJlY3YsIG1pZCwgYXJnYywgYXJndiwgY2FsbF9zdGF0dXMpOwogICAg IH0KICAgICBzdGFja19jaGVjaygpOwotICAgIHJldHVybiB2bV9jYWxsMCh0 aCwgcmVjdiwgbWlkLCBhcmdjLCBhcmd2LCBtZSk7CisgICAgcmV0dXJuIHZt X2NhbGwwKHRoLCByZWN2LCBtaWQsIGFyZ2MsIGFyZ3YsIG1lLCBkZWZpbmVk X2NsYXNzKTsKIH0KIAogc3RydWN0IHJlc2N1ZV9mdW5jYWxsX2FyZ3MgewpA QCAtMjY1LDcgKzI2NSw4IEBAIGNoZWNrX2Z1bmNhbGxfZmFpbGVkKHN0cnVj dCByZXNjdWVfZnVuY2FsbF9hcmdzICphcmdzLCBWQUxVRSBlKQogc3RhdGlj IFZBTFVFCiBjaGVja19mdW5jYWxsKFZBTFVFIHJlY3YsIElEIG1pZCwgaW50 IGFyZ2MsIFZBTFVFICphcmd2KQogewotICAgIHJiX21ldGhvZF9lbnRyeV90 ICptZSA9IHJiX3NlYXJjaF9tZXRob2RfZW50cnkocmVjdiwgbWlkKTsKKyAg ICBWQUxVRSBkZWZpbmVkX2NsYXNzOworICAgIHJiX21ldGhvZF9lbnRyeV90 ICptZSA9IHJiX3NlYXJjaF9tZXRob2RfZW50cnkocmVjdiwgbWlkLCAmZGVm aW5lZF9jbGFzcyk7CiAgICAgcmJfdGhyZWFkX3QgKnRoID0gR0VUX1RIUkVB RCgpOwogICAgIGludCBjYWxsX3N0YXR1cyA9IHJiX21ldGhvZF9jYWxsX3N0 YXR1cyh0aCwgbWUsIENBTExfRkNBTEwsIFF1bmRlZik7CiAKQEAgLTI4Nyw3 ICsyODgsNyBAQCBjaGVja19mdW5jYWxsKFZBTFVFIHJlY3YsIElEIG1pZCwg aW50IGFyZ2MsIFZBTFVFICphcmd2KQogCX0KICAgICB9CiAgICAgc3RhY2tf Y2hlY2soKTsKLSAgICByZXR1cm4gdm1fY2FsbDAodGgsIHJlY3YsIG1pZCwg YXJnYywgYXJndiwgbWUpOworICAgIHJldHVybiB2bV9jYWxsMCh0aCwgcmVj diwgbWlkLCBhcmdjLCBhcmd2LCBtZSwgZGVmaW5lZF9jbGFzcyk7CiB9CiAK IFZBTFVFCkBAIC0zMzIsNyArMzMzLDcgQEAgcmJfdHlwZV9zdHIoZW51bSBy dWJ5X3ZhbHVlX3R5cGUgdHlwZSkKIH0KIAogc3RhdGljIGlubGluZSByYl9t ZXRob2RfZW50cnlfdCAqCi1yYl9zZWFyY2hfbWV0aG9kX2VudHJ5KFZBTFVF IHJlY3YsIElEIG1pZCkKK3JiX3NlYXJjaF9tZXRob2RfZW50cnkoVkFMVUUg cmVjdiwgSUQgbWlkLCBWQUxVRSAqZGVmaW5lZF9jbGFzc19wdHIpCiB7CiAg ICAgVkFMVUUga2xhc3MgPSBDTEFTU19PRihyZWN2KTsKIApAQCAtMzcxLDcg KzM3Miw3IEBAIHJiX3NlYXJjaF9tZXRob2RfZW50cnkoVkFMVUUgcmVjdiwg SUQgbWlkKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJiX2lkMm5hbWUo bWlkKSwgdHlwZSwgKHZvaWQgKilyZWN2LCBmbGFncywga2xhc3MpOwogICAg ICAgICB9CiAgICAgfQotICAgIHJldHVybiByYl9tZXRob2RfZW50cnkoa2xh c3MsIG1pZCk7CisgICAgcmV0dXJuIHJiX21ldGhvZF9lbnRyeShrbGFzcywg bWlkLCBkZWZpbmVkX2NsYXNzX3B0cik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg aW50CmRpZmYgLS1naXQgYS92bV9pbnNuaGVscGVyLmMgYi92bV9pbnNuaGVs cGVyLmMKaW5kZXggMThjMjJjYi4uNTc3ZjcyZiAxMDA2NDQKLS0tIGEvdm1f aW5zbmhlbHBlci5jCisrKyBiL3ZtX2luc25oZWxwZXIuYwpAQCAtMjMsNyAr MjMsNyBAQCBzdGF0aWMgcmJfY29udHJvbF9mcmFtZV90ICp2bV9nZXRfcnVi eV9sZXZlbF9jYWxsZXJfY2ZwKHJiX3RocmVhZF90ICp0aCwgcmJfY29udAog CiBzdGF0aWMgaW5saW5lIHJiX2NvbnRyb2xfZnJhbWVfdCAqCiB2bV9wdXNo X2ZyYW1lKHJiX3RocmVhZF90ICogdGgsIGNvbnN0IHJiX2lzZXFfdCAqIGlz ZXEsCi0JICAgICAgVkFMVUUgdHlwZSwgVkFMVUUgc2VsZiwgVkFMVUUgc3Bl Y3ZhbCwKKwkgICAgICBWQUxVRSB0eXBlLCBWQUxVRSBzZWxmLCBWQUxVRSBr bGFzcywgVkFMVUUgc3BlY3ZhbCwKIAkgICAgICBjb25zdCBWQUxVRSAqcGMs IFZBTFVFICpzcCwgVkFMVUUgKmxmcCwKIAkgICAgICBpbnQgbG9jYWxfc2l6 ZSkKIHsKQEAgLTYyLDYgKzYyLDE4IEBAIHZtX3B1c2hfZnJhbWUocmJfdGhy ZWFkX3QgKiB0aCwgY29uc3QgcmJfaXNlcV90ICogaXNlcSwKICAgICBjZnAt PmJsb2NrX2lzZXEgPSAwOwogICAgIGNmcC0+cHJvYyA9IDA7CiAgICAgY2Zw LT5tZSA9IDA7CisgICAgaWYgKGtsYXNzKSB7CisJY2ZwLT5rbGFzcyA9IGts YXNzOworICAgIH0KKyAgICBlbHNlIHsKKwlyYl9jb250cm9sX2ZyYW1lX3Qg KnByZXZfY2ZwID0gUlVCWV9WTV9QUkVWSU9VU19DT05UUk9MX0ZSQU1FKGNm cCk7CisJaWYgKFJVQllfVk1fQ09OVFJPTF9GUkFNRV9TVEFDS19PVkVSRkxP V19QKHRoLCBwcmV2X2NmcCkpIHsKKwkgICAgY2ZwLT5rbGFzcyA9IFFuaWw7 CisJfQorCWVsc2UgeworCSAgICBjZnAtPmtsYXNzID0gcHJldl9jZnAtPmts YXNzOworCX0KKyAgICB9CiAKICNkZWZpbmUgQ09MTEVDVF9QUk9GSUxFIDAK ICNpZiBDT0xMRUNUX1BST0ZJTEUKQEAgLTM4Nyw3ICszOTksNyBAQCBjYWxs X2NmdW5jKFZBTFVFICgqZnVuYykoKSwgVkFMVUUgcmVjdiwKIHN0YXRpYyBp bmxpbmUgVkFMVUUKIHZtX2NhbGxfY2Z1bmMocmJfdGhyZWFkX3QgKnRoLCBy Yl9jb250cm9sX2ZyYW1lX3QgKnJlZ19jZnAsCiAJICAgICAgaW50IG51bSwg VkFMVUUgcmVjdiwgY29uc3QgcmJfYmxvY2tfdCAqYmxvY2twdHIsCi0JICAg ICAgY29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lKQorCSAgICAgIGNvbnN0 IHJiX21ldGhvZF9lbnRyeV90ICptZSwgVkFMVUUgZGVmaW5lZF9jbGFzcykK IHsKICAgICBWQUxVRSB2YWwgPSAwOwogICAgIGNvbnN0IHJiX21ldGhvZF9k ZWZpbml0aW9uX3QgKmRlZiA9IG1lLT5kZWY7CkBAIC0zOTYsNyArNDA4LDgg QEAgdm1fY2FsbF9jZnVuYyhyYl90aHJlYWRfdCAqdGgsIHJiX2NvbnRyb2xf ZnJhbWVfdCAqcmVnX2NmcCwKICAgICBFWEVDX0VWRU5UX0hPT0sodGgsIFJV QllfRVZFTlRfQ19DQUxMLCByZWN2LCBtZS0+Y2FsbGVkX2lkLCBtZS0+a2xh c3MpOwogCiAgICAgY2ZwID0gdm1fcHVzaF9mcmFtZSh0aCwgMCwgVk1fRlJB TUVfTUFHSUNfQ0ZVTkMsCi0JCQlyZWN2LCAoVkFMVUUpIGJsb2NrcHRyLCAw LCByZWdfY2ZwLT5zcCwgMCwgMSk7CisJCQlyZWN2LCBkZWZpbmVkX2NsYXNz LCAoVkFMVUUpIGJsb2NrcHRyLAorCQkgICAgICAgCTAsIHJlZ19jZnAtPnNw LCAwLCAxKTsKICAgICBjZnAtPm1lID0gbWU7CiAgICAgcmVnX2NmcC0+c3Ag LT0gbnVtICsgMTsKIApAQCAtNDE1LDEzICs0MjgsMTUgQEAgdm1fY2FsbF9j ZnVuYyhyYl90aHJlYWRfdCAqdGgsIHJiX2NvbnRyb2xfZnJhbWVfdCAqcmVn X2NmcCwKIAogc3RhdGljIGlubGluZSBWQUxVRQogdm1fY2FsbF9ibWV0aG9k KHJiX3RocmVhZF90ICp0aCwgVkFMVUUgcmVjdiwgaW50IGFyZ2MsIGNvbnN0 IFZBTFVFICphcmd2LAotCQljb25zdCByYl9ibG9ja190ICpibG9ja3B0ciwg Y29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lKQorCQljb25zdCByYl9ibG9j a190ICpibG9ja3B0ciwgY29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lLAor CQlWQUxVRSBkZWZpbmVkX2NsYXNzKQogewogICAgIHJiX3Byb2NfdCAqcHJv YzsKICAgICBWQUxVRSB2YWw7CiAKICAgICAvKiBjb250cm9sIGJsb2NrIGZy YW1lICovCiAgICAgdGgtPnBhc3NlZF9tZSA9IG1lOworICAgIHRoLT5wYXNz ZWRfZGVmaW5lZF9jbGFzcyA9IGRlZmluZWRfY2xhc3M7CiAKICAgICBHZXRQ cm9jUHRyKG1lLT5kZWYtPmJvZHkucHJvYywgcHJvYyk7CiAgICAgdmFsID0g cmJfdm1faW52b2tlX3Byb2ModGgsIHByb2MsIHJlY3YsIGFyZ2MsIGFyZ3Ys IGJsb2NrcHRyKTsKQEAgLTQ1Miw3ICs0NjcsNyBAQCB2bV9tZXRob2RfbWlz c2luZyhyYl90aHJlYWRfdCAqdGgsIElEIGlkLCBWQUxVRSByZWN2LAogc3Rh dGljIGlubGluZSB2b2lkCiB2bV9zZXR1cF9tZXRob2QocmJfdGhyZWFkX3Qg KnRoLCByYl9jb250cm9sX2ZyYW1lX3QgKmNmcCwKIAkJVkFMVUUgcmVjdiwg aW50IGFyZ2MsIGNvbnN0IHJiX2Jsb2NrX3QgKmJsb2NrcHRyLCBWQUxVRSBm bGFnLAotCQljb25zdCByYl9tZXRob2RfZW50cnlfdCAqbWUpCisJCWNvbnN0 IHJiX21ldGhvZF9lbnRyeV90ICptZSwgVkFMVUUgZGVmaW5lZF9jbGFzcykK IHsKICAgICBpbnQgb3B0X3BjLCBpOwogICAgIFZBTFVFICpzcCwgKnJzcCA9 IGNmcC0+c3AgLSBhcmdjOwpAQCAtNDc1LDcgKzQ5MCw4IEBAIHZtX3NldHVw X21ldGhvZChyYl90aHJlYWRfdCAqdGgsIHJiX2NvbnRyb2xfZnJhbWVfdCAq Y2ZwLAogCX0KIAogCXZtX3B1c2hfZnJhbWUodGgsIGlzZXEsCi0JCSAgICAg IFZNX0ZSQU1FX01BR0lDX01FVEhPRCwgcmVjdiwgKFZBTFVFKSBibG9ja3B0 ciwKKwkJICAgICAgVk1fRlJBTUVfTUFHSUNfTUVUSE9ELCByZWN2LCBkZWZp bmVkX2NsYXNzLAorCQkgICAgICAoVkFMVUUpIGJsb2NrcHRyLAogCQkgICAg ICBpc2VxLT5pc2VxX2VuY29kZWQgKyBvcHRfcGMsIHNwLCAwLCAwKTsKIAog CWNmcC0+c3AgPSByc3AgLSAxIC8qIHJlY3YgKi87CkBAIC00OTgsNyArNTE0 LDggQEAgdm1fc2V0dXBfbWV0aG9kKHJiX3RocmVhZF90ICp0aCwgcmJfY29u dHJvbF9mcmFtZV90ICpjZnAsCiAJfQogCiAJdm1fcHVzaF9mcmFtZSh0aCwg aXNlcSwKLQkJICAgICAgVk1fRlJBTUVfTUFHSUNfTUVUSE9ELCByZWN2LCAo VkFMVUUpIGJsb2NrcHRyLAorCQkgICAgICBWTV9GUkFNRV9NQUdJQ19NRVRI T0QsIHJlY3YsIGRlZmluZWRfY2xhc3MsCisJCSAgICAgIChWQUxVRSkgYmxv Y2twdHIsCiAJCSAgICAgIGlzZXEtPmlzZXFfZW5jb2RlZCArIG9wdF9wYywg c3AsIDAsIDApOwogICAgIH0KIH0KQEAgLTUwNiw3ICs1MjMsOCBAQCB2bV9z ZXR1cF9tZXRob2QocmJfdGhyZWFkX3QgKnRoLCByYl9jb250cm9sX2ZyYW1l X3QgKmNmcCwKIHN0YXRpYyBpbmxpbmUgVkFMVUUKIHZtX2NhbGxfbWV0aG9k KHJiX3RocmVhZF90ICp0aCwgcmJfY29udHJvbF9mcmFtZV90ICpjZnAsCiAJ ICAgICAgIGludCBudW0sIGNvbnN0IHJiX2Jsb2NrX3QgKmJsb2NrcHRyLCBW QUxVRSBmbGFnLAotCSAgICAgICBJRCBpZCwgY29uc3QgcmJfbWV0aG9kX2Vu dHJ5X3QgKm1lLCBWQUxVRSByZWN2KQorCSAgICAgICBJRCBpZCwgY29uc3Qg cmJfbWV0aG9kX2VudHJ5X3QgKm1lLAorCSAgICAgICBWQUxVRSByZWN2LCBW QUxVRSBkZWZpbmVkX2NsYXNzKQogewogICAgIFZBTFVFIHZhbDsKIApAQCAt NTE3LDEyICs1MzUsMTQgQEAgdm1fY2FsbF9tZXRob2QocmJfdGhyZWFkX3Qg KnRoLCByYl9jb250cm9sX2ZyYW1lX3QgKmNmcCwKIAkgIG5vcm1hbF9tZXRo b2RfZGlzcGF0Y2g6CiAJICAgIHN3aXRjaCAobWUtPmRlZi0+dHlwZSkgewog CSAgICAgIGNhc2UgVk1fTUVUSE9EX1RZUEVfSVNFUTp7Ci0JCXZtX3NldHVw X21ldGhvZCh0aCwgY2ZwLCByZWN2LCBudW0sIGJsb2NrcHRyLCBmbGFnLCBt ZSk7CisJCXZtX3NldHVwX21ldGhvZCh0aCwgY2ZwLCByZWN2LCBudW0sIGJs b2NrcHRyLCBmbGFnLCBtZSwKKwkJCSAgICAgICAJZGVmaW5lZF9jbGFzcyk7 CiAJCXJldHVybiBRdW5kZWY7CiAJICAgICAgfQogCSAgICAgIGNhc2UgVk1f TUVUSE9EX1RZUEVfTk9USU1QTEVNRU5URUQ6CiAJICAgICAgY2FzZSBWTV9N RVRIT0RfVFlQRV9DRlVOQzp7Ci0JCXZhbCA9IHZtX2NhbGxfY2Z1bmModGgs IGNmcCwgbnVtLCByZWN2LCBibG9ja3B0ciwgbWUpOworCQl2YWwgPSB2bV9j YWxsX2NmdW5jKHRoLCBjZnAsIG51bSwgcmVjdiwgYmxvY2twdHIsIG1lLAor CQkJCSAgICBkZWZpbmVkX2NsYXNzKTsKIAkJYnJlYWs7CiAJICAgICAgfQog CSAgICAgIGNhc2UgVk1fTUVUSE9EX1RZUEVfQVRUUlNFVDp7CkBAIC01NTMs MTIgKzU3MywxMyBAQCB2bV9jYWxsX21ldGhvZChyYl90aHJlYWRfdCAqdGgs IHJiX2NvbnRyb2xfZnJhbWVfdCAqY2ZwLAogCQlWQUxVRSAqYXJndiA9IEFM TE9DQV9OKFZBTFVFLCBudW0pOwogCQlNRU1DUFkoYXJndiwgY2ZwLT5zcCAt IG51bSwgVkFMVUUsIG51bSk7CiAJCWNmcC0+c3AgKz0gLSBudW0gLSAxOwot CQl2YWwgPSB2bV9jYWxsX2JtZXRob2QodGgsIHJlY3YsIG51bSwgYXJndiwg YmxvY2twdHIsIG1lKTsKKwkJdmFsID0gdm1fY2FsbF9ibWV0aG9kKHRoLCBy ZWN2LCBudW0sIGFyZ3YsIGJsb2NrcHRyLCBtZSwKKwkJCQkgICAgICBkZWZp bmVkX2NsYXNzKTsKIAkJYnJlYWs7CiAJICAgICAgfQogCSAgICAgIGNhc2Ug Vk1fTUVUSE9EX1RZUEVfWlNVUEVSOnsKIAkJVkFMVUUga2xhc3MgPSBSQ0xB U1NfU1VQRVIobWUtPmtsYXNzKTsKLQkJbWUgPSByYl9tZXRob2RfZW50cnko a2xhc3MsIGlkKTsKKwkJbWUgPSByYl9tZXRob2RfZW50cnkoa2xhc3MsIGlk LCAmZGVmaW5lZF9jbGFzcyk7CiAKIAkJaWYgKG1lICE9IDApIHsKIAkJICAg IGdvdG8gbm9ybWFsX21ldGhvZF9kaXNwYXRjaDsKQEAgLTU4NCw3ICs2MDUs NyBAQCB2bV9jYWxsX21ldGhvZChyYl90aHJlYWRfdCAqdGgsIHJiX2NvbnRy b2xfZnJhbWVfdCAqY2ZwLAogCQkgICAgaWYgKGkgPiAwKSB7CiAJCQlNRU1N T1ZFKCZUT1BOKGkpLCAmVE9QTihpLTEpLCBWQUxVRSwgaSk7CiAJCSAgICB9 Ci0JCSAgICBtZSA9IHJiX21ldGhvZF9lbnRyeShDTEFTU19PRihyZWN2KSwg aWQpOworCQkgICAgbWUgPSByYl9tZXRob2RfZW50cnkoQ0xBU1NfT0YocmVj diksIGlkLCAmZGVmaW5lZF9jbGFzcyk7CiAJCSAgICBudW0gLT0gMTsKIAkJ ICAgIERFQ19TUCgxKTsKIAkJICAgIGZsYWcgfD0gVk1fQ0FMTF9GQ0FMTF9C SVQgfCBWTV9DQUxMX09QVF9TRU5EX0JJVDsKQEAgLTYyNyw4ICs2NDgsNiBA QCB2bV9jYWxsX21ldGhvZChyYl90aHJlYWRfdCAqdGgsIHJiX2NvbnRyb2xf ZnJhbWVfdCAqY2ZwLAogCQl2YWwgPSB2bV9tZXRob2RfbWlzc2luZyh0aCwg aWQsIHJlY3YsIG51bSwgYmxvY2twdHIsIHN0YXQpOwogCSAgICB9CiAJICAg IGVsc2UgaWYgKCEoZmxhZyAmIFZNX0NBTExfT1BUX1NFTkRfQklUKSAmJiAo bWUtPmZsYWcgJiBOT0VYX01BU0spICYgTk9FWF9QUk9URUNURUQpIHsKLQkJ VkFMVUUgZGVmaW5lZF9jbGFzcyA9IG1lLT5rbGFzczsKLQogCQlpZiAoVFlQ RShkZWZpbmVkX2NsYXNzKSA9PSBUX0lDTEFTUykgewogCQkgICAgZGVmaW5l ZF9jbGFzcyA9IFJCQVNJQyhkZWZpbmVkX2NsYXNzKS0+a2xhc3M7CiAJCX0K QEAgLTcyMCw3ICs3MzksNyBAQCB2bV95aWVsZF93aXRoX2NmdW5jKHJiX3Ro cmVhZF90ICp0aCwgY29uc3QgcmJfYmxvY2tfdCAqYmxvY2ssCiAgICAgfQog CiAgICAgdm1fcHVzaF9mcmFtZSh0aCwgKHJiX2lzZXFfdCAqKWlmdW5jLCBW TV9GUkFNRV9NQUdJQ19JRlVOQywKLQkJICBzZWxmLCAoVkFMVUUpYmxvY2st PmRmcCwKKwkJICBzZWxmLCAwLCAoVkFMVUUpYmxvY2stPmRmcCwKIAkJICAw LCB0aC0+Y2ZwLT5zcCwgYmxvY2stPmxmcCwgMSk7CiAKICAgICBpZiAoYmxv Y2thcmdwdHIpIHsKQEAgLTkzOCw3ICs5NTcsOCBAQCB2bV9pbnZva2VfYmxv Y2socmJfdGhyZWFkX3QgKnRoLCByYl9jb250cm9sX2ZyYW1lX3QgKnJlZ19j ZnAsIHJiX251bV90IG51bSwgcmJfbgogCQkJCSAgICAgYmxvY2tfcHJvY19p c19sYW1iZGEoYmxvY2stPnByb2MpKTsKIAogCXZtX3B1c2hfZnJhbWUodGgs IGlzZXEsCi0JCSAgICAgIFZNX0ZSQU1FX01BR0lDX0JMT0NLLCBibG9jay0+ c2VsZiwgKFZBTFVFKSBibG9jay0+ZGZwLAorCQkgICAgICBWTV9GUkFNRV9N QUdJQ19CTE9DSywgYmxvY2stPnNlbGYsIGJsb2NrLT5rbGFzcywKKwkJICAg ICAgKFZBTFVFKSBibG9jay0+ZGZwLAogCQkgICAgICBpc2VxLT5pc2VxX2Vu Y29kZWQgKyBvcHRfcGMsIHJzcCArIGFyZ19zaXplLCBibG9jay0+bGZwLAog CQkgICAgICBpc2VxLT5sb2NhbF9zaXplIC0gYXJnX3NpemUpOwogCkBAIC0x MzMzLDIyICsxMzUzLDI4IEBAIHZtX3NldGl2YXIoVkFMVUUgb2JqLCBJRCBp ZCwgVkFMVUUgdmFsLCBJQyBpYykKIH0KIAogc3RhdGljIGlubGluZSBjb25z dCByYl9tZXRob2RfZW50cnlfdCAqCi12bV9tZXRob2Rfc2VhcmNoKFZBTFVF IGlkLCBWQUxVRSBrbGFzcywgSUMgaWMpCit2bV9tZXRob2Rfc2VhcmNoKFZB TFVFIGlkLCBWQUxVRSBrbGFzcywgSUMgaWMsIFZBTFVFICpkZWZpbmVkX2Ns YXNzX3B0cikKIHsKICAgICByYl9tZXRob2RfZW50cnlfdCAqbWU7CiAjaWYg T1BUX0lOTElORV9NRVRIT0RfQ0FDSEUKICAgICBpZiAoTElLRUxZKGtsYXNz ID09IGljLT5pY19jbGFzcykgJiYKIAlMSUtFTFkoR0VUX1ZNX1NUQVRFX1ZF UlNJT04oKSA9PSBpYy0+aWNfdm1zdGF0KSkgewogCW1lID0gaWMtPmljX3Zh bHVlLm1ldGhvZDsKKwlpZiAoZGVmaW5lZF9jbGFzc19wdHIpCisJICAgICpk ZWZpbmVkX2NsYXNzX3B0ciA9IGljLT5pY192YWx1ZTIuZGVmaW5lZF9jbGFz czsKICAgICB9CiAgICAgZWxzZSB7Ci0JbWUgPSByYl9tZXRob2RfZW50cnko a2xhc3MsIGlkKTsKKwlWQUxVRSBkZWZpbmVkX2NsYXNzOworCW1lID0gcmJf bWV0aG9kX2VudHJ5KGtsYXNzLCBpZCwgJmRlZmluZWRfY2xhc3MpOworCWlm IChkZWZpbmVkX2NsYXNzX3B0cikKKwkgICAgKmRlZmluZWRfY2xhc3NfcHRy ID0gZGVmaW5lZF9jbGFzczsKIAlpYy0+aWNfY2xhc3MgPSBrbGFzczsKIAlp Yy0+aWNfdmFsdWUubWV0aG9kID0gbWU7CisJaWMtPmljX3ZhbHVlMi5kZWZp bmVkX2NsYXNzID0gZGVmaW5lZF9jbGFzczsKIAlpYy0+aWNfdm1zdGF0ID0g R0VUX1ZNX1NUQVRFX1ZFUlNJT04oKTsKICAgICB9CiAjZWxzZQotICAgIG1l ID0gcmJfbWV0aG9kX2VudHJ5KGtsYXNzLCBpZCk7CisgICAgbWUgPSByYl9t ZXRob2RfZW50cnkoa2xhc3MsIGlkLCBkZWZpbmVkX2NsYXNzX3B0cik7CiAj ZW5kaWYKICAgICByZXR1cm4gbWU7CiB9CkBAIC0xMzU2LDcgKzEzODIsNyBA QCB2bV9tZXRob2Rfc2VhcmNoKFZBTFVFIGlkLCBWQUxVRSBrbGFzcywgSUMg aWMpCiBzdGF0aWMgaW5saW5lIFZBTFVFCiB2bV9zZWFyY2hfbm9ybWFsX3N1 cGVyY2xhc3MoVkFMVUUga2xhc3MsIFZBTFVFIHJlY3YpCiB7Ci0gICAgaWYg KEJVSUxUSU5fVFlQRShrbGFzcykgPT0gVF9DTEFTUykgeworICAgIGlmIChC VUlMVElOX1RZUEUoa2xhc3MpID09IFRfQ0xBU1MgfHwgQlVJTFRJTl9UWVBF KGtsYXNzKSA9PSBUX0lDTEFTUykgewogCXJldHVybiBSQ0xBU1NfU1VQRVIo a2xhc3MpOwogICAgIH0KICAgICBlbHNlIGlmIChCVUlMVElOX1RZUEUoa2xh c3MpID09IFRfTU9EVUxFKSB7CkBAIC0xNDE3LDEwICsxNDQzLDEwIEBAIHZt X3NlYXJjaF9zdXBlcmNsYXNzKHJiX2NvbnRyb2xfZnJhbWVfdCAqcmVnX2Nm cCwgcmJfaXNlcV90ICppc2VxLAogCX0KIAogCWlkID0gbGNmcC0+bWUtPmRl Zi0+b3JpZ2luYWxfaWQ7Ci0Ja2xhc3MgPSB2bV9zZWFyY2hfbm9ybWFsX3N1 cGVyY2xhc3MobGNmcC0+bWUtPmtsYXNzLCByZWN2KTsKKwlrbGFzcyA9IHZt X3NlYXJjaF9ub3JtYWxfc3VwZXJjbGFzcyhsY2ZwLT5rbGFzcywgcmVjdik7 CiAgICAgfQogICAgIGVsc2UgewotCWtsYXNzID0gdm1fc2VhcmNoX25vcm1h bF9zdXBlcmNsYXNzKGlzZXEtPmtsYXNzLCByZWN2KTsKKwlrbGFzcyA9IHZt X3NlYXJjaF9ub3JtYWxfc3VwZXJjbGFzcyhyZWdfY2ZwLT5rbGFzcywgcmVj dik7CiAgICAgfQogCiAgICAgKmlkcCA9IGlkOwpAQCAtMTY5MCw3ICsxNzE2 LDcgQEAgb3B0X2VxX2Z1bmMoVkFMVUUgcmVjdiwgVkFMVUUgb2JqLCBJQyBp YykKICAgICB9CiAKICAgICB7Ci0JY29uc3QgcmJfbWV0aG9kX2VudHJ5X3Qg Km1lID0gdm1fbWV0aG9kX3NlYXJjaChpZEVxLCBDTEFTU19PRihyZWN2KSwg aWMpOworCWNvbnN0IHJiX21ldGhvZF9lbnRyeV90ICptZSA9IHZtX21ldGhv ZF9zZWFyY2goaWRFcSwgQ0xBU1NfT0YocmVjdiksIGljLCAwKTsKIAlleHRl cm4gVkFMVUUgcmJfb2JqX2VxdWFsKFZBTFVFIG9iajEsIFZBTFVFIG9iajIp OwogCiAJaWYgKGNoZWNrX2NmdW5jKG1lLCByYl9vYmpfZXF1YWwpKSB7CmRp ZmYgLS1naXQgYS92bV9pbnNuaGVscGVyLmggYi92bV9pbnNuaGVscGVyLmgK aW5kZXggMDk1YjQxNy4uYjE3YmRjZCAxMDA2NDQKLS0tIGEvdm1faW5zbmhl bHBlci5oCisrKyBiL3ZtX2luc25oZWxwZXIuaApAQCAtMTU2LDggKzE1Niw4 IEBAIGV4dGVybiBWQUxVRSBydWJ5X3ZtX2NvbnN0X21pc3NpbmdfY291bnQ7 CiAgIGMxLT5uZF9uZXh0ID0gX190bXBfYzItPm5kX25leHQ7IFwKIH0gd2hp bGUgKDApCiAKLSNkZWZpbmUgQ0FMTF9NRVRIT0QobnVtLCBibG9ja3B0ciwg ZmxhZywgaWQsIG1lLCByZWN2KSBkbyB7IFwKLSAgICBWQUxVRSB2ID0gdm1f Y2FsbF9tZXRob2QodGgsIEdFVF9DRlAoKSwgbnVtLCBibG9ja3B0ciwgZmxh ZywgaWQsIG1lLCByZWN2KTsgXAorI2RlZmluZSBDQUxMX01FVEhPRChudW0s IGJsb2NrcHRyLCBmbGFnLCBpZCwgbWUsIHJlY3YsIGRlZmluZWRfY2xhc3Mp IGRvIHsgXAorICAgIFZBTFVFIHYgPSB2bV9jYWxsX21ldGhvZCh0aCwgR0VU X0NGUCgpLCBudW0sIGJsb2NrcHRyLCBmbGFnLCBpZCwgbWUsIHJlY3YsIGRl ZmluZWRfY2xhc3MpOyBcCiAgICAgaWYgKHYgPT0gUXVuZGVmKSB7IFwKIAlS RVNUT1JFX1JFR1MoKTsgXAogCU5FWFRfSU5TTigpOyBcCkBAIC0xOTIsOCAr MTkyLDkgQEAgZXh0ZXJuIFZBTFVFIHJ1Ynlfdm1fY29uc3RfbWlzc2luZ19j b3VudDsKICNpZiBVU0VfSUNfRk9SX1NQRUNJQUxJWkVEX01FVEhPRAogCiAj ZGVmaW5lIENBTExfU0lNUExFX01FVEhPRChudW0sIGlkLCByZWN2KSBkbyB7 IFwKLSAgICBWQUxVRSBrbGFzcyA9IENMQVNTX09GKHJlY3YpOyBcCi0gICAg Q0FMTF9NRVRIT0QobnVtLCAwLCAwLCBpZCwgdm1fbWV0aG9kX3NlYXJjaChp ZCwga2xhc3MsIGljKSwgcmVjdik7IFwKKyAgICBWQUxVRSBrbGFzcyA9IENM QVNTX09GKHJlY3YpLCBkZWZpbmVkX2NsYXNzOyBcCisgICAgY29uc3QgcmJf bWV0aG9kX2VudHJ5X3QgKm1lID0gdm1fbWV0aG9kX3NlYXJjaChpZCwga2xh c3MsIGljLCAmZGVmaW5lZF9jbGFzcyk7IFwKKyAgICBDQUxMX01FVEhPRChu dW0sIDAsIDAsIGlkLCBtZSwgcmVjdiwgZGVmaW5lZF9jbGFzcyk7IFwKIH0g d2hpbGUgKDApCiAKICNlbHNlCmRpZmYgLS1naXQgYS92bV9tZXRob2QuYyBi L3ZtX21ldGhvZC5jCmluZGV4IGZhNTczOGIuLmYyYWZhMzAgMTAwNjQ0Ci0t LSBhL3ZtX21ldGhvZC5jCisrKyBiL3ZtX21ldGhvZC5jCkBAIC0xNiw2ICsx Niw3IEBAIHN0cnVjdCBjYWNoZV9lbnRyeSB7CQkvKiBtZXRob2QgaGFzaCB0 YWJsZS4gKi8KICAgICBJRCBtaWQ7CQkJLyogbWV0aG9kJ3MgaWQgKi8KICAg ICBWQUxVRSBrbGFzczsJCS8qIHJlY2VpdmVyJ3MgY2xhc3MgKi8KICAgICBy Yl9tZXRob2RfZW50cnlfdCAqbWU7CisgICAgVkFMVUUgZGVmaW5lZF9jbGFz czsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgY2FjaGVfZW50cnkgY2FjaGVbQ0FD SEVfU0laRV07CkBAIC0zODEsNyArMzgyLDcgQEAgcmJfZ2V0X2FsbG9jX2Z1 bmMoVkFMVUUga2xhc3MpCiB7CiAgICAgcmJfbWV0aG9kX2VudHJ5X3QgKm1l OwogICAgIENoZWNrX1R5cGUoa2xhc3MsIFRfQ0xBU1MpOwotICAgIG1lID0g cmJfbWV0aG9kX2VudHJ5KENMQVNTX09GKGtsYXNzKSwgSURfQUxMT0NBVE9S KTsKKyAgICBtZSA9IHJiX21ldGhvZF9lbnRyeShDTEFTU19PRihrbGFzcyks IElEX0FMTE9DQVRPUiwgMCk7CiAKICAgICBpZiAobWUgJiYgbWUtPmRlZiAm JiBtZS0+ZGVmLT50eXBlID09IFZNX01FVEhPRF9UWVBFX0NGVU5DKSB7CiAJ cmV0dXJuIChyYl9hbGxvY19mdW5jX3QpbWUtPmRlZi0+Ym9keS5jZnVuYy5m dW5jOwpAQCAtMzkyLDcgKzM5Myw3IEBAIHJiX2dldF9hbGxvY19mdW5jKFZB TFVFIGtsYXNzKQogfQogCiBzdGF0aWMgcmJfbWV0aG9kX2VudHJ5X3QqCi1z ZWFyY2hfbWV0aG9kKFZBTFVFIGtsYXNzLCBJRCBpZCkKK3NlYXJjaF9tZXRo b2QoVkFMVUUga2xhc3MsIElEIGlkLCBWQUxVRSAqZGVmaW5lZF9jbGFzc19w dHIpCiB7CiAgICAgc3RfZGF0YV90IGJvZHk7CiAgICAgaWYgKCFrbGFzcykg ewpAQCAtNDA2LDYgKzQwNyw4IEBAIHNlYXJjaF9tZXRob2QoVkFMVUUga2xh c3MsIElEIGlkKQogCX0KICAgICB9CiAKKyAgICBpZiAoZGVmaW5lZF9jbGFz c19wdHIpCisJKmRlZmluZWRfY2xhc3NfcHRyID0ga2xhc3M7CiAgICAgcmV0 dXJuIChyYl9tZXRob2RfZW50cnlfdCAqKWJvZHk7CiB9CiAKQEAgLTQxNiwx NCArNDE5LDE4IEBAIHNlYXJjaF9tZXRob2QoVkFMVUUga2xhc3MsIElEIGlk KQogICogcmJfbWV0aG9kX2VudHJ5KCkgc2ltcGx5LgogICovCiByYl9tZXRo b2RfZW50cnlfdCAqCi1yYl9tZXRob2RfZW50cnlfZ2V0X3dpdGhvdXRfY2Fj aGUoVkFMVUUga2xhc3MsIElEIGlkKQorcmJfbWV0aG9kX2VudHJ5X2dldF93 aXRob3V0X2NhY2hlKFZBTFVFIGtsYXNzLCBJRCBpZCwgVkFMVUUgKmRlZmlu ZWRfY2xhc3NfcHRyKQogewotICAgIHJiX21ldGhvZF9lbnRyeV90ICptZSA9 IHNlYXJjaF9tZXRob2Qoa2xhc3MsIGlkKTsKKyAgICBWQUxVRSBkZWZpbmVk X2NsYXNzOworICAgIHJiX21ldGhvZF9lbnRyeV90ICptZTsKKworICAgIG1l ID0gc2VhcmNoX21ldGhvZChrbGFzcywgaWQsICZkZWZpbmVkX2NsYXNzKTsK IAogICAgIGlmIChydWJ5X3J1bm5pbmcpIHsKIAlzdHJ1Y3QgY2FjaGVfZW50 cnkgKmVudDsKIAllbnQgPSBjYWNoZSArIEVYUFIxKGtsYXNzLCBpZCk7CiAJ ZW50LT5rbGFzcyA9IGtsYXNzOworCWVudC0+ZGVmaW5lZF9jbGFzcyA9IGRl ZmluZWRfY2xhc3M7CiAKIAlpZiAoVU5ERUZJTkVEX01FVEhPRF9FTlRSWV9Q KG1lKSkgewogCSAgICBlbnQtPm1pZCA9IGlkOwpAQCAtNDM2LDIwICs0NDMs MjQgQEAgcmJfbWV0aG9kX2VudHJ5X2dldF93aXRob3V0X2NhY2hlKFZBTFVF IGtsYXNzLCBJRCBpZCkKIAl9CiAgICAgfQogCisgICAgaWYgKGRlZmluZWRf Y2xhc3NfcHRyKQorCSpkZWZpbmVkX2NsYXNzX3B0ciA9IGRlZmluZWRfY2xh c3M7CiAgICAgcmV0dXJuIG1lOwogfQogCiByYl9tZXRob2RfZW50cnlfdCAq Ci1yYl9tZXRob2RfZW50cnkoVkFMVUUga2xhc3MsIElEIGlkKQorcmJfbWV0 aG9kX2VudHJ5KFZBTFVFIGtsYXNzLCBJRCBpZCwgVkFMVUUgKmRlZmluZWRf Y2xhc3NfcHRyKQogewogICAgIHN0cnVjdCBjYWNoZV9lbnRyeSAqZW50Owog CiAgICAgZW50ID0gY2FjaGUgKyBFWFBSMShrbGFzcywgaWQpOwogICAgIGlm IChlbnQtPm1pZCA9PSBpZCAmJiBlbnQtPmtsYXNzID09IGtsYXNzKSB7CisJ aWYgKGRlZmluZWRfY2xhc3NfcHRyKQorCSAgICAqZGVmaW5lZF9jbGFzc19w dHIgPSBlbnQtPmRlZmluZWRfY2xhc3M7CiAJcmV0dXJuIGVudC0+bWU7CiAg ICAgfQogCi0gICAgcmV0dXJuIHJiX21ldGhvZF9lbnRyeV9nZXRfd2l0aG91 dF9jYWNoZShrbGFzcywgaWQpOworICAgIHJldHVybiByYl9tZXRob2RfZW50 cnlfZ2V0X3dpdGhvdXRfY2FjaGUoa2xhc3MsIGlkLCBkZWZpbmVkX2NsYXNz X3B0cik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01MzUsMTQgKzU0NiwxNSBA QCBzdGF0aWMgdm9pZAogcmJfZXhwb3J0X21ldGhvZChWQUxVRSBrbGFzcywg SUQgbmFtZSwgcmJfbWV0aG9kX2ZsYWdfdCBub2V4KQogewogICAgIHJiX21l dGhvZF9lbnRyeV90ICptZTsKKyAgICBWQUxVRSBkZWZpbmVkX2NsYXNzOwog CiAgICAgaWYgKGtsYXNzID09IHJiX2NPYmplY3QpIHsKIAlyYl9zZWN1cmUo NCk7CiAgICAgfQogCi0gICAgbWUgPSBzZWFyY2hfbWV0aG9kKGtsYXNzLCBu YW1lKTsKKyAgICBtZSA9IHNlYXJjaF9tZXRob2Qoa2xhc3MsIG5hbWUsICZk ZWZpbmVkX2NsYXNzKTsKICAgICBpZiAoIW1lICYmIFRZUEUoa2xhc3MpID09 IFRfTU9EVUxFKSB7Ci0JbWUgPSBzZWFyY2hfbWV0aG9kKHJiX2NPYmplY3Qs IG5hbWUpOworCW1lID0gc2VhcmNoX21ldGhvZChyYl9jT2JqZWN0LCBuYW1l LCAmZGVmaW5lZF9jbGFzcyk7CiAgICAgfQogCiAgICAgaWYgKFVOREVGSU5F RF9NRVRIT0RfRU5UUllfUChtZSkpIHsKQEAgLTU1Miw3ICs1NjQsNyBAQCBy Yl9leHBvcnRfbWV0aG9kKFZBTFVFIGtsYXNzLCBJRCBuYW1lLCByYl9tZXRo b2RfZmxhZ190IG5vZXgpCiAgICAgaWYgKG1lLT5mbGFnICE9IG5vZXgpIHsK IAlyYl92bV9jaGVja19yZWRlZmluaXRpb25fb3B0X21ldGhvZChtZSk7CiAK LQlpZiAoa2xhc3MgPT0gbWUtPmtsYXNzKSB7CisJaWYgKGtsYXNzID09IGRl ZmluZWRfY2xhc3MpIHsKIAkgICAgbWUtPmZsYWcgPSBub2V4OwogCX0KIAll bHNlIHsKQEAgLTU2NCw3ICs1NzYsNyBAQCByYl9leHBvcnRfbWV0aG9kKFZB TFVFIGtsYXNzLCBJRCBuYW1lLCByYl9tZXRob2RfZmxhZ190IG5vZXgpCiBp bnQKIHJiX21ldGhvZF9ib3VuZHAoVkFMVUUga2xhc3MsIElEIGlkLCBpbnQg ZXgpCiB7Ci0gICAgcmJfbWV0aG9kX2VudHJ5X3QgKm1lID0gcmJfbWV0aG9k X2VudHJ5KGtsYXNzLCBpZCk7CisgICAgcmJfbWV0aG9kX2VudHJ5X3QgKm1l ID0gcmJfbWV0aG9kX2VudHJ5KGtsYXNzLCBpZCwgMCk7CiAKICAgICBpZiAo bWUgIT0gMCkgewogCWlmICgoZXggJiB+Tk9FWF9SRVNQT05EUykgJiYgKG1l LT5mbGFnICYgTk9FWF9QUklWQVRFKSkgewpAQCAtNjQzLDcgKzY1NSw3IEBA IHJiX3VuZGVmKFZBTFVFIGtsYXNzLCBJRCBpZCkKIAlyYl93YXJuKCJ1bmRl ZmluaW5nIGAlcycgbWF5IGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMiLCByYl9p ZDJuYW1lKGlkKSk7CiAgICAgfQogCi0gICAgbWUgPSBzZWFyY2hfbWV0aG9k KGtsYXNzLCBpZCk7CisgICAgbWUgPSBzZWFyY2hfbWV0aG9kKGtsYXNzLCBp ZCwgMCk7CiAKICAgICBpZiAoVU5ERUZJTkVEX01FVEhPRF9FTlRSWV9QKG1l KSkgewogCWNvbnN0IGNoYXIgKnMwID0gIiBjbGFzcyI7CkBAIC03NjYsNyAr Nzc4LDcgQEAgc3RhdGljIFZBTFVFCiBjaGVja19kZWZpbml0aW9uKFZBTFVF IG1vZCwgSUQgbWlkLCByYl9tZXRob2RfZmxhZ190IG5vZXgpCiB7CiAgICAg Y29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lOwotICAgIG1lID0gcmJfbWV0 aG9kX2VudHJ5KG1vZCwgbWlkKTsKKyAgICBtZSA9IHJiX21ldGhvZF9lbnRy eShtb2QsIG1pZCwgMCk7CiAgICAgaWYgKG1lKSB7CiAJaWYgKFZJU0lfQ0hF Q0sobWUtPmZsYWcsIG5vZXgpKQogCSAgICByZXR1cm4gUXRydWU7CkBAIC05 MjcsMTEgKzkzOSwxMiBAQCByYl9hbGlhcyhWQUxVRSBrbGFzcywgSUQgbmFt ZSwgSUQgZGVmKQogICAgIH0KIAogICBhZ2FpbjoKLSAgICBvcmlnX21lID0g c2VhcmNoX21ldGhvZChrbGFzcywgZGVmKTsKKyAgICBvcmlnX21lID0gc2Vh cmNoX21ldGhvZChrbGFzcywgZGVmLCAwKTsKIAogICAgIGlmIChVTkRFRklO RURfTUVUSE9EX0VOVFJZX1Aob3JpZ19tZSkpIHsKIAlpZiAoKFRZUEUoa2xh c3MpICE9IFRfTU9EVUxFKSB8fAotCSAgICAob3JpZ19tZSA9IHNlYXJjaF9t ZXRob2QocmJfY09iamVjdCwgZGVmKSwgVU5ERUZJTkVEX01FVEhPRF9FTlRS WV9QKG9yaWdfbWUpKSkgeworCSAgICAob3JpZ19tZSA9IHNlYXJjaF9tZXRo b2QocmJfY09iamVjdCwgZGVmLCAwKSwKKwkJCQkgICAgIFVOREVGSU5FRF9N RVRIT0RfRU5UUllfUChvcmlnX21lKSkpIHsKIAkgICAgcmJfcHJpbnRfdW5k ZWYoa2xhc3MsIGRlZiwgMCk7CiAJfQogICAgIH0KQEAgLTExOTIsOSArMTIw NSw5IEBAIHJiX21vZF9tb2RmdW5jKGludCBhcmdjLCBWQUxVRSAqYXJndiwg VkFMVUUgbW9kdWxlKQogCiAJaWQgPSByYl90b19pZChhcmd2W2ldKTsKIAlm b3IgKDs7KSB7Ci0JICAgIG1lID0gc2VhcmNoX21ldGhvZChtLCBpZCk7CisJ ICAgIG1lID0gc2VhcmNoX21ldGhvZChtLCBpZCwgMCk7CiAJICAgIGlmICht ZSA9PSAwKSB7Ci0JCW1lID0gc2VhcmNoX21ldGhvZChyYl9jT2JqZWN0LCBp ZCk7CisJCW1lID0gc2VhcmNoX21ldGhvZChyYl9jT2JqZWN0LCBpZCwgMCk7 CiAJICAgIH0KIAkgICAgaWYgKFVOREVGSU5FRF9NRVRIT0RfRU5UUllfUCht ZSkpIHsKIAkJcmJfcHJpbnRfdW5kZWYobW9kdWxlLCBpZCwgMCk7CkBAIC0x MjE0LDcgKzEyMjcsNyBAQCByYl9tb2RfbW9kZnVuYyhpbnQgYXJnYywgVkFM VUUgKmFyZ3YsIFZBTFVFIG1vZHVsZSkKIGludAogcmJfbWV0aG9kX2Jhc2lj X2RlZmluaXRpb25fcChWQUxVRSBrbGFzcywgSUQgaWQpCiB7Ci0gICAgY29u c3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lID0gcmJfbWV0aG9kX2VudHJ5KGts YXNzLCBpZCk7CisgICAgY29uc3QgcmJfbWV0aG9kX2VudHJ5X3QgKm1lID0g cmJfbWV0aG9kX2VudHJ5KGtsYXNzLCBpZCwgMCk7CiAgICAgaWYgKG1lICYm IChtZS0+ZmxhZyAmIE5PRVhfQkFTSUMpKQogCXJldHVybiAxOwogICAgIHJl dHVybiAwOwo= --mimepart_4cf08b7d358b4_36e61376f918145ce Content-Type: text/x-patch; name=refinements-r29944-20101127.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=refinements-r29944-20101127.diff ZGlmZiAtLWdpdCBhL2NsYXNzLmMgYi9jbGFzcy5jCmluZGV4IGFjMzk4NjMu LjVjNzgzNWIgMTAwNjQ0Ci0tLSBhL2NsYXNzLmMKKysrIGIvY2xhc3MuYwpA QCAtNjE3LDggKzYxNyw4IEBAIHJiX2RlZmluZV9tb2R1bGVfaWRfdW5kZXIo VkFMVUUgb3V0ZXIsIElEIGlkKQogICAgIHJldHVybiBtb2R1bGU7CiB9CiAK LXN0YXRpYyBWQUxVRQotaW5jbHVkZV9jbGFzc19uZXcoVkFMVUUgbW9kdWxl LCBWQUxVRSBzdXBlcikKK1ZBTFVFCityYl9pbmNsdWRlX2NsYXNzX25ldyhW QUxVRSBtb2R1bGUsIFZBTFVFIHN1cGVyKQogewogICAgIFZBTFVFIGtsYXNz ID0gY2xhc3NfYWxsb2MoVF9JQ0xBU1MsIHJiX2NDbGFzcyk7CiAKQEAgLTY4 NSw3ICs2ODUsNyBAQCByYl9pbmNsdWRlX21vZHVsZShWQUxVRSBrbGFzcywg VkFMVUUgbW9kdWxlKQogCQlicmVhazsKIAkgICAgfQogCX0KLQljID0gUkNM QVNTX1NVUEVSKGMpID0gaW5jbHVkZV9jbGFzc19uZXcobW9kdWxlLCBSQ0xB U1NfU1VQRVIoYykpOworCWMgPSBSQ0xBU1NfU1VQRVIoYykgPSByYl9pbmNs dWRlX2NsYXNzX25ldyhtb2R1bGUsIFJDTEFTU19TVVBFUihjKSk7CiAJaWYg KFJNT0RVTEVfTV9UQkwobW9kdWxlKSAmJiBSTU9EVUxFX01fVEJMKG1vZHVs ZSktPm51bV9lbnRyaWVzKQogCSAgICBjaGFuZ2VkID0gMTsKICAgICAgIHNr aXA6CmRpZmYgLS1naXQgYS9ldmFsLmMgYi9ldmFsLmMKaW5kZXggYmJmNjZi My4uNmQ1YWY3YiAxMDA2NDQKLS0tIGEvZXZhbC5jCisrKyBiL2V2YWwuYwpA QCAtMjMsNiArMjMsOCBAQCBWQUxVRSBwcm9jX2ludm9rZShWQUxVRSwgVkFM VUUsIFZBTFVFLCBWQUxVRSk7CiBWQUxVRSByYl9iaW5kaW5nX25ldyh2b2lk KTsKIE5PUkVUVVJOKHZvaWQgcmJfcmFpc2VfanVtcChWQUxVRSkpOwogCitO T0RFICpyYl92bV9nZXRfY3JlZihjb25zdCByYl9pc2VxX3QgKiwgY29uc3Qg VkFMVUUgKiwgY29uc3QgVkFMVUUgKik7CisKIElEIHJiX2ZyYW1lX2NhbGxl ZSh2b2lkKTsKIFZBTFVFIHJiX2VMb2NhbEp1bXBFcnJvcjsKIFZBTFVFIHJi X2VTeXNTdGFja0Vycm9yOwpAQCAtODU4LDYgKzg2MCwxODAgQEAgcmJfbW9k X2luY2x1ZGUoaW50IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxVRSBtb2R1bGUp CiB9CiAKIHZvaWQKK3JiX292ZXJsYXlfbW9kdWxlKE5PREUgKmNyZWYsIFZB TFVFIGtsYXNzLCBWQUxVRSBtb2R1bGUpCit7CisgICAgVkFMVUUgaWNsYXNz LCBjLCBzdXBlcmNsYXNzID0ga2xhc3M7CisKKyAgICBDaGVja19UeXBlKGts YXNzLCBUX0NMQVNTKTsKKyAgICBDaGVja19UeXBlKG1vZHVsZSwgVF9NT0RV TEUpOworICAgIGlmIChOSUxfUChjcmVmLT5uZF9vbW9kKSkgeworCWNyZWYt Pm5kX29tb2QgPSByYl9oYXNoX25ldygpOworCXJiX2Z1bmNhbGwoY3JlZi0+ bmRfb21vZCwgcmJfaW50ZXJuKCJjb21wYXJlX2J5X2lkZW50aXR5IiksIDAp OworICAgIH0KKyAgICBlbHNlIHsKKwlpZiAoY3JlZi0+ZmxhZ3MgJiBOT0RF X0ZMX0NSRUZfT01PRF9TSEFSRUQpIHsKKwkgICAgY3JlZi0+bmRfb21vZCA9 IHJiX2hhc2hfZHVwKGNyZWYtPm5kX29tb2QpOworCSAgICBjcmVmLT5mbGFn cyAmPSB+Tk9ERV9GTF9DUkVGX09NT0RfU0hBUkVEOworCX0KKwlpZiAoIU5J TF9QKGMgPSByYl9oYXNoX2xvb2t1cChjcmVmLT5uZF9vbW9kLCBrbGFzcykp KSB7CisJICAgIHN1cGVyY2xhc3MgPSBjOworCSAgICB3aGlsZSAoYyAmJiBU WVBFKGMpID09IFRfSUNMQVNTKSB7CisJCWlmIChSQkFTSUMoYyktPmtsYXNz ID09IG1vZHVsZSkgeworCQkgICAgLyogYWxyZWFkeSBvdmVybGF5ZWQgbW9k dWxlICovCisJCSAgICByZXR1cm47CisJCX0KKwkJYyA9IFJDTEFTU19TVVBF UihjKTsKKwkgICAgfQorCX0KKyAgICB9CisgICAgRkxfU0VUKG1vZHVsZSwg Uk1PRFVMRV9JU19PVkVSTEFZRUQpOworICAgIGMgPSBpY2xhc3MgPSByYl9p bmNsdWRlX2NsYXNzX25ldyhtb2R1bGUsIHN1cGVyY2xhc3MpOworICAgIG1v ZHVsZSA9IFJDTEFTU19TVVBFUihtb2R1bGUpOworICAgIHdoaWxlIChtb2R1 bGUpIHsKKwlGTF9TRVQobW9kdWxlLCBSTU9EVUxFX0lTX09WRVJMQVlFRCk7 CisJYyA9IFJDTEFTU19TVVBFUihjKSA9IHJiX2luY2x1ZGVfY2xhc3NfbmV3 KG1vZHVsZSwgUkNMQVNTX1NVUEVSKGMpKTsKKwltb2R1bGUgPSBSQ0xBU1Nf U1VQRVIobW9kdWxlKTsKKyAgICB9CisgICAgcmJfaGFzaF9hc2V0KGNyZWYt Pm5kX29tb2QsIGtsYXNzLCBpY2xhc3MpOworICAgIHJiX2NsZWFyX2NhY2hl X2J5X2NsYXNzKGtsYXNzKTsKK30KKworc3RhdGljIGludAordXNpbmdfbW9k dWxlX2koVkFMVUUga2xhc3MsIFZBTFVFIG1vZHVsZSwgVkFMVUUgYXJnKQor eworICAgIE5PREUgKmNyZWYgPSAoTk9ERSAqKSBhcmc7CisgICAgaW50IGk7 CisKKyAgICByYl9vdmVybGF5X21vZHVsZShjcmVmLCBrbGFzcywgbW9kdWxl KTsKKyAgICByZXR1cm4gU1RfQ09OVElOVUU7Cit9CisKK3ZvaWQKK3JiX3Vz aW5nX21vZHVsZShOT0RFICpjcmVmLCBWQUxVRSBtb2R1bGUpCit7CisgICAg SUQgaWRfb3ZlcmxheWVkX21vZHVsZXM7CisgICAgVkFMVUUgb3ZlcmxheWVk X21vZHVsZXM7CisKKyAgICBDaGVja19UeXBlKG1vZHVsZSwgVF9NT0RVTEUp OworICAgIENPTlNUX0lEKGlkX292ZXJsYXllZF9tb2R1bGVzLCAiX19vdmVy bGF5ZWRfbW9kdWxlc19fIik7CisgICAgb3ZlcmxheWVkX21vZHVsZXMgPSBy Yl9hdHRyX2dldChtb2R1bGUsIGlkX292ZXJsYXllZF9tb2R1bGVzKTsKKyAg ICBpZiAoTklMX1Aob3ZlcmxheWVkX21vZHVsZXMpKSByZXR1cm47CisgICAg cmJfaGFzaF9mb3JlYWNoKG92ZXJsYXllZF9tb2R1bGVzLCB1c2luZ19tb2R1 bGVfaSwgKFZBTFVFKSBjcmVmKTsKK30KKworLyoKKyAqICBjYWxsLXNlcToK KyAqICAgICB1c2luZyhtb2R1bGUpICAgIC0+IHNlbGYKKyAqCisgKiAgSW1w b3J0IGNsYXNzIHJlZmluZW1lbnRzIGZyb20gPGk+bW9kdWxlPC9pPiBpbnRv IHRoZSByZWNlaXZlci4KKyAqLworCitzdGF0aWMgVkFMVUUKK3JiX21vZF91 c2luZyhWQUxVRSBzZWxmLCBWQUxVRSBtb2R1bGUpCit7CisgICAgTk9ERSAq Y3JlZiA9IHJiX3ZtX2NyZWYoKTsKKyAgICBJRCBpZF91c2luZ19tb2R1bGVz OworICAgIFZBTFVFIHVzaW5nX21vZHVsZXM7CisKKyAgICBDT05TVF9JRChp ZF91c2luZ19tb2R1bGVzLCAiX191c2luZ19tb2R1bGVzX18iKTsKKyAgICB1 c2luZ19tb2R1bGVzID0gcmJfYXR0cl9nZXQoc2VsZiwgaWRfdXNpbmdfbW9k dWxlcyk7CisgICAgaWYgKE5JTF9QKHVzaW5nX21vZHVsZXMpKSB7CisJdXNp bmdfbW9kdWxlcyA9IHJiX2hhc2hfbmV3KCk7CisJcmJfZnVuY2FsbCh1c2lu Z19tb2R1bGVzLCByYl9pbnRlcm4oImNvbXBhcmVfYnlfaWRlbnRpdHkiKSwg MCk7CisJcmJfaXZhcl9zZXQoc2VsZiwgaWRfdXNpbmdfbW9kdWxlcywgdXNp bmdfbW9kdWxlcyk7CisgICAgfQorICAgIHJiX2hhc2hfYXNldCh1c2luZ19t b2R1bGVzLCBtb2R1bGUsIFF0cnVlKTsKKyAgICByYl91c2luZ19tb2R1bGUo Y3JlZiwgbW9kdWxlKTsKKyAgICByYl9mdW5jYWxsKG1vZHVsZSwgcmJfaW50 ZXJuKCJ1c2VkIiksIDEsIHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQor Cit2b2lkIHJiX3JlZGVmaW5lX29wdF9tZXRob2QoVkFMVUUsIElEKTsKKwor c3RhdGljIFZBTFVFCityZWZpbmVtZW50X21vZHVsZV9tZXRob2RfYWRkZWQo VkFMVUUgbW9kLCBWQUxVRSBtaWQpCit7CisgICAgSUQgaWQgPSBTWU0ySUQo bWlkKTsKKyAgICBJRCBpZF9yZWZpbmVkX2NsYXNzOworICAgIFZBTFVFIGts YXNzOworCisgICAgQ09OU1RfSUQoaWRfcmVmaW5lZF9jbGFzcywgIl9fcmVm aW5lZF9jbGFzc19fIik7CisgICAga2xhc3MgPSByYl9pdmFyX2dldChtb2Qs IGlkX3JlZmluZWRfY2xhc3MpOworICAgIHJiX3JlZGVmaW5lX29wdF9tZXRo b2Qoa2xhc3MsIGlkKTsKK30KKworc3RhdGljIFZBTFVFCityZWZpbmVtZW50 X21vZHVsZV9pbmNsdWRlKGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUg bW9kdWxlKQoreworICAgIHJiX3RocmVhZF90ICp0aCA9IEdFVF9USFJFQUQo KTsKKyAgICByYl9jb250cm9sX2ZyYW1lX3QgKmNmcCA9IHRoLT5jZnA7Cisg ICAgcmJfY29udHJvbF9mcmFtZV90ICplbmRfY2ZwID0gUlVCWV9WTV9FTkRf Q09OVFJPTF9GUkFNRSh0aCk7CisgICAgVkFMVUUgcmVzdWx0ID0gcmJfbW9k X2luY2x1ZGUoYXJnYywgYXJndiwgbW9kdWxlKTsKKyAgICBOT0RFICpjcmVm OworICAgIElEIGlkX3JlZmluZWRfY2xhc3M7CisgICAgVkFMVUUga2xhc3Ms IGM7CisKKyAgICBDT05TVF9JRChpZF9yZWZpbmVkX2NsYXNzLCAiX19yZWZp bmVkX2NsYXNzX18iKTsKKyAgICBrbGFzcyA9IHJiX2F0dHJfZ2V0KG1vZHVs ZSwgaWRfcmVmaW5lZF9jbGFzcyk7CisgICAgd2hpbGUgKFJVQllfVk1fVkFM SURfQ09OVFJPTF9GUkFNRV9QKGNmcCwgZW5kX2NmcCkpIHsKKwlpZiAoUlVC WV9WTV9OT1JNQUxfSVNFUV9QKGNmcC0+aXNlcSkgJiYKKwkgICAgKGNyZWYg PSByYl92bV9nZXRfY3JlZihjZnAtPmlzZXEsIGNmcC0+bGZwLCBjZnAtPmRm cCkpICYmCisJICAgICFOSUxfUChjcmVmLT5uZF9vbW9kKSAmJgorCSAgICAh TklMX1AoYyA9IHJiX2hhc2hfbG9va3VwKGNyZWYtPm5kX29tb2QsIGtsYXNz KSkpIHsKKwkgICAgd2hpbGUgKGFyZ2MtLSkgeworCQlWQUxVRSBtb2QgPSBh cmd2W2FyZ2NdOworCQlpZiAocmJfY2xhc3NfaW5oZXJpdGVkX3AobW9kdWxl LCBtb2QpKSB7CisJCSAgICBSQ0xBU1NfU1VQRVIoYykgPQorCQkJcmJfaW5j bHVkZV9jbGFzc19uZXcobW9kLCBSQ0xBU1NfU1VQRVIoYykpOworCQl9CisJ ICAgIH0KKwkgICAgYnJlYWs7CisJfQorCWNmcCA9IFJVQllfVk1fUFJFVklP VVNfQ09OVFJPTF9GUkFNRShjZnApOworICAgIH0KKyAgICByZXR1cm4gcmVz dWx0OworfQorCisvKgorICogIGNhbGwtc2VxOgorICogICAgIHJlZmluZShr bGFzcykgeyBibG9jayB9ICAgLT4gc2VsZgorICoKKyAqICBSZWZpbmUgPGk+ a2xhc3M8L2k+IGluIHRoZSByZWNlaXZlci4KKyAqLworCitzdGF0aWMgVkFM VUUKK3JiX21vZF9yZWZpbmUoVkFMVUUgbW9kdWxlLCBWQUxVRSBrbGFzcykK K3sKKyAgICBOT0RFICpjcmVmID0gcmJfdm1fY3JlZigpOworICAgIFZBTFVF IG1vZDsKKyAgICBJRCBpZF9vdmVybGF5ZWRfbW9kdWxlcywgaWRfcmVmaW5l ZF9jbGFzczsKKyAgICBWQUxVRSBvdmVybGF5ZWRfbW9kdWxlcywgbW9kdWxl czsKKworICAgIENoZWNrX1R5cGUoa2xhc3MsIFRfQ0xBU1MpOworICAgIENP TlNUX0lEKGlkX292ZXJsYXllZF9tb2R1bGVzLCAiX19vdmVybGF5ZWRfbW9k dWxlc19fIik7CisgICAgb3ZlcmxheWVkX21vZHVsZXMgPSByYl9hdHRyX2dl dChtb2R1bGUsIGlkX292ZXJsYXllZF9tb2R1bGVzKTsKKyAgICBpZiAoTklM X1Aob3ZlcmxheWVkX21vZHVsZXMpKSB7CisJb3ZlcmxheWVkX21vZHVsZXMg PSByYl9oYXNoX25ldygpOworCXJiX2Z1bmNhbGwob3ZlcmxheWVkX21vZHVs ZXMsIHJiX2ludGVybigiY29tcGFyZV9ieV9pZGVudGl0eSIpLCAwKTsKKwly Yl9pdmFyX3NldChtb2R1bGUsIGlkX292ZXJsYXllZF9tb2R1bGVzLCBvdmVy bGF5ZWRfbW9kdWxlcyk7CisgICAgfQorICAgIG1vZCA9IHJiX2hhc2hfYXJl ZihvdmVybGF5ZWRfbW9kdWxlcywga2xhc3MpOworICAgIGlmIChOSUxfUCht b2QpKSB7CisJbW9kID0gcmJfbW9kdWxlX25ldygpOworCUNPTlNUX0lEKGlk X3JlZmluZWRfY2xhc3MsICJfX3JlZmluZWRfY2xhc3NfXyIpOworCXJiX2l2 YXJfc2V0KG1vZCwgaWRfcmVmaW5lZF9jbGFzcywga2xhc3MpOworCXJiX2Rl ZmluZV9zaW5nbGV0b25fbWV0aG9kKG1vZCwgIm1ldGhvZF9hZGRlZCIsCisJ CQkJICAgcmVmaW5lbWVudF9tb2R1bGVfbWV0aG9kX2FkZGVkLCAxKTsKKwly Yl9kZWZpbmVfc2luZ2xldG9uX21ldGhvZChtb2QsICJpbmNsdWRlIiwKKwkJ CQkgICByZWZpbmVtZW50X21vZHVsZV9pbmNsdWRlLCAtMSk7CisJcmJfb3Zl cmxheV9tb2R1bGUoY3JlZiwga2xhc3MsIG1vZCk7CisJcmJfaGFzaF9hc2V0 KG92ZXJsYXllZF9tb2R1bGVzLCBrbGFzcywgbW9kKTsKKyAgICB9CisgICAg cmJfbW9kX21vZHVsZV9ldmFsKDAsIE5VTEwsIG1vZCk7CisgICAgcmV0dXJu IG1vZDsKK30KKwordm9pZAogcmJfb2JqX2NhbGxfaW5pdChWQUxVRSBvYmos IGludCBhcmdjLCBWQUxVRSAqYXJndikKIHsKICAgICBQQVNTX1BBU1NFRF9C TE9DSygpOwpAQCAtOTY5LDYgKzExNDUsMjIgQEAgdG9wX2luY2x1ZGUoaW50 IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxVRSBzZWxmKQogICAgIHJldHVybiBy Yl9tb2RfaW5jbHVkZShhcmdjLCBhcmd2LCByYl9jT2JqZWN0KTsKIH0KIAor LyoKKyAqICBjYWxsLXNlcToKKyAqICAgICB1c2luZyhtb2R1bGUpICAgIC0+ IHNlbGYKKyAqCisgKiAgSW1wb3J0IGNsYXNzIHJlZmluZW1lbnRzIGZyb20g PGk+bW9kdWxlPC9pPiBpbnRvIHRoZSBzY29wZSB3aGVyZSA8Y29kZT51c2U8 L2NvZGU+IGlzIGNhbGxlZC4KKyAqLworCitzdGF0aWMgVkFMVUUKK2ZfdXNp bmcoVkFMVUUgc2VsZiwgVkFMVUUgbW9kdWxlKQoreworICAgIE5PREUgKmNy ZWYgPSByYl92bV9jcmVmKCk7CisKKyAgICByYl91c2luZ19tb2R1bGUoY3Jl ZiwgbW9kdWxlKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKwogVkFMVUUgcmJf Zl90cmFjZV92YXIoKTsKIFZBTFVFIHJiX2ZfdW50cmFjZV92YXIoKTsKIApA QCAtMTEyMSw2ICsxMzEzLDggQEAgSW5pdF9ldmFsKHZvaWQpCiAgICAgcmJf ZGVmaW5lX3ByaXZhdGVfbWV0aG9kKHJiX2NNb2R1bGUsICJhcHBlbmRfZmVh dHVyZXMiLCByYl9tb2RfYXBwZW5kX2ZlYXR1cmVzLCAxKTsKICAgICByYl9k ZWZpbmVfcHJpdmF0ZV9tZXRob2QocmJfY01vZHVsZSwgImV4dGVuZF9vYmpl Y3QiLCByYl9tb2RfZXh0ZW5kX29iamVjdCwgMSk7CiAgICAgcmJfZGVmaW5l X3ByaXZhdGVfbWV0aG9kKHJiX2NNb2R1bGUsICJpbmNsdWRlIiwgcmJfbW9k X2luY2x1ZGUsIC0xKTsKKyAgICByYl9kZWZpbmVfcHJpdmF0ZV9tZXRob2Qo cmJfY01vZHVsZSwgInVzaW5nIiwgcmJfbW9kX3VzaW5nLCAxKTsKKyAgICBy Yl9kZWZpbmVfcHJpdmF0ZV9tZXRob2QocmJfY01vZHVsZSwgInJlZmluZSIs IHJiX21vZF9yZWZpbmUsIDEpOwogCiAgICAgcmJfdW5kZWZfbWV0aG9kKHJi X2NDbGFzcywgIm1vZHVsZV9mdW5jdGlvbiIpOwogCkBAIC0xMTM2LDYgKzEz MzAsOCBAQCBJbml0X2V2YWwodm9pZCkKIAogICAgIHJiX2RlZmluZV9zaW5n bGV0b25fbWV0aG9kKHJiX3ZtX3RvcF9zZWxmKCksICJpbmNsdWRlIiwgdG9w X2luY2x1ZGUsIC0xKTsKIAorICAgIHJiX2RlZmluZV9nbG9iYWxfZnVuY3Rp b24oInVzaW5nIiwgZl91c2luZywgMSk7CisKICAgICByYl9kZWZpbmVfbWV0 aG9kKHJiX21LZXJuZWwsICJleHRlbmQiLCByYl9vYmpfZXh0ZW5kLCAtMSk7 CiAKICAgICByYl9kZWZpbmVfZ2xvYmFsX2Z1bmN0aW9uKCJ0cmFjZV92YXIi LCByYl9mX3RyYWNlX3ZhciwgLTEpOwkvKiBpbiB2YXJpYWJsZS5jICovCmRp ZmYgLS1naXQgYS9nYy5jIGIvZ2MuYwppbmRleCBjZjkxMDdhLi5jMzMwOWVl IDEwMDY0NAotLS0gYS9nYy5jCisrKyBiL2djLmMKQEAgLTE2ODQsNiArMTY4 NCwxMiBAQCBnY19tYXJrX2NoaWxkcmVuKHJiX29ianNwYWNlX3QgKm9ianNw YWNlLCBWQUxVRSBwdHIsIGludCBsZXYpCiAJICAgIHB0ciA9IChWQUxVRSlv YmotPmFzLm5vZGUudTIubm9kZTsKIAkgICAgZ290byBhZ2FpbjsKIAorCSAg Y2FzZSBOT0RFX0NSRUY6CisJICAgIGdjX21hcmsob2Jqc3BhY2UsIG9iai0+ YXMubm9kZS51MC52YWx1ZSwgbGV2KTsKKwkgICAgZ2NfbWFyayhvYmpzcGFj ZSwgKFZBTFVFKW9iai0+YXMubm9kZS51MS5ub2RlLCBsZXYpOworCSAgICBw dHIgPSAoVkFMVUUpb2JqLT5hcy5ub2RlLnUzLm5vZGU7CisJICAgIGdvdG8g YWdhaW47CisKIAkgIGRlZmF1bHQ6CQkvKiB1bmxpc3RlZCBOT0RFICovCiAJ ICAgIGlmIChpc19wb2ludGVyX3RvX2hlYXAob2Jqc3BhY2UsIG9iai0+YXMu bm9kZS51MS5ub2RlKSkgewogCQlnY19tYXJrKG9ianNwYWNlLCAoVkFMVUUp b2JqLT5hcy5ub2RlLnUxLm5vZGUsIGxldik7CmRpZmYgLS1naXQgYS9pbmNs dWRlL3J1YnkvaW50ZXJuLmggYi9pbmNsdWRlL3J1YnkvaW50ZXJuLmgKaW5k ZXggYjE4YTFmNS4uN2NjNzViMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ydWJ5 L2ludGVybi5oCisrKyBiL2luY2x1ZGUvcnVieS9pbnRlcm4uaApAQCAtMTY5 LDYgKzE2OSw3IEBAIFZBTFVFIHJiX2RlZmluZV9jbGFzc19pZF91bmRlcihW QUxVRSwgSUQsIFZBTFVFKTsKIFZBTFVFIHJiX21vZHVsZV9uZXcodm9pZCk7 CiBWQUxVRSByYl9kZWZpbmVfbW9kdWxlX2lkKElEKTsKIFZBTFVFIHJiX2Rl ZmluZV9tb2R1bGVfaWRfdW5kZXIoVkFMVUUsIElEKTsKK1ZBTFVFIHJiX2lu Y2x1ZGVfY2xhc3NfbmV3KFZBTFVFLCBWQUxVRSk7CiBWQUxVRSByYl9tb2Rf aW5jbHVkZWRfbW9kdWxlcyhWQUxVRSk7CiBWQUxVRSByYl9tb2RfaW5jbHVk ZV9wKFZBTFVFLCBWQUxVRSk7CiBWQUxVRSByYl9tb2RfYW5jZXN0b3JzKFZB TFVFKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvcnVieS9ydWJ5LmggYi9pbmNs dWRlL3J1YnkvcnVieS5oCmluZGV4IDRlMTU1MTcuLjFkMjU0NmEgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvcnVieS9ydWJ5LmgKKysrIGIvaW5jbHVkZS9ydWJ5 L3J1YnkuaApAQCAtNjI5LDYgKzYyOSw3IEBAIHN0cnVjdCBSQ2xhc3Mgewog I2RlZmluZSBSTU9EVUxFX0NPTlNUX1RCTChtKSBSQ0xBU1NfQ09OU1RfVEJM KG0pCiAjZGVmaW5lIFJNT0RVTEVfTV9UQkwobSkgUkNMQVNTX01fVEJMKG0p CiAjZGVmaW5lIFJNT0RVTEVfU1VQRVIobSkgUkNMQVNTX1NVUEVSKG0pCisj ZGVmaW5lIFJNT0RVTEVfSVNfT1ZFUkxBWUVEIEZMX1VTRVIyCiAKIHN0cnVj dCBSRmxvYXQgewogICAgIHN0cnVjdCBSQmFzaWMgYmFzaWM7CmRpZmYgLS1n aXQgYS9pbnNucy5kZWYgYi9pbnNucy5kZWYKaW5kZXggNTk3NGNiMi4uNmU3 MWY2YyAxMDA2NDQKLS0tIGEvaW5zbnMuZGVmCisrKyBiL2luc25zLmRlZgpA QCAtMTgzLDggKzE4Myw4IEBAIGdldGNsYXNzdmFyaWFibGUKICgpCiAoVkFM VUUgdmFsKQogewotICAgIE5PREUgKiBjb25zdCBjcmVmID0gdm1fZ2V0X2Ny ZWYoR0VUX0lTRVEoKSwgR0VUX0xGUCgpLCBHRVRfREZQKCkpOwotICAgIHZh bCA9IHJiX2N2YXJfZ2V0KHZtX2dldF9jdmFyX2Jhc2UoY3JlZiksIGlkKTsK KyAgICBOT0RFICogY29uc3QgY3JlZiA9IHJiX3ZtX2dldF9jcmVmKEdFVF9J U0VRKCksIEdFVF9MRlAoKSwgR0VUX0RGUCgpKTsKKyAgICB2YWwgPSByYl9j dmFyX2dldCh2bV9nZXRfY3Zhcl9iYXNlKGNyZWYsIEdFVF9DRlAoKSksIGlk KTsKIH0KIAogLyoqCkBAIC0xOTgsOCArMTk4LDggQEAgc2V0Y2xhc3N2YXJp YWJsZQogKFZBTFVFIHZhbCkKICgpCiB7Ci0gICAgTk9ERSAqIGNvbnN0IGNy ZWYgPSB2bV9nZXRfY3JlZihHRVRfSVNFUSgpLCBHRVRfTEZQKCksIEdFVF9E RlAoKSk7Ci0gICAgcmJfY3Zhcl9zZXQodm1fZ2V0X2N2YXJfYmFzZShjcmVm KSwgaWQsIHZhbCk7CisgICAgTk9ERSAqIGNvbnN0IGNyZWYgPSByYl92bV9n ZXRfY3JlZihHRVRfSVNFUSgpLCBHRVRfTEZQKCksIEdFVF9ERlAoKSk7Cisg ICAgcmJfY3Zhcl9zZXQodm1fZ2V0X2N2YXJfYmFzZShjcmVmLCBHRVRfQ0ZQ KCkpLCBpZCwgdmFsKTsKIH0KIAogLyoqCkBAIC05NjcsNiArOTY3LDcgQEAg ZGVmaW5lY2xhc3MKIAkJICBWTV9GUkFNRV9NQUdJQ19DTEFTUywga2xhc3Ms IDAsIChWQUxVRSkgR0VUX0JMT0NLX1BUUigpLAogCQkgIGNsYXNzX2lzZXEt PmlzZXFfZW5jb2RlZCwgR0VUX1NQKCksIDAsCiAJCSAgY2xhc3NfaXNlcS0+ bG9jYWxfc2l6ZSk7CisgICAgcmJfdm1fdXNpbmdfbW9kdWxlcyhjbGFzc19p c2VxLT5jcmVmX3N0YWNrLCBrbGFzcyk7CiAgICAgUkVTVE9SRV9SRUdTKCk7 CiAKICAgICBJTkNfVk1fU1RBVEVfVkVSU0lPTigpOwpAQCAtMTA0MSwxMiAr MTA0MiwxMSBAQCBpbnZva2VzdXBlcgogICAgIHdoaWxlIChpcCAmJiAhaXAt PmtsYXNzKSB7CiAJaXAgPSBpcC0+cGFyZW50X2lzZXE7CiAgICAgfQotICBh Z2FpbjoKICAgICBtZSA9IHJiX21ldGhvZF9lbnRyeShrbGFzcywgaWQsICZr bGFzcyk7CiAgICAgaWYgKG1lICYmIG1lLT5kZWYtPnR5cGUgPT0gVk1fTUVU SE9EX1RZUEVfSVNFUSAmJgogCW1lLT5kZWYtPmJvZHkuaXNlcSA9PSBpcCkg ewogCWtsYXNzID0gUkNMQVNTX1NVUEVSKGtsYXNzKTsKLQlnb3RvIGFnYWlu OworCW1lID0gcmJfbWV0aG9kX2VudHJ5X2dldF93aXRoX29tb2QoUW5pbCwg a2xhc3MsIGlkLCAma2xhc3MpOwogICAgIH0KIAogICAgIENBTExfTUVUSE9E KG51bSwgYmxvY2twdHIsIGZsYWcsIGlkLCBtZSwgcmVjdiwga2xhc3MpOwpk aWZmIC0tZ2l0IGEvaXNlcS5jIGIvaXNlcS5jCmluZGV4IDJiODJhYTguLjc1 NDI5NjkgMTAwNjQ0Ci0tLSBhL2lzZXEuYworKysgYi9pc2VxLmMKQEAgLTE4 MiwyMCArMTgyLDIwIEBAIHNldF9yZWxhdGlvbihyYl9pc2VxX3QgKmlzZXEs IGNvbnN0IFZBTFVFIHBhcmVudCkKICAgICAvKiBzZXQgY2xhc3MgbmVzdCBz dGFjayAqLwogICAgIGlmICh0eXBlID09IElTRVFfVFlQRV9UT1ApIHsKIAkv KiB0b3BsZXZlbCBpcyBwcml2YXRlICovCi0JaXNlcS0+Y3JlZl9zdGFjayA9 IE5FV19CTE9DSyhyYl9jT2JqZWN0KTsKLQlpc2VxLT5jcmVmX3N0YWNrLT5u ZF9maWxlID0gMDsKKwlpc2VxLT5jcmVmX3N0YWNrID0gTkVXX0NSRUYocmJf Y09iamVjdCk7CisJaXNlcS0+Y3JlZl9zdGFjay0+bmRfb21vZCA9IFFuaWw7 CiAJaXNlcS0+Y3JlZl9zdGFjay0+bmRfdmlzaSA9IE5PRVhfUFJJVkFURTsK IAlpZiAodGgtPnRvcF93cmFwcGVyKSB7Ci0JICAgIE5PREUgKmNyZWYgPSBO RVdfQkxPQ0sodGgtPnRvcF93cmFwcGVyKTsKLQkgICAgY3JlZi0+bmRfZmls ZSA9IDA7CisJICAgIE5PREUgKmNyZWYgPSBORVdfQ1JFRih0aC0+dG9wX3dy YXBwZXIpOworCSAgICBjcmVmLT5uZF9vbW9kID0gUW5pbDsKIAkgICAgY3Jl Zi0+bmRfdmlzaSA9IE5PRVhfUFJJVkFURTsKIAkgICAgY3JlZi0+bmRfbmV4 dCA9IGlzZXEtPmNyZWZfc3RhY2s7CiAJICAgIGlzZXEtPmNyZWZfc3RhY2sg PSBjcmVmOwogCX0KICAgICB9CiAgICAgZWxzZSBpZiAodHlwZSA9PSBJU0VR X1RZUEVfTUVUSE9EIHx8IHR5cGUgPT0gSVNFUV9UWVBFX0NMQVNTKSB7Ci0J aXNlcS0+Y3JlZl9zdGFjayA9IE5FV19CTE9DSygwKTsgLyogcGxhY2UgaG9s ZGVyICovCi0JaXNlcS0+Y3JlZl9zdGFjay0+bmRfZmlsZSA9IDA7CisJaXNl cS0+Y3JlZl9zdGFjayA9IE5FV19DUkVGKDApOyAvKiBwbGFjZSBob2xkZXIg Ki8KKwlpc2VxLT5jcmVmX3N0YWNrLT5uZF9vbW9kID0gUW5pbDsKICAgICB9 CiAgICAgZWxzZSBpZiAoUlRFU1QocGFyZW50KSkgewogCXJiX2lzZXFfdCAq cGlzZXE7CkBAIC0xMzY4LDcgKzEzNjgsOSBAQCByYl9pc2VxX2Nsb25lKFZB TFVFIGlzZXF2YWwsIFZBTFVFIG5ld2NiYXNlKQogCWlzZXExLT5sb2NhbF9p c2VxID0gaXNlcTE7CiAgICAgfQogICAgIGlmIChuZXdjYmFzZSkgewotCWlz ZXExLT5jcmVmX3N0YWNrID0gTkVXX0JMT0NLKG5ld2NiYXNlKTsKKwlpc2Vx MS0+Y3JlZl9zdGFjayA9IE5FV19DUkVGKG5ld2NiYXNlKTsKKwlpc2VxMS0+ Y3JlZl9zdGFjay0+bmRfb21vZCA9IGlzZXEwLT5jcmVmX3N0YWNrLT5uZF9v bW9kOworCWlzZXExLT5jcmVmX3N0YWNrLT5uZF92aXNpID0gaXNlcTAtPmNy ZWZfc3RhY2stPm5kX3Zpc2k7CiAJaWYgKGlzZXEwLT5jcmVmX3N0YWNrLT5u ZF9uZXh0KSB7CiAJICAgIGlzZXExLT5jcmVmX3N0YWNrLT5uZF9uZXh0ID0g aXNlcTAtPmNyZWZfc3RhY2stPm5kX25leHQ7CiAJfQpkaWZmIC0tZ2l0IGEv bWV0aG9kLmggYi9tZXRob2QuaAppbmRleCBjOTY3YTY5Li40NzUwYjQ1IDEw MDY0NAotLS0gYS9tZXRob2QuaAorKysgYi9tZXRob2QuaApAQCAtOTEsNyAr OTEsOCBAQCB2b2lkIHJiX2FkZF9tZXRob2RfY2Z1bmMoVkFMVUUga2xhc3Ms IElEIG1pZCwgVkFMVUUgKCpmdW5jKShBTllBUkdTKSwgaW50IGFyZ2MsCiBy Yl9tZXRob2RfZW50cnlfdCAqcmJfYWRkX21ldGhvZChWQUxVRSBrbGFzcywg SUQgbWlkLCByYl9tZXRob2RfdHlwZV90IHR5cGUsIHZvaWQgKm9wdGlvbiwg cmJfbWV0aG9kX2ZsYWdfdCBub2V4KTsKIHJiX21ldGhvZF9lbnRyeV90ICpy Yl9tZXRob2RfZW50cnkoVkFMVUUga2xhc3MsIElEIGlkLCBWQUxVRSAqZGVm aW5lX2NsYXNzX3B0cik7CiAKLXJiX21ldGhvZF9lbnRyeV90ICpyYl9tZXRo b2RfZW50cnlfZ2V0X3dpdGhvdXRfY2FjaGUoVkFMVUUga2xhc3MsIElEIGlk LCBWQUxVRSAqZGVmaW5lX2NsYXNzX3B0cik7CityYl9tZXRob2RfZW50cnlf dCAqcmJfbWV0aG9kX2VudHJ5X2dldF93aXRoX29tb2QoVkFMVUUgb21vZCwg VkFMVUUga2xhc3MsIElEIGlkLCBWQUxVRSAqZGVmaW5lX2NsYXNzX3B0cik7 CityYl9tZXRob2RfZW50cnlfdCAqcmJfbWV0aG9kX2VudHJ5X2dldF93aXRo b3V0X2NhY2hlKFZBTFVFIGtsYXNzLCBWQUxVRSBvbW9kLCBJRCBpZCwgVkFM VUUgKmRlZmluZV9jbGFzc19wdHIpOwogcmJfbWV0aG9kX2VudHJ5X3QgKnJi X21ldGhvZF9lbnRyeV9zZXQoVkFMVUUga2xhc3MsIElEIG1pZCwgY29uc3Qg cmJfbWV0aG9kX2VudHJ5X3QgKiwgcmJfbWV0aG9kX2ZsYWdfdCBub2V4KTsK IAogaW50IHJiX21ldGhvZF9lbnRyeV9hcml0eShjb25zdCByYl9tZXRob2Rf ZW50cnlfdCAqbWUpOwpkaWZmIC0tZ2l0IGEvbm9kZS5oIGIvbm9kZS5oCmlu ZGV4IDgyZjdiYTAuLmI3NmUxNDEgMTAwNjQ0Ci0tLSBhL25vZGUuaAorKysg Yi9ub2RlLmgKQEAgLTE4OCw2ICsxODgsOCBAQCBlbnVtIG5vZGVfdHlwZSB7 CiAjZGVmaW5lIE5PREVfQ09MT04yICAgICAgTk9ERV9DT0xPTjIKICAgICBO T0RFX0NPTE9OMywKICNkZWZpbmUgTk9ERV9DT0xPTjMgICAgICBOT0RFX0NP TE9OMworICAgIE5PREVfQ1JFRiwKKyNkZWZpbmUgTk9ERV9DUkVGICAgICAg ICBOT0RFX0NSRUYKICAgICBOT0RFX0RPVDIsCiAjZGVmaW5lIE5PREVfRE9U MiAgICAgICAgTk9ERV9ET1QyCiAgICAgTk9ERV9ET1QzLApAQCAtMjM0LDcg KzIzNiwxMCBAQCBlbnVtIG5vZGVfdHlwZSB7CiAKIHR5cGVkZWYgc3RydWN0 IFJOb2RlIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGNoYXIg Km5kX2ZpbGU7CisgICAgdW5pb24geworCWNoYXIgKmZpbGU7CisJVkFMVUUg dmFsdWU7CisgICAgfSB1MDsKICAgICB1bmlvbiB7CiAJc3RydWN0IFJOb2Rl ICpub2RlOwogCUlEIGlkOwpAQCAtMjYwLDkgKzI2NSwxMCBAQCB0eXBlZGVm IHN0cnVjdCBSTm9kZSB7CiAKICNkZWZpbmUgUk5PREUob2JqKSAgKFJfQ0FT VChSTm9kZSkob2JqKSkKIAotLyogMC4uNDpUX1RZUEVTLCA1OkZMX01BUkss IDY6cmVzZXJ2ZWQsIDc6Tk9ERV9GTF9ORVdMSU5FICovCisvKiAwLi40OlRf VFlQRVMsIDU6RkxfTUFSSywgNjpOT0RFX0ZMX0NSRUZfT01PRF9TSEFSRUQs IDc6Tk9ERV9GTF9ORVdMSU5FICovCiAjZGVmaW5lIE5PREVfRkxfTkVXTElO RSAoKChWQUxVRSkxKTw8NykKICNkZWZpbmUgTk9ERV9GTF9DUkVGX1BVU0hF RF9CWV9FVkFMIE5PREVfRkxfTkVXTElORQorI2RlZmluZSBOT0RFX0ZMX0NS RUZfT01PRF9TSEFSRUQgKCgoVkFMVUUpMSk8PDYpCiAKICNkZWZpbmUgTk9E RV9UWVBFU0hJRlQgOAogI2RlZmluZSBOT0RFX1RZUEVNQVNLICAoKChWQUxV RSkweDdmKTw8Tk9ERV9UWVBFU0hJRlQpCkBAIC0yNzcsNiArMjgzLDkgQEAg dHlwZWRlZiBzdHJ1Y3QgUk5vZGUgewogI2RlZmluZSBuZF9zZXRfbGluZShu LGwpIFwKICAgICBSTk9ERShuKS0+ZmxhZ3M9KChSTk9ERShuKS0+ZmxhZ3Mm figtMTw8Tk9ERV9MU0hJRlQpKXwoKChsKSZOT0RFX0xNQVNLKTw8Tk9ERV9M U0hJRlQpKQogCisjZGVmaW5lIG5kX2ZpbGUgIHUwLmZpbGUKKyNkZWZpbmUg bmRfb21vZCAgdTAudmFsdWUKKwogI2RlZmluZSBuZF9oZWFkICB1MS5ub2Rl CiAjZGVmaW5lIG5kX2FsZW4gIHUyLmFyZ2MKICNkZWZpbmUgbmRfbmV4dCAg dTMubm9kZQpAQCAtNDMzLDYgKzQ0Miw3IEBAIHR5cGVkZWYgc3RydWN0IFJO b2RlIHsKICNkZWZpbmUgTkVXX01PRFVMRShuLGIpIE5FV19OT0RFKE5PREVf TU9EVUxFLG4sTkVXX1NDT1BFKDAsYiksMCkKICNkZWZpbmUgTkVXX0NPTE9O MihjLGkpIE5FV19OT0RFKE5PREVfQ09MT04yLGMsaSwwKQogI2RlZmluZSBO RVdfQ09MT04zKGkpIE5FV19OT0RFKE5PREVfQ09MT04zLDAsaSwwKQorI2Rl ZmluZSBORVdfQ1JFRihhKSBORVdfTk9ERShOT0RFX0NSRUYsYSwwLDApCiAj ZGVmaW5lIE5FV19ET1QyKGIsZSkgTkVXX05PREUoTk9ERV9ET1QyLGIsZSww KQogI2RlZmluZSBORVdfRE9UMyhiLGUpIE5FV19OT0RFKE5PREVfRE9UMyxi LGUsMCkKICNkZWZpbmUgTkVXX1NFTEYoKSBORVdfTk9ERShOT0RFX1NFTEYs MCwwLDApCmRpZmYgLS1naXQgYS9vYmplY3QuYyBiL29iamVjdC5jCmluZGV4 IDc1MTkyYzEuLjQ4MDI2NmEgMTAwNjQ0Ci0tLSBhL29iamVjdC5jCisrKyBi L29iamVjdC5jCkBAIC0yNTMxLDYgKzI1MzEsNyBAQCBJbml0X09iamVjdCh2 b2lkKQogICAgIHJiX2RlZmluZV9wcml2YXRlX21ldGhvZChyYl9jQ2xhc3Ms ICJpbmhlcml0ZWQiLCByYl9vYmpfZHVtbXksIDEpOwogICAgIHJiX2RlZmlu ZV9wcml2YXRlX21ldGhvZChyYl9jTW9kdWxlLCAiaW5jbHVkZWQiLCByYl9v YmpfZHVtbXksIDEpOwogICAgIHJiX2RlZmluZV9wcml2YXRlX21ldGhvZChy Yl9jTW9kdWxlLCAiZXh0ZW5kZWQiLCByYl9vYmpfZHVtbXksIDEpOworICAg IHJiX2RlZmluZV9wcml2YXRlX21ldGhvZChyYl9jTW9kdWxlLCAidXNlZCIs IHJiX29ial9kdW1teSwgMSk7CiAgICAgcmJfZGVmaW5lX3ByaXZhdGVfbWV0 aG9kKHJiX2NNb2R1bGUsICJtZXRob2RfYWRkZWQiLCByYl9vYmpfZHVtbXks IDEpOwogICAgIHJiX2RlZmluZV9wcml2YXRlX21ldGhvZChyYl9jTW9kdWxl LCAibWV0aG9kX3JlbW92ZWQiLCByYl9vYmpfZHVtbXksIDEpOwogICAgIHJi X2RlZmluZV9wcml2YXRlX21ldGhvZChyYl9jTW9kdWxlLCAibWV0aG9kX3Vu ZGVmaW5lZCIsIHJiX29ial9kdW1teSwgMSk7CmRpZmYgLS1naXQgYS90ZXN0 L3J1YnkvdGVzdF9yZWZpbmVtZW50LnJiIGIvdGVzdC9ydWJ5L3Rlc3RfcmVm aW5lbWVudC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4wNWE0ZjMzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9ydWJ5L3Rlc3Rf cmVmaW5lbWVudC5yYgpAQCAtMCwwICsxLDMxMSBAQAorcmVxdWlyZSAndGVz dC91bml0JworCitjbGFzcyBUZXN0UmVmaW5lbWVudCA8IFRlc3Q6OlVuaXQ6 OlRlc3RDYXNlCisgIGNsYXNzIEZvbworICAgIGRlZiB4CisgICAgICByZXR1 cm4gIkZvbyN4IgorICAgIGVuZAorCisgICAgZGVmIHkKKyAgICAgIHJldHVy biAiRm9vI3kiCisgICAgZW5kCisKKyAgICBkZWYgY2FsbF94CisgICAgICBy ZXR1cm4geAorICAgIGVuZAorICBlbmQKKworICBtb2R1bGUgRm9vRXh0Cisg ICAgcmVmaW5lIEZvbyBkbworICAgICAgZGVmIHgKKyAgICAgICAgcmV0dXJu ICJGb29FeHQjeCIKKyAgICAgIGVuZAorCisgICAgICBkZWYgeQorICAgICAg ICByZXR1cm4gIkZvb0V4dCN5ICIgKyBzdXBlcgorICAgICAgZW5kCisKKyAg ICAgIGRlZiB6CisgICAgICAgIHJldHVybiAiRm9vRXh0I3oiCisgICAgICBl bmQKKyAgICBlbmQKKyAgZW5kCisKKyAgbW9kdWxlIEZvb0V4dDIKKyAgICBy ZWZpbmUgRm9vIGRvCisgICAgICBkZWYgeAorICAgICAgICByZXR1cm4gIkZv b0V4dDIjeCIKKyAgICAgIGVuZAorCisgICAgICBkZWYgeQorICAgICAgICBy ZXR1cm4gIkZvb0V4dDIjeSAiICsgc3VwZXIKKyAgICAgIGVuZAorCisgICAg ICBkZWYgegorICAgICAgICByZXR1cm4gIkZvb0V4dDIjeiIKKyAgICAgIGVu ZAorICAgIGVuZAorICBlbmQKKworICBjbGFzcyBGb29TdWIgPCBGb28KKyAg ICBkZWYgeAorICAgICAgcmV0dXJuICJGb29TdWIjeCIKKyAgICBlbmQKKwor ICAgIGRlZiB5CisgICAgICByZXR1cm4gIkZvb1N1YiN5ICIgKyBzdXBlcgor ICAgIGVuZAorICBlbmQKKworICBjbGFzcyBGb29FeHRDbGllbnQKKyAgICB1 c2luZyBGb29FeHQKKworICAgIGRlZiBzZWxmLmludm9rZV94X29uKGZvbykK KyAgICAgIHJldHVybiBmb28ueAorICAgIGVuZAorCisgICAgZGVmIHNlbGYu aW52b2tlX3lfb24oZm9vKQorICAgICAgcmV0dXJuIGZvby55CisgICAgZW5k CisKKyAgICBkZWYgc2VsZi5pbnZva2Vfel9vbihmb28pCisgICAgICByZXR1 cm4gZm9vLnoKKyAgICBlbmQKKworICAgIGRlZiBzZWxmLmludm9rZV9jYWxs X3hfb24oZm9vKQorICAgICAgcmV0dXJuIGZvby5jYWxsX3gKKyAgICBlbmQK KyAgZW5kCisKKyAgY2xhc3MgRm9vRXh0Q2xpZW50MgorICAgIHVzaW5nIEZv b0V4dAorICAgIHVzaW5nIEZvb0V4dDIKKworICAgIGRlZiBzZWxmLmludm9r ZV95X29uKGZvbykKKyAgICAgIHJldHVybiBmb28ueQorICAgIGVuZAorICBl bmQKKworICBkZWYgdGVzdF9vdmVycmlkZQorICAgIGZvbyA9IEZvby5uZXcK KyAgICBhc3NlcnRfZXF1YWwoIkZvbyN4IiwgZm9vLngpCisgICAgYXNzZXJ0 X2VxdWFsKCJGb29FeHQjeCIsIEZvb0V4dENsaWVudC5pbnZva2VfeF9vbihm b28pKQorICAgIGFzc2VydF9lcXVhbCgiRm9vI3giLCBmb28ueCkKKyAgZW5k CisKKyAgZGVmIHRlc3Rfc3VwZXIKKyAgICBmb28gPSBGb28ubmV3CisgICAg YXNzZXJ0X2VxdWFsKCJGb28jeSIsIGZvby55KQorICAgIGFzc2VydF9lcXVh bCgiRm9vRXh0I3kgRm9vI3kiLCBGb29FeHRDbGllbnQuaW52b2tlX3lfb24o Zm9vKSkKKyAgICBhc3NlcnRfZXF1YWwoIkZvbyN5IiwgZm9vLnkpCisgIGVu ZAorCisgIGRlZiB0ZXN0X3N1cGVyX2NoYWluCisgICAgZm9vID0gRm9vLm5l dworICAgIGFzc2VydF9lcXVhbCgiRm9vI3kiLCBmb28ueSkKKyAgICBhc3Nl cnRfZXF1YWwoIkZvb0V4dDIjeSBGb29FeHQjeSBGb28jeSIsIEZvb0V4dENs aWVudDIuaW52b2tlX3lfb24oZm9vKSkKKyAgICBhc3NlcnRfZXF1YWwoIkZv byN5IiwgZm9vLnkpCisgIGVuZAorCisgIGRlZiB0ZXN0X25ld19tZXRob2QK KyAgICBmb28gPSBGb28ubmV3CisgICAgYXNzZXJ0X3JhaXNlKE5vTWV0aG9k RXJyb3IpIHsgZm9vLnogfQorICAgIGFzc2VydF9lcXVhbCgiRm9vRXh0I3oi LCBGb29FeHRDbGllbnQuaW52b2tlX3pfb24oZm9vKSkKKyAgICBhc3NlcnRf cmFpc2UoTm9NZXRob2RFcnJvcikgeyBmb28ueiB9CisgIGVuZAorCisgIGRl ZiB0ZXN0X25vX2xvY2FsX3JlYmluZGluZworICAgIGZvbyA9IEZvby5uZXcK KyAgICBhc3NlcnRfZXF1YWwoIkZvbyN4IiwgZm9vLmNhbGxfeCkKKyAgICBh c3NlcnRfZXF1YWwoIkZvbyN4IiwgRm9vRXh0Q2xpZW50Lmludm9rZV9jYWxs X3hfb24oZm9vKSkKKyAgICBhc3NlcnRfZXF1YWwoIkZvbyN4IiwgZm9vLmNh bGxfeCkKKyAgZW5kCisKKyAgZGVmIHRlc3Rfc3ViY2xhc3NfaXNfcHJpb3IK KyAgICBzdWIgPSBGb29TdWIubmV3CisgICAgYXNzZXJ0X2VxdWFsKCJGb29T dWIjeCIsIHN1Yi54KQorICAgIGFzc2VydF9lcXVhbCgiRm9vU3ViI3giLCBG b29FeHRDbGllbnQuaW52b2tlX3hfb24oc3ViKSkKKyAgICBhc3NlcnRfZXF1 YWwoIkZvb1N1YiN4Iiwgc3ViLngpCisgIGVuZAorCisgIGRlZiB0ZXN0X3N1 YmNsYXNzX2lzX3ByaW9yCisgICAgc3ViID0gRm9vU3ViLm5ldworICAgIGFz c2VydF9lcXVhbCgiRm9vU3ViI3giLCBzdWIueCkKKyAgICBhc3NlcnRfZXF1 YWwoIkZvb1N1YiN4IiwgRm9vRXh0Q2xpZW50Lmludm9rZV94X29uKHN1Yikp CisgICAgYXNzZXJ0X2VxdWFsKCJGb29TdWIjeCIsIHN1Yi54KQorICBlbmQK KworICBkZWYgdGVzdF9zdXBlcl9pbl9zdWJjbGFzcworICAgIHN1YiA9IEZv b1N1Yi5uZXcKKyAgICBhc3NlcnRfZXF1YWwoIkZvb1N1YiN5IEZvbyN5Iiwg c3ViLnkpCisgICAgIyBub3QgIkZvb1N1YiN5IEZvb0V4dCN5IEZvbyN5Igor ICAgIGFzc2VydF9lcXVhbCgiRm9vU3ViI3kgRm9vI3kiLCBGb29FeHRDbGll bnQuaW52b2tlX3lfb24oc3ViKSkKKyAgICBhc3NlcnRfZXF1YWwoIkZvb1N1 YiN5IEZvbyN5Iiwgc3ViLnkpCisgIGVuZAorCisgIGRlZiB0ZXN0X25ld19t ZXRob2Rfb25fc3ViY2xhc3MKKyAgICBzdWIgPSBGb29TdWIubmV3CisgICAg YXNzZXJ0X3JhaXNlKE5vTWV0aG9kRXJyb3IpIHsgc3ViLnogfQorICAgIGFz c2VydF9lcXVhbCgiRm9vRXh0I3oiLCBGb29FeHRDbGllbnQuaW52b2tlX3pf b24oc3ViKSkKKyAgICBhc3NlcnRfcmFpc2UoTm9NZXRob2RFcnJvcikgeyBz dWIueiB9CisgIGVuZAorCisgIGRlZiB0ZXN0X21vZHVsZV9ldmFsCisgICAg Zm9vID0gRm9vLm5ldworICAgIGFzc2VydF9lcXVhbCgiRm9vI3giLCBmb28u eCkKKyAgICBhc3NlcnRfZXF1YWwoIkZvb0V4dCN4IiwgRm9vRXh0Lm1vZHVs ZV9ldmFsIHsgZm9vLnggfSkKKyAgICBhc3NlcnRfZXF1YWwoIkZvbyN4Iiwg Zm9vLngpCisgIGVuZAorCisgIGRlZiB0ZXN0X2luc3RhbmNlX2V2YWwKKyAg ICBmb28gPSBGb28ubmV3CisgICAgZXh0X2NsaWVudCA9IEZvb0V4dENsaWVu dC5uZXcKKyAgICBhc3NlcnRfZXF1YWwoIkZvbyN4IiwgZm9vLngpCisgICAg YXNzZXJ0X2VxdWFsKCJGb29FeHQjeCIsIGV4dF9jbGllbnQuaW5zdGFuY2Vf ZXZhbCB7IGZvby54IH0pCisgICAgYXNzZXJ0X2VxdWFsKCJGb28jeCIsIGZv by54KQorICBlbmQKKworICBkZWYgdGVzdF9vdmVycmlkZV9idWlsdGluX21l dGhvZAorICAgIG0gPSBNb2R1bGUubmV3IHsKKyAgICAgIHJlZmluZSBGaXhu dW0gZG8KKyAgICAgICAgZGVmIC8ob3RoZXIpIHF1byhvdGhlcikgZW5kCisg ICAgICBlbmQKKyAgICB9CisgICAgYXNzZXJ0X2VxdWFsKDAsIDEgLyAyKQor ICAgIGFzc2VydF9lcXVhbChSYXRpb25hbCgxLCAyKSwgbS5tb2R1bGVfZXZh bCB7IDEgLyAyIH0pCisgICAgYXNzZXJ0X2VxdWFsKDAsIDEgLyAyKQorICBl bmQKKworICBkZWYgdGVzdF9yZXR1cm5fdmFsdWVfb2ZfcmVmaW5lCisgICAg bW9kID0gbmlsCisgICAgcmVzdWx0ID0gbmlsCisgICAgbSA9IE1vZHVsZS5u ZXcgeworICAgICAgcmVzdWx0ID0gcmVmaW5lKE9iamVjdCkgeworICAgICAg ICBtb2QgPSBzZWxmCisgICAgICB9CisgICAgfQorICAgIGFzc2VydF9lcXVh bCBtb2QsIHJlc3VsdAorICBlbmQKKworICBkZWYgdGVzdF9yZWZpbmVfc2Ft ZV9jbGFzc190d2ljZQorICAgIHJlc3VsdDEgPSBuaWwKKyAgICByZXN1bHQy ID0gbmlsCisgICAgcmVzdWx0MyA9IG5pbAorICAgIG0gPSBNb2R1bGUubmV3 IHsKKyAgICAgIHJlc3VsdDEgPSByZWZpbmUoRml4bnVtKSB7CisgICAgICAg IGRlZiBmb287IHJldHVybiAiZm9vIiBlbmQKKyAgICAgIH0KKyAgICAgIHJl c3VsdDIgPSByZWZpbmUoRml4bnVtKSB7CisgICAgICAgIGRlZiBiYXI7IHJl dHVybiAiYmFyIiBlbmQKKyAgICAgIH0KKyAgICAgIHJlc3VsdDMgPSByZWZp bmUoU3RyaW5nKSB7CisgICAgICAgIGRlZiBiYXo7IHJldHVybiAiYmF6IiBl bmQKKyAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0X2VxdWFsKCJmb28iLCBt Lm1vZHVsZV9ldmFsIHsgMS5mb28gfSkKKyAgICBhc3NlcnRfZXF1YWwoImJh ciIsIG0ubW9kdWxlX2V2YWwgeyAxLmJhciB9KQorICAgIGFzc2VydF9lcXVh bChyZXN1bHQxLCByZXN1bHQyKQorICAgIGFzc2VydF9ub3RfZXF1YWwocmVz dWx0MSwgcmVzdWx0MykKKyAgZW5kCisKKyAgZGVmIHRlc3RfcmVzcG9uZF90 bz8KKyAgICBtID0gTW9kdWxlLm5ldyB7CisgICAgICByZWZpbmUgRml4bnVt IGRvCisgICAgICAgIGRlZiBmb287ICJmb28iOyBlbmQKKyAgICAgIGVuZAor ICAgIH0KKyAgICBhc3NlcnRfZXF1YWwoZmFsc2UsIDEucmVzcG9uZF90bz8o OmZvbykpCisgICAgYXNzZXJ0X2VxdWFsKHRydWUsIG0ubW9kdWxlX2V2YWwg eyAxLnJlc3BvbmRfdG8/KDpmb28pIH0pCisgICAgYXNzZXJ0X2VxdWFsKGZh bHNlLCAxLnJlc3BvbmRfdG8/KDpmb28pKQorICBlbmQKKworICBkZWYgdGVz dF9idWlsdGluX21ldGhvZF9ub19sb2NhbF9yZWJpbmRpbmcKKyAgICBtID0g TW9kdWxlLm5ldyB7CisgICAgICByZWZpbmUgU3RyaW5nIGRvCisgICAgICAg IGRlZiA8PT4ob3RoZXIpIHJldHVybiAwIGVuZAorICAgICAgZW5kCisgICAg fQorICAgIGFzc2VydF9lcXVhbChmYWxzZSwgbS5tb2R1bGVfZXZhbCB7ICIx IiA+PSAiMiIgfSkKKworICAgIG0yID0gTW9kdWxlLm5ldyB7CisgICAgICBy ZWZpbmUgQXJyYXkgZG8KKyAgICAgICAgZGVmIGVhY2gKKyAgICAgICAgICBz dXBlciBkbyB8aXwKKyAgICAgICAgICAgIHlpZWxkIDIgKiBpCisgICAgICAg ICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgfQorICAgIGEg PSBbMSwgMiwgM10KKyAgICBhc3NlcnRfZXF1YWwoMSwgbTIubW9kdWxlX2V2 YWwgeyBhLm1pbiB9KQorICBlbmQKKworICBkZWYgdGVzdF9tb2R1bGVfaW5j bHVzaW9uCisgICAgbTEgPSBNb2R1bGUubmV3IHsKKyAgICAgIGRlZiBmb28K KyAgICAgICAgIm0xI2ZvbyIKKyAgICAgIGVuZAorCisgICAgICBkZWYgYmFy CisgICAgICAgICJtMSNiYXIiCisgICAgICBlbmQKKyAgICB9CisgICAgbTIg PSBNb2R1bGUubmV3IHsKKyAgICAgIGRlZiBiYXIKKyAgICAgICAgIm0yI2Jh ciIKKyAgICAgIGVuZAorCisgICAgICBkZWYgYmF6CisgICAgICAgICJtMiNi YXoiCisgICAgICBlbmQKKyAgICB9CisgICAgbTMgPSBNb2R1bGUubmV3IHsK KyAgICAgIGRlZiBiYXoKKyAgICAgICAgIm0zI2JheiIKKyAgICAgIGVuZAor ICAgIH0KKyAgICBpbmNsdWRlX3Byb2MgPSBQcm9jLm5ldyB7CisgICAgICBp bmNsdWRlIG0zLCBtMgorICAgIH0KKyAgICBtID0gTW9kdWxlLm5ldyB7Cisg ICAgICByZWZpbmUgU3RyaW5nIGRvCisgICAgICAgIGluY2x1ZGUgbTEKKyAg ICAgICAgbW9kdWxlX2V2YWwoJmluY2x1ZGVfcHJvYykKKworICAgICAgICBk ZWYgY2FsbF9mb28KKyAgICAgICAgICBmb28KKyAgICAgICAgZW5kCisKKyAg ICAgICAgZGVmIGNhbGxfYmFyCisgICAgICAgICAgYmFyCisgICAgICAgIGVu ZAorCisgICAgICAgIGRlZiBjYWxsX2JhegorICAgICAgICAgIGJhegorICAg ICAgICBlbmQKKyAgICAgIGVuZAorCisgICAgICBkZWYgc2VsZi5jYWxsX2Zv byhzKQorICAgICAgICBzLmZvbworICAgICAgZW5kCisKKyAgICAgIGRlZiBz ZWxmLmNhbGxfYmFyKHMpCisgICAgICAgIHMuYmFyCisgICAgICBlbmQKKwor ICAgICAgZGVmIHNlbGYuY2FsbF9iYXoocykKKyAgICAgICAgcy5iYXoKKyAg ICAgIGVuZAorICAgIH0KKyAgICBhc3NlcnRfZXF1YWwoIm0xI2ZvbyIsIG0u bW9kdWxlX2V2YWwgeyAiYWJjIi5mb28gfSkKKyAgICBhc3NlcnRfZXF1YWwo Im0yI2JhciIsIG0ubW9kdWxlX2V2YWwgeyAiYWJjIi5iYXIgfSkKKyAgICBh c3NlcnRfZXF1YWwoIm0zI2JheiIsIG0ubW9kdWxlX2V2YWwgeyAiYWJjIi5i YXogfSkKKyAgICBhc3NlcnRfZXF1YWwoIm0xI2ZvbyIsIG0ubW9kdWxlX2V2 YWwgeyAiYWJjIi5jYWxsX2ZvbyB9KQorICAgIGFzc2VydF9lcXVhbCgibTIj YmFyIiwgbS5tb2R1bGVfZXZhbCB7ICJhYmMiLmNhbGxfYmFyIH0pCisgICAg YXNzZXJ0X2VxdWFsKCJtMyNiYXoiLCBtLm1vZHVsZV9ldmFsIHsgImFiYyIu Y2FsbF9iYXogfSkKKyAgICBhc3NlcnRfZXF1YWwoIm0xI2ZvbyIsIG0uY2Fs bF9mb28oImFiYyIpKQorICAgIGFzc2VydF9lcXVhbCgibTIjYmFyIiwgbS5j YWxsX2JhcigiYWJjIikpCisgICAgYXNzZXJ0X2VxdWFsKCJtMyNiYXoiLCBt LmNhbGxfYmF6KCJhYmMiKSkKKyAgZW5kCitlbmQKKwpkaWZmIC0tZ2l0IGEv dm0uYyBiL3ZtLmMKaW5kZXggYjYxZDViZi4uYmY0NDVjOCAxMDA2NDQKLS0t IGEvdm0uYworKysgYi92bS5jCkBAIC04MTksNyArODE5LDggQEAgcmJfdm1f Y3JlZih2b2lkKQogewogICAgIHJiX3RocmVhZF90ICp0aCA9IEdFVF9USFJF QUQoKTsKICAgICByYl9jb250cm9sX2ZyYW1lX3QgKmNmcCA9IHJiX3ZtX2dl dF9ydWJ5X2xldmVsX25leHRfY2ZwKHRoLCB0aC0+Y2ZwKTsKLSAgICByZXR1 cm4gdm1fZ2V0X2NyZWYoY2ZwLT5pc2VxLCBjZnAtPmxmcCwgY2ZwLT5kZnAp OworICAgIGlmICghY2ZwKSByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gcmJf dm1fZ2V0X2NyZWYoY2ZwLT5pc2VxLCBjZnAtPmxmcCwgY2ZwLT5kZnApOwog fQogCiAjaWYgMApkaWZmIC0tZ2l0IGEvdm1fZXZhbC5jIGIvdm1fZXZhbC5j CmluZGV4IDJiY2E3ZGIuLjBhN2U3YWIgMTAwNjQ0Ci0tLSBhL3ZtX2V2YWwu YworKysgYi92bV9ldmFsLmMKQEAgLTM3Miw3ICszNzIsNyBAQCByYl9zZWFy Y2hfbWV0aG9kX2VudHJ5KFZBTFVFIHJlY3YsIElEIG1pZCwgVkFMVUUgKmRl ZmluZWRfY2xhc3NfcHRyKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJi X2lkMm5hbWUobWlkKSwgdHlwZSwgKHZvaWQgKilyZWN2LCBmbGFncywga2xh c3MpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByYl9tZXRob2Rf ZW50cnkoa2xhc3MsIG1pZCwgZGVmaW5lZF9jbGFzc19wdHIpOworICAgIHJl dHVybiByYl9tZXRob2RfZW50cnlfZ2V0X3dpdGhfb21vZChRbmlsLCBrbGFz cywgbWlkLCBkZWZpbmVkX2NsYXNzX3B0cik7CiB9CiAKIHN0YXRpYyBpbmxp bmUgaW50CkBAIC0xMjEzLDYgKzEyMTMsNyBAQCB5aWVsZF91bmRlcihWQUxV RSB1bmRlciwgVkFMVUUgc2VsZiwgVkFMVUUgdmFsdWVzKQogICAgIH0KICAg ICBjcmVmID0gdm1fY3JlZl9wdXNoKHRoLCB1bmRlciwgTk9FWF9QVUJMSUMs IGJsb2NrcHRyKTsKICAgICBjcmVmLT5mbGFncyB8PSBOT0RFX0ZMX0NSRUZf UFVTSEVEX0JZX0VWQUw7CisgICAgcmJfdm1fdXNpbmdfbW9kdWxlcyhjcmVm LCB1bmRlcik7CiAKICAgICBpZiAodmFsdWVzID09IFF1bmRlZikgewogCXJl dHVybiB2bV95aWVsZF93aXRoX2NyZWYodGgsIDEsICZzZWxmLCBjcmVmKTsK QEAgLTEyMzQsNiArMTIzNSw3IEBAIGV2YWxfdW5kZXIoVkFMVUUgdW5kZXIs IFZBTFVFIHNlbGYsIFZBTFVFIHNyYywgY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUpCiAgICAgZWxzZSB7CiAJU2FmZVN0cmluZ1ZhbHVlKHNyYyk7CiAg ICAgfQorICAgIHJiX3ZtX3VzaW5nX21vZHVsZXMoY3JlZiwgdW5kZXIpOwog CiAgICAgcmV0dXJuIGV2YWxfc3RyaW5nX3dpdGhfY3JlZihzZWxmLCBzcmMs IFFuaWwsIGNyZWYsIGZpbGUsIGxpbmUpOwogfQpkaWZmIC0tZ2l0IGEvdm1f aW5zbmhlbHBlci5jIGIvdm1faW5zbmhlbHBlci5jCmluZGV4IDU3N2Y3MmYu LjZiYjZmNWIgMTAwNjQ0Ci0tLSBhL3ZtX2luc25oZWxwZXIuYworKysgYi92 bV9pbnNuaGVscGVyLmMKQEAgLTEwOTEsMTMgKzEwOTEsMTMgQEAgdm1fZ2V0 X2NyZWYwKGNvbnN0IHJiX2lzZXFfdCAqaXNlcSwgY29uc3QgVkFMVUUgKmxm cCwgY29uc3QgVkFMVUUgKmRmcCkKICAgICB9CiB9CiAKLXN0YXRpYyBOT0RF ICoKLXZtX2dldF9jcmVmKGNvbnN0IHJiX2lzZXFfdCAqaXNlcSwgY29uc3Qg VkFMVUUgKmxmcCwgY29uc3QgVkFMVUUgKmRmcCkKK05PREUgKgorcmJfdm1f Z2V0X2NyZWYoY29uc3QgcmJfaXNlcV90ICppc2VxLCBjb25zdCBWQUxVRSAq bGZwLCBjb25zdCBWQUxVRSAqZGZwKQogewogICAgIE5PREUgKmNyZWYgPSB2 bV9nZXRfY3JlZjAoaXNlcSwgbGZwLCBkZnApOwogCiAgICAgaWYgKGNyZWYg PT0gMCkgewotCXJiX2J1Zygidm1fZ2V0X2NyZWY6IHVucmVhY2hhYmxlIik7 CisJcmJfYnVnKCJyYl92bV9nZXRfY3JlZjogdW5yZWFjaGFibGUiKTsKICAg ICB9CiAgICAgcmV0dXJuIGNyZWY7CiB9CkBAIC0xMTA2LDggKzExMDYsOCBA QCBzdGF0aWMgTk9ERSAqCiB2bV9jcmVmX3B1c2gocmJfdGhyZWFkX3QgKnRo LCBWQUxVRSBrbGFzcywgaW50IG5vZXgsIHJiX2Jsb2NrX3QgKmJsb2NrcHRy KQogewogICAgIHJiX2NvbnRyb2xfZnJhbWVfdCAqY2ZwID0gdm1fZ2V0X3J1 YnlfbGV2ZWxfY2FsbGVyX2NmcCh0aCwgdGgtPmNmcCk7Ci0gICAgTk9ERSAq Y3JlZiA9IE5FV19CTE9DSyhrbGFzcyk7Ci0gICAgY3JlZi0+bmRfZmlsZSA9 IDA7CisgICAgTk9ERSAqY3JlZiA9IE5FV19DUkVGKGtsYXNzKTsKKyAgICBj cmVmLT5uZF9vbW9kID0gUW5pbDsKICAgICBjcmVmLT5uZF92aXNpID0gbm9l eDsKIAogICAgIGlmIChibG9ja3B0cikgewpAQCAtMTExNiw2ICsxMTE2LDEx IEBAIHZtX2NyZWZfcHVzaChyYl90aHJlYWRfdCAqdGgsIFZBTFVFIGtsYXNz LCBpbnQgbm9leCwgcmJfYmxvY2tfdCAqYmxvY2twdHIpCiAgICAgZWxzZSBp ZiAoY2ZwKSB7CiAJY3JlZi0+bmRfbmV4dCA9IHZtX2dldF9jcmVmMChjZnAt PmlzZXEsIGNmcC0+bGZwLCBjZnAtPmRmcCk7CiAgICAgfQorICAgIC8qIFRP RE86IHdoeSBjcmVmLT5uZF9uZXh0IGlzIDE/ICovCisgICAgaWYgKGNyZWYt Pm5kX25leHQgJiYgY3JlZi0+bmRfbmV4dCAhPSAodm9pZCAqKSAxICYmCisJ IU5JTF9QKGNyZWYtPm5kX25leHQtPm5kX29tb2QpKSB7CisJQ09QWV9DUkVG X09NT0QoY3JlZiwgY3JlZi0+bmRfbmV4dCk7CisgICAgfQogCiAgICAgcmV0 dXJuIGNyZWY7CiB9CkBAIC0xMTIzLDcgKzExMjgsNyBAQCB2bV9jcmVmX3B1 c2gocmJfdGhyZWFkX3QgKnRoLCBWQUxVRSBrbGFzcywgaW50IG5vZXgsIHJi X2Jsb2NrX3QgKmJsb2NrcHRyKQogc3RhdGljIGlubGluZSBWQUxVRQogdm1f Z2V0X2NiYXNlKGNvbnN0IHJiX2lzZXFfdCAqaXNlcSwgY29uc3QgVkFMVUUg KmxmcCwgY29uc3QgVkFMVUUgKmRmcCkKIHsKLSAgICBOT0RFICpjcmVmID0g dm1fZ2V0X2NyZWYoaXNlcSwgbGZwLCBkZnApOworICAgIE5PREUgKmNyZWYg PSByYl92bV9nZXRfY3JlZihpc2VxLCBsZnAsIGRmcCk7CiAgICAgVkFMVUUg a2xhc3MgPSBRdW5kZWY7CiAKICAgICB3aGlsZSAoY3JlZikgewpAQCAtMTEz OSw3ICsxMTQ0LDcgQEAgdm1fZ2V0X2NiYXNlKGNvbnN0IHJiX2lzZXFfdCAq aXNlcSwgY29uc3QgVkFMVUUgKmxmcCwgY29uc3QgVkFMVUUgKmRmcCkKIHN0 YXRpYyBpbmxpbmUgVkFMVUUKIHZtX2dldF9jb25zdF9iYXNlKGNvbnN0IHJi X2lzZXFfdCAqaXNlcSwgY29uc3QgVkFMVUUgKmxmcCwgY29uc3QgVkFMVUUg KmRmcCkKIHsKLSAgICBOT0RFICpjcmVmID0gdm1fZ2V0X2NyZWYoaXNlcSwg bGZwLCBkZnApOworICAgIE5PREUgKmNyZWYgPSByYl92bV9nZXRfY3JlZihp c2VxLCBsZnAsIGRmcCk7CiAgICAgVkFMVUUga2xhc3MgPSBRdW5kZWY7CiAK ICAgICB3aGlsZSAoY3JlZikgewpAQCAtMTE2Nyw2ICsxMTcyLDIwIEBAIHZt X2NoZWNrX2lmX25hbWVzcGFjZShWQUxVRSBrbGFzcykKIH0KIAogc3RhdGlj IGlubGluZSBWQUxVRQordm1fZ2V0X2ljbGFzcyhyYl9jb250cm9sX2ZyYW1l X3QgKmNmcCwgVkFMVUUga2xhc3MpCit7CisgICAgaWYgKFRZUEUoa2xhc3Mp ID09IFRfTU9EVUxFICYmCisJRkxfVEVTVChrbGFzcywgUk1PRFVMRV9JU19P VkVSTEFZRUQpICYmCisJVFlQRShjZnAtPmtsYXNzKSA9PSBUX0lDTEFTUyAm JgorCVJCQVNJQyhjZnAtPmtsYXNzKS0+a2xhc3MgPT0ga2xhc3MpIHsKKwly ZXR1cm4gY2ZwLT5rbGFzczsKKyAgICB9CisgICAgZWxzZSB7CisJcmV0dXJu IGtsYXNzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBWQUxVRQogdm1f Z2V0X2V2X2NvbnN0KHJiX3RocmVhZF90ICp0aCwgY29uc3QgcmJfaXNlcV90 ICppc2VxLAogCQlWQUxVRSBvcmlnX2tsYXNzLCBJRCBpZCwgaW50IGlzX2Rl ZmluZWQpCiB7CkBAIC0xMTc0LDcgKzExOTMsNyBAQCB2bV9nZXRfZXZfY29u c3QocmJfdGhyZWFkX3QgKnRoLCBjb25zdCByYl9pc2VxX3QgKmlzZXEsCiAK ICAgICBpZiAob3JpZ19rbGFzcyA9PSBRbmlsKSB7CiAJLyogaW4gY3VycmVu dCBsZXhpY2FsIHNjb3BlICovCi0JY29uc3QgTk9ERSAqY3JlZiA9IHZtX2dl dF9jcmVmKGlzZXEsIHRoLT5jZnAtPmxmcCwgdGgtPmNmcC0+ZGZwKTsKKwlj b25zdCBOT0RFICpjcmVmID0gcmJfdm1fZ2V0X2NyZWYoaXNlcSwgdGgtPmNm cC0+bGZwLCB0aC0+Y2ZwLT5kZnApOwogCWNvbnN0IE5PREUgKnJvb3RfY3Jl ZiA9IE5VTEw7CiAJVkFMVUUga2xhc3MgPSBvcmlnX2tsYXNzOwogCkBAIC0x MjEzLDcgKzEyMzIsNyBAQCB2bV9nZXRfZXZfY29uc3QocmJfdGhyZWFkX3Qg KnRoLCBjb25zdCByYl9pc2VxX3QgKmlzZXEsCiAKIAkvKiBzZWFyY2ggc2Vs ZiAqLwogCWlmIChyb290X2NyZWYgJiYgIU5JTF9QKHJvb3RfY3JlZi0+bmRf Y2xzcykpIHsKLQkgICAga2xhc3MgPSByb290X2NyZWYtPm5kX2Nsc3M7CisJ ICAgIGtsYXNzID0gdm1fZ2V0X2ljbGFzcyh0aC0+Y2ZwLCByb290X2NyZWYt Pm5kX2Nsc3MpOwogCX0KIAllbHNlIHsKIAkgICAga2xhc3MgPSBDTEFTU19P Rih0aC0+Y2ZwLT5zZWxmKTsKQEAgLTEyMzgsNyArMTI1Nyw3IEBAIHZtX2dl dF9ldl9jb25zdChyYl90aHJlYWRfdCAqdGgsIGNvbnN0IHJiX2lzZXFfdCAq aXNlcSwKIH0KIAogc3RhdGljIGlubGluZSBWQUxVRQotdm1fZ2V0X2N2YXJf YmFzZShOT0RFICpjcmVmKQordm1fZ2V0X2N2YXJfYmFzZShOT0RFICpjcmVm LCByYl9jb250cm9sX2ZyYW1lX3QgKmNmcCkKIHsKICAgICBWQUxVRSBrbGFz czsKIApAQCAtMTI1Miw3ICsxMjcxLDcgQEAgdm1fZ2V0X2N2YXJfYmFzZShO T0RFICpjcmVmKQogCX0KICAgICB9CiAKLSAgICBrbGFzcyA9IGNyZWYtPm5k X2Nsc3M7CisgICAga2xhc3MgPSB2bV9nZXRfaWNsYXNzKGNmcCwgY3JlZi0+ bmRfY2xzcyk7CiAKICAgICBpZiAoTklMX1Aoa2xhc3MpKSB7CiAJcmJfcmFp c2UocmJfZVR5cGVFcnJvciwgIm5vIGNsYXNzIHZhcmlhYmxlcyBhdmFpbGFi bGUiKTsKQEAgLTE3MjcsMyArMTc0Niw0MyBAQCBvcHRfZXFfZnVuYyhWQUxV RSByZWN2LCBWQUxVRSBvYmosIElDIGljKQogICAgIHJldHVybiBRdW5kZWY7 CiB9CiAKK3ZvaWQgcmJfdXNpbmdfbW9kdWxlKE5PREUgKmNyZWYsIFZBTFVF IG1vZHVsZSk7CisKK3N0YXRpYyBpbnQKK3ZtX3VzaW5nX21vZHVsZV9pKFZB TFVFIG1vZHVsZSwgVkFMVUUgdmFsdWUsIFZBTFVFIGFyZykKK3sKKyAgICBO T0RFICpjcmVmID0gKE5PREUgKikgYXJnOworCisgICAgcmJfdXNpbmdfbW9k dWxlKGNyZWYsIG1vZHVsZSk7CisgICAgcmV0dXJuIFNUX0NPTlRJTlVFOwor fQorCitzdGF0aWMgdm9pZAorcmJfdm1fdXNpbmdfbW9kdWxlcyhOT0RFICpj cmVmLCBWQUxVRSBrbGFzcykKK3sKKyAgICBJRCBpZF91c2luZ19tb2R1bGVz OworICAgIFZBTFVFIHVzaW5nX21vZHVsZXM7CisKKyAgICBDT05TVF9JRChp ZF91c2luZ19tb2R1bGVzLCAiX191c2luZ19tb2R1bGVzX18iKTsKKyAgICB1 c2luZ19tb2R1bGVzID0gcmJfYXR0cl9nZXQoa2xhc3MsIGlkX3VzaW5nX21v ZHVsZXMpOworICAgIHN3aXRjaCAoVFlQRShrbGFzcykpIHsKKyAgICBjYXNl IFRfQ0xBU1M6CisJaWYgKE5JTF9QKHVzaW5nX21vZHVsZXMpKSB7CisJICAg IFZBTFVFIHN1cGVyID0gcmJfY2xhc3NfcmVhbChSQ0xBU1NfU1VQRVIoa2xh c3MpKTsKKwkgICAgdXNpbmdfbW9kdWxlcyA9IHJiX2F0dHJfZ2V0KHN1cGVy LCBpZF91c2luZ19tb2R1bGVzKTsKKwkgICAgaWYgKCFOSUxfUCh1c2luZ19t b2R1bGVzKSkgeworCQl1c2luZ19tb2R1bGVzID0gcmJfaGFzaF9kdXAodXNp bmdfbW9kdWxlcyk7CisJCXJiX2l2YXJfc2V0KGtsYXNzLCBpZF91c2luZ19t b2R1bGVzLCB1c2luZ19tb2R1bGVzKTsKKwkgICAgfQorCX0KKwlicmVhazsK KyAgICBjYXNlIFRfTU9EVUxFOgorCXJiX3VzaW5nX21vZHVsZShjcmVmLCBr bGFzcyk7CisJYnJlYWs7CisgICAgfQorICAgIGlmICghTklMX1AodXNpbmdf bW9kdWxlcykpIHsKKwlyYl9oYXNoX2ZvcmVhY2godXNpbmdfbW9kdWxlcywg dm1fdXNpbmdfbW9kdWxlX2ksCisJCSAgICAgICAJKFZBTFVFKSBjcmVmKTsK KyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3ZtX2luc25oZWxwZXIuaCBiL3Zt X2luc25oZWxwZXIuaAppbmRleCBiMTdiZGNkLi5hZDNmMTI5IDEwMDY0NAot LS0gYS92bV9pbnNuaGVscGVyLmgKKysrIGIvdm1faW5zbmhlbHBlci5oCkBA IC0xNDksOCArMTQ5LDE3IEBAIGV4dGVybiBWQUxVRSBydWJ5X3ZtX2NvbnN0 X21pc3NpbmdfY291bnQ7CiAvKiBkZWFsIHdpdGggY29udHJvbCBmbG93IDI6 IG1ldGhvZC9pdGVyYXRvciAgICAgICAgICAgICAgKi8KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogCisjZGVmaW5lIENPUFlfQ1JFRl9PTU9EKGMxLCBjMikgZG8geyAg XAorICBjMS0+bmRfb21vZCA9IGMyLT5uZF9vbW9kOyBcCisgIGlmICghTklM X1AoYzItPm5kX29tb2QpKSB7IFwKKyAgICAgIGMxLT5mbGFncyB8PSBOT0RF X0ZMX0NSRUZfT01PRF9TSEFSRUQ7IFwKKyAgICAgIGMyLT5mbGFncyB8PSBO T0RFX0ZMX0NSRUZfT01PRF9TSEFSRUQ7IFwKKyAgfSBcCit9IHdoaWxlICgw KQorCiAjZGVmaW5lIENPUFlfQ1JFRihjMSwgYzIpIGRvIHsgIFwKICAgTk9E RSAqX190bXBfYzIgPSAoYzIpOyBcCisgIENPUFlfQ1JFRl9PTU9EKGMxLCBf X3RtcF9jMik7IFwKICAgYzEtPm5kX2Nsc3MgPSBfX3RtcF9jMi0+bmRfY2xz czsgXAogICBjMS0+bmRfdmlzaSA9IF9fdG1wX2MyLT5uZF92aXNpO1wKICAg YzEtPm5kX25leHQgPSBfX3RtcF9jMi0+bmRfbmV4dDsgXApkaWZmIC0tZ2l0 IGEvdm1fbWV0aG9kLmMgYi92bV9tZXRob2QuYwppbmRleCBmMmFmYTMwLi44 MTVmZDQzIDEwMDY0NAotLS0gYS92bV9tZXRob2QuYworKysgYi92bV9tZXRo b2QuYwpAQCAtNCw3ICs0LDcgQEAKIAogI2RlZmluZSBDQUNIRV9TSVpFIDB4 ODAwCiAjZGVmaW5lIENBQ0hFX01BU0sgMHg3ZmYKLSNkZWZpbmUgRVhQUjEo YyxtKSAoKCgoYyk+PjMpXihtKSkmQ0FDSEVfTUFTSykKKyNkZWZpbmUgRVhQ UjEoYyxvLG0pICgoKChjKT4+MyleKChvKT4+MyleKG0pKSZDQUNIRV9NQVNL KQogCiBzdGF0aWMgdm9pZCByYl92bV9jaGVja19yZWRlZmluaXRpb25fb3B0 X21ldGhvZChjb25zdCByYl9tZXRob2RfZW50cnlfdCAqbWUpOwogCkBAIC0x NSw2ICsxNSw3IEBAIHN0YXRpYyBJRCBhZGRlZCwgc2luZ2xldG9uX2FkZGVk LCBhdHRhY2hlZDsKIHN0cnVjdCBjYWNoZV9lbnRyeSB7CQkvKiBtZXRob2Qg aGFzaCB0YWJsZS4gKi8KICAgICBJRCBtaWQ7CQkJLyogbWV0aG9kJ3MgaWQg Ki8KICAgICBWQUxVRSBrbGFzczsJCS8qIHJlY2VpdmVyJ3MgY2xhc3MgKi8K KyAgICBWQUxVRSBvbW9kOwkJCS8qIG92ZXJsYXkgbW9kdWxlcyAqLwogICAg IHJiX21ldGhvZF9lbnRyeV90ICptZTsKICAgICBWQUxVRSBkZWZpbmVkX2Ns YXNzOwogfTsKQEAgLTM5MywxNSArMzk0LDI1IEBAIHJiX2dldF9hbGxvY19m dW5jKFZBTFVFIGtsYXNzKQogfQogCiBzdGF0aWMgcmJfbWV0aG9kX2VudHJ5 X3QqCi1zZWFyY2hfbWV0aG9kKFZBTFVFIGtsYXNzLCBJRCBpZCwgVkFMVUUg KmRlZmluZWRfY2xhc3NfcHRyKQorc2VhcmNoX21ldGhvZChWQUxVRSBrbGFz cywgSUQgaWQsIFZBTFVFIG9tb2QsIFZBTFVFICpkZWZpbmVkX2NsYXNzX3B0 cikKIHsKICAgICBzdF9kYXRhX3QgYm9keTsKKyAgICBWQUxVRSBpY2xhc3Ms IHNraXBwZWRfY2xhc3MgPSBRbmlsOworCiAgICAgaWYgKCFrbGFzcykgewog CXJldHVybiAwOwogICAgIH0KIAorICAgIGlmICghTklMX1Aob21vZCkgJiYg IU5JTF9QKGljbGFzcyA9IHJiX2hhc2hfbG9va3VwKG9tb2QsIGtsYXNzKSkp IHsKKwlrbGFzcyA9IGljbGFzczsKKyAgICB9CiAgICAgd2hpbGUgKCFzdF9s b29rdXAoUkNMQVNTX01fVEJMKGtsYXNzKSwgaWQsICZib2R5KSkgewogCWts YXNzID0gUkNMQVNTX1NVUEVSKGtsYXNzKTsKKwlpZiAoIU5JTF9QKG9tb2Qp ICYmIGtsYXNzICE9IHNraXBwZWRfY2xhc3MgJiYKKwkgICAgIU5JTF9QKGlj bGFzcyA9IHJiX2hhc2hfbG9va3VwKG9tb2QsIGtsYXNzKSkpIHsKKwkgICAg c2tpcHBlZF9jbGFzcyA9IGtsYXNzOworCSAgICBrbGFzcyA9IGljbGFzczsK Kwl9CiAJaWYgKCFrbGFzcykgewogCSAgICByZXR1cm4gMDsKIAl9CkBAIC00 MTksMTcgKzQzMCwxOCBAQCBzZWFyY2hfbWV0aG9kKFZBTFVFIGtsYXNzLCBJ RCBpZCwgVkFMVUUgKmRlZmluZWRfY2xhc3NfcHRyKQogICogcmJfbWV0aG9k X2VudHJ5KCkgc2ltcGx5LgogICovCiByYl9tZXRob2RfZW50cnlfdCAqCi1y Yl9tZXRob2RfZW50cnlfZ2V0X3dpdGhvdXRfY2FjaGUoVkFMVUUga2xhc3Ms IElEIGlkLCBWQUxVRSAqZGVmaW5lZF9jbGFzc19wdHIpCityYl9tZXRob2Rf ZW50cnlfZ2V0X3dpdGhvdXRfY2FjaGUoVkFMVUUga2xhc3MsIFZBTFVFIG9t b2QsIElEIGlkLCBWQUxVRSAqZGVmaW5lZF9jbGFzc19wdHIpCiB7Ci0gICAg VkFMVUUgZGVmaW5lZF9jbGFzczsKKyAgICBWQUxVRSBpY2xhc3MsIGRlZmlu ZWRfY2xhc3M7CiAgICAgcmJfbWV0aG9kX2VudHJ5X3QgKm1lOwogCi0gICAg bWUgPSBzZWFyY2hfbWV0aG9kKGtsYXNzLCBpZCwgJmRlZmluZWRfY2xhc3Mp OworICAgIG1lID0gc2VhcmNoX21ldGhvZChrbGFzcywgaWQsIG9tb2QsICZk ZWZpbmVkX2NsYXNzKTsKIAogICAgIGlmIChydWJ5X3J1bm5pbmcpIHsKIAlz dHJ1Y3QgY2FjaGVfZW50cnkgKmVudDsKLQllbnQgPSBjYWNoZSArIEVYUFIx KGtsYXNzLCBpZCk7CisJZW50ID0gY2FjaGUgKyBFWFBSMShrbGFzcywgb21v ZCwgaWQpOwogCWVudC0+a2xhc3MgPSBrbGFzczsKKwllbnQtPm9tb2QgPSBv bW9kOwogCWVudC0+ZGVmaW5lZF9jbGFzcyA9IGRlZmluZWRfY2xhc3M7CiAK IAlpZiAoVU5ERUZJTkVEX01FVEhPRF9FTlRSWV9QKG1lKSkgewpAQCAtNDQ5 LDE4ICs0NjEsMzMgQEAgcmJfbWV0aG9kX2VudHJ5X2dldF93aXRob3V0X2Nh Y2hlKFZBTFVFIGtsYXNzLCBJRCBpZCwgVkFMVUUgKmRlZmluZWRfY2xhc3Nf cHRyKQogfQogCiByYl9tZXRob2RfZW50cnlfdCAqCi1yYl9tZXRob2RfZW50 cnkoVkFMVUUga2xhc3MsIElEIGlkLCBWQUxVRSAqZGVmaW5lZF9jbGFzc19w dHIpCityYl9tZXRob2RfZW50cnlfZ2V0X3dpdGhfb21vZChWQUxVRSBvbW9k LCBWQUxVRSBrbGFzcywgSUQgaWQsCisJCQkgICAgICBWQUxVRSAqZGVmaW5l ZF9jbGFzc19wdHIpCiB7CiAgICAgc3RydWN0IGNhY2hlX2VudHJ5ICplbnQ7 CiAKLSAgICBlbnQgPSBjYWNoZSArIEVYUFIxKGtsYXNzLCBpZCk7Ci0gICAg aWYgKGVudC0+bWlkID09IGlkICYmIGVudC0+a2xhc3MgPT0ga2xhc3MpIHsK KyAgICBlbnQgPSBjYWNoZSArIEVYUFIxKGtsYXNzLCBvbW9kLCBpZCk7Cisg ICAgaWYgKGVudC0+bWlkID09IGlkICYmIGVudC0+a2xhc3MgPT0ga2xhc3Mg JiYgZW50LT5vbW9kID09IG9tb2QpIHsKIAlpZiAoZGVmaW5lZF9jbGFzc19w dHIpCiAJICAgICpkZWZpbmVkX2NsYXNzX3B0ciA9IGVudC0+ZGVmaW5lZF9j bGFzczsKIAlyZXR1cm4gZW50LT5tZTsKICAgICB9CiAKLSAgICByZXR1cm4g cmJfbWV0aG9kX2VudHJ5X2dldF93aXRob3V0X2NhY2hlKGtsYXNzLCBpZCwg ZGVmaW5lZF9jbGFzc19wdHIpOworICAgIHJldHVybiByYl9tZXRob2RfZW50 cnlfZ2V0X3dpdGhvdXRfY2FjaGUoa2xhc3MsIG9tb2QsIGlkLAorCQkJCQkg ICAgIGRlZmluZWRfY2xhc3NfcHRyKTsKK30KKworcmJfbWV0aG9kX2VudHJ5 X3QgKgorcmJfbWV0aG9kX2VudHJ5KFZBTFVFIGtsYXNzLCBJRCBpZCwgVkFM VUUgKmRlZmluZWRfY2xhc3NfcHRyKQoreworICAgIHN0cnVjdCBjYWNoZV9l bnRyeSAqZW50OworICAgIE5PREUgKmNyZWYgPSByYl92bV9jcmVmKCk7Cisg ICAgVkFMVUUgb21vZCA9IFFuaWw7CisKKyAgICBpZiAoY3JlZiAmJiAhTklM X1AoY3JlZi0+bmRfb21vZCkpIHsKKwlvbW9kID0gY3JlZi0+bmRfb21vZDsK KyAgICB9CisgICAgcmV0dXJuIHJiX21ldGhvZF9lbnRyeV9nZXRfd2l0aF9v bW9kKG9tb2QsIGtsYXNzLCBpZCwgZGVmaW5lZF9jbGFzc19wdHIpOwogfQog CiBzdGF0aWMgdm9pZApAQCAtNTUyLDkgKzU3OSw5IEBAIHJiX2V4cG9ydF9t ZXRob2QoVkFMVUUga2xhc3MsIElEIG5hbWUsIHJiX21ldGhvZF9mbGFnX3Qg bm9leCkKIAlyYl9zZWN1cmUoNCk7CiAgICAgfQogCi0gICAgbWUgPSBzZWFy Y2hfbWV0aG9kKGtsYXNzLCBuYW1lLCAmZGVmaW5lZF9jbGFzcyk7CisgICAg bWUgPSBzZWFyY2hfbWV0aG9kKGtsYXNzLCBuYW1lLCBRbmlsLCAmZGVmaW5l ZF9jbGFzcyk7CiAgICAgaWYgKCFtZSAmJiBUWVBFKGtsYXNzKSA9PSBUX01P RFVMRSkgewotCW1lID0gc2VhcmNoX21ldGhvZChyYl9jT2JqZWN0LCBuYW1l LCAmZGVmaW5lZF9jbGFzcyk7CisJbWUgPSBzZWFyY2hfbWV0aG9kKHJiX2NP YmplY3QsIG5hbWUsIFFuaWwsICZkZWZpbmVkX2NsYXNzKTsKICAgICB9CiAK ICAgICBpZiAoVU5ERUZJTkVEX01FVEhPRF9FTlRSWV9QKG1lKSkgewpAQCAt NjQwLDYgKzY2Nyw4IEBAIHZvaWQKIHJiX3VuZGVmKFZBTFVFIGtsYXNzLCBJ RCBpZCkKIHsKICAgICByYl9tZXRob2RfZW50cnlfdCAqbWU7CisgICAgTk9E RSAqY3JlZiA9IHJiX3ZtX2NyZWYoKTsKKyAgICBWQUxVRSBvbW9kID0gUW5p bDsKIAogICAgIGlmIChOSUxfUChrbGFzcykpIHsKIAlyYl9yYWlzZShyYl9l VHlwZUVycm9yLCAibm8gY2xhc3MgdG8gdW5kZWYgbWV0aG9kIik7CkBAIC02 NTUsNyArNjg0LDEwIEBAIHJiX3VuZGVmKFZBTFVFIGtsYXNzLCBJRCBpZCkK IAlyYl93YXJuKCJ1bmRlZmluaW5nIGAlcycgbWF5IGNhdXNlIHNlcmlvdXMg cHJvYmxlbXMiLCByYl9pZDJuYW1lKGlkKSk7CiAgICAgfQogCi0gICAgbWUg PSBzZWFyY2hfbWV0aG9kKGtsYXNzLCBpZCwgMCk7CisgICAgaWYgKGNyZWYg JiYgIU5JTF9QKGNyZWYtPm5kX29tb2QpKSB7CisJb21vZCA9IGNyZWYtPm5k X29tb2Q7CisgICAgfQorICAgIG1lID0gc2VhcmNoX21ldGhvZChrbGFzcywg aWQsIG9tb2QsIDApOwogCiAgICAgaWYgKFVOREVGSU5FRF9NRVRIT0RfRU5U UllfUChtZSkpIHsKIAljb25zdCBjaGFyICpzMCA9ICIgY2xhc3MiOwpAQCAt Njc4LDYgKzcxMCwxMSBAQCByYl91bmRlZihWQUxVRSBrbGFzcywgSUQgaWQp CiAJCSAgICAgIHJiX2lkMm5hbWUoaWQpLCBzMCwgcmJfY2xhc3MybmFtZShj KSk7CiAgICAgfQogCisgICAgaWYgKCFSVEVTVChyYl9jbGFzc19pbmhlcml0 ZWRfcChrbGFzcywgbWUtPmtsYXNzKSkpIHsKKwlWQUxVRSBtb2QgPSByYl9t b2R1bGVfbmV3KCk7CisJcmJfb3ZlcmxheV9tb2R1bGUoY3JlZiwga2xhc3Ms IG1vZCk7CisJa2xhc3MgPSBtb2Q7CisgICAgfQogICAgIHJiX2FkZF9tZXRo b2Qoa2xhc3MsIGlkLCBWTV9NRVRIT0RfVFlQRV9VTkRFRiwgMCwgTk9FWF9Q VUJMSUMpOwogCiAgICAgQ0FMTF9NRVRIT0RfSE9PSyhrbGFzcywgdW5kZWZp bmVkLCBpZCk7CkBAIC05MzksMTEgKzk3NiwxMSBAQCByYl9hbGlhcyhWQUxV RSBrbGFzcywgSUQgbmFtZSwgSUQgZGVmKQogICAgIH0KIAogICBhZ2FpbjoK LSAgICBvcmlnX21lID0gc2VhcmNoX21ldGhvZChrbGFzcywgZGVmLCAwKTsK KyAgICBvcmlnX21lID0gc2VhcmNoX21ldGhvZChrbGFzcywgZGVmLCBRbmls LCAwKTsKIAogICAgIGlmIChVTkRFRklORURfTUVUSE9EX0VOVFJZX1Aob3Jp Z19tZSkpIHsKIAlpZiAoKFRZUEUoa2xhc3MpICE9IFRfTU9EVUxFKSB8fAot CSAgICAob3JpZ19tZSA9IHNlYXJjaF9tZXRob2QocmJfY09iamVjdCwgZGVm LCAwKSwKKwkgICAgKG9yaWdfbWUgPSBzZWFyY2hfbWV0aG9kKHJiX2NPYmpl Y3QsIGRlZiwgUW5pbCwgMCksCiAJCQkJICAgICBVTkRFRklORURfTUVUSE9E X0VOVFJZX1Aob3JpZ19tZSkpKSB7CiAJICAgIHJiX3ByaW50X3VuZGVmKGts YXNzLCBkZWYsIDApOwogCX0KQEAgLTEyMDUsOSArMTI0Miw5IEBAIHJiX21v ZF9tb2RmdW5jKGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgbW9kdWxl KQogCiAJaWQgPSByYl90b19pZChhcmd2W2ldKTsKIAlmb3IgKDs7KSB7Ci0J ICAgIG1lID0gc2VhcmNoX21ldGhvZChtLCBpZCwgMCk7CisJICAgIG1lID0g c2VhcmNoX21ldGhvZChtLCBpZCwgUW5pbCwgMCk7CiAJICAgIGlmIChtZSA9 PSAwKSB7Ci0JCW1lID0gc2VhcmNoX21ldGhvZChyYl9jT2JqZWN0LCBpZCwg MCk7CisJCW1lID0gc2VhcmNoX21ldGhvZChyYl9jT2JqZWN0LCBpZCwgUW5p bCwgMCk7CiAJICAgIH0KIAkgICAgaWYgKFVOREVGSU5FRF9NRVRIT0RfRU5U UllfUChtZSkpIHsKIAkJcmJfcHJpbnRfdW5kZWYobW9kdWxlLCBpZCwgMCk7 CkBAIC0xMzEzLDYgKzEzNTAsMjAgQEAgb2JqX3Jlc3BvbmRfdG9fbWlzc2lu ZyhWQUxVRSBvYmosIFZBTFVFIHByaXYpCiB9CiAKIHZvaWQKK3JiX3JlZGVm aW5lX29wdF9tZXRob2QoVkFMVUUga2xhc3MsIElEIG1pZCkKK3sKKyAgICBz dF9kYXRhX3Qga2V5LCBkYXRhOworICAgIHJiX21ldGhvZF9lbnRyeV90ICpt ZSA9IDA7CisKKyAgICBpZiAoIXN0X2xvb2t1cChSQ0xBU1NfTV9UQkwoa2xh c3MpLCBtaWQsICZkYXRhKSB8fAorCSEobWUgPSAocmJfbWV0aG9kX2VudHJ5 X3QgKilkYXRhKSB8fAorCSghbWUtPmRlZiB8fCBtZS0+ZGVmLT50eXBlID09 IFZNX01FVEhPRF9UWVBFX1VOREVGKSkgeworCXJldHVybjsKKyAgICB9Cisg ICAgcmJfdm1fY2hlY2tfcmVkZWZpbml0aW9uX29wdF9tZXRob2QobWUpOwor fQorCit2b2lkCiBJbml0X2V2YWxfbWV0aG9kKHZvaWQpCiB7CiAjdW5kZWYg cmJfaW50ZXJuCg== --mimepart_4cf08b7d358b4_36e61376f918145ce Content-Type: text/x-patch; name=nested_methods-r29944-20101127.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=nested_methods-r29944-20101127.diff ZGlmZiAtLWdpdCBhL2Jvb3RzdHJhcHRlc3QvdGVzdF9tZXRob2QucmIgYi9i b290c3RyYXB0ZXN0L3Rlc3RfbWV0aG9kLnJiCmluZGV4IDhkMGRiNmUuLmM2 YzNiMDkgMTAwNjQ0Ci0tLSBhL2Jvb3RzdHJhcHRlc3QvdGVzdF9tZXRob2Qu cmIKKysrIGIvYm9vdHN0cmFwdGVzdC90ZXN0X21ldGhvZC5yYgpAQCAtMjg3 LDE2ICsyODcsMTcgQEAgYXNzZXJ0X2VxdWFsICcxJywgICAgICAgJXEoIGNs YXNzIEM7IGRlZiBtKCkgMSBlbmQgZW5kCiBhc3NlcnRfZXF1YWwgJzEnLCAg ICAgICAlcSggY2xhc3MgQwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmIG0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm IG1tKCkgMSBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEMubmV3Lm0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDLm5ldy5tbSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy5u ZXcubSApCiBhc3NlcnRfZXF1YWwgJzEnLCAgICAgICAlcSggY2xhc3MgQwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIG0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVmIG1tKCkgMSBlbmQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl X2V2YWwgIkMubmV3Lm07IEMubmV3Lm1tIiApCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFuY2VfZXZhbCAiQy5uZXcubSIgKQogCiAjIG1l dGhvZF9taXNzaW5nCiBhc3NlcnRfZXF1YWwgJzptJywgICAgICAlcSggY2xh c3MgQwpkaWZmIC0tZ2l0IGEvY29tcGlsZS5jIGIvY29tcGlsZS5jCmluZGV4 IGI5NzQ5ZjQuLjg4NzVlNTcgMTAwNjQ0Ci0tLSBhL2NvbXBpbGUuYworKysg Yi9jb21waWxlLmMKQEAgLTQ1NzUsNyArNDU3NSw5IEBAIGlzZXFfY29tcGls ZV9lYWNoKHJiX2lzZXFfdCAqaXNlcSwgTElOS19BTkNIT1IgKnJldCwgTk9E RSAqIG5vZGUsIGludCBwb3BlZCkKIAlBRERfSU5TTjEocmV0LCBuZF9saW5l KG5vZGUpLCBwdXRzcGVjaWFsb2JqZWN0LCBJTlQyRklYKFZNX1NQRUNJQUxf T0JKRUNUX0NCQVNFKSk7CiAJQUREX0lOU04xKHJldCwgbmRfbGluZShub2Rl KSwgcHV0b2JqZWN0LCBJRDJTWU0obm9kZS0+bmRfbWlkKSk7CiAJQUREX0lO U04xKHJldCwgbmRfbGluZShub2RlKSwgcHV0aXNlcSwgaXNlcXZhbCk7Ci0J QUREX1NFTkQgKHJldCwgbmRfbGluZShub2RlKSwgSUQyU1lNKGlkX2NvcmVf ZGVmaW5lX21ldGhvZCksIElOVDJGSVgoMykpOworCUFERF9JTlNOMShyZXQs IG5kX2xpbmUobm9kZSksIHB1dG9iamVjdCwKKwkJICBub2RlLT5mbGFncyAm IE5PREVfRkxfTkVTVEVEX0RFRiA/IFF0cnVlIDogUWZhbHNlKTsKKwlBRERf U0VORCAocmV0LCBuZF9saW5lKG5vZGUpLCBJRDJTWU0oaWRfY29yZV9kZWZp bmVfbWV0aG9kKSwgSU5UMkZJWCg0KSk7CiAKIAlpZiAocG9wZWQpIHsKIAkg ICAgQUREX0lOU04ocmV0LCBuZF9saW5lKG5vZGUpLCBwb3ApOwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9ydWJ5L3J1YnkuaCBiL2luY2x1ZGUvcnVieS9ydWJ5 LmgKaW5kZXggMWQyNTQ2YS4uNGQzOWYzNyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9ydWJ5L3J1YnkuaAorKysgYi9pbmNsdWRlL3J1YnkvcnVieS5oCkBAIC02 MzAsNiArNjMwLDcgQEAgc3RydWN0IFJDbGFzcyB7CiAjZGVmaW5lIFJNT0RV TEVfTV9UQkwobSkgUkNMQVNTX01fVEJMKG0pCiAjZGVmaW5lIFJNT0RVTEVf U1VQRVIobSkgUkNMQVNTX1NVUEVSKG0pCiAjZGVmaW5lIFJNT0RVTEVfSVNf T1ZFUkxBWUVEIEZMX1VTRVIyCisjZGVmaW5lIFJNT0RVTEVfSEFTX05FU1RF RF9NRVRIT0RTIEZMX1VTRVIzCiAKIHN0cnVjdCBSRmxvYXQgewogICAgIHN0 cnVjdCBSQmFzaWMgYmFzaWM7CmRpZmYgLS1naXQgYS9ub2RlLmggYi9ub2Rl LmgKaW5kZXggYjc2ZTE0MS4uMDJlMWZiNSAxMDA2NDQKLS0tIGEvbm9kZS5o CisrKyBiL25vZGUuaApAQCAtMjY5LDYgKzI2OSw3IEBAIHR5cGVkZWYgc3Ry dWN0IFJOb2RlIHsKICNkZWZpbmUgTk9ERV9GTF9ORVdMSU5FICgoKFZBTFVF KTEpPDw3KQogI2RlZmluZSBOT0RFX0ZMX0NSRUZfUFVTSEVEX0JZX0VWQUwg Tk9ERV9GTF9ORVdMSU5FCiAjZGVmaW5lIE5PREVfRkxfQ1JFRl9PTU9EX1NI QVJFRCAoKChWQUxVRSkxKTw8NikKKyNkZWZpbmUgTk9ERV9GTF9ORVNURURf REVGIE5PREVfRkxfQ1JFRl9PTU9EX1NIQVJFRAogCiAjZGVmaW5lIE5PREVf VFlQRVNISUZUIDgKICNkZWZpbmUgTk9ERV9UWVBFTUFTSyAgKCgoVkFMVUUp MHg3Zik8PE5PREVfVFlQRVNISUZUKQpkaWZmIC0tZ2l0IGEvcGFyc2UueSBi L3BhcnNlLnkKaW5kZXggMTNlMThmMi4uNjdjYTFmMSAxMDA2NDQKLS0tIGEv cGFyc2UueQorKysgYi9wYXJzZS55CkBAIC0yOTY3LDYgKzI5NjcsOCBAQCBw cmltYXJ5CQk6IGxpdGVyYWwKIAkJCXJlZHVjZV9ub2RlcygmYm9keSk7CiAJ CQkkJCA9IE5FV19ERUZOKCQyLCAkNCwgYm9keSwgTk9FWF9QUklWQVRFKTsK IAkJCW5kX3NldF9saW5lKCQkLCAkPG51bT4xKTsKKwkJCWlmIChpbl9kZWYg PiAxIHx8IGluX3NpbmdsZSA+IDApCisJCQkgICAgJCQtPmZsYWdzIHw9IE5P REVfRkxfTkVTVEVEX0RFRjsKIAkJICAgIC8qJQogCQkJJCQgPSBkaXNwYXRj aDMoZGVmLCAkMiwgJDQsICQ1KTsKIAkJICAgICUqLwpkaWZmIC0tZ2l0IGEv dGVzdC9yZG9jL3Rlc3RfcmRvY190ZXh0LnJiIGIvdGVzdC9yZG9jL3Rlc3Rf cmRvY190ZXh0LnJiCmluZGV4IDdlMGYyY2YuLjNiNGI3OGUgMTAwNjQ0Ci0t LSBhL3Rlc3QvcmRvYy90ZXN0X3Jkb2NfdGV4dC5yYgorKysgYi90ZXN0L3Jk b2MvdGVzdF9yZG9jX3RleHQucmIKQEAgLTYyLDggKzYyLDggQEAgVGhlIGNv bW1lbnRzIGFzc29jaWF0ZWQgd2l0aAogICAgIGFzc2VydF9lcXVhbCBleHBl Y3RlZCwgZmx1c2hfbGVmdCh0ZXh0KQogICBlbmQKIAorICBkZWYgZm9ybWF0 dGVyKCkgUkRvYzo6TWFya3VwOjpUb0h0bWwubmV3IGVuZAogICBkZWYgdGVz dF9tYXJrdXAKLSAgICBkZWYgZm9ybWF0dGVyKCkgUkRvYzo6TWFya3VwOjpU b0h0bWwubmV3IGVuZAogCiAgICAgYXNzZXJ0X2VxdWFsICI8cD5cbmhpXG48 L3A+XG4iLCBtYXJrdXAoJ2hpJykKICAgZW5kCmRpZmYgLS1naXQgYS90ZXN0 L3J1YnkvdGVzdF9uZXN0ZWRfbWV0aG9kLnJiIGIvdGVzdC9ydWJ5L3Rlc3Rf bmVzdGVkX21ldGhvZC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yYjIyZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9ydWJ5 L3Rlc3RfbmVzdGVkX21ldGhvZC5yYgpAQCAtMCwwICsxLDI5IEBACityZXF1 aXJlICd0ZXN0L3VuaXQnCisKK2NsYXNzIFRlc3ROZXN0ZWRNZXRob2QgPCBU ZXN0OjpVbml0OjpUZXN0Q2FzZQorICBkZWYgY2FsbF9uZXN0ZWRfbWV0aG9k CisgICAgZGVmIGZvbworICAgICAgcmV0dXJuICJmb28iCisgICAgZW5kCisK KyAgICByZXR1cm4gZm9vCisgIGVuZAorCisgIGRlZiB0ZXN0X25lc3RlZF9t ZXRob2QKKyAgICBhc3NlcnRfZXF1YWwoImZvbyIsIGNhbGxfbmVzdGVkX21l dGhvZCkKKyAgICBhc3NlcnRfcmFpc2UoTm9NZXRob2RFcnJvcikgeyBmb28o KSB9CisgIGVuZAorCisgIGRlZiB0ZXN0X2RvdWJseV9uZXN0ZWRfbWV0aG9k CisgICAgZGVmIGNhbGxfZG91Ymx5X25lc3RlZF9tZXRob2QKKyAgICAgIGRl ZiBmb28KKyAgICAgICAgcmV0dXJuICJmb28iCisgICAgICBlbmQKKworICAg ICAgcmV0dXJuIGZvbworICAgIGVuZAorCisgICAgYXNzZXJ0X2VxdWFsKCJm b28iLCBjYWxsX2RvdWJseV9uZXN0ZWRfbWV0aG9kKQorICAgIGFzc2VydF9y YWlzZShOb01ldGhvZEVycm9yKSB7IGZvbygpIH0KKyAgZW5kCitlbmQKZGlm ZiAtLWdpdCBhL3ZtLmMgYi92bS5jCmluZGV4IGJmNDQ1YzguLmI3NzMzMGIg MTAwNjQ0Ci0tLSBhL3ZtLmMKKysrIGIvdm0uYwpAQCAtMTgyMiwxNCArMTgy MiwzNyBAQCByYl90aHJlYWRfYWxsb2MoVkFMVUUga2xhc3MpCiAgICAgcmV0 dXJuIHNlbGY7CiB9CiAKK3N0YXRpYyBWQUxVRQorZmluZF9tb2R1bGVfZm9y X25lc3RlZF9tZXRob2RzKE5PREUgKmNyZWYsIFZBTFVFIGtsYXNzKQorewor ICAgIFZBTFVFIGljbGFzczsKKworICAgIGlmIChOSUxfUChjcmVmLT5uZF9v bW9kKSkKKwlyZXR1cm4gUW5pbDsKKyAgICBpY2xhc3MgPSByYl9oYXNoX2xv b2t1cChjcmVmLT5uZF9vbW9kLCBrbGFzcyk7CisgICAgaWYgKE5JTF9QKGlj bGFzcykpCisJcmV0dXJuIFFuaWw7CisgICAgd2hpbGUgKGljbGFzcykgewor CVZBTFVFIG1vZHVsZSA9IFJCQVNJQyhpY2xhc3MpLT5rbGFzczsKKwlpZiAo RkxfVEVTVChtb2R1bGUsIFJNT0RVTEVfSEFTX05FU1RFRF9NRVRIT0RTKSkg eworCSAgICByZXR1cm4gbW9kdWxlOworCX0KKwlpY2xhc3MgPSBSQ0xBU1Nf U1VQRVIoaWNsYXNzKTsKKyAgICB9CisgICAgcmV0dXJuIFFuaWw7Cit9CisK IFZBTFVFIHJiX2lzZXFfY2xvbmUoVkFMVUUgaXNlcXZhbCwgVkFMVUUgbmV3 Y2Jhc2UpOwogCiBzdGF0aWMgdm9pZAotdm1fZGVmaW5lX21ldGhvZChyYl90 aHJlYWRfdCAqdGgsIFZBTFVFIG9iaiwgSUQgaWQsIFZBTFVFIGlzZXF2YWws Cit2bV9kZWZpbmVfbWV0aG9kKHJiX3RocmVhZF90ICp0aCwgVkFMVUUgb2Jq LCBJRCBpZCwgVkFMVUUgaXNlcXZhbCwgVkFMVUUgbmVzdGVkLAogCQkgcmJf bnVtX3QgaXNfc2luZ2xldG9uLCBOT0RFICpjcmVmKQogewogICAgIFZBTFVF IGtsYXNzID0gY3JlZi0+bmRfY2xzczsKKyAgICBWQUxVRSB0YXJnZXQsIGRl ZmluZWRfY2xhc3M7CisgICAgcmJfbWV0aG9kX2VudHJ5X3QgKm1lOwogICAg IGludCBub2V4ID0gKGludCljcmVmLT5uZF92aXNpOworICAgIGludCBpc19u ZXN0ZWQgPSBSVEVTVChuZXN0ZWQpOwogICAgIHJiX2lzZXFfdCAqbWlzZXE7 CiAgICAgR2V0SVNlcVB0cihpc2VxdmFsLCBtaXNlcSk7CiAKQEAgLTE4NTQs MTIgKzE4NzcsNDMgQEAgdm1fZGVmaW5lX21ldGhvZChyYl90aHJlYWRfdCAq dGgsIFZBTFVFIG9iaiwgSUQgaWQsIFZBTFVFIGlzZXF2YWwsCiAJbm9leCA9 IE5PRVhfUFVCTElDOwogICAgIH0KIAorICAgIGlmIChpc19uZXN0ZWQgJiYg dGgtPmNmcC0+bGZwID09IHRoLT5jZnAtPmRmcCkgeworCVZBTFVFIGM7Cisg ICAgICAgCWlmIChUWVBFKGtsYXNzKSA9PSBUX01PRFVMRSkgeworCSAgICBj ID0gcmJfb2JqX2NsYXNzKHRoLT5jZnAtPnNlbGYpOworCX0KKwllbHNlIHsK KwkgICAgYyA9IGtsYXNzOworCX0KKwlpZiAoY3JlZi0+ZmxhZ3MgJiBOT0RF X0ZMX0NSRUZfT01PRF9TSEFSRUQpIHsKKwkgICAgdGFyZ2V0ID0gUW5pbDsK Kwl9CisJZWxzZSB7CisJICAgIHRhcmdldCA9IGZpbmRfbW9kdWxlX2Zvcl9u ZXN0ZWRfbWV0aG9kcyhjcmVmLCBjKTsKKwl9CisJaWYgKE5JTF9QKHRhcmdl dCkpIHsKKwkgICAgdGFyZ2V0ID0gcmJfbW9kdWxlX25ldygpOworCSAgICBG TF9TRVQodGFyZ2V0LCBSTU9EVUxFX0hBU19ORVNURURfTUVUSE9EUyk7CisJ ICAgIHJiX292ZXJsYXlfbW9kdWxlKGNyZWYsIGMsIHRhcmdldCk7CisJfQor CWVsc2UgeworCSAgICBtZSA9IHNlYXJjaF9tZXRob2QodGFyZ2V0LCBpZCwg UW5pbCwgJmRlZmluZWRfY2xhc3MpOworCSAgICBpZiAobWUgJiYgbWUtPmRl Zi0+dHlwZSA9PSBWTV9NRVRIT0RfVFlQRV9JU0VRICYmCisJCW1lLT5kZWYt PmJvZHkuaXNlcSA9PSBtaXNlcSkgeworCQlyZXR1cm47CisJICAgIH0KKwl9 CisJbm9leCA9IE5PRVhfUFJJVkFURTsKKyAgICB9CisgICAgZWxzZSB7CisJ dGFyZ2V0ID0ga2xhc3M7CisgICAgfQogICAgIC8qIGR1cCAqLwogICAgIENP UFlfQ1JFRihtaXNlcS0+Y3JlZl9zdGFjaywgY3JlZik7CiAgICAgbWlzZXEt PmNyZWZfc3RhY2stPm5kX3Zpc2kgPSBOT0VYX1BVQkxJQzsKLSAgICBtaXNl cS0+a2xhc3MgPSBrbGFzczsKKyAgICBtaXNlcS0+a2xhc3MgPSB0YXJnZXQ7 CiAgICAgbWlzZXEtPmRlZmluZWRfbWV0aG9kX2lkID0gaWQ7Ci0gICAgcmJf YWRkX21ldGhvZChrbGFzcywgaWQsIFZNX01FVEhPRF9UWVBFX0lTRVEsIG1p c2VxLCBub2V4KTsKKyAgICByYl9hZGRfbWV0aG9kKHRhcmdldCwgaWQsIFZN X01FVEhPRF9UWVBFX0lTRVEsIG1pc2VxLCBub2V4KTsKIAogICAgIGlmICgh aXNfc2luZ2xldG9uICYmIG5vZXggPT0gTk9FWF9NT0RGVU5DKSB7CiAJcmJf YWRkX21ldGhvZChyYl9zaW5nbGV0b25fY2xhc3Moa2xhc3MpLCBpZCwgVk1f TUVUSE9EX1RZUEVfSVNFUSwgbWlzZXEsIE5PRVhfUFVCTElDKTsKQEAgLTE4 NzMsMTAgKzE5MjcsMTAgQEAgdm1fZGVmaW5lX21ldGhvZChyYl90aHJlYWRf dCAqdGgsIFZBTFVFIG9iaiwgSUQgaWQsIFZBTFVFIGlzZXF2YWwsCiB9IHdo aWxlICgwKQogCiBzdGF0aWMgVkFMVUUKLW1fY29yZV9kZWZpbmVfbWV0aG9k KFZBTFVFIHNlbGYsIFZBTFVFIGNiYXNlLCBWQUxVRSBzeW0sIFZBTFVFIGlz ZXF2YWwpCittX2NvcmVfZGVmaW5lX21ldGhvZChWQUxVRSBzZWxmLCBWQUxV RSBjYmFzZSwgVkFMVUUgc3ltLCBWQUxVRSBpc2VxdmFsLCBWQUxVRSBuZXN0 ZWQpCiB7CiAgICAgUkVXSU5EX0NGUCh7Ci0Jdm1fZGVmaW5lX21ldGhvZChH RVRfVEhSRUFEKCksIGNiYXNlLCBTWU0ySUQoc3ltKSwgaXNlcXZhbCwgMCwg cmJfdm1fY3JlZigpKTsKKwl2bV9kZWZpbmVfbWV0aG9kKEdFVF9USFJFQUQo KSwgY2Jhc2UsIFNZTTJJRChzeW0pLCBpc2VxdmFsLCBuZXN0ZWQsIDAsIHJi X3ZtX2NyZWYoKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIFFuaWw7CiB9CkBA IC0xODg1LDcgKzE5MzksNyBAQCBzdGF0aWMgVkFMVUUKIG1fY29yZV9kZWZp bmVfc2luZ2xldG9uX21ldGhvZChWQUxVRSBzZWxmLCBWQUxVRSBjYmFzZSwg VkFMVUUgc3ltLCBWQUxVRSBpc2VxdmFsKQogewogICAgIFJFV0lORF9DRlAo ewotCXZtX2RlZmluZV9tZXRob2QoR0VUX1RIUkVBRCgpLCBjYmFzZSwgU1lN MklEKHN5bSksIGlzZXF2YWwsIDEsIHJiX3ZtX2NyZWYoKSk7CisJdm1fZGVm aW5lX21ldGhvZChHRVRfVEhSRUFEKCksIGNiYXNlLCBTWU0ySUQoc3ltKSwg aXNlcXZhbCwgUWZhbHNlLCAxLCByYl92bV9jcmVmKCkpOwogICAgIH0pOwog ICAgIHJldHVybiBRbmlsOwogfQpAQCAtMjAwMSw3ICsyMDU1LDcgQEAgSW5p dF9WTSh2b2lkKQogICAgIHJiX2RlZmluZV9tZXRob2RfaWQoa2xhc3MsIGlk X2NvcmVfc2V0X21ldGhvZF9hbGlhcywgbV9jb3JlX3NldF9tZXRob2RfYWxp YXMsIDMpOwogICAgIHJiX2RlZmluZV9tZXRob2RfaWQoa2xhc3MsIGlkX2Nv cmVfc2V0X3ZhcmlhYmxlX2FsaWFzLCBtX2NvcmVfc2V0X3ZhcmlhYmxlX2Fs aWFzLCAyKTsKICAgICByYl9kZWZpbmVfbWV0aG9kX2lkKGtsYXNzLCBpZF9j b3JlX3VuZGVmX21ldGhvZCwgbV9jb3JlX3VuZGVmX21ldGhvZCwgMik7Ci0g ICAgcmJfZGVmaW5lX21ldGhvZF9pZChrbGFzcywgaWRfY29yZV9kZWZpbmVf bWV0aG9kLCBtX2NvcmVfZGVmaW5lX21ldGhvZCwgMyk7CisgICAgcmJfZGVm aW5lX21ldGhvZF9pZChrbGFzcywgaWRfY29yZV9kZWZpbmVfbWV0aG9kLCBt X2NvcmVfZGVmaW5lX21ldGhvZCwgNCk7CiAgICAgcmJfZGVmaW5lX21ldGhv ZF9pZChrbGFzcywgaWRfY29yZV9kZWZpbmVfc2luZ2xldG9uX21ldGhvZCwg bV9jb3JlX2RlZmluZV9zaW5nbGV0b25fbWV0aG9kLCAzKTsKICAgICByYl9k ZWZpbmVfbWV0aG9kX2lkKGtsYXNzLCBpZF9jb3JlX3NldF9wb3N0ZXhlLCBt X2NvcmVfc2V0X3Bvc3RleGUsIDEpOwogICAgIHJiX29ial9mcmVlemUoZmNv cmUpOwpkaWZmIC0tZ2l0IGEvdm1fY29yZS5oIGIvdm1fY29yZS5oCmluZGV4 IDgxMWU3ZmYuLjVhNWQwOGUgMTAwNjQ0Ci0tLSBhL3ZtX2NvcmUuaAorKysg Yi92bV9jb3JlLmgKQEAgLTcxNyw2ICs3MTcsOCBAQCByYl90aHJlYWRwdHJf ZXhlY19ldmVudF9ob29rcyhyYl90aHJlYWRfdCAqdGgsIHJiX2V2ZW50X2Zs YWdfdCBmbGFnLCBWQUxVRSBzZWxmLAogICAgIH0gXAogfSB3aGlsZSAoMCkK IAordm9pZCByYl9vdmVybGF5X21vZHVsZShOT0RFKiwgVkFMVUUsIFZBTFVF KTsKKwogI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0gNAog I3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCiAjZW5kaWYK ZGlmZiAtLWdpdCBhL3ZtX21ldGhvZC5jIGIvdm1fbWV0aG9kLmMKaW5kZXgg ODE1ZmQ0My4uMmQzNjJmNyAxMDA2NDQKLS0tIGEvdm1fbWV0aG9kLmMKKysr IGIvdm1fbWV0aG9kLmMKQEAgLTcxMSw5ICs3MTEsMTQgQEAgcmJfdW5kZWYo VkFMVUUga2xhc3MsIElEIGlkKQogICAgIH0KIAogICAgIGlmICghUlRFU1Qo cmJfY2xhc3NfaW5oZXJpdGVkX3Aoa2xhc3MsIG1lLT5rbGFzcykpKSB7Ci0J VkFMVUUgbW9kID0gcmJfbW9kdWxlX25ldygpOwotCXJiX292ZXJsYXlfbW9k dWxlKGNyZWYsIGtsYXNzLCBtb2QpOwotCWtsYXNzID0gbW9kOworCWlmIChG TF9URVNUKG1lLT5rbGFzcywgUk1PRFVMRV9IQVNfTkVTVEVEX01FVEhPRFMp KSB7CisJICAgIGtsYXNzID0gbWUtPmtsYXNzOworCX0KKwllbHNlIHsKKwkg ICAgVkFMVUUgbW9kID0gcmJfbW9kdWxlX25ldygpOworCSAgICByYl9vdmVy bGF5X21vZHVsZShjcmVmLCBrbGFzcywgbW9kKTsKKwkgICAga2xhc3MgPSBt b2Q7CisJfQogICAgIH0KICAgICByYl9hZGRfbWV0aG9kKGtsYXNzLCBpZCwg Vk1fTUVUSE9EX1RZUEVfVU5ERUYsIDAsIE5PRVhfUFVCTElDKTsKIAo= --mimepart_4cf08b7d358b4_36e61376f918145ce--