ZGlmZiAtLWdpdCBhL01hYy9QeXRob24vbWFjc2hsZ2x1ZS5jIGIvTWFjL1B5dGhvbi9tYWNzaGxnbHVlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4ODVkNAotLS0gL2Rldi9udWxsCisrKyBiL01hYy9QeXRob24vbWFjc2hsZ2x1ZS5jCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisqKiBtYWMgc2hhcmVkIGxpYiBnbHVlLgorKioKKyoqIFBhcnRpYWxseSBzdG9sZW4gZnJvbSBNVyBTdGFydHVwLmMsIHdoaWNoIGlzCisqKglDb3B5cmlnaHQgqSAxOTkzIG1ldHJvd2Vya3MgaW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorKi8KKworI2luY2x1ZGUgPENQbHVzTGliUFBDLmg+CisjaW5jbHVkZSA8UXVpY2tkcmF3Lmg+CisjaW5jbHVkZSA8U2VnTG9hZC5oPgorI2luY2x1ZGUgPHNldGptcC5oPgorI2luY2x1ZGUgPEZyYWdMb2FkLmg+CisjaW5jbHVkZSA8RmlsZXMuaD4KKyNpbmNsdWRlIDxSZXNvdXJjZXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2NoYXIgKm1hY3N0cmVycm9yKCk7CisKK0Rlc3RydWN0b3JDaGFpbgkqX19sb2NhbF9kZXN0cnVjdG9yX2NoYWluOwkvKgljaGFpbiBvZiBsb2NhbCBvYmplY3RzIHRoYXQgbmVlZCBkZXN0cnVjdGlvbgkqLworCisJLyoJcHVibGljIGRhdGEJCSovCisKK1FER2xvYmFscyBxZDsJCQkJCQkvKglkZWZpbmUgdGhlIFF1aWNrZHJhdyBnbG9iYWxzIGhlcmUhCSovCitqbXBfYnVmIF9fcHJvZ3JhbV9leGl0OwkJCQkvKglleGl0KCkgZG9lcyBhIGxvbmdqbXAoKSB0byBoZXJlCQkqLwordm9pZCAoKl9fYXRleGl0X2hvb2spKHZvaWQpOwkJLyoJYXRleGl0KCkgIHNldHMgdGhpcyB1cCBpZiBpdCBpcyBldmVyIGNhbGxlZAkqLwordm9pZCAoKl9fX2F0ZXhpdF9ob29rKSh2b2lkKTsJCS8qCV9hdGV4aXQoKSBzZXRzIHRoaXMgdXAgaWYgaXQgaXMgZXZlciBjYWxsZWQJKi8KK2ludCBfX2Fib3J0aW5nOwkJCQkJCS8qCWFib3J0KCkgc2V0cyB0aGlzIGFuZCBsb25nam1wcyB0byBfX3Byb2dyYW1fZXhpdAkqLworCitpbnQgbGlicmFyeV9mc3NfdmFsaWQ7CitGU1NwZWMgbGlicmFyeV9mc3M7CisvKgorKiogUm91dGluZSBjYWxsZWQgdXBvbiBmcmFnbWVudCBsb2FkLiBXZSBhdHRlbXB0IHRvIHNhdmUgdGhlIEZTU3BlYyBmcm9tIHdoaWNoIHdlJ3JlCisqKiBsb2FkZWQuIFdlIGFsd2F5cyByZXR1cm4gbm9FcnIgKHdlIGp1c3QgY29udGludWUgd2l0aG91dCB0aGUgcmVzb3VyY2VzKS4KKyovCitPU0VycgorX19zaW5pdChJbml0QmxvY2tQdHIgZGF0YSkKK3sKKwlpZiAoIGRhdGEgPT0gTlVMTCApIHJldHVybiBub0VycjsKKwlpZiAoIGRhdGEtPmZyYWdMb2NhdG9yLndoZXJlID09IGtPbkRpc2tGbGF0ICkgeworCQlsaWJyYXJ5X2ZzcyA9ICpkYXRhLT5mcmFnTG9jYXRvci51Lm9uRGlzay5maWxlU3BlYzsKKwkJbGlicmFyeV9mc3NfdmFsaWQgPSAxOworCX0gZWxzZSBpZiAoIGRhdGEtPmZyYWdMb2NhdG9yLndoZXJlID09IGtPbkRpc2tTZWdtZW50ZWQgKSB7CisJCWxpYnJhcnlfZnNzID0gKmRhdGEtPmZyYWdMb2NhdG9yLnUuaW5TZWdzLmZpbGVTcGVjOworCQlsaWJyYXJ5X2Zzc192YWxpZCA9IDE7CisJfQorCXJldHVybiBub0VycjsKK30KKworLyoKKyoqIEluc2VydCB0aGUgbGlicmFyeSByZXNvdXJjZXMgaW50byB0aGUgc2VhcmNoIHBhdGguIFB1dCB0aGVtIGFmdGVyCisqKiB0aGUgcmVzb3VyY2VzIGZyb20gdGhlIGFwcGxpY2F0aW9uICh3aGljaCB3ZSBhc3N1bWUgaXMgdGhlIGN1cnJlbnQKKyoqIHJlc291cmNlIGZpbGUpLiBBZ2Fpbiwgd2UgaWdub3JlIGVycm9ycy4KKyovCit2b2lkCitQeU1hY19BZGRMaWJSZXNvdXJjZXMoKQoreworCU9TRXJyIGVycjsKKwlzaG9ydCBmZCwgY3VyZmQ7CisJCisJaWYgKCAhbGlicmFyeV9mc3NfdmFsaWQgKSAKKwkJcmV0dXJuOworCWZkID0gRlNwT3BlblJlc0ZpbGUoJmxpYnJhcnlfZnNzLCBmc1JkV3JTaFBlcm0pOworfQorICAgCQo=