ZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDg4ZDZiNDAuLjE4NGJkZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDEwIEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBweXNxbGl0ZS4KLSAqIAorICoKICAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCiAgKiB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCiAgKiBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgpAQCAtNDk1LDcgKzQ5NSw5IEBACiAgICAgfSBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHB5X3ZhbCkpIHsKICAgICAgICAgc3FsaXRlM19yZXN1bHRfZG91YmxlKGNvbnRleHQsIFB5RmxvYXRfQXNEb3VibGUocHlfdmFsKSk7CiAgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socHlfdmFsKSkgewotICAgICAgICBzcWxpdGUzX3Jlc3VsdF90ZXh0KGNvbnRleHQsIF9QeVVuaWNvZGVfQXNTdHJpbmcocHlfdmFsKSwgLTEsIFNRTElURV9UUkFOU0lFTlQpOworICAgICAgICBjaGFyICpzdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHB5X3ZhbCk7CisgICAgICAgIGlmIChzdHIgIT0gTlVMTCkKKyAgICAgICAgICAgIHNxbGl0ZTNfcmVzdWx0X3RleHQoY29udGV4dCwgc3RyLCAtMSwgU1FMSVRFX1RSQU5TSUVOVCk7CiAgICAgfSBlbHNlIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihweV92YWwpKSB7CiAgICAgICAgIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIocHlfdmFsLCAmYnVmZmVyLCAmYnVmbGVuKSAhPSAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNvdWxkIG5vdCBjb252ZXJ0IEJMT0IgdG8gYnVmZmVyIik7CkBAIC04OTIsNyArODk0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIGFib3J0IHF1ZXJ5IGlmIGVycm9yIG9jY3VycmVkICovCi0gICAgICAgIHJjID0gMTsgCisgICAgICAgIHJjID0gMTsKICAgICB9IGVsc2UgewogICAgICAgICByYyA9IChpbnQpUHlPYmplY3RfSXNUcnVlKHJldCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCmluZGV4IDU0MzExMTIuLjk3OTA4YTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKQEAgLTM2OCw3ICszNjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpIC0gMSwgIkNvdWxkIG5vdCBkZWNvZGUgdG8gVVRGLTggY29sdW1uICclcycgd2l0aCB0ZXh0ICclcyciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgLCB2YWxfc3RyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9ieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKGJ1Ziwgc3RybGVuKGJ1ZikpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9ieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKGJ1Ziwgc3RybGVuKGJ1ZikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFidWZfYnl0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgIkNvdWxkIG5vdCBkZWNvZGUgdG8gVVRGLTgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01MzMsNyArNTMzLDcgQEAKICAgICB9CiAKICAgICBvcGVyYXRpb25fY3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKG9wZXJhdGlvbiwgJm9wZXJhdGlvbl9sZW4pOwotICAgIGlmIChvcGVyYXRpb24gPT0gTlVMTCkKKyAgICBpZiAob3BlcmF0aW9uX2NzdHIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIHJlc2V0IGRlc2NyaXB0aW9uIGFuZCByb3djb3VudCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCmluZGV4IDBhYTc4ZjQuLjU0YTg5ZTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKQEAgLTgzLDYgKzgzLDggQEAKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soaWR4KSkgewogICAgICAgICBrZXkgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGlkeCk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgIG5pdGVtcyA9IFB5VHVwbGVfU2l6ZShzZWxmLT5kZXNjcmlwdGlvbik7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwppbmRleCA0OGUwMzliLi5jMDQwMjkwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCkBAIC0xMzAsNyArMTMwLDEwIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUWVBFX1VOSUNPREU6CiAgICAgICAgICAgICBzdHJpbmcgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHBhcmFtZXRlcik7Ci0gICAgICAgICAgICByYyA9IHNxbGl0ZTNfYmluZF90ZXh0KHNlbGYtPnN0LCBwb3MsIHN0cmluZywgLTEsIFNRTElURV9UUkFOU0lFTlQpOworICAgICAgICAgICAgaWYgKHN0cmluZyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHJjID0gc3FsaXRlM19iaW5kX3RleHQoc2VsZi0+c3QsIHBvcywgc3RyaW5nLCAtMSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmMgPSAtMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVfQlVGRkVSOgogICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcihwYXJhbWV0ZXIsICZidWZmZXIsICZidWZsZW4pID09IDApIHsK