ZGlmZiAtLWdpdCBhL3NyYy9JTlNUQUxMcGMudHh0IGIvc3JjL0lOU1RBTExwYy50eHQKaW5kZXggMTA2Yzc2Ny4uZDJhM2UyOCAxMDA2NDQKLS0tIGEvc3JjL0lOU1RBTExwYy50eHQKKysrIGIvc3JjL0lOU1RBTExwYy50eHQKQEAgLTE0Myw4ICsxNDMsNyBAQAogVmlzdWFsIEMrKyAyMDA1IEV4cHJlc3MgRWRpdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1WaXN1YWwgQysrIDIwMDUgRXhwcmVzcyBFZGl0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlCi1iZWZvcmUgTm92ZW1iZXIgMjAwNiBmcm9tCitWaXN1YWwgQysrIDIwMDUgRXhwcmVzcyBFZGl0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlIGZyb206CiAgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS92c3R1ZGlvL2V4cHJlc3MvdmlzdWFsQy9kZWZhdWx0LmFzcHgKIFRoaXMgaW5jbHVkZXMgdGhlIElERSBhbmQgdGhlIGRlYnVnZ2VyLiBZb3Ugd2lsbCBhbHNvIG5lZWQKIHxtcy1wbGF0Zm9ybS1zZGt8LiBZb3UgY2FuIGJ1aWxkIFZpbSB3aXRoIE1ha2VfbXZjLm1hay4KZGlmZiAtLWdpdCBhL3NyYy9hdXRvL2NvbmZpZ3VyZSBiL3NyYy9hdXRvL2NvbmZpZ3VyZQppbmRleCBlZDVlYTU2Li43YTMwOGE3IDEwMDc1NQotLS0gYS9zcmMvYXV0by9jb25maWd1cmUKKysrIGIvc3JjL2F1dG8vY29uZmlndXJlCkBAIC04OTg2LDggKzg5ODYsOSBAQAogCiAKIAorCiBmb3IgYWNfaGVhZGVyIGluIFhtL1htLmggWG0vWHBtUC5oIFhtL0pvaW5TaWRlVC5oIFhtL1RyYWl0UC5oIFhtL01hbmFnZXIuaCBcCi0JCSAgIFhtL1VuaGlnaGxpZ2h0VC5oCisJCSAgIFhtL1VuaGlnaGxpZ2h0VC5oIFhtL05vdGVib29rLmgKIGRvCiBhc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKIGlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KZGlmZiAtLWdpdCBhL3NyYy9jb25maWcuaC5pbiBiL3NyYy9jb25maWcuaC5pbgppbmRleCA4ZTA4NjNhLi45YjQyYjkyIDEwMDY0NAotLS0gYS9zcmMvY29uZmlnLmguaW4KKysrIGIvc3JjL2NvbmZpZy5oLmluCkBAIC0yMzksNiArMjM5LDcgQEAKICN1bmRlZiBIQVZFX1hNX01BTkFHRVJfSAogI3VuZGVmIEhBVkVfWE1fVU5ISUdITElHSFRUX0gKICN1bmRlZiBIQVZFX1hNX0pPSU5TSURFVF9ICisjdW5kZWYgSEFWRV9YTV9OT1RFQk9PS19ICiAjdW5kZWYgSEFWRV9YMTFfWFBNX0gKICN1bmRlZiBIQVZFX1gxMV9YTVVfRURJVFJFU19ICiAjdW5kZWYgSEFWRV9YMTFfU01fU01MSUJfSApkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZ3VyZS5pbiBiL3NyYy9jb25maWd1cmUuaW4KaW5kZXggMjFhNWY4MC4uNmExYTU2ZiAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZ3VyZS5pbgorKysgYi9zcmMvY29uZmlndXJlLmluCkBAIC0xOTAxLDcgKzE5MDEsNyBAQAogICBjcHBmbGFnc19zYXZlPSRDUFBGTEFHUwogICBDUFBGTEFHUz0iJENQUEZMQUdTICRYX0NGTEFHUyIKICAgQUNfQ0hFQ0tfSEVBREVSUyhYbS9YbS5oIFhtL1hwbVAuaCBYbS9Kb2luU2lkZVQuaCBYbS9UcmFpdFAuaCBYbS9NYW5hZ2VyLmggXAotCQkgICBYbS9VbmhpZ2hsaWdodFQuaCkKKwkJICAgWG0vVW5oaWdobGlnaHRULmggWG0vTm90ZWJvb2suaCkKIAogICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfWG1fWHBtUF9oID0geWVzOyB0aGVuCiAgICAgZG5sIFNvbGFyaXMgdXNlcyBYcG1BdHRyaWJ1dGVzXzIxLCB2ZXJ5IGFubm95aW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKaW5kZXggMWYyMDhiOS4uMWU3NWEzMSAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysgYi9zcmMvZXZhbC5jCkBAIC04ODYzLDcgKzg4NjMsNiBAQAogCSAgICBFeHBhbmRJbml0KCZ4cGMpOwogCSAgICB4cGMueHBfY29udGV4dCA9IEVYUEFORF9GSUxFUzsKIAkgICAgcmV0dHYtPnZ2YWwudl9zdHJpbmcgPSBFeHBhbmRPbmUoJnhwYywgcywgTlVMTCwgZmxhZ3MsIFdJTERfQUxMKTsKLQkgICAgRXhwYW5kQ2xlYW51cCgmeHBjKTsKIAl9CiAJZWxzZQogCSAgICByZXR0di0+dnZhbC52X3N0cmluZyA9IE5VTEw7CkBAIC0xMDM5Nyw3ICsxMDM5Niw2IEBACiAgICAgcmV0dHYtPnZfdHlwZSA9IFZBUl9TVFJJTkc7CiAgICAgcmV0dHYtPnZ2YWwudl9zdHJpbmcgPSBFeHBhbmRPbmUoJnhwYywgZ2V0X3R2X3N0cmluZygmYXJndmFyc1swXSksCiAJCQkJICAgICBOVUxMLCBXSUxEX1VTRV9OTHxXSUxEX1NJTEVOVCwgV0lMRF9BTEwpOwotICAgIEV4cGFuZENsZWFudXAoJnhwYyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvZXhfZG9jbWQuYyBiL3NyYy9leF9kb2NtZC5jCmluZGV4IDI3YzQ0ZmYuLjQ5NDNiZmMgMTAwNjQ0Ci0tLSBhL3NyYy9leF9kb2NtZC5jCisrKyBiL3NyYy9leF9kb2NtZC5jCkBAIC00MzcxLDcgKzQzNzEsNiBAQAogCQkgICAgcCA9IEV4cGFuZE9uZSgmeHBjLCBlYXAtPmFyZywgTlVMTCwKIAkJCQkJICAgIFdJTERfTElTVF9OT1RGT1VORHxXSUxEX0FERF9TTEFTSCwKIAkJCQkJCSAgIFdJTERfRVhQQU5EX0ZSRUUpOwotCQkgICAgRXhwYW5kQ2xlYW51cCgmeHBjKTsKIAkJICAgIGlmIChwID09IE5VTEwpCiAJCQlyZXR1cm4gRkFJTDsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2V4X2dldGxuLmMgYi9zcmMvZXhfZ2V0bG4uYwppbmRleCAxMGYzMzU1Li5jZTQ4YjY3IDEwMDY0NAotLS0gYS9zcmMvZXhfZ2V0bG4uYworKysgYi9zcmMvZXhfZ2V0bG4uYwpAQCAtMzI2MCw3ICszMjYwLDggQEAKICAqIFJldHVybiBhIHBvaW50ZXIgdG8gYWxsb2NlZCBtZW1vcnkgY29udGFpbmluZyB0aGUgbmV3IHN0cmluZy4KICAqIFJldHVybiBOVUxMIGZvciBmYWlsdXJlLgogICoKLSAqIFJlc3VsdHMgYXJlIGNhY2hlZCBpbiB4cC0+eHBfZmlsZXMgYW5kIHhwLT54cF9udW1maWxlcy4KKyAqIFJlc3VsdHMgYXJlIGNhY2hlZCBpbiB4cC0+eHBfZmlsZXMgYW5kIHhwLT54cF9udW1maWxlcywgZXhjZXB0IHdoZW4gIm1vZGUiCisgKiBpcyBXSUxEX0VYUEFORF9GUkVFIG9yIFdJTERfQUxMLgogICoKICAqIG1vZGUgPSBXSUxEX0ZSRUU6CSAgICBqdXN0IGZyZWUgcHJldmlvdXNseSBleHBhbmRlZCBtYXRjaGVzCiAgKiBtb2RlID0gV0lMRF9FWFBBTkRfRlJFRTogbm9ybWFsIGV4cGFuc2lvbiwgZG8gbm90IGtlZXAgbWF0Y2hlcwpkaWZmIC0tZ2l0IGEvc3JjL2ZlYXR1cmUuaCBiL3NyYy9mZWF0dXJlLmgKaW5kZXggZmRkN2EyOS4uODI1MDhmZCAxMDA2NDQKLS0tIGEvc3JjL2ZlYXR1cmUuaAorKysgYi9zcmMvZmVhdHVyZS5oCkBAIC03NTMsNyArNzUzLDggQEAKIC8qCiAgKiBHVUkgdGFibGluZQogICovCi0jaWYgZGVmaW5lZChGRUFUX1dJTkRPV1MpICYmIChkZWZpbmVkKEZFQVRfR1VJX0dUSykgfHwgZGVmaW5lZChGRUFUX0dVSV9NT1RJRilcCisjaWYgZGVmaW5lZChGRUFUX1dJTkRPV1MpICYmIChkZWZpbmVkKEZFQVRfR1VJX0dUSykgXAorCXx8IChkZWZpbmVkKEZFQVRfR1VJX01PVElGKSAmJiBkZWZpbmVkKEhBVkVfWE1fTk9URUJPT0tfSCkpIFwKIAl8fCAoZGVmaW5lZChGRUFUX0dVSV9NU1dJTikgJiYgKCFkZWZpbmVkKF9NU0NfVkVSKSB8fCBfTVNDX1ZFUiA+IDEwMjApKSkKICMgZGVmaW5lIEZFQVRfR1VJX1RBQkxJTkUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2d1aS5jIGIvc3JjL2d1aS5jCmluZGV4IGMzNzdhMzUuLjc1NWMyMGMgMTAwNjQ0Ci0tLSBhL3NyYy9ndWkuYworKysgYi9zcmMvZ3VpLmMKQEAgLTM0OTEsNyArMzQ5MSw3IEBACiAvKgogICogU2VuZCB0aGUgZXZlbnQgZm9yIGNsaWNraW5nIHRvIHNlbGVjdCB0YWIgcGFnZSAibnIiLgogICogUmV0dXJucyBUUlVFIGlmIGl0IHdhcyBkb25lLCBGQUxTRSB3aGVuIHNraXBwZWQgYmVjYXVzZSB3ZSBhcmUgYWxyZWFkeSBhdAotICogdGhhdCB0YWIgcGFnZS4KKyAqIHRoYXQgdGFiIHBhZ2Ugb3IgdGhlIGNtZGxpbmUgd2luZG93IGlzIG9wZW4uCiAgKi8KICAgICBpbnQKIHNlbmRfdGFibGluZV9ldmVudChucikKQEAgLTM1MDEsNiArMzUwMSwxNCBAQAogCiAgICAgaWYgKG5yID09IHRhYnBhZ2VfaW5kZXgoY3VydGFiKSkKIAlyZXR1cm4gRkFMU0U7CisjIGlmZGVmIEZFQVRfQ01EV0lOCisgICAgaWYgKGNtZHdpbl90eXBlICE9IDApCisgICAgeworCS8qIFNldCBpdCBiYWNrIHRvIHRoZSBjdXJyZW50IHRhYiBwYWdlLiAqLworCWd1aV9tY2hfc2V0X2N1cnRhYih0YWJwYWdlX2luZGV4KGN1cnRhYikpOworCXJldHVybiBGQUxTRTsKKyAgICB9CisjIGVuZGlmCiAgICAgc3RyaW5nWzBdID0gQ1NJOwogICAgIHN0cmluZ1sxXSA9IEtTX1RBQkxJTkU7CiAgICAgc3RyaW5nWzJdID0gS0VfRklMTEVSOwpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9tYWMuYyBiL3NyYy9ndWlfbWFjLmMKaW5kZXggNzYyZDMwYy4uNGViYzEyMSAxMDA2NDQKLS0tIGEvc3JjL2d1aV9tYWMuYworKysgYi9zcmMvZ3VpX21hYy5jCkBAIC00OCw2ICs0OCwxMSBAQAogCiAvKiBWaW0ncyBTY3JhcCBmbGF2b3IuICovCiAjZGVmaW5lIFZJTVNDUkFQRkxBVk9SICdWSU0hJworI2lmZGVmIEZFQVRfTUJZVEUKKyMgZGVmaW5lIFNDUkFQVEVYVEZMQVZPUiBrU2NyYXBGbGF2b3JUeXBlVW5pY29kZQorI2Vsc2UKKyMgZGVmaW5lIFNDUkFQVEVYVEZMQVZPUiBrU2NyYXBGbGF2b3JUeXBlVGV4dAorI2VuZGlmCiAKIHN0YXRpYyBFdmVudEhhbmRsZXJVUFAgbW91c2VXaGVlbEhhbmRsZXJVUFAgPSBOVUxMOwogU0ludDMyIGdNYWNTeXN0ZW1WZXJzaW9uOwpAQCAtNDQyNyw2OSArNDQzMiw2NSBAQAogCiAgICAgaWYgKGZsYXZvciA9PSAwKQogICAgIHsKLQllcnJvciA9IEdldFNjcmFwRmxhdm9yRmxhZ3Moc2NyYXAsIGtTY3JhcEZsYXZvclR5cGVVbmljb2RlLCAmc2NyYXBGbGFncyk7CisJZXJyb3IgPSBHZXRTY3JhcEZsYXZvckZsYWdzKHNjcmFwLCBTQ1JBUFRFWFRGTEFWT1IsICZzY3JhcEZsYWdzKTsKIAlpZiAoZXJyb3IgIT0gbm9FcnIpCiAJICAgIHJldHVybjsKIAotCWVycm9yID0gR2V0U2NyYXBGbGF2b3JTaXplKHNjcmFwLCBrU2NyYXBGbGF2b3JUeXBlVW5pY29kZSwgJnNjcmFwU2l6ZSk7CisJZXJyb3IgPSBHZXRTY3JhcEZsYXZvclNpemUoc2NyYXAsIFNDUkFQVEVYVEZMQVZPUiwgJnNjcmFwU2l6ZSk7CiAJaWYgKGVycm9yICE9IG5vRXJyKQogCSAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVzZXJ2ZU1lbShzY3JhcFNpemUpOwogCi0gICAgewotCS8qIEluIENBUkJPTiB3ZSBkb24ndCBuZWVkIGEgSGFuZGxlLCBhIHBvaW50ZXIgaXMgZ29vZCAqLwotCXRleHRPZkNsaXAgPSBOZXdIYW5kbGUoc2NyYXBTaXplKTsKLQkvKiB0ZW1wY2xpcCA9IGxhbGxvYyhzY3JhcFNpemUrMSwgVFJVRSk7ICovCi0JSExvY2sodGV4dE9mQ2xpcCk7Ci0JZXJyb3IgPSBHZXRTY3JhcEZsYXZvckRhdGEoc2NyYXAsCi0JCWZsYXZvciA/IFZJTVNDUkFQRkxBVk9SIDoga1NjcmFwRmxhdm9yVHlwZVVuaWNvZGUsCi0JCSZzY3JhcFNpemUsICp0ZXh0T2ZDbGlwKTsKLQlzY3JhcFNpemUgLT0gZmxhdm9yOworICAgIC8qIEluIENBUkJPTiB3ZSBkb24ndCBuZWVkIGEgSGFuZGxlLCBhIHBvaW50ZXIgaXMgZ29vZCAqLworICAgIHRleHRPZkNsaXAgPSBOZXdIYW5kbGUoc2NyYXBTaXplKTsKIAotCWlmIChmbGF2b3IpCi0JICAgIHR5cGUgPSAqKnRleHRPZkNsaXA7Ci0JZWxzZQotCSAgICB0eXBlID0gKHN0cmNocigqdGV4dE9mQ2xpcCwgJ1xyJykgIT0gTlVMTCkgPyBNTElORSA6IE1DSEFSOworICAgIC8qIHRlbXBjbGlwID0gbGFsbG9jKHNjcmFwU2l6ZSsxLCBUUlVFKTsgKi8KKyAgICBITG9jayh0ZXh0T2ZDbGlwKTsKKyAgICBlcnJvciA9IEdldFNjcmFwRmxhdm9yRGF0YShzY3JhcCwKKwkgICAgZmxhdm9yID8gVklNU0NSQVBGTEFWT1IgOiBTQ1JBUFRFWFRGTEFWT1IsCisJICAgICZzY3JhcFNpemUsICp0ZXh0T2ZDbGlwKTsKKyAgICBzY3JhcFNpemUgLT0gZmxhdm9yOwogCi0JdGVtcGNsaXAgPSBsYWxsb2Moc2NyYXBTaXplICsgMSwgVFJVRSk7Ci0jaWYgZGVmaW5lZChGRUFUX01CWVRFKQotCW1jaF9tZW1tb3ZlKHRlbXBjbGlwLCAqdGV4dE9mQ2xpcCArIGZsYXZvciwgc2NyYXBTaXplKTsKLSNlbHNlCi0JU1RSTkNQWSh0ZW1wY2xpcCwgKnRleHRPZkNsaXAgKyBmbGF2b3IsIHNjcmFwU2l6ZSk7Ci0jZW5kaWYKLQl0ZW1wY2xpcFtzY3JhcFNpemVdID0gMDsKKyAgICBpZiAoZmxhdm9yKQorCXR5cGUgPSAqKnRleHRPZkNsaXA7CisgICAgZWxzZQorCXR5cGUgPSAoc3RyY2hyKCp0ZXh0T2ZDbGlwLCAnXHInKSAhPSBOVUxMKSA/IE1MSU5FIDogTUNIQVI7CisKKyAgICB0ZW1wY2xpcCA9IGxhbGxvYyhzY3JhcFNpemUgKyAxLCBUUlVFKTsKKyAgICBtY2hfbWVtbW92ZSh0ZW1wY2xpcCwgKnRleHRPZkNsaXAgKyBmbGF2b3IsIHNjcmFwU2l6ZSk7CisgICAgdGVtcGNsaXBbc2NyYXBTaXplXSA9IDA7CiAKICNpZmRlZiBNQUNPU19DT05WRVJUCisgICAgewogCS8qIENvbnZlcnQgZnJvbSB1dGYtMTYgKGNsaXBib2FyZCkgKi8KIAlzaXplX3QgZW5jTGVuID0gMDsKIAljaGFyX3UgKnRvID0gbWFjX3V0ZjE2X3RvX2VuYygoVW5pQ2hhciAqKXRlbXBjbGlwLCBzY3JhcFNpemUsICZlbmNMZW4pOwotCWlmICh0bykKKworCWlmICh0byAhPSBOVUxMKQogCXsKIAkgICAgc2NyYXBTaXplID0gZW5jTGVuOwogCSAgICB2aW1fZnJlZSh0ZW1wY2xpcCk7CiAJICAgIHRlbXBjbGlwID0gdG87CiAJfQorICAgIH0KICNlbmRpZgogCi0Jc2VhcmNoQ1IgPSAoY2hhciAqKXRlbXBjbGlwOwotCXdoaWxlIChzZWFyY2hDUiAhPSBOVUxMKQotCXsKLQkgICAgc2VhcmNoQ1IgPSBzdHJjaHIoc2VhcmNoQ1IsICdccicpOwotCi0JICAgIGlmIChzZWFyY2hDUiAhPSBOVUxMKQotCQlzZWFyY2hDUlswXSA9ICdcbic7Ci0KLQl9Ci0KLQljbGlwX3lhbmtfc2VsZWN0aW9uKHR5cGUsIHRlbXBjbGlwLCBzY3JhcFNpemUsIGNiZCk7Ci0KLQl2aW1fZnJlZSh0ZW1wY2xpcCk7Ci0JSFVubG9jayh0ZXh0T2ZDbGlwKTsKLQotCURpc3Bvc2VIYW5kbGUodGV4dE9mQ2xpcCk7CisgICAgc2VhcmNoQ1IgPSAoY2hhciAqKXRlbXBjbGlwOworICAgIHdoaWxlIChzZWFyY2hDUiAhPSBOVUxMKQorICAgIHsKKwlzZWFyY2hDUiA9IHN0cmNocihzZWFyY2hDUiwgJ1xyJyk7CisJaWYgKHNlYXJjaENSICE9IE5VTEwpCisJICAgICpzZWFyY2hDUiA9ICdcbic7CiAgICAgfQorCisgICAgY2xpcF95YW5rX3NlbGVjdGlvbih0eXBlLCB0ZW1wY2xpcCwgc2NyYXBTaXplLCBjYmQpOworCisgICAgdmltX2ZyZWUodGVtcGNsaXApOworICAgIEhVbmxvY2sodGV4dE9mQ2xpcCk7CisKKyAgICBEaXNwb3NlSGFuZGxlKHRleHRPZkNsaXApOwogfQogCiAgICAgdm9pZApAQCAtNDUyNywxMiArNDUyOCwxMCBAQAogICAgIC8qCiAgICAgICogT25jZSB3ZSBzZXQgdGhlIGNsaXBib2FyZCwgbG9zZSBvd25lcnNoaXAuICBJZiBhbm90aGVyIGFwcGxpY2F0aW9uIHNldHMKICAgICAgKiB0aGUgY2xpcGJvYXJkLCB3ZSBkb24ndCB3YW50IHRvIHRoaW5rIHRoYXQgd2Ugc3RpbGwgb3duIGl0LgotICAgICAqCiAgICAgICovCi0KICAgICBjYmQtPm93bmVkID0gRkFMU0U7CiAKLSAgICB0eXBlID0gY2xpcF9jb252ZXJ0X3NlbGVjdGlvbigmc3RyLCAobG9uZ191ICopICZzY3JhcFNpemUsIGNiZCk7CisgICAgdHlwZSA9IGNsaXBfY29udmVydF9zZWxlY3Rpb24oJnN0ciwgKGxvbmdfdSAqKSZzY3JhcFNpemUsIGNiZCk7CiAKICNpZmRlZiBNQUNPU19DT05WRVJUCiAgICAgc2l6ZV90IHV0ZjE2X2xlbiA9IDA7CkBAIC00NTU1LDcgKzQ1NTQsNyBAQAogCSoqdGV4dE9mQ2xpcCA9IHR5cGU7CiAJbWNoX21lbW1vdmUoKnRleHRPZkNsaXAgKyAxLCBzdHIsIHNjcmFwU2l6ZSk7CiAJR2V0Q3VycmVudFNjcmFwKCZzY3JhcCk7Ci0JUHV0U2NyYXBGbGF2b3Ioc2NyYXAsIGtTY3JhcEZsYXZvclR5cGVVbmljb2RlLCBrU2NyYXBGbGF2b3JNYXNrTm9uZSwKKwlQdXRTY3JhcEZsYXZvcihzY3JhcCwgU0NSQVBURVhURkxBVk9SLCBrU2NyYXBGbGF2b3JNYXNrTm9uZSwKIAkJc2NyYXBTaXplLCAqdGV4dE9mQ2xpcCArIDEpOwogCVB1dFNjcmFwRmxhdm9yKHNjcmFwLCBWSU1TQ1JBUEZMQVZPUiwga1NjcmFwRmxhdm9yTWFza05vbmUsCiAJCXNjcmFwU2l6ZSArIDEsICp0ZXh0T2ZDbGlwKTsKZGlmZiAtLWdpdCBhL3NyYy9ndWlfbW90aWYuYyBiL3NyYy9ndWlfbW90aWYuYwppbmRleCA3ZWI1NzU4Li45ZTI4YmUyIDEwMDY0NAotLS0gYS9zcmMvZ3VpX21vdGlmLmMKKysrIGIvc3JjL2d1aV9tb3RpZi5jCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSA8WG0vTGFiZWxHLmg+CiAjaW5jbHVkZSA8WG0vVG9nZ2xlQkcuaD4KICNpbmNsdWRlIDxYbS9TZXBhcmF0b0cuaD4KLSNpbmNsdWRlIDxYbS9Ob3RlYm9vay5oPgogI2luY2x1ZGUgPFhtL1htUC5oPgogCiAjaW5jbHVkZSA8WDExL2tleXN5bS5oPgpAQCAtNDMsNiArNDIsOSBAQAogIyAgaW5jbHVkZSA8WG0vWHBtUC5oPgogIyBlbmRpZgogI2VuZGlmCisjaWZkZWYgSEFWRV9YTV9OT1RFQk9PS19ICisjIGluY2x1ZGUgPFhtL05vdGVib29rLmg+CisjZW5kaWYKIAogI2luY2x1ZGUgImd1aV94bWVidy5oIgkvKiBmb3Igb3VyIEVuaGFuY2VkIEJ1dHRvbiBXaWRnZXQgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2d1aV93NDguYyBiL3NyYy9ndWlfdzQ4LmMKaW5kZXggMTNlMDMyNC4uNmU0ZWMxYSAxMDA2NDQKLS0tIGEvc3JjL2d1aV93NDguYworKysgYi9zcmMvZ3VpX3c0OC5jCkBAIC0yMjk2LDE4ICsyMjk2LDI2IEBACiAgICAgaW50CQljdXJ0YWJpZHggPSAwOwogICAgIFJFQ1QJcmM7CiAjaWZkZWYgRkVBVF9NQllURQorICAgIHN0YXRpYyBpbnQJdXNlX3VuaWNvZGUgPSBGQUxTRTsKKyAgICBpbnQJCXV1OwogICAgIFdDSEFSCSp3c3RyID0gTlVMTDsKICNlbmRpZgogCiAgICAgaWYgKHNfdGFiaHduZCA9PSBOVUxMKQogCXJldHVybjsKIAotI2lmIGRlZmluZWQoRkVBVF9NQllURSkgJiYgZGVmaW5lZChDQ01fU0VUVU5JQ09ERUZPUk1BVCkKLSAgICBpZiAoZW5jX2NvZGVwYWdlID49IDAgJiYgKGludClHZXRBQ1AoKSAhPSBlbmNfY29kZXBhZ2UpCi0JLyoKLQkgKiBFbmFibGUgdW5pY29kZSBzdXBwb3J0Ci0JICovCi0JU2VuZE1lc3NhZ2Uoc190YWJod25kLCBDQ01fU0VUVU5JQ09ERUZPUk1BVCwgKFdQQVJBTSlUUlVFLCAoTFBBUkFNKTApOworI2lmIGRlZmluZWQoRkVBVF9NQllURSkKKyMgaWZuZGVmIENDTV9TRVRVTklDT0RFRk9STUFUCisgICAgLyogRm9yIG9sZGVyIGNvbXBpbGVycy4gIFdlIGFzc3VtZSB0aGlzIG5ldmVyIGNoYW5nZXMuICovCisjICBkZWZpbmUgQ0NNX1NFVFVOSUNPREVGT1JNQVQgMHgyMDA1CisjIGVuZGlmCisgICAgdXUgPSAoZW5jX2NvZGVwYWdlID49IDAgJiYgKGludClHZXRBQ1AoKSAhPSBlbmNfY29kZXBhZ2UpOworICAgIGlmICh1dSAhPSB1c2VfdW5pY29kZSkKKyAgICB7CisJLyogRW5hYmxlL2Rpc2FibGUgdW5pY29kZSBzdXBwb3J0ICovCisJU2VuZE1lc3NhZ2Uoc190YWJod25kLCBDQ01fU0VUVU5JQ09ERUZPUk1BVCwgKFdQQVJBTSl1dSwgKExQQVJBTSkwKTsKKwl1c2VfdW5pY29kZSA9IHV1OworICAgIH0KICNlbmRpZgogCiAgICAgdGllLm1hc2sgPSBUQ0lGX1RFWFQ7CkBAIC0yMzMwLDcgKzIzMzgsNyBAQAogCXRpZS5wc3pUZXh0ID0gTmFtZUJ1ZmY7CiAjaWZkZWYgRkVBVF9NQllURQogCXdzdHIgPSBOVUxMOwotCWlmIChlbmNfY29kZXBhZ2UgPj0gMCAmJiAoaW50KUdldEFDUCgpICE9IGVuY19jb2RlcGFnZSkKKwlpZiAodXNlX3VuaWNvZGUpCiAJewogCSAgICAvKiBOZWVkIHRvIGdvIHRocm91Z2ggVW5pY29kZS4gKi8KIAkgICAgd3N0ciA9IGVuY190b191Y3MyKE5hbWVCdWZmLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9tZW1saW5lLmMgYi9zcmMvbWVtbGluZS5jCmluZGV4IDkyODRhYmIuLmU4NmE3OTIgMTAwNjQ0Ci0tLSBhL3NyYy9tZW1saW5lLmMKKysrIGIvc3JjL21lbWxpbmUuYwpAQCAtMTUzMiw3ICsxNTMyLDcgQEAKIAkJCWZpbGVzW2ldID0gZmlsZXNbaSArIDFdOwogCQl9CiAJfQotCWlmIChucikKKwlpZiAobnIgPiAwKQogCXsKIAkgICAgZmlsZV9jb3VudCArPSBudW1fZmlsZXM7CiAJICAgIGlmIChuciA8PSBmaWxlX2NvdW50KQpAQCAtMTU3OCw3ICsxNTc4LDggQEAKIAogCWZvciAoaSA9IDA7IGkgPCBudW1fbmFtZXM7ICsraSkKIAkgICAgdmltX2ZyZWUobmFtZXNbaV0pOwotCUZyZWVXaWxkKG51bV9maWxlcywgZmlsZXMpOworCWlmIChudW1fZmlsZXMgPiAwKQorCSAgICBGcmVlV2lsZChudW1fZmlsZXMsIGZpbGVzKTsKICAgICB9CiAgICAgdmltX2ZyZWUoZGlyX25hbWUpOwogICAgIHJldHVybiBmaWxlX2NvdW50OwpkaWZmIC0tZ2l0IGEvc3JjL21lbnUuYyBiL3NyYy9tZW51LmMKaW5kZXggYjRmMDZkMi4uNTVmYmExZiAxMDA2NDQKLS0tIGEvc3JjL21lbnUuYworKysgYi9zcmMvbWVudS5jCkBAIC0yMzM2LDIwICsyMzM2LDIzIEBACiAJICAgIHsKIAkJdHAgPSAobWVudXRyYW5zX1QgKiltZW51dHJhbnNfZ2EuZ2FfZGF0YTsKIAkJZnJvbSA9IHZpbV9zdHJzYXZlKGZyb20pOwotCQlmcm9tX25vYW1wID0gbWVudV90ZXh0KGZyb20sIE5VTEwsIE5VTEwpOwotCQl0byA9IHZpbV9zdHJuc2F2ZSh0bywgKGludCkoYXJnIC0gdG8pKTsKLQkJaWYgKGZyb20gIT0gTlVMTCAmJiBmcm9tX25vYW1wICE9IE5VTEwgJiYgdG8gIT0gTlVMTCkKKwkJaWYgKGZyb20gIT0gTlVMTCkKIAkJewotCQkgICAgdHBbbWVudXRyYW5zX2dhLmdhX2xlbl0uZnJvbSA9IGZyb207Ci0JCSAgICB0cFttZW51dHJhbnNfZ2EuZ2FfbGVuXS5mcm9tX25vYW1wID0gZnJvbV9ub2FtcDsKLQkJICAgIHRwW21lbnV0cmFuc19nYS5nYV9sZW5dLnRvID0gdG87Ci0JCSAgICArK21lbnV0cmFuc19nYS5nYV9sZW47Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCSAgICB2aW1fZnJlZShmcm9tKTsKLQkJICAgIHZpbV9mcmVlKGZyb21fbm9hbXApOwotCQkgICAgdmltX2ZyZWUodG8pOworCQkgICAgZnJvbV9ub2FtcCA9IG1lbnVfdGV4dChmcm9tLCBOVUxMLCBOVUxMKTsKKwkJICAgIHRvID0gdmltX3N0cm5zYXZlKHRvLCAoaW50KShhcmcgLSB0bykpOworCQkgICAgaWYgKGZyb21fbm9hbXAgIT0gTlVMTCAmJiB0byAhPSBOVUxMKQorCQkgICAgeworCQkJdHBbbWVudXRyYW5zX2dhLmdhX2xlbl0uZnJvbSA9IGZyb207CisJCQl0cFttZW51dHJhbnNfZ2EuZ2FfbGVuXS5mcm9tX25vYW1wID0gZnJvbV9ub2FtcDsKKwkJCXRwW21lbnV0cmFuc19nYS5nYV9sZW5dLnRvID0gdG87CisJCQkrK21lbnV0cmFuc19nYS5nYV9sZW47CisJCSAgICB9CisJCSAgICBlbHNlCisJCSAgICB7CisJCQl2aW1fZnJlZShmcm9tKTsKKwkJCXZpbV9mcmVlKGZyb21fbm9hbXApOworCQkJdmltX2ZyZWUodG8pOworCQkgICAgfQogCQl9CiAJICAgIH0KIAl9CmRpZmYgLS1naXQgYS9zcmMvbWlzYzEuYyBiL3NyYy9taXNjMS5jCmluZGV4IDdkODZlNDYuLjY3YTJmYzAgMTAwNjQ0Ci0tLSBhL3NyYy9taXNjMS5jCisrKyBiL3NyYy9taXNjMS5jCkBAIC0zNjI1LDcgKzM2MjUsNiBAQAogCQkgICAgeHBjLnhwX2NvbnRleHQgPSBFWFBBTkRfRklMRVM7CiAJCSAgICB2YXIgPSBFeHBhbmRPbmUoJnhwYywgZHN0LCBOVUxMLAogCQkJCVdJTERfQUREX1NMQVNIfFdJTERfU0lMRU5ULCBXSUxEX0VYUEFORF9GUkVFKTsKLQkJICAgIEV4cGFuZENsZWFudXAoJnhwYyk7CiAJCSAgICBtdXN0ZnJlZSA9IFRSVUU7CiAJCX0KIApAQCAtOTM2Myw3ICs5MzYyLDcgQEAKICAgICBpbnQJICAgIGNvdW50OwogICAgIGNoYXJfdSAgKipmaWxlczsKIHsKLSAgICBpZiAoZmlsZXMgPT0gTlVMTCB8fCBjb3VudCA8PSAwKQorICAgIGlmIChjb3VudCA8PSAwIHx8IGZpbGVzID09IE5VTEwpCiAJcmV0dXJuOwogI2lmIGRlZmluZWQoX19FTVhfXykgJiYgZGVmaW5lZChfX0FMV0FZU19IQVNfVFJBSUxJTkdfTlVMTF9QT0lOVEVSKSAvKiBYWFggKi8KICAgICAvKgpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IDI5YWIxZWYuLmNmY2ExODggMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTI5OTYsMzUgKzI5OTYsNDQgQEAKICAgICAgKiAnbWF4bWVtdG90JyBhbmQgJ21heG1lbScgbWF5IGhhdmUgdG8gYmUgYWRqdXN0ZWQgZm9yIGF2YWlsYWJsZSBtZW1vcnkKICAgICAgKi8KICAgICBvcHRfaWR4ID0gZmluZG9wdGlvbigoY2hhcl91ICopIm1heG1lbXRvdCIpOwotI2lmICFkZWZpbmVkKEhBVkVfQVZBSUxfTUVNKSAmJiAhZGVmaW5lZChIQVZFX1RPVEFMX01FTSkKLSAgICBpZiAob3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID09IChjaGFyX3UgKikwTCkKLSNlbmRpZgorICAgIGlmIChvcHRfaWR4ID49IDApCiAgICAgeworI2lmICFkZWZpbmVkKEhBVkVfQVZBSUxfTUVNKSAmJiAhZGVmaW5lZChIQVZFX1RPVEFMX01FTSkKKwlpZiAob3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID09IChjaGFyX3UgKikwTCkKKyNlbmRpZgorCXsKICNpZmRlZiBIQVZFX0FWQUlMX01FTQotCS8qIFVzZSBhbW91bnQgb2YgbWVtb3J5IGF2YWlsYWJsZSBhdCB0aGlzIG1vbWVudC4gKi8KLQluID0gKG1jaF9hdmFpbF9tZW0oRkFMU0UpID4+IDExKTsKKwkgICAgLyogVXNlIGFtb3VudCBvZiBtZW1vcnkgYXZhaWxhYmxlIGF0IHRoaXMgbW9tZW50LiAqLworCSAgICBuID0gKG1jaF9hdmFpbF9tZW0oRkFMU0UpID4+IDExKTsKICNlbHNlCiAjIGlmZGVmIEhBVkVfVE9UQUxfTUVNCi0JLyogVXNlIGFtb3VudCBvZiBtZW1vcnkgYXZhaWxhYmxlIHRvIFZpbS4gKi8KLQluID0gKG1jaF90b3RhbF9tZW0oRkFMU0UpID4+IDExKTsKKwkgICAgLyogVXNlIGFtb3VudCBvZiBtZW1vcnkgYXZhaWxhYmxlIHRvIFZpbS4gKi8KKwkgICAgbiA9IChtY2hfdG90YWxfbWVtKEZBTFNFKSA+PiAxMSk7CiAjIGVsc2UKLQluID0gKDB4N2ZmZmZmZmYgPj4gMTEpOworCSAgICBuID0gKDB4N2ZmZmZmZmYgPj4gMTEpOwogIyBlbmRpZgogI2VuZGlmCi0Jb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gKGNoYXJfdSAqKW47Ci0Jb3B0X2lkeCA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKSJtYXhtZW0iKTsKLSNpZiAhZGVmaW5lZChIQVZFX0FWQUlMX01FTSkgJiYgIWRlZmluZWQoSEFWRV9UT1RBTF9NRU0pCi0JaWYgKChsb25nKW9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA+IG4KLQkJCSAgfHwgKGxvbmcpb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID09IDBMKQotI2VuZGlmCiAJICAgIG9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA9IChjaGFyX3UgKiluOworCSAgICBvcHRfaWR4ID0gZmluZG9wdGlvbigoY2hhcl91ICopIm1heG1lbSIpOworCSAgICBpZiAob3B0X2lkeCA+PSAwKQorCSAgICB7CisjaWYgIWRlZmluZWQoSEFWRV9BVkFJTF9NRU0pICYmICFkZWZpbmVkKEhBVkVfVE9UQUxfTUVNKQorCQlpZiAoKGxvbmcpb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID4gbgorCQkJfHwgKGxvbmcpb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID09IDBMKQorI2VuZGlmCisJCSAgICBvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0gPSAoY2hhcl91ICopbjsKKwkgICAgfQorCX0KICAgICB9CiAKICNpZmRlZiBGRUFUX0dVSV9XMzIKICAgICAvKiBmb3JjZSAnc2hvcnRuYW1lJyBmb3IgV2luMzJzICovCiAgICAgaWYgKGd1aV9pc193aW4zMnMoKSkKLQlvcHRpb25zW2ZpbmRvcHRpb24oKGNoYXJfdSAqKSJzaG9ydG5hbWUiKV0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA9Ci0JCQkJCQkJICAgICAgIChjaGFyX3UgKilUUlVFOworICAgIHsKKwlvcHRfaWR4ID0gZmluZG9wdGlvbigoY2hhcl91ICopInNob3J0bmFtZSIpOworCWlmIChvcHRfaWR4ID49IDApCisJICAgIG9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA9IChjaGFyX3UgKilUUlVFOworICAgIH0KICNlbmRpZgogCiAjaWZkZWYgRkVBVF9TRUFSQ0hQQVRICkBAIC0zMDU3LDggKzMwNjYsMTEgQEAKIAkJfQogCQlidWZbal0gPSBOVUw7CiAJCW9wdF9pZHggPSBmaW5kb3B0aW9uKChjaGFyX3UgKikiY2RwYXRoIik7Ci0JCW9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA9IGJ1ZjsKLQkJb3B0aW9uc1tvcHRfaWR4XS5mbGFncyB8PSBQX0RFRl9BTExPQ0VEOworCQlpZiAob3B0X2lkeCA+PSAwKQorCQl7CisJCSAgICBvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0gPSBidWY7CisJCSAgICBvcHRpb25zW29wdF9pZHhdLmZsYWdzIHw9IFBfREVGX0FMTE9DRUQ7CisJCX0KIAkgICAgfQogCSAgICBpZiAobXVzdGZyZWUpCiAJCXZpbV9mcmVlKGNkcGF0aCk7CkBAIC0zMjU5LDggKzMyNzEsMTEgQEAKIAlpZiAobWJfaW5pdCgpID09IE5VTEwpCiAJewogCSAgICBvcHRfaWR4ID0gZmluZG9wdGlvbigoY2hhcl91ICopImVuY29kaW5nIik7Ci0JICAgIG9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA9IHBfZW5jOwotCSAgICBvcHRpb25zW29wdF9pZHhdLmZsYWdzIHw9IFBfREVGX0FMTE9DRUQ7CisJICAgIGlmIChvcHRfaWR4ID49IDApCisJICAgIHsKKwkJb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gcF9lbmM7CisJCW9wdGlvbnNbb3B0X2lkeF0uZmxhZ3MgfD0gUF9ERUZfQUxMT0NFRDsKKwkgICAgfQogCiAjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChNU1dJTikgfHwgZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoTUFDT1MpIFwKIAkJfHwgZGVmaW5lZChWTVMpCkBAIC0zMjc4LDkgKzMyOTMsMTEgQEAKIAkJc2V0X3N0cmluZ19vcHRpb25fZGlyZWN0KChjaGFyX3UgKikiaXNrIiwgLTEsCiAJCQkJCSAgICAgIElTS19MQVRJTjEsIE9QVF9GUkVFLCBTSURfTk9ORSk7CiAJCW9wdF9pZHggPSBmaW5kb3B0aW9uKChjaGFyX3UgKikiaXNwIik7Ci0JCW9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSU1fREVGQVVMVF0gPSBJU1BfTEFUSU4xOworCQlpZiAob3B0X2lkeCA+PSAwKQorCQkgICAgb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJTV9ERUZBVUxUXSA9IElTUF9MQVRJTjE7CiAJCW9wdF9pZHggPSBmaW5kb3B0aW9uKChjaGFyX3UgKikiaXNrIik7Ci0JCW9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSU1fREVGQVVMVF0gPSBJU0tfTEFUSU4xOworCQlpZiAob3B0X2lkeCA+PSAwKQorCQkgICAgb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJTV9ERUZBVUxUXSA9IElTS19MQVRJTjE7CiAJCSh2b2lkKWluaXRfY2hhcnRhYigpOwogCSAgICB9CiAjZW5kaWYKQEAgLTMyOTcsOCArMzMxNCwxMSBAQAogCQlpZiAocF90ZW5jICE9IE5VTEwpCiAJCXsKIAkJICAgIG9wdF9pZHggPSBmaW5kb3B0aW9uKChjaGFyX3UgKikidGVybWVuY29kaW5nIik7Ci0JCSAgICBvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0gPSBwX3RlbmM7Ci0JCSAgICBvcHRpb25zW29wdF9pZHhdLmZsYWdzIHw9IFBfREVGX0FMTE9DRUQ7CisJCSAgICBpZiAob3B0X2lkeCA+PSAwKQorCQkgICAgeworCQkJb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gcF90ZW5jOworCQkJb3B0aW9uc1tvcHRfaWR4XS5mbGFncyB8PSBQX0RFRl9BTExPQ0VEOworCQkgICAgfQogCQkgICAgY29udmVydF9zZXR1cCgmaW5wdXRfY29udiwgcF90ZW5jLCBwX2VuYyk7CiAJCSAgICBjb252ZXJ0X3NldHVwKCZvdXRwdXRfY29udiwgcF9lbmMsIHBfdGVuYyk7CiAJCX0KQEAgLTM0MzYsMTAgKzM0NTYsMTMgQEAKICAgICBpZiAocCAhPSBOVUxMKQkJLyogd2UgZG9uJ3Qgd2FudCBhIE5VTEwgKi8KICAgICB7CiAJb3B0X2lkeCA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKW5hbWUpOwotCWlmIChvcHRpb25zW29wdF9pZHhdLmZsYWdzICYgUF9ERUZfQUxMT0NFRCkKLQkgICAgdmltX2ZyZWUob3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdKTsKLQlvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0gPSBwOwotCW9wdGlvbnNbb3B0X2lkeF0uZmxhZ3MgfD0gUF9ERUZfQUxMT0NFRDsKKwlpZiAob3B0X2lkeCA+PSAwKQorCXsKKwkgICAgaWYgKG9wdGlvbnNbb3B0X2lkeF0uZmxhZ3MgJiBQX0RFRl9BTExPQ0VEKQorCQl2aW1fZnJlZShvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0pOworCSAgICBvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0gPSBwOworCSAgICBvcHRpb25zW29wdF9pZHhdLmZsYWdzIHw9IFBfREVGX0FMTE9DRUQ7CisJfQogICAgIH0KIH0KIApAQCAtMzQ1Miw3ICszNDc1LDExIEBACiAgICAgY2hhcgkqbmFtZTsKICAgICBsb25nCXZhbDsKIHsKLSAgICBvcHRpb25zW2ZpbmRvcHRpb24oKGNoYXJfdSAqKW5hbWUpXS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gKGNoYXJfdSAqKXZhbDsKKyAgICBpbnQJCW9wdF9pZHg7CisKKyAgICBvcHRfaWR4ID0gZmluZG9wdGlvbigoY2hhcl91ICopbmFtZSk7CisgICAgaWYgKG9wdF9pZHggPj0gMCkKKwlvcHRpb25zW29wdF9pZHhdLmRlZl92YWxbVklfREVGQVVMVF0gPSAoY2hhcl91ICopdmFsOwogfQogCiAjaWYgZGVmaW5lZChFWElURlJFRSkgfHwgZGVmaW5lZChQUk9UTykKQEAgLTM0OTgsNyArMzUyNSw3IEBACiAgICAgICovCiAgICAgc2V0X251bWJlcl9kZWZhdWx0KCJzY3JvbGwiLCAobG9uZykoKGxvbmdfdSlSb3dzID4+IDEpKTsKICAgICBpZHggPSBmaW5kb3B0aW9uKChjaGFyX3UgKikic2Nyb2xsIik7Ci0gICAgaWYgKCEob3B0aW9uc1tpZHhdLmZsYWdzICYgUF9XQVNfU0VUKSkKKyAgICBpZiAoaWR4ID49IDAgJiYgIShvcHRpb25zW2lkeF0uZmxhZ3MgJiBQX1dBU19TRVQpKQogCXNldF9vcHRpb25fZGVmYXVsdChpZHgsIE9QVF9MT0NBTCwgcF9jcCk7CiAgICAgY29tcF9jb2woKTsKIApAQCAtMzUwNyw3ICszNTM0LDcgQEAKICAgICAgKiBEZWZhdWx0IGlzIFJvd3MgLSAxLgogICAgICAqLwogICAgIGlkeCA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKSJ3aSIpOwotICAgIGlmICghKG9wdGlvbnNbaWR4XS5mbGFncyAmIFBfV0FTX1NFVCkpCisgICAgaWYgKGlkeCA+PSAwICYmICEob3B0aW9uc1tpZHhdLmZsYWdzICYgUF9XQVNfU0VUKSkKIAlwX3dpbmRvdyA9IFJvd3MgLSAxOwogICAgIHNldF9udW1iZXJfZGVmYXVsdCgid2luZG93IiwgUm93cyAtIDEpOwogCkBAIC0zNTE5LDcgKzM1NDYsOCBAQAogICAgICAqIHdpdGggYSBkYXJrIGJhY2tncm91bmQsIHRoYXQgY2FuIGhhbmRsZSBjb2xvci4KICAgICAgKi8KICAgICBpZHggPSBmaW5kb3B0aW9uKChjaGFyX3UgKikiYmciKTsKLSAgICBpZiAoIShvcHRpb25zW2lkeF0uZmxhZ3MgJiBQX1dBU19TRVQpICYmICp0ZXJtX2JnX2RlZmF1bHQoKSA9PSAnZCcpCisgICAgaWYgKGlkeCA+PSAwICYmICEob3B0aW9uc1tpZHhdLmZsYWdzICYgUF9XQVNfU0VUKQorCQkJCQkJICYmICp0ZXJtX2JnX2RlZmF1bHQoKSA9PSAnZCcpCiAgICAgewogCXNldF9zdHJpbmdfb3B0aW9uX2RpcmVjdChOVUxMLCBpZHgsIChjaGFyX3UgKikiZGFyayIsIE9QVF9GUkVFLCAwKTsKIAkvKiBkb24ndCBtYXJrIGl0IGFzIHNldCwgd2hlbiBzdGFydGluZyB0aGUgR1VJIGl0IG1heSBiZQpAQCAtMzU5NCwxMCArMzYyMiwxNiBAQAogI2VuZGlmCiAKICAgICBpZHhfc3JyID0gZmluZG9wdGlvbigoY2hhcl91ICopInNyciIpOwotICAgIGRvX3NyciA9ICEob3B0aW9uc1tpZHhfc3JyXS5mbGFncyAmIFBfV0FTX1NFVCk7CisgICAgaWYgKGlkeF9zcnIgPCAwKQorCWRvX3NyciA9IEZBTFNFOworICAgIGVsc2UKKwlkb19zcnIgPSAhKG9wdGlvbnNbaWR4X3Nycl0uZmxhZ3MgJiBQX1dBU19TRVQpOwogI2lmZGVmIEZFQVRfUVVJQ0tGSVgKICAgICBpZHhfc3AgPSBmaW5kb3B0aW9uKChjaGFyX3UgKikic3AiKTsKLSAgICBkb19zcCA9ICEob3B0aW9uc1tpZHhfc3BdLmZsYWdzICYgUF9XQVNfU0VUKTsKKyAgICBpZiAoaWR4X3NwIDwgMCkKKwlkb19zcCA9IEZBTFNFOworICAgIGVsc2UKKwlkb19zcCA9ICEob3B0aW9uc1tpZHhfc3BdLmZsYWdzICYgUF9XQVNfU0VUKTsKICNlbmRpZgogCiAgICAgLyoKQEAgLTM2OTIsNyArMzcyNiw3IEBACiAJaW50CWlkeDM7CiAKIAlpZHgzID0gZmluZG9wdGlvbigoY2hhcl91ICopInNoY2YiKTsKLQlpZiAoIShvcHRpb25zW2lkeDNdLmZsYWdzICYgUF9XQVNfU0VUKSkKKwlpZiAoaWR4MyA+PSAwICYmICEob3B0aW9uc1tpZHgzXS5mbGFncyAmIFBfV0FTX1NFVCkpCiAJewogCSAgICBwX3NoY2YgPSAoY2hhcl91ICopIi1jIjsKIAkgICAgb3B0aW9uc1tpZHgzXS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gcF9zaGNmOwpAQCAtMzcwMiwxNCArMzczNiwxNCBAQAogIyAgaWZkZWYgV0lOMzI2NAogCS8qIFNvbWVob3cgV2luMzIgcmVxdWlyZXMgdGhlIHF1b3RlcyBhcm91bmQgdGhlIHJlZGlyZWN0aW9uIHRvbyAqLwogCWlkeDMgPSBmaW5kb3B0aW9uKChjaGFyX3UgKikic3hxIik7Ci0JaWYgKCEob3B0aW9uc1tpZHgzXS5mbGFncyAmIFBfV0FTX1NFVCkpCisJaWYgKGlkeDMgPj0gMCAmJiAhKG9wdGlvbnNbaWR4M10uZmxhZ3MgJiBQX1dBU19TRVQpKQogCXsKIAkgICAgcF9zeHEgPSAoY2hhcl91ICopIlwiIjsKIAkgICAgb3B0aW9uc1tpZHgzXS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gcF9zeHE7CiAJfQogIyAgZWxzZQogCWlkeDMgPSBmaW5kb3B0aW9uKChjaGFyX3UgKikic2hxIik7Ci0JaWYgKCEob3B0aW9uc1tpZHgzXS5mbGFncyAmIFBfV0FTX1NFVCkpCisJaWYgKGlkeDMgPj0gMCAmJiAhKG9wdGlvbnNbaWR4M10uZmxhZ3MgJiBQX1dBU19TRVQpKQogCXsKIAkgICAgcF9zaHEgPSAoY2hhcl91ICopIlwiIjsKIAkgICAgb3B0aW9uc1tpZHgzXS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gcF9zaHE7CkBAIC0zNzM4LDcgKzM3NzIsNyBAQAogICAgIGlmIChsYW5nID09IE5VTEwgfHwgU1RSTEVOKGxhbmcpIDwgMikJLyogc2FmZXR5IGNoZWNrICovCiAJcmV0dXJuOwogICAgIGlkeCA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKSJobGciKTsKLSAgICBpZiAoIShvcHRpb25zW2lkeF0uZmxhZ3MgJiBQX1dBU19TRVQpKQorICAgIGlmIChpZHggPj0gMCAmJiAhKG9wdGlvbnNbaWR4XS5mbGFncyAmIFBfV0FTX1NFVCkpCiAgICAgewogCWlmIChvcHRpb25zW2lkeF0uZmxhZ3MgJiBQX0FMTE9DRUQpCiAJICAgIGZyZWVfc3RyaW5nX29wdGlvbihwX2hsZyk7CkBAIC0zODA3LDcgKzM4NDEsNyBAQAogICAgICAqIG5vdCBuZWVkIHRvIGJlIGNvbnRhY3RlZC4KICAgICAgKi8KICAgICBpZHgxID0gZmluZG9wdGlvbigoY2hhcl91ICopInRpdGxlIik7Ci0gICAgaWYgKCEob3B0aW9uc1tpZHgxXS5mbGFncyAmIFBfV0FTX1NFVCkpCisgICAgaWYgKGlkeDEgPj0gMCAmJiAhKG9wdGlvbnNbaWR4MV0uZmxhZ3MgJiBQX1dBU19TRVQpKQogICAgIHsKICNpZmRlZiBGRUFUX0dVSQogCWlmIChndWkuc3RhcnRpbmcgfHwgZ3VpLmluX3VzZSkKQEAgLTM4MTksNyArMzg1Myw3IEBACiAJcF90aXRsZSA9IHZhbDsKICAgICB9CiAgICAgaWR4MSA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKSJpY29uIik7Ci0gICAgaWYgKCEob3B0aW9uc1tpZHgxXS5mbGFncyAmIFBfV0FTX1NFVCkpCisgICAgaWYgKGlkeDEgPj0gMCAmJiAhKG9wdGlvbnNbaWR4MV0uZmxhZ3MgJiBQX1dBU19TRVQpKQogICAgIHsKICNpZmRlZiBGRUFUX0dVSQogCWlmIChndWkuc3RhcnRpbmcgfHwgZ3VpLmluX3VzZSkKQEAgLTUyMjQsNyArNTI1OCw3IEBACiAgICAgaWYgKG9wdF9pZHggPT0gLTEpCQkvKiB1c2UgbmFtZSAqLwogICAgIHsKIAlvcHRfaWR4ID0gZmluZG9wdGlvbihuYW1lKTsKLQlpZiAob3B0X2lkeCA9PSAtMSkJLyogbm90IGZvdW5kIChzaG91bGQgbm90IGhhcHBlbikgKi8KKwlpZiAob3B0X2lkeCA8IDApCS8qIG5vdCBmb3VuZCAoc2hvdWxkIG5vdCBoYXBwZW4pICovCiAJewogCSAgICBFTVNHMihfKGVfaW50ZXJuMiksICJzZXRfc3RyaW5nX29wdGlvbl9kaXJlY3QoKSIpOwogCSAgICByZXR1cm47CkBAIC04MTI3LDcgKzgxNjEsNyBAQAogICAgIGxvbmdfdQlmbGFnczsKIAogICAgIG9wdF9pZHggPSBmaW5kb3B0aW9uKG5hbWUpOwotICAgIGlmIChvcHRfaWR4ID09IC0xKQorICAgIGlmIChvcHRfaWR4IDwgMCkKIAlFTVNHMihfKCJFMzU1OiBVbmtub3duIG9wdGlvbjogJXMiKSwgbmFtZSk7CiAgICAgZWxzZQogICAgIHsKQEAgLTk0NjQsNyArOTQ5OCw4IEBACiAgICAgY3VyYnVmLT5iX3BfbWEgPSBGQUxTRTsKICAgICBwX21hID0gRkFMU0U7CiAgICAgb3B0X2lkeCA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKSJtYSIpOwotICAgIG9wdGlvbnNbb3B0X2lkeF0uZGVmX3ZhbFtWSV9ERUZBVUxUXSA9IEZBTFNFOworICAgIGlmIChvcHRfaWR4ID49IDApCisJb3B0aW9uc1tvcHRfaWR4XS5kZWZfdmFsW1ZJX0RFRkFVTFRdID0gRkFMU0U7CiB9CiAKIC8qCkBAIC0xMDI5NywxMiArMTAzMzIsMTYgQEAKIGNoYW5nZV9jb21wYXRpYmxlKG9uKQogICAgIGludAkgICAgb247CiB7CisgICAgaW50CSAgICBvcHRfaWR4OworCiAgICAgaWYgKHBfY3AgIT0gb24pCiAgICAgewogCXBfY3AgPSBvbjsKIAljb21wYXRpYmxlX3NldCgpOwogICAgIH0KLSAgICBvcHRpb25zW2ZpbmRvcHRpb24oKGNoYXJfdSAqKSJjcCIpXS5mbGFncyB8PSBQX1dBU19TRVQ7CisgICAgb3B0X2lkeCA9IGZpbmRvcHRpb24oKGNoYXJfdSAqKSJjcCIpOworICAgIGlmIChvcHRfaWR4ID49IDApCisJb3B0aW9uc1tvcHRfaWR4XS5mbGFncyB8PSBQX1dBU19TRVQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvcG8vZGUucG8gYi9zcmMvcG8vZGUucG8KaW5kZXggZWVlOGUyZS4uMDQ2ZTJlYSAxMDA2NDQKLS0tIGEvc3JjL3BvL2RlLnBvCisrKyBiL3NyYy9wby9kZS5wbwpAQCAtNDk5OSw4ICs0OTk5LDggQEAKIG1zZ3N0ciAiRTM5NzogRGF0ZWluYW1lIHdpcmQgYmVu9nRpZ3QiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgotbXNnc3RyICJFNzQ3OiBGZWhsZW5kZSAnXSc6ICVzIgorbXNnaWQgIkU3ODk6IE1pc3NpbmcgJ10nOiAlcyIKK21zZ3N0ciAiRTc4OTogRmVobGVuZGUgJ10nOiAlcyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCmRpZmYgLS1naXQgYS9zcmMvcG8vZnIucG8gYi9zcmMvcG8vZnIucG8KaW5kZXggM2JmOTRiYS4uZjdiYzkwNyAxMDA2NDQKLS0tIGEvc3JjL3BvL2ZyLnBvCisrKyBiL3NyYy9wby9mci5wbwpAQCAtNzEsOCArNzEsMTUgQEAKICMgCQkJICAtIEh1bmRyZWRzIG9mIGVycm9yIG1lc3NhZ2VzIG51bWJlcnMgYWRkZWQgKHdvdykKICMgMjAwNi0wNC0xNSAgICBEQiAgICAgIFZpbSA3LjAgZmlyc3QgZHJhZnQsIGJhc2VkIG9uIGZyLnBvIDcuMGMwMwogIyAgICAgICAgICAgICAgICAgICAgICAgICAtIDI4NSBuZXcgbWVzc2FnZXMuCisjIDIwMDYtMDUtMTcgICAgREIgICAgICBWSU0gNy4wIHNlY29uZCBkcmFmdCwgc3RpbGwgNy4wYzAzCisjICAgICAgICAgICAgICAgICAgICAgICAgIC0gKGNoZWNrLnZpbSkgRml4ZWQgMiB3cm9uZyB0cmFuc2xhdGVkIG1lc3NhZ2VzLgorIyAyMDA2LTA1LTE5ICAgIERCICAgICAgVklNIDcuMCBzZWNvbmQgZHJhZnQsIDcuMGUwMgorIyAgICAgICAgICAgICAgICAgICAgICAgICAtIDE1IG5ldyBtZXNzYWdlcy4KKyMgMjAwNi0wNS0xOSAgICBEQiAgICAgIFZJTSA3LjAsIGJhc2VkIG9uIDcuMGUwMworIyAgICAgICAgICAgICAgICAgICAgICAgICAtIChjaGVjay52aW0pIEZpeGVkIHdyb25nIG1lc3NhZ2VzLgorIyAgICAgICAgICAgICAgICAgICAgICAgICAtIGhlYWRlciBjb21tZW50IG9mIHRoaXMgZmlsZSBzaG91bGQgYmUgdXBkYXRlZC4KICMKLSMgVHJhbnNsYXRlZDoJIDE2NzcvMTY3NyAoMTAwLjAwJSkKKyMgVHJhbnNsYXRlZDoJIDE2OTIvMTY5MiAoMTAwLjAwJSkKICMKICMgUG9saXNoaW5nIGRvbmUgb246CiAjICBidWZmZXIuYwpAQCAtOTQsNyArMTAxLDcgQEAKICJQcm9qZWN0LUlkLVZlcnNpb246IFZpbShGcmFu52FpcylcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogQWRyaWVuIEJlYXUgPHZlcnNpb24uZnJhbmNhaXNlQGZyZWUuZnI+XG4iCiAiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDYtMDQtMDEgMTc6MDkrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDYtMDQtMTUgMjI6NTMrMDIwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDYtMDQtMjEgMDA6MzErMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogRGF2aWQgQmxhbmNoZXQgPGRhdmlkLmJsYW5jaGV0QGZyZWUuZnI+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQWRyaWVuIEJlYXUgPHZlcnNpb24uZnJhbmNhaXNlQGZyZWUuZnI+XG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKQEAgLTExMCw3ICsxMTcsNyBAQAogIyAgICAgIGV4cGxpY2l0ZS4KIG1zZ2lkICJFODM6IENhbm5vdCBhbGxvY2F0ZSBidWZmZXIsIHVzaW5nIG90aGVyIG9uZS4uLiIKIG1zZ3N0ciAiIgotIkU4MzogTCdhbGxvY2F0aW9uIGR1IHRhbXBvbiBhIOljaG916TogYXJy6nRleiBWaW0sIGxpYulyZXogZGUgbGEgbeltb2lyZSIKKyJFODM6IEwnYWxsb2NhdGlvbiBkdSB0YW1wb24gYSDpY2hvdekgOiBhcnLqdGV6IFZpbSwgbGli6XJleiBkZSBsYSBt6W1vaXJlIgogCiBtc2dpZCAiRTUxNTogTm8gYnVmZmVycyB3ZXJlIHVubG9hZGVkIgogbXNnc3RyICJFNTE1OiBBdWN1biB0YW1wb24gbidhIOl06SBk6WNoYXJn6SIKQEAgLTMyNyw2ICszMzQsOSBAQAogbXNnaWQgIkUxMDM6IEJ1ZmZlciBcIiVzXCIgaXMgbm90IGluIGRpZmYgbW9kZSIKIG1zZ3N0ciAiRTEwMzogTGUgdGFtcG9uICVzIG4nZXN0IHBhcyBlbiBtb2RlIGRpZmYiCiAKK21zZ2lkICJFNzg3OiBCdWZmZXIgY2hhbmdlZCB1bmV4cGVjdGVkbHkiCittc2dzdHIgIkU3ODc6IExlIHRhbXBvbiBhIOl06SBtb2RpZmnpIGlub3BpbultZW50IgorCiAjIEFCIC0gSmUgY2hlcmNoZSB1bmUgdHJhZHVjdGlvbiBwbHVzIGNvbmNpc2UgcG91ciAiZXNjYXBlIi4KIG1zZ2lkICJFMTA0OiBFc2NhcGUgbm90IGFsbG93ZWQgaW4gZGlncmFwaCIKIG1zZ3N0ciAiRTEwNDogVW4gZGlncmFwaGUgbmUgcGV1dCBjb250ZW5pciBsZSBjYXJhY3TocmUgZCfpY2hhcHBlbWVudCIKQEAgLTM0Niw4ICszNTYsOCBAQAogCiAjIERCIC0gdG9kbyA6IEZhdXQtaWwgdW5lIG1hanVzY3VsZSDgICJtb2RlIiA/CiAjLiBjdHJsX3hfbW9kZSA9PSAwLCBeUC9eTiBjb21wbC4KLW1zZ2lkICIgXlggbW9kZSAoXl1eRF5FXkZeSV5LXkxeTl5PXlBeU15VXlZeWSkiCi1tc2dzdHIgIiBtb2RlIF5YICheXV5EXkVeRl5JXkteTF5OXk9eUF5TXlVeVl5ZKSIKK21zZ2lkICIgXlggbW9kZSAoXl1eRF5FXkZeSV5LXkxeTl5PXlBzXlVeVl5ZKSIKK21zZ3N0ciAiIG1vZGUgXlggKF5dXkReRV5GXkleS15MXk5eT15Qc15VXlZeWSkiCiAKIG1zZ2lkICIgV2hvbGUgbGluZSBjb21wbGV0aW9uICheTF5OXlApIgogbXNnc3RyICIgQ29tcGzodGVtZW50IGRlIGxpZ25lIGVudGnocmUgKF5MXk5eUCkiCkBAIC0zODgsOCArMzk4LDggQEAKIG1zZ2lkICIgT21uaSBjb21wbGV0aW9uICheT15OXlApIgogbXNnc3RyICIgQ29tcGzodGVtZW50IHNlbG9uIGxlIHR5cGUgZGUgZmljaGllciAoT21uaSkgKF5PXk5eUCkiCiAKLW1zZ2lkICIgU3BlbGxpbmcgc3VnZ2VzdGlvbiAoXlNeTl5QKSIKLW1zZ3N0ciAiIFN1Z2dlc3Rpb24gZCdvcnRob2dyYXBoZSAoXlNeTl5QKSIKK21zZ2lkICIgU3BlbGxpbmcgc3VnZ2VzdGlvbiAoc15OXlApIgorbXNnc3RyICIgU3VnZ2VzdGlvbiBkJ29ydGhvZ3JhcGhlIChzXk5eUCkiCiAKIG1zZ2lkICIgS2V5d29yZCBMb2NhbCBjb21wbGV0aW9uICheTl5QKSIKIG1zZ3N0ciAiIENvbXBs6HRlbWVudCBsb2NhbCBkZSBtb3QtY2zpICheTi9eUCkiCkBAIC02NTYsNiArNjY2LDIyIEBACiBtc2dpZCAiRTcyNDogdmFyaWFibGUgbmVzdGVkIHRvbyBkZWVwIGZvciBkaXNwbGF5aW5nIgogbXNnc3RyICJFNzI0OiB2YXJpYWJsZSB0cm9wIGltYnJpcXXpZSBwb3VyIOp0cmUgYWZmaWNoZXIiCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTExNzogVW5rbm93biBmdW5jdGlvbjogJXMiCittc2dzdHIgIkUxMTc6IEZvbmN0aW9uIGluY29ubnVlIDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTExOTogTm90IGVub3VnaCBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uOiAlcyIKK21zZ3N0ciAiRTExOTogTGEgZm9uY3Rpb24gJXMgbidhIHBhcyByZed1IGFzc2V6IGQnYXJndW1lbnRzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkUxMjA6IFVzaW5nIDxTSUQ+IG5vdCBpbiBhIHNjcmlwdCBjb250ZXh0OiAlcyIKK21zZ3N0ciAiRTEyMDogPFNJRD4gdXRpbGlz6SBlbiBkZWhvcnMgZCd1biBzY3JpcHQgOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNzI1OiBDYWxsaW5nIGRpY3QgZnVuY3Rpb24gd2l0aG91dCBEaWN0aW9uYXJ5OiAlcyIKK21zZ3N0ciAiRTcyNTogQXBwZWwgZCd1bmUgZm9uY3Rpb24gqyBkaWN0ILsgc2FucyBEaWN0aW9ubmFpcmUgOiAlcyIKKwogbXNnaWQgIkU2OTk6IFRvbyBtYW55IGFyZ3VtZW50cyIKIG1zZ3N0ciAiRTY5OTogVHJvcCBkJ2FyZ3VtZW50cyIKIApAQCAtNjk2LDggKzcyMiw4IEBACiBtc2dpZCAiY2FsbGVkIGlucHV0cmVzdG9yZSgpIG1vcmUgb2Z0ZW4gdGhhbiBpbnB1dHNhdmUoKSIKIG1zZ3N0ciAiaW5wdXRyZXN0b3JlKCkgYSDpdOkgYXBwZWzpIHBsdXMgZGUgZm9pcyBxdSdpbnB1dHNhdmUoKSIKIAotbXNnaWQgIkU3NDU6IFJhbmdlIG5vdCBhbGxvd2VkIgotbXNnc3RyICJFNzQ1OiBMZXMgcGxhZ2VzIG5lIHNvbnQgcGFzIGF1dG9yaXPpcyIKK21zZ2lkICJFNzg2OiBSYW5nZSBub3QgYWxsb3dlZCIKK21zZ3N0ciAiRTc4NjogTGVzIHBsYWdlcyBuZSBzb250IHBhcyBhdXRvcmlz6XMiCiAKIG1zZ2lkICJFNzAxOiBJbnZhbGlkIHR5cGUgZm9yIGxlbigpIgogbXNnc3RyICJFNzAxOiBUeXBlIGludmFsaWRlIGF2ZWMgbGVuKCkiCkBAIC0xMjAwLDcgKzEyMjYsOCBAQAogCiBtc2dpZCAiRTE0NjogUmVndWxhciBleHByZXNzaW9ucyBjYW4ndCBiZSBkZWxpbWl0ZWQgYnkgbGV0dGVycyIKIG1zZ3N0ciAiIgotIkUxNDY6IExlcyBleHByZXNzaW9ucyBy6Wd1bGnocmVzIG5lIHBldXZlbnQgcGFzIOp0cmUgZOlsaW1pdOllcyBwYXIgZGVzIGxldHRyZXMiCisiRTE0NjogTGVzIGV4cHJlc3Npb25zIHLpZ3VsaehyZXMgbmUgcGV1dmVudCBwYXMg6nRyZSBk6WxpbWl06WVzIHBhciBkZXMgIgorImxldHRyZXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVwbGFjZSB3aXRoICVzICh5L24vYS9xL2wvXkUvXlkpPyIKQEAgLTEyNjYsNyArMTI5Myw2IEBACiBtc2dpZCAiRTQ3ODogRG9uJ3QgcGFuaWMhIgogbXNnc3RyICJFNDc4OiBQYXMgZGUgcGFuaXF1ZSAhIgogCi0jIERCIC0gYy1mb3JtYXQgOiBsYW5ndWUgZGUgbCdhaWRlIHB1aXMgc3VqZXQgZGUgbCdhaWRlLgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNjYxOiBTb3JyeSwgbm8gJyVzJyBoZWxwIGZvciAlcyIKIG1zZ3N0ciAiRTY2MTogROlzb2zpLCBhdWN1bmUgYWlkZSBlbiBsYW5ndWUgJyVzJyBwb3VyICVzIgpAQCAtMTMwNCw3ICsxMzMwLDcgQEAKICMgREIgLSBTdWdnZXN0aW9uLgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTU0OiBEdXBsaWNhdGUgdGFnIFwiJXNcIiBpbiBmaWxlICVzLyVzIgotbXNnc3RyICJFMTU0OiBNYXJxdWV1ciBcIiVzXCIgZHVwbGlxdekgZmljaGllciAlcy8lcyIKK21zZ3N0ciAiRTE1NDogTWFycXVldXIgXCIlc1wiIGR1cGxpcXXpIGRhbnMgbGUgZmljaGllciAlcy8lcyIKIAogIyBBQiAtIElsIGZhdXQgcmVzcGVjdGVyIGwnZXNwcml0IHBsdXMgcXVlIGxhIGxldHRyZS4KICMsIGMtZm9ybWF0CkBAIC0xMzc1LDkgKzE0MDEsOCBAQAogbXNnaWQgIkU0NjQ6IEFtYmlndW91cyB1c2Ugb2YgdXNlci1kZWZpbmVkIGNvbW1hbmQiCiBtc2dzdHIgIkU0NjQ6IFV0aWxpc2F0aW9uIGFtYmln/GUgZCd1bmUgY29tbWFuZGUgZOlmaW5pZSBwYXIgbCd1dGlsaXNhdGV1ciIKIAotIyBEQiAtIEVzcGFjZSBmaW5hbCBjYXIgVmltIHBldXQgYWpvdXRlciAiOiA8aW5mb3JtYXRpb25zPiIg4CBsYSBzdWl0ZQogbXNnaWQgIkU0OTI6IE5vdCBhbiBlZGl0b3IgY29tbWFuZCIKLW1zZ3N0ciAiRTQ5MjogQ29tbWFuZGUgaW5jb25udWUgIgorbXNnc3RyICJFNDkyOiBDb21tYW5kZSBpbmNvbm51ZSIKIAogbXNnaWQgIkU0OTM6IEJhY2t3YXJkcyByYW5nZSBnaXZlbiIKIG1zZ3N0ciAiRTQ5MzogTGEgcGxhZ2Ugc3DpY2lmaellIGVzdCBpbnZlcnPpZSIKQEAgLTE0NDQsOCArMTQ2OSw3IEBACiBtc2dzdHIgIkUxODI6IE5vbSBkZSBjb21tYW5kZSBpbnZhbGlkZSIKIAogbXNnaWQgIkUxODM6IFVzZXIgZGVmaW5lZCBjb21tYW5kcyBtdXN0IHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlciIKLW1zZ3N0ciAiIgotIkUxODM6IExlcyBjb21tYW5kZXMgdXRpbGlzYXRldXIgZG9pdmVudCBjb21tZW5jZXIgcGFyIHVuZSBtYWp1c2N1bGUiCittc2dzdHIgIkUxODM6IExlcyBjb21tYW5kZXMgdXRpbGlzYXRldXIgZG9pdmVudCBjb21tZW5jZXIgcGFyIHVuZSBtYWp1c2N1bGUiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4NDogTm8gc3VjaCB1c2VyLWRlZmluZWQgY29tbWFuZDogJXMiCkBAIC0xNDg3LDExICsxNTExLDEwIEBACiBtc2dpZCAiQXBwZW5kIEZpbGUiCiBtc2dzdHIgIkFqb3V0ZXIgZmljaGllciIKIAotIyBEQiAtIHRvZG8gOiBsZSBtZXNzYWdlcyBkJ2FpZGUgKCI6aCBFNzQ3IikgbidhIHJpZW4g4CB2b2lyLi4uCiBtc2dpZCAiRTc0NzogQ2Fubm90IGNoYW5nZSBkaXJlY3RvcnksIGJ1ZmZlciBpcyBtb2RpZmVkIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIiIKLSJFNzQ3OiBUYW1wb24gbW9kaWZp6SA6IGltcG9zc2libGUgZGUgY2hhbmdlciBkZSBy6XBlcnRvaXJlIChham91dGV6ICEgIgotInBvdXIgcGFzc2VyIG91dHJlKSIKKyJFNzQ3OiBUYW1wb24gbW9kaWZp6SA6IGltcG9zc2libGUgZGUgY2hhbmdlciBkZSBy6XBlcnRvaXJlIChham91dGV6ICEgcG91ciAiCisicGFzc2VyIG91dHJlKSIKIAogbXNnaWQgIkUxODY6IE5vIHByZXZpb3VzIGRpcmVjdG9yeSIKIG1zZ3N0ciAiRTE4NjogUGFzIGRlIHLpcGVydG9pcmUgcHLpY+lkZW50IgpAQCAtMTU1NSw4ICsxNTc4LDcgQEAKIG1zZ3N0ciAiRTQ5NjogQXVjdW4gbnVt6XJvIGRlIHRhbXBvbiBkJ2F1dG9jb21tYW5kZSDgIHN1YnN0aXR1ZXIg4CBcIjxhYnVmPlwiIgogCiBtc2dpZCAiRTQ5Nzogbm8gYXV0b2NvbW1hbmQgbWF0Y2ggbmFtZSB0byBzdWJzdGl0dXRlIGZvciBcIjxhbWF0Y2g+XCIiCi1tc2dzdHIgIiIKLSJFNDk3OiBBdWN1bmUgY29ycmVzcG9uZGFuY2UgZCdhdXRvY29tbWFuZGUg4CBzdWJzdGl0dWVyIOAgXCI8YW1hdGNoPlwiIgorbXNnc3RyICJFNDk3OiBBdWN1bmUgY29ycmVzcG9uZGFuY2UgZCdhdXRvY29tbWFuZGUg4CBzdWJzdGl0dWVyIOAgXCI8YW1hdGNoPlwiIgogCiBtc2dpZCAiRTQ5ODogbm8gOnNvdXJjZSBmaWxlIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgXCI8c2ZpbGU+XCIiCiBtc2dzdHIgIkU0OTg6IEF1Y3VuIG5vbSBkZSBmaWNoaWVyIDpzb3VyY2Ug4CBzdWJzdGl0dWVyIOAgXCI8c2ZpbGU+XCIiCkBAIC0xNjY0LDEyICsxNjg2LDE1IEBACiBtc2dpZCAiRTYwMzogOmNhdGNoIHdpdGhvdXQgOnRyeSIKIG1zZ3N0ciAiRTYwMzogOmNhdGNoIHNhbnMgOnRyeSIKIAorIy4gR2l2ZSB1cCBmb3IgYSAiOmNhdGNoIiBhZnRlciAiOmZpbmFsbHkiIGFuZCBpZ25vcmUgaXQuCisjLiAqIEp1c3QgcGFyc2UuCiBtc2dpZCAiRTYwNDogOmNhdGNoIGFmdGVyIDpmaW5hbGx5IgogbXNnc3RyICJFNjA0OiA6Y2F0Y2ggYXBy6HMgOmZpbmFsbHkiCiAKIG1zZ2lkICJFNjA2OiA6ZmluYWxseSB3aXRob3V0IDp0cnkiCiBtc2dzdHIgIkU2MDY6IDpmaW5hbGx5IHNhbnMgOnRyeSIKIAorIy4gR2l2ZSB1cCBmb3IgYSBtdWx0aXBsZSAiOmZpbmFsbHkiIGFuZCBpZ25vcmUgaXQuCiBtc2dpZCAiRTYwNzogbXVsdGlwbGUgOmZpbmFsbHkiCiBtc2dzdHIgIkU2MDc6IElsIG5lIHBldXQgeSBhdm9pciBxdSd1biBzZXVsIDpmaW5hbGx5IgogCkBAIC0xNjc5LDYgKzE3MDQsOSBAQAogbXNnaWQgIkUxOTM6IDplbmRmdW5jdGlvbiBub3QgaW5zaWRlIGEgZnVuY3Rpb24iCiBtc2dzdHIgIkUxOTM6IDplbmRmdW5jdGlvbiBlbiBkZWhvcnMgZCd1bmUgZm9uY3Rpb24iCiAKK21zZ2lkICJFNzg4OiBOb3QgYWxsb3dlZCB0byBlZGl0IGFub3RoZXIgYnVmZmVyIG5vdyIKK21zZ3N0ciAiRTc4ODogTCfpZGl0aW9uIGQndW4gYXV0cmUgdGFtcG9uIG4nZXN0IHBsdXMgcGVybWlzZSIKKwogIyBEQiAtIFRPRE8gOiBQYXMgY29tcHJpcyBsZSBtZXNzYWdlIG5pIGNvbW1lbnQgbGUgZOljbGVuY2hlciBtYWxncukgdW5lIHZpc2l0ZQogIyAgICAgIGRhbnMgbGUgY29kZS4KIG1zZ2lkICJ0YWduYW1lIgpAQCAtMTc1NCw2ICsxNzgyLDcgQEAKIG1zZ2lkICJSZWFkaW5nIGZyb20gc3RkaW4uLi4iCiBtc2dzdHIgIkxlY3R1cmUgZGUgc3RkaW4uLi4iCiAKKyMuIFJlLW9wZW5pbmcgdGhlIG9yaWdpbmFsIGZpbGUgZmFpbGVkIQogbXNnaWQgIkUyMDI6IENvbnZlcnNpb24gbWFkZSBmaWxlIHVucmVhZGFibGUhIgogbXNnc3RyICJFMjAyOiBMYSBjb252ZXJzaW9uIGEgcmVuZHUgbGUgZmljaGllciBpbGxpc2libGUgISIKIApAQCAtMTgzMSwxNyArMTg2MCwxNSBAQAogbXNnc3RyICJlc3QgZW4gbGVjdHVyZSBzZXVsZSAoYWpvdXRleiAhIHBvdXIgcGFzc2VyIG91dHJlKSIKIAogbXNnaWQgIkU1MDY6IENhbid0IHdyaXRlIHRvIGJhY2t1cCBmaWxlIChhZGQgISB0byBvdmVycmlkZSkiCi1tc2dzdHIgIiIKLSJFNTA2OiBJbXBvc3NpYmxlIGQn6WNyaXJlIGxhIGNvcGllIGRlIHNlY291cnMgKCEgcG91ciBwYXNzZXIgb3V0cmUpIgorbXNnc3RyICJFNTA2OiBJbXBvc3NpYmxlIGQn6WNyaXJlIGxhIGNvcGllIGRlIHNlY291cnMgKCEgcG91ciBwYXNzZXIgb3V0cmUpIgogCiBtc2dpZCAiRTUwNzogQ2xvc2UgZXJyb3IgZm9yIGJhY2t1cCBmaWxlIChhZGQgISB0byBvdmVycmlkZSkiCi1tc2dzdHIgIiIKLSJFNTA3OiBFcnJldXIgZGUgZmVybWV0dXJlIGRlIGxhIGNvcGllIGRlIHNlY291cnMgKCEgcG91ciBwYXNzZXIgb3V0cmUpIgorbXNnc3RyICJFNTA3OiBFcnJldXIgZGUgZmVybWV0dXJlIGRlIGxhIGNvcGllIGRlIHNlY291cnMgKCEgcG91ciBwYXNzZXIgb3V0cmUpIgogCiBtc2dpZCAiRTUwODogQ2FuJ3QgcmVhZCBmaWxlIGZvciBiYWNrdXAgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiIgotIkU1MDg6IEltcG9zc2libGUgZGUgbGlyZSBsZSBmaWNoaWVyIHBvdXIgbGEgY29waWUgZGUgc2Vjb3VycyAoYWpvdXRleiAhICIKLSJwb3VyIHBhc3NlciBvdXRyZSkiCisiRTUwODogSW1wb3NzaWJsZSBkZSBsaXJlIGxlIGZpY2hpZXIgcG91ciBsYSBjb3BpZSBkZSBzZWNvdXJzIChham91dGV6ICEgcG91ciAiCisicGFzc2VyIG91dHJlKSIKIAogbXNnaWQgIkU1MDk6IENhbm5vdCBjcmVhdGUgYmFja3VwIGZpbGUgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiIgpAQCAtMTk2Myw2ICsxOTkwLDkgQEAKIG1zZ2lkICJbSW5jb21wbGV0ZSBsYXN0IGxpbmVdIgogbXNnc3RyICJbRGVybmnocmUgbGlnbmUgaW5jb21wbOh0ZV0iCiAKKyMuIGRvbid0IG92ZXJ3cml0ZSBtZXNzYWdlcyBoZXJlCisjLiBtdXN0IGdpdmUgdGhpcyBwcm9tcHQKKyMuIGRvbid0IHVzZSBlbXNnKCkgaGVyZSwgZG9uJ3Qgd2FudCB0byBmbHVzaCB0aGUgYnVmZmVycwogbXNnaWQgIldBUk5JTkc6IFRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UgcmVhZGluZyBpdCEhISIKIG1zZ3N0ciAiQUxFUlRFOiBMZSBmaWNoaWVyIGEg6XTpIG1vZGlmaekgZGVwdWlzIHF1ZSBWaW0gbCdhIGx1ICEiCiAKQEAgLTIwNDQsNiArMjA3NCw3IEBACiBtc2dpZCAiYXV0by1yZW1vdmluZyBhdXRvY29tbWFuZDogJXMgPGJ1ZmZlcj0lZD4iCiBtc2dzdHIgIkF1dG9jb21tYW5kZXMgbWFycXXpZXMgcG91ciBhdXRvLXN1cHByZXNzaW9uIDogJXMgPHRhbXBvbj0lZD4iCiAKKyMuIHRoZSBncm91cCBkb2Vzbid0IGV4aXN0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzNjc6IE5vIHN1Y2ggZ3JvdXA6IFwiJXNcIiIKIG1zZ3N0ciAiRTM2NzogQXVjdW4gZ3JvdXBlIFwiJXNcIiIKQEAgLTIzNTYsMTEgKzIzODcsMTEgQEAKIG1zZ2lkICJGaW5kICYgUmVwbGFjZSAodXNlICdcXFxcJyB0byBmaW5kICBhICdcXCcpIgogbXNnc3RyICJDaGVyY2hlciBldCByZW1wbGFjZXIgKHV0aWxpc2V6ICdcXFxcJyBwb3VyIHRyb3V2ZXIgdW4gJ1xcJykiCiAKLSMuIFdlIGZha2UgdGhpczogVXNlIGEgZmlsdGVyIHRoYXQgZG9lc24ndCBzZWxlY3QgYW55dGhpbmcgYW5kIGEgZGVmYXVsdAotIy4gKiBmaWxlIG5hbWUgdGhhdCB3b24ndCBiZSB1c2VkLgogIyBEQiAtIFRyYWR1Y3Rpb24gbm9uIGluZGlzcGVuc2FibGUgcHVpc3F1ZSBsZSBjb2RlIGluZGlxdWUgcXUnaWwgcydhZ2l0IGQndW4KICMgICAgICBwYXJhbel0cmFnZSBiaWRvbiBhZmluIGRlIHPpbGVjdGlvbm5lciB1biBy6XBlcnRvaXJlIHBsdXT0dCBxdSd1bgogIyAgICAgIGZpY2hpZXIuCisjLiBXZSBmYWtlIHRoaXM6IFVzZSBhIGZpbHRlciB0aGF0IGRvZXNuJ3Qgc2VsZWN0IGFueXRoaW5nIGFuZCBhIGRlZmF1bHQKKyMuICogZmlsZSBuYW1lIHRoYXQgd29uJ3QgYmUgdXNlZC4KIG1zZ2lkICJOb3QgVXNlZCIKIG1zZ3N0ciAiTm9uIHV0aWxpc+kiCiAKQEAgLTI0MzQsNiArMjQ2NSw3IEBACiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIk5vbSA6IgogCisjLiBjcmVhdGUgdG9nZ2xlIGJ1dHRvbgogbXNnaWQgIlNob3cgc2l6ZSBpbiBQb2ludHMiCiBtc2dzdHIgIkFmZmljaGVyIGxhIHRhaWxsZSBlbiBQb2ludHMiCiAKQEAgLTI1MTYsOCArMjU0OCw3IEBACiAiRTY3NDogJ3ByaW50bWJjaGFyc2V0JyBuZSBwZXV0IHBhcyDqdHJlIHZpZGUgYXZlYyB1biBlbmNvZGFnZSBtdWx0aS1vY3RldHMiCiAKIG1zZ2lkICJFNjc1OiBObyBkZWZhdWx0IGZvbnQgc3BlY2lmaWVkIGZvciBtdWx0aS1ieXRlIHByaW50aW5nLiIKLW1zZ3N0ciAiIgotIkU2NzU6IEF1Y3VuZSBwb2xpY2UgcGFyIGTpZmF1dCBwb3VyIGwnaW1wcmVzc2lvbiBtdWx0aS1vY3RldHMiCittc2dzdHIgIkU2NzU6IEF1Y3VuZSBwb2xpY2UgcGFyIGTpZmF1dCBwb3VyIGwnaW1wcmVzc2lvbiBtdWx0aS1vY3RldHMiCiAKIG1zZ2lkICJFMzI0OiBDYW4ndCBvcGVuIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCiBtc2dzdHIgIkUzMjQ6IEltcG9zc2libGUgZCdvdXZyaXIgbGUgZmljaGllciBQb3N0U2NyaXB0IGRlIHNvcnRpZSIKQEAgLTI2MjcsOCArMjY1OCw3IEBACiAjIERCIC0gdG9kbwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjU5OiBubyBtYXRjaGVzIGZvdW5kIGZvciBjc2NvcGUgcXVlcnkgJXMgb2YgJXMiCi1tc2dzdHIgIiIKLSJFMjU5OiBhdWN1bmUgY29ycmVzcG9uZGFuY2UgdHJvdXbpZSBwb3VyIGxhIHJlcXXqdGUgY3Njb3BlICVzIGRlICVzIgorbXNnc3RyICJFMjU5OiBhdWN1bmUgY29ycmVzcG9uZGFuY2UgdHJvdXbpZSBwb3VyIGxhIHJlcXXqdGUgY3Njb3BlICVzIGRlICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0Njk6IGludmFsaWQgY3Njb3BlcXVpY2tmaXggZmxhZyAlYyBmb3IgJWMiCkBAIC0yNjYzLDYgKzI2OTMsNyBAQAogbXNnaWQgImNzY29wZSBjb25uZWN0aW9uICVzIGNsb3NlZCIKIG1zZ3N0ciAiY29ubmV4aW9uIGNzY29wZSAlcyBmZXJt6WUiCiAKKyMuIHNob3VsZCBub3QgcmVhY2ggaGVyZQogbXNnaWQgIkU1NzA6IGZhdGFsIGVycm9yIGluIGNzX21hbmFnZV9tYXRjaGVzIgogbXNnc3RyICJFNTcwOiBlcnJldXIgZmF0YWxlIGRhbnMgY3NfbWFuYWdlX21hdGNoZXMiCiAKQEAgLTI4MTcsMTIgKzI4NDgsMzMgQEAKIG1zZ2lkICJubyBzdWNoIHdpbmRvdyIKIG1zZ3N0ciAiQ2V0dGUgZmVu6nRyZSBuJ2V4aXN0ZSBwYXMiCiAKK21zZ2lkICJFMjY1OiAkXyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFN0cmluZyIKK21zZ3N0ciAiRTI2NTogJF8gZG9pdCDqdHJlIHVuZSBpbnN0YW5jZSBkZSBjaGHubmUgKFN0cmluZykiCisKIG1zZ2lkICIiCiAiRTI2NjogU29ycnksIHRoaXMgY29tbWFuZCBpcyBkaXNhYmxlZCwgdGhlIFJ1YnkgbGlicmFyeSBjb3VsZCBub3QgYmUgbG9hZGVkLiIKIG1zZ3N0ciAiIgogIkUyNjY6IETpc29s6SwgY29tbWFuZGUgZOlzYWN0aXbpZSA6IGxhIGJpYmxpb3Ro6HF1ZSBSdWJ5IG4nYSBwYXMgcHUg6nRyZSAiCiAiY2hhcmfpZS4iCiAKK21zZ2lkICJFMjY3OiB1bmV4cGVjdGVkIHJldHVybiIKK21zZ3N0ciAiRTI2NzogqyByZXR1cm4guyBpbmF0dGVuZHUiCisKK21zZ2lkICJFMjY4OiB1bmV4cGVjdGVkIG5leHQiCittc2dzdHIgIkUyNjg6IKsgbmV4dCC7IGluYXR0ZW5kdSIKKworbXNnaWQgIkUyNjk6IHVuZXhwZWN0ZWQgYnJlYWsiCittc2dzdHIgIkUyNjk6IKsgYnJlYWsguyBpbmF0dGVuZHUiCisKK21zZ2lkICJFMjcwOiB1bmV4cGVjdGVkIHJlZG8iCittc2dzdHIgIkUyNzA6IKsgcmVkbyC7IGluYXR0ZW5kdSIKKworbXNnaWQgIkUyNzE6IHJldHJ5IG91dHNpZGUgb2YgcmVzY3VlIGNsYXVzZSIKK21zZ3N0ciAiRTI3MTogqyByZXRyeSC7IGhvcnMgZCd1bmUgY2xhdXNlIKsgcmVzY3VlILsiCisKK21zZ2lkICJFMjcyOiB1bmhhbmRsZWQgZXhjZXB0aW9uIgorbXNnc3RyICJFMjcyOiBFeGNlcHRpb24gbm9uIHByaXNlIGVuIGNoYXJnZSIKKwogIyBEQiAtIHRvZG8KICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI3MzogdW5rbm93biBsb25nam1wIHN0YXR1cyAlZCIKQEAgLTMwNDcsNiArMzA5OSw3IEBACiBtc2dpZCAiVmltOiBXYXJuaW5nOiBJbnB1dCBpcyBub3QgZnJvbSBhIHRlcm1pbmFsXG4iCiBtc2dzdHIgIlZpbTogQWxlcnRlOiBMJ2VudHLpZSBuZSBzZSBmYWl0IHBhcyBzdXIgdW4gdGVybWluYWxcbiIKIAorIy4ganVzdCBpbiBjYXNlLi4KIG1zZ2lkICJwcmUtdmltcmMgY29tbWFuZCBsaW5lIgogbXNnc3RyICJsaWduZSBkZSBjb21tYW5kZSBwcmUtdmltcmMiCiAKQEAgLTMwOTUsNyArMzE0OCw4IEBACiAjIERCIC0gdG9kbyAoVk1TIHVuaXF1ZW1lbnQpLgogbXNnaWQgIndoZXJlIGNhc2UgaXMgaWdub3JlZCBwcmVwZW5kIC8gdG8gbWFrZSBmbGFnIHVwcGVyIGNhc2UiCiBtc2dzdHIgIiIKLSJwb3VyIGxlc3F1ZWxzIGxhIGNhc3NlIGVzdCBpbmRpZmbpcmVudGUgKC8gcG91ciBxdWUgbGUgZHJhcGVhdSBzb2l0IG1hanVzY3VsZSkiCisicG91ciBsZXNxdWVscyBsYSBjYXNzZSBlc3QgaW5kaWZm6XJlbnRlICgvIHBvdXIgcXVlIGxlIGRyYXBlYXUgc29pdCAiCisibWFqdXNjdWxlKSIKIAogbXNnaWQgIiIKICJcbiIKQEAgLTMxMjMsNyArMzE3Nyw4IEBACiAKIG1zZ2lkICItZiAgb3IgIC0tbm9mb3JrXHRGb3JlZ3JvdW5kOiBEb24ndCBmb3JrIHdoZW4gc3RhcnRpbmcgR1VJIgogbXNnc3RyICIiCi0iLWYsIC0tbm9mb3JrXHRQcmVtaWVyLXBsYW4gOiBuZSBwYXMgZOl0YWNoZXIgbCdpbnRlcmZhY2UgZ3JhcGhpcXVlIGR1IHRlcm1pbmFsIgorIi1mLCAtLW5vZm9ya1x0UHJlbWllci1wbGFuIDogbmUgcGFzIGTpdGFjaGVyIGwnaW50ZXJmYWNlIGdyYXBoaXF1ZSBkdSAiCisidGVybWluYWwiCiAKIG1zZ2lkICItdlx0XHRcdFZpIG1vZGUgKGxpa2UgXCJ2aVwiKSIKIG1zZ3N0ciAiLXZcdFx0TW9kZSBWaSAoY29tbWUgXCJ2aVwiKSIKQEAgLTMyNzgsNyArMzMzMyw4IEBACiAKIG1zZ2lkICItLXJlbW90ZS1leHByIDxleHByPlx0RXZhbHVhdGUgPGV4cHI+IGluIGEgVmltIHNlcnZlciBhbmQgcHJpbnQgcmVzdWx0IgogbXNnc3RyICIiCi0iLS1yZW1vdGUtZXhwciA8ZXhwcj5cdMl2YWx1ZXIgPGV4cHI+IGRhbnMgdW4gc2VydmV1ciBWaW0sIGFmZmljaGVyIGxlIHLpc3VsdGF0IgorIi0tcmVtb3RlLWV4cHIgPGV4cHI+XHTJdmFsdWVyIDxleHByPiBkYW5zIHVuIHNlcnZldXIgVmltLCBhZmZpY2hlciBsZSAiCisiculzdWx0YXQiCiAKIG1zZ2lkICItLXNlcnZlcmxpc3RcdFx0TGlzdCBhdmFpbGFibGUgVmltIHNlcnZlciBuYW1lcyBhbmQgZXhpdCIKIG1zZ3N0ciAiIgpAQCAtMzMxMiw3ICszMzY4LDcgQEAKIAogbXNnaWQgIiIKICJcbiIKLSJBcmd1bWVudHMgcmVjb2duaXNlZCBieSBndmltIChBdGhlbmEgdmVyc2lvbikgOlxuIgorIkFyZ3VtZW50cyByZWNvZ25pc2VkIGJ5IGd2aW0gKEF0aGVuYSB2ZXJzaW9uKTpcbiIKIG1zZ3N0ciAiIgogIlxuIgogIkFyZ3VtZW50cyByZWNvbm51cyBwYXIgZ3ZpbSAodmVyc2lvbiBBdGhlbmEpIDpcbiIKQEAgLTMzOTQsOCArMzQ1MCw3IEBACiAiLWRpc3BsYXkgPGRpc3BsYXk+XHRMYW5jZXIgVmltIHN1ciBjZSA8ZGlzcGxheT5cdCjpZ2FsZW1lbnQgOiAtLWRpc3BsYXkpIgogCiBtc2dpZCAiLS1yb2xlIDxyb2xlPlx0U2V0IGEgdW5pcXVlIHJvbGUgdG8gaWRlbnRpZnkgdGhlIG1haW4gd2luZG93IgotbXNnc3RyICIiCi0iLS1yb2xlIDxy9GxlPlx0RG9ubmVyIHVuIHL0bGUgcG91ciBpZGVudGlmaWVyIGxhIGZlbup0cmUgcHJpbmNpcGFsZSIKK21zZ3N0ciAiLS1yb2xlIDxy9GxlPlx0RG9ubmVyIHVuIHL0bGUgcG91ciBpZGVudGlmaWVyIGxhIGZlbup0cmUgcHJpbmNpcGFsZSIKIAogbXNnaWQgIi0tc29ja2V0aWQgPHhpZD5cdE9wZW4gVmltIGluc2lkZSBhbm90aGVyIEdUSyB3aWRnZXQiCiBtc2dzdHIgIi0tc29ja2V0aWQgPHhpZD5cdE91dnJpciBWaW0gZGFucyB1biBhdXRyZSB3aWRnZXQgR1RLIgpAQCAtMzUwNCw3ICszNTU5LDggQEAKIAogbXNnaWQgIkUyODk6IGlucHV0IG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgbXkgcHJlZWRpdCB0eXBlIgogbXNnc3RyICIiCi0iRTI4OTogbGUgdHlwZSBkZSBwcunpZGl0aW9uIGRlIFZpbSBuJ2VzdCBwYXMgc3VwcG9ydOkgcGFyIGxhIG3pdGhvZGUgZGUgc2Fpc2llIgorIkUyODk6IGxlIHR5cGUgZGUgcHLp6WRpdGlvbiBkZSBWaW0gbidlc3QgcGFzIHN1cHBvcnTpIHBhciBsYSBt6XRob2RlIGRlICIKKyJzYWlzaWUiCiAKICMgREIgLSB0b2RvCiBtc2dpZCAiRTI5MDogb3Zlci10aGUtc3BvdCBzdHlsZSByZXF1aXJlcyBmb250c2V0IgpAQCAtMzU3Niw4ICszNjMyLDggQEAKICJNYXliZSBubyBjaGFuZ2VzIHdlcmUgbWFkZSBvciBWaW0gZGlkIG5vdCB1cGRhdGUgdGhlIHN3YXAgZmlsZS4iCiBtc2dzdHIgIiIKICJcbiIKLSJJbCBlc3QgcG9zc2libGUgcXUnYXVjdW5lIG1vZGlmLiBuJ2Eg6XTpIGZhaXRlIG91IHF1ZSBWaW0gbidhIHBhcyBtaXMg4CBqb3VyICIKLSIgbGUgZmljaGllciBkJ+ljaGFuZ2UuIgorIklsIGVzdCBwb3NzaWJsZSBxdSdhdWN1bmUgbW9kaWYuIG4nYSDpdOkgZmFpdGUgb3UgcXVlIFZpbSBuJ2EgcGFzIG1pcyDgICIKKyJqb3VyICBsZSBmaWNoaWVyIGQn6WNoYW5nZS4iCiAKIG1zZ2lkICIgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgVmltLlxuIgogbXNnc3RyICIgbmUgcGV1dCBwYXMg6nRyZSB1dGlsaXPpIGF2ZWMgY2V0dGUgdmVyc2lvbiBkZSBWaW0uXG4iCkBAIC0zNjUxLDcgKzM3MDcsOCBAQAogbXNnaWQgIiIKICJFMzEyOiBFcnJvcnMgZGV0ZWN0ZWQgd2hpbGUgcmVjb3ZlcmluZzsgbG9vayBmb3IgbGluZXMgc3RhcnRpbmcgd2l0aCA/Pz8iCiBtc2dzdHIgIiIKLSJFMzEyOiBFcnJldXJzIGxvcnMgZGUgbGEgculjdXDpcmF0aW9uIDsgZXhhbWluZXogbGVzIGxpZ25lcyBjb21tZW7nYW50IHBhciA/Pz8iCisiRTMxMjogRXJyZXVycyBsb3JzIGRlIGxhIHLpY3Vw6XJhdGlvbiA7IGV4YW1pbmV6IGxlcyBsaWduZXMgY29tbWVu52FudCAiCisicGFyID8/PyIKIAogbXNnaWQgIlNlZSBcIjpoZWxwIEUzMTJcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCiBtc2dzdHIgIkNvbnN1bHRleiBcIjpoZWxwIEUzMTJcIiBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbi4iCkBAIC0zOTU0LDYgKzQwMTEsOCBAQAogbXNnaWQgIkUzMzI6IFNlcGFyYXRvciBjYW5ub3QgYmUgcGFydCBvZiBhIG1lbnUgcGF0aCIKIG1zZ3N0ciAiRTMzMjogVW4gc+lwYXJhdGV1ciBuZSBwZXV0IGZhaXJlIHBhcnRpZSBkJ3VuIGNoZW1pbiBkZSBtZW51IgogCisjLiBOb3cgd2UgaGF2ZSBmb3VuZCB0aGUgbWF0Y2hpbmcgbWVudSwgYW5kIHdlIGxpc3QgdGhlIG1hcHBpbmdzCisjLiBIaWdobGlnaHQgdGl0bGUKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIE1lbnVzIC0tLSIKQEAgLTQwNDgsNiArNDEwNyw3IEBACiBtc2dpZCAiT3BlbiBGaWxlIGRpYWxvZyIKIG1zZ3N0ciAiT3V2cmlyIHVuIGZpY2hpZXIiCiAKKyMuIFRPRE86IG5vbi1HVUkgZmlsZSBzZWxlY3RvciBoZXJlCiBtc2dpZCAiRTMzODogU29ycnksIG5vIGZpbGUgYnJvd3NlciBpbiBjb25zb2xlIG1vZGUiCiBtc2dzdHIgIkUzMzg6IETpc29s6SwgcGFzIGRlIHPpbGVjdGV1ciBkZSBmaWNoaWVycyBlbiBtb2RlIGNvbnNvbGUiCiAKQEAgLTQwODksNiArNDE0OSw3IEBACiBtc2dpZCAiVmltOiBwcmVzZXJ2aW5nIGZpbGVzLi4uXG4iCiBtc2dzdHIgIlZpbTogcHLpc2VydmF0aW9uIGRlcyBmaWNoaWVycy4uLlxuIgogCisjLiBjbG9zZSBhbGwgbWVtZmlsZXMsIHdpdGhvdXQgZGVsZXRpbmcKIG1zZ2lkICJWaW06IEZpbmlzaGVkLlxuIgogbXNnc3RyICJWaW06IEZpbmkuXG4iCiAKQEAgLTQxNzUsNiArNDIzNiw3IEBACiBtc2dpZCAiRTM0NzogTm8gbW9yZSBmaWxlIFwiJXNcIiBmb3VuZCBpbiBwYXRoIgogbXNnc3RyICJFMzQ3OiBQbHVzIGRlIGZpY2hpZXIgXCIlc1wiIGRhbnMgJ3BhdGgnIgogCisjLiBHZXQgaGVyZSB3aGVuIHRoZSBzZXJ2ZXIgY2FuJ3QgYmUgZm91bmQuCiBtc2dpZCAiQ2Fubm90IGNvbm5lY3QgdG8gTmV0YmVhbnMgIzIiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgc2UgY29ubmVjdGVyIOAgTmV0YmVhbnMgbrAyIgogCkBAIC00MTg0LDcgKzQyNDYsOCBAQAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNjY4OiBXcm9uZyBhY2Nlc3MgbW9kZSBmb3IgTmV0QmVhbnMgY29ubmVjdGlvbiBpbmZvIGZpbGU6IFwiJXNcIiIKIG1zZ3N0ciAiIgotIkU2Njg6IE1vZGUgZCdhY2PocyBpbmNvcnJlY3QgYXUgZmljaGllciBkJ2luZm9zIGRlIGNvbm5leGlvbiBOZXRCZWFucyA6IFwiJXNcIiIKKyJFNjY4OiBNb2RlIGQnYWNj6HMgaW5jb3JyZWN0IGF1IGZpY2hpZXIgZCdpbmZvcyBkZSBjb25uZXhpb24gTmV0QmVhbnMgOiBcIiVzIgorIlwiIgogCiAjIERCIDogbWVzc2FnZSBkJ3VuIGFwcGVsIOAgcGVycm9yKCkuCiBtc2dpZCAicmVhZCBmcm9tIE5ldGJlYW5zIHNvY2tldCIKQEAgLTQyNTksNiArNDMyMiw3IEBACiBtc2dzdHIgIkU3NDg6IEF1Y3VuIHJlZ2lzdHJlIG4nYSDpdOkgcHLpY+lkZW1tZW50IHV0aWxpc+kiCiAKICMgREIgLSBRdWVzdGlvbiBPL04uCisjLiBtdXN0IGRpc3BsYXkgdGhlIHByb21wdAogbXNnaWQgImNhbm5vdCB5YW5rOyBkZWxldGUgYW55d2F5IgogbXNnc3RyICJpbXBvc3NpYmxlIGRlIHLpYWxpc2VyIHVuZSBjb3BpZSA7IGVmZmFjZXIgdG91dCBkZSBt6m1lIgogCkBAIC00MjkxLDYgKzQzNTUsNyBAQAogbXNnaWQgIkUzNTM6IE5vdGhpbmcgaW4gcmVnaXN0ZXIgJXMiCiBtc2dzdHIgIkUzNTM6IExlIHJlZ2lzdHJlICVzIGVzdCB2aWRlIgogCisjLiBIaWdobGlnaHQgdGl0bGUKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIFJlZ2lzdGVycyAtLS0iCkBAIC00MzI3LDggKzQzOTIsOCBAQAogIlNlbGVjdGVkICVzJWxkIG9mICVsZCBMaW5lczsgJWxkIG9mICVsZCBXb3JkczsgJWxkIG9mICVsZCBDaGFyczsgJWxkIG9mICVsZCAiCiAiQnl0ZXMiCiBtc2dzdHIgIiIKLSIlcyVsZCBzdXIgJWxkIExpZ25lcyA7ICVsZCBzdXIgJWxkIE1vdHMgOyAlbGQgc3VyICVsZCBDYXJhY3TocmVzIDsgIgotIiVsZCBzdXIgJWxkIG9jdGV0cyBz6WxlY3Rpb25u6XMiCisiJXMlbGQgc3VyICVsZCBMaWduZXMgOyAlbGQgc3VyICVsZCBNb3RzIDsgJWxkIHN1ciAlbGQgQ2FyYWN06HJlcyA7ICVsZCBzdXIgIgorIiVsZCBvY3RldHMgc+lsZWN0aW9ubulzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbCAlcyBvZiAlczsgTGluZSAlbGQgb2YgJWxkOyBXb3JkICVsZCBvZiAlbGQ7IEJ5dGUgJWxkIG9mICVsZCIKQEAgLTQzMzksOCArNDQwNCw5IEBACiBtc2dpZCAiIgogIkNvbCAlcyBvZiAlczsgTGluZSAlbGQgb2YgJWxkOyBXb3JkICVsZCBvZiAlbGQ7IENoYXIgJWxkIG9mICVsZDsgQnl0ZSAlbGQgb2YgIgogIiVsZCIKLW1zZ3N0ciAiQ29sb25uZSAlcyBzdXIgJXMgOyBMaWduZSAlbGQgc3VyICVsZCA7IE1vdCAlbGQgc3VyICVsZCA7ICIKLSJDYXJhY3TocmUgJWxkIHN1ciAlbGQgOyBPY3RldCAlbGQgc3VyICVsZCIKK21zZ3N0ciAiIgorIkNvbG9ubmUgJXMgc3VyICVzIDsgTGlnbmUgJWxkIHN1ciAlbGQgOyBNb3QgJWxkIHN1ciAlbGQgOyBDYXJhY3TocmUgJWxkIHN1ciAiCisiJWxkIDsgT2N0ZXQgJWxkIHN1ciAlbGQiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiKCslbGQgZm9yIEJPTSkiCkBAIC00MzUyLDkgKzQ0MTgsOCBAQAogbXNnaWQgIlRoYW5rcyBmb3IgZmx5aW5nIFZpbSIKIG1zZ3N0ciAiTWVyY2kgZCdhdm9pciBjaG9pc2kgVmltIgogCi0jIERCIC0gRXNwYWNlIGZpbmFsIGNhciBWaW0gcGV1dCBham91dGVyICI6IDxpbmZvcm1hdGlvbnM+IiDgIGxhIHN1aXRlCiBtc2dpZCAiRTUxODogVW5rbm93biBvcHRpb24iCi1tc2dzdHIgIkU1MTg6IE9wdGlvbiBpbmNvbm51ZSAiCittc2dzdHIgIkU1MTg6IE9wdGlvbiBpbmNvbm51ZSIKIAogbXNnaWQgIkU1MTk6IE9wdGlvbiBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICJFNTE5OiBPcHRpb24gbm9uIHN1cHBvcnTpZSIKQEAgLTQzNzYsOCArNDQ0MSw3IEBACiBtc2dzdHIgIkU1Mjk6ICd0ZXJtJyBuZSBkb2l0IHBhcyDqdHJlIHVuZSBjaGHubmUgdmlkZSIKIAogbXNnaWQgIkU1MzA6IENhbm5vdCBjaGFuZ2UgdGVybSBpbiBHVUkiCi1tc2dzdHIgIiIKLSJFNTMwOiBJbXBvc3NpYmxlIGRlIG1vZGlmaWVyIHRlcm0gZGFucyBsJ2ludGVyZmFjZSBncmFwaGlxdWUiCittc2dzdHIgIkU1MzA6IEltcG9zc2libGUgZGUgbW9kaWZpZXIgdGVybSBkYW5zIGwnaW50ZXJmYWNlIGdyYXBoaXF1ZSIKIAogbXNnaWQgIkU1MzE6IFVzZSBcIjpndWlcIiB0byBzdGFydCB0aGUgR1VJIgogbXNnc3RyICJFNTMxOiBVdGlsaXNleiBcIjpndWlcIiBwb3VyIGTpbWFycmVyIGwnaW50ZXJmYWNlIGdyYXBoaXF1ZSIKQEAgLTQ1NTMsMTUgKzQ2MTcsMTEgQEAKIG1zZ2lkICJJL08gRVJST1IiCiBtc2dzdHIgIkVSUkVVUiBkJ0UvUyIKIAotbXNnaWQgIi4uLih0cnVuY2F0ZWQpIgotbXNnc3RyICIuLi4odHJvbnF16SkiCi0KIG1zZ2lkICJNZXNzYWdlIgogbXNnc3RyICJNZXNzYWdlIgogCiBtc2dpZCAiJ2NvbHVtbnMnIGlzIG5vdCA4MCwgY2Fubm90IGV4ZWN1dGUgZXh0ZXJuYWwgY29tbWFuZHMiCi1tc2dzdHIgIiIKLSInY29sdW1ucycgbmUgdmF1dCBwYXMgODAsIGltcG9zc2libGUgZCdleOljdXRlciBkZXMgY29tbWFuZGVzIGV4dGVybmVzIgorbXNnc3RyICInY29sdW1ucycgbmUgdmF1dCBwYXMgODAsIGltcG9zc2libGUgZCdleOljdXRlciBkZXMgY29tbWFuZGVzIGV4dGVybmVzIgogCiBtc2dpZCAiRTIzNzogUHJpbnRlciBzZWxlY3Rpb24gZmFpbGVkIgogbXNnc3RyICJFMjM3OiBMYSBz6WxlY3Rpb24gZGUgbCdpbXByaW1hbnRlIGEg6WNob3XpIgpAQCAtNTAwMCw2ICs1MDYwLDE2IEBACiBtc2dpZCAiRTM4OTogQ291bGRuJ3QgZmluZCBwYXR0ZXJuIgogbXNnc3RyICJFMzg5OiBJbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbGUgbW90aWYiCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiMgTGFzdCAlc1NlYXJjaCBQYXR0ZXJuOlxuIgorIn4iCittc2dzdHIgIiIKKyJcbiIKKyIjIERlcm5pZXIgbW90aWYgZGUgcmVjaGVyY2hlICVzIDpcbiIKKyJ+IgorCiBtc2dpZCAiRTc1OTogRm9ybWF0IGVycm9yIGluIHNwZWxsIGZpbGUiCiBtc2dzdHIgIkU3NTk6IEVycmV1ciBkZSBmb3JtYXQgZHUgZmljaGllciBvcnRob2dyYXBoaXF1ZSIKIApAQCAtNTA2NCw3ICs1MTM0LDcgQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb252ZXJzaW9uIGluICVzIG5vdCBzdXBwb3J0ZWQiCi1tc2dzdHIgIkxhIGNvbnZlcnNpb24gZGFucyAlcyBub24gc3VwcG9ydOllIiAKK21zZ3N0ciAiTGEgY29udmVyc2lvbiBkYW5zICVzIG5vbiBzdXBwb3J06WUiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgRkxBRyBpbiAlcyBsaW5lICVkOiAlcyIKQEAgLTUwNzUsNiArNTE0NSwyMiBAQAogbXNnc3RyICJGTEFHIHRyb3V26SBhcHLocyBkZXMgZHJhcGVhdXggZGFucyAlcyBsaWduZSAlZCA6ICVzIgogCiAjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJEZWZpbmluZyBDT01QT1VOREZPUkJJREZMQUcgYWZ0ZXIgUEZYIGl0ZW0gbWF5IGdpdmUgd3JvbmcgcmVzdWx0cyBpbiAlcyBsaW5lICIKKyIlZCIKK21zZ3N0ciAiIgorIkTpZmluaXIgQ09NUE9VTkRGT1JCSURGTEFHIGFwcuhzIGRlcyBQRlggcGV1dCBkb25uZXIgZGVzIHLpc3VsdGF0cyBlcnJvbulzICIKKyJkYW5zICVzIGxpZ25lICVkIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJEZWZpbmluZyBDT01QT1VORFBFUk1JVEZMQUcgYWZ0ZXIgUEZYIGl0ZW0gbWF5IGdpdmUgd3JvbmcgcmVzdWx0cyBpbiAlcyBsaW5lICIKKyIlZCIKK21zZ3N0ciAiIgorIkTpZmluaXIgQ09NUE9VTkRQRVJNSVRGTEFHIGFwcuhzIGRlcyBQRlggcGV1dCBkb25uZXIgZGVzIHLpc3VsdGF0cyBlcnJvbulzICIKKyIgZGFucyAlcyBsaWduZSAlZCIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJXcm9uZyBDT01QT1VORFdPUkRNQVggdmFsdWUgaW4gJXMgbGluZSAlZDogJXMiCiBtc2dzdHIgIlZhbGV1ciBkZSBDT01QT1VORFdPUkRNQVggZXJyb27pZSBkYW5zICVzIGxpZ25lICVkIDogJXMiCiAKQEAgLTUxMDYsOCArNTE5Miw4IEBACiAiQWZmaXggYWxzbyB1c2VkIGZvciBCQUQvUkFSRS9LRUVQQ0FTRS9ORUVEQUZGSVgvTkVFRENPTVBPVU5EL05PU1VHR0VTVCBpbiAlcyAiCiAibGluZSAlZDogJXMiCiBtc2dzdHIgIiIKLSJBZmZpeGUgYXVzc2kgdXRpbGlz6WUgcG91ciBCQUQvUkFSRS9LRUVQQ0FTRS9ORUVEQUZGSVgvTkVFRENPTVBPVU5EL05PU1VHR0VTVCAiCi0iZGFucyAlcyBsaWduZSAlZCA6ICVzIgorIkFmZml4ZSBhdXNzaSB1dGlsaXPpZSBwb3VyIEJBRC9SQVJFL0tFRVBDQVNFL05FRURBRkZJWC9ORUVEQ09NUE9VTkQvIgorIk5PU1VHR0VTVCBkYW5zICVzIGxpZ25lICVkIDogJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXhwZWN0ZWQgWSBvciBOIGluICVzIGxpbmUgJWQ6ICVzIgpAQCAtNTExOCwxMyArNTIwNCw2IEBACiBtc2dpZCAiQnJva2VuIGNvbmRpdGlvbiBpbiAlcyBsaW5lICVkOiAlcyIKIG1zZ3N0ciAiQ29uZGl0aW9uIG5vbiB2YWxpZGUgZGFucyAlcyBsaWduZSAlZCA6ICVzIgogCi0jIERCIC0gdG9kbwotIywgYy1mb3JtYXQKLW1zZ2lkICJBZmZpeCBmbGFncyBpZ25vcmVkIHdoZW4gUEZYUE9TVFBPTkUgdXNlZCBpbiAlcyBsaW5lICVkOiAlcyIKLW1zZ3N0ciAiIgotIkRyYXBlYXV4IGRlIGwnYWZmaXhlIGlnbm9y6XMgcXVhbmQgUEZYUE9TVFBPTkUgZXN0IHV0aWxpc+kgZGFucyAlcyBsaWduZSAlZCAiCi0iOiAlcyIKLQogIywgYy1mb3JtYXQKIG1zZ2lkICJFeHBlY3RlZCBSRVAoU0FMKSBjb3VudCBpbiAlcyBsaW5lICVkIgogbXNnc3RyICJOb21icmUgZGUgUkVQKFNBTCkgYXR0ZW5kdSBkYW5zICVzIGxpZ25lICVkIgpAQCAtNTI0OCw4ICs1MzI3LDEwIEBACiBtc2dpZCAiUmVhZGluZyBiYWNrIHNwZWxsIGZpbGUuLi4iCiBtc2dzdHIgIlJlbGVjdHVyZSBkdSBmaWNoaWVyIG9ydGhvZ3JhcGhpcXVlIgogCisjLgogIy4gKiBHbyB0aHJvdWdoIHRoZSB0cmllIG9mIGdvb2Qgd29yZHMsIHNvdW5kZm9sZCBlYWNoIHdvcmQgYW5kIGFkZCBpdCB0bwogIy4gKiB0aGUgc291bmRmb2xkIHRyaWUuCisjLgogbXNnaWQgIlBlcmZvcm1pbmcgc291bmRmb2xkaW5nLi4uIgogbXNnc3RyICJBbmFseXNlIHBob27pdGlxdWUgZW4gY291cnMuLi4iCiAKQEAgLTUzMTMsNiArNTM5NCw3IEBACiBtc2dpZCAiU29ycnksIG9ubHkgJWxkIHN1Z2dlc3Rpb25zIgogbXNnc3RyICJE6XNvbOksIHNldWxlbWVudCAlbGQgc3VnZ2VzdGlvbnMiCiAKKyMuIGF2b2lkIG1vcmUgcHJvbXB0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoYW5nZSBcIiUuKnNcIiB0bzoiCiBtc2dzdHIgIlJlbXBsYWNlciBcIiUuKnNcIiBwYXIgOiIKQEAgLTU1OTQsNiArNTY3Niw3IEBACiBtc2dpZCAiRTQyOTogRmlsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgIkU0Mjk6IExlIGZpY2hpZXIgXCIlc1wiIG4nZXhpc3RlIHBhcyIKIAorIy4gSGlnaGxpZ2h0IHRpdGxlCiBtc2dpZCAiIgogIlxuIgogIiAgIyBUTyB0YWcgICAgICAgICBGUk9NIGxpbmUgIGluIGZpbGUvdGV4dCIKQEAgLTU2NTQsNiArNTczNyw3IEBACiBtc2dpZCAiRTQzNzogdGVybWluYWwgY2FwYWJpbGl0eSBcImNtXCIgcmVxdWlyZWQiCiBtc2dzdHIgIkU0Mzc6IGNhcGFjaXTpIGRlIHRlcm1pbmFsIFwiY21cIiByZXF1aXNlIgogCisjLiBIaWdobGlnaHQgdGl0bGUKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIFRlcm1pbmFsIGtleXMgLS0tIgpAQCAtNTY2OCw2ICs1NzUyLDcgQEAKIG1zZ3N0ciAiVmltOiBFcnJldXIgbG9ycyBkZSBsYSBsZWN0dXJlIGRlIGwnZW50cullLCBzb3J0aWUuLi5cbiIKIAogIyBEQiAtIFF1ZXN0aW9uIE8vTi4KKyMuIG11c3QgZGlzcGxheSB0aGUgcHJvbXB0CiBtc2dpZCAiTm8gdW5kbyBwb3NzaWJsZTsgY29udGludWUgYW55d2F5IgogbXNnc3RyICJBbm51bGF0aW9uIGltcG9zc2libGUgOyBjb250aW51ZXIiCiAKQEAgLTU3MTksNiArNTgwNCwxMCBAQAogbXNnaWQgIm51bWJlciBjaGFuZ2VzICB0aW1lIgogbXNnc3RyICJudW3pcm8gIG1vZGlmLiAgaW5zdGFudCIKIAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGQgc2Vjb25kcyBhZ28iCittc2dzdHIgImlsIHkgYSAlbGQgc2Vjb25kZXMiCisKIG1zZ2lkICJFNDM5OiB1bmRvIGxpc3QgY29ycnVwdCIKIG1zZ3N0ciAiRTQzOTogbGEgbGlzdGUgZCdhbm51bGF0aW9uIGVzdCBjb3Jyb21wdWUiCiAKQEAgLTYwMzEsNiArNjEyMCw5IEBACiBtc2dpZCAidHlwZSAgOmhlbHAgd2luZG93czk1PEVudGVyPiAgZm9yIGluZm8gb24gdGhpcyIKIG1zZ3N0ciAidGFwZXogIDpoZWxwIHdpbmRvd3M5NTxFbnRy6WU+ICBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiIKIAorbXNnaWQgIkFscmVhZHkgb25seSBvbmUgd2luZG93IgorbXNnc3RyICJJbCBuJ3kgYSBk6WrgIHBsdXMgcXUndW5lIGZlbup0cmUiCisKIG1zZ2lkICJFNDQxOiBUaGVyZSBpcyBubyBwcmV2aWV3IHdpbmRvdyIKIG1zZ3N0ciAiRTQ0MTogSWwgbid5IGEgcGFzIGRlIGZlbup0cmUgZGUgcHLpdmlzdWFsaXNhdGlvbiIKIApAQCAtNjA0Myw5ICs2MTM1LDYgQEAKIG1zZ2lkICJFNDQ0OiBDYW5ub3QgY2xvc2UgbGFzdCB3aW5kb3ciCiBtc2dzdHIgIkU0NDQ6IEltcG9zc2libGUgZGUgZmVybWVyIGxhIGRlcm5p6HJlIGZlbup0cmUiCiAKLW1zZ2lkICJBbHJlYWR5IG9ubHkgb25lIHdpbmRvdyIKLW1zZ3N0ciAiSWwgbid5IGEgZOlq4CBwbHVzIHF1J3VuZSBmZW7qdHJlIgotCiBtc2dpZCAiRTQ0NTogT3RoZXIgd2luZG93IGNvbnRhaW5zIGNoYW5nZXMiCiBtc2dzdHIgIkU0NDU6IExlcyBtb2RpZmljYXRpb25zIGRlIGwnYXV0cmUgZmVu6nRyZSBuJ29udCBwYXMg6XTpIGVucmVnaXN0cullcyIKIApAQCAtNjA3OSw2ICs2MTY4LDcgQEAKIG1zZ2lkICJFZGl0IHdpdGggJlZpbSIKIG1zZ3N0ciAiyWRpdGVyIGRhbnMgJlZpbSIKIAorIy4gTm93IGNvbmNhdGVuYXRlCiBtc2dpZCAiRWRpdCB3aXRoIGV4aXN0aW5nIFZpbSAtICIKIG1zZ3N0ciAiyWRpdGVyIGRhbnMgbGUgVmltIGV4aXN0YW50IC0gIgogCkBAIC02MDg4LDggKzYxNzgsOCBAQAogIyBEQiAtIE1lc3NhZ2VCb3ggd2luMzIsIGxhIGxvbmd1ZXVyIG4nZXN0IHBhcyB1biBwcm9ibOhtZSAhCiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgcHJvY2VzczogQ2hlY2sgaWYgZ3ZpbSBpcyBpbiB5b3VyIHBhdGghIgogbXNnc3RyICIiCi0iRXJyZXVyIGRlIGNy6WF0aW9uIGR1IHByb2Nlc3N1cyA6ICIKLSJ26XJpZmlleiBxdWUgZ3ZpbSBlc3QgYmllbiBkYW5zIHZvdHJlIGNoZW1pbiAhIgorIkVycmV1ciBkZSBjculhdGlvbiBkdSBwcm9jZXNzdXMgOiB26XJpZmlleiBxdWUgZ3ZpbSBlc3QgYmllbiBkYW5zIHZvdHJlICIKKyJjaGVtaW4gISIKIAogbXNnaWQgImd2aW1leHQuZGxsIGVycm9yIgogbXNnc3RyICJFcnJldXIgZGUgZ3ZpbWV4dC5kbGwiCkBAIC02MTAyLDYgKzYxOTIsMTAgQEAKIG1zZ2lkICItLU5vIGxpbmVzIGluIGJ1ZmZlci0tIgogbXNnc3RyICItLUxlIHRhbXBvbiBlc3QgdmlkZS0tIgogCisjLgorIy4gKiBUaGUgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmUgc2hhcmVkIGFyZSBpbmNsdWRlZCBoZXJlLgorIy4gKiBFeGNsdWRlZCBhcmUgZXJyb3JzIHRoYXQgYXJlIG9ubHkgdXNlZCBvbmNlIGFuZCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCisjLgogbXNnaWQgIkU0NzA6IENvbW1hbmQgYWJvcnRlZCIKIG1zZ3N0ciAiRTQ3MDogQ29tbWFuZGUgYW5udWzpZSIKIApAQCAtNjMzOCw3ICs2NDMyLDggQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDY6IENhbm5vdCBzZXQgdmFyaWFibGUgaW4gdGhlIHNhbmRib3g6IFwiJXNcIiIKLW1zZ3N0ciAiRTQ2OiBJbXBvc3NpYmxlIGRlIG1vZGlmaWVyIHVuZSB2YXJpYWJsZSBkZXB1aXMgbGUgYmFjIOAgc2FibGUgOiBcIiVzXCIiCittc2dzdHIgIiIKKyJFNDY6IEltcG9zc2libGUgZGUgbW9kaWZpZXIgdW5lIHZhcmlhYmxlIGRlcHVpcyBsZSBiYWMg4CBzYWJsZSA6IFwiJXNcIiIKIAogbXNnaWQgIkU0NzogRXJyb3Igd2hpbGUgcmVhZGluZyBlcnJvcmZpbGUiCiBtc2dzdHIgIkU0NzogRXJyZXVyIGxvcnMgZGUgbGEgbGVjdHVyZSBkdSBmaWNoaWVyIGQnZXJyZXVycyIKQEAgLTY0MjksNyArNjUyNCw3IEBACiBtc2dpZCAiRTEzOTogRmlsZSBpcyBsb2FkZWQgaW4gYW5vdGhlciBidWZmZXIiCiBtc2dzdHIgIkUxMzk6IExlIGZpY2hpZXIgZXN0IGNoYXJn6SBkYW5zIHVuIGF1dHJlIHRhbXBvbiIKIAotIyxjLWZvcm1hdAorIywgYy1mb3JtYXQKIG1zZ2lkICJFNzY0OiBPcHRpb24gJyVzJyBpcyBub3Qgc2V0IgogbXNnc3RyICJFNzY0OiBMJ29wdGlvbiAnJXMnIG4nZXN0IHBhcyBhY3RpdullIgogCmRpZmYgLS1naXQgYS9zcmMvcG8vaXQucG8gYi9zcmMvcG8vaXQucG8KaW5kZXggN2U5NzBkNC4uMjY3M2M2MyAxMDA2NDQKLS0tIGEvc3JjL3BvL2l0LnBvCisrKyBiL3NyYy9wby9pdC5wbwpAQCAtNTA5Niw4ICs1MDk2LDggQEAKIG1zZ3N0ciAiRTM5NzogTm9tZSBmaWxlIG5lY2Vzc2FyaW8iCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgotbXNnc3RyICJFNzQ3OiBNYW5jYSAnXSc6ICVzIgorbXNnaWQgIkU3ODk6IE1pc3NpbmcgJ10nOiAlcyIKK21zZ3N0ciAiRTc4OTogTWFuY2EgJ10nOiAlcyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCmRpZmYgLS1naXQgYS9zcmMvcG8vamEucG8gYi9zcmMvcG8vamEucG8KaW5kZXggNjdkODc3ZC4uOTU0OWMyNCAxMDA2NDQKLS0tIGEvc3JjL3BvL2phLnBvCisrKyBiL3NyYy9wby9qYS5wbwpAQCAtNTEwOSw4ICs1MTA5LDggQEAKIG1zZ3N0ciAiRTM5NzogpdWloaWkpevMvqSsyazN16THpLkiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgotbXNnc3RyICJFNzQ3OiAnXScgpKykoqTqpN6ku6TzOiAlcyIKK21zZ2lkICJFNzg5OiBNaXNzaW5nICddJzogJXMiCittc2dzdHIgIkU3ODk6ICddJyCkrKSipOqk3qS7pPM6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzOTg6IE1pc3NpbmcgJz0nOiAlcyIKZGlmZiAtLWdpdCBhL3NyYy9wby9qYS5zamlzLnBvIGIvc3JjL3BvL2phLnNqaXMucG8KaW5kZXggMjk1OTJiYi4uOTZjMjAzNyAxMDA2NDQKLS0tIGEvc3JjL3BvL2phLnNqaXMucG8KKysrIGIvc3JjL3BvL2phLnNqaXMucG8KQEAgLTUxMDksOCArNTEwOSw4IEBACiBtc2dzdHIgIkUzOTc6IIN0g0CDQ4OLlryCqpVLl3aCxYK3IgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkU3NDc6IE1pc3NpbmcgJ10nOiAlcyIKLW1zZ3N0ciAiRTc0NzogJ10nIIKqgqCC6ILcgrmC8TogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiAnXScggqqCoILogtyCuYLxOiAlcyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCmRpZmYgLS1naXQgYS9zcmMvcG8vcGwuVVRGLTgucG8gYi9zcmMvcG8vcGwuVVRGLTgucG8KaW5kZXggNjRiMzIwMy4uMzIzZDZhYyAxMDA2NDQKLS0tIGEvc3JjL3BvL3BsLlVURi04LnBvCisrKyBiL3NyYy9wby9wbC5VVEYtOC5wbwpAQCAtNTEwMSw4ICs1MTAxLDggQEAKIG1zZ3N0ciAiRTM5NzogV3ltYWdhbmEgbmF6d2EgcGxpa3UiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgotbXNnc3RyICJFNzQ3OiBCcmFrICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiBCcmFrICddJzogJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM5ODogTWlzc2luZyAnPSc6ICVzIgpkaWZmIC0tZ2l0IGEvc3JjL3BvL3BsLmNwMTI1MC5wbyBiL3NyYy9wby9wbC5jcDEyNTAucG8KaW5kZXggNzljYjU1ZS4uZWZkOWFmZCAxMDA2NDQKLS0tIGEvc3JjL3BvL3BsLmNwMTI1MC5wbworKysgYi9zcmMvcG8vcGwuY3AxMjUwLnBvCkBAIC01MTAxLDggKzUxMDEsOCBAQAogbXNnc3RyICJFMzk3OiBXeW1hZ2FuYSBuYXp3YSBwbGlrdSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFNzQ3OiBNaXNzaW5nICddJzogJXMiCi1tc2dzdHIgIkU3NDc6IEJyYWsgJ10nOiAlcyIKK21zZ2lkICJFNzg5OiBNaXNzaW5nICddJzogJXMiCittc2dzdHIgIkU3ODk6IEJyYWsgJ10nOiAlcyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCmRpZmYgLS1naXQgYS9zcmMvcG8vcGwucG8gYi9zcmMvcG8vcGwucG8KaW5kZXggNTEwMzQ3My4uNDBlMTQwZiAxMDA2NDQKLS0tIGEvc3JjL3BvL3BsLnBvCisrKyBiL3NyYy9wby9wbC5wbwpAQCAtNTEwMSw4ICs1MTAxLDggQEAKIG1zZ3N0ciAiRTM5NzogV3ltYWdhbmEgbmF6d2EgcGxpa3UiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgotbXNnc3RyICJFNzQ3OiBCcmFrICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiBCcmFrICddJzogJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM5ODogTWlzc2luZyAnPSc6ICVzIgpkaWZmIC0tZ2l0IGEvc3JjL3BvL3NrLmNwMTI1MC5wbyBiL3NyYy9wby9zay5jcDEyNTAucG8KaW5kZXggYjhkYWQxYi4uNzUwOTVjMCAxMDA2NDQKLS0tIGEvc3JjL3BvL3NrLmNwMTI1MC5wbworKysgYi9zcmMvcG8vc2suY3AxMjUwLnBvCkBAIC00ODcxLDggKzQ4NzEsOCBAQAogbXNnc3RyICJFMzk3OiBWeZ5hZG92YW79IG7hem92IHP6Ym9ydSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFNzQ3OiBNaXNzaW5nICddJzogJXMiCi1tc2dzdHIgIkU3NDc6IENo/WJhICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiBDaP1iYSAnXSc6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzOTg6IE1pc3NpbmcgJz0nOiAlcyIKZGlmZiAtLWdpdCBhL3NyYy9wby9zay5wbyBiL3NyYy9wby9zay5wbwppbmRleCA1NDc0YTU1Li4zYzY3YjMyIDEwMDY0NAotLS0gYS9zcmMvcG8vc2sucG8KKysrIGIvc3JjL3BvL3NrLnBvCkBAIC00ODcxLDggKzQ4NzEsOCBAQAogbXNnc3RyICJFMzk3OiBWeb5hZG92YW79IG7hem92IHP6Ym9ydSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFNzQ3OiBNaXNzaW5nICddJzogJXMiCi1tc2dzdHIgIkU3NDc6IENo/WJhICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiBDaP1iYSAnXSc6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzOTg6IE1pc3NpbmcgJz0nOiAlcyIKZGlmZiAtLWdpdCBhL3NyYy9wby9zdi5wbyBiL3NyYy9wby9zdi5wbwppbmRleCBlNGE5MmRmLi5lNmJmN2VlIDEwMDY0NAotLS0gYS9zcmMvcG8vc3YucG8KKysrIGIvc3JjL3BvL3N2LnBvCkBAIC01MDY2LDggKzUwNjYsOCBAQAogbXNnc3RyICJFMzk3OiBGaWxuYW1uIGty5HZzIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkU3NDc6IE1pc3NpbmcgJ10nOiAlcyIKLW1zZ3N0ciAiRTc0NzogU2FrbmFyICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiBTYWtuYXIgJ10nOiAlcyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCmRpZmYgLS1naXQgYS9zcmMvcG8vemhfQ04uVVRGLTgucG8gYi9zcmMvcG8vemhfQ04uVVRGLTgucG8KaW5kZXggODNlYWFmMS4uZGU2MGNkYSAxMDA2NDQKLS0tIGEvc3JjL3BvL3poX0NOLlVURi04LnBvCisrKyBiL3NyYy9wby96aF9DTi5VVEYtOC5wbwpAQCAtNTA1Niw4ICs1MDU2LDggQEAKIG1zZ3N0ciAiRTM5Nzog6ZyA6KaB5paH5Lu25ZCN56ewIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkU3NDc6IE1pc3NpbmcgJ10nOiAlcyIKLW1zZ3N0ciAiRTc0Nzog57y65bCRICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiDnvLrlsJEgJ10nOiAlcyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCmRpZmYgLS1naXQgYS9zcmMvcG8vemhfQ04uY3A5MzYucG8gYi9zcmMvcG8vemhfQ04uY3A5MzYucG8KaW5kZXggNmU3MDFhYy4uZGQ0ZGY0NiAxMDA2NDQKLS0tIGEvc3JjL3BvL3poX0NOLmNwOTM2LnBvCisrKyBiL3NyYy9wby96aF9DTi5jcDkzNi5wbwpAQCAtNTA1Niw4ICs1MDU2LDggQEAKIG1zZ3N0ciAiRTM5Nzog0OjSqs7EvP7D+7PGIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkU3NDc6IE1pc3NpbmcgJ10nOiAlcyIKLW1zZ3N0ciAiRTc0NzogyLHJ2SAnXSc6ICVzIgorbXNnaWQgIkU3ODk6IE1pc3NpbmcgJ10nOiAlcyIKK21zZ3N0ciAiRTc4OTogyLHJ2SAnXSc6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzOTg6IE1pc3NpbmcgJz0nOiAlcyIKZGlmZiAtLWdpdCBhL3NyYy9wby96aF9DTi5wbyBiL3NyYy9wby96aF9DTi5wbwppbmRleCA4M2JkN2Y0Li5iNzdiNDVlIDEwMDY0NAotLS0gYS9zcmMvcG8vemhfQ04ucG8KKysrIGIvc3JjL3BvL3poX0NOLnBvCkBAIC01MDU2LDggKzUwNTYsOCBAQAogbXNnc3RyICJFMzk3OiDQ6NKqzsS8/sP7s8YiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgotbXNnc3RyICJFNzQ3OiDIscnZICddJzogJXMiCittc2dpZCAiRTc4OTogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzg5OiDIscnZICddJzogJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM5ODogTWlzc2luZyAnPSc6ICVzIgpkaWZmIC0tZ2l0IGEvc3JjL3BvcHVwbW51LmMgYi9zcmMvcG9wdXBtbnUuYwppbmRleCBmYzVmZmZmLi4yMWRmYzg1IDEwMDY0NAotLS0gYS9zcmMvcG9wdXBtbnUuYworKysgYi9zcmMvcG9wdXBtbnUuYwpAQCAtMzAsNyArMzAsNyBAQAogCiBzdGF0aWMgaW50IHB1bV9kb19yZWRyYXcgPSBGQUxTRTsJLyogZG8gcmVkcmF3IGFueXdheSAqLwogCi1zdGF0aWMgaW50IHB1bV9zZXRfc2VsZWN0ZWQgX19BUkdTKChpbnQgbikpOworc3RhdGljIGludCBwdW1fc2V0X3NlbGVjdGVkIF9fQVJHUygoaW50IG4sIGludCByZXBlYXQpKTsKIAogI2RlZmluZSBQVU1fREVGX0hFSUdIVCAxMAogI2RlZmluZSBQVU1fREVGX1dJRFRIICAxNQpAQCAtNTksNiArNTksNyBAQAogICAgIGludAkJaGVpZ2h0OwogICAgIGludAkJY29sOwogICAgIGludAkJYWJvdmVfcm93ID0gY21kbGluZV9yb3c7CisgICAgaW50CQlyZWRvX2NvdW50ID0gMDsKIAogcmVkbzoKICAgICBkZWZfd2lkdGggPSBQVU1fREVGX1dJRFRIOwpAQCAtMjA5LDggKzIxMCw5IEBACiAgICAgcHVtX3NpemUgPSBzaXplOwogCiAgICAgLyogU2V0IHNlbGVjdGVkIGl0ZW0gYW5kIHJlZHJhdy4gIElmIHRoZSB3aW5kb3cgc2l6ZSBjaGFuZ2VkIG5lZWQgdG8gcmVkbwotICAgICAqIHRoZSBwb3NpdGlvbmluZy4gKi8KLSAgICBpZiAocHVtX3NldF9zZWxlY3RlZChzZWxlY3RlZCkpCisgICAgICogdGhlIHBvc2l0aW9uaW5nLiAgTGltaXQgdGhpcyB0byB0d28gdGltZXMsIHdoZW4gdGhlcmUgaXMgbm90IG11Y2gKKyAgICAgKiByb29tIHRoZSB3aW5kb3cgc2l6ZSB3aWxsIGtlZXAgY2hhbmdpbmcuICovCisgICAgaWYgKHB1bV9zZXRfc2VsZWN0ZWQoc2VsZWN0ZWQsIHJlZG9fY291bnQpICYmICsrcmVkb19jb3VudCA8PSAyKQogCWdvdG8gcmVkbzsKIH0KIApAQCAtMzM4LDEyICszNDAsMTcgQEAKIC8qCiAgKiBTZXQgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4gIFRoZSBtZW51IHdpbGwgc2Nyb2xsIHdoZW4KICAqIG5lY2Vzc2FyeS4gIFdoZW4gIm4iIGlzIG91dCBvZiByYW5nZSBkb24ndCBzY3JvbGwuCisgKiBUaGlzIG1heSBiZSByZXBlYXRlZCB3aGVuIHRoZSBwcmV2aWV3IHdpbmRvdyBpcyB1c2VkOgorICogInJlcGVhdCIgPT0gMDogb3BlbiBwcmV2aWV3IHdpbmRvdyBub3JtYWxseQorICogInJlcGVhdCIgPT0gMTogb3BlbiBwcmV2aWV3IHdpbmRvdyBidXQgZG9uJ3Qgc2V0IHRoZSBzaXplCisgKiAicmVwZWF0IiA9PSAyOiBkb24ndCBvcGVuIHByZXZpZXcgd2luZG93CiAgKiBSZXR1cm5zIFRSVUUgd2hlbiB0aGUgd2luZG93IHdhcyByZXNpemVkIGFuZCB0aGUgbG9jYXRpb24gb2YgdGhlIHBvcHVwIG1lbnUKICAqIG11c3QgYmUgcmVjb21wdXRlZC4KICAqLwogICAgIHN0YXRpYyBpbnQKLXB1bV9zZXRfc2VsZWN0ZWQobikKK3B1bV9zZXRfc2VsZWN0ZWQobiwgcmVwZWF0KQogICAgIGludAkgICAgbjsKKyAgICBpbnQJICAgIHJlcGVhdDsKIHsKICAgICBpbnQJICAgIHJlc2l6ZWQgPSBGQUxTRTsKICAgICBpbnQJICAgIGNvbnRleHQgPSBwdW1faGVpZ2h0IC8gMjsKQEAgLTQwNCwxMCArNDExLDE0IEBACiAJLyoKIAkgKiBTaG93IGV4dHJhIGluZm8gaW4gdGhlIHByZXZpZXcgd2luZG93IGlmIHRoZXJlIGlzIHNvbWV0aGluZyBhbmQKIAkgKiAnY29tcGxldGVvcHQnIGNvbnRhaW5zICJwcmV2aWV3Ii4KKwkgKiBTa2lwIHRoaXMgd2hlbiB0cmllZCB0d2ljZSBhbHJlYWR5LgorCSAqIFNraXAgdGhpcyBhbHNvIHdoZW4gdGhlcmUgaXMgbm90IG11Y2ggcm9vbS4KIAkgKiBOT1RFOiBCZSB2ZXJ5IGNhcmVmdWwgbm90IHRvIHN5bmMgdW5kbyEKIAkgKi8KIAlpZiAocHVtX2FycmF5W3B1bV9zZWxlY3RlZF0ucHVtX2luZm8gIT0gTlVMTAotCQkJCQkgICAgJiYgdmltX3N0cmNocihwX2NvdCwgJ3AnKSAhPSBOVUxMKQorCQkmJiBSb3dzID4gMTAKKwkJJiYgcmVwZWF0IDw9IDEKKwkJJiYgdmltX3N0cmNocihwX2NvdCwgJ3AnKSAhPSBOVUxMKQogCXsKIAkgICAgd2luX1QJKmN1cndpbl9zYXZlID0gY3Vyd2luOwogCSAgICBpbnQJCXJlcyA9IE9LOwpAQCAtNDcwLDEyICs0ODEsMTUgQEAKIAogCQkgICAgLyogSW5jcmVhc2UgdGhlIGhlaWdodCBvZiB0aGUgcHJldmlldyB3aW5kb3cgdG8gc2hvdyB0aGUKIAkJICAgICAqIHRleHQsIGJ1dCBubyBtb3JlIHRoYW4gJ3ByZXZpZXdoZWlnaHQnIGxpbmVzLiAqLwotCQkgICAgaWYgKGxudW0gPiBwX3B2aCkKLQkJCWxudW0gPSBwX3B2aDsKLQkJICAgIGlmIChjdXJ3aW4tPndfaGVpZ2h0IDwgbG51bSkKKwkJICAgIGlmIChyZXBlYXQgPT0gMCkKIAkJICAgIHsKLQkJCXdpbl9zZXRoZWlnaHQoKGludClsbnVtKTsKLQkJCXJlc2l6ZWQgPSBUUlVFOworCQkJaWYgKGxudW0gPiBwX3B2aCkKKwkJCSAgICBsbnVtID0gcF9wdmg7CisJCQlpZiAoY3Vyd2luLT53X2hlaWdodCA8IGxudW0pCisJCQl7CisJCQkgICAgd2luX3NldGhlaWdodCgoaW50KWxudW0pOworCQkJICAgIHJlc2l6ZWQgPSBUUlVFOworCQkJfQogCQkgICAgfQogCiAJCSAgICBjdXJidWYtPmJfY2hhbmdlZCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvc3ludGF4LmMgYi9zcmMvc3ludGF4LmMKaW5kZXggZGZlZGE1ZS4uNzE0ZGU0NCAxMDA2NDQKLS0tIGEvc3JjL3N5bnRheC5jCisrKyBiL3NyYy9zeW50YXguYwpAQCAtNDUyOCw3ICs0NTI4LDcgQEAKIAkJCSAgICBicmVhazsKIAkJCWlmIChwWzFdID09IE5VTCkKIAkJCXsKLQkJCSAgICBFTVNHMihfKCJFNzQ3OiBNaXNzaW5nICddJzogJXMiKSwga3cpOworCQkJICAgIEVNU0cyKF8oIkU3ODk6IE1pc3NpbmcgJ10nOiAlcyIpLCBrdyk7CiAJCQkgICAga3cgPSBwICsgMjsJCS8qIHNraXAgb3ZlciB0aGUgTlVMICovCiAJCQkgICAgYnJlYWs7CiAJCQl9CkBAIC02MzI5LDkgKzYzMjksOSBAQAogICAgICAqIGRlcGVuZCBvbiB0aGUgbnVtYmVyIG9mIGNvbG9ycyBhdmFpbGFibGUuICovCiAgICAgaWYgKHRfY29sb3JzID4gOCkKIAlkb19oaWdobGlnaHQoKGNoYXJfdSAqKSgqcF9iZyA9PSAnbCcgPyAiVmlzdWFsIGN0ZXJtYmc9TGlnaHRHcmV5IgotCQkJCSAgIDogIlZpc3VhbCBjdGVybWJnPURhcmtHcmV5IiksIHJlc2V0LCBUUlVFKTsKKwkJCQkgICA6ICJWaXN1YWwgY3Rlcm1iZz1EYXJrR3JleSIpLCBGQUxTRSwgVFJVRSk7CiAgICAgZWxzZQotCWRvX2hpZ2hsaWdodCgoY2hhcl91ICopIlZpc3VhbCBjdGVybT1yZXZlcnNlIiwgcmVzZXQsIFRSVUUpOworCWRvX2hpZ2hsaWdodCgoY2hhcl91ICopIlZpc3VhbCBjdGVybT1yZXZlcnNlIiwgRkFMU0UsIFRSVUUpOwogCiAjaWZkZWYgRkVBVF9TWU5fSEwKICAgICAvKgpkaWZmIC0tZ2l0IGEvc3JjL3RhZy5jIGIvc3JjL3RhZy5jCmluZGV4IDI0ODA5ZTMuLmM5YWY1MmMgMTAwNjQ0Ci0tLSBhL3NyYy90YWcuYworKysgYi9zcmMvdGFnLmMKQEAgLTMzNTYsNyArMzM1Niw2IEBACiAJeHBjLnhwX2NvbnRleHQgPSBFWFBBTkRfRklMRVM7CiAJZXhwYW5kZWRfZm5hbWUgPSBFeHBhbmRPbmUoJnhwYywgKGNoYXJfdSAqKWZuYW1lLCBOVUxMLAogCQkJICAgIFdJTERfTElTVF9OT1RGT1VORHxXSUxEX1NJTEVOVCwgV0lMRF9FWFBBTkRfRlJFRSk7Ci0JRXhwYW5kQ2xlYW51cCgmeHBjKTsKIAlpZiAoZXhwYW5kZWRfZm5hbWUgIT0gTlVMTCkKIAkgICAgZm5hbWUgPSBleHBhbmRlZF9mbmFtZTsKICAgICB9CmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5oIGIvc3JjL3ZlcnNpb24uaAppbmRleCA0YzhhNmFjLi5kMmExNGZlIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5oCisrKyBiL3NyYy92ZXJzaW9uLmgKQEAgLTM1LDYgKzM1LDYgQEAKICAqLwogI2RlZmluZSBWSU1fVkVSU0lPTl9OT0RPVAkidmltNzBlIgogI2RlZmluZSBWSU1fVkVSU0lPTl9TSE9SVAkiNy4wZSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTUVESVVNCSI3LjBlMDMgQkVUQSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wZTAzIEJFVEEgKDIwMDYgQXByIDE5KSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBlMDMgQkVUQSAoMjAwNiBBcHIgMTksIGNvbXBpbGVkICIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTUVESVVNCSI3LjBlMDQgQkVUQSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wZTA0IEJFVEEgKDIwMDYgQXByIDIwKSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBlMDQgQkVUQSAoMjAwNiBBcHIgMjAsIGNvbXBpbGVkICIK