ZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl90ZXh0LmNwcCBiL2ZwZGZzZGsvZnBkZl90ZXh0LmNwcAppbmRleCBiZGQ5ZmQzLi5lMjQ2NmE3IDEwMDY0NAotLS0gYS9mcGRmc2RrL2ZwZGZfdGV4dC5jcHAKKysrIGIvZnBkZnNkay9mcGRmX3RleHQuY3BwCkBAIC04MSw2ICs4MSwxNiBAQAogICByZXR1cm4gY2hhcmluZm8ubV9DaGFyVHlwZSA9PSBDUERGX1RleHRQYWdlOjpDaGFyVHlwZTo6a0dlbmVyYXRlZCA/IDEgOiAwOwogfQogCitGUERGX0VYUE9SVCBpbnQgRlBERl9DQUxMQ09OVgorRlBERlRleHRfSGFzVW5pY29kZU1hcEVycm9yKEZQREZfVEVYVFBBR0UgdGV4dF9wYWdlLCBpbnQgaW5kZXgpIHsKKyAgQ1BERl9UZXh0UGFnZSogdGV4dHBhZ2UgPSBHZXRUZXh0UGFnZUZvclZhbGlkSW5kZXgodGV4dF9wYWdlLCBpbmRleCk7CisgIGlmICghdGV4dHBhZ2UpCisgICAgcmV0dXJuIC0xOworCisgIGNvbnN0IENQREZfVGV4dFBhZ2U6OkNoYXJJbmZvJiBjaGFyaW5mbyA9IHRleHRwYWdlLT5HZXRDaGFySW5mbyhpbmRleCk7CisgIHJldHVybiBjaGFyaW5mby5tX0NoYXJUeXBlID09IENQREZfVGV4dFBhZ2U6OkNoYXJUeXBlOjprTm90VW5pY29kZTsKK30KKwogRlBERl9FWFBPUlQgZG91YmxlIEZQREZfQ0FMTENPTlYgRlBERlRleHRfR2V0Rm9udFNpemUoRlBERl9URVhUUEFHRSB0ZXh0X3BhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgpIHsKICAgQ1BERl9UZXh0UGFnZSogdGV4dHBhZ2UgPSBHZXRUZXh0UGFnZUZvclZhbGlkSW5kZXgodGV4dF9wYWdlLCBpbmRleCk7CmRpZmYgLS1naXQgYS9mcGRmc2RrL2ZwZGZfdGV4dF9lbWJlZGRlcnRlc3QuY3BwIGIvZnBkZnNkay9mcGRmX3RleHRfZW1iZWRkZXJ0ZXN0LmNwcAppbmRleCAwZmUwYTk5Li4yZTJjM2ZkIDEwMDY0NAotLS0gYS9mcGRmc2RrL2ZwZGZfdGV4dF9lbWJlZGRlcnRlc3QuY3BwCisrKyBiL2ZwZGZzZGsvZnBkZl90ZXh0X2VtYmVkZGVydGVzdC5jcHAKQEAgLTk4Myw2ICs5ODMsMzYgQEAKICAgVW5sb2FkUGFnZShwYWdlKTsKIH0KIAorVEVTVF9GKEZQREZUZXh0RW1iZWRkZXJUZXN0LCBJc0ludmFsaWRVbmljb2RlKSB7CisgIEFTU0VSVF9UUlVFKE9wZW5Eb2N1bWVudCgiYnVnXzEzODhfMi5wZGYiKSk7CisgIEZQREZfUEFHRSBwYWdlID0gTG9hZFBhZ2UoMCk7CisgIEFTU0VSVF9UUlVFKHBhZ2UpOworCisgIHsKKyAgICBjb25zdGV4cHIgaW50IGtFeHBlY3RlZENoYXJDb3VudCA9IDU7CisgICAgU2NvcGVkRlBERlRleHRQYWdlIHRleHRwYWdlKEZQREZUZXh0X0xvYWRQYWdlKHBhZ2UpKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXh0cGFnZSk7CisgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENoYXJDb3VudCwgRlBERlRleHRfQ291bnRDaGFycyh0ZXh0cGFnZS5nZXQoKSkpOworCisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oJ1gnKSwKKyAgICAgICAgICAgICAgRlBERlRleHRfR2V0VW5pY29kZSh0ZXh0cGFnZS5nZXQoKSwgMCkpOworICAgIEVYUEVDVF9FUSgwLCBGUERGVGV4dF9IYXNVbmljb2RlTWFwRXJyb3IodGV4dHBhZ2UuZ2V0KCksIDApKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PignICcpLAorICAgICAgICAgICAgICBGUERGVGV4dF9HZXRVbmljb2RlKHRleHRwYWdlLmdldCgpLCAxKSk7CisgICAgRVhQRUNUX0VRKDAsIEZQREZUZXh0X0hhc1VuaWNvZGVNYXBFcnJvcih0ZXh0cGFnZS5nZXQoKSwgMSkpOworCisgICAgRVhQRUNUX0VRKDMxdSwgRlBERlRleHRfR2V0VW5pY29kZSh0ZXh0cGFnZS5nZXQoKSwgMikpOworICAgIEVYUEVDVF9FUSgxLCBGUERGVGV4dF9IYXNVbmljb2RlTWFwRXJyb3IodGV4dHBhZ2UuZ2V0KCksIDIpKTsKKworICAgIEVYUEVDVF9FUSgtMSwgRlBERlRleHRfSGFzVW5pY29kZU1hcEVycm9yKHRleHRwYWdlLmdldCgpLCAtMSkpOworICAgIEVYUEVDVF9FUSgtMSwKKyAgICAgICAgICAgICAgRlBERlRleHRfSGFzVW5pY29kZU1hcEVycm9yKHRleHRwYWdlLmdldCgpLCBrRXhwZWN0ZWRDaGFyQ291bnQpKTsKKyAgICBFWFBFQ1RfRVEoLTEsIEZQREZUZXh0X0hhc1VuaWNvZGVNYXBFcnJvcihudWxscHRyLCAwKSk7CisgIH0KKworICBVbmxvYWRQYWdlKHBhZ2UpOworfQorCiBURVNUX0YoRlBERlRleHRFbWJlZGRlclRlc3QsIEJ1Z185MjEpIHsKICAgQVNTRVJUX1RSVUUoT3BlbkRvY3VtZW50KCJidWdfOTIxLnBkZiIpKTsKICAgRlBERl9QQUdFIHBhZ2UgPSBMb2FkUGFnZSgwKTsKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl92aWV3X2NfYXBpX3Rlc3QuYyBiL2ZwZGZzZGsvZnBkZl92aWV3X2NfYXBpX3Rlc3QuYwppbmRleCAyMzU4NmM0Li4zOTQ3YmQzIDEwMDY0NAotLS0gYS9mcGRmc2RrL2ZwZGZfdmlld19jX2FwaV90ZXN0LmMKKysrIGIvZnBkZnNkay9mcGRmX3ZpZXdfY19hcGlfdGVzdC5jCkBAIC00MjcsNiArNDI3LDcgQEAKICAgICBDSEsoRlBERlRleHRfR2V0VGV4dCk7CiAgICAgQ0hLKEZQREZUZXh0X0dldFRleHRSZW5kZXJNb2RlKTsKICAgICBDSEsoRlBERlRleHRfR2V0VW5pY29kZSk7CisgICAgQ0hLKEZQREZUZXh0X0hhc1VuaWNvZGVNYXBFcnJvcik7CiAgICAgQ0hLKEZQREZUZXh0X0lzR2VuZXJhdGVkKTsKICAgICBDSEsoRlBERlRleHRfTG9hZFBhZ2UpOwogCmRpZmYgLS1naXQgYS9wdWJsaWMvZnBkZl90ZXh0LmggYi9wdWJsaWMvZnBkZl90ZXh0LmgKaW5kZXggMjJmMjVlOS4uZmI1ZjM0MiAxMDA2NDQKLS0tIGEvcHVibGljL2ZwZGZfdGV4dC5oCisrKyBiL3B1YmxpYy9mcGRmX3RleHQuaApAQCAtODksNiArODksMjEgQEAKIEZQREZfRVhQT1JUIGludCBGUERGX0NBTExDT05WCiBGUERGVGV4dF9Jc0dlbmVyYXRlZChGUERGX1RFWFRQQUdFIHRleHRfcGFnZSwgaW50IGluZGV4KTsKIAorLy8gRXhwZXJpbWVudGFsIEFQSS4KKy8vIEZ1bmN0aW9uOiBGUERGVGV4dF9IYXNVbmljb2RlTWFwRXJyb3IKKy8vICAgICAgICAgIEdldCBpZiBhIGNoYXJhY3RlciBpbiBhIHBhZ2UgaGFzIGFuIGludmFsaWQgdW5pY29kZSBtYXBwaW5nLgorLy8gUGFyYW1ldGVyczoKKy8vICAgICAgICAgIHRleHRfcGFnZSAgIC0gICBIYW5kbGUgdG8gYSB0ZXh0IHBhZ2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybmVkIGJ5IEZQREZUZXh0X0xvYWRQYWdlIGZ1bmN0aW9uLgorLy8gICAgICAgICAgaW5kZXggICAgICAgLSAgIFplcm8tYmFzZWQgaW5kZXggb2YgdGhlIGNoYXJhY3Rlci4KKy8vIFJldHVybiB2YWx1ZToKKy8vICAgICAgICAgIDEgaWYgdGhlIGNoYXJhY3RlciBoYXMgYW4gaW52YWxpZCB1bmljb2RlIG1hcHBpbmcuCisvLyAgICAgICAgICAwIGlmIHRoZSBjaGFyYWN0ZXIgaGFzIG5vIGtub3duIHVuaWNvZGUgbWFwcGluZyBpc3N1ZXMuCisvLyAgICAgICAgICAtMSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworRlBERl9FWFBPUlQgaW50IEZQREZfQ0FMTENPTlYKK0ZQREZUZXh0X0hhc1VuaWNvZGVNYXBFcnJvcihGUERGX1RFWFRQQUdFIHRleHRfcGFnZSwgaW50IGluZGV4KTsKKwogLy8gRnVuY3Rpb246IEZQREZUZXh0X0dldEZvbnRTaXplCiAvLyAgICAgICAgICBHZXQgdGhlIGZvbnQgc2l6ZSBvZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyLgogLy8gUGFyYW1ldGVyczoKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xMzg4XzIucGRmIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzEzODhfMi5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlZTA4OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xMzg4XzIucGRmCkBAIC0wLDAgKzEsODAgQEAKKyVQREYtMS43CisloPKk9AorMSAwIG9iaiA8PAorICAvVHlwZSAvQ2F0YWxvZworICAvUGFnZXMgMiAwIFIKKz4+CitlbmRvYmoKKzIgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2VzCisgIC9Db3VudCAxCisgIC9LaWRzIFszIDAgUl0KKz4+CitlbmRvYmoKKzMgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvQ29udGVudHMgNCAwIFIKKyAgL01lZGlhQm94IFswIDAgMjAwIDIwMF0KKyAgL1Jlc291cmNlcyA8PAorICAgIC9Qcm9jU2V0IFsvUERGIC9UZXh0XQorICAgIC9Gb250IDw8CisgICAgICAvVFQyIDUgMCBSCisgICAgPj4KKyAgPj4KKz4+CitlbmRvYmoKKzQgMCBvYmogPDwKKyAgL0xlbmd0aCA0MAorPj4KK3N0cmVhbQorQlQKKy9UVDIgMTIgVGYKKzQwIDEwMCBUZAorWyhYIB8gWCldIFRKCitFVAorZW5kc3RyZWFtCitlbmRvYmoKKzUgMCBvYmogPDwKKyAgL1R5cGUgL0ZvbnQKKyAgL1N1YnR5cGUgL1RydWVUeXBlCisgIC9CYXNlRm9udCAvVGltZXNOZXdSb21hblBTTVQKKyAgL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKKyAgL0ZpcnN0Q2hhciAzMQorICAvRm9udERlc2NyaXB0b3IgNiAwIFIKKyAgL0xhc3RDaGFyIDI1MgorPj4KK2VuZG9iagorNiAwIG9iaiA8PAorICAvVHlwZSAvRm9udERlc2NyaXB0b3IKKyAgL0FzY2VudCA4OTEKKyAgL0NhcEhlaWdodCA2NTYKKyAgL0Rlc2NlbnQgLTIxNgorICAvRmxhZ3MgMzQKKyAgL0ZvbnRCQm94IFstNTY4IC0zMDcgMjAwMCAxMDA3XQorICAvRm9udEZhbWlseSAoVGltZXMgTmV3IFJvbWFuKQorICAvRm9udE5hbWUgL1RpbWVzTmV3Um9tYW5QU01UCisgIC9Gb250U3RyZXRjaCAvTm9ybWFsCisgIC9Gb250V2VpZ2h0IDQwMAorICAvSXRhbGljQW5nbGUgMAorICAvTWlzc2luZ1dpZHRoIDc3OAorICAvU3RlbVYgODIKKyAgL1hIZWlnaHQgLTU0NgorPj4KK2VuZG9iagoreHJlZgorMCA3CiswMDAwMDAwMDAwIDY1NTM1IGYgCiswMDAwMDAwMDE1IDAwMDAwIG4gCiswMDAwMDAwMDY4IDAwMDAwIG4gCiswMDAwMDAwMTMxIDAwMDAwIG4gCiswMDAwMDAwMzEwIDAwMDAwIG4gCiswMDAwMDAwNDAxIDAwMDAwIG4gCiswMDAwMDAwNTczIDAwMDAwIG4gCit0cmFpbGVyIDw8CisgIC9Sb290IDEgMCBSCisgIC9TaXplIDcKKz4+CitzdGFydHhyZWYKKzg4MAorJSVFT0YK