ZGlmZiAtLWdpdCBhL0xpYi9zaGxleC5weSBiL0xpYi9zaGxleC5weQppbmRleCA4NjNlNDA0Li5jYTljNTU3IDEwMDY0NAotLS0gYS9MaWIvc2hsZXgucHkKKysrIGIvTGliL3NobGV4LnB5CkBAIC0yMSw3ICsyMSw3IEBACiAKIGNsYXNzIHNobGV4OgogICAgICJBIGxleGljYWwgYW5hbHl6ZXIgY2xhc3MgZm9yIHNpbXBsZSBzaGVsbC1saWtlIHN5bnRheGVzLiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpOgogICAgICAgICBpZiB0eXBlKGluc3RyZWFtKSBpbiBTdHJpbmdUeXBlczoKICAgICAgICAgICAgIGluc3RyZWFtID0gU3RyaW5nSU8oaW5zdHJlYW0pCiAgICAgICAgIGlmIGluc3RyZWFtIGlzIG5vdCBOb25lOgpAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgKz0gKCff4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+/ycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3eJykKICAgICAgICAgc2VsZi53aGl0ZXNwYWNlID0gJyBcdFxyXG4nCi0gICAgICAgIHNlbGYud2hpdGVzcGFjZV9zcGxpdCA9IDAKKyAgICAgICAgc2VsZi53aGl0ZXNwYWNlX3NwbGl0ID0gRmFsc2UKICAgICAgICAgc2VsZi5xdW90ZXMgPSAnXCciJwogICAgICAgICBzZWxmLmVzY2FwZSA9ICdcXCcKICAgICAgICAgc2VsZi5lc2NhcGVkcXVvdGVzID0gJyInCkBAIC02MSw3ICs2MSw3IEBACiAgICAgICAgICJQdXNoIGEgdG9rZW4gb250byB0aGUgc3RhY2sgcG9wcGVkIGJ5IHRoZSBnZXRfdG9rZW4gbWV0aG9kIgogICAgICAgICBpZiBzZWxmLmRlYnVnID49IDE6CiAgICAgICAgICAgICBwcmludCAic2hsZXg6IHB1c2hpbmcgdG9rZW4gIiArIGB0b2tgCi0gICAgICAgIHNlbGYucHVzaGJhY2sgPSBbdG9rXSArIHNlbGYucHVzaGJhY2sKKyAgICAgICAgc2VsZi5wdXNoYmFjay5pbnNlcnQoMCwgdG9rKQogCiAgICAgZGVmIHB1c2hfc291cmNlKHNlbGYsIG5ld3N0cmVhbSwgbmV3ZmlsZT1Ob25lKToKICAgICAgICAgIlB1c2ggYW4gaW5wdXQgc291cmNlIG9udG8gdGhlIGxleGVyJ3MgaW5wdXQgc291cmNlIHN0YWNrLiIKQEAgLTkwLDggKzkwLDcgQEAKICAgICBkZWYgZ2V0X3Rva2VuKHNlbGYpOgogICAgICAgICAiR2V0IGEgdG9rZW4gZnJvbSB0aGUgaW5wdXQgc3RyZWFtIChvciBmcm9tIHN0YWNrIGlmIGl0J3Mgbm9uZW1wdHkpIgogICAgICAgICBpZiBzZWxmLnB1c2hiYWNrOgotICAgICAgICAgICAgdG9rID0gc2VsZi5wdXNoYmFja1swXQotICAgICAgICAgICAgc2VsZi5wdXNoYmFjayA9IHNlbGYucHVzaGJhY2tbMTpdCisgICAgICAgICAgICB0b2sgPSBzZWxmLnB1c2hiYWNrLnBvcCgwKQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAxOgogICAgICAgICAgICAgICAgIHByaW50ICJzaGxleDogcG9wcGluZyB0b2tlbiAiICsgYHRva2AKICAgICAgICAgICAgIHJldHVybiB0b2sKQEAgLTEwNyw3ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIHJhdyA9IHNlbGYuZ2V0X3Rva2VuKCkKICAgICAgICAgIyBNYXliZSB3ZSBnb3QgRU9GIGluc3RlYWQ/CiAgICAgICAgIHdoaWxlIHJhdyA9PSBzZWxmLmVvZjoKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLmZpbGVzdGFjaykgPT0gMDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmZpbGVzdGFjazoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lb2YKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wb3Bfc291cmNlKCkKQEAgLTEyMSw3ICsxMjAsNyBAQAogICAgICAgICByZXR1cm4gcmF3CiAKICAgICBkZWYgcmVhZF90b2tlbihzZWxmKToKLSAgICAgICAgcXVvdGVkID0gMAorICAgICAgICBxdW90ZWQgPSBGYWxzZQogICAgICAgICBlc2NhcGVkc3RhdGUgPSAnICcKICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5pbnN0cmVhbS5yZWFkKDEpCkBAIC0xNjcsNyArMTY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gc2VsZi5xdW90ZXM6Ci0gICAgICAgICAgICAgICAgcXVvdGVkID0gMQorICAgICAgICAgICAgICAgIHF1b3RlZCA9IFRydWUKICAgICAgICAgICAgICAgICBpZiBub3QgbmV4dGNoYXI6ICAgICAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAic2hsZXg6IEkgc2VlIEVPRiBpbiBxdW90ZXMgc3RhdGUiCkBAIC0yMjksNyArMjI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi53aGl0ZXNwYWNlX3NwbGl0OgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjayA9IFtuZXh0Y2hhcl0gKyBzZWxmLnB1c2hiYWNrCisgICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaGJhY2suaW5zZXJ0KDAsIG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAic2hsZXg6IEkgc2VlIHB1bmN0dWF0aW9uIGluIHdvcmQgc3RhdGUiCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcK