ZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgppbmRleCA2NDllZjQzLi4xNThmNWNjIDEwMDY0NAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0xMCw3ICsxMCw4IEBACiAgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy40LjAsNC4wLjApIiwKICBvcmcuanVuaXQ7YnVuZGxlLXZlcnNpb249IjMuOC4yIiwKICBvcmcudzNjLnhxdHMudGVzdHN1aXRlO2J1bmRsZS12ZXJzaW9uPSIxLjAuMiIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjQuMCw0LjAuMCkiCisgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjQuMCw0LjAuMCkiLAorICBqYXZhX2N1cC5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSIwLjEwLjAiCiBFeHBvcnQtUGFja2FnZTogb3JnLmN1c3RvbW1vbmtleS54bWx1bml0LAogIG9yZy5jdXN0b21tb25rZXkueG1sdW5pdC5leGFtcGxlcywKICBvcmcuY3VzdG9tbW9ua2V5LnhtbHVuaXQuZXhjZXB0aW9ucywKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9idWdUZXN0RmlsZXMvYnVnMzg4NTA0LnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9idWdUZXN0RmlsZXMvYnVnMzg4NTA0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDUxOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL2J1Z1Rlc3RGaWxlcy9idWczODg1MDQueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8U2FtcGxlPgorCTxTY2hsw7xzc2VsPjE8L1NjaGzDvHNzZWw+CisJPOqxieqxiz4yPC/qsYnqsYs+Cis8L1NhbXBsZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL2ludGVybmFsL1hQYXRoRmxleFRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL2ludGVybmFsL1hQYXRoRmxleFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjVjNTBlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3QveG1sL3hwYXRoMi9wcm9jZXNzb3IvaW50ZXJuYWwvWFBhdGhGbGV4VGVzdC5qYXZhCkBAIC0wLDAgKzEsNjMgQEAKK3BhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLmludGVybmFsOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKKworaW1wb3J0IGphdmFfY3VwLnJ1bnRpbWUuU3ltYm9sOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworCitwdWJsaWMgY2xhc3MgWFBhdGhGbGV4VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKwkKKwl2b2lkIGFzc2VydFN5bWJvbEVxdWFscyhpbnQgZXhwZWN0ZWRJZCwgT2JqZWN0IGV4cGVjdGVkVmFsdWUsIFN5bWJvbCBzeW1ib2wpIHsKKwkJYXNzZXJ0RXF1YWxzKCJFeHBlY3RlZCBzeW1ib2wgdHlwZSBmb3IgIiArIHN5bWJvbC52YWx1ZSwgZXhwZWN0ZWRJZCwgc3ltYm9sLnN5bSk7CisJCWFzc2VydEVxdWFscygiRXhwZWN0ZWQgc3ltYm9sIHZhbHVlIGZvciBzeW1ib2wgdHlwZSIsIGV4cGVjdGVkVmFsdWUsIHN5bWJvbC52YWx1ZSk7CisJfQorCQorCVN5bWJvbCB0b2tlbml6ZUZpcnN0KFN0cmluZyBzb3VyY2UpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCVhQYXRoRmxleCBsZXhlciA9IG5ldyBYUGF0aEZsZXgobmV3IFN0cmluZ1JlYWRlcihzb3VyY2UpKTsKKwkJcmV0dXJuIGxleGVyLm5leHRfdG9rZW4oKTsKKwl9CisKKwlwdWJsaWMgdm9pZCB0ZXN0RGlnaXRzKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJYXNzZXJ0U3ltYm9sRXF1YWxzKFhwYXRoU3ltLklOVEVHRVIsIEJpZ0ludGVnZXIudmFsdWVPZigxMjM0KSwgdG9rZW5pemVGaXJzdCgiMTIzNCIpKTsKKwkJYXNzZXJ0U3ltYm9sRXF1YWxzKFhwYXRoU3ltLkRFQ0lNQUwsIEJpZ0RlY2ltYWwudmFsdWVPZigxMjM0LjApLCB0b2tlbml6ZUZpcnN0KCIxMjM0LjAiKSk7CisJfQorCisJcHVibGljIHZvaWQgdGVzdE5DTkFNRSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCWFzc2VydFN5bWJvbEVxdWFscyhYcGF0aFN5bS5OQ05BTUUsICJiZWVmIiwgdG9rZW5pemVGaXJzdCgiYmVlZiIpKTsKKwkJYXNzZXJ0U3ltYm9sRXF1YWxzKFhwYXRoU3ltLk5DTkFNRSwgIl9iZWVmIiwgdG9rZW5pemVGaXJzdCgiX2JlZWYiKSk7CisJfQorCisJcHVibGljIHZvaWQgdGVzdE5vbkFzY2lpSWRlbnRpZmllcnMoKSB0aHJvd3MgSU9FeGNlcHRpb24geworCQlhc3NlcnRTeW1ib2xFcXVhbHMoWHBhdGhTeW0uTkNOQU1FLCAiTVx1MDBlOGxsZXIiLCB0b2tlbml6ZUZpcnN0KCJNXHUwMGU4bGxlciIpKTsKKwkJYXNzZXJ0U3ltYm9sRXF1YWxzKFhwYXRoU3ltLk5DTkFNRSwgIlx1QUMyMCIsIHRva2VuaXplRmlyc3QoIlx1QUMyMCIpKTsKKwl9CisKKwlwdWJsaWMgdm9pZCB0ZXN0U2ltcGxlSWRlbnRpZmllcnNJblNwYWNlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJYXNzZXJ0RXF1YWxzKCJteUVsZW1lbnQiLCB0b2tlbml6ZUZpcnN0KCIgbXlFbGVtZW50ICIpLnZhbHVlKTsKKwl9CisJcHVibGljIHZvaWQgdGVzdFVURjE2X1N1cm9nYXRlUGFpcl92YWxpZCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCS8vIFNQRUFLLU5PLUVWSUwgTU9OS0VZIGlzIGEgdmFsaWQgWE1MIG5hbWUKKwkJLy8gVW5pY29kZTogVSsxRjY0QSAoVStEODNEIFUrREU0QSkKKwkJWFBhdGhGbGV4IGxleGVyID0gbmV3IFhQYXRoRmxleChuZXcgU3RyaW5nUmVhZGVyKCIgbW9ua2V5XHVEODNEXHVERTRBbWUgIikpOworCQlTeW1ib2wgc3ltYm9sID0gbGV4ZXIubmV4dF90b2tlbigpOworCQkKKwkJYXNzZXJ0RXF1YWxzKCJtb25rZXlcdUQ4M0RcdURFNEFtZSIsIHN5bWJvbC52YWx1ZSk7CisJfQorCisJcHVibGljIHZvaWQgdGVzdFVURjE2X1N1cm9nYXRlUGFpcl9pbnZhbGlkKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJLy8gTGV0cyBnZXQgdGhlIHN1cnJvZ2F0ZSBvcmRlciB3cm9uZworCQl0cnkgeworCQkJWFBhdGhGbGV4IGxleGVyID0gbmV3IFhQYXRoRmxleChuZXcgU3RyaW5nUmVhZGVyKCJcdURFNEFcdUQ4M0QiKSk7CisJCQlsZXhlci5uZXh0X3Rva2VuKCk7CisJCQlmYWlsKCJTaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIik7CisJCX0KKwkJY2F0Y2ggKEpGbGV4RXJyb3IgZSkgeworCQkJLy8gaG9vcmF5IQorCQl9CQkJCisJfQorCit9CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC94bWwveHBhdGgyL3Byb2Nlc3Nvci90ZXN0L1Rlc3RCdWdzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC94bWwveHBhdGgyL3Byb2Nlc3Nvci90ZXN0L1Rlc3RCdWdzLmphdmEKaW5kZXggMGUzZDQ1My4uNzNjYWFmZSAxMDA2NDQKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3QveG1sL3hwYXRoMi9wcm9jZXNzb3IvdGVzdC9UZXN0QnVncy5qYXZhCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdEJ1Z3MuamF2YQpAQCAtNTksNyArNTksNyBAQAogICogIEplc3BlciBTdGVlbiBNb2xsZXIgIC0gYnVnIDM0MDkzMyAtIE1pZ3JhdGUgdGVzdHMgdG8gbmV3IFhQYXRoMiBBUEkKICAqICBMdWthc3ogV3ljaXNrICAgLSBidWcgMzYxMDYwIC0gQWdncmVnYXRpb25zIHdpdGggbmlsPdV0cnVl1SB0aHJvdyBleGNlcHRpb25zLgogICogIEx1a2FzeiBXeWNpc2sgICAtIGJ1ZyAzNjEwNTkgLSBGblJvdW5kSGFsZlRvRXZlbiBpcyB3cm9uZyBpbiBjYXNlIG9mIDIgYXJndW1lbnRzCi0gKiAgTHVrYXN6IFd5Y2lzayAgIC0gYnVnIDM2MTY1OSAtIEVsZW1udFR5cGUgdHlwZWQgdmFsdWUgaW4gY2FzZSBvZiBuaWw91XRydWXVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgSmVzcGVyIE1vbGxlciAgIC0gYnVnIDM4ODUwNCAtIFhQYXRoIHNjYW5uZXIgZG9lcyBub3QgZGV0ZWN0IG5vbi1BU0NJSSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogcGFja2FnZSBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdDsKQEAgLTE5OCw2ICsxOTgsMjAgQEAKIAkJfSk7CiAJfQogCQorCXB1YmxpYyB2b2lkIHRlc3ROYW1lc0luVW5pY29kZSgpIHRocm93cyBFeGNlcHRpb24geworCQlVUkwgZmlsZVVSTCA9IGJ1bmRsZS5nZXRFbnRyeSgiL2J1Z1Rlc3RGaWxlcy9idWczODg1MDQueG1sIik7CisJCWxvYWRET01Eb2N1bWVudChmaWxlVVJMKTsKKworCQlzZXR1cER5bmFtaWNDb250ZXh0KG51bGwpOworCisJCWNvbXBpbGVYUGF0aCgiY291bnQoLy9TY2hsn3NzZWwpIik7CisJCVJlc3VsdFNlcXVlbmNlIHJzID0gZXZhbHVhdGUoZG9tRG9jKTsKKworCQlTdHJpbmcgYWN0dWFsID0gcnMuZmlyc3QoKS5nZXRTdHJpbmdWYWx1ZSgpOworCisJCWFzc2VydEVxdWFscygiMSIsIGFjdHVhbCk7CisJfQorCQogCXB1YmxpYyB2b2lkIHRlc3ROYW1lc1doaWNoQXJlS2V5d29yZHMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKIAkJLy8gQnVnIDI3MzcxOQogCQlVUkwgZmlsZVVSTCA9IGJ1bmRsZS5nZXRFbnRyeSgiL2J1Z1Rlc3RGaWxlcy9idWczMTE0ODAueG1sIik7Cg==