ZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl9mb3JtZmlsbF9lbWJlZGRlcnRlc3QuY3BwIGIvZnBkZnNkay9mcGRmX2Zvcm1maWxsX2VtYmVkZGVydGVzdC5jcHAKaW5kZXggMTg4NTFjMC4uZGU4OTFmNyAxMDA2NDQKLS0tIGEvZnBkZnNkay9mcGRmX2Zvcm1maWxsX2VtYmVkZGVydGVzdC5jcHAKKysrIGIvZnBkZnNkay9mcGRmX2Zvcm1maWxsX2VtYmVkZGVydGVzdC5jcHAKQEAgLTI1NTMsMyArMjU1MywyMCBAQAogICBDaGVja0NhblVuZG8odHJ1ZSk7CiAgIENoZWNrQ2FuUmVkbyhmYWxzZSk7CiB9CisKK2NsYXNzIEZQREZYRkFGb3JtRW1iZWRkZXJUZXN0IDogcHVibGljIEZQREZGb3JtRmlsbEludGVyYWN0aXZlRW1iZWRkZXJUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIEZQREZYRkFGb3JtRW1iZWRkZXJUZXN0KCkgPSBkZWZhdWx0OworICB+RlBERlhGQUZvcm1FbWJlZGRlclRlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgY29uc3QgY2hhciogR2V0RG9jdW1lbnROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImJ1Z18xMDU1ODY5LnBkZiI7IH0KKworICBpbnQgR2V0Rm9ybVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGT1JNVFlQRV9YRkFfRlVMTDsgfQorfTsKKworVEVTVF9GKEZQREZYRkFGb3JtRW1iZWRkZXJUZXN0LCBQYXN0ZSkgeworICBDRlhfUG9pbnRGIHdoZXJlKDEwMCwgMTAwKTsKKyAgU2NvcGVkRlBERldpZGVTdHJpbmcgdGV4dF90b19pbnNlcnQgPSBHZXRGUERGV2lkZVN0cmluZyhMIlhZWiIpOworICBEb3VibGVDbGlja09uRm9ybUZpZWxkQXRQb2ludCh3aGVyZSk7CisgIEZPUk1fUmVwbGFjZVNlbGVjdGlvbihmb3JtX2hhbmRsZSgpLCBwYWdlKCksIHRleHRfdG9faW5zZXJ0LmdldCgpKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xMDU1ODY5LmluIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzEwNTU4NjkuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZjYmY1ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z18xMDU1ODY5LmluCkBAIC0wLDAgKzEsNjIgQEAKK3t7aGVhZGVyfX0KK3t7aW5jbHVkZSB4ZmFfY2F0YWxvZ18xXzAuZnJhZ21lbnR9fQore3tpbmNsdWRlIHhmYV9vYmplY3RfMl8wLmZyYWdtZW50fX0KK3t7aW5jbHVkZSB4ZmFfcHJlYW1ibGVfM18wLmZyYWdtZW50fX0KK3t7aW5jbHVkZSB4ZmFfY29uZmlnXzRfMC5mcmFnbWVudH19Cit7e29iamVjdCA1IDB9fSA8PAorICB7e3N0cmVhbWxlbn19Cis+Pgorc3RyZWFtCis8dGVtcGxhdGUgeG1sbnM9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXRlbXBsYXRlLzIuNi8iPgorICA8c3ViZm9ybSBsYXlvdXQ9InRiIiBsb2NhbGU9ImVuX1VTIiBuYW1lPSJmb3JtMSIgcmVzdG9yZVN0YXRlPSJhdXRvIj4KKyAgICA8cGFnZVNldD4KKyAgICAgIDxwYWdlQXJlYSBpZD0iUGFnZTEiIG5hbWU9IlBhZ2UxIj4KKyAgICAgICAgPGNvbnRlbnRBcmVhIGg9IjEwLjVpbiIgdz0iOGluIiB4PSIwLjI1aW4iIHk9IjAuMjVpbiIvPgorICAgICAgICA8bWVkaXVtIGxvbmc9IjExaW4iIHNob3J0PSI4LjVpbiIgc3RvY2s9ImxldHRlciIvPgorICAgICAgPC9wYWdlQXJlYT4KKyAgICA8L3BhZ2VTZXQ+CisgICAgPHN1YmZvcm0gaD0iMTAuNWluIiB3PSI4aW4iIG5hbWU9InN1YmZvcm0yIj4KKyAgICAgIDxmaWVsZCBoPSIxMG1tIiBuYW1lPSJjaG9pY2VMaXN0MCIgdz0iNTBtbSIgeD0iNW1tIiB5PSI1MG1tIj4KKyAgICAgICAgPHVpPgorICAgICAgICAgIDxjaG9pY2VMaXN0Lz4KKyAgICAgICAgPC91aT4KKyAgICAgICAgPGl0ZW1zPgorICAgICAgICAgIDx0ZXh0PlNpbmdsZTwvdGV4dD4KKyAgICAgICAgPC9pdGVtcz4KKyAgICAgIDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iY2hvaWNlTGlzdDEiIGg9IjIwMG1tIiB3PSIyMDBtbSIgeD0iMW1tIiB5PSIxbW0iPgorICAgICAgICA8dWk+CisgICAgICAgICAgPHRleHRFZGl0Lz4KKyAgICAgICAgPC91aT4KKyAgICAgICAgPHZhbHVlPgorICAgICAgICAgIDx0ZXh0PnBkZml1bTwvdGV4dD4KKyAgICAgICAgPC92YWx1ZT4KKyAgICAgICAgPGV2ZW50IGFjdGl2aXR5PSJjaGFuZ2UiPgorICAgICAgICAgIDxzY3JpcHQgY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI+CisgICAgICAgICAgICBjaGFuZ2VfY291bnQgKz0gMTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2VfY291bnQgPT0gMikgeworICAgICAgICAgICAgICAgIGYxID0geGZhLnJlc29sdmVOb2RlKCJ4ZmEuZm9ybS4uY2hvaWNlTGlzdDAiKTsKKyAgICAgICAgICAgICAgICB4ZmEuaG9zdC5zZXRGb2N1cyhmMSk7CisgICAgICAgICAgICAgICAgeGZhLnRlbXBsYXRlLnJlbWVyZ2UoKTsKKyAgICAgICAgICAgICAgICB4ZmEuaG9zdC5vcGVuTGlzdChmMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDwvZXZlbnQ+CisgICAgICA8L2ZpZWxkPgorICAgIDwvc3ViZm9ybT4KKyAgICA8ZXZlbnQgYWN0aXZpdHk9ImRvY1JlYWR5Ij4KKyAgICAgIDxzY3JpcHQgY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI+CisgICAgICAgIGNoYW5nZV9jb3VudCA9IDA7CisgICAgICA8L3NjcmlwdD4KKyAgICA8L2V2ZW50PgorICA8L3N1YmZvcm0+Cis8L3RlbXBsYXRlPgorZW5kc3RyZWFtCitlbmRvYmoKK3t7aW5jbHVkZSB4ZmFfbG9jYWxlXzZfMC5mcmFnbWVudH19Cit7e2luY2x1ZGUgeGZhX3Bvc3RhbWJsZV83XzAuZnJhZ21lbnR9fQore3tpbmNsdWRlIHhmYV9wYWdlc184XzAuZnJhZ21lbnR9fQore3t4cmVmfX0KK3t7dHJhaWxlcn19Cit7e3N0YXJ0eHJlZn19CislJUVPRgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzEwNTU4NjkucGRmIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzEwNTU4NjkucGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNWVjOTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfMTA1NTg2OS5wZGYKQEAgLTAsMCArMSwyNzEgQEAKKyVQREYtMS43CisloPKk9AorMSAwIG9iaiA8PAorICAvQWNyb0Zvcm0gMiAwIFIKKyAgL0V4dGVuc2lvbnMgPDwKKyAgICAvQURCRSA8PAorICAgICAgL0Jhc2VWZXJzaW9uIC8xLjcKKyAgICAgIC9FeHRlbnNpb25MZXZlbCA4CisgICAgPj4KKyAgPj4KKyAgL05lZWRzUmVuZGVyaW5nIHRydWUKKyAgL1BhZ2VzIDggMCBSCisgIC9UeXBlIC9DYXRhbG9nCis+PgorZW5kb2JqCisyIDAgb2JqIDw8CisgIC9YRkEgWworICAgIChwcmVhbWJsZSkKKyAgICAzIDAgUgorICAgIChjb25maWcpCisgICAgNCAwIFIKKyAgICAodGVtcGxhdGUpCisgICAgNSAwIFIKKyAgICAobG9jYWxlU2V0KQorICAgIDYgMCBSCisgICAgKHBvc3RhbWJsZSkKKyAgICA3IDAgUgorICBdCis+PgorZW5kb2JqCiszIDAgb2JqIDw8CisgIC9MZW5ndGggMTI0Cis+Pgorc3RyZWFtCis8eGRwOnhkcCB4bWxuczp4ZHA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwLyIgdGltZVN0YW1wPSIyMDE4LTAyLTIzVDIxOjM3OjExWiIgdXVpZD0iMjE0ODI3OTgtN2JmMC00MGE0LWJjNWQtM2NlZmRjY2YzMmI1Ij4KK2VuZHN0cmVhbQorZW5kb2JqCis0IDAgb2JqIDw8CisgIC9MZW5ndGggNjQyCis+Pgorc3RyZWFtCis8Y29uZmlnIHhtbG5zPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hjaS8zLjAvIj4KKzxhZ2VudCBuYW1lPSJkZXNpZ25lciI+CisgIDxkZXN0aW5hdGlvbj5wZGY8L2Rlc3RpbmF0aW9uPgorICA8cGRmPgorICAgIDxmb250SW5mby8+CisgIDwvcGRmPgorPC9hZ2VudD4KKzxwcmVzZW50PgorICA8cGRmPgorICAgIDx2ZXJzaW9uPjEuNzwvdmVyc2lvbj4KKyAgICA8YWRvYmVFeHRlbnNpb25MZXZlbD44PC9hZG9iZUV4dGVuc2lvbkxldmVsPgorICAgIDxyZW5kZXJQb2xpY3k+Y2xpZW50PC9yZW5kZXJQb2xpY3k+CisgICAgPHNjcmlwdE1vZGVsPlhGQTwvc2NyaXB0TW9kZWw+CisgICAgPGludGVyYWN0aXZlPjE8L2ludGVyYWN0aXZlPgorICA8L3BkZj4KKyAgPHhkcD4KKyAgICA8cGFja2V0cz4qPC9wYWNrZXRzPgorICA8L3hkcD4KKyAgPGRlc3RpbmF0aW9uPnBkZjwvZGVzdGluYXRpb24+CisgIDxzY3JpcHQ+CisgICAgPHJ1blNjcmlwdHM+c2VydmVyPC9ydW5TY3JpcHRzPgorICA8L3NjcmlwdD4KKzwvcHJlc2VudD4KKzxhY3JvYmF0PgorICA8YWNyb2JhdDc+CisgICAgPGR5bmFtaWNSZW5kZXI+cmVxdWlyZWQ8L2R5bmFtaWNSZW5kZXI+CisgIDwvYWNyb2JhdDc+CisgIDx2YWxpZGF0ZT5wcmVTdWJtaXQ8L3ZhbGlkYXRlPgorPC9hY3JvYmF0PgorPC9jb25maWc+CitlbmRzdHJlYW0KK2VuZG9iagorNSAwIG9iaiA8PAorICAvTGVuZ3RoIDEzNjEKKz4+CitzdHJlYW0KKzx0ZW1wbGF0ZSB4bWxucz0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvMi42LyI+CisgIDxzdWJmb3JtIGxheW91dD0idGIiIGxvY2FsZT0iZW5fVVMiIG5hbWU9ImZvcm0xIiByZXN0b3JlU3RhdGU9ImF1dG8iPgorICAgIDxwYWdlU2V0PgorICAgICAgPHBhZ2VBcmVhIGlkPSJQYWdlMSIgbmFtZT0iUGFnZTEiPgorICAgICAgICA8Y29udGVudEFyZWEgaD0iMTAuNWluIiB3PSI4aW4iIHg9IjAuMjVpbiIgeT0iMC4yNWluIi8+CisgICAgICAgIDxtZWRpdW0gbG9uZz0iMTFpbiIgc2hvcnQ9IjguNWluIiBzdG9jaz0ibGV0dGVyIi8+CisgICAgICA8L3BhZ2VBcmVhPgorICAgIDwvcGFnZVNldD4KKyAgICA8c3ViZm9ybSBoPSIxMC41aW4iIHc9IjhpbiIgbmFtZT0ic3ViZm9ybTIiPgorICAgICAgPGZpZWxkIGg9IjEwbW0iIG5hbWU9ImNob2ljZUxpc3QwIiB3PSI1MG1tIiB4PSI1bW0iIHk9IjUwbW0iPgorICAgICAgICA8dWk+CisgICAgICAgICAgPGNob2ljZUxpc3QvPgorICAgICAgICA8L3VpPgorICAgICAgICA8aXRlbXM+CisgICAgICAgICAgPHRleHQ+U2luZ2xlPC90ZXh0PgorICAgICAgICA8L2l0ZW1zPgorICAgICAgPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJjaG9pY2VMaXN0MSIgaD0iMjAwbW0iIHc9IjIwMG1tIiB4PSIxbW0iIHk9IjFtbSI+CisgICAgICAgIDx1aT4KKyAgICAgICAgICA8dGV4dEVkaXQvPgorICAgICAgICA8L3VpPgorICAgICAgICA8dmFsdWU+CisgICAgICAgICAgPHRleHQ+cGRmaXVtPC90ZXh0PgorICAgICAgICA8L3ZhbHVlPgorICAgICAgICA8ZXZlbnQgYWN0aXZpdHk9ImNoYW5nZSI+CisgICAgICAgICAgPHNjcmlwdCBjb250ZW50VHlwZT0iYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGNoYW5nZV9jb3VudCArPSAxOworICAgICAgICAgICAgaWYgKGNoYW5nZV9jb3VudCA9PSAyKSB7CisgICAgICAgICAgICAgICAgZjEgPSB4ZmEucmVzb2x2ZU5vZGUoInhmYS5mb3JtLi5jaG9pY2VMaXN0MCIpOworICAgICAgICAgICAgICAgIHhmYS5ob3N0LnNldEZvY3VzKGYxKTsKKyAgICAgICAgICAgICAgICB4ZmEudGVtcGxhdGUucmVtZXJnZSgpOworICAgICAgICAgICAgICAgIHhmYS5ob3N0Lm9wZW5MaXN0KGYxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPC9ldmVudD4KKyAgICAgIDwvZmllbGQ+CisgICAgPC9zdWJmb3JtPgorICAgIDxldmVudCBhY3Rpdml0eT0iZG9jUmVhZHkiPgorICAgICAgPHNjcmlwdCBjb250ZW50VHlwZT0iYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Ij4KKyAgICAgICAgY2hhbmdlX2NvdW50ID0gMDsKKyAgICAgIDwvc2NyaXB0PgorICAgIDwvZXZlbnQ+CisgIDwvc3ViZm9ybT4KKzwvdGVtcGxhdGU+CitlbmRzdHJlYW0KK2VuZG9iagorNiAwIG9iaiA8PAorICAvTGVuZ3RoIDM0NTUKKz4+CitzdHJlYW0KKzxsb2NhbGVTZXQgeG1sbnM9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvMi43LyI+CisgIDxsb2NhbGUgbmFtZT0iZW5fVVMiIGRlc2M9IkVuZ2xpc2ggKFVuaXRlZCBTdGF0ZXMpIj4KKyAgICA8Y2FsZW5kYXJTeW1ib2xzIG5hbWU9ImdyZWdvcmlhbiI+CisgICAgICA8bW9udGhOYW1lcz4KKyAgICAgICAgPG1vbnRoPkphbnVhcnk8L21vbnRoPgorICAgICAgICA8bW9udGg+RmVicnVhcnk8L21vbnRoPgorICAgICAgICA8bW9udGg+TWFyY2g8L21vbnRoPgorICAgICAgICA8bW9udGg+QXByaWw8L21vbnRoPgorICAgICAgICA8bW9udGg+TWF5PC9tb250aD4KKyAgICAgICAgPG1vbnRoPkp1bmU8L21vbnRoPgorICAgICAgICA8bW9udGg+SnVseTwvbW9udGg+CisgICAgICAgIDxtb250aD5BdWd1c3Q8L21vbnRoPgorICAgICAgICA8bW9udGg+U2VwdGVtYmVyPC9tb250aD4KKyAgICAgICAgPG1vbnRoPk9jdG9iZXI8L21vbnRoPgorICAgICAgICA8bW9udGg+Tm92ZW1iZXI8L21vbnRoPgorICAgICAgICA8bW9udGg+RGVjZW1iZXI8L21vbnRoPgorICAgICAgPC9tb250aE5hbWVzPgorICAgICAgPG1vbnRoTmFtZXMgYWJicj0iMSI+CisgICAgICAgIDxtb250aD5KYW48L21vbnRoPgorICAgICAgICA8bW9udGg+RmViPC9tb250aD4KKyAgICAgICAgPG1vbnRoPk1hcjwvbW9udGg+CisgICAgICAgIDxtb250aD5BcHI8L21vbnRoPgorICAgICAgICA8bW9udGg+TWF5PC9tb250aD4KKyAgICAgICAgPG1vbnRoPkp1bjwvbW9udGg+CisgICAgICAgIDxtb250aD5KdWw8L21vbnRoPgorICAgICAgICA8bW9udGg+QXVnPC9tb250aD4KKyAgICAgICAgPG1vbnRoPlNlcDwvbW9udGg+CisgICAgICAgIDxtb250aD5PY3Q8L21vbnRoPgorICAgICAgICA8bW9udGg+Tm92PC9tb250aD4KKyAgICAgICAgPG1vbnRoPkRlYzwvbW9udGg+CisgICAgICA8L21vbnRoTmFtZXM+CisgICAgICA8ZGF5TmFtZXM+CisgICAgICAgIDxkYXk+U3VuZGF5PC9kYXk+CisgICAgICAgIDxkYXk+TW9uZGF5PC9kYXk+CisgICAgICAgIDxkYXk+VHVlc2RheTwvZGF5PgorICAgICAgICA8ZGF5PldlZG5lc2RheTwvZGF5PgorICAgICAgICA8ZGF5PlRodXJzZGF5PC9kYXk+CisgICAgICAgIDxkYXk+RnJpZGF5PC9kYXk+CisgICAgICAgIDxkYXk+U2F0dXJkYXk8L2RheT4KKyAgICAgIDwvZGF5TmFtZXM+CisgICAgICA8ZGF5TmFtZXMgYWJicj0iMSI+CisgICAgICAgIDxkYXk+U3VuPC9kYXk+CisgICAgICAgIDxkYXk+TW9uPC9kYXk+CisgICAgICAgIDxkYXk+VHVlPC9kYXk+CisgICAgICAgIDxkYXk+V2VkPC9kYXk+CisgICAgICAgIDxkYXk+VGh1PC9kYXk+CisgICAgICAgIDxkYXk+RnJpPC9kYXk+CisgICAgICAgIDxkYXk+U2F0PC9kYXk+CisgICAgICA8L2RheU5hbWVzPgorICAgICAgPG1lcmlkaWVtTmFtZXM+CisgICAgICAgIDxtZXJpZGllbT5BTTwvbWVyaWRpZW0+CisgICAgICAgIDxtZXJpZGllbT5QTTwvbWVyaWRpZW0+CisgICAgICA8L21lcmlkaWVtTmFtZXM+CisgICAgICA8ZXJhTmFtZXM+CisgICAgICAgIDxlcmE+QkM8L2VyYT4KKyAgICAgICAgPGVyYT5BRDwvZXJhPgorICAgICAgPC9lcmFOYW1lcz4KKyAgICA8L2NhbGVuZGFyU3ltYm9scz4KKyAgICA8ZGF0ZVBhdHRlcm5zPgorICAgICAgPGRhdGVQYXR0ZXJuIG5hbWU9ImZ1bGwiPkVFRUUsIE1NTU0gRCwgWVlZWTwvZGF0ZVBhdHRlcm4+CisgICAgICA8ZGF0ZVBhdHRlcm4gbmFtZT0ibG9uZyI+TU1NTSBELCBZWVlZPC9kYXRlUGF0dGVybj4KKyAgICAgIDxkYXRlUGF0dGVybiBuYW1lPSJtZWQiPk1NTSBELCBZWVlZPC9kYXRlUGF0dGVybj4KKyAgICAgIDxkYXRlUGF0dGVybiBuYW1lPSJzaG9ydCI+TS9EL1lZPC9kYXRlUGF0dGVybj4KKyAgICA8L2RhdGVQYXR0ZXJucz4KKyAgICA8dGltZVBhdHRlcm5zPgorICAgICAgPHRpbWVQYXR0ZXJuIG5hbWU9ImZ1bGwiPmg6TU06U1MgQSBaPC90aW1lUGF0dGVybj4KKyAgICAgIDx0aW1lUGF0dGVybiBuYW1lPSJsb25nIj5oOk1NOlNTIEEgWjwvdGltZVBhdHRlcm4+CisgICAgICA8dGltZVBhdHRlcm4gbmFtZT0ibWVkIj5oOk1NOlNTIEE8L3RpbWVQYXR0ZXJuPgorICAgICAgPHRpbWVQYXR0ZXJuIG5hbWU9InNob3J0Ij5oOk1NIEE8L3RpbWVQYXR0ZXJuPgorICAgIDwvdGltZVBhdHRlcm5zPgorICAgIDxkYXRlVGltZVN5bWJvbHM+R3lNZGtIbXNTRURGd1dhaEt6WjwvZGF0ZVRpbWVTeW1ib2xzPgorICAgIDxudW1iZXJQYXR0ZXJucz4KKyAgICAgIDxudW1iZXJQYXR0ZXJuIG5hbWU9Im51bWVyaWMiPnoseno5Lnp6ejwvbnVtYmVyUGF0dGVybj4KKyAgICAgIDxudW1iZXJQYXR0ZXJuIG5hbWU9ImN1cnJlbmN5Ij4keix6ejkuOTl8KCR6LHp6OS45OSk8L251bWJlclBhdHRlcm4+CisgICAgICA8bnVtYmVyUGF0dGVybiBuYW1lPSJwZXJjZW50Ij56LHp6OSU8L251bWJlclBhdHRlcm4+CisgICAgPC9udW1iZXJQYXR0ZXJucz4KKyAgICA8bnVtYmVyU3ltYm9scz4KKyAgICAgIDxudW1iZXJTeW1ib2wgbmFtZT0iZGVjaW1hbCI+LjwvbnVtYmVyU3ltYm9sPgorICAgICAgPG51bWJlclN5bWJvbCBuYW1lPSJncm91cGluZyI+LDwvbnVtYmVyU3ltYm9sPgorICAgICAgPG51bWJlclN5bWJvbCBuYW1lPSJwZXJjZW50Ij4lPC9udW1iZXJTeW1ib2w+CisgICAgICA8bnVtYmVyU3ltYm9sIG5hbWU9Im1pbnVzIj4tPC9udW1iZXJTeW1ib2w+CisgICAgICA8bnVtYmVyU3ltYm9sIG5hbWU9Inplcm8iPjA8L251bWJlclN5bWJvbD4KKyAgICA8L251bWJlclN5bWJvbHM+CisgICAgPGN1cnJlbmN5U3ltYm9scz4KKyAgICAgIDxjdXJyZW5jeVN5bWJvbCBuYW1lPSJzeW1ib2wiPiQ8L2N1cnJlbmN5U3ltYm9sPgorICAgICAgPGN1cnJlbmN5U3ltYm9sIG5hbWU9Imlzb25hbWUiPlVTRDwvY3VycmVuY3lTeW1ib2w+CisgICAgICA8Y3VycmVuY3lTeW1ib2wgbmFtZT0iZGVjaW1hbCI+LjwvY3VycmVuY3lTeW1ib2w+CisgICAgPC9jdXJyZW5jeVN5bWJvbHM+CisgICAgPHR5cGVmYWNlcz4KKyAgICAgIDx0eXBlZmFjZSBuYW1lPSJNeXJpYWQgUHJvIi8+CisgICAgICA8dHlwZWZhY2UgbmFtZT0iTWluaW9uIFBybyIvPgorICAgICAgPHR5cGVmYWNlIG5hbWU9IkNvdXJpZXIgU3RkIi8+CisgICAgICA8dHlwZWZhY2UgbmFtZT0iQWRvYmUgUGkgU3RkIi8+CisgICAgICA8dHlwZWZhY2UgbmFtZT0iQWRvYmUgSGVicmV3Ii8+CisgICAgICA8dHlwZWZhY2UgbmFtZT0iQWRvYmUgQXJhYmljIi8+CisgICAgICA8dHlwZWZhY2UgbmFtZT0iQWRvYmUgVGhhaSIvPgorICAgICAgPHR5cGVmYWNlIG5hbWU9IktvenVrYSBHb3RoaWMgUHJvLVZJIE0iLz4KKyAgICAgIDx0eXBlZmFjZSBuYW1lPSJLb3p1a2EgTWluY2hvIFByby1WSSBSIi8+CisgICAgICA8dHlwZWZhY2UgbmFtZT0iQWRvYmUgTWluZyBTdGQgTCIvPgorICAgICAgPHR5cGVmYWNlIG5hbWU9IkFkb2JlIFNvbmcgU3RkIEwiLz4KKyAgICAgIDx0eXBlZmFjZSBuYW1lPSJBZG9iZSBNeXVuZ2pvIFN0ZCBNIi8+CisgICAgPC90eXBlZmFjZXM+CisgIDwvbG9jYWxlPgorPC9sb2NhbGVTZXQ+CitlbmRzdHJlYW0KK2VuZG9iagorNyAwIG9iaiA8PAorICAvTGVuZ3RoIDExCis+Pgorc3RyZWFtCis8L3hkcDp4ZHA+CitlbmRzdHJlYW0KK2VuZG9iagorOCAwIG9iaiA8PAorICAvVHlwZSAvUGFnZXMKKyAgL0NvdW50IDEKKyAgL0tpZHMgWzkgMCBSXQorPj4KK2VuZG9iagorOSAwIG9iaiA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCis+PgorZW5kb2JqCit4cmVmCiswIDEwCiswMDAwMDAwMDAwIDY1NTM1IGYgCiswMDAwMDAwMDE1IDAwMDAwIG4gCiswMDAwMDAwMTk5IDAwMDAwIG4gCiswMDAwMDAwMzU4IDAwMDAwIG4gCiswMDAwMDAwNTM0IDAwMDAwIG4gCiswMDAwMDAxMjI4IDAwMDAwIG4gCiswMDAwMDAyNjQyIDAwMDAwIG4gCiswMDAwMDA2MTUwIDAwMDAwIG4gCiswMDAwMDA2MjEyIDAwMDAwIG4gCiswMDAwMDA2Mjc1IDAwMDAwIG4gCit0cmFpbGVyIDw8CisgIC9Sb290IDEgMCBSCisgIC9TaXplIDEwCis+Pgorc3RhcnR4cmVmCis2MzUyCislJUVPRgpkaWZmIC0tZ2l0IGEveGZhL2Z4ZmEvY3hmYV9mZnRleHRlZGl0LmNwcCBiL3hmYS9meGZhL2N4ZmFfZmZ0ZXh0ZWRpdC5jcHAKaW5kZXggNmY4ZDczMi4uM2M2YjBmYyAxMDA2NDQKLS0tIGEveGZhL2Z4ZmEvY3hmYV9mZnRleHRlZGl0LmNwcAorKysgYi94ZmEvZnhmYS9jeGZhX2ZmdGV4dGVkaXQuY3BwCkBAIC0zOTksMTQgKzM5OSw2IEBACiAgIHJldHVybiBUb0VkaXQoR2V0Tm9ybWFsV2lkZ2V0KCkpLT5DYW5SZWRvKCk7CiB9CiAKLWJvb2wgQ1hGQV9GRlRleHRFZGl0OjpVbmRvKCkgewotICByZXR1cm4gVG9FZGl0KEdldE5vcm1hbFdpZGdldCgpKS0+VW5kbygpOwotfQotCi1ib29sIENYRkFfRkZUZXh0RWRpdDo6UmVkbygpIHsKLSAgcmV0dXJuIFRvRWRpdChHZXROb3JtYWxXaWRnZXQoKSktPlJlZG8oKTsKLX0KLQogYm9vbCBDWEZBX0ZGVGV4dEVkaXQ6OkNhbkNvcHkoKSB7CiAgIHJldHVybiBUb0VkaXQoR2V0Tm9ybWFsV2lkZ2V0KCkpLT5IYXNTZWxlY3Rpb24oKTsKIH0KQEAgLTQyNiwyNyArNDE4LDU5IEBACiAgIHJldHVybiBUb0VkaXQoR2V0Tm9ybWFsV2lkZ2V0KCkpLT5HZXRUZXh0TGVuZ3RoKCkgPiAwOwogfQogCitib29sIENYRkFfRkZUZXh0RWRpdDo6VW5kbygpIHsKKyAgLy8gUHJldmVudHMgZGVzdHJ1Y3Rpb24gb2YgdGhlIENYRkFfQ29udGVudExheW91dEl0ZW0gdGhhdCBvd25zIHx0aGlzfC4KKyAgUmV0YWluUHRyPENYRkFfQ29udGVudExheW91dEl0ZW0+IHJldGFpbl9sYXlvdXQobV9wTGF5b3V0SXRlbS5HZXQoKSk7CisKKyAgcmV0dXJuIFRvRWRpdChHZXROb3JtYWxXaWRnZXQoKSktPlVuZG8oKTsKK30KKworYm9vbCBDWEZBX0ZGVGV4dEVkaXQ6OlJlZG8oKSB7CisgIC8vIFByZXZlbnRzIGRlc3RydWN0aW9uIG9mIHRoZSBDWEZBX0NvbnRlbnRMYXlvdXRJdGVtIHRoYXQgb3ducyB8dGhpc3wuCisgIFJldGFpblB0cjxDWEZBX0NvbnRlbnRMYXlvdXRJdGVtPiByZXRhaW5fbGF5b3V0KG1fcExheW91dEl0ZW0uR2V0KCkpOworCisgIHJldHVybiBUb0VkaXQoR2V0Tm9ybWFsV2lkZ2V0KCkpLT5SZWRvKCk7Cit9CisKIE9wdGlvbmFsPFdpZGVTdHJpbmc+IENYRkFfRkZUZXh0RWRpdDo6Q29weSgpIHsKKyAgLy8gUHJldmVudHMgZGVzdHJ1Y3Rpb24gb2YgdGhlIENYRkFfQ29udGVudExheW91dEl0ZW0gdGhhdCBvd25zIHx0aGlzfC4KKyAgUmV0YWluUHRyPENYRkFfQ29udGVudExheW91dEl0ZW0+IHJldGFpbl9sYXlvdXQobV9wTGF5b3V0SXRlbS5HZXQoKSk7CisKICAgcmV0dXJuIFRvRWRpdChHZXROb3JtYWxXaWRnZXQoKSktPkNvcHkoKTsKIH0KIAogT3B0aW9uYWw8V2lkZVN0cmluZz4gQ1hGQV9GRlRleHRFZGl0OjpDdXQoKSB7CisgIC8vIFByZXZlbnRzIGRlc3RydWN0aW9uIG9mIHRoZSBDWEZBX0NvbnRlbnRMYXlvdXRJdGVtIHRoYXQgb3ducyB8dGhpc3wuCisgIFJldGFpblB0cjxDWEZBX0NvbnRlbnRMYXlvdXRJdGVtPiByZXRhaW5fbGF5b3V0KG1fcExheW91dEl0ZW0uR2V0KCkpOworCiAgIHJldHVybiBUb0VkaXQoR2V0Tm9ybWFsV2lkZ2V0KCkpLT5DdXQoKTsKIH0KIAogYm9vbCBDWEZBX0ZGVGV4dEVkaXQ6OlBhc3RlKGNvbnN0IFdpZGVTdHJpbmcmIHdzUGFzdGUpIHsKKyAgLy8gUHJldmVudHMgZGVzdHJ1Y3Rpb24gb2YgdGhlIENYRkFfQ29udGVudExheW91dEl0ZW0gdGhhdCBvd25zIHx0aGlzfC4KKyAgUmV0YWluUHRyPENYRkFfQ29udGVudExheW91dEl0ZW0+IHJldGFpbl9sYXlvdXQobV9wTGF5b3V0SXRlbS5HZXQoKSk7CisKICAgcmV0dXJuIFRvRWRpdChHZXROb3JtYWxXaWRnZXQoKSktPlBhc3RlKHdzUGFzdGUpOwogfQogCiB2b2lkIENYRkFfRkZUZXh0RWRpdDo6U2VsZWN0QWxsKCkgeworICAvLyBQcmV2ZW50cyBkZXN0cnVjdGlvbiBvZiB0aGUgQ1hGQV9Db250ZW50TGF5b3V0SXRlbSB0aGF0IG93bnMgfHRoaXN8LgorICBSZXRhaW5QdHI8Q1hGQV9Db250ZW50TGF5b3V0SXRlbT4gcmV0YWluX2xheW91dChtX3BMYXlvdXRJdGVtLkdldCgpKTsKKwogICBUb0VkaXQoR2V0Tm9ybWFsV2lkZ2V0KCkpLT5TZWxlY3RBbGwoKTsKIH0KIAogdm9pZCBDWEZBX0ZGVGV4dEVkaXQ6OkRlbGV0ZSgpIHsKKyAgLy8gUHJldmVudHMgZGVzdHJ1Y3Rpb24gb2YgdGhlIENYRkFfQ29udGVudExheW91dEl0ZW0gdGhhdCBvd25zIHx0aGlzfC4KKyAgUmV0YWluUHRyPENYRkFfQ29udGVudExheW91dEl0ZW0+IHJldGFpbl9sYXlvdXQobV9wTGF5b3V0SXRlbS5HZXQoKSk7CisKICAgVG9FZGl0KEdldE5vcm1hbFdpZGdldCgpKS0+Q2xlYXJUZXh0KCk7CiB9CiAKIHZvaWQgQ1hGQV9GRlRleHRFZGl0OjpEZVNlbGVjdCgpIHsKKyAgLy8gUHJldmVudHMgZGVzdHJ1Y3Rpb24gb2YgdGhlIENYRkFfQ29udGVudExheW91dEl0ZW0gdGhhdCBvd25zIHx0aGlzfC4KKyAgUmV0YWluUHRyPENYRkFfQ29udGVudExheW91dEl0ZW0+IHJldGFpbl9sYXlvdXQobV9wTGF5b3V0SXRlbS5HZXQoKSk7CisKICAgVG9FZGl0KEdldE5vcm1hbFdpZGdldCgpKS0+Q2xlYXJTZWxlY3Rpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEveGZhL2Z4ZmEvY3hmYV9mZnRleHRlZGl0LmggYi94ZmEvZnhmYS9jeGZhX2ZmdGV4dGVkaXQuaAppbmRleCAwOWI5NDM0Li40N2M4NTcwIDEwMDY0NAotLS0gYS94ZmEvZnhmYS9jeGZhX2ZmdGV4dGVkaXQuaAorKysgYi94ZmEvZnhmYS9jeGZhX2ZmdGV4dGVkaXQuaApAQCAtNDYsMTIgKzQ2LDEyIEBACiAgIC8vIENYRkFfRkZXaWRnZXQKICAgYm9vbCBDYW5VbmRvKCkgb3ZlcnJpZGU7CiAgIGJvb2wgQ2FuUmVkbygpIG92ZXJyaWRlOwotICBib29sIFVuZG8oKSBvdmVycmlkZTsKLSAgYm9vbCBSZWRvKCkgb3ZlcnJpZGU7CiAgIGJvb2wgQ2FuQ29weSgpIG92ZXJyaWRlOwogICBib29sIENhbkN1dCgpIG92ZXJyaWRlOwogICBib29sIENhblBhc3RlKCkgb3ZlcnJpZGU7CiAgIGJvb2wgQ2FuU2VsZWN0QWxsKCkgb3ZlcnJpZGU7CisgIGJvb2wgVW5kbygpIG92ZXJyaWRlOworICBib29sIFJlZG8oKSBvdmVycmlkZTsKICAgT3B0aW9uYWw8V2lkZVN0cmluZz4gQ29weSgpIG92ZXJyaWRlOwogICBPcHRpb25hbDxXaWRlU3RyaW5nPiBDdXQoKSBvdmVycmlkZTsKICAgYm9vbCBQYXN0ZShjb25zdCBXaWRlU3RyaW5nJiB3c1Bhc3RlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL3hmYS9meGZhL2N4ZmFfZmZ3aWRnZXQuY3BwIGIveGZhL2Z4ZmEvY3hmYV9mZndpZGdldC5jcHAKaW5kZXggYjBjNWVlNi4uNDUwNDVhOCAxMDA2NDQKLS0tIGEveGZhL2Z4ZmEvY3hmYV9mZndpZGdldC5jcHAKKysrIGIveGZhL2Z4ZmEvY3hmYV9mZndpZGdldC5jcHAKQEAgLTQ4OCwxNCArNDg4LDYgQEAKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENYRkFfRkZXaWRnZXQ6OlVuZG8oKSB7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBDWEZBX0ZGV2lkZ2V0OjpSZWRvKCkgewotICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgQ1hGQV9GRldpZGdldDo6Q2FuQ29weSgpIHsKICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTIwLDYgKzUxMiwxNCBAQAogICByZXR1cm4gQ2FuQ29weSgpOwogfQogCitib29sIENYRkFfRkZXaWRnZXQ6OlVuZG8oKSB7CisgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDWEZBX0ZGV2lkZ2V0OjpSZWRvKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKIE9wdGlvbmFsPFdpZGVTdHJpbmc+IENYRkFfRkZXaWRnZXQ6OkNvcHkoKSB7CiAgIHJldHVybiB7fTsKIH0KZGlmZiAtLWdpdCBhL3hmYS9meGZhL2N4ZmFfZmZ3aWRnZXQuaCBiL3hmYS9meGZhL2N4ZmFfZmZ3aWRnZXQuaAppbmRleCA1NTQ2MWQzLi4wMDhhZGZhIDEwMDY0NAotLS0gYS94ZmEvZnhmYS9jeGZhX2Zmd2lkZ2V0LmgKKysrIGIveGZhL2Z4ZmEvY3hmYV9mZndpZGdldC5oCkBAIC0xMjUsMTQgKzEyNSwxNCBAQAogICB2aXJ0dWFsIEZXTF9XaWRnZXRIaXQgSGl0VGVzdChjb25zdCBDRlhfUG9pbnRGJiBwb2ludCk7CiAgIHZpcnR1YWwgYm9vbCBDYW5VbmRvKCk7CiAgIHZpcnR1YWwgYm9vbCBDYW5SZWRvKCk7Ci0gIHZpcnR1YWwgYm9vbCBVbmRvKCk7Ci0gIHZpcnR1YWwgYm9vbCBSZWRvKCk7CiAgIHZpcnR1YWwgYm9vbCBDYW5Db3B5KCk7CiAgIHZpcnR1YWwgYm9vbCBDYW5DdXQoKTsKICAgdmlydHVhbCBib29sIENhblBhc3RlKCk7CiAgIHZpcnR1YWwgYm9vbCBDYW5TZWxlY3RBbGwoKTsKICAgdmlydHVhbCBib29sIENhbkRlbGV0ZSgpOwogICB2aXJ0dWFsIGJvb2wgQ2FuRGVTZWxlY3QoKTsKKyAgdmlydHVhbCBib29sIFVuZG8oKTsKKyAgdmlydHVhbCBib29sIFJlZG8oKTsKICAgdmlydHVhbCBPcHRpb25hbDxXaWRlU3RyaW5nPiBDb3B5KCk7CiAgIHZpcnR1YWwgT3B0aW9uYWw8V2lkZVN0cmluZz4gQ3V0KCk7CiAgIHZpcnR1YWwgYm9vbCBQYXN0ZShjb25zdCBXaWRlU3RyaW5nJiB3c1Bhc3RlKTsK