ZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDJkMWI4MjIuLmIyY2NhODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtOTQ0LDE5ICs5NDQsMTYgQEAKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgTlVMTCk7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9ERUNSRUYoc3RhdGVtZW50KTsKLSAgICAgICAgc3RhdGVtZW50ID0gMDsKKyAgICAgICAgUHlfQ0xFQVIoc3RhdGVtZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICB3ZWFrcmVmID0gUHlXZWFrcmVmX05ld1JlZigoUHlPYmplY3QqKXN0YXRlbWVudCwgTlVMTCk7CiAgICAgICAgIGlmICghd2Vha3JlZikgewotICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlbWVudCk7Ci0gICAgICAgICAgICBzdGF0ZW1lbnQgPSAwOworICAgICAgICAgICAgUHlfQ0xFQVIoc3RhdGVtZW50KTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZWxmLT5zdGF0ZW1lbnRzLCB3ZWFrcmVmKSAhPSAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYod2Vha3JlZik7Ci0gICAgICAgICAgICBzdGF0ZW1lbnQgPSAwOworICAgICAgICAgICAgUHlfQ0xFQVIod2Vha3JlZik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAKQEAgLTk4MCwxNSArOTc3LDEzIEBACiAKICAgICBtZXRob2QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGN1cnNvciwgImV4ZWN1dGUiKTsKICAgICBpZiAoIW1ldGhvZCkgewotICAgICAgICBQeV9ERUNSRUYoY3Vyc29yKTsKLSAgICAgICAgY3Vyc29yID0gMDsKKyAgICAgICAgUHlfQ0xFQVIoY3Vyc29yKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KG1ldGhvZCwgYXJncyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgUHlfREVDUkVGKGN1cnNvcik7Ci0gICAgICAgIGN1cnNvciA9IDA7CisgICAgICAgIFB5X0NMRUFSKGN1cnNvcik7CiAgICAgfQogCiBlcnJvcjoKQEAgLTEwMTEsMTUgKzEwMDYsMTMgQEAKIAogICAgIG1ldGhvZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY3Vyc29yLCAiZXhlY3V0ZW1hbnkiKTsKICAgICBpZiAoIW1ldGhvZCkgewotICAgICAgICBQeV9ERUNSRUYoY3Vyc29yKTsKLSAgICAgICAgY3Vyc29yID0gMDsKKyAgICAgICAgUHlfQ0xFQVIoY3Vyc29yKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KG1ldGhvZCwgYXJncyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgUHlfREVDUkVGKGN1cnNvcik7Ci0gICAgICAgIGN1cnNvciA9IDA7CisgICAgICAgIFB5X0NMRUFSKGN1cnNvcik7CiAgICAgfQogCiBlcnJvcjoKQEAgLTEwNDIsMTUgKzEwMzUsMTMgQEAKIAogICAgIG1ldGhvZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY3Vyc29yLCAiZXhlY3V0ZXNjcmlwdCIpOwogICAgIGlmICghbWV0aG9kKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjdXJzb3IpOwotICAgICAgICBjdXJzb3IgPSAwOworICAgICAgICBQeV9DTEVBUihjdXJzb3IpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aG9kLCBhcmdzKTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBQeV9ERUNSRUYoY3Vyc29yKTsKLSAgICAgICAgY3Vyc29yID0gMDsKKyAgICAgICAgUHlfQ0xFQVIoY3Vyc29yKTsKICAgICB9CiAKIGVycm9yOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCmluZGV4IDI5ZDNmZjQuLjE0ZGQwMDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKQEAgLTEsNiArMSw2IEBACiAvKiBjdXJzb3IuYyAtIHRoZSBjdXJzb3IgdHlwZQogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA3IEdlcmhhcmQgSMOkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgcHlzcWxpdGUuCiAgKgpAQCAtNTI5LDcgKzUyOSw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfY3JlYXRlKHNlbGYtPnN0YXRlbWVudCwgc2VsZi0+Y29ubmVjdGlvbiwgb3BlcmF0aW9uKTsKICAgICAgICAgaWYgKHJjICE9IFNRTElURV9PSykgewotICAgICAgICAgICAgc2VsZi0+c3RhdGVtZW50ID0gMDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQpAQCAtNjAyLDcgKzYwMiw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfY3JlYXRlKHNlbGYtPnN0YXRlbWVudCwgc2VsZi0+Y29ubmVjdGlvbiwgb3BlcmF0aW9uKTsKICAgICAgICAgaWYgKHJjICE9IFNRTElURV9PSykgewotICAgICAgICAgICAgc2VsZi0+c3RhdGVtZW50ID0gMDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQpAQCAtNzExLDggKzcxMSw3IEBACiAgICAgICAgICAgICBzZWxmLT5uZXh0X3JvdyA9IF9weXNxbGl0ZV9mZXRjaF9vbmVfcm93KHNlbGYpOwogICAgICAgICB9IGVsc2UgaWYgKHJjID09IFNRTElURV9ET05FICYmICFtdWx0aXBsZSkgewogICAgICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhdGVtZW50KTsKLSAgICAgICAgICAgIHNlbGYtPnN0YXRlbWVudCA9IDA7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChzdGF0ZW1lbnRfdHlwZSkgewpAQCAtMTAxMyw4ICsxMDEyLDcgQEAKIAogICAgIGlmIChzZWxmLT5zdGF0ZW1lbnQpIHsKICAgICAgICAgKHZvaWQpcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT5zdGF0ZW1lbnQpOwotICAgICAgICBzZWxmLT5zdGF0ZW1lbnQgPSAwOworICAgICAgICBQeV9DTEVBUihzZWxmLT5zdGF0ZW1lbnQpOwogICAgIH0KIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsK