ZGlmZiAtLWdpdCBhL2NvcmUvZnBkZnRleHQvY3BkZl90ZXh0cGFnZS5jcHAgYi9jb3JlL2ZwZGZ0ZXh0L2NwZGZfdGV4dHBhZ2UuY3BwCmluZGV4IDU0NjUyOTcuLjhjMTEwYjYgMTAwNjQ0Ci0tLSBhL2NvcmUvZnBkZnRleHQvY3BkZl90ZXh0cGFnZS5jcHAKKysrIGIvY29yZS9mcGRmdGV4dC9jcGRmX3RleHRwYWdlLmNwcApAQCAtNTEwLDE1ICs1MTAsMzYgQEAKICAgICByZXR1cm4gTCIiOwogICB9CiAKKyAgY29uc3QgaW50IGNvdW50X2NoYXJzID0gQ291bnRDaGFycygpOwogICBpbnQgdGV4dF9zdGFydCA9IFRleHRJbmRleEZyb21DaGFySW5kZXgoc3RhcnQpOwotICBpZiAodGV4dF9zdGFydCA8IDApCi0gICAgcmV0dXJuIEwiIjsKIAotICBjb3VudCA9IHN0ZDo6bWluKGNvdW50LCBDb3VudENoYXJzKCkgLSBzdGFydCk7CisgIC8vIElmIHRoZSBjaGFyYWN0ZXIgYXQgfHN0YXJ0fCBpcyBhIG5vbi1wcmludGluZyBjaGFyYWN0ZXIsIHRoZW4KKyAgLy8gVGV4dEluZGV4RnJvbUNoYXJJbmRleCB3aWxsIHJldHVybiAtMSwgc28gc2NhbiBhaGVhZCB0byB0aGUgZmlyc3QgcHJpbnRpbmcKKyAgLy8gY2hhcmFjdGVyLgorICB3aGlsZSAodGV4dF9zdGFydCA8IDApIHsKKyAgICBpZiAoc3RhcnQgPj0gY291bnRfY2hhcnMpCisgICAgICByZXR1cm4gTCIiOworICAgIHN0YXJ0Kys7CisgICAgdGV4dF9zdGFydCA9IFRleHRJbmRleEZyb21DaGFySW5kZXgoc3RhcnQpOworICB9CisKKyAgY291bnQgPSBzdGQ6Om1pbihjb3VudCwgY291bnRfY2hhcnMgLSBzdGFydCk7CiAKICAgaW50IGxhc3QgPSBzdGFydCArIGNvdW50IC0gMTsKICAgaW50IHRleHRfbGFzdCA9IFRleHRJbmRleEZyb21DaGFySW5kZXgobGFzdCk7Ci0gIGlmICh0ZXh0X2xhc3QgPCAwIHx8IHRleHRfbGFzdCA8IHRleHRfc3RhcnQpCisKKyAgLy8gSWYgdGhlIGNoYXJhY3RlciBhdCB8bGFzdHwgaXMgYSBub24tcHJpbnRpbmcgY2hhcmFjdGVyLCB0aGVuCisgIC8vIFRleHRJbmRleEZyb21DaGFySW5kZXggd2lsbCByZXR1cm4gLTEsIHNvIHNjYW4gYmFjayB0byB0aGUgbGFzdCBwcmludGluZworICAvLyBjaGFyYWN0ZXIuCisgIHdoaWxlICh0ZXh0X2xhc3QgPCAwKSB7CisgICAgaWYgKGxhc3QgPCB0ZXh0X3N0YXJ0KQorICAgICAgcmV0dXJuIEwiIjsKKworICAgIGxhc3QtLTsKKyAgICB0ZXh0X2xhc3QgPSBUZXh0SW5kZXhGcm9tQ2hhckluZGV4KGxhc3QpOworICB9CisKKyAgaWYgKHRleHRfbGFzdCA8IHRleHRfc3RhcnQpCiAgICAgcmV0dXJuIEwiIjsKIAogICBpbnQgdGV4dF9jb3VudCA9IHRleHRfbGFzdCAtIHRleHRfc3RhcnQgKyAxOwpkaWZmIC0tZ2l0IGEvZnBkZnNkay9mcGRmX3RleHRfZW1iZWRkZXJ0ZXN0LmNwcCBiL2ZwZGZzZGsvZnBkZl90ZXh0X2VtYmVkZGVydGVzdC5jcHAKaW5kZXggODNiNDNkOS4uMWYyOTU4OSAxMDA2NDQKLS0tIGEvZnBkZnNkay9mcGRmX3RleHRfZW1iZWRkZXJ0ZXN0LmNwcAorKysgYi9mcGRmc2RrL2ZwZGZfdGV4dF9lbWJlZGRlcnRlc3QuY3BwCkBAIC05NDQsMyArOTQ0LDI2IEBACiAgICAgVW5sb2FkUGFnZShwYWdlKTsKICAgfQogfQorCitURVNUX0YoRlBERlRleHRFbWJlZGRlcnRlc3QsIEJ1Z18xMTM5KSB7CisgIEFTU0VSVF9UUlVFKE9wZW5Eb2N1bWVudCgiYnVnXzExMzkucGRmIikpOworICBGUERGX1BBR0UgcGFnZSA9IExvYWRQYWdlKDApOworICBBU1NFUlRfVFJVRShwYWdlKTsKKworICBGUERGX1RFWFRQQUdFIHRleHRfcGFnZSA9IEZQREZUZXh0X0xvYWRQYWdlKHBhZ2UpOworICBBU1NFUlRfVFJVRSh0ZXh0X3BhZ2UpOworCisgIC8vIC0xIGZvciBDb3VudENoYXJzIG5vdCBpbmNsdWRpbmcgdGhlIFwwLCBidXQgKzEgZm9yIHRoZSBleHRyYSBjb250cm9sCisgIC8vIGNoYXJhY3Rlci4KKyAgRVhQRUNUX0VRKGtIZWxsb0dvb2RieWVUZXh0U2l6ZSwgRlBERlRleHRfQ291bnRDaGFycyh0ZXh0X3BhZ2UpKTsKKworICAvLyBUaGVyZSBpcyBhbiBleHRyYSBjb250cm9sIGNoYXJhY3RlciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcsIGJ1dCBpdAorICAvLyBzaG91bGQgbm90IGFwcGVhciBpbiB0aGUgb3V0cHV0IG5vciBwcmV2ZW50IGV4dHJhY3RpbmcgdGhlIHRleHQuCisgIHVuc2lnbmVkIHNob3J0IGJ1ZmZlclsxMjhdOworICBpbnQgbnVtX2NoYXJzID0gRlBERlRleHRfR2V0VGV4dCh0ZXh0X3BhZ2UsIDAsIDEyOCwgYnVmZmVyKTsKKyAgQVNTRVJUX0VRKGtIZWxsb0dvb2RieWVUZXh0U2l6ZSwgbnVtX2NoYXJzKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBjaGVja191bnNpZ25lZF9zaG9ydHMoa0hlbGxvR29vZGJ5ZVRleHQsIGJ1ZmZlciwga0hlbGxvR29vZGJ5ZVRleHRTaXplKSk7CisgIEZQREZUZXh0X0Nsb3NlUGFnZSh0ZXh0X3BhZ2UpOworICBVbmxvYWRQYWdlKHBhZ2UpOworfQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzExMzkuaW4gYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfMTEzOS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTYwM2YwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzExMzkuaW4KQEAgLTAsMCArMSw1NSBAQAore3toZWFkZXJ9fQore3tvYmplY3QgMSAwfX0gPDwKKyAgL1R5cGUgL0NhdGFsb2cKKyAgL1BhZ2VzIDIgMCBSCis+PgorZW5kb2JqCit7e29iamVjdCAyIDB9fSA8PAorICAvVHlwZSAvUGFnZXMKKyAgL01lZGlhQm94IFsgMCAwIDIwMCAyMDAgXQorICAvQ291bnQgMQorICAvS2lkcyBbIDMgMCBSIF0KKz4+CitlbmRvYmoKK3t7b2JqZWN0IDMgMH19IDw8CisgIC9UeXBlIC9QYWdlCisgIC9QYXJlbnQgMiAwIFIKKyAgL1Jlc291cmNlcyA8PAorICAgIC9Gb250IDw8CisgICAgICAvRjEgNCAwIFIKKyAgICAgIC9GMiA1IDAgUgorICAgID4+CisgID4+CisgIC9Db250ZW50cyA2IDAgUgorPj4KK2VuZG9iagore3tvYmplY3QgNCAwfX0gPDwKKyAgL1R5cGUgL0ZvbnQKKyAgL1N1YnR5cGUgL1R5cGUxCisgIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KKz4+CitlbmRvYmoKK3t7b2JqZWN0IDUgMH19IDw8CisgIC9UeXBlIC9Gb250CisgIC9TdWJ0eXBlIC9UeXBlMQorICAvQmFzZUZvbnQgL0hlbHZldGljYQorPj4KK2VuZG9iagore3tvYmplY3QgNiAwfX0gPDwKKz4+CitzdHJlYW0KK3N0cmVhbQorQlQKKzIwIDUwIFRkCisvRjEgMTIgVGYKKyhcMDAzSGVsbG8sIHdvcmxkISkgVGoKKzAgNTAgVGQKKy9GMiAxNiBUZgorKEdvb2RieWUsIHdvcmxkISkgVGoKK0VUCitlbmRzdHJlYW0KK2VuZG9iagore3t4cmVmfX0KK3t7dHJhaWxlcn19Cit7e3N0YXJ0eHJlZn19CislJUVPRgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzExMzkucGRmIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzExMzkucGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTY5NWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfMTEzOS5wZGYKQEAgLTAsMCArMSw2OCBAQAorJVBERi0xLjcKKyWg8qT0CisxIDAgb2JqIDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9QYWdlcyAyIDAgUgorPj4KK2VuZG9iagorMiAwIG9iaiA8PAorICAvVHlwZSAvUGFnZXMKKyAgL01lZGlhQm94IFsgMCAwIDIwMCAyMDAgXQorICAvQ291bnQgMQorICAvS2lkcyBbIDMgMCBSIF0KKz4+CitlbmRvYmoKKzMgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvUmVzb3VyY2VzIDw8CisgICAgL0ZvbnQgPDwKKyAgICAgIC9GMSA0IDAgUgorICAgICAgL0YyIDUgMCBSCisgICAgPj4KKyAgPj4KKyAgL0NvbnRlbnRzIDYgMCBSCis+PgorZW5kb2JqCis0IDAgb2JqIDw8CisgIC9UeXBlIC9Gb250CisgIC9TdWJ0eXBlIC9UeXBlMQorICAvQmFzZUZvbnQgL1RpbWVzLVJvbWFuCis+PgorZW5kb2JqCis1IDAgb2JqIDw8CisgIC9UeXBlIC9Gb250CisgIC9TdWJ0eXBlIC9UeXBlMQorICAvQmFzZUZvbnQgL0hlbHZldGljYQorPj4KK2VuZG9iagorNiAwIG9iaiA8PAorPj4KK3N0cmVhbQorc3RyZWFtCitCVAorMjAgNTAgVGQKKy9GMSAxMiBUZgorKFwwMDNIZWxsbywgd29ybGQhKSBUagorMCA1MCBUZAorL0YyIDE2IFRmCisoR29vZGJ5ZSwgd29ybGQhKSBUagorRVQKK2VuZHN0cmVhbQorZW5kb2JqCit4cmVmCiswIDcKKzAwMDAwMDAwMDAgNjU1MzUgZiAKKzAwMDAwMDAwMTUgMDAwMDAgbiAKKzAwMDAwMDAwNjggMDAwMDAgbiAKKzAwMDAwMDAxNjEgMDAwMDAgbiAKKzAwMDAwMDAzMDMgMDAwMDAgbiAKKzAwMDAwMDAzODEgMDAwMDAgbiAKKzAwMDAwMDA0NTcgMDAwMDAgbiAKK3RyYWlsZXIgPDwKKyAgL1Jvb3QgMSAwIFIKKyAgL1NpemUgNworPj4KK3N0YXJ0eHJlZgorNTg5CislJUVPRgo=