ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggMjZhMjhkYy4uNzcyZmQxZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTg4OTUsNyArODg5NSwxMSBAQAogCiAJCVJldHVybnMgdGhlIHNvdW5kIElELCB3aGljaCBjYW4gYmUgcGFzc2VkIHRvIGBzb3VuZF9zdG9wKClgLgogCQlSZXR1cm5zIHplcm8gaWYgdGhlIHNvdW5kIGNvdWxkIG5vdCBiZSBwbGF5ZWQuCi0JCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrc291bmR8IGZlYXR1cmV9CisKKwkJQ2FuIGFsc28gYmUgdXNlZCBhcyBhIHxtZXRob2R8OiA+CisJCQlHZXRTb3VuZE5hbWUoKS0+c291bmRfcGxheWV2ZW50KCkKKworPAkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtzb3VuZHwgZmVhdHVyZX0KIAogCQkJCQkJCSpzb3VuZF9wbGF5ZmlsZSgpKgogc291bmRfcGxheWZpbGUoe3BhdGh9IFssIHtjYWxsYmFja31dKQpAQCAtODkwMyw2ICs4OTA3LDEwIEBACiAJCW11c3QgYmUgYSBmdWxsIHBhdGguICBPbiBVYnVudHUgeW91IG1heSBmaW5kIGZpbGVzIHRvIHBsYXkKIAkJd2l0aCB0aGlzIGNvbW1hbmQ6ID4KIAkJICAgIDohZmluZCAvdXNyL3NoYXJlL3NvdW5kcyAtdHlwZSBmIHwgZ3JlcCAtdiBpbmRleC50aGVtZQorCis8CQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCUdldFNvdW5kUGF0aCgpLT5zb3VuZF9wbGF5ZmlsZSgpCisKIDwJCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrc291bmR8IGZlYXR1cmV9CiAKIApAQCAtODkxMyw3ICs4OTIxLDEwIEBACiAJCU9uIE1TLVdpbmRvd3MsIHRoaXMgZG9lcyBub3Qgd29yayBmb3IgZXZlbnQgc291bmQgc3RhcnRlZCBieQogCQlgc291bmRfcGxheWV2ZW50KClgLiBUbyBzdG9wIGV2ZW50IHNvdW5kcywgdXNlIGBzb3VuZF9jbGVhcigpYC4KIAotCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K3NvdW5kfCBmZWF0dXJlfQorCQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCXNvdW5kaWQtPnNvdW5kX3N0b3AoKQorCis8CQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K3NvdW5kfCBmZWF0dXJlfQogCiAJCQkJCQkJKnNvdW5kZm9sZCgpKgogc291bmRmb2xkKHt3b3JkfSkKQEAgLTg5MjQsNiArODkzNSw5IEBACiAJCVRoaXMgY2FuIGJlIHVzZWQgZm9yIG1ha2luZyBzcGVsbGluZyBzdWdnZXN0aW9ucy4gIE5vdGUgdGhhdAogCQl0aGUgbWV0aG9kIGNhbiBiZSBxdWl0ZSBzbG93LgogCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0V29yZCgpLT5zb3VuZGZvbGQoKQorPAogCQkJCQkJCSpzcGVsbGJhZHdvcmQoKSoKIHNwZWxsYmFkd29yZChbe3NlbnRlbmNlfV0pCiAJCVdpdGhvdXQgYXJndW1lbnQ6IFRoZSByZXN1bHQgaXMgdGhlIGJhZGx5IHNwZWxsZWQgd29yZCB1bmRlcgpAQCAtODk1MCw2ICs4OTY0LDkgQEAKIAkJJ3NwZWxsJyBvcHRpb24gbXVzdCBiZSBzZXQgYW5kIHRoZSB2YWx1ZSBvZiAnc3BlbGxsYW5nJyBpcwogCQl1c2VkLgogCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0VGV4dCgpLT5zcGVsbGJhZHdvcmQoKQorPAogCQkJCQkJCSpzcGVsbHN1Z2dlc3QoKSoKIHNwZWxsc3VnZ2VzdCh7d29yZH0gWywge21heH0gWywge2NhcGl0YWx9XV0pCiAJCVJldHVybiBhIHxMaXN0fCB3aXRoIHNwZWxsaW5nIHN1Z2dlc3Rpb25zIHRvIHJlcGxhY2Uge3dvcmR9LgpAQCAtODk3Myw2ICs4OTkwLDggQEAKIAkJJ3NwZWxsJyBvcHRpb24gbXVzdCBiZSBzZXQgYW5kIHRoZSB2YWx1ZXMgb2YgJ3NwZWxsbGFuZycgYW5kCiAJCSdzcGVsbHN1Z2dlc3QnIGFyZSB1c2VkLgogCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0V29yZCgpLT5zcGVsbHN1Z2dlc3QoKQogCiBzcGxpdCh7ZXhwcn0gWywge3BhdHRlcm59IFssIHtrZWVwZW1wdHl9XV0pCQkJKnNwbGl0KCkqCiAJCU1ha2UgYSB8TGlzdHwgb3V0IG9mIHtleHByfS4gIFdoZW4ge3BhdHRlcm59IGlzIG9taXR0ZWQgb3IKQEAgLTkwNjksNiArOTA4OCwxOSBAQAogCQlsZWFkaW5nICIwYiIgb3IgIjBCIiBpcyBpZ25vcmVkLgogCQlUZXh0IGFmdGVyIHRoZSBudW1iZXIgaXMgc2lsZW50bHkgaWdub3JlZC4KIAorCQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCUdldFRleHQoKS0+c3RyMm5yKCkKKworc3RyY2hhcnBhcnQoe3NyY30sIHtzdGFydH0gWywge2xlbn1dKQkJCSpzdHJjaGFycGFydCgpKgorCQlMaWtlIHxzdHJwYXJ0KCl8IGJ1dCB1c2luZyBjaGFyYWN0ZXIgaW5kZXggYW5kIGxlbmd0aCBpbnN0ZWFkCisJCW9mIGJ5dGUgaW5kZXggYW5kIGxlbmd0aC4KKwkJV2hlbiBhIGNoYXJhY3RlciBpbmRleCBpcyB1c2VkIHdoZXJlIGEgY2hhcmFjdGVyIGRvZXMgbm90CisJCWV4aXN0IGl0IGlzIGFzc3VtZWQgdG8gYmUgb25lIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlOiA+CisJCQlzdHJjaGFycGFydCgnYWJjJywgLTEsIDIpCis8CQlyZXN1bHRzIGluICdhJy4KKworCQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCUdldFRleHQoKS0+c3RyY2hhcnBhcnQoNSkKIAogc3RyY2hhcnMoe2V4cHJ9IFssIHtza2lwY2N9XSkJCQkJCSpzdHJjaGFycygpKgogCQlUaGUgcmVzdWx0IGlzIGEgTnVtYmVyLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKQEAgLTkwOTQsMTMgKzkxMjYsOCBAQAogCQkgICAgICBlbmRmdW5jdGlvbgogCQkgICAgZW5kaWYKIDwKLXN0cmNoYXJwYXJ0KHtzcmN9LCB7c3RhcnR9IFssIHtsZW59XSkJCQkqc3RyY2hhcnBhcnQoKSoKLQkJTGlrZSB8c3RycGFydCgpfCBidXQgdXNpbmcgY2hhcmFjdGVyIGluZGV4IGFuZCBsZW5ndGggaW5zdGVhZAotCQlvZiBieXRlIGluZGV4IGFuZCBsZW5ndGguCi0JCVdoZW4gYSBjaGFyYWN0ZXIgaW5kZXggaXMgdXNlZCB3aGVyZSBhIGNoYXJhY3RlciBkb2VzIG5vdAotCQlleGlzdCBpdCBpcyBhc3N1bWVkIHRvIGJlIG9uZSBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZTogPgotCQkJc3RyY2hhcnBhcnQoJ2FiYycsIC0xLCAyKQotPAkJcmVzdWx0cyBpbiAnYScuCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0VGV4dCgpLT5zdHJjaGFycygpCiAKIHN0cmRpc3BsYXl3aWR0aCh7ZXhwcn0gWywge2NvbH1dKQkJCSpzdHJkaXNwbGF5d2lkdGgoKSoKIAkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiBkaXNwbGF5IGNlbGxzCkBAIC05MTE1LDYgKzkxNDIsOSBAQAogCQlBbWJpZ3VvdXMsIHRoaXMgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUgZGVwZW5kcyBvbiAnYW1iaXdpZHRoJy4KIAkJQWxzbyBzZWUgfHN0cmxlbigpfCwgfHN0cndpZHRoKCl8IGFuZCB8c3RyY2hhcnMoKXwuCiAKKwkJQ2FuIGFsc28gYmUgdXNlZCBhcyBhIHxtZXRob2R8OiA+CisJCQlHZXRUZXh0KCktPnN0cmRpc3BsYXl3aWR0aCgpCisKIHN0cmZ0aW1lKHtmb3JtYXR9IFssIHt0aW1lfV0pCQkJCSpzdHJmdGltZSgpKgogCQlUaGUgcmVzdWx0IGlzIGEgU3RyaW5nLCB3aGljaCBpcyBhIGZvcm1hdHRlZCBkYXRlIGFuZCB0aW1lLCBhcwogCQlzcGVjaWZpZWQgYnkgdGhlIHtmb3JtYXR9IHN0cmluZy4gIFRoZSBnaXZlbiB7dGltZX0gaXMgdXNlZCwKQEAgLTkxMzQsMTIgKzkxNjQsMTggQEAKIDwJCU5vdCBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMuICBUbyBjaGVjayB1c2U6ID4KIAkJCTppZiBleGlzdHMoIipzdHJmdGltZSIpCiAKKzwJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0Rm9ybWF0KCktPnN0cmZ0aW1lKCkKKwogc3RyZ2V0Y2hhcih7c3RyfSwge2luZGV4fSkJCQkJKnN0cmdldGNoYXIoKSoKIAkJR2V0IGNoYXJhY3RlciB7aW5kZXh9IGZyb20ge3N0cn0uICBUaGlzIHVzZXMgYSBjaGFyYWN0ZXIKIAkJaW5kZXgsIG5vdCBhIGJ5dGUgaW5kZXguICBDb21wb3NpbmcgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZAogCQlzZXBhcmF0ZSBjaGFyYWN0ZXJzIGhlcmUuCiAJCUFsc28gc2VlIHxzdHJjaGFycGFydCgpfCBhbmQgfHN0cmNoYXJzKCl8LgogCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0VGV4dCgpLT5zdHJnZXRjaGFyKDUpCisKIHN0cmlkeCh7aGF5c3RhY2t9LCB7bmVlZGxlfSBbLCB7c3RhcnR9XSkJCSpzdHJpZHgoKSoKIAkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggZ2l2ZXMgdGhlIGJ5dGUgaW5kZXggaW4KIAkJe2hheXN0YWNrfSBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgU3RyaW5nIHtuZWVkbGV9LgpAQCAtOTE1OSw2ICs5MTk1LDggQEAKIAkJc3RyaWR4KCkgd29ya3Mgc2ltaWxhciB0byB0aGUgQyBmdW5jdGlvbiBzdHJzdHIoKS4gIFdoZW4gdXNlZAogCQl3aXRoIGEgc2luZ2xlIGNoYXJhY3RlciBpdCB3b3JrcyBzaW1pbGFyIHRvIHN0cmNocigpLgogCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0SGF5c3RhY2soKS0+c3RyaWR4KG5lZWRsZSkKIAkJCQkJCQkqc3RyaW5nKCkqCiBzdHJpbmcoe2V4cHJ9KQlSZXR1cm4ge2V4cHJ9IGNvbnZlcnRlZCB0byBhIFN0cmluZy4gIElmIHtleHByfSBpcyBhIE51bWJlciwKIAkJRmxvYXQsIFN0cmluZywgQmxvYiBvciBhIGNvbXBvc2l0aW9uIG9mIHRoZW0sIHRoZW4gdGhlIHJlc3VsdApAQCAtOTIxMSw2ICs5MjQ5LDkgQEAKIAkJZXhhbXBsZSwgdG8gZ2V0IHRocmVlIGJ5dGVzIHVuZGVyIGFuZCBhZnRlciB0aGUgY3Vyc29yOiA+CiAJCQlzdHJwYXJ0KGdldGxpbmUoIi4iKSwgY29sKCIuIikgLSAxLCAzKQogPAorCQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCUdldFRleHQoKS0+c3RycGFydCg1KQorCiBzdHJyaWR4KHtoYXlzdGFja30sIHtuZWVkbGV9IFssIHtzdGFydH1dKQkJCSpzdHJyaWR4KCkqCiAJCVRoZSByZXN1bHQgaXMgYSBOdW1iZXIsIHdoaWNoIGdpdmVzIHRoZSBieXRlIGluZGV4IGluCiAJCXtoYXlzdGFja30gb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgU3RyaW5nIHtuZWVkbGV9LgpAQCAtOTIyOSw2ICs5MjcwLDkgQEAKIAkJV2hlbiB1c2VkIHdpdGggYSBzaW5nbGUgY2hhcmFjdGVyIGl0IHdvcmtzIHNpbWlsYXIgdG8gdGhlIEMKIAkJZnVuY3Rpb24gc3RycmNocigpLgogCisJCUNhbiBhbHNvIGJlIHVzZWQgYXMgYSB8bWV0aG9kfDogPgorCQkJR2V0SGF5c3RhY2soKS0+c3RycmlkeChuZWVkbGUpCisKIHN0cnRyYW5zKHtleHByfSkJCQkJCSpzdHJ0cmFucygpKgogCQlUaGUgcmVzdWx0IGlzIGEgU3RyaW5nLCB3aGljaCBpcyB7ZXhwcn0gd2l0aCBhbGwgdW5wcmludGFibGUKIAkJY2hhcmFjdGVycyB0cmFuc2xhdGVkIGludG8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgfCdpc3ByaW50J3wuCkBAIC05Mjc3LDYgKzkzMjEsOSBAQAogPAkJVGhpcyBmaW5kcyB0aGUgZmlyc3QgbnVtYmVyIGluIHRoZSBsaW5lIGFuZCBhZGRzIG9uZSB0byBpdC4KIAkJQSBsaW5lIGJyZWFrIGlzIGluY2x1ZGVkIGFzIGEgbmV3bGluZSBjaGFyYWN0ZXIuCiAKKwkJQ2FuIGFsc28gYmUgdXNlZCBhcyBhIHxtZXRob2R8OiA+CisJCQlHZXROcigpLT5zdWJtYXRjaCgpCisKIHN1YnN0aXR1dGUoe2V4cHJ9LCB7cGF0fSwge3N1Yn0sIHtmbGFnc30pCQkqc3Vic3RpdHV0ZSgpKgogCQlUaGUgcmVzdWx0IGlzIGEgU3RyaW5nLCB3aGljaCBpcyBhIGNvcHkgb2Yge2V4cHJ9LCBpbiB3aGljaAogCQl0aGUgZmlyc3QgbWF0Y2ggb2Yge3BhdH0gaXMgcmVwbGFjZWQgd2l0aCB7c3VifS4KQEAgLTkzNDAsNiArOTM4Nyw5IEBACiAJCQlOb3QgYSBzd2FwIGZpbGU6IGRvZXMgbm90IGNvbnRhaW4gY29ycmVjdCBibG9jayBJRAogCQkJTWFnaWMgbnVtYmVyIG1pc21hdGNoOiBJbmZvIGluIGZpcnN0IGJsb2NrIGlzIGludmFsaWQKIAorCQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCUdldEZpbGVuYW1lKCktPnN3YXBpbmZvKCkKKwogc3dhcG5hbWUoe2V4cHJ9KQkJCQkJKnN3YXBuYW1lKCkqCiAJCVRoZSByZXN1bHQgaXMgdGhlIHN3YXAgZmlsZSBwYXRoIG9mIHRoZSBidWZmZXIge2V4cHJ9LgogCQlGb3IgdGhlIHVzZSBvZiB7ZXhwcn0sIHNlZSB8YnVmbmFtZSgpfCBhYm92ZS4KQEAgLTkzNDcsNiArOTM5Nyw5IEBACiAJCXw6c3dhcG5hbWV8ICh1bmxlc3Mgbm8gc3dhcCBmaWxlKS4KIAkJSWYgYnVmZmVyIHtleHByfSBoYXMgbm8gc3dhcCBmaWxlLCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy4KIAorCQlDYW4gYWxzbyBiZSB1c2VkIGFzIGEgfG1ldGhvZHw6ID4KKwkJCUdldEJ1Zm5hbWUoKS0+c3dhcG5hbWUoKQorCiBzeW5JRCh7bG51bX0sIHtjb2x9LCB7dHJhbnN9KQkJCQkqc3luSUQoKSoKIAkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggaXMgdGhlIHN5bnRheCBJRCBhdCB0aGUgcG9zaXRpb24KIAkJe2xudW19IGFuZCB7Y29sfSBpbiB0aGUgY3VycmVudCB3aW5kb3cuCmRpZmYgLS1naXQgYS9zcmMvZXZhbGZ1bmMuYyBiL3NyYy9ldmFsZnVuYy5jCmluZGV4IDI0NjFiNmMuLjE5OTIyZGEgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsZnVuYy5jCisrKyBiL3NyYy9ldmFsZnVuYy5jCkBAIC03MTUsMzggKzcxNSwzOCBAQAogICAgIHsic29ydCIsCQkxLCAzLCBGRUFSR18xLAkgIGZfc29ydH0sCiAjaWZkZWYgRkVBVF9TT1VORAogICAgIHsic291bmRfY2xlYXIiLAkwLCAwLCAwLAkgIGZfc291bmRfY2xlYXJ9LAotICAgIHsic291bmRfcGxheWV2ZW50IiwJMSwgMiwgMCwJICBmX3NvdW5kX3BsYXlldmVudH0sCi0gICAgeyJzb3VuZF9wbGF5ZmlsZSIsCTEsIDIsIDAsCSAgZl9zb3VuZF9wbGF5ZmlsZX0sCi0gICAgeyJzb3VuZF9zdG9wIiwJMSwgMSwgMCwJICBmX3NvdW5kX3N0b3B9LAorICAgIHsic291bmRfcGxheWV2ZW50IiwJMSwgMiwgRkVBUkdfMSwJICBmX3NvdW5kX3BsYXlldmVudH0sCisgICAgeyJzb3VuZF9wbGF5ZmlsZSIsCTEsIDIsIEZFQVJHXzEsCSAgZl9zb3VuZF9wbGF5ZmlsZX0sCisgICAgeyJzb3VuZF9zdG9wIiwJMSwgMSwgRkVBUkdfMSwJICBmX3NvdW5kX3N0b3B9LAogI2VuZGlmCi0gICAgeyJzb3VuZGZvbGQiLAkxLCAxLCAwLAkgIGZfc291bmRmb2xkfSwKLSAgICB7InNwZWxsYmFkd29yZCIsCTAsIDEsIDAsCSAgZl9zcGVsbGJhZHdvcmR9LAotICAgIHsic3BlbGxzdWdnZXN0IiwJMSwgMywgMCwJICBmX3NwZWxsc3VnZ2VzdH0sCisgICAgeyJzb3VuZGZvbGQiLAkxLCAxLCBGRUFSR18xLAkgIGZfc291bmRmb2xkfSwKKyAgICB7InNwZWxsYmFkd29yZCIsCTAsIDEsIEZFQVJHXzEsCSAgZl9zcGVsbGJhZHdvcmR9LAorICAgIHsic3BlbGxzdWdnZXN0IiwJMSwgMywgRkVBUkdfMSwJICBmX3NwZWxsc3VnZ2VzdH0sCiAgICAgeyJzcGxpdCIsCQkxLCAzLCBGRUFSR18xLAkgIGZfc3BsaXR9LAogI2lmZGVmIEZFQVRfRkxPQVQKICAgICB7InNxcnQiLAkJMSwgMSwgRkVBUkdfMSwJICBmX3NxcnR9LAogICAgIHsic3RyMmZsb2F0IiwJMSwgMSwgRkVBUkdfMSwJICBmX3N0cjJmbG9hdH0sCiAjZW5kaWYKICAgICB7InN0cjJsaXN0IiwJMSwgMiwgRkVBUkdfMSwJICBmX3N0cjJsaXN0fSwKLSAgICB7InN0cjJuciIsCQkxLCAyLCAwLAkgIGZfc3RyMm5yfSwKLSAgICB7InN0cmNoYXJwYXJ0IiwJMiwgMywgMCwJICBmX3N0cmNoYXJwYXJ0fSwKLSAgICB7InN0cmNoYXJzIiwJMSwgMiwgMCwJICBmX3N0cmNoYXJzfSwKLSAgICB7InN0cmRpc3BsYXl3aWR0aCIsCTEsIDIsIDAsCSAgZl9zdHJkaXNwbGF5d2lkdGh9LAorICAgIHsic3RyMm5yIiwJCTEsIDIsIEZFQVJHXzEsCSAgZl9zdHIybnJ9LAorICAgIHsic3RyY2hhcnBhcnQiLAkyLCAzLCBGRUFSR18xLAkgIGZfc3RyY2hhcnBhcnR9LAorICAgIHsic3RyY2hhcnMiLAkxLCAyLCBGRUFSR18xLAkgIGZfc3RyY2hhcnN9LAorICAgIHsic3RyZGlzcGxheXdpZHRoIiwJMSwgMiwgRkVBUkdfMSwJICBmX3N0cmRpc3BsYXl3aWR0aH0sCiAjaWZkZWYgSEFWRV9TVFJGVElNRQotICAgIHsic3RyZnRpbWUiLAkxLCAyLCAwLAkgIGZfc3RyZnRpbWV9LAorICAgIHsic3RyZnRpbWUiLAkxLCAyLCBGRUFSR18xLAkgIGZfc3RyZnRpbWV9LAogI2VuZGlmCi0gICAgeyJzdHJnZXRjaGFyIiwJMiwgMiwgMCwJICBmX3N0cmdldGNoYXJ9LAotICAgIHsic3RyaWR4IiwJCTIsIDMsIDAsCSAgZl9zdHJpZHh9LAorICAgIHsic3RyZ2V0Y2hhciIsCTIsIDIsIEZFQVJHXzEsCSAgZl9zdHJnZXRjaGFyfSwKKyAgICB7InN0cmlkeCIsCQkyLCAzLCBGRUFSR18xLAkgIGZfc3RyaWR4fSwKICAgICB7InN0cmluZyIsCQkxLCAxLCBGRUFSR18xLAkgIGZfc3RyaW5nfSwKICAgICB7InN0cmxlbiIsCQkxLCAxLCBGRUFSR18xLAkgIGZfc3RybGVufSwKLSAgICB7InN0cnBhcnQiLAkJMiwgMywgMCwJICBmX3N0cnBhcnR9LAotICAgIHsic3RycmlkeCIsCQkyLCAzLCAwLAkgIGZfc3RycmlkeH0sCisgICAgeyJzdHJwYXJ0IiwJCTIsIDMsIEZFQVJHXzEsCSAgZl9zdHJwYXJ0fSwKKyAgICB7InN0cnJpZHgiLAkJMiwgMywgRkVBUkdfMSwJICBmX3N0cnJpZHh9LAogICAgIHsic3RydHJhbnMiLAkxLCAxLCBGRUFSR18xLAkgIGZfc3RydHJhbnN9LAogICAgIHsic3Ryd2lkdGgiLAkxLCAxLCBGRUFSR18xLAkgIGZfc3Ryd2lkdGh9LAotICAgIHsic3VibWF0Y2giLAkxLCAyLCAwLAkgIGZfc3VibWF0Y2h9LAorICAgIHsic3VibWF0Y2giLAkxLCAyLCBGRUFSR18xLAkgIGZfc3VibWF0Y2h9LAogICAgIHsic3Vic3RpdHV0ZSIsCTQsIDQsIEZFQVJHXzEsCSAgZl9zdWJzdGl0dXRlfSwKLSAgICB7InN3YXBpbmZvIiwJMSwgMSwgMCwJICBmX3N3YXBpbmZvfSwKLSAgICB7InN3YXBuYW1lIiwJMSwgMSwgMCwJICBmX3N3YXBuYW1lfSwKKyAgICB7InN3YXBpbmZvIiwJMSwgMSwgRkVBUkdfMSwJICBmX3N3YXBpbmZvfSwKKyAgICB7InN3YXBuYW1lIiwJMSwgMSwgRkVBUkdfMSwJICBmX3N3YXBuYW1lfSwKICAgICB7InN5bklEIiwJCTMsIDMsIDAsCSAgZl9zeW5JRH0sCiAgICAgeyJzeW5JRGF0dHIiLAkyLCAzLCBGRUFSR18xLAkgIGZfc3luSURhdHRyfSwKICAgICB7InN5bklEdHJhbnMiLAkxLCAxLCBGRUFSR18xLAkgIGZfc3luSUR0cmFuc30sCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2JyZWFraW5kZW50LnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfYnJlYWtpbmRlbnQudmltCmluZGV4IDY1ZTI1OGEuLjc4NTcwOWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfYnJlYWtpbmRlbnQudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfYnJlYWtpbmRlbnQudmltCkBAIC00MjQsNyArNDI0LDcgQEAKICAgY2FsbCBzOnRlc3Rfd2luZG93cygnc2V0bCBjcG8tPW4gc2JyPT4+IG51IG51dz00IG5vbGlzdCBicmlvcHQ9IHRzPTQgdnRzPTQnKQogICBsZXQgdGV4dCA9IGdldGxpbmUoMikKICAgbGV0IHdpZHRoID0gc3RybGVuKHRleHRbMTpdKSArIDItPmluZGVudCgpICsgc3RybGVuKCZzYnIpICogMyAiIHRleHQgd3JhcHMgMyB0aW1lcwotICBjYWxsIGFzc2VydF9lcXVhbCh3aWR0aCwgc3RyZGlzcGxheXdpZHRoKHRleHQpKQorICBjYWxsIGFzc2VydF9lcXVhbCh3aWR0aCwgdGV4dC0+c3RyZGlzcGxheXdpZHRoKCkpCiAgIGNhbGwgczpjbG9zZV93aW5kb3dzKCdzZXQgc2JyPSB2dHMmJykKIGVuZGZ1bmMKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9leHByLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZXhwci52aW0KaW5kZXggMTEwY2VjYi4uMzY1YTgxMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9leHByLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X2V4cHIudmltCkBAIC01Myw3ICs1Myw3IEBACiAKIGZ1bmMgVGVzdF9zdHJnZXRjaGFyKCkKICAgY2FsbCBhc3NlcnRfZXF1YWwoY2hhcjJucignYScpLCBzdHJnZXRjaGFyKCdheGInLCAwKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoY2hhcjJucigneCcpLCBzdHJnZXRjaGFyKCdheGInLCAxKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoY2hhcjJucigneCcpLCAnYXhiJy0+c3RyZ2V0Y2hhcigxKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoY2hhcjJucignYicpLCBzdHJnZXRjaGFyKCdheGInLCAyKSkKIAogICBjYWxsIGFzc2VydF9lcXVhbCgtMSwgc3RyZ2V0Y2hhcignYXhiJywgLTEpKQpAQCAtNjMsNyArNjMsNyBAQAogCiBmdW5jIFRlc3Rfc3RyY2hhcnBhcnQoKQogICBjYWxsIGFzc2VydF9lcXVhbCgnYScsIHN0cmNoYXJwYXJ0KCdheGInLCAwLCAxKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoJ3gnLCBzdHJjaGFycGFydCgnYXhiJywgMSwgMSkpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKCd4JywgJ2F4YictPnN0cmNoYXJwYXJ0KDEsIDEpKQogICBjYWxsIGFzc2VydF9lcXVhbCgnYicsIHN0cmNoYXJwYXJ0KCdheGInLCAyLCAxKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ3hiJywgc3RyY2hhcnBhcnQoJ2F4YicsIDEpKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2Z1bmN0aW9ucy52aW0gYi9zcmMvdGVzdGRpci90ZXN0X2Z1bmN0aW9ucy52aW0KaW5kZXggMzU4OGM3Ni4uNGM2ZDJhOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9mdW5jdGlvbnMudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfZnVuY3Rpb25zLnZpbQpAQCAtMTM4LDcgKzEzOCw3IEBACiAgIGNhbGwgYXNzZXJ0X2VxdWFsKC0xMjM0NTY3ODksIHN0cjJucignLTEyMzQ1Njc4OScpKQogCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDUsIHN0cjJucignMTAxJywgMikpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDUsIHN0cjJucignMGIxMDEnLCAyKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoNSwgJzBiMTAxJy0+c3RyMm5yKDIpKQogICBjYWxsIGFzc2VydF9lcXVhbCg1LCBzdHIybnIoJzBCMTAxJywgMikpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKC01LCBzdHIybnIoJy0xMDEnLCAyKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoLTUsIHN0cjJucignLTBiMTAxJywgMikpCkBAIC0xODQsNyArMTg0LDcgQEAKICAgIiBvZiBzdHJmdGltZSgpIGNhbiBiZSAxNyBvciAxOCwgZGVwZW5kaW5nIG9uIHRpbWV6b25lLgogICBjYWxsIGFzc2VydF9tYXRjaCgnXjIwMTctMDEtMVs3OF0kJywgc3RyZnRpbWUoJyVZLSVtLSVkJywgMTQ4NDY5NTUxMikpCiAgICIKLSAgY2FsbCBhc3NlcnRfbWF0Y2goJ15cZFxkXGRcZC1cKDBcZFx8MVswMTJdXCktXChbMDEyXVxkXHwzWzAxXVwpIFwoWzAxXVxkXHwyWzAtM11cKTpbMC01XVxkOlwoWzAtNV1cZFx8NjBcKSQnLCBzdHJmdGltZSgnJVktJW0tJWQgJUg6JU06JVMnKSkKKyAgY2FsbCBhc3NlcnRfbWF0Y2goJ15cZFxkXGRcZC1cKDBcZFx8MVswMTJdXCktXChbMDEyXVxkXHwzWzAxXVwpIFwoWzAxXVxkXHwyWzAtM11cKTpbMC01XVxkOlwoWzAtNV1cZFx8NjBcKSQnLCAnJVktJW0tJWQgJUg6JU06JVMnLT5zdHJmdGltZSgpKQogCiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHN0cmZ0aW1lKFtdKScsICdFNzMwOicpCiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHN0cmZ0aW1lKCIlWSIsIFtdKScsICdFNzQ1OicpCkBAIC00MTUsNyArNDE1LDcgQEAKIGZ1bmMgVGVzdF9zdHJwYXJ0KCkKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ2RlJywgc3RycGFydCgnYWJjZGVmZycsIDMsIDIpKQogICBjYWxsIGFzc2VydF9lcXVhbCgnYWInLCBzdHJwYXJ0KCdhYmNkZWZnJywgLTIsIDQpKQotICBjYWxsIGFzc2VydF9lcXVhbCgnYWJjZGVmZycsIHN0cnBhcnQoJ2FiY2RlZmcnLCAtMikpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKCdhYmNkZWZnJywgJ2FiY2RlZmcnLT5zdHJwYXJ0KC0yKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ2ZnJywgc3RycGFydCgnYWJjZGVmZycsIDUsIDQpKQogICBjYWxsIGFzc2VydF9lcXVhbCgnZGVmZycsIHN0cnBhcnQoJ2FiY2RlZmcnLCAzKSkKIApAQCAtNzYzLDExICs3NjMsMTEgQEAKIGZ1bmMgVGVzdF9zdHJpZHgoKQogICBjYWxsIGFzc2VydF9lcXVhbCgtMSwgc3RyaWR4KCcnLCAnbCcpKQogICBjYWxsIGFzc2VydF9lcXVhbCgwLCAgc3RyaWR4KCcnLCAnJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICBzdHJpZHgoJ2hlbGxvJywgJycpKQorICBjYWxsIGFzc2VydF9lcXVhbCgwLCAgJ2hlbGxvJy0+c3RyaWR4KCcnKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoLTEsIHN0cmlkeCgnaGVsbG8nLCAnTCcpKQogICBjYWxsIGFzc2VydF9lcXVhbCgyLCAgc3RyaWR4KCdoZWxsbycsICdsJywgLTEpKQogICBjYWxsIGFzc2VydF9lcXVhbCgyLCAgc3RyaWR4KCdoZWxsbycsICdsJywgMCkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDIsICBzdHJpZHgoJ2hlbGxvJywgJ2wnLCAxKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoMiwgICdoZWxsbyctPnN0cmlkeCgnbCcsIDEpKQogICBjYWxsIGFzc2VydF9lcXVhbCgzLCAgc3RyaWR4KCdoZWxsbycsICdsJywgMykpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKC0xLCBzdHJpZHgoJ2hlbGxvJywgJ2wnLCA0KSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoLTEsIHN0cmlkeCgnaGVsbG8nLCAnbCcsIDEwKSkKQEAgLTc4MCw3ICs3ODAsNyBAQAogICBjYWxsIGFzc2VydF9lcXVhbCgwLCAgc3RycmlkeCgnJywgJycpKQogICBjYWxsIGFzc2VydF9lcXVhbCg1LCAgc3RycmlkeCgnaGVsbG8nLCAnJykpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKC0xLCBzdHJyaWR4KCdoZWxsbycsICdMJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDMsICBzdHJyaWR4KCdoZWxsbycsICdsJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKDMsICAnaGVsbG8nLT5zdHJyaWR4KCdsJykpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDMsICBzdHJyaWR4KCdoZWxsbycsICdsJywgMTApKQogICBjYWxsIGFzc2VydF9lcXVhbCgzLCAgc3RycmlkeCgnaGVsbG8nLCAnbCcsIDMpKQogICBjYWxsIGFzc2VydF9lcXVhbCgyLCAgc3RycmlkeCgnaGVsbG8nLCAnbCcsIDIpKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9zb3VuZC52aW0gYi9zcmMvdGVzdGRpci90ZXN0X3NvdW5kLnZpbQppbmRleCA2ZmZkN2U2Li44NmRjNTk2IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3NvdW5kLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X3NvdW5kLnZpbQpAQCAtMTMsMTMgKzEzLDEzIEBACiAgIGlmIGhhcygnd2luMzInKQogICAgIHRocm93ICdTa2lwcGVkOiBQbGF5aW5nIGV2ZW50IHdpdGggY2FsbGJhY2sgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzJwogICBlbmRpZgotICBsZXQgaWQgPSBzb3VuZF9wbGF5ZXZlbnQoJ2JlbGwnLCAnUGxheUNhbGxiYWNrJykKKyAgbGV0IGlkID0gJ2JlbGwnLT5zb3VuZF9wbGF5ZXZlbnQoJ1BsYXlDYWxsYmFjaycpCiAgIGlmIGlkID09IDAKICAgICB0aHJvdyAnU2tpcHBlZDogYmVsbCBldmVudCBub3QgYXZhaWxhYmxlJwogICBlbmRpZgogICAiIFN0b3AgaXQgcXVpY2tseSwgYXZvaWQgYW5ub3lpbmcgdGhlIHVzZXIuCiAgIHNsZWVwIDIwbQotICBjYWxsIHNvdW5kX3N0b3AoaWQpCisgIGV2YWwgaWQtPnNvdW5kX3N0b3AoKQogICBzbGVlcCAzMG0KICAgY2FsbCBhc3NlcnRfZXF1YWwoaWQsIGc6aWQpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIGc6cmVzdWx0KSAgIiBzb3VuZCB3YXMgYWJvcnRlZApAQCAtMzUsNyArMzUsNyBAQAogICBlbmRpZgogCiAgICIgcGxheSB1bnRpbCB0aGUgZW5kCi0gIGxldCBpZDIgPSBzb3VuZF9wbGF5ZmlsZShmbmFtZSwgJ1BsYXlDYWxsYmFjaycpCisgIGxldCBpZDIgPSBmbmFtZS0+c291bmRfcGxheWZpbGUoJ1BsYXlDYWxsYmFjaycpCiAgIGNhbGwgYXNzZXJ0X3RydWUoaWQyID4gMCkKICAgc2xlZXAgNTAwbQogICBjYWxsIGFzc2VydF9lcXVhbChpZDIsIGc6aWQpCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3NwZWxsLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3Rfc3BlbGwudmltCmluZGV4IGFmNzI2MzcuLmE0NGQ5NTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Rfc3BlbGwudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Rfc3BlbGwudmltCkBAIC03Myw3ICs3Myw3IEBACiAgIHNldCBzcGVsbAogCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnYnljeWNsZScsICdiYWQnXSwgIHNwZWxsYmFkd29yZCgnTXkgYnljeWNsZS4nKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydhbm90aGVyJywgJ2NhcHMnXSwgc3BlbGxiYWR3b3JkKCdBIHNlbnRlbmNlLiBhbm90aGVyIHNlbnRlbmNlJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnYW5vdGhlcicsICdjYXBzJ10sICdBIHNlbnRlbmNlLiBhbm90aGVyIHNlbnRlbmNlJy0+c3BlbGxiYWR3b3JkKCkpCiAKICAgc2V0IHNwZWxsbGFuZz1lbgogICBjYWxsIGFzc2VydF9lcXVhbChbJycsICcnXSwgICAgICAgICAgICBzcGVsbGJhZHdvcmQoJ2NlbnRyZScpKQpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICAgIFwgKQogCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCJnZWJsZXRlZ2VrIiwgc291bmRmb2xkKCdnb29ibGVkeWdvb29rJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCJrZXBlcmVuZXZlbiIsIHNvdW5kZm9sZCgna/NvcOty/270dmVuJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKCJrZXBlcmVuZXZlbiIsICdr829w63L/bvR2ZW4nLT5zb3VuZGZvbGQoKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoImV2ZXJsZXMgZ2VzdmV0cyBldGVsZSIsIHNvdW5kZm9sZCgnb2V2ZXJsb29zIGdlendldHMgZWRhbGUnKSkKIGVuZGZ1bmMKIApAQCAtNDQwLDcgKzQ0MCw3IEBACiAgICAgICBicmVhawogICAgIGVuZGlmCiAgICAgbGV0IHByZXZiYWQgPSBiYWQKLSAgICBsZXQgbHN0ID0gc3BlbGxzdWdnZXN0KGJhZCwgMykKKyAgICBsZXQgbHN0ID0gYmFkLT5zcGVsbHN1Z2dlc3QoMykKICAgICBub3JtYWwgbW0KIAogICAgIGNhbGwgYWRkKHJlc3VsdCwgW2JhZCwgbHN0XSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Rfc3Vic3RpdHV0ZS52aW0gYi9zcmMvdGVzdGRpci90ZXN0X3N1YnN0aXR1dGUudmltCmluZGV4IGEyNjNmYjYuLjhhOGU3YWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Rfc3Vic3RpdHV0ZS52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9zdWJzdGl0dXRlLnZpbQpAQCAtMzM3LDcgKzMzNyw3IEBACiAJCVwgc3Vic3RpdHV0ZSgnQTEyMzQ1Njc4OScsCiAJCVwgJ0FcKC5cKVwoLlwpXCguXClcKC5cKVwoLlwpXCguXClcKC5cKVwoLlwpXCguXCknLAogCQlcICdcPXN0cmluZyhbc3VibWF0Y2goMCwgMSksIHN1Ym1hdGNoKDksIDEpLCAnIC4KLQkJXCAnc3VibWF0Y2goOCwgMSksIHN1Ym1hdGNoKDcsIDEpLCBzdWJtYXRjaCg2LCAxKSwgJyAuCisJCVwgJ3N1Ym1hdGNoKDgsIDEpLCA3LT5zdWJtYXRjaCgxKSwgc3VibWF0Y2goNiwgMSksICcgLgogCQlcICdzdWJtYXRjaCg1LCAxKSwgc3VibWF0Y2goNCwgMSksIHN1Ym1hdGNoKDMsIDEpLCAnIC4KIAkJXCAnc3VibWF0Y2goMiwgMSksIHN1Ym1hdGNoKDEsIDEpXSknLAogCQlcICcnKSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Rfc3dhcC52aW0gYi9zcmMvdGVzdGRpci90ZXN0X3N3YXAudmltCmluZGV4IDg1NmM2NjMuLjZlMDFhZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Rfc3dhcC52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9zd2FwLnZpbQpAQCAtMTExLDcgKzExMSw3IEBACiAgIHcKICAgbGV0IGZuYW1lID0gczpzd2FwbmFtZSgpCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdYc3dhcGluZm8nLCBmbmFtZSkKLSAgbGV0IGluZm8gPSBzd2FwaW5mbyhmbmFtZSkKKyAgbGV0IGluZm8gPSBmbmFtZS0+c3dhcGluZm8oKQogCiAgIGxldCB2ZXIgPSBwcmludGYoJ1ZJTSAlZC4lZCcsIHY6dmVyc2lvbiAvIDEwMCwgdjp2ZXJzaW9uICUgMTAwKQogICBjYWxsIGFzc2VydF9lcXVhbCh2ZXIsIGluZm8udmVyc2lvbikKQEAgLTE1Myw3ICsxNTMsNyBAQAogICBsZXQgYnVmID0gYnVmbnIoJyUnKQogICBsZXQgZXhwZWN0ZWQgPSBzOnN3YXBuYW1lKCkKICAgd2luY21kIHAKLSAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIHN3YXBuYW1lKGJ1ZikpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cGVjdGVkLCBidWYtPnN3YXBuYW1lKCkpCiAKICAgbmV3IFh0ZXN0MwogICBzZXRsb2NhbCBub3N3YXBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3V0ZjgudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF91dGY4LnZpbQppbmRleCBmYTA1NjhlLi40MmE0NmZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3V0ZjgudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfdXRmOC52aW0KQEAgLTE3LDcgKzE3LDcgQEAKICAgbGV0IGV4cCA9IFtbMSwgMSwgMV0sIFszLCAzLCAzXSwgWzIsIDIsIDFdLCBbMywgMywgMV0sIFsxLCAxLCAxXV0KICAgZm9yIGkgaW4gcmFuZ2UobGVuKGlucCkpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwW2ldWzBdLCBzdHJjaGFycyhpbnBbaV0pKQotICAgIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cFtpXVsxXSwgc3RyY2hhcnMoaW5wW2ldLCAwKSkKKyAgICBjYWxsIGFzc2VydF9lcXVhbChleHBbaV1bMV0sIGlucFtpXS0+c3RyY2hhcnMoMCkpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwW2ldWzJdLCBzdHJjaGFycyhpbnBbaV0sIDEpKQogICBlbmRmb3IKIGVuZGZ1bmMKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmMgYi9zcmMvdmVyc2lvbi5jCmluZGV4IDgwOTc2NzcuLjU0NjgwZjUgMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmMKKysrIGIvc3JjL3ZlcnNpb24uYwpAQCAtNzU4LDYgKzc1OCw4IEBACiBzdGF0aWMgaW50IGluY2x1ZGVkX3BhdGNoZXNbXSA9CiB7ICAgLyogQWRkIG5ldyBwYXRjaCBudW1iZXIgYmVsb3cgdGhpcyBsaW5lICovCiAvKiovCisgICAgMjAwNCwKKy8qKi8KICAgICAyMDAzLAogLyoqLwogICAgIDIwMDIsCg==