ZGlmZiAtLWdpdCBhL3NyYy9kaWdyYXBoLmMgYi9zcmMvZGlncmFwaC5jCmluZGV4IGI4Njc1OTguLjc0YjdmYjIgMTAwNjQ0Ci0tLSBhL3NyYy9kaWdyYXBoLmMKKysrIGIvc3JjL2RpZ3JhcGguYwpAQCAtMzIsNyArMzIsNyBAQAogc3RhdGljIHZvaWQgcHJpbnRkaWdyYXBoIF9fQVJHUygoZGlncl9UICopKTsKIAogLyogZGlncmFwaHMgYWRkZWQgYnkgdGhlIHVzZXIgKi8KLXN0YXRpYyBnYXJyYXlfVAl1c2VyX2RpZ3JhcGhzID0gezAsIDAsIHNpemVvZihkaWdyX1QpLCAxMCwgTlVMTH07CitzdGF0aWMgZ2FycmF5X1QJdXNlcl9kaWdyYXBocyA9IHswLCAwLCAoaW50KXNpemVvZihkaWdyX1QpLCAxMCwgTlVMTH07CiAKIC8qCiAgKiBOb3RlOiBDaGFyYWN0ZXJzIG1hcmtlZCB3aXRoIFhYIGFyZSBub3QgaW5jbHVkZWQgbGl0ZXJhbGx5LCBiZWNhdXNlIHNvbWUKQEAgLTQ4MSw3ICs0ODEsNyBAQAogCXsnXCcnLCAnICcsIDIxM30sCS8qICcgKi8KIAl7Jy0nLCAnOicsIDIxNH0sCS8qIPcgKi8KIAl7J0QnLCAnSScsIDIxNX0sCS8qINcgKi8KLQl7J3knLCAnOicsIDIxNn0sCS8qIP8gKi8KKwl7J3knLCAnOicsIDIxNn0sCS8qIDw4ZT4gKi8KIAl7J1knLCAnOicsIDIxN30sCS8qII0gKi8KIAl7Jy8nLCAnLycsIDIxOH0sCS8qII4gKi8KIAl7J0UnLCAnPScsIDIxOX0sCS8qIKQgRXVybyBTeXN0ZW0gPj04LjUgKi8KQEAgLTIzNzEsMTAgKzIzNzEsMTAgQEAKIAl9CiAJZWxzZQogI2VuZGlmCi0JICAgICpwKysgPSBkcC0+cmVzdWx0OworCSAgICAqcCsrID0gKGNoYXJfdSlkcC0+cmVzdWx0OwogCWlmIChjaGFyMmNlbGxzKGRwLT5yZXN1bHQpID09IDEpCiAJICAgICpwKysgPSAnICc7Ci0Jc3ByaW50ZigoY2hhciAqKXAsICIgJTNkIiwgZHAtPnJlc3VsdCk7CisJdmltX3NucHJpbnRmKChjaGFyICopcCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksICIgJTNkIiwgZHAtPnJlc3VsdCk7CiAJbXNnX291dHRyYW5zKGJ1Zik7CiAgICAgfQogfQpAQCAtMjM5NSw3ICsyMzk1LDEwIEBACiBzdGF0aWMgdm9pZCBrZXltYXBfdW5sb2FkIF9fQVJHUygodm9pZCkpOwogCiAvKgotICogU2V0IHVwIGtleSBtYXBwaW5nIHRhYmxlcyBmb3IgdGhlICdrZXltYXAnIG9wdGlvbgorICogU2V0IHVwIGtleSBtYXBwaW5nIHRhYmxlcyBmb3IgdGhlICdrZXltYXAnIG9wdGlvbi4KKyAqIFJldHVybnMgTlVMTCBpZiBPSywgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZmFpbHVyZS4gIFRoaXMgb25seSBuZWVkcyB0byBiZQorICogdXNlZCB3aGVuIHNldHRpbmcgdGhlIG9wdGlvbiwgbm90IGxhdGVyIHdoZW4gdGhlIHZhbHVlIGhhcyBhbHJlYWR5IGJlZW4KKyAqIGNoZWNrZWQuCiAgKi8KICAgICBjaGFyX3UgKgoga2V5bWFwX2luaXQoKQpAQCAtMjQxMiwyNSArMjQxNSwyOSBAQAogICAgIGVsc2UKICAgICB7CiAJY2hhcl91CSpidWY7CisJc2l6ZV90ICBidWZsZW47CiAKIAkvKiBTb3VyY2UgdGhlIGtleW1hcCBmaWxlLiAgSXQgd2lsbCBjb250YWluIGEgIjpsb2Fka2V5bWFwIiBjb21tYW5kCiAJICogd2hpY2ggd2lsbCBjYWxsIGV4X2xvYWRrZXltYXAoKSBiZWxvdy4gKi8KLQlidWYgPSBhbGxvYygodW5zaWduZWQpKFNUUkxFTihjdXJidWYtPmJfcF9rZXltYXApCisJYnVmbGVuID0gU1RSTEVOKGN1cmJ1Zi0+Yl9wX2tleW1hcCkKICMgaWZkZWYgRkVBVF9NQllURQotCQkJCQkJICAgICAgICsgU1RSTEVOKHBfZW5jKQorCQkJCQkgICArIFNUUkxFTihwX2VuYykKICMgZW5kaWYKLQkJCQkJCSAgICAgICArIDE0KSk7CisJCQkJCQkgICAgICAgKyAxNDsKKwlidWYgPSBhbGxvYygodW5zaWduZWQpYnVmbGVuKTsKIAlpZiAoYnVmID09IE5VTEwpCiAJICAgIHJldHVybiBlX291dG9mbWVtOwogCiAjIGlmZGVmIEZFQVRfTUJZVEUKIAkvKiB0cnkgZmluZGluZyAia2V5bWFwLydrZXltYXAnXydlbmNvZGluZycudmltIiAgaW4gJ3J1bnRpbWVwYXRoJyAqLwotCXNwcmludGYoKGNoYXIgKilidWYsICJrZXltYXAvJXNfJXMudmltIiwgY3VyYnVmLT5iX3Bfa2V5bWFwLCBwX2VuYyk7CisJdmltX3NucHJpbnRmKChjaGFyICopYnVmLCBidWZsZW4sICJrZXltYXAvJXNfJXMudmltIiwKKwkJCQkJCSAgIGN1cmJ1Zi0+Yl9wX2tleW1hcCwgcF9lbmMpOwogCWlmIChzb3VyY2VfcnVudGltZShidWYsIEZBTFNFKSA9PSBGQUlMKQogIyBlbmRpZgogCXsKIAkgICAgLyogdHJ5IGZpbmRpbmcgImtleW1hcC8na2V5bWFwJy52aW0iIGluICdydW50aW1lcGF0aCcgICovCi0JICAgIHNwcmludGYoKGNoYXIgKilidWYsICJrZXltYXAvJXMudmltIiwgY3VyYnVmLT5iX3Bfa2V5bWFwKTsKKwkgICAgdmltX3NucHJpbnRmKChjaGFyICopYnVmLCBidWZsZW4sICJrZXltYXAvJXMudmltIiwKKwkJCQkJCQkgIGN1cmJ1Zi0+Yl9wX2tleW1hcCk7CiAJICAgIGlmIChzb3VyY2VfcnVudGltZShidWYsIEZBTFNFKSA9PSBGQUlMKQogCSAgICB7CiAJCXZpbV9mcmVlKGJ1Zik7Cg==