ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCAyZWZiYTgwLi5jM2MyMDQ2IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0xLDYgKzEsMTIgQEAKIENoYW5nZUxvZyA6CiA9PT09PT09PT09PQogCisyMDAzLzEwLzI3IDogMS4xLjI3CisgIC0gdGhlIGNvbmZpZ3VyYWJsZSBIVFRQIGhlYWx0aCBjaGVjayBpbnRyb2R1Y2VkIGluIDEuMS4yMyByZXZlYWxlZCBhIHNoYW1lZnVsCisgICAgYnVnIDogdGhlIGNvZGUgc3RpbGwgYXNzdW1lZCB0aGF0IEhUVFAgcmVxdWVzdHMgd2VyZSB0aGUgc2FtZSBzaXplIGFzIHRoZQorICAgIG9yaWdpbmFsIG9uZXMgKDIyIGJ5dGVzKSwgYW5kIGZhaWxlZCBpZiB0aGV5IHdlcmUgbm90LgorICAtIGFkZGVkIHN1cHBvcnQgZm9yIHBpZGZpbGVzLgorCiAyMDAzLzEwLzIyIDogMS4xLjI2CiAgIC0gdGhlIGZpeCBpbnRyb2R1Y2VkIGluIDEuMS4yNSBmb3IgY2xpZW50IHRpbWVvdXRzIHdoaWxlIHdhaXRpbmcgZm9yIHNlcnZlcnMKICAgICBicm9rZSBhbG1vc3QgYWxsIGNvbXBhdGliaWxpdHkgd2l0aCBQT1NUIHJlcXVlc3RzLCBiZWNhdXNlIHRoZSBwcm94eQpkaWZmIC0tZ2l0IGEvZG9jL2hhcHJveHktZW4udHh0IGIvZG9jL2hhcHJveHktZW4udHh0CmluZGV4IGE0YmJmMDEuLmFkODI1MjEgMTAwNjQ0Ci0tLSBhL2RvYy9oYXByb3h5LWVuLnR4dAorKysgYi9kb2MvaGFwcm94eS1lbi50eHQKQEAgLTEsOSArMSw5IEBACiAKICAgICAgICAgIAkJICAgICBIIEEgLSBQIHIgbyB4IHkKICAgICAgICAgIAkJICAgICAtLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgIAkJICAgICAgdmVyc2lvbiAxLjEuMjUKKyAgICAgICAgIAkJICAgICAgdmVyc2lvbiAxLjEuMjcKIAkJCSAgICAgIHdpbGx5IHRhcnJlYXUKLQkJCSAgICAgICAyMDAzLzEwLzE1CisJCQkgICAgICAgMjAwMy8xMC8yNwogCiA9PT09PT09PT09PT0KIHwgQWJzdHJhY3QgfApAQCAtMzUsNiArMzUsOCBAQAogICAgIC1OIDxoaWdoIGxpbWl0IGZvciB0aGUgcGVyLXByb3h5IG51bWJlciBvZiBzaW11bHRhbmVvdXMgY29ubmVjdGlvbnM+CiAgICAgLWQgc3RhcnRzIGluIGZvcmVncmVvdW5kIHdpdGggZGVidWdnaW5nIG1vZGUgZW5hYmxlZAogICAgIC1EIHN0YXJ0cyBpbiBkYWVtb24gbW9kZQorICAgIC1wIDxwaWRmaWxlPiBhc2tzIHRoZSBwcm9jZXNzIHRvIHdyaXRlIGRvd24gZWFjaCBvZiBpdHMgY2hpbGRyZW4ncworICAgICAgIHBpZHMgdG8gdGhpcyBmaWxlIGluIGRhZW1vbiBtb2RlLgogICAgIC1zIHNob3dzIHN0YXRpc3RpY3MgKG9ubHkgaWYgY29tcGlsZWQgaW4pCiAgICAgLWwgc2hvd3MgZXZlbiBtb3JlIHN0YXRpc3RpY3MgKGltcGxpZXMgJy1zJykKIApAQCAtOTIsNiArOTQsNyBAQAogICAtIGRhZW1vbgogICAtIGRlYnVnCiAgIC0gcXVpZXQKKyAgLSBwaWRmaWxlIDxmaWxlPgogCiAxLjEpIEV2ZW50IGxvZ2dpbmcKIC0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjMxLDYgKzIzNCwyOCBAQAogCW5icHJvYwkyCiAKIAorMS42KSBIZWxwaW5nIHByb2Nlc3MgbWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGFwcm94eSBub3cgc3VwcG9ydHMgdGhlIG5vdGlvbiBvZiBwaWRmaWxlLiBJZiB0aGUgJy1wJyBjb21tYW5kIGxpbmUgYXJndW1lbnQsCitvciB0aGUgJ3BpZGZpbGUnIGdsb2JhbCBvcHRpb24gaXMgZm9sbG93ZWQgd2l0aCBhIGZpbGUgbmFtZSwgdGhpcyBmaWxlIHdpbGwgYmUKK3JlbW92ZWQsIHRoZW4gZmlsbGVkIHdpdGggYWxsIGNoaWxkcmVuJ3MgcGlkcywgb25lIHBlciBsaW5lIChvbmx5IGluIGRhZW1vbgorbW9kZSkuIFRoaXMgZmlsZSBpcyBOT1Qgd2l0aGluIHRoZSBjaHJvb3QsIHdoaWNoIGFsbG93cyB0byB3b3JrIHdpdGggYSByZWFkb25seQorIGNocm9vdC4gSXQgd2lsbCBiZSBvd25lZCBieSB0aGUgdXNlciBzdGFydGluZyB0aGUgcHJvY2VzcywgYW5kIHdpbGwgaGF2ZQorcGVybWlzc2lvbnMgMDY0NC4KKworRXhhbXBsZSA6CistLS0tLS0tLS0KKworICAgIGdsb2JhbAorICAgICAgICBkYWVtb24KKyAgICAgICAgcXVpZXQKKyAgICAgICAgbmJwcm9jIDIKKyAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCisKKyAgICAjIHRvIHN0b3Agb25seSB0aG9zZSBwcm9jZXNzZXMgYW1vbmcgb3RoZXJzIDoKKyAgICAjIGtpbGwgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKKworCiAyKSBEZWNsYXJhdGlvbiBvZiBhIGxpc3RlbmluZyBzZXJ2aWNlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL2RvYy9oYXByb3h5LWZyLnR4dCBiL2RvYy9oYXByb3h5LWZyLnR4dAppbmRleCA1OTY1MzFkLi5mMWIwOGU4IDEwMDY0NAotLS0gYS9kb2MvaGFwcm94eS1mci50eHQKKysrIGIvZG9jL2hhcHJveHktZnIudHh0CkBAIC0xLDkgKzEsOSBAQAogCiAgICAgICAgICAJCSAgICAgSCBBIC0gUCByIG8geCB5CiAgICAgICAgICAJCSAgICAgLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAJCSAgICAgIHZlcnNpb24gMS4xLjI1CisgICAgICAgICAJCSAgICAgIHZlcnNpb24gMS4xLjI3CiAJCQkgICAgICB3aWxseSB0YXJyZWF1Ci0JCQkgICAgICAgMjAwMy8xMC8xNQorCQkJICAgICAgIDIwMDMvMTAvMjcKIAogPT09PT09PT09PT09PT09PQogfCBJbnRyb2R1Y3Rpb24gfApAQCAtMzcsNiArMzcsOCBAQAogICAgIC1OIDxub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBwcm94eT4KICAgICAtZCBhY3RpdmUgbGUgbW9kZSBkZWJ1ZwogICAgIC1EIHBhc3NlIGVuIGRhZW1vbgorICAgIC1wIDxmaWNoaWVyPiBpbmRpcXVlIGF1IHByb2Nlc3N1cyBw6HJlIHF1J2lsIGRvaXQg6WNyaXJlIGxlcyBQSURzIGRlIHNlcworICAgICAgIGZpbHMgZGFucyBjZSBmaWNoaWVyIGVuIG1vZGUgZOltb24uCiAgICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAgLWwgYWpvdXRlIGRlcyBpbmZvcm1hdGlvbnMgYXV4IHN0YXRpc3RpcXVlcwogCkBAIC05NSw2ICs5Nyw3IEBACiAgIC0gZGFlbW9uCiAgIC0gZGVidWcKICAgLSBxdWlldAorICAtIHBpZGZpbGUgPGZpY2hpZXI+CiAKIDEuMSkgSm91cm5hbGlzYXRpb24gZGVzIOl26W5lbWVudHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5OSw3ICsyMDIsNyBAQAogCWdpZAkzMDAwMAogCWNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQogCi0xLjQpIG1vZGVzIGRlIGZvbmN0aW9ubmVtZW50CisxLjQpIE1vZGVzIGRlIGZvbmN0aW9ubmVtZW50CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogICAtIGF2YW50LSAvIGFycmnocmUtcGxhbgpAQCAtMjIyLDcgKzIyNSw3IEBACiBlbnRyZSBsZXMgY2xpZW50cyBldCBsZXMgc2VydmV1cnMuIENlIG1vZGUgZXN0IGluY29tcGF0aWJsZSBhdmVjIGxlcyBvcHRpb25zCiAnZGFlbW9uJyBldCAncXVpZXQnIHBvdXIgZGVzIHJhaXNvbnMgZGUgYm9uIHNlbnMuCiAKLTEuNSkgYWNjcm9pc3NlbWVudCBkZSBsYSBjYXBhY2l06SBkZSB0cmFpdGVtZW50CisxLjUpIEFjY3JvaXNzZW1lbnQgZGUgbGEgY2FwYWNpdOkgZGUgdHJhaXRlbWVudAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFN1ciBkZXMgbWFjaGluZXMgbXVsdGktcHJvY2Vzc2V1cnMsIGlsIHBldXQgc2VtYmxlciBn4mNo6SBkZSBuJ3V0aWxpc2VyIHF1J3VuCiBwcm9jZXNzZXVyIHBvdXIgZWZmZWN0dWVyIGxlcyB04mNoZXMgZGUgcmVsYXlhZ2UsIG3qbWUgc2kgbGVzIGNoYXJnZXMKQEAgLTI0MSw2ICsyNDQsMjkgQEAKIAlxdWlldAogCW5icHJvYwkyCiAKKzEuNikgU2ltcGxpZmljYXRpb24gZGUgbGEgZ2VzdGlvbiBkZXMgcHJvY2Vzc3VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGFwcm94eSBzdXBwb3J0ZSBkb3LpbmF2YW50IGxhIG5vdGlvbiBkZSBmaWNoaWVycyBkZSBwaWQgKC0+IHBpZGZpbGVzKS4gU2kgbGUKK3BhcmFt6HRyZSAnLXAnIGRlIGxpZ25lIGRlIGNvbW1hbmRlLCBvdSBsJ29wdGlvbiBnbG9iYWxlICdwaWRmaWxlJyBzb250IHN1aXZpcworZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKK2xlIG51belybyBkZSBQSUQgZGVzIHByb2Nlc3N1cyBmaWxzLCDgIHJhaXNvbiBkJ3VuIHBhciBsaWduZSAodmFsYWJsZQordW5pcXVlbWVudCBlbiBtb2RlIGTpbW9uKS4gQ2UgZmljaGllciBuJ2VzdCBQQVMgcmVsYXRpZiBhdSBjbG9pc29ubmVtZW50IGNocm9vdAorYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAorYXBwYXJ0aWVuZHJhIOAgbCd1dGlsaXNhdGV1ciBheWFudCBsYW5j6SBsZSBwcm9jZXNzdXMsIGV0IGRpc3Bvc2VyYSBkZXMgZHJvaXRzCiswNjQ0LgorCitFeGVtcGxlIDoKKy0tLS0tLS0tLQorCisgICAgZ2xvYmFsCisgICAgICAgIGRhZW1vbgorICAgICAgICBxdWlldAorICAgICAgICBuYnByb2MgMgorICAgICAgICBwaWRmaWxlIC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQKKworICAgICMgcG91ciBzdG9wcGVyIHNldWxlbWVudCBjZXMgcHJvY2Vzc3VzIHBhcm1pIGQnYXV0cmVzIDoKKyAgICAjIGtpbGwgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKKwogCiAyKSBE6WZpbml0aW9uIGQndW4gc2VydmljZSBlbiDpY291dGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvY29uZmlnLnJjLmhhcHJveHkgYi9leGFtcGxlcy9jb25maWcucmMuaGFwcm94eQppbmRleCAwNjdmMDdhLi41MzQwNDk1IDEwMDY0NAotLS0gYS9leGFtcGxlcy9jb25maWcucmMuaGFwcm94eQorKysgYi9leGFtcGxlcy9jb25maWcucmMuaGFwcm94eQpAQCAtMSwzICsxLDYgQEAKLXNlcnZpY2UgaGFwcm94eQotCWNvbmZpZyAvZXRjL2hhcHJveHkvaGFwcm94eS5jZmcKK3NlcnZpY2UgaGFwcm94eSBleHQKKwljb25maWcgL2V0Yy9oYXByb3h5L2hhcHJveHktZXh0LmNmZworCitzZXJ2aWNlIGhhcHJveHkgaW50CisJY29uZmlnIC9ldGMvaGFwcm94eS9oYXByb3h5LWludC5jZmcKIApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaW5pdC5oYXByb3h5LmZseDAgYi9leGFtcGxlcy9pbml0LmhhcHJveHkuZmx4MAppbmRleCBhYTVmMGNiLi40YjczYmQ4IDEwMDY0NAotLS0gYS9leGFtcGxlcy9pbml0LmhhcHJveHkuZmx4MAorKysgYi9leGFtcGxlcy9pbml0LmhhcHJveHkuZmx4MApAQCAtNCw3ICs0LDcgQEAKIAogb3B0aW9uCWNvbmZpZwkJc3RhbmRhcmRfb3B0aW9uCS9ldGMvaGFwcm94eS9oYXByb3h5LmNmZwogb3B0aW9uCWJpbgkJcmVzZXJ2ZWRfb3B0aW9uCS91c3Ivc2Jpbi9oYXByb3h5Ci1vcHRpb24JY21kbGluZQkJcmVzZXJ2ZWRfb3B0aW9uCSckYmluIC1xIC1EIC1mICR7b3B0X2NvbmZpZ30nCitvcHRpb24JY21kbGluZQkJcmVzZXJ2ZWRfb3B0aW9uCSckYmluIC1mICR7b3B0X2NvbmZpZ30gLXAgJHtwaWRmaWxlfSAtRCAtcScKIAogZnVuY3Rpb24gZG9faGVscCB7CiAgICAgZWNobyAiVXNhZ2U6ICR7MCMjKi99IDxzdGF0dXN8c3RhcnR8c3RvcHxoZWxwPiIKQEAgLTE1LDYgKzE1LDEwIEBACiAgICAgZXhpdCAxIAogfQogCisjIGFzc2lnbiBkZWZhdWx0IHZhbHVlcyB0byBvcHRpb25zIGFuZCB2YXJpYWJsZXMgYmVmb3JlIHBhcnNpbmcgdGhlIGNmZyBmaWxlCitmdW5jdGlvbiBmY3RfYmVnaW5fc2VjdGlvbiB7CisgICAgcGlkZmlsZT0iL3Zhci9ydW4vaGFwcm94eSR7MjorLSQyfS5waWQiCit9CiAKIGxvYWRfY29uZmlnCiAKZGlmZiAtLWdpdCBhL2hhcHJveHkuYyBiL2hhcHJveHkuYwppbmRleCA3NzZhMjM1Li5iZGVlNDNkIDEwMDY0NAotLS0gYS9oYXByb3h5LmMKKysrIGIvaGFwcm94eS5jCkBAIC01Myw4ICs1Myw4IEBACiAjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyX2lwdjQuaD4KICNlbmRpZgogCi0jZGVmaW5lIEhBUFJPWFlfVkVSU0lPTiAiMS4xLjI2IgotI2RlZmluZSBIQVBST1hZX0RBVEUJIjIwMDMvMTAvMjIiCisjZGVmaW5lIEhBUFJPWFlfVkVSU0lPTiAiMS4xLjI3IgorI2RlZmluZSBIQVBST1hZX0RBVEUJIjIwMDMvMTAvMjciCiAKIC8qIHRoaXMgaXMgZm9yIGxpYmM1IGZvciBleGFtcGxlICovCiAjaWZuZGVmIFRDUF9OT0RFTEFZCkBAIC00OTEsNiArNDkxLDcgQEAKICAgICBpbnQgbWF4c29jazsJCS8qIG1heCAjIG9mIHNvY2tldHMgKi8KICAgICBpbnQgbW9kZTsKICAgICBjaGFyICpjaHJvb3Q7CisgICAgY2hhciAqcGlkZmlsZTsKICAgICBpbnQgbG9nZmFjMSwgbG9nZmFjMjsKICAgICBpbnQgbG9nbGV2MSwgbG9nbGV2MjsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbG9nc3J2MSwgbG9nc3J2MjsKQEAgLTY3Nyw3ICs2NzgsNyBAQAogI2lmIFNUQVRUSU1FID4gMAogCSAgICAic2wiCiAjZW5kaWYKLQkgICAgIkQgXSBbIC1uIDxtYXhjb25uPiBdIFsgLU4gPG1heHBjb25uPiBdXG4iCisJICAgICJEIF0gWyAtbiA8bWF4Y29ubj4gXSBbIC1OIDxtYXhwY29ubj4gXSBbIC1wIDxwaWRmaWxlPiBdXG4iCiAJICAgICIgICAgICAgIC12IGRpc3BsYXlzIHZlcnNpb25cbiIKIAkgICAgIiAgICAgICAgLWQgZW50ZXJzIGRlYnVnIG1vZGVcbiIKICNpZiBTVEFUVElNRSA+IDAKQEAgLTY4Nyw3ICs2ODgsOCBAQAogCSAgICAiICAgICAgICAtRCBnb2VzIGRhZW1vbiA7IGltcGxpZXMgLXFcbiIKIAkgICAgIiAgICAgICAgLXEgcXVpZXQgbW9kZSA6IGRvbid0IGRpc3BsYXkgbWVzc2FnZXNcbiIKIAkgICAgIiAgICAgICAgLW4gc2V0cyB0aGUgbWF4aW11bSB0b3RhbCAjIG9mIGNvbm5lY3Rpb25zICglZClcbiIKLQkgICAgIiAgICAgICAgLU4gc2V0cyB0aGUgZGVmYXVsdCwgcGVyLXByb3h5IG1heGltdW0gIyBvZiBjb25uZWN0aW9ucyAoJWQpXG5cbiIsCisJICAgICIgICAgICAgIC1OIHNldHMgdGhlIGRlZmF1bHQsIHBlci1wcm94eSBtYXhpbXVtICMgb2YgY29ubmVjdGlvbnMgKCVkKVxuIgorCSAgICAiICAgICAgICAtcCB3cml0ZXMgcGlkcyBvZiBhbGwgY2hpbGRyZW4gdG8gdGhpcyBmaWxlXG5cbiIsCiAJICAgIG5hbWUsIERFRkFVTFRfTUFYQ09OTiwgY2ZnX21heHBjb25uKTsKICAgICBleGl0KDEpOwogfQpAQCAtMjIyNiw3ICsyMjI4LDcgQEAKICNlbHNlCiAJICAgIHJldCA9IHNlbmQoZmQsIHMtPnByb3h5LT5jaGVja19yZXEsIHMtPnByb3h5LT5jaGVja19sZW4sIE1TR19ET05UV0FJVCB8IE1TR19OT1NJR05BTCk7CiAjZW5kaWYKLQkgICAgaWYgKHJldCA9PSAyMikgeworCSAgICBpZiAocmV0ID09IHMtPnByb3h5LT5jaGVja19sZW4pIHsKIAkJRkRfU0VUKGZkLCBTdGF0aWNSZWFkRXZlbnQpOyAgIC8qIHByZXBhcmUgZm9yIHJlYWRpbmcgcmVwbHkgKi8KIAkJRkRfQ0xSKGZkLCBTdGF0aWNXcml0ZUV2ZW50KTsgIC8qIG5vdGhpbmcgbW9yZSB0byB3cml0ZSAqLwogCQlyZXR1cm4gMDsKQEAgLTQzMzcsNiArNDMzOSwxNyBAQAogCX0KIAlnbG9iYWwuY2hyb290ID0gc3RyZHVwKGFyZ3NbMV0pOwogICAgIH0KKyAgICBlbHNlIGlmICghc3RyY21wKGFyZ3NbMF0sICJwaWRmaWxlIikpIHsKKwlpZiAoZ2xvYmFsLnBpZGZpbGUgIT0gTlVMTCkgeworCSAgICBBbGVydCgicGFyc2luZyBbJXM6JWRdIDogJyVzJyBhbHJlYWR5IHNwZWNpZmllZC4gQ29udGludWluZy5cbiIsIGZpbGUsIGxpbmVudW0sIGFyZ3NbMF0pOworCSAgICByZXR1cm4gMDsKKwl9CisJaWYgKCooYXJnc1sxXSkgPT0gMCkgeworCSAgICBBbGVydCgicGFyc2luZyBbJXM6JWRdIDogJyVzJyBleHBlY3RzIGEgZmlsZSBuYW1lIGFzIGFuIGFyZ3VtZW50LlxuIiwgZmlsZSwgbGluZW51bSwgYXJnc1swXSk7CisJICAgIHJldHVybiAtMTsKKwl9CisJZ2xvYmFsLnBpZGZpbGUgPSBzdHJkdXAoYXJnc1sxXSk7CisgICAgfQogICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJnc1swXSwgImxvZyIpKSB7ICAvKiBzeXNsb2cgc2VydmVyIGFkZHJlc3MgKi8KIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNhOwogCWludCBmYWNpbGl0eSwgbGV2ZWw7CkBAIC01NjE0LDYgKzU2MjcsNyBAQAogICAgIGludCBhcmdfbW9kZSA9IDA7CS8qIE1PREVfREVCVUcsIC4uLiAqLwogICAgIGNoYXIgKm9sZF9hcmd2ID0gKmFyZ3Y7CiAgICAgY2hhciAqdG1wOworICAgIGNoYXIgKmNmZ19waWRmaWxlID0gTlVMTDsKICAgICBpbnQgY2ZnX21heGNvbm4gPSAwOwkvKiAjIG9mIHNpbXVsdGFuZW91cyBjb25uZWN0aW9ucywgKC1uKSAqLwogCiAgICAgaWYgKDE8PElOVEJJVFMgIT0gc2l6ZW9mKGludCkqOCkgewpAQCAtNTY2MSw2ICs1Njc1LDcgQEAKIAkJY2FzZSAnbicgOiBjZmdfbWF4Y29ubiA9IGF0b2woKmFyZ3YpOyBicmVhazsKIAkJY2FzZSAnTicgOiBjZmdfbWF4cGNvbm4gPSBhdG9sKCphcmd2KTsgYnJlYWs7CiAJCWNhc2UgJ2YnIDogY2ZnX2NmZ2ZpbGUgPSAqYXJndjsgYnJlYWs7CisJCWNhc2UgJ3AnIDogY2ZnX3BpZGZpbGUgPSAqYXJndjsgYnJlYWs7CiAJCWRlZmF1bHQ6IHVzYWdlKG9sZF9hcmd2KTsKIAkJfQogCSAgICB9CkBAIC01NjgzLDYgKzU2OTgsMTIgQEAKICAgICBpZiAoY2ZnX21heGNvbm4gPiAwKQogCWdsb2JhbC5tYXhjb25uID0gY2ZnX21heGNvbm47CiAKKyAgICBpZiAoY2ZnX3BpZGZpbGUpIHsKKwlpZiAoZ2xvYmFsLnBpZGZpbGUpCisJICAgIGZyZWUoZ2xvYmFsLnBpZGZpbGUpOworCWdsb2JhbC5waWRmaWxlID0gc3RyZHVwKGNmZ19waWRmaWxlKTsKKyAgICB9CisKICAgICBpZiAoZ2xvYmFsLm1heGNvbm4gPT0gMCkKIAlnbG9iYWwubWF4Y29ubiA9IERFRkFVTFRfTUFYQ09OTjsKIApAQCAtNTgwMiw2ICs1ODIzLDcgQEAKIAogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgICBGSUxFICpwaWRmaWxlID0gTlVMTDsKICAgICBpbml0KGFyZ2MsIGFyZ3YpOwogCiAgICAgaWYgKGdsb2JhbC5tb2RlICYgTU9ERV9RVUlFVCkgewpAQCAtNTgyNCw3ICs1ODQ2LDE3IEBACiAgICAgaWYgKHN0YXJ0X3Byb3hpZXMoKSA8IDApCiAJZXhpdCgxKTsKIAotICAgIC8qIG9wZW4gbG9nIGZpbGVzICovCisgICAgLyogb3BlbiBsb2cgJiBwaWQgZmlsZXMgYmVmb3JlIHRoZSBjaHJvb3QgKi8KKyAgICBpZiAoZ2xvYmFsLm1vZGUgJiBNT0RFX0RBRU1PTiAmJiBnbG9iYWwucGlkZmlsZSAhPSBOVUxMKSB7CisJaW50IHBpZGZkOworCXVubGluayhnbG9iYWwucGlkZmlsZSk7CisJcGlkZmQgPSBvcGVuKGdsb2JhbC5waWRmaWxlLCBPX0NSRUFUIHwgT19XUk9OTFkgfCBPX1RSVU5DLCAwNjQ0KTsKKwlpZiAocGlkZmQgPCAwKSB7CisJICAgIEFsZXJ0KCJbJXMubWFpbigpXSBDYW5ub3QgY3JlYXRlIHBpZGZpbGUgJXNcbiIsIGFyZ3ZbMF0sIGdsb2JhbC5waWRmaWxlKTsKKwkgICAgZXhpdCgxKTsKKwl9CisJcGlkZmlsZSA9IGZkb3BlbihwaWRmZCwgInciKTsKKyAgICB9CiAKICAgICAvKiBjaHJvb3QgaWYgbmVlZGVkICovCiAgICAgaWYgKGdsb2JhbC5jaHJvb3QgIT0gTlVMTCkgewpAQCAtNTg1OSw3ICs1ODkxLDE2IEBACiAJICAgIH0KIAkgICAgZWxzZSBpZiAocmV0ID09IDApIC8qIGNoaWxkIGJyZWFrcyBoZXJlICovCiAJCWJyZWFrOworCSAgICBpZiAocGlkZmlsZSAhPSBOVUxMKSB7CisJCWZwcmludGYocGlkZmlsZSwgIiVkXG4iLCByZXQpOworCQlmZmx1c2gocGlkZmlsZSk7CisJICAgIH0KIAl9CisJLyogY2xvc2UgdGhlIHBpZGZpbGUgYm90aCBpbiBjaGlsZHJlbiBhbmQgZmF0aGVyICovCisJaWYgKHBpZGZpbGUgIT0gTlVMTCkKKwkgICAgZmNsb3NlKHBpZGZpbGUpOworCWZyZWUoZ2xvYmFsLnBpZGZpbGUpOworCiAJaWYgKHByb2MgPT0gZ2xvYmFsLm5icHJvYykKIAkgICAgZXhpdCgwKTsgLyogcGFyZW50IG11c3QgbGVhdmUgKi8KIAo=