ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jYXJkLmMgYi9zdXB3aXNkb20vc3BfY2FyZC5jCmluZGV4IDgxYmFiY2IuLjRmY2JkNjUgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jYXJkLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NhcmQuYwpAQCAtNDEsNyArNDEsNiBAQAogCiB1aW50OCBzcF9jYXJkX3JlcXVlc3Qoc3BfY2FyZF90KiBjYXJkcGNkKQogewotCiAgIHVpbnQ4IHNhazsKICAgdWludDggc25yWzhdOwogCkBAIC04MCw3ICs3OSw3IEBACiAKIHN0YXRpYyB1aW50MTYgc3Bfc2VsZWN0X2FkZjE1KCkKIHsKLSAgdWludDE2IHJldCA9IDA7CisgIHVpbnQxNiByZXQ7CiAgIHVpbnQ4KiB0ZW1wX2J1ZmYgPSBOVUxMOwogICB1aW50OCBidWZmX2xlbiA9IDA7CiAgIHVpbnQ4IGNtZF9idWZmW10gPSB7Ilx4MDBceEE0XHgwMFx4MDBceDAyXHgzRlx4MDAifTsKQEAgLTk0LDcgKzkzLDcgQEAKIAogc3RhdGljIHVpbnQxNiBzcF9yZWFkX2JpbmFyeV9maWxlKHVpbnQ4IG91dFtdKQogewotICB1aW50MTYgcmV0ID0gMDsKKyAgdWludDE2IHJldDsKICAgdWludDgqIHRlbXBfYnVmZiA9IE5VTEw7CiAgIHVpbnQ4IGJ1ZmZfbGVuID0gMDsKICAgdWludDggY21kX2J1ZmZbNV0gPSB7Ilx4MDBceEIwXHg5NVx4MDBceDQ3In07CkBAIC0xMDgsOSArMTA3LDkgQEAKIH0KIHN0YXRpYyB1aW50MTYgc3BfY3B1X3JlYWQoc3BfY2FyZF90KiBjYXJkKQogewotICB1aW50MTYgcmV0ID0gMDsKKyAgdWludDE2IHJldDsKICAgdWludDggYnVmZls3Ml07Ci0gIHVpbnQ4IG9mZnNldCA9IDA7CisgIHVpbnQ4IG9mZnNldDsKICAgTUVNQ0xFQVIoYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKICAgcmV0ID0gc3Bfc2VsZWN0X2FkZjE1KCk7CiAgIGlmKHJldCkKQEAgLTEyMyw2ICsxMjIsNyBAQAogICB7CiAgICAgcmV0dXJuIHJldDsKICAgfQorICBvZmZzZXQgPSAwOwogICBNRU1DTEVBUihjYXJkLT5jaXRpemVuX2NhcmRubywgc2l6ZW9mKGNhcmQtPmNpdGl6ZW5fY2FyZG5vKSk7CiAgIG9mZnNldCArPSAzMTsKICAgTUVNQ1BZKGNhcmQtPmNpdGl6ZW5fY2FyZG5vLCBidWZmK29mZnNldCwgc2l6ZW9mKGNhcmQtPmNpdGl6ZW5fY2FyZG5vKSk7CmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfY29tbXVuaWNhdGUuYyBiL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5jCmluZGV4IDdiOTYxODMuLjI1OGM5MGYgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5jCisrKyBiL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5jCkBAIC0xMyw3ICsxMyw3IEBACiAKIHN0YXRpYyB2b2lkIHNwX3VzYXJ0X3NlbmQoc3BfcG9zX3QqIHBvcywgc3BfcHJvdG9jb2xfcmVxdWVzdF90KiByZXEpCiB7Ci0gIHVpbnQ4IGJ1ZlsyNjRdOworICB1aW50OCBidWZbc2l6ZW9mKHNwX3Byb3RvY29sX3JlcXVlc3RfdCldOwogICBNRU1DTEVBUihidWYsIHNpemVvZihidWYpKTsKICAgc3BfcHJvdG9jb2xfY3JjKCh1aW50OCopcmVxICsyLCByZXEtPmRhdGFsZW4sICh1aW50OCopcmVxICsyICtyZXEtPmRhdGFsZW4pOwogICByZXEtPmRhdGFsZW4gKz0gMjsKQEAgLTkwLDEzICs5MCwxMiBAQAogewogICB1aW50OCBzaXplOwogICB1aW50MTYgcmV0OwotICBpbnQzMiB0aW1lb3V0X21zID0gQ09NTV9XQUlUX1RJTUU7CiAgIGN3X3VucGFja19jb250ZXh0IHVucGFjazsKICAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CiAgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKIAotICBkaXNwX2hpbnRfaW5mbyhwb3MsItX91NrJ7bfdyM/WpNbQIixERUxBWV9USU1FMnMpOwotICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIHRpbWVvdXRfbXMpOworICBkaXNwX2hpbnRfaW5mbyhwb3MsItX91NrJ7bfdyM/WpNbQIiwwKTsKKyAgcmV0ID0gc3BfdXNhcnRfcmVjdihwb3MsICZyZXNwLCBDT01NX1dBSVRfVElNRSk7CiAgIGlmKHJldCkKICAgewogICAgIHJldCA9IFJDX0NBUkRfQVVUSEVOVElDQVRJT047CkBAIC0yNTQsMTIgKzI1MywxMSBAQAogewogICB1aW50OCBzaXplOwogICB1aW50MTYgcmV0OwotICBpbnQzMiB0aW1lb3V0X21zID0gQ09NTV9XQUlUX1RJTUU7CiAgIGN3X3VucGFja19jb250ZXh0IHVucGFjazsKICAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CiAgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKIAotICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIHRpbWVvdXRfbXMpOworICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIENPTU1fV0FJVF9USU1FKTsKICAgaWYocmV0KQogICB7CiAgICAgcmV0ID0gUkNfUVJDT0RFX0ZBSUxVUkU7CkBAIC0zMTMsMTIgKzMxMSwxMSBAQAogewogICB1aW50OCBzaXplOwogICB1aW50MTYgcmV0OwotICBpbnQzMiB0aW1lb3V0X21zID0gQ09NTV9XQUlUX1RJTUU7CiAgIGN3X3VucGFja19jb250ZXh0IHVucGFjazsKICAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CiAgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKIAotICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIHRpbWVvdXRfbXMpOworICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIENPTU1fV0FJVF9USU1FKTsKICAgaWYocmV0KQogICB7CiAgICAgcmV0ID0gUkNfUVJDT0RFX1FVRVJZX0ZBSUw7CkBAIC00NTMsNyArNDUwLDcgQEAKICAgdWludDggc2l6ZTsKICAgdWludDggY3RpbWVbNl07CiAgIHVpbnQ4IHN5c3RpbWVbN107Ci0gIHVpbnQ4IGxvZ2luX2ZsYWcgPSAwOworICB1aW50OCBsb2dpbl9mbGFnOwogICBjd191bnBhY2tfY29udGV4dCB1bnBhY2s7CiAgIHVucGFja19maWVsZF90IGZpZWxkOwogCkBAIC00NjIsNyArNDU5LDcgQEAKICAgICByZXR1cm4gcmVzcC0+cmV0Y29kZTsKICAgfQogICBwb3MtPmhlYXJ0YmVhdC5oZWFydF9zdGF0dXMgPSBIRUFSVF9SRUNWOwotCisgIGxvZ2luX2ZsYWcgPSAwOwogICBzcF91bnBhY2tfaW5pdCgmdW5wYWNrLHJlc3AtPmRhdGEscmVzcC0+ZGF0YWxlbik7CiAgIHNpemUgPSBzcF91bnBhY2tfbWFwX3NpemUoJnVucGFjayk7CiAgIHdoaWxlKHNpemUtLSA+IDApCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfY29uc3VtZS5jIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwppbmRleCBlMWE5YzQ2Li43OGRkMDJjIDEwMDY0NAotLS0gYS9zdXB3aXNkb20vc3BfY29uc3VtZS5jCisrKyBiL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKQEAgLTU3LDcgKzU3LDcgQEAKIAogdm9pZCBzcF90ZXN0X2NhcmRfc3RhdGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlLCB1aW50MzIgdGljaykKIHsKLSAgdWludDggcmV0ID0gMDsKKyAgdWludDggcmV0OwogICBzcF9jYXJkX3QgY2FyZHBjZDsKICAgc3dpdGNoKHBvcy0+Y2FyZFN0YXRlLmN1cl9zdGF0ZSkKICAgewpAQCAtMTk3LDcgKzE5Nyw3IEBACiAKIHN0YXRpYyB1aW50MTYgc3BfY2hlY2tfZGV2KGNvbnN0IHNwX3Bvc190KiBwb3MpCiB7Ci0gIHVpbnQxNiByZXQgPSAwOworICB1aW50MTYgcmV0OwogICB1aW50OCBjdGltZVs2XTsKICAgTUVNQ0xFQVIoY3RpbWUsIHNpemVvZihjdGltZSkpOwogICBzcF9nZXRfYmNkdGltZShjdGltZSk7CkBAIC0yMzAsNyArMjMwLDcgQEAKIAogc3RhdGljIHVpbnQxNiBkb19uZXcoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKQogewotICB1aW50MTYgcmV0ID0gMDsKKyAgdWludDE2IHJldDsKICAgc3BfdHJhbnNkdGxfdCByZWNvcmQ7CiAgIE1FTUNMRUFSKCZyZWNvcmQsIHNpemVvZihyZWNvcmQpKTsKICAgY2FyZC0+Y2FyZHR5cGUgPSBwb3MtPmNhcmRTdGF0ZS50YWdfdHlwZTsKQEAgLTI4OSw3ICsyODksNyBAQAogCiBzdGF0aWMgdWludDE2IGRvX3dvcmsoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKQogewotICB1aW50MTYgcmV0ID0gMDsKKyAgdWludDE2IHJldDsKICAgc3BfdmFsdmVfb24oKTsKICAgLy+8xsvjz/u30b3wtu4KICAgcmV0ID0gc3BfY2FsY19wYXlhbXRfYnlfZmxvd3NlbnNvcihwb3MsIGNhcmQpOwpAQCAtNjEzLDcgKzYxMyw3IEBACiB9CiAKIC8vtv7OrMLrz/u30bSmwO0KLXVpbnQzMiB0aWNrID0gMDsKK3N0YXRpYyB1aW50MzIgdGljayA9IDA7CiB2b2lkIHNwX3FyY29kZV9oYW5kbGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlKQogewogICB1aW50MTYgcmV0ID0gMDsK